ZGlmZiAtLWdpdCBhL3Bva3kvLmdpdGlnbm9yZSBiL3Bva3kvLmdpdGlnbm9yZQppbmRleCBhZDFjYjgzLi42ZGRlNTQwIDEwMDY0NAotLS0gYS9wb2t5Ly5naXRpZ25vcmUKKysrIGIvcG9reS8uZ2l0aWdub3JlCkBAIC04LDYgKzgsNyBAQAogc2NyaXB0cy9vZS1naXQtcHJveHktc29ja3MKIHNvdXJjZXMvCiBtZXRhLSovCitidWlsZHRvb2xzLwogIW1ldGEtc2tlbGV0b24KICFtZXRhLXNlbGZ0ZXN0CiBob2ItaW1hZ2UtKi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9NRU1PUklBTSBiL3Bva3kvTUVNT1JJQU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzY2U0NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvTUVNT1JJQU0KQEAgLTAsMCArMSw1IEBACitTb21lIHByb2plY3QgY29udHJpYnV0b3JzIHdobyBhcmUgc2FkbHkgbm8gbG9uZ2VyIHdpdGggdXM6CisKK0dyZWcgR2lsYmVydCAodHJla2UpIC0gQWhlYWQgb2YgaGlzIHRpbWUgd2l0aCBsaWNlbnNpbmcKK1Rob21hcyBXb29kICh0aG9zKSAtIENyZWF0b3Igb2YgdGhlIG9yaWdpbmFsIHNhdG8KK1Njb3R0IFJpZmVuYmFyayAoc2NvdHRyaWYpIC0gT3VyIGxvbmcgc3RhbmRpbmcgdGVjaHdyaXRlciB3aG9zZSB3b3JkcyBsaXZlIG9uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UKaW5kZXggNjZkMDhmOC4uNmM3MzcxMCAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCisrKyBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZQpAQCAtMjYsNyArMjYsNyBAQAogaWYgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICJ1dGYtOCI6CiAgICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyBVVEYtOCAoc3VjaCBhcyBMQU5HPWVuX1VTLlVURi04KS5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIFVURi04IHdoZW4gUHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQogCi1fX3ZlcnNpb25fXyA9ICIxLjQ0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjQ2LjAiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaWYgX192ZXJzaW9uX18gIT0gYmIuX192ZXJzaW9uX186CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzIGIvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycwppbmRleCBhODg0ZGMxLi4xNDlmMWIxIDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzCisrKyBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS1sYXllcnMKQEAgLTUyLDcgKzUyLDkgQEAKIAogICAgICMgTmVlZCB0byByZS1ydW4gbG9nZ2VyX2NyZWF0ZSB3aXRoIGNvbG9yIGFyZ3VtZW50CiAgICAgIyAod2lsbCBiZSB0aGUgc2FtZSBsb2dnZXIgc2luY2UgaXQgaGFzIHRoZSBzYW1lIG5hbWUpCi0gICAgYmIubXNnLmxvZ2dlcl9jcmVhdGUoJ2JpdGJha2UtbGF5ZXJzJywgb3V0cHV0PXN5cy5zdGRvdXQsIGNvbG9yPWdsb2JhbF9hcmdzLmNvbG9yKQorICAgIGJiLm1zZy5sb2dnZXJfY3JlYXRlKCdiaXRiYWtlLWxheWVycycsIG91dHB1dD1zeXMuc3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPWdsb2JhbF9hcmdzLmNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPWxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQogCiAgICAgcGx1Z2lucyA9IFtdCiAgICAgdGluZm9pbCA9IGJiLnRpbmZvaWwuVGluZm9pbCh0cmFja2luZz1UcnVlKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlciBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIKaW5kZXggMWU2NDFlOC4uOTdjYzBmZCAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlcgorKysgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utd29ya2VyCkBAIC02NSw3ICs2NSw2IEBACiAgICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKICAgICBjb25sb2dmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoZm9ybWF0X3N0cikKICAgICBjb25zb2xlbG9nID0gbG9nZ2luZy5GaWxlSGFuZGxlcihsb2dmaWxlbmFtZSkKLSAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihjb25zb2xlbG9nKQogICAgIGNvbnNvbGVsb2cuc2V0Rm9ybWF0dGVyKGNvbmxvZ2Zvcm1hdCkKICAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlbG9nKQogCkBAIC00MTQsNyArNDEzLDcgQEAKIAogICAgIGRlZiBoYW5kbGVfd29ya2VyZGF0YShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi53b3JrZXJkYXRhID0gcGlja2xlLmxvYWRzKGRhdGEpCi0gICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RGVidWdMZXZlbCA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdGRlYnVnIl0KKyAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbCA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdGxldmVsIl0KICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRWZXJib3NlID0gc2VsZi53b3JrZXJkYXRhWyJsb2dkZWZhdWx0dmVyYm9zZSJdCiAgICAgICAgIGJiLm1zZy5sb2dnZXJWZXJib3NlTG9ncyA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdHZlcmJvc2Vsb2dzIl0KICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zID0gc2VsZi53b3JrZXJkYXRhWyJsb2dkZWZhdWx0ZG9tYWluIl0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9iaW4vdG9hc3RlciBiL3Bva3kvYml0YmFrZS9iaW4vdG9hc3RlcgppbmRleCBjMzQ3MmRmLi42YjkwZWUxIDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL3RvYXN0ZXIKKysrIGIvcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCkBAIC04LDEyICs4LDEzIEBACiAjCiAKIEhFTFA9IgotVXNhZ2U6IHNvdXJjZSB0b2FzdGVyIHN0YXJ0fHN0b3AgW3dlYnBvcnQ9PGFkZHJlc3M6cG9ydD5dIFtub3dlYl0gW25vYnVpbGRdIFt0b2FzdGVyZGlyXQorVXNhZ2UgMTogc291cmNlIHRvYXN0ZXIgc3RhcnR8c3RvcCBbd2VicG9ydD08YWRkcmVzczpwb3J0Pl0gW25vd2ViXSBbbm9idWlsZF0gW3RvYXN0ZXJkaXJdCiAgICAgT3B0aW9uYWwgYXJndW1lbnRzOgogICAgICAgICBbbm9idWlsZF0gU2V0dXAgdGhlIGVudmlyb25tZW50IGZvciBjYXB0dXJpbmcgYnVpbGRzIHdpdGggdG9hc3RlciBidXQgZGlzYWJsZSBtYW5hZ2VkIGJ1aWxkcwogICAgICAgICBbbm93ZWJdIFNldHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgY2FwdHVyaW5nIGJ1aWxkcyB3aXRoIHRvYXN0ZXIgYnV0IGRvbid0IHN0YXJ0IHRoZSB3ZWIgc2VydmVyCiAgICAgICAgIFt3ZWJwb3J0XSBTZXQgdGhlIGRldmVsb3BtZW50IHNlcnZlciAoZGVmYXVsdDogbG9jYWxob3N0OjgwMDApCiAgICAgICAgIFt0b2FzdGVyZGlyXSBTZXQgYWJzb2x1dGUgcGF0aCB0byBiZSB1c2VkIGFzIFRPQVNURVJfRElSIChkZWZhdWx0OiBCVUlMRERJUi8uLi8pCitVc2FnZSAyOiBzb3VyY2UgdG9hc3RlciBtYW5hZ2UgW2NyZWF0ZXN1cGVydXNlcnxsc3VwZGF0ZXN8bWlncmF0ZXxtYWtlbWlncmF0aW9uc3xjaGVja3NldHRpbmdzfGNvbGxlY3RzdGF0aWN8Li4uXQogIgogCiBjdXN0b21fZXh0ZW50aW9uKCkKQEAgLTIwOCwxMyArMjA5LDIxIEBACiAgICAgdG9hc3RlcmRpcj0qKQogICAgICAgICAgICAgVE9BU1RFUkRJUj0iJHtwYXJhbSMqPX0iCiAgICAgOzsKKyAgICBtYW5hZ2UgKQorICAgICAgICAgICAgQ01EPSRwYXJhbQorICAgICAgICAgICAgbWFuYWdlX2NtZD0iIgorICAgIDs7CiAgICAgLS1oZWxwKQogICAgICAgICAgICAgZWNobyAiJEhFTFAiCiAgICAgICAgICAgICByZXR1cm4gMAogICAgIDs7CiAgICAgKikKLSAgICAgICAgICAgIGVjaG8gIiRIRUxQIgotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGlmIFsgIm1hbmFnZSIgPT0gIiRDTUQiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgbWFuYWdlX2NtZD0iJG1hbmFnZV9jbWQgJHBhcmFtIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVjaG8gIiRIRUxQIgorICAgICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgZmkKICAgICA7OwogCiAgICAgZXNhYwpAQCAtMzA2LDYgKzMxNSwxMCBAQAogICAgICAgICBzdG9wX3N5c3RlbQogICAgICAgICBlY2hvICJTdWNjZXNzZnVsICR7Q01EfS4iCiAgICAgOzsKKyAgICBtYW5hZ2UgKQorICAgICAgICBjZCAkQkJCQVNFRElSL2xpYi90b2FzdGVyCisgICAgICAgICRNQU5BR0UgJG1hbmFnZV9jbWQKKyAgICA7OwogZXNhYwogY3VzdG9tX2V4dGVudGlvbiB0b2FzdGVyX3Bvc3RwZW5kICRDTUQgJEFERFJfUE9SVAogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvY29udHJpYi9hdXRvYnVpbGRlcmxvZy5qc29uIGIvcG9reS9iaXRiYWtlL2NvbnRyaWIvYXV0b2J1aWxkZXJsb2cuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTNhNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2NvbnRyaWIvYXV0b2J1aWxkZXJsb2cuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICAgInZlcnNpb24iOiAxLAorICAgICJsb2dnZXJzIjogeworICAgICAgICAiQml0QmFrZS5TaWdHZW4uSGFzaEVxdWl2IjogeworICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlIl0KKyAgICAgICAgfSwKKyAgICAgICAgIkJpdEJha2UuUnVuUXVldWUuSGFzaEVxdWl2IjogeworICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlIl0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sCmluZGV4IDQ2ZGFmZWUuLjZjNTIzNGUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbApAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFByaW9yIHRvIHBhcnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcywgQml0YmFrZSBsb29rcworICAgICAgICAgICAgUHJpb3IgdG8gcGFyc2luZyBjb25maWd1cmF0aW9uIGZpbGVzLCBCaXRCYWtlIGxvb2tzCiAgICAgICAgICAgICBhdCBjZXJ0YWluIHZhcmlhYmxlcywgaW5jbHVkaW5nOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0zMzksNyArMzM5LDcgQEAKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9IQVNIQ09ORklHX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX0hBU0hDT05GSUdfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+KQogICAgICAgICAgICAgYW5kIHRoZW4gY2hlY2tpbmcgaWYgdGhlIGNoZWNrc3VtIG1hdGNoZXMuCiAgICAgICAgICAgICBJZiB0aGF0IGNoZWNrc3VtIG1hdGNoZXMgd2hhdCBpcyBpbiB0aGUgY2FjaGUgYW5kIHRoZSByZWNpcGUKLSAgICAgICAgICAgIGFuZCBjbGFzcyBmaWxlcyBoYXZlIG5vdCBjaGFuZ2VkLCBCaXRiYWtlIGlzIGFibGUgdG8gdXNlCisgICAgICAgICAgICBhbmQgY2xhc3MgZmlsZXMgaGF2ZSBub3QgY2hhbmdlZCwgQml0QmFrZSBpcyBhYmxlIHRvIHVzZQogICAgICAgICAgICAgdGhlIGNhY2hlLgogICAgICAgICAgICAgQml0QmFrZSB0aGVuIHJlbG9hZHMgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVjaXBlCiAgICAgICAgICAgICBpbnN0ZWFkIG9mIHJlcGFyc2luZyBpdCBmcm9tIHNjcmF0Y2guCkBAIC00MjksNyArNDI5LDcgQEAKICAgICAgICAgICAgIFRoZSBkZWZhdWx0CiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICBpcyB0aGUgcHJvdmlkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICBCaXRiYWtlIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCB0YXJnZXQgaXQgbmVlZHMgdG8gYnVpbGQgYW5kCisgICAgICAgICAgICBCaXRCYWtlIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCB0YXJnZXQgaXQgbmVlZHMgdG8gYnVpbGQgYW5kCiAgICAgICAgICAgICByZXNvbHZlcyB0aGVtIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgdXNpbmcgdGhpcyBwcm9jZXNzLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTgyMSw3ICs4MjEsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSXQgaXMgd29ydGggbm90aW5nIHRoYXQgQml0QmFrZSdzICItUyIgb3B0aW9uIGxldHMgeW91Ci0gICAgICAgICAgICBkZWJ1ZyBCaXRiYWtlJ3MgcHJvY2Vzc2luZyBvZiBzaWduYXR1cmVzLgorICAgICAgICAgICAgZGVidWcgQml0QmFrZSdzIHByb2Nlc3Npbmcgb2Ygc2lnbmF0dXJlcy4KICAgICAgICAgICAgIFRoZSBvcHRpb25zIHBhc3NlZCB0byAtUyBhbGxvdyBkaWZmZXJlbnQgZGVidWdnaW5nIG1vZGVzCiAgICAgICAgICAgICB0byBiZSB1c2VkLCBlaXRoZXIgdXNpbmcgQml0QmFrZSdzIG93biBkZWJ1ZyBmdW5jdGlvbnMKICAgICAgICAgICAgIG9yIHBvc3NpYmx5IHRob3NlIGRlZmluZWQgaW4gdGhlIG1ldGFkYXRhL3NpZ25hdHVyZSBoYW5kbGVyCkBAIC05MjksNCArOTI5LDEwMSBAQAogICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJsb2dnaW5nIj4KKyAgICAgICAgPHRpdGxlPkxvZ2dpbmc8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNvbnRyb2wgaG93CisgICAgICAgICAgICB2ZXJib3NlIGJ1aWxkcyBhcmUgd2hlbiBleGVjdXRlLCBiaXRiYWtlIGFsc28gc3VwcG9ydHMgdXNlciBkZWZpbmVkCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuaHRtbCc+UHl0aG9uIGxvZ2dpbmc8L3VsaW5rPgorICAgICAgICAgICAgZmFjaWxpdGllcyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0idmFyLWJiLUJCX0xPR0NPTkZJRyI+PGZpbGVuYW1lPkJCX0xPR0NPTkZJRzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuIFRoaXMgdmFyaWFibGUgZGVmaW5lcyBhIGpzb24gb3IgeWFtbAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuY29uZmlnLmh0bWwnPmxvZ2dpbmcgY29uZmlndXJhdGlvbjwvdWxpbms+CisgICAgICAgICAgICB0aGF0IHdpbGwgYmUgaW50ZWxsaWdlbnRseSBtZXJnZWQgaW50byB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgVGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpcyBtZXJnZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBydWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gd2lsbCBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpZiB0b3AgbGV2ZWwga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gaXMgc2V0IHRvIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RmFsc2U8L2ZpbGVuYW1lPi4gSW4gdGhpcyBjYXNlLCBhbGwgb3RoZXIgcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGlnbm9yZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBjb25maWd1cmF0aW9uIG11c3QgaGF2ZSBhIHRvcCBsZXZlbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmVyc2lvbjwvZmlsZW5hbWU+IHdoaWNoIG11c3QgbWF0Y2ggdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbnkga2V5cyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+aGFuZGxlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1hdHRlcnM8L2ZpbGVuYW1lPiwgb3IgPGZpbGVuYW1lPmZpbHRlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgaW50byB0aGUgc2FtZSBzZWN0aW9uIGluIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHdpdGggdGhlIHVzZXIgc3BlY2lmaWVkIGtleXMgdGFraW5nCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgb25lIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QuIEluCisgICAgICAgICAgICAgICAgICAgIHByYWN0aWNlLCB0aGlzIG1lYW5zIHRoYXQgaWYgYm90aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gc3BlY2lmeSBhIGhhbmRsZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15aGFuZGxlcjwvZmlsZW5hbWU+LCB0aGUgdXNlciBkZWZpbmVkIG9uZSB3aWxsCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgdGhlIGRlZmF1bHQuIFRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBpbmFkdmVydGVudGx5CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgaGFuZGxlciwgZm9ybWF0dGVyLCBvciBmaWx0ZXIsIGFsbCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBvbmVzIGFyZSBuYW1lZCB3aXRoIGEgcHJlZml4IG9mCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+Qml0QmFrZS48L2ZpbGVuYW1lPiIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIGEgbG9nZ2VyIGlzIGRlZmluZWQgYnkgdGhlIHVzZXIgd2l0aCB0aGUga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gc2V0IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GYWxzZTwvZmlsZW5hbWU+LCB0aGF0IGxvZ2dlciB3aWxsIGJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkgdXNlciBjb25maWd1cmF0aW9uLiBJbiB0aGlzIGNhc2UsIG5vIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHJ1bGVzIHdpbGwgYXBwbHkgdG8gdGhhdCBsb2dnZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGwgdXNlciBkZWZpbmVkIDxmaWxlbmFtZT5maWx0ZXI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhbmRsZXJzPC9maWxlbmFtZT4gcHJvcGVydGllcyBmb3IgYSBnaXZlbiBsb2dnZXIKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgd2l0aCBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBsb2dnZXIuIEZvciBleGFtcGxlLCBpZiB0aGUgdXNlciBjb25maWd1cmF0aW9uIGFkZHMKKyAgICAgICAgICAgICAgICAgICAgYSBmaWx0ZXIgY2FsbGVkIDxmaWxlbmFtZT5teUZpbHRlcjwvZmlsZW5hbWU+IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Qml0QmFrZS5TaWdHZW48L2ZpbGVuYW1lPiwgYW5kIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYWRkcyBhIGZpbHRlciBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJpdEJha2UuZGVmYXVsdEZpbHRlcjwvZmlsZW5hbWU+LCBib3RoIGZpbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBsb2dnZXIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHVzZXIgbG9nZ2luZyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmaWxlIHdoaWNoIGxvZ3MgYWxsIEhhc2ggRXF1aXZhbGVuY2UgcmVsYXRlZCBtZXNzYWdlcyBvZiBWRVJCT1NFIG9yCisgICAgICAgICAgICBoaWdoZXIgdG8gYSBmaWxlIGNhbGxlZCA8ZmlsZW5hbWU+aGFzaGVxdWl2LmxvZzwvZmlsZW5hbWU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgeworICAgICAgICAidmVyc2lvbiI6IDEsCisgICAgICAgICJoYW5kbGVycyI6IHsKKyAgICAgICAgICAgICJhdXRvYnVpbGRlcmxvZyI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5GaWxlSGFuZGxlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJsb2dmaWxlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiREVCVUciLAorICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ICJoYXNoZXF1aXYubG9nIiwKKyAgICAgICAgICAgICAgICAibW9kZSI6ICJ3IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZm9ybWF0dGVycyI6IHsKKyAgICAgICAgICAgICAgICAibG9nZmlsZUZvcm1hdHRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKG5hbWUpczogJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibG9nZ2VycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLlNpZ0dlbi5IYXNoRXF1aXYiOiB7CisgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiYXV0b2J1aWxkZXJsb2ciXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiVkVSQk9TRSIsCisgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJhdXRvYnVpbGRlcmxvZyJdCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKaW5kZXggNjg0MDQwOC4uZDFiZmMyMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbApAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNpbmNlIG5ldHdvcmsgYWNjZXNzZXMgYXJlIHNsb3csIEJpdGJha2UgbWFpbnRhaW5zIGEKKyAgICAgICAgICAgIFNpbmNlIG5ldHdvcmsgYWNjZXNzZXMgYXJlIHNsb3csIEJpdEJha2UgbWFpbnRhaW5zIGEKICAgICAgICAgICAgIGNhY2hlIG9mIGZpbGVzIGRvd25sb2FkZWQgZnJvbSB0aGUgbmV0d29yay4KICAgICAgICAgICAgIEFueSBzb3VyY2UgZmlsZXMgdGhhdCBhcmUgbm90IGxvY2FsIChpLmUuCiAgICAgICAgICAgICBkb3dubG9hZGVkIGZyb20gdGhlIEludGVybmV0KSBhcmUgcGxhY2VkIGludG8gdGhlIGRvd25sb2FkCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwKaW5kZXggMzkwNjZlNC4uMTFlYjM2YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbApAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgICAgICAgICAgSGF2aW5nIGEgcHJvamVjdCBkaXJlY3RvcnkgaXMgYSBnb29kIHdheSB0byBpc29sYXRlIHlvdXIKICAgICAgICAgICAgICAgICBwcm9qZWN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0YmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBoYXZlIG5vdGhpbmcgYnV0IGEgcHJvamVjdCBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgUnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHNlZSB3aGF0CiAgICAgICAgICAgICAgICAgaXQgZG9lczoKQEAgLTE5Nyw3ICsxOTcsNyBAQAogICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB3aGF0IHRlbGxzIEJpdEJha2Ugd2hlcmUgdG8gbG9vayBmb3IgdGhvc2UgZmlsZXMuCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IGlzIG5vdCBzZXQgYW5kIHlvdSBuZWVkIHRvIHNldCBpdC4KLSAgICAgICAgICAgICAgICBXaXRob3V0IDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgQml0YmFrZSBjYW5ub3QKKyAgICAgICAgICAgICAgICBXaXRob3V0IDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgQml0QmFrZSBjYW5ub3QKICAgICAgICAgICAgICAgICBmaW5kIGFueSBjb25maWd1cmF0aW9uIGZpbGVzICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICBvciByZWNpcGUgZmlsZXMgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikgYXQgYWxsLgogICAgICAgICAgICAgICAgIEJpdEJha2UgYWxzbyBjYW5ub3QgZmluZCB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+CkBAIC0yMjUsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIHNoZWxsIHdvdWxkLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBOb3cgdGhhdCB5b3UgaGF2ZSA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gZGVmaW5lZCwgcnVuCiAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBhZ2FpbjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgICAgICAgICBleGFtcGxlLCBjbGljayBvbiB0aGUgbGlua3MgdG8gdGFrZSB5b3UgdG8gdGhlIGRlZmluaXRpb25zIGluCiAgICAgICAgICAgICAgICAgdGhlIGdsb3NzYXJ5LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0YmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEFmdGVyIG1ha2luZyBzdXJlIHRoYXQgdGhlIDxmaWxlbmFtZT5jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZmlsZSBleGlzdHMsIHlvdSBjYW4gcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgY29tbWFuZCBhZ2FpbjoKQEAgLTM2NCw3ICszNjQsNyBAQAogICAgICAgICAgICAgICAgIG1vcmUgZGVwZW5kaW5nIG9uIHdoaWNoIGJ1aWxkIGVudmlyb25tZW50cyBCaXRCYWtlIGlzCiAgICAgICAgICAgICAgICAgc3VwcG9ydGluZy4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgc3VyZSB0aGF0IHRoZSA8ZmlsZW5hbWU+Y2xhc3Nlcy9iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzLCB5b3UgY2FuIHJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGNvbW1hbmQgYWdhaW46CkBAIC00MzQsNyArNDM0LDcgQEAKICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSB2YXJpYWJsZXMsIGZvbGxvdyB0aGUgbGlua3MKICAgICAgICAgICAgICAgICB0byB0aGUgZ2xvc3NhcnkuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRiYWtlIFdpdGggYSBUYXJnZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIE5vdyB0aGF0IGEgQml0QmFrZSB0YXJnZXQgZXhpc3RzLCBydW4gdGhlIGNvbW1hbmQgYW5kIHByb3ZpZGUKICAgICAgICAgICAgICAgICB0aGF0IHRhcmdldDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC00NjgsNyArNDY4LDcgQEAKICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBwcm92aWRlIHlvdXIgb3duIGluZm9ybWF0aW9uIGZvcgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b3U8L2ZpbGVuYW1lPiBpbiB0aGUgZmlsZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZSBXaXRoIGEgVGFyZ2V0OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgTm93IHRoYXQgeW91IGhhdmUgc3VwcGxpZWQgdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBmaWxlLCBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgcHJvdmlkZQogICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQ6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwKaW5kZXggOGYyYTk2MC4uZjU1MjZjMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbApAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIChlLmcuIEN5Z3dpbiwgdGhlIEJTRHMsIGFuZCBzbyBmb3J0aCkuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQmUgc2VsZiBjb250YWluZWQsIHJhdGhlciB0aGFuIHRpZ2h0bHkKKyAgICAgICAgICAgICAgICAgICAgQmUgc2VsZi1jb250YWluZWQsIHJhdGhlciB0aGFuIHRpZ2h0bHkKICAgICAgICAgICAgICAgICAgICAgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZCBtYWNoaW5lJ3Mgcm9vdAogICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTIyMSw2ICsyMjEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlbTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SG93IHRvIGNvbmZpZ3VyZSBhbmQgY29tcGlsZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgdG8gYXNzZW1ibGUgdGhlIGdlbmVyYXRlZCBhcnRpZmFjdHMgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgb25lIG9yIG1vcmUgaW5zdGFsbGFibGUgcGFja2FnZXM8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZXJlIG9uIHRoZSB0YXJnZXQgbWFjaGluZSB0byBpbnN0YWxsIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBvciBwYWNrYWdlcyBjcmVhdGVkPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0yMjksNyArMjMxLDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiBCaXRCYWtlLCBvciBhbnkgcHJvamVjdCB1dGlsaXppbmcgQml0QmFrZQogICAgICAgICAgICAgICAgIGFzIGl0cyBidWlsZCBzeXN0ZW0sIGZpbGVzIHdpdGggdGhlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiBhcmUgcmVmZXJyZWQgdG8gYXMgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBleHRlbnNpb24gYXJlIHJlZmVycmVkIHRvIGFzIDxmaXJzdHRlcm0+cmVjaXBlczwvZmlyc3R0ZXJtPi4KICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIGFsc28gY29tbW9ubHkgdXNlZCB0byBkZXNjcmliZSByZWNpcGVzLgogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBzaW5jZSB0aGUgc2FtZSB3b3JkIGlzIHVzZWQgdG8gZGVzY3JpYmUgcGFja2FnZWQKQEAgLTI1Miw5ICsyNTQsOSBAQAogICAgICAgICAgICAgICAgIHZhcmlvdXMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBnb3Zlcm4gdGhlIHByb2plY3QncyBidWlsZAogICAgICAgICAgICAgICAgIHByb2Nlc3MuCiAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgZmFsbCBpbnRvIHNldmVyYWwgYXJlYXMgdGhhdCBkZWZpbmUKLSAgICAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBvcHRpb25zLCBjb21waWxlciB0dW5pbmcgb3B0aW9ucywgZ2VuZXJhbCBjb21tb24KLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24sIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIHBvc3NpYmxlIGNvbXBpbGVyIHR1bmluZywgZ2VuZXJhbCBjb21tb24KKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCBhbmQgdXNlciBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAgICAgIFRoZSBtYWluIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyB0aGUgc2FtcGxlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzCiAgICAgICAgICAgICAgICAgbG9jYXRlZCB3aXRoaW4gdGhlIEJpdEJha2Ugc291cmNlIHRyZWUKQEAgLTI5Miw3ICsyOTQsNyBAQAogICAgICAgICAgICAgICAgIExheWVycyBhbGxvdyB5b3UgdG8gaXNvbGF0ZSBkaWZmZXJlbnQgdHlwZXMgb2YKICAgICAgICAgICAgICAgICBjdXN0b21pemF0aW9ucyBmcm9tIGVhY2ggb3RoZXIuCiAgICAgICAgICAgICAgICAgV2hpbGUgeW91IG1pZ2h0IGZpbmQgaXQgdGVtcHRpbmcgdG8ga2VlcCBldmVyeXRoaW5nIGluIG9uZSBsYXllcgotICAgICAgICAgICAgICAgIHdoZW4gd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LCB0aGUgbW9yZSBtb2R1bGFyIHlvdSBvcmdhbml6ZQorICAgICAgICAgICAgICAgIHdoZW4gd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LCB0aGUgbW9yZSBtb2R1bGFyCiAgICAgICAgICAgICAgICAgeW91ciBtZXRhZGF0YSwgdGhlIGVhc2llciBpdCBpcyB0byBjb3BlIHdpdGggZnV0dXJlIGNoYW5nZXMuCiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTMwMCw4ICszMDIsOCBAQAogICAgICAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgaG93IHlvdSBjYW4gdXNlIGxheWVycyB0byBrZWVwIHRoaW5ncyBtb2R1bGFyLAogICAgICAgICAgICAgICAgIGNvbnNpZGVyIGN1c3RvbWl6YXRpb25zIHlvdSBtaWdodCBtYWtlIHRvIHN1cHBvcnQgYSBzcGVjaWZpYyB0YXJnZXQgbWFjaGluZS4KICAgICAgICAgICAgICAgICBUaGVzZSB0eXBlcyBvZiBjdXN0b21pemF0aW9ucyB0eXBpY2FsbHkgcmVzaWRlIGluIGEgc3BlY2lhbCBsYXllciwKLSAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyYWwgbGF5ZXIsIGNhbGxlZCBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQotICAgICAgICAgICAgICAgIExheWVyLgorICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJhbCBsYXllciwgY2FsbGVkIGEgPGZpcnN0dGVybT5Cb2FyZCBTdXBwb3J0IFBhY2thZ2U8L2ZpcnN0dGVybT4gKEJTUCkKKyAgICAgICAgICAgICAgICBsYXllci4KICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIG1hY2hpbmUgY3VzdG9taXphdGlvbnMgc2hvdWxkIGJlIGlzb2xhdGVkIGZyb20KICAgICAgICAgICAgICAgICByZWNpcGVzIGFuZCBtZXRhZGF0YSB0aGF0IHN1cHBvcnQgYSBuZXcgR1VJIGVudmlyb25tZW50LCBmb3IKICAgICAgICAgICAgICAgICBleGFtcGxlLgpAQCAtNDQ4LDcgKzQ1MCw3IEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2luZyB0aGUgQml0QmFrZSB0aGF0IENvbWVzIFdpdGggWW91cgogICAgICAgICAgICAgICAgICAgICBCdWlsZCBDaGVja291dDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBBIGZpbmFsIHBvc3NpYmlsaXR5IGZvciBnZXR0aW5nIGEgY29weSBvZiBCaXRCYWtlIGlzIHRoYXQgaXQKLSAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBjb21lcyB3aXRoIHlvdXIgY2hlY2tvdXQgb2YgYSBsYXJnZXIgQml0YmFrZS1iYXNlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGNvbWVzIHdpdGggeW91ciBjaGVja291dCBvZiBhIGxhcmdlciBCaXRCYWtlLWJhc2VkIGJ1aWxkCiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgc3VjaCBhcyBQb2t5LgogICAgICAgICAgICAgICAgICAgICBSYXRoZXIgdGhhbiBtYW51YWxseSBjaGVja2luZyBvdXQgaW5kaXZpZHVhbCBsYXllcnMgYW5kCiAgICAgICAgICAgICAgICAgICAgIGdsdWluZyB0aGVtIHRvZ2V0aGVyIHlvdXJzZWxmLCB5b3UgY2FuIGNoZWNrCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwKaW5kZXggNDIxMzY0Yy4uMTBiNTg4MyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtNSw3ICs1LDcgQEAKICAgICA8dGl0bGU+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEJpdGJha2UgZmlsZXMgaGF2ZSB0aGVpciBvd24gc3ludGF4LgorICAgICAgICBCaXRCYWtlIGZpbGVzIGhhdmUgdGhlaXIgb3duIHN5bnRheC4KICAgICAgICAgVGhlIHN5bnRheCBoYXMgc2ltaWxhcml0aWVzIHRvIHNldmVyYWwKICAgICAgICAgb3RoZXIgbGFuZ3VhZ2VzIGJ1dCBhbHNvIGhhcyBzb21lIHVuaXF1ZSBmZWF0dXJlcy4KICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgYXZhaWxhYmxlIHN5bnRheCBhbmQgb3BlcmF0b3JzCkBAIC0yOTQsMTcgKzI5NCwyMCBAQAogICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHdoZW4gdGhlIHZhcmlhYmxlIGlzIGFjdHVhbGx5IHVzZWQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBUID0gIjEyMyIKLSAgICAgQSA6PSAiJHtCfSAke0F9IHRlc3QgJHtUfSIKKyAgICAgQSA6PSAidGVzdCAke1R9IgogICAgICBUID0gIjQ1NiIKLSAgICAgQiA9ICIke1R9IGJ2YWwiCisgICAgIEIgOj0gIiR7VH0gJHtDfSIKICAgICAgQyA9ICJjdmFsIgogICAgICBDIDo9ICIke0N9YXBwZW5kIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5BPC9maWxlbmFtZT4gY29udGFpbnMKLSAgICAgICAgICAgICAgICAidGVzdCAxMjMiIGJlY2F1c2UgPGZpbGVuYW1lPiR7Qn08L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtBfTwvZmlsZW5hbWU+IGF0IHRoZSB0aW1lIG9mIHBhcnNpbmcgYXJlIHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICB3aGljaCBsZWF2ZXMgInRlc3QgMTIzIi4KLSAgICAgICAgICAgICAgICBBbmQsIHRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+QzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgInRlc3QgMTIzIiwgZXZlbiB0aG91Z2ggdGhlIGZpbmFsIHZhbHVlIG9mIDxmaWxlbmFtZT5UPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpcyAiNDU2Ii4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiB3aWxsIGVuZCB1cCBjb250YWluaW5nICI0NTYgY3ZhbGFwcGVuZCIuCisgICAgICAgICAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHJlZmVyZW5jZXMgdG8gdW5kZWZpbmVkIHZhcmlhYmxlcyBhcmUgcHJlc2VydmVkIGFzIGlzCisgICAgICAgICAgICAgICAgZHVyaW5nIChpbW1lZGlhdGUpZXhwYW5zaW9uLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIEdOVSBNYWtlLCB3aGVyZSB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZXhwYW5kIHRvIG5vdGhpbmcuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIDxmaWxlbmFtZT5DPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBjb250YWlucyAiY3ZhbGFwcGVuZCIgc2luY2UgPGZpbGVuYW1lPiR7Q308L2ZpbGVuYW1lPiBpbW1lZGlhdGVseQogICAgICAgICAgICAgICAgIGV4cGFuZHMgdG8gImN2YWwiLgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTQxNCw3ICsxNDE3LDcgQEAKICAgICAgICAgPC9zZWN0aW9uPgogCiAgICAgICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLXN0eWxlLXB5dGhvbi1mdW5jdGlvbnMtdmVyc3VzLXB5dGhvbi1mdW5jdGlvbnMnPgotICAgICAgICAgICAgPHRpdGxlPkJpdGJha2UtU3R5bGUgUHl0aG9uIEZ1bmN0aW9ucyBWZXJzdXMgUHl0aG9uIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgICAgICAgICA8dGl0bGU+Qml0QmFrZS1TdHlsZSBQeXRob24gRnVuY3Rpb25zIFZlcnN1cyBQeXRob24gRnVuY3Rpb25zPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGltcG9ydGFudCBkaWZmZXJlbmNlcyBiZXR3ZWVuCkBAIC0xODY0LDcgKzE4NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzaW5nIHlvdXIgPGZpbGVuYW1lPiRIT01FLy5jY2FjaGU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kICJ3aGl0ZWxpc3RzIiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gY2F1c2luZyBCaXRCYWNrIHRvIGFsbG93IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gY2F1c2luZyBCaXRCYWtlIHRvIGFsbG93IHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGludG8gdGhlIGRhdGFzdG9yZToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgZXhwb3J0IEJCX0VOVl9FWFRSQVdISVRFPSIkQkJfRU5WX0VYVFJBV0hJVEUgQ0NBQ0hFX0RJUiIKQEAgLTE4OTUsNyArMTg5OCw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBTb21ldGltZXMsIGl0IGlzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIG9idGFpbiBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgIGZyb20gdGhlIG9yaWdpbmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBCaXRiYWtlIHNhdmVzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZW52aXJvbm1lbnQgaW50bworICAgICAgICAgICAgICAgIEJpdEJha2Ugc2F2ZXMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBlbnZpcm9ubWVudCBpbnRvCiAgICAgICAgICAgICAgICAgYSBzcGVjaWFsIHZhcmlhYmxlIG5hbWVkCiAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX09SSUdFTlYnPjxmaWxlbmFtZT5CQl9PUklHRU5WPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMjYxNiw3ICsyNjE5LDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBhY2Nlc3MgdmFyaWFibGVzIGluIHRoZQogICAgICAgICAgICAgICAgIEJpdEJha2UgZGF0YXN0b3JlIHVzaW5nIFB5dGhvbiBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIEJpdGJha2UgZGF0YXN0b3JlIGhhcyBhbiBBUEkgdGhhdCBhbGxvd3MgeW91IHRoaXMKKyAgICAgICAgICAgICAgICBUaGUgQml0QmFrZSBkYXRhc3RvcmUgaGFzIGFuIEFQSSB0aGF0IGFsbG93cyB5b3UgdGhpcwogICAgICAgICAgICAgICAgIGFjY2Vzcy4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiBhdmFpbGFibGUgb3BlcmF0aW9uczoKICAgICAgICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggYWNhNjc0MS4uYzRiZDFmMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKQEAgLTUzOSw2ICs1MzksMTcgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0xPR0NPTkZJRyc+PGdsb3NzdGVybT5CQl9MT0dDT05GSUc8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIGEgY29uZmlnIGZpbGUgdGhhdCBjb250YWlucyB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uIFNlZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJsb2dnaW5nIj5Mb2dnaW5nPC9saW5rPiBmb3IgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0xPR0ZNVCc+PGdsb3NzdGVybT5CQl9MT0dGTVQ8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE3ODAsNyArMTc5MSw3IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJpdGJha2Ugbm9ybWFsbHkgaXNzdWVzIGEgd2FybmluZyB3aGVuIGJ1aWxkaW5nIHR3bworICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIG5vcm1hbGx5IGlzc3VlcyBhIHdhcm5pbmcgd2hlbiBidWlsZGluZyB0d28KICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IHJlY2lwZXMgd2hlcmUgZWFjaCBwcm92aWRlcyB0aGUgc2FtZSBvdXRwdXQuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2NlbmFyaW8gaXMgdXN1YWxseSBzb21ldGhpbmcgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgICAgICAgICAgICAgICAgd2FudC4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKaW5kZXggZDI2ZTk4MS4uYmMyMGNlMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKQEAgLTEwLDcgKzEwLDYgQEAKIAogCiBpbXBvcnQgY29weQotaW1wb3J0IHR5cGVzCiBJbW11dGFibGVUeXBlcyA9ICgKICAgICBib29sLAogICAgIGNvbXBsZXgsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQppbmRleCBjMTQ0MzExLi5iOTY0NjZlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKQEAgLTksMTEgKzksMTEgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1fX3ZlcnNpb25fXyA9ICIxLjQ0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjQ2LjAiCiAKIGltcG9ydCBzeXMKLWlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCwgMCk6Ci0gICAgcmFpc2UgUnVudGltZUVycm9yKCJTb3JyeSwgcHl0aG9uIDMuNC4wIG9yIGxhdGVyIGlzIHJlcXVpcmVkIGZvciB0aGlzIHZlcnNpb24gb2YgYml0YmFrZSIpCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDUsIDApOgorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29ycnksIHB5dGhvbiAzLjUuMCBvciBsYXRlciBpcyByZXF1aXJlZCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGJpdGJha2UiKQogCiAKIGNsYXNzIEJCSGFuZGxlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgpAQCAtNDMsNyArNDMsMTMgQEAKICAgICAgICAgTG9nZ2VyLl9faW5pdF9fKHNlbGYsIG5hbWUpCiAKICAgICBkZWYgYmJkZWJ1ZyhzZWxmLCBsZXZlbCwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5sb2cobG9nZ2luZy5ERUJVRyAtIGxldmVsICsgMSwgbXNnLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGxvZ2xldmVsID0gbG9nZ2luZy5ERUJVRyAtIGxldmVsICsgMQorICAgICAgICBpZiBub3QgYmIuZXZlbnQud29ya2VyX3BpZDoKKyAgICAgICAgICAgIGlmIHNlbGYubmFtZSBpbiBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMgYW5kIGxvZ2xldmVsID4gKGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWluc1tzZWxmLm5hbWVdKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGxvZ2xldmVsID4gYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmV0dXJuIHNlbGYubG9nKGxvZ2xldmVsLCBtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBwbGFpbihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLmxvZyhsb2dnaW5nLklORk8gKyAxLCBtc2csICphcmdzLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5CmluZGV4IDMwYTJiYTIuLjIzYjZlZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHNobGV4CiBpbXBvcnQgZ2xvYgogaW1wb3J0IHRpbWUKIGltcG9ydCBzdGF0CkBAIC01NywxNCArNTYsMTcgQEAKIGNsYXNzIFRhc2tCYXNlKGV2ZW50LkV2ZW50KToKICAgICAiIiJCYXNlIGNsYXNzIGZvciB0YXNrIGV2ZW50cyIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHQsIGxvZ2ZpbGUsIGQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBmbiwgbG9nZmlsZSwgZCk6CiAgICAgICAgIHNlbGYuX3Rhc2sgPSB0CisgICAgICAgIHNlbGYuX2ZuID0gZm4KICAgICAgICAgc2VsZi5fcGFja2FnZSA9IGQuZ2V0VmFyKCJQRiIpCiAgICAgICAgIHNlbGYuX21jID0gZC5nZXRWYXIoIkJCX0NVUlJFTlRfTUMiKQogICAgICAgICBzZWxmLnRhc2tmaWxlID0gZC5nZXRWYXIoIkZJTEUiKQogICAgICAgICBzZWxmLnRhc2tuYW1lID0gc2VsZi5fdGFzawogICAgICAgICBzZWxmLmxvZ2ZpbGUgPSBsb2dmaWxlCiAgICAgICAgIHNlbGYudGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYucG4gPSBkLmdldFZhcigiUE4iKQorICAgICAgICBzZWxmLnB2ID0gZC5nZXRWYXIoIlBWIikKICAgICAgICAgZXZlbnQuRXZlbnQuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5fbWVzc2FnZSA9ICJyZWNpcGUgJXM6IHRhc2sgJXM6ICVzIiAlIChkLmdldFZhcigiUEYiKSwgdCwgc2VsZi5nZXREaXNwbGF5TmFtZSgpKQogCkBAIC04MSw4ICs4Myw4IEBACiAKIGNsYXNzIFRhc2tTdGFydGVkKFRhc2tCYXNlKToKICAgICAiIiJUYXNrIGV4ZWN1dGlvbiBzdGFydGVkIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHQsIGxvZ2ZpbGUsIHRhc2tmbGFncywgZCk6Ci0gICAgICAgIHN1cGVyKFRhc2tTdGFydGVkLCBzZWxmKS5fX2luaXRfXyh0LCBsb2dmaWxlLCBkKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBmbiwgbG9nZmlsZSwgdGFza2ZsYWdzLCBkKToKKyAgICAgICAgc3VwZXIoVGFza1N0YXJ0ZWQsIHNlbGYpLl9faW5pdF9fKHQsIGZuLCBsb2dmaWxlLCBkKQogICAgICAgICBzZWxmLnRhc2tmbGFncyA9IHRhc2tmbGFncwogCiBjbGFzcyBUYXNrU3VjY2VlZGVkKFRhc2tCYXNlKToKQEAgLTkxLDkgKzkzLDkgQEAKIGNsYXNzIFRhc2tGYWlsZWQoVGFza0Jhc2UpOgogICAgICIiIlRhc2sgZXhlY3V0aW9uIGZhaWxlZCIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2ssIGxvZ2ZpbGUsIG1ldGFkYXRhLCBlcnJwcmludGVkID0gRmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrLCBmbiwgbG9nZmlsZSwgbWV0YWRhdGEsIGVycnByaW50ZWQgPSBGYWxzZSk6CiAgICAgICAgIHNlbGYuZXJycHJpbnRlZCA9IGVycnByaW50ZWQKLSAgICAgICAgc3VwZXIoVGFza0ZhaWxlZCwgc2VsZikuX19pbml0X18odGFzaywgbG9nZmlsZSwgbWV0YWRhdGEpCisgICAgICAgIHN1cGVyKFRhc2tGYWlsZWQsIHNlbGYpLl9faW5pdF9fKHRhc2ssIGZuLCBsb2dmaWxlLCBtZXRhZGF0YSkKIAogY2xhc3MgVGFza0ZhaWxlZFNpbGVudChUYXNrQmFzZSk6CiAgICAgIiIiVGFzayBleGVjdXRpb24gZmFpbGVkIChzaWxlbnRseSkiIiIKQEAgLTEwMyw4ICsxMDUsOCBAQAogCiBjbGFzcyBUYXNrSW52YWxpZChUYXNrQmFzZSk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFzaywgbWV0YWRhdGEpOgotICAgICAgICBzdXBlcihUYXNrSW52YWxpZCwgc2VsZikuX19pbml0X18odGFzaywgTm9uZSwgbWV0YWRhdGEpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2ssIGZuLCBtZXRhZGF0YSk6CisgICAgICAgIHN1cGVyKFRhc2tJbnZhbGlkLCBzZWxmKS5fX2luaXRfXyh0YXNrLCBmbiwgTm9uZSwgbWV0YWRhdGEpCiAgICAgICAgIHNlbGYuX21lc3NhZ2UgPSAiTm8gc3VjaCB0YXNrICclcyciICUgdGFzawogCiBjbGFzcyBUYXNrUHJvZ3Jlc3MoZXZlbnQuRXZlbnQpOgpAQCAtNTcyLDcgKzU3NCw3IEBACiAKICAgICB0cnk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza1N0YXJ0ZWQodGFzaywgbG9nZm4sIGZsYWdzLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCisgICAgICAgICAgICBldmVudC5maXJlKFRhc2tTdGFydGVkKHRhc2ssIGZuLCBsb2dmbiwgZmxhZ3MsIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKICAgICAgICAgZXhjZXB0IChiYi5CQkhhbmRsZWRFeGNlcHRpb24sIFN5c3RlbUV4aXQpOgogICAgICAgICAgICAgcmV0dXJuIDEKIApAQCAtNTgzLDE1ICs1ODUsMTUgQEAKICAgICAgICAgICAgIGZvciBmdW5jIGluIChwb3N0ZnVuY3Mgb3IgJycpLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgZXhlY19mdW5jKGZ1bmMsIGxvY2FsZGF0YSkKICAgICAgICAgZXhjZXB0IGJiLkJCSGFuZGxlZEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhLCBUcnVlKSwgbG9jYWxkYXRhKQorICAgICAgICAgICAgZXZlbnQuZmlyZShUYXNrRmFpbGVkKHRhc2ssIGZuLCBsb2dmbiwgbG9jYWxkYXRhLCBUcnVlKSwgbG9jYWxkYXRhKQogICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICBpZiBxdWlldGVycjoKLSAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWRTaWxlbnQodGFzaywgbG9nZm4sIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKKyAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWRTaWxlbnQodGFzaywgZm4sIGxvZ2ZuLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVycnByaW50ZWQgPSBlcnJjaGsudHJpZ2dlcmVkCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihleGMpKQotICAgICAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhLCBlcnJwcmludGVkKSwgbG9jYWxkYXRhKQorICAgICAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBmbiwgbG9nZm4sIGxvY2FsZGF0YSwgZXJycHJpbnRlZCksIGxvY2FsZGF0YSkKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgZmluYWxseToKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCkBAIC02MTQsNyArNjE2LDcgQEAKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiWmVybyBzaXplIGxvZ2ZuICVzLCByZW1vdmluZyIsIGxvZ2ZuKQogICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2ZuKQogICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2xpbmspCi0gICAgZXZlbnQuZmlyZShUYXNrU3VjY2VlZGVkKHRhc2ssIGxvZ2ZuLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCisgICAgZXZlbnQuZmlyZShUYXNrU3VjY2VlZGVkKHRhc2ssIGZuLCBsb2dmbiwgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQogCiAgICAgaWYgbm90IGxvY2FsZGF0YS5nZXRWYXJGbGFnKHRhc2ssICdub3N0YW1wJywgRmFsc2UpIGFuZCBub3QgbG9jYWxkYXRhLmdldFZhckZsYWcodGFzaywgJ3NlbGZzdGFtcCcsIEZhbHNlKToKICAgICAgICAgbWFrZV9zdGFtcCh0YXNrLCBsb2NhbGRhdGEpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQppbmRleCBiNmY3ZGE1Li5kMWJlODM2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKQEAgLTE3LDExICsxNywxMSBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcGlja2xlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogaW1wb3J0IGJiLnV0aWxzCitpbXBvcnQgcmUKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuQ2FjaGUiKQogCkBAIC0yMDgsMTAgKzIwOCwxMCBAQAogCiAgICAgICAgICMgQ29sbGVjdCBmaWxlcyB3ZSBtYXkgbmVlZCBmb3IgcG9zc2libGUgd29ybGQtZGVwCiAgICAgICAgICMgY2FsY3VsYXRpb25zCi0gICAgICAgIGlmIHNlbGYubm90X3dvcmxkOgotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJFWENMVURFIEZST00gV09STEQ6ICVzIiwgZm4pCi0gICAgICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBzZWxmLm5vdF93b3JsZDoKICAgICAgICAgICAgIGNhY2hlZGF0YS5wb3NzaWJsZV93b3JsZC5hcHBlbmQoZm4pCisgICAgICAgICNlbHNlOgorICAgICAgICAjICAgIGxvZ2dlci5kZWJ1ZygyLCAiRVhDTFVERSBGUk9NIFdPUkxEOiAlcyIsIGZuKQogCiAgICAgICAgICMgY3JlYXRlIGEgY29sbGVjdGlvbiBvZiBhbGwgdGFyZ2V0cyBmb3Igc2FuaXR5IGNoZWNraW5nCiAgICAgICAgICMgdGFza3MsIHN1Y2ggYXMgdXBzdHJlYW0gdmVyc2lvbnMsIGxpY2Vuc2UsIGFuZCB0b29scyBmb3IKQEAgLTM3MCw2ICszNzAsNyBAQAogICAgICAgICBzZWxmLmRhdGFfZm4gPSBOb25lCiAgICAgICAgIHNlbGYuY2FjaGVjbGVhbiA9IFRydWUKICAgICAgICAgc2VsZi5kYXRhX2hhc2ggPSBkYXRhX2hhc2gKKyAgICAgICAgc2VsZi5maWxlbGlzdF9yZWdleCA9IHJlLmNvbXBpbGUocicoPzooPzw9OlRydWUpfCg/PD06RmFsc2UpKVxzKycpCiAKICAgICAgICAgaWYgc2VsZi5jYWNoZWRpciBpbiBbTm9uZSwgJyddOgogICAgICAgICAgICAgc2VsZi5oYXNfY2FjaGUgPSBGYWxzZQpAQCAtNjA4LDIwICs2MDksMTIgQEAKICAgICAgICAgaWYgaGFzYXR0cihpbmZvX2FycmF5WzBdLCAnZmlsZV9jaGVja3N1bXMnKToKICAgICAgICAgICAgIGZvciBfLCBmbCBpbiBpbmZvX2FycmF5WzBdLmZpbGVfY2hlY2tzdW1zLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgZmwgPSBmbC5zdHJpcCgpCi0gICAgICAgICAgICAgICAgd2hpbGUgZmw6Ci0gICAgICAgICAgICAgICAgICAgICMgQSAuc3BsaXQoKSB3b3VsZCBiZSBzaW1wbGVyIGJ1dCBtZWFucyBzcGFjZXMgb3IgY29sb25zIGluIGZpbGVuYW1lcyB3b3VsZCBicmVhawotICAgICAgICAgICAgICAgICAgICBhID0gZmwuZmluZCgiOlRydWUiKQotICAgICAgICAgICAgICAgICAgICBiID0gZmwuZmluZCgiOkZhbHNlIikKLSAgICAgICAgICAgICAgICAgICAgaWYgKChhIDwgMCkgYW5kIGIpIG9yICgoYiA+IDApIGFuZCAoYiA8IGEpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmbFs6Yis2XQotICAgICAgICAgICAgICAgICAgICAgICAgZmwgPSBmbFtiKzc6XQotICAgICAgICAgICAgICAgICAgICBlbGlmICgoYiA8IDApIGFuZCBhKSBvciAoKGEgPiAwKSBhbmQgKGEgPCBiKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxbOmErNV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsID0gZmxbYSs2Ol0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGZsID0gZmwuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICBpZiAiKiIgaW4gZjoKKyAgICAgICAgICAgICAgICBpZiBub3QgZmw6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBIYXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQgc3BhY2VzIGFuZCBjb2xvbnMgaW4gZmlsZW5hbWVzCisgICAgICAgICAgICAgICAgZmxpc3QgPSBzZWxmLmZpbGVsaXN0X3JlZ2V4LnNwbGl0KGZsKQorICAgICAgICAgICAgICAgIGZvciBmIGluIGZsaXN0OgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZiBvciAiKiIgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIGYsIGV4aXN0ID0gZi5zcGxpdCgiOiIpCiAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdCA9PSAiVHJ1ZSIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhmKSkgb3IgKGV4aXN0ID09ICJGYWxzZSIgYW5kIG9zLnBhdGguZXhpc3RzKGYpKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY2hlY2tzdW0ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NoZWNrc3VtLnB5CmluZGV4IDViYzhhOGYuLjFkNTBhMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY2hlY2tzdW0ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jaGVja3N1bS5weQpAQCAtOSw3ICs5LDYgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgc3RhdAotaW1wb3J0IHBpY2tsZQogaW1wb3J0IGJiLnV0aWxzCiBpbXBvcnQgbG9nZ2luZwogZnJvbSBiYi5jYWNoZSBpbXBvcnQgTXVsdGlQcm9jZXNzQ2FjaGUKQEAgLTc0LDcgKzczLDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVzdFswXVtoXSA9IHNvdXJjZVswXVtoXQogCi0gICAgZGVmIGdldF9jaGVja3N1bXMoc2VsZiwgZmlsZWxpc3QsIHBuKToKKyAgICBkZWYgZ2V0X2NoZWNrc3VtcyhzZWxmLCBmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpOgogICAgICAgICAiIiJHZXQgY2hlY2tzdW1zIGZvciBhIGxpc3Qgb2YgZmlsZXMiIiIKIAogICAgICAgICBkZWYgY2hlY2tzdW1fZmlsZShmKToKQEAgLTkwLDcgKzg5LDggQEAKICAgICAgICAgICAgIGlmIHB0aCA9PSAiLyI6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlJlZnVzaW5nIHRvIGNoZWNrc3VtIC8iKQogICAgICAgICAgICAgZGlyY2hlY2tzdW1zID0gW10KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHB0aCk6CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwdGgsIHRvcGRvd249VHJ1ZSk6CisgICAgICAgICAgICAgICAgW2RpcnMucmVtb3ZlKGQpIGZvciBkIGluIGxpc3QoZGlycykgaWYgZCBpbiBsb2NhbGRpcnNleGNsdWRlXQogICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICBmdWxscHRoID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gY2hlY2tzdW1fZmlsZShmdWxscHRoKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5CmluZGV4IGZkMmM0NzMuLjI1YTdhYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29kZXBhcnNlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvZGVwYXJzZXIucHkKQEAgLTI1LDEzICsyNSwxMSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvZGVnZW4KIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcGlja2xlCiBpbXBvcnQgYmIucHlzaCBhcyBweXNoCi1pbXBvcnQgb3MucGF0aAogaW1wb3J0IGJiLnV0aWxzLCBiYi5kYXRhCiBpbXBvcnQgaGFzaGxpYgogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCi1mcm9tIGJiLnB5c2ggaW1wb3J0IHB5c2h5YWNjLCBweXNobGV4LCBzaGVycm9ycworZnJvbSBiYi5weXNoIGltcG9ydCBweXNoeWFjYywgcHlzaGxleAogZnJvbSBiYi5jYWNoZSBpbXBvcnQgTXVsdGlQcm9jZXNzQ2FjaGUKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuQ29kZVBhcnNlcicpCkBAIC01OCwzMCArNTYsMTAgQEAKIAogICAgIHJldHVybiBjb2Rlc3RyCiAKLQotIyBCYXNpY2FsbHkgcGlja2xlLCBpbiBweXRob24gMi43LjMgYXQgbGVhc3QsIGRvZXMgYmFkbHkgd2l0aCBkYXRhIGR1cGxpY2F0aW9uIAotIyB1cG9uIHBpY2tsaW5nIGFuZCB1bnBpY2tsaW5nLiBDb21iaW5lIHRoaXMgd2l0aCBkdXBsaWNhdGUgb2JqZWN0cyBhbmQgdGhpbmdzCi0jIGFyZSBhIG1lc3MuCi0jCi0jIFdoZW4gdGhlIHNldHMgYXJlIG9yaWdpbmFsbHkgY3JlYXRlZCwgcHl0aG9uIGNhbGxzIGludGVybigpIG9uIHRoZSBzZXQga2V5cwotIyB3aGljaCBzaWduaWZpY2FudGx5IGltcHJvdmVzIG1lbW9yeSB1c2FnZS4gU2FkbHkgdGhlIHBpY2tsZS91bnBpY2tsZSBwcm9jZXNzCi0jIGRvZXNuJ3QgY2FsbCBpbnRlcm4oKSBvbiB0aGUga2V5cyBhbmQgcmVzdWx0cyBpbiB0aGUgc2FtZSBzdHJpbmdzIGJlaW5nIGR1cGxpY2F0ZWQKLSMgaW4gbWVtb3J5LiBUaGlzIGFsc28gbWVhbnMgcGlja2xlIHdpbGwgc2F2ZSB0aGUgc2FtZSBzdHJpbmcgbXVsdGlwbGUgdGltZXMgaW4KLSMgdGhlIGNhY2hlIGZpbGUuCi0jCi0jIEJ5IGhhdmluZyBzaGVsbCBhbmQgcHl0aG9uIGNhY2hlbGluZSBvYmplY3RzIHdpdGggc2V0c3RhdGUvZ2V0c3RhdGUsIHdlIGZvcmNlCi0jIHRoZSBvYmplY3QgY3JlYXRpb24gdGhyb3VnaCBvdXIgb3duIHJvdXRpbmUgd2hlcmUgd2UgY2FuIGNhbGwgaW50ZXJuICh2aWEgaW50ZXJuU2V0KS4KLSMKLSMgV2UgYWxzbyB1c2UgaGFzaGFibGUgZnJvemVuc2V0cyBhbmQgZW5zdXJlIHdlIHVzZSByZWZlcmVuY2VzIHRvIHRoZXNlIHNvIHRoYXQKLSMgZHVwbGljYXRlcyBjYW4gYmUgcmVtb3ZlZCwgYm90aCBpbiBtZW1vcnkgYW5kIGluIHRoZSByZXN1bHRpbmcgcGlja2xlZCBkYXRhLgotIwotIyBCeSBwbGF5aW5nIHRoZXNlIGdhbWVzLCB0aGUgc2l6ZSBvZiB0aGUgY2FjaGUgZmlsZSBzaHJpbmtzIGRyYW1hdGljYWxseQotIyBtZWFuaW5nIGZhc3RlciBsb2FkIHRpbWVzIGFuZCB0aGUgcmVsb2FkZWQgY2FjaGUgZmlsZXMgYWxzbyBjb25zdW1lIG11Y2ggbGVzcwotIyBtZW1vcnkuIFNtYWxsZXIgY2FjaGUgZmlsZXMsIGZhc3RlciBsb2FkIHRpbWVzIGFuZCBsb3dlciBtZW1vcnkgdXNhZ2UgaXMgZ29vZC4KLSMKICMgQSBjdXN0b20gZ2V0c3RhdGUvc2V0c3RhdGUgdXNpbmcgdHVwbGVzIGlzIGFjdHVhbGx5IHdvcnRoIDE1JSBjYWNoZXNpemUgYnkKICMgYXZvaWRpbmcgZHVwbGljYXRpb24gb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcyEKIAorCiBjbGFzcyBTZXRDYWNoZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5zZXRjYWNoZSA9IHt9CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKaW5kZXggMzc4ZjM4OS4uNmFiZjM4NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb21tYW5kLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQpAQCAtNjUsNyArNjUsNyBAQAogICAgICAgICAgICAgIyBDYW4gcnVuIHN5bmNocm9ub3VzIGNvbW1hbmRzIHN0cmFpZ2h0IGF3YXkKICAgICAgICAgICAgIGNvbW1hbmRfbWV0aG9kID0gZ2V0YXR0cihzZWxmLmNtZHNfc3luYywgY29tbWFuZCkKICAgICAgICAgICAgIGlmIHJvX29ubHk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoY29tbWFuZF9tZXRob2QsICdyZWFkb25seScpIG9yIEZhbHNlID09IGdldGF0dHIoY29tbWFuZF9tZXRob2QsICdyZWFkb25seScpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNvbW1hbmRfbWV0aG9kLCAncmVhZG9ubHknKSBvciBub3QgZ2V0YXR0cihjb21tYW5kX21ldGhvZCwgJ3JlYWRvbmx5Jyk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCAiTm90IGFibGUgdG8gZXhlY3V0ZSBub3QgcmVhZG9ubHkgY29tbWFuZHMgaW4gcmVhZG9ubHkgbW9kZSIKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmNvb2tlci5wcm9jZXNzX2lub3RpZnlfdXBkYXRlcygpCkBAIC00MTQsNyArNDE0LDExIEBACiAgICAgZ2V0QWxsQXBwZW5kcy5yZWFkb25seSA9IFRydWUKIAogICAgIGRlZiBmaW5kUHJvdmlkZXJzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5maW5kUHJvdmlkZXJzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWMgPSBwYXJhbXNbMF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBtYyA9ICcnCisgICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5maW5kUHJvdmlkZXJzKG1jKQogICAgIGZpbmRQcm92aWRlcnMucmVhZG9ubHkgPSBUcnVlCiAKICAgICBkZWYgZmluZEJlc3RQcm92aWRlcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgpAQCAtNDQ2LDU0ICs0NTAsMzggQEAKICAgICAgICAgcmV0dXJuIGFsbF9wLCBiZXN0CiAgICAgZ2V0UnVudGltZVByb3ZpZGVycy5yZWFkb25seSA9IFRydWUKIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JGaW5kVmFyKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckNtZChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHZhbHVlLCBvdmVycmlkZWRhdGEgPSBkYXRhc3RvcmUuX2ZpbmRWYXIobmFtZSkKKyAgICAgICAgbWV0aG9kID0gcGFyYW1zWzFdCisgICAgICAgIGFyZ3MgPSBwYXJhbXNbMl0KKyAgICAgICAga3dhcmdzID0gcGFyYW1zWzNdCiAKLSAgICAgICAgaWYgdmFsdWU6Ci0gICAgICAgICAgICBjb250ZW50ID0gdmFsdWUuZ2V0KCdfY29udGVudCcsIE5vbmUpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnRlbnQsIGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0KToKLSAgICAgICAgICAgICAgICAjIFZhbHVlIGlzIGEgZGF0YXN0b3JlIChlLmcuIEJCX09SSUdFTlYpIC0gbmVlZCB0byBoYW5kbGUgdGhpcyBjYXJlZnVsbHkKLSAgICAgICAgICAgICAgICBpZHggPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMuY2hlY2tfc3RvcmUoY29udGVudCwgVHJ1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4geydfY29udGVudCc6IERhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUoaWR4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX29yaWd0eXBlJzogJ0RhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJzogb3ZlcnJpZGVkYXRhfQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGNvbnRlbnQsIHNldCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsnX2NvbnRlbnQnOiBsaXN0KGNvbnRlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ19jb25uZWN0b3Jfb3JpZ3R5cGUnOiAnc2V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX292ZXJyaWRlcyc6IG92ZXJyaWRlZGF0YX0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10gPSBvdmVycmlkZWRhdGEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlID0ge30KLSAgICAgICAgICAgIHZhbHVlWydfY29ubmVjdG9yX292ZXJyaWRlcyddID0gb3ZlcnJpZGVkYXRhCi0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGRhdGFTdG9yZUNvbm5lY3RvckZpbmRWYXIucmVhZG9ubHkgPSBUcnVlCisgICAgICAgIGQgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbZHNpbmRleF0KKyAgICAgICAgcmV0ID0gZ2V0YXR0cihkLCBtZXRob2QpKCphcmdzLCAqKmt3YXJncykKIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JHZXRLZXlzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocmV0LCBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCk6CisgICAgICAgICAgICBpZHggPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMuc3RvcmUocmV0KQorICAgICAgICAgICAgcmV0dXJuIERhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUoaWR4KQorCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JWYXJIaXN0Q21kKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHJldHVybiBsaXN0KGRhdGFzdG9yZS5rZXlzKCkpCi0gICAgZGF0YVN0b3JlQ29ubmVjdG9yR2V0S2V5cy5yZWFkb25seSA9IFRydWUKKyAgICAgICAgbWV0aG9kID0gcGFyYW1zWzFdCisgICAgICAgIGFyZ3MgPSBwYXJhbXNbMl0KKyAgICAgICAga3dhcmdzID0gcGFyYW1zWzNdCiAKLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yR2V0VmFySGlzdG9yeShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICBkID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdLnZhcmhpc3RvcnkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoZCwgbWV0aG9kKSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdENtZChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHJldHVybiBkYXRhc3RvcmUudmFyaGlzdG9yeS52YXJpYWJsZShuYW1lKQotICAgIGRhdGFTdG9yZUNvbm5lY3RvckdldFZhckhpc3RvcnkucmVhZG9ubHkgPSBUcnVlCisgICAgICAgIG1ldGhvZCA9IHBhcmFtc1sxXQorICAgICAgICBhcmdzID0gcGFyYW1zWzJdCisgICAgICAgIGt3YXJncyA9IHBhcmFtc1szXQogCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckV4cGFuZFB5dGhvblJlZihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBjb25maWdfZGF0YV9kaWN0ID0gcGFyYW1zWzBdCi0gICAgICAgIHZhcm5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZXhwciA9IHBhcmFtc1syXQotCi0gICAgICAgIGNvbmZpZ19kYXRhID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzLnJlY2VpdmVfZGF0YXN0b3JlKGNvbmZpZ19kYXRhX2RpY3QpCi0KLSAgICAgICAgdmFycGFyc2UgPSBiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlUGFyc2UodmFybmFtZSwgY29uZmlnX2RhdGEpCi0gICAgICAgIHJldHVybiB2YXJwYXJzZS5weXRob25fc3ViKGV4cHIpCisgICAgICAgIGQgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbZHNpbmRleF0uaW5jaGlzdG9yeQorICAgICAgICByZXR1cm4gZ2V0YXR0cihkLCBtZXRob2QpKCphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JSZWxlYXNlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KQEAgLTUwMSwzMSArNDg5LDYgQEAKICAgICAgICAgICAgIHJhaXNlIENvbW1hbmRFcnJvcignZGF0YVN0b3JlQ29ubmVjdG9yUmVsZWFzZTogaW52YWxpZCBpbmRleCAlZCcgJSBkc2luZGV4KQogICAgICAgICBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMucmVsZWFzZShkc2luZGV4KQogCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvclNldFZhckZsYWcoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKLSAgICAgICAgZHNpbmRleCA9IHBhcmFtc1swXQotICAgICAgICBuYW1lID0gcGFyYW1zWzFdCi0gICAgICAgIGZsYWcgPSBwYXJhbXNbMl0KLSAgICAgICAgdmFsdWUgPSBwYXJhbXNbM10KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIGRhdGFzdG9yZS5zZXRWYXJGbGFnKG5hbWUsIGZsYWcsIHZhbHVlKQotCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckRlbFZhcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIGlmIGxlbihwYXJhbXMpID4gMjoKLSAgICAgICAgICAgIGZsYWcgPSBwYXJhbXNbMl0KLSAgICAgICAgICAgIGRhdGFzdG9yZS5kZWxWYXJGbGFnKG5hbWUsIGZsYWcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhc3RvcmUuZGVsVmFyKG5hbWUpCi0KLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yUmVuYW1lVmFyKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgbmFtZSA9IHBhcmFtc1sxXQotICAgICAgICBuZXduYW1lID0gcGFyYW1zWzJdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICBkYXRhc3RvcmUucmVuYW1lVmFyKG5hbWUsIG5ld25hbWUpCi0KICAgICBkZWYgcGFyc2VSZWNpcGVGaWxlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgICIiIgogICAgICAgICBQYXJzZSB0aGUgc3BlY2lmaWVkIHJlY2lwZSBmaWxlICh3aXRoIG9yIHdpdGhvdXQgYmJhcHBlbmRzKQpAQCAtNTM2LDggKzQ5OSw3IEBACiAgICAgICAgIGFwcGVuZHMgPSBwYXJhbXNbMV0KICAgICAgICAgYXBwZW5kbGlzdCA9IHBhcmFtc1syXQogICAgICAgICBpZiBsZW4ocGFyYW1zKSA+IDM6Ci0gICAgICAgICAgICBjb25maWdfZGF0YV9kaWN0ID0gcGFyYW1zWzNdCi0gICAgICAgICAgICBjb25maWdfZGF0YSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlcy5yZWNlaXZlX2RhdGFzdG9yZShjb25maWdfZGF0YV9kaWN0KQorICAgICAgICAgICAgY29uZmlnX2RhdGEgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbcGFyYW1zWzNdXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29uZmlnX2RhdGEgPSBOb25lCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKaW5kZXggZTY0NDJiZi4uZTUyN2UyMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKQEAgLTEwLDcgKzEwLDYgQEAKICMKIAogaW1wb3J0IHN5cywgb3MsIGdsb2IsIG9zLnBhdGgsIHJlLCB0aW1lCi1pbXBvcnQgYXRleGl0CiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwpAQCAtMTgsMTQgKzE3LDExIEBACiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZwotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdCwgbmFtZWR0dXBsZQogaW1wb3J0IGJiLCBiYi5leGNlcHRpb25zLCBiYi5jb21tYW5kCiBmcm9tIGJiIGltcG9ydCB1dGlscywgZGF0YSwgcGFyc2UsIGV2ZW50LCBjYWNoZSwgcHJvdmlkZXJzLCB0YXNrZGF0YSwgcnVucXVldWUsIGJ1aWxkCiBpbXBvcnQgcXVldWUKIGltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgZXJybm8KIGltcG9ydCBwcnNlcnYuc2VydgogaW1wb3J0IHB5aW5vdGlmeQogaW1wb3J0IGpzb24KQEAgLTE2OSw4ICsxNjUsOCBAQAogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5MSAlcyIgJSB0aW1lLnRpbWUoKSkKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAKLSAgICAgICAgc2VsZi5jb25maWd3YXRjaGVyLmJic2VlbiA9IFtdCi0gICAgICAgIHNlbGYuY29uZmlnd2F0Y2hlci5iYndhdGNoZWRmaWxlcyA9IFtdCisgICAgICAgIHNlbGYuY29uZmlnd2F0Y2hlci5iYnNlZW4gPSBzZXQoKQorICAgICAgICBzZWxmLmNvbmZpZ3dhdGNoZXIuYmJ3YXRjaGVkZmlsZXMgPSBzZXQoKQogICAgICAgICBzZWxmLmNvbmZpZ25vdGlmaWVyID0gcHlpbm90aWZ5Lk5vdGlmaWVyKHNlbGYuY29uZmlnd2F0Y2hlciwgc2VsZi5jb25maWdfbm90aWZpY2F0aW9ucykKICAgICAgICAgYmIuZGVidWcoMSwgIkJCQ29va2VyIHB5aW5vdGlmeTIgJXMiICUgdGltZS50aW1lKCkpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQpAQCAtMTgwLDggKzE3Niw4IEBACiAgICAgICAgIHNlbGYud2F0Y2hlciA9IHB5aW5vdGlmeS5XYXRjaE1hbmFnZXIoKQogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5MyAlcyIgJSB0aW1lLnRpbWUoKSkKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHNlbGYud2F0Y2hlci5iYnNlZW4gPSBbXQotICAgICAgICBzZWxmLndhdGNoZXIuYmJ3YXRjaGVkZmlsZXMgPSBbXQorICAgICAgICBzZWxmLndhdGNoZXIuYmJzZWVuID0gc2V0KCkKKyAgICAgICAgc2VsZi53YXRjaGVyLmJid2F0Y2hlZGZpbGVzID0gc2V0KCkKICAgICAgICAgc2VsZi5ub3RpZmllciA9IHB5aW5vdGlmeS5Ob3RpZmllcihzZWxmLndhdGNoZXIsIHNlbGYubm90aWZpY2F0aW9ucykKIAogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5IGNvbXBsZXRlICVzIiAlIHRpbWUudGltZSgpKQpAQCAtMjc4LDE0ICsyNzQsMTQgQEAKICAgICAgICAgaWYgbm90IHdhdGNoZXI6CiAgICAgICAgICAgICB3YXRjaGVyID0gc2VsZi53YXRjaGVyCiAgICAgICAgIGZvciBpIGluIGRlcHM6Ci0gICAgICAgICAgICB3YXRjaGVyLmJid2F0Y2hlZGZpbGVzLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgd2F0Y2hlci5iYndhdGNoZWRmaWxlcy5hZGQoaVswXSkKICAgICAgICAgICAgIGlmIGRpcnM6CiAgICAgICAgICAgICAgICAgZiA9IGlbMF0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZiA9IG9zLnBhdGguZGlybmFtZShpWzBdKQogICAgICAgICAgICAgaWYgZiBpbiB3YXRjaGVyLmJic2VlbjoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgd2F0Y2hlci5iYnNlZW4uYXBwZW5kKGYpCisgICAgICAgICAgICB3YXRjaGVyLmJic2Vlbi5hZGQoZikKICAgICAgICAgICAgIHdhdGNodGFyZ2V0ID0gTm9uZQogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFdlIHRyeSBhbmQgYWRkIHdhdGNoZXMgZm9yIGZpbGVzIHRoYXQgZG9uJ3QgZXhpc3QgYnV0IGlmIHRoZXkgZGlkLCB3b3VsZCBpbmZsdWVuY2UKQEAgLTI5NCw3ICsyOTAsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5hZGRfd2F0Y2goZiwgc2VsZi53YXRjaG1hc2ssIHF1aWV0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBpZiB3YXRjaHRhcmdldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJ3YXRjaGVkZmlsZXMuYXBwZW5kKHdhdGNodGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5iYndhdGNoZWRmaWxlcy5hZGQod2F0Y2h0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZXhjZXB0IHB5aW5vdGlmeS5XYXRjaE1hbmFnZXJFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBpZiAnRU5PRU5UJyBpbiBzdHIoZSk6CkBAIC0zMDIsNyArMjk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmRpcm5hbWUoZikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGYgaW4gd2F0Y2hlci5iYnNlZW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJzZWVuLmFwcGVuZChmKQorICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5iYnNlZW4uYWRkKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBpZiAnRU5PU1BDJyBpbiBzdHIoZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcmxvZy5lcnJvcigiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2Ugb3IgZXhjZWVkcyBmcy5pbm90aWZ5Lm1heF91c2VyX3dhdGNoZXM/IikKQEAgLTEwMjcsMTYgKzEwMjMsMTYgQEAKICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kKGZpbGVwYXR0ZXJuLCBtYXRjaGVzKSwgc2VsZi5kYXRhKQogCiAgICAgZGVmIGZpbmRQcm92aWRlcnMoc2VsZiwgbWM9JycpOgotICAgICAgICByZXR1cm4gYmIucHJvdmlkZXJzLmZpbmRQcm92aWRlcnMoc2VsZi5kYXRhLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCisgICAgICAgIHJldHVybiBiYi5wcm92aWRlcnMuZmluZFByb3ZpZGVycyhzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbikKIAogICAgIGRlZiBmaW5kQmVzdFByb3ZpZGVyKHNlbGYsIHBuLCBtYz0nJyk6CiAgICAgICAgIGlmIHBuIGluIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wcm92aWRlcnM6CiAgICAgICAgICAgICBmaWxlbmFtZXMgPSBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucHJvdmlkZXJzW3BuXQotICAgICAgICAgICAgZWxpZ2libGUsIGZvdW5kVW5pcXVlID0gYmIucHJvdmlkZXJzLmZpbHRlclByb3ZpZGVycyhmaWxlbmFtZXMsIHBuLCBzZWxmLmRhdGEsIHNlbGYucmVjaXBlY2FjaGVzW21jXSkKKyAgICAgICAgICAgIGVsaWdpYmxlLCBmb3VuZFVuaXF1ZSA9IGJiLnByb3ZpZGVycy5maWx0ZXJQcm92aWRlcnMoZmlsZW5hbWVzLCBwbiwgc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10pCiAgICAgICAgICAgICBmaWxlbmFtZSA9IGVsaWdpYmxlWzBdCiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwgZmlsZW5hbWUKICAgICAgICAgZWxpZiBwbiBpbiBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuOgotICAgICAgICAgICAgcmV0dXJuIGJiLnByb3ZpZGVycy5maW5kQmVzdFByb3ZpZGVyKHBuLCBzZWxmLmRhdGEsIHNlbGYucmVjaXBlY2FjaGVzW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbikKKyAgICAgICAgICAgIHJldHVybiBiYi5wcm92aWRlcnMuZmluZEJlc3RQcm92aWRlcihwbiwgc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwgTm9uZQogCkBAIC0xMjA4LDcgKzEyMDQsNyBAQAogICAgICAgICAgICAgZm9yIGMgaW4gY29sbGVjdGlvbl9saXN0OgogICAgICAgICAgICAgICAgIGNhbGNfbGF5ZXJfcHJpb3JpdHkoYykKICAgICAgICAgICAgICAgICByZWdleCA9IHNlbGYuZGF0YS5nZXRWYXIoIkJCRklMRV9QQVRURVJOXyVzIiAlIGMpCi0gICAgICAgICAgICAgICAgaWYgcmVnZXggPT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiByZWdleCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBwYXJzZWxvZy5lcnJvcigiQkJGSUxFX1BBVFRFUk5fJXMgbm90IGRlZmluZWQiICUgYykKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTMxNCw3ICsxMzEwLDcgQEAKICAgICAgICAgc2VsZi5wYXJzZUNvbmZpZ3VyYXRpb24oKQogCiAgICAgICAgICMgSWYgd2UgYXJlIHRvbGQgdG8gZG8gdGhlIE5vbmUgdGFzayB0aGVuIHF1ZXJ5IHRoZSBkZWZhdWx0IHRhc2sKLSAgICAgICAgaWYgKHRhc2sgPT0gTm9uZSk6CisgICAgICAgIGlmIHRhc2sgaXMgTm9uZToKICAgICAgICAgICAgIHRhc2sgPSBzZWxmLmNvbmZpZ3VyYXRpb24uY21kCiAgICAgICAgIGlmIG5vdCB0YXNrLnN0YXJ0c3dpdGgoImRvXyIpOgogICAgICAgICAgICAgdGFzayA9ICJkb18lcyIgJSB0YXNrCkBAIC0xNDU4LDcgKzE0NTQsNyBAQAogICAgICAgICBzZWxmLmJ1aWxkU2V0VmFycygpCiAKICAgICAgICAgIyBJZiB3ZSBhcmUgdG9sZCB0byBkbyB0aGUgTm9uZSB0YXNrIHRoZW4gcXVlcnkgdGhlIGRlZmF1bHQgdGFzawotICAgICAgICBpZiAodGFzayA9PSBOb25lKToKKyAgICAgICAgaWYgdGFzayBpcyBOb25lOgogICAgICAgICAgICAgdGFzayA9IHNlbGYuY29uZmlndXJhdGlvbi5jbWQKIAogICAgICAgICBpZiBub3QgdGFzay5zdGFydHN3aXRoKCJkb18iKToKQEAgLTE2NjksNiArMTY2NSw4IEBACiAgICAgICAgIHNlbGYuY29tbWFuZC5yZXNldCgpCiAgICAgICAgIHNlbGYuZGF0YWJ1aWxkZXIucmVzZXQoKQogICAgICAgICBzZWxmLmRhdGEgPSBzZWxmLmRhdGFidWlsZGVyLmRhdGEKKyAgICAgICAgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gRmFsc2UKIAogCiBjbGFzcyBDb29rZXJFeGl0KGJiLmV2ZW50LkV2ZW50KToKQEAgLTE2OTEsNyArMTY4OSw3IEBACiAgICAgZGVmIGNhbGNfYmJmaWxlX3ByaW9yaXR5KCBzZWxmLCBmaWxlbmFtZSwgbWF0Y2hlZCA9IE5vbmUgKToKICAgICAgICAgZm9yIF8sIF8sIHJlZ2V4LCBwcmkgaW4gc2VsZi5iYmZpbGVfY29uZmlnX3ByaW9yaXRpZXM6CiAgICAgICAgICAgICBpZiByZWdleC5tYXRjaChmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgaWYgbWF0Y2hlZCAhPSBOb25lOgorICAgICAgICAgICAgICAgIGlmIG1hdGNoZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZWdleCBpbiBtYXRjaGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hZGQocmVnZXgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByaQpAQCAtMTc4OCw3ICsxNzg2LDcgQEAKICAgICAgICAgICAgICAgICAjIFdoZW4gY29uc3RydWN0aW5nIGFuIG9sZGVyIHN0eWxlIHNpbmdsZSByZWdleCwgaXQncyBwb3NzaWJsZSBmb3IgQkJNQVNLCiAgICAgICAgICAgICAgICAgIyB0byBlbmQgdXAgYmVnaW5uaW5nIHdpdGggJ3wnLCB3aGljaCBtYXRjaGVzIGFuZCBtYXNrcyBfZXZlcnl0aGluZ18uCiAgICAgICAgICAgICAgICAgaWYgbWFzay5zdGFydHN3aXRoKCJ8Iik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rsb2cud2FybigiQkJNQVNLIGNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiBiZWdpbm5pbmcgd2l0aCAnfCcsIGZpeGluZzogJXMiICUgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdGxvZy53YXJuaW5nKCJCQk1BU0sgY29udGFpbnMgcmVndWxhciBleHByZXNzaW9uIGJlZ2lubmluZyB3aXRoICd8JywgZml4aW5nOiAlcyIgJSBtYXNrKQogICAgICAgICAgICAgICAgICAgICBtYXNrID0gbWFza1sxOl0KICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlLmNvbXBpbGUobWFzaykKQEAgLTE5NDQsNyArMTk0Miw4IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5wYXJzZSgqam9iKQotCisgICAgICAgICAgICAgICAgIyBDbGVhciB0aGUgc2lnZ2VuIGNhY2hlIGFmdGVyIHBhcnNpbmcgdG8gY29udHJvbCBtZW1vcnkgdXNhZ2UsIGl0cyBodWdlCisgICAgICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnBvc3RwYXJzaW5nX2NsZWFuX2NhY2hlKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHMucHV0KHJlc3VsdCwgdGltZW91dD0wLjI1KQogICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkZ1bGw6CkBAIC0xOTUyLDYgKzE5NTEsNyBAQAogCiAgICAgZGVmIHBhcnNlKHNlbGYsIGZpbGVuYW1lLCBhcHBlbmRzKToKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2ZpbHRlciA9IGJiLmV2ZW50LkxvZ0hhbmRsZXIuZmlsdGVyCiAgICAgICAgICAgICAjIFJlY29yZCB0aGUgZmlsZW5hbWUgd2UncmUgcGFyc2luZyBpbnRvIGFueSBldmVudHMgZ2VuZXJhdGVkCiAgICAgICAgICAgICBkZWYgcGFyc2VfZmlsdGVyKHNlbGYsIHJlY29yZCk6CiAgICAgICAgICAgICAgICAgcmVjb3JkLnRhc2twaWQgPSBiYi5ldmVudC53b3JrZXJfcGlkCkBAIC0xOTc0LDYgKzE5NzQsOCBAQAogICAgICAgICAjIGEgU3lzdGVtRXhpdCBldmVudCBmb3IgZXhhbXBsZS4KICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICAgcmV0dXJuIFRydWUsIFBhcnNpbmdGYWlsdXJlKGV4YywgZmlsZW5hbWUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiYi5ldmVudC5Mb2dIYW5kbGVyLmZpbHRlciA9IG9yaWdmaWx0ZXIKIAogY2xhc3MgQ29va2VyUGFyc2VyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tlciwgZmlsZWxpc3QsIG1hc2tlZCk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkKaW5kZXggMGQ3NWQwYy4uYjA2ODNjNSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQpAQCAtNzksNyArNzksNyBAQAogICAgIHJldHVybiBkLmV4cGFuZChzLCB2YXJuYW1lKQogCiBkZWYgZXhwYW5kS2V5cyhhbHRlcmRhdGEsIHJlYWRkYXRhID0gTm9uZSk6Ci0gICAgaWYgcmVhZGRhdGEgPT0gTm9uZToKKyAgICBpZiByZWFkZGF0YSBpcyBOb25lOgogICAgICAgICByZWFkZGF0YSA9IGFsdGVyZGF0YQogCiAgICAgdG9kb2xpc3QgPSB7fQpAQCAtMzY1LDcgKzM2NSw3IEBACiAgICAgI2JiLm5vdGUoIlZhcmlhYmxlICVzIHJlZmVyZW5jZXMgJXMgYW5kIGNhbGxzICVzIiAlIChrZXksIHN0cihkZXBzKSwgc3RyKGV4ZWNzKSkpCiAgICAgI2Quc2V0VmFyRmxhZyhrZXksICJ2YXJkZXBzIiwgZGVwcykKIAotZGVmIGdlbmVyYXRlX2RlcGVuZGVuY2llcyhkKToKK2RlZiBnZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCwgd2hpdGVsaXN0KToKIAogICAgIGtleXMgPSBzZXQoa2V5IGZvciBrZXkgaW4gZCBpZiBub3Qga2V5LnN0YXJ0c3dpdGgoIl9fIikpCiAgICAgc2hlbGxkZXBzID0gc2V0KGtleSBmb3Iga2V5IGluIGQuZ2V0VmFyKCJfX2V4cG9ydGxpc3QiLCBGYWxzZSkgaWYgZC5nZXRWYXJGbGFnKGtleSwgImV4cG9ydCIsIEZhbHNlKSBhbmQgbm90IGQuZ2V0VmFyRmxhZyhrZXksICJ1bmV4cG9ydCIsIEZhbHNlKSkKQEAgLTM4MCw3ICszODAsNyBAQAogICAgICAgICBuZXdkZXBzID0gZGVwc1t0YXNrXQogICAgICAgICBzZWVuID0gc2V0KCkKICAgICAgICAgd2hpbGUgbmV3ZGVwczoKLSAgICAgICAgICAgIG5leHRkZXBzID0gbmV3ZGVwcworICAgICAgICAgICAgbmV4dGRlcHMgPSBuZXdkZXBzIC0gd2hpdGVsaXN0CiAgICAgICAgICAgICBzZWVuIHw9IG5leHRkZXBzCiAgICAgICAgICAgICBuZXdkZXBzID0gc2V0KCkKICAgICAgICAgICAgIGZvciBkZXAgaW4gbmV4dGRlcHM6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKaW5kZXggZGQ1YzYxOC4uN2YxYjZkYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhX3NtYXJ0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQpAQCAtMTA3LDEwICsxMDcsNiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb2RlID0gbWF0Y2guZ3JvdXAoKVszOi0xXQogCi0gICAgICAgICAgICBpZiAiX3JlbW90ZV9kYXRhIiBpbiBzZWxmLmQ6Ci0gICAgICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kWyJfcmVtb3RlX2RhdGEiXQotICAgICAgICAgICAgICAgIHJldHVybiBjb25uZWN0b3IuZXhwYW5kUHl0aG9uUmVmKHNlbGYudmFybmFtZSwgY29kZSwgc2VsZi5kKQotCiAgICAgICAgICAgICBpZiBzZWxmLnZhcm5hbWU6CiAgICAgICAgICAgICAgICAgdmFybmFtZSA9ICdWYXIgPCVzPicgJSBzZWxmLnZhcm5hbWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjgsMTIgKzI2NCw3IEBACiAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlc1tuZXd2YXJdLmFwcGVuZChpLmNvcHkoKSkKIAogICAgIGRlZiB2YXJpYWJsZShzZWxmLCB2YXIpOgotICAgICAgICByZW1vdGVfY29ubmVjdG9yID0gc2VsZi5kYXRhcm9vdC5nZXRWYXIoJ19yZW1vdGVfZGF0YScsIEZhbHNlKQotICAgICAgICBpZiByZW1vdGVfY29ubmVjdG9yOgotICAgICAgICAgICAgdmFyaGlzdG9yeSA9IHJlbW90ZV9jb25uZWN0b3IuZ2V0VmFySGlzdG9yeSh2YXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YXJoaXN0b3J5ID0gW10KLQorICAgICAgICB2YXJoaXN0b3J5ID0gW10KICAgICAgICAgaWYgdmFyIGluIHNlbGYudmFyaWFibGVzOgogICAgICAgICAgICAgdmFyaGlzdG9yeS5leHRlbmQoc2VsZi52YXJpYWJsZXNbdmFyXSkKICAgICAgICAgcmV0dXJuIHZhcmhpc3RvcnkKQEAgLTMzOCwxMSArMzI5LDEyIEBACiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCiAgICAgICAgIHJldHVybiBsaW5lcwogCi0gICAgZGVmIGdldF92YXJpYWJsZV9pdGVtc19maWxlcyhzZWxmLCB2YXIsIGQpOgorICAgIGRlZiBnZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoc2VsZiwgdmFyKToKICAgICAgICAgIiIiCiAgICAgICAgIFVzZSB2YXJpYWJsZSBoaXN0b3J5IHRvIG1hcCBpdGVtcyBhZGRlZCB0byBhIGxpc3QgdmFyaWFibGUgYW5kCiAgICAgICAgIHRoZSBmaWxlcyBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuCiAgICAgICAgICIiIgorICAgICAgICBkID0gc2VsZi5kYXRhcm9vdAogICAgICAgICBoaXN0b3J5ID0gc2VsZi52YXJpYWJsZSh2YXIpCiAgICAgICAgIGZpbmFsaXRlbXMgPSAoZC5nZXRWYXIodmFyKSBvciAnJykuc3BsaXQoKQogICAgICAgICBmaWxlbWFwID0ge30KQEAgLTQ3MCwxMCArNDYyLDYgQEAKICAgICAgICAgICAgIGlmIHZhciBpbiBkZXN0OgogICAgICAgICAgICAgICAgIHJldHVybiBkZXN0W3Zhcl0sIHNlbGYub3ZlcnJpZGVkYXRhLmdldCh2YXIsIE5vbmUpCiAKLSAgICAgICAgICAgIGlmICJfcmVtb3RlX2RhdGEiIGluIGRlc3Q6Ci0gICAgICAgICAgICAgICAgY29ubmVjdG9yID0gZGVzdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdG9yLmdldFZhcih2YXIpCi0KICAgICAgICAgICAgIGlmICJfZGF0YSIgbm90IGluIGRlc3Q6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGRlc3QgPSBkZXN0WyJfZGF0YSJdCkBAIC00OTgsMTIgKzQ4Niw2IEBACiAgICAgICAgIGlmICdwYXJzaW5nJyBpbiBsb2dpbmZvOgogICAgICAgICAgICAgcGFyc2luZz1UcnVlCiAKLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLnNldFZhcih2YXIsIHZhbHVlKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBpZiAnb3AnIG5vdCBpbiBsb2dpbmZvOgogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICJzZXQiCiAKQEAgLTYwNywxMSArNTg5LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFJlbmFtZSB0aGUgdmFyaWFibGUga2V5IHRvIG5ld2tleQogICAgICAgICAiIiIKLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLnJlbmFtZVZhcihrZXksIG5ld2tleSkKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGtleSA9PSBuZXdrZXk6CisgICAgICAgICAgICBiYi53YXJuKCJDYWxsaW5nIHJlbmFtZVZhciB3aXRoIGVxdWl2YWxlbnQga2V5cyAoJXMpIGlzIGludmFsaWQiICUga2V5KQorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdmFsID0gc2VsZi5nZXRWYXIoa2V5LCAwLCBwYXJzaW5nPVRydWUpCiAgICAgICAgIGlmIHZhbCBpcyBub3QgTm9uZToKQEAgLTY1OCwxMSArNjM4LDYgQEAKIAogICAgIGRlZiBkZWxWYXIoc2VsZiwgdmFyLCAqKmxvZ2luZm8pOgogICAgICAgICBzZWxmLmV4cGFuZF9jYWNoZSA9IHt9Ci0gICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIHNlbGYuZGljdDoKLSAgICAgICAgICAgIGNvbm5lY3RvciA9IHNlbGYuZGljdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgIHJlcyA9IGNvbm5lY3Rvci5kZWxWYXIodmFyKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsb2dpbmZvWydkZXRhaWwnXSA9ICIiCiAgICAgICAgIGxvZ2luZm9bJ29wJ10gPSAnZGVsJwpAQCAtNjkwLDExICs2NjUsNiBAQAogCiAgICAgZGVmIHNldFZhckZsYWcoc2VsZiwgdmFyLCBmbGFnLCB2YWx1ZSwgKipsb2dpbmZvKToKICAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQotICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBzZWxmLmRpY3Q6Ci0gICAgICAgICAgICBjb25uZWN0b3IgPSBzZWxmLmRpY3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICByZXMgPSBjb25uZWN0b3Iuc2V0VmFyRmxhZyh2YXIsIGZsYWcsIHZhbHVlKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBpZiAnb3AnIG5vdCBpbiBsb2dpbmZvOgogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICJzZXQiCkBAIC04NDUsMTEgKzgxNSw2IEBACiAKICAgICBkZWYgZGVsVmFyRmxhZyhzZWxmLCB2YXIsIGZsYWcsICoqbG9naW5mbyk6CiAgICAgICAgIHNlbGYuZXhwYW5kX2NhY2hlID0ge30KLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLmRlbFZhckZsYWcodmFyLCBmbGFnKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsb2NhbF92YXIsIF8gPSBzZWxmLl9maW5kVmFyKHZhcikKICAgICAgICAgaWYgbm90IGxvY2FsX3ZhcjoKQEAgLTk2Nyw3ICs5MzIsNyBAQAogCiAgICAgZGVmIGxvY2Fsa2V5cyhzZWxmKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLmRpY3Q6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGluIFsnX2RhdGEnLCAnX3JlbW90ZV9kYXRhJ106CisgICAgICAgICAgICBpZiBrZXkgbm90IGluIFsnX2RhdGEnXToKICAgICAgICAgICAgICAgICB5aWVsZCBrZXkKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKQEAgLTk3Niw3ICs5NDEsNyBAQAogICAgICAgICBkZWYga2V5bGlzdChkKTogICAgICAgIAogICAgICAgICAgICAga2xpc3QgPSBzZXQoKQogICAgICAgICAgICAgZm9yIGtleSBpbiBkOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbIl9kYXRhIiwgIl9yZW1vdGVfZGF0YSJdOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbIl9kYXRhIl06CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYga2V5IGluIGRlbGV0ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC05OTAsMTMgKzk1NSw2IEBACiAgICAgICAgICAgICBpZiAiX2RhdGEiIGluIGQ6CiAgICAgICAgICAgICAgICAga2xpc3QgfD0ga2V5bGlzdChkWyJfZGF0YSJdKQogCi0gICAgICAgICAgICBpZiAiX3JlbW90ZV9kYXRhIiBpbiBkOgotICAgICAgICAgICAgICAgIGNvbm5lY3RvciA9IGRbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiBjb25uZWN0b3IuZ2V0S2V5cygpOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gZGVsZXRlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGtsaXN0LmFkZChrZXkpCi0KICAgICAgICAgICAgIHJldHVybiBrbGlzdAogCiAgICAgICAgIHNlbGYubmVlZF9vdmVycmlkZXMoKQpAQCAtMTA0Miw3ICsxMDAwLDEwIEBACiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgdmFsdWUgPSBkLmdldFZhcihrZXksIEZhbHNlKSBvciAiIgotICAgICAgICAgICAgZGF0YS51cGRhdGUoe2tleTp2YWx1ZX0pCisgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB0eXBlKHNlbGYpOgorICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlKHtrZXk6dmFsdWUuZ2V0X2hhc2goKX0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlKHtrZXk6dmFsdWV9KQogCiAgICAgICAgICAgICB2YXJmbGFncyA9IGQuZ2V0VmFyRmxhZ3Moa2V5LCBpbnRlcm5hbGZsYWdzID0gVHJ1ZSkKICAgICAgICAgICAgIGlmIG5vdCB2YXJmbGFnczoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CmluZGV4IGQ0NDYyMWUuLmQxMzU5ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQpAQCAtMTAsOCArMTAsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcywgc3lzCi1pbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBzeXMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYXRleGl0CkBAIC0zNDcsNyArMzQ2LDcgQEAKIAogZGVmIGdldE5hbWUoZSk6CiAgICAgIiIiUmV0dXJucyB0aGUgbmFtZSBvZiBhIGNsYXNzIG9yIGNsYXNzIGluc3RhbmNlIiIiCi0gICAgaWYgZ2V0YXR0cihlLCAiX19uYW1lX18iLCBOb25lKSA9PSBOb25lOgorICAgIGlmIGdldGF0dHIoZSwgIl9fbmFtZV9fIiwgTm9uZSkgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIGUuX19jbGFzc19fLl9fbmFtZV9fCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGUuX19uYW1lX18KQEAgLTUwOSw3ICs1MDgsNyBAQAogICAgICAgICBleHRyYSA9ICcnCiAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFzb25zOgogICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfbWF0Y2hlczoKLSAgICAgICAgICAgICAgICBleHRyYSA9ICIuIENsb3NlIG1hdGNoZXM6XG4gICVzIiAlICdcbiAgJy5qb2luKHNlbGYuX2Nsb3NlX21hdGNoZXMpCisgICAgICAgICAgICAgICAgZXh0cmEgPSAiLiBDbG9zZSBtYXRjaGVzOlxuICAlcyIgJSAnXG4gICcuam9pbihzb3J0ZWQoc2V0KHNlbGYuX2Nsb3NlX21hdGNoZXMpKSkKIAogICAgICAgICBpZiBzZWxmLl9kZXBlbmRlZXM6CiAgICAgICAgICAgICBtc2cgPSAiTm90aGluZyAlc1BST1ZJREVTICclcycgKGJ1dCAlcyAlc0RFUEVORFMgb24gb3Igb3RoZXJ3aXNlIHJlcXVpcmVzIGl0KSVzIiAlIChyLCBzZWxmLl9pdGVtLCAiLCAiLmpvaW4oc2VsZi5fZGVwZW5kZWVzKSwgciwgZXh0cmEpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CmluZGV4IDA3ZGU2YzIuLmViMTEyZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC0zMyw2ICszMyw5IEBACiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLkZldGNoZXIiKQogCitDSEVDS1NVTV9MSVNUID0gWyAibWQ1IiwgInNoYTI1NiIsICJzaGExIiwgInNoYTM4NCIsICJzaGE1MTIiIF0KK1NIT1dOX0NIRUNLU1VNX0xJU1QgPSBbInNoYTI1NiJdCisKIGNsYXNzIEJCRmV0Y2hFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICAiIiJDbGFzcyBhbGwgZmV0Y2ggZXhjZXB0aW9ucyBpbmhlcml0IGZyb20iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6CkBAIC0xMzEsMTAgKzEzNCw5IEBACiAgICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmKQogCiBjbGFzcyBNaXNzaW5nQ2hlY2tzdW1FdmVudChiYi5ldmVudC5FdmVudCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgbWQ1c3VtLCBzaGEyNTZzdW0pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsICoqY2hlY2tzdW1zKToKICAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5jaGVja3N1bXMgPSB7J21kNXN1bSc6IG1kNXN1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTI1NnN1bSc6IHNoYTI1NnN1bX0KKyAgICAgICAgc2VsZi5jaGVja3N1bXMgPSBjaGVja3N1bXMKICAgICAgICAgYmIuZXZlbnQuRXZlbnQuX19pbml0X18oc2VsZikKIAogCkBAIC00ODQsMTcgKzQ4NiwyMiBAQAogICAgIENhbGxlZCB0byBpbml0aWFsaXplIHRoZSBmZXRjaGVycyBvbmNlIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgaXMga25vd24uCiAgICAgQ2FsbHMgYmVmb3JlIHRoaXMgbXVzdCBub3QgaGl0IHRoZSBjYWNoZS4KICAgICAiIiIKKworICAgIHJldnMgPSBiYi5wZXJzaXN0X2RhdGEucGVyc2lzdCgnQkJfVVJJX0hFQURSRVZTJywgZCkKKyAgICB0cnk6CisgICAgICAgICMgZmV0Y2hlcl9pbml0IGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgc28gbWFrZSBzdXJlIHdlIG9ubHkgc2F2ZSB0aGUKKyAgICAgICAgIyByZXZzIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgICAgaWYgbm90IGJiLmZldGNoMi5zYXZlZF9oZWFkcmV2czoKKyAgICAgICAgICAgIGJiLmZldGNoMi5zYXZlZF9oZWFkcmV2cyA9IGRpY3QocmV2cykKKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKwogICAgICMgV2hlbiB0byBkcm9wIFNDTSBoZWFkIHJldmlzaW9ucyBjb250cm9sbGVkIGJ5IHVzZXIgcG9saWN5CiAgICAgc3JjcmV2X3BvbGljeSA9IGQuZ2V0VmFyKCdCQl9TUkNSRVZfUE9MSUNZJykgb3IgImNsZWFyIgogICAgIGlmIHNyY3Jldl9wb2xpY3kgPT0gImNhY2hlIjoKICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJLZWVwaW5nIFNSQ1JFViBjYWNoZSBkdWUgdG8gY2FjaGUgcG9saWN5IG9mOiAlcyIsIHNyY3Jldl9wb2xpY3kpCiAgICAgZWxpZiBzcmNyZXZfcG9saWN5ID09ICJjbGVhciI6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiQ2xlYXJpbmcgU1JDUkVWIGNhY2hlIGR1ZSB0byBjYWNoZSBwb2xpY3kgb2Y6ICVzIiwgc3JjcmV2X3BvbGljeSkKLSAgICAgICAgcmV2cyA9IGJiLnBlcnNpc3RfZGF0YS5wZXJzaXN0KCdCQl9VUklfSEVBRFJFVlMnLCBkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMgPSByZXZzLml0ZW1zKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwogICAgICAgICByZXZzLmNsZWFyKCkKICAgICBlbHNlOgogICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJJbnZhbGlkIFNSQ1JFViBjYWNoZSBwb2xpY3kgb2Y6ICVzIiAlIHNyY3Jldl9wb2xpY3kpCkBAIC01MTMsMjIgKzUyMCwxMiBAQAogCiBkZWYgZmV0Y2hlcl9jb21wYXJlX3JldmlzaW9ucyhkKToKICAgICAiIiIKLSAgICBDb21wYXJlIHRoZSByZXZpc2lvbnMgaW4gdGhlIHBlcnNpc3RhbnQgY2FjaGUgd2l0aCBjdXJyZW50IHZhbHVlcyBhbmQKLSAgICByZXR1cm4gdHJ1ZS9mYWxzZSBvbiB3aGV0aGVyIHRoZXkndmUgY2hhbmdlZC4KKyAgICBDb21wYXJlIHRoZSByZXZpc2lvbnMgaW4gdGhlIHBlcnNpc3RlbnQgY2FjaGUgd2l0aCB0aGUgc2F2ZWQgdmFsdWVzIGZyb20KKyAgICB3aGVuIGJpdGJha2Ugd2FzIHN0YXJ0ZWQgYW5kIHJldHVybiB0cnVlIGlmIHRoZXkgaGF2ZSBjaGFuZ2VkLgogICAgICIiIgogCi0gICAgZGF0YSA9IGJiLnBlcnNpc3RfZGF0YS5wZXJzaXN0KCdCQl9VUklfSEVBRFJFVlMnLCBkKS5pdGVtcygpCi0gICAgZGF0YTIgPSBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMKLQotICAgIGNoYW5nZWQgPSBGYWxzZQotICAgIGZvciBrZXkgaW4gZGF0YToKLSAgICAgICAgaWYga2V5IG5vdCBpbiBkYXRhMiBvciBkYXRhMltrZXldICE9IGRhdGFba2V5XToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiJXMgY2hhbmdlZCIsIGtleSkKLSAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICIlcyBkaWQgbm90IGNoYW5nZSIsIGtleSkKLSAgICByZXR1cm4gRmFsc2UKKyAgICBoZWFkcmV2cyA9IGRpY3QoYmIucGVyc2lzdF9kYXRhLnBlcnNpc3QoJ0JCX1VSSV9IRUFEUkVWUycsIGQpKQorICAgIHJldHVybiBoZWFkcmV2cyAhPSBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMKIAogZGVmIG1pcnJvcl9mcm9tX3N0cmluZyhkYXRhKToKICAgICBtaXJyb3JzID0gKGRhdGEgb3IgIiIpLnJlcGxhY2UoJ1xcbicsJyAnKS5zcGxpdCgpCkBAIC01NTIsNzEgKzU0OSw4NCBAQAogICAgIGRvd25sb2FkaW5nLiBTZWUgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcxLgogICAgICIiIgogCi0gICAgX01ENV9LRVkgPSAibWQ1IgotICAgIF9TSEEyNTZfS0VZID0gInNoYTI1NiIKLQogICAgIGlmIHVkLmlnbm9yZV9jaGVja3N1bXMgb3Igbm90IHVkLm1ldGhvZC5zdXBwb3J0c19jaGVja3N1bSh1ZCk6CiAgICAgICAgIHJldHVybiB7fQogCi0gICAgaWYgX01ENV9LRVkgaW4gcHJlY29tcHV0ZWQ6Ci0gICAgICAgIG1kNWRhdGEgPSBwcmVjb21wdXRlZFtfTUQ1X0tFWV0KLSAgICBlbHNlOgotICAgICAgICBtZDVkYXRhID0gYmIudXRpbHMubWQ1X2ZpbGUodWQubG9jYWxwYXRoKQorICAgIGRlZiBjb21wdXRlX2NoZWNrc3VtX2luZm8oY2hlY2tzdW1faWQpOgorICAgICAgICBjaGVja3N1bV9uYW1lID0gZ2V0YXR0cih1ZCwgIiVzX25hbWUiICUgY2hlY2tzdW1faWQpCiAKLSAgICBpZiBfU0hBMjU2X0tFWSBpbiBwcmVjb21wdXRlZDoKLSAgICAgICAgc2hhMjU2ZGF0YSA9IHByZWNvbXB1dGVkW19TSEEyNTZfS0VZXQotICAgIGVsc2U6Ci0gICAgICAgIHNoYTI1NmRhdGEgPSBiYi51dGlscy5zaGEyNTZfZmlsZSh1ZC5sb2NhbHBhdGgpCisgICAgICAgIGlmIGNoZWNrc3VtX2lkIGluIHByZWNvbXB1dGVkOgorICAgICAgICAgICAgY2hlY2tzdW1fZGF0YSA9IHByZWNvbXB1dGVkW2NoZWNrc3VtX2lkXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2hlY2tzdW1fZGF0YSA9IGdldGF0dHIoYmIudXRpbHMsICIlc19maWxlIiAlIGNoZWNrc3VtX2lkKSh1ZC5sb2NhbHBhdGgpCiAKLSAgICBpZiB1ZC5tZXRob2QucmVjb21tZW5kc19jaGVja3N1bSh1ZCkgYW5kIG5vdCB1ZC5tZDVfZXhwZWN0ZWQgYW5kIG5vdCB1ZC5zaGEyNTZfZXhwZWN0ZWQ6Ci0gICAgICAgICMgSWYgc3RyaWN0IGNoZWNraW5nIGVuYWJsZWQgYW5kIG5laXRoZXIgc3VtIGRlZmluZWQsIHJhaXNlIGVycm9yCisgICAgICAgIGNoZWNrc3VtX2V4cGVjdGVkID0gZ2V0YXR0cih1ZCwgIiVzX2V4cGVjdGVkIiAlIGNoZWNrc3VtX2lkKQorCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiaWQiOiBjaGVja3N1bV9pZCwKKyAgICAgICAgICAgICJuYW1lIjogY2hlY2tzdW1fbmFtZSwKKyAgICAgICAgICAgICJkYXRhIjogY2hlY2tzdW1fZGF0YSwKKyAgICAgICAgICAgICJleHBlY3RlZCI6IGNoZWNrc3VtX2V4cGVjdGVkCisgICAgICAgIH0KKworICAgIGNoZWNrc3VtX2luZm9zID0gW10KKyAgICBmb3IgY2hlY2tzdW1faWQgaW4gQ0hFQ0tTVU1fTElTVDoKKyAgICAgICAgY2hlY2tzdW1faW5mb3MuYXBwZW5kKGNvbXB1dGVfY2hlY2tzdW1faW5mbyhjaGVja3N1bV9pZCkpCisKKyAgICBjaGVja3N1bV9kaWN0ID0ge2NpWyJpZCJdIDogY2lbImRhdGEiXSBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3N9CisgICAgY2hlY2tzdW1fZXZlbnQgPSB7IiVzc3VtIiAlIGNpWyJpZCJdIDogY2lbImRhdGEiXSBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3N9CisKKyAgICBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3M6CisgICAgICAgIGlmIGNpWyJpZCJdIGluIFNIT1dOX0NIRUNLU1VNX0xJU1Q6CisgICAgICAgICAgICBjaGVja3N1bV9saW5lcyA9IFsiU1JDX1VSSVslc10gPSBcIiVzXCIiICUgKGNpWyJuYW1lIl0sIGNpWyJkYXRhIl0pXQorCisgICAgIyBJZiBubyBjaGVja3N1bSBoYXMgYmVlbiBwcm92aWRlZAorICAgIGlmIHVkLm1ldGhvZC5yZWNvbW1lbmRzX2NoZWNrc3VtKHVkKSBhbmQgYWxsKGNpWyJleHBlY3RlZCJdIGlzIE5vbmUgZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zKToKKyAgICAgICAgbWVzc2FnZXMgPSBbXQogICAgICAgICBzdHJpY3QgPSBkLmdldFZhcigiQkJfU1RSSUNUX0NIRUNLU1VNIikgb3IgIjAiCi0gICAgICAgIGlmIHN0cmljdCA9PSAiMSI6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIGNoZWNrc3VtIHNwZWNpZmllZCBmb3IgJXMsIHBsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIHRvIHRoZSByZWNpcGU6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyJcblNSQ19VUklbJXNdID0gIiVzIicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWQubG9jYWxwYXRoLCB1ZC5tZDVfbmFtZSwgbWQ1ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKSkKLSAgICAgICAgICAgIHJhaXNlIE5vQ2hlY2tzdW1FcnJvcignTWlzc2luZyBTUkNfVVJJIGNoZWNrc3VtJywgdWQudXJsKQogCi0gICAgICAgIGJiLmV2ZW50LmZpcmUoTWlzc2luZ0NoZWNrc3VtRXZlbnQodWQudXJsLCBtZDVkYXRhLCBzaGEyNTZkYXRhKSwgZCkKKyAgICAgICAgIyBJZiBzdHJpY3QgY2hlY2tpbmcgZW5hYmxlZCBhbmQgbmVpdGhlciBzdW0gZGVmaW5lZCwgcmFpc2UgZXJyb3IKKyAgICAgICAgaWYgc3RyaWN0ID09ICIxIjoKKyAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiTm8gY2hlY2tzdW0gc3BlY2lmaWVkIGZvciAnJXMnLCBwbGVhc2UgYWRkIGF0ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZWFzdCBvbmUgdG8gdGhlIHJlY2lwZToiICUgdWQubG9jYWxwYXRoKQorICAgICAgICAgICAgbWVzc2FnZXMuZXh0ZW5kKGNoZWNrc3VtX2xpbmVzKQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJcbiIuam9pbihtZXNzYWdlcykpCisgICAgICAgICAgICByYWlzZSBOb0NoZWNrc3VtRXJyb3IoIk1pc3NpbmcgU1JDX1VSSSBjaGVja3N1bSIsIHVkLnVybCkKKworICAgICAgICBiYi5ldmVudC5maXJlKE1pc3NpbmdDaGVja3N1bUV2ZW50KHVkLnVybCwgKipjaGVja3N1bV9ldmVudCksIGQpCiAKICAgICAgICAgaWYgc3RyaWN0ID09ICJpZ25vcmUiOgotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBfTUQ1X0tFWTogbWQ1ZGF0YSwKLSAgICAgICAgICAgICAgICBfU0hBMjU2X0tFWTogc2hhMjU2ZGF0YQotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrc3VtX2RpY3QKIAogICAgICAgICAjIExvZyBtaXNzaW5nIHN1bXMgc28gdXNlciBjYW4gbW9yZSBlYXNpbHkgYWRkIHRoZW0KLSAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ01pc3NpbmcgbWQ1IFNSQ19VUkkgY2hlY2tzdW0gZm9yICVzLCBjb25zaWRlciBhZGRpbmcgdG8gdGhlIHJlY2lwZTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUklbJXNdID0gIiVzIicsCi0gICAgICAgICAgICAgICAgICAgICAgIHVkLmxvY2FscGF0aCwgdWQubWQ1X25hbWUsIG1kNWRhdGEpCi0gICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIHNoYTI1NiBTUkNfVVJJIGNoZWNrc3VtIGZvciAlcywgY29uc2lkZXIgYWRkaW5nIHRvIHRoZSByZWNpcGU6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyInLAotICAgICAgICAgICAgICAgICAgICAgICB1ZC5sb2NhbHBhdGgsIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKQorICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIk1pc3NpbmcgY2hlY2tzdW0gZm9yICclcycsIGNvbnNpZGVyIGFkZGluZyBhdCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZWFzdCBvbmUgdG8gdGhlIHJlY2lwZToiICUgdWQubG9jYWxwYXRoKQorICAgICAgICBtZXNzYWdlcy5leHRlbmQoY2hlY2tzdW1fbGluZXMpCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCJcbiIuam9pbihtZXNzYWdlcykpCiAKICAgICAjIFdlIHdhbnQgdG8gYWxlcnQgdGhlIHVzZXIgaWYgYSBjaGVja3N1bSBpcyBkZWZpbmVkIGluIHRoZSByZWNpcGUgYnV0CiAgICAgIyBpdCBkb2VzIG5vdCBtYXRjaC4KLSAgICBtc2cgPSAiIgotICAgIG1pc21hdGNoID0gRmFsc2UKLSAgICBpZiB1ZC5tZDVfZXhwZWN0ZWQgYW5kIHVkLm1kNV9leHBlY3RlZCAhPSBtZDVkYXRhOgotICAgICAgICBtc2cgPSBtc2cgKyAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAodWQubG9jYWxwYXRoLCAnbWQ1JywgbWQ1ZGF0YSwgdWQubWQ1X2V4cGVjdGVkKQotICAgICAgICBtaXNtYXRjaCA9IFRydWU7CisgICAgbWVzc2FnZXMgPSBbXQorICAgIG1lc3NhZ2VzLmFwcGVuZCgiQ2hlY2tzdW0gbWlzbWF0Y2ghIikKKyAgICBiYWRfY2hlY2tzdW0gPSBOb25lCiAKLSAgICBpZiB1ZC5zaGEyNTZfZXhwZWN0ZWQgYW5kIHVkLnNoYTI1Nl9leHBlY3RlZCAhPSBzaGEyNTZkYXRhOgotICAgICAgICBtc2cgPSBtc2cgKyAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAodWQubG9jYWxwYXRoLCAnc2hhMjU2Jywgc2hhMjU2ZGF0YSwgdWQuc2hhMjU2X2V4cGVjdGVkKQotICAgICAgICBtaXNtYXRjaCA9IFRydWU7CisgICAgZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zOgorICAgICAgICBpZiBjaVsiZXhwZWN0ZWQiXSBhbmQgY2lbImV4cGVjdGVkIl0gIT0gY2lbImRhdGEiXToKKyAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiRmlsZTogJyVzJyBoYXMgJXMgY2hlY2tzdW0gJXMgd2hlbiAlcyB3YXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIiAlICh1ZC5sb2NhbHBhdGgsIGNpWyJpZCJdLCBjaVsiZGF0YSJdLCBjaVsiZXhwZWN0ZWQiXSkpCisgICAgICAgICAgICBiYWRfY2hlY2tzdW0gPSBjaVsiZGF0YSJdCiAKLSAgICBpZiBtaXNtYXRjaDoKLSAgICAgICAgbXNnID0gbXNnICsgJ1xuSWYgdGhpcyBjaGFuZ2UgaXMgZXhwZWN0ZWQgKGUuZy4geW91IGhhdmUgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbiB3aXRob3V0IHVwZGF0aW5nIHRoZSBjaGVja3N1bXMpIHRoZW4geW91IGNhbiB1c2UgdGhlc2UgbGluZXMgd2l0aGluIHRoZSByZWNpcGU6XG5TUkNfVVJJWyVzXSA9ICIlcyJcblNSQ19VUklbJXNdID0gIiVzIlxuT3RoZXJ3aXNlIHlvdSBzaG91bGQgcmV0cnkgdGhlIGRvd25sb2FkIGFuZC9vciBjaGVjayB3aXRoIHVwc3RyZWFtIHRvIGRldGVybWluZSBpZiB0aGUgZmlsZSBoYXMgYmVjb21lIGNvcnJ1cHRlZCBvciBvdGhlcndpc2UgdW5leHBlY3RlZGx5IG1vZGlmaWVkLlxuJyAlICh1ZC5tZDVfbmFtZSwgbWQ1ZGF0YSwgdWQuc2hhMjU2X25hbWUsIHNoYTI1NmRhdGEpCisgICAgaWYgYmFkX2NoZWNrc3VtOgorICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIklmIHRoaXMgY2hhbmdlIGlzIGV4cGVjdGVkIChlLmcuIHlvdSBoYXZlIHVwZ3JhZGVkICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgInRvIGEgbmV3IHZlcnNpb24gd2l0aG91dCB1cGRhdGluZyB0aGUgY2hlY2tzdW1zKSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGVuIHlvdSBjYW4gdXNlIHRoZXNlIGxpbmVzIHdpdGhpbiB0aGUgcmVjaXBlOiIpCisgICAgICAgIG1lc3NhZ2VzLmV4dGVuZChjaGVja3N1bV9saW5lcykKKyAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJPdGhlcndpc2UgeW91IHNob3VsZCByZXRyeSB0aGUgZG93bmxvYWQgYW5kL29yICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrIHdpdGggdXBzdHJlYW0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGhhcyAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJiZWNvbWUgY29ycnVwdGVkIG9yIG90aGVyd2lzZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQuIikKKyAgICAgICAgcmFpc2UgQ2hlY2tzdW1FcnJvcigiXG4iLmpvaW4obWVzc2FnZXMpLCB1ZC51cmwsIGJhZF9jaGVja3N1bSkKIAotICAgIGlmIGxlbihtc2cpOgotICAgICAgICByYWlzZSBDaGVja3N1bUVycm9yKCdDaGVja3N1bSBtaXNtYXRjaCElcycgJSBtc2csIHVkLnVybCwgbWQ1ZGF0YSkKLQotICAgIHJldHVybiB7Ci0gICAgICAgIF9NRDVfS0VZOiBtZDVkYXRhLAotICAgICAgICBfU0hBMjU2X0tFWTogc2hhMjU2ZGF0YQotICAgIH0KLQorICAgIHJldHVybiBjaGVja3N1bV9kaWN0CiAKIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBkLCBvcmlndWQ9Tm9uZSk6CiAgICAgIiIiCkBAIC0xMDgxLDcgKzEwOTEsNyBAQAogCiAgICAgZm9yIGluZGV4LCB1cmkgaW4gZW51bWVyYXRlKHVyaXMpOgogICAgICAgICByZXQgPSB0cnlfbWlycm9yX3VybChmZXRjaCwgb3JpZ3VkLCB1ZHNbaW5kZXhdLCBsZCwgY2hlY2spCi0gICAgICAgIGlmIHJldCAhPSBGYWxzZToKKyAgICAgICAgaWYgcmV0OgogICAgICAgICAgICAgcmV0dXJuIHJldAogICAgIHJldHVybiBOb25lCiAKQEAgLTExOTcsMTQgKzEyMDcsMTQgQEAKIAogICAgIHJldHVybiAiICIuam9pbihmaWxlbGlzdCkKIAotZGVmIGdldF9maWxlX2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4pOgorZGVmIGdldF9maWxlX2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgdGhlIGNoZWNrc3VtcyBmb3IgYSBsaXN0IG9mIGxvY2FsIGZpbGVzCiAKICAgICBSZXR1cm5zIHRoZSBjaGVja3N1bXMgZm9yIGEgbGlzdCBvZiBsb2NhbCBmaWxlcywgY2FjaGluZyB0aGUgcmVzdWx0cyBhcwogICAgIGl0IHByb2NlZWRzCiAKICAgICAiIiIKLSAgICByZXR1cm4gX2NoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZmlsZWxpc3QsIHBuKQorICAgIHJldHVybiBfY2hlY2tzdW1fY2FjaGUuZ2V0X2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpCiAKIAogY2xhc3MgRmV0Y2hEYXRhKG9iamVjdCk6CkBAIC0xMjMwLDI0ICsxMjQwLDI2IEBACiAgICAgICAgICAgICBzZWxmLnBzd2QgPSBzZWxmLnBhcm1bInBzd2QiXQogICAgICAgICBzZWxmLnNldHVwID0gRmFsc2UKIAotICAgICAgICBpZiAibmFtZSIgaW4gc2VsZi5wYXJtOgotICAgICAgICAgICAgc2VsZi5tZDVfbmFtZSA9ICIlcy5tZDVzdW0iICUgc2VsZi5wYXJtWyJuYW1lIl0KLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X25hbWUgPSAiJXMuc2hhMjU2c3VtIiAlIHNlbGYucGFybVsibmFtZSJdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1kNV9uYW1lID0gIm1kNXN1bSIKLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X25hbWUgPSAic2hhMjU2c3VtIgotICAgICAgICBpZiBzZWxmLm1kNV9uYW1lIGluIHNlbGYucGFybToKLSAgICAgICAgICAgIHNlbGYubWQ1X2V4cGVjdGVkID0gc2VsZi5wYXJtW3NlbGYubWQ1X25hbWVdCi0gICAgICAgIGVsaWYgc2VsZi50eXBlIG5vdCBpbiBbImh0dHAiLCAiaHR0cHMiLCAiZnRwIiwgImZ0cHMiLCAic2Z0cCIsICJzMyJdOgotICAgICAgICAgICAgc2VsZi5tZDVfZXhwZWN0ZWQgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1kNV9leHBlY3RlZCA9IGQuZ2V0VmFyRmxhZygiU1JDX1VSSSIsIHNlbGYubWQ1X25hbWUpCi0gICAgICAgIGlmIHNlbGYuc2hhMjU2X25hbWUgaW4gc2VsZi5wYXJtOgotICAgICAgICAgICAgc2VsZi5zaGEyNTZfZXhwZWN0ZWQgPSBzZWxmLnBhcm1bc2VsZi5zaGEyNTZfbmFtZV0KLSAgICAgICAgZWxpZiBzZWxmLnR5cGUgbm90IGluIFsiaHR0cCIsICJodHRwcyIsICJmdHAiLCAiZnRwcyIsICJzZnRwIiwgInMzIl06Ci0gICAgICAgICAgICBzZWxmLnNoYTI1Nl9leHBlY3RlZCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X2V4cGVjdGVkID0gZC5nZXRWYXJGbGFnKCJTUkNfVVJJIiwgc2VsZi5zaGEyNTZfbmFtZSkKKyAgICAgICAgZGVmIGNvbmZpZ3VyZV9jaGVja3N1bShjaGVja3N1bV9pZCk6CisgICAgICAgICAgICBpZiAibmFtZSIgaW4gc2VsZi5wYXJtOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUgPSAiJXMuJXNzdW0iICUgKHNlbGYucGFybVsibmFtZSJdLCBjaGVja3N1bV9pZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fbmFtZSA9ICIlc3N1bSIgJSBjaGVja3N1bV9pZAorCisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICIlc19uYW1lIiAlIGNoZWNrc3VtX2lkLCBjaGVja3N1bV9uYW1lKQorCisgICAgICAgICAgICBpZiBjaGVja3N1bV9uYW1lIGluIHNlbGYucGFybToKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9leHBlY3RlZCA9IHNlbGYucGFybVtjaGVja3N1bV9uYW1lXQorICAgICAgICAgICAgZWxpZiBzZWxmLnR5cGUgbm90IGluIFsiaHR0cCIsICJodHRwcyIsICJmdHAiLCAiZnRwcyIsICJzZnRwIiwgInMzIl06CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fZXhwZWN0ZWQgPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX2V4cGVjdGVkID0gZC5nZXRWYXJGbGFnKCJTUkNfVVJJIiwgY2hlY2tzdW1fbmFtZSkKKworICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAiJXNfZXhwZWN0ZWQiICUgY2hlY2tzdW1faWQsIGNoZWNrc3VtX2V4cGVjdGVkKQorCisgICAgICAgIGZvciBjaGVja3N1bV9pZCBpbiBDSEVDS1NVTV9MSVNUOgorICAgICAgICAgICAgY29uZmlndXJlX2NoZWNrc3VtKGNoZWNrc3VtX2lkKQorCiAgICAgICAgIHNlbGYuaWdub3JlX2NoZWNrc3VtcyA9IEZhbHNlCiAKICAgICAgICAgc2VsZi5uYW1lcyA9IHNlbGYucGFybS5nZXQoIm5hbWUiLCdkZWZhdWx0Jykuc3BsaXQoJywnKQpAQCAtMTM1MSw3ICsxMzYzLDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgIyBXZSBjYW5ub3QgY29tcHV0ZSBjaGVja3N1bXMgZm9yIGRpcmVjdG9yaWVzCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIodXJsZGF0YS5sb2NhbHBhdGgpID09IFRydWU6CisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIodXJsZGF0YS5sb2NhbHBhdGgpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHVybGRhdGEubG9jYWxwYXRoLmZpbmQoIioiKSAhPSAtMToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTM2NSw2ICsxMzc3LDE4IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmeSB0aGUgZG9uZXN0YW1wIGZpbGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBkKQorCisgICAgZGVmIHVwZGF0ZV9kb25lc3RhbXAoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlIHRoZSBkb25lc3RhbXAgZmlsZQorICAgICAgICAiIiIKKyAgICAgICAgdXBkYXRlX3N0YW1wKHVkLCBkKQorCiAgICAgZGVmIF9zdHJpcF9sZWFkaW5nX3NsYXNoZXMoc2VsZiwgcmVscGF0aCk6CiAgICAgICAgICIiIgogICAgICAgICBSZW1vdmUgbGVhZGluZyBzbGFzaCBhcyBvcy5wYXRoLmpvaW4gY2FuJ3QgY29wZQpAQCAtMTUzOSw2ICsxNTYzLDEyIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIHRyeV9taXJyb3JzKHNlbGYsIGZldGNoLCB1cmxkYXRhLCBkLCBtaXJyb3JzLCBjaGVjaz1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBUcnkgdG8gdXNlIGEgbWlycm9yCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gYm9vbCh0cnlfbWlycm9ycyhmZXRjaCwgZCwgdXJsZGF0YSwgbWlycm9ycywgY2hlY2spKQorCiAgICAgZGVmIGNoZWNrc3RhdHVzKHNlbGYsIGZldGNoLCB1cmxkYXRhLCBkKToKICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIHRoZSBzdGF0dXMgb2YgYSBVUkwKQEAgLTE1NjcsOCArMTU5Nyw3IEBACiAgICAgICAgIHJldHVybiBUcnVlLCBzdHIobGF0ZXN0X3JldikKIAogICAgIGRlZiBnZW5lcmF0ZV9yZXZpc2lvbl9rZXkoc2VsZiwgdWQsIGQsIG5hbWUpOgotICAgICAgICBrZXkgPSBzZWxmLl9yZXZpc2lvbl9rZXkodWQsIGQsIG5hbWUpCi0gICAgICAgIHJldHVybiAiJXMtJXMiICUgKGtleSwgZC5nZXRWYXIoIlBOIikgb3IgIiIpCisgICAgICAgIHJldHVybiBzZWxmLl9yZXZpc2lvbl9rZXkodWQsIGQsIG5hbWUpCiAKICAgICBkZWYgbGF0ZXN0X3ZlcnNpb25zdHJpbmcoc2VsZiwgdWQsIGQpOgogICAgICAgICAiIiIKQEAgLTE1NzgsNiArMTYwNywxNiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuICgnJywgJycpCiAKKyAgICBkZWYgZG9uZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIgorICAgICAgICBJcyB0aGUgZG93bmxvYWQgZG9uZSA/CisgICAgICAgICIiIgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgdWQubG9jYWxwYXRoLmZpbmQoIioiKSAhPSAtMToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCiBjbGFzcyBGZXRjaChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmxzLCBkLCBjYWNoZSA9IFRydWUsIGxvY2Fsb25seSA9IEZhbHNlLCBjb25uZWN0aW9uX2NhY2hlID0gTm9uZSk6CiAgICAgICAgIGlmIGxvY2Fsb25seSBhbmQgY2FjaGU6CkBAIC0xNTkyLDggKzE2MzEsMTEgQEAKIAogICAgICAgICBmbiA9IGQuZ2V0VmFyKCdGSUxFJykKICAgICAgICAgbWMgPSBkLmdldFZhcignX19CQk1VTFRJQ09ORklHJykgb3IgIiIKLSAgICAgICAgaWYgY2FjaGUgYW5kIGZuIGFuZCBtYyArIGZuIGluIHVybGRhdGFfY2FjaGU6Ci0gICAgICAgICAgICBzZWxmLnVkID0gdXJsZGF0YV9jYWNoZVttYyArIGZuICsgc3RyKGlkKGQpKV0KKyAgICAgICAga2V5ID0gTm9uZQorICAgICAgICBpZiBjYWNoZSBhbmQgZm46CisgICAgICAgICAgICBrZXkgPSBtYyArIGZuICsgc3RyKGlkKGQpKQorICAgICAgICBpZiBrZXkgaW4gdXJsZGF0YV9jYWNoZToKKyAgICAgICAgICAgIHNlbGYudWQgPSB1cmxkYXRhX2NhY2hlW2tleV0KIAogICAgICAgICBmb3IgdXJsIGluIHVybHM6CiAgICAgICAgICAgICBpZiB1cmwgbm90IGluIHNlbGYudWQ6CkBAIC0xNjA0LDggKzE2NDYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51ZFt1cmxdID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGlmIGZuIGFuZCBjYWNoZToKLSAgICAgICAgICAgIHVybGRhdGFfY2FjaGVbbWMgKyBmbiArIHN0cihpZChkKSldID0gc2VsZi51ZAorICAgICAgICBpZiBrZXk6CisgICAgICAgICAgICB1cmxkYXRhX2NhY2hlW2tleV0gPSBzZWxmLnVkCiAKICAgICBkZWYgbG9jYWxwYXRoKHNlbGYsIHVybCk6CiAgICAgICAgIGlmIHVybCBub3QgaW4gc2VsZi51cmxzOgpAQCAtMTY0MSw3ICsxNjgzLDcgQEAKICAgICAgICAgICAgIHVkID0gc2VsZi51ZFt1XQogICAgICAgICAgICAgdWQuc2V0dXBfbG9jYWxwYXRoKHNlbGYuZCkKICAgICAgICAgICAgIG0gPSB1ZC5tZXRob2QKLSAgICAgICAgICAgIGxvY2FscGF0aCA9ICIiCisgICAgICAgICAgICBkb25lID0gRmFsc2UKIAogICAgICAgICAgICAgaWYgdWQubG9ja2ZpbGU6CiAgICAgICAgICAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZSh1ZC5sb2NrZmlsZSkKQEAgLTE2NDksMjggKzE2OTEsMjggQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgbmV0d29yaykKIAotICAgICAgICAgICAgICAgIGlmIHZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkgYW5kIG5vdCBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpOgotICAgICAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSB1ZC5sb2NhbHBhdGgKKyAgICAgICAgICAgICAgICBpZiBtLnZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkgYW5kIG5vdCBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpOgorICAgICAgICAgICAgICAgICAgICBkb25lID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsaWYgbS50cnlfcHJlbWlycm9yKHVkLCBzZWxmLmQpOgogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlRyeWluZyBQUkVNSVJST1JTIikKICAgICAgICAgICAgICAgICAgICAgbWlycm9ycyA9IG1pcnJvcl9mcm9tX3N0cmluZyhzZWxmLmQuZ2V0VmFyKCdQUkVNSVJST1JTJykpCi0gICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICBpZiBsb2NhbHBhdGg6CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMpCisgICAgICAgICAgICAgICAgICAgIGlmIGRvbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlYXJseSBjaGVja3N1bSB2ZXJpZmljYXRpb24gc28gdGhhdCBpZiB0aGUgY2hlY2tzdW0gb2YgdGhlIHByZW1pcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGVudHMgbWlzbWF0Y2ggdGhlIGZldGNoZXIgY2FuIHN0aWxsIHRyeSB1cHN0cmVhbSBhbmQgbWlycm9ycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0udXBkYXRlX2RvbmVzdGFtcCh1ZCwgc2VsZi5kKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IENoZWNrc3VtRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQ2hlY2tzdW0gZmFpbHVyZSBlbmNvdW50ZXJlZCB3aXRoIHByZW1pcnJvciBkb3dubG9hZCBvZiAlcyAtIHdpbGwgYXR0ZW1wdCBvdGhlciBzb3VyY2VzLiIgJSB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCBzdHIoZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gRmFsc2UKIAogICAgICAgICAgICAgICAgIGlmIHByZW1pcnJvcm9ubHk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCAiMSIpCiAKICAgICAgICAgICAgICAgICBmaXJzdGVyciA9IE5vbmUKLSAgICAgICAgICAgICAgICB2ZXJpZmllZF9zdGFtcCA9IHZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbG9jYWxwYXRoIGFuZCAobm90IHZlcmlmaWVkX3N0YW1wIG9yIG0ubmVlZF91cGRhdGUodWQsIHNlbGYuZCkpOgorICAgICAgICAgICAgICAgIHZlcmlmaWVkX3N0YW1wID0gbS52ZXJpZnlfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgaWYgbm90IGRvbmUgYW5kIChub3QgdmVyaWZpZWRfc3RhbXAgb3IgbS5uZWVkX3VwZGF0ZSh1ZCwgc2VsZi5kKSk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0cnVzdGVkX25ldHdvcmsoc2VsZi5kLCB1ZC51cmwpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFVudHJ1c3RlZFVybCh1ZC51cmwpCkBAIC0xNjc4LDEwICsxNzIwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBtLmRvd25sb2FkKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG0sICJidWlsZF9taXJyb3JfZGF0YSIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uYnVpbGRfbWlycm9yX2RhdGEodWQsIHNlbGYuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHVkLmxvY2FscGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICMgZWFybHkgY2hlY2tzdW0gdmVyaWZ5LCBzbyB0aGF0IGlmIGNoZWNrc3VtIG1pc21hdGNoZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGZldGNoZXIgc3RpbGwgaGF2ZSBjaGFuY2UgdG8gZmV0Y2ggZnJvbSBtaXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgICAgICAgICAgbS51cGRhdGVfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCiAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5OZXR3b3JrQWNjZXNzOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTE3MDMsMTQgKzE3NDUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmNsZWFuKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlRyeWluZyBNSVJST1JTIikKICAgICAgICAgICAgICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignTUlSUk9SUycpKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gdHJ5X21pcnJvcnMoc2VsZiwgc2VsZi5kLCB1ZCwgbWlycm9ycykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMpCiAKLSAgICAgICAgICAgICAgICBpZiBub3QgbG9jYWxwYXRoIG9yICgobm90IG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkpIGFuZCBsb2NhbHBhdGguZmluZCgiKiIpID09IC0xKToKKyAgICAgICAgICAgICAgICBpZiBub3QgZG9uZSBvciBub3QgbS5kb25lKHVkLCBzZWxmLmQpOgogICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdGVycjoKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZmlyc3RlcnIpKQogICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJVbmFibGUgdG8gZmV0Y2ggVVJMIGZyb20gYW55IHNvdXJjZS4iLCB1KQogCi0gICAgICAgICAgICAgICAgdXBkYXRlX3N0YW1wKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgbS51cGRhdGVfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCiAKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBpbiBbZXJybm8uRVNUQUxFXToKQEAgLTE3NDEsMTQgKzE3ODMsMTQgQEAKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVGVzdGluZyBVUkwgJXMiLCB1KQogICAgICAgICAgICAgIyBGaXJzdCB0cnkgY2hlY2tpbmcgdXJpLCB1LCBmcm9tIFBSRU1JUlJPUlMKICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignUFJFTUlSUk9SUycpKQotICAgICAgICAgICAgcmV0ID0gdHJ5X21pcnJvcnMoc2VsZiwgc2VsZi5kLCB1ZCwgbWlycm9ycywgVHJ1ZSkKKyAgICAgICAgICAgIHJldCA9IG0udHJ5X21pcnJvcnMoc2VsZiwgdWQsIHNlbGYuZCwgbWlycm9ycywgVHJ1ZSkKICAgICAgICAgICAgIGlmIG5vdCByZXQ6CiAgICAgICAgICAgICAgICAgIyBOZXh0IHRyeSBjaGVja2luZyBmcm9tIHRoZSBvcmlnaW5hbCB1cmksIHUKICAgICAgICAgICAgICAgICByZXQgPSBtLmNoZWNrc3RhdHVzKHNlbGYsIHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICAgICAgIyBGaW5hbGx5LCB0cnkgY2hlY2tpbmcgdXJpLCB1LCBmcm9tIE1JUlJPUlMKICAgICAgICAgICAgICAgICAgICAgbWlycm9ycyA9IG1pcnJvcl9mcm9tX3N0cmluZyhzZWxmLmQuZ2V0VmFyKCdNSVJST1JTJykpCi0gICAgICAgICAgICAgICAgICAgIHJldCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIHJldCA9IG0udHJ5X21pcnJvcnMoc2VsZiwgdWQsIHNlbGYuZCwgbWlycm9ycywgVHJ1ZSkKIAogICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJVUkwgJXMgZG9lc24ndCB3b3JrIiAlIHUsIHUpCkBAIC0xODUzLDYgKzE4OTUsNyBAQAogZnJvbSAuIGltcG9ydCByZXBvCiBmcm9tIC4gaW1wb3J0IGNsZWFyY2FzZQogZnJvbSAuIGltcG9ydCBucG0KK2Zyb20gLiBpbXBvcnQgbnBtc3cKIAogbWV0aG9kcy5hcHBlbmQobG9jYWwuTG9jYWwoKSkKIG1ldGhvZHMuYXBwZW5kKHdnZXQuV2dldCgpKQpAQCAtMTg3MSwzICsxOTE0LDQgQEAKIG1ldGhvZHMuYXBwZW5kKHJlcG8uUmVwbygpKQogbWV0aG9kcy5hcHBlbmQoY2xlYXJjYXNlLkNsZWFyQ2FzZSgpKQogbWV0aG9kcy5hcHBlbmQobnBtLk5wbSgpKQorbWV0aG9kcy5hcHBlbmQobnBtc3cuTnBtU2hyaW5rV3JhcCgpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5CmluZGV4IGM1NmQ4NzUuLjU2NmFjZTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2J6ci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ienIucHkKQEAgLTE0LDggKzE0LDYgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IGJiCiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jbGVhcmNhc2UucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jbGVhcmNhc2UucHkKaW5kZXggZTI5MzRlZi4uNDlkN2FlMSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY2xlYXJjYXNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2NsZWFyY2FzZS5weQpAQCAtNDksNyArNDksNiBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBiYgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKQEAgLTIzOCw3ICsyMzcsNyBAQAogCiAgICAgICAgICMgQ2xlYW4gY2xlYXJjYXNlIG1ldGEtZGF0YSBiZWZvcmUgdGFyCiAKLSAgICAgICAgcnVuZmV0Y2hjbWQoJ3RhciAtY3pmICIlcyIgLicgJSAodWQubG9jYWxwYXRoKSwgZCwgY2xlYW51cCA9IFt1ZC5sb2NhbHBhdGhdKQorICAgICAgICBydW5mZXRjaGNtZCgndGFyIC1jemYgIiVzIiAuJyAlICh1ZC5sb2NhbHBhdGgpLCBkLCBjbGVhbnVwID0gW3VkLmxvY2FscGF0aF0sIHdvcmtkaXIgPSB1ZC52aWV3ZGlyKQogCiAgICAgICAgICMgQ2xlYW4gdXAgc28gd2UgY2FuIGNyZWF0ZSBhIG5ldyB2aWV3IG5leHQgdGltZQogICAgICAgICBzZWxmLmNsZWFuKHVkLCBkKTsKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weQppbmRleCAxYjM1YmE0Li4yOTEyM2E0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jdnMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY3ZzLnB5CkBAIC0xNCw3ICsxNCw2IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYgogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kLCBGZXRjaEVycm9yLCBNaXNzaW5nUGFyYW1ldGVyRXJyb3IsIGxvZ2dlcgogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKaW5kZXggZmE0MWIwNy4uNWIzNzkzYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQpAQCAtNTk0LDcgKzU5NCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gYSB1bmlxdWUga2V5IGZvciB0aGUgdXJsCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gImdpdDoiICsgdWQuaG9zdCArIHVkLnBhdGgucmVwbGFjZSgnLycsICcuJykgKyB1ZC51bnJlc29sdmVkcmV2W25hbWVdCisgICAgICAgICMgQ29sbGFwc2UgYWRqYWNlbnQgc2xhc2hlcworICAgICAgICBzbGFzaF9yZSA9IHJlLmNvbXBpbGUociIvKyIpCisgICAgICAgIHJldHVybiAiZ2l0OiIgKyB1ZC5ob3N0ICsgc2xhc2hfcmUuc3ViKCIuIiwgdWQucGF0aCkgKyB1ZC51bnJlc29sdmVkcmV2W25hbWVdCiAKICAgICBkZWYgX2xzcmVtb3RlKHNlbGYsIHVkLCBkLCBzZWFyY2gpOgogICAgICAgICAiIiIKQEAgLTY3MSw3ICs2NzMsNyBAQAogCiAgICAgICAgICAgICAjIHNlYXJjaCBmb3IgdmVyc2lvbiBpbiB0aGUgbGluZQogICAgICAgICAgICAgdGFnID0gdGFncmVnZXguc2VhcmNoKHRhZ19oZWFkKQotICAgICAgICAgICAgaWYgdGFnID09IE5vbmU6CisgICAgICAgICAgICBpZiB0YWcgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICB0YWcgPSB0YWcuZ3JvdXAoJ3B2ZXInKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQppbmRleCAxZDQ5N2RjLi44MGE4MDhkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQpAQCAtOCwxMSArOCw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIuZ2l0IGltcG9ydCBHaXQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBsb2dnZXIKIAogY2xhc3MgR2l0QU5ORVgoR2l0KToKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdWQsIGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQppbmRleCBjNjIyNzcxLi5lNzA4MzAwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQpAQCAtMjAsMTEgKzIwLDEyIEBACiBpbXBvcnQgb3MKIGltcG9ydCBiYgogaW1wb3J0IGNvcHkKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQogZnJvbSAgIGJiLmZldGNoMi5naXQgaW1wb3J0IEdpdAogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2gKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEJCRmV0Y2hFeGNlcHRpb24KIAogY2xhc3MgR2l0U00oR2l0KToKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdWQsIGQpOgpAQCAtMTMxLDcgKzEzMiw3IEBACiAgICAgICAgICAgICBsZC5zZXRWYXIoJ1NSQ1BWJywgZC5nZXRWYXIoJ1NSQ1BWJykpCiAgICAgICAgICAgICBsZC5zZXRWYXIoJ1NSQ1JFVl9GT1JNQVQnLCBtb2R1bGUpCiAKLSAgICAgICAgICAgIGZ1bmN0aW9uKHVkLCB1cmwsIG1vZHVsZSwgcGF0aHNbbW9kdWxlXSwgbGQpCisgICAgICAgICAgICBmdW5jdGlvbih1ZCwgdXJsLCBtb2R1bGUsIHBhdGhzW21vZHVsZV0sIHdvcmtkaXIsIGxkKQogCiAgICAgICAgIHJldHVybiBzdWJtb2R1bGVzICE9IFtdCiAKQEAgLTE1Myw3ICsxNTQsNyBAQAogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6Ci0gICAgICAgIGRlZiBkb3dubG9hZF9zdWJtb2R1bGUodWQsIHVybCwgbW9kdWxlLCBtb2RwYXRoLCBkKToKKyAgICAgICAgZGVmIGRvd25sb2FkX3N1Ym1vZHVsZSh1ZCwgdXJsLCBtb2R1bGUsIG1vZHBhdGgsIHdvcmtkaXIsIGQpOgogICAgICAgICAgICAgdXJsICs9ICI7YmFyZWNsb25lPTE7bm9icmFuY2g9MSIKIAogICAgICAgICAgICAgIyBJcyB0aGUgZm9sbG93aW5nIHN0aWxsIG5lZWRlZD8KQEAgLTE2NCwxNiArMTY1LDI1IEBACiAgICAgICAgICAgICAgICAgbmV3ZmV0Y2guZG93bmxvYWQoKQogICAgICAgICAgICAgICAgICMgRHJvcCBhIG51Z2dldCB0byBhZGQgZWFjaCBvZiB0aGUgc3JjcmV2cyB3ZSd2ZSBmZXRjaGVkICh1c2VkIGJ5IG5lZWRfdXBkYXRlKQogICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyBjb25maWcgLS1hZGQgYml0YmFrZS5zcmNyZXYgJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1ZC5iYXNlY21kLCB1ZC5yZXZpc2lvbnNbdWQubmFtZXNbMF1dKSwgZCwgd29ya2Rpcj11ZC5jbG9uZWRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWQuYmFzZWNtZCwgdWQucmV2aXNpb25zW3VkLm5hbWVzWzBdXSksIGQsIHdvcmtkaXI9d29ya2RpcikKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ2dpdHNtOiBzdWJtb2R1bGUgZG93bmxvYWQgZmFpbGVkOiAlcyAlcycgJSAodHlwZShlKS5fX25hbWVfXywgc3RyKGUpKSkKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIEdpdC5kb3dubG9hZChzZWxmLCB1ZCwgZCkKLSAgICAgICAgc2VsZi5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHVkLmNsb25lZGlyLCBkb3dubG9hZF9zdWJtb2R1bGUsIGQpCisKKyAgICAgICAgIyBJZiB3ZSdyZSB1c2luZyBhIHNoYWxsb3cgbWlycm9yIHRhcmJhbGwgaXQgbmVlZHMgdG8gYmUgdW5wYWNrZWQKKyAgICAgICAgIyB0ZW1wb3JhcmlseSBzbyB0aGF0IHdlIGNhbiBleGFtaW5lIHRoZSAuZ2l0bW9kdWxlcyBmaWxlCisgICAgICAgIGlmIHVkLnNoYWxsb3cgYW5kIG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KSBhbmQgc2VsZi5uZWVkX3VwZGF0ZSh1ZCwgZCk6CisgICAgICAgICAgICB0bXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kLmdldFZhcigiRExfRElSIikpCisgICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC14emYgJXMiICUgdWQuZnVsbHNoYWxsb3csIGQsIHdvcmtkaXI9dG1wZGlyKQorICAgICAgICAgICAgc2VsZi5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHRtcGRpciwgZG93bmxvYWRfc3VibW9kdWxlLCBkKQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3Nfc3VibW9kdWxlcyh1ZCwgdWQuY2xvbmVkaXIsIGRvd25sb2FkX3N1Ym1vZHVsZSwgZCkKIAogICAgIGRlZiB1bnBhY2soc2VsZiwgdWQsIGRlc3RkaXIsIGQpOgotICAgICAgICBkZWYgdW5wYWNrX3N1Ym1vZHVsZXModWQsIHVybCwgbW9kdWxlLCBtb2RwYXRoLCBkKToKKyAgICAgICAgZGVmIHVucGFja19zdWJtb2R1bGVzKHVkLCB1cmwsIG1vZHVsZSwgbW9kcGF0aCwgd29ya2RpciwgZCk6CiAgICAgICAgICAgICB1cmwgKz0gIjtiYXJlY2xvbmU9MTtub2JyYW5jaD0xIgogCiAgICAgICAgICAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgd2UgY2xvbmUgb3ZlciB0aGUgYmFyZSBzdWJtb2R1bGVzLi4uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CmluZGV4IGUyMTExNWQuLjhmNTAzNzAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CkBAIC0xMyw4ICsxMyw2IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYgogaW1wb3J0IGVycm5vCiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weQppbmRleCA5NzAwZTYxLi40Nzg5ODUwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CkBAIC0xLDMwMSArMSwyOTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIFNhdm9pci1GYWlyZSBMaW51eAogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAiIiIKLUJpdEJha2UgJ0ZldGNoJyBOUE0gaW1wbGVtZW50YXRpb24KK0JpdEJha2UgJ0ZldGNoJyBucG0gaW1wbGVtZW50YXRpb24KIAotVGhlIE5QTSBmZXRjaGVyIGlzIHVzZWQgdG8gcmV0cmlldmUgZmlsZXMgZnJvbSB0aGUgbnBtanMgcmVwb3NpdG9yeQorbnBtIGZldGNoZXIgc3VwcG9ydCB0aGUgU1JDX1VSSSB3aXRoIGZvcm1hdCBvZjoKK1NSQ19VUkkgPSAibnBtOi8vc29tZS5yZWdpc3RyeS51cmw7T3B0aW9uQT14eHg7T3B0aW9uQj14eHg7Li4uIgogCi1Vc2FnZSBpbiB0aGUgcmVjaXBlOgorU3VwcG9ydGVkIFNSQ19VUkkgb3B0aW9ucyBhcmU6CiAKLSAgICBTUkNfVVJJID0gIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy87bmFtZT0ke1BOfTt2ZXJzaW9uPSR7UFZ9IgotICAgIFN1cG9ydGVkIFNSQ19VUkkgb3B0aW9ucyBhcmU6CistIHBhY2thZ2UKKyAgIFRoZSBucG0gcGFja2FnZSBuYW1lLiBUaGlzIGlzIGEgbWFuZGF0b3J5IHBhcmFtZXRlci4KIAotICAgIC0gbmFtZQotICAgIC0gdmVyc2lvbgorLSB2ZXJzaW9uCisgICAgVGhlIG5wbSBwYWNrYWdlIHZlcnNpb24uIFRoaXMgaXMgYSBtYW5kYXRvcnkgcGFyYW1ldGVyLgogCi0gICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnLyR7UE59Ly0vJHtQTn0tJHtQVn0udGd6ICB3b3VsZCBiZWNvbWUgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9JHtQTn07dmVyc2lvbj0ke1BWfQotICAgIFRoZSBmZXRjaGVyIGFsbCB0cmlnZ2VycyBvZmYgdGhlIGV4aXN0ZW5jZSBvZiB1ZC5sb2NhbHBhdGguIElmIHRoYXQgZXhpc3RzIGFuZCBoYXMgdGhlICIuZG9uZSIgc3RhbXAsIGl0cyBhc3N1bWVkIHRoZSBmZXRjaCBpcyBnb29kL2RvbmUKKy0gZG93bmxvYWRmaWxlbmFtZQorICAgIFNwZWNpZmllcyB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIHN0b3JpbmcgdGhlIGRvd25sb2FkZWQgZmlsZS4KIAorLSBkZXN0c3VmZml4CisgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgdG8gdXNlIHRvIHVucGFjayB0aGUgcGFja2FnZSAoZGVmYXVsdDogbnBtKS4KICIiIgogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIucmVxdWVzdCwgdXJsbGliLnBhcnNlLCB1cmxsaWIuZXJyb3IKK2ltcG9ydCBiYXNlNjQKIGltcG9ydCBqc29uCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHNpZ25hbAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaGxleAoraW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgYmIKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBDaGVja3N1bUVycm9yCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgbG9nZ2VyCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBVbnBhY2tFcnJvcgotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgUGFyYW1ldGVyRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaAorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IE1pc3NpbmdQYXJhbWV0ZXJFcnJvcgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFBhcmFtZXRlckVycm9yCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgVVJJCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgY2hlY2tfbmV0d29ya19hY2Nlc3MKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAorZnJvbSBiYi51dGlscyBpbXBvcnQgaXNfc2VtdmVyCiAKLWRlZiBzdWJwcm9jZXNzX3NldHVwKCk6Ci0gICAgIyBQeXRob24gaW5zdGFsbHMgYSBTSUdQSVBFIGhhbmRsZXIgYnkgZGVmYXVsdC4gVGhpcyBpcyB1c3VhbGx5IG5vdCB3aGF0Ci0gICAgIyBub24tUHl0aG9uIHN1YnByb2Nlc3NlcyBleHBlY3QuCi0gICAgIyBTSUdQSVBFIGVycm9ycyBhcmUga25vd24gaXNzdWVzIHdpdGggZ3ppcC9iYXNoCi0gICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHUElQRSwgc2lnbmFsLlNJR19ERkwpCitkZWYgbnBtX3BhY2thZ2UocGFja2FnZSk6CisgICAgIiIiQ29udmVydCB0aGUgbnBtIHBhY2thZ2UgbmFtZSB0byByZW1vdmUgdW5zdXBwb3J0ZWQgY2hhcmFjdGVyIiIiCisgICAgIyBTY29wZWQgcGFja2FnZSBuYW1lcyAod2l0aCB0aGUgQCkgdXNlIHRoZSBzYW1lIG5hbWluZyBjb252ZW50aW9uCisgICAgIyBhcyB0aGUgJ25wbSBwYWNrJyBjb21tYW5kLgorICAgIGlmIHBhY2thZ2Uuc3RhcnRzd2l0aCgiQCIpOgorICAgICAgICByZXR1cm4gcmUuc3ViKCIvIiwgIi0iLCBwYWNrYWdlWzE6XSkKKyAgICByZXR1cm4gcGFja2FnZQorCitkZWYgbnBtX2ZpbGVuYW1lKHBhY2thZ2UsIHZlcnNpb24pOgorICAgICIiIkdldCB0aGUgZmlsZW5hbWUgb2YgYSBucG0gcGFja2FnZSIiIgorICAgIHJldHVybiBucG1fcGFja2FnZShwYWNrYWdlKSArICItIiArIHZlcnNpb24gKyAiLnRneiIKKworZGVmIG5wbV9sb2NhbGZpbGUocGFja2FnZSwgdmVyc2lvbik6CisgICAgIiIiR2V0IHRoZSBsb2NhbCBmaWxlbmFtZSBvZiBhIG5wbSBwYWNrYWdlIiIiCisgICAgcmV0dXJuIG9zLnBhdGguam9pbigibnBtMiIsIG5wbV9maWxlbmFtZShwYWNrYWdlLCB2ZXJzaW9uKSkKKworZGVmIG5wbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KToKKyAgICAiIiIKKyAgICBHZXQgdGhlIGNoZWNrc3VtIG5hbWUgYW5kIGV4cGVjdGVkIHZhbHVlIGZyb20gdGhlIHN1YnJlc291cmNlIGludGVncml0eQorICAgICAgICBodHRwczovL3d3dy53My5vcmcvVFIvU1JJLworICAgICIiIgorICAgIGFsZ28sIHZhbHVlID0gaW50ZWdyaXR5LnNwbGl0KCItIiwgbWF4c3BsaXQ9MSkKKyAgICByZXR1cm4gIiVzc3VtIiAlIGFsZ28sIGJhc2U2NC5iNjRkZWNvZGUodmFsdWUpLmhleCgpCisKK2RlZiBucG1fdW5wYWNrKHRhcmJhbGwsIGRlc3RkaXIsIGQpOgorICAgICIiIlVucGFjayBhIG5wbSB0YXJiYWxsIiIiCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgY21kID0gInRhciAtLWV4dHJhY3QgLS1nemlwIC0tZmlsZT0lcyIgJSBzaGxleC5xdW90ZSh0YXJiYWxsKQorICAgIGNtZCArPSAiIC0tbm8tc2FtZS1vd25lciIKKyAgICBjbWQgKz0gIiAtLXN0cmlwLWNvbXBvbmVudHM9MSIKKyAgICBydW5mZXRjaGNtZChjbWQsIGQsIHdvcmtkaXI9ZGVzdGRpcikKKworY2xhc3MgTnBtRW52aXJvbm1lbnQob2JqZWN0KToKKyAgICAiIiIKKyAgICBVc2luZyBhIG5wbSBjb25maWcgZmlsZSBzZWVtcyBtb3JlIHJlbGlhYmxlIHRoYW4gdXNpbmcgY2xpIGFyZ3VtZW50cy4KKyAgICBUaGlzIGNsYXNzIGFsbG93cyB0byBjcmVhdGUgYSBjb250cm9sbGVkIGVudmlyb25tZW50IGZvciBucG0gY29tbWFuZHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGNvbmZpZ3M9Tm9uZSk6CisgICAgICAgIHNlbGYuZCA9IGQKKyAgICAgICAgc2VsZi5jb25maWdzID0gY29uZmlncworCisgICAgZGVmIHJ1bihzZWxmLCBjbWQsIGFyZ3M9Tm9uZSwgY29uZmlncz1Ob25lLCB3b3JrZGlyPU5vbmUpOgorICAgICAgICAiIiJSdW4gbnBtIGNvbW1hbmQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50IiIiCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICAgICAgZCA9IGJiLmRhdGEuY3JlYXRlQ29weShzZWxmLmQpCisgICAgICAgICAgICBkLnNldFZhcigiSE9NRSIsIHRtcGRpcikKKworICAgICAgICAgICAgY2ZnZmlsZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICJucG1yYyIpCisKKyAgICAgICAgICAgIGlmIG5vdCB3b3JrZGlyOgorICAgICAgICAgICAgICAgIHdvcmtkaXIgPSB0bXBkaXIKKworICAgICAgICAgICAgZGVmIF9ydW4oY21kKToKKyAgICAgICAgICAgICAgICBjbWQgPSAiTlBNX0NPTkZJR19VU0VSQ09ORklHPSVzICIgJSBjZmdmaWxlICsgY21kCisgICAgICAgICAgICAgICAgY21kID0gIk5QTV9DT05GSUdfR0xPQkFMQ09ORklHPSVzICIgJSBjZmdmaWxlICsgY21kCisgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bmZldGNoY21kKGNtZCwgZCwgd29ya2Rpcj13b3JrZGlyKQorCisgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZ3M6CisgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5jb25maWdzOgorICAgICAgICAgICAgICAgICAgICBfcnVuKCJucG0gY29uZmlnIHNldCAlcyAlcyIgJSAoa2V5LCBzaGxleC5xdW90ZSh2YWx1ZSkpKQorCisgICAgICAgICAgICBpZiBjb25maWdzOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvbmZpZ3M6CisgICAgICAgICAgICAgICAgICAgIF9ydW4oIm5wbSBjb25maWcgc2V0ICVzICVzIiAlIChrZXksIHNobGV4LnF1b3RlKHZhbHVlKSkpCisKKyAgICAgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXJnczoKKyAgICAgICAgICAgICAgICAgICAgY21kICs9ICIgLS0lcz0lcyIgJSAoa2V5LCBzaGxleC5xdW90ZSh2YWx1ZSkpCisKKyAgICAgICAgICAgIHJldHVybiBfcnVuKGNtZCkKIAogY2xhc3MgTnBtKEZldGNoTWV0aG9kKToKLQotICAgICIiIkNsYXNzIHRvIGZldGNoIHVybHMgdmlhICducG0nIiIiCi0gICAgZGVmIGluaXQoc2VsZiwgZCk6Ci0gICAgICAgIHBhc3MKKyAgICAiIiJDbGFzcyB0byBmZXRjaCBhIHBhY2thZ2UgZnJvbSBhIG5wbSByZWdpc3RyeSIiIgogCiAgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKLSAgICAgICAgIiIiCi0gICAgICAgIENoZWNrIHRvIHNlZSBpZiBhIGdpdmVuIHVybCBjYW4gYmUgZmV0Y2hlZCB3aXRoIG5wbQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHVkLnR5cGUgaW4gWyducG0nXQotCi0gICAgZGVmIGRlYnVnKHNlbGYsIG1zZyk6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiTnBtRmV0Y2g6ICVzIiwgbXNnKQotCi0gICAgZGVmIGNsZWFuKHNlbGYsIHVkLCBkKToKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJDYWxsaW5nIGNsZWFudXAgJXMiICUgdWQucGtnbmFtZSkKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKHVkLmxvY2FscGF0aCwgRmFsc2UpCi0gICAgICAgIGJiLnV0aWxzLnJlbW92ZSh1ZC5wa2dkYXRhZGlyLCBUcnVlKQotICAgICAgICBiYi51dGlscy5yZW1vdmUodWQuZnVsbG1pcnJvciwgRmFsc2UpCisgICAgICAgICIiIkNoZWNrIGlmIGEgZ2l2ZW4gdXJsIGNhbiBiZSBmZXRjaGVkIHdpdGggbnBtIiIiCisgICAgICAgIHJldHVybiB1ZC50eXBlIGluIFsibnBtIl0KIAogICAgIGRlZiB1cmxkYXRhX2luaXQoc2VsZiwgdWQsIGQpOgotICAgICAgICAiIiIKLSAgICAgICAgaW5pdCBOUE0gc3BlY2lmaWMgdmFyaWFibGUgd2l0aGluIHVybCBkYXRhCi0gICAgICAgICIiIgotICAgICAgICBpZiAnZG93bmxvYWRmaWxlbmFtZScgaW4gdWQucGFybToKLSAgICAgICAgICAgIHVkLmJhc2VuYW1lID0gdWQucGFybVsnZG93bmxvYWRmaWxlbmFtZSddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1ZC5iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodWQucGF0aCkKKyAgICAgICAgIiIiSW5pdCBucG0gc3BlY2lmaWMgdmFyaWFibGVzIHdpdGhpbiB1cmwgZGF0YSIiIgorICAgICAgICB1ZC5wYWNrYWdlID0gTm9uZQorICAgICAgICB1ZC52ZXJzaW9uID0gTm9uZQorICAgICAgICB1ZC5yZWdpc3RyeSA9IE5vbmUKIAotICAgICAgICAjIGNhbid0IGNhbGwgaXQgdWQubmFtZSBvdGhlcndpc2UgZmV0Y2hlciBiYXNlIGNsYXNzIHdpbGwgc3RhcnQgZG9pbmcgc2hhMXN0dWZmCi0gICAgICAgICMgVE9ETzogZmluZCBhIHdheSB0byBnZXQgYW4gc2hhMS9zaGEyNTYgbWFuaWZlc3Qgb2YgcGtnICYgYWxsIGRlcHMKLSAgICAgICAgdWQucGtnbmFtZSA9IHVkLnBhcm0uZ2V0KCJuYW1lIiwgTm9uZSkKLSAgICAgICAgaWYgbm90IHVkLnBrZ25hbWU6Ci0gICAgICAgICAgICByYWlzZSBQYXJhbWV0ZXJFcnJvcigiTlBNIGZldGNoZXIgcmVxdWlyZXMgYSBuYW1lIHBhcmFtZXRlciIsIHVkLnVybCkKLSAgICAgICAgdWQudmVyc2lvbiA9IHVkLnBhcm0uZ2V0KCJ2ZXJzaW9uIiwgTm9uZSkKKyAgICAgICAgIyBHZXQgdGhlICdwYWNrYWdlJyBwYXJhbWV0ZXIKKyAgICAgICAgaWYgInBhY2thZ2UiIGluIHVkLnBhcm06CisgICAgICAgICAgICB1ZC5wYWNrYWdlID0gdWQucGFybS5nZXQoInBhY2thZ2UiKQorCisgICAgICAgIGlmIG5vdCB1ZC5wYWNrYWdlOgorICAgICAgICAgICAgcmFpc2UgTWlzc2luZ1BhcmFtZXRlckVycm9yKCJQYXJhbWV0ZXIgJ3BhY2thZ2UnIHJlcXVpcmVkIiwgdWQudXJsKQorCisgICAgICAgICMgR2V0IHRoZSAndmVyc2lvbicgcGFyYW1ldGVyCisgICAgICAgIGlmICJ2ZXJzaW9uIiBpbiB1ZC5wYXJtOgorICAgICAgICAgICAgdWQudmVyc2lvbiA9IHVkLnBhcm0uZ2V0KCJ2ZXJzaW9uIikKKwogICAgICAgICBpZiBub3QgdWQudmVyc2lvbjoKLSAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJOUE0gZmV0Y2hlciByZXF1aXJlcyBhIHZlcnNpb24gcGFyYW1ldGVyIiwgdWQudXJsKQotICAgICAgICB1ZC5iYm5wbW1hbmlmZXN0ID0gIiVzLSVzLmRlcHMuanNvbiIgJSAodWQucGtnbmFtZSwgdWQudmVyc2lvbikKLSAgICAgICAgdWQuYmJucG1tYW5pZmVzdCA9IHVkLmJibnBtbWFuaWZlc3QucmVwbGFjZSgnLycsICctJykKLSAgICAgICAgdWQucmVnaXN0cnkgPSAiaHR0cDovLyVzIiAlICh1ZC51cmwucmVwbGFjZSgnbnBtOi8vJywgJycsIDEpLnNwbGl0KCc7JykpWzBdCi0gICAgICAgIHByZWZpeGRpciA9ICJucG0vJXMiICUgdWQucGtnbmFtZQotICAgICAgICB1ZC5wa2dkYXRhZGlyID0gZC5leHBhbmQoIiR7RExfRElSfS8lcyIgJSBwcmVmaXhkaXIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5wa2dkYXRhZGlyKToKLSAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5wa2dkYXRhZGlyKQotICAgICAgICB1ZC5sb2NhbHBhdGggPSBkLmV4cGFuZCgiJHtETF9ESVJ9L25wbS8lcyIgJSB1ZC5iYm5wbW1hbmlmZXN0KQorICAgICAgICAgICAgcmFpc2UgTWlzc2luZ1BhcmFtZXRlckVycm9yKCJQYXJhbWV0ZXIgJ3ZlcnNpb24nIHJlcXVpcmVkIiwgdWQudXJsKQogCi0gICAgICAgIHNlbGYuYmFzZWNtZCA9IGQuZ2V0VmFyKCJGRVRDSENNRF93Z2V0Iikgb3IgIi91c3IvYmluL2VudiB3Z2V0IC1PIC10IDIgLVQgMzAgLW52IC0tcGFzc2l2ZS1mdHAgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAiCi0gICAgICAgIHVkLnByZWZpeGRpciA9IHByZWZpeGRpcgorICAgICAgICBpZiBub3QgaXNfc2VtdmVyKHVkLnZlcnNpb24pIGFuZCBub3QgdWQudmVyc2lvbiA9PSAibGF0ZXN0IjoKKyAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkICd2ZXJzaW9uJyBwYXJhbWV0ZXIiLCB1ZC51cmwpCiAKLSAgICAgICAgdWQud3JpdGVfdGFyYmFsbHMgPSAoKGQuZ2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiKSBvciAiMCIpICE9ICIwIikKLSAgICAgICAgbWlycm9ydGFyYmFsbCA9ICducG1fJXMtJXMudGFyLnh6JyAlICh1ZC5wa2duYW1lLCB1ZC52ZXJzaW9uKQotICAgICAgICBtaXJyb3J0YXJiYWxsID0gbWlycm9ydGFyYmFsbC5yZXBsYWNlKCcvJywgJy0nKQotICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbWlycm9ydGFyYmFsbCkKLSAgICAgICAgdWQubWlycm9ydGFyYmFsbHMgPSBbbWlycm9ydGFyYmFsbF0KKyAgICAgICAgIyBFeHRyYWN0IHRoZSAncmVnaXN0cnknIHBhcnQgb2YgdGhlIHVybAorICAgICAgICB1ZC5yZWdpc3RyeSA9IHJlLnN1YihyIl5ucG06Ly8iLCAiaHR0cDovLyIsIHVkLnVybC5zcGxpdCgiOyIpWzBdKQorCisgICAgICAgICMgVXNpbmcgdGhlICdkb3dubG9hZGZpbGVuYW1lJyBwYXJhbWV0ZXIgYXMgbG9jYWwgZmlsZW5hbWUKKyAgICAgICAgIyBvciB0aGUgbnBtIHBhY2thZ2UgbmFtZS4KKyAgICAgICAgaWYgImRvd25sb2FkZmlsZW5hbWUiIGluIHVkLnBhcm06CisgICAgICAgICAgICB1ZC5sb2NhbGZpbGUgPSBkLmV4cGFuZCh1ZC5wYXJtWyJkb3dubG9hZGZpbGVuYW1lIl0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1ZC5sb2NhbGZpbGUgPSBucG1fbG9jYWxmaWxlKHVkLnBhY2thZ2UsIHVkLnZlcnNpb24pCisKKyAgICAgICAgIyBHZXQgdGhlIGJhc2UgJ25wbScgY29tbWFuZAorICAgICAgICB1ZC5iYXNlY21kID0gZC5nZXRWYXIoIkZFVENIQ01EX25wbSIpIG9yICJucG0iCisKKyAgICAgICAgIyBUaGlzIGZldGNoZXIgcmVzb2x2ZXMgYSBVUkkgZnJvbSBhIG5wbSBwYWNrYWdlIG5hbWUgYW5kIHZlcnNpb24gYW5kCisgICAgICAgICMgdGhlbiBmb3J3YXJkcyBpdCB0byBhIHByb3h5IGZldGNoZXIuIEEgcmVzb2x2ZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICAgICMgcmVzb2x2ZWQgVVJJIGlzIGNyZWF0ZWQgdG8gYXZvaWQgdW53YW50ZWQgbmV0d29yayBhY2Nlc3MgKGlmIHRoZSBmaWxlCisgICAgICAgICMgYWxyZWFkeSBleGlzdHMpLiBUaGUgbWFuYWdlbWVudCBvZiB0aGUgZG9uZXN0YW1wIGZpbGUsIHRoZSBsb2NrZmlsZQorICAgICAgICAjIGFuZCB0aGUgY2hlY2tzdW1zIGFyZSBmb3J3YXJkZWQgdG8gdGhlIHByb3h5IGZldGNoZXIuCisgICAgICAgIHVkLnByb3h5ID0gTm9uZQorICAgICAgICB1ZC5uZWVkZG9uZXN0YW1wID0gRmFsc2UKKyAgICAgICAgdWQucmVzb2x2ZWZpbGUgPSBzZWxmLmxvY2FscGF0aCh1ZCwgZCkgKyAiLnJlc29sdmVkIgorCisgICAgZGVmIF9yZXNvbHZlX3Byb3h5X3VybChzZWxmLCB1ZCwgZCk6CisgICAgICAgIGRlZiBfbnBtX3ZpZXcoKToKKyAgICAgICAgICAgIGNvbmZpZ3MgPSBbXQorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJqc29uIiwgInRydWUiKSkKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicmVnaXN0cnkiLCB1ZC5yZWdpc3RyeSkpCisgICAgICAgICAgICBwa2d2ZXIgPSBzaGxleC5xdW90ZSh1ZC5wYWNrYWdlICsgIkAiICsgdWQudmVyc2lvbikKKyAgICAgICAgICAgIGNtZCA9IHVkLmJhc2VjbWQgKyAiIHZpZXcgJXMiICUgcGtndmVyCisgICAgICAgICAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkKQorICAgICAgICAgICAgY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgY21kLCB1ZC5yZWdpc3RyeSkKKyAgICAgICAgICAgIHZpZXdfc3RyaW5nID0gZW52LnJ1bihjbWQsIGNvbmZpZ3M9Y29uZmlncykKKworICAgICAgICAgICAgaWYgbm90IHZpZXdfc3RyaW5nOgorICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoIlVuYXZhaWxhYmxlIHBhY2thZ2UgJXMiICUgcGtndmVyLCB1ZC51cmwpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2aWV3ID0ganNvbi5sb2Fkcyh2aWV3X3N0cmluZykKKworICAgICAgICAgICAgICAgIGVycm9yID0gdmlldy5nZXQoImVycm9yIikKKyAgICAgICAgICAgICAgICBpZiBlcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcihlcnJvci5nZXQoInN1bW1hcnkiKSwgdWQudXJsKQorCisgICAgICAgICAgICAgICAgaWYgdWQudmVyc2lvbiA9PSAibGF0ZXN0IjoKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIG5wbSBwYWNrYWdlICVzIGlzIHVzaW5nIHRoZSBsYXRlc3QgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24gYXZhaWxhYmxlLiBUaGlzIGNvdWxkIGxlYWQgdG8gIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1yZXByb2R1Y2libGUgYnVpbGRzLiIgJSBwa2d2ZXIpCisgICAgICAgICAgICAgICAgZWxpZiB1ZC52ZXJzaW9uICE9IHZpZXcuZ2V0KCJ2ZXJzaW9uIik6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkICd2ZXJzaW9uJyBwYXJhbWV0ZXIiLCB1ZC51cmwpCisKKyAgICAgICAgICAgICAgICByZXR1cm4gdmlldworCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCB2aWV3IGZyb20gbnBtOiAlcyIgJSBzdHIoZSksIHVkLnVybCkKKworICAgICAgICBkZWYgX2dldF91cmwodmlldyk6CisgICAgICAgICAgICB0YXJiYWxsX3VybCA9IHZpZXcuZ2V0KCJkaXN0Iiwge30pLmdldCgidGFyYmFsbCIpCisKKyAgICAgICAgICAgIGlmIHRhcmJhbGxfdXJsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCAnZGlzdC50YXJiYWxsJyBpbiB2aWV3IiwgdWQudXJsKQorCisgICAgICAgICAgICB1cmkgPSBVUkkodGFyYmFsbF91cmwpCisgICAgICAgICAgICB1cmkucGFyYW1zWyJkb3dubG9hZGZpbGVuYW1lIl0gPSB1ZC5sb2NhbGZpbGUKKworICAgICAgICAgICAgaW50ZWdyaXR5ID0gdmlldy5nZXQoImRpc3QiLCB7fSkuZ2V0KCJpbnRlZ3JpdHkiKQorICAgICAgICAgICAgc2hhc3VtID0gdmlldy5nZXQoImRpc3QiLCB7fSkuZ2V0KCJzaGFzdW0iKQorCisgICAgICAgICAgICBpZiBpbnRlZ3JpdHkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fbmFtZSwgY2hlY2tzdW1fZXhwZWN0ZWQgPSBucG1faW50ZWdyaXR5KGludGVncml0eSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zW2NoZWNrc3VtX25hbWVdID0gY2hlY2tzdW1fZXhwZWN0ZWQKKyAgICAgICAgICAgIGVsaWYgc2hhc3VtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbInNoYTFzdW0iXSA9IHNoYXN1bQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJJbnZhbGlkICdkaXN0LmludGVncml0eScgaW4gdmlldyIsIHVkLnVybCkKKworICAgICAgICAgICAgcmV0dXJuIHN0cih1cmkpCisKKyAgICAgICAgdXJsID0gX2dldF91cmwoX25wbV92aWV3KCkpCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZSh1ZC5yZXNvbHZlZmlsZSkpCisgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1cmwpCisKKyAgICBkZWYgX3NldHVwX3Byb3h5KHNlbGYsIHVkLCBkKToKKyAgICAgICAgaWYgdWQucHJveHkgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5yZXNvbHZlZmlsZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVzb2x2ZV9wcm94eV91cmwodWQsIGQpCisKKyAgICAgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHVybCA9IGYucmVhZCgpCisKKyAgICAgICAgICAgICMgQXZvaWQgY29uZmxpY3RzIGJldHdlZW4gdGhlIGVudmlyb25tZW50IGRhdGEgYW5kOgorICAgICAgICAgICAgIyAtIHRoZSBwcm94eSB1cmwgY2hlY2tzdW0KKyAgICAgICAgICAgIGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgICAgIGRhdGEuZGVsVmFyRmxhZ3MoIlNSQ19VUkkiKQorICAgICAgICAgICAgdWQucHJveHkgPSBGZXRjaChbdXJsXSwgZGF0YSkKKworICAgIGRlZiBfZ2V0X3Byb3h5X21ldGhvZChzZWxmLCB1ZCwgZCk6CisgICAgICAgIHNlbGYuX3NldHVwX3Byb3h5KHVkLCBkKQorICAgICAgICBwcm94eV91cmwgPSB1ZC5wcm94eS51cmxzWzBdCisgICAgICAgIHByb3h5X3VkID0gdWQucHJveHkudWRbcHJveHlfdXJsXQorICAgICAgICBwcm94eV9kID0gdWQucHJveHkuZAorICAgICAgICBwcm94eV91ZC5zZXR1cF9sb2NhbHBhdGgocHJveHlfZCkKKyAgICAgICAgcmV0dXJuIHByb3h5X3VkLm1ldGhvZCwgcHJveHlfdWQsIHByb3h5X2QKKworICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBwcm94eV9tLCBwcm94eV91ZCwgcHJveHlfZCA9IHNlbGYuX2dldF9wcm94eV9tZXRob2QodWQsIGQpCisgICAgICAgIHJldHVybiBwcm94eV9tLnZlcmlmeV9kb25lc3RhbXAocHJveHlfdWQsIHByb3h5X2QpCisKKyAgICBkZWYgdXBkYXRlX2RvbmVzdGFtcChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIlVwZGF0ZSB0aGUgZG9uZXN0YW1wIGZpbGUiIiIKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICBwcm94eV9tLnVwZGF0ZV9kb25lc3RhbXAocHJveHlfdWQsIHByb3h5X2QpCiAKICAgICBkZWYgbmVlZF91cGRhdGUoc2VsZiwgdWQsIGQpOgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICIiIkZvcmNlIGEgZmV0Y2gsIGV2ZW4gaWYgbG9jYWxwYXRoIGV4aXN0cyA/IiIiCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5yZXNvbHZlZmlsZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiB1ZC52ZXJzaW9uID09ICJsYXRlc3QiOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICByZXR1cm4gcHJveHlfbS5uZWVkX3VwZGF0ZShwcm94eV91ZCwgcHJveHlfZCkKIAotICAgIGRlZiBfcnVucGFjayhzZWxmLCB1ZCwgZCwgcGtnZnVsbG5hbWU6IHN0ciwgcXVpZXQ9RmFsc2UpIC0+IHN0cjoKLSAgICAgICAgIiIiCi0gICAgICAgIFJ1bnMgbnBtIHBhY2sgb24gYSBmdWxsIHBhY2thZ2UgbmFtZS4KLSAgICAgICAgUmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGRvd25sb2FkZWQgcGFja2FnZQotICAgICAgICAiIiIKLSAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHBrZ2Z1bGxuYW1lLCB1ZC5yZWdpc3RyeSkKLSAgICAgICAgZGxkaXIgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgZGxkaXIgPSBvcy5wYXRoLmpvaW4oZGxkaXIsIHVkLnByZWZpeGRpcikKLQotICAgICAgICBjb21tYW5kID0gIm5wbSBwYWNrIHt9IC0tcmVnaXN0cnkge30iLmZvcm1hdChwa2dmdWxsbmFtZSwgdWQucmVnaXN0cnkpCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiRmV0Y2hpbmcge30gdXNpbmcgY29tbWFuZCAne30nIGluIHt9Ii5mb3JtYXQocGtnZnVsbG5hbWUsIGNvbW1hbmQsIGRsZGlyKSkKLSAgICAgICAgZmlsZW5hbWUgPSBydW5mZXRjaGNtZChjb21tYW5kLCBkLCBxdWlldCwgd29ya2Rpcj1kbGRpcikKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnJzdHJpcCgpCi0KLSAgICBkZWYgX3VucGFja2RlcChzZWxmLCB1ZCwgcGtnLCBkYXRhLCBkZXN0ZGlyLCBkbGRpciwgZCk6Ci0gICAgICAgIGZpbGUgPSBkYXRhW3BrZ11bJ3RneiddCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiZmlsZSB0byBleHRyYWN0IGlzICVzIiAlIGZpbGUpCi0gICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy50Z3onKSBvciBmaWxlLmVuZHN3aXRoKCcudGFyLmd6Jykgb3IgZmlsZS5lbmRzd2l0aCgnLnRhci5aJyk6Ci0gICAgICAgICAgICBjbWQgPSAndGFyIHh6IC0tc3RyaXAgMSAtLW5vLXNhbWUtb3duZXIgLS13YXJuaW5nPW5vLXVua25vd24ta2V5d29yZCAtZiAlcy8lcycgJSAoZGxkaXIsIGZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiTlBNIHBhY2thZ2UgJXMgZG93bmxvYWRlZCBub3QgYSB0YXJiYWxsISIgJSBmaWxlKQotCi0gICAgICAgICMgQ2hhbmdlIHRvIHN1YmRpciBiZWZvcmUgZXhlY3V0aW5nIGNvbW1hbmQKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3RkaXIpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGRpcikKLSAgICAgICAgcGF0aCA9IGQuZ2V0VmFyKCdQQVRIJykKLSAgICAgICAgaWYgcGF0aDoKLSAgICAgICAgICAgIGNtZCA9ICJQQVRIPVwiJXNcIiAlcyIgJSAocGF0aCwgY21kKQotICAgICAgICBiYi5ub3RlKCJVbnBhY2tpbmcgJXMgdG8gJXMvIiAlIChmaWxlLCBkZXN0ZGlyKSkKLSAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCwgcHJlZXhlY19mbj1zdWJwcm9jZXNzX3NldHVwLCBzaGVsbD1UcnVlLCBjd2Q9ZGVzdGRpcikKLQotICAgICAgICBpZiByZXQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFVucGFja0Vycm9yKCJVbnBhY2sgY29tbWFuZCAlcyBmYWlsZWQgd2l0aCByZXR1cm4gdmFsdWUgJXMiICUgKGNtZCwgcmV0KSwgdWQudXJsKQotCi0gICAgICAgIGlmICdkZXBzJyBub3QgaW4gZGF0YVtwa2ddOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZvciBkZXAgaW4gZGF0YVtwa2ddWydkZXBzJ106Ci0gICAgICAgICAgICBzZWxmLl91bnBhY2tkZXAodWQsIGRlcCwgZGF0YVtwa2ddWydkZXBzJ10sICIlcy9ub2RlX21vZHVsZXMvJXMiICUgKGRlc3RkaXIsIGRlcCksIGRsZGlyLCBkKQotCi0KLSAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKToKLSAgICAgICAgZGxkaXIgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgd2l0aCBvcGVuKCIlcy9ucG0vJXMiICUgKGRsZGlyLCB1ZC5iYm5wbW1hbmlmZXN0KSkgYXMgZGF0YWZpbGU6Ci0gICAgICAgICAgICB3b3Jrb2JqID0ganNvbi5sb2FkKGRhdGFmaWxlKQotICAgICAgICBkbGRpciA9ICIlcy8lcyIgJSAob3MucGF0aC5kaXJuYW1lKHVkLmxvY2FscGF0aCksIHVkLnBrZ25hbWUpCi0KLSAgICAgICAgaWYgJ3N1YmRpcicgaW4gdWQucGFybToKLSAgICAgICAgICAgIHVucGFja2RpciA9ICclcy8lcycgJSAoZGVzdGRpciwgdWQucGFybS5nZXQoJ3N1YmRpcicpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdW5wYWNrZGlyID0gJyVzL25wbXBrZycgJSBkZXN0ZGlyCi0KLSAgICAgICAgc2VsZi5fdW5wYWNrZGVwKHVkLCB1ZC5wa2duYW1lLCB3b3Jrb2JqLCB1bnBhY2tkaXIsIGRsZGlyLCBkKQotCi0gICAgZGVmIF9wYXJzZV92aWV3KHNlbGYsIG91dHB1dCk6Ci0gICAgICAgICcnJwotICAgICAgICBQYXJzZSB0aGUgb3V0cHV0IG9mIG5wbSB2aWV3IC0tanNvbjsgdGhlIGxhc3QgSlNPTiByZXN1bHQKLSAgICAgICAgaXMgYXNzdW1lZCB0byBiZSB0aGUgb25lIHRoYXQgd2UncmUgaW50ZXJlc3RlZCBpbi4KLSAgICAgICAgJycnCi0gICAgICAgIHBkYXRhID0ganNvbi5sb2FkcyhvdXRwdXQpOwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gcGRhdGFbLTFdCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJldHVybiBwZGF0YQotCi0gICAgZGVmIF9nZXRkZXBlbmRlbmNpZXMoc2VsZiwgcGtnLCBkYXRhLCB2ZXJzaW9uLCBkLCB1ZCwgb3B0aW9uYWw9RmFsc2UsIGZldGNoZWRsaXN0PU5vbmUpOgotICAgICAgICBpZiBmZXRjaGVkbGlzdCBpcyBOb25lOgotICAgICAgICAgICAgZmV0Y2hlZGxpc3QgPSBbXQotICAgICAgICBwa2dmdWxsbmFtZSA9IHBrZwotICAgICAgICBpZiB2ZXJzaW9uICE9ICcqJyBhbmQgbm90ICcvJyBpbiB2ZXJzaW9uOgotICAgICAgICAgICAgcGtnZnVsbG5hbWUgKz0gIkAnJXMnIiAlIHZlcnNpb24KLSAgICAgICAgaWYgcGtnZnVsbG5hbWUgaW4gZmV0Y2hlZGxpc3Q6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkNhbGxpbmcgZ2V0ZGVwcyBvbiAlcyIgJSBwa2cpCi0gICAgICAgIGZldGNoY21kID0gIm5wbSB2aWV3ICVzIC0tanNvbiAtLXJlZ2lzdHJ5ICVzIiAlIChwa2dmdWxsbmFtZSwgdWQucmVnaXN0cnkpCi0gICAgICAgIG91dHB1dCA9IHJ1bmZldGNoY21kKGZldGNoY21kLCBkLCBUcnVlKQotICAgICAgICBwZGF0YSA9IHNlbGYuX3BhcnNlX3ZpZXcob3V0cHV0KQotICAgICAgICBpZiBub3QgcGRhdGE6Ci0gICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJUaGUgY29tbWFuZCAnJXMnIHJldHVybmVkIG5vIG91dHB1dCIgJSBmZXRjaGNtZCkKLSAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICBwa2dfb3MgPSBwZGF0YS5nZXQoJ29zJywgTm9uZSkKLSAgICAgICAgICAgIGlmIHBrZ19vczoKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwa2dfb3MsIGxpc3QpOgotICAgICAgICAgICAgICAgICAgICBwa2dfb3MgPSBbcGtnX29zXQotICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcGtnX29zOgotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJyEnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgKG5vdCBibGFja2xpc3QgYW5kICdsaW51eCcgbm90IGluIHBrZ19vcykgb3IgJyFsaW51eCcgaW4gcGtnX29zOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIlNraXBwaW5nICVzIHNpbmNlIGl0J3MgaW5jb21wYXRpYmxlIHdpdGggTGludXgiICUgcGtnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLl9ydW5wYWNrKHVkLCBkLCBwa2dmdWxsbmFtZSkKLSAgICAgICAgZGF0YVtwa2ddID0ge30KLSAgICAgICAgZGF0YVtwa2ddWyd0Z3onXSA9IGZpbGVuYW1lCi0gICAgICAgIGZldGNoZWRsaXN0LmFwcGVuZChwa2dmdWxsbmFtZSkKLQotICAgICAgICBkZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ2RlcGVuZGVuY2llcycsIHt9KQotICAgICAgICBvcHRpb25hbERlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnb3B0aW9uYWxEZXBlbmRlbmNpZXMnLCB7fSkKLSAgICAgICAgZGVwZW5kZW5jaWVzLnVwZGF0ZShvcHRpb25hbERlcGVuZGVuY2llcykKLSAgICAgICAgZGVwc2ZvdW5kID0ge30KLSAgICAgICAgb3B0ZGVwc2ZvdW5kID0ge30KLSAgICAgICAgZGF0YVtwa2ddWydkZXBzJ10gPSB7fQotICAgICAgICBmb3IgZGVwIGluIGRlcGVuZGVuY2llczoKLSAgICAgICAgICAgIGlmIGRlcCBpbiBvcHRpb25hbERlcGVuZGVuY2llczoKLSAgICAgICAgICAgICAgICBvcHRkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgZm9yIGRlcCwgdmVyc2lvbiBpbiBvcHRkZXBzZm91bmQuaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYuX2dldGRlcGVuZGVuY2llcyhkZXAsIGRhdGFbcGtnXVsnZGVwcyddLCB2ZXJzaW9uLCBkLCB1ZCwgb3B0aW9uYWw9VHJ1ZSwgZmV0Y2hlZGxpc3Q9ZmV0Y2hlZGxpc3QpCi0gICAgICAgIGZvciBkZXAsIHZlcnNpb24gaW4gZGVwc2ZvdW5kLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl9nZXRkZXBlbmRlbmNpZXMoZGVwLCBkYXRhW3BrZ11bJ2RlcHMnXSwgdmVyc2lvbiwgZCwgdWQsIGZldGNoZWRsaXN0PWZldGNoZWRsaXN0KQotCi0gICAgZGVmIF9nZXRzaHJpbmtlZGRlcGVuZGVuY2llcyhzZWxmLCBwa2csIGRhdGEsIHZlcnNpb24sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3QsIHRvcGxldmVsPVRydWUpOgotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBzaHJpbmt3cmFwIGZpbGUgaXMgJXMiICUgZGF0YSkKLSAgICAgICAgaWYgdG9wbGV2ZWw6Ci0gICAgICAgICAgICBuYW1lID0gZGF0YS5nZXQoJ25hbWUnLCBOb25lKQotICAgICAgICAgICAgaWYgbmFtZSBhbmQgbmFtZSAhPSBwa2c6Ci0gICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBkYXRhLmdldCgnZGVwZW5kZW5jaWVzJywgW10pOgotICAgICAgICAgICAgICAgICAgICBpZiBvYmogPT0gcGtnOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0c2hyaW5rZWRkZXBlbmRlbmNpZXMob2JqLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdWyd2ZXJzaW9uJ10sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3QsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgcGtnbmFtZVdpdGhWZXJzaW9uID0gInt9QHt9Ii5mb3JtYXQocGtnLCB2ZXJzaW9uKQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkdldCBkZXBlbmRlbmNpZXMgZm9yIHt9Ii5mb3JtYXQocGtnbmFtZVdpdGhWZXJzaW9uKSkKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLl9ydW5wYWNrKHVkLCBkLCBwa2duYW1lV2l0aFZlcnNpb24pCi0gICAgICAgIG1hbmlmZXN0W3BrZ10gPSB7fQotICAgICAgICBtYW5pZmVzdFtwa2ddWyd0Z3onXSA9IGZpbGVuYW1lCi0gICAgICAgIG1hbmlmZXN0W3BrZ11bJ2RlcHMnXSA9IHt9Ci0KLSAgICAgICAgaWYgcGtnIGluIGxvY2tkb3duOgotICAgICAgICAgICAgc2hhMV9leHBlY3RlZCA9IGxvY2tkb3duW3BrZ11bdmVyc2lvbl0KLSAgICAgICAgICAgIHNoYTFfZGF0YSA9IGJiLnV0aWxzLnNoYTFfZmlsZSgibnBtLyVzLyVzIiAlICh1ZC5wa2duYW1lLCBtYW5pZmVzdFtwa2ddWyd0Z3onXSkpCi0gICAgICAgICAgICBpZiBzaGExX2V4cGVjdGVkICE9IHNoYTFfZGF0YToKLSAgICAgICAgICAgICAgICBtc2cgPSAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAobWFuaWZlc3RbcGtnXVsndGd6J10sICdzaGExJywgc2hhMV9kYXRhLCBzaGExX2V4cGVjdGVkKQotICAgICAgICAgICAgICAgIHJhaXNlIENoZWNrc3VtRXJyb3IoJ0NoZWNrc3VtIG1pc21hdGNoISVzJyAlIG1zZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTm8gbG9ja2Rvd24gZGF0YSBmb3IgJXNAJXMiICUgKHBrZywgdmVyc2lvbikpCi0KLSAgICAgICAgaWYgJ2RlcGVuZGVuY2llcycgaW4gZGF0YToKLSAgICAgICAgICAgIGZvciBvYmogaW4gZGF0YVsnZGVwZW5kZW5jaWVzJ106Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJGb3VuZCBkZXAgaXMgJXMiICUgc3RyKG9iaikpCi0gICAgICAgICAgICAgICAgc2VsZi5fZ2V0c2hyaW5rZWRkZXBlbmRlbmNpZXMob2JqLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdWyd2ZXJzaW9uJ10sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3RbcGtnXVsnZGVwcyddLCBGYWxzZSkKKyAgICBkZWYgdHJ5X21pcnJvcnMoc2VsZiwgZmV0Y2gsIHVkLCBkLCBtaXJyb3JzKToKKyAgICAgICAgIiIiVHJ5IHRvIHVzZSBhIG1pcnJvciIiIgorICAgICAgICBwcm94eV9tLCBwcm94eV91ZCwgcHJveHlfZCA9IHNlbGYuX2dldF9wcm94eV9tZXRob2QodWQsIGQpCisgICAgICAgIHJldHVybiBwcm94eV9tLnRyeV9taXJyb3JzKGZldGNoLCBwcm94eV91ZCwgcHJveHlfZCwgbWlycm9ycykKIAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CiAgICAgICAgICIiIkZldGNoIHVybCIiIgotICAgICAgICBqc29uZGVwb2JqID0ge30KLSAgICAgICAgc2hyaW5rb2JqID0ge30KLSAgICAgICAgbG9ja2Rvd24gPSB7fQorICAgICAgICBzZWxmLl9zZXR1cF9wcm94eSh1ZCwgZCkKKyAgICAgICAgdWQucHJveHkuZG93bmxvYWQoKQogCi0gICAgICAgIGlmIG5vdCBvcy5saXN0ZGlyKHVkLnBrZ2RhdGFkaXIpIGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKToKLSAgICAgICAgICAgIGRlc3QgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0KQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAteEpmICVzIiAlICh1ZC5mdWxsbWlycm9yKSwgZCwgd29ya2Rpcj1kZXN0KQotICAgICAgICAgICAgcmV0dXJuCisgICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgcm9vdGRpciwgZCk6CisgICAgICAgICIiIlVucGFjayB0aGUgZG93bmxvYWRlZCBhcmNoaXZlIiIiCisgICAgICAgIGRlc3RzdWZmaXggPSB1ZC5wYXJtLmdldCgiZGVzdHN1ZmZpeCIsICJucG0iKQorICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKHJvb3RkaXIsIGRlc3RzdWZmaXgpCisgICAgICAgIG5wbV91bnBhY2sodWQubG9jYWxwYXRoLCBkZXN0ZGlyLCBkKQogCi0gICAgICAgIGlmIHVkLnBhcm0uZ2V0KCJub3ZlcmlmeSIsIE5vbmUpICE9ICcxJzoKLSAgICAgICAgICAgIHNod3JmID0gZC5nZXRWYXIoJ05QTV9TSFJJTktXUkFQJykKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTlBNIHNocmlua3dyYXAgZmlsZSBpcyAlcyIgJSBzaHdyZikKLSAgICAgICAgICAgIGlmIHNod3JmOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNod3JmKSBhcyBkYXRhZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNocmlua29iaiA9IGpzb24ubG9hZChkYXRhZmlsZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoJ0Vycm9yIGxvYWRpbmcgTlBNX1NIUklOS1dSQVAgZmlsZSAiJXMiIGZvciAlczogJXMnICUgKHNod3JmLCB1ZC5wa2duYW1lLCBzdHIoZSkpKQotICAgICAgICAgICAgZWxpZiBub3QgdWQuaWdub3JlX2NoZWNrc3VtczoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBzaHJpbmt3cmFwIGZpbGUgaW4gTlBNX1NIUklOS1dSQVAgZm9yICVzLCB0aGlzIHdpbGwgbGVhZCB0byB1bnJlbGlhYmxlIGJ1aWxkcyEnICUgdWQucGtnbmFtZSkKLSAgICAgICAgICAgIGxja2RmID0gZC5nZXRWYXIoJ05QTV9MT0NLRE9XTicpCi0gICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBsb2NrZG93biBmaWxlIGlzICVzIiAlIGxja2RmKQotICAgICAgICAgICAgaWYgbGNrZGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGNrZGYpIGFzIGRhdGFmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2Rvd24gPSBqc29uLmxvYWQoZGF0YWZpbGUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdFcnJvciBsb2FkaW5nIE5QTV9MT0NLRE9XTiBmaWxlICIlcyIgZm9yICVzOiAlcycgJSAobGNrZGYsIHVkLnBrZ25hbWUsIHN0cihlKSkpCi0gICAgICAgICAgICBlbGlmIG5vdCB1ZC5pZ25vcmVfY2hlY2tzdW1zOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIGxvY2tkb3duIGZpbGUgaW4gTlBNX0xPQ0tET1dOIGZvciAlcywgdGhpcyB3aWxsIGxlYWQgdG8gdW5yZXByb2R1Y2libGUgYnVpbGRzIScgJSB1ZC5wa2duYW1lKQorICAgIGRlZiBjbGVhbihzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkNsZWFuIGFueSBleGlzdGluZyBmdWxsIG9yIHBhcnRpYWwgZG93bmxvYWQiIiIKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgc2VsZi5fc2V0dXBfcHJveHkodWQsIGQpCisgICAgICAgICAgICB1ZC5wcm94eS5jbGVhbigpCisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodWQucmVzb2x2ZWZpbGUpCiAKLSAgICAgICAgaWYgKCduYW1lJyBub3QgaW4gc2hyaW5rb2JqKToKLSAgICAgICAgICAgIHNlbGYuX2dldGRlcGVuZGVuY2llcyh1ZC5wa2duYW1lLCBqc29uZGVwb2JqLCB1ZC52ZXJzaW9uLCBkLCB1ZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2dldHNocmlua2VkZGVwZW5kZW5jaWVzKHVkLnBrZ25hbWUsIHNocmlua29iaiwgdWQudmVyc2lvbiwgZCwgdWQsIGxvY2tkb3duLCBqc29uZGVwb2JqKQotCi0gICAgICAgIHdpdGggb3Blbih1ZC5sb2NhbHBhdGgsICd3JykgYXMgb3V0ZmlsZToKLSAgICAgICAgICAgIGpzb24uZHVtcChqc29uZGVwb2JqLCBvdXRmaWxlKQotCi0gICAgZGVmIGJ1aWxkX21pcnJvcl9kYXRhKHNlbGYsIHVkLCBkKToKLSAgICAgICAgIyBHZW5lcmF0ZSBhIG1pcnJvciB0YXJiYWxsIGlmIG5lZWRlZAotICAgICAgICBpZiB1ZC53cml0ZV90YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxtaXJyb3IpOgotICAgICAgICAgICAgIyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBzeW1saW5rIHBvaW50cyB0byByZWFkLW9ubHkgZmlsZXN5c3RlbSB3aXRoIFBSRU1JUlJPUgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsodWQuZnVsbG1pcnJvcik6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKHVkLmZ1bGxtaXJyb3IpCi0KLSAgICAgICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiQ3JlYXRpbmcgdGFyYmFsbCBvZiBucG0gZGF0YSIpCi0gICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC1jSmYgJXMgbnBtLyVzIG5wbS8lcyIgJSAodWQuZnVsbG1pcnJvciwgdWQuYmJucG1tYW5pZmVzdCwgdWQucGtnbmFtZSksIGQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZGlyPWRsZGlyKQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRvdWNoICVzLmRvbmUiICUgKHVkLmZ1bGxtaXJyb3IpLCBkLCB3b3JrZGlyPWRsZGlyKQorICAgIGRlZiBkb25lKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiSXMgdGhlIGRvd25sb2FkIGRvbmUgPyIiIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHByb3h5X20sIHByb3h5X3VkLCBwcm94eV9kID0gc2VsZi5fZ2V0X3Byb3h5X21ldGhvZCh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIHByb3h5X20uZG9uZShwcm94eV91ZCwgcHJveHlfZCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbXN3LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtc3cucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMzNTExZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbXN3LnB5CkBAIC0wLDAgKzEsMjU1IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBTYXZvaXItRmFpcmUgTGludXgKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIiIiCitCaXRCYWtlICdGZXRjaCcgbnBtIHNocmlua3dyYXAgaW1wbGVtZW50YXRpb24KKworbnBtIGZldGNoZXIgc3VwcG9ydCB0aGUgU1JDX1VSSSB3aXRoIGZvcm1hdCBvZjoKK1NSQ19VUkkgPSAibnBtc3c6Ly9zb21lLnJlZ2lzdHJ5LnVybDtPcHRpb25BPXh4eDtPcHRpb25CPXh4eDsuLi4iCisKK1N1cHBvcnRlZCBTUkNfVVJJIG9wdGlvbnMgYXJlOgorCistIGRldgorICAgU2V0IHRvIDEgdG8gYWxzbyBpbnN0YWxsIGRldkRlcGVuZGVuY2llcy4KKworLSBkZXN0c3VmZml4CisgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgdG8gdXNlIHRvIHVucGFjayB0aGUgZGVwZW5kZW5jaWVzIChkZWZhdWx0OiAke1N9KS4KKyIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBiYgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBQYXJhbWV0ZXJFcnJvcgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFVSSQorZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBucG1faW50ZWdyaXR5Citmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IG5wbV9sb2NhbGZpbGUKK2Zyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgbnBtX3VucGFjaworZnJvbSBiYi51dGlscyBpbXBvcnQgaXNfc2VtdmVyCisKK2RlZiBmb3JlYWNoX2RlcGVuZGVuY2llcyhzaHJpbmt3cmFwLCBjYWxsYmFjaz1Ob25lLCBkZXY9RmFsc2UpOgorICAgICIiIgorICAgICAgICBSdW4gYSBjYWxsYmFjayBmb3IgZWFjaCBkZXBlbmRlbmNpZXMgb2YgYSBzaHJpbmt3cmFwIGZpbGUuCisgICAgICAgIFRoZSBjYWxsYmFjayBpcyB1c2luZyB0aGUgZm9ybWF0OgorICAgICAgICAgICAgY2FsbGJhY2sobmFtZSwgcGFyYW1zLCBkZXB0cmVlKQorICAgICAgICB3aXRoOgorICAgICAgICAgICAgbmFtZSA9IHRoZSBwYWNrYWdlIG5hbWUgKHN0cmluZykKKyAgICAgICAgICAgIHBhcmFtcyA9IHRoZSBwYWNrYWdlIHBhcmFtZXRlcnMgKGRpY3Rpb25hcnkpCisgICAgICAgICAgICBkZXB0cmVlID0gdGhlIHBhY2thZ2UgZGVwZW5kZW5jeSB0cmVlIChhcnJheSBvZiBzdHJpbmdzKQorICAgICIiIgorICAgIGRlZiBfd2Fsa19kZXBzKGRlcHMsIGRlcHRyZWUpOgorICAgICAgICBmb3IgbmFtZSBpbiBkZXBzOgorICAgICAgICAgICAgc3VidHJlZSA9IFsqZGVwdHJlZSwgbmFtZV0KKyAgICAgICAgICAgIF93YWxrX2RlcHMoZGVwc1tuYW1lXS5nZXQoImRlcGVuZGVuY2llcyIsIHt9KSwgc3VidHJlZSkKKyAgICAgICAgICAgIGlmIGNhbGxiYWNrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGRlcHNbbmFtZV0uZ2V0KCJkZXYiLCBGYWxzZSkgYW5kIG5vdCBkZXY6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxpZiBkZXBzW25hbWVdLmdldCgiYnVuZGxlZCIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhuYW1lLCBkZXBzW25hbWVdLCBzdWJ0cmVlKQorCisgICAgX3dhbGtfZGVwcyhzaHJpbmt3cmFwLmdldCgiZGVwZW5kZW5jaWVzIiwge30pLCBbXSkKKworY2xhc3MgTnBtU2hyaW5rV3JhcChGZXRjaE1ldGhvZCk6CisgICAgIiIiQ2xhc3MgdG8gZmV0Y2ggYWxsIHBhY2thZ2UgZnJvbSBhIHNocmlua3dyYXAgZmlsZSIiIgorCisgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgYSBnaXZlbiB1cmwgY2FuIGJlIGZldGNoZWQgd2l0aCBucG1zdyIiIgorICAgICAgICByZXR1cm4gdWQudHlwZSBpbiBbIm5wbXN3Il0KKworICAgIGRlZiB1cmxkYXRhX2luaXQoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJJbml0IG5wbXN3IHNwZWNpZmljIHZhcmlhYmxlcyB3aXRoaW4gdXJsIGRhdGEiIiIKKworICAgICAgICAjIEdldCB0aGUgJ3Nocmlua3dyYXAnIHBhcmFtZXRlcgorICAgICAgICB1ZC5zaHJpbmt3cmFwX2ZpbGUgPSByZS5zdWIociJebnBtc3c6Ly8iLCAiIiwgdWQudXJsLnNwbGl0KCI7IilbMF0pCisKKyAgICAgICAgIyBHZXQgdGhlICdkZXYnIHBhcmFtZXRlcgorICAgICAgICB1ZC5kZXYgPSBiYi51dGlscy50b19ib29sZWFuKHVkLnBhcm0uZ2V0KCJkZXYiKSwgRmFsc2UpCisKKyAgICAgICAgIyBSZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgdWQuZGVwcyA9IFtdCisKKyAgICAgICAgZGVmIF9yZXNvbHZlX2RlcGVuZGVuY3kobmFtZSwgcGFyYW1zLCBkZXB0cmVlKToKKyAgICAgICAgICAgIHVybCA9IE5vbmUKKyAgICAgICAgICAgIGxvY2FscGF0aCA9IE5vbmUKKyAgICAgICAgICAgIGV4dHJhcGF0aHMgPSBbXQorICAgICAgICAgICAgZGVzdHN1YmRpcnMgPSBbb3MucGF0aC5qb2luKCJub2RlX21vZHVsZXMiLCBkZXApIGZvciBkZXAgaW4gZGVwdHJlZV0KKyAgICAgICAgICAgIGRlc3RzdWZmaXggPSBvcy5wYXRoLmpvaW4oKmRlc3RzdWJkaXJzKQorCisgICAgICAgICAgICBpbnRlZ3JpdHkgPSBwYXJhbXMuZ2V0KCJpbnRlZ3JpdHkiLCBOb25lKQorICAgICAgICAgICAgcmVzb2x2ZWQgPSBwYXJhbXMuZ2V0KCJyZXNvbHZlZCIsIE5vbmUpCisgICAgICAgICAgICB2ZXJzaW9uID0gcGFyYW1zLmdldCgidmVyc2lvbiIsIE5vbmUpCisKKyAgICAgICAgICAgICMgSGFuZGxlIHJlZ2lzdHJ5IHNvdXJjZXMKKyAgICAgICAgICAgIGlmIGlzX3NlbXZlcih2ZXJzaW9uKSBhbmQgcmVzb2x2ZWQgYW5kIGludGVncml0eToKKyAgICAgICAgICAgICAgICBsb2NhbGZpbGUgPSBucG1fbG9jYWxmaWxlKG5hbWUsIHZlcnNpb24pCisKKyAgICAgICAgICAgICAgICB1cmkgPSBVUkkocmVzb2x2ZWQpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1siZG93bmxvYWRmaWxlbmFtZSJdID0gbG9jYWxmaWxlCisKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9uYW1lLCBjaGVja3N1bV9leHBlY3RlZCA9IG5wbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbY2hlY2tzdW1fbmFtZV0gPSBjaGVja3N1bV9leHBlY3RlZAorCisgICAgICAgICAgICAgICAgdXJsID0gc3RyKHVyaSkKKworICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIGxvY2FsZmlsZSkKKworICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgcmVzb2x2ZSBmaWxlIHRvIG1pbWljIHRoZSBucG0gZmV0Y2hlciBhbmQgYWxsb3cKKyAgICAgICAgICAgICAgICAjIHJlLXVzYWJpbGl0eSBvZiB0aGUgZG93bmxvYWRlZCBmaWxlLgorICAgICAgICAgICAgICAgIHJlc29sdmVmaWxlID0gbG9jYWxwYXRoICsgIi5yZXNvbHZlZCIKKworICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUocmVzb2x2ZWZpbGUpKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihyZXNvbHZlZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHVybCkKKworICAgICAgICAgICAgICAgIGV4dHJhcGF0aHMuYXBwZW5kKHJlc29sdmVmaWxlKQorCisgICAgICAgICAgICAjIEhhbmRsZSBodHRwIHRhcmJhbGwgc291cmNlcworICAgICAgICAgICAgZWxpZiB2ZXJzaW9uLnN0YXJ0c3dpdGgoImh0dHAiKSBhbmQgaW50ZWdyaXR5OgorICAgICAgICAgICAgICAgIGxvY2FsZmlsZSA9IG9zLnBhdGguam9pbigibnBtMiIsIG9zLnBhdGguYmFzZW5hbWUodmVyc2lvbikpCisKKyAgICAgICAgICAgICAgICB1cmkgPSBVUkkodmVyc2lvbikKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJkb3dubG9hZGZpbGVuYW1lIl0gPSBsb2NhbGZpbGUKKworICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUsIGNoZWNrc3VtX2V4cGVjdGVkID0gbnBtX2ludGVncml0eShpbnRlZ3JpdHkpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1tjaGVja3N1bV9uYW1lXSA9IGNoZWNrc3VtX2V4cGVjdGVkCisKKyAgICAgICAgICAgICAgICB1cmwgPSBzdHIodXJpKQorCisgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbG9jYWxmaWxlKQorCisgICAgICAgICAgICAjIEhhbmRsZSBnaXQgc291cmNlcworICAgICAgICAgICAgZWxpZiB2ZXJzaW9uLnN0YXJ0c3dpdGgoImdpdCIpOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyIiIiCisgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgZ2l0XCsKKyAgICAgICAgICAgICAgICAgICAgKD9QPHByb3RvY29sPlthLXpdKykKKyAgICAgICAgICAgICAgICAgICAgOi8vCisgICAgICAgICAgICAgICAgICAgICg/UDx1cmw+W14jXSspCisgICAgICAgICAgICAgICAgICAgIFwjCisgICAgICAgICAgICAgICAgICAgICg/UDxyZXY+WzAtOWEtZl0rKQorICAgICAgICAgICAgICAgICAgICAkCisgICAgICAgICAgICAgICAgICAgICIiIiwgcmUuVkVSQk9TRSkKKworICAgICAgICAgICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2godmVyc2lvbikKKworICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGFyYW1ldGVyRXJyb3IoIkludmFsaWQgZ2l0IHVybDogJXMiICUgdmVyc2lvbiwgdWQudXJsKQorCisgICAgICAgICAgICAgICAgZ3JvdXBzID0gbWF0Y2guZ3JvdXBkaWN0KCkKKworICAgICAgICAgICAgICAgIHVyaSA9IFVSSSgiZ2l0Oi8vIiArIHN0cihncm91cHNbInVybCJdKSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJwcm90b2NvbCJdID0gc3RyKGdyb3Vwc1sicHJvdG9jb2wiXSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJyZXYiXSA9IHN0cihncm91cHNbInJldiJdKQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbImRlc3RzdWZmaXgiXSA9IGRlc3RzdWZmaXgKKworICAgICAgICAgICAgICAgIHVybCA9IHN0cih1cmkpCisKKyAgICAgICAgICAgICMgbG9jYWwgdGFyYmFsbCBzb3VyY2VzIGFuZCBsb2NhbCBsaW5rIHNvdXJjZXMgYXJlIHVuc3VwcG9ydGVkCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJVbnN1cHBvcnRlZCBkZXBlbmRlbmN5OiAlcyIgJSBuYW1lLCB1ZC51cmwpCisKKyAgICAgICAgICAgIHVkLmRlcHMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAidXJsIjogdXJsLAorICAgICAgICAgICAgICAgICJsb2NhbHBhdGgiOiBsb2NhbHBhdGgsCisgICAgICAgICAgICAgICAgImV4dHJhcGF0aHMiOiBleHRyYXBhdGhzLAorICAgICAgICAgICAgICAgICJkZXN0c3VmZml4IjogZGVzdHN1ZmZpeCwKKyAgICAgICAgICAgIH0pCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHVkLnNocmlua3dyYXBfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNocmlua3dyYXAgPSBqc29uLmxvYWQoZikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFpc2UgUGFyYW1ldGVyRXJyb3IoIkludmFsaWQgc2hyaW5rd3JhcCBmaWxlOiAlcyIgJSBzdHIoZSksIHVkLnVybCkKKworICAgICAgICBmb3JlYWNoX2RlcGVuZGVuY2llcyhzaHJpbmt3cmFwLCBfcmVzb2x2ZV9kZXBlbmRlbmN5LCB1ZC5kZXYpCisKKyAgICAgICAgIyBBdm9pZCBjb25mbGljdHMgYmV0d2VlbiB0aGUgZW52aXJvbm1lbnQgZGF0YSBhbmQ6CisgICAgICAgICMgLSB0aGUgcHJveHkgdXJsIHJldmlzaW9uCisgICAgICAgICMgLSB0aGUgcHJveHkgdXJsIGNoZWNrc3VtCisgICAgICAgIGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgZGF0YS5kZWxWYXIoIlNSQ1JFViIpCisgICAgICAgIGRhdGEuZGVsVmFyRmxhZ3MoIlNSQ19VUkkiKQorCisgICAgICAgICMgVGhpcyBmZXRjaGVyIHJlc29sdmVzIG11bHRpcGxlIFVSSXMgZnJvbSBhIHNocmlua3dyYXAgZmlsZSBhbmQgdGhlbgorICAgICAgICAjIGZvcndhcmRzIGl0IHRvIGEgcHJveHkgZmV0Y2hlci4gVGhlIG1hbmFnZW1lbnQgb2YgdGhlIGRvbmVzdGFtcCBmaWxlLAorICAgICAgICAjIHRoZSBsb2NrZmlsZSBhbmQgdGhlIGNoZWNrc3VtcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBwcm94eSBmZXRjaGVyLgorICAgICAgICB1ZC5wcm94eSA9IEZldGNoKFtkZXBbInVybCJdIGZvciBkZXAgaW4gdWQuZGVwc10sIGRhdGEpCisgICAgICAgIHVkLm5lZWRkb25lc3RhbXAgPSBGYWxzZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZm9yZWFjaF9wcm94eV9tZXRob2QodWQsIGhhbmRsZSk6CisgICAgICAgIHJldHVybnMgPSBbXQorICAgICAgICBmb3IgcHJveHlfdXJsIGluIHVkLnByb3h5LnVybHM6CisgICAgICAgICAgICBwcm94eV91ZCA9IHVkLnByb3h5LnVkW3Byb3h5X3VybF0KKyAgICAgICAgICAgIHByb3h5X2QgPSB1ZC5wcm94eS5kCisgICAgICAgICAgICBwcm94eV91ZC5zZXR1cF9sb2NhbHBhdGgocHJveHlfZCkKKyAgICAgICAgICAgIHJldHVybnMuYXBwZW5kKGhhbmRsZShwcm94eV91ZC5tZXRob2QsIHByb3h5X3VkLCBwcm94eV9kKSkKKyAgICAgICAgcmV0dXJuIHJldHVybnMKKworICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBkZWYgX2hhbmRsZShtLCB1ZCwgZCk6CisgICAgICAgICAgICByZXR1cm4gbS52ZXJpZnlfZG9uZXN0YW1wKHVkLCBkKQorICAgICAgICByZXR1cm4gYWxsKHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKSkKKworICAgIGRlZiB1cGRhdGVfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVXBkYXRlIHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBkZWYgX2hhbmRsZShtLCB1ZCwgZCk6CisgICAgICAgICAgICBtLnVwZGF0ZV9kb25lc3RhbXAodWQsIGQpCisgICAgICAgIHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKQorCisgICAgZGVmIG5lZWRfdXBkYXRlKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiRm9yY2UgYSBmZXRjaCwgZXZlbiBpZiBsb2NhbHBhdGggZXhpc3RzID8iIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0ubmVlZF91cGRhdGUodWQsIGQpCisgICAgICAgIHJldHVybiBhbGwoc2VsZi5fZm9yZWFjaF9wcm94eV9tZXRob2QodWQsIF9oYW5kbGUpKQorCisgICAgZGVmIHRyeV9taXJyb3JzKHNlbGYsIGZldGNoLCB1ZCwgZCwgbWlycm9ycyk6CisgICAgICAgICIiIlRyeSB0byB1c2UgYSBtaXJyb3IiIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0udHJ5X21pcnJvcnMoZmV0Y2gsIHVkLCBkLCBtaXJyb3JzKQorICAgICAgICByZXR1cm4gYWxsKHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKSkKKworICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkZldGNoIHVybCIiIgorICAgICAgICB1ZC5wcm94eS5kb3dubG9hZCgpCisKKyAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCByb290ZGlyLCBkKToKKyAgICAgICAgIiIiVW5wYWNrIHRoZSBkb3dubG9hZGVkIGRlcGVuZGVuY2llcyIiIgorICAgICAgICBkZXN0ZGlyID0gZC5nZXRWYXIoIlMiKQorICAgICAgICBkZXN0c3VmZml4ID0gdWQucGFybS5nZXQoImRlc3RzdWZmaXgiKQorICAgICAgICBpZiBkZXN0c3VmZml4OgorICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbihyb290ZGlyLCBkZXN0c3VmZml4KQorCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorICAgICAgICBiYi51dGlscy5jb3B5ZmlsZSh1ZC5zaHJpbmt3cmFwX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkZXN0ZGlyLCAibnBtLXNocmlua3dyYXAuanNvbiIpKQorCisgICAgICAgIGF1dG8gPSBbZGVwWyJ1cmwiXSBmb3IgZGVwIGluIHVkLmRlcHMgaWYgbm90IGRlcFsibG9jYWxwYXRoIl1dCisgICAgICAgIG1hbnVhbCA9IFtkZXAgZm9yIGRlcCBpbiB1ZC5kZXBzIGlmIGRlcFsibG9jYWxwYXRoIl1dCisKKyAgICAgICAgaWYgYXV0bzoKKyAgICAgICAgICAgIHVkLnByb3h5LnVucGFjayhkZXN0ZGlyLCBhdXRvKQorCisgICAgICAgIGZvciBkZXAgaW4gbWFudWFsOgorICAgICAgICAgICAgZGVwZGVzdGRpciA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBkZXBbImRlc3RzdWZmaXgiXSkKKyAgICAgICAgICAgIG5wbV91bnBhY2soZGVwWyJsb2NhbHBhdGgiXSwgZGVwZGVzdGRpciwgZCkKKworICAgIGRlZiBjbGVhbihzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkNsZWFuIGFueSBleGlzdGluZyBmdWxsIG9yIHBhcnRpYWwgZG93bmxvYWQiIiIKKyAgICAgICAgdWQucHJveHkuY2xlYW4oKQorCisgICAgICAgICMgQ2xlYW4gZXh0cmEgZmlsZXMKKyAgICAgICAgZm9yIGRlcCBpbiB1ZC5kZXBzOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gZGVwWyJleHRyYXBhdGhzIl06CisgICAgICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHBhdGgpCisKKyAgICBkZWYgZG9uZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIklzIHRoZSBkb3dubG9hZCBkb25lID8iIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0uZG9uZSh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIGFsbChzZWxmLl9mb3JlYWNoX3Byb3h5X21ldGhvZCh1ZCwgX2hhbmRsZSkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkKaW5kZXggM2U1NjcxNS4uOGYwOTFlZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvb3NjLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL29zYy5weQpAQCAtNyw4ICs3LDYgQEAKIAogIiIiCiAKLWltcG9ydCAgb3MKLWltcG9ydCAgc3lzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0ICBiYgogZnJvbSAgICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCkBAIC00Myw3ICs0MSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwdiA9IGQuZ2V0VmFyKCJQViIsIEZhbHNlKQogICAgICAgICAgICAgcmV2ID0gYmIuZmV0Y2gyLnNyY3Jldl9pbnRlcm5hbF9oZWxwZXIodWQsIGQpCi0gICAgICAgICAgICBpZiByZXYgYW5kIHJldiAhPSBUcnVlOgorICAgICAgICAgICAgaWYgcmV2OgogICAgICAgICAgICAgICAgIHVkLnJldmlzaW9uID0gcmV2CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHVkLnJldmlzaW9uID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKaW5kZXggNTRkMDAxZS4uZjU3YzJhNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKQEAgLTExLDcgKzExLDYgQEAKICMgQmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIGJhc2UgYmIgbW9kdWxlLCBDb3B5cmlnaHQgMjAwMyBIb2xnZXIgU2NodXJpZwogCiBpbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCkBAIC0xMDUsNyArMTA0LDcgQEAKICAgICAgICAgaWYgY29tbWFuZCA9PSAnY2hhbmdlcyc6CiAgICAgICAgICAgICBwNGNtZCA9ICclcyVzIGNoYW5nZXMgLW0gMSAvLyVzJyAlICh1ZC5iYXNlY21kLCBwNG9wdCwgcGF0aG5yZXYpCiAgICAgICAgIGVsaWYgY29tbWFuZCA9PSAncHJpbnQnOgotICAgICAgICAgICAgaWYgZGVwb3RfZmlsZW5hbWUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGRlcG90X2ZpbGVuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHA0Y21kID0gJyVzJXMgcHJpbnQgLW8gInA0LyVzIiAiJXMiJyAlICh1ZC5iYXNlY21kLCBwNG9wdCwgZmlsZW5hbWUsIGRlcG90X2ZpbGVuYW1lKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdObyBkZXBvdCBmaWxlIG5hbWUgcHJvdmlkZWQgdG8gcDQgJXMnICUgY29tbWFuZCwgdWQudXJsKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3NoLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3NoLnB5CmluZGV4IGY1YmUwNjAuLjVlOTgyZWMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3NzaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zc2gucHkKQEAgLTMyLDggKzMyLDYgQEAKIAogaW1wb3J0IHJlLCBvcwogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKIAogCkBAIC02MCw3ICs1OCw3IEBACiAgICAgJycnQ2xhc3MgdG8gZmV0Y2ggYSBtb2R1bGUgb3IgbW9kdWxlcyB2aWEgU2VjdXJlIFNoZWxsJycnCiAKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdXJsZGF0YSwgZCk6Ci0gICAgICAgIHJldHVybiBfX3BhdHRlcm5fXy5tYXRjaCh1cmxkYXRhLnVybCkgIT0gTm9uZQorICAgICAgICByZXR1cm4gX19wYXR0ZXJuX18ubWF0Y2godXJsZGF0YS51cmwpIGlzIG5vdCBOb25lCiAKICAgICBkZWYgc3VwcG9ydHNfY2hlY2tzdW0oc2VsZiwgdXJsZGF0YSk6CiAgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5CmluZGV4IDk2ZDY2NmIuLjk3MWE1YWQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3N2bi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zdm4ucHkKQEAgLTExLDggKzExLDYgQEAKICMgQmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIGJhc2UgYmIgbW9kdWxlLCBDb3B5cmlnaHQgMjAwMyBIb2xnZXIgU2NodXJpZwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGltcG9ydCByZQogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKQEAgLTQ5LDcgKzQ3LDcgQEAKICAgICAgICAgc3ZuZGlyID0gZC5nZXRWYXIoIlNWTkRJUiIpIG9yIChkLmdldFZhcigiRExfRElSIikgKyAiL3N2biIpCiAgICAgICAgIHJlbHBhdGggPSBzZWxmLl9zdHJpcF9sZWFkaW5nX3NsYXNoZXModWQucGF0aCkKICAgICAgICAgdWQucGtnZGlyID0gb3MucGF0aC5qb2luKHN2bmRpciwgdWQuaG9zdCwgcmVscGF0aCkKLSAgICAgICAgdWQubW9kZGlyID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgdWQubW9kdWxlKQorICAgICAgICB1ZC5tb2RkaXIgPSBvcy5wYXRoLmpvaW4odWQucGtnZGlyLCB1ZC5wYXRoX3NwZWMpCiAgICAgICAgICMgUHJvdGVjdHMgdGhlIHJlcG9zaXRvcnkgZnJvbSBjb25jdXJyZW50IHVwZGF0ZXMsIGUuZy4gZnJvbSB0d28KICAgICAgICAgIyByZWNpcGVzIGZldGNoaW5nIGRpZmZlcmVudCByZXZpc2lvbnMgYXQgdGhlIHNhbWUgdGltZQogICAgICAgICB1ZC5zdm5sb2NrID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgInN2bi5sb2NrIikKQEAgLTEyNCwzMCArMTIyLDMwIEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbih1ZC5tb2RkaXIsICcuc3ZuJyksIG9zLlJfT0spOgotICAgICAgICAgICAgICAgIHN2bnVwZGF0ZWNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgInVwZGF0ZSIpCisgICAgICAgICAgICAgICAgc3ZuY21kID0gc2VsZi5fYnVpbGRzdm5jb21tYW5kKHVkLCBkLCAidXBkYXRlIikKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVXBkYXRlICIgKyB1ZC51cmwpCiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGF0dGVtcHQgdG8gcnVuIHN2biB1cGdyYWRlIGZpcnN0IGluIGNhc2UgaXRzIGFuIG9sZGVyIHdvcmtpbmcgZm9ybWF0CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCh1ZC5iYXNlY21kICsgIiB1cGdyYWRlIiwgZCwgd29ya2Rpcj11ZC5tb2RkaXIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEZldGNoRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlJ1bm5pbmcgJXMiLCBzdm51cGRhdGVjbWQpCi0gICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bnVwZGF0ZWNtZCwgdWQudXJsKQotICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKHN2bnVwZGF0ZWNtZCwgZCwgd29ya2Rpcj11ZC5tb2RkaXIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZuY21kKQorICAgICAgICAgICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCBzdm5jbWQsIHVkLnVybCkKKyAgICAgICAgICAgICAgICBydW5mZXRjaGNtZChzdm5jbWQsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdm5mZXRjaGNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgImZldGNoIikKKyAgICAgICAgICAgICAgICBzdm5jbWQgPSBzZWxmLl9idWlsZHN2bmNvbW1hbmQodWQsIGQsICJmZXRjaCIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoICIgKyB1ZC51cmwpCiAgICAgICAgICAgICAgICAgIyBjaGVjayBvdXQgc291cmNlcyB0aGVyZQogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5wa2dkaXIpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZuZmV0Y2hjbWQpCi0gICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bmZldGNoY21kLCB1ZC51cmwpCi0gICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuZmV0Y2hjbWQsIGQsIHdvcmtkaXI9dWQucGtnZGlyKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bmNtZCkKKyAgICAgICAgICAgICAgICBiYi5mZXRjaDIuY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgc3ZuY21kLCB1ZC51cmwpCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuY21kLCBkLCB3b3JrZGlyPXVkLnBrZ2RpcikKIAogICAgICAgICAgICAgaWYgbm90ICgiZXh0ZXJuYWxzIiBpbiB1ZC5wYXJtIGFuZCB1ZC5wYXJtWyJleHRlcm5hbHMiXSA9PSAibm93YXJuIik6CiAgICAgICAgICAgICAgICAgIyBXYXJuIHRoZSB1c2VyIGlmIHRoaXMgaGFkIGV4dGVybmFscyAod29uJ3QgY2F0Y2ggdGhlbSBhbGwpCiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gcnVuZmV0Y2hjbWQoInN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgfHwgdHJ1ZSIsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQogICAgICAgICAgICAgICAgIGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICAgICAgaWYgIi0taWdub3JlLWV4dGVybmFscyIgaW4gc3ZuZmV0Y2hjbWQuc3BsaXQoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgIi0taWdub3JlLWV4dGVybmFscyIgaW4gc3ZuY21kLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCIlcyBjb250YWlucyBzdm46ZXh0ZXJuYWxzLiIgJSB1ZC51cmwpCiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGVzZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHJlY2lwZSBTUkNfVVJJIGFzIG5lY2Vzc2FyeS4iKQogICAgICAgICAgICAgICAgICAgICAgICAgYmIud2Fybigic3ZuIGZldGNoIGhhcyBpZ25vcmVkIGV4dGVybmFsczpcbiVzIiAlIG91dHB1dCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CmluZGV4IDcyNTU4NmQuLmY3ZDFkZTIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQpAQCAtMTIsMTEgKzEyLDEwIEBACiAjCiAjIEJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYXNlIGJiIG1vZHVsZSwgQ29weXJpZ2h0IDIwMDMgSG9sZ2VyIFNjaHVyaWcKIAoraW1wb3J0IHNobGV4CiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBlcnJubwogaW1wb3J0IGJiCiBpbXBvcnQgYmIucHJvZ3Jlc3MKQEAgLTI3LDcgKzI2LDYgQEAKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoQ29ubmVjdGlvbkNhY2hlCiBmcm9tICAgYmIudXRpbHMgaW1wb3J0IGV4cG9ydF9wcm94aWVzCiBmcm9tICAgYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCiBmcm9tICAgYnM0IGltcG9ydCBTb3VwU3RyYWluZXIKQEAgLTk0LDkgKzkyLDkgQEAKICAgICAgICAgZmV0Y2hjbWQgPSBzZWxmLmJhc2VjbWQKIAogICAgICAgICBpZiAnZG93bmxvYWRmaWxlbmFtZScgaW4gdWQucGFybToKLSAgICAgICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRsZGlyICsgb3Muc2VwICsgdWQubG9jYWxmaWxlKSkKLSAgICAgICAgICAgIGZldGNoY21kICs9ICIgLU8gIiArIGRsZGlyICsgb3Muc2VwICsgdWQubG9jYWxmaWxlCisgICAgICAgICAgICBsb2NhbHBhdGggPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRMX0RJUiIpLCB1ZC5sb2NhbGZpbGUpCisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGxvY2FscGF0aCkpCisgICAgICAgICAgICBmZXRjaGNtZCArPSAiIC1PICVzIiAlIHNobGV4LnF1b3RlKGxvY2FscGF0aCkKIAogICAgICAgICBpZiB1ZC51c2VyIGFuZCB1ZC5wc3dkOgogICAgICAgICAgICAgZmV0Y2hjbWQgKz0gIiAtLXVzZXI9JXMgLS1wYXNzd29yZD0lcyAtLWF1dGgtbm8tY2hhbGxlbmdlIiAlICh1ZC51c2VyLCB1ZC5wc3dkKQpAQCAtMzAyLDYgKzMwMCw3IEBACiAgICAgICAgICAgICAjIFNvbWUgc2VydmVycyAoRnVzaW9uRm9yZ2UsIGFzIHVzZWQgb24gQWxpb3RoKSByZXF1aXJlIHRoYXQgdGhlCiAgICAgICAgICAgICAjIG9wdGlvbmFsIEFjY2VwdCBoZWFkZXIgaXMgc2V0LgogICAgICAgICAgICAgci5hZGRfaGVhZGVyKCJBY2NlcHQiLCAiKi8qIikKKyAgICAgICAgICAgIHIuYWRkX2hlYWRlcigiVXNlci1BZ2VudCIsICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuMTIpIEdlY2tvLzIwMTAxMDI3IFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjEyIikKICAgICAgICAgICAgIGRlZiBhZGRfYmFzaWNfYXV0aChsb2dpbl9zdHIsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgICcnJ0FkZHMgQmFzaWMgYXV0aCB0byBodHRwIHJlcXVlc3QsIHBhc3MgaW4gbG9naW46cGFzc3dvcmQgYXMgc3RyaW5nJycnCiAgICAgICAgICAgICAgICAgaW1wb3J0IGJhc2U2NApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tb25pdG9yZGlzay5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvbW9uaXRvcmRpc2sucHkKaW5kZXggMWEyNWIwMC4uZTdjMDcyNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tb25pdG9yZGlzay5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL21vbml0b3JkaXNrLnB5CkBAIC00LDcgKzQsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcywgbG9nZ2luZywgcmUsIHN5cworaW1wb3J0IG9zLCBsb2dnaW5nLCByZQogaW1wb3J0IGJiCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5Nb25pdG9yIikKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQppbmRleCA2MjE2ZWIzLi5jMGIzNDRlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQpAQCAtMTMsOSArMTMsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBsb2dnaW5nLmNvbmZpZwogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnkKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGJiCiBpbXBvcnQgYmIuZXZlbnQKIApAQCAtMTAwLDYgKzk5LDkgQEAKICAgICBkZWYgZW5hYmxlX2NvbG9yKHNlbGYpOgogICAgICAgICBzZWxmLmNvbG9yX2VuYWJsZWQgPSBUcnVlCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgZm10PSclcycgY29sb3I9JXMiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9mbXQsICJUcnVlIiBpZiBzZWxmLmNvbG9yX2VuYWJsZWQgZWxzZSAiRmFsc2UiKQorCiBjbGFzcyBCQkxvZ0ZpbHRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBsZXZlbCwgZGVidWdfZG9tYWlucyk6CiAgICAgICAgIHNlbGYuc3RkbGV2ZWwgPSBsZXZlbApAQCAtMTE4LDYwICsxMjAsNTkgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCi1jbGFzcyBCQkxvZ0ZpbHRlclN0ZEVycihCQkxvZ0ZpbHRlcik6Ci0gICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiBub3QgQkJMb2dGaWx0ZXIuZmlsdGVyKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPj0gbG9nZ2luZy5FUlJPUjoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQorY2xhc3MgTG9nRmlsdGVyR0VRTGV2ZWwobG9nZ2luZy5GaWx0ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsZXZlbCk6CisgICAgICAgIHNlbGYuc3RybGV2ZWwgPSBzdHIobGV2ZWwpCisgICAgICAgIHNlbGYubGV2ZWwgPSBzdHJpbmdUb0xldmVsKGxldmVsKQogCi1jbGFzcyBCQkxvZ0ZpbHRlclN0ZE91dChCQkxvZ0ZpbHRlcik6CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIGxldmVsID49ICVzICglZCkiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnN0cmxldmVsLCBzZWxmLmxldmVsKQorCiAgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiBub3QgQkJMb2dGaWx0ZXIuZmlsdGVyKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPCBsb2dnaW5nLkVSUk9SOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAocmVjb3JkLmxldmVsbm8gPj0gc2VsZi5sZXZlbCkKKworY2xhc3MgTG9nRmlsdGVyTFRMZXZlbChsb2dnaW5nLkZpbHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxldmVsKToKKyAgICAgICAgc2VsZi5zdHJsZXZlbCA9IHN0cihsZXZlbCkKKyAgICAgICAgc2VsZi5sZXZlbCA9IHN0cmluZ1RvTGV2ZWwobGV2ZWwpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgbGV2ZWwgPCAlcyAoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5zdHJsZXZlbCwgc2VsZi5sZXZlbCkKKworICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgcmV0dXJuIChyZWNvcmQubGV2ZWxubyA8IHNlbGYubGV2ZWwpCiAKICMgTWVzc2FnZSBjb250cm9sIGZ1bmN0aW9ucwogIwogCi1sb2dnZXJEZWZhdWx0RGVidWdMZXZlbCA9IDAKK2xvZ2dlckRlZmF1bHRMb2dMZXZlbCA9IEJCTG9nRm9ybWF0dGVyLk5PVEUKIGxvZ2dlckRlZmF1bHRWZXJib3NlID0gRmFsc2UKIGxvZ2dlclZlcmJvc2VMb2dzID0gRmFsc2UKLWxvZ2dlckRlZmF1bHREb21haW5zID0gW10KK2xvZ2dlckRlZmF1bHREb21haW5zID0ge30KIAogZGVmIGluaXRfbXNnY29uZmlnKHZlcmJvc2UsIGRlYnVnLCBkZWJ1Z19kb21haW5zPU5vbmUpOgogICAgICIiIgogICAgIFNldCBkZWZhdWx0IHZlcmJvc2l0eSBhbmQgZGVidWcgbGV2ZWxzIGNvbmZpZyB0aGUgbG9nZ2VyCiAgICAgIiIiCi0gICAgYmIubXNnLmxvZ2dlckRlZmF1bHREZWJ1Z0xldmVsID0gZGVidWcKICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdFZlcmJvc2UgPSB2ZXJib3NlCiAgICAgaWYgdmVyYm9zZToKICAgICAgICAgYmIubXNnLmxvZ2dlclZlcmJvc2VMb2dzID0gVHJ1ZQotICAgIGlmIGRlYnVnX2RvbWFpbnM6Ci0gICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucyA9IGRlYnVnX2RvbWFpbnMKLSAgICBlbHNlOgotICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMgPSBbXQotCi1kZWYgY29uc3RydWN0TG9nT3B0aW9ucygpOgotICAgIGRlYnVnID0gbG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwKLSAgICB2ZXJib3NlID0gbG9nZ2VyRGVmYXVsdFZlcmJvc2UKLSAgICBkb21haW5zID0gbG9nZ2VyRGVmYXVsdERvbWFpbnMKIAogICAgIGlmIGRlYnVnOgotICAgICAgICBsZXZlbCA9IEJCTG9nRm9ybWF0dGVyLkRFQlVHIC0gZGVidWcgKyAxCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5ERUJVRyAtIGRlYnVnICsgMQogICAgIGVsaWYgdmVyYm9zZToKLSAgICAgICAgbGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5WRVJCT1NFCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5WRVJCT1NFCiAgICAgZWxzZToKLSAgICAgICAgbGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5OT1RFCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5OT1RFCiAKLSAgICBkZWJ1Z19kb21haW5zID0ge30KLSAgICBmb3IgKGRvbWFpbmFyZywgaXRlcmF0b3IpIGluIGdyb3VwYnkoZG9tYWlucyk6Ci0gICAgICAgIGRsZXZlbCA9IGxlbih0dXBsZShpdGVyYXRvcikpCi0gICAgICAgIGRlYnVnX2RvbWFpbnNbIkJpdEJha2UuJXMiICUgZG9tYWluYXJnXSA9IGxvZ2dpbmcuREVCVUcgLSBkbGV2ZWwgKyAxCi0gICAgcmV0dXJuIGxldmVsLCBkZWJ1Z19kb21haW5zCisgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zID0ge30KKyAgICBpZiBkZWJ1Z19kb21haW5zOgorICAgICAgICBmb3IgKGRvbWFpbmFyZywgaXRlcmF0b3IpIGluIGdyb3VwYnkoZGVidWdfZG9tYWlucyk6CisgICAgICAgICAgICBkbGV2ZWwgPSBsZW4odHVwbGUoaXRlcmF0b3IpKQorICAgICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zWyJCaXRCYWtlLiVzIiAlIGRvbWFpbmFyZ10gPSBsb2dnaW5nLkRFQlVHIC0gZGxldmVsICsgMQorCitkZWYgY29uc3RydWN0TG9nT3B0aW9ucygpOgorICAgIHJldHVybiBsb2dnZXJEZWZhdWx0TG9nTGV2ZWwsIGxvZ2dlckRlZmF1bHREb21haW5zCiAKIGRlZiBhZGREZWZhdWx0bG9nRmlsdGVyKGhhbmRsZXIsIGNscyA9IEJCTG9nRmlsdGVyLCBmb3JjZWxldmVsPU5vbmUpOgogICAgIGxldmVsLCBkZWJ1Z19kb21haW5zID0gY29uc3RydWN0TG9nT3B0aW9ucygpCkBAIC0xODEsNiArMTgyLDE5IEBACiAKICAgICBjbHMoaGFuZGxlciwgbGV2ZWwsIGRlYnVnX2RvbWFpbnMpCiAKK2RlZiBzdHJpbmdUb0xldmVsKGxldmVsKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbnQobGV2ZWwpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIobG9nZ2luZywgbGV2ZWwpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisKKyAgICByZXR1cm4gZ2V0YXR0cihCQkxvZ0Zvcm1hdHRlciwgbGV2ZWwpCisKICMKICMgTWVzc2FnZSBoYW5kbGluZyBmdW5jdGlvbnMKICMKQEAgLTIxNCwzICsyMjgsMTA1IEBACiAgICAgICAgICAgICBpZiBoYW5kbGVyLnN0cmVhbSBpbiBbc3lzLnN0ZGVyciwgc3lzLnN0ZG91dF06CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKKworZGVmIG1lcmdlTG9nZ2luZ0NvbmZpZyhsb2djb25maWcsIHVzZXJjb25maWcpOgorICAgIGxvZ2NvbmZpZyA9IGNvcHkuZGVlcGNvcHkobG9nY29uZmlnKQorICAgIHVzZXJjb25maWcgPSBjb3B5LmRlZXBjb3B5KHVzZXJjb25maWcpCisKKyAgICAjIE1lcmdlIGNvbmZpZyB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZworICAgIGlmIHVzZXJjb25maWcuZ2V0KCd2ZXJzaW9uJykgIT0gbG9nY29uZmlnWyd2ZXJzaW9uJ106CisgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oIkJhZCB1c2VyIGNvbmZpZ3VyYXRpb24gdmVyc2lvbi4gRXhwZWN0ZWQgJXIsIGdvdCAlciIgJSAobG9nY29uZmlnWyd2ZXJzaW9uJ10sIHVzZXJjb25maWcuZ2V0KCd2ZXJzaW9uJykpKQorCisgICAgIyBTZXQgc29tZSBkZWZhdWx0cyB0byBtYWtlIG1lcmdpbmcgZWFzaWVyCisgICAgdXNlcmNvbmZpZy5zZXRkZWZhdWx0KCJsb2dnZXJzIiwge30pCisKKyAgICAjIElmIGEgaGFuZGxlciwgZm9ybWF0dGVyLCBvciBmaWx0ZXIgaXMgZGVmaW5lZCBpbiB0aGUgdXNlcgorICAgICMgY29uZmlnLCBpdCB3aWxsIHJlcGxhY2UgYW4gZXhpc3Rpbmcgb25lIGluIHRoZSBkZWZhdWx0IGNvbmZpZworICAgIGZvciBrIGluICgiaGFuZGxlcnMiLCAiZm9ybWF0dGVycyIsICJmaWx0ZXJzIik6CisgICAgICAgIGxvZ2NvbmZpZy5zZXRkZWZhdWx0KGssIHt9KS51cGRhdGUodXNlcmNvbmZpZy5nZXQoaywge30pKQorCisgICAgc2Vlbl9sb2dnZXJzID0gc2V0KCkKKyAgICBmb3IgbmFtZSwgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS5pdGVtcygpOgorICAgICAgICAjIElmIHRoZSBtZXJnZSBvcHRpb24gaXMgc2V0LCBtZXJnZSB0aGUgaGFuZGxlcnMgYW5kCisgICAgICAgICMgZmlsdGVycy4gT3RoZXJ3aXNlLCBpZiBpdCBpcyBGYWxzZSwgdGhpcyBsb2dnZXIgd29uJ3QgZ2V0CisgICAgICAgICMgYWRkIHRvIHRoZSBzZXQgb2Ygc2VlbiBsb2dnZXJzIGFuZCB3aWxsIHJlcGxhY2UgdGhlCisgICAgICAgICMgZXhpc3Rpbmcgb25lCisgICAgICAgIGlmIGwuZ2V0KCdiaXRiYWtlX21lcmdlJywgVHJ1ZSk6CisgICAgICAgICAgICB1bG9nZ2VyID0gdXNlcmNvbmZpZ1sibG9nZ2VycyJdLnNldGRlZmF1bHQobmFtZSwge30pCisgICAgICAgICAgICB1bG9nZ2VyLnNldGRlZmF1bHQoImhhbmRsZXJzIiwgW10pCisgICAgICAgICAgICB1bG9nZ2VyLnNldGRlZmF1bHQoImZpbHRlcnMiLCBbXSkKKworICAgICAgICAgICAgIyBNZXJnZSBsaXN0cworICAgICAgICAgICAgbC5zZXRkZWZhdWx0KCJoYW5kbGVycyIsIFtdKS5leHRlbmQodWxvZ2dlclsiaGFuZGxlcnMiXSkKKyAgICAgICAgICAgIGwuc2V0ZGVmYXVsdCgiZmlsdGVycyIsIFtdKS5leHRlbmQodWxvZ2dlclsiZmlsdGVycyJdKQorCisgICAgICAgICAgICAjIFJlcGxhY2Ugb3RoZXIgcHJvcGVydGllcyBpZiBwcmVzZW50CisgICAgICAgICAgICBpZiAibGV2ZWwiIGluIHVsb2dnZXI6CisgICAgICAgICAgICAgICAgbFsibGV2ZWwiXSA9IHVsb2dnZXJbImxldmVsIl0KKworICAgICAgICAgICAgaWYgInByb3BhZ2F0ZSIgaW4gdWxvZ2dlcjoKKyAgICAgICAgICAgICAgICBsWyJwcm9wYWdhdGUiXSA9IHVsb2dnZXJbInByb3BhZ2F0ZSJdCisKKyAgICAgICAgICAgIHNlZW5fbG9nZ2Vycy5hZGQobmFtZSkKKworICAgICMgQWRkIGFsbCBsb2dnZXJzIHByZXNlbnQgaW4gdGhlIHVzZXIgY29uZmlnLCBidXQgbm90IGFueSB0aGF0CisgICAgIyBoYXZlIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQKKyAgICBmb3IgbmFtZSBpbiBzZXQodXNlcmNvbmZpZ1sibG9nZ2VycyJdLmtleXMoKSkgLSBzZWVuX2xvZ2dlcnM6CisgICAgICAgIGxvZ2NvbmZpZ1sibG9nZ2VycyJdW25hbWVdID0gdXNlcmNvbmZpZ1sibG9nZ2VycyJdW25hbWVdCisKKyAgICByZXR1cm4gbG9nY29uZmlnCisKK2RlZiBzZXRMb2dnaW5nQ29uZmlnKGRlZmF1bHRjb25maWcsIHVzZXJjb25maWdmaWxlPU5vbmUpOgorICAgIGxvZ2NvbmZpZyA9IGNvcHkuZGVlcGNvcHkoZGVmYXVsdGNvbmZpZykKKworICAgIGlmIHVzZXJjb25maWdmaWxlOgorICAgICAgICB3aXRoIG9wZW4odXNlcmNvbmZpZ2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGlmIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcueW1sJykgb3IgdXNlcmNvbmZpZ2ZpbGUuZW5kc3dpdGgoJy55YW1sJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHlhbWwKKyAgICAgICAgICAgICAgICB1c2VyY29uZmlnID0geWFtbC5sb2FkKGYpCisgICAgICAgICAgICBlbGlmIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcuanNvbicpIG9yIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcuY2ZnJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGpzb24KKyAgICAgICAgICAgICAgICB1c2VyY29uZmlnID0ganNvbi5sb2FkKGYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oIlVucmVjb2duaXplZCBmaWxlIGZvcm1hdDogJXMiICUgdXNlcmNvbmZpZ2ZpbGUpCisKKyAgICAgICAgICAgIGlmIHVzZXJjb25maWcuZ2V0KCdiaXRiYWtlX21lcmdlJywgVHJ1ZSk6CisgICAgICAgICAgICAgICAgbG9nY29uZmlnID0gbWVyZ2VMb2dnaW5nQ29uZmlnKGxvZ2NvbmZpZywgdXNlcmNvbmZpZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBlbnRpcmUgZGVmYXVsdCBjb25maWcKKyAgICAgICAgICAgICAgICBsb2djb25maWcgPSB1c2VyY29uZmlnCisKKyAgICAjIENvbnZlcnQgYWxsIGxldmVsIHBhcmFtZXRlcnMgdG8gaW50ZWdlcnMgaW4gY2FzZSB1c2VycyB3YW50IHRvIHVzZSB0aGUKKyAgICAjIGJpdGJha2UgZGVmaW5lZCBsZXZlbCBuYW1lcworICAgIGZvciBoIGluIGxvZ2NvbmZpZ1siaGFuZGxlcnMiXS52YWx1ZXMoKToKKyAgICAgICAgaWYgImxldmVsIiBpbiBoOgorICAgICAgICAgICAgaFsibGV2ZWwiXSA9IGJiLm1zZy5zdHJpbmdUb0xldmVsKGhbImxldmVsIl0pCisKKyAgICBmb3IgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS52YWx1ZXMoKToKKyAgICAgICAgaWYgImxldmVsIiBpbiBsOgorICAgICAgICAgICAgbFsibGV2ZWwiXSA9IGJiLm1zZy5zdHJpbmdUb0xldmVsKGxbImxldmVsIl0pCisKKyAgICBjb25mID0gbG9nZ2luZy5jb25maWcuZGljdENvbmZpZ0NsYXNzKGxvZ2NvbmZpZykKKyAgICBjb25mLmNvbmZpZ3VyZSgpCisKKyAgICAjIFRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZCBsb2dnaW5nIGRvbWFpbnMgdGhleSB3YW50IGF0IGEgaGlnaGVyIGRlYnVnCisgICAgIyBsZXZlbCB0aGFuIHRoZSBzdGFuZGFyZC4KKyAgICBmb3IgbmFtZSwgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS5pdGVtcygpOgorICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCJCaXRCYWtlLiIpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBub3QgImxldmVsIiBpbiBsOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjdXJsZXZlbCA9IGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucy5nZXQobmFtZSkKKyAgICAgICAgIyBOb3RlOiBsZXZlbCBwYXJhbWV0ZXIgc2hvdWxkIGFscmVhZHkgYmUgYSBpbnQgYmVjYXVzZSBvZiBjb252ZXJzaW9uCisgICAgICAgICMgYWJvdmUKKyAgICAgICAgbmV3bGV2ZWwgPSBpbnQobFsibGV2ZWwiXSkKKyAgICAgICAgaWYgY3VybGV2ZWwgaXMgTm9uZSBvciBuZXdsZXZlbCA8IGN1cmxldmVsOgorICAgICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zW25hbWVdID0gbmV3bGV2ZWwKKworICAgICAgICAjIFRPRE86IEkgZG9uJ3QgdGhpbmsgdGhhdCBzZXR0aW5nIHRoZSBnbG9iYWwgbG9nIGxldmVsIHNob3VsZCBiZSBuZWNlc3NhcnkKKyAgICAgICAgI2lmIG5ld2xldmVsIDwgYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbDoKKyAgICAgICAgIyAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdExvZ0xldmVsID0gbmV3bGV2ZWwKKworICAgIHJldHVybiBjb25mCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CmluZGV4IGYwOTExZTYuLmViOGNmYTIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CkBAIC05LDExICs5LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKLWltcG9ydCBpdGVydG9vbHMKIGZyb20gYmIgaW1wb3J0IG1ldGhvZHBvb2wKIGZyb20gYmIucGFyc2UgaW1wb3J0IGxvZ2dlcgogCkBAIC05Myw3ICs4OSw3IEBACiAgICAgICAgIHNlbGYuZ3JvdXBkID0gZ3JvdXBkCiAKICAgICBkZWYgZ2V0RnVuYyhzZWxmLCBrZXksIGRhdGEpOgotICAgICAgICBpZiAnZmxhZycgaW4gc2VsZi5ncm91cGQgYW5kIHNlbGYuZ3JvdXBkWydmbGFnJ10gIT0gTm9uZToKKyAgICAgICAgaWYgJ2ZsYWcnIGluIHNlbGYuZ3JvdXBkIGFuZCBzZWxmLmdyb3VwZFsnZmxhZyddIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0VmFyRmxhZyhrZXksIHNlbGYuZ3JvdXBkWydmbGFnJ10sIGV4cGFuZD1GYWxzZSwgbm93ZWFrZGVmYXVsdD1UcnVlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0VmFyKGtleSwgRmFsc2UsIG5vd2Vha2RlZmF1bHQ9VHJ1ZSwgcGFyc2luZz1UcnVlKQpAQCAtMTA2LDM2ICsxMDIsMzYgQEAKICAgICAgICAgICAgICdmaWxlJzogc2VsZi5maWxlbmFtZSwKICAgICAgICAgICAgICdsaW5lJzogc2VsZi5saW5lbm8sCiAgICAgICAgIH0KLSAgICAgICAgaWYgImV4cCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImV4cCJdICE9IE5vbmU6CisgICAgICAgIGlmICJleHAiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJleHAiXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGRhdGEuc2V0VmFyRmxhZyhrZXksICJleHBvcnQiLCAxLCBvcCA9ICdleHBvcnRlZCcsICoqbG9naW5mbykKIAogICAgICAgICBvcCA9ICJzZXQiCi0gICAgICAgIGlmICJxdWVzIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicXVlcyJdICE9IE5vbmU6CisgICAgICAgIGlmICJxdWVzIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicXVlcyJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdmFsID0gc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkKICAgICAgICAgICAgIG9wID0gInNldD8iCi0gICAgICAgICAgICBpZiB2YWwgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHZhbCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHZhbCA9IGdyb3VwZFsidmFsdWUiXQotICAgICAgICBlbGlmICJjb2xvbiIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImNvbG9uIl0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAiY29sb24iIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJjb2xvbiJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZSA9IGRhdGEuY3JlYXRlQ29weSgpCiAgICAgICAgICAgICBvcCA9ICJpbW1lZGlhdGUiCiAgICAgICAgICAgICB2YWwgPSBlLmV4cGFuZChncm91cGRbInZhbHVlIl0sIGtleSArICJbOj1dIikKLSAgICAgICAgZWxpZiAiYXBwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiYXBwZW5kIl0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAiYXBwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiYXBwZW5kIl0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJhcHBlbmQiCiAgICAgICAgICAgICB2YWwgPSAiJXMgJXMiICUgKChzZWxmLmdldEZ1bmMoa2V5LCBkYXRhKSBvciAiIiksIGdyb3VwZFsidmFsdWUiXSkKLSAgICAgICAgZWxpZiAicHJlcGVuZCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInByZXBlbmQiXSAhPSBOb25lOgorICAgICAgICBlbGlmICJwcmVwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlcGVuZCJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb3AgPSAicHJlcGVuZCIKICAgICAgICAgICAgIHZhbCA9ICIlcyAlcyIgJSAoZ3JvdXBkWyJ2YWx1ZSJdLCAoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpKQotICAgICAgICBlbGlmICJwb3N0ZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicG9zdGRvdCJdICE9IE5vbmU6CisgICAgICAgIGVsaWYgInBvc3Rkb3QiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJwb3N0ZG90Il0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJwb3N0ZG90IgogICAgICAgICAgICAgdmFsID0gIiVzJXMiICUgKChzZWxmLmdldEZ1bmMoa2V5LCBkYXRhKSBvciAiIiksIGdyb3VwZFsidmFsdWUiXSkKLSAgICAgICAgZWxpZiAicHJlZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlZG90Il0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAicHJlZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlZG90Il0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJwcmVkb3QiCiAgICAgICAgICAgICB2YWwgPSAiJXMlcyIgJSAoZ3JvdXBkWyJ2YWx1ZSJdLCAoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdmFsID0gZ3JvdXBkWyJ2YWx1ZSJdCiAKICAgICAgICAgZmxhZyA9IE5vbmUKLSAgICAgICAgaWYgJ2ZsYWcnIGluIGdyb3VwZCBhbmQgZ3JvdXBkWydmbGFnJ10gIT0gTm9uZToKKyAgICAgICAgaWYgJ2ZsYWcnIGluIGdyb3VwZCBhbmQgZ3JvdXBkWydmbGFnJ10gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBmbGFnID0gZ3JvdXBkWydmbGFnJ10KICAgICAgICAgZWxpZiBncm91cGRbImxhenlxdWVzIl06CiAgICAgICAgICAgICBmbGFnID0gIl9kZWZhdWx0dmFsIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQppbmRleCA2ZjdjZjgyLi42ZTIxNmVmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQpAQCAtMTMsOSArMTMsNyBAQAogIwogCiBpbXBvcnQgcmUsIGJiLCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYi5idWlsZCwgYmIudXRpbHMKLWZyb20gYmIgaW1wb3J0IGRhdGEKIAogZnJvbSAuIGltcG9ydCBDb25mSGFuZGxlcgogZnJvbSAuLiBpbXBvcnQgcmVzb2x2ZV9maWxlLCBhc3QsIGxvZ2dlciwgUGFyc2VFcnJvcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wZXJzaXN0X2RhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQppbmRleCBkZThmODdhLi43MzU3YWIyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQpAQCAtMTc5LDYgKzE3OSw5IEBACiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ09ubHkgc3RyaW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkJykKIAorICAgICAgICAjIEVuc3VyZSB0aGUgZW50aXJlIHRyYW5zYWN0aW9uIChpbmNsdWRpbmcgU0VMRUNUKSBleGVjdXRlcyB1bmRlciB3cml0ZSBsb2NrCisgICAgICAgIGN1cnNvci5leGVjdXRlKCJCRUdJTiBFWENMVVNJVkUiKQorCiAgICAgICAgIGN1cnNvci5leGVjdXRlKCJTRUxFQ1QgKiBmcm9tICVzIHdoZXJlIGtleT0/OyIgJSBzZWxmLnRhYmxlLCBba2V5XSkKICAgICAgICAgcm93ID0gY3Vyc29yLmZldGNob25lKCkKICAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9ncmVzcy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvZ3Jlc3MucHkKaW5kZXggNDAyMmNhYS4uOWM3NTViNyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9ncmVzcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Byb2dyZXNzLnB5CkBAIC03LDcgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHRpbWUKIGltcG9ydCBpbnNwZWN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Byb3ZpZGVycy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CmluZGV4IGY4MDk2M2MuLjgxNDU5YzMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CkBAIC05MiwxMSArOTIsMTEgQEAKICAgICBDaGVjayBpZiB0aGUgdmVyc2lvbiBwZSxwdixwciBpcyB0aGUgcHJlZmVycmVkIG9uZS4KICAgICBJZiB0aGVyZSBpcyBwcmVmZXJyZWQgdmVyc2lvbiBkZWZpbmVkIGFuZCBlbmRzIHdpdGggJyUnLCB0aGVuIHB2IGhhcyB0byBzdGFydCB3aXRoIHRoYXQgdmVyc2lvbiBhZnRlciByZW1vdmluZyB0aGUgJyUnCiAgICAgIiIiCi0gICAgaWYgKHByID09IHByZWZlcnJlZF9yIG9yIHByZWZlcnJlZF9yID09IE5vbmUpOgotICAgICAgICBpZiAocGUgPT0gcHJlZmVycmVkX2Ugb3IgcHJlZmVycmVkX2UgPT0gTm9uZSk6CisgICAgaWYgcHIgPT0gcHJlZmVycmVkX3Igb3IgcHJlZmVycmVkX3IgaXMgTm9uZToKKyAgICAgICAgaWYgcGUgPT0gcHJlZmVycmVkX2Ugb3IgcHJlZmVycmVkX2UgaXMgTm9uZToKICAgICAgICAgICAgIGlmIHByZWZlcnJlZF92ID09IHB2OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBpZiBwcmVmZXJyZWRfdiAhPSBOb25lIGFuZCBwcmVmZXJyZWRfdi5lbmRzd2l0aCgnJScpIGFuZCBwdi5zdGFydHN3aXRoKHByZWZlcnJlZF92WzpsZW4ocHJlZmVycmVkX3YpLTFdKToKKyAgICAgICAgICAgIGlmIHByZWZlcnJlZF92IGlzIG5vdCBOb25lIGFuZCBwcmVmZXJyZWRfdi5lbmRzd2l0aCgnJScpIGFuZCBwdi5zdGFydHN3aXRoKHByZWZlcnJlZF92WzpsZW4ocHJlZmVycmVkX3YpLTFdKToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3JlbW90ZWRhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3JlbW90ZWRhdGEucHkKaW5kZXggNzM5MWUxYi4uNmM5ODY0ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9yZW1vdGVkYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcmVtb3RlZGF0YS5weQpAQCAtMTcsMTYgKzE3LDE2IEBACiAgICAgICAgIHNlbGYuY29va2VyID0gY29va2VyCiAgICAgICAgIHNlbGYuZGF0YXN0b3JlcyA9IHt9CiAgICAgICAgIHNlbGYubG9ja2VkID0gW10KKyAgICAgICAgc2VsZi5kYXRhc3RvcmVzWzBdID0gc2VsZi5jb29rZXIuZGF0YQogICAgICAgICBzZWxmLm5leHRpbmRleCA9IDEKIAogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YXN0b3JlcykKIAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICBpZiBrZXkgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvb2tlci5kYXRhCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5kYXRhc3RvcmVzW2tleV0KKyAgICAgICAgIyBDb29rZXIgY291bGQgaGF2ZSBjaGFuZ2VkIGl0cyBkYXRhc3RvcmUgZnJvbSB1bmRlciB1cworICAgICAgICBzZWxmLmRhdGFzdG9yZXNbMF0gPSBzZWxmLmNvb2tlci5kYXRhCisgICAgICAgIHJldHVybiBzZWxmLmRhdGFzdG9yZXNba2V5XQogCiAgICAgZGVmIGl0ZW1zKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhc3RvcmVzLml0ZW1zKCkKQEAgLTYzLDQ0ICs2MywzIEBACiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RyaWVkIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFzdG9yZSAlZCcgJSBpZHgpCiAgICAgICAgIGRlbCBzZWxmLmRhdGFzdG9yZXNbaWR4XQogCi0gICAgZGVmIHJlY2VpdmVfZGF0YXN0b3JlKHNlbGYsIHJlbW90ZV9kYXRhKToKLSAgICAgICAgIiIiUmVjZWl2ZSBhIGRhdGFzdG9yZSBvYmplY3Qgc2VudCBmcm9tIHRoZSBjbGllbnQgKGFzIHByZXBhcmVkIGJ5IHRyYW5zbWl0X2RhdGFzdG9yZSgpKSIiIgotICAgICAgICBkY3QgPSBkaWN0KHJlbW90ZV9kYXRhKQotICAgICAgICBkID0gYmIuZGF0YV9zbWFydC5EYXRhU21hcnQoKQotICAgICAgICBkLmRpY3QgPSBkY3QKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBkc2luZGV4ID0gZGN0WydfcmVtb3RlX2RhdGEnXVsnX2NvbnRlbnQnXQotICAgICAgICAgICAgICAgIGRlbCBkY3RbJ19yZW1vdGVfZGF0YSddCi0gICAgICAgICAgICAgICAgaWYgZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBzZWxmLmNvb2tlci5kYXRhLmRpY3QKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBzZWxmLmRhdGFzdG9yZXNbZHNpbmRleF0uZGljdAotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbGlmICdfZGF0YScgaW4gZGN0OgotICAgICAgICAgICAgICAgIGlkY3QgPSBkaWN0KGRjdFsnX2RhdGEnXSkKLSAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBpZGN0Ci0gICAgICAgICAgICAgICAgZGN0ID0gaWRjdAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICByZXR1cm4gZAotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiB0cmFuc21pdF9kYXRhc3RvcmUoZCk6Ci0gICAgICAgICIiIlByZXBhcmUgYSBkYXRhc3RvcmUgb2JqZWN0IGZvciBzZW5kaW5nIG92ZXIgSVBDIGZyb20gdGhlIGNsaWVudCBlbmQiIiIKLSAgICAgICAgIyBGSVhNRSBjb250ZW50IG1pZ2h0IGJlIGEgZGljdCwgbmVlZCB0byB0dXJuIHRoYXQgaW50byBhIGxpc3QgYXMgd2VsbAotICAgICAgICBkZWYgY29weV9kaWN0cyhkY3QpOgotICAgICAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gZGN0OgotICAgICAgICAgICAgICAgIGRzaW5kZXggPSBkY3RbJ19yZW1vdGVfZGF0YSddWydfY29udGVudCddLmRzaW5kZXgKLSAgICAgICAgICAgICAgICBuZXdkY3QgPSBkY3QuY29weSgpCi0gICAgICAgICAgICAgICAgbmV3ZGN0WydfcmVtb3RlX2RhdGEnXSA9IHsnX2NvbnRlbnQnOiBkc2luZGV4fQotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0KG5ld2RjdC5pdGVtcygpKQotICAgICAgICAgICAgZWxpZiAnX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBuZXdkY3QgPSBkY3QuY29weSgpCi0gICAgICAgICAgICAgICAgbmV3ZGF0YSA9IGNvcHlfZGljdHMoZGN0WydfZGF0YSddKQotICAgICAgICAgICAgICAgIGlmIG5ld2RhdGE6Ci0gICAgICAgICAgICAgICAgICAgIG5ld2RjdFsnX2RhdGEnXSA9IG5ld2RhdGEKLSAgICAgICAgICAgICAgICByZXR1cm4gbGlzdChuZXdkY3QuaXRlbXMoKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIG1haW5fZGljdCA9IGNvcHlfZGljdHMoZC5kaWN0KQotICAgICAgICByZXR1cm4gbWFpbl9kaWN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCAyNjQ5MmU3Li4xNmYwNzZmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKQEAgLTEyLDE0ICsxMiwxMiBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN0YXQKLWltcG9ydCBmY250bAogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgYmIKLWZyb20gYmIgaW1wb3J0IG1zZywgZGF0YSwgZXZlbnQKK2Zyb20gYmIgaW1wb3J0IG1zZywgZXZlbnQKIGZyb20gYmIgaW1wb3J0IG1vbml0b3JkaXNrCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHBpY2tsZQpAQCAtMjksNiArMjcsNyBAQAogCiBiYmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlJ1blF1ZXVlIikKK2hhc2hlcXVpdl9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5SdW5RdWV1ZS5IYXNoRXF1aXYiKQogCiBfX2ZpbmRfc2hhMjU2X18gPSByZS5jb21waWxlKCByJyg/aSkoPzwhW2EtejAtOV0pW2EtZjAtOV17NjR9KD8hW2EtejAtOV0pJyApCiAKQEAgLTE0OCw4ICsxNDcsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBpZCBvZiB0aGUgZmlyc3QgdGFzayB3ZSBmaW5kIHRoYXQgaXMgYnVpbGRhYmxlCiAgICAgICAgICIiIgorICAgICAgICAjIE9uY2UgdGFza3MgYXJlIHJ1bm5pbmcgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGVtIGFnYWluCisgICAgICAgIHNlbGYuYnVpbGRhYmxlLmRpZmZlcmVuY2VfdXBkYXRlKHNlbGYucnEucnVucV9ydW5uaW5nKQogICAgICAgICBidWlsZGFibGUgPSBzZXQoc2VsZi5idWlsZGFibGUpCi0gICAgICAgIGJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLnJ1bnFfcnVubmluZykKICAgICAgICAgYnVpbGRhYmxlLmRpZmZlcmVuY2VfdXBkYXRlKHNlbGYucnEuaG9sZG9mZl90YXNrcykKICAgICAgICAgYnVpbGRhYmxlLmludGVyc2VjdGlvbl91cGRhdGUoc2VsZi5ycS50YXNrc19jb3ZlcmVkIHwgc2VsZi5ycS50YXNrc19ub3Rjb3ZlcmVkKQogICAgICAgICBpZiBub3QgYnVpbGRhYmxlOgpAQCAtMjA3LDggKzIwNyw2IEBACiAKICAgICBkZWYgbmV3YnVpbGRhYmxlKHNlbGYsIHRhc2spOgogICAgICAgICBzZWxmLmJ1aWxkYWJsZS5hZGQodGFzaykKLSAgICAgICAgIyBPbmNlIHRhc2tzIGFyZSBydW5uaW5nIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlbSBhZ2FpbgotICAgICAgICBzZWxmLmJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLnJ1bnFfcnVubmluZykKIAogICAgIGRlZiByZW1vdmVidWlsZGFibGUoc2VsZiwgdGFzayk6CiAgICAgICAgIHNlbGYuYnVpbGRhYmxlLnJlbW92ZSh0YXNrKQpAQCAtOTIzLDkgKzkyMSwxMSBAQAogICAgICAgICAgICAgcnVucV9idWlsZCA9IHt9CiAKICAgICAgICAgICAgIGZvciB0YXNrIGluIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsOgorICAgICAgICAgICAgICAgIGlmIG5vdCB0YXNrLnN0YXJ0c3dpdGgoImRvXyIpOgorICAgICAgICAgICAgICAgICAgICB0YXNrID0gImRvX3swfSIuZm9ybWF0KHRhc2spCiAgICAgICAgICAgICAgICAgcnVuYWxsX3RpZHMgPSBzZXQoKQogICAgICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChzZWxmLnJ1bnRhc2tlbnRyaWVzKToKLSAgICAgICAgICAgICAgICAgICAgd2FudHRpZCA9IGZuX2Zyb21fdGlkKHRpZCkgKyAiOmRvXyVzIiAlIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgd2FudHRpZCA9ICJ7MH06ezF9Ii5mb3JtYXQoZm5fZnJvbV90aWQodGlkKSwgdGFzaykKICAgICAgICAgICAgICAgICAgICAgaWYgd2FudHRpZCBpbiBkZWxjb3VudDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbd2FudHRpZF0gPSBkZWxjb3VudFt3YW50dGlkXQogICAgICAgICAgICAgICAgICAgICBpZiB3YW50dGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6CkBAIC05NTIsNyArOTUyLDkgQEAKICAgICAgICAgICAgIHJ1bnFfYnVpbGQgPSB7fQogCiAgICAgICAgICAgICBmb3IgdGFzayBpbiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bm9ubHk6Ci0gICAgICAgICAgICAgICAgcnVub25seV90aWRzID0geyBrOiB2IGZvciBrLCB2IGluIHNlbGYucnVudGFza2VudHJpZXMuaXRlbXMoKSBpZiB0YXNrbmFtZV9mcm9tX3RpZChrKSA9PSAiZG9fJXMiICUgdGFzayB9CisgICAgICAgICAgICAgICAgaWYgbm90IHRhc2suc3RhcnRzd2l0aCgiZG9fIik6CisgICAgICAgICAgICAgICAgICAgIHRhc2sgPSAiZG9fezB9Ii5mb3JtYXQodGFzaykKKyAgICAgICAgICAgICAgICBydW5vbmx5X3RpZHMgPSB7IGs6IHYgZm9yIGssIHYgaW4gc2VsZi5ydW50YXNrZW50cmllcy5pdGVtcygpIGlmIHRhc2tuYW1lX2Zyb21fdGlkKGspID09IHRhc2sgfQogCiAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHJ1bm9ubHlfdGlkcyk6CiAgICAgICAgICAgICAgICAgICAgIG1hcmtfYWN0aXZlKHRpZCwxKQpAQCAtMTEyNSwxNCArMTEyNywxNCBAQAogICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCiAKICAgICAgICAgIyBJdGVyYXRlIG92ZXIgdGhlIHRhc2sgbGlzdCBsb29raW5nIGZvciB0YXNrcyB3aXRoIGEgJ3NldHNjZW5lJyBmdW5jdGlvbgotICAgICAgICBzZWxmLnJ1bnFfc2V0c2NlbmVfdGlkcyA9IFtdCisgICAgICAgIHNlbGYucnVucV9zZXRzY2VuZV90aWRzID0gc2V0KCkKICAgICAgICAgaWYgbm90IHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ubm9zZXRzY2VuZToKICAgICAgICAgICAgIGZvciB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllczoKICAgICAgICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgXykgPSBzcGxpdF90aWRfbWNmbih0aWQpCiAgICAgICAgICAgICAgICAgc2V0c2NlbmV0aWQgPSB0aWQgKyAiX3NldHNjZW5lIgogICAgICAgICAgICAgICAgIGlmIHNldHNjZW5ldGlkIG5vdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc2VsZi5ydW5xX3NldHNjZW5lX3RpZHMuYXBwZW5kKHRpZCkKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bnFfc2V0c2NlbmVfdGlkcy5hZGQodGlkKQogCiAgICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKIApAQCAtMTE4MiwxMCArMTE4NCw4IEBACiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5ydW50YXNrZW50cmllcykKIAogICAgIGRlZiBwcmVwYXJlX3Rhc2tfaGFzaChzZWxmLCB0aWQpOgotICAgICAgICBwcm9jZGVwID0gW10KLSAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKLSAgICAgICAgICAgIHByb2NkZXAuYXBwZW5kKGRlcCkKLSAgICAgICAgc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmhhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3Rhc2toYXNoKHRpZCwgcHJvY2RlcCwgc2VsZi5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQorICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucHJlcF90YXNraGFzaCh0aWQsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCisgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCiAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF91bmloYXNoKHRpZCkKIAogICAgIGRlZiBkdW1wX2RhdGEoc2VsZik6CkBAIC0xMjU1LDcgKzEyNTUsNyBAQAogICAgICAgICAgICAgImZha2Vyb290ZGlycyIgOiBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS5mYWtlcm9vdGRpcnMsCiAgICAgICAgICAgICAiZmFrZXJvb3Rub2VudiIgOiBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS5mYWtlcm9vdG5vZW52LAogICAgICAgICAgICAgInNpZ2RhdGEiIDogYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNrZGF0YSgpLAotICAgICAgICAgICAgImxvZ2RlZmF1bHRkZWJ1ZyIgOiBiYi5tc2cubG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwsCisgICAgICAgICAgICAibG9nZGVmYXVsdGxldmVsIiA6IGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwsCiAgICAgICAgICAgICAibG9nZGVmYXVsdHZlcmJvc2UiIDogYmIubXNnLmxvZ2dlckRlZmF1bHRWZXJib3NlLAogICAgICAgICAgICAgImxvZ2RlZmF1bHR2ZXJib3NlbG9ncyIgOiBiYi5tc2cubG9nZ2VyVmVyYm9zZUxvZ3MsCiAgICAgICAgICAgICAibG9nZGVmYXVsdGRvbWFpbiIgOiBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMsCkBAIC0xNzExLDYgKzE3MTEsNyBAQAogICAgICAgICBzZWxmLnJ1bnFfYnVpbGRhYmxlID0gc2V0KCkKICAgICAgICAgc2VsZi5ydW5xX3J1bm5pbmcgPSBzZXQoKQogICAgICAgICBzZWxmLnJ1bnFfY29tcGxldGUgPSBzZXQoKQorICAgICAgICBzZWxmLnJ1bnFfdGFza3NydW4gPSBzZXQoKQogCiAgICAgICAgIHNlbGYuYnVpbGRfc3RhbXBzID0ge30KICAgICAgICAgc2VsZi5idWlsZF9zdGFtcHMyID0gW10KQEAgLTE4OTYsNiArMTg5Nyw3IEBACiAgICAgICAgIHNlbGYuc3RhdHMudGFza0NvbXBsZXRlZCgpCiAgICAgICAgIGJiLmV2ZW50LmZpcmUocnVuUXVldWVUYXNrQ29tcGxldGVkKHRhc2ssIHNlbGYuc3RhdHMsIHNlbGYucnEpLCBzZWxmLmNmZ0RhdGEpCiAgICAgICAgIHNlbGYudGFza19jb21wbGV0ZW91dHJpZ2h0KHRhc2spCisgICAgICAgIHNlbGYucnVucV90YXNrc3J1bi5hZGQodGFzaykKIAogICAgIGRlZiB0YXNrX2ZhaWwoc2VsZiwgdGFzaywgZXhpdGNvZGUpOgogICAgICAgICAiIiIKQEAgLTE5NjIsMTIgKzE5NjQsMTcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgc2VsZi5ycS5yZWFkX3dvcmtlcnMoKQotICAgICAgICBzZWxmLnByb2Nlc3NfcG9zc2libGVfbWlncmF0aW9ucygpCisgICAgICAgIGlmIHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZSBvciBzZWxmLnBlbmRpbmdfbWlncmF0aW9uczoKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzc19wb3NzaWJsZV9taWdyYXRpb25zKCkKKworICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAic29ydGVkX3NldHNjZW5lX3RpZHMiKToKKyAgICAgICAgICAgICMgRG9uJ3Qgd2FudCB0byBzb3J0IHRoaXMgc2V0IGV2ZXJ5IGV4ZWN1dGlvbgorICAgICAgICAgICAgc2VsZi5zb3J0ZWRfc2V0c2NlbmVfdGlkcyA9IHNvcnRlZChzZWxmLnJxZGF0YS5ydW5xX3NldHNjZW5lX3RpZHMpCiAKICAgICAgICAgdGFzayA9IE5vbmUKICAgICAgICAgaWYgbm90IHNlbGYuc3Fkb25lIGFuZCBzZWxmLmNhbl9zdGFydF90YXNrKCk6CiAgICAgICAgICAgICAjIEZpbmQgdGhlIG5leHQgc2V0c2NlbmUgdG8gcnVuCi0gICAgICAgICAgICBmb3IgbmV4dHRhc2sgaW4gc29ydGVkKHNlbGYucnFkYXRhLnJ1bnFfc2V0c2NlbmVfdGlkcyk6CisgICAgICAgICAgICBmb3IgbmV4dHRhc2sgaW4gc2VsZi5zb3J0ZWRfc2V0c2NlbmVfdGlkczoKICAgICAgICAgICAgICAgICBpZiBuZXh0dGFzayBpbiBzZWxmLnNxX2J1aWxkYWJsZSBhbmQgbmV4dHRhc2sgbm90IGluIHNlbGYuc3FfcnVubmluZyBhbmQgc2VsZi5zcWRhdGEuc3RhbXBzW25leHR0YXNrXSBub3QgaW4gc2VsZi5idWlsZF9zdGFtcHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5leHR0YXNrIG5vdCBpbiBzZWxmLnNxZGF0YS51bnNraXBwYWJsZSBhbmQgbGVuKHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdKSA+IDAgYW5kIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkKSBhbmQgc2VsZi5jaGVja19kZXBlbmRlbmNpZXMobmV4dHRhc2ssIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5leHR0YXNrIG5vdCBpbiBzZWxmLnJxZGF0YS50YXJnZXRfdGlkczoKQEAgLTIwNTIsNyArMjA1OSw3IEBACiAgICAgICAgIHNlbGYudXBkYXRlX2hvbGRvZmZ0YXNrcygpCiAKICAgICAgICAgaWYgbm90IHNlbGYuc3FfbGl2ZSBhbmQgbm90IHNlbGYuc3Fkb25lIGFuZCBub3Qgc2VsZi5zcV9kZWZlcnJlZCBhbmQgbm90IHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZSBhbmQgbm90IHNlbGYuaG9sZG9mZl90YXNrczoKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXRzY2VuZSB0YXNrcyBjb21wbGV0ZWQiKQorICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJTZXRzY2VuZSB0YXNrcyBjb21wbGV0ZWQiKQogCiAgICAgICAgICAgICBlcnIgPSBzZWxmLnN1bW1hcmlzZV9zY2VuZXF1ZXVlX2Vycm9ycygpCiAgICAgICAgICAgICBpZiBlcnI6CkBAIC0yMDkwLDYgKzIwOTcsNyBAQAogICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiU3RhbXAgY3VycmVudCB0YXNrICVzIiwgdGFzaykKIAogICAgICAgICAgICAgICAgIHNlbGYudGFza19za2lwKHRhc2ssICJleGlzdGluZyIpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5xX3Rhc2tzcnVuLmFkZCh0YXNrKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgICAgIHRhc2tkZXAgPSBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS50YXNrX2RlcHNbdGFza2ZuXQpAQCAtMjI0OCw2ICsyMjU2LDcgQEAKICAgICBkZWYgcHJvY2Vzc19wb3NzaWJsZV9taWdyYXRpb25zKHNlbGYpOgogCiAgICAgICAgIGNoYW5nZWQgPSBzZXQoKQorICAgICAgICB0b3Byb2Nlc3MgPSBzZXQoKQogICAgICAgICBmb3IgdGlkLCB1bmloYXNoIGluIHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZS5jb3B5KCk6CiAgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5ydW5xX3J1bm5pbmcgYW5kIHRpZCBub3QgaW4gc2VsZi5ydW5xX2NvbXBsZXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMjU1LDQyICsyMjY0LDYzIEBACiAgICAgICAgICAgICBzZWxmLnVwZGF0ZWRfdGFza2hhc2hfcXVldWUucmVtb3ZlKCh0aWQsIHVuaWhhc2gpKQogCiAgICAgICAgICAgICBpZiB1bmloYXNoICE9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaDoKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVGFzayAlcyB1bmloYXNoIGNoYW5nZWQgdG8gJXMiICUgKHRpZCwgdW5paGFzaCkpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJUYXNrICVzIHVuaWhhc2ggY2hhbmdlZCB0byAlcyIgJSAodGlkLCB1bmloYXNoKSkKICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2ggPSB1bmloYXNoCiAgICAgICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnNldF91bmloYXNoKHRpZCwgdW5paGFzaCkKKyAgICAgICAgICAgICAgICB0b3Byb2Nlc3MuYWRkKHRpZCkKIAotICAgICAgICAgICAgICAgICMgV29yayBvdXQgYWxsIHRhc2tzIHdoaWNoIGRlcGVuZCBvbiB0aGlzIG9uZQotICAgICAgICAgICAgICAgIHRvdGFsID0gc2V0KCkKLSAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0ucmV2ZGVwcykKLSAgICAgICAgICAgICAgICB3aGlsZSBuZXh0OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKLSAgICAgICAgICAgICAgICAgICAgdG90YWwgPSB0b3RhbCB8bmV4dAotICAgICAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIG50aWQgaW4gY3VycmVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgfD0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbbnRpZF0ucmV2ZGVwcwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5kaWZmZXJlbmNlX3VwZGF0ZSh0b3RhbCkKKyAgICAgICAgIyBXb3JrIG91dCBhbGwgdGFza3Mgd2hpY2ggZGVwZW5kIHVwb24gdGhlc2UKKyAgICAgICAgdG90YWwgPSBzZXQoKQorICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgZm9yIHAgaW4gdG9wcm9jZXNzOgorICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1twXS5yZXZkZXBzCisgICAgICAgIHdoaWxlIG5leHQ6CisgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKKyAgICAgICAgICAgIHRvdGFsID0gdG90YWwgfCBuZXh0CisgICAgICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBudGlkIGluIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1tudGlkXS5yZXZkZXBzCisgICAgICAgICAgICBuZXh0LmRpZmZlcmVuY2VfdXBkYXRlKHRvdGFsKQogCi0gICAgICAgICAgICAgICAgIyBOb3cgaXRlcmF0ZSB0aG9zZSB0YXNrcyBpbiBkZXBlbmRlbmN5IG9yZGVyIHRvIHJlZ2VuZXJhdGUgdGhlaXIgdGFza2hhc2gvdW5paGFzaAotICAgICAgICAgICAgICAgIGRvbmUgPSBzZXQoKQotICAgICAgICAgICAgICAgIG5leHQgPSBzZXQoc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5yZXZkZXBzKQotICAgICAgICAgICAgICAgIHdoaWxlIG5leHQ6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXh0LmNvcHkoKQotICAgICAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBjdXJyZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2RlcCA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZGVwLmFwcGVuZChkZXApCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaGFzaCA9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHByb2NkZXAsIHNlbGYucnFkYXRhLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlndW5pID0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3VuaWhhc2godGlkKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJUYXNrICVzIGhhc2ggY2hhbmdlczogJXMtPiVzICVzLT4lcyIgJSAodGlkLCBvcmlnaGFzaCwgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5oYXNoLCBvcmlndW5pLCBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2gpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnJldmRlcHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQuYWRkKHRpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsLnJlbW92ZSh0aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmludGVyc2VjdGlvbl91cGRhdGUodG90YWwpCisgICAgICAgICMgTm93IGl0ZXJhdGUgdGhvc2UgdGFza3MgaW4gZGVwZW5kZW5jeSBvcmRlciB0byByZWdlbmVyYXRlIHRoZWlyIHRhc2toYXNoL3VuaWhhc2gKKyAgICAgICAgbmV4dCA9IHNldCgpCisgICAgICAgIGZvciBwIGluIHRvdGFsOgorICAgICAgICAgICAgaWYgbGVuKHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3BdLmRlcGVuZHMpID09IDA6CisgICAgICAgICAgICAgICAgbmV4dC5hZGQocCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbcF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKKyAgICAgICAgICAgICAgICBuZXh0LmFkZChwKQorCisgICAgICAgICMgV2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgaW4gdG90YWwsIHdlIGNhbiBwcm9jZXNzIGl0LiBEcm9wIGl0ZW1zIGZyb20gdG90YWwgd2hlbiBoYW5kbGVkCisgICAgICAgIHdoaWxlIG5leHQ6CisgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKKyAgICAgICAgICAgIG5leHQgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHRpZCBpbiBjdXJyZW50OgorICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1twXS5kZXBlbmRzKSBhbmQgbm90IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBvcmlnaGFzaCA9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaAorICAgICAgICAgICAgICAgIG5ld2hhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3Rhc2toYXNoKHRpZCwgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQorICAgICAgICAgICAgICAgIG9yaWd1bmkgPSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2gKKyAgICAgICAgICAgICAgICBuZXd1bmkgPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3VuaWhhc2godGlkKQorICAgICAgICAgICAgICAgICMgRklYTUUsIG5lZWQgdG8gY2hlY2sgaXQgY2FuIGNvbWUgZnJvbSBzc3RhdGUgYXQgYWxsIGZvciBkZXRlcm1pbmlzbT8KKyAgICAgICAgICAgICAgICByZW1hcHBlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgbmV3dW5pID09IG9yaWd1bmk6CisgICAgICAgICAgICAgICAgICAgICMgTm90aGluZyB0byBkbywgd2UgbWF0Y2gsIHNraXAgY29kZSBiZWxvdworICAgICAgICAgICAgICAgICAgICByZW1hcHBlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIHRpZCBpbiBzZWxmLnNjZW5lcXVldWVfY292ZXJlZCBvciB0aWQgaW4gc2VsZi5zcV9saXZlOgorICAgICAgICAgICAgICAgICAgICAjIEFscmVhZHkgcmFuIHRoaXMgc2V0c2NlbmUgdGFzayBvciBpdCBydW5uaW5nLiBSZXBvcnQgdGhlIG5ldyB0YXNraGFzaAorICAgICAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucmVwb3J0X3VuaWhhc2hfZXF1aXYodGlkLCBuZXdoYXNoLCBvcmlndW5pLCBuZXd1bmksIHNlbGYucnFkYXRhLmRhdGFDYWNoZXMpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgiQWxyZWFkeSBjb3ZlcmVkIHNldHNjZW5lIGZvciAlcyBzbyBpZ25vcmluZyByZWhhc2ggKHJlbWFwKSIgJSAodGlkKSkKKyAgICAgICAgICAgICAgICAgICAgcmVtYXBwZWQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVtYXBwZWQ6CisgICAgICAgICAgICAgICAgICAgICNsb2dnZXIuZGVidWcoMSwgIlRhc2sgJXMgaGFzaCBjaGFuZ2VzOiAlcy0+JXMgJXMtPiVzIiAlICh0aWQsIG9yaWdoYXNoLCBuZXdoYXNoLCBvcmlndW5pLCBuZXd1bmkpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmhhc2ggPSBuZXdoYXNoCisgICAgICAgICAgICAgICAgICAgIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaCA9IG5ld3VuaQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLmFkZCh0aWQpCisKKyAgICAgICAgICAgICAgICBuZXh0IHw9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0ucmV2ZGVwcworICAgICAgICAgICAgICAgIHRvdGFsLnJlbW92ZSh0aWQpCisgICAgICAgICAgICAgICAgbmV4dC5pbnRlcnNlY3Rpb25fdXBkYXRlKHRvdGFsKQogCiAgICAgICAgIGlmIGNoYW5nZWQ6CiAgICAgICAgICAgICBmb3IgbWMgaW4gc2VsZi5ycS53b3JrZXI6CkBAIC0yMjk4LDcgKzIzMjgsNyBAQAogICAgICAgICAgICAgZm9yIG1jIGluIHNlbGYucnEuZmFrZXdvcmtlcjoKICAgICAgICAgICAgICAgICBzZWxmLnJxLmZha2V3b3JrZXJbbWNdLnByb2Nlc3Muc3RkaW4ud3JpdGUoYiI8bmV3dGFza2hhc2hlcz4iICsgcGlja2xlLmR1bXBzKGJiLnBhcnNlLnNpZ2dlbi5nZXRfdGFza2hhc2hlcygpKSArIGIiPC9uZXd0YXNraGFzaGVzPiIpCiAKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCBwcHJpbnQucGZvcm1hdCgiVGFza3MgY2hhbmdlZDpcbiVzIiAlIChjaGFuZ2VkKSkpCisgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDEsIHBwcmludC5wZm9ybWF0KCJUYXNrcyBjaGFuZ2VkOlxuJXMiICUgKGNoYW5nZWQpKSkKIAogICAgICAgICBmb3IgdGlkIGluIGNoYW5nZWQ6CiAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYucnFkYXRhLnJ1bnFfc2V0c2NlbmVfdGlkczoKQEAgLTIzMDYsMjQgKzIzMzYsMTggQEAKICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnM6CiAgICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMuYWRkKHRpZCkKIAorICAgICAgICB1cGRhdGVfdGFza3MgPSBbXQogICAgICAgICBmb3IgdGlkIGluIHNlbGYucGVuZGluZ19taWdyYXRpb25zLmNvcHkoKToKLSAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnJ1bnFfcnVubmluZzoKKyAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnJ1bnFfcnVubmluZyBvciB0aWQgaW4gc2VsZi5zcV9saXZlOgogICAgICAgICAgICAgICAgICMgVG9vIGxhdGUsIHRhc2sgYWxyZWFkeSBydW5uaW5nLCBub3QgbXVjaCB3ZSBjYW4gZG8gbm93CiAgICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMucmVtb3ZlKHRpZCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zY2VuZXF1ZXVlX2NvdmVyZWQgb3IgdGlkIGluIHNlbGYuc3FfbGl2ZToKLSAgICAgICAgICAgICAgICAjIEFscmVhZHkgcmFuIHRoaXMgc2V0c2NlbmUgdGFzayBvciBpdCBydW5uaW5nCi0gICAgICAgICAgICAgICAgIyBQb3RlbnRpYWxseSByaXNreSwgc2hvdWxkIHdlIHJlcG9ydCB0aGlzIGhhc2ggYXMgYSBtYXRjaD8KLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQWxyZWFkeSBjb3ZlcmVkIHNldHNjZW5lIGZvciAlcyBzbyBpZ25vcmluZyByZWhhc2giICUgKHRpZCkpCi0gICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMucmVtb3ZlKHRpZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCiAgICAgICAgICAgICB2YWxpZCA9IFRydWUKICAgICAgICAgICAgICMgQ2hlY2sgbm8gdGFza3MgdGhpcyBjb3ZlcnMgYXJlIHJ1bm5pbmcKICAgICAgICAgICAgIGZvciBkZXAgaW4gc2VsZi5zcWRhdGEuc3FfY292ZXJlZF90YXNrc1t0aWRdOgogICAgICAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnJ1bnFfcnVubmluZyBhbmQgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfY29tcGxldGU6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiVGFzayAlcyBpcyBydW5uaW5nIHdoaWNoIGJsb2NrcyBzZXRzY2VuZSBmb3IgJXMgZnJvbSBydW5uaW5nIiAlIChkZXAsIHRpZCkpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIuZGVidWcoMiwgIlRhc2sgJXMgaXMgcnVubmluZyB3aGljaCBibG9ja3Mgc2V0c2NlbmUgZm9yICVzIGZyb20gcnVubmluZyIgJSAoZGVwLCB0aWQpKQogICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiBub3QgdmFsaWQ6CkBAIC0yMzM1LDYgKzIzNTksMTIgQEAKICAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnRhc2tzX3NjZW5lcXVldWVfZG9uZToKICAgICAgICAgICAgICAgICBzZWxmLnRhc2tzX3NjZW5lcXVldWVfZG9uZS5yZW1vdmUodGlkKQogICAgICAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnNxZGF0YS5zcV9jb3ZlcmVkX3Rhc2tzW3RpZF06CisgICAgICAgICAgICAgICAgaWYgZGVwIGluIHNlbGYucnVucV9jb21wbGV0ZSBhbmQgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfdGFza3NydW46CisgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCJUYXNrICVzIG1hcmtlZCBhcyBjb21wbGV0ZWQgYnV0IG5vdyBuZWVkaW5nIHRvIHJlcnVuPyBBYm9ydGluZyBidWlsZC4iICUgZGVwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWxlZF90aWRzLmFwcGVuZCh0aWQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucnEuc3RhdGUgPSBydW5RdWV1ZUNsZWFuVXAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgICAgICAgICBpZiBkZXAgbm90IGluIHNlbGYucnVucV9jb21wbGV0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgZGVwIGluIHNlbGYudGFza3Nfc2NlbmVxdWV1ZV9kb25lIGFuZCBkZXAgbm90IGluIHNlbGYuc3FkYXRhLnVuc2tpcHBhYmxlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXNrc19zY2VuZXF1ZXVlX2RvbmUucmVtb3ZlKGRlcCkKQEAgLTIzNDMsNyArMjM3MywxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuc3FfYnVpbGRhYmxlLnJlbW92ZSh0aWQpCiAgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zcV9ydW5uaW5nOgogICAgICAgICAgICAgICAgIHNlbGYuc3FfcnVubmluZy5yZW1vdmUodGlkKQotICAgICAgICAgICAgaWYgc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkIHwgc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpOgorICAgICAgICAgICAgaGFyZGRlcGZhaWwgPSBGYWxzZQorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5zcWRhdGEuc3FfaGFyZGRlcHM6CisgICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FkYXRhLnNxX2hhcmRkZXBzW3RdIGFuZCB0IGluIHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkOgorICAgICAgICAgICAgICAgICAgICBoYXJkZGVwZmFpbCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBoYXJkZGVwZmFpbCBhbmQgc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkIHwgc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpOgogICAgICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gc2VsZi5zcV9idWlsZGFibGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3FfYnVpbGRhYmxlLmFkZCh0aWQpCiAgICAgICAgICAgICBpZiBsZW4oc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdKSA9PSAwOgpAQCAtMjM2NywxMyArMjQwMiwxNyBAQAogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuYnVpbGRfc3RhbXBzOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmJ1aWxkX3N0YW1wc1t0aWRdCiAKLSAgICAgICAgICAgIG9yaWd2YWxpZCA9IEZhbHNlCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zcWRhdGEudmFsaWQ6Ci0gICAgICAgICAgICAgICAgb3JpZ3ZhbGlkID0gVHJ1ZQorICAgICAgICAgICAgdXBkYXRlX3Rhc2tzLmFwcGVuZCgodGlkLCBoYXJkZGVwZmFpbCwgdGlkIGluIHNlbGYuc3FkYXRhLnZhbGlkKSkKKworICAgICAgICBpZiB1cGRhdGVfdGFza3M6CiAgICAgICAgICAgICBzZWxmLnNxZG9uZSA9IEZhbHNlCi0gICAgICAgICAgICB1cGRhdGVfc2NlbmVxdWV1ZV9kYXRhKFt0aWRdLCBzZWxmLnNxZGF0YSwgc2VsZi5ycWRhdGEsIHNlbGYucnEsIHNlbGYuY29va2VyLCBzZWxmLnN0YW1wY2FjaGUsIHNlbGYsIHN1bW1hcnk9RmFsc2UpCisgICAgICAgICAgICB1cGRhdGVfc2NlbmVxdWV1ZV9kYXRhKFt0WzBdIGZvciB0IGluIHVwZGF0ZV90YXNrc10sIHNlbGYuc3FkYXRhLCBzZWxmLnJxZGF0YSwgc2VsZi5ycSwgc2VsZi5jb29rZXIsIHNlbGYuc3RhbXBjYWNoZSwgc2VsZiwgc3VtbWFyeT1GYWxzZSkKKworICAgICAgICBmb3IgKHRpZCwgaGFyZGRlcGZhaWwsIG9yaWd2YWxpZCkgaW4gdXBkYXRlX3Rhc2tzOgogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FkYXRhLnZhbGlkIGFuZCBub3Qgb3JpZ3ZhbGlkOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXRzY2VuZSB0YXNrICVzIGJlY2FtZSB2YWxpZCIgJSB0aWQpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJTZXRzY2VuZSB0YXNrICVzIGJlY2FtZSB2YWxpZCIgJSB0aWQpCisgICAgICAgICAgICBpZiBoYXJkZGVwZmFpbDoKKyAgICAgICAgICAgICAgICBzZWxmLnNxX3Rhc2tfZmFpbG91dHJpZ2h0KHRpZCkKIAogICAgICAgICBpZiBjaGFuZ2VkOgogICAgICAgICAgICAgc2VsZi5ob2xkb2ZmX25lZWRfdXBkYXRlID0gVHJ1ZQpAQCAtMjUxMCw2ICsyNTQ5LDggQEAKICAgICAgICAgICAgICAgICBtc2cgPSAnVGFzayAlcy4lcyBhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHkgYW5kIHNob3VsZCBoYXZlIGJlZW4gc2V0c2NlbmVkJyAlIChwbiwgdGFza25hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1zZyA9ICdUYXNrICVzLiVzIGF0dGVtcHRlZCB0byBleGVjdXRlIHVuZXhwZWN0ZWRseScgJSAocG4sIHRhc2tuYW1lKQorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQ6CisgICAgICAgICAgICAgICAgbXNnID0gbXNnICsgIlxuVGFzayAlcywgdW5paGFzaCAlcywgdGFza2hhc2ggJXMiICUgKHQsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RdLnVuaWhhc2gsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RdLmhhc2gpCiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IobXNnICsgJ1xuVGhpcyBpcyB1c3VhbGx5IGR1ZSB0byBtaXNzaW5nIHNldHNjZW5lIHRhc2tzLiBUaG9zZSBtaXNzaW5nIGluIHRoaXMgYnVpbGQgd2VyZTogJXMnICUgcHByaW50LnBmb3JtYXQoc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yNzYwLDcgKzI4MDEsNyBAQAogICAgICAgICAgICAgICAgIHNxZGF0YS5oYXNoZXNbaF0gPSB0aWQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FycS5zcV9kZWZlcnJlZFt0aWRdID0gc3FkYXRhLmhhc2hlc1toXQotICAgICAgICAgICAgICAgIGJiLndhcm4oIkRlZmVycmluZyAlcyBhZnRlciAlcyIgJSAodGlkLCBzcWRhdGEuaGFzaGVzW2hdKSkKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJEZWZlcnJpbmcgJXMgYWZ0ZXIgJXMiICUgKHRpZCwgc3FkYXRhLmhhc2hlc1toXSkpCiAKIAogY2xhc3MgVGFza0ZhaWx1cmUoRXhjZXB0aW9uKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weQppbmRleCBjMDU0YzNjLi40NDJlYTdiIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNjbGllbnQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjY2xpZW50LnB5CkBAIC03LDkgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCB4bWxycGMuY2xpZW50CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkKaW5kZXggNTRmYTMyZi4uMmZhNzFiZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjc2VydmVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY3NlcnZlci5weQpAQCAtNyw5ICs3LDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB0aW1lCiBpbXBvcnQgaW5zcGVjdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQppbmRleCBhNGJiMWZmLi40YzhkODFjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQpAQCAtMTYsNiArMTYsNyBAQAogaW1wb3J0IGhhc2hzZXJ2CiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLlNpZ0dlbicpCitoYXNoZXF1aXZfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuU2lnR2VuLkhhc2hFcXVpdicpCiAKIGRlZiBpbml0KGQpOgogICAgIHNpZ2dlbnMgPSBbb2JqIGZvciBvYmogaW4gZ2xvYmFscygpLnZhbHVlcygpCkBAIC00MCwxOCArNDEsMjYgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYmFzZWhhc2ggPSB7fQogICAgICAgICBzZWxmLnRhc2toYXNoID0ge30KKyAgICAgICAgc2VsZi51bmloYXNoID0ge30KICAgICAgICAgc2VsZi5ydW50YXNrZGVwcyA9IHt9CiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMgPSB7fQogICAgICAgICBzZWxmLnRhaW50cyA9IHt9CiAgICAgICAgIHNlbGYudW5pdGFza2hhc2hlcyA9IHt9Ci0gICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHt9CisgICAgICAgIHNlbGYudGlkdG9wbiA9IHt9CisgICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldCgpCiAKICAgICBkZWYgZmluYWxpc2Uoc2VsZiwgZm4sIGQsIHZhcmllbnQpOgogICAgICAgICByZXR1cm4KIAorICAgIGRlZiBwb3N0cGFyc2luZ19jbGVhbl9jYWNoZShzZWxmKToKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgZ2V0X3VuaWhhc2goc2VsZiwgdGlkKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFza2hhc2hbdGlkXQogCisgICAgZGVmIHByZXBfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorICAgICAgICByZXR1cm4KKwogICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgogICAgICAgICBzZWxmLnRhc2toYXNoW3RpZF0gPSBoYXNobGliLnNoYTI1Nih0aWQuZW5jb2RlKCJ1dGYtOCIpKS5oZXhkaWdlc3QoKQogICAgICAgICByZXR1cm4gc2VsZi50YXNraGFzaFt0aWRdCkBAIC03NiwxOSArODUsMTkgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgZ2V0X3Rhc2tkYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYucnVudGFza2RlcHMsIHNlbGYudGFza2hhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYuc2V0c2NlbmV0YXNrcykKKyAgICAgICAgcmV0dXJuIChzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaWhhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiwgc2VsZi5zZXRzY2VuZXRhc2tzKQogCiAgICAgZGVmIHNldF90YXNrZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5ydW50YXNrZGVwcywgc2VsZi50YXNraGFzaCwgc2VsZi5maWxlX2NoZWNrc3VtX3ZhbHVlcywgc2VsZi50YWludHMsIHNlbGYuYmFzZWhhc2gsIHNlbGYudW5pdGFza2hhc2hlcywgc2VsZi5zZXRzY2VuZXRhc2tzID0gZGF0YQorICAgICAgICBzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaWhhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiwgc2VsZi5zZXRzY2VuZXRhc2tzID0gZGF0YQogCiAgICAgZGVmIHJlc2V0KHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLl9faW5pdF9fKGRhdGEpCiAKICAgICBkZWYgZ2V0X3Rhc2toYXNoZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMKKyAgICAgICAgcmV0dXJuIHNlbGYudGFza2hhc2gsIHNlbGYudW5paGFzaCwgc2VsZi51bml0YXNraGFzaGVzLCBzZWxmLnRpZHRvcG4KIAogICAgIGRlZiBzZXRfdGFza2hhc2hlcyhzZWxmLCBoYXNoZXMpOgotICAgICAgICBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMgPSBoYXNoZXMKKyAgICAgICAgc2VsZi50YXNraGFzaCwgc2VsZi51bmloYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiA9IGhhc2hlcwogCiAgICAgZGVmIHNhdmVfdW5pdGFza2hhc2hlcyhzZWxmKToKICAgICAgICAgcmV0dXJuCkBAIC0xMDQsMTMgKzExMywxNCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5iYXNlaGFzaCA9IHt9CiAgICAgICAgIHNlbGYudGFza2hhc2ggPSB7fQorICAgICAgICBzZWxmLnVuaWhhc2ggPSB7fQogICAgICAgICBzZWxmLnRhc2tkZXBzID0ge30KICAgICAgICAgc2VsZi5ydW50YXNrZGVwcyA9IHt9CiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMgPSB7fQogICAgICAgICBzZWxmLnRhaW50cyA9IHt9CiAgICAgICAgIHNlbGYuZ2VuZGVwcyA9IHt9CiAgICAgICAgIHNlbGYubG9va3VwY2FjaGUgPSB7fQotICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSB7fQorICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSBzZXQoKQogICAgICAgICBzZWxmLmJhc2V3aGl0ZWxpc3QgPSBzZXQoKGRhdGEuZ2V0VmFyKCJCQl9IQVNIQkFTRV9XSElURUxJU1QiKSBvciAiIikuc3BsaXQoKSkKICAgICAgICAgc2VsZi50YXNrd2hpdGVsaXN0ID0gTm9uZQogICAgICAgICBzZWxmLmluaXRfcnVuZGVwY2hlY2soZGF0YSkKQEAgLTEyMSw4ICsxMzEsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tzdW1fY2FjaGUgPSBOb25lCiAKLSAgICAgICAgc2VsZi51bmloYXNoX2NhY2hlID0gYmIuY2FjaGUuU2ltcGxlQ2FjaGUoIjEiKQorICAgICAgICBzZWxmLnVuaWhhc2hfY2FjaGUgPSBiYi5jYWNoZS5TaW1wbGVDYWNoZSgiMyIpCiAgICAgICAgIHNlbGYudW5pdGFza2hhc2hlcyA9IHNlbGYudW5paGFzaF9jYWNoZS5pbml0X2NhY2hlKGRhdGEsICJiYl91bmloYXNoZXMuZGF0Iiwge30pCisgICAgICAgIHNlbGYubG9jYWxkaXJzZXhjbHVkZSA9IChkYXRhLmdldFZhcigiQkJfU0lHTkFUVVJFX0xPQ0FMX0RJUlNfRVhDTFVERSIpIG9yICJDVlMgLmJ6ciAuZ2l0IC5oZyAub3NjIC5wNCAucmVwbyAuc3ZuIikuc3BsaXQoKQorICAgICAgICBzZWxmLnRpZHRvcG4gPSB7fQogCiAgICAgZGVmIGluaXRfcnVuZGVwY2hlY2soc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYudGFza3doaXRlbGlzdCA9IGRhdGEuZ2V0VmFyKCJCQl9IQVNIVEFTS19XSElURUxJU1QiKSBvciBOb25lCkBAIC0xMzQsNyArMTQ2LDcgQEAKICAgICBkZWYgX2J1aWxkX2RhdGEoc2VsZiwgZm4sIGQpOgogCiAgICAgICAgIGlnbm9yZV9taXNtYXRjaCA9ICgoZC5nZXRWYXIoIkJCX0hBU0hfSUdOT1JFX01JU01BVENIIikgb3IgJycpID09ICcxJykKLSAgICAgICAgdGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCkKKyAgICAgICAgdGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCwgc2VsZi5iYXNld2hpdGVsaXN0KQogCiAgICAgICAgIHRhc2tkZXBzLCBiYXNlaGFzaCA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jeV9oYXNoKHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSwgc2VsZi5iYXNld2hpdGVsaXN0LCBmbikKIApAQCAtMTU3LDcgKzE2OSw3IEBACiAgICAgICAgIHJldHVybiB0YXNrZGVwcwogCiAgICAgZGVmIHNldF9zZXRzY2VuZV90YXNrcyhzZWxmLCBzZXRzY2VuZV90YXNrcyk6Ci0gICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldHNjZW5lX3Rhc2tzCisgICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldChzZXRzY2VuZV90YXNrcykKIAogICAgIGRlZiBmaW5hbGlzZShzZWxmLCBmbiwgZCwgdmFyaWFudCk6CiAKQEAgLTE4MCw2ICsxOTIsMTQgQEAKICAgICAgICAgZm9yIHRhc2sgaW4gdGFza2RlcHM6CiAgICAgICAgICAgICBkLnNldFZhcigiQkJfQkFTRUhBU0hfdGFzay0lcyIgJSB0YXNrLCBzZWxmLmJhc2VoYXNoW2ZuICsgIjoiICsgdGFza10pCiAKKyAgICBkZWYgcG9zdHBhcnNpbmdfY2xlYW5fY2FjaGUoc2VsZik6CisgICAgICAgICMKKyAgICAgICAgIyBBZnRlciBwYXJzaW5nIHdlIGNhbiByZW1vdmUgc29tZSB0aGluZ3MgZnJvbSBtZW1vcnkgdG8gcmVkdWNlIG91ciBtZW1vcnkgZm9vdHByaW50CisgICAgICAgICMKKyAgICAgICAgc2VsZi5nZW5kZXBzID0ge30KKyAgICAgICAgc2VsZi5sb29rdXBjYWNoZSA9IHt9CisgICAgICAgIHNlbGYudGFza2RlcHMgPSB7fQorCiAgICAgZGVmIHJ1bmRlcF9jaGVjayhzZWxmLCBmbiwgcmVjaXBlbmFtZSwgdGFzaywgZGVwLCBkZXBuYW1lLCBkYXRhQ2FjaGUpOgogICAgICAgICAjIFJldHVybiBUcnVlIGlmIHdlIHNob3VsZCBrZWVwIHRoZSBkZXBlbmRlbmN5LCBGYWxzZSB0byBkcm9wIGl0CiAgICAgICAgICMgV2Ugb25seSBtYW5pcHVsYXRlIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHBhY2thZ2VzIG5vdCBpbiB0aGUgd2hpdGVsaXN0CkBAIC0xOTgsMTUgKzIxOCwxNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gdGFpbnQKIAotICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorICAgIGRlZiBwcmVwX3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKIAogICAgICAgICAobWMsIF8sIHRhc2ssIGZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKHRpZCkKIAotICAgICAgICBkYXRhID0gZGF0YUNhY2hlLmJhc2V0YXNraGFzaFt0aWRdCi0gICAgICAgIHNlbGYuYmFzZWhhc2hbdGlkXSA9IGRhdGEKKyAgICAgICAgc2VsZi5iYXNlaGFzaFt0aWRdID0gZGF0YUNhY2hlLmJhc2V0YXNraGFzaFt0aWRdCiAgICAgICAgIHNlbGYucnVudGFza2RlcHNbdGlkXSA9IFtdCiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXNbdGlkXSA9IFtdCiAgICAgICAgIHJlY2lwZW5hbWUgPSBkYXRhQ2FjaGUucGtnX2ZuW2ZuXQorCisgICAgICAgIHNlbGYudGlkdG9wblt0aWRdID0gcmVjaXBlbmFtZQorCiAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKGRlcHMsIGtleT1jbGVhbl9iYXNlcGF0aCk6CiAgICAgICAgICAgICAoZGVwbWMsIF8sIGRlcHRhc2tuYW1lLCBkZXBmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbihkZXApCiAgICAgICAgICAgICBpZiBtYyAhPSBkZXBtYzoKQEAgLTIxNiwzMyArMjM4LDU2IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gc2VsZi50YXNraGFzaDoKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiJXMgaXMgbm90IGluIHRhc2toYXNoLCBjYWxsZXIgaXNuJ3QgY2FsbGluZyBpbiBkZXBlbmRlbmN5IG9yZGVyPyIgJSBkZXApCi0gICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYuZ2V0X3VuaWhhc2goZGVwKQogICAgICAgICAgICAgc2VsZi5ydW50YXNrZGVwc1t0aWRdLmFwcGVuZChkZXApCiAKICAgICAgICAgaWYgdGFzayBpbiBkYXRhQ2FjaGUuZmlsZV9jaGVja3N1bXNbZm5dOgogICAgICAgICAgICAgaWYgc2VsZi5jaGVja3N1bV9jYWNoZToKLSAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBzZWxmLmNoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXVt0YXNrXSwgcmVjaXBlbmFtZSkKKyAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBzZWxmLmNoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXVt0YXNrXSwgcmVjaXBlbmFtZSwgc2VsZi5sb2NhbGRpcnNleGNsdWRlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBiYi5mZXRjaDIuZ2V0X2ZpbGVfY2hlY2tzdW1zKGRhdGFDYWNoZS5maWxlX2NoZWNrc3Vtc1tmbl1bdGFza10sIHJlY2lwZW5hbWUpCisgICAgICAgICAgICAgICAgY2hlY2tzdW1zID0gYmIuZmV0Y2gyLmdldF9maWxlX2NoZWNrc3VtcyhkYXRhQ2FjaGUuZmlsZV9jaGVja3N1bXNbZm5dW3Rhc2tdLCByZWNpcGVuYW1lLCBzZWxmLmxvY2FsZGlyc2V4Y2x1ZGUpCiAgICAgICAgICAgICBmb3IgKGYsY3MpIGluIGNoZWNrc3VtczoKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzW3RpZF0uYXBwZW5kKChmLGNzKSkKLSAgICAgICAgICAgICAgICBpZiBjczoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBjcwogCiAgICAgICAgIHRhc2tkZXAgPSBkYXRhQ2FjaGUudGFza19kZXBzW2ZuXQogICAgICAgICBpZiAnbm9zdGFtcCcgaW4gdGFza2RlcCBhbmQgdGFzayBpbiB0YXNrZGVwWydub3N0YW1wJ106CiAgICAgICAgICAgICAjIE5vc3RhbXAgdGFza3MgbmVlZCBhbiBpbXBsaWNpdCB0YWludCBzbyB0aGF0IHRoZXkgZm9yY2UgYW55IGRlcGVuZGVudCB0YXNrcyB0byBydW4KLSAgICAgICAgICAgIGltcG9ydCB1dWlkCi0gICAgICAgICAgICB0YWludCA9IHN0cih1dWlkLnV1aWQ0KCkpCi0gICAgICAgICAgICBkYXRhID0gZGF0YSArIHRhaW50Ci0gICAgICAgICAgICBzZWxmLnRhaW50c1t0aWRdID0gIm5vc3RhbXA6IiArIHRhaW50CisgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi50YWludHMgYW5kIHNlbGYudGFpbnRzW3RpZF0uc3RhcnRzd2l0aCgibm9zdGFtcDoiKToKKyAgICAgICAgICAgICAgICAjIERvbid0IHJlc2V0IHRhaW50IHZhbHVlIHVwb24gZXZlcnkgY2FsbAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW1wb3J0IHV1aWQKKyAgICAgICAgICAgICAgICB0YWludCA9IHN0cih1dWlkLnV1aWQ0KCkpCisgICAgICAgICAgICAgICAgc2VsZi50YWludHNbdGlkXSA9ICJub3N0YW1wOiIgKyB0YWludAogCiAgICAgICAgIHRhaW50ID0gc2VsZi5yZWFkX3RhaW50KGZuLCB0YXNrLCBkYXRhQ2FjaGUuc3RhbXBbZm5dKQogICAgICAgICBpZiB0YWludDoKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgdGFpbnQKICAgICAgICAgICAgIHNlbGYudGFpbnRzW3RpZF0gPSB0YWludAogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIiVzIGlzIHRhaW50ZWQgZnJvbSBhIGZvcmNlZCBydW4iICUgdGlkKQogCisgICAgICAgIHJldHVybgorCisgICAgZGVmIGdldF90YXNraGFzaChzZWxmLCB0aWQsIGRlcHMsIGRhdGFDYWNoZSk6CisKKyAgICAgICAgZGF0YSA9IHNlbGYuYmFzZWhhc2hbdGlkXQorICAgICAgICBmb3IgZGVwIGluIHNlbGYucnVudGFza2RlcHNbdGlkXToKKyAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnVuaWhhc2g6CisgICAgICAgICAgICAgICAgaWYgc2VsZi51bmloYXNoW2RlcF0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzZWxmLnRhc2toYXNoW2RlcF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYudW5paGFzaFtkZXBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc2VsZi5nZXRfdW5paGFzaChkZXApCisKKyAgICAgICAgZm9yIChmLCBjcykgaW4gc2VsZi5maWxlX2NoZWNrc3VtX3ZhbHVlc1t0aWRdOgorICAgICAgICAgICAgaWYgY3M6CisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBjcworCisgICAgICAgIGlmIHRpZCBpbiBzZWxmLnRhaW50czoKKyAgICAgICAgICAgIGlmIHNlbGYudGFpbnRzW3RpZF0uc3RhcnRzd2l0aCgibm9zdGFtcDoiKToKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYudGFpbnRzW3RpZF1bODpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc2VsZi50YWludHNbdGlkXQorCiAgICAgICAgIGggPSBoYXNobGliLnNoYTI1NihkYXRhLmVuY29kZSgidXRmLTgiKSkuaGV4ZGlnZXN0KCkKICAgICAgICAgc2VsZi50YXNraGFzaFt0aWRdID0gaAogICAgICAgICAjZC5zZXRWYXIoIkJCX1RBU0tIQVNIX3Rhc2stJXMiICUgdGFzaywgdGFza2hhc2hbdGFza10pCkBAIC0zNzEsNTAgKzQxNiw2NiBAQAogICAgICAgICBiYi5idWlsZC53cml0ZV90YWludCh0YXNrLCBkLCBmbikKIAogY2xhc3MgU2lnbmF0dXJlR2VuZXJhdG9yVW5pSGFzaE1peEluKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmV4dHJhbWV0aG9kID0ge30KKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhKQorCiAgICAgZGVmIGdldF90YXNrZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnNlcnZlciwgc2VsZi5tZXRob2QpICsgc3VwZXIoKS5nZXRfdGFza2RhdGEoKQorICAgICAgICByZXR1cm4gKHNlbGYuc2VydmVyLCBzZWxmLm1ldGhvZCwgc2VsZi5leHRyYW1ldGhvZCkgKyBzdXBlcigpLmdldF90YXNrZGF0YSgpCiAKICAgICBkZWYgc2V0X3Rhc2tkYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5tZXRob2QgPSBkYXRhWzoyXQotICAgICAgICBzdXBlcigpLnNldF90YXNrZGF0YShkYXRhWzI6XSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYubWV0aG9kLCBzZWxmLmV4dHJhbWV0aG9kID0gZGF0YVs6M10KKyAgICAgICAgc3VwZXIoKS5zZXRfdGFza2RhdGEoZGF0YVszOl0pCiAKICAgICBkZWYgY2xpZW50KHNlbGYpOgogICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfY2xpZW50JywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2NsaWVudCA9IGhhc2hzZXJ2LmNyZWF0ZV9jbGllbnQoc2VsZi5zZXJ2ZXIpCiAgICAgICAgIHJldHVybiBzZWxmLl9jbGllbnQKIAotICAgIGRlZiBfX2dldF90YXNrX3VuaWhhc2hfa2V5KHNlbGYsIHRpZCk6Ci0gICAgICAgICMgVE9ETzogVGhlIGtleSBvbmx5ICpuZWVkcyogdG8gYmUgdGhlIHRhc2toYXNoLCB0aGUgdGlkIGlzIGp1c3QKLSAgICAgICAgIyBjb252ZW5pZW50Ci0gICAgICAgIHJldHVybiAnJXM6JXMnICUgKHRpZC5yc3BsaXQoIi8iLCAxKVsxXSwgc2VsZi50YXNraGFzaFt0aWRdKQotCiAgICAgZGVmIGdldF9zdGFtcGZpbGVfaGFzaChzZWxmLCB0aWQpOgogICAgICAgICBpZiB0aWQgaW4gc2VsZi50YXNraGFzaDoKICAgICAgICAgICAgICMgSWYgYSB1bmlxdWUgaGFzaCBpcyByZXBvcnRlZCwgdXNlIGl0IGFzIHRoZSBzdGFtcGZpbGUgaGFzaC4gVGhpcwogICAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgaWYgYSB0YXNrIHdvbid0IGJlIHJlLXJ1biBpZiB0aGUgdGFza2hhc2ggY2hhbmdlcywKICAgICAgICAgICAgICMgYnV0IGl0IHdvdWxkIHJlc3VsdCBpbiB0aGUgc2FtZSBvdXRwdXQgaGFzaAotICAgICAgICAgICAgdW5paGFzaCA9IHNlbGYudW5pdGFza2hhc2hlcy5nZXQoc2VsZi5fX2dldF90YXNrX3VuaWhhc2hfa2V5KHRpZCksIE5vbmUpCisgICAgICAgICAgICB1bmloYXNoID0gc2VsZi5fZ2V0X3VuaWhhc2godGlkKQogICAgICAgICAgICAgaWYgdW5paGFzaCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gdW5paGFzaAogCiAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9zdGFtcGZpbGVfaGFzaCh0aWQpCiAKICAgICBkZWYgc2V0X3VuaWhhc2goc2VsZiwgdGlkLCB1bmloYXNoKToKLSAgICAgICAgc2VsZi51bml0YXNraGFzaGVzW3NlbGYuX19nZXRfdGFza191bmloYXNoX2tleSh0aWQpXSA9IHVuaWhhc2gKKyAgICAgICAgKG1jLCBmbiwgdGFza25hbWUsIHRhc2tmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbih0aWQpCisgICAgICAgIGtleSA9IG1jICsgIjoiICsgc2VsZi50aWR0b3BuW3RpZF0gKyAiOiIgKyB0YXNrbmFtZQorICAgICAgICBzZWxmLnVuaXRhc2toYXNoZXNba2V5XSA9IChzZWxmLnRhc2toYXNoW3RpZF0sIHVuaWhhc2gpCisgICAgICAgIHNlbGYudW5paGFzaFt0aWRdID0gdW5paGFzaAorCisgICAgZGVmIF9nZXRfdW5paGFzaChzZWxmLCB0aWQsIGNoZWNra2V5PU5vbmUpOgorICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYudGlkdG9wbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIChtYywgZm4sIHRhc2tuYW1lLCB0YXNrZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4odGlkKQorICAgICAgICBrZXkgPSBtYyArICI6IiArIHNlbGYudGlkdG9wblt0aWRdICsgIjoiICsgdGFza25hbWUKKyAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLnVuaXRhc2toYXNoZXM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBub3QgY2hlY2trZXk6CisgICAgICAgICAgICBjaGVja2tleSA9IHNlbGYudGFza2hhc2hbdGlkXQorICAgICAgICAoa2V5LCB1bmloYXNoKSA9IHNlbGYudW5pdGFza2hhc2hlc1trZXldCisgICAgICAgIGlmIGtleSAhPSBjaGVja2tleToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICBkZWYgZ2V0X3VuaWhhc2goc2VsZiwgdGlkKToKICAgICAgICAgdGFza2hhc2ggPSBzZWxmLnRhc2toYXNoW3RpZF0KIAogICAgICAgICAjIElmIGl0cyBub3QgYSBzZXRzY2VuZSB0YXNrIHdlIGNhbiByZXR1cm4KICAgICAgICAgaWYgc2VsZi5zZXRzY2VuZXRhc2tzIGFuZCB0aWQgbm90IGluIHNlbGYuc2V0c2NlbmV0YXNrczoKKyAgICAgICAgICAgIHNlbGYudW5paGFzaFt0aWRdID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHRhc2toYXNoCiAKLSAgICAgICAga2V5ID0gc2VsZi5fX2dldF90YXNrX3VuaWhhc2hfa2V5KHRpZCkKLQogICAgICAgICAjIFRPRE86IFRoaXMgY2FjaGUgY2FuIGdyb3cgdW5ib3VuZGVkLiBJdCBwcm9iYWJseSBvbmx5IG5lZWRzIHRvIGtlZXAKICAgICAgICAgIyBmb3IgZWFjaCB0YXNrCi0gICAgICAgIHVuaWhhc2ggPSBzZWxmLnVuaXRhc2toYXNoZXMuZ2V0KGtleSwgTm9uZSkKKyAgICAgICAgdW5paGFzaCA9ICBzZWxmLl9nZXRfdW5paGFzaCh0aWQpCiAgICAgICAgIGlmIHVuaWhhc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnVuaWhhc2hbdGlkXSA9IHVuaWhhc2gKICAgICAgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICAgICAgIyBJbiB0aGUgYWJzZW5jZSBvZiBiZWluZyBhYmxlIHRvIGRpc2NvdmVyIGEgdW5pcXVlIGhhc2ggZnJvbSB0aGUKQEAgLTQzMywxOSArNDk0LDIzIEBACiAgICAgICAgIHVuaWhhc2ggPSB0YXNraGFzaAogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLmdldF91bmloYXNoKHNlbGYubWV0aG9kLCBzZWxmLnRhc2toYXNoW3RpZF0pCisgICAgICAgICAgICBtZXRob2QgPSBzZWxmLm1ldGhvZAorICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gbWV0aG9kICsgc2VsZi5leHRyYW1ldGhvZFt0aWRdCisgICAgICAgICAgICBkYXRhID0gc2VsZi5jbGllbnQoKS5nZXRfdW5paGFzaChtZXRob2QsIHNlbGYudGFza2hhc2hbdGlkXSkKICAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICAgdW5paGFzaCA9IGRhdGEKICAgICAgICAgICAgICAgICAjIEEgdW5pcXVlIGhhc2ggZXF1YWwgdG8gdGhlIHRhc2toYXNoIGlzIG5vdCB2ZXJ5IGludGVyZXN0aW5nLAogICAgICAgICAgICAgICAgICMgc28gaXQgaXMgcmVwb3J0ZWQgaXQgYXQgZGVidWcgbGV2ZWwgMi4gSWYgdGhleSBkaWZmZXIsIHRoYXQKICAgICAgICAgICAgICAgICAjIGlzIG11Y2ggbW9yZSBpbnRlcmVzdGluZywgc28gaXQgaXMgcmVwb3J0ZWQgYXQgZGVidWcgbGV2ZWwgMQotICAgICAgICAgICAgICAgIGJiLmRlYnVnKCgxLCAyKVt1bmloYXNoID09IHRhc2toYXNoXSwgJ0ZvdW5kIHVuaWhhc2ggJXMgaW4gcGxhY2Ugb2YgJXMgZm9yICVzIGZyb20gJXMnICUgKHVuaWhhc2gsIHRhc2toYXNoLCB0aWQsIHNlbGYuc2VydmVyKSkKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKCgxLCAyKVt1bmloYXNoID09IHRhc2toYXNoXSwgJ0ZvdW5kIHVuaWhhc2ggJXMgaW4gcGxhY2Ugb2YgJXMgZm9yICVzIGZyb20gJXMnICUgKHVuaWhhc2gsIHRhc2toYXNoLCB0aWQsIHNlbGYuc2VydmVyKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgJ05vIHJlcG9ydGVkIHVuaWhhc2ggZm9yICVzOiVzIGZyb20gJXMnICUgKHRpZCwgdGFza2hhc2gsIHNlbGYuc2VydmVyKSkKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDIsICdObyByZXBvcnRlZCB1bmloYXNoIGZvciAlczolcyBmcm9tICVzJyAlICh0aWQsIHRhc2toYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgIGV4Y2VwdCBoYXNoc2Vydi5jbGllbnQuSGFzaENvbm5lY3Rpb25FcnJvciBhcyBlOgogICAgICAgICAgICAgYmIud2FybignRXJyb3IgY29udGFjdGluZyBIYXNoIEVxdWl2YWxlbmNlIFNlcnZlciAlczogJXMnICUgKHNlbGYuc2VydmVyLCBzdHIoZSkpKQogCi0gICAgICAgIHNlbGYudW5pdGFza2hhc2hlc1trZXldID0gdW5paGFzaAorICAgICAgICBzZWxmLnNldF91bmloYXNoKHRpZCwgdW5paGFzaCkKKyAgICAgICAgc2VsZi51bmloYXNoW3RpZF0gPSB1bmloYXNoCiAgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICBkZWYgcmVwb3J0X3VuaWhhc2goc2VsZiwgcGF0aCwgdGFzaywgZCk6CkBAIC00NTcsMTMgKzUyMiwxNyBAQAogICAgICAgICB0ZW1wZGlyID0gZC5nZXRWYXIoJ1QnKQogICAgICAgICBmbiA9IGQuZ2V0VmFyKCdCQl9GSUxFTkFNRScpCiAgICAgICAgIHRpZCA9IGZuICsgJzpkb18nICsgdGFzawotICAgICAgICBrZXkgPSB0aWQucnNwbGl0KCIvIiwgMSlbMV0gKyAnOicgKyB0YXNraGFzaAorICAgICAgICBrZXkgPSB0aWQgKyAnOicgKyB0YXNraGFzaAogCiAgICAgICAgIGlmIHNlbGYuc2V0c2NlbmV0YXNrcyBhbmQgdGlkIG5vdCBpbiBzZWxmLnNldHNjZW5ldGFza3M6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICAjIFRoaXMgY2FuIGhhcHBlbiBpZiBsb2NrZWQgc2lncyBhcmUgaW4gYWN0aW9uLiBEZXRlY3QgYW5kIGp1c3QgYWJvcnQKKyAgICAgICAgaWYgdGFza2hhc2ggIT0gc2VsZi50YXNraGFzaFt0aWRdOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgIyBTYW5pdHkgY2hlY2tzCi0gICAgICAgIGNhY2hlX3VuaWhhc2ggPSBzZWxmLnVuaXRhc2toYXNoZXMuZ2V0KGtleSwgTm9uZSkKKyAgICAgICAgY2FjaGVfdW5paGFzaCA9IHNlbGYuX2dldF91bmloYXNoKHRpZCwgY2hlY2trZXk9dGFza2hhc2gpCiAgICAgICAgIGlmIGNhY2hlX3VuaWhhc2ggaXMgTm9uZToKICAgICAgICAgICAgIGJiLmZhdGFsKCclcyBub3QgaW4gdW5paGFzaCBjYWNoZS4gUGxlYXNlIHJlcG9ydCB0aGlzIGVycm9yJyAlIGtleSkKIApAQCAtNTAyLDE0ICs1NzEsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YVsndGFzayddID0gdGFzawogICAgICAgICAgICAgICAgICAgICBleHRyYV9kYXRhWydvdXRoYXNoX3NpZ2luZm8nXSA9IHNpZ2ZpbGUucmVhZCgpLmRlY29kZSgndXRmLTgnKQogCi0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2xpZW50KCkucmVwb3J0X3VuaWhhc2godGFza2hhc2gsIHNlbGYubWV0aG9kLCBvdXRoYXNoLCB1bmloYXNoLCBleHRyYV9kYXRhKQorICAgICAgICAgICAgICAgIG1ldGhvZCA9IHNlbGYubWV0aG9kCisgICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZCArIHNlbGYuZXh0cmFtZXRob2RbdGlkXQorCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2xpZW50KCkucmVwb3J0X3VuaWhhc2godGFza2hhc2gsIG1ldGhvZCwgb3V0aGFzaCwgdW5paGFzaCwgZXh0cmFfZGF0YSkKICAgICAgICAgICAgICAgICBuZXdfdW5paGFzaCA9IGRhdGFbJ3VuaWhhc2gnXQogCiAgICAgICAgICAgICAgICAgaWYgbmV3X3VuaWhhc2ggIT0gdW5paGFzaDoKLSAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgJ1Rhc2sgJXMgdW5paGFzaCBjaGFuZ2VkICVzIC0+ICVzIGJ5IHNlcnZlciAlcycgJSAodGFza2hhc2gsIHVuaWhhc2gsIG5ld191bmloYXNoLCBzZWxmLnNlcnZlcikpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIuZGVidWcoMSwgJ1Rhc2sgJXMgdW5paGFzaCBjaGFuZ2VkICVzIC0+ICVzIGJ5IHNlcnZlciAlcycgJSAodGFza2hhc2gsIHVuaWhhc2gsIG5ld191bmloYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIucnVucXVldWUudGFza1VuaUhhc2hVcGRhdGUoZm4gKyAnOmRvXycgKyB0YXNrLCBuZXdfdW5paGFzaCksIGQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X3VuaWhhc2godGlkLCBuZXdfdW5paGFzaCkKKyAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ0JCX1VOSUhBU0gnLCBuZXdfdW5paGFzaCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAnUmVwb3J0ZWQgdGFzayAlcyBhcyB1bmloYXNoICVzIHRvICVzJyAlICh0YXNraGFzaCwgdW5paGFzaCwgc2VsZi5zZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDEsICdSZXBvcnRlZCB0YXNrICVzIGFzIHVuaWhhc2ggJXMgdG8gJXMnICUgKHRhc2toYXNoLCB1bmloYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgICAgICBleGNlcHQgaGFzaHNlcnYuY2xpZW50Lkhhc2hDb25uZWN0aW9uRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBiYi53YXJuKCdFcnJvciBjb250YWN0aW5nIEhhc2ggRXF1aXZhbGVuY2UgU2VydmVyICVzOiAlcycgJSAoc2VsZi5zZXJ2ZXIsIHN0cihlKSkpCiAgICAgICAgIGZpbmFsbHk6CkBAIC01MjQsNiArNTk5LDM2IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiByZXBvcnRfdW5paGFzaF9lcXVpdihzZWxmLCB0aWQsIHRhc2toYXNoLCB3YW50ZWRfdW5paGFzaCwgY3VycmVudF91bmloYXNoLCBkYXRhY2FjaGVzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHt9CisgICAgICAgICAgICBtZXRob2QgPSBzZWxmLm1ldGhvZAorICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gbWV0aG9kICsgc2VsZi5leHRyYW1ldGhvZFt0aWRdCisKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLnJlcG9ydF91bmloYXNoX2VxdWl2KHRhc2toYXNoLCBtZXRob2QsIHdhbnRlZF91bmloYXNoLCBleHRyYV9kYXRhKQorICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCdSZXBvcnRlZCB0YXNrICVzIGFzIHVuaWhhc2ggJXMgdG8gJXMgKCVzKScgJSAodGlkLCB3YW50ZWRfdW5paGFzaCwgc2VsZi5zZXJ2ZXIsIHN0cihkYXRhKSkpCisKKyAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJTZXJ2ZXIgdW5hYmxlIHRvIGhhbmRsZSB1bmloYXNoIHJlcG9ydCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIGZpbmFsdW5paGFzaCA9IGRhdGFbJ3VuaWhhc2gnXQorCisgICAgICAgICAgICBpZiBmaW5hbHVuaWhhc2ggPT0gY3VycmVudF91bmloYXNoOgorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoICVzIHVuY2hhbmdlZCBieSBzZXJ2ZXInICUgKHRpZCwgZmluYWx1bmloYXNoKSkKKyAgICAgICAgICAgIGVsaWYgZmluYWx1bmloYXNoID09IHdhbnRlZF91bmloYXNoOgorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoIGNoYW5nZWQgJXMgLT4gJXMgYXMgd2FudGVkJyAlICh0aWQsIGN1cnJlbnRfdW5paGFzaCwgZmluYWx1bmloYXNoKSkKKyAgICAgICAgICAgICAgICBzZWxmLnNldF91bmloYXNoKHRpZCwgZmluYWx1bmloYXNoKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgVE9ETzogV2hhdCB0byBkbyBoZXJlPworICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoIHJlcG9ydGVkIGFzIHVud2FudGVkIGhhc2ggJXMnICUgKHRpZCwgZmluYWx1bmloYXNoKSkKKworICAgICAgICBleGNlcHQgaGFzaHNlcnYuY2xpZW50Lkhhc2hDb25uZWN0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGJiLndhcm4oJ0Vycm9yIGNvbnRhY3RpbmcgSGFzaCBFcXVpdmFsZW5jZSBTZXJ2ZXIgJXM6ICVzJyAlIChzZWxmLnNlcnZlciwgc3RyKGUpKSkKKworICAgICAgICByZXR1cm4gRmFsc2UKIAogIwogIyBEdW1teSBjbGFzcyB1c2VkIGZvciBiaXRiYWtlLXNlbGZ0ZXN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weQppbmRleCA4YzI1ZTA5Li5kMTNhMTI0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Ob1Byb3ZpZGVyKGl0ZW0sIGRlcGVuZGVlcz1zZWxmLmdldF9kZXBlbmRlZXMoaXRlbSksIHJlYXNvbnM9WyJObyBlbGlnaWJsZSBQUk9WSURFUnMgZXhpc3QgZm9yICclcyciICUgaXRlbV0pLCBjZmdEYXRhKQogICAgICAgICAgICAgcmFpc2UgYmIucHJvdmlkZXJzLk5vUHJvdmlkZXIoaXRlbSkKIAotICAgICAgICBpZiBsZW4oZWxpZ2libGUpID4gMSBhbmQgZm91bmRVbmlxdWUgPT0gRmFsc2U6CisgICAgICAgIGlmIGxlbihlbGlnaWJsZSkgPiAxIGFuZCBub3QgZm91bmRVbmlxdWU6CiAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBzZWxmLmNvbnNpZGVyX21zZ3NfY2FjaGU6CiAgICAgICAgICAgICAgICAgcHJvdmlkZXJzX2xpc3QgPSBbXQogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBlbGlnaWJsZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKaW5kZXggMDkwOTE2ZS4uNzRjOTAzZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKQEAgLTUsNyArNSw2IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBiYiwgYmIuY29va2VyCiBpbXBvcnQgcmUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY293LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKaW5kZXggYjRhZjRiYi4uYmY2ZTc5ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKQEAgLTcsNyArNyw3IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCisKIAogY2xhc3MgQ09XVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5CmluZGV4IDNlNDk5ODQuLjVmMTk1MDQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2RhdGEucHkKQEAgLTQ3Niw3ICs0NzYsNyBAQAogY2xhc3MgVGFza0hhc2godW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Rhc2toYXNoZXMoc2VsZik6CiAgICAgICAgIGRlZiBnZXR0YXNrX2Jhc2hoYXNoKHRhc2tuYW1lLCBkKToKLSAgICAgICAgICAgIHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGQpCisgICAgICAgICAgICB0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUgPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY2llcyhkLCBzZXQoKSkKICAgICAgICAgICAgIHRhc2tkZXBzLCBiYXNlaGFzaCA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jeV9oYXNoKHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSwgc2V0KCksICJzb21lZmlsZSIpCiAgICAgICAgICAgICBiYi53YXJuKHN0cihsb29rdXBjYWNoZSkpCiAgICAgICAgICAgICByZXR1cm4gYmFzZWhhc2hbInNvbWVmaWxlOiIgKyB0YXNrbmFtZV0KQEAgLTU0NCwxNDIgKzU0NCwzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZC5nZXRWYXJGbGFnKCdIRUxMTycsICdvdGhlcicpLCAncGxhbmV0JykKIAogCi0jIFJlbW90ZSBkYXRhc3RvcmUgdGVzdHMKLSMgVGhlc2UgcmVhbGx5IG9ubHkgdGVzdCB0aGUgaW50ZXJmYWNlLCBzaW5jZSBpbiBhY3R1YWwgdXNhZ2Ugd2UgaGF2ZSBhCi0jIHRpbmZvaWwgY29ubmVjdG9yIHRoYXQgZG9lcyBldmVyeXRoaW5nIG92ZXIgUlBDLCBhbmQgdGhpcyBkb2Vzbid0IHRlc3QKLSMgdGhhdC4KLQotY2xhc3MgVGVzdENvbm5lY3RvcjoKLSAgICBkID0gTm9uZQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKLSAgICAgICAgc2VsZi5kID0gZAotICAgIGRlZiBnZXRWYXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLmQuX2ZpbmRWYXIobmFtZSkKLSAgICBkZWYgZ2V0S2V5cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNldChzZWxmLmQua2V5cygpKQotICAgIGRlZiBnZXRWYXJIaXN0b3J5KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5kLnZhcmhpc3RvcnkudmFyaWFibGUobmFtZSkKLSAgICBkZWYgZXhwYW5kUHl0aG9uUmVmKHNlbGYsIHZhcm5hbWUsIGV4cHIsIGQpOgotICAgICAgICBsb2NhbGRhdGEgPSBzZWxmLmQuY3JlYXRlQ29weSgpCi0gICAgICAgIGZvciBrZXkgaW4gZC5sb2NhbGtleXMoKToKLSAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoZC5nZXRWYXIoa2V5KSkKLSAgICAgICAgdmFycGFyc2UgPSBiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlUGFyc2UodmFybmFtZSwgbG9jYWxkYXRhKQotICAgICAgICByZXR1cm4gdmFycGFyc2UucHl0aG9uX3N1YihleHByKQotICAgIGRlZiBzZXRWYXIoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBzZWxmLmQuc2V0VmFyKG5hbWUsIHZhbHVlKQotICAgIGRlZiBzZXRWYXJGbGFnKHNlbGYsIG5hbWUsIGZsYWcsIHZhbHVlKToKLSAgICAgICAgc2VsZi5kLnNldFZhckZsYWcobmFtZSwgZmxhZywgdmFsdWUpCi0gICAgZGVmIGRlbFZhcihzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5kLmRlbFZhcihuYW1lKQotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBkZWYgZGVsVmFyRmxhZyhzZWxmLCBuYW1lLCBmbGFnKToKLSAgICAgICAgc2VsZi5kLmRlbFZhckZsYWcobmFtZSwgZmxhZykKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZGVmIHJlbmFtZVZhcihzZWxmLCBuYW1lLCBuZXduYW1lKToKLSAgICAgICAgc2VsZi5kLnJlbmFtZVZhcihuYW1lLCBuZXduYW1lKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotY2xhc3MgUmVtb3RlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZW1vdGUoc2VsZik6Ci0KLSAgICAgICAgZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBkMS5lbmFibGVUcmFja2luZygpCi0gICAgICAgIGQyID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgZDIuZW5hYmxlVHJhY2tpbmcoKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKGQxKQotCi0gICAgICAgIGQyLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi0gICAgICAgIGQxLnNldFZhcignSEVMTE8nLCAnd29ybGQnKQotICAgICAgICBkMS5zZXRWYXJGbGFnKCdPVEhFUicsICdmbGFnbmFtZScsICdmbGFndmFsdWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmdldFZhcignSEVMTE8nKSwgJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5leHBhbmQoJyR7SEVMTE99JyksICd3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDIuZXhwYW5kKCcke0BkLmdldFZhcigiSEVMTE8iKX0nKSwgJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignZmxhZ25hbWUnLCBkMi5nZXRWYXJGbGFncygnT1RIRVInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5nZXRWYXJGbGFnKCdPVEhFUicsICdmbGFnbmFtZScpLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMS52YXJoaXN0b3J5LnZhcmlhYmxlKCdIRUxMTycpLCBkMi52YXJoaXN0b3J5LnZhcmlhYmxlKCdIRUxMTycpKQotICAgICAgICAjIFRlc3Qgc2V0VmFyIG9uIGNsaWVudCBzaWRlIGFmZmVjdHMgc2VydmVyCi0gICAgICAgIGQyLnNldFZhcignSEVMTE8nLCAnb3RoZXItd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLmdldFZhcignSEVMTE8nKSwgJ290aGVyLXdvcmxkJykKLSAgICAgICAgIyBUZXN0IHNldFZhckZsYWcgb24gY2xpZW50IHNpZGUgYWZmZWN0cyBzZXJ2ZXIKLSAgICAgICAgZDIuc2V0VmFyRmxhZygnSEVMTE8nLCAnZmxhZ25hbWUnLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMS5nZXRWYXJGbGFnKCdIRUxMTycsICdmbGFnbmFtZScpLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgIyBUZXN0IGNsaWVudCBzaWRlIGRhdGEgaXMgaW5jb3Jwb3JhdGVkIGluIHB5dGhvbiBleHBhbnNpb24gKHdoaWNoIGlzIGRvbmUgb24gc2VydmVyKQotICAgICAgICBkMi5zZXRWYXIoJ0ZPTycsICdiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmV4cGFuZCgnJHtAZC5nZXRWYXIoIkZPTyIpfScpLCAnYmFyJykKLSAgICAgICAgIyBUZXN0IG92ZXJyaWRlcyB3b3JrCi0gICAgICAgIGQxLnNldFZhcignRk9PX3Rlc3QnLCAnYmF6JykKLSAgICAgICAgZDEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOnRlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmdldFZhcignRk9PJyksICdiYXonKQotCi0KLSMgUmVtb3RlIGVxdWl2YWxlbnRzIG9mIGxvY2FsIHRlc3QgY2xhc3NlcwotIyBOb3RlIHRoYXQgdGhlc2UgYXJlbid0IHBlcmZlY3Qgc2luY2Ugd2Ugb25seSB0ZXN0IGluIG9uZSBkaXJlY3Rpb24KLQotY2xhc3MgUmVtb3RlRGF0YUV4cGFuc2lvbnMoRGF0YUV4cGFuc2lvbnMpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5kMSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZDFbImZvbyJdID0gInZhbHVlX29mX2ZvbyIKLSAgICAgICAgc2VsZi5kMVsiYmFyIl0gPSAidmFsdWVfb2ZfYmFyIgotICAgICAgICBzZWxmLmQxWyJ2YWx1ZV9vZl9mb28iXSA9ICJ2YWx1ZV9vZl8ndmFsdWVfb2ZfZm9vJyIKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVOZXN0ZWRFeHBhbnNpb25zKFRlc3ROZXN0ZWRFeHBhbnNpb25zKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxWyJmb28iXSA9ICJmb28iCi0gICAgICAgIHNlbGYuZDFbImJhciJdID0gImJhciIKLSAgICAgICAgc2VsZi5kMVsidmFsdWVfb2ZfZm9vYmFyIl0gPSAiMTg3IgotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotY2xhc3MgVGVzdFJlbW90ZUNvbmNhdChUZXN0Q29uY2F0KToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiRk9PIiwgImZvbyIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJWQUwiLCAidmFsIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkJBUiIsICJiYXIiKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotY2xhc3MgVGVzdFJlbW90ZUNvbmNhdE92ZXJyaWRlKFRlc3RDb25jYXRPdmVycmlkZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkZPTyIsICJmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiVkFMIiwgInZhbCIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJCQVIiLCAiYmFyIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVPdmVycmlkZXMoVGVzdE92ZXJyaWRlcyk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIk9WRVJSSURFUyIsICJmb286YmFyOmxvY2FsIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIlRFU1QiLCAidGVzdHZhbHVlIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVLZXlFeHBhbnNpb24oVGVzdEtleUV4cGFuc2lvbik6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkZPTyIsICJmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiQkFSIiwgImZvbyIpCi0gICAgICAgIGNvbm5lY3RvciA9IFRlc3RDb25uZWN0b3Ioc2VsZi5kMSkKLSAgICAgICAgc2VsZi5kLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi1jbGFzcyBUZXN0UmVtb3RlRmxhZ3MoVGVzdEZsYWdzKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiZm9vIiwgInZhbHVlIG9mIGZvbyIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyRmxhZygiZm9vIiwgImZsYWcxIiwgInZhbHVlIG9mIGZsYWcxIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXJGbGFnKCJmb28iLCAiZmxhZzIiLCAidmFsdWUgb2YgZmxhZzIiKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvYXBwbGUvY3Vwcy9yZWxlYXNlcyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvYXBwbGUvY3Vwcy9yZWxlYXNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODkzNGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9hcHBsZS9jdXBzL3JlbGVhc2VzCkBAIC0wLDAgKzEsMjQwMCBAQAorCisKKworCisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMS5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9naXRodWItY2xvdWQuczMuYW1hem9uYXdzLmNvbSI+CisgIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgorCisKKworICA8bGluayBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBtZWRpYT0iYWxsIiBpbnRlZ3JpdHk9InNoYTUxMi03bXR1bkhxcC9CdzBORDlha2pKTUU4WENoMFdQbTNIQVhPU2VYN3NrTDBxR0FocGRmemtRdlljdWpZY3dOUFRwV0tlS01GVUdaR3R2bkVrY2N6Rmd3UT09IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2ZyYW1ld29ya3MtOWI1MzE0MjEzZTM3MDU2ZWQ4N2IwNDE4MDU2YzRmMmMuY3NzIiAvPgorICA8bGluayBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBtZWRpYT0iYWxsIiBpbnRlZ3JpdHk9InNoYTUxMi1DbW9lZ2l6V0NVUjFqQzk0WTJldWtWUUlGeEo5R3hZZXJ6OXE3ZEJ3SW1MbHg4T0R3WWtYQU1JaENmVG5BNDVFcDYrK3JjTy9adEtWTHZGQk04ZGFwQT09IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL3NpdGUtNGU5ZjI3ZmEzMzM0MTc0M2Y3MzBhZTdiMGUzM2VmZjUuY3NzIiAvPgorICAgIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLUJ2bklDS0ZqSXZUNjlvNjFkeVlsbFh0YU9uR1ZiN0lmajVjM2xrM3dqN3RramF0MklDdU4rWFJ3eWs4dHFQM2RqN0lGaEVRenhEZHhTSGFKM3hqM013PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9hc3NldHMvZ2l0aHViLWZmOTg2ODc0Y2Y3ZTI4Y2JjZDVkNDQ4Y2RjYTcyNDVkLmNzcyIgLz4KKyAgICAKKyAgICAKKyAgICAKKyAgICAKKworCisgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgorICAKKyAgPHRpdGxlPlJlbGVhc2VzIMK3IGFwcGxlL2N1cHMgwrcgR2l0SHViPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT2ZmaWNpYWwgQ1VQUyBTb3VyY2VzLiBDb250cmlidXRlIHRvIGFwcGxlL2N1cHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KKyAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KKyAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CisgIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgorCisgICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZTpzcmMiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA2MzkxNDU/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIGNvbnRlbnQ9IkBnaXRodWIiIC8+PG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5IiAvPjxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9ImFwcGxlL2N1cHMiIC8+PG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0iT2ZmaWNpYWwgQ1VQUyBTb3VyY2VzLiBDb250cmlidXRlIHRvIGFwcGxlL2N1cHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgorICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDYzOTE0NT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iYXBwbGUvY3VwcyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3VwcyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik9mZmljaWFsIENVUFMgU291cmNlcy4gQ29udHJpYnV0ZSB0byBhcHBsZS9jdXBzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KKworICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS8iPgorICAKKyAgCisKKyAgICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQiIGRhdGEtcGpheC10cmFuc2llbnQ+CisKKworCisgIAorCisgIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3JlbGVhc2VzIiBkYXRhLXBqYXgtdHJhbnNpZW50PgorCisgICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgorICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CisgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KKworICAgIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImFtcyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tZ2FfaWQiIGNvbnRlbnQ9IiIgY2xhc3M9ImpzLW9jdG8tZ2EtaWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdmlzaXRvcl9pZCIgY29udGVudD0iMzg2ODQ0MDEwODM2NTEzNjgzNyIgLz4KKworPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvcmVsZWFzZXMvaW5kZXgiIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CisKKworCisgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KKworCis8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KKworCisKKyAgCisKKyAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KKyAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgorCisgICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CisKKyAgICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik5tUTNNMkZqWW1aaU5ESm1aVGc0WWpnelptUmtPV0psTmpRellqVTJNR0ZtTkRRNU9UTTRaR1ZtTWpjeU1UTm1NR1pqT0dWbE9EZzFOV00wTkdKbU9IeDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lPRGN1T0RFdU1qUTBMakUyTVNJc0luSmxjWFZsYzNSZmFXUWlPaUpGTUVOQ09qSXlNelE0T2pVd09FUTVRam8zTkVRM1FqQTZOVVJHUVRRelF6UWlMQ0owYVcxbGMzUmhiWEFpT2pFMU56WTJPREkwTXpjc0ltaHZjM1FpT2lKbmFYUm9kV0l1WTI5dEluMD0iPgorCisgICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iTUFSS0VUUExBQ0VfRkVBVFVSRURfQkxPR19QT1NUUyxNQVJLRVRQTEFDRV9JTlZPSUNFRF9CSUxMSU5HLE1BUktFVFBMQUNFX1NPQ0lBTF9QUk9PRl9DVVNUT01FUlMsTUFSS0VUUExBQ0VfVFJFTkRJTkdfU09DSUFMX1BST09GLE1BUktFVFBMQUNFX1JFQ09NTUVOREFUSU9OUyxNQVJLRVRQTEFDRV9QRU5ESU5HX0lOU1RBTExBVElPTlMiPgorCisgICAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSI5OTc5OTA1MDQyNTAxMWZlNmJjNzE3OTFlODYwYmQ1MGI0NmNjNmE3Ij4KKworICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iMmQyOWViMDExYzRlNTZiNTY4MjM5M2Q2ZjQ1Yzg2YjkiPgorICAKKworICAgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIiB0aXRsZT0iY3VwcyBSZWxlYXNlIE5vdGVzIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcy5hdG9tIiAvPgorICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiIHRpdGxlPSJjdXBzIFRhZ3MiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3RhZ3MuYXRvbSIgLz4KKyAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvY29tbWl0cy9tYXN0ZXIuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBjdXBzOm1hc3RlciIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgorCisgIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9hcHBsZS9jdXBzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy5naXQiPgorCisgIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjEwNjM5MTQ1IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9ImFwcGxlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjQ0MTM3ODUyIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJhcHBsZS9jdXBzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjQ0MTM3ODUyIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iYXBwbGUvY3VwcyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CisKKworCisKKyAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CisKKyAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KKworICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KKyAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vZmF2aWNvbi5pY28iPgorCis8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CisKKworCisKKworICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CisKKyAgPC9oZWFkPgorCisgIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtcmVzcG9uc2l2ZSI+CisgICAgCisKKyAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KKyAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CisgICAgPHNwYW4gY2xhc3M9IlByb2dyZXNzIHByb2dyZXNzLXBqYXgtbG9hZGVyIHBvc2l0aW9uLWZpeGVkIHdpZHRoLWZ1bGwganMtcGpheC1sb2FkZXItYmFyIj4KKyAgICAgIDxzcGFuIGNsYXNzPSJwcm9ncmVzcy1wamF4LWxvYWRlci1iYXIgdG9wLTAgbGVmdC0wIiBzdHlsZT0id2lkdGg6IDAlOyI+PC9zcGFuPgorICAgIDwvc3Bhbj4KKworICAgIAorICAgIAorICAgIAorCisKKyAgICAgICAgPGhlYWRlciBjbGFzcz0iSGVhZGVyLW9sZCBoZWFkZXItbG9nZ2VkLW91dCBqcy1kZXRhaWxzLWNvbnRhaW5lciBEZXRhaWxzIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTIiIHJvbGU9ImJhbm5lciI+CisgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWxnLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcC1yZXNwb25zaXZlIj4KKyAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcmsiPgorICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwMDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CisgICAgICAgIDwvYT4KKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctbm9uZSBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCB3aWR0aC1maXQgcC0yIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KKyAgICA8YSBjbGFzcz0iSGVhZGVyLWxpbmsiIGhyZWY9Ii9hcHBsZSI+YXBwbGU8L2E+CisgICAgLworICAgIDxhIGNsYXNzPSJIZWFkZXItbGluayIgaHJlZj0iL2FwcGxlL2N1cHMiPmN1cHM8L2E+CisKKworICAgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICA8YSBocmVmPSIvam9pbj9zb3VyY2U9aGVhZGVyLXJlcG8iCisgICAgICAgICAgICAgIGNsYXNzPSJkLWlubGluZS1ibG9jayBkLWxnLW5vbmUgZjUgdGV4dC13aGl0ZSBuby11bmRlcmxpbmUgYm9yZGVyIGJvcmRlci1ncmF5LWRhcmsgcm91bmRlZC0yIHB4LTIgcHktMSBtci0zIG1yLXNtLTUiCisgICAgICAgICAgICAgIGRhdGEtaHlkcm8tY2xpY2s9InsmcXVvdDtldmVudF90eXBlJnF1b3Q7OiZxdW90O2F1dGhlbnRpY2F0aW9uLmNsaWNrJnF1b3Q7LCZxdW90O3BheWxvYWQmcXVvdDs6eyZxdW90O2xvY2F0aW9uX2luX3BhZ2UmcXVvdDs6JnF1b3Q7c2l0ZSBoZWFkZXImcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9IjI0NjM0NDVjMDQ1YzZiZTg2YTdiNDhlNmMwYWY5NmQwYmE3Nzc4OTJkNmQyMzZmMjc4MjYzMjNiMzVjZWY1ZDciCisgICAgICAgICAgICAgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj4KKyAgICAgICAgICAgICAgU2lnbiZuYnNwO3VwCisgICAgICAgICAgICA8L2E+CisKKyAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBkLWxnLW5vbmUgbXQtMSBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgorICAgICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRocmVlLWJhcnMgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjQxIDlILjU5QzAgOSAwIDguNTkgMCA4YzAtLjU5IDAtMSAuNTktMUgxMS40Yy41OSAwIC41OS40MS41OSAxIDAgLjU5IDAgMS0uNTkgMWguMDF6bTAtNEguNTlDMCA1IDAgNC41OSAwIDRjMC0uNTkgMC0xIC41OS0xSDExLjRjLjU5IDAgLjU5LjQxLjU5IDEgMCAuNTkgMCAxLS41OSAxaC4wMXpNLjU5IDExSDExLjRjLjU5IDAgLjU5LjQxLjU5IDEgMCAuNTkgMCAxLS41OSAxSC41OUMwIDEzIDAgMTIuNTkgMCAxMmMwLS41OSAwLTEgLjU5LTF6Ii8+PC9zdmc+CisgICAgICAgICAgPC9idXR0b24+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IHBvc2l0aW9uLWZpeGVkIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgaGVpZ2h0LWZpdCBwb3NpdGlvbi1sZy1yZWxhdGl2ZSBkLWxnLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBkLWxnLW5vbmUgZmxleC1qdXN0aWZ5LWVuZCBib3JkZXItYm90dG9tIGJnLWdyYXktbGlnaHQgcC0zIj4KKyAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KKyAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgICAgIDwvYnV0dG9uPgorICAgICAgPC9kaXY+CisKKyAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCBweC0zIHB4LWxnLTAgbWItNSBtYi1sZy0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgorICAgICAgICAgIDx1bCBjbGFzcz0iZC1sZy1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBkLWxnLWZsZXggZmxleC1sZy1ub3dyYXAgZmxleC1sZy1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgorICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CisgICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIj4KKyAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KKyAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tbGctcmVsYXRpdmUiPgorICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgcGItNCBwLWxnLTQgcG9zaXRpb24tcmVsYXRpdmUgcG9zaXRpb24tbGctYWJzb2x1dGUgbGVmdC0wIGxlZnQtbGctbjQiPgorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2FjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEFjdGlvbnMiPkFjdGlvbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcGFja2FnZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBQYWNrYWdlcyI+UGFja2FnZXM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2hvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+SG9zdGluZzwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jdXN0b21lci1zdG9yaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEN1c3RvbWVyIHN0b3JpZXMiPkN1c3RvbWVyIHN0b3JpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgorICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICA8bGkgY2xhc3M9ImJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyI+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2VudGVycHJpc2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgZC1sZy1mbGV4IGZsZXgtbGctbm93cmFwIGZsZXgtbGctaXRlbXMtY2VudGVyIGJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgorICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayI+CisgICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKKyAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tbGctcmVsYXRpdmUiPgorICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKworICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgcGItNCBwLWxnLTQgcG9zaXRpb24tcmVsYXRpdmUgcG9zaXRpb24tbGctYWJzb2x1dGUgbGVmdC0wIGxlZnQtbGctbjQiPgorICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXhwbG9yZSI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisKKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yIGJvcmRlci1sZy10b3AgcHQtbGctMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIj4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBkLWxnLWZsZXggZmxleC1sZy1ub3dyYXAgZmxleC1sZy1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgorICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CisgICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIj4KKyAgICAgICAgICAgICAgICAgICAgUHJpY2luZworICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1hYnNvbHV0ZSBwb3NpdGlvbi1sZy1yZWxhdGl2ZSI+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKworICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgcC1sZy00IHBvc2l0aW9uLXJlbGF0aXZlIHBvc2l0aW9uLWxnLWFic29sdXRlIGxlZnQtMCBsZWZ0LWxnLW40Ij4KKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CisKKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgcGxhbnMiPkNvbXBhcmUgcGxhbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZW50ZXJwcmlzZS5naXRodWIuY29tL2NvbnRhY3QiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbnRhY3QgU2FsZXMiPkNvbnRhY3QgU2FsZXM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKworICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2RldGFpbHM+CisgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPC91bD4KKyAgICAgICAgPC9uYXY+CisKKyAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0zIHB4LWxnLTAgdGV4dC1jZW50ZXIgdGV4dC1sZy1sZWZ0Ij4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbWItMyBtYi1sZy0wIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggZmxleC1zZWxmLXN0cmV0Y2ggZmxleC1sZy1zZWxmLWF1dG8gbXItMCBtci1sZy0zIG1iLTMgbWItbGctMCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgorICByb2xlPSJjb21ib2JveCIKKyAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCisgIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgorICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgorICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKKz4KKyAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgorICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiByb2xlPSJzZWFyY2giIGFyaWEtbGFiZWw9IlNpdGUiIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iNDQxMzc4NTIiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9hcHBsZS9jdXBzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9hcHBsZS9jdXBzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgorICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaW5wdXQtc20gaGVhZGVyLXNlYXJjaC13cmFwcGVyIHAtMCBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgorICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKKyAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKKyAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgorICAgICAgICAgIG5hbWU9InEiCisgICAgICAgICAgdmFsdWU9IiIKKyAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgorICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCisgICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKKyAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgorICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgorICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKKyAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCisgICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49MFFtTVN1WkhtODRjUE5WR1E3UllBWGdQUmlVZk9jak5PQzF2WE9oVm55em0yQjNKU0h6MWZjSUpCWnhNQUtXVWlCWGpsVndMa2NITEpQWnkyZ3krbWc9PSIKKyAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKKyAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKKyAgICAgICAgICA+CisgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KKworICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CisgICAgICAgICAgICAgIAorPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgorICAKKworPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KKyAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CisgICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMDAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMDAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgorICAgIDwvZGl2PgorCisgICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgorCisgICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KKyAgICAgICAgQWxsIEdpdEh1YgorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KKyAgICAgIEp1bXAgdG8KKyAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisgIDwvYT4KKzwvbGk+CisKKzwvdWw+CisKKzx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgorICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KKyAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgorICA8L2xpPgorPC91bD4KKworPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CisgIAorCis8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KKyAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CisgICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMDAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMDAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgorICAgIDwvZGl2PgorCisgICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgorCisgICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KKyAgICAgICAgQWxsIEdpdEh1YgorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KKyAgICAgIEp1bXAgdG8KKyAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisgIDwvYT4KKzwvbGk+CisKKyAgCisKKzxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgorICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KKyAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwMC0xIDF2MTRhMSAxIDAgMDAxIDFoMTNhMSAxIDAgMDAxLTFWMWExIDEgMCAwMC0xLTF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwMDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwMDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CisgICAgPC9kaXY+CisKKyAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CisKKyAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KKyAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgorICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKKyAgICAgIDwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgorICAgICAgICBBbGwgR2l0SHViCisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgorICAgICAgSnVtcCB0bworICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KKyAgICA8L2Rpdj4KKyAgPC9hPgorPC9saT4KKworCis8L3VsPgorCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvbGFiZWw+Cis8L2Zvcm0+ICA8L2Rpdj4KKzwvZGl2PgorCisgICAgICAgICAgPC9kaXY+CisKKyAgICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMlMkZyZWxlYXNlcyIKKyAgICAgICAgICBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIgorICAgICAgICAgIGRhdGEtaHlkcm8tY2xpY2s9InsmcXVvdDtldmVudF90eXBlJnF1b3Q7OiZxdW90O2F1dGhlbnRpY2F0aW9uLmNsaWNrJnF1b3Q7LCZxdW90O3BheWxvYWQmcXVvdDs6eyZxdW90O2xvY2F0aW9uX2luX3BhZ2UmcXVvdDs6JnF1b3Q7c2l0ZSBoZWFkZXIgbWVudSZxdW90OywmcXVvdDtyZXBvc2l0b3J5X2lkJnF1b3Q7Om51bGwsJnF1b3Q7YXV0aF90eXBlJnF1b3Q7OiZxdW90O1NJR05fVVAmcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iZTRlMzQyNTVjODQ4NWQ2OTE1ZDE0NDhhODZlYTk3MjNjM2IyZTkyZTk1NzZlNzE4NDVhZjczNTg3MGRhOGQ3MCIKKyAgICAgICAgICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gaW4sIHRleHQ6c2lnbi1pbiI+CisgICAgICAgICAgU2lnbiZuYnNwO2luCisgICAgICAgIDwvYT4KKyAgICAgICAgICA8YSBocmVmPSIvam9pbj9zb3VyY2U9aGVhZGVyLXJlcG8mYW1wO3NvdXJjZV9yZXBvPWFwcGxlJTJGY3VwcyIKKyAgICAgICAgICAgIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiCisgICAgICAgICAgICBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3NpdGUgaGVhZGVyIG1lbnUmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImU0ZTM0MjU1Yzg0ODVkNjkxNWQxNDQ4YTg2ZWE5NzIzYzNiMmU5MmU5NTc2ZTcxODQ1YWY3MzU4NzBkYThkNzAiCisgICAgICAgICAgICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+CisgICAgICAgICAgICBTaWduJm5ic3A7dXAKKyAgICAgICAgICA8L2E+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2hlYWRlcj4KKworICA8L2Rpdj4KKworICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CisKKworICAgIDxkaXYgaWQ9ImpzLWZsYXNoLWNvbnRhaW5lciI+CisKKzwvZGl2PgorCisKKworICA8ZGl2IGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgZGF0YS1jb21taXQtaG92ZXJjYXJkcy1lbmFibGVkPgorICAgICAgICA8ZGl2IGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvU29mdHdhcmVTb3VyY2VDb2RlIiBjbGFzcz0iIj4KKyAgICA8bWFpbiAgPgorICAgICAgCisKKworICAKKworCisKKyAgCisKKworCisKKworCisKKworCisgIDxkaXYgY2xhc3M9IiBwYWdlaGVhZCByZXBvaGVhZCByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgcHQtMCBwdC1sZy00ICI+CisgICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyLWxnIHAtcmVzcG9uc2l2ZSBkLW5vbmUgZC1sZy1ibG9jayI+CisKKyAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CisKKworCisKKyAgPGxpPgorICAgIAorICA8YSBjbGFzcz0idG9vbHRpcHBlZCB0b29sdGlwcGVkLXMgYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyIgZGF0YS1oeWRyby1jbGljaz0ieyZxdW90O2V2ZW50X3R5cGUmcXVvdDs6JnF1b3Q7YXV0aGVudGljYXRpb24uY2xpY2smcXVvdDssJnF1b3Q7cGF5bG9hZCZxdW90Ozp7JnF1b3Q7bG9jYXRpb25faW5fcGFnZSZxdW90OzomcXVvdDtub3RpZmljYXRpb24gc3Vic2NyaXB0aW9uIG1lbnUgd2F0Y2gmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtMT0dfSU4mcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iNTVlNjFjZTgwNzUyMDk0MjcyNGQzN2Q0OGQzZDE5YzNkYTRiYWVlY2IyZWM4OWJjZTRmNmRhMGNlYjkxYTYyZCIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMiPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1leWUgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguMDYgMkMzIDIgMCA4IDAgOHMzIDYgOC4wNiA2QzEzIDE0IDE2IDggMTYgOHMtMy02LTcuOTQtNnpNOCAxMmMtMi4yIDAtNC0xLjc4LTQtNCAwLTIuMiAxLjgtNCA0LTQgMi4yMiAwIDQgMS44IDQgNCAwIDIuMjItMS43OCA0LTQgNHptMi00YzAgMS4xMS0uODkgMi0yIDItMS4xMSAwLTItLjg5LTItMiAwLTEuMTEuODktMiAyLTIgMS4xMSAwIDIgLjg5IDIgMnoiLz48L3N2Zz4KKyAgICBXYXRjaAorPC9hPiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvYXBwbGUvY3Vwcy93YXRjaGVycyIKKyAgICAgICBhcmlhLWxhYmVsPSI4OCB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgIDg4CisgICAgPC9hPgorCisgIDwvbGk+CisKKyAgPGxpPgorICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3N0YXIgYnV0dG9uJnF1b3Q7LCZxdW90O3JlcG9zaXRvcnlfaWQmcXVvdDs6NDQxMzc4NTIsJnF1b3Q7YXV0aF90eXBlJnF1b3Q7OiZxdW90O0xPR19JTiZxdW90OywmcXVvdDtjbGllbnRfaWQmcXVvdDs6bnVsbCwmcXVvdDtvcmlnaW5hdGluZ19yZXF1ZXN0X2lkJnF1b3Q7OiZxdW90O0UwQ0I6MjIzNDg6NTA4RDlCOjc0RDdCMDo1REZBNDNDNCZxdW90OywmcXVvdDtvcmlnaW5hdGluZ191cmwmcXVvdDs6JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMmcXVvdDssJnF1b3Q7cmVmZXJyZXImcXVvdDs6bnVsbCwmcXVvdDt1c2VyX2lkJnF1b3Q7Om51bGx9fSIgZGF0YS1oeWRyby1jbGljay1obWFjPSJmOTcwNGE3MTViZTQ2YTU2NzQ3OTk3MzU3MzQ3N2E1ODM1MDFhMTk3NmY5OWRlYjBjY2RkMGIxZWQzYjc0ZTViIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRmFwcGxlJTJGY3VwcyI+CisgICAgICA8c3ZnIGFyaWEtbGFiZWw9InN0YXIiIGhlaWdodD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc3RhciB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CisKKyAgICAgIFN0YXIKKzwvYT4KKyAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL2FwcGxlL2N1cHMvc3RhcmdhemVycyIKKyAgICAgIGFyaWEtbGFiZWw9Ijg4MyB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICA4ODMKKyAgICA8L2E+CisKKyAgPC9saT4KKworICA8bGk+CisgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3JlcG8gZGV0YWlscyBmb3JrIGJ1dHRvbiZxdW90OywmcXVvdDtyZXBvc2l0b3J5X2lkJnF1b3Q7OjQ0MTM3ODUyLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtMT0dfSU4mcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iYjUyN2IyZmVhMGNkOGU5NDg3MDA0Nzk3MmFjZDg3MzU4Y2Y2YTczNWRhMjU0YjAwZWIwNWMxNWQ2NzZmNzUwMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMiPgorICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAwLTEgMy43MlY2TDUgOCAzIDZWNC43MkExLjk5MyAxLjk5MyAwIDAwMiAxYTEuOTkzIDEuOTkzIDAgMDAtMSAzLjcyVjYuNWwzIDN2MS43OEExLjk5MyAxLjk5MyAwIDAwNSAxNWExLjk5MyAxLjk5MyAwIDAwMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAwOCAxek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zIDEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMtMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnoiLz48L3N2Zz4KKyAgICAgICAgRm9yaworPC9hPgorICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKKyAgICAgICBhcmlhLWxhYmVsPSIyNjAgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICAyNjAKKyAgICA8L2E+CisgIDwvbGk+Cis8L3VsPgorCisgICAgICA8aDEgY2xhc3M9InB1YmxpYyAiPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgorICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL2FwcGxlL2hvdmVyY2FyZCIgaHJlZj0iL2FwcGxlIj5hcHBsZTwvYT48L3NwYW4+PCEtLQorLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCistLT48c3Ryb25nIGl0ZW1wcm9wPSJuYW1lIj48YSBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBocmVmPSIvYXBwbGUvY3VwcyI+Y3VwczwvYT48L3N0cm9uZz4KKyAgCisKKzwvaDE+CisKKyAgICA8L2Rpdj4KKyAgICAKKzxuYXYgY2xhc3M9Imh4X3JlcG9uYXYgcmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lci1sZyBwLXJlc3BvbnNpdmUgZC1ub25lIGQtbGctYmxvY2siCisgICAgIGl0ZW1zY29wZQorICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCisgICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKKyAgICAgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciI+CisKKyAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgPGEgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSBzZWxlY3RlZCByZXBvbmF2LWl0ZW0iIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGMiIGFyaWEtY3VycmVudD0icGFnZSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19zb3VyY2UgcmVwb19kb3dubG9hZHMgcmVwb19jb21taXRzIHJlcG9fcmVsZWFzZXMgcmVwb190YWdzIHJlcG9fYnJhbmNoZXMgcmVwb19wYWNrYWdlcyAvYXBwbGUvY3VwcyIgaHJlZj0iL2FwcGxlL2N1cHMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jb2RlIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDNMOCA0LjUgMTEuNSA4IDggMTEuNSA5LjUgMTMgMTQgOCA5LjUgM3ptLTUgMEwwIDhsNC41IDVMNiAxMS41IDIuNSA4IDYgNC41IDQuNSAzeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CisgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgorPC9hPiAgPC9zcGFuPgorCisgICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgICA8YSBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBpIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19pc3N1ZXMgcmVwb19sYWJlbHMgcmVwb19taWxlc3RvbmVzIC9hcHBsZS9jdXBzL2lzc3VlcyIgaHJlZj0iL2FwcGxlL2N1cHMvaXNzdWVzIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1pc3N1ZS1vcGVuZWQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDIuM2MzLjE0IDAgNS43IDIuNTYgNS43IDUuN3MtMi41NiA1LjctNS43IDUuN0E1LjcxIDUuNzEgMCAwMTEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+PC9kaXY+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj4xMDwvc3Bhbj4KKyAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KKzwvYT4gICAgPC9zcGFuPgorCisgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGRhdGEtc2tpcC1wamF4PSJ0cnVlIiBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wdWxscyBjaGVja3MgL2FwcGxlL2N1cHMvcHVsbHMiIGhyZWY9Ii9hcHBsZS9jdXBzL3B1bGxzIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LXB1bGwtcmVxdWVzdCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDExLjI4VjVjLS4wMy0uNzgtLjM0LTEuNDctLjk0LTIuMDZDOS40NiAyLjM1IDguNzggMi4wMyA4IDJIN1YwTDQgM2wzIDNWNGgxYy4yNy4wMi40OC4xMS42OS4zMS4yMS4yLjMuNDIuMzEuNjl2Ni4yOEExLjk5MyAxLjk5MyAwIDAwMTAgMTVhMS45OTMgMS45OTMgMCAwMDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMDAyIDE1YTEuOTkzIDEuOTkzIDAgMDAxLTMuNzJWNC43MmMuNTktLjM0IDEtLjk4IDEtMS43MnptLS44IDEwYzAgLjY2LS41NSAxLjItMS4yIDEuMi0uNjUgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMnpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnoiLz48L3N2Zz48L2Rpdj4KKyAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjY8L3NwYW4+CisgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjMiPgorPC9hPiAgPC9zcGFuPgorCisKKyAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvYXBwbGUvY3Vwcy9wcm9qZWN0cyIgaHJlZj0iL2FwcGxlL2N1cHMvcHJvamVjdHMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgUHJvamVjdHMKKyAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIiA+MDwvc3Bhbj4KKzwvYT4KKworICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLWhvdGtleT0iZyB3IiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3dpa2kgL2FwcGxlL2N1cHMvd2lraSIgaHJlZj0iL2FwcGxlL2N1cHMvd2lraSI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWlubGluZSI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWJvb2siIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zIDVoNHYxSDNWNXptMCAzaDRWN0gzdjF6bTAgMmg0VjlIM3Yxem0xMS01aC00djFoNFY1em0wIDJoLTR2MWg0Vjd6bTAgMmgtNHYxaDRWOXptMi02djljMCAuNTUtLjQ1IDEtMSAxSDkuNWwtMSAxLTEtMUgyYy0uNTUgMC0xLS40NS0xLTFWM2MwLS41NS40NS0xIDEtMWg1LjVsMSAxIDEtMUgxNWMuNTUgMCAxIC40NSAxIDF6bS04IC41TDcuNSAzSDJ2OWg2VjMuNXptNy0uNUg5LjVsLS41LjVWMTJoNlYzeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgV2lraQorPC9hPgorICAgIDxhIGRhdGEtc2tpcC1wamF4PSJ0cnVlIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0ic2VjdXJpdHkgYWxlcnRzIHBvbGljeSBjb2RlX3NjYW5uaW5nIC9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zaGllbGQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDJsNy0yIDcgMnY2LjAyQzE0IDEyLjY5IDguNjkgMTYgNyAxNmMtMS42OSAwLTctMy4zMS03LTcuOThWMnptMSAuNzVMNyAxbDYgMS43NXY1LjI2OEMxMyAxMi4xMDQgOC40NDkgMTUgNyAxNWMtMS40NDkgMC02LTIuODk2LTYtNi45ODJWMi43NXptMSAuNzVMNyAydjEyYy0xLjIwNyAwLTUtMi40ODItNS01Ljk4NVYzLjV6Ii8+PC9zdmc+PC9kaXY+CisgICAgICBTZWN1cml0eQorPC9hPgorICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIHBlb3BsZSAvYXBwbGUvY3Vwcy9wdWxzZSIgaHJlZj0iL2FwcGxlL2N1cHMvcHVsc2UiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1ncmFwaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE2IDE0djFIMFYwaDF2MTRoMTV6TTUgMTNIM1Y4aDJ2NXptNCAwSDdWM2gydjEwem00IDBoLTJWNmgydjd6Ii8+PC9zdmc+PC9kaXY+CisgICAgICBJbnNpZ2h0cworPC9hPgorCis8L25hdj4KKworICA8ZGl2IGNsYXNzPSJyZXBvbmF2LXdyYXBwZXIgcmVwb25hdi1zbWFsbCBkLWxnLW5vbmUiPgorICA8bmF2IGNsYXNzPSJyZXBvbmF2IGpzLXJlcG9uYXYgdGV4dC1jZW50ZXIgbm8td3JhcCIKKyAgICAgICBpdGVtc2NvcGUKKyAgICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiPgorCisgICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9hcHBsZS9jdXBzIiBocmVmPSIvYXBwbGUvY3VwcyI+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgorICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgorPC9hPiAgICA8L3NwYW4+CisKKyAgICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19pc3N1ZXMgcmVwb19sYWJlbHMgcmVwb19taWxlc3RvbmVzIC9hcHBsZS9jdXBzL2lzc3VlcyIgaHJlZj0iL2FwcGxlL2N1cHMvaXNzdWVzIj4KKyAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+SXNzdWVzPC9zcGFuPgorICAgICAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj4xMDwvc3Bhbj4KKyAgICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjIiPgorPC9hPiAgICAgIDwvc3Bhbj4KKworICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9hcHBsZS9jdXBzL3B1bGxzIiBocmVmPSIvYXBwbGUvY3Vwcy9wdWxscyI+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+Njwvc3Bhbj4KKyAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KKzwvYT4gICAgPC9zcGFuPgorCisgICAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KKyAgICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL2FwcGxlL2N1cHMvcHJvamVjdHMiIGhyZWY9Ii9hcHBsZS9jdXBzL3Byb2plY3RzIj4KKyAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHJvamVjdHM8L3NwYW4+CisgICAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjA8L3NwYW4+CisgICAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSI0Ij4KKzwvYT4gICAgICA8L3NwYW4+CisKKyAgICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb193aWtpIC9hcHBsZS9jdXBzL3dpa2kiIGhyZWY9Ii9hcHBsZS9jdXBzL3dpa2kiPgorICAgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5XaWtpPC9zcGFuPgorICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iNSI+Cis8L2E+ICAgICAgPC9zcGFuPgorCisgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0ic2VjdXJpdHkgYWxlcnRzIHBvbGljeSBjb2RlX3NjYW5uaW5nIC9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiPgorICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+U2VjdXJpdHk8L3NwYW4+CisgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iNiI+Cis8L2E+CisgICAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icHVsc2UgL2FwcGxlL2N1cHMvcHVsc2UiIGhyZWY9Ii9hcHBsZS9jdXBzL3B1bHNlIj4KKyAgICAgICAgUHVsc2UKKzwvYT4KKworICA8L25hdj4KKzwvZGl2PgorCisKKyAgPC9kaXY+Cis8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgY2xlYXJmaXggbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgcC1yZXNwb25zaXZlIj4KKyAgPGRpdiBjbGFzcz0icmVwb3NpdG9yeS1jb250ZW50ICI+CisKKyAgICAKKyAgICAKKyAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEgaGlkZS1zbSI+CisgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CisgICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KKyAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9wcm9tcHRfZGlzbWlzc2Fscy9zaWdudXAiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX21ldGhvZCIgdmFsdWU9InB1dCIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJrRGFYL3NGM0FvU2cvM21HVGc3Tnc0RWdHb3hCQ3ZvcThhZGwwcmRXOFFmcFVRbm1wT2VxM0V4U1lrUVlRbDZVZmlSR0dRbGF5OUh6b1ZWblY5cGphUT09IiAvPgorICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CisgICAgICAgICAgICAgIERpc21pc3MKKyAgICAgICAgICAgIDwvYnV0dG9uPgorPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkJlIG5vdGlmaWVkIG9mIG5ldyByZWxlYXNlczwvaDM+CisgICAgICAgICAgPHAgY2xhc3M9ImNvbC04IG14LWF1dG8iPkNyZWF0ZSB5b3VyIGZyZWUgR2l0SHViIGFjY291bnQgdG9kYXkgdG8gc3Vic2NyaWJlIHRvIHRoaXMgcmVwb3NpdG9yeSBmb3IgbmV3IHJlbGVhc2VzIGFuZCBidWlsZCBzb2Z0d2FyZSBhbG9uZ3NpZGUgNDAgbWlsbGlvbiBkZXZlbG9wZXJzLjwvcD4KKyAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3JlbGVhc2VzIHNpZ251cCBwcm9tcHQmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImMyYTlmODcwZGRmOTk2OGNjNjk3ODI0NjRjNjgzOTFmOWU2YWU3NjQ2NTAxZDEzYmNmY2NlNjg0NThiZjgyZTUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtcmVsZWFzZXMiPlNpZ24gdXA8L2E+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKworICA8ZGl2IGNsYXNzPSJzdWJuYXYiPgorICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LW1kLXJvdyBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LW1kLWl0ZW1zLWNlbnRlciI+CisgIDxkaXYgY2xhc3M9InN1Ym5hdi1saW5rcyBmbG9hdC1sZWZ0IiByb2xlPSJuYXZpZ2F0aW9uIj4KKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHN1Ym5hdi1pdGVtIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcmVsZWFzZXMgL2FwcGxlL2N1cHMvcmVsZWFzZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzIj5SZWxlYXNlczwvYT4KKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHN1Ym5hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3RhZ3MgL2FwcGxlL2N1cHMvdGFncyIgaHJlZj0iL2FwcGxlL2N1cHMvdGFncyI+VGFnczwvYT4KKyAgPC9kaXY+Cis8L2Rpdj4KKworCisgIDwvZGl2PgorCisgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci10b3AgY2xlYXJmaXgiPgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLWxhdGVzdCI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorICAgICAgICA8c3BhbiBjbGFzcz0iZmxleC1zaHJpbmstMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBtYi1tZC0yIG1yLTIgbXItbWQtMCBMYWJlbC0tb3V0bGluZS1ncmVlbiI+CisgICAgICAgICAgICA8YSBjbGFzcz0iYm9yZGVyLTAgTGFiZWwtLW91dGxpbmUtZ3JlZW4iIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2xhdGVzdCI+TGF0ZXN0IHJlbGVhc2U8L2E+CisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zLjEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjMuMSI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjE8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWQxODFjMjRlNGIxMzBkMjk4MTc4NWQ0NDQ4OGJlZjhjZmRhNWY2ZCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmVkMTgxYzI8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjMuMSI+djIuMy4xPC9hPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxzcGFuIGNsYXNzPSJkLW1kLW5vbmUgZmxleC1zaHJpbmstMCBtbC0yIG10LTIgbXQtbWQtMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBMYWJlbC0tb3V0bGluZS1ncmVlbiI+CisgICAgICAgICAgICAgIDxhIGNsYXNzPSJib3JkZXItMCBMYWJlbC0tb3V0bGluZS1ncmVlbiIgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvbGF0ZXN0Ij5MYXRlc3QgcmVsZWFzZTwvYT4KKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMy4xIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zLjEiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjMuMTwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9lZDE4MWMyNGU0YjEzMGQyOTgxNzg1ZDQ0NDg4YmVmOGNmZGE1ZjZkIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPmVkMTgxYzI8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTEyLTEzVDE0OjUxOjExWiIgY2xhc3M9Im5vLXdyYXAiPkRlYyAxMywgMjAxOTwvcmVsYXRpdmUtdGltZT4KKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zLjEgaXMgYSBnZW5lcmFsIGJ1ZyBmaXggcmVsZWFzZSwgaW5jbHVkaW5nIGEgZml4IGZvciBDVkUtMjAxOS0yMjI4LiAgQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5Eb2N1bWVudGF0aW9uIHVwZGF0ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUwNDY4MzQ1NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MSI+IzU2NjE8L2E+LCA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MTQ5NzM4NTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Njc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzQiPiM1Njc0PC9hPiwgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIwNDcwMTg5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgyIj4jNTY4MjwvYT4pPC9saT4KKzxsaT5DVkUtMjAxOS0yMjI4OiBUaGUgPGNvZGU+aXBwU2V0VmFsdWV0YWc8L2NvZGU+IGZ1bmN0aW9uIGRpZCBub3QgdmFsaWRhdGUgdGhlIGRlZmF1bHQ8YnI+CitsYW5ndWFnZSB2YWx1ZS48L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIGluIHRoZSB3ZWIgaW50ZXJmYWNlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzM5MjU2MTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjEiPiM1NjIxPC9hPik8L2xpPgorPGxpPlRoZSBQUEQgY2FjaGUgY29kZSBub3cgbG9va3MgdXAgcGFnZSBzaXplcyB1c2luZyB0aGVpciBkaW1lbnNpb25zPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3OTg3NzY4MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMyI+IzU2MzM8L2E+KTwvbGk+Cis8bGk+UFBEIGZpbGVzIGNvbnRhaW5pbmcgImN1c3RvbSIgb3B0aW9uIGtleXdvcmRzIGRpZCBub3Qgd29yayAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg2MDI0NTkxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM5Ij4jNTYzOTwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoZSBzY2hlZHVsZXIncyBzeXN0ZW1kIHN1cHBvcnQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NjAzNDQwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCI+IzU2NDA8L2E+KTwvbGk+Cis8bGk+T24gV2luZG93cywgVExTIGNlcnRpZmljYXRlcyBnZW5lcmF0ZWQgb24gRmVicnVhcnkgMjkgd291bGQgbGlrZWx5IGZhaWw8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg3MjE1OTcyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjQzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjQzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjQzIj4jNTY0MzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIERpZ2VzdE9wdGlvbnMgZGlyZWN0aXZlIGZvciB0aGUgPGNvZGU+Y2xpZW50LmNvbmY8L2NvZGU+IGZpbGUgdG8gY29udHJvbCB3aGV0aGVyPGJyPgorTUQ1LWJhc2VkIERpZ2VzdCBhdXRoZW50aWNhdGlvbiBpcyBhbGxvd2VkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODk3MjU4ODciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjQ3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDciPiM1NjQ3PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGluIHRoZSBoYW5kbGluZyBvZiBwcmludGVyIHJlc291cmNlIGZpbGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0OTUyNjkzNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjUyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTIiPiM1NjUyPC9hPik8L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IHJlcG9ydHMgYW4gZXJyb3Igd2hlbiB0aGUgZGlzdHJpYnV0aW9uPGJyPgorcGVybWlzc2lvbnMgYXJlIHdyb25nIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDA1OTQ1MTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiPiM1NjU4PC9hPik8L2xpPgorPGxpPkFkZGVkIHBhaW50IGNhbiBsYWJlbHMgdG8gRHltbyBkcml2ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUwNDc1NDI0OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MiI+IzU2NjI8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcGV2ZXByaW50ZXI8L2NvZGU+IHByb2dyYW0gbm93IHN1cHBvcnRzIGF1dGhlbnRpY2F0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDU4MjkwOTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjY1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjUiPiM1NjY1PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPiBwcm9ncmFtIG5vdyBhZHZlcnRpc2VzIEROUy1TRCBzZXJ2aWNlcyBvbiB0aGUgY29ycmVjdDxicj4KK2ludGVyZmFjZXMsIGFuZCBwcm92aWRlcyBhIHdheSB0byB0dXJuIHRoZW0gb2ZmIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDU4MzAwNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjY2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjYiPiM1NjY2PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT4tLXdpdGgtZGJ1c2RpcjwvY29kZT4gb3B0aW9uIHdhcyBpZ25vcmVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDk2MTE4MzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjcxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzEiPiM1NjcxPC9hPik8L2xpPgorPGxpPlNhbmRib3hlZCBhcHBsaWNhdGlvbnMgd2VyZSBub3QgYWJsZSB0byBnZXQgdGhlIGRlZmF1bHQgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTE5MTc5NjAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY3Ni9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc2Ij4jNTY3NjwvYT4pPC9saT4KKzxsaT5Mb2cgZmlsZSBhY2Nlc3MgY29udHJvbHMgd2VyZSBub3QgcHJlc2VydmVkIGJ5IDxjb2RlPmN1cHNjdGw8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MTkyMzAxNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2NzcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2NzciPiM1Njc3PC9hPik8L2xpPgorPGxpPkRlZmF1bHQgcHJpbnRlcnMgc2V0IHdpdGggPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBkaWQgbm90IHdvcmsgaW4gYWxsIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjA0MTU5NjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiPiM1NjgxPC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjIwNjUzNzYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiPiM1NjgzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIzMjAwMTQyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0Ij4jNTY4NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhbiBlcnJvciBpbiB0aGUgam9icyB3ZWIgaW50ZXJmYWNlIHRlbXBsYXRlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1Mjk5ODkyODgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2OTQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2OTQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2OTQiPiM1Njk0PC9hPik8L2xpPgorPGxpPkZpeGVkIGFuIG9mZi1ieS1vbmUgZXJyb3IgaW4gPGNvZGU+aXBwRW51bVN0cmluZzwvY29kZT4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUzMjg2MjM0MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTY5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTY5NSI+IzU2OTU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBuZXcgY29tcGlsZXIgd2FybmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUzNDU0NTQxOSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTcwMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTcwMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTcwMCI+IzU3MDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBmZXcgaXNzdWVzIHdpdGggdGhlIEFwcGxlIFJhc3RlciBzdXBwb3J0IChyZGFyOi8vNTUzMDExMTQpPC9saT4KKzxsaT5UaGUgSVBQIGJhY2tlbmQgZGlkIG5vdCBkZXRlY3QgYWxsIGNhc2VzIHdoZXJlIGEgam9iIHNob3VsZCBiZSByZXRyaWVkIHVzaW5nPGJyPgorYSByYXN0ZXIgZm9ybWF0IChyZGFyOi8vNTYwMjEwOTEpPC9saT4KKzxsaT5GaXhlZCBzcGVsbGluZyBvZiAiZm9sZC1hY2NvcmRpb24iLjwvbGk+Cis8bGk+Rml4ZWQgdGhlIGRlZmF1bHQgY29tbW9uIG5hbWUgZm9yIFRMUyBjZXJ0aWZpY2F0ZXMgdXNlZCBieSA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPi48L2xpPgorPGxpPkZpeGVkIHRoZSBvcHRpb24gbmFtZXMgdXNlZCBmb3IgSVBQIEV2ZXJ5d2hlcmUgZmluaXNoaW5nIG9wdGlvbnMuPC9saT4KKzxsaT5BZGRlZCBzdXBwb3J0IGZvciB0aGUgc2Vjb25kIHJvbGwgb2YgdGhlIERZTU8gVHdpbi9EVU8gbGFiZWwgcHJpbnRlcnMuPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIG9wZW4KKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjMuMS9jdXBzLTIuMy4xLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjMuMS1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj43Ljc2IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMy4xL2N1cHMtMi4zLjEtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjMuMS1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjMuMS56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zLjEudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMyIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMyI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEzPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzBhZDZhYzU1ZGEyNjg2YzZmYTI0YjA1YmRlNWU5MDM2ZmQ0ZGI1ZDEiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT4wYWQ2YWM1PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjEzIj52Mi4yLjEzPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTMiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTMiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTM8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMGFkNmFjNTVkYTI2ODZjNmZhMjRiMDViZGU1ZTkwMzZmZDRkYjVkMSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT4wYWQ2YWM1PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0xMi0xM1QxNDo0OTo1NVoiIGNsYXNzPSJuby13cmFwIj5EZWMgMTMsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjIuMTMuLi5tYXN0ZXIiPgorICAgIDc5MyBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjIuMTMgaXMgdGhlIGxhc3QgZ2VuZXJhbCBidWcgZml4IHJlbGVhc2UgaW4gdGhlIDIuMi54IHNlcmllcyBhbmQgaW5jbHVkZXM8YnI+CithIGZpeCBmb3IgQ1ZFLTIwMTktMjIyOC4gIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktMjIyODogVGhlIDxjb2RlPmlwcFNldFZhbHVldGFnPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IHZhbGlkYXRlIHRoZSBkZWZhdWx0PGJyPgorbGFuZ3VhZ2UgdmFsdWUuPC9saT4KKzxsaT5BZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoZSBzY2hlZHVsZXIncyBzeXN0ZW1kIHN1cHBvcnQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NjAzNDQwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCI+IzU2NDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc3BlbGxpbmcgb2YgImZvbGQtYWNjb3JkaW9uIi48L2xpPgorPGxpPkZpeGVkIHRoZSBkZWZhdWx0IGNvbW1vbiBuYW1lIGZvciBUTFMgY2VydGlmaWNhdGVzIHVzZWQgYnkgPGNvZGU+aXBwc2VydmVyPC9jb2RlPi48L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IHJlcG9ydHMgYW4gZXJyb3Igd2hlbiB0aGUgZGlzdHJpYnV0aW9uPGJyPgorcGVybWlzc2lvbnMgYXJlIHdyb25nIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDA1OTQ1MTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiPiM1NjU4PC9hPik8L2xpPgorPGxpPkRlZmF1bHQgcHJpbnRlcnMgc2V0IHdpdGggPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBkaWQgbm90IHdvcmsgaW4gYWxsIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjA0MTU5NjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiPiM1NjgxPC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjIwNjUzNzYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiPiM1NjgzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIzMjAwMTQyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0Ij4jNTY4NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhbiBvZmYtYnktb25lIGVycm9yIGluIDxjb2RlPmlwcEVudW1TdHJpbmc8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzI4NjIzNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2OTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2OTUiPiM1Njk1PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgbmV3IGNvbXBpbGVyIHdhcm5pbmdzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzQ1NDU0MTkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU3MDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU3MDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU3MDAiPiM1NzAwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgZmV3IGlzc3VlcyB3aXRoIHRoZSBBcHBsZSBSYXN0ZXIgc3VwcG9ydCAocmRhcjovLzU1MzAxMTE0KTwvbGk+Cis8bGk+VGhlIElQUCBiYWNrZW5kIGRpZCBub3QgZGV0ZWN0IGFsbCBjYXNlcyB3aGVyZSBhIGpvYiBzaG91bGQgYmUgcmV0cmllZCB1c2luZzxicj4KK2EgcmFzdGVyIGZvcm1hdCAocmRhcjovLzU2MDIxMDkxKTwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTMvY3Vwcy0yLjIuMTMtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45LjkzIE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMy9jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTMuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMy50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC0iPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zLjAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjMuMCI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjA8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWU2YmU5Y2Q3ZTg2M2FiZjM2YjliMTMxZmMzNzlkOTY3NDE0YWEyZSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmVlNmJlOWM8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjMuMCI+djIuMy4wPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjMuMCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMy4wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjA8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWU2YmU5Y2Q3ZTg2M2FiZjM2YjliMTMxZmMzNzlkOTY3NDE0YWEyZSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5lZTZiZTljPC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0wOC0yM1QxODoxNzoyMVoiIGNsYXNzPSJuby13cmFwIj5BdWcgMjMsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjMuMC4uLm1hc3RlciI+CisgICAgNjUgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zLjAgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQsIHdoaWNoIGFkb3B0cyB0aGUgbmV3IENVUFMgbGljZW5zZSwgYWRkcyBzdXBwb3J0IGZvciBJUFAgcHJlc2V0cyBhbmQgZmluaXNoaW5nIHRlbXBsYXRlcywgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLCBhbmQgaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktODY5NiBhbmQgQ1ZFLTIwMTktODY3NTogRml4ZWQgU05NUCBidWZmZXIgb3ZlcmZsb3dzIChyZGFyOi8vNTE2ODUyNTEpPC9saT4KKzxsaT5BZGRlZCBhIEdQTDIvTEdQTDIgZXhjZXB0aW9uIHRvIHRoZSBuZXcgQ1VQUyBsaWNlbnNlIHRlcm1zLjwvbGk+Cis8bGk+RG9jdW1lbnRhdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTk1OTQ2NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiPiM1NjA0PC9hPik8L2xpPgorPGxpPkxvY2FsaXphdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODM2NDE4OTgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MzcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MzciPiM1NjM3PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGluIHRoZSBzY2hlZHVsZXIgam9iIGNsZWFudXAgY29kZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUwMjc5MjE2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTg4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTg4Ij4jNTU4ODwvYT4pPC9saT4KKzxsaT5GaXhlZCBidWlsZHMgd2hlbiB0aGVyZSBpcyBubyBUTFMgbGlicmFyeSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUxNTc4MTg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTkwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTkwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTkwIj4jNTU5MDwvYT4pPC9saT4KKzxsaT5FbGltaW5hdGVkIHNvbWUgbmV3IEdDQyBjb21waWxlciB3YXJuaW5ncyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUzMzI4NzQ3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTkxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTkxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTkxIj4jNTU5MTwvYT4pPC9saT4KKzxsaT5SZW1vdmVkIGRlYWQgY29kZSBmcm9tIHRoZSBzY2hlZHVsZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MzMyOTg3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU5My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU5MyI+IzU1OTM8L2E+KTwvbGk+Cis8bGk+Im1ha2UiIGZhaWxlZCB3aXRoIEdaSVAgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU1MDE3OTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1Ij4jNTU5NTwvYT4pPC9saT4KKzxsaT5GaXhlZCBwb3RlbnRpYWwgZXhjZXNzIGxvZ2dpbmcgZnJvbSB0aGUgc2NoZWR1bGVyIHdoZW4gcmVtb3Zpbmcgam9iIGZpbGVzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1NjI4NDQwNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NyI+IzU1OTc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnIGluIDxjb2RlPmh0dHBHZXRTdWJGaWVsZDI8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTY1MzQxMzciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTk4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTgiPiM1NTk4PC9hPik8L2xpPgorPGxpPkFkZGVkIEZJUFMtMTQwIHdvcmthcm91bmRzIGZvciBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTgwMTU5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDEiPiM1NjAxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MTE3MjMxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIyIj4jNTYyMjwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vIGxvbmdlciBwcm92aWRlcyBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBkZXNjcmlwdGlvbjxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTkwNzQ3MzMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDMiPiM1NjAzPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm93IGxvZ3Mgam9icyBoZWxkIGZvciBhdXRoZW50aWNhdGlvbiB1c2luZyB0aGUgZXJyb3IgbGV2ZWwgc288YnI+CitpdCBpcyBjbGVhciB3aGF0IGhhcHBlbmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTk1OTQ2NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiPiM1NjA0PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5scGFkbWluPC9jb2RlPiBjb21tYW5kIGRpZCBub3QgYWx3YXlzIHVwZGF0ZSB0aGUgUFBEIGZpbGUgZm9yIGNoYW5nZXMgdG8gdGhlPGJyPgorPGNvZGU+Y3Vwc0lQUFN1cHBsaWVzPC9jb2RlPiBhbmQgPGNvZGU+Y3Vwc1NOTVBTdXBwbGllczwvY29kZT4ga2V5d29yZHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ2NTcyNzE5NSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYxMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYxMCI+IzU2MTA8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBub3cgdXNlcyBib3RoIHRoZSBncm91cCdzIG1lbWJlcnNoaXAgbGlzdCBhcyB3ZWxsIGFzIHRoZTxicj4KK3ZhcmlvdXMgT1Mtc3BlY2lmaWMgbWVtYmVyc2hpcCBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSB1c2VyIGJlbG9uZ3M8YnI+Cit0byBhIG5hbWVkIGdyb3VwIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0Njg0NjM2NzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MTMiPiM1NjEzPC9hPik8L2xpPgorPGxpPkFkZGVkIFVTQiBxdWlya3MgcnVsZSBmb3IgSFAgTGFzZXJKZXQgMTAxNSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDcwNjU5MzEzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjE3Ij4jNTYxNzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBwYXJzZXIgaXNzdWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzQzMTQwNzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjMiPiM1NjIzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MzE3MDkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjI0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjI0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjI0Ij4jNTYyNDwvYT4pPC9saT4KKzxsaT5UaGUgSVBQIHBhcnNlciBubyBsb25nZXIgYWxsb3dzIGludmFsaWQgbWVtYmVyIGF0dHJpYnV0ZXMgaW4gY29sbGVjdGlvbnM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc3OTc5ODg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjMwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjMwIj4jNTYzMDwvYT4pPC9saT4KKzxsaT5UaGUgY29uZmlndXJlIHNjcmlwdCBub3cgdHJlYXRzIHRoZSAid2hlZWwiIGdyb3VwIGFzIGEgcG90ZW50aWFsIHN5c3RlbTxicj4KK2dyb3VwIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODQ1MzUxMzAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MzgiPiM1NjM4PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgVVNCIHByaW50aW5nIGlzc3VlIG9uIG1hY09TIChyZGFyOi8vMzE0MzM5MzEpPC9saT4KKzxsaT5GaXhlZCBJUFAgYnVmZmVyIG92ZXJmbG93IChyZGFyOi8vNTAwMzU0MTEpPC9saT4KKzxsaT5GaXhlZCBtZW1vcnkgZGlzY2xvc3VyZSBpc3N1ZSBpbiB0aGUgc2NoZWR1bGVyIChyZGFyOi8vNTEzNzM4NTMpPC9saT4KKzxsaT5GaXhlZCBEb1MgaXNzdWVzIGluIHRoZSBzY2hlZHVsZXIgKHJkYXI6Ly81MTM3MzkyOSk8L2xpPgorPGxpPkZpeGVkIGFuIGlzc3VlIHdpdGggdW5zdXBwb3J0ZWQgInNpZGVzIiB2YWx1ZXMgaW4gdGhlIElQUCBiYWNrZW5kPGJyPgorKHJkYXI6Ly81MTc3NTMyMik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgd291bGQgcmVzdGFydCBjb250aW51b3VzbHkgd2hlbiBpZGxlIGFuZCBwcmludGVycyB3ZXJlIG5vdDxicj4KK3NoYXJlZCAocmRhcjovLzUyNTYxMTk5KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCA8Y29kZT5FWFBFQ1QgIW5hbWUgV0lUSC1WQUxVRSAuLi48L2NvZGU+IHRlc3RzLjwvbGk+Cis8bGk+Rml4ZWQgYSBjb21tYW5kIG9yZGVyaW5nIGlzc3VlIGluIHRoZSBaZWJyYSBaUEwgZHJpdmVyLjwvbGk+Cis8bGk+Rml4ZWQgYSBtZW1vcnkgbGVhayBpbiA8Y29kZT5wcGRPcGVuPC9jb2RlPi48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zLjAvY3Vwcy0yLjMuMC1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjAtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+Ny43NSBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjMuMC9jdXBzLTIuMy4wLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjAtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zLjAuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMy4wLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTIiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTIiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMi4xMjwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9jOGNiNjQwMGUzMTc2MzNmNjZjZGM4Nzg4NDkxNWQ1NDcxMGI1M2EwIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+YzhjYjY0MDwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuMi4xMiI+djIuMi4xMjwvYT4KKyAgICAgICAgPC9kaXY+CisKKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4yLjEyIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4yLjEyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEyPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2M4Y2I2NDAwZTMxNzYzM2Y2NmNkYzg3ODg0OTE1ZDU0NzEwYjUzYTAiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+YzhjYjY0MDwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDgtMTVUMjI6NTI6NDRaIiBjbGFzcz0ibm8td3JhcCI+QXVnIDE1LCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4yLjEyLi4ubWFzdGVyIj4KKyAgICA3OTMgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4yLjEyIGlzIG5vdyBhdmFpbGFibGUgYW5kIGluY2x1ZGVzIHNlY3VyaXR5LCBjb21wYXRpYmlsaXR5LCBhbmQgZ2VuZXJhbCBidWcgZml4ZXMuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktODY5NiBhbmQgQ1ZFLTIwMTktODY3NTogRml4ZWQgU05NUCBidWZmZXIgb3ZlcmZsb3dzIChyZGFyOi8vNTE2ODUyNTEpPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc2N0bDwvY29kZT4gY29tbWFuZCBub3cgcHJldmVudHMgc2V0dGluZyAiY3Vwcy1maWxlcy5jb25mIiBkaXJlY3RpdmVzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMzgyOTI1NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCI+IzU1MzA8L2E+KTwvbGk+Cis8bGk+VXBkYXRlZCB0aGUgc3lzdGVtZCBzZXJ2aWNlIGZpbGUgZm9yIGN1cHNkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MjY0NzkwNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NTEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1NTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1NTEiPiM1NTUxPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzQ2hlY2tEZXN0U3VwcG9ydGVkPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNoZWNrIG9jdGV0U3RyaW5nIHZhbHVlczxicj4KK2NvcnJlY3RseSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODIwODYyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU3Ij4jNTU1NzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgZW5jb2RlIG9jdGV0U3RyaW5nIHZhbHVlcyBsaWtlICJqb2ItcGFzc3dvcmQiIGNvcnJlY3RseTxicj4KK2ZvciB0aGUgcHJpbnQgZmlsdGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODI3MTI3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU4Ij4jNTU1ODwvYT4pPC9saT4KKzxsaT5SZXN0b3JlZCBtaW5pbWFsIHN1cHBvcnQgZm9yIHRoZSA8Y29kZT5FbXVsYXRvcnM8L2NvZGU+IGtleXdvcmQgaW4gUFBEIGZpbGVzIHRvIGFsbG93PGJyPgorb2xkIFNhbXN1bmcgcHJpbnRlciBkcml2ZXJzIHRvIGNvbnRpbnVlIHRvIHdvcmsgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQzMjIxNDU2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiI+IzU1NjI8L2E+KTwvbGk+Cis8bGk+VGltZWQgb3V0IGpvYiBzdWJtaXNzaW9uIG5vdyB5aWVsZHMgYW4gZXJyb3IgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQzNzM5MDU2NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3MCI+IzU1NzA8L2E+KTwvbGk+Cis8bGk+VGhlIGZvb3RlciBpbiB0aGUgd2ViIGludGVyZmFjZSBjb3ZlcmVkIHNvbWUgY29udGVudCBvbiBzbWFsbCBkaXNwbGF5czxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NDAzNjU4MDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzQiPiM1NTc0PC9hPik8L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IGVuZm9yY2VzIHJlYWQgbGltaXRzLCBpbXByb3ZpbmcgcHJpbnQgc3BlZWQ8YnI+CitpbiBtYW55IGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NDUzMTUwNTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODMiPiM1NTgzPC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvbGQgcmVsZWFzZXMgb2YgQ1VQUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQ5MzYxMDY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg3Ij4jNTU4NzwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBpbiB0aGUgc2NoZWR1bGVyIGpvYiBjbGVhbnVwIGNvZGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MDI3OTIxNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU4OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU4OCI+IzU1ODg8L2E+KTwvbGk+Cis8bGk+Im1ha2UiIGZhaWxlZCB3aXRoIEdaSVAgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU1MDE3OTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1Ij4jNTU5NTwvYT4pPC9saT4KKzxsaT5BZGRlZCBGSVBTLTE0MCB3b3JrYXJvdW5kcyBmb3IgR05VIFRMUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU4MDE1OTI5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIj4jNTYwMTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDExNzIzMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyMi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyMiI+IzU2MjI8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgcHJvdmlkZXMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZGVzY3JpcHRpb248YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU5MDc0NzMzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIj4jNTYwMzwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBhZG1pbjwvY29kZT4gY29tbWFuZCBkaWQgbm90IGFsd2F5cyB1cGRhdGUgdGhlIFBQRCBmaWxlIGZvciBjaGFuZ2VzIHRvIHRoZTxicj4KKzxjb2RlPmN1cHNJUFBTdXBwbGllczwvY29kZT4gYW5kIDxjb2RlPmN1cHNTTk1QU3VwcGxpZXM8L2NvZGU+IGtleXdvcmRzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NjU3MjcxOTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MTAiPiM1NjEwPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm93IHVzZXMgYm90aCB0aGUgZ3JvdXAncyBtZW1iZXJzaGlwIGxpc3QgYXMgd2VsbCBhcyB0aGU8YnI+Cit2YXJpb3VzIE9TLXNwZWNpZmljIG1lbWJlcnNoaXAgZnVuY3Rpb25zIHRvIGRldGVybWluZSB3aGV0aGVyIGEgdXNlciBiZWxvbmdzPGJyPgordG8gYSBuYW1lZCBncm91cCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDY4NDYzNjc4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjEzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjEzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjEzIj4jNTYxMzwvYT4pPC9saT4KKzxsaT5BZGRlZCBVU0IgcXVpcmtzIHJ1bGUgZm9yIEhQIExhc2VySmV0IDEwMTUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3MDY1OTMxMyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyI+IzU2MTc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBQUEQgcGFyc2VyIGlzc3VlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MzE0MDc0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIzIj4jNTYyMzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDMxNzA5MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyNCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyNCI+IzU2MjQ8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBwYXJzZXIgbm8gbG9uZ2VyIGFsbG93cyBpbnZhbGlkIG1lbWJlciBhdHRyaWJ1dGVzIGluIGNvbGxlY3Rpb25zPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3Nzk3OTg4NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCI+IzU2MzA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgSVBQIGJ1ZmZlciBvdmVyZmxvdyAocmRhcjovLzUwMDM1NDExKTwvbGk+Cis8bGk+Rml4ZWQgbWVtb3J5IGRpc2Nsb3N1cmUgaXNzdWUgaW4gdGhlIHNjaGVkdWxlciAocmRhcjovLzUxMzczODUzKTwvbGk+Cis8bGk+Rml4ZWQgRG9TIGlzc3VlcyBpbiB0aGUgc2NoZWR1bGVyIChyZGFyOi8vNTEzNzM5MjkpPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIHdvdWxkIHJlc3RhcnQgY29udGludW91c2x5IHdoZW4gaWRsZSBhbmQgcHJpbnRlcnMgd2VyZSBub3Q8YnI+CitzaGFyZWQgKHJkYXI6Ly81MjU2MTE5OSk8L2xpPgorPGxpPkZpeGVkIGEgY29tbWFuZCBvcmRlcmluZyBpc3N1ZSBpbiB0aGUgWmVicmEgWlBMIGRyaXZlci48L2xpPgorPGxpPkZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gPGNvZGU+cHBkT3BlbjwvY29kZT4uPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMi9jdXBzLTIuMi4xMi1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjkuOTMgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjEyL2N1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMi56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjEyLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLXByZXJlbGVhc2UiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgPC9zcGFuPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNyYzEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNyYzEiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM3JjMTwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC80ZDAzYzRjYTkwZDhjMWMwZDUzMDM0Mjc4NThlNTM3ZmQzYzQxNWU0IiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+NGQwM2M0YzwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuM3JjMSI+djIuM3JjMTwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICAgIDwvc3Bhbj4KKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zcmMxIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zcmMxIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zcmMxPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzRkMDNjNGNhOTBkOGMxYzBkNTMwMzQyNzg1OGU1MzdmZDNjNDE1ZTQiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+NGQwM2M0YzwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDUtMjFUMTc6MDc6NTBaIiBjbGFzcz0ibm8td3JhcCI+TWF5IDIxLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zcmMxLi4ubWFzdGVyIj4KKyAgICAxMjIgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zcmMxIGlzIG5vdyBhdmFpbGFibGUgZm9yIGRvd25sb2FkLiAgVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZSBjYW5kaWRhdGUgZm9yIENVUFMgMi4zLjAgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLiAgVGhpcyBiZXRhIGFsc28gaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+VGhlIDxjb2RlPmN1cHMtY29uZmlnPC9jb2RlPiBzY3JpcHQgbm8gbG9uZ2VyIGFkZHMgZXh0cmEgbGlicmFyaWVzIHdoZW4gbGlua2luZyBhZ2FpbnN0PGJyPgorc2hhcmVkIGxpYnJhcmllcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzAzNjU2MTU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MjYxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MjYxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MjYxIj4jNTI2MTwvYT4pPC9saT4KKzxsaT5UaGUgc3VwcGxpZWQgZXhhbXBsZSBwcmludCBkb2N1bWVudHMgaGF2ZSBiZWVuIG9wdGltaXplZCBmb3Igc2l6ZTxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTM4MTA0MDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MjkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MjkiPiM1NTI5PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzY3RsPC9jb2RlPiBjb21tYW5kIG5vdyBwcmV2ZW50cyBzZXR0aW5nICJjdXBzLWZpbGVzLmNvbmYiIGRpcmVjdGl2ZXM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEzODI5MjU0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMwIj4jNTUzMDwvYT4pPC9saT4KKzxsaT5UaGUgImZvcmJpZGRlbiIgbWVzc2FnZSBpbiB0aGUgd2ViIGludGVyZmFjZSBpcyBub3cgZXhwbGFpbmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MjQ1MzQzNDgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTQ3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDciPiM1NTQ3PC9hPik8L2xpPgorPGxpPlRoZSBmb290ZXIgaW4gdGhlIHdlYiBpbnRlcmZhY2UgY292ZXJlZCBzb21lIGNvbnRlbnQgb24gc21hbGwgZGlzcGxheXM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQwMzY1ODAxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0Ij4jNTU3NDwvYT4pPC9saT4KKzxsaT5UaGUgbGlidXNiLWJhc2VkIFVTQiBiYWNrZW5kIG5vdyBlbmZvcmNlcyByZWFkIGxpbWl0cywgaW1wcm92aW5nIHByaW50IHNwZWVkPGJyPgoraW4gbWFueSBjYXNlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQ1MzE1MDU1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIj4jNTU4MzwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+aXBwZXZlcHJpbnRlcjwvY29kZT4gY29tbWFuZCBub3cgbG9va3MgZm9yIHByaW50IGNvbW1hbmRzIGluIHRoZSAiY29tbWFuZCI8YnI+CitzdWJkaXJlY3RvcnkuPC9saT4KKzxsaT5UaGUgPGNvZGU+aXBwdG9vbDwvY29kZT4gY29tbWFuZCBub3cgc3VwcG9ydHMgPGNvZGU+JGRhdGUtY3VycmVudDwvY29kZT4gYW5kIDxjb2RlPiRkYXRlLXN0YXJ0PC9jb2RlPiB2YXJpYWJsZXM8YnI+Cit0byBpbnNlcnQgdGhlIGN1cnJlbnQgYW5kIHN0YXJ0aW5nIGRhdGUgYW5kIHRpbWUgdmFsdWVzLCBhcyB3ZWxsIGFzIElTTy04NjAxPGJyPgorcmVsYXRpdmUgdGltZSB2YWx1ZXMgc3VjaCBhcyAiUFQzMFMiIGZvciAzMCBzZWNvbmRzIGluIHRoZSBmdXR1cmUuPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM3JjMS9jdXBzLTIuM3JjMS1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjcuNTYgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zcmMxL2N1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM3JjMS56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zcmMxLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLXByZXJlbGVhc2UiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgPC9zcGFuPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiOCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I4Ij4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiODwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8wNDUwZGRkNGYwMDNkZThhYThkOGU3YTU0ZDE4MWE5OTI2MDdkMDMxIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+MDQ1MGRkZDwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuM2I4Ij52Mi4zYjg8L2E+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgPHNwYW4gY2xhc3M9ImQtbWQtbm9uZSBmbGV4LXNocmluay0wIG1sLTIgbXQtMiBtdC1tZC0wIExhYmVsIExhYmVsLS1vdXRsaW5lIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I4IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjgiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiODwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8wNDUwZGRkNGYwMDNkZThhYThkOGU3YTU0ZDE4MWE5OTI2MDdkMDMxIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPjA0NTBkZGQ8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTA1LTAyVDE3OjEwOjE2WiIgY2xhc3M9Im5vLXdyYXAiPk1heSAyLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zYjguLi5tYXN0ZXIiPgorICAgIDE2NSBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjNiOCBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4gIFRoaXMgaXMgdGhlIGVpZ2h0aCBiZXRhIG9mIHRoZSBDVVBTIDIuMyBzZXJpZXMgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLiAgVGhpcyBiZXRhIGFsc28gaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuICBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPk1lZGlhIHNpemUgbWF0Y2hpbmcgbm93IHVzZXMgYSB0b2xlcmFuY2Ugb2YgMC41bW0gKHJkYXI6Ly8zMzgyMjAyNCk8L2xpPgorPGxpPlRoZSBscGFkbWluIGNvbW1hbmQgd291bGQgaGFuZyB3aXRoIGEgYmFkIFBQRCBmaWxlIChyZGFyOi8vNDE0OTUwMTYpPC9saT4KKzxsaT5GaXhlZCBhIHBvdGVudGlhbCBjcmFzaCBidWcgaW4gY3Vwcy1kcml2ZXJkIChyZGFyOi8vNDY2MjU1NzkpPC9saT4KKzxsaT5GaXhlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gd2l0aCBsYXJnZSBQUERzIChyZGFyOi8vNDcwNDA3NTkpPC9saT4KKzxsaT5GaXhlZCBhIG1lbW9yeSByZWFsbG9jYXRpb24gYnVnIGluIEhUVFAgaGVhZGVyIHZhbHVlIGV4cGFuc2lvbjxicj4KKyhyZGFyOi8vcHJvYmxlbS81MDAwMDc0OSk8L2xpPgorPGxpPlRpbWVkIG91dCBqb2Igc3VibWlzc2lvbiBub3cgeWllbGRzIGFuIGVycm9yIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MzczOTA1NjQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTcwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiPiM1NTcwPC9hPik8L2xpPgorPGxpPlJlc3RvcmVkIG1pbmltYWwgc3VwcG9ydCBmb3IgdGhlIDxjb2RlPkVtdWxhdG9yczwvY29kZT4ga2V5d29yZCBpbiBQUEQgZmlsZXMgdG8gYWxsb3c8YnI+CitvbGQgU2Ftc3VuZyBwcmludGVyIGRyaXZlcnMgdG8gY29udGludWUgdG8gd29yayAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDMyMjE0NTY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTYyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTYyIj4jNTU2MjwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgZW5jb2RlIG9jdGV0U3RyaW5nIHZhbHVlcyBsaWtlICJqb2ItcGFzc3dvcmQiIGNvcnJlY3RseTxicj4KK2ZvciB0aGUgcHJpbnQgZmlsdGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODI3MTI3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU4Ij4jNTU1ODwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc0NoZWNrRGVzdFN1cHBvcnRlZDwvY29kZT4gZnVuY3Rpb24gZGlkIG5vdCBjaGVjayBvY3RldFN0cmluZyB2YWx1ZXM8YnI+Citjb3JyZWN0bHkgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyOTgyMDg2MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1NyI+IzU1NTc8L2E+KTwvbGk+Cis8bGk+QWRkZWQgc3VwcG9ydCBmb3IgPGNvZGU+VXNlckFnZW50VG9rZW5zPC9jb2RlPiBkaXJlY3RpdmUgaW4gImNsaWVudC5jb25mIiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5MDYyMzk5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU1Ij4jNTU1NTwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBzeXN0ZW1kIHNlcnZpY2UgZmlsZSBmb3IgY3Vwc2QgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyNjQ3OTA0MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1MSI+IzU1NTE8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcFZhbGlkYXRlQXR0cmlidXRlPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNhdGNoIGFsbCBpbnN0YW5jZXMgb2YgaW52YWxpZDxicj4KK1VURi04IHN0cmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNjg1MTk3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSI+IzU1MDk8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCB0aGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGdlbmVyYXRlZCBieSBHTlUgVExTPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNTg4MTM0NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiI+IzU1MDY8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIGF0IHRoZSBlbmQgb2YgYSBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjg5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzMiPiM1NDczPC9hPik8L2xpPgorPGxpPkZpeGVkIHBvdGVudGlhbCB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIHN0cmluZyBwb29sIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjkzMzUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzQiPiM1NDc0PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gbG9hZGluZyBhIFBQRCBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjk1NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzUiPiM1NDc1PC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciB0aGUgTGV4bWFyayBFMTIwbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk4MDAyMTEwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4Ij4jNTQ3ODwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBVU0IgcXVpcmtzIHJ1bGUgZm9yIFplYnJhIGxhYmVsIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY29tcGlsZSBlcnJvciBvbiBMaW51eCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAwMjk3MzkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIj4jNTQ4MzwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kLCB3ZWIgaW50ZXJmYWNlLCBhbmQgc2NoZWR1bGVyIGFsbCBxdWVyaWVkIGFuIElQUDxicj4KK0V2ZXJ5d2hlcmUgcHJpbnRlciBkaWZmZXJlbnRseSwgcmVzdWx0aW5nIGluIGRpZmZlcmVudCBQUERzIGZvciB0aGUgc2FtZTxicj4KK3ByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDQ3NTQ3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCI+IzU0ODQ8L2E+KTwvbGk+Cis8bGk+VGhlIHdlYiBpbnRlcmZhY2Ugbm8gbG9uZ2VyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbG9nIGZpbGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDg5MjM2NDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MTMiPiM1NTEzPC9hPik8L2xpPgorPGxpPk5vbi1LZXJiZXJpemVkIHByaW50aW5nIHRvIFdpbmRvd3MgdmlhIElQUCB3YXMgYnJva2VuIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDk3Nzk0MTQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTE1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiPiM1NTE1PC9hPik8L2xpPgorPGxpPkVsaW1pbmF0ZWQgdXNlIG9mIHByaXZhdGUgaGVhZGVycyBhbmQgc29tZSBkZXByZWNhdGVkIG1hY09TIEFQSXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMDI2MDEwNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNiI+IzU1MTY8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgc3RvcHMgYSBwcmludGVyIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIGEgam9iIGlzPGJyPgorY2FuY2VsZWQgb3IgYWJvcnRlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEwMzU1MjcwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3Ij4jNTUxNzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIERZTU8gNDUwIFR1cmJvIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTE3MTExOTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiPiM1NTIxPC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciBYZXJveCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzUzMjU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTIzIj4jNTUyMzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyJ3Mgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZGlkIG5vdCBpbmNsdWRlIGFsbCBvZiB0aGUgYWx0ZXJuYXRlPGJyPgorbmFtZXMgZm9yIHRoZSBzZXJ2ZXIgd2hlbiB1c2luZyBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTIwMTY0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiPiM1NTI1PC9hPik8L2xpPgorPGxpPkZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgR0NDIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTQwNDI5MzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiPiM1NTMyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDY2NzA0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIj4jNTUzMzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBjYWNoaW5nIGFuZCBJUFAgRXZlcnl3aGVyZSBQUEQgYWNjb3VudGluZy9wYXNzd29yZCBidWdzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNTI3MTQ3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUzNSI+IzU1MzU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgPGNvZGU+UHJlc2VydmVKb2JIaXN0b3J5PC9jb2RlPiBidWcgd2l0aCB0aW1lIHZhbHVlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE3MjM0MzIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4Ij4jNTUzODwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vIGxvbmdlciBhZHZlcnRpc2VzIHRoZSBIVFRQIG1ldGhvZHMgaXQgc3VwcG9ydHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxODAxNjkxMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU0MCI+IzU1NDA8L2E+KTwvbGk+Cis8bGk+TG9jYWxpemF0aW9uIHVwZGF0ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4OTkxMDExNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ2MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ2MSI+IzU0NjE8L2E+LCBJc3N1ZXMgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk2MTA5NDc1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDcxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDcxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDcxIj4jNTQ3MTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM5OTUxNTA3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ4MSI+IzU0ODE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE0Nzc1NTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0ODYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0ODYiPiM1NDg2PC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE1NjAyNjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0ODkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0ODkiPiM1NDg5PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTgwNzU2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDkxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDkxIj4jNTQ5MTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTU4MzE2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ5Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ5MiI+IzU0OTI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE1ODcxMjAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0OTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0OTMiPiM1NDkzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTkxODkwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDk0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDk0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDk0Ij4jNTQ5NDwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTk3NjE2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NSI+IzU0OTU8L2E+LDxicj4KK0lzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMjUxNjMwNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NyI+IzU0OTc8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDI1NTIyMDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0OTkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0OTkiPiM1NDk5PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAyNTUyNjYxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTAwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTAwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTAwIj4jNTUwMDwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMjU1Mzc2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwMSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUwMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUwMSI+IzU1MDE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDMzOTYwMDMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MDQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MDQiPiM1NTA0PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgZGlkIG5vdCBhbHdheXMgaWRsZSBleGl0IGFzIHF1aWNrbHkgYXMgaXQgY291bGQuPC9saT4KKzxsaT5BZGRlZCBhIG5ldyA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPiBjb21tYW5kIGJhc2VkIG9uIHRoZSBvbGQgaXBwc2VydmVyIHNhbXBsZSBjb2RlLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiOC9jdXBzLTIuM2I4LXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiOC1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45Ljg5IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I4L2N1cHMtMi4zYjgtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiOC1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiOC56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjgudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMSIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMSI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjExPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2U0YTBhYTg2Yzk2YjVkZGRhMzc3MGM0NjcwOWY0ZGVlOWE1OTA3MWYiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5lNGEwYWE4PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjExIj52Mi4yLjExPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTEiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTE8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZTRhMGFhODZjOTZiNWRkZGEzNzcwYzQ2NzA5ZjRkZWU5YTU5MDcxZiIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5lNGEwYWE4PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0wMy0yMlQyMDowNzowMloiIGNsYXNzPSJuby13cmFwIj5NYXIgMjIsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjIuMTEuLi5tYXN0ZXIiPgorICAgIDc5MyBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjIuMTEgaXMgYSBidWcgZml4IHJlbGVhc2UgdGhhdCBhZGRyZXNzZXMgaXNzdWVzIGluIHRoZSBzY2hlZHVsZXIsPGJyPgorSVBQIEV2ZXJ5d2hlcmUgc3VwcG9ydCwgQ1VQUyBsaWJyYXJ5LCBhbmQgVVNCIHByaW50ZXIgc3VwcG9ydC4gIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+UnVubmluZyBwcGRtZXJnZSB3aXRoIHRoZSBzYW1lIGlucHV0IGFuZCBvdXRwdXQgZmlsZW5hbWVzIGRpZCBub3Qgd29yayBhczxicj4KK2FkdmVydGlzZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4OTI4MzgwNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSI+IzU0NTU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIGF0IHRoZSBlbmQgb2YgYSBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjg5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzMiPiM1NDczPC9hPik8L2xpPgorPGxpPkZpeGVkIHBvdGVudGlhbCB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIHN0cmluZyBwb29sIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjkzMzUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzQiPiM1NDc0PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gbG9hZGluZyBhIFBQRCBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjk1NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzUiPiM1NDc1PC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciB0aGUgTGV4bWFyayBFMTIwbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk4MDAyMTEwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4Ij4jNTQ3ODwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBVU0IgcXVpcmtzIHJ1bGUgZm9yIFplYnJhIGxhYmVsIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY29tcGlsZSBlcnJvciBvbiBMaW51eCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAwMjk3MzkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIj4jNTQ4MzwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kLCB3ZWIgaW50ZXJmYWNlLCBhbmQgc2NoZWR1bGVyIGFsbCBxdWVyaWVkIGFuIElQUDxicj4KK0V2ZXJ5d2hlcmUgcHJpbnRlciBkaWZmZXJlbnRseSwgcmVzdWx0aW5nIGluIGRpZmZlcmVudCBQUERzIGZvciB0aGUgc2FtZTxicj4KK3ByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDQ3NTQ3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCI+IzU0ODQ8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCB0aGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGdlbmVyYXRlZCBieSBHTlUgVExTPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNTg4MTM0NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiI+IzU1MDY8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcFZhbGlkYXRlQXR0cmlidXRlPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNhdGNoIGFsbCBpbnN0YW5jZXMgb2YgaW52YWxpZDxicj4KK1VURi04IHN0cmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNjg1MTk3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSI+IzU1MDk8L2E+KTwvbGk+Cis8bGk+Tm9uLUtlcmJlcml6ZWQgcHJpbnRpbmcgdG8gV2luZG93cyB2aWEgSVBQIHdhcyBicm9rZW4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwOTc3OTQxNCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNSI+IzU1MTU8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgc3RvcHMgYSBwcmludGVyIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIGEgam9iIGlzPGJyPgorY2FuY2VsZWQgb3IgYWJvcnRlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEwMzU1MjcwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3Ij4jNTUxNzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIERZTU8gNDUwIFR1cmJvIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTE3MTExOTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiPiM1NTIxPC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciBYZXJveCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzUzMjU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTIzIj4jNTUyMzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyJ3Mgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZGlkIG5vdCBpbmNsdWRlIGFsbCBvZiB0aGUgYWx0ZXJuYXRlPGJyPgorbmFtZXMgZm9yIHRoZSBzZXJ2ZXIgd2hlbiB1c2luZyBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTIwMTY0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiPiM1NTI1PC9hPik8L2xpPgorPGxpPkZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgR0NDIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTQwNDI5MzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiPiM1NTMyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDY2NzA0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIj4jNTUzMzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBjYWNoaW5nIGFuZCBJUFAgRXZlcnl3aGVyZSBQUEQgYWNjb3VudGluZy9wYXNzd29yZCBidWdzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNTI3MTQ3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUzNSI+IzU1MzU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgPGNvZGU+UHJlc2VydmVKb2JIaXN0b3J5PC9jb2RlPiBidWcgd2l0aCB0aW1lIHZhbHVlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE3MjM0MzIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4Ij4jNTUzODwvYT4pPC9saT4KKzxsaT5NZWRpYSBzaXplIG1hdGNoaW5nIG5vdyB1c2VzIGEgdG9sZXJhbmNlIG9mIDAuNW1tIChyZGFyOi8vMzM4MjIwMjQpPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIHdvdWxkIGhhbmcgd2l0aCBhIGJhZCBQUEQgZmlsZSAocmRhcjovLzQxNDk1MDE2KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgY3Jhc2ggYnVnIGluIGN1cHMtZHJpdmVyZCAocmRhcjovLzQ2NjI1NTc5KTwvbGk+Cis8bGk+Rml4ZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggbGFyZ2UgUFBEcyAocmRhcjovLzQ3MDQwNzU5KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IGFsd2F5cyBpZGxlIGV4aXQgYXMgcXVpY2tseSBhcyBpdCBjb3VsZC48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjExL2N1cHMtMi4yLjExLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTEtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+OS45MiBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTEvY3Vwcy0yLjIuMTEtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTEtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjExLnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTEudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtcHJlcmVsZWFzZSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorICAgICAgICA8c3BhbiBjbGFzcz0iZmxleC1zaHJpbmstMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBtYi1tZC0yIG1yLTIgbXItbWQtMCBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICA8L3NwYW4+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I3IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjciPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I3PC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2IxZTdhZmQ1OTY0Y2JlMWFlYWI2ZjBhMmQ1YjMzODg0NjkzYTE0M2EiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5iMWU3YWZkPC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4zYjciPnYyLjNiNzwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICAgIDwvc3Bhbj4KKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjciIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiNyI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I3PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2IxZTdhZmQ1OTY0Y2JlMWFlYWI2ZjBhMmQ1YjMzODg0NjkzYTE0M2EiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+YjFlN2FmZDwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTgtMTItMTRUMTU6MjU6NDBaIiBjbGFzcz0ibm8td3JhcCI+RGVjIDE0LCAyMDE4PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zYjcuLi5tYXN0ZXIiPgorICAgIDM1MCBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjNiNyBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4gIFRoaXMgaXMgdGhlIHNpeHRoIGJldGEgb2YgdGhlIENVUFMgMi4zIHNlcmllcyB3aGljaCBhZG9wdHMgdGhlIG5ldyBDVVBTIGxpY2Vuc2UsIGFkZHMgc3VwcG9ydCBmb3IgSVBQIHByZXNldHMgYW5kIGZpbmlzaGluZyB0ZW1wbGF0ZXMsIGFuZCBmaXhlcyBhIG51bWJlciBvZiBidWdzIGFuZCAicG9saXNoIiBpc3N1ZXMuPC9wPgorPHA+Q2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5GaXhlZCBzb21lIGJ1aWxkIGZhaWx1cmVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODg5MTcwMjciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NTEiPiM1NDUxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzkxMTQzNTg0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDYzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDYzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDYzIj4jNTQ2MzwvYT4pPC9saT4KKzxsaT5SdW5uaW5nIHBwZG1lcmdlIHdpdGggdGhlIHNhbWUgaW5wdXQgYW5kIG91dHB1dCBmaWxlbmFtZXMgZGlkIG5vdCB3b3JrIGFzPGJyPgorYWR2ZXJ0aXNlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzg5MjgzODA2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDU1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDU1Ij4jNTQ1NTwvYT4pPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I3L2N1cHMtMi4zYjctc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM2I3LXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjkuNzcgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zYjcvY3Vwcy0yLjNiNy1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM2I3LXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM2I3LnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiNy50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC1wcmVyZWxlYXNlIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJmbGV4LXNocmluay0wIExhYmVsIExhYmVsLS1vdXRsaW5lIG1iLW1kLTIgbXItMiBtci1tZC0wIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjYiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiNiI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjY8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvYzEzZTJmNDRlYjE1YmNkYmZmOTEyNmRmODZkMWVkOWE1MTA4ZTQ3YyIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmMxM2UyZjQ8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjNiNiI+djIuM2I2PC9hPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxzcGFuIGNsYXNzPSJkLW1kLW5vbmUgZmxleC1zaHJpbmstMCBtbC0yIG10LTIgbXQtbWQtMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgICAgPC9zcGFuPgorCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiNiIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I2Ij4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjY8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvYzEzZTJmNDRlYjE1YmNkYmZmOTEyNmRmODZkMWVkOWE1MTA4ZTQ3YyIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5jMTNlMmY0PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOC0xMi0wN1QxOTo1NToxNVoiIGNsYXNzPSJuby13cmFwIj5EZWMgNywgMjAxODwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuM2I2Li4ubWFzdGVyIj4KKyAgICAzNTggY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zYjYgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQuIFRoaXMgaXMgdGhlIHNpeHRoIGJldGEgb2YgdGhlIENVUFMgMi4zIHNlcmllcyB3aGljaCBhZG9wdHMgdGhlIG5ldyBDVVBTIGxpY2Vuc2UsIGFkZHMgc3VwcG9ydCBmb3IgSVBQIHByZXNldHMgYW5kIGZpbmlzaGluZyB0ZW1wbGF0ZXMsIGFuZCBmaXhlcyBhIG51bWJlciBvZiBidWdzIGFuZCDigJxwb2xpc2jigJ0gaXNzdWVzLiBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPkxvY2FsaXphdGlvbiB1cGRhdGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMTQ4NzQ0OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTMzOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTMzOSI+IzUzMzk8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzgzNzEwNzAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNDgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNDgiPiM1MzQ4PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ2MDMxMDM4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYyIj4jNTM2MjwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM2Njc4NzIxMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQwOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQwOCI+IzU0MDg8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjgwNDUwNzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MTAiPiM1NDEwPC9hPik8L2xpPgorPGxpPkRvY3VtZW50YXRpb24gdXBkYXRlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ4MzUzMjgyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzY5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzY5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzY5Ij4jNTM2OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM2MzQwNDQ4NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwMiI+IzU0MDI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjM0MDU3NjQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDAzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDMiPiM1NDAzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzY0NTUyNzcyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDA0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDA0Ij4jNTQwNDwvYT4pPC9saT4KKzxsaT5DVkUtMjAxOC00NzAwOiBMaW51eCBzZXNzaW9uIGNvb2tpZXMgdXNlZCBhIHByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgc2VlZC48L2xpPgorPGxpPkFsbCB1c2VyIGNvbW1hbmRzIG5vdyBzdXBwb3J0IHRoZSA8Y29kZT4tLWhlbHA8L2NvZGU+IG9wdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzMwNTQwOTY1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzI2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzI2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzI2Ij4jNTMyNjwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBjb21tYW5kIG5vdyB3b3JrcyB3aXRoIElQUCBFdmVyeXdoZXJlIHByaW50ZXJzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gYWRkZWQgYXMgbG9jYWwgcXVldWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIyNDA0NzYzNjAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MDQ1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiPiM1MDQ1PC9hPik8L2xpPgorPGxpPlRoZSBscGFkbWluIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbm9uLXdvcmtpbmcgcHJpbnRlciBpbiBzb21lIGVycm9yIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMTg5NDY1OTAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MzA1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMDUiPiM1MzA1PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgd291bGQgY3Jhc2ggaWYgYW4gZW1wdHkgPGNvZGU+QWNjZXNzTG9nPC9jb2RlPiBkaXJlY3RpdmUgd2FzIHNwZWNpZmllZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzIwMjA1ODIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMwOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA5Ij4jNTMwOTwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgaWRsZS1leGl0IG9uIHNvbWUgTGludXggZGlzdHJpYnV0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzI2NjgxNDgxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzE5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMxOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzE5Ij4jNTMxOTwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIHJlZ3Jlc3Npb24gaW4gdGhlIGNoYW5nZXMgdG8gaXBwVmFsaWRhdGVBdHRyaWJ1dGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMyOTg0OTIyOCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzMjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMiI+IzUzMjI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzA3OTU5MTAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzMzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzMzAiPiM1MzMwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIGluIHRoZSBFcHNvbiBkb3QgbWF0cml4IGRyaXZlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzI5OTMzNzAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzIzIj4jNTMyMzwvYT4pPC9saT4KKzxsaT5BdXRvbWF0aWMgZGVidWcgbG9nZ2luZyBvZiBqb2IgZXJyb3JzIGRpZCBub3Qgd29yayB3aXRoIHN5c3RlbWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMTI1MDUwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTMzNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTMzNyI+IzUzMzc8L2E+KTwvbGk+Cis8bGk+VGhlIHdlYiBpbnRlcmZhY2UgZGlkIG5vdCBsaXN0IHRoZSBJUFAgRXZlcnl3aGVyZSAiZHJpdmVyIiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzMxMzEyNzEyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzM4Ij4jNTMzODwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgcmVwb3J0IGFsbCBvZiB0aGUgc3VwcG9ydGVkIGpvYiBvcHRpb25zIGFuZCB2YWx1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMzI3Njc4MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM0MCI+IzUzNDA8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBFdmVyeXdoZXJlICJkcml2ZXIiIG5vdyBwcm9wZXJseSBzdXBwb3J0cyBmYWNlLXVwIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzcwODM0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNDUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNDUiPiM1MzQ1PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgdHlwb3MgaW4gdGhlIGxhYmVsIHByaW50ZXIgZHJpdmVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzM5MTg1NTY1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzUwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzUwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzUwIj4jNTM1MDwvYT4pPC9saT4KKzxsaT5TZXR0aW5nIHRoZSA8Y29kZT5Db21tdW5pdHk8L2NvZGU+IG5hbWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiA8Y29kZT5zbm1wLmNvbmY8L2NvZGU+IG5vdyBkaXNhYmxlcyBTTk1QIHN1cHBseSBsZXZlbCBtb25pdG9yaW5nIGJ5IGFsbCB0aGUgc3RhbmRhcmQgbmV0d29yayBiYWNrZW5kcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQwNjI0MDkwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU0Ij4jNTM1NDwvYT4pPC9saT4KKzxsaT5NdWx0aS1maWxlIGpvYnMgY291bGQgZ2V0IHN0dWNrIGlmIHRoZSBiYWNrZW5kIGZhaWxlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ1MDY5Nzg3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1OS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU5Ij4jNTM1OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3MTA5Mjk1NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQxMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQxMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQxMyI+IzU0MTM8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBFdmVyeXdoZXJlICJkcml2ZXIiIG5vIGxvbmdlciBkb2VzIGxvY2FsIGZpbHRlcmluZyB3aGVuIHByaW50aW5nIHRvIGEgc2hhcmVkIENVUFMgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ1MzcxMDY0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYxIj4jNTM2MTwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIG5vdyBjb3JyZWN0bHkgcmVwb3J0cyBJUFAgZXJyb3JzIHdoZW4gY29uZmlndXJpbmcgYW4gSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ4NDU0NjY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzcwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3MC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzcwIj4jNTM3MDwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIG1lbW9yeSBsZWFrcyBkaXNjb3ZlcmVkIGJ5IENvdmVyaXR5IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTA4MTcwNTYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNzUiPiM1Mzc1PC9hPik8L2xpPgorPGxpPlRoZSBQUEQgY29tcGlsZXIgaW5jb3JyZWN0bHkgdGVybWluYXRlZCBKQ0wgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzUzOTIzNDUzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzc5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3OS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzc5Ij4jNTM3OTwvYT4pPC9saT4KKzxsaT5UaGUgY3Vwc3Rlc3RwcGQgdXRpbGl0eSBkaWQgbm90IGdlbmVyYXRlIGVycm9ycyBmb3IgbWlzc2luZy9taXNtYXRjaGVkIENsb3NlVUkvSkNMQ2xvc2VVSSBrZXl3b3JkcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU0MzY2MDE4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzgxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzgxIj4jNTM4MTwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vdyByZXBvcnRzIHRoZSBhY3R1YWwgbG9jYXRpb24gb2YgdGhlIGxvZyBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjA4MzAzNjIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzOTgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzOTgiPiM1Mzk4PC9hPik8L2xpPgorPGxpPkFkZGVkIFVTQiBxdWlyayBydWxlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU3NzMzMjg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1Ij4jNTM5NTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3NDc4OTMxMiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQyMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MjAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQyMCI+IzU0MjA8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODMzNTMxNDMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDMiPiM1NDQzPC9hPik8L2xpPgorPGxpPlRoZSBnZW5lcmF0ZWQgUFBEIGZpbGVzIGZvciBJUFAgRXZlcnl3aGVyZSBwcmludGVycyBkaWQgbm90IGNvbnRhaW4gdGhlIGN1cHNNYW51YWxDb3BpZXMga2V5d29yZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzc5MTY4NzAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDMzIj4jNTQzMzwvYT4pPC9saT4KKzxsaT5LZXJiZXJvcyBjcmVkZW50aWFscyBtaWdodCBiZSB0cnVuY2F0ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3OTk5MjU3MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQzNSI+IzU0MzU8L2E+KTwvbGk+Cis8bGk+VGhlIGhhbmRsaW5nIG9mIDxjb2RlPk1heEpvYlRpbWUgMDwvY29kZT4gZGlkIG5vdCBtYXRjaCB0aGUgZG9jdW1lbnRhdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgxMjQ3ODYzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM4Ij4jNTQzODwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBhZGRpbmcgYSBxdWV1ZSB3aXRoIHRoZSA8Y29kZT4tRTwvY29kZT4gb3B0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODE5NDIwNjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiPiM1NDQwPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzYWRkc21iPC9jb2RlPiBwcm9ncmFtIGhhcyBiZWVuIHJlbW92ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4ODMwMjE0NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0OSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0OSI+IzU0NDk8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHN0ZXN0ZHNjPC9jb2RlPiBwcm9ncmFtIGhhcyBiZWVuIHJlbW92ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4ODMwNzUxNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1MCI+IzU0NTA8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciB3YXMgYmVpbmcgYmFja2dyb3VuZGVkIG9uIG1hY09TLCBjYXVzaW5nIGFwcGxpY2F0aW9ucyB0byBzcGluIChyZGFyOi8vNDA0MzYwODApPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgdmFsaWRhdGUgdGhhdCByZXF1aXJlZCBpbml0aWFsIHJlcXVlc3QgYXR0cmlidXRlcyB3ZXJlIGluIHRoZSBvcGVyYXRpb24gZ3JvdXAgKHJkYXI6Ly80MTA5ODE3OCk8L2xpPgorPGxpPkF1dGhlbnRpY2F0aW9uIGluIHRoZSB3ZWIgaW50ZXJmYWNlIGRpZCBub3Qgd29yayBvbiBtYWNPUyAocmRhcjovLzQxNDQ0NDczKTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCBIVFRQIERpZ2VzdCBhdXRoZW50aWNhdGlvbiAocmRhcjovLzQxNzA5MDg2KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBjb3VsZCBjcmFzaCB3aGVuIGpvYiBoaXN0b3J5IHdhcyBwdXJnZWQgKHJkYXI6Ly80MjE5ODA1Nyk8L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIHdoZW4gbWFwcGluZyBQUEQgZHVwbGV4IG9wdGlvbnMgdG8gSVBQIGF0dHJpYnV0ZXMgKHJkYXI6Ly80NjE4Mzk3Nik8L2xpPgorPGxpPkZpeGVkIGEgbWVtb3J5IGxlYWsgZm9yIHNvbWUgSVBQIChleHRlbnNpb24pIHN5bnRheGVzLjwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHNjZ2k8L2NvZGU+LCA8Y29kZT5jdXBzbWltZTwvY29kZT4sIGFuZCA8Y29kZT5jdXBzcHBkYzwvY29kZT4gc3VwcG9ydCBsaWJyYXJpZXMgYXJlIG5vIGxvbmdlciBpbnN0YWxsZWQgYXMgc2hhcmVkIGxpYnJhcmllcy48L2xpPgorPGxpPlRoZSA8Y29kZT5zbm1wPC9jb2RlPiBiYWNrZW5kIGlzIG5vdyBkZXByZWNhdGVkLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiNi9jdXBzLTIuM2I2LXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNi1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45Ljc3IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I2L2N1cHMtMi4zYjYtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNi1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiNi56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjYudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMCI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEwPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzI1YjIzMzgzNDZlZjNhYmJiOTNlYTg4NDc2ODg3Y2JhN2IyYjg2ZjgiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT4yNWIyMzM4PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjEwIj52Mi4yLjEwPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTA8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMjViMjMzODM0NmVmM2FiYmI5M2VhODg0NzY4ODdjYmE3YjJiODZmOCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT4yNWIyMzM4PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOC0xMi0wN1QxOTo1Nzo1NVoiIGNsYXNzPSJuby13cmFwIj5EZWMgNywgMjAxODwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuMi4xMC4uLm1hc3RlciI+CisgICAgNzkzIGNvbW1pdHM8L2E+CisgICAgdG8gbWFzdGVyCisgICAgc2luY2UgdGhpcyByZWxlYXNlCis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuMi4xMCBpcyBhIGJ1ZyBmaXggcmVsZWFzZSB0aGF0IGFkZHJlc3NlcyBpc3N1ZXMgaW4gdGhlIHNjaGVkdWxlciwgSVBQIEV2ZXJ5d2hlcmUgc3VwcG9ydCwgQ1VQUyBsaWJyYXJ5LCBhbmQgVVNCIHByaW50ZXIgc3VwcG9ydC4gQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5DVkUtMjAxOC00MzAwOiBMaW51eCBzZXNzaW9uIGNvb2tpZXMgdXNlZCBhIHByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgc2VlZC48L2xpPgorPGxpPlRoZSA8Y29kZT5scG9wdGlvbnM8L2NvZGU+IGNvbW1hbmQgbm93IHdvcmtzIHdpdGggSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlcnMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBhZGRlZCBhcyBsb2NhbCBxdWV1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjI0MDQ3NjM2MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTA0NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTA0NSI+IzUwNDU8L2E+KTwvbGk+Cis8bGk+QWRkZWQgVVNCIHF1aXJrIHJ1bGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgzMzUzMTQzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIj4jNTQ0MzwvYT4pPC9saT4KKzxsaT5UaGUgZ2VuZXJhdGVkIFBQRCBmaWxlcyBmb3IgSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlcnMgZGlkIG5vdCBjb250YWluIHRoZSBjdXBzTWFudWFsQ29waWVzIGtleXdvcmQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3OTE2ODcwMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyI+IzU0MzM8L2E+KTwvbGk+Cis8bGk+S2VyYmVyb3MgY3JlZGVudGlhbHMgbWlnaHQgYmUgdHJ1bmNhdGVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNzk5OTI1NzIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MzUiPiM1NDM1PC9hPik8L2xpPgorPGxpPlRoZSBoYW5kbGluZyBvZiA8Y29kZT5NYXhKb2JUaW1lIDA8L2NvZGU+IGRpZCBub3QgbWF0Y2ggdGhlIGRvY3VtZW50YXRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MTI0Nzg2MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCI+IzU0Mzg8L2E+KTwvbGk+Cis8bGk+SW5jb3Jwb3JhdGVkIHRoZSBwYWdlIGFjY291bnRpbmcgY2hhbmdlcyBmcm9tIENVUFMgMi4zIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODE1MzE1NzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDM5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzkiPiM1NDM5PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGFkZGluZyBhIHF1ZXVlIHdpdGggdGhlIDxjb2RlPi1FPC9jb2RlPiBvcHRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MTk0MjA2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MCI+IzU0NDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBjcmFzaCBidWcgd2hlbiBtYXBwaW5nIFBQRCBkdXBsZXggb3B0aW9ucyB0byBJUFAgYXR0cmlidXRlcyAocmRhcjovLzQ2MTgzOTc2KTwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTAvY3Vwcy0yLjIuMTAtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45LjkyIE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMC9jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTAuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMC50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworICA8L2Rpdj4KKworICA8ZGl2IGRhdGEtcGpheCBjbGFzcz0icGFnaW5hdGUtY29udGFpbmVyIj4KKyAgICA8ZGl2IGNsYXNzPSJwYWdpbmF0aW9uIj48c3BhbiBjbGFzcz0iZGlzYWJsZWQiPlByZXZpb3VzPC9zcGFuPjxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzP2FmdGVyPXYyLjIuMTAiPk5leHQ8L2E+PC9kaXY+CisgIDwvZGl2PgorCisKKyAgPC9kaXY+Cis8L2Rpdj4KKworICAgIDwvbWFpbj4KKyAgPC9kaXY+CisgIAorCisgIDwvZGl2PgorCisgICAgICAgIAorPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyB3aWR0aC1mdWxsIHAtcmVzcG9uc2l2ZSIgcm9sZT0iY29udGVudGluZm8iPgorICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBmbGV4LWxnLXJvdyBmbGV4LXdyYXAgZmxleC1sZy1ub3dyYXAgZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWxnLWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgorICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgY29sLTEyIGNvbC1sZy01IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1sZy1qdXN0aWZ5LWJldHdlZW4gbWItMiBtYi1sZy0wIj4KKyAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj4mY29weTsgMjAxOSBHaXRIdWIsIEluYy48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0ZXJtcywgdGV4dDp0ZXJtcyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpdGUvdGVybXMiPlRlcm1zPC9hPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHByaXZhY3ksIHRleHQ6cHJpdmFjeSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpdGUvcHJpdmFjeSI+UHJpdmFjeTwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlY3VyaXR5Ij5TZWN1cml0eTwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWJzdGF0dXMuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gaGVscCwgdGV4dDpoZWxwIiBocmVmPSJodHRwczovL2hlbHAuZ2l0aHViLmNvbSI+SGVscDwvYT48L2xpPgorICAgIDwvdWw+CisKKyAgICA8YSBhcmlhLWxhYmVsPSJIb21lcGFnZSIgdGl0bGU9IkdpdEh1YiIgY2xhc3M9ImZvb3Rlci1vY3RpY29uIGQtbm9uZSBkLWxnLWJsb2NrIG14LWxnLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbSI+CisgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAwMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KKzwvYT4KKyAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgY29sLTEyIGNvbC1sZy01IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1sZy1qdXN0aWZ5LWJldHdlZW4gbWItMiBtYi1sZy0wIj4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgorICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuYmxvZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBibG9nLCB0ZXh0OmJsb2ciPkJsb2c8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KKworICAgIDwvdWw+CisgIDwvZGl2PgorICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KKyAgICA8c3BhbiBjbGFzcz0iZjYgdGV4dC1ncmF5LWxpZ2h0Ij48L3NwYW4+CisgIDwvZGl2PgorPC9kaXY+CisKKworCisgIDxkaXYgaWQ9ImFqYXgtZXJyb3ItbWVzc2FnZSIgY2xhc3M9ImFqYXgtZXJyb3ItbWVzc2FnZSBmbGFzaCBmbGFzaC1lcnJvciI+CisgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMDAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMDAuMDEtMS4wMDJMOC44OTMgMS41em0uMTMzIDExLjQ5N0g2Ljk4N3YtMi4wMDNoMi4wMzl2Mi4wMDN6bTAtMy4wMDRINi45ODdWNS45ODdoMi4wMzl2NC4wMDZ6Ii8+PC9zdmc+CisgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgorICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgPC9idXR0b24+CisgICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCisgIDwvZGl2PgorCisKKyAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLW1kckJhc1lHK1FqZ1MzOTFQU3lWa1ByMDZpbzNnV3BsQ1ZiUHNjZ3VldE5FSHhJRXQrbVp3Q2VDeFBSOWVNTmZkYTZxTnVpYk5GcUJvNWFrMitPL2hnPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9hc3NldHMvY29tcGF0LWJvb3RzdHJhcC05OWRhYzE2YS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBpbnRlZ3JpdHk9InNoYTUxMi1ReGNJWjVwYTRqOFA1ZUw2RkxRYVUvRkFJZm9kV2t6VjJyZis3T2x5aWlpSU05WmFHM01PRHZnUW1lK0xWRFVQTUJkbWpZWVorc3ZTbEZ1NXlqRmhSdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2ZyYW1ld29ya3MtNDMxNzA4NjcuanMiPjwvc2NyaXB0PgorICAgIAorICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1wV2IrWEVSWjhCNzRwclc4eVBOZU9NZkZFZk1mbzhEdmJPNGtEQS9EelBrMTB1R2lWWVBDQjUxc1JSd2lzZ0tyUHlmWHRDK0lnYzVrOUJmVXBlcG10UT09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2dpdGh1Yi1ib290c3RyYXAtYTU2NmZlNWMuanMiPjwvc2NyaXB0PgorICAgIAorICAgIAorICAgIAorICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIGZsYXNoIGZsYXNoLXdhcm4gZmxhc2gtYmFubmVyIiBoaWRkZW4KKyAgICA+CisgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMDAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMDAuMDEtMS4wMDJMOC44OTMgMS41em0uMTMzIDExLjQ5N0g2Ljk4N3YtMi4wMDNoMi4wMzl2Mi4wMDN6bTAtMy4wMDRINi45ODdWNS45ODdoMi4wMzl2NC4wMDZ6Ii8+PC9zdmc+CisgICAgPHNwYW4gY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2gtc2lnbmVkLWluIiBoaWRkZW4+WW91IHNpZ25lZCBpbiB3aXRoIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ianMtc3RhbGUtc2Vzc2lvbi1mbGFzaC1zaWduZWQtb3V0IiBoaWRkZW4+WW91IHNpZ25lZCBvdXQgaW4gYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgorICA8L2Rpdj4KKyAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KKyAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsgaHhfcnNtIiBvcGVuPgorICAgIDxzdW1tYXJ5IHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CisgICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCBoeF9yc20tZGlhbG9nIGh4X3JzbS1tb2RhbCI+CisgICAgICA8YnV0dG9uIGNsYXNzPSJCb3gtYnRuLW9jdGljb24gbS0wIGJ0bi1vY3RpY29uIHBvc2l0aW9uLWFic29sdXRlIHJpZ2h0LTAgdG9wLTAiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIiBkYXRhLWNsb3NlLWRpYWxvZz4KKyAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgICA8L2J1dHRvbj4KKyAgICAgIDxkaXYgY2xhc3M9Im9jdG9jYXQtc3Bpbm5lciBteS02IGpzLWRldGFpbHMtZGlhbG9nLXNwaW5uZXIiPjwvZGl2PgorICAgIDwvZGV0YWlscy1kaWFsb2c+CisgIDwvZGV0YWlscz4KKzwvdGVtcGxhdGU+CisKKyAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CisgIDxkaXYgY2xhc3M9IlBvcG92ZXItbWVzc2FnZSBQb3BvdmVyLW1lc3NhZ2UtLWJvdHRvbS1sZWZ0IFBvcG92ZXItbWVzc2FnZS0tbGFyZ2UgQm94IGJveC1zaGFkb3ctbGFyZ2UiIHN0eWxlPSJ3aWR0aDozNjBweDsiPgorICA8L2Rpdj4KKzwvZGl2PgorCisgIDxkaXYgYXJpYS1saXZlPSJwb2xpdGUiIGNsYXNzPSJqcy1nbG9iYWwtc2NyZWVuLXJlYWRlci1ub3RpY2Ugc3Itb25seSI+PC9kaXY+CisKKyAgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWE2ZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvaW5kZXguaHRtbApAQCAtMCwwICsxLDUwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjQiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZGViaWFuL3Bvb2wvbWFpbi9kLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1kb2NfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViIj5kYjUuMy1kb2NfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjZfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjZfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLWRvY181LjMuMjgtOStkZWI4dTFfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOC05K2RlYjh1MV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xOCAyMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtZG9jXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kZWJpYW4udGFyLnh6Ij5kYjUuM181LjMuMjgrZGZzZzEtMC41LmRlYmlhbi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEtMC41LmRzYyI+ZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEtMC42LmRlYmlhbi50YXIueHoiPmRiNS4zXzUuMy4yOCtkZnNnMS0wLjYuZGViaWFuLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOCtkZnNnMS0wLjYuZHNjIj5kYjUuM181LjMuMjgrZGZzZzEtMC42LmRzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My4xSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOCtkZnNnMS5vcmlnLnRhci54eiI+ZGI1LjNfNS4zLjI4K2Rmc2cxLm9yaWcudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAwMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRlYmlhbi50YXIueHoiPmRiNS4zXzUuMy4yOC05K2RlYjh1MS5kZWJpYW4udGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xOCAyMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRzYyI+ZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My4ySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZGViaWFuLnRhci54eiI+ZGI1LjNfNS4zLjI4LTEyK2RlYjl1MS5kZWJpYW4udGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yNCAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTEyK2RlYjl1MS5kc2MiPmRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZHNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yNCAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4Lm9yaWcudGFyLnh6Ij5kYjUuM181LjMuMjgub3JpZy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTI3IDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzczSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzA3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzI1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjMwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjgySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzM3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzExSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDUwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjI0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgrZGZzZzEtMC41X2FsbC5kZWIiPmxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgrZGZzZzEtMC42X2FsbC5kZWIiPmxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNl9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgtOStkZWI4dTFfYWxsLmRlYiI+bGliZGI1LjMtamF2YV81LjMuMjgtOStkZWI4dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmFfNS4zLjI4LTEyK2RlYjl1MV9hbGwuZGViIj5saWJkYjUuMy1qYXZhXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQ4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkxMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODA4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODgySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTU4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODcwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzEySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjI0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44OTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODI2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTIxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTUySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODUzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQ5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTE1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTg0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU2MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuM181LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTcySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE1SzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNCI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8YWRkcmVzcz5BcGFjaGUgU2VydmVyIGF0IGZ0cC5kZWJpYW4ub3JnIFBvcnQgODA8L2FkZHJlc3M+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YmZiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZG93bmxvYWRzL2VuY2hhbnQvMS42LjA8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZG93bmxvYWRzL2VuY2hhbnQvMS42LjA8L2gxPgorPHRhYmxlPjx0cj48dGg+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+PHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbRElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2Rvd25sb2Fkcy9lbmNoYW50LyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJNRDVTVU0iPk1ENVNVTTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjAxLUFwci0yMDEwIDIzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJlbmNoYW50LTEuNi4wLnRhci5neiI+ZW5jaGFudC0xLjYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wMS1BcHItMjAxMCAyMzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzxhZGRyZXNzPkFwYWNoZS8yLjIuMTUgKEZlZG9yYSkgU2VydmVyIGF0IHd3dy5hYmlzb3VyY2UuY29tIFBvcnQgNDQzPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjIuOC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92Mi44L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhMDc3ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjIuOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNzc0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92Mi44PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YyLjg8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iLSoiPi0qPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0wNyAxMjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIDAgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjAiPkNNYWtlQ2hhbmdlTG9nLTIuOC4wPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0xNyAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjIiPkNNYWtlQ2hhbmdlTG9nLTIuOC4yPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjMiPkNNYWtlQ2hhbmdlTG9nLTIuOC4zPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjQiPkNNYWtlQ2hhbmdlTG9nLTIuOC40PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNiAwOToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjUiPkNNYWtlQ2hhbmdlTG9nLTIuOC41PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gODFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjYiPkNNYWtlQ2hhbmdlTG9nLTIuOC42PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xMDBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjciPkNNYWtlQ2hhbmdlTG9nLTIuOC43PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNTozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xMTVLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjgiPkNNYWtlQ2hhbmdlTG9nLTIuOC44PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xNDRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjkiPkNNYWtlQ2hhbmdlTG9nLTIuOC45PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xNjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEwIj5DTWFrZUNoYW5nZUxvZy0yLjguMTA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4NUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTAuMSI+Q01ha2VDaGFuZ2VMb2ctMi44LjEwLjE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4Nks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTAuMiI+Q01ha2VDaGFuZ2VMb2ctMi44LjEwLjI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4Nks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTYgMDk6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjE4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4xMiI+Q01ha2VDaGFuZ2VMb2ctMi44LjEyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0xMSAwODo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yNDdLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEyLjEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMi4xPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wOCAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yNDhLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VWUzEwRmluZE1ha2UuY21ha2UiPkNNYWtlVlMxMEZpbmRNYWtlLmNtYWtlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0yNyAwOTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wOCAxMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wOCAxMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTA4IDEwOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMC1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4wLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4wLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4wLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjAtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjAtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4wLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC50YXIuWiI+Y21ha2UtMi44LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC50YXIuZ3oiPmNtYWtlLTIuOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLnppcCI+Y21ha2UtMi44LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMS1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjEtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjEtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4xLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS50YXIuWiI+Y21ha2UtMi44LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS50YXIuZ3oiPmNtYWtlLTIuOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLnppcCI+Y21ha2UtMi44LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMi1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4yLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4yLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4yLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjItU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjItU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4yLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi50YXIuWiI+Y21ha2UtMi44LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi50YXIuZ3oiPmNtYWtlLTIuOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLnppcCI+Y21ha2UtMi44LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjMtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMy1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMuc2giPmNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMudGFyLloiPmNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMudGFyLmd6Ij5jbWFrZS0yLjguMy1TdW5PUy1zcGFyYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMudGFyLloiPmNtYWtlLTIuOC4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMudGFyLmd6Ij5jbWFrZS0yLjguMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy56aXAiPmNtYWtlLTIuOC4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguNC1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjQtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC40LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjQtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnNoIj5jbWFrZS0yLjguNC1TdW5PUy1zcGFyYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnRhci5aIj5jbWFrZS0yLjguNC1TdW5PUy1zcGFyYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnRhci5neiI+Y21ha2UtMi44LjQtU3VuT1Mtc3BhcmMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LnRhci5aIj5jbWFrZS0yLjguNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LnRhci5neiI+Y21ha2UtMi44LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQuemlwIj5jbWFrZS0yLjguNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS0xLXNyYy50YXIuYnoyIj5jbWFrZS0yLjguNS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtMS50YXIuYnoyIj5jbWFrZS0yLjguNS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjUtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjUtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC41LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjUtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC41LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC41LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguNS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC41LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjUtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC41LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjUtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjUtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjUtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC41LVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjUtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS50YXIuWiI+Y21ha2UtMi44LjUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS50YXIuZ3oiPmNtYWtlLTIuOC41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LnppcCI+Y21ha2UtMi44LjUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMi44LjYtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LTEudGFyLmJ6MiI+Y21ha2UtMi44LjYtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguNi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC42LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjYtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjYtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC42LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjYtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjYtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjYtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi50YXIuWiI+Y21ha2UtMi44LjYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi50YXIuZ3oiPmNtYWtlLTIuOC42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LnppcCI+Y21ha2UtMi44LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctMS1zcmMudGFyLmJ6MiI+Y21ha2UtMi44LjctMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LTEudGFyLmJ6MiI+Y21ha2UtMi44LjctMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wMyAxNjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wMyAxNjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguNy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTAzIDE2OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC43LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjctSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjctSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC43LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjctSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjctTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljctd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44Ljctd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC43LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy50YXIuWiI+Y21ha2UtMi44LjcudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy50YXIuZ3oiPmNtYWtlLTIuOC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LnppcCI+Y21ha2UtMi44LjcuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguOC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC44LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjgtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjgtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC44LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjgtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguOC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjgtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguOC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguOC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjgtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguOC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljgtd2luMzIteDg2LnppcCI+Y21ha2UtMi44Ljgtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LnRhci5aIj5jbWFrZS0yLjguOC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LnRhci5neiI+Y21ha2UtMi44LjgudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjguemlwIj5jbWFrZS0yLjguOC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjktQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjktQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC45LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjktRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguOS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguOS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjktSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguOS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC45LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguOS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC45LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC45LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguOS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC45LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguOS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjkudGFyLloiPmNtYWtlLTIuOC45LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjkudGFyLmd6Ij5jbWFrZS0yLjguOS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS56aXAiPmNtYWtlLTIuOC45LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTAtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEwLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTAtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTAtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLnppcCI+Y21ha2UtMi44LjEwLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzIudGFyLloiPmNtYWtlLTIuOC4xMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLnppcCI+Y21ha2UtMi44LjEwLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLnppcCI+Y21ha2UtMi44LjEwLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS50YXIuWiI+Y21ha2UtMi44LjEwLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLnppcCI+Y21ha2UtMi44LjEwLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEwLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTAuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEwLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEwLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLnRhci5aIj5jbWFrZS0yLjguMTAuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLnRhci5neiI+Y21ha2UtMi44LjEwLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjIuemlwIj5jbWFrZS0yLjguMTAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAudGFyLloiPmNtYWtlLTIuOC4xMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC50YXIuZ3oiPmNtYWtlLTIuOC4xMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuemlwIj5jbWFrZS0yLjguMTAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjExLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjExLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS50YXIuWiI+Y21ha2UtMi44LjExLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEuemlwIj5jbWFrZS0yLjguMTEtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi50YXIuWiI+Y21ha2UtMi44LjExLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzIuemlwIj5jbWFrZS0yLjguMTEtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy50YXIuWiI+Y21ha2UtMi44LjExLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMuemlwIj5jbWFrZS0yLjguMTEtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzQtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQuemlwIj5jbWFrZS0yLjguMTEtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjExLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjExLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLnRhci5aIj5jbWFrZS0yLjguMTEuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLnRhci5neiI+Y21ha2UtMi44LjExLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEuemlwIj5jbWFrZS0yLjguMTEuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjExLjItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjExLjItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTEuMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjExLjItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTEuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS4yLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTEuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjIudGFyLloiPmNtYWtlLTIuOC4xMS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjIudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi56aXAiPmNtYWtlLTIuOC4xMS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS50YXIuWiI+Y21ha2UtMi44LjExLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLnRhci5neiI+Y21ha2UtMi44LjExLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS56aXAiPmNtYWtlLTIuOC4xMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEyLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS56aXAiPmNtYWtlLTIuOC4xMi1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi56aXAiPmNtYWtlLTIuOC4xMi1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS43SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLnppcCI+Y21ha2UtMi44LjEyLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItcmM0LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LnppcCI+Y21ha2UtMi44LjEyLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMi4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS50YXIuWiI+Y21ha2UtMi44LjEyLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLnppcCI+Y21ha2UtMi44LjEyLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTIuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTIuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEyLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLnRhci5aIj5jbWFrZS0yLjguMTIuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLnRhci5neiI+Y21ha2UtMi44LjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjIuemlwIj5jbWFrZS0yLjguMTIuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIudGFyLloiPmNtYWtlLTIuOC4xMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuemlwIj5jbWFrZS0yLjguMTIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ODNkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjAvaW5kZXguaHRtbApAQCAtMCwwICsxLDIwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMDwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4wPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC0xLnRhci5iejIiPmNtYWtlLTMuMC4wLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC5zaCI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEudGFyLloiPmNtYWtlLTMuMC4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEuemlwIj5jbWFrZS0zLjAuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMyLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnNoIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi56aXAiPmNtYWtlLTMuMC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMzLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQuc2giPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIuc2giPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy56aXAiPmNtYWtlLTMuMC4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM0LTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzQtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQuc2giPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIuc2giPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LnppcCI+Y21ha2UtMy4wLjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzUtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzUtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmM1LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUudGFyLloiPmNtYWtlLTMuMC4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUuemlwIj5jbWFrZS0zLjAuMC1yYzUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM2LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzYtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzYtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi50YXIuWiI+Y21ha2UtMy4wLjAtcmM2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LnRhci5neiI+Y21ha2UtMy4wLjAtcmM2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi56aXAiPmNtYWtlLTMuMC4wLXJjNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAudGFyLloiPmNtYWtlLTMuMC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAudGFyLmd6Ij5jbWFrZS0zLjAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC56aXAiPmNtYWtlLTMuMC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS0xLnRhci5iejIiPmNtYWtlLTMuMC4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS50YXIuWiI+Y21ha2UtMy4wLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS50YXIuZ3oiPmNtYWtlLTMuMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLnppcCI+Y21ha2UtMy4wLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjItMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLTEudGFyLmJ6MiI+Y21ha2UtMy4wLjItMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLnRhci5aIj5jbWFrZS0zLjAuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLnRhci5neiI+Y21ha2UtMy4wLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjIuemlwIj5jbWFrZS0zLjAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMS9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM1ZDM0YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTU2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjAtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjAtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC5kbWciPmNtYWtlLTMuMS4wLURhcndpbjY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LnRhci5aIj5jbWFrZS0zLjEuMC1EYXJ3aW42NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LnRhci5neiI+Y21ha2UtMy4xLjAtRGFyd2luNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMxLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS50YXIuWiI+Y21ha2UtMy4xLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xLjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS56aXAiPmNtYWtlLTMuMS4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMyLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItMS50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzItMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLnRhci5aIj5jbWFrZS0zLjEuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLnppcCI+Y21ha2UtMy4xLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzMtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy0xLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMy0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy56aXAiPmNtYWtlLTMuMS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAudGFyLloiPmNtYWtlLTMuMS4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAudGFyLmd6Ij5jbWFrZS0zLjEuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC56aXAiPmNtYWtlLTMuMS4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS0xLnRhci5iejIiPmNtYWtlLTMuMS4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLnRhci5aIj5jbWFrZS0zLjEuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLnRhci5neiI+Y21ha2UtMy4xLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEuemlwIj5jbWFrZS0zLjEuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4xLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMS4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi50YXIuWiI+Y21ha2UtMy4xLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi50YXIuZ3oiPmNtYWtlLTMuMS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLnppcCI+Y21ha2UtMy4xLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjMtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMudGFyLloiPmNtYWtlLTMuMS4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMudGFyLmd6Ij5jbWFrZS0zLjEuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy56aXAiPmNtYWtlLTMuMS4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNjU0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEwL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEwPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEwPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEudGFyLloiPmNtYWtlLTMuMTAuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLnppcCI+Y21ha2UtMy4xMC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTAuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzIuemlwIj5jbWFrZS0zLjEwLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTAuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEwLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy56aXAiPmNtYWtlLTMuMTAuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQudGFyLloiPmNtYWtlLTMuMTAuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LnppcCI+Y21ha2UtMy4xMC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjAtcmM1LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtcmM1LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLXJjNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtcmM1LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXJjNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTAuMC1yYzUtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXJjNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS50YXIuWiI+Y21ha2UtMy4xMC4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmM1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUuemlwIj5jbWFrZS0zLjEwLjAtcmM1LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC50YXIuWiI+Y21ha2UtMy4xMC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLnRhci5neiI+Y21ha2UtMy4xMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC56aXAiPmNtYWtlLTMuMTAuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS50YXIuWiI+Y21ha2UtMy4xMC4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLnRhci5neiI+Y21ha2UtMy4xMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS56aXAiPmNtYWtlLTMuMTAuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi50YXIuWiI+Y21ha2UtMy4xMC4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLnRhci5neiI+Y21ha2UtMy4xMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi56aXAiPmNtYWtlLTMuMTAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy50YXIuWiI+Y21ha2UtMy4xMC4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLnRhci5neiI+Y21ha2UtMy4xMC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy56aXAiPmNtYWtlLTMuMTAuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTEvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTEvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjlkNzQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xMTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xMTwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLnRhci5aIj5jbWFrZS0zLjExLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS56aXAiPmNtYWtlLTMuMTEuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTEuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMS4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzIudGFyLloiPmNtYWtlLTMuMTEuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLnppcCI+Y21ha2UtMy4xMS4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjExLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMS4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy50YXIuWiI+Y21ha2UtMy4xMS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMuemlwIj5jbWFrZS0zLjExLjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMS4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LnRhci5aIj5jbWFrZS0zLjExLjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC56aXAiPmNtYWtlLTMuMTEuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLnRhci5aIj5jbWFrZS0zLjExLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAudGFyLmd6Ij5jbWFrZS0zLjExLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLnppcCI+Y21ha2UtMy4xMS4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLnRhci5aIj5jbWFrZS0zLjExLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEudGFyLmd6Ij5jbWFrZS0zLjExLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLnppcCI+Y21ha2UtMy4xMS4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLnRhci5aIj5jbWFrZS0zLjExLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjIudGFyLmd6Ij5jbWFrZS0zLjExLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLnppcCI+Y21ha2UtMy4xMS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLnRhci5aIj5jbWFrZS0zLjExLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMudGFyLmd6Ij5jbWFrZS0zLjExLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLnppcCI+Y21ha2UtMy4xMS4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LnRhci5aIj5jbWFrZS0zLjExLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQudGFyLmd6Ij5jbWFrZS0zLjExLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LnppcCI+Y21ha2UtMy4xMS40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMi9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMi9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NzdlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEyL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMTggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEyPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEyPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTIuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEudGFyLloiPmNtYWtlLTMuMTIuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLnppcCI+Y21ha2UtMy4xMi4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEyLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMi4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMi4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzIuemlwIj5jbWFrZS0zLjEyLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTIuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTIuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEyLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy56aXAiPmNtYWtlLTMuMTIuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLnRhci5aIj5jbWFrZS0zLjEyLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAudGFyLmd6Ij5jbWFrZS0zLjEyLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLnppcCI+Y21ha2UtMy4xMi4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLnRhci5aIj5jbWFrZS0zLjEyLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEudGFyLmd6Ij5jbWFrZS0zLjEyLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLnppcCI+Y21ha2UtMy4xMi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLnRhci5aIj5jbWFrZS0zLjEyLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjIudGFyLmd6Ij5jbWFrZS0zLjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLnppcCI+Y21ha2UtMy4xMi4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLnRhci5aIj5jbWFrZS0zLjEyLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMudGFyLmd6Ij5jbWFrZS0zLjEyLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLnppcCI+Y21ha2UtMy4xMi4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LnRhci5aIj5jbWFrZS0zLjEyLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQudGFyLmd6Ij5jbWFrZS0zLjEyLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LnppcCI+Y21ha2UtMy4xMi40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MGE3OTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEzL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEzPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEzPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTMuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEudGFyLloiPmNtYWtlLTMuMTMuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLnppcCI+Y21ha2UtMy4xMy4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEzLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMy4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMy4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzIuemlwIj5jbWFrZS0zLjEzLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTMuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEzLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy56aXAiPmNtYWtlLTMuMTMuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLnRhci5aIj5jbWFrZS0zLjEzLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAudGFyLmd6Ij5jbWFrZS0zLjEzLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLnppcCI+Y21ha2UtMy4xMy4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLnRhci5aIj5jbWFrZS0zLjEzLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEudGFyLmd6Ij5jbWFrZS0zLjEzLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLnppcCI+Y21ha2UtMy4xMy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLnRhci5aIj5jbWFrZS0zLjEzLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjIudGFyLmd6Ij5jbWFrZS0zLjEzLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLnppcCI+Y21ha2UtMy4xMy4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLnRhci5aIj5jbWFrZS0zLjEzLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMudGFyLmd6Ij5jbWFrZS0zLjEzLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLnppcCI+Y21ha2UtMy4xMy4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LnRhci5aIj5jbWFrZS0zLjEzLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQudGFyLmd6Ij5jbWFrZS0zLjEzLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LnppcCI+Y21ha2UtMy4xMy40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy41LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjUtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjUtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuNS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LnRhci5aIj5jbWFrZS0zLjEzLjUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUudGFyLmd6Ij5jbWFrZS0zLjEzLjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LnppcCI+Y21ha2UtMy4xMy41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzljMTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjE0PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE0PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yMiAxMTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE0LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEudGFyLloiPmNtYWtlLTMuMTQuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLnppcCI+Y21ha2UtMy4xNC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE0LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi50YXIuWiI+Y21ha2UtMy4xNC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzIuemlwIj5jbWFrZS0zLjE0LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE0LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjE0LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLnRhci5aIj5jbWFrZS0zLjE0LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy56aXAiPmNtYWtlLTMuMTQuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE0LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQudGFyLloiPmNtYWtlLTMuMTQuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LnppcCI+Y21ha2UtMy4xNC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAudGFyLloiPmNtYWtlLTMuMTQuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTQgMTE6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC50YXIuZ3oiPmNtYWtlLTMuMTQuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAuemlwIj5jbWFrZS0zLjE0LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEudGFyLloiPmNtYWtlLTMuMTQuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS50YXIuZ3oiPmNtYWtlLTMuMTQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEuemlwIj5jbWFrZS0zLjE0LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjIudGFyLloiPmNtYWtlLTMuMTQuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi50YXIuZ3oiPmNtYWtlLTMuMTQuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjIuemlwIj5jbWFrZS0zLjE0LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4zLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4zLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4zLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMudGFyLloiPmNtYWtlLTMuMTQuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy50YXIuZ3oiPmNtYWtlLTMuMTQuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMuemlwIj5jbWFrZS0zLjE0LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC40LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC40LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC40LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC40LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC40LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQudGFyLloiPmNtYWtlLTMuMTQuNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC50YXIuZ3oiPmNtYWtlLTMuMTQuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQuemlwIj5jbWFrZS0zLjE0LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjUtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC41LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC41LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC41LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC41LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUudGFyLloiPmNtYWtlLTMuMTQuNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS50YXIuZ3oiPmNtYWtlLTMuMTQuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUuemlwIj5jbWFrZS0zLjE0LjUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC42LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC42LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC42LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC42LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYudGFyLloiPmNtYWtlLTMuMTQuNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi50YXIuZ3oiPmNtYWtlLTMuMTQuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYuemlwIj5jbWFrZS0zLjE0LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjctRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC43LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC43LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC43LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC43LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC43LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjcudGFyLloiPmNtYWtlLTMuMTQuNy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy50YXIuZ3oiPmNtYWtlLTMuMTQuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjcuemlwIj5jbWFrZS0zLjE0LjcuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE1L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE1L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI3MjY3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTUvaW5kZXguaHRtbApAQCAtMCwwICsxLDE1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMTU8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMTU8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTUuMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS50YXIuWiI+Y21ha2UtMy4xNS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEuemlwIj5jbWFrZS0zLjE1LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE1LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTUuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLnRhci5aIj5jbWFrZS0zLjE1LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi56aXAiPmNtYWtlLTMuMTUuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTUuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTUuMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMudGFyLloiPmNtYWtlLTMuMTUuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLnppcCI+Y21ha2UtMy4xNS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtcmM0LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXJjNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTUuMC1yYzQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXJjNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC50YXIuWiI+Y21ha2UtMy4xNS4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQuemlwIj5jbWFrZS0zLjE1LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC50YXIuWiI+Y21ha2UtMy4xNS4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLnRhci5neiI+Y21ha2UtMy4xNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC56aXAiPmNtYWtlLTMuMTUuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS50YXIuWiI+Y21ha2UtMy4xNS4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLnRhci5neiI+Y21ha2UtMy4xNS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS56aXAiPmNtYWtlLTMuMTUuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi50YXIuWiI+Y21ha2UtMy4xNS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLnRhci5neiI+Y21ha2UtMy4xNS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi56aXAiPmNtYWtlLTMuMTUuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy50YXIuWiI+Y21ha2UtMy4xNS4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLnRhci5neiI+Y21ha2UtMy4xNS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy56aXAiPmNtYWtlLTMuMTUuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS40LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS40LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC50YXIuWiI+Y21ha2UtMy4xNS40LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LnRhci5neiI+Y21ha2UtMy4xNS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC56aXAiPmNtYWtlLTMuMTUuNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS41LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS41LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjUtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS41LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS41LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjUtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjUtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjUtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjUtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS50YXIuWiI+Y21ha2UtMy4xNS41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LnRhci5neiI+Y21ha2UtMy4xNS41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS56aXAiPmNtYWtlLTMuMTUuNS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS42LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS42LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjYtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS42LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS42LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjYtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjYtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjYtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjYtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi50YXIuWiI+Y21ha2UtMy4xNS42LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LnRhci5neiI+Y21ha2UtMy4xNS42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi56aXAiPmNtYWtlLTMuMTUuNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTYvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGY5YjQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNi9pbmRleC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjE2PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE2PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzMiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEuemlwIj5jbWFrZS0zLjE2LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTYuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLnppcCI+Y21ha2UtMy4xNi4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE2LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNi4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE2LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTYuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy56aXAiPmNtYWtlLTMuMTYuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQuemlwIj5jbWFrZS0zLjE2LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE2LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC50YXIuZ3oiPmNtYWtlLTMuMTYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAuemlwIj5jbWFrZS0zLjE2LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE2LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTMyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEudGFyLmd6Ij5jbWFrZS0zLjE2LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLnppcCI+Y21ha2UtMy4xNi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4yL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGM2YzdmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4yL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjI8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjIuMC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtMS50YXIuYnoyIj5jbWFrZS0zLjIuMC0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMi4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMi4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLnRhci5aIj5jbWFrZS0zLjIuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLnppcCI+Y21ha2UtMy4yLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLnRhci5aIj5jbWFrZS0zLjIuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLnppcCI+Y21ha2UtMy4yLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4yLjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC50YXIuWiI+Y21ha2UtMy4yLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC50YXIuZ3oiPmNtYWtlLTMuMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLnppcCI+Y21ha2UtMy4yLjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4yLjEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLTEudGFyLmJ6MiI+Y21ha2UtMy4yLjEtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjIuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4yLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4yLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMi4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjIuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjIuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEudGFyLloiPmNtYWtlLTMuMi4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEudGFyLmd6Ij5jbWFrZS0zLjIuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS56aXAiPmNtYWtlLTMuMi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4yLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4yLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4yLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjIuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjIuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4yLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLnRhci5aIj5jbWFrZS0zLjIuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLnRhci5neiI+Y21ha2UtMy4yLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjIuemlwIj5jbWFrZS0zLjIuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMi4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMi4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4yLjMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy50YXIuWiI+Y21ha2UtMy4yLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy50YXIuZ3oiPmNtYWtlLTMuMi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLnppcCI+Y21ha2UtMy4yLjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNTM3MzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjMvaW5kZXguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMzwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4zPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC0xLnRhci5iejIiPmNtYWtlLTMuMy4wLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEucGF0Y2giPmNtYWtlLTMuMy4wLXJjMS0xLnBhdGNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIDAgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEuc2giPmNtYWtlLTMuMy4wLXJjMS0xLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjVLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMxLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLnRhci5aIj5jbWFrZS0zLjMuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLnppcCI+Y21ha2UtMy4zLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzItMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi0xLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMi0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi56aXAiPmNtYWtlLTMuMy4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMzLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtMS50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMudGFyLloiPmNtYWtlLTMuMy4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMuemlwIj5jbWFrZS0zLjMuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjNC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LTEudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmM0LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LnppcCI+Y21ha2UtMy4zLjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC50YXIuWiI+Y21ha2UtMy4zLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC50YXIuZ3oiPmNtYWtlLTMuMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLnppcCI+Y21ha2UtMy4zLjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4zLjEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLTEudGFyLmJ6MiI+Y21ha2UtMy4zLjEtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4zLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjMuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEudGFyLloiPmNtYWtlLTMuMy4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEudGFyLmd6Ij5jbWFrZS0zLjMuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS56aXAiPmNtYWtlLTMuMy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4yLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi0xLnRhci5iejIiPmNtYWtlLTMuMy4yLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLnRhci5aIj5jbWFrZS0zLjMuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLnRhci5neiI+Y21ha2UtMy4zLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjIuemlwIj5jbWFrZS0zLjMuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My40L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdiNTZkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTI3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My40PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjQ8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEudGFyLloiPmNtYWtlLTMuNC4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEuemlwIj5jbWFrZS0zLjQuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi50YXIuWiI+Y21ha2UtMy40LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLnRhci5neiI+Y21ha2UtMy40LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi56aXAiPmNtYWtlLTMuNC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLnRhci5aIj5jbWFrZS0zLjQuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLnppcCI+Y21ha2UtMy40LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC50YXIuWiI+Y21ha2UtMy40LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC50YXIuZ3oiPmNtYWtlLTMuNC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLnppcCI+Y21ha2UtMy40LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS50YXIuWiI+Y21ha2UtMy40LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS50YXIuZ3oiPmNtYWtlLTMuNC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLnppcCI+Y21ha2UtMy40LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi50YXIuWiI+Y21ha2UtMy40LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi50YXIuZ3oiPmNtYWtlLTMuNC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLnppcCI+Y21ha2UtMy40LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy50YXIuWiI+Y21ha2UtMy40LjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy50YXIuZ3oiPmNtYWtlLTMuNC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLnppcCI+Y21ha2UtMy40LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9mb2xkZXIuZ2lmIiBhbHQ9IltESVJdIj48L3RkPjx0ZD48YSBocmVmPSJjeWd3aW4vIj5jeWd3aW4vPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZDRmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjUvaW5kZXguaHRtbApAQCAtMCwwICsxLDExMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuNTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My41PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjUuMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy41LjAtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy41LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNS4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjUuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMyAxMzoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS50YXIuWiI+Y21ha2UtMy41LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLnRhci5neiI+Y21ha2UtMy41LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS56aXAiPmNtYWtlLTMuNS4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi50YXIuWiI+Y21ha2UtMy41LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLnRhci5neiI+Y21ha2UtMy41LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi56aXAiPmNtYWtlLTMuNS4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy50YXIuWiI+Y21ha2UtMy41LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLnRhci5neiI+Y21ha2UtMy41LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy56aXAiPmNtYWtlLTMuNS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy41LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLnRhci5aIj5jbWFrZS0zLjUuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLnRhci5neiI+Y21ha2UtMy41LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAuemlwIj5jbWFrZS0zLjUuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy41LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy41LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjUuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy41LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNS4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS50YXIuWiI+Y21ha2UtMy41LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS50YXIuZ3oiPmNtYWtlLTMuNS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLnppcCI+Y21ha2UtMy41LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjUuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNS4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjIudGFyLloiPmNtYWtlLTMuNS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjIudGFyLmd6Ij5jbWFrZS0zLjUuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi56aXAiPmNtYWtlLTMuNS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvZm9sZGVyLmdpZiIgYWx0PSJbRElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iY3lnd2luLyI+Y3lnd2luLzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My42L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmNhM2E1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My42L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjY8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuNjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEudGFyLloiPmNtYWtlLTMuNi4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEuemlwIj5jbWFrZS0zLjYuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzIudGFyLloiPmNtYWtlLTMuNi4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzIuemlwIj5jbWFrZS0zLjYuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMudGFyLloiPmNtYWtlLTMuNi4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMuemlwIj5jbWFrZS0zLjYuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQudGFyLloiPmNtYWtlLTMuNi4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQuemlwIj5jbWFrZS0zLjYuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLnRhci5aIj5jbWFrZS0zLjYuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLnRhci5neiI+Y21ha2UtMy42LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAuemlwIj5jbWFrZS0zLjYuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLnRhci5aIj5jbWFrZS0zLjYuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLnRhci5neiI+Y21ha2UtMy42LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEuemlwIj5jbWFrZS0zLjYuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLnRhci5aIj5jbWFrZS0zLjYuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLnRhci5neiI+Y21ha2UtMy42LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjIuemlwIj5jbWFrZS0zLjYuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4zLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLnRhci5aIj5jbWFrZS0zLjYuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLnRhci5neiI+Y21ha2UtMy42LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMuemlwIj5jbWFrZS0zLjYuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2ZvbGRlci5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9ImN5Z3dpbi8iPmN5Z3dpbi88L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My43L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxMmY5MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNy9pbmRleC5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjc8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuNzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy43LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNy4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLnRhci5aIj5jbWFrZS0zLjcuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLnppcCI+Y21ha2UtMy43LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLnRhci5aIj5jbWFrZS0zLjcuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLnppcCI+Y21ha2UtMy43LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLnRhci5aIj5jbWFrZS0zLjcuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLnppcCI+Y21ha2UtMy43LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjcuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy43LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC50YXIuWiI+Y21ha2UtMy43LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC50YXIuZ3oiPmNtYWtlLTMuNy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLnppcCI+Y21ha2UtMy43LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNy4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjcuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy43LjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjcuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEudGFyLloiPmNtYWtlLTMuNy4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEudGFyLmd6Ij5jbWFrZS0zLjcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS56aXAiPmNtYWtlLTMuNy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy43LjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy43LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy43LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjcuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy43LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLnRhci5aIj5jbWFrZS0zLjcuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLnRhci5neiI+Y21ha2UtMy43LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjIuemlwIj5jbWFrZS0zLjcuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My44L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZjOGNhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My44PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjg8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjguMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjguMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS50YXIuWiI+Y21ha2UtMy44LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLnRhci5neiI+Y21ha2UtMy44LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS56aXAiPmNtYWtlLTMuOC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMTA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAxMDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMTA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAwOTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi50YXIuWiI+Y21ha2UtMy44LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAwOTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLnRhci5neiI+Y21ha2UtMy44LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi56aXAiPmNtYWtlLTMuOC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy50YXIuWiI+Y21ha2UtMy44LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLnRhci5neiI+Y21ha2UtMy44LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy56aXAiPmNtYWtlLTMuOC4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC50YXIuWiI+Y21ha2UtMy44LjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LnRhci5neiI+Y21ha2UtMy44LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC56aXAiPmNtYWtlLTMuOC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOC4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAudGFyLloiPmNtYWtlLTMuOC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAudGFyLmd6Ij5jbWFrZS0zLjguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC56aXAiPmNtYWtlLTMuOC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjguMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLnRhci5aIj5jbWFrZS0zLjguMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLnRhci5neiI+Y21ha2UtMy44LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEuemlwIj5jbWFrZS0zLjguMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy44LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOC4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOC4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi50YXIuWiI+Y21ha2UtMy44LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi50YXIuZ3oiPmNtYWtlLTMuOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLnppcCI+Y21ha2UtMy44LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjkvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MTgyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjkvaW5kZXguaHRtbApAQCAtMCwwICsxLDE4MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuOTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My45PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEudGFyLloiPmNtYWtlLTMuOS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEuemlwIj5jbWFrZS0zLjkuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzIudGFyLloiPmNtYWtlLTMuOS4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzIuemlwIj5jbWFrZS0zLjkuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMudGFyLloiPmNtYWtlLTMuOS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMuemlwIj5jbWFrZS0zLjkuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQudGFyLloiPmNtYWtlLTMuOS4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQuemlwIj5jbWFrZS0zLjkuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzUtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM1LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUudGFyLloiPmNtYWtlLTMuOS4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUuemlwIj5jbWFrZS0zLjkuMC1yYzUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM2LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYudGFyLloiPmNtYWtlLTMuOS4wLXJjNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYuemlwIj5jbWFrZS0zLjkuMC1yYzYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLnRhci5aIj5jbWFrZS0zLjkuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLnRhci5neiI+Y21ha2UtMy45LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAuemlwIj5jbWFrZS0zLjkuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS50YXIuWiI+Y21ha2UtMy45LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS50YXIuZ3oiPmNtYWtlLTMuOS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLnppcCI+Y21ha2UtMy45LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjIudGFyLloiPmNtYWtlLTMuOS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjIudGFyLmd6Ij5jbWFrZS0zLjkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi56aXAiPmNtYWtlLTMuOS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLnRhci5aIj5jbWFrZS0zLjkuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLnRhci5neiI+Y21ha2UtMy45LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMuemlwIj5jbWFrZS0zLjkuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS40LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS40LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC50YXIuWiI+Y21ha2UtMy45LjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC50YXIuZ3oiPmNtYWtlLTMuOS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LnppcCI+Y21ha2UtMy45LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS41LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS41LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS41LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjUtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS41LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUudGFyLloiPmNtYWtlLTMuOS41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUudGFyLmd6Ij5jbWFrZS0zLjkuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS56aXAiPmNtYWtlLTMuOS41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjYtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjYtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjYtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjYtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuNi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjYtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LnRhci5aIj5jbWFrZS0zLjkuNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LnRhci5neiI+Y21ha2UtMy45LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYuemlwIj5jbWFrZS0zLjkuNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2Q5MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6MzUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6MzkgICAgICAgLQ0KKzxhIGhyZWY9InNoYTI1NnN1bXMuYXNjIj5zaGEyNTZzdW1zLmFzYzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTA6NTMgICAgMjk0Mg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzEudGFyLmJ6MiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjMtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzIudGFyLmJ6MiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjMtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy4xLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1NyAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjMuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci54eiI+dXRpbC1saW51eC0yLjIzLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU3ICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjMuMi50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4yLnRhci5neiI+dXRpbC1saW51eC0yLjIzLjIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjIzLjIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICA4MzYNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIueHoiPnV0aWwtbGludXgtMi4yMy4yLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci5neiI+dXRpbC1saW51eC0yLjIzLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yMy50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci54eiI+dXRpbC1saW51eC0yLjIzLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICAgM00NCis8YSBocmVmPSJ2Mi4yMy1DaGFuZ2VMb2ciPnYyLjIzLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgMTlLDQorPGEgaHJlZj0idjIuMjMtQ2hhbmdlTG9nLnNpZ24iPnYyLjIzLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgODM2DQorPGEgaHJlZj0idjIuMjMtUmVsZWFzZU5vdGVzIj52Mi4yMy1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDUzSw0KKzxhIGhyZWY9InYyLjIzLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yMy1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLXJjMS1DaGFuZ2VMb2ciPnYyLjIzLXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1NYXItMjAxMyAxMjo0OCAgICAzNjFLDQorPGEgaHJlZj0idjIuMjMtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yMy1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLXJjMi1DaGFuZ2VMb2ciPnYyLjIzLXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC1BcHItMjAxMyAyMjoxNCAgICAgODBLDQorPGEgaHJlZj0idjIuMjMtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4yMy1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLjEtQ2hhbmdlTG9nIj52Mi4yMy4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgIDEzSw0KKzxhIGhyZWY9InYyLjIzLjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjIzLjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1NyAgICAgODM2DQorPGEgaHJlZj0idjIuMjMuMS1SZWxlYXNlTm90ZXMiPnYyLjIzLjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1OCAgICAxNDQ4DQorPGEgaHJlZj0idjIuMjMuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjMuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU4ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yMy4yLUNoYW5nZUxvZyI+djIuMjMuMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICAyM0sNCis8YSBocmVmPSJ2Mi4yMy4yLUNoYW5nZUxvZy5zaWduIj52Mi4yMy4yLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLjItUmVsZWFzZU5vdGVzIj52Mi4yMy4yLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgMjU4Mg0KKzxhIGhyZWY9InYyLjIzLjItUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjIzLjItUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgODM2DQorPC9wcmU+PGhyPjwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZmI0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+DQorPGhlYWQ+PHRpdGxlPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC88L3RpdGxlPjwvaGVhZD4NCis8Ym9keT4NCis8aDE+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI0LzwvaDE+PGhyPjxwcmU+PGEgaHJlZj0iLi4vIj4uLi88L2E+DQorPGEgaHJlZj0ibGliYmxraWQtZG9jcy8iPmxpYmJsa2lkLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNSAgICAgICAtDQorPGEgaHJlZj0ibGlibW91bnQtZG9jcy8iPmxpYm1vdW50LWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1MyAgICAyNzU4DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMS50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC1yYzEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNy1TZXAtMjAxMyAxMjo1NCAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMS50YXIueHoiPnV0aWwtbGludXgtMi4yNC1yYzEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNy1TZXAtMjAxMyAxMjo1NCAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMi50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxMS1PY3QtMjAxMyAxMTozNyAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMS1PY3QtMjAxMyAxMTozNyAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4xLnRhci54eiI+dXRpbC1saW51eC0yLjI0LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjQuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTcgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIuZ3oiPnV0aWwtbGludXgtMi4yNC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIueHoiPnV0aWwtbGludXgtMi4yNC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgIDNNDQorPGEgaHJlZj0idjIuMjQtQ2hhbmdlTG9nIj52Mi4yNC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDIySw0KKzxhIGhyZWY9InYyLjI0LUNoYW5nZUxvZy5zaWduIj52Mi4yNC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDgzNg0KKzxhIGhyZWY9InYyLjI0LVJlbGVhc2VOb3RlcyI+djIuMjQtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA0NEsNCis8YSBocmVmPSJ2Mi4yNC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjQtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC1yYzEtQ2hhbmdlTG9nIj52Mi4yNC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgMjkySw0KKzxhIGhyZWY9InYyLjI0LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjQtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LVNlcC0yMDEzIDEyOjU0ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC1yYzItQ2hhbmdlTG9nIj52Mi4yNC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgIDQySw0KKzxhIGhyZWY9InYyLjI0LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjQtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU9jdC0yMDEzIDExOjM3ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC4xLUNoYW5nZUxvZyI+djIuMjQuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICAzOEsNCis8YSBocmVmPSJ2Mi4yNC4xLUNoYW5nZUxvZy5zaWduIj52Mi4yNC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI0LjEtUmVsZWFzZU5vdGVzIj52Mi4yNC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgNDQ0OQ0KKzxhIGhyZWY9InYyLjI0LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI0LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNCAxMzozMyAgICAgODE5DQorPGEgaHJlZj0idjIuMjQuMi1DaGFuZ2VMb2ciPnYyLjI0LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgNDdLDQorPGEgaHJlZj0idjIuMjQuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjQuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNC4yLVJlbGVhc2VOb3RlcyI+djIuMjQuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE4ICAgIDU3NDgNCis8YSBocmVmPSJ2Mi4yNC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTggICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTE2YzNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjUzICAgIDI3NTgNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI1LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE4LUp1bi0yMDE0IDEzOjMzICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjUtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgIDI3LUF1Zy0yMDE0IDEzOjE4ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMS1yYzEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS4xLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgIDI3LUF1Zy0yMDE0IDEzOjE4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNS4xLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS4xLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUuMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS4yLnRhci5neiI+dXRpbC1saW51eC0yLjI1LjIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI1LjIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMi50YXIueHoiPnV0aWwtbGludXgtMi4yNS4yLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LnRhci5neiI+dXRpbC1saW51eC0yLjI1LnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LnRhci54eiI+dXRpbC1saW51eC0yLjI1LnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICAgNE0NCis8YSBocmVmPSJ2Mi4yNS1DaGFuZ2VMb2ciPnYyLjI1LUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgNDFLDQorPGEgaHJlZj0idjIuMjUtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgODE5DQorPGEgaHJlZj0idjIuMjUtUmVsZWFzZU5vdGVzIj52Mi4yNS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDYxSw0KKzxhIGhyZWY9InYyLjI1LVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LXJjMS1DaGFuZ2VMb2ciPnYyLjI1LXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC1KdW4tMjAxNCAxMzozMyAgICA0ODlLDQorPGEgaHJlZj0idjIuMjUtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yNS1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LXJjMi1DaGFuZ2VMb2ciPnYyLjI1LXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgMjdLDQorPGEgaHJlZj0idjIuMjUtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4yNS1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LjEtQ2hhbmdlTG9nIj52Mi4yNS4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgNTgxNg0KKzxhIGhyZWY9InYyLjI1LjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMS1SZWxlYXNlTm90ZXMiPnYyLjI1LjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo1MiAgICAzMjIwDQorPGEgaHJlZj0idjIuMjUuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjUuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDAzLVNlcC0yMDE0IDEwOjUyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS4xLXJjMS1DaGFuZ2VMb2ciPnYyLjI1LjEtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgMjJLDQorPGEgaHJlZj0idjIuMjUuMS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LjEtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMi1DaGFuZ2VMb2ciPnYyLjI1LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgMjZLDQorPGEgaHJlZj0idjIuMjUuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjUuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS4yLVJlbGVhc2VOb3RlcyI+djIuMjUuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgIDMwMTYNCis8YSBocmVmPSJ2Mi4yNS4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNS4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDggICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTkxNDg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNi9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNi88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6MzggICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQzICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU0ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI2LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NDkgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNi1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwNC1GZWItMjAxNSAxMTo0OSAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNi1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwNC1GZWItMjAxNSAxMTo0OSAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4xLnRhci54eiI+dXRpbC1saW51eC0yLjI2LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNi4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNi4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi50YXIueHoiPnV0aWwtbGludXgtMi4yNi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgIDRNDQorPGEgaHJlZj0idjIuMjYtQ2hhbmdlTG9nIj52Mi4yNi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDMwSw0KKzxhIGhyZWY9InYyLjI2LUNoYW5nZUxvZy5zaWduIj52Mi4yNi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI2LVJlbGVhc2VOb3RlcyI+djIuMjYtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA1MUsNCis8YSBocmVmPSJ2Mi4yNi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjYtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi1yYzEtQ2hhbmdlTG9nIj52Mi4yNi1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgMzYwSw0KKzxhIGhyZWY9InYyLjI2LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjYtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi1yYzItQ2hhbmdlTG9nIj52Mi4yNi1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NTAgICAgIDUxSw0KKzxhIGhyZWY9InYyLjI2LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjYtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA0LUZlYi0yMDE1IDExOjUwICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi4xLUNoYW5nZUxvZyI+djIuMjYuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICAzMksNCis8YSBocmVmPSJ2Mi4yNi4xLUNoYW5nZUxvZy5zaWduIj52Mi4yNi4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI2LjEtUmVsZWFzZU5vdGVzIj52Mi4yNi4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgMjk0NA0KKzxhIGhyZWY9InYyLjI2LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI2LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1NYXItMjAxNSAxNDoyMyAgICAgODE5DQorPGEgaHJlZj0idjIuMjYuMi1DaGFuZ2VMb2ciPnYyLjI2LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgNThLDQorPGEgaHJlZj0idjIuMjYuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjYuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi4yLVJlbGVhc2VOb3RlcyI+djIuMjYuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgIDU4MzQNCis8YSBocmVmPSJ2Mi4yNi4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNi4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGViMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDEgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDMgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU0ICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI3LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjctcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTUgMTE6MDEgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjctcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTUgMTE6MDEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjctcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXVnLTIwMTUgMTE6MDQgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNy1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNy1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjcuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjcuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy4xLnRhci54eiI+dXRpbC1saW51eC0yLjI3LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjcudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI3LnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjcudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgICA0TQ0KKzxhIGhyZWY9InYyLjI3LUNoYW5nZUxvZyI+djIuMjctQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4yNy1DaGFuZ2VMb2cuc2lnbiI+djIuMjctQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNy1SZWxlYXNlTm90ZXMiPnYyLjI3LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgMzVLDQorPGEgaHJlZj0idjIuMjctUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI3LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgODE5DQorPGEgaHJlZj0idjIuMjctcmMxLUNoYW5nZUxvZyI+djIuMjctcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgIDI2M0sNCis8YSBocmVmPSJ2Mi4yNy1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxNSAxMTowMSAgICAgODE5DQorPGEgaHJlZj0idjIuMjctcmMyLUNoYW5nZUxvZyI+djIuMjctcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUF1Zy0yMDE1IDExOjA0ICAgICAzOEsNCis8YSBocmVmPSJ2Mi4yNy1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgODE5DQorPGEgaHJlZj0idjIuMjcuMS1DaGFuZ2VMb2ciPnYyLjI3LjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1Ob3YtMjAxNSAxMTowNiAgICAgMThLDQorPGEgaHJlZj0idjIuMjcuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjcuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNy4xLVJlbGVhc2VOb3RlcyI+djIuMjcuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgIDIxMDcNCis8YSBocmVmPSJ2Mi4yNy4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNy4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJhNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU1ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI4LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjgtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjgtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyOS1NYXItMjAxNiAwOTowNCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yOC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyOS1NYXItMjAxNiAwOTowNCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjguMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjguMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4xLnRhci54eiI+dXRpbC1saW51eC0yLjI4LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjguMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yOC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjguMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC50YXIuZ3oiPnV0aWwtbGludXgtMi4yOC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjgudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC50YXIueHoiPnV0aWwtbGludXgtMi4yOC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgIDRNDQorPGEgaHJlZj0idjIuMjgtQ2hhbmdlTG9nIj52Mi4yOC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDEzSw0KKzxhIGhyZWY9InYyLjI4LUNoYW5nZUxvZy5zaWduIj52Mi4yOC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI4LVJlbGVhc2VOb3RlcyI+djIuMjgtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICAzM0sNCis8YSBocmVmPSJ2Mi4yOC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjgtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC1yYzEtQ2hhbmdlTG9nIj52Mi4yOC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgMjY5Sw0KKzxhIGhyZWY9InYyLjI4LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjgtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC1yYzItQ2hhbmdlTG9nIj52Mi4yOC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgIDUySw0KKzxhIGhyZWY9InYyLjI4LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjgtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LU1hci0yMDE2IDA5OjA0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC4xLUNoYW5nZUxvZyI+djIuMjguMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICAzN0sNCis8YSBocmVmPSJ2Mi4yOC4xLUNoYW5nZUxvZy5zaWduIj52Mi4yOC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI4LjEtUmVsZWFzZU5vdGVzIj52Mi4yOC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgMzc0OA0KKzxhIGhyZWY9InYyLjI4LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI4LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1BdWctMjAxNiAxMDowOSAgICAgODE5DQorPGEgaHJlZj0idjIuMjguMi1DaGFuZ2VMb2ciPnYyLjI4LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICA4OTAwDQorPGEgaHJlZj0idjIuMjguMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjguMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC4yLVJlbGVhc2VOb3RlcyI+djIuMjguMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgIDExNjENCis8YSBocmVmPSJ2Mi4yOC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTZhMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU1ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI5LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjktcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjktcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjktcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNiAxMzoxMyAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yOS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNiAxMzoxMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjkuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjkuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4xLnRhci54eiI+dXRpbC1saW51eC0yLjI5LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjkuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yOS4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOS4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjkuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS50YXIuZ3oiPnV0aWwtbGludXgtMi4yOS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyMyAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjkudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS50YXIueHoiPnV0aWwtbGludXgtMi4yOS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyMyAgICAgIDRNDQorPGEgaHJlZj0idjIuMjktQ2hhbmdlTG9nIj52Mi4yOS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDI4Sw0KKzxhIGhyZWY9InYyLjI5LUNoYW5nZUxvZy5zaWduIj52Mi4yOS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI5LVJlbGVhc2VOb3RlcyI+djIuMjktUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjI0ICAgICAyNksNCis8YSBocmVmPSJ2Mi4yOS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjktUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjI0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS1yYzEtQ2hhbmdlTG9nIj52Mi4yOS1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgMjE5Sw0KKzxhIGhyZWY9InYyLjI5LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjktcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS1yYzItQ2hhbmdlTG9nIj52Mi4yOS1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgIDE5Sw0KKzxhIGhyZWY9InYyLjI5LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjktcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE2IDEzOjEzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS4xLUNoYW5nZUxvZyI+djIuMjkuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICA0N0sNCis8YSBocmVmPSJ2Mi4yOS4xLUNoYW5nZUxvZy5zaWduIj52Mi4yOS4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI5LjEtUmVsZWFzZU5vdGVzIj52Mi4yOS4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgNTA2Nw0KKzxhIGhyZWY9InYyLjI5LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI5LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNyAxNDowMiAgICAgODE5DQorPGEgaHJlZj0idjIuMjkuMi1DaGFuZ2VMb2ciPnYyLjI5LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgMTRLDQorPGEgaHJlZj0idjIuMjkuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjkuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS4yLVJlbGVhc2VOb3RlcyI+djIuMjkuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgIDIwMTINCis8YSBocmVmPSJ2Mi4yOS4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOS4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDQxYmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NDkgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUyICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMwLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEyOjAyICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTI6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTI6MDIgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4xLnRhci54eiI+dXRpbC1saW51eC0yLjMwLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4zMC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC50YXIuZ3oiPnV0aWwtbGludXgtMi4zMC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC50YXIueHoiPnV0aWwtbGludXgtMi4zMC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgIDRNDQorPGEgaHJlZj0idjIuMzAtQ2hhbmdlTG9nIj52Mi4zMC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDI4Sw0KKzxhIGhyZWY9InYyLjMwLUNoYW5nZUxvZy5zaWduIj52Mi4zMC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjMwLVJlbGVhc2VOb3RlcyI+djIuMzAtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICAzNEsNCis8YSBocmVmPSJ2Mi4zMC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzAtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC1yYzEtQ2hhbmdlTG9nIj52Mi4zMC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgMzE4Sw0KKzxhIGhyZWY9InYyLjMwLXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzAtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC1yYzItQ2hhbmdlTG9nIj52Mi4zMC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgIDE5Sw0KKzxhIGhyZWY9InYyLjMwLXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzAtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC4xLUNoYW5nZUxvZyI+djIuMzAuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICAyMEsNCis8YSBocmVmPSJ2Mi4zMC4xLUNoYW5nZUxvZy5zaWduIj52Mi4zMC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjMwLjEtUmVsZWFzZU5vdGVzIj52Mi4zMC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgMTkwMQ0KKzxhIGhyZWY9InYyLjMwLjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMwLjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KdWwtMjAxNyAwOTozMyAgICAgODE5DQorPGEgaHJlZj0idjIuMzAuMi1DaGFuZ2VMb2ciPnYyLjMwLjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgMTNLDQorPGEgaHJlZj0idjIuMzAuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzAuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMC4yLVJlbGVhc2VOb3RlcyI+djIuMzAuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgIDE2MDQNCis8YSBocmVmPSJ2Mi4zMC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdlNGUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE3ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjIwICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMxLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjItU2VwLTIwMTcgMTA6MzkgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzEtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjItU2VwLTIwMTcgMTA6MzkgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTcgMTY6MDMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzEuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS4xLnRhci54eiI+dXRpbC1saW51eC0yLjMxLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMxLUNoYW5nZUxvZyI+djIuMzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICAxNUsNCis8YSBocmVmPSJ2Mi4zMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMS1SZWxlYXNlTm90ZXMiPnYyLjMxLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgMzFLDQorPGEgaHJlZj0idjIuMzEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMxLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgODMzDQorPGEgaHJlZj0idjIuMzEtcmMxLUNoYW5nZUxvZyI+djIuMzEtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgIDI5MEsNCis8YSBocmVmPSJ2Mi4zMS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1TZXAtMjAxNyAxMDozOSAgICAgODMzDQorPGEgaHJlZj0idjIuMzEtcmMyLUNoYW5nZUxvZyI+djIuMzEtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAzLU9jdC0yMDE3IDE2OjAzICAgICAxMksNCis8YSBocmVmPSJ2Mi4zMS1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgODMzDQorPGEgaHJlZj0idjIuMzEuMS1DaGFuZ2VMb2ciPnYyLjMxLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToxOCAgICAgMjdLDQorPGEgaHJlZj0idjIuMzEuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzEuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMS4xLVJlbGVhc2VOb3RlcyI+djIuMzEuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgIDMxNzUNCis8YSBocmVmPSJ2Mi4zMS4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMS4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzczZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMi9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMi88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjggICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjggICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI4ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjMwICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMyLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzItcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTMtRmViLTIwMTggMTI6MjUgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzItcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTMtRmViLTIwMTggMTI6MjUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzItcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDEtTWFyLTIwMTggMTM6MzggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMi1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMi1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzIuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzIuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi4xLnRhci54eiI+dXRpbC1saW51eC0yLjMyLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMyLUNoYW5nZUxvZyI+djIuMzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICAzNksNCis8YSBocmVmPSJ2Mi4zMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMi1SZWxlYXNlTm90ZXMiPnYyLjMyLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgMjFLDQorPGEgaHJlZj0idjIuMzItUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMyLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgODMzDQorPGEgaHJlZj0idjIuMzItcmMxLUNoYW5nZUxvZyI+djIuMzItcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgIDE3NEsNCis8YSBocmVmPSJ2Mi4zMi1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1GZWItMjAxOCAxMjoyNSAgICAgODMzDQorPGEgaHJlZj0idjIuMzItcmMyLUNoYW5nZUxvZyI+djIuMzItcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxLU1hci0yMDE4IDEzOjM4ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4zMi1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgODMzDQorPGEgaHJlZj0idjIuMzIuMS1DaGFuZ2VMb2ciPnYyLjMyLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMToyOSAgICAgMzFLDQorPGEgaHJlZj0idjIuMzIuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzIuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMi4xLVJlbGVhc2VOb3RlcyI+djIuMzIuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgIDM0MjUNCis8YSBocmVmPSJ2Mi4zMi4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMi4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDk1MzA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMy9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDE0OjAxICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMzLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMy1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxOCAxMTo0NCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMy1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxOCAxMTo0NCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4xLnRhci54eiI+dXRpbC1saW51eC0yLjMzLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4zMy4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgMTBNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMy4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy50YXIuZ3oiPnV0aWwtbGludXgtMi4zMy50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy50YXIueHoiPnV0aWwtbGludXgtMi4zMy50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgIDRNDQorPGEgaHJlZj0idjIuMzMtQ2hhbmdlTG9nIj52Mi4zMy1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgNzk3Nw0KKzxhIGhyZWY9InYyLjMzLUNoYW5nZUxvZy5zaWduIj52Mi4zMy1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMzLVJlbGVhc2VOb3RlcyI+djIuMzMtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICAyN0sNCis8YSBocmVmPSJ2Mi4zMy1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzMtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy1yYzEtQ2hhbmdlTG9nIj52Mi4zMy1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgMjEwSw0KKzxhIGhyZWY9InYyLjMzLXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzMtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy1yYzItQ2hhbmdlTG9nIj52Mi4zMy1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgIDE4Sw0KKzxhIGhyZWY9InYyLjMzLXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzMtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE4IDExOjQ0ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy4xLUNoYW5nZUxvZyI+djIuMzMuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICAxN0sNCis8YSBocmVmPSJ2Mi4zMy4xLUNoYW5nZUxvZy5zaWduIj52Mi4zMy4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgIDgzMw0KKzxhIGhyZWY9InYyLjMzLjEtUmVsZWFzZU5vdGVzIj52Mi4zMy4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgMTg5OQ0KKzxhIGhyZWY9InYyLjMzLjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMzLjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1KYW4tMjAxOSAxMDoyOCAgICAgODMzDQorPGEgaHJlZj0idjIuMzMuMi1DaGFuZ2VMb2ciPnYyLjMzLjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgMjFLDQorPGEgaHJlZj0idjIuMzMuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzMuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy4yLVJlbGVhc2VOb3RlcyI+djIuMzMuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgIDI1NjYNCis8YSBocmVmPSJ2Mi4zMy4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMy4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDlkOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjUxICAgIDE3NzQNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjM0LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE5IDEwOjI0ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzQtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzQtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDEwTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zNC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zNC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LnRhci5neiI+dXRpbC1saW51eC0yLjM0LnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zNC50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LnRhci54eiI+dXRpbC1saW51eC0yLjM0LnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAgNU0NCis8YSBocmVmPSJ2Mi4zNC1DaGFuZ2VMb2ciPnYyLjM0LUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgMTRLDQorPGEgaHJlZj0idjIuMzQtQ2hhbmdlTG9nLnNpZ24iPnYyLjM0LUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgODMzDQorPGEgaHJlZj0idjIuMzQtUmVsZWFzZU5vdGVzIj52Mi4zNC1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDI3Sw0KKzxhIGhyZWY9InYyLjM0LVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zNC1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDgzMw0KKzxhIGhyZWY9InYyLjM0LXJjMS1DaGFuZ2VMb2ciPnYyLjM0LXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxOSAxMDoyNCAgICAxNjdLDQorPGEgaHJlZj0idjIuMzQtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4zNC1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgIDgzMw0KKzxhIGhyZWY9InYyLjM0LXJjMi1DaGFuZ2VMb2ciPnYyLjM0LXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgNTdLDQorPGEgaHJlZj0idjIuMzQtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4zNC1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTcxNGQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA1ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjExICAgIDEyNDINCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjM1LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzUtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgICA1TQ0KKzxhIGhyZWY9InYyLjM1LVJlbGVhc2VOb3RlcyI+djIuMzUtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4zNS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzUtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zNS1yYzEtQ2hhbmdlTG9nIj52Mi4zNS1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgMjI4Sw0KKzxhIGhyZWY9InYyLjM1LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzUtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2VnbGliYy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9lZ2xpYmMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjY3OTQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9lZ2xpYmMvaW5kZXguaHRtbApAQCAtMCwwICsxLDIxIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3JlbGVhc2VzL2VnbGliYy88L3RpdGxlPjwvaGVhZD4NCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+DQorPGgxPkluZGV4IG9mIC9yZWxlYXNlcy9lZ2xpYmMvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJlZ2xpYmMtMi4xNi1zdm5yMjEyMjQudGFyLmJ6MiI+ZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgIDE3LU9jdC0yMDEyIDE4OjAxICAgICAgICAgICAgMTczMTA2NTYNCis8YSBocmVmPSJlZ2xpYmMtMi4xNi1zdm5yMjEyMjQudGFyLmJ6Mi5tZDUiPmVnbGliYy0yLjE2LXN2bnIyMTIyNC50YXIuYnoyLm1kNTwvYT4gICAgICAgICAgICAgICAgICAxNy1PY3QtMjAxMiAyMTo1MyAgICAgICAgICAgICAgICAgIDY0DQorPGEgaHJlZj0iZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIuc2hhMSI+ZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIuc2hhMTwvYT4gICAgICAgICAgICAgICAgIDE3LU9jdC0yMDEyIDIxOjUzICAgICAgICAgICAgICAgICAgNzINCis8YSBocmVmPSJlZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6MiI+ZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgIDA0LUphbi0yMDEzIDA1OjQ0ICAgICAgICAgICAgMTc1NjU1MTkNCis8YSBocmVmPSJlZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5hc2MiPmVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLmFzYzwvYT4gICAgICAgICAgICAgICAgICAwNC1KYW4tMjAxMyAwNTo0NSAgICAgICAgICAgICAgICAgMzAyDQorPGEgaHJlZj0iZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejIubWQ1Ij5lZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5tZDU8L2E+ICAgICAgICAgICAgICAgICAgMDQtSmFuLTIwMTMgMDU6NDQgICAgICAgICAgICAgICAgICA2NA0KKzxhIGhyZWY9ImVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLnNoYTEiPmVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLnNoYTE8L2E+ICAgICAgICAgICAgICAgICAwNC1KYW4tMjAxMyAwNTo0NCAgICAgICAgICAgICAgICAgIDcyDQorPGEgaHJlZj0iZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIiPmVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAyMS1BdWctMjAxMyAwNTozNiAgICAgICAgICAgIDE3ODYyNzczDQorPGEgaHJlZj0iZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIuYXNjIj5lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5hc2M8L2E+ICAgICAgICAgICAgICAgICAgMjEtQXVnLTIwMTMgMDU6MzYgICAgICAgICAgICAgICAgIDMwMg0KKzxhIGhyZWY9ImVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyLm1kNSI+ZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIubWQ1PC9hPiAgICAgICAgICAgICAgICAgIDIxLUF1Zy0yMDEzIDA1OjM2ICAgICAgICAgICAgICAgICAgNjQNCis8YSBocmVmPSJlZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5zaGExIj5lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5zaGExPC9hPiAgICAgICAgICAgICAgICAgMjEtQXVnLTIwMTMgMDU6MzYgICAgICAgICAgICAgICAgICA3Mg0KKzxhIGhyZWY9ImVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyIj5lZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgMDgtRmViLTIwMTQgMTA6MDYgICAgICAgICAgICAxODg3MzYyMA0KKzxhIGhyZWY9ImVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLmFzYyI+ZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuYXNjPC9hPiAgICAgICAgICAgICAgICAgIDA4LUZlYi0yMDE0IDEwOjA2ICAgICAgICAgICAgICAgICAyODUNCis8YSBocmVmPSJlZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6Mi5tZDUiPmVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLm1kNTwvYT4gICAgICAgICAgICAgICAgICAwOC1GZWItMjAxNCAxMDowNiAgICAgICAgICAgICAgICAgIDY0DQorPGEgaHJlZj0iZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuc2hhMSI+ZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuc2hhMTwvYT4gICAgICAgICAgICAgICAgIDA4LUZlYi0yMDE0IDEwOjA2ICAgICAgICAgICAgICAgICAgNzINCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2dudS1jb25maWcvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcmVsZWFzZXMvZ251LWNvbmZpZy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MWFhNDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2dudS1jb25maWcvaW5kZXguaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcmVsZWFzZXMvZ251LWNvbmZpZy88L3RpdGxlPjwvaGVhZD4NCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+DQorPGgxPkluZGV4IG9mIC9yZWxlYXNlcy9nbnUtY29uZmlnLzwvaDE+PGhyPjxwcmU+PGEgaHJlZj0iLi4vIj4uLi88L2E+DQorPGEgaHJlZj0iU0hBMjU2U1VNIj5TSEEyNTZTVU08L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTIgMTc6MjMgICAgICAgICAgICAgICAgIDE5MA0KKzxhIGhyZWY9ImdudS1jb25maWctMjAxMjA4MTQudGFyLmJ6MiI+Z251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDE4LVNlcC0yMDEyIDA5OjI4ICAgICAgICAgICAgICAgNDMwMjYNCis8YSBocmVmPSJnbnUtY29uZmlnLXlvY3RvLTIwMTExMTExLnRneiI+Z251LWNvbmZpZy15b2N0by0yMDExMTExMS50Z3o8L2E+ICAgICAgICAgICAgICAgICAgICAgIDA4LU1heS0yMDEyIDIxOjExICAgICAgICAgICAgICAgNDg3NjINCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlci9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmUwZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIvaW5kZXguaHRtbApAQCAtMCwwICsxLDYwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlcjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL3JlbGVhc2VzL2luZGl2aWR1YWwvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAxLTE4IDIzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDEtMTggMjM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAzLTIwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDMtMjAgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTAyIDAwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDQtMDIgMDA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0wNyAyMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0wNyAyMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjAuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTI4IDIzOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTI4IDIzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMTIgMjA6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMTIgMjA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA1LTIyIDIzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMjIgMjM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA3LTA4IDAwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDctMDggMDA6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMC0xMyAyMzowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMC0xMyAyMzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTEzIDIyOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTEzIDIyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTItMDIgMDA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTItMDIgMDA6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAxLTIzIDA2OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDEtMjMgMDY6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTAyIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTEtMDIgMDM6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0wNSAwNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0wNSAwNToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTE0IDE5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTE0IDE5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMjcgMDU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMjcgMDU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNjozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNjoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTA2IDA3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTA1LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTA2IDA2OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuMC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy4wLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMjAgMDI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy4wLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjMuMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMjAgMDI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy45OS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy45OS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA4LTAxIDA1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMy45OS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDgtMDEgMDU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA5LTAxIDAzOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDktMDEgMDM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTEyLTEyIDIwOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMC45MC50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMTItMTIgMjA6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTEwIDE1OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMTAgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTExIDE1OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMTEgMTU6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0wNiAwNToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0wNiAwNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA1LTIyIDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA1LTIyIDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuNC45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMTU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMTU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0zMCAyMDozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0zMCAyMDozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuOTkuOTA2LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA3LTIzIDE4OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA2LnRhci5neiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA3LTIzIDE4OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA5LTA2IDA5OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wOS0wNiAwOToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMDMgMjM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wOS0wMyAyMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMjMgMTk6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wOS0yMyAxOToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTAtMTAgMTk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMC0xMCAxOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMDUgMjA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMS0wNSAyMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMjYgMDc6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMS0yNiAwNzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMDMgMDg6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMi0wMyAwODowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMTAgMDY6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMi0xMCAwNjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjUuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTEyIDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTEyIDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMzEgMDU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMzEgMDU6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0xOCAwNjozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0xOCAwNjozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDItMjUgMjA6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0yNSAyMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNS0wOSAwNTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDUtMDkgMDU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDYtMjkgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA2LTI5IDIzOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNC0xNCAyMDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA0LTE0IDIwOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA3LTI2IDIxOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNy0yNiAyMTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDctMDcgMjM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNy0wNyAyMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOC0yNiAwNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDgtMjYgMDU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA4LTAxIDA2OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDgtMDEgMDY6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMDMgMDc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTAzIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0yOCAwMjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTI4IDAyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xMiAwNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTEyIDA1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi45OS45MDAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMDQgMDc6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMDQgMDc6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0xNCAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0xNCAxMDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTIyIDA0OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTIyIDA0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMjggMTE6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMjggMTE6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMTIgMDQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTEyIDA0OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTE5IDAyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xOSAwMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMDIgMDY6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0wMiAwNjoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0wNiAwNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMDYgMDU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMjAgMDU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTIwIDA1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0yMyAwNTo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTIzIDA1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0yNyAwNTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTI3IDA1OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTExIDA2OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0xMSAwNjo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4zLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0yNiAwMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMjYgMDE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTAzIDAzOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMDMgMDM6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDEtMjMgMDA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAxLTIzIDAwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjQuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTA1IDA4OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wNSAwODozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDEtMDggMDE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMS0wOCAwMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy41LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0wNSAwMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMDUgMDA6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMTIgMDc6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTEyIDA3OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xNiAwMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTE2IDAzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjYuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTEyIDAyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0xMiAwMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy42LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0yMSAwMDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMjEgMDA6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy42LnRhci5iejIiPnhvcmctc2VydmVyLTEuNy42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTE3IDAxOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMTcgMDE6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy43LnRhci5iejIiPnhvcmctc2VydmVyLTEuNy43LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA1LTA0IDA3OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMDQgMDc6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy45OS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTIxIDE2OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMjEgMTY6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTIwIDAzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMjAgMDM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xMiAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xMiAyMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTIyIDA1OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTIyIDA1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTI3IDA1OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0yNyAwNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4wLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0wNCAwMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMDQgMDA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTAyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDIgMDc6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMDIgMDA6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTAyIDAwOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTIxIDAyOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMSAwMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMTEgMjE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0xMSAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMDEgMDU6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNy0wMSAwNToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTE1IDIxOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTE1IDIxOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMiAxOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMiAxOTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTAxIDEzOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTAxIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMTQgMTk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMTQgMTk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0xMyAwNjoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0xMyAwNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0wMSAyMToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMDEgMjE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMTUgMTg6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTE1IDE4OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0yMSAwMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA4LTIxIDAwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0yNCAwMzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTI0IDAzOjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTE0IDAwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0xNCAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNCAxOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMDQgMTk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTMxIDIzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMzEgMjM6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDEtMDggMjE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAxLTA4IDIxOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAxLTMxIDAxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMS0zMSAwMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMTMgMjA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0xMyAyMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS40LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0wNCAyMzoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMDQgMjM6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuOS40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTA0IDIwOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMDQgMjA6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS41LnRhci5iejIiPnhvcmctc2VydmVyLTEuOS41LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAzLTE3IDIxOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMTcgMjE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNyAwNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNyAwNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE4IDIyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE4IDIyOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMjUgMDY6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMjUgMDY6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0yOSAwNzozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0yOSAwNzozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTA4IDIzOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTA4IDIzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTI2IDA1OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0yNiAwNTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTA2IDIyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTA2IDIyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjEgMDY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjEgMDY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDQtMTYgMDE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTE2IDAxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMTcgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMTcgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wMiAwMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wMiAwMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAwMDoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMDA6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0yOSAxODozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0yOSAxODozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTEyIDIyOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTEyIDIyOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDIwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAyMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0xOSAwNzoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMTkgMDc6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjYudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDItMTEgMDE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAyLTExIDAxOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNi0wMSAxODozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTAxIDE4OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0wNCAwNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTA0IDA0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI3IDAxOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0yNyAwMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTE0IDIzOjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTE0IDIzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjkgMDE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjkgMDE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjQgMDc6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI0IDA3OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjggMDg6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjggMDg6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0wOSAyMToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0wOSAyMToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMS0wNCAxNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMDQgMTc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wNyAwNzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wNyAwNzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTIxIDA4OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTIxIDA4OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTE3IDAyOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xNyAwMjowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yOCAwNToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDU6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjAgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTExLTIwIDIzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTE4IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xOCAwMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMjcgMjI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0yNyAyMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yOCAwNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDItMTEgMDM6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMi0xMSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTMxIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTMxIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTAgMDI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTAgMDI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMDUgMDU6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTA1IDA1OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMDcgMDc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMDcgMDc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4xLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yMCAwNToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yMCAwNToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xMyAyMjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTMgMjI6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0xNSAwMzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0xNSAwMzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTAyIDAwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTAyIDAwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTI5IDIwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yOSAyMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTAzIDE3OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTAzIDE3OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMy45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMTkgMTY6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMTkgMTY6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMDkgMDE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTA5IDAxOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTI3IDA1OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0yNyAwNToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTAgMDg6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xMCAwODozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTcgMjI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xNyAyMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMjYgMDU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0yNiAwNTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDggMDA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOCAwMDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMjEgMjE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA1LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0yMSAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTIzIDA1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTIzIDA1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDY6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDY6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDktMDUgMjE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA5LTA1IDIxOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDEtMDQgMDY6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDEtMDQgMDY6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMjE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuYnoyLm9sZCI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5iejIub2xkPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xNCAwNDo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMjE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuZ3oub2xkIj54b3JnLXNlcnZlci0xLjEzLjEudGFyLmd6Lm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMDQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNiAwNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNiAwNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTAxIDA3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTAxIDA3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAxLTI1IDA2OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMS0yNSAwNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wOCAwNjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMDggMDY6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTcgMDY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOSAyMDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE5IDIwOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNCAwNTo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAyLTE0IDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTA2IDA2OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wNiAwNjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA2OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA2OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMTMgMjI6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMTMgMjI6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTcgMDc6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA3OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMi1yYzEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMzEgMDQ6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi1yYzEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMzEgMDQ6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyLm9sZCI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyLm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDU6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmd6Lm9sZCI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuZ3oub2xkPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTIyIDIzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTIyIDIzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTI1IDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0yNSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjMtcmMxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA0OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMtcmMxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA0OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMjYgMTk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMjYgMTk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTMgMDM6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEzIDAzOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDEgMDU6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA1OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDU6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDU6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTMgMDM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTEzIDAzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE0IDAyOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xNCAwMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC43LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0wNiAwNDoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC43LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMDYgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMjQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTI0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA1IDAwOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNSAwMDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0xOSAwMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMTkgMDA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDEgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTE0IDAxOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMTQgMDE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTI0IDA2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjQgMDY6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTExIDE1OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTEgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTE5IDIyOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTkgMjI6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yMiAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yMiAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTUuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMi0yNyAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMjcgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTQgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE0IDAzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTUuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMjcgMDE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yNCAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI0IDIxOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0wOCAyMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTA4IDIxOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0wNSAwNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTA1IDA1OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTUuOTkuOTA0LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTA3IDIzOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTE1IDIxOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTE1IDIxOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDctMTcgMDc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMDIgMTA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMDIgMTA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0yMSAwOToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAyMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAyMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEwIDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTIwIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTExIDAwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2Ljk5LjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOSAwNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjMgMTk6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDQgMTc6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTAgMjI6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTYgMTY6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjggMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy40LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuOTkuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTAyIDAyOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yNiAxODoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wOSAyMToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjAudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wOCAyMzo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0xMSAyMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0wNCAxOTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjMudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0xOSAxNzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0xNiAyMDo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuOTAyLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTI4IDE2OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjAudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTE1IDE3OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTExIDIxOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAyIDIzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTE1IDE4OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDIyOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjUudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDE3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjYudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTIwIDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjcudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAyIDIzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjI4NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjcudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjcudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yODcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDk1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yOCAxODoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDk1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMjA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAzLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTAyIDE5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xMCAxOTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDUudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMjQgMjE6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTAgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDcgMTY6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMTUgMTY6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTQ6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC40LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC41LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzAgMTg6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC41LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjIgMjM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjE1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC42LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIxNSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPGFkZHJlc3M+QXBhY2hlLzIuNC4zOCAoRGViaWFuKSBTZXJ2ZXIgYXQgd3d3Lngub3JnIFBvcnQgNDQzPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyZDIzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzgzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXM8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9zb2Z0d2FyZS9wdWxzZWF1ZGlvLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2ZvbGRlci5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9ImJhZC8iPmJhZC88L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI2IDE3OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMS50YXIuZ3oiPnBvbHlwYXVkaW8tMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mzg3SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMS50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMi50YXIuZ3oiPnBvbHlwYXVkaW8tMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDYwSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4yLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMi50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMy50YXIuZ3oiPnBvbHlwYXVkaW8tMC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDcwSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4zLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMy50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNC50YXIuZ3oiPnBvbHlwYXVkaW8tMC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDg2SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC40LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNC50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS4xLnRhci5neiI+cG9seXBhdWRpby0wLjUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUyNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC41LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC41LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC41LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS50YXIuZ3oiPnBvbHlwYXVkaW8tMC41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTE4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC41LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC41LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNi50YXIuZ3oiPnBvbHlwYXVkaW8tMC42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDQ4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC42LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC42LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNi50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNy50YXIuZ3oiPnBvbHlwYXVkaW8tMC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI0SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC43LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC43LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNy50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC4xLnRhci5neiI+cG9seXBhdWRpby0wLjguMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC44LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC44LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC44LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC50YXIuZ3oiPnBvbHlwYXVkaW8tMC44LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC44LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC44LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4wLnRhci5neiI+cG9seXBhdWRpby0wLjkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4wLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC45LjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC45LjAudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC45LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4xLnRhci5neiI+cG9seXBhdWRpby0wLjkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC45LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC45LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC45LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yLnRhci5neiI+cHVsc2VhdWRpby0wLjkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4zLnRhci5neiI+cHVsc2VhdWRpby0wLjkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjMudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS40LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjQudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjQudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS41LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS41LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjUudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjUudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS42LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS42LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjYudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjYudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS43LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS43LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjcudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjcudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS44LnRhci5neiI+cHVsc2VhdWRpby0wLjkuOC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS44LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjgudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjgudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS45LnRhci5neiI+cHVsc2VhdWRpby0wLjkuOS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS45LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjkudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjkudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjkudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMzAgMTY6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEwLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEwLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjExLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDctMjQgMTI6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjExLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjExLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMDkgMDA6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEyLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEyLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTAtMDYgMDE6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEzLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEzLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMTIgMjM6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE0LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE0LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDQtMTMgMjM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE1LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE1LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDYtMjMgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTYtdGVzdDEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTAgMDA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE2LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE2LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE3LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTEgMDE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE3LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE3LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE4LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTkgMDA6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE4LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE4LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE5LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMzAgMDE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE5LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE5LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTkudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTEgMDU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIwLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIwLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMjMgMDQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIxLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIxLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMjYgMDE6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIyLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIyLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMjMgMjE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIzLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIzLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTIzIDIxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTIzIDIxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMDIgMjE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTAyIDIxOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTAyIDIxOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMTYgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE2IDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE2IDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMjkgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI5IDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI5IDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMTUgMTE6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTE1IDExOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTE1IDExOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjcgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIueHoiPnB1bHNlYXVkaW8tMS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjcgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjAgMTM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIueHoiPnB1bHNlYXVkaW8tMS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjAgMTM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMTUgMTI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMTUgMTI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMTEgMTM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIueHoiPnB1bHNlYXVkaW8tMi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMTEgMTM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTkgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIueHoiPnB1bHNlYXVkaW8tMi4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTkgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDMgMTE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDMgMTE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMTcgMDg6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMTcgMDg6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDQ6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDQ6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTggMDc6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIueHoiPnB1bHNlYXVkaW8tMy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTggMDc6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMy45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTYgMDQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMy45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTYgMDQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMjMgMDM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tMy45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMjMgMDM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDMgMTg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIueHoiPnB1bHNlYXVkaW8tNC4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDMgMTg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby00LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjMgMTk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNC45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjMgMTk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjkgMjA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tNC45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjkgMjA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMTUgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIueHoiPnB1bHNlYXVkaW8tNC45OS40LnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMTUgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS40LnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS40LnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjQudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMDMgMTU6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIueHoiPnB1bHNlYXVkaW8tNS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMDMgMTU6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby01LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMjEgMTQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMjEgMTQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTM6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTM6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjEgMTQ6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjEgMTQ6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIueHoiPnB1bHNlYXVkaW8tNi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby02LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tNi45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMjcgMTc6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tNi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMjcgMTc6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNi45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTIgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNi45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTIgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci5nei5tZDVzdW0iPnB1bHNlYXVkaW8tNy4wLnRhci5nei5tZDVzdW08L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIuZ3ouc2hhMXN1bSI+cHVsc2VhdWRpby03LjAudGFyLmd6LnNoYTFzdW08L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIueHoiPnB1bHNlYXVkaW8tNy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNy4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1c3VtIj5wdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1c3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6LnNoYTFzdW0iPnB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExc3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTMwIDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTMwIDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTI4IDEyOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTI4IDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTEyIDAzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTEyIDAzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTIyIDA3OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTguMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTIyIDA3OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTEyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTEyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTI5IDA2OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTI5IDA2OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTkuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTkuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTkuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTAzIDE2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTAzIDE2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC4wLnRhci5neiI+cHVsc2VhdWRpby0xMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEwLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMC4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xOSAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC4wLnRhci54eiI+cHVsc2VhdWRpby0xMC4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEwLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMC4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xOSAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC45OS4xLnRhci5neiI+cHVsc2VhdWRpby0xMC45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEwLjk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0yNCAyMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMC45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEwLjk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0yNCAyMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4wLnRhci5neiI+cHVsc2VhdWRpby0xMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNSAwOTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4wLnRhci54eiI+cHVsc2VhdWRpby0xMS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNSAwOTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4xLnRhci5neiI+cHVsc2VhdWRpby0xMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4xLnRhci54eiI+cHVsc2VhdWRpby0xMS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS45OS4xLnRhci5neiI+cHVsc2VhdWRpby0xMS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMyAwNjo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMyAwNjo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4wLnRhci5neiI+cHVsc2VhdWRpby0xMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEyLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMi4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yMCAyMDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4wLnRhci54eiI+cHVsc2VhdWRpby0xMi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEyLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMi4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yMCAyMDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4xLnRhci5neiI+cHVsc2VhdWRpby0xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEyLjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMi4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNCAxNjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4xLnRhci54eiI+cHVsc2VhdWRpby0xMi4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEyLjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMi4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNCAxNjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4yLnRhci5neiI+cHVsc2VhdWRpby0xMi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTYgMTY6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMi50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjIudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTYgMTY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDg5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMi50YXIueHoiPnB1bHNlYXVkaW8tMTIuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjIudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi4yLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA4OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTEyLjk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0wOSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4xLnRhci5nei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMS50YXIuZ3ouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0wOSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMS50YXIueHouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjEudGFyLnh6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMTIuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA2IDE3OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjIudGFyLmd6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4yLnRhci5nei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA2IDE3OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTEyLjk5LjIudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4yLnRhci54ei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMi50YXIueHouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4zLnRhci5neiI+cHVsc2VhdWRpby0xMi45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDEgMDc6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMy50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjMudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDEgMDc6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tMTIuOTkuMy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjMudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4zLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEzLjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTEzLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0xMyAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMy4wLnRhci5nei5zaGEyNTYiPnB1bHNlYXVkaW8tMTMuMC50YXIuZ3ouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0xMyAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gODkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMy4wLnRhci54eiI+cHVsc2VhdWRpby0xMy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTMuMC50YXIueHouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEzLjAudGFyLnh6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDg5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8YWRkcmVzcz5BcGFjaGUvMi40LjM4IChEZWJpYW4pIFNlcnZlciBhdCBmcmVlZGVza3RvcC5vcmcgUG9ydCA0NDM8L2FkZHJlc3M+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKaW5kZXggODNmYWQzZi4uZDBjMTYxYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CkBAIC05LDEyICs5LDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBvcwogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFVSSQogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBpbXBvcnQgYmIKK2Zyb20gYmIudGVzdHMuc3VwcG9ydC5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQogCiBkZWYgc2tpcElmTm9OZXR3b3JrKCk6CiAgICAgaWYgb3MuZW52aXJvbi5nZXQoIkJCX1NLSVBfTkVUVEVTVFMiKSA9PSAieWVzIjoKQEAgLTExODAsMjcgKzExODAsNDYgQEAKICAgICB9CiAKICAgICB0ZXN0X3dnZXRfdXJpcyA9IHsKKyAgICAgICAgIwogICAgICAgICAjIHBhY2thZ2VzIHdpdGggdmVyc2lvbnMgaW5zaWRlIGRpcmVjdG9yeSBuYW1lCi0gICAgICAgICgidXRpbC1saW51eCIsICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy91dGlsLWxpbnV4LTIuMjQuMi50YXIuYnoyIiwgIiIsICIiKQorICAgICAgICAjCisgICAgICAgICMgaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvdXRpbC1saW51eC0yLjI0LjIudGFyLmJ6MgorICAgICAgICAoInV0aWwtbGludXgiLCAiL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjIzL3V0aWwtbGludXgtMi4yNC4yLnRhci5iejIiLCAiIiwgIiIpCiAgICAgICAgICAgICA6ICIyLjI0LjIiLAotICAgICAgICAoImVuY2hhbnQiLCAiaHR0cDovL3d3dy5hYmlzb3VyY2UuY29tL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2VuY2hhbnQtMS42LjAudGFyLmd6IiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9lbmNoYW50LTEuNi4wLnRhci5negorICAgICAgICAoImVuY2hhbnQiLCAiL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2VuY2hhbnQtMS42LjAudGFyLmd6IiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMS42LjAiLAotICAgICAgICAoImNtYWtlIiwgImh0dHA6Ly93d3cuY21ha2Uub3JnL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6IiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly93d3cuY21ha2Uub3JnL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6CisgICAgICAgICgiY21ha2UiLCAiL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6IiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMi44LjEyLjEiLAorICAgICAgICAjCiAgICAgICAgICMgcGFja2FnZXMgd2l0aCB2ZXJzaW9ucyBvbmx5IGluIGN1cnJlbnQgZGlyZWN0b3J5Ci0gICAgICAgICgiZWdsaWMiLCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2VnbGliYy9lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6MiIsICIiLCAiIikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9lZ2xpYmMvZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIKKyAgICAgICAgKCJlZ2xpYyIsICIvcmVsZWFzZXMvZWdsaWJjL2VnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMi4xOSIsCi0gICAgICAgICgiZ251LWNvbmZpZyIsICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLTIwMTIwODE0LnRhci5iejIiLCAiIiwgIiIpCisgICAgICAgICMgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2dudS1jb25maWcvZ251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyCisgICAgICAgICgiZ251LWNvbmZpZyIsICIvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLTIwMTIwODE0LnRhci5iejIiLCAiIiwgIiIpCiAgICAgICAgICAgICA6ICIyMDEyMDgxNCIsCisgICAgICAgICMKICAgICAgICAgIyBwYWNrYWdlcyB3aXRoICI5OSIgaW4gdGhlIG5hbWUgb2YgcG9zc2libGUgdmVyc2lvbgotICAgICAgICAoInB1bHNlYXVkaW8iLCAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL3B1bHNlYXVkaW8tNC4wLnRhci54eiIsICIiLCAiIikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9wdWxzZWF1ZGlvLTQuMC50YXIueHoKKyAgICAgICAgKCJwdWxzZWF1ZGlvIiwgIi9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL3B1bHNlYXVkaW8tNC4wLnRhci54eiIsICIiLCAiIikKICAgICAgICAgICAgIDogIjUuMCIsCi0gICAgICAgICgieHNlcnZlci14b3JnIiwgImh0dHA6Ly94b3JnLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIveG9yZy1zZXJ2ZXItMS4xNS4xLnRhci5iejIiLCAiIiwgIiIpCisgICAgICAgICMgaHR0cDovL3hvcmcuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlci94b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MgorICAgICAgICAoInhzZXJ2ZXIteG9yZyIsICIvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyL3hvcmctc2VydmVyLTEuMTUuMS50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMS4xNS4xIiwKKyAgICAgICAgIwogICAgICAgICAjIHBhY2thZ2VzIHdpdGggdmFsaWQgVVBTVFJFQU1fQ0hFQ0tfVVJJIGFuZCBVUFNUUkVBTV9DSEVDS19SRUdFWAotICAgICAgICAoImN1cHMiLCAiaHR0cDovL3d3dy5jdXBzLm9yZy9zb2Z0d2FyZS8xLjcuMi9jdXBzLTEuNy4yLXNvdXJjZS50YXIuYnoyIiwgImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzIiwgIig/UDxuYW1lPmN1cHNcLSkoP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKVwtc291cmNlXC50YXJcLmd6IikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly93d3cuY3Vwcy5vcmcvc29mdHdhcmUvMS43LjIvY3Vwcy0xLjcuMi1zb3VyY2UudGFyLmJ6MgorICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzCisgICAgICAgICgiY3VwcyIsICIvc29mdHdhcmUvMS43LjIvY3Vwcy0xLjcuMi1zb3VyY2UudGFyLmJ6MiIsICIvYXBwbGUvY3Vwcy9yZWxlYXNlcyIsICIoP1A8bmFtZT5jdXBzXC0pKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSlcLXNvdXJjZVwudGFyXC5neiIpCiAgICAgICAgICAgICA6ICIyLjAuMCIsCi0gICAgICAgICgiZGIiLCAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItNS4zLjIxLnRhci5neiIsICJodHRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zLyIsICIoP1A8bmFtZT5kYjVcLjNfKSg/UDxwdmVyPlxkKyhcLlxkKykrKS4rXC5vcmlnXC50YXJcLnh6IikKKyAgICAgICAgIyBodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi01LjMuMjEudGFyLmd6CisgICAgICAgICMgaHR0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy8KKyAgICAgICAgKCJkYiIsICIvYmVya2VsZXktZGIvZGItNS4zLjIxLnRhci5neiIsICIvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zLyIsICIoP1A8bmFtZT5kYjVcLjNfKSg/UDxwdmVyPlxkKyhcLlxkKykrKS4rXC5vcmlnXC50YXJcLnh6IikKICAgICAgICAgICAgIDogIjUuMy4xMCIsCiAgICAgfQogCkBAIC0xMjE3LDE4ICsxMjM2LDI4IEBACiAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCiAKLSAgICBAc2tpcElmTm9OZXR3b3JrKCkKICAgICBkZWYgdGVzdF93Z2V0X2xhdGVzdF92ZXJzaW9uc3RyaW5nKHNlbGYpOgotICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQTiIsIGtbMF0pCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19VUkkiLCBrWzJdKQotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfUkVHRVgiLCBrWzNdKQotICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKLSAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQotICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24gZm9yICVzIiAlIGtbMF0pCi0gICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCisgICAgICAgIHRlc3RkYXRhID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpICsgIi9mZXRjaC10ZXN0ZGF0YSIKKyAgICAgICAgc2VydmVyID0gSFRUUFNlcnZpY2UodGVzdGRhdGEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHBvcnQgPSBzZXJ2ZXIucG9ydAorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUE4iLCBrWzBdKQorICAgICAgICAgICAgICAgIGNoZWNrdXJpID0gIiIKKyAgICAgICAgICAgICAgICBpZiBrWzJdOgorICAgICAgICAgICAgICAgICAgICBjaGVja3VyaSA9ICJodHRwOi8vbG9jYWxob3N0OiVzLyIgJSBwb3J0ICsga1syXQorICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1VSSSIsIGNoZWNrdXJpKQorICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1JFR0VYIiwga1szXSkKKyAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgcG9ydCArIGtbMV0KKyAgICAgICAgICAgICAgICB1ZCA9IGJiLmZldGNoMi5GZXRjaERhdGEodXJsLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgcHVwdmVyID0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIGZvciAlcyIgJSBrWzBdKQorICAgICAgICAgICAgICAgIHIgPSBiYi51dGlscy52ZXJjbXBfc3RyaW5nKHYsIHZlcnN0cmluZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZXJ2ZXIuc3RvcCgpCiAKIAogY2xhc3MgRmV0Y2hDaGVja1N0YXR1c1Rlc3QoRmV0Y2hlclRlc3QpOgpAQCAtMTY2Miw2ICsxNjkxLDQ3IEBACiAgICAgICAgICMgVmVyaWZ5IHRoZSBzdWJtb2R1bGUgaXMgYWxzbyBzaGFsbG93CiAgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSwgY3dkPW9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2dpdHN1Ym1vZHVsZScpKQogCisgICAgZGVmIHRlc3Rfc2hhbGxvd19zdWJtb2R1bGVfbWlycm9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorCisgICAgICAgIHNtZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2dpdHN1Ym1vZHVsZScpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzbWRpcikKKyAgICAgICAgc2VsZi5naXQoJ2luaXQnLCBjd2Q9c21kaXIpCisgICAgICAgICMgTWFrZSB0aGlzIGxvb2sgbGlrZSBpdCB3YXMgY2xvbmVkIGZyb20gYSByZW1vdGUuLi4KKyAgICAgICAgc2VsZi5naXQoJ2NvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLnVybCAiJXMiJyAlIHNtZGlyLCBjd2Q9c21kaXIpCisgICAgICAgIHNlbGYuZ2l0KCdjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi5mZXRjaCAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiJywgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhc3ViJywgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdic3ViJywgY3dkPXNtZGlyKQorCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgaW5pdCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ3N1Ym1vZHVsZSBhZGQgZmlsZTovLyVzJyAlIHNtZGlyLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgdXBkYXRlJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgnY29tbWl0IC1tIHN1Ym1vZHVsZSAtYScsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICB1cmkgPSAnZ2l0c206Ly8lcztwcm90b2NvbD1maWxlO3N1YmRpcj0ke1N9JyAlIHNlbGYuc3JjZGlyCisKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdlbmVyYXRlIHRoZSBzaGFsbG93IHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoKHVyaSkKKworICAgICAgICAjIFNldCB1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBvcy5yZW5hbWUoc2VsZi5kbGRpciwgbWlycm9yZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdQUkVNSVJST1JTJywgJ2dpdHNtOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKworICAgICAgICAjIEZldGNoIGZyb20gdGhlIG1pcnJvcgorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5kbGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5naXRkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5mZXRjaF9hbmRfdW5wYWNrKHVyaSkKKworICAgICAgICAjIFZlcmlmeSB0aGUgbWFpbiByZXBvc2l0b3J5IGlzIHNoYWxsb3cKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBnaXRzdWJtb2R1bGUgZGlyZWN0b3J5IGlzIHByZXNlbnQKKyAgICAgICAgYXNzZXJ0IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnZ2l0c3VibW9kdWxlJykpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIHN1Ym1vZHVsZSBpcyBhbHNvIHNoYWxsb3cKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxLCBjd2Q9b3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnZ2l0c3VibW9kdWxlJykpCiAKICAgICBpZiBhbnkob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHAsICdnaXQtYW5uZXgnKSkgZm9yIHAgaW4gb3MuZW52aXJvbi5nZXQoJ1BBVEgnKS5zcGxpdCgnOicpKToKICAgICAgICAgZGVmIHRlc3Rfc2hhbGxvd19hbm5leChzZWxmKToKQEAgLTIwMDgsMyArMjA3OCw0MzcgQEAKICAgICAgICAgdWQubWV0aG9kLl9maW5kX2dpdF9sZnMgPSBsYW1iZGEgZDogRmFsc2UKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmdpdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQogICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJykpCisKK2NsYXNzIE5QTVRlc3QoRmV0Y2hlclRlc3QpOgorICAgIGRlZiBza2lwSWZOb05wbSgpOgorICAgICAgICBpbXBvcnQgc2h1dGlsCisgICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2goJ25wbScpOgorICAgICAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoJ25wbSBub3QgaW5zdGFsbGVkLCB0ZXN0cyBiZWluZyBza2lwcGVkJykKKyAgICAgICAgcmV0dXJuIGxhbWJkYSBmOiBmCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbShzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCArICcuZG9uZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih1bnBhY2tkaXIsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9iYWRfY2hlY2tzdW0oc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgTW9kaWZ5IHRoZSB0YXJiYWxsCisgICAgICAgIGJhZCA9IGInYmFkIGNoZWNrc3VtJworICAgICAgICB3aXRoIG9wZW4odWQubG9jYWxwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiYWQpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIHRhcmJhbGwgaXMgZmV0Y2hlZCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgYmFkc3VtID0gaGFzaGxpYi5zaGE1MTIoYmFkKS5oZXhkaWdlc3QoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoICsgJ19iYWQtY2hlY2tzdW1fJyArIGJhZHN1bSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcHJlbWlycm9ycyhzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgIyBTZXR1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBvcy5yZXBsYWNlKHVkLmxvY2FscGF0aCwgb3MucGF0aC5qb2luKG1pcnJvcmRpciwgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpKSkKKyAgICAgICAgc2VsZi5kLnNldFZhcignUFJFTUlSUk9SUycsICdodHRwcz8kOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfRkVUQ0hfUFJFTUlSUk9ST05MWScsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX21pcnJvcnMoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgU2V0dXAgdGhlIG1pcnJvcgorICAgICAgICBtaXJyb3JkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbWlycm9yJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG1pcnJvcmRpcikKKyAgICAgICAgb3MucmVwbGFjZSh1ZC5sb2NhbHBhdGgsIG9zLnBhdGguam9pbihtaXJyb3JkaXIsIG9zLnBhdGguYmFzZW5hbWUodWQubG9jYWxwYXRoKSkpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ01JUlJPUlMnLCAnaHR0cHM/JDovLy4qLy4qIGZpbGU6Ly8lcy9cbicgJSBtaXJyb3JkaXIpCisgICAgICAgICMgVXBkYXRlIHRoZSByZXNvbHZlZCB1cmwgdG8gYW4gaW52YWxpZCB1cmwKKyAgICAgICAgd2l0aCBvcGVuKHVkLnJlc29sdmVmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICB1cmwgPSBmLnJlYWQoKQorICAgICAgICB1cmkgPSBVUkkodXJsKQorICAgICAgICB1cmkucGF0aCA9ICcvaW52YWxpZCcKKyAgICAgICAgd2l0aCBvcGVuKHVkLnJlc29sdmVmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHN0cih1cmkpKQorICAgICAgICAjIEZldGNoIGFnYWluCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fZGVzdHN1ZmZpeF9kb3dubG9hZGZpbGVuYW1lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wO2Rlc3RzdWZmaXg9Zm9vL2Jhcjtkb3dubG9hZGZpbGVuYW1lPWZvby1iYXIudGd6JworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgJ2Zvby1iYXIudGd6JykpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZm9vJywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgZGVmIHRlc3RfbnBtX25vX25ldHdvcmtfbm9fdGFyYmFsbChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLk5ldHdvcmtBY2Nlc3MpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9ub19uZXR3b3JrX3dpdGhfdGFyYmFsbChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIERpc2FibGUgbmV0d29yayBhY2Nlc3MKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcmVnaXN0cnlfYWx0ZXJuYXRlKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkuZnJlYWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih1bnBhY2tkaXIsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV92ZXJzaW9uX2xhdGVzdChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj1sYXRlc3QnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcmVnaXN0cnlfaW52YWxpZChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5LmludmFsaWQub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuRmV0Y2hFcnJvcik6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX3BhY2thZ2VfaW52YWxpZChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L2ludmFsaWQ7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV92ZXJzaW9uX2ludmFsaWQoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249aW52YWxpZCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuUGFyYW1ldGVyRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9yZWdpc3RyeV9ub25lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5NYWxmb3JtZWRVcmwpOgorICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9wYWNrYWdlX25vbmUoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTWlzc2luZ1BhcmFtZXRlckVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fdmVyc2lvbl9ub25lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTWlzc2luZ1BhcmFtZXRlckVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgZGVmIGNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoc2VsZiwgZGF0YSk6CisgICAgICAgIGltcG9ydCBqc29uCisgICAgICAgIGRhdGFkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZGF0YScpCisgICAgICAgIHN3ZmlsZSA9IG9zLnBhdGguam9pbihkYXRhZGlyLCAnbnBtLXNocmlua3dyYXAuanNvbicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkYXRhZGlyKQorICAgICAgICB3aXRoIG9wZW4oc3dmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBqc29uLmR1bXAoZGF0YSwgZikKKyAgICAgICAgIyBBbHNvIGNvbmZpZ3VyZSB0aGUgUyBkaXJlY3RvcnkKKyAgICAgICAgc2VsZi5zZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnUycpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1MnLCBzZWxmLnNkaXIpCisgICAgICAgIHJldHVybiBzd2ZpbGUKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3coc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScsCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbnRlbnQtdHlwZS8tL2NvbnRlbnQtdHlwZS0xLjAuNC50Z3onLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhNTEyLWhJUDNFRVBzOHRCOUFUMUwrTlVxdHdPQXBzNG1rMlpvYjg5TVdYTUhqSFdnOW1pbEYvajRvc25uUUxYQkNCRkJrL3R2SUcvdFVjOW1PVUppUEJoUFhBPT0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICdnaXQraHR0cHM6Ly9naXRodWIuY29tL2pzaHR0cC9jb29raWUuZ2l0I2FlYzExNzdjN2RhNjdlM2IzMjczZGY5NmNmNDc2ODI0ZGJjOWFlMDknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20nOiAnZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llLmdpdCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdhcnJheS1mbGF0dGVuLTEuMS4xLnRneicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdjb250ZW50LXR5cGUtMS4wLjQudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICdnaXQyJywgJ2dpdGh1Yi5jb20uanNodHRwLmNvb2tpZS5naXQnKSkpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25wbS1zaHJpbmt3cmFwLmpzb24nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5zZGlyLCAnbm9kZV9tb2R1bGVzJywgJ2FycmF5LWZsYXR0ZW4nLCAncGFja2FnZS5qc29uJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25vZGVfbW9kdWxlcycsICdhcnJheS1mbGF0dGVuJywgJ25vZGVfbW9kdWxlcycsICdjb250ZW50LXR5cGUnLCAncGFja2FnZS5qc29uJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25vZGVfbW9kdWxlcycsICdhcnJheS1mbGF0dGVuJywgJ25vZGVfbW9kdWxlcycsICdjb250ZW50LXR5cGUnLCAnbm9kZV9tb2R1bGVzJywgJ2Nvb2tpZScsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X2RldihzZWxmKToKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4wLjQnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29udGVudC10eXBlLy0vY29udGVudC10eXBlLTEuMC40LnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhNTEyLWhJUDNFRVBzOHRCOUFUMUwrTlVxdHdPQXBzNG1rMlpvYjg5TVdYTUhqSFdnOW1pbEYvajRvc25uUUxYQkNCRkJrL3R2SUcvdFVjOW1PVUppUEJoUFhBPT0nLAorICAgICAgICAgICAgICAgICAgICAnZGV2JzogVHJ1ZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgIyBGZXRjaCB3aXRoIGRldiBkaXNhYmxlZAorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdjb250ZW50LXR5cGUtMS4wLjQudGd6JykpKQorICAgICAgICAjIEZldGNoIHdpdGggZGV2IGVuYWJsZWQKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlICsgJztkZXY9MSddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2NvbnRlbnQtdHlwZS0xLjAuNC50Z3onKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X2Rlc3RzdWZmaXgoc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZSArICc7ZGVzdHN1ZmZpeD1mb28vYmFyJ10sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZm9vJywgJ2JhcicsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBkZWYgdGVzdF9ucG1zd19ub19uZXR3b3JrX25vX3RhcmJhbGwoc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfbm9fbmV0d29ya193aXRoX3RhcmJhbGwoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIERpc2FibGUgbmV0d29yayBhY2Nlc3MKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLW1sOXBrRkd4NXdjektQS2dDSmFMWk9vcFZkST0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnNkaXIsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X25wbV9yZXVzYWJpbGl0eShzZWxmKToKKyAgICAgICAgIyBGZXRjaCBvbmNlIHdpdGggbnBtc3cKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyBEaXNhYmxlIG5ldHdvcmsgYWNjZXNzCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgICMgRmV0Y2ggYWdhaW4gd2l0aCBucG0KKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9YXJyYXktZmxhdHRlbjt2ZXJzaW9uPTEuMS4xJ10sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJywgJ3BhY2thZ2UuanNvbicpKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfYmFkX2NoZWNrc3VtKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBmZXRjaCB3aXRoIGJhZCBjaGVja3N1bQorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLWdmTkVwMmhxZ0xURktUNlAzQXNCWU1nc0JxZz0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgICMgRmV0Y2ggY29ycmVjdGx5IHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkpCisgICAgICAgICMgTW9kaWZ5IHRoZSB0YXJiYWxsCisgICAgICAgIGJhZCA9IGInYmFkIGNoZWNrc3VtJworICAgICAgICB3aXRoIG9wZW4obG9jYWxwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiYWQpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIHRhcmJhbGwgaXMgZmV0Y2hlZCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgYmFkc3VtID0gaGFzaGxpYi5zaGExKGJhZCkuaGV4ZGlnZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCArICdfYmFkLWNoZWNrc3VtXycgKyBiYWRzdW0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfcHJlbWlycm9ycyhzZWxmKToKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9YXJyYXktZmxhdHRlbjt2ZXJzaW9uPTEuMS4xJ10sIHNlbGYuZCkKKyAgICAgICAgdWQgPSBmZXRjaGVyLnVkW2ZldGNoZXIudXJsc1swXV0KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorICAgICAgICAjIFNldHVwIHRoZSBtaXJyb3IKKyAgICAgICAgbWlycm9yZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ21pcnJvcicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihtaXJyb3JkaXIpCisgICAgICAgIG9zLnJlcGxhY2UodWQubG9jYWxwYXRoLCBvcy5wYXRoLmpvaW4obWlycm9yZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHVkLmxvY2FscGF0aCkpKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdQUkVNSVJST1JTJywgJ2h0dHBzPyQ6Ly8uKi8uKiBmaWxlOi8vJXMvXG4nICUgbWlycm9yZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9GRVRDSF9QUkVNSVJST1JPTkxZJywgJzEnKQorICAgICAgICAjIEZldGNoIGFnYWluCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X21pcnJvcnMoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgIyBTZXR1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBvcy5yZXBsYWNlKHVkLmxvY2FscGF0aCwgb3MucGF0aC5qb2luKG1pcnJvcmRpciwgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpKSkKKyAgICAgICAgc2VsZi5kLnNldFZhcignTUlSUk9SUycsICdodHRwcz8kOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKyAgICAgICAgIyBGZXRjaCBhZ2FpbiB3aXRoIGludmFsaWQgdXJsCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vaW52YWxpZCcsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3J1bnF1ZXVlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ydW5xdWV1ZS5weQppbmRleCA1ZTY0MzkxLi40YmExMmEwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3J1bnF1ZXVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcnVucXVldWUucHkKQEAgLTcsNyArNyw2IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGJiCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTI1NSw3ICsyNTQsNyBAQAogICAgICAgICAgICAgY21kID0gWyJiaXRiYWtlIiwgImExIiwgImIxIl0KICAgICAgICAgICAgIHRhc2tzID0gc2VsZi5ydW5fYml0YmFrZWNtZChjbWQsIHRlbXBkaXIsIHNzdGF0ZXZhbGlkLCBleHRyYWVudj1leHRyYWVudiwgY2xlYW51cD1UcnVlKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBbJ2ExOnBvcHVsYXRlX3N5c3Jvb3QnLCAnYTE6cGFja2FnZScsICdhMTpwYWNrYWdlX3dyaXRlX3JwbV9zZXRzY2VuZScsICdhMTpwYWNrYWdlZGF0YV9zZXRzY2VuZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYTE6cGFja2FnZV93cml0ZV9pcGtfc2V0c2NlbmUnLCAnYTE6cGFja2FnZV9xYV9zZXRzY2VuZSddCisgICAgICAgICAgICAgICAgICAgICAgICAnYTE6cGFja2FnZV93cml0ZV9pcGtfc2V0c2NlbmUnLCAnYTE6cGFja2FnZV9xYV9zZXRzY2VuZScsICdhMTpidWlsZCddCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh0YXNrcyksIHNldChleHBlY3RlZCkpCiAKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd24odGVtcGRpcikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvc3VwcG9ydC9odHRwc2VydmVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9zdXBwb3J0L2h0dHBzZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhmNzY2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvc3VwcG9ydC9odHRwc2VydmVyLnB5CkBAIC0wLDAgKzEsNjUgQEAKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworCitpbXBvcnQgaHR0cC5zZXJ2ZXIKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCBvcworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHNpZ25hbAoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdNaXhJbgorCitjbGFzcyBIVFRQU2VydmVyKFRocmVhZGluZ01peEluLCBodHRwLnNlcnZlci5IVFRQU2VydmVyKToKKworICAgIGRlZiBzZXJ2ZXJfc3RhcnQoc2VsZiwgcm9vdF9kaXIsIGxvZ2dlcik6CisgICAgICAgIG9zLmNoZGlyKHJvb3RfZGlyKQorICAgICAgICBzZWxmLnNlcnZlX2ZvcmV2ZXIoKQorCitjbGFzcyBIVFRQUmVxdWVzdEhhbmRsZXIoaHR0cC5zZXJ2ZXIuU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKKworICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCBmb3JtYXRfc3RyLCAqYXJncyk6CisgICAgICAgIHBhc3MKKworY2xhc3MgSFRUUFNlcnZpY2Uob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290X2RpciwgaG9zdD0nJywgcG9ydD0wLCBsb2dnZXI9Tm9uZSk6CisgICAgICAgIHNlbGYucm9vdF9kaXIgPSByb290X2RpcgorICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgaWYgbm90IGxvZ2dlcjoKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgcHJpbnQoc2VsZi5yb290X2RpcikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucm9vdF9kaXIpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiTm90IHN0YXJ0aW5nIEhUVFBTZXJ2aWNlIGZvciBkaXJlY3RvcnkgJXMgd2hpY2ggZG9lc24ndCBleGlzdCIgJSAoc2VsZi5yb290X2RpcikpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLnNlcnZlciA9IEhUVFBTZXJ2ZXIoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgSFRUUFJlcXVlc3RIYW5kbGVyKQorICAgICAgICBpZiBzZWxmLnBvcnQgPT0gMDoKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2VydmVyLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYucHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLnNlcnZlci5zZXJ2ZXJfc3RhcnQsIGFyZ3M9W3NlbGYucm9vdF9kaXIsIHNlbGYubG9nZ2VyXSkKKworICAgICAgICAjIFRoZSBzaWduYWwgaGFuZGxlciBmcm9tIHRlc3RpbWFnZS5iYmNsYXNzIGNhbiBjYXVzZSBkZWFkbG9ja3MgaGVyZQorICAgICAgICAjIGlmIHRoZSBIVFRQU2VydmVyIGlzIHRlcm1pbmF0ZWQgYmVmb3JlIGl0IGNhbiByZXN0b3JlIHRoZSBzdGFuZGFyZCAKKyAgICAgICAgI3NpZ25hbCBiZWhhdmlvdXIKKyAgICAgICAgb3JpZyA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR1RFUk0pCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNpZ25hbC5TSUdfREZMKQorICAgICAgICBzZWxmLnByb2Nlc3Muc3RhcnQoKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBvcmlnKQorCisgICAgICAgIGlmIHNlbGYubG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RhcnRlZCBIVFRQU2VydmljZSBvbiAlczolcyIgJSAoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQorCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAic2VydmVyIik6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJwcm9jZXNzIik6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3MudGVybWluYXRlKCkKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5qb2luKCkKKyAgICAgICAgaWYgc2VsZi5sb2dnZXI6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdG9wcGVkIEhUVFBTZXJ2aWNlIG9uICVzOiVzIiAlIChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3V0aWxzLnB5CmluZGV4IDVjOTEwYjQuLmE3ZmYzM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy91dGlscy5weQpAQCAtNjIyLDMgKzYyMiw0NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvaG9tZS91c2VyL290aGVycGF0aC9sYXllcjYnLCAnL2hvbWUvdXNlci9wYXRoL2xheWVyMyddLCBbJy9ob21lL3VzZXIvcGF0aC9sYXllcjEnLCAnL2hvbWUvdXNlci9wYXRoL2xheWVyNCcsICcvaG9tZS91c2VyL3BhdGgvbGF5ZXI3J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy9ob21lL3VzZXIvcGF0aC9sYXllcjMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL2hvbWUvdXNlci9wYXRoL2xheWVyNyddKQorCisKK2NsYXNzIEdldFJlZmVyZW5jZWRWYXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCisKKyAgICBkZWYgY2hlY2tfcmVmZXJlbmNlZChzZWxmLCBleHByZXNzaW9uLCBleHBlY3RlZF9sYXllcnMpOgorICAgICAgICB2YXJzID0gYmIudXRpbHMuZ2V0X3JlZmVyZW5jZWRfdmFycyhleHByZXNzaW9uLCBzZWxmLmQpCisKKyAgICAgICAgIyBEbyB0aGUgZWFzeSBjaGVjayBmaXJzdCAtIGlzIGV2ZXJ5IHZhcmlhYmxlIGFjY291bnRlZCBmb3I/CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSBzZXQudW5pb24oc2V0KCksICpleHBlY3RlZF9sYXllcnMpCisgICAgICAgIGdvdF92YXJzID0gc2V0KHZhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0U2V0RXF1YWwoZ290X3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgIyBOb3cgdGVzdCB0aGUgb3JkZXIgb2YgdGhlIGxheWVycworICAgICAgICBzdGFydCA9IDAKKyAgICAgICAgZm9yIGksIGV4cGVjdGVkX2xheWVyIGluIGVudW1lcmF0ZShleHBlY3RlZF9sYXllcnMpOgorICAgICAgICAgICAgZ290X2xheWVyID0gc2V0KHZhcnNbc3RhcnQ6bGVuKGV4cGVjdGVkX2xheWVyKStzdGFydF0pCisgICAgICAgICAgICBzdGFydCArPSBsZW4oZXhwZWN0ZWRfbGF5ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFNldEVxdWFsKGdvdF9sYXllciwgZXhwZWN0ZWRfbGF5ZXIpCisKKyAgICBkZWYgdGVzdF9ub192YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiIsIFtdKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiAiLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIgbm8gdmFycyBoZXJlISAiLCBbXSkKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9sYXllcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIke1ZBUn0iLCBbeyJWQVIifV0pCisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiJHtWQVJ9ICR7VkFSfSIsIFt7IlZBUiJ9XSkKKworICAgIGRlZiB0ZXN0X3R3b19sYXllcihzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiVkFSIiwgIiR7Qn0iKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7VkFSfSIsIFt7IlZBUiJ9LCB7IkIifV0pCisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiJHtAZC5nZXRWYXIoJ1ZBUicpfSIsIFt7IlZBUiJ9LCB7IkIifV0pCisKKyAgICBkZWYgdGVzdF9tb3JlX2NvbXBsaWNhdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmRbIlNSQ19VUkkiXSA9ICIke1FUX0dJVH0vJHtRVF9NT0RVTEV9LmdpdDtuYW1lPSR7UVRfTU9EVUxFfTske1FUX01PRFVMRV9CUkFOQ0hfUEFSQU19O3Byb3RvY29sPSR7UVRfR0lUX1BST1RPQ09MfSIKKyAgICAgICAgc2VsZi5kWyJRVF9HSVQiXSA9ICJnaXQ6Ly9jb2RlLnF0LmlvLyR7UVRfR0lUX1BST0pFQ1R9IgorICAgICAgICBzZWxmLmRbIlFUX01PRFVMRV9CUkFOQ0hfUEFSQU0iXSA9ICJicmFuY2g9JHtRVF9NT0RVTEVfQlJBTkNIfSIKKyAgICAgICAgc2VsZi5kWyJRVF9NT0RVTEUiXSA9ICIke0JQTn0iCisgICAgICAgIHNlbGYuZFsiQlBOIl0gPSAic29tZXRoaW5nIHRvIGRvIHdpdGggJHtQTn0gYW5kICR7U1BFQ0lBTF9QS0dTVUZGSVh9IgorCisgICAgICAgIGxheWVycyA9IFt7IlNSQ19VUkkifSwgeyJRVF9HSVQiLCAiUVRfTU9EVUxFIiwgIlFUX01PRFVMRV9CUkFOQ0hfUEFSQU0iLCAiUVRfR0lUX1BST1RPQ09MIn0sIHsiUVRfR0lUX1BST0pFQ1QiLCAiUVRfTU9EVUxFX0JSQU5DSCIsICJCUE4ifSwgeyJQTiIsICJTUEVDSUFMX1BLR1NVRkZJWCJ9XQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7U1JDX1VSSX0iLCBsYXllcnMpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKaW5kZXggMGExYjkxMy4uOGM5YjZiOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQpAQCAtMTMsNiArMTMsNyBAQAogaW1wb3J0IGF0ZXhpdAogaW1wb3J0IHJlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCwgZGVmYXVsdGRpY3QKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiAKIGltcG9ydCBiYi5jYWNoZQogaW1wb3J0IGJiLmNvb2tlcgpAQCAtMjEsOCArMjIsOCBAQAogaW1wb3J0IGJiLnV0aWxzCiBpbXBvcnQgYmIuY29tbWFuZAogaW1wb3J0IGJiLnJlbW90ZWRhdGEKLWZyb20gYmIuY29va2VyZGF0YSBpbXBvcnQgQ29va2VyQ29uZmlndXJhdGlvbiwgQ29uZmlnUGFyYW1ldGVycwotZnJvbSBiYi5tYWluIGltcG9ydCBzZXR1cF9iaXRiYWtlLCBCaXRCYWtlQ29uZmlnUGFyYW1ldGVycywgQkJNYWluRXhjZXB0aW9uCitmcm9tIGJiLmNvb2tlcmRhdGEgaW1wb3J0IENvb2tlckNvbmZpZ3VyYXRpb24KK2Zyb20gYmIubWFpbiBpbXBvcnQgc2V0dXBfYml0YmFrZSwgQml0QmFrZUNvbmZpZ1BhcmFtZXRlcnMKIGltcG9ydCBiYi5mZXRjaDIKIAogCkBAIC00NCw2NiArNDUsNjkgQEAKIGNsYXNzIFRpbmZvaWxDb21tYW5kRmFpbGVkKEV4Y2VwdGlvbik6CiAgICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHJ1bl9jb21tYW5kIGZhaWxzIiIiCiAKK2NsYXNzIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3JWYXJIaXN0b3J5OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsLCBkc2luZGV4KToKKyAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAorICAgICAgICBzZWxmLmRzaW5kZXggPSBkc2luZGV4CisKKyAgICBkZWYgcmVtb3RlQ29tbWFuZChzZWxmLCBjbWQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvclZhckhpc3RDbWQnLCBzZWxmLmRzaW5kZXgsIGNtZCwgYXJncywga3dhcmdzKQorCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlSGlzdG9yeSwgbmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiVmFyaWFibGVIaXN0b3J5IGhhcyBubyBzdWNoIG1ldGhvZCAlcyIgJSBuYW1lKQorCisgICAgICAgIG5ld2Z1bmMgPSBwYXJ0aWFsKHNlbGYucmVtb3RlQ29tbWFuZCwgbmFtZSkKKyAgICAgICAgc2V0YXR0cihzZWxmLCBuYW1lLCBuZXdmdW5jKQorICAgICAgICByZXR1cm4gbmV3ZnVuYworCitjbGFzcyBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdG9yeToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGluZm9pbCwgZHNpbmRleCk6CisgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKKyAgICAgICAgc2VsZi5kc2luZGV4ID0gZHNpbmRleAorCisgICAgZGVmIHJlbW90ZUNvbW1hbmQoc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JJbmNIaXN0Q21kJywgc2VsZi5kc2luZGV4LCBjbWQsIGFyZ3MsIGt3YXJncykKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoYmIuZGF0YV9zbWFydC5JbmNsdWRlSGlzdG9yeSwgbmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiSW5jbHVkZUhpc3RvcnkgaGFzIG5vIHN1Y2ggbWV0aG9kICVzIiAlIG5hbWUpCisKKyAgICAgICAgbmV3ZnVuYyA9IHBhcnRpYWwoc2VsZi5yZW1vdGVDb21tYW5kLCBuYW1lKQorICAgICAgICBzZXRhdHRyKHNlbGYsIG5hbWUsIG5ld2Z1bmMpCisgICAgICAgIHJldHVybiBuZXdmdW5jCisKIGNsYXNzIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3I6Ci0gICAgIiIiQ29ubmVjdG9yIG9iamVjdCB1c2VkIHRvIGVuYWJsZSBhY2Nlc3MgdG8gZGF0YXN0b3JlIG9iamVjdHMgdmlhIHRpbmZvaWwiIiIKKyAgICAiIiIKKyAgICBDb25uZWN0b3Igb2JqZWN0IHVzZWQgdG8gZW5hYmxlIGFjY2VzcyB0byBkYXRhc3RvcmUgb2JqZWN0cyB2aWEgdGluZm9pbAorICAgIE1ldGhvZCBjYWxscyBhcmUgdHJhbnNtaXR0ZWQgdG8gdGhlIHJlbW90ZSBkYXRhc3RvcmUgZm9yIHByb2Nlc3NpbmcsIGlmIGEgZGF0YXN0b3JlIGlzCisgICAgcmV0dXJuZWQgd2UgcmV0dXJuIGEgY29ubmVjdG9yIG9iamVjdCBmb3IgdGhlIG5ldyBzdG9yZQorICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIGRzaW5kZXgpOgogICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCiAgICAgICAgIHNlbGYuZHNpbmRleCA9IGRzaW5kZXgKLSAgICBkZWYgZ2V0VmFyKHNlbGYsIG5hbWUpOgotICAgICAgICB2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRmluZFZhcicsIHNlbGYuZHNpbmRleCwgbmFtZSkKLSAgICAgICAgb3ZlcnJpZGVzID0gTm9uZQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgIGlmICdfY29ubmVjdG9yX29yaWd0eXBlJyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZVsnX2NvbnRlbnQnXSA9IHNlbGYudGluZm9pbC5fcmVjb252ZXJ0X3R5cGUodmFsdWVbJ19jb250ZW50J10sIHZhbHVlWydfY29ubmVjdG9yX29yaWd0eXBlJ10pCi0gICAgICAgICAgICAgICAgZGVsIHZhbHVlWydfY29ubmVjdG9yX29yaWd0eXBlJ10KLSAgICAgICAgICAgIGlmICdfY29ubmVjdG9yX292ZXJyaWRlcycgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgb3ZlcnJpZGVzID0gdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10KLSAgICAgICAgICAgICAgICBkZWwgdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10KLSAgICAgICAgcmV0dXJuIHZhbHVlLCBvdmVycmlkZXMKLSAgICBkZWYgZ2V0S2V5cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNldChzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckdldEtleXMnLCBzZWxmLmRzaW5kZXgpKQotICAgIGRlZiBnZXRWYXJIaXN0b3J5KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JHZXRWYXJIaXN0b3J5Jywgc2VsZi5kc2luZGV4LCBuYW1lKQotICAgIGRlZiBleHBhbmRQeXRob25SZWYoc2VsZiwgdmFybmFtZSwgZXhwciwgZCk6Ci0gICAgICAgIGRzID0gYmIucmVtb3RlZGF0YS5SZW1vdGVEYXRhc3RvcmVzLnRyYW5zbWl0X2RhdGFzdG9yZShkKQotICAgICAgICByZXQgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckV4cGFuZFB5dGhvblJlZicsIGRzLCB2YXJuYW1lLCBleHByKQorICAgICAgICBzZWxmLnZhcmhpc3RvcnkgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yVmFySGlzdG9yeSh0aW5mb2lsLCBkc2luZGV4KQorICAgICAgICBzZWxmLmluY2hpc3RvcnkgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdG9yeSh0aW5mb2lsLCBkc2luZGV4KQorCisgICAgZGVmIHJlbW90ZUNvbW1hbmQoc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXQgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckNtZCcsIHNlbGYuZHNpbmRleCwgY21kLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmV0LCBiYi5jb21tYW5kLkRhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUpOgorICAgICAgICAgICAgcmV0dXJuIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZi50aW5mb2lsLCByZXQuZHNpbmRleCkKICAgICAgICAgcmV0dXJuIHJldAotICAgIGRlZiBzZXRWYXIoc2VsZiwgdmFybmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnc2V0VmFyaWFibGUnLCB2YXJuYW1lLCB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCAtIGluZGljYXRlIHRoYXQgc2V0dGluZyBzaG91bGQKLSAgICAgICAgICAgICMgYmUgcmVkaXJlY3RlZCB0byBsb2NhbCBzaWRlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGRlZiBzZXRWYXJGbGFnKHNlbGYsIHZhcm5hbWUsIGZsYWduYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIHNlbGYuZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JTZXRWYXJGbGFnJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lLCBmbGFnbmFtZSwgdmFsdWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBkZWYgZGVsVmFyKHNlbGYsIHZhcm5hbWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRGVsVmFyJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3QgY3VycmVudGx5IGltcGxlbWVudGVkIC0gaW5kaWNhdGUgdGhhdCBzZXR0aW5nIHNob3VsZAotICAgICAgICAgICAgIyBiZSByZWRpcmVjdGVkIHRvIGxvY2FsIHNpZGUKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgZGVmIGRlbFZhckZsYWcoc2VsZiwgdmFybmFtZSwgZmxhZ25hbWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRGVsVmFyJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lLCBmbGFnbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCAtIGluZGljYXRlIHRoYXQgc2V0dGluZyBzaG91bGQKLSAgICAgICAgICAgICMgYmUgcmVkaXJlY3RlZCB0byBsb2NhbCBzaWRlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGRlZiByZW5hbWVWYXIoc2VsZiwgbmFtZSwgbmV3bmFtZSk6Ci0gICAgICAgIGlmIHNlbGYuZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JSZW5hbWVWYXInLCBzZWxmLmRzaW5kZXgsIG5hbWUsIG5ld25hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoYmIuZGF0YS5fZGljdF90eXBlLCBuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJEYXRhIHN0b3JlIGhhcyBubyBzdWNoIG1ldGhvZCAlcyIgJSBuYW1lKQorCisgICAgICAgIG5ld2Z1bmMgPSBwYXJ0aWFsKHNlbGYucmVtb3RlQ29tbWFuZCwgbmFtZSkKKyAgICAgICAgc2V0YXR0cihzZWxmLCBuYW1lLCBuZXdmdW5jKQorICAgICAgICByZXR1cm4gbmV3ZnVuYworCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBrZXlzID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JDbWQnLCBzZWxmLmRzaW5kZXgsICJrZXlzIiwgW10sIHt9KQorICAgICAgICBmb3IgayBpbiBrZXlzOgorICAgICAgICAgICAgeWllbGQgawogCiBjbGFzcyBUaW5mb2lsQ29va2VyQWRhcHRlcjoKICAgICAiIiIKQEAgLTEyNywxMiArMTMxLDEzIEBACiAKICAgICBjbGFzcyBUaW5mb2lsUmVjaXBlQ2FjaGVBZGFwdGVyOgogICAgICAgICAiIiIgY29va2VyLnJlY2lwZWNhY2hlIGFkYXB0ZXIgIiIiCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIG1jPScnKToKICAgICAgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKKyAgICAgICAgICAgIHNlbGYubWMgPSBtYwogICAgICAgICAgICAgc2VsZi5fY2FjaGUgPSB7fQogCiAgICAgICAgIGRlZiBnZXRfcGtnX3BuX2ZuKHNlbGYpOgotICAgICAgICAgICAgcGtnX3BuID0gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVzJykgb3IgW10pCisgICAgICAgICAgICBwa2dfcG4gPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZXMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIHBrZ19mbiA9IHt9CiAgICAgICAgICAgICBmb3IgcG4sIGZubGlzdCBpbiBwa2dfcG4uaXRlbXMoKToKICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZm5saXN0OgpAQCAtMTUxLDI3ICsxNTYsMjcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmdldF9wa2dfcG5fZm4oKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWNoZVtuYW1lXQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdkZXBzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZURlcGVuZHMnKSBvciBbXSkKKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZURlcGVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncnVuZGVwcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGFtYmRhOiBkZWZhdWx0ZGljdChsaXN0KSwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSdW50aW1lRGVwZW5kcycpIG9yIFtdKQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZURlcGVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncnVucmVjcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGFtYmRhOiBkZWZhdWx0ZGljdChsaXN0KSwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSdW50aW1lUmVjb21tZW5kcycpIG9yIFtdKQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZVJlY29tbWVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGtnX3BlcHZwcic6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVWZXJzaW9ucycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVWZXJzaW9ucycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ2luaGVyaXRzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZUluaGVyaXRzJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZUluaGVyaXRzJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnYmJmaWxlX3ByaW9yaXR5JzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldEJiRmlsZVByaW9yaXR5Jykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldEJiRmlsZVByaW9yaXR5Jywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGtnX2RwJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldERlZmF1bHRQcmVmZXJlbmNlJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldERlZmF1bHRQcmVmZXJlbmNlJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnZm5fcHJvdmlkZXMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUHJvdmlkZXMnKSBvciB7fQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUHJvdmlkZXMnLCBzZWxmLm1jKSBvciB7fQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdwYWNrYWdlcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlcycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlcycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3BhY2thZ2VzX2R5bmFtaWMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUGFja2FnZXNEeW5hbWljJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVBhY2thZ2VzRHluYW1pYycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3Jwcm92aWRlcnMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UlByb3ZpZGVycycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSUHJvdmlkZXJzJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpKQogCkBAIC0xODIsOCArMTg3LDkgQEAKICAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAogICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBzZWxmLlRpbmZvaWxDb29rZXJDb2xsZWN0aW9uQWRhcHRlcih0aW5mb2lsKQogICAgICAgICBzZWxmLnJlY2lwZWNhY2hlcyA9IHt9Ci0gICAgICAgICMgRklYTUUgYWxsIG1hY2hpbmVzCiAgICAgICAgIHNlbGYucmVjaXBlY2FjaGVzWycnXSA9IHNlbGYuVGluZm9pbFJlY2lwZUNhY2hlQWRhcHRlcih0aW5mb2lsKQorICAgICAgICBmb3IgbWMgaW4gKHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQk1VTFRJQ09ORklHJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgICAgICBzZWxmLnJlY2lwZWNhY2hlc1ttY10gPSBzZWxmLlRpbmZvaWxSZWNpcGVDYWNoZUFkYXB0ZXIodGluZm9pbCwgbWMpCiAgICAgICAgIHNlbGYuX2NhY2hlID0ge30KICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgICMgR3JhYiB0aGVzZSBvbmx5IHdoZW4gdGhleSBhcmUgcmVxdWVzdGVkIHNpbmNlIHRoZXkgYXJlbid0IGFsd2F5cyB1c2VkCkBAIC00MTAsOSArNDE2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnJ1bl9hY3Rpb25zKGNvbmZpZ19wYXJhbXMpCiAgICAgICAgICAgICAgICAgc2VsZi5yZWNpcGVzX3BhcnNlZCA9IFRydWUKIAotICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgICAgICBjb25uZWN0b3IgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYsIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmNvbmZpZ19kYXRhLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQorICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSA9IFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZiwgMCkKICAgICAgICAgICAgIHNlbGYuY29va2VyID0gVGluZm9pbENvb2tlckFkYXB0ZXIoc2VsZikKICAgICAgICAgICAgIHNlbGYuY29va2VyX2RhdGEgPSBzZWxmLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddCiAgICAgICAgIGVsc2U6CkBAIC01MDEsMTEgKzUwNSwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIE9yZGVyZWREaWN0KHNlbGYucnVuX2NvbW1hbmQoJ2dldFNraXBwZWRSZWNpcGVzJykpCiAKLSAgICBkZWYgZ2V0X2FsbF9wcm92aWRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnJ1bl9jb21tYW5kKCdhbGxQcm92aWRlcnMnKSkKKyAgICBkZWYgZ2V0X2FsbF9wcm92aWRlcnMoc2VsZiwgbWM9JycpOgorICAgICAgICByZXR1cm4gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi5ydW5fY29tbWFuZCgnYWxsUHJvdmlkZXJzJywgbWMpKQogCi0gICAgZGVmIGZpbmRfcHJvdmlkZXJzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnZmluZFByb3ZpZGVycycpCisgICAgZGVmIGZpbmRfcHJvdmlkZXJzKHNlbGYsIG1jPScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2ZpbmRQcm92aWRlcnMnLCBtYykKIAogICAgIGRlZiBmaW5kX2Jlc3RfcHJvdmlkZXIoc2VsZiwgcG4pOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnZmluZEJlc3RQcm92aWRlcicsIHBuKQpAQCAtNjI0LDkgKzYyOCw2IEBACiAgICAgICAgICAgICBhcHBlbmRzOiBUcnVlIHRvIGFwcGx5IGJiYXBwZW5kcywgRmFsc2Ugb3RoZXJ3aXNlCiAgICAgICAgICAgICBhcHBlbmRsaXN0OiBvcHRpb25hbCBsaXN0IG9mIGJiYXBwZW5kIGZpbGVzIHRvIGFwcGx5LCBpZiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gZmlsdGVyIHRoZW0KLSAgICAgICAgICAgIGNvbmZpZ19kYXRhOiBjdXN0b20gY29uZmlnIGRhdGFzdG9yZSB0byB1c2UuIE5PVEU6IGlmIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgY29uZmlnX2RhdGEgdGhlbiB5b3UgY2Fubm90IHVzZSBhIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBmbi4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYudHJhY2tpbmc6CiAgICAgICAgICAgICAjIEVuYWJsZSBoaXN0b3J5IHRyYWNraW5nIGp1c3QgZm9yIHRoZSBwYXJzZSBvcGVyYXRpb24KQEAgLTYzNSw4ICs2MzYsOCBAQAogICAgICAgICAgICAgaWYgYXBwZW5kcyBhbmQgYXBwZW5kbGlzdCA9PSBbXToKICAgICAgICAgICAgICAgICBhcHBlbmRzID0gRmFsc2UKICAgICAgICAgICAgIGlmIGNvbmZpZ19kYXRhOgotICAgICAgICAgICAgICAgIGRjdHIgPSBiYi5yZW1vdGVkYXRhLlJlbW90ZURhdGFzdG9yZXMudHJhbnNtaXRfZGF0YXN0b3JlKGNvbmZpZ19kYXRhKQotICAgICAgICAgICAgICAgIGRzY29uID0gc2VsZi5ydW5fY29tbWFuZCgncGFyc2VSZWNpcGVGaWxlJywgZm4sIGFwcGVuZHMsIGFwcGVuZGxpc3QsIGRjdHIpCisgICAgICAgICAgICAgICAgIGNvbmZpZ19kYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGNvbmZpZ19kYXRhKQorICAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0LCBjb25maWdfZGF0YS5kc2luZGV4KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0KQogICAgICAgICAgICAgaWYgZHNjb246CkBAIC03MjMsMjEgKzcyNCw5IEBACiAgICAgICAgICAgICAjIEJvcnJvd2VkIGZyb20ga25vdHR5LCBpbnN0ZWFkIHNvbWV3aGF0IGhhY2tpbHkgd2UgdXNlIHRoZSBoZWxwZXIKICAgICAgICAgICAgICMgYXMgdGhlIG9iamVjdCB0byBzdG9yZSAic2h1dGRvd24iIG9uCiAgICAgICAgICAgICBoZWxwZXIgPSBiYi51aS51aWhlbHBlci5CQlVJSGVscGVyKCkKLSAgICAgICAgICAgICMgV2Ugc2V0IHVwIGxvZ2dpbmcgb3B0aW9uYWxseSBpbiB0aGUgY29uc3RydWN0b3Igc28gbm93IHdlIG5lZWQgdG8KLSAgICAgICAgICAgICMgZ3JhYiB0aGUgaGFuZGxlcnMgdG8gcGFzcyB0byBUZXJtaW5hbEZpbHRlcgotICAgICAgICAgICAgY29uc29sZSA9IE5vbmUKLSAgICAgICAgICAgIGVycmNvbnNvbGUgPSBOb25lCi0gICAgICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlID0gaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICBlbGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJjb25zb2xlID0gaGFuZGxlcgotICAgICAgICAgICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKLSAgICAgICAgICAgIGZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQogICAgICAgICAgICAgaGVscGVyLnNodXRkb3duID0gMAogICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IE5vbmUKLSAgICAgICAgICAgIHRlcm1maWx0ZXIgPSBiYi51aS5rbm90dHkuVGVybWluYWxGaWx0ZXIoaGVscGVyLCBoZWxwZXIsIGNvbnNvbGUsIGVycmNvbnNvbGUsIGZvcm1hdCwgcXVpZXQ9c2VsZi5xdWlldCkKKyAgICAgICAgICAgIHRlcm1maWx0ZXIgPSBiYi51aS5rbm90dHkuVGVybWluYWxGaWx0ZXIoaGVscGVyLCBoZWxwZXIsIHNlbGYubG9nZ2VyLmhhbmRsZXJzLCBxdWlldD1zZWxmLnF1aWV0KQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKQEAgLTg1OSw5ICs4NDgsNyBAQAogICAgICAgICAgICAgbmV3b2JqID0gb3JpZ3R5cGUob2JqKQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmV3b2JqLCBiYi5jb21tYW5kLkRhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUpOgotICAgICAgICAgICAgY29ubmVjdG9yID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvcihzZWxmLCBuZXdvYmouZHNpbmRleCkKLSAgICAgICAgICAgIG5ld29iaiA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgICAgICBuZXdvYmouc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCisgICAgICAgICAgICBuZXdvYmogPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYsIG5ld29iai5kc2luZGV4KQogCiAgICAgICAgIHJldHVybiBuZXdvYmoKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQppbmRleCA1Y2JjYTk3Li44MmM2MmUzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQpAQCAtOTM1LDcgKzkzNSw3IEBACiAKICAgICAgICAgICAgICMgb25seSByZXNldCB0aGUgYnVpbGQgbmFtZSBpZiB0aGUgb25lIG9uIHRoZSBzZXJ2ZXIgaXMgYWN0dWFsbHkKICAgICAgICAgICAgICMgYSB2YWxpZCB2YWx1ZSBmb3IgdGhlIGJ1aWxkX25hbWUgZmllbGQKLSAgICAgICAgICAgIGlmIGJ1aWxkX25hbWUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGJ1aWxkX25hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgYnVpbGRfaW5mb1snYnVpbGRfbmFtZSddID0gYnVpbGRfbmFtZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVlCiAKQEAgLTExOTQsNyArMTE5NCw3IEBACiAgICAgICAgIGV2ZGF0YSA9IEJ1aWxkSW5mb0hlbHBlci5fZ2V0X2RhdGFfZnJvbV9ldmVudChldmVudCkKIAogICAgICAgICBmb3IgdCBpbiBzZWxmLmludGVybmFsX3N0YXRlWyd0YXJnZXRzJ106Ci0gICAgICAgICAgICBpZiB0LmlzX2ltYWdlID09IFRydWU6CisgICAgICAgICAgICBpZiB0LmlzX2ltYWdlOgogICAgICAgICAgICAgICAgIG91dHB1dF9maWxlcyA9IGxpc3QoZXZkYXRhLmtleXMoKSkKICAgICAgICAgICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dF9maWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgdC50YXJnZXQgaW4gb3V0cHV0IGFuZCAncm9vdGZzJyBpbiBvdXRwdXQgYW5kIG5vdCBvdXRwdXQuZW5kc3dpdGgoIi5tYW5pZmVzdCIpOgpAQCAtMTIzNiw3ICsxMjM2LDcgQEAKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydvdXRjb21lJ10gPSBUYXNrLk9VVENPTUVfUFJFQlVJTFQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhc2tfaW5mb3JtYXRpb25bJ3Rhc2tfZXhlY3V0ZWQnXSA9IFRydWUKLSAgICAgICAgICAgIGlmICdub2V4ZWMnIGluIHZhcnMoZXZlbnQpIGFuZCBldmVudC5ub2V4ZWMgPT0gVHJ1ZToKKyAgICAgICAgICAgIGlmICdub2V4ZWMnIGluIHZhcnMoZXZlbnQpIGFuZCBldmVudC5ub2V4ZWM6CiAgICAgICAgICAgICAgICAgdGFza19pbmZvcm1hdGlvblsndGFza19leGVjdXRlZCddID0gRmFsc2UKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydvdXRjb21lJ10gPSBUYXNrLk9VVENPTUVfRU1QVFkKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydzY3JpcHRfdHlwZSddID0gVGFzay5DT0RJTkdfTkEKQEAgLTE3NzYsNyArMTc3Niw3IEBACiAgICAgICAgIGltYWdlX2ZpbGVfZXh0ZW5zaW9uc191bmlxdWUgPSB7fQogICAgICAgICBpbWFnZV9mc3R5cGVzID0gc2VsZi5zZXJ2ZXIucnVuQ29tbWFuZCgKICAgICAgICAgICAgIFsnZ2V0VmFyaWFibGUnLCAnSU1BR0VfRlNUWVBFUyddKVswXQotICAgICAgICBpZiBpbWFnZV9mc3R5cGVzICE9IE5vbmU6CisgICAgICAgIGlmIGltYWdlX2ZzdHlwZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbWFnZV90eXBlc19zdHIgPSBpbWFnZV9mc3R5cGVzLnN0cmlwKCkKICAgICAgICAgICAgIGltYWdlX2ZpbGVfZXh0ZW5zaW9ucyA9IHJlLnN1YihyJyB7Mix9JywgJyAnLCBpbWFnZV90eXBlc19zdHIpCiAgICAgICAgICAgICBpbWFnZV9maWxlX2V4dGVuc2lvbnNfdW5pcXVlID0gc2V0KGltYWdlX2ZpbGVfZXh0ZW5zaW9ucy5zcGxpdCgnICcpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQppbmRleCAzNTczNmFkLi44N2U4NzNkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQpAQCAtMTIsNyArMTIsNiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwcm9ncmVzc2JhcgogaW1wb3J0IHNpZ25hbApAQCAtMzUsMTUgKzM0LDE1IEBACiAgICAgICAgIHNlbGYubXNnID0gbXNnCiAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSBleHRyYXBvcwogICAgICAgICBpZiBub3Qgd2lkZ2V0czoKLSAgICAgICAgICAgIHdpZGdldHMgPSBbcHJvZ3Jlc3NiYXIuUGVyY2VudGFnZSgpLCAnICcsIHByb2dyZXNzYmFyLkJhcigpLCAnICcsCi0gICAgICAgICAgICBwcm9ncmVzc2Jhci5FVEEoKV0KLSAgICAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSA0CisgICAgICAgICAgICB3aWRnZXRzID0gWyc6ICcsIHByb2dyZXNzYmFyLlBlcmNlbnRhZ2UoKSwgJyAnLCBwcm9ncmVzc2Jhci5CYXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyAnLCBwcm9ncmVzc2Jhci5FVEEoKV0KKyAgICAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSA1CiAKICAgICAgICAgaWYgcmVzaXplX2hhbmRsZXI6CiAgICAgICAgICAgICBzZWxmLl9yZXNpemVfZGVmYXVsdCA9IHJlc2l6ZV9oYW5kbGVyCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9yZXNpemVfZGVmYXVsdCA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR1dJTkNIKQotICAgICAgICBwcm9ncmVzc2Jhci5Qcm9ncmVzc0Jhci5fX2luaXRfXyhzZWxmLCBtYXh2YWwsIFtzZWxmLm1zZyArICI6ICJdICsgd2lkZ2V0cywgZmQ9c3lzLnN0ZG91dCkKKyAgICAgICAgcHJvZ3Jlc3NiYXIuUHJvZ3Jlc3NCYXIuX19pbml0X18oc2VsZiwgbWF4dmFsLCBbc2VsZi5tc2ddICsgd2lkZ2V0cywgZmQ9c3lzLnN0ZG91dCkKIAogICAgIGRlZiBfaGFuZGxlX3Jlc2l6ZShzZWxmLCBzaWdudW09Tm9uZSwgZnJhbWU9Tm9uZSk6CiAgICAgICAgIHByb2dyZXNzYmFyLlByb2dyZXNzQmFyLl9oYW5kbGVfcmVzaXplKHNlbGYsIHNpZ251bSwgZnJhbWUpCkBAIC0xMTAsMTIgKzEwOSwxMSBAQAogCiAKIGNsYXNzIEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihsb2dnaW5nLkZpbHRlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRmLCBmb3JtYXQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Zik6CiAgICAgICAgIHNlbGYudGYgPSB0ZgotICAgICAgICBzZWxmLmZvcm1hdCA9IGZvcm1hdAogCiAgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBzZWxmLmZvcm1hdC5OT1RFIGFuZCAocmVjb3JkLm1zZy5zdGFydHN3aXRoKCJSdW5uaW5nIikgb3IgcmVjb3JkLm1zZy5zdGFydHN3aXRoKCJyZWNpcGUgIikpOgorICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgKHJlY29yZC5tc2cuc3RhcnRzd2l0aCgiUnVubmluZyIpIG9yIHJlY29yZC5tc2cuc3RhcnRzd2l0aCgicmVjaXBlICIpKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBzZWxmLnRmLmNsZWFyRm9vdGVyKCkKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTE1MSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgIGNyID0gKDI1LCA4MCkKICAgICAgICAgcmV0dXJuIGNyCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbiwgaGVscGVyLCBjb25zb2xlLCBlcnJjb25zb2xlLCBmb3JtYXQsIHF1aWV0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbiwgaGVscGVyLCBoYW5kbGVycywgcXVpZXQpOgogICAgICAgICBzZWxmLm1haW4gPSBtYWluCiAgICAgICAgIHNlbGYuaGVscGVyID0gaGVscGVyCiAgICAgICAgIHNlbGYuY3V1ID0gTm9uZQpAQCAtMTgxLDcgKzE3OSwxMSBAQAogICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRlcm1pb3MuVENTQURSQUlOLCBuZXcpCiAgICAgICAgICAgICBjdXJzZXMuc2V0dXB0ZXJtKCkKICAgICAgICAgICAgIGlmIGN1cnNlcy50aWdldG51bSgiY29sb3JzIikgPiAyOgotICAgICAgICAgICAgICAgIGZvcm1hdC5lbmFibGVfY29sb3IoKQorICAgICAgICAgICAgICAgIGZvciBoIGluIGhhbmRsZXJzOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBoLmZvcm1hdHRlci5lbmFibGVfY29sb3IoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLmVkID0gY3Vyc2VzLnRpZ2V0c3RyKCJlZCIpCiAgICAgICAgICAgICBpZiBzZWxmLmVkOgogICAgICAgICAgICAgICAgIHNlbGYuY3V1ID0gY3Vyc2VzLnRpZ2V0c3RyKCJjdXUiKQpAQCAtMTk3LDEwICsxOTksOSBAQAogICAgICAgICAgICAgc2VsZi5pbnRlcmFjdGl2ZSA9IEZhbHNlCiAgICAgICAgICAgICBiYi5ub3RlKCJVbmFibGUgdG8gdXNlIGludGVyYWN0aXZlIG1vZGUgZm9yIHRoaXMgdGVybWluYWwsIHVzaW5nIGZhbGxiYWNrIikKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBjb25zb2xlOgotICAgICAgICAgICAgY29uc29sZS5hZGRGaWx0ZXIoSW50ZXJhY3RDb25zb2xlTG9nRmlsdGVyKHNlbGYsIGZvcm1hdCkpCi0gICAgICAgIGlmIGVycmNvbnNvbGU6Ci0gICAgICAgICAgICBlcnJjb25zb2xlLmFkZEZpbHRlcihJbnRlcmFjdENvbnNvbGVMb2dGaWx0ZXIoc2VsZiwgZm9ybWF0KSkKKworICAgICAgICBmb3IgaCBpbiBoYW5kbGVyczoKKyAgICAgICAgICAgIGguYWRkRmlsdGVyKEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihzZWxmKSkKIAogICAgICAgICBzZWxmLm1haW5fcHJvZ3Jlc3MgPSBOb25lCiAKQEAgLTI1NSwxOSArMjU2LDE5IEBACiAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGFjdGl2ZXRhc2tzW3RdLmdldCgic3RhcnR0aW1lIiwgTm9uZSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGJhciBvciBwYmFyLmJvdW5jaW5nICE9IChwcm9ncmVzcyA8IDApOgogICAgICAgICAgICAgICAgICAgICBpZiBwcm9ncmVzcyA8IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykgIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgdCksIDEwMCwgd2lkZ2V0cz1bcHJvZ3Jlc3NiYXIuQm91bmNpbmdTbGlkZXIoKSwgJyddLCBleHRyYXBvcz0yLCByZXNpemVfaGFuZGxlcj1zZWxmLnNpZ3dpbmNoX2hhbmRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIgPSBCQlByb2dyZXNzKCIwOiAlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIGFjdGl2ZXRhc2tzW3RdWyJwaWQiXSksIDEwMCwgd2lkZ2V0cz1bJyAnLCBwcm9ncmVzc2Jhci5Cb3VuY2luZ1NsaWRlcigpLCAnJ10sIGV4dHJhcG9zPTMsIHJlc2l6ZV9oYW5kbGVyPXNlbGYuc2lnd2luY2hfaGFuZGxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGJhci5ib3VuY2luZyA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIgPSBCQlByb2dyZXNzKCIwOiAlcyAocGlkICVzKSAiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCB0KSwgMTAwLCB3aWRnZXRzPVtwcm9ncmVzc2Jhci5QZXJjZW50YWdlKCksICcgJywgcHJvZ3Jlc3NiYXIuQmFyKCksICcnXSwgZXh0cmFwb3M9NCwgcmVzaXplX2hhbmRsZXI9c2VsZi5zaWd3aW5jaF9oYW5kbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCBhY3RpdmV0YXNrc1t0XVsicGlkIl0pLCAxMDAsIHdpZGdldHM9WycgJywgcHJvZ3Jlc3NiYXIuUGVyY2VudGFnZSgpLCAnICcsIHByb2dyZXNzYmFyLkJhcigpLCAnJ10sIGV4dHJhcG9zPTUsIHJlc2l6ZV9oYW5kbGVyPXNlbGYuc2lnd2luY2hfaGFuZGxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGJhci5ib3VuY2luZyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZXRhc2tzW3RdWyJwcm9ncmVzc2JhciJdID0gcGJhcgogICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgocGJhciwgcHJvZ3Jlc3MsIHJhdGUsIHN0YXJ0X3RpbWUpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzdGFydF90aW1lID0gYWN0aXZldGFza3NbdF0uZ2V0KCJzdGFydHRpbWUiLCBOb25lKQogICAgICAgICAgICAgICAgIGlmIHN0YXJ0X3RpbWU6Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgiJXMgLSAlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHNlbGYuZWxhcHNlZChjdXJyZW50dGltZSAtIHN0YXJ0X3RpbWUpLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKCIlcyAtICVzIChwaWQgJXMpIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgc2VsZi5lbGFwc2VkKGN1cnJlbnR0aW1lIC0gc3RhcnRfdGltZSksIGFjdGl2ZXRhc2tzW3RdWyJwaWQiXSkpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKCIlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHQpKQorICAgICAgICAgICAgICAgICAgICB0YXNrcy5hcHBlbmQoIiVzIChwaWQgJXMpIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgYWN0aXZldGFza3NbdF1bInBpZCJdKSkKIAogICAgICAgICBpZiBzZWxmLm1haW4uc2h1dGRvd246CiAgICAgICAgICAgICBjb250ZW50ID0gIldhaXRpbmcgZm9yICVzIHJ1bm5pbmcgdGFza3MgdG8gZmluaXNoOiIgJSBsZW4oYWN0aXZldGFza3MpCkBAIC0zNjMsNyArMzY0LDExIEBACiAgICAgaWYgZXJyb3I6CiAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGdldCB0aGUgdmFsdWUgb2YgQkJfQ09OU09MRUxPRyB2YXJpYWJsZTogJXMiICUgZXJyb3IpCiAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oZXJyb3IpCi0gICAgcmV0dXJuIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgY29uc29sZWxvZ2ZpbGUKKyAgICBsb2djb25maWdmaWxlLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFtjbWQsICJCQl9MT0dDT05GSUciXSkKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBCQl9MT0dDT05GSUcgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIHJldHVybiBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlLCBsb2djb25maWdmaWxlCiAKIF9ldnRfbGlzdCA9IFsgImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlRXhpdFdhaXQiLCAiYmIuZXZlbnQuTG9nRXhlY1RUWSIsICJsb2dnaW5nLkxvZ1JlY29yZCIsCiAgICAgICAgICAgICAgICJiYi5idWlsZC5UYXNrRmFpbGVkIiwgImJiLmJ1aWxkLlRhc2tCYXNlIiwgImJiLmV2ZW50LlBhcnNlU3RhcnRlZCIsCkBAIC0zODAsNyArMzg1LDE0OCBAQAogICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgogICAgICAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKIAotICAgIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgY29uc29sZWxvZ2ZpbGUgPSBfbG9nX3NldHRpbmdzX2Zyb21fc2VydmVyKHNlcnZlciwgcGFyYW1zLm9ic2VydmVfb25seSkKKyAgICBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlLCBsb2djb25maWdmaWxlID0gX2xvZ19zZXR0aW5nc19mcm9tX3NlcnZlcihzZXJ2ZXIsIHBhcmFtcy5vYnNlcnZlX29ubHkpCisKKyAgICBsb2dsZXZlbCwgXyA9IGJiLm1zZy5jb25zdHJ1Y3RMb2dPcHRpb25zKCkKKworICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID09IDA6CisgICAgICAgIGNvbnNvbGVfbG9nbGV2ZWwgPSBsb2dsZXZlbAorICAgIGVsaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPiAyOgorICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLkVSUk9SCisgICAgZWxzZToKKyAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5XQVJOSU5HCisKKyAgICBsb2djb25maWcgPSB7CisgICAgICAgICJ2ZXJzaW9uIjogMSwKKyAgICAgICAgImhhbmRsZXJzIjogeworICAgICAgICAgICAgIkJpdEJha2UuY29uc29sZSI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5TdHJlYW1IYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogY29uc29sZV9sb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRvdXQiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnN0ZG91dEZpbHRlciJdLAorICAgICAgICAgICAgICAgICIuIjogeworICAgICAgICAgICAgICAgICAgICAiaXNfY29uc29sZSI6IFRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS5lcnJjb25zb2xlIjogeworICAgICAgICAgICAgICAgICJjbGFzcyI6ICJsb2dnaW5nLlN0cmVhbUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICJmb3JtYXR0ZXIiOiAiQml0QmFrZS5jb25zb2xlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRlcnIiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnN0ZGVyckZpbHRlciJdLAorICAgICAgICAgICAgICAgICIuIjogeworICAgICAgICAgICAgICAgICAgICAiaXNfY29uc29sZSI6IFRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAjIFRoaXMgaGFuZGxlciBjYW4gYmUgdXNlZCBpZiBzcGVjaWZpYyBsb2dnZXJzIHNob3VsZCBwcmludCBvbgorICAgICAgICAgICAgIyB0aGUgY29uc29sZSBhdCBhIGxvd2VyIHNldmVyaXR5IHRoYW4gdGhlIGRlZmF1bHQuIEl0IHdpbGwKKyAgICAgICAgICAgICMgZGlzcGxheSBhbnkgbWVzc2FnZXMgc2VudCB0byBpdCB0aGF0IGFyZSBsb3dlciB0aGFuIHRoZW4KKyAgICAgICAgICAgICMgQml0QmFrZS5jb25zb2xlIGxvZ2dpbmcgbGV2ZWwgKHNvIGFzIHRvIHByZXZlbnQgZHVwbGljYXRpb24gb2YKKyAgICAgICAgICAgICMgbWVzc2FnZXMpLiBOb3RoaW5nIGlzIGF0dGFjaGVkIHRvIHRoaXMgaGFuZGxlciBieSBkZWZhdWx0CisgICAgICAgICAgICAiQml0QmFrZS52ZXJiY29uc29sZSI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5TdHJlYW1IYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogMSwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRvdXQiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlRmlsdGVyIl0sCisgICAgICAgICAgICAgICAgIi4iOiB7CisgICAgICAgICAgICAgICAgICAgICJpc19jb25zb2xlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgImZvcm1hdHRlcnMiOiB7CisgICAgICAgICAgICAjIFRoaXMgZm9ybWF0IGluc3RhbmNlIHdpbGwgZ2V0IGNvbG9yIG91dHB1dCBlbmFibGVkIGJ5IHRoZQorICAgICAgICAgICAgIyB0ZXJtaW5hbAorICAgICAgICAgICAgIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIgOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5CQkxvZ0Zvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAjIFRoZSBmaWxlIGxvZyByZXF1aXJlcyBhIHNlcGFyYXRlIGluc3RhbmNlIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQKKyAgICAgICAgICAgICMgY29sb3IgZW5hYmxlZAorICAgICAgICAgICAgIkJpdEJha2UubG9nZmlsZUZvcm1hdHRlciI6IHsKKyAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkJCTG9nRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0IjogIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZmlsdGVycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLnN0ZG91dEZpbHRlciI6IHsKKyAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkxvZ0ZpbHRlckxUTGV2ZWwiLAorICAgICAgICAgICAgICAgICJsZXZlbCI6ICJFUlJPUiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS5zdGRlcnJGaWx0ZXIiOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5Mb2dGaWx0ZXJHRVFMZXZlbCIsCisgICAgICAgICAgICAgICAgImxldmVsIjogIkVSUk9SIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJCaXRCYWtlLnZlcmJjb25zb2xlRmlsdGVyIjogeworICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuTG9nRmlsdGVyTFRMZXZlbCIsCisgICAgICAgICAgICAgICAgImxldmVsIjogY29uc29sZV9sb2dsZXZlbAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgImxvZ2dlcnMiOiB7CisgICAgICAgICAgICAiQml0QmFrZSI6IHsKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAiaGFuZGxlcnMiOiBbIkJpdEJha2UuY29uc29sZSIsICJCaXRCYWtlLmVycmNvbnNvbGUiXSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRpc2FibGVfZXhpc3RpbmdfbG9nZ2VycyI6IEZhbHNlCisgICAgfQorCisgICAgIyBFbmFibGUgdGhlIGNvbnNvbGUgbG9nIGZpbGUgaWYgZW5hYmxlZAorICAgIGlmIGNvbnNvbGVsb2dmaWxlIGFuZCBub3QgcGFyYW1zLm9wdGlvbnMuc2hvd19lbnZpcm9ubWVudCBhbmQgbm90IHBhcmFtcy5vcHRpb25zLnNob3dfdmVyc2lvbnM6CisgICAgICAgIGxvZ2NvbmZpZyA9IGJiLm1zZy5tZXJnZUxvZ2dpbmdDb25maWcobG9nY29uZmlnLCB7CisgICAgICAgICAgICAgICAgInZlcnNpb24iOiAxLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyIgOiB7CisgICAgICAgICAgICAgICAgICAgICJCaXRCYWtlLmNvbnNvbGVsb2ciOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5GaWxlSGFuZGxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UubG9nZmlsZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6IGNvbnNvbGVsb2dmaWxlLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAjIEp1c3QgbGlrZSB2ZXJiY29uc29sZSwgYW55dGhpbmcgc2VudCBoZXJlIHdpbGwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZpbGUsIHVubGVzcyBpdCB3b3VsZCBnbyB0byBCaXRCYWtlLmNvbnNvbGVsb2cKKyAgICAgICAgICAgICAgICAgICAgIkJpdEJha2UudmVyYmNvbnNvbGVsb2ciIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImNsYXNzIjogImxvZ2dpbmcuRmlsZUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJCaXRCYWtlLmxvZ2ZpbGVGb3JtYXR0ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6IGNvbnNvbGVsb2dmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpbHRlcnMiOiBbIkJpdEJha2UudmVyYmNvbnNvbGVsb2dGaWx0ZXIiXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogeworICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS52ZXJiY29uc29sZWxvZ0ZpbHRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuTG9nRmlsdGVyTFRMZXZlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJsb2dnZXJzIjogeworICAgICAgICAgICAgICAgICAgICAiQml0QmFrZSI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS5jb25zb2xlbG9nIl0sCisgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgIyBPdGhlciBpbnRlcmVzdGluZyB0aGluZ3MgdGhhdCB3ZSB3YW50IHRvIGtlZXAgYW4gZXllIG9uCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIGxvZyBmaWxlcyBpbiBjYXNlIHNvbWVvbmUgaGFzIGFuIGlzc3VlLCBidXQgbm90CisgICAgICAgICAgICAgICAgICAgICMgbmVjZXNzYXJpbHkgc2hvdyB0byB0aGUgdXNlciBvbiB0aGUgY29uc29sZQorICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS5TaWdHZW4uSGFzaEVxdWl2IjogeworICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlbG9nIl0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCI6ICJWRVJCT1NFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS52ZXJiY29uc29sZWxvZyJdLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkKKworICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGNvbnNvbGVsb2dmaWxlKSkKKyAgICAgICAgbG9nbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY29uc29sZWxvZ2ZpbGUpLCAnY29uc29sZS1sYXRlc3QubG9nJykKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2xpbmspCisgICAgICAgIHRyeToKKyAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKGNvbnNvbGVsb2dmaWxlKSwgbG9nbGluaykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHBhc3MKKworICAgIGNvbmYgPSBiYi5tc2cuc2V0TG9nZ2luZ0NvbmZpZyhsb2djb25maWcsIGxvZ2NvbmZpZ2ZpbGUpCiAKICAgICBpZiBzeXMuc3RkaW4uaXNhdHR5KCkgYW5kIHN5cy5zdGRvdXQuaXNhdHR5KCk6CiAgICAgICAgIGxvZ19leGVjX3R0eSA9IFRydWUKQEAgLTM4OSwyMyArNTM1LDkgQEAKIAogICAgIGhlbHBlciA9IHVpaGVscGVyLkJCVUlIZWxwZXIoKQogCi0gICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQotICAgIGVycmNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZGVycikKLSAgICBmb3JtYXRfc3RyID0gIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgotICAgIGZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQotICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID09IDA6Ci0gICAgICAgIGZvcmNlbGV2ZWwgPSBOb25lCi0gICAgZWxpZiBwYXJhbXMub3B0aW9ucy5xdWlldCA+IDI6Ci0gICAgICAgIGZvcmNlbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1IKLSAgICBlbHNlOgotICAgICAgICBmb3JjZWxldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLldBUk5JTkcKLSAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRPdXQsIGZvcmNlbGV2ZWwpCi0gICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoZXJyY29uc29sZSwgYmIubXNnLkJCTG9nRmlsdGVyU3RkRXJyKQotICAgIGNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKLSAgICBlcnJjb25zb2xlLnNldEZvcm1hdHRlcihmb3JtYXQpCi0gICAgaWYgbm90IGJiLm1zZy5oYXNfY29uc29sZV9oYW5kbGVyKGxvZ2dlcik6Ci0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCi0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGVycmNvbnNvbGUpCisgICAgIyBMb29rIGZvciB0aGUgc3BlY2lhbGx5IGRlc2lnbmF0ZWQgaGFuZGxlcnMgd2hpY2ggbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlCisgICAgIyB0ZXJtaW5hbCBoYW5kbGVyCisgICAgY29uc29sZV9oYW5kbGVycyA9IFtoIGZvciBoIGluIGNvbmYuY29uZmlnWydoYW5kbGVycyddLnZhbHVlcygpIGlmIGdldGF0dHIoaCwgJ2lzX2NvbnNvbGUnLCBGYWxzZSldCiAKICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJLbm90dHlVSSIpCiAKQEAgLTQxMywyNCArNTQ1LDE0IEBACiAgICAgICAgIHNlcnZlci50ZXJtaW5hdGVTZXJ2ZXIoKQogICAgICAgICByZXR1cm4KIAotICAgIGNvbnNvbGVsb2cgPSBOb25lCi0gICAgaWYgY29uc29sZWxvZ2ZpbGUgYW5kIG5vdCBwYXJhbXMub3B0aW9ucy5zaG93X2Vudmlyb25tZW50IGFuZCBub3QgcGFyYW1zLm9wdGlvbnMuc2hvd192ZXJzaW9uczoKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShjb25zb2xlbG9nZmlsZSkpCi0gICAgICAgIGNvbmxvZ2Zvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQotICAgICAgICBjb25zb2xlbG9nID0gbG9nZ2luZy5GaWxlSGFuZGxlcihjb25zb2xlbG9nZmlsZSkKLSAgICAgICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoY29uc29sZWxvZykKLSAgICAgICAgY29uc29sZWxvZy5zZXRGb3JtYXR0ZXIoY29ubG9nZm9ybWF0KQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlbG9nKQotICAgICAgICBsb2dsaW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShjb25zb2xlbG9nZmlsZSksICdjb25zb2xlLWxhdGVzdC5sb2cnKQotICAgICAgICBiYi51dGlscy5yZW1vdmUobG9nbGluaykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUoY29uc29sZWxvZ2ZpbGUpLCBsb2dsaW5rKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgcGFzcwotCiAgICAgbGxldmVsLCBkZWJ1Z19kb21haW5zID0gYmIubXNnLmNvbnN0cnVjdExvZ09wdGlvbnMoKQogICAgIHNlcnZlci5ydW5Db21tYW5kKFsic2V0RXZlbnRNYXNrIiwgc2VydmVyLmdldEV2ZW50SGFuZGxlKCksIGxsZXZlbCwgZGVidWdfZG9tYWlucywgX2V2dF9saXN0XSkKIAorICAgICMgVGhlIGxvZ2dpbmdfdHJlZSBtb2R1bGUgaXMgKmV4dHJlbWVseSogaGVscGZ1bCBpbiBkZWJ1Z2dpbmcgbG9nZ2luZworICAgICMgZG9tYWlucy4gVW5jb21tZW50IGhlcmUgdG8gZHVtcCB0aGUgbG9nZ2luZyB0cmVlIHdoZW4gYml0YmFrZSBzdGFydHMKKyAgICAjaW1wb3J0IGxvZ2dpbmdfdHJlZQorICAgICNsb2dnaW5nX3RyZWUucHJpbnRvdXQoKQorCiAgICAgdW5pdmVyc2UgPSBGYWxzZQogICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgogICAgICAgICBwYXJhbXMudXBkYXRlRnJvbVNlcnZlcihzZXJ2ZXIpCkBAIC00NDgsNyArNTcwLDcgQEAKICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6ICVzIiAlIChjbWRsaW5lLCBlcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbGlmIHJldCAhPSBUcnVlOgorICAgICAgICBlbGlmIG5vdCByZXQ6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6IHJldHVybmVkICVzIiAlIChjbWRsaW5lLCByZXQpKQogICAgICAgICAgICAgcmV0dXJuIDEKIApAQCAtNDY1LDcgKzU4Nyw3IEBACiAgICAgcHJpbnRpbnRlcnZhbCA9IDUwMDAKICAgICBsYXN0cHJpbnQgPSB0aW1lLnRpbWUoKQogCi0gICAgdGVybWZpbHRlciA9IHRmKG1haW4sIGhlbHBlciwgY29uc29sZSwgZXJyY29uc29sZSwgZm9ybWF0LCBwYXJhbXMub3B0aW9ucy5xdWlldCkKKyAgICB0ZXJtZmlsdGVyID0gdGYobWFpbiwgaGVscGVyLCBjb25zb2xlX2hhbmRsZXJzLCBwYXJhbXMub3B0aW9ucy5xdWlldCkKICAgICBhdGV4aXQucmVnaXN0ZXIodGVybWZpbHRlci5maW5pc2gpCiAKICAgICB3aGlsZSBUcnVlOgpAQCAtNDc3LDcgKzU5OSw4IEBACiAgICAgICAgICAgICBpZiBldmVudCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIG1haW4uc2h1dGRvd24gPiAxOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIudXBkYXRlRm9vdGVyKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2Vwcm9ncmVzczoKKyAgICAgICAgICAgICAgICAgICAgdGVybWZpbHRlci51cGRhdGVGb290ZXIoKQogICAgICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRIYW5kbGVyLndhaXRFdmVudCgwLjI1KQogICAgICAgICAgICAgICAgIGlmIGV2ZW50IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MDMsMjYgKzYyNiwyNiBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgogICAgICAgICAgICAgICAgIGxhc3RwcmludCA9IHRpbWUudGltZSgpCiAgICAgICAgICAgICAgICAgcHJpbnRpbnRlcnZhbCA9IDUwMDAKLSAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vID49IGZvcm1hdC5FUlJPUjoKKyAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vID49IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5FUlJPUjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICsgMQogICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSAxCi0gICAgICAgICAgICAgICAgZWxpZiBldmVudC5sZXZlbG5vID09IGZvcm1hdC5XQVJOSU5HOgorICAgICAgICAgICAgICAgIGVsaWYgZXZlbnQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORzoKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgPSB3YXJuaW5ncyArIDEKIAogICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgIyBGb3IgIm5vcm1hbCIgbG9nZ2luZyBjb25kaXRpb25zLCBkb24ndCBzaG93IG5vdGUgbG9ncyBmcm9tIHRhc2tzCiAgICAgICAgICAgICAgICAgICAgICMgYnV0IGRvIHNob3cgdGhlbSBpZiB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwgdG8KICAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHZlcmJvc2UvZGVidWcgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA8PSBmb3JtYXQuTk9URSBhbmQgKGV2ZW50LmxldmVsbm8gPCBsbGV2ZWwgb3IgKGV2ZW50LmxldmVsbm8gPT0gZm9ybWF0Lk5PVEUgYW5kIGxsZXZlbCAhPSBmb3JtYXQuVkVSQk9TRSkpOgorICAgICAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vIDw9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5OT1RFIGFuZCAoZXZlbnQubGV2ZWxubyA8IGxsZXZlbCBvciAoZXZlbnQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgbGxldmVsICE9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5WRVJCT1NFKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgICAgICMgUHJlZml4IHRhc2sgbWVzc2FnZXMgd2l0aCByZWNpcGUvdGFzawotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC50YXNrcGlkIGluIGhlbHBlci5ydW5uaW5nX3Rhc2tzIGFuZCBldmVudC5sZXZlbG5vICE9IGZvcm1hdC5QTEFJTjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvID0gaGVscGVyLnJ1bm5pbmdfdGFza3NbZXZlbnQudGFza3BpZF0KKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCBpbiBoZWxwZXIucGlkbWFwIGFuZCBldmVudC5sZXZlbG5vICE9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5QTEFJTjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvID0gaGVscGVyLnJ1bm5pbmdfdGFza3NbaGVscGVyLnBpZG1hcFtldmVudC50YXNrcGlkXV0KICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm1zZyA9IHRhc2tpbmZvWyd0aXRsZSddICsgJzogJyArIGV2ZW50Lm1zZwogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICdmbicpOgogICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSBldmVudC5mbiArICc6ICcgKyBldmVudC5tc2cKLSAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKGV2ZW50KQorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKGV2ZW50Lm5hbWUpLmhhbmRsZShldmVudCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkU2lsZW50KToKQEAgLTUzOSw2ICs2NjIsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRvdGFsID09IDA6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgdGVybWZpbHRlci5jbGVhckZvb3RlcigpCiAgICAgICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IG5ld19wcm9ncmVzcygiUGFyc2luZyByZWNpcGVzIiwgZXZlbnQudG90YWwpLnN0YXJ0KCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyk6CkBAIC01ODksNiArNzEzLDcgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEV4aXQpOgogICAgICAgICAgICAgICAgIGlmIG5vdCByZXR1cm5fdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IGV2ZW50LmV4aXRjb2RlCisgICAgICAgICAgICAgICAgbWFpbi5zaHV0ZG93biA9IDIKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgKGJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCwgYmIuY29va2VyLkNvb2tlckV4aXQpKToKICAgICAgICAgICAgICAgICBtYWluLnNodXRkb3duID0gMgpAQCAtNjM4LDYgKzc2Myw3IEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCk6CiAgICAgICAgICAgICAgICAgaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPiAxOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIuY2xlYXJGb290ZXIoKQogICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MgPSBuZXdfcHJvZ3Jlc3MoZXZlbnQucHJvY2Vzc25hbWUsIGV2ZW50LnRvdGFsKQogICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3Muc3RhcnQoRmFsc2UpCiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTc0NSw4ICs4NzEsNiBAQAogICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgcGFzcwogCi0gICAgaWYgY29uc29sZWxvZzoKLSAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoY29uc29sZWxvZykKLSAgICAgICAgY29uc29sZWxvZy5jbG9zZSgpCisgICAgbG9nZ2luZy5zaHV0ZG93bigpCiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkKaW5kZXggYzQyMjczMi4uZGE0ZmJlYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weQpAQCAtMzcsNyArMzcsNyBAQAogCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MsIHN5cywgaXRlcnRvb2xzLCB0aW1lLCBzdWJwcm9jZXNzCitpbXBvcnQgb3MsIHN5cywgaXRlcnRvb2xzLCB0aW1lCiAKIHRyeToKICAgICBpbXBvcnQgY3Vyc2VzCkBAIC00Niw3ICs0Niw2IEBACiAKIGltcG9ydCBiYgogaW1wb3J0IHhtbHJwYy5jbGllbnQKLWZyb20gYmIgaW1wb3J0IHVpCiBmcm9tIGJiLnVpIGltcG9ydCB1aWhlbHBlcgogCiBwYXJzZXNwaW4gPSBpdGVydG9vbHMuY3ljbGUoIHInfC8tXFwnICkKQEAgLTIzOSw3ICsyMzgsNyBAQAogICAgICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiAlcyIgJSAoY21kbGluZSwgZXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxpZiByZXQgIT0gVHJ1ZToKKyAgICAgICAgICAgIGVsaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZ2V0IGRlZmF1bHQgY29tbWFuZGxpbmQhICVzIiAlIHJldCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZXhjZXB0IHhtbHJwYy5jbGllbnQuRmF1bHQgYXMgeDoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQppbmRleCA1MGE5NDNjLi44ZmZmMjQ0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3Rhc2tleHAucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CkBAIC0xMSwxMCArMTEsOCBAQAogaW1wb3J0IGdpCiBnaS5yZXF1aXJlX3ZlcnNpb24oJ0d0aycsICczLjAnKQogZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHdGssIEdkaywgR09iamVjdAotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlCiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIHhtbHJwYyBpbXBvcnQgY2xpZW50Ci1pbXBvcnQgdGltZQogaW1wb3J0IGJiCiBpbXBvcnQgYmIuZXZlbnQKIApAQCAtMjAyLDcgKzIwMCw3IEBACiAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiAlcyIgJSAoY21kbGluZSwgZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxpZiByZXQgIT0gVHJ1ZToKKyAgICAgICAgZWxpZiBub3QgcmV0OgogICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiByZXR1cm5lZCAlcyIgJSAoY21kbGluZSwgcmV0KSkKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgZXhjZXB0IGNsaWVudC5GYXVsdCBhcyB4OgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90ZWFtY2l0eS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGVhbWNpdHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1NDI5MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGVhbWNpdHkucHkKQEAgLTAsMCArMSwzOTggQEAKKyMKKyMgVGVhbUNpdHkgVUkgSW1wbGVtZW50YXRpb24KKyMKKyMgSW1wbGVtZW50cyBhIFRlYW1DaXR5IGZyb250ZW5kIGZvciB0aGUgQml0QmFrZSB1dGlsaXR5LCB2aWEgc2VydmljZSBtZXNzYWdlcy4KKyMgU2VlIGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vaGVscC90ZWFtY2l0eS9idWlsZC1zY3JpcHQtaW50ZXJhY3Rpb24td2l0aC10ZWFtY2l0eS5odG1sCisjCisjIEJhc2VkIG9uIG5jdXJzZXMucHkgYW5kIGtub3R0eS5weSwgdmFyaW91c2x5IGJ5IE1pY2hhZWwgTGF1ZXIgYW5kIFJpY2hhcmQgUHVyZGllCisjCisjIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsICdNaWNrZXknIExhdWVyCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDEyIFJpY2hhcmQgUHVyZGllCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFnaWxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgQXV0aG9yOiBDaHJpcyBMYXBsYW50ZSA8Y2hyaXMubGFwbGFudGVAYWdpbGVudC5jb20+CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG1hdGgKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgeG1scnBjLmNsaWVudAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKKworaW1wb3J0IGJiCitpbXBvcnQgYmIuYnVpbGQKK2ltcG9ydCBiYi5jb21tYW5kCitpbXBvcnQgYmIuY29va2VyCitpbXBvcnQgYmIuZXZlbnQKK2ltcG9ydCBiYi5leGNlcHRpb25zCitpbXBvcnQgYmIucnVucXVldWUKK2Zyb20gYmIudWkgaW1wb3J0IHVpaGVscGVyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKKworCitjbGFzcyBUZWFtQ2l0eVVJOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fYmxvY2tfc3RhY2sgPSBbXQorICAgICAgICBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlID0gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGVzY2FwZV9zZXJ2aWNlX3ZhbHVlKGNscywgdmFsdWUpOgorICAgICAgICAiIiIKKyAgICAgICAgRXNjYXBlIGEgdmFsdWUgZm9yIGluY2x1c2lvbiBpbiBhIHNlcnZpY2UgbWVzc2FnZS4gVGVhbUNpdHkgdXNlcyB0aGUgdmVydGljYWwgcGlwZSBjaGFyYWN0ZXIgZm9yIGVzY2FwaW5nLgorICAgICAgICBTZWU6IGh0dHBzOi8vY29uZmx1ZW5jZS5qZXRicmFpbnMuY29tL2Rpc3BsYXkvVENEMTAvQnVpbGQrU2NyaXB0K0ludGVyYWN0aW9uK3dpdGgrVGVhbUNpdHkjQnVpbGRTY3JpcHRJbnRlcmFjdGlvbndpdGhUZWFtQ2l0eS1Fc2NhcGVkdmFsdWVzCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gcmUuc3ViKHIiKFsnfFxbXF1dKSIsIHIifFwxIiwgdmFsdWUpLnJlcGxhY2UoIlxuIiwgInxuIikucmVwbGFjZSgiXHIiLCAifHIiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGVtaXRfc2VydmljZV9tZXNzYWdlKGNscywgbWVzc2FnZV90eXBlLCAqKmt3YXJncyk6CisgICAgICAgIHByaW50KGNscy5mb3JtYXRfc2VydmljZV9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgKiprd2FyZ3MpLCBmbHVzaD1UcnVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoY2xzLCBtZXNzYWdlX3R5cGUsICoqa3dhcmdzKToKKyAgICAgICAgcGF5bG9hZCA9ICIgIi5qb2luKFsiezB9PSd7MX0nIi5mb3JtYXQoaywgY2xzLmVzY2FwZV9zZXJ2aWNlX3ZhbHVlKHYpKSBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKV0pCisgICAgICAgIHJldHVybiAiIyN0ZWFtY2l0eVt7MH0gezF9XSIuZm9ybWF0KG1lc3NhZ2VfdHlwZSwgcGF5bG9hZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBlbWl0X3NpbXBsZV9zZXJ2aWNlX21lc3NhZ2UoY2xzLCBtZXNzYWdlX3R5cGUsIG1lc3NhZ2UpOgorICAgICAgICBwcmludChjbHMuZm9ybWF0X3NpbXBsZV9zZXJ2aWNlX21lc3NhZ2UobWVzc2FnZV90eXBlLCBtZXNzYWdlKSwgZmx1c2g9VHJ1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmb3JtYXRfc2ltcGxlX3NlcnZpY2VfbWVzc2FnZShjbHMsIG1lc3NhZ2VfdHlwZSwgbWVzc2FnZSk6CisgICAgICAgIHJldHVybiAiIyN0ZWFtY2l0eVt7MH0gJ3sxfSddIi5mb3JtYXQobWVzc2FnZV90eXBlLCBjbHMuZXNjYXBlX3NlcnZpY2VfdmFsdWUobWVzc2FnZSkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZm9ybWF0X2J1aWxkX21lc3NhZ2UoY2xzLCB0ZXh0LCBzdGF0dXMpOgorICAgICAgICByZXR1cm4gY2xzLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXRleHQsIHN0YXR1cz1zdGF0dXMpCisKKyAgICBkZWYgYmxvY2tfc3RhcnQoc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX2Jsb2NrX3N0YWNrLmFwcGVuZChuYW1lKQorICAgICAgICBzZWxmLmVtaXRfc2VydmljZV9tZXNzYWdlKCJibG9ja09wZW5lZCIsIG5hbWU9bmFtZSkKKworICAgIGRlZiBibG9ja19lbmQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2Jsb2NrX3N0YWNrOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2Jsb2NrX3N0YWNrLnBvcCgpCisgICAgICAgICAgICBzZWxmLmVtaXRfc2VydmljZV9tZXNzYWdlKCJibG9ja0Nsb3NlZCIsIG5hbWU9bmFtZSkKKworICAgIGRlZiBwcm9ncmVzcyhzZWxmLCBtZXNzYWdlLCBwZXJjZW50LCBleHRyYT1Ob25lKToKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgcGVyY2VudCA9ICJ7MDogPjMuMGZ9Ii5mb3JtYXQocGVyY2VudCkKKworICAgICAgICByZXBvcnQgPSBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZSBcCisgICAgICAgICAgICAgICAgb3IgKHNlbGYuX2xhc3RfcHJvZ3Jlc3Nfc3RhdGVbMF0gPT0gbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZVsxXSAhPSBwZXJjZW50CisgICAgICAgICAgICAgICAgICAgIGFuZCAobm93IC0gc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZVsyXSkubWljcm9zZWNvbmRzID49IDUwMDApIFwKKyAgICAgICAgICAgICAgICBvciBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlWzBdICE9IG1lc3NhZ2U6CisgICAgICAgICAgICByZXBvcnQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlID0gKG1lc3NhZ2UsIHBlcmNlbnQsIG5vdykKKworICAgICAgICBpZiByZXBvcnQgb3IgcGVyY2VudCBpbiBbMCwgMTAwXToKKyAgICAgICAgICAgIHNlbGYuZW1pdF9zaW1wbGVfc2VydmljZV9tZXNzYWdlKCJwcm9ncmVzc01lc3NhZ2UiLCAiezB9OiB7MX0lezJ9Ii5mb3JtYXQobWVzc2FnZSwgcGVyY2VudCwgZXh0cmEgb3IgIiIpKQorCisKK2NsYXNzIFRlYW1jaXR5TG9nRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToKKyAgICBkZWYgZm9ybWF0KHNlbGYsIHJlY29yZCk6CisgICAgICAgIGRldGFpbHMgPSAiIgorICAgICAgICBpZiBoYXNhdHRyKHJlY29yZCwgJ2JiX2V4Y19mb3JtYXR0ZWQnKToKKyAgICAgICAgICAgIGRldGFpbHMgPSAnJy5qb2luKHJlY29yZC5iYl9leGNfZm9ybWF0dGVkKQorICAgICAgICBlbGlmIGhhc2F0dHIocmVjb3JkLCAnYmJfZXhjX2luZm8nKToKKyAgICAgICAgICAgIGV0eXBlLCB2YWx1ZSwgdGIgPSByZWNvcmQuYmJfZXhjX2luZm8KKyAgICAgICAgICAgIGZvcm1hdHRlZCA9IGJiLmV4Y2VwdGlvbnMuZm9ybWF0X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD01KQorICAgICAgICAgICAgZGV0YWlscyA9ICcnLmpvaW4oZm9ybWF0dGVkKQorCisgICAgICAgIGlmIHJlY29yZC5sZXZlbG5vIGluIFtiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1IsIGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5DUklUSUNBTF06CisgICAgICAgICAgICAjIEVSUk9SIGdldHMgYSBzZXBhcmF0ZSBlcnJvckRldGFpbHMgZmllbGQKKyAgICAgICAgICAgIG1zZyA9IFRlYW1DaXR5VUkuZm9ybWF0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9cmVjb3JkLmdldE1lc3NhZ2UoKSwgc3RhdHVzPSJFUlJPUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXRhaWxzPWRldGFpbHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXlsb2FkID0gcmVjb3JkLmdldE1lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGV0YWlsczoKKyAgICAgICAgICAgICAgICBwYXlsb2FkICs9ICJcbiIgKyBkZXRhaWxzCisgICAgICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuUExBSU46CisgICAgICAgICAgICAgICAgbXNnID0gcGF5bG9hZAorICAgICAgICAgICAgZWxpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORzoKKyAgICAgICAgICAgICAgICBtc2cgPSBUZWFtQ2l0eVVJLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXBheWxvYWQsIHN0YXR1cz0iV0FSTklORyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1zZyA9IFRlYW1DaXR5VUkuZm9ybWF0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9cGF5bG9hZCwgc3RhdHVzPSJOT1JNQUwiKQorCisgICAgICAgIHJldHVybiBtc2cKKworCitfZXZ0X2xpc3QgPSBbImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlRXhpdFdhaXQiLCAiYmIuZXZlbnQuTG9nRXhlY1RUWSIsICJsb2dnaW5nLkxvZ1JlY29yZCIsCisgICAgICAgICAgICAgImJiLmJ1aWxkLlRhc2tGYWlsZWQiLCAiYmIuYnVpbGQuVGFza0Jhc2UiLCAiYmIuZXZlbnQuUGFyc2VTdGFydGVkIiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyIsICJiYi5ldmVudC5QYXJzZUNvbXBsZXRlZCIsICJiYi5ldmVudC5DYWNoZUxvYWRTdGFydGVkIiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuQ2FjaGVMb2FkUHJvZ3Jlc3MiLCAiYmIuZXZlbnQuQ2FjaGVMb2FkQ29tcGxldGVkIiwgImJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCIsCisgICAgICAgICAgICAgImJiLmNvbW1hbmQuQ29tbWFuZEV4aXQiLCAiYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkIiwgImJiLmNvb2tlci5Db29rZXJFeGl0IiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuTXVsdGlwbGVQcm92aWRlcnMiLCAiYmIuZXZlbnQuTm9Qcm92aWRlciIsICJiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza1N0YXJ0ZWQiLAorICAgICAgICAgICAgICJiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tTdGFydGVkIiwgImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza0ZhaWxlZCIsICJiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza0ZhaWxlZCIsCisgICAgICAgICAgICAgImJiLmV2ZW50LkJ1aWxkQmFzZSIsICJiYi5idWlsZC5UYXNrU3RhcnRlZCIsICJiYi5idWlsZC5UYXNrU3VjY2VlZGVkIiwgImJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQiLAorICAgICAgICAgICAgICJiYi5idWlsZC5UYXNrUHJvZ3Jlc3MiLCAiYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQiLCAiYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzIiwgImJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZCJdCisKKworZGVmIF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyKToKKyAgICAjIEdldCB2YWx1ZXMgb2YgdmFyaWFibGVzIHdoaWNoIGNvbnRyb2wgb3VyIG91dHB1dAorICAgIGluY2x1ZGVsb2dzLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsiZ2V0VmFyaWFibGUiLCAiQkJJTkNMVURFTE9HUyJdKQorICAgIGlmIGVycm9yOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBnZXQgdGhlIHZhbHVlIG9mIEJCSU5DTFVERUxPR1MgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIGxvZ2xpbmVzLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsiZ2V0VmFyaWFibGUiLCAiQkJJTkNMVURFTE9HU19MSU5FUyJdKQorICAgIGlmIGVycm9yOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBnZXQgdGhlIHZhbHVlIG9mIEJCSU5DTFVERUxPR1NfTElORVMgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIHJldHVybiBpbmNsdWRlbG9ncywgbG9nbGluZXMKKworCitkZWYgbWFpbihzZXJ2ZXIsIGV2ZW50SGFuZGxlciwgcGFyYW1zKToKKyAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKKworICAgIGluY2x1ZGVsb2dzLCBsb2dsaW5lcyA9IF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyKQorCisgICAgdWkgPSBUZWFtQ2l0eVVJKCkKKworICAgIGhlbHBlciA9IHVpaGVscGVyLkJCVUlIZWxwZXIoKQorCisgICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQorICAgIGVycmNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZGVycikKKyAgICBmb3JtYXQgPSBUZWFtY2l0eUxvZ0Zvcm1hdHRlcigpCisgICAgaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPT0gMDoKKyAgICAgICAgZm9yY2VsZXZlbCA9IE5vbmUKKyAgICBlbGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID4gMjoKKyAgICAgICAgZm9yY2VsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5FUlJPUgorICAgIGVsc2U6CisgICAgICAgIGZvcmNlbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORworICAgIGJiLm1zZy5hZGREZWZhdWx0bG9nRmlsdGVyKGNvbnNvbGUsIGJiLm1zZy5CQkxvZ0ZpbHRlclN0ZE91dCwgZm9yY2VsZXZlbCkKKyAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihlcnJjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRFcnIpCisgICAgY29uc29sZS5zZXRGb3JtYXR0ZXIoZm9ybWF0KQorICAgIGVycmNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKKyAgICBpZiBub3QgYmIubXNnLmhhc19jb25zb2xlX2hhbmRsZXIobG9nZ2VyKToKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZSkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoZXJyY29uc29sZSkKKworICAgIGlmIHBhcmFtcy5vcHRpb25zLnJlbW90ZV9zZXJ2ZXIgYW5kIHBhcmFtcy5vcHRpb25zLmtpbGxfc2VydmVyOgorICAgICAgICBzZXJ2ZXIudGVybWluYXRlU2VydmVyKCkKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBwYXJhbXMub2JzZXJ2ZV9vbmx5OgorICAgICAgICBsb2dnZXIuZXJyb3IoIk9ic2VydmUtb25seSBtb2RlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBVSSIpCisgICAgICAgIHJldHVybiAxCisKKyAgICBsbGV2ZWwsIGRlYnVnX2RvbWFpbnMgPSBiYi5tc2cuY29uc3RydWN0TG9nT3B0aW9ucygpCisgICAgc2VydmVyLnJ1bkNvbW1hbmQoWyJzZXRFdmVudE1hc2siLCBzZXJ2ZXIuZ2V0RXZlbnRIYW5kbGUoKSwgbGxldmVsLCBkZWJ1Z19kb21haW5zLCBfZXZ0X2xpc3RdKQorCisgICAgdHJ5OgorICAgICAgICBwYXJhbXMudXBkYXRlRnJvbVNlcnZlcihzZXJ2ZXIpCisgICAgICAgIGNtZGxpbmUgPSBwYXJhbXMucGFyc2VBY3Rpb25zKCkKKyAgICAgICAgaWYgbm90IGNtZGxpbmU6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk5vIHRhc2sgZ2l2ZW4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgaWYgJ21zZycgaW4gY21kbGluZSBhbmQgY21kbGluZVsnbXNnJ106CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoY21kbGluZVsnbXNnJ10pCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBjbWRsaW5lID0gY21kbGluZVsnYWN0aW9uJ10KKyAgICAgICAgcmV0LCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKGNtZGxpbmUpCisgICAgICAgIGlmIGVycm9yOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJ7MH06IHsxfSIuZm9ybWF0KGNtZGxpbmUsIGVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGVsaWYgbm90IHJldDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ291bGRuJ3QgZ2V0IGRlZmF1bHQgY29tbWFuZGxpbmU6IHswfSIuZm9ybWF0KHJlKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgZXhjZXB0IHhtbHJwYy5jbGllbnQuRmF1bHQgYXMgeDoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJYTUxSUEMgRmF1bHQgZ2V0dGluZyBjb21tYW5kbGluZTogezB9Ii5mb3JtYXQoeCkpCisgICAgICAgIHJldHVybiAxCisKKyAgICBhY3RpdmVfcHJvY2Vzc190b3RhbCA9IE5vbmUKKyAgICBpc190YXNrc19ydW5uaW5nID0gRmFsc2UKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRIYW5kbGVyLndhaXRFdmVudCgwLjI1KQorICAgICAgICAgICAgaWYgbm90IGV2ZW50OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGhlbHBlci5ldmVudEhhbmRsZXIoZXZlbnQpCisKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tCYXNlKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhldmVudC5fbWVzc2FnZSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgICAgICAjIERvbid0IHJlcG9ydCBzc3RhdGUgZmFpbHVyZXMgYXMgZXJyb3JzLCBzaW5jZSBZb2N0byB3aWxsIGp1c3QgcnVuIHRoZSB0YXNrcyBmb3IgcmVhbAorICAgICAgICAgICAgICAgIGlmIGV2ZW50Lm1zZyA9PSAiTm8gc3VpdGFibGUgc3RhZ2luZyBwYWNrYWdlIGZvdW5kIiBvciAoZXZlbnQubXNnLnN0YXJ0c3dpdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAiRmV0Y2hlciBmYWlsdXJlOiBVbmFibGUgdG8gZmluZCBmaWxlIikgYW5kICJkb3dubG9hZGZpbGVuYW1lIiBpbiBldmVudC5tc2cgYW5kICJzc3RhdGUiIGluIGV2ZW50Lm1zZyk6CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LmxldmVsbm8gPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORworICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBGb3IgIm5vcm1hbCIgbG9nZ2luZyBjb25kaXRpb25zLCBkb24ndCBzaG93IG5vdGUgbG9ncyBmcm9tIHRhc2tzCisgICAgICAgICAgICAgICAgICAgICMgYnV0IGRvIHNob3cgdGhlbSBpZiB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHZlcmJvc2UvZGVidWcgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA8PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgKGV2ZW50LmxldmVsbm8gPCBsbGV2ZWwgb3IgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLk5PVEUgYW5kIGxsZXZlbCAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuVkVSQk9TRSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAjIFByZWZpeCB0YXNrIG1lc3NhZ2VzIHdpdGggcmVjaXBlL3Rhc2sKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCBpbiBoZWxwZXIucnVubmluZ190YXNrcyBhbmQgZXZlbnQubGV2ZWxubyAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuUExBSU46CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNraW5mbyA9IGhlbHBlci5ydW5uaW5nX3Rhc2tzW2V2ZW50LnRhc2twaWRdCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSB0YXNraW5mb1sndGl0bGUnXSArICc6ICcgKyBldmVudC5tc2cKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAnZm4nKToKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gZXZlbnQuZm4gKyAnOiAnICsgZXZlbnQubXNnCisgICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQpOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJMb2dmaWxlIGZvciBmYWlsZWQgc2V0c2NlbmUgdGFzayBpcyAlcyIgJSBldmVudC5sb2dmaWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICBydCA9ICJ7MH0tezF9OnsyfSIuZm9ybWF0KGV2ZW50LnBuLCBldmVudC5wdi5yZXBsYWNlKCJBVVRPSU5DIiwgIjAiKSwgZXZlbnQudGFzaykKKworICAgICAgICAgICAgICAgIGxvZ2ZpbGUgPSBldmVudC5sb2dmaWxlCisgICAgICAgICAgICAgICAgaWYgbm90IGxvZ2ZpbGUgb3Igbm90IG9zLnBhdGguZXhpc3RzKGxvZ2ZpbGUpOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJidWlsZFByb2JsZW0iLCBkZXNjcmlwdGlvbj0iezB9XG5Vbmtub3duIGZhaWx1cmUgKG5vIGxvZyBmaWxlIGF2YWlsYWJsZSkiLmZvcm1hdChydCkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC50YXNrLmVuZHN3aXRoKCJfc2V0c2NlbmUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5ydW5Db21tYW5kKFsic3RhdGVGb3JjZVNodXRkb3duIl0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBkZXRhaWxzID0gZGVxdWUobWF4bGVuPWxvZ2xpbmVzKQorICAgICAgICAgICAgICAgIGVycm9yX2xpbmVzID0gW10KKyAgICAgICAgICAgICAgICBpZiBpbmNsdWRlbG9ncyBhbmQgbm90IGV2ZW50LmVycnByaW50ZWQ6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihsb2dmaWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuYXBwZW5kKCcgfCAlcycgJSBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogYSBsZXNzIHN0dXBpZCBjaGVjayBmb3IgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhc2sgPT0gImRvX2NvbXBpbGUiKSBhbmQgKCJlcnJvcjoiIGluIGxpbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9saW5lcy5hcHBlbmQobGluZSkKKworICAgICAgICAgICAgICAgIGlmIGVycm9yX2xpbmVzOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJjb21waWxhdGlvblN0YXJ0ZWQiLCBjb21waWxlcj1ydCkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZXJyb3JfbGluZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD1saW5lLCBzdGF0dXM9IkVSUk9SIikKKyAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgiY29tcGlsYXRpb25GaW5pc2hlZCIsIGNvbXBpbGVyPXJ0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoImJ1aWxkUHJvYmxlbSIsIGRlc2NyaXB0aW9uPXJ0KQorCisgICAgICAgICAgICAgICAgZXJyID0gIkxvZ2ZpbGUgb2YgZmFpbHVyZSBzdG9yZWQgaW46ICVzIiAlIGxvZ2ZpbGUKKyAgICAgICAgICAgICAgICBpZiBkZXRhaWxzOgorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiezB9IHRhc2sgbG9nIi5mb3JtYXQocnQpKQorICAgICAgICAgICAgICAgICAgICAjIFRlYW1DaXR5IHNlZW1zIHRvIGNob2tlIG9uIHNlcnZpY2UgbWVzc2FnZXMgbG9uZ2VyIHRoYW4gYWJvdXQgNjM4MDAgY2hhcmFjdGVycywgc28gaWYgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgIyBkZXRhaWxzIGlzIGxvbmdlciB0aGFuLCBzYXksIDYwMDAwLCBiYXRjaCBpdCB1cCBpbnRvIHNldmVyYWwgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgIGZpcnN0X21lc3NhZ2UgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIGRldGFpbHM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxfbGVuID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSBkZXF1ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBkZXRhaWxzIGFuZCBkZXRhaWxfbGVuIDwgNjAwMDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBUaGlzIGNvZGUgZG9lc24ndCBib3RoZXIgdG8gaGFuZGxlIGxpbmVzIHRoYXQgdGhlbXNlbHZlcyBhcmUgZXh0cmVtZWx5IGxvbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGRldGFpbHMucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2guYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsX2xlbiArPSBsZW4obGluZSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlyc3RfbWVzc2FnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaC5hcHBlbmRsZWZ0KCJMb2cgZGF0YSBmb2xsb3dzOiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9ZXJyLCBzdGF0dXM9IkVSUk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGV0YWlscz0iXG4iLmpvaW4oYmF0Y2gpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD0iW2NvbnRpbnVlZF0iLCBzdGF0dXM9IkVSUk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGV0YWlscz0iXG4iLmpvaW4oYmF0Y2gpKQorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19lbmQoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PWVyciwgc3RhdHVzPSJFUlJPUiIsIGVycm9yRGV0YWlscz0iIikKKworICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC50YXNrLmVuZHN3aXRoKCJfc2V0c2NlbmUiKToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyLnJ1bkNvbW1hbmQoWyJzdGF0ZUZvcmNlU2h1dGRvd24iXSkKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnByb2Nlc3NuYW1lIGluIFsiSW5pdGlhbGlzaW5nIHRhc2tzIiwgIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSJdOgorICAgICAgICAgICAgICAgICAgICBhY3RpdmVfcHJvY2Vzc190b3RhbCA9IGV2ZW50LnRvdGFsCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KGV2ZW50LnByb2Nlc3NuYW1lKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKToKKyAgICAgICAgICAgICAgICBpZiBldmVudC5wcm9jZXNzbmFtZSBpbiBbIkluaXRpYWxpc2luZyB0YXNrcyIsICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiXToKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoZXZlbnQucHJvY2Vzc25hbWUsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgdWkuYmxvY2tfZW5kKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQucHJvY2Vzc25hbWUgaW4gWyJJbml0aWFsaXNpbmcgdGFza3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5Il0gYW5kIGFjdGl2ZV9wcm9jZXNzX3RvdGFsICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKGV2ZW50LnByb2Nlc3NuYW1lLCBldmVudC5wcm9ncmVzcyAqIDEwMCAvIGFjdGl2ZV9wcm9jZXNzX3RvdGFsKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgdWkuYmxvY2tfc3RhcnQoIkxvYWRpbmcgY2FjaGUiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkUHJvZ3Jlc3MpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRvdGFsICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKCJMb2FkaW5nIGNhY2hlIiwgbWF0aC5mbG9vcihldmVudC5jdXJyZW50ICogMTAwIC8gZXZlbnQudG90YWwpKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiTG9hZGluZyBjYWNoZSIsIDEwMCkKKyAgICAgICAgICAgICAgICB1aS5ibG9ja19lbmQoKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VTdGFydGVkKToKKyAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiUGFyc2luZyByZWNpcGVzIGFuZCBjaGVja2luZyB1cHN0cmVhbSByZXZpc2lvbnMiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQudG90YWwgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlBhcnNpbmcgcmVjaXBlcyIsIG1hdGguZmxvb3IoZXZlbnQuY3VycmVudCAqIDEwMCAvIGV2ZW50LnRvdGFsKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlBhcnNlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiUGFyc2luZyByZWNpcGVzIiwgMTAwKQorICAgICAgICAgICAgICAgIHVpLmJsb2NrX2VuZCgpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTXVsdGlwbGVQcm92aWRlcnMpOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKHN0cihldmVudCkpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk5vUHJvdmlkZXIpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRFeGl0KToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvb2tlci5Db29rZXJFeGl0KToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX3Rhc2tzX3J1bm5pbmc6CisgICAgICAgICAgICAgICAgICAgIGlzX3Rhc2tzX3J1bm5pbmcgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KCJSdW5uaW5nIHRhc2tzIikKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdGF0cy50b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiUnVubmluZyBzZXRzY2VuZSB0YXNrcyIsICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdGF0cy5jb21wbGV0ZWQgKyBldmVudC5zdGF0cy5hY3RpdmUgKyBldmVudC5zdGF0cy5mYWlsZWQgKyAxKSAqIDEwMCAvIGV2ZW50LnN0YXRzLnRvdGFsKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX3Rhc2tzX3J1bm5pbmc6CisgICAgICAgICAgICAgICAgICAgIGlzX3Rhc2tzX3J1bm5pbmcgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KCJSdW5uaW5nIHRhc2tzIikKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdGF0cy50b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fdG90YWwgPSBldmVudC5zdGF0cy50b3RhbCAtIGV2ZW50LnN0YXRzLnNraXBwZWQKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvX2NvbXBsZXRlID0gZXZlbnQuc3RhdHMuY29tcGxldGVkICsgZXZlbnQuc3RhdHMuYWN0aXZlIC0gZXZlbnQuc3RhdHMuc2tpcHBlZCArIGV2ZW50LnN0YXRzLmZhaWxlZCArIDEKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBzb21ldGltZXMgdGhpcyBnaXZlcyBvdmVyIDEwMCUKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlJ1bm5pbmcgcnVucXVldWUgdGFza3MiLCAocHNldWRvX2NvbXBsZXRlKSAqIDEwMCAvIHBzZXVkb190b3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICh7MH0vezF9KSIuZm9ybWF0KHBzZXVkb19jb21wbGV0ZSwgcHNldWRvX3RvdGFsKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tGYWlsZWQpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Mb2dFeGVjVFRZKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGlvZXJyb3I6CisgICAgICAgICAgICAjIGlnbm9yZSBpbnRlcnJ1cHRlZCBpbworICAgICAgICAgICAgaWYgaW9lcnJvci5hcmdzWzBdID09IDQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihleCkpCisKKyAgICAgICAgIyBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICMgICAgIGlmIHNodXRkb3duID09IDI6CisgICAgICAgICMgICAgICAgICBtdy5hcHBlbmRUZXh0KCJUaGlyZCBLZXlib2FyZCBJbnRlcnJ1cHQsIGV4aXQuXG4iKQorICAgICAgICAjICAgICAgICAgZXhpdGZsYWcgPSBUcnVlCisgICAgICAgICMgICAgIGlmIHNodXRkb3duID09IDE6CisgICAgICAgICMgICAgICAgICBtdy5hcHBlbmRUZXh0KCJTZWNvbmQgS2V5Ym9hcmQgSW50ZXJydXB0LCBzdG9wcGluZy4uLlxuIikKKyAgICAgICAgIyAgICAgICAgIF8sIGVycm9yID0gc2VydmVyLnJ1bkNvbW1hbmQoWyJzdGF0ZUZvcmNlU2h1dGRvd24iXSkKKyAgICAgICAgIyAgICAgICAgIGlmIGVycm9yOgorICAgICAgICAjICAgICAgICAgICAgIHByaW50KCJVbmFibGUgdG8gY2xlYW5seSBzdG9wOiAlcyIgJSBlcnJvcikKKyAgICAgICAgIyAgICAgaWYgc2h1dGRvd24gPT0gMDoKKyAgICAgICAgIyAgICAgICAgIG13LmFwcGVuZFRleHQoIktleWJvYXJkIEludGVycnVwdCwgY2xvc2luZyBkb3duLi4uXG4iKQorICAgICAgICAjICAgICAgICAgXywgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbInN0YXRlU2h1dGRvd24iXSkKKyAgICAgICAgIyAgICAgICAgIGlmIGVycm9yOgorICAgICAgICAjICAgICAgICAgICAgIHByaW50KCJVbmFibGUgdG8gY2xlYW5seSBzaHV0ZG93bjogJXMiICUgZXJyb3IpCisgICAgICAgICMgICAgIHNodXRkb3duID0gc2h1dGRvd24gKyAxCisgICAgICAgICMgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKaW5kZXggNTE4OTJjOS4uOTI2MGY1ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKQEAgLTE3Niw3ICsxNzYsNyBAQAogICAgICAgICBpZiBlcnJvcjoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29tbWFuZCAnJXMnIGZhaWxlZDogJXMiICUgKGNtZGxpbmUsIGVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGVsaWYgcmV0ICE9IFRydWU6CisgICAgICAgIGVsaWYgbm90IHJldDoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29tbWFuZCAnJXMnIGZhaWxlZDogcmV0dXJuZWQgJXMiICUgKGNtZGxpbmUsIHJldCkpCiAgICAgICAgICAgICByZXR1cm4gMQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpZXZlbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpZXZlbnQucHkKaW5kZXggZmVkYjA1MC4uMTNkMGQ0YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWV2ZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWlldmVudC5weQpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuRXZlbnRIYW5kbGUgPSByZXQKICAgICAgICAgICAgICAgICBlcnJvciA9ICIiCiAKLSAgICAgICAgICAgIGlmIHNlbGYuRXZlbnRIYW5kbGUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuRXZlbnRIYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgZXJybXNnID0gIkNvdWxkIG5vdCByZWdpc3RlciBVSSBldmVudCBoYW5kbGVyLiBFcnJvcjogJXMsIGhvc3QgJXMsICJcCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weQppbmRleCBjOGRkN2RmLi40OGQ4MDhhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWloZWxwZXIucHkKQEAgLTE1LDM5ICsxNSw0OCBAQAogICAgICAgICAjIFJ1bm5pbmcgUElEcyBwcmVzZXJ2ZXMgdGhlIG9yZGVyIHRhc2tzIHdlcmUgZXhlY3V0ZWQgaW4KICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMgPSBbXQogICAgICAgICBzZWxmLmZhaWxlZF90YXNrcyA9IFtdCisgICAgICAgIHNlbGYucGlkbWFwID0ge30KICAgICAgICAgc2VsZi50YXNrbnVtYmVyX2N1cnJlbnQgPSAwCiAgICAgICAgIHNlbGYudGFza251bWJlcl90b3RhbCA9IDAKIAogICAgIGRlZiBldmVudEhhbmRsZXIoc2VsZiwgZXZlbnQpOgorICAgICAgICAjIFBJRHMgYXJlIGEgYmFkIGlkZWEgYXMgdGhleSBjYW4gYmUgcmV1c2VkIGJlZm9yZSB3ZSBwcm9jZXNzIGFsbCBVSSBldmVudHMuCisgICAgICAgICMgV2UgbWFpbnRhaW4gYSAnZnV6enknIG1hdGNoIGZvciBUYXNrUHJvZ3Jlc3Mgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIG1hdGNoCisgICAgICAgIGRlZiByZW1vdmV0aWQocGlkLCB0aWQpOgorICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMucmVtb3ZlKHRpZCkKKyAgICAgICAgICAgIGRlbCBzZWxmLnJ1bm5pbmdfdGFza3NbdGlkXQorICAgICAgICAgICAgaWYgc2VsZi5waWRtYXBbcGlkXSA9PSB0aWQ6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYucGlkbWFwW3BpZF0KKyAgICAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IFRydWUKKwogICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrU3RhcnRlZCk6CisgICAgICAgICAgICB0aWQgPSBldmVudC5fZm4gKyAiOiIgKyBldmVudC5fdGFzawogICAgICAgICAgICAgaWYgZXZlbnQuX21jICE9ICJkZWZhdWx0IjoKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXSA9IHsgJ3RpdGxlJyA6ICJtYzolczolcyAlcyIgJSAoZXZlbnQuX21jLCBldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpIH0KKyAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbdGlkXSA9IHsgJ3RpdGxlJyA6ICJtYzolczolcyAlcyIgJSAoZXZlbnQuX21jLCBldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpLCAncGlkJyA6IGV2ZW50LnBpZCB9CiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdID0geyAndGl0bGUnIDogIiVzICVzIiAlIChldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpIH0KLSAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLmFwcGVuZChldmVudC5waWQpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3RpZF0gPSB7ICd0aXRsZScgOiAiJXMgJXMiICUgKGV2ZW50Ll9wYWNrYWdlLCBldmVudC5fdGFzayksICdzdGFydHRpbWUnIDogdGltZS50aW1lKCksICdwaWQnIDogZXZlbnQucGlkIH0KKyAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLmFwcGVuZCh0aWQpCisgICAgICAgICAgICBzZWxmLnBpZG1hcFtldmVudC5waWRdID0gdGlkCiAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCk6Ci0gICAgICAgICAgICBkZWwgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF0KLSAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLnJlbW92ZShldmVudC5waWQpCi0gICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCisgICAgICAgICAgICB0aWQgPSBldmVudC5fZm4gKyAiOiIgKyBldmVudC5fdGFzaworICAgICAgICAgICAgcmVtb3ZldGlkKGV2ZW50LnBpZCwgdGlkKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQpOgotICAgICAgICAgICAgZGVsIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdCi0gICAgICAgICAgICBzZWxmLnJ1bm5pbmdfcGlkcy5yZW1vdmUoZXZlbnQucGlkKQorICAgICAgICAgICAgdGlkID0gZXZlbnQuX2ZuICsgIjoiICsgZXZlbnQuX3Rhc2sKKyAgICAgICAgICAgIHJlbW92ZXRpZChldmVudC5waWQsIHRpZCkKICAgICAgICAgICAgICMgRG9uJ3QgYWRkIHRvIHRoZSBmYWlsZWQgdGFza3MgbGlzdCBzaW5jZSB0aGlzIGlzIGUuZy4gYSBzZXRzY2VuZSB0YXNrIGZhaWx1cmUKLSAgICAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IFRydWUKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKLSAgICAgICAgICAgIGRlbCBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXQotICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMucmVtb3ZlKGV2ZW50LnBpZCkKKyAgICAgICAgICAgIHRpZCA9IGV2ZW50Ll9mbiArICI6IiArIGV2ZW50Ll90YXNrCisgICAgICAgICAgICByZW1vdmV0aWQoZXZlbnQucGlkLCB0aWQpCiAgICAgICAgICAgICBzZWxmLmZhaWxlZF90YXNrcy5hcHBlbmQoIHsgJ3RpdGxlJyA6ICIlcyAlcyIgJSAoZXZlbnQuX3BhY2thZ2UsIGV2ZW50Ll90YXNrKX0pCi0gICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCk6CiAgICAgICAgICAgICBzZWxmLnRhc2tudW1iZXJfY3VycmVudCA9IGV2ZW50LnN0YXRzLmNvbXBsZXRlZCArIGV2ZW50LnN0YXRzLmFjdGl2ZSArIGV2ZW50LnN0YXRzLmZhaWxlZCArIDEKICAgICAgICAgICAgIHNlbGYudGFza251bWJlcl90b3RhbCA9IGV2ZW50LnN0YXRzLnRvdGFsCiAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza1Byb2dyZXNzKToKLSAgICAgICAgICAgIGlmIGV2ZW50LnBpZCA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF1bJ3Byb2dyZXNzJ10gPSBldmVudC5wcm9ncmVzcwotICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdWydyYXRlJ10gPSBldmVudC5yYXRlCisgICAgICAgICAgICBpZiBldmVudC5waWQgPiAwIGFuZCBldmVudC5waWQgaW4gc2VsZi5waWRtYXA6CisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3NlbGYucGlkbWFwW2V2ZW50LnBpZF1dWydwcm9ncmVzcyddID0gZXZlbnQucHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3Nbc2VsZi5waWRtYXBbZXZlbnQucGlkXV1bJ3JhdGUnXSA9IGV2ZW50LnJhdGUKICAgICAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CmluZGV4IDhkNDBiY2QuLjVmNTc2N2MgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQpAQCAtMjQsNyArMjQsNiBAQAogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGVycm5vCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgYXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb3B5CiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGdldHN0YXR1c291dHB1dApAQCAtNDI4LDEwICs0MjcsMTEgQEAKICAgICAgICAgZm9yIGxvY2tmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgbG9ja3MuYXBwZW5kKGJiLnV0aWxzLmxvY2tmaWxlKGxvY2tmaWxlKSkKIAotICAgIHlpZWxkCi0KLSAgICBmb3IgbG9jayBpbiBsb2NrczoKLSAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsb2NrKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBmb3IgbG9jayBpbiBsb2NrczoKKyAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKIAogQGNvbnRleHRtYW5hZ2VyCiBkZWYgdGltZW91dChzZWNvbmRzKToKQEAgLTU1Niw2ICs1NTYsMjAgQEAKICAgICBpbXBvcnQgaGFzaGxpYgogICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhMSgpLCBmaWxlbmFtZSkKIAorZGVmIHNoYTM4NF9maWxlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFNIQTM4NCBjaGVja3N1bSBvZiB0aGUgZmlsZW5hbWUKKyAgICAiIiIKKyAgICBpbXBvcnQgaGFzaGxpYgorICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhMzg0KCksIGZpbGVuYW1lKQorCitkZWYgc2hhNTEyX2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgaGV4IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgU0hBNTEyIGNoZWNrc3VtIG9mIHRoZSBmaWxlbmFtZQorICAgICIiIgorICAgIGltcG9ydCBoYXNobGliCisgICAgcmV0dXJuIF9oYXNoZXIoaGFzaGxpYi5zaGE1MTIoKSwgZmlsZW5hbWUpCisKIGRlZiBwcmVzZXJ2ZWRfZW52dmFyc19leHBvcnRlZCgpOgogICAgICIiIlZhcmlhYmxlcyB3aGljaCBhcmUgdGFrZW4gZnJvbSB0aGUgZW52aXJvbm1lbnQgYW5kIHBsYWNlZCBpbiBhbmQgZXhwb3J0ZWQKICAgICBmcm9tIHRoZSBtZXRhZGF0YSIiIgpAQCAtODUwLDcgKzg2NCw3IEBACiAgICAgICAgICAgICBpZiBkZXN0ZXhpc3RzIGFuZCBub3Qgc3RhdC5TX0lTRElSKGRzdGF0W3N0YXQuU1RfTU9ERV0pOgogICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQogICAgICAgICAgICAgb3Muc3ltbGluayh0YXJnZXQsIGRlc3QpCi0gICAgICAgICAgICAjb3MubGNob3duKGRlc3Qsc3N0YXRbc3RhdC5TVF9VSURdLHNzdGF0W3N0YXQuU1RfR0lEXSkKKyAgICAgICAgICAgIG9zLmxjaG93bihkZXN0LHNzdGF0W3N0YXQuU1RfVUlEXSxzc3RhdFtzdGF0LlNUX0dJRF0pCiAgICAgICAgICAgICByZXR1cm4gb3MubHN0YXQoZGVzdCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoImNvcHlmaWxlOiBmYWlsZWQgdG8gY3JlYXRlIHN5bWxpbmsgJXMgdG8gJXMgKCVzKSIgJSAoZGVzdCwgdGFyZ2V0LCBlKSkKQEAgLTEwMjUsNiArMTAzOSw0MyBAQAogICAgICAgICBjaGVja3ZhbHVlcyA9IHNldChjaGVja3ZhbHVlcykKICAgICByZXR1cm4gJyAnLmpvaW4oc29ydGVkKGNoZWNrdmFsdWVzICYgdmFsKSkKIAorCitkZWYgZ2V0X3JlZmVyZW5jZWRfdmFycyhzdGFydF9leHByLCBkKToKKyAgICAiIiIKKyAgICA6cmV0dXJuOiBuYW1lcyBvZiB2YXJzIHJlZmVyZW5jZWQgaW4gc3RhcnRfZXhwciAocmVjdXJzaXZlbHkpLCBpbiBxdWFzaS1CRlMgb3JkZXIgKHZhcmlhYmxlcyB3aXRoaW4gdGhlIHNhbWUgbGV2ZWwKKyAgICBhcmUgb3JkZXJlZCBhcmJpdHJhcmlseSkKKyAgICAiIiIKKworICAgIHNlZW4gPSBzZXQoKQorICAgIHJldCA9IFtdCisKKyAgICAjIFRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgcXVldWUgaXMgdGhlIHVuZXhwYW5kZWQgc3RhcnQgZXhwcmVzc2lvbgorICAgIHF1ZXVlID0gY29sbGVjdGlvbnMuZGVxdWUoW3N0YXJ0X2V4cHJdKQorICAgICMgU3Vic2VxdWVudCBlbnRyaWVzIHdpbGwgYmUgdmFyaWFibGUgbmFtZXMsIHNvIHdlIG5lZWQgdG8gdHJhY2sgd2hldGhlciBvciBub3QgZW50cnkgcmVxdWlyZXMgZ2V0VmFyCisgICAgaXNfZmlyc3QgPSBUcnVlCisKKyAgICBlbXB0eV9kYXRhID0gYmIuZGF0YS5pbml0KCkKKyAgICB3aGlsZSBxdWV1ZToKKyAgICAgICAgZW50cnkgPSBxdWV1ZS5wb3BsZWZ0KCkKKyAgICAgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgICAgICAjIEVudHJ5IGlzIHRoZSBzdGFydCBleHByZXNzaW9uIC0gbm8gZXhwYW5zaW9uIG5lZWRlZAorICAgICAgICAgICAgaXNfZmlyc3QgPSBGYWxzZQorICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGVudHJ5CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB2YXJpYWJsZSBuYW1lIC0gbmVlZCB0byBnZXQgdGhlIHZhbHVlCisgICAgICAgICAgICBleHByZXNzaW9uID0gZC5nZXRWYXIoZW50cnksIEZhbHNlKQorICAgICAgICAgICAgcmV0LmFwcGVuZChlbnRyeSkKKworICAgICAgICAjIGV4cGFuZFdpdGhSZWZzIGlzIGhvdyB3ZSBhY3R1YWxseSBnZXQgdGhlIHJlZmVyZW5jZWQgdmFyaWFibGVzIGluIHRoZSBleHByZXNzaW9uLiBXZSBjYWxsIGl0IHVzaW5nIGFuIGVtcHR5CisgICAgICAgICMgZGF0YSBzdG9yZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0aGUgdmFyaWFibGVzIGRpcmVjdGx5IHVzZWQgaW4gdGhlIGV4cHJlc3Npb24uIEl0IHJldHVybnMgYSBzZXQsIHdoaWNoIGlzIHdoYXQKKyAgICAgICAgIyBkb29tcyB1cyB0byBvbmx5IGV2ZXIgYmUgInF1YXNpLUJGUyIgcmF0aGVyIHRoYW4gZnVsbCBCRlMuCisgICAgICAgIG5ld192YXJzID0gZW1wdHlfZGF0YS5leHBhbmRXaXRoUmVmcyhleHByZXNzaW9uLCBOb25lKS5yZWZlcmVuY2VzIC0gc2V0KHNlZW4pCisKKyAgICAgICAgcXVldWUuZXh0ZW5kKG5ld192YXJzKQorICAgICAgICBzZWVuLnVwZGF0ZShuZXdfdmFycykKKyAgICByZXR1cm4gcmV0CisKKwogZGVmIGNwdV9jb3VudCgpOgogICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKIApAQCAtMTU2MCwzICsxNjExLDI5IEBACiAgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKGJiLmJ1aWxkLmxvZ2Zvcm1hdHRlci5mb3JtYXQocmVjb3JkKSkKICAgICBkZWYgY29udGFpbnMoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJldHVybiAobWVzc2FnZSBpbiBzZWxmLm1lc3NhZ2VzKQorCitkZWYgaXNfc2VtdmVyKHZlcnNpb24pOgorICAgICIiIgorICAgICAgICBJcyB0aGUgdmVyc2lvbiBzdHJpbmcgZm9sbG93aW5nIHRoZSBzZW12ZXIgc2VtYW50aWM/CisKKyAgICAgICAgaHR0cHM6Ly9zZW12ZXIub3JnL3NwZWMvdjIuMC4wLmh0bWwKKyAgICAiIiIKKyAgICByZWdleCA9IHJlLmNvbXBpbGUoCisgICAgciIiIgorICAgIF4KKyAgICAoMHxbMS05XVxkKilcLigwfFsxLTldXGQqKVwuKDB8WzEtOV1cZCopCisgICAgKD86LSgKKyAgICAgICAgKD86MHxbMS05XVxkKnxcZCpbYS16QS1aLV1bMC05YS16QS1aLV0qKQorICAgICAgICAoPzpcLig/OjB8WzEtOV1cZCp8XGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikpKgorICAgICkpPworICAgICg/OlwrKAorICAgICAgICBbMC05YS16QS1aLV0rCisgICAgICAgICg/OlwuWzAtOWEtekEtWi1dKykqCisgICAgKSk/CisgICAgJAorICAgICIiIiwgcmUuVkVSQk9TRSkKKworICAgIGlmIHJlZ2V4Lm1hdGNoKHZlcnNpb24pIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvY29tbW9uLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKaW5kZXggYzU2NTdkMy4uNmM3NmVmMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBkZWYgdGluZm9pbF9pbml0KHNlbGYsIHRpbmZvaWwpOgogICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCiAgICAgICAgIHNlbGYuYmJsYXllcnMgPSAoc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJMQVlFUlMnKSBvciAiIikuc3BsaXQoKQotICAgICAgICBsYXllcmNvbmZzID0gc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEpCisgICAgICAgIGxheWVyY29uZnMgPSBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEudmFyaGlzdG9yeS5nZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoJ0JCRklMRV9DT0xMRUNUSU9OUycpCiAgICAgICAgIHNlbGYuYmJmaWxlX2NvbGxlY3Rpb25zID0ge2xheWVyOiBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHBhdGgpKSBmb3IgbGF5ZXIsIHBhdGggaW4gbGF5ZXJjb25mcy5pdGVtcygpfQogCiAgICAgQHN0YXRpY21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5CmluZGV4IDU3Y2Q5MDIuLjk1YjY3YTYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKQEAgLTI0LDcgKzI0LDcgQEAKICAgICBUaGlzIGNsYXNzIGluaGVyaXRzIEFjdGlvblBsdWdpbiB0byBnZXQgZG9fYWRkX2xheWVyLgogICAgICIiIgogCi0gICAgZGVmIGdldF9mZXRjaF9sYXllcihzZWxmLCBmZXRjaGRpciwgdXJsLCBzdWJkaXIsIGZldGNoX2xheWVyKToKKyAgICBkZWYgZ2V0X2ZldGNoX2xheWVyKHNlbGYsIGZldGNoZGlyLCB1cmwsIHN1YmRpciwgZmV0Y2hfbGF5ZXIsIGJyYW5jaCwgc2hhbGxvdz1GYWxzZSk6CiAgICAgICAgIGxheWVybmFtZSA9IHNlbGYuZ2V0X2xheWVyX25hbWUodXJsKQogICAgICAgICBpZiBvcy5wYXRoLnNwbGl0ZXh0KGxheWVybmFtZSlbMV0gPT0gJy5naXQnOgogICAgICAgICAgICAgbGF5ZXJuYW1lID0gb3MucGF0aC5zcGxpdGV4dChsYXllcm5hbWUpWzBdCkBAIC0zMiw5ICszMiwxNSBAQAogICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguam9pbihyZXBvZGlyLCBzdWJkaXIpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZXBvZGlyKToKICAgICAgICAgICAgIGlmIGZldGNoX2xheWVyOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2FsbChbJ2dpdCcsICdjbG9uZScsIHVybCwgcmVwb2Rpcl0pCisgICAgICAgICAgICAgICAgY21kID0gWydnaXQnLCAnY2xvbmUnXQorICAgICAgICAgICAgICAgIGlmIHNoYWxsb3c6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctLWRlcHRoJywgJzEnXSkKKyAgICAgICAgICAgICAgICBpZiBicmFuY2g6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctYicgLCBicmFuY2hdKQorICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoW3VybCwgcmVwb2Rpcl0pCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCkKICAgICAgICAgICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGRvd25sb2FkICVzIiAlIHVybCkKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gZG93bmxvYWQgJXMgKCVzKSIgJSAodXJsLCBicmFuY2gpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJkaXIsIGxheWVybmFtZSwgbGF5ZXJkaXIKQEAgLTE3MSw3ICsxNzcsOSBAQAogICAgICAgICAgICAgICAgIHN1YmRpciwgbmFtZSwgbGF5ZXJkaXIgPSBzZWxmLmdldF9mZXRjaF9sYXllcihmZXRjaGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoLmxheWVyLnZjc191cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaC52Y3Nfc3ViZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFyZ3Muc2hvd19vbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFyZ3Muc2hvd19vbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCcmFuY2guYWN0dWFsX2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc2hhbGxvdykKICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZToKICAgICAgICAgICAgICAgICAgICAgIyBFcnJvciBhbHJlYWR5IHNob3duCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCkBAIC0yMDQsNiArMjEyLDcgQEAKICAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2ggPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnbGF5ZXJpbmRleC1mZXRjaCcsIHNlbGYuZG9fbGF5ZXJpbmRleF9mZXRjaCwgcGFyc2VyZWNpcGVzPUZhbHNlKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1uJywgJy0tc2hvdy1vbmx5JywgaGVscD0nc2hvdyBkZXBlbmRlbmNpZXMgYW5kIGRvIG5vdGhpbmcgZWxzZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLWInLCAnLS1icmFuY2gnLCBoZWxwPSdicmFuY2ggbmFtZSB0byBmZXRjaCcpCisgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zaGFsbG93JywgaGVscD0nZG8gb25seSBzaGFsbG93IGNsb25lcyAoLS1kZXB0aD0xKScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pZ25vcmUnLCBoZWxwPSdhc3N1bWUgdGhlIHNwZWNpZmllZCBsYXllcnMgZG8gbm90IG5lZWQgdG8gYmUgZmV0Y2hlZC9hZGRlZCAoc2VwYXJhdGUgbXVsdGlwbGUgbGF5ZXJzIHdpdGggY29tbWFzLCBubyBzcGFjZXMpJywgbWV0YXZhcj0nTEFZRVInKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJ2xheWVybmFtZScsIG5hcmdzPScrJywgaGVscD0nbGF5ZXIgdG8gZmV0Y2gnKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9xdWVyeS5weQppbmRleCA3ZGI0OWM4Li5lMmNjMzEwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvcXVlcnkucHkKQEAgLTQ2LDcgKzQ2LDcgQEAKIGFyZSBvdmVybGF5ZWQgd2lsbCBhbHNvIGJlIGxpc3RlZCwgd2l0aCBhICIgKHNraXBwZWQpIiBzdWZmaXguCiAiIiIKIAotICAgICAgICBpdGVtc19saXN0ZWQgPSBzZWxmLmxpc3RfcmVjaXBlcygnT3ZlcmxheWVkIHJlY2lwZXMnLCBOb25lLCBUcnVlLCBhcmdzLnNhbWVfdmVyc2lvbiwgYXJncy5maWxlbmFtZXMsIEZhbHNlLCBUcnVlLCBOb25lLCBGYWxzZSwgTm9uZSkKKyAgICAgICAgaXRlbXNfbGlzdGVkID0gc2VsZi5saXN0X3JlY2lwZXMoJ092ZXJsYXllZCByZWNpcGVzJywgTm9uZSwgVHJ1ZSwgYXJncy5zYW1lX3ZlcnNpb24sIGFyZ3MuZmlsZW5hbWVzLCBGYWxzZSwgVHJ1ZSwgTm9uZSwgRmFsc2UsIE5vbmUsIGFyZ3MubWMpCiAKICAgICAgICAgIyBDaGVjayBmb3Igb3ZlcmxheWVkIC5iYmNsYXNzIGZpbGVzCiAgICAgICAgIGNsYXNzZXMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsaXN0KQpAQCAtMTEyLDkgKzExMiw5IEBACiAgICAgICAgICAgICB0aXRsZSA9ICdNYXRjaGluZyByZWNpcGVzOicKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRpdGxlID0gJ0F2YWlsYWJsZSByZWNpcGVzOicKLSAgICAgICAgc2VsZi5saXN0X3JlY2lwZXModGl0bGUsIGFyZ3MucG5zcGVjLCBGYWxzZSwgRmFsc2UsIGFyZ3MuZmlsZW5hbWVzLCBhcmdzLnJlY2lwZXNfb25seSwgYXJncy5tdWx0aXBsZSwgYXJncy5sYXllciwgYXJncy5iYXJlLCBpbmhlcml0bGlzdCkKKyAgICAgICAgc2VsZi5saXN0X3JlY2lwZXModGl0bGUsIGFyZ3MucG5zcGVjLCBGYWxzZSwgRmFsc2UsIGFyZ3MuZmlsZW5hbWVzLCBhcmdzLnJlY2lwZXNfb25seSwgYXJncy5tdWx0aXBsZSwgYXJncy5sYXllciwgYXJncy5iYXJlLCBpbmhlcml0bGlzdCwgYXJncy5tYykKIAotICAgIGRlZiBsaXN0X3JlY2lwZXMoc2VsZiwgdGl0bGUsIHBuc3BlYywgc2hvd19vdmVybGF5ZWRfb25seSwgc2hvd19zYW1lX3Zlcl9vbmx5LCBzaG93X2ZpbGVuYW1lcywgc2hvd19yZWNpcGVzX29ubHksIHNob3dfbXVsdGlfcHJvdmlkZXJfb25seSwgc2VsZWN0ZWRfbGF5ZXIsIGJhcmUsIGluaGVyaXRzKToKKyAgICBkZWYgbGlzdF9yZWNpcGVzKHNlbGYsIHRpdGxlLCBwbnNwZWMsIHNob3dfb3ZlcmxheWVkX29ubHksIHNob3dfc2FtZV92ZXJfb25seSwgc2hvd19maWxlbmFtZXMsIHNob3dfcmVjaXBlc19vbmx5LCBzaG93X211bHRpX3Byb3ZpZGVyX29ubHksIHNlbGVjdGVkX2xheWVyLCBiYXJlLCBpbmhlcml0cywgbWMpOgogICAgICAgICBpZiBpbmhlcml0czoKICAgICAgICAgICAgIGJicGF0aCA9IHN0cihzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQlBBVEgnKSkKICAgICAgICAgICAgIGZvciBjbGFzc25hbWUgaW4gaW5oZXJpdHM6CkBAIC0xMjMsMTQgKzEyMywxOCBAQAogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIGNsYXNzIG5hbWVkICVzIGZvdW5kIGluIEJCUEFUSCcsIGNsYXNzZmlsZSkKICAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgICAgICBwa2dfcG4gPSBzZWxmLnRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX3BuCi0gICAgICAgIChsYXRlc3RfdmVyc2lvbnMsIHByZWZlcnJlZF92ZXJzaW9ucykgPSBzZWxmLnRpbmZvaWwuZmluZF9wcm92aWRlcnMoKQotICAgICAgICBhbGxwcm92aWRlcnMgPSBzZWxmLnRpbmZvaWwuZ2V0X2FsbF9wcm92aWRlcnMoKQorICAgICAgICBwa2dfcG4gPSBzZWxmLnRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuCisgICAgICAgIChsYXRlc3RfdmVyc2lvbnMsIHByZWZlcnJlZF92ZXJzaW9ucykgPSBzZWxmLnRpbmZvaWwuZmluZF9wcm92aWRlcnMobWMpCisgICAgICAgIGFsbHByb3ZpZGVycyA9IHNlbGYudGluZm9pbC5nZXRfYWxsX3Byb3ZpZGVycyhtYykKIAogICAgICAgICAjIEVuc3VyZSB3ZSBsaXN0IHNraXBwZWQgcmVjaXBlcwogICAgICAgICAjIFdlIGFyZSBsYXJnZWx5IGd1ZXNzaW5nIGFib3V0IFBOLCBQViBhbmQgdGhlIHByZWZlcnJlZCB2ZXJzaW9uIGhlcmUsCiAgICAgICAgICMgYnV0IHdlIGhhdmUgbm8gY2hvaWNlIHNpbmNlIHNraXBwZWQgcmVjaXBlcyBhcmUgbm90IGZ1bGx5IHBhcnNlZAogICAgICAgICBza2lwbGlzdCA9IGxpc3Qoc2VsZi50aW5mb2lsLmNvb2tlci5za2lwbGlzdC5rZXlzKCkpCisgICAgICAgIG1jc3BlYyA9ICdtYzolczonICUgbWMKKyAgICAgICAgaWYgbWM6CisgICAgICAgICAgICBza2lwbGlzdCA9IFtzW2xlbihtY3NwZWMpOl0gZm9yIHMgaW4gc2tpcGxpc3QgaWYgcy5zdGFydHN3aXRoKG1jc3BlYyldCisKICAgICAgICAgZm9yIGZuIGluIHNraXBsaXN0OgogICAgICAgICAgICAgcmVjaXBlX3BhcnRzID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZuKSlbMF0uc3BsaXQoJ18nKQogICAgICAgICAgICAgcCA9IHJlY2lwZV9wYXJ0c1swXQpAQCAtMTg3LDcgKzE5MSw3IEBACiAgICAgICAgICAgICAgICAgIyBXZSBvbmx5IGRpc3BsYXkgb25jZSBwZXIgcmVjaXBlLCB3ZSBzaG91bGQgcHJlZmVyIG5vbiBleHRlbmRlZCB2ZXJzaW9ucyBvZiB0aGUKICAgICAgICAgICAgICAgICAjIHJlY2lwZSBpZiBwcmVzZW50IChzbyBlLmcuIGluIE9wZW5FbWJlZGRlZCwgb3BlbnNzbCByYXRoZXIgdGhhbiBuYXRpdmVzZGstb3BlbnNzbAogICAgICAgICAgICAgICAgICMgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHNvcnQgZmlyc3QpLgotICAgICAgICAgICAgICAgIGlmIHJlYWxmblsxXSBhbmQgcmVhbGZuWzBdIGluIHNlbGYudGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfZm46CisgICAgICAgICAgICAgICAgaWYgcmVhbGZuWzFdIGFuZCByZWFsZm5bMF0gaW4gc2VsZi50aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnBrZ19mbjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgIGlmIGluaGVyaXRzOgpAQCAtNDk2LDYgKzUwMCw3IEBACiAgICAgICAgIHBhcnNlcl9zaG93X292ZXJsYXllZCA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LW92ZXJsYXllZCcsIHNlbGYuZG9fc2hvd19vdmVybGF5ZWQpCiAgICAgICAgIHBhcnNlcl9zaG93X292ZXJsYXllZC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nLCBsaXN0IGZpbGVuYW1lcyBvZiBoaWdoZXIgcHJpb3JpdHkgcmVjaXBlcyB3aXRoIHRoZSBvbmVzIHRoZXkgb3ZlcmxheSBpbmRlbnRlZCB1bmRlcm5lYXRoJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFyc2VyX3Nob3dfb3ZlcmxheWVkLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zYW1lLXZlcnNpb24nLCBoZWxwPSdvbmx5IGxpc3Qgb3ZlcmxheWVkIHJlY2lwZXMgd2hlcmUgdGhlIHZlcnNpb24gaXMgdGhlIHNhbWUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgICAgICBwYXJzZXJfc2hvd19vdmVybGF5ZWQuYWRkX2FyZ3VtZW50KCctLW1jJywgaGVscD0ndXNlIHNwZWNpZmllZCBtdWx0aWNvbmZpZycsIGRlZmF1bHQ9JycpCiAKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LXJlY2lwZXMnLCBzZWxmLmRvX3Nob3dfcmVjaXBlcykKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nLCBsaXN0IGZpbGVuYW1lcyBvZiBoaWdoZXIgcHJpb3JpdHkgcmVjaXBlcyB3aXRoIHRoZSBvbmVzIHRoZXkgb3ZlcmxheSBpbmRlbnRlZCB1bmRlcm5lYXRoJywgYWN0aW9uPSdzdG9yZV90cnVlJykKQEAgLTUwNCw2ICs1MDksNyBAQAogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbmhlcml0cycsIGhlbHA9J29ubHkgbGlzdCByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUgbmFtZWQgY2xhc3MoZXMpIC0gc2VwYXJhdGUgbXVsdGlwbGUgY2xhc3NlcyB1c2luZyAsICh3aXRob3V0IHNwYWNlcyknLCBtZXRhdmFyPSdDTEFTUycsIGRlZmF1bHQ9JycpCiAgICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCctbCcsICctLWxheWVyJywgaGVscD0nb25seSBsaXN0IHJlY2lwZXMgZnJvbSB0aGUgc2VsZWN0ZWQgbGF5ZXInLCBkZWZhdWx0PScnKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWInLCAnLS1iYXJlJywgaGVscD0nb3V0cHV0IGp1c3QgbmFtZXMgd2l0aG91dCB0aGUgIihza2lwcGVkKSIgbWFya2VyJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy0tbWMnLCBoZWxwPSd1c2Ugc3BlY2lmaWVkIG11bHRpY29uZmlnJywgZGVmYXVsdD0nJykKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJ3Buc3BlYycsIG5hcmdzPScqJywgaGVscD0nb3B0aW9uYWwgcmVjaXBlIG5hbWUgc3BlY2lmaWNhdGlvbiAod2lsZGNhcmRzIGFsbG93ZWQsIGVuY2xvc2UgaW4gcXVvdGVzIHRvIGF2b2lkIHNoZWxsIGV4cGFuc2lvbiknKQogCiAgICAgICAgIHBhcnNlcl9zaG93X2FwcGVuZHMgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnc2hvdy1hcHBlbmRzJywgc2VsZi5kb19zaG93X2FwcGVuZHMpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L19faW5pdF9fLnB5CmluZGV4IGY2ZmRmZDUuLmUzNTcyNWIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L19faW5pdF9fLnB5CkBAIC00MjcsNyArNDI3LDcgQEAKICAgICAgICAgaWYgc2VsZi5pc194bWw6CiAgICAgICAgICAgICAjIFByaW50IHRoZSBYTUwgZGVjbGFyYXRpb24KICAgICAgICAgICAgIGVuY29kaW5nX3BhcnQgPSAnJwotICAgICAgICAgICAgaWYgZXZlbnR1YWxfZW5jb2RpbmcgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGV2ZW50dWFsX2VuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGVuY29kaW5nX3BhcnQgPSAnIGVuY29kaW5nPSIlcyInICUgZXZlbnR1YWxfZW5jb2RpbmcKICAgICAgICAgICAgIHByZWZpeCA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiJXM/PlxuJyAlIGVuY29kaW5nX3BhcnQKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvYnVpbGRlci9faHRtbDVsaWIucHkKaW5kZXggMmI3YTcwYS4uOWU5MjE2ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvYnVpbGRlci9faHRtbDVsaWIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvYnVpbGRlci9faHRtbDVsaWIucHkKQEAgLTIsNyArMiw2IEBACiAgICAgJ0hUTUw1VHJlZUJ1aWxkZXInLAogICAgIF0KIAotZnJvbSBwZGIgaW1wb3J0IHNldF90cmFjZQogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGJzNC5idWlsZGVyIGltcG9ydCAoCiAgICAgUEVSTUlTU0lWRSwKQEAgLTMyMiw3ICszMjEsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5lbGVtZW50LmNvbnRlbnRzCiAKICAgICBkZWYgZ2V0TmFtZVR1cGxlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZSA9PSBOb25lOgorICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIG5hbWVzcGFjZXNbImh0bWwiXSwgc2VsZi5uYW1lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lc3BhY2UsIHNlbGYubmFtZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvZGFtbWl0LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvZGFtbWl0LnB5CmluZGV4IDgwNWFhOTAuLjdhZDllMGQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2RhbW1pdC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC9kYW1taXQucHkKQEAgLTgsMTIgKzgsMTAgQEAKICIiIgogX19saWNlbnNlX18gPSAiTUlUIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgY29kZWNzCiBmcm9tIGh0bWwuZW50aXRpZXMgaW1wb3J0IGNvZGVwb2ludDJuYW1lCiBpbXBvcnQgcmUKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3RyaW5nCiAKICMgSW1wb3J0IGEgbGlicmFyeSB0byBhdXRvZGV0ZWN0IGNoYXJhY3RlciBlbmNvZGluZ3MuCiBjaGFyZGV0X3R5cGUgPSBOb25lCkBAIC0zOCwxMiArMzYsNiBAQAogICAgICAgICBkZWYgY2hhcmRldF9kYW1taXQocyk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0jIEF2YWlsYWJsZSBmcm9tIGh0dHA6Ly9jamtweXRob24uaTE4bi5vcmcvLgotdHJ5OgotICAgIGltcG9ydCBpY29udl9jb2RlYwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQogeG1sX2VuY29kaW5nX3JlID0gcmUuY29tcGlsZSgKICAgICByJ148XD8uKmVuY29kaW5nPVtcJyJdKC4qPylbXCciXS4qXD8+Jy5lbmNvZGUoKSwgcmUuSSkKIGh0bWxfbWV0YV9yZSA9IHJlLmNvbXBpbGUoCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC9lbGVtZW50LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvZWxlbWVudC5weQppbmRleCAzNzc1YTYwLi42OGJlNDJkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC9lbGVtZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2VsZW1lbnQucHkKQEAgLTEsNiArMSw1IEBACiBfX2xpY2Vuc2VfXyA9ICJNSVQiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCByZQogaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdGluZy5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RpbmcucHkKaW5kZXggM2EyZjI2MC4uOTUzYmNhOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdGluZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0aW5nLnB5CkBAIC00LDcgKzQsNiBAQAogCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgY29weQotaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQogZnJvbSBiczQgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfZG9jcy5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfZG9jcy5weQppbmRleCA1YjlmNjc3Li5kMWQ3NmEzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2RvY3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9kb2NzLnB5CkBAIC03LDE5ICs3LDE1IEBACiAgICAgJ2FkZGl0aW9uYWxfdGVzdHMnLAogICAgIF0KIAotaW1wb3J0IGF0ZXhpdAogaW1wb3J0IGRvY3Rlc3QKLWltcG9ydCBvcwogI2Zyb20gcGtnX3Jlc291cmNlcyBpbXBvcnQgKAogIyAgICByZXNvdXJjZV9maWxlbmFtZSwgcmVzb3VyY2VfZXhpc3RzLCByZXNvdXJjZV9saXN0ZGlyLCBjbGVhbnVwX3Jlc291cmNlcykKLWltcG9ydCB1bml0dGVzdAogCiBET0NURVNUX0ZMQUdTID0gKAogICAgIGRvY3Rlc3QuRUxMSVBTSVMgfAogICAgIGRvY3Rlc3QuTk9STUFMSVpFX1dISVRFU1BBQ0UgfAogICAgIGRvY3Rlc3QuUkVQT1JUX05ESUZGKQogCi0KICMgZGVmIGFkZGl0aW9uYWxfdGVzdHMoKToKICMgICAgICJSdW4gdGhlIGRvYyB0ZXN0cyAoUkVBRE1FLnR4dCBhbmQgZG9jcy8qLCBpZiBhbnkgZXhpc3QpIgogIyAgICAgZG9jdGVzdF9maWxlcyA9IFsKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfaHRtbHBhcnNlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfaHRtbHBhcnNlci5weQppbmRleCBiNDVlMzVmLi4zMGEyNWU2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2h0bWxwYXJzZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9odG1scGFyc2VyLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgdG8gZW5zdXJlIHRoYXQgdGhlIGh0bWwucGFyc2VyIHRyZWUgYnVpbGRlciBnZW5lcmF0ZXMgZ29vZAogdHJlZXMuIiIiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBwaWNrbGUKIGZyb20gYnM0LnRlc3RpbmcgaW1wb3J0IFNvdXBUZXN0LCBIVE1MVHJlZUJ1aWxkZXJTbW9rZVRlc3QKIGZyb20gYnM0LmJ1aWxkZXIgaW1wb3J0IEhUTUxQYXJzZXJUcmVlQnVpbGRlcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9seG1sLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9seG1sLnB5CmluZGV4IDZjMmExZDcuLjZiNmNkZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfbHhtbC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2x4bWwucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0cyB0byBlbnN1cmUgdGhhdCB0aGUgbHhtbCB0cmVlIGJ1aWxkZXIgZ2VuZXJhdGVzIGdvb2QgdHJlZXMuIiIiCiAKLWltcG9ydCByZQogaW1wb3J0IHdhcm5pbmdzCiAKIHRyeToKQEAgLTE0LDEzICsxMyw4IEBACiBpZiBMWE1MX1BSRVNFTlQ6CiAgICAgZnJvbSBiczQuYnVpbGRlciBpbXBvcnQgTFhNTFRyZWVCdWlsZGVyLCBMWE1MVHJlZUJ1aWxkZXJGb3JYTUwKIAotZnJvbSBiczQgaW1wb3J0ICgKLSAgICBCZWF1dGlmdWxTb3VwLAotICAgIEJlYXV0aWZ1bFN0b25lU291cCwKLSAgICApCi1mcm9tIGJzNC5lbGVtZW50IGltcG9ydCBDb21tZW50LCBEb2N0eXBlLCBTb3VwU3RyYWluZXIKK2Zyb20gYnM0IGltcG9ydCBCZWF1dGlmdWxTdG9uZVNvdXAKIGZyb20gYnM0LnRlc3RpbmcgaW1wb3J0IHNraXBJZgotZnJvbSBiczQudGVzdHMgaW1wb3J0IHRlc3RfaHRtbHBhcnNlcgogZnJvbSBiczQudGVzdGluZyBpbXBvcnQgKAogICAgIEhUTUxUcmVlQnVpbGRlclNtb2tlVGVzdCwKICAgICBYTUxUcmVlQnVpbGRlclNtb2tlVGVzdCwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3Rfc291cC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3Rfc291cC5weQppbmRleCBmODc5NDllLi42YWQzY2IzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3NvdXAucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9zb3VwLnB5CkBAIC0xLDE2ICsxLDEyIEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogIiIiVGVzdHMgb2YgQmVhdXRpZnVsIFNvdXAgYXMgYSB3aG9sZS4iIiIKIAotZnJvbSBwZGIgaW1wb3J0IHNldF90cmFjZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKLWZyb20gYnM0IGltcG9ydCAoCi0gICAgQmVhdXRpZnVsU291cCwKLSAgICBCZWF1dGlmdWxTdG9uZVNvdXAsCi0pCitmcm9tIGJzNCBpbXBvcnQgQmVhdXRpZnVsU291cAogZnJvbSBiczQuZWxlbWVudCBpbXBvcnQgKAogICAgIENoYXJzZXRNZXRhQXR0cmlidXRlVmFsdWUsCiAgICAgQ29udGVudE1ldGFBdHRyaWJ1dGVWYWx1ZSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfdHJlZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfdHJlZS5weQppbmRleCA2ZDNlNjdmLi44ZTVjNjY0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3RyZWUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF90cmVlLnB5CkBAIC05LDE2ICs5LDEyIEBACiBtZXRob2RzIHRlc3RlZCBoZXJlLgogIiIiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBiczQgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKLWZyb20gYnM0LmJ1aWxkZXIgaW1wb3J0ICgKLSAgICBidWlsZGVyX3JlZ2lzdHJ5LAotICAgIEhUTUxQYXJzZXJUcmVlQnVpbGRlciwKLSkKK2Zyb20gYnM0LmJ1aWxkZXIgaW1wb3J0IGJ1aWxkZXJfcmVnaXN0cnkKIGZyb20gYnM0LmVsZW1lbnQgaW1wb3J0ICgKICAgICBQWTNLLAogICAgIENEYXRhLApAQCAtMjksMTAgKzI1LDcgQEAKICAgICBTb3VwU3RyYWluZXIsCiAgICAgVGFnLAogKQotZnJvbSBiczQudGVzdGluZyBpbXBvcnQgKAotICAgIFNvdXBUZXN0LAotICAgIHNraXBJZiwKLSkKK2Zyb20gYnM0LnRlc3RpbmcgaW1wb3J0IFNvdXBUZXN0CiAKIFhNTF9CVUlMREVSX1BSRVNFTlQgPSAoYnVpbGRlcl9yZWdpc3RyeS5sb29rdXAoInhtbCIpIGlzIG5vdCBOb25lKQogTFhNTF9QUkVTRU5UID0gKGJ1aWxkZXJfcmVnaXN0cnkubG9va3VwKCJseG1sIikgaXMgbm90IE5vbmUpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weSBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvY2xpZW50LnB5CmluZGV4IGY2NTk1NjYuLjQ2MDg1ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvY2xpZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvY2xpZW50LnB5CkBAIC0zLDcgKzMsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZwogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc29ja2V0CkBAIC0xNDgsNiArMTQ3LDE0IEBACiAgICAgICAgIG1bJ3VuaWhhc2gnXSA9IHVuaWhhc2gKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9tZXNzYWdlKHsncmVwb3J0JzogbX0pCiAKKyAgICBkZWYgcmVwb3J0X3VuaWhhc2hfZXF1aXYoc2VsZiwgdGFza2hhc2gsIG1ldGhvZCwgdW5paGFzaCwgZXh0cmE9e30pOgorICAgICAgICBzZWxmLl9zZXRfbW9kZShzZWxmLk1PREVfTk9STUFMKQorICAgICAgICBtID0gZXh0cmEuY29weSgpCisgICAgICAgIG1bJ3Rhc2toYXNoJ10gPSB0YXNraGFzaAorICAgICAgICBtWydtZXRob2QnXSA9IG1ldGhvZAorICAgICAgICBtWyd1bmloYXNoJ10gPSB1bmloYXNoCisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfbWVzc2FnZSh7J3JlcG9ydC1lcXVpdic6IG19KQorCiAgICAgZGVmIGdldF9zdGF0cyhzZWxmKToKICAgICAgICAgc2VsZi5fc2V0X21vZGUoc2VsZi5NT0RFX05PUk1BTCkKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9tZXNzYWdlKHsnZ2V0LXN0YXRzJzogTm9uZX0pCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weSBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvc2VydmVyLnB5CmluZGV4IDBhZmY3NzYuLmNjN2U0ODIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvc2VydmVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvc2VydmVyLnB5CkBAIC0xNDMsNiArMTQzLDcgQEAKICAgICAgICAgICAgIGhhbmRsZXJzID0gewogICAgICAgICAgICAgICAgICdnZXQnOiBzZWxmLmhhbmRsZV9nZXQsCiAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6IHNlbGYuaGFuZGxlX3JlcG9ydCwKKyAgICAgICAgICAgICAgICAncmVwb3J0LWVxdWl2Jzogc2VsZi5oYW5kbGVfZXF1aXZyZXBvcnQsCiAgICAgICAgICAgICAgICAgJ2dldC1zdHJlYW0nOiBzZWxmLmhhbmRsZV9nZXRfc3RyZWFtLAogICAgICAgICAgICAgICAgICdnZXQtc3RhdHMnOiBzZWxmLmhhbmRsZV9nZXRfc3RhdHMsCiAgICAgICAgICAgICAgICAgJ3Jlc2V0LXN0YXRzJzogc2VsZi5oYW5kbGVfcmVzZXRfc3RhdHMsCkBAIC0zMDMsNiArMzA0LDQxIEBACiAKICAgICAgICAgc2VsZi53cml0ZV9tZXNzYWdlKGQpCiAKKyAgICBhc3luYyBkZWYgaGFuZGxlX2VxdWl2cmVwb3J0KHNlbGYsIGRhdGEpOgorICAgICAgICB3aXRoIGNsb3Npbmcoc2VsZi5kYi5jdXJzb3IoKSkgYXMgY3Vyc29yOgorICAgICAgICAgICAgaW5zZXJ0X2RhdGEgPSB7CisgICAgICAgICAgICAgICAgJ21ldGhvZCc6IGRhdGFbJ21ldGhvZCddLAorICAgICAgICAgICAgICAgICdvdXRoYXNoJzogIiIsCisgICAgICAgICAgICAgICAgJ3Rhc2toYXNoJzogZGF0YVsndGFza2hhc2gnXSwKKyAgICAgICAgICAgICAgICAndW5paGFzaCc6IGRhdGFbJ3VuaWhhc2gnXSwKKyAgICAgICAgICAgICAgICAnY3JlYXRlZCc6IGRhdGV0aW1lLm5vdygpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciBrIGluICgnb3duZXInLCAnUE4nLCAnUFYnLCAnUFInLCAndGFzaycsICdvdXRoYXNoX3NpZ2luZm8nKToKKyAgICAgICAgICAgICAgICBpZiBrIGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGluc2VydF9kYXRhW2tdID0gZGF0YVtrXQorCisgICAgICAgICAgICBjdXJzb3IuZXhlY3V0ZSgnJydJTlNFUlQgT1IgSUdOT1JFIElOVE8gdGFza3NfdjIgKCVzKSBWQUxVRVMgKCVzKScnJyAlICgKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc29ydGVkKGluc2VydF9kYXRhLmtleXMoKSkpLAorICAgICAgICAgICAgICAgICcsICcuam9pbignOicgKyBrIGZvciBrIGluIHNvcnRlZChpbnNlcnRfZGF0YS5rZXlzKCkpKSksCisgICAgICAgICAgICAgICAgaW5zZXJ0X2RhdGEpCisKKyAgICAgICAgICAgIHNlbGYuZGIuY29tbWl0KCkKKworICAgICAgICAgICAgIyBGZXRjaCB0aGUgdW5paGFzaCB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgZm9yIHRoZSB0YXNraGFzaC4gSWYgdGhlCisgICAgICAgICAgICAjIHVuaWhhc2ggbWF0Y2hlcywgaXQgbWVhbnMgdGhpcyByb3cgd2FzIGluc2VydGVkIChvciB0aGUgbWFwcGluZworICAgICAgICAgICAgIyB3YXMgYWxyZWFkeSB2YWxpZCkKKyAgICAgICAgICAgIHJvdyA9IHNlbGYucXVlcnlfZXF1aXZhbGVudChkYXRhWydtZXRob2QnXSwgZGF0YVsndGFza2hhc2gnXSkKKworICAgICAgICAgICAgaWYgcm93Wyd1bmloYXNoJ10gPT0gZGF0YVsndW5paGFzaCddOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgdGFza2hhc2ggZXF1aXZhbGVuY2UgZm9yICVzIHdpdGggdW5paGFzaCAlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3Rhc2toYXNoJ10sIHJvd1sndW5paGFzaCddKQorCisgICAgICAgICAgICBkID0ge2s6IHJvd1trXSBmb3IgayBpbiAoJ3Rhc2toYXNoJywgJ21ldGhvZCcsICd1bmloYXNoJyl9CisKKyAgICAgICAgc2VsZi53cml0ZV9tZXNzYWdlKGQpCisKKwogICAgIGFzeW5jIGRlZiBoYW5kbGVfZ2V0X3N0YXRzKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBkID0gewogICAgICAgICAgICAgJ3JlcXVlc3RzJzogc2VsZi5yZXF1ZXN0X3N0YXRzLnRvZGljdCgpLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9jb29rZXIucHkKaW5kZXggNjA0YTk2MS4uNjViMjNkMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL2Nvb2tlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvY29va2VyLnB5CkBAIC00LDkgKzQsOCBAQAogIwogCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IGpzb24KIAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCiBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdW5xdW90ZSwgdXJscGFyc2UKIApAQCAtOTQsNyArOTMsNyBAQAogICAgICAgICAgICAgcmV0dXJuIGluZGV4CiAKICAgICAgICAgY29sbGVjdGlvbnMgPSBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykKLSAgICAgICAgbGF5ZXJjb25mcyA9IGQudmFyaGlzdG9yeS5nZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoJ0JCRklMRV9DT0xMRUNUSU9OUycsIGQpCisgICAgICAgIGxheWVyY29uZnMgPSBkLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnKQogICAgICAgICBiYmZpbGVfY29sbGVjdGlvbnMgPSB7bGF5ZXI6IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUocGF0aCkpIGZvciBsYXllciwgcGF0aCBpbiBsYXllcmNvbmZzLml0ZW1zKCl9CiAKICAgICAgICAgKF8sIGJiX2JyYW5jaCwgXywgXykgPSBzZWxmLl9nZXRfYml0YmFrZV9pbmZvKCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9wbHVnaW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5CmluZGV4IDcwMTVhMWEuLmNhZGRhMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9wbHVnaW4ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3BsdWdpbi5weQpAQCAtNywxMCArNyw3IEBACiAjICAgUGx1Z2luIGJhc2UgY2xhc3MKICMgICBVdGlsaXR5IEZ1bmN0aW9ucyBmb3Igd29ya2luZyBvbiBsYXllcmluZGV4IGRhdGEKIAotaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgYmIubXNnCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLmxheWVyaW5kZXhsaWIucGx1Z2luJykKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb29rZXIucHkKaW5kZXggMWZhMTAyZS4uMWQwNjg1ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvY29va2VyLnB5CkBAIC0zLDE1ICszLDEyIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBvcwogaW1wb3J0IGJiCiAKIGltcG9ydCBsYXllcmluZGV4bGliCiBmcm9tIGxheWVyaW5kZXhsaWIudGVzdHMuY29tbW9uIGltcG9ydCBMYXllcnNUZXN0CiAKLWltcG9ydCBsb2dnaW5nCiAKIGNsYXNzIExheWVySW5kZXhDb29rZXJUZXN0KExheWVyc1Rlc3QpOgogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5CmluZGV4IDBjNWVjODguLmRlMWU0NzQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5CkBAIC0zLDE0ICszLDggQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IG9zCi1pbXBvcnQgYmIKLQogZnJvbSBsYXllcmluZGV4bGliLnRlc3RzLmNvbW1vbiBpbXBvcnQgTGF5ZXJzVGVzdAogCi1pbXBvcnQgbG9nZ2luZwogCiBjbGFzcyBMYXllckluZGV4T2JqZWN0c1Rlc3QoTGF5ZXJzVGVzdCk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weQppbmRleCA2ZDhkYzAwLi5lNWNjYWZlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weQpAQCAtNCwxNCArNCwxMSBAQAogIwogCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IG9zCi1pbXBvcnQgYmIKIAogaW1wb3J0IGxheWVyaW5kZXhsaWIKIGZyb20gbGF5ZXJpbmRleGxpYi50ZXN0cy5jb21tb24gaW1wb3J0IExheWVyc1Rlc3QKIAotaW1wb3J0IGxvZ2dpbmcKIAogZGVmIHNraXBJZk5vTmV0d29yaygpOgogICAgIGlmIG9zLmVudmlyb24uZ2V0KCJCQl9TS0lQX05FVFRFU1RTIikgPT0gInllcyI6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3BseS95YWNjLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9wbHkveWFjYy5weQppbmRleCBkNTA4ODZlLi41NjE3ODRmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3BseS95YWNjLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvcGx5L3lhY2MucHkKQEAgLTQ4OCw3ICs0ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAjIC0tISBERUJVRwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICAgICAgICAgIGlmIHQgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHQgaXMgTm9uZToKIAogICAgICAgICAgICAgICAgICMgLS0hIERFQlVHCiAgICAgICAgICAgICAgICAgZGVidWcuZXJyb3IoJ0Vycm9yICA6ICVzJywKQEAgLTc2Niw3ICs3NjYsNyBAQAogICAgICAgICAgICAgICAgICAgICBuID0gc3ltc3RhY2tbLTFdCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG4sInZhbHVlIixOb25lKQogCi0gICAgICAgICAgICBpZiB0ID09IE5vbmU6CisgICAgICAgICAgICBpZiB0IGlzIE5vbmU6CiAKICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgc29tZSBraW5kIG9mIHBhcnNpbmcgZXJyb3IgaGVyZS4gIFRvIGhhbmRsZQogICAgICAgICAgICAgICAgICMgdGhpcywgd2UgYXJlIGdvaW5nIHRvIHB1c2ggdGhlIGN1cnJlbnQgdG9rZW4gb250bwpAQCAtMTAyMSw3ICsxMDIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgbiA9IHN5bXN0YWNrWy0xXQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihuLCJ2YWx1ZSIsTm9uZSkKIAotICAgICAgICAgICAgaWYgdCA9PSBOb25lOgorICAgICAgICAgICAgaWYgdCBpcyBOb25lOgogCiAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHNvbWUga2luZCBvZiBwYXJzaW5nIGVycm9yIGhlcmUuICBUbyBoYW5kbGUKICAgICAgICAgICAgICAgICAjIHRoaXMsIHdlIGFyZSBnb2luZyB0byBwdXNoIHRoZSBjdXJyZW50IHRva2VuIG9udG8KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvZGIucHkKaW5kZXggMTE3ZDhjMC4uY2IyYTI0NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvZGIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvZGIucHkKQEAgLTcxLDcgKzcxLDcgQEAKICAgICAgICAgZGF0YT1zZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICNubyB2YWx1ZSBmb3VuZCwgdHJ5IHRvIGluc2VydApAQCAtODcsNyArODcsNyBAQAogICAgICAgICAgICAgZGF0YT1zZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0pKQogICAgICAgICAgICAgcm93PWRhdGEuZmV0Y2hvbmUoKQotICAgICAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1swXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBwcnNlcnYuTm90Rm91bmRFcnJvcgpAQCAtOTksNyArOTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYudGFibGUsIHNlbGYudGFibGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSwgdmVyc2lvbiwgcGtnYXJjaCkpCiAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICNubyB2YWx1ZSBmb3VuZCwgdHJ5IHRvIGluc2VydApAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAgICAgICBkYXRhPXNlbGYuX2V4ZWN1dGUoIlNFTEVDVCB2YWx1ZSBGUk9NICVzIFdIRVJFIHZlcnNpb249PyBBTkQgcGtnYXJjaD0/IEFORCBjaGVja3N1bT0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgICAgICBpZiByb3cgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIHByc2Vydi5Ob3RGb3VuZEVycm9yCkBAIC0xMzIsNyArMTMyLDcgQEAKICAgICAgICAgZGF0YSA9IHNlbGYuX2V4ZWN1dGUoIlNFTEVDVCB2YWx1ZSBGUk9NICVzIFdIRVJFIHZlcnNpb249PyBBTkQgcGtnYXJjaD0/IEFORCBjaGVja3N1bT0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtKSkKICAgICAgICAgcm93ID0gZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB2YWw9cm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjbm8gdmFsdWUgZm91bmQsIHRyeSB0byBpbnNlcnQKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2V4ZWN1dGUoIlNFTEVDVCB2YWx1ZSBGUk9NICVzIFdIRVJFIHZlcnNpb249PyBBTkQgcGtnYXJjaD0/IEFORCBjaGVja3N1bT0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtKSkKICAgICAgICAgICAgIHJvdyA9IGRhdGEuZmV0Y2hvbmUoKQotICAgICAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdmFsID0gcm93WzBdCiAgICAgICAgIHJldHVybiB2YWwKIApAQCAtMTcwLDcgKzE3MCw3IEBACiAgICAgICAgIGRhdGEgPSBzZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PyBBTkQgdmFsdWU+PT87IiAlIHNlbGYudGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24scGtnYXJjaCxjaGVja3N1bSx2YWx1ZSkpCiAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weQppbmRleCBiODU0YmExLi4yNWRjZjhhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L3NlcnYucHkKQEAgLTI5MiwxMCArMjkyLDkgQEAKICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoc3RyZWFtaGFuZGxlcikKIAogICAgICAgICAjIHdyaXRlIHBpZGZpbGUKLSAgICAgICAgcGlkID0gc3RyKG9zLmdldHBpZCgpKSAKLSAgICAgICAgcGYgPSBvcGVuKHNlbGYucGlkZmlsZSwgJ3cnKQotICAgICAgICBwZi53cml0ZSgiJXNcbiIgJSBwaWQpCi0gICAgICAgIHBmLmNsb3NlKCkKKyAgICAgICAgcGlkID0gc3RyKG9zLmdldHBpZCgpKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5waWRmaWxlLCAndycpIGFzIHBmOgorICAgICAgICAgICAgcGYud3JpdGUoIiVzXG4iICUgcGlkKQogCiAgICAgICAgIHNlbGYud29ya19mb3JldmVyKCkKICAgICAgICAgc2VsZi5kZWxwaWQoKQpAQCAtMzUzLDkgKzM1Miw4IEBACiAgICAgaXAgPSBzb2NrZXQuZ2V0aG9zdGJ5bmFtZShob3N0KQogICAgIHBpZGZpbGUgPSBQSURQUkVGSVggJSAoaXAsIHBvcnQpCiAgICAgdHJ5OgotICAgICAgICBwZiA9IG9wZW4ocGlkZmlsZSwncicpCi0gICAgICAgIHBpZCA9IGludChwZi5yZWFkbGluZSgpLnN0cmlwKCkpCi0gICAgICAgIHBmLmNsb3NlKCkKKyAgICAgICAgd2l0aCBvcGVuKHBpZGZpbGUpIGFzIHBmOgorICAgICAgICAgICAgcGlkID0gaW50KHBmLnJlYWRsaW5lKCkuc3RyaXAoKSkKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGlkID0gTm9uZQogCkBAIC00NDksMjkgKzQ0NywzNSBAQAogZGVmIGF1dG9fc3RhcnQoZCk6CiAgICAgZ2xvYmFsIHNpbmdsZXRvbgogCi0gICAgIyBTaHV0ZG93biBhbnkgZXhpc3RpbmcgUFIgU2VydmVyCi0gICAgYXV0b19zaHV0ZG93bigpCi0KICAgICBob3N0X3BhcmFtcyA9IGxpc3QoZmlsdGVyKE5vbmUsIChkLmdldFZhcignUFJTRVJWX0hPU1QnKSBvciAnJykuc3BsaXQoJzonKSkpCiAgICAgaWYgbm90IGhvc3RfcGFyYW1zOgorICAgICAgICAjIFNodXRkb3duIGFueSBleGlzdGluZyBQUiBTZXJ2ZXIKKyAgICAgICAgYXV0b19zaHV0ZG93bigpCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBpZiBsZW4oaG9zdF9wYXJhbXMpICE9IDI6CisgICAgICAgICMgU2h1dGRvd24gYW55IGV4aXN0aW5nIFBSIFNlcnZlcgorICAgICAgICBhdXRvX3NodXRkb3duKCkKICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCdcbicuam9pbihbJ1BSU0VSVl9IT1NUOiBpbmNvcnJlY3QgZm9ybWF0JywKICAgICAgICAgICAgICAgICAnVXNhZ2U6IFBSU0VSVl9IT1NUID0gIjxob3N0bmFtZT46PHBvcnQ+IiddKSkKICAgICAgICAgcmFpc2UgUFJTZXJ2aWNlQ29uZmlnRXJyb3IKIAotICAgIGlmIGlzX2xvY2FsX3NwZWNpYWwoaG9zdF9wYXJhbXNbMF0sIGludChob3N0X3BhcmFtc1sxXSkpIGFuZCBub3Qgc2luZ2xldG9uOgorICAgIGlmIGlzX2xvY2FsX3NwZWNpYWwoaG9zdF9wYXJhbXNbMF0sIGludChob3N0X3BhcmFtc1sxXSkpOgogICAgICAgICBpbXBvcnQgYmIudXRpbHMKICAgICAgICAgY2FjaGVkaXIgPSAoZC5nZXRWYXIoIlBFUlNJU1RFTlRfRElSIikgb3IgZC5nZXRWYXIoIkNBQ0hFIikpCiAgICAgICAgIGlmIG5vdCBjYWNoZWRpcjoKICAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiUGxlYXNlIHNldCB0aGUgJ1BFUlNJU1RFTlRfRElSJyBvciAnQ0FDSEUnIHZhcmlhYmxlIikKICAgICAgICAgICAgIHJhaXNlIFBSU2VydmljZUNvbmZpZ0Vycm9yCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjYWNoZWRpcikKICAgICAgICAgZGJmaWxlID0gb3MucGF0aC5qb2luKGNhY2hlZGlyLCAicHJzZXJ2LnNxbGl0ZTMiKQogICAgICAgICBsb2dmaWxlID0gb3MucGF0aC5qb2luKGNhY2hlZGlyLCAicHJzZXJ2LmxvZyIpCi0gICAgICAgIHNpbmdsZXRvbiA9IFBSU2VydlNpbmdsZXRvbihvcy5wYXRoLmFic3BhdGgoZGJmaWxlKSwgb3MucGF0aC5hYnNwYXRoKGxvZ2ZpbGUpLCAoImxvY2FsaG9zdCIsMCkpCi0gICAgICAgIHNpbmdsZXRvbi5zdGFydCgpCisgICAgICAgIGlmIHNpbmdsZXRvbjoKKyAgICAgICAgICAgIGlmIHNpbmdsZXRvbi5kYmZpbGUgIT0gZGJmaWxlOgorICAgICAgICAgICAgICAgIyBTaHV0ZG93biBhbnkgZXhpc3RpbmcgUFIgU2VydmVyIGFzIGRvZXNuJ3QgbWF0Y2ggY29uZmlnCisgICAgICAgICAgICAgICBhdXRvX3NodXRkb3duKCkKKyAgICAgICAgaWYgbm90IHNpbmdsZXRvbjoKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjYWNoZWRpcikKKyAgICAgICAgICAgIHNpbmdsZXRvbiA9IFBSU2VydlNpbmdsZXRvbihvcy5wYXRoLmFic3BhdGgoZGJmaWxlKSwgb3MucGF0aC5hYnNwYXRoKGxvZ2ZpbGUpLCAoImxvY2FsaG9zdCIsMCkpCisgICAgICAgICAgICBzaW5nbGV0b24uc3RhcnQoKQogICAgIGlmIHNpbmdsZXRvbjoKICAgICAgICAgaG9zdCwgcG9ydCA9IHNpbmdsZXRvbi5nZXRpbmZvKCkKICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkgYi9wb2t5L2JpdGJha2UvbGliL3B5aW5vdGlmeS5weQppbmRleCAxNTI4YTIyLi42YWU0MGEyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3B5aW5vdGlmeS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3B5aW5vdGlmeS5weQpAQCAtMTI3NCw3ICsxMjc0LDcgQEAKICAgICAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkgb3IgJ3B5aW5vdGlmeScKICAgICAgICAgICAgIHBpZF9maWxlID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGJhc2VuYW1lICsgJy5waWQnKQogCi0gICAgICAgIGlmIHBpZF9maWxlICE9IEZhbHNlIGFuZCBvcy5wYXRoLmxleGlzdHMocGlkX2ZpbGUpOgorICAgICAgICBpZiBwaWRfZmlsZSBhbmQgb3MucGF0aC5sZXhpc3RzKHBpZF9maWxlKToKICAgICAgICAgICAgIGVyciA9ICdDYW5ub3QgZGFlbW9uaXplOiBwaWQgZmlsZSAlcyBhbHJlYWR5IGV4aXN0cy4nICUgcGlkX2ZpbGUKICAgICAgICAgICAgIHJhaXNlIE5vdGlmaWVyRXJyb3IoZXJyKQogCkBAIC0xMzA4LDcgKzEzMDgsNyBAQAogICAgICAgICBmb3JrX2RhZW1vbigpCiAKICAgICAgICAgIyBXcml0ZSBwaWQKLSAgICAgICAgaWYgcGlkX2ZpbGUgIT0gRmFsc2U6CisgICAgICAgIGlmIHBpZF9maWxlOgogICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX1dST05MWXxvcy5PX0NSRUFUfG9zLk9fTk9GT0xMT1d8b3MuT19FWENMCiAgICAgICAgICAgICBmZF9waWQgPSBvcy5vcGVuKHBpZF9maWxlLCBmbGFncywgMG8wNjAwKQogICAgICAgICAgICAgb3Mud3JpdGUoZmRfcGlkLCAgYnl0ZXMoc3RyKG9zLmdldHBpZCgpKSArICdcbicsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkKaW5kZXggOGViMWUzNC4uZWZkNjdhOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3IvdXJscy5weQpAQCAtNiw3ICs2LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IGluY2x1ZGUsIHVybAorZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCB1cmwKIAogaW1wb3J0IGJsZGNvbGxlY3Rvci52aWV3cwogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3ZpZXdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci92aWV3cy5weQppbmRleCBjNzA4YjQxLi4wNGNkOGIzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3ZpZXdzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3Ivdmlld3MucHkKQEAgLTYsMTYgKzYsOCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLnZpZXdzLmRlY29yYXRvcnMuY2FjaGUgaW1wb3J0IGNhY2hlX2NvbnRyb2wKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCi1mcm9tIGRqYW5nby5jb3JlLnBhZ2luYXRvciBpbXBvcnQgUGFnaW5hdG9yLCBFbXB0eVBhZ2UsIFBhZ2VOb3RBbkludGVnZXIKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZUJhZFJlcXVlc3QsIEh0dHBSZXNwb25zZQotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCi1mcm9tIGRqYW5nby51dGlscy5odG1sIGltcG9ydCBlc2NhcGUKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWVkZWx0YQotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IGZvcm1hdHMKLWZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IGpzb24gYXMganNvbmZpbHRlcgotaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc3VicHJvY2VzcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9hZG1pbi5weQppbmRleCBlODVjMzBlLi4xNzU0YmMxIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9hZG1pbi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9hZG1pbi5weQpAQCAtMyw3ICszLDYgQEAKICMKIAogZnJvbSBkamFuZ28uY29udHJpYiBpbXBvcnQgYWRtaW4KLWZyb20gZGphbmdvLmNvbnRyaWIuYWRtaW4uZmlsdGVycyBpbXBvcnQgUmVsYXRlZEZpZWxkTGlzdEZpbHRlcgogZnJvbSAubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50CiAKIGNsYXNzIEJ1aWxkRW52aXJvbm1lbnRBZG1pbihhZG1pbi5Nb2RlbEFkbWluKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2JiY29udHJvbGxlci5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2JiY29udHJvbGxlci5weQppbmRleCAzMDFkZjE4Li43MWMyODhkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5CkBAIC04LDEwICs4LDggQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgcmUKLWZyb20gZGphbmdvLmRiIGltcG9ydCB0cmFuc2FjdGlvbgogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRCi1mcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50LCBCUkxheWVyLCBCUlZhcmlhYmxlLCBCUlRhcmdldCwgQlJCaXRiYWtlCitmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50LCBCUkxheWVyLCBCUkJpdGJha2UKIAogIyBsb2FkIEJpdGJha2UgY29tcG9uZW50cwogcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CmluZGV4IDM5ZWE3MzYuLjc1Njc0Y2MgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKQEAgLTcsMjcgKzcsMjQgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0aW1lCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KLWZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQotZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQnVpbGRSZXF1ZXN0LCBCUkxheWVyLCBCUlZhcmlhYmxlLCBCUlRhcmdldCwgQlJCaXRiYWtlLCBCdWlsZAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVJlY2lwZSwgTGF5ZXIsIExheWVyX1ZlcnNpb24sIFByb2plY3QsIFByb2plY3RMYXllciwgVG9hc3RlclNldHRpbmcKK2Zyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkRW52aXJvbm1lbnQsIEJ1aWxkUmVxdWVzdCwgQnVpbGQKK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgQ3VzdG9tSW1hZ2VSZWNpcGUsIExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0LCBUb2FzdGVyU2V0dGluZwogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBzaWduYWxfcnVuYnVpbGRzCiBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIHRvYXN0ZXJtYWluIGltcG9ydCBzZXR0aW5ncwogCi1mcm9tIGJsZGNvbnRyb2wuYmJjb250cm9sbGVyIGltcG9ydCBCdWlsZEVudmlyb25tZW50Q29udHJvbGxlciwgU2hlbGxDbWRFeGNlcHRpb24sIEJ1aWxkU2V0dXBFeGNlcHRpb24sIEJpdGJha2VDb250cm9sbGVyCitmcm9tIGJsZGNvbnRyb2wuYmJjb250cm9sbGVyIGltcG9ydCBCdWlsZEVudmlyb25tZW50Q29udHJvbGxlciwgU2hlbGxDbWRFeGNlcHRpb24sIEJ1aWxkU2V0dXBFeGNlcHRpb24KIAogaW1wb3J0IGxvZ2dpbmcKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0b2FzdGVyIikKIAogaW5zdGFsbF9kaXIgPSBvcy5lbnZpcm9uLmdldCgnVE9BU1RFUl9ESVInKQogCi1mcm9tIHBwcmludCBpbXBvcnQgcHByaW50LCBwZm9ybWF0Citmcm9tIHBwcmludCBpbXBvcnQgcGZvcm1hdAogCiBjbGFzcyBMb2NhbGhvc3RCRUNvbnRyb2xsZXIoQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIpOgogICAgICIiIiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIgZm9yIHRoZSBsb2NhbGhvc3Q7CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkKaW5kZXggZmUyYzRkYy4uMjBmOWRjZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQpAQCAtMiwxMSArMiw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kLCBDb21tYW5kRXJyb3IKLWZyb20gZGphbmdvLmRiIGltcG9ydCB0cmFuc2FjdGlvbgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiAKIGZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudCBpbXBvcnQgY2FsbF9jb21tYW5kCi1mcm9tIGJsZGNvbnRyb2wuYmJjb250cm9sbGVyIGltcG9ydCBnZXRCdWlsZEVudmlyb25tZW50Q29udHJvbGxlciwgU2hlbGxDbWRFeGNlcHRpb24KIGZyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkUmVxdWVzdCwgQnVpbGRFbnZpcm9ubWVudCwgQlJFcnJvcgogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBUb2FzdGVyU2V0dGluZywgQnVpbGQsIExheWVyCiAKQEAgLTgwLDcgKzc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX2NvbmYgPSBvcy5lbnZpcm9uLmdldCgiVEVNUExBVEVDT05GIiwgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21feG1sX29ubHkgPSBvcy5lbnZpcm9uLmdldCgiQ1VTVE9NX1hNTF9PTkxZIikKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgVG9hc3RlclNldHRpbmcub2JqZWN0cy5maWx0ZXIobmFtZT0nQ1VTVE9NX1hNTF9PTkxZJykuY291bnQoKSA+IDAgb3IgKG5vdCBjdXN0b21feG1sX29ubHkgPT0gTm9uZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBUb2FzdGVyU2V0dGluZy5vYmplY3RzLmZpbHRlcihuYW1lPSdDVVNUT01fWE1MX09OTFknKS5jb3VudCgpID4gMCBvciBjdXN0b21feG1sX29ubHkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IHVzZSB0aGUgY3VzdG9tIHNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAicG9reSIgaW4gdGVtcGxhdGVfY29uZjoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKaW5kZXggNTBlYzQwOS4uMTlmNjU5ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKQEAgLTE2OCwxNyArMTY4LDE3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY2xlYW51cCgpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCJydW5idWlsZHM6IGNsZWFudXAgZXhjZXB0aW9uICVzIiAlIHN0cihlKSkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJydW5idWlsZHM6IGNsZWFudXAgZXhjZXB0aW9uICVzIiAlIHN0cihlKSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFyY2hpdmUoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybigicnVuYnVpbGRzOiBhcmNoaXZlIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygicnVuYnVpbGRzOiBhcmNoaXZlIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zY2hlZHVsZSgpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCJydW5idWlsZHM6IHNjaGVkdWxlIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygicnVuYnVpbGRzOiBzY2hlZHVsZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQogCiAgICAgZGVmIGhhbmRsZShzZWxmLCAqKm9wdGlvbnMpOgogICAgICAgICBwaWRmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoIkJVSUxERElSIiwgIi4iKSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKaW5kZXggNjdkYjM3OC4uN2VlMTlmNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKQEAgLTM3LDcgKzM3LDcgQEAKICAgICAgICAgICAgICAgICAoJ2dpdHVybCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQpKSwKICAgICAgICAgICAgICAgICAoJ2NvbW1pdCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQpKSwKICAgICAgICAgICAgICAgICAoJ2RpcnBhdGgnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0KSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgbnVsbD1UcnVlKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC04MCwzNCArODAsMzQgQEAKICAgICAgICAgICAgICAgICAoJ3N0YXRlJywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTAsIGNob2ljZXM9WygwLCBiJ2NyZWF0ZWQnKSwgKDEsIGIncXVldWVkJyksICgyLCBiJ2luIHByb2dyZXNzJyksICgzLCBiJ2NvbXBsZXRlZCcpLCAoNCwgYidmYWlsZWQnKSwgKDUsIGInZGVsZXRlZCcpLCAoNiwgYidhcmNoaXZlJyldKSksCiAgICAgICAgICAgICAgICAgKCdjcmVhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3VwZGF0ZWQnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5PbmVUb09uZUZpZWxkKG51bGw9VHJ1ZSwgdG89J29ybS5CdWlsZCcpKSwKLSAgICAgICAgICAgICAgICAoJ2Vudmlyb25tZW50JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRFbnZpcm9ubWVudCcsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLk9uZVRvT25lRmllbGQobnVsbD1UcnVlLCB0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdlbnZpcm9ubWVudCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkRW52aXJvbm1lbnQnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2JydmFyaWFibGUnLAogICAgICAgICAgICAgbmFtZT0ncmVxJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2JydGFyZ2V0JywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmxheWVyJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmVycm9yJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmJpdGJha2UnLAogICAgICAgICAgICAgbmFtZT0ncmVxJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5PbmVUb09uZUZpZWxkKHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLk9uZVRvT25lRmllbGQodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICBdCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tb2RlbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tb2RlbHMucHkKaW5kZXggYmNmZmNmNS4uYzJmMzAyZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbW9kZWxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21vZGVscy5weQpAQCAtNCw5ICs0LDggQEAKIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi1mcm9tIGRqYW5nby5jb3JlLnZhbGlkYXRvcnMgaW1wb3J0IE1heFZhbHVlVmFsaWRhdG9yLCBNaW5WYWx1ZVZhbGlkYXRvcgogZnJvbSBkamFuZ28udXRpbHMuZW5jb2RpbmcgaW1wb3J0IGZvcmNlX3RleHQKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUHJvamVjdExheWVyLCBQcm9qZWN0VmFyaWFibGUsIFByb2plY3RUYXJnZXQsIEJ1aWxkLCBMYXllcl9WZXJzaW9uCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBMYXllcl9WZXJzaW9uCiAKIGltcG9ydCBsb2dnaW5nCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidG9hc3RlciIpCkBAIC04Niw5ICs4NSw5IEBACiAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSAoImJydGFyZ2V0X190YXJnZXQiLCAiYnVpbGRfX3Byb2plY3RfX25hbWUiKQogCi0gICAgcHJvamVjdCAgICAgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0KQotICAgIGJ1aWxkICAgICAgID0gbW9kZWxzLk9uZVRvT25lRmllbGQoQnVpbGQsIG51bGwgPSBUcnVlKSAgICAgIyBUT0RPOiB0b2FzdGVydWkgc2hvdWxkIHNldCB0aGlzIHdoZW4gQnVpbGQgaXMgY3JlYXRlZAotICAgIGVudmlyb25tZW50ID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRFbnZpcm9ubWVudCwgbnVsbCA9IFRydWUpCisgICAgcHJvamVjdCAgICAgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCisgICAgYnVpbGQgICAgICAgPSBtb2RlbHMuT25lVG9PbmVGaWVsZChCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsID0gVHJ1ZSkgICAgICMgVE9ETzogdG9hc3RlcnVpIHNob3VsZCBzZXQgdGhpcyB3aGVuIEJ1aWxkIGlzIGNyZWF0ZWQKKyAgICBlbnZpcm9ubWVudCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkRW52aXJvbm1lbnQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbCA9IFRydWUpCiAgICAgc3RhdGUgICAgICAgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXMgPSBSRVFVRVNUX1NUQVRFLCBkZWZhdWx0ID0gUkVRX0NSRUFURUQpCiAgICAgY3JlYXRlZCAgICAgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vd19hZGQgPSBUcnVlKQogICAgIHVwZGF0ZWQgICAgID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3cgPSBUcnVlKQpAQCAtMTMyLDMyICsxMzEsMzIgQEAKIAogCiBjbGFzcyBCUkxheWVyKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0KQorICAgIHJlcSA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGdpdHVybCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKICAgICBsb2NhbF9zb3VyY2VfZGlyID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NCwgbnVsbD1UcnVlKQogICAgIGNvbW1pdCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKICAgICBkaXJwYXRoID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NCwgbnVsbD1UcnVlKQotICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBudWxsPVRydWUpCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogCiBjbGFzcyBCUkJpdGJha2UobW9kZWxzLk1vZGVsKToKLSAgICByZXEgICAgICAgICA9IG1vZGVscy5PbmVUb09uZUZpZWxkKEJ1aWxkUmVxdWVzdCkgICAgIyBvbmx5IG9uZSBiaXRiYWtlIGZvciBhIHJlcXVlc3QKKyAgICByZXEgICAgICAgICA9IG1vZGVscy5PbmVUb09uZUZpZWxkKEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSAgICAjIG9ubHkgb25lIGJpdGJha2UgZm9yIGEgcmVxdWVzdAogICAgIGdpdHVybCAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoID0yNTQpCiAgICAgY29tbWl0ICAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGggPSAyNTQpCiAgICAgZGlycGF0aCAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGggPSAyNTQpCiAKIGNsYXNzIEJSVmFyaWFibGUobW9kZWxzLk1vZGVsKToKLSAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCkKKyAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIG5hbWUgICAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB2YWx1ZSAgICAgICA9IG1vZGVscy5UZXh0RmllbGQoYmxhbmsgPSBUcnVlKQogCiBjbGFzcyBCUlRhcmdldChtb2RlbHMuTW9kZWwpOgotICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0KQorICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgdGFyZ2V0ICAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRhc2sgICAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgbnVsbD1UcnVlKQogCiBjbGFzcyBCUkVycm9yKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QpCisgICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBlcnJ0eXBlICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgZXJybXNnICAgICAgPSBtb2RlbHMuVGV4dEZpZWxkKCkKICAgICB0cmFjZWJhY2sgICA9IG1vZGVscy5UZXh0RmllbGQoKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKaW5kZXggYTcyM2Y1YS4uZmQ5M2Y0ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCkBAIC04LDkgKzgsOSBAQAogCiAgIDwhLS0gQml0YmFrZSB2ZXJzaW9ucyB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBtZXRhZGF0YSByZWxlYXNlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJnaXR1cmwiPmdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS40MjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj4xLjQ2PC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPkhFQUQ8L2ZpZWxkPgpAQCAtMzAsMTEgKzMwLDExIEBACiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+d2FycmlvcjwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBXYXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+T3BlbmVtYmVkZGVkIER1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5iaXRiYWtldmVyc2lvbiIgbmFtZT0iYml0YmFrZV92ZXJzaW9uIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+d2FycmlvcjwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj1cImh0dHA6Ly9jZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvbG9nLz9oPXdhcnJpb3JcIiZndDtPcGVuRW1iZWRkZWQgV2FycmlvciZsdDsvYSZndDsgYnJhbmNoLjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPmR1bmZlbGw8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9XCJodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2xvZy8/aD1kdW5mZWxsXCImZ3Q7T3BlbkVtYmVkZGVkIER1bmZlbGwmbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5sb2NhbDwvZmllbGQ+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbAppbmRleCA3OTkyMzgzLi45MDJiYzg4IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKQEAgLTgsOSArOCw5IEBACiAKICAgPCEtLSBCaXRiYWtlIHZlcnNpb25zIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIG1ldGFkYXRhIHJlbGVhc2UgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCI+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPmJpdGJha2U8L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMiI+CkBAIC0zNSwxMSArMzUsMTEgQEAKIAogICA8IS0tIFJlbGVhc2VzIGF2YWlsYWJsZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj53YXJyaW9yPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjcgIldhcnJpb3IiPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAzLjEgIkR1bmZlbGwiPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPndhcnJpb3I8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPXdhcnJpb3IiJmd0O1lvY3RvIFByb2plY3QgV2FycmlvciBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPmR1bmZlbGw8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPWR1bmZlbGwiJmd0O1lvY3RvIFByb2plY3QgRHVuZmVsbCBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmxvY2FsPC9maWVsZD4KQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjE8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+d2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMiI+CkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4yPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS1wb2t5PC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iNiI+CkBAIC0yMDYsNyArMjA2LDcgQEAKICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS15b2N0by1ic3A8L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSIxMCI+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weQppbmRleCA1YjVhYmJiLi5hNGRiY2FhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkKQEAgLTgsNyArOCw3IEBACiAKIGZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZAogCi1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyU291cmNlLCBMYXllciwgUmVsZWFzZSwgTGF5ZXJfVmVyc2lvbgorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllciwgUmVsZWFzZSwgTGF5ZXJfVmVyc2lvbgogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllclZlcnNpb25EZXBlbmRlbmN5LCBNYWNoaW5lLCBSZWNpcGUKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgRGlzdHJvCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFRvYXN0ZXJTZXR0aW5nCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weQppbmRleCA3NjA0NjJmLi5hOGFjMjNiIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJykpLAorICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICAgICAgICAgICgnYXJlYScsIG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1bKDAsIGIndmFyaWFibGUnKV0pKSwKICAgICAgICAgICAgICAgICAoJ2tleScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApKSwKICAgICAgICAgICAgICAgICAoJ3RleHQnLCBtb2RlbHMuVGV4dEZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2hlbHB0ZXh0X2J1aWxkJywgdG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdoZWxwdGV4dF9idWlsZCcsIHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC05NCw4ICs5NCw4IEBACiAgICAgICAgICAgICAgICAgKCdkaXJwYXRoJywgbW9kZWxzLkNoYXJGaWVsZChkZWZhdWx0PU5vbmUsIG1heF9sZW5ndGg9MjU1LCBudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3ByaW9yaXR5JywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTApKSwKICAgICAgICAgICAgICAgICAoJ2xvY2FsX3BhdGgnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChkZWZhdWx0PWInLycsIG1heF9sZW5ndGg9MTAyNCkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2xheWVyX3ZlcnNpb25fYnVpbGQnLCBkZWZhdWx0PU5vbmUsIHRvPSdvcm0uQnVpbGQnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2xheWVyJywgdG89J29ybS5MYXllcicpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywgZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJ1aWxkJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2xheWVyJywgdG89J29ybS5MYXllcicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTExMiw5ICsxMTIsOSBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgndXBfaWQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RlcGVuZGVuY2llcycsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RlcGVuZGVlcycsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RlcGVuZGVuY2llcycsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTEyNSw3ICsxMjUsNyBAQAogICAgICAgICAgICAgICAgICgnbWVzc2FnZScsIG1vZGVscy5UZXh0RmllbGQobnVsbD1UcnVlLCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdwYXRobmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdsaW5lbm8nLCBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJykpLAorICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTM2LDggKzEzNiw4IEBACiAgICAgICAgICAgICAgICAgKCd1cF9kYXRlJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KSksCiAgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTU0LDcgKzE1NCw3IEBACiAgICAgICAgICAgICAgICAgKCdpbnN0YWxsZWRfc2l6ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wKSksCiAgICAgICAgICAgICAgICAgKCdzZWN0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTgwLCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdsaWNlbnNlJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTgwLCBibGFuaz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnLCBudWxsPVRydWUpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTYyLDggKzE2Miw4IEBACiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdkZXBfdHlwZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1bKDAsIGInZGVwZW5kcycpLCAoMSwgYidkZXBlbmRzJyksICgzLCBiJ3JlY29tbWVuZHMnKSwgKDIsIGIncmVjb21tZW5kcycpLCAoNCwgYidzdWdnZXN0cycpLCAoNSwgYidwcm92aWRlcycpLCAoNiwgYidyZXBsYWNlcycpLCAoNywgYidjb25mbGljdHMnKV0pKSwKLSAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3RhcmdldCcsIHRvPSdvcm0uUGFja2FnZScpKSwKLSAgICAgICAgICAgICAgICAoJ3BhY2thZ2UnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3NvdXJjZScsIHRvPSdvcm0uUGFja2FnZScpKSwKKyAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3RhcmdldCcsIHRvPSdvcm0uUGFja2FnZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfc291cmNlJywgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTcyLDcgKzE3Miw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3BhdGgnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnc2l6ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoKSksCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdidWlsZGZpbGVsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnKSksCisgICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdidWlsZGZpbGVsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xODUsNyArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAoJ3VwZGF0ZWQnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCd1c2VyX2lkJywgbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2lzX2RlZmF1bHQnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKLSAgICAgICAgICAgICAgICAoJ2JpdGJha2VfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQml0YmFrZVZlcnNpb24nLCBudWxsPVRydWUpKSwKKyAgICAgICAgICAgICAgICAoJ2JpdGJha2VfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQml0YmFrZVZlcnNpb24nLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE5Myw4ICsxOTMsOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnb3B0aW9uYWwnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJjb21taXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdsYXllcmNvbW1pdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApKSwKICAgICAgICAgICAgICAgICAoJ3Rhc2snLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjEyLDcgKzIxMiw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCiAgICAgICAgICAgICAgICAgKCd2YWx1ZScsIG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpKSwKKyAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yMzIsOCArMjMyLDggQEAKICAgICAgICAgICAgICAgICAoJ2ZpbGVfcGF0aCcsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1KSksCiAgICAgICAgICAgICAgICAgKCdwYXRoZmxhZ3MnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjAwLCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdpc19pbWFnZScsIG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyZWNpcGVfbGF5ZXJfdmVyc2lvbicsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyZWNpcGVfbGF5ZXJfdmVyc2lvbicsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI0MSw4ICsyNDEsOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnZGVwX3R5cGUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9WygwLCBiJ2RlcGVuZHMnKSwgKDEsIGIncmRlcGVuZHMnKV0pKSwKLSAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX2RlcGVuZHMnLCB0bz0nb3JtLlJlY2lwZScpKSwKLSAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfcmVjaXBlJywgdG89J29ybS5SZWNpcGUnKSksCisgICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19kZXBlbmRzJywgdG89J29ybS5SZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfcmVjaXBlJywgdG89J29ybS5SZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNTMsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnYnJhbmNoX25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKGRlZmF1bHQ9YicnLCBtYXhfbGVuZ3RoPTUwKSksCiAgICAgICAgICAgICAgICAgKCdoZWxwdGV4dCcsIG1vZGVscy5UZXh0RmllbGQobnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdiaXRiYWtlX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJpdGJha2VWZXJzaW9uJykpLAorICAgICAgICAgICAgICAgICgnYml0YmFrZV92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CaXRiYWtlVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI2MSw3ICsyNjEsNyBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbGF5ZXJfbmFtZScsIG1vZGVscy5DaGFyRmllbGQoZGVmYXVsdD1iJycsIG1heF9sZW5ndGg9MTAwKSksCi0gICAgICAgICAgICAgICAgKCdyZWxlYXNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJykpLAorICAgICAgICAgICAgICAgICgncmVsZWFzZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI2OSw4ICsyNjksOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgncHJpb3JpdHknLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MCkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllclNvdXJjZScpKSwKLSAgICAgICAgICAgICAgICAoJ3JlbGVhc2UnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlbGVhc2UnKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyU291cmNlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdyZWxlYXNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjgyLDcgKzI4Miw3IEBACiAgICAgICAgICAgICAgICAgKCdpc19pbWFnZScsIG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnaW1hZ2Vfc2l6ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wKSksCiAgICAgICAgICAgICAgICAgKCdsaWNlbnNlX21hbmlmZXN0X3BhdGgnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9NTAwLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI5NSw5ICsyOTUsOSBAQAogICAgICAgICAgICAgICAgICgncGVybWlzc2lvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xNikpLAogICAgICAgICAgICAgICAgICgnb3duZXInLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KSksCiAgICAgICAgICAgICAgICAgKCdncm91cCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMjgpKSwKLSAgICAgICAgICAgICAgICAoJ2RpcmVjdG9yeScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nZGlyZWN0b3J5X3NldCcsIHRvPSdvcm0uVGFyZ2V0X0ZpbGUnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3N5bV90YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3N5bWxpbmtfc2V0JywgdG89J29ybS5UYXJnZXRfRmlsZScsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCdkaXJlY3RvcnknLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RpcmVjdG9yeV9zZXQnLCB0bz0nb3JtLlRhcmdldF9GaWxlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3N5bV90YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3N5bWxpbmtfc2V0JywgdG89J29ybS5UYXJnZXRfRmlsZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTMwNiwxNSArMzA2LDE1IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU0KSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKICAgICAgICAgICAgIG5hbWU9J1RhcmdldF9JbnN0YWxsZWRfUGFja2FnZScsCiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdidWlsZHRhcmdldGxpc3RfcGFja2FnZScsIHRvPSdvcm0uUGFja2FnZScpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGR0YXJnZXRsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMzM3LDggKzMzNyw4IEBACiAgICAgICAgICAgICAgICAgKCdzc3RhdGVfcmVzdWx0JywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTAsIGNob2ljZXM9WygwLCBiJ05vdCBBcHBsaWNhYmxlJyksICgxLCBiJ0ZpbGUgbm90IGluIGNhY2hlJyksICgyLCBiJ0ZhaWxlZCcpLCAoMywgYidTdWNjZWVkZWQnKV0pKSwKICAgICAgICAgICAgICAgICAoJ21lc3NhZ2UnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjQwKSksCiAgICAgICAgICAgICAgICAgKCdsb2dmaWxlJywgbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2J1aWxkJywgdG89J29ybS5CdWlsZCcpKSwKLSAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza3MnLCB0bz0nb3JtLlJlY2lwZScpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2J1aWxkJywgdG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrcycsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgb3B0aW9ucz17CiAgICAgICAgICAgICAgICAgJ29yZGVyaW5nJzogKCdvcmRlcicsICdyZWNpcGUnKSwKQEAgLTM0OCw4ICszNDgsOCBAQAogICAgICAgICAgICAgbmFtZT0nVGFza19EZXBlbmRlbmN5JywKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnLCB0bz0nb3JtLlRhc2snKSksCi0gICAgICAgICAgICAgICAgKCd0YXNrJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc190YXNrJywgdG89J29ybS5UYXNrJykpLAorICAgICAgICAgICAgICAgICgnZGVwZW5kc19vbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfZGVwZW5kcycsIHRvPSdvcm0uVGFzaycsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgndGFzaycsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycsIHRvPSdvcm0uVGFzaycsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTM3MCw3ICszNzAsNyBAQAogICAgICAgICAgICAgICAgICgnY2hhbmdlZCcsIG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnaHVtYW5fcmVhZGFibGVfbmFtZScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yMDApKSwKICAgICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uJywgbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndmFyaWFibGVfYnVpbGQnLCB0bz0nb3JtLkJ1aWxkJykpLAorICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJywgdG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTM4MSwyOCArMzgxLDI4IEBACiAgICAgICAgICAgICAgICAgKCdmaWxlX25hbWUnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnbGluZV9udW1iZXInLCBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnb3BlcmF0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTY0KSksCi0gICAgICAgICAgICAgICAgKCd2YXJpYWJsZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndmhpc3RvcnknLCB0bz0nb3JtLlZhcmlhYmxlJykpLAorICAgICAgICAgICAgICAgICgndmFyaWFibGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZoaXN0b3J5JywgdG89J29ybS5WYXJpYWJsZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3Byb2plY3QnLAogICAgICAgICAgICAgbmFtZT0ncmVsZWFzZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlbGVhc2UnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmN5JywKICAgICAgICAgICAgIG5hbWU9J3RhcmdldCcsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3BhY2thZ2UnLAogICAgICAgICAgICAgbmFtZT0ncmVjaXBlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVjaXBlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVjaXBlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbG9nbWVzc2FnZScsCiAgICAgICAgICAgICBuYW1lPSd0YXNrJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGJsYW5rPVRydWUsIHRvPSdvcm0uVGFzaycsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShibGFuaz1UcnVlLCB0bz0nb3JtLlRhc2snLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWx0ZXJVbmlxdWVUb2dldGhlcigKICAgICAgICAgICAgIG5hbWU9J2xheWVyc291cmNlJywKQEAgLTQxMSwzMiArNDExLDMyIEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdsYXllcl92ZXJzaW9uJywKICAgICAgICAgICAgIG5hbWU9J2xheWVyX3NvdXJjZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSdwcm9qZWN0JywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm9qZWN0JywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm9qZWN0JywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSd1cF9icmFuY2gnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJyYW5jaCcsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uQnJhbmNoJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXInLAogICAgICAgICAgICAgbmFtZT0nbGF5ZXJfc291cmNlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdidWlsZCcsCiAgICAgICAgICAgICBuYW1lPSdwcm9qZWN0JywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2JyYW5jaCcsCiAgICAgICAgICAgICBuYW1lPSdsYXllcl9zb3VyY2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1UcnVlLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9VHJ1ZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKICAgICAgICAgICAgIG5hbWU9J0ltcG9ydGVkTGF5ZXJTb3VyY2UnLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMl9jdXN0b21pbWFnZXJlY2lwZS5weQppbmRleCA5Y2VjODJlLi4wOWMyYmZmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMl9jdXN0b21pbWFnZXJlY2lwZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMl9jdXN0b21pbWFnZXJlY2lwZS5weQpAQCAtMTQsMTAgKzE0LDEwIEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdDdXN0b21JbWFnZVJlY2lwZScsCiAgICAgICAgICAgICBmaWVsZHM9WwotICAgICAgICAgICAgICAgICgncmVjaXBlX3B0cicsIG1vZGVscy5PbmVUb09uZUZpZWxkKHBhcmVudF9saW5rPVRydWUsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlLCBzZXJpYWxpemU9RmFsc2UsIHRvPSdvcm0uUmVjaXBlJykpLAorICAgICAgICAgICAgICAgICgncmVjaXBlX3B0cicsIG1vZGVscy5PbmVUb09uZUZpZWxkKHBhcmVudF9saW5rPVRydWUsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlLCBzZXJpYWxpemU9RmFsc2UsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICAgICAgKCdsYXN0X3VwZGF0ZWQnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYmFzZV9yZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2Jhc2VkX29uX3JlY2lwZScsIHRvPSdvcm0uUmVjaXBlJykpLAotICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpKSwKKyAgICAgICAgICAgICAgICAoJ2Jhc2VfcmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdiYXNlZF9vbl9yZWNpcGUnLCB0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIGJhc2VzPSgnb3JtLnJlY2lwZScsKSwKICAgICAgICAgKSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAzX2N1c3RvbWltYWdlcGFja2FnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAzX2N1c3RvbWltYWdlcGFja2FnZS5weQppbmRleCBiMDI3ZjY2Li44Y2I4MWQ3IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwM19jdXN0b21pbWFnZXBhY2thZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDNfY3VzdG9taW1hZ2VwYWNrYWdlLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdDdXN0b21JbWFnZVBhY2thZ2UnLAogICAgICAgICAgICAgZmllbGRzPVsKLSAgICAgICAgICAgICAgICAoJ3BhY2thZ2VfcHRyJywgbW9kZWxzLk9uZVRvT25lRmllbGQocGFyZW50X2xpbms9VHJ1ZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHNlcmlhbGl6ZT1GYWxzZSwgdG89J29ybS5QYWNrYWdlJykpLAorICAgICAgICAgICAgICAgICgncGFja2FnZV9wdHInLCBtb2RlbHMuT25lVG9PbmVGaWVsZChwYXJlbnRfbGluaz1UcnVlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgICAgICAoJ3JlY2lwZV9hcHBlbmRzJywgbW9kZWxzLk1hbnlUb01hbnlGaWVsZChyZWxhdGVkX25hbWU9J2FwcGVuZHNfc2V0JywgdG89J29ybS5DdXN0b21JbWFnZVJlY2lwZScpKSwKICAgICAgICAgICAgICAgICAoJ3JlY2lwZV9leGNsdWRlcycsIG1vZGVscy5NYW55VG9NYW55RmllbGQocmVsYXRlZF9uYW1lPSdleGNsdWRlc19zZXQnLCB0bz0nb3JtLkN1c3RvbUltYWdlUmVjaXBlJykpLAogICAgICAgICAgICAgICAgICgncmVjaXBlX2luY2x1ZGVzJywgbW9kZWxzLk1hbnlUb01hbnlGaWVsZChyZWxhdGVkX25hbWU9J2luY2x1ZGVzX3NldCcsIHRvPSdvcm0uQ3VzdG9tSW1hZ2VSZWNpcGUnKSksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA0X3Byb3ZpZGVzLnB5CmluZGV4IGRmZGUyZDEuLjg0NDk2MDQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA0X3Byb3ZpZGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA0X3Byb3ZpZGVzLnB5CkBAIC0xNiwxMiArMTYsMTIgQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCi0gICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0ncmVjaXBlX2RlcGVuZGVuY3knLAogICAgICAgICAgICAgbmFtZT0ndmlhJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lLCB0bz0nb3JtLlByb3ZpZGVzJyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm92aWRlcycsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDhfcmVmYWN0b3JfYXJ0aWZhY3RfbW9kZWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDhfcmVmYWN0b3JfYXJ0aWZhY3RfbW9kZWxzLnB5CmluZGV4IDMzNjc1ODIuLjQxYTU0N2EgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA4X3JlZmFjdG9yX2FydGlmYWN0X21vZGVscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwOF9yZWZhY3Rvcl9hcnRpZmFjdF9tb2RlbHMucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZChhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgdmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZChhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgdmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5SZW1vdmVGaWVsZCgKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDExX2RlbGV0ZV9sYXllcnNvdXJjZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDExX2RlbGV0ZV9sYXllcnNvdXJjZS5weQppbmRleCA3NTUwNjk2Li4zZjNhMmUxIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMV9kZWxldGVfbGF5ZXJzb3VyY2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTFfZGVsZXRlX2xheWVyc291cmNlLnB5CkBAIC0xLDcgKzEsNyBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywgbW9kZWxzCitmcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucwogCiAKIGNsYXNzIE1pZ3JhdGlvbihtaWdyYXRpb25zLk1pZ3JhdGlvbik6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDEyX3VzZV9yZWxlYXNlX2luc3RlYWRfb2ZfdXBfYnJhbmNoLnB5CmluZGV4IDBlNmJiODMuLjRiOTZiZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDEyX3VzZV9yZWxlYXNlX2luc3RlYWRfb2ZfdXBfYnJhbmNoLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDEyX3VzZV9yZWxlYXNlX2luc3RlYWRfb2ZfdXBfYnJhbmNoLnB5CkBAIC00Niw3ICs0Niw3IEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdsYXllcl92ZXJzaW9uJywKICAgICAgICAgICAgIG5hbWU9J3JlbGVhc2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgZGVmYXVsdD1Ob25lLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuUnVuUHl0aG9uKGJyYW5jaF90b19yZWxlYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlX2NvZGU9bWlncmF0aW9ucy5SdW5QeXRob24ubm9vcCksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxN19kaXN0cm9fY2xvbmUucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxN19kaXN0cm9fY2xvbmUucHkKaW5kZXggZDNjNTkwMS4uNzMxYzBkZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE3X2Rpc3Ryb19jbG9uZS5weQpAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICAgICAgICAgICgndXBfZGF0ZScsIG1vZGVscy5EYXRlVGltZUZpZWxkKGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnZGVzY3JpcHRpb24nLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJykpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICBdCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxOV9kamFuZ29fMl8yLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTlfZGphbmdvXzJfMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjZhZWYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTlfZGphbmdvXzJfMi5weQpAQCAtMCwwICsxLDIzIEBACisjIEdlbmVyYXRlZCBieSBEamFuZ28gMi4yLjcgb24gMjAxOS0xMS0xOSAwMzozOAorCitmcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywgbW9kZWxzCitpbXBvcnQgZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbgorCisKK2NsYXNzIE1pZ3JhdGlvbihtaWdyYXRpb25zLk1pZ3JhdGlvbik6CisKKyAgICBkZXBlbmRlbmNpZXMgPSBbCisgICAgICAgICgnb3JtJywgJzAwMThfcHJvamVjdF9zcGVjaWZpYycpLAorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBbCisgICAgICAgIG1pZ3JhdGlvbnMuUmVtb3ZlRmllbGQoCisgICAgICAgICAgICBtb2RlbF9uYW1lPSdkaXN0cm8nLAorICAgICAgICAgICAgbmFtZT0ndXBfaWQnLAorICAgICAgICApLAorICAgICAgICBtaWdyYXRpb25zLkFsdGVyRmllbGQoCisgICAgICAgICAgICBtb2RlbF9uYW1lPSdidWlsZCcsCisgICAgICAgICAgICBuYW1lPSdyZWNpcGVzX3BhcnNlZCcsCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MSksCisgICAgICAgICksCisgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQppbmRleCBiYjZiNWRlLi43ZjdlOTIyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQpAQCAtMTMsNyArMTMsNyBAQAogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIGRqYW5nby51dGlscy5lbmNvZGluZyBpbXBvcnQgZm9yY2VfYnl0ZXMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIAogZnJvbSBkamFuZ28uY29yZSBpbXBvcnQgdmFsaWRhdG9ycwogZnJvbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKQEAgLTE3OCw4ICsxNzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsZWFzZV9fYnJhbmNoX25hbWUnXQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHNob3J0X2Rlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTUwLCBibGFuaz1UcnVlKQotICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdCaXRiYWtlVmVyc2lvbicsIG51bGw9VHJ1ZSkKLSAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoIlJlbGVhc2UiLCBudWxsPVRydWUpCisgICAgYml0YmFrZV92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0JpdGJha2VWZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCisgICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KCJSZWxlYXNlIiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCiAgICAgY3JlYXRlZCA9IG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKQogICAgIHVwZGF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKQogICAgICMgVGhpcyBpcyBhIGhvcnJpYmxlIGhhY2s7IHNpbmNlIFRvYXN0ZXIgaGFzIG5vICJVc2VyIiBtb2RlbCBhdmFpbGFibGUgd2hlbgpAQCAtNDY5LDcgKzQ2OSw3IEBACiAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbJ21hY2hpbmUnLCAnY29va2VyX2xvZ19wYXRoJywgInRhcmdldF9fdGFyZ2V0IiwgInRhcmdldF9fdGFyZ2V0X2ltYWdlX2ZpbGVfX2ZpbGVfbmFtZSJdCiAKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkgICAgICAgICAgICAjIG11c3QgaGF2ZSBhIHByb2plY3QKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSAgICAgICAgICAgICMgbXVzdCBoYXZlIGEgcHJvamVjdAogICAgIG1hY2hpbmUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGRpc3RybyA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgZGlzdHJvX3ZlcnNpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQpAQCAtNzc3LDEzICs3NzcsMTMgQEAKICAgICAgICAgcmV0dXJuICIlZCAlcyAlcyIgJSAoc2VsZi5pZCwgc2VsZi5wcm9qZWN0LCAiLCIuam9pbihbdC50YXJnZXQgZm9yIHQgaW4gc2VsZi50YXJnZXRfc2V0LmFsbCgpXSkpCiAKIGNsYXNzIFByb2plY3RUYXJnZXQobW9kZWxzLk1vZGVsKToKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIHRhcmdldCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgdGFzayA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIG51bGw9VHJ1ZSkKIAogY2xhc3MgVGFyZ2V0KG1vZGVscy5Nb2RlbCk6CiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWyd0YXJnZXQnLCAnZmlsZV9uYW1lJ10KLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICB0YXJnZXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRhc2sgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBudWxsPVRydWUpCiAgICAgaXNfaW1hZ2UgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQgPSBGYWxzZSkKQEAgLTk0NCw3ICs5NDQsNyBAQAogCiAjIGtlcm5lbCBhcnRpZmFjdHMgZm9yIGEgdGFyZ2V0OiBiekltYWdlIGFuZCBtb2R1bGVzKgogY2xhc3MgVGFyZ2V0S2VybmVsRmlsZShtb2RlbHMuTW9kZWwpOgotICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCkKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBmaWxlX25hbWUgPSBtb2RlbHMuRmlsZVBhdGhGaWVsZCgpCiAgICAgZmlsZV9zaXplID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCiAKQEAgLTk1NCw3ICs5NTQsNyBAQAogCiAjIFNESyBhcnRpZmFjdHMgZm9yIGEgdGFyZ2V0OiBzaCBhbmQgbWFuaWZlc3QgZmlsZXMKIGNsYXNzIFRhcmdldFNES0ZpbGUobW9kZWxzLk1vZGVsKToKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQoKQogICAgIGZpbGVfc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC05NzMsNyArOTczLDcgQEAKICAgICAgICAgJ3ViaWZzJywgJ3dpYycsICd3aWMuYnoyJywgJ3dpYy5neicsICd3aWMubHptYScKICAgICB9CiAKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTQpCiAgICAgZmlsZV9zaXplID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCiAKQEAgLTEwMDcsMTUgKzEwMDcsMTUgQEAKICAgICAgICAgKCBJVFlQRV9CTE9DSyAsJ2Jsb2NrJyksCiAgICAgICAgICkKIAotICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCkKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBwYXRoID0gbW9kZWxzLkZpbGVQYXRoRmllbGQoKQogICAgIHNpemUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKICAgICBpbm9kZXR5cGUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXMgPSBJVFlQRVMpCiAgICAgcGVybWlzc2lvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xNikKICAgICBvd25lciA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMjgpCiAgICAgZ3JvdXAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KQotICAgIGRpcmVjdG9yeSA9IG1vZGVscy5Gb3JlaWduS2V5KCdUYXJnZXRfRmlsZScsIHJlbGF0ZWRfbmFtZT0iZGlyZWN0b3J5X3NldCIsIG51bGw9VHJ1ZSkKLSAgICBzeW1fdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1RhcmdldF9GaWxlJywgcmVsYXRlZF9uYW1lPSJzeW1saW5rX3NldCIsIG51bGw9VHJ1ZSkKKyAgICBkaXJlY3RvcnkgPSBtb2RlbHMuRm9yZWlnbktleSgnVGFyZ2V0X0ZpbGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0iZGlyZWN0b3J5X3NldCIsIG51bGw9VHJ1ZSkKKyAgICBzeW1fdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1RhcmdldF9GaWxlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9InN5bWxpbmtfc2V0IiwgbnVsbD1UcnVlKQogCiAKIGNsYXNzIFRhc2sobW9kZWxzLk1vZGVsKToKQEAgLTExMDIsMTMgKzExMDIsMTMgQEAKICAgICBkZWYgZ2V0X2Rlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faGVscHRleHQKIAotICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIHJlbGF0ZWRfbmFtZT0ndGFza19idWlsZCcpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3Rhc2tfYnVpbGQnKQogICAgIG9yZGVyID0gbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpCiAgICAgdGFza19leGVjdXRlZCA9IG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkgIyBUcnVlIG1lYW5zIEV4ZWN1dGVkLCBGYWxzZSBtZWFucyBOb3QvRXhlY3V0ZWQKICAgICBvdXRjb21lID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPVRBU0tfT1VUQ09NRSwgZGVmYXVsdD1PVVRDT01FX05BKQogICAgIHNzdGF0ZV9jaGVja3N1bSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIGJsYW5rPVRydWUpCiAgICAgcGF0aF90b19zc3RhdGVfb2JqID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD01MDAsIGJsYW5rPVRydWUpCi0gICAgcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1JlY2lwZScsIHJlbGF0ZWRfbmFtZT0ndGFza3MnKQorICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KCdSZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndGFza3MnKQogICAgIHRhc2tfbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgc291cmNlX3VybCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQogICAgIHdvcmtfZGlyZWN0b3J5ID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpCkBAIC0xMTQ3LDEzICsxMTQ3LDEzIEBACiAKIAogY2xhc3MgVGFza19EZXBlbmRlbmN5KG1vZGVscy5Nb2RlbCk6Ci0gICAgdGFzayA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycpCi0gICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfZGVwZW5kcycpCisgICAgdGFzayA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc190YXNrJykKKyAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFzaywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQogCiBjbGFzcyBQYWNrYWdlKG1vZGVscy5Nb2RlbCk6CiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWyduYW1lJywgJ3ZlcnNpb24nLCAncmV2aXNpb24nLCAncmVjaXBlX19uYW1lJywgJ3JlY2lwZV9fdmVyc2lvbicsICdyZWNpcGVfX2xpY2Vuc2UnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19sYXllcl9fbmFtZScsICdyZWNpcGVfX2xheWVyX3ZlcnNpb25fX2JyYW5jaCcsICdyZWNpcGVfX2xheWVyX3ZlcnNpb25fX2NvbW1pdCcsICdyZWNpcGVfX2xheWVyX3ZlcnNpb25fX2xvY2FsX3BhdGgnLCAnaW5zdGFsbGVkX25hbWUnXQotICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0J1aWxkJywgbnVsbD1UcnVlKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KCdSZWNpcGUnLCBudWxsPVRydWUpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleSgnQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSkKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleSgnUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgaW5zdGFsbGVkX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBkZWZhdWx0PScnKQogICAgIHZlcnNpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQAogICAgICAgICBUWVBFX1JDT05GTElDVFMgOiAgICgiY29uZmxpY3RzIiwgIiVzIGNvbmZsaWN0cyB3aXRoICVzLCB3aGljaCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQgaWYgdGhpcyBwYWNrYWdlIGlzIG5vdCBmaXJzdCByZW1vdmVkIiksCiAgICAgfQogCi0gICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfc291cmNlJykKLSAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgcmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc190YXJnZXQnKSAgICMgc29mdCBkZXBlbmRlbmN5CisgICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc19zb3VyY2UnKQorICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfdGFyZ2V0JykgICAjIHNvZnQgZGVwZW5kZW5jeQogICAgIGRlcF90eXBlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPURFUEVORFNfVFlQRSkKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG51bGw9VHJ1ZSkKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIG9iamVjdHMgPSBQYWNrYWdlX0RlcGVuZGVuY3lNYW5hZ2VyKCkKIAogY2xhc3MgVGFyZ2V0X0luc3RhbGxlZF9QYWNrYWdlKG1vZGVscy5Nb2RlbCk6Ci0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0KQotICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCByZWxhdGVkX25hbWU9J2J1aWxkdGFyZ2V0bGlzdF9wYWNrYWdlJykKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKKyAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2J1aWxkdGFyZ2V0bGlzdF9wYWNrYWdlJykKIAogCiBjbGFzcyBQYWNrYWdlX0ZpbGUobW9kZWxzLk1vZGVsKToKLSAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgcmVsYXRlZF9uYW1lPSdidWlsZGZpbGVsaXN0X3BhY2thZ2UnKQorICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJykKICAgICBwYXRoID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpCiAgICAgc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC0xMzE4LDcgKzEzMTgsNyBAQAogCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIGJsYW5rPVRydWUpCiAgICAgdmVyc2lvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIGJsYW5rPVRydWUpCi0gICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJywKKyAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRfbmFtZT0ncmVjaXBlX2xheWVyX3ZlcnNpb24nKQogICAgIHN1bW1hcnkgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpCiAgICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpCkBAIC0xMzU2LDcgKzEzNTYsNyBAQAogCiBjbGFzcyBQcm92aWRlcyhtb2RlbHMuTW9kZWwpOgogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSkKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKIAogY2xhc3MgUmVjaXBlX0RlcGVuZGVuY3kobW9kZWxzLk1vZGVsKToKICAgICBUWVBFX0RFUEVORFMgPSAwCkBAIC0xMzY2LDkgKzEzNjYsOSBAQAogICAgICAgICAoVFlQRV9ERVBFTkRTLCAiZGVwZW5kcyIpLAogICAgICAgICAoVFlQRV9SREVQRU5EUywgInJkZXBlbmRzIiksCiAgICAgKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgcmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19yZWNpcGUnKQotICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfZGVwZW5kcycpCi0gICAgdmlhID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvdmlkZXMsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQorICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX3JlY2lwZScpCisgICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQorICAgIHZpYSA9IG1vZGVscy5Gb3JlaWduS2V5KFByb3ZpZGVzLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQogICAgIGRlcF90eXBlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPURFUEVORFNfVFlQRSkKICAgICBvYmplY3RzID0gUmVjaXBlX0RlcGVuZGVuY3lNYW5hZ2VyKCkKIApAQCAtMTM3Nyw3ICsxMzc3LDcgQEAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbIm5hbWUiLCAiZGVzY3JpcHRpb24iLCAibGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUiXQogICAgIHVwX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsID0gVHJ1ZSwgZGVmYXVsdCA9IE5vbmUpCiAKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nKQorICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKICAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpCiAKQEAgLTE0MDgsNyArMTQwOCw3IEBACiAgICAgIiIiIEEgcmVsZWFzZSBpcyBhIHByb2plY3QgdGVtcGxhdGUsIHVzZWQgdG8gcHJlLXBvcHVsYXRlIFByb2plY3Qgc2V0dGluZ3Mgd2l0aCBhIGNvbmZpZ3VyYXRpb24gc2V0ICIiIgogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MzIsIHVuaXF1ZSA9IFRydWUpCiAgICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQotICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KEJpdGJha2VWZXJzaW9uKQorICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KEJpdGJha2VWZXJzaW9uLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgYnJhbmNoX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9NTAsIGRlZmF1bHQgPSAiIikKICAgICBoZWxwdGV4dCA9IG1vZGVscy5UZXh0RmllbGQobnVsbD1UcnVlKQogCkBAIC0xNDE5LDcgKzE0MTksNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCiAKIGNsYXNzIFJlbGVhc2VEZWZhdWx0TGF5ZXIobW9kZWxzLk1vZGVsKToKLSAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSkKKyAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGxheWVyX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBkZWZhdWx0PSIiKQogCiAKQEAgLTE0NzQsMTAgKzE0NzQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxheWVyX19kZXNjcmlwdGlvbiIsICJsYXllcl9fdmNzX3VybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJwYXRoIiwgInJlbGVhc2VfX25hbWUiLCAiY29tbWl0IiwgImJyYW5jaCJdCiAKLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J2xheWVyX3ZlcnNpb25fYnVpbGQnLAorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKQogCi0gICAgbGF5ZXIgPSBtb2RlbHMuRm9yZWlnbktleShMYXllciwgcmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2xheWVyJykKKyAgICBsYXllciA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicpCiAKICAgICBsYXllcl9zb3VyY2UgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9TGF5ZXJTb3VyY2UuU09VUkNFX1RZUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTApCkBAIC0xNDg1LDcgKzE0ODUsNyBAQAogICAgIHVwX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsPVRydWUsIGRlZmF1bHQ9dGltZXpvbmUubm93KQogCiAgICAgIyBUbyB3aGljaCBtZXRhZGF0YSByZWxlYXNlIGRvZXMgdGhpcyBsYXllciB2ZXJzaW9uIGJlbG9uZyB0bwotICAgIHJlbGVhc2UgPSBtb2RlbHMuRm9yZWlnbktleShSZWxlYXNlLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKKyAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKIAogICAgIGJyYW5jaCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD04MCkKICAgICBjb21taXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAKICAgICBsb2NhbF9wYXRoID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0xMDI0LCBkZWZhdWx0PSIvIikKIAogICAgICMgU2V0IGlmIHRoaXMgbGF5ZXIgaXMgcmVzdHJpY3RlZCB0byBhIHBhcnRpY3VsYXIgcHJvamVjdAotICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleSgnUHJvamVjdCcsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQorICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleSgnUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCiAKICAgICAjIGNvZGUgbGlmdGVkLCB3aXRoIGFkYXB0YXRpb25zLCBmcm9tIHRoZSBsYXllcmluZGV4LXdlYiBhcHBsaWNhdGlvbgogICAgICMgaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2xheWVyaW5kZXgtd2ViLwpAQCAtMTYwOCwxNCArMTYwOCwxNCBAQAogCiBjbGFzcyBMYXllclZlcnNpb25EZXBlbmRlbmN5KG1vZGVscy5Nb2RlbCk6CiAKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwKKyAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkX25hbWU9ImRlcGVuZGVuY2llcyIpCi0gICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sCisgICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZF9uYW1lPSJkZXBlbmRlZXMiKQogCiBjbGFzcyBQcm9qZWN0TGF5ZXIobW9kZWxzLk1vZGVsKToKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKLSAgICBsYXllcmNvbW1pdCA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG51bGw9VHJ1ZSkKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQorICAgIGxheWVyY29tbWl0ID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCiAgICAgb3B0aW9uYWwgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQgPSBUcnVlKQogCiAgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgpAQCAtMTYzMCw4ICsxNjMwLDggQEAKICAgICBMQVlFUl9OQU1FID0gInRvYXN0ZXItY3VzdG9tLWltYWdlcyIKIAogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsnbmFtZSddCi0gICAgYmFzZV9yZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIHJlbGF0ZWRfbmFtZT0nYmFzZWRfb25fcmVjaXBlJykKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKKyAgICBiYXNlX3JlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2Jhc2VkX29uX3JlY2lwZScpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBsYXN0X3VwZGF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKIAogICAgIGRlZiBnZXRfbGFzdF9zdWNjZXNzZnVsX2J1aWx0X3RhcmdldChzZWxmKToKQEAgLTE2NDcsMTQgKzE2NDcsMTQgQEAKICAgICAgICAgIiIiCiAgICAgICAgICMgQ2hlY2sgaWYgd2UncmUgYWxkcmVhZHkgdXAtdG8tZGF0ZSBvciBub3QKICAgICAgICAgdGFyZ2V0ID0gc2VsZi5nZXRfbGFzdF9zdWNjZXNzZnVsX2J1aWx0X3RhcmdldCgpCi0gICAgICAgIGlmIHRhcmdldCA9PSBOb25lOgorICAgICAgICBpZiB0YXJnZXQgaXMgTm9uZToKICAgICAgICAgICAgICMgU28gd2UndmUgbmV2ZXIgYWN0dWFsbHkgYnVpbHQgdGhpcyBDdXN0b20gcmVjaXBlIGJ1dCB3aGF0IGFib3V0CiAgICAgICAgICAgICAjIHRoZSByZWNpcGUgaXQncyBiYXNlZCBvbj8KICAgICAgICAgICAgIHRhcmdldCA9IFwKICAgICAgICAgICAgICAgICBUYXJnZXQub2JqZWN0cy5maWx0ZXIoUShidWlsZF9fb3V0Y29tZT1CdWlsZC5TVUNDRUVERUQpICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShidWlsZF9fcHJvamVjdD1zZWxmLnByb2plY3QpICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUSh0YXJnZXQ9c2VsZi5iYXNlX3JlY2lwZS5uYW1lKSkubGFzdCgpCi0gICAgICAgICAgICBpZiB0YXJnZXQgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHRhcmdldCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGlmIHRhcmdldC5idWlsZC5jb21wbGV0ZWRfb24gPT0gc2VsZi5sYXN0X3VwZGF0ZWQ6CkBAIC0xNzg0LDE0ICsxNzg0LDE0IEBACiAgICAgICAgIHJldHVybiByZWNpcGVfY29udGVudHMKIAogY2xhc3MgUHJvamVjdFZhcmlhYmxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB2YWx1ZSA9IG1vZGVscy5UZXh0RmllbGQoYmxhbmsgPSBUcnVlKQogCiBjbGFzcyBWYXJpYWJsZShtb2RlbHMuTW9kZWwpOgogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsndmFyaWFibGVfbmFtZScsICd2YXJpYWJsZV92YWx1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aGlzdG9yeV9fZmlsZV9uYW1lJywgImRlc2NyaXB0aW9uIl0KLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJykKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndmFyaWFibGVfYnVpbGQnKQogICAgIHZhcmlhYmxlX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHZhcmlhYmxlX3ZhbHVlID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogICAgIGNoYW5nZWQgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpCkBAIC0xNzk5LDcgKzE3OTksNyBAQAogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogCiBjbGFzcyBWYXJpYWJsZUhpc3RvcnkobW9kZWxzLk1vZGVsKToKLSAgICB2YXJpYWJsZSA9IG1vZGVscy5Gb3JlaWduS2V5KFZhcmlhYmxlLCByZWxhdGVkX25hbWU9J3ZoaXN0b3J5JykKKyAgICB2YXJpYWJsZSA9IG1vZGVscy5Gb3JlaWduS2V5KFZhcmlhYmxlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndmhpc3RvcnknKQogICAgIHZhbHVlICAgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUpCiAgICAgbGluZV9udW1iZXIgPSBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSkKQEAgLTE4MDksNyArMTgwOSw3IEBACiAgICAgVkFSSUFCTEUgPSAwCiAgICAgSEVMUFRFWFRfQVJFQSA9ICgoVkFSSUFCTEUsICd2YXJpYWJsZScpLCApCiAKLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J2hlbHB0ZXh0X2J1aWxkJykKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0naGVscHRleHRfYnVpbGQnKQogICAgIGFyZWEgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9SEVMUFRFWFRfQVJFQSkKICAgICBrZXkgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRleHQgPSBtb2RlbHMuVGV4dEZpZWxkKCkKQEAgLTE4MjksOCArMTgyOSw4IEBACiAgICAgICAgIChFWENFUFRJT04sICJ0b2FzdGVyIGV4Y2VwdGlvbiIpCiAgICAgKQogCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCkKLSAgICB0YXNrICA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIGJsYW5rID0gVHJ1ZSwgbnVsbD1UcnVlKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKKyAgICB0YXNrICA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgYmxhbmsgPSBUcnVlLCBudWxsPVRydWUpCiAgICAgbGV2ZWwgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9TE9HX0xFVkVMLCBkZWZhdWx0PUlORk8pCiAgICAgbWVzc2FnZSA9IG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSwgbnVsbD1UcnVlKQogICAgIHBhdGhuYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpCkBAIC0xODU5LDcgKzE4NTksNyBAQAogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsibmFtZSIsICJkZXNjcmlwdGlvbiIsICJsYXllcl92ZXJzaW9uX19sYXllcl9fbmFtZSJdCiAgICAgdXBfZGF0ZSA9IG1vZGVscy5EYXRlVGltZUZpZWxkKG51bGwgPSBUcnVlLCBkZWZhdWx0ID0gTm9uZSkKIAotICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicpCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvc2VsZW5pdW1faGVscGVyc19iYXNlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvc2VsZW5pdW1faGVscGVyc19iYXNlLnB5CmluZGV4IDZjOTQ2ODQuLjY0NGQ0NWYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3NlbGVuaXVtX2hlbHBlcnNfYmFzZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci9zZWxlbml1bV9oZWxwZXJzX2Jhc2UucHkKQEAgLTE5LDcgKzE5LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSBkamFuZ28uY29udHJpYi5zdGF0aWNmaWxlcy50ZXN0aW5nIGltcG9ydCBTdGF0aWNMaXZlU2VydmVyVGVzdENhc2UKIGZyb20gc2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJpdmVyV2FpdAogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmRlc2lyZWRfY2FwYWJpbGl0aWVzIGltcG9ydCBEZXNpcmVkQ2FwYWJpbGl0aWVzCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX2J1aWxkc19wYWdlLnB5CmluZGV4IGZiYTYyN2IuLjg0MjNkM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX2J1aWxkc19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX2J1aWxkc19wYWdlLnB5CkBAIC05LDcgKzksNyBAQAogCiBpbXBvcnQgcmUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfcHJvamVjdHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX3Byb2plY3RzX3BhZ2UucHkKaW5kZXggYWZkMmQzNS4uMTViMDM0MCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfcHJvamVjdHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9wcm9qZWN0c19wYWdlLnB5CkBAIC05LDcgKzksNyBAQAogCiBpbXBvcnQgcmUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlLnB5CmluZGV4IGQ5NzJhZmYuLmVmY2Q4OWIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX2FydGlmYWN0cy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9hcnRpZmFjdHMucHkKaW5kZXggZTI2MjNlOC4uYzYyMjZkNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX2FydGlmYWN0cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfYXJ0aWZhY3RzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIAogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3JlY2lwZXMucHkKaW5kZXggYzU0MmQ0NS4uOWQ4NWJhOSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3JlY2lwZXMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3JlY2lwZXMucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgQnVpbGQsIFJlY2lwZSwgVGFzaywgTGF5ZXIsIExheWVyX1ZlcnNpb24KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV90YXNrcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV90YXNrcy5weQppbmRleCAyMmFjYjQ3Li43ZmRmNzVkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfdGFza3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3Rhc2tzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBSZWNpcGUsIFRhc2ssIExheWVyLCBMYXllcl9WZXJzaW9uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2pzX3VuaXRfdGVzdHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2pzX3VuaXRfdGVzdHMucHkKaW5kZXggZThiNDI5NS4uZTYxNjNiYiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9qc191bml0X3Rlc3RzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfanNfdW5pdF90ZXN0cy5weQpAQCAtMTEsNyArMTEsNyBAQAogUnVuIHRoZSBqcyB1bml0IHRlc3RzCiAiIiIKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBpbXBvcnQgbG9nZ2luZwogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGFuZGluZ19wYWdlLnB5CmluZGV4IDA3OTAxOTguLjhiYjY0YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGFuZGluZ19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGFuZGluZ19wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xheWVyZGV0YWlsc19wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYXllcmRldGFpbHNfcGFnZS5weQppbmRleCBmODFlNjk2Li43MWJkZDJhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xheWVyZGV0YWlsc19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGF5ZXJkZXRhaWxzX3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEludGVsIENvcnBvcmF0aW9uCiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0LCBMYXllclNvdXJjZSwgUmVsZWFzZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9tb3N0X3JlY2VudF9idWlsZHNfc3RhdGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9tb3N0X3JlY2VudF9idWlsZHNfc3RhdGVzLnB5CmluZGV4IDE1ZDI1ZGMuLjc4NDRhYWEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbW9zdF9yZWNlbnRfYnVpbGRzX3N0YXRlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X21vc3RfcmVjZW50X2J1aWxkc19zdGF0ZXMucHkKQEAgLTcsNyArNyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEludGVsIENvcnBvcmF0aW9uCiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVyc19iYXNlIGltcG9ydCBXYWl0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X2N1c3RvbV9pbWFnZV9wYWdlLnB5CmluZGV4IDBhYTNiN2EuLjk5MDZhZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X2N1c3RvbV9pbWFnZV9wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X2N1c3RvbV9pbWFnZV9wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJpdGJha2VWZXJzaW9uLCBSZWxlYXNlLCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIExheWVyCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19wcm9qZWN0X3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19wcm9qZWN0X3BhZ2UucHkKaW5kZXggOGU1NmJiMC4uZTIwYTFmNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfcHJvamVjdF9wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X3Byb2plY3RfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFNlbGVjdAogZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZEVsZW1lbnRTdGF0ZUV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2J1aWxkc19wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2J1aWxkc19wYWdlLnB5CmluZGV4IDQ3ZmIxMGIuLjUxNzE3ZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9idWlsZHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfYnVpbGRzX3BhZ2UucHkKQEAgLTksNyArOSw3IEBACiAKIGltcG9ydCByZQogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfY29uZmlnX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfY29uZmlnX3BhZ2UucHkKaW5kZXggMjgxNmViOS4uOTQ0YmNiMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2NvbmZpZ19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9jb25maWdfcGFnZS5weQpAQCAtNywxMCArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHJlCi0KLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQml0YmFrZVZlcnNpb24sIFJlbGVhc2UsIFByb2plY3QsIFByb2plY3RWYXJpYWJsZQpAQCAtMjE2LDQgKzIxMyw1IEBACiAKICAgICAgICAgaGlkZGVuX2VsZW1lbnQgPSBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ2hpbnRFcnJvci1zc3RhdGVfZGlyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoaWRkZW5fZWxlbWVudC5pc19kaXNwbGF5ZWQoKSwgRmFsc2UsCi0gICAgICAgICAgICAnc3N0YXRlIGRpcmVjdG9yeSBwYXRoIHZhbGlkIGJ1dCB0cmVhdGVkIGFzIGludmFsaWQnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgICAgICAgICdzc3RhdGUgZGlyZWN0b3J5IHBhdGggdmFsaWQgYnV0IHRyZWF0ZWQgYXMgaW52YWxpZCcpCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X3BhZ2UucHkKaW5kZXggOGI1ZTFiNi4uNTQ2MjkzZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3NhbXBsZS5weQppbmRleCBmNGFkNjcwLi5iMDA2N2MyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3NhbXBsZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3NhbXBsZS5weQpAQCAtMTYsNyArMTYsNyBAQAogYW5kIHNob3VsZCBiZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhpcyBzYW1wbGUuCiAiIiIKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKIGNsYXNzIFRlc3RTYW1wbGUoU2VsZW5pdW1UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdGFza19wYWdlLnB5CmluZGV4IDI2ZjNkY2EuLjAxMWI1ODUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdGFza19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdGFza19wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgUmVjaXBlLCBUYXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90b2FzdGVydGFibGVfdWkucHkKaW5kZXggZWY3OGNiYi4uZTgyZDVlYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90b2FzdGVydGFibGVfdWkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90b2FzdGVydGFibGVfdWkucHkKQEAgLTksNyArOSw3IEBACiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJpdGJha2VWZXJzaW9uLCBSZWxlYXNlLCBQcm9qZWN0LCBCdWlsZApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9mdW5jdGlvbmFsX2Jhc2ljLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9mdW5jdGlvbmFsX2Jhc2ljLnB5CmluZGV4IDU2Yzg0ZmIuLjU2ODNlMzggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfZnVuY3Rpb25hbF9iYXNpYy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Z1bmN0aW9uYWxfYmFzaWMucHkKQEAgLTcsNyArNyw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHRpbWUKIGltcG9ydCByZQogZnJvbSB0ZXN0cy5mdW5jdGlvbmFsLmZ1bmN0aW9uYWxfaGVscGVycyBpbXBvcnQgU2VsZW5pdW1GdW5jdGlvbmFsVGVzdENhc2UKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvdmlld3MvdGVzdF92aWV3cy5weQppbmRleCA2OGQ5ZTlkLi43MzVkNTk2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvdmlld3MvdGVzdF92aWV3cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvdmlld3MvdGVzdF92aWV3cy5weQpAQCAtMTEsNyArMTEsNyBAQAogCiBmcm9tIGRqYW5nby50ZXN0IGltcG9ydCBUZXN0Q2FzZQogZnJvbSBkamFuZ28udGVzdC5jbGllbnQgaW1wb3J0IFJlcXVlc3RGYWN0b3J5Ci1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUGFja2FnZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5CmluZGV4IDhiNDliM2UuLmI0Y2RjMzMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKQEAgLTEzLDcgKzEzLDYgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ291bnRlcgotZnJvbSBzaHV0aWwgaW1wb3J0IGNvcHlmaWxlCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUHJvamVjdFRhcmdldCwgQnVpbGQsIExheWVyX1ZlcnNpb24KIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeSwgTGF5ZXJTb3VyY2UsIFByb2plY3RMYXllcgpAQCAtMjUsMTIgKzI0LDEwIEBACiAKIGZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZSwgSnNvblJlc3BvbnNlCiBmcm9tIGRqYW5nby52aWV3cy5nZW5lcmljIGltcG9ydCBWaWV3Ci1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRLCBGCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgRXJyb3IKIGZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IGZpbHRlcmVkX2ZpbGVzaXplZm9ybWF0Ci1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKLWltcG9ydCBweXR6CiAKICMgZGV2ZWxvcG1lbnQvZGVidWdnaW5nIHN1cHBvcnQKIHZlcmJvc2UgPSAyCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKaW5kZXggYjNlYTIyMi4uNTI4ZGQzMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQpAQCAtNywxNSArNywxMCBAQAogIwogCiBmcm9tIHRvYXN0ZXJndWkud2lkZ2V0cyBpbXBvcnQgVG9hc3RlclRhYmxlCi1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFJlY2lwZSwgUHJvamVjdExheWVyLCBMYXllcl9WZXJzaW9uLCBNYWNoaW5lLCBQcm9qZWN0Citmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFJlY2lwZSwgUHJvamVjdExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0CiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEN1c3RvbUltYWdlUmVjaXBlLCBQYWNrYWdlLCBUYXJnZXQsIEJ1aWxkLCBMb2dNZXNzYWdlLCBUYXNrCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEN1c3RvbUltYWdlUGFja2FnZSwgUGFja2FnZV9EZXBlbmRlbmN5TWFuYWdlcgotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBEaXN0cm8KLWZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUSwgTWF4LCBTdW0sIENvdW50LCBXaGVuLCBDYXNlLCBWYWx1ZSwgSW50ZWdlckZpZWxkCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHVybAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UsIHJlc29sdmUKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQotZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgVGVtcGxhdGVWaWV3Citmcm9tIGRqYW5nby5kYi5tb2RlbHMgaW1wb3J0IFEsIFN1bSwgQ291bnQsIFdoZW4sIENhc2UsIFZhbHVlLCBJbnRlZ2VyRmllbGQKIAogZnJvbSB0b2FzdGVyZ3VpLnRhYmxlZmlsdGVyIGltcG9ydCBUYWJsZUZpbHRlcgogZnJvbSB0b2FzdGVyZ3VpLnRhYmxlZmlsdGVyIGltcG9ydCBUYWJsZUZpbHRlckFjdGlvblRvZ2dsZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL29iamVjdHNfdG9fZGljdGlvbmFyaWVzX2ZpbHRlci5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9vYmplY3RzX3RvX2RpY3Rpb25hcmllc19maWx0ZXIucHkKaW5kZXggMDQ4ZDUzMy4uZTI0MjIzNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL29iamVjdHNfdG9fZGljdGlvbmFyaWVzX2ZpbHRlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3Mvb2JqZWN0c190b19kaWN0aW9uYXJpZXNfZmlsdGVyLnB5CkBAIC0zLDcgKzMsNiBAQAogIwogCiBmcm9tIGRqYW5nbyBpbXBvcnQgdGVtcGxhdGUKLWltcG9ydCBqc29uCiAKIHJlZ2lzdGVyID0gdGVtcGxhdGUuTGlicmFyeSgpCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0X3VybF90YWcucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdF91cmxfdGFnLnB5CmluZGV4IDcxZTA5MjUuLjdiNmYxNWIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0X3VybF90YWcucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3RfdXJsX3RhZy5weQpAQCAtMyw3ICszLDcgQEAKICMKIAogZnJvbSBkamFuZ28gaW1wb3J0IHRlbXBsYXRlCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogCiByZWdpc3RlciA9IHRlbXBsYXRlLkxpYnJhcnkoKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdHRhZ3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdHRhZ3MucHkKaW5kZXggMWRiYWIzYi4uYzQzMmY1OSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3R0YWdzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0dGFncy5weQpAQCAtNiw3ICs2LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCitmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEKIGZyb20gb3MucGF0aCBpbXBvcnQgcmVscGF0aAogaW1wb3J0IHJlCiBmcm9tIGRqYW5nbyBpbXBvcnQgdGVtcGxhdGUKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAjIGl0IG1hbnVhbGx5IGhlcmUKICAgICByZXR1cm4gbWFya19zYWZlKEpzb25MaWIuZHVtcHModmFsdWUsIGluZGVudD0yLCBkZWZhdWx0ID0gZGVmYXVsdCwgZW5zdXJlX2FzY2lpPUZhbHNlKS5yZXBsYWNlKCc8LycsICc8XFwvJykpCiAKLUByZWdpc3Rlci5hc3NpZ25tZW50X3RhZworQHJlZ2lzdGVyLnNpbXBsZV90YWcKIGRlZiBxdWVyeShxcywgKiprd2FyZ3MpOgogICAgICIiIiB0ZW1wbGF0ZSB0YWcgd2hpY2ggYWxsb3dzIHF1ZXJ5c2V0IGZpbHRlcmluZy4gVXNhZ2U6CiAgICAgICAgICAgeyUgcXVlcnkgYm9va3MgYXV0aG9yPWF1dGhvciBhcyBteWJvb2tzICV9CkBAIC04Myw3ICs4Myw3IEBACiBkZWYgbXVsdGlwbHkodmFsdWUsIGFyZyk6CiAgICAgcmV0dXJuIGludCh2YWx1ZSkgKiBpbnQoYXJnKQogCi1AcmVnaXN0ZXIuYXNzaWdubWVudF90YWcKK0ByZWdpc3Rlci5zaW1wbGVfdGFnCiBkZWYgZGF0ZWNvbXB1dGUoZGVsdGEsIHN0YXJ0ID0gdGltZXpvbmUubm93KCkpOgogICAgIHJldHVybiBzdGFydCArIHRpbWVkZWx0YShkZWx0YSkKIApAQCAtMjEyLDcgKzIxMiw3IEBACiAgICAgIiIiSWYgcGFja2FnZS5pbnN0YWxsZWRfc2l6ZSBub3QgbnVsbCBhbmQgbm90IGVtcHR5IHJldHVybiBpdCwKICAgICAgICBlbHNlIHJldHVybiBwYWNrYWdlLnNpemUKICAgICAiIiIKLSAgICByZXR1cm4gc2l6ZSBpZiAoaW5zdGFsbGVkX3NpemUgPT0gMCkgb3IgKGluc3RhbGxlZF9zaXplID09ICIiKSBvciAoaW5zdGFsbGVkX3NpemUgPT0gTm9uZSkgZWxzZSBpbnN0YWxsZWRfc2l6ZQorICAgIHJldHVybiBzaXplIGlmIChpbnN0YWxsZWRfc2l6ZSA9PSAwKSBvciAoaW5zdGFsbGVkX3NpemUgPT0gIiIpIG9yIChpbnN0YWxsZWRfc2l6ZSBpcyBOb25lKSBlbHNlIGluc3RhbGxlZF9zaXplCiAKIEByZWdpc3Rlci5maWx0ZXIKIGRlZiBmaWx0ZXJlZF9wYWNrYWdldmVyc2lvbih2ZXJzaW9uLCByZXZpc2lvbik6CkBAIC0yMjgsNyArMjI4LDcgQEAKICAgICAgICAgZm9ybWF0dGVkIG5pY2VseS4KICAgICAiIiIKICAgICBzaXplID0gcGFja2FnZV9vYmplY3QuaW5zdGFsbGVkX3NpemUKLSAgICBpZiBzaXplID09IE5vbmUgb3Igc2l6ZSA9PSAnJzoKKyAgICBpZiBzaXplIGlzIE5vbmUgb3Igc2l6ZSA9PSAnJzoKICAgICAgICAgc2l6ZSA9IHBhY2thZ2Vfb2JqZWN0LnNpemUKIAogICAgIHJldHVybiAnezouMSV9Jy5mb3JtYXQoZmxvYXQoc2l6ZSkvZmxvYXQodG90YWxfc2l6ZSkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weQppbmRleCBmZDc1MGZmLi5hMWU2ZmU5IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3R5cGVhaGVhZHMucHkKQEAgLTEwLDcgKzEwLDcgQEAKIAogZnJvbSB0b2FzdGVyZ3VpLndpZGdldHMgaW1wb3J0IFRvYXN0ZXJUeXBlQWhlYWQKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmNvcmUuY2FjaGUgaW1wb3J0IGNhY2hlCiAKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkKaW5kZXggNjczZDlhZS4uZDJkZjRlNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5CkBAIC02LDEwICs2LDkgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IGluY2x1ZGUsIHVybAotZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgUmVkaXJlY3RWaWV3LCBUZW1wbGF0ZVZpZXcKK2Zyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgdXJsCitmcm9tIGRqYW5nby52aWV3cy5nZW5lcmljIGltcG9ydCBSZWRpcmVjdFZpZXcKIAotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlQmFkUmVxdWVzdAogZnJvbSB0b2FzdGVyZ3VpIGltcG9ydCB0YWJsZXMKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgYnVpbGR0YWJsZXMKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgdHlwZWFoZWFkcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQppbmRleCBkN2FjYWZmLi45YTVlNDhlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQpAQCAtMTksOCArMTksOCBAQAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBUYXJnZXRLZXJuZWxGaWxlLCBUYXJnZXRTREtGaWxlLCBUYXJnZXRfSW1hZ2VfRmlsZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCaXRiYWtlVmVyc2lvbiwgQ3VzdG9tSW1hZ2VSZWNpcGUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UsIHJlc29sdmUKLWZyb20gZGphbmdvLmNvcmUuZXhjZXB0aW9ucyBpbXBvcnQgTXVsdGlwbGVPYmplY3RzUmV0dXJuZWQsIE9iamVjdERvZXNOb3RFeGlzdAorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZSwgcmVzb2x2ZQorZnJvbSBkamFuZ28uY29yZS5leGNlcHRpb25zIGltcG9ydCBPYmplY3REb2VzTm90RXhpc3QKIGZyb20gZGphbmdvLmNvcmUucGFnaW5hdG9yIGltcG9ydCBQYWdpbmF0b3IsIEVtcHR5UGFnZSwgUGFnZU5vdEFuSW50ZWdlcgogZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlTm90Rm91bmQsIEpzb25SZXNwb25zZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCkBAIC01MSw3ICs1MSw3IEBACiAgICAgZGVmIGdldF9taW1ldHlwZShzZWxmLCBwYXRoKToKICAgICAgICAgZ3Vlc3MgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShwYXRoLCBzZWxmLl9zdHJpY3QpCiAgICAgICAgIGd1ZXNzZWRfdHlwZSA9IGd1ZXNzWzBdCi0gICAgICAgIGlmIGd1ZXNzZWRfdHlwZSA9PSBOb25lOgorICAgICAgICBpZiBndWVzc2VkX3R5cGUgaXMgTm9uZToKICAgICAgICAgICAgIGd1ZXNzZWRfdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCiAgICAgICAgIHJldHVybiBndWVzc2VkX3R5cGUKIApAQCAtMTI2LDcgKzEyNiw3IEBACiAgICAgcmV0dXJuIHsiaWQiOiB4LnBrLAogICAgICAgICAgICAgIm5hbWUiOiB4LmxheWVyLm5hbWUsCiAgICAgICAgICAgICAidG9vbHRpcCI6ICIlcyB8ICVzIiAlICh4LmxheWVyLnZjc191cmwseC5nZXRfdmNzX3JlZmVyZW5jZSgpKSwKLSAgICAgICAgICAgICJkZXRhaWwiOiAiKCVzIiAlIHgubGF5ZXIudmNzX3VybCArICgiKSIgaWYgeC5yZWxlYXNlID09IE5vbmUgZWxzZSAiIHwgIit4LmdldF92Y3NfcmVmZXJlbmNlKCkrIikiKSwKKyAgICAgICAgICAgICJkZXRhaWwiOiAiKCVzIiAlIHgubGF5ZXIudmNzX3VybCArICgiKSIgaWYgeC5yZWxlYXNlIGlzIE5vbmUgZWxzZSAiIHwgIit4LmdldF92Y3NfcmVmZXJlbmNlKCkrIikiKSwKICAgICAgICAgICAgICJnaXR1cmwiOiB4LmxheWVyLnZjc191cmwsCiAgICAgICAgICAgICAibGF5ZXJkZXRhaWx1cmwiIDogcmV2ZXJzZSgnbGF5ZXJkZXRhaWxzJywgYXJncz0ocHJqLmlkLHgucGspKSwKICAgICAgICAgICAgICJyZXZpc2lvbiIgOiB4LmdldF92Y3NfcmVmZXJlbmNlKCksCkBAIC0zNTIsNyArMzUyLDcgQEAKICMgc2V0IGNvb2tpZXMgZm9yIHBhcmFtZXRlcnMuIHRoaXMgaXMgdXNlZnVsbCBpbiBjYXNlIHBhcmFtZXRlcnMgYXJlIHNldAogIyBtYW51YWxseSBmcm9tIHRoZSBHRVQgdmFsdWVzIG9mIHRoZSBsaW5rCiBkZWYgX3NldF9wYXJhbWV0ZXJzX3ZhbHVlcyhwYWdlc2l6ZSwgb3JkZXJieSwgcmVxdWVzdCk6Ci0gICAgZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJlc29sdmUKKyAgICBmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXNvbHZlCiAgICAgY3VycmVudF91cmwgPSByZXNvbHZlKHJlcXVlc3QucGF0aF9pbmZvKS51cmxfbmFtZQogICAgIHJlcXVlc3Quc2Vzc2lvblsnJXNfY291bnQnICUgY3VycmVudF91cmxdID0gcGFnZXNpemUKICAgICByZXF1ZXN0LnNlc3Npb25bJyVzX29yZGVyYnknICUgY3VycmVudF91cmxdID1vcmRlcmJ5CkBAIC02NjQsNyArNjY0LDYgQEAKICAgICBfc2V0X3BhcmFtZXRlcnNfdmFsdWVzKHBhZ2VzaXplLCBvcmRlcmJ5LCByZXF1ZXN0KQogICAgIHJldHVybiByZXNwb25zZQogCi1mcm9tIGRqYW5nby5jb3JlLnNlcmlhbGl6ZXJzLmpzb24gaW1wb3J0IERqYW5nb0pTT05FbmNvZGVyCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UKIGRlZiB4aHJfZGlyaW5mbyhyZXF1ZXN0LCBidWlsZF9pZCwgdGFyZ2V0X2lkKToKICAgICB0b3AgPSByZXF1ZXN0LkdFVC5nZXQoJ3N0YXJ0JywgJy8nKQpAQCAtNzE5LDcgKzcxOCw3IEBACiAgICAgICAgICAgICAgICAgcmVzb2x2ZWRfaWQgPSBvLnN5bV90YXJnZXRfaWQKICAgICAgICAgICAgICAgICByZXNvbHZlZF9wYXRoID0gby5wYXRoCiAgICAgICAgICAgICAgICAgaWYgdGFyZ2V0X3BhY2thZ2VzLmNvdW50KCk6Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIHJlc29sdmVkX2lkICE9ICIiIGFuZCByZXNvbHZlZF9pZCAhPSBOb25lOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSByZXNvbHZlZF9pZCAhPSAiIiBhbmQgcmVzb2x2ZWRfaWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZiA9IFRhcmdldF9GaWxlLm9iamVjdHMuZ2V0KHBrPXJlc29sdmVkX2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRfcGF0aCA9IHRmLnBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkX2lkID0gdGYuc3ltX3RhcmdldF9pZApAQCAtNzMxLDEwICs3MzAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WydwYWNrYWdlX2lkJ10gPSBzdHIocC5pZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WydwYWNrYWdlJ10gPSBwLm5hbWUKICAgICAgICAgICAgICAgICAjIGRvbid0IHVzZSByZXNvbHZlZCBwYXRoIGZyb20gYWJvdmUsIHNob3cgaW1tZWRpYXRlIGxpbmstdG8KLSAgICAgICAgICAgICAgICBpZiBvLnN5bV90YXJnZXRfaWQgIT0gIiIgYW5kIG8uc3ltX3RhcmdldF9pZCAhPSBOb25lOgorICAgICAgICAgICAgICAgIGlmIG8uc3ltX3RhcmdldF9pZCAhPSAiIiBhbmQgby5zeW1fdGFyZ2V0X2lkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBlbnRyeVsnbGlua190byddID0gVGFyZ2V0X0ZpbGUub2JqZWN0cy5nZXQocGs9by5zeW1fdGFyZ2V0X2lkKS5wYXRoCiAgICAgICAgICAgICBlbnRyeVsnc2l6ZSddID0gZmlsdGVyZWRfZmlsZXNpemVmb3JtYXQoby5zaXplKQotICAgICAgICAgICAgaWYgZW50cnlbJ2xpbmtfdG8nXSAhPSBOb25lOgorICAgICAgICAgICAgaWYgZW50cnlbJ2xpbmtfdG8nXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBlbnRyeVsncGVybWlzc2lvbiddID0gbm9kZV9zdHJbby5pbm9kZXR5cGVdICsgby5wZXJtaXNzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVudHJ5WydwZXJtaXNzaW9uJ10gPSBub2RlX3N0cltvLmlub2RldHlwZV0gKyBvLnBlcm1pc3Npb24KQEAgLTc1Niw3ICs3NTUsNyBAQAogICAgIG9iamVjdHMgPSBfZ2V0X2Rpcl9lbnRyaWVzKGJ1aWxkX2lkLCB0YXJnZXRfaWQsICcvJykKICAgICBwYWNrYWdlc19zdW0gPSBQYWNrYWdlLm9iamVjdHMuZmlsdGVyKGlkX19pbj1UYXJnZXRfSW5zdGFsbGVkX1BhY2thZ2Uub2JqZWN0cy5maWx0ZXIodGFyZ2V0X2lkPXRhcmdldF9pZCkudmFsdWVzKCdwYWNrYWdlX2lkJykpLmFnZ3JlZ2F0ZShTdW0oJ2luc3RhbGxlZF9zaXplJykpCiAgICAgZGlyX2xpc3QgPSBOb25lCi0gICAgaWYgZmlsZV9wYXRoICE9IE5vbmU6CisgICAgaWYgZmlsZV9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAiIiIKICAgICAgICAgTGluayBmcm9tIHRoZSBpbmNsdWRlZCBwYWNrYWdlIGRldGFpbCBmaWxlIGxpc3QgcGFnZSBhbmQgaXMKICAgICAgICAgcmVxdWVzdGluZyBvcGVuaW5nIHRoZSBkaXIgaW5mbyB0byBhIHNwZWNpZmljIGZpbGUgcGF0aC4KQEAgLTEwMzAsMTUgKzEwMjksMTUgQEAKIAogZGVmIF9nZXRfcGFja2FnZV9hbGlhcyhwYWNrYWdlKToKICAgICBhbGlhcyA9IHBhY2thZ2UuaW5zdGFsbGVkX25hbWUKLSAgICBpZiBhbGlhcyAhPSBOb25lIGFuZCBhbGlhcyAhPSAnJyBhbmQgYWxpYXMgIT0gcGFja2FnZS5uYW1lOgorICAgIGlmIGFsaWFzIGlzIG5vdCBOb25lIGFuZCBhbGlhcyAhPSAnJyBhbmQgYWxpYXMgIT0gcGFja2FnZS5uYW1lOgogICAgICAgICByZXR1cm4gYWxpYXMKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gJycKIAogZGVmIF9nZXRfZnVsbHBhY2thZ2VzcGVjKHBhY2thZ2UpOgogICAgIHIgPSBwYWNrYWdlLm5hbWUKLSAgICB2ZXJzaW9uX2dvb2QgPSBwYWNrYWdlLnZlcnNpb24gIT0gTm9uZSBhbmQgIHBhY2thZ2UudmVyc2lvbiAhPSAnJwotICAgIHJldmlzaW9uX2dvb2QgPSBwYWNrYWdlLnJldmlzaW9uICE9IE5vbmUgYW5kIHBhY2thZ2UucmV2aXNpb24gIT0gJycKKyAgICB2ZXJzaW9uX2dvb2QgPSBwYWNrYWdlLnZlcnNpb24gaXMgbm90IE5vbmUgYW5kICBwYWNrYWdlLnZlcnNpb24gIT0gJycKKyAgICByZXZpc2lvbl9nb29kID0gcGFja2FnZS5yZXZpc2lvbiBpcyBub3QgTm9uZSBhbmQgcGFja2FnZS5yZXZpc2lvbiAhPSAnJwogICAgIGlmIHZlcnNpb25fZ29vZCBvciByZXZpc2lvbl9nb29kOgogICAgICAgICByICs9ICdfJwogICAgICAgICBpZiB2ZXJzaW9uX2dvb2Q6CkBAIC0xMTkyLDcgKzExOTEsNyBAQAogICAgICAgICByZXR1cm4gX3JlZGlyZWN0X3BhcmFtZXRlcnMoICdwYWNrYWdlX2luY2x1ZGVkX3JldmVyc2VfZGVwZW5kZW5jaWVzJywgcmVxdWVzdC5HRVQsIG1hbmRhdG9yeV9wYXJhbWV0ZXJzLCBidWlsZF9pZCA9IGJ1aWxkX2lkLCB0YXJnZXRfaWQgPSB0YXJnZXRfaWQsIHBhY2thZ2VfaWQgPSBwYWNrYWdlX2lkKQogICAgIChmaWx0ZXJfc3RyaW5nLCBzZWFyY2hfdGVybSwgb3JkZXJpbmdfc3RyaW5nKSA9IF9zZWFyY2hfdHVwbGUocmVxdWVzdCwgUGFja2FnZV9GaWxlKQogCi0gICAgcXVlcnlzZXQgPSBQYWNrYWdlX0RlcGVuZGVuY3kub2JqZWN0cy5zZWxlY3RfcmVsYXRlZCgnZGVwZW5kc19vbl9fbmFtZScsICdkZXBlbmRzX29uX19zaXplJykuZmlsdGVyKGRlcGVuZHNfb249cGFja2FnZV9pZCwgdGFyZ2V0X2lkPXRhcmdldF9pZCwgZGVwX3R5cGU9UGFja2FnZV9EZXBlbmRlbmN5LlRZUEVfVFJERVBFTkRTKQorICAgIHF1ZXJ5c2V0ID0gUGFja2FnZV9EZXBlbmRlbmN5Lm9iamVjdHMuc2VsZWN0X3JlbGF0ZWQoJ2RlcGVuZHNfb24nKS5maWx0ZXIoZGVwZW5kc19vbj1wYWNrYWdlX2lkLCB0YXJnZXRfaWQ9dGFyZ2V0X2lkLCBkZXBfdHlwZT1QYWNrYWdlX0RlcGVuZGVuY3kuVFlQRV9UUkRFUEVORFMpCiAgICAgb2JqZWN0cyA9IF9nZXRfcXVlcnlzZXQoUGFja2FnZV9EZXBlbmRlbmN5LCBxdWVyeXNldCwgZmlsdGVyX3N0cmluZywgc2VhcmNoX3Rlcm0sIG9yZGVyaW5nX3N0cmluZywgJ3BhY2thZ2VfX25hbWUnKQogCiAgICAgcGFja2FnZSA9IFBhY2thZ2Uub2JqZWN0cy5nZXQocGs9cGFja2FnZV9pZCkKQEAgLTEzNDAsNyArMTMzOSw3IEBACiAKIGltcG9ydCB0b2FzdGVybWFpbi5zZXR0aW5ncwogCi1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RMYXllciwgUHJvamVjdFRhcmdldCwgUHJvamVjdFZhcmlhYmxlCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RMYXllciwgUHJvamVjdFZhcmlhYmxlCiBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCAgQnVpbGRFbnZpcm9ubWVudAogCiAjIHdlIGhhdmUgYSBzZXQgb2YgZnVuY3Rpb25zIGlmIHdlJ3JlIGluIG1hbmFnZWQgbW9kZSwgb3IKQEAgLTEzNDksMTAgKzEzNDgsOCBAQAogaWYgVHJ1ZToKICAgICBmcm9tIGRqYW5nby5jb250cmliLmF1dGgubW9kZWxzIGltcG9ydCBVc2VyCiAgICAgZnJvbSBkamFuZ28uY29udHJpYi5hdXRoIGltcG9ydCBhdXRoZW50aWNhdGUsIGxvZ2luCi0gICAgZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLmRlY29yYXRvcnMgaW1wb3J0IGxvZ2luX3JlcXVpcmVkCiAKLSAgICBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyU291cmNlLCBUb2FzdGVyU2V0dGluZywgUmVsZWFzZSwgTWFjaGluZSwgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeQotICAgIGZyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkUmVxdWVzdAorICAgIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJTb3VyY2UsIFRvYXN0ZXJTZXR0aW5nLCBSZWxlYXNlCiAKICAgICBpbXBvcnQgdHJhY2ViYWNrCiAKQEAgLTEzNjcsOCArMTM2NCw4IEBACiAKICAgICAgICAgdGVtcGxhdGUgPSAibmV3cHJvamVjdC5odG1sIgogICAgICAgICBjb250ZXh0ID0gewotICAgICAgICAgICAgJ2VtYWlsJzogcmVxdWVzdC51c2VyLmVtYWlsIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKLSAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpIGVsc2UgJycsCisgICAgICAgICAgICAnZW1haWwnOiByZXF1ZXN0LnVzZXIuZW1haWwgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQgZWxzZSAnJywKKyAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCBlbHNlICcnLAogICAgICAgICAgICAgJ3JlbGVhc2VzJzogUmVsZWFzZS5vYmplY3RzLm9yZGVyX2J5KCJkZXNjcmlwdGlvbiIpLAogICAgICAgICB9CiAKQEAgLTEzOTQsNyArMTM5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgc2V0IGFsZXJ0IGZvciBtaXNzaW5nIGZpZWxkcwogICAgICAgICAgICAgICAgICAgICByYWlzZSBCYWRQYXJhbWV0ZXJFeGNlcHRpb24oIkZpZWxkcyBtaXNzaW5nOiAlcyIgJSAiLCAiLmpvaW4obWlzc2luZykpCiAKLSAgICAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKToKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQ6CiAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBhdXRoZW50aWNhdGUodXNlcm5hbWUgPSByZXF1ZXN0LlBPU1QuZ2V0KCd1c2VybmFtZScsICdfYW5vbnVzZXInKSwgcGFzc3dvcmQgPSAnbm9wYXNzJykKICAgICAgICAgICAgICAgICAgICAgaWYgdXNlciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgdXNlciA9IFVzZXIub2JqZWN0cy5jcmVhdGVfdXNlcih1c2VybmFtZSA9IHJlcXVlc3QuUE9TVC5nZXQoJ3VzZXJuYW1lJywgJ19hbm9udXNlcicpLCBlbWFpbCA9IHJlcXVlc3QuUE9TVC5nZXQoJ2VtYWlsJywgJycpLCBwYXNzd29yZCA9ICJub3Bhc3MiKQpAQCAtMTQ0MSw4ICsxNDM4LDggQEAKICAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9cGlkKQogICAgICAgICB0ZW1wbGF0ZSA9ICJuZXdwcm9qZWN0X3NwZWNpZmljLmh0bWwiCiAgICAgICAgIGNvbnRleHQgPSB7Ci0gICAgICAgICAgICAnZW1haWwnOiByZXF1ZXN0LnVzZXIuZW1haWwgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKSBlbHNlICcnLAotICAgICAgICAgICAgJ3VzZXJuYW1lJzogcmVxdWVzdC51c2VyLnVzZXJuYW1lIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKKyAgICAgICAgICAgICdlbWFpbCc6IHJlcXVlc3QudXNlci5lbWFpbCBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCBlbHNlICcnLAorICAgICAgICAgICAgJ3VzZXJuYW1lJzogcmVxdWVzdC51c2VyLnVzZXJuYW1lIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkIGVsc2UgJycsCiAgICAgICAgICAgICAncmVsZWFzZXMnOiBSZWxlYXNlLm9iamVjdHMub3JkZXJfYnkoImRlc2NyaXB0aW9uIiksCiAgICAgICAgICAgICAncHJvamVjdG5hbWUnOiBwcm9qZWN0Lm5hbWUsCiAgICAgICAgICAgICAncHJvamVjdF9wayc6IHByb2plY3QucGssCkBAIC0xNDcyLDcgKzE0NjksNyBAQAogICAgICAgICAgICAgICAgICAgICAjIHNldCBhbGVydCBmb3IgbWlzc2luZyBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkUGFyYW1ldGVyRXhjZXB0aW9uKCJGaWVsZHMgbWlzc2luZzogJXMiICUgIiwgIi5qb2luKG1pc3NpbmcpKQogCi0gICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCk6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkOgogICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXV0aGVudGljYXRlKHVzZXJuYW1lID0gcmVxdWVzdC5QT1NULmdldCgndXNlcm5hbWUnLCAnX2Fub251c2VyJyksIHBhc3N3b3JkID0gJ25vcGFzcycpCiAgICAgICAgICAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuY3JlYXRlX3VzZXIodXNlcm5hbWUgPSByZXF1ZXN0LlBPU1QuZ2V0KCd1c2VybmFtZScsICdfYW5vbnVzZXInKSwgZW1haWwgPSByZXF1ZXN0LlBPU1QuZ2V0KCdlbWFpbCcsICcnKSwgcGFzc3dvcmQgPSAibm9wYXNzIikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5CmluZGV4IDY0NWY0NTguLmNlZmY1MjkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weQpAQCAtMjIsNyArMjIsNyBAQAogZnJvbSB0b2FzdGVyZ3VpLnRlbXBsYXRldGFncy5wcm9qZWN0dGFncyBpbXBvcnQgc2VjdG9obXMsIGdldF90YXNrcwogZnJvbSB0b2FzdGVyZ3VpLnRlbXBsYXRldGFncy5wcm9qZWN0dGFncyBpbXBvcnQganNvbiBhcyB0ZW1wbGF0ZV9qc29uCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBKc29uUmVzcG9uc2UKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiAKIGltcG9ydCB0eXBlcwogaW1wb3J0IGpzb24KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRkZWxldGUucHkKaW5kZXggYzJkNzczYS4uOTM5MTlkZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRkZWxldGUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRkZWxldGUucHkKQEAgLTIsMTIgKzIsMTAgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQsIENvbW1hbmRFcnJvcgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiBmcm9tIGRqYW5nby5jb3JlLmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdERvZXNOb3RFeGlzdAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCdWlsZAogZnJvbSBkamFuZ28uZGIgaW1wb3J0IE9wZXJhdGlvbmFsRXJyb3IKLWltcG9ydCBvcwotCiAKIAogY2xhc3MgQ29tbWFuZChCYXNlQ29tbWFuZCk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkaW1wb3J0LnB5CmluZGV4IDQwOGFkNDQuLjU5ZGE2ZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkaW1wb3J0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkaW1wb3J0LnB5CkBAIC0zMSwxMiArMzEsMTAgQEAKIAogIyAuLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBidWlsZGltcG9ydCAtLW5hbWU9dGVzdCAtLXBhdGg9YHB3ZGAgLS1jYWxsYmFjaz0iIiAtLWNvbW1hbmQ9aW1wb3J0CiAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCi1mcm9tIGRqYW5nby5jb3JlLmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdERvZXNOb3RFeGlzdAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0TWFuYWdlciwgUHJvamVjdCwgUmVsZWFzZSwgUHJvamVjdFZhcmlhYmxlCitmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQKK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUmVsZWFzZSwgUHJvamVjdFZhcmlhYmxlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyLCBMYXllcl9WZXJzaW9uLCBMYXllclNvdXJjZSwgUHJvamVjdExheWVyCiBmcm9tIHRvYXN0ZXJndWkuYXBpIGltcG9ydCBzY2FuX2xheWVyX2NvbnRlbnQKLWZyb20gZGphbmdvLmRiIGltcG9ydCBPcGVyYXRpb25hbEVycm9yCiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC0xMTYsNiArMTE0LDE1IEBACiAgICAgICAgICAgICBoZWxwPSdjb21tYW5kIChjb25maWd1cmUscmVjb25maWd1cmUsaW1wb3J0KScsCiAgICAgICAgICAgICApCiAKKyAgICBkZWYgZ2V0X3ZhcihzZWxmLCB2YXJuYW1lKToKKyAgICAgICAgdmFsdWUgPSBzZWxmLnZhcnMuZ2V0KHZhcm5hbWUsICcnKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIHZhcnJlZnMgPSByZS5maW5kYWxsKCdcJHsoW159XSopfScsIHZhbHVlKQorICAgICAgICAgICAgZm9yIHJlZiBpbiB2YXJyZWZzOgorICAgICAgICAgICAgICAgIGlmIHJlZiBpbiBzZWxmLnZhcnM6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJHslc30nICUgcmVmLCBzZWxmLnZhcnNbcmVmXSkKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKICAgICAjIEV4dHJhY3QgdGhlIGJiIHZhcmlhYmxlcyBmcm9tIGEgY29uZiBmaWxlCiAgICAgZGVmIHNjYW5fY29uZihzZWxmLGZuKToKICAgICAgICAgdmFycyA9IHNlbGYudmFycwpAQCAtMjQzLDcgKzI1MCw3IEBACiAgICAgIyBBcHBseSB0YWJsZSBvZiBhbGwgbGF5ZXIgdmVyc2lvbnMKICAgICBkZWYgZXh0cmFjdF9iYmxheWVycyhzZWxmKToKICAgICAgICAgIyBzZXQgdXAgdGhlIGNvbnN0YW50cwotICAgICAgICBiYmxheWVyX3N0ciA9IHNlbGYudmFyc1snQkJMQVlFUlMnXQorICAgICAgICBiYmxheWVyX3N0ciA9IHNlbGYuZ2V0X3ZhcignQkJMQVlFUlMnKQogICAgICAgICBUT0FTVEVSX0RJUiA9IG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0RJUicpCiAgICAgICAgIElOU1RBTExfQ0xPTkVfUFJFRklYID0gb3MucGF0aC5kaXJuYW1lKFRPQVNURVJfRElSKSArICIvIgogICAgICAgICBUT0FTVEVSX0NMT05FX1BSRUZJWCA9IFRPQVNURVJfRElSICsgIi9fdG9hc3Rlcl9jbG9uZXMvIgpAQCAtNDIzLDYgKzQzMCw3IEBACiAKICAgICAjIFNjYW4gdGhlIHByb2plY3QncyBjb25mIGZpbGVzIChpZiBhbnkpCiAgICAgZGVmIHNjYW5fY29uZl92YXJpYWJsZXMoc2VsZixwcm9qZWN0X3BhdGgpOgorICAgICAgICBzZWxmLnZhcnNbJ1RPUERJUiddID0gcHJvamVjdF9wYXRoCiAgICAgICAgICMgc2NhbiB0aGUgcHJvamVjdCdzIHNldHRpbmdzLCBhZGQgYW55IG5ldyBsYXllcnMgb3IgdmFyaWFibGVzCiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKCIlcy9jb25mL2xvY2FsLmNvbmYiICUgcHJvamVjdF9wYXRoKToKICAgICAgICAgICAgIHNlbGYuc2Nhbl9jb25mKCIlcy9jb25mL2xvY2FsLmNvbmYiICUgcHJvamVjdF9wYXRoKQpAQCAtNDY4LDcgKzQ3Niw2IEBACiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbmFtZSA9ICdOb25lJyBpZiBub3QgcGwubGF5ZXJjb21taXQucmVsZWFzZSBlbHNlIHBsLmxheWVyY29tbWl0LnJlbGVhc2UubmFtZQogICAgICAgICAgICAgICAgICAgICBwcmludCgiIEFGVEVSIDpQcm9qZWN0TGF5ZXI9JXMsJXMsJXMsJXMiICUgKHBsLmxheWVyY29tbWl0LmxheWVyLm5hbWUscmVsZWFzZV9uYW1lLHBsLmxheWVyY29tbWl0LmJyYW5jaCxwbC5sYXllcmNvbW1pdC5jb21taXQpKQogCi0KICAgICBkZWYgaGFuZGxlKHNlbGYsICphcmdzLCAqKm9wdGlvbnMpOgogICAgICAgICBwcm9qZWN0X25hbWUgPSBvcHRpb25zWyduYW1lJ10KICAgICAgICAgcHJvamVjdF9wYXRoID0gb3B0aW9uc1sncGF0aCddCkBAIC01MDcsNyArNTE0LDcgQEAKICAgICAgICAgZGVmYXVsdF9yZWxlYXNlID0gUmVsZWFzZS5vYmplY3RzLmdldChpZD0xKQogCiAgICAgICAgICMgU0FOSVRZOiBpZiAncmVjb25maWcnIGJ1dCBwcm9qZWN0IGRvZXMgbm90IGV4aXN0IChkZWxldGVkIGV4dGVybmFsbHkpLCBzd2l0Y2ggdG8gJ2ltcG9ydCcKLSAgICAgICAgaWYgKCJyZWNvbmZpZ3VyZSIgPT0gb3B0aW9uc1snY29tbWFuZCddKSBhbmQgKE5vbmUgPT0gcHJvamVjdCk6CisgICAgICAgIGlmICgicmVjb25maWd1cmUiID09IG9wdGlvbnNbJ2NvbW1hbmQnXSkgYW5kIHByb2plY3QgaXMgTm9uZToKICAgICAgICAgICAgIG9wdGlvbnNbJ2NvbW1hbmQnXSA9ICdpbXBvcnQnCiAKICAgICAgICAgIyAnQ29uZmlndXJlJzoKQEAgLTU1Myw2ICs1NjAsNyBAQAogICAgICAgICAgICAgIyBwcmVzZXQgdGhlIG1vZGUgYW5kIGRlZmF1bHQgaW1hZ2UgcmVjaXBlCiAgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfSVNORVcsUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX05FVykKICAgICAgICAgICAgIHByb2plY3Quc2V0X3ZhcmlhYmxlKFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19ERUZBVUxUSU1BR0UsImNvcmUtaW1hZ2UtbWluaW1hbCIpCisKICAgICAgICAgICAgICMgQXNzZXJ0IGFueSBleHRlbmRlZC9jdXN0b20gYWN0aW9ucyBvciB2YXJpYWJsZXMgZm9yIG5ldyBub24tVG9hc3RlciBwcm9qZWN0cwogICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLnRvYXN0ZXJfdmFycyk6CiAgICAgICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkKaW5kZXggMWVkMjAyMi4uM2FkNTI4OSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZHNsaXN0LnB5CkBAIC0yLDkgKzIsOCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCitmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQnVpbGQKLWltcG9ydCBvcwogCiAKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5CmluZGV4IDc0NTAxZmEuLmE0YjM3MGMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vc2V0dGluZ3MucHkKQEAgLTE4OSwxNSArMTg5LDE2IEBACiAgICAgfSwKIF0KIAotTUlERExFV0FSRV9DTEFTU0VTID0gKAorTUlERExFV0FSRSA9IFsKICAgICAnZGphbmdvLm1pZGRsZXdhcmUuY29tbW9uLkNvbW1vbk1pZGRsZXdhcmUnLAogICAgICdkamFuZ28uY29udHJpYi5zZXNzaW9ucy5taWRkbGV3YXJlLlNlc3Npb25NaWRkbGV3YXJlJywKICAgICAnZGphbmdvLm1pZGRsZXdhcmUuY3NyZi5Dc3JmVmlld01pZGRsZXdhcmUnLAogICAgICdkamFuZ28uY29udHJpYi5hdXRoLm1pZGRsZXdhcmUuQXV0aGVudGljYXRpb25NaWRkbGV3YXJlJywKICAgICAnZGphbmdvLmNvbnRyaWIubWVzc2FnZXMubWlkZGxld2FyZS5NZXNzYWdlTWlkZGxld2FyZScsCi0gICAgIyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSBmb3Igc2ltcGxlIGNsaWNramFja2luZyBwcm90ZWN0aW9uOgotICAgICMgJ2RqYW5nby5taWRkbGV3YXJlLmNsaWNramFja2luZy5YRnJhbWVPcHRpb25zTWlkZGxld2FyZScsCi0pCisgICAgJ2RqYW5nby5jb250cmliLmF1dGgubWlkZGxld2FyZS5BdXRoZW50aWNhdGlvbk1pZGRsZXdhcmUnLAorICAgICdkamFuZ28uY29udHJpYi5tZXNzYWdlcy5taWRkbGV3YXJlLk1lc3NhZ2VNaWRkbGV3YXJlJywKKyAgICAnZGphbmdvLmNvbnRyaWIuc2Vzc2lvbnMubWlkZGxld2FyZS5TZXNzaW9uTWlkZGxld2FyZScsCitdCiAKIENBQ0hFUyA9IHsKICAgICAjICAgICAgICAnZGVmYXVsdCc6IHsKQEAgLTI0OCw3ICsyNDksNyBAQAogaWYgb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfREVWRUwnLCBOb25lKSBpcyBub3QgTm9uZToKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCBmcmVzaAotICAgICAgICBNSURETEVXQVJFX0NMQVNTRVMgPSAoImZyZXNoLm1pZGRsZXdhcmUuRnJlc2hNaWRkbGV3YXJlIiwpICsgTUlERExFV0FSRV9DTEFTU0VTCisgICAgICAgIE1JRERMRVdBUkUgPSBbImZyZXNoLm1pZGRsZXdhcmUuRnJlc2hNaWRkbGV3YXJlIixdICsgTUlERExFV0FSRQogICAgICAgICBJTlNUQUxMRURfQVBQUyA9IElOU1RBTExFRF9BUFBTICsgKCdmcmVzaCcsKQogICAgICAgICBGUkVTSF9FTkFCTEVEID0gVHJ1ZQogICAgIGV4Y2VwdDoKQEAgLTI1OCw4ICsyNTksOCBAQAogaWYgb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfREVWRUwnLCBOb25lKSBpcyBub3QgTm9uZToKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCBkZWJ1Z190b29sYmFyLCBkZWJ1Z19wYW5lbAotICAgICAgICBNSURETEVXQVJFX0NMQVNTRVMgPSAoJ2RlYnVnX3BhbmVsLm1pZGRsZXdhcmUuRGVidWdQYW5lbE1pZGRsZXdhcmUnLCkgKyBNSURETEVXQVJFX0NMQVNTRVMKLSAgICAgICAgI01JRERMRVdBUkVfQ0xBU1NFUyA9IE1JRERMRVdBUkVfQ0xBU1NFUyArICgnZGVidWdfdG9vbGJhci5taWRkbGV3YXJlLkRlYnVnVG9vbGJhck1pZGRsZXdhcmUnLCkKKyAgICAgICAgTUlERExFV0FSRSA9IFsnZGVidWdfcGFuZWwubWlkZGxld2FyZS5EZWJ1Z1BhbmVsTWlkZGxld2FyZScsXSArIE1JRERMRVdBUkUKKyAgICAgICAgI01JRERMRVdBUkUgPSBNSURETEVXQVJFICsgWydkZWJ1Z190b29sYmFyLm1pZGRsZXdhcmUuRGVidWdUb29sYmFyTWlkZGxld2FyZScsXQogICAgICAgICBJTlNUQUxMRURfQVBQUyA9IElOU1RBTExFRF9BUFBTICsgKCdkZWJ1Z190b29sYmFyJywnZGVidWdfcGFuZWwnLCkKICAgICAgICAgREVCVUdfUEFORUxfRU5BQkxFRCA9IFRydWUKIApAQCAtMzUyLDUgKzM1MywzIEBACiBjb25uZWN0aW9uX2NyZWF0ZWQuY29ubmVjdChhY3RpdmF0ZV9zeW5jaHJvbm91c19vZmYpCiAjCiAKLQotCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CmluZGV4IGFjNzdiYzMuLjVmYjUyMGIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKIHVybHBhdHRlcm5zID0gWwogICAgICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gZW5hYmxlIHRoZSBhZG1pbjoKLSAgICB1cmwocideYWRtaW4vJywgaW5jbHVkZShhZG1pbi5zaXRlLnVybHMpKSwKKyAgICB1cmwocideYWRtaW4vJywgYWRtaW4uc2l0ZS51cmxzKSwKIF0gKyB1cmxwYXR0ZXJucwogCiAjIEF1dG9tYXRpY2FsbHkgZGlzY292ZXIgdXJscy5weSBpbiB2YXJpb3VzIGFwcHMsIGJlc2lkZSBvdXIgb3duCkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgdGhpcyBtb2R1bGUgbmFtZSBpbgogICAgICAgICBjb25mbGljdCA9IEZhbHNlCiAgICAgICAgIGZvciBwIGluIHVybHBhdHRlcm5zOgotICAgICAgICAgICAgaWYgcC5yZWdleC5wYXR0ZXJuID09ICdeJyArIG1vZHVsZW5hbWUgKyAnLyc6CisgICAgICAgICAgICBpZiBwLnBhdHRlcm4ucmVnZXgucGF0dGVybiA9PSAnXicgKyBtb2R1bGVuYW1lICsgJy8nOgogICAgICAgICAgICAgICAgIGNvbmZsaWN0ID0gVHJ1ZQogICAgICAgICBpZiBub3QgY29uZmxpY3Q6CiAgICAgICAgICAgICB1cmxwYXR0ZXJucy5pbnNlcnQoMCwgdXJsKHInXicgKyBtb2R1bGVuYW1lICsgJy8nLCBpbmNsdWRlICggbW9kdWxlbmFtZSArICcudXJscycpKSkKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZSBiL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQppbmRleCA1MjVhNzMwLi4xNTY0NGJmIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlCkBAIC03Niw2ICs3NiwxMSBAQAogIyBleGFtcGxlIHB1Ymxpc2hlcyB0aGUgMS4yIHZlcnNpb24gb2YgdGhlIFBERiBhbmQgSFRNTCBZUCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICMgZm9yIHRoZSAnZGVuemlsJyBicmFuY2guCiAjCisjIElOIE1FTU9SSUFNOiBUaGlzIGNvbW1lbnQgaXMgdG8gcmVtZW1iZXIgU2NvdHQgUmlmZW5iYXJrIChzY290dHJpZiksIHdob20gd2UgbG9zdAorIyBpbiBKYW51YXJ5LCAyMDIwLiBTY290dCB3YXMgdGhlIHByaW1hcnkgdGVjaG5pY2FsIHdyaXRlciBmb3IgdGhlIFlvY3RvIFByb2plY3QgZm9yCisjIG92ZXIgOSB5ZWFycy4gSW4gdGhhdCB0aW1lLCBoZSBjb250cmlidXRlZCBtYW55IHRob3VzYW5kcyBvZiBwYXRjaGVzLCBidWlsdCB0aGlzCisjIGRvY3VtZW50YXRpb24gdHJlZSwgYW5kIGVuYWJsZWQgdGVucyBvZiB0aG91c2FuZHMgb2YgZGV2ZWxvcGVycyB0byBzdWNjZWVkIHdpdGgKKyMgZW1iZWRkZWQgTGludXguIEhlIHJhbiB0aGlzIE1ha2VmaWxlIG1hbnkgdGhvdXNhbmRzIG9mIHRpbWVzLiBHb2RzcGVlZCwgRHVkZS4KIAogaWZlcSAoJChET0MpLGJyaWVmLXlvY3RvcHJvamVjdHFzKQogWFNMVE9QVFMgPSAtLXN0cmluZ3BhcmFtIGh0bWwuc3R5bGVzaGVldCBicmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MgXApAQCAtNDE0LDggKzQxOSw4IEBACiAgICAgICAgICAgICBlY2hvICIgIjsgXAogICAgICAgICAgICAgZWNobyAiKioqKioqKiogUHVibGlzaGluZyAiJChET0MpIi5odG1sIjsgXAogICAgICAgICAgICAgZWNobyAiICI7IFwKLSAgICAgICAgICAgIHNjcCAtciAkKE1BTlVBTFMpICQoU1RZTEVTSEVFVCkgZG9jcy55cDovdmFyL3d3dy93d3cueW9jdG9wcm9qZWN0Lm9yZy1kb2NzLyQoVkVSKS8kKERPQyk7IFwKLSAgICAgICAgICAgIGNkICQoRE9DKTsgc2NwIC1yICQoRklHVVJFUykgZG9jcy55cDovdmFyL3d3dy93d3cueW9jdG9wcm9qZWN0Lm9yZy1kb2NzLyQoVkVSKS8kKERPQyk7IFwKKyAgICAgICAgICAgIHNjcCAtciAkKE1BTlVBTFMpICQoU1RZTEVTSEVFVCkgd3d3LnlvY3RvcHJvamVjdC5vcmc6L3Zhci93d3cvd3d3LnlvY3RvcHJvamVjdC5vcmctZG9jcy8kKFZFUikvJChET0MpOyBcCisgICAgICAgICAgICBjZCAkKERPQyk7IHNjcCAtciAkKEZJR1VSRVMpIHd3dy55b2N0b3Byb2plY3Qub3JnOi92YXIvd3d3L3d3dy55b2N0b3Byb2plY3Qub3JnLWRvY3MvJChWRVIpLyQoRE9DKTsgXAogCWVsc2UgXAogICAgICAgICAgIGVjaG8gIiAiOyBcCiAgICAgICAgICAgZWNobyAkKERPQykiLmh0bWwgbWlzc2luZy4gIEdlbmVyYXRlIHRoZSBmaWxlIGZpcnN0IHRoZW4gdHJ5IGFnYWluLiI7IFwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sCmluZGV4IDFkYWViMjUuLjNjODNhZmQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbApAQCAtNTUsMTAgKzU1LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSBhIGJ1aWxkIGhvc3QgdGhhdCBpcyB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbmRvd3NfU3Vic3lzdGVtX2Zvcl9MaW51eCc+V2luZG93cyBTdWJzeXN0ZW0gZm9yIExpbnV4PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIChXU0wpLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0wuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWF5IHVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggdjIgdG8gc2V0IHVwIGEgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgdXNpbmcgV2luZG93cyAxMC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdTTHYxLCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlIGJ1dCBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgbm9yIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFdTTHYyLCBpZiB5b3Ugc3RpbGwgZGVjaWRlIHRvIHVzZSBXU0wgcGxlYXNlIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gV1NMdjIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS13c2wnPlNldHRpbmcgVXAgdG8gVXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L25vdGU+CkBAIC05OSwxNyArMTA3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI3IG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yOCBvciBncmVhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2MgNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaG9zdCBkb2VzIG5vdCBtZWV0IGFueSBvZiB0aGVzZSB0aHJlZSBsaXN0ZWQKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudHMsIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBwcmVwYXJlIHRoZQogICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc28gdGhhdCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0yNjYsNyArMjc3LDcgQEAKICAgICAgICAgIG1ldGEtdG9vbGNoYWluCiAgICAgICAgICBtZXRhLWlkZS1zdXBwb3J0CiAKLSAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2JworICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYtNjQnCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgc2NyaXB0IGNyZWF0ZXMgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCkBAIC0zMzIsNyArMzQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgUUVNVSwgd2hpY2ggaXMgYSBRdWljayBFTVVsYXRvciB0aGF0IHNoaXBzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Q6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYKKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsZWFybiBtb3JlIGFib3V0IHJ1bm5pbmcgUUVNVSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Ij5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkZDBjNzZhLi5hMTg5NjA2Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKQEAgLTIyLDMzICsyMiwyNyBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKICAgICAgICAgPHJldmhpc3Rvcnk+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4wLjk8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4yNCBOb3ZlbWJlciAyMDEwPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgZHJhZnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDEwPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT42IEFwcmlsIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4wLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4yMyBNYXkgMjAxMTwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4wLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT42IE9jdG9iZXIgMjAxMTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTE8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KQEAgLTcyLDExICs2Niw2IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE0PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNjwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTQ8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgpAQCAtMTMzLDkgKzEyMiwxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xNTcsNyArMTUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTE3NCwxOCArMTY4LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCmluZGV4IDU4ZjU3MzMuLjk2YzA0NTUgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKQEAgLTE5LDcgKzE5LDcgQEAKIDwvcGFyYT4KIAogPHBhcmE+Ci0gICAgVGhpcyBndWlkZSBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBCU1AgTGF5ZXJzLCBkZWZpbmVzIGEgc3RydWN0dXJlIGZvciBjb21wb25lbnRzCisgICAgVGhpcyBndWlkZSBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBCU1AgbGF5ZXJzLCBkZWZpbmVzIGEgc3RydWN0dXJlIGZvciBjb21wb25lbnRzCiAgICAgc28gdGhhdCBCU1BzIGZvbGxvdyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2QgbGF5b3V0LCBkaXNjdXNzZXMgaG93IHRvIGN1c3RvbWl6ZQogICAgIGEgcmVjaXBlIGZvciBhIEJTUCwgYWRkcmVzc2VzIEJTUCBsaWNlbnNpbmcsIGFuZCBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0CiAgICAgc2hvd3MgeW91IGhvdyB0byBjcmVhdGUgYQpAQCAtMzQsNyArMzQsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBBIEJTUCBjb25zaXN0cyBvZiBhIGZpbGUgc3RydWN0dXJlIGluc2lkZSBhIGJhc2UgZGlyZWN0b3J5LgogICAgICAgICBDb2xsZWN0aXZlbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGJhc2UgZGlyZWN0b3J5LCBpdHMgZmlsZSBzdHJ1Y3R1cmUsCi0gICAgICAgIGFuZCB0aGUgY29udGVudHMgYXMgYSBCU1AgTGF5ZXIuCisgICAgICAgIGFuZCB0aGUgY29udGVudHMgYXMgYSA8Zmlyc3R0ZXJtPkJTUCBsYXllcjwvZmlyc3R0ZXJtPi4KICAgICAgICAgQWx0aG91Z2ggbm90IGEgc3RyaWN0IHJlcXVpcmVtZW50LCBCU1AgbGF5ZXJzIGluIHRoZSBZb2N0byBQcm9qZWN0CiAgICAgICAgIHVzZSB0aGUgZm9sbG93aW5nIHdlbGwtZXN0YWJsaXNoZWQgbmFtaW5nIGNvbnZlbnRpb246CiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTY5LDkgKzY5LDkgQEAKICAgICAgICAgRWFjaCByZXBvc2l0b3J5IGlzIGEgQlNQIGxheWVyIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdAogICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IGFuZAogICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+KS4KLSAgICAgICAgRWFjaCBvZiB0aGVzZSBsYXllcnMgaXMgYSByZXBvc2l0b3J5IHVudG8gaXRzZWxmIGFuZCBjbGlja2luZyBvbiBhCi0gICAgICAgIGxheWVyIHJldmVhbHMgaW5mb3JtYXRpb24gdGhhdCBpbmNsdWRlcyB0d28gbGlua3MgZnJvbSB3aGljaCB5b3UgY2FuIGNob29zZQotICAgICAgICB0byBzZXQgdXAgYSBjbG9uZSBvZiB0aGUgbGF5ZXIncyByZXBvc2l0b3J5IG9uIHlvdXIgbG9jYWwgaG9zdCBzeXN0ZW0uCisgICAgICAgIEVhY2ggb2YgdGhlc2UgbGF5ZXJzIGlzIGEgcmVwb3NpdG9yeSB1bnRvIGl0c2VsZiBhbmQgY2xpY2tpbmcgb24KKyAgICAgICAgdGhlIGxheWVyIG5hbWUgZGlzcGxheXMgdHdvIFVSTHMgZnJvbSB3aGljaCB5b3UgY2FuCisgICAgICAgIGNsb25lIHRoZSBsYXllcidzIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBzeXN0ZW0uCiAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGNsb25lcyB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBsYXllcjoKICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLXJhc3BiZXJyeXBpCkBAIC04MywxMiArODMsMTMgQEAKICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gbGF5ZXIgaXMgcGFydCBvZiB0aGUKICAgICAgICAgc2hpcHBlZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCiAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBtYWludGFpbnMgc2V2ZXJhbAotICAgICAgICBCU1BzIHN1Y2ggYXMgdGhlIEJlYWdsZWJvbmUsIEVkZ2VSb3V0ZXIsIGFuZCBnZW5lcmljIHZlcnNpb25zIG9mCisgICAgICAgICJyZWZlcmVuY2UiIEJTUHMgaW5jbHVkaW5nIHRoZSBBUk0tYmFzZWQgQmVhZ2xlYm9uZSwgTUlQUy1iYXNlZAorICAgICAgICBFZGdlUm91dGVyLCBhbmQgZ2VuZXJpYyB2ZXJzaW9ucyBvZgogICAgICAgICBib3RoIDMyLWJpdCBhbmQgNjQtYml0IElBIG1hY2hpbmVzLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIEJTUCBkZXZlbG9wbWVudCB3b3JrZmxvdywgc2VlIHRoZQorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdHlwaWNhbCBCU1AgZGV2ZWxvcG1lbnQgd29ya2Zsb3csIHNlZSB0aGUKICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC9saW5rPiIKICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBhIGxvY2FsIGNvcHkgb2Ygc291cmNlIGZpbGVzCkBAIC05OCwxMiArOTksMTIgQEAKICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlIGxheWVyJ3MgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgVGhlIEJTUCBsYXllcidzIGJhc2UgZGlyZWN0b3J5CiAgICAgICAgICg8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4pCi0gICAgICAgIGlzIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgQlNQIExheWVyLgorICAgICAgICBpcyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhhdCBMYXllci4KICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgd2hhdCB5b3UgYWRkIHRvIHRoZQogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQorICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4geW91cgogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICB3aGljaCBpcyBlc3RhYmxpc2hlZCBhZnRlciB5b3UgcnVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgZW52aXJvbm1lbnQKICAgICAgICAgc2V0dXAgc2NyaXB0IChpLmUuCkBAIC0xNTMsNiArMTU0LDIwIEBACiAgICAgICAgIGxheWVyLgogICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtb3BlbmVtYmVkZGVkPC9maWxlbmFtZT4gbGF5ZXIgY29udGFpbnMKICAgICAgICAgbWFueSA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4gbGF5ZXJzLgorICAgICAgICBJbiBjYXNlcyBsaWtlIHRoaXMsIHlvdSBuZWVkIHRvIGluY2x1ZGUgdGhlIG5hbWVzIG9mIHRoZSBhY3R1YWwKKyAgICAgICAgbGF5ZXJzIHlvdSB3YW50IHRvIHdvcmsgd2l0aCwgc3VjaCBhczoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQkxBWUVSUyA/PSAiIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLXBva3kgXAorICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEteW9jdG8tYnNwIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLW15bGF5ZXIgXAorICAgICAgIC4uLi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lIFwKKyAgICAgICAuLi4vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsIFwKKyAgICAgICAuLi4vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nIFwKKyAgICAgICAiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICBhbmQgc28gb24uCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0zNTEsMjUgKzM2NiwyNCBAQAogICAgICAgICBsYXllciBjb21iaW5lZCB3aXRoIGEgYnVpbGQgc3lzdGVtIGFuZCBvdGhlciB0b29scy4KICAgICAgICAgUmVhbGl6ZSB0aGF0IGl0IGlzIGltcG9ydGFudCB0byBtYWludGFpbiB0aGUgZGlzdGluY3Rpb24KICAgICAgICAgdGhhdCB0aGUgQlNQIGxheWVyLCBhIGJ1aWxkIHN5c3RlbSwgYW5kIHRvb2xzIGFyZQotICAgICAgICBzZXBhcmF0ZSBjb21wb25lbnRzIHRoYXQgY291bGQgdG8gYmUgY29tYmluZWQgaW4KKyAgICAgICAgc2VwYXJhdGUgY29tcG9uZW50cyB0aGF0IGNvdWxkIGJlIGNvbWJpbmVkIGluCiAgICAgICAgIGNlcnRhaW4gZW5kIHByb2R1Y3RzLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBCZWZvcmUgbG9va2luZyBhdCB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQotICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBzb21lCisgICAgICAgIEJlZm9yZSBsb29raW5nIGF0IHRoZSByZWNvbW1lbmRlZCBmb3JtIGZvciB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZQorICAgICAgICBpbnNpZGUgYSBCU1AgbGF5ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBzb21lCiAgICAgICAgIHJlcXVpcmVtZW50cyBkbyBleGlzdCBpbiBvcmRlciBmb3IgYSBCU1AgbGF5ZXIgdG8KLSAgICAgICAgYmUgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgYmUgY29uc2lkZXJlZCA8Zmlyc3R0ZXJtPmNvbXBsaWFudDwvZmlyc3R0ZXJtPiB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICBGb3IgdGhhdCBsaXN0IG9mIHJlcXVpcmVtZW50cywgc2VlIHRoZQogICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVsZWFzZWQtYnNwLXJlcXVpcmVtZW50cyc+UmVsZWFzZWQgQlNQIFJlcXVpcmVtZW50czwvbGluaz4iCiAgICAgICAgIHNlY3Rpb24uCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEJlbG93IGlzIHRoZSBjb21tb24gZm9ybSBmb3IgdGhlIGZpbGUgc3RydWN0dXJlCi0gICAgICAgIGluc2lkZSBhIEJTUCBMYXllci4KKyAgICAgICAgQmVsb3cgaXMgdGhlIHR5cGljYWwgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgYSBCU1AgbGF5ZXIuCiAgICAgICAgIFdoaWxlIHRoaXMgYmFzaWMgZm9ybSByZXByZXNlbnRzIHRoZSBzdGFuZGFyZCwKLSAgICAgICAgcmVhbGl6ZSB0aGF0IHRoZSBhY3R1YWwgZmlsZSBzdHJ1Y3R1cmVzIGZvciBzcGVjaWZpYworICAgICAgICByZWFsaXplIHRoYXQgdGhlIGFjdHVhbCBsYXlvdXQgZm9yIGluZGl2aWR1YWwKICAgICAgICAgQlNQcyBjb3VsZCBkaWZmZXIuCiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+LwpAQCAtNTY3LDcgKzU4MSw3IEBACiAgICAgICAgICAgICBmb3IgdGhlIEJTUC4KICAgICAgICAgICAgIFRoZSB0eXBlIG9yIHR5cGVzIG9mIGZpbGVzIGhlcmUgY2FuIHZhcnkgZGVwZW5kaW5nCiAgICAgICAgICAgICBvbiB0aGUgbGljZW5zaW5nIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBhbGwgbGljZW5zaW5nCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AsIGFsbCBsaWNlbnNpbmcKICAgICAgICAgICAgIHJlcXVpcmVtZW50cyBhcmUgaGFuZGxlZCB3aXRoIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT4gZmlsZS4KICAgICAgICAgPC9wYXJhPgpAQCAtODAyLDcgKzgxNiw3IEBACiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgbWFueSA8ZmlsZW5hbWU+dHVuZS0qPC9maWxlbmFtZT4gZmlsZXMKICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT50dW5lLWFybTExMzZqZi1zLmluYzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPnR1bi0xNTg2LW5scC5pbmM8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgPGZpbGVuYW1lPnR1bmUtMTU4Ni1ubHAuaW5jPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkKICAgICAgICAgICAgIHJlc2lkZSBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgZGlyZWN0b3J5LgpAQCAtODM0LDcgKzg0OCw3IEBACiAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGRpcmVjdG9yeSBjb250YWlucyBtaXNjZWxsYW5lb3VzIHJlY2lwZQogICAgICAgICAgICAgZmlsZXMgZm9yIHRoZSBCU1AuCiAgICAgICAgICAgICBNb3N0IG5vdGFibHkgd291bGQgYmUgdGhlIGZvcm1mYWN0b3IgZmlsZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgdGhlcmUgaXMgdGhlCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AsIHRoZXJlIGlzIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSwKICAgICAgICAgICAgIHdoaWNoIGlzIGFuIGFwcGVuZCBmaWxlIHVzZWQgdG8gYXVnbWVudCB0aGUgcmVjaXBlCiAgICAgICAgICAgICB0aGF0IHN0YXJ0cyB0aGUgYnVpbGQuCkBAIC05MDEsNyArOTE1LDcgQEAKICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ki5iYjwvZmlsZW5hbWU+IGZpbGVzIHdvdWxkIGJlIGEKICAgICAgICAgICAgIGRldmVsb3Blci1zdXBwbGllZCBrZXJuZWwgcmVjaXBlLgogICAgICAgICAgICAgVGhpcyBhcmVhIG9mIHRoZSBCU1AgaGllcmFyY2h5IGNhbiBjb250YWluIGJvdGggdGhlc2UKLSAgICAgICAgICAgIHR5cGVzIG9mIGZpbGVzLCBhbHRob3VnaCBpbiBwcmFjdGljZSwgaXQgaXMgbGlrZWx5IHRoYXQKKyAgICAgICAgICAgIHR5cGVzIG9mIGZpbGVzIGFsdGhvdWdoLCBpbiBwcmFjdGljZSwgaXQgaXMgbGlrZWx5IHRoYXQKICAgICAgICAgICAgIHlvdSB3b3VsZCBoYXZlIG9uZSBvciB0aGUgb3RoZXIuCiAgICAgICAgIDwvcGFyYT4KIApAQCAtOTc2LDcgKzk5MCw3IEBACiAgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgaGlnaC1sZXZlbCBwcm9jZWR1cmUgeW91IGNhbgorICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBoaWdoLWxldmVsIHByb2NlZHVyZSB5b3UgY2FuCiAgICAgICAgIGZvbGxvdyB0byBjcmVhdGUgYSBCU1AuCiAgICAgICAgIEFsdGhvdWdoIG5vdCByZXF1aXJlZCBmb3IgQlNQIGNyZWF0aW9uLCB0aGUKICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB3aGljaApAQCAtMTA3NSwxMCArMTA4OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmJlYWdsZWJvbmUteW9jdG88L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlc2NhbGUgTVBDODMxNUUtUkRCCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm1wYzgzMTVlLXJkYjwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmVkZ2Vyb3V0ZXI8L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0xMzAyLDcgKzEzMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBTb3VyY2UgRGlyZWN0b3J5ICg8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIG1ha2Ugc3VyZSB5b3UgcGxhY2UgcmVsYXRlZAotICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiBhcHByb3ByaWF0ZWx5IHJlbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gYXBwcm9wcmlhdGVseS1yZWxhdGVkCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcmllcwogICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgcmVjaXBlJ3MgZnVuY3Rpb24sIG9yIHdpdGhpbgogICAgICAgICAgICAgICAgICAgICBhIHN1YmRpcmVjdG9yeSBjb250YWluaW5nIGEgc2V0IG9mIGNsb3NlbHktcmVsYXRlZApAQCAtMTMxOSw3ICsxMzI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBUaGlzIGxpY2Vuc2UgY292ZXJzIHRoZSBCU1AgTWV0YWRhdGEgYXMgYSB3aG9sZS4KICAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3BlY2lmeSB3aGljaCBsaWNlbnNlIHRvIHVzZSBzaW5jZSBubwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGxpY2Vuc2UgZXhpc3RzIHdoZW4gb25lIG5vdCBzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgbGljZW5zZSBleGlzdHMgd2hlbiBvbmUgaXMgbm90IHNwZWNpZmllZC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvbWV0YS1yYXNwYmVycnlwaS90cmVlL0NPUFlJTkcuTUlUJz48ZmlsZW5hbWU+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZQpAQCAtMTM0MiwxMiArMTM1MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlIHNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgdGFyZ2V0IGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIGEgQlNQIGxheWVyIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGFsbCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBCU1AuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSB0eXBpY2FsbHkgYSBsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgcmVxdWlyZWQgbGF5ZXJzIG5lZWRlZCB0byBidWlsZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AuCkBAIC0xNjEwLDcgKzE2MTgsNyBAQAogICAgIDx0aXRsZT5CU1AgTGljZW5zaW5nIENvbnNpZGVyYXRpb25zPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBJbiBzb21lIGNhc2VzLCBhIEJTUCBjb250YWlucyBzZXBhcmF0ZWx5IGxpY2Vuc2VkCisgICAgICAgIEluIHNvbWUgY2FzZXMsIGEgQlNQIGNvbnRhaW5zIHNlcGFyYXRlbHktbGljZW5zZWQKICAgICAgICAgSW50ZWxsZWN0dWFsIFByb3BlcnR5IChJUCkgZm9yIGEgY29tcG9uZW50IG9yIGNvbXBvbmVudHMuCiAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGFyZSByZXF1aXJlZCB0byBhY2NlcHQgdGhlIHRlcm1zCiAgICAgICAgIG9mIGEgY29tbWVyY2lhbCBvciBvdGhlciB0eXBlIG9mIGxpY2Vuc2UgdGhhdCByZXF1aXJlcwpAQCAtMTYyMyw3ICsxNjMxLDcgQEAKICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgWW91IGNvdWxkIGZpbmQgdGhhdCBzb21lIHNlcGFyYXRlbHkgbGljZW5zZWQgY29tcG9uZW50cworICAgICAgICBZb3UgY291bGQgZmluZCB0aGF0IHNvbWUgc2VwYXJhdGVseS1saWNlbnNlZCBjb21wb25lbnRzCiAgICAgICAgIHRoYXQgYXJlIGVzc2VudGlhbCBmb3Igbm9ybWFsIG9wZXJhdGlvbiBvZiB0aGUgc3lzdGVtIG1pZ2h0CiAgICAgICAgIG5vdCBoYXZlIGFuIHVuZW5jdW1iZXJlZCAob3IgZnJlZSkgc3Vic3RpdHV0ZS4KICAgICAgICAgV2l0aG91dCB0aGVzZSBlc3NlbnRpYWwgY29tcG9uZW50cywgdGhlIHN5c3RlbSB3b3VsZCBiZQpAQCAtMTYzMSw3ICsxNjM5LDcgQEAKICAgICAgICAgVGhlbiBhZ2FpbiwgeW91IG1pZ2h0IGZpbmQgdGhhdCBvdGhlciBsaWNlbnNlZCBjb21wb25lbnRzCiAgICAgICAgIHRoYXQgYXJlIHNpbXBseSAnZ29vZC10by1oYXZlJyBvciBwdXJlbHkgZWxlY3RpdmUgZG8gaGF2ZQogICAgICAgICBhbiB1bmVuY3VtYmVyZWQsIGZyZWUgcmVwbGFjZW1lbnQgY29tcG9uZW50IHRoYXQgeW91IGNhbgotICAgICAgICB1c2UgcmF0aGVyIHRoYW4gYWdyZWVpbmcgdG8gdGhlIHNlcGFyYXRlbHkgbGljZW5zZWQKKyAgICAgICAgdXNlIHJhdGhlciB0aGFuIGFncmVlaW5nIHRvIHRoZSBzZXBhcmF0ZWx5LWxpY2Vuc2VkCiAgICAgICAgIGNvbXBvbmVudC4KICAgICAgICAgRXZlbiBmb3IgY29tcG9uZW50cyBlc3NlbnRpYWwgdG8gdGhlIHN5c3RlbSwgeW91IG1pZ2h0CiAgICAgICAgIGZpbmQgYW4gdW5lbmN1bWJlcmVkIGNvbXBvbmVudCB0aGF0IGlzIG5vdCBpZGVudGljYWwgYnV0CkBAIC0xNzQ0LDcgKzE3NTIsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdAogICAgICAgICBhdXRvbWF0ZXMgY3JlYXRpbmcgYSBCU1AgbGF5ZXIuCi0gICAgICAgIFdoYXQgbWFrZXMgYSBsYXllciBhICJCU1AgbGF5ZXIiLCBpcyB0aGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lCisgICAgICAgIFdoYXQgbWFrZXMgYSBsYXllciBhICJCU1AgbGF5ZXIiIGlzIHRoZSBwcmVzZW5jZSBvZiBhdCBsZWFzdCBvbmUgbWFjaGluZQogICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCiAgICAgICAgIEFkZGl0aW9uYWxseSwgYSBCU1AgbGF5ZXIgdXN1YWxseSBoYXMgYSBrZXJuZWwgcmVjaXBlCiAgICAgICAgIG9yIGFuIGFwcGVuZCBmaWxlIHRoYXQgbGV2ZXJhZ2VzIG9mZiBhbiBleGlzdGluZyBrZXJuZWwgcmVjaXBlLgpAQCAtMTg2OCwxMSArMTg3NiwxNCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgZXhpc3QgaW4gdGhlCisgICAgICAgICAgICBPbmUgb3IgbW9yZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgZXhpc3QgaW4gdGhlCiAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX2xheWVyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPgogICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSBsYXllcjoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTE8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmUyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICA8cmVwbGFjZWFibGU+YnNwX2xheWVyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lMzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgLi4uIG1vcmUgLi4uCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUKICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSc+QmVhZ2xlQm9uZSBhbmQgQmVhZ2xlQm9uZSBCbGFjayBkZXZlbG9wbWVudCBib2FyZHM8L3VsaW5rPgpAQCAtMTkyMyw4ICsxOTM0LDggQEAKICAgICAgSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LiR7VUJPT1RfU1VGRklYfSBNTE8gekltYWdlIGFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoZSB2YXJpYWJsZXMgdXNlZCB0byBjb25maWd1cmUgdGhlIG1hY2hpbmUgZGVmaW5lCi0gICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHByb3BlcnRpZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgbWFjaGluZS1kZXBlbmRlbnQgcGFja2FnZXMsIG1hY2hpbmUKKyAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgcHJvcGVydGllczsKKyAgICAgICAgICAgIGZvciBleGFtcGxlLCBtYWNoaW5lLWRlcGVuZGVudCBwYWNrYWdlcywgbWFjaGluZQogICAgICAgICAgICAgdHVuaW5ncywgdGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkLCBhbmQKICAgICAgICAgICAgIFUtQm9vdCBjb25maWd1cmF0aW9ucy4KICAgICAgICAgPC9wYXJhPgpAQCAtMTkzNSw3ICsxOTQ2LDcgQEAKICAgICAgICAgICAgIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgQmVhZ2xlQm9uZQogICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmRzLgogICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IG11Y2ggbW9yZSBjYW4gYmUgZGVmaW5lZCBhcyBwYXJ0IG9mCi0gICAgICAgICAgICBhIG1hY2hpbmVzIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIGEgbWFjaGluZSdzIGNvbmZpZ3VyYXRpb24gZmlsZS4KICAgICAgICAgICAgIEluIGdlbmVyYWwsIHlvdSBjYW4gbGVhcm4gYWJvdXQgcmVsYXRlZCB2YXJpYWJsZXMKICAgICAgICAgICAgIHRoYXQgdGhpcyBleGFtcGxlIGRvZXMgbm90IGhhdmUgYnkgbG9jYXRpbmcgdGhlCiAgICAgICAgICAgICB2YXJpYWJsZXMgaW4gdGhlCkBAIC0yMTgyLDcgKzIxOTMsNiBAQAogICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInY1LjAvc3RhbmRhcmQvYmFzZSIKICAgICAgS0JSQU5DSF9lZGdlcm91dGVyID0gInY1LjAvc3RhbmRhcmQvZWRnZXJvdXRlciIKICAgICAgS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY1LjAvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKLSAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAidjUuMC9zdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCiAgICAgIEtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKICAgICAgS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgpAQCAtMjE5MiwxOSArMjIwMiwxNiBAQAogICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIzZGY0YWFlNjA3NGU5NGU3OTRlMjdmZTdmMTc0NTFkOTM1M2NkZjNkIgogICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIzZGY0YWFlNjA3NGU5NGU3OTRlMjdmZTdmMTc0NTFkOTM1M2NkZjNkIgogICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICIzZGY0YWFlNjA3NGU5NGU3OTRlMjdmZTdmMTc0NTFkOTM1M2NkZjNkIgotICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjhiNjJhZjdmMjUyYWYxMDU4ODI3NjgwMmM0YzZkN2M1MDJlODc1YmUiCiAKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKLSAgICAgQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCiAKICAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuMC4zIgogICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNS4wLjMiCiAgICAgIExJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI1LjAuMyIKICAgICAgTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuMC4zIgotICAgICBMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI1LjAuMyIKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoaXMgcGFydGljdWxhciBhcHBlbmQgZmlsZSB3b3JrcyBmb3IgYWxsIHRoZQogICAgICAgICAgICAgbWFjaGluZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbAppbmRleCAwMDc0MWVlLi5lOWNlMTgyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCkBAIC0xODQsNiArMTg0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUkRFUEVORFMnPjxmaWxlbmFtZT5MQVlFUkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhbGwgbGF5ZXJzIG9uIHdoaWNoIHRoaXMgbGF5ZXIgZGVwZW5kcyAoaWYgYW55KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEFZRVJTRVJJRVNfQ09NUEFUJz48ZmlsZW5hbWU+TEFZRVJTRVJJRVNfQ09NUEFUPC9maWxlbmFtZT48L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CkBAIC0zMTUsMTIgKzMxOSwyNiBAQAogICAgICBERVBFTkRTX2FwcGVuZF9vbmUgPSAiIGZvbyIKICAgICAgREVQRU5EU19wcmVwZW5kX29uZSA9ICJmb28gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGFjdHVhbCBleGFtcGxlLCBoZXJlJ3MgYSBsaW5lIGZyb20gdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZ251dGxzLCB3aGljaCBhZGRzIGRlcGVuZGVuY2llcyBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncC1zdGFuZGFsb25lIiB3aGVuIGJ1aWxkaW5nIHdpdGggdGhlIG11c2wgQwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBhY3R1YWwgZXhhbXBsZSwgaGVyZSdzIGEgc25pcHBldCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljIGtlcm5lbCBpbmNsdWRlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLmluYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZWluIHRoZSBrZXJuZWwgY29tcGlsZSBhbmQgbGluayBvcHRpb25zIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZCBpbiB0aGUgY2FzZSBvZiBhIHN1YnNldCBvZiB0aGUgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisgICAgIERFUEVORFNfYXBwZW5kX2FhcmNoNjQgPSAiIGxpYmdjYyIKKyAgICAgS0VSTkVMX0NDX2FwcGVuZF9hYXJjaDY0ID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKyAgICAgS0VSTkVMX0xEX2FwcGVuZF9hYXJjaDY0ID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKworICAgICBERVBFTkRTX2FwcGVuZF9uaW9zMiA9ICIgbGliZ2NjIgorICAgICBLRVJORUxfQ0NfYXBwZW5kX25pb3MyID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKyAgICAgS0VSTkVMX0xEX2FwcGVuZF9uaW9zMiA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisKKyAgICAgREVQRU5EU19hcHBlbmRfYXJjID0gIiBsaWJnY2MiCisgICAgIEtFUk5FTF9DQ19hcHBlbmRfYXJjID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKyAgICAgS0VSTkVMX0xEX2FwcGVuZF9hcmMgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorCisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGZlYXR1cmVzL2RlYnVnL3ByaW50ay5zY2MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdm9pZGluZyAiKz0iIGFuZCAiPSsiIGFuZCB1c2luZwpAQCAtNTgwLDExICs1OTgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29tbW9uLnRlc3Rfd29ybGQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyB0aGF0IDxmaWxlbmFtZT5iaXRiYWtlIHdvcmxkPC9maWxlbmFtZT4gd29ya3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X3NpZ25hdHVyZXM8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyB0byBiZSBzdXJlIHRoYXQgQlNQIGFuZCBESVNUUk8gbGF5ZXJzIGRvIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWUgd2l0aCByZWNpcGVzIHRoYXQgY2hhbmdlIHNpZ25hdHVyZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X2xheWVyc2VyaWVzX2NvbXBhdDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWVzIGxheWVyIGNvbXBhdGliaWxpdHkgaXMgc2V0IHByb3Blcmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9ic3BfZGVmaW5lc19tYWNoaW5lczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RzIGlmIGEgQlNQIGxheWVyIGhhcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNTk0LDExICs2MjAsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHdoZW4gdGhlIGxheWVyIGlzIGFkZGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9tYWNoaW5lX3dvcmxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCA8ZmlsZW5hbWU+Yml0YmFrZSB3b3JsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3MgcmVnYXJkbGVzcyBvZiB3aGljaCBtYWNoaW5lIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9tYWNoaW5lX3NpZ25hdHVyZXM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyB0aGF0IGJ1aWxkaW5nIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZmVjdHMgb25seSB0aGUgc2lnbmF0dXJlIG9mIHRhc2tzIHNwZWNpZmljIHRvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0cm8udGVzdF9kaXN0cm9fZGVmaW5lc19kaXN0cm9zPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgaWYgYSBESVNUUk8gbGF5ZXIgaGFzIGRpc3RybyBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLnRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLnRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm9zPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gZW5zdXJlIGEgRElTVFJPIGxheWVyIGRvZXMgbm90IHNldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gd2hlbiB0aGUgbGF5ZXIgaXMgYWRkZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0xMzk3LDcgKzE0MzQsNyBAQAogICAgICAgICAgICAgICAgIHBhY2thZ2Ugc3BlY2lmaWVkIGluIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbmhlcml0IHBhY2thZ2VzPC9maWxlbmFtZT4gc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5oZXJpdCBwYWNrYWdlZ3JvdXA8L2ZpbGVuYW1lPiBsaW5lIHNob3VsZCBiZQogICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIG5lYXIgdGhlIHRvcCBvZiB0aGUgcmVjaXBlLCBjZXJ0YWlubHkgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQuCiAgICAgICAgICAgICAgICAgPC9ub3RlPgpAQCAtMTQxNywyOCArMTQ1NCwzMiBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2hvcnQsIGZhYnJpY2F0ZWQgZXhhbXBsZSBzaG93aW5nIHRoZSBzYW1lIGJhc2ljCi0gICAgICAgICAgICAgICAgcGllY2VzOgorICAgICAgICAgICAgICAgIHBpZWNlcyBmb3IgYSBoeXBvdGhldGljYWwgcGFja2FnZWdyb3VwIGRlZmluZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWN1c3RvbS5iYjwvZmlsZW5hbWU+LCB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPiBpcyB0aGUgc3RhbmRhcmQgd2F5IHRvCisgICAgICAgICAgICAgICAgYWJicmV2aWF0ZSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmdWxsIHBhY2thZ2Vncm91cCBuYW1lCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jdXN0b208L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIERFU0NSSVBUSU9OID0gIk15IEN1c3RvbSBQYWNrYWdlIEdyb3VwcyIKIAogICAgICBpbmhlcml0IHBhY2thZ2Vncm91cAogCiAgICAgIFBBQ0tBR0VTID0gIlwKLSAgICAgICAgIHBhY2thZ2Vncm91cC1jdXN0b20tYXBwcyBcCi0gICAgICAgICBwYWNrYWdlZ3JvdXAtY3VzdG9tLXRvb2xzIFwKKyAgICAgICAgICR7UE59LWFwcHMgXAorICAgICAgICAgJHtQTn0tdG9vbHMgXAogICAgICAgICAgIgogCi0gICAgIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jdXN0b20tYXBwcyA9ICJcCisgICAgIFJERVBFTkRTXyR7UE59LWFwcHMgPSAiXAogICAgICAgICAgZHJvcGJlYXIgXAogICAgICAgICAgcG9ydG1hcCBcCiAgICAgICAgICBwc3BsYXNoIgogCi0gICAgIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jdXN0b20tdG9vbHMgPSAiXAorICAgICBSREVQRU5EU18ke1BOfS10b29scyA9ICJcCiAgICAgICAgICBvcHJvZmlsZSBcCiAgICAgICAgICBvcHJvZmlsZXVpLXNlcnZlciBcCiAgICAgICAgICBsdHRuZy10b29scyIKIAotICAgICBSUkVDT01NRU5EU19wYWNrYWdlZ3JvdXAtY3VzdG9tLXRvb2xzID0gIlwKKyAgICAgUlJFQ09NTUVORFNfJHtQTn0tdG9vbHMgPSAiXAogICAgICAgICAga2VybmVsLW1vZHVsZS1vcHJvZmlsZSIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xOTAwLDkgKzE5NDEsOSBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUgaW4geW91ciByZWNpcGUgbXVzdAogICAgICAgICAgICAgICAgIGRlZmluZSBlYWNoIHVuaXF1ZSBsb2NhdGlvbiBmb3IgeW91ciBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgSXQgaXMgZ29vZCBwcmFjdGljZSB0byBub3QgaGFyZC1jb2RlIHBhdGhuYW1lcyBpbiBhbiBVUkwgdXNlZAorICAgICAgICAgICAgICAgIEl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gbm90IGhhcmQtY29kZSB2ZXJzaW9uIG51bWJlcnMgaW4gYSBVUkwgdXNlZAogICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gaGFyZC1jb2RlIHRoZXNlIHBhdGhzLCB1c2UKKyAgICAgICAgICAgICAgICBSYXRoZXIgdGhhbiBoYXJkLWNvZGUgdGhlc2UgdmFsdWVzLCB1c2UKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgd2hpY2ggY2F1c2VzIHRoZSBmZXRjaCBwcm9jZXNzIHRvIHVzZSB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4KICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGZpbGVuYW1lLgpAQCAtMTkxMywxMyArMTk1NCwxMyBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2ltcGxlIGV4YW1wbGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxYTIwLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICByZWNpcGUgd2hlcmUgdGhlIHNvdXJjZSBjb21lcyBmcm9tIGEgc2luZ2xlIHRhcmJhbGwuCiAgICAgICAgICAgICAgICAgTm90aWNlIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgdmFyaWFibGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gImZ0cDovL2Z0cC5iZXJsaW9zLmRlL3B1Yi9jZHJlY29yZC9hbHBoYS9jZHJ0b29scy0ke1BWfS50YXIuYnoyIgorICAgICBTUkNfVVJJID0gImh0dHBzOi8vc3RyYWNlLmlvL2ZpbGVzLyR7UFZ9L3N0cmFjZS0ke1BWfS50YXIueHogXAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTk3OCwxNiArMjAxOSwxNyBAQAogICAgICAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IHByb3ZpZGUgYSBuYW1lIGZvciBlYWNoIFVSTCBhcyBwYXJ0IG9mCiAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gYW5kIHRoZW4gcmVmZXJlbmNlIHRoYXQgbmFtZQogICAgICAgICAgICAgICAgIGluIHRoZSBzdWJzZXF1ZW50IGNoZWNrc3VtIHN0YXRlbWVudHMuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBjb21iaW5pbmcgbGluZXMgZnJvbSB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0LmluYzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRfMi4yNC4xLmJiPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2FwbWQvYXBtZF8zLjIuMi5vcmlnLnRhci5nejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICAgICAgICR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2FwbWQvYXBtZF8ke1BWfS5kaWZmLmd6O25hbWU9cGF0Y2giCisgICAgIFNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9zY20vZ2l0L2dpdC0ke1BWfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgICAgICAke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3NjbS9naXQvZ2l0LW1hbnBhZ2VzLSR7UFZ9LnRhci5nejtuYW1lPW1hbnBhZ2VzIgogCi0gICAgIFNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImIxZTYzMDllODMzMWUwZjRlNmVmZDMxMWMyZDk3ZmE4IgotICAgICBTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI3ZjdkOWY2MGI3NzY2Yjg1Mjg4MWQ0MGI4ZmY5MWQ4ZTM5ZmNjYjBkMWQ5MTMxMDJhNWM3NWEyZGJiNTIzMzJkIgotCi0gICAgIFNSQ19VUklbcGF0Y2gubWQ1c3VtXSA9ICI1N2UxYjY4OTI2NGVhODBmNzgzNTM1MTllZWNlMGM5MiIKLSAgICAgU1JDX1VSSVtwYXRjaC5zaGEyNTZzdW1dID0gIjc5MDVmZjk2YmU5M2Q3MjU1NDRkMDA0MGU0MjVjNDJmOWMwNTU4MGRiM2MyNzJmMTFjZmY3NWI5YWE4OWQ0MzAiCisgICAgIFNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjE2NmJkZTk2YWRiYmMxMWM4ODQzZDRmOGY0Zjk4MTFiIgorICAgICBTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJhZDUzMzQ5NTYzMDFjODY4NDFlYjFlNWIxYmIyMDg4NGE2YmFkODlhMTBhNjc2MmM5NTgyMjBjN2NmNjRkYTAyIgorICAgICBTUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMzFjMjI3MmE4OTc5MDIyNDk3YmEzZDQyMDJkZjE0NWQiCisgICAgIFNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICI5YTdhZTNhMDkzYmVhMzk3NzBlYjk2Y2EzZTViNDBiZmY3YWYwYjlmNjEyM2YwODlkNzgyMWQwZTViOGUxMjMwIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMzI0Miw4ICszMjg0LDYgQEAKICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGRlZmluZWQgaW4gdGhlIHBvc3QtaW5zdGFsbGF0aW9uIGZ1bmN0aW9uIGlzCiAgICAgICAgICAgICAgICAgY2FsbGVkIHdoZW4gdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkLgogICAgICAgICAgICAgICAgIElmIHRoZSBzY3JpcHQgc3VjY2VlZHMsIHRoZSBwYWNrYWdlIGlzIG1hcmtlZCBhcyBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgSWYgdGhlIHNjcmlwdCBmYWlscywgdGhlIHBhY2thZ2UgaXMgbWFya2VkIGFzIHVucGFja2VkIGFuZAotICAgICAgICAgICAgICAgIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgaW1hZ2UgYm9vdHMgYWdhaW4uCiAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgIEFueSBSUE0gcG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0IHRoYXQgcnVucyBvbiB0aGUgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByZXR1cm4gYSAwIGV4aXQgY29kZS4KQEAgLTMyNjIsNyArMzMwMiw3IEBACiAgICAgICAgICAgICAgICAgbWFyayBwb3N0IGluc3RhbGxzIHRvIGRlZmVyIHRvIHRoZSB0YXJnZXQuCiAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF9vbnRhcmdldCgpPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgICAgICBjYWxsCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0LWludGVyY2VwdHMgZGVmZXJfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIEFueSBmYWlsdXJlIG9mIGEgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4gc2NyaXB0CiAgICAgICAgICAgICAgICAgKGluY2x1ZGluZyBleGl0IDEpIHRyaWdnZXJzIGFuIGVycm9yIGR1cmluZyB0aGUKQEAgLTc2MDksNyArNzY0OSw2IEBACiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIFdpYyBpbWFnZXMgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIGxpc3QgaW1hZ2VzCi0gICAgICAgbXBjODMxNWUtcmRiICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgTVBDODMxNUUtUkRCCiAgICAgICAgZ2VuZXJpY3g4NiAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCiAgICAgICAgYmVhZ2xlYm9uZS15b2N0byAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgQmVhZ2xlYm9uZQogICAgICAgIGVkZ2Vyb3V0ZXIgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEVkZ2Vyb3V0ZXIKQEAgLTc3OTcsNyArNzgzNiw2IEBACiAgICAgICAgICAgICAgICAgZmlsZXM6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHdpYyBsaXN0IGltYWdlcwotICAgICAgIG1wYzgzMTVlLXJkYiAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIE1QQzgzMTVFLVJEQgogICAgICAgIGdlbmVyaWN4ODYgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgogICAgICAgIGJlYWdsZWJvbmUteW9jdG8gICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEJlYWdsZWJvbmUKICAgICAgICBlZGdlcm91dGVyICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBFZGdlcm91dGVyCkBAIC0xMDU1MCw3ICsxMDU4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gYW5kIHRoZSBOUE0gZmV0Y2hlciB0bwogICAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIHJlY2lwZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgYWRkICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jdXRlLWZpbGVzO3ZlcnNpb249MS4wLjIiCisgICAgICQgZGV2dG9vbCBhZGQgIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWN1dGUtZmlsZXM7dmVyc2lvbj0xLjAuMiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBydW5zCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sIGNyZWF0ZTwvZmlsZW5hbWU+IGFuZCB1c2VzIHRoZQpAQCAtMTA1NzUsMjUgKzEwNjEzLDEzIEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sPC9maWxlbmFtZT4gY3JlYXRlcyAic2hyaW5rd3JhcCIgYW5kCi0gICAgICAgICAgICAgICAgICAgICJsb2NrZG93biIgZmlsZXMgZm9yIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgYSAic2hyaW5rd3JhcCIgZmlsZQorICAgICAgICAgICAgICAgICAgICBmb3IgeW91ciByZWNpcGUuCiAgICAgICAgICAgICAgICAgICAgIFNocmlua3dyYXAgZmlsZXMgY2FwdHVyZSB0aGUgdmVyc2lvbiBvZiBhbGwgZGVwZW5kZW50CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMuCiAgICAgICAgICAgICAgICAgICAgIE1hbnkgcGFja2FnZXMgZG8gbm90IHByb3ZpZGUgc2hyaW5rd3JhcCBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBjcmVhdGUgYSBzaHJpbmt3cmFwCiAgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgaXQgcnVucy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZXBsYWNlIHRoZSBzaHJpbmt3cmFwIGZpbGUgd2l0aCB5b3VyIG93biBmaWxlCi0gICAgICAgICAgICAgICAgICAgIGJ5IHNldHRpbmcgdGhlIDxmaWxlbmFtZT5OUE1fU0hSSU5LV1JBUDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBMb2NrZG93biBmaWxlcyBjb250YWluIHRoZSBjaGVja3N1bSBmb3IgZWFjaCBtb2R1bGUKLSAgICAgICAgICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIHlvdXIgdXNlcnMgZG93bmxvYWQgdGhlIHNhbWUgZmlsZXMgd2hlbgotICAgICAgICAgICAgICAgICAgICBidWlsZGluZyB3aXRoIGEgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICBMb2NrZG93biBmaWxlcyBlbnN1cmUgdGhhdCBkZXBlbmRlbmNpZXMgaGF2ZSBub3QgYmVlbgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIGFuZCB0aGF0IHlvdXIgTlBNIHJlZ2lzdHJ5IGlzIHN0aWxsIHByb3ZpZGluZwotICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBmaWxlLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBjcmVhdGVkIGZvciBlYWNoIHN1Yi1tb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBvbGljeSBpcyB0aGUgb25seSBwcmFjdGljYWwgd2F5IHRvIGhhdmUgdGhlCkBAIC0xMDYwOCwyMyArMTA2MzQsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgZWRpdC1yZWNpcGUgY3V0ZS1maWxlcwogICAgICBTVU1NQVJZID0gIlR1cm4gYW55IGZvbGRlciBvbiB5b3VyIGNvbXB1dGVyIGludG8gYSBjdXRlIGZpbGUgYnJvd3NlciwgYXZhaWxhYmxlIG9uIHRoZSBsb2NhbCBuZXR3b3JrLiIKLSAgICAgTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJmFtcDsgVW5rbm93biAmYW1wOyBNSVQgJmFtcDsgSVNDIgorICAgICBMSUNFTlNFID0gIk1JVCAmYW1wOyBJU0MgJmFtcDsgVW5rbm93biIKICAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzFkOThjMGExZGI0Mjk1Njc4N2IxOTA5Yzc0YTg2Y2EgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub2RlX21vZHVsZXMvY29udGVudC1kaXNwb3NpdGlvbi9MSUNFTlNFO21kNT1jNmUwY2UxZTY4OGM1ZmYxNmRiMDZiNzI1OWU5Y2QyMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vZGVfbW9kdWxlcy9leHByZXNzL0xJQ0VOU0U7bWQ1PTU1MTNjMDBhNWMzNmNkMzYxZGE4NjNkZDlhYTg4NzVkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbm9kZV9tb2R1bGVzL3RvaWRlbnRpZmllci9MSUNFTlNFO21kNT0xYTI2MTA3MWEwNDRkMDJlYjZmMmJiNDdmNTFhMzUwMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vZGVfbW9kdWxlcy9kZWJ1Zy9MSUNFTlNFO21kNT1kZGQ4MTVhNDc1ZTczMzhiMGJlN2ExNGQ4ZWUzNWE5OSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCiAKLSAgICAgU1JDX1VSSSA9ICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jdXRlLWZpbGVzO3ZlcnNpb249JHtQVn0iCi0gICAgIE5QTV9TSFJJTktXUkFQIDo9ICIke1RISVNESVJ9LyR7UE59L25wbS1zaHJpbmt3cmFwLmpzb24iCi0gICAgIE5QTV9MT0NLRE9XTiA6PSAiJHtUSElTRElSfS8ke1BOfS9sb2NrZG93bi5qc29uIgotICAgICBpbmhlcml0IG5wbQotICAgICAjIE11c3QgYmUgc2V0IGFmdGVyIGluaGVyaXQgbnBtIHNpbmNlIHRoYXQgaXRzZWxmIHNldHMgUwotICAgICBTID0gIiR7V09SS0RJUn0vbnBtcGtnIgorICAgICBTUkNfVVJJID0gIiBcCisgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmcvO3BhY2thZ2U9Y3V0ZS1maWxlczt2ZXJzaW9uPSR7UFZ9IFwKKyAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS8ke0JQTn0vbnBtLXNocmlua3dyYXAuanNvbiBcCisgICAgICIKIAotICAgICBMSUNFTlNFXyR7UE59LWNvbnRlbnQtZGlzcG9zaXRpb24gPSAiTUlUIgotICAgICAuLi4KLSAgICAgTElDRU5TRV8ke1BOfS1leHByZXNzID0gIk1JVCIKKyAgICAgUyA9ICIke1dPUktESVJ9L25wbSIKKworICAgICBpbmhlcml0IG5wbQorCiAgICAgIExJQ0VOU0VfJHtQTn0gPSAiTUlUIgorICAgICBMSUNFTlNFXyR7UE59LWFjY2VwdHMgPSAiTUlUIgorICAgICBMSUNFTlNFXyR7UE59LWFycmF5LWZsYXR0ZW4gPSAiTUlUIgorICAgICAuLi4KKyAgICAgTElDRU5TRV8ke1BOfS12YXJ5ID0gIk1JVCIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaHJlZSBrZXkgcG9pbnRzIGV4aXN0IGluIHRoZSBwcmV2aW91cyBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgpAQCAtMTA3MTcsMTEgKzEwNzQ2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGxvb2tzIGxpa2UgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWFydGluYWdsdi9jdXRlLWZpbGVzLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgICAgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jb21tYW5kZXI7dmVyc2lvbj0yLjkuMDtzdWJkaXI9bm9kZV9tb2R1bGVzL2NvbW1hbmRlciBcCi0gICAgICAgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1leHByZXNzO3ZlcnNpb249NC4xNC4wO3N1YmRpcj1ub2RlX21vZHVsZXMvZXhwcmVzcyBcCi0gICAgICAgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jb250ZW50LWRpc3Bvc2l0aW9uO3ZlcnNpb249MC4zLjA7c3ViZGlyPW5vZGVfbW9kdWxlcy9jb250ZW50LWRpc3Bvc2l0aW9uIFwKLSAgICAgICAgICAgICAgICIKKyAgICAgU1JDX1VSSSA9ICIgXAorICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9tYXJ0aW5hZ2x2L2N1dGUtZmlsZXMuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS8ke0JQTn0vbnBtLXNocmlua3dyYXAuanNvbiBcCisgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgbWFpbiBtb2R1bGUgaXMgdGFrZW4gZnJvbSB0aGUgR2l0CiAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIGRlcGVuZGVudHMgYXJlIHRha2VuIGZyb20gdGhlIE5QTSByZWdpc3RyeS4KQEAgLTEwODIyLDcgKzEwODUwLDcgQEAKICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQgZm9ybSB0byBmZXRjaCBhbGwgdGhlCiAgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IHNvdXJjZXMgd2l0aG91dCBzdGFydGluZyB0aGUgYnVpbGQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWMgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IHJ1bmFsbD0iZmV0Y2giCisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gLS1ydW5hbGw9ZmV0Y2gKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYXRpb24gb2YgdGhlIEJpdEJha2UgY29tbWFuZCBndWFyYW50ZWVzIHRoYXQgeW91CiAgICAgICAgICAgICAgICAgaGF2ZSBhbGwgdGhlIHNvdXJjZXMgZm9yIHRoYXQgQml0QmFrZSB0YXJnZXQgc2hvdWxkIHlvdQpAQCAtMTA4NDUsMTUgKzEwODczLDYgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBTeXNWaW5pdCBhcyB0aGUgaW5pdGlhbGl6YXRpb24KLSAgICAgICAgICAgIG1hbmFnZXIuCi0gICAgICAgICAgICBIb3dldmVyLCBzdXBwb3J0IGFsc28gZXhpc3RzIGZvciBzeXN0ZW1kLAotICAgICAgICAgICAgd2hpY2ggaXMgYSBmdWxsIHJlcGxhY2VtZW50IGZvciBpbml0IHdpdGgKLSAgICAgICAgICAgIHBhcmFsbGVsIHN0YXJ0aW5nIG9mIHNlcnZpY2VzLCByZWR1Y2VkIHNoZWxsIG92ZXJoZWFkIGFuZCBvdGhlcgotICAgICAgICAgICAgZmVhdHVyZXMgdGhhdCBhcmUgdXNlZCBieSBtYW55IGRpc3RyaWJ1dGlvbnMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFdpdGhpbiB0aGUgc3lzdGVtLCBTeXNWaW5pdCB0cmVhdHMgc3lzdGVtIGNvbXBvbmVudHMgYXMgc2VydmljZXMuCiAgICAgICAgICAgICBUaGVzZSBzZXJ2aWNlcyBhcmUgbWFpbnRhaW5lZCBhcyBzaGVsbCBzY3JpcHRzIHN0b3JlZCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2luaXQuZC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCkBAIC0xMTE2NCwxOCArMTExODMsMTggQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVG8gY3JlYXRlIHRoZSByZWFkLW9ubHkgcm9vdCBmaWxlc3lzdGVtLCBzaW1wbHkgYWRkIHRoZQotICAgICAgICAgICAgICAgICJyZWFkLW9ubHktcm9vdGZzIiBmZWF0dXJlIHRvIHlvdXIgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVXNpbmcgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cyBpbiB5b3VyCi0gICAgICAgICAgICAgICAgaW1hZ2UgcmVjaXBlIG9yIGZyb20gd2l0aGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbToKKyAgICAgICAgICAgICAgICAicmVhZC1vbmx5LXJvb3RmcyIgZmVhdHVyZSB0byB5b3VyIGltYWdlLCBub3JtYWxseSBpbiBvbmUgb2YgdHdvIHdheXMuCisgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHdheSBpcyB0byBhZGQgdGhlICJyZWFkLW9ubHktcm9vdGZzIiBpbWFnZSBmZWF0dXJlCisgICAgICAgICAgICAgICAgaW4gdGhlIGltYWdlJ3MgcmVjaXBlIGZpbGUgdmlhIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgSU1BR0VfRkVBVFVSRVMgPSAicmVhZC1vbmx5LXJvb3RmcyIKKyAgICAgSU1BR0VfRkVBVFVSRVMgKz0gInJlYWQtb25seS1yb290ZnMiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgQXMgYW4gYWx0ZXJuYXRpdmUsIHlvdSBjYW4gYWRkIHRoZSBzYW1lIGZlYXR1cmUgZnJvbSB3aXRoaW4geW91cgorICAgICAgICAgICAgICAgIGJ1aWxkIGRpcmVjdG9yeSdzIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUsIGFzIGluOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgKz0gInJlYWQtb25seS1yb290ZnMiCisgICAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInJlYWQtb25seS1yb290ZnMiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xMjAzOCwxNSArMTIwNTcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gcnVuIHRlc3RzIG9uIGhhcmR3YXJlLCB5b3UgbmVlZCB0byBzZXQKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfVEFSR0VUPC9maWxlbmFtZT4gdG8gYW4gYXBwcm9wcmlhdGUgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgIEZvciBRRU1VLCB5b3UgZG8gbm90IGhhdmUgdG8gY2hhbmdlIGFueXRoaW5nLCB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyAiUWVtdVRhcmdldCIuCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzICJxZW11Ii4KICAgICAgICAgICAgICAgICAgICAgRm9yIHJ1bm5pbmcgdGVzdHMgb24gaGFyZHdhcmUsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBleGlzdDoKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IlNpbXBsZVJlbW90ZVRhcmdldCI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgIlNpbXBsZVJlbW90ZVRhcmdldCIgaWYgeW91IGFyZSBnb2luZyB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ic2ltcGxlcmVtb3RlIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSAic2ltcGxlcmVtb3RlIiBpZiB5b3UgYXJlIGdvaW5nIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHRlc3RzIG9uIGEgdGFyZ2V0IHN5c3RlbSB0aGF0IGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIHRoZSBpbWFnZSB0byBiZSB0ZXN0ZWQgYW5kIGlzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBuZXR3b3JrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlICJTaW1wbGVSZW1vdGVUYXJnZXQiIGluIGNvbmp1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgInNpbXBsZXJlbW90ZSIgaW4gY29uanVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGVpdGhlciByZWFsIGhhcmR3YXJlIG9yIGFuIGltYWdlIHJ1bm5pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBzZXBhcmF0ZWx5IHN0YXJ0ZWQgUUVNVSBvciBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciB2aXJ0dWFsIG1hY2hpbmUgbWFuYWdlci4KQEAgLTEyMjIxLDcgKzEyMjQwLDcgQEAKICAgICAgICAgICAgICAgICA8dGl0bGU+UG93ZXIgQ29udHJvbDwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vc3QgaGFyZHdhcmUgdGFyZ2V0cyBvdGhlciB0aGFuIFNpbXBsZVJlbW90ZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vc3QgaGFyZHdhcmUgdGFyZ2V0cyBvdGhlciB0aGFuICJzaW1wbGVyZW1vdGUiLAogICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNvbnRyb2wgcG93ZXI6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0xMjYxOCw3ICsxMjYzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnRhcmdldDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IGNvbnRyb2xsZXIgb2JqZWN0IHVzZWQgdG8gZGVwbG95CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3RhcnQgYW4gaW1hZ2Ugb24gYSBwYXJ0aWN1bGFyIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gUWVtdVRhcmdldCwgU2ltcGxlUmVtb3RlLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIFFlbXUsIFNpbXBsZVJlbW90ZSwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1kYm9vdFRhcmdldCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyB1c3VhbGx5IHVzZSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCmluZGV4IGY1YTBkNjQuLjVjY2MwZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbApAQCAtMTUxLDEzICsxNTEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3RhcnRzIFFFTVUgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gc2V0IHRvICJxZW11eDg2Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IHNldCB0byAicWVtdXg4Ni02NCIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1pbmcgYSBzdGFuZGFyZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBhdXRvbWF0aWNhbGx5IGZpbmRzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iekltYWdlLXFlbXV4ODYuYmluPC9maWxlbmFtZT4gaW1hZ2UgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnpJbWFnZS1xZW11eDg2LTY0LmJpbjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTIwMTQwNzA3MDc0NjExLnJvb3Rmcy5leHQzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQtMjAyMDAyMTgwMDI4NTAucm9vdGZzLmV4dDQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3N1bWluZyB0aGUgY3VycmVudCBidWlsZCBjcmVhdGVkIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2UpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICQgcnVucWVtdSBxZW11eDg2LTY0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kLCBob3dldmVyLCBzcGVjaWZpY2FsbHkgcHJvdmlkZXMgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJvb3QgZmlsZXN5c3RlbSB0eXBlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYgY29yZS1pbWFnZS1taW5pbWFsIGV4dDMKKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQgY29yZS1pbWFnZS1taW5pbWFsIGV4dDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0xODgsNyArMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbnN0YWxsZWQgKHNlZSB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb24gZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+IG9wdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgcWVtdXg4NiByYW1mcyBhdWRpbworICAgICAkIHJ1bnFlbXUgcWVtdXg4Ni02NCByYW1mcyBhdWRpbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTIwMCw3ICsyMDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5LRVJORUw8L3JlcGxhY2VhYmxlPiwgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Vk08L3JlcGxhY2VhYmxlPiBvcHRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgZXh0MworICAgICAkIHJ1bnFlbXUgZXh0NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTIwOSw5ICsyMDksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRldGVybWluZXMgdGhlIFFFTVUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgKDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4pIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiIGFuZCB0aGUgcm9vdCBmaWxlc3lzdGVtIHR5cGUgdG8gYmUgInZtZGsiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2LTY0IiBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSB0eXBlIHRvIGJlICJ2bWRrIi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSAvaG9tZS9zY290dC1sZW5vdm8vdm0vY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljLnZtZGsKKyAgICAgJCBydW5xZW11IC9ob21lL3Njb3R0LWxlbm92by92bS9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWMudm1kawogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0yOTYsNyArMjk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgaXQgdG8gYSBkaXJlY3RvcnkgbmFtZWQKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtbmZzPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcnVucWVtdS1leHRyYWN0LXNkayAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvY29yZS1pbWFnZS1zYXRvLXFlbXV4ODYudGFyLmJ6MiB0ZXN0LW5mcworICAgICBydW5xZW11LWV4dHJhY3Qtc2RrIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLXNhdG8tcWVtdXg4Ni02NC50YXIuYnoyIHRlc3QtbmZzCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzEwLDcgKzMxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpbWFnZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBydW5xZW11IHFlbXV4ODYgLi90ZXN0LW5mcworICAgICBydW5xZW11IHFlbXV4ODYtNjQgLi90ZXN0LW5mcwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKaW5kZXggNTlmZmE0OS4uOGNiNTYzMSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKQEAgLTcsNyArNyw3IEBACiA8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgogCiA8cGFyYT4KLSAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgcHJvY2VkdXJlcyByZWxhdGVkIHRvIGdldHRpbmcgc2V0IHVwIHRvIHVzZSB0aGUKKyAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgZ3VpZGFuY2Ugb24gaG93IHRvIHByZXBhcmUgdG8gdXNlIHRoZQogICAgIFlvY3RvIFByb2plY3QuCiAgICAgWW91IGNhbiBsZWFybiBhYm91dCBjcmVhdGluZyBhIHRlYW0gZW52aXJvbm1lbnQgdGhhdCBkZXZlbG9wcyB1c2luZyB0aGUKICAgICBZb2N0byBQcm9qZWN0LCBob3cgdG8gc2V0IHVwIGEKQEAgLTI0LDkgKzI0LDkgQEAKICAgICAgICAgUHJvamVjdCBpbiBhIHRlYW0gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIG9yIGhvdyB0byBzY2FsZSBpdCBmb3IgYQogICAgICAgICBsYXJnZSB0ZWFtIG9mIGRldmVsb3BlcnMuCiAgICAgICAgIFlvdSBjYW4gYWRhcHQgdGhlIFlvY3RvIFByb2plY3QgdG8gbWFueSBkaWZmZXJlbnQgdXNlIGNhc2VzIGFuZAotICAgICAgICBzY2VuYXJpb3MuCi0gICAgICAgIEhvd2V2ZXIsIHRoaXMgZmxleGliaWxpdHkgY291bGQgY2F1c2UgZGlmZmljdWx0aWVzIGlmIHlvdSBhcmUgdHJ5aW5nCi0gICAgICAgIHRvIGNyZWF0ZSBhIHdvcmtpbmcgc2V0dXAgdGhhdCBzY2FsZXMgYWNyb3NzIGEgbGFyZ2UgdGVhbS4KKyAgICAgICAgc2NlbmFyaW9zOworICAgICAgICBob3dldmVyLCB0aGlzIGZsZXhpYmlsaXR5IGNvdWxkIGNhdXNlIGRpZmZpY3VsdGllcyBpZiB5b3UgYXJlIHRyeWluZworICAgICAgICB0byBjcmVhdGUgYSB3b3JraW5nIHNldHVwIHRoYXQgc2NhbGVzIGVmZmVjdGl2ZWx5LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzUsMTcgKzM1LDE3IEBACiAgICAgICAgIHRoYXQgY2FuIGhlbHAgeW91IGdldCB0aGUgcmVzdWx0cyB5b3Ugd2FudC4KICAgICAgICAgVGhlIHByb2NlZHVyZSBpcyBoaWdoLWxldmVsIGFuZCBwcmVzZW50cyBzb21lIG9mIHRoZSBwcm9qZWN0J3MgbW9zdAogICAgICAgICBzdWNjZXNzZnVsIGV4cGVyaWVuY2VzLCBwcmFjdGljZXMsIHNvbHV0aW9ucywgYW5kIGF2YWlsYWJsZQotICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCBoYXZlIHByb3ZlZCB0byB3b3JrIHdlbGwgaW4gdGhlIHBhc3QuCi0gICAgICAgIEtlZXAgaW4gbWluZCwgdGhlIHByb2NlZHVyZSBoZXJlIGlzIGEgc3RhcnRpbmcgcG9pbnQuCisgICAgICAgIHRlY2hub2xvZ2llcyB0aGF0IGhhdmUgcHJvdmVkIHRvIHdvcmsgd2VsbCBpbiB0aGUgcGFzdDsKKyAgICAgICAgaG93ZXZlciwga2VlcCBpbiBtaW5kLCB0aGUgcHJvY2VkdXJlIGhlcmUgaXMgc2ltcGx5IGEgc3RhcnRpbmcgcG9pbnQuCiAgICAgICAgIFlvdSBjYW4gYnVpbGQgb2ZmIHRoZXNlIHN0ZXBzIGFuZCBjdXN0b21pemUgdGhlIHByb2NlZHVyZSB0byBmaXQgYW55CiAgICAgICAgIHBhcnRpY3VsYXIgd29ya2luZyBlbnZpcm9ubWVudCBhbmQgc2V0IG9mIHByYWN0aWNlcy4KICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hvIGlzIEdvaW5nIHRvIGJlIERldmVsb3Bpbmc6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZworICAgICAgICAgICAgICAgIFlvdSBmaXJzdCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hvIGlzIGdvaW5nIHRvIGJlIGRvaW5nIGFueXRoaW5nCiAgICAgICAgICAgICAgICAgcmVsYXRlZCB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgZGV0ZXJtaW5lIHRoZWlyIHJvbGVzLgogICAgICAgICAgICAgICAgIE1ha2luZyB0aGlzIGRldGVybWluYXRpb24gaXMgZXNzZW50aWFsIHRvIGNvbXBsZXRpbmcKLSAgICAgICAgICAgICAgICBzdGVwcyB0d28gYW5kIHRocmVlLCB3aGljaCBhcmUgdG8gZ2V0IHlvdXIgZXF1aXBtZW50IHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBzdGVwcywgd2hpY2ggYXJlIHRvIGdldCB5b3VyIGVxdWlwbWVudCB0b2dldGhlcgogICAgICAgICAgICAgICAgIGFuZCBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCdzIGhhcmR3YXJlIHRvcG9sb2d5LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtNjQsOCArNjQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBFbmdpbmVlcjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgbWFuYWdlcyBBdXRvYnVpbGRlcnMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IGFsbCBlbnZpcm9ubWVudHMgbmVlZCBhIEJ1aWxkIEVuZ2luZWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLiBEZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgZW52aXJvbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFsbCBzaXR1YXRpb25zIG1pZ2h0IG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBFbmdpbmVlcjo8L2VtcGhhc2lzPgpAQCAtODgsNiArODgsMTEgQEAKICAgICAgICAgICAgICAgICBZb3UgY2FuIGhlbHAgZW5zdXJlIGVmZmljaWVuY3kgYnkgaGF2aW5nIGFueSBtYWNoaW5lcyB1c2VkCiAgICAgICAgICAgICAgICAgZm9yIHRlc3Rpbmcgb3IgdGhhdCBydW4gQXV0b2J1aWxkZXJzIGJlIGFzIGhpZ2ggcGVyZm9ybWFuY2UKICAgICAgICAgICAgICAgICBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgR2l2ZW4gc3VmZmljaWVudCBwcm9jZXNzaW5nIHBvd2VyLCB5b3UgbWlnaHQgYWxzbyBjb25zaWRlcgorICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGNvbnRhaW5lcnMgdG8gYmUgcnVuCisgICAgICAgICAgICAgICAgICAgIHVuZGVyIERvY2tlciwgd2hpY2ggaXMgZGVzY3JpYmVkIGxhdGVyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5kZXJzdGFuZCB0aGUgSGFyZHdhcmUgVG9wb2xvZ3kgb2YgdGhlIEVudmlyb25tZW50OjwvZW1waGFzaXM+CkBAIC0xMTQsMTAgKzExOSwxMCBAQAogICAgICAgICAgICAgICAgIGFuZCBhbnkgc29mdHdhcmUgeW91IGFyZSBkZXZlbG9waW5nIHVuZGVyIHRoZSBjb250cm9sIG9mIGFuIFNDTQogICAgICAgICAgICAgICAgIHN5c3RlbSB0aGF0IGlzIGNvbXBhdGlibGUgICB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCiAgICAgICAgICAgICAgICAgaXMgYWR2aXNhYmxlLgotICAgICAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3Ryb25nbHkKKyAgICAgICAgICAgICAgICBPZiBhbGwgb2YgdGhlIFNDTXMgc3VwcG9ydGVkIGJ5IEJpdEJha2UsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3Ryb25nbHkKICAgICAgICAgICAgICAgICByZWNvbW1lbmRzIHVzaW5nCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LgotICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAorICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFjayB1cCwKICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIHdvcmsgcmVtb3RlbHksIGFuZCB0aGVuIGNvbm5lY3RzIGJhY2sgdG8gdGhlCiAgICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUuCiAgICAgICAgICAgICAgICAgPG5vdGU+CkBAIC0zMDIsNyArMzA3LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT5BcyB3aXRoIGFueSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgaXQgaXMgaW1wb3J0YW50CiAgICAgICAgICAgICAgICAgdG8gZG9jdW1lbnQgdGhlIHBvbGljeSB1c2VkIGFzIHdlbGwgYXMgYW55IG1haW4gcHJvamVjdAogICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgc28gdGhleSBhcmUgdW5kZXJzdG9vZCBieSBldmVyeW9uZS4KLSAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIGEgZ29vZCBpZGVhIHRvIGhhdmUgd2VsbCBzdHJ1Y3R1cmVkCisgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwtc3RydWN0dXJlZAogICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCiAgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KICAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCkBAIC0zOTQsMTYgKzM5OSwxOCBAQAogICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgcHJvY2VkdXJlcyB0byBzZXQgdXAgYSBzeXN0ZW0gdG8gYmUgdXNlZCBhcyB5b3VyCiAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4KICAgICAgICAgZm9yIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgY2FuIGJlIGEgbmF0aXZlIExpbnV4IG1hY2hpbmUgKHJlY29tbWVuZGVkKSBvciBpdCBjYW4KKyAgICAgICAgWW91ciBidWlsZCBob3N0IGNhbiBiZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIChyZWNvbW1lbmRlZCksIGl0IGNhbgogICAgICAgICBiZSBhIG1hY2hpbmUgKExpbnV4LCBNYWMsIG9yIFdpbmRvd3MpIHRoYXQgdXNlcwotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXInPkNST1BTPC91bGluaz4sCiAgICAgICAgIHdoaWNoIGxldmVyYWdlcwotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4gb3IgaXQgY2FuCisgICAgICAgIGJlIGEgV2luZG93cyBtYWNoaW5lIGNhcGFibGUgb2YgcnVubmluZyBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggdjIgKFdTTCkuCiAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgYSBidWlsZCBob3N0IHRoYXQgaXMgdXNpbmcgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eDwvdWxpbms+Ci0gICAgICAgICAgICAoV1NMKS4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMLgorICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGgKKyAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCB2MTwvdWxpbms+LgorICAgICAgICAgIEl0IGlzIGNvbXBhdGlibGUgYnV0IG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBub3IgdmFsaWRhdGVkIHdpdGggV1NMdjIuCisgICAgICAgICAgSWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlIHRvCisgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1pbnN0YWxsJz5XU0x2MjwvdWxpbms+LgogICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgogCkBAIC00NDIsNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBoYXZlIGEgcmVhc29uYWJseSBjdXJyZW50IExpbnV4LWJhc2VkIGhvc3QKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBoYXZlIHRoZSBiZXN0IHJlc3VsdHMgd2l0aCBhIHJlY2VudCByZWxlYXNlIG9mCi0gICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIERlYmlhbiwgVWJ1bnR1LCBvciBDZW50T1MgYXMgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgRmVkb3JhLCBvcGVuU1VTRSwgRGViaWFuLCBVYnVudHUsIFJIRUwgb3IgQ2VudE9TIGFzIHRoZXNlCiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzIGFyZSBmcmVxdWVudGx5IHRlc3RlZCBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICAgICAgICAgIGFuZCBvZmZpY2lhbGx5IHN1cHBvcnRlZC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9ucyB1bmRlciB2YWxpZGF0aW9uIGFuZCB0aGVpcgpAQCAtNDYwLDIzICs0NjcsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1lZXQgTWluaW1hbCBWZXJzaW9uIFJlcXVpcmVtZW50czo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzaG91bGQgYmUgYWJsZSB0byBydW4gb24gYW55CiAgICAgICAgICAgICAgICAgICAgIG1vZGVybiBkaXN0cmlidXRpb24gdGhhdCBoYXMgdGhlIGZvbGxvd2luZyB2ZXJzaW9ucyBmb3IKLSAgICAgICAgICAgICAgICAgICAgR2l0LCB0YXIsIGFuZCBQeXRob24uCisgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYy4KICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgMS44LjMuMSBvciBncmVhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjcgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI4IG9yIGdyZWF0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gMy40LjAgb3IgZ3JlYXRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gMy41LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjYyA1LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAogICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50cywgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIHByZXBhcmUgdGhlCiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvcgogICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC01MTcsNyArNTI3LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFdpdGgKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9jcm9wcy9ibG9iL21hc3Rlci9SRUFETUUubWQnPkNST1BTPC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXInPkNST1BTPC91bGluaz4sCiAgICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LAogICAgICAgICAgICAgeW91IGNhbiBjcmVhdGUgYSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQKQEAgLTY1NCwxNSArNjY0LDE0NyBAQAogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgVG9hc3RlciBVc2VyIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLXRvLXVzZS13c2wnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IChXU0x2Mik8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aCA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dzbC93c2wyLWFib3V0Jz4KKyAgICAgICAgICAgIFdpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCAoV1NMdjIpPC91bGluaz4sIHlvdSBjYW4gY3JlYXRlIGEKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgeW91IHRvIGJ1aWxkCisgICAgICAgICAgICBvbiBXaW5kb3dzLiBZb3UgY2FuIHNldCB1cCBhIExpbnV4IGRpc3RyaWJ1dGlvbiBpbnNpZGUgV2luZG93cworICAgICAgICAgICAgaW4gd2hpY2ggeW91IGNhbiBkZXZlbG9wIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwcyB0byBwcmVwYXJlIGEgV2luZG93cyBtYWNoaW5lIHVzaW5nIFdTTHYyCisgICAgICAgICAgICBhcyB5b3VyIFlvY3RvIFByb2plY3QgYnVpbGQgaG9zdDoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIHN1cmUgeW91ciBXaW5kb3dzIDEwIG1hY2hpbmUgaXMgY2FwYWJsZSBvZiBydW5uaW5nIFdTTHYyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgV1NMdjIgaXMgb25seSBhdmFpbGFibGUgZm9yIFdpbmRvd3MgMTAgYnVpbGRzID4gMTg5MTcuIFRvCisgICAgICAgICAgICAgICAgICAgIGNoZWNrIHdoaWNoIGJ1aWxkIHZlcnNpb24geW91IGFyZSBydW5uaW5nLCB5b3UgbWF5IG9wZW4gYQorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHByb21wdCBvbiBXaW5kb3dzIGFuZCBleGVjdXRlIHRoZSBjb21tYW5kICJ2ZXIiLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcVXNlcnNcbXl1c2VyPiB2ZXIKKworICAgIE1pY3Jvc29mdCBXaW5kb3dzIFtWZXJzaW9uIDEwLjAuMTkwNDEuMTUzXQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaXMgY2FwYWJsZSBvZiBydW5uaW5nIFdTTHYyIHlvdSBtYXkgY29udGludWUsCisgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgc3ViamVjdCBvciBpbnN0cnVjdGlvbnMgb24gaG93CisgICAgICAgICAgICAgICAgICAgIHRvIHVwZ3JhZGUgdG8gV1NMdjIgdmlzaXQgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1pbnN0YWxsJz5XaW5kb3dzIDEwIFdTTHYyPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCB0aGUgTGludXggZGlzdHJpYnV0aW9uIG9mIHlvdXIgY2hvaWNlIGluc2lkZSBXaW5kb3dzIDEwOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGtub3cgeW91ciB2ZXJzaW9uIG9mIFdpbmRvd3MgMTAgc3VwcG9ydHMgV1NMdjIsCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gaW5zdGFsbCB0aGUgZGlzdHJpYnV0aW9uIG9mIHlvdXIgY2hvaWNlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIE1pY3Jvc29mdCBTdG9yZS4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiB0aGUgTWljcm9zb2Z0IFN0b3JlIGFuZCBzZWFyY2ggZm9yIExpbnV4LiBXaGlsZSB0aGVyZQorICAgICAgICAgICAgICAgICAgICBhcmUgc2V2ZXJhbCBMaW51eCBkaXN0cmlidXRpb25zIGF2YWlsYWJsZSwgdGhlIGFzc3VtcHRpb24KKyAgICAgICAgICAgICAgICAgICAgaXMgdGhhdCB5b3VyIHBpY2sgd2lsbCBiZSBvbmUgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGFzIHN0YXRlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zIGZvcgorICAgICAgICAgICAgICAgICAgICB1c2luZyBhIG5hdGl2ZSBMaW51eCBob3N0LgorICAgICAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgeW91ciBzZWxlY3Rpb24sIHNpbXBseSBjbGljayAiR2V0IiB0byBkb3dubG9hZAorICAgICAgICAgICAgICAgICAgICBhbmQgaW5zdGFsbCB0aGUgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbiBpcyB1c2luZyBXU0x2Mjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPcGVuIGEgV2luZG93cyBQb3dlclNoZWxsIGFuZCBydW46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyPiB3c2wgLWwgLXYKKyAgICBOQU1FICAgICAgU1RBVEUgICAgICAgICAgIFZFUlNJT04KKyAgICAqVWJ1bnR1ICAgIFJ1bm5pbmcgICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGUgdmVyc2lvbiBjb2x1bW4gd2hpY2ggc2F5cyB0aGUgV1NMIHZlcnNpb24gYmVpbmcgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICB5b3VyIGRpc3RyaWJ1dGlvbiwgb24gY29tcGF0aWJsZSBzeXN0ZW1zLCB0aGlzIGNhbiBiZSBjaGFuZ2VkIGJhY2sKKyAgICAgICAgICAgICAgICAgICAgYXQgYW55IHBvaW50IGluIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgT3JpZW50IFlvdXJzZWxmIG9uIFdTTDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVuZmFtaWxpYXIgd2l0aCBXU0wsIHlvdSBjYW4gbGVhcm4gbW9yZSBoZXJlIC0KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1hYm91dCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCB5b3VyIFdTTCBEaXN0aWJ1dGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSBXaW5kb3dzIHN0YXJ0IG1lbnUgc2ltcGx5IGxhdW5jaCB5b3VyIFdTTCBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAganVzdCBsaWtlIGFueSBvdGhlciBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW1pemUgeW91ciBXU0x2MiBzdG9yYWdlIG9mdGVuOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIER1ZSB0byB0aGUgd2F5IHN0b3JhZ2UgaXMgaGFuZGxlZCBvbiBXU0x2MiwgdGhlIHN0b3JhZ2UKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UgdXNlZCBieSB0aGUgdW5kZWx5aW5nIExpbnV4IGRpc3RyaWJ1dGlvbiBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgcmVmbGVjdGVkIGltbWVkYXRlbHksIGFuZCBzaW5jZSBiaXRiYWtlIGhlYXZpbHkgdXNlcworICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBhZnRlciBzZXZlcmFsIGJ1aWxkcywgeW91IG1heSBiZSB1bmF3YXJlIHlvdQorICAgICAgICAgICAgICAgICAgICBhcmUgcnVubmluZyBvdXQgb2Ygc3BhY2UuIFdTTHYyIHVzZXMgYSBWSERYIGZpbGUgZm9yCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UsIHRoaXMgaXNzdWUgY2FuIGJlIGVhc2lseSBhdm9pZGVkIGJ5IG1hbnVhbGx5CisgICAgICAgICAgICAgICAgICAgIG9wdGltaXppbmcgdGhpcyBmaWxlIG9mdGVuLCB0aGlzIGNhbiBiZSBkb25lIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgd2F5OgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgdGhlIGxvY2F0aW9uIG9mIHlvdXIgVkhEWCBmaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlyc3QgeW91IG5lZWQgdG8gZmluZCB0aGUgZGlzdHJvIGFwcCBwYWNrYWdlIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhY2hpZXZlIHRoaXMgb3BlbiBhIFdpbmRvd3MgUG93ZXJzaGVsbCBhcyBBZG1pbmlzdHJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJ1bjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gR2V0LUFwcHhQYWNrYWdlIC1OYW1lICIqVWJ1bnR1KiIgfCBTZWxlY3QgUGFja2FnZUZhbWlseU5hbWUKKyAgICBQYWNrYWdlRmFtaWx5TmFtZQorICAgIC0tLS0tLS0tLS0tLS0tLS0tCisgICAgQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgbm93IHJlcGxhY2UgdGhlIDxyZXBsYWNlYWJsZT5QYWNrYWdlRmFtaWx5TmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdXIgPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPiBvbiB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB0byBmaW5kIHlvdXIgVkhEWCBmaWxlOiA8ZmlsZW5hbWU+QzpcVXNlcnNcdXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXFBhY2thZ2VGYW1pbHlOYW1lXExvY2FsU3RhdGVcPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgbHMgQzpcVXNlcnNcbXl1c2VyXEFwcERhdGFcTG9jYWxcUGFja2FnZXNcQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoXExvY2FsU3RhdGVcCisgICAgTW9kZSAgICAgICAgICAgICAgICAgTGFzdFdyaXRlVGltZSAgICAgICAgIExlbmd0aCBOYW1lCisgICAgLWEtLS0tICAgICAgICAgMy8xNC8yMDIwICAgOTo1MiBQTSAgICA1NzQxODk3MzE4NCBleHQ0LnZoZHggICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgVkhEWCBmaWxlIHBhdGggaXM6IDxmaWxlbmFtZT5DOlxVc2Vyc1xteXVzZXJcQXBwRGF0YVxMb2NhbFxQYWNrYWdlc1xDYW5vbmljYWxHcm91cExpbWl0ZWQuVWJ1bnR1b25XaW5kb3dzXzc5YWJjZGVmZ2hcTG9jYWxTdGF0ZVxleHQ0LnZoZHg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcHRpbWl6ZSB5b3VyIFZIRFggZmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBXaW5kb3dzIFBvd2Vyc2hlbGwgYXMgQWRtaW5pc3RyYXRvciB0byBvcHRpbWl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgVkhEWCBmaWxlLCBzaHV0dGluZyBkb3duIFdTTCBmaXJzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gd3NsIC0tc2h1dGRvd24KKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyPiBvcHRpbWl6ZS12aGQgLVBhdGggQzpcVXNlcnNcbXl1c2VyXEFwcERhdGFcTG9jYWxcUGFja2FnZXNcQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoXExvY2FsU3RhdGVcZXh0NC52aGR4IC1Nb2RlIGZ1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBwcm9ncmVzcyBiYXIgc2hvdWxkIGJlIHNob3duIHdoaWxlIG9wdGltaXppbmcgdGhlIFZIRFggZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3RvcmFnZSBzaG91bGQgbm93IGJlIHJlZmxlY3RlZCBjb3JyZWN0bHkgb24gdGhlIFdpbmRvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBsb3Jlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgV1NMdjIgZG9lcyBub3QgaGF2ZSBvdXQtb2YtdGhlLWJveAorICAgICAgICAgICAgICBhY2Nlc3MgdG8gZXh0ZXJuYWwgZGV2aWNlcyBzdWNoIGFzIHRob3NlIGNvbm5lY3RlZCB0aHJvdWdoIGEKKyAgICAgICAgICAgICAgVVNCIHBvcnQsIGJ1dCBpdCBhdXRvbWF0aWNhbGx5IG1vdW50cyB5b3VyIDxmaWxlbmFtZT5DOjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgIGRyaXZlIG9uIDxmaWxlbmFtZT4vbW50L2MvPC9maWxlbmFtZT4gKGFuZCBvdGhlcnMpLCB3aGljaAorICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0byBzaGFyZSBkZXBsb3kgYXJ0aWZhY3RzIHRvIGJlIGxhdGVyIGZsYXNoZWQgb24KKyAgICAgICAgICAgICAgaGFyZHdhcmUgdGhyb3VnaCBXaW5kb3dzLCBidXQgeW91ciBidWlsZCBkaXJlY3Rvcnkgc2hvdWxkIG5vdAorICAgICAgICAgICAgICByZXNpZGUgaW5zaWRlIHRoaXMgbW91bnRwb2ludC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgV1NMdjIgc2V0IHVwLCBldmVyeXRoaW5nIGlzIGluIHBsYWNlIHRvCisgICAgICAgICAgICBkZXZlbG9wIGp1c3QgYXMgaWYgeW91IHdlcmUgcnVubmluZyBvbiBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lLgorICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIEV4dGVuc2libGUgU0RLIGNvbnRhaW5lciwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRlbnNpYmxlJz5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3VsaW5rPiIKKyAgICAgICAgICAgIENoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBUb2FzdGVyIGNvbnRhaW5lciwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsjdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZSc+U2V0dGluZyBVcCBhbmQgVXNpbmcgVG9hc3RlcjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgVG9hc3RlciBVc2VyIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KIAogPHNlY3Rpb24gaWQ9J2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz4KICAgICA8dGl0bGU+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBzaG93cyB5b3UgaG93IHRvIGxvY2F0ZSBhbmQgYWNjZXNzIHRoZQotICAgICAgICBzb3VyY2UgZmlsZXMgdGhhdCBzaGlwIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIFlvdSBlc3RhYmxpc2ggYW5kIHVzZSB0aGVzZSBsb2NhbCBmaWxlcyB0byB3b3JrIG9uIHByb2plY3RzLgorICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB0byBsb2NhdGUsIGZldGNoIGFuZCBjb25maWd1cmUgdGhlIHNvdXJjZQorICAgICAgICBmaWxlcyB5b3UnbGwgbmVlZCB0byB3b3JrIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTEwMTksMjAgKzExNjEsMTggQEAKICAgICAgICAgICAgLgogICAgICAgICAgICAuCiAgICAgICAgICAgIC4KLSAgICAgICByZW1vdGVzL29yaWdpbi9weXJvCi0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcHlyby1uZXh0Ci0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcm9ja28KLSAgICAgICByZW1vdGVzL29yaWdpbi9yb2Nrby1uZXh0Ci0gICAgICAgcmVtb3Rlcy9vcmlnaW4vc3VtbwotICAgICAgIHJlbW90ZXMvb3JpZ2luL3N1bW8tbmV4dAogICAgICAgIHJlbW90ZXMvb3JpZ2luL3RodWQKICAgICAgICByZW1vdGVzL29yaWdpbi90aHVkLW5leHQKICAgICAgICByZW1vdGVzL29yaWdpbi93YXJyaW9yCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vd2Fycmlvci1uZXh0CisgICAgICAgcmVtb3Rlcy9vcmlnaW4vemV1cworICAgICAgIHJlbW90ZXMvb3JpZ2luL3pldXMtbmV4dAorICAgICAgIC4uLiBhbmQgc28gb24gLi4uCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2tvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDaGVja291dCB0aGUgZGV2ZWxvcG1lbnQgYnJhbmNoIGluIHdoaWNoIHlvdSB3YW50IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDaGVjayBvdXQgdGhlIGRldmVsb3BtZW50IGJyYW5jaCBpbiB3aGljaCB5b3Ugd2FudCB0byB3b3JrLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gYWNjZXNzIHRoZSBmaWxlcyBmb3IgdGhlIFlvY3RvIFByb2plY3QKICAgICAgICAgICAgICAgICAgICAgJkRJU1RSTzsgUmVsZWFzZSAoJkRJU1RST19OQU1FOyksIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTExMTgsNyArMTI1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2tvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGdpdCBjaGVja291dCB0YWdzLyZESVNUUk9fUkVMX1RBRzsgLWIgbXlfeW9jdG9fJkRJU1RSTzsKICAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICdteV95b2N0b18mRElTVFJPOycKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAwNGZhMWU0Li42Zjg2NDU0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCkBAIC0yMiwxOCArMjIsMTcgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCiAgICAgICAgIDxyZXZoaXN0b3J5PgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBPY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDExPC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CkBAIC01NywxMSArNTYsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTExOCw5ICsxMTIsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTQ0LDcgKzE0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNjEsMTggKzE2MCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbAppbmRleCAyZWE1ZDNmLi5jMWMyZDZkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCkBAIC04OSw4ICs4OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSBZb3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gRmlsZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiAzMi1iaXQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4Ni02NCIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDY0LWJpdCBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbgpAQCAtMTA0LDEwICsxMDQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSBrZXJuZWwgbW9kdWxlcy48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgZXhhbXBsZSB1c2VzIHRoZSBkZWZhdWx0ICJxZW11eDg2IiBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGJ1dCBuZWVkcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiOgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBleGFtcGxlIHdlIHdpc2ggdG8gYnVpbGQgZm9yIHFlbXV4ODYgc28KKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIG11c3Qgc2V0IHRoZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0byAicWVtdXg4NiIgYW5kIGFsc28gYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiLiBBcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIGRvIHRoaXMgYnkgYXBwZW5kaW5nIHRvIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORSA9ICJxZW11eDg2IgogICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyArPSAia2VybmVsLW1vZHVsZXMiCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTMxNCw4ICszMTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgRmlsZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiAzMi1iaXQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4Ni02NCIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDY0LWJpdCBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZApAQCAtMzI5LDEwICszMzEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSBrZXJuZWwgbW9kdWxlcy48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgZXhhbXBsZSB1c2VzIHRoZSBkZWZhdWx0ICJxZW11eDg2IiBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGJ1dCBuZWVkcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiOgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBleGFtcGxlIHdlIHdpc2ggdG8gYnVpbGQgZm9yIHFlbXV4ODYgc28KKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIG11c3Qgc2V0IHRoZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0byAicWVtdXg4NiIgYW5kIGFsc28gYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiLiBBcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIGRvIHRoaXMgYnkgYXBwZW5kaW5nIHRvIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORSA9ICJxZW11eDg2IgogICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyArPSAia2VybmVsLW1vZHVsZXMiCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTY1NSwyNiArNjU5LDIyIEBACiAgICAgIEtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKICAgICAgS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiAgICAgIEtCUkFOQ0hfYmVhZ2xlYm9uZSA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgotICAgICBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImQwOWYyY2U1ODRkNjBlY2I3ODkwNTUwYzIyYTgwYzQ4YjgzYzJlMTkiCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gImQwOWYyY2U1ODRkNjBlY2I3ODkwNTUwYzIyYTgwYzQ4YjgzYzJlMTkiCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gImI1YzhjZmRhMmRmZTI5NjQxMGQ1MWUxMzEyODlmYjA5YzY5ZTFlN2QiCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUgPz0gImI1YzhjZmRhMmRmZTI5NjQxMGQ1MWUxMzEyODlmYjA5YzY5ZTFlN2QiCi0gICAgIFNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiMmQxZDAxMDI0MDg0NmQ3YmZmMTVkMWZjYzBjYjZlYjhhMjJmYzc4YSIKIAogCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi0gICAgIENPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgogCiAgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjEyLjciCiAgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjEyLjciCiAgICAgIExJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjEwIgogICAgICBMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUgPSAiNC4xMi4xMCIKLSAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xMi4xMCIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhpcyBhcHBlbmQgZmlsZSBjb250YWlucyBzdGF0ZW1lbnRzIHVzZWQgdG8gc3VwcG9ydAogICAgICAgICAgICAgICAgIHNldmVyYWwgQlNQcyB0aGF0IHNoaXAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KQEAgLTk0OCwxMiArOTQ4LDE0IEBACiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBLQlVJTERfREVGQ09ORklHXzxyZXBsYWNlYWJsZT5LTUFDSElORTwvcmVwbGFjZWFibGU+ID89IDxyZXBsYWNlYWJsZT5kZWZjb25maWdfZmlsZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGFwcGVuZHMgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPktCVUlMRF9ERUZDT05GSUc8L2ZpbGVuYW1lPiB2YXJpYWJsZSB3aXRoCi0gICAgICAgICAgICAgICAgImNvbW1vbi1wYyIgYW5kIHByb3ZpZGVzIHRoZSBwYXRoIHRvIHRoZSAiaW4tdHJlZSIKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhc3NpZ25zIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAicmFzcGJlcnJ5cGkyIiBhbmQgcHJvdmlkZXMgdGhlIHBhdGggdG8gdGhlICJpbi10cmVlIgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgdG8gYmUgdXNlZCBmb3IgYSBSYXNwYmVycnkgUGkgMiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyBiYXNlZCBvbiB0aGUgQnJvYWRjb20gMjcwOC8yNzA5IGNoaXBzZXQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLQlVJTERfREVGQ09ORklHX2NvbW1vbi1wYyA/PSAiL2hvbWUvc2NvdHRyaWYvY29uZmlnZmlsZXMvbXlfZGVmY29uZmlnX2ZpbGUiCisgICAgIEtCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkyID89ICJiY20yNzA5X2RlZmNvbmZpZyIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCmluZGV4IDZkNjc1YTYuLjYyYzY4NTIgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbApAQCAtNTQzLDcgKzU0Myw2IEBACiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9rZ2RiL2hhcmR3YXJlLmNmZwogICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2UvaGFyZHdhcmUuY2ZnCiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhMzIvaGFyZHdhcmUuY2ZnCi0gICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvZnNsLW1wYzgzMTVlLXJkYi9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9xZW11LXBwYzMyL2hhcmR3YXJlLmNmZwogICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL3FlbXVhcm1hOS9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9tdGktbWFsdGE2NC9oYXJkd2FyZS5jZmcKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA0YzU4ODFiLi45OThmZTQxCi0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zNCw3ICszMyw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjQ8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDEzPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41PC9yZXZudW1iZXI+CkBAIC00MiwxMSArNDEsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEwMyw5ICs5NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xMjcsNyArMTI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTE0NCwxOCArMTQzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBjZDlhM2RhLi5lNzMwZjcyCi0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbApAQCAtMzMsMTEgKzMzLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtNDUsNyArNDQsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS44PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNTwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMDwvcmV2bnVtYmVyPgpAQCAtODksOSArODgsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xMTMsNyArMTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTEzMCwxOCArMTM0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sCmluZGV4IDJmMWJkMTYuLjM2ZWJmOGEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgYXMgaXRzIG9wZXJhdGluZyBzeXN0ZW0gYXMgeW91ciBkZXZlbG9wbWVudCBob3N0LgogICAgICAgICBXaGVuIHlvdSBoYXZlIGEgTWFjIG9yIFdpbmRvd3MtYmFzZWQgc3lzdGVtLCB5b3UgY2FuIHNldCBpdCB1cAogICAgICAgICBhcyB0aGUgZGV2ZWxvcG1lbnQgaG9zdCBieSB1c2luZwotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXInPkNST1BTPC91bGluaz4sCiAgICAgICAgIHdoaWNoIGxldmVyYWdlcwogICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KICAgICAgICAgT25jZSB5b3UgdGFrZSB0aGUgc3RlcHMgdG8gc2V0IHVwIGEgQ1JPUFMgbWFjaGluZSwgeW91IGVmZmVjdGl2ZWx5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwKaW5kZXggZGJmNjJjYy4uMWI2MGEzMCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbApAQCAtMjI1LDkgKzIyNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBoZWxwcyB5b3UgdHJhbnNpdGlvbiBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnlpbmcgb3V0IHRoZSBZb2N0byBQcm9qZWN0IHRvIHVzaW5nIGl0IGZvciB5b3VyCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2NzL3doYXQtaS13aXNoLWlkLWtub3duLyc+V2hhdCBJIHdpc2ggSSdkIEtub3duPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy93aGF0LWktd2lzaC1pZC1rbm93bi8nPldoYXQgSSB3aXNoIEknZCBLbm93bjwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2NzL3RyYW5zaXRpb25pbmctdG8tYS1jdXN0b20tZW52aXJvbm1lbnQvJz5UcmFuc2l0aW9uaW5nIHRvIGEgQ3VzdG9tIEVudmlyb25tZW50IGZvciBTeXN0ZW1zIERldmVsb3BtZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy90cmFuc2l0aW9uaW5nLXRvLWEtY3VzdG9tLWVudmlyb25tZW50Lyc+VHJhbnNpdGlvbmluZyB0byBhIEN1c3RvbSBFbnZpcm9ubWVudCBmb3IgU3lzdGVtcyBEZXZlbG9wbWVudDwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzIG9uIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtNDM3LDcgKzQzNyw3IEBACiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdncy1jcm9wcy1vdmVydmlldyc+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q1JPUFM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9jcm9wcy9hYm91dC8nPkNST1BTPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9wb2t5LWNvbnRhaW5lci8nPkNST1BTPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFuIG9wZW4gc291cmNlLCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBmcmFtZXdvcmsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbGV2ZXJhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KQEAgLTg4Myw3ICs4ODMsNyBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST3NzIFBsYXRmb3JtUyAoQ1JPUFMpOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHVzZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXIvJz5DUk9QUzwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgIHRvIHNldCB1cCBhIEJ1aWxkIEhvc3QgdGhhdCBpcyBub3QgcnVubmluZyBMaW51eCAoZS5nLgpAQCAtOTA4LDYgKzkwOCwyNCBAQAogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IChXU0x2Mik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG1heSB1c2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIHRvIHNldCB1cCBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGhvc3QgdXNpbmcgV2luZG93cyAxMC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0x2MSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlIGJ1dCBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgbm9yIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgICAgICAgIHdpdGggV1NMdjIsIGlmIHlvdSBzdGlsbCBkZWNpZGUgdG8gdXNlIFdTTCBwbGVhc2UgdXBncmFkZQorICAgICAgICAgICAgICAgICAgICAgIHRvIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggYWxsb3dzIFdpbmRvd3MgMTAgdG8gcnVuIGEgcmVhbAorICAgICAgICAgICAgICAgICAgICBMaW51eCBrZXJuZWwgaW5zaWRlIG9mIGEgbGlnaHR3ZWlnaHQgdXRpbGl0eSB2aXJ0dWFsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgKFZNKSB1c2luZyB2aXJ0dWFsaXphdGlvbiB0ZWNobm9sb2d5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBCdWlsZCBIb3N0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgV1NMdjIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdG8tdXNlLXdzbCc+U2V0dGluZyBVcCB0byBVc2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Ub2FzdGVyOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2Ygd2hhdCB5b3VyIEJ1aWxkIEhvc3QgaXMgcnVubmluZywgeW91IGNhbgogICAgICAgICAgICAgICAgICAgICB1c2UgVG9hc3RlciB0byBkZXZlbG9wIHNvZnR3YXJlIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYzc3MTZlNC4uMjEwZDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zOSw3ICszOCw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjcgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi43PC9yZXZudW1iZXI+CkBAIC00OCw5ICs0NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC03NCw3ICs3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC05MSwxOCArOTUsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQgYi9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3YWY0N2RmLi5hNTQ3OTM5Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKQEAgLTEsMTkgKzEsMjEgQEAKLTwhRU5USVRZIERJU1RSTyAiMy4wIj4KLTwhRU5USVRZIERJU1RST19DT01QUkVTU0VEICIzMCI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgInpldXMiPgotPCFFTlRJVFkgRElTVFJPX05BTUUgIlpldXMiPgotPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQX01JTlVTX09ORSAid2FycmlvciI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9NSU5VU19PTkUgIldhcnJpb3IiPgotPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjMuMCI+Ci08IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkUgIjIuNyI+Ci08IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMy4wIj4KLTwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjkuMCI+Ci08IUVOVElUWSBSRUxfTU9OVEhfWUVBUiAiT2N0b2JlciAyMDE5Ij4KKzwhRU5USVRZIERJU1RSTyAiMy4xIj4KKzwhRU5USVRZIERJU1RST19DT01QUkVTU0VEICIzMSI+Cis8IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgImR1bmZlbGwiPgorPCFFTlRJVFkgRElTVFJPX05BTUUgIkR1bmZlbGwiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQX01JTlVTX09ORSAiemV1cyI+Cis8IUVOVElUWSBESVNUUk9fTkFNRV9NSU5VU19PTkUgIlpldXMiPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjMuMSI+Cis8IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkUgIjMuMC4yIj4KKzwhRU5USVRZIERJU1RST19SRUxfVEFHICJ5b2N0by0zLjEiPgorPCFFTlRJVFkgTUVUQUlOVEVMVkVSU0lPTiAiMTIuMCI+Cis8IUVOVElUWSBSRUxfTU9OVEhfWUVBUiAiQXByaWwgMjAyMCI+CiA8IUVOVElUWSBNRVRBX0lOVEVMX1JFTF9UQUcgIiZNRVRBSU5URUxWRVJTSU9OOy0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047Ij4KLTwhRU5USVRZIFBPS1lWRVJTSU9OICIyMi4wLjAiPgotPCFFTlRJVFkgUE9LWVZFUlNJT05fQ09NUFJFU1NFRCAiMjIwMCI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTiAiMjMuMC4wIj4KKzwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjIzMDAiPgogPCFFTlRJVFkgWU9DVE9fUE9LWSAicG9reS0mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047Ij4KLTwhRU5USVRZIENPUFlSSUdIVF9ZRUFSICIyMDEwLTIwMTkiPgorPCFFTlRJVFkgQ09QWVJJR0hUX1lFQVIgIjIwMTAtMjAyMCI+Cis8IUVOVElUWSBPUkdOQU1FICJUaGUgWW9jdG8gUHJvamVjdCI+Cis8IUVOVElUWSBPUkdFTUFJTCAiZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0RMX1VSTCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0hPTUVfVVJMICJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmciPgogPCFFTlRJVFkgWU9DVE9fTElTVFNfVVJMICJodHRwOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZyI+CkBAIC01OCwyMiArNjAsMzAgQEAKIDwhRU5USVRZIE9FX0lOSVRfUEFUSCAiJllPQ1RPX1BPS1k7L29lLWluaXQtYnVpbGQtZW52Ij4KIDwhRU5USVRZIE9FX0lOSVRfRklMRSAib2UtaW5pdC1idWlsZC1lbnYiPgogPCFFTlRJVFkgVUJVTlRVX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICJnYXdrIHdnZXQgZ2l0LWNvcmUgZGlmZnN0YXQgdW56aXAgdGV4aW5mbyBnY2MtbXVsdGlsaWIgXAotICAgICBidWlsZC1lc3NlbnRpYWwgY2hycGF0aCBzb2NhdCBjcGlvIHB5dGhvbiBweXRob24zIHB5dGhvbjMtcGlwIHB5dGhvbjMtcGV4cGVjdCBcCisgICAgIGJ1aWxkLWVzc2VudGlhbCBjaHJwYXRoIHNvY2F0IGNwaW8gcHl0aG9uMyBweXRob24zLXBpcCBweXRob24zLXBleHBlY3QgXAogICAgICB4ei11dGlscyBkZWJpYW51dGlscyBpcHV0aWxzLXBpbmcgcHl0aG9uMy1naXQgcHl0aG9uMy1qaW5qYTIgbGliZWdsMS1tZXNhIGxpYnNkbDEuMi1kZXYgXAogICAgICBweWxpbnQzIHh0ZXJtIj4KIDwhRU5USVRZIEZFRE9SQV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKICAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIFwKICAgICAgY2NhY2hlIHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcGVybC1iaWdudW0gc29jYXQgXAogICAgICBweXRob24zLXBleHBlY3QgZmluZHV0aWxzIHdoaWNoIGZpbGUgY3BpbyBweXRob24gcHl0aG9uMy1waXAgeHogcHl0aG9uMy1HaXRQeXRob24gXAotICAgICBweXRob24zLWppbmphMiBTREwtZGV2ZWwgeHRlcm0iPgorICAgICBweXRob24zLWppbmphMiBTREwtZGV2ZWwgeHRlcm0gcnBjZ2VuIj4KIDwhRU5USVRZIE9QRU5TVVNFX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICJweXRob24gZ2NjIGdjYy1jKysgZ2l0IGNocnBhdGggbWFrZSB3Z2V0IHB5dGhvbi14bWwgXAogICAgICBkaWZmc3RhdCBtYWtlaW5mbyBweXRob24tY3Vyc2VzIHBhdGNoIHNvY2F0IHB5dGhvbjMgcHl0aG9uMy1jdXJzZXMgdGFyIHB5dGhvbjMtcGlwIFwKLSAgICAgcHl0aG9uMy1wZXhwZWN0IHh6IHdoaWNoIHB5dGhvbjMtSmluamEyIE1lc2EtbGliRUdMMQotICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiBsaWJTREwtZGV2ZWwgeHRlcm0iPgotPCFFTlRJVFkgQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICIteSBlcGVsLXJlbGVhc2UKKyAgICAgcHl0aG9uMy1wZXhwZWN0IHh6IHdoaWNoIHB5dGhvbjMtSmluamEyIE1lc2EtbGliRUdMMSBsaWJTREwtZGV2ZWwgeHRlcm0gcnBjZ2VuCisgICAgICQgc3VkbyBwaXAzIGluc3RhbGwgR2l0UHl0aG9uIj4KKzwhRU5USVRZIENFTlRPUzdfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgIi15IGVwZWwtcmVsZWFzZQogICAgICAkIHN1ZG8geXVtIG1ha2VjYWNoZQotICAgICAkIHN1ZG8geXVtIGluc3RhbGwgZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uIHVuemlwIHBlcmwgcGF0Y2ggXAorICAgICAkIHN1ZG8geXVtIGluc3RhbGwgZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKICAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIHNvY2F0IFwKLSAgICAgcGVybC1EYXRhLUR1bXBlciBwZXJsLVRleHQtUGFyc2VXb3JkcyBwZXJsLVRocmVhZC1RdWV1ZSBweXRob24zNC1waXAgeHogXAorICAgICBwZXJsLURhdGEtRHVtcGVyIHBlcmwtVGV4dC1QYXJzZVdvcmRzIHBlcmwtVGhyZWFkLVF1ZXVlIHB5dGhvbjM2LXBpcCB4eiBcCiAgICAgIHdoaWNoIFNETC1kZXZlbCB4dGVybQogICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiBqaW5qYTIiPgorPCFFTlRJVFkgQ0VOVE9TOF9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiLXkgZXBlbC1yZWxlYXNlCisgICAgICQgc3VkbyBkbmYgY29uZmlnLW1hbmFnZXIgLS1zZXQtZW5hYmxlZCBQb3dlclRvb2xzCisgICAgICQgc3VkbyBkbmYgbWFrZWNhY2hlCisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBnYXdrIG1ha2Ugd2dldCB0YXIgYnppcDIgZ3ppcCBweXRob24zIHVuemlwIHBlcmwgcGF0Y2ggXAorICAgICBkaWZmdXRpbHMgZGlmZnN0YXQgZ2l0IGNwcCBnY2MgZ2NjLWMrKyBnbGliYy1kZXZlbCB0ZXhpbmZvIGNocnBhdGggY2NhY2hlIFwKKyAgICAgc29jYXQgcGVybC1EYXRhLUR1bXBlciBwZXJsLVRleHQtUGFyc2VXb3JkcyBwZXJsLVRocmVhZC1RdWV1ZSBweXRob24zLXBpcCBcCisgICAgIHB5dGhvbjMtR2l0UHl0aG9uIHB5dGhvbjMtamluamEyIHB5dGhvbjMtcGV4cGVjdCB4eiB3aGljaCBTREwtZGV2ZWwgeHRlcm0gXAorICAgICBycGNnZW4iPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwKaW5kZXggNTk5OWIyOS4uOWE0MjczYSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtdXNhZ2UueG1sCkBAIC0yMTgyLDcgKzIxODIsNyBAQAogICAgICAgICAgICAgICBtZXRhLXRvb2xjaGFpbgogICAgICAgICAgICAgICBtZXRhLWlkZS1zdXBwb3J0CiAKLSAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2JworICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYtNjQnCiAKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIE9uY2UgeW91J3ZlIGRvbmUgdGhhdCwgeW91IGNhbiBjZCB0byB3aGF0ZXZlciBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYzFmNDYxZi4uZmExZmE4YQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTM0LDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNDwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTM8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjU8L3Jldm51bWJlcj4KQEAgLTQyLDExICs0MSw2IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE0PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNjwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTQ8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgpAQCAtMTAzLDkgKzk3LDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTEyOSw3ICsxMjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTQ2LDE4ICsxNDUsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbAppbmRleCA0OWZmODYyLi5kOTRjYjMyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxwYXJhIGlkPSdmYXEtbm90LW1lZXRpbmctcmVxdWlyZW1lbnRzJz4KICAgICAgICAgICAgICAgICBNeSBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCB0aGUKICAgICAgICAgICAgICAgICByZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiB2ZXJzaW9ucy4KLSAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBJIGRvIG5vdCBoYXZlIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIEkgZG8gbm90IGhhdmUgUHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXIuCiAgICAgICAgICAgICAgICAgQ2FuIEkgc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0PwogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3F1ZXN0aW9uPgpAQCAtNDMsNyArNDMsNyBAQAogICAgICAgICAgICAgICAgIHN5c3RlbSBhIGNvdXBsZSBkaWZmZXJlbnQgd2F5cyAoaS5lLiBidWlsZGluZyBhIHRhcmJhbGwgb3IKICAgICAgICAgICAgICAgICBkb3dubG9hZGluZyBhIHRhcmJhbGwpLgogICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3Igc3RlcHMgb24gaG93IHRvIHVwZGF0ZSB5b3VyIGJ1aWxkIHRvb2xzLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2Fuc3dlcj4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCmluZGV4IDhkNTBhYjkuLjk0MjJiNWEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbApAQCAtNjgwLDcgKzY4MCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHJlcXVpcmVtZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC9saW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0xNzU0LDcgKzE3NTQsNyBAQAogICAgICAgICAgICAgR2l0IHRoYXQgbWVldHMgdGhpcyByZXF1aXJlbWVudCwgeW91IGNhbiB1c2UgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGR0b29scy10YXJiYWxsPC9maWxlbmFtZT4gdGhhdCBkb2VzLgogICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L2xpbms+IgorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMjExMCw3ICsyMTEwLDcgQEAKICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgaW5oZXJpdCBibHVldG9vdGgKLSAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfQorICAgICBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IgogICAgICBQQUNLQUdFQ09ORklHW2JsdWV6NF0gPSAiLS1lbmFibGUtYmx1ZXRvb3RoLC0tZGlzYWJsZS1ibHVldG9vdGgsYmx1ZXo0IgogICAgICBQQUNLQUdFQ09ORklHW2JsdWV6NV0gPSAiLS1lbmFibGUtYmx1ZXo1LC0tZGlzYWJsZS1ibHVlejUsYmx1ZXo1IgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMzIxNSw3ICszMjE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmVjZW50IHZlcnNpb24sIHlvdSBjYW4gaW5zdGFsbCB0aGUgYnVpbGR0b29scywgd2hpY2gKICAgICAgICAgICAgICAgICAgICAgd2lsbCBwcm92aWRlIGl0LgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkdG9vbHMgdGFyYmFsbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzYyNCw3ICszNjI0LDcgQEAKICAgICAgICAgICAgIGltYWdlIHR5cGVzLCB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbCBpbWFnZSBiYXNlIG5hbWUgYXMgYmVlbgogICAgICAgICAgICAgcmVtb3ZlZCBsZWF2aW5nIG9ubHkgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0VSTkVMX0lNQUdFX0JBU0VfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfQorICAgICBLRVJORUxfSU1BR0VfQkFTRV9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgSWYgeW91IGhhdmUgcmVjaXBlcyBvciBjbGFzc2VzIHRoYXQgdXNlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0lNQUdFX0JBU0VfTkFNRTwvZmlsZW5hbWU+IGRpcmVjdGx5LCB5b3UgbWlnaHQKQEAgLTU2MDEsNyArNTYwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHRpbWUsIHVzZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0X29udGFyZ2V0KCk8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBvciBjYWxsCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdC1pbnRlcmNlcHRzIGRlZmVyX3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBBbnkgZmFpbHVyZSBvZiBhIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCAoaW5jbHVkaW5nIDxmaWxlbmFtZT5leGl0IDE8L2ZpbGVuYW1lPikKQEAgLTYxOTIsNyArNjE5Miw3IEBACiAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IGRlZmVyIGEgcG9zdGluc3RhbGwgdG8gZmlyc3QgYm9vdCBvbgogICAgICAgICAgICAgdGhlIHRhcmdldCByYXRoZXIgdGhhbiBhdCByb290ZnMgY3JlYXRpb24gdGltZSwgdXNlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0X29udGFyZ2V0KCk8L2ZpbGVuYW1lPiBvciBjYWxsCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3QtaW50ZXJjZXB0cyBkZWZlcl90b19maXJzdF9ib290PC9maWxlbmFtZT4gZnJvbQorICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290PC9maWxlbmFtZT4gZnJvbQogICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4uCiAgICAgICAgICAgICBBbnkgZmFpbHVyZSBvZiBhIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+IHNjcmlwdAogICAgICAgICAgICAgKGluY2x1ZGluZyBleGl0IDEpIHRyaWdnZXJzIGFuIGVycm9yIGR1cmluZyB0aGUKQEAgLTcwOTUsNiArNzA5NSwyMDcgQEAKICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CiAKKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0zLjEtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtbWluaW11bS1zeXN0ZW0tcmVxdWlyZW1lbnRzJz4KKyAgICAgICAgPHRpdGxlPk1pbmltdW0gc3lzdGVtIHJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHZlcnNpb25zIC8gcmVxdWlyZW1lbnRzIG9mIGJ1aWxkIGhvc3QgY29tcG9uZW50cyBoYXZlIGJlZW4gdXBkYXRlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmdjYyA1LjA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+cHl0aG9uIDMuNTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT50YXIgMS4yODwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cnBjZ2VuPC9maWxlbmFtZT4gaXMgbm93IHJlcXVpcmVkIG9uIHRoZSBob3N0IChwYXJ0IG9mIHRoZSA8ZmlsZW5hbWU+bGliYy1kZXYtYmluPC9maWxlbmFtZT4gcGFja2FnZSBvbiBVYnVudHUsIERlYmlhbiBhbmQgcmVsYXRlZCBkaXN0cmlidXRpb25zLCBhbmQgdGhlIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IHBhY2thZ2Ugb24gUlBNLWJhc2VkIGRpc3RyaWJ1dGlvbnMpLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIDxmaWxlbmFtZT5tYWtlaW5mbzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cG9kMm1hbjwvZmlsZW5hbWU+CisgICAgICAgICAgICB0b29scyBhcmUgPGVtcGhhc2lzPm5vIGxvbmdlcjwvZW1waGFzaXM+IHJlcXVpcmVkIG9uIHRoZSBob3N0LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtbXBjODMxNWUtcmRiLXJlbW92ZWQnPgorICAgICAgICA8dGl0bGU+bXBjODMxNWUtcmRiIG1hY2hpbmUgcmVtb3ZlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgTVBDODMxNUUtUkRCIG1hY2hpbmUgaXMgb2xkL29ic29sZXRlIGFuZCB1bm9idGFpbmFibGUsIHRodXMgZ2l2ZW4gdGhlIG1haW50ZW5hbmNlIGJ1cmRlbgorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tcGM4MzE1ZS1yZGI8L2ZpbGVuYW1lPiBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gdGhhdCBzdXBwb3J0ZWQgaXQgaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgaW4gdGhpcyByZWxlYXNlLiBUaGUgcmVtb3ZhbCBkb2VzIGxlYXZlIGEgZ2FwIGluIG9mZmljaWFsIFBvd2VyUEMgcmVmZXJlbmNlIGhhcmR3YXJlCisgICAgICAgICAgICBzdXBwb3J0OyB0aGlzIG1heSBjaGFuZ2UgaW4gZnV0dXJlIGlmIGEgc3VpdGFibGUgbWFjaGluZSB3aXRoIGFjY29tcGFueWluZyBzdXBwb3J0IHJlc291cmNlcworICAgICAgICAgICAgaXMgZm91bmQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcHl0aG9uLTItcmVtb3ZlZCc+CisgICAgICAgIDx0aXRsZT5QeXRob24gMiByZW1vdmVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIER1ZSB0byB0aGUgZXhwaXJhdGlvbiBvZiB1cHN0cmVhbSBzdXBwb3J0IGluIEphbnVhcnkgMjAyMCwgc3VwcG9ydCBmb3IgUHl0aG9uIDIgaGFzIG5vdyBiZWVuIHJlbW92ZWQ7IGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBQeXRob24gMyBpbnN0ZWFkLiBJZiBhYnNvbHV0ZWx5IG5lZWRlZCB0aGVyZSBpcyBhIG1ldGEtcHl0aG9uMiBjb21tdW5pdHkgbGF5ZXIgY29udGFpbmluZyBQeXRob24gMiwgcmVsYXRlZCBjbGFzc2VzIGFuZCB2YXJpb3VzIFB5dGhvbiAyLWJhc2VkIG1vZHVsZXMsIGhvd2V2ZXIgaXQgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGFzIHN1cHBvcnRlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXJlcHJvZHVjaWJsZS1idWlsZHMnPgorICAgICAgICA8dGl0bGU+UmVwcm9kdWNpYmxlIGJ1aWxkcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGRpZmZlcmVuY2VzIGluIG91dHB1dCBmaWxlcyAoYWlkaW5nIGJpbmFyeSByZXByb2R1Y2liaWxpdHkpLCB0aGUgUG9reSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiAoPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPkRJU1RSTzwvbGluaz4gPSAicG9reSI8L2ZpbGVuYW1lPikgbm93IGluaGVyaXRzIHRoZSA8ZmlsZW5hbWU+cmVwcm9kdWNpYmxlX2J1aWxkPC9maWxlbmFtZT4gY2xhc3MgYnkgZGVmYXVsdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1wdGVzdC1mZWF0dXJlLWltcGFjdCc+CisgICAgICAgIDx0aXRsZT5JbXBhY3Qgb2YgcHRlc3QgZmVhdHVyZSBpcyBub3cgbW9yZSBzaWduaWZpY2FudDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgUG9reSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiAoPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPkRJU1RSTzwvbGluaz4gPSAicG9reSI8L2ZpbGVuYW1lPikgZW5hYmxlcyBwdGVzdHMgYnkgZGVmYXVsdCB0byBlbmFibGUgcnVudGltZSB0ZXN0aW5nIG9mIHZhcmlvdXMgY29tcG9uZW50cy4gSW4gdGhpcyByZWxlYXNlLCBhIGRlcGVuZGVuY3kgbmVlZGVkIHRvIGJlIGFkZGVkIHRoYXQgaGFzIHJlc3VsdGVkIGluIGEgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4gdGhlIG51bWJlciBvZiBjb21wb25lbnRzIHRoYXQgd2lsbCBiZSBidWlsdCBqdXN0IHdoZW4gYnVpbGRpbmcgYSBzaW1wbGUgaW1hZ2Ugc3VjaCBhcyBjb3JlLWltYWdlLW1pbmltYWwuIElmIHlvdSBkbyBub3QgbmVlZCBydW50aW1lIHRlc3RzIGVuYWJsZWQgZm9yIGNvcmUgY29tcG9uZW50cywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSByZW1vdmUgInB0ZXN0IiBmcm9tIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4gdG8gc2F2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBidWlsZCB0aW1lIGUuZy4gYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgaW4geW91ciBjb25maWd1cmF0aW9uOgorCisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICBESVNUUk9fRkVBVFVSRVNfcmVtb3ZlID0gInB0ZXN0IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgcmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jaGtjb25maWc8L2ZpbGVuYW1lPjogb2Jzb2xldGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmNvbnNvbGUtdG9vbHM8L2ZpbGVuYW1lPjogb2Jzb2xldGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmVuY2hhbnQ8L2ZpbGVuYW1lPjogcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmVuY2hhbnQyPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmZvb21hdGljLWZpbHRlcnM8L2ZpbGVuYW1lPjogb2Jzb2xldGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpYmlkbjwvZmlsZW5hbWU+OiBubyBsb25nZXIgbmVlZGVkLCBtb3ZlZCB0byBtZXRhLW9lPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJtb2R1bGVtZDwvZmlsZW5hbWU+OiByZXBsYWNlZCBieSA8ZmlsZW5hbWU+bGlibW9kdWxlbWQtdjE8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPjogZHJvcCA0LjE5LCA1LjIgdmVyc2lvbiByZWNpcGVzICg1LjQgbm93IHByb3ZpZGVkKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bnNwcjwvZmlsZW5hbWU+OiBubyBsb25nZXIgbmVlZGVkLCBtb3ZlZCB0byBtZXRhLW9lPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5uc3M8L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9uPC9maWxlbmFtZT46IFB5dGhvbiAyIHJlbW92ZWQgKFB5dGhvbiAzIHByZWZlcnJlZCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbi1zZXR1cHRvb2xzPC9maWxlbmFtZT46IFB5dGhvbiAyIHZlcnNpb24gcmVtb3ZlZCAocHl0aG9uMy1zZXR1cHRvb2xzIHByZWZlcnJlZCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnN5c3Byb2Y8L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+dGV4aTJodG1sPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT51LWJvb3QtZnctdXRpbHM8L2ZpbGVuYW1lPjogZnVuY3Rpb25hbGx5IHJlcGxhY2VkIGJ5IDxmaWxlbmFtZT5saWJ1Ym9vdGVudjwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLWZlYXR1cmVzLWNoZWNrJz4KKyAgICAgICAgPHRpdGxlPmZlYXR1cmVzX2NoZWNrIGNsYXNzIHJlcGxhY2VzIGRpc3Ryb19mZWF0dXJlc19jaGVjazwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IGNsYXNzIGhhcyBoYWQgaXRzIGZ1bmN0aW9uYWxpdHkgZXhwYW5kZWQsIG5vdyBzdXBwb3J0aW5nIDxmaWxlbmFtZT5BTllfT0ZfTUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+UkVRVUlSRURfTUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Q09ORkxJQ1RfTUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+QU5ZX09GX0NPTUJJTkVEX0ZFQVRVUkVTPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5SRVFVSVJFRF9DT01CSU5FRF9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Q09ORkxJQ1RfQ09NQklORURfRkVBVFVSRVM8L2ZpbGVuYW1lPi4gQXMgYSByZXN1bHQgdGhlIGNsYXNzIGhhcyBub3cgYmVlbiByZW5hbWVkIHRvIDxmaWxlbmFtZT5mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+OyB0aGUgPGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IGNsYXNzIHN0aWxsIGV4aXN0cyBidXQgZ2VuZXJhdGVzIGEgd2FybmluZyBhbmQgcmVkaXJlY3RzIHRvIHRoZSBuZXcgY2xhc3MuIEluIHByZXBhcmF0aW9uIGZvciBhIGZ1dHVyZSByZW1vdmFsIG9mIHRoZSBvbGQgY2xhc3MgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXBkYXRlIHJlY2lwZXMgY3VycmVudGx5IGluaGVyaXRpbmcgPGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IHRvIGluaGVyaXQgPGZpbGVuYW1lPmZlYXR1cmVzX2NoZWNrPC9maWxlbmFtZT4gaW5zdGVhZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXJlbW92ZWQtY2xhc3Nlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIGNsYXNzZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGhhdmUgYmVlbiByZW1vdmVkOgorCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGlzdHV0aWxzLWJhc2U8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5kaXN0dXRpbHM8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJjLWNvbW1vbjwvZmlsZW5hbWU+OiBtZXJnZWQgaW50byB0aGUgZ2xpYmMgcmVjaXBlIGFzIG5vdGhpbmcgZWxzZSB1c2VkIGl0LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9uLWRpcjwvZmlsZW5hbWU+OiBtb3ZlZCB0byBtZXRhLXB5dGhvbjI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbm5hdGl2ZTwvZmlsZW5hbWU+OiBtb3ZlZCB0byBtZXRhLXB5dGhvbjI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNldHVwdG9vbHM8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT50aW5kZXJjbGllbnQ8L2ZpbGVuYW1lPjogZHJvcHBlZCBhcyBpdCB3YXMgb2Jzb2xldGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXNyYy11cmktY2hlY2tzdW1zJz4KKyAgICAgICAgPHRpdGxlPlNSQ19VUkkgY2hlY2tzdW0gYmVoYXZpb3VyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFByZXZpb3VzbHksIHJlY2lwZXMgYnkgdHJhZGl0aW9uIGluY2x1ZGVkIGJvdGggU0hBMjU2IGFuZCBNRDUgY2hlY2tzdW1zIGZvciByZW1vdGVseSBmZXRjaGVkIGZpbGVzIGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPiwgZXZlbiB0aG91Z2ggb25seSBvbmUgaXMgYWN0dWFsbHkgbWFuZGF0ZWQuIEhvd2V2ZXIsIHRoZSBNRDUgY2hlY2tzdW0gZG9lcyBub3QgYWRkIG11Y2ggZ2l2ZW4gaXRzIGluaGVyZW50IHdlYWtuZXNzOyB0aHVzIHdoZW4gYSBjaGVja3N1bSBmYWlscyBvbmx5IHRoZSBTSEEyNTYgc3VtIHdpbGwgbm93IGJlIHByaW50ZWQuIFRoZSBtZDVzdW0gd2lsbCBzdGlsbCBiZSB2ZXJpZmllZCBpZiBpdCBpcyBzcGVjaWZpZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLW5wbSc+CisgICAgICAgIDx0aXRsZT5ucG0gZmV0Y2hlciBjaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBucG0gZmV0Y2hlciBoYXMgYmVlbiBjb21wbGV0ZWx5IHJld29ya2VkIGluIHRoaXMgcmVsZWFzZS4gVGhlIG5wbSBmZXRjaGVyIG5vdyBvbmx5IGZldGNoZXMgdGhlIHBhY2thZ2Ugc291cmNlIGl0c2VsZiBhbmQgbm8gbG9uZ2VyIHRoZSBkZXBlbmRlbmNpZXM7IHRoZXJlIGlzIG5vdyBhbHNvIGFuIG5wbXN3IGZldGNoZXIgd2hpY2ggZXhwbGljaXRseSBmZXRjaGVzIHRoZSBzaHJpbmt3cmFwIGZpbGUgYW5kIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgcmVtb3ZlcyB0aGUgc2xpZ2h0bHkgYXdrd2FyZCA8ZmlsZW5hbWU+TlBNX0xPQ0tET1dOPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5OUE1fU0hSSU5LV1JBUDwvZmlsZW5hbWU+IHZhcmlhYmxlcyB3aGljaCBwb2ludGVkIHRvIGxvY2FsIGZpbGVzOyB0aGUgbG9ja2Rvd24gZmlsZSBpcyBubyBsb25nZXIgbmVlZGVkIGF0IGFsbC4gQWRkaXRpb25hbGx5LCB0aGUgcGFja2FnZSBuYW1lIGluIDxmaWxlbmFtZT5ucG06Ly88L2ZpbGVuYW1lPiBlbnRyaWVzIGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPiBpcyBub3cgc3BlY2lmaWVkIHVzaW5nIGEgPGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiB0aGUgZWFybGllciA8ZmlsZW5hbWU+bmFtZTwvZmlsZW5hbWU+IHdoaWNoIG92ZXJsYXBwZWQgd2l0aCB0aGUgZ2VuZXJpYyA8ZmlsZW5hbWU+bmFtZTwvZmlsZW5hbWU+IHBhcmFtZXRlci4gQWxsIHJlY2lwZXMgdXNpbmcgdGhlIG5wbSBmZXRjaGVyIHdpbGwgbmVlZCB0byBiZSBjaGFuZ2VkIGFzIGEgcmVzdWx0LiAKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFuIGV4YW1wbGUgb2YgdGhlIG5ldyBzY2hlbWU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CitTUkNfVVJJID0gIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSBcCisgICAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS9ucG0tc2hyaW5rd3JhcC5qc29uIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIHdoZXJlIHRoZSBzb3VyY2VzIGFyZSBmZXRjaGVkIGZyb20gZ2l0IHJhdGhlciB0aGFuIGFuIG5wbSByZXBvc2l0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Zvby9iYXIuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgbnBtc3c6Ly8ke1RISVNESVJ9L25wbS1zaHJpbmt3cmFwLmpzb24iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBkZXZ0b29sIGFuZCByZWNpcGV0b29sIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8gbWF0Y2ggd2l0aCB0aGUgbnBtIGZldGNoZXIgY2hhbmdlcy4gT3RoZXIgdGhhbiBwcm9kdWNpbmcgd29ya2luZyBhbmQgbW9yZSBjb21wbGV0ZSByZWNpcGVzIGZvciBucG0gc291cmNlcywgdGhlcmUgaXMgYWxzbyBhIG1pbm9yIGNoYW5nZSB0byB0aGUgY29tbWFuZCBsaW5lIGZvciBkZXZ0b29sOiB0aGUgPGZpbGVuYW1lPi0tZmV0Y2gtZGV2PC9maWxlbmFtZT4gb3B0aW9uIGhhcyBiZWVuIHJlbmFtZWQgdG8gPGZpbGVuYW1lPi0tbnBtLWRldjwvZmlsZW5hbWU+IGFzIGl0IGlzIG5wbS1zcGVjaWZpYy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1wYWNrYWdpbmctY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5QYWNrYWdpbmcgY2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW50bHRvb2w8L2ZpbGVuYW1lPiBoYXMgYmVlbiByZW1vdmVkIGZyb20gPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLXNkazwvZmlsZW5hbWU+IGFzIGl0IGlzIHJhcmVseSBuZWVkZWQgdG8gYnVpbGQgbW9kZXJuIHNvZnR3YXJlIC0gZ2V0dGV4dCBjYW4gZG8gbW9zdCBvZiB0aGUgdGhpbmdzIGl0IHVzZWQgdG8gYmUgbmVlZGVkIGZvci4gPGZpbGVuYW1lPmludGx0b29sPC9maWxlbmFtZT4gaGFzIGFsc28gYmVlbiByZW1vdmVkIGZyb20gPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLXNlbGYtaG9zdGVkPC9maWxlbmFtZT4gYXMgaXQgaXMgbm90IG5lZWRlZCB0byBmb3Igc3RhbmRhcmQgYnVpbGRzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5naXQ6IDxmaWxlbmFtZT5naXQtYW08L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmdpdC1kaWZmdG9vbDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Z2l0LXN1Ym1vZHVsZTwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPmdpdC1yZXF1ZXN0LXB1bGw8L2ZpbGVuYW1lPiBhcmUgbm8gbG9uZ2VyIHBlcmwtYmFzZWQsIHNvIGFyZSBub3cgaW5zdGFsbGVkIHdpdGggdGhlIG1haW4gPGZpbGVuYW1lPmdpdDwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGVhZCBvZiB3aXRoaW4gPGZpbGVuYW1lPmdpdC1wZXJsdG9vbHM8L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5sZGNvbmZpZzwvZmlsZW5hbWU+IGJpbmFyeSBidWlsdCBhcyBwYXJ0IG9mIGdsaWJjIGhhcyBub3cgYmVlbiBtb3ZlZCB0byBpdHMgb3duIDxmaWxlbmFtZT5sZGNvbmZpZzwvZmlsZW5hbWU+IHBhY2thZ2UgKG5vdGUgbm8gPGZpbGVuYW1lPmdsaWJjLTwvZmlsZW5hbWU+IHByZWZpeCkuIFRoaXMgcGFja2FnZSBpcyBpbiB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4gb2YgdGhlIG1haW4gPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4gcGFja2FnZSBpZiA8ZmlsZW5hbWU+bGRjb25maWc8L2ZpbGVuYW1lPiBpcyBwcmVzZW50IGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJldmVudDwvZmlsZW5hbWU+IG5vdyBzcGxpdHMgZWFjaCBzaGFyZWQgbGlicmFyeSBpbnRvIGl0cyBvd24gcGFja2FnZSAoYXMgRGViaWFuIGRvZXMpLiBTaW5jZSB0aGVzZSBhcmUgc2hhcmVkIGxpYnJhcmllcyBhbmQgd2lsbCBiZSBwdWxsZWQgaW4gdGhyb3VnaCB0aGUgbm9ybWFsIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgaGFuZGxpbmcsIHRoZXJlIHNob3VsZCBiZSBubyBpbXBhY3QgdG8gZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgb3RoZXIgdGhhbiBsZXNzIHVubmVjZXNzYXJ5IGxpYnJhcmllcyBiZWluZyBpbnN0YWxsZWQgaW4gc29tZSBjYXNlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+bGludXgtZmlybXdhcmUgbm93IGhhcyBhIG5ldyBwYWNrYWdlIGZvciA8ZmlsZW5hbWU+YmNtNDM2NmM8L2ZpbGVuYW1lPiBhbmQgaW5jbHVkZXMgYXZhaWxhYmxlIE5WUkFNIGNvbmZpZyBmaWxlcyBpbnRvIHRoZSA8ZmlsZW5hbWU+YmNtNDMzNDA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJjbTQzMzYyPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iY200MzQzMDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+YmNtNDM1Ni1wY2llPC9maWxlbmFtZT4gcGFja2FnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5oYXJmYnV6ejwvZmlsZW5hbWU+IG5vdyBzcGxpdHMgdGhlIG5ldyA8ZmlsZW5hbWU+bGliaGFyZmJ1enotc3Vic2V0LnNvPC9maWxlbmFtZT4gbGlicmFyeSBpbnRvIGl0cyBvd24gcGFja2FnZSB0byByZWR1Y2UgdGhlIG1haW4gcGFja2FnZSBzaXplIGluIGNhc2VzIHdoZXJlIDxmaWxlbmFtZT5saWJoYXJmYnV6ei1zdWJzZXQuc288L2ZpbGVuYW1lPiBpcyBub3QgbmVlZGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcGFja2FnZS1xYS13YXJuaW5ncyc+CisgICAgICAgIDx0aXRsZT5BZGRpdGlvbmFsIHdhcm5pbmdzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdhcm5pbmdzIHdpbGwgbm93IGJlIHNob3duIGF0IDxmaWxlbmFtZT5kb19wYWNrYWdlX3FhPC9maWxlbmFtZT4gdGltZSBpbiB0aGUgZm9sbG93aW5nIGNpcmN1bXN0YW5jZXM6CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgcmVjaXBlIGluc3RhbGxzIDxmaWxlbmFtZT4uZGVza3RvcDwvZmlsZW5hbWU+IGZpbGVzIGNvbnRhaW5pbmcgPGZpbGVuYW1lPk1pbWVUeXBlPC9maWxlbmFtZT4ga2V5cyBidXQgZG9lcyBub3QgaW5oZXJpdCB0aGUgbmV3IDxmaWxlbmFtZT5taW1lLXhkZzwvZmlsZW5hbWU+IGNsYXNzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgcmVjaXBlIGluc3RhbGxzIDxmaWxlbmFtZT4ueG1sPC9maWxlbmFtZT4gZmlsZXMgaW50byA8ZmlsZW5hbWU+JHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzPC9maWxlbmFtZT4gYnV0IGRvZXMgbm90IGluaGVyaXQgdGhlIDxmaWxlbmFtZT5taW1lPC9maWxlbmFtZT4gY2xhc3M8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgICAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS14ODYtbGl2ZS13aWMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGltYWdlIHR5cGUgbm93IHVzZWQgaW5zdGVhZCBvZiA8ZmlsZW5hbWU+bGl2ZTwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQgZm9yIHg4NjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jPC9maWxlbmFtZT4gKGluaGVyaXRlZCBieSBtb3N0IHg4NiBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zKSBub3cgc3BlY2lmaWVzIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mIDxmaWxlbmFtZT5saXZlPC9maWxlbmFtZT4gYnkgZGVmYXVsdCBpbiA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4uIFRoZSA8ZmlsZW5hbWU+bGl2ZTwvZmlsZW5hbWU+IGltYWdlIHR5cGUgd2lsbCBsaWtlbHkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlIHNvIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gaW5zdGVhZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1taXNjJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgY2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgdW5kb2N1bWVudGVkIDxmaWxlbmFtZT5TUkNfRElTVFJJQlVURV9MSUNFTlNFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGhhcyBub3cgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBhIG5ldyA8ZmlsZW5hbWU+QVZBSUxBQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT4gdmFyaWFibGUgd2hpY2ggaXMgZHluYW1pY2FsbHkgc2V0IGJhc2VkIHVwb24gbGljZW5zZSBmaWxlcyBmb3VuZCBpbiA8ZmlsZW5hbWU+JHtDT01NT05fTElDRU5TRV9ESVJ9PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4ke0xJQ0VOU0VfUEFUSH08L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHR1bmUgZGVmaW5pdGlvbiBmb3IgYmlnLWVuZGlhbiBtaWNyb2JsYXplIG1hY2hpbmVzIGlzIG5vdyA8ZmlsZW5hbWU+bWljcm9ibGF6ZTwvZmlsZW5hbWU+IGluc3RlYWQgb2YgPGZpbGVuYW1lPm1pY3JvYmxhemVlYjwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bmV3bGliPC9maWxlbmFtZT4gbm8gbG9uZ2VyIGhhcyBidWlsdC1pbiBzeXNjYWxscy4gPGZpbGVuYW1lPmxpYmdsb3NzPC9maWxlbmFtZT4gc2hvdWxkIHRoZW4gcHJvdmlkZSB0aGUgc3lzY2FsbHMsIDxmaWxlbmFtZT5jcnQwLm88L2ZpbGVuYW1lPiBhbmQgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIG5vIGxvbmdlciBwYXJ0IG9mIDxmaWxlbmFtZT5uZXdsaWI8L2ZpbGVuYW1lPiBpdHNlbGYuIElmIHlvdSBhcmUgdXNpbmcgPGZpbGVuYW1lPlRDTElCQyA9ICJuZXdsaWIiPC9maWxlbmFtZT4gdGhpcyBub3cgbWVhbnMgdGhhdCB5b3UgbXVzdCBsaW5rIGFwcGxpY2F0aW9ucyB3aXRoIGJvdGggPGZpbGVuYW1lPm5ld2xpYjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+bGliZ2xvc3M8L2ZpbGVuYW1lPiwgd2hlcmVhcyBiZWZvcmUgPGZpbGVuYW1lPm5ld2xpYjwvZmlsZW5hbWU+IHdvdWxkIHJ1biBpbiBtYW55IGNvbmZpZ3VyYXRpb25zIGJ5IGl0c2VsZi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCis8L3NlY3Rpb24+CisKKwogPC9jaGFwdGVyPgogPCEtLQogdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKaW5kZXggNDRiYTY3Yy4uMjk0YjI5NyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCkBAIC0yMTAsNiArMjEwLDEyIEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz51c2Job3N0OjwvZW1waGFzaXM+IEluY2x1ZGUgVVNCIEhvc3QKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCAoYWxsb3dzIHRvIGNvbm5lY3QgZXh0ZXJuYWwga2V5Ym9hcmQsIG1vdXNlLAogICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBuZXR3b3JrIGV0YykuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz51c3JtZXJnZTo8L2VtcGhhc2lzPiBNZXJnZXMgdGhlIAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2JpbjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+L3NiaW48L2ZpbGVuYW1lPiwgCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vbGliPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+L2xpYjY0PC9maWxlbmFtZT4gICAgICAgCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBjb3VudGVycGFydHMgaW4gdGhlIAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3VzcjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0byBwcm92aWRlIGJldHRlciBwYWNrYWdlIAorICAgICAgICAgICAgICAgICAgIGFuZCBhcHBsaWNhdGlvbiBjb21wYXRpYmlsaXR5LjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+d2F5bGFuZDo8L2VtcGhhc2lzPiBJbmNsdWRlIHRoZQogICAgICAgICAgICAgICAgICAgICBXYXlsYW5kIGRpc3BsYXkgc2VydmVyIHByb3RvY29sIGFuZCB0aGUgbGlicmFyeSB0aGF0CiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIGl0LjwvcGFyYT48L2xpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGI0NDJmNzAuLjlhOTE0ZjEKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAKICAgICAgICAgPC9hdXRob3Jncm91cD4KQEAgLTM0LDIyICszMywxNyBAQAogICAgICAgICA8cmV2aGlzdG9yeT4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjQuMCtnaXQ8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4yNCBOb3ZlbWJlciAyMDEwPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZTwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxkYXRlPk5vdmVtYmVyIDIwMTA8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDAuOSBSZWxlYXNlPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBBcHJpbCAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTE8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+MjMgTWF5IDIwMTE8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBPY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDExPC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CkBAIC03MywxMSArNjcsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEzNCw5ICsxMjMsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTU4LDcgKzE1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNzUsMTggKzE2OSwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKaW5kZXggOGUwYzlmNS4uMjdmMTdkZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKQEAgLTgsMTEgKzgsMTEgQEAKIAogPHBhcmE+CiAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgY29uc2lzdHMgb2Ygc2V2ZXJhbCBjb21wb25lbnRzLgotICAgIFVuZGVyc3RhbmRpbmcgdGhlbSBhbmQga25vd2luZyB3aGVyZSB0aGV5IGFyZSBsb2NhdGVkIGlzIGtleSB0byB1c2luZyB0aGUKLSAgICBZb2N0byBQcm9qZWN0IHdlbGwuCisgICAgY29uc2lzdHMgb2YgbnVtZXJvdXMgZmlsZXMsIGRpcmVjdG9yaWVzIGFuZCBzdWJkaXJlY3RvcmllczsKKyAgICB1bmRlcnN0YW5kaW5nIHRoZWlyIGxvY2F0aW9ucyBhbmQgY29udGVudHMgaXMga2V5IHRvIHVzaW5nIHRoZQorICAgIFlvY3RvIFByb2plY3QgZWZmZWN0aXZlbHkuCiAgICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgU291cmNlIERpcmVjdG9yeSBhbmQgZ2l2ZXMgaW5mb3JtYXRpb24gYWJvdXQKLSAgICB0aGUgdmFyaW91cyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCisgICAgdGhvc2UgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgogPC9wYXJhPgogCiA8cGFyYT4KQEAgLTIyLDEyICsyMiwxMiBAQAogICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogPC9wYXJhPgogCi08bm90ZT4KLSAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIHRoYXQKLSAgICBjb250YWluIHNwYWNlcy4KLSAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluIHRoZXNlIHR5cGVzCi0gICAgb2YgbmFtZXMuCi08L25vdGU+CisgICAgPG5vdGU+CisgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMgdGhhdAorICAgICAgICBjb250YWluIHNwYWNlcy4KKyAgICAgICAgQmUgc3VyZSB0aGF0IHRoZSBTb3VyY2UgRGlyZWN0b3J5IHlvdSB1c2UgZG9lcyBub3QgY29udGFpbiB0aGVzZSB0eXBlcworICAgICAgICBvZiBuYW1lcy4KKyAgICA8L25vdGU+CiAKIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtY29yZSc+CiAgICAgPHRpdGxlPlRvcC1MZXZlbCBDb3JlIENvbXBvbmVudHM8L3RpdGxlPgpAQCAtNDgsMTggKzQ4LDE4IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgICAgICBpbnRlcnByZXRlciwgcmVhZHMgdGhlIFlvY3RvIFByb2plY3QgTWV0YWRhdGEgYW5kIHJ1bnMgdGhlIHRhc2tzCiAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoYXQgZGF0YS4KLSAgICAgICAgICAgIEZhaWx1cmVzIGFyZSB1c3VhbGx5IGZyb20gdGhlIE1ldGFkYXRhIGFuZCBub3QgZnJvbSBCaXRCYWtlIGl0c2VsZi4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgbW9zdCB1c2VycyBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCBCaXRCYWtlLgorICAgICAgICAgICAgRmFpbHVyZXMgYXJlIHVzdWFsbHkgY2F1c2VkIGJ5IGVycm9ycyBpbiB5b3VyIE1ldGFkYXRhIGFuZCBub3QgZnJvbSBCaXRCYWtlIGl0c2VsZjsKKyAgICAgICAgICAgIGNvbnNlcXVlbnRseSwgbW9zdCB1c2VycyBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCBCaXRCYWtlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlCi0gICAgICAgICAgICBtYWluIEJpdEJha2UgZXhlY3V0YWJsZSwgd2hpY2ggcmVzaWRlcyBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2Jpbi88L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHN0YXJ0cy4KKyAgICAgICAgICAgIG1haW4gQml0QmFrZSBleGVjdXRhYmxlICh3aGljaCByZXNpZGVzIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvYmluLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSkgc3RhcnRzLgogICAgICAgICAgICAgU291cmNpbmcgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCAoaS5lLgogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pCi0gICAgICAgICAgICBwbGFjZXMgdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW48L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyAoaW4gdGhhdCBvcmRlcikgaW50bworICAgICAgICAgICAgcGxhY2VzIHRoZSA8ZmlsZW5hbWU+c2NyaXB0cy88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2Jpbi88L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyAoaW4gdGhhdCBvcmRlcikgaW50bwogICAgICAgICAgICAgdGhlIHNoZWxsJ3MgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KICAgICAgICAgPC9wYXJhPgogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgICAgICBieSBwcm92aWRpbmcgYSBkaXJlY3RvcnkgbmFtZSB3aGVuIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4KICAgICAgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2VwYXJhdGluZyBvdXRwdXQgZnJvbSB5b3VyIGxvY2FsCi0gICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGZpbGVzLCBzZWUgdGhlCisgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGZpbGVzIChjb21tb25seSBkZXNjcmliZWQgYXMgYW4gIm91dCBvZiB0cmVlIiBidWlsZCksIHNlZSB0aGUKICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KQEAgLTEwNCw4ICsxMDQsOCBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaG9sZHMgdGhlIHNvdXJjZSBmb3IgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICAgYXMgd2VsbCBhcyB0ZW1wbGF0ZXMgYW5kIHRvb2xzIHRoYXQgYWxsb3cgeW91IHRvIGdlbmVyYXRlIFBERiBhbmQgSFRNTAogICAgICAgICAgICAgdmVyc2lvbnMgb2YgdGhlIG1hbnVhbHMuCi0gICAgICAgICAgICBFYWNoIG1hbnVhbCBpcyBjb250YWluZWQgaW4gYSBzdWItZm9sZGVyLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmaWxlcyBmb3IgdGhpcyBtYW51YWwgcmVzaWRlIGluCisgICAgICAgICAgICBFYWNoIG1hbnVhbCBpcyBjb250YWluZWQgaW4gaXRzIG93biBzdWItZm9sZGVyOworICAgICAgICAgICAgZm9yIGV4YW1wbGUsIHRoZSBmaWxlcyBmb3IgdGhpcyByZWZlcmVuY2UgbWFudWFsIHJlc2lkZSBpbgogICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5yZWYtbWFudWFsLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTExNCw5ICsxMTQsOSBAQAogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIE9wZW5FbWJlZGRlZC1Db3JlIG1ldGFkYXRhLgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIG1pbmltYWwsIHVuZGVybHlpbmcgT3BlbkVtYmVkZGVkLUNvcmUgbWV0YWRhdGEuCiAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGhvbGRzIHJlY2lwZXMsIGNvbW1vbiBjbGFzc2VzLCBhbmQgbWFjaGluZQotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3IgZW11bGF0ZWQgdGFyZ2V0cyAoPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIHN0cmljdGx5IGVtdWxhdGVkIHRhcmdldHMgKDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4sCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGguKQogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMTI1LDggKzEyNSw4IEBACiAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS1wb2t5LzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUG9reQotICAgICAgICAgICAgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIERlc2lnbmVkIGFib3ZlIHRoZSA8ZmlsZW5hbWU+bWV0YS88L2ZpbGVuYW1lPiBjb250ZW50LCB0aGlzIGRpcmVjdG9yeQorICAgICAgICAgICAgYWRkcyBqdXN0IGVub3VnaCBtZXRhZGF0YSB0byBkZWZpbmUgdGhlIFBva3kgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTQ4LDkgKzE0OCw2IEBACiAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBhZGRzIGFkZGl0aW9uYWwgcmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzCiAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgc2VsZnRlc3RzIHRvIHZlcmlmeSB0aGUgYmVoYXZpb3IKICAgICAgICAgICAgIG9mIHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFlvdSBkbyBub3QgaGF2ZSB0byBhZGQgdGhpcyBsYXllciB0byB5b3VyCiAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgdW5sZXNzIHlvdSB3YW50IHRvIHJ1biB0aGUKICAgICAgICAgICAgIHNlbGZ0ZXN0cy4KQEAgLTE3Miw3ICsxNjksNyBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdmFyaW91cyBpbnRlZ3JhdGlvbiBzY3JpcHRzIHRoYXQgaW1wbGVtZW50CiAgICAgICAgICAgICBleHRyYSBmdW5jdGlvbmFsaXR5IGluIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50IChlLmcuIFFFTVUgc2NyaXB0cykuCiAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHNjcmlwdCBhcHBlbmRzIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBzaGVsbCdzCisgICAgICAgICAgICBzY3JpcHQgcHJlcGVuZHMgdGhpcyBkaXJlY3RvcnkgdG8gdGhlIHNoZWxsJ3MKICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgIDwvcGFyYT4KIApAQCAtMjAyLDcgKzE5OSw4IEBACiAgICAgICAgICAgICB1cCwgYQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICBpcyBjcmVhdGVkLCB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGJlY29tZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSwKLSAgICAgICAgICAgIGFuZCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBjb21tb24gQml0QmFrZSB0YXJnZXRzLgorICAgICAgICAgICAgYW5kIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggc29tZSBzaW1wbGUgc3VnZ2VzdGlvbnMgYXMgdG8gd2hhdCB0byBkbworICAgICAgICAgICAgbmV4dCwgaW5jbHVkaW5nIGEgbGlzdCBvZiBzb21lIHBvc3NpYmxlIHRhcmdldHMgdG8gYnVpbGQuCiAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CkBAIC0yMTcsMTQgKzIxNSwxNCBAQAogICAgICAgICAgbWV0YS10b29sY2hhaW4KICAgICAgICAgIG1ldGEtaWRlLXN1cHBvcnQKIAotICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYnCisgICAgIFlvdSBjYW4gYWxzbyBydW4gZ2VuZXJhdGVkIHFlbXUgaW1hZ2VzIHdpdGggYSBjb21tYW5kIGxpa2UgJ3J1bnFlbXUgcWVtdXg4Ni02NCcKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoZSBzY3JpcHQgZ2V0cyBpdHMgZGVmYXVsdCBsaXN0IG9mIGNvbW1vbiB0YXJnZXRzIGZyb20gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi1ub3Rlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIFRoZSBkZWZhdWx0IG91dHB1dCBvZiB0aGUgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICBpcyBmcm9tIHRoZSA8ZmlsZW5hbWU+Y29uZi1ub3Rlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICBTaG91bGQgeW91IGhhdmUgY3VzdG9tIGRpc3RyaWJ1dGlvbnMsIGl0IGlzIHZlcnkgZWFzeSB0byBtb2RpZnkKLSAgICAgICAgICAgIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHRvIGluY2x1ZGUgeW91ciB0YXJnZXRzIGZvciB5b3VyCisgICAgICAgICAgICBJZiB5b3UgZGVzaWduIGEgY3VzdG9tIGRpc3RyaWJ1dGlvbiwgeW91IGNhbiBpbmNsdWRlIHlvdXIgb3duIHZlcnNpb24KKyAgICAgICAgICAgIG9mIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHRvIG1lbnRpb24gdGhlIHRhcmdldHMgZGVmaW5lZCBieSB5b3VyCiAgICAgICAgICAgICBkaXN0cmlidXRpb24uCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1jdXN0b20tdGVtcGxhdGUtY29uZmlndXJhdGlvbi1kaXJlY3RvcnknPkNyZWF0aW5nIGEgQ3VzdG9tIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCkBAIC0yMzQsMjAgKzIzMiwyMCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEgQnVpbGQgRGlyZWN0b3J5Ci0gICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgIGFyZ3VtZW50IGNyZWF0ZXMgdGhlIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgIGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAgICAgICAgICAgIElmIHlvdSBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5IGFyZ3VtZW50IHdoZW4geW91CiAgICAgICAgICAgICA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlIHNjcmlwdCwgeW91IGRpcmVjdCB0aGUgT3BlbkVtYmVkZGVkCiAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgQnVpbGQgRGlyZWN0b3J5IG9mIHlvdXIgY2hvaWNlLgogICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPiB0aGF0IGlzIG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bXlidWlsZHMvPC9maWxlbmFtZT4gdGhhdCBpcyBvdXRzaWRlIG9mIHRoZQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz46CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7IH4vbXlidWlsZHMKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgZm91bmQgYnkgZGVmYXVsdCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCiAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5LgogICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtY3VzdG9tLXRlbXBsYXRlLWNvbmZpZ3VyYXRpb24tZGlyZWN0b3J5Jz5DcmVhdGluZyBhIEN1c3RvbSBUZW1wbGF0ZSBDb25maWd1cmF0aW9uIERpcmVjdG9yeTwvdWxpbms+IgpAQCAtMjgwLDI4ICsyNzgsMjYgQEAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUKICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgIHdoZW4geW91IHJ1biB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0cyAoaS5lLgotICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+CisgICAgICAgIHdoZW4geW91IHJ1biB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0CisgICAgICAgIDxsaW5rCitsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgSWYgeW91IGRvIG5vdCBnaXZlIHRoZSBCdWlsZCBEaXJlY3RvcnkgYSBzcGVjaWZpYyBuYW1lIHdoZW4geW91IHJ1bgotICAgICAgICBhIHNldHVwIHNjcmlwdCwgdGhlIG5hbWUgZGVmYXVsdHMgdG8gPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4uCisgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQsIHRoZSBuYW1lIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPi4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUKLSAgICAgICAgcG9pbnRzIHRvIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgIEZvciBzdWJzZXF1ZW50IHBhcnNpbmcgYW5kIHByb2Nlc3NpbmcsIHRoZSBuYW1lIG9mIHRoZSBCdWlsZAorICAgICAgICBkaXJlY3RvcnkgaXMgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KICAgICA8L3BhcmE+CiAKICAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLWJ1aWxkaGlzdG9yeSc+Ci0gICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvYnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L3RpdGxlPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL2J1aWxkaGlzdG9yeS88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoaXMgZGlyZWN0b3J5IHdoZW4geW91Ci0gICAgICAgICAgICBlbmFibGUgdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZS4KLSAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgdHJhY2tzIGJ1aWxkIGluZm9ybWF0aW9uIGludG8gaW1hZ2UsIHBhY2thZ2VzLCBhbmQKKyAgICAgICAgICAgIGVuYWJsZSBidWlsZCBoaXN0b3J5IHZpYSB0aGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+IGNsYXNzIGZpbGUuCisgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IG9yZ2FuaXplcyBidWlsZCBpbmZvcm1hdGlvbiBpbnRvIGltYWdlLCBwYWNrYWdlcywgYW5kCiAgICAgICAgICAgICBTREsgc3ViZGlyZWN0b3JpZXMuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZSwgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgpAQCAtMzIwLDE0ICszMTYsMTQgQEAKICAgICAgICAgICAgIEFueSB2YXJpYWJsZSBzZXQgaGVyZSBvdmVycmlkZXMgYW55IHZhcmlhYmxlIHNldCBlbHNld2hlcmUgd2l0aGluCiAgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgdW5sZXNzIHRoYXQgdmFyaWFibGUgaXMgaGFyZC1jb2RlZCB3aXRoaW4gYSBmaWxlCiAgICAgICAgICAgICAoZS5nLiBieSB1c2luZyAnPScgaW5zdGVhZCBvZiAnPz0nKS4KLSAgICAgICAgICAgIFNvbWUgdmFyaWFibGVzIGFyZSBoYXJkLWNvZGVkIGZvciB2YXJpb3VzIHJlYXNvbnMgYnV0IHRoZXNlCisgICAgICAgICAgICBTb21lIHZhcmlhYmxlcyBhcmUgaGFyZC1jb2RlZCBmb3IgdmFyaW91cyByZWFzb25zIGJ1dCBzdWNoCiAgICAgICAgICAgICB2YXJpYWJsZXMgYXJlIHJlbGF0aXZlbHkgcmFyZS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRWRpdCB0aGlzIGZpbGUgdG8gc2V0IHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NQUNISU5FPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmb3Igd2hpY2ggeW91IHdhbnQgdG8gYnVpbGQsIHdoaWNoIHBhY2thZ2UgdHlwZXMgeW91IHdpc2ggdG8gdXNlCisgICAgICAgICAgICBBdCBhIG1pbmltdW0sIHlvdSB3b3VsZCBub3JtYWxseSBlZGl0IHRoaXMgZmlsZSB0byBzZWxlY3QgdGhlIHRhcmdldAorICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NQUNISU5FPC9saW5rPjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgd2hpY2ggcGFja2FnZSB0eXBlcyB5b3Ugd2lzaCB0byB1c2UKICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+KSwKICAgICAgICAgICAgIGFuZCB0aGUgbG9jYXRpb24gZnJvbSB3aGljaCB5b3Ugd2FudCB0byBhY2Nlc3MgZG93bmxvYWRlZCBmaWxlcwogICAgICAgICAgICAgKDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRExfRElSJz5ETF9ESVI8L2xpbms+PC9maWxlbmFtZT4pLgpAQCAtMzM4LDE2ICszMzQsMTYgQEAKICAgICAgICAgICAgIHN0YXJ0IHRoZSBidWlsZCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyBpdCBmcm9tCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiB3aGVuCiAgICAgICAgICAgICB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgc2V0dXAgc2NyaXB0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIHNvdXJjZSA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIHVzZWQKICAgICAgICAgICAgIGRlcGVuZHMgb24gdGhlIDxmaWxlbmFtZT4kVEVNUExBVEVDT05GPC9maWxlbmFtZT4gc2NyaXB0IHZhcmlhYmxlLAotICAgICAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPgogICAgICAgICAgICAgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIGVudmlyb25tZW50IGFuZCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS9jb25mPC9maWxlbmFtZT4gd2hlbgorICAgICAgICAgICAgZW52aXJvbm1lbnQsIGFuZCB0byA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+IHdoZW4KICAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzY3JpcHQgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBzb3VyY2Ugb2YgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlLCB0aGlzIGltcGxpZXMgdGhhdApAQCAtMzk1LDExICszOTEsMTIgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHNvdXJjZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIHVzZWQKKyAgICAgICAgICAgIEFzIHdpdGggdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgIHRoZSBzb3VyY2UgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSB1c2VkCiAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHNjcmlwdCB2YXJpYWJsZSwKLSAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvPC9maWxlbmFtZT4KICAgICAgICAgICAgIHdoZW4geW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50Ci0gICAgICAgICAgICBlbnZpcm9ubWVudCBhbmQgZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEvY29uZjwvZmlsZW5hbWU+IHdoZW4KKyAgICAgICAgICAgIGVudmlyb25tZW50LCBhbmQgdG8gPGZpbGVuYW1lPm1ldGEvY29uZi88L2ZpbGVuYW1lPiB3aGVuCiAgICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIE9wZW5FbWJlZGRlZC1Db3JlIGVudmlyb25tZW50LgogICAgICAgICAgICAgQmVjYXVzZSB0aGUgc2NyaXB0IHZhcmlhYmxlIHBvaW50cyB0byB0aGUgc291cmNlIG9mIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSwgdGhpcyBpbXBsaWVzIHRoYXQKQEAgLTQxOCwxMyArNDE1LDEzIEBACiAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gb2YgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAogICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtY29uZi1zYW5pdHlfaW5mbyc+Ci0gICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvY29uZi9zYW5pdHlfaW5mbzwvZmlsZW5hbWU+PC90aXRsZT4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC9jYWNoZS9zYW5pdHlfaW5mbzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoaXMgZmlsZSBpbmRpY2F0ZXMgdGhlIHN0YXRlIG9mIHRoZSBzYW5pdHkgY2hlY2tzIGFuZCBpcyBjcmVhdGVkCkBAIC01NzIsOCArNTY5LDExIEBACiAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgcmVjZWl2ZXMgY29tcGxldGUgZmlsZXN5c3RlbSBpbWFnZXMuCi0gICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmbGFzaCB0aGUgcmVzdWx0aW5nIGltYWdlIGZyb20gYSBidWlsZCBvbnRvIGEgZGV2aWNlLCBsb29rIGhlcmUgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBiYXNpYyBvdXRwdXQgb2JqZWN0cyBvZiB0aGUKKyAgICAgICAgICAgIGJ1aWxkICh0aGluayBvZiB0aGVtIGFzIHRoZSAiZ2VuZXJhdGVkIGFydGlmYWN0cyIgb2YgdGhlIGJ1aWxkIHByb2Nlc3MpLAorICAgICAgICAgICAgaW5jbHVkaW5nIHRoaW5ncyBsaWtlIHRoZSBib290IGxvYWRlciBpbWFnZSwga2VybmVsLCByb290IGZpbGVzeXN0ZW0gYW5kIG1vcmUuCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmbGFzaCB0aGUgcmVzdWx0aW5nIGltYWdlIGZyb20gYSBidWlsZCBvbnRvIGEgZGV2aWNlLAorICAgICAgICAgICAgbG9vayBoZXJlIGZvciB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTYwNCw3ICs2MDQsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGlzIGRpcmVjdG9yeSB0byBob2xkCi0gICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGVyIHNjcmlwdHMsIHdoaWNoIHdoZW4gZXhlY3V0ZWQsIGluc3RhbGwgdGhlCisgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGVyIHNjcmlwdHMgd2hpY2gsIHdoZW4gZXhlY3V0ZWQsIGluc3RhbGwgdGhlCiAgICAgICAgICAgICBzeXNyb290IHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCBoYXJkd2FyZS4KICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGVzZSBpbnN0YWxsZXJzIGluIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBYIGFuZCBvdGhlciBncmFwaGljYWxseSByZWxhdGVkIHN5c3RlbSBsaWJyYXJpZXMKKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIFggYW5kIG90aGVyIGdyYXBoaWNhbGx5IHJlbGF0ZWQgc3lzdGVtIGxpYnJhcmllcy4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCmluZGV4IDljMjE5OGEuLjdkM2M3MTkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKQEAgLTgsMTIgKzgsMTIgQEAKICAgICA8cGFyYT4KICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIQogICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyByZWZlcmVuY2UgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UKLSAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIFRoZSBtYW51YWwgaXMgYmVzdCB1c2VkIGFmdGVyIHlvdSBoYXZlIGFuIHVuZGVyc3RhbmRpbmcKKyAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QsIGFuZAorICAgICAgICBpcyBtb3N0IGVmZmVjdGl2ZWx5IHVzZWQgYWZ0ZXIgeW91IGhhdmUgYW4gdW5kZXJzdGFuZGluZwogICAgICAgICBvZiB0aGUgYmFzaWNzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICBUaGUgbWFudWFsIGlzIG5laXRoZXIgbWVhbnQgdG8gYmUgcmVhZCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0IG5vciByZWFkIGZyb20gc3RhcnQgdG8gZmluaXNoLgotICAgICAgICBVc2UgdGhpcyBtYW51YWwgdG8gZmluZCB2YXJpYWJsZSBkZWZpbml0aW9ucywgY2xhc3MKKyAgICAgICAgWW9jdG8gUHJvamVjdCwgbm9yIHJlYWQgZnJvbSBzdGFydCB0byBmaW5pc2guCisgICAgICAgIFJhdGhlciwgdXNlIHRoaXMgbWFudWFsIHRvIGZpbmQgdmFyaWFibGUgZGVmaW5pdGlvbnMsIGNsYXNzCiAgICAgICAgIGRlc2NyaXB0aW9ucywgYW5kIHNvIGZvcnRoIGFzIG5lZWRlZCBkdXJpbmcgdGhlIGNvdXJzZSBvZiB1c2luZwogICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KICAgICA8L3BhcmE+CkBAIC02NiwxMiArNjYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJlbG93LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoV1NMKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBydW5uaW5nIFdTTC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtYXkgdXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCB2MiB0byBzZXQgdXAgYSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCB1c2luZyBXaW5kb3dzIDEwLCBidXQgdmFsaWRhdGlvbiBpcyBub3QgcGVyZm9ybWVkCisgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IGJ1aWxkIGhvc3RzIHVzaW5nIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMdjEsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgYnV0IG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBub3IgdmFsaWRhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggV1NMdjIsIGlmIHlvdSBzdGlsbCBkZWNpZGUgdG8gdXNlIFdTTCBwbGVhc2UgdXBncmFkZQorICAgICAgICAgICAgICAgICAgICAgICAgICB0byBXU0x2Mi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zLCBwbGVhc2UgZ28gdG8KQEAgLTExNyw3ICsxMjAsNyBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHlvdSBuZWVkIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBjYW4KICAgICAgICAgICAgIGJlIGxhcmdlIHdoZW4gY292ZXJpbmcgYWxsIGJ1aWxkIHNjZW5hcmlvcyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyByZXF1aXJlZCBwYWNrYWdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgcmVxdWlyZWQgcGFja2FnZXMgYWNjb3JkaW5nIHRvCiAgICAgICAgICAgICBMaW51eCBkaXN0cmlidXRpb24gYW5kIGZ1bmN0aW9uLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTEyNywxOSArMTMwLDI5IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgVWJ1bnR1IG9yIERlYmlhbiBMaW51eCBkaXN0cmlidXRpb246Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgc3lzdGVtIGhhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9zczQtZGV2PC9maWxlbmFtZT4gcGFja2FnZSBpbnN0YWxsZWQsIHlvdQotICAgICAgICAgICAgICAgICAgICBtaWdodCBleHBlcmllbmNlIFFFTVUgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgaXRzIG93biBjdXN0b20KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZS9saW51eC9zb3VuZGNhcmQuaDwvZmlsZW5hbWU+IG9uCi0gICAgICAgICAgICAgICAgICAgIHRoZSBEZWJpYW4gc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcnVuIGludG8gdGhpcyBzaXR1YXRpb24sIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgICAgIHNvbHV0aW9ucyBleGlzdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBzeXN0ZW0gaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vc3M0LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodCBleHBlcmllbmNlIFFFTVUgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBpdHMgb3duIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmg8L2ZpbGVuYW1lPiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEZWJpYW4gc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gaW50byB0aGlzIHNpdHVhdGlvbiwgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbnMgZXhpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8gYXB0LWdldCBidWlsZC1kZXAgcWVtdQogICAgICAkIHN1ZG8gYXB0LWdldCByZW1vdmUgb3NzNC1kZXYKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBEZWJpYW4tOCwgPGZpbGVuYW1lPnB5dGhvbjMtZ2l0PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5weWxpbnQzPC9maWxlbmFtZT4gYXJlIG5vIGxvbmdlciBhdmFpbGFibGUgdmlhIDxmaWxlbmFtZT5hcHQtZ2V0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiBweWxpbnQ9PTEuOS41CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CkBAIC0yMDUsMTggKzIxOCwxOCBAQAogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NlbnRvcy1wYWNrYWdlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+Q2VudE9TIFBhY2thZ2VzPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NlbnRvcy03LXBhY2thZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5DZW50T1MtNyBQYWNrYWdlczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MgTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIENlbnRPUy03IExpbnV4IGRpc3RyaWJ1dGlvbjoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcwogICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8geXVtIGluc3RhbGwgJkNFTlRPU19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgJCBzdWRvIHl1bSBpbnN0YWxsICZDRU5UT1M3X0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOwogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgpAQCAtMjI5LDI5ICsyNDIsODEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ha2VjYWNoZTwvZmlsZW5hbWU+IGNvbW1hbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVzIGFkZGl0aW9uYWwgTWV0YWRhdGEgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIG91dCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYW51YWxzOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8geXVtIGluc3RhbGwgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCiAgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY2VudG9zLTgtcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPkNlbnRPUy04IFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIENlbnRPUy04IExpbnV4IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgJkNFTlRPUzhfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhIFBhY2thZ2VzIGZvciBFbnRlcnByaXNlIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+ZXBlbC1yZWxlYXNlPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGNvbGxlY3Rpb24gb2YgcGFja2FnZXMgZnJvbSBGZWRvcmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IG9uIFJIRUwvQ2VudE9TIGZvciBlYXN5IGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZXMgbm90IGluY2x1ZGVkIGluIGVudGVycHJpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5Qb3dlclRvb2xzPC9maWxlbmFtZT4gcmVwbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYWRkaXRpb25hbCBwYWNrYWdlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnBjZ2VuPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGV4aW5mbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIG91dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYW51YWxzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCisgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz4KLSAgICAgICAgPHRpdGxlPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+CisgICAgICAgIDx0aXRsZT5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIHRoZSBidWlsZCBzeXN0ZW0sIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0KQEAgLTI1OSw4ICszMjQsOCBAQAogICAgICAgICAgICAgUHl0aG9uOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+R2l0IDEuOC4zLjEgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT50YXIgMS4yNyBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlB5dGhvbiAzLjQuMCBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPnRhciAxLjI4IG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAKQEAgLTI3Miw2ICszMzcsODkgQEAKICAgICAgICAgICAgIHRhcmJhbGwgb3IgdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIHRhcmJhbGwuCiAgICAgICAgIDwvcGFyYT4KIAorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uLCB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIG11c3QgbWVldCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBnY2M6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5nY2MgNS4wIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGRvZXMgbm90IG1lZXQgdGhpcyByZXF1aXJlbWVudCwKKyAgICAgICAgICAgIHlvdSBjYW4gcmVzb2x2ZSB0aGlzIGJ5IGluc3RhbGxpbmcgYSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+CisgICAgICAgICAgICB0YXJiYWxsIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCB0b29scywgdGhlIGVxdWl2YWxlbnQgb2YgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2luc3RhbGxpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsLXdpdGgtaW5zdGFsbC1idWlsZHRvb2xzLXNjcmlwdCc+CisgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGwgd2l0aCA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQgaXMgdGhlIGVhc2llc3QKKyAgICAgICAgICAgICAgICBvZiB0aGUgdGhyZWUgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuIGdldCB0aGVzZSB0b29scy4gSXQgZG93bmxvYWRzCisgICAgICAgICAgICAgICAgYSBwcmUtYnVpbHQgYnVpbGR0b29scyBpbnN0YWxsZXIgYW5kIGF1dG9tYXRpY2FsbHkgaW5zdGFsbHMgdGhlIHRvb2xzCisgICAgICAgICAgICAgICAgZm9yIHlvdToKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgdGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHBva3kKKyAgICAgJCBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scyAtLXdpdGhvdXQtZXh0ZW5kZWQtYnVpbGR0b29scyBcCisgICAgICAgLS1iYXNlLXVybCAmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy95b2N0byBcCisgICAgICAgLS1yZWxlYXNlIHlvY3RvLSZESVNUUk87IFwKKyAgICAgICAtLWluc3RhbGxlci12ZXJzaW9uICZESVNUUk87CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCB0aGUgYnVpbGR0b29scyB0YXJiYWxsIHdpbGwgYmUgZG93bmxvYWRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjaGVja3N1bSBvZiB0aGUgZG93bmxvYWQgd2lsbCBiZSB2ZXJpZmllZCwgdGhlIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBydW4gZm9yIHlvdSwgYW5kIHNvbWUgYmFzaWMgY2hlY2tzIHdpbGwgYmUgcnVuIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0byBtYWtlIHN1cmUgdGhlIGluc3RhbGxhdGlvbiBpcyBmdW5jdGlvbmFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gYXZvaWQgdGhlIG5lZWQgb2YgPGZpbGVuYW1lPnN1ZG88L2ZpbGVuYW1lPiBwcml2aWxlZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCB0ZWxsIHRoZSBpbnN0YWxsZXIgdG8gaW5zdGFsbCBpbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPi9wYXRoL3RvLzwvcmVwbGFjZWFibGU+cG9reS9idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIG5lZWRzIHRoZSBhZGRpdGlvbmFsIHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBpbiB0aGUgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyYmFsbCwgeW91IGNhbiBpbnN0ZWFkIGV4ZWN1dGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgcG9reQorICAgICAkIHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgPHJlcGxhY2VhYmxlPi9wYXRoL3RvLzwvcmVwbGFjZWFibGU+cG9reS9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLXg4Nl82NC1wb2t5c2RrLWxpbnV4CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQorICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg2IG9yIHg4Nl82NCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBhcmUgYWRkZWQgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCisgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4gQW5kIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgd29ya2luZyB2ZXJzaW9ucyBvZiB0b29scyBpbmNsdWRpbmcgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGFuZCB0aGUgb3RoZXIgdG9vbHMgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKICAgICAgICAgPHNlY3Rpb24gaWQ9J2Rvd25sb2FkaW5nLWEtcHJlLWJ1aWx0LWJ1aWxkdG9vbHMtdGFyYmFsbCc+CiAgICAgICAgICAgICA8dGl0bGU+RG93bmxvYWRpbmcgYSBQcmUtQnVpbHQgPGZpbGVuYW1lPmJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBUYXJiYWxsPC90aXRsZT4KIApAQCAtMjgxLDE0ICs0MjksMTggQEAKICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgZG93bmxvYWQgdGhlIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX0RMX1VSTDsvYnVpbGR0b29scy8nPjwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSB0cmFkaXRpb25hbCBpbnN0YWxsZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmb3IgdGhlIGV4dGVuZGVkIGluc3RhbGxlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzaCB+L0Rvd25sb2Fkcy94ODZfNjQtYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgYSBwcm9tcHQgYXBwZWFycyB0aGF0IGFsbG93cyB5b3UgdG8KICAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZSB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6CkBAIC0zMTEsNyArNDYzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICB0b29scyBhcmUgaW5pdGlhbGl6ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhcmUgd29ya2luZyB2ZXJzaW9ucyB2ZXJzaW9ucyBvZiBHaXQsIHRhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4gQW5kIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPiB0YXJiYWxsLCBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nIHZlcnNpb25zIG9mIHRvb2xzIGluY2x1ZGluZyA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGFuZCB0aGUgb3RoZXIgdG9vbHMgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbDwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTMyNyw3ICs0ODMsNyBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGFuZCB0aGVuCiAgICAgICAgICAgICAgICAgdGFrZSBzdGVwcyB0byB0cmFuc2ZlciBhbmQgcnVuIGl0IG9uIGEKICAgICAgICAgICAgICAgICBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgbWluaW1hbCBHaXQsIHRhciwgYW5kIFB5dGhvbgotICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAob3IgZ2NjKSByZXF1aXJlbWVudHMuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtMzQ1LDYgKzUwMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgYnVpbGR0b29scy10YXJiYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBvciBydW4gdGhlIEJpdEJha2UgY29tbWFuZCB0byBidWlsZCB0aGUgZXh0ZW5kZWQgdGFyYmFsbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkIGJpdGJha2UgYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+CkBAIC0zNTgsMjEgKzUxOCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluc3RhbGxlciBmaWxlIGhhcyB0aGUgc3RyaW5nICJidWlsZHRvb2xzIgotICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yICJidWlsZHRvb2xzLWV4dGVuZGVkIikgaW4gdGhlIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmZXIgdGhlIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QgdG8gdGhlIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgb3IgUHl0aG9uIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgR2l0LCB0YXIsIG9yIFB5dGhvbiAob3IgZ2NjKSByZXF1aXJlbWVudHMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0aGUgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgdG8gaW5zdGFsbCB0aGUgdG9vbHMuCi0gICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0aGUgdHJhZGl0aW9uYWwgaW5zdGFsbGVyOgogICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSBleHRlbmRlZCBpbnN0YWxsZXI6CisgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKKyAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCBhIHByb21wdCBhcHBlYXJzIHRoYXQgYWxsb3dzIHlvdSB0bwogICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6CkBAIC0zODQsMTAgKzU0OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIHRoZSB0b29scyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYnkgdXNpbmcgYQogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKKyAgICAgJCBzb3VyY2UgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLXg4Nl82NC1wb2t5LWxpbnV4CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgYW5kIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg1IG9yIHg4Ni02NCkuCisgICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg2IG9yIHg4Nl82NCkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHNvdXJjZWQgdGhlIHNldHVwIHNjcmlwdCwKQEAgLTM5NSw3ICs1NTksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LiBBbmQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgdmVyc2lvbnMgb2YgdG9vbHMgaW5jbHVkaW5nIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYW5kIHRoZSBvdGhlciB0b29scyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwKaW5kZXggZjk4NTQ2OC4uNzIyZmE3ZSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCkBAIC00MSwxMSArNDEsMTMgQEAKICAgICAgICAgICAgICAgICBUaGF0IGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIGFueQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idXN5Ym94XzEuMjEuPC9maWxlbmFtZT48cmVwbGFjZWFibGU+eDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgIFNvLCB0aGUgYXBwZW5kIGZpbGUgd291bGQgbWF0Y2ggdGhlIGZvbGxvd2luZyByZWNpcGUgbmFtZXM6CisgICAgICAgICAgICAgICAgU28sIHRoZSBhcHBlbmQgZmlsZSB3b3VsZCBtYXRjaCBhbnkgb2YgdGhlIGZvbGxvd2luZyByZWNpcGUgbmFtZXM6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBidXN5Ym94XzEuMjEuMS5iYgogICAgICBidXN5Ym94XzEuMjEuMi5iYgogICAgICBidXN5Ym94XzEuMjEuMy5iYgorICAgICBidXN5Ym94XzEuMjEuMTAuYmIKKyAgICAgYnVzeWJveF8xLjIxLjI1LmJiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5JbXBvcnRhbnQ8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICBUaGUgdXNlIG9mIHRoZSAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgY2hhcmFjdGVyCkBAIC0xMTUsNyArMTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBleGlzdGluZwogICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IDxmaWxlbmFtZT5teWJ1aWxkczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkY2QgJEhPTUUKKyAgICAgJCBjZCAkSE9NRQogICAgICAkIHNvdXJjZSAkSE9NRS9wb2t5LyZPRV9JTklUX0ZJTEU7ICRIT01FL215YnVpbGRzL1lQLSZQT0tZVkVSU0lPTjsKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMTQxLDcgKzE0Myw3IEBACiAgICAgICAgICAgICAgICAgVGhlIHN5c3RlbSB1c2VkIHRvIGJ1aWxkIGltYWdlcyBpbiBhIFlvY3RvIFByb2plY3QKICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyB0aGUKLSAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgIDxmaXJzdHRlcm0+ZGV2ZWxvcG1lbnQgaG9zdDwvZmlyc3R0ZXJtPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xhc3Nlczo8L2VtcGhhc2lzPgpAQCAtMzkzLDcgKzM5NSw3IEBACiAgICAgICAgICAgICAgICAgUG9reSBpcyBub3QgYSBwcm9kdWN0IGxldmVsIGRpc3Ryby4KICAgICAgICAgICAgICAgICBSYXRoZXIsIGl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY3VzdG9taXphdGlvbi4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgUG9reSBiZWdhbiBhbiBvcGVuLXNvdXJjZQorICAgICAgICAgICAgICAgICAgICBQb2t5IGJlZ2FuIGFzIGFuIG9wZW4tc291cmNlCiAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgaW5pdGlhbGx5IGRldmVsb3BlZCBieSBPcGVuZWRIYW5kLgogICAgICAgICAgICAgICAgICAgICBPcGVuZWRIYW5kIGRldmVsb3BlZCBQb2t5IGZyb20gdGhlIGV4aXN0aW5nCiAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgY29tbWVyY2lhbGx5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCmluZGV4IDAyYWJjNTkuLmI0NGZkY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCkBAIC0zNjcsNyArMzY3LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFTU1VNRV9TSExJQlMnPjxnbG9zc3Rlcm0+QVNTVU1FX1NITElCUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgQVNTVU1FX1NITElCU1tkb2NdID0gUHJvdmlkZXMgYWRkaXRpb25hbCBzaGxpYnMgcHJvdmlkZXIgbWFwcGluZyBpbmZvcm1hdGlvbiwgd2hpY2ggYWRkcyB0byBvciBvdmVyd3JpdGVzIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIEFTU1VNRV9TSExJQlNbZG9jXSA9ICJQcm92aWRlcyBhZGRpdGlvbmFsIHNobGlicyBwcm92aWRlciBtYXBwaW5nIGluZm9ybWF0aW9uLCB3aGljaCBhZGRzIHRvIG9yIG92ZXJ3cml0ZXMgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHN5c3RlbS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC00OTUsNiArNDk1LDMwIEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BVkFJTEFCTEVfTElDRU5TRVMnPjxnbG9zc3Rlcm0+QVZBSUxBQkxFX0xJQ0VOU0VTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBBVkFJTEFCTEVfTElDRU5TRVNbZG9jXSA9ICJMaXN0IG9mIGxpY2Vuc2VzIGZvdW5kIGluIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgQ09NTU9OX0xJQ0VOU0VfRElSIGFuZCBMSUNFTlNFX1BBVEguIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKworICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGxpY2Vuc2VzIGZvdW5kIGluIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgPGxpbmsgbGlua2VuZD0ndmFyLUNPTU1PTl9MSUNFTlNFX0RJUic+PGZpbGVuYW1lPkNPTU1PTl9MSUNFTlNFX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0VfUEFUSCc+PGZpbGVuYW1lPkxJQ0VOU0VfUEFUSDwvZmlsZW5hbWU+PC9saW5rPi4KKworICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBhbGwgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkNPTU1PTl9MSUNFTlNFX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPkxJQ0VOU0VfUEFUSDwvZmlsZW5hbWU+IGhhdmUgYmVlbiBkb25lCisgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgPGZpbGVuYW1lPkFWQUlMQUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICAoaW4gPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtbGljZW5zZSc+bGljZW5zZS5iYmNsYXNzPC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BVkFJTFRVTkVTJz48Z2xvc3N0ZXJtPkFWQUlMVFVORVM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIEFWQUlMVFVORVNbZG9jXSA9ICJUaGUgbGlzdCBvZiBkZWZpbmVkIENQVSBhbmQgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5pbmdzIChpLmUuICAidHVuZXMiKSBhdmFpbGFibGUgZm9yIHVzZSBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCkBAIC0xNDIzLDcgKzE0NDcsNyBAQAogICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBmb3JtYXQgdG8gZXhwb3J0IHRoZSB2YXJpYWJsZSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBlbnZpcm9ubWVudDoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgQkJTRVJWRVI9bG9jYWxob3N0OiRwb3J0IgorICAgICBleHBvcnQgQkJTRVJWRVI9bG9jYWxob3N0OiRwb3J0CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTM3ODYsNyArMzgxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VyLWNvbmZpZ3VyYWJsZS4KICAgICAgICAgICAgICAgICAgICAgSXQgaXMgYmVzdCB0byBqdXN0IHJlZmVyZW5jZSB0aGUgdmFyaWFibGUgdG8gc2VlIHdoaWNoIGRpc3RybyBmZWF0dXJlcyBhcmUKICAgICAgICAgICAgICAgICAgICAgYmVpbmcgYmFja2ZpbGxlZCBmb3IgYWxsIGRpc3RybyBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8bGluayBsaW5rZW5kPSdyZWYtZmVhdHVyZXMtYmFja2ZpbGwnPkZlYXR1cmUgQmFja2ZpbGxpbmc8L2xpbms+IHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTY3NTAsNiArNjc3NCwyNSBAQAogICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHByb2R1Y2UgYSBmdW5jdGlvbmFsIHN5c3RlbQogICAgICAgICAgICAgICAgICAgICBpbWFnZS4KICAgICAgICAgICAgICAgICA8L25vdGU+CisKKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIGxpc3Qgb2YgbGljZW5zZXMgdGhhdCBhcmUgYWxsb3dlZAorICAgICAgICAgICAgICAgICAgICB0byBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGxpY2Vuc2VzIHRoYXQgYXJlIGV4Y2x1ZGVkLiBUbyBkbworICAgICAgICAgICAgICAgICAgICB0aGlzLCBkZWZpbmUgYQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSA8ZmlsZW5hbWU+Q09NUEFUSUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIG5hbWVzIG9mIHRoZSBsaWNlbmNlcyB0aGF0IGFyZSBhbGxvd2VkLiBUaGVuCisgICAgICAgICAgICAgICAgICAgIGRlZmluZSA8ZmlsZW5hbWU+SU5DT01QQVRJQkxFX0xJQ0VOU0U8L2ZpbGVuYW1lPiBhczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSA9ICIke0AnICcuam9pbihzb3J0ZWQoc2V0KGQuZ2V0VmFyKCdBVkFJTEFCTEVfTElDRU5TRVMnKS5zcGxpdCgpKSAtIHNldChkLmdldFZhcignQ09NUEFUSUJMRV9MSUNFTlNFUycpLnNwbGl0KCkpKSl9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgd2lsbCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPklOQ09NUEFUSUJMRV9MSUNFTlNFPC9maWxlbmFtZT4gY29udGFpbmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMgb2YgYWxsIGxpY2VuY2VzCisgICAgICAgICAgICAgICAgICAgIGZyb20gPGxpbmsgbGlua2VuZD0ndmFyLUFWQUlMQUJMRV9MSUNFTlNFUyc+PGZpbGVuYW1lPkFWQUlMQUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgdGhlIG9uZXMgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5DT01QQVRJQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT4sIHRodXMgb25seQorICAgICAgICAgICAgICAgICAgICBhbGxvd2luZyB0aGUgbGF0dGVyIGxpY2VuY2VzIHRvIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC03NDI4LDcgKzc0NzEsNiBAQAogICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCiAgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgogICAgICBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLSAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpZGVudGlmeQogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBicmFuY2ggdG8gdXNlIHdoZW4gYnVpbGRpbmcgZm9yIGVhY2gKQEAgLTg3NDYsNyArODc4OCw2IEBACiAgICAgIE1BQ0hJTkUgPz0gImdlbmVyaWN4ODYiCiAgICAgIE1BQ0hJTkUgPz0gImdlbmVyaWN4ODYtNjQiCiAgICAgIE1BQ0hJTkUgPz0gImJlYWdsZWJvbmUiCi0gICAgIE1BQ0hJTkUgPz0gIm1wYzgzMTVlLXJkYiIKICAgICAgTUFDSElORSA/PSAiZWRnZXJvdXRlciIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgbGFzdCBmaXZlIGFyZSBZb2N0byBQcm9qZWN0IHJlZmVyZW5jZSBoYXJkd2FyZSBib2FyZHMsIHdoaWNoCkBAIC0xMDM3NiwxMiArMTA0MTcsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBibG9ja3MgYXJlIGRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgaW4gcmVjaXBlcyB3aGVuIHlvdSBzcGVjaWZ5IGZlYXR1cmVzIGFuZCB0aGVuIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICB0aGF0IGRlZmluZSBmZWF0dXJlIGJlaGF2aW9ycy4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgYmFzaWMgYmxvY2sgc3RydWN0dXJlOgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBiYXNpYyBibG9jayBzdHJ1Y3R1cmUgKGJyb2tlbiBvdmVyIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgIGxpbmVzIGZvciByZWFkYWJpbGl0eSk6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gImYxIGYyIGYzIC4uLiIKLSAgICAgUEFDS0FHRUNPTkZJR1tmMV0gPSAiLS13aXRoLWYxLC0td2l0aG91dC1mMSxidWlsZC1kZXBzLWYxLHJ0LWRlcHMtZjEscnQtcmVjcy1mMSIKLSAgICAgUEFDS0FHRUNPTkZJR1tmMl0gPSAiLS13aXRoLWYyLC0td2l0aG91dC1mMixidWlsZC1kZXBzLWYyLHJ0LWRlcHMtZjIscnQtcmVjcy1mMiIKLSAgICAgUEFDS0FHRUNPTkZJR1tmM10gPSAiLS13aXRoLWYzLC0td2l0aG91dC1mMyxidWlsZC1kZXBzLWYzLHJ0LWRlcHMtZjMscnQtcmVjcy1mMyIKKyAgICAgUEFDS0FHRUNPTkZJR1tmMV0gPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLWRlcHMtZm9yLWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUtZGVwcy1mb3ItZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZS1yZWNvbW1lbmRzLWZvci1mMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlY29uZmlnLWNvbmZsaWN0cy1mb3ItZjEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgICAgIFBBQ0tBR0VDT05GSUdbZjJdID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gYW5kIHNvIG9uIGFuZCBzbyBvbiAuLi4KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTAzOTAsNyArMTA0MzksNyBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpdHNlbGYgc3BlY2lmaWVzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHRvIGVuYWJsZS4KICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoZSBmZWF0dXJlcywgeW91IGNhbiBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mCi0gICAgICAgICAgICAgICAgICAgIGVhY2ggZmVhdHVyZSBieSBwcm92aWRpbmcgdXAgdG8gZml2ZSBvcmRlci1kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgZWFjaCBmZWF0dXJlIGJ5IHByb3ZpZGluZyB1cCB0byBzaXggb3JkZXItZGVwZW5kZW50CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cywgd2hpY2ggYXJlIHNlcGFyYXRlZCBieSBjb21tYXMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gb21pdCBhbnkgYXJndW1lbnQgeW91IGxpa2UgYnV0IG11c3QgcmV0YWluIHRoZQogICAgICAgICAgICAgICAgICAgICBzZXBhcmF0aW5nIGNvbW1hcy4KQEAgLTEwNDIwLDYgKzEwNDY5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIGJlIGFkZGVkIGlmIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QW55IGNvbmZsaWN0aW5nICh0aGF0IGlzLCBtdXR1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1c2l2ZSkgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xMDQyNywyNSArMTA0ODAsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+IGJsb2NrIHRha2VuIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJyc3ZnPC9maWxlbmFtZT4gcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUgdGhlIGZlYXR1cmUgaXMgPGZpbGVuYW1lPmNyb2NvPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSB0aGUgZmVhdHVyZSBpcyA8ZmlsZW5hbWU+Z3RrPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGhhcyB0aHJlZSBhcmd1bWVudHMgdGhhdCBkZXRlcm1pbmUgdGhlIGZlYXR1cmUncwogICAgICAgICAgICAgICAgICAgICBiZWhhdmlvci4KICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQQUNLQUdFQ09ORklHID8/PSAiY3JvY28iCi0gICAgIFBBQ0tBR0VDT05GSUdbY3JvY29dID0gIi0td2l0aC1jcm9jbywtLXdpdGhvdXQtY3JvY28sbGliY3JvY28iCisgICAgIFBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi0td2l0aC1jcm9jbzwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliY3JvY288L2ZpbGVuYW1lPiBhcmd1bWVudHMgYXBwbHkgb25seSBpZgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi0td2l0aC1ndGszPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ndGsrMzwvZmlsZW5hbWU+IGFyZ3VtZW50cyBhcHBseSBvbmx5IGlmCiAgICAgICAgICAgICAgICAgICAgIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgPGZpbGVuYW1lPi0td2l0aC1jcm9jbzwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgPGZpbGVuYW1lPi0td2l0aC1ndGszPC9maWxlbmFtZT4gaXMKICAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYXJndW1lbnQgbGlzdCBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmNyb2NvPC9maWxlbmFtZT4gaXMgYWRkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmd0ayszPC9maWxlbmFtZT4gaXMgYWRkZWQgdG8KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIHNheSB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaW4gYW5vdGhlciBsYXllciwgdGhlbgotICAgICAgICAgICAgICAgICAgICB0aGUgc2Vjb25kIGFyZ3VtZW50IDxmaWxlbmFtZT4tLXdpdGhvdXQtY3JvY288L2ZpbGVuYW1lPiBpcwotICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCByYXRoZXIgdGhhbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS13aXRoLWNyb2NvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIHRoZSBzZWNvbmQgYXJndW1lbnQgPGZpbGVuYW1lPi0td2l0aG91dC1ndGszPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTExMDU0LDcgKzExMTA1LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBOJz48Z2xvc3N0ZXJtPlBOPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBQTltkb2NdID0gIlBOIHJlZmVycyB0byBhIHJlY2lwZSBuYW1lIGluIHRoZSBjb250ZXh0IG9mIGEgZmlsZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFzIGlucHV0IHRvIGNyZWF0ZSBhIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgUE5bZG9jXSA9ICJQTiByZWZlcnMgdG8gYSByZWNpcGUgbmFtZSBpbiB0aGUgY29udGV4dCBvZiBhIGZpbGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcyBpbnB1dCB0byBjcmVhdGUgYSBwYWNrYWdlLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTExNTAxLDIzICsxMTU1MiwzNSBAQAogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhIHJlY2lwZSdzIG93bgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz5QTjwvbGluaz48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpcyBpbXBsaWNpdGx5IGFscmVhZHkgaW4gaXRzIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QuCisgICAgICAgICAgICAgICAgICAgIGxpc3QgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBuZWVkIHRvIG1lbnRpb24gdGhhdCBpdCBwcm92aWRlcyBpdHNlbGYuCiAgICAgICAgICAgICAgICAgICAgIElmIGEgcmVjaXBlIHVzZXMgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4sIHRoZQogICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGFsaWFzZXMgYXJlIHN5bm9ueW1zIGZvciB0aGUgcmVjaXBlIGFuZCBjYW4KLSAgICAgICAgICAgICAgICAgICAgYmUgdXNlZnVsIHNhdGlzZnlpbmcgZGVwZW5kZW5jaWVzIG9mIG90aGVyIHJlY2lwZXMgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIGJlIHVzZWZ1bCBmb3Igc2F0aXNmeWluZyBkZXBlbmRlbmNpZXMgb2Ygb3RoZXIgcmVjaXBlcyBkdXJpbmcKICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGFzIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgZnJvbSBhIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICBmaWxlIDxmaWxlbmFtZT5saWJhdl8wLjguMTEuYmI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gc3RhdGVtZW50IGZyb20gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBmaWxlIDxmaWxlbmFtZT5ldWRldl8zLjIuOS5iYjwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFBST1ZJREVTICs9ICJsaWJwb3N0cHJvYyIKKyAgICAgUFJPVklERVMgPSAidWRldiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gc3RhdGVtZW50IHJlc3VsdHMgaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlICJsaWJhdiIgcmVjaXBlIGFsc28gYmVpbmcga25vd24gYXMgImxpYnBvc3Rwcm9jIi4KKyAgICAgICAgICAgICAgICAgICAgdGhlICJldWRldiIgcmVjaXBlIGFsc28gYmVpbmcgYXZhaWxhYmxlIGFzIHNpbXBseSAidWRldiIuCisKKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBHaXZlbiB0aGF0IGEgcmVjaXBlJ3Mgb3duIHJlY2lwZSBuYW1lIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpY2l0bHkgaW4gaXRzIG93biA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgdW5uZWNlc3NhcnkgdG8gYWRkIGFsaWFzZXMgd2l0aCB0aGUgIis9IiBvcGVyYXRvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIGEgc2ltcGxlIGFzc2lnbm1lbnQgd2lsbCBiZSBzdWZmaWNpZW50LiBJbiBvdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgd29yZHMsIHdoaWxlIHlvdSBjb3VsZCB3cml0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJPVklERVMgKz0gInVkZXYiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYWJvdmUsIHRoZSAiKz0iIGlzIG92ZXJraWxsIGFuZCB1bm5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTMzODMsOCArMTM0NDYsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0tJUF9GSUxFREVQUyc+PGdsb3NzdGVybT5TS0lQX0ZJTEVERVBTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTS0lQX0ZJTEVERVBTW2RvY10gPSAiRW5hYmxlcyB5b3UgdG8gcmVtb3ZlIGFsbCBmaWxlcyBmcm9tCi0gICAgICAgICAgICAgICAgdGhlICJQcm92aWRlcyIgc2VjdGlvbiBvZiBhbiBSUE0gcGFja2FnZS4iCisgICAgICAgICAgICAgICAgU0tJUF9GSUxFREVQU1tkb2NdID0gIkVuYWJsZXMgeW91IHRvIHJlbW92ZSBhbGwgZmlsZXMgZnJvbSB0aGUgJ1Byb3ZpZGVzJyBzZWN0aW9uIG9mIGFuIFJQTSBwYWNrYWdlLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTE1MzMxLDcgKzE1MzkzLDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRDTElCQyc+PGdsb3NzdGVybT5UQ0xJQkM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFRDTElCQ1tkb2NdID0gIlNwZWNpZmllcyBHTlUgc3RhbmRhcmQgQyBsaWJyYXJ5IChsaWJjKSB2YXJpYW50IHRvIHVzZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFlvdSBjYW4gc2VsZWN0ICdnbGliYycsICdtdXNsJyBvciAibmV3bGliLiIKKyAgICAgICAgICAgICAgICBUQ0xJQkNbZG9jXSA9ICJTcGVjaWZpZXMgR05VIHN0YW5kYXJkIEMgbGlicmFyeSAobGliYykgdmFyaWFudCB0byB1c2UgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBZb3UgY2FuIHNlbGVjdCAnZ2xpYmMnLCAnbXVzbCcgb3IgJ25ld2xpYicuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTU2NDYsOSArMTU3MDgsOSBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgY29udHJvbGxlciB0byB1c2Ugd2hlbiBydW5uaW5nIHRlc3RzCiAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgYSB0ZXN0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBjb250cm9sbGVyIHRvIHVzZSBpcyAiUWVtdVRhcmdldCI6CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGNvbnRyb2xsZXIgdG8gdXNlIGlzICJxZW11IjoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBURVNUX1RBUkdFVCA9ICJRZW11VGFyZ2V0IgorICAgICBURVNUX1RBUkdFVCA9ICJxZW11IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xNTY2NywyMSArMTU3MjksMjEgQEAKICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfVEFSR0VUPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJRZW11VGFyZ2V0Ijo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4icWVtdSI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb290cyBhIFFFTVUgaW1hZ2UgYW5kIHJ1bnMgdGhlIHRlc3RzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcWVtdS1pbWFnZS1lbmFibGluZy10ZXN0cyc+RW5hYmxpbmcgUnVudGltZSBUZXN0cyBvbiBRRU1VPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IlNpbXBsZVJlbW90ZVRhcmdldCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InNpbXBsZXJlbW90ZSI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5zIHRoZSB0ZXN0cyBvbiB0YXJnZXQgaGFyZHdhcmUgdGhhdCBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXAgYW5kIHJ1bm5pbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhhcmR3YXJlIGNhbiBiZSBvbiB0aGUgbmV0d29yayBvciBpdCBjYW4gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGRldmljZSBydW5uaW5nIGFuIGltYWdlIG9uIFFFTVUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYWxzbyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEVTVF9UQVJHRVRfSVAnPjxmaWxlbmFtZT5URVNUX1RBUkdFVF9JUDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHVzZSAiU2ltcGxlUmVtb3RlVGFyZ2V0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHlvdSB1c2UgInNpbXBsZXJlbW90ZSIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJndW1lbnQgaXMgZGVmaW5lZCBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9zaW1wbGVyZW1vdGUucHk8L2ZpbGVuYW1lPi4KQEAgLTE2NDczLDcgKzE2NTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgQXBwZW5kcyBhIHN0cmluZyB0byB0aGUgbmFtZSBvZiB0aGUgbG9jYWwgdmVyc2lvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgVS1Cb290IGltYWdlLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYXNzdW1pbmcgdGhlIHZlcnNpb24gb2YgdGhlIFUtQm9vdCBpbWFnZQotICAgICAgICAgICAgICAgICAgICBidWlsdCB3YXMgIjIwMTMuMTAsIHRoZSBmdWxsIHZlcnNpb24gc3RyaW5nIHJlcG9ydGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IHdhcyAiMjAxMy4xMCIsIHRoZSBmdWxsIHZlcnNpb24gc3RyaW5nIHJlcG9ydGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgIFUtQm9vdCB3b3VsZCBiZSAiMjAxMy4xMC15b2N0byIgZ2l2ZW4gdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTE2NzcxLDE4ICsxNjgzMywyMSBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVVNFUkFERF9FUlJPUl9EWU5BTUlDJz48Z2xvc3N0ZXJtPlVTRVJBRERfRVJST1JfRFlOQU1JQzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICBVU0VSQUREX0VSUk9SX0RZTkFNSUNbZG9jXSA9ICJJZiBzZXQgdG8gJ2Vycm9yJywgZm9yY2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByb2R1Y2UgYW4gZXJyb3IgaWYgdGhlIHVzZXIgaWRlbnRpZmljYXRpb24gKHVpZCkgYW5kIGdyb3VwIGlkZW50aWZpY2F0aW9uIChnaWQpIHZhbHVlcyBhcmUgbm90IGRlZmluZWQgaW4gZmlsZXMvcGFzc3dkIGFuZCBmaWxlcy9ncm91cCBmaWxlcy4gSWYgc2V0IHRvICd3YXJuJywgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGluc3RlYWQuIgorICAgICAgICAgICAgICAgVVNFUkFERF9FUlJPUl9EWU5BTUlDW2RvY10gPSAiSWYgc2V0IHRvICdlcnJvcicsIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBwcm9kdWNlIGFuIGVycm9yIGlmIHRoZSB1c2VyIGlkZW50aWZpY2F0aW9uICh1aWQpIGFuZCBncm91cCBpZGVudGlmaWNhdGlvbiAoZ2lkKSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkIGluIGFueSBvZiB0aGUgZmlsZXMgbGlzdGVkIGluIFVTRVJBRERfVUlEX1RBQkxFUyBhbmQgVVNFUkFERF9HSURfVEFCTEVTLiBJZiBzZXQgdG8gJ3dhcm4nLCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgaW5zdGVhZC4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gImVycm9yIiwgZm9yY2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgYW4gZXJyb3IgaWYgdGhlIHVzZXIgaWRlbnRpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPikgYW5kIGdyb3VwIGlkZW50aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4pIHZhbHVlcyBhcmUgbm90IGRlZmluZWQKLSAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPmZpbGVzL3Bhc3N3ZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+ZmlsZXMvZ3JvdXA8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvICJ3YXJuIiwgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGluc3RlYWQuCisKKyAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvIDxmaWxlbmFtZT5lcnJvcjwvZmlsZW5hbWU+LCBmb3JjZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBhbiBlcnJvciBpZiB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiAoPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+KSBhbmQgZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmljYXRpb24gKDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPikgdmFsdWVzIGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiBhbnkgb2YgdGhlIGZpbGVzIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICBpbiA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9VSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9VSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9HSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9HSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+LiBJZgorICAgICAgICAgICAgICAgICAgICBzZXQgdG8gPGZpbGVuYW1lPndhcm48L2ZpbGVuYW1lPiwgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkCisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xNjgwOSw2ICsxNjg3NCwyMCBAQAogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9HSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9HSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgaXMgYSBkaWZmZXJlbmNlIGluIGJlaGF2aW9yIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZyA8ZmlsZW5hbWU+VVNFUkFERF9FUlJPUl9EWU5BTUlDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPmVycm9yPC9maWxlbmFtZT4gYW5kIHNldHRpbmcgaXQKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPndhcm48L2ZpbGVuYW1lPi4gV2hlbiBpdCBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPndhcm48L2ZpbGVuYW1lPiwgdGhlIGJ1aWxkIHN5c3RlbSB3aWxsIHJlcG9ydCBhCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgZm9yIGV2ZXJ5IHVuZGVmaW5lZCA8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPiBpbiBhbnkgcmVjaXBlLiBCdXQgd2hlbiBpdCBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPmVycm9yPC9maWxlbmFtZT4sIGl0IHdpbGwgb25seSByZXBvcnQgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgIGZvciByZWNpcGVzIHRoYXQgYXJlIGFjdHVhbGx5IGJ1aWx0LiBUaGlzIHNhdmVzIHlvdSBmcm9tCisgICAgICAgICAgICAgICAgICAgIGhhdmluZyB0byBhZGQgc3RhdGljIElEcyBmb3IgcmVjaXBlcyB0aGF0IHlvdSBrbm93IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgbmV2ZXIgYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC0xNzEwOCw3ICsxNzE4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUga2lja3N0YXJ0IGZpbGUgZm9ybWF0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYta2lja3N0YXJ0Jz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYta2lja3N0YXJ0Jz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICBDaGFwdGVyLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xNzE3OCw4ICsxNzI1Nyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1YU0VSVkVSJz48Z2xvc3N0ZXJtPlhTRVJWRVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgWFNFUlZFUltkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFja2FnZXMgdGhhdCBzaG91bGQgYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICB0byBwcm92aWRlIGFuIFggc2VydmVyIGFuZCBkcml2ZXJzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lLiIKKyAgICAgICAgICAgICAgIFhTRVJWRVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCB0byBwcm92aWRlIGFuIFggc2VydmVyIGFuZCBkcml2ZXJzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKaW5kZXggNzY1YzBmMi4uODZiNmQ3ZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKQEAgLTI5Nyw4ICsyOTcsNyBAQAogCiAgICAgICAgICA8cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZToKICAgICAgICAgICAgICAgICAgICBiZWFnbGVib25lLXlvY3RvLCBiZWFnbGVib25lLXlvY3RvLWxzYiwgZWRnZXJvdXRlciwgZWRnZXJvdXRlci1sc2IsCi0gICAgICAgICAgICAgICAgICAgZ2VuZXJpY3g4NiwgZ2VuZXJpY3g4Ni02NCwgZ2VuZXJpY3g4Ni02NC1sc2IsIGdlbmVyaWN4ODYtbHNiLAotICAgICAgICAgICAgICAgICAgIG1wYzgzMTVlLXJkYiwgbXBjODMxNWUtcmRiLWxzYiwgYW5kIHFlbXUqLgorICAgICAgICAgICAgICAgICAgIGdlbmVyaWN4ODYsIGdlbmVyaWN4ODYtNjQsIGdlbmVyaWN4ODYtNjQtbHNiLCBnZW5lcmljeDg2LWxzYiBhbmQgcWVtdSouCiAKIDwhLS0+CiAgICAgICAgICA8cmVwbGFjZWFibGU+ZGF0ZV90aW1lPC9yZXBsYWNlYWJsZT4gaXMgYSBkYXRlIGFuZCB0aW1lIHN0YW1wLgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDhkNWY2ZWMuLjUzNzY2M2QKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTM0LDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMTwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTY8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjI8L3Jldm51bWJlcj4KQEAgLTY4LDkgKzY3LDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtOTIsNyArOTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTA5LDE4ICsxMTMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ3YjRiY2UuLmU2ZDQyNDUKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+S3Jpc3RpPC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPmtyaXN0aUBidXp6Y29sbGVjdGl2ZW1hcmtldGluZy5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zNCw3ICszMyw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjg8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE1PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjggUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4wPC9yZXZudW1iZXI+CkBAIC03OCw5ICs3NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTEwMiw3ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTE5LDE4ICsxMjMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZAppbmRleCAzNzRkOGU3Li5iMWVhOWVkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKQEAgLTEsMzYgKzEsMzYgQEAKICMgUHJvY2Vzc2VzIGJpdGJha2UtdXNlci1tYW51YWwgKDx3b3JkPi08d29yZD4tPHdvcmQ+IHN0eWxlKS4KICMgVGhpcyBzdHlsZSBpcyBmb3IgbWFudWFsIHRocmVlLXdvcmQgZm9sZGVycywgd2hpY2ggY3VycmVudGx5IGlzIG9ubHkgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCiAjIFdlIHVzZWQgdG8gaGF2ZSB0aGUgInlvY3RvLXByb2plY3QtcXMiIGFuZCAicG9reS1yZWYtbWFudWFsIiBmb2xkZXJzIGJ1dCBubyBsb25nZXIgZG8uCi0jIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvW2Etel0qLVthLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL1thLXpdKi1bYS16XSotW2Etel0qL1thLXpdKi1bYS16XSotW2Etel0qLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKIAogIyBQcm9jZXNzZXMgYWxsIG90aGVyIG1hbnVhbHMgKDx3b3JkPi08d29yZD4gc3R5bGUpLgogIyBUaGlzIHN0eWxlIGlzIGZvciBtYW51YWwgZm9sZGVycyB0aGF0IHVzZSB0d28gd29yZCwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIG5vdyAoZS5nLiAicmVmLW1hbnVhbCIpLgogIyBIZXJlIGlzIHRoZSBvbmUtbGluZXI6Ci0jIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKKyMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9bYS16XSotW2Etel0qL1thLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCiAjIFByb2Nlc3MgY2FzZXMgd2hlcmUganVzdCBhbiBleHRlcm5hbCBtYW51YWwgaXMgcmVmZXJlbmNlZCB3aXRob3V0IGFuIGlkIGFuY2hvcgotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L2E+QFlvY3RvIFByb2plY3QgUXVpY2sgQnVpbGRAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5CaXRCYWtlIFVzZXIgTWFudWFsPC9hPkBCaXRCYWtlIFVzZXIgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvZGV2LW1hbnVhbC9kZXYtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvYT5AWW9jdG8gcHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvYT5AWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKUBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvYT5AWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGVAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+VG9hc3RlciBVc2VyIE1hbnVhbDwvYT5AVG9hc3RlciBVc2VyIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvYT5AWW9jdG8gUHJvamVjdCBRdWljayBCdWlsZEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPkJpdEJha2UgVXNlciBNYW51YWw8L2E+QEJpdEJha2UgVXNlciBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC9hPkBZb2N0byBwcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC9hPkBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC9hPkBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZUBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Ub2FzdGVyIFVzZXIgTWFudWFsPC9hPkBUb2FzdGVyIFVzZXIgTWFudWFsQGcKIAogIyBQcm9jZXNzIGEgc2luZ2xlLCByb3VnZSBvY2N1cnJlbmNlIG9mIGEgbGlua2VkIHJlZmVyZW5jZSB0byB0aGUgTWVnYS1NYW51YWwuCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbEBnCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5IGIvcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kKaW5kZXggMjIwNDgwMS4uMmJhM2I1YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kKKysrIGIvcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kKQEAgLTUzLDExICs1MywxMSBAQAogCiBkb2N1bWVudGF0aW9uOgogICAgIEdpdCByZXBvc2l0b3J5OiBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS95b2N0by1kb2NzLwotICAgIE1haWxpbmcgbGlzdDogeW9jdG9AeW9jdG9wcm9qZWN0Lm9yZworICAgIE1haWxpbmcgbGlzdDogZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnCiAKIG1ldGEtcG9reSwgbWV0YS15b2N0by1ic3A6CiAgICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEteW9jdG8oLWJzcCkKLSAgICBNYWlsaW5nIGxpc3Q6IHBva3lAeW9jdG9wcm9qZWN0Lm9yZworICAgIE1haWxpbmcgbGlzdDogcG9reUBsaXN0cy55b2N0b3Byb2plY3Qub3JnCiAKIEV2ZXJ5dGhpbmcgZWxzZSBzaG91bGQgYmUgc2VudCB0byB0aGUgT3BlbkVtYmVkZGVkIENvcmUgbWFpbGluZyBsaXN0LiAgSWYgaW4KIGRvdWJ0LCBjaGVjayB0aGUgb2UtY29yZSBnaXQgcmVwb3NpdG9yeSBmb3IgdGhlIGNvbnRlbnQgeW91IGludGVuZCB0byBtb2RpZnkuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMKaW5kZXggOTkyNmMxYi4uMGIwNDEyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYwpAQCAtMiw3ICsyLDcgQEAKIERJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHBhbSIKIAogIyBVc2UgdGhlIExUU0kgS2VybmVsCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xOSUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS40JSIKIAogIyBFbnN1cmUgdGhlIGtlcm5lbCBuZnMgc2VydmVyIGlzIGVuYWJsZWQKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcG4tbGludXgteW9jdG8gPSAiIGZlYXR1cmVzL25mc2QvbmZzZC1lbmFibGUuc2NjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCmluZGV4IDYxOTQxNDIuLjkxNzc5ZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKQEAgLTEsMTEgKzEsMTEgQEAKIERJU1RSTyA9ICJwb2t5IgogRElTVFJPX05BTUUgPSAiUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSIKLURJU1RST19WRVJTSU9OID0gIjMuMCIKLURJU1RST19DT0RFTkFNRSA9ICJ6ZXVzIgorRElTVFJPX1ZFUlNJT04gPSAiMy4xIgorRElTVFJPX0NPREVOQU1FID0gImR1bmZlbGwiCiBTREtfVkVORE9SID0gIi1wb2t5c2RrIgogU0RLX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoJ0RJU1RST19WRVJTSU9OJykucmVwbGFjZSgnc25hcHNob3QtJHtEQVRFfScsICdzbmFwc2hvdCcpfSIKIAotTUFJTlRBSU5FUiA9ICJQb2t5IDxwb2t5QHlvY3RvcHJvamVjdC5vcmc+IgorTUFJTlRBSU5FUiA9ICJQb2t5IDxwb2t5QGxpc3RzLnlvY3RvcHJvamVjdC5vcmc+IgogCiBUQVJHRVRfVkVORE9SID0gIi1wb2t5IgogCkBAIC0yMSw3ICsyMSw3IEBACiAKIERJU1RST19GRUFUVVJFUyA/PSAiJHtESVNUUk9fRkVBVFVSRVNfREVGQVVMVH0gJHtQT0tZX0RFRkFVTFRfRElTVFJPX0ZFQVRVUkVTfSIKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS40JSIKIAogU0RLX05BTUUgPSAiJHtESVNUUk99LSR7VENMSUJDfS0ke1NES01BQ0hJTkV9LSR7SU1BR0VfQkFTRU5BTUV9LSR7VFVORV9QS0dBUkNIfS0ke01BQ0hJTkV9IgogU0RLUEFUSCA9ICIvb3B0LyR7RElTVFJPfS8ke1NES19WRVJTSU9OfSIKQEAgLTUyLDEzICs1MiwxNCBAQAogU0FOSVRZX1RFU1RFRF9ESVNUUk9TID89ICIgXAogICAgICAgICAgICAgcG9reS0yLjcgXG4gXAogICAgICAgICAgICAgcG9reS0zLjAgXG4gXAorICAgICAgICAgICAgcG9reS0zLjEgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE2LjA0IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xOC4wNCBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTkuMDQgXG4gXAotICAgICAgICAgICAgZmVkb3JhLTI4IFxuIFwKLSAgICAgICAgICAgIGZlZG9yYS0yOSBcbiBcCiAgICAgICAgICAgICBmZWRvcmEtMzAgXG4gXAorICAgICAgICAgICAgZmVkb3JhLTMxIFxuIFwKICAgICAgICAgICAgIGNlbnRvcy03IFxuIFwKKyAgICAgICAgICAgIGNlbnRvcy04IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi04IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi05IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi0xMCBcbiBcCkBAIC04NywzICs4OCw4IEBACiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwogcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwogSU5IRVJJVCArPSAidW5pbmF0aXZlIgorCitJTkhFUklUICs9ICJyZXByb2R1Y2libGVfYnVpbGQiCisKK0JCX1NJR05BVFVSRV9IQU5ETEVSID89ICJPRUVxdWl2SGFzaCIKK0JCX0hBU0hTRVJWRSA/Pz0gImF1dG8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKaW5kZXggYTRiM2QxZS4uMjM0YmUxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw3ICs5LDcgQEAKIEJCRklMRV9QQVRURVJOX3lvY3RvID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG8gPSAiNSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvID0gInpldXMiCitMQVlFUlNFUklFU19DT01QQVRfeW9jdG8gPSAiZHVuZmVsbCIKIAogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQppbmRleCAyZTBiYjQxLi5iNTU1ZjFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKQEAgLTMxLDcgKzMxLDYgQEAKICNNQUNISU5FID89ICJiZWFnbGVib25lLXlvY3RvIgogI01BQ0hJTkUgPz0gImdlbmVyaWN4ODYiCiAjTUFDSElORSA/PSAiZ2VuZXJpY3g4Ni02NCIKLSNNQUNISU5FID89ICJtcGM4MzE1ZS1yZGIiCiAjTUFDSElORSA/PSAiZWRnZXJvdXRlciIKICMKICMgVGhpcyBzZXRzIHRoZSBkZWZhdWx0IG1hY2hpbmUgdG8gYmUgcWVtdXg4Ni02NCBpZiBubyBvdGhlciBtYWNoaW5lIGlzIHNlbGVjdGVkOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKaW5kZXggMDgxODFhOC4uYTRiZDQ2MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5fc2VsZnRlc3QgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9zZWxmdGVzdCA9ICI1IgogCi1MQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAiemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9zZWxmdGVzdCA9ICJkdW5mZWxsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9saWNlbnNlL2luY29tcGF0aWJsZS1saWNlbnNlcy5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbGljZW5zZS9pbmNvbXBhdGlibGUtbGljZW5zZXMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMxNTQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbGljZW5zZS9pbmNvbXBhdGlibGUtbGljZW5zZXMuYmIKQEAgLTAsMCArMSwzIEBACitTVU1NQVJZID0gIlJlY2lwZSB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMiCitERVNDUklQVElPTiA9ICJJcyBsaWNlbnNlZCB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCAmIEdQTC0zLjAgJiBMR1BMLTMuMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtY2hvd24vc2VsZnRlc3QtY2hvd24uYmIgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWNob3duL3NlbGZ0ZXN0LWNob3duLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YmY5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWNob3duL3NlbGZ0ZXN0LWNob3duLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAic2VsZnRlc3QgY2hvd24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworTElDRU5TRSA9ICJNSVQiCisKK1MgPSAiJHtXT1JLRElSfSIKKworaW5oZXJpdCB1c2VyYWRkIGFsbGFyY2gKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLXUgMTIzNCAtTSB0ZXN0IgorVEVTVERJUiA9ICIke0R9JHtzeXNjb25mZGlyfS9zZWxmdGVzdC1jaG93biIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICAgJHtURVNURElSfQorCWluc3RhbGwgLWQgICAke1RFU1RESVJ9L2RpcgorCXRvdWNoICAgICAgICAke1RFU1RESVJ9L2ZpbGUKKwlsbiAtcyAuL2ZpbGUgJHtURVNURElSfS9zeW1saW5rCisKKwljaG93biAgICB0ZXN0OnRlc3QgJHtURVNURElSfS9maWxlCisJY2hvd24gLVIgdGVzdDp0ZXN0ICR7VEVTVERJUn0vZGlyCisJY2hvd24gLWggdGVzdDp0ZXN0ICR7VEVTVERJUn0vc3ltbGluaworfQorCitGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3NlbGZ0ZXN0LWNob3duLyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDFfMS4wLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gxXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmE2ODJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gxXzEuMC5iYgpAQCAtMCwwICsxLDE0IEBACitMSUNFTlNFID0gIkNMT1NFRCIKKworUFJPVklERVMgPSAidmlydHVhbC9zeXNyb290LXRlc3QiCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworVEVTVFNUUklORyA/PSAiMSIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJZWNobyAiIyB0ZXN0ICR7VEVTVFNUUklOR30iID4gJHtEfSR7aW5jbHVkZWRpcn0vc3lzcm9vdC10ZXN0LmgKK30KKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDJfMS4wLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gyXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzE3MmYzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gyXzEuMC5iYgpAQCAtMCwwICsxLDE0IEBACitMSUNFTlNFID0gIkNMT1NFRCIKKworUFJPVklERVMgPSAidmlydHVhbC9zeXNyb290LXRlc3QiCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworVEVTVFNUUklORyA/PSAiMiIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJZWNobyAiIyB0ZXN0ICR7VEVTVFNUUklOR30iID4gJHtEfSR7aW5jbHVkZWRpcn0vc3lzcm9vdC10ZXN0LmgKK30KKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3RfMS4wLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0XzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjA0ODdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0XzEuMC5iYgpAQCAtMCwwICsxLDYgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCBwcm92aWRlciBzeXNyb290IHRlc3QiCitMSUNFTlNFID0gIkNMT1NFRCIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitERVBFTkRTID0gInZpcnR1YWwvc3lzcm9vdC10ZXN0IgorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCmluZGV4IDdkNzM4MWEuLjVlNDQ5YTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTQsNCArMTQsNCBAQAogCiBMQVlFUkRFUEVORFNfc2tlbGV0b24gPSAiY29yZSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3NrZWxldG9uID0gInpldXMiCitMQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAiZHVuZmVsbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1za2VsZXRvbi9yZWNpcGVzLWJhcmVtZXRhbC9iYXJlbWV0YWwtZXhhbXBsZXMvYmFyZW1ldGFsLWhlbGxvd29ybGRfZ2l0LmJiIGIvcG9reS9tZXRhLXNrZWxldG9uL3JlY2lwZXMtYmFyZW1ldGFsL2JhcmVtZXRhbC1leGFtcGxlcy9iYXJlbWV0YWwtaGVsbG93b3JsZF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0YTkwZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1za2VsZXRvbi9yZWNpcGVzLWJhcmVtZXRhbC9iYXJlbWV0YWwtZXhhbXBsZXMvYmFyZW1ldGFsLWhlbGxvd29ybGRfZ2l0LmJiCkBAIC0wLDAgKzEsMTA2IEBACitTVU1NQVJZID0gIkJhcmVtZXRhbCBleGFtcGxlcyB0byB3b3JrIHdpdGggdGhlIHNldmVyYWwgUUVNVSBhcmNoaXRlY3R1cmVzIHN1cHBvcnRlZCBvbiBPcGVuRW1iZWRkZWQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWVoczI5L2JhcmVtZXRhbC1oZWxsb3FlbXUiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM5MzQ2NjQwYTIzYzcwMWU0ZjQ1OWUwNWY1NmY0NDQ5IgorCitTUkNSRVYgPSAiOTlmNGZhNGEzYjI2NmI0MmI1MmFmMzAyNjEwYjBmNGY0MjliYTVlMyIKK1BWID0gIjAuMStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FlaHMyOS9iYXJlbWV0YWwtaGVsbG9xZW11LmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgorCitTID0gIiR7V09SS0RJUn0vZ2l0LyIKKworIyBUaGVzZSBleGFtcGxlcyBhcmUgbm90IG1lYW50IHRvIGJlIGJ1aWx0IHdoZW4gdXNpbmcgZWl0aGVyIG11c2wgb3IgZ2xpYmMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbGliYy1nbGliY19jbGFzcy10YXJnZXQgPSAibnVsbCIKKworIyBUaGlzIHdpbGwgYmUgdHJhbnNsYXRlZCBhdXRvbWF0aWNhbGx5IHRvIHRoZSBhcmNoaXRlY3R1cmUgYW5kCisjIG1hY2hpbmUgdGhhdCBRRU1VIHVzZXMgb24gT0UsIGUuZy4gLW1hY2hpbmUgdmlydCAtY3B1IGNvcnRleC1hNTcKKyMgYnV0IHRoZSBleGFtcGxlcyBjYW4gYWxzbyBiZSBydW4gb24gb3RoZXIgYXJjaGl0ZWN0dXJlcy9tYWNoaW5lcworIyBzdWNoIGFzIHZleHByZXNzLWExNSBieSBvdmVycmlkaW5nIHRoZSBzZXR0aW5nIG9uIHRoZSBtYWNoaW5lLmNvbmYKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtdjV8cWVtdWFybXxxZW11YXJtNjQiCisKK0JBUkVNRVRBTF9RRU1VQVJDSCA/PSAiIgorQkFSRU1FVEFMX1FFTVVBUkNIX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUiCitCQVJFTUVUQUxfUUVNVUFSQ0hfcWVtdWFybSA9ICJhcm0iCitCQVJFTUVUQUxfUUVNVUFSQ0hfcWVtdWFybTY0ID0gImFhcmNoNjQiCisKKworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgUUVNVUFSQ0g9JHtCQVJFTUVUQUxfUUVNVUFSQ0h9IFY9MSIKKworZG9faW5zdGFsbCgpeworICAgIGluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtCfWJ1aWxkL2hlbGxvX2JhcmVtZXRhbF8ke0JBUkVNRVRBTF9RRU1VQVJDSH0uYmluICR7RH0vJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5iaW4KKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9YnVpbGQvaGVsbG9fYmFyZW1ldGFsXyR7QkFSRU1FVEFMX1FFTVVBUkNIfS5lbGYgJHtEfS8ke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmVsZgorfQorCisjIEJvcnJvd2VkIGZyb20gbWV0YS1mcmVlcnRvcworaW5oZXJpdCByb290ZnMtcG9zdGNvbW1hbmRzCitpbmhlcml0IGRlcGxveQorSU1HREVQTE9ZRElSID89ICIke1dPUktESVJ9L2RlcGxveS0ke1BOfS1pbWFnZS1jb21wbGV0ZSIKK2RvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtERVBMT1lfRElSX0lNQUdFfSIKK2RvX3Jvb3Rmc1tkaXJzXSA9ICIke0RFUExPWURJUn0gJHtERVBMT1lfRElSX0lNQUdFfSIKK0RFUExPWURJUiA9ICIke0lNR0RFUExPWURJUn0iCitJTUFHRV9MSU5LX05BTUUgPz0gImJhcmVtZXRhbC1oZWxsb3dvcmxkLWltYWdlLSR7TUFDSElORX0iCitJTUFHRV9OQU1FX1NVRkZJWCA/PSAiIgorCitkb19kZXBsb3koKXsKKyAgICBpbnN0YWxsICR7RH0vJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5iaW4gJHtERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5iaW4KKyAgICBpbnN0YWxsICR7RH0vJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5lbGYgJHtERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5lbGYKK30KKworZG9faW1hZ2UoKXsKKyAgICA6Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vaGVsbG9fYmFyZW1ldGFsXyR7TUFDSElORX0uYmluIFwKKyAgICAke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmVsZiBcCisiCisKK3B5dGhvbiBkb19yb290ZnMoKXsKKyAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MKKyAgICBmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKKworICAgICMgV3JpdGUgZW1wdHkgbWFuaWZlc3QgdGVzdGRhdGUgZmlsZQorICAgIGRlcGxveV9kaXIgPSBkLmdldFZhcignREVQTE9ZRElSJykKKyAgICBsaW5rX25hbWUgPSBkLmdldFZhcignSU1BR0VfTElOS19OQU1FJykKKyAgICBtYW5pZmVzdF9uYW1lID0gZC5nZXRWYXIoJ0lNQUdFX01BTklGRVNUJykKKworICAgIFBhdGgobWFuaWZlc3RfbmFtZSkudG91Y2goKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0X25hbWUpIGFuZCBsaW5rX25hbWU6CisgICAgICAgIG1hbmlmZXN0X2xpbmsgPSBkZXBsb3lfZGlyICsgIi8iICsgbGlua19uYW1lICsgIi5tYW5pZmVzdCIKKyAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKG1hbmlmZXN0X2xpbmspOgorICAgICAgICAgICAgb3MucmVtb3ZlKG1hbmlmZXN0X2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShtYW5pZmVzdF9uYW1lKSwgbWFuaWZlc3RfbGluaykKKyAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MoZCwgZC5nZXRWYXIoJ1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJykpCit9CisKKyMgUUVNVSBnZW5lcmljIEZyZWVSVE9TIHBhcmFtZXRlcnMKK1FCX0RFRkFVTFRfS0VSTkVMID0gIiR7SU1BR0VfTElOS19OQU1FfS5iaW4iCitRQl9NRU0gPSAiLW0gMjU2IgorUUJfT1BUX0FQUEVORCA9ICItbm9ncmFwaGljIgorUUJfREVGQVVMVF9GU1RZUEUgPSAiYmluIgorUUJfRFRCID0gIiIKKworIyBUaGlzIG5leHQgcGFydCBpcyBuZWNlc3NhcnkgdG8gdHJpY2sgdGhlIGJ1aWxkIHN5c3RlbSBpbnRvIHRoaW5raW5nCisjIGl0cyBidWlsZGluZyBhbiBpbWFnZSByZWNpcGUgc28gaXQgZ2VuZXJhdGVzIHRoZSBxZW11Ym9vdC5jb25mCithZGR0YXNrIGRvX2RlcGxveSBhZnRlciBkb193cml0ZV9xZW11Ym9vdF9jb25mIGJlZm9yZSBkb19idWlsZAorYWRkdGFzayBkb19yb290ZnMgYmVmb3JlIGRvX2RlcGxveSBhZnRlciBkb19pbnN0YWxsCithZGR0YXNrIGRvX2ltYWdlIGFmdGVyIGRvX3Jvb3RmcyBiZWZvcmUgZG9fYnVpbGQKK2luaGVyaXQgcWVtdWJvb3QKKworIyBCYXNlZCBvbiBpbWFnZS5iYmNsYXNzIHRvIG1ha2Ugc3VyZSB3ZSBidWlsZCBxZW11CitweXRob24oKXsKKyAgICAjIGRvX2FkZHRvX3JlY2lwZV9zeXNyb290IGRvZXNudCBleGlzdCBmb3IgYWxsIHJlY2lwZXMsIGJ1dCB3ZSBuZWVkIGl0IHRvIGhhdmUKKyAgICAjIC91c3IvYmluIG9uIHJlY2lwZS1zeXNyb290IChxZW11KSBwb3B1bGF0ZWQKKyAgICBkZWYgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKHRhc2spOgorICAgICAgICBkZXBzID0gIiIKKyAgICAgICAgZm9yIGRlcCBpbiAoZC5nZXRWYXIoJ0VYVFJBX0lNQUdFREVQRU5EUycpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBvbmx5IGFkZCBpdCBmb3IgcWVtdQorICAgICAgICAgICAgaWYgJ3FlbXUnIGluIGRlcDoKKyAgICAgICAgICAgICAgICBkZXBzICs9ICIgJXM6JXMiICUgKGRlcCwgdGFzaykKKyAgICAgICAgcmV0dXJuIGRlcHMKKyAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlJywgJ2RlcGVuZHMnLCBleHRyYWltYWdlX2dldGRlcGVuZHMoJ2RvX2FkZHRvX3JlY2lwZV9zeXNyb290JykpCisgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZScsICdkZXBlbmRzJywgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKCdkb19wb3B1bGF0ZV9zeXNyb290JykpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZSBiL3Bva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCmluZGV4IGQ4ZDJhMGMuLjU5OTZiZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCkBAIC0yOCw3ICsyOCw2IEBACiBUaGUgZm9sbG93aW5nIGJvYXJkcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBtZXRhLXlvY3RvLWJzcCBsYXllcjoKIAogICAqIFRleGFzIEluc3RydW1lbnRzIEJlYWdsZWJvbmUgKGJlYWdsZWJvbmUteW9jdG8pCi0gICogRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiAobXBjODMxNWUtcmRiKQogICAqIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZSAoZWRnZXJvdXRlcikKICAgKiBHZW5lcmFsIElBIHBsYXRmb3JtcyAoZ2VuZXJpY3g4NiBhbmQgZ2VuZXJpY3g4Ni02NCkKIApAQCAtMTU1LDE0NyArMTU0LDYgQEAKIAogICAzLiBJbnNlcnQgdGhlIFNEIGNhcmQgaW50byB0aGUgQmVhZ2xlYm9uZSBhbmQgYm9vdCB0aGUgYm9hcmQuCiAKLUZyZWVzY2FsZSBNUEM4MzE1RS1SREIgKG1wYzgzMTVlLXJkYikKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIE1QQzgzMTUgUG93ZXJQQyByZWZlcmVuY2UgcGxhdGZvcm0gKE1QQzgzMTVFLVJEQikgaXMgYWltZWQgYXQgaGFyZHdhcmUgYW5kCi1zb2Z0d2FyZSBkZXZlbG9wbWVudCBvZiBuZXR3b3JrIGF0dGFjaGVkIHN0b3JhZ2UgKE5BUykgYW5kIGRpZ2l0YWwgbWVkaWEgc2VydmVyCi1hcHBsaWNhdGlvbnMuIFRoZSBNUEM4MzE1RS1SREIgZmVhdHVyZXMgdGhlIFBvd2VyUVVJQ0MgSUkgUHJvIHByb2Nlc3Nvciwgd2hpY2gKLWluY2x1ZGVzIGEgYnVpbHQtaW4gc2VjdXJpdHkgYWNjZWxlcmF0b3IuCi0KLShOb3RlOiB5b3UgbWF5IGZpbmQgaXQgZWFzaWVyIHRvIG9yZGVyIE1QQzgzMTVFLVJEQkE7IHRoaXMgYXBwZWFycyB0byBiZSB0aGUKLXNhbWUgYm9hcmQgaW4gYW4gZW5jbG9zdXJlIHdpdGggYWNjZXNzb3JpZXMuIEluIGFueSBjYXNlIGl0IGlzIGZ1bGx5Ci1jb21wYXRpYmxlIHdpdGggdGhlIGluc3RydWN0aW9ucyBnaXZlbiBoZXJlLikKLQotU2V0dXAgaW5zdHJ1Y3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0KLQotWW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgotKiBORlMgcm9vdCBzZXR1cCBvbiB5b3VyIHdvcmtzdGF0aW9uCi0qIFRGVFAgc2VydmVyIGluc3RhbGxlZCBvbiB5b3VyIHdvcmtzdGF0aW9uCi0qIFN0cmFpZ2h0LXRocnUgOS1jb25kdWN0b3Igc2VyaWFsIGNhYmxlIChEQjksIE0vRikgY29ubmVjdGVkIGZyb20geW91ciAKLSAgUEMgdG8gVUFSVDEKLSogRXRoZXJuZXQgY29ubmVjdGVkIHRvIHRoZSBmaXJzdCBldGhlcm5ldCBwb3J0IG9uIHRoZSBib2FyZAotCi0tLS0gUHJlcGFyYXRpb24gLS0tCi0KLU5vdGU6IGlmIHlvdSBoYXZlIGFsdGVyZWQgeW91ciBib2FyZCdzIGV0aGVybmV0IE1BQyBhZGRyZXNzKGVzKSBmcm9tIHRoZQotZGVmYXVsdHMsIG9yIHlvdSBuZWVkIHRvIGRvIHNvIGJlY2F1c2UgeW91IHdhbnQgbXVsdGlwbGUgYm9hcmRzIG9uIHRoZSBzYW1lCi1uZXR3b3JrLCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZXMgaW4gdGhlIGR0cyBmaWxlIChwYXRjaAotbGludXgvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzMTVlcmRiLmR0cyB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UpLiBJZgoteW91IGhhdmUgbGVmdCB0aGVtIGF0IHRoZSBmYWN0b3J5IGRlZmF1bHQgdGhlbiB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gZG8KLWFueXRoaW5nIGhlcmUuCi0KLU5vdGU6IFRvIGJvb3QgZnJvbSBVU0IgZGlzayB5b3UgbmVlZCB1LWJvb3QgdGhhdCBzdXBwb3J0cyAnZXh0MmxvYWQgdXNiJwotY29tbWFuZC4gWW91IG5lZWQgdG8gc2V0dXAgVEZUUCBzZXJ2ZXIsIGxvYWQgdS1ib290IGZyb20gdGhlcmUgYW5kCi1mbGFzaCBpdCB0byBOT1IgZmxhc2guCi0KLUJld2FyZSEgRmxhc2hpbmcgYm9vdGxvYWRlciBpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3BlcmF0aW9uIHRoYXQgY2FuCi1icmljayB5b3VyIGRldmljZSBpZiBkb25lIGluY29ycmVjdGx5LiBQbGVhc2UsIG1ha2Ugc3VyZSB5b3UgdW5kZXJzdGFuZAotd2hhdCBiZWxvdyBjb21tYW5kcyBtZWFuIGJlZm9yZSBleGVjdXRpbmcgdGhlbS4KLQotTG9hZCB0aGUgbmV3IHUtYm9vdC5iaW4gZnJvbSBURlRQIHNlcnZlciB0byBtZW1vcnkgYWRkcmVzcyAyMDAwMDAKLT0+IHRmdHAgMjAwMDAwIHUtYm9vdC5iaW4KLQotRGlzYWJsZSBmbGFzaCBwcm90ZWN0aW9uCi09PiBwcm90ZWN0IG9mZiBhbGwKLQotRXJhc2UgdGhlIG9sZCB1LWJvb3QgZnJvbSBmZTAwMDAwMCB0byBmZTA2ZmZmZiBpbiBOT1IgZmxhc2guCi1UaGUgc2l6ZSBpcyAweDcwMDAwICg0NTg3NTIgYnl0ZXMpCi09PiBlcmFzZSBmZTAwMDAwMCBmZTA2ZmZmZgotCi1Db3B5IHRoZSBuZXcgdS1ib290IGZyb20gYWRkcmVzcyAyMDAwMDAgdG8gZmUwMDAwMDAKLXRoZSBzaXplIGlzIDB4NzAwMDAuIEl0IGhhcyB0byBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHUtYm9vdC5iaW4gc2l6ZQotPT4gY3AuYiAyMDAwMDAgZmUwMDAwMDAgNzAwMDAKLQotRW5hYmxlIGZsYXNoIHByb3RlY3Rpb24gYWdhaW4KLT0+IHByb3RlY3Qgb24gYWxsCi0KLVJlc2V0IHRoZSBib2FyZAotPT4gcmVzZXQKLQotLS0tIEJvb3RpbmcgZnJvbSBVU0IgZGlzayAtLS0KLQotIDEuIEZsYXNoIHBhcnRpdGlvbmVkIGltYWdlIHRvIHRoZSBVU0IgZGlzawotCi0gICAgIyBkZCBpZj1jb3JlLWltYWdlLW1pbmltYWwtbXBjODMxNWUtcmRiLndpYyBvZj0vZGV2L3NkYgotCi0gMi4gUGx1ZyBVU0IgZGlzayBpbnRvIHRoZSBNUEM4MzE1IGJvYXJkCi0KLSAzLiBDb25uZWN0IHRoZSBib2FyZCdzIGZpcnN0IHNlcmlhbCBwb3J0IHRvIHlvdXIgd29ya3N0YXRpb24gYW5kIHRoZW4gc3RhcnQgdXAKLSAgICB5b3VyIGZhdm91cml0ZSBzZXJpYWwgdGVybWluYWwgc28gdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGgKLSAgICB0aGUgc2VyaWFsIGNvbnNvbGUuIElmIHlvdSBkb24ndCBoYXZlIGEgZmF2b3VyaXRlLCBwaWNvY29tIGlzIHN1Z2dlc3RlZDoKLQotICAkIHBpY29jb20gL2Rldi90dHlVU0IwIC1iIDExNTIwMAotCi0gNC4gUG93ZXIgdXAgb3IgcmVzZXQgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZAotICAgIHRvIGdldCB0byB0aGUgVS1Cb290IGNvbW1hbmQgbGluZQotCi0gNS4gT3B0aW9uYWwuIExvYWQgdGhlIHUtYm9vdC5iaW4gZnJvbSB0aGUgVVNCIGRpc2s6Ci0KLSA9PiB1c2Igc3RhcnQKLSA9PiBleHQybG9hZCB1c2IgMDoxIDIwMDAwMCB1LWJvb3QuYmluCi0KLSAgICBhbmQgZmxhc2ggaXQgdG8gTk9SIGZsYXNoIGFzIGRlc2NyaWJlZCBhYm92ZS4KLQotIDYuIExvYWQgdGhlIGtlcm5lbCBhbmQgZHRiIGZyb20gdGhlIGZpcnN0IHBhcnRpdGlvbiBvZiB0aGUgVVNCIGRpc2s6Ci0KLSA9PiB1c2Igc3RhcnQKLSA9PiBleHQybG9hZCB1c2IgMDoxIDEwMDAwMDAgdUltYWdlCi0gPT4gZXh0MmxvYWQgdXNiIDA6MSAyMDAwMDAwIGR0YgotCi0gNy4gU2V0IGJvb3RhcmdzIGFuZCBib290IHVwIHRoZSBkZXZpY2UKLQotID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvc2RiMiBydyByb290d2FpdCBjb25zb2xlPXR0eVMwLDExNTIwMAotID0+IGJvb3RtIDEwMDAwMDAgLSAyMDAwMDAwCi0KLQotLS0tIEJvb3RpbmcgZnJvbSBORlMgcm9vdCAtLS0KLQotTG9hZCB0aGUga2VybmVsIGFuZCBkdGIgKGRldmljZSB0cmVlIGJsb2IpLCBhbmQgYm9vdCB0aGUgc3lzdGVtIGFzIGZvbGxvd3M6Ci0KLSAxLiBHZXQgdGhlIGtlcm5lbCAodUltYWdlLW1wYzgzMTVlLXJkYi5iaW4pIGFuZCBkdGIgKHVJbWFnZS1tcGM4MzE1ZS1yZGIuZHRiKQotICAgIGZpbGVzIGZyb20gdGhlIHRtcC9kZXBsb3kgZGlyZWN0b3J5LCBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSBvbiB5b3VyIFRGVFAKLSAgICBzZXJ2ZXIuCi0KLSAyLiBDb25uZWN0IHRoZSBib2FyZCdzIGZpcnN0IHNlcmlhbCBwb3J0IHRvIHlvdXIgd29ya3N0YXRpb24gYW5kIHRoZW4gc3RhcnQgdXAKLSAgICB5b3VyIGZhdm91cml0ZSBzZXJpYWwgdGVybWluYWwgc28gdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGgKLSAgICB0aGUgc2VyaWFsIGNvbnNvbGUuIElmIHlvdSBkb24ndCBoYXZlIGEgZmF2b3VyaXRlLCBwaWNvY29tIGlzIHN1Z2dlc3RlZDoKLQotICAkIHBpY29jb20gL2Rldi90dHlVU0IwIC1iIDExNTIwMAotCi0gMy4gUG93ZXIgdXAgb3IgcmVzZXQgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZAotICAgIHRvIGdldCB0byB0aGUgVS1Cb290IGNvbW1hbmQgbGluZQotCi0gNC4gU2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6Ci0KLSA9PiBzZXRlbnYgaXBhZGRyIDxib2FyZCBpcD4KLSA9PiBzZXRlbnYgc2VydmVyaXAgPHRmdHAgc2VydmVyIGlwPgotID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3IG5mc3Jvb3Q9PG5mc3Jvb3QgaXA+Ojxyb290ZnMgcGF0aD4gaXA9PGJvYXJkIGlwPjo8c2VydmVyIGlwPjo8Z2F0ZXdheSBpcD46MjU1LjI1NS4yNTUuMDptcGM4MzE1ZTpldGgwOm9mZiBjb25zb2xlPXR0eVMwLDExNTIwMAotCi0gNS4gRG93bmxvYWQgdGhlIGtlcm5lbCBhbmQgZHRiLCBhbmQgYm9vdDoKLQotID0+IHRmdHAgMTAwMDAwMCB1SW1hZ2UtbXBjODMxNWUtcmRiLmJpbgotID0+IHRmdHAgMjAwMDAwMCB1SW1hZ2UtbXBjODMxNWUtcmRiLmR0YgotID0+IGJvb3RtIDEwMDAwMDAgLSAyMDAwMDAwCi0KLS0tLSBCb290aW5nIGZyb20gSkZGUzIgcm9vdCAtLS0KLQotIDEuIEZpcnN0IGJvb3QgdGhlIGJvYXJkIHdpdGggTkZTIHJvb3QuCi0KLSAyLiBFcmFzZSB0aGUgTVREIHBhcnRpdGlvbiB3aGljaCB3aWxsIGJlIHVzZWQgYXMgcm9vdDoKLQotICAgICQgZmxhc2hfZXJhc2VhbGwgIC9kZXYvbXRkMwotCi0gMy4gQ29weSB0aGUgSkZGUzIgaW1hZ2UgdG8gdGhlIE1URCBwYXJ0aXRpb246Ci0KLSAgICAkIGZsYXNoY3AgY29yZS1pbWFnZS1taW5pbWFsLW1wYzgzMTVlLXJkYi5qZmZzMiAvZGV2L210ZDMKLQotIDQuIFRoZW4gcmVib290IHRoZSBib2FyZCBhbmQgc2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6Ci0KLSAgICA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L210ZGJsb2NrMyByb290ZnN0eXBlPWpmZnMyIGNvbnNvbGU9dHR5UzAsMTE1MjAwCi0KLQogVWJpcXVpdGkgTmV0d29ya3MgRWRnZVJvdXRlciBMaXRlIChlZGdlcm91dGVyKQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCmluZGV4IGM5NGJiMDAuLjY0YjEyNDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5feW9jdG9ic3AgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgogTEFZRVJWRVJTSU9OX3lvY3RvYnNwID0gIjQiCi1MQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAiemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0b2JzcCA9ICJkdW5mZWxsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCmluZGV4IDA4ZGQzYTUuLjViNDgxNDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKQEAgLTI0LDcgKzI0LDcgQEAKIFNFUklBTF9DT05TT0xFU19DSEVDSyA9ICIke1NFUklBTF9DT05TT0xFU30iCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjQlIgogCiBLRVJORUxfSU1BR0VUWVBFID0gInpJbWFnZSIKIEtFUk5FTF9ERVZJQ0VUUkVFID0gImFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgppbmRleCA2MzMxMzY4Li5kNmZkOTM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCkBAIC0xMSw3ICsxMSw3IEBACiBLRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlMgID0gIi5jb21tZW50IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS40JSIKIAogU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKIFVTRV9WVCA/PSAiMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKaW5kZXggZjgzY2U1Yy4uYTZjMzk2YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKQEAgLTIwLDYgKzIwLDcgQEAKIEVYVFJBX09FQ09ORl9hcHBlbmRfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICIgLS13aXRoLWJhdHRlcnk9YWNwaSIKIAogSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgotV0tTX0ZJTEUgPz0gImdlbmVyaWN4ODYud2tzIgorV0tTX0ZJTEUgPz0gImdlbmVyaWN4ODYud2tzLmluIgorRUZJX1BST1ZJREVSID8/PSAiZ3J1Yi1lZmkiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gImdwdGZkaXNrLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9faW1hZ2Vfd2ljW3JlY3JkZXB0YXNrXSArPSAiZG9fYm9vdGltZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzODI3OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRTogRnJlZXNjYWxlIE1QQzgzMTVFLVJEQgotI0BERVNDUklQVElPTjogTWFjaGluZSBjb25maWd1cmF0aW9uIGZvciBGcmVlc2NhbGUgTVBDODMxNUUtUkRCCi0KLVRBUkdFVF9GUFUgPSAiIgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTMwMGMzLmluYwotCi1LRVJORUxfSU1BR0VUWVBFID0gInVJbWFnZSIKLQotRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCi1VQk9PVF9NQUNISU5FID0gIk1QQzgzMTVFUkRCX2NvbmZpZyIKLQotU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKLQotTUFDSElORV9GRUFUVVJFUyA9ICJrZXlib2FyZCBwY2kgZXh0MiBleHQzIHNlcmlhbCIKLQotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID89ICJ4c2VydmVyLXhvcmciCi1YU0VSVkVSID89ICJ4c2VydmVyLXhvcmcgXAotICAgICAgICAgICAgeGY4Ni12aWRlby1mYmRldiIKLQotVUJPT1RfRU5UUllQT0lOVCA9ICIweDAwMDAwMDAwIgotCi1LRVJORUxfREVWSUNFVFJFRSA9ICJtcGM4MzE1ZXJkYi5kdGIiCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZXMiCi0KLUlNQUdFX0ZTVFlQRVMgPz0gImpmZnMyIHRhci5iejIiCi1KRkZTMl9FUkFTRUJMT0NLID0gIjB4NDAwMCIKLQotSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgotV0tTX0ZJTEUgPz0gJ21wYzgzMTVlLXJkYi53a3MnCi1JTUFHRV9CT09UX0ZJTEVTID89ICJ1LWJvb3QuYmluIHVJbWFnZSBtcGM4MzE1ZXJkYi5kdGI7ZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkgYi9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weQppbmRleCAwYTNhMmNkLi41NzU5OWUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weQorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weQpAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIHN5c3RlbWRib290ZmlsZSkKIAogICAgICAgICAjIEJ1aWxkIGEgZ2VuZXJpY3g4Ni02NC9lZmkgc3lzdGVtZGJvb3QgaW1hZ2UKLSAgICAgICAgYml0YmFrZSgnbXRvb2xzLW5hdGl2ZSBjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCdtdG9vbHMtbmF0aXZlIGNvcmUtaW1hZ2UtbWluaW1hbCB3aWMtdG9vbHMnKQogCiAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoc3lzdGVtZGJvb3RmaWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdTeXN0ZW1kLUJvb3QgZmlsZSAlcyBub3QgZm91bmQnICUgc3lzdGVtZGJvb3RmaWxlKQpAQCAtMzgsOSArMzgsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgU3VtbWFyeTogICAgICBDaGVjayBpZiBFRkkgYm9vdGxvYWRlciBmb3Igc3lzdGVtZCBpcyBjb3JyZWN0bHkgYnVpbGQKICAgICAgICAgRGVwZW5kZW5jaWVzOiBJbWFnZSB3YXMgYnVpbHQgY29ycmVjdGx5IG9uIHRlc3RjYXNlIDE0NDUKLSAgICAgICAgU3RlcHM6ICAgICAgICAxLiBDb3B5IGJvb3R4NjQuZWZpIGZpbGUgZm9ybSB0aGUgaGRkaW1nIGNyZWF0ZWQKKyAgICAgICAgU3RlcHM6ICAgICAgICAxLiBDb3B5IGJvb3R4NjQuZWZpIGZpbGUgZnJvbSB0aGUgd2ljIGNyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICB1bmRlciBidWlsZC90bXAvZGVwbG95L2ltYWdlcy9nZW5lcmljeDg2LTY0Ci0gICAgICAgICAgICAgICAgICAgICAgMi4gQ2hlY2sgYm9vdHg2NC5lZmkgd2FzIGNvcGllZCBmb3JtIGhkZGltZworICAgICAgICAgICAgICAgICAgICAgIDIuIENoZWNrIGJvb3R4NjQuZWZpIHdhcyBjb3BpZWQgZnJvbSB3aWMKICAgICAgICAgICAgICAgICAgICAgICAzLiBWZXJpZnkgdGhlIGNoZWNrc3VtcyBmcm9tIHRoZSBjb3BpZWQgYW5kIHByZXZpb3VzbHkKICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGZpbGUgYXJlIGVxdWFsLgogICAgICAgICBFeHBlY3RlZCA6ICAgIFN5c3RlbWQtYm9vdHg2NC5lZmkgYW5kIGJvb3R4NjQuZWZpIHNob3VsZCBiZSB0aGUgc2FtZQpAQCAtNTAsMTYgKzUwLDE3IEBACiAgICAgICAgIEF1dG9tYXRlZEJ5OiAgSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YSBhdCBsaW51eC1pbnRlbC5jb20+CiAgICAgICAgICIiIgogCi0gICAgICAgIHN5c3RlbWRib290aW1hZ2UgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCAnY29yZS1pbWFnZS1taW5pbWFsLWdlbmVyaWN4ODYtNjQuaGRkaW1nJykKKyAgICAgICAgc3lzdGVtZGJvb3RpbWFnZSA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsICdjb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni02NC53aWMnKQogICAgICAgICBpbWFnZWJvb3RmaWxlID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgJ2Jvb3R4NjQuZWZpJykKLSAgICAgICAgbWNvcHluYXRpdmUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgImNvcmUtaW1hZ2UtbWluaW1hbCIpLCAnbWNvcHknKQogCiAgICAgICAgICMgQ2xlYW4gZW52aXJvbm1lbnQgYmVmb3JlIHN0YXJ0IHRoZSB0ZXN0CiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGltYWdlYm9vdGZpbGUpOgogICAgICAgICAgICAgcnVuQ21kKCdybSAtZiAlcycgJSBpbWFnZWJvb3RmaWxlKQogCi0gICAgICAgIHJ1bkNtZCgnJXMgLWkgJXMgOjpFRkkvQk9PVC9ib290eDY0LmVmaSAlcycgJSAobWNvcHluYXRpdmUgLHN5c3RlbWRib290aW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlYm9vdGZpbGUpKQorICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgcnVuQ21kKCd3aWMgY3AgJXM6MS9FRkkvQk9PVC9ib290eDY0LmVmaSAlcyAtbiAlcycgJSAoc3lzdGVtZGJvb3RpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Vib290ZmlsZSwgc3lzcm9vdCkpCiAKICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmlzZmlsZShpbWFnZWJvb3RmaWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdib290eDY0LmVmaSBmaWxlICVzIHdhcyBub3QgY29waWVkIGZyb20gaW1hZ2UnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGYwNDRkYWYuLjZlNWExMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC0yLDcgKzIsNiBAQAogS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJzdGFuZGFyZC9iYXNlIgogS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiBLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCiAKIEtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKIEtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKQEAgLTEyLDQgKzExLDMgQEAKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgogQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKLUNPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzI2OWQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NC4xOS9zdGFuZGFyZC9lZGdlcm91dGVyIgotS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY0LjE5L3N0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NC4xOS9zdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgotCi1LTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCi1LTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCi1LTUFDSElORV9iZWFnbGVib25lLXlvY3RvID89ICJiZWFnbGVib25lIgotCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICI1NjY0ZGMxNDM5OWVkY2FhZDIxMGJiZWI2MzQzZDg0NTYxZmIzZWE4IgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiNTY2NGRjMTQzOTllZGNhYWQyMTBiYmViNjM0M2Q4NDU2MWZiM2VhOCIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjU2NjRkYzE0Mzk5ZWRjYWFkMjEwYmJlYjYzNDNkODQ1NjFmYjNlYTgiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICI1NjY0ZGMxNDM5OWVkY2FhZDIxMGJiZWI2MzQzZDg0NTYxZmIzZWE4IgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICJkNDE5ZjRjYTZiYTRiMDk3YjhhZDcxMGE5M2I4OTUxMGY1YjI5OThjIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKLUNPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCi1DT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgotQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCi0KLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjE5LjM0IgotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMTkuMzQiCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xOS4zNCIKLUxJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI0LjE5LjM0IgotTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xOS4zNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNWJjY2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1LQlJBTkNIX2dlbmVyaWN4ODYgID0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjUuMi9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9lZGdlcm91dGVyID0gInY1LjIvc3RhbmRhcmQvZWRnZXJvdXRlciIKLUtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS4yL3N0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NS4yL3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLUtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjI1YjE0Y2RmOTY1OWM2OGFiMzJkNjY2MTZkZmRiYmUyZWNlM2ZkOTQiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIyNWIxNGNkZjk2NTljNjhhYjMyZDY2NjE2ZGZkYmJlMmVjZTNmZDk0IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiMjViMTRjZGY5NjU5YzY4YWIzMmQ2NjYxNmRmZGJiZTJlY2UzZmQ5NCIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjI1YjE0Y2RmOTY1OWM2OGFiMzJkNjY2MTZkZmRiYmUyZWNlM2ZkOTQiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjc3ZjAzMWIxODI4ODVjMTc3YjNhOTYwOThhZTYxMjcxOTExYTc5NTQiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuMi4xNyIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI1LjIuMTciCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS4yLjE3IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuMi4xNyIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjUuMi4xNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczNGNkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiYXBwZW5kCkBAIC0wLDAgKzEsMjMgQEAKK0tCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjUuNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAidjUuNC9zdGFuZGFyZC9lZGdlcm91dGVyIgorS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY1LjQvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKKworS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgorS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKKworU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiA/PSAiZjRkN2RiYWZiMTAzZTRmNzgyMzIzMDE3YzIzOWM1NDg4NzFjMTU2NyIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gImY0ZDdkYmFmYjEwM2U0Zjc4MjMyMzAxN2MyMzljNTQ4ODcxYzE1NjciCitTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJmNGQ3ZGJhZmIxMDNlNGY3ODIzMjMwMTdjMjM5YzU0ODg3MWMxNTY3IgorU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiZjRkN2RiYWZiMTAzZTRmNzgyMzIzMDE3YzIzOWM1NDg4NzFjMTU2NyIKKworQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCitDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuNC4yMCIKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI1LjQuMjAiCitMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS40LjIwIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuNC4yMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2dlbmVyaWN4ODYud2tzIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYjcxOWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSMgc2hvcnQtZGVzY3JpcHRpb246IENyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NioKLSMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlcyBhIHBhcnRpdGlvbmVkIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KiBtYWNoaW5lcwotcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLWVmaSAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPWdydWItZWZpIiAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKLXBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAotcGFydCBzd2FwIC0tb25kaXNrIHNkYSAtLXNpemUgNDQgLS1sYWJlbCBzd2FwMSAtLWZzdHlwZT1zd2FwCi0KLWJvb3Rsb2FkZXIgLS1wdGFibGUgZ3B0IC0tdGltZW91dD01IC0tYXBwZW5kPSJyb290ZnN0eXBlPWV4dDQgY29uc29sZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MuaW4gYi9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9nZW5lcmljeDg2Lndrcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzA5YWQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MuaW4KQEAgLTAsMCArMSw3IEBACisjIHNob3J0LWRlc2NyaXB0aW9uOiBDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCisjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NiogbWFjaGluZXMKK3BhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1lZmkgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj0ke0VGSV9QUk9WSURFUn0iIC0tb25kaXNrIHNkYSAtLWxhYmVsIG1zZG9zIC0tYWN0aXZlIC0tYWxpZ24gMTAyNAorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCitwYXJ0IHN3YXAgLS1vbmRpc2sgc2RhIC0tc2l6ZSA0NCAtLWxhYmVsIHN3YXAxIC0tZnN0eXBlPXN3YXAKKworYm9vdGxvYWRlciAtLXB0YWJsZSBncHQgLS10aW1lb3V0PTUgLS1hcHBlbmQ9InJvb3Rmc3R5cGU9ZXh0NCBjb25zb2xlPXR0eVMwLDExNTIwMCBjb25zb2xlPXR0eTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9tcGM4MzE1ZS1yZGIud2tzIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvbXBjODMxNWUtcmRiLndrcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBjYjYwNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9tcGM4MzE1ZS1yZGIud2tzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jIHNob3J0LWRlc2NyaXB0aW9uOiBDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgTVBDODMxNUUtUkRCCi0jIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZSBhIHBhcnRpdGlvbmVkIFNEIGNhcmQgaW1hZ2UgZm9yIEZyZWVzY2FsZSBNUEM4MzE1RS1SREIgcmVmZXJlbmNlIGhhcmR3YXJlLgotcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBhcnRpdGlvbiAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0MyAtLWxhYmVsIGJvb3QKLXBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCByb290CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwppbmRleCA3YzQ2Y2ZmLi40OGI0OTEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKQEAgLTIsMjUgKzIsNDIgQEAKICMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KICMKICMgVGhpcyBiYmNsYXNzIGlzIHVzZWQgZm9yIGNyZWF0aW5nIGFyY2hpdmUgZm9yOgotIyAxKSBvcmlnaW5hbCAob3IgdW5wYWNrZWQpIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIgotIyAyKSBwYXRjaGVkIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gInBhdGNoZWQiIChkZWZhdWx0KQotIyAzKSBjb25maWd1cmVkIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gImNvbmZpZ3VyZWQiCi0jIDQpIFRoZSBwYXRjaGVzIGJldHdlZW4gZG9fdW5wYWNrIGFuZCBkb19wYXRjaDoKLSMgICAgQVJDSElWRVJfTU9ERVtkaWZmXSA9ICIxIgotIyAgICBBbmQgeW91IGNhbiBzZXQgdGhlIG9uZSB0aGF0IHlvdSdkIGxpa2UgdG8gZXhjbHVkZSBmcm9tIHRoZSBkaWZmOgotIyAgICBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV0gPz0gIi5wYyBhdXRvbTR0ZS5jYWNoZSBwYXRjaGVzIgotIyA1KSBUaGUgZW52aXJvbm1lbnQgZGF0YSwgc2ltaWxhciB0byAnYml0YmFrZSAtZSByZWNpcGUnOgotIyAgICBBUkNISVZFUl9NT0RFW2R1bXBkYXRhXSA9ICIxIgotIyA2KSBUaGUgcmVjaXBlICguYmIgYW5kIC5pbmMpOiBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPSAiMSIKLSMgNykgV2hldGhlciBvdXRwdXQgdGhlIC5zcmMucnBtIHBhY2thZ2U6Ci0jICAgIEFSQ0hJVkVSX01PREVbc3JwbV0gPSAiMSIKLSMgOCkgRmlsdGVyIHRoZSBsaWNlbnNlLCB0aGUgcmVjaXBlIHdob3NlIGxpY2Vuc2UgaW4KLSMgICAgQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFIHdpbGwgYmUgaW5jbHVkZWQsIGFuZCBpbgotIyAgICBDT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUgd2lsbCBiZSBleGNsdWRlZC4KLSMgICAgQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFID0gJ0dQTCogTEdQTConCi0jICAgIENPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERSA9ICdDTE9TRUQgUHJvcHJpZXRhcnknCi0jIDkpIFRoZSByZWNpcGUgdHlwZSB0aGF0IHdpbGwgYmUgYXJjaGl2ZWQ6Ci0jICAgIENPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICd0YXJnZXQnCisjICAxKSBvcmlnaW5hbCAob3IgdW5wYWNrZWQpIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIgorIyAgMikgcGF0Y2hlZCBzb3VyY2U6IEFSQ0hJVkVSX01PREVbc3JjXSA9ICJwYXRjaGVkIiAoZGVmYXVsdCkKKyMgIDMpIGNvbmZpZ3VyZWQgc291cmNlOiBBUkNISVZFUl9NT0RFW3NyY10gPSAiY29uZmlndXJlZCIKKyMgIDQpIHNvdXJjZSBtaXJyb3I6IEFSQ0hJVkVfTU9ERVtzcmNdID0gIm1pcnJvciIKKyMgIDUpIFRoZSBwYXRjaGVzIGJldHdlZW4gZG9fdW5wYWNrIGFuZCBkb19wYXRjaDoKKyMgICAgIEFSQ0hJVkVSX01PREVbZGlmZl0gPSAiMSIKKyMgICAgIEFuZCB5b3UgY2FuIHNldCB0aGUgb25lIHRoYXQgeW91J2QgbGlrZSB0byBleGNsdWRlIGZyb20gdGhlIGRpZmY6CisjICAgICBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV0gPz0gIi5wYyBhdXRvbTR0ZS5jYWNoZSBwYXRjaGVzIgorIyAgNikgVGhlIGVudmlyb25tZW50IGRhdGEsIHNpbWlsYXIgdG8gJ2JpdGJha2UgLWUgcmVjaXBlJzoKKyMgICAgIEFSQ0hJVkVSX01PREVbZHVtcGRhdGFdID0gIjEiCisjICA3KSBUaGUgcmVjaXBlICguYmIgYW5kIC5pbmMpOiBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPSAiMSIKKyMgIDgpIFdoZXRoZXIgb3V0cHV0IHRoZSAuc3JjLnJwbSBwYWNrYWdlOgorIyAgICAgQVJDSElWRVJfTU9ERVtzcnBtXSA9ICIxIgorIyAgOSkgRmlsdGVyIHRoZSBsaWNlbnNlLCB0aGUgcmVjaXBlIHdob3NlIGxpY2Vuc2UgaW4KKyMgICAgIENPUFlMRUZUX0xJQ0VOU0VfSU5DTFVERSB3aWxsIGJlIGluY2x1ZGVkLCBhbmQgaW4KKyMgICAgIENPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERSB3aWxsIGJlIGV4Y2x1ZGVkLgorIyAgICAgQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFID0gJ0dQTCogTEdQTConCisjICAgICBDT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUgPSAnQ0xPU0VEIFByb3ByaWV0YXJ5JworIyAxMCkgVGhlIHJlY2lwZSB0eXBlIHRoYXQgd2lsbCBiZSBhcmNoaXZlZDoKKyMgICAgIENPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICd0YXJnZXQnCisjIDExKSBUaGUgc291cmNlIG1pcnJvciBtb2RlOgorIyAgICAgQVJDSElWRVJfTU9ERVttaXJyb3JdID0gInNwbGl0IiAoZGVmYXVsdCk6IFNvdXJjZXMgYXJlIHNwbGl0IGludG8KKyMgICAgIHBlci1yZWNpcGUgZGlyZWN0b3JpZXMgaW4gYSBzaW1pbGFyIHdheSB0byBvdGhlciBhcmNoaXZlciBtb2Rlcy4KKyMgICAgIFBvc3QtcHJvY2Vzc2luZyBtYXkgYmUgcmVxdWlyZWQgdG8gcHJvZHVjZSBhIHNpbmdsZSBtaXJyb3IgZGlyZWN0b3J5LgorIyAgICAgVGhpcyBkb2VzIGhvd2V2ZXIgYWxsb3cgaW5zcGVjdGlvbiBvZiBkdXBsaWNhdGUgc291cmNlcyBhbmQgbW9yZQorIyAgICAgaW50ZWxsaWdlbnQgaGFuZGxpbmcuCisjICAgICBBUkNISVZFUl9NT0RFW21pcnJvcl0gPSAiY29tYmluZWQiOiBBbGwgc291cmNlcyBhcmUgcGxhY2VkIGludG8gYSBzaW5nbGUKKyMgICAgIGRpcmVjdG9yeSBzdWl0YWJsZSBmb3IgZGlyZWN0IHVzZSBhcyBhIG1pcnJvci4gRHVwbGljYXRlIHNvdXJjZXMgYXJlCisjICAgICBpZ25vcmVkLgorIyAxMikgU291cmNlIG1pcnJvciBleGNsdXNpb25zOgorIyAgICAgQVJDSElWRVJfTUlSUk9SX0VYQ0xVREUgaXMgYSBsaXN0IG9mIHByZWZpeGVzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgbWlycm9yLgorIyAgICAgVGhpcyBtYXkgYmUgdXNlZCBmb3Igc291cmNlcyB3aGljaCB5b3UgYXJlIGFscmVhZHkgcHVibGlzaGluZyB5b3Vyc2VsZgorIyAgICAgKGUuZy4gaWYgdGhlIFVSSSBzdGFydHMgd2l0aCAnaHR0cHM6Ly9teXNpdGUuY29tLycgYW5kIHlvdXIgbWlycm9yIGlzCisjICAgICBnb2luZyB0byBiZSBwdWJsaXNoZWQgdG8gdGhlIHNhbWUgc2l0ZSkuIEl0IG1heSBhbHNvIGJlIHVzZWQgdG8gZXhjbHVkZQorIyAgICAgbG9jYWwgZmlsZXMgKHdpdGggdGhlIHByZWZpeCAnZmlsZTovLycpIGlmIHRoZXNlIHdpbGwgYmUgcHJvdmlkZWQgYXMgcGFydAorIyAgICAgb2YgYW4gYXJjaGl2ZSBvZiB0aGUgbGF5ZXJzIHRoZW1zZWx2ZXMuCiAjCiAKICMgQ3JlYXRlIGFyY2hpdmUgZm9yIGFsbCB0aGUgcmVjaXBlIHR5cGVzCkBAIC0zMyw2ICs1MCw3IEBACiBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV0gPz0gIi5wYyBhdXRvbTR0ZS5jYWNoZSBwYXRjaGVzIgogQVJDSElWRVJfTU9ERVtkdW1wZGF0YV0gPz0gIjAiCiBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPz0gIjAiCitBUkNISVZFUl9NT0RFW21pcnJvcl0gPz0gInNwbGl0IgogCiBERVBMT1lfRElSX1NSQyA/PSAiJHtERVBMT1lfRElSfS9zb3VyY2VzIgogQVJDSElWRVJfVE9QRElSID89ICIke1dPUktESVJ9L2RlcGxveS1zb3VyY2VzIgpAQCAtNDEsNiArNTksMTAgQEAKIEFSQ0hJVkVSX1JQTU9VVERJUiA9ICIke0FSQ0hJVkVSX1JQTVRPUERJUn0vJHtUQVJHRVRfU1lTfS8ke1BGfS8iCiBBUkNISVZFUl9XT1JLRElSID0gIiR7V09SS0RJUn0vYXJjaGl2ZXItd29yay8iCiAKKyMgV2hlbiBwcm9kdWNpbmcgYSBjb21iaW5lZCBtaXJyb3IgZGlyZWN0b3J5LCBhbGxvdyBkdXBsaWNhdGVzIGZvciB0aGUgY2FzZQorIyB3aGVyZSBtdWx0aXBsZSByZWNpcGVzIHVzZSB0aGUgc2FtZSBTUkNfVVJJLgorQVJDSElWRVJfQ09NQklORURfTUlSUk9SRElSID0gIiR7QVJDSElWRVJfVE9QRElSfS9taXJyb3IiCitTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfU1JDfS9taXJyb3IiCiAKIGRvX2R1bXBkYXRhW2RpcnNdID0gIiR7QVJDSElWRVJfT1VURElSfSIKIGRvX2FyX3JlY2lwZVtkaXJzXSA9ICIke0FSQ0hJVkVSX09VVERJUn0iCkBAIC0xMDYsNiArMTI4LDggQEAKICAgICAgICAgZWxpZiBoYXNUYXNrKCJkb19jb25maWd1cmUiKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYXJfY29uZmlndXJlZCcsICdkZXBlbmRzJywgJyAlczpkb19jb25maWd1cmUnICUgcG4pCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fZGVwbG95X2FyY2hpdmVzJywgJ2RlcGVuZHMnLCAnICVzOmRvX2FyX2NvbmZpZ3VyZWQnICUgcG4pCisgICAgZWxpZiBhcl9zcmMgPT0gIm1pcnJvciI6CisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fZGVwbG95X2FyY2hpdmVzJywgJ2RlcGVuZHMnLCAnJXM6ZG9fYXJfbWlycm9yJyAlIHBuKQogCiAgICAgZWxpZiBhcl9zcmM6CiAgICAgICAgIGJiLmZhdGFsKCJJbnZhbGlkIEFSQ0hJVkVSX01PREVbc3JjXTogJXMiICUgYXJfc3JjKQpAQCAtMjgxLDYgKzMwNSw3OSBAQAogICAgICAgICBjcmVhdGVfdGFyYmFsbChkLCBzcmNkaXIsICdjb25maWd1cmVkJywgYXJfb3V0ZGlyKQogfQogCitweXRob24gZG9fYXJfbWlycm9yKCkgeworICAgIGltcG9ydCBzdWJwcm9jZXNzCisKKyAgICBzcmNfdXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKKyAgICBpZiBsZW4oc3JjX3VyaSkgPT0gMDoKKyAgICAgICAgcmV0dXJuCisKKyAgICBkbF9kaXIgPSBkLmdldFZhcignRExfRElSJykKKyAgICBtaXJyb3JfZXhjbHVzaW9ucyA9IChkLmdldFZhcignQVJDSElWRVJfTUlSUk9SX0VYQ0xVREUnKSBvciAnJykuc3BsaXQoKQorICAgIG1pcnJvcl9tb2RlID0gZC5nZXRWYXJGbGFnKCdBUkNISVZFUl9NT0RFJywgJ21pcnJvcicpCisgICAgaGF2ZV9taXJyb3JfdGFyYmFsbHMgPSBkLmdldFZhcignQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJykKKworICAgIGlmIG1pcnJvcl9tb2RlID09ICdjb21iaW5lZCc6CisgICAgICAgIGRlc3RkaXIgPSBkLmdldFZhcignQVJDSElWRVJfQ09NQklORURfTUlSUk9SRElSJykKKyAgICBlbGlmIG1pcnJvcl9tb2RlID09ICdzcGxpdCc6CisgICAgICAgIGRlc3RkaXIgPSBkLmdldFZhcignQVJDSElWRVJfT1VURElSJykKKyAgICBlbHNlOgorICAgICAgICBiYi5mYXRhbCgnSW52YWxpZCBBUkNISVZFUl9NT0RFW21pcnJvcl06ICVzJyAlIChtaXJyb3JfbW9kZSkpCisKKyAgICBpZiBub3QgaGF2ZV9taXJyb3JfdGFyYmFsbHM6CisgICAgICAgIGJiLmZhdGFsKCdVc2luZyBgQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJgIGRlcGVuZHMgb24gc2V0dGluZyBgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiYCcpCisKKyAgICBkZWYgaXNfZXhjbHVkZWQodXJsKToKKyAgICAgICAgZm9yIHByZWZpeCBpbiBtaXJyb3JfZXhjbHVzaW9uczoKKyAgICAgICAgICAgIGlmIHVybC5zdGFydHN3aXRoKHByZWZpeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBiYi5ub3RlKCdBcmNoaXZpbmcgdGhlIHNvdXJjZSBhcyBhIG1pcnJvci4uLicpCisKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKKworICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goc3JjX3VyaSwgZCkKKworICAgIGZvciB1cmwgaW4gZmV0Y2hlci51cmxzOgorICAgICAgICBpZiBpc19leGNsdWRlZCh1cmwpOgorICAgICAgICAgICAgYmIubm90ZSgnU2tpcHBpbmcgZXhjbHVkZWQgdXJsOiAlcycgJSAodXJsKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYmIubm90ZSgnQXJjaGl2aW5nIHVybDogJXMnICUgKHVybCkpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFt1cmxdCisgICAgICAgIHVkLnNldHVwX2xvY2FscGF0aChkKQorICAgICAgICBsb2NhbHBhdGggPSBOb25lCisKKyAgICAgICAgIyBDaGVjayBmb3IgbWlycm9yIHRhcmJhbGxzIGZpcnN0LiBXZSB3aWxsIGFyY2hpdmUgdGhlIGZpcnN0IG1pcnJvcgorICAgICAgICAjIHRhcmJhbGwgdGhhdCB3ZSBmaW5kIGFzIGl0J3MgYXNzdW1lZCB0aGF0IHdlIGp1c3QgbmVlZCBvbmUuCisgICAgICAgIGZvciBtaXJyb3JfZm5hbWUgaW4gdWQubWlycm9ydGFyYmFsbHM6CisgICAgICAgICAgICBtaXJyb3JfcGF0aCA9IG9zLnBhdGguam9pbihkbF9kaXIsIG1pcnJvcl9mbmFtZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1pcnJvcl9wYXRoKToKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCdGb3VuZCBtaXJyb3IgdGFyYmFsbDogJXMnICUgKG1pcnJvcl9wYXRoKSkKKyAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSBtaXJyb3JfcGF0aAorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgbGVuKHVkLm1pcnJvcnRhcmJhbGxzKSBhbmQgbm90IGxvY2FscGF0aDoKKyAgICAgICAgICAgIGJiLndhcm4oJ01pcnJvciB0YXJiYWxscyBhcmUgbGlzdGVkIGZvciBhIHNvdXJjZSBidXQgbm9uZSBhcmUgcHJlc2VudC4gJyBcCisgICAgICAgICAgICAgICAgICAgICdGYWxsaW5nIGJhY2sgdG8gb3JpZ2luYWwgZG93bmxvYWQuXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAlcycgJSAodXJsKSkKKworICAgICAgICAjIENoZWNrIG9yaWdpbmFsIGRvd25sb2FkCisgICAgICAgIGlmIG5vdCBsb2NhbHBhdGg6CisgICAgICAgICAgICBiYi5ub3RlKCdVc2luZyBvcmlnaW5hbCBkb3dubG9hZDogJXMnICUgKHVkLmxvY2FscGF0aCkpCisgICAgICAgICAgICBsb2NhbHBhdGggPSB1ZC5sb2NhbHBhdGgKKworICAgICAgICBpZiBub3QgbG9jYWxwYXRoIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGgpOgorICAgICAgICAgICAgYmIuZmF0YWwoJ09yaWdpbmFsIGRvd25sb2FkIGlzIG1pc3NpbmcgZm9yIGEgc291cmNlLlxuJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICVzJyAlICh1cmwpKQorCisgICAgICAgICMgV2Ugbm93IGhhdmUgYW4gYXBwcm9wcmlhdGUgbG9jYWxwYXRoCisgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgc291cmNlIG1pcnJvcicpCisgICAgICAgIGNtZCA9ICdjcCAtZnBQUkggJXMgJXMnICUgKGxvY2FscGF0aCwgZGVzdGRpcikKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKK30KKwogZGVmIGV4Y2x1ZGVfdXNlbGVzc19wYXRocyh0YXJpbmZvKToKICAgICBpZiB0YXJpbmZvLmlzZGlyKCk6CiAgICAgICAgIGlmIHRhcmluZm8ubmFtZS5lbmRzd2l0aCgnL3RlbXAnKSBvciB0YXJpbmZvLm5hbWUuZW5kc3dpdGgoJy9wYXRjaGVzJykgb3IgdGFyaW5mby5uYW1lLmVuZHN3aXRoKCcvLnBjJyk6CkBAIC00ODMsNiArNTgwLDcgQEAKIGFkZHRhc2sgZG9fdW5wYWNrX2FuZF9wYXRjaCBhZnRlciBkb19wYXRjaAogYWRkdGFzayBkb19hcl9wYXRjaGVkIGFmdGVyIGRvX3VucGFja19hbmRfcGF0Y2gKIGFkZHRhc2sgZG9fYXJfY29uZmlndXJlZCBhZnRlciBkb191bnBhY2tfYW5kX3BhdGNoCithZGR0YXNrIGRvX2FyX21pcnJvciBhZnRlciBkb19mZXRjaAogYWRkdGFzayBkb19kdW1wZGF0YQogYWRkdGFzayBkb19hcl9yZWNpcGUKIGFkZHRhc2sgZG9fZGVwbG95X2FyY2hpdmVzIGJlZm9yZSBkb19idWlsZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwppbmRleCAzZDIyYWQwLi42YzJhMzNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwpAQCAtOTAsNyArOTAsNyBAQAogCWNmZ3NjcmlwdD1gcHl0aG9uMyAtYyAiaW1wb3J0IG9zOyBwcmludChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5kaXJuYW1lKCcke0NPTkZJR1VSRV9TQ1JJUFR9JyksICcuJykpImAvJGNmZ3NjcmlwdF9uYW1lCiAJaWYgWyAteCAiJGNmZ3NjcmlwdCIgXSA7IHRoZW4KIAkJYmJub3RlICJSdW5uaW5nICRjZmdzY3JpcHQgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0gJEAiCi0JCWlmICEgJHtDQUNIRURfQ09ORklHVVJFVkFSU30gJGNmZ3NjcmlwdCAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfSAiJEAiOyB0aGVuCisJCWlmICEgJHtDQUNIRURfQ09ORklHVVJFVkFSU30gQ09ORklHX1NIRUxMPS9iaW4vYmFzaCAkY2Znc2NyaXB0ICR7Q09ORklHVVJFT1BUU30gJHtFWFRSQV9PRUNPTkZ9ICIkQCI7IHRoZW4KIAkJCWJibm90ZSAiVGhlIGZvbGxvd2luZyBjb25maWcubG9nIGZpbGVzIG1heSBwcm92aWRlIGZ1cnRoZXIgaW5mb3JtYXRpb24uIgogCQkJYmJub3RlIGBmaW5kICR7Qn0gLWlnbm9yZV9yZWFkZGlyX3JhY2UgLXR5cGUgZiAtbmFtZSBjb25maWcubG9nYAogCQkJYmJmYXRhbF9sb2cgImNvbmZpZ3VyZSBmYWlsZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKaW5kZXggMWNlYTNhMi4uNDVmOTQzNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwpAQCAtMTI3LDYgKzEyNyw5IEBACiAgICAgZm9yIHRvb2wgaW4gdG9vbHM6CiAgICAgICAgIGRlc3R0b29sID0gb3MucGF0aC5qb2luKGRlc3QsIHRvb2wpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0dG9vbCk6CisgICAgICAgICAgICAjIGNsZWFuIHVwIGRlYWQgc3ltbGluaworICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZGVzdHRvb2wpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0dG9vbCkKICAgICAgICAgICAgIHNyY3Rvb2wgPSBiYi51dGlscy53aGljaChwYXRoLCB0b29sLCBleGVjdXRhYmxlPVRydWUpCiAgICAgICAgICAgICAjIGdjYy9nKysgbWF5IGxpbmsgdG8gY2NhY2hlIG9uIHNvbWUgaG9zdHMsIGUuZy4sCiAgICAgICAgICAgICAjIC91c3IvbG9jYWwvYmluL2NjYWNoZS9nY2MgLT4gL3Vzci9iaW4vY2NhY2hlLCB0aGVuIHdoaWNoKGdjYykKQEAgLTEzOCwxMSArMTQxLDYgQEAKICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKHNyY3Rvb2wsIGRlc3R0b29sKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBub3Rmb3VuZC5hcHBlbmQodG9vbCkKLSAgICAjIEZvcmNlICJweXRob24iIC0+ICJweXRob24yIgotICAgIGRlc3R0b29sID0gb3MucGF0aC5qb2luKGRlc3QsICJweXRob24iKQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0dG9vbCk6Ci0gICAgICAgIHNyY3Rvb2wgPSAicHl0aG9uMiIKLSAgICAgICAgb3Muc3ltbGluayhzcmN0b29sLCBkZXN0dG9vbCkKIAogICAgIGlmIG5vdGZvdW5kIGFuZCBmYXRhbDoKICAgICAgICAgYmIuZmF0YWwoIlRoZSBmb2xsb3dpbmcgcmVxdWlyZWQgdG9vbHMgKGFzIHNwZWNpZmllZCBieSBIT1NUVE9PTFMpIGFwcGVhciB0byBiZSB1bmF2YWlsYWJsZSBpbiBQQVRILCBwbGVhc2UgaW5zdGFsbCB0aGVtIGluIG9yZGVyIHRvIHByb2NlZWQ6XG4gICVzIiAlICIgIi5qb2luKG5vdGZvdW5kKSkKQEAgLTM5NSw3ICszOTMsNyBAQAogICAgICMgVGhlc2UgdGFrZSB0aGUgZm9ybToKICAgICAjCiAgICAgIyBQQUNLQUdFQ09ORklHID8/PSAiPGRlZmF1bHQgb3B0aW9ucz4iCi0gICAgIyBQQUNLQUdFQ09ORklHW2Zvb10gPSAiLS1lbmFibGUtZm9vLC0tZGlzYWJsZS1mb28sZm9vX2RlcGVuZHMsZm9vX3J1bnRpbWVfZGVwZW5kcyxmb29fcnVudGltZV9yZWNvbW1lbmRzIgorICAgICMgUEFDS0FHRUNPTkZJR1tmb29dID0gIi0tZW5hYmxlLWZvbywtLWRpc2FibGUtZm9vLGZvb19kZXBlbmRzLGZvb19ydW50aW1lX2RlcGVuZHMsZm9vX3J1bnRpbWVfcmVjb21tZW5kcyxmb29fY29uZmxpY3RfcGFja2FnZWNvbmZpZyIKICAgICBwa2djb25maWdmbGFncyA9IGQuZ2V0VmFyRmxhZ3MoIlBBQ0tBR0VDT05GSUciKSBvciB7fQogICAgIGlmIHBrZ2NvbmZpZ2ZsYWdzOgogICAgICAgICBwa2djb25maWcgPSAoZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKSBvciAiIikuc3BsaXQoKQpAQCAtNDQyLDggKzQ0MCw4IEBACiAgICAgICAgIGZvciBmbGFnLCBmbGFndmFsIGluIHNvcnRlZChwa2djb25maWdmbGFncy5pdGVtcygpKToKICAgICAgICAgICAgIGl0ZW1zID0gZmxhZ3ZhbC5zcGxpdCgiLCIpCiAgICAgICAgICAgICBudW0gPSBsZW4oaXRlbXMpCi0gICAgICAgICAgICBpZiBudW0gPiA1OgotICAgICAgICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10gT25seSBlbmFibGUsZGlzYWJsZSxkZXBlbmQscmRlcGVuZCxycmVjb21tZW5kIGNhbiBiZSBzcGVjaWZpZWQhIgorICAgICAgICAgICAgaWYgbnVtID4gNjoKKyAgICAgICAgICAgICAgICBiYi5lcnJvcigiJXM6IFBBQ0tBR0VDT05GSUdbJXNdIE9ubHkgZW5hYmxlLGRpc2FibGUsZGVwZW5kLHJkZXBlbmQscnJlY29tbWVuZCxjb25mbGljdF9wYWNrYWdlY29uZmlnIGNhbiBiZSBzcGVjaWZpZWQhIgogICAgICAgICAgICAgICAgICAgICAlIChkLmdldFZhcignUE4nKSwgZmxhZykpCiAKICAgICAgICAgICAgIGlmIGZsYWcgaW4gcGtnY29uZmlnOgpAQCAtNDU3LDYgKzQ1NSwyMCBAQAogICAgICAgICAgICAgICAgICAgICBleHRyYWNvbmYuYXBwZW5kKGl0ZW1zWzBdKQogICAgICAgICAgICAgZWxpZiBudW0gPj0gMiBhbmQgaXRlbXNbMV06CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY29uZi5hcHBlbmQoaXRlbXNbMV0pCisKKyAgICAgICAgICAgIGlmIG51bSA+PSA2IGFuZCBpdGVtc1s1XToKKyAgICAgICAgICAgICAgICBjb25mbGljdHMgPSBzZXQoaXRlbXNbNV0uc3BsaXQoKSkKKyAgICAgICAgICAgICAgICBpbnZhbGlkID0gY29uZmxpY3RzLmRpZmZlcmVuY2Uoc2V0KHBrZ2NvbmZpZ2ZsYWdzLmtleXMoKSkpCisgICAgICAgICAgICAgICAgaWYgaW52YWxpZDoKKyAgICAgICAgICAgICAgICAgICAgYmIuZXJyb3IoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBJbnZhbGlkIGNvbmZsaWN0IHBhY2thZ2UgY29uZmlnJXMgJyVzJyBzcGVjaWZpZWQuIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoJ1BOJyksIGZsYWcsICdzJyBpZiBsZW4oaW52YWxpZCkgPiAxIGVsc2UgJycsICcgJy5qb2luKGludmFsaWQpKSkKKworICAgICAgICAgICAgICAgIGlmIGZsYWcgaW4gcGtnY29uZmlnOgorICAgICAgICAgICAgICAgICAgICBpbnRlcnNlYyA9IGNvbmZsaWN0cy5pbnRlcnNlY3Rpb24oc2V0KHBrZ2NvbmZpZykpCisgICAgICAgICAgICAgICAgICAgIGlmIGludGVyc2VjOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBDb25mbGljdCBwYWNrYWdlIGNvbmZpZyVzICclcycgc2V0IGluIFBBQ0tBR0VDT05GSUcuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGQuZ2V0VmFyKCdQTicpLCBmbGFnLCAncycgaWYgbGVuKGludGVyc2VjKSA+IDEgZWxzZSAnJywgJyAnLmpvaW4oaW50ZXJzZWMpKSkKKwogICAgICAgICBhcHBlbmRWYXIoJ0RFUEVORFMnLCBleHRyYWRlcHMpCiAgICAgICAgIGFwcGVuZFZhcignUkRFUEVORFNfJHtQTn0nLCBleHRyYXJkZXBzKQogICAgICAgICBhcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXyR7UE59JywgZXh0cmFycmVjcykKQEAgLTQ5OCw3ICs1MTAsNyBAQAogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RldnNoZWxsJywgJ2RlcGVuZHMnLCAnIHZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCiAgICAgbmVlZF9tYWNoaW5lID0gZC5nZXRWYXIoJ0NPTVBBVElCTEVfTUFDSElORScpCi0gICAgaWYgbmVlZF9tYWNoaW5lOgorICAgIGlmIG5lZWRfbWFjaGluZSBhbmQgbm90IGQuZ2V0VmFyKCdQQVJTRV9BTExfUkVDSVBFUycsIEZhbHNlKToKICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIGNvbXBhdF9tYWNoaW5lcyA9IChkLmdldFZhcignTUFDSElORU9WRVJSSURFUycpIG9yICIiKS5zcGxpdCgiOiIpCiAgICAgICAgIGZvciBtIGluIGNvbXBhdF9tYWNoaW5lczoKQEAgLTUwNyw3ICs1MTksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggbWFjaGluZSAlcyAobm90IGluIENPTVBBVElCTEVfTUFDSElORSkiICUgZC5nZXRWYXIoJ01BQ0hJTkUnKSkKIAotICAgIHNvdXJjZV9taXJyb3JfZmV0Y2ggPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9GRVRDSCcsIEZhbHNlKQorICAgIHNvdXJjZV9taXJyb3JfZmV0Y2ggPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9GRVRDSCcsIEZhbHNlKSBvciBkLmdldFZhcignUEFSU0VfQUxMX1JFQ0lQRVMnLCBGYWxzZSkKICAgICBpZiBub3Qgc291cmNlX21pcnJvcl9mZXRjaDoKICAgICAgICAgbmVlZF9ob3N0ID0gZC5nZXRWYXIoJ0NPTVBBVElCTEVfSE9TVCcpCiAgICAgICAgIGlmIG5lZWRfaG9zdDoKQEAgLTUzMSw0NSArNTQzLDQ2IEBACiAgICAgICAgICAgICBiYWRfbGljZW5zZXMgPSBleHBhbmRfd2lsZGNhcmRfbGljZW5zZXMoZCwgYmFkX2xpY2Vuc2VzKQogCiAgICAgICAgICAgICB3aGl0ZWxpc3QgPSBbXQotICAgICAgICAgICAgaW5jb21wYXR3bCA9IFtdCiAgICAgICAgICAgICBmb3IgbGljIGluIGJhZF9saWNlbnNlczoKICAgICAgICAgICAgICAgICBzcGR4X2xpY2Vuc2UgPSByZXR1cm5fc3BkeChkLCBsaWMpCiAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgbGljKSBvciAiIikuc3BsaXQoKSkKICAgICAgICAgICAgICAgICBpZiBzcGR4X2xpY2Vuc2U6CiAgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIHNwZHhfbGljZW5zZSkgb3IgIiIpLnNwbGl0KCkpCisKKyAgICAgICAgICAgIGlmIHBuIGluIHdoaXRlbGlzdDoKICAgICAgICAgICAgICAgICAnJycKICAgICAgICAgICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIHdoYXQgd2UgYXJlIHdoaXRlbGlzdGluZyBhbmQgd2h5LiBJZiBwbiBpcwogICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gbm90ZSB0aGF0IHRoZSBpbWFnZSB0aGF0CiAgICAgICAgICAgICAgICAgaXMgY3JlYXRlZCBtYXkgaW5mYWN0IGNvbnRhaW4gaW5jb21wYXRpYmxlIGxpY2Vuc2VzIGRlc3BpdGUKICAgICAgICAgICAgICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSBiZWluZyBzZXQuCiAgICAgICAgICAgICAgICAgJycnCi0gICAgICAgICAgICAgICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIGxpYykgb3IgIiIpLnNwbGl0KCkpCi0gICAgICAgICAgICAgICAgaWYgc3BkeF9saWNlbnNlOgotICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgc3BkeF9saWNlbnNlKSBvciAiIikuc3BsaXQoKSkKLQotICAgICAgICAgICAgaWYgbm90IHBuIGluIHdoaXRlbGlzdDoKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJJbmNsdWRpbmcgJXMgYXMgYnVpbGRhYmxlIGRlc3BpdGUgaXQgaGF2aW5nIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQiICUgcG4pCisgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBrZ3MgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgc2tpcHBlZF9wa2dzID0gW10KKyAgICAgICAgICAgICAgICBza2lwcGVkX3BrZ3MgPSB7fQogICAgICAgICAgICAgICAgIHVuc2tpcHBlZF9wa2dzID0gW10KICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBrZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcywgcGtnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRfcGtncy5hcHBlbmQocGtnKQorICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljID0gaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzLCBwa2cpCisgICAgICAgICAgICAgICAgICAgIGlmIGluY29tcGF0aWJsZV9saWM6CisgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkX3BrZ3NbcGtnXSA9IGluY29tcGF0aWJsZV9saWMKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2tpcHBlZF9wa2dzLmFwcGVuZChwa2cpCi0gICAgICAgICAgICAgICAgYWxsX3NraXBwZWQgPSBza2lwcGVkX3BrZ3MgYW5kIG5vdCB1bnNraXBwZWRfcGtncwogICAgICAgICAgICAgICAgIGlmIHVuc2tpcHBlZF9wa2dzOgogICAgICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHNraXBwZWRfcGtnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTS0lQUElORyB0aGUgcGFja2FnZSAiICsgcGtnICsgIiBhdCBkb19yb290ZnMgYmVjYXVzZSBpdCdzICIgKyBsaWNlbnNlKQorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNraXBwaW5nIHRoZSBwYWNrYWdlICVzIGF0IGRvX3Jvb3RmcyBiZWNhdXNlIG9mIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJSAocGtnLCAnICcuam9pbihza2lwcGVkX3BrZ3NbcGtnXSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKQotICAgICAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ0xJQ0VOU0VfRVhDTFVTSU9OLScgKyBtbHByZWZpeCArIHBrZywgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdMSUNFTlNFX0VYQ0xVU0lPTi0nICsgbWxwcmVmaXggKyBwa2csICcgJy5qb2luKHNraXBwZWRfcGtnc1twa2ddKSkKICAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiB1bnNraXBwZWRfcGtnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJJTkNMVURJTkcgdGhlIHBhY2thZ2UgIiArIHBrZykKLSAgICAgICAgICAgICAgICBlbGlmIGFsbF9za2lwcGVkIG9yIGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcyk6Ci0gICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTS0lQUElORyByZWNpcGUgJXMgYmVjYXVzZSBpdCdzICVzIiAlIChwbiwgbGljZW5zZSkpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIml0IGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZTogJXMiICUgbGljZW5zZSkKLSAgICAgICAgICAgIGVsaWYgcG4gaW4gd2hpdGVsaXN0OgotICAgICAgICAgICAgICAgIGlmIHBuIGluIGluY29tcGF0d2w6Ci0gICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIklOQ0xVRElORyAiICsgcG4gKyAiIGFzIGJ1aWxkYWJsZSBkZXNwaXRlIElOQ09NUEFUSUJMRV9MSUNFTlNFIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkluY2x1ZGluZyB0aGUgcGFja2FnZSAlcyIgJSBwa2cpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlX2xpYyA9IGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcykKKyAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBza2lwcGVkX3BrZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljICs9IHNraXBwZWRfcGtnc1twa2ddCisgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZV9saWMgPSBzb3J0ZWQobGlzdChzZXQoaW5jb21wYXRpYmxlX2xpYykpKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGluY29tcGF0aWJsZV9saWM6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU2tpcHBpbmcgcmVjaXBlICVzIGJlY2F1c2Ugb2YgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzIiAlIChwbiwgJyAnLmpvaW4oaW5jb21wYXRpYmxlX2xpYykpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJSAnICcuam9pbihpbmNvbXBhdGlibGVfbGljKSkKIAogICAgICAgICAjIFRyeSB0byB2ZXJpZnkgcGVyLXBhY2thZ2UgKExJQ0VOU0VfPHBrZz4pIHZhbHVlcy4gTElDRU5TRSBzaG91bGQgYmUgYQogICAgICAgICAjIHN1cGVyc2V0IG9mIGFsbCBwZXItcGFja2FnZSBsaWNlbnNlcy4gV2UgZG8gbm90IGRvIGFkdmFuY2VkIChwYXR0ZXJuKQpAQCAtNjA2LDYgKzYxOSw3IEBACiAgICAgICAgICMgTWVyY3VyaWFsIHBhY2thZ2VzIHNob3VsZCBERVBFTkQgb24gbWVyY3VyaWFsLW5hdGl2ZQogICAgICAgICBlbGlmIHNjaGVtZSA9PSAiaGciOgogICAgICAgICAgICAgbmVlZHNyY3JldiA9IFRydWUKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJFWFRSQU5BVElWRVBBVEgiLCAnIHB5dGhvbjMtbmF0aXZlICcpCiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ZldGNoJywgJ2RlcGVuZHMnLCAnIG1lcmN1cmlhbC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKICAgICAgICAgIyBQZXJmb3JjZSBwYWNrYWdlcyBzdXBwb3J0IFNSQ1JFViA9ICIke0FVVE9SRVZ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwppbmRleCBhZmZkZjI3Li5lYjcyOTU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwpAQCAtNDAsNiArNDAsNyBAQAogQlVJTERISVNUT1JZX0NPTU1JVCA/PSAiMSIKIEJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SID89ICJidWlsZGhpc3RvcnkgPGJ1aWxkaGlzdG9yeUAke0RJU1RST30+IgogQlVJTERISVNUT1JZX1BVU0hfUkVQTyA/PSAiIgorQlVJTERISVNUT1JZX1RBRyA/PSAiYnVpbGQiCiAKIFNTVEFURVBPU1RJTlNURlVOQ1NfYXBwZW5kID0gIiBidWlsZGhpc3RvcnlfZW1pdF9wa2doaXN0b3J5IgogIyBXZSB3YW50IHRvIGF2b2lkIGluZmx1ZW5jaW5nIHRoZSBzaWduYXR1cmVzIG9mIHNzdGF0ZSB0YXNrcyAtIGZpcnN0IHRoZSBmdW5jdGlvbiBpdHNlbGY6CkBAIC04MjQsOSArODI1LDkgQEAKIAkJaWYgWyAhIC1lIC5naXQgXSA7IHRoZW4KIAkJCWdpdCBpbml0IC1xCiAJCWVsc2UKLQkJCWdpdCB0YWcgLWYgYnVpbGQtbWludXMtMyBidWlsZC1taW51cy0yID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQotCQkJZ2l0IHRhZyAtZiBidWlsZC1taW51cy0yIGJ1aWxkLW1pbnVzLTEgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCi0JCQlnaXQgdGFnIC1mIGJ1aWxkLW1pbnVzLTEgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCisJCQlnaXQgdGFnIC1mICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMyAke0JVSUxESElTVE9SWV9UQUd9LW1pbnVzLTIgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCisJCQlnaXQgdGFnIC1mICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMiAke0JVSUxESElTVE9SWV9UQUd9LW1pbnVzLTEgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCisJCQlnaXQgdGFnIC1mICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMSA+IC9kZXYvbnVsbCAyPiYxIHx8IHRydWUKIAkJZmkKIAogCQljaGVja19naXRfY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MKaW5kZXggOTYwNjUzYy4uMjU5MGM2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcwpAQCAtMTAwLDcgKzEwMCw3IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgicnVzYWdlICVzOiAlc1xuIiAlIChpLCBnZXRhdHRyKHJlc291cmNlcywgaSkpKQogICAgICAgICAgICAgZm9yIGkgaW4gcnVzYWdlczoKICAgICAgICAgICAgICAgICBmLndyaXRlKCJDaGlsZCBydXNhZ2UgJXM6ICVzXG4iICUgKGksIGdldGF0dHIoY2hpbGRyZXMsIGkpKSkKLSAgICAgICAgaWYgc3RhdHVzIGlzICJwYXNzZWQiOgorICAgICAgICBpZiBzdGF0dXMgPT0gInBhc3NlZCI6CiAgICAgICAgICAgICBmLndyaXRlKCJTdGF0dXM6IFBBU1NFRCBcbiIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmLndyaXRlKCJTdGF0dXM6IEZBSUxFRCBcbiIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MKaW5kZXggMjg3MGMxMC4uMjZiOTg0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY2hycGF0aC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcwpAQCAtMiwxNiArMiwxOSBAQAogUFJFUFJPQ0VTU19SRUxPQ0FURV9ESVJTID89ICIiCiAKIGRlZiBwcm9jZXNzX2ZpbGVfbGludXgoY21kLCBmcGF0aCwgcm9vdGRpciwgYmFzZXByZWZpeCwgdG1wZGlyLCBkLCBicmVha19oYXJkbGlua3MgPSBGYWxzZSk6Ci0gICAgaW1wb3J0IHN1YnByb2Nlc3MgYXMgc3ViCisgICAgaW1wb3J0IHN1YnByb2Nlc3MsIG9lLnFhCiAKLSAgICBwID0gc3ViLlBvcGVuKFtjbWQsICctbCcsIGZwYXRoXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQotICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgIyBJZiByZXR1cm5lZCBzdWNjZXNzZnVsbHksIHByb2Nlc3Mgc3Rkb3V0IGZvciByZXN1bHRzCi0gICAgaWYgcC5yZXR1cm5jb2RlICE9IDA6CisgICAgd2l0aCBvZS5xYS5FTEZGaWxlKGZwYXRoKSBhcyBlbGY6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVsZi5vcGVuKCkKKyAgICAgICAgZXhjZXB0IG9lLnFhLk5vdEVMRkZpbGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbY21kLCAiLWwiLCBmcGF0aF0sIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgcmV0dXJuCiAKLSAgICBvdXQgPSBvdXQuZGVjb2RlKCd1dGYtOCcpCi0KICAgICAjIEhhbmRsZSBSVU5QQVRIIGFzIHdlbGwgYXMgUlBBVEgKICAgICBvdXQgPSBvdXQucmVwbGFjZSgiUlVOUEFUSD0iLCJSUEFUSD0iKQogICAgICMgVGhyb3cgYXdheSBldmVyeXRoaW5nIG90aGVyIHRoYW4gdGhlIHJwYXRoIGxpc3QKQEAgLTQ0LDEwICs0NywxMSBAQAogCiAgICAgICAgIGFyZ3MgPSAiOiIuam9pbihuZXdfcnBhdGhzKQogICAgICAgICAjYmIubm90ZSgiU2V0dGluZyBycGF0aCBmb3IgJXMgdG8gJXMiICUoZnBhdGgsIGFyZ3MpKQotICAgICAgICBwID0gc3ViLlBvcGVuKFtjbWQsICctcicsIGFyZ3MsIGZwYXRoXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQotICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQotICAgICAgICBpZiBwLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCIlczogY2hycGF0aCBjb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlZDpcbiVzJXMiICUgKGQuZ2V0VmFyKCdQTicpLCBwLnJldHVybmNvZGUsIG91dCwgZXJyKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW2NtZCwgIi1yIiwgYXJncywgZnBhdGhdLAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICAgICAgYmIuZmF0YWwoImNocnBhdGggY29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQ6XG4lc1xuJXMiICUgKGUucmV0dXJuY29kZSwgZS5zdGRvdXQsIGUuc3RkZXJyKSkKIAogZGVmIHByb2Nlc3NfZmlsZV9kYXJ3aW4oY21kLCBmcGF0aCwgcm9vdGRpciwgYmFzZXByZWZpeCwgdG1wZGlyLCBkLCBicmVha19oYXJkbGlua3MgPSBGYWxzZSk6CiAgICAgaW1wb3J0IHN1YnByb2Nlc3MgYXMgc3ViCkBAIC03Miw2ICs3NiwxMCBAQAogICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQogCiBkZWYgcHJvY2Vzc19kaXIocm9vdGRpciwgZGlyZWN0b3J5LCBkLCBicmVha19oYXJkbGlua3MgPSBGYWxzZSk6CisgICAgYmIuZGVidWcoMiwgIkNoZWNraW5nICVzIGZvciBiaW5hcmllcyB0byBwcm9jZXNzIiAlIGRpcmVjdG9yeSkKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyZWN0b3J5KToKKyAgICAgICAgcmV0dXJuCisKICAgICBpbXBvcnQgc3RhdAogCiAgICAgcm9vdGRpciA9IG9zLnBhdGgubm9ybXBhdGgocm9vdGRpcikKQEAgLTgwLDEwICs4OCw2IEBACiAgICAgYmFzZXByZWZpeCA9IG9zLnBhdGgubm9ybXBhdGgoZC5leHBhbmQoJyR7YmFzZV9wcmVmaXh9JykpCiAgICAgaG9zdG9zID0gZC5nZXRWYXIoIkhPU1RfT1MiKQogCi0gICAgI2JiLmRlYnVnKCJDaGVja2luZyAlcyBmb3IgYmluYXJpZXMgdG8gcHJvY2VzcyIgJSBkaXJlY3RvcnkpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcmVjdG9yeSk6Ci0gICAgICAgIHJldHVybgotCiAgICAgaWYgImxpbnV4IiBpbiBob3N0b3M6CiAgICAgICAgIHByb2Nlc3NfZmlsZSA9IHByb2Nlc3NfZmlsZV9saW51eAogICAgIGVsaWYgImRhcndpbiIgaW4gaG9zdG9zOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKaW5kZXggMjkxZjFlOC4uOTRlZDgwNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCkBAIC02Myw4ICs2Myw5IEBACiAKIEVYVFJBX09FQ01BS0VfYXBwZW5kID0gIiAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgogCi1FWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgotRVhUUkFfT0VDTUFLRV9CVUlMRF9wcmVwZW5kX3Rhc2staW5zdGFsbCA9ICIke1BBUkFMTEVMX01BS0VJTlNUfSAiCitleHBvcnQgQ01BS0VfQlVJTERfUEFSQUxMRUxfTEVWRUwKK0NNQUtFX0JVSUxEX1BBUkFMTEVMX0xFVkVMX3Rhc2stY29tcGlsZSA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlKGQsIEZhbHNlKX0iCitDTUFLRV9CVUlMRF9QQVJBTExFTF9MRVZFTF90YXNrLWluc3RhbGwgPSAiJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZShkLCBUcnVlKX0iCiAKIE9FQ01BS0VfVEFSR0VUX0NPTVBJTEUgPz0gImFsbCIKIE9FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPz0gImluc3RhbGwiCkBAIC0xMjAsNiArMTIxLDkgQEAKICMgZGlyZWN0b3J5IGFzIHJwYXRoIGJ5IGRlZmF1bHQKIHNldCggQ01BS0VfSU5TVEFMTF9SUEFUSCAke09FQ01BS0VfUlBBVEh9ICkKIAorIyBVc2UgUlBBVEhzIHJlbGF0aXZlIHRvIGJ1aWxkIGRpcmVjdG9yeSBmb3IgcmVwcm9kdWNpYmlsaXR5CitzZXQoIENNQUtFX0JVSUxEX1JQQVRIX1VTRV9PUklHSU4gT04gKQorCiAjIFVzZSBvdXIgY21ha2UgbW9kdWxlcwogbGlzdChBUFBFTkQgQ01BS0VfTU9EVUxFX1BBVEggIiR7U1RBR0lOR19EQVRBRElSfS9jbWFrZS9Nb2R1bGVzLyIpCiAKQEAgLTE3MSw2ICsxNzUsMTAgQEAKIAkgIC1EQ01BS0VfSU5TVEFMTF9MSUJESVI6UEFUSD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2xpYmRpcicpLCBkLmdldFZhcigncHJlZml4JykgKyAnLycpfSBcCiAJICAtRENNQUtFX0lOU1RBTExfSU5DTFVERURJUjpQQVRIPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignaW5jbHVkZWRpcicpLCBkLmdldFZhcigncHJlZml4JykgKyAnLycpfSBcCiAJICAtRENNQUtFX0lOU1RBTExfREFUQVJPT1RESVI6UEFUSD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2RhdGFkaXInKSwgZC5nZXRWYXIoJ3ByZWZpeCcpICsgJy8nKX0gXAorCSAgLURQWVRIT05fRVhFQ1VUQUJMRTpQQVRIPSR7UFlUSE9OfSBcCisJICAtRFB5dGhvbl9FWEVDVVRBQkxFOlBBVEg9JHtQWVRIT059IFwKKwkgIC1EUHl0aG9uM19FWEVDVVRBQkxFOlBBVEg9JHtQWVRIT059IFwKKwkgIC1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0gXAogCSAgLURDTUFLRV9JTlNUQUxMX1NPX05PX0VYRT0wIFwKIAkgIC1EQ01BS0VfVE9PTENIQUlOX0ZJTEU9JHtXT1JLRElSfS90b29sY2hhaW4uY21ha2UgXAogCSAgLURDTUFLRV9OT19TWVNURU1fRlJPTV9JTVBPUlRFRD0xIFwKQEAgLTE3OCw5ICsxODYsMTggQEAKIAkgIC1Xbm8tZGV2CiB9CiAKKyMgVG8gZGlzYWJsZSB2ZXJib3NlIGNtYWtlIGxvZ3MgZm9yIGEgZ2l2ZW4gcmVjaXBlIG9yIGdsb2JhbGx5IGNvbmZpZyBtZXRhZGF0YSBlLmcuIGxvY2FsLmNvbmYKKyMgYWRkIGZvbGxvd2luZworIworIyBDTUFLRV9WRVJCT1NFID0gIiIKKyMKKworQ01BS0VfVkVSQk9TRSA/Pz0gIlZFUkJPU0U9MSIKKworIyBUaGVuIHJ1biBkb19jb21waWxlIGFnYWluCiBjbWFrZV9ydW5jbWFrZV9idWlsZCgpIHsKLQliYm5vdGUgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfVZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAiJEAiIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KLQlldmFsICR7REVTVERJUjorREVTVERJUj0ke0RFU1RESVJ9IH1WRVJCT1NFPTEgY21ha2UgLS1idWlsZCAnJHtCfScgIiRAIiAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CisJYmJub3RlICR7REVTVERJUjorREVTVERJUj0ke0RFU1RESVJ9IH0ke0NNQUtFX1ZFUkJPU0V9IGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCWV2YWwgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfSR7Q01BS0VfVkVSQk9TRX0gY21ha2UgLS1idWlsZCAnJHtCfScgIiRAIiAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CiB9CiAKIGNtYWtlX2RvX2NvbXBpbGUoKSAgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzCmluZGV4IDk0ZjExMmMuLjg4Y2EyNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NvcmUtaW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MKQEAgLTI2LDYgKzI2LDcgQEAKICMgLSBkZWJ1Zy10d2Vha3MgICAgICAgIC0gbWFrZXMgYW4gaW1hZ2Ugc3VpdGFibGUgZm9yIGRldmVsb3BtZW50LCBlLmcuIGFsbG93aW5nIHBhc3N3b3JkbGVzcyByb290IGxvZ2lucwogIyAgIC0gZW1wdHktcm9vdC1wYXNzd29yZAogIyAgIC0gYWxsb3ctZW1wdHktcGFzc3dvcmQKKyMgICAtIGFsbG93LXJvb3QtbG9naW4KICMgICAtIHBvc3QtaW5zdGFsbC1sb2dnaW5nCiAjIC0gZGV2LXBrZ3MgICAgICAgICAgICAtIGRldmVsb3BtZW50IHBhY2thZ2VzIChoZWFkZXJzLCBldGMuKSBmb3IgYWxsIGluc3RhbGxlZCBwYWNrYWdlcyBpbiB0aGUgcm9vdGZzCiAjIC0gZGJnLXBrZ3MgICAgICAgICAgICAtIGRlYnVnIHN5bWJvbCBwYWNrYWdlcyBmb3IgYWxsIGluc3RhbGxlZCBwYWNrYWdlcyBpbiB0aGUgcm9vdGZzCkBAIC0zMyw2ICszNCw3IEBACiAjIC0gYmFzaC1jb21wbGV0aW9uLXBrZ3MgLSBiYXNoLWNvbXBsZXRpb24gcGFja2FnZXMgZm9yIHJlY2lwZXMgdXNpbmcgYmFzaC1jb21wbGV0aW9uIGJiY2xhc3MKICMgLSBwdGVzdC1wa2dzICAgICAgICAgIC0gcHRlc3QgcGFja2FnZXMgZm9yIGFsbCBwdGVzdC1lbmFibGVkIHJlY2lwZXMKICMgLSByZWFkLW9ubHktcm9vdGZzICAgIC0gdHdlYWtzIGFuIGltYWdlIHRvIHN1cHBvcnQgcmVhZC1vbmx5IHJvb3RmcworIyAtIHN0YXRlbGVzcy1yb290ZnMgICAgLSBzeXN0ZW1jdGwtbmF0aXZlIG5vdCBydW4sIGltYWdlIHBvcHVsYXRlZCBieSBzeXN0ZW1kIGF0IHJ1bnRpbWUKICMgLSBzcGxhc2ggICAgICAgICAgICAgIC0gYm9vdHVwIHNwbGFzaCBzY3JlZW4KICMKIEZFQVRVUkVfUEFDS0FHRVNfeDExID0gInBhY2thZ2Vncm91cC1jb3JlLXgxMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCmluZGV4IGY4MzI1NjEuLmJmZWM5MWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwpAQCAtNzAsNyArNzAsNiBAQAogbGliZXhlY2RpciA9ICIke2V4ZWNfcHJlZml4fS9saWJleGVjLyR7Q1JPU1NfVEFSR0VUX1NZU19ESVJ9IgogCiBkb19wb3B1bGF0ZV9zeXNyb290W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7U1lTUk9PVF9ERVNURElSfS8ke1NUQUdJTkdfRElSX05BVElWRX0vIgotZG9fcG9wdWxhdGVfc3lzcm9vdFtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiBkb19wYWNrYWdlZGF0YVtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiAKIGRvX2luc3RhbGwgKCkgewpAQCAtOTcsMyArOTYsNCBAQAogICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygiZXh0ZW5kX3JlY2lwZV9zeXNyb290IiwgZCkKIH0KIGFkZHRhc2sgYWRkdG9fcmVjaXBlX3N5c3Jvb3QgYWZ0ZXIgZG9fcG9wdWxhdGVfc3lzcm9vdAorZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3RbZGVwdGFza10gPSAiZG9fcG9wdWxhdGVfc3lzcm9vdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3Nzc2RrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zc3Nkay5iYmNsYXNzCmluZGV4IGMwYzBiZmUuLjA0YWVjYjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3Nzc2RrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3NzZGsuYmJjbGFzcwpAQCAtNSw5ICs1LDE1IEBACiBMSUJDT1ZFUlJJREUgPSAiOiR7TkFUSVZFU0RLTElCQ30iCiBNQUNISU5FT1ZFUlJJREVTID0gIiIKIFBBQ0tBR0VfQVJDSCA9ICIke1NES19BUkNIfSIKKwogcHl0aG9uICgpIHsKICAgICAjIHNldCBUVU5FX1BLR0FSQ0ggdG8gU0RLX0FSQ0gKICAgICBkLnNldFZhcignVFVORV9QS0dBUkNIJywgZC5nZXRWYXIoJ1NES19BUkNIJykpCisgICAgIyBTZXQgZmVhdHVyZXMgaGVyZSB0byBwcmV2ZW50IGFwcGVuZHMgYW5kIGRpc3RybyBmZWF0dXJlcyBiYWNrZmlsbAorICAgICMgZnJvbSBtb2RpZnlpbmcgbmF0aXZlc2RrIGRpc3RybyBmZWF0dXJlcworICAgIGZlYXR1cmVzID0gc2V0KGQuZ2V0VmFyKCJESVNUUk9fRkVBVFVSRVNfTkFUSVZFU0RLIikuc3BsaXQoKSkKKyAgICBmaWx0ZXJlZCA9IHNldChiYi51dGlscy5maWx0ZXIoIkRJU1RST19GRUFUVVJFUyIsIGQuZ2V0VmFyKCJESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRVNESyIpLCBkKS5zcGxpdCgpKQorICAgIGQuc2V0VmFyKCJESVNUUk9fRkVBVFVSRVMiLCAiICIuam9pbihzb3J0ZWQoZmVhdHVyZXMgfCBmaWx0ZXJlZCkpKQogfQogCiBTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4gPSAiJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtiaW5kaXJfbmF0aXZlfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9IgpAQCAtMzcsNyArNDMsNiBAQAogdGFyZ2V0X2V4ZWNfcHJlZml4ID0gIiR7U0RLUEFUSE5BVElWRX0ke3ByZWZpeF9uYXRpdmVzZGt9IgogYmFzZWxpYiA9ICJsaWIiCiAKLWRvX3BvcHVsYXRlX3N5c3Jvb3Rbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogCiAjIE5lZWQgdG8gZm9yY2UgdGhpcyB0byBlbnN1cmUgY29uc2l0ZW5jeSBhY3Jvc3MgYXJjaGl0ZWN0dXJlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwppbmRleCAxOWVkNTU0Li4yYTUzMGEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwpAQCAtMjYsNyArMjYsNyBAQAogQ1ZFX1ZFUlNJT04gPz89ICIke1BWfSIKIAogQ1ZFX0NIRUNLX0RCX0RJUiA/PSAiJHtETF9ESVJ9L0NWRV9DSEVDSyIKLUNWRV9DSEVDS19EQl9GSUxFID89ICIke0NWRV9DSEVDS19EQl9ESVJ9L252ZGN2ZV8xLjAuZGIiCitDVkVfQ0hFQ0tfREJfRklMRSA/PSAiJHtDVkVfQ0hFQ0tfREJfRElSfS9udmRjdmVfMS4xLmRiIgogCiBDVkVfQ0hFQ0tfTE9HID89ICIke1R9L2N2ZS5sb2ciCiBDVkVfQ0hFQ0tfVE1QX0ZJTEUgPz0gIiR7VE1QRElSfS9jdmVfY2hlY2siCkBAIC01MiwxMSArNTIsMTQgQEAKICAgICAiIiIKIAogICAgIGlmIG9zLnBhdGguZXhpc3RzKGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIpKToKLSAgICAgICAgcGF0Y2hlZF9jdmVzID0gZ2V0X3BhdGNoZXNfY3ZlcyhkKQotICAgICAgICBwYXRjaGVkLCB1bnBhdGNoZWQgPSBjaGVja19jdmVzKGQsIHBhdGNoZWRfY3ZlcykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0Y2hlZF9jdmVzID0gZ2V0X3BhdGNoZXNfY3ZlcyhkKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBiYi5mYXRhbCgiRmFpbHVyZSBpbiBzZWFyY2hpbmcgcGF0Y2hlcyIpCisgICAgICAgIHdoaXRlbGlzdGVkLCBwYXRjaGVkLCB1bnBhdGNoZWQgPSBjaGVja19jdmVzKGQsIHBhdGNoZWRfY3ZlcykKICAgICAgICAgaWYgcGF0Y2hlZCBvciB1bnBhdGNoZWQ6CiAgICAgICAgICAgICBjdmVfZGF0YSA9IGdldF9jdmVfaW5mbyhkLCBwYXRjaGVkICsgdW5wYXRjaGVkKQotICAgICAgICAgICAgY3ZlX3dyaXRlX2RhdGEoZCwgcGF0Y2hlZCwgdW5wYXRjaGVkLCBjdmVfZGF0YSkKKyAgICAgICAgICAgIGN2ZV93cml0ZV9kYXRhKGQsIHBhdGNoZWQsIHVucGF0Y2hlZCwgd2hpdGVsaXN0ZWQsIGN2ZV9kYXRhKQogICAgIGVsc2U6CiAgICAgICAgIGJiLm5vdGUoIk5vIENWRSBkYXRhYmFzZSBmb3VuZCwgc2tpcHBpbmcgQ1ZFIGNoZWNrIikKIApAQCAtMTI5LDYgKzEzMiwxMCBAQAogICAgIGZvciB1cmwgaW4gc3JjX3BhdGNoZXMoZCk6CiAgICAgICAgIHBhdGNoX2ZpbGUgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKVsyXQogCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwYXRjaF9maWxlKToKKyAgICAgICAgICAgIGJiLmVycm9yKCJGaWxlIE5vdCBmb3VuZDogJXMiICUgcGF0Y2hfZmlsZSkKKyAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yCisKICAgICAgICAgIyBDaGVjayBwYXRjaCBmaWxlIG5hbWUgZm9yIENWRSBJRAogICAgICAgICBmbmFtZV9tYXRjaCA9IGN2ZV9maWxlX25hbWVfbWF0Y2guc2VhcmNoKHBhdGNoX2ZpbGUpCiAgICAgICAgIGlmIGZuYW1lX21hdGNoOgpAQCAtMTcyLDEzICsxNzksMTMgQEAKICAgICBwcm9kdWN0cyA9IGQuZ2V0VmFyKCJDVkVfUFJPRFVDVCIpLnNwbGl0KCkKICAgICAjIElmIHRoaXMgaGFzIGJlZW4gdW5zZXQgdGhlbiB3ZSdyZSBub3Qgc2Nhbm5pbmcgZm9yIENWRXMgaGVyZSAoZm9yIGV4YW1wbGUsIGltYWdlIHJlY2lwZXMpCiAgICAgaWYgbm90IHByb2R1Y3RzOgotICAgICAgICByZXR1cm4gKFtdLCBbXSkKKyAgICAgICAgcmV0dXJuIChbXSwgW10sIFtdKQogICAgIHB2ID0gZC5nZXRWYXIoIkNWRV9WRVJTSU9OIikuc3BsaXQoIitnaXQiKVswXQogCiAgICAgIyBJZiB0aGUgcmVjaXBlIGhhcyBiZWVuIHdoaXRsaXN0ZWQgd2UgcmV0dXJuIGVtcHR5IGxpc3RzCiAgICAgaWYgZC5nZXRWYXIoIlBOIikgaW4gZC5nZXRWYXIoIkNWRV9DSEVDS19QTl9XSElURUxJU1QiKS5zcGxpdCgpOgogICAgICAgICBiYi5ub3RlKCJSZWNpcGUgaGFzIGJlZW4gd2hpdGVsaXN0ZWQsIHNraXBwaW5nIGNoZWNrIikKLSAgICAgICAgcmV0dXJuIChbXSwgW10pCisgICAgICAgIHJldHVybiAoW10sIFtdLCBbXSkKIAogICAgIG9sZF9jdmVfd2hpdGVsaXN0ID0gIGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfQ1ZFX1dISVRFTElTVCIpCiAgICAgaWYgb2xkX2N2ZV93aGl0ZWxpc3Q6CkBAIC0yMTQsNyArMjIxLDcgQEAKICAgICAgICAgICAgICAgICAoXywgXywgXywgdmVyc2lvbl9zdGFydCwgb3BlcmF0b3Jfc3RhcnQsIHZlcnNpb25fZW5kLCBvcGVyYXRvcl9lbmQpID0gcm93CiAgICAgICAgICAgICAgICAgI2JiLmRlYnVnKDIsICJFdmFsdWF0aW5nIHJvdyAiICsgc3RyKHJvdykpCiAKLSAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3Jfc3RhcnQgPT0gJz0nIGFuZCBwdiA9PSB2ZXJzaW9uX3N0YXJ0KToKKyAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3Jfc3RhcnQgPT0gJz0nIGFuZCBwdiA9PSB2ZXJzaW9uX3N0YXJ0KSBvciB2ZXJzaW9uX3N0YXJ0ID09ICctJzoKICAgICAgICAgICAgICAgICAgICAgdnVsbmVyYWJsZSA9IFRydWUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpZiBvcGVyYXRvcl9zdGFydDoKQEAgLTI1Niw3ICsyNjMsNyBAQAogCiAgICAgY29ubi5jbG9zZSgpCiAKLSAgICByZXR1cm4gKGxpc3QocGF0Y2hlZF9jdmVzKSwgY3Zlc191bnBhdGNoZWQpCisgICAgcmV0dXJuIChsaXN0KGN2ZV93aGl0ZWxpc3QpLCBsaXN0KHBhdGNoZWRfY3ZlcyksIGN2ZXNfdW5wYXRjaGVkKQogCiBkZWYgZ2V0X2N2ZV9pbmZvKGQsIGN2ZXMpOgogICAgICIiIgpAQCAtMjgwLDcgKzI4Nyw3IEBACiAgICAgY29ubi5jbG9zZSgpCiAgICAgcmV0dXJuIGN2ZV9kYXRhCiAKLWRlZiBjdmVfd3JpdGVfZGF0YShkLCBwYXRjaGVkLCB1bnBhdGNoZWQsIGN2ZV9kYXRhKToKK2RlZiBjdmVfd3JpdGVfZGF0YShkLCBwYXRjaGVkLCB1bnBhdGNoZWQsIHdoaXRlbGlzdGVkLCBjdmVfZGF0YSk6CiAgICAgIiIiCiAgICAgV3JpdGUgQ1ZFIGluZm9ybWF0aW9uIGluIFdPUktESVI7IGFuZCB0byBDVkVfQ0hFQ0tfRElSLCBhbmQKICAgICBDVkUgbWFuaWZlc3QgaWYgZW5hYmxlZC4KQEAgLTI5Niw3ICszMDMsOSBAQAogICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIlBBQ0tBR0UgTkFNRTogJXNcbiIgJSBkLmdldFZhcigiUE4iKQogICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIlBBQ0tBR0UgVkVSU0lPTjogJXNcbiIgJSBkLmdldFZhcigiUFYiKQogICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIkNWRTogJXNcbiIgJSBjdmUKLSAgICAgICAgaWYgY3ZlIGluIHBhdGNoZWQ6CisgICAgICAgIGlmIGN2ZSBpbiB3aGl0ZWxpc3RlZDoKKyAgICAgICAgICAgIHdyaXRlX3N0cmluZyArPSAiQ1ZFIFNUQVRVUzogV2hpdGVsaXN0ZWRcbiIKKyAgICAgICAgZWxpZiBjdmUgaW4gcGF0Y2hlZDoKICAgICAgICAgICAgIHdyaXRlX3N0cmluZyArPSAiQ1ZFIFNUQVRVUzogUGF0Y2hlZFxuIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdW5wYXRjaGVkX2N2ZXMuYXBwZW5kKGN2ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2RldmljZXRyZWUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RldmljZXRyZWUuYmJjbGFzcwppbmRleCBkODc3OWM3Li5jNzcyYWIyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZGV2aWNldHJlZS5iYmNsYXNzCkBAIC01OSw3ICs1OSw3IEBACiAKIERUQ19GTEFHUyA/PSAiLVIgJHtEVF9SRVNFUlZFRF9NQVB9IC1iICR7RFRfQk9PVF9DUFV9IgogRFRDX1BQRkxBR1MgPz0gIi1ub3N0ZGluYyAtdW5kZWYgLURfX0RUU19fIC14IGFzc2VtYmxlci13aXRoLWNwcCIKLURUQ19CRkxBR1MgPz0gIi1wICR7RFRfUEFERElOR19TSVpFfSIKK0RUQ19CRkxBR1MgPz0gIi1wICR7RFRfUEFERElOR19TSVpFfSAtQCIKIERUQ19PRkxBR1MgPz0gIi1wIDAgLUAgLUggZXBhcHIiCiAKIHB5dGhvbiAoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWJhc2UuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYzOThkNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtYmFzZS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1ERVBFTkRTICArPSAiJHtAWyIke1BZVEhPTl9QTn0tbmF0aXZlICR7UFlUSE9OX1BOfSIsICIiXVsoZC5nZXRWYXIoJ1BBQ0tBR0VTJykgPT0gJycpXX0iCi1SREVQRU5EU18ke1BOfSArPSAiJHtAWycnLCAnJHtQWVRIT05fUE59LWNvcmUnXVsnJHtDTEFTU09WRVJSSURFfScgPT0gJ2NsYXNzLXRhcmdldCddfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMtY29tbW9uLWJhc2UgcHl0aG9ubmF0aXZlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzU5YjU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMtYmFzZQotCi1ESVNUVVRJTFNfQlVJTERfQVJHUyA/PSAiIgotRElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHUyA/PSAiLS1pbnN0YWxsLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotRElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTID89ICItLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke1NUQUdJTkdfREFUQURJUn0iCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTID89ICItLXJvb3Q9JHtEfSBcCi0gICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke2RhdGFkaXJ9IgotCi1ESVNUVVRJTFNfUFlUSE9OID0gInB5dGhvbiIKLURJU1RVVElMU19QWVRIT05fY2xhc3MtbmF0aXZlID0gIm5hdGl2ZXB5dGhvbiIKLQotZGlzdHV0aWxzX2RvX2NvbmZpZ3VyZSgpIHsKLSAgICAgICAgaWYgWyAiJHtDTEVBTkJST0tFTn0iICE9ICIxIiBdIDsgdGhlbgotICAgICAgICAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBjbGVhbiAke0RJU1RVVElMU19CVUlMRF9BUkdTfQotICAgICAgICBmaQotfQotCi1kaXN0dXRpbHNfZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAotICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKLX0KLQotZGlzdHV0aWxzX3N0YWdlX2hlYWRlcnMoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2hlYWRlcnMgZmFpbGVkLiIKLX0KLQotZGlzdHV0aWxzX3N0YWdlX2FsbCgpIHsKLSAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgIFBZVEhPTlBBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19TVEFHRV9BTExfQVJHU30nIGV4ZWN1dGlvbiBmb3Igc3RhZ2VfYWxsIGZhaWxlZC4iCi19Ci0KLWRpc3R1dGlsc19kb19pbnN0YWxsKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgUFlUSE9OUEFUSD0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKLQotICAgICAgICAjIHN1cHBvcnQgZmlsZW5hbWVzIHdpdGggKnNwYWNlcyoKLSAgICAgICAgIyBvbmx5IG1vZGlmeSBmaWxlIGlmIGl0IGNvbnRhaW5zIHBhdGggIGFuZCByZWNvbXBpbGUgaXQKLSAgICAgICAgZmluZCAke0R9IC1uYW1lICIqLnB5IiAtZXhlYyBncmVwIC1xICR7RH0ge30gXDsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1leGVjIHNlZCAtaSAtZSBzOiR7RH06Omcge30gXDsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1leGVjICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiAtbWNvbXBpbGVhbGwge30gXDsKLQotICAgICAgICBmb3IgaSBpbiAke0R9JHtiaW5kaXJ9LyogJHtEfSR7c2JpbmRpcn0vKjsgZG8KLSAgICAgICAgICAgIGlmIFsgLWYgIiRpIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lIHM6JHtQWVRIT059OiR7VVNSQklOUEFUSH0vZW52XCAke0RJU1RVVElMU19QWVRIT059OmcgJGkKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgczoke1NUQUdJTkdfQklORElSX05BVElWRX06JHtiaW5kaXJ9OmcgJGkKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLQotICAgICAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vZWFzeS1pbnN0YWxsLnB0aAotICAgICAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weSoKLQotICAgICAgICAjCi0gICAgICAgICMgRklYTUU6IEJhbmRhaWQgYWdhaW5zdCB3cm9uZyBkYXRhZGlyIGNvbXB1dGF0aW9uCi0gICAgICAgICMKLSAgICAgICAgaWYgWyAtZSAke0R9JHtkYXRhZGlyfS9zaGFyZSBdOyB0aGVuCi0gICAgICAgICAgICBtdiAtZiAke0R9JHtkYXRhZGlyfS9zaGFyZS8qICR7RH0ke2RhdGFkaXJ9LwotICAgICAgICAgICAgcm1kaXIgJHtEfSR7ZGF0YWRpcn0vc2hhcmUKLSAgICAgICAgZmkKLQotCSMgRml4IGJhY2twb3J0IG1vZHVsZXMKLQlpZiBbIC1lICR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9iYWNrcG9ydHMvX19pbml0X18ucHkgXSAmJiAKLSAgICAgICAgICAgWyAtZSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYmFja3BvcnRzL19faW5pdF9fLnB5IF07IHRoZW4KLQkgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYmFja3BvcnRzL19faW5pdF9fLnB5OwotCSAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9iYWNrcG9ydHMvX19pbml0X18ucHljOwotCWZpCi19Ci0KLUVYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbAotCi1leHBvcnQgTERTSEFSRUQ9IiR7Q0NMRH0gLXNoYXJlZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcwppbmRleCAwNWEyNGJmLi43MzU2YjUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCkBAIC0xLDEwICsxLDkgQEAKIGluaGVyaXQgZGlzdHV0aWxzMy1iYXNlCiAKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2Rpc3R1dGlsc19kb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCiBESVNUVVRJTFNfQlVJTERfQVJHUyA/PSAiIgotRElTVFVUSUxTX0JVSUxEX0VYVF9BUkdTID89ICIiCi1ESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTID89ICItLWluc3RhbGwtZGlyPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCi1ESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1MgPz0gIi0tcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1kYXRhPSR7U1RBR0lOR19EQVRBRElSfSIKIERJU1RVVElMU19JTlNUQUxMX0FSR1MgPz0gIi0tcm9vdD0ke0R9IFwKICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAogICAgIC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXApAQCAtMTQsNDUgKzEzLDI4IEBACiBESVNUVVRJTFNfUFlUSE9OX2NsYXNzLW5hdGl2ZSA9ICJuYXRpdmVweXRob24zIgogCiBkaXN0dXRpbHMzX2RvX2NvbmZpZ3VyZSgpIHsKLQlpZiBbICIke0NMRUFOQlJPS0VOfSIgIT0gIjEiIF0gOyB0aGVuCi0JCU5PX0ZFVENIX0JVSUxEPTEgXAotCQkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgY2xlYW4gJHtESVNUVVRJTFNfQlVJTERfQVJHU30KLQlmaQorICAgIDoKIH0KIAogZGlzdHV0aWxzM19kb19jb21waWxlKCkgeworICAgICAgICBjZCAke1N9CiAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IFwKLSAgICAgICAgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gJHtTfS9zZXR1cC5weSBcCisgICAgICAgIGJ1aWxkIC0tYnVpbGQtYmFzZT0ke0J9ICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKICAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30nIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQogZGlzdHV0aWxzM19kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCi1kaXN0dXRpbHMzX3N0YWdlX2hlYWRlcnMoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2hlYWRlcnMgZmFpbGVkLiIKLX0KLWRpc3R1dGlsczNfc3RhZ2VfaGVhZGVyc1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKLQotZGlzdHV0aWxzM19zdGFnZV9hbGwoKSB7Ci0gICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICBQWVRIT05QQVRIPSR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2FsbCBmYWlsZWQuIgotfQotZGlzdHV0aWxzM19zdGFnZV9hbGxbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCi0KIGRpc3R1dGlsczNfZG9faW5zdGFsbCgpIHsKKyAgICAgICAgY2QgJHtTfQogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKICAgICAgICAgUFlUSE9OUEFUSD0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59ICR7U30vc2V0dXAucHkgXAorICAgICAgICBidWlsZCAtLWJ1aWxkLWJhc2U9JHtCfSBpbnN0YWxsIC0tc2tpcC1idWlsZCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKICAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKIAogICAgICAgICAjIHN1cHBvcnQgZmlsZW5hbWVzIHdpdGggKnNwYWNlcyoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCmluZGV4IGVhNTlkMDIuLmQyMDAxMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwpAQCAtNzMsOSArNzMsOCBAQAogCiAgICAgICAgIGQuc2V0VmFyKCdTUkNfVVJJJywgJyAnLmpvaW4obG9jYWxfc3JjdXJpKSkKIAotICAgICAgICBpZiAne1NSQ1BWfScgaW4gZC5nZXRWYXIoJ1BWJywgRmFsc2UpOgotICAgICAgICAgICAgIyBEdW1teSB2YWx1ZSBiZWNhdXNlIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIGNhbid0IGJlIGNhbGxlZCB3aXRoIGJsYW5rIFNSQ19VUkkKLSAgICAgICAgICAgIGQuc2V0VmFyKCdTUkNQVicsICc5OTknKQorICAgICAgICAjIER1bW15IHZhbHVlIGJlY2F1c2UgdGhlIGRlZmF1bHQgZnVuY3Rpb24gY2FuJ3QgYmUgY2FsbGVkIHdpdGggYmxhbmsgU1JDX1VSSQorICAgICAgICBkLnNldFZhcignU1JDUFYnLCAnOTk5JykKIAogICAgICAgICBpZiBkLmdldFZhcignQ09ORklHVVJFT1BUX0RFUFRSQUNLJykgPT0gJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJzoKICAgICAgICAgICAgIGQuc2V0VmFyKCdDT05GSUdVUkVPUFRfREVQVFJBQ0snLCAnJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9mZWF0dXJlc19jaGVjay5iYmNsYXNzCmluZGV4IDM5MWZiZTEuLjg3NmQzMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZmVhdHVyZXNfY2hlY2suYmJjbGFzcwpAQCAtMjMsNiArMjMsOSBAQAogIyBDb3B5cmlnaHQgMjAxMyAoQykgTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCiAKIHB5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoJ1BBUlNFX0FMTF9SRUNJUEVTJywgRmFsc2UpOgorICAgICAgICByZXR1cm4KKwogICAgICMgQXNzdW1lIGF0IGxlYXN0IG9uZSB2YXIgaXMgc2V0LgogICAgIGRpc3Ryb19mZWF0dXJlcyA9IHNldCgoZC5nZXRWYXIoJ0RJU1RST19GRUFUVVJFUycpIG9yICcnKS5zcGxpdCgpKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9mb250Y2FjaGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCmluZGV4IDEzZjlkZjEuLjk3ZTdmMTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCkBAIC0yMCw3ICsyMCw3IEBACiAJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9mb250X2NhY2hlICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gXAogCQknYmluZGlyPSIke2JpbmRpcn0iJyBcCiAJCSdsaWJkaXI9IiR7bGliZGlyfSInIFwKLSAgICAgICAgICAgICAgICAnbGliZXhlY2Rpcj0iJHtsaWJleGVjZGlyfSInIFwKKwkJJ2xpYmV4ZWNkaXI9IiR7bGliZXhlY2Rpcn0iJyBcCiAJCSdiYXNlX2xpYmRpcj0iJHtiYXNlX2xpYmRpcn0iJyBcCiAJCSdmb250Y29uZmlnY2FjaGVkaXI9IiR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IicgXAogCQknZm9udGNvbmZpZ2NhY2hlcGFyYW1zPSIke0ZPTlRDT05GSUdfQ0FDSEVfUEFSQU1TfSInIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCmluZGV4IGU0MGU1NTYuLmM5OTY4OWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcwpAQCAtNTMsNiArNTMsNyBAQAogZXhwb3J0IEdPVE9PTERJUgogCiBleHBvcnQgQ0dPX0VOQUJMRUQgPz0gIjEiCitleHBvcnQgQ0dPX0VOQUJMRURfcmlzY3Y2NCA9ICIwIgogZXhwb3J0IENHT19DRkxBR1MgPz0gIiR7Q0ZMQUdTfSIKIGV4cG9ydCBDR09fQ1BQRkxBR1MgPz0gIiR7Q1BQRkxBR1N9IgogZXhwb3J0IENHT19DWFhGTEFHUyA/PSAiJHtDWFhGTEFHU30iCkBAIC0xNDcsNyArMTQ4LDcgQEAKICMgZG9lc24ndCBzdXBwb3J0IC1idWlsZG1vZGU9cGllLCBzbyBza2lwIHRoZSBRQSBjaGVja2luZyBmb3IgbWlwcyBhbmQgaXRzCiAjIHZhcmlhbnRzLgogcHl0aG9uKCkgewotICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKToKKyAgICBpZiAnbWlwcycgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykgb3IgJ3Jpc2N2JyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKToKICAgICAgICAgZC5hcHBlbmRWYXIoJ0lOU0FORV9TS0lQXyVzJyAlIGQuZ2V0VmFyKCdQTicpLCAiIHRleHRyZWwiKQogICAgIGVsc2U6CiAgICAgICAgIGQuYXBwZW5kVmFyKCdHT0JVSUxERkxBR1MnLCAnIC1idWlsZG1vZGU9cGllJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKaW5kZXggMTY2ZGVhOS4uMTA5OWI5NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKQEAgLTYsMTIgKzYsMTggQEAKIEhPU1RfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignSE9TVF9BUkNIJyksIGQpfSIKIEhPU1RfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIEhPU1RfR09NSVBTID0gIiR7QGdvX21hcF9taXBzKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorSE9TVF9HT0FSTV9jbGFzcy1uYXRpdmUgPSAiNyIKK0hPU1RfR08zODZfY2xhc3MtbmF0aXZlID0gInNzZTIiCitIT1NUX0dPTUlQU19jbGFzcy1uYXRpdmUgPSAiaGFyZGZsb2F0IgogSE9TVF9HT1RVUExFID0gIiR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfSIKIFRBUkdFVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignVEFSR0VUX09TJyksIGQpfSIKIFRBUkdFVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKIFRBUkdFVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCiBUQVJHRVRfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogVEFSR0VUX0dPTUlQUyA9ICIke0Bnb19tYXBfbWlwcyhkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorVEFSR0VUX0dPQVJNX2NsYXNzLW5hdGl2ZSA9ICI3IgorVEFSR0VUX0dPMzg2X2NsYXNzLW5hdGl2ZSA9ICJzc2UyIgorVEFSR0VUX0dPTUlQU19jbGFzcy1uYXRpdmUgPSAiaGFyZGZsb2F0IgogVEFSR0VUX0dPVFVQTEUgPSAiJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfSIKIEdPX0JVSUxEX0JJTkRJUiA9ICIke0BbJ2Jpbi8ke0hPU1RfR09UVVBMRX0nLCdiaW4nXVtkLmdldFZhcignQlVJTERfR09UVVBMRScpID09IGQuZ2V0VmFyKCdIT1NUX0dPVFVQTEUnKV19IgogCkBAIC0zMSw2ICszNyw3IEBACiBHT19EWU5MSU5LX3g4NiA9ICIxIgogR09fRFlOTElOS194ODYtNjQgPSAiMSIKIEdPX0RZTkxJTktfcG93ZXJwYzY0ID0gIjEiCitHT19EWU5MSU5LX3Bvd2VycGM2NGxlID0gIjEiCiBHT19EWU5MSU5LX2NsYXNzLW5hdGl2ZSA9ICIiCiBHT19EWU5MSU5LX2NsYXNzLW5hdGl2ZXNkayA9ICIiCiAKQEAgLTQwLDYgKzQ3LDcgQEAKIENPTVBBVElCTEVfSE9TVF9saW51eC1tdXNseDMyID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NGxlID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKIAogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCkBAIC00Nyw3ICs1NSw2IEBACiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKIAogVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tYXJjaD1taXBzMzJyMiIKLVNFQ1VSSVRZX0NGTEFHU19taXBzYXJjaCA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCiBTRUNVUklUWV9OT1BJRV9DRkxBR1MgPz89ICIiCiAKICMgZ28gY2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGU6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCmluZGV4IDhiNWZmMjAuLjNhMmNkZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCkBAIC04OCw2ICs4OCwxMiBAQAogICAgIGZvciBsYWJlbCBpbiBsYWJlbHMuc3BsaXQoKToKICAgICAgICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKIAorICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCdPVkVSUklERVMnKQorICAgICAgICBpZiBub3Qgb3ZlcnJpZGVzOgorICAgICAgICAgICAgYmIuZmF0YWwoJ09WRVJSSURFUyBub3QgZGVmaW5lZCcpCisKKyAgICAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgJ2dydWJfJyArIGxhYmVsICsgJzonICsgb3ZlcnJpZGVzKQorCiAgICAgICAgIGZvciBidHlwZSBpbiBidHlwZXM6CiAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdcbm1lbnVlbnRyeSBcJyVzJXNcJ3tcbicgJSAobGFiZWwsIGJ0eXBlWzBdKSkKICAgICAgICAgICAgIGxiID0gbGFiZWwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCmluZGV4IGJjM2Q2ZjQuLmQwOTUzMDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwpAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgICAgIHJldHVybiAiaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUiCiAgICAgcmV0dXJuICIiCiAKLURFUEVORFNfcHJlcGVuZCArPSAiJHtAaWNlY2NfZGVwX3ByZXBlbmQoZCl9ICIKK0RFUEVORFNfcHJlcGVuZCA9ICIke0BpY2VjY19kZXBfcHJlcGVuZChkKX0gIgogCiBnZXRfY3Jvc3Nfa2VybmVsX2NjW3ZhcmRlcHNleGNsdWRlXSArPSAiS0VSTkVMX0NDIgogZGVmIGdldF9jcm9zc19rZXJuZWxfY2MoYmIsZCk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKaW5kZXggMDRkZDU3Yy4uZWJmNmU2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwpAQCAtMTcsNiArMTcsMTYgQEAKIAlwcmVfcHJlbGlua19zaXplPWBkdSAta3MgJHtJTUFHRV9ST09URlN9IHwgYXdrICd7c2l6ZSA9ICQxIDsgcHJpbnQgc2l6ZSB9J2AKIAllY2hvICJTaXplIGJlZm9yZSBwcmVsaW5raW5nICRwcmVfcHJlbGlua19zaXplLiIKIAorCSMgVGhlIGZpbGVzeXN0ZW0gbWF5IG5vdCBjb250YWluIHN5c2NvbmZkaXIgc28gZXN0YWJsaXNoIHdoYXQgaXMgcHJlc2VudAorCSMgdG8gZW5hYmxlIGNsZWFudXAgYWZ0ZXIgdGVtcG9yYXJ5IGNyZWF0aW9uIG9mIHN5c2NvbmZkaXIgaWYgbmVlZGVkCisJcHJlc2VudGRpcj0iJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfSIKKwl3aGlsZSBbICIke0lNQUdFX1JPT1RGU30iICE9ICIke3ByZXNlbnRkaXJ9IiBdIDsgZG8KKwkJWyAhIC1kICIke3ByZXNlbnRkaXJ9IiBdIHx8IGJyZWFrCisJCXByZXNlbnRkaXI9YGRpcm5hbWUgIiR7cHJlc2VudGRpcn0iYAorCWRvbmUKKworCW1rZGlyIC1wICIke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9IgorCiAJIyBXZSBuZWVkIGEgcHJlbGluayBjb25mIG9uIHRoZSBmaWxlc3lzdGVtLCBhZGQgb25lIGlmIGl0J3MgbWlzc2luZwogCWlmIFsgISAtZSAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3ByZWxpbmsuY29uZiBdOyB0aGVuCiAJCWNwICR7U1RBR0lOR19FVENESVJfTkFUSVZFfS9wcmVsaW5rLmNvbmYgXApAQCAtNTksNiArNjksMTMgQEAKIAkJcm0gJGxkc29jb25mCiAJZmkKIAorCSMgUmVtb3ZlIGFueSBkaXJlY3RvcmllcyB0ZW1wb3JhcmlseSBjcmVhdGVkIGZvciBzeXNjb25mZGlyCisJY2xlYW51cGRpcj0iJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfSIKKwl3aGlsZSBbICIke3ByZXNlbnRkaXJ9IiAhPSAiJHtjbGVhbnVwZGlyfSIgXSA7IGRvCisJCXJtZGlyICIke2NsZWFudXBkaXJ9IgorCQljbGVhbnVwZGlyPWBkaXJuYW1lICR7Y2xlYW51cGRpcn1gCisJZG9uZQorCiAJcHJlX3ByZWxpbmtfc2l6ZT1gZHUgLWtzICR7SU1BR0VfUk9PVEZTfSB8IGF3ayAne3NpemUgPSAkMSA7IHByaW50IHNpemUgfSdgCiAJZWNobyAiU2l6ZSBhZnRlciBwcmVsaW5raW5nICRwcmVfcHJlbGlua19zaXplLiIKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCmluZGV4IGMyODI0MzkuLjY5NGI1OGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwpAQCAtNjIsMTAgKzYyLDcgQEAKICAgICB2YWxpZF9mZWF0dXJlcyA9IChkLmdldFZhckZsYWcoJ0lNQUdFX0ZFQVRVUkVTJywgJ3ZhbGlkaXRlbXMnKSBvciAiIikuc3BsaXQoKQogICAgIHZhbGlkX2ZlYXR1cmVzICs9IGQuZ2V0VmFyRmxhZ3MoJ0NPTVBMRU1FTlRBUllfR0xPQicpLmtleXMoKQogICAgIGZvciB2YXIgaW4gZDoKLSAgICAgICBpZiB2YXIuc3RhcnRzd2l0aCgiUEFDS0FHRV9HUk9VUF8iKToKLSAgICAgICAgICAgYmIud2FybigiUEFDS0FHRV9HUk9VUCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIEZFQVRVUkVfUEFDS0FHRVMgaW5zdGVhZCIpCi0gICAgICAgICAgIHZhbGlkX2ZlYXR1cmVzLmFwcGVuZCh2YXJbMTQ6XSkKLSAgICAgICBlbGlmIHZhci5zdGFydHN3aXRoKCJGRUFUVVJFX1BBQ0tBR0VTXyIpOgorICAgICAgIGlmIHZhci5zdGFydHN3aXRoKCJGRUFUVVJFX1BBQ0tBR0VTXyIpOgogICAgICAgICAgICB2YWxpZF9mZWF0dXJlcy5hcHBlbmQodmFyWzE3Ol0pCiAgICAgdmFsaWRfZmVhdHVyZXMuc29ydCgpCiAKQEAgLTYwOSw2ICs2MDYsNyBAQAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIGRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgogZG9faW5zdGFsbFtub2V4ZWNdID0gIjEiCitkZWx0YXNrIGRvX3BvcHVsYXRlX2xpYwogZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiBkb19wYWNrYWdlW25vZXhlY10gPSAiMSIKIGRlbHRhc2sgZG9fcGFja2FnZV9xYQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKaW5kZXggMmVlZmZiYi4uZjgyZjFkOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCkBAIC01OSw2ICs1OSw4IEBACiAKIFpJUF9DT01QUkVTU0lPTl9MRVZFTCA/PSAiLTkiCiAKK1pTVERfQ09NUFJFU1NJT05fTEVWRUwgPz0gIi0zIgorCiBKRkZTMl9TVU1fRVhUUkFfQVJHUyA/PSAiIgogSU1BR0VfQ01EX2pmZnMyID0gIm1rZnMuamZmczIgLS1yb290PSR7SU1BR0VfUk9PVEZTfSAtLWZha2V0aW1lIC0tb3V0cHV0PSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uamZmczIgJHtFWFRSQV9JTUFHRUNNRH0iCiAKQEAgLTEyOCw3ICsxMzAsNyBAQAogCiBkb19pbWFnZV9jcGlvW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vY3Bpb19hcHBlbmQiCiBJTUFHRV9DTURfY3BpbyAoKSB7Ci0JKGNkICR7SU1BR0VfUk9PVEZTfSAmJiBmaW5kIC4gfCBjcGlvIC1vIC1IIG5ld2MgPiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uY3BpbykKKwkoY2QgJHtJTUFHRV9ST09URlN9ICYmIGZpbmQgLiB8IHNvcnQgfCBjcGlvIC0tcmVwcm9kdWNpYmxlIC1vIC1IIG5ld2MgPiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uY3BpbykKIAkjIFdlIG9ubHkgbmVlZCB0aGUgL2luaXQgc3ltbGluayBpZiB3ZSdyZSBidWlsZGluZyB0aGUgcmVhbAogCSMgaW1hZ2UuIFRoZSAtZGJnIGltYWdlIGRvZXNuJ3QgbmVlZCBpdCEgQnkgYmVpbmcgY2xldmVyCiAJIyBhYm91dCB0aGlzIHdlIGFsc28gYXZvaWQgJ3RvdWNoJyBiZWxvdyBmYWlsaW5nLCBhcyBpdApAQCAtMjY5LDcgKzI3MSw3IEBACiAgICAgaGRkaW1nIFwKICAgICBzcXVhc2hmcyBzcXVhc2hmcy14eiBzcXVhc2hmcy1sem8gc3F1YXNoZnMtbHo0IFwKICAgICB1YmkgdWJpZnMgbXVsdGl1YmkgXAotICAgIHRhciB0YXIuZ3ogdGFyLmJ6MiB0YXIueHogdGFyLmx6NCBcCisgICAgdGFyIHRhci5neiB0YXIuYnoyIHRhci54eiB0YXIubHo0IHRhci56c3QgXAogICAgIGNwaW8gY3Bpby5neiBjcGlvLnh6IGNwaW8ubHptYSBjcGlvLmx6NCBcCiAgICAgd2ljIHdpYy5neiB3aWMuYnoyIHdpYy5sem1hIFwKICAgICBjb250YWluZXIgXApAQCAtMjgyLDcgKzI4NCw3IEBACiAjIENPTlZFUlNJT05fQ01EL0RFUEVORFMuCiBDT01QUkVTU0lPTlRZUEVTID89ICIiCiAKLUNPTlZFUlNJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgbHpvIHppcCBzdW0gbWQ1c3VtIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIGJtYXAgdS1ib290IHZtZGsgdmRpIHFjb3cyIGJhc2U2NCAke0NPTVBSRVNTSU9OVFlQRVN9IgorQ09OVkVSU0lPTlRZUEVTID0gImd6IGJ6MiBsem1hIHh6IGx6NCBsem8gemlwIHpzdCBzdW0gbWQ1c3VtIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIGJtYXAgdS1ib290IHZtZGsgdmRpIHFjb3cyIGJhc2U2NCAke0NPTVBSRVNTSU9OVFlQRVN9IgogQ09OVkVSU0lPTl9DTURfbHptYSA9ICJsem1hIC1rIC1mIC03ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgogQ09OVkVSU0lPTl9DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtbiAtYyAtLXJzeW5jYWJsZSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgogQ09OVkVSU0lPTl9DTURfYnoyID0gInBiemlwMiAtZiAtayAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKQEAgLTI5MCw2ICsyOTIsNyBAQAogQ09OVkVSU0lPTl9DTURfbHo0ID0gImx6NCAtOSAteiAtbCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5sejQiCiBDT05WRVJTSU9OX0NNRF9sem8gPSAibHpvcCAtOSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3ppcCA9ICJ6aXAgJHtaSVBfQ09NUFJFU1NJT05fTEVWRUx9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnppcCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKK0NPTlZFUlNJT05fQ01EX3pzdCA9ICJ6c3RkIC1mIC1rIC1UMCAtYyAke1pTVERfQ09NUFJFU1NJT05fTEVWRUx9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uenN0IgogQ09OVkVSU0lPTl9DTURfc3VtID0gInN1bXRvb2wgLWkgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gLW8gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc3VtICR7SkZGUzJfU1VNX0VYVFJBX0FSR1N9IgogQ09OVkVSU0lPTl9DTURfbWQ1c3VtID0gIm1kNXN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lm1kNXN1bSIKIENPTlZFUlNJT05fQ01EX3NoYTFzdW0gPSAic2hhMXN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTFzdW0iCkBAIC0zMTAsNiArMzEzLDcgQEAKIENPTlZFUlNJT05fREVQRU5EU19sejQgPSAibHo0LW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU19sem8gPSAibHpvcC1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfemlwID0gInppcC1uYXRpdmUiCitDT05WRVJTSU9OX0RFUEVORFNfenN0ID0gInpzdGQtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX3N1bSA9ICJtdGQtdXRpbHMtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX2JtYXAgPSAiYm1hcC10b29scy1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfdS1ib290ID0gInUtYm9vdC10b29scy1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCmluZGV4IGYzNTBkYzIuLjk2ZWQwNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCkBAIC00LDcgKzQsNyBAQAogICAgICAgICAgICBCQkxBWUVSUyBJTUdERVBMT1lESVIgREVQTE9ZX0RJUl9JTUFHRSBGQUtFUk9PVENNRCBJTUFHRV9CQVNFTkFNRSBJTUFHRV9CT09UX0ZJTEVTIFwKICAgICAgICAgICAgSU1BR0VfTElOS19OQU1FIElNQUdFX1JPT1RGUyBJTklUUkFNRlNfRlNUWVBFUyBJTklUUkQgSU5JVFJEX0xJVkUgSVNPRElSIFJFQ0lQRV9TWVNST09UX05BVElWRSBcCiAgICAgICAgICAgIFJPT1RGU19TSVpFIFNUQUdJTkdfREFUQURJUiBTVEFHSU5HX0RJUiBTVEFHSU5HX0xJQkRJUiBUQVJHRVRfU1lTIFwKLSAgICAgICAgICAgS0VSTkVMX0lNQUdFVFlQRSBNQUNISU5FIElOSVRSQU1GU19JTUFHRSBJTklUUkFNRlNfSU1BR0VfQlVORExFIElOSVRSQU1GU19MSU5LX05BTUUiCisgICAgICAgICAgIEtFUk5FTF9JTUFHRVRZUEUgTUFDSElORSBJTklUUkFNRlNfSU1BR0UgSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSBJTklUUkFNRlNfTElOS19OQU1FIEFQUEVORCIKIAogaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnSU5JVFJBTUZTX0lNQUdFX0JVTkRMRScsICcxJywgJ2tlcm5lbC1hcnRpZmFjdC1uYW1lcycsICcnLCBkKX0KIApAQCAtMjcsMTYgKzI3LDE2IEBACiAKIElNQUdFX0NNRF93aWMgKCkgewogCW91dD0iJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0iCisJYnVpbGRfd2ljPSIke1dPUktESVJ9L2J1aWxkLXdpYyIKIAl3a3M9IiR7V0tTX0ZVTExfUEFUSH0iCiAJaWYgWyAteiAiJHdrcyIgXTsgdGhlbgogCQliYmZhdGFsICJObyBraWNrc3RhcnQgZmlsZXMgZnJvbSBXS1NfRklMRVMgd2VyZSBmb3VuZDogJHtXS1NfRklMRVN9LiBQbGVhc2Ugc2V0IFdLU19GSUxFIG9yIFdLU19GSUxFUyBhcHByb3ByaWF0ZWx5LiIKIAlmaQotCi0JQlVJTERESVI9IiR7VE9QRElSfSIgd2ljIGNyZWF0ZSAiJHdrcyIgLS12YXJzICIke1NUQUdJTkdfRElSfS8ke01BQ0hJTkV9L2ltZ2RhdGEvIiAtZSAiJHtJTUFHRV9CQVNFTkFNRX0iIC1vICIkb3V0LyIgJHtXSUNfQ1JFQVRFX0VYVFJBX0FSR1N9Ci0JbXYgIiRvdXQvJChiYXNlbmFtZSAiJHt3a3MlLndrc30iKSIqLmRpcmVjdCAiJG91dCR7SU1BR0VfTkFNRV9TVUZGSVh9LndpYyIKLQlybSAtcmYgIiRvdXQvIgorCUJVSUxERElSPSIke1RPUERJUn0iIFBTRVVET19VTkxPQUQ9MSB3aWMgY3JlYXRlICIkd2tzIiAtLXZhcnMgIiR7U1RBR0lOR19ESVJ9LyR7TUFDSElORX0vaW1nZGF0YS8iIC1lICIke0lNQUdFX0JBU0VOQU1FfSIgLW8gIiRidWlsZF93aWMvIiAke1dJQ19DUkVBVEVfRVhUUkFfQVJHU30KKwltdiAiJGJ1aWxkX3dpYy8kKGJhc2VuYW1lICIke3drcyUud2tzfSIpIiouZGlyZWN0ICIkb3V0JHtJTUFHRV9OQU1FX1NVRkZJWH0ud2ljIgogfQogSU1BR0VfQ01EX3dpY1t2YXJkZXBzZXhjbHVkZV0gPSAiV0tTX0ZVTExfUEFUSCBXS1NfRklMRVMgVE9QRElSIgorZG9faW1hZ2Vfd2ljW2NsZWFuZGlyc10gPSAiJHtXT1JLRElSfS9idWlsZC13aWMiCiAKICMgUmVidWlsZCB3aGVuIHRoZSB3a3MgZmlsZSBvciB2YXJzIGluIFdJQ1ZBUlMgY2hhbmdlCiBVU0lOR19XSUMgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9GU1RZUEVTJywgJ3dpYyAnICsgJyAnLmpvaW4oJ3dpYy4lcycgJSBjIGZvciBjIGluICcke0NPTlZFUlNJT05UWVBFU30nLnNwbGl0KCkpLCAnMScsICcnLCBkKX0iCkBAIC00Niw2ICs0Niw3IEBACiAKICMgV2UgZW5zdXJlIGFsbCBhcnRmYWN0cyBhcmUgZGVwbG95ZWQgKGUuZyB2aXJ0dWFsL2Jvb3Rsb2FkZXIpCiBkb19pbWFnZV93aWNbcmVjcmRlcHRhc2tdICs9ICJkb19kZXBsb3kiCitkb19pbWFnZV93aWNbZGVwdGFza10gKz0gImRvX2ltYWdlX2NvbXBsZXRlIgogCiBXS1NfRklMRV9ERVBFTkRTX0RFRkFVTFQgPSAnJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJCVUlMRF9BUkNIIiwgWyAneDg2XzY0JywgJ2k2ODYnIF0sICJzeXNsaW51eC1uYXRpdmUiLCAiIixkKX0nCiBXS1NfRklMRV9ERVBFTkRTX0RFRkFVTFQgKz0gImJtYXAtdG9vbHMtbmF0aXZlIGNkcnRvb2xzLW5hdGl2ZSBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIGUyZnNwcm9ncy1uYXRpdmUiCkBAIC04NCw2ICs4NSwxMCBAQAogICAgIGJiLnV0aWxzLmNvcHlmaWxlKHdrc19maWxlLCAiJXMvJXMiICUgKGRlcGRpciwgYmFzZW5hbWUgKyAnLScgKyBvcy5wYXRoLmJhc2VuYW1lKHdrc19maWxlKSkpCiB9CiAKK2RvX2ZsdXNoX3BzZXVkb2RiKCkgeworCSR7RkFLRVJPT1RFTlZ9ICR7RkFLRVJPT1RDTUR9IC1TCit9CisKIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoJ1VTSU5HX1dJQycpOgogICAgICAgICB3a3NfZmlsZV91ID0gZC5nZXRWYXIoJ1dLU19GVUxMX1BBVEgnLCBGYWxzZSkKQEAgLTEzNyw2ICsxNDIsNyBAQAogICAgIGRlcGRpciA9IGQuZ2V0VmFyKCdJTUdERVBMT1lESVInKQogICAgIGJiLnV0aWxzLmNvcHlmaWxlKG9zLnBhdGguam9pbihvdXRkaXIsIGJhc2VuYW1lKSArICcuZW52Jywgb3MucGF0aC5qb2luKGRlcGRpciwgYmFzZW5hbWUpICsgJy5lbnYnKQogfQorYWRkdGFzayBkb19mbHVzaF9wc2V1ZG9kYiBhZnRlciBkb19pbWFnZSBiZWZvcmUgZG9faW1hZ2Vfd2ljCiBhZGR0YXNrIGRvX3Jvb3Rmc193aWNlbnYgYWZ0ZXIgZG9faW1hZ2UgYmVmb3JlIGRvX2ltYWdlX3dpYwogZG9fcm9vdGZzX3dpY2Vudlt2YXJkZXBzXSArPSAiJHtXSUNWQVJTfSIKIGRvX3Jvb3Rmc193aWNlbnZbcHJlZnVuY3NdID0gJ3NldF9pbWFnZV9zaXplJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwppbmRleCBmODU2Y2Y2Li43ZmM4ZjMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwpAQCAtMjgsMTMgKzI4LDE0IEBACiAgICAgICAgICAgICBwbi1vdmVycmlkZXMgaW5mb2RpciBidWlsZC1kZXBzIHNyYy11cmktYmFkIFwKICAgICAgICAgICAgIHVua25vd24tY29uZmlndXJlLW9wdGlvbiBzeW1saW5rLXRvLXN5c3Jvb3QgbXVsdGlsaWIgXAogICAgICAgICAgICAgaW52YWxpZC1wYWNrYWdlY29uZmlnIGhvc3QtdXNlci1jb250YW1pbmF0ZWQgdXBwZXJjYXNlLXBuIHBhdGNoLWZ1enogXAorICAgICAgICAgICAgbWltZSBtaW1lLXhkZyBcCiAgICAgICAgICAgICAiCiBFUlJPUl9RQSA/PSAiZGV2LXNvIGRlYnVnLWRlcHMgZGV2LWRlcHMgZGVidWctZmlsZXMgYXJjaCBwa2djb25maWcgbGEgXAogICAgICAgICAgICAgcGVybXMgZGVwLWNtcCBwa2d2YXJjaGVjayBwZXJtLWNvbmZpZyBwZXJtLWxpbmUgcGVybS1saW5rIFwKICAgICAgICAgICAgIHNwbGl0LXN0cmlwIHBhY2thZ2VzLWxpc3QgcGtndi11bmRlZmluZWQgdmFyLXVuZGVmaW5lZCBcCiAgICAgICAgICAgICB2ZXJzaW9uLWdvaW5nLWJhY2t3YXJkcyBleHBhbmRlZC1kIGludmFsaWQtY2hhcnMgXAogICAgICAgICAgICAgbGljZW5zZS1jaGVja3N1bSBkZXYtZWxmIGZpbGUtcmRlcHMgY29uZmlndXJlLXVuc2FmZSBcCi0gICAgICAgICAgICBjb25maWd1cmUtZ2V0dGV4dCBwZXJsbG9jYWxwb2QgXAorICAgICAgICAgICAgY29uZmlndXJlLWdldHRleHQgcGVybGxvY2FscG9kIHNoZWJhbmctc2l6ZSBcCiAgICAgICAgICAgICAiCiAjIEFkZCB1c3JtZXJnZSBRQSBjaGVjayBiYXNlZCBvbiBkaXN0cm8gZmVhdHVyZQogRVJST1JfUUFfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnIHVzcm1lcmdlJywgJycsIGQpfSIKQEAgLTgyLDYgKzgzLDI5IEBACiAgICAgZWxzZToKICAgICAgICAgbWVzc2FnZXNbc2VjdGlvbl0gPSBtZXNzYWdlc1tzZWN0aW9uXSArICJcbiIgKyBuZXdfbXNnCiAKK1FBUEFUSFRFU1Rbc2hlYmFuZy1zaXplXSA9ICJwYWNrYWdlX3FhX2NoZWNrX3NoZWJhbmdfc2l6ZSIKK2RlZiBwYWNrYWdlX3FhX2NoZWNrX3NoZWJhbmdfc2l6ZShwYXRoLCBuYW1lLCBkLCBlbGYsIG1lc3NhZ2VzKToKKyAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRoKSBvciBlbGY6CisgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHN0YW56YSA9IGYucmVhZGxpbmUoMTMwKQorICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICByZXR1cm4KKworICAgIGlmIHN0YW56YS5zdGFydHN3aXRoKGInIyEnKToKKyAgICAgICAgI1NoZWJhbmcgbm90IGZvdW5kCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0YW56YSA9IHN0YW56YS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICNJZiBpdCBpcyBub3QgYSB0ZXh0IGZpbGUsIGl0IGlzIG5vdCBhIHNjcmlwdAorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbGVuKHN0YW56YSkgPiAxMjk6CisgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAic2hlYmFuZy1zaXplIiwgIiVzOiAlcyBtYXhpbXVtIHNoZWJhbmcgc2l6ZSBleGNlZWRlZCwgdGhlIG1heGltdW0gc2l6ZSBpcyAxMjguIiAlIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCwgZCkpKQorICAgICAgICAgICAgcmV0dXJuCisKIFFBUEFUSFRFU1RbbGliZXhlY10gPSAicGFja2FnZV9xYV9jaGVja19saWJleGVjIgogZGVmIHBhY2thZ2VfcWFfY2hlY2tfbGliZXhlYyhwYXRoLG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgogCkBAIC0xODEsMTAgKzIwNSw1MCBAQAogICAgIGxpYmdjYy5hLCBsaWJnY292LmEgd2lsbCBiZSBza2lwcGVkIGluIHRoZWlyIHBhY2thZ2VzCiAgICAgIiIiCiAKLSAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgiLXBpYyIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXN0YXRpY2RldiIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXB0ZXN0IikgYW5kIHBhdGguZW5kc3dpdGgoIi5hIikgYW5kIG5vdCBwYXRoLmVuZHN3aXRoKCJfbm9uc2hhcmVkLmEiKToKKyAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgiLXBpYyIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXN0YXRpY2RldiIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXB0ZXN0IikgYW5kIHBhdGguZW5kc3dpdGgoIi5hIikgYW5kIG5vdCBwYXRoLmVuZHN3aXRoKCJfbm9uc2hhcmVkLmEiKSBhbmQgbm90ICcvdXNyL2xpYi9kZWJ1Zy1zdGF0aWMvJyBpbiBwYXRoIGFuZCBub3QgJy8uZGVidWctc3RhdGljLycgaW4gcGF0aDoKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgInN0YXRpY2RldiIsICJub24gLXN0YXRpY2RldiBwYWNrYWdlIGNvbnRhaW5zIHN0YXRpYyAuYSBsaWJyYXJ5OiAlcyBwYXRoICclcyciICUgXAogICAgICAgICAgICAgICAgICAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQogCitRQVBBVEhURVNUW21pbWVdID0gInBhY2thZ2VfcWFfY2hlY2tfbWltZSIKK2RlZiBwYWNrYWdlX3FhX2NoZWNrX21pbWUocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CisgICAgIiIiCisgICAgQ2hlY2sgaWYgcGFja2FnZSBpbnN0YWxscyBtaW1lIHR5cGVzIHRvIC91c3Ivc2hhcmUvbWltZS9wYWNrYWdlcworICAgIHdoaWxlIG5vIGluaGVyaXRpbmcgbWltZS5iYmNsYXNzCisgICAgIiIiCisKKyAgICBpZiBkLmdldFZhcigiZGF0YWRpciIpICsgIi9taW1lL3BhY2thZ2VzIiBpbiBwYXRoIGFuZCBwYXRoLmVuZHN3aXRoKCcueG1sJykgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtaW1lIiwgZCk6CisgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJtaW1lIiwgInBhY2thZ2UgY29udGFpbnMgbWltZSB0eXBlcyBidXQgZG9lcyBub3QgaW5oZXJpdCBtaW1lOiAlcyBwYXRoICclcyciICUgXAorICAgICAgICAgICAgICAgICAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQorCitRQVBBVEhURVNUW21pbWUteGRnXSA9ICJwYWNrYWdlX3FhX2NoZWNrX21pbWVfeGRnIgorZGVmIHBhY2thZ2VfcWFfY2hlY2tfbWltZV94ZGcocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CisgICAgIiIiCisgICAgQ2hlY2sgaWYgcGFja2FnZSBpbnN0YWxscyBkZXNrdG9wIGZpbGUgY29udGFpbmluZyBNaW1lVHlwZSBhbmQgcmVxdWlyZXMKKyAgICBtaW1lLXR5cGVzLmJiY2xhc3MgdG8gY3JlYXRlIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zL21pbWVpbmZvLmNhY2hlCisgICAgIiIiCisKKyAgICBpZiBkLmdldFZhcigiZGF0YWRpciIpICsgIi9hcHBsaWNhdGlvbnMiIGluIHBhdGggYW5kIHBhdGguZW5kc3dpdGgoJy5kZXNrdG9wJykgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtaW1lLXhkZyIsIGQpOgorICAgICAgICBtaW1lX3R5cGVfZm91bmQgPSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZCgpLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgICAgICBpZiAnTWltZVR5cGUnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW1lX3R5cGVfZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBBdCBsZWFzdCBsaWJyZW9mZmljZSBpbnN0YWxscyBzeW1saW5rcyB3aXRoIGFic29sdXRlIHBhdGhzIHRoYXQgYXJlIGRhbmdsaW5nIGhlcmUuCisgICAgICAgICAgICAjIFdlIGNvdWxkIGltcGxlbWVudCBzb21lIG1hZ2ljIGJ1dCBmb3IgZmV3IChvbmUpIHJlY2lwZXMgaXQgaXMgbm90IHdvcnRoIHRoZSBlZmZvcnQgc28ganVzdCB3YXJuOgorICAgICAgICAgICAgd3N0ciA9ICIlcyBjYW5ub3Qgb3BlbiAlcyAtIGlzIGl0IGEgc3ltbGluayB3aXRoIGFic29sdXRlIHBhdGg/XG4iICUgKG5hbWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKQorICAgICAgICAgICAgd3N0ciArPSAiUGxlYXNlIGNoZWNrIGlmIChsaW5rZWQpIGZpbGUgY29udGFpbnMga2V5ICdNaW1lVHlwZScuXG4iCisgICAgICAgICAgICBwa2duYW1lID0gbmFtZQorICAgICAgICAgICAgaWYgbmFtZSA9PSBkLmdldFZhcignUE4nKToKKyAgICAgICAgICAgICAgICBwa2duYW1lID0gJyR7UE59JworICAgICAgICAgICAgd3N0ciArPSAiSWYgeWVzOiBhZGQgXCdpbmhlcnQgbWltZS14ZGdcJyBhbmQgXCdNSU1FX1hER19QQUNLQUdFUyArPSBcIiVzXCJcJyAvIGlmIG5vIGFkZCBcJ0lOU0FORV9TS0lQXyVzICs9IFwibWltZS14ZGdcIlwnIHRvIHJlY2lwZS4iICUgKHBrZ25hbWUsIHBrZ25hbWUpCisgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAibWltZS14ZGciLCB3c3RyKQorICAgICAgICBpZiBtaW1lX3R5cGVfZm91bmQ6CisgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAibWltZS14ZGciLCAicGFja2FnZSBjb250YWlucyBkZXNrdG9wIGZpbGUgd2l0aCBrZXkgJ01pbWVUeXBlJyBidXQgZG9lcyBub3QgaW5oZXJ0IG1pbWUteGRnOiAlcyBwYXRoICclcyciICUgXAorICAgICAgICAgICAgICAgICAgICAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQorCiBkZWYgcGFja2FnZV9xYV9jaGVja19saWJkaXIoZCk6CiAgICAgIiIiCiAgICAgQ2hlY2sgZm9yIHdyb25nIGxpYnJhcnkgaW5zdGFsbGF0aW9uIHBhdGhzLiBGb3IgaW5zdGFuY2UsIGNhdGNoCkBAIC0zNzMsMTEgKzQzNywxMCBAQAogICAgIGZvciBsaW5lIGluIHBoZHJzLnNwbGl0KCJcbiIpOgogICAgICAgICBpZiAiU1lNVEFCIiBpbiBsaW5lOgogICAgICAgICAgICAgaGFzX3N5bXMgPSBUcnVlCi0gICAgICAgIGlmICJHTlVfSEFTSCIgaW4gbGluZToKKyAgICAgICAgaWYgIkdOVV9IQVNIIiBvciAiRFRfTUlQU19YSEFTSCIgaW4gbGluZToKICAgICAgICAgICAgIHNhbmUgPSBUcnVlCi0gICAgICAgIGlmICJbbWlwczMyXSIgaW4gbGluZSBvciAiW21pcHM2NF0iIGluIGxpbmU6CisgICAgICAgIGlmICgiW21pcHMzMl0iIGluIGxpbmUgb3IgIlttaXBzNjRdIiBpbiBsaW5lKSBhbmQgZC5nZXRWYXIoJ1RDTElCQycpID09ICJtdXNsIjoKICAgICAgICAgICAgIHNhbmUgPSBUcnVlCi0KICAgICBpZiBoYXNfc3ltcyBhbmQgbm90IHNhbmU6CiAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJsZGZsYWdzIiwgIk5vIEdOVV9IQVNIIGluIHRoZSBFTEYgYmluYXJ5ICVzLCBkaWRuJ3QgcGFzcyBMREZMQUdTPyIgJSBwYXRoKQogCkBAIC04OTMsOSArOTU2LDkgQEAKICAgICBpZiAiJHtQTn0iIGluIGQuZ2V0VmFyKCJTUkNfVVJJIiwgRmFsc2UpOgogICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigic3JjLXVyaS1iYWQiLCAiJXM6IFNSQ19VUkkgdXNlcyBQTiBub3QgQlBOIiAlIHBuLCBkKQogCi0gICAgcG4gPSBkLmdldFZhcigiU1JDX1VSSSIpCi0gICAgaWYgcmUuc2VhcmNoKHIiZ2l0aHViXC5jb20vLisvLisvYXJjaGl2ZS8uKyIsIHBuKToKLSAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInNyYy11cmktYmFkIiwgIiVzOiBTUkNfVVJJIHVzZXMgdW5zdGFibGUgR2l0SHViIGFyY2hpdmVzIiAlIHBuLCBkKQorICAgIGZvciB1cmwgaW4gZC5nZXRWYXIoIlNSQ19VUkkiKS5zcGxpdCgpOgorICAgICAgICBpZiByZS5zZWFyY2gociJnaXRodWJcLmNvbS8uKy8uKy9hcmNoaXZlLy4rIiwgdXJsKToKKyAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJzcmMtdXJpLWJhZCIsICIlczogU1JDX1VSSSB1c2VzIHVuc3RhYmxlIEdpdEh1YiBhcmNoaXZlcyIgJSBwbiwgZCkKIAogCiAjIFRoZSBQQUNLQUdFIEZVTkMgdG8gc2NhbiBlYWNoIHBhY2thZ2UKQEAgLTkzNywxNCArMTAwMCwxMyBAQAogICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCiAgICAgcGFja2FnZXMgPSBzZXQoKGQuZ2V0VmFyKCdQQUNLQUdFUycpIG9yICcnKS5zcGxpdCgpKQogCi0gICAgY3BhdGggPSBvZS5jYWNoZWRwYXRoLkNhY2hlZFBhdGgoKQogICAgIGdsb2JhbCBwa2dmaWxlcwogICAgIHBrZ2ZpbGVzID0ge30KICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgogICAgICAgICBwa2dmaWxlc1twa2ddID0gW10KLSAgICAgICAgZm9yIHdhbGtyb290LCBkaXJzLCBmaWxlcyBpbiBjcGF0aC53YWxrKHBrZ2Rlc3QgKyAiLyIgKyBwa2cpOgorICAgICAgICBmb3Igd2Fsa3Jvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsob3MucGF0aC5qb2luKHBrZ2Rlc3QsIHBrZykpOgogICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgcGtnZmlsZXNbcGtnXS5hcHBlbmQod2Fsa3Jvb3QgKyBvcy5zZXAgKyBmaWxlKQorICAgICAgICAgICAgICAgIHBrZ2ZpbGVzW3BrZ10uYXBwZW5kKG9zLnBhdGguam9pbih3YWxrcm9vdCwgZmlsZSkpCiAKICAgICAjIG5vIHBhY2thZ2VzIHNob3VsZCBiZSBzY2FubmVkCiAgICAgaWYgbm90IHBhY2thZ2VzOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwppbmRleCBlYzE4YTNkLi43MmIwNWZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwpAQCAtMzkxLDExICszOTEsMTAgQEAKIAogCWlmIFsgLW4gIiR7RVhURVJOQUxfS0VSTkVMX0RFVklDRVRSRUV9IiBdOyB0aGVuCiAJCWR0YmNvdW50PTEKLQkJZm9yIERUQkZJTEUgaW4gJHtFWFRFUk5BTF9LRVJORUxfREVWSUNFVFJFRX0vKi5kdGI7IGRvCi0JCQlEVEI9YGJhc2VuYW1lICR7RFRCRklMRX1gCisJCWZvciBEVEIgaW4gJChmaW5kICIke0VYVEVSTkFMX0tFUk5FTF9ERVZJQ0VUUkVFfSIgXCggLW5hbWUgJyouZHRiJyAtbyAtbmFtZSAnKi5kdGJvJyBcKSAtcHJpbnRmICclUFxuJyB8IHNvcnQpOyBkbwogCQkJRFRCPSQoZWNobyAiJHtEVEJ9IiB8IHRyICcvJyAnXycpCiAJCQlEVEJTPSIke0RUQlN9ICR7RFRCfSIKLQkJCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9kdGIgJHsxfSAke0RUQn0gJHtEVEJGSUxFfQorCQkJZml0aW1hZ2VfZW1pdF9zZWN0aW9uX2R0YiAkezF9ICR7RFRCfSAiJHtFWFRFUk5BTF9LRVJORUxfREVWSUNFVFJFRX0vJHtEVEJ9IgogCQlkb25lCiAJZmkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwppbmRleCBlZDliY2ZhLi41YmM2MjcwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwpAQCAtMSw4ICsxLDI0IEBACiAjIHJlbW92ZSB0YXNrcyB0aGF0IG1vZGlmeSB0aGUgc291cmNlIHRyZWUgaW4gY2FzZSBleHRlcm5hbHNyYyBpcyBpbmhlcml0ZWQKLVNSQ1RSRUVDT1ZFUkVEVEFTS1MgKz0gImRvX2tlcm5lbF9jb25maWdtZSBkb192YWxpZGF0ZV9icmFuY2hlcyBkb19rZXJuZWxfY29uZmlnY2hlY2sgZG9fa2VybmVsX2NoZWNrb3V0IGRvX2ZldGNoIGRvX3VucGFjayBkb19wYXRjaCIKK1NSQ1RSRUVDT1ZFUkVEVEFTS1MgKz0gImRvX3ZhbGlkYXRlX2JyYW5jaGVzIGRvX2tlcm5lbF9jb25maWdjaGVjayBkb19rZXJuZWxfY2hlY2tvdXQgZG9fZmV0Y2ggZG9fdW5wYWNrIGRvX3BhdGNoIgogUEFUQ0hfR0lUX1VTRVJfRU1BSUwgPz0gImtlcm5lbC15b2N0b0BvZSIKIFBBVENIX0dJVF9VU0VSX05BTUUgPz0gIk9wZW5FbWJlZGRlZCIKIAorIyBUaGUgZGlzdHJvIG9yIGxvY2FsLmNvbmYgc2hvdWxkIHNldCB0aGlzLCBidXQgaWYgbm9ib2R5IGNhcmVzLi4uCitMSU5VWF9LRVJORUxfVFlQRSA/Pz0gInN0YW5kYXJkIgorCisjIEtNRVRBID89ICIiCitLQlJBTkNIID89ICJtYXN0ZXIiCitLTUFDSElORSA/PSAiJHtNQUNISU5FfSIKK1NSQ1JFVl9GT1JNQVQgPz0gIm1ldGFfbWFjaGluZSIKKworIyBMRVZFTFM6CisjICAgMDogbm8gcmVwb3J0aW5nCisjICAgMTogcmVwb3J0IG9wdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWVkLCBidXQgbm90IGluIHRoZSBmaW5hbCBjb25maWcKKyMgICAyOiByZXBvcnQgb3B0aW9ucyB0aGF0IGFyZSBub3QgaGFyZHdhcmUgcmVsYXRlZCwgYnV0IHNldCBieSBhIEJTUAorS0NPTkZfQVVESVRfTEVWRUwgPz0gIjEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPz0gIjAiCitLTUVUQV9BVURJVCA/PSAieWVzIgorCiAjIHJldHVybnMgbG9jYWwgKGFic29sdXRlKSBwYXRoIG5hbWVzIGZvciBhbGwgdmFsaWQgcGF0Y2hlcyBpbiB0aGUKICMgc3JjX3VyaQogZGVmIGZpbmRfcGF0Y2hlcyhkLHN1YmRpcik6CkBAIC0zMSw3ICs0Nyw3IEBACiAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzKSkKICAgICAgICAgaWYgZXh0IGFuZCBleHQgaW4gWyIuc2NjIiwgIi5jZmciXToKICAgICAgICAgICAgIHNvdXJjZXNfbGlzdC5hcHBlbmQocykKLSAgICAgICAgZWxpZiBiYXNlIGFuZCBiYXNlIGluICdkZWZjb25maWcnOgorICAgICAgICBlbGlmIGJhc2UgYW5kICdkZWZjb25maWcnIGluIGJhc2U6CiAgICAgICAgICAgICBzb3VyY2VzX2xpc3QuYXBwZW5kKHMpCiAKICAgICByZXR1cm4gc291cmNlc19saXN0CkBAIC04MywxMyArOTksNiBAQAogCQlmaQogCWZpCiAKLQltYWNoaW5lX2JyYW5jaD0iJHtAIGdldF9tYWNoaW5lX2JyYW5jaChkLCAiJHtLQlJBTkNIfSIgKX0iCi0JbWFjaGluZV9zcmNyZXY9IiR7U1JDUkVWX21hY2hpbmV9IgotCWlmIFsgLXogIiR7bWFjaGluZV9zcmNyZXZ9IiBdOyB0aGVuCi0JCSMgZmFsbGJhY2sgdG8gU1JDUkVWIGlmIGEgbm9uIG1hY2hpbmVfbWV0YSB0cmVlIGlzIGJlaW5nIGJ1aWx0Ci0JCW1hY2hpbmVfc3JjcmV2PSIke1NSQ1JFVn0iCi0JZmkKLQogCSMgSW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUga2VybmVsIGl0c2VsZjoKIAkjCiAJIyAgIGRlZmNvbmZpZzogJChvYmopL2NvbmYKQEAgLTE4Miw2ICsxOTEsMTQgQEAKIAkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiAJCQliYmZhdGFsX2xvZyAiQ291bGQgbm90IGxvY2F0ZSBCU1AgZGVmaW5pdGlvbiBmb3IgJHtLTUFDSElORX0vJHtMSU5VWF9LRVJORUxfVFlQRX0gYW5kIG5vIGRlZmNvbmZpZyB3YXMgcHJvdmlkZWQiCiAJCWZpCisKKwkJIyBpZiB0aGUgYnNwIGRlZmluaXRpb24gaGFzICJkZWZpbmUgS01FVEFfRVhURVJOQUxfQlNQIHQiLAorCQkjIHRoZW4gd2UgbmVlZCB0byBzZXQgYSBmbGFnIHRoYXQgd2lsbCBpbnN0cnVjdCB0aGUgbmV4dAorCQkjIHN0ZXBzIHRvIHVzZSB0aGUgQlNQIGFzIGJvdGggY29uZmlndXJhdGlvbiBhbmQgcGF0Y2hlcy4KKwkJZ3JlcCAtcSBLTUVUQV9FWFRFUk5BTF9CU1AgJGJzcF9kZWZpbml0aW9uCisJCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgorCQkgICAgS01FVEFfRVhURVJOQUxfQlNQUz0idCIKKwkJZmkKIAlmaQogCW1ldGFfZGlyPSQoa2dpdCAtLW1ldGEpCiAKQEAgLTE5NSw2ICsyMTIsMTMgQEAKIAkJZmkKIAlmaQogCisJIyBpZiBLTUVUQV9FWFRFUk5BTF9CU1BTIGhhcyBiZWVuIHNldCwgb3IgaXQgaGFzIGJlZW4gZGV0ZWN0ZWQgZnJvbQorCSMgdGhlIGJzcCBkZWZpbml0aW9uLCB0aGVuIHdlIGluamVjdCB0aGUgYnNwX2RlZmluaXRpb24gaW50byB0aGUKKwkjIHBhdGNoIHBoYXNlIGJlbG93LiAgd2UnbGwgcGlnZ3kgYmFjayBvbiB0aGUgc2NjcyB2YXJpYWJsZS4KKwlpZiBbIC1uICIke0tNRVRBX0VYVEVSTkFMX0JTUFN9IiBdOyB0aGVuCisJCXNjY3M9IiR7YnNwX2RlZmluaXRpb259ICR7c2Njc30iCisJZmkKKwogCSMgcnVuMjogb25seSBnZW5lcmF0ZSBwYXRjaGVzIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBwYXNzZWQgb24gdGhlIFNSQ19VUkkKIAllbGVtZW50cz0iYGVjaG8gLW4gJHtzY2NzfSAke3BhdGNoZXN9ICR7S0VSTkVMX0ZFQVRVUkVTfWAiCiAJaWYgWyAtbiAiJHtlbGVtZW50c30iIF07IHRoZW4KQEAgLTI5Myw3ICszMTcsNyBAQAogfQogZG9fa2VybmVsX2NoZWNrb3V0W2RpcnNdID0gIiR7U30iCiAKLWFkZHRhc2sga2VybmVsX2NoZWNrb3V0IGJlZm9yZSBkb19rZXJuZWxfbWV0YWRhdGEgYWZ0ZXIgZG9fdW5wYWNrCithZGR0YXNrIGtlcm5lbF9jaGVja291dCBiZWZvcmUgZG9fa2VybmVsX21ldGFkYXRhIGFmdGVyIGRvX3N5bWxpbmtfa2VybnNyYwogYWRkdGFzayBrZXJuZWxfbWV0YWRhdGEgYWZ0ZXIgZG9fdmFsaWRhdGVfYnJhbmNoZXMgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAogZG9fa2VybmVsX21ldGFkYXRhW2RlcGVuZHNdID0gImtlcm4tdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb192YWxpZGF0ZV9icmFuY2hlc1tkZXBlbmRzXSA9ICJrZXJuLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpAQCAtMzAxLDEwICszMjUsOSBAQAogZG9fa2VybmVsX2NvbmZpZ21lW2RlcGVuZHNdICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlsczpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fa2VybmVsX2NvbmZpZ21lW2RlcGVuZHNdICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2M6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2tlcm5lbF9jb25maWdtZVtkZXBlbmRzXSArPSAiYmMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgYmlzb24tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19rZXJuZWxfY29uZmlnbWVbZGVwZW5kc10gKz0gImtlcm4tdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19rZXJuZWxfY29uZmlnbWVbZGlyc10gKz0gIiR7U30gJHtCfSIKIGRvX2tlcm5lbF9jb25maWdtZSgpIHsKLQlzZXQgK2UKLQogCSMgdHJhbnNsYXRlIHRoZSBrY29uZmlnX21vZGUgaW50byBzb21ldGhpbmcgdGhhdCBtZXJnZV9jb25maWcuc2gKIAkjIHVuZGVyc3RhbmRzCiAJY2FzZSAke0tDT05GSUdfTU9ERX0gaW4KQEAgLTMzMCwxMyArMzUzLDIwIEBACiAJCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgZmluZCBjb25maWd1cmF0aW9uIHF1ZXVlICgke21ldGFfZGlyfS9jb25maWcucXVldWUpIgogCWZpCiAKLQlDRkxBR1M9IiR7Q0ZMQUdTfSAke1RPT0xDSEFJTl9PUFRJT05TfSIJSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENQUD0iJHtCVUlMRF9DUFB9IiBDQz0iJHtLRVJORUxfQ0N9IiBBUkNIPSR7QVJDSH0gbWVyZ2VfY29uZmlnLnNoIC1PICR7Qn0gJHtjb25maWdfZmxhZ3N9ICR7Y29uZmlnc30gPiAke21ldGFfZGlyfS9jZmcvbWVyZ2VfY29uZmlnX2J1aWxkLmxvZyAyPiYxCi0JaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgY29uZmlndXJlICR7S01BQ0hJTkV9LSR7TElOVVhfS0VSTkVMX1RZUEV9IgorCUNGTEFHUz0iJHtDRkxBR1N9ICR7VE9PTENIQUlOX09QVElPTlN9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ1BQPSIke0JVSUxEX0NQUH0iIENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIEFSQ0g9JHtBUkNIfSBtZXJnZV9jb25maWcuc2ggLU8gJHtCfSAke2NvbmZpZ19mbGFnc30gJHtjb25maWdzfSA+ICR7bWV0YV9kaXJ9L2NmZy9tZXJnZV9jb25maWdfYnVpbGQubG9nIDI+JjEKKwlpZiBbICQ/IC1uZSAwIC1vICEgLWYgJHtCfS8uY29uZmlnIF07IHRoZW4KKwkJYmJlcnJvciAiQ291bGQgbm90IGdlbmVyYXRlIGEgLmNvbmZpZyBmb3IgJHtLTUFDSElORX0tJHtMSU5VWF9LRVJORUxfVFlQRX0iCisJCWlmIFsgJHtLQ09ORl9BVURJVF9MRVZFTH0gLWd0IDEgXTsgdGhlbgorCQkJYmJmYXRhbF9sb2cgImBjYXQgJHttZXRhX2Rpcn0vY2ZnL21lcmdlX2NvbmZpZ19idWlsZC5sb2dgIgorCQllbHNlCisJCQliYmZhdGFsX2xvZyAiRGV0YWlscyBjYW4gYmUgZm91bmQgYXQ6ICR7U30vJHttZXRhX2Rpcn0vY2ZnL21lcmdlX2NvbmZpZ19idWlsZC5sb2ciCisJCWZpCiAJZmkKIAotCWVjaG8gIiMgR2xvYmFsIHNldHRpbmdzIGZyb20gbGludXggcmVjaXBlIiA+PiAke0J9Ly5jb25maWcKLQllY2hvICJDT05GSUdfTE9DQUxWRVJTSU9OPSJcIiR7TElOVVhfVkVSU0lPTl9FWFRFTlNJT059XCIgPj4gJHtCfS8uY29uZmlnCisJaWYgWyAhIC16ICIke0xJTlVYX1ZFUlNJT05fRVhURU5TSU9OfSIgXTsgdGhlbgorCQllY2hvICIjIEdsb2JhbCBzZXR0aW5ncyBmcm9tIGxpbnV4IHJlY2lwZSIgPj4gJHtCfS8uY29uZmlnCisJCWVjaG8gIkNPTkZJR19MT0NBTFZFUlNJT049IlwiJHtMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTn1cIiA+PiAke0J9Ly5jb25maWcKKwlmaQogfQogCiBhZGR0YXNrIGtlcm5lbF9jb25maWdtZSBiZWZvcmUgZG9fY29uZmlndXJlIGFmdGVyIGRvX3BhdGNoCkBAIC0zNTUsNiArMzg1LDcgQEAKIAogICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgZW52WydQQVRIJ10gPSAiJXM6JXMlcyIgJSAoZC5nZXRWYXIoJ1BBVEgnKSwgcywgIi9zY3JpcHRzL3V0aWwvIikKKyAgICBlbnZbJ0xEJ10gPSAiJHtLRVJORUxfTER9IgogCiAgICAgdHJ5OgogICAgICAgICBjb25maWdzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzY2MnLCAnLS1jb25maWdzJywgJy1vJywgcyArICcvLmtlcm5lbC1tZXRhJ10sIGVudj1lbnYpLmRlY29kZSgndXRmLTgnKQpAQCAtNDU4LDQgKzQ4OSwxNSBAQAogICAgICMgSWYgZGlmZmNvbmZpZyBpcyBhdmFpbGFibGUsIGVuc3VyZSBpdCBydW5zIGFmdGVyIGtlcm5lbF9jb25maWdtZQogICAgIGlmICdkb19kaWZmY29uZmlnJyBpbiBkOgogICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCdkb19kaWZmY29uZmlnJywgTm9uZSwgJ2RvX2tlcm5lbF9jb25maWdtZScsIGQpCisKKyAgICBleHRlcm5hbHNyYyA9IGQuZ2V0VmFyKCdFWFRFUk5BTFNSQycpCisgICAgaWYgZXh0ZXJuYWxzcmM6CisgICAgICAgICMgSWYgd2UgZGVsdGFzayBkb19wYXRjaCwgZG9fa2VybmVsX2NvbmZpZ21lIGlzIGxlZnQgd2l0aG91dAorICAgICAgICAjIGRlcGVuZGVuY2llcyBhbmQgcnVucyB0b28gZWFybHkKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19rZXJuZWxfY29uZmlnbWUnLCAnZGVwcycsIChkLmdldFZhckZsYWcoJ2RvX2tlcm5lbF9jb25maWdtZScsICdkZXBzJywgRmFsc2UpIG9yIFtdKSArIFsnZG9fdW5wYWNrJ10pCiB9CisKKyMgZXh0cmEgdGFza3MKK2FkZHRhc2sga2VybmVsX3ZlcnNpb25fc2FuaXR5X2NoZWNrIGFmdGVyIGRvX2tlcm5lbF9tZXRhZGF0YSBkb19rZXJuZWxfY2hlY2tvdXQgYmVmb3JlIGRvX2NvbXBpbGUKK2FkZHRhc2sgdmFsaWRhdGVfYnJhbmNoZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX2tlcm5lbF9jaGVja291dAorYWRkdGFzayBrZXJuZWxfY29uZmlnY2hlY2sgYWZ0ZXIgZG9fY29uZmlndXJlIGJlZm9yZSBkb19jb21waWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCmluZGV4IGViY2I3OWEuLmE3MjQ2NDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCkBAIC0yOTQsMTQgKzI5NCwxMCBAQAogCQkjIGtlcm5lbCBzb3VyY2VzIGRvIG5vdCB1c2UgZG9fdW5wYWNrLCBzbyBTT1VSQ0VfREFURV9FUE9DSCBtYXkgbm90CiAJCSMgYmUgc2V0Li4uLgogCQlpZiBbICIke1NPVVJDRV9EQVRFX0VQT0NIfSIgPSAiIiAtbyAiJHtTT1VSQ0VfREFURV9FUE9DSH0iID0gIjAiIF07IHRoZW4KLQkJCW9sZGRpcj1gcHdkYAotCQkJY2QgJHtTfQotCQkJU09VUkNFX0RBVEVfRVBPQ0g9YGdpdCBsb2cgIC0xIC0tcHJldHR5PSVjdGAKLQkJCSMgZ2l0IHJlcG8gbm90IGd1YXJhbnRlZWQsIHNvIGZhbGwgYmFjayB0byBSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUwotCQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCQkJU09VUkNFX0RBVEVfRVBPQ0g9JHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30KLQkJCWZpCi0JCQljZCAkb2xkZGlyCisJCQkjIFRoZSBzb3VyY2UgZGlyZWN0b3J5IGlzIG5vdCBuZWNlc3NhcmlseSBhIGdpdCByZXBvc2l0b3J5LCBzbyB3ZQorCQkJIyBzcGVjaWZ5IHRoZSBnaXQtZGlyIHRvIGVuc3VyZSB0aGF0IGdpdCBkb2VzIG5vdCBxdWVyeSBhCisJCQkjIHJlcG9zaXRvcnkgaW4gYW55IHBhcmVudCBkaXJlY3RvcnkuCisJCQlTT1VSQ0VfREFURV9FUE9DSD1gZ2l0IC0tZ2l0LWRpcj0iJHtTfS8uZ2l0IiBsb2cgLTEgLS1wcmV0dHk9JWN0IDI+L2Rldi9udWxsIHx8IGVjaG8gIiR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9ImAKIAkJZmkKIAogCQl0cz1gTENfQUxMPUMgZGF0ZSAtZCBAJFNPVVJDRV9EQVRFX0VQT0NIYApAQCAtNTA4LDcgKzUwNCw3IEBACiAJOgogfQogCi1LRVJORUxfQ09ORklHX0NPTU1BTkQgPz0gIm9lX3J1bm1ha2VfY2FsbCAtQyAke1N9IENDPSIke0tFUk5FTF9DQ30iIE89JHtCfSBvbGRkZWZjb25maWcgfHwgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSBDQz0iJHtLRVJORUxfQ0N9IiBvbGRub2NvbmZpZyIKK0tFUk5FTF9DT05GSUdfQ09NTUFORCA/PSAib2VfcnVubWFrZV9jYWxsIC1DICR7U30gQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgTz0ke0J9IG9sZGRlZmNvbmZpZyB8fCBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9IENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIG9sZG5vY29uZmlnIgogCiBweXRob24gY2hlY2tfb2xkZXN0X2tlcm5lbCgpIHsKICAgICBvbGRlc3Rfa2VybmVsID0gZC5nZXRWYXIoJ09MREVTVF9LRVJORUwnKQpAQCAtNTcwLDkgKzU2Niw5IEBACiAjIEFsbG93IG1hY2hpbmVzIHRvIG92ZXJyaWRlIHRoaXMgZGVwZW5kZW5jeSBpZiBrZXJuZWwgaW1hZ2UgZmlsZXMgYXJlCiAjIG5vdCB3YW50ZWQgaW4gaW1hZ2VzIGFzIHN0YW5kYXJkCiBSREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPz0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UiCi1QS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlLSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKK1BLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoZC5nZXRWYXIoJ0tFUk5FTF9WRVJTSU9OJykpfSIKIFJERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgKz0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdLRVJORUxfSU1BR0VUWVBFJywgJ3ZtbGludXgnLCAnJHtLRVJORUxfUEFDS0FHRV9OQU1FfS12bWxpbnV4JywgJycsIGQpfSIKLVBLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJHtLRVJORUxfVkVSU0lPTn0nKX0iCitQS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoZC5nZXRWYXIoJ0tFUk5FTF9WRVJTSU9OJykpfSIKIFJQUk9WSURFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgKz0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tJHtLRVJORUxfVkVSU0lPTn0iCiBBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9ID0gIjEiCiBBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiMSIKQEAgLTYxMyw2ICs2MDksOSBAQAogCWlmIFsgLWYgLi4vLi4vLi4vdm1saW51ei5iaW4gXTsgdGhlbgogCQlsbiAtc2YgLi4vLi4vLi4vdm1saW51ei5iaW4KIAlmaQorCWlmIFsgLWYgLi4vLi4vLi4vdm1saW51eC42NCBdOyB0aGVuCisJCWxuIC1zZiAuLi8uLi8uLi92bWxpbnV4LjY0CisJZmkKIH0KIGFkZHRhc2sga2VybmVsX2xpbmtfaW1hZ2VzIGFmdGVyIGRvX2NvbXBpbGUgYmVmb3JlIGRvX3N0cmlwCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbHNyYy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsc3JjLmJiY2xhc3MKaW5kZXggNjc1ZDQwZS4uYTk1MWJhMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsc3JjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsc3JjLmJiY2xhc3MKQEAgLTEsNyArMSw3IEBACiBTID0gIiR7U1RBR0lOR19LRVJORUxfRElSfSIKIGRlbHRhc2sgZG9fZmV0Y2gKIGRlbHRhc2sgZG9fdW5wYWNrCi1kb19wYXRjaFtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCitkb19wYXRjaFtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiBkb19wYXRjaFtub2V4ZWNdID0gIjEiCiBkb19wYWNrYWdlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wb3B1bGF0ZV9zeXNyb290IgogS0VSTkVMX1ZFUlNJT04gPSAiJHtAZ2V0X2tlcm5lbHZlcnNpb25fZmlsZSgiJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0iKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUzNTFiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGxfcm9vdD0ke0R9IGluc3RhbGwKLQlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2xkLnNvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYKLQlpbnN0YWxsIC1kICR7RH0ke2xvY2FsZWRpcn0KLQltYWtlIC1mICR7V09SS0RJUn0vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIElOPSIke1N9L2xvY2FsZWRhdGEvU1VQUE9SVEVEIiBPVVQ9IiR7V09SS0RJUn0vU1VQUE9SVEVEIgotCSMgZ2V0IHJpZCBvZiBzb21lIGJyb2tlbiBmaWxlcy4uLgotCWZvciBpIGluICR7R0xJQkNfQlJPS0VOX0xPQ0FMRVN9OyBkbwotCQlzZWQgLWkgIi8kaS9kIiAke1dPUktESVJ9L1NVUFBPUlRFRAotCWRvbmUKLQlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9ycGMKLQlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQlybSAtcmYgJHtEfSR7bGliZXhlY2Rpcn0vZ2V0Y29uZgotfQotCi1kZWYgZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcsICdwcGMtZWZkJyBdOgotICAgICAgICByZXR1cm4gIi0td2l0aG91dC1mcCIKLSAgICByZXR1cm4gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKLSAgICAgICAgcGtncyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICAgICAgYnBuID0gZC5nZXRWYXIoJ0JQTicpCi0gICAgICAgIHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpIG9yICIiCi0gICAgICAgICMgU2V0IHRoZSBiYXNlIHBhY2thZ2UuLi4KLSAgICAgICAgZC5zZXRWYXIoJ1BLR18nICsgcHJlZml4ICsgYnBuLCBwcmVmaXggKyAnbGliYzYnKQotICAgICAgICBsaWJjcHJlZml4ID0gcHJlZml4ICsgYnBuICsgJy0nCi0gICAgICAgIGZvciBwIGluIHBrZ3M6Ci0gICAgICAgICAgICAjIEFuZCBhbGwgdGhlIHN1YnBhY2thZ2VzLgotICAgICAgICAgICAgaWYgcC5zdGFydHN3aXRoKGxpYmNwcmVmaXgpOgotICAgICAgICAgICAgICAgIHJlbmFtZWQgPSBwLnJlcGxhY2UoYnBuLCAnbGliYzYnLCAxKQotICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdQS0dfJyArIHAsIHJlbmFtZWQpCi0gICAgICAgICMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgLWRiZyBwYWNrYWdlCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUFJPVklERVNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JDT05GTElDVFNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRVBMQUNFU18nICsgbGliY3ByZWZpeCArICdkYmcnLCAnICcgKyBwcmVmaXggKyAnbGliYy1kYmcnKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcwppbmRleCBkZTgxNmJjLi5kZTNiNDI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcwpAQCAtMjQ4LDYgKzI0OCw3IEBACiAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICIgLS11aW50MzItYWxpZ249NCAtLWJpZy1lbmRpYW4gIiwgICAgXAogICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICBcCisgICAgICAgICAgICAgICAgInBvd2VycGM2NGxlIjogIiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiLCAgXAogICAgICAgICAgICAgICAgICJtaXBzIjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgIm1pcHNpc2EzMnI2IjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCA2NDhhNGQ3Li5mOTAxNzZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCkBAIC0yNTIsNyArMjUyLDcgQEAKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGNhbm9uaWNhbCAoU1BEWCkgZm9ybSBvZiB0aGUgbGljZW5zZSBpZiBhdmFpbGFibGUgKHNvIEdQTHYzCiAgICAgYmVjb21lcyBHUEwtMy4wKSwgZm9yIHRoZSBsaWNlbnNlIG5hbWVkICdYKycsIHJldHVybiBjYW5vbmljYWwgZm9ybSBvZgotICAgICdYJyBpZiBhdmFpbGFiZWwgYW5kIHRoZSB0YWlsaW5nICcrJyAoc28gR1BMdjMrIGJlY29tZXMgR1BMLTMuMCspLCAKKyAgICAnWCcgaWYgYXZhaWxhYmxlIGFuZCB0aGUgdGFpbGluZyAnKycgKHNvIEdQTHYzKyBiZWNvbWVzIEdQTC0zLjArKSwKICAgICBvciB0aGUgcGFzc2VkIGxpY2Vuc2UgaWYgdGhlcmUgaXMgbm8gY2Fub25pY2FsIGZvcm0uCiAgICAgIiIiCiAgICAgbGljID0gZC5nZXRWYXJGbGFnKCdTUERYTElDRU5TRU1BUCcsIGxpY2Vuc2UpIG9yICIiCkBAIC0yNjIsMTAgKzI2MiwyOSBAQAogICAgICAgICAgICAgbGljICs9ICcrJwogICAgIHJldHVybiBsaWMgb3IgbGljZW5zZQogCitkZWYgYXZhaWxhYmxlX2xpY2Vuc2VzKGQpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgYXZhaWxhYmxlIGxpY2Vuc2VzIGJ5IHNlYXJjaGluZyB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5CisgICAgQ09NTU9OX0xJQ0VOU0VfRElSIGFuZCBMSUNFTlNFX1BBVEguCisgICAgIiIiCisgICAgbGljX2RpcnMgPSAoKGQuZ2V0VmFyKCdDT01NT05fTElDRU5TRV9ESVInKSBvciAnJykgKyAnICcgKworICAgICAgICAgICAgICAgIChkLmdldFZhcignTElDRU5TRV9QQVRIJykgb3IgJycpKS5zcGxpdCgpCisKKyAgICBsaWNlbnNlcyA9IFtdCisgICAgZm9yIGxpY19kaXIgaW4gbGljX2RpcnM6CisgICAgICAgIGxpY2Vuc2VzICs9IG9zLmxpc3RkaXIobGljX2RpcikKKworICAgIGxpY2Vuc2VzID0gc29ydGVkKGxpY2Vuc2VzKQorICAgIHJldHVybiBsaWNlbnNlcworCisjIE9ubHkgZGV0ZXJtaW5lIHRoZSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgbGljZW5zZXMgb25jZS4gVGhpcyBhc3N1bWVzIHRoYXQgYW55CisjIGFkZGl0aW9ucyB0byBMSUNFTlNFX1BBVEggaGF2ZSBiZWVuIGRvbmUgYmVmb3JlIHRoaXMgZmlsZSBpcyBwYXJzZWQuCitBVkFJTEFCTEVfTElDRU5TRVMgOj0gIiR7QCcgJy5qb2luKGF2YWlsYWJsZV9saWNlbnNlcyhkKSl9IgorCiBkZWYgZXhwYW5kX3dpbGRjYXJkX2xpY2Vuc2VzKGQsIHdpbGRjYXJkX2xpY2Vuc2VzKToKICAgICAiIiIKLSAgICBSZXR1cm4gYWN0dWFsIHNwZHggZm9ybWF0IGxpY2Vuc2UgbmFtZXMgaWYgd2lsZGNhcmQgdXNlZC4gV2UgZXhwYW5kCi0gICAgd2lsZGNhcmRzIGZyb20gU1BEWExJQ0VOU0VNQVAgZmxhZ3MgYW5kIFNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTIHZhbHVlcy4KKyAgICBSZXR1cm4gYWN0dWFsIHNwZHggZm9ybWF0IGxpY2Vuc2UgbmFtZXMgaWYgd2lsZGNhcmRzIGFyZSB1c2VkLiBXZSBleHBhbmQKKyAgICB3aWxkY2FyZHMgZnJvbSBTUERYTElDRU5TRU1BUCBmbGFncyBhbmQgQVZBSUxBQkxFX0xJQ0VOU0VTLgogICAgICIiIgogICAgIGltcG9ydCBmbm1hdGNoCiAgICAgbGljZW5zZXMgPSB3aWxkY2FyZF9saWNlbnNlc1s6XQpAQCAtMjc0LDcgKzI5Myw3IEBACiAgICAgICAgIHNwZHhmbGFncyA9IGZubWF0Y2guZmlsdGVyKHNwZHhtYXBrZXlzLCB3bGRfbGljKQogICAgICAgICBsaWNlbnNlcyArPSBbZC5nZXRWYXJGbGFnKCdTUERYTElDRU5TRU1BUCcsIGZsYWcpIGZvciBmbGFnIGluIHNwZHhmbGFnc10KIAotICAgIHNwZHhfbGljcyA9IChkLmdldFZhcignU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMnLCBGYWxzZSkgb3IgJycpLnNwbGl0KCkKKyAgICBzcGR4X2xpY3MgPSBkLmdldFZhcignQVZBSUxBQkxFX0xJQ0VOU0VTJykuc3BsaXQoKQogICAgIGZvciB3bGRfbGljIGluIHdpbGRjYXJkX2xpY2Vuc2VzOgogICAgICAgICBsaWNlbnNlcyArPSBmbm1hdGNoLmZpbHRlcihzcGR4X2xpY3MsIHdsZF9saWMpCiAKQEAgLTI5MSwxNSArMzEwLDIxIEBACiAgICAgIyBIYW5kbGVzIGFuICJvciIgb3IgdHdvIGxpY2Vuc2Ugc2V0cyBwcm92aWRlZCBieQogICAgICMgZmxhdHRlbmVkX2xpY2Vuc2VzKCksIHBpY2sgb25lIHRoYXQgd29ya3MgaWYgcG9zc2libGUuCiAgICAgZGVmIGNob29zZV9saWNfc2V0KGEsIGIpOgotICAgICAgICByZXR1cm4gYSBpZiBhbGwob2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsIGxpYyksIAorICAgICAgICByZXR1cm4gYSBpZiBhbGwob2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsIGxpYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF93YW50X2xpY2Vuc2VzKSBmb3IgbGljIGluIGEpIGVsc2UgYgogCiAgICAgdHJ5OgogICAgICAgICBsaWNlbnNlcyA9IG9lLmxpY2Vuc2UuZmxhdHRlbmVkX2xpY2Vuc2VzKGxpY2Vuc2UsIGNob29zZV9saWNfc2V0KQogICAgIGV4Y2VwdCBvZS5saWNlbnNlLkxpY2Vuc2VFcnJvciBhcyBleGM6CiAgICAgICAgIGJiLmZhdGFsKCclczogJXMnICUgKGQuZ2V0VmFyKCdQJyksIGV4YykpCi0gICAgcmV0dXJuIGFueShub3Qgb2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsIGwpLCBcCi0gICAgICAgICAgICAgICBkb250X3dhbnRfbGljZW5zZXMpIGZvciBsIGluIGxpY2Vuc2VzKQorCisgICAgaW5jb21wYXRpYmxlX2xpYyA9IFtdCisgICAgZm9yIGwgaW4gbGljZW5zZXM6CisgICAgICAgIGxpY2Vuc2UgPSBjYW5vbmljYWxfbGljZW5zZShkLCBsKQorICAgICAgICBpZiBub3Qgb2UubGljZW5zZS5saWNlbnNlX29rKGxpY2Vuc2UsIGRvbnRfd2FudF9saWNlbnNlcyk6CisgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljLmFwcGVuZChsaWNlbnNlKQorCisgICAgcmV0dXJuIHNvcnRlZChpbmNvbXBhdGlibGVfbGljKQogCiBkZWYgaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgZG9udF93YW50X2xpY2Vuc2VzLCBwYWNrYWdlPU5vbmUpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzCmluZGV4IGI1Mzk5YjYuLmE4YzcyZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2VfaW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlX2ltYWdlLmJiY2xhc3MKQEAgLTUxLDggKzUxLDkgQEAKICAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQocGtnX2RpYyk6CiAgICAgICAgICAgICBpZiBiYWRfbGljZW5zZXMgYW5kIHBrZyBub3QgaW4gd2hpdGVsaXN0OgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5jb21wYXRpYmxlX3BrZ19saWNlbnNlKGQsIGJhZF9saWNlbnNlcywgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlBhY2thZ2UgJXMgaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlICVzIGFuZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlLiIgJShwa2csIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKSkKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgPSBpbmNvbXBhdGlibGVfcGtnX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGljZW5zZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiUGFja2FnZSAlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlIGJlY2F1c2UgaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJShwa2csICcgJy5qb2luKGxpY2Vuc2VzKSkpCiAgICAgICAgICAgICAgICAgICAgIChwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSwgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdKSA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIG9lLmxpY2Vuc2UubWFuaWZlc3RfbGljZW5zZXMocGtnX2RpY1twa2ddWyJMSUNFTlNFIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICBiYWRfbGljZW5zZXMsIGNhbm9uaWNhbF9saWNlbnNlLCBkKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKaW5kZXggYzBmYmYyNi4uZWMwZTA1NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCkBAIC0xLDI3ICsxLDMxIEBACi1kZWYgZ2V0X211c2xfbG9hZGVyKGQpOgorZGVmIGdldF9tdXNsX2xvYWRlcl9hcmNoKGQpOgogICAgIGltcG9ydCByZQotICAgIGR5bmFtaWNfbG9hZGVyID0gTm9uZQorICAgIGxkc29fYXJjaCA9IE5vbmUKIAogICAgIHRhcmdldGFyY2ggPSBkLmdldFZhcigiVEFSR0VUX0FSQ0giKQogICAgIGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgibWljcm9ibGF6ZSIpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnJywgJ2VsJyAsZCl9LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJtaWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdlbCcgLGQpfSIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgibWlwcyIpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pcHMke0FCSUVYVEVOU0lPTn0ke01JUFNQS0dTRlhfQllURX0ke01JUFNQS0dTRlhfUjZ9JHtNSVBTUEtHU0ZYX0VORElBTn0ke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJtaXBzJHtBQklFWFRFTlNJT059JHtNSVBTUEtHU0ZYX0JZVEV9JHtNSVBTUEtHU0ZYX1I2fSR7TUlQU1BLR1NGWF9FTkRJQU59JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfSIKICAgICBlbGlmIHRhcmdldGFyY2ggPT0gInBvd2VycGMiOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGMke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJwb3dlcnBjJHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfSIKICAgICBlbGlmIHRhcmdldGFyY2ggPT0gInBvd2VycGM2NCI6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtcG93ZXJwYzY0LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJwb3dlcnBjNjQiCiAgICAgZWxpZiB0YXJnZXRhcmNoID09ICJ4ODZfNjQiOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXg4Nl82NC5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAieDg2XzY0IgogICAgIGVsaWYgcmUuc2VhcmNoKCJpLjg2IiwgdGFyZ2V0YXJjaCk6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtaTM4Ni5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAiaTM4NiIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgiYXJtIik6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYXJtJHtBUk1QS0dTRlhfRU5ESUFOfSR7QVJNUEtHU0ZYX0VBQkl9LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJhcm0ke0FSTVBLR1NGWF9FTkRJQU59JHtBUk1QS0dTRlhfRUFCSX0iCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoImFhcmNoNjQiKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1hYXJjaDY0JHtBUk1QS0dTRlhfRU5ESUFOXzY0fS5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAiYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0iCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoInJpc2N2NjQiKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1yaXNjdjY0JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgotICAgIHJldHVybiBkeW5hbWljX2xvYWRlcgorICAgICAgICBsZHNvX2FyY2ggPSAicmlzY3Y2NCR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0iCisgICAgcmV0dXJuIGxkc29fYXJjaAorCitkZWYgZ2V0X211c2xfbG9hZGVyKGQpOgorICAgIGltcG9ydCByZQorICAgIHJldHVybiAiL2xpYi9sZC1tdXNsLSIgKyBnZXRfbXVzbF9sb2FkZXJfYXJjaChkKSArICIuc28uMSIKIAogZGVmIGdldF9nbGliY19sb2FkZXIoZCk6CiAgICAgaW1wb3J0IHJlCkBAIC00MSw3ICs0NSw3IEBACiAgICAgZWxpZiByZS5zZWFyY2goImkuODYiLCB0YXJnZXRhcmNoKToKICAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXguc28uMiIKICAgICBlbGlmIHRhcmdldGFyY2ggPT0gImFybSI6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LnNvLjMiCisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4JHtAWyctYXJtaGYnLCAnJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4zIgogICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJhYXJjaDY0Iik6CiAgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LWFhcmNoNjQke0FSTVBLR1NGWF9FTkRJQU5fNjR9LnNvLjEiCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoInJpc2N2NjQiKToKQEAgLTYyLDQgKzY2LDUgQEAKIAogZ2V0X2xpbnV4bG9hZGVyW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfbGludXhsb2FkZXIoZCl9IgogZ2V0X211c2xfbG9hZGVyW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfbXVzbF9sb2FkZXIoZCl9IgorZ2V0X211c2xfbG9hZGVyX2FyY2hbdmFyZGVwdmFsdWVdID0gIiR7QGdldF9tdXNsX2xvYWRlcl9hcmNoKGQpfSIKIGdldF9nbGliY19sb2FkZXJbdmFyZGVwdmFsdWVdID0gIiR7QGdldF9nbGliY19sb2FkZXIoZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21hbnBhZ2VzLmJiY2xhc3MKaW5kZXggNTBjMjU0Ny4uMWU2Njc4MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzCkBAIC0xOCw4ICsxOCwxNSBAQAogCQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KIAkJCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3FlbXUtdXNlcm1vZGUnLCAndHJ1ZScsJ2ZhbHNlJywgZCl9OyB0aGVuCiAJCQkJc2VkICJzOlwoXHNcKS86XDEkRC86ZyIgJEQke3N5c2NvbmZkaXJ9L21hbl9kYi5jb25mIHwgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vbWFuZGInKX0gLUMgLSAtdSAtcSAkRCR7bWFuZGlyfQorCQkJCWNob3duIC1SIHJvb3Q6cm9vdCAkRCR7bWFuZGlyfQogCQkJCW1rZGlyIC1wICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4KLQkJCQltdiAkRCR7bWFuZGlyfS9pbmRleC5kYiAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuCisJCQkJY2QgJEQke21hbmRpcn0KKwkJCQlmaW5kIC4gLW5hbWUgaW5kZXguZGIgfCB3aGlsZSByZWFkIGluZGV4OyBkbworCQkJCQlta2RpciAtcCAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuLyQoZGlybmFtZSAke2luZGV4fSkKKwkJCQkJbXYgJHtpbmRleH0gJEQke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL21hbi8ke2luZGV4fQorCQkJCQljaG93biBtYW46bWFuICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4vJHtpbmRleH0KKwkJCQlkb25lCisJCQkJY2QgLQogCQkJZWxzZQogCQkJCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290ICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfQogCQkJZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCmluZGV4IGVmYTYyMzQuLjA2MDM0ZTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcwpAQCAtMTIsOCArMTIsOSBAQAogZGVmIG5vcHJlZml4KHZhciwgZCk6CiAgICAgcmV0dXJuIGQuZ2V0VmFyKHZhcikucmVwbGFjZShkLmdldFZhcigncHJlZml4JykgKyAnLycsICcnLCAxKQogCitNRVNPTl9CVUlMRFRZUEUgPz0gInBsYWluIgogTUVTT05PUFRTID0gIiAtLXByZWZpeCAke3ByZWZpeH0gXAotICAgICAgICAgICAgICAtLWJ1aWxkdHlwZSBwbGFpbiBcCisgICAgICAgICAgICAgIC0tYnVpbGR0eXBlICR7TUVTT05fQlVJTERUWVBFfSBcCiAgICAgICAgICAgICAgIC0tYmluZGlyICR7QG5vcHJlZml4KCdiaW5kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLXNiaW5kaXIgJHtAbm9wcmVmaXgoJ3NiaW5kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLWRhdGFkaXIgJHtAbm9wcmVmaXgoJ2RhdGFkaXInLCBkKX0gXApAQCAtMjQsNyArMjUsOCBAQAogICAgICAgICAgICAgICAtLWluZm9kaXIgJHtAbm9wcmVmaXgoJ2luZm9kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLXN5c2NvbmZkaXIgJHtzeXNjb25mZGlyfSBcCiAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpciAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSAiCisgICAgICAgICAgICAgIC0tc2hhcmVkc3RhdGVkaXIgJHtzaGFyZWRzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAtLXdyYXAtbW9kZSBub2Rvd25sb2FkIgogCiBFWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIApAQCAtNDMsNyArNDUsNyBAQAogICAgIGFyY2ggPSBkLmdldFZhcih2YXIpCiAgICAgaWYgYXJjaCA9PSAncG93ZXJwYyc6CiAgICAgICAgIHJldHVybiAncHBjJwotICAgIGVsaWYgYXJjaCA9PSAncG93ZXJwYzY0JzoKKyAgICBlbGlmIGFyY2ggPT0gJ3Bvd2VycGM2NCcgb3IgYXJjaCA9PSAncG93ZXJwYzY0bGUnOgogICAgICAgICByZXR1cm4gJ3BwYzY0JwogICAgIGVsaWYgYXJjaCA9PSAnYXJtZWInOgogICAgICAgICByZXR1cm4gJ2FybScKQEAgLTU1LDExICs1NywyMCBAQAogICAgICAgICByZXR1cm4gJ21pcHM2NCcKICAgICBlbGlmIHJlLm1hdGNoKHIiaVszLTZdODYiLCBhcmNoKToKICAgICAgICAgcmV0dXJuICJ4ODYiCi0gICAgZWxpZiBhcmNoID09ICJtaWNyb2JsYXplZWwiIG9yIGFyY2ggPT0gIm1pY3JvYmxhemVlYiI6CisgICAgZWxpZiBhcmNoID09ICJtaWNyb2JsYXplZWwiOgogICAgICAgICByZXR1cm4gIm1pY3JvYmxhemUiCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGFyY2gKIAorIyBNYXAgb3VyIE9TIHZhbHVlcyB0byB3aGF0IE1lc29uIGV4cGVjdHM6CisjIGh0dHBzOi8vbWVzb25idWlsZC5jb20vUmVmZXJlbmNlLXRhYmxlcy5odG1sI29wZXJhdGluZy1zeXN0ZW0tbmFtZXMKK2RlZiBtZXNvbl9vcGVyYXRpbmdfc3lzdGVtKHZhciwgZCk6CisgICAgb3MgPSBkLmdldFZhcih2YXIpCisgICAgaWYgIm1pbmd3IiBpbiBvczoKKyAgICAgICAgcmV0dXJuICJ3aW5kb3dzIgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBvcworCiBkZWYgbWVzb25fZW5kaWFuKHByZWZpeCwgZCk6CiAgICAgYXJjaCwgb3MgPSBkLmdldFZhcihwcmVmaXggKyAiX0FSQ0giKSwgZC5nZXRWYXIocHJlZml4ICsgIl9PUyIpCiAgICAgc2l0ZWRhdGEgPSBzaXRlaW5mb19kYXRhX2Zvcl9tYWNoaW5lKGFyY2gsIG9zLCBkKQpAQCAtODAsNyArOTEsNiBAQAogY3BwID0gJHtAbWVzb25fYXJyYXkoJ0NYWCcsIGQpfQogYXIgPSAke0BtZXNvbl9hcnJheSgnQVInLCBkKX0KIG5tID0gJHtAbWVzb25fYXJyYXkoJ05NJywgZCl9Ci1sZCA9ICR7QG1lc29uX2FycmF5KCdMRCcsIGQpfQogc3RyaXAgPSAke0BtZXNvbl9hcnJheSgnU1RSSVAnLCBkKX0KIHJlYWRlbGYgPSAke0BtZXNvbl9hcnJheSgnUkVBREVMRicsIGQpfQogcGtnY29uZmlnID0gJ3BrZy1jb25maWcnCkBAIC05NSwxMyArMTA1LDEzIEBACiBndGtkb2NfZXhlX3dyYXBwZXIgPSAnJHtCfS9ndGtkb2MtcWVtdXdyYXBwZXInCiAKIFtob3N0X21hY2hpbmVdCi1zeXN0ZW0gPSAnJHtIT1NUX09TfScKK3N5c3RlbSA9ICcke0BtZXNvbl9vcGVyYXRpbmdfc3lzdGVtKCdIT1NUX09TJywgZCl9JwogY3B1X2ZhbWlseSA9ICcke0BtZXNvbl9jcHVfZmFtaWx5KCdIT1NUX0FSQ0gnLCBkKX0nCiBjcHUgPSAnJHtIT1NUX0FSQ0h9JwogZW5kaWFuID0gJyR7QG1lc29uX2VuZGlhbignSE9TVCcsIGQpfScKIAogW3RhcmdldF9tYWNoaW5lXQotc3lzdGVtID0gJyR7VEFSR0VUX09TfScKK3N5c3RlbSA9ICcke0BtZXNvbl9vcGVyYXRpbmdfc3lzdGVtKCdUQVJHRVRfT1MnLCBkKX0nCiBjcHVfZmFtaWx5ID0gJyR7QG1lc29uX2NwdV9mYW1pbHkoJ1RBUkdFVF9BUkNIJywgZCl9JwogY3B1ID0gJyR7VEFSR0VUX0FSQ0h9JwogZW5kaWFuID0gJyR7QG1lc29uX2VuZGlhbignVEFSR0VUJywgZCl9JwpAQCAtMTExLDYgKzEyMSwxMCBAQAogQ09ORklHVVJFX0ZJTEVTID0gIm1lc29uLmJ1aWxkIgogCiBtZXNvbl9kb19jb25maWd1cmUoKSB7CisgICAgIyBNZXNvbiByZXF1aXJlcyB0aGlzIHRvIGJlICdiZmQsICdsbGQnIG9yICdnb2xkJyBmcm9tIDAuNTMgb253YXJkcworICAgICMgaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vY29tbWl0L2VmOWFlYjE4OGVhMmJjNzM1M2U1OTkxNmMxODkwMWNkZTkwZmEyYjMKKyAgICB1bnNldCBMRAorCiAgICAgIyBXb3JrIGFyb3VuZCAiTWVzb24gZmFpbHMgaWYgL3RtcCBpcyBtb3VudGVkIHdpdGggbm9leGVjICMyOTcyIgogICAgIG1rZGlyIC1wICIke0J9L21lc29uLXByaXZhdGUvdG1wIgogICAgIGV4cG9ydCBUTVBESVI9IiR7Qn0vbWVzb24tcHJpdmF0ZS90bXAiCkBAIC0xNDcsNiArMTYxLDE1IEBACiAgICAgZXhwb3J0IFBLR19DT05GSUc9InBrZy1jb25maWctbmF0aXZlIgogfQogCitweXRob24gbWVzb25fZG9fcWFfY29uZmlndXJlKCkgeworICAgIGltcG9ydCByZQorICAgIHdhcm5fcmUgPSByZS5jb21waWxlKHIiXldBUk5JTkc6IENyb3NzIHByb3BlcnR5ICguKykgaXMgdXNpbmcgZGVmYXVsdCB2YWx1ZSAoLispJCIsIHJlLk1VTFRJTElORSkKKyAgICBsb2cgPSBvcGVuKGQuZXhwYW5kKCIke0J9L21lc29uLWxvZ3MvbWVzb24tbG9nLnR4dCIpKS5yZWFkKCkKKyAgICBmb3IgKHByb3AsIHZhbHVlKSBpbiB3YXJuX3JlLmZpbmRhbGwobG9nKToKKyAgICAgICAgYmIud2FybigiTWVzb24gY3Jvc3MgcHJvcGVydHkgJXMgdXNlZCB3aXRob3V0IGV4cGxpY2l0IGFzc2lnbm1lbnQsIGRlZmF1bHRpbmcgdG8gJXMiICUgKHByb3AsIHZhbHVlKSkKK30KK2RvX2NvbmZpZ3VyZVtwb3N0ZnVuY3NdICs9ICJtZXNvbl9kb19xYV9jb25maWd1cmUiCisKIGRvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gIm91dG9mOl5cWyhcZCspLyhcZCspXF1ccysiCiBtZXNvbl9kb19jb21waWxlKCkgewogICAgIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUteGRnLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLXhkZy5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MmE1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLXhkZy5iYmNsYXNzCkBAIC0wLDAgKzEsNzQgQEAKKyMKKyMgVGhpcyBjbGFzcyBjcmVhdGVzIG1pbWUgPC0+IGFwcGxpY2F0aW9uIGFzc29jaWF0aW9ucyBiYXNlZCBvbiBlbnRyeSAKKyMgJ01pbWVUeXBlJyBpbiAqLmRlc2t0b3AgZmlsZXMKKyMKKworREVQRU5EUyArPSAiZGVza3RvcC1maWxlLXV0aWxzIgorUEFDS0FHRV9XUklURV9ERVBTICs9ICJkZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlIgorREVTS1RPUERJUiA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKKworIyBUaGVyZSBhcmUgcmVjaXBlcyBvdXQgdGhlcmUgaW5zdGFsbGluZyB0aGVpciAuZGVza3RvcCBmaWxlcyBhcyBhYnNvbHV0ZQorIyBzeW1saW5rcy4gRm9yIHVzIHRoZXNlIGFyZSBkYW5nbGluZyBhbmQgY2Fubm90IGJlIGludHJvc3BlY3RlZCBmb3IgIk1pbWVUeXBlIgorIyBlYXNpbHkuIEJ5IGFkZGRpbmcgcGFja2FnZS1uYW1lcyB0byBNSU1FX1hER19QQUNLQUdFUywgcGFja2FnZXIgY2FuIGZvcmNlCisjIHByb3BlciB1cGRhdGUtZGVza3RvcC1kYXRhYmFzZSBoYW5kbGluZy4gTm90ZSB0aGF0IGFsbCBpbnRyb3NwZWN0aW9uIGlzCisjIHNraXBwZWQgZm9yIE1JTUVfWERHX1BBQ0tBR0VTIG5vdCBlbXB0eQorTUlNRV9YREdfUEFDS0FHRVMgPz0gIiIKKworbWltZV94ZGdfcG9zdGluc3QoKSB7CitpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCisJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9kZXNrdG9wX2RhdGFiYXNlICR7UEtHfSBcCisJCW1scHJlZml4PSR7TUxQUkVGSVh9IFwKKwkJZGVza3RvcF9kaXI9JHtERVNLVE9QRElSfQorZWxzZQorCXVwZGF0ZS1kZXNrdG9wLWRhdGFiYXNlICREJHtERVNLVE9QRElSfQorZmkKK30KKworbWltZV94ZGdfcG9zdHJtKCkgeworaWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfZGVza3RvcF9kYXRhYmFzZSAke1BLR30gXAorCQltbHByZWZpeD0ke01MUFJFRklYfSBcCisJCWRlc2t0b3BfZGlyPSR7REVTS1RPUERJUn0KK2Vsc2UKKwl1cGRhdGUtZGVza3RvcC1kYXRhYmFzZSAkRCR7REVTS1RPUERJUn0KK2ZpCit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19hcHBlbmQgKCkgeworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBrZ2Rlc3QgPSAgZC5nZXRWYXIoJ1BLR0RFU1QnKQorICAgIGRlc2t0b3BfYmFzZSA9IGQuZ2V0VmFyKCdERVNLVE9QRElSJykKKyAgICBmb3JjZWRfbWltZV94ZGdfcGtncyA9IChkLmdldFZhcignTUlNRV9YREdfUEFDS0FHRVMnKSBvciAnJykuc3BsaXQoKQorCisgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKKyAgICAgICAgZGVza3RvcHNfd2l0aF9taW1lX2ZvdW5kID0gcGtnIGluIGZvcmNlZF9taW1lX3hkZ19wa2dzCisgICAgICAgIGlmIGQuZ2V0VmFyKCdNSU1FX1hER19QQUNLQUdFUycpID09ICcnOgorICAgICAgICAgICAgZGVza3RvcF9kaXIgPSAnJXMvJXMlcycgJSAocGtnZGVzdCwgcGtnLCBkZXNrdG9wX2Jhc2UpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXNrdG9wX2Rpcik6CisgICAgICAgICAgICAgICAgZm9yIGRmIGluIG9zLmxpc3RkaXIoZGVza3RvcF9kaXIpOgorICAgICAgICAgICAgICAgICAgICBpZiBkZi5lbmRzd2l0aCgnLmRlc2t0b3AnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGVza3RvcF9kaXIgKyAnLycrIGRmLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZCgpLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ01pbWVUeXBlJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3BzX3dpdGhfbWltZV9mb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCdDb3VsZCBub3Qgb3BlbiAlcy4gU2V0IE1JTUVfWERHX1BBQ0tBR0VTIGluIHJlY2lwZSBvciBhZGQgbWltZS14ZGcgdG8gSU5TQU5FX1NLSVAuJyAlIGRlc2t0b3BfZGlyICsgJy8nKyBkZikKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVza3RvcHNfd2l0aF9taW1lX2ZvdW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZGVza3RvcHNfd2l0aF9taW1lX2ZvdW5kOgorICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIG1pbWUteGRnIHBvc3RpbnN0IGFuZCBwb3N0cm0gc2NyaXB0cyB0byAlcyIgJSBwa2cpCisgICAgICAgICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnKQorICAgICAgICAgICAgaWYgbm90IHBvc3RpbnN0OgorICAgICAgICAgICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJworICAgICAgICAgICAgcG9zdGluc3QgKz0gZC5nZXRWYXIoJ21pbWVfeGRnX3Bvc3RpbnN0JykKKyAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnLCBwb3N0aW5zdCkKKyAgICAgICAgICAgIHBvc3RybSA9IGQuZ2V0VmFyKCdwa2dfcG9zdHJtXyVzJyAlIHBrZykKKyAgICAgICAgICAgIGlmIG5vdCBwb3N0cm06CisgICAgICAgICAgICAgICAgcG9zdHJtID0gJyMhL2Jpbi9zaFxuJworICAgICAgICAgICAgcG9zdHJtICs9IGQuZ2V0VmFyKCdtaW1lX3hkZ19wb3N0cm0nKQorICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0cm1fJXMnICUgcGtnLCBwb3N0cm0pCisgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgZGVza3RvcC1maWxlLXV0aWxzIGRlcGVuZGVuY3kgdG8gJXMiICUgcGtnKQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwa2csICIgIiArIGQuZ2V0VmFyKCdNTFBSRUZJWCcpKyJkZXNrdG9wLWZpbGUtdXRpbHMiKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzCmluZGV4IDZjN2I4NjguLmM5MDcyYWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLmJiY2xhc3MKQEAgLTEsNDYgKzEsNDcgQEAKLURFUEVORFMgKz0gInNoYXJlZC1taW1lLWluZm8iCisjCisjIFRoaXMgY2xhc3MgaXMgdXNlZCBieSByZWNpcGVzIGluc3RhbGxpbmcgbWltZSB0eXBlcworIworCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQlBOJywgJ3NoYXJlZC1taW1lLWluZm8nLCAnJywgJ3NoYXJlZC1taW1lLWluZm8nLCBkKX0iCiBQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInNoYXJlZC1taW1lLWluZm8tbmF0aXZlIgorTUlNRURJUiA9ICIke2RhdGFkaXJ9L21pbWUiCiAKIG1pbWVfcG9zdGluc3QoKSB7Ci1pZiBbICIkMSIgPSBjb25maWd1cmUgXTsgdGhlbgotCVVQREFURU1JTUVEQj1gd2hpY2ggdXBkYXRlLW1pbWUtZGF0YWJhc2VgCi0JaWYgWyAteCAiJFVQREFURU1JTUVEQiIgXSA7IHRoZW4KLQkJZWNobyAiVXBkYXRpbmcgTUlNRSBkYXRhYmFzZS4uLiB0aGlzIG1heSB0YWtlIGEgd2hpbGUuIgotCQkkVVBEQVRFTUlNRURCICREJHtkYXRhZGlyfS9taW1lCi0JZWxzZQotCQllY2hvICJNaXNzaW5nIHVwZGF0ZS1taW1lLWRhdGFiYXNlLCB1cGRhdGUgb2YgbWltZSBkYXRhYmFzZSBmYWlsZWQhIgotCQlleGl0IDEKLQlmaQoraWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfbWltZV9kYXRhYmFzZSAke1BLR30gXAorCQltbHByZWZpeD0ke01MUFJFRklYfSBcCisJCW1pbWVkaXI9JHtNSU1FRElSfQorZWxzZQorCWVjaG8gIlVwZGF0aW5nIE1JTUUgZGF0YWJhc2UuLi4gdGhpcyBtYXkgdGFrZSBhIHdoaWxlLiIKKwl1cGRhdGUtbWltZS1kYXRhYmFzZSAkRCR7TUlNRURJUn0KIGZpCiB9CiAKIG1pbWVfcG9zdHJtKCkgewotaWYgWyAiJDEiID0gcmVtb3ZlIF0gfHwgWyAiJDEiID0gdXBncmFkZSBdOyB0aGVuCi0JVVBEQVRFTUlNRURCPWB3aGljaCB1cGRhdGUtbWltZS1kYXRhYmFzZWAKLQlpZiBbIC14ICIkVVBEQVRFTUlNRURCIiBdIDsgdGhlbgotCQllY2hvICJVcGRhdGluZyBNSU1FIGRhdGFiYXNlLi4uIHRoaXMgbWF5IHRha2UgYSB3aGlsZS4iCi0JCSRVUERBVEVNSU1FREIgJEQke2RhdGFkaXJ9L21pbWUKLQllbHNlCi0JCWVjaG8gIk1pc3NpbmcgdXBkYXRlLW1pbWUtZGF0YWJhc2UsIHVwZGF0ZSBvZiBtaW1lIGRhdGFiYXNlIGZhaWxlZCEiCi0JCWV4aXQgMQotCWZpCitpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCisJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9taW1lX2RhdGFiYXNlICR7UEtHfSBcCisJCW1scHJlZml4PSR7TUxQUkVGSVh9IFwKKwkJbWltZWRpcj0ke01JTUVESVJ9CitlbHNlCisJZWNobyAiVXBkYXRpbmcgTUlNRSBkYXRhYmFzZS4uLiB0aGlzIG1heSB0YWtlIGEgd2hpbGUuIgorCXVwZGF0ZS1taW1lLWRhdGFiYXNlICREJHtNSU1FRElSfQogZmkKIH0KIAogcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX2FwcGVuZCAoKSB7Ci0gICAgaW1wb3J0IHJlCiAgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCiAgICAgcGtnZGVzdCA9ICBkLmdldFZhcignUEtHREVTVCcpCisgICAgbWltZWRpciA9IGQuZ2V0VmFyKCdNSU1FRElSJykKIAogICAgIGZvciBwa2cgaW4gcGFja2FnZXM6Ci0gICAgICAgIG1pbWVfZGlyID0gJyVzLyVzL3Vzci9zaGFyZS9taW1lL3BhY2thZ2VzJyAlIChwa2dkZXN0LCBwa2cpCi0gICAgICAgIG1pbWVzID0gW10KLSAgICAgICAgbWltZV9yZSA9IHJlLmNvbXBpbGUoIi4qXC54bWwkIikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWltZV9kaXIpOgotICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihtaW1lX2Rpcik6Ci0gICAgICAgICAgICAgICAgaWYgbWltZV9yZS5tYXRjaChmKToKLSAgICAgICAgICAgICAgICAgICAgbWltZXMuYXBwZW5kKGYpCi0gICAgICAgIGlmIG1pbWVzOgorICAgICAgICBtaW1lX3BhY2thZ2VzX2RpciA9ICclcy8lcyVzL3BhY2thZ2VzJyAlIChwa2dkZXN0LCBwa2csIG1pbWVkaXIpCisgICAgICAgIG1pbWVzX3R5cGVzX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWltZV9wYWNrYWdlc19kaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihtaW1lX3BhY2thZ2VzX2Rpcik6CisgICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgnLnhtbCcpOgorICAgICAgICAgICAgICAgICAgICBtaW1lc190eXBlc19mb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbWltZXNfdHlwZXNfZm91bmQ6CiAgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgbWltZSBwb3N0aW5zdCBhbmQgcG9zdHJtIHNjcmlwdHMgdG8gJXMiICUgcGtnKQogICAgICAgICAgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZykKICAgICAgICAgICAgIGlmIG5vdCBwb3N0aW5zdDoKQEAgLTUyLDYgKzUzLDcgQEAKICAgICAgICAgICAgICAgICBwb3N0cm0gPSAnIyEvYmluL3NoXG4nCiAgICAgICAgICAgICBwb3N0cm0gKz0gZC5nZXRWYXIoJ21pbWVfcG9zdHJtJykKICAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdHJtXyVzJyAlIHBrZywgcG9zdHJtKQotICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIHNoYXJlZC1taW1lLWluZm8tZGF0YSBkZXBlbmRlbmN5IHRvICVzIiAlIHBrZykKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAiICIgKyBkLmdldFZhcignTUxQUkVGSVgnKSsic2hhcmVkLW1pbWUtaW5mby1kYXRhIikKKyAgICAgICAgICAgIGlmIHBrZyAhPSAnc2hhcmVkLW1pbWUtaW5mby1kYXRhJzoKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgc2hhcmVkLW1pbWUtaW5mby1kYXRhIGRlcGVuZGVuY3kgdG8gJXMiICUgcGtnKQorICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAiICIgKyBkLmdldFZhcignTUxQUkVGSVgnKSsic2hhcmVkLW1pbWUtaW5mby1kYXRhIikKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCmluZGV4IDFhOTI5NWQuLmVlNjc3ZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwpAQCAtMTg0LDExICsxODQsMTIgQEAKICAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgogICAgICAgICAgICAgaWYgaS5zdGFydHN3aXRoKCd2aXJ0dWFsLycpOgogICAgICAgICAgICAgICAgIGkgPSBpW2xlbigndmlydHVhbC8nKTpdCi0gICAgICAgICAgICBpZiAobm90IGkuc3RhcnRzd2l0aCgna2VybmVsLW1vZHVsZScpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgobWxwcmVmaXgpKSBhbmQgXAotICAgICAgICAgICAgICAgIChub3QgJ2Nyb3NzLWNhbmFkaWFuJyBpbiBpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKSkgYW5kIFwKLSAgICAgICAgICAgICAgICAobm90IGkuc3RhcnRzd2l0aCgicnRsZCIpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoJ2tlcm5lbC12bWxpbnV4JykpIFwKLSAgICAgICAgICAgICAgICBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoImtlcm5lbC1pbWFnZSIpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoIi8iKSk6CisKKyAgICAgICAgICAgIGlmIChub3QgKGkuc3RhcnRzd2l0aChtbHByZWZpeCkgb3IgaS5zdGFydHN3aXRoKCJrZXJuZWwtIikgXAorICAgICAgICAgICAgICAgICAgICBvciAoJ2Nyb3NzLWNhbmFkaWFuJyBpbiBpKSBvciBpLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKSBcCisgICAgICAgICAgICAgICAgICAgIG9yIGkuc3RhcnRzd2l0aCgicnRsZCIpIG9yIGkuc3RhcnRzd2l0aCgiLyIpKSk6CiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoaSkKKwogICAgICAgICBpZiBsZW4oY2FuZGlkYXRlcykgPiAwOgogICAgICAgICAgICAgbXNnID0gIiVzIHBhY2thZ2UgJXMgLSBzdXNwaWNpb3VzIHZhbHVlcyAnJXMnIGluICVzIiBcCiAgICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgJyAnLmpvaW4oY2FuZGlkYXRlcyksIHZhcikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKaW5kZXggZDViNmY2YS4uMDgxMDZlMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKQEAgLTE4NiwxMSArMTg2LDExIEBACiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJleHRlbmRfcmVjaXBlX3N5c3Jvb3QiLCBkKQogfQogYWRkdGFzayBhZGR0b19yZWNpcGVfc3lzcm9vdCBhZnRlciBkb19wb3B1bGF0ZV9zeXNyb290Citkb19hZGR0b19yZWNpcGVfc3lzcm9vdFtkZXB0YXNrXSA9ICJkb19wb3B1bGF0ZV9zeXNyb290IgogCiBpbmhlcml0IG5vcGFja2FnZXMKIAogZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgotZG9fcG9wdWxhdGVfc3lzcm9vdFtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiAKIFVTRV9OTFMgPSAibm8iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MKaW5kZXggMDMxMzVhYy4uN2I3NTcxMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MKQEAgLTEwNyw3ICsxMDcsNiBAQAogYWRkaGFuZGxlciBuYXRpdmVzZGtfdmlydGNsYXNzX2hhbmRsZXIKIG5hdGl2ZXNka192aXJ0Y2xhc3NfaGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlIgogCi1kb19wb3B1bGF0ZV9zeXNyb290W3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIGRvX3BhY2thZ2VkYXRhW3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIAogVVNFX05MUyA9ICIke1NES1VTRV9OTFN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwppbmRleCA0YjFmMGEzLi4wNjgwMzJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwpAQCAtMSw5NCArMSwzMDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIFNhdm9pci1GYWlyZSBMaW51eAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisjCisjIFRoaXMgYmJjbGFzcyBidWlsZHMgYW5kIGluc3RhbGxzIGFuIG5wbSBwYWNrYWdlIHRvIHRoZSB0YXJnZXQuIFRoZSBwYWNrYWdlCisjIHNvdXJjZXMgZmlsZXMgc2hvdWxkIGJlIGZldGNoZWQgaW4gdGhlIGNhbGxpbmcgcmVjaXBlIGJ5IHVzaW5nIHRoZSBTUkNfVVJJCisjIHZhcmlhYmxlLiBUaGUgJHtTfSB2YXJpYWJsZSBzaG91bGQgYmUgdXBkYXRlZCBkZXBlbmRpbmcgb2YgeW91ciBmZXRjaGVyLgorIworIyBVc2FnZToKKyMgIFNSQ19VUkkgPSAiLi4uIgorIyAgaW5oZXJpdCBucG0KKyMKKyMgT3B0aW9uYWwgdmFyaWFibGVzOgorIyAgTlBNX0FSQ0g6CisjICAgICAgIE92ZXJyaWRlIHRoZSBhdXRvIGdlbmVyYXRlZCBucG0gYXJjaGl0ZWN0dXJlLgorIworIyAgTlBNX0lOU1RBTExfREVWOgorIyAgICAgICBTZXQgdG8gMSB0byBhbHNvIGluc3RhbGwgZGV2RGVwZW5kZW5jaWVzLgorCiBERVBFTkRTX3ByZXBlbmQgPSAibm9kZWpzLW5hdGl2ZSAiCiBSREVQRU5EU18ke1BOfV9wcmVwZW5kID0gIm5vZGVqcyAiCi1TID0gIiR7V09SS0RJUn0vbnBtcGtnIgogCi1kZWYgbm9kZV9wa2duYW1lKGQpOgotICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nKQotICAgIGlmIGJwbi5zdGFydHN3aXRoKCJub2RlLSIpOgotICAgICAgICByZXR1cm4gYnBuWzU6XQotICAgIHJldHVybiBicG4KLQotTlBNUE4gPz0gIiR7QG5vZGVfcGtnbmFtZShkKX0iCi0KLU5QTV9JTlNUQUxMRElSID0gIiR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0iCi0KLSMgZnVuY3Rpb24gbWFwcyBhcmNoIG5hbWVzIHRvIG5wbSBhcmNoIG5hbWVzCi1kZWYgbnBtX29lX2FyY2hfbWFwKHRhcmdldF9hcmNoLCBkKToKLSAgICBpbXBvcnQgcmUKLSAgICBpZiAgIHJlLm1hdGNoKCdwKHBjfG93ZXJwYykofDY0KScsIHRhcmdldF9hcmNoKTogcmV0dXJuICdwcGMnCi0gICAgZWxpZiByZS5tYXRjaCgnaS44NiQnLCB0YXJnZXRfYXJjaCk6IHJldHVybiAnaWEzMicKLSAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgdGFyZ2V0X2FyY2gpOiByZXR1cm4gJ3g2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdhcm02NCQnLCB0YXJnZXRfYXJjaCk6IHJldHVybiAnYXJtJwotICAgIHJldHVybiB0YXJnZXRfYXJjaAotCi1OUE1fQVJDSCA/PSAiJHtAbnBtX29lX2FyY2hfbWFwKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCiBOUE1fSU5TVEFMTF9ERVYgPz0gIjAiCiAKLW5wbV9kb19jb21waWxlKCkgewotCSMgQ29weSBpbiBhbnkgYWRkaXRpb25hbGx5IGZldGNoZWQgbW9kdWxlcwotCWlmIFsgLWQgJHtXT1JLRElSfS9ub2RlX21vZHVsZXMgXSA7IHRoZW4KLQkJY3AgLWEgJHtXT1JLRElSfS9ub2RlX21vZHVsZXMgJHtTfS8KLQlmaQotCSMgY2hhbmdpbmcgdGhlIGhvbWUgZGlyZWN0b3J5IHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdGhlIC5ucG1yYyB3aWxsCi0JIyBiZSBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5Ci0JZXhwb3J0IEhPTUU9JHtXT1JLRElSfQotCWlmIFsgICIke05QTV9JTlNUQUxMX0RFVn0iID0gIjEiIF07IHRoZW4KLQkJbnBtIGNvbmZpZyBzZXQgZGV2IHRydWUKLQllbHNlCi0JCW5wbSBjb25maWcgc2V0IGRldiBmYWxzZQotCWZpCi0JbnBtIHNldCBjYWNoZSAke1dPUktESVJ9L25wbV9jYWNoZQotCSMgY2xlYXIgY2FjaGUgYmVmb3JlIGV2ZXJ5IGJ1aWxkCi0JbnBtIGNhY2hlIGNsZWFyIC0tZm9yY2UKLQkjIEluc3RhbGwgcGtnIGludG8gJHtTfSB3aXRob3V0IGdvaW5nIHRvIHRoZSByZWdpc3RyeQotCWlmIFsgICIke05QTV9JTlNUQUxMX0RFVn0iID0gIjEiIF07IHRoZW4KLQkJbnBtIC0tYXJjaD0ke05QTV9BUkNIfSAtLXRhcmdldF9hcmNoPSR7TlBNX0FSQ0h9IC0tbm8tcmVnaXN0cnkgaW5zdGFsbAotCWVsc2UKLQkJbnBtIC0tYXJjaD0ke05QTV9BUkNIfSAtLXRhcmdldF9hcmNoPSR7TlBNX0FSQ0h9IC0tcHJvZHVjdGlvbiAtLW5vLXJlZ2lzdHJ5IGluc3RhbGwKLQlmaQorZGVmIG5wbV90YXJnZXRfYXJjaF9tYXAodGFyZ2V0X2FyY2gpOgorICAgICIiIk1hcHMgYXJjaCBuYW1lcyB0byBucG0gYXJjaCBuYW1lcyIiIgorICAgIGltcG9ydCByZQorICAgIGlmIHJlLm1hdGNoKCJwKHBjfG93ZXJwYykofDY0KSIsIHRhcmdldF9hcmNoKToKKyAgICAgICAgcmV0dXJuICJwcGMiCisgICAgZWxpZiByZS5tYXRjaCgiaS44NiQiLCB0YXJnZXRfYXJjaCk6CisgICAgICAgIHJldHVybiAiaWEzMiIKKyAgICBlbGlmIHJlLm1hdGNoKCJ4ODZfNjQkIiwgdGFyZ2V0X2FyY2gpOgorICAgICAgICByZXR1cm4gIng2NCIKKyAgICBlbGlmIHJlLm1hdGNoKCJhcm02NCQiLCB0YXJnZXRfYXJjaCk6CisgICAgICAgIHJldHVybiAiYXJtIgorICAgIHJldHVybiB0YXJnZXRfYXJjaAorCitOUE1fQVJDSCA/PSAiJHtAbnBtX3RhcmdldF9hcmNoX21hcChkLmdldFZhcigiVEFSR0VUX0FSQ0giKSl9IgorCitOUE1fUEFDS0FHRSA9ICIke1dPUktESVJ9L25wbS1wYWNrYWdlIgorTlBNX0NBQ0hFID0gIiR7V09SS0RJUn0vbnBtLWNhY2hlIgorTlBNX0JVSUxEID0gIiR7V09SS0RJUn0vbnBtLWJ1aWxkIgorCitkZWYgbnBtX2dsb2JhbF9jb25maWdzKGQpOgorICAgICIiIkdldCB0aGUgbnBtIGdsb2JhbCBjb25maWd1cmF0aW9uIiIiCisgICAgY29uZmlncyA9IFtdCisgICAgIyBFbnN1cmUgbm8gbmV0d29yayBhY2Nlc3MgaXMgZG9uZQorICAgIGNvbmZpZ3MuYXBwZW5kKCgib2ZmbGluZSIsICJ0cnVlIikpCisgICAgY29uZmlncy5hcHBlbmQoKCJwcm94eSIsICJodHRwOi8vaW52YWxpZCIpKQorICAgICMgQ29uZmlndXJlIHRoZSBjYWNoZSBkaXJlY3RvcnkKKyAgICBjb25maWdzLmFwcGVuZCgoImNhY2hlIiwgZC5nZXRWYXIoIk5QTV9DQUNIRSIpKSkKKyAgICByZXR1cm4gY29uZmlncworCitkZWYgbnBtX3BhY2soZW52LCBzcmNkaXIsIHdvcmtkaXIpOgorICAgICIiIlJ1biAnbnBtIHBhY2snIG9uIGEgc3BlY2lmaWVkIGRpcmVjdG9yeSIiIgorICAgIGltcG9ydCBzaGxleAorICAgIGNtZCA9ICJucG0gcGFjayAlcyIgJSBzaGxleC5xdW90ZShzcmNkaXIpCisgICAgY29uZmlncyA9IFsoImlnbm9yZS1zY3JpcHRzIiwgInRydWUiKV0KKyAgICB0YXJiYWxsID0gZW52LnJ1bihjbWQsIGNvbmZpZ3M9Y29uZmlncywgd29ya2Rpcj13b3JrZGlyKS5zdHJpcCgiXG4iKQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4od29ya2RpciwgdGFyYmFsbCkKKworcHl0aG9uIG5wbV9kb19jb25maWd1cmUoKSB7CisgICAgIiIiCisgICAgU3RlcCBvbmU6IGNvbmZpZ3VyZSB0aGUgbnBtIGNhY2hlIGFuZCB0aGUgbWFpbiBucG0gcGFja2FnZQorCisgICAgRXZlcnkgZGVwZW5kZW5jaWVzIGhhdmUgYmVlbiBmZXRjaGVkIGFuZCBwYXRjaGVkIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgorICAgIFRoZXkgaGF2ZSB0byBiZSBwYWNrZWQgKHRoaXMgcmVtb3ZlIHVubmVlZGVkIGZpbGVzKSBhbmQgYWRkZWQgdG8gdGhlIG5wbQorICAgIGNhY2hlIHRvIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgc3RlcC4KKworICAgIFRoZSBtYWluIHBhY2thZ2UgYW5kIGl0cyBhc3NvY2lhdGVkIG1hbmlmZXN0IGZpbGUgYW5kIHNocmlua3dyYXAgZmlsZSBoYXZlCisgICAgdG8gYmUgY29uZmlndXJlZCB0byB0YWtlIGludG8gYWNjb3VudCB0aGVzZSBjYWNoZWQgZGVwZW5kZW5jaWVzLgorICAgICIiIgorICAgIGltcG9ydCBiYXNlNjQKKyAgICBpbXBvcnQgY29weQorICAgIGltcG9ydCBqc29uCisgICAgaW1wb3J0IHJlCisgICAgaW1wb3J0IHNobGV4CisgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBOcG1FbnZpcm9ubWVudAorICAgIGZyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgbnBtX3VucGFjaworICAgIGZyb20gYmIuZmV0Y2gyLm5wbXN3IGltcG9ydCBmb3JlYWNoX2RlcGVuZGVuY2llcworICAgIGZyb20gYmIucHJvZ3Jlc3MgaW1wb3J0IE91dE9mUHJvZ3Jlc3NIYW5kbGVyCisKKyAgICBiYi51dGlscy5yZW1vdmUoZC5nZXRWYXIoIk5QTV9DQUNIRSIpLCByZWN1cnNlPVRydWUpCisgICAgYmIudXRpbHMucmVtb3ZlKGQuZ2V0VmFyKCJOUE1fUEFDS0FHRSIpLCByZWN1cnNlPVRydWUpCisKKyAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkLCBjb25maWdzPW5wbV9nbG9iYWxfY29uZmlncyhkKSkKKworICAgIGRlZiBfbnBtX2NhY2hlX2FkZCh0YXJiYWxsKToKKyAgICAgICAgIiIiUnVuICducG0gY2FjaGUgYWRkJyBmb3IgYSBzcGVjaWZpZWQgdGFyYmFsbCIiIgorICAgICAgICBjbWQgPSAibnBtIGNhY2hlIGFkZCAlcyIgJSBzaGxleC5xdW90ZSh0YXJiYWxsKQorICAgICAgICBlbnYucnVuKGNtZCkKKworICAgIGRlZiBfbnBtX2ludGVncml0eSh0YXJiYWxsKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBucG0gaW50ZWdyaXR5IG9mIGEgc3BlY2lmaWVkIHRhcmJhbGwiIiIKKyAgICAgICAgc2hhNTEyID0gYmIudXRpbHMuc2hhNTEyX2ZpbGUodGFyYmFsbCkKKyAgICAgICAgcmV0dXJuICJzaGE1MTItIiArIGJhc2U2NC5iNjRlbmNvZGUoYnl0ZXMuZnJvbWhleChzaGE1MTIpKS5kZWNvZGUoKQorCisgICAgZGVmIF9ucG1fdmVyc2lvbih0YXJiYWxsKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIGEgc3BlY2lmaWVkIHRhcmJhbGwiIiIKKyAgICAgICAgcmVnZXggPSByIi0oXGQrXC5cZCtcLlxkKygtLiopPyhcKy4qKT8pXC50Z3oiCisgICAgICAgIHJldHVybiByZS5zZWFyY2gocmVnZXgsIHRhcmJhbGwpLmdyb3VwKDEpCisKKyAgICBkZWYgX25wbXN3X2RlcGVuZGVuY3lfZGljdChvcmlnLCBkZXB0cmVlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgc3ViIGRpY3Rpb25hcnkgaW4gdGhlICdvcmlnJyBkaWN0aW9uYXJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICAgICAgICdkZXB0cmVlJyBkZXBlbmRlbmN5IHRyZWUuIFRoaXMgZnVuY3Rpb24gZm9sbG93cyB0aGUgc2hyaW5rd3JhcCBmaWxlCisgICAgICAgIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIHB0ciA9IG9yaWcKKyAgICAgICAgZm9yIGRlcCBpbiBkZXB0cmVlOgorICAgICAgICAgICAgaWYgImRlcGVuZGVuY2llcyIgbm90IGluIHB0cjoKKyAgICAgICAgICAgICAgICBwdHJbImRlcGVuZGVuY2llcyJdID0ge30KKyAgICAgICAgICAgIHB0ciA9IHB0clsiZGVwZW5kZW5jaWVzIl0KKyAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gcHRyOgorICAgICAgICAgICAgICAgIHB0cltkZXBdID0ge30KKyAgICAgICAgICAgIHB0ciA9IHB0cltkZXBdCisgICAgICAgIHJldHVybiBwdHIKKworICAgICMgTWFuYWdlIHRoZSBtYW5pZmVzdCBmaWxlIGFuZCBzaHJpbmt3cmFwIGZpbGVzCisgICAgb3JpZ19tYW5pZmVzdF9maWxlID0gZC5leHBhbmQoIiR7U30vcGFja2FnZS5qc29uIikKKyAgICBvcmlnX3Nocmlua3dyYXBfZmlsZSA9IGQuZXhwYW5kKCIke1N9L25wbS1zaHJpbmt3cmFwLmpzb24iKQorICAgIGNhY2hlZF9tYW5pZmVzdF9maWxlID0gZC5leHBhbmQoIiR7TlBNX1BBQ0tBR0V9L3BhY2thZ2UuanNvbiIpCisgICAgY2FjaGVkX3Nocmlua3dyYXBfZmlsZSA9IGQuZXhwYW5kKCIke05QTV9QQUNLQUdFfS9ucG0tc2hyaW5rd3JhcC5qc29uIikKKworICAgIHdpdGggb3BlbihvcmlnX21hbmlmZXN0X2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgb3JpZ19tYW5pZmVzdCA9IGpzb24ubG9hZChmKQorCisgICAgY2FjaGVkX21hbmlmZXN0ID0gY29weS5kZWVwY29weShvcmlnX21hbmlmZXN0KQorICAgIGNhY2hlZF9tYW5pZmVzdC5wb3AoImRlcGVuZGVuY2llcyIsIE5vbmUpCisgICAgY2FjaGVkX21hbmlmZXN0LnBvcCgiZGV2RGVwZW5kZW5jaWVzIiwgTm9uZSkKKworICAgIHdpdGggb3BlbihvcmlnX3Nocmlua3dyYXBfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICBvcmlnX3Nocmlua3dyYXAgPSBqc29uLmxvYWQoZikKKworICAgIGNhY2hlZF9zaHJpbmt3cmFwID0gY29weS5kZWVwY29weShvcmlnX3Nocmlua3dyYXApCisgICAgY2FjaGVkX3Nocmlua3dyYXAucG9wKCJkZXBlbmRlbmNpZXMiLCBOb25lKQorCisgICAgIyBNYW5hZ2UgdGhlIGRlcGVuZGVuY2llcworICAgIHByb2dyZXNzID0gT3V0T2ZQcm9ncmVzc0hhbmRsZXIoZCwgciJeKFxkKykvKFxkKykkIikKKyAgICBwcm9ncmVzc190b3RhbCA9IDEgIyBhbHNvIGNvdW50IHRoZSBtYWluIHBhY2thZ2UKKyAgICBwcm9ncmVzc19kb25lID0gMAorCisgICAgZGVmIF9jb3VudF9kZXBlbmRlbmN5KG5hbWUsIHBhcmFtcywgZGVwdHJlZSk6CisgICAgICAgIG5vbmxvY2FsIHByb2dyZXNzX3RvdGFsCisgICAgICAgIHByb2dyZXNzX3RvdGFsICs9IDEKKworICAgIGRlZiBfY2FjaGVfZGVwZW5kZW5jeShuYW1lLCBwYXJhbXMsIGRlcHRyZWUpOgorICAgICAgICBkZXN0c3ViZGlycyA9IFtvcy5wYXRoLmpvaW4oIm5vZGVfbW9kdWxlcyIsIGRlcCkgZm9yIGRlcCBpbiBkZXB0cmVlXQorICAgICAgICBkZXN0c3VmZml4ID0gb3MucGF0aC5qb2luKCpkZXN0c3ViZGlycykKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgICAgICAjIEFkZCB0aGUgZGVwZW5kZW5jeSB0byB0aGUgbnBtIGNhY2hlCisgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJTIiksIGRlc3RzdWZmaXgpCisgICAgICAgICAgICB0YXJiYWxsID0gbnBtX3BhY2soZW52LCBkZXN0ZGlyLCB0bXBkaXIpCisgICAgICAgICAgICBfbnBtX2NhY2hlX2FkZCh0YXJiYWxsKQorICAgICAgICAgICAgIyBBZGQgaXRzIHNpZ25hdHVyZSB0byB0aGUgY2FjaGVkIHNocmlua3dyYXAKKyAgICAgICAgICAgIGRlcCA9IF9ucG1zd19kZXBlbmRlbmN5X2RpY3QoY2FjaGVkX3Nocmlua3dyYXAsIGRlcHRyZWUpCisgICAgICAgICAgICBkZXBbInZlcnNpb24iXSA9IF9ucG1fdmVyc2lvbih0YXJiYWxsKQorICAgICAgICAgICAgZGVwWyJpbnRlZ3JpdHkiXSA9IF9ucG1faW50ZWdyaXR5KHRhcmJhbGwpCisgICAgICAgICAgICBpZiBwYXJhbXMuZ2V0KCJkZXYiLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgZGVwWyJkZXYiXSA9IFRydWUKKyAgICAgICAgICAgICMgRGlzcGxheSBwcm9ncmVzcworICAgICAgICAgICAgbm9ubG9jYWwgcHJvZ3Jlc3NfZG9uZQorICAgICAgICAgICAgcHJvZ3Jlc3NfZG9uZSArPSAxCisgICAgICAgICAgICBwcm9ncmVzcy53cml0ZSgiJWQvJWQiICUgKHByb2dyZXNzX2RvbmUsIHByb2dyZXNzX3RvdGFsKSkKKworICAgIGRldiA9IGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoIk5QTV9JTlNUQUxMX0RFViIpLCBGYWxzZSkKKyAgICBmb3JlYWNoX2RlcGVuZGVuY2llcyhvcmlnX3Nocmlua3dyYXAsIF9jb3VudF9kZXBlbmRlbmN5LCBkZXYpCisgICAgZm9yZWFjaF9kZXBlbmRlbmNpZXMob3JpZ19zaHJpbmt3cmFwLCBfY2FjaGVfZGVwZW5kZW5jeSwgZGV2KQorCisgICAgIyBDb25maWd1cmUgdGhlIG1haW4gcGFja2FnZQorICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICB0YXJiYWxsID0gbnBtX3BhY2soZW52LCBkLmdldFZhcigiUyIpLCB0bXBkaXIpCisgICAgICAgIG5wbV91bnBhY2sodGFyYmFsbCwgZC5nZXRWYXIoIk5QTV9QQUNLQUdFIiksIGQpCisKKyAgICAjIENvbmZpZ3VyZSB0aGUgY2FjaGVkIG1hbmlmZXN0IGZpbGUgYW5kIGNhY2hlZCBzaHJpbmt3cmFwIGZpbGUKKyAgICBkZWYgX3VwZGF0ZV9tYW5pZmVzdChkZXBrZXkpOgorICAgICAgICBmb3IgbmFtZSBpbiBvcmlnX21hbmlmZXN0LmdldChkZXBrZXksIHt9KToKKyAgICAgICAgICAgIHZlcnNpb24gPSBjYWNoZWRfc2hyaW5rd3JhcFsiZGVwZW5kZW5jaWVzIl1bbmFtZV1bInZlcnNpb24iXQorICAgICAgICAgICAgaWYgZGVwa2V5IG5vdCBpbiBjYWNoZWRfbWFuaWZlc3Q6CisgICAgICAgICAgICAgICAgY2FjaGVkX21hbmlmZXN0W2RlcGtleV0gPSB7fQorICAgICAgICAgICAgY2FjaGVkX21hbmlmZXN0W2RlcGtleV1bbmFtZV0gPSB2ZXJzaW9uCisKKyAgICBfdXBkYXRlX21hbmlmZXN0KCJkZXBlbmRlbmNpZXMiKQorCisgICAgaWYgZGV2OgorICAgICAgICBfdXBkYXRlX21hbmlmZXN0KCJkZXZEZXBlbmRlbmNpZXMiKQorCisgICAgd2l0aCBvcGVuKGNhY2hlZF9tYW5pZmVzdF9maWxlLCAidyIpIGFzIGY6CisgICAgICAgIGpzb24uZHVtcChjYWNoZWRfbWFuaWZlc3QsIGYsIGluZGVudD0yKQorCisgICAgd2l0aCBvcGVuKGNhY2hlZF9zaHJpbmt3cmFwX2ZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAganNvbi5kdW1wKGNhY2hlZF9zaHJpbmt3cmFwLCBmLCBpbmRlbnQ9MikKK30KKworcHl0aG9uIG5wbV9kb19jb21waWxlKCkgeworICAgICIiIgorICAgIFN0ZXAgdHdvOiBpbnN0YWxsIHRoZSBucG0gcGFja2FnZQorCisgICAgVXNlIHRoZSBjb25maWd1cmVkIG1haW4gcGFja2FnZSBhbmQgdGhlIGNhY2hlZCBkZXBlbmRlbmNpZXMgdG8gcnVuIHRoZQorICAgIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBUaGUgaW5zdGFsbGF0aW9uIGlzIGRvbmUgaW4gYSBkaXJlY3Rvcnkgd2hpY2ggaXMKKyAgICBub3QgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSB5ZXQuCisKKyAgICBBIGNvbWJpbmF0aW9uIG9mICducG0gcGFjaycgYW5kICducG0gaW5zdGFsbCcgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICBpbnN0YWxsZWQgZmlsZXMgYXJlIGFjdHVhbCBjb3BpZXMgaW5zdGVhZCBvZiBzeW1ib2xpYyBsaW5rcyAod2hpY2ggaXMgdGhlCisgICAgZGVmYXVsdCBucG0gYmVoYXZpb3IpLgorICAgICIiIgorICAgIGltcG9ydCBzaGxleAorICAgIGltcG9ydCB0ZW1wZmlsZQorICAgIGZyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgTnBtRW52aXJvbm1lbnQKKworICAgIGJiLnV0aWxzLnJlbW92ZShkLmdldFZhcigiTlBNX0JVSUxEIiksIHJlY3Vyc2U9VHJ1ZSkKKworICAgIGVudiA9IE5wbUVudmlyb25tZW50KGQsIGNvbmZpZ3M9bnBtX2dsb2JhbF9jb25maWdzKGQpKQorCisgICAgZGV2ID0gYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcigiTlBNX0lOU1RBTExfREVWIiksIEZhbHNlKQorCisgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBjb25maWdzID0gW10KKworICAgICAgICBpZiBkZXY6CisgICAgICAgICAgICBjb25maWdzLmFwcGVuZCgoImFsc28iLCAiZGV2ZWxvcG1lbnQiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgib25seSIsICJwcm9kdWN0aW9uIikpCisKKyAgICAgICAgIyBSZXBvcnQgYXMgbWFueSBsb2dzIGFzIHBvc3NpYmxlIGZvciBkZWJ1Z2dpbmcgcHVycG9zZQorICAgICAgICBjb25maWdzLmFwcGVuZCgoImxvZ2xldmVsIiwgInNpbGx5IikpCisKKyAgICAgICAgIyBDb25maWd1cmUgdGhlIGluc3RhbGxhdGlvbiB0byBiZSBkb25lIGdsb2JhbGx5IGluIHRoZSBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJnbG9iYWwiLCAidHJ1ZSIpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInByZWZpeCIsIGQuZ2V0VmFyKCJOUE1fQlVJTEQiKSkpCisKKyAgICAgICAgIyBBZGQgbm9kZS1neXAgY29uZmlndXJhdGlvbgorICAgICAgICBjb25maWdzLmFwcGVuZCgoImFyY2giLCBkLmdldFZhcigiTlBNX0FSQ0giKSkpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicmVsZWFzZSIsICJ0cnVlIikpCisgICAgICAgIHN5c3Jvb3QgPSBkLmdldFZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIikKKyAgICAgICAgbm9kZWRpciA9IG9zLnBhdGguam9pbihzeXNyb290LCBkLmdldFZhcigicHJlZml4X25hdGl2ZSIpLnN0cmlwKCIvIikpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgibm9kZWRpciIsIG5vZGVkaXIpKQorICAgICAgICBiaW5kaXIgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZC5nZXRWYXIoImJpbmRpcl9uYXRpdmUiKS5zdHJpcCgiLyIpKQorICAgICAgICBweXRob25kaXIgPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAicHl0aG9uLW5hdGl2ZSIsICJweXRob24iKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInB5dGhvbiIsIHB5dGhvbmRpcikpCisKKyAgICAgICAgIyBBZGQgbm9kZS1wcmUtZ3lwIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgYXJncy5hcHBlbmQoKCJ0YXJnZXRfYXJjaCIsIGQuZ2V0VmFyKCJOUE1fQVJDSCIpKSkKKyAgICAgICAgYXJncy5hcHBlbmQoKCJidWlsZC1mcm9tLXNvdXJjZSIsICJ0cnVlIikpCisKKyAgICAgICAgIyBQYWNrIGFuZCBpbnN0YWxsIHRoZSBtYWluIHBhY2thZ2UKKyAgICAgICAgdGFyYmFsbCA9IG5wbV9wYWNrKGVudiwgZC5nZXRWYXIoIk5QTV9QQUNLQUdFIiksIHRtcGRpcikKKyAgICAgICAgZW52LnJ1bigibnBtIGluc3RhbGwgJXMiICUgc2hsZXgucXVvdGUodGFyYmFsbCksIGFyZ3M9YXJncywgY29uZmlncz1jb25maWdzKQogfQogCiBucG1fZG9faW5zdGFsbCgpIHsKLQkjIGNoYW5naW5nIHRoZSBob21lIGRpcmVjdG9yeSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnksIHRoZSAubnBtcmMgd2lsbAotCSMgYmUgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeQotCWV4cG9ydCBIT01FPSR7V09SS0RJUn0KLQlta2RpciAtcCAke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcwotCWxvY2FsIE5QTV9QQUNLRklMRT0kKG5wbSBwYWNrIC4pCi0JbnBtIGluc3RhbGwgLS1wcmVmaXggJHtEfSR7cHJlZml4fSAtZyAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLXByb2R1Y3Rpb24gLS1uby1yZWdpc3RyeSAke05QTV9QQUNLRklMRX0KLQlsbiAtZnMgbm9kZV9tb2R1bGVzICR7RH0ke2xpYmRpcn0vbm9kZQotCWZpbmQgJHtEfSR7TlBNX0lOU1RBTExESVJ9IC10eXBlIGYgXCggLW5hbWUgIiouYSIgLW8gLW5hbWUgIiouZCIgLW8gLW5hbWUgIioubyIgXCkgLWRlbGV0ZQotCWlmIFsgLWQgJHtEfSR7cHJlZml4fS9ldGMgXSA7IHRoZW4KLQkJIyBUaGlzIHdpbGwgYmUgZW1wdHkKLQkJcm1kaXIgJHtEfSR7cHJlZml4fS9ldGMKLQlmaQotfQorICAgICMgU3RlcCB0aHJlZTogZmluYWwgaW5zdGFsbAorICAgICMKKyAgICAjIFRoZSBwcmV2aW91cyBpbnN0YWxsYXRpb24gaGF2ZSB0byBiZSBmaWx0ZXJlZCB0byByZW1vdmUgc29tZSBleHRyYSBmaWxlcy4KIAotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGluc3RkaXIgPSBkLmV4cGFuZCgnJHtEfSR7TlBNX0lOU1RBTExESVJ9JykKLSAgICBleHRyYXBhY2thZ2VzID0gb2UucGFja2FnZS5ucG1fc3BsaXRfcGFja2FnZV9kaXJzKGluc3RkaXIpCi0gICAgcGtnbmFtZXMgPSBleHRyYXBhY2thZ2VzLmtleXMoKQotICAgIGQucHJlcGVuZFZhcignUEFDS0FHRVMnLCAnJXMgJyAlICcgJy5qb2luKHBrZ25hbWVzKSkKLSAgICBmb3IgcGtnbmFtZSBpbiBwa2duYW1lczoKLSAgICAgICAgcGtncmVscGF0aCwgcGRhdGEgPSBleHRyYXBhY2thZ2VzW3BrZ25hbWVdCi0gICAgICAgIHBrZ3BhdGggPSAnJHtOUE1fSU5TVEFMTERJUn0vJyArIHBrZ3JlbHBhdGgKLSAgICAgICAgIyBwYWNrYWdlIG5hbWVzIGNhbid0IGhhdmUgdW5kZXJzY29yZXMgYnV0IG5wbSBwYWNrYWdlcyBzb21ldGltZXMgdXNlIHRoZW0KLSAgICAgICAgb2VfcGtnX25hbWUgPSBwa2duYW1lLnJlcGxhY2UoJ18nLCAnLScpCi0gICAgICAgIGV4cGFuZGVkX3BrZ25hbWUgPSBkLmV4cGFuZChvZV9wa2dfbmFtZSkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXyVzJyAlIGV4cGFuZGVkX3BrZ25hbWUsIHBrZ3BhdGgpCi0gICAgICAgIGlmIHBkYXRhOgotICAgICAgICAgICAgdmVyc2lvbiA9IHBkYXRhLmdldCgndmVyc2lvbicsIE5vbmUpCi0gICAgICAgICAgICBpZiB2ZXJzaW9uOgotICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdQS0dWXyVzJyAlIGV4cGFuZGVkX3BrZ25hbWUsIHZlcnNpb24pCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHBkYXRhLmdldCgnZGVzY3JpcHRpb24nLCBOb25lKQotICAgICAgICAgICAgaWYgZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJXMnICUgZXhwYW5kZWRfcGtnbmFtZSwgZGVzY3JpcHRpb24ucmVwbGFjZSh1Ilx1MjAxOCIsICInIikucmVwbGFjZSh1Ilx1MjAxOSIsICInIikpCi0gICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXyVzJyAlIGQuZ2V0VmFyKCdQTicpLCAnICVzJyAlICcgJy5qb2luKHBrZ25hbWVzKS5yZXBsYWNlKCdfJywgJy0nKSkKKyAgICBybSAtcmYgJHtEfQorCisgICAgIyBDb3B5IHRoZSBlbnRpcmUgbGliIGFuZCBiaW4gZGlyZWN0b3JpZXMKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtub25hcmNoX2xpYmRpcn0KKyAgICBjcCAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAtLXJlY3Vyc2l2ZSAke05QTV9CVUlMRH0vbGliLy4gJHtEfS8ke25vbmFyY2hfbGliZGlyfQorCisgICAgaWYgWyAtZCAiJHtOUE1fQlVJTER9L2JpbiIgXQorICAgIHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgICAgICBjcCAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAtLXJlY3Vyc2l2ZSAke05QTV9CVUlMRH0vYmluLy4gJHtEfS8ke2JpbmRpcn0KKyAgICBmaQorCisgICAgIyBJZiB0aGUgcGFja2FnZSAob3IgaXRzIGRlcGVuZGVuY2llcykgdXNlcyBub2RlLWd5cCB0byBidWlsZCBuYXRpdmUgYWRkb25zLAorICAgICMgb2JqZWN0IGZpbGVzLCBzdGF0aWMgbGlicmFyaWVzIG9yIG90aGVyIHRlbXBvcmFyeSBmaWxlcyBjYW4gYmUgaGlkZGVuIGluCisgICAgIyB0aGUgbGliIGRpcmVjdG9yeS4gVG8gcmVkdWNlIHRoZSBwYWNrYWdlIHNpemUgYW5kIHRvIGF2b2lkIFFBIGlzc3VlcworICAgICMgKHN0YXRpY2RldiB3aXRoIHN0YXRpYyBsaWJyYXJ5IGZpbGVzKSB0aGVzZSBmaWxlcyBtdXN0IGJlIHJlbW92ZWQuCisgICAgbG9jYWwgR1lQX1JFR0VYPSIuKi9idWlsZC9SZWxlYXNlL1teL10qLm5vZGUiCisKKyAgICAjIFJlbW92ZSBhbnkgbm9kZS1neXAgZGlyZWN0b3J5IGluICR7RH0gdG8gcmVtb3ZlIHRlbXBvcmFyeSBidWlsZCBmaWxlcworICAgIGZvciBHWVBfRF9GSUxFIGluICQoZmluZCAke0R9IC1yZWdleCAiJHtHWVBfUkVHRVh9IikKKyAgICBkbworICAgICAgICBsb2NhbCBHWVBfRF9ESVI9JHtHWVBfRF9GSUxFJS9SZWxlYXNlLyp9CisKKyAgICAgICAgcm0gLS1yZWN1cnNpdmUgLS1mb3JjZSAke0dZUF9EX0RJUn0KKyAgICBkb25lCisKKyAgICAjIENvcHkgb25seSB0aGUgbm9kZS1neXAgcmVsZWFzZSBmaWxlcworICAgIGZvciBHWVBfQl9GSUxFIGluICQoZmluZCAke05QTV9CVUlMRH0gLXJlZ2V4ICIke0dZUF9SRUdFWH0iKQorICAgIGRvCisgICAgICAgIGxvY2FsIEdZUF9EX0ZJTEU9JHtEfS8ke3ByZWZpeH0vJHtHWVBfQl9GSUxFIyR7TlBNX0JVSUxEfX0KKworICAgICAgICBpbnN0YWxsIC1kICR7R1lQX0RfRklMRSUvKn0KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgJHtHWVBfQl9GSUxFfSAke0dZUF9EX0ZJTEV9CisgICAgZG9uZQorCisgICAgIyBSZW1vdmUgdGhlIHNocmlua3dyYXAgZmlsZSB3aGljaCBkb2VzIG5vdCBuZWVkIHRvIGJlIHBhY2tlZAorICAgIHJtIC1mICR7RH0vJHtub25hcmNoX2xpYmRpcn0vbm9kZV9tb2R1bGVzLyovbnBtLXNocmlua3dyYXAuanNvbgorICAgIHJtIC1mICR7RH0vJHtub25hcmNoX2xpYmRpcn0vbm9kZV9tb2R1bGVzL0AqLyovbnBtLXNocmlua3dyYXAuanNvbgorCisgICAgIyBub2RlKDEpIGlzIHVzaW5nIC91c3IvbGliL25vZGUgYXMgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yeSBhbmQgbnBtKDEpIGlzCisgICAgIyB1c2luZyAvdXNyL2xpYi9ub2RlX21vZHVsZXMgYXMgaW5zdGFsbCBkaXJlY3RvcnkuIExldCdzIG1ha2UgYm90aCBoYXBweS4KKyAgICBsbiAtZnMgbm9kZV9tb2R1bGVzICR7RH0vJHtub25hcmNoX2xpYmRpcn0vbm9kZQogfQogCiBGSUxFU18ke1BOfSArPSAiIFwKICAgICAke2JpbmRpcn0gXAotICAgICR7bGliZGlyfS9ub2RlIFwKLSAgICAke05QTV9JTlNUQUxMRElSfSBcCisgICAgJHtub25hcmNoX2xpYmRpcn0gXAogIgogCi1FWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbAorRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggZTBkNmZmNi4uMGI1Y2Y0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwpAQCAtMjQ1LDYgKzI0NSw4IEBACiAgICAgICAgIGRlcHMgPSAiIgogICAgICAgICBmb3IgZGVwIGluIChkLmdldFZhcignUEFDS0FHRV9ERVBFTkRTJykgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICAgICBkZXBzICs9ICIgJXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIgJSBkZXAKKyAgICAgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfTUlOSURFQlVHSU5GTycpID09ICcxJzoKKyAgICAgICAgICAgIGRlcHMgKz0gJyB4ei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19wYWNrYWdlJywgJ2RlcGVuZHMnLCBkZXBzKQogCiAgICAgICAgICMgc2hsaWJzIHJlcXVpcmVzIGFueSBERVBFTkRTIHRvIGhhdmUgYWxyZWFkeSBwYWNrYWdlZCBmb3IgdGhlICoubGlzdCBmaWxlcwpAQCAtNDE2LDYgKzQxOCwxMjYgQEAKIAogICAgIHJldHVybiAoZmlsZSwgc291cmNlcykKIAorZGVmIHNwbGl0c3RhdGljZGVidWdpbmZvKGZpbGUsIGR2YXIsIGRlYnVnc3RhdGljZGlyLCBkZWJ1Z3N0YXRpY2xpYmRpciwgZGVidWdzdGF0aWNhcHBlbmQsIGRlYnVnc3JjZGlyLCBkKToKKyAgICAjIFVubGlrZSB0aGUgZnVuY3Rpb24gYWJvdmUsIHRoZXJlIGlzIG5vIHdheSB0byBzcGxpdCBhIHN0YXRpYyBsaWJyYXJ5CisgICAgIyB0d28gY29tcG9uZW50cy4gIFNvIHRvIGdldCBzaW1pbGFyIHJlc3VsdHMgd2Ugd2lsbCBjb3B5IHRoZSB1bm1vZGlmaWVkCisgICAgIyBzdGF0aWMgbGlicmFyeSAoY29udGFpbmluZyB0aGUgZGVidWcgc3ltYm9scykgaW50byBhIG5ldyBkaXJlY3RvcnkuCisgICAgIyBXZSB3aWxsIHRoZW4gc3RyaXAgKHByZXNlcnZpbmcgc3ltYm9scykgdGhlIHN0YXRpYyBsaWJyYXJ5IGluIHRoZQorICAgICMgdHlwaWNhbCBsb2NhdGlvbi4KKyAgICAjCisgICAgIyByZXR1cm4gYSBtYXBwaW5nIG9mIGZpbGVzOmRlYnVnc291cmNlcworCisgICAgaW1wb3J0IHN0YXQKKyAgICBpbXBvcnQgc2h1dGlsCisKKyAgICBzcmMgPSBmaWxlW2xlbihkdmFyKTpdCisgICAgZGVzdCA9IGRlYnVnc3RhdGljbGliZGlyICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z3N0YXRpY2RpciArICIvIiArIG9zLnBhdGguYmFzZW5hbWUoc3JjKSArIGRlYnVnc3RhdGljYXBwZW5kCisgICAgZGVidWdmaWxlID0gZHZhciArIGRlc3QKKyAgICBzb3VyY2VzID0gW10KKworICAgICMgQ29weSB0aGUgZmlsZS4uLgorICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZGVidWdmaWxlKSkKKyAgICAjYmIubm90ZSgiQ29weSAlcyAtPiAlcyIgJSAoZmlsZSwgZGVidWdmaWxlKSkKKworICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcpCisKKyAgICBuZXdtb2RlID0gTm9uZQorICAgIGlmIG5vdCBvcy5hY2Nlc3MoZmlsZSwgb3MuV19PSykgb3Igb3MuYWNjZXNzKGZpbGUsIG9zLlJfT0spOgorICAgICAgICBvcmlnbW9kZSA9IG9zLnN0YXQoZmlsZSlbc3RhdC5TVF9NT0RFXQorICAgICAgICBuZXdtb2RlID0gb3JpZ21vZGUgfCBzdGF0LlNfSVdSSVRFIHwgc3RhdC5TX0lSRUFECisgICAgICAgIG9zLmNobW9kKGZpbGUsIG5ld21vZGUpCisKKyAgICAjIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIGhlcmUuLi4KKyAgICBpZiBkZWJ1Z3NyY2RpcjoKKyAgICAgICAgc291cmNlcyA9IHNvdXJjZV9pbmZvKGZpbGUsIGQpCisKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlYnVnZmlsZSkpCisKKyAgICAjIENvcHkgdGhlIHVubW9kaWZpZWQgaXRlbSB0byB0aGUgZGVidWcgZGlyZWN0b3J5CisgICAgc2h1dGlsLmNvcHkyKGZpbGUsIGRlYnVnZmlsZSkKKworICAgIGlmIG5ld21vZGU6CisgICAgICAgIG9zLmNobW9kKGZpbGUsIG9yaWdtb2RlKQorCisgICAgcmV0dXJuIChmaWxlLCBzb3VyY2VzKQorCitkZWYgaW5qZWN0X21pbmlkZWJ1Z2luZm8oZmlsZSwgZHZhciwgZGVidWdkaXIsIGRlYnVnbGliZGlyLCBkZWJ1Z2FwcGVuZCwgZGVidWdzcmNkaXIsIGQpOgorICAgICMgRXh0cmFjdCBqdXN0IHRoZSBzeW1ib2xzIGZyb20gZGVidWdpbmZvIGludG8gbWluaWRlYnVnaW5mbywKKyAgICAjIGNvbXByZXNzIGl0IHdpdGggeHogYW5kIGluamVjdCBpdCBiYWNrIGludG8gdGhlIGJpbmFyeSBpbiBhIC5nbnVfZGVidWdkYXRhIHNlY3Rpb24uCisgICAgIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2dkYi9vbmxpbmVkb2NzL2dkYi9NaW5pRGVidWdJbmZvLmh0bWwKKworICAgIGltcG9ydCBzdWJwcm9jZXNzCisKKyAgICByZWFkZWxmID0gZC5nZXRWYXIoJ1JFQURFTEYnKQorICAgIG5tID0gZC5nZXRWYXIoJ05NJykKKyAgICBvYmpjb3B5ID0gZC5nZXRWYXIoJ09CSkNPUFknKQorCisgICAgbWluaWRlYnVnaW5mb2RpciA9IGQuZXhwYW5kKCcke1dPUktESVJ9L21pbmlkZWJ1Z2luZm8nKQorCisgICAgc3JjID0gZmlsZVtsZW4oZHZhcik6XQorICAgIGRlc3QgPSBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZShzcmMpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHNyYykgKyBkZWJ1Z2FwcGVuZAorICAgIGRlYnVnZmlsZSA9IGR2YXIgKyBkZXN0CisgICAgbWluaWRlYnVnZmlsZSA9IG1pbmlkZWJ1Z2luZm9kaXIgKyBzcmMgKyAnLm1pbmlkZWJ1ZycKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKG1pbmlkZWJ1Z2ZpbGUpKQorCisgICAgIyBJZiB3ZSBkaWRuJ3QgcHJvZHVjZSBkZWJ1Z2luZm8gZm9yIGFueSByZWFzb24sIHdlIGNhbid0IHByb2R1Y2UgbWluaWRlYnVnaW5mbyBlaXRoZXIKKyAgICAjIHNvIHNraXAgaXQuCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlYnVnZmlsZSk6CisgICAgICAgIGJiLmRlYnVnKDEsICdFTEYgZmlsZSB7fSBoYXMgbm8gZGVidWdpbmZvLCBza2lwcGluZyBtaW5pZGVidWdpbmZvIGluamVjdGlvbicuZm9ybWF0KGZpbGUpKQorICAgICAgICByZXR1cm4KKworICAgICMgRmluZCBub24tYWxsb2NhdGVkIFBST0dCSVRTLCBOT1RFLCBhbmQgTk9CSVRTIHNlY3Rpb25zIGluIHRoZSBkZWJ1Z2luZm8uCisgICAgIyBXZSB3aWxsIGV4Y2x1ZGUgYWxsIG9mIHRoZXNlIGZyb20gbWluaWRlYnVnaW5mbyB0byBzYXZlIHNwYWNlLgorICAgIHJlbW92ZV9zZWN0aW9uX25hbWVzID0gW10KKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbcmVhZGVsZiwgJy1XJywgJy1TJywgZGVidWdmaWxlXSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLnNwbGl0bGluZXMoKToKKyAgICAgICAgZmllbGRzID0gbGluZS5zcGxpdCgpCisgICAgICAgIGlmIGxlbihmaWVsZHMpIDwgODoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIG5hbWUgPSBmaWVsZHNbMF0KKyAgICAgICAgdHlwZSA9IGZpZWxkc1sxXQorICAgICAgICBmbGFncyA9IGZpZWxkc1s3XQorICAgICAgICAjIC5kZWJ1Z18gc2VjdGlvbnMgd2lsbCBiZSByZW1vdmVkIGJ5IG9iamNvcHkgLVMgc28gbm8gbmVlZCB0byBleHBsaWNpdGx5IHJlbW92ZSB0aGVtCisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnLmRlYnVnXycpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgJ0EnIG5vdCBpbiBmbGFncyBhbmQgdHlwZSBpbiBbJ1BST0dCSVRTJywgJ05PVEUnLCAnTk9CSVRTJ106CisgICAgICAgICAgICByZW1vdmVfc2VjdGlvbl9uYW1lcy5hcHBlbmQobmFtZSkKKworICAgICMgTGlzdCBkeW5hbWljIHN5bWJvbHMgaW4gdGhlIGJpbmFyeS4gV2UgY2FuIGV4Y2x1ZGUgdGhlc2UgZnJvbSBtaW5pZGVidWdpbmZvCisgICAgIyBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBwcmVzZW50IGluIHRoZSBiaW5hcnkuCisgICAgZHluc3ltcyA9IHNldCgpCisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW25tLCAnLUQnLCBmaWxlLCAnLS1mb3JtYXQ9cG9zaXgnLCAnLS1kZWZpbmVkLW9ubHknXSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLnNwbGl0bGluZXMoKToKKyAgICAgICAgZHluc3ltcy5hZGQobGluZS5zcGxpdCgpWzBdKQorCisgICAgIyBGaW5kIGFsbCBmdW5jdGlvbiBzeW1ib2xzIGZyb20gZGVidWdpbmZvIHdoaWNoIGFyZW4ndCBpbiB0aGUgZHluYW1pYyBzeW1ib2xzIHRhYmxlLgorICAgICMgVGhlc2UgYXJlIHRoZSBvbmVzIHdlIHdhbnQgdG8ga2VlcCBpbiBtaW5pZGVidWdpbmZvLgorICAgIGtlZXBfc3ltYm9sc19maWxlID0gbWluaWRlYnVnZmlsZSArICcuc3ltbGlzdCcKKyAgICBmb3VuZF9hbnlfc3ltYm9scyA9IEZhbHNlCisgICAgd2l0aCBvcGVuKGtlZXBfc3ltYm9sc19maWxlLCAndycpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtubSwgZGVidWdmaWxlLCAnLS1mb3JtYXQ9c3lzdicsICctLWRlZmluZWQtb25seSddLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgZmllbGRzID0gbGluZS5zcGxpdCgnfCcpCisgICAgICAgICAgICBpZiBsZW4oZmllbGRzKSA8IDc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG5hbWUgPSBmaWVsZHNbMF0uc3RyaXAoKQorICAgICAgICAgICAgdHlwZSA9IGZpZWxkc1szXS5zdHJpcCgpCisgICAgICAgICAgICBpZiB0eXBlID09ICdGVU5DJyBhbmQgbmFtZSBub3QgaW4gZHluc3ltczoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCd7fVxuJy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICAgICAgZm91bmRfYW55X3N5bWJvbHMgPSBUcnVlCisKKyAgICBpZiBub3QgZm91bmRfYW55X3N5bWJvbHM6CisgICAgICAgIGJiLmRlYnVnKDEsICdFTEYgZmlsZSB7fSBjb250YWlucyBubyBzeW1ib2xzLCBza2lwcGluZyBtaW5pZGVidWdpbmZvIGluamVjdGlvbicuZm9ybWF0KGZpbGUpKQorICAgICAgICByZXR1cm4KKworICAgIGJiLnV0aWxzLnJlbW92ZShtaW5pZGVidWdmaWxlKQorICAgIGJiLnV0aWxzLnJlbW92ZShtaW5pZGVidWdmaWxlICsgJy54eicpCisKKyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW29iamNvcHksICctUyddICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLXJlbW92ZS1zZWN0aW9uPXt9Jy5mb3JtYXQocykgZm9yIHMgaW4gcmVtb3ZlX3NlY3Rpb25fbmFtZXNdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWtlZXAtc3ltYm9scz17fScuZm9ybWF0KGtlZXBfc3ltYm9sc19maWxlKSwgZGVidWdmaWxlLCBtaW5pZGVidWdmaWxlXSkKKworICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ3h6JywgJy0ta2VlcCcsIG1pbmlkZWJ1Z2ZpbGVdKQorCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtvYmpjb3B5LCAnLS1hZGQtc2VjdGlvbicsICcuZ251X2RlYnVnZGF0YT17fS54eicuZm9ybWF0KG1pbmlkZWJ1Z2ZpbGUpLCBmaWxlXSkKKwogZGVmIGNvcHlkZWJ1Z3NvdXJjZXMoZGVidWdzcmNkaXIsIHNvdXJjZXMsIGQpOgogICAgICMgVGhlIGRlYnVnIHNyYyBpbmZvcm1hdGlvbiB3cml0dGVuIG91dCB0byBzb3VyY2VmaWxlIGlzIGZ1cnRoZXIgcHJvY2Vzc2VkCiAgICAgIyBhbmQgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBoZXJlLgpAQCAtNDkyLDcgKzYxNCw3IEBACiAjIFBhY2thZ2UgZGF0YSBoYW5kbGluZyByb3V0aW5lcwogIwogCi1kZWYgZ2V0X3BhY2thZ2VfbWFwcGluZyAocGtnLCBiYXNlcGtnLCBkKToKK2RlZiBnZXRfcGFja2FnZV9tYXBwaW5nIChwa2csIGJhc2Vwa2csIGQsIGRlcHZlcnNpb25zPU5vbmUpOgogICAgIGltcG9ydCBvZS5wYWNrYWdlZGF0YQogCiAgICAgZGF0YSA9IG9lLnBhY2thZ2VkYXRhLnJlYWRfc3VicGtnZGF0YShwa2csIGQpCkBAIC01MDMsNiArNjI1LDE0IEBACiAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBkKSBhbmQgbm90IGQuZ2V0VmFyKCdNVUxUSUxJQl9WQVJJQU5UUycpIFwKICAgICAgICAgICAgIGFuZCBkYXRhW2tleV0gPT0gYmFzZXBrZzoKICAgICAgICAgICAgIHJldHVybiBwa2cKKyAgICAgICAgaWYgZGVwdmVyc2lvbnMgPT0gW106CisgICAgICAgICAgICAjIEF2b2lkIHJldHVybmluZyBhIG1hcHBpbmcgaWYgdGhlIHJlbmFtZWQgcGFja2FnZSBycHJvdmlkZXMgaXRzIG9yaWdpbmFsIG5hbWUKKyAgICAgICAgICAgIHJwcm92a2V5ID0gIlJQUk9WSURFU18lcyIgJSBwa2cKKyAgICAgICAgICAgIGlmIHJwcm92a2V5IGluIGRhdGE6CisgICAgICAgICAgICAgICAgaWYgcGtnIGluIGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihkYXRhW3Jwcm92a2V5XSk6CisgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIiVzIHJwcm92aWRlcyAlcywgbm90IHJlcGxhY2luZyB0aGUgbGF0dGVyIiAlIChkYXRhW2tleV0sIHBrZykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwa2cKKyAgICAgICAgIyBEbyBtYXAgdG8gcmV3cml0dGVuIHBhY2thZ2UgbmFtZQogICAgICAgICByZXR1cm4gZGF0YVtrZXldCiAKICAgICByZXR1cm4gcGtnCkBAIC01MjMsOCArNjUzLDEwIEBACiAKICAgICBuZXdfZGVwZW5kcyA9IHt9CiAgICAgZGVwcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihkLmdldFZhcih2YXJuYW1lKSBvciAiIikKLSAgICBmb3IgZGVwZW5kIGluIGRlcHM6Ci0gICAgICAgIG5ld19kZXBlbmQgPSBnZXRfcGFja2FnZV9tYXBwaW5nKGRlcGVuZCwgcGtnLCBkKQorICAgIGZvciBkZXBlbmQsIGRlcHZlcnNpb25zIGluIGRlcHMuaXRlbXMoKToKKyAgICAgICAgbmV3X2RlcGVuZCA9IGdldF9wYWNrYWdlX21hcHBpbmcoZGVwZW5kLCBwa2csIGQsIGRlcHZlcnNpb25zKQorICAgICAgICBpZiBkZXBlbmQgIT0gbmV3X2RlcGVuZDoKKyAgICAgICAgICAgIGJiLm5vdGUoInBhY2thZ2UgbmFtZSBtYXBwaW5nIGRvbmU6ICVzIC0+ICVzIiAlIChkZXBlbmQsIG5ld19kZXBlbmQpKQogICAgICAgICBuZXdfZGVwZW5kc1tuZXdfZGVwZW5kXSA9IGRlcHNbZGVwZW5kXQogCiAgICAgZC5zZXRWYXIodmFybmFtZSwgYmIudXRpbHMuam9pbl9kZXBzKG5ld19kZXBlbmRzLCBjb21tYXNlcD1GYWxzZSkpCkBAIC05MTYsMjUgKzEwNDgsMzcgQEAKICAgICBpZiBkLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScpID09ICdkZWJ1Zy1maWxlLWRpcmVjdG9yeSc6CiAgICAgICAgICMgU2luZ2xlIGRlYnVnLWZpbGUtZGlyZWN0b3J5IHN0eWxlIGRlYnVnIGluZm8KICAgICAgICAgZGVidWdhcHBlbmQgPSAiLmRlYnVnIgorICAgICAgICBkZWJ1Z3N0YXRpY2FwcGVuZCA9ICIiCiAgICAgICAgIGRlYnVnZGlyID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNkaXIgPSAiIgogICAgICAgICBkZWJ1Z2xpYmRpciA9ICIvdXNyL2xpYi9kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNsaWJkaXIgPSAiL3Vzci9saWIvZGVidWctc3RhdGljIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKICAgICBlbGlmIGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJykgPT0gJ2RlYnVnLXdpdGhvdXQtc3JjJzoKICAgICAgICAgIyBPcmlnaW5hbCBPRS1jb3JlLCBhLmsuYS4gIi5kZWJ1ZyIsIHN0eWxlIGRlYnVnIGluZm8sIGJ1dCB3aXRob3V0IHNvdXJjZXMgaW4gL3Vzci9zcmMvZGVidWcKICAgICAgICAgZGVidWdhcHBlbmQgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2FwcGVuZCA9ICIiCiAgICAgICAgIGRlYnVnZGlyID0gIi8uZGVidWciCisgICAgICAgIGRlYnVnc3RhdGljZGlyID0gIi8uZGVidWctc3RhdGljIgogICAgICAgICBkZWJ1Z2xpYmRpciA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljbGliZGlyID0gIiIKICAgICAgICAgZGVidWdzcmNkaXIgPSAiIgogICAgIGVsaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnKSA9PSAnZGVidWctd2l0aC1zcmNwa2cnOgogICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljYXBwZW5kID0gIiIKICAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNkaXIgPSAiLy5kZWJ1Zy1zdGF0aWMiCiAgICAgICAgIGRlYnVnbGliZGlyID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNsaWJkaXIgPSAiIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKICAgICBlbHNlOgogICAgICAgICAjIE9yaWdpbmFsIE9FLWNvcmUsIGEuay5hLiAiLmRlYnVnIiwgc3R5bGUgZGVidWcgaW5mbwogICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljYXBwZW5kID0gIiIKICAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNkaXIgPSAiLy5kZWJ1Zy1zdGF0aWMiCiAgICAgICAgIGRlYnVnbGliZGlyID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNsaWJkaXIgPSAiIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKIAogICAgICMKQEAgLTk1NSwxMiArMTA5OSw2IEBACiAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBjcGF0aC53YWxrKGR2YXIpOgogICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQotICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoIi5rbyIpIGFuZCBmaWxlLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAga2Vybm1vZHMuYXBwZW5kKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgb2UucGFja2FnZS5pc19zdGF0aWNfbGliKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzdGF0aWNsaWJzLmFwcGVuZChmaWxlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgIyBTa2lwIGRlYnVnIGZpbGVzCiAgICAgICAgICAgICAgICAgaWYgZGVidWdhcHBlbmQgYW5kIGZpbGUuZW5kc3dpdGgoZGVidWdhcHBlbmQpOgpAQCAtOTcxLDYgKzExMDksMTMgQEAKICAgICAgICAgICAgICAgICBpZiBmaWxlIGluIHNraXBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAorICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoIi5rbyIpIGFuZCBmaWxlLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMToKKyAgICAgICAgICAgICAgICAgICAga2Vybm1vZHMuYXBwZW5kKGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgb2UucGFja2FnZS5pc19zdGF0aWNfbGliKGZpbGUpOgorICAgICAgICAgICAgICAgICAgICBzdGF0aWNsaWJzLmFwcGVuZChmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBsdGFyZ2V0ID0gY3BhdGgucmVhbHBhdGgoZmlsZSwgZHZhciwgRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHMgPSBjcGF0aC5sc3RhdChsdGFyZ2V0KQpAQCAtMTA1MCw4ICsxMTk1LDExIEBACiAgICAgICAgIHJlc3VsdHMgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKHNwbGl0ZGVidWdpbmZvLCBsaXN0KGVsZmZpbGVzKSwgZCwgZXh0cmFhcmdzPShkdmFyLCBkZWJ1Z2RpciwgZGVidWdsaWJkaXIsIGRlYnVnYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCkpCiAKICAgICAgICAgaWYgZGVidWdzcmNkaXIgYW5kIG5vdCB0YXJnZXRvcy5zdGFydHN3aXRoKCJtaW5ndyIpOgotICAgICAgICAgICAgZm9yIGZpbGUgaW4gc3RhdGljbGliczoKLSAgICAgICAgICAgICAgICByZXN1bHRzLmV4dGVuZChzb3VyY2VfaW5mbyhmaWxlLCBkLCBmYXRhbD1GYWxzZSkpCisgICAgICAgICAgICBpZiAoZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1RBVElDX1NQTElUJykgPT0gJzEnKToKKyAgICAgICAgICAgICAgICByZXN1bHRzID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChzcGxpdHN0YXRpY2RlYnVnaW5mbywgc3RhdGljbGlicywgZCwgZXh0cmFhcmdzPShkdmFyLCBkZWJ1Z3N0YXRpY2RpciwgZGVidWdzdGF0aWNsaWJkaXIsIGRlYnVnc3RhdGljYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBmaWxlIGluIHN0YXRpY2xpYnM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCAoZmlsZSxzb3VyY2VfaW5mbyhmaWxlLCBkKSkgKQogCiAgICAgICAgIHNvdXJjZXMgPSBzZXQoKQogICAgICAgICBmb3IgciBpbiByZXN1bHRzOgpAQCAtMTEyMCw5ICsxMjY4LDE3IEBACiAgICAgICAgICAgICBzZmlsZXMuYXBwZW5kKChmaWxlLCBlbGZfZmlsZSwgc3RyaXApKQogICAgICAgICBmb3IgZiBpbiBrZXJubW9kczoKICAgICAgICAgICAgIHNmaWxlcy5hcHBlbmQoKGYsIDE2LCBzdHJpcCkpCisgICAgICAgIGlmIChkLmdldFZhcignUEFDS0FHRV9TVFJJUF9TVEFUSUMnKSA9PSAnMScgb3IgZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1RBVElDX1NQTElUJykgPT0gJzEnKToKKyAgICAgICAgICAgIGZvciBmIGluIHN0YXRpY2xpYnM6CisgICAgICAgICAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZiwgMTYsIHN0cmlwKSkKIAogICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKG9lLnBhY2thZ2UucnVuc3RyaXAsIHNmaWxlcywgZCkKIAorICAgICMgQnVpbGQgIm1pbmlkZWJ1Z2luZm8iIGFuZCByZWluamVjdCBpdCBiYWNrIGludG8gdGhlIHN0cmlwcGVkIGJpbmFyaWVzCisgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfTUlOSURFQlVHSU5GTycpID09ICcxJzoKKyAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChpbmplY3RfbWluaWRlYnVnaW5mbywgbGlzdChlbGZmaWxlcyksIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFhcmdzPShkdmFyLCBkZWJ1Z2RpciwgZGVidWdsaWJkaXIsIGRlYnVnYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCkpCisKICAgICAjCiAgICAgIyBFbmQgb2Ygc3RyaXAKICAgICAjCkBAIC0xMTg3LDcgKzEzNDMsNyBAQAogICAgICAgICAgICAgZGlyID0gb3Muc2VwCiAgICAgICAgIGZvciBmIGluIChmaWxlcyArIGRpcnMpOgogICAgICAgICAgICAgcGF0aCA9ICIuIiArIG9zLnBhdGguam9pbihkaXIsIGYpCi0gICAgICAgICAgICBpZiAiLy5kZWJ1Zy8iIGluIHBhdGggb3IgcGF0aC5lbmRzd2l0aCgiLy5kZWJ1ZyIpOgorICAgICAgICAgICAgaWYgIi8uZGVidWcvIiBpbiBwYXRoIG9yICIvLmRlYnVnLXN0YXRpYy8iIGluIHBhdGggb3IgcGF0aC5lbmRzd2l0aCgiLy5kZWJ1ZyIpOgogICAgICAgICAgICAgICAgIGRlYnVnLmFwcGVuZChwYXRoKQogCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKQEAgLTEyNjMsOCArMTQxOSw5IEBACiAgICAgIyBIYW5kbGUgTElDRU5TRV9FWENMVVNJT04KICAgICBwYWNrYWdlX2xpc3QgPSBbXQogICAgIGZvciBwa2cgaW4gcGFja2FnZXM6Ci0gICAgICAgIGlmIGQuZ2V0VmFyKCdMSUNFTlNFX0VYQ0xVU0lPTi0nICsgcGtnKToKLSAgICAgICAgICAgIG1zZyA9ICIlcyBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2UuIEV4Y2x1ZGluZyBmcm9tIHBhY2thZ2luZy4iICUgcGtnCisgICAgICAgIGxpY2Vuc2VzID0gZC5nZXRWYXIoJ0xJQ0VOU0VfRVhDTFVTSU9OLScgKyBwa2cpCisgICAgICAgIGlmIGxpY2Vuc2VzOgorICAgICAgICAgICAgbXNnID0gIkV4Y2x1ZGluZyAlcyBmcm9tIHBhY2thZ2luZyBhcyBpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzIiAlIChwa2csIGxpY2Vuc2VzKQogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImluY29tcGF0aWJsZS1saWNlbnNlIiwgbXNnLCBkKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGFja2FnZV9saXN0LmFwcGVuZChwa2cpCkBAIC0yMTA4LDEwICsyMjY1LDEyIEBACiAjIGl0ZXJhdGlvbiwgd2UgbmVlZCB0byBsaXN0IHRoZW0gaGVyZToKIFBBQ0tBR0VWQVJTID0gIkZJTEVTIFJERVBFTkRTIFJSRUNPTU1FTkRTIFNVTU1BUlkgREVTQ1JJUFRJT04gUlNVR0dFU1RTIFJQUk9WSURFUyBSQ09ORkxJQ1RTIFBLRyBBTExPV19FTVBUWSBwa2dfcG9zdGluc3QgcGtnX3Bvc3RybSBwa2dfcG9zdGluc3Rfb250YXJnZXQgSU5JVFNDUklQVF9OQU1FIElOSVRTQ1JJUFRfUEFSQU1TIERFQklBTl9OT0FVVE9OQU1FIEFMVEVSTkFUSVZFIFBLR0UgUEtHViBQS0dSIFVTRVJBRERfUEFSQU0gR1JPVVBBRERfUEFSQU0gQ09ORkZJTEVTIFNZU1RFTURfU0VSVklDRSBMSUNFTlNFIFNFQ1RJT04gcGtnX3ByZWluc3QgcGtnX3ByZXJtIFJSRVBMQUNFUyBHUk9VUE1FTVNfUEFSQU0gU1lTVEVNRF9BVVRPX0VOQUJMRSBTS0lQX0ZJTEVERVBTIFBSSVZBVEVfTElCUyIKIAotZGVmIGdlbl9wYWNrYWdldmFyKGQpOgorZGVmIGdlbl9wYWNrYWdldmFyKGQsIHBrZ3ZhcnM9IlBBQ0tBR0VWQVJTIik6CiAgICAgcmV0ID0gW10KICAgICBwa2dzID0gKGQuZ2V0VmFyKCJQQUNLQUdFUyIpIG9yICIiKS5zcGxpdCgpCi0gICAgdmFycyA9IChkLmdldFZhcigiUEFDS0FHRVZBUlMiKSBvciAiIikuc3BsaXQoKQorICAgIHZhcnMgPSAoZC5nZXRWYXIocGtndmFycykgb3IgIiIpLnNwbGl0KCkKKyAgICBmb3IgdiBpbiB2YXJzOgorICAgICAgICByZXQuYXBwZW5kKHYpCiAgICAgZm9yIHAgaW4gcGtnczoKICAgICAgICAgZm9yIHYgaW4gdmFyczoKICAgICAgICAgICAgIHJldC5hcHBlbmQodiArICJfIiArIHApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwppbmRleCA0ZjIzOTc3Li5jMDA4NTU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgIGltcG9ydCB0ZXh0d3JhcAogICAgIGltcG9ydCBjb2xsZWN0aW9ucworICAgIGltcG9ydCBnbG9iCiAKICAgICBkZWYgY2xlYW51cGNvbnRyb2wocm9vdCk6CiAgICAgICAgIGZvciBwIGluIFsnQ09OVFJPTCcsICdERUJJQU4nXToKQEAgLTEwMSw4ICsxMDIsNyBAQAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocGtnb3V0ZGlyKQogICAgICAgICBvcy5jaGRpcihyb290KQogICAgICAgICBjbGVhbnVwY29udHJvbChyb290KQotICAgICAgICBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKLSAgICAgICAgZyA9IGdsb2IoJyonKQorICAgICAgICBnID0gZ2xvYi5nbG9iKCcqJykKICAgICAgICAgaWYgbm90IGcgYW5kIGxvY2FsZGF0YS5nZXRWYXIoJ0FMTE9XX0VNUFRZJywgRmFsc2UpICE9ICIxIjoKICAgICAgICAgICAgIGJiLm5vdGUoIk5vdCBjcmVhdGluZyBlbXB0eSBhcmNoaXZlIGZvciAlcy0lcy0lcyIgJSAocGtnLCBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dWJyksIGxvY2FsZGF0YS5nZXRWYXIoJ1BLR1InKSkpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTIzNyw2ICsyMzcsMTAgQEAKICAgICAgICAgY2xlYW51cGNvbnRyb2wocm9vdCkKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIAorIyBIYXZlIHRvIGxpc3QgYW55IHZhcmlhYmxlcyByZWZlcmVuY2VkIGFzIFhfPHBrZz4gdGhhdCBhcmVuJ3QgaW4gcGtnZGF0YSBoZXJlCitJUEtFWFRSQVZBUlMgPSAiUFJJT1JJVFkgTUFJTlRBSU5FUiBQQUNLQUdFX0FSQ0ggSE9NRVBBR0UiCitpcGtfd3JpdGVfcGtnW3ZhcmRlcHNdICs9ICIke0BnZW5fcGFja2FnZXZhcihkLCAnSVBLRVhUUkFWQVJTJyl9IgorCiAjIE90aGVyd2lzZSBhbGxhcmNoIHBhY2thZ2VzIG1heSBjaGFuZ2UgZGVwZW5kaW5nIG9uIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb24KIGlwa193cml0ZV9wa2dbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKaW5kZXggY2QyNDFmMS4uMjVlYzA4OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCkBAIC01LDYgKzUsMTMgQEAKIAogUEFUQ0hERVBFTkRFTkNZID0gIiR7UEFUQ0hUT09MfS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAorIyBUaGVyZSBpcyBhIGJ1ZyBpbiBwYXRjaCAyLjcuMyBhbmQgZWFybGllciB3aGVyZSBpbmRleCBsaW5lcworIyBpbiBwYXRjaGVzIGNhbiBjaGFuZ2UgZmlsZSBtb2RlcyB3aGVuIHRoZXkgc2hvdWxkbid0OgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvcGF0Y2gvP2lkPTgyYjgwMGM5NTUyYTA4OGEyNDE0NTc5NDgyMTlkMjVjZTBhNDA3YTQKKyMgVGhpcyBsZWFrcyBpbnRvIGRlYnVnIHNvdXJjZXMgaW4gcGFydGljdWxhci4gQWRkIHRoZSBkZXBlbmRlbmN5CisjIHRvIHRhcmdldCByZWNpcGVzIHRvIGF2b2lkIHRoaXMgcHJvYmxlbSB1bnRpbCB3ZSBjYW4gcmVseSBvbiAyLjcuNCBvciBsYXRlci4KK1BBVENIREVQRU5ERU5DWV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBwYXRjaC1yZXBsYWNlbWVudC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKwogUEFUQ0hfR0lUX1VTRVJfTkFNRSA/PSAiT3BlbkVtYmVkZGVkIgogUEFUQ0hfR0lUX1VTRVJfRU1BSUwgPz0gIm9lLnBhdGNoQG9lIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwppbmRleCBkMDM0NjViLi5mODVjM2I5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKQEAgLTIxLDYgKzIxLDcgQEAKIAogU0RLSU1BR0VfRkVBVFVSRVMgPz89ICJkZXYtcGtncyBkYmctcGtncyBzcmMtcGtncyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FwaS1kb2N1bWVudGF0aW9uJywgJ2RvYy1wa2dzJywgJycsIGQpfSIKIFNES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWSA9ICcke0Bjb21wbGVtZW50YXJ5X2dsb2JzKCJTREtJTUFHRV9GRUFUVVJFUyIsIGQpfScKK1NES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWVt2YXJkZXBzXSArPSAiU0RLSU1BR0VfRkVBVFVSRVMiCiAKIFBBQ0tBR0VfQVJDSFNfYXBwZW5kX3Rhc2stcG9wdWxhdGUtc2RrID0gIiBzZGstcHJvdmlkZXMtZHVtbXktdGFyZ2V0IgogU0RLX1BBQ0tBR0VfQVJDSFMgKz0gInNkay1wcm92aWRlcy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCkBAIC00OCw2ICs0OSw4IEBACiAKICMgRGVmYXVsdCBhcmNoaXZlZCBTREsncyBzdWZmaXgKIFNES19BUkNISVZFX1RZUEUgPz0gInRhci54eiIKK1NES19YWl9DT01QUkVTU0lPTl9MRVZFTCA/PSAiLTkiCitTREtfWFpfT1BUSU9OUyA/PSAiJHtYWl9ERUZBVUxUU30gJHtTREtfWFpfQ09NUFJFU1NJT05fTEVWRUx9IgogCiAjIFRvIHN1cHBvcnQgZGlmZmVyZW50IHNkayB0eXBlIGFjY29yZGluZyB0byBTREtfQVJDSElWRV9UWVBFLCBub3cgc3VwcG9ydCB6aXAgYW5kIHRhci54egogcHl0aG9uICgpIHsKQEAgLTU4LDcgKzYxLDcgQEAKICAgICAgICBkLnNldFZhcignU0RLX0FSQ0hJVkVfQ01EJywgJ2NkICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfTsgemlwIC1yICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS4ke1NES19BUkNISVZFX1RZUEV9IC4nKQogICAgIGVsc2U6CiAgICAgICAgZC5zZXRWYXIoJ1NES19BUkNISVZFX0RFUEVORFMnLCAneHotbmF0aXZlJykKLSAgICAgICBkLnNldFZhcignU0RLX0FSQ0hJVkVfQ01EJywgJ2NkICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfTsgdGFyICR7U0RLVEFST1BUU30gLWNmIC0gLiB8IHh6IC1UIDAgLTkgPiAke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uJHtTREtfQVJDSElWRV9UWVBFfScpCisgICAgICAgZC5zZXRWYXIoJ1NES19BUkNISVZFX0NNRCcsICdjZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH07IHRhciAke1NES1RBUk9QVFN9IC1jZiAtIC4gfCB4eiAke1NES19YWl9PUFRJT05TfSA+ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS4ke1NES19BUkNISVZFX1RZUEV9JykKIH0KIAogU0RLX1JERVBFTkRTID0gIiR7VE9PTENIQUlOX1RBUkdFVF9UQVNLfSAke1RPT0xDSEFJTl9IT1NUX1RBU0t9IgpAQCAtMTgyLDYgKzE4NSwxMSBAQAogCSMgRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBsaWtlICcrJyBhbmQgJy4nIGluIHRoZSBTREtQQVRICiAJZXNjYXBlZF9zZGtwYXRoPSQoZWNobyAke1NES1BBVEh9IHxzZWQgLWUgInM6W1wrXC5dOlxcXFxcXFxcXDA6ZyIpCiAJc2VkIC1pIC1lICJzOiMjREVGQVVMVF9JTlNUQUxMX0RJUiMjOiRlc2NhcGVkX3Nka3BhdGg6IiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vcmVsb2NhdGVfc2RrLnB5CisKKyAgICAgICBta2RpciAtcCAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke3N5c2NvbmZkaXJ9LworICAgICAgIGVjaG8gJyR7U0RLUEFUSE5BVElWRX0ke2xpYmRpcl9uYXRpdmVzZGt9Ciske1NES1BBVEhOQVRJVkV9JHtiYXNlX2xpYmRpcl9uYXRpdmVzZGt9CitpbmNsdWRlIC9ldGMvbGQuc28uY29uZicgPiAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYKIH0KIAogcHl0aG9uIGNoZWNrX3Nka19zeXNyb290cygpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcwppbmRleCAwNWNmYzFjLi45ZjI2Y2ZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCkBAIC0xMjQsNyArMTI0LDcgQEAKIGRlZiBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKToKICAgICAiIiJDbGVhbiB1cCB0cmFjZXMgb2YgdGhlIGZha2UgYnVpbGQgZm9yIGNyZWF0ZV9maWx0ZXJlZF90YXNrbGlzdCgpIiIiCiAgICAgaW1wb3J0IHNodXRpbAotICAgIGNsZWFucGF0aHMgPSAnY2FjaGUgY29uZi9zYW5pdHlfaW5mbyB0bXAnLnNwbGl0KCkKKyAgICBjbGVhbnBhdGhzID0gWydjYWNoZScsICd0bXAnXQogICAgIGZvciBwdGggaW4gY2xlYW5wYXRoczoKICAgICAgICAgZnVsbHB0aCA9IG9zLnBhdGguam9pbihzZGtiYXNlcGF0aCwgcHRoKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGxwdGgpOgpAQCAtMTc5LDcgKzE3OSw5IEBACiAgICAgICAgICMgd2lsbCBlZmZlY3RpdmVseSBkbwogICAgICAgICBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKQogICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLnJlcGxhY2Uoc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZi5iYWsnLCBzZGtiYXNlcGF0aCArICcvY29uZi9sb2NhbC5jb25mJykKKyAgICAgICAgbG9jYWxjb25mID0gc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZicKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9jYWxjb25mICsgJy5iYWsnKToKKyAgICAgICAgICAgIG9zLnJlcGxhY2UobG9jYWxjb25mICsgJy5iYWsnLCBsb2NhbGNvbmYpCiAKIHB5dGhvbiBjb3B5X2J1aWxkc3lzdGVtICgpIHsKICAgICBpbXBvcnQgcmUKQEAgLTM4Niw5ICszODgsMTMgQEAKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguam9pbihiYXNlb3V0cGF0aCwgJ2NhY2hlJykpCiAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShidWlsZGRpciArICcvY2FjaGUvYmJfdW5paGFzaGVzLmRhdCcsIGJhc2VvdXRwYXRoICsgJy9jYWNoZS9iYl91bmloYXNoZXMuZGF0JykKIAotICAgICMgV3JpdGUgYSB0ZW1wbGF0ZWNvbmYuY2ZnCi0gICAgd2l0aCBvcGVuKGJhc2VvdXRwYXRoICsgJy9jb25mL3RlbXBsYXRlY29uZi5jZmcnLCAndycpIGFzIGY6Ci0gICAgICAgIGYud3JpdGUoJ21ldGEvY29uZlxuJykKKyAgICAjIFVzZSB0ZW1wbGF0ZWNvbmYuY2ZnIGZpbGUgZnJvbSBidWlsZGRpciBpZiBleGlzdHMKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhidWlsZGRpciArICcvY29uZi90ZW1wbGF0ZWNvbmYuY2ZnJyk6CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShidWlsZGRpciArICcvY29uZi90ZW1wbGF0ZWNvbmYuY2ZnJywgYmFzZW91dHBhdGggKyAnL2NvbmYvdGVtcGxhdGVjb25mLmNmZycpCisgICAgZWxzZToKKyAgICAgICAgIyBXcml0ZSBhIHRlbXBsYXRlY29uZi5jZmcKKyAgICAgICAgd2l0aCBvcGVuKGJhc2VvdXRwYXRoICsgJy9jb25mL3RlbXBsYXRlY29uZi5jZmcnLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdtZXRhL2NvbmZcbicpCiAKICAgICAjIEVuc3VyZSBhbnkgdmFyaWFibGVzIHNldCBmcm9tIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudCAoYnkgd2F5IG9mCiAgICAgIyBCQl9FTlZfRVhUUkFXSElURSkgYXJlIHNldCBpbiB0aGUgU0RLJ3MgY29uZmlndXJhdGlvbgpAQCAtNjExLDggKzYxNyw4IEBACiAJCWV4aXQgMQogCWZpCiAJIyBUaGUgcmVsb2NhdGlvbiBzY3JpcHQgdXNlZCBieSBidWlsZHRvb2xzIGluc3RhbGxlciByZXF1aXJlcyBweXRob24KLQlpZiAhIGNvbW1hbmQgLXYgcHl0aG9uID4gL2Rldi9udWxsOyB0aGVuCi0JCWVjaG8gIkVSUk9SOiBUaGUgaW5zdGFsbGVyIHJlcXVpcmVzIHB5dGhvbiwgcGxlYXNlIGluc3RhbGwgaXQgZmlyc3QiCisJaWYgISBjb21tYW5kIC12IHB5dGhvbjMgPiAvZGV2L251bGw7IHRoZW4KKwkJZWNobyAiRVJST1I6IFRoZSBpbnN0YWxsZXIgcmVxdWlyZXMgcHl0aG9uMywgcGxlYXNlIGluc3RhbGwgaXQgZmlyc3QiCiAJCWV4aXQgMQogCWZpCiAJbWlzc2luZ191dGlscz0iIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uLWRpci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uLWRpci5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTFkYzM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbi1kaXIuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUFlUSE9OX0JBU0VWRVJTSU9OID0gIjIuNyIKLVBZVEhPTl9BQkkgPSAiIgotUFlUSE9OX0RJUiA9ICJweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0iCi1QWVRIT05fUE4gPSAicHl0aG9uIgotUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjMtZGlyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zLWRpci5iYmNsYXNzCmluZGV4IDdkZDEzMGIuLjAzNmQ3MTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjMtZGlyLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uMy1kaXIuYmJjbGFzcwpAQCAtMSw1ICsxLDUgQEAKLVBZVEhPTl9CQVNFVkVSU0lPTiA9ICIzLjciCi1QWVRIT05fQUJJID0gIm0iCitQWVRIT05fQkFTRVZFUlNJT04gPSAiMy44IgorUFlUSE9OX0FCSSA9ICIiCiBQWVRIT05fRElSID0gInB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSIKIFBZVEhPTl9QTiA9ICJweXRob24zIgogUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlOTAxOWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLWluaGVyaXQgcHl0aG9uLWRpcgotCi1QWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiIKLSMgUFlUSE9OX0VYRUNVVEFCTEUgaXMgdXNlZCBieSBjbWFrZQotUFlUSE9OX0VYRUNVVEFCTEU9IiR7UFlUSE9OfSIKLUVYVFJBTkFUSVZFUEFUSCArPSAicHl0aG9uLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kID0gIiBweXRob24tbmF0aXZlICIKLQotIyBweXRob24tY29uZmlnIGFuZCBvdGhlciBzY3JpcHRzIGFyZSB1c2luZyBkaXN0dXRpbHMgbW9kdWxlcwotIyB3aGljaCB3ZSBwYXRjaCB0byBhY2Nlc3MgdGhlc2UgdmFyaWFibGVzCi1leHBvcnQgU1RBR0lOR19JTkNESVIKLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotCi0jIFBhY2thZ2VzIGNhbiB1c2UKLSMgZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCBSRVFVSVJFRCkKLSMgZmluZF9wYWNrYWdlKFB5dGhvbkxpYnMgUkVRVUlSRUQpCi0jIHdoaWNoIGVuZHMgdXAgdXNpbmcgbGlicy9pbmNsdWRlcyBmcm9tIGJ1aWxkIGhvc3QKLSMgVGhlcmVmb3JlIHByZS1lbXB0IHRoYXQgZWZmb3J0Ci1leHBvcnQgUFlUSE9OX0xJQlJBUlk9IiR7U1RBR0lOR19MSUJESVJ9L2xpYiR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9LnNvIgotZXhwb3J0IFBZVEhPTl9JTkNMVURFX0RJUj0iJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0iCi0KLSMgc3VwcHJlc3MgaG9zdCB1c2VyJ3Mgc2l0ZS1wYWNrYWdlcyBkaXJzLgotZXhwb3J0IFBZVEhPTk5PVVNFUlNJVEUgPSAiMSIKLQotIyBhdXRvY29uZiBtYWNyb3Mgd2lsbCB1c2UgdGhlaXIgaW50ZXJuYWwgZGVmYXVsdCBwcmVmZXJlbmNlIG90aGVyd2lzZQotZXhwb3J0IFBZVEhPTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcWVtdS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcWVtdS5iYmNsYXNzCmluZGV4IGY1YzU3ODAuLjU1YmRmZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MKQEAgLTE2LDYgKzE2LDggQEAKICAgICAgICAgdGFyZ2V0X2FyY2ggPSAicHBjIgogICAgIGVsaWYgdGFyZ2V0X2FyY2ggPT0gInBvd2VycGM2NCI6CiAgICAgICAgIHRhcmdldF9hcmNoID0gInBwYzY0IgorICAgIGVsaWYgdGFyZ2V0X2FyY2ggPT0gInBvd2VycGM2NGxlIjoKKyAgICAgICAgdGFyZ2V0X2FyY2ggPSAicHBjNjRsZSIKIAogICAgIHJldHVybiAicWVtdS0iICsgdGFyZ2V0X2FyY2gKIApAQCAtNjIsMyArNjQsNCBAQAogUUVNVV9FWFRSQU9QVElPTlNfcHBjZTY1MDAgPSAiIC1jcHUgZTUwMG1jIgogUUVNVV9FWFRSQU9QVElPTlNfcHBjNjRlNjUwMCA9ICIgLWNwdSBlNTAwbWMiCiBRRU1VX0VYVFJBT1BUSU9OU19wcGM3NDAwID0gIiAtY3B1IDc0MDAiCitRRU1VX0VYVFJBT1BUSU9OU19wb3dlcnBjNjRsZSA9ICIgLWNwdSBQT1dFUjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcwppbmRleCAxNWE5ZTYzLi4zMTYyZTdhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKQEAgLTM2LDYgKzM2LDkgQEAKICMgICAgICAgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlIEBNQUNAIHdpdGggYSBwcmVkZWZpbmVkIG1hYywgeW91IGNhbiBzZXQKICMgICAgICAgICAgICAgICAgICAgIGEgY3VzdG9tIG9uZSwgYnV0IHRoYXQgbWF5IGNhdXNlIGNvbmZsaWN0cyB3aGVuIG11bHRpcGxlIHFlbXVzIGFyZQogIyAgICAgICAgICAgICAgICAgICAgcnVubmluZyBvbiB0aGUgc2FtZSBob3N0LgorIyAgICAgICAgICAgICAgICAgICAgTm90ZTogSWYgbW9yZSB0aGFuIG9uZSBpbnRlcmZhY2Ugb2YgdHlwZSAtZGV2aWNlIHZpcnRpby1uZXQtZGV2aWNlIGdldHMgYWRkZWQsCisjICAgICAgICAgICAgICAgICAgICAgICAgICBRQl9ORVRXT1JLX0RFVklDRV9wcmVwZW5kIG1pZ2h0IGJlIHVzZWQsIHNpbmNlIFFlbXUgZW51bWVyYXRlcyB0aGUgZXRoKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyBpbiByZXZlcnNlIG9yZGVyIHRvIC1kZXZpY2UgYXJndW1lbnRzLgogIwogIyBRQl9UQVBfT1BUOiBuZXRvd3JrIG9wdGlvbiBmb3IgJ3RhcCcgbW9kZSwgZS5nLiwKICMgICAgICAgICAgICAgIi1uZXRkZXYgdGFwLGlkPW5ldDAsaWZuYW1lPUBUQVBALHNjcmlwdD1ubyxkb3duc2NyaXB0PW5vIgpAQCAtNDMsNiArNDYsMTUgQEAKICMKICMgUUJfU0xJUlBfT1BUOiBuZXR3b3JrIG9wdGlvbiBmb3IgU0xJUlAgbW9kZSwgZS5nLiwgLW5ldGRldiB1c2VyLGlkPW5ldDAiCiAjCisjIFFCX0NNRExJTkVfSVBfU0xJUlA6IElmIFFCX05FVFdPUktfREVWSUNFIGFkZHMgbW9yZSB0aGFuIG9uZSBuZXR3b3JrIGludGVyZmFjZSB0byBxZW11LCB1c3VhbGx5IHRoZQorIyAgICAgICAgICAgICAgICAgICAgICBpcD0ga2VybmVsIGNvbWFuZCBsaW5lIGFyZ3VtZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgYWNjb3JkaW5nbHkuIERldGFpbHMgYXJlIGRvY3VtZW50ZWQKKyMgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGtlcm5lbCBkb2N1ZW1udGF0aW9uIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc3Jvb3QudHh0CisjICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGUgdG8gY29uZmlndXJlIG9ubHkgdGhlIGZpcnN0IGludGVyZmFjZTogImlwPWV0aDA6ZGhjcCIKKyMgUUJfQ01ETElORV9JUF9UQVA6IFRoaXMgcGFyYW1ldGVyIGlzIHNpbWlsYXIgdG8gdGhlIFFCX0NNRExJTkVfSVBfU0xJUlAgcGFyYW1ldGVyLiBTaW5jZSB0aGUgdGFwIGludGVyZmFjZSByZXF1aXJlcworIyAgICAgICAgICAgICAgICAgICAgc3RhdGljIElQIGNvbmZpZ3VyYXRpb24gQENMSUVOVEAgYW5kIEBHQVRFV0FZQCBwbGFjZSBob2xkZXJzIGFyZSByZXBsYWNlZCBieSB0aGUgSVAgYW5kIHRoZSBnYXRld2F5CisjICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIG9mIHRoZSBxZW11IGd1ZXN0IGJ5IHJ1bnFlbXUuCisjICAgICAgICAgICAgICAgICAgICBFeGFtcGxlOiAiaXA9MTkyLjE2OC43LkBDTElFTlRAOjoxOTIuMTY4LjcuQEdBVEVXQVlAOjI1NS4yNTUuMjU1LjA6OmV0aDAiCisjCiAjIFFCX1JPT1RGU19PUFQ6IHVzZWQgYXMgcm9vdGZzLCBlLmcuLAogIyAgICAgICAgICAgICAgICItZHJpdmUgaWQ9ZGlzazAsZmlsZT1AUk9PVEZTQCxpZj1ub25lLGZvcm1hdD1yYXcgLWRldmljZSB2aXJ0aW8tYmxrLWRldmljZSxkcml2ZT1kaXNrMCIKICMgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAUk9PVEZTQCIgd2l0aCB0aGUgb25lIHdoaWNoIGlzIHVzZWQsIHN1Y2ggYXMgY29yZS1pbWFnZS1taW5pbWFsLXFlbXVhcm02NC5leHQ0LgpAQCAtNTMsNiArNjUsMTAgQEAKICMgICAgICAgICAgICAgICAgICAgIiAtZGV2aWNlIHZpcnRpby1zZXJpYWwtZGV2aWNlIC1jaGFyZGV2IHNvY2tldCxpZD12aXJ0Y29uLHBvcnQ9QFBPUlRALGhvc3Q9MTI3LjAuMC4xIC1kZXZpY2UgdmlydGNvbnNvbGUsY2hhcmRldj12aXJ0Y29uIgogIyAgICAgICAgICAgICAgICAgICBOb3RlLCBydW5xZW11IHdpbGwgcmVwbGFjZSAiQFBPUlRAIiB3aXRoIHRoZSBwb3J0IG51bWJlciB3aGljaCBpcyB1c2VkLgogIworIyBRQl9ST09URlNfRVhUUkFfT1BUOiBleHRyYSBvcHRpb25zIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSByb290ZnMgZGV2aWNlIGluIGNhc2UgdGhlcmUgaXMgbm9uZSBzcGVjaWZpZWQgYnkgUUJfUk9PVEZTX09QVC4KKyMgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIHVzZWQgdG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUgdGhlIGltYWdlIGZyb20gdGhlIG90aGVyIHZhcmlhYmxlcworIyAgICAgICAgICAgICAgICAgICAgICBidXQgZGVmaW5lIHRoaW5ncyBsaW5rICdib290aW5kZXgnIHdoZW4gYm9vdGluZyBmcm9tIEVGSSBvciAncmVhZG9ubHknIHdoZW4gdXNpbmcgc3F1YXNoZnMKKyMgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCB0aGUgbmVlZCB0byBzcGVjaWZ5IGEgZGVkaWNhdGVkIHFlbXUgY29uZmlndXJhdGlvbgogIyBVc2FnZToKICMgSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCiAjIFNlZSAicnVucWVtdSBoZWxwIiBmb3IgbW9yZSBpbmZvCkBAIC02MywxMyArNzksMTUgQEAKIFFCX0RFRkFVTFRfRlNUWVBFID89ICJleHQ0IgogUUJfT1BUX0FQUEVORCA/PSAiLXNob3ctY3Vyc29yIgogUUJfTkVUV09SS19ERVZJQ0UgPz0gIi1kZXZpY2UgdmlydGlvLW5ldC1wY2ksbmV0ZGV2PW5ldDAsbWFjPUBNQUNAIgorUUJfQ01ETElORV9JUF9TTElSUCA/PSAiaXA9ZGhjcCIKK1FCX0NNRExJTkVfSVBfVEFQID89ICJpcD0xOTIuMTY4LjcuQENMSUVOVEA6OjE5Mi4xNjguNy5AR0FURVdBWUA6MjU1LjI1NS4yNTUuMCIKK1FCX1JPT1RGU19FWFRSQV9PUFQgPz0gIiIKIAogIyBUaGlzIHNob3VsZCBiZSBrZXB0IGFsaWduIHdpdGggUk9PVF9WTQogUUJfRFJJVkVfVFlQRSA/PSAiL2Rldi9zZCIKIAogIyBDcmVhdGUgcWVtdWJvb3QuY29uZgogYWRkdGFzayBkb193cml0ZV9xZW11Ym9vdF9jb25mIGFmdGVyIGRvX3Jvb3RmcyBiZWZvcmUgZG9faW1hZ2UKLUlNR0RFUExPWURJUiA/PSAiJHtXT1JLRElSfS9kZXBsb3ktJHtQTn0taW1hZ2UtY29tcGxldGUiCiAKIGRlZiBxZW11Ym9vdF92YXJzKGQpOgogICAgIGJ1aWxkX3ZhcnMgPSBbJ01BQ0hJTkUnLCAnVFVORV9BUkNIJywgJ0RFUExPWV9ESVJfSU1BR0UnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcwppbmRleCAzOWI2ZTQwLi44ZGE0MGY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcwpAQCAtNDQsMTAgKzQ0LDEyIEBACiBTU1RBVEVUQVNLUyArPSAiZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIgogCiBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2ggKCkgewotICAgIGVjaG8gIkRlcGxveWluZyBTREUgdG8gJHtTREVfRElSfS4iCiAgICAgbWtkaXIgLXAgJHtTREVfREVQTE9ZRElSfQogICAgIGlmIFsgLWUgJHtTREVfRklMRX0gXTsgdGhlbgorICAgICAgICBlY2hvICJEZXBsb3lpbmcgU0RFIGZyb20gJHtTREVfRklMRX0gLT4gJHtTREVfREVQTE9ZRElSfS4iCiAgICAgICAgIGNwIC1wICR7U0RFX0ZJTEV9ICR7U0RFX0RFUExPWURJUn0vX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIiR7U0RFX0ZJTEV9IG5vdCBmb3VuZCEiCiAgICAgZmkKIH0KIApAQCAtNTYsNyArNTgsMTEgQEAKICAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoJ1NERV9ESVInKSkKICAgICBzZGVfZmlsZSA9IG9zLnBhdGguam9pbihkLmdldFZhcignU0RFX0RFUExPWURJUicpLCAnX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQnKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKHNkZV9maWxlKToKLSAgICAgICAgb3MucmVuYW1lKHNkZV9maWxlLCBkLmdldFZhcignU0RFX0ZJTEUnKSkKKyAgICAgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1NERV9GSUxFJykKKyAgICAgICAgYmIuZGVidWcoMSwgIk1vdmluZyBzZXRzY2VuZSBTREUgZmlsZSAlcyAtPiAlcyIgJSAoc2RlX2ZpbGUsIHRhcmdldCkpCisgICAgICAgIG9zLnJlbmFtZShzZGVfZmlsZSwgdGFyZ2V0KQorICAgIGVsc2U6CisgICAgICAgIGJiLmRlYnVnKDEsICIlcyBub3QgZm91bmQhIiAlIHNkZV9maWxlKQogfQogCiBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hbZGlyc10gPSAiJHtTREVfREVQTE9ZRElSfSIKQEAgLTE0NCwxMSArMTUwLDEyIEBACiAgICAgYmIuZGVidWcoMSwgIk5vIHRhcmJhbGwgb3IgZ2l0IHJlcG8gZm91bmQgdG8gZGV0ZXJtaW5lIFNPVVJDRV9EQVRFX0VQT0NIIikKICAgICByZXR1cm4gMAogCi1weXRob24gZG9fY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wKCkgeworcHl0aG9uIGNyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCgpIHsKICAgICBlcG9jaGZpbGUgPSBkLmdldFZhcignU0RFX0ZJTEUnKQorICAgICMgSWYgaXQgZXhpc3RzIHdlIG5lZWQgdG8gcmVnZW5lcmF0ZSBhcyB0aGUgc291cmNlcyBtYXkgaGF2ZSBjaGFuZ2VkCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXBvY2hmaWxlKToKLSAgICAgICAgYmIuZGVidWcoMSwgIlJldXNpbmcgU09VUkNFX0RBVEVfRVBPQ0ggZnJvbTogJXMiICUgZXBvY2hmaWxlKQotICAgICAgICByZXR1cm4KKyAgICAgICAgYmIuZGVidWcoMSwgIkRlbGV0aW5nIGV4aXN0aW5nIFNPVVJDRV9EQVRFX0VQT0NIIGZyb206ICVzIiAlIGVwb2NoZmlsZSkKKyAgICAgICAgb3MucmVtb3ZlKGVwb2NoZmlsZSkKIAogICAgIHNvdXJjZWRpciA9IGQuZ2V0VmFyKCdTJykKICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9ICgKQEAgLTE2NCwxNiArMTcxLDMyIEBACiAgICAgICAgIGYud3JpdGUoc3RyKHNvdXJjZV9kYXRlX2Vwb2NoKSkKIH0KIAorZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF92YWx1ZShkKToKKyAgICBjYWNoZWQgPSBkLmdldFZhcignX19DQUNIRURfU09VUkNFX0RBVEVfRVBPQ0gnKQorICAgIGlmIGNhY2hlZDoKKyAgICAgICAgcmV0dXJuIGNhY2hlZAorCisgICAgZXBvY2hmaWxlID0gZC5nZXRWYXIoJ1NERV9GSUxFJykKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShlcG9jaGZpbGUpOgorICAgICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzID0gZi5yZWFkKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGludChzKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgYmIud2FybigiU09VUkNFX0RBVEVfRVBPQ0ggdmFsdWUgJyVzJyBpcyBpbnZhbGlkLiBSZXZlcnRpbmcgdG8gMCIgJSBzKQorICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gMAorICAgICAgICBiYi5kZWJ1ZygxLCAiU09VUkNFX0RBVEVfRVBPQ0g6ICVkIiAlIHNvdXJjZV9kYXRlX2Vwb2NoKQorICAgIGVsc2U6CisgICAgICAgIGJiLmRlYnVnKDEsICJDYW5ub3QgZmluZCAlcy4gU09VUkNFX0RBVEVfRVBPQ0ggd2lsbCBkZWZhdWx0IHRvICVkIiAlIChlcG9jaGZpbGUsIHNvdXJjZV9kYXRlX2Vwb2NoKSkKKworICAgIGQuc2V0VmFyKCdfX0NBQ0hFRF9TT1VSQ0VfREFURV9FUE9DSCcsIHN0cihzb3VyY2VfZGF0ZV9lcG9jaCkpCisgICAgcmV0dXJuIHN0cihzb3VyY2VfZGF0ZV9lcG9jaCkKKworZXhwb3J0IFNPVVJDRV9EQVRFX0VQT0NIID89ICIke0BnZXRfc291cmNlX2RhdGVfZXBvY2hfdmFsdWUoZCl9IgogQkJfSEFTSEJBU0VfV0hJVEVMSVNUICs9ICJTT1VSQ0VfREFURV9FUE9DSCIKIAogcHl0aG9uICgpIHsKICAgICBpZiBkLmdldFZhcignQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTJykgPT0gJzEnOgotICAgICAgICBkLmFwcGVuZFZhckZsYWcoImRvX3VucGFjayIsICJwb3N0ZnVuY3MiLCAiIGRvX2NyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCIpCi0gICAgICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCi0gICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gIjAiCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBmLnJlYWQoKQotICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNPVVJDRV9EQVRFX0VQT0NIOiAlcyIgJSBzb3VyY2VfZGF0ZV9lcG9jaCkKLSAgICAgICAgZC5zZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJywgc291cmNlX2RhdGVfZXBvY2gpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiZG9fdW5wYWNrIiwgInBvc3RmdW5jcyIsICIgY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wIikKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcwppbmRleCA4YTYwZGVlLi4zOTMzNzI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZS5iYmNsYXNzCkBAIC03LDQgKzcsMyBAQAogZXhwb3J0IFNPVVJDRV9EQVRFX0VQT0NIID8/PSAiMTUyMDU5ODg5NiIKIAogUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMgPz89ICIxNTIwNTk4ODk2IgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCmluZGV4IDYzYWI2Y2YuLjllODcxMDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCkBAIC0yLDcgKzIsNyBAQAogIyBTYW5pdHkgY2hlY2sgdGhlIHVzZXJzIHNldHVwIGZvciBjb21tb24gbWlzY29uZmlndXJhdGlvbnMKICMKIAotU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUyA/PSAicGF0Y2ggZGlmZnN0YXQgbWFrZWluZm8gZ2l0IGJ6aXAyIHRhciBcCitTQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTID89ICJwYXRjaCBkaWZmc3RhdCBnaXQgYnppcDIgdGFyIFwKICAgICBnemlwIGdhd2sgY2hycGF0aCB3Z2V0IGNwaW8gcGVybCBmaWxlIHdoaWNoIgogCiBkZWYgYmJsYXllcnNfY29uZl9maWxlKGQpOgpAQCAtNTExLDE0ICs1MTEsMzggQEAKICAgICByZXR1cm4gTm9uZQogCiAKLSMgQ2hlY2sgaWYgd2UncmUgcnVubmluZyBvbiBXU0wgKFdpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCkuIEl0cyBrbm93biBub3QgdG8KLSMgd29yayBidXQgd2Ugc2hvdWxkIHRlbGwgdGhlIHVzZXIgdGhhdCB1cGZyb250LgorIyBDaGVjayBpZiB3ZSdyZSBydW5uaW5nIG9uIFdTTCAoV2luZG93cyBTdWJzeXN0ZW0gZm9yIExpbnV4KS4KKyMgV1NMdjEgaXMga25vd24gbm90IHRvIHdvcmsgYnV0IFdTTHYyIHNob3VsZCB3b3JrIHByb3Blcmx5IGFzCisjIGxvbmcgYXMgdGhlIFZIRFggZmlsZSBpcyBvcHRpbWl6ZWQgb2Z0ZW4sIGxldCB0aGUgdXNlciBrbm93CisjIHVwZnJvbnQuCisjIE1vcmUgaW5mb3JtYXRpb24gb24gaW5zdGFsbGluZyBXU0x2MiBhdDoKKyMgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1pbnN0YWxsCiBkZWYgY2hlY2tfd3NsKGQpOgogICAgIHdpdGggb3BlbigiL3Byb2MvdmVyc2lvbiIsICJyIikgYXMgZjoKICAgICAgICAgdmVyZGF0YSA9IGYucmVhZGxpbmVzKCkKICAgICBmb3IgbCBpbiB2ZXJkYXRhOgogICAgICAgICBpZiAiTWljcm9zb2Z0IiBpbiBsOgotICAgICAgICAgICAgcmV0dXJuICJPcGVuRW1iZWRkZWQgZG9lc24ndCB3b3JrIHVuZGVyIFdTTCBhdCB0aGlzIHRpbWUsIHNvcnJ5IgorICAgICAgICAgICAgcmV0dXJuICJPcGVuRW1iZWRkZWQgZG9lc24ndCB3b3JrIHVuZGVyIFdTTHYxLCBwbGVhc2UgdXBncmFkZSB0byBXU0x2MiBpZiB5b3Ugd2FudCB0byBydW4gYnVpbGRzIG9uIFdpbmRvd3MiCisgICAgICAgIGVsaWYgIm1pY3Jvc29mdCIgaW4gbDoKKyAgICAgICAgICAgIGJiLndhcm4oIllvdSBhcmUgcnVubmluZyBiaXRiYWtlIHVuZGVyIFdTTHYyLCB0aGlzIHdvcmtzIHByb3Blcmx5IGJ1dCB5b3Ugc2hvdWxkIG9wdGltaXplIHlvdXIgVkhEWCBmaWxlIGV2ZW50dWFsbHkgdG8gYXZvaWQgcnVubmluZyBvdXQgb2Ygc3RvcmFnZSBzcGFjZSIpCisgICAgcmV0dXJuIE5vbmUKKworIyBSZXF1aXJlIGF0IGxlYXN0IGdjYyB2ZXJzaW9uIDUuMC4KKyMKKyMgVGhpcyBjYW4gYmUgZml4ZWQgb24gQ2VudE9TLTcgd2l0aCBkZXZ0b29sc2V0LTYrCisjIGh0dHBzOi8vd3d3LnNvZnR3YXJlY29sbGVjdGlvbnMub3JnL2VuL3NjbHMvcmhzY2wvZGV2dG9vbHNldC02LworIworIyBBIGxlc3MgaW52YXNpdmUgZml4IGlzIHdpdGggc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMgKG9yIHdpdGggdXNlcgorIyBidWlsdCBidWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwpCisjCitkZWYgY2hlY2tfZ2NjX3ZlcnNpb24oc2FuaXR5X2RhdGEpOgorICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IExvb3NlVmVyc2lvbgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgCisgICAgYnVpbGRfY2MsIHZlcnNpb24gPSBvZS51dGlscy5nZXRfaG9zdF9jb21waWxlcl92ZXJzaW9uKHNhbml0eV9kYXRhKQorICAgIGlmIGJ1aWxkX2NjLnN0cmlwKCkgPT0gImdjYyI6CisgICAgICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiNS4wIik6CisgICAgICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiBnY2MgaXMgb2xkZXIgdGhhbiA1LjAgYW5kIHdpbGwgYnJlYWsgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgZ2NjICh5b3UgY291bGQgdXNlIHRoZSBwcm9qZWN0J3MgYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsIG9yIHVzZSBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scykuXG4iCiAgICAgcmV0dXJuIE5vbmUKIAogIyBUYXIgdmVyc2lvbiAxLjI0IGFuZCBvbndhcmRzIGhhbmRsZSBvdmVyd3JpdGluZyBzeW1saW5rcyBjb3JyZWN0bHkKQEAgLTUzMiwxMCArNTU2LDggQEAKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSB0YXIgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWRcbiVzXG4iICUgKGUucmV0dXJuY29kZSwgZS5vdXRwdXQpCiAgICAgdmVyc2lvbiA9IHJlc3VsdC5zcGxpdCgpWzNdCi0gICAgaWYgTG9vc2VWZXJzaW9uKHZlcnNpb24pIDwgTG9vc2VWZXJzaW9uKCIxLjI0Iik6Ci0gICAgICAgIHJldHVybiAiWW91ciB2ZXJzaW9uIG9mIHRhciBpcyBvbGRlciB0aGFuIDEuMjQgYW5kIGhhcyBidWdzIHdoaWNoIHdpbGwgYnJlYWsgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgdGFyICgxLjI4KykuXG4iCiAgICAgaWYgTG9vc2VWZXJzaW9uKHZlcnNpb24pIDwgTG9vc2VWZXJzaW9uKCIxLjI4Iik6Ci0gICAgICAgIHJldHVybiAiWW91ciB2ZXJzaW9uIG9mIHRhciBpcyBvbGRlciB0aGFuIDEuMjggYW5kIGRvZXMgbm90IGhhdmUgdGhlIHN1cHBvcnQgbmVlZGVkIHRvIGVuYWJsZSByZXByb2R1Y2libGUgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgdGFyICh5b3UgY291bGQgdXNlIHRoZSBwcm9qZWN0cyBidWlsZHRvb2xzLXRhcmJhbGwgZnJvbSBvdXIgbGFzdCByZWxlYXNlKS5cbiIKKyAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgdGFyIGlzIG9sZGVyIHRoYW4gMS4yOCBhbmQgZG9lcyBub3QgaGF2ZSB0aGUgc3VwcG9ydCBuZWVkZWQgdG8gZW5hYmxlIHJlcHJvZHVjaWJsZSBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiB0YXIgKHlvdSBjb3VsZCB1c2UgdGhlIHByb2plY3QncyBidWlsZHRvb2xzLXRhcmJhbGwgZnJvbSBvdXIgbGFzdCByZWxlYXNlIG9yIHVzZSBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scykuXG4iCiAgICAgcmV0dXJuIE5vbmUKIAogIyBXZSB1c2UgZ2l0IHBhcmFtZXRlcnMgYW5kIGZ1bmN0aW9uYWxpdHkgb25seSBmb3VuZCBpbiAxLjcuOCBvciBsYXRlcgpAQCAtNjM0LDYgKzY1Niw3IEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CiAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoJ1lvdXIgUHl0aG9uIDMgaXMgbm90IGEgZnVsbCBpbnN0YWxsLiBQbGVhc2UgaW5zdGFsbCB0aGUgbW9kdWxlICVzIChzZWUgdGhlIEdldHRpbmcgU3RhcnRlZCBndWlkZSBmb3IgZnVydGhlciBpbmZvcm1hdGlvbikuXG4nICUgZS5uYW1lKQogCisgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19nY2NfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX21ha2VfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX3BhdGNoX3ZlcnNpb24oZCkpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja190YXJfdmVyc2lvbihkKSkKQEAgLTgwNiw3ICs4MjksNyBAQAogICAgICMgSWYgU0RLX1ZFTkRPUiBsb29rcyBsaWtlICItbXktc2RrIiB0aGVuIHRoZSB0cmlwbGVzIGFyZSBiYWRseSBmb3JtZWQgc28gZmFpbCBlYXJseQogICAgIHNka3ZlbmRvciA9IGQuZ2V0VmFyKCJTREtfVkVORE9SIikKICAgICBpZiBub3QgKHNka3ZlbmRvci5zdGFydHN3aXRoKCItIikgYW5kIHNka3ZlbmRvci5jb3VudCgiLSIpID09IDEpOgotICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJTREtfVkVORE9SIHNob3VsZCBiZSBvZiB0aGUgZm9ybSAnLWZvb3Nkaycgd2l0aCBhIHNpbmdsZSBkYXNoXG4iKQorICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJTREtfVkVORE9SIHNob3VsZCBiZSBvZiB0aGUgZm9ybSAnLWZvb3Nkaycgd2l0aCBhIHNpbmdsZSBkYXNoOyBmb3VuZCAnJXMnXG4iICUgc2RrdmVuZG9yKQogCiAgICAgY2hlY2tfc3VwcG9ydGVkX2Rpc3RybyhkKQogCkBAIC05MjksNyArOTUyLDcgQEAKICAgICBsYXN0X3RtcGRpciA9ICIiCiAgICAgbGFzdF9zc3RhdGVfZGlyID0gIiIKICAgICBsYXN0X25hdGl2ZWxzYnN0ciA9ICIiCi0gICAgc2FuaXR5dmVyZmlsZSA9IHNhbml0eV9kYXRhLmV4cGFuZCgiJHtUT1BESVJ9L2NvbmYvc2FuaXR5X2luZm8iKQorICAgIHNhbml0eXZlcmZpbGUgPSBzYW5pdHlfZGF0YS5leHBhbmQoIiR7VE9QRElSfS9jYWNoZS9zYW5pdHlfaW5mbyIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoc2FuaXR5dmVyZmlsZSk6CiAgICAgICAgIHdpdGggb3BlbihzYW5pdHl2ZXJmaWxlLCAncicpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTIzZWEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMKLQotREVQRU5EUyArPSAicHl0aG9uLXNldHVwdG9vbHMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKaW5kZXggNDExZTcwNC4uMWEwNDhjMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCkBAIC0zNSw3ICszNSw2IEBACiAgICAgICAgICJsbTMyIjogImVuZGlhbi1iaWcgYml0LTMyIiwKICAgICAgICAgIm02OGsiOiAiZW5kaWFuLWJpZyBiaXQtMzIiLAogICAgICAgICAibWljcm9ibGF6ZSI6ICJlbmRpYW4tYmlnIGJpdC0zMiBtaWNyb2JsYXplLWNvbW1vbiIsCi0gICAgICAgICJtaWNyb2JsYXplZWIiOiAiZW5kaWFuLWJpZyBiaXQtMzIgbWljcm9ibGF6ZS1jb21tb24iLAogICAgICAgICAibWljcm9ibGF6ZWVsIjogImVuZGlhbi1saXR0bGUgYml0LTMyIG1pY3JvYmxhemUtY29tbW9uIiwKICAgICAgICAgIm1pcHMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgbWlwcy1jb21tb24iLAogICAgICAgICAibWlwczY0IjogImVuZGlhbi1iaWcgYml0LTY0IG1pcHMtY29tbW9uIiwKQEAgLTQ4LDYgKzQ3LDcgQEAKICAgICAgICAgInBvd2VycGMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAibmlvczIiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgbmlvczItY29tbW9uIiwKICAgICAgICAgInBvd2VycGM2NCI6ICJlbmRpYW4tYmlnIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCisgICAgICAgICJwb3dlcnBjNjRsZSI6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCiAgICAgICAgICJwcGMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjRsZSIgOiAiZW5kaWFuLWxpdHRsZSBiaXQtNjQgcG93ZXJwYy1jb21tb24iLApAQCAtODgsOCArODgsNiBAQAogICAgICAgICAiYXJtLWxpbnV4LW11c2xlYWJpIjogImFybS1saW51eCIsCiAgICAgICAgICJhcm1lYi1saW51eC1nbnVlYWJpIjogImFybWViLWxpbnV4IiwKICAgICAgICAgImFybWViLWxpbnV4LW11c2xlYWJpIjogImFybWViLWxpbnV4IiwKLSAgICAgICAgIm1pY3JvYmxhemVlYi1saW51eCIgOiAibWljcm9ibGF6ZS1saW51eCIsCi0gICAgICAgICJtaWNyb2JsYXplZWItbGludXgtbXVzbCIgOiAibWljcm9ibGF6ZS1saW51eCIsCiAgICAgICAgICJtaWNyb2JsYXplZWwtbGludXgiIDogIm1pY3JvYmxhemUtbGludXgiLAogICAgICAgICAibWljcm9ibGF6ZWVsLWxpbnV4LW11c2wiIDogIm1pY3JvYmxhemUtbGludXgiLAogICAgICAgICAibWlwcy1saW51eC1tdXNsIjogIm1pcHMtbGludXgiLApAQCAtMTA2LDggKzEwNCwxMCBAQAogICAgICAgICAicG93ZXJwYy1saW51eC1tdXNsc3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzMyLWxpbnV4IiwKICAgICAgICAgInBvd2VycGM2NC1saW51eC1nbnVzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAogICAgICAgICAicG93ZXJwYzY0LWxpbnV4LW11c2xzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAotICAgICAgICAicG93ZXJwYzY0LWxpbnV4IjogInBvd2VycGMtbGludXgiLAotICAgICAgICAicG93ZXJwYzY0LWxpbnV4LW11c2wiOiAicG93ZXJwYy1saW51eCIsCisgICAgICAgICJwb3dlcnBjNjQtbGludXgiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAorICAgICAgICAicG93ZXJwYzY0LWxpbnV4LW11c2wiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAorICAgICAgICAicG93ZXJwYzY0bGUtbGludXgiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAorICAgICAgICAicG93ZXJwYzY0bGUtbGludXgtbXVzbCI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCiAgICAgICAgICJyaXNjdjMyLWxpbnV4IjogInJpc2N2MzItbGludXgiLAogICAgICAgICAicmlzY3YzMi1saW51eC1tdXNsIjogInJpc2N2MzItbGludXgiLAogICAgICAgICAicmlzY3Y2NC1saW51eCI6ICJyaXNjdjY0LWxpbnV4IiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKaW5kZXggNjQ4MDhmOC4uYzczYzNiNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKQEAgLTMsMTkgKzMsNDEgQEAKIFNTVEFURV9NQU5JRkVTVFMgPz0gIiR7VE1QRElSfS9zc3RhdGUtY29udHJvbCIKIFNTVEFURV9NQU5GSUxFUFJFRklYID0gIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJHtTU1RBVEVfTUFOTUFDSH0tJHtQTn0iCiAKLWRlZiBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBoYXNoLCBkKToKK2RlZiBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBoYXNoLCB0YXNrbmFtZSwgc2lnaW5mbywgZCk6CisgICAgaWYgdGFza25hbWUgaXMgTm9uZToKKyAgICAgICByZXR1cm4gIiIKKyAgICBleHRlbnNpb24gPSAiLnRneiIKKyAgICAjIDggY2hhcnMgcmVzZXJ2ZWQgZm9yIHNpZ2luZm8KKyAgICBsaW1pdCA9IDI1NCAtIDgKKyAgICBpZiBzaWdpbmZvOgorICAgICAgICBsaW1pdCA9IDI1NAorICAgICAgICBleHRlbnNpb24gPSAiLnRnei5zaWdpbmZvIgogICAgIGlmIG5vdCBoYXNoOgogICAgICAgICBoYXNoID0gIklOVkFMSUQiCi0gICAgcmV0dXJuIGhhc2hbOjJdICsgIi8iICsgc3BlYyArIGhhc2gKKyAgICBmbiA9IHNwZWMgKyBoYXNoICsgIl8iICsgdGFza25hbWUgKyBleHRlbnNpb24KKyAgICAjIElmIHRoZSBmaWxlbmFtZSBpcyB0b28gbG9uZywgYXR0ZW1wdCB0byByZWR1Y2UgaXQKKyAgICBpZiBsZW4oZm4pID4gbGltaXQ6CisgICAgICAgIGNvbXBvbmVudHMgPSBzcGVjLnNwbGl0KCI6IikKKyAgICAgICAgIyBGaWVsZHMgMCw1LDYgYXJlIG1hbmRhdG9yeSwgMSBpcyBtb3N0IHVzZWZ1bCwgMiwzLDQgYXJlIGp1c3QgZm9yIGluZm9ybWF0aW9uCisgICAgICAgICMgNyBpcyBmb3IgdGhlIHNlcGFyYXRvcnMKKyAgICAgICAgYXZhaWwgPSAoMjU0IC0gbGVuKGhhc2ggKyAiXyIgKyB0YXNrbmFtZSArIGV4dGVuc2lvbikgLSBsZW4oY29tcG9uZW50c1swXSkgLSBsZW4oY29tcG9uZW50c1sxXSkgLSBsZW4oY29tcG9uZW50c1s1XSkgLSBsZW4oY29tcG9uZW50c1s2XSkgLSA3KSAvLyAzCisgICAgICAgIGNvbXBvbmVudHNbMl0gPSBjb21wb25lbnRzWzJdWzphdmFpbF0KKyAgICAgICAgY29tcG9uZW50c1szXSA9IGNvbXBvbmVudHNbM11bOmF2YWlsXQorICAgICAgICBjb21wb25lbnRzWzRdID0gY29tcG9uZW50c1s0XVs6YXZhaWxdCisgICAgICAgIHNwZWMgPSAiOiIuam9pbihjb21wb25lbnRzKQorICAgICAgICBmbiA9IHNwZWMgKyBoYXNoICsgIl8iICsgdGFza25hbWUgKyBleHRlbnNpb24KKyAgICAgICAgaWYgbGVuKGZuKSA+IGxpbWl0OgorICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byByZWR1Y2Ugc3N0YXRlIG5hbWUgdG8gbGVzcyB0aGFuIDI1NSBjaGFyYXJhY3RlcnMiKQorICAgIHJldHVybiBoYXNoWzoyXSArICIvIiArIGhhc2hbMjo0XSArICIvIiArIGZuCiAKIFNTVEFURV9QS0dBUkNIICAgID0gIiR7UEFDS0FHRV9BUkNIfSIKIFNTVEFURV9QS0dTUEVDICAgID0gInNzdGF0ZToke1BOfToke1BBQ0tBR0VfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSR7VEFSR0VUX09TfToke1BWfToke1BSfToke1NTVEFURV9QS0dBUkNIfToke1NTVEFURV9WRVJTSU9OfToiCiBTU1RBVEVfU1dTUEVDICAgICA9ICJzc3RhdGU6JHtQTn06OiR7UFZ9OiR7UFJ9Ojoke1NTVEFURV9WRVJTSU9OfToiCi1TU1RBVEVfUEtHTkFNRSAgICA9ICIke1NTVEFURV9FWFRSQVBBVEh9JHtAZ2VuZXJhdGVfc3N0YXRlZm4oZC5nZXRWYXIoJ1NTVEFURV9QS0dTUEVDJyksIGQuZ2V0VmFyKCdCQl9VTklIQVNIJyksIGQpfSIKK1NTVEFURV9QS0dOQU1FICAgID0gIiR7U1NUQVRFX0VYVFJBUEFUSH0ke0BnZW5lcmF0ZV9zc3RhdGVmbihkLmdldFZhcignU1NUQVRFX1BLR1NQRUMnKSwgZC5nZXRWYXIoJ0JCX1VOSUhBU0gnKSwgZC5nZXRWYXIoJ1NTVEFURV9DVVJSVEFTSycpLCBGYWxzZSwgZCl9IgogU1NUQVRFX1BLRyAgICAgICAgPSAiJHtTU1RBVEVfRElSfS8ke1NTVEFURV9QS0dOQU1FfSIKIFNTVEFURV9FWFRSQVBBVEggICA9ICIiCiBTU1RBVEVfRVhUUkFQQVRIV0lMRENBUkQgPSAiIgotU1NUQVRFX1BBVEhTUEVDICAgPSAiJHtTU1RBVEVfRElSfS8ke1NTVEFURV9FWFRSQVBBVEhXSUxEQ0FSRH0qLyR7U1NUQVRFX1BLR1NQRUN9IgorU1NUQVRFX1BBVEhTUEVDICAgPSAiJHtTU1RBVEVfRElSfS8ke1NTVEFURV9FWFRSQVBBVEhXSUxEQ0FSRH0qLyovJHtTU1RBVEVfUEtHU1BFQ30qXyR7U1NUQVRFX1BBVEhfQ1VSUlRBU0t9LnRneioiCiAKICMgZXhwbGljaXRseSBtYWtlIFBWIHRvIGRlcGVuZCBvbiBldmFsdWF0ZWQgdmFsdWUgb2YgUFYgdmFyaWFibGUKIFBWW3ZhcmRlcHZhbHVlXSA9ICIke1BWfSIKQEAgLTMxNyw4ICszMzksOSBAQAogICAgIGZyb20gb2UuZ3BnX3NpZ24gaW1wb3J0IGdldF9zaWduZXIKIAogICAgIHNzdGF0ZWluc3QgPSBkLmV4cGFuZCgiJHtXT1JLRElSfS9zc3RhdGUtaW5zdGFsbC0lcy8iICUgc3NbJ3Rhc2snXSkKLSAgICBzc3RhdGVmZXRjaCA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHTkFNRScpICsgJ18nICsgc3NbJ3Rhc2snXSArICIudGd6IgotICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAnXycgKyBzc1sndGFzayddICsgIi50Z3oiCisgICAgZC5zZXRWYXIoIlNTVEFURV9DVVJSVEFTSyIsIHNzWyd0YXNrJ10pCisgICAgc3N0YXRlZmV0Y2ggPSBkLmdldFZhcignU1NUQVRFX1BLR05BTUUnKQorICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykKIAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzc3RhdGVwa2cpOgogICAgICAgICBwc3RhZ2luZ19mZXRjaChzc3RhdGVmZXRjaCwgZCkKQEAgLTMzMCw3ICszNTMsNiBAQAogICAgIHNzdGF0ZV9jbGVhbihzcywgZCkKIAogICAgIGQuc2V0VmFyKCdTU1RBVEVfSU5TVERJUicsIHNzdGF0ZWluc3QpCi0gICAgZC5zZXRWYXIoJ1NTVEFURV9QS0cnLCBzc3RhdGVwa2cpCiAKICAgICBpZiBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCJTU1RBVEVfVkVSSUZZX1NJRyIpLCBGYWxzZSk6CiAgICAgICAgIHNpZ25lciA9IGdldF9zaWduZXIoZCwgJ2xvY2FsJykKQEAgLTQ0MCw4ICs0NjIsOSBAQAogZGVmIHNzdGF0ZV9jbGVhbl9jYWNoZWZpbGUoc3MsIGQpOgogICAgIGltcG9ydCBvZS5wYXRoCiAKLSAgICBzc3RhdGVwa2dmaWxlID0gZC5nZXRWYXIoJ1NTVEFURV9QQVRIU1BFQycpICsgIipfIiArIHNzWyd0YXNrJ10gKyAiLnRneioiCiAgICAgaWYgZC5nZXRWYXJGbGFnKCdkb18lcycgJSBzc1sndGFzayddLCAndGFzaycpOgorICAgICAgICBkLnNldFZhcigiU1NUQVRFX1BBVEhfQ1VSUlRBU0siLCBzc1sndGFzayddKQorICAgICAgICBzc3RhdGVwa2dmaWxlID0gZC5nZXRWYXIoJ1NTVEFURV9QQVRIU1BFQycpCiAgICAgICAgIGJiLm5vdGUoIlJlbW92aW5nICVzIiAlIHNzdGF0ZXBrZ2ZpbGUpCiAgICAgICAgIG9lLnBhdGgucmVtb3ZlKHNzdGF0ZXBrZ2ZpbGUpCiAKQEAgLTYxMiwxMCArNjM1LDkgQEAKICAgICB0bXBkaXIgPSBkLmdldFZhcignVE1QRElSJykKIAogICAgIHNzdGF0ZWJ1aWxkID0gZC5leHBhbmQoIiR7V09SS0RJUn0vc3N0YXRlLWJ1aWxkLSVzLyIgJSBzc1sndGFzayddKQotICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAnXycrIHNzWyd0YXNrJ10gKyAiLnRneiIKKyAgICBkLnNldFZhcigiU1NUQVRFX0NVUlJUQVNLIiwgc3NbJ3Rhc2snXSkKICAgICBiYi51dGlscy5yZW1vdmUoc3N0YXRlYnVpbGQsIHJlY3Vyc2U9VHJ1ZSkKICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3N0YXRlYnVpbGQpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShzc3RhdGVwa2cpKQogICAgIGZvciBzdGF0ZSBpbiBzc1snZGlycyddOgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3RhdGVbMV0pOgogICAgICAgICAgICAgY29udGludWUKQEAgLTY0OCw3ICs2NzAsNiBAQAogICAgICAgICBvcy5yZW5hbWUocGxhaW4sIHBkaXIpCiAKICAgICBkLnNldFZhcignU1NUQVRFX0JVSUxERElSJywgc3N0YXRlYnVpbGQpCi0gICAgZC5zZXRWYXIoJ1NTVEFURV9QS0cnLCBzc3RhdGVwa2cpCiAgICAgZC5zZXRWYXIoJ1NTVEFURV9JTlNURElSJywgc3N0YXRlYnVpbGQpCiAKICAgICBpZiBkLmdldFZhcignU1NUQVRFX1NLSVBfQ1JFQVRJT04nKSA9PSAnMSc6CkBAIC02NjQsNyArNjg1LDEyIEBACiAgICAgICAgICMgQWxsIGhvb2tzIHNob3VsZCBydW4gaW4gU1NUQVRFX0JVSUxERElSLgogICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZiwgZCwgKHNzdGF0ZWJ1aWxkLCkpCiAKLSAgICBiYi5zaWdnZW4uZHVtcF90aGlzX3Rhc2soc3N0YXRlcGtnICsgIi5zaWdpbmZvIiwgZCkKKyAgICAjIFNTVEFURV9QS0cgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IHNzdGF0ZV9yZXBvcnRfdW5paGFzaAorICAgIHNpZ2luZm8gPSBkLmdldFZhcignU1NUQVRFX1BLRycpICsgIi5zaWdpbmZvIgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzaWdpbmZvKToKKyAgICAgICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNpZ2luZm8sIGQpCisgICAgZWxzZToKKyAgICAgICAgb3MudXRpbWUoc2lnaW5mbywgTm9uZSkKIAogICAgIHJldHVybgogCkBAIC03NDgsMTggKzc3NCwyMCBAQAogIyBzZXQgYXMgU1NUQVRFX0JVSUxERElSLiBXaWxsIGJlIHJ1biBmcm9tIHdpdGhpbiBTU1RBVEVfQlVJTERESVIuCiAjCiBzc3RhdGVfY3JlYXRlX3BhY2thZ2UgKCkgewotCVRGSUxFPWBta3RlbXAgJHtTU1RBVEVfUEtHfS5YWFhYWFhYWGAKLQotCSMgRXhpdCBlYXJsdSBpZiBpdCBhbHJlYWR5IGV4aXN0cworCSMgRXhpdCBlYXJseSBpZiBpdCBhbHJlYWR5IGV4aXN0cwogCWlmIFsgLWUgJHtTU1RBVEVfUEtHfSBdOyB0aGVuCisJCXRvdWNoICR7U1NUQVRFX1BLR30KIAkJcmV0dXJuCiAJZmkKIAotICAgICAgICAjIFVzZSBwaWd6IGlmIGF2YWlsYWJsZQotICAgICAgICBPUFQ9Ii1jelMiCi0gICAgICAgIGlmIFsgLXggIiQoY29tbWFuZCAtdiBwaWd6KSIgXTsgdGhlbgotICAgICAgICAgICAgT1BUPSItSSBwaWd6IC1jUyIKLSAgICAgICAgZmkKKwlta2RpciAtcCBgZGlybmFtZSAke1NTVEFURV9QS0d9YAorCVRGSUxFPWBta3RlbXAgJHtTU1RBVEVfUEtHfS5YWFhYWFhYWGAKKworCSMgVXNlIHBpZ3ogaWYgYXZhaWxhYmxlCisJT1BUPSItY3pTIgorCWlmIFsgLXggIiQoY29tbWFuZCAtdiBwaWd6KSIgXTsgdGhlbgorCQlPUFQ9Ii1JIHBpZ3ogLWNTIgorCWZpCiAKIAkjIE5lZWQgdG8gaGFuZGxlIGVtcHR5IGRpcmVjdG9yaWVzCiAJaWYgWyAiJChscyAtQSkiIF07IHRoZW4KQEAgLTc3NiwxMCArODA0LDEzIEBACiAJY2htb2QgMDY2NCAkVEZJTEUKIAkjIFNraXAgaWYgaXQgd2FzIGFscmVhZHkgY3JlYXRlZCBieSBzb21lIG90aGVyIHByb2Nlc3MKIAlpZiBbICEgLWUgJHtTU1RBVEVfUEtHfSBdOyB0aGVuCi0JCW12IC1mICRURklMRSAke1NTVEFURV9QS0d9CisJCSMgTW92ZSBpbnRvIHBsYWNlIHVzaW5nIGxuIHRvIGF0dGVtcHQgYW4gYXRvbWljIG9wLgorCQkjIEFib3J0IGlmIGl0IGFscmVhZHkgZXhpc3RzCisJCWxuICRURklMRSAke1NTVEFURV9QS0d9ICYmIHJtICRURklMRQogCWVsc2UKIAkJcm0gJFRGSUxFCiAJZmkKKwl0b3VjaCAke1NTVEFURV9QS0d9CiB9CiAKIHB5dGhvbiBzc3RhdGVfc2lnbl9wYWNrYWdlICgpIHsKQEAgLTgyMSw5ICs4NTIsNiBAQAogZGVmIHNzdGF0ZV9jaGVja2hhc2hlcyhzcV9kYXRhLCBkLCBzaWdpbmZvPUZhbHNlLCBjdXJyZW50Y291bnQ9MCwgc3VtbWFyeT1UcnVlLCAqKmt3YXJncyk6CiAgICAgZm91bmQgPSBzZXQoKQogICAgIG1pc3NlZCA9IHNldCgpCi0gICAgZXh0ZW5zaW9uID0gIi50Z3oiCi0gICAgaWYgc2lnaW5mbzoKLSAgICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uICsgIi5zaWdpbmZvIgogCiAgICAgZGVmIGdldGhhc2godGFzayk6CiAgICAgICAgIHJldHVybiBzcV9kYXRhWyd1bmloYXNoJ11bdGFza10KQEAgLTg1MCw3ICs4NzgsNyBAQAogCiAgICAgICAgIHNwZWMsIGV4dHJhcGF0aCwgdG5hbWUgPSBnZXRwYXRoY29tcG9uZW50cyh0aWQsIGQpCiAKLSAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKCIke1NTVEFURV9ESVJ9LyIgKyBleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIGQpICsgIl8iICsgdG5hbWUgKyBleHRlbnNpb24pCisgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZCgiJHtTU1RBVEVfRElSfS8iICsgZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCB0bmFtZSwgc2lnaW5mbywgZCkpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3N0YXRlZmlsZSk6CiAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRlOiBGb3VuZCB2YWxpZCBzc3RhdGUgZmlsZSAlcyIgJSBzc3RhdGVmaWxlKQpAQCAtOTA2LDE5ICs5MzQsMjIgQEAKICAgICAgICAgICAgICAgICBtaXNzZWQuYWRkKHRpZCkKICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRlOiBVbnN1Y2Nlc3NmdWwgZmV0Y2ggdGVzdCBmb3IgJXMiICUgc3JjdXJpKQogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzKG1zZywgbGVuKHRhc2tsaXN0KSAtIHRocmVhZF93b3JrZXIudGFza3MucXNpemUoKSksIGQpCisgICAgICAgICAgICBpZiBsZW4odGFza2xpc3QpID49IG1pbl90YXNrczoKKyAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyhtc2csIGxlbih0YXNrbGlzdCkgLSB0aHJlYWRfd29ya2VyLnRhc2tzLnFzaXplKCkpLCBkKQogCiAgICAgICAgIHRhc2tsaXN0ID0gW10KKyAgICAgICAgbWluX3Rhc2tzID0gMTAwCiAgICAgICAgIGZvciB0aWQgaW4gc3FfZGF0YVsnaGFzaCddOgogICAgICAgICAgICAgaWYgdGlkIGluIGZvdW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBzcGVjLCBleHRyYXBhdGgsIHRuYW1lID0gZ2V0cGF0aGNvbXBvbmVudHModGlkLCBkKQotICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgZCkgKyAiXyIgKyB0bmFtZSArIGV4dGVuc2lvbikKKyAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIHRuYW1lLCBzaWdpbmZvLCBkKSkKICAgICAgICAgICAgIHRhc2tsaXN0LmFwcGVuZCgodGlkLCBzc3RhdGVmaWxlKSkKIAogICAgICAgICBpZiB0YXNrbGlzdDoKLSAgICAgICAgICAgIG1zZyA9ICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiCi0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKG1zZywgbGVuKHRhc2tsaXN0KSksIGQpCisgICAgICAgICAgICBpZiBsZW4odGFza2xpc3QpID49IG1pbl90YXNrczoKKyAgICAgICAgICAgICAgICBtc2cgPSAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IgorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQobXNnLCBsZW4odGFza2xpc3QpKSwgZCkKIAogICAgICAgICAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogICAgICAgICAgICAgbnByb2MgPSBtaW4obXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpLCBsZW4odGFza2xpc3QpKQpAQCAtOTMyLDIyICs5NjMsMTkgQEAKICAgICAgICAgICAgIHBvb2wud2FpdF9jb21wbGV0aW9uKCkKICAgICAgICAgICAgIGJiLmV2ZW50LmRpc2FibGVfdGhyZWFkbG9jaygpCiAKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCi0KLSAgICAjIExpa2VseSBjaGVja2luZyBhbiBpbmRpdmlkdWFsIHRhc2sgaGFzaCBhZ2FpbiBmb3IgbXVsdGljb25maWcgc2hhcmluZyBvZiBzc3RhdGUgdGFza3Mgc28gc2tpcCByZXBvcnRpbmcKLSAgICBpZiBsZW4oc3FfZGF0YVsnaGFzaCddKSA9PSAxOgotICAgICAgICByZXR1cm4gZm91bmQKKyAgICAgICAgICAgIGlmIGxlbih0YXNrbGlzdCkgPj0gbWluX3Rhc2tzOgorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCiAKICAgICBpbmhlcml0bGlzdCA9IGQuZ2V0VmFyKCJJTkhFUklUIikKICAgICBpZiAidG9hc3RlciIgaW4gaW5oZXJpdGxpc3Q6CiAgICAgICAgIGV2ZGF0YSA9IHsnbWlzc2VkJzogW10sICdmb3VuZCc6IFtdfTsKICAgICAgICAgZm9yIHRpZCBpbiBtaXNzZWQ6CiAgICAgICAgICAgICBzcGVjLCBleHRyYXBhdGgsIHRuYW1lID0gZ2V0cGF0aGNvbXBvbmVudHModGlkLCBkKQotICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgZCkgKyAiXyIgKyB0bmFtZSArICIudGd6IikKKyAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIHRuYW1lLCBGYWxzZSwgZCkpCiAgICAgICAgICAgICBldmRhdGFbJ21pc3NlZCddLmFwcGVuZCgoYmIucnVucXVldWUuZm5fZnJvbV90aWQodGlkKSwgYmIucnVucXVldWUudGFza25hbWVfZnJvbV90aWQodGlkKSwgZ2V0aGFzaCh0aWQpLCBzc3RhdGVmaWxlICkgKQogICAgICAgICBmb3IgdGlkIGluIGZvdW5kOgogICAgICAgICAgICAgc3BlYywgZXh0cmFwYXRoLCB0bmFtZSA9IGdldHBhdGhjb21wb25lbnRzKHRpZCwgZCkKLSAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIGQpICsgIl8iICsgdG5hbWUgKyAiLnRneiIpCisgICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCB0bmFtZSwgRmFsc2UsIGQpKQogICAgICAgICAgICAgZXZkYXRhWydmb3VuZCddLmFwcGVuZCgoYmIucnVucXVldWUuZm5fZnJvbV90aWQodGlkKSwgYmIucnVucXVldWUudGFza25hbWVfZnJvbV90aWQodGlkKSwgZ2V0aGFzaCh0aWQpLCBzc3RhdGVmaWxlICkgKQogICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIk1pc3NlZFNzdGF0ZSIsIGV2ZGF0YSksIGQpCiAKQEAgLTEwODEsMTcgKzExMDksMjAgQEAKIHNzdGF0ZV9ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5idWlsZC5UYXNrU3VjY2VlZGVkIgogcHl0aG9uIHNzdGF0ZV9ldmVudGhhbmRsZXIoKSB7CiAgICAgZCA9IGUuZGF0YQotICAgICMgV2hlbiB3ZSB3cml0ZSBhbiBzc3RhdGUgcGFja2FnZSB3ZSByZXdyaXRlIHRoZSBTU1RBVEVfUEtHCi0gICAgc3BrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykKLSAgICBpZiBub3Qgc3BrZy5lbmRzd2l0aCgiLnRneiIpOgorICAgIHdyaXR0ZW5zc3RhdGUgPSBkLmdldFZhcignU1NUQVRFX0NVUlJUQVNLJykKKyAgICBpZiBub3Qgd3JpdHRlbnNzdGF0ZToKICAgICAgICAgdGFza25hbWUgPSBkLmdldFZhcigiQkJfUlVOVEFTSyIpWzM6XQogICAgICAgICBzcGVjID0gZC5nZXRWYXIoJ1NTVEFURV9QS0dTUEVDJykKICAgICAgICAgc3dzcGVjID0gZC5nZXRWYXIoJ1NTVEFURV9TV1NQRUMnKQogICAgICAgICBpZiB0YXNrbmFtZSBpbiBbImZldGNoIiwgInVucGFjayIsICJwYXRjaCIsICJwb3B1bGF0ZV9saWMiLCAicHJlY29uZmlndXJlIl0gYW5kIHN3c3BlYzoKICAgICAgICAgICAgIGQuc2V0VmFyKCJTU1RBVEVfUEtHU1BFQyIsICIke1NTVEFURV9TV1NQRUN9IikKICAgICAgICAgICAgIGQuc2V0VmFyKCJTU1RBVEVfRVhUUkFQQVRIIiwgIiIpCi0gICAgICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykKLSAgICAgICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNzdGF0ZXBrZyArICdfJyArIHRhc2tuYW1lICsgIi50Z3oiICIuc2lnaW5mbyIsIGQpCisgICAgICAgIGQuc2V0VmFyKCJTU1RBVEVfQ1VSUlRBU0siLCB0YXNrbmFtZSkKKyAgICAgICAgc2lnaW5mbyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAiLnNpZ2luZm8iCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzaWdpbmZvKToKKyAgICAgICAgICAgIGJiLnNpZ2dlbi5kdW1wX3RoaXNfdGFzayhzaWdpbmZvLCBkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MudXRpbWUoc2lnaW5mbywgTm9uZSkKIH0KIAogU1NUQVRFX1BSVU5FX09CU09MRVRFV09SS0RJUiA/PSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwppbmRleCBjY2EwYjdlLi41YjA0Zjg4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgJHtkYXRhZGlyfS9ndGstZG9jL2h0bWwgXAogICAgICR7ZGF0YWRpcn0vbG9jYWxlIFwKICAgICAke2RhdGFkaXJ9L3BpeG1hcHMgXAotICAgICR7bGliZGlyfS8ke1BOfS9wdGVzdCBcCisgICAgJHtsaWJkaXJ9LyR7QlBOfS9wdGVzdCBcCiAiCiAKIHN5c3Jvb3Rfc3RhZ2VfZGlyKCkgewpAQCAtNzUsOCArNzUsOCBAQAogCiAgICAgZHN0ZGlyID0gZC5nZXRWYXIoJ1NZU1JPT1RfREVTVERJUicpCiAgICAgcG4gPSBkLmdldFZhcignUE4nKQotICAgIGxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkc3RkaXIgKyBvcy5zZXAgKyBkLmdldFZhcigibGliZGlyIikpCi0gICAgYmFzZV9saWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHN0ZGlyICsgb3Muc2VwICsgZC5nZXRWYXIoImJhc2VfbGliZGlyIikpCisgICAgbGliZGlyID0gZC5nZXRWYXIoImxpYmRpciIpCisgICAgYmFzZV9saWJkaXIgPSBkLmdldFZhcigiYmFzZV9saWJkaXIiKQogICAgIHFhX2FscmVhZHlfc3RyaXBwZWQgPSAnYWxyZWFkeS1zdHJpcHBlZCcgaW4gKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUF8nICsgcG4pIG9yICIiKS5zcGxpdCgpCiAgICAgc3RyaXBfY21kID0gZC5nZXRWYXIoIlNUUklQIikKIApAQCAtMjc3LDExICsyNzcsMTMgQEAKIAogICAgIHN0YXJ0ID0gTm9uZQogICAgIGNvbmZpZ3VyZWRlcHMgPSBbXQorICAgIG93bnRhc2tkZXBzID0gW10KICAgICBmb3IgZGVwIGluIHRhc2tkZXBkYXRhOgogICAgICAgICBkYXRhID0gdGFza2RlcGRhdGFbZGVwXQogICAgICAgICBpZiBkYXRhWzFdID09IG15dGFza25hbWUgYW5kIGRhdGFbMF0gPT0gcG46CiAgICAgICAgICAgICBzdGFydCA9IGRlcAotICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxpZiBkYXRhWzBdID09IHBuOgorICAgICAgICAgICAgb3dudGFza2RlcHMuYXBwZW5kKGRhdGFbMV0pCiAgICAgaWYgc3RhcnQgaXMgTm9uZToKICAgICAgICAgYmIuZmF0YWwoIkNvdWxkbid0IGZpbmQgb3Vyc2VsZiBpbiBCQl9UQVNLREVQREFUQT8iKQogCkBAIC00MjcsNyArNDI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgV2FzIGxpa2VseSBhbHJlYWR5IHVuaW5zdGFsbGVkCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWwuYXBwZW5kKGwpCi0gICAgICAgICMgV2UgbmVlZCB0byBlbnN1cmUgbm90IG90aGVyIHRhc2sgbmVlZHMgdGhpcyBkZXBlbmRlbmN5LiBXZSBob2xkIHRoZSBzeXNyb290CisgICAgICAgICMgV2UgbmVlZCB0byBlbnN1cmUgbm8gb3RoZXIgdGFzayBuZWVkcyB0aGlzIGRlcGVuZGVuY3kuIFdlIGhvbGQgdGhlIHN5c3Jvb3QKICAgICAgICAgIyBsb2NrIHNvIHdlIGNhIHNlYXJjaCB0aGUgaW5kZXhlcyB0byBjaGVjawogICAgICAgICBpZiBwb3RlbnRpYWw6CiAgICAgICAgICAgICBmb3IgaSBpbiBnbG9iLmdsb2IoZGVwZGlyICsgIi9pbmRleC4qIik6CkBAIC00MzUsNiArNDM3LDExIEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGksICJyIikgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgZm9yIGwgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwuc3RhcnRzd2l0aCgiVGFza0RlcHM6Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldnRhc2tzID0gbC5zcGxpdCgpWzE6XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG15dGFza25hbWUgaW4gcHJldnRhc2tzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlJ3JlIGEgZGVwZW5kZW5jeSBvZiB0aGlzIHRhc2sgc28gd2UgY2FuIGNsZWFyIGl0ZW1zIG91dCB0aGUgc3lzcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCBpbiBwb3RlbnRpYWw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsLnJlbW92ZShsKQpAQCAtNDcwLDYgKzQ3Nyw3IEBACiAgICAgICAgIGVsaWYgb3MucGF0aC5sZXhpc3RzKGRlcGRpciArICIvIiArIGMpOgogICAgICAgICAgICAgb3MudW5saW5rKGRlcGRpciArICIvIiArIGMpCiAKKyAgICBiaW5maWxlcyA9IHt9CiAgICAgIyBOb3cgaGFuZGxlIGluc3RhbGxzCiAgICAgZm9yIGRlcCBpbiBjb25maWd1cmVkZXBzOgogICAgICAgICBjID0gc2V0c2NlbmVkZXBzW2RlcF1bMF0KQEAgLTU2Miw3ICs1NzAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbC5lbmRzd2l0aCgiLyIpOgogICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2luZ19jb3B5ZGlyKGwsIHRhcmdldGRpciwgZGVzdCwgc2VlbmRpcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBzdGFnaW5nX2NvcHlmaWxlKGwsIHRhcmdldGRpciwgZGVzdCwgcG9zdGluc3RzLCBzZWVuZGlycykKKyAgICAgICAgICAgICAgICAgICAgaWYgIi9iaW4vIiBpbiBsIG9yICIvc2Jpbi8iIGluIGw6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGRlZmVyIC8qYmluLyogZmlsZXMgdW50aWwgbGFzdCBpbiBjYXNlIHRoZXkgbmVlZCBsaWJzCisgICAgICAgICAgICAgICAgICAgICAgICBiaW5maWxlc1tsXSA9ICh0YXJnZXRkaXIsIGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFnaW5nX2NvcHlmaWxlKGwsIHRhcmdldGRpciwgZGVzdCwgcG9zdGluc3RzLCBzZWVuZGlycykKKworICAgICMgSGFuZGxlIGRlZmVycmVkIGJpbmZpbGVzCisgICAgZm9yIGwgaW4gYmluZmlsZXM6CisgICAgICAgICh0YXJnZXRkaXIsIGRlc3QpID0gYmluZmlsZXNbbF0KKyAgICAgICAgc3RhZ2luZ19jb3B5ZmlsZShsLCB0YXJnZXRkaXIsIGRlc3QsIHBvc3RpbnN0cywgc2VlbmRpcnMpCiAKICAgICBiYi5ub3RlKCJJbnN0YWxsZWQgaW50byBzeXNyb290OiAlcyIgJSBzdHIobXNnX2FkZGluZykpCiAgICAgYmIubm90ZSgiU2tpcHBpbmcgYXMgYWxyZWFkeSBleGlzdHMgaW4gc3lzcm9vdDogJXMiICUgc3RyKG1zZ19leGlzdHMpKQpAQCAtNTc4LDYgKzU5NSw3IEBACiAgICAgICAgIG9zLnN5bWxpbmsobWFuaWZlc3RzW2RlcF0sIGRlcGRpciArICIvIiArIGMgKyAiLmNvbXBsZXRlIikKIAogICAgIHdpdGggb3Blbih0YXNraW5kZXgsICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZSgiVGFza0RlcHM6ICIgKyAiICIuam9pbihvd250YXNrZGVwcykgKyAiXG4iKQogICAgICAgICBmb3IgbCBpbiBzb3J0ZWQoaW5zdGFsbGVkKToKICAgICAgICAgICAgIGYud3JpdGUobCArICJcbiIpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKaW5kZXggODQ0ZWQ4Ny4uMDBmMGMyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKQEAgLTMxLDkgKzMxLDIxIEBACiAjIFRFU1RfTE9HX0RJUiBjb250YWlucyBhIGNvbW1hbmQgc3NoIGxvZyBhbmQgbWF5IGNvbnRhaW4gaW5mcm9tYXRpb24gYWJvdXQgd2hhdCBjb21tYW5kIGlzIHJ1bm5pbmcsIG91dHB1dCBhbmQgcmV0dXJuIGNvZGVzIGFuZCBmb3IgcWVtdSBhIGJvb3QgbG9nIHRpbGwgbG9naW4uCiAjIEJvb3RpbmcgaXMgaGFuZGxlZCBieSB0aGlzIGNsYXNzLCBhbmQgaXQncyBub3QgYSB0ZXN0IGluIGl0c2VsZi4KICMgVEVTVF9RRU1VQk9PVF9USU1FT1VUIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSB0aW1lIGluIHNlY29uZHMgdGhlIGxhdW5jaCBjb2RlIHdpbGwgd2FpdCBmb3IgdGhlIGxvZ2luIHByb21wdC4KKyMgVEVTVF9PVkVSQUxMX1RJTUVPVVQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0aGUgdGVzdHMgd2lsbCBiZSBhbGxvd2VkIHRvIHJ1biAoZGVmYXVsdHMgdG8gbm8gbGltaXQpLgogIyBURVNUX1FFTVVQQVJBTVMgY2FuIGJlIHVzZWQgdG8gcGFzcyBleHRyYSBwYXJhbWV0ZXJzIHRvIHFlbXUsIGUuZy4gIi1tIDEwMjQiIGZvciBzZXR0aW5nIHRoZSBhbW91bnQgb2YgcmFtIHRvIDEgR0IuCiAjIFRFU1RfUlVOUUVNVVBBUkFNUyBjYW4gYmUgdXNlZCB0byBwYXNzIGV4dHJhIHBhcmFtZXRlcnMgdG8gcnVucWVtdSwgZS5nLiAiZ2wiIHRvIGVuYWJsZSBPcGVuR0wgYWNjZWxlcmF0aW9uLgogCisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGNlcnRhaW4gcGF0dGVybnMgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0YXJnZXQgd2hlbiBib290aW5nLAorIyBpZiBhIHBhdHRlcm4gaXMgbm90IHNwZWNpZmljYWxseSBwcmVzZW50IG9uIHRoaXMgdmFyaWFibGUgYSBkZWZhdWx0IHdpbGwgYmUgdXNlZCB3aGVuIGJvb3RpbmcgdGhlIHRhcmdldC4KKyMgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlNbPGZsYWc+XSBvdmVycmlkZXMgdGhlIHBhdHRlcm4gdXNlZCBmb3IgdGhhdCBzcGVjaWZpYyBmbGFnLCB3aGVyZSBmbGFnIGNvbWVzIGZyb20gYSBsaXN0IG9mIGFjY2VwdGVkIGZsYWdzCisjIGUuZy4gbm9ybWFsbHkgdGhlIHN5c3RlbSBib290cyBhbmQgd2FpdHMgZm9yIGEgbG9naW4gcHJvbXB0IChsb2dpbjopLCBhZnRlciB0aGF0IGl0IHNlbmRzIHRoZSBjb21tYW5kOiAicm9vdFxuIiB0byBsb2cgYXMgdGhlIHJvb3QgdXNlcgorIyBpZiB3ZSB3YW50ZWQgdG8gbG9nIGluIGFzIHRoZSBoeXBvdGhldGljYWwgIndlYnNlcnZlciIgdXNlciBmb3IgZXhhbXBsZSB3ZSBjb3VsZCBzZXQgdGhlIGZvbGxvd2luZzoKKyMgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMgPSAic2VuZF9sb2dpbl91c2VyIHNlYXJjaF9sb2dpbl9zdWNjZWVkZWQiCisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TW3NlbmRfbG9naW5fdXNlcl0gPSAid2Vic2VydmVyXG4iCisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TW3NlYXJjaF9sb2dpbl9zdWNjZWVkZWRdID0gIndlYnNlcnZlckBbYS16QS1aMC05XC1dKzp+IyIKKyMgVGhlIGFjY2VwdGVkIGZsYWdzIGFyZSB0aGUgZm9sbG93aW5nOiBzZWFyY2hfcmVhY2hlZF9wcm9tcHQsIHNlbmRfbG9naW5fdXNlciwgc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCwgc2VhcmNoX2NtZF9maW5pc2hlZC4KKyMgVGhleSBhcmUgcHJlZml4ZWQgd2l0aCBlaXRoZXIgc2VhcmNoL3NlbmQsIHRvIGRpZmZlcmVudGlhdGUgaWYgdGhlIHBhdHRlcm4gaXMgbWVhbnQgdG8gYmUgc2VudCBvciBzZWFyY2hlZCB0by9mcm9tIHRoZSB0YXJnZXQgdGVybWluYWwKKwogVEVTVF9MT0dfRElSID89ICIke1dPUktESVJ9L3Rlc3RpbWFnZSIKIAogVEVTVF9FWFBPUlRfRElSID89ICIke1RNUERJUn0vdGVzdGltYWdlLyR7UE59IgpAQCAtNDYsNyArNTgsNyBAQAogICAgIHBpbmcgZGF0ZSBkZiBzc2ggc2NwIHB5dGhvbiBwZXJsIGdpIHB0ZXN0IHBhcnNlbG9ncyBcCiAgICAgbG9ncm90YXRlIGNvbm5tYW4gc3lzdGVtZCBvZV9zeXNsb2cgcGFtIHN0YXAgbGRkIHhvcmcgXAogICAgIGtlcm5lbG1vZHVsZSBnY2MgYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IgXAotICAgIGRuZiBycG0gb3BrZyBhcHQiCisgICAgZG5mIHJwbSBvcGtnIGFwdCB3ZXN0b24iCiAKIERFRkFVTFRfVEVTVF9TVUlURVMgPSAiJHtCQVNJQ1RFU1RTVUlURX0iCiAKQEAgLTY0LDEwICs3NiwxMyBAQAogVEVTVF9TVUlURVMgPz0gIiR7REVGQVVMVF9URVNUX1NVSVRFU30iCiAKIFRFU1RfUUVNVUJPT1RfVElNRU9VVCA/PSAiMTAwMCIKK1RFU1RfT1ZFUkFMTF9USU1FT1VUID89ICIiCiBURVNUX1RBUkdFVCA/PSAicWVtdSIKIFRFU1RfUUVNVVBBUkFNUyA/PSAiIgogVEVTVF9SVU5RRU1VUEFSQU1TID89ICIiCiAKK1RFU1RJTUFHRV9CT09UX1BBVFRFUk5TID89ICIiCisKIFRFU1RJTUFHRURFUEVORFMgPSAiIgogVEVTVElNQUdFREVQRU5EU19hcHBlbmRfcWVtdWFsbCA9ICIgcWVtdS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QiCiBURVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnY3Bpby1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCkBAIC0xNTAsNiArMTY1LDI5IEBACiBkZWYgZ2V0X3Rlc3RpbWFnZV9yZXN1bHRfaWQoY29uZmlndXJhdGlvbik6CiAgICAgcmV0dXJuICclc18lc18lc18lcycgJSAoY29uZmlndXJhdGlvblsnVEVTVF9UWVBFJ10sIGNvbmZpZ3VyYXRpb25bJ0lNQUdFX0JBU0VOQU1FJ10sIGNvbmZpZ3VyYXRpb25bJ01BQ0hJTkUnXSwgY29uZmlndXJhdGlvblsnU1RBUlRUSU1FJ10pCiAKK2RlZiBnZXRfdGVzdGltYWdlX2Jvb3RfcGF0dGVybnMoZCk6CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKKyAgICBib290X3BhdHRlcm5zID0gZGVmYXVsdGRpY3Qoc3RyKQorICAgICMgT25seSBhY2NlcHQgY2VydGFpbiB2YWx1ZXMKKyAgICBhY2NlcHRlZF9wYXR0ZXJucyA9IFsnc2VhcmNoX3JlYWNoZWRfcHJvbXB0JywgJ3NlbmRfbG9naW5fdXNlcicsICdzZWFyY2hfbG9naW5fc3VjY2VlZGVkJywgJ3NlYXJjaF9jbWRfZmluaXNoZWQnXQorICAgICMgTm90IGFsbCBwYXR0ZXJucyBuZWVkIHRvIGJlIG92ZXJyaWRlbiwgZS5nLiBwZXJoYXBzIHdlIG9ubHkgd2FudCB0byBjaGFuZ2UgdGhlIHVzZXIKKyAgICBib290X3BhdHRlcm5zX2ZsYWdzID0gZC5nZXRWYXJGbGFncygnVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMnKSBvciB7fQorICAgIGlmIGJvb3RfcGF0dGVybnNfZmxhZ3M6CisgICAgICAgIHBhdHRlcm5zX3NldCA9IFtwIGZvciBwIGluIGJvb3RfcGF0dGVybnNfZmxhZ3MuaXRlbXMoKSBpZiBwWzBdIGluIGQuZ2V0VmFyKCdURVNUSU1BR0VfQk9PVF9QQVRURVJOUycpLnNwbGl0KCldCisgICAgICAgIGZvciBmbGFnLCBmbGFndmFsIGluIHBhdHRlcm5zX3NldDoKKyAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBhY2NlcHRlZF9wYXR0ZXJuczoKKyAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoJ1Rlc3RpbWFnZTogVGhlIG9ubHkgYWNjZXB0ZWQgYm9vdCBwYXR0ZXJucyBhcmU6IHNlYXJjaF9yZWFjaGVkX3Byb21wdCxzZW5kX2xvZ2luX3VzZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCxzZWFyY2hfY21kX2ZpbmlzaGVkXG4gTWFrZSBzdXJlIHlvdXIgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlM9JXMgXAorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhbiBhY2NlcHRlZCBmbGFnLicgJSBkLmdldFZhcignVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgIyBXZSBrbm93IGJvb3QgcHJvbXB0IGlzIHNlYXJjaGVkIHRocm91Z2ggaW4gYmluYXJ5IGZvcm1hdCwgb3RoZXJzIG1pZ2h0IGJlIGV4cHJlc3Npb25zCisgICAgICAgICAgICAgICAgaWYgZmxhZyA9PSAnc2VhcmNoX3JlYWNoZWRfcHJvbXB0JzoKKyAgICAgICAgICAgICAgICAgICAgYm9vdF9wYXR0ZXJuc1tmbGFnXSA9IGZsYWd2YWwuZW5jb2RlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBib290X3BhdHRlcm5zW2ZsYWddID0gZmxhZ3ZhbC5lbmNvZGUoKS5kZWNvZGUoJ3VuaWNvZGUtZXNjYXBlJykKKyAgICByZXR1cm4gYm9vdF9wYXR0ZXJucworCisKIGRlZiB0ZXN0aW1hZ2VfbWFpbihkKToKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQganNvbgpAQCAtMTY4LDcgKzIwNiwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgQ2F0Y2ggU0lHVEVSTSBmcm9tIHdvcmtlciBpbiBvcmRlciB0byBzdG9wIHFlbXUuCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR0lOVCkKKworICAgIGRlZiBoYW5kbGVfdGVzdF90aW1lb3V0KHRpbWVvdXQpOgorICAgICAgICBiYi53YXJuKCJHbG9iYWwgdGVzdCB0aW1lb3V0IHJlYWNoZWQgKCVzIHNlY29uZHMpLCBzdG9wcGluZyB0aGUgdGVzdHMuIiAlKHRpbWVvdXQpKQorICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHSU5UKQogCiAgICAgdGVzdGltYWdlX3Nhbml0eShkKQogCkBAIC0yMDcsNyArMjQ5LDcgQEAKICAgICBpZiBkLmdldFZhcigiVEVTVF9UQVJHRVQiKSA9PSAicWVtdSI6CiAgICAgICAgIGZzdHlwZXMgPSBbZnMgZm9yIGZzIGluIGZzdHlwZXMgaWYgZnMgaW4gc3VwcG9ydGVkX2ZzdHlwZXNdCiAgICAgICAgIGlmIG5vdCBmc3R5cGVzOgotICAgICAgICAgICAgYmIuZmF0YWwoJ1Vuc3VwcG9ydGVkIGltYWdlIHR5cGUgYnVpbHQuIEFkZCBhIGNvbXB0aWJsZSBpbWFnZSB0byAnCisgICAgICAgICAgICBiYi5mYXRhbCgnVW5zdXBwb3J0ZWQgaW1hZ2UgdHlwZSBidWlsdC4gQWRkIGEgY29tcGF0aWJsZSBpbWFnZSB0byAnCiAgICAgICAgICAgICAgICAgICAgICAnSU1BR0VfRlNUWVBFUy4gU3VwcG9ydGVkIHR5cGVzOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHN1cHBvcnRlZF9mc3R5cGVzKSkKICAgICBxZnN0eXBlID0gZnN0eXBlc1swXQpAQCAtMjM5LDExICsyODEsMTQgQEAKICAgICAjIEdldCB1c2Vfa3ZtCiAgICAga3ZtID0gb2UudHlwZXMucWVtdV91c2Vfa3ZtKGQuZ2V0VmFyKCdRRU1VX1VTRV9LVk0nKSwgZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykpCiAKKyAgICAjIEdldCBPVk1GCisgICAgb3ZtZiA9IGQuZ2V0VmFyKCJRRU1VX1VTRV9PVk1GIikKKwogICAgIHNsaXJwID0gRmFsc2UKICAgICBpZiBkLmdldFZhcigiUUVNVV9VU0VfU0xJUlAiKToKICAgICAgICAgc2xpcnAgPSBUcnVlCiAKLSAgICAjIFRPRE86IFdlIHVzZSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGluIG9mIHFlbXUgcnVubmVyIGJlY2F1c2Ugb2YKKyAgICAjIFRPRE86IFdlIHVzZSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBxZW11IHJ1bm5lciBiZWNhdXNlIG9mCiAgICAgIyB0aW1lIGNvbnN0cmFpbnMsIHFlbXUgcnVubmVyIHJlYWxseSBuZWVkcyBhIHJlZmFjdG9yIHRvby4KICAgICB0YXJnZXRfa3dhcmdzID0geyAnbWFjaGluZScgICAgIDogbWFjaGluZSwKICAgICAgICAgICAgICAgICAgICAgICAncm9vdGZzJyAgICAgIDogcm9vdGZzLApAQCAtMjU2LDggKzMwMSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICdrdm0nICAgICAgICAgOiBrdm0sCiAgICAgICAgICAgICAgICAgICAgICAgJ3NsaXJwJyAgICAgICA6IHNsaXJwLAogICAgICAgICAgICAgICAgICAgICAgICdkdW1wX2RpcicgICAgOiBkLmdldFZhcigiVEVTVElNQUdFX0RVTVBfRElSIiksCisgICAgICAgICAgICAgICAgICAgICAgJ3NlcmlhbF9wb3J0cyc6IGxlbihkLmdldFZhcigiU0VSSUFMX0NPTlNPTEVTIikuc3BsaXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgJ292bWYnICAgICAgICA6IG92bWYsCiAgICAgICAgICAgICAgICAgICAgIH0KIAorICAgIGlmIGQuZ2V0VmFyKCJURVNUSU1BR0VfQk9PVF9QQVRURVJOUyIpOgorICAgICAgICB0YXJnZXRfa3dhcmdzWydib290X3BhdHRlcm5zJ10gPSBnZXRfdGVzdGltYWdlX2Jvb3RfcGF0dGVybnMoZCkKKwogICAgICMgVE9ETzogQ3VycmVudGx5IEJCUEFUSCBpcyBuZWVkZWQgZm9yIGN1c3RvbSBsb2FkaW5nIG9mIHRhcmdldHMuCiAgICAgIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gZmluZCB0aGVzZSBtb2R1bGVzIHVzaW5nIGluc3Ryb3NwZWN0aW9uLgogICAgIHRhcmdldF9rd2FyZ3NbJ3RhcmdldF9tb2R1bGVzX3BhdGgnXSA9IGQuZ2V0VmFyKCdCQlBBVEgnKQpAQCAtMzE5LDEwICszNjksMTUgQEAKICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHJ1bnFlbXUgZW5kcyB1bmV4cGVjdGVkbHkKICAgICAgICAgIyBvciBpZiB0aGUgd29ya2VyIHNlbmQgdXMgYSBTSUdURVJNCiAgICAgICAgIHRjLnRhcmdldC5zdGFydChwYXJhbXM9ZC5nZXRWYXIoIlRFU1RfUUVNVVBBUkFNUyIpLCBydW5xZW11cGFyYW1zPWQuZ2V0VmFyKCJURVNUX1JVTlFFTVVQQVJBTVMiKSkKKyAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICB0cnk6CisgICAgICAgICAgICB0aHJlYWRpbmcuVGltZXIoaW50KGQuZ2V0VmFyKCJURVNUX09WRVJBTExfVElNRU9VVCIpKSwgaGFuZGxlX3Rlc3RfdGltZW91dCwgKGludChkLmdldFZhcigiVEVTVF9PVkVSQUxMX1RJTUVPVVQiKSksKSkuc3RhcnQoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmVzdWx0cyA9IHRjLnJ1blRlc3RzKCkKLSAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgQmxvY2tpbmdJT0Vycm9yKSBhcyBlcnI6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZXJyLCBSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgYmIuZXJyb3IoJ3Rlc3RpbWFnZSByZWNlaXZlZCBTSUdURVJNLCBzaHV0dGluZyBkb3duLi4uJykKKyAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBCbG9ja2luZ0lPRXJyb3IpIGFzIGVycjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShlcnIsIEtleWJvYXJkSW50ZXJydXB0KToKKyAgICAgICAgICAgIGJiLmVycm9yKCd0ZXN0aW1hZ2UgaW50ZXJydXB0ZWQsIHNodXR0aW5nIGRvd24uLi4nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYmIuZXJyb3IoJ3J1bnFlbXUgZmFpbGVkLCBzaHV0dGluZyBkb3duLi4uJykKICAgICAgICAgaWYgcmVzdWx0czoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3RleGluZm8uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3RleGluZm8uYmJjbGFzcwppbmRleCA2YjBkZWYwLi5mNDZiYWNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXhpbmZvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGV4aW5mby5iYmNsYXNzCkBAIC02LDEzICs2LDEzIEBACiAjIFRleGluZm8gcmVjaXBlLCB5b3UgY2FuIHJlbW92ZSB0ZXhpbmZvLW5hdGl2ZSBmcm9tIEFTU1VNRV9QUk9WSURFRCBhbmQKICMgbWFrZWluZm8gZnJvbSBTQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTLgogCi1URVhERVAgPSAidGV4aW5mby1uYXRpdmUiCitURVhERVAgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhcGktZG9jdW1lbnRhdGlvbicsICd0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZScsICd0ZXhpbmZvLWR1bW15LW5hdGl2ZScsIGQpfSIKIFRFWERFUF9jbGFzcy1uYXRpdmUgPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCiBURVhERVBfY2xhc3MtY3Jvc3MgPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCitURVhERVBfY2xhc3MtY3Jvc3NzZGsgPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCitURVhERVBfY2xhc3MtY3Jvc3MtY2FuYWRpYW4gPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZCA9ICIgJHtURVhERVB9IgotUEFUSF9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vdGV4aW5mby1kdW1teS1uYXRpdmU6IgotUEFUSF9wcmVwZW5kX2NsYXNzLWNyb3NzID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS90ZXhpbmZvLWR1bW15LW5hdGl2ZToiCiAKICMgbGlidG9vbC1jcm9zcyBkb2Vzbid0IGluaGVyaXQgY3Jvc3MKIFRFWERFUF9wbi1saWJ0b29sLWNyb3NzID0gInRleGluZm8tZHVtbXktbmF0aXZlIgotUEFUSF9wcmVwZW5kX3BuLWxpYnRvb2wtY3Jvc3MgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3RleGluZm8tZHVtbXktbmF0aXZlOiIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdG9hc3Rlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdG9hc3Rlci5iYmNsYXNzCmluZGV4IDZjZWYwYjguLjk1MThkZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy90b2FzdGVyLmJiY2xhc3MKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgICAgICAgICAgICAgIHBhc3MgICAgIyBpZ25vcmUgbGluZXMgd2l0aG91dCB2YWxpZCBrZXk6IHZhbHVlIHBhaXJzCiAgICAgcmV0dXJuIHBrZ2RhdGEKIAotcHl0aG9uIHRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSgpIHsKK2RlZiBfdG9hc3Rlcl9kdW1wZGF0YShwa2dkYXRhZGlyLCBkKToKICAgICAiIiIKICAgICBEdW1wcyB0aGUgZGF0YSBhYm91dCB0aGUgcGFja2FnZXMgY3JlYXRlZCBieSBhIHJlY2lwZQogICAgICIiIgpAQCAtMTIyLDE2ICsxMjIsMjQgQEAKICAgICBpZiBub3QgZC5nZXRWYXIoJ1BBQ0tBR0VTJyk6CiAgICAgICAgIHJldHVybgogCi0gICAgcGtnZGF0YWRpciA9IGQuZ2V0VmFyKCdQS0dERVNUV09SSycpCiAgICAgbHBrZ2RhdGEgPSB7fQogICAgIGRhdGFkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGF0YWRpciwgJ3J1bnRpbWUnKQogCiAgICAgIyBzY2FuIGFuZCBzZW5kIGRhdGEgZm9yIGVhY2ggZ2VuZXJhdGVkIHBhY2thZ2UKLSAgICBmb3IgZGF0YWZpbGUgaW4gb3MubGlzdGRpcihkYXRhZGlyKToKLSAgICAgICAgaWYgbm90IGRhdGFmaWxlLmVuZHN3aXRoKCcucGFja2FnZWQnKToKLSAgICAgICAgICAgIGxwa2dkYXRhID0gX3RvYXN0ZXJfbG9hZF9wa2dkYXRhZmlsZShkYXRhZGlyLCBkYXRhZmlsZSkKLSAgICAgICAgICAgICMgRmlyZSBhbiBldmVudCBjb250YWluaW5nIHRoZSBwa2cgZGF0YQotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5NZXRhZGF0YUV2ZW50KCJTaW5nbGVQYWNrYWdlSW5mbyIsIGxwa2dkYXRhKSwgZCkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhkYXRhZGlyKToKKyAgICAgICAgZm9yIGRhdGFmaWxlIGluIG9zLmxpc3RkaXIoZGF0YWRpcik6CisgICAgICAgICAgICBpZiBub3QgZGF0YWZpbGUuZW5kc3dpdGgoJy5wYWNrYWdlZCcpOgorICAgICAgICAgICAgICAgIGxwa2dkYXRhID0gX3RvYXN0ZXJfbG9hZF9wa2dkYXRhZmlsZShkYXRhZGlyLCBkYXRhZmlsZSkKKyAgICAgICAgICAgICAgICAjIEZpcmUgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgcGtnIGRhdGEKKyAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIlNpbmdsZVBhY2thZ2VJbmZvIiwgbHBrZ2RhdGEpLCBkKQorCitweXRob24gdG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhKCkgeworICAgIF90b2FzdGVyX2R1bXBkYXRhKGQuZ2V0VmFyKCdQS0dERVNUV09SSycpLCBkKQorfQorCitweXRob24gdG9hc3Rlcl9wYWNrYWdlZGF0YV9kdW1wZGF0YSgpIHsKKyAgICAjIFRoaXMgcGF0aCBuZWVkcyB0byBtYXRjaCBkb19wYWNrYWdlZGF0YVtzc3RhdGUtaW5wdXRkaXJzXQorICAgIF90b2FzdGVyX2R1bXBkYXRhKG9zLnBhdGguam9pbihkLmdldFZhcignV09SS0RJUicpLCAncGtnZGF0YS1wZGF0YS1pbnB1dCcpLCBkKQogfQogCiAjIDIuIER1bXAgb3V0cHV0IGltYWdlIGZpbGVzIGluZm9ybWF0aW9uCkBAIC0zNjYsOCArMzc0LDggQEAKIGFkZGhhbmRsZXIgdG9hc3Rlcl9hcnRpZmFjdHMKIHRvYXN0ZXJfYXJ0aWZhY3RzW2V2ZW50bWFza10gPSAiYmIucnVucXVldWUucnVuUXVldWVUYXNrU2tpcHBlZCBiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tDb21wbGV0ZWQiCiAKLWRvX3BhY2thZ2VkYXRhX3NldHNjZW5lW3Bvc3RmdW5jc10gKz0gInRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSAiCi1kb19wYWNrYWdlZGF0YV9zZXRzY2VuZVt2YXJkZXBzZXhjbHVkZV0gKz0gInRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSAiCitkb19wYWNrYWdlZGF0YV9zZXRzY2VuZVtwb3N0ZnVuY3NdICs9ICJ0b2FzdGVyX3BhY2thZ2VkYXRhX2R1bXBkYXRhICIKK2RvX3BhY2thZ2VkYXRhX3NldHNjZW5lW3ZhcmRlcHNleGNsdWRlXSArPSAidG9hc3Rlcl9wYWNrYWdlZGF0YV9kdW1wZGF0YSAiCiAKIGRvX3BhY2thZ2VbcG9zdGZ1bmNzXSArPSAidG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhICIKIGRvX3BhY2thZ2VbdmFyZGVwc2V4Y2x1ZGVdICs9ICJ0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwppbmRleCA5Zjg2NDVhLi43MDc5OWJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwpAQCAtMSw0ICsxLDQgQEAKLVVOSU5BVElWRV9MT0FERVIgPz0gIiR7VU5JTkFUSVZFX1NUQUdJTkdfRElSfS11bmluYXRpdmUvJHtCVUlMRF9BUkNIfS1saW51eC9saWIvJHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAneDg2XzY0JywgJ2xkLWxpbnV4LXg4Ni02NC5zby4yJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ2k2ODYnLCAnbGQtbGludXguc28uMicsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdhYXJjaDY0JywgJ2xkLWxpbnV4LWFhcmNoNjQuc28uMScsICcnLCBkKX0iCitVTklOQVRJVkVfTE9BREVSID89ICIke1VOSU5BVElWRV9TVEFHSU5HX0RJUn0tdW5pbmF0aXZlLyR7QlVJTERfQVJDSH0tbGludXgvbGliLyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ3g4Nl82NCcsICdsZC1saW51eC14ODYtNjQuc28uMicsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdpNjg2JywgJ2xkLWxpbnV4LnNvLjInLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAnYWFyY2g2NCcsICdsZC1saW51eC1hYXJjaDY0LnNvLjEnLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAncHBjNjRsZScsICdsZDY0LnNvLjInLCAnJywgZCl9IgogVU5JTkFUSVZFX1NUQUdJTkdfRElSID89ICIke1NUQUdJTkdfRElSfSIKIAogVU5JTkFUSVZFX1VSTCA/PSAidW5zZXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy92YWxhLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy92YWxhLmJiY2xhc3MKaW5kZXggNjE1ZWIzNy4uYmNhZjY4YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdmFsYS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3ZhbGEuYmJjbGFzcwpAQCAtOCw3ICs4LDcgQEAKICMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKIGV4cG9ydCBTVEFHSU5HX0RBVEFESVIKICMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn06JHtTVEFHSU5HX0xJQkRJUn0iCiAKICMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCiBGSUxFU18ke1BOfS1kZXYgKz0gIlwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYgYi9wb2t5L21ldGEvY29uZi9hYmlfdmVyc2lvbi5jb25mCmluZGV4IDQ5NjQ4ODAuLjJiZGM1NTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvYWJpX3ZlcnNpb24uY29uZgpAQCAtNSwzICs1LDExIEBACiAjIHdpdGggZ2VuZXJhbCBhZ3JlZW1lbnQgZnJvbSB0aGUgY29yZSB0ZWFtLgogIwogT0VMQVlPVVRfQUJJID0gIjEyIgorCisjCisjIEhBU0hFUVVJVl9IQVNIX1ZFUlNJT04gaXMgaW5qZWN0ZWQgaW50byB0aGUgb3V0cHV0IGhhc2ggY2FsY3VsYXRpb24gdXNlZCBieQorIyBoYXNoZXF1aXYuIENoYW5naW5nIHRoaXMgbWVhbnMgcHJldmlvdXMgaGFzaGVzIHdpbGwgbm8gbG9uZ2VyIG1hdGNoLCBhbGxvd2luZworIyBhIHJlc2V0IG9mIHRoZSBlcXVpdmFsZW5jZSwgZm9yIGV4YW1wbGUgd2hlbiByZXByb2R1Y2liaWxpdHkgaXNzdWVzIGJyZWFrIHRoZQorIyBleGlzdGluZyBtYXRjaCBkYXRhLiBEaXN0cm9zIGNhbiBhbHNvIGFwcGVuZCB0byB0aGlzIHZhbHVlIGZvciB0aGUgc2FtZSBlZmZlY3QuCisjCitIQVNIRVFVSVZfSEFTSF9WRVJTSU9OICA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IDI2M2Q4YWUuLjRiNTQ0YTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTExLDYgKzExLDcgQEAKIGJhc2VsaWJbdmFyZGVwdmFsdWVdID0gIiR7YmFzZWxpYn0iCiBCQVNFTElCID0gImxpYiIKIEJBU0VMSUJfcG93ZXJwYzY0ID0gImxpYjY0IgorQkFTRUxJQl9wb3dlcnBjNjRsZSA9ICJsaWI2NCIKIAogIyBQYXRoIHByZWZpeGVzCiBleHBvcnQgYmFzZV9wcmVmaXggPSAiIgpAQCAtMTI5LDcgKzEzMCw3IEBACiBUQVJHRVRfQVJDSCA9ICIke1RVTkVfQVJDSH0iCiBUQVJHRVRfT1MgPSAibGludXgke0xJQkNFWFRFTlNJT059JHtBQklFWFRFTlNJT059IgogVEFSR0VUX1ZFTkRPUiA9ICItb2UiCi1UQVJHRVRfU1lTID0gIiR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfSR7QFsnLScgKyBkLmdldFZhcignVEFSR0VUX09TJyksICcnXVtkLmdldFZhcignVEFSR0VUX09TJykgPT0gKCcnIG9yICdjdXN0b20nKV19IgorVEFSR0VUX1NZUyA9ICIke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9IgogVEFSR0VUX1BSRUZJWCA9ICIke1RBUkdFVF9TWVN9LSIKIFRBUkdFVF9DQ19BUkNIID0gIiR7VFVORV9DQ0FSR1N9IgogVEFSR0VUX0xEX0FSQ0ggPSAiJHtUVU5FX0xEQVJHU30iCkBAIC0xMzgsNyArMTM5LDcgQEAKIFNES01BQ0hJTkUgPz89ICJ4ODZfNjQiCiBTREtfT1MgPSAiJHtCVUlMRF9PU30iCiBTREtfVkVORE9SID0gIi1vZXNkayIKLVNES19TWVMgPSAiJHtTREtfQVJDSH0ke1NES19WRU5ET1J9JHtAWyctJyArIGQuZ2V0VmFyKCdTREtfT1MnKSwgJyddW2QuZ2V0VmFyKCdTREtfT1MnKSA9PSAoJycgb3IgJ2N1c3RvbScpXX0iCitTREtfU1lTID0gIiR7U0RLX0FSQ0h9JHtTREtfVkVORE9SfS0ke1NES19PU30iCiBTREtfUFJFRklYID0gIiR7U0RLX1NZU30tIgogU0RLX0NDX0FSQ0ggPSAiJHtCVUlMRF9DQ19BUkNIfSIKIFNES1BLR1NVRkZJWCA9ICJuYXRpdmVzZGsiCkBAIC0zMjQsNyArMzI1LDcgQEAKIFNFQ1RJT05fJHtQTn0tc3RhdGljZGV2ID0gImRldmVsIgogUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKIAotRklMRVNfJHtQTn0tZGJnID0gIi91c3IvbGliL2RlYnVnIC91c3Ivc3JjL2RlYnVnIgorRklMRVNfJHtQTn0tZGJnID0gIi91c3IvbGliL2RlYnVnIC91c3IvbGliL2RlYnVnLXN0YXRpYyAvdXNyL3NyYy9kZWJ1ZyIKIFNFQ1RJT05fJHtQTn0tZGJnID0gImRldmVsIgogQUxMT1dfRU1QVFlfJHtQTn0tZGJnID0gIjEiCiAKQEAgLTQyOSw3ICs0MzAsOCBAQAogT0xERVNUX0tFUk5FTCA9ICIzLjIuMCIKIE9MREVTVF9LRVJORUxfYWFyY2g2NCA9ICIzLjE0IgogT0xERVNUX0tFUk5FTF9uaW9zMiA9ICIzLjE5IgotT0xERVNUX0tFUk5FTF9yaXNjdjMyID0gIjQuMTUiCitPTERFU1RfS0VSTkVMX3Bvd2VycGM2NGxlID0gIjMuMTAuMCIKK09MREVTVF9LRVJORUxfcmlzY3YzMiA9ICI1LjQiCiBPTERFU1RfS0VSTkVMX3Jpc2N2NjQgPSAiNC4xNSIKIAogIyBTREtfT0xERVNUX0tFUk5FTCBjYW4ndCBiZSBzZXQgdXNpbmcgb3ZlcnJpZGVzIHNpbmNlIHRoZXJlIGFyZQpAQCAtNDgxLDE0ICs0ODMsMTQgQEAKIEhPU1RUT09MU19ESVIgPSAiJHtUTVBESVJ9L2hvc3R0b29scyIKIAogIyBUb29scyBuZWVkZWQgdG8gcnVuIGJ1aWxkcyB3aXRoIE9FLUNvcmUKLSMgcHl0aG9uIGlzIHNwZWNpYWwgY2FzZWQgdG8gcG9pbnQgYXQgcHl0aG9uMgogSE9TVFRPT0xTICs9ICIgXAogICAgIFsgYXIgYXMgYXdrIGJhc2VuYW1lIGJhc2ggYnppcDIgY2F0IGNoZ3JwIGNobW9kIGNob3duIGNocnBhdGggY21wIGNvbW0gY3AgY3BpbyBcCiAgICAgY3BwIGN1dCBkYXRlIGRkIGRpZmYgZGlmZnN0YXQgZGlybmFtZSBkdSBlY2hvIGVncmVwIGVudiBleHBhbmQgZXhwciBmYWxzZSBcCiAgICAgZmdyZXAgZmlsZSBmaW5kIGZsb2NrIGcrKyBnYXdrIGdjYyBnZXRjb25mIGdldG9wdCBnaXQgZ3JlcCBndW56aXAgZ3ppcCBcCi0gICAgaGVhZCBob3N0bmFtZSBpY29udiBpZCBpbnN0YWxsIGxkIGxkZCBsbiBscyBtYWtlIG1ha2VpbmZvIG1kNXN1bSBta2RpciBta25vZCBcCi0gICAgbWt0ZW1wIG12IG5tIG9iamNvcHkgb2JqZHVtcCBvZCBwYXRjaCBwZXJsIHBvZDJtYW4gcHIgcHJpbnRmIHB3ZCBweXRob24yIFwKLSAgICBweXRob24yLjcgcHl0aG9uMyByYW5saWIgcmVhZGVsZiByZWFkbGluayByZWFscGF0aCBybSBybWRpciBycGNnZW4gc2VkIHNlcSBzaCBzaGEyNTZzdW0gXAorICAgIGhlYWQgaG9zdG5hbWUgaWNvbnYgaWQgaW5zdGFsbCBsZCBsZGQgbG4gbHMgbWFrZSBtZDVzdW0gbWtkaXIgbWtub2QgXAorICAgIG1rdGVtcCBtdiBubSBvYmpjb3B5IG9iamR1bXAgb2QgcGF0Y2ggcGVybCBwciBwcmludGYgcHdkIFwKKyAgICBweXRob24zIHJhbmxpYiByZWFkZWxmIHJlYWRsaW5rIHJlYWxwYXRoIHJtIHJtZGlyIHJwY2dlbiBzZWQgc2VxIHNoIFwKKyAgICBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBcCiAgICAgc2xlZXAgc29ydCBzcGxpdCBzdGF0IHN0cmluZ3Mgc3RyaXAgdGFpbCB0YXIgdGVlIHRlc3QgdG91Y2ggdHIgdHJ1ZSB1bmFtZSBcCiAgICAgdW5pcSB3YyB3Z2V0IHdoaWNoIHhhcmdzIFwKICIKQEAgLTU4Nyw4ICs1ODksNiBAQAogQlVJTERTREtfTERGTEFHUyA9ICItV2wsLU8xIgogCiBMSU5LRVJfSEFTSF9TVFlMRSA/Pz0gImdudSIKLSMgbWlwcyBkb2VzIG5vdCBzdXBwb3J0IEdOVSBoYXNoIHN0eWxlIHRoZXJlZm9yZSB3ZSBvdmVycmlkZQotTElOS0VSX0hBU0hfU1RZTEVfbWlwc2FyY2ggPSAic3lzdiIKIAogVEFSR0VUX0xJTktfSEFTSF9TVFlMRSA/PSAiJHtAWyctV2wsLS1oYXNoLXN0eWxlPWdudScsJyddW2QuZ2V0VmFyKCdMSU5LRVJfSEFTSF9TVFlMRScpICE9ICdnbnUnXX0iCiAKQEAgLTU5Niw2ICs1OTYsOCBAQAogCiBleHBvcnQgTERGTEFHUyA9ICIke1RBUkdFVF9MREZMQUdTfSIKIFRBUkdFVF9MREZMQUdTID0gIi1XbCwtTzEgJHtUQVJHRVRfTElOS19IQVNIX1NUWUxFfSAke0FTTkVFREVEfSIKKyMgbWlwcyBkb2VzIG5vdCBzdXBwb3J0IEdOVSBoYXNoIHN0eWxlIHRoZXJlZm9yZSB3ZSBvdmVycmlkZQorTElOS0VSX0hBU0hfU1RZTEVfbWlwc2FyY2hfbGliYy1tdXNsID0gInN5c3YiCiAKICMgUGFzcyBwYXJhbGxlbCBtYWtlIG9wdGlvbnMgdG8gdGhlIGNvbXBpbGUgdGFzawogRVhUUkFfT0VNQUtFX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgpAQCAtNzkzLDcgKzc5NSwxMCBAQAogUEFSQUxMRUxfTUFLRSA/PSAiLWogJHtAb2UudXRpbHMuY3B1X2NvdW50KCl9IgogCiAjIERlZmF1bHQgcGFyYWxsZWxpc20gYW5kIHJlc291cmNlIHVzYWdlIGZvciB4egotWFpfREVGQVVMVFMgPz0gIi0tbWVtbGltaXQ9NTAlIC0tdGhyZWFkcz0ke0BvZS51dGlscy5jcHVfY291bnQoKX0iCitYWl9NRU1MSU1JVCA/PSAiNTAlIgorWFpfVEhSRUFEUyA/PSAiJHtAb2UudXRpbHMuY3B1X2NvdW50KGF0X2xlYXN0PTIpfSIKK1haX0RFRkFVTFRTID89ICItLW1lbWxpbWl0PSR7WFpfTUVNTElNSVR9IC0tdGhyZWFkcz0ke1haX1RIUkVBRFN9IgorWFpfREVGQVVMVFNbdmFyZGVwc2V4Y2x1ZGVdICs9ICJYWl9NRU1MSU1JVCBYWl9USFJFQURTIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgTWFnaWMgQ29va2llIGZvciBTQU5JVFkgQ0hFQ0sKQEAgLTg4NSw3ICs4OTAsNyBAQAogICAgIGZpbGUtY2hlY2tzdW1zIHB5dGhvbiBmdW5jIHRhc2sgZXhwb3J0IHVuZXhwb3J0IG5vZXhlYyBub3N0YW1wIGRpcnMgY2xlYW5kaXJzIFwKICAgICBzc3RhdGUtbG9ja2ZpbGUtc2hhcmVkIHByZWZ1bmNzIHBvc3RmdW5jcyBleHBvcnRfZnVuYyBkZXB0YXNrIHJkZXB0YXNrIFwKICAgICByZWNyZGVwdGFzayBub2RlcHJyZWNzIHN0YW1wLWV4dHJhLWluZm8gc3N0YXRlLW91dHB1dGRpcnMgZmlsZW5hbWUgbGluZW5vIFwKLSAgICBwcm9ncmVzcyBtY2RlcGVuZHMiCisgICAgcHJvZ3Jlc3MgbWNkZXBlbmRzIG51bWJlcl90aHJlYWRzIgogCiBNTFBSRUZJWCA/Pz0gIiIKIE1VTFRJTElCX1ZBUklBTlRTID8/PSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKaW5kZXggMTBkODZjZi4uNDMzZDRiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCkBAIC0xMCw3ICsxMCw3IEBACiBMT0NBTEVfVVRGOF9JU19ERUZBVUxUID89ICIxIgogTE9DQUxFX1VURjhfSVNfREVGQVVMVF9jbGFzcy1uYXRpdmVzZGsgPSAiMCIKIAotRElTVFJPX0ZFQVRVUkVTX0RFRkFVTFQgPz0gImFjbCBhbHNhIGFyZ3AgYmx1ZXRvb3RoIGV4dDIgaXB2NCBpcHY2IGxhcmdlZmlsZSBwY21jaWEgdXNiZ2FkZ2V0IHVzYmhvc3Qgd2lmaSB4YXR0ciBuZnMgemVyb2NvbmYgcGNpIDNnIG5mYyB4MTEiCitESVNUUk9fRkVBVFVSRVNfREVGQVVMVCA/PSAiYWNsIGFsc2EgYXJncCBibHVldG9vdGggZXh0MiBpcHY0IGlwdjYgbGFyZ2VmaWxlIHBjbWNpYSB1c2JnYWRnZXQgdXNiaG9zdCB3aWZpIHhhdHRyIG5mcyB6ZXJvY29uZiBwY2kgM2cgbmZjIHgxMSB2ZmF0IgogRElTVFJPX0ZFQVRVUkVTID89ICIke0RJU1RST19GRUFUVVJFU19ERUZBVUxUfSIKIElNQUdFX0ZFQVRVUkVTID89ICIiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCmluZGV4IGUzMTQ2NDIuLjBlNGE5YTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwpAQCAtMTUsNyArMTUsOCBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWF0ayA9ICJGZWRvcmE9YXRrIE9wZW5TdVNFPWF0ayIKIERJU1RST19QTl9BTElBU19wbi1hdmFoaS11aSA9ICJVYnVudHU9YXZhaGktZGlzY292ZXIgRGViaWFuPWF2YWhpLWRpc2NvdmVyIgogRElTVFJPX1BOX0FMSUFTX3BuLWJhYmVsdHJhY2UgPSAiT1NQRFQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tYmphbSA9ICJPcGVuU3VTRT1ib29zdC1qYW0gRGViaW5hPWJqYW0iCitESVNUUk9fUE5fQUxJQVNfcG4tYmFiZWx0cmFjZTIgPSAiT1NQRFQiCitESVNUUk9fUE5fQUxJQVNfcG4tYmphbSA9ICJPcGVuU3VTRT1ib29zdC1qYW0gRGViaWFuPWJqYW0iCiBESVNUUk9fUE5fQUxJQVNfcG4tYmxrdG9vbCA9ICJEZWJpYW49YmxrdG9vbCBNYW5kcml2YT1ibGt0b29sIgogRElTVFJPX1BOX0FMSUFTX3BuLWJsdWV6NSA9ICJGZWRvcmE9Ymx1ZXogIE9wZW5zdXNlPWJsdWV6IgogRElTVFJPX1BOX0FMSUFTX3BuLWJvb3RjaGFydDIgPSAiRmVkb3JhPWJvb3RjaGFydDIgT3BlbnN1c2U9Ym9vdGNoYXJ0IgpAQCAtMTMwLDcgKzEzMSw3IEBACiBESVNUUk9fUE5fQUxJQVNfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLWluaXRzY3JpcHRzID0gIkZlZG9yYT1pbml0c2NyaXB0cyBNYW5kcmF2aWE9aW5pdHNjcmlwdHMiCitESVNUUk9fUE5fQUxJQVNfcG4taW5pdHNjcmlwdHMgPSAiRmVkb3JhPWluaXRzY3JpcHRzIE1hbmRyaXZhPWluaXRzY3JpcHRzIgogRElTVFJPX1BOX0FMSUFTX3BuLWlwcm91dGUyID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWpwZWcgPSAiT3BlblN1U0U9bGlianBlZyBVYnVudHU9bGlianBlZzYyIgogRElTVFJPX1BOX0FMSUFTX3BuLWtlcm5lbC1kZXZzcmMgPSAiRGViaWFuPWxpbnV4LWJhc2UgVWJ1bnR1PWxpbnV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCmluZGV4IGQ4NWU1YjYuLjE1MDhhZDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKQEAgLTM1LDYgKzM1LDggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtcGx1Z2lucyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1zdGF0ZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS10b29scyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS10b3BvbG9neS1jb25mID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXVjbS1jb25mID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzLXNjcmlwdHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwbWQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCkBAIC00Nyw5ICs0OSw5IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3BlbGwgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3NpbXAgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1hdGsgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0dHIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mLWFyY2hpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgpAQCAtNTcsNiArNTksNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpLXVpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYWJlbHRyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtZmlsZXMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLXBhc3N3ZCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKQEAgLTgyLDYgKzg1LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWNvbXBhcmUgPSAiUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtc3lzcm9vdHMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGRlciA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGR0b29scy10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3ggPSAiQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVzeWJveC1pbml0dGFiID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgpAQCAtOTEsOCArOTUsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tY2FudGFyZWxsLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNjYWNoZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jZHJ0b29scy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNocnBhdGggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1nc3QtMy4wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtMTAzLDcgKzEwNSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1nbm9tZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGUtdG9vbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGVraXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtYmFzZSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLW1pbmltYWwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgpAQCAtMTM0LDcgKzEzNSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtdGVzdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VwcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS1jaGVjay10b29sID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3ZlLXVwZGF0ZS1kYi1uYXRpdmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jd2F1dG9tYWNyb3MgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYiA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgpAQCAtMTQ3LDYgKzE0Nyw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZm9zY29wZSA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZnN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZ1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGlzdGNjID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCkBAIC0xNjcsNyArMTY4LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWJvb3RtZ3IgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbGZ1dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZWxsID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNoYW50ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jaGFudDIgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNvZGluZ3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ldGh0b29sID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgpAQCAtMTgyLDcgKzE4Myw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LWFsaWFzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udGNvbmZpZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvb21hdGljLWZpbHRlcnMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvcm1mYWN0b3IgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmVldHlwZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyaWJpZGkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCkBAIC0xOTEsMTQgKzE5MSwxMCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLWNhbmFkaWFuLSR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zc3Nkay0ke1NES19TWVN9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3Nzc2RrLWluaXRpYWwtJHtTREtfU1lTfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1ydW50aW1lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNhbml0aXplcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlLTguMy4wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNvdXJjZS05LjIuMCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjY21ha2VkZXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlLTkuMy4wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NvbmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY3IgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgpAQCAtMjIxLDcgKzIxNyw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGlkZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdtcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1jb25maWcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWVmaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251cGcgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKQEAgLTI1NywxMCArMjUyLDggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1weXRob24gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtdmFhcGkgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKzMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd6aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oYXJmYnV6eiA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhkcGFybSA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKQEAgLTI4NywxMCArMjgwLDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHRhYmxlcyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdXRpbHMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pc28tY29kZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXRzdG9vbCA9ICJBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWl3ID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianBlZy10dXJibyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tYyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tanNvbi1nbGliID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1qcXVlcnkgPSAiSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtiZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm5lbC1kZXZzcmMgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4iCkBAIC0zNDYsNyArMzQxLDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljYWwgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZDN0YWcgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4yID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaW5wdXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqaXR0ZXJlbnRyb3B5ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtMzU3LDcgKzM1MSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtb2R1bGUtYnVpbGQtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtb2R1bGVtZC12MSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0LXB5dGhvbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNsMiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKQEAgLTM5MywxNSArMzg2LDE4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtY3Jvc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidWNvbnRleHQgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bndpbmQgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyaS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYjEgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1Ym9vdGVudiA9ICJTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhLXV0aWxzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidm9yYmlzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ3ZWJwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYndwZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4MTEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4YXUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y2IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCkBAIC00OTYsNyArNDkyLDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pLXgtc2Vzc2lvbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmljb20gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRkaXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRzY2FsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rbGlicy1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbW1jLXV0aWxzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgpAQCAtNTMxLDggKzUyNiw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmluamEgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ucHRoID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MtbXlob3N0bmFtZSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9mb25vID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNiaSA9ICJBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+IgpAQCAtNTU3LDcgKzU1MCw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21hbmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ2xpdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ3ogPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpbmVudHJ5ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgpAQCAtNTgwLDIwICs1NzIsMTggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8tY2xpZW50LWNvbmYtc2F0byA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbiA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNldHVwdG9vbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtYXN5bmMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtY3l0aG9uID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRidXMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZG9jdXRpbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZXh0cmFzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWZpbGUtdXRpbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdGRiID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWluaXBhcnNlID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWxpYmFyY2hpdmUtYyA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWdpYyA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWtvID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5hdGl2ZSA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1ub3NlID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBiciA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgpAQCAtNjAxLDYgKzU5MSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Y2Fpcm8gPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnbWVudHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnb2JqZWN0ID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5cGFyc2luZyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zY29ucyA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNjb25zLW5hdGl2ZSA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNldHVwdG9vbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKQEAgLTY1Nyw3ICs2NDgsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzZnN1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lza2xvZ2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2xpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Byb2YgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCkBAIC02NzgsNyArNjY4LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGNwLXdyYXBwZXJzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRlc3RleHBvcnQtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpMmh0bWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mbyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGlmZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCkBAIC02ODcsNyArNjc2LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6Y29kZS1uYXRpdmUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10emRhdGEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtZnctdXRpbHMgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtdG9vbHMgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11ZGV2LWV4dHJhY29uZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuZnMzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtNzI0LDYgKzcxMiw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13aWMtdG9vbHMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13aXJlbGVzcy1yZWdkYiA9ICJBZHJpYW4gQnVuayA8YnVua0BrZXJuZWwub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdwYS1zdXBwbGljYW50ID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td3BlYmFja2VuZC1mZG8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teDExcGVyZiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgyNjQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14YXV0aCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3B0ZXN0LXBhY2thZ2VsaXN0cy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9wdGVzdC1wYWNrYWdlbGlzdHMuaW5jCmluZGV4IGJiNDcyNGMuLmMxM2ZmNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3B0ZXN0LXBhY2thZ2VsaXN0cy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvcHRlc3QtcGFja2FnZWxpc3RzLmluYwpAQCAtNDcsMzAgKzQ3LDM1IEBACiAgICAgcXVpbHQtcHRlc3QgXAogICAgIHNlZC1wdGVzdCBcCiAgICAgc2xhbmctcHRlc3QgXAorICAgIHdheWxhbmQtcHRlc3QgXAogICAgIHpsaWItcHRlc3QgXAogIgogCiAjUFRFU1RTX1BST0JMRU1TID0gIlwKICMgICAgcWVtdS1wdGVzdCBcICMgRG9lc24ndCBydW4gYW55IHRlc3RzPwogIyAgICBydWJ5LXB0ZXN0IFwgIyBUaW1lb3V0Ci0jICAgIG1kYWRtLXB0ZXN0IFwgIyBUaW1lb3V0CiAjICAgIGNsdXR0ZXItMS4wLXB0ZXN0IFwgIyBEb2Vzbid0IGJ1aWxkIGR1ZSB0byBkZXBlbmRzIG9uIGNvZ2wtMS4wCisjICAgIGx6NC1wdGVzdCBcICMgTmVlZHMgYSByZXdyaXRlCisjICAgIHJ0LXRlc3RzLXB0ZXN0IFwgIyBOZWVkcyB0byBiZSBjaGVja2VkIHdoZXRoZXIgaXQgcnVucyBhdCBhbGwKKyMgICAgYmFzaC1wdGVzdCBcICMgVGVzdCBvdXRjb21lcyBhcmUgbm9uLWRldGVybWluaXN0aWMgYnkgZGVzaWduCisjICAgIGlmdXBkb3duLXB0ZXN0IFwgIyBUZXN0ZWQgc2VwYXJhdGVseSBpbiBsaWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CisjICAgIG1kYWRtLXB0ZXN0IFwgIyBUZXN0cyByZWx5IG9uIG5vbi1kZXRlcm1pbmlzdGljIHNsZWVwKCkgYW1vdW50cwogIyIKIAogUFRFU1RTX1NMT1cgPSAiXAotICAgIGJhc2gtcHRlc3QgXAorICAgIGJhYmVsdHJhY2UtcHRlc3QgXAorICAgIGJhYmVsdHJhY2UyLXB0ZXN0IFwKICAgICBidXN5Ym94LXB0ZXN0IFwKKyAgICBjb3JldXRpbHMtcHRlc3QgXAogICAgIGRidXMtdGVzdC1wdGVzdCBcCiAgICAgZTJmc3Byb2dzLXB0ZXN0IFwKICAgICBnbGliLTIuMC1wdGVzdCBcCiAgICAgZ3N0cmVhbWVyMS4wLXB0ZXN0IFwKICAgICBsaWJldmVudC1wdGVzdCBcCiAgICAgbHR0bmctdG9vbHMtcHRlc3QgXAotICAgIG1kYWRtLXB0ZXN0IFwKICAgICBvcGVuc3NoLXB0ZXN0IFwKICAgICBvcGVuc3NsLXB0ZXN0IFwKICAgICBwZXJsLXB0ZXN0IFwKLSAgICBweXRob24tcHRlc3QgXAogICAgIHB5dGhvbjMtcHRlc3QgXAogICAgIHN0cmFjZS1wdGVzdCBcCiAgICAgdGNsLXB0ZXN0IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwppbmRleCBhYWYwNGU5Li41NjhkMDM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCkBAIC01Nyw2ICs1Nyw4IEBACiAKIFRBUkdFVF9DQ19BUkNIX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSIKIFRBUkdFVF9MREZMQUdTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfTERGTEFHU30iCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfY2xhc3MtY3Jvc3MtY2FuYWRpYW4gPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSIKK1RBUkdFVF9MREZMQUdTX2FwcGVuZF9jbGFzcy1jcm9zcy1jYW5hZGlhbiA9ICIgJHtTRUNVUklUWV9MREZMQUdTfSIKIAogU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdjYy1ydW50aW1lID0gIiIKIFNFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nbGliYyA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jCmluZGV4IGUwNGY4YzguLjMxZDEzMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jCkBAIC0yNyw3ICsyNyw3IEBACiBUQVJHRVRfT1MgPSAiZWxmIgogVEFSR0VUX09TX2FybSA9ICJlYWJpIgogCi1UT09MQ0hBSU5fSE9TVF9UQVNLID89ICJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKK1RPT0xDSEFJTl9IT1NUX1RBU0sgPz0gInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0ke01BQ0hJTkV9IG5hdGl2ZXNkay1xZW11IgogVE9PTENIQUlOX0hPU1RfVEFTS19BVFRFTVBUT05MWSA/PSAiIgogVE9PTENIQUlOX1RBUkdFVF9UQVNLID89ICJsaWJnY2MtZGV2IgogVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRV9yZW1vdmUgPSAidmlydHVhbC8ke01MUFJFRklYfWxpYmMgemxpYiBuY3Vyc2VzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW5ld2xpYi5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYwppbmRleCA4OTZjMGIxLi5iZjg5YjExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYwpAQCAtMjUsMTIgKzI1LDExIEBACiAgICAgbGliZ2xvc3MtZGJnIFwKICAgICBsaWJnY2MtZGV2IFwKICAgICBsaWJnY2MtZGJnIFwKKyAgICBsaWJzdGRjKystZGV2IFwKKyAgICBsaWJzdGRjKystc3RhdGljZGV2IFwKICAgICAiCiAKLSMgY29tcGlsZXJsaWJzIGRlZmF1bHRzIHRvIGdjYy1ydW50aW1lLCBidXQgd2UgZ2V0IHJ1bnRpbWUgZnJvbSBsaWJnbG9zcwotIyB3ZSBzZXQgQVNTVU1FX1BST1ZJREVEIGJlY2F1c2Ugd2UgY2FudCBzZXQgUFJFRkVSUkVEX1BST1ZJREVSCi0jIGZvciBjb21waWxlcmxpYnMgc2luY2UgaXRzIG92ZXJyaWRkZW4gYnkgdGNtb2RlLWRlZmF1bHQKLUFTU1VNRV9QUk9WSURFRCArPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIHZpcnR1YWwvY3J5cHQiCitBU1NVTUVfUFJPVklERUQgKz0gInZpcnR1YWwvY3J5cHQiCiAKICMgSXRzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGV4dGVuZCBuZXdsaWIsIGJ1dCB3ZSBkb250IHByb3ZpZGUgYSBuYXRpdmUgdmFyaWFudCBvZiBsaWJnbG9zcwogTkVXTElCX0VYVEVOREVEID89ICAibGliZ2xvc3MgbGliZ2NjIgpAQCAtMzksNyArMzgsNyBAQAogVEFSR0VUX09TID0gImVsZiIKIFRBUkdFVF9PU19hcm0gPSAiZWFiaSIKIAotVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCitUT09MQ0hBSU5fSE9TVF9UQVNLID89ICJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSBuYXRpdmVzZGstcWVtdSIKIFRPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtMSUJDX0RFUEVOREVOQ0lFU30iCiBUT09MQ0hBSU5fTkVFRF9DT05GSUdTSVRFX0NBQ0hFX3JlbW92ZSA9ICJ6bGliIG5jdXJzZXMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwppbmRleCA0YTIzYzUwLi44NDliY2Y2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCkBAIC0xOCwxNSArMTgsMTUgQEAKIAogR0NDVkVSU0lPTiA/PSAiOS4lIgogU0RLR0NDVkVSU0lPTiA/PSAiJHtHQ0NWRVJTSU9OfSIKLUJJTlVWRVJTSU9OID89ICIyLjMyJSIKLUdEQlZFUlNJT04gPz0gIjguMyUiCi1HTElCQ1ZFUlNJT04gPz0gIjIuMzAlIgotTElOVVhMSUJDVkVSU0lPTiA/PSAiNS4yJSIKLVFFTVVWRVJTSU9OID89ICI0LjElIgotR09WRVJTSU9OID89ICIxLjEyJSIKK0JJTlVWRVJTSU9OID89ICIyLjM0JSIKK0dEQlZFUlNJT04gPz0gIjkuJSIKK0dMSUJDVkVSU0lPTiA/PSAiMi4zMSUiCitMSU5VWExJQkNWRVJTSU9OID89ICI1LjQlIgorUUVNVVZFUlNJT04gPz0gIjQuMiUiCitHT1ZFUlNJT04gPz0gIjEuMTQlIgogIyBUaGlzIGNhbiBub3QgdXNlIHdpbGRjYXJkcyBsaWtlIDguMC4lIHNpbmNlIGl0IGlzIGFsc28gdXNlZCBpbiBtZXNhIHRvIGRlbm90ZQogIyBsbHZtIHZlcnNpb24gYmVpbmcgdXNlZCwgc28gYWx3YXlzIGJ1bXAgaXQgd2l0aCBsbHZtIHJlY2lwZSB2ZXJzaW9uIGJ1bXAKLUxMVk1WRVJTSU9OID89ICI5LjAuMCIKK0xMVk1WRVJTSU9OID89ICI5LjAuMSIKIAogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjID89ICIke0dDQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID89ICIke0dDQ1ZFUlNJT059IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKaW5kZXggYWQ3NWQzZS4uODg5Njk1ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCkBAIC02LDkgKzYsOSBAQAogIyB0byB0aGUgZGlzdHJvIHJ1bm5pbmcgb24gdGhlIGJ1aWxkIG1hY2hpbmUuCiAjCiAKLVVOSU5BVElWRV9NQVhHTElCQ1ZFUlNJT04gPSAiMi4zMCIKK1VOSU5BVElWRV9NQVhHTElCQ1ZFUlNJT04gPSAiMi4zMSIKIAotVU5JTkFUSVZFX1VSTCA/PSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3VuaW5hdGl2ZS8yLjcvIgotVU5JTkFUSVZFX0NIRUNLU1VNW2FhcmNoNjRdID89ICJlNzZhNDU4ODZlZThhMGIzOTA0Yjc2MWMxN2FjOGZmOTFlZGY5ODExZWU0NTVmMTgzMmQxMDc2M2JhNzk0ZGZjIgotVU5JTkFUSVZFX0NIRUNLU1VNW2k2ODZdID89ICI4MTBkMDI3ZGZiMWM3Njc1MjI2YWZiY2VjMDc4MDg3NzA1MTZjOTY5ZWU3Mzc4ZjZkODI0MDI4MTA4M2Y4OTI0IgotVU5JTkFUSVZFX0NIRUNLU1VNW3g4Nl82NF0gPz0gIjk0OThkOGJiYTA0NzQ5OTk5OWE3MzEwYWMyNTc2ZDA3OTY0NjExODQ5NjUzNTFhNTZmNmQzMmM4ODhhMWYyMTYiCitVTklOQVRJVkVfVVJMID89ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvdW5pbmF0aXZlLzIuOC8iCitVTklOQVRJVkVfQ0hFQ0tTVU1bYWFyY2g2NF0gPz0gIjk4OTE4NzM0NGJmOTUzOWI0NjRmYjdlZDljMjIzZTUxZjRiZGI0YzdhNjc3ZDJjMzE0ZTZmZWQzOTMxNzZlZmUiCitVTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPz0gImNjM2U0NWJjODU5NDQ4OGI0MDczNjNlM2ZhOWFmNWEwOTkyNzlkYWIyNzAzYzY0MzQyMDk4NzE5YmQ2NzQ5OTAiCitVTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA/PSAiYTA5OTIyMTcyYzNhNDM5MTA1ZTBhZTZiOTQzZGFhZDJkODM1MDViMTdkYTBhYmE5Nzk2MWZmNDMzYjhjMjFhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZiBiL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgppbmRleCBmY2EzNmYzLi5jNjU0NGI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCkBAIC02OSw2ICs2OSw3IEBACiBBVVRIT1JbZG9jXSA9ICJFbWFpbCBhZGRyZXNzIHVzZWQgdG8gY29udGFjdCB0aGUgb3JpZ2luYWwgYXV0aG9yKHMpIGluIG9yZGVyIHRvIHNlbmQgcGF0Y2hlcyBhbmQgZm9yd2FyZCBidWdzLiIKIEFVVE9fU1lTTElOVVhNRU5VW2RvY10gPSAiRW5hYmxlcyBjcmVhdGluZyBhbiBhdXRvbWF0aWMgbWVudSBmb3IgdGhlIHN5c2xpbnV4IGJvb3Rsb2FkZXIuIgogQVVUT1JFVltkb2NdID0gIldoZW4gU1JDUkVWIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSwgaXQgc3BlY2lmaWVzIHRvIHVzZSB0aGUgbGF0ZXN0IHNvdXJjZSByZXZpc2lvbiBpbiB0aGUgcmVwb3NpdG9yeS4iCitBVkFJTEFCTEVfTElDRU5TRVNbZG9jXSA9ICJMaXN0IG9mIGxpY2Vuc2VzIGZvdW5kIGluIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgQ09NTU9OX0xJQ0VOU0VfRElSIGFuZCBMSUNFTlNFX1BBVEguIgogCiAjQgogCkBAIC0xMTcsNyArMTE4LDYgQEAKIENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTFtkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlzdCBvZiBwYWNrYWdlcyB0byBiZSBhZGRlZCB0byB0aGUgaW1hZ2UuIFlvdSBzaG91bGQgb25seSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUgY29uZi9sb2NhbC5jb25mIGZpbGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4iCiBDT1JFQkFTRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgT3BlbkVtYmVkZGVkIENvcmUgTWV0YWRhdGEgbGF5ZXIgKGkuZS4gbWV0YSkuIgogQ09ORl9WRVJTSU9OW2RvY10gPSAiVHJhY2tzIHRoZSB2ZXJzaW9uIG9mIGxvY2FsLmNvbmYuICBJbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvIGNoYW5nZXMgaW5jb21wYXRpYmx5LiIKLUNWU0RJUltkb2NdID0gIlRoZSBkaXJlY3Rvcnkgd2hlcmUgY3ZzIGNoZWNrb3V0cyB3aWxsIGJlIHN0b3JlZCBpbi4iCiAKICNECiAKQEAgLTE3Nyw3ICsxNzcsNiBAQAogCiAjRwogCi1HSVRESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIEdpdCBjbG9uZXMgd2lsbCBiZSBzdG9yZWQuIgogR1JPVVBBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBncm91cGFkZCBjb21tYW5kIGlmIHlvdSB3aXNoIHRvIGFkZCBhIGdyb3VwIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgogR1JPVVBNRU1TX1BBUkFNW2RvY10gPSAiV2hlbiBhIHJlY2lwZSBpbmhlcml0cyB0aGUgdXNlcmFkZCBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgZm9yIGEgcGFja2FnZSB3aGF0IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgZ3JvdXBtZW1zIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSBtZW1iZXJzIG9mIGEgZ3JvdXAgd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgogR1JVQl9HRlhTRVJJQUxbZG9jXSA9ICJDb25maWd1cmVzIHRoZSBHTlUgR1JhbmQgVW5pZmllZCBCb290bG9hZGVyIChHUlVCKSB0byBoYXZlIGdyYXBoaWNzIGFuZCBzZXJpYWwgaW4gdGhlIGJvb3QgbWVudS4iCkBAIC0zMDcsNyArMzA2LDYgQEAKIFBBQ0tBR0VfQ0xBU1NFU1tkb2NdID0gIlRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlIHdoZW4gcGFja2FnaW5nIGRhdGEuIEl0IGlzIHNldCBpbiB0aGUgY29uZi9sb2NhbC5jb25mIGZpbGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4iCiBQQUNLQUdFX0VYQ0xVREVbZG9jXSA9ICJQYWNrYWdlcyB0byBleGNsdWRlIGZyb20gdGhlIGluc3RhbGxhdGlvbi4gSWYgYSBsaXN0ZWQgcGFja2FnZSBpcyByZXF1aXJlZCwgYW4gZXJyb3IgaXMgZ2VuZXJhdGVkLiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgYXJjaGl0ZWN0dXJlcyBjb21wYXRpYmxlIHdpdGggdGhlIGRldmljZSBDUFUuIFRoaXMgdmFyaWFibGUgaXMgdXNlZnVsIHdoZW4geW91IGJ1aWxkIGZvciBzZXZlcmFsIGRpZmZlcmVudCBkZXZpY2VzIHRoYXQgdXNlIG1pc2NlbGxhbmVvdXMgcHJvY2Vzc29ycy4iCi1QQUNLQUdFX0dST1VQW2RvY10gPSAiRGVmaW5lcyBvbmUgb3IgbW9yZSBwYWNrYWdlcyB0byBpbmNsdWRlIGluIGFuIGltYWdlIHdoZW4gYSBzcGVjaWZpYyBpdGVtIGlzIGluY2x1ZGVkIGluIElNQUdFX0ZFQVRVUkVTLiIKIFBBQ0tBR0VfSU5TVEFMTFtkb2NdID0gIkxpc3Qgb2YgdGhlIHBhY2thZ2VzIHRvIGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4gVGhlIHZhcmlhYmxlIGlzIGdlbmVyYWxseSBub3QgdXNlci1kZWZpbmVkIGFuZCB1c2VzIElNQUdFX0lOU1RBTEwgYXMgcGFydCBvZiB0aGUgbGlzdC4iCiBQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFlbZG9jXSA9ICJMaXN0IG9mIHBhY2thZ2VzIGF0dGVtcHRlZCB0byBiZSBpbnN0YWxsZWQuIElmIGEgbGlzdGVkIHBhY2thZ2UgZmFpbHMgdG8gaW5zdGFsbCwgdGhlIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBnZW5lcmF0ZSBhbiBlcnJvci4gVGhpcyB2YXJpYWJsZSBpcyBnZW5lcmFsbHkgbm90IHVzZXItZGVmaW5lZC4iCiBQQUNLQUdFQ09ORklHW2RvY10gPSAiVGhpcyB2YXJpYWJsZSBwcm92aWRlcyBhIG1lYW5zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBmZWF0dXJlcyBvZiBhIHJlY2lwZSBvbiBhIHBlci1yZWNpcGUgYmFzaXMuIgpAQCAtMzkyLDcgKzM5MCw2IEBACiBTVEFNUFtkb2NdID0gIlNwZWNpZmllcyB0aGUgYmFzZSBwYXRoIHVzZWQgdG8gY3JlYXRlIHJlY2lwZSBzdGFtcCBmaWxlcy4gVGhlIHBhdGggdG8gYW4gYWN0dWFsIHN0YW1wIGZpbGUgaXMgY29uc3RydWN0ZWQgYnkgZXZhbHVhdGluZyB0aGlzIHN0cmluZyBhbmQgdGhlbiBhcHBlbmRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4iCiBTVEFNUFNfRElSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBiYXNlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwbGFjZXMgc3RhbXBzLiIKIFNVTU1BUllbZG9jXSA9ICJUaGUgc2hvcnQgKDgwIGNoYXJhY3RlcnMgb3IgbGVzcykgc3VtbWFyeSBvZiB0aGUgYmluYXJ5IHBhY2thZ2UgZm9yIHBhY2thZ2luZyBzeXN0ZW1zIHN1Y2ggYXMgb3BrZywgcnBtIG9yIGRwa2cuIEJ5IGRlZmF1bHQsIFNVTU1BUlkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIERFU0NSSVBUSU9OIHZhcmlhYmxlIGlmIERFU0NSSVBUSU9OIGlzIG5vdCBzZXQgaW4gdGhlIHJlY2lwZS4iCi1TVk5ESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIFN1YnZlcnNpb24gY2hlY2tvdXRzIHdpbGwgYmUgc3RvcmVkLiIKIFNZU0xJTlVYX0RFRkFVTFRfQ09OU09MRVtkb2NdID0gIlNwZWNpZmllcyB0aGUga2VybmVsIGJvb3QgZGVmYXVsdCBjb25zb2xlLiIKIFNZU0xJTlVYX09QVFNbZG9jXSA9ICJMaXN0cyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gYWRkIHRvIHRoZSBzeXNsaW51eCBmaWxlLiIKIFNZU0xJTlVYX1NFUklBTFtkb2NdID0gIlNwZWNpZmllcyB0aGUgYWx0ZXJuYXRlIHNlcmlhbCBwb3J0IG9yIHR1cm5zIGl0IG9mZi4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgppbmRleCBmY2RmOWFlLi5mMDNlYjQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKQEAgLTcsMTIgKzcsMTIgQEAKIEJCRklMRV9QQVRURVJOX2NvcmUgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9jb3JlID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPUkVOQU1FUyA9ICJ6ZXVzIgorTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gImR1bmZlbGwiCiAKICMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwogTEFZRVJWRVJTSU9OX2NvcmUgPSAiMTEiCi1MQVlFUlNFUklFU19DT01QQVRfY29yZSA9ICJ3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfY29yZSA9ICJkdW5mZWxsIgogCiBCQkxBWUVSU19MQVlFUklOREVYX05BTUVfY29yZSA9ICJvcGVuZW1iZWRkZWQtY29yZSIKIApAQCAtNDMsNiArNDMsOCBAQAogICBvcGtnLXV0aWxzIFwKICAgZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSBcCiAgIGNhLWNlcnRpZmljYXRlcyBcCisgIHNoYXJlZC1taW1lLWluZm8gXAorICBkZXNrdG9wLWZpbGUtdXRpbHMgXAogIgogCiBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZiBiL3Bva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYKaW5kZXggN2IwMWM1Ny4uNzUxNDI0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mCkBAIC0xLDQ4ICsxLDcgQEAKLSMgVGhlc2UgYXJlbid0IGFjdHVhbGx5IHVzZWQgYW55d2hlcmUgdGhhdCBJIGNhbiB0ZWxsCi0jIFRoZXkgbWF5IGJlIGluIHRoZSBmdXR1cmUgKG9yIGFyZSB1c2VkIGJ5IHNvbWVvbmUgZWxzZQotIyBGb3IgY29tcGxldGlvbiBzYWtlLCBJJ3ZlIHVwZGF0ZWQgdGhlbQotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkFBTCBBZG9iZSBBRkwtMS4yIEFGTC0yLjAgQUZMLTIuMSBBRkwtMy4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkFHUEwtMy4wIEFOVExSLVBEIEFwYWNoZS0xLjAgQXBhY2hlLTEuMSBBcGFjaGUtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkFQTC0xLjAgQVBTTC0xLjAgQVBTTC0xLjEgQVBTTC0xLjIgQVBTTC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQXJ0aXN0aWMtMS4wIEFydGlzdGljLTIuMCBCaXRzdHJlYW1WZXJhIEJTRCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJCU0QtMi1DbGF1c2UgQlNELTMtQ2xhdXNlIEJTRC00LUNsYXVzZSBCU0wtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNBVE9TTC0xLjEgQ0MwLTEuMCBDQy1CWS0xLjAgQ0MtQlktMi4wIENDLUJZLTIuNSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQy1CWS0zLjAgQ0MtQlktTkMtMS4wIENDLUJZLU5DLTIuMCBDQy1CWS1OQy0yLjUiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkMtMy4wIENDLUJZLU5DLU5ELTEuMCBDQy1CWS1OQy1ORC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkMtTkQtMi41IENDLUJZLU5DLU5ELTMuMCBDQy1CWS1OQy1TQS0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkMtU0EtMi4wIENDLUJZLU5DLVNBLTIuNSBDQy1CWS1OQy1TQS0zLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkQtMS4wIENDLUJZLU5ELTIuMCBDQy1CWS1ORC0yLjUgQ0MtQlktTkQtMy4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNDLUJZLVNBLTEuMCBDQy1CWS1TQS0yLjAgQ0MtQlktU0EtMi41IENDLUJZLVNBLTMuMCBDQy1CWS1TQS00LjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0RETC0xLjAgQ0VDSUxMLTEuMCBDRUNJTEwtMi4wIENFQ0lMTC1CIENFQ0lMTC1DIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNsQXJ0aXN0aWMgQ1BBTC0xLjAgQ1BMLTEuMCBDVUEtT1BMLTEuMCBEU1NTTCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJFQ0wtMS4wIEVDTC0yLjAgZUNvcy0yLjAgRURMLTEuMCBFRkwtMS4wIEVGTC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiRW50ZXNzYSBFUEwtMS4wIEVQTC0yLjAgRXJsUEwtMS4xIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkVVRGF0YWdyaWQgRVVQTC0xLjAgRVVQTC0xLjEgRmFpciBGcmFtZXdvcngtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkZyZWVUeXBlIEdGREwtMS4xIEdGREwtMS4yIEdGREwtMS4zIEdQTC0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTIuMCBHUEwtMi4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0yLjAtd2l0aC1jbGFzc3BhdGgtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0yLjAtd2l0aC1mb250LWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMi4wLXdpdGgtR0NDLWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMi13aXRoLWJpc29uLWV4Y2VwdGlvbiBHUEwtMy4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0zLjAtd2l0aC1hdXRvY29uZi1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiZ1NPQVAtMSBnU09BUC0xLjNiIEhQTkQgSVBBIElQTC0xLjAgSVNDIExHUEwtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkxHUEwtMi4xIExHUEwtMy4wIExpYnBuZyBMUEwtMS4wMiBMUFBMLTEuMCBMUFBMLTEuMSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJMUFBMLTEuMiBMUFBMLTEuM2MgTWlyT1MgTUlUIE1vdG9zb3RvIE1QTC0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiTVBMLTEuMSBNUy1QTCBNUy1STCBNdWx0aWNzIE5BU0EtMS4zIE5hdW1hbiBOQ1NBIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIk5HUEwgTm9raWEgTlBPU0wtMy4wIE5UUCBPQVNJUyBPQ0xDLTIuMCBPRGJMLTEuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJPRkwtMS4xIE9HVFNMIE9MREFQLTIuOCBPcGVuU1NMIE9TTC0xLjAgT1NMLTIuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJPU0wtMy4wIFBEIFBIUC0zLjAgUG9zdGdyZVNRTCBQcm9wcmlldGFyeSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJQeXRob24tMi4wIFFQTC0xLjAgUkhlQ29zLTEgUkhlQ29zLTEuMSBSUEwtMS41IgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIlJQU0wtMS4wIFJTQ1BMIFJ1YnkgU0FYLVBEIFNHSS0xIFNpbXBsZS0yLjAgU2xlZXB5Y2F0IgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIlNQTC0xLjAgU3VnYXJDUk0tMSBTdWdhckNSTS0xLjEuMyBVQ0IgVlNMLTEuMCBXM0MiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiV2F0Y29tLTEuMCBXWHdpbmRvd3MgWEZyZWU4Ni0xLjAgWEZyZWU4Ni0xLjEgWG5ldCBYU0wgWVBMLTEuMSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJaaW1icmEtMS4zIFpsaWIgWlBMLTEuMSBaUEwtMi4wIFpQTC0yLjEiCi0KICMgU3RhbmRhcmRzIGFyZSBncmVhdCEgRXZlcnlvbmUgaGFzIHRoZWlyIG93bi4gSW4gYW4gZWZmb3J0IHRvIHN0YW5kYXJkaXplIGxpY2Vuc2luZwogIyBuYW1lcywgY29tbW9uLWxpY2Vuc2VzIHdpbGwgdXNlIHRoZSBTUERYIHN0YW5kYXJkIGxpY2Vuc2UgbmFtZXMuIEluIG9yZGVyIHRvIG5vdAogIyBicmVhayB0aGUgbm9uLXN0YW5kYXJkaXplZCBsaWNlbnNlIG5hbWVzIHRoYXQgd2UgZmluZCBpbiBMSUNFTlNFLCB3ZSdsbCBzZXQKLSMgdXAgYSBidW5jaCBvZiBWYXJGbGFncyB0byBhY2NvbW9kYXRlIG5vbi1TUERYIGxpY2Vuc2UgbmFtZXMuCisjIHVwIGEgYnVuY2ggb2YgVmFyRmxhZ3MgdG8gYWNjb21tb2RhdGUgbm9uLVNQRFggbGljZW5zZSBuYW1lcy4KICMKICMgV2Ugc2hvdWxkIHJlYWxseSBkaXNjdXNzIHN0YW5kYXJkaXppbmcgdGhpcyBmaWVsZCwgYnV0IHRoYXQncyBhIGxvbmdlciB0ZXJtIGdvYWwuCiAjIEZvciBub3csIHdlIGNhbiBkbyB0aGlzIGFuZCBpdCBzaG91bGQgZ3JhYiB0aGUgbW9zdCBjb21tb24gTElDRU5TRSBuYW1pbmcgdmFyaWF0aW9ucy4KQEAgLTE4OCw1ICsxNDcsMyBAQAogRk9TU19TRVJWRVIgPSAiJHtGT1NTX0JBU0VfVVJMfSZmdWxsU1BEWEZsYWc9JHtGT1NTX0ZVTExfU1BEWH0mbm9Db3B5cmlnaHQ9JHtGT1NTX05PX0NPUFlSSUdIVH0mcmVjdXJzaXZlVW5wYWNrPSR7Rk9TU19SRUNVUlNJVkVfVU5QQUNLfSIKIAogRk9TU19XR0VUX0ZMQUdTID0gIi1xTyAtIC0tbm8tY2hlY2stY2VydGlmaWNhdGUgLS10aW1lb3V0PTAiCi0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMKaW5kZXggZWFiNzE3MS4uNGY1ODA3NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jCkBAIC00LDM1ICs0LDQxIEBACiBUVU5FVkFMSURbbWljcm9ibGF6ZV0gPSAiTWljcm9CbGF6ZSIKIE1BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm1pY3JvYmxhemUiLCAibWljcm9ibGF6ZToiLCAiIiwgZCl9IgogCisjIDY0LWJpdAorVFVORVZBTElEWzY0LWJpdF0gPSAiNjQtYml0IE1pY3JvQmxhemUiCitUVU5FQ09ORkxJQ1RTWzY0LWJpdF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiB2MTAuMCIKK01BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIjY0LWJpdCIsICJtaWNyb2JsYXplNjQ6IiwgIiIsIGQpfSIKKwogIyBFbmRpYW4KIFRVTkVWQUxJRFtiaWdlbmRpYW5dID0gIlVzZSBNaWNyb2JsYXplIEJpZyBFbmRpYW4iCi1UVU5FQ09ORkxJQ1RTW2JpZ2VuZGlhbl0gKz0gInYxMC4wIgorVFVORUNPTkZMSUNUU1tiaWdlbmRpYW5dID0gInYxMC4wIgogCiBNQlBLR0FSQ0hfRU5ESUFOID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICJlYiIsICJlbCIsIGQpfSIKIAotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICItbWJpZy1lbmRpYW4iLCAiLW1saXR0bGUtZW5kaWFuIiwgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICIgLW1iaWctZW5kaWFuIiwgIiAtbWxpdHRsZS1lbmRpYW4iLCBkKX0iCiAKICMgR2VuZXJhbCBmZWF0dXJlcwogVFVORVZBTElEW2JhcnJlbC1zaGlmdF0gPSAiRW5hYmxlIEhhcmR3YXJlIEJhcnJlbCBTaGlmdGVyIgogVFVORVZBTElEW3BhdHRlcm4tY29tcGFyZV0gPSAiRW5hYmxlIFBhdHRlcm4gQ29tcGFyZSBJbnN0cnVjdGlvbnMiCiBUVU5FVkFMSURbcmVvcmRlcl0gPSAiRW5hYmxlIFJlb3JkZXIgSW5zdHJ1Y3Rpb25zIgotVFVORUNPTkZMSUNUU1tyZW9yZGVyXSArPSAidjguMDAgdjguMTAgdjguMjAiCitUVU5FQ09ORkxJQ1RTW3Jlb3JkZXJdID0gInY4LjAwIHY4LjEwIHY4LjIwIgogCiAjIENvcmUgY29uZmlndXJhdGlvbiB0dW5lIG9wdGltaXphdGlvbnMKIFRVTkVWQUxJRFtmcmVxdWVuY3ktb3B0aW1pemVkXSA9ICJFbmFibGluZyB0dW5pbmcgZm9yIGZyZXF1ZW5jeSBvcHRpbWl6ZWQgY29yZSAoQVJFQV9PUFRJTUlaRURfMikiCi1UVU5FQ09ORkxJQ1RTW2ZyZXF1ZW5jeS1vcHRpbWl6ZWRdICs9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IgorVFVORUNPTkZMSUNUU1tmcmVxdWVuY3ktb3B0aW1pemVkXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IgogCiAjIEZlYXR1cmUgY29tcGlsZXIgYXJncwotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJhcnJlbC1zaGlmdCIsICItbXhsLWJhcnJlbC1zaGlmdCIsICItbW5vLXhsLWJhcnJlbC1zaGlmdCIsIGQpfSIKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwYXR0ZXJuLWNvbXBhcmUiLCAiLW14bC1wYXR0ZXJuLWNvbXBhcmUiLCAiLW1uby14bC1wYXR0ZXJuLWNvbXBhcmUiLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiZnJlcXVlbmN5LW9wdGltaXplZCIsICItbXhsLWZyZXF1ZW5jeSIsICIiLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmFycmVsLXNoaWZ0IiwgIiAtbXhsLWJhcnJlbC1zaGlmdCIsICIgLW1uby14bC1iYXJyZWwtc2hpZnQiLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgIiAtbXhsLXBhdHRlcm4tY29tcGFyZSIsICIgLW1uby14bC1wYXR0ZXJuLWNvbXBhcmUiLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiZnJlcXVlbmN5LW9wdGltaXplZCIsICIgLW14bC1mcmVxdWVuY3kiLCAiIiwgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIjY0LWJpdCIsICIgLW02NCIsICIiLCBkKX0iCiAKICMgRGlzYWJsZSByZW9yZGVyIGZvciB2OC4zMCBpZiBwYXR0ZXJuLWNvbXBhcmUgaXMgbm90IGVuYWJsZWQKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJyZW9yZGVyIiwgXAorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInJlb3JkZXIiLCBcCiAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInY4LjMwIiwgXAogICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgXAotICAgICAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCAiLW1uby14bC1yZW9yZGVyIiwgZCksIFwKLSAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCBkKSwgIi1tbm8teGwtcmVvcmRlciIsIGQpfSIKKyAgICAgICAgICAgICAgICAiIC1teGwtcmVvcmRlciIsICIgLW1uby14bC1yZW9yZGVyIiwgZCksIFwKKyAgICAgICAgICAgICIgLW14bC1yZW9yZGVyIiwgZCksICIgLW1uby14bC1yZW9yZGVyIiwgZCl9IgogCiAjIEZlYXR1cmUgcGFja2FnZSBhcmNoaXRlY3R1cmUgZm9ybWF0dGluZwogTUJQS0dBUkNIX1RVTkUgPSAiIgpAQCAtNDUsOSArNTEsMTIgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCiAKLSMgQXJjaGl0ZWN0dXJlIG5hbWUsIGVpdGhlciAnbWljcm9ibGF6ZWViJyBvciAnbWljcm9ibGF6ZWVsJyBkZXBlbmRpbmcgb24gZW5kaWFuZXNzCi1UVU5FX0FSQ0ggPSAibWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICJlYiIsICJlbCIsIGQpfSIKKyMgQXJjaGl0ZWN0dXJlIG5hbWUsIGVpdGhlciAnbWljcm9ibGF6ZScgb3IgJ21pY3JvYmxhemVlbCcgZGVwZW5kaW5nIG9uIGVuZGlhbmVzcworVFVORV9BUkNIID0gIm1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiIiwgImVsIiwgZCl9IgorCisjIEFkZCA2NC1iaXQgdG8gdGhlIFBLR0FSQ0ggaWYgZW5hYmxlZC4KK01CUEtHQVJDSF9TSVpFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIjY0LWJpdCIsICI2NCIsICIiLCBkKX0iCiAKICMgUGFja2FnZSBBcmNoaXRlY3R1cmUgZm9ybWF0dGluZwotVFVORV9QS0dBUkNIID0gIm1pY3JvYmxhemUke01CUEtHQVJDSF9FTkRJQU59JHtNQlBLR0FSQ0hfVkVSU0lPTn0ke01CUEtHQVJDSF9UVU5FfSR7TUJQS0dBUkNIX01BVEh9IgorVFVORV9QS0dBUkNIID0gIm1pY3JvYmxhemUke01CUEtHQVJDSF9TSVpFfSR7TUJQS0dBUkNIX0VORElBTn0ke01CUEtHQVJDSF9WRVJTSU9OfSR7TUJQS0dBUkNIX1RVTkV9JHtNQlBLR0FSQ0hfTUFUSH0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYwppbmRleCBhMzE1MTY2Li5jYmEwYWU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtbWF0aC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCkBAIC0xMywxNCArMTMsMTQgQEAKIFRVTkVDT05GTElDVFNbZnB1LWhhcmQtZXh0ZW5kZWRdID0gImZwdS1zb2Z0IgogCiAjIENvbXBpbGVyIGFyZ3MKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCBbJ211bHRpcGx5LWxvdycsICdtdWx0aXBseS1oaWdoJ10sICctbW5vLXhsLXNvZnQtbXVsJywgJy1teGwtc29mdC1tdWwnLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXVsdGlwbHktaGlnaCcsICctbXhsLW11bHRpcGx5LWhpZ2gnLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnbXVsdGlwbHktbG93JywgJ211bHRpcGx5LWhpZ2gnXSwgJyAtbW5vLXhsLXNvZnQtbXVsJywgJyAtbXhsLXNvZnQtbXVsJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ211bHRpcGx5LWhpZ2gnLCAnIC1teGwtbXVsdGlwbHktaGlnaCcsICcnLCBkKX0iCiAKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdkaXZpZGUtaGFyZCcsICctbW5vLXhsLXNvZnQtZGl2JywgJy1teGwtc29mdC1kaXYnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZGl2aWRlLWhhcmQnLCAnIC1tbm8teGwtc29mdC1kaXYnLCAnIC1teGwtc29mdC1kaXYnLCBkKX0iCiAKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtc29mdCcsICcnLCAnJywgZCl9IgotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnZnB1LWhhcmQnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnXSwgJy1taGFyZC1mbG9hdCcsICcnLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnLCAnLW14bC1mbG9hdC1jb252ZXJ0IC1teGwtZmxvYXQtc3FydCcsICcnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LXNvZnQnLCAnJywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCBbJ2ZwdS1oYXJkJywgJ2ZwdS1oYXJkLWV4dGVuZGVkJ10sICcgLW1oYXJkLWZsb2F0JywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZC1leHRlbmRlZCcsICcgLW14bC1mbG9hdC1jb252ZXJ0IC1teGwtZmxvYXQtc3FydCcsICcnLCBkKX0iCiAKICMgU2V0IHRhcmdldCBmcHUgKGJpdGJha2Uga25vd24gdGFyZ2V0KSB0byBzb2Z0IG9yIGhhcmQgKGJhc2ljIG9yIGV4dGVuZGVkKQogVEFSR0VUX0ZQVSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQgZnB1LWhhcmQtZXh0ZW5kZWQnLCAnZnB1LWhhcmQnLCAnZnB1LXNvZnQnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYwppbmRleCA5NTU2NzRmLi41YzM3ZjQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIFRVTkVWQUxJRFt2OS41XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNSIKIFRVTkVWQUxJRFt2OS42XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNiIKIFRVTkVWQUxJRFt2MTAuMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDEwLjAiCitUVU5FVkFMSURbdjExLjBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiAxMS4wIgogCiAjIFZlcnNpb24gY29uZmxpY3QgbWF0cml4CiBUVU5FQ09ORkxJQ1RTW3Y4LjAwXSA9ICIiCkBAIC02MCw4ICs2MSw5IEBACiBUVU5FQ09ORkxJQ1RTW3Y5LjVdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQiCiBUVU5FQ09ORkxJQ1RTW3Y5LjZdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSIKIFRVTkVDT05GTElDVFNbdjEwLjBdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCitUVU5FQ09ORkxJQ1RTW3YxMS4wXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IHYxMC4wIgogCiAjIFZlcnNpb24gZmxhZ3MKLVRVTkVfQ0NBUkdTICs9ICItbWNwdT0ke0BtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkLCBUcnVlKX0iCi1NQlBLR0FSQ0hfVkVSU0lPTiA9ICItJHtAbWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QCctbWNwdT0lcycgJSAobWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSkpIGlmIG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpICE9ICcnIGVsc2UgJyd9IgorTUJQS0dBUkNIX1ZFUlNJT04gPSAiJHtAJy0lcycgJSAobWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSkpIGlmIG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpICE9ICcnIGVsc2UgJyd9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYwppbmRleCA4YzBjOTQzLi5lZjE4ZTlhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMKQEAgLTE1LDcgKzE1LDggQEAKIAogVFVORVZBTElEW20zMl0gPSAiUG93ZXIgRUxGMzIgc3RhbmRhcmQgQUJJIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ20zMicsICcgLW0zMicsICcnLCBkKX0iCi1UVU5FX0FSQ0ggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ20zMicsICdwb3dlcnBjJywgJycsIGQpfSIKK1RVTkVfQVJDSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTMyJywgJ3Bvd2VycGMke0VORElBTl9TRlh9JywgJycsIGQpfSIKK0VORElBTl9TRlggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdsZScsIGQpfSIKIAogVFVORVZBTElEW2ZwdS1oYXJkXSA9ICJVc2UgaGFyZHdhcmUgRlBVLiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZCcsICcgLW1oYXJkLWZsb2F0JywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYwppbmRleCA0YmM1OTgzLi5jZjVjM2VmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCkBAIC01LDcgKzUsNyBAQAogVFVORVZBTElEW202NF0gPSAiUG93ZXIgRUxGNjQgc3RhbmRhcmQgQUJJIgogVFVORUNPTkZMSUNUU1ttNjRdID0gIm0zMiBuZiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtNjQnLCAnIC1tNjQnLCAnJywgZCl9IgotVFVORV9BUkNIIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsIFsgJ202NCcgXSwgJ3Bvd2VycGM2NCcsICcnLCBkKX0iCitUVU5FX0FSQ0ggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgWyAnbTY0JyBdLCAncG93ZXJwYzY0JHtFTkRJQU5fU0ZYfScsICcnLCBkKX0iCiAKICMgbXVzbCBvbmx5IHN1cHBvcnRzIGVsZnYyIEFCSSBmb3IgcHBjNjQKIFRVTkVfQ0NBUkdTIC49ICIke0BbJycsICcgLW1hYmk9ZWxmdjInXVsnbGliYy1tdXNsJyBpbiBkLmdldFZhcignT1ZFUlJJREVTJykuc3BsaXQoJzonKV19IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCmluZGV4IDUwNTBlNDEuLjhkZWRiMWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKQEAgLTksNyArOSw3IEBACiAgICAgICAgICAgICB4Zjg2LXZpZGVvLWZiZGV2IFwKICAgICAgICAgICAgICIKIAotTUFDSElORV9GRUFUVVJFUyA9ICJhbHNhIGJsdWV0b290aCB1c2JnYWRnZXQgc2NyZWVuIgorTUFDSElORV9GRUFUVVJFUyA9ICJhbHNhIGJsdWV0b290aCB1c2JnYWRnZXQgc2NyZWVuIHZmYXQiCiAKIE1BQ0hJTkVPVkVSUklERVMgPS4gInFlbXVhbGw6IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKaW5kZXggOTc4ODIwYS4uZjFmN2MyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwpAQCAtNSwzICs1LDYgQEAKIFFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQogUUJfT1BUX0FQUEVORCArPSAiLW9iamVjdCBybmctcmFuZG9tLGZpbGVuYW1lPS9kZXYvdXJhbmRvbSxpZD1ybmcwIC1kZXZpY2UgdmlydGlvLXJuZy1wY2kscm5nPXJuZzAiCisKKyMgRm9yIGdyYXBoaWNzIHRvIHdvcmsgd2UgbmVlZCB0byBkZWZpbmUgdGhlIFZHQSBkZXZpY2UgYXMgd2VsbCBhcyB0aGUgbmVjZXNzYXJ5IFVTQiBkZXZpY2VzCitRQl9PUFRfQVBQRU5EICs9ICItdmdhIHN0ZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKaW5kZXggNDk1NDE4Zi4uNWRjYzhiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKQEAgLTgsOSArOCw4IEBACiAKIFFCX0FVRElPX0RSViA9ICJhbHNhIgogUUJfQVVESU9fT1BUID0gIi1zb3VuZGh3IGFjOTcsZXMxMzcwIgotUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gInZnYT0wIHV2ZXNhZmIubW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSBvcHJvZmlsZS50aW1lcj0xIHV2ZXNhZmIudGFza190aW1lb3V0PS0xIgorUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gIm9wcm9maWxlLnRpbWVyPTEiCiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgogCi1VVkVTQV9NT0RFID89ICI2NDB4NDgwLTMyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L2FyY2gtcmlzY3YuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L2FyY2gtcmlzY3YuaW5jCmluZGV4IDE5ZjhmM2UuLmUzZGJlZjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9hcmNoLXJpc2N2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvYXJjaC1yaXNjdi5pbmMKQEAgLTQsNyArNCwxMyBAQAogCiBUVU5FX0FSQ0ggPSAiJHtUVU5FX0FSQ0hfdHVuZS0ke0RFRkFVTFRUVU5FfX0iCiBUVU5FX1BLR0FSQ0ggPSAiJHtUVU5FX1BLR0FSQ0hfdHVuZS0ke0RFRkFVTFRUVU5FfX0iCi1UVU5FX0NDQVJHUyAuPSAiIgorVFVORV9DQ0FSR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Jpc2N2NjRuZicsICcgLW1hYmk9bHA2NCcsICcgJywgZCl9IgorVFVORV9DQ0FSR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Jpc2N2MzJuZicsICcgLW1hYmk9aWxwMzInLCAnICcsIGQpfSIKIAogIyBRRU1VIHVzZXJtb2RlIGZhaWxzIHdpdGggaW52YWxpZCBpbnN0cnVjdGlvbiBlcnJvciAoRm9yIHJpc2N2MzIpCiBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Jpc2N2MzInLCAnIHFlbXUtdXNlcm1vZGUnLCAnJywgZCl9IgorCisjIEZpeDogbGQ6IHVucmVjb2duaXplZCBvcHRpb24gJy0taGFzaC1zdHlsZT1zeXN2JworTElOS0VSX0hBU0hfU1RZTEVfbGliYy1uZXdsaWIgPSAiIgorIyBGaXg6IGxkOiB1bnJlY29nbml6ZWQgb3B0aW9uICctLWhhc2gtc3R5bGU9Z251JworTElOS0VSX0hBU0hfU1RZTEVfbGliYy1iYXJlbWV0YWwgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jCmluZGV4IDI1ZDA0NjMuLjc0MWVlYjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvdHVuZS1yaXNjdi5pbmMKQEAgLTMsMTAgKzMsMTQgQEAKIFRVTkVWQUxJRFtyaXNjdjY0XSA9ICJFbmFibGUgNjQtYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIgogVFVORVZBTElEW3Jpc2N2MzJdID0gIkVuYWJsZSAzMi1iaXQgUklTQy1WIG9wdGltaXphdGlvbnMiCiAKK1RVTkVWQUxJRFtyaXNjdjY0bmZdID0gIkVuYWJsZSA2NC1iaXQgUklTQy1WIG9wdGltaXphdGlvbnMgbm8gZmxvYXRpbmcgcG9pbnQiCitUVU5FVkFMSURbcmlzY3YzMm5mXSA9ICJFbmFibGUgMzItYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIG5vIGZsb2F0aW5nIHBvaW50IgorCiBUVU5FVkFMSURbYmlnZW5kaWFuXSA9ICJCaWcgZW5kaWFuIG1vZGUiCiAKLUFWQUlMVFVORVMgKz0gInJpc2N2NjQgcmlzY3YzMiIKK0FWQUlMVFVORVMgKz0gInJpc2N2NjQgcmlzY3YzMiByaXNjdjY0bmYgcmlzY3YzMm5mIgogCisjIERlZmF1bHQKIFRVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCiBUVU5FX0FSQ0hfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCkBAIC0xNywzICsyMSwxMyBAQAogVFVORV9QS0dBUkNIX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXJpc2N2MzIgPSAicmlzY3YzMiIKIAorIyBObyBmbG9hdAorVFVORV9GRUFUVVJFU190dW5lLXJpc2N2NjRuZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjY0fSByaXNjdjY0bmYiCitUVU5FX0FSQ0hfdHVuZS1yaXNjdjY0bmYgPSAicmlzY3Y2NCIKK1RVTkVfUEtHQVJDSF90dW5lLXJpc2N2NjRuZiA9ICJyaXNjdjY0IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXJpc2N2NjRuZiA9ICJyaXNjdjY0bmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjMybmYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3YzMn0gcmlzY3YzMm5mIgorVFVORV9BUkNIX3R1bmUtcmlzY3YzMm5mID0gInJpc2N2MzIiCitUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjMybmYgPSAicmlzY3YzMiIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1yaXNjdjMybmYgPSAicmlzY3YzMm5mIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCmluZGV4IGIyNTk5NWQuLjE3M2NiNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKQEAgLTEwLDcgKzEwLDcgQEAKIEFSTVBLR0FSQ0hfdHVuZS1hcm0xMTM2amZzID0gImFybTExMzZqZnMiCiBBUk1QS0dBUkNIX3R1bmUtYXJtMTEzNmpmc2hmID0gImFybTExMzZqZnMiCiAjIG1jcHUgaXMgdXNlZCBzbyBkb24ndCB1c2UgYXJtdjYgYXMgd2UgZG9uJ3Qgd2FudCBtYXJjaAotVFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnMgPSAiYXJtIGFybTExMzZqZnMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmcyA9ICJhcm0gdmZwIGFybTExMzZqZnMiCiBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmc2hmID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnN9IGNhbGxjb252ZW50aW9uLWhhcmQiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTEzNmpmcyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12Nn0gYXJtMTEzNmpmcy12ZnAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTEzNmpmc2hmID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2aGZ9IGFybTExMzZqZnNoZi12ZnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMKaW5kZXggYzc0MWU4MC4uYTYzZDU4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTE3Nmp6LXMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYwpAQCAtOSw3ICs5LDcgQEAKIEFWQUlMVFVORVMgKz0gImFybTExNzZqenMiCiBBUk1QS0dBUkNIX3R1bmUtYXJtMTE3Nmp6cyA9ICJhcm0xMTc2anpzIgogVFVORV9GRUFUVVJFU190dW5lLWFybTExNzZqenMgPSAiYXJtIHRodW1iIGFybTExNzZqenMiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTE3Nmp6cyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NnRiLW5vdmZwfSBhcm0xMTc2anpzIGFybTExNzZqenN0IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybTExNzZqenMgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ0LW5vdmZwfSBhcm0xMTc2anpzIGFybTExNzZqenN0IgogCiBBVkFJTFRVTkVTICs9ICJhcm0xMTc2anpzLWJlIgogQVJNUEtHQVJDSF90dW5lLWFybTExNzZqenMtYmUgPSAiJHtBUk1QS0dBUkNIX3R1bmUtYXJtMTE3Nmp6c30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMDhiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYwpAQCAtMCwwICsxLDIzIEBACitERUZBVUxUVFVORSA/PSAiY29ydGV4YTcyLWNvcnRleGE1MyIKKworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OGEuaW5jCisKK1RVTkVWQUxJRFtjb3J0ZXhhNzItY29ydGV4YTUzXSA9ICJFbmFibGUgYmlnLkxJVFRMRSBDb3J0ZXgtQTcyLkNvcnRleC1BNTMgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCisKK1RVTkVDT05GTElDVFNbYWFyY2g2NF0gPSAiYXJtdjQgYXJtdjUgYXJtdjYgYXJtdjcgYXJtdjdhIgorCitNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNzItY29ydGV4YTUzIiwgImNvcnRleGE3Mi1jb3J0ZXhhNTM6IiwgIiIgLGQpfSIKKworVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcnRleGE3Mi1jb3J0ZXhhNTMiLCAiIC1tdHVuZT1jb3J0ZXgtYTcyLmNvcnRleC1hNTMiLCAiIiwgZCl9IgorCisjIGNvcnRleGE3Mi5jb3J0ZXhhNTMgaW1wbGllcyBjcmMgc3VwcG9ydAorQVZBSUxUVU5FUyArPSAiY29ydGV4YTcyLWNvcnRleGE1MyBjb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byIKK0FSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgICAgICAgICAgPSAiY29ydGV4YTcyLWNvcnRleGE1MyIKK0FSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgICAgICAgICAgPSAiY29ydGV4YTcyLWNvcnRleGE1MyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjhhLWNyY30gY29ydGV4YTcyLWNvcnRleGE1MyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE3Mi1jb3J0ZXhhNTMiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1MyAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmN9ICAgICAgICBjb3J0ZXhhNzItY29ydGV4YTUzIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OGEtY3JjLWNyeXB0b30gY29ydGV4YTcyLWNvcnRleGE1MyBjb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byIKK0JBU0VfTElCX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1MyAgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCitCQVNFX0xJQl90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvICAgICAgICAgICAgID0gImxpYjY0IgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjkuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWQ2ZThlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI5LmluYwpAQCAtMCwwICsxLDM1IEBACitERUZBVUxUVFVORSA/PSAicHBjNjRwOWxlIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCisKK1RVTkVWQUxJRFtwb3dlcjldID0gIkVuYWJsZSBJQk0gUG93ZXI5IHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyOScsICcgLW1jcHU9cG93ZXI5JywgJycsIGQpfSIKKworQVZBSUxUVU5FUyArPSAicHBjcDkgcHBjNjRwOSBwcGNwOWxlIHBwYzY0cDlsZSIKKworVFVORV9GRUFUVVJFU190dW5lLXBwY3A5ID0gIm0zMiBmcHUtaGFyZCBwb3dlcjkgYWx0aXZlYyBiaWdlbmRpYW4iCitCQVNFX0xJQl90dW5lLXBwY3A5ID0gImxpYiIKK1RVTkVfUEtHQVJDSF90dW5lLXBwY3A5ID0gInBwY3A5IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY3A5ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwY3A5IgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwOSA9ICJtNjQgZnB1LWhhcmQgcG93ZXI5IGFsdGl2ZWMgYmlnZW5kaWFuIgorQkFTRV9MSUJfdHVuZS1wcGM2NHA5ID0gImxpYjY0IgorVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRwOSA9ICJwcGM2NHA5IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzY0cDkgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0fSBwcGM2NHA5IgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjcDlsZSA9ICJtMzIgZnB1LWhhcmQgcG93ZXI5IGFsdGl2ZWMiCitCQVNFX0xJQl90dW5lLXBwY3A5bGUgPSAibGliIgorVFVORV9QS0dBUkNIX3R1bmUtcHBjcDlsZSA9ICJwcGNwOWxlIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY3A5bGUgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY2xlfSBwcGNwOWxlIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwOWxlID0gIm02NCBmcHUtaGFyZCBwb3dlcjkgYWx0aXZlYyIKK0JBU0VfTElCX3R1bmUtcHBjNjRwOWxlID0gImxpYjY0IgorVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRwOWxlID0gInBwYzY0cDlsZSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGM2NHA5bGUgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0bGV9IHBwYzY0cDlsZSIKKworIyBnbGliYyBjb25maWd1cmUgb3B0aW9ucyB0byBnZXQgcG93ZXI5IHNwZWNpZmljIGxpYnJhcnkKK0dMSUJDX0VYVFJBX09FQ09ORl9wb3dlcnBjNjQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyOScsICctLXdpdGgtY3B1PXBvd2VyOScsICcnLCBkKX0iCitHTElCQ19FWFRSQV9PRUNPTkZfcG93ZXJwYyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncG93ZXI5JywgJy0td2l0aC1jcHU9cG93ZXI5JywgJycsIGQpfSIKKworIyBRRU1VIHVzZXJtb2RlIGZhaWxzIHdpdGggaW52YWxpZCBpbnN0cnVjdGlvbiBlcnJvcgorTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwb3dlcjknLCAnIHFlbXUtdXNlcm1vZGUnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKaW5kZXggMDIyN2YzYy4uYTcyNzE0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCkBAIC04LDcgKzgsNyBAQAogTUFDSElORV9GRUFUVVJFUyArPSAic2NyZWVuIGtleWJvYXJkIHBjaSB1c2Job3N0IGV4dDIgZXh0MyB4ODYgXAogICAgICAgICAgICAgICAgICAgICAgYWNwaSBzZXJpYWwgdXNiZ2FkZ2V0IGFsc2EiCiAKLUlNQUdFX0ZTVFlQRVMgPz0gImhkZGltZyIKK0lNQUdFX0ZTVFlQRVMgPz0gIndpYyIKIAogS0VSTkVMX0lNQUdFVFlQRSA/PSAiYnpJbWFnZSIKIApAQCAtMTgsNyArMTgsNyBAQAogIyBrZXJuZWwtcmVsYXRlZCB2YXJpYWJsZXMKICMKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/Pz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjQlIgogCiAjCiAjIFhTRVJWRVIgc3ViY29tcG9uZW50cywgdXNlZCB0byBidWlsZCB0aGUgWFNFUlZFUiB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgppbmRleCAyNmY0MGIxLi4zNjdmY2VmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgpAQCAtMTEsNyArMTEsNyBAQAogCiAjIEZvciBydW5xZW11CiBRQl9TWVNURU1fTkFNRSA9ICJxZW11LXN5c3RlbS1hcm0iCi1RQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCitRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQsaGlnaG1lbT1vZmYiCiBRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTE1IgogIyBTdGFuZGFyZCBTZXJpYWwgY29uc29sZQogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mCmluZGV4IGVjMmE4ODcuLjFlMmQ0ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZgpAQCAtMTMsNyArMTMsNyBAQAogUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tYWFyY2g2NCIKIFFCX01BQ0hJTkUgPSAiLW1hY2hpbmUgdmlydCIKIFFCX0NQVSA9ICItY3B1IGNvcnRleC1hNTciCi1RQl9DUFVfS1ZNID0gIi1jcHUgaG9zdCIKK1FCX0NQVV9LVk0gPSAiLWNwdSBob3N0IC1tYWNoaW5lIGdpYy12ZXJzaW9uPTMiCiAjIFN0YW5kYXJkIFNlcmlhbCBjb25zb2xlCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHlBTUEwIgogIyBGb3IgZ3JhcGhpY3MgdG8gd29yayB3ZSBuZWVkIHRvIGRlZmluZSB0aGUgVkdBIGRldmljZSBhcyB3ZWxsIGFzIHRoZSBuZWNlc3NhcnkgVVNCIGRldmljZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mCmluZGV4IGZiNDc4OWYuLmU3ZjI0ZmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZgpAQCAtNCw3ICs0LDYgQEAKIAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTkyNmVqcy5pbmMKLSNyZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCiAKIEtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgogCkBAIC0xNyw3ICsxNiw3IEBACiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjQlIgogUUJfRFRCID0gIiR7QG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCgnUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8nLCAnNC43JywgJycsICd6SW1hZ2UtdmVyc2F0aWxlLXBiLmR0YicsIGQpfSIKIAogS01BQ0hJTkVfcWVtdWFybXY1ID0gInFlbXVhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVyaXNjdjY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVyaXNjdjY0LmNvbmYKaW5kZXggYjQ1ZmRkNS4uYTc1M2FmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cmlzY3Y2NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXJpc2N2NjQuY29uZgpAQCAtNCw2ICs0LDggQEAKIAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9xZW11cmlzY3YuaW5jCiAKK1hWSVNPUl9QTEFUID0gInJpc2N2L3ZpcnQ2NCIKKwogRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCiBVQk9PVF9NQUNISU5FID0gInFlbXUtcmlzY3Y2NF9zbW9kZV9kZWZjb25maWciCiBVQk9PVF9FTEYgPSAidS1ib290IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgppbmRleCA2NDhjZjJmLi5kYjkwMDRlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgpAQCAtMzcsMTAgKzM3LDYgQEAKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlLXNuZC1lbnMxMzcwIGtlcm5lbC1tb2R1bGUtc25kLXJhd21pZGkiCiAKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCi1LRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKLW1vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCi0KIFdLU19GSUxFID89ICJxZW11eDg2LWRpcmVjdGRpc2sud2tzIgogZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJzeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCmluZGV4IDhlMGRhODIuLjdlNjcyM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCkBAIC0zNCwxMCArMzQsNiBAQAogCiBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGUtc25kLWVuczEzNzAga2VybmVsLW1vZHVsZS1zbmQtcmF3bWlkaSIKIAotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidXZlc2FmYiIKLUtFUk5FTF9NT0RVTEVfUFJPQkVDT05GICs9ICJ1dmVzYWZiIgotbW9kdWxlX2NvbmZfdXZlc2FmYiA9ICJvcHRpb25zIHV2ZXNhZmIgbW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSIKLQogV0tTX0ZJTEUgPz0gInFlbXV4ODYtZGlyZWN0ZGlzay53a3MiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gInN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3Qgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgbXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYgYi9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mCmluZGV4IGNmZWQzZmIuLjU4ZjJhYzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZgpAQCAtOSw2ICs5LDcgQEAKIFNUQUdJTkdfRElSX0hPU1QgPSAiJHtXT1JLRElSfS8ke01MUFJFRklYfXJlY2lwZS1zeXNyb290IgogU1RBR0lOR19ESVJfVEFSR0VUID0gIiR7V09SS0RJUn0vJHtNTFBSRUZJWH1yZWNpcGUtc3lzcm9vdCIKIFJFQ0lQRV9TWVNST09UID0gIiR7V09SS0RJUn0vJHtNTFBSRUZJWH1yZWNpcGUtc3lzcm9vdCIKK1JFQ0lQRV9TWVNST09UX2NsYXNzLW5hdGl2ZSA9ICIke1dPUktESVJ9L3JlY2lwZS1zeXNyb290IgogCiBJTkhFUklUICs9ICJtdWx0aWxpYl9nbG9iYWwiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvYnppcDIgYi9wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL2J6aXAyLTEuMC42CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL2J6aXAyCnJlbmFtZSB0byBwb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL2J6aXAyLTEuMC42CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaCBiL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCmluZGV4IGNjYzRmNGUuLjA0NTI3ZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCisrKyBiL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCkBAIC0xLDEzICsxLDEzIEBACiAjIS9iaW4vc2gKIAotWyAteiAiJEVOVkNMRUFORUQiIF0gJiYgZXhlYyAvdXNyL2Jpbi9lbnYgLWkgRU5WQ0xFQU5FRD0xIEhPTUU9IiRIT01FIiBcCi0JTENfQUxMPWVuX1VTLlVURi04IFwKLQlURVJNPSRURVJNIFwKLQlJQ0VDQ19QQVRIPSIkSUNFQ0NfUEFUSCIgXAotCWh0dHBfcHJveHk9IiRodHRwX3Byb3h5IiBodHRwc19wcm94eT0iJGh0dHBzX3Byb3h5IiBmdHBfcHJveHk9IiRmdHBfcHJveHkiIFwKLQlub19wcm94eT0iJG5vX3Byb3h5IiBhbGxfcHJveHk9IiRhbGxfcHJveHkiIEdJVF9QUk9YWV9DT01NQU5EPSIkR0lUX1BST1hZX0NPTU1BTkQiICIkMCIgIiRAIgotWyAtZiAvZXRjL2Vudmlyb25tZW50IF0gJiYgLiAvZXRjL2Vudmlyb25tZW50Ci1leHBvcnQgUEFUSD1gZWNobyAiJFBBVEgiIHwgc2VkIC1lICdzLzpcLi8vJyAtZSAncy86Oi86LydgCitleHBvcnQgTENfQUxMPWVuX1VTLlVURi04CisjTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBweXRob24gaXMgaW5zdGFsbGVkCitJTklUX1BZVEhPTj0kKHdoaWNoIHB5dGhvbjMgMj4vZGV2L251bGwgKQorWyAteiAiJElOSVRfUFlUSE9OIiBdICYmIElOSVRfUFlUSE9OPSQod2hpY2ggcHl0aG9uMiAyPi9kZXYvbnVsbCkKK1sgLXogIiRJTklUX1BZVEhPTiIgXSAmJiBlY2hvICJFcnJvcjogVGhlIFNESyBuZWVkcyBhIHB5dGhvbiBpbnN0YWxsZWQiICYmIGV4aXQgMQorCisjIFJlbW92ZSBpbnZhbGlkIFBBVEggZWxlbWVudHMgZmlyc3QgKG1heWJlIGZyb20gYSBwcmV2aW91c2x5IHNldHVwIHRvb2xjaGFpbiBub3cgZGVsZXRlZAorUEFUSD1gJElOSVRfUFlUSE9OIC1jICdpbXBvcnQgb3M7IHByaW50KCI6Ii5qb2luKGUgZm9yIGUgaW4gb3MuZW52aXJvblsiUEFUSCJdLnNwbGl0KCI6IikgaWYgb3MucGF0aC5leGlzdHMoZSkpKSdgCiAKIHR3ZWFrcGF0aCAoKSB7CiAgICAgY2FzZSAiOiR7UEFUSH06IiBpbgpAQCAtMjQ5LDcgKzI0OSw3IEBACiAgICAgICAgIHJtIHNkay56aXAgJiYgZXhpdCAxCiAgICAgZmkKIGVsc2UKLSAgICB0YWlsIC1uICskcGF5bG9hZF9vZmZzZXQgJDB8ICRTVURPX0VYRUMgdGFyIHhKIC1DICR0YXJnZXRfc2RrX2RpciAtLWNoZWNrcG9pbnQ9LjI1MDAgJEVYVFJBX1RBUl9PUFRJT05TIHx8IGV4aXQgMQorICAgIHRhaWwgLW4gKyRwYXlsb2FkX29mZnNldCAkMHwgJFNVRE9fRVhFQyB0YXIgbXhKIC1DICR0YXJnZXRfc2RrX2RpciAtLWNoZWNrcG9pbnQ9LjI1MDAgJEVYVFJBX1RBUl9PUFRJT05TIHx8IGV4aXQgMQogZmkKIGVjaG8gImRvbmUiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkKaW5kZXggMjU2MmNlYS4uZGYwYTQ1OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkKQEAgLTE1LDEzICsxNSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IiA6ICAgICAgKDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImk2ODYiIDogICAgICAoMywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJlcGlwaGFueSI6ICAgKDQ2NDMsICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImxtMzIiOiAgICAgICAoMTM4LCAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzZWwiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTM0LDYgKzM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKDQwLCAgICA5NywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYzY0IjogICgyMSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjRsZSI6ICAoMjEsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpMzg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTU4LDcgKzU5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInNwYXJjIjogICAgICAoIDIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1tdXNsIiA6IHsgCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoICAyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAgKCAgMjEsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYzY0bGUiOiAgKDIxLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCkBAIC03OCw3ICs3OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CmluZGV4IGI4NTg1ZDQuLmRkNzAwY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKQEAgLTI4MywzNiArMjgzLDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNobGliX3Byb3ZpZGVyW3NbMF1dID0ge30KICAgICAgICAgICAgICAgICAgICAgc2hsaWJfcHJvdmlkZXJbc1swXV1bc1sxXV0gPSAoZGVwX3BrZywgc1syXSkKICAgICByZXR1cm4gc2hsaWJfcHJvdmlkZXIKLQotCi1kZWYgbnBtX3NwbGl0X3BhY2thZ2VfZGlycyhwa2dkaXIpOgotICAgICIiIgotICAgIFdvcmsgb3V0IHRoZSBwYWNrYWdlcyBmZXRjaGVkIGFuZCB1bnBhY2tlZCBieSBCaXRCYWtlJ3MgbnBtIGZldGNoZXIKLSAgICBSZXR1cm5zIGEgZGljdCBvZiBwYWNrYWdlbmFtZSAtPiAocmVscGF0aCwgcGFja2FnZS5qc29uKSBvcmRlcmVkCi0gICAgc3VjaCB0aGF0IGl0IGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gUEFDS0FHRVMgYW5kIEZJTEVTCi0gICAgIiIiCi0gICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKLSAgICBpbXBvcnQganNvbgotICAgIHBhY2thZ2VzID0ge30KLSAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhwa2dkaXIpOgotICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpID09ICdub2RlX21vZHVsZXMnOgotICAgICAgICAgICAgZm9yIGRuIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgcmVscHRoID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihyb290LCBkbiksIHBrZ2RpcikKLSAgICAgICAgICAgICAgICBwa2dpdGVtcyA9IFsnJHtQTn0nXQotICAgICAgICAgICAgICAgIGZvciBwYXRoaXRlbSBpbiByZWxwdGguc3BsaXQoJy8nKToKLSAgICAgICAgICAgICAgICAgICAgaWYgcGF0aGl0ZW0gPT0gJ25vZGVfbW9kdWxlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBwa2dpdGVtcy5hcHBlbmQocGF0aGl0ZW0pCi0gICAgICAgICAgICAgICAgcGtnbmFtZSA9ICctJy5qb2luKHBrZ2l0ZW1zKS5yZXBsYWNlKCdfJywgJy0nKQotICAgICAgICAgICAgICAgIHBrZ25hbWUgPSBwa2duYW1lLnJlcGxhY2UoJ0AnLCAnJykKLSAgICAgICAgICAgICAgICBwa2dmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGRuLCAncGFja2FnZS5qc29uJykKLSAgICAgICAgICAgICAgICBkYXRhID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBrZ2ZpbGUpOgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGtnZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMoZi5yZWFkKCkpCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzW3BrZ25hbWVdID0gKHJlbHB0aCwgZGF0YSkKLSAgICAjIFdlIHdhbnQgdGhlIG1haW4gcGFja2FnZSBmb3IgYSBtb2R1bGUgc29ydGVkICphZnRlciogaXRzIHN1YnBhY2thZ2VzCi0gICAgIyAoc28gdGhhdCBpdCBkb2Vzbid0IG90aGVyd2lzZSBzdGVhbCB0aGUgZmlsZXMgZm9yIHRoZSBzdWJwYWNrYWdlKSwgc28KLSAgICAjIHRoaXMgaXMgYSBjaGVhcCB3YXkgdG8gZG8gdGhhdCB3aGlsc3Qgc3RpbGwgaGF2aW5nIGFuIG90aGVyd2lzZQotICAgICMgYWxwaGFiZXRpY2FsIHNvcnQKLSAgICByZXR1cm4gT3JkZXJlZERpY3QoKGtleSwgcGFja2FnZXNba2V5XSkgZm9yIGtleSBpbiBzb3J0ZWQocGFja2FnZXMsIGtleT1sYW1iZGEgcGtnOiBwa2cgKyAnficpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQppbmRleCA0ZmYxOWNmLi5iMDY2MDQxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtNDAsOCArNDAsOSBAQAogICAgIHZlciA9ICIiCiAgICAgZmlsZW5hbWUgPSAiIgogICAgIGRlcCA9IFtdCisgICAgcHJvdiA9IFtdCiAgICAgcGtnYXJjaCA9ICIiCi0gICAgZm9yIGxpbmUgaW4gY21kX291dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgZm9yIGxpbmUgaW4gY21kX291dHB1dC5zcGxpdGxpbmVzKCkrWycnXToKICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKICAgICAgICAgaWYgJzonIGluIGxpbmU6CiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBhY2thZ2U6ICIpOgpAQCAtNjQsNiArNjUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZGVwLmFwcGVuZCgiJXMgW1JFQ10iICUgcmVjb21tZW5kKQogICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlBhY2thZ2VBcmNoOiAiKToKICAgICAgICAgICAgICAgICBwa2dhcmNoID0gbGluZS5zcGxpdCgiOiAiKVsxXQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlByb3ZpZGVzOiAiKToKKyAgICAgICAgICAgICAgICBwcm92aWRlcyA9IHZlcnJlZ2V4LnN1YignJywgbGluZS5zcGxpdCgiOiAiKVsxXSkKKyAgICAgICAgICAgICAgICBmb3IgcHJvdmlkZSBpbiBwcm92aWRlcy5zcGxpdCgiLCAiKToKKyAgICAgICAgICAgICAgICAgICAgcHJvdi5hcHBlbmQocHJvdmlkZSkKIAogICAgICAgICAjIFdoZW4gdGhlcmUgaXMgYSBibGFuayBsaW5lIHNhdmUgdGhlIHBhY2thZ2UgaW5mb3JtYXRpb24KICAgICAgICAgZWxpZiBub3QgbGluZToKQEAgLTcyLDIwICs3NywxNSBAQAogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIiVzXyVzXyVzLmlwayIgJSAocGtnLCB2ZXIsIGFyY2gpCiAgICAgICAgICAgICBpZiBwa2c6CiAgICAgICAgICAgICAgICAgb3V0cHV0W3BrZ10gPSB7ImFyY2giOmFyY2gsICJ2ZXIiOnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ZmlsZW5hbWUsICJkZXBzIjogZGVwLCAicGtnYXJjaCI6cGtnYXJjaCB9CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW5hbWUiOmZpbGVuYW1lLCAiZGVwcyI6IGRlcCwgInBrZ2FyY2giOnBrZ2FyY2gsICJwcm92cyI6IHByb3Z9CiAgICAgICAgICAgICBwa2cgPSAiIgogICAgICAgICAgICAgYXJjaCA9ICIiCiAgICAgICAgICAgICB2ZXIgPSAiIgogICAgICAgICAgICAgZmlsZW5hbWUgPSAiIgogICAgICAgICAgICAgZGVwID0gW10KKyAgICAgICAgICAgIHByb3YgPSBbXQogICAgICAgICAgICAgcGtnYXJjaCA9ICIiCiAKLSAgICBpZiBwa2c6Ci0gICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgIGZpbGVuYW1lID0gIiVzXyVzXyVzLmlwayIgJSAocGtnLCB2ZXIsIGFyY2gpCi0gICAgICAgIG91dHB1dFtwa2ddID0geyJhcmNoIjphcmNoLCAidmVyIjp2ZXIsCi0gICAgICAgICAgICAgICAgImZpbGVuYW1lIjpmaWxlbmFtZSwgImRlcHMiOiBkZXAgfQotCiAgICAgcmV0dXJuIG91dHB1dAogCiBkZWYgZmFpbGVkX3Bvc3RpbnN0c19hYm9ydChwa2dzLCBsb2dfcGF0aCk6CkBAIC0xMDcsNiArMTA3LDcgQEAKICAgICAgICAgInNoNCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKICAgICAgICAgInBvd2VycGMiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCiAgICAgICAgICJwb3dlcnBjNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJwb3dlcnBjNjRsZSI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKICAgICAgICAgIm1pcHMiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCiAgICAgICAgICJtaXBzaXNhMzJyNiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKICAgICAgICAgIm1pcHM2NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKQEAgLTEzMSw3ICsxMzIsNyBAQAogICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKICAgICBlbnZbIkxPQ0FMRUFSQ0hJVkUiXSA9IG9lLnBhdGguam9pbihsb2NhbGVkaXIsICJsb2NhbGUtYXJjaGl2ZSIpCiAKLSAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKGxvY2FsZWRpcik6CisgICAgZm9yIG5hbWUgaW4gc29ydGVkKG9zLmxpc3RkaXIobG9jYWxlZGlyKSk6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obG9jYWxlZGlyLCBuYW1lKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgogICAgICAgICAgICAgY21kID0gWyJjcm9zcy1sb2NhbGVkZWYiLCAiLS12ZXJib3NlIl0KQEAgLTM2MCw3ICszNjEsNyBAQAogICAgICAgICAgICAgICAgIi0tYWRtaW5kaXI9JXMvdmFyL2xpYi9kcGtnIiAlIHNlbGYucm9vdGZzX2RpciwKICAgICAgICAgICAgICAgICItVyJdCiAKLSAgICAgICAgY21kLmFwcGVuZCgiLWY9UGFja2FnZTogJHtQYWNrYWdlfVxuQXJjaGl0ZWN0dXJlOiAke1BhY2thZ2VBcmNofVxuVmVyc2lvbjogJHtWZXJzaW9ufVxuRmlsZTogJHtQYWNrYWdlfV8ke1ZlcnNpb259XyR7QXJjaGl0ZWN0dXJlfS5kZWJcbkRlcGVuZHM6ICR7RGVwZW5kc31cblJlY29tbWVuZHM6ICR7UmVjb21tZW5kc31cblxuIikKKyAgICAgICAgY21kLmFwcGVuZCgiLWY9UGFja2FnZTogJHtQYWNrYWdlfVxuQXJjaGl0ZWN0dXJlOiAke1BhY2thZ2VBcmNofVxuVmVyc2lvbjogJHtWZXJzaW9ufVxuRmlsZTogJHtQYWNrYWdlfV8ke1ZlcnNpb259XyR7QXJjaGl0ZWN0dXJlfS5kZWJcbkRlcGVuZHM6ICR7RGVwZW5kc31cblJlY29tbWVuZHM6ICR7UmVjb21tZW5kc31cblByb3ZpZGVzOiAke1Byb3ZpZGVzfVxuXG4iKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNtZF9vdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuc3RyaXAoKS5kZWNvZGUoInV0Zi04IikKQEAgLTU4MCw2ICs1ODEsMTEgQEAKICAgICAgICAgIyBvZS1wa2dkYXRhLXV0aWwgcmVhZHMgaXQgZnJvbSBhIGZpbGUKICAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0idysiLCBwcmVmaXg9Imluc3RhbGxlZC1wa2dzIikgYXMgaW5zdGFsbGVkX3BrZ3M6CiAgICAgICAgICAgICBwa2dzID0gc2VsZi5saXN0X2luc3RhbGxlZCgpCisKKyAgICAgICAgICAgIHByb3ZpZGVkX3BrZ3MgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHBrZyBpbiBwa2dzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHByb3ZpZGVkX3BrZ3MgfD0gc2V0KHBrZy5nZXQoJ3Byb3ZzJywgW10pKQorCiAgICAgICAgICAgICBvdXRwdXQgPSBvZS51dGlscy5mb3JtYXRfcGtnX2xpc3QocGtncywgImFyY2giKQogICAgICAgICAgICAgaW5zdGFsbGVkX3BrZ3Mud3JpdGUob3V0cHV0KQogICAgICAgICAgICAgaW5zdGFsbGVkX3BrZ3MuZmx1c2goKQpAQCAtNTkxLDEwICs1OTcsMTUgQEAKICAgICAgICAgICAgIGlmIGV4Y2x1ZGU6CiAgICAgICAgICAgICAgICAgY21kLmV4dGVuZChbJy0tZXhjbHVkZT0nICsgJ3wnLmpvaW4oZXhjbHVkZS5zcGxpdCgpKV0pCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYmIubm90ZSgiSW5zdGFsbGluZyBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIC4uLiIpCiAgICAgICAgICAgICAgICAgYmIubm90ZSgnUnVubmluZyAlcycgJSBjbWQpCiAgICAgICAgICAgICAgICAgY29tcGxlbWVudGFyeV9wa2dzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFsbChjb21wbGVtZW50YXJ5X3BrZ3Muc3BsaXQoKSwgYXR0ZW1wdF9vbmx5PVRydWUpCisgICAgICAgICAgICAgICAgY29tcGxlbWVudGFyeV9wa2dzID0gc2V0KGNvbXBsZW1lbnRhcnlfcGtncy5zcGxpdCgpKQorICAgICAgICAgICAgICAgIHNraXBfcGtncyA9IHNvcnRlZChjb21wbGVtZW50YXJ5X3BrZ3MgJiBwcm92aWRlZF9wa2dzKQorICAgICAgICAgICAgICAgIGluc3RhbGxfcGtncyA9IHNvcnRlZChjb21wbGVtZW50YXJ5X3BrZ3MgLSBwcm92aWRlZF9wa2dzKQorICAgICAgICAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgY29tcGxlbWVudGFyeSBwYWNrYWdlcyAuLi4gJXMgKHNraXBwZWQgYWxyZWFkeSBwcm92aWRlZCBwYWNrYWdlcyAlcykiICUgKAorICAgICAgICAgICAgICAgICAgICAnICcuam9pbihpbnN0YWxsX3BrZ3MpLAorICAgICAgICAgICAgICAgICAgICAnICcuam9pbihza2lwX3BrZ3MpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmluc3RhbGwoaW5zdGFsbF9wa2dzLCBhdHRlbXB0X29ubHk9VHJ1ZSkKICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJDb3VsZCBub3QgY29tcHV0ZSBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIGxpc3QuIENvbW1hbmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUKQEAgLTc2OCw2ICs3NzksOCBAQAogICAgICAgICAjIFRoaXMgcHJldmVudHMgYWNjaWRlbnRhbCBtYXRjaGluZyBhZ2FpbnN0IGxpYnNvbHYncyBidWlsdC1pbiBwb2xpY2llcwogICAgICAgICBpZiBsZW4oYXJjaHMpIDw9IDE6CiAgICAgICAgICAgICBhcmNocyA9IGFyY2hzICsgWyJib2d1c2FyY2giXQorICAgICAgICAjIFRoaXMgYXJjaGl0ZWN0dXJlIG5lZWRzIHRvIGJlIHVwZnJvbnQgc28gdGhhdCBwYWNrYWdlcyB1c2luZyBpdCBhcmUgcHJvcGVybHkgcHJpb3JpdGl6ZWQKKyAgICAgICAgYXJjaHMgPSBbInNka19wcm92aWRlc19kdW1teV90YXJnZXQiXSArIGFyY2hzCiAgICAgICAgIGNvbmZkaXIgPSAiJXMvJXMiICUoc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjL2RuZi92YXJzLyIpCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjb25mZGlyKQogICAgICAgICBvcGVuKGNvbmZkaXIgKyAiYXJjaCIsICd3Jykud3JpdGUoIjoiLmpvaW4oYXJjaHMpKQpAQCAtMTYyMSw3ICsxNjM0LDcgQEAKIAogICAgICAgICBvcy5lbnZpcm9uWydBUFRfQ09ORklHJ10gPSBzZWxmLmFwdF9jb25mX2ZpbGUKIAotICAgICAgICBjbWQgPSAiJXMgJXMgaW5zdGFsbCAtLWZvcmNlLXllcyAtLWFsbG93LXVuYXV0aGVudGljYXRlZCAlcyIgJSBcCisgICAgICAgIGNtZCA9ICIlcyAlcyBpbnN0YWxsIC0tZm9yY2UteWVzIC0tYWxsb3ctdW5hdXRoZW50aWNhdGVkIC0tbm8tcmVtb3ZlICVzIiAlIFwKICAgICAgICAgICAgICAgKHNlbGYuYXB0X2dldF9jbWQsIHNlbGYuYXB0X2FyZ3MsICcgJy5qb2luKHBrZ3MpKQogCiAgICAgICAgIHRyeToKQEAgLTE3ODMsOCArMTc5Niw3IEBACiAgICAgICAgICAgICBvcGVuKG9zLnBhdGguam9pbih0YXJnZXRfZHBrZ19kaXIsICJhdmFpbGFibGUiKSwgIncrIikuY2xvc2UoKQogCiAgICAgZGVmIHJlbW92ZV9wYWNrYWdpbmdfZGF0YShzZWxmKToKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignb3BrZ2xpYmRpcicpKSwgVHJ1ZSkKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYudGFyZ2V0X3Jvb3RmcyArIHNlbGYuZC5nZXRWYXIoJ29wa2dsaWJkaXInKSwgVHJ1ZSkKICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYudGFyZ2V0X3Jvb3RmcyArICIvdmFyL2xpYi9kcGtnLyIsIFRydWUpCiAKICAgICBkZWYgZml4X2Jyb2tlbl9kZXBlbmRlbmNpZXMoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2Vncm91cC5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5CmluZGV4IDI0MTljYmIuLjhmY2FlY2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5CkBAIC01LDE3ICs1LDExIEBACiBpbXBvcnQgaXRlcnRvb2xzCiAKIGRlZiBpc19vcHRpb25hbChmZWF0dXJlLCBkKToKLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCJGRUFUVVJFX1BBQ0tBR0VTXyVzIiAlIGZlYXR1cmUpCi0gICAgaWYgcGFja2FnZXM6Ci0gICAgICAgIHJldHVybiBib29sKGQuZ2V0VmFyRmxhZygiRkVBVFVSRV9QQUNLQUdFU18lcyIgJSBmZWF0dXJlLCAib3B0aW9uYWwiKSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gYm9vbChkLmdldFZhckZsYWcoIlBBQ0tBR0VfR1JPVVBfJXMiICUgZmVhdHVyZSwgIm9wdGlvbmFsIikpCisgICAgcmV0dXJuIGJvb2woZC5nZXRWYXJGbGFnKCJGRUFUVVJFX1BBQ0tBR0VTXyVzIiAlIGZlYXR1cmUsICJvcHRpb25hbCIpKQogCiBkZWYgcGFja2FnZXMoZmVhdHVyZXMsIGQpOgogICAgIGZvciBmZWF0dXJlIGluIGZlYXR1cmVzOgogICAgICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCJGRUFUVVJFX1BBQ0tBR0VTXyVzIiAlIGZlYXR1cmUpCi0gICAgICAgIGlmIG5vdCBwYWNrYWdlczoKLSAgICAgICAgICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoIlBBQ0tBR0VfR1JPVVBfJXMiICUgZmVhdHVyZSkKICAgICAgICAgZm9yIHBrZyBpbiAocGFja2FnZXMgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICAgICB5aWVsZCBwa2cKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CmluZGV4IGZhMjA5YjkuLjA4Mjk3MjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhdGgucHkKQEAgLTk5LDcgKzk5LDIyIEBACiAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpIGFuZCBub3QgbGVuKG9zLmxpc3RkaXIoc3JjKSk6CiAgICAgICAgIHJldHVybgogCi0gICAgaWYgKG9zLnN0YXQoc3JjKS5zdF9kZXYgPT0gIG9zLnN0YXQoZHN0KS5zdF9kZXYpOgorICAgIGNhbmhhcmQgPSBGYWxzZQorICAgIHRlc3RmaWxlID0gTm9uZQorICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyYyk6CisgICAgICAgIGlmIGxlbihmaWxlcyk6CisgICAgICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmaWxlc1swXSkKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICBpZiB0ZXN0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MubGluayh0ZXN0ZmlsZSwgb3MucGF0aC5qb2luKGRzdCwgJ3Rlc3RmaWxlJykpCisgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKGRzdCwgJ3Rlc3RmaWxlJykpCisgICAgICAgICAgICBjYW5oYXJkID0gVHJ1ZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiSGFyZGxpbmsgdGVzdCBmYWlsZWQgd2l0aCAiICsgc3RyKGUpKQorCisgICAgaWYgKGNhbmhhcmQpOgogICAgICAgICAjIE5lZWQgdG8gY29weSBkaXJlY3RvcmllcyBvbmx5IHdpdGggdGFyIGZpcnN0IHNpbmNlIGNwIHdpbGwgZXJyb3IgaWYgdHdvIAogICAgICAgICAjIHdyaXRlcnMgdHJ5IGFuZCBjcmVhdGUgYSBkaXJlY3RvcnkgYXQgdGhlIHNhbWUgdGltZQogICAgICAgICBjbWQgPSAiY2QgJXM7IGZpbmQgLiAtdHlwZSBkIC1wcmludCB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAtY2YgLSAtUyAtQyAlcyAtcCAtLW5vLXJlY3Vyc2lvbiAtLWZpbGVzLWZyb20gLSB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAteGhmIC0gLUMgJXMiICUgKHNyYywgc3JjLCBkc3QpCkBAIC0xMjEsMTIgKzEzNiw5IEBACiBkZWYgY29weWhhcmRsaW5rKHNyYywgZHN0KToKICAgICAiIiJNYWtlIGEgaGFyZCBsaW5rIHdoZW4gcG9zc2libGUsIG90aGVyd2lzZSBjb3B5LiIiIgogCi0gICAgIyBXZSBuZWVkIHRvIHN0YXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBhcyB0aGUgZGVzdGluYXRpb24gZmlsZSBwcm9iYWJseQotICAgICMgZG9lc24ndCBleGlzdCB5ZXQuCi0gICAgZHN0ZGlyID0gb3MucGF0aC5kaXJuYW1lKGRzdCkKLSAgICBpZiBvcy5zdGF0KHNyYykuc3RfZGV2ID09IG9zLnN0YXQoZHN0ZGlyKS5zdF9kZXY6CisgICAgdHJ5OgogICAgICAgICBvcy5saW5rKHNyYywgZHN0KQotICAgIGVsc2U6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQogCiBkZWYgcmVtb3ZlKHBhdGgsIHJlY3Vyc2U9VHJ1ZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3Byc2VydmljZS5weSBiL3Bva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5CmluZGV4IGIxMTMyY2MuLjJkM2M5YzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5CkBAIC0zLDYgKzMsMTAgQEAKICMKIAogZGVmIHByc2Vydl9tYWtlX2Nvbm4oZCwgY2hlY2sgPSBGYWxzZSk6CisgICAgIyBPdGhlcndpc2UgdGhpcyBmYWlscyB3aGVuIGNhbGxlZCBmcm9tIHJlY2lwZXMgd2hpY2ggZS5nLiBpbmhlcml0IHB5dGhvbjNuYXRpdmUgKHdoaWNoIHNldHMgX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUpIHdpdGg6CisgICAgIyBObyBtb2R1bGUgbmFtZWQgJ19zeXNjb25maWdkYXRhJworICAgIGlmICdfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgZGVsIG9zLmVudmlyb25bJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJ10KICAgICBpbXBvcnQgcHJzZXJ2LnNlcnYKICAgICBob3N0X3BhcmFtcyA9IGxpc3QoW19mIGZvciBfZiBpbiAoZC5nZXRWYXIoIlBSU0VSVl9IT1NUIikgb3IgJycpLnNwbGl0KCc6JykgaWYgX2ZdKQogICAgIHRyeToKQEAgLTc5LDQxICs4Myw0MCBAQAogICAgIGRmID0gZC5nZXRWYXIoJ1BSU0VSVl9EVU1QRklMRScpCiAgICAgI3dyaXRlIGRhdGEKICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKCIlcy5sb2NrIiAlIGRmKQotICAgIGYgPSBvcGVuKGRmLCAiYSIpCi0gICAgaWYgbWV0YWluZm86Ci0gICAgICAgICNkdW1wIGNvbHVtbiBpbmZvIAotICAgICAgICBmLndyaXRlKCIjUFJfY29yZV92ZXIgPSBcIiVzXCJcblxuIiAlIG1ldGFpbmZvWydjb3JlX3ZlciddKTsKLSAgICAgICAgZi53cml0ZSgiI1RhYmxlOiAlc1xuIiAlIG1ldGFpbmZvWyd0YmxfbmFtZSddKQotICAgICAgICBmLndyaXRlKCIjQ29sdW1uczpcbiIpCi0gICAgICAgIGYud3JpdGUoIiNuYW1lICAgICAgXHQgdHlwZSAgICBcdCBub3RuICAgIFx0IGRmbHQgICAgXHQgcGtcbiIpCi0gICAgICAgIGYud3JpdGUoIiMtLS0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLVxuIikKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKG1ldGFpbmZvWydjb2xfaW5mbyddKSk6Ci0gICAgICAgICAgICBmLndyaXRlKCIjJTEwc1x0ICU4c1x0ICU4c1x0ICU4c1x0ICU0c1xuIiAlIAotICAgICAgICAgICAgICAgICAgICAobWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ25hbWUnXSwgCi0gICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsndHlwZSddLCAKLSAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydub3RudWxsJ10sIAotICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ2RmbHRfdmFsdWUnXSwgCi0gICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsncGsnXSkpCi0gICAgICAgIGYud3JpdGUoIlxuIikKKyAgICB3aXRoIG9wZW4oZGYsICJhIikgYXMgZjoKKyAgICAgICAgaWYgbWV0YWluZm86CisgICAgICAgICAgICAjZHVtcCBjb2x1bW4gaW5mbworICAgICAgICAgICAgZi53cml0ZSgiI1BSX2NvcmVfdmVyID0gXCIlc1wiXG5cbiIgJSBtZXRhaW5mb1snY29yZV92ZXInXSk7CisgICAgICAgICAgICBmLndyaXRlKCIjVGFibGU6ICVzXG4iICUgbWV0YWluZm9bJ3RibF9uYW1lJ10pCisgICAgICAgICAgICBmLndyaXRlKCIjQ29sdW1uczpcbiIpCisgICAgICAgICAgICBmLndyaXRlKCIjbmFtZSAgICAgIFx0IHR5cGUgICAgXHQgbm90biAgICBcdCBkZmx0ICAgIFx0IHBrXG4iKQorICAgICAgICAgICAgZi53cml0ZSgiIy0tLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tXG4iKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKG1ldGFpbmZvWydjb2xfaW5mbyddKSk6CisgICAgICAgICAgICAgICAgZi53cml0ZSgiIyUxMHNcdCAlOHNcdCAlOHNcdCAlOHNcdCAlNHNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ3R5cGUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsnbm90bnVsbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydkZmx0X3ZhbHVlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ3BrJ10pKQorICAgICAgICAgICAgZi53cml0ZSgiXG4iKQogCi0gICAgaWYgbG9ja2Rvd246Ci0gICAgICAgIGYud3JpdGUoIlBSU0VSVl9MT0NLRE9XTiA9IFwiMVwiXG5cbiIpCisgICAgICAgIGlmIGxvY2tkb3duOgorICAgICAgICAgICAgZi53cml0ZSgiUFJTRVJWX0xPQ0tET1dOID0gXCIxXCJcblxuIikKIAotICAgIGlmIGRhdGFpbmZvOgotICAgICAgICBpZHggPSB7fQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oZGF0YWluZm8pKToKLSAgICAgICAgICAgIHBrZ2FyY2ggPSBkYXRhaW5mb1tpXVsncGtnYXJjaCddCi0gICAgICAgICAgICB2YWx1ZSA9IGRhdGFpbmZvW2ldWyd2YWx1ZSddCi0gICAgICAgICAgICBpZiBwa2dhcmNoIG5vdCBpbiBpZHg6Ci0gICAgICAgICAgICAgICAgaWR4W3BrZ2FyY2hdID0gaQotICAgICAgICAgICAgZWxpZiB2YWx1ZSA+IGRhdGFpbmZvW2lkeFtwa2dhcmNoXV1bJ3ZhbHVlJ106Ci0gICAgICAgICAgICAgICAgaWR4W3BrZ2FyY2hdID0gaQotICAgICAgICAgICAgZi53cml0ZSgiUFJBVVRPJCVzJCVzJCVzID0gXCIlc1wiXG4iICUgCi0gICAgICAgICAgICAgICAgKHN0cihkYXRhaW5mb1tpXVsndmVyc2lvbiddKSwgcGtnYXJjaCwgc3RyKGRhdGFpbmZvW2ldWydjaGVja3N1bSddKSwgc3RyKHZhbHVlKSkpCi0gICAgICAgIGlmIG5vdCBub21heDoKLSAgICAgICAgICAgIGZvciBpIGluIGlkeDoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCJQUkFVVE9fJXNfJXMgPSBcIiVzXCJcbiIgJSAoc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3ZlcnNpb24nXSksc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3BrZ2FyY2gnXSksc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3ZhbHVlJ10pKSkKLSAgICBmLmNsb3NlKCkKKyAgICAgICAgaWYgZGF0YWluZm86CisgICAgICAgICAgICBpZHggPSB7fQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGRhdGFpbmZvKSk6CisgICAgICAgICAgICAgICAgcGtnYXJjaCA9IGRhdGFpbmZvW2ldWydwa2dhcmNoJ10KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGRhdGFpbmZvW2ldWyd2YWx1ZSddCisgICAgICAgICAgICAgICAgaWYgcGtnYXJjaCBub3QgaW4gaWR4OgorICAgICAgICAgICAgICAgICAgICBpZHhbcGtnYXJjaF0gPSBpCisgICAgICAgICAgICAgICAgZWxpZiB2YWx1ZSA+IGRhdGFpbmZvW2lkeFtwa2dhcmNoXV1bJ3ZhbHVlJ106CisgICAgICAgICAgICAgICAgICAgIGlkeFtwa2dhcmNoXSA9IGkKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJQUkFVVE8kJXMkJXMkJXMgPSBcIiVzXCJcbiIgJQorICAgICAgICAgICAgICAgICAgICAoc3RyKGRhdGFpbmZvW2ldWyd2ZXJzaW9uJ10pLCBwa2dhcmNoLCBzdHIoZGF0YWluZm9baV1bJ2NoZWNrc3VtJ10pLCBzdHIodmFsdWUpKSkKKyAgICAgICAgICAgIGlmIG5vdCBub21heDoKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiBpZHg6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIlBSQVVUT18lc18lcyA9IFwiJXNcIlxuIiAlIChzdHIoZGF0YWluZm9baWR4W2ldXVsndmVyc2lvbiddKSxzdHIoZGF0YWluZm9baWR4W2ldXVsncGtnYXJjaCddKSxzdHIoZGF0YWluZm9baWR4W2ldXVsndmFsdWUnXSkpKQogICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKIGRlZiBwcnNlcnZfY2hlY2tfYXZhaWwoZCk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3FhLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9xYS5weQppbmRleCAyMTA2NmM0Li5lYTgzMWI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3FhLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcWEucHkKQEAgLTQxLDEzICs0MSwxNSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLm9iamR1bXBfb3V0cHV0ID0ge30KKyAgICAgICAgc2VsZi5kYXRhID0gTm9uZQogCiAgICAgIyBDb250ZXh0IE1hbmFnZXIgZnVuY3Rpb25zIHRvIGNsb3NlIHRoZSBtbWFwIGV4cGxpY2l0bHkKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6Ci0gICAgICAgIHNlbGYuZGF0YS5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuZGF0YToKKyAgICAgICAgICAgIHNlbGYuZGF0YS5jbG9zZSgpCiAKICAgICBkZWYgb3BlbihzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHNlbGYubmFtZSwgInJiIikgYXMgZjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkgYi9wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CmluZGV4IDYzMGFlOTYuLjczMjQyMGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQpAQCAtNDIxLDYgKzQyMSw4IEBACiAgICAgICAgICAgICAjIEVuc3VyZSB3ZSBoYW5kbGUgY2xhc3MtdGFyZ2V0IGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBvbmUgb2YgdGhlIHZhcmlhbnRzCiAgICAgICAgICAgICB2YXJpYW50cy5hcHBlbmQoJ3RhcmdldCcpCiAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiB2YXJpYW50czoKKyAgICAgICAgICAgICAgICBpZiB2YXJpYW50LnN0YXJ0c3dpdGgoImRldnVwc3RyZWFtIik6CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1NSQ1BWJywgJ2dpdCcpCiAgICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignQ0xBU1NPVkVSUklERScsICdjbGFzcy0lcycgJSB2YXJpYW50KQogICAgICAgICAgICAgICAgIGZldGNoX3VybHMobG9jYWxkYXRhKQogCkBAIC0xMDU5LDcgKzEwNjEsNiBAQAogICAgIGRhdGFfY29weV9saXN0ID0gW10KICAgICBjb3B5X3ZhcnMgPSAoJ1NSQ19VUkknLAogICAgICAgICAgICAgICAgICAnUFYnLAotICAgICAgICAgICAgICAgICAnR0lURElSJywKICAgICAgICAgICAgICAgICAgJ0RMX0RJUicsCiAgICAgICAgICAgICAgICAgICdQTicsCiAgICAgICAgICAgICAgICAgICdDQUNIRScsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weSBiL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CmluZGV4IGM2MmZhNWYuLmNkNjVlNjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CkBAIC0xMjYsMTcgKzEyNiwxNiBAQAogICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYuaW1hZ2Vfcm9vdGZzICsgb3MucGF0aC5kaXJuYW1lKGRpcikpCiAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnICsgZGlyLCBzZWxmLmltYWdlX3Jvb3RmcyArIGRpciwgc3ltbGlua3M9VHJ1ZSkKIAotICAgICAgICBjcGF0aCA9IG9lLmNhY2hlZHBhdGguQ2FjaGVkUGF0aCgpCiAgICAgICAgICMgQ29weSBmaWxlcyBsb2NhdGVkIGluIC91c3IvbGliL2RlYnVnIG9yIC91c3Ivc3JjL2RlYnVnCiAgICAgICAgIGZvciBkaXIgaW4gWyIvdXNyL2xpYi9kZWJ1ZyIsICIvdXNyL3NyYy9kZWJ1ZyJdOgogICAgICAgICAgICAgc3JjID0gc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnICsgZGlyCi0gICAgICAgICAgICBpZiBjcGF0aC5leGlzdHMoc3JjKToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNyYyk6CiAgICAgICAgICAgICAgICAgZHN0ID0gc2VsZi5pbWFnZV9yb290ZnMgKyBkaXIKICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRzdCkpCiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyYywgZHN0KQogCiAgICAgICAgICMgQ29weSBmaWxlcyB3aXRoIHN1ZmZpeCAnLmRlYnVnJyBvciBsb2NhdGVkIGluICcuZGVidWcnIGRpci4KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIGNwYXRoLndhbGsoc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnKToKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnKToKICAgICAgICAgICAgIHJlbGF0aXZlX2RpciA9IHJvb3RbbGVuKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyk6XQogICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgnLmRlYnVnJykgb3IgJy8uZGVidWcnIGluIHJlbGF0aXZlX2RpcjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKaW5kZXggYzU2NmNlNS4uZDI0ZTM3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKQEAgLTEwMyw2ICsxMDMsOCBAQAogICAgICAgICBzZWxmLnVubG9ja2VkcmVjaXBlcyA9IChkYXRhLmdldFZhcigiU0lHR0VOX1VOTE9DS0VEX1JFQ0lQRVMiKSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIikuc3BsaXQoKQogICAgICAgICBzZWxmLnVubG9ja2VkcmVjaXBlcyA9IHsgazogIiIgZm9yIGsgaW4gc2VsZi51bmxvY2tlZHJlY2lwZXMgfQorICAgICAgICBzZWxmLmJ1aWxkYXJjaCA9IGRhdGEuZ2V0VmFyKCdCVUlMRF9BUkNIJykKKyAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBGYWxzZQogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGFza3NfcmVzb2x2ZWQoc2VsZiwgdmlydG1hcCwgdmlydHBubWFwLCBkYXRhQ2FjaGUpOgpAQCAtMTQwLDggKzE0MiwyNyBAQAogICAgICAgICBzZWxmLmR1bXBfbG9ja2Vkc2lncyhzaWdmaWxlKQogICAgICAgICByZXR1cm4gc3VwZXIoYmIuc2lnZ2VuLlNpZ25hdHVyZUdlbmVyYXRvckJhc2ljSGFzaCwgc2VsZikuZHVtcF9zaWdzKGRhdGFDYWNoZSwgb3B0aW9ucykKIAorICAgIGRlZiBwcmVwX3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKKyAgICAgICAgc3VwZXIoKS5wcmVwX3Rhc2toYXNoKHRpZCwgZGVwcywgZGF0YUNhY2hlKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJleHRyYW1ldGhvZCIpOgorICAgICAgICAgICAgKF8sIF8sIF8sIGZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKHRpZCkKKyAgICAgICAgICAgIGluaGVyaXRzID0gIiAiLmpvaW4oZGF0YUNhY2hlLmluaGVyaXRzW2ZuXSkgICAgCisgICAgICAgICAgICBpZiBpbmhlcml0cy5maW5kKCIvbmF0aXZlLmJiY2xhc3MiKSAhPSAtMSBvciBpbmhlcml0cy5maW5kKCIvY3Jvc3MuYmJjbGFzcyIpICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFtZXRob2RbdGlkXSA9ICI6IiArIHNlbGYuYnVpbGRhcmNoCisKICAgICBkZWYgZ2V0X3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKLSAgICAgICAgaCA9IHN1cGVyKGJiLnNpZ2dlbi5TaWduYXR1cmVHZW5lcmF0b3JCYXNpY0hhc2gsIHNlbGYpLmdldF90YXNraGFzaCh0aWQsIGRlcHMsIGRhdGFDYWNoZSkKKyAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzOgorICAgICAgICAgICAgaWYgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2NrZWRoYXNoZXNbdGlkXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfdGFza2hhc2godGlkLCBkZXBzLCBkYXRhQ2FjaGUpCisKKyAgICAgICAgIyBnZXRfdGFza2hhc2ggd2lsbCBjYWxsIGdldF91bmloYXNoIGludGVybmFsbHkgaW4gdGhlIHBhcmVudCBjbGFzcywgd2UgCisgICAgICAgICMgbmVlZCB0byBkaXNhYmxlIG91ciBmaWx0ZXIgb2YgaXQgd2hpbHN0IHRoaXMgcnVucyBlbHNlCisgICAgICAgICMgaW5jb3JyZWN0IGhhc2hlcyBjYW4gYmUgY2FsY3VsYXRlZC4KKyAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBUcnVlCisgICAgICAgIGggPSBzdXBlcigpLmdldF90YXNraGFzaCh0aWQsIGRlcHMsIGRhdGFDYWNoZSkKKyAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBGYWxzZQogCiAgICAgICAgIChtYywgXywgdGFzaywgZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4odGlkKQogCkBAIC0xNjksOCArMTkwLDkgQEAKICAgICAgICAgICAgICAgICBoX2xvY2tlZCA9IHNlbGYubG9ja2Vkc2lnc1tyZWNpcGVuYW1lXVt0YXNrXVswXQogICAgICAgICAgICAgICAgIHZhciA9IHNlbGYubG9ja2Vkc2lnc1tyZWNpcGVuYW1lXVt0YXNrXVsxXQogICAgICAgICAgICAgICAgIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0gPSBoX2xvY2tlZAotICAgICAgICAgICAgICAgIHVuaWhhc2ggPSBzdXBlcigpLmdldF91bmloYXNoKHRpZCkKLSAgICAgICAgICAgICAgICBzZWxmLnRhc2toYXNoW3RpZF0gPSBoX2xvY2tlZAorICAgICAgICAgICAgICAgIHNlbGYuX2ludGVybmFsID0gVHJ1ZQorICAgICAgICAgICAgICAgIHVuaWhhc2ggPSBzZWxmLmdldF91bmloYXNoKHRpZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnRlcm5hbCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgI2JiLndhcm4oIlVzaW5nICVzICVzICVzIiAlIChyZWNpcGVuYW1lLCB0YXNrLCBoKSkKIAogICAgICAgICAgICAgICAgIGlmIGggIT0gaF9sb2NrZWQgYW5kIGhfbG9ja2VkICE9IHVuaWhhc2g6CkBAIC0xNzgsMTcgKzIwMCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocmVjaXBlbmFtZSwgdGFzaywgaCwgaF9sb2NrZWQsIHZhcikpCiAKICAgICAgICAgICAgICAgICByZXR1cm4gaF9sb2NrZWQKKworICAgICAgICBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdID0gRmFsc2UKICAgICAgICAgI2JiLndhcm4oIiVzICVzICVzIiAlIChyZWNpcGVuYW1lLCB0YXNrLCBoKSkKICAgICAgICAgcmV0dXJuIGgKIAorICAgIGRlZiBnZXRfc3RhbXBmaWxlX2hhc2goc2VsZiwgdGlkKToKKyAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzIGFuZCBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0KKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X3N0YW1wZmlsZV9oYXNoKHRpZCkKKwogICAgIGRlZiBnZXRfdW5paGFzaChzZWxmLCB0aWQpOgotICAgICAgICBpZiB0aWQgaW4gc2VsZi5sb2NrZWRoYXNoZXM6CisgICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlcyBhbmQgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXSBhbmQgbm90IHNlbGYuX2ludGVybmFsOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0KICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X3VuaWhhc2godGlkKQogCiAgICAgZGVmIGR1bXBfc2lndGFzayhzZWxmLCBmbiwgdGFzaywgc3RhbXBiYXNlLCBydW50aW1lKToKICAgICAgICAgdGlkID0gZm4gKyAiOiIgKyB0YXNrCi0gICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlczoKKyAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzIGFuZCBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHN1cGVyKGJiLnNpZ2dlbi5TaWduYXR1cmVHZW5lcmF0b3JCYXNpY0hhc2gsIHNlbGYpLmR1bXBfc2lndGFzayhmbiwgdGFzaywgc3RhbXBiYXNlLCBydW50aW1lKQogCkBAIC00NDgsMTEgKzQ3NywxNCBAQAogICAgIGggPSBoYXNobGliLnNoYTI1NigpCiAgICAgcHJldl9kaXIgPSBvcy5nZXRjd2QoKQogICAgIGluY2x1ZGVfb3duZXJzID0gb3MuZW52aXJvbi5nZXQoJ1BTRVVET19ESVNBQkxFRCcpID09ICcwJworICAgIGV4dHJhX2NvbnRlbnQgPSBkLmdldFZhcignSEFTSEVRVUlWX0hBU0hfVkVSU0lPTicpCiAKICAgICB0cnk6CiAgICAgICAgIG9zLmNoZGlyKHBhdGgpCiAKICAgICAgICAgdXBkYXRlX2hhc2goIk9FT3V0aGFzaEJhc2ljXG4iKQorICAgICAgICBpZiBleHRyYV9jb250ZW50OgorICAgICAgICAgICAgdXBkYXRlX2hhc2goZXh0cmFfY29udGVudCArICJcbiIpCiAKICAgICAgICAgIyBJdCBpcyBvbmx5IGN1cnJlbnRseSB1c2VmdWwgdG8gZ2V0IGVxdWl2YWxlbnQgaGFzaGVzIGZvciB0aGluZ3MgdGhhdAogICAgICAgICAjIGNhbiBiZSByZXN0b3JlZCBmcm9tIHNzdGF0ZS4gU2luY2UgdGhlIHNzdGF0ZSBvYmplY3QgaXMgbmFtZWQgdXNpbmcKQEAgLTUxMiw4ICs1NDQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYWRkX3Blcm0oc3RhdC5TX0lYT1RILCAneCcpCiAKICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlX293bmVyczoKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAlMTBzIiAlIHB3ZC5nZXRwd3VpZChzLnN0X3VpZCkucHdfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAlMTBzIiAlIGdycC5nZXRncmdpZChzLnN0X2dpZCkuZ3JfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAlMTBzIiAlIHB3ZC5nZXRwd3VpZChzLnN0X3VpZCkucHdfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9oYXNoKCIgJTEwcyIgJSBncnAuZ2V0Z3JnaWQocy5zdF9naWQpLmdyX25hbWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIktleUVycm9yIGluICVzIiAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAiKQogICAgICAgICAgICAgICAgIGlmIHN0YXQuU19JU0JMSyhzLnN0X21vZGUpIG9yIHN0YXQuU19JU0NIUihzLnN0X21vZGUpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weSBiL3Bva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKaW5kZXggNjUyYjJiZS4uMTNmNDI3MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAiIiIKICAgICByZXR1cm4gYmIudXRpbHMuY29udGFpbnNfYW55KCJESVNUUk9fRkVBVFVSRVMiLCBmZWF0dXJlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQogCi1kZWYgcGFyYWxsZWxfbWFrZShkKToKK2RlZiBwYXJhbGxlbF9tYWtlKGQsIG1ha2VpbnN0PUZhbHNlKToKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGludGVnZXIgdmFsdWUgZm9yIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgdGhyZWFkcyB0byB1c2Ugd2hlbgogICAgIGJ1aWxkaW5nLCBzY3JhcGVkIG91dCBvZiBQQVJBTExFTF9NQUtFLiBJZiBubyBwYXJhbGxlbGl6YXRpb24gb3B0aW9uIGlzCkBAIC0xNzcsNyArMTc3LDEwIEBACiAKICAgICBlLmcuIGlmIFBBUkFMTEVMX01BS0UgPSAiLWogMTAiLCB0aGlzIHdpbGwgcmV0dXJuIDEwIGFzIGFuIGludGVnZXIuCiAgICAgIiIiCi0gICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSBvciAnJykuc3BsaXQoKQorICAgIGlmIG1ha2VpbnN0OgorICAgICAgICBwbSA9IChkLmdldFZhcignUEFSQUxMRUxfTUFLRUlOU1QnKSBvciAnJykuc3BsaXQoKQorICAgIGVsc2U6CisgICAgICAgIHBtID0gKGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykgb3IgJycpLnNwbGl0KCkKICAgICAjIGxvb2sgZm9yICctaicgYW5kIHRocm93IG90aGVyIG9wdGlvbnMgKGUuZy4gJy1sJykgYXdheQogICAgIHdoaWxlIHBtOgogICAgICAgICBvcHQgPSBwbS5wb3AoMCkKQEAgLTE5Miw3ICsxOTUsNyBAQAogCiAgICAgcmV0dXJuIE5vbmUKIAotZGVmIHBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgZm10LCBsaW1pdD1Ob25lKToKK2RlZiBwYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsIGZtdCwgbGltaXQ9Tm9uZSwgbWFrZWluc3Q9RmFsc2UpOgogICAgICIiIgogICAgIEhlbHBlciB1dGlsaXR5IHRvIGNvbnN0cnVjdCBhIHBhcmFsbGVsIG1ha2UgYXJndW1lbnQgZnJvbSB0aGUgbnVtYmVyIG9mCiAgICAgcGFyYWxsZWwgdGhyZWFkcyBzcGVjaWZpZWQgaW4gUEFSQUxMRUxfTUFLRS4KQEAgLTIwNSw3ICsyMDgsNyBAQAogICAgIGUuZy4gaWYgUEFSQUxMRUxfTUFLRSA9ICItaiAxMCIsIHBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgIi1uICVkIikgd2lsbCByZXR1cm4KICAgICAiLW4gMTAiCiAgICAgIiIiCi0gICAgdiA9IHBhcmFsbGVsX21ha2UoZCkKKyAgICB2ID0gcGFyYWxsZWxfbWFrZShkLCBtYWtlaW5zdCkKICAgICBpZiB2OgogICAgICAgICBpZiBsaW1pdDoKICAgICAgICAgICAgIHYgPSBtaW4obGltaXQsIHYpCkBAIC0yNDUsOSArMjQ4LDEwIEBACiAgICAgdHJpbW1lZCA9ICIuIi5qb2luKHBhcnRzWzpudW1fcGFydHNdKQogICAgIHJldHVybiB0cmltbWVkCiAKLWRlZiBjcHVfY291bnQoKToKK2RlZiBjcHVfY291bnQoYXRfbGVhc3Q9MSk6CiAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKKyAgICBjcHVzID0gbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCisgICAgcmV0dXJuIG1heChjcHVzLCBhdF9sZWFzdCkKIAogZGVmIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhkLCBjbWRzKToKICAgICBpZiBjbWRzIGlzIE5vbmU6CkBAIC0zNjksNiArMzczLDM3IEBACiAKICAgICByZXR1cm4gb3V0cHV0X3N0cgogCisKKyMgSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgaG9zdCBjb21waWxlciB2ZXJzaW9uCisjIERvIG5vdCBhc3N1bWUgdGhlIGNvbXBpbGVyIGlzIGdjYworZGVmIGdldF9ob3N0X2NvbXBpbGVyX3ZlcnNpb24oZCwgdGFza2NvbnRleHRvbmx5PUZhbHNlKToKKyAgICBpbXBvcnQgcmUsIHN1YnByb2Nlc3MKKworICAgIGlmIHRhc2tjb250ZXh0b25seSBhbmQgZC5nZXRWYXIoJ0JCX1dPUktFUkNPTlRFWFQnKSAhPSAnMSc6CisgICAgICAgIHJldHVybgorCisgICAgY29tcGlsZXIgPSBkLmdldFZhcigiQlVJTERfQ0MiKQorICAgICMgR2V0IHJpZCBvZiBjY2FjaGUgc2luY2UgaXQgaXMgbm90IHByZXNlbnQgd2hlbiBwYXJzaW5nLgorICAgIGlmIGNvbXBpbGVyLnN0YXJ0c3dpdGgoJ2NjYWNoZSAnKToKKyAgICAgICAgY29tcGlsZXIgPSBjb21waWxlcls3Ol0KKyAgICB0cnk6CisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICMgZGF0YXN0b3JlIFBBVEggZG9lcyBub3QgY29udGFpbiBzZXNzaW9uIFBBVEggYXMgc2V0IGJ5IGVudmlyb25tZW50LXNldHVwLS4uLgorICAgICAgICAjIHRoaXMgYnJlYWtzIHRoZSBpbnN0YWxsLWJ1aWxkdG9vbHMgdXNlLWNhc2UKKyAgICAgICAgIyBlbnZbIlBBVEgiXSA9IGQuZ2V0VmFyKCJQQVRIIikKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIiVzIC0tdmVyc2lvbiIgJSBjb21waWxlciwgXAorICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCBlbnY9ZW52LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICBiYi5mYXRhbCgiRXJyb3IgcnVubmluZyAlcyAtLXZlcnNpb246ICVzIiAlIChjb21waWxlciwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKKworICAgIG1hdGNoID0gcmUubWF0Y2gociIuKiAoXGQrXC5cZCspXC5cZCsuKiIsIG91dHB1dC5zcGxpdCgnXG4nKVswXSkKKyAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgIGJiLmZhdGFsKCJDYW4ndCBnZXQgY29tcGlsZXIgdmVyc2lvbiBmcm9tICVzIC0tdmVyc2lvbiBvdXRwdXQiICUgY29tcGlsZXIpCisKKyAgICB2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoMSkKKyAgICByZXR1cm4gY29tcGlsZXIsIHZlcnNpb24KKworCiBkZWYgaG9zdF9nY2NfdmVyc2lvbihkLCB0YXNrY29udGV4dG9ubHk9RmFsc2UpOgogICAgIGltcG9ydCByZSwgc3VicHJvY2VzcwogCkBAIC0zODcsNyArNDIyLDcgQEAKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgYmIuZmF0YWwoIkVycm9yIHJ1bm5pbmcgJXMgLS12ZXJzaW9uOiAlcyIgJSAoY29tcGlsZXIsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKLSAgICBtYXRjaCA9IHJlLm1hdGNoKHIiLiogKFxkXC5cZClcLlxkLioiLCBvdXRwdXQuc3BsaXQoJ1xuJylbMF0pCisgICAgbWF0Y2ggPSByZS5tYXRjaChyIi4qIChcZCtcLlxkKylcLlxkKy4qIiwgb3V0cHV0LnNwbGl0KCdcbicpWzBdKQogICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgYmIuZmF0YWwoIkNhbid0IGdldCBjb21waWxlciB2ZXJzaW9uIGZyb20gJXMgLS12ZXJzaW9uIG91dHB1dCIgJSBjb21waWxlcikKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CmluZGV4IDNiMmZlZDUuLjVmMTgwNWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKQEAgLTQ2Miw3ICs0NjIsNyBAQAogICAgIGRlZiBybV90bXAoc2VsZik6CiAgICAgICAgICIiIkNsZWFudXAgdGVtcG9yYXJ5L2ludGVybWVkaWF0ZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMiIiIKICAgICAgICAgbG9nLmRlYnVnKCJSZW1vdmluZyB0ZW1wb3JhcnkgYW5kIGNhY2hlIGZpbGVzIikKLSAgICAgICAgZm9yIG5hbWUgaW4gWydiaXRiYWtlLmxvY2snLCAnY29uZi9zYW5pdHlfaW5mbycsCisgICAgICAgIGZvciBuYW1lIGluIFsnYml0YmFrZS5sb2NrJywgJ2NhY2hlL3Nhbml0eV9pbmZvJywKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmJfdmFyc1snVE1QRElSJ11dOgogICAgICAgICAgICAgb2UucGF0aC5yZW1vdmUobmFtZSwgcmVjdXJzZT1UcnVlKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkKaW5kZXggMDQzNWRmYS4uMGJmNTkxNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weQpAQCAtOTcsNyArOTcsNyBAQAogICAgICAgICBpZiBzZWxmLnBvd2VyY29udHJvbF9jbWQ6CiAgICAgICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYucG93ZXJjb250cm9sX2NtZCwgbXNnKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvbW1hbmRzLnJ1bkNtZChjbWQsIGFzc2VydF9lcnJvcj1GYWxzZSwgcHJlZXhlY19mbj1vcy5zZXRzaWQsIGVudj1zZWxmLm9yaWdlbnYpCisgICAgICAgICAgICAgICAgY29tbWFuZHMucnVuQ21kKGNtZCwgYXNzZXJ0X2Vycm9yPUZhbHNlLCBzdGFydF9uZXdfc2Vzc2lvbj1UcnVlLCBlbnY9c2VsZi5vcmlnZW52KQogICAgICAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKHN0cihlKSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKaW5kZXggMTRmYzZhNS4uNDcwNWQ2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CkBAIC03Miw2ICs3Miw5IEBACiAgICAgICAgICAgICAgICAgbW9kdWxlc19yZXF1aXJlZCwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuc3VpdGVzID0gc2VsZi5sb2FkZXIuZGlzY292ZXIoKQogCisgICAgZGVmIHByZXBhcmVTdWl0ZShzZWxmLCBzdWl0ZXMsIHByb2Nlc3Nlcyk6CisgICAgICAgIHJldHVybiBzdWl0ZXMKKwogICAgIGRlZiBydW5UZXN0cyhzZWxmLCBwcm9jZXNzZXM9Tm9uZSwgc2tpcHM9W10pOgogICAgICAgICBzZWxmLnJ1bm5lciA9IHNlbGYucnVubmVyQ2xhc3Moc2VsZiwgZGVzY3JpcHRpb25zPUZhbHNlLCB2ZXJib3NpdHk9MikKIApAQCAtNzksMTQgKzgyLDkgQEAKICAgICAgICAgc2VsZi5za2lwVGVzdHMoc2tpcHMpCiAKICAgICAgICAgc2VsZi5fcnVuX3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICBpZiBwcm9jZXNzZXM6Ci0gICAgICAgICAgICBmcm9tIG9lcWEuY29yZS51dGlscy5jb25jdXJyZW5jeXRlc3QgaW1wb3J0IENvbmN1cnJlbnRUZXN0U3VpdGUKLQotICAgICAgICAgICAgY29uY3VycmVudF9zdWl0ZSA9IENvbmN1cnJlbnRUZXN0U3VpdGUoc2VsZi5zdWl0ZXMsIHByb2Nlc3NlcykKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucnVubmVyLnJ1bihjb25jdXJyZW50X3N1aXRlKQotICAgICAgICBlbHNlOgorICAgICAgICBpZiBub3QgcHJvY2Vzc2VzOgogICAgICAgICAgICAgc2VsZi5ydW5uZXIuYnVmZmVyID0gVHJ1ZQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5ydW5uZXIucnVuKHNlbGYuc3VpdGVzKQorICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oc2VsZi5wcmVwYXJlU3VpdGUoc2VsZi5zdWl0ZXMsIHByb2Nlc3NlcykpCiAgICAgICAgIHNlbGYuX3J1bl9lbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMTAyLDIyICsxMDAsMjcgQEAKICAgICBuYW1lID0gJ2NvcmUnCiAgICAgaGVscCA9ICdjb3JlIHRlc3QgY29tcG9uZW50IGV4YW1wbGUnCiAgICAgZGVzY3JpcHRpb24gPSAnZXhlY3V0ZXMgY29yZSB0ZXN0IHN1aXRlIGV4YW1wbGUnCisgICAgZGF0ZXRpbWUgPSB0aW1lLnN0cmZ0aW1lKCIlWSVtJWQlSCVNJVMiKQogCiAgICAgZGVmYXVsdF9jYXNlcyA9IFtvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLAogICAgICAgICAgICAgJ2Nhc2VzL2V4YW1wbGUnKV0KICAgICBkZWZhdWx0X3Rlc3RfZGF0YSA9IG9zLnBhdGguam9pbihkZWZhdWx0X2Nhc2VzWzBdLCAnZGF0YS5qc29uJykKICAgICBkZWZhdWx0X3Rlc3RzID0gTm9uZQorICAgIGRlZmF1bHRfanNvbl9yZXN1bHRfZGlyID0gTm9uZQogCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHNlbGYsIGxvZ2dlciwgc3VicGFyc2Vycyk6CiAgICAgICAgIHNlbGYucGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKHNlbGYubmFtZSwgaGVscD1zZWxmLmhlbHAsCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249c2VsZi5kZXNjcmlwdGlvbiwgZ3JvdXA9J2NvbXBvbmVudHMnKQogCi0gICAgICAgIHNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nID0gJyVzLXJlc3VsdHMtJXMubG9nJyAlIChzZWxmLm5hbWUsCi0gICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikpCisgICAgICAgIHNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nID0gJyVzLXJlc3VsdHMtJXMubG9nJyAlIChzZWxmLm5hbWUsIHNlbGYuZGF0ZXRpbWUpCiAgICAgICAgIHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXQtbG9nJywgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZWxmLmRlZmF1bHRfb3V0cHV0X2xvZywKICAgICAgICAgICAgICAgICBoZWxwPSJyZXN1bHRzIG91dHB1dCBsb2csIGRlZmF1bHQ6ICVzIiAlIHNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nKQogCisgICAgICAgIHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudCgnLS1qc29uLXJlc3VsdC1kaXInLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF9qc29uX3Jlc3VsdF9kaXIsCisgICAgICAgICAgICAgICAgaGVscD0ianNvbiByZXN1bHQgb3V0cHV0IGRpciwgZGVmYXVsdDogJXMiICUgc2VsZi5kZWZhdWx0X2pzb25fcmVzdWx0X2RpcikKKwogICAgICAgICBncm91cCA9IHNlbGYucGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQogICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcnVuLXRlc3RzJywgYWN0aW9uPSdzdG9yZScsIG5hcmdzPScrJywKICAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF90ZXN0cywKQEAgLTE4MCw2ICsxODMsMjIgQEAKIAogICAgICAgICBzZWxmLm1vZHVsZV9wYXRocyA9IGFyZ3MuQ0FTRVNfUEFUSFMKIAorICAgIGRlZiBfZ2V0X2pzb25fcmVzdWx0X2RpcihzZWxmLCBhcmdzKToKKyAgICAgICAgcmV0dXJuIGFyZ3MuanNvbl9yZXN1bHRfZGlyCisKKyAgICBkZWYgX2dldF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICB0ZCA9IHNlbGYudGNfa3dhcmdzWydpbml0J11bJ3RkJ10KKyAgICAgICAgY29uZmlndXJhdGlvbiA9IHsnVEVTVF9UWVBFJzogc2VsZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ01BQ0hJTkUnOiB0ZC5nZXQoIk1BQ0hJTkUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdESVNUUk8nOiB0ZC5nZXQoIkRJU1RSTyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0lNQUdFX0JBU0VOQU1FJzogdGQuZ2V0KCJJTUFHRV9CQVNFTkFNRSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0RBVEVUSU1FJzogdGQuZ2V0KCJEQVRFVElNRSIpfQorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgorCisgICAgZGVmIF9nZXRfcmVzdWx0X2lkKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICByZXR1cm4gJyVzXyVzXyVzXyVzJyAlIChjb25maWd1cmF0aW9uWydURVNUX1RZUEUnXSwgY29uZmlndXJhdGlvblsnSU1BR0VfQkFTRU5BTUUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvblsnTUFDSElORSddLCBzZWxmLmRhdGV0aW1lKQorCiAgICAgZGVmIF9wcmVfcnVuKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTE5OCw3ICsyMTcsMTYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3ByZV9ydW4oKQogICAgICAgICAgICAgcmMgPSBzZWxmLnRjLnJ1blRlc3RzKCoqc2VsZi50Y19rd2FyZ3NbJ3J1biddKQotICAgICAgICAgICAgcmMubG9nRGV0YWlscygpCisKKyAgICAgICAgICAgIGpzb25fcmVzdWx0X2RpciA9IHNlbGYuX2dldF9qc29uX3Jlc3VsdF9kaXIoYXJncykKKyAgICAgICAgICAgIGlmIGpzb25fcmVzdWx0X2RpcjoKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5fZ2V0X2NvbmZpZ3VyYXRpb24oKQorICAgICAgICAgICAgICAgIHJjLmxvZ0RldGFpbHMoanNvbl9yZXN1bHRfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9yZXN1bHRfaWQoY29uZmlndXJhdGlvbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJjLmxvZ0RldGFpbHMoKQorCiAgICAgICAgICAgICByYy5sb2dTdW1tYXJ5KHNlbGYubmFtZSkKIAogICAgICAgICBvdXRwdXRfbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYXJncy5vdXRwdXRfbG9nKSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQppbmRleCBmNjU2ZTFhLi4xMjg0Mjk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CkBAIC0zMTksMTAgKzMxOSwxNyBAQAogICAgICAgICAgICAgdGhlX2ZpbGUud3JpdGUoZmlsZV9jb250ZW50KQogCiAgICAgZGVmIGR1bXBfdGVzdHJlc3VsdF9maWxlKHNlbGYsIHdyaXRlX2RpciwgY29uZmlndXJhdGlvbiwgcmVzdWx0X2lkLCB0ZXN0X3Jlc3VsdCk6Ci0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih3cml0ZV9kaXIpCi0gICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUob3MucGF0aC5qb2luKHdyaXRlX2RpciwgJ2pzb250ZXN0cmVzdWx0LmxvY2snKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGJiCisgICAgICAgICAgICBoYXNfYmIgPSBUcnVlCisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIod3JpdGVfZGlyKQorICAgICAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShvcy5wYXRoLmpvaW4od3JpdGVfZGlyLCAnanNvbnRlc3RyZXN1bHQubG9jaycpKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBoYXNfYmIgPSBGYWxzZQorICAgICAgICAgICAgb3MubWFrZWRpcnMod3JpdGVfZGlyLCBleGlzdF9vaz1UcnVlKQogICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBzZWxmLl9nZXRfZXhpc3RpbmdfdGVzdHJlc3VsdHNfaWZfYXZhaWxhYmxlKHdyaXRlX2RpcikKICAgICAgICAgdGVzdF9yZXN1bHRzW3Jlc3VsdF9pZF0gPSB7J2NvbmZpZ3VyYXRpb24nOiBjb25maWd1cmF0aW9uLCAncmVzdWx0JzogdGVzdF9yZXN1bHR9CiAgICAgICAgIGpzb25fdGVzdHJlc3VsdHMgPSBqc29uLmR1bXBzKHRlc3RfcmVzdWx0cywgc29ydF9rZXlzPVRydWUsIGluZGVudD00KQogICAgICAgICBzZWxmLl93cml0ZV9maWxlKHdyaXRlX2Rpciwgc2VsZi50ZXN0cmVzdWx0X2ZpbGVuYW1lLCBqc29uX3Rlc3RyZXN1bHRzKQotICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQorICAgICAgICBpZiBoYXNfYmI6CisgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQppbmRleCAwODFjNjI3Li4yOTVlODc2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQpAQCAtOCw2ICs4LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBzaWduYWwKIGltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCiBmcm9tIC5zc2ggaW1wb3J0IE9FU1NIVGFyZ2V0CiBmcm9tIG9lcWEudXRpbHMucWVtdXJ1bm5lciBpbXBvcnQgUWVtdVJ1bm5lcgpAQCAtMTgsMjMgKzE5LDI5IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgc2VydmVyX2lwLCB0aW1lb3V0PTMwMCwgdXNlcj0ncm9vdCcsCiAgICAgICAgICAgICBwb3J0PU5vbmUsIG1hY2hpbmU9JycsIHJvb3Rmcz0nJywga2VybmVsPScnLCBrdm09RmFsc2UsIHNsaXJwPUZhbHNlLAogICAgICAgICAgICAgZHVtcF9kaXI9JycsIGR1bXBfaG9zdF9jbWRzPScnLCBkaXNwbGF5PScnLCBib290bG9nPScnLAotICAgICAgICAgICAgdG1wZGlyPScnLCBkaXJfaW1hZ2U9JycsIGJvb3R0aW1lPTYwLCAqKmt3YXJncyk6CisgICAgICAgICAgICB0bXBkaXI9JycsIGRpcl9pbWFnZT0nJywgYm9vdHRpbWU9NjAsIHNlcmlhbF9wb3J0cz0yLAorICAgICAgICAgICAgYm9vdF9wYXR0ZXJucyA9IGRlZmF1bHRkaWN0KHN0ciksIG92bWY9RmFsc2UsICoqa3dhcmdzKToKIAogICAgICAgICBzdXBlcihPRVFlbXVUYXJnZXQsIHNlbGYpLl9faW5pdF9fKGxvZ2dlciwgTm9uZSwgc2VydmVyX2lwLCB0aW1lb3V0LAogICAgICAgICAgICAgICAgIHVzZXIsIHBvcnQpCiAKICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBzZXJ2ZXJfaXAKKyAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IDAKICAgICAgICAgc2VsZi5tYWNoaW5lID0gbWFjaGluZQogICAgICAgICBzZWxmLnJvb3RmcyA9IHJvb3RmcwogICAgICAgICBzZWxmLmtlcm5lbCA9IGtlcm5lbAogICAgICAgICBzZWxmLmt2bSA9IGt2bQorICAgICAgICBzZWxmLm92bWYgPSBvdm1mCiAgICAgICAgIHNlbGYudXNlX3NsaXJwID0gc2xpcnAKKyAgICAgICAgc2VsZi5ib290X3BhdHRlcm5zID0gYm9vdF9wYXR0ZXJucwogCiAgICAgICAgIHNlbGYucnVubmVyID0gUWVtdVJ1bm5lcihtYWNoaW5lPW1hY2hpbmUsIHJvb3Rmcz1yb290ZnMsIHRtcGRpcj10bXBkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlPWRpcl9pbWFnZSwgZGlzcGxheT1kaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZT1ib290bG9nLCBib290dGltZT1ib290dGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9rdm09a3ZtLCB1c2Vfc2xpcnA9c2xpcnAsIGR1bXBfZGlyPWR1bXBfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHM9ZHVtcF9ob3N0X2NtZHMsIGxvZ2dlcj1sb2dnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcz1kdW1wX2hvc3RfY21kcywgbG9nZ2VyPWxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbF9wb3J0cz1zZXJpYWxfcG9ydHMsIGJvb3RfcGF0dGVybnMgPSBib290X3BhdHRlcm5zLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9vdm1mPW92bWYpCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcGFyYW1zPU5vbmUsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSwgcnVucWVtdXBhcmFtcz0nJyk6CiAgICAgICAgIGlmIHNlbGYudXNlX3NsaXJwIGFuZCBub3Qgc2VsZi5zZXJ2ZXJfaXA6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weQppbmRleCA1MTAzMmVmLi4wOTBiNDBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkKQEAgLTE1LDcgKzE1LDcgQEAKIAogY2xhc3MgT0VTU0hUYXJnZXQoT0VUYXJnZXQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGlwLCBzZXJ2ZXJfaXAsIHRpbWVvdXQ9MzAwLCB1c2VyPSdyb290JywKLSAgICAgICAgICAgICAgICAgcG9ydD1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIHBvcnQ9Tm9uZSwgc2VydmVyX3BvcnQ9MCwgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3QgbG9nZ2VyOgogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3RhcmdldCcpCiAgICAgICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpAQCAtMzAsNiArMzAsNyBAQAogICAgICAgICBzdXBlcihPRVNTSFRhcmdldCwgc2VsZikuX19pbml0X18obG9nZ2VyKQogICAgICAgICBzZWxmLmlwID0gaXAKICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBzZXJ2ZXJfaXAKKyAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHNlcnZlcl9wb3J0CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi51c2VyID0gdXNlcgogICAgICAgICBzc2hfb3B0aW9ucyA9IFsKQEAgLTI0Niw3ICsyNDcsNyBAQAogICAgICAgICAic3RkaW4iOiBOb25lLAogICAgICAgICAic2hlbGwiOiBGYWxzZSwKICAgICAgICAgImJ1ZnNpemUiOiAtMSwKLSAgICAgICAgInByZWV4ZWNfZm4iOiBvcy5zZXRzaWQsCisgICAgICAgICJzdGFydF9uZXdfc2Vzc2lvbiI6IFRydWUsCiAgICAgfQogICAgIG9wdGlvbnMudXBkYXRlKG9wdHMpCiAgICAgb3V0cHV0ID0gJycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weQppbmRleCAwZjdiM2RjLi5mYWM1OWY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5CkBAIC0xNDYsNiArMTQ2LDIwIEBACiAKIHN1YnVuaXQuX091dFNpZGVUZXN0LmFkZEVycm9yID0gb3V0U2lkZVRlc3RhZGRFcnJvcgogCisjIExpa2Ugb3V0U2lkZVRlc3RhZGRFcnJvciBhYm92ZSwgd2UgbmVlZCBhbiBlcXVpdmFsZW50IGZvciBza2lwcworIyBoYXBwZW5pbmcgYXQgdGhlIHNldFVwQ2xhc3MoKSBsZXZlbCwgb3RoZXJ3aXNlIHdlIHdpbGwgc2VlICJVTktOT1dOIgorIyBhcyBhIHJlc3VsdCBmb3IgY29uY3VycmVudCB0ZXN0cworIworZGVmIG91dFNpZGVUZXN0YWRkU2tpcChzZWxmLCBvZmZzZXQsIGxpbmUpOgorICAgICIiIkEgJ3NraXA6JyBkaXJlY3RpdmUgaGFzIGJlZW4gcmVhZC4iIiIKKyAgICB0ZXN0X25hbWUgPSBsaW5lW29mZnNldDotMV0uZGVjb2RlKCd1dGY4JykKKyAgICBzZWxmLnBhcnNlci5fY3VycmVudF90ZXN0ID0gc3VidW5pdC5SZW1vdGVkVGVzdENhc2UodGVzdF9uYW1lKQorICAgIHNlbGYucGFyc2VyLmN1cnJlbnRfdGVzdF9kZXNjcmlwdGlvbiA9IHRlc3RfbmFtZQorICAgIHNlbGYucGFyc2VyLl9zdGF0ZSA9IHNlbGYucGFyc2VyLl9yZWFkaW5nX3NraXBfZGV0YWlscworICAgIHNlbGYucGFyc2VyLl9yZWFkaW5nX3NraXBfZGV0YWlscy5zZXRfc2ltcGxlKCkKKyAgICBzZWxmLnBhcnNlci5zdWJ1bml0TGluZVJlY2VpdmVkKGxpbmUpCisKK3N1YnVuaXQuX091dFNpZGVUZXN0LmFkZFNraXAgPSBvdXRTaWRlVGVzdGFkZFNraXAKIAogIwogIyBBIGR1bW15IHN0cnVjdHVyZSB0byBhZGQgdG8gaW8uU3RyaW5nSU8gc28gdGhhdCB0aGUgLmJ1ZmZlciBvYmplY3QKQEAgLTE2Myw5ICsxNzcsMTAgQEAKICMKIGNsYXNzIENvbmN1cnJlbnRUZXN0U3VpdGUodW5pdHRlc3QuVGVzdFN1aXRlKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdWl0ZSwgcHJvY2Vzc2VzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3VpdGUsIHByb2Nlc3Nlcywgc2V0dXBmdW5jKToKICAgICAgICAgc3VwZXIoQ29uY3VycmVudFRlc3RTdWl0ZSwgc2VsZikuX19pbml0X18oW3N1aXRlXSkKICAgICAgICAgc2VsZi5wcm9jZXNzZXMgPSBwcm9jZXNzZXMKKyAgICAgICAgc2VsZi5zZXR1cGZ1bmMgPSBzZXR1cGZ1bmMKIAogICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0KToKICAgICAgICAgdGVzdHMsIHRvdGFsdGVzdHMgPSBmb3JrX2Zvcl90ZXN0cyhzZWxmLnByb2Nlc3Nlcywgc2VsZikKQEAgLTIyMSw2ICsyMzYsMTUgQEAKICAgICB3aGlsZSBkZWxheSBhbmQgb3MucGF0aC5leGlzdHMoZCArICIvYml0YmFrZS5sb2NrIik6CiAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgZGVsYXkgPSBkZWxheSAtIDEKKyAgICAjIERlbGV0aW5nIHRoZXNlIGRpcmVjdG9yaWVzIHRha2VzIGEgbG90IG9mIHRpbWUsIHVzZSBhdXRvYnVpbGRlcgorICAgICMgY2xvYmJlcmRpciBpZiBpdHMgYXZhaWxhYmxlCisgICAgY2xvYmJlcmRpciA9IG9zLnBhdGguZXhwYW5kdXNlcigifi95b2N0by1hdXRvYnVpbGRlci1oZWxwZXIvamFuaXRvci9jbG9iYmVyZGlyIikKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhjbG9iYmVyZGlyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtjbG9iYmVyZGlyLCBkXSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAgICAgYmIudXRpbHMucHJ1bmVkaXIoZCwgaW9uaWNlPVRydWUpCiAKIGRlZiBmb3JrX2Zvcl90ZXN0cyhjb25jdXJyZW5jeV9udW0sIHN1aXRlKToKQEAgLTI0OSwzNyArMjczLDcgQEAKICAgICAgICAgICAgICAgICBzdHJlYW0gPSBvcy5mZG9wZW4oYzJwd3JpdGUsICd3YicsIDEpCiAgICAgICAgICAgICAgICAgb3MuY2xvc2UoYzJwcmVhZCkKIAotICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgbmV3IHNlcGFyYXRlIEJVSUxERElSIGZvciBlYWNoIGdyb3VwIG9mIHRlc3RzCi0gICAgICAgICAgICAgICAgaWYgJ0JVSUxERElSJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bJ0JVSUxERElSJ10KLSAgICAgICAgICAgICAgICAgICAgbmV3YnVpbGRkaXIgPSBidWlsZGRpciArICItc3QtIiArIHN0cihvdXJwaWQpCi0gICAgICAgICAgICAgICAgICAgIG5ld3NlbGZ0ZXN0ZGlyID0gbmV3YnVpbGRkaXIgKyAiL21ldGEtc2VsZnRlc3QiCi0KLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG5ld2J1aWxkZGlyKQotICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jb25mIiwgbmV3YnVpbGRkaXIgKyAiL2NvbmYiKQotICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jYWNoZSIsIG5ld2J1aWxkZGlyICsgIi9jYWNoZSIpCi0gICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQotCi0gICAgICAgICAgICAgICAgICAgIGZvciBlIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsZGRpciBpbiBvcy5lbnZpcm9uW2VdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bZV0gPSBvcy5lbnZpcm9uW2VdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQotCi0gICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJnaXQgaW5pdDsgZ2l0IGFkZCAqOyBnaXQgY29tbWl0IC1hIC1tICdpbml0aWFsJyIsIGN3ZD1uZXdzZWxmdGVzdGRpciwgc2hlbGw9VHJ1ZSkKLQotICAgICAgICAgICAgICAgICAgICAjIFRyaWVkIHRvIHVzZWQgYml0YmFrZS1sYXllcnMgYWRkL3JlbW92ZSBidXQgaXQgcmVxdWlyZXMgcmVjaXBlIHBhcnNpbmcgYW5kIGhlbmNlIGlzIHRvbyBzbG93Ci0gICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJzZWQgJXMvY29uZi9iYmxheWVycy5jb25mIC1pIC1lICdzIyVzIyVzI2cnIiAlIChuZXdidWlsZGRpciwgc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKSwgY3dkPW5ld2J1aWxkZGlyLCBzaGVsbD1UcnVlKQotCi0gICAgICAgICAgICAgICAgICAgIG9zLmNoZGlyKG5ld2J1aWxkZGlyKQotCi0gICAgICAgICAgICAgICAgICAgIGZvciB0IGluIHByb2Nlc3Nfc3VpdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih0LCAidGMiKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgY3AgPSB0LnRjLmNvbmZpZ19wYXRocwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gY3A6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZnRlc3RkaXIgaW4gY3BbcF0gYW5kIG5ld3NlbGZ0ZXN0ZGlyIG5vdCBpbiBjcFtwXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BbcF0gPSBjcFtwXS5yZXBsYWNlKHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsZGRpciBpbiBjcFtwXSBhbmQgbmV3YnVpbGRkaXIgbm90IGluIGNwW3BdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcFtwXSA9IGNwW3BdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorICAgICAgICAgICAgICAgIChidWlsZGRpciwgbmV3YnVpbGRkaXIpID0gc3VpdGUuc2V0dXBmdW5jKCItc3QtIiArIHN0cihvdXJwaWQpLCBzZWxmdGVzdGRpciwgcHJvY2Vzc19zdWl0ZSkKIAogICAgICAgICAgICAgICAgICMgTGVhdmUgc3RkZXJyIGFuZCBzdGRvdXQgb3BlbiBzbyB3ZSBjYW4gc2VlIHRlc3Qgbm9pc2UKICAgICAgICAgICAgICAgICAjIENsb3NlIHN0ZGluIHNvIHRoYXQgdGhlIGNoaWxkIGdvZXMgYXdheSBpZiBpdCBkZWNpZGVzIHRvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgppbmRleCA1YzViOWI1Li5hOWJjN2Q0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KQEAgLTkxNywyOCArOTE3LDYgQEAKICAgICB9LAogICAgIHsKICAgICAgICAgInRlc3QiOiB7Ci0gICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ody5DaGVja19pZl90YXJnZXRfY2FuX3N1cHBvcnRfRUVQUk9NIiwKLSAgICAgICAgICAgICJhdXRob3IiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIiwKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZXhlY3V0aW9uIjogewotICAgICAgICAgICAgICAgICIxIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIGVlcHJvbSBkZXZpY2UgZXhpc3QgaW4gL3N5cy9idXMvaTJjL2RldmljZXMvICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkhleGR1bXAgY2FuIHJlYWQgZGF0YSBmcm9tIGVlcHJvbS5cbiIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICIyIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcImhleGR1bXAgZWVwcm9tXCIgY29tbWFuZHJvb3RAbXBjODMxNWUtcmRiOi9zeXMvYnVzL2kyYy9kZXZpY2VzLzEtMDA1MT4gaGV4ZHVtcCBlZXByb20wMDAwMDAwIDkyMTAgMGIwMiAwMjExIDAwMDkgMGI1MiAwMTA4IDBjMDAgM2MwMDAwMDAwMTAgNjk3OCA2OTMwIDY5MTEgMjA4YyA3MDAzIDNjM2MgMDBmMCA4MzgxXHUyMDI2XG4iLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzdW1tYXJ5IjogIkNoZWNrX2lmX3RhcmdldF9jYW5fc3VwcG9ydF9FRVBST00iCi0gICAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgICAgInRlc3QiOiB7CiAgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ody5TeXN0ZW1fY2FuX2Jvb3RfdXBfdmlhX05GUyIsCiAgICAgICAgICAgICAiYXV0aG9yIjogWwogICAgICAgICAgICAgICAgIHsKQEAgLTk2NiwzNSArOTQ0LDUgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAic3VtbWFyeSI6ICJTeXN0ZW1fY2FuX2Jvb3RfdXBfdmlhX05GUyIKICAgICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgICAidGVzdCI6IHsKLSAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLWh3LkJvb3RfZnJvbV9KRkZTMl9pbWFnZSIsCi0gICAgICAgICAgICAiYXV0aG9yIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIsCi0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJGaXJzdCBib290IHRoZSBib2FyZCB3aXRoIE5GUyByb290LiAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGUgc3lzdGVtIGNhbiBib290IHVwIHdpdGhvdXQgcHJvYmxlbVxuIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjIiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5zdGFsbCBtdGQtdXRpbHMgcGFja2FnZS4gRXJhc2UgdGhlIE1URCBwYXJ0aXRpb24gd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHJvb3Q6ICQgZmxhc2hfZXJhc2VhbGwgL2Rldi9tdGQzICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICIzIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNvcHkgdGhlIEpGRlMyIGltYWdlIHRvIHRoZSBNVEQgcGFydGl0aW9uOiAkIGZsYXNoY3AgY29yZS1pbWFnZS1taW5pbWFsLW1wYzgzMTVlLXJkYi5qZmZzMiAvZGV2L210ZDMgIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVGhlbiByZWJvb3QgdGhlIGJvYXJkIGFuZCBzZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDogPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9tdGRibG9jazMgcm9vdGZzdHlwZT1qZmZzMiBjb25zb2xlPXR0eVMwLDExNTIwMCAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzdW1tYXJ5IjogIkJvb3RfZnJvbV9KRkZTMl9pbWFnZSIKLSAgICAgICAgfQogICAgIH0KIF0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvZWNsaXBzZS1wbHVnaW4uanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvZWNsaXBzZS1wbHVnaW4uanNvbgppbmRleCA5ODY5MTUwLi5kNzdkMGU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24KKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9lY2xpcHNlLXBsdWdpbi5qc29uCkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKICAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9tZW50LihSZWZlcmVuY2UgdG8gY2FzZSBcIkFEVCAtIExhdW5jaCBxZW11IGJ5IGVjbGlwc2VcIikgIiwKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9ubWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCiAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICIyIjogewpAQCAtMTY0LDcgKzE2NCw3IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKICAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9tZW50LihSZWZlcmVuY2UgdG8gY2FzZSBcIkFEVCAtIExhdW5jaCBxZW11IGJ5IGVjbGlwc2VcIikgIiwKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9ubWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCiAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICIyIjogewpAQCAtMzE5LDQgKzMxOSw0IEBACiAgICAgICAgICAgICAic3VtbWFyeSI6ICJFY2xpcHNlX1Bva3lfaW5zdGFsbGF0aW9uX2FuZF9zZXR1cCIKICAgICAgICAgfQogICAgIH0KLV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKaW5kZXggNzRhOTQwZC4uYzUzNzhkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weQpAQCAtMjIsNyArMjIsOSBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfREVCJ10sICdhbGwnKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwLCBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMC4wLjAuMCcsIHBvcnQ9Y2xzLnRjLnRhcmdldC5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCiAgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weQppbmRleCBmNGU4NzFlLi5kMGY5MTY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICB1cmkgPSAnaHR0cHM6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9jcGlvLTIuMTIudGFyLmd6JworICAgICAgICB1cmkgPSAnaHR0cHM6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9jcGlvLTIuMTMudGFyLmd6JwogICAgICAgICBjbHMucHJvamVjdCA9IFRhcmdldEJ1aWxkUHJvamVjdChjbHMudGMudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRsX2RpciA9IGNscy50Yy50ZFsnRExfRElSJ10pCkBAIC0yNyw2ICsyNyw2IEBACiAgICAgQE9FSGFzUGFja2FnZShbJ2F1dG9jb25mJ10pCiAgICAgZGVmIHRlc3RfY3BpbyhzZWxmKToKICAgICAgICAgc2VsZi5wcm9qZWN0LmRvd25sb2FkX2FyY2hpdmUoKQotICAgICAgICBzZWxmLnByb2plY3QucnVuX2NvbmZpZ3VyZSgpCisgICAgICAgIHNlbGYucHJvamVjdC5ydW5fY29uZmlndXJlKCctLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlJywnJykKICAgICAgICAgc2VsZi5wcm9qZWN0LnJ1bl9tYWtlKCkKICAgICAgICAgc2VsZi5wcm9qZWN0LnJ1bl9pbnN0YWxsKCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RhdGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kYXRlLnB5CmluZGV4IDc3NTBhNzIuLmZkZDJhNmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RhdGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZGF0ZS5weQpAQCAtMTMsMTIgKzEzLDEyIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnRjLnRkLmdldCgnVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdzeXN0ZW1kJzoKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdTdG9wcGluZyBzeXN0ZW1kLXRpbWVzeW5jZCBkYWVtb24nKQotICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKCdzeXN0ZW1jdGwgc3RvcCBzeXN0ZW1kLXRpbWVzeW5jZCcpCisgICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ3N5c3RlbWN0bCBkaXNhYmxlIC0tbm93IHN5c3RlbWQtdGltZXN5bmNkJykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgaWYgc2VsZi50Yy50ZC5nZXQoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnc3lzdGVtZCc6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnU3RhcnRpbmcgc3lzdGVtZC10aW1lc3luY2QgZGFlbW9uJykKLSAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignc3lzdGVtY3RsIHN0YXJ0IHN5c3RlbWQtdGltZXN5bmNkJykKKyAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignc3lzdGVtY3RsIGVuYWJsZSAtLW5vdyBzeXN0ZW1kLXRpbWVzeW5jZCcpCiAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCiAgICAgQE9FSGFzUGFja2FnZShbJ2NvcmV1dGlscycsICdidXN5Ym94J10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKaW5kZXggZGUzNzU5OS4uZjQwYzYzMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQpAQCAtNTMsNyArNTMsOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKG9zLnBhdGguam9pbihjbHMudGMudGRbJ1dPUktESVInXSwgJ29lLXRlc3RpbWFnZS1yZXBvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy50Yy50YXJnZXQuc2VydmVyX2lwLCBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAuMC4wLjAnLCBwb3J0PWNscy50Yy50YXJnZXQuc2VydmVyX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQogICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkKaW5kZXggYmZhNTdjNS4uMzkzOGU5MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weQpAQCAtMTgsMzIgKzE4LDU4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnRjLnRhcmdldC5ydW4oJ212IC1mICRIT01FL3d0bXAub2VxYWJhayAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAgJiYgcm0gLXJmICRIT01FL2xvZ3JvdGF0ZV9kaXInKQorICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bigncm0gLXJmIC92YXIvbG9nL2xvZ3JvdGF0ZV90ZXN0ZmlsZSAmJiBybSAtcmYgL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdGZpbGUnKQogCiAgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQogICAgIEBPRUhhc1BhY2thZ2UoWydsb2dyb3RhdGUnXSkKLSAgICBkZWYgdGVzdF8xX2xvZ3JvdGF0ZV9zZXR1cChzZWxmKToKKyAgICBkZWYgdGVzdF9sb2dyb3RhdGVfd3RtcChzZWxmKToKKworICAgICAgICAjIC92YXIvbG9nL3d0bXAgbWF5IG5vdCBhbHdheXMgZXhpc3QgaW5pdGlhbGx5LCBzbyB1c2UgdG91Y2ggdG8gZW5zdXJlIGl0IGlzIHByZXNlbnQKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3RvdWNoIC92YXIvbG9nL3d0bXAnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCBjcmVhdGUvdXBkYXRlIC92YXIvbG9nL3d0bXAgd2l0aCB0b3VjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ21rZGlyICRIT01FL2xvZ3JvdGF0ZV9kaXInKQotICAgICAgICBtc2cgPSAnQ291bGQgbm90IGNyZWF0ZSBsb2dyb3RhdGVfZGlyLiBPdXRwdXQ6ICVzJyAlIG91dHB1dAorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCBjcmVhdGUgbG9ncm90YXRlX2Rpci4gT3V0cHV0OiAlcycgJSBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCiAKLSAgICAgICAgY21kID0gKCdzZWQgLWkgInMjd3RtcCB7I3d0bXAge1xcbiAgICBvbGRkaXIgJEhPTUUvbG9ncm90YXRlX2RpciMiJwotICAgICAgICAgICAgICAgJyAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAnKQotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCi0gICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIGxvZ3JvdGF0ZS5kL3d0bXAgZmlsZS4gU3RhdHVzIGFuZCBvdXRwdXQ6ICcKLSAgICAgICAgICAgICAgICcgJXMgYW5kICVzJyAlIChzdGF0dXMsIG91dHB1dCkpCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICJjcmVhdGUgXG4gb2xkZGlyICRIT01FL2xvZ3JvdGF0ZV9kaXIgXG4gaW5jbHVkZSAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAiID4gL3RtcC9sb2dyb3RhdGUtdGVzdC5jb25mJykKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3Qgd3JpdGUgdG8gL3RtcC9sb2dyb3RhdGUtdGVzdC5jb25mJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKyAgICAgICAgCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICIvdmFyL2xvZy9sb2dyb3RhdGVfdGVzdCB7XFxuIG1pc3NpbmdvayBcXG4gbW9udGhseSBcXG4gcm90YXRlIDEiID4gL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdCcpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQorICAgICAgICAKKyAgICAgICAgIyBJZiBsb2dyb3RhdGUgZmFpbHMgdG8gcm90YXRlIHRoZSBsb2csIHZpZXcgdGhlIHZlcmJvc2Ugb3V0cHV0IG9mIGxvZ3JvdGF0ZSB0byBzZWUgd2hhdCBwcmV2ZW50ZWQgaXQKKyAgICAgICAgXywgbG9ncm90YXRlX291dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbG9ncm90YXRlIC12ZiAvdG1wL2xvZ3JvdGF0ZS10ZXN0LmNvbmYnKQorICAgICAgICBzdGF0dXMsIF8gPSBzZWxmLnRhcmdldC5ydW4oJ2ZpbmQgJEhPTUUvbG9ncm90YXRlX2RpciAtdHlwZSBmIHwgZ3JlcCB3dG1wLjEnKQorICAgICAgICBtc2cgPSAoImxvZ3JvdGF0ZSBkaWQgbm90IHN1Y2Nlc3NmdWxseSByb3RhdGUgdGhlIHd0bXAgbG9nLiBPdXRwdXQgZnJvbSBsb2dyb3RhdGUgLXZmOiBcbiVzIiAlIChsb2dyb3RhdGVfb3V0cHV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKyAgICAgICAKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ2xvZ3JvdGF0ZS5Mb2dyb3RhdGVUZXN0LnRlc3RfbG9ncm90YXRlX3d0bXAnXSkKKyAgICBkZWYgdGVzdF9sb2dyb3RhdGVfbmV3bG9nKHNlbGYpOgorICAgICAgICAKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2VjaG8gIm9lcWEgbG9ncm90YXRlIHRlc3QgZmlsZSIgPiAvdmFyL2xvZy9sb2dyb3RhdGVfdGVzdGZpbGUnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCBjcmVhdGUgbG9ncm90YXRlIHRlc3QgZmlsZSBpbiAvdmFyL2xvZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisgICAgICAgIAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiL3Zhci9sb2cvbG9ncm90YXRlX3Rlc3RmaWxlIHtcbiBtaXNzaW5nb2sgXG4gbW9udGhseSBcbiByb3RhdGUgMSIgPiAvZXRjL2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZV90ZXN0ZmlsZScpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3RmaWxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKIAotICAgIEBPRVRlc3REZXBlbmRzKFsnbG9ncm90YXRlLkxvZ3JvdGF0ZVRlc3QudGVzdF8xX2xvZ3JvdGF0ZV9zZXR1cCddKQotICAgIGRlZiB0ZXN0XzJfbG9ncm90YXRlKHNlbGYpOgotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiY3JlYXRlIFxuIGluY2x1ZGUgL2V0Yy9sb2dyb3RhdGUuZCIgPiAvdG1wL2xvZ3JvdGF0ZS10ZXN0LmNvbmYnKQotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbG9ncm90YXRlIC1mIC90bXAvbG9ncm90YXRlLXRlc3QuY29uZicpCi0KLSAgICAgICAgbXNnID0gKCdsb2dyb3RhdGUgc2VydmljZSBjb3VsZCBub3QgYmUgcmVsb2FkZWQuIFN0YXR1cyBhbmQgb3V0cHV0OiAnCi0gICAgICAgICAgICAgICAgJyVzIGFuZCAlcycgJSAoc3RhdHVzLCBvdXRwdXQpKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiY3JlYXRlIFxuIG9sZGRpciAkSE9NRS9sb2dyb3RhdGVfZGlyIFxuIGluY2x1ZGUgL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdGZpbGUiID4gL3RtcC9sb2dyb3RhdGUtdGVzdDIuY29uZicpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIC90bXAvbG9ncm90YXRlX3Rlc3QyLmNvbmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQogCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbHMgLWxhICRIT01FL2xvZ3JvdGF0ZV9kaXIvIHwgd2MgLWwnKQotICAgICAgICBtc2cgPSAoJ25ldyBsb2dmaWxlIGNvdWxkIG5vdCBiZSBjcmVhdGVkLiBMaXN0IG9mIGZpbGVzIHdpdGhpbiBsb2cgJwotICAgICAgICAgICAgICAgJ2RpcmVjdG9yeTogJXMnICUgKAotICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbHMgLWxhICRIT01FL2xvZ3JvdGF0ZV9kaXInKVsxXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnQob3V0cHV0KT49MywgbXNnID0gbXNnKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZmluZCAkSE9NRS9sb2dyb3RhdGVfZGlyIC10eXBlIGYgfCBncmVwIGxvZ3JvdGF0ZV90ZXN0ZmlsZS4xJykKKyAgICAgICAgbXNnID0gKCdBIHJvdGF0ZWQgbG9nIGZvciBsb2dyb3RhdGVfdGVzdGZpbGUgaXMgYWxyZWFkeSBwcmVzZW50IGluIGxvZ3JvdGF0ZV9kaXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMSwgbXNnID0gbXNnKQorCisgICAgICAgICMgSWYgbG9ncm90YXRlIGZhaWxzIHRvIHJvdGF0ZSB0aGUgbG9nLCB2aWV3IHRoZSB2ZXJib3NlIG91dHB1dCBvZiBsb2dyb3RhdGUgaW5zdGVhZCBvZiBqdXN0IGxpc3RpbmcgdGhlIGZpbGVzIGluIG9sZGRpcgorICAgICAgICBfLCBsb2dyb3RhdGVfb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdsb2dyb3RhdGUgLXZmIC90bXAvbG9ncm90YXRlLXRlc3QyLmNvbmYnKQorICAgICAgICBzdGF0dXMsIF8gPSBzZWxmLnRhcmdldC5ydW4oJ2ZpbmQgJEhPTUUvbG9ncm90YXRlX2RpciAtdHlwZSBmIHwgZ3JlcCBsb2dyb3RhdGVfdGVzdGZpbGUuMScpCisgICAgICAgIG1zZyA9ICgnbG9ncm90YXRlIGRpZCBub3Qgc3VjY2Vzc2Z1bGx5IHJvdGF0ZSB0aGUgbG9ncm90YXRlX3Rlc3QgbG9nLiBPdXRwdXQgZnJvbSBsb2dyb3RhdGUgLXZmOiBcbiVzJyAlIChsb2dyb3RhdGVfb3V0cHV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sdHAucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sdHAucHkKaW5kZXggMzA1NDg2NC4uNmRjNWVmMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbHRwLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2x0cC5weQpAQCAtNTcsOSArNTcsOSBAQAogCiBjbGFzcyBMdHBUZXN0KEx0cFRlc3RCYXNlKToKIAotICAgIGx0cF9ncm91cHMgPSBbIm1hdGgiLCAic3lzY2FsbHMiLCAiZGlvIiwgImlvIiwgIm1tIiwgImlwYyIsICJzY2hlZCIsICJucHRsIiwgInB0eSIsICJjb250YWluZXJzIiwgImNvbnRyb2xsZXJzIiwgImZpbGVjYXBzIiwgImNhcF9ib3VuZHMiLCAiZmNudGwtbG9ja3Rlc3RzIiwgImNvbm5lY3RvcnMiLCJ0aW1lcnMiLCAiY29tbWFuZHMiLCAibmV0LmlwdjZfbGliIiwgImlucHV0IiwiZnNfcGVybXNfc2ltcGxlIl0KKyAgICBsdHBfZ3JvdXBzID0gWyJtYXRoIiwgInN5c2NhbGxzIiwgImRpbyIsICJpbyIsICJtbSIsICJpcGMiLCAic2NoZWQiLCAibnB0bCIsICJwdHkiLCAiY29udGFpbmVycyIsICJjb250cm9sbGVycyIsICJmaWxlY2FwcyIsICJjYXBfYm91bmRzIiwgImZjbnRsLWxvY2t0ZXN0cyIsICJjb25uZWN0b3JzIiwgImNvbW1hbmRzIiwgIm5ldC5pcHY2X2xpYiIsICJpbnB1dCIsImZzX3Blcm1zX3NpbXBsZSJdCiAKLSAgICBsdHBfZnMgPSBbImZzIiwgImZzeCIsICJmc19iaW5kIiwgImZzX2V4dDQiXQorICAgIGx0cF9mcyA9IFsiZnMiLCAiZnN4IiwgImZzX2JpbmQiXQogICAgICMgc2tpcCBrZXJuZWwgY3B1aG90cGx1ZwogICAgIGx0cF9rZXJuZWwgPSBbInBvd2VyX21hbmFnZW1lbnRfdGVzdHMiLCAiaHlwZXJ0aHJlYWRpbmcgIiwgImtlcm5lbF9taXNjIiwgImh1Z2V0bGIiXQogICAgIGx0cF9ncm91cHMgKz0gbHRwX2ZzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQppbmRleCA3NTA3MDYxLi45Y2ZlZTFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkKQEAgLTI1LDcgKzI1LDkgQEAKICAgICAgICAgaWYgY2xzLnRjLnRkWyJNVUxUSUxJQl9WQVJJQU5UUyJdOgogICAgICAgICAgICAgYWxsYXJjaGZlZWQgPSBjbHMudGMudGRbIlRVTkVfUEtHQVJDSCJdCiAgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfSVBLJ10sIGFsbGFyY2hmZWVkKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwLCBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMC4wLjAuMCcsIHBvcnQ9Y2xzLnRjLnRhcmdldC5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCiAgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQppbmRleCAxNTM0M2Q3Li5hMTc5MWI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CkBAIC01NSwxMSArNTUsMTUgQEAKICAgICAiRmFpbGVkIHRvIHJlYWQgL3Zhci9saWIvbmZzL3N0YXRkL3N0YXRlOiBTdWNjZXNzIiwKICAgICAiZXJyb3IgcmV0cnkgdGltZS1vdXQgPSIsCiAgICAgImxvZ2luZDogY2Fubm90IHNldHVwIHN5c3RlbWQtbG9naW5kIGhlbHBlciAoLTYxKSwgdXNpbmcgbGVnYWN5IGZhbGxiYWNrIiwKLSAgICAiRXJyb3IgY2hhbmdpbmcgbmV0IGludGVyZmFjZSBuYW1lICdldGgwJyB0byAiCisgICAgIkZhaWxlZCB0byByZW5hbWUgbmV0d29yayBpbnRlcmZhY2UiLAorICAgICJGYWlsZWQgdG8gcHJvY2VzcyBkZXZpY2UsIGlnbm9yaW5nOiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeSIsCisgICAgIkNhbm5vdCBmaW5kIGEgbWFwIGZpbGUiLAorICAgICJbcmRyYW5kXTogSW5pdGlhbGl6YXRpb24gRmFpbGVkIiwKKyAgICAiW3B1bHNlYXVkaW9dIGF1dGhrZXkuYzogRmFpbGVkIHRvIG9wZW4gY29va2llIGZpbGUiLAorICAgICJbcHVsc2VhdWRpb10gYXV0aGtleS5jOiBGYWlsZWQgdG8gbG9hZCBhdXRoZW50aWNhdGlvbiBrZXkiLAogICAgIF0KIAogdmlkZW9fcmVsYXRlZCA9IFsKLSAgICAidXZlc2FmYiIsCiBdCiAKIHg4Nl9jb21tb24gPSBbCkBAIC04MSwxMSArODUsOCBAQAogICAgICJmYWlsIHRvIGFkZCBNTUNPTkZJRyBpbmZvcm1hdGlvbiwgY2FuJ3QgYWNjZXNzIGV4dGVuZGVkIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHVuZGVyIHRoaXMgYnJpZGdlLiIsCiAgICAgImNhbid0IGNsYWltIEJBUiAiLAogICAgICdhbWRfbmI6IENhbm5vdCBlbnVtZXJhdGUgQU1EIG5vcnRoYnJpZGdlcycsCi0gICAgJ3V2ZXNhZmI6IDUwMDAgbXMgdGFzayB0aW1lb3V0LCBpbmZpbml0ZWx5IHdhaXRpbmcnLAogICAgICd0c2M6IEhQRVQvUE1USU1FUiBjYWxpYnJhdGlvbiBmYWlsZWQnLAogICAgICJtb2Rlc2V0KDApOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgRFJJMiBleHRlbnNpb24iLAotICAgICJ1dmVzYWZiOiBjYW5ub3QgcmVzZXJ2ZSB2aWRlbyBtZW1vcnkgYXQiLAotICAgICJ1dmVzYWZiOiBwcm9iZSBvZiB1dmVzYWZiLjAgZmFpbGVkIHdpdGggZXJyb3IiLAogICAgICJnbGFtb3IgaW5pdGlhbGl6YXRpb24gZmFpbGVkIiwKIF0gKyBjb21tb25fZXJyb3JzCiAKQEAgLTEzMyw2ICsxMzQsNyBAQAogICAgICAgICAnKEVFKSBTZXJ2ZXIgdGVybWluYXRlZCB3aXRoIGVycm9yICgxKS4gQ2xvc2luZyBsb2cgZmlsZS4nLAogICAgICAgICAnZG1pOiBGaXJtd2FyZSByZWdpc3RyYXRpb24gZmFpbGVkLicsCiAgICAgICAgICdpcnE6IHR5cGUgbWlzbWF0Y2gsIGZhaWxlZCB0byBtYXAgaHdpcnEtMjcgZm9yIC9pbnRjJywKKyAgICAgICAgJ2xvZ2luZDogZmFpbGVkIHRvIGdldCBzZXNzaW9uIHNlYXQnLAogICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKICAgICAnaW50ZWwtY29yZTItMzInIDogWwogICAgICAgICAnQUNQSTogTm8gX0JRQyBtZXRob2QsIGNhbm5vdCBkZXRlcm1pbmUgaW5pdGlhbCBicmlnaHRuZXNzJywKQEAgLTE4NCwxMSArMTg2LDYgQEAKICAgICAgICAgJ0ZhaWxlZCB0byBtYWtlIEVHTCBjb250ZXh0IGN1cnJlbnQnLAogICAgICAgICAnZ2xhbW9yIGluaXRpYWxpemF0aW9uIGZhaWxlZCcsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAotICAgICdtcGM4MzE1ZS1yZGInIDogWwotICAgICAgICAnb2ZfaXJxX3BhcnNlX3BjaTogZmFpbGVkIHdpdGgnLAotICAgICAgICAnRmF0YWwgc2VydmVyIGVycm9yOicsCi0gICAgICAgICdTZXJ2ZXIgdGVybWluYXRlZCB3aXRoIGVycm9yJywKLSAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCiB9CiAKIGxvZ19sb2NhdGlvbnMgPSBbIi92YXIvbG9nLyIsIi92YXIvbG9nL2RtZXNnIiwgIi90bXAvZG1lc2dfb3V0cHV0LmxvZyJdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CmluZGV4IGQ4ZDFlMWIuLjk5YTQ0ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CkBAIC0yLDYgKzIsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAjCiAKK2ltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcHByaW50CiBpbXBvcnQgZGF0ZXRpbWUKQEAgLTE4LDcgKzE5LDIwIEBACiAgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQogICAgIEBPRUhhc1BhY2thZ2UoWydwdGVzdC1ydW5uZXInXSkKICAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCi0gICAgZGVmIHRlc3RfcHRlc3RydW5uZXIoc2VsZik6CisgICAgZGVmIHRlc3RfcHRlc3RydW5uZXJfZXhwZWN0ZmFpbChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYudGQuZ2V0KCdQVEVTVF9FWFBFQ1RfRkFJTFVSRScpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnQ2Fubm90IHJ1biBwdGVzdHMgd2l0aCBAZXhwZWN0ZWRGYWlsdXJlIGFzIHB0ZXN0cyBhcmUgcmVxdWlyZWQgdG8gcGFzcycpCisgICAgICAgIHNlbGYuZG9fcHRlc3RydW5uZXIoKQorCisgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3B0ZXN0JywgJ1Rlc3QgcmVxdWlyZXMgcHRlc3QgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTJykKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgQE9FSGFzUGFja2FnZShbJ3B0ZXN0LXJ1bm5lciddKQorICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyX2V4cGVjdHN1Y2Nlc3Moc2VsZik6CisgICAgICAgIGlmIHNlbGYudGQuZ2V0KCdQVEVTVF9FWFBFQ1RfRkFJTFVSRScpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnQ2Fubm90IHJ1biBwdGVzdHMgd2l0aG91dCBAZXhwZWN0ZWRGYWlsdXJlIGFzIHB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbCcpCisgICAgICAgIHNlbGYuZG9fcHRlc3RydW5uZXIoKQorCisgICAgZGVmIGRvX3B0ZXN0cnVubmVyKHNlbGYpOgogICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignd2hpY2ggcHRlc3QtcnVubmVyJywgMCkKICAgICAgICAgaWYgc3RhdHVzICE9IDA6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJObyAtcHRlc3QgcGFja2FnZXMgYXJlIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UiKQpAQCAtNjcsOCArODEsMTMgQEAKICAgICAgICAgICAgICAgICBleHRyYXNbdGVzdG5hbWVdID0geydzdGF0dXMnOiByZXN1bHR9CiAKICAgICAgICAgZmFpbGVkX3Rlc3RzID0ge30KKworICAgICAgICBmb3Igc2VjdGlvbiBpbiBzZWN0aW9uczoKKyAgICAgICAgICAgIGlmICdleGl0Y29kZScgaW4gc2VjdGlvbnNbc2VjdGlvbl0ua2V5cygpOgorICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0c1tzZWN0aW9uXSA9IHNlY3Rpb25zW3NlY3Rpb25dWyJsb2ciXQorCiAgICAgICAgIGZvciBzZWN0aW9uIGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBmYWlsZWRfdGVzdGNhc2VzID0gWyAiXyIuam9pbih0ZXN0LnRyYW5zbGF0ZSh0cmFucykuc3BsaXQoKSkgZm9yIHRlc3QgaW4gcmVzdWx0c1tzZWN0aW9uXSBpZiByZXN1bHRzW3NlY3Rpb25dW3Rlc3RdID09ICdmYWlsJyBdCisgICAgICAgICAgICBmYWlsZWRfdGVzdGNhc2VzID0gWyAiXyIuam9pbih0ZXN0LnRyYW5zbGF0ZSh0cmFucykuc3BsaXQoKSkgZm9yIHRlc3QgaW4gcmVzdWx0c1tzZWN0aW9uXSBpZiByZXN1bHRzW3NlY3Rpb25dW3Rlc3RdID09ICdGQUlMRUQnIF0KICAgICAgICAgICAgIGlmIGZhaWxlZF90ZXN0Y2FzZXM6CiAgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3RzW3NlY3Rpb25dID0gZmFpbGVkX3Rlc3RjYXNlcwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy93ZXN0b24ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy93ZXN0b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyOWVjYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3dlc3Rvbi5weQpAQCAtMCwwICsxLDY5IEBACisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyMKKworZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RmVhdHVyZQorZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKKworY2xhc3MgV2VzdG9uVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisgICAgd2VzdG9uX2xvZ19maWxlID0gJy90bXAvd2VzdG9uLmxvZycKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy50Yy50YXJnZXQucnVuKCdybSAlcycgJSBjbHMud2VzdG9uX2xvZ19maWxlKQorCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIEBPRUhhc1BhY2thZ2UoWyd3ZXN0b24nXSkKKyAgICBkZWYgdGVzdF93ZXN0b25fcnVubmluZyhzZWxmKToKKyAgICAgICAgY21kID0nJXMgfCBncmVwIFt3XWVzdG9uLWRlc2t0b3Atc2hlbGwnICUgc2VsZi50Yy50YXJnZXRfY21kc1sncHMnXQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCisgICAgICAgIG1zZyA9ICgnV2VzdG9uIGRvZXMgbm90IGFwcGVhciB0byBiZSBydW5uaW5nICVzJyAlCisgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bihzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddKVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCisKKyAgICBkZWYgZ2V0X3Byb2Nlc3Nlc19vZihzZWxmLCB0YXJnZXQsIGVycm9yX21zZyk6CisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdwaWRvZiAlcycgJSB0YXJnZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9J1JldHJpZXZlICVzICglcykgcHJvY2Vzc2VzIGVycm9yOiAlcycgJSAodGFyZ2V0LCBlcnJvcl9tc2csIG91dHB1dCkpCisgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXQoIiAiKQorCisgICAgZGVmIGdldF93ZXN0b25fY29tbWFuZChzZWxmLCBjbWQpOgorICAgICAgICByZXR1cm4gJ2V4cG9ydCBYREdfUlVOVElNRV9ESVI9L3J1bi91c2VyLzA7IGV4cG9ydCBXQVlMQU5EX0RJU1BMQVk9d2F5bGFuZC0wOyAlcycgJSBjbWQKKworICAgIGRlZiBydW5fd2VzdG9uX2luaXQoc2VsZik6CisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bihzZWxmLmdldF93ZXN0b25fY29tbWFuZCgnd2VzdG9uIC0tbG9nPSVzJyAlIHNlbGYud2VzdG9uX2xvZ19maWxlKSkKKworICAgIGRlZiBnZXRfbmV3X3dheWxhbmRfcHJvY2Vzc2VzKHNlbGYsIGV4aXN0aW5nX3dsX3Byb2Nlc3Nlcyk6CisgICAgICAgIHRyeV9jbnQgPSAwCisgICAgICAgIHdoaWxlIHRyeV9jbnQgPCA1OgorICAgICAgICAgICAgdGltZS5zbGVlcCg1ICsgNSp0cnlfY250KQorICAgICAgICAgICAgdHJ5X2NudCArPSAxCisgICAgICAgICAgICB3bF9wcm9jZXNzZXMgPSBzZWxmLmdldF9wcm9jZXNzZXNfb2YoJ3dlc3Rvbi1kZXNrdG9wLXNoZWxsJywgJ2V4aXN0aW5nIGFuZCBuZXcnKQorICAgICAgICAgICAgbmV3X3dsX3Byb2Nlc3NlcyA9IFt4IGZvciB4IGluIHdsX3Byb2Nlc3NlcyBpZiB4IG5vdCBpbiBleGlzdGluZ193bF9wcm9jZXNzZXNdCisgICAgICAgICAgICBpZiBuZXdfd2xfcHJvY2Vzc2VzOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXdfd2xfcHJvY2Vzc2VzLCB0cnlfY250CisKKyAgICAgICAgcmV0dXJuIG5ld193bF9wcm9jZXNzZXMsIHRyeV9jbnQKKworICAgIEBPRUhhc1BhY2thZ2UoWyd3ZXN0b24nXSkKKyAgICBkZWYgdGVzdF93ZXN0b25faW5mbyhzZWxmKToKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oc2VsZi5nZXRfd2VzdG9uX2NvbW1hbmQoJ3dlc3Rvbi1pbmZvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9J3dlc3Rvbi1pbmZvIGVycm9yOiAlcycgJSBvdXRwdXQpCisKKyAgICBAT0VIYXNQYWNrYWdlKFsnd2VzdG9uJ10pCisgICAgZGVmIHRlc3Rfd2VzdG9uX2Nhbl9pbml0aWFsaXplX25ld193YXlsYW5kX2NvbXBvc2l0b3Ioc2VsZik6CisgICAgICAgIGV4aXN0aW5nX3dsX3Byb2Nlc3NlcyA9IHNlbGYuZ2V0X3Byb2Nlc3Nlc19vZignd2VzdG9uLWRlc2t0b3Atc2hlbGwnLCAnZXhpc3RpbmcnKQorICAgICAgICBleGlzdGluZ193ZXN0b25fcHJvY2Vzc2VzID0gc2VsZi5nZXRfcHJvY2Vzc2VzX29mKCd3ZXN0b24nLCAnZXhpc3RpbmcnKQorCisgICAgICAgIHdlc3Rvbl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnJ1bl93ZXN0b25faW5pdCkKKyAgICAgICAgd2VzdG9uX3RocmVhZC5zdGFydCgpCisgICAgICAgIG5ld193bF9wcm9jZXNzZXMsIHRyeV9jbnQgPSBzZWxmLmdldF9uZXdfd2F5bGFuZF9wcm9jZXNzZXMoZXhpc3Rpbmdfd2xfcHJvY2Vzc2VzKQorICAgICAgICBleGlzdGluZ19hbmRfbmV3X3dlc3Rvbl9wcm9jZXNzZXMgPSBzZWxmLmdldF9wcm9jZXNzZXNfb2YoJ3dlc3RvbicsICdleGlzdGluZyBhbmQgbmV3JykKKyAgICAgICAgbmV3X3dlc3Rvbl9wcm9jZXNzZXMgPSBbeCBmb3IgeCBpbiBleGlzdGluZ19hbmRfbmV3X3dlc3Rvbl9wcm9jZXNzZXMgaWYgeCBub3QgaW4gZXhpc3Rpbmdfd2VzdG9uX3Byb2Nlc3Nlc10KKyAgICAgICAgZm9yIHcgaW4gbmV3X3dlc3Rvbl9wcm9jZXNzZXM6CisgICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2tpbGwgLTkgJXMnICUgdykKKyAgICAgICAgX18sIHdlc3Rvbl9sb2cgPSBzZWxmLnRhcmdldC5ydW4oJ2NhdCAlcycgJSBzZWxmLndlc3Rvbl9sb2dfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld193bF9wcm9jZXNzZXMsIG1zZz0nQ291bGQgbm90IGdldCBuZXcgd2VzdG9uLWRlc2t0b3Atc2hlbGwgcHJvY2Vzc2VzICglcywgdHJ5X2NudDolcykgd2VzdG9uIGxvZzogJXMnICUgKG5ld193bF9wcm9jZXNzZXMsIHRyeV9jbnQsIHdlc3Rvbl9sb2cpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKaW5kZXggZWY3MzhhMy4uMzgyNmYyNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgZGVmYXVsdF9kYXRhID0gTm9uZQogICAgIGRlZmF1bHRfdGVzdF9kYXRhID0gJ2RhdGEvdGVzdGRhdGEuanNvbicKICAgICBkZWZhdWx0X3Rlc3RzID0gJycKKyAgICBkZWZhdWx0X2pzb25fcmVzdWx0X2RpciA9ICclcy1yZXN1bHRzJyAlIG5hbWUKIAogICAgIGRlZmF1bHRfdGFyZ2V0X3R5cGUgPSAnc2ltcGxlcmVtb3RlJwogICAgIGRlZmF1bHRfbWFuaWZlc3QgPSAnZGF0YS9tYW5pZmVzdCcKQEAgLTc3LDcgKzc4LDcgQEAKIAogICAgICAgICBydW50aW1lX2dyb3VwLmFkZF9hcmd1bWVudCgnLS1wYWNrYWdlcy1tYW5pZmVzdCcsIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9c2VsZi5kZWZhdWx0X21hbmlmZXN0LAotICAgICAgICAgICAgICAgIGhlbHA9IlBhY2thZ2UgbWFuaWZlc3Qgb2YgdGhlIGltYWdlIHVuZGVyIHRlc3RpLCBkZWZhdWx0OiAlcyIgXAorICAgICAgICAgICAgICAgIGhlbHA9IlBhY2thZ2UgbWFuaWZlc3Qgb2YgdGhlIGltYWdlIHVuZGVyIHRlc3QsIGRlZmF1bHQ6ICVzIiBcCiAgICAgICAgICAgICAgICAgJSBzZWxmLmRlZmF1bHRfbWFuaWZlc3QpCiAKICAgICAgICAgcnVudGltZV9ncm91cC5hZGRfYXJndW1lbnQoJy0tZXh0cmFjdC1kaXInLCBhY3Rpb249J3N0b3JlJywKQEAgLTk4LDYgKzk5LDEyIEBACiAgICAgICAgICAgICAgICAgdGFyZ2V0X2lwID0gdGFyZ2V0X2lwX3BvcnRbMF0KICAgICAgICAgICAgICAgICBrd2FyZ3NbJ3BvcnQnXSA9IHRhcmdldF9pcF9wb3J0WzFdCiAKKyAgICAgICAgaWYgc2VydmVyX2lwOgorICAgICAgICAgICAgc2VydmVyX2lwX3BvcnQgPSBzZXJ2ZXJfaXAuc3BsaXQoJzonKQorICAgICAgICAgICAgaWYgbGVuKHNlcnZlcl9pcF9wb3J0KSA9PSAyOgorICAgICAgICAgICAgICAgIHNlcnZlcl9pcCA9IHNlcnZlcl9pcF9wb3J0WzBdCisgICAgICAgICAgICAgICAga3dhcmdzWydzZXJ2ZXJfcG9ydCddID0gaW50KHNlcnZlcl9pcF9wb3J0WzFdKQorCiAgICAgICAgIGlmIHRhcmdldF90eXBlID09ICdzaW1wbGVyZW1vdGUnOgogICAgICAgICAgICAgdGFyZ2V0ID0gT0VTU0hUYXJnZXQobG9nZ2VyLCB0YXJnZXRfaXAsIHNlcnZlcl9pcCwgKiprd2FyZ3MpCiAgICAgICAgIGVsaWYgdGFyZ2V0X3R5cGUgPT0gJ3FlbXUnOgpAQCAtMTc4LDcgKzE4NSw3IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIG9iaiA9IE5vbmUKICAgICAgICAgcmV0dXJuIG9iagotICAgICAgICAKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgcmVhZFBhY2thZ2VzTWFuaWZlc3QobWFuaWZlc3QpOgogICAgICAgICBpZiBub3QgbWFuaWZlc3Qgb3Igbm90IG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0KToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRjcGlvLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGNwaW8ucHkKaW5kZXggMGE1ZTY4ZC4uOTAyZTkzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGNwaW8ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGNwaW8ucHkKQEAgLTE3LDEwICsxNywxMCBAQAogICAgICIiIgogICAgIGRlZiB0ZXN0X2NwaW8oc2VsZik6CiAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0iY3Bpby0iLCBkaXI9c2VsZi50Yy5zZGtfZGlyKSBhcyB0ZXN0ZGlyOgotICAgICAgICAgICAgdGFyYmFsbCA9IHNlbGYuZmV0Y2godGVzdGRpciwgc2VsZi50ZFsiRExfRElSIl0sICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMi50YXIuZ3oiKQorICAgICAgICAgICAgdGFyYmFsbCA9IHNlbGYuZmV0Y2godGVzdGRpciwgc2VsZi50ZFsiRExfRElSIl0sICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMy50YXIuZ3oiKQogCiAgICAgICAgICAgICBkaXJzID0ge30KLSAgICAgICAgICAgIGRpcnNbInNvdXJjZSJdID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJjcGlvLTIuMTIiKQorICAgICAgICAgICAgZGlyc1sic291cmNlIl0gPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgImNwaW8tMi4xMyIpCiAgICAgICAgICAgICBkaXJzWyJidWlsZCJdID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJidWlsZCIpCiAgICAgICAgICAgICBkaXJzWyJpbnN0YWxsIl0gPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgImluc3RhbGwiKQogCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihkaXJzWyJzb3VyY2UiXSkpCiAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJzWyJidWlsZCJdKQogCi0gICAgICAgICAgICBzZWxmLl9ydW4oImNkIHtidWlsZH0gJiYge3NvdXJjZX0vY29uZmlndXJlICRDT05GSUdVUkVfRkxBR1MiLmZvcm1hdCgqKmRpcnMpKQorICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCB7YnVpbGR9ICYmIHtzb3VyY2V9L2NvbmZpZ3VyZSAtLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlICRDT05GSUdVUkVfRkxBR1MiLmZvcm1hdCgqKmRpcnMpKQogICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCB7YnVpbGR9ICYmIG1ha2UgLWoiLmZvcm1hdCgqKmRpcnMpKQogICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCB7YnVpbGR9ICYmIG1ha2UgaW5zdGFsbCBERVNURElSPXtpbnN0YWxsfSIuZm9ybWF0KCoqZGlycykpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQppbmRleCAwOWU3N2MxLi4wMWMzOGMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgc2RrX2VudnMgPSBPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IuX2dldF9zZGtfZW52aXJvbnMoYXJncy5zZGtfZGlyKQogICAgICAgICBpZiBub3Qgc2RrX2VudnM6CiAgICAgICAgICAgICByYWlzZSBhcmdwYXJzZV9vZS5Bcmd1bWVudFVzYWdlRXJyb3IoIk5vIGF2YWlsYWJsZSBTREsgIlwKLSAgICAgICAgICAgICAgICAgICAiZW52aXJvbWVudHMgZm91bmQgYXQgJXMiICUgYXJncy5zZGtfZGlyLCBzZWxmLm5hbWUpCisgICAgICAgICAgICAgICAgICAgImVudmlyb25tZW50cyBmb3VuZCBhdCAlcyIgJSBhcmdzLnNka19kaXIsIHNlbGYubmFtZSkKIAogICAgICAgICBpZiBhcmdzLmxpc3Rfc2RrX2VudjoKICAgICAgICAgICAgIHNlbGYuX2Rpc3BsYXlfc2RrX2VudnMobG9nZ2VyLmluZm8sIGFyZ3MsIHNka19lbnZzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC90ZXN0c2RrLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC90ZXN0c2RrLnB5CmluZGV4IDc4NWI1ZGQuLmM1YzQ2ZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvdGVzdHNkay5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L3Rlc3RzZGsucHkKQEAgLTI1LDExICsyNSw4IEBACiAKICAgICAgICAgc3VicHJvY2Vzc3R3ZWFrLmVycm9yc19oYXZlX291dHB1dCgpCiAKLSAgICAgICAgIyBleHRlbnNpYmxlIHNkayBjYW4gYmUgY29udGFtaW5hdGVkIGlmIG5hdGl2ZSBwcm9ncmFtcyBhcmUKLSAgICAgICAgIyBpbiBQQVRILCBpLmUuIHVzZSBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mIGVTREsgb25lLgotICAgICAgICBwYXRoc190b19hdm9pZCA9IFtkLmdldFZhcignU1RBR0lOR19ESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdCQVNFX1dPUktESVInKV0KLSAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gYXZvaWRfcGF0aHNfaW5fZW52aXJvbihwYXRoc190b19hdm9pZCkKKyAgICAgICAgIyBXZSBuZWVkIHRoZSBvcmlnaW5hbCBQQVRIIGZvciB0ZXN0aW5nIHRoZSBlU0RLLCBub3Qgd2l0aCBvdXIgbWFuaXB1bGF0aW9ucworICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBkLmdldFZhcigiQkJfT1JJR0VOViIsIEZhbHNlKS5nZXRWYXIoIlBBVEgiKQogCiAgICAgICAgIHRjbmFtZSA9IGQuZXhwYW5kKCIke1NES19ERVBMT1l9LyR7VE9PTENIQUlORVhUX09VVFBVVE5BTUV9LnNoIikKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRjbmFtZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5CmluZGV4IGFjMzMwOGQuLmRjYWQ0ZjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5CkBAIC02LDcgKzYsNiBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBnbG9iCiBpbXBvcnQgZXJybm8KIGZyb20gdW5pdHRlc3QudXRpbCBpbXBvcnQgc2FmZV9yZXByCkBAIC0zMCw5ICsyOSw3IEBACiAgICAgICAgIGNscy5idWlsZGRpciA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2J1aWxkZGlyJ10KIAogICAgICAgICBjbHMubG9jYWxjb25mX3BhdGggPSBjbHMudGMuY29uZmlnX3BhdGhzWydsb2NhbGNvbmYnXQotICAgICAgICBjbHMubG9jYWxjb25mX2JhY2t1cCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXQogICAgICAgICBjbHMubG9jYWxfYmJsYXllcnNfcGF0aCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2JibGF5ZXJzJ10KLSAgICAgICAgY2xzLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddCiAKICAgICAgICAgY2xzLnRlc3RpbmNfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGMuY29uZmlnX3BhdGhzWydidWlsZGRpciddLAogICAgICAgICAgICAgICAgICJjb25mL3NlbGZ0ZXN0LmluYyIpCkBAIC00Myw4ICs0MCw3IEBACiAKICAgICAgICAgY2xzLl90cmFja19mb3JfY2xlYW51cCA9IFsKICAgICAgICAgICAgIGNscy50ZXN0aW5jX3BhdGgsIGNscy50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsCi0gICAgICAgICAgICBjbHMubWFjaGluZWluY19wYXRoLCBjbHMubG9jYWxjb25mX2JhY2t1cCwKLSAgICAgICAgICAgIGNscy5sb2NhbF9iYmxheWVyc19iYWNrdXBdCisgICAgICAgICAgICBjbHMubWFjaGluZWluY19wYXRoXQogCiAgICAgICAgIGNscy5hZGRfaW5jbHVkZSgpCiAKQEAgLTEwMiwzMCArOTgsNiBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIG9zLmNoZGlyKHNlbGYuYnVpbGRkaXIpCi0gICAgICAgICMgQ2hlY2sgaWYgbG9jYWwuY29uZiBvciBiYmxheWVycy5jb25mIGZpbGVzIGJhY2t1cCBleGlzdHMKLSAgICAgICAgIyBmcm9tIGEgcHJldmlvdXMgZmFpbGVkIHRlc3QgYW5kIHJlc3RvcmUgdGhlbQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXApIG9yIG9zLnBhdGguaXNmaWxlKAotICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJcCi1Gb3VuZCBhIGxvY2FsLmNvbmYgYW5kL29yIGJibGF5ZXJzLmNvbmYgYmFja3VwIGZyb20gYSBwcmV2aW91c2x5IGFib3J0ZWQgdGVzdC5cCi1SZXN0b3JpbmcgdGhlc2UgZmlsZXMgbm93LCBidXQgdGVzdHMgc2hvdWxkIGJlIHJlLWV4ZWN1dGVkIGZyb20gYSBjbGVhbiBlbnZpcm9ubWVudFwKLXRvIGVuc3VyZSBhY2N1cmF0ZSByZXN1bHRzLiIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCwgc2VsZi5sb2NhbGNvbmZfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBiYWNrdXAgbG9jYWwuY29uZiBhbmQgYmJsYXllcnMuY29uZgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX3BhdGgsIHNlbGYubG9jYWxjb25mX2JhY2t1cCkKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgsIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKQotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNyZWF0aW5nIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYgYmFja3Vwcy4iKQogICAgICAgICAjIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcHJldmlvdXMgdGVzdCBsZWZ0IGFyb3VuZCBpbiBjb25maWcgb3IgaW5jIGZpbGVzCiAgICAgICAgICMgaWYgaXQgZmFpbGVkIHNvIHdlIG5lZWQgYSBmcmVzaCBzdGFydAogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkKaW5kZXggZjg2NzJmOC4uNjA2ZWFhYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQpAQCAtMTI5LDMgKzEyOSwxMjggQEAKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCiAKICAgICAgICAgYml0YmFrZSgnLW4gY29yZS1pbWFnZS1zYXRvJykKKworICAgIGRlZiBfdGVzdF9hcmNoaXZlcl9tb2RlKHNlbGYsIG1vZGUsIHRhcmdldF9maWxlX25hbWUsIGV4dHJhX2NvbmZpZz1Ob25lKToKKyAgICAgICAgdGFyZ2V0ID0gInNlbGZ0ZXN0LWVkIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAgJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICIlcyJcbicgJSAobW9kZSkKKyAgICAgICAgaWYgZXh0cmFfY29uZmlnOgorICAgICAgICAgICAgZmVhdHVyZXMgKz0gZXh0cmFfY29uZmlnCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlICh0YXJnZXQpKQorICAgICAgICBiaXRiYWtlKCctYyBkZXBsb3lfYXJjaGl2ZXMgJXMnICUgKHRhcmdldCkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUyddKQorICAgICAgICBnbG9iX3N0ciA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10sICclcy0qJyAlICh0YXJnZXQpKQorICAgICAgICBnbG9iX3Jlc3VsdCA9IGdsb2IuZ2xvYihnbG9iX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdsb2JfcmVzdWx0LCAnTWlzc2luZyBhcmNoaXZlciBkaXJlY3RvcnkgZm9yICVzJyAlICh0YXJnZXQpKQorCisgICAgICAgIGFyY2hpdmVfcGF0aCA9IG9zLnBhdGguam9pbihnbG9iX3Jlc3VsdFswXSwgdGFyZ2V0X2ZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGFyY2hpdmVfcGF0aCksICdNaXNzaW5nIGFyY2hpdmUgZmlsZSAlcycgJSAodGFyZ2V0X2ZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX29yaWdpbmFsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdvcmlnaW5hbCcsICdlZC0xLjE0LjEudGFyLmx6JykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfcGF0Y2hlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtzcmNdID0gInBhdGNoZWQiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdwYXRjaGVkJywgJ3NlbGZ0ZXN0LWVkLTEuMTQuMS1yMC1wYXRjaGVkLnRhci5neicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX2NvbmZpZ3VyZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJjb25maWd1cmVkImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgnY29uZmlndXJlZCcsICdzZWxmdGVzdC1lZC0xLjE0LjEtcjAtY29uZmlndXJlZC50YXIuZ3onKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9yZWNpcGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbcmVjaXBlXSA9ICIxImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgncGF0Y2hlZCcsICdzZWxmdGVzdC1lZC0xLjE0LjEtcjAtcmVjaXBlLnRhci5neicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQVJDSElWRVJfTU9ERVtyZWNpcGVdID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9kaWZmKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW2RpZmZdID0gIjEiYC4KKyAgICAgICAgRXhjbHVzaW9ucyBjb250cm9sbGVkIGJ5IGBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV1gIGFyZSBub3QgeWV0IHRlc3RlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdwYXRjaGVkJywgJ3NlbGZ0ZXN0LWVkLTEuMTQuMS1yMC1kaWZmLmd6JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBUkNISVZFUl9NT0RFW2RpZmZdID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9kdW1wZGF0YShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtkdW1wZGF0YV0gPSAiMSJgLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ3BhdGNoZWQnLCAnc2VsZnRlc3QtZWQtMS4xNC4xLXIwLXNob3dkYXRhLmR1bXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FSQ0hJVkVSX01PREVbZHVtcGRhdGFdID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9taXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdtaXJyb3InLCAnZWQtMS4xNC4xLnRhci5seicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9taXJyb3JfZXhjbHVkZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiYCBhbmQKKyAgICAgICAgY29ycmVjdGx5IGV4Y2x1ZGVzIGFuIGFyY2hpdmUgd2hlbiBpdHMgVVJMIG1hdGNoZXMKKyAgICAgICAgYEFSQ0hJVkVSX01JUlJPUl9FWENMVURFYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGFyZ2V0PSdzZWxmdGVzdC1lZCcKKyAgICAgICAgdGFyZ2V0X2ZpbGVfbmFtZSA9ICdlZC0xLjE0LjEudGFyLmx6JworCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0JCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyA9ICIxIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTUlSUk9SX0VYQ0xVREUgPSAiJHtHTlVfTUlSUk9SfSJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgKHRhcmdldCkpCisgICAgICAgIGJpdGJha2UoJy1jIGRlcGxveV9hcmNoaXZlcyAlcycgJSAodGFyZ2V0KSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJ10pCisgICAgICAgIGdsb2Jfc3RyID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSwgJyVzLSonICUgKHRhcmdldCkpCisgICAgICAgIGdsb2JfcmVzdWx0ID0gZ2xvYi5nbG9iKGdsb2Jfc3RyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2xvYl9yZXN1bHQsICdNaXNzaW5nIGFyY2hpdmVyIGRpcmVjdG9yeSBmb3IgJXMnICUgKHRhcmdldCkpCisKKyAgICAgICAgYXJjaGl2ZV9wYXRoID0gb3MucGF0aC5qb2luKGdsb2JfcmVzdWx0WzBdLCB0YXJnZXRfZmlsZV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGFyY2hpdmVfcGF0aCksICdGYWlsZWQgdG8gZXhjbHVkZSBhcmNoaXZlIGZpbGUgJXMnICUgKHRhcmdldF9maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9taXJyb3JfY29tYmluZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiYAorICAgICAgICBhbmQgYEFSQ0hJVkVSX01PREVbbWlycm9yXSA9ICJjb21iaW5lZCJgLiBBcmNoaXZlcyBmb3IgbXVsdGlwbGUgcmVjaXBlcworICAgICAgICBzaG91bGQgYWxsIGVuZCB1cCBpbiB0aGUgJ21pcnJvcicgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW21pcnJvcl0gPSAiY29tYmluZWQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMgPSAiMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX0xJQ0VOU0VfSU5DTFVERSA9ICIqIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBmb3IgdGFyZ2V0IGluIFsnc2VsZnRlc3QtZWQnLCAnc2VsZnRlc3QtaGFyZGxpbmsnXToKKyAgICAgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlICh0YXJnZXQpKQorICAgICAgICAgICAgYml0YmFrZSgnLWMgZGVwbG95X2FyY2hpdmVzICVzJyAlICh0YXJnZXQpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJ10pCisgICAgICAgIGZvciB0YXJnZXRfZmlsZV9uYW1lIGluIFsnZWQtMS4xNC4xLnRhci5seicsICdoZWxsby5jJ106CisgICAgICAgICAgICBnbG9iX3N0ciA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCAnbWlycm9yJywgdGFyZ2V0X2ZpbGVfbmFtZSkKKyAgICAgICAgICAgIGdsb2JfcmVzdWx0ID0gZ2xvYi5nbG9iKGdsb2Jfc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdsb2JfcmVzdWx0LCAnTWlzc2luZyBhcmNoaXZlIGZpbGUgJXMnICUgKHRhcmdldF9maWxlX25hbWUpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQppbmRleCA1N2U2NjYyLi41ODg2ODYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQpAQCAtNTExLDYgKzUxMSwyNiBAQAogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHRlc3R2ZXIsICcke1BWfScpCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCiAKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9ucG0oc2VsZik6CisgICAgICAgIHBuID0gJ3Nhdm9pcmZhaXJlbGludXgtbm9kZS1zZXJ2ZXItZXhhbXBsZScKKyAgICAgICAgcHYgPSAnMS4wLjAnCisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249JyArIHB2CisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHBuKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkIFwnJXNcJycgJSB1cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBwbiwgJyVzXyVzLmJiJyAlIChwbiwgcHYpKSwgJ1JlY2lwZSBub3QgY3JlYXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBwbiwgcG4sICducG0tc2hyaW5rd3JhcC5qc29uJyksICdTaHJpbmt3cmFwIG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHBuLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlIChoYXZlIHRvIGRvIHRoaXMgKmFmdGVyKiBkZXZ0b29sIGFkZCBzaW5jZSB0aGUgcmVjaXBlIG9ubHkgZXhpc3RzIHRoZW4pCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuc3N0YXRlJyAlIHBuKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBidWlsZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgcG4pCisKIGNsYXNzIERldnRvb2xNb2RpZnlUZXN0cyhEZXZ0b29sQmFzZSk6CiAKICAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeShzZWxmKToKQEAgLTE3MjEsNyArMTc0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUga2VybmVsLgogICAgICAgICAgIiIiCiAgICAgICAgIGtlcm5lbF9wcm92aWRlciA9IGdldF9iYl92YXIoJ1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCcpCi0gICAgICAgICMgQ2xlYW4gdXAgdGhlIGVudmlyb21lbnQKKyAgICAgICAgIyBDbGVhbiB1cCB0aGUgZW52aXJvbm1lbnQKICAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUga2VybmVsX3Byb3ZpZGVyKQogICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCiAgICAgICAgIHRlbXBkaXJfY2ZnID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2NvbmZpZ19xYScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CmluZGV4IDY4YmE1NTYuLmUxY2ZjM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CkBAIC00Miw4ICs0Miw5IEBACiAKICAgICBkZWYgdGVzdF9tYWludGFpbmVycyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgb2UtY29yZSByZWNpcGVzIGhhdmUgYSBtYWludGFpbmVyCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgb2UtY29yZSByZWNpcGVzIGhhdmUgYSBtYWludGFpbmVyIGFuZCBlbnRyaWVzIGluIG1haW50YWluZXJzIGxpc3QgaGF2ZSBhIHJlY2lwZQogICAgICAgICBFeHBlY3RlZDogICAgQWxsIG9lLWNvcmUgcmVjaXBlcyAoZXhjZXB0IGEgZmV3IHNwZWNpYWwgc3RhdGljL3Rlc3Rpbmcgb25lcykgc2hvdWxkIGhhdmUgYSBtYWludGFpbmVyIGxpc3RlZCBpbiBtYWludGFpbmVycy5pbmMgZmlsZS4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgIEFsbCBlbnRyaWVzIGluIG1haW50YWluZXJzIGxpc3Qgc2hvdWxkIGhhdmUgYSByZWNpcGUgZmlsZSB0aGF0IG1hdGNoZXMgdGhlbQogICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQogICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgICIiIgpAQCAtNTQsNyArNTUsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICBmZWF0dXJlID0gJ3JlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmNcbicKKyAgICAgICAgZGVmIGlzX21haW50YWluZXJfZXhjZXB0aW9uKGVudHJ5KToKKyAgICAgICAgICAgIGV4Y2VwdGlvbnMgPSBbIm11c2wiLCAibmV3bGliIiwgImxpbnV4LXlvY3RvIiwgImxpbnV4LWR1bW15IiwgIm1lc2EtZ2wiLCAibGliZ2ZvcnRyYW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY3ZlLXVwZGF0ZS1kYi1uYXRpdmUiXQorICAgICAgICAgICAgZm9yIGkgaW4gZXhjZXB0aW9uczoKKyAgICAgICAgICAgICAgICAgaWYgaSBpbiBlbnRyeToKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBmZWF0dXJlID0gJ3JlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmNcbkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUICs9ICIgY29tbWVyY2lhbCJcblBBUlNFX0FMTF9SRUNJUEVTID0gIjEiXG4nCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCiAKICAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgpAQCAtNjIsNiArNzEsMTEgQEAKIAogICAgICAgICAgICAgd2l0aF9tYWludGFpbmVyX2xpc3QgPSBbXQogICAgICAgICAgICAgbm9fbWFpbnRhaW5lcl9saXN0ID0gW10KKworICAgICAgICAgICAgbWlzc2luZ19yZWNpcGVzID0gW10KKyAgICAgICAgICAgIHJlY2lwZXMgPSBbXQorICAgICAgICAgICAgcHJlZml4ID0gIlJFQ0lQRV9NQUlOVEFJTkVSX3BuLSIKKwogICAgICAgICAgICAgIyBXZSBjb3VsZCBoYXZlIHVzZWQgYWxsX3JlY2lwZXMoKSBoZXJlLCBidXQgdGhpcyBtZXRob2Qgd2lsbCBmaW5kCiAgICAgICAgICAgICAjIGV2ZXJ5IHJlY2lwZSBpZiB3ZSBldmVyIG1vdmUgdG8gc2V0dGluZyBSRUNJUEVfTUFJTlRBSU5FUiBpbiByZWNpcGUgZmlsZXMKICAgICAgICAgICAgICMgaW5zdGVhZCBvZiBtYWludGFpbmVycy5pbmMKQEAgLTcxLDYgKzg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoZm4sIGFwcGVuZHM9RmFsc2UpCiAgICAgICAgICAgICAgICAgcG4gPSByZC5nZXRWYXIoJ1BOJykKKyAgICAgICAgICAgICAgICByZWNpcGVzLmFwcGVuZChwbikKICAgICAgICAgICAgICAgICBpZiBpc19leGNlcHRpb24ocG4pOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIHJkLmdldFZhcignUkVDSVBFX01BSU5UQUlORVInKToKQEAgLTc4LDYgKzkzLDE1IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbm9fbWFpbnRhaW5lcl9saXN0LmFwcGVuZCgocG4sIGZuKSkKIAorICAgICAgICAgICAgbWFpbnRhaW5lcnMgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmtleXMoKQorICAgICAgICAgICAgZm9yIGtleSBpbiBtYWludGFpbmVyczoKKyAgICAgICAgICAgICAgICAgaWYga2V5LnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZXhwYW5kKGtleVtsZW4ocHJlZml4KTpdKQorICAgICAgICAgICAgICAgICAgICAgaWYgaXNfbWFpbnRhaW5lcl9leGNlcHRpb24ocmVjaXBlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgaWYgcmVjaXBlIG5vdCBpbiByZWNpcGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmdfcmVjaXBlcy5hcHBlbmQocmVjaXBlKQorCiAgICAgICAgIGlmIG5vX21haW50YWluZXJfbGlzdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiIiIKIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBkbyBub3QgaGF2ZSBhIG1haW50YWluZXIgYXNzaWduZWQgdG8gdGhlbS4gUGxlYXNlIGFkZCBhbiBlbnRyeSB0byBtZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGZpbGUuCkBAIC04NywzICsxMTEsOCBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCIiIgogVGhlIGxpc3Qgb2Ygb2UtY29yZSByZWNpcGVzIHdpdGggbWFpbnRhaW5lcnMgaXMgZW1wdHkuIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIHRlc3QgaGFzIHJlZ3Jlc3NlZCBhbmQgbmVlZHMgZml4aW5nLgogIiIiKQorCisgICAgICAgIGlmIG1pc3NpbmdfcmVjaXBlczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiIiCitVbmFibGUgdG8gZmluZCByZWNpcGVzIGZvciB0aGUgZm9sbG93aW5nIGVudHJpZXMgaW4gbWFpbnRhaW5lcnMuaW5jOgorIiIiICsgIlxuIi5qb2luKFsnJXMnICUgaSBmb3IgaSBpbiBtaXNzaW5nX3JlY2lwZXNdKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nY2MucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5CmluZGV4IDVhOTE3YjkuLjNlZmUxNTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nY2MucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2djYy5weQpAQCAtMjEsOCArMjEsMTAgQEAKICAgICBkZWYgcnVuX2NoZWNrKHNlbGYsICpzdWl0ZXMsIHNzaCA9IE5vbmUpOgogICAgICAgICB0YXJnZXRzID0gc2V0KCkKICAgICAgICAgZm9yIHMgaW4gc3VpdGVzOgotICAgICAgICAgICAgaWYgcyBpbiBbImdjYyIsICJnKysiXToKLSAgICAgICAgICAgICAgICB0YXJnZXRzLmFkZCgiY2hlY2stZ2NjIikKKyAgICAgICAgICAgIGlmIHMgPT0gImdjYyI6CisgICAgICAgICAgICAgICAgdGFyZ2V0cy5hZGQoImNoZWNrLWdjYy1jIikKKyAgICAgICAgICAgIGVsaWYgcyA9PSAiZysrIjoKKyAgICAgICAgICAgICAgICB0YXJnZXRzLmFkZCgiY2hlY2stZ2NjLWMrKyIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRhcmdldHMuYWRkKCJjaGVjay10YXJnZXQte30iLmZvcm1hdChzKSkKIApAQCAtNzcsNyArNzksMTIgQEAKIEBPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKIGNsYXNzIEdjY0Nyb3NzU2VsZlRlc3QoR2NjU2VsZlRlc3RCYXNlKToKICAgICBkZWYgdGVzdF9jcm9zc19nY2Moc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX2NoZWNrKCJnY2MiLCAiZysrIikKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImdjYyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKK2NsYXNzIEd4eENyb3NzU2VsZlRlc3QoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9jcm9zc19neHgoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrKCJnKysiKQogCiBAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCiBjbGFzcyBHY2NMaWJBdG9taWNTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgpAQCAtMTA5LDcgKzExNiwxMiBAQAogQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCiBjbGFzcyBHY2NDcm9zc1NlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2NjU2VsZlRlc3RCYXNlKToKICAgICBkZWYgdGVzdF9jcm9zc19nY2Moc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJnY2MiLCAiZysrIikKKyAgICAgICAgc2VsZi5ydW5fY2hlY2tfZW11bGF0ZWQoImdjYyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQorY2xhc3MgR3h4Q3Jvc3NTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfY3Jvc3NfZ3h4KHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgiZysrIikKIAogQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCiBjbGFzcyBHY2NMaWJBdG9taWNTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CmluZGV4IGVmMmVlZmEuLjVjNTE5YWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CkBAIC0yMDgsMTMgKzIwOCwxMyBAQAogICAgICAgICAiIiIKICAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCiAKLSAgICAgICAgaW1nX3R5cGVzID0gW2l0eXBlIGZvciBpdHlwZSBpbiBnZXRfYmJfdmFyKCJJTUFHRV9UWVBFUyIsIGltYWdlX25hbWUpLnNwbGl0KCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0eXBlIG5vdCBpbiAoJ2NvbnRhaW5lcicsICdlbGYnLCAnZjJmcycsICdtdWx0aXViaScpXQorICAgICAgICBhbGxfaW1hZ2VfdHlwZXMgPSBzZXQoZ2V0X2JiX3ZhcigiSU1BR0VfVFlQRVMiLCBpbWFnZV9uYW1lKS5zcGxpdCgpKQorICAgICAgICBibGFja2xpc3QgPSBzZXQoKCdjb250YWluZXInLCAnZWxmJywgJ2YyZnMnLCAnbXVsdGl1YmknLCAndGFyLnpzdCcpKQorICAgICAgICBpbWdfdHlwZXMgPSBhbGxfaW1hZ2VfdHlwZXMgLSBibGFja2xpc3QKIAogICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAiJXMiXG4nXAogICAgICAgICAgICAgICAgICAnTUtVQklGU19BUkdTID89ICItbSAyMDQ4IC1lIDEyOTAyNCAtYyAyMDQ3IlxuJ1wKICAgICAgICAgICAgICAgICAgJ1VCSU5JWkVfQVJHUyA/PSAiLW0gMjA0OCAtcCAxMjhLaUIgLXMgNTEyIicgJSAnICcuam9pbihpbWdfdHlwZXMpCi0KICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnKQogCiAgICAgICAgIGJpdGJha2UoaW1hZ2VfbmFtZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbmNvbXBhdGlibGVfbGljLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2luY29tcGF0aWJsZV9saWMucHkKaW5kZXggOTA0YjViNC4uM2VhYmQ3OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2luY29tcGF0aWJsZV9saWMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2luY29tcGF0aWJsZV9saWMucHkKQEAgLTQsNyArNCw3IEBACiBjbGFzcyBJbmNvbXBhdGlibGVMaWNlbnNlVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKIAogICAgIGRlZiBsaWNfdGVzdChzZWxmLCBwbiwgcG5fbGljLCBsaWMpOgotICAgICAgICBlcnJvcl9tc2cgPSAnRVJST1I6IE5vdGhpbmcgUFJPVklERVMgXCclc1wnXG4lcyB3YXMgc2tpcHBlZDogaXQgaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlOiAlcycgJSAocG4sIHBuLCBwbl9saWMpCisgICAgICAgIGVycm9yX21zZyA9ICdFUlJPUjogTm90aGluZyBQUk9WSURFUyBcJyVzXCdcbiVzIHdhcyBza2lwcGVkOiBpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzJyAlIChwbiwgcG4sIHBuX2xpYykKIAogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5DT01QQVRJQkxFX0xJQ0VOU0UgKz0gXCIlc1wiIiAlIChsaWMpKQogCkBAIC0xMiwzMCArMTIsNzIgQEAKICAgICAgICAgaWYgZXJyb3JfbXNnIG5vdCBpbiByZXN1bHQub3V0cHV0OgogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IocmVzdWx0Lm91dHB1dCkKIAotICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIFNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTKQorICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIEFWQUlMQUJMRV9MSUNFTlNFUykKICAgICAjIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIHRoaXMgU1BEWCBsaWNlbnNlCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZShzZWxmKToKICAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UnLCAnR1BMLTMuMCcsICdHUEwtMy4wJykKIAotICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIFNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTKQorICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIEFWQUlMQUJMRV9MSUNFTlNFUykKICAgICAjIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGFuIGFsaWFzIChpbgogICAgICMgU1BEWExJQ0VOU0VNQVApIG9mIHRoaXMgU1BEWCBsaWNlbnNlCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX2FsaWFzX3NwZHhfbGljZW5zZShzZWxmKToKICAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UnLCAnR1BMLTMuMCcsICdHUEx2MycpCiAKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIFNQRFggbGljZW5zZSAoZnJvbSBBVkFJTEFCTEVfTElDRU5TRVMpCisgICAgIyBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhIHdpbGRjYXJkZWQgbGljZW5zZQorICAgICMgbWF0Y2hpbmcgdGhpcyBTUERYIGxpY2Vuc2UKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZScsICdHUEwtMy4wJywgJypHUEwtMy4wJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIEFWQUlMQUJMRV9MSUNFTlNFUykKKyAgICAjIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEgd2lsZGNhcmRlZCBhbGlhcworICAgICMgbGljZW5zZSBtYXRjaGluZyB0aGlzIFNQRFggbGljZW5zZQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9hbGlhc19zcGR4X2xpY2Vuc2Vfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlJywgJ0dQTC0zLjAnLCAnKkdQTHYzJykKKwogICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gYWxpYXMgKGZyb20gU1BEWExJQ0VOU0VNQVApIHRvIGFuIFNQRFgKICAgICAjIGxpY2Vuc2UgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgdGhpcyBTUERYCiAgICAgIyBsaWNlbnNlCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZV9hbGlhcyhzZWxmKToKLSAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UtYWxpYXMnLCAnR1BMdjMnLCAnR1BMLTMuMCcpCisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTC0zLjAnLCAnR1BMLTMuMCcpCiAKICAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIGFsaWFzIChmcm9tIFNQRFhMSUNFTlNFTUFQKSB0byBhbiBTUERYCiAgICAgIyBsaWNlbnNlIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIHRoaXMgYWxpYXMKICAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfYWxpYXNfc3BkeF9saWNlbnNlX2FsaWFzKHNlbGYpOgotICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEx2MycsICdHUEx2MycpCisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTC0zLjAnLCAnR1BMdjMnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBhbGlhcyAoZnJvbSBTUERYTElDRU5TRU1BUCkgdG8gYW4gU1BEWAorICAgICMgbGljZW5zZSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhIHdpbGRjYXJkZWQKKyAgICAjIGxpY2Vuc2UgbWF0Y2hpbmcgdGhpcyBTUERYIGxpY2Vuc2UKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlX2FsaWFzX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEwtMy4wJywgJypHUEwtMy4wJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gYWxpYXMgKGZyb20gU1BEWExJQ0VOU0VNQVApIHRvIGFuIFNQRFgKKyAgICAjIGxpY2Vuc2UgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYSB3aWxkY2FyZGVkCisgICAgIyBhbGlhcyBsaWNlbnNlIG1hdGNoaW5nIHRoZSBTUERYIGxpY2Vuc2UKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfYWxpYXNfc3BkeF9saWNlbnNlX2FsaWFzX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEwtMy4wJywgJypHUEx2MycpCisKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMgKGZyb20KKyAgICAjIEFWQUlMQUJMRV9MSUNFTlNFUykgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMKKyAgICAjIHNvbWUgb2YgdGhlbQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9zcGR4X2xpY2Vuc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZXMnLCAnR1BMLTMuMCBMR1BMLTMuMCcsICdHUEwtMy4wIExHUEwtMy4wJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggbXVsdGlwbGUgU1BEWCBsaWNlbnNlcyAoZnJvbQorICAgICMgQVZBSUxBQkxFX0xJQ0VOU0VTKSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhCisgICAgIyB3aWxkY2FyZCB0byBzb21lIG9mIHRoZW0KKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlc193aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2VzJywgJ0dQTC0zLjAgTEdQTC0zLjAnLCAnKkdQTC0zLjAnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBtdWx0aXBsZSBTUERYIGxpY2Vuc2VzIChmcm9tCisgICAgIyBBVkFJTEFCTEVfTElDRU5TRVMpIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEKKyAgICAjIHdpbGRjYXJkIG1hdGNoaW5nIGFsbCBsaWNlbnNlcworICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9hbGxfbGljZW5zZXNfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlcycsICdHUEwtMi4wIEdQTC0zLjAgTEdQTC0zLjAnLCAnKicpCiAKICAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGEgbm9uLVNQRFggbGljZW5zZSAobmVpdGhlciBpbgotICAgICMgU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgbm9yIGluIFNQRFhMSUNFTlNFTUFQKSBjYW5ub3QgYmUgYnVpbHQgd2hlbgorICAgICMgQVZBSUxBQkxFX0xJQ0VOU0VTIG5vciBpbiBTUERYTElDRU5TRU1BUCkgY2Fubm90IGJlIGJ1aWx0IHdoZW4KICAgICAjIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIHRoaXMgbGljZW5zZQogICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9ub25zcGR4X2xpY2Vuc2Uoc2VsZik6CiAgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1ub25zcGR4LWxpY2Vuc2UnLCAnRm9vTGljZW5zZScsICdGb29MaWNlbnNlJykKQEAgLTQ5LDcgKzkxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2Jhc2hfZGVmYXVsdChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoc2VsZi5kZWZhdWx0X2NvbmZpZygpKQotICAgICAgICBlcnJvcl9tc2cgPSAiRVJST1I6IGNvcmUtaW1hZ2UtbWluaW1hbC0xLjAtcjAgZG9fcm9vdGZzOiBQYWNrYWdlIGJhc2ggaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlIEdQTHYzKyBhbmQgY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4iCisgICAgICAgIGVycm9yX21zZyA9ICJFUlJPUjogY29yZS1pbWFnZS1taW5pbWFsLTEuMC1yMCBkb19yb290ZnM6IFBhY2thZ2UgYmFzaCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlIGJlY2F1c2UgaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiBHUEwtMy4wKyIKIAogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKQEAgLTU3LDcgKzk5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Jhc2hfYW5kX2xpY2Vuc2Uoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKHNlbGYuZGVmYXVsdF9jb25maWcoKSArICdcbkxJQ0VOU0VfYXBwZW5kX3BuLWJhc2ggPSAiICYgU29tZUxpY2Vuc2UiJykKLSAgICAgICAgZXJyb3JfbXNnID0gIkVSUk9SOiBjb3JlLWltYWdlLW1pbmltYWwtMS4wLXIwIGRvX3Jvb3RmczogUGFja2FnZSBiYXNoIGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZSBHUEx2MysgJiBTb21lTGljZW5zZSBhbmQgY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4iCisgICAgICAgIGVycm9yX21zZyA9ICJFUlJPUjogY29yZS1pbWFnZS1taW5pbWFsLTEuMC1yMCBkb19yb290ZnM6IFBhY2thZ2UgYmFzaCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlIGJlY2F1c2UgaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiBHUEwtMy4wKyIKIAogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weQppbmRleCAwMzkwMWEyLi44MDkxNDI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CkBAIC00MCw3ICs0MCw3IEBACiAgICAgZGVmIHRlc3RfbWV0YV9pZGVfY2FuX2J1aWxkX2NwaW9fcHJvamVjdChzZWxmKToKICAgICAgICAgZGxfZGlyID0gc2VsZi50ZC5nZXQoJ0RMX0RJUicsIE5vbmUpCiAgICAgICAgIHNlbGYucHJvamVjdCA9IFNES0J1aWxkUHJvamVjdChzZWxmLnRtcGRpcl9tZXRhaWRlUUEgKyAiL2NwaW8vIiwgc2VsZi5lbnZpcm9ubWVudF9zY3JpcHRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMi50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NwaW8vY3Bpby0yLjEzLnRhci5neiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRtcGRpcl9tZXRhaWRlUUEsIHNlbGYudGRbJ0RBVEVUSU1FJ10sIGRsX2Rpcj1kbF9kaXIpCiAgICAgICAgIHNlbGYucHJvamVjdC5kb3dubG9hZF9hcmNoaXZlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QucnVuX2NvbmZpZ3VyZSgpLCAwLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkKaW5kZXggNmQ4MDgyNy4uZDQ2NjRiZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5CkBAIC00NSw3ICs0NSw3IEBACiAKICAgICBkZWYgdGVzdF9ibG9iX3RvX2RpY3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBUZXN0IGNvbnZlcnRpb24gb2YgZ2l0IGJsb2JzIHRvIGRpY3Rpb25hcnkKKyAgICAgICAgVGVzdCBjb252ZXJzaW9uIG9mIGdpdCBibG9icyB0byBkaWN0aW9uYXJ5CiAgICAgICAgICIiIgogICAgICAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgYmxvYl90b19kaWN0CiAgICAgICAgIHZhbHVlc21hcCA9IHsgImZvbyIgOiAiMSIsICJiYXIiIDogIjIiIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5CmluZGV4IDQxY2JlMDQuLjJmMThkOGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQpAQCAtNCw2ICs0LDcgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlcy5idWlsZGhpc3RvcnkgaW1wb3J0IEJ1aWxkaGlzdG9yeUJhc2UKQEAgLTMzLDE1ICszNCwxMyBAQAogICAgICAgICBpZiBleHBlY3RlZF9lbmRsaW5lczoKICAgICAgICAgICAgIHNlbGYuZmFpbCgnTWlzc2luZyBleHBlY3RlZCBsaW5lIGVuZGluZ3M6XG4gICVzJyAlICdcbiAgJy5qb2luKGV4cGVjdGVkX2VuZGxpbmVzKSkKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKCJjYWlybyIpLCAiUHl0aG9uIGNhaXJvIG1vZHVsZSBpcyBub3QgcHJlc2VudCIpCiBjbGFzcyBPRVNjcmlwdFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBzdXBlcihPRVNjcmlwdFRlc3RzLCBjbHMpLnNldFVwQ2xhc3MoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgY2Fpcm8KLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ1B5dGhvbiBtb2R1bGUgY2Fpcm8gaXMgbm90IHByZXNlbnQnKQorICAgICAgICBpbXBvcnQgY2Fpcm8KICAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIC1jIHJvb3RmcyAtZiIpCiAgICAgICAgIGNscy50bXBkaXIgPSBnZXRfYmJfdmFyKCdUTVBESVInKQogICAgICAgICBjbHMuYnVpbGRzdGF0cyA9IGNscy50bXBkaXIgKyAiL2J1aWxkc3RhdHMvIiArIHNvcnRlZChvcy5saXN0ZGlyKGNscy50bXBkaXIgKyAiL2J1aWxkc3RhdHMiKSlbLTFdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5CmluZGV4IDI5MTYyNzguLjMwMTBiMWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgICAgICAgICAjIENoZWNrIGRlYnVnZ2luZyBzeW1ib2xzIHdvcmtzIGNvcnJlY3RseQotICAgICAgICAgICAgICAgIGVsaWYgcmUubWF0Y2goIkJyZWFrcG9pbnQgMS4qaGVsbG9cLmMuKjQiLCBsKToKKyAgICAgICAgICAgICAgICBlbGlmIHJlLm1hdGNoKHIiQnJlYWtwb2ludCAxLipoZWxsb1wuYy4qNCIsIGwpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiR0RCIHJlc3VsdDpcbiVkOiAlcyIsIHN0YXR1cywgb3V0cHV0KQpAQCAtMTQ4LDMgKzE0OCwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbGliZXhlYy9oZWxsbzQnXToKICAgICAgICAgICAgICAgICBpZiBub3QgZ2RidGVzdChxZW11LCBiaW5hcnkpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0dEQiAlcyBmYWlsZWQnICUgYmluYXJ5KQorCisgICAgZGVmIHRlc3RfcHJlc2VydmVfb3duZXJzaGlwKHNlbGYpOgorICAgICAgICBpbXBvcnQgb3MsIHN0YXQsIG9lLmNhY2hlZHBhdGgKKyAgICAgICAgZmVhdHVyZXMgPSAnSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHNlbGZ0ZXN0LWNob3duIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKKworICAgICAgICBzeXNjb25mZGlyID0gZ2V0X2JiX3Zhcignc3lzY29uZmRpcicsICdzZWxmdGVzdC1jaG93bicpCisgICAgICAgIGRlZiBjaGVja19vd25lcnNoaXAocWVtdSwgZ2lkLCB1aWQsIHBhdGgpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiQ2hlY2sgb3duZXJzaGlwIG9mICVzIiwgcGF0aCkKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKHInL2Jpbi9zdGF0IC1jICIlVSAlRyIgJyArIHBhdGgsIHRpbWVvdXQ9NjApCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuc3BsaXQoIiAiKQorICAgICAgICAgICAgaWYgb3V0cHV0WzBdICE9IHVpZCBvciBvdXRwdXRbMV0gIT0gZ2lkIDoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiSW5jcnJlY3Qgb3duZXJzaGlwICVzIFslczolc10iLCBwYXRoLCBvdXRwdXRbMF0sIG91dHB1dFsxXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgorICAgICAgICAgICAgZm9yIHBhdGggaW4gWyBzeXNjb25mZGlyICsgIi9zZWxmdGVzdC1jaG93bi9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmRpciArICIvc2VsZnRlc3QtY2hvd24vZGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmRpciArICIvc2VsZnRlc3QtY2hvd24vc3ltbGluayJdOgorICAgICAgICAgICAgICAgIGlmIG5vdCBjaGVja19vd25lcnNoaXAocWVtdSwgInRlc3QiLCAidGVzdCIsIHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1Rlc3Qgb3duZXJzaGlwICVzIGZhaWxlZCcgJSBwYXRoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQppbmRleCBjMTU2MmM2Li42YmZlOGYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQpAQCAtNDIxLDYgKzQyMSwzMSBAQAogICAgICAgICBpbmhlcml0cyA9IFsnY21ha2UnXQogICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQogCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfbnBtKHNlbGYpOgorICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ3Nhdm9pcmZhaXJlbGludXgtbm9kZS1zZXJ2ZXItZXhhbXBsZV8xLjAuMC5iYicpCisgICAgICAgIHNocmlua3dyYXAgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ3Nhdm9pcmZhaXJlbGludXgtbm9kZS1zZXJ2ZXItZXhhbXBsZScsICducG0tc2hyaW5rd3JhcC5qc29uJykKKyAgICAgICAgc3JjdXJpID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyBcJyVzXCcnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNocmlua3dyYXApKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1NVTU1BUlknXSA9ICdOb2RlIFNlcnZlciBFeGFtcGxlJworICAgICAgICBjaGVja3ZhcnNbJ0hPTUVQQUdFJ10gPSAnaHR0cHM6Ly9naXRodWIuY29tL3Nhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZSNyZWFkbWUnCisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnTUlUJywgJ0lTQycsICdVbmtub3duJ10pCisgICAgICAgIHVybHMgPSBbXQorICAgICAgICB1cmxzLmFwcGVuZCgnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnLztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0ke1BWfScpCisgICAgICAgIHVybHMuYXBwZW5kKCducG1zdzovLyR7VEhJU0RJUn0vJHtCUE59L25wbS1zaHJpbmt3cmFwLmpzb24nKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHNldCh1cmxzKQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L25wbScKKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFXyR7UE59J10gPSAnTUlUJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0VfJHtQTn0tYmFzZTY0J10gPSAnVW5rbm93bicKKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFXyR7UE59LWFjY2VwdHMnXSA9ICdNSVQnCisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRV8ke1BOfS1pbmhlcml0cyddID0gJ0lTQycKKyAgICAgICAgaW5oZXJpdHMgPSBbJ25wbSddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCisKICAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRodWIoc2VsZik6CiAgICAgICAgICMgQmFzaWMgdGVzdCB0byBzZWUgaWYgZ2l0aHViIFVSTCBtYW5nbGluZyB3b3JrcwogICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weQppbmRleCBhOTExMDU2Li41ZDM5NTliIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZXByb2R1Y2libGUucHkKQEAgLTEsNyArMSw3IEBACiAjCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICMKLSMgQ29weXJpZ2h0IDIwMTkgYnkgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcworIyBDb3B5cmlnaHQgMjAxOS0yMDIwIGJ5IEdhcm1pbiBMdGQuIG9yIGl0cyBzdWJzaWRpYXJpZXMKIAogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCkBAIC0xNSw2ICsxNSw3IEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RhdAogaW1wb3J0IG9zCitpbXBvcnQgZGF0ZXRpbWUKIAogTUlTU0lORyA9ICdNSVNTSU5HJwogRElGRkVSRU5UID0gJ0RJRkZFUkVOVCcKQEAgLTc4LDggKzc5LDE4IEBACiAKIGNsYXNzIFJlcHJvZHVjaWJsZVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAgICAgcGFja2FnZV9jbGFzc2VzID0gWydkZWInLCAnaXBrJ10KLSAgICBpbWFnZXMgPSBbJ2NvcmUtaW1hZ2UtbWluaW1hbCddCisgICAgaW1hZ2VzID0gWydjb3JlLWltYWdlLW1pbmltYWwnLCAnY29yZS1pbWFnZS1zYXRvJywgJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lJ10KICAgICBzYXZlX3Jlc3VsdHMgPSBGYWxzZQorICAgIGlmICdPRVFBX0RFQlVHR0lOR19TQVZFRF9PVVRQVVQnIGluIG9zLmVudmlyb246CisgICAgICAgIHNhdmVfcmVzdWx0cyA9IG9zLmVudmlyb25bJ09FUUFfREVCVUdHSU5HX1NBVkVEX09VVFBVVCddCisKKyAgICAjIFRoaXMgdmFyaWFibGUgY29udHJvbHMgaWYgb25lIG9mIHRoZSB0ZXN0IGJ1aWxkcyBpcyBhbGxvd2VkIHRvIHB1bGwgZnJvbQorICAgICMgYW4gc3N0YXRlIGNhY2hlL21pcnJvci4gVGhlIG90aGVyIGJ1aWxkIGlzIGFsd2F5cyBkb25lIGNsZWFuIGFzIGEgcG9pbnQgb2YKKyAgICAjIGNvbXBhcmlzb24uCisgICAgIyBJZiB5b3Uga25vdyB0aGF0IHlvdXIgc3N0YXRlIGFyY2hpdmVzIGFyZSByZXByb2R1Y2libGUsIGVuYWJsaW5nIHRoaXMKKyAgICAjIHdpbGwgdGVzdCB0aGF0IGFuZCBhbHNvIG1ha2UgdGhlIHRlc3QgcnVuIGZhc3Rlci4gSWYgeW91ciBzc3RhdGUgaXMgbm90CisgICAgIyByZXByb2R1Y2libGUsIGRpc2FibGUgdGhpcyBpbiB5b3VyIGRlcml2ZWQgdGVzdCBjbGFzcworICAgIGJ1aWxkX2Zyb21fc3N0YXRlID0gVHJ1ZQogCiAgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXBMb2NhbCgpCkBAIC04OCwxMiArOTksMTIgQEAKICAgICAgICAgZm9yIHYgaW4gbmVlZGVkX3ZhcnM6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIHYubG93ZXIoKSwgYmJfdmFyc1t2XSkKIAotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHMgPSB7fQotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHMuc2V0ZGVmYXVsdCgncmVwcm9kdWNpYmxlLnJhd2xvZ3MnLCB7fSlbJ2xvZyddID0gJycKLSAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZScsIHt9KS5zZXRkZWZhdWx0KCdmaWxlcycsIHt9KQorICAgICAgICBzZWxmLmV4dHJhcmVzdWx0cyA9IHt9CisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJywge30pWydsb2cnXSA9ICcnCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZScsIHt9KS5zZXRkZWZhdWx0KCdmaWxlcycsIHt9KQogCiAgICAgZGVmIGFwcGVuZF90b19sb2coc2VsZiwgbXNnKToKLSAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzWydyZXByb2R1Y2libGUucmF3bG9ncyddWydsb2cnXSArPSBtc2cKKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNbJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJ11bJ2xvZyddICs9IG1zZwogCiAgICAgZGVmIGNvbXBhcmVfcGFja2FnZXMoc2VsZiwgcmVmZXJlbmNlX2RpciwgdGVzdF9kaXIsIGRpZmZ1dGlsc19zeXNyb290KToKICAgICAgICAgcmVzdWx0ID0gUGFja2FnZUNvbXBhcmVSZXN1bHRzKCkKQEAgLTEyMCw2MCArMTMxLDY5IEBACiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiB3cml0ZV9wYWNrYWdlX2xpc3Qoc2VsZiwgcGFja2FnZV9jbGFzcywgbmFtZSwgcGFja2FnZXMpOgotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHNbJ3JlcHJvZHVjaWJsZSddWydmaWxlcyddLnNldGRlZmF1bHQocGFja2FnZV9jbGFzcywge30pW25hbWVdID0gWworICAgICAgICBzZWxmLmV4dHJhcmVzdWx0c1sncmVwcm9kdWNpYmxlJ11bJ2ZpbGVzJ10uc2V0ZGVmYXVsdChwYWNrYWdlX2NsYXNzLCB7fSlbbmFtZV0gPSBbCiAgICAgICAgICAgICAgICAgeydyZWZlcmVuY2UnOiBwLnJlZmVyZW5jZSwgJ3Rlc3QnOiBwLnRlc3R9IGZvciBwIGluIHBhY2thZ2VzXQogCiAgICAgZGVmIGNvcHlfZmlsZShzZWxmLCBzb3VyY2UsIGRlc3QpOgogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlc3QpKQogICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0KQogCi0gICAgZGVmIHRlc3RfcmVwcm9kdWNpYmxlX2J1aWxkcyhzZWxmKToKKyAgICBkZWYgZG9fdGVzdF9idWlsZChzZWxmLCBuYW1lLCB1c2Vfc3N0YXRlKToKICAgICAgICAgY2FwdHVyZV92YXJzID0gWydERVBMT1lfRElSXycgKyBjLnVwcGVyKCkgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXNdCiAKLSAgICAgICAgaWYgc2VsZi5zYXZlX3Jlc3VsdHM6Ci0gICAgICAgICAgICBzYXZlX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZS1yZXByb2R1Y2libGUtJykKLSAgICAgICAgICAgIG9zLmNobW9kKHNhdmVfZGlyLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVhHUlAgfCBzdGF0LlNfSVJPVEggfCBzdGF0LlNfSVhPVEgpCi0gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdOb24tcmVwcm9kdWNpYmxlIHBhY2thZ2VzIHdpbGwgYmUgY29waWVkIHRvICVzJywgc2F2ZV9kaXIpCisgICAgICAgIHRtcGRpciA9IG9zLnBhdGguam9pbihzZWxmLnRvcGRpciwgbmFtZSwgJ3RtcCcpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRtcGRpcik6CisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodG1wZGlyLCByZWN1cnNlPVRydWUpCisKKyAgICAgICAgY29uZmlnID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIElOSEVSSVQgKz0gInJlcHJvZHVjaWJsZV9idWlsZCIKKyAgICAgICAgICAgIFBBQ0tBR0VfQ0xBU1NFUyA9ICJ7cGFja2FnZV9jbGFzc2VzfSIKKyAgICAgICAgICAgIElOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorICAgICAgICAgICAgVE1QRElSID0gInt0bXBkaXJ9IgorICAgICAgICAgICAgJycnKS5mb3JtYXQocGFja2FnZV9jbGFzc2VzPScgJy5qb2luKCdwYWNrYWdlXyVzJyAlIGMgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgdG1wZGlyPXRtcGRpcikKKworICAgICAgICBpZiBub3QgdXNlX3NzdGF0ZToKKyAgICAgICAgICAgICMgVGhpcyBjb25maWcgZnJhZ21lbnQgd2lsbCBkaXNhYmxlIHVzaW5nIHNoYXJlZCBhbmQgdGhlIHNzdGF0ZQorICAgICAgICAgICAgIyBtaXJyb3IsIGZvcmNpbmcgYSBjb21wbGV0ZSBidWlsZCBmcm9tIHNjcmF0Y2gKKyAgICAgICAgICAgIGNvbmZpZyArPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgICAgIFNTVEFURV9ESVIgPSAiJHtUTVBESVJ9L3NzdGF0ZSIKKyAgICAgICAgICAgICAgICBTU1RBVEVfTUlSUk9SID0gIiIKKyAgICAgICAgICAgICAgICAnJycpCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnKQorICAgICAgICBkID0gZ2V0X2JiX3ZhcnMoY2FwdHVyZV92YXJzKQorICAgICAgICBiaXRiYWtlKCcgJy5qb2luKHNlbGYuaW1hZ2VzKSkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiB0ZXN0X3JlcHJvZHVjaWJsZV9idWlsZHMoc2VsZik6CisgICAgICAgIGRlZiBzdHJpcF90b3BkaXIocyk6CisgICAgICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoc2VsZi50b3BkaXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzW2xlbihzZWxmLnRvcGRpcik6XQorICAgICAgICAgICAgcmV0dXJuIHMKIAogICAgICAgICAjIEJ1aWxkIG5hdGl2ZSB1dGlsaXRpZXMKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJycpCi0gICAgICAgIGJpdGJha2UoImRpZmZ1dGlscy1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QiKQorICAgICAgICBiaXRiYWtlKCJkaWZmb3Njb3BlLW5hdGl2ZSBkaWZmdXRpbHMtbmF0aXZlIGpxdWVyeS1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QiKQogICAgICAgICBkaWZmdXRpbHNfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJkaWZmdXRpbHMtbmF0aXZlIikKKyAgICAgICAgZGlmZm9zY29wZV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgImRpZmZvc2NvcGUtbmF0aXZlIikKKyAgICAgICAganF1ZXJ5X3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAianF1ZXJ5LW5hdGl2ZSIpCiAKLSAgICAgICAgIyBSZXByb2R1Y2libGUgYnVpbGRzIHNob3VsZCBub3QgcHVsbCBmcm9tIHNzdGF0ZSBvciBtaXJyb3JzLCBidXQKLSAgICAgICAgIyBzaGFyaW5nIERMX0RJUiBpcyBmaW5lCi0gICAgICAgIGNvbW1vbl9jb25maWcgPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAotICAgICAgICAgICAgSU5IRVJJVCArPSAicmVwcm9kdWNpYmxlX2J1aWxkIgotICAgICAgICAgICAgUEFDS0FHRV9DTEFTU0VTID0gIiVzIgotICAgICAgICAgICAgU1NUQVRFX0RJUiA9ICIke1RNUERJUn0vc3N0YXRlIgotICAgICAgICAgICAgJycnKSAlICgnICcuam9pbigncGFja2FnZV8lcycgJSBjIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzKSkKKyAgICAgICAgaWYgc2VsZi5zYXZlX3Jlc3VsdHM6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLnNhdmVfcmVzdWx0cywgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgICAgIGRhdGVzdHIgPSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJykKKyAgICAgICAgICAgIHNhdmVfZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J29lLXJlcHJvZHVjaWJsZS0lcy0nICUgZGF0ZXN0ciwgZGlyPXNlbGYuc2F2ZV9yZXN1bHRzKQorICAgICAgICAgICAgb3MuY2htb2Qoc2F2ZV9kaXIsIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JWEdSUCB8IHN0YXQuU19JUk9USCB8IHN0YXQuU19JWE9USCkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vbi1yZXByb2R1Y2libGUgcGFja2FnZXMgd2lsbCBiZSBjb3BpZWQgdG8gJXMnLCBzYXZlX2RpcikKIAotICAgICAgICAjIFBlcmZvcm0gYSBidWlsZC4KLSAgICAgICAgcmVwcm9kdWNpYmxlQV90bXAgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BkaXIsICdyZXByb2R1Y2libGVBJywgJ3RtcCcpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHJlcHJvZHVjaWJsZUFfdG1wKToKLSAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShyZXByb2R1Y2libGVBX3RtcCwgcmVjdXJzZT1UcnVlKQotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCh0ZXh0d3JhcC5kZWRlbnQoJycnXAotICAgICAgICAgICAgVE1QRElSID0gIiVzIgotICAgICAgICAgICAgJycnKSAlIHJlcHJvZHVjaWJsZUFfdG1wKSArIGNvbW1vbl9jb25maWcpCi0gICAgICAgIHZhcnNfQSA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKLSAgICAgICAgYml0YmFrZSgnICcuam9pbihzZWxmLmltYWdlcykpCi0KLSAgICAgICAgIyBQZXJmb3JtIGFub3RoZXIgYnVpbGQuCi0gICAgICAgIHJlcHJvZHVjaWJsZUJfdG1wID0gb3MucGF0aC5qb2luKHNlbGYudG9wZGlyLCAncmVwcm9kdWNpYmxlQicsICd0bXAnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhyZXByb2R1Y2libGVCX3RtcCk6Ci0gICAgICAgICAgICBiYi51dGlscy5yZW1vdmUocmVwcm9kdWNpYmxlQl90bXAsIHJlY3Vyc2U9VHJ1ZSkKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygodGV4dHdyYXAuZGVkZW50KCcnJ1wKLSAgICAgICAgICAgIFNTVEFURV9NSVJST1IgPSAiIgotICAgICAgICAgICAgVE1QRElSID0gIiVzIgotICAgICAgICAgICAgJycnKSAlIHJlcHJvZHVjaWJsZUJfdG1wKSArIGNvbW1vbl9jb25maWcpCi0gICAgICAgIHZhcnNfQiA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKLSAgICAgICAgYml0YmFrZSgnICcuam9pbihzZWxmLmltYWdlcykpCisgICAgICAgIHZhcnNfQSA9IHNlbGYuZG9fdGVzdF9idWlsZCgncmVwcm9kdWNpYmxlQScsIHNlbGYuYnVpbGRfZnJvbV9zc3RhdGUpCisgICAgICAgIHZhcnNfQiA9IHNlbGYuZG9fdGVzdF9idWlsZCgncmVwcm9kdWNpYmxlQicsIEZhbHNlKQogCiAgICAgICAgICMgTk9URTogVGhlIHRlbXAgZGlyZWN0b3JpZXMgZnJvbSB0aGUgcmVwcm9kdWNpYmxlIGJ1aWxkIGFyZSBwdXJwb3NlbHkKICAgICAgICAgIyBrZXB0IGFmdGVyIHRoZSBidWlsZCBzbyBpdCBjYW4gYmUgZGlmZmVkIGZvciBkZWJ1Z2dpbmcuCiAKKyAgICAgICAgZmFpbHMgPSBbXQorCiAgICAgICAgIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFja2FnZV9jbGFzcz1jKToKICAgICAgICAgICAgICAgICBwYWNrYWdlX2NsYXNzID0gJ3BhY2thZ2VfJyArIGMKQEAgLTE5MywxMCArMjEzLDI4IEBACiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnNhdmVfcmVzdWx0czoKICAgICAgICAgICAgICAgICAgICAgZm9yIGQgaW4gcmVzdWx0LmRpZmZlcmVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKGQucmVmZXJlbmNlLCAnLycuam9pbihbc2F2ZV9kaXIsIGQucmVmZXJlbmNlXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShkLnRlc3QsICcvJy5qb2luKFtzYXZlX2RpciwgZC50ZXN0XSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShkLnJlZmVyZW5jZSwgJy8nLmpvaW4oW3NhdmVfZGlyLCAncGFja2FnZXMnLCBzdHJpcF90b3BkaXIoZC5yZWZlcmVuY2UpXSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShkLnRlc3QsICcvJy5qb2luKFtzYXZlX2RpciwgJ3BhY2thZ2VzJywgc3RyaXBfdG9wZGlyKGQudGVzdCldKSkKIAogICAgICAgICAgICAgICAgIGlmIHJlc3VsdC5taXNzaW5nIG9yIHJlc3VsdC5kaWZmZXJlbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGhlIGZvbGxvd2luZyAlcyBwYWNrYWdlcyBhcmUgbWlzc2luZyBvciBkaWZmZXJlbnQ6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMsICcgJy5qb2luKHIudGVzdCBmb3IgciBpbiAocmVzdWx0Lm1pc3NpbmcgKyByZXN1bHQuZGlmZmVyZW50KSkpKQorICAgICAgICAgICAgICAgICAgICBmYWlscy5hcHBlbmQoIlRoZSBmb2xsb3dpbmcgJXMgcGFja2FnZXMgYXJlIG1pc3Npbmcgb3IgZGlmZmVyZW50OiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLCAnXG4nLmpvaW4oci50ZXN0IGZvciByIGluIChyZXN1bHQubWlzc2luZyArIHJlc3VsdC5kaWZmZXJlbnQpKSkpCisKKyAgICAgICAgIyBDbGVhbiB1cCBlbXB0eSBkaXJlY3RvcmllcworICAgICAgICBpZiBzZWxmLnNhdmVfcmVzdWx0czoKKyAgICAgICAgICAgIGlmIG5vdCBvcy5saXN0ZGlyKHNhdmVfZGlyKToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihzYXZlX2RpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnUnVubmluZyBkaWZmb3Njb3BlJykKKyAgICAgICAgICAgICAgICBwYWNrYWdlX2RpciA9IG9zLnBhdGguam9pbihzYXZlX2RpciwgJ3BhY2thZ2VzJykKKyAgICAgICAgICAgICAgICBwYWNrYWdlX2h0bWxfZGlyID0gb3MucGF0aC5qb2luKHBhY2thZ2VfZGlyLCAnZGlmZi1odG1sJykKKworICAgICAgICAgICAgICAgICMgQ29weSBqcXVlcnkgdG8gaW1wcm92ZSB0aGUgZGlmZm9zY29wZSBvdXRwdXQgdXNhYmlsaXR5CisgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUob3MucGF0aC5qb2luKGpxdWVyeV9zeXNyb290LCAndXNyL3NoYXJlL2phdmFzY3JpcHQvanF1ZXJ5L2pxdWVyeS5taW4uanMnKSwgb3MucGF0aC5qb2luKHBhY2thZ2VfaHRtbF9kaXIsICdqcXVlcnkuanMnKSkKKworICAgICAgICAgICAgICAgIHJ1bkNtZChbJ2RpZmZvc2NvcGUnLCAnLS1uby1kZWZhdWx0LWxpbWl0cycsICctLWV4Y2x1ZGUtZGlyZWN0b3J5LW1ldGFkYXRhJywgJy0taHRtbC1kaXInLCBwYWNrYWdlX2h0bWxfZGlyLCAncmVwcm9kdWNpYmxlQScsICdyZXByb2R1Y2libGVCJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1kaWZmb3Njb3BlX3N5c3Jvb3QsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgY3dkPXBhY2thZ2VfZGlyKQorCisgICAgICAgIGlmIGZhaWxzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdcbicuam9pbihmYWlscykpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CmluZGV4IDRiNTZlNWIuLjYwY2IyZTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgb2UubHNiCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90UWVtdQogCiBjbGFzcyBUZXN0RXhwb3J0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAKQEAgLTE2Niw5ICsxNjcsOSBAQAogICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBzb2NhdCcpCiAgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLWZ1bGwtY21kbGluZScpCiAKLSAgICBkZWYgdGVzdF90ZXN0aW1hZ2VfdmlyZ2xfZ3RrKHNlbGYpOgorICAgIGRlZiB0ZXN0X3Rlc3RpbWFnZV92aXJnbF9ndGtfc2RsKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogQ2hlY2sgaG9zdC1hc3Npc3RlZCBhY2NlbGVyYXRlIE9wZW5HTCBmdW5jdGlvbmFsaXR5IGluIHFlbXUgd2l0aCBndGsgZnJvbnRlbmQKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgaG9zdC1hc3Npc3RlZCBhY2NlbGVyYXRlIE9wZW5HTCBmdW5jdGlvbmFsaXR5IGluIHFlbXUgd2l0aCBndGsgYW5kIFNETCBmcm9udGVuZHMKICAgICAgICAgRXhwZWN0ZWQ6IDEuIENoZWNrIHRoYXQgdmlyZ2wga2VybmVsIGRyaXZlciBpcyBsb2FkZWQgYW5kIDNkIGFjY2VsZXJhdGlvbiBpcyBlbmFibGVkCiAgICAgICAgICAgICAgICAgICAyLiBDaGVjayB0aGF0IGttc2N1YmUgZGVtbyBydW5zIHdpdGhvdXQgY3Jhc2hpbmcuCiAgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKQEAgLTE4MSwyMCArMTgyLDMxIEBACiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd2aXJnbCBpc25cJ3Qgd29ya2luZyB3aXRoIERlYmlhbiA4JykKICAgICAgICAgaWYgZGlzdHJvIGFuZCBkaXN0cm8gPT0gJ2NlbnRvcy03JzoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3ZpcmdsIGlzblwndCB3b3JraW5nIHdpdGggQ2VudG9zIDcnKQorICAgICAgICBpZiBkaXN0cm8gYW5kIGRpc3RybyA9PSAnb3BlbnN1c2VsZWFwLTE1LjAnOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndmlyZ2wgaXNuXCd0IHdvcmtpbmcgd2l0aCBPcGVuc3VzZSAxNS4wJykKIAogICAgICAgICBxZW11X3BhY2thZ2Vjb25maWcgPSBnZXRfYmJfdmFyKCdQQUNLQUdFQ09ORklHJywgJ3FlbXUtc3lzdGVtLW5hdGl2ZScpCisgICAgICAgIHNkbF9wYWNrYWdlY29uZmlnID0gZ2V0X2JiX3ZhcignUEFDS0FHRUNPTkZJRycsICdsaWJzZGwyLW5hdGl2ZScpCiAgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKICAgICAgICAgaWYgJ2d0aysnIG5vdCBpbiBxZW11X3BhY2thZ2Vjb25maWc6CiAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tcWVtdS1zeXN0ZW0tbmF0aXZlID0gIiBndGsrIlxuJworICAgICAgICBpZiAnc2RsJyBub3QgaW4gcWVtdV9wYWNrYWdlY29uZmlnOgorICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgc2RsIlxuJwogICAgICAgICBpZiAndmlyZ2xyZW5kZXJlcicgbm90IGluIHFlbXVfcGFja2FnZWNvbmZpZzoKICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1xZW11LXN5c3RlbS1uYXRpdmUgPSAiIHZpcmdscmVuZGVyZXIiXG4nCiAgICAgICAgIGlmICdnbHgnIG5vdCBpbiBxZW11X3BhY2thZ2Vjb25maWc6CiAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tcWVtdS1zeXN0ZW0tbmF0aXZlID0gIiBnbHgiXG4nCisgICAgICAgIGlmICdvcGVuZ2wnIG5vdCBpbiBzZGxfcGFja2FnZWNvbmZpZzoKKyAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1saWJzZGwyLW5hdGl2ZSA9ICIgb3BlbmdsIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyBzc2ggdmlyZ2wiXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFU19hcHBlbmQgPSAiIHNzaC1zZXJ2ZXItZHJvcGJlYXIiXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIga21zY3ViZSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfUlVOUUVNVVBBUkFNUyA9ICJndGsgZ2wiXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorICAgICAgICBmZWF0dXJlc19ndGsgPSBmZWF0dXJlcyArICdURVNUX1JVTlFFTVVQQVJBTVMgPSAiZ3RrIGdsIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlc19ndGspCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBmZWF0dXJlc19zZGwgPSBmZWF0dXJlcyArICdURVNUX1JVTlFFTVVQQVJBTVMgPSAic2RsIGdsIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlc19zZGwpCiAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCiAgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwnKQogCkBAIC0yMzIsNyArMjQ0LDQ3IEBACiAgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwnKQogCiBjbGFzcyBQb3N0aW5zdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdChzZWxmKToKKworICAgIGRlZiBpbml0X21hbmFnZXJfbG9vcChzZWxmLCBpbml0X21hbmFnZXIpOgorICAgICAgICBpbXBvcnQgb2UucGF0aAorCisgICAgICAgIHZhcnMgPSBnZXRfYmJfdmFycygoIklNQUdFX1JPT1RGUyIsICJzeXNjb25mZGlyIiksICJjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICByb290ZnMgPSB2YXJzWyJJTUFHRV9ST09URlMiXQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyb290ZnMpCisgICAgICAgIHN5c2NvbmZkaXIgPSB2YXJzWyJzeXNjb25mZGlyIl0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3lzY29uZmRpcikKKyAgICAgICAgIyBOZWVkIHRvIHVzZSBvZS5wYXRoIGhlcmUgYXMgc3lzY29uZmRpciBzdGFydHMgd2l0aCAvCisgICAgICAgIGhvc3R0ZXN0ZGlyID0gb2UucGF0aC5qb2luKHJvb3Rmcywgc3lzY29uZmRpciwgInBvc3RpbnN0LXRlc3QiKQorICAgICAgICB0YXJnZXR0ZXN0ZGlyID0gb3MucGF0aC5qb2luKHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKKworICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIiwgInBhY2thZ2VfZGViIiwgInBhY2thZ2VfaXBrIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChpbml0X21hbmFnZXI9aW5pdF9tYW5hZ2VyLCBwYWNrYWdlX2NsYXNzPWNsYXNzZXMpOgorICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwb3N0aW5zdC1kZWxheWVkLWIiXG4nCisgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlLW1hbmFnZW1lbnQgZW1wdHktcm9vdC1wYXNzd29yZCJcbicKKyAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gIiVzIlxuJyAlIGNsYXNzZXMKKyAgICAgICAgICAgICAgICBpZiBpbml0X21hbmFnZXIgPT0gInN5c3RlbWQiOgorICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgc3lzdGVtZCJcbicKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPSAic3lzdGVtZCJcbicKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEID0gInN5c3Zpbml0IlxuJworICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRzY3JpcHRzID0gIiJcbicKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdGZzIHN0YXRlIGZpbGUgd2FzIG5vdCBjcmVhdGVkIikKKworICAgICAgICAgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKKyAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoZSB0ZXN0IGVjaG8gYSBzdHJpbmcgYW5kIHNlYXJjaCBmb3IgdGhhdCBhcworICAgICAgICAgICAgICAgICAgICAjIHJ1bl9zZXJpYWwoKSdzIHN0YXR1cyBjb2RlIGlzIHVzZWxlc3MuJworICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKCJyb290ZnMiLCAiZGVsYXllZC1hIiwgImRlbGF5ZWQtYiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoInRlc3QgLWYgJXMgJiYgZWNobyBmb3VuZCIgJSBvcy5wYXRoLmpvaW4odGFyZ2V0dGVzdGRpciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJmb3VuZCIsICIlcyB3YXMgbm90IHByZXNlbnQgb24gYm9vdCIgJSBmaWxlbmFtZSkKKworCisKKyAgICBAc2tpcElmTm90UWVtdSgncWVtdWFsbCcsICdUZXN0IG9ubHkgcnVucyBpbiBxZW11JykKKyAgICBkZWYgdGVzdF9wb3N0aW5zdF9yb290ZnNfYW5kX2Jvb3Rfc3lzdmluaXQoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBTdW1tYXJ5OiAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGNhc2UgaXMgdG8gdmVyaWZ5IFBvc3QtaW5zdGFsbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGFyZSBjYWxsZWQgd2hlbiByb290ZnMgaXMgY3JlYXRlZCBhbmQgYWxzbyB0ZXN0CkBAIC0yNDYsNDYgKzI5OCwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSBwb3N0aW5zdF9ib290IHJlY2lwZSBpcyBwcmVzZW50IG9uIGltYWdlLgogICAgICAgICBFeHBlY3RlZDogICAgICAgVGhlIGZpbGVzIGFyZSBzdWNjZXNzZnVsbHkgY3JlYXRlZCBkdXJpbmcgcm9vdGZzIGFuZCBib290CiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGZvciAzIGRpZmZlcmVudCBwYWNrYWdlIG1hbmFnZXJzOiBycG0saXBrLGRlYiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbml0aWFsaXphdGlvbiBtYW5hZ2Vyczogc3lzdmluaXQgYW5kIHN5c3RlbWQuCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3Zpbml0LgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmluaXRfbWFuYWdlcl9sb29wKCJzeXN2aW5pdCIpCisKKworICAgIEBza2lwSWZOb3RRZW11KCdxZW11YWxsJywgJ1Rlc3Qgb25seSBydW5zIGluIHFlbXUnKQorICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdF9zeXN0ZW1kKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSBQb3N0LWluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyBhcmUgY2FsbGVkIHdoZW4gcm9vdGZzIGlzIGNyZWF0ZWQgYW5kIGFsc28gdGVzdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzY3JpcHQgY2FuIGJlIGRlbGF5ZWQgdG8gcnVuIGF0IGZpcnN0IGJvb3QuCisgICAgICAgIERlcGVuZGVuY2llczogICBOQQorICAgICAgICBTdGVwczogICAgICAgICAgMS4gQWRkIHByb3BlciBjb25maWd1cmF0aW9uIHRvIGxvY2FsLmNvbmYgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgMi4gQnVpbGQgYSAiY29yZS1pbWFnZS1taW5pbWFsIiBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgMy4gVmVyaWZ5IHRoYXQgZmlsZSBjcmVhdGVkIGJ5IHBvc3RpbnN0X3Jvb3RmcyByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQgb24gcm9vdGZzIGRpci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDQuIEJvb3QgdGhlIGltYWdlIGNyZWF0ZWQgb24gcWVtdSBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcG9zdGluc3RfYm9vdCByZWNpcGUgaXMgcHJlc2VudCBvbiBpbWFnZS4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBmaWxlcyBhcmUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZHVyaW5nIHJvb3RmcyBhbmQgYm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBmb3IgMyBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyczogcnBtLGlwayxkZWIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3RlbWQuCiAKICAgICAgICAgIiIiCiAKLSAgICAgICAgaW1wb3J0IG9lLnBhdGgKLQotICAgICAgICB2YXJzID0gZ2V0X2JiX3ZhcnMoKCJJTUFHRV9ST09URlMiLCAic3lzY29uZmRpciIpLCAiY29yZS1pbWFnZS1taW5pbWFsIikKLSAgICAgICAgcm9vdGZzID0gdmFyc1siSU1BR0VfUk9PVEZTIl0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocm9vdGZzKQotICAgICAgICBzeXNjb25mZGlyID0gdmFyc1sic3lzY29uZmRpciJdCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHN5c2NvbmZkaXIpCi0gICAgICAgICMgTmVlZCB0byB1c2Ugb2UucGF0aCBoZXJlIGFzIHN5c2NvbmZkaXIgc3RhcnRzIHdpdGggLwotICAgICAgICBob3N0dGVzdGRpciA9IG9lLnBhdGguam9pbihyb290ZnMsIHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKLSAgICAgICAgdGFyZ2V0dGVzdGRpciA9IG9zLnBhdGguam9pbihzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCi0KLSAgICAgICAgZm9yIGluaXRfbWFuYWdlciBpbiAoInN5c3Zpbml0IiwgInN5c3RlbWQiKToKLSAgICAgICAgICAgIGZvciBjbGFzc2VzIGluICgicGFja2FnZV9ycG0iLCAicGFja2FnZV9kZWIiLCAicGFja2FnZV9pcGsiKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChpbml0X21hbmFnZXI9aW5pdF9tYW5hZ2VyLCBwYWNrYWdlX2NsYXNzPWNsYXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicG9zdGluc3QtZGVsYXllZC1iIlxuJwotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfRkVBVFVSRVMgKz0gInBhY2thZ2UtbWFuYWdlbWVudCBlbXB0eS1yb290LXBhc3N3b3JkIlxuJwotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gIiVzIlxuJyAlIGNsYXNzZXMKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5pdF9tYW5hZ2VyID09ICJzeXN0ZW1kIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBzeXN0ZW1kIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPSAic3lzdGVtZCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJzeXN2aW5pdCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiIlxuJwotICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaG9zdHRlc3RkaXIsICJyb290ZnMiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdGZzIHN0YXRlIGZpbGUgd2FzIG5vdCBjcmVhdGVkIikKLQotICAgICAgICAgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE1ha2UgdGhlIHRlc3QgZWNobyBhIHN0cmluZyBhbmQgc2VhcmNoIGZvciB0aGF0IGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHJ1bl9zZXJpYWwoKSdzIHN0YXR1cyBjb2RlIGlzIHVzZWxlc3MuJwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluICgicm9vdGZzIiwgImRlbGF5ZWQtYSIsICJkZWxheWVkLWIiKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgidGVzdCAtZiAlcyAmJiBlY2hvIGZvdW5kIiAlIG9zLnBhdGguam9pbih0YXJnZXR0ZXN0ZGlyLCBmaWxlbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJmb3VuZCIsICIlcyB3YXMgbm90IHByZXNlbnQgb24gYm9vdCIgJSBmaWxlbmFtZSkKLQorICAgICAgICBzZWxmLmluaXRfbWFuYWdlcl9sb29wKCJzeXN0ZW1kIikKIAogCiAgICAgZGVmIHRlc3RfZmFpbGluZ19wb3N0aW5zdChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKaW5kZXggOTNiMTVhZS4uMjAyZDU0OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKQEAgLTE1Nyw4ICsxNTcsOCBAQAogICAgICAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCiAgICAgICAgICAgICBiaXRiYWtlKCctYyBwb3B1bGF0ZV9saWMgJXMnICUgdGVzdF9yZWNpcGUpCiAKLSAgICAgICAgICAgIHJlY2lwZV9zaWcgPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyo6ZWQ6Kl9wb3B1bGF0ZV9saWMudGd6LnNpZycpCi0gICAgICAgICAgICByZWNpcGVfdGd6ID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qOmVkOipfcG9wdWxhdGVfbGljLnRneicpCisgICAgICAgICAgICByZWNpcGVfc2lnID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qLyo6ZWQ6Kl9wb3B1bGF0ZV9saWMudGd6LnNpZycpCisgICAgICAgICAgICByZWNpcGVfdGd6ID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qLyo6ZWQ6Kl9wb3B1bGF0ZV9saWMudGd6JykKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjaXBlX3NpZyksIDEsICdGYWlsZWQgdG8gZmluZCAuc2lnIGZpbGUuJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwZV90Z3opLCAxLCAnRmFpbGVkIHRvIGZpbmQgLnRneiBmaWxlLicpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weQppbmRleCA0MTBkZWM2Li44MGNlOWUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkKQEAgLTU2LDExICs1NiwxMSBAQAogICAgIGRlZiBzZWFyY2hfc3N0YXRlKHNlbGYsIGZpbGVuYW1lX3JlZ2V4LCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUpOgogICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnNzdGF0ZV9wYXRoKToKLSAgICAgICAgICAgIGlmIGRpc3Ryb19zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5ob3N0ZGlzdHJvLCByb290KToKKyAgICAgICAgICAgIGlmIGRpc3Ryb19zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKHIiJXMvJXMvW2EtejAtOV17Mn0vW2EtejAtOV17Mn0kIiAlIChzZWxmLnNzdGF0ZV9wYXRoLCBzZWxmLmhvc3RkaXN0cm8pLCByb290KToKICAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKLSAgICAgICAgICAgIGlmIGRpc3Ryb19ub25zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5zc3RhdGVfcGF0aCwgcm9vdCk6CisgICAgICAgICAgICBpZiBkaXN0cm9fbm9uc3BlY2lmaWMgYW5kIHJlLnNlYXJjaChyIiVzL1thLXowLTldezJ9L1thLXowLTldezJ9JCIgJSBzZWxmLnNzdGF0ZV9wYXRoLCByb290KToKICAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQppbmRleCA2NzU3YTBlLi45YWRiNTExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5CkBAIC00NDYsNiArNDQ2LDQ2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKIAogCisgICAgZGVmIHRlc3Rfc3N0YXRlX211bHRpbGliX29yX25vdF9uYXRpdmVfc2FtZXNpZ3Moc2VsZik6CisgICAgICAgICIiIlRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIHR3byBuYXRpdmUgcmVjaXBlcyAoYW5kIHRoZWlyIGRlcGVuZGVuY2llcykKKyAgICAgICAgd2hlcmUgdGhlIHRhcmdldCBpcyB1c2luZyBtdWx0aWxpYiBpbiBvbmUgYnV0IG5vdCB0aGUgb3RoZXIKKyAgICAgICAgc2hvdWxkIGJlIHRoZSBzYW1lLiBXZSB1c2UgdGhlIHFlbXV4ODZjb3B5IG1hY2hpbmUgdG8gdGVzdAorICAgICAgICB0aGlzLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCitNQUNISU5FID0gXCJxZW11eDg2XCIKK3JlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCitNVUxUSUxJQlMgPSAibXVsdGlsaWI6bGliMzIiCitERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSAieDg2IgorQkJfU0lHTkFUVVJFX0hBTkRMRVIgPSAiT0VCYXNpY0hhc2giCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCisgICAgICAgIGJpdGJha2UoImJpbnV0aWxzLW5hdGl2ZSAgLVMgbm9uZSIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCitNQUNISU5FID0gXCJxZW11eDg2Y29weVwiCitCQl9TSUdOQVRVUkVfSEFORExFUiA9ICJPRUJhc2ljSGFzaCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIGJpdGJha2UoImJpbnV0aWxzLW5hdGl2ZSAtUyBub25lIikKKworICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgorICAgICAgICAgICAgZiA9IFtdCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgZi5hcHBlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzIikKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcyIpCisgICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikgZm9yIHggaW4gZmlsZXMyXQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKKworCiAgICAgZGVmIHRlc3Rfc3N0YXRlX25vb3Bfc2FtZXNpZ3Moc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiB0d28gYnVpbGRzIHdpdGggdGhlc2UgdmFyaWFibGVzIGNoYW5nZWQgb3IKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXNyb290LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3Jvb3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUzNDkyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXNyb290LnB5CkBAIC0wLDAgKzEsMzcgQEAKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworCitpbXBvcnQgdXVpZAorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0ICBiaXRiYWtlCisKK2NsYXNzIFN5c3Jvb3RUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3N5c3Jvb3RfY2xlYW51cChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEJ1aWxkIHN5c3Jvb3QgdGVzdCB3aGljaCBkZXBlbmRzIG9uIHZpcnR1YWwvc3lzcm9vdC10ZXN0IGZvciBvbmUgbWFjaGluZSwKKyAgICAgICAgc3dpdGNoIG1hY2hpbmUsIHN3aXRjaCBwcm92aWRlciBvZiB2aXJ0dWFsL3N5c3Jvb3QtdGVzdCBhbmQgY2hlY2sgdGhhdCB0aGUKKyAgICAgICAgc3lzcm9vdCBpcyBjb3JyZWN0bHkgY2xlYW5lZCB1cC4gVGhlIGZpbGVzIGluIHRoZSB0d28gcHJvdmlkZXJzIG92ZXJsYXAKKyAgICAgICAgc28gY2FuIGNhdXNlIGVycm9ycyBpZiB0aGUgc3lzcm9vdCBjb2RlIGRvZXNuJ3QgZnVuY3Rpb24gY29ycmVjdGx5LgorICAgICAgICBZZXMsIHN5c3Jvb3QtdGVzdCBzaG91bGQgYmUgbWFjaGluZSBzcGVjaWZpYyByZWFsbHkgdG8gYXZvaWQgdGhpcywgaG93ZXZlcgorICAgICAgICB0aGUgc3lzcm9vdCBjbGVhbnVwIHNob3VsZCBhbHNvIHdvcmsgW1lPQ1RPICMxMzcwMl0uIAorICAgICAgICAiIiIKKworICAgICAgICB1dWlkMSA9IHV1aWQudXVpZDQoKQorICAgICAgICB1dWlkMiA9IHV1aWQudXVpZDQoKQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvc3lzcm9vdC10ZXN0ID0gInN5c3Jvb3QtdGVzdC1hcmNoMSIKK01BQ0hJTkUgPSAicWVtdXg4NiIKK1RFU1RTVFJJTkdfcG4tc3lzcm9vdC10ZXN0LWFyY2gxID0gIiVzIgorVEVTVFNUUklOR19wbi1zeXNyb290LXRlc3QtYXJjaDIgPSAiJXMiCisiIiIgJSAodXVpZDEsIHV1aWQyKSkKKyAgICAgICAgYml0YmFrZSgic3lzcm9vdC10ZXN0IikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9zeXNyb290LXRlc3QgPSAic3lzcm9vdC10ZXN0LWFyY2gyIgorTUFDSElORSA9ICJxZW11eDg2Y29weSIKK1RFU1RTVFJJTkdfcG4tc3lzcm9vdC10ZXN0LWFyY2gxID0gIiVzIgorVEVTVFNUUklOR19wbi1zeXNyb290LXRlc3QtYXJjaDIgPSAiJXMiCisiIiIgJSAodXVpZDEsIHV1aWQyKSkKKyAgICAgICAgYml0YmFrZSgic3lzcm9vdC10ZXN0IikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKaW5kZXggNDJhMWI2Yi4uZDFhYTdiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKQEAgLTY1LDE5ICs2NSw2IEBACiAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQTicsICdoZWxsbycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycsIGxvY2FsZGF0YS5nZXRWYXIoJ0JQTicpKQogCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlX2luaXRpYWxfZGF0YXN0b3JlKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCi0gICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJwotICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBpZiBub3QgYmVzdDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGRjb3B5ID0gYmIuZGF0YS5jcmVhdGVDb3B5KHRpbmZvaWwuY29uZmlnX2RhdGEpCi0gICAgICAgICAgICBkY29weS5zZXRWYXIoJ01ZVkFSSUFCTEUnLCAnc29tZXZhbHVlJykKLSAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdLCBjb25maWdfZGF0YT1kY29weSkKLSAgICAgICAgICAgICMgQ2hlY2sgd2UgY2FuIGdldCB2YXJpYWJsZSB2YWx1ZXMKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NvbWV2YWx1ZScsIHJkLmdldFZhcignTVlWQVJJQUJMRScpKQotCiAgICAgZGVmIHRlc3RfbGlzdF9yZWNpcGVzKHNlbGYpOgogICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CiAgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQppbmRleCAwYzAzYjRiLi5jODc2NWU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKQEAgLTQ0LDYgKzQ0LDMwIEBACiAgICAgICAgIHJldHVybiB3cmFwcGVkX2YKICAgICByZXR1cm4gd3JhcHBlcgogCitkZWYgZXh0cmFjdF9maWxlcyhkZWJ1Z2ZzX291dHB1dCk6CisgICAgIiIiCisgICAgZXh0cmFjdCBmaWxlIG5hbWVzIGZyb20gdGhlIG91dHB1dCBvZiBkZWJ1Z2ZzIC1SICdscyAtcCcsCisgICAgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorCisgICAgIC8yLzA0MDc1NS8wLzAvLi8vXG4KKyAgICAgLzIvMDQwNzU1LzAvMC8uLi8vXG4KKyAgICAgLzExLzA0MDcwMC8wLzAvbG9zdCtmb3VuZF5NLy9cbgorICAgICAvMTIvMDQwNzU1LzEwMDIvMTAwMi9ydW4vL1xuCisgICAgIC8xMy8wNDA3NTUvMTAwMi8xMDAyL3N5cy8vXG4KKyAgICAgLzE0LzA0MDc1NS8xMDAyLzEwMDIvYmluLy9cbgorICAgICAvODAvMDQwNzU1LzEwMDIvMTAwMi92YXIvL1xuCisgICAgIC85Mi8wNDA3NTUvMTAwMi8xMDAyL3RtcC8vXG4KKyAgICAiIiIKKyAgICAjIE5PVEUgdGhlIG9jY2FzaW9uYWwgXk0gaW4gZmlsZSBuYW1lcworICAgIHJldHVybiBbbGluZS5zcGxpdCgnLycpWzVdLnN0cmlwKCkgZm9yIGxpbmUgaW4gXAorICAgICAgICAgICAgZGVidWdmc19vdXRwdXQuc3RyaXAoKS5zcGxpdCgnL1xuJyldCisKK2RlZiBmaWxlc19vd25fYnlfcm9vdChkZWJ1Z2ZzX291dHB1dCk6CisgICAgZm9yIGxpbmUgaW4gZGVidWdmc19vdXRwdXQuc3RyaXAoKS5zcGxpdCgnL1xuJyk6CisgICAgICAgIGlmIGxpbmUuc3BsaXQoJy8nKVszOjVdICE9IFsnMCcsICcwJ106CisgICAgICAgICAgICBwcmludChkZWJ1Z2ZzX291dHB1dCkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCiAKIGNsYXNzIFdpY1Rlc3RDYXNlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAgICAgIiIiV2ljIHRlc3QgY2xhc3MuIiIiCkBAIC02Niw2ICs5MCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnd2ljLXRvb2xzIGNhbm5vdCBiZSBidWlsdCBkdWUgaXRzIChpbnRsdG9vbHxnZXR0ZXh0KS1uYXRpdmUgZGVwZW5kZW5jeSBhbmQgTkxTIGRpc2FibGUnKQogCiAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzJykKICAgICAgICAgICAgIFdpY1Rlc3RDYXNlLmltYWdlX2lzX3JlYWR5ID0gVHJ1ZQogCiAgICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQpAQCAtMzkzLDI0ICs0MTgsNiBAQAogICAgICAgICAgICAgICAgIHJ1bkNtZCgiZGQgaWY9JXMgb2Y9JXMgc2tpcD0lZCBjb3VudD0lZCIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWNpbWcsIHBhcnRfZmlsZSwgc3RhcnQsIGxlbmd0aCkpCiAKLSAgICAgICAgICAgIGRlZiBleHRyYWN0X2ZpbGVzKGRlYnVnZnNfb3V0cHV0KToKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICBleHRyYWN0IGZpbGUgbmFtZXMgZnJvbSB0aGUgb3V0cHV0IG9mIGRlYnVnZnMgLVIgJ2xzIC1wJywKLSAgICAgICAgICAgICAgICB3aGljaCBsb29rcyBsaWtlIHRoaXM6Ci0KLSAgICAgICAgICAgICAgICAgLzIvMDQwNzU1LzAvMC8uLy9cbgotICAgICAgICAgICAgICAgICAvMi8wNDA3NTUvMC8wLy4uLy9cbgotICAgICAgICAgICAgICAgICAvMTEvMDQwNzAwLzAvMC9sb3N0K2ZvdW5kXk0vL1xuCi0gICAgICAgICAgICAgICAgIC8xMi8wNDA3NTUvMTAwMi8xMDAyL3J1bi8vXG4KLSAgICAgICAgICAgICAgICAgLzEzLzA0MDc1NS8xMDAyLzEwMDIvc3lzLy9cbgotICAgICAgICAgICAgICAgICAvMTQvMDQwNzU1LzEwMDIvMTAwMi9iaW4vL1xuCi0gICAgICAgICAgICAgICAgIC84MC8wNDA3NTUvMTAwMi8xMDAyL3Zhci8vXG4KLSAgICAgICAgICAgICAgICAgLzkyLzA0MDc1NS8xMDAyLzEwMDIvdG1wLy9cbgotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAgICMgTk9URSB0aGUgb2NjYXNpb25hbCBeTSBpbiBmaWxlIG5hbWVzCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcvJylbNV0uc3RyaXAoKSBmb3IgbGluZSBpbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2ZzX291dHB1dC5zdHJpcCgpLnNwbGl0KCcvXG4nKV0KLQogICAgICAgICAgICAgIyBUZXN0IHBhcnRpdGlvbiAxLCBzaG91bGQgY29udGFpbiB0aGUgbm9ybWFsIHJvb3QgZGlyZWN0b3JpZXMsIGV4Y2VwdAogICAgICAgICAgICAgIyAvdXNyLgogICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXApAQCAtNDUxLDYgKzQ1OCwxMDQgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKIAorICAgIGRlZiB0ZXN0X2luY2x1ZGVfcGF0aChzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWluY2x1ZGUtcGF0aCB3a3Mgb3B0aW9uLiIiIgorCisgICAgICAgIG9sZHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKyAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZ2V0X2JiX3ZhcigiUEFUSCIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3Rlc3QtaW5jbHVkZScpCisgICAgICAgICAgICBvcy5tYWtlZGlycyhpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3Rlc3QtZmlsZScpLCAndycpIGFzIHQ6CisgICAgICAgICAgICAgICAgdC53cml0ZSgidGVzdFxuIikKKyAgICAgICAgICAgIHdrc19maWxlID0gb3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3RlbXAud2tzJykKKyAgICAgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICAgICAgcm9vdGZzX2RpciA9IGdldF9iYl92YXIoJ0lNQUdFX1JPT1RGUycsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgICAgIHdrcy53cml0ZSgiIiIKK3BhcnQgL3BhcnQxIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQKK3BhcnQgL3BhcnQyIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggJXMiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5jbHVkZV9wYXRoKSkKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpCisKKyAgICAgICAgICAgIHBhcnQxID0gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAxJykpWzBdCisgICAgICAgICAgICBwYXJ0MiA9IGdsb2Iob3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVtcC0qLmRpcmVjdC5wMicpKVswXQorCisgICAgICAgICAgICAjIFRlc3QgcGFydGl0aW9uIDEsIHNob3VsZCBub3QgY29udGFpbiAndGVzdC1maWxlJworICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgKHBhcnQxKSkKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigndGVzdC1maWxlJywgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGZpbGVzX293bl9ieV9yb290KHJlcy5vdXRwdXQpKQorCisgICAgICAgICAgICAjIFRlc3QgcGFydGl0aW9uIDIsIHNob3VsZCBjb250YWluICd0ZXN0LWZpbGUnCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDIpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0LWZpbGUnLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKKworICAgIGRlZiB0ZXN0X2luY2x1ZGVfcGF0aF9lbWJlZGVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0taW5jbHVkZS1wYXRoIHdrcyBvcHRpb24uIiIiCisKKyAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVzdC1pbmNsdWRlJykKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVzdC1maWxlJyksICd3JykgYXMgdDoKKyAgICAgICAgICAgICAgICB0LndyaXRlKCJ0ZXN0XG4iKQorICAgICAgICAgICAgd2tzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVtcC53a3MnKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgICAgICB3a3Mud3JpdGUoIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzICAtLWZzdHlwZT1leHQ0IC0taW5jbHVkZS1wYXRoICVzIC0taW5jbHVkZS1wYXRoIGNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyBleHBvcnQvIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGluY2x1ZGVfcGF0aCkpCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKQorCisgICAgICAgICAgICBwYXJ0MSA9IGdsb2Iob3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVtcC0qLmRpcmVjdC5wMScpKVswXQorCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDEpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0LWZpbGUnLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAgL2V4cG9ydC9ldGMvJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDEpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwYXNzd2QnLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKKworICAgIGRlZiB0ZXN0X2luY2x1ZGVfcGF0aF9lcnJvcnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1pbmNsdWRlLXBhdGggd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKKyAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCisKKyAgICAgICAgIyBBYnNvbHV0ZSBhcmd1bWVudC4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0taW5jbHVkZS1wYXRoIGNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyAvZXhwb3J0IikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKKyAgICAgICAgIyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzIC4vLi8uLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCisgICAgICAgICMgMyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzIGV4cG9ydC8gZHVtbXkiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKwogICAgIGRlZiB0ZXN0X2V4Y2x1ZGVfcGF0aF9lcnJvcnMoc2VsZik6CiAgICAgICAgICIiIlRlc3QgLS1leGNsdWRlLXBhdGggd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKICAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCkBAIC00NjksNiArNTc0LDg5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQogICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCiAKKyAgICBkZWYgdGVzdF9wZXJtaXNzaW9ucyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwZXJtaXNzaW9ucyBhcmUgcmVzcGVjdGVkIiIiCisKKyAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCisKKyAgICAgICAgdF9ub3JtYWwgPSAiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NAorIiIiCisgICAgICAgIHRfZXhjbHVkZSA9ICIiIgorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoPWhvbWUKKyIiIgorICAgICAgICB0X211bHRpID0gIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0CitwYXJ0IC9leHBvcnQgLS1zb3VyY2Ugcm9vdGZzIC0tcm9vdGZzPWNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyAtLWZzdHlwZT1leHQ0CisiIiIKKyAgICAgICAgdF9jaGFuZ2UgPSAiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGg9ZXRjL8KgIMKgCitwYXJ0IC9ldGMgLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1jaGFuZ2UtZGlyZWN0b3J5PWV0YworIiIiCisgICAgICAgIHRlc3RzID0gW3Rfbm9ybWFsLCB0X2V4Y2x1ZGUsIHRfbXVsdGksIHRfY2hhbmdlXQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3Rlc3QtaW5jbHVkZScpCisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgICAgIHdrc19maWxlID0gb3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3RlbXAud2tzJykKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgICAgICAgICB3a3Mud3JpdGUodGVzdCkKKyAgICAgICAgICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKQorCisgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAqJykpOgorICAgICAgICAgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAorCisgICAgZGVmIHRlc3RfY2hhbmdlX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWNoYW5nZS1kaXJlY3Rvcnkgd2tzIG9wdGlvbi4iIiIKKworICAgICAgICBvbGRwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGdldF9iYl92YXIoIlBBVEgiLCAid2ljLXRvb2xzIikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZXN0LWluY2x1ZGUnKQorICAgICAgICAgICAgb3MubWFrZWRpcnMoaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgd2tzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVtcC53a3MnKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgL2V0YyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWNoYW5nZS1kaXJlY3Rvcnk9ZXRjIikKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpCisKKyAgICAgICAgICAgIHBhcnQxID0gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAxJykpWzBdCisKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIChwYXJ0MSkpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Bhc3N3ZCcsIGZpbGVzKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VfZGlyZWN0b3J5X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWNoYW5nZS1kaXJlY3Rvcnkgd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKKyAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCisKKyAgICAgICAgIyBBYnNvbHV0ZSBhcmd1bWVudC4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tY2hhbmdlLWRpcmVjdG9yeSAvdXNyIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKKyAgICAgICAgIyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1jaGFuZ2UtZGlyZWN0b3J5IC4vLi8uLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCiBjbGFzcyBXaWMyKFdpY1Rlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2JtYXBfc2hvcnQoc2VsZik6CkBAIC01MDAsNyArNjg4LDggQEAKICAgICAgICAgIyBmaWx0ZXIgb3V0IG9wdGlvbmFsIHZhcmlhYmxlcwogICAgICAgICB3aWN2YXJzID0gd2ljdmFycy5kaWZmZXJlbmNlKCgnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9CT09UX0ZJTEVTJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lOSVRSRCcsICdJTklUUkRfTElWRScsICdJU09ESVInLCdJTklUUkFNRlNfSU1BR0UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5JVFJBTUZTX0lNQUdFX0JVTkRMRScsICdJTklUUkFNRlNfTElOS19OQU1FJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTklUUkFNRlNfSU1BR0VfQlVORExFJywgJ0lOSVRSQU1GU19MSU5LX05BTUUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQVBQRU5EJykpCiAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBlbnZmaWxlOgogICAgICAgICAgICAgY29udGVudCA9IGRpY3QobGluZS5zcGxpdCgiPSIsIDEpIGZvciBsaW5lIGluIGVudmZpbGUpCiAgICAgICAgICAgICAjIHRlc3QgaWYgdmFyaWFibGVzIHVzZWQgYnkgd2ljIHByZXNlbnQgaW4gdGhlIC5lbnYgZmlsZQpAQCAtODY2LDYgKzEwNTUsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguYmFzZW5hbWUodGVzdGRpcikgaW4gcmVzdWx0Lm91dHB1dCkKIAorICAgICAgICAgICAgIyBjb3B5IHRoZSBmaWxlIGZyb20gdGhlIHBhcnRpdGlvbiBhbmQgY2hlY2sgaWYgaXQgc3VjY2VzcworICAgICAgICAgICAgZGVzdCA9ICclcy1jcCcgJSB0ZXN0ZmlsZS5uYW1lCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcCAlczoxLyVzICVzIC1uICVzIiAlIChpbWFnZXNbMF0sCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUubmFtZSksIGRlc3QsIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRlc3QpKQorCisKICAgICBkZWYgdGVzdF93aWNfcm0oc2VsZik6CiAgICAgICAgICIiIlRlc3QgcmVtb3ZpbmcgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZyb20gdGhlIHRoZSB3aWMgaW1hZ2UuIiIiCiAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgpAQCAtMTAwNSw2ICsxMjAxLDE2IEBACiAgICAgICAgICAgICBuZXdkaXJzID0gc2V0KGxpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkaXJzLmRpZmZlcmVuY2UoZGlycyksIHNldChbb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZS5uYW1lKV0pKQogCisgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBmaWxlIHRvIGNvcHkgaXMgaW4gdGhlIHBhcnRpdGlvbgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi9ldGMvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmc3RhYicgaW4gW2xpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lXSkKKworICAgICAgICAgICAgIyBjb3B5IGZpbGUgZnJvbSB0aGUgcGFydGl0aW9uLCByZXBsYWNlIHRoZSB0ZW1wb3JhcnkgZmlsZSBjb250ZW50IHdpdGggaXQgYW5kCisgICAgICAgICAgICAjIGNoZWNrIGZvciB0aGUgZmlsZSBzaXplIHRvIHZhbGlkYXRlIHRoZSBjb3B5CisgICAgICAgICAgICBydW5DbWQoIndpYyBjcCAlczoyL2V0Yy9mc3RhYiAlcyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCB0ZXN0ZmlsZS5uYW1lLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5zdGF0KHRlc3RmaWxlLm5hbWUpLnN0X3NpemUgPiAwKQorCisKICAgICBkZWYgdGVzdF93aWNfcm1fZXh0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IHJlbW92aW5nIGZpbGVzIGZyb20gdGhlIGV4dCBwYXJ0aXRpb24uIiIiCiAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQppbmRleCBjNGViNWQ2Li40OGVjNWQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQpAQCAtOSwxMiArOSwxMiBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzaWduYWwKLWZyb20gc2h1dGlsIGltcG9ydCBjb3B5ZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2UKIAogaW1wb3J0IG9lcWEKIGltcG9ydCBvZQoraW1wb3J0IGJiLnV0aWxzCiAKIGZyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHQsIE9FVGVzdENvbnRleHRFeGVjdXRvcgogZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBUHJlUnVuLCBPRVFBVGVzdE5vdEZvdW5kCkBAIC0yOSw2ICsyOSw1NCBAQAogICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmlnX3BhdGhzID0gY29uZmlnX3BhdGhzCiAKKyAgICBkZWYgc2V0dXBfYnVpbGRkaXIoc2VsZiwgc3VmZml4LCBzZWxmdGVzdGRpciwgc3VpdGUpOgorICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bJ0JVSUxERElSJ10KKyAgICAgICAgaWYgbm90IHNlbGZ0ZXN0ZGlyOgorICAgICAgICAgICAgc2VsZnRlc3RkaXIgPSBnZXRfdGVzdF9sYXllcigpCisgICAgICAgIG5ld2J1aWxkZGlyID0gYnVpbGRkaXIgKyBzdWZmaXgKKyAgICAgICAgbmV3c2VsZnRlc3RkaXIgPSBuZXdidWlsZGRpciArICIvbWV0YS1zZWxmdGVzdCIKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhuZXdidWlsZGRpcik6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiQnVpbGQgZGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLCBhYm9ydGluZyIgJSBuZXdidWlsZGRpcikKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG5ld2J1aWxkZGlyKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jb25mIiwgbmV3YnVpbGRkaXIgKyAiL2NvbmYiKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jYWNoZSIsIG5ld2J1aWxkZGlyICsgIi9jYWNoZSIpCisgICAgICAgIG9lLnBhdGguY29weXRyZWUoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQorCisgICAgICAgIGZvciBlIGluIG9zLmVudmlyb246CisgICAgICAgICAgICBpZiBidWlsZGRpciArICIvIiBpbiBvcy5lbnZpcm9uW2VdIG9yIG9zLmVudmlyb25bZV0uZW5kc3dpdGgoYnVpbGRkaXIpOgorICAgICAgICAgICAgICAgIG9zLmVudmlyb25bZV0gPSBvcy5lbnZpcm9uW2VdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJnaXQgaW5pdDsgZ2l0IGFkZCAqOyBnaXQgY29tbWl0IC1hIC1tICdpbml0aWFsJyIsIGN3ZD1uZXdzZWxmdGVzdGRpciwgc2hlbGw9VHJ1ZSkKKworICAgICAgICAjIFRyaWVkIHRvIHVzZWQgYml0YmFrZS1sYXllcnMgYWRkL3JlbW92ZSBidXQgaXQgcmVxdWlyZXMgcmVjaXBlIHBhcnNpbmcgYW5kIGhlbmNlIGlzIHRvbyBzbG93CisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJzZWQgJXMvY29uZi9iYmxheWVycy5jb25mIC1pIC1lICdzIyVzIyVzI2cnIiAlIChuZXdidWlsZGRpciwgc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKSwgY3dkPW5ld2J1aWxkZGlyLCBzaGVsbD1UcnVlKQorCisgICAgICAgIG9zLmNoZGlyKG5ld2J1aWxkZGlyKQorCisgICAgICAgIGZvciB0IGluIHN1aXRlOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIodCwgInRjIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNwID0gdC50Yy5jb25maWdfcGF0aHMKKyAgICAgICAgICAgIGZvciBwIGluIGNwOgorICAgICAgICAgICAgICAgIGlmIHNlbGZ0ZXN0ZGlyIGluIGNwW3BdIGFuZCBuZXdzZWxmdGVzdGRpciBub3QgaW4gY3BbcF06CisgICAgICAgICAgICAgICAgICAgIGNwW3BdID0gY3BbcF0ucmVwbGFjZShzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpCisgICAgICAgICAgICAgICAgaWYgYnVpbGRkaXIgaW4gY3BbcF0gYW5kIG5ld2J1aWxkZGlyIG5vdCBpbiBjcFtwXToKKyAgICAgICAgICAgICAgICAgICAgY3BbcF0gPSBjcFtwXS5yZXBsYWNlKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikKKworICAgICAgICByZXR1cm4gKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikKKworICAgIGRlZiBwcmVwYXJlU3VpdGUoc2VsZiwgc3VpdGVzLCBwcm9jZXNzZXMpOgorICAgICAgICBpZiBwcm9jZXNzZXM6CisgICAgICAgICAgICBmcm9tIG9lcWEuY29yZS51dGlscy5jb25jdXJyZW5jeXRlc3QgaW1wb3J0IENvbmN1cnJlbnRUZXN0U3VpdGUKKworICAgICAgICAgICAgcmV0dXJuIENvbmN1cnJlbnRUZXN0U3VpdGUoc3VpdGVzLCBwcm9jZXNzZXMsIHNlbGYuc2V0dXBfYnVpbGRkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNldHVwX2J1aWxkZGlyKCItc3QiLCBOb25lLCBzdWl0ZXMpCisgICAgICAgICAgICByZXR1cm4gc3VpdGVzCisKICAgICBkZWYgcnVuVGVzdHMoc2VsZiwgcHJvY2Vzc2VzPU5vbmUsIG1hY2hpbmU9Tm9uZSwgc2tpcHM9W10pOgogICAgICAgICBpZiBtYWNoaW5lOgogICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gbWFjaGluZQpAQCAtMTM1LDI2ICsxODMsMTAgQEAKIAogICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIpCiAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddID0ge30KLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ3Rlc3RsYXllcl9wYXRoJ10gPSBcCi0gICAgICAgICAgICAgICAgZ2V0X3Rlc3RfbGF5ZXIoKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsndGVzdGxheWVyX3BhdGgnXSA9IGdldF90ZXN0X2xheWVyKCkKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2J1aWxkZGlyJ10gPSBidWlsZGRpcgotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZl9iYWNrdXAnXSA9IFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYub3JpZyIpCi0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mLmJrIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2JhY2t1cCddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZi5vcmlnIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZi5iayIpCi0KLSAgICAgICAgY29weWZpbGUoc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZiddLAotICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfYmFja3VwJ10pCi0gICAgICAgIGNvcHlmaWxlKHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddLCAKLSAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfYmFja3VwJ10pCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmYnXSA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikKIAogICAgICAgICBkZWYgdGFnX2ZpbHRlcih0YWdzKToKICAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV90YWdzOgpAQCAtMjc5LDE0ICszMTEsOSBAQAogCiAgICAgICAgIHJldHVybiByYwogCi0gICAgZGVmIF9zaWduYWxfY2xlYW5faGFuZGxlcihzZWxmLCBzaWdudW0sIGZyYW1lKToKLSAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAKICAgICBkZWYgcnVuKHNlbGYsIGxvZ2dlciwgYXJncyk6CiAgICAgICAgIHNlbGYuX3Byb2Nlc3NfYXJncyhsb2dnZXIsIGFyZ3MpCiAKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgc2VsZi5fc2lnbmFsX2NsZWFuX2hhbmRsZXIpCi0KICAgICAgICAgcmMgPSBOb25lCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGFyZ3MubWFjaGluZToKQEAgLTMxNSwyMCArMzQyLDYgQEAKICAgICAgICAgICAgICAgICByYyA9IHNlbGYuX2ludGVybmFsX3J1bihsb2dnZXIsIGFyZ3MpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBjb25maWdfcGF0aHMgPSBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10pOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2JhY2t1cCddLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGhzWydsb2NhbGNvbmYnXSkKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10pCi0KLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10pOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGhzWydiYmxheWVycyddKQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2JhY2t1cCddKQotCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXSk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydiYmxheWVyc19jbGFzc19iYWNrdXAnXSk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfY2xhc3NfYmFja3VwJ10pCiAKICAgICAgICAgICAgIG91dHB1dF9saW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShhcmdzLm91dHB1dF9sb2cpLAogICAgICAgICAgICAgICAgICAgICAiJXMtcmVzdWx0cy5sb2ciICUgc2VsZi5uYW1lKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQppbmRleCAxNDQ1ZTNlLi4yYWE1NDhlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQpAQCAtMTE3LDkgKzExNyw5IEBACiAgICAgICAgIGltcG9ydCBvZS5wYXRoCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLnRlc3RkaXIpCiAgICAgICAgIHNlbGYucWVtdXJ1bm5lcmxvZyA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdxZW11cnVubmVyX2xvZy4lcycgJSBzZWxmLmRhdGV0aW1lKQotICAgICAgICBsb2dnZXJoYW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLnFlbXVydW5uZXJsb2cpCi0gICAgICAgIGxvZ2dlcmhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQotICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKGxvZ2dlcmhhbmRsZXIpCisgICAgICAgIHNlbGYubG9nZ2VyaGFuZGxlciA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoc2VsZi5xZW11cnVubmVybG9nKQorICAgICAgICBzZWxmLmxvZ2dlcmhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYubG9nZ2VyaGFuZGxlcikKICAgICAgICAgb2UucGF0aC5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUoc2VsZi5xZW11cnVubmVybG9nKSwgb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3FlbXVydW5uZXJfbG9nJyksIGZvcmNlPVRydWUpCiAKICAgICAgICAgaWYgZC5nZXRWYXIoIkRJU1RSTyIpID09ICJwb2t5LXRpbnkiOgpAQCAtMTQzLDcgKzE0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2t2bSA9IHVzZV9rdm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9kaXIgPSBkdW1wX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcyA9IGQuZ2V0VmFyKCJ0ZXN0aW1hZ2VfZHVtcF9ob3N0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxfcG9ydHMgPSBsZW4oZC5nZXRWYXIoIlNFUklBTF9DT05TT0xFUyIpLnNwbGl0KCkpKQogCiAgICAgICAgIHNlbGYudGFyZ2V0X2R1bXBlciA9IFRhcmdldER1bXBlcihkdW1wX3RhcmdldF9jbWRzLCBkdW1wX2Rpciwgc2VsZi5ydW5uZXIpCiAKQEAgLTE4Miw2ICsxODMsNyBAQAogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQorICAgICAgICBzZWxmLmxvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYubG9nZ2VyaGFuZGxlcikKICAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gTm9uZQogICAgICAgICBzZWxmLmlwID0gTm9uZQogICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IE5vbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQppbmRleCBkYzFlMjg2Li5mMTY3OTg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CkBAIC0zMTUsMTUgKzMxNSwxNSBAQAogICAgIHRyeToKICAgICAgICAgdGluZm9pbC5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQogICAgICAgICBpbXBvcnQgb2VxYS50YXJnZXRjb250cm9sCi0gICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCJURVNUX0xPR19ESVIiLCAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIiwgIjEwMDAiKQorICAgICAgICByZWNpcGVkYXRhID0gdGluZm9pbC5wYXJzZV9yZWNpcGUocG4pCisgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKCJURVNUX0xPR19ESVIiLCAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiKQorICAgICAgICByZWNpcGVkYXRhLnNldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIiwgIjEwMDAiKQogICAgICAgICAjIFRlbGwgUWVtdVRhcmdldCgpIHdoZXRoZXIgbmVlZCBmaW5kIHJvb3Rmcy9rZXJuZWwgb3Igbm90CiAgICAgICAgIGlmIGxhdW5jaF9jbWQ6Ci0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMCcpCisgICAgICAgICAgICByZWNpcGVkYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMCcpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMScpCisgICAgICAgICAgICByZWNpcGVkYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMScpCiAKLSAgICAgICAgcmVjaXBlZGF0YSA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKHBuKQogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBvdmVycmlkZXMuaXRlbXMoKToKICAgICAgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKGtleSwgdmFsdWUpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9kdW1wLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkKaW5kZXggZDM0ZTA1ZS4uMDlhNDQzMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkKQEAgLTcxLDggKzcxLDExIEBACiAgICAgZGVmIGR1bXBfaG9zdChzZWxmLCBkdW1wX2Rpcj0iIik6CiAgICAgICAgIGlmIGR1bXBfZGlyOgogICAgICAgICAgICAgc2VsZi5kdW1wX2RpciA9IGR1bXBfZGlyCisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGVudlsnUEFUSCddID0gJy91c3Ivc2Jpbjovc2JpbjovdXNyL2JpbjovYmluJworICAgICAgICBlbnZbJ0NPTFVNTlMnXSA9ICc5OTk5JwogICAgICAgICBmb3IgY21kIGluIHNlbGYuY21kczoKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgZW52PWVudikKICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2R1bXAoY21kLnNwbGl0KClbMF0sIHJlc3VsdC5vdXRwdXQpCiAKIGNsYXNzIFRhcmdldER1bXBlcihCYXNlRHVtcGVyKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkKaW5kZXggYWE0MzU1OS4uNThkM2MzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkKQEAgLTIyLDEwICsyMiwxMCBAQAogCiBjbGFzcyBIVFRQU2VydmljZShvYmplY3QpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3RfZGlyLCBob3N0PScnLCBsb2dnZXI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3RfZGlyLCBob3N0PScnLCBwb3J0PTAsIGxvZ2dlcj1Ob25lKToKICAgICAgICAgc2VsZi5yb290X2RpciA9IHJvb3RfZGlyCiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKLSAgICAgICAgc2VsZi5wb3J0ID0gMAorICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQppbmRleCA3MzEzZGY4Li42MGUxNmQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKQEAgLTI1LDEzICsyNSwyMCBAQAogICAgICAgICBzZWN0aW9uX3JlZ2V4WydleGl0Y29kZSddID0gcmUuY29tcGlsZShyIl5FUlJPUjogRXhpdCBzdGF0dXMgaXMgKC4rKSIpCiAgICAgICAgIHNlY3Rpb25fcmVnZXhbJ3RpbWVvdXQnXSA9IHJlLmNvbXBpbGUociJeVElNRU9VVDogLiovKC4rKS9wdGVzdCIpCiAKKyAgICAgICAgIyBDYWNoZSBtYXJrZXJzIHNvIHdlIGRvbid0IHRha2UgdGhlIHJlLnNlYXJjaCgpIGhpdCBhbGwgdGhlIHRpbWUuCisgICAgICAgIG1hcmtlcnMgPSAoIlBBU1M6IiwgIkZBSUw6IiwgIlNLSVA6IiwgIkJFR0lOOiIsICJFTkQ6IiwgIkRVUkFUSU9OOiIsICJFUlJPUjogRXhpdCIsICJUSU1FT1VUOiIpCisKICAgICAgICAgZGVmIG5ld3NlY3Rpb24oKToKLSAgICAgICAgICAgIHJldHVybiB7ICduYW1lJzogIk5vLXNlY3Rpb24iLCAnbG9nJzogIiIgfQorICAgICAgICAgICAgcmV0dXJuIHsgJ25hbWUnOiAiTm8tc2VjdGlvbiIsICdsb2cnOiBbXSB9CiAKICAgICAgICAgY3VycmVudF9zZWN0aW9uID0gbmV3c2VjdGlvbigpCiAKICAgICAgICAgd2l0aCBvcGVuKGxvZ2ZpbGUsIGVycm9ycz0ncmVwbGFjZScpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgobWFya2Vycyk6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblsnbG9nJ10uYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWN0aW9uX3JlZ2V4WydiZWdpbiddLnNlYXJjaChsaW5lKQogICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uWyduYW1lJ10gPSByZXN1bHQuZ3JvdXAoMSkKQEAgLTYxLDcgKzY4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblt0XSA9IHJlc3VsdC5ncm91cCgxKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblsnbG9nJ10gPSBjdXJyZW50X3NlY3Rpb25bJ2xvZyddICsgbGluZSAKKyAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb25bJ2xvZyddLmFwcGVuZChsaW5lKQogCiAgICAgICAgICAgICAgICAgZm9yIHQgaW4gdGVzdF9yZWdleDoKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9yZWdleFt0XS5zZWFyY2gobGluZSkKQEAgLTcwLDYgKzc3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRzW2N1cnJlbnRfc2VjdGlvblsnbmFtZSddXSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHNbY3VycmVudF9zZWN0aW9uWyduYW1lJ11dW3Jlc3VsdC5ncm91cCgxKS5zdHJpcCgpXSA9IHQKIAorICAgICAgICAjIFB5dGhvbiBwZXJmb3JtYW5jZSBmb3IgcmVwZWF0ZWRseSBqb2luaW5nIGxvbmcgc3RyaW5ncyBpcyBwb29yLCBkbyBpdCBhbGwgYXQgb25jZSBhdCB0aGUgZW5kLgorICAgICAgICAjIEZvciAyLjEgbWlsbGlvbiBsaW5lcyBpbiBhIGxvZyB0aGlzIHJlZHVjZXMgMTggaG91cnMgdG8gMTJzLgorICAgICAgICBmb3Igc2VjdGlvbiBpbiBzZWxmLnNlY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5zZWN0aW9uc1tzZWN0aW9uXVsnbG9nJ10gPSAiIi5qb2luKHNlbGYuc2VjdGlvbnNbc2VjdGlvbl1bJ2xvZyddKQorCiAgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdHMsIHNlbGYuc2VjdGlvbnMKIAogICAgICMgTG9nIHRoZSByZXN1bHRzIGFzIGZpbGVzLiBUaGUgZmlsZSBuYW1lIGlzIHRoZSBzZWN0aW9uIG5hbWUgYW5kIHRoZSBjb250ZW50cyBhcmUgdGhlIHRlc3RzIGluIHRoYXQgc2VjdGlvbi4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKaW5kZXggZmU4Yjc3ZC4uNGI3NDMzNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCiBmcm9tIG9lcWEudXRpbHMuZHVtcCBpbXBvcnQgSG9zdER1bXBlcgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAogIyBHZXQgVW5pY29kZSBub24gcHJpbnRhYmxlIGNvbnRyb2wgY2hhcnMKIGNvbnRyb2xfcmFuZ2UgPSBsaXN0KHJhbmdlKDAsMzIpKStsaXN0KHJhbmdlKDEyNywxNjApKQpAQCAtMzEsMTAgKzMyLDExIEBACiBjbGFzcyBRZW11UnVubmVyOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hY2hpbmUsIHJvb3RmcywgZGlzcGxheSwgdG1wZGlyLCBkZXBsb3lfZGlyX2ltYWdlLCBsb2dmaWxlLCBib290dGltZSwgZHVtcF9kaXIsIGR1bXBfaG9zdF9jbWRzLAotICAgICAgICAgICAgICAgICB1c2Vfa3ZtLCBsb2dnZXIsIHVzZV9zbGlycD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIHVzZV9rdm0sIGxvZ2dlciwgdXNlX3NsaXJwPUZhbHNlLCBzZXJpYWxfcG9ydHM9MiwgYm9vdF9wYXR0ZXJucyA9IGRlZmF1bHRkaWN0KHN0ciksIHVzZV9vdm1mPUZhbHNlKToKIAogICAgICAgICAjIFBvcGVuIG9iamVjdCBmb3IgcnVucWVtdQogICAgICAgICBzZWxmLnJ1bnFlbXUgPSBOb25lCisgICAgICAgIHNlbGYucnVucWVtdV9leGl0ZWQgPSBGYWxzZQogICAgICAgICAjIHBpZCBvZiB0aGUgcWVtdSBwcm9jZXNzIHRoYXQgcnVucWVtdSB3aWxsIHN0YXJ0CiAgICAgICAgIHNlbGYucWVtdXBpZCA9IE5vbmUKICAgICAgICAgIyB0YXJnZXQgaXAgLSBmcm9tIHRoZSBjb21tYW5kIGxpbmUgb3IgcnVucWVtdSBvdXRwdXQKQEAgLTU0LDggKzU2LDExIEBACiAgICAgICAgIHNlbGYubG9nZ2VkID0gRmFsc2UKICAgICAgICAgc2VsZi50aHJlYWQgPSBOb25lCiAgICAgICAgIHNlbGYudXNlX2t2bSA9IHVzZV9rdm0KKyAgICAgICAgc2VsZi51c2Vfb3ZtZiA9IHVzZV9vdm1mCiAgICAgICAgIHNlbGYudXNlX3NsaXJwID0gdXNlX3NsaXJwCisgICAgICAgIHNlbGYuc2VyaWFsX3BvcnRzID0gc2VyaWFsX3BvcnRzCiAgICAgICAgIHNlbGYubXNnID0gJycKKyAgICAgICAgc2VsZi5ib290X3BhdHRlcm5zID0gYm9vdF9wYXR0ZXJucwogCiAgICAgICAgIHNlbGYucnVucWVtdXRpbWUgPSAxMjAKICAgICAgICAgc2VsZi5xZW11X3BpZGZpbGUgPSAncGlkZmlsZV8nK3N0cihvcy5nZXRwaWQoKSkKQEAgLTY0LDYgKzY5LDI1IEBACiAKICAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIAorICAgICAgICAjIEVuYWJsZSB0ZXN0aW5nIG90aGVyIE9TJ3MKKyAgICAgICAgIyBTZXQgY29tbWFuZHMgZm9yIHRhcmdldCBjb21tdW5pY2F0aW9uLCBhbmQgZGVmYXVsdCB0byBMaW51eCBBTFdBWVMKKyAgICAgICAgIyBPdGhlciBPUydzIG9yIGJhcmVtZXRhbCBhcHBsaWNhdGlvbnMgbmVlZCB0byBwcm92aWRlIHRoZWlyCisgICAgICAgICMgb3duIGltcGxlbWVudGF0aW9uIHBhc3NpbmcgaXQgdGhyb3VnaCBRZW11UnVubmVyJ3MgY29uc3RydWN0b3IKKyAgICAgICAgIyBvciBieSBwYXNzaW5nIHRoZW0gdGhyb3VnaCBURVNUSU1BR0VfQk9PVF9QQVRURVJOU1tmbGFnXQorICAgICAgICAjIHByb3ZpZGVkIHZhcmlhYmxlcywgd2hlcmUgPGZsYWc+IGlzIG9uZSBvZiB0aGUgbWVudGlvbmVkIGJlbG93LgorICAgICAgICBhY2NlcHRlZF9wYXR0ZXJucyA9IFsnc2VhcmNoX3JlYWNoZWRfcHJvbXB0JywgJ3NlbmRfbG9naW5fdXNlcicsICdzZWFyY2hfbG9naW5fc3VjY2VlZGVkJywgJ3NlYXJjaF9jbWRfZmluaXNoZWQnXQorICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnMgPSBkZWZhdWx0ZGljdChzdHIpCisgICAgICAgICMgRGVmYXVsdCB0byB0aGUgdXN1YWwgcGF0ZXJucyB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHRhcmdldAorICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbJ3NlYXJjaF9yZWFjaGVkX3Byb21wdCddID0gYicgbG9naW46JworICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbJ3NlbmRfbG9naW5fdXNlciddID0gJ3Jvb3RcbicKKyAgICAgICAgZGVmYXVsdF9ib290X3BhdHRlcm5zWydzZWFyY2hfbG9naW5fc3VjY2VlZGVkJ10gPSByInJvb3RAW2EtekEtWjAtOVwtXSs6fiMiCisgICAgICAgIGRlZmF1bHRfYm9vdF9wYXR0ZXJuc1snc2VhcmNoX2NtZF9maW5pc2hlZCddID0gciJbYS16QS1aMC05XStAW2EtekEtWjAtOVwtXSs6fiMiCisKKyAgICAgICAgIyBPbmx5IG92ZXJyaWRlIHBhdHRlcm5zIHRoYXQgd2VyZSBzZXQgZS5nLiBsb2dpbiB1c2VyIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TW3NlbmRfbG9naW5fdXNlcl0gPSAid2Vic2VydmVyXG4iCisgICAgICAgIGZvciBwYXR0ZXJuIGluIGFjY2VwdGVkX3BhdHRlcm5zOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuYm9vdF9wYXR0ZXJuc1twYXR0ZXJuXToKKyAgICAgICAgICAgICAgICBzZWxmLmJvb3RfcGF0dGVybnNbcGF0dGVybl0gPSBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbcGF0dGVybl0KKwogICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQpAQCAtOTgsMTEgKzEyMiwxMCBAQAogICAgIGRlZiBoYW5kbGVTSUdDSExEKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgICBpZiBzZWxmLnJ1bnFlbXUgYW5kIHNlbGYucnVucWVtdS5wb2xsKCk6CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCi0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBzZWxmLmdldE91dHB1dChzZWxmLnJ1bnFlbXUuc3Rkb3V0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCdPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMnICUgc2VsZi5nZXRPdXRwdXQoc2VsZi5ydW5xZW11LnN0ZG91dCkpCiAgICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQotICAgICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKIAogICAgIGRlZiBzdGFydChzZWxmLCBxZW11cGFyYW1zID0gTm9uZSwgZ2V0X2lwID0gVHJ1ZSwgZXh0cmFfYm9vdHBhcmFtcyA9IE5vbmUsIHJ1bnFlbXVwYXJhbXM9JycsIGxhdW5jaF9jbWQ9Tm9uZSwgZGlzY2FyZF93cml0ZXM9VHJ1ZSk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0xMzYsMTMgKzE1OSwxNiBAQAogICAgICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyBub2dyYXBoaWMnCiAgICAgICAgICAgICBpZiBzZWxmLnVzZV9zbGlycDoKICAgICAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgc2xpcnAnCisgICAgICAgICAgICBpZiBzZWxmLnVzZV9vdm1mOgorICAgICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyBvdm1mJwogICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnICVzICVzICVzJyAlIChydW5xZW11cGFyYW1zLCBzZWxmLm1hY2hpbmUsIHNlbGYucm9vdGZzKQogCiAgICAgICAgIHJldHVybiBzZWxmLmxhdW5jaChsYXVuY2hfY21kLCBxZW11cGFyYW1zPXFlbXVwYXJhbXMsIGdldF9pcD1nZXRfaXAsIGV4dHJhX2Jvb3RwYXJhbXM9ZXh0cmFfYm9vdHBhcmFtcywgZW52PWVudikKIAogICAgIGRlZiBsYXVuY2goc2VsZiwgbGF1bmNoX2NtZCwgZ2V0X2lwID0gVHJ1ZSwgcWVtdXBhcmFtcyA9IE5vbmUsIGV4dHJhX2Jvb3RwYXJhbXMgPSBOb25lLCBlbnYgPSBOb25lKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi50aHJlYWRzb2NrLCB0aHJlYWRwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzID49IDI6CisgICAgICAgICAgICAgICAgc2VsZi50aHJlYWRzb2NrLCB0aHJlYWRwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCwgc2VsZi5zZXJ2ZXJwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBsaXN0ZW5pbmcgc29ja2V0OiAlcyIgJSBtc2dbMV0pCkBAIC0xNjAsNyArMTg2LDEwIEBACiAgICAgICAgIGlmIHFlbXVwYXJhbXM6CiAgICAgICAgICAgICBzZWxmLnFlbXVwYXJhbXMgPSBzZWxmLnFlbXVwYXJhbXNbOi0xXSArICIgIiArIHFlbXVwYXJhbXMgKyAiICIgKyAnXCInCiAKLSAgICAgICAgbGF1bmNoX2NtZCArPSAnIHRjcHNlcmlhbD0lczolcyAlcycgJSAodGhyZWFkcG9ydCwgc2VsZi5zZXJ2ZXJwb3J0LCBzZWxmLnFlbXVwYXJhbXMpCisgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzID49IDI6CisgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgdGNwc2VyaWFsPSVzOiVzICVzJyAlICh0aHJlYWRwb3J0LCBzZWxmLnNlcnZlcnBvcnQsIHNlbGYucWVtdXBhcmFtcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyB0Y3BzZXJpYWw9JXMgJXMnICUgKHNlbGYuc2VydmVycG9ydCwgc2VsZi5xZW11cGFyYW1zKQogCiAgICAgICAgIHNlbGYub3JpZ2NobGRoYW5kbGVyID0gc2lnbmFsLmdldHNpZ25hbChzaWduYWwuU0lHQ0hMRCkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQ0hMRCwgc2VsZi5oYW5kbGVTSUdDSExEKQpAQCAtMjA2LDYgKzIzNSw4IEBACiAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHNlbGYucnVucWVtdXRpbWUKICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfYWxpdmUoKSBhbmQgdGltZS50aW1lKCkgPCBlbmR0aW1lOgogICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnBvbGwoKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXVfZXhpdGVkOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZToKICAgICAgICAgICAgICAgICAgICAgIyBObyBwb2ludCB3YWl0aW5nIGFueSBsb25nZXIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQpAQCAtMjE1LDYgKzI0Niw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCiAKKyAgICAgICAgaWYgc2VsZi5ydW5xZW11X2V4aXRlZDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiUWVtdSBwaWQgZGlkbid0IGFwcGVhciBpbiAlcyBzZWNvbmRzICglcykiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnJ1bnFlbXV0aW1lLCB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKQEAgLTIzNyw4ICsyNzEsOCBAQAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygicWVtdSBzdGFydGVkIGluICVzIHNlY29uZHMgLSBxZW11IHByb2NjZXMgcGlkIGlzICVzICglcykiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLnJ1bnFlbXV0aW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucWVtdXBpZCwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCisgICAgICAgIGNtZGxpbmUgPSAnJwogICAgICAgICBpZiBnZXRfaXA6Ci0gICAgICAgICAgICBjbWRsaW5lID0gJycKICAgICAgICAgICAgIHdpdGggb3BlbignL3Byb2MvJXMvY21kbGluZScgJSBzZWxmLnFlbXVwaWQpIGFzIHA6CiAgICAgICAgICAgICAgICAgY21kbGluZSA9IHAucmVhZCgpCiAgICAgICAgICAgICAgICAgIyBJdCBpcyBuZWVkZWQgdG8gc2FuaXRpemUgdGhlIGRhdGEgcmVjZWl2ZWQKQEAgLTI3NSwxNCArMzA5LDE1IEBACiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgSVA6ICVzIiAlIHNlbGYuaXApCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXJ2ZXIgSVA6ICVzIiAlIHNlbGYuc2VydmVyX2lwKQogCi0gICAgICAgIHNlbGYudGhyZWFkID0gTG9nZ2luZ1RocmVhZChzZWxmLmxvZywgc2VsZi50aHJlYWRzb2NrLCBzZWxmLmxvZ2dlcikKLSAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQotICAgICAgICBpZiBub3Qgc2VsZi50aHJlYWQuY29ubmVjdGlvbl9lc3RhYmxpc2hlZC53YWl0KHNlbGYuYm9vdHRpbWUpOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkRpZG4ndCByZWNlaXZlIGEgY29uc29sZSBjb25uZWN0aW9uIGZyb20gcWVtdS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbmFuZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKLSAgICAgICAgICAgIHNlbGYuc3RvcF90aHJlYWQoKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzID49IDI6CisgICAgICAgICAgICBzZWxmLnRocmVhZCA9IExvZ2dpbmdUaHJlYWQoc2VsZi5sb2csIHNlbGYudGhyZWFkc29jaywgc2VsZi5sb2dnZXIpCisgICAgICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi50aHJlYWQuY29ubmVjdGlvbl9lc3RhYmxpc2hlZC53YWl0KHNlbGYuYm9vdHRpbWUpOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJEaWRuJ3QgcmVjZWl2ZSBhIGNvbnNvbGUgY29ubmVjdGlvbiBmcm9tIHFlbXUuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgdGhlIHFlbXUgY29tbWFuZCBsaW5lIHVzZWQ6XG4lc1xuYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiwgb3V0KQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiV2FpdGluZyBhdCBtb3N0ICVkIHNlY29uZHMgZm9yIGxvZ2luIGJhbm5lciAoJXMpIiAlCkBAIC0zMTAsOCArMzQ1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc29jay5yZWN2KDEwMjQpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBib290bG9nICs9IGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzIDwgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgc29ja2V0IGhhcyBtaXhlZCBjb25zb2xlL2tlcm5lbCBkYXRhLCBsb2cgaXQgdG8gbG9nZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nKGRhdGEpCisKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGInIGxvZ2luOicgaW4gYm9vdGxvZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYm9vdF9wYXR0ZXJuc1snc2VhcmNoX3JlYWNoZWRfcHJvbXB0J10gaW4gYm9vdGxvZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBxZW11c29jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRsb2dpbiA9IFRydWUKQEAgLTM0Myw4ICszODIsOCBAQAogCiAgICAgICAgICMgSWYgd2UgYXJlIG5vdCBhYmxlIHRvIGxvZ2luIHRoZSB0ZXN0cyBjYW4gY29udGludWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYucnVuX3NlcmlhbCgicm9vdFxuIiwgcmF3PVRydWUpCi0gICAgICAgICAgICBpZiByZS5zZWFyY2gociJyb290QFthLXpBLVowLTlcLV0rOn4jIiwgb3V0cHV0KToKKyAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnJ1bl9zZXJpYWwoc2VsZi5ib290X3BhdHRlcm5zWydzZW5kX2xvZ2luX3VzZXInXSwgcmF3PVRydWUpCisgICAgICAgICAgICBpZiByZS5zZWFyY2goc2VsZi5ib290X3BhdHRlcm5zWydzZWFyY2hfbG9naW5fc3VjY2VlZGVkJ10sIG91dHB1dCk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkxvZ2dlZCBhcyByb290IGluIHNlcmlhbCBjb25zb2xlIikKICAgICAgICAgICAgICAgICBpZiBuZXRjb25mOgpAQCAtMzg1LDcgKzQyNCw3IEBACiAgICAgICAgICAgICAgICAgb3Mua2lsbHBnKG9zLmdldHBnaWQoc2VsZi5ydW5xZW11LnBpZCksIHNpZ25hbC5TSUdLSUxMKQogICAgICAgICAgICAgc2VsZi5ydW5xZW11LnN0ZGluLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYucnVucWVtdS5zdGRvdXQuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5ydW5xZW11ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5ydW5xZW11X2V4aXRlZCA9IFRydWUKIAogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdzZXJ2ZXJfc29ja2V0JykgYW5kIHNlbGYuc2VydmVyX3NvY2tldDoKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldC5jbG9zZSgpCkBAIC0zOTYsNyArNDM1LDExIEBACiAgICAgICAgIHNlbGYucWVtdXBpZCA9IE5vbmUKICAgICAgICAgc2VsZi5pcCA9IE5vbmUKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5xZW11X3BpZGZpbGUpOgotICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYucWVtdV9waWRmaWxlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLnFlbXVfcGlkZmlsZSkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgV2UgcmFjZWQsIGlnbm9yZQorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgaWYgc2VsZi5tb25pdG9ycGlwZToKICAgICAgICAgICAgIHNlbGYubW9uaXRvcnBpcGUuY2xvc2UoKQogCkBAIC00MjIsNyArNDY1LDcgQEAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnJ1bnFlbXUgb3Igc2VsZi5ydW5xZW11LnBvbGwoKSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgbm90IHNlbGYucnVucWVtdSBvciBzZWxmLnJ1bnFlbXUucG9sbCgpIGlzIG5vdCBOb25lIG9yIHNlbGYucnVucWVtdV9leGl0ZWQ6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5xZW11X3BpZGZpbGUpOgogICAgICAgICAgICAgIyB3aGVuIGhhbmRsaW5nIHBpZGZpbGUsIHFlbXUgY3JlYXRlcyB0aGUgZmlsZSwgc3RhdCBpdCwgbG9jayBpdCBhbmQgdGhlbiB3cml0ZSB0byBpdApAQCAtNDY1LDcgKzUwOCw3IEBACiAgICAgICAgICAgICAgICAgaWYgYW5zd2VyOgogICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGFuc3dlci5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgICAgICAgICAgIyBTZWFyY2ggdGhlIHByb21wdCB0byBzdG9wCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyIlthLXpBLVowLTldK0BbYS16QS1aMC05XC1dKzp+IyIsIGRhdGEpOgorICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goc2VsZi5ib290X3BhdHRlcm5zWydzZWFyY2hfY21kX2ZpbmlzaGVkJ10sIGRhdGEpOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIGRhdGEgb24gc2VyaWFsIGNvbnNvbGUgc29ja2V0IikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKaW5kZXggNDlhMDcyNi4uMzZjMmVjYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKQEAgLTIzLDcgKzIzLDcgQEAKICAgICAgICAgICAgICJzdGRpbiI6IE5vbmUsCiAgICAgICAgICAgICAic2hlbGwiOiBGYWxzZSwKICAgICAgICAgICAgICJidWZzaXplIjogLTEsCi0gICAgICAgICAgICAicHJlZXhlY19mbiI6IG9zLnNldHNpZCwKKyAgICAgICAgICAgICJzdGFydF9uZXdfc2Vzc2lvbiI6IFRydWUsCiAgICAgICAgIH0KICAgICAgICAgc2VsZi5vcHRpb25zID0gZGljdChzZWxmLmRlZmF1bHRvcHRzKQogICAgICAgICBzZWxmLm9wdGlvbnMudXBkYXRlKG9wdGlvbnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYgppbmRleCAwNjcwNTU2Li5jZWMyMjcyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIKQEAgLTYyLDcgKzYyLDcgQEAKIAl0aGVuCiAJCWlmIHRlc3QgLXggJHtzYmluZGlyfS9hbHNhY3RsCiAJCXRoZW4KLQkJCSR7c2JpbmRpcn0vYWxzYWN0bCAtZiAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhL2Fzb3VuZC5zdGF0ZSByZXN0b3JlCisJCQkke3NiaW5kaXJ9L2Fsc2FjdGwgLWcgLWYgJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYS9hc291bmQuc3RhdGUgcmVzdG9yZQogCQlmaQogCWZpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKaW5kZXggYzgxZGVmMi4uYjMyOTFjYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwpAQCAtMzMsNyArMzMsNyBAQAogR1JVQlBMQVRGT1JNX2FhcmNoNjQgPSAiZWZpIgogR1JVQlBMQVRGT1JNID8/PSAicGMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBsYXRmb3JtPSR7R1JVQlBMQVRGT1JNfSBcCiAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdydWItbWtmb250IFwKQEAgLTYwLDggKzYwLDkgQEAKIGV4cG9ydCBQWVRIT04gPSAicHl0aG9uMyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JKCBjZCAke1N9Ci0JJHtTfS9hdXRvZ2VuLnNoICkKKwljZCAke1N9CisJRlJPTV9CT09UU1RSQVA9MSAke1N9L2F1dG9nZW4uc2gKKwljZCAke0J9CiB9CiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hY2RlZmluZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2FjZGVmaW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODJjZjQxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2FjZGVmaW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotQWRkIGEgZGVzY3JpcHRpb24gdG8gdGhlIEFDX0RFRklORSBmb3IgTE9DQUxFRElSIHNvIHRoYXQgaXQgYXBwZWFycyBpbiBjb25maWcuaAotYW5kIHNpbGVuY2VzIGEgZmF0YWwgd2FybmluZy4KLQotVXBzdHJlYW0tU3RhdHVzOlBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGMxMDQ2MGMuLmFhMjAyNjMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTI1OCw3ICsyNTgsNyBAQCBBQ19TVUJTVChMSUJTKQotIAotIEFNX0dOVV9HRVRURVhUCi0gCi0tQUNfREVGSU5FX1VOUVVPVEVEKExPQ0FMRURJUiwiJHByZWZpeC8kREFUQURJUk5BTUUiKQotK0FDX0RFRklORV9VTlFVT1RFRChMT0NBTEVESVIsIiRwcmVmaXgvJERBVEFESVJOQU1FIixbbG9jYWxlIGRpcmVjdG9yeV0pCi0gCi0gQUNfT1VUUFVUKFtNYWtlZmlsZSBpbnRsL01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgIG00L01ha2VmaWxlIFwKLSBtYW4vTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gc3JjL01ha2VmaWxlIGRlYmlhbi9ydWxlcyBTcGVjZmlsZSBzeXN0eXBlIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2F1dG90b29scy11cGRhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hdXRvdG9vbHMtdXBkYXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYWYzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hdXRvdG9vbHMtdXBkYXRlLnBhdGNoCkBAIC0wLDAgKzEsNTc0OSBAQAorVXBkYXRlIGF1dG90b29scyBpbmZyYXN0cnVjdHVyZSAoaW5jbHVkaW5nIGdldHRleHQpIHRvIG1vZGVybiB2ZXJzaW9ucy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBQaGlsIEJsdW5kZWxsIDxwYkBwYmNsLm5ldD4KKworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbiBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCTE5OTgtMTItMzAgMDc6NTA6MDcuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4JMjAxOS0xMS0yNSAxNjoyMjozNy4wMDAwMDAwMDAgKzAwMDAKK0BAIC05Miw3ICs5Miw2IEBAIEFDX1BST0dfUkFOTElCCisgQUNfSVNDX1BPU0lYCisgQUNfQUlYCisgQUNfTUlOSVgKKy1BTV9DX1BST1RPVFlQRVMKKyBBQ19DX0NPTlNUCisgQUNfQ19JTkxJTkUKKyAKK0BAIC0yNTMsMTggKzI1MiwxMyBAQCBpaGF2ZSRsb29rdXBfZmFjaWxpdHkKKyBmaQorIAorIAorLUFDX1NVQlNUKENGTEFHUykKKy1BQ19TVUJTVChMREZMQUdTKQorIEFDX1NVQlNUKExJQlMpCisgCistQU1fR05VX0dFVFRFWFQKKytBTV9HTlVfR0VUVEVYVChbZXh0ZXJuYWxdKQorIAorLUFDX0RFRklORV9VTlFVT1RFRChMT0NBTEVESVIsIiRwcmVmaXgvJERBVEFESVJOQU1FIikKKy1BQ19MSU5LX0ZJTEVTKCRubHNfY3ZfaGVhZGVyX2xpYmd0LCAkbmxzX2N2X2hlYWRlcl9pbnRsKQorLQorLUFDX09VVFBVVChbTWFrZWZpbGUgaW50bC9NYWtlZmlsZSBsaWIvTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIFwKKytBQ19PVVRQVVQoW01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgXAorIG1hbi9NYWtlZmlsZSBwby9NYWtlZmlsZS5pbiBzcmMvTWFrZWZpbGUgZGViaWFuL3J1bGVzIFNwZWNmaWxlIHN5c3R5cGUgXAorIHNyYy9scnpzemJ1Z10sCistW3NlZCAtZSAiL1BPVEZJTEVTID0vciBwby9QT1RGSUxFUyIgcG8vTWFrZWZpbGUuaW4gPiBwby9NYWtlZmlsZTsgCisrWworIGNobW9kICt4IGRlYmlhbi9ydWxlczsKKyB0ZXN0IC16ICIkQ09ORklHX0hFQURFUlMiIHx8IGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaF0pCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9iaW5kdGV4dGRvbS5jIGxyenN6LTAuMTIuMjAvaW50bC9iaW5kdGV4dGRvbS5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2JpbmR0ZXh0ZG9tLmMJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvYmluZHRleHRkb20uYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTk5ICswLDAgQEAKKy0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYmluZHRleHRkb21haW4oMykgZnVuY3Rpb24KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbHNlCistIyBpZmRlZiBIQVZFX01BTExPQ19ICistIyAgaW5jbHVkZSA8bWFsbG9jLmg+CistIyBlbHNlCistdm9pZCBmcmVlICgpOworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0jaW5jbHVkZSAiZ2V0dGV4dC5oIgorLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBDb250YWlucyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBjYXRhbG9ncy4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdOworLQorLS8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zLiAgKi8KKy1leHRlcm4gc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7CistCistCistLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorLSAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKy0gICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKy0gICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIEJJTkRURVhURE9NQUlOIF9fYmluZHRleHRkb21haW4KKy0jIGRlZmluZSBzdHJkdXAoc3RyKSBfX3N0cmR1cCAoc3RyKQorLSNlbHNlCistIyBkZWZpbmUgQklORFRFWFRET01BSU4gYmluZHRleHRkb21haW5fXworLSNlbmRpZgorLQorLS8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAorLSAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KKy1jaGFyICoKKy1CSU5EVEVYVERPTUFJTiAoZG9tYWlubmFtZSwgZGlybmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICpkaXJuYW1lOworLXsKKy0gIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOworLQorLSAgLyogU29tZSBzYW5pdHkgY2hlY2tzLiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwgfHwgZG9tYWlubmFtZVswXSA9PSAnXDAnKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIGZvciAoYmluZGluZyA9IF9ubF9kb21haW5fYmluZGluZ3M7IGJpbmRpbmcgIT0gTlVMTDsgYmluZGluZyA9IGJpbmRpbmctPm5leHQpCistICAgIHsKKy0gICAgICBpbnQgY29tcGFyZSA9IHN0cmNtcCAoZG9tYWlubmFtZSwgYmluZGluZy0+ZG9tYWlubmFtZSk7CistICAgICAgaWYgKGNvbXBhcmUgPT0gMCkKKy0JLyogV2UgZm91bmQgaXQhICAqLworLQlicmVhazsKKy0gICAgICBpZiAoY29tcGFyZSA8IDApCistCXsKKy0JICAvKiBJdCBpcyBub3QgaW4gdGhlIGxpc3QuICAqLworLQkgIGJpbmRpbmcgPSBOVUxMOworLQkgIGJyZWFrOworLQl9CistICAgIH0KKy0KKy0gIGlmIChkaXJuYW1lID09IE5VTEwpCistICAgIC8qIFRoZSBjdXJyZW50IGJpbmRpbmcgaGFzIGJlIHRvIHJldHVybmVkLiAgKi8KKy0gICAgcmV0dXJuIGJpbmRpbmcgPT0gTlVMTCA/IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWUgOiBiaW5kaW5nLT5kaXJuYW1lOworLQorLSAgaWYgKGJpbmRpbmcgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIC8qIFRoZSBkb21haW4gaXMgYWxyZWFkeSBib3VuZC4gIElmIHRoZSBuZXcgdmFsdWUgYW5kIHRoZSBvbGQKKy0JIG9uZSBhcmUgZXF1YWwgd2Ugc2ltcGx5IGRvIG5vdGhpbmcuICBPdGhlcndpc2UgcmVwbGFjZSB0aGUKKy0JIG9sZCBiaW5kaW5nLiAgKi8KKy0gICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBiaW5kaW5nLT5kaXJuYW1lKSAhPSAwKQorLQl7CistCSAgY2hhciAqbmV3X2Rpcm5hbWU7CistCistCSAgaWYgKHN0cmNtcCAoZGlybmFtZSwgX25sX2RlZmF1bHRfZGlybmFtZSkgPT0gMCkKKy0JICAgIG5ld19kaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKKy0JICBlbHNlCistCSAgICB7CistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorLQkgICAgICBuZXdfZGlybmFtZSA9IHN0cmR1cCAoZGlybmFtZSk7CistCSAgICAgIGlmIChuZXdfZGlybmFtZSA9PSBOVUxMKQorLQkJcmV0dXJuIE5VTEw7CistI2Vsc2UKKy0JICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOworLQkgICAgICBuZXdfZGlybmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0JICAgICAgaWYgKG5ld19kaXJuYW1lID09IE5VTEwpCistCQlyZXR1cm4gTlVMTDsKKy0KKy0JICAgICAgbWVtY3B5IChuZXdfZGlybmFtZSwgZGlybmFtZSwgbGVuKTsKKy0jZW5kaWYKKy0JICAgIH0KKy0KKy0JICBpZiAoYmluZGluZy0+ZGlybmFtZSAhPSBfbmxfZGVmYXVsdF9kaXJuYW1lKQorLQkgICAgZnJlZSAoYmluZGluZy0+ZGlybmFtZSk7CistCistCSAgYmluZGluZy0+ZGlybmFtZSA9IG5ld19kaXJuYW1lOworLQl9CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIC8qIFdlIGhhdmUgdG8gY3JlYXRlIGEgbmV3IGJpbmRpbmcuICAqLworLSAgICAgIHNpemVfdCBsZW47CistICAgICAgc3RydWN0IGJpbmRpbmcgKm5ld19iaW5kaW5nID0KKy0JKHN0cnVjdCBiaW5kaW5nICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3X2JpbmRpbmcpKTsKKy0KKy0gICAgICBpZiAobmV3X2JpbmRpbmcgPT0gTlVMTCkKKy0JcmV0dXJuIE5VTEw7CistCistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorLSAgICAgIG5ld19iaW5kaW5nLT5kb21haW5uYW1lID0gc3RyZHVwIChkb21haW5uYW1lKTsKKy0gICAgICBpZiAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPT0gTlVMTCkKKy0JcmV0dXJuIE5VTEw7CistI2Vsc2UKKy0gICAgICBsZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpICsgMTsKKy0gICAgICBuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0gICAgICBpZiAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPT0gTlVMTCkKKy0JcmV0dXJuIE5VTEw7CistICAgICAgbWVtY3B5IChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSwgZG9tYWlubmFtZSwgbGVuKTsKKy0jZW5kaWYKKy0KKy0gICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBfbmxfZGVmYXVsdF9kaXJuYW1lKSA9PSAwKQorLQluZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7CistICAgICAgZWxzZQorLQl7CistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorLQkgIG5ld19iaW5kaW5nLT5kaXJuYW1lID0gc3RyZHVwIChkaXJuYW1lKTsKKy0JICBpZiAobmV3X2JpbmRpbmctPmRpcm5hbWUgPT0gTlVMTCkKKy0JICAgIHJldHVybiBOVUxMOworLSNlbHNlCistCSAgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7CistCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lID09IE5VTEwpCistCSAgICByZXR1cm4gTlVMTDsKKy0JICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kaXJuYW1lLCBkaXJuYW1lLCBsZW4pOworLSNlbmRpZgorLQl9CistCistICAgICAgLyogTm93IGVucXVldWUgaXQuICAqLworLSAgICAgIGlmIChfbmxfZG9tYWluX2JpbmRpbmdzID09IE5VTEwKKy0JICB8fCBzdHJjbXAgKGRvbWFpbm5hbWUsIF9ubF9kb21haW5fYmluZGluZ3MtPmRvbWFpbm5hbWUpIDwgMCkKKy0JeworLQkgIG5ld19iaW5kaW5nLT5uZXh0ID0gX25sX2RvbWFpbl9iaW5kaW5nczsKKy0JICBfbmxfZG9tYWluX2JpbmRpbmdzID0gbmV3X2JpbmRpbmc7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICBiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsKKy0JICB3aGlsZSAoYmluZGluZy0+bmV4dCAhPSBOVUxMCistCQkgJiYgc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5uZXh0LT5kb21haW5uYW1lKSA+IDApCistCSAgICBiaW5kaW5nID0gYmluZGluZy0+bmV4dDsKKy0KKy0JICBuZXdfYmluZGluZy0+bmV4dCA9IGJpbmRpbmctPm5leHQ7CistCSAgYmluZGluZy0+bmV4dCA9IG5ld19iaW5kaW5nOworLQl9CistCistICAgICAgYmluZGluZyA9IG5ld19iaW5kaW5nOworLSAgICB9CistCistICByZXR1cm4gYmluZGluZy0+ZGlybmFtZTsKKy19CistCistI2lmZGVmIF9MSUJDCistLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCistd2Vha19hbGlhcyAoX19iaW5kdGV4dGRvbWFpbiwgYmluZHRleHRkb21haW4pOworLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvY2F0LWNvbXBhdC5jIGxyenN6LTAuMTIuMjAvaW50bC9jYXQtY29tcGF0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvY2F0LWNvbXBhdC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2NhdC1jb21wYXQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMjYyICswLDAgQEAKKy0vKiBDb21wYXRpYmlsaXR5IGNvZGUgZm9yIGdldHRleHQtdXNpbmctY2F0Z2V0cyBpbnRlcmZhY2UuCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxzdGRpby5oPgorLQorLSNpZmRlZiBTVERDX0hFQURFUlMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy1jaGFyICpnZXRlbnYgKCk7CistIyBpZmRlZiBIQVZFX01BTExPQ19ICistIyAgaW5jbHVkZSA8bWFsbG9jLmg+CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZmRlZiBIQVZFX05MX1RZUEVTX0gKKy0jIGluY2x1ZGUgPG5sX3R5cGVzLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImxpYmdldHRleHQuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgYHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKKy0gICBgYERpcmVjdHMgYHNldGxvY2FsZSgpJyB0byBxdWVyeSBgY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKKy0gICAgIHNldHRpbmcgb2YgYGxvY2FsJy4nJworLSAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgQW5kIGV2ZW4gd29yc2U6IFBPU0lYCistICAgZGVmaW5lcyB0aGlzIG5vdCBhdCBhbGwuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkCistICAgc3lzdGVtIChlLmcuIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBIQVZFX0xPQ0FMRV9OVUxMCistI2VuZGlmCistCistLyogVGhlIGNhdGFsb2cgZGVzY3JpcHRvci4gICovCistc3RhdGljIG5sX2NhdGQgY2F0YWxvZyA9IChubF9jYXRkKSAtMTsKKy0KKy0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGNhdGFsb2cuICAqLworLXN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfY2F0YWxvZ19uYW1lW10gPSAibWVzc2FnZXMiOworLQorLS8qIE5hbWUgb2YgY3VycmVudGx5IHVzZWQgY2F0YWxvZy4gICovCistc3RhdGljIGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOworLQorLS8qIEdldCBJRCBmb3IgZ2l2ZW4gc3RyaW5nLiAgSWYgbm90IGZvdW5kIHJldHVybiAtMS4gICovCistc3RhdGljIGludCBtc2dfdG9fY2F0X2lkIFBBUkFNUyAoKGNvbnN0IGNoYXIgKm1zZykpOworLQorLS8qIFN1YnN0aXR1dGlvbiBmb3Igc3lzdGVtcyBsYWNraW5nIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgQyBsaWJyYXJ5LiAgKi8KKy0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7CistI2VuZGlmCistCistCistLyogU2V0IGN1cnJlbnRseSB1c2VkIGRvbWFpbi9jYXRhbG9nLiAgKi8KKy1jaGFyICoKKy10ZXh0ZG9tYWluIChkb21haW5uYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy17CistICBubF9jYXRkIG5ld19jYXRhbG9nOworLSAgY2hhciAqbmV3X25hbWU7CistICBzaXplX3QgbmV3X25hbWVfbGVuOworLSAgY2hhciAqbGFuZzsKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgXAorLSAgICAmJiBkZWZpbmVkIEhBVkVfTE9DQUxFX05VTEwKKy0gIGxhbmcgPSBzZXRsb2NhbGUgKExDX01FU1NBR0VTLCBOVUxMKTsKKy0jZWxzZQorLSAgbGFuZyA9IGdldGVudiAoIkxDX0FMTCIpOworLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCistICAgIHsKKy0gICAgICBsYW5nID0gZ2V0ZW52ICgiTENfTUVTU0FHRVMiKTsKKy0gICAgICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKKy0JbGFuZyA9IGdldGVudiAoIkxBTkciKTsKKy0gICAgfQorLSNlbmRpZgorLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCistICAgIGxhbmcgPSAiQyI7CistCistICAvKiBTZWUgd2hldGhlciBuYW1lIG9mIGN1cnJlbnRseSB1c2VkIGRvbWFpbiBpcyBhc2tlZC4gICovCistICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOworLQorLSAgaWYgKGRvbWFpbm5hbWVbMF0gPT0gJ1wwJykKKy0gICAgZG9tYWlubmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOworLQorLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgKi8KKy0gIG5ld19uYW1lX2xlbiA9IHNpemVvZiAoTE9DQUxFRElSKSAtIDEgKyAxICsgc3RybGVuIChsYW5nKQorLQkJICsgc2l6ZW9mICgiL0xDX01FU1NBR0VTLyIpIC0gMSArIHNpemVvZiAoUEFDS0FHRSkgLSAxCistCQkgKyBzaXplb2YgKCIuY2F0Iik7CistCistICBuZXdfbmFtZSA9IChjaGFyICopIG1hbGxvYyAobmV3X25hbWVfbGVuKTsKKy0gIGlmIChuZXdfbmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIHN0cmNweSAobmV3X25hbWUsIFBBQ0tBR0UpOworLSAgbmV3X2NhdGFsb2cgPSBjYXRvcGVuIChuZXdfbmFtZSwgMCk7CistCistICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQorLSAgICB7CistICAgICAgLyogTkxTUEFUSCBzZWFyY2ggZGlkbid0IHdvcmssIHRyeSBhYnNvbHV0ZSBwYXRoICovCistICAgICAgc3ByaW50ZiAobmV3X25hbWUsICIlcy8lcy9MQ19NRVNTQUdFUy8lcy5jYXQiLCBMT0NBTEVESVIsIGxhbmcsCistCSAgICAgICBQQUNLQUdFKTsKKy0gICAgICBuZXdfY2F0YWxvZyA9IGNhdG9wZW4gKG5ld19uYW1lLCAwKTsKKy0KKy0gICAgICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQorLQl7CistCSAgZnJlZSAobmV3X25hbWUpOworLQkgIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7CistCX0KKy0gICAgfQorLQorLSAgLyogQ2xvc2Ugb2xkIGNhdGFsb2cuICAqLworLSAgaWYgKGNhdGFsb2cgIT0gKG5sX2NhdGQpIC0xKQorLSAgICBjYXRjbG9zZSAoY2F0YWxvZyk7CistICBpZiAoY2F0YWxvZ19uYW1lICE9IGRlZmF1bHRfY2F0YWxvZ19uYW1lKQorLSAgICBmcmVlICgoY2hhciAqKSBjYXRhbG9nX25hbWUpOworLQorLSAgY2F0YWxvZyA9IG5ld19jYXRhbG9nOworLSAgY2F0YWxvZ19uYW1lID0gbmV3X25hbWU7CistCistICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOworLX0KKy0KKy1jaGFyICoKKy1iaW5kdGV4dGRvbWFpbiAoZG9tYWlubmFtZSwgZGlybmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICpkaXJuYW1lOworLXsKKy0jaWYgSEFWRV9TRVRFTlYgfHwgSEFWRV9QVVRFTlYKKy0gIGNoYXIgKm9sZF92YWwsICpuZXdfdmFsLCAqY3A7CistICBzaXplX3QgbmV3X3ZhbF9sZW47CistCistICAvKiBUaGlzIGRvZXMgbm90IG1ha2UgbXVjaCBzZW5zZSBoZXJlIGJ1dCB0byBiZSBjb21wYXRpYmxlIGRvIGl0LiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgSWYgd2UgdXNlIHNldGVudiB3ZSBkb24ndCBuZWVkCistICAgICB0aGUgZmlyc3QgYnl0cyBmb3IgTkxTUEFUSD0sIGJ1dCB3aHkgY29tcGxpY2F0ZSB0aGUgY29kZSBmb3IgdGhpcworLSAgICAgcGVhbnV0cy4gICovCistICBuZXdfdmFsX2xlbiA9IHNpemVvZiAoIk5MU1BBVEg9IikgLSAxICsgc3RybGVuIChkaXJuYW1lKQorLQkJKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistCistICBvbGRfdmFsID0gZ2V0ZW52ICgiTkxTUEFUSCIpOworLSAgaWYgKG9sZF92YWwgPT0gTlVMTCB8fCBvbGRfdmFsWzBdID09ICdcMCcpCistICAgIHsKKy0gICAgICBvbGRfdmFsID0gTlVMTDsKKy0gICAgICBuZXdfdmFsX2xlbiArPSAxICsgc2l6ZW9mIChMT0NBTEVESVIpIC0gMQorLQkgICAgICAgICAgICAgKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistICAgIH0KKy0gIGVsc2UKKy0gICAgbmV3X3ZhbF9sZW4gKz0gc3RybGVuIChvbGRfdmFsKTsKKy0KKy0gIG5ld192YWwgPSAoY2hhciAqKSBtYWxsb2MgKG5ld192YWxfbGVuKTsKKy0gIGlmIChuZXdfdmFsID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSMgaWYgSEFWRV9TRVRFTlYKKy0gIGNwID0gbmV3X3ZhbDsKKy0jIGVsc2UKKy0gIGNwID0gc3RwY3B5IChuZXdfdmFsLCAiTkxTUEFUSD0iKTsKKy0jIGVuZGlmCistCistICBjcCA9IHN0cGNweSAoY3AsIGRpcm5hbWUpOworLSAgY3AgPSBzdHBjcHkgKGNwLCAiLyVML0xDX01FU1NBR0VTLyVOLmNhdDoiKTsKKy0KKy0gIGlmIChvbGRfdmFsID09IE5VTEwpCistICAgIHsKKy0jIGlmIF9fU1REQ19fCistICAgICAgc3RwY3B5IChjcCwgTE9DQUxFRElSICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistIyBlbHNlCistCistICAgICAgY3AgPSBzdHBjcHkgKGNwLCBMT0NBTEVESVIpOworLSAgICAgIHN0cGNweSAoY3AsICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistIyBlbmRpZgorLSAgICB9CistICBlbHNlCistICAgIHN0cGNweSAoY3AsIG9sZF92YWwpOworLQorLSMgaWYgSEFWRV9TRVRFTlYKKy0gIHNldGVudiAoIk5MU1BBVEgiLCBuZXdfdmFsLCAxKTsKKy0gIGZyZWUgKG5ld192YWwpOworLSMgZWxzZQorLSAgcHV0ZW52IChuZXdfdmFsKTsKKy0gIC8qIERvICpub3QqIGZyZWUgdGhlIGVudmlyb25tZW50IGVudHJ5IHdlIGp1c3QgZW50ZXJlZC4gIEl0IGlzIHVzZWQKKy0gICAgIGZyb20gbm93IG9uLiAgICovCistIyBlbmRpZgorLQorLSNlbmRpZgorLQorLSAgcmV0dXJuIChjaGFyICopIGRvbWFpbm5hbWU7CistfQorLQorLSN1bmRlZiBnZXR0ZXh0CistY2hhciAqCistZ2V0dGV4dCAobXNnKQorLSAgICAgY29uc3QgY2hhciAqbXNnOworLXsKKy0gIGludCBtc2dpZDsKKy0KKy0gIGlmIChtc2cgPT0gTlVMTCB8fCBjYXRhbG9nID09IChubF9jYXRkKSAtMSkKKy0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKKy0KKy0gIC8qIEdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBjYXRhbG9nLiAgV2UgYWx3YXlzIHVzZSBzZXQgbnVtYmVyIDEuCistICAgICBUaGUgbWVzc2FnZSBJRCBpcyBjb21wdXRlZCBieSB0aGUgZnVuY3Rpb24gYG1zZ190b19jYXRfaWQnCistICAgICB3aGljaCB3b3JrcyBvbiB0aGUgdGFibGUgZ2VuZXJhdGVkIGJ5IGBwby10by10YmwnLiAgKi8KKy0gIG1zZ2lkID0gbXNnX3RvX2NhdF9pZCAobXNnKTsKKy0gIGlmIChtc2dpZCA9PSAtMSkKKy0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKKy0KKy0gIHJldHVybiBjYXRnZXRzIChjYXRhbG9nLCAxLCBtc2dpZCwgKGNoYXIgKikgbXNnKTsKKy19CistCistLyogTG9vayB0aHJvdWdoIHRoZSB0YWJsZSBgX21zZ190YmwnIHdoaWNoIGhhcyBgX21zZ190YmxfbGVuZ3RoJyBlbnRyaWVzCistICAgZm9yIHRoZSBvbmUgZXF1YWwgdG8gbXNnLiAgSWYgaXQgaXMgZm91bmQgcmV0dXJuIHRoZSBJRC4gIEluIGNhc2Ugd2hlbgorLSAgIHRoZSBzdHJpbmcgaXMgbm90IGZvdW5kIHJldHVybiAtMS4gICovCistc3RhdGljIGludAorLW1zZ190b19jYXRfaWQgKG1zZykKKy0gICAgIGNvbnN0IGNoYXIgKm1zZzsKKy17CistICBpbnQgY250OworLQorLSAgZm9yIChjbnQgPSAwOyBjbnQgPCBfbXNnX3RibF9sZW5ndGg7ICsrY250KQorLSAgICBpZiAoc3RyY21wIChtc2csIF9tc2dfdGJsW2NudF0uX21zZykgPT0gMCkKKy0gICAgICByZXR1cm4gX21zZ190YmxbY250XS5fbXNnX251bWJlcjsKKy0KKy0gIHJldHVybiAtMTsKKy19CistCistCistLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCistCistLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKKy0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcworLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCistICAgdG8gYmUgZGVmaW5lZC4gICovCistI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKKy1zdGF0aWMgY2hhciAqCistc3RwY3B5IChkZXN0LCBzcmMpCistICAgICBjaGFyICpkZXN0OworLSAgICAgY29uc3QgY2hhciAqc3JjOworLXsKKy0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKKy0gICAgLyogRG8gbm90aGluZy4gKi8gOworLSAgcmV0dXJuIGRlc3QgLSAxOworLX0KKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL0NoYW5nZUxvZyBscnpzei0wLjEyLjIwL2ludGwvQ2hhbmdlTG9nCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL0NoYW5nZUxvZwkxOTk4LTA0LTI2IDE0OjIyOjM1LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9DaGFuZ2VMb2cJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDEwMjIgKzAsMCBAQAorLTE5OTctMDktMDYgMDI6MTAgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGludGxoLmluc3QuaW46IFJlZm9ybWF0IGNvcHlyaWdodC4KKy0KKy0xOTk3LTA4LTE5IDE1OjIyICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogUmVtb3ZlIHdyb25nIGNvbW1lbnQuCistCistMTk5Ny0wOC0xNiAwMDoxMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZGF0YSk6IERvbid0IGNoYW5nZSBkaXJlY3RvcnkgdG8gaW5zdGFsbC4KKy0KKy0xOTk3LTA4LTAxIDE0OjMwICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IEZpeCBjb3B5cmlnaHQuCistCistCSogbG9jYWxlYWxpYXMuYzogRG9uJ3QgZGVmaW5lIHN0cmNociB1bmxlc3MgIUhBVkVfU1RSQ0hSLgorLQorLQkqIGxvYWRtc2djYXQuYzogVXBkYXRlIGNvcHlyaWdodC4gIEZpeCB0eXBvcy4KKy0KKy0JKiBsMTBuZmxpc3QuYzogRG9uJ3QgZGVmaW5lIHN0cmNociB1bmxlc3MgIUhBVkVfU1RSQ0hSLgorLQkoX25sX21ha2VfbDEwbmZsaXN0KTogSGFuZGxlIHNwb25zb3IgYW5kIHJldmlzaW9uIGNvcnJlY3RseS4KKy0KKy0JKiBnZXR0ZXh0LmM6IFVwZGF0ZSBjb3B5cmlnaHQuCistCSogZ2V0dGV4dC5oOiBMaWtld2lzZS4KKy0JKiBoYXNoLXN0cmluZy5oOiBMaWtld2lzZS4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IFJlbW9hdmUgZGVhZCBjb2RlLiAgRGVmaW5lIHN0cmNociBvbmx5IGlmCistCSFIQVZFX1NUUkNIUi4KKy0KKy0JKiBleHBsb2RlbmFtZS5jOiBJbmNsdWRlIDxzeXMvdHlwZXMuaD4uCistCistCSogZXhwbG9kZW5hbWUuYzogUmVmb3JtYXQgY29weXJpZ2h0IHRleHQuCistCShfbmxfZXhwbG9kZV9uYW1lKTogRml4IHR5cG8uCistCistCSogZGNnZXR0ZXh0LmM6IERlZmluZSBhbmQgdXNlIF9fc2V0X2Vycm5vLgorLQkoZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUpOiBEb24ndCB1c2Ugc2V0bG9jYWxlIGlmIEhBVkVfTENfTUVTU0FHRVMgaXMKKy0Jbm90IGRlZmluZWQuCistCistCSogYmluZHRleHRkb20uYzogUHJldHR5IHByaW50aW5nLgorLQorLTE5OTctMDUtMDEgMDI6MjUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGRjZ2V0dGV4dC5jIChndWVzc19jYXRlZ29yeV92YWx1ZSk6IERvbid0IGRlcGVuZCBvbgorLQlIQVZFX0xDX01FU1NBR0VTLiAgV2UgZG9uJ3QgbmVlZCB0aGUgbWFjcm8gaGVyZS4KKy0JUGF0Y2ggYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4uCistCistCSogY2F0LWNvbXBhdC5jICh0ZXh0ZG9tYWluKTogRG9OJ3QgcmVmZXIgdG8gSEFWRV9TRVRMT0NBTEVfTlVMTAorLQltYWNyby4gIEluc3RlYWQgdXNlIEhBVkVfTE9DQUxFX05VTEwgYW5kIGRlZmluZSBpdCB3aGVuIHVzaW5nCistCWdsaWJjLCBhcyBpbiBkY2dldHRleHQuYy4KKy0JUGF0Y2ggYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4uCistCistCSogTWFrZWZpbGUuaW4gKENQUEZMQUdTKTogTmV3IHZhcmlhYmxlLiAgUmVwb3J0ZWQgYnkgRnJhbmMsb2lzCistCVBpbmFyZC4KKy0KKy1Nb24gTWFyIDEwIDA2OjUxOjE3IDE5OTcgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluOiBJbXBsZW1lbnQgaGFuZGxpbmcgb2YgbGlidG9vbC4KKy0KKy0JKiBnZXR0ZXh0UC5oOiBDaGFuZ2UgZGF0YSBzdHJ1Y3R1cmVzIGZvciB1c2Ugb2YgZ2VuZXJpYyBsb3dsZXZlbAorLQlpMThuIGZpbGUgaGFuZGxpbmcuCistCistV2VkIERlYyAgNCAyMDoyMToxOCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IFB1dCBwYXJlbnRoZXNlcyBhcm91bmQgYXJndW1lbnRzIG9mIG1lbWNweSBtYWNybworLQlkZWZpbml0aW9uLgorLQkqIGxvY2FsZWFsaWFzLmM6IExpa2V3aXNlLgorLQkqIGwxMG5mbGlzdC5jOiBMaWtld2lzZS4KKy0JKiBmaW5kZG9tYWluLmM6IExpa2V3aXNlLgorLQkqIGJpbmR0ZXh0ZG9tLmM6IExpa2V3aXNlLgorLQlSZXBvcnRlZCBieSBUaG9tYXMgRXNrZW4uCistCistTW9uIE5vdiAyNSAyMjo1Nzo1MSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IE1vdmUgZGVmaW5pdGlvbiBvZiBgbWVtY3B5YCBtYWNybyB0byByaWdodAorLQlwb3NpdGlvbi4KKy0KKy1GcmkgTm92IDIyIDA0OjAxOjU4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGZpbmRkb21haW4uYyBbIUhBVkVfU1RSSU5HX0ggJiYgIV9MSUJDXTogRGVmaW5lIG1lbWNweSB1c2luZworLSAJYmNvcHkgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4gIFJlcG9ydGVkIGJ5IFRob21hcyBFc2tlbi4KKy0JKiBiaW5kdGV4dGRvbS5jOiBMaWtld2lzZS4KKy0JKiBsMTBuZmxpc3QuYzogTGlrZXdpc2UuCistCSogbG9jYWxlYWxpYXMuYzogTGlrZXdpc2UuCistCSogdGV4dGRvbWFpbi5jOiBMaWtld2lzZS4KKy0KKy1UdWUgT2N0IDI5IDExOjEwOjI3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChsaWJkaXIpOiBDaGFuZ2UgdG8gdXNlIGV4ZWNfcHJlZml4IGluc3RlYWQgb2YKKy0gCXByZWZpeC4gIFJlcG9ydGVkIGJ5IEtudXQtSOV2YXJkQWtzbmVzIDxldG9rbmFAZXRvLmVyaWNzc29uLnNlPi4KKy0KKy1TYXQgQXVnIDMxIDAzOjA3OjA5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jIChfbmxfbm9ybWFsaXplX2NvZGVzZXQpOiBXZSBjb252ZXJ0IHRvIGxvd2VyIGNhc2UsCistCXNvIGRvbid0IHByZXBlbmQgdXBwZXJjYXNlIGBJU08nIGZvciBvbmx5IG51bWVyaWMgYXJnLgorLQorLUZyaSBKdWwgMTkgMDA6MTU6NDYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogbDEwbmZsaXN0LmM6IE1vdmUgaW5jbHVzaW9uIG9mIGFyZ3ouaCwgY3R5cGUuaCwgc3RkbGliLmggYWZ0ZXIKKy0JZGVmaW5pdGlvbiBvZiBfR05VX1NPVVJDRS4gIFBhdGNoIGJ5IFJvbGFuZCBNY0dyYXRoLgorLQorLQkqIE1ha2VmaWxlLmluICh1bmluc3RhbGwpOiBGaXggYW5vdGhlciBidWcgd2l0aCBgZm9yJyBsb29wIGFuZAorLQllbXB0eSBhcmd1bWVudHMuICBQYXRjaCBieSBKaW0gTWV5ZXJpbmcuICBDb3JyZWN0IG5hbWUgb3MKKy0JdW5pbnN0YWxsZWQgZmlsZXM6IG5vIGludGwtIHByZWZpeCBhbnltb3JlLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWRhdGEpOiBBZ2FpbiB3b3JrIGFyb3VuZCBzaGVsbHMgd2hpY2gKKy0JY2Fubm90IGhhbmRsZSBtcHR5IGZvciBsaXN0LiAgUmVwb3J0ZWQgYnkgSmltIE1leWVyaW5nLgorLQorLVNhdCBKdWwgMTMgMTg6MTE6MzUgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBTcGxpdCBnb2FsLiAgTm93IGRlcGVuZCBvbiBpbnN0YWxsLWV4ZWMKKy0gICAgICAgIGFuZCBpbnN0YWxsLWRhdGEuCistCShpbnN0YWxsLWV4ZWMsIGluc3RhbGwtZGF0YSk6IE5ldyBnb2Fscy4gIENyZWF0ZWQgZnJvbSBmb3JtZXIKKy0JaW5zdGFsbCBnb2FsLgorLQlSZXBvcnRlZCBieSBLYXJsIEJlcnJ5LgorLQorLVNhdCBKdW4gMjIgMDQ6NTg6MTQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKE1LSU5TVEFMTERJUlMpOiBOZXcgdmFyaWFibGUuICBQYXRoIHRvCistICAgICAgICBta2luc3RhbGxkaXJzIHNjcmlwdC4KKy0JKGluc3RhbGwpOiB1c2UgTUtJTlNUQUxMRElSUyB2YXJpYWJsZSBvciBpZiB0aGUgc2NyaXB0IGlzIG5vdCBwcmVzZW50CistCXRyeSB0byBmaW5kIGl0IGluIHRoZSAkdG9wX3NjcmRpcikuCistCistV2VkIEp1biAxOSAwMjo1Njo1NiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsMTBuZmxpc3QuYzogTGludXggbGliYyAqcGFydGx5KiBpbmNsdWRlcyB0aGUgYXJnel8qIGZ1bmN0aW9ucy4KKy0JR3JyLiAgV29yayBhcm91bmQgYnkgcmVuYW1pbmcgdGhlIHN0YXRpYyB2ZXJzaW9uIGFuZCB1c2UgbWFjcm9zCistCWZvciByZW5hbWluZy4KKy0KKy1UdWUgSnVuIDE4IDIwOjExOjE3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jOiBDb3JyZWN0IHByZXNlbmNlIHRlc3QgbWFjcm9zIG9mIF9fYXJnel8qIGZ1bmN0aW9ucy4KKy0KKy0JKiBsMTBuZmxpc3QuYzogSW5jbHVkZSA8YXJnei5oPiBiYXNlZCBvbiB0ZXN0IG9mIGl0IGluc3RlYWQgd2hlbgorLQlfX2FyZ3pfKiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4KKy0JUmVwb3J0ZWQgYnkgQW5kcmVhcyBTY2h3YWIuCistCistVGh1IEp1biAxMyAxNToxNzo0NCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBleHBsb2RlbmFtZS5jLCBsMTBuZmxpc3QuYzogRGVmaW5lIE5VTEwgZm9yIGR1bWIgc3lzdGVtcy4KKy0KKy1UdWUgSnVuIDExIDE3OjA1OjEzIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGludGxoLmluc3QuaW4sIGxpYmdldHRleHQuaCAoZGNnZXR0ZXh0KTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlCistCXJlc3VsdCB0byBfX3Jlc3VsdCB0byBwcmV2ZW50IG5hbWUgY2xhc2guCistCistCSogbDEwbmZsaXN0LmMsIGxvY2FsZWFsaWFzLmMsIGRjZ2V0dGV4dC5jOiBEZWZpbmUgX0dOVV9TT1VSQ0UgdG8KKy0gICAgICAgIGdldCBwcm90b3R5cGUgZm9yIHN0cGNweSBhbmQgc3RyY2FzZWNtcC4KKy0KKy0JKiBpbnRsaC5pbnN0LmluLCBsaWJnZXR0ZXh0Lmg6IE1vdmUgZGVjbGFyYXRpb24gb2YKKy0JYF9ubF9tc2dfY2F0X2NudHInIG91dHNpZGUgX19leHRlbnNpb25fXyBibG9jayB0byBwcmV2ZW50IHdhcm5pbmcKKy0JZnJvbSBnY2MncyAtV25lc3RlZC1leHRlcm4gb3B0aW9uLgorLQorLUZyaSBKdW4gIDcgMDE6NTg6MDAgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBSZW1vdmUgY29tbWVudC4KKy0KKy1UaHUgSnVuICA2IDE3OjI4OjE3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogV29yayBhcm91bmQgZm9yIGFub3RoZXIgQnVnbGl4IHN0dXBpZGl0eS4KKy0JQWx3YXlzIHVzZSBhbiBgZWxzZScgY2xvc2UgZm9yIGBpZidzLiAgUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnRsaC5pbnN0KTogQ29ycmVjdCB0eXBvIGluIHBob255IHJ1bGUuCistCVJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KKy0KKy1UaHUgSnVuICA2IDAxOjQ5OjUyIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGRjZ2V0dGV4dC5jIChyZWFkX2FsaWFzX2ZpbGUpOiBSZW5hbWUgdmFyaWFibGUgYWxsb2NhX2xpc3QgdG8KKy0JYmxvY2tfbGlzdCBhcyB0aGUgbWFjcm8gY2FsbHMgYXNzdW1lLgorLQlQYXRjaCBieSBFcmljIEJhY2t1cy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIFshSEFWRV9BTExPQ0FdOiBEZWZpbmUgYWxsb2NhIGFzIG1hY3JvIHVzaW5nCistICAgICAgICBtYWxsb2MuCistCShyZWFkX2FsaWFzX2ZpbGUpOiBSZW5hbWUgdmFycmlhYmUgYWxsb2NhX2xpc3QgdG8gYmxvY2tfbGlzdCBhcyB0aGUKKy0JbWFjcm8gY2FsbHMgYXNzdW1lLgorLQlQYXRjaCBieSBFcmljIEJhY2t1cy4KKy0KKy0JKiBsMTBuZmxpc3QuYzogQ29ycmVjdCBjb25kaXRpb25hbCBmb3IgPGFyZ3ouaD4gaW5jbHVzaW9uLgorLQlSZXBvcnRlZCBieSBSb2xhbmQgTWNHcmF0aC4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxsKTogRGVwZW5kIG9uIGFsbC1AVVNFX0lOQ0xVREVEX0xJQklOVExALCBub3QKKy0gICAgICAgIGFsbC1AVVNFX05MU0AuCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBpbnRsaC5pbnN0IGNvbWVzIGZyb20gbG9jYWwgZGlyLCBub3QKKy0gICAgICAgICQoc3JjZGlyKS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW50bGguaW5zdCk6IFNwZWNpYWwgaGFuZGxpbmcgb2YgdGhpcyBnb2FsLiAgSWYKKy0JdXNlZCBpbiBnZXR0ZXh0LCB0aGlzIGlzIHJlYWxseSBhIHJ1bCB0byBjb25zdHJ1Y3QgdGhpcyBmaWxlLiAgSWYKKy0JdXNlZCBpbiBhbnkgb3RoZXIgcGFja2FnZSBpdCBpcyBkZWZpbmVkIGFzIGEgLlBIT05ZIHJ1bGUgd2l0aAorLQllbXB0eSBib2R5LgorLQorLQkqIGZpbmRkb21haW4uYzogRXh0cmFjdCBsb2NhbGUgZmlsZSBpbmZvcm1hdGlvbiBoYW5kbGluZyBpbnRvCistCWwxMG5maWxlLmMuICBSZW5hbWUgbG9jYWwgc3RwY3B5X18gZnVuY3Rpb24gdG8gc3RwY3B5LgorLQorLQkqIGRjZ2V0dGV4dC5jIChzdHBjcHkpOiBBZGQgbG9jYWwgZGVmaW5pdGlvbi4KKy0KKy0JKiBsMTBuZmxpc3QuYzogU29sdmUgc29tZSBwb3J0YWJpbGl0eSBwcm9ibGVtcy4gIFBhdGNoZXMgcGFydGx5IGJ5CistCVRob21hcyBFc2tlbi4gIEFkZCBsb2NhbCBkZWZpbml0aW9uIG9mIHN0cGNweS4KKy0KKy1UdWUgSnVuICA0IDAyOjQ3OjQ5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGludGxoLmluc3QuaW46IERvbid0IGRlcGVuZCBpbmNsdWRpbmcgPGxvY2FsZS5oPiBvbgorLQlIQVZFX0xPQ0FMRV9ILiAgSW5zdGVhZCBjb25maWd1cmUgbXVzdCByZXdyaXRlIHRoaXMgZmlpbGUKKy0JZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgdGhlIGNvbmZpZ3VyZSBydW4uCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBsaWJpbnRsLmluc3QgaXMgbm93IGNhbGxlZCBpbnRsaC5pbnN0LgorLQlBZGQgcnVsZXMgZm9yIHVwZGF0aW5nIGludGxoLmluc3QgZnJvbSBpbnRsaC5pbnN0LmluLgorLQorLQkqIGxpYmludGwuaW5zdDogUmVuYW1lZCB0byBpbnRsaC5pbnN0LmluLgorLQorLQkqIGxvY2FsZWFsaWFzLmMsIGRjZ2V0dGV4dC5jIFtfX0dOVUNfX106IERlZmluZSBIQVZFX0FMTE9DQSB0byAxCistICAgICAgICBiZWNhdXNlIGdjYyBoYXMgX19idWl0bGluX2FsbG9jYS4KKy0JUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCistCistTW9uIEp1biAgMyAwMDozMjoxNiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbGNoZWNrKTogTmV3IGdvYWwgdG8gZnVsZmlsbCBuZWVkcyBvZgorLSAgICAgICAgYXV0b21ha2UncyBkaXN0Y2hlY2suCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBSZW9yZGVyIGNvbW1hbmRzIHNvIHRoYXQgVkVSU0lPTiBpcworLSAgICAgICAgZm91bmQuCistCistCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOiBOb3cgdXNlIHN1YmRpcmVjdG9yeSBpbnRsLyBpbgorLSAgICAgICAgQGRhdGFkaXJAL2dldHRleHQuCistCShDT01TUkNTKTogQWRkIGwxMG5maWxlLmMuCistCShPQkpFQ1RTKTogQWRkIGwxMG5maWxlLm8uCistCShESVNURklMRVMpOiBSZW5hbWUgdG8gRElTVEZJTEUubm9ybWFsLiAgUmVtb3ZlICQoRElTVEZJTEVTLmNvbW1vbikuCistCShESVNURklMRS5nZXR0ZXh0KTogUmVtb3ZlICQoRElTVEZJTEVTLmNvbW1vbikuCistCShhbGwtZ2V0dGV4dCk6IFJlbW92ZSBnb2FsLgorLQkoaW5zdGFsbCk6IElmICQoUEFDS0FHRSkgPSBnZXR0ZXh0IGluc3RhbGwsIG90aGVyd29zZSBkbyBub3RoaW5nLiAgTm8KKy0JcGFja2FnZSBidXQgZ2V0dGV4dCBpdHNlbGYgc2hvdWxkIGluc3RhbGwgbGliaW50bC5oICsgaGVhZGVycy4KKy0JKGRpc3QpOiBFeHRlbmQgZ29hbCB0byB3b3JrIGZvciBnZXR0ZXh0LCB0b28uCistCShkaXN0LWdldHRleHQpOiBSZW1vdmUgZ29hbC4KKy0KKy0JKiBkY2dldHRleHQuYyBbIUhBVkVfQUxMT0NBXTogRGVmaW5lIG1hY3JvIGFsbG9jYSBieSB1c2luZyBtYWxsb2MuCistCistU3VuIEp1biAgMiAxNzozMzowNiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsb2FkbXNnY2F0LmMgKF9ubF9sb2FkX2RvbWFpbik6IFBhcmFtZXRlciBpcyBub3cgY29tZXMgZnJvbQorLSAgICAgICAgZmluZF9sMTBuZmlsZS4KKy0KKy1TYXQgSnVuICAxIDAyOjIzOjAzIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jIChfX2FyZ3pfbmV4dCk6IEFkZCBkZWZpbml0aW9uLgorLQorLQkqIGRjZ2V0dGV4dC5jIFshSEFWRV9BTExPQ0FdOiBBZGQgY29kZSBmb3IgaGFuZGxpbmcgbWlzc2luZyBhbGxvY2EKKy0JY29kZS4gIFVzZSBuZXcgbDEwbmZpbGUgaGFuZGxpbmcuCistCistCSogbG9jYWxlYWxpYXMuYyBbIUhBVkVfQUxMT0NBXTogQWRkIGNvZGUgZm9yIGhhbmRsaW5nIG1pc3NpbmcKKy0gICAgICAgIGFsbG9jYSBjb2RlLgorLQorLQkqIGwxMG5mbGlzdC5jOiBJbml0aWFsIHJldmlzaW9uLgorLQorLVR1ZSBBcHIgIDIgMTg6NTE6MTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxsLWdldHRleHQpOiBOZXcgZ29hbC4gIFNhbWUgYXMgYWxsLXllcy4KKy0KKy1UaHUgTWFyIDI4IDIzOjAxOjIyIDE5OTYgIEthcmwgRWljaHdhbGRlciAgPGtlQGtlLmNlbnRyYWwuZGU+CistCistCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOiBEZWZpbmUgdXNpbmcgQGRhdGFkaXJALgorLQorLVR1ZSBNYXIgMjYgMTI6Mzk6MTQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEluY2x1ZGUgPGN0eXBlLmg+LiAgUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCistCistU2F0IE1hciAyMyAwMjowMDozNSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KTogUmVuYW1lIHRvIHN0cGNweV9fIHRvIHByZXZlbnQgY2xhc2hpbmcKKy0gICAgICAgIHdpdGggZXh0ZXJuYWwgZGVjbGFyYXRpb24uCistCistU2F0IE1hciAgMiAwMDo0NzowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChhbGwtbm8pOiBSZW5hbWUgZnJvbSBhbGxfbm8uCistCistU2F0IEZlYiAxNyAwMDoyNTo1OSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGdldHRleHRQLmggW2xvYWRlZF9kb21haW5dOiBBcnJheSBgc3VjY2Vzc29yJyBtdXN0IG5vdyBjb250YWluIHVwCistICAgICAgICB0byA2MyBlbGVtZW50cyAoYmVjYXVzZSBvZiBjb2Rlc2V0IG5hbWUgbm9ybWFsaXphdGlvbikuCistCistCSogZmluZGRvbWFpbi5jOiBJbXBsZW1lbnQgY29kZXNldCBuYW1lIG5vcm1hbGl6YXRpb24uCistCistVGh1IEZlYiAxNSAwNDozOTowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChhbGwpOiBEZWZpbmUgdG8gYGFsbC1AVVNFX05MU0AnLgorLQkoYWxsLXllcywgYWxsX25vKTogTmV3IGdvYWxzLiAgYGFsbC1ubycgaXMgbm9vcCwgYGFsbC15ZXMnCistCWlzIGZvcm1lciBhbGwuCistCistTW9uIEphbiAxNSAyMTo0NjowMSAxOTk2ICBIb3dhcmQgR2F5bGUgIDxob3dhcmRAaGFsLmNvbT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKTogSW5jcmVtZW50IHN0cmluZyBwb2ludGVycyBpbiBsb29wCistICAgICAgICBvZiBzdHJjYXNlY21wIHJlcGxhY2VtZW50LgorLQorLUZyaSBEZWMgMjkgMjE6MTY6MzQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBXaG8gY29tbWVudGVkIHRoaXMgZ29hbCBvdXQgPyA6LSkKKy0KKy1GcmkgRGVjIDI5IDE1OjA4OjE2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IFNhdmUgYGVycm5vJy4gIEZhaWxpbmcgc3lzdGVtIGNhbGxzCistCXNob3VsZCBub3QgZWZmZWN0IGl0IGJlY2F1c2UgYSBtaXNzaW5nIGNhdGFsb2cgaXMgbm8gZXJyb3IuCistCVJlcG9ydGVkIGJ5IEhhcmFsZCBLPG86Pm5pZyA8a29lbmlnQHRhdC5waHlzaWsudW5pLXR1ZWJpbmdlbi5kZT4uCistCistVHVlIERlYyAxOSAyMjowOToxMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChNYWtlZmlsZSk6IEV4cGxpY2l0bHkgdXNlICQoU0hFTEwpIGZvciBydW5uaW5nCistICAgICAgICBzaGVsbCBzY3JpcHRzLgorLQorLUZyaSBEZWMgMTUgMTc6MzQ6NTkgMTk5NSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogT25seSBpbnN0YWxsIGxpYnJhcnkgYW5kIGhlYWRlciB3aGVuCistCXdlIHVzZSB0aGUgb3duIGltcGxlbWVudGF0aW9uLiAgRG9uJ3QgZG8gaXQgd2hlbiB1c2luZyB0aGUKKy0Jc3lzdGVtJ3MgZ2V0dGV4dCBvciBjYXRnZXRzIGZ1bmN0aW9ucy4KKy0KKy0JKiBkY2dldHRleHQuYyAoZmluZF9tc2cpOiBNdXN0IG5vdCBzd2FwIGRvbWFpbi0+aGFzaF9zaXplIGhlcmUuCistCistU2F0IERlYyAgOSAxNjoyNDozNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMsIGxpYmludGwuaW5zdCwgbGliZ2V0dGV4dC5oLCBoYXNoLXN0cmluZy5oLAorLQlnZXR0ZXh0UC5oLCBmaW5kZG9tYWluLmMsIGRjZ2V0dGV4dC5jLCBjYXQtY29tcGF0LmM6CistCVVzZSBQQVJBTVMgaW5zdGVhZCBvZiBfX1AuICBTdWdnZXN0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCistCistVHVlIERlYyAgNSAxMTozOToxNCAxOTk1ICBMYXJyeSBTY2h3aW1tZXIgIDxyb3NlYnVkQGN5Y2xvbmUuc3RhbmZvcmQuZWR1PgorLQorLQkqIGxpYmdldHRleHQuaDogVXNlIGAjaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpJyBpbnN0ZWFkIG9mIGAjaWYKKy0JIV9MSUJJTlRMX0gnIGJlY2F1c2UgU29sYXJpcyBkZWZpbmVzIF9MSUJJTlRMX0ggYXMgZW1wdHkuCistCistTW9uIERlYyAgNCAxNTo0MjowNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6CistCUluc3RhbGwgbGliaW50bC5pbnN0IGluc3RlYWQgb2YgbGliaW50bC5oLmluc3RhbGwuCistCistU2F0IERlYyAgMiAyMjo1MTozOCAxOTk1ICBNYXJjdXMgRGFuaWVscyAgPG1hcmN1c0BzeXNjLnBkeC5lZHU+CistCistCSogY2F0LWNvbXBhdC5jICh0ZXh0ZG9tYWluKToKKy0JUmV2ZXJzZSBvcmRlciBpbiB3aGljaCBmaWxlcyBhcmUgdHJpZWQgeW91IGxvYWQuICBGaXJzdAorLQl0cnkgbG9jYWwgZmlsZSwgd2hlbiB0aGlzIGZhaWxlZCBhYnNvbHV0ZSBwYXRoLgorLQorLVdlZCBOb3YgMjkgMDI6MDM6NTMgMTk5NSAgTmVsc29uIEguIEYuIEJlZWJlICA8YmVlYmVAbWF0aC51dGFoLmVkdT4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKTogQWRkIG1pc3NpbmcgeyB9LgorLQorLVN1biBOb3YgMjYgMTg6MjE6NDEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsaWJpbnRsLmluc3Q6IEFkZCBtaXNzaW5nIF9fUCBkZWZpbml0aW9uLiAgUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgorLQorLQkqIE1ha2VmaWxlLmluOgorLQlBZGQgZHVtbXkgYGFsbCcgYW5kIGBkdmknIGdvYWxzLiAgUmVwb3J0ZWQgYnkgVG9tIFRyb21leS4KKy0KKy1TYXQgTm92IDI1IDE2OjEyOjAxIDE5OTUgIEZyYW5jLG9pcyBQaW5hcmQgIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4KKy0KKy0JKiBoYXNoLXN0cmluZy5oOiBDYXBpdGFsaXplIGFyZ3VtZW50cyBvZiBtYWNyb3MuCistCistU2F0IE5vdiAyNSAxMjowMTozNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBQcmV2ZW50IGZpbGVzIG5hbWVzIGxvbmdlciB0aGFuIDEzCistCWNoYXJhY3RlcnMuICBsaWJpbnRsLmguZ2xpYmMtPmxpYmludGwuZ2xpYmMsCistCWxpYmludGwuaC5pbnN0YWxsLT5saWJpbnRsLmluc3QuICBSZXBvcnRlZCBieSBKb3NodWEgUi4gUG91bHNvbi4KKy0KKy1TYXQgTm92IDI1IDExOjMxOjEyIDE5OTUgIEVyaWMgQmFja3VzICA8ZXJpY2JAbHNpZC5ocC5jb20+CistCistCSogZGNnZXR0ZXh0LmM6IEZpeCBidWcgaW4gcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscy4KKy0KKy1TYXQgTm92IDI1IDAyOjM1OjI3IDE5OTUgIE5lbHNvbiBILiBGLiBCZWViZSAgPGJlZWJlQG1hdGgudXRhaC5lZHU+CistCistCSogbGliZ2V0dGV4dC5oOiBTb2xhcmlzIGNjIGRvZXMgbm90IHVuZGVyc3RhbmQKKy0JICNpZiAhU1lNQk9MMSAmJiAhU1lNQk9MMi4gIFNhZAlidXQgdHJ1ZS4KKy0KKy1UaHUgTm92IDIzIDE2OjIyOjE0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogaGFzaC1zdHJpbmcuaCAoaGFzaF9zdHJpbmcpOgorLQlGaXggZm9yIG1hY2hpbmUgd2l0aCA+MzIgYml0IGB1bnNpZ25lZCBsb25nJ3MuCistCistCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6CistCUZpeCBob3JyaWJsZSBidWcgaW4gbG9vcCBmb3IgYWx0ZXJuYXRpdmUgdHJhbnNsYXRpb24uCistCistVGh1IE5vdiAyMyAwMTo0NToyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHBvMnRibC5zZWQuaW4sIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6CistCVNvbWUgZnVydGhlciBzaW1wbGlmaWNhdGlvbnMgaW4gbWVzc2FnZSBudW1iZXIgZ2VuZXJhdGlvbi4KKy0KKy1Nb24gTm92IDIwIDIxOjA4OjQzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbGliaW50bC5oLmdsaWJjOiBVc2UgX19jb25zdCBpbnN0ZWFkIG9mIGNvbnN0IGluIHByb3RvdHlwZXMuCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKToKKy0JSW5zdGFsbCBsaWJpbnRsLmguaW5zdGFsbCBpbnN0ZWFkIG9mIGxpYmludGwuaC4gIFRoaXMKKy0JaXMgYSBzdHJpcHBlZC1kb3duIHZlcnNpb24uICBTdWdnZXN0ZWQgYnkgUGV0ZXIgTWlsbGVyLgorLQorLQkqIGxpYmludGwuaC5pbnN0YWxsLCBsaWJpbnRsLmguZ2xpYmM6IEluaXRpYWwgcmV2aXNpb24uCistCistCSogbG9jYWxlYWxpYXMuYyAoX25sX2V4cGFuZF9hbGlhcywgcmVhZF9hbGlhc19maWxlKToKKy0JUHJvdGVjdCBwcm90b3R5cGVzIGluIHR5cGUgY2FzdHMgYnkgX19QLgorLQorLVR1ZSBOb3YgMTQgMTY6NDM6NTggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBoYXNoLXN0cmluZy5oOiBDb3JyZWN0IHByb3RvdHlwZSBmb3IgaGFzaF9zdHJpbmcuCistCistU3VuIE5vdiAxMiAxMjo0MjozMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKTogQWRkIHByb3RvdHlwZS4KKy0KKy0JKiBnZXR0ZXh0UC5oOiBGaXggY29weXJpZ2h0LgorLQkoU1dBUCk6IEFkZCBwcm90b3R5cGUuCistCistV2VkIE5vdiAgOCAyMjo1NjozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6IEZvcmdvdCBzaXplb2YuCistCUF2b2lkIGNhbGxpbmcgKnByaW50ZiBmdW5jdGlvbi4gIFRoaXMgaW50cm9kdWNlcyBhIGJpZyBvdmVyaGVhZC4KKy0JUGF0Y2ggYnkgUm9sYW5kIE1jR3JhdGguCistCistVHVlIE5vdiAgNyAxNDoyMTowOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYywgY2F0LWNvbXBhdC5jOiBXcm9uZyBpbmRlbnRhdGlvbiBpbiAjaWYgZm9yIHN0cGNweS4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6CistCURlZmluZSBzdWJzdGl0dXRpb24gZnVuY3Rpb24gbG9jYWwuICBUaGUgbWFjcm8gd2FzIHRvIGZsYWt5LgorLQorLQkqIGNhdC1jb21wYXQuYzogRml4IHR5cG8uCistCistCSogeG9wZW4tbXNnLnNlZCwgbGludXgtbXNnLnNlZDoKKy0JV2hpbGUgYnJpbmdpbmcgbWVzc2FnZSBudW1iZXIgdG8gcmlnaHQgcGxhY2Ugb25seSBhY2NlcHQgZGlnaXRzLgorLQorLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6IE5vdyB0aGF0IHRoZSBjb3VudGVyIGRvZXMgbm90IGhhdmUKKy0JbGVhZGluZyAwcyB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSB0aGVtLiAgUmVwb3J0ZWQgYnkgTWFyY3VzCistCURhbmllbHMuCistCistCSogTWFrZWZpbGUuaW4gKC4uL3BvL2NhdC1pZC10Ymwubyk6IFVzZSAkKHRvcF9zcmRpcikgaW4KKy0JZGVwZW5kZW5jeS4gIFJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgorLQorLQkqIGNhdC1jb21wYXQuYzogKHN0cGNweSkgWyFfTElCQyAmJiAhSEFWRV9TVFBDUFldOiBEZWZpbmUgcmVwbGFjZW1lbnQuCistCUdlbmVyYWxseSBjbGVhbnVwIHVzaW5nICNpZiBpbnN0ZWFkIG9mICNpZm5kZWYuCistCistCSogTWFrZWZpbGUuaW46IENvcnJlY3QgdHlwb3MgaW4gY29tbWVudC4gIEJ5IEZyYW5jLG9pcyBQaW5hcmQuCistCistTW9uIE5vdiAgNiAwMDoyNzowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IERvbid0IGluc3RhbGwgbGliaW50bC5oIGFuZCBsaWJpbnRsLmEKKy0JaWYgd2UgdXNlIGFuIGF2YWlsYWJsZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLgorLQorLVN1biBOb3YgIDUgMjI6MDI6MDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IEZpeCB0eXBvOiBIQVZFX0NBVEdFVFRTIC0+IEhBVkVfQ0FUR0VUUy4gIFJlcG9ydGVkCistCWJ5IEZyYW5jLG9pcyBQaW5hcmQuCistCistCSogbGliZ2V0dGV4dC5oOiBVc2UgI2lmIGluc3RlYWQgb2YgI2lmZGVmLyNpZm5kZWYuCistCistCSogZmluZGRvbWFpbi5jOgorLQlDb21tZW50cyBkZXNjcmliaW5nIHdoYXQgaGFzIHRvIGJlIGRvbmUgc2hvdWxkIHN0YXJ0IHdpdGggRklYTUUuCistCistU3VuIE5vdiAgNSAxOTozODowMSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBTcGxpdC4gIFVzZSBESVNURklMRVMgd2l0aCBub3JtYWwgbWVhbmluZy4KKy0JRElTVEZJTEVTLmNvbW1vbiBuYW1lcyB0aGUgZmlsZXMgY29tbW9uIHRvIGJvdGggZGlzdCBnb2Fscy4KKy0JRElTVEZJTEVTLmdldHRleHQgYXJlIHRoZSBmaWxlcyBvbmx5IGRpc3RyaWJ1dGVkIGluIEdOVSBnZXR0ZXh0LgorLQorLVN1biBOb3YgIDUgMTc6MzI6NTQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogQ29ycmVjdCBzZWFyY2hpbmcgaW4gZGVyaXZlZCBsb2NhbGVzLgorLQlUaGlzIHdhcyBuZWNlc3Nhcnkgc2luY2UgYSBjaGFuZ2UgaW4gX25sX2ZpbmRfbXNnIHNldmVyYWwgd2Vla3MKKy0JYWdvLiAgSSByZWFsbHkgZG9uJ3Qga25vdyB0aGlzIGlzIHN0aWxsIG5vdCBmaXhlZC4KKy0KKy1TdW4gTm92ICA1IDEyOjQzOjEyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOiBUZXN0IGZvciBGSUxFTkFNRSA9PSBOVUxMLiAgVGhpcworLQltaWdodCBtYXJrIGEgc3BlY2lhbCBjb25kaXRpb24uCistCistCSogZmluZGRvbWFpbi5jIChtYWtlX2VudHJ5X3JlYyk6IERvbid0IG1ha2UgaWxsZWdhbCBlbnRyeSBhcyBkZWNpZGVkLgorLQorLQkqIE1ha2VmaWxlLmluIChkaXN0KTogU3VwcHJlc3MgZXJyb3IgbWVzc2FnZSB3aGVuIGxuIGZhaWxlZC4KKy0JR2V0IGZpbGVzIGZyb20gJChzcmNkaXIpIGV4cGxpY2l0bHkuCistCistCSogbGliZ2V0dGV4dC5oIChnZXR0ZXh0X2NvbnN0KTogUmVuYW1lIHRvIGdldHRleHRfbm9vcC4KKy0KKy1GcmkgTm92ICAzIDA3OjM2OjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChtYWtlX2VudHJ5X3JlYyk6CistCVByb3RlY3QgYWdhaW5zdCB3cm9uZyBsb2NhbGUgbmFtZXMgYnkgdGVzdGluZyBtYXNrLgorLQorLQkqIGxpYmdldHRleHQuaCAoZ2V0dGV4dF9jb25zdCk6IEFkZCBtYWNybyBkZWZpbml0aW9uLgorLQlDYXBpdGFsaXplIG1hY3JvIGFyZ3VtZW50cy4KKy0KKy1UaHUgTm92ICAyIDIzOjE1OjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgorLQlUZXN0IGZvciBwb2ludGVyICE9IE5VTEwgYmVmb3JlIGFjY2Vzc2luZyB2YWx1ZS4KKy0JUmVwb3J0ZWQgYnkgVG9tIFRyb21leS4KKy0KKy0JKiBnZXR0ZXh0LmMgKE5VTEwpOgorLQlEZWZpbmUgYXMgKHZvaWQqKTAgaW5zdGFkIG9mIDAuICBSZXBvcnRlZCBieSBGcmFuYyxvaXMgUGluYXJkLgorLQorLU1vbiBPY3QgMzAgMjE6Mjg6NTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBwbzJ0Ymwuc2VkLmluOiBTZXJpb3VzIHR5cG8gYnVnIGZpeGVkIGJ5IEppbSBNZXllcmluZy4KKy0KKy1TYXQgT2N0IDI4IDIzOjIwOjQ3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbGliZ2V0dGV4dC5oOiBEaXNhYmxlIGRjZ2V0dGV4dCBvcHRpbWl6YXRpb24gZm9yIFNvbGFyaXMgMi4zLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOgorLQlQZXRlciBNaWxsZXIgcmVwb3J0ZWQgdGhhdCB0b2xvd2VyIGluIHNvbWUgc3lzdGVtcyBpcworLQlldmVuIGR1bWJlciB0aGFuIEkgdGhvdWdodC4gIFByb3RlY3QgY2FsbCBieSBgaXN1cHBlcicuCistCistRnJpIE9jdCAyNyAyMjoyMjo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChsaWJkaXIsIGluY2x1ZGVkaXIpOiBOZXcgdmFyaWFibGVzLgorLQkoaW5zdGFsbC1zcmMpOiBJbnN0YWxsIGxpYmludGwuYSBhbmQgbGliaW50bC5oIGluIGNvcnJlY3QgZGlycy4KKy0KKy1GcmkgT2N0IDI3IDIyOjA3OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKFNPVVJDRVMpOiBGaXggdHlwbzogaW50cmwuY29tcGF0LmMgLT4gaW50bC1jb21wYXQuYy4KKy0KKy0JKiBwbzJ0Ymwuc2VkLmluOiBQYXRjaCBmb3IgYnVnZ3kgU0VEcyBieSBDaHJpc3RpYW4gdm9uIFJvcXVlcy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jOgorLQlGaXggdHlwbyBhbmQgc3VwZXJmbG91cyB0ZXN0LiAgUmVwb3J0ZWQgYnkgQ2hyaXN0aWFuIHZvbiBSb3F1ZXMuCistCistRnJpIE9jdCAgNiAxMTo1MjowNSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JQ29ycmVjdCBzb21lIHJlbWFpbmRlciBmcm9tIHRoZSBwcmUtQ0VOIHN5bnRheC4gIE5vdworLQl3ZSBkb24ndCBoYXZlIGEgY29uc3RhbnQgbnVtYmVyIG9mIHN1Y2Nlc3NvcnMgYW55bW9yZS4KKy0KKy1XZWQgU2VwIDI3IDIxOjQxOjEzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IEFkZCBsaWJpbnRsLmguZ2xpYmMuCistCistCSogTWFrZWZpbGUuaW4gKGRpc3QtbGliYyk6IEFkZCBnb2FsIGZvciBwYWNraW5nIHNvdXJjZXMgZm9yIGdsaWJjLgorLQkoQ09NU1JDUywgQ09NSERSUyk6IFNwbGl0dGVkIHRvIHNlcGFyYXRlIHNvdXJjZXMgc2hhcmVkIHdpdGggZ2xpYmMuCistCistCSogbG9hZG1zZ2NhdC5jOiBGb3JnZXQgdG8gY29udGludWUgI2lmIGxpbmUuCistCistCSogbG9jYWxlYWxpYXMuYzoKKy0JW19MSUJDXTogUmVuYW1lIHN0cmNhc2VjbXAgdG8gX19zdHJjYXNlY21wIHRvIGtlZXAgQU5TSSBDIG5hbWUKKy0Jc3BhY2UgY2xlYW4uCistCistCSogZGNnZXR0ZXh0LmMsIGZpbmRkb21haW4uYzogQmV0dGVyIGNvbW1lbnQgdG8gbGFzdCBjaGFuZ2UuCistCistCSogbG9hZG1zZ2NhdC5jOgorLQlbX0xJQkNdOiBSZW5hbWUgZnN0YXQsIG9wZW4sIGNsb3NlLCByZWFkLCBtbWFwLCBhbmQgbXVubWFwIHRvCistCV9fZnN0YXQsIF9fb3BlbiwgX19jbG9zZSwgX19yZWFkLCBfX21tYXAsIGFuZCBfX211bm1hcCByZXNwCistCXRvIGtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCistCistCSogZmluZGRvbWFpbi5jOgorLQlbX0xJQkNdOiBSZW5hbWUgc3RwY3B5IHRvIF9fc3RwY3B5IHRvIGtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCistCistCSogZGNnZXR0ZXh0LmM6CistCVtfTElCQ106IFJlbmFtZSBnZXRjZWQgYW5kIHN0cGNweSB0byBfX2dldGN3ZCBhbmQgX19zdHBjcHkgcmVzcCB0bworLQlrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgorLQorLQkqIGxpYmdldHRleHQuaDoKKy0JSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdGhvc2Ugb2xkIFN5c1Ygc3lzdGVtcyBvdXQgdGhlcmUuCistCVJlcG9ydGVkIGJ5IEZyYW5jZXNjbyBQb3RvcnRpYC4KKy0KKy0JKiBsb2FkbXNnY2F0LmMgKHVzZV9tbWFwKTogRGVmaW5lIGlmIGNvbXBpbGVkIGZvciBnbGliYy4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOiBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCistCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgorLQorLQkqIGZpbmRkb21haW4uYzogRml4IDIgdGltZXMgZGVmaWVuZCAtPiBkZWZpbmVkLgorLQorLQkqIHRleHRkb21haW4uYzogSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbgorLQljb21waWxpbmcgZm9yIGdsaWJjLiAgSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycworLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jLCBsb2FkbXNnY2F0LmM6IFByZXBhcmUgdG8gYmUgY29tcGlsZWQgaW4gZ2xpYmMuCistCistCSogZ2V0dGV4dC5jOgorLQlJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuIGNvbXBpbGluZyBmb3IgZ2xpYmMuCistCUdldCBOVUxMIGZyb20gc3RkZGVmLmggaWYgd2UgY29tcGlsZSBmb3IgZ2xpYmMuCistCistCSogZmluZGRvbWFpbi5jOiBJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuCistCWNvbXBpbGluZyBmb3IgZ2xpYmMuICBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCistCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgorLQorLQkqIGRjZ2V0dGV4dC5jOiBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzIHVuY29uZGl0aW9uYWxseQorLQlpZiBfTElCQyBpcyBkZWZpbmVkLgorLQorLQkqIGRnZXR0ZXh0LmM6IElmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YKKy0JbGliZ2V0dGV4dC5oLgorLQkobG9jYWxlLmgpOiBEb24ndCByZWx5IG9uIEhBVkVfTE9DQUxFX0ggd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgorLQorLQkqIGRjZ2V0dGV4dC5jOiBJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mCistCWxpYmdldHRleHQuaC4KKy0JKGdldGN3ZCk6IERvbid0IHJlbHkgb24gSEFWRV9HRVRDV0Qgd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6CistCUlmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oLgorLQorLU1vbiBTZXAgMjUgMjI6MjM6MDYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChfbmxfZXhwYW5kX2FsaWFzKTogRG9uJ3QgY2FsbCBic2VhcmNoIGlmIE5NQVAgPD0gMC4KKy0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCistCistCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6CistCVN0cmluZyB1c2VkIGluIHB1dGVudiBtdXN0IG5vdCBiZSByZWN5Y2xlZC4KKy0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCistCistCSogbGliZ2V0dGV4dC5oIChfX1VTRV9HTlVfR0VUVEVYVCk6CistCUFkZGl0aW9uYWwgc3ltYm9sIHRvIHNpZ25hbCB0aGF0IHdlIHVzZSBHTlUgZ2V0dGV4dAorLQlsaWJyYXJ5LgorLQorLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgorLQlGaXggYnVnIHdpdGggdGhlIHN0cmFuZ2Ugc3RwY3B5IHJlcGxhY2VtZW50LgorLQlSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCistCistU2F0IFNlcCAyMyAwODoyMzo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGNhdC1jb21wYXQuYzogSW5jbHVkZSA8c3RyaW5nLmg+IGZvciBzdHBjcHkgcHJvdG90eXBlLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6CistCVdoaWxlIGV4cGFuZCBzdHJkdXAgY29kZSB0ZW1wb3JhcnkgdmFyaWFibGUgYGNwJyBoaWRlZAorLQloaWdoZXIgbGV2ZWwgdmFyaWFibGUgd2l0aCBzYW1lIG5hbWUuICBSZW5hbWUgdG8gYHRwJy4KKy0KKy0JKiB0ZXh0ZG9tYWluLmMgKHRleHRkb21haW4pOgorLQlBdm9pZCB3YXJuaW5nIGJ5IHVzaW5nIHRlbXBvcmFyeSB2YXJpYWJsZSBpbiBzdHJkdXAgY29kZS4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGFwcGxpY2F0aW9uJy4KKy0KKy1UaHUgU2VwIDIxIDE1OjUxOjQ0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6CistCVVzZSBzdHJjYXNlY21wKCkgb25seSBpZiBhdmFpbGFibGUuICBFbHNlIHVzZQorLQlpbXBsZW1lbnRhdGlvbiBpbiBwbGFjZS4KKy0KKy0JKiBpbnRsLWNvbXBhdC5jOgorLQlXcmFwcGVyIGZ1bmN0aW9ucyBub3cgY2FsbCAqX18gZnVuY3Rpb25zIGluc3RlYWQgb2YgX18qLgorLQorLQkqIGxpYmdldHRleHQuaDogRGVjbGFyZSBwcm90b3R5cGVzIGZvciAqX18gZnVuY3Rpb25zIGluc3RlYWQgZm9yIF9fKi4KKy0KKy0JKiBjYXQtY29tcGF0LmMsIGxvYWRtc2djYXQuYzoKKy0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0CistCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKKy0Jc3RhbmRhbG9uZS4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOgorLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKKy0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAorLQlzdGFuZGFsb25lLgorLQlSZW5hbWUgdG8gYmluZHRleHRkb21haW5fXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgorLQorLQkqIGRnZXR0ZXh0LmM6CistCVJlbmFtZSBmdW5jdGlvbiB0byBkZ2V0dGV4dF9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCistCistCSogZ2V0dGV4dC5jOgorLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKKy0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAorLQlzdGFuZGFsb25lLgorLQlGdW5jdGlvbnMgbm93IGNhbGxlZCBnZXR0ZXh0X18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KKy0KKy0JKiBkY2dldHRleHQuYywgbG9jYWxlYWxpYXMuYywgdGV4dGRvbWFpbi5jLCBmaW5kZG9tYWluLmM6CistCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAorLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCistCXN0YW5kYWxvbmUuCistCistU3VuIFNlcCAxNyAyMzoxNDo0OSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYzogQ29ycmVjdCBzb21lIGJ1Z3MgaW4gaGFuZGxpbmcgb2YgQ0VOIHN0YW5kYXJkCistIAlsb2NhbGUgZGVmaW5pdGlvbnMuCistCistVGh1IFNlcCAgNyAwMTo0OToyOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYzogSW1wbGVtZW50IENFTiBzeW50YXguCistCistCSogZ2V0dGV4dFAuaCAobG9hZGVkX2RvbWFpbik6IEV4dGVuZCBudW1iZXIgb2Ygc3VjY2Vzc29ycyB0byAzMS4KKy0KKy1TYXQgQXVnIDE5IDE5OjI1OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGFsaWFzcGF0aCk6IFJlbW92ZSBwYXRoIHRvIFgxMSBsb2NhbGUgZGlyLgorLQorLQkqIE1ha2VmaWxlLmluOiBNYWtlIGluc3RhbGwtc3JjIGRlcGVuZCBvbiBpbnN0YWxsLiAgVGhpcyBoZWxwcworLSAJZ2V0dGV4dCB0byBpbnN0YWxsIHRoZSBzb3VyY2VzIGFuZCBvdGhlciBwYWNrYWdlcyBjYW4gdXNlIHRoZQorLSAJaW5zdGFsbCBnb2FsLgorLQorLVNhdCBBdWcgMTkgMTU6MTk6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAodW5pbnN0YWxsKTogUmVtb3ZlIHN0dWZmIGluc3RhbGxlZCBieSBpbnN0YWxsLXNyYy4KKy0KKy1UdWUgQXVnIDE1IDEzOjEzOjUzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogVkVSU0lPTi5pbjogSW5pdGlhbCByZXZpc2lvbi4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKToKKy0JQWRkIFZFUlNJT04gZmlsZS4gIFRoaXMgaXMgbm90IG5lY2Vzc2FyeSBmb3IgZ2V0dGV4dCwgYnV0CistCWZvciBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGlzIGxpYnJhcnkuCistCistVHVlIEF1ZyAxNSAwNjoxNjo0NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGdldHRleHRQLmggKF9ubF9maW5kX2RvbWFpbik6CistCU5ldyBwcm90b3R5cGUgYWZ0ZXIgY2hhbmdpbmcgc2VhcmNoIHN0cmF0ZWd5LgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JV2Ugbm93IHRyeSBvbmx5IHRvIGZpbmQgYSBzcGVjaWZpZWQgY2F0YWxvZy4gIEZhbGwgYmFjayB0byBvdGhlcgorLQljYXRhbG9ncyBsaXN0ZWQgaW4gdGhlIGxvY2FsZSBsaXN0IGlzIG5vdyBkb25lIGluIF9fZGNnZXR0ZXh0LgorLQorLQkqIGRjZ2V0dGV4dC5jIChfX2RjZ2V0dGV4dCk6CistCU5vdyB3ZSBwcm92aWRlIG1lc3NhZ2UgZmFsbCBiYWNrIGV2ZW4gdG8gZGlmZmVyZW50IGxhbmd1YWdlcy4KKy0JSS5lLiBpZiBhIG1lc3NhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiBvbmUgbGFuZ3VhZ2UgYWxsIHRoZSBvdGhlcgorLSAJaW4gdGhlIGxvY2FsZSBsaXN0IGEgdHJpZWQuICBGb3JtZXJseSBmYWxsIGJhY2sgd2FzIG9ubHkgcG9zc2libGUKKy0gCXdpdGhpbiBvbmUgbGFuZ3VhZ2UuICBJbXBsZW1lbnRlZCBieSBtb3Zpbmcgb25lIGxvb3AgZnJvbQorLSAJX25sX2ZpbmRfZG9tYWluIHRvIGhlcmUuCistCistTW9uIEF1ZyAxNCAyMzo0NTo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKToKKy0JRGlyZWN0b3J5IHdoZXJlIHNvdXJjZSBvZiBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGFyZSBtYWRlCistCWF2YWlsYWJsZS4KKy0JKElOU1RBTEwsIElOU1RBTExfREFUQSk6IFByb2dyYW1zIHVzZWQgZm9yIGluc3RhbGxpbmcgc291cmNlcy4KKy0JKGdldHRleHQtc3JjKTogTmV3LiAgUnVsZSB0byBpbnN0YWxsIEdOVSBnZXR0ZXh0IHNvdXJjZXMgZm9yIHVzZSBpbgorLQlnZXR0ZXh0aXplIHNoZWxsIHNjcmlwdC4KKy0KKy1TdW4gQXVnIDEzIDE0OjQwOjQ4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOgorLQlVc2UgbW1hcCBmb3IgbG9hZGluZyBvbmx5IHdoZW4gbXVubWFwIGZ1bmN0aW9uIGlzCistCWFsc28gYXZhaWxhYmxlLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogRGVwZW5kIG9uIGBhbGwnIGdvYWwuCistCistV2VkIEF1ZyAgOSAxMTowNDozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6CistCURvIG5vdCBvdmVyd3JpdGUgJ1xuJyB3aGVuIHRlcm1pbmF0aW5nIGFsaWFzIHZhbHVlIHN0cmluZy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgorLQlIYW5kbGUgbG9uZyBsaW5lcy4gIElnbm9yZSB0aGUgcmVzdCBub3QgZml0dGluZyBpbgorLQl0aGUgYnVmZmVyIGFmdGVyIHRoZSBpbml0aWFsIGBmZ2V0cycgY2FsbC4KKy0KKy1XZWQgQXVnICA5IDAwOjU0OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZ2V0dGV4dFAuaCAoX25sX2xvYWRfZG9tYWluKToKKy0JQWRkIHByb3RvdHlwZSwgcmVwbGFjaW5nIHByb3RvdHlwZSBmb3IgX25sX2xvYWRfbXNnX2NhdC4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6CistCVJlbW92ZSB1bm5lZWRlZCB2YXJpYWJsZSBmaWxlbmFtZSBhbmQgZmlsZW5hbWVfbGVuLgorLQkoZXhwYW5kX2FsaWFzKTogUmVtb3ZlIHByb3RvdHlwZSBiZWNhdXNlIGZ1bmN0aW9ucyBkb2VzIG5vdAorLSAJZXhpc3QgYW55bW9yZS4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgorLQlDaGFuZ2UgdHlwZSBvZiBmbmFtZV9sZW4gcGFyYW1ldGVyIHRvIGludC4KKy0JKHhtYWxsb2MpOiBBZGQgcHJvdG90eXBlLgorLQorLQkqIGxvYWRtc2djYXQuYzogQmV0dGVyIHByb3RvdHlwZXMgZm9yIHhtYWxsb2MuCistCistVHVlIEF1ZyAgOCAyMjozMDozOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JQWxsb3cgYWxpYXMgbmFtZSB0byBiZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBmb3VyIGNvbXBvbmVudHMuCistCistCSogTWFrZWZpbGUuaW4gKGFsaWFzcGF0aCk6IE5ldyB2YXJpYWJsZS4gIFNldCB0byBwcmVsaW1pbmFyeSB2YWx1ZS4KKy0JKFNPVVJDRVMpOiBBZGQgbG9jYWxlYWxpYXMuYy4KKy0JKE9CSkVDVFMpOiBBZGQgbG9jYWxlYWxpYXMuby4KKy0KKy0JKiBnZXR0ZXh0UC5oOiBBZGQgcHJvdG90eXBlIGZvciBfbmxfZXhwYW5kX2FsaWFzLgorLQorLQkqIGZpbmRkb21haW4uYzogQWxpYXNpbmcgaGFuZGxlZCBpbiBpbnRsL2xvY2FsZWFsaWFzLmMuCistCistCSogbG9jYWxlYWxpYXMuYzogQWxpYXNpbmcgZm9yIGxvY2FsZSBuYW1lcy4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOiBCZXR0ZXIgcHJvdG90eXBlcyBmb3IgeG1hbGxvYyBhbmQgeHN0cmR1cC4KKy0KKy1Nb24gQXVnICA3IDIzOjQ3OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IGdldHRleHQucGVybCBpcyBub3cgZm91bmQgaW4gbWlzYy8uCistCistCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6CistCUNvcnJlY3QgaW1wbGVtZW50YXRpb24uICBkaXJuYW1lIHBhcmFtZXRlciB3YXMgbm90IHVzZWQuCistCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgorLQorLQkqIGdldHRleHRQLmggKGxvYWRlZF9kb21haW4pOgorLQlOZXcgZmllbGRzIGBzdWNjZXNzb3InIGFuZCBgZGVjaWRlZCcgZm9yIG9vLCBsYXp5CistCW1lc3NhZ2UgaGFuZGxpbmcgaW1wbGVtZW50YXRpb24uCistCistCSogZGNnZXR0ZXh0LmM6CistCUFkb3B0IGZvciBvbywgbGF6eSBtZXNzYWdlIGhhbmRsaWluZy4KKy0gIAlOb3cgd2UgY2FuIGluaGVyaXQgdHJhbnNsYXRpb25zIGZyb20gbGVzcyBzcGVjaWZpYyBsb2NhbGVzLgorLQkoZmluZF9tc2cpOiBOZXcgZnVuY3Rpb24uCistCistCSogbG9hZG1zZ2NhdC5jLCBmaW5kZG9tYWluLmM6CistCUNvbXBsZXRlIHJld3JpdGUuICBJbXBsZW1lbnQgb28sIGxhenkgbWVzc2FnZSBoYW5kbGluZyA6LSkuCistICAJV2Ugbm93IGhhdmUgYW4gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBgTEFOR1VBR0UnIHdpdGgKKy0gCWEgaGlnaGVyIHByaW9yaXR5IHRoYW4gTENfQUxMIGZvciB0aGUgTENfTUVTU0FHRSBsb2NhbGUuCistICAJSGVyZSB3ZSBjYW4gc2V0IGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2Ygc3BlY2lmaWNhdGlvbnMgZWFjaAorLSAJb2YgdGhlIGZvcm0gYGxhbmd1YWdlW190ZXJyaXRvcnlbLmNvZGVzZXRdXVtAbW9kaWZpZXJdJy4KKy0KKy1TYXQgQXVnICA1IDA5OjU1OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jICh1bmlzdGQuaCk6CistCUluY2x1ZGUgdG8gZ2V0IF9QQ19QQVRIX01BWCBkZWZpbmVkIG9uIHN5c3RlbSBoYXZpbmcgaXQuCistCistRnJpIEF1ZyAgNCAyMjo0MjowMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KTogSW5jbHVkZSBwcm90b3R5cGUuCistCistCSogTWFrZWZpbGUuaW4gKGRpc3QpOiBSZW1vdmUgYGNvcHlpbmcgaW5zdGVhZCcgbWVzc2FnZS4KKy0KKy1XZWQgQXVnICAyIDE4OjUyOjAzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKElELCBUQUdTKTogRG8gbm90IHVzZSAkXi4KKy0KKy1UdWUgQXVnICAxIDIwOjA3OjExIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKFRBR1MsIElEKTogVXNlICReIGFzIGNvbW1hbmQgYXJndW1lbnQuCistCShUQUdTKTogR2l2ZSBldGFncyAtbyBvcHRpb24gdCB3cml0ZSB0byBjdXJyZW50IGRpcmVjdG9yeSwKKy0gCW5vdCAkKHNyY2RpcikuCistCShJRCk6IFVzZSAkKHNyY2RpcikgaW5zdGVhZCBvcyAkKHRvcF9zcmNkaXIpL3NyYy4KKy0JKGRpc3RjbGVhbik6IFJlbW92ZSBJRC4KKy0KKy1TdW4gSnVsIDMwIDExOjUxOjQ2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGdudWxvY2FsZWRpcik6CistCU5ldyB2YXJpYWJsZSwgYWx3YXlzIHVzaW5nIHNoYXJlLyBmb3IgZGF0YSBkaXJlY3RvcnkuCistCShERUZTKTogQWRkIEdOVUxPQ0FMRURJUiwgdXNlZCBpbiBmaW5kZG9tYWluLmMuCistCistCSogZmluZGRvbWFpbi5jIChfbmxfZGVmYXVsdF9kaXJuYW1lKToKKy0JU2V0IHRvIEdOVUxPQ0FMRURJUiwgYmVjYXVzZSBpdCBhbHdheXMgaGFzIHRvIHBvaW50CistCXRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgR05VIGdldHRleHQgTGlicmFyeSB3cml0ZXMgaXQgdG8uCistCistCSogaW50bC1jb21wYXQuYyAodGV4dGRvbWFpbiwgYmluZHRleHRkb21haW4pOgorLQlVbmRlZmluZSBtYWNyb3MgYmVmb3JlIGZ1bmN0aW9uIGRlZmluaXRpb24uCistCistU2F0IEp1bCAyMiAwMToxMDowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxpYmdldHRleHQuaCAoX0xJQklOVExfSCk6CistCVByb3RlY3QgZGVmaW5pdGlvbiBpbiBjYXNlIHdoZXJlIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhcworLQlsaWJnZXR0ZXh0Lmggb24gU29sYXJpcyBtYWNoaW5lcy4gIEFkZCBjb21tZW50IGFib3V0IHRoaXMuCistCistV2VkIEp1bCAxOSAwMjozNjo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGludGwtY29tcGF0LmMgKHRleHRkb21haW4pOiBDb3JyZWN0IHR5cG8uCistCistV2VkIEp1bCAxOSAwMTo1MTozNSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGRjZ2V0dGV4dC5jIChkY2dldHRleHQpOiBGdW5jdGlvbiBub3cgY2FsbGVkIF9fZGNnZXR0ZXh0LgorLQorLQkqIGRnZXR0ZXh0LmMgKGRnZXR0ZXh0KTogTm93IGNhbGxlZCBfX2RnZXR0ZXh0IGFuZCBjYWxscworLSAJX19kY2dldHRleHQuCistCistCSogZ2V0dGV4dC5jIChnZXR0ZXh0KToKKy0JRnVuY3Rpb24gbm93IGNhbGxlZCBfX2dldHRleHQgYW5kIGNhbGxzIF9fZGdldHRleHQuCistCistCSogdGV4dGRvbWFpbi5jICh0ZXh0ZG9tYWluKTogRnVuY3Rpb24gbm93IGNhbGxlZCBfX3RleHRkb21haW4uCistCistCSogYmluZHRleHRkb20uYyAoYmluZHRleHRkb21haW4pOiBGdW5jdGlvbiBub3cgY2FsbGVkCistIAlfX2JpbmR0ZXh0ZG9tYWluLgorLQorLQkqIGludGwtY29tcGF0LmM6IEluaXRpYWwgcmV2aXNpb24uCistCistCSogTWFrZWZpbGUuaW4gKFNPVVJDRVMpOiBBZGQgaW50bC1jb21wYXQuYy4KKy0JKE9CSkVDVFMpOiBXZSBhbHdheXMgY29tcGlsZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBmdW5jdGlvbnMuCistICAJT0JKRUNUUyBjb250YWlucyBhbGwgb2JqZWN0cyBidXQgY2F0LWNvbXBhdC5vLCAuLi9wby9jYXQtaWYtdGJsLm8sCistIAlhbmQgaW50bC1jb21wYXQuby4KKy0gIAkoR0VUVE9CSlMpOiBDb250YWlucyBub3cgb25seSBpbnRsLWNvbXBhdC5vLgorLQorLQkqIGxpYmdldHRleHQuaDoKKy0JUmUtaW5jbHVkZSBwcm90ZWN0aW9uIG1hdGNoZXMgZHVhbGlzdGljIGNoYXJhY3RlciBvZiBsaWJnZXR0ZXh0LmguCistCUZvciBhbGwgZnVuY3Rpb25zIGluIEdOVSBnZXR0ZXh0IGxpYnJhcnkgZGVmaW5lIF9fIGNvdW50ZXIgcGFydC4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKHN0cmNocik6IERlZmluZSBhcyBpbmRleCBpZiBub3QgZm91bmQgaW4gQyBsaWJyYXJ5LgorLQkoX25sX2ZpbmRfZG9tYWluKTogRm9yIHJlbGF0aXZlIHBhdGhzIHBhc3RlIC8gaW4gYmV0d2Vlbi4KKy0KKy1UdWUgSnVsIDE4IDE2OjM3OjQ1IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9hZG1zZ2NhdC5jLCBmaW5kZG9tYWluLmM6IEFkZCBpbmNsdXNpb24gb2Ygc3lzL3R5cGVzLmguCistCistCSogeG9wZW4tbXNnLnNlZDogRml4IGJ1ZyB3aXRoIGBtc2dzdHIgIiInIGxpbmVzLgorLQlBIGxpdHRsZSBiaXQgYmV0dGVyIGNvbW1lbnRzLgorLQorLVR1ZSBKdWwgMTggMDE6MTg6MjcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbjoKKy0JcG8tbW9kZS5lbCwgbWFrZWxpbmtzLCBjb21iaW5lLXNoIGFyZSBub3cgZm91bmQgaW4gLi4vbWlzYy4KKy0KKy0JKiBwby1tb2RlLmVsLCBtYWtlbGlua3MsIGNvbWJpbmUtc2gsIGVsaXNwLWNvbXA6CistCU1vdmVkIHRvIC4uL21pc2MvLgorLQorLQkqIGxpYmdldHRleHQuaCwgZ2V0dGV4dFAuaCwgZ2V0dGV4dC5oOiBVbmlmb3JtIHRlc3QgZm9yIF9fU1REQ19fLgorLQorLVN1biBKdWwgMTYgMjI6MzM6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoSU5TVEFMTCwgSU5TVEFMTF9EQVRBKTogTmV3IHZhcmlhYmxlcy4KKy0JKGluc3RhbGwtZGF0YSwgdW5pbnN0YWxsKTogSW5zdGFsbC91bmluc3RhbGwgLmVsYyBmaWxlLgorLQorLQkqIHBvLW1vZGUuZWwgKEluc3RhbGxhdGlvbiBjb21tZW50KToKKy0JQWRkIC5wb3ggYXMgcG9zc2libGUgZXh0ZW5zaW9uIG9mIC5wbyBmaWxlcy4KKy0KKy1TdW4gSnVsIDE2IDEzOjIzOjI3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZWxpc3AtY29tcDogQ29tcGxldGUgbmV3IHZlcnNpb24gYnkgRnJhbmMsb2lzOiBUaGlzIGRvZXMgbm90CistIAlmYWlsIHdoZW4gbm90IGNvbXBpbGluZyBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4KKy0KKy1TdW4gSnVsIDE2IDAwOjEyOjE3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKC4uL3BvL2NhdC1pZC10Ymwubyk6CistCVVzZSAkKE1BS0UpIGluc3RlYWQgb2YgbWFrZSBmb3IgcmVjdXJzaXZlIG1ha2UuCistCistCSogTWFrZWZpbGUuaW4gKC5lbC5lbGMpOiBVc2UgJChTSEVMTCkgaW5zdGVhZCBvZiAvYmluL3NoLgorLQkoaW5zdGFsbC1leGVjKTogQWRkIG1pc3NpbmcgZHVtbXkgZ29hbC4KKy0JKGluc3RhbGwtZGF0YSwgdW5pbnN0YWxsKTogQCBpbiBtdWx0aS1saW5lIHNoZWxsIGNvbW1hbmQgYXQKKy0gCWJlZ2lubmluZywgbm90IGluIGZyb250IG9mIGVjaG8uICBSZXBvcnRlZCBieSBFcmljIEJhY2t1cy4KKy0KKy1TYXQgSnVsIDE1IDAwOjIxOjI4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6CistCVJlbmFtZSBsaWJnZXR0ZXh0LnBlcmwgdG8gZ2V0dGV4dC5wZXJsIHRvIGZpdCBpbiAxNCBjaGFycworLQlmaWxlIHN5c3RlbXMuCistCistCSogZ2V0dGV4dC5wZXJsOgorLSAJUmVuYW1lIHRvIGdldHRleHQucGVybCB0byBmaXQgaW4gMTQgY2hhcnMgZmlsZSBzeXN0ZW1zLgorLQorLVRodSBKdWwgMTMgMjM6MTc6MjAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IElmICFTVERDX0hFQURFUlMgdHJ5IHRvIGluY2x1ZGUgbWFsbG9jLmguCistCistVGh1IEp1bCAxMyAyMDo1NTowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHBvMnRibC5zZWQuaW46IFByZXR0eSBwcmludGluZy4KKy0KKy0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOgorLQlDb3JyZWN0IGJ1Z3Mgd2l0aCBoYW5kbGluZyBzdWJzdGl0dXRlIGZsYWdzIGluIGJyYW5jaGVzLgorLQorLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKToKKy0JT2xkIEsmUiBjb21waWxlcnMgZG9uJ3QgdW5kZXIgc3RhbmQgYHVuc2lnbmVkIGNoYXInLgorLQorLQkqIGdldHRleHQuaCAobmxzX3VpbnQzMik6CistCVNvbWUgb2xkIEsmUiBjb21waWxlcnMgKGVnIEhQKSBkb24ndCB1bmRlcnN0YW5kIGB1bnNpZ25lZCBpbnQnLgorLQorLQkqIGNhdC1jb21wYXQuYyAobXNnX3RvX2NhdF9pZCk6IERlLUFOU0ktZnkgcHJvdG90eXBlcy4KKy0KKy1UaHUgSnVsIDEzIDAxOjM0OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKEVMQ0ZJTEVTKTogTmV3IHZhcmlhYmxlLgorLQkoRElTVEZJTEVTKTogQWRkIGVsaXNwLWNvbXAuCistCUFkZCBpbXBsaWNpdCBydWxlIGZvciAuZWwgLT4gLmVsYyBjb21waWxhdGlvbi4KKy0JKGluc3RhbGwtZGF0YSk6IGluc3RhbGwgJEVMQ0ZJTEVTCistCShjbGVhbik6IHJlbmFtZWQgcG8tdG8tdGJsIGFuZCBwby10by1tc2cgdG8gcG8ydGJsIGFuZCBwbzJtc2cgcmVzcC4KKy0KKy0JKiBlbGlzcC1jb21wOiBJbml0aWFsIHJldmlzaW9uCistCistV2VkIEp1bCAxMiAxNjoxNDo1MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluOgorLQljYXQtaWQtdGJsLmMgaXMgbm93IGZvdW5kIGluIHBvLy4gIFRoaXMgZW5hYmxlcyB1cyB0byB1c2UgYW4gaWRlbnRpY2FsCistCWludGwvIGRpcmVjdG9yeSBpbiBhbGwgcGFja2FnZXMuCistCistCSogZGNnZXR0ZXh0LmMgKGRjZ2V0dGV4dCk6IGhhc2hpbmcgZG9lcyBub3Qgd29yayBmb3IgdGFibGUgc2l6ZSA8PSAyLgorLQorLQkqIHRleHRkb21haW4uYzogZml4IHR5cG8gKCNpZiBkZWYgLT4gI2lmIGRlZmluZWQpCistCistVHVlIEp1bCAxMSAxODo0NDo0MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChzdGFtcC1jYXQtaWQpOiB1c2UgdG9wX3NyY2RpciB0byBhZGRyZXNzIHNvdXJjZSBmaWxlcworLQkoRElTVEZJTEVTLGRpc3RjbGVhbik6IG1vdmUgdHVwZGF0ZS5wZXJsIHRvIHNyYy8KKy0KKy0JKiBwby10by10Ymwuc2VkLmluOgorLQlhZGQgYWRkaXRpb25hbCBqdW1wIHRvIGNsZWFyIGNoYW5nZSBmbGFnIHRvIHJlY29nbml6ZSBtdWx0aWxpbmUgc3RyaW5ncworLQorLVR1ZSBKdWwgMTEgMDE6MzI6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IFByb3RlY3QgaW5jbHVzaW9uIG9mIHN0ZGxpYi5oIGFuZCBzdHJpbmcuaC4KKy0KKy0JKiBsb2FkbXNnY2F0LmM6IFByb3RlY3QgaW5jbHVzaW9uIG9mIHN0ZGxpYi5oLgorLQorLQkqIGxpYmdldHRleHQuaDogUHJvdGVjdCBpbmNsdXNpb24gb2YgbG9jYWxlLmguCistCUFsbG93IHVzZSBpbiBDKysgcHJvZ3JhbXMuCistCURlZmluZSBOVUxMIGlzIG5vdCBoYXBwZW5lZCBhbHJlYWR5LgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBzaGlwIHBvLXRvLXRibC5zZWQuaW4gaW5zdGVhZCBvZgorLQlwby10by10Ymwuc2VkLgorLQkoZGlzdGNsZWFuKTogcmVtb3ZlIHBvLXRvLXRibC5zZWQgYW5kIHR1cGRhdGUucGVybC4KKy0KKy0JKiB0dXBkYXRlLnBlcmwuaW46IFN1YnN0aXR1dGUgUGVybCBwYXRoIGV2ZW4gaW4gZXhlYyBsaW5lLgorLQlEb24ndCBpbmNsdWRlIGVudHJpZXMgd2l0aG91dCB0cmFuc2xhdGlvbiBmcm9tIG9sZCAucG8gZmlsZS4KKy0KKy1UdWUgSnVsICA0IDAwOjQxOjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogdHVwZGF0ZS5wZXJsLmluOiB1c2UgIlVwZGF0ZWQ6ICIgaW4gbXNnaWQgIiIuCistCistCSogY2F0LWNvbXBhdC5jOiBGaXggdHlwbyAoTE9DQUxESVIgLT4gTE9DQUxFRElSKS4KKy0gCURlZmluZSBnZXRlbnYgaWYgIV9fU1REQ19fLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6IFByb3RlY3Qgc3RkbGliLmggYW5kIHN0cmluZy5oIGluY2x1c2lvbi4KKy0gCURlZmluZSBmcmVlIGlmICFfX1NURENfXy4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IENoYW5nZSBERUZfTVNHX0RPTV9ESVIgdG8gTE9DQUxFRElSLgorLSAJRGVmaW5lIGZyZWUgaWYgIV9fU1REQ19fLgorLQorLQkqIGNhdC1jb21wYXQuYzogQ2hhbmdlIERFRl9NU0dfRE9NX0RJUiB0byBMT0NBTEVESVIuCistCistTW9uIEp1bCAgMyAyMzo1NjozMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluOiBVc2UgTE9DQUxFRElSIGluc3RlYWQgb2YgREVGX01TR19ET01fRElSLgorLQlSZW1vdmUgdW5uZWVkZWQgJChzcmNkaXIpIGZyb20gTWFrZWZpbGUuaW4gZGVwZW5kZW5jeS4KKy0KKy0JKiBtYWtlbGlua3M6IEFkZCBjb3B5cmlnaHQgYW5kIHNob3J0IGRlc2NyaXB0aW9uLgorLQorLQkqIHBvLW1vZGUuZWw6IExhc3QgdmVyc2lvbiBmb3IgMC43LgorLQorLQkqIHR1cGRhdGUucGVybC5pbjogRml4IGRpZSBtZXNzYWdlLgorLQorLQkqIGRjZ2V0dGV4dC5jOiBQcm90ZWN0IGluY2x1ZGUgb2Ygc3RyaW5nLmguCistCistCSogZ2V0dGV4dC5jOiBQcm90ZWN0IGluY2x1ZGUgb2Ygc3RkbGliLmggYW5kIGZ1cnRoZXIgdHJpZXMgdG8gZ2V0IE5VTEwuCistCistCSogZmluZGRvbWFpbi5jOiBTb21lIGNvcnJlY3Rpb25zIGluIGluY2x1ZGVzLgorLQorLQkqIE1ha2VmaWxlLmluIChJTkNMVURFUyk6IFBydW5lIGxpc3QgY29ycmVjdCBwYXRoIHRvIE1ha2VmaWxlLmluLgorLQorLQkqIHBvLXRvLXRibC5zZWQ6IEFkb3B0IGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgorLQorLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6IEFkb3B0IGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgorLQorLVN1biBKdWwgIDIgMjM6NTU6MDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiB0dXBkYXRlLnBlcmwuaW46IENvbXBsZXRlIHJld3JpdGUgZm9yIG5ldyAucG8gZmlsZSBmb3JtYXQuCistCistU3VuIEp1bCAgMiAwMjowNjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIEZpcnN0IG9mZmljaWFsIHJlbGVhc2UuICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhbGwgdGhlIGNvZGUKKy0JbmVlZGVkIHRvIGludGVybmF0aW9uYWxpemUgb3duIHBhY2thZ2VzLiAgSXQgcHJvdmlkZXMgZnVuY3Rpb25zCistCXdoaWNoIGFsbG93IHRvIHVzZSB0aGUgWC9PcGVuIGNhdGdldHMgZnVuY3Rpb24gd2l0aCBhbiBpbnRlcmZhY2UKKy0JbGlrZSB0aGUgVW5pZm9ydW0gZ2V0dGV4dCBmdW5jdGlvbi4gIEZvciBzeXN0ZW0gd2hpY2ggZG9lcyBub3QKKy0JaGF2ZSBuZWl0aGVyIG9mIHRob3NlIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQuCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9kY2dldHRleHQuYyBscnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDU5MyArMCwwIEBACistLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRjZ2V0dGV4dCgzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistCistI2lmZGVmIF9fR05VQ19fCistIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKKy0jIGRlZmluZSBIQVZFX0FMTE9DQSAxCistI2Vsc2UKKy0jIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCistIyAgaW5jbHVkZSA8YWxsb2NhLmg+CistIyBlbHNlCistIyAgaWZkZWYgX0FJWAorLSAjcHJhZ21hIGFsbG9jYQorLSMgIGVsc2UKKy0jICAgaWZuZGVmIGFsbG9jYQorLWNoYXIgKmFsbG9jYSAoKTsKKy0jICAgZW5kaWYKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8ZXJybm8uaD4KKy0jaWZuZGVmIGVycm5vCistZXh0ZXJuIGludCBlcnJubzsKKy0jZW5kaWYKKy0jaWZuZGVmIF9fc2V0X2Vycm5vCistIyBkZWZpbmUgX19zZXRfZXJybm8odmFsKSBlcnJubyA9ICh2YWwpCistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbHNlCistY2hhciAqZ2V0ZW52ICgpOworLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAorLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorLSMgZWxzZQorLXZvaWQgZnJlZSAoKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgX0dOVV9TT1VSQ0UKKy0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorLSMgZW5kaWYKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistI2VuZGlmCistI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIHN0cmNocgorLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAiZ2V0dGV4dC5oIgorLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistI2luY2x1ZGUgImhhc2gtc3RyaW5nLmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZmRlZiBfTElCQworLS8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAorLSAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKKy0gICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCistIyBkZWZpbmUgZ2V0Y3dkIF9fZ2V0Y3dkCistIyBkZWZpbmUgc3RwY3B5IF9fc3RwY3B5CistI2Vsc2UKKy0jIGlmICFkZWZpbmVkIEhBVkVfR0VUQ1dECistY2hhciAqZ2V0d2QgKCk7CistIyAgZGVmaW5lIGdldGN3ZChidWYsIG1heCkgZ2V0d2QgKGJ1ZikKKy0jIGVsc2UKKy1jaGFyICpnZXRjd2QgKCk7CistIyBlbmRpZgorLSMgaWZuZGVmIEhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKnN0cGNweSBQQVJBTVMgKChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogQW1vdW50IHRvIGluY3JlYXNlIGJ1ZmZlciBzaXplIGJ5IGluIGVhY2ggdHJ5LiAgKi8KKy0jZGVmaW5lIFBBVEhfSU5DUiAzMgorLQorLS8qIFRoZSBmb2xsb3dpbmcgaXMgZnJvbSBwYXRobWF4LmguICAqLworLS8qIE5vbi1QT1NJWCBCU0Qgc3lzdGVtcyBtaWdodCBoYXZlIGdjYydzIGxpbWl0cy5oLCB3aGljaCBkb2Vzbid0IGRlZmluZQorLSAgIFBBVEhfTUFYIGJ1dCBtaWdodCBjYXVzZSByZWRlZmluaXRpb24gd2FybmluZ3Mgd2hlbiBzeXMvcGFyYW0uaCBpcworLSAgIGxhdGVyIGluY2x1ZGVkIChhcyBvbiBNT1JFL0JTRCA0LjMpLiAgKi8KKy0jaWYgZGVmaW5lZChfUE9TSVhfVkVSU0lPTikgfHwgKGRlZmluZWQoSEFWRV9MSU1JVFNfSCkgJiYgIWRlZmluZWQoX19HTlVDX18pKQorLSMgaW5jbHVkZSA8bGltaXRzLmg+CistI2VuZGlmCistCistI2lmbmRlZiBfUE9TSVhfUEFUSF9NQVgKKy0jIGRlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU1CistI2VuZGlmCistCistI2lmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiBkZWZpbmVkKF9QQ19QQVRIX01BWCkKKy0jIGRlZmluZSBQQVRIX01BWCAocGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSA8IDEgPyAxMDI0IDogcGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSkKKy0jZW5kaWYKKy0KKy0vKiBEb24ndCBpbmNsdWRlIHN5cy9wYXJhbS5oIGlmIGl0IGFscmVhZHkgaGFzIGJlZW4uICAqLworLSNpZiBkZWZpbmVkKEhBVkVfU1lTX1BBUkFNX0gpICYmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiAhZGVmaW5lZChNQVhQQVRITEVOKQorLSMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CistI2VuZGlmCistCistI2lmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiBkZWZpbmVkKE1BWFBBVEhMRU4pCistIyBkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgorLSNlbmRpZgorLQorLSNpZm5kZWYgUEFUSF9NQVgKKy0jIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKKy0jZW5kaWYKKy0KKy0vKiBYUEczIGRlZmluZXMgdGhlIHJlc3VsdCBvZiBgc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCknIGFzOgorLSAgIGBgRGlyZWN0cyBgc2V0bG9jYWxlKCknIHRvIHF1ZXJ5IGBjYXRlZ29yeScgYW5kIHJldHVybiB0aGUgY3VycmVudAorLSAgICAgc2V0dGluZyBvZiBgbG9jYWwnLicnCistICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBleGFjdCBmb3JtYXQuICBBbmQgZXZlbiB3b3JzZTogUE9TSVgKKy0gICBkZWZpbmVzIHRoaXMgbm90IGF0IGFsbC4gIFNvIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlIG9ubHkgb24gc2VsZWN0ZWQKKy0gICBzeXN0ZW0gKGUuZy4gdGhvc2UgdXNpbmcgR05VIEMgTGlicmFyeSkuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIEhBVkVfTE9DQUxFX05VTEwKKy0jZW5kaWYKKy0KKy0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGRvbWFpbiB1c2VkIGZvciBnZXR0ZXh0KDMpIHByaW9yIGFueSBjYWxsIHRvCistICAgdGV4dGRvbWFpbigzKS4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGlzICJtZXNzYWdlcyIuICAqLworLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXSA9ICJtZXNzYWdlcyI7CistCistLyogVmFsdWUgdXNlZCBhcyB0aGUgZGVmYXVsdCBkb21haW4gZm9yIGdldHRleHQoMykuICAqLworLWNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47CistCistLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLworLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdID0gR05VTE9DQUxFRElSOworLQorLS8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zIGNyZWF0ZWQgYnkgYmluZHRleHRkb21haW4oKQorLSAgIGNhbGxzLiAgKi8KKy1zdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKKy0KKy0vKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLworLXN0YXRpYyBjaGFyICpmaW5kX21zZyBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKKy0JCQkgICAgICAgY29uc3QgY2hhciAqbXNnaWQpKTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY2F0ZWdvcnlfdG9fbmFtZSBQQVJBTVMgKChpbnQgY2F0ZWdvcnkpKTsKKy1zdGF0aWMgY29uc3QgY2hhciAqZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgUEFSQU1TICgoaW50IGNhdGVnb3J5LAorLQkJCQkJCSBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpKTsKKy0KKy0KKy0vKiBGb3IgdGhvc2UgbG9vc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKKy0gICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLworLSNpZmRlZiBIQVZFX0FMTE9DQQorLS8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLworLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCistIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLworLSNlbHNlCistc3RydWN0IGJsb2NrX2xpc3QKKy17CistICB2b2lkICphZGRyZXNzOworLSAgc3RydWN0IGJsb2NrX2xpc3QgKm5leHQ7CistfTsKKy0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCistICBkbyB7CQkJCQkJCQkJICAgICAgXAorLSAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV3cCA9IChzdHJ1Y3QgYmxvY2tfbGlzdCAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsgIFwKKy0gICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAorLSAgICAgICB0aGUgbGlzdC4gICovCQkJCQkJCSAgICAgIFwKKy0gICAgaWYgKG5ld3AgIT0gTlVMTCkgewkJCQkJCQkgICAgICBcCistICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCistICAgICAgbmV3cC0+bmV4dCA9IChsaXN0KTsJCQkJCQkgICAgICBcCistICAgICAgKGxpc3QpID0gbmV3cDsJCQkJCQkJICAgICAgXAorLSAgICB9CQkJCQkJCQkJICAgICAgXAorLSAgfSB3aGlsZSAoMCkKKy0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KQkJCQkJCSAgICAgIFwKKy0gIGRvIHsJCQkJCQkJCQkgICAgICBcCistICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsJCQkJCQkgICAgICBcCistICAgICAgc3RydWN0IGJsb2NrX2xpc3QgKm9sZCA9IGxpc3Q7CQkJCQkgICAgICBcCistICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAorLSAgICAgIGZyZWUgKG9sZCk7CQkJCQkJCSAgICAgIFwKKy0gICAgfQkJCQkJCQkJCSAgICAgIFwKKy0gIH0gd2hpbGUgKDApCistIyB1bmRlZiBhbGxvY2EKKy0jIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCistI2VuZGlmCS8qIGhhdmUgYWxsb2NhICovCistCistCistLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorLSAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKy0gICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKy0gICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIERDR0VUVEVYVCBfX2RjZ2V0dGV4dAorLSNlbHNlCistIyBkZWZpbmUgRENHRVRURVhUIGRjZ2V0dGV4dF9fCistI2VuZGlmCistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCistICAgbG9jYWxlLiAgKi8KKy1jaGFyICoKKy1EQ0dFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy0gICAgIGludCBjYXRlZ29yeTsKKy17CistI2lmbmRlZiBIQVZFX0FMTE9DQQorLSAgc3RydWN0IGJsb2NrX2xpc3QgKmJsb2NrX2xpc3QgPSBOVUxMOworLSNlbmRpZgorLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluOworLSAgc3RydWN0IGJpbmRpbmcgKmJpbmRpbmc7CistICBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWU7CistICBjb25zdCBjaGFyICpjYXRlZ29yeXZhbHVlOworLSAgY2hhciAqZGlybmFtZSwgKnhkb21haW5uYW1lOworLSAgY2hhciAqc2luZ2xlX2xvY2FsZTsKKy0gIGNoYXIgKnJldHZhbDsKKy0gIGludCBzYXZlZF9lcnJubyA9IGVycm5vOworLQorLSAgLyogSWYgbm8gcmVhbCBNU0dJRCBpcyBnaXZlbiByZXR1cm4gTlVMTC4gICovCistICBpZiAobXNnaWQgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICAvKiBJZiBET01BSU5OQU1FIGlzIE5VTEwsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBkZWZhdWx0IGRvbWFpbi4gIElmCistICAgICBDQVRFR09SWSBpcyBub3QgTENfTUVTU0FHRVMgdGhpcyBtaWdodCBub3QgbWFrZSBtdWNoIHNlbnNlIGJ1dCB0aGUKKy0gICAgIGRlZmludGlvbiBsZWZ0IHRoaXMgdW5kZWZpbmVkLiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCistICAgIGRvbWFpbm5hbWUgPSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKy0KKy0gIC8qIEZpcnN0IGZpbmQgbWF0Y2hpbmcgYmluZGluZy4gICovCistICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQorLSAgICB7CistICAgICAgaW50IGNvbXBhcmUgPSBzdHJjbXAgKGRvbWFpbm5hbWUsIGJpbmRpbmctPmRvbWFpbm5hbWUpOworLSAgICAgIGlmIChjb21wYXJlID09IDApCistCS8qIFdlIGZvdW5kIGl0ISAgKi8KKy0JYnJlYWs7CistICAgICAgaWYgKGNvbXBhcmUgPCAwKQorLQl7CistCSAgLyogSXQgaXMgbm90IGluIHRoZSBsaXN0LiAgKi8KKy0JICBiaW5kaW5nID0gTlVMTDsKKy0JICBicmVhazsKKy0JfQorLSAgICB9CistCistICBpZiAoYmluZGluZyA9PSBOVUxMKQorLSAgICBkaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKKy0gIGVsc2UgaWYgKGJpbmRpbmctPmRpcm5hbWVbMF0gPT0gJy8nKQorLSAgICBkaXJuYW1lID0gYmluZGluZy0+ZGlybmFtZTsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgIC8qIFdlIGhhdmUgYSByZWxhdGl2ZSBwYXRoLiAgTWFrZSBpdCBhYnNvbHV0ZSBub3cuICAqLworLSAgICAgIHNpemVfdCBkaXJuYW1lX2xlbiA9IHN0cmxlbiAoYmluZGluZy0+ZGlybmFtZSkgKyAxOworLSAgICAgIHNpemVfdCBwYXRoX21heDsKKy0gICAgICBjaGFyICpyZXQ7CistCistICAgICAgcGF0aF9tYXggPSAodW5zaWduZWQpIFBBVEhfTUFYOworLSAgICAgIHBhdGhfbWF4ICs9IDI7CQkvKiBUaGUgZ2V0Y3dkIGRvY3Mgc2F5IHRvIGRvIHRoaXMuICAqLworLQorLSAgICAgIGRpcm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHBhdGhfbWF4ICsgZGlybmFtZV9sZW4pOworLSAgICAgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7CistCistICAgICAgX19zZXRfZXJybm8gKDApOworLSAgICAgIHdoaWxlICgocmV0ID0gZ2V0Y3dkIChkaXJuYW1lLCBwYXRoX21heCkpID09IE5VTEwgJiYgZXJybm8gPT0gRVJBTkdFKQorLQl7CistCSAgcGF0aF9tYXggKz0gUEFUSF9JTkNSOworLQkgIGRpcm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHBhdGhfbWF4ICsgZGlybmFtZV9sZW4pOworLQkgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7CistCSAgX19zZXRfZXJybm8gKDApOworLQl9CistCistICAgICAgaWYgKHJldCA9PSBOVUxMKQorLQl7CistCSAgLyogV2UgY2Fubm90IGdldCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIERvbid0IHNpZ25hbCBhbgorLQkgICAgIGVycm9yIGJ1dCBzaW1wbHkgcmV0dXJuIHRoZSBkZWZhdWx0IHN0cmluZy4gICovCistCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLQkgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7CistCSAgcmV0dXJuIChjaGFyICopIG1zZ2lkOworLQl9CistCistICAgICAgc3RwY3B5IChzdHBjcHkgKHN0cmNociAoZGlybmFtZSwgJ1wwJyksICIvIiksIGJpbmRpbmctPmRpcm5hbWUpOworLSAgICB9CistCistICAvKiBOb3cgZGV0ZXJtaW5lIHRoZSBzeW1ib2xpYyBuYW1lIG9mIENBVEVHT1JZIGFuZCBpdHMgdmFsdWUuICAqLworLSAgY2F0ZWdvcnluYW1lID0gY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpOworLSAgY2F0ZWdvcnl2YWx1ZSA9IGd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKTsKKy0KKy0gIHhkb21haW5uYW1lID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5bmFtZSkKKy0JCQkJICsgc3RybGVuIChkb21haW5uYW1lKSArIDUpOworLSAgQUREX0JMT0NLIChibG9ja19saXN0LCB4ZG9tYWlubmFtZSk7CistCistICBzdHBjcHkgKHN0cGNweSAoc3RwY3B5IChzdHBjcHkgKHhkb21haW5uYW1lLCBjYXRlZ29yeW5hbWUpLCAiLyIpLAorLQkJICBkb21haW5uYW1lKSwKKy0JICAiLm1vIik7CistCistICAvKiBDcmVhdGluZyB3b3JraW5nIGFyZWEuICAqLworLSAgc2luZ2xlX2xvY2FsZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeXZhbHVlKSArIDEpOworLSAgQUREX0JMT0NLIChibG9ja19saXN0LCBzaW5nbGVfbG9jYWxlKTsKKy0KKy0KKy0gIC8qIFNlYXJjaCBmb3IgdGhlIGdpdmVuIHN0cmluZy4gIFRoaXMgaXMgYSBsb29wIGJlY2F1c2Ugd2UgcGVyaGFwcworLSAgICAgZ290IGFuIG9yZGVyZWQgbGlzdCBvZiBsYW5ndWFnZXMgdG8gY29uc2lkZXIgZm9yIHRoIHRyYW5zbGF0aW9uLiAgKi8KKy0gIHdoaWxlICgxKQorLSAgICB7CistICAgICAgLyogTWFrZSBDQVRFR09SWVZBTFVFIHBvaW50IHRvIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIGxpc3QuICAqLworLSAgICAgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSA9PSAnOicpCistCSsrY2F0ZWdvcnl2YWx1ZTsKKy0gICAgICBpZiAoY2F0ZWdvcnl2YWx1ZVswXSA9PSAnXDAnKQorLQl7CistCSAgLyogVGhlIHdob2xlIGNvbnRlbnRzIG9mIENBVEVHT1JZVkFMVUUgaGFzIGJlZW4gc2VhcmNoZWQgYnV0CistCSAgICAgbm8gdmFsaWQgZW50cnkgaGFzIGJlZW4gZm91bmQuICBXZSBzb2x2ZSB0aGlzIHNpdHVhdGlvbgorLQkgICAgIGJ5IGltcGxpY2l0bHkgYXBwZW5kaW5nIGEgIkMiIGVudHJ5LCBpLmUuIG5vIHRyYW5zbGF0aW9uCistCSAgICAgd2lsbCB0YWtlIHBsYWNlLiAgKi8KKy0JICBzaW5nbGVfbG9jYWxlWzBdID0gJ0MnOworLQkgIHNpbmdsZV9sb2NhbGVbMV0gPSAnXDAnOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAgY2hhciAqY3AgPSBzaW5nbGVfbG9jYWxlOworLQkgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSAhPSAnOicpCistCSAgICAqY3ArKyA9ICpjYXRlZ29yeXZhbHVlKys7CistCSAgKmNwID0gJ1wwJzsKKy0JfQorLQorLSAgICAgIC8qIElmIHRoZSBjdXJyZW50IGxvY2FsZSB2YWx1ZSBpcyBDIChvciBQT1NJWCkgd2UgZG9uJ3QgbG9hZCBhCistCSBkb21haW4uICBSZXR1cm4gdGhlIE1TR0lELiAgKi8KKy0gICAgICBpZiAoc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiQyIpID09IDAKKy0JICB8fCBzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJQT1NJWCIpID09IDApCistCXsKKy0JICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCSAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKKy0JICByZXR1cm4gKGNoYXIgKikgbXNnaWQ7CistCX0KKy0KKy0KKy0gICAgICAvKiBGaW5kIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGNhdGFsb2cgbWF0Y2hpbmcgdGhlCistCSBET01BSU5OQU1FIGFuZCBDQVRFR09SWS4gICovCistICAgICAgZG9tYWluID0gX25sX2ZpbmRfZG9tYWluIChkaXJuYW1lLCBzaW5nbGVfbG9jYWxlLCB4ZG9tYWlubmFtZSk7CistCistICAgICAgaWYgKGRvbWFpbiAhPSBOVUxMKQorLQl7CistCSAgcmV0dmFsID0gZmluZF9tc2cgKGRvbWFpbiwgbXNnaWQpOworLQorLQkgIGlmIChyZXR2YWwgPT0gTlVMTCkKKy0JICAgIHsKKy0JICAgICAgaW50IGNudDsKKy0KKy0JICAgICAgZm9yIChjbnQgPSAwOyBkb21haW4tPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQorLQkJeworLQkJICByZXR2YWwgPSBmaW5kX21zZyAoZG9tYWluLT5zdWNjZXNzb3JbY250XSwgbXNnaWQpOworLQorLQkJICBpZiAocmV0dmFsICE9IE5VTEwpCistCQkgICAgYnJlYWs7CistCQl9CistCSAgICB9CistCistCSAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQkgICAgeworLQkgICAgICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCSAgICAgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7CistCSAgICAgIHJldHVybiByZXR2YWw7CistCSAgICB9CistCX0KKy0gICAgfQorLSAgLyogTk9UUkVBQ0hFRCAqLworLX0KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KKy13ZWFrX2FsaWFzIChfX2RjZ2V0dGV4dCwgZGNnZXR0ZXh0KTsKKy0jZW5kaWYKKy0KKy0KKy1zdGF0aWMgY2hhciAqCistZmluZF9tc2cgKGRvbWFpbl9maWxlLCBtc2dpZCkKKy0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlOworLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgc2l6ZV90IHRvcCwgYWN0LCBib3R0b207CistICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOworLQorLSAgaWYgKGRvbWFpbl9maWxlLT5kZWNpZGVkID09IDApCistICAgIF9ubF9sb2FkX2RvbWFpbiAoZG9tYWluX2ZpbGUpOworLQorLSAgaWYgKGRvbWFpbl9maWxlLT5kYXRhID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIGRvbWFpbl9maWxlLT5kYXRhOworLQorLSAgLyogTG9jYXRlIHRoZSBNU0dJRCBhbmQgaXRzIHRyYW5zbGF0aW9uLiAgKi8KKy0gIGlmIChkb21haW4tPmhhc2hfc2l6ZSA+IDIgJiYgZG9tYWluLT5oYXNoX3RhYiAhPSBOVUxMKQorLSAgICB7CistICAgICAgLyogVXNlIHRoZSBoYXNoaW5nIHRhYmxlLiAgKi8KKy0gICAgICBubHNfdWludDMyIGxlbiA9IHN0cmxlbiAobXNnaWQpOworLSAgICAgIG5sc191aW50MzIgaGFzaF92YWwgPSBoYXNoX3N0cmluZyAobXNnaWQpOworLSAgICAgIG5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKKy0gICAgICBubHNfdWludDMyIGluY3IgPSAxICsgKGhhc2hfdmFsICUgKGRvbWFpbi0+aGFzaF9zaXplIC0gMikpOworLSAgICAgIG5sc191aW50MzIgbnN0ciA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPmhhc2hfdGFiW2lkeF0pOworLQorLSAgICAgIGlmIChuc3RyID09IDApCistCS8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICAqLworLQlyZXR1cm4gTlVMTDsKKy0KKy0gICAgICBpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLmxlbmd0aCkgPT0gbGVuCistCSAgJiYgc3RyY21wIChtc2dpZCwKKy0JCSAgICAgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCistCQkJCSAgICAgICBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5vZmZzZXQpKSA9PSAwKQorLQlyZXR1cm4gKGNoYXIgKikgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCistCQkJCQkgIGRvbWFpbi0+dHJhbnNfdGFiW25zdHIgLSAxXS5vZmZzZXQpOworLQorLSAgICAgIHdoaWxlICgxKQorLQl7CistCSAgaWYgKGlkeCA+PSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3IpCistCSAgICBpZHggLT0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyOworLQkgIGVsc2UKKy0JICAgIGlkeCArPSBpbmNyOworLQorLQkgIG5zdHIgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKKy0JICBpZiAobnN0ciA9PSAwKQorLQkgICAgLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gICovCistCSAgICByZXR1cm4gTlVMTDsKKy0KKy0JICBpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLmxlbmd0aCkgPT0gbGVuCistCSAgICAgICYmIHN0cmNtcCAobXNnaWQsCistCQkJIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAorLQkJCQkJICAgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ub2Zmc2V0KSkKKy0JICAgICAgICAgPT0gMCkKKy0JICAgIHJldHVybiAoY2hhciAqKSBkb21haW4tPmRhdGEKKy0JICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT50cmFuc190YWJbbnN0ciAtIDFdLm9mZnNldCk7CistCX0KKy0gICAgICAvKiBOT1RSRUFDSEVEICovCistICAgIH0KKy0KKy0gIC8qIE5vdyB3ZSB0cnkgdGhlIGRlZmF1bHQgbWV0aG9kOiAgYmluYXJ5IHNlYXJjaCBpbiB0aGUgc29ydGVkCistICAgICBhcnJheSBvZiBtZXNzYWdlcy4gICovCistICBib3R0b20gPSAwOworLSAgdG9wID0gZG9tYWluLT5uc3RyaW5nczsKKy0gIHdoaWxlIChib3R0b20gPCB0b3ApCistICAgIHsKKy0gICAgICBpbnQgY21wX3ZhbDsKKy0KKy0gICAgICBhY3QgPSAoYm90dG9tICsgdG9wKSAvIDI7CistICAgICAgY21wX3ZhbCA9IHN0cmNtcCAobXNnaWQsIGRvbWFpbi0+ZGF0YQorLQkJCSAgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAorLQkJCQkgICAgZG9tYWluLT5vcmlnX3RhYlthY3RdLm9mZnNldCkpOworLSAgICAgIGlmIChjbXBfdmFsIDwgMCkKKy0JdG9wID0gYWN0OworLSAgICAgIGVsc2UgaWYgKGNtcF92YWwgPiAwKQorLQlib3R0b20gPSBhY3QgKyAxOworLSAgICAgIGVsc2UKKy0JYnJlYWs7CistICAgIH0KKy0KKy0gIC8qIElmIGFuIHRyYW5zbGF0aW9uIGlzIGZvdW5kIHJldHVybiB0aGlzLiAgKi8KKy0gIHJldHVybiBib3R0b20gPj0gdG9wID8gTlVMTCA6IChjaGFyICopIGRvbWFpbi0+ZGF0YQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKKy0JCQkJICAgICBkb21haW4tPnRyYW5zX3RhYlthY3RdLm9mZnNldCk7CistfQorLQorLQorLS8qIFJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbG9jYWxlIENBVEVHT1JZLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqCistY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpCistICAgICBpbnQgY2F0ZWdvcnk7CisteworLSAgY29uc3QgY2hhciAqcmV0dmFsOworLQorLSAgc3dpdGNoIChjYXRlZ29yeSkKKy0gIHsKKy0jaWZkZWYgTENfQ09MTEFURQorLSAgY2FzZSBMQ19DT0xMQVRFOgorLSAgICByZXR2YWwgPSAiTENfQ09MTEFURSI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19DVFlQRQorLSAgY2FzZSBMQ19DVFlQRToKKy0gICAgcmV0dmFsID0gIkxDX0NUWVBFIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX01PTkVUQVJZCistICBjYXNlIExDX01PTkVUQVJZOgorLSAgICByZXR2YWwgPSAiTENfTU9ORVRBUlkiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfTlVNRVJJQworLSAgY2FzZSBMQ19OVU1FUklDOgorLSAgICByZXR2YWwgPSAiTENfTlVNRVJJQyI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19USU1FCistICBjYXNlIExDX1RJTUU6CistICAgIHJldHZhbCA9ICJMQ19USU1FIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX01FU1NBR0VTCistICBjYXNlIExDX01FU1NBR0VTOgorLSAgICByZXR2YWwgPSAiTENfTUVTU0FHRVMiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfUkVTUE9OU0UKKy0gIGNhc2UgTENfUkVTUE9OU0U6CistICAgIHJldHZhbCA9ICJMQ19SRVNQT05TRSI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19BTEwKKy0gIGNhc2UgTENfQUxMOgorLSAgICAvKiBUaGlzIG1pZ2h0IG5vdCBtYWtlIHNlbnNlIGJ1dCBpcyBwZXJoYXBzIGJldHRlciB0aGFuIGFueSBvdGhlcgorLSAgICAgICB2YWx1ZS4gICovCistICAgIHJldHZhbCA9ICJMQ19BTEwiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0gIGRlZmF1bHQ6CistICAgIC8qIElmIHlvdSBoYXZlIGEgYmV0dGVyIGlkZWEgZm9yIGEgZGVmYXVsdCB2YWx1ZSBsZXQgbWUga25vdy4gICovCistICAgIHJldHZhbCA9ICJMQ19YWFgiOworLSAgfQorLQorLSAgcmV0dXJuIHJldHZhbDsKKy19CistCistLyogR3Vlc3MgdmFsdWUgb2YgY3VycmVudCBsb2NhbGUgZnJvbSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqCistZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpCistICAgICBpbnQgY2F0ZWdvcnk7CistICAgICBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWU7CisteworLSAgY29uc3QgY2hhciAqcmV0dmFsOworLQorLSAgLyogVGhlIGhpZ2hlc3QgcHJpb3JpdHkgdmFsdWUgaXMgdGhlIGBMQU5HVUFHRScgZW52aXJvbm1lbnQKKy0gICAgIHZhcmlhYmxlLiAgVGhpcyBpcyBhIEdOVSBleHRlbnNpb24uICAqLworLSAgcmV0dmFsID0gZ2V0ZW52ICgiTEFOR1VBR0UiKTsKKy0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKKy0gICAgcmV0dXJuIHJldHZhbDsKKy0KKy0gIC8qIGBMQU5HVUFHRScgaXMgbm90IHNldC4gIFNvIHdlIGhhdmUgdG8gcHJvY2VlZCB3aXRoIHRoZSBQT1NJWAorLSAgICAgbWV0aG9kcyBvZiBsb29raW5nIHRvIGBMQ19BTEwnLCBgTENfeHh4JywgYW5kIGBMQU5HJy4gIE9uIHNvbWUKKy0gICAgIHN5c3RlbXMgdGhpcyBjYW4gYmUgZG9uZSBieSB0aGUgYHNldGxvY2FsZScgZnVuY3Rpb24gaXRzZWxmLiAgKi8KKy0jaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgJiYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9OVUxMCistICByZXR1cm4gc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCk7CistI2Vsc2UKKy0gIC8qIFNldHRpbmcgb2YgTENfQUxMIG92ZXJ3cml0ZXMgYWxsIG90aGVyLiAgKi8KKy0gIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOworLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorLSAgICByZXR1cm4gcmV0dmFsOworLQorLSAgLyogTmV4dCBjb21lcyB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBjYXRlZ29yeS4gICovCistICByZXR2YWwgPSBnZXRlbnYgKGNhdGVnb3J5bmFtZSk7CistICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCistICAgIHJldHVybiByZXR2YWw7CistCistICAvKiBMYXN0IHBvc3NpYmlsaXR5IGlzIHRoZSBMQU5HIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KKy0gIHJldHZhbCA9IGdldGVudiAoIkxBTkciKTsKKy0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKKy0gICAgcmV0dXJuIHJldHZhbDsKKy0KKy0gIC8qIFdlIHVzZSBDIGFzIHRoZSBkZWZhdWx0IGRvbWFpbi4gIFBPU0lYIHNheXMgdGhpcyBpcyBpbXBsZW1lbnRhdGlvbgorLSAgICAgZGVmaW5lZC4gICovCistICByZXR1cm4gIkMiOworLSNlbmRpZgorLX0KKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0vKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQorLSAgIGF2b2lkIHRoZSBub24tc3RhbmRhcmQgZnVuY3Rpb24gc3RwY3B5LiAgSW4gR05VIEMgTGlicmFyeSB0aGlzCistICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKKy0gICB0byBiZSBkZWZpbmVkLiAgKi8KKy0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICoKKy1zdHBjcHkgKGRlc3QsIHNyYykKKy0gICAgIGNoYXIgKmRlc3Q7CistICAgICBjb25zdCBjaGFyICpzcmM7CisteworLSAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQorLSAgICAvKiBEbyBub3RoaW5nLiAqLyA7CistICByZXR1cm4gZGVzdCAtIDE7CistfQorLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZGdldHRleHQuYyBscnpzei0wLjEyLjIwL2ludGwvZGdldHRleHQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9kZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RnZXR0ZXh0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDU5ICswLDAgQEAKKy0vKiBkZ2V0dGV4dC5jIC0tIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkZ2V0dGV4dCgzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy1hbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy1Gb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9MT0NBTEVfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxsb2NhbGUuaD4KKy0jZW5kaWYKKy0KKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCistICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorLSAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworLSAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgREdFVFRFWFQgX19kZ2V0dGV4dAorLSMgZGVmaW5lIERDR0VUVEVYVCBfX2RjZ2V0dGV4dAorLSNlbHNlCistIyBkZWZpbmUgREdFVFRFWFQgZGdldHRleHRfXworLSMgZGVmaW5lIERDR0VUVEVYVCBkY2dldHRleHRfXworLSNlbmRpZgorLQorLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIG9mIHRoZSBjdXJyZW50CistICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KKy1jaGFyICoKKy1ER0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgcmV0dXJuIERDR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIExDX01FU1NBR0VTKTsKKy19CistCistI2lmZGVmIF9MSUJDCistLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCistd2Vha19hbGlhcyAoX19kZ2V0dGV4dCwgZGdldHRleHQpOworLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZXhwbG9kZW5hbWUuYyBscnpzei0wLjEyLjIwL2ludGwvZXhwbG9kZW5hbWUuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9leHBsb2RlbmFtZS5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2V4cGxvZGVuYW1lLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDE4MSArMCwwIEBACistLyogQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgIENvbnRyaWJ1dGVkIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaW5jbHVkZSAibG9hZGluZm8uaCIKKy0KKy0vKiBPbiBzb21lIHN0cmFuZ2Ugc3lzdGVtcyBzdGlsbCBubyBkZWZpbml0aW9uIG9mIE5VTEwgaXMgZm91bmQuICBTaWdoISAgKi8KKy0jaWZuZGVmIE5VTEwKKy0jIGlmIGRlZmluZWQgX19TVERDX18gJiYgX19TVERDX18KKy0jICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKy0jIGVsc2UKKy0jICBkZWZpbmUgTlVMTCAwCistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy1pbnQKKy1fbmxfZXhwbG9kZV9uYW1lIChuYW1lLCBsYW5ndWFnZSwgbW9kaWZpZXIsIHRlcnJpdG9yeSwgY29kZXNldCwKKy0JCSAgbm9ybWFsaXplZF9jb2Rlc2V0LCBzcGVjaWFsLCBzcG9uc29yLCByZXZpc2lvbikKKy0gICAgIGNoYXIgKm5hbWU7CistICAgICBjb25zdCBjaGFyICoqbGFuZ3VhZ2U7CistICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXI7CistICAgICBjb25zdCBjaGFyICoqdGVycml0b3J5OworLSAgICAgY29uc3QgY2hhciAqKmNvZGVzZXQ7CistICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0OworLSAgICAgY29uc3QgY2hhciAqKnNwZWNpYWw7CistICAgICBjb25zdCBjaGFyICoqc3BvbnNvcjsKKy0gICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbjsKKy17CistICBlbnVtIHsgdW5kZWNpZGVkLCB4cGcsIGNlbiB9IHN5bnRheDsKKy0gIGNoYXIgKmNwOworLSAgaW50IG1hc2s7CistCistICAqbW9kaWZpZXIgPSBOVUxMOworLSAgKnRlcnJpdG9yeSA9IE5VTEw7CistICAqY29kZXNldCA9IE5VTEw7CistICAqbm9ybWFsaXplZF9jb2Rlc2V0ID0gTlVMTDsKKy0gICpzcGVjaWFsID0gTlVMTDsKKy0gICpzcG9uc29yID0gTlVMTDsKKy0gICpyZXZpc2lvbiA9IE5VTEw7CistCistICAvKiBOb3cgd2UgZGV0ZXJtaW5lIHRoZSBzaW5nbGUgcGFydHMgb2YgdGhlIGxvY2FsZSBuYW1lLiAgRmlyc3QKKy0gICAgIGxvb2sgZm9yIHRoZSBsYW5ndWFnZS4gIFRlcm1pbmF0aW9uIHN5bWJvbHMgYXJlIGBfJyBhbmQgYEAnIGlmCistICAgICB3ZSB1c2UgWFBHNCBzdHlsZSwgYW5kIGBfJywgYCsnLCBhbmQgYCwnIGlmIHdlIHVzZSBDRU4gc3ludGF4LiAgKi8KKy0gIG1hc2sgPSAwOworLSAgc3ludGF4ID0gdW5kZWNpZGVkOworLSAgKmxhbmd1YWdlID0gY3AgPSBuYW1lOworLSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ18nICYmIGNwWzBdICE9ICdAJworLQkgJiYgY3BbMF0gIT0gJysnICYmIGNwWzBdICE9ICcsJykKKy0gICAgKytjcDsKKy0KKy0gIGlmICgqbGFuZ3VhZ2UgPT0gY3ApCistICAgIC8qIFRoaXMgZG9lcyBub3QgbWFrZSBzZW5zZTogbGFuZ3VhZ2UgaGFzIHRvIGJlIHNwZWNpZmllZC4gIFVzZQorLSAgICAgICB0aGlzIGVudHJ5IGFzIGl0IGlzIHdpdGhvdXQgZXhwbG9kaW5nLiAgUGVyaGFwcyBpdCBpcyBhbiBhbGlhcy4gICovCistICAgIGNwID0gc3RyY2hyICgqbGFuZ3VhZ2UsICdcMCcpOworLSAgZWxzZSBpZiAoY3BbMF0gPT0gJ18nKQorLSAgICB7CistICAgICAgLyogTmV4dCBpcyB0aGUgdGVycml0b3J5LiAgKi8KKy0gICAgICBjcFswXSA9ICdcMCc7CistICAgICAgKnRlcnJpdG9yeSA9ICsrY3A7CistCistICAgICAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJy4nICYmIGNwWzBdICE9ICdAJworLQkgICAgICYmIGNwWzBdICE9ICcrJyAmJiBjcFswXSAhPSAnLCcgJiYgY3BbMF0gIT0gJ18nKQorLQkrK2NwOworLQorLSAgICAgIG1hc2sgfD0gVEVSUklUT1JZOworLQorLSAgICAgIGlmIChjcFswXSA9PSAnLicpCistCXsKKy0JICAvKiBOZXh0IGlzIHRoZSBjb2Rlc2V0LiAgKi8KKy0JICBzeW50YXggPSB4cGc7CistCSAgY3BbMF0gPSAnXDAnOworLQkgICpjb2Rlc2V0ID0gKytjcDsKKy0KKy0JICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnQCcpCistCSAgICArK2NwOworLQorLQkgIG1hc2sgfD0gWFBHX0NPREVTRVQ7CistCistCSAgaWYgKCpjb2Rlc2V0ICE9IGNwICYmICgqY29kZXNldClbMF0gIT0gJ1wwJykKKy0JICAgIHsKKy0JICAgICAgKm5vcm1hbGl6ZWRfY29kZXNldCA9IF9ubF9ub3JtYWxpemVfY29kZXNldCAoKmNvZGVzZXQsCistCQkJCQkJCSAgIGNwIC0gKmNvZGVzZXQpOworLQkgICAgICBpZiAoc3RyY21wICgqY29kZXNldCwgKm5vcm1hbGl6ZWRfY29kZXNldCkgPT0gMCkKKy0JCWZyZWUgKChjaGFyICopICpub3JtYWxpemVkX2NvZGVzZXQpOworLQkgICAgICBlbHNlCistCQltYXNrIHw9IFhQR19OT1JNX0NPREVTRVQ7CistCSAgICB9CistCX0KKy0gICAgfQorLQorLSAgaWYgKGNwWzBdID09ICdAJyB8fCAoc3ludGF4ICE9IHhwZyAmJiBjcFswXSA9PSAnKycpKQorLSAgICB7CistICAgICAgLyogTmV4dCBpcyB0aGUgbW9kaWZpZXIuICAqLworLSAgICAgIHN5bnRheCA9IGNwWzBdID09ICdAJyA/IHhwZyA6IGNlbjsKKy0gICAgICBjcFswXSA9ICdcMCc7CistICAgICAgKm1vZGlmaWVyID0gKytjcDsKKy0KKy0gICAgICB3aGlsZSAoc3ludGF4ID09IGNlbiAmJiBjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcrJworLQkgICAgICYmIGNwWzBdICE9ICcsJyAmJiBjcFswXSAhPSAnXycpCistCSsrY3A7CistCistICAgICAgbWFzayB8PSBYUEdfTU9ESUZJRVIgfCBDRU5fQVVESUVOQ0U7CistICAgIH0KKy0KKy0gIGlmIChzeW50YXggIT0geHBnICYmIChjcFswXSA9PSAnKycgfHwgY3BbMF0gPT0gJywnIHx8IGNwWzBdID09ICdfJykpCistICAgIHsKKy0gICAgICBzeW50YXggPSBjZW47CistCistICAgICAgaWYgKGNwWzBdID09ICcrJykKKy0JeworLSAJICAvKiBOZXh0IGlzIHNwZWNpYWwgYXBwbGljYXRpb24gKENFTiBzeW50YXgpLiAgKi8KKy0JICBjcFswXSA9ICdcMCc7CistCSAgKnNwZWNpYWwgPSArK2NwOworLQorLQkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcsJyAmJiBjcFswXSAhPSAnXycpCistCSAgICArK2NwOworLQorLQkgIG1hc2sgfD0gQ0VOX1NQRUNJQUw7CistCX0KKy0KKy0gICAgICBpZiAoY3BbMF0gPT0gJywnKQorLQl7CistIAkgIC8qIE5leHQgaXMgc3BvbnNvciAoQ0VOIHN5bnRheCkuICAqLworLQkgIGNwWzBdID0gJ1wwJzsKKy0JICAqc3BvbnNvciA9ICsrY3A7CistCistCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ18nKQorLQkgICAgKytjcDsKKy0KKy0JICBtYXNrIHw9IENFTl9TUE9OU09SOworLQl9CistCistICAgICAgaWYgKGNwWzBdID09ICdfJykKKy0JeworLSAJICAvKiBOZXh0IGlzIHJldmlzaW9uIChDRU4gc3ludGF4KS4gICovCistCSAgY3BbMF0gPSAnXDAnOworLQkgICpyZXZpc2lvbiA9ICsrY3A7CistCistCSAgbWFzayB8PSBDRU5fUkVWSVNJT047CistCX0KKy0gICAgfQorLQorLSAgLyogRm9yIENFTiBzeW50YXggdmFsdWVzIGl0IG1pZ2h0IGJlIGltcG9ydGFudCB0byBoYXZlIHRoZQorLSAgICAgc2VwYXJhdG9yIGNoYXJhY3RlciBpbiB0aGUgZmlsZSBuYW1lLCBub3QgZm9yIFhQRyBzeW50YXguICAqLworLSAgaWYgKHN5bnRheCA9PSB4cGcpCistICAgIHsKKy0gICAgICBpZiAoKnRlcnJpdG9yeSAhPSBOVUxMICYmICgqdGVycml0b3J5KVswXSA9PSAnXDAnKQorLQltYXNrICY9IH5URVJSSVRPUlk7CistCistICAgICAgaWYgKCpjb2Rlc2V0ICE9IE5VTEwgJiYgKCpjb2Rlc2V0KVswXSA9PSAnXDAnKQorLQltYXNrICY9IH5YUEdfQ09ERVNFVDsKKy0KKy0gICAgICBpZiAoKm1vZGlmaWVyICE9IE5VTEwgJiYgKCptb2RpZmllcilbMF0gPT0gJ1wwJykKKy0JbWFzayAmPSB+WFBHX01PRElGSUVSOworLSAgICB9CistCistICByZXR1cm4gbWFzazsKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9maW5kZG9tYWluLmMgbHJ6c3otMC4xMi4yMC9pbnRsL2ZpbmRkb21haW4uYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9maW5kZG9tYWluLmMJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZmluZGRvbWFpbi5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxODkgKzAsMCBAQAorLS8qIEhhbmRsZSBsaXN0IG9mIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxjdHlwZS5oPgorLSNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2Vsc2UKKy0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKKy0jICBpbmNsdWRlIDxtYWxsb2MuaD4KKy0jIGVsc2UKKy12b2lkIGZyZWUgKCk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KKy0jIGlmbmRlZiBtZW1jcHkKKy0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgc3RyY2hyCistIyAgZGVmaW5lIHN0cmNociBpbmRleAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHVuaXN0ZC5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJnZXR0ZXh0LmgiCistI2luY2x1ZGUgImdldHRleHRQLmgiCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistLyogTGlzdCBvZiBhbHJlYWR5IGxvYWRlZCBkb21haW5zLiAgKi8KKy1zdGF0aWMgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2xvYWRlZF9kb21haW5zOworLQorLQorLS8qIFJldHVybiBhIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgY2F0YWxvZyBkZXNjcmliZWQgYnkKKy0gICB0aGUgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkgcGFyYW1ldGVycyB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnRseQorLSAgIGVzdGFibGlzaGVkIGJpbmRpbmdzLiAgKi8KKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKKy1fbmxfZmluZF9kb21haW4gKGRpcm5hbWUsIGxvY2FsZSwgZG9tYWlubmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7CistICAgICBjaGFyICpsb2NhbGU7CistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLXsKKy0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJldHZhbDsKKy0gIGNvbnN0IGNoYXIgKmxhbmd1YWdlOworLSAgY29uc3QgY2hhciAqbW9kaWZpZXI7CistICBjb25zdCBjaGFyICp0ZXJyaXRvcnk7CistICBjb25zdCBjaGFyICpjb2Rlc2V0OworLSAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0OworLSAgY29uc3QgY2hhciAqc3BlY2lhbDsKKy0gIGNvbnN0IGNoYXIgKnNwb25zb3I7CistICBjb25zdCBjaGFyICpyZXZpc2lvbjsKKy0gIGNvbnN0IGNoYXIgKmFsaWFzX3ZhbHVlOworLSAgaW50IG1hc2s7CistCistICAvKiBMT0NBTEUgY2FuIGNvbnNpc3Qgb2YgdXAgdG8gZm91ciByZWNvZ25pemVkIHBhcnRzIGZvciB0aGUgWFBHIHN5bnRheDoKKy0KKy0JCWxhbmd1YWdlW190ZXJyaXRvcnlbLmNvZGVzZXRdXVtAbW9kaWZpZXJdCistCistICAgICBhbmQgc2l4IHBhcnRzIGZvciB0aGUgQ0VOIHN5bnRheDoKKy0KKy0JbGFuZ3VhZ2VbX3RlcnJpdG9yeV1bK2F1ZGllbmNlXVsrc3BlY2lhbF1bLFtzcG9uc29yXVtfcmV2aXNpb25dXQorLQorLSAgICAgQmVzaWRlIHRoZSBmaXJzdCBhbGwgb2YgdGhlbSBhcmUgYWxsb3dlZCB0byBiZSBtaXNzaW5nLiAgSWYgdGhlCistICAgICBmdWxsIHNwZWNpZmllZCBsb2NhbGUgaXMgbm90IGZvdW5kLCB0aGUgbGVzcyBzcGVjaWZpYyBvbmUgYXJlCistICAgICBsb29rZWQgZm9yLiAgVGhlIHZhcmlvdXMgcGFydCB3aWxsIGJlIHN0cmlwcGVkIG9mIGFjY29yZGluZyB0bworLSAgICAgdGhlIGZvbGxvd2luZyBvcmRlcjoKKy0JCSgxKSByZXZpc2lvbgorLQkJKDIpIHNwb25zb3IKKy0JCSgzKSBzcGVjaWFsCistCQkoNCkgY29kZXNldAorLQkJKDUpIG5vcm1hbGl6ZWQgY29kZXNldAorLQkJKDYpIHRlcnJpdG9yeQorLQkJKDcpIGF1ZGllbmNlL21vZGlmaWVyCistICAgKi8KKy0KKy0gIC8qIElmIHdlIGhhdmUgYWxyZWFkeSB0ZXN0ZWQgZm9yIHRoaXMgbG9jYWxlIGVudHJ5IHRoZXJlIGhhcyB0bworLSAgICAgYmUgb25lIGRhdGEgc2V0IGluIHRoZSBsaXN0IG9mIGxvYWRlZCBkb21haW5zLiAgKi8KKy0gIHJldHZhbCA9IF9ubF9tYWtlX2wxMG5mbGlzdCAoJl9ubF9sb2FkZWRfZG9tYWlucywgZGlybmFtZSwKKy0JCQkgICAgICAgc3RybGVuIChkaXJuYW1lKSArIDEsIDAsIGxvY2FsZSwgTlVMTCwgTlVMTCwKKy0JCQkgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgZG9tYWlubmFtZSwgMCk7CistICBpZiAocmV0dmFsICE9IE5VTEwpCistICAgIHsKKy0gICAgICAvKiBXZSBrbm93IHNvbWV0aGluZyBhYm91dCB0aGlzIGxvY2FsZS4gICovCistICAgICAgaW50IGNudDsKKy0KKy0gICAgICBpZiAocmV0dmFsLT5kZWNpZGVkID09IDApCistCV9ubF9sb2FkX2RvbWFpbiAocmV0dmFsKTsKKy0KKy0gICAgICBpZiAocmV0dmFsLT5kYXRhICE9IE5VTEwpCistCXJldHVybiByZXR2YWw7CistCistICAgICAgZm9yIChjbnQgPSAwOyByZXR2YWwtPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQorLQl7CistCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRlY2lkZWQgPT0gMCkKKy0JICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSk7CistCistCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRhdGEgIT0gTlVMTCkKKy0JICAgIGJyZWFrOworLQl9CistICAgICAgcmV0dXJuIGNudCA+PSAwID8gcmV0dmFsIDogTlVMTDsKKy0gICAgICAvKiBOT1RSRUFDSEVEICovCistICAgIH0KKy0KKy0gIC8qIFNlZSB3aGV0aGVyIHRoZSBsb2NhbGUgdmFsdWUgaXMgYW4gYWxpYXMuICBJZiB5ZXMgaXRzIHZhbHVlCistICAgICAqb3ZlcndyaXRlcyogdGhlIGFsaWFzIG5hbWUuICBObyB0ZXN0IGZvciB0aGUgb3JpZ2luYWwgdmFsdWUgaXMKKy0gICAgIGRvbmUuICAqLworLSAgYWxpYXNfdmFsdWUgPSBfbmxfZXhwYW5kX2FsaWFzIChsb2NhbGUpOworLSAgaWYgKGFsaWFzX3ZhbHVlICE9IE5VTEwpCistICAgIHsKKy0gICAgICBzaXplX3QgbGVuID0gc3RybGVuIChhbGlhc192YWx1ZSkgKyAxOworLSAgICAgIGxvY2FsZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0gICAgICBpZiAobG9jYWxlID09IE5VTEwpCistCXJldHVybiBOVUxMOworLQorLSAgICAgIG1lbWNweSAobG9jYWxlLCBhbGlhc192YWx1ZSwgbGVuKTsKKy0gICAgfQorLQorLSAgLyogTm93IHdlIGRldGVybWluZSB0aGUgc2luZ2xlIHBhcnRzIG9mIHRoZSBsb2NhbGUgbmFtZS4gIEZpcnN0CistICAgICBsb29rIGZvciB0aGUgbGFuZ3VhZ2UuICBUZXJtaW5hdGlvbiBzeW1ib2xzIGFyZSBgXycgYW5kIGBAJyBpZgorLSAgICAgd2UgdXNlIFhQRzQgc3R5bGUsIGFuZCBgXycsIGArJywgYW5kIGAsJyBpZiB3ZSB1c2UgQ0VOIHN5bnRheC4gICovCistICBtYXNrID0gX25sX2V4cGxvZGVfbmFtZSAobG9jYWxlLCAmbGFuZ3VhZ2UsICZtb2RpZmllciwgJnRlcnJpdG9yeSwKKy0JCQkgICAmY29kZXNldCwgJm5vcm1hbGl6ZWRfY29kZXNldCwgJnNwZWNpYWwsCistCQkJICAgJnNwb25zb3IsICZyZXZpc2lvbik7CistCistICAvKiBDcmVhdGUgYWxsIHBvc3NpYmxlIGxvY2FsZSBlbnRyaWVzIHdoaWNoIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4KKy0gICAgIGdlbmVyYWxpemF0aW9uLiAgKi8KKy0gIHJldHZhbCA9IF9ubF9tYWtlX2wxMG5mbGlzdCAoJl9ubF9sb2FkZWRfZG9tYWlucywgZGlybmFtZSwKKy0JCQkgICAgICAgc3RybGVuIChkaXJuYW1lKSArIDEsIG1hc2ssIGxhbmd1YWdlLCB0ZXJyaXRvcnksCistCQkJICAgICAgIGNvZGVzZXQsIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCistCQkJICAgICAgIHNwb25zb3IsIHJldmlzaW9uLCBkb21haW5uYW1lLCAxKTsKKy0gIGlmIChyZXR2YWwgPT0gTlVMTCkKKy0gICAgLyogVGhpcyBtZWFucyB3ZSBhcmUgb3V0IG9mIGNvcmUuICAqLworLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIGlmIChyZXR2YWwtPmRlY2lkZWQgPT0gMCkKKy0gICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwpOworLSAgaWYgKHJldHZhbC0+ZGF0YSA9PSBOVUxMKQorLSAgICB7CistICAgICAgaW50IGNudDsKKy0gICAgICBmb3IgKGNudCA9IDA7IHJldHZhbC0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCistCXsKKy0JICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGVjaWRlZCA9PSAwKQorLQkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdKTsKKy0JICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGF0YSAhPSBOVUxMKQorLQkgICAgYnJlYWs7CistCX0KKy0gICAgfQorLQorLSAgLyogVGhlIHJvb20gZm9yIGFuIGFsaWFzIHdhcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQuICBGcmVlIGl0IG5vdy4gICovCistICBpZiAoYWxpYXNfdmFsdWUgIT0gTlVMTCkKKy0gICAgZnJlZSAobG9jYWxlKTsKKy0KKy0gIHJldHVybiByZXR2YWw7CistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5jIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzYuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNzAgKzAsMCBAQAorLS8qIEltcGxlbWVudGF0aW9uIG9mIGdldHRleHQoMykgZnVuY3Rpb24KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgX19uZWVkX05VTEwKKy0jIGluY2x1ZGUgPHN0ZGRlZi5oPgorLSNlbHNlCistIyBpZmRlZiBTVERDX0hFQURFUlMKKy0jICBpbmNsdWRlIDxzdGRsaWIuaD4JCS8qIEp1c3QgZm9yIE5VTEwuICAqLworLSMgZWxzZQorLSMgIGlmZGVmIEhBVkVfU1RSSU5HX0gKKy0jICAgaW5jbHVkZSA8c3RyaW5nLmg+CistIyAgZWxzZQorLSMgICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCistICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorLSAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworLSAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgR0VUVEVYVCBfX2dldHRleHQKKy0jIGRlZmluZSBER0VUVEVYVCBfX2RnZXR0ZXh0CistI2Vsc2UKKy0jIGRlZmluZSBHRVRURVhUIGdldHRleHRfXworLSMgZGVmaW5lIERHRVRURVhUIGRnZXR0ZXh0X18KKy0jZW5kaWYKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0CistICAgdGV4dCkuICAqLworLWNoYXIgKgorLUdFVFRFWFQgKG1zZ2lkKQorLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgcmV0dXJuIERHRVRURVhUIChOVUxMLCBtc2dpZCk7CistfQorLQorLSNpZmRlZiBfTElCQworLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLworLXdlYWtfYWxpYXMgKF9fZ2V0dGV4dCwgZ2V0dGV4dCk7CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmggbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmgJMTk5OC0wNC0yNiAxNDoyMjozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDUgKzAsMCBAQAorLS8qIEludGVybmFsIGhlYWRlciBmb3IgR05VIGdldHRleHQgaW50ZXJuYXRpb25hbGl6YXRpb24gZnVuY3Rpb25zCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LAorLSAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKy0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmbmRlZiBfR0VUVEVYVF9ICistI2RlZmluZSBfR0VUVEVYVF9IIDEKKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0KKy0jaWYgSEFWRV9MSU1JVFNfSCB8fCBfTElCQworLSMgaW5jbHVkZSA8bGltaXRzLmg+CistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIFRoZSBtYWdpYyBudW1iZXIgb2YgdGhlIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0LiAgKi8KKy0jZGVmaW5lIF9NQUdJQyAweDk1MDQxMmRlCistI2RlZmluZSBfTUFHSUNfU1dBUFBFRCAweGRlMTIwNDk1CistCistLyogUmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50bHkgdXNlZCAubW8gKGJpbmFyeSkgZmlsZSBmb3JtYXQuICAqLworLSNkZWZpbmUgTU9fUkVWSVNJT05fTlVNQkVSIDAKKy0KKy0vKiBUaGUgZm9sbG93aW5nIGNvbnRvcnRpb25zIGFyZSBhbiBhdHRlbXB0IHRvIHVzZSB0aGUgQyBwcmVwcm9jZXNzb3IKKy0gICB0byBkZXRlcm1pbmUgYW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSB0aGF0IGlzIDMyIGJpdHMgd2lkZS4gIEFuCistICAgYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gdXNlIGF1dG9jb25mJ3MgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvLCBidXQKKy0gICBkb2luZyB0aGF0IHdvdWxkIHJlcXVpcmUgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBjb21waWxlIGFuZCAqcnVuKgorLSAgIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZS4gIExvY2FsbHkgcnVubmluZyBjcm9zcy1jb21waWxlZCBleGVjdXRhYmxlcworLSAgIGlzIHVzdWFsbHkgbm90IHBvc3NpYmxlLiAgKi8KKy0KKy0jaWYgX19TVERDX18KKy0jIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDQyOTQ5NjcyOTVVCistI2Vsc2UKKy0jIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDB4RkZGRkZGRkYKKy0jZW5kaWYKKy0KKy0vKiBJZiBVSU5UX01BWCBpc24ndCBkZWZpbmVkLCBhc3N1bWUgaXQncyBhIDMyLWJpdCB0eXBlLgorLSAgIFRoaXMgc2hvdWxkIGJlIHZhbGlkIGZvciBhbGwgc3lzdGVtcyBHTlUgY2FyZXMgYWJvdXQgYmVjYXVzZQorLSAgIHRoYXQgZG9lc24ndCBpbmNsdWRlIDE2LWJpdCBzeXN0ZW1zLCBhbmQgb25seSBtb2Rlcm4gc3lzdGVtcworLSAgICh0aGF0IGNlcnRhaW5seSBoYXZlIDxsaW1pdHMuaD4pIGhhdmUgNjQrLWJpdCBpbnRlZ3JhbCB0eXBlcy4gICovCistCistI2lmbmRlZiBVSU5UX01BWAorLSMgZGVmaW5lIFVJTlRfTUFYIFVJTlRfTUFYXzMyX0JJVFMKKy0jZW5kaWYKKy0KKy0jaWYgVUlOVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUworLXR5cGVkZWYgdW5zaWduZWQgbmxzX3VpbnQzMjsKKy0jZWxzZQorLSMgaWYgVVNIUlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKKy10eXBlZGVmIHVuc2lnbmVkIHNob3J0IG5sc191aW50MzI7CistIyBlbHNlCistIyAgaWYgVUxPTkdfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKKy10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbmxzX3VpbnQzMjsKKy0jICBlbHNlCistICAvKiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgaW50ZW5kZWQgdG8gdGhyb3cgYW4gZXJyb3IuICBVc2luZyAjZXJyb3IgaXMKKy0gICAgIG5vdCBwb3J0YWJsZSBlbm91Z2guICAqLworLSAgIkNhbm5vdCBkZXRlcm1pbmUgdW5zaWduZWQgMzItYml0IGRhdGEgdHlwZS4iCistIyAgZW5kaWYKKy0jIGVuZGlmCistI2VuZGlmCistCistCistLyogSGVhZGVyIGZvciBiaW5hcnkgLm1vIGZpbGUgZm9ybWF0LiAgKi8KKy1zdHJ1Y3QgbW9fZmlsZV9oZWFkZXIKKy17CistICAvKiBUaGUgbWFnaWMgbnVtYmVyLiAgKi8KKy0gIG5sc191aW50MzIgbWFnaWM7CistICAvKiBUaGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBmaWxlIGZvcm1hdC4gICovCistICBubHNfdWludDMyIHJldmlzaW9uOworLSAgLyogVGhlIG51bWJlciBvZiBzdHJpbmdzIHBhaXJzLiAgKi8KKy0gIG5sc191aW50MzIgbnN0cmluZ3M7CistICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIG9yaWdpbmFsIHN0cmluZ3MuICAqLworLSAgbmxzX3VpbnQzMiBvcmlnX3RhYl9vZmZzZXQ7CistICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIHRyYW5zbGF0aW9uIHN0cmluZ3MuICAqLworLSAgbmxzX3VpbnQzMiB0cmFuc190YWJfb2Zmc2V0OworLSAgLyogU2l6ZSBvZiBoYXNoaW5nIHRhYmxlLiAgKi8KKy0gIG5sc191aW50MzIgaGFzaF90YWJfc2l6ZTsKKy0gIC8qIE9mZnNldCBvZiBmaXJzdCBoYXNoaW5nIGVudHJ5LiAgKi8KKy0gIG5sc191aW50MzIgaGFzaF90YWJfb2Zmc2V0OworLX07CistCistc3RydWN0IHN0cmluZ19kZXNjCisteworLSAgLyogTGVuZ3RoIG9mIGFkZHJlc3NlZCBzdHJpbmcuICAqLworLSAgbmxzX3VpbnQzMiBsZW5ndGg7CistICAvKiBPZmZzZXQgb2Ygc3RyaW5nIGluIGZpbGUuICAqLworLSAgbmxzX3VpbnQzMiBvZmZzZXQ7CistfTsKKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0jZW5kaWYJLyogZ2V0dGV4dC5oICAqLworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dFAuaCBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dFAuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0UC5oCTE5OTgtMDQtMjYgMTQ6MjI6MzUuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHRQLmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDczICswLDAgQEAKKy0vKiBIZWFkZXIgZGVzY3JpYmluZyBpbnRlcm5hbHMgb2YgZ2V0dGV4dCBsaWJyYXJ5CistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmbmRlZiBfR0VUVEVYVFBfSAorLSNkZWZpbmUgX0dFVFRFWFRQX0gKKy0KKy0jaW5jbHVkZSAibG9hZGluZm8uaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmbmRlZiBQQVJBTVMKKy0jIGlmIF9fU1REQ19fCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCistIyBlbHNlCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZuZGVmIFcKKy0jIGRlZmluZSBXKGZsYWcsIGRhdGEpICgoZmxhZykgPyBTV0FQIChkYXRhKSA6IChkYXRhKSkKKy0jZW5kaWYKKy0KKy0KKy1zdGF0aWMgbmxzX3VpbnQzMiBTV0FQIFBBUkFNUyAoKG5sc191aW50MzIgaSkpOworLQorLXN0YXRpYyBpbmxpbmUgbmxzX3VpbnQzMgorLVNXQVAgKGkpCistICAgICBubHNfdWludDMyIGk7CisteworLSAgcmV0dXJuIChpIDw8IDI0KSB8ICgoaSAmIDB4ZmYwMCkgPDwgOCkgfCAoKGkgPj4gOCkgJiAweGZmMDApIHwgKGkgPj4gMjQpOworLX0KKy0KKy0KKy1zdHJ1Y3QgbG9hZGVkX2RvbWFpbgorLXsKKy0gIGNvbnN0IGNoYXIgKmRhdGE7CistICBpbnQgbXVzdF9zd2FwOworLSAgbmxzX3VpbnQzMiBuc3RyaW5nczsKKy0gIHN0cnVjdCBzdHJpbmdfZGVzYyAqb3JpZ190YWI7CistICBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKnRyYW5zX3RhYjsKKy0gIG5sc191aW50MzIgaGFzaF9zaXplOworLSAgbmxzX3VpbnQzMiAqaGFzaF90YWI7CistfTsKKy0KKy1zdHJ1Y3QgYmluZGluZworLXsKKy0gIHN0cnVjdCBiaW5kaW5nICpuZXh0OworLSAgY2hhciAqZG9tYWlubmFtZTsKKy0gIGNoYXIgKmRpcm5hbWU7CistfTsKKy0KKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfZmluZF9kb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kaXJuYW1lLAorLQkJCQkJCSBjaGFyICpfX2xvY2FsZSwKKy0JCQkJCQkgY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7Cistdm9pZCBfbmxfbG9hZF9kb21haW4gUEFSQU1TICgoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX19kb21haW4pKTsKKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0jZW5kaWYgLyogZ2V0dGV4dFAuaCAgKi8KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2hhc2gtc3RyaW5nLmggbHJ6c3otMC4xMi4yMC9pbnRsL2hhc2gtc3RyaW5nLmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvaGFzaC1zdHJpbmcuaAkxOTk4LTA0LTI2IDE0OjIyOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9oYXNoLXN0cmluZy5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw2MyArMCwwIEBACistLyogSW1wbGVtZW50cyBhIHN0cmluZyBoYXNoaW5nIGZ1bmN0aW9uLgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKy0gICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwKKy0gICB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCistICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX1ZBTFVFU19ICistIyBpbmNsdWRlIDx2YWx1ZXMuaD4KKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmbmRlZiBQQVJBTVMKKy0jIGlmIF9fU1REQ19fCistIyAgZGVmaW5lIFBBUkFNUyhBcmdzKSBBcmdzCistIyBlbHNlCistIyAgZGVmaW5lIFBBUkFNUyhBcmdzKSAoKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBXZSBhc3N1bWUgdG8gaGF2ZSBgdW5zaWduZWQgbG9uZyBpbnQnIHZhbHVlIHdpdGggYXQgbGVhc3QgMzIgYml0cy4gICovCistI2RlZmluZSBIQVNIV09SREJJVFMgMzIKKy0KKy0KKy0vKiBEZWZpbmVzIHRoZSBzbyBjYWxsZWQgYGhhc2hwancnIGZ1bmN0aW9uIGJ5IFAuSi4gV2VpbmJlcmdlcgorLSAgIFtzZWUgQWhvL1NldGhpL1VsbG1hbiwgQ09NUElMRVJTOiBQcmluY2lwbGVzLCBUZWNobmlxdWVzIGFuZCBUb29scywKKy0gICAxOTg2LCAxOTg3IEJlbGwgVGVsZXBob25lIExhYm9yYXRvcmllcywgSW5jLl0gICovCistc3RhdGljIHVuc2lnbmVkIGxvbmcgaGFzaF9zdHJpbmcgUEFSQU1TICgoY29uc3QgY2hhciAqX19zdHJfcGFyYW0pKTsKKy0KKy1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKKy1oYXNoX3N0cmluZyAoc3RyX3BhcmFtKQorLSAgICAgY29uc3QgY2hhciAqc3RyX3BhcmFtOworLXsKKy0gIHVuc2lnbmVkIGxvbmcgaW50IGh2YWwsIGc7CistICBjb25zdCBjaGFyICpzdHIgPSBzdHJfcGFyYW07CistCistICAvKiBDb21wdXRlIHRoZSBoYXNoIHZhbHVlIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLiAgKi8KKy0gIGh2YWwgPSAwOworLSAgd2hpbGUgKCpzdHIgIT0gJ1wwJykKKy0gICAgeworLSAgICAgIGh2YWwgPDw9IDQ7CistICAgICAgaHZhbCArPSAodW5zaWduZWQgbG9uZykgKnN0cisrOworLSAgICAgIGcgPSBodmFsICYgKCh1bnNpZ25lZCBsb25nKSAweGYgPDwgKEhBU0hXT1JEQklUUyAtIDQpKTsKKy0gICAgICBpZiAoZyAhPSAwKQorLQl7CistCSAgaHZhbCBePSBnID4+IChIQVNIV09SREJJVFMgLSA4KTsKKy0JICBodmFsIF49IGc7CistCX0KKy0gICAgfQorLSAgcmV0dXJuIGh2YWw7CistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvaW50bC1jb21wYXQuYyBscnpzei0wLjEyLjIwL2ludGwvaW50bC1jb21wYXQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9pbnRsLWNvbXBhdC5jCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2ludGwtY29tcGF0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDc2ICswLDAgQEAKKy0vKiBpbnRsLWNvbXBhdC5jIC0gU3R1YiBmdW5jdGlvbnMgdG8gY2FsbCBnZXR0ZXh0IGZ1bmN0aW9ucyBmcm9tIEdOVSBnZXR0ZXh0CistICAgTGlicmFyeS4KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy10aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistYW55IGxhdGVyIHZlcnNpb24uCistCistVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy1NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLQorLSN1bmRlZiBnZXR0ZXh0CistI3VuZGVmIGRnZXR0ZXh0CistI3VuZGVmIGRjZ2V0dGV4dAorLSN1bmRlZiB0ZXh0ZG9tYWluCistI3VuZGVmIGJpbmR0ZXh0ZG9tYWluCistCistCistY2hhciAqCistYmluZHRleHRkb21haW4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKKy17CistICByZXR1cm4gYmluZHRleHRkb21haW5fXyAoZG9tYWlubmFtZSwgZGlybmFtZSk7CistfQorLQorLQorLWNoYXIgKgorLWRjZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLSAgICAgaW50IGNhdGVnb3J5OworLXsKKy0gIHJldHVybiBkY2dldHRleHRfXyAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KTsKKy19CistCistCistY2hhciAqCistZGdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLXsKKy0gIHJldHVybiBkZ2V0dGV4dF9fIChkb21haW5uYW1lLCBtc2dpZCk7CistfQorLQorLQorLWNoYXIgKgorLWdldHRleHQgKG1zZ2lkKQorLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgcmV0dXJuIGdldHRleHRfXyAobXNnaWQpOworLX0KKy0KKy0KKy1jaGFyICoKKy10ZXh0ZG9tYWluIChkb21haW5uYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy17CistICByZXR1cm4gdGV4dGRvbWFpbl9fIChkb21haW5uYW1lKTsKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sMTBuZmxpc3QuYyBscnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMJMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDQwOSArMCwwIEBACistLyogSGFuZGxlIGxpc3Qgb2YgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgX0dOVV9TT1VSQ0UKKy0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorLSMgZW5kaWYKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIHN0cmNocgorLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX0FSR1pfSAorLSMgaW5jbHVkZSA8YXJnei5oPgorLSNlbmRpZgorLSNpbmNsdWRlIDxjdHlwZS5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImxvYWRpbmZvLmgiCistCistLyogT24gc29tZSBzdHJhbmdlIHN5c3RlbXMgc3RpbGwgbm8gZGVmaW5pdGlvbiBvZiBOVUxMIGlzIGZvdW5kLiAgU2lnaCEgICovCistI2lmbmRlZiBOVUxMCistIyBpZiBkZWZpbmVkIF9fU1REQ19fICYmIF9fU1REQ19fCistIyAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCistIyBlbHNlCistIyAgZGVmaW5lIE5VTEwgMAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmZGVmIF9MSUJDCistLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCistICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KKy0jIGRlZmluZSBzdHBjcHkoZGVzdCwgc3JjKSBfX3N0cGNweShkZXN0LCBzcmMpCistI2Vsc2UKKy0jIGlmbmRlZiBIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIERlZmluZSBmdW5jdGlvbiB3aGljaCBhcmUgdXN1YWxseSBub3QgYXZhaWxhYmxlLiAgKi8KKy0KKy0jaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfQ09VTlQKKy0vKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiBBUkdaLiAgKi8KKy1zdGF0aWMgc2l6ZV90IGFyZ3pfY291bnRfXyBQQVJBTVMgKChjb25zdCBjaGFyICphcmd6LCBzaXplX3QgbGVuKSk7CistCistc3RhdGljIHNpemVfdAorLWFyZ3pfY291bnRfXyAoYXJneiwgbGVuKQorLSAgICAgY29uc3QgY2hhciAqYXJnejsKKy0gICAgIHNpemVfdCBsZW47CisteworLSAgc2l6ZV90IGNvdW50ID0gMDsKKy0gIHdoaWxlIChsZW4gPiAwKQorLSAgICB7CistICAgICAgc2l6ZV90IHBhcnRfbGVuID0gc3RybGVuIChhcmd6KTsKKy0gICAgICBhcmd6ICs9IHBhcnRfbGVuICsgMTsKKy0gICAgICBsZW4gLT0gcGFydF9sZW4gKyAxOworLSAgICAgIGNvdW50Kys7CistICAgIH0KKy0gIHJldHVybiBjb3VudDsKKy19CistIyB1bmRlZiBfX2FyZ3pfY291bnQKKy0jIGRlZmluZSBfX2FyZ3pfY291bnQoYXJneiwgbGVuKSBhcmd6X2NvdW50X18gKGFyZ3osIGxlbikKKy0jZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9DT1VOVCAqLworLQorLSNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9TVFJJTkdJRlkKKy0vKiBNYWtlICdcMCcgc2VwYXJhdGVkIGFyZyB2ZWN0b3IgQVJHWiBwcmludGFibGUgYnkgY29udmVydGluZyBhbGwgdGhlICdcMCdzCistICAgZXhjZXB0IHRoZSBsYXN0IGludG8gdGhlIGNoYXJhY3RlciBTRVAuICAqLworLXN0YXRpYyB2b2lkIGFyZ3pfc3RyaW5naWZ5X18gUEFSQU1TICgoY2hhciAqYXJneiwgc2l6ZV90IGxlbiwgaW50IHNlcCkpOworLQorLXN0YXRpYyB2b2lkCistYXJnel9zdHJpbmdpZnlfXyAoYXJneiwgbGVuLCBzZXApCistICAgICBjaGFyICphcmd6OworLSAgICAgc2l6ZV90IGxlbjsKKy0gICAgIGludCBzZXA7CisteworLSAgd2hpbGUgKGxlbiA+IDApCistICAgIHsKKy0gICAgICBzaXplX3QgcGFydF9sZW4gPSBzdHJsZW4gKGFyZ3opOworLSAgICAgIGFyZ3ogKz0gcGFydF9sZW47CistICAgICAgbGVuIC09IHBhcnRfbGVuICsgMTsKKy0gICAgICBpZiAobGVuID4gMCkKKy0JKmFyZ3orKyA9IHNlcDsKKy0gICAgfQorLX0KKy0jIHVuZGVmIF9fYXJnel9zdHJpbmdpZnkKKy0jIGRlZmluZSBfX2FyZ3pfc3RyaW5naWZ5KGFyZ3osIGxlbiwgc2VwKSBhcmd6X3N0cmluZ2lmeV9fIChhcmd6LCBsZW4sIHNlcCkKKy0jZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9TVFJJTkdJRlkgKi8KKy0KKy0jaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfTkVYVAorLXN0YXRpYyBjaGFyICphcmd6X25leHRfXyBQQVJBTVMgKChjaGFyICphcmd6LCBzaXplX3QgYXJnel9sZW4sCistCQkJCSAgY29uc3QgY2hhciAqZW50cnkpKTsKKy0KKy1zdGF0aWMgY2hhciAqCistYXJnel9uZXh0X18gKGFyZ3osIGFyZ3pfbGVuLCBlbnRyeSkKKy0gICAgIGNoYXIgKmFyZ3o7CistICAgICBzaXplX3QgYXJnel9sZW47CistICAgICBjb25zdCBjaGFyICplbnRyeTsKKy17CistICBpZiAoZW50cnkpCistICAgIHsKKy0gICAgICBpZiAoZW50cnkgPCBhcmd6ICsgYXJnel9sZW4pCistICAgICAgICBlbnRyeSA9IHN0cmNociAoZW50cnksICdcMCcpICsgMTsKKy0KKy0gICAgICByZXR1cm4gZW50cnkgPj0gYXJneiArIGFyZ3pfbGVuID8gTlVMTCA6IChjaGFyICopIGVudHJ5OworLSAgICB9CistICBlbHNlCistICAgIGlmIChhcmd6X2xlbiA+IDApCistICAgICAgcmV0dXJuIGFyZ3o7CistICAgIGVsc2UKKy0gICAgICByZXR1cm4gMDsKKy19CistIyB1bmRlZiBfX2FyZ3pfbmV4dAorLSMgZGVmaW5lIF9fYXJnel9uZXh0KGFyZ3osIGxlbiwgZW50cnkpIGFyZ3pfbmV4dF9fIChhcmd6LCBsZW4sIGVudHJ5KQorLSNlbmRpZgkvKiAhX0xJQkMgJiYgIUhBVkVfX19BUkdaX05FWFQgKi8KKy0KKy0KKy0vKiBSZXR1cm4gbnVtYmVyIG9mIGJpdHMgc2V0IGluIFguICAqLworLXN0YXRpYyBpbnQgcG9wIFBBUkFNUyAoKGludCB4KSk7CistCistc3RhdGljIGlubGluZSBpbnQKKy1wb3AgKHgpCistICAgICBpbnQgeDsKKy17CistICAvKiBXZSBhc3N1bWUgdGhhdCBubyBtb3JlIHRoYW4gMTYgYml0cyBhcmUgdXNlZC4gICovCistICB4ID0gKCh4ICYgfjB4NTU1NSkgPj4gMSkgKyAoeCAmIDB4NTU1NSk7CistICB4ID0gKCh4ICYgfjB4MzMzMykgPj4gMikgKyAoeCAmIDB4MzMzMyk7CistICB4ID0gKCh4ID4+IDQpICsgeCkgJiAweDBmMGY7CistICB4ID0gKCh4ID4+IDgpICsgeCkgJiAweGZmOworLQorLSAgcmV0dXJuIHg7CistfQorLQorLQwKKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKKy1fbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBtYXNrLCBsYW5ndWFnZSwKKy0JCSAgICB0ZXJyaXRvcnksIGNvZGVzZXQsIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCistCQkgICAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCBkb19hbGxvY2F0ZSkKKy0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0OworLSAgICAgY29uc3QgY2hhciAqZGlybGlzdDsKKy0gICAgIHNpemVfdCBkaXJsaXN0X2xlbjsKKy0gICAgIGludCBtYXNrOworLSAgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2U7CistICAgICBjb25zdCBjaGFyICp0ZXJyaXRvcnk7CistICAgICBjb25zdCBjaGFyICpjb2Rlc2V0OworLSAgICAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0OworLSAgICAgY29uc3QgY2hhciAqbW9kaWZpZXI7CistICAgICBjb25zdCBjaGFyICpzcGVjaWFsOworLSAgICAgY29uc3QgY2hhciAqc3BvbnNvcjsKKy0gICAgIGNvbnN0IGNoYXIgKnJldmlzaW9uOworLSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWU7CistICAgICBpbnQgZG9fYWxsb2NhdGU7CisteworLSAgY2hhciAqYWJzX2ZpbGVuYW1lOworLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqbGFzdCA9IE5VTEw7CistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpyZXR2YWw7CistICBjaGFyICpjcDsKKy0gIHNpemVfdCBlbnRyaWVzOworLSAgaW50IGNudDsKKy0KKy0gIC8qIEFsbG9jYXRlIHJvb20gZm9yIHRoZSBmdWxsIGZpbGUgbmFtZS4gICovCistICBhYnNfZmlsZW5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGRpcmxpc3RfbGVuCistCQkJCSAgKyBzdHJsZW4gKGxhbmd1YWdlKQorLQkJCQkgICsgKChtYXNrICYgVEVSUklUT1JZKSAhPSAwCistCQkJCSAgICAgPyBzdHJsZW4gKHRlcnJpdG9yeSkgKyAxIDogMCkKKy0JCQkJICArICgobWFzayAmIFhQR19DT0RFU0VUKSAhPSAwCistCQkJCSAgICAgPyBzdHJsZW4gKGNvZGVzZXQpICsgMSA6IDApCistCQkJCSAgKyAoKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKSAhPSAwCistCQkJCSAgICAgPyBzdHJsZW4gKG5vcm1hbGl6ZWRfY29kZXNldCkgKyAxIDogMCkKKy0JCQkJICArICgoKG1hc2sgJiBYUEdfTU9ESUZJRVIpICE9IDAKKy0JCQkJICAgICAgfHwgKG1hc2sgJiBDRU5fQVVESUVOQ0UpICE9IDApCistCQkJCSAgICAgPyBzdHJsZW4gKG1vZGlmaWVyKSArIDEgOiAwKQorLQkJCQkgICsgKChtYXNrICYgQ0VOX1NQRUNJQUwpICE9IDAKKy0JCQkJICAgICA/IHN0cmxlbiAoc3BlY2lhbCkgKyAxIDogMCkKKy0JCQkJICArICgoKG1hc2sgJiBDRU5fU1BPTlNPUikgIT0gMAorLQkJCQkgICAgICB8fCAobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMCkKKy0JCQkJICAgICA/ICgxICsgKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDAKKy0JCQkJCSAgICAgPyBzdHJsZW4gKHNwb25zb3IpICsgMSA6IDApCistCQkJCQkrICgobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMAorLQkJCQkJICAgPyBzdHJsZW4gKHJldmlzaW9uKSArIDEgOiAwKSkgOiAwKQorLQkJCQkgICsgMSArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSk7CistCistICBpZiAoYWJzX2ZpbGVuYW1lID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgcmV0dmFsID0gTlVMTDsKKy0gIGxhc3QgPSBOVUxMOworLQorLSAgLyogQ29uc3RydWN0IGZpbGUgbmFtZS4gICovCistICBtZW1jcHkgKGFic19maWxlbmFtZSwgZGlybGlzdCwgZGlybGlzdF9sZW4pOworLSAgX19hcmd6X3N0cmluZ2lmeSAoYWJzX2ZpbGVuYW1lLCBkaXJsaXN0X2xlbiwgJzonKTsKKy0gIGNwID0gYWJzX2ZpbGVuYW1lICsgKGRpcmxpc3RfbGVuIC0gMSk7CistICAqY3ArKyA9ICcvJzsKKy0gIGNwID0gc3RwY3B5IChjcCwgbGFuZ3VhZ2UpOworLQorLSAgaWYgKChtYXNrICYgVEVSUklUT1JZKSAhPSAwKQorLSAgICB7CistICAgICAgKmNwKysgPSAnXyc7CistICAgICAgY3AgPSBzdHBjcHkgKGNwLCB0ZXJyaXRvcnkpOworLSAgICB9CistICBpZiAoKG1hc2sgJiBYUEdfQ09ERVNFVCkgIT0gMCkKKy0gICAgeworLSAgICAgICpjcCsrID0gJy4nOworLSAgICAgIGNwID0gc3RwY3B5IChjcCwgY29kZXNldCk7CistICAgIH0KKy0gIGlmICgobWFzayAmIFhQR19OT1JNX0NPREVTRVQpICE9IDApCistICAgIHsKKy0gICAgICAqY3ArKyA9ICcuJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIG5vcm1hbGl6ZWRfY29kZXNldCk7CistICAgIH0KKy0gIGlmICgobWFzayAmIChYUEdfTU9ESUZJRVIgfCBDRU5fQVVESUVOQ0UpKSAhPSAwKQorLSAgICB7CistICAgICAgLyogVGhpcyBjb21wb25lbnQgY2FuIGJlIHBhcnQgb2YgYm90aCBzeW50YWNlcyBidXQgaGFzIGRpZmZlcmVudAorLQkgbGVhZGluZyBjaGFyYWN0ZXJzLiAgRm9yIENFTiB3ZSB1c2UgYCsnLCBlbHNlIGBAJy4gICovCistICAgICAgKmNwKysgPSAobWFzayAmIENFTl9BVURJRU5DRSkgIT0gMCA/ICcrJyA6ICdAJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIG1vZGlmaWVyKTsKKy0gICAgfQorLSAgaWYgKChtYXNrICYgQ0VOX1NQRUNJQUwpICE9IDApCistICAgIHsKKy0gICAgICAqY3ArKyA9ICcrJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIHNwZWNpYWwpOworLSAgICB9CistICBpZiAoKG1hc2sgJiAoQ0VOX1NQT05TT1IgfCBDRU5fUkVWSVNJT04pKSAhPSAwKQorLSAgICB7CistICAgICAgKmNwKysgPSAnLCc7CistICAgICAgaWYgKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDApCistCWNwID0gc3RwY3B5IChjcCwgc3BvbnNvcik7CistICAgICAgaWYgKChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwKQorLQl7CistCSAgKmNwKysgPSAnXyc7CistCSAgY3AgPSBzdHBjcHkgKGNwLCByZXZpc2lvbik7CistCX0KKy0gICAgfQorLQorLSAgKmNwKysgPSAnLyc7CistICBzdHBjcHkgKGNwLCBmaWxlbmFtZSk7CistCistICAvKiBMb29rIGluIGxpc3Qgb2YgYWxyZWFkeSBsb2FkZWQgZG9tYWlucyB3aGV0aGVyIGl0IGlzIGFscmVhZHkKKy0gICAgIGF2YWlsYWJsZS4gICovCistICBsYXN0ID0gTlVMTDsKKy0gIGZvciAocmV0dmFsID0gKmwxMG5maWxlX2xpc3Q7IHJldHZhbCAhPSBOVUxMOyByZXR2YWwgPSByZXR2YWwtPm5leHQpCistICAgIGlmIChyZXR2YWwtPmZpbGVuYW1lICE9IE5VTEwpCistICAgICAgeworLQlpbnQgY29tcGFyZSA9IHN0cmNtcCAocmV0dmFsLT5maWxlbmFtZSwgYWJzX2ZpbGVuYW1lKTsKKy0JaWYgKGNvbXBhcmUgPT0gMCkKKy0JICAvKiBXZSBmb3VuZCBpdCEgICovCistCSAgYnJlYWs7CistCWlmIChjb21wYXJlIDwgMCkKKy0JICB7CistCSAgICAvKiBJdCdzIG5vdCBpbiB0aGUgbGlzdC4gICovCistCSAgICByZXR2YWwgPSBOVUxMOworLQkgICAgYnJlYWs7CistCSAgfQorLQorLQlsYXN0ID0gcmV0dmFsOworLSAgICAgIH0KKy0KKy0gIGlmIChyZXR2YWwgIT0gTlVMTCB8fCBkb19hbGxvY2F0ZSA9PSAwKQorLSAgICB7CistICAgICAgZnJlZSAoYWJzX2ZpbGVuYW1lKTsKKy0gICAgICByZXR1cm4gcmV0dmFsOworLSAgICB9CistCistICByZXR2YWwgPSAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKQorLSAgICBtYWxsb2MgKHNpemVvZiAoKnJldHZhbCkgKyAoX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikKKy0JCQkJKiAoMSA8PCBwb3AgKG1hc2spKQorLQkJCQkqIHNpemVvZiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKSkpOworLSAgaWYgKHJldHZhbCA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIHJldHZhbC0+ZmlsZW5hbWUgPSBhYnNfZmlsZW5hbWU7CistICByZXR2YWwtPmRlY2lkZWQgPSAoX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgIT0gMQorLQkJICAgICB8fCAoKG1hc2sgJiBYUEdfQ09ERVNFVCkgIT0gMAorLQkJCSAmJiAobWFzayAmIFhQR19OT1JNX0NPREVTRVQpICE9IDApKTsKKy0gIHJldHZhbC0+ZGF0YSA9IE5VTEw7CistCistICBpZiAobGFzdCA9PSBOVUxMKQorLSAgICB7CistICAgICAgcmV0dmFsLT5uZXh0ID0gKmwxMG5maWxlX2xpc3Q7CistICAgICAgKmwxMG5maWxlX2xpc3QgPSByZXR2YWw7CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHJldHZhbC0+bmV4dCA9IGxhc3QtPm5leHQ7CistICAgICAgbGFzdC0+bmV4dCA9IHJldHZhbDsKKy0gICAgfQorLQorLSAgZW50cmllcyA9IDA7CistICAvKiBJZiB0aGUgRElSTElTVCBpcyBhIHJlYWwgbGlzdCB0aGUgUkVUVkFMIGVudHJ5IGNvcnJlc3BvbmRzIG5vdCB0bworLSAgICAgYSByZWFsIGZpbGUuICBTbyB3ZSBoYXZlIHRvIHVzZSB0aGUgRElSTElTVCBzZXBhcmF0aW9uIG1lY2hhbmlzbQorLSAgICAgb2YgdGhlIGlubmVyIGxvb3AuICAqLworLSAgY250ID0gX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgPT0gMSA/IG1hc2sgLSAxIDogbWFzazsKKy0gIGZvciAoOyBjbnQgPj0gMDsgLS1jbnQpCistICAgIGlmICgoY250ICYgfm1hc2spID09IDAKKy0JJiYgKChjbnQgJiBDRU5fU1BFQ0lGSUMpID09IDAgfHwgKGNudCAmIFhQR19TUEVDSUZJQykgPT0gMCkKKy0JJiYgKChjbnQgJiBYUEdfQ09ERVNFVCkgPT0gMCB8fCAoY250ICYgWFBHX05PUk1fQ09ERVNFVCkgPT0gMCkpCistICAgICAgeworLQkvKiBJdGVyYXRlIG92ZXIgYWxsIGVsZW1lbnRzIG9mIHRoZSBESVJMSVNULiAgKi8KKy0JY2hhciAqZGlyID0gTlVMTDsKKy0KKy0Jd2hpbGUgKChkaXIgPSBfX2FyZ3pfbmV4dCAoKGNoYXIgKikgZGlybGlzdCwgZGlybGlzdF9sZW4sIGRpcikpCistCSAgICAgICAhPSBOVUxMKQorLQkgIHJldHZhbC0+c3VjY2Vzc29yW2VudHJpZXMrK10KKy0JICAgID0gX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXIsIHN0cmxlbiAoZGlyKSArIDEsIGNudCwKKy0JCQkJICBsYW5ndWFnZSwgdGVycml0b3J5LCBjb2Rlc2V0LAorLQkJCQkgIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCistCQkJCSAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCAxKTsKKy0gICAgICB9CistICByZXR2YWwtPnN1Y2Nlc3NvcltlbnRyaWVzXSA9IE5VTEw7CistCistICByZXR1cm4gcmV0dmFsOworLX0KKy0MCistLyogTm9ybWFsaXplIGNvZGVzZXQgbmFtZS4gIFRoZXJlIGlzIG5vIHN0YW5kYXJkIGZvciB0aGUgY29kZXNldAorLSAgIG5hbWVzLiAgTm9ybWFsaXphdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gdXNlIGFueSBvZiB0aGUgY29tbW9uCistICAgbmFtZXMuICAqLworLWNvbnN0IGNoYXIgKgorLV9ubF9ub3JtYWxpemVfY29kZXNldCAoY29kZXNldCwgbmFtZV9sZW4pCistICAgICBjb25zdCBjaGFyICpjb2Rlc2V0OworLSAgICAgc2l6ZV90IG5hbWVfbGVuOworLXsKKy0gIGludCBsZW4gPSAwOworLSAgaW50IG9ubHlfZGlnaXQgPSAxOworLSAgY2hhciAqcmV0dmFsOworLSAgY2hhciAqd3A7CistICBzaXplX3QgY250OworLQorLSAgZm9yIChjbnQgPSAwOyBjbnQgPCBuYW1lX2xlbjsgKytjbnQpCistICAgIGlmIChpc2FsbnVtIChjb2Rlc2V0W2NudF0pKQorLSAgICAgIHsKKy0JKytsZW47CistCistCWlmIChpc2FscGhhIChjb2Rlc2V0W2NudF0pKQorLQkgIG9ubHlfZGlnaXQgPSAwOworLSAgICAgIH0KKy0KKy0gIHJldHZhbCA9IChjaGFyICopIG1hbGxvYyAoKG9ubHlfZGlnaXQgPyAzIDogMCkgKyBsZW4gKyAxKTsKKy0KKy0gIGlmIChyZXR2YWwgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIGlmIChvbmx5X2RpZ2l0KQorLQl3cCA9IHN0cGNweSAocmV0dmFsLCAiaXNvIik7CistICAgICAgZWxzZQorLQl3cCA9IHJldHZhbDsKKy0KKy0gICAgICBmb3IgKGNudCA9IDA7IGNudCA8IG5hbWVfbGVuOyArK2NudCkKKy0JaWYgKGlzYWxwaGEgKGNvZGVzZXRbY250XSkpCistCSAgKndwKysgPSB0b2xvd2VyIChjb2Rlc2V0W2NudF0pOworLQllbHNlIGlmIChpc2RpZ2l0IChjb2Rlc2V0W2NudF0pKQorLQkgICp3cCsrID0gY29kZXNldFtjbnRdOworLQorLSAgICAgICp3cCA9ICdcMCc7CistICAgIH0KKy0KKy0gIHJldHVybiAoY29uc3QgY2hhciAqKSByZXR2YWw7CistfQorLQorLQorLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworLQorLS8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCistICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKKy0gICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQorLSAgIHRvIGJlIGRlZmluZWQuICAqLworLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKgorLXN0cGNweSAoZGVzdCwgc3JjKQorLSAgICAgY2hhciAqZGVzdDsKKy0gICAgIGNvbnN0IGNoYXIgKnNyYzsKKy17CistICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCistICAgIC8qIERvIG5vdGhpbmcuICovIDsKKy0gIHJldHVybiBkZXN0IC0gMTsKKy19CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9saWJnZXR0ZXh0LmggbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdldHRleHQuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9saWJnZXR0ZXh0LmgJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbGliZ2V0dGV4dC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxODIgKzAsMCBAQAorLS8qIE1lc3NhZ2UgY2F0YWxvZ3MgZm9yIGludGVybmF0aW9uYWxpemF0aW9uLgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLS8qIEJlY2F1c2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNvbGFyaXMpIHdlIHNvbWV0aW1lcyBoYXZlIHRvIGluY2x1ZGUKKy0gICB0aGUgc3lzdGVtcyBsaWJpbnRsLmggYXMgd2VsbCBhcyB0aGlzIGZpbGUgd2UgaGF2ZSBtb3JlIGNvbXBsZXgKKy0gICBpbmNsdWRlIHByb3RlY3Rpb24gYWJvdmUuICBCdXQgdGhlIHN5c3RlbXMgaGVhZGVyIG1pZ2h0IHBlcmhhcHMgYWxzbworLSAgIGRlZmluZSBfTElCSU5UTF9IIGFuZCB0aGVyZWZvcmUgd2UgaGF2ZSB0byBwcm90ZWN0IHRoZSBkZWZpbml0aW9uIGhlcmUuICAqLworLQorLSNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCkgfHwgIWRlZmluZWQgKF9MSUJHRVRURVhUX0gpCistI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKQorLSMgZGVmaW5lIF9MSUJJTlRMX0gJMQorLSNlbmRpZgorLSNkZWZpbmUgX0xJQkdFVFRFWFRfSAkxCistCistLyogV2UgZGVmaW5lIGFuIGFkZGl0aW9uYWwgc3ltYm9sIHRvIHNpZ25hbCB0aGF0IHdlIHVzZSB0aGUgR05VCistICAgaW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dC4gICovCistI2RlZmluZSBfX1VTRV9HTlVfR0VUVEVYVCAxCistCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpZiBIQVZFX0xPQ0FMRV9ICistIyBpbmNsdWRlIDxsb2NhbGUuaD4KKy0jZW5kaWYKKy0KKy0KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiIHsKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmbmRlZiBQQVJBTVMKKy0jIGlmIF9fU1REQ19fCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCistIyBlbHNlCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZuZGVmIE5VTEwKKy0jIGlmICFkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX19HTlVDX18KKy0jICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKy0jIGVsc2UKKy0jICBkZWZpbmUgTlVMTCAoMCkKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmICFIQVZFX0xDX01FU1NBR0VTCistLyogVGhpcyB2YWx1ZSBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGdldHRleHQoKSBhbmQgZGdldHRleHQoKQorLSAgIGZ1bmN0aW9uLiAgQnV0IHNvbWUgc3lzdGVtIGRvZXMgbm90IGhhdmUgdGhpcyBkZWZpbmVkLiAgRGVmaW5lIGl0CistICAgdG8gYSBkZWZhdWx0IHZhbHVlLiAgKi8KKy0jIGRlZmluZSBMQ19NRVNTQUdFUyAoLTEpCistI2VuZGlmCistCistCistLyogRGVjbGFyYXRpb25zIGZvciBnZXR0ZXh0LXVzaW5nLWNhdGdldHMgaW50ZXJmYWNlLiAgRGVyaXZlZCBmcm9tCistICAgSmltIE1leWVyaW5nJ3MgbGliaW50bC5oLiAgKi8KKy1zdHJ1Y3QgX21zZ19lbnQKKy17CistICBjb25zdCBjaGFyICpfbXNnOworLSAgaW50IF9tc2dfbnVtYmVyOworLX07CistCistCistI2lmIEhBVkVfQ0FUR0VUUworLS8qIFRoZXNlIHR3byB2YXJpYWJsZXMgYXJlIGRlZmluZWQgaW4gdGhlIGF1dG9tYXRpY2FsbHkgYnkgcG8tdG8tdGJsLnNlZAorLSAgIGdlbmVyYXRlZCBmaWxlIGBjYXQtaWQtdGJsLmMnLiAgKi8KKy1leHRlcm4gY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW107CistZXh0ZXJuIGludCBfbXNnX3RibF9sZW5ndGg7CistI2VuZGlmCistCistCistLyogRm9yIGF1dG9tYXRpY2FsIGV4dHJhY3Rpb24gb2YgbWVzc2FnZXMgc29tZXRpbWVzIG5vIHJlYWwKKy0gICB0cmFuc2xhdGlvbiBpcyBuZWVkZWQuICBJbnN0ZWFkIHRoZSBzdHJpbmcgaXRzZWxmIGlzIHRoZSByZXN1bHQuICAqLworLSNkZWZpbmUgZ2V0dGV4dF9ub29wKFN0cikgKFN0cikKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0CistICAgdGV4dCkuICAqLworLWV4dGVybiBjaGFyICpnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKKy1leHRlcm4gY2hhciAqZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKKy0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLworLWV4dGVybiBjaGFyICpkZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKKy1leHRlcm4gY2hhciAqZGdldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCistCQkJCSBjb25zdCBjaGFyICpfX21zZ2lkKSk7CistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCistICAgbG9jYWxlLiAgKi8KKy1leHRlcm4gY2hhciAqZGNnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKKy0JCQkJaW50IF9fY2F0ZWdvcnkpKTsKKy1leHRlcm4gY2hhciAqZGNnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorLQkJCQkgIGNvbnN0IGNoYXIgKl9fbXNnaWQsIGludCBfX2NhdGVnb3J5KSk7CistCistCistLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCistICAgSWYgRE9NQUlOTkFNRSBpcyBudWxsLCByZXR1cm4gdGhlIGN1cnJlbnQgZGVmYXVsdC4KKy0gICBJZiBET01BSU5OQU1FIGlzICIiLCByZXNldCB0byB0aGUgZGVmYXVsdCBvZiAibWVzc2FnZXMiLiAgKi8KKy1leHRlcm4gY2hhciAqdGV4dGRvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKKy1leHRlcm4gY2hhciAqdGV4dGRvbWFpbl9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOworLQorLS8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAorLSAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KKy1leHRlcm4gY2hhciAqYmluZHRleHRkb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorLQkJCQkgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkpOworLWV4dGVybiBjaGFyICpiaW5kdGV4dGRvbWFpbl9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKy0JCQkJICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkpOworLQorLSNpZiBFTkFCTEVfTkxTCistCistLyogU29sYXJpcyAyLjMgaGFzIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGJ1dCBkY2dldHRleHQgaXMgbWlzc2luZy4KKy0gICBTbyB3ZSBvbWl0IHRoaXMgb3B0aW1pemF0aW9uIGZvciBTb2xhcmlzIDIuMy4gIEJUVywgU29sYXJpcyAyLjQKKy0gICBoYXMgZGNnZXR0ZXh0LiAgKi8KKy0jIGlmICFIQVZFX0NBVEdFVFMgJiYgKCFIQVZFX0dFVFRFWFQgfHwgSEFWRV9EQ0dFVFRFWFQpCistCistIyAgZGVmaW5lIGdldHRleHQoTXNnaWQpCQkJCQkJICAgICAgXAorLSAgICAgZGdldHRleHQgKE5VTEwsIE1zZ2lkKQorLQorLSMgIGRlZmluZSBkZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCkJCQkJCSAgICAgIFwKKy0gICAgIGRjZ2V0dGV4dCAoRG9tYWlubmFtZSwgTXNnaWQsIExDX01FU1NBR0VTKQorLQorLSMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA3CistLyogVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiBsb2FkbXNnY2F0LmMuICBXZSBuZWVkIGEgc2lnbiwKKy0gICB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbGwKKy0gICB0cmFuc2xhdGlvbnMuICAqLworLWV4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKKy0KKy0jICAgZGVmaW5lIGRjZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpCQkJICAgICAgXAorLSAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAorLSAgICh7CQkJCQkJCQkJICAgICAgXAorLSAgICAgY2hhciAqX19yZXN1bHQ7CQkJCQkJCSAgICAgIFwKKy0gICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoTXNnaWQpKQkJCQkJICAgICAgXAorLSAgICAgICB7CQkJCQkJCQkgICAgICBcCistCSBzdGF0aWMgY2hhciAqX190cmFuc2xhdGlvbl9fOwkJCQkJICAgICAgXAorLQkgc3RhdGljIGludCBfX2NhdGFsb2dfY291bnRlcl9fOwkJCQkgICAgICBcCistCSBpZiAoISBfX3RyYW5zbGF0aW9uX18gfHwgX19jYXRhbG9nX2NvdW50ZXJfXyAhPSBfbmxfbXNnX2NhdF9jbnRyKSAgICBcCistCSAgIHsJCQkJCQkJCSAgICAgIFwKKy0JICAgICBfX3RyYW5zbGF0aW9uX18gPQkJCQkJCSAgICAgIFwKKy0JICAgICAgIGRjZ2V0dGV4dF9fIChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpOwkJICAgICAgXAorLQkgICAgIF9fY2F0YWxvZ19jb3VudGVyX18gPSBfbmxfbXNnX2NhdF9jbnRyOwkJCSAgICAgIFwKKy0JICAgfQkJCQkJCQkJICAgICAgXAorLQkgX19yZXN1bHQgPSBfX3RyYW5zbGF0aW9uX187CQkJCQkgICAgICBcCistICAgICAgIH0JCQkJCQkJCSAgICAgIFwKKy0gICAgIGVsc2UJCQkJCQkJCSAgICAgIFwKKy0gICAgICAgX19yZXN1bHQgPSBkY2dldHRleHRfXyAoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KTsJCSAgICAgIFwKKy0gICAgIF9fcmVzdWx0OwkJCQkJCQkJICAgICAgXAorLSAgICB9KSkKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0KKy0jZWxzZQorLQorLSMgZGVmaW5lIGdldHRleHQoTXNnaWQpIChNc2dpZCkKKy0jIGRlZmluZSBkZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCkgKE1zZ2lkKQorLSMgZGVmaW5lIGRjZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpIChNc2dpZCkKKy0jIGRlZmluZSB0ZXh0ZG9tYWluKERvbWFpbm5hbWUpIHdoaWxlICgwKSAvKiBub3RoaW5nICovCistIyBkZWZpbmUgYmluZHRleHRkb21haW4oRG9tYWlubmFtZSwgRGlybmFtZSkgd2hpbGUgKDApIC8qIG5vdGhpbmcgKi8KKy0KKy0jZW5kaWYKKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy19CistI2VuZGlmCistCistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkIGxyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xpbnV4LW1zZy5zZWQJMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbGludXgtbXNnLnNlZAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTAwICswLDAgQEAKKy0jIHBvMm1zZy5zZWQgLSBDb252ZXJ0IFVuaWZvcnVtIHN0eWxlIC5wbyBmaWxlIHRvIExpbnV4IHN0eWxlIC5tc2cgZmlsZQorLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistIworLSMKKy0jIFRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIC5tc2cgc2hvdWxkIGJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZQorLSMgbWVzc2FnZSBzZXQgbnVtYmVyLiAgV2UgdXNlIGFsd2F5cyBzZXQgbnVtYmVyIDEuCistIworLTEgeworLSAgaVwKKy0kc2V0IDEgIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgcG8ybXNnLnNlZAorLSAgaAorLSAgcy8uKi8wLworLSAgeAorLX0KKy0jCistIyBNaXRjaCdzIG9sZCBjYXRhbG9nIGZvcm1hdCBkb2VzIG5vdCBhbGxvdyBjb21tZW50cy4KKy0jCistIyBXZSBjb3B5IHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFzIGEgY29tbWVudCBpbnRvIHRoZSAubXNnIGZpbGUuCistIworLS9ebXNnaWQvIHsKKy0gIHMvbXNnaWRbIAldKiIvLworLSMKKy0jIFRoaXMgZG9lcyBub3Qgd29yayBub3cgd2l0aCB0aGUgbmV3IGZvcm1hdC4KKy0jIC8iJC8hIHsKKy0jICAgcy9cXCQvLworLSMgICBzLyQvIC4uLiAobW9yZSBsaW5lcyBmb2xsb3dpbmcpIi8KKy0jIH0KKy0gIHgKKy0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQorLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CistICB0ZAorLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KKy0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KKy0gIDpkCistICBzLzlcKF8qXCkkL19cMS8KKy0gIHRkCistIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KKy0gIHMvXlwoXypcKSQvMFwxLworLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgorLSAgcy84XChfKlwpJC85XDEvCistICBzLzdcKF8qXCkkLzhcMS8KKy0gIHMvNlwoXypcKSQvN1wxLworLSAgcy81XChfKlwpJC82XDEvCistICBzLzRcKF8qXCkkLzVcMS8KKy0gIHMvM1woXypcKSQvNFwxLworLSAgcy8yXChfKlwpJC8zXDEvCistICBzLzFcKF8qXCkkLzJcMS8KKy0gIHMvMFwoXypcKSQvMVwxLworLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KKy0gIHMvXy8wL2cKKy0gIHgKKy0gIEcKKy0gIHMvXCguKlwpIlxuXChbMC05XSpcKS8kICNcMiBPcmlnaW5hbCBNZXNzYWdlOihcMSkvcAorLX0KKy0jCistIyBUaGUgLm1zZyBmaWxlIGNvbnRhaW5zLCBvdGhlciB0aGVuIHRoZSAucG8gZmlsZSwgb25seSB0aGUgdHJhbnNsYXRpb25zCistIyBidXQgZWFjaCBnaXZlbiBhIHVuaXF1ZSBJRC4gIFN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGJ5IDEgZm9yCistIyBlYWNoIG1lc3NhZ2Ugd2UgYXNzaWduIHRoZW0gdG8gdGhlIG1lc3NhZ2VzLgorLSMgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIC5wbyBmaWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNhdC1pZC10YmwuYyBmaWxlCistIyAod2l0aCBwby10by10YmwpIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBoZXJlLiAgKEF0IGxlYXN0IHRoZSBvcmRlcgorLSMgb2YgZGVjbGFyYXRpb25zIG11c3Qgbm90IGJlIGNoYW5nZWQuKQorLSMKKy0vXm1zZ3N0ci8geworLSAgcy9tc2dzdHJbIAldKiJcKC4qXCkiLyMgXDEvCistIyBDbGVhciBzdWJzdGl0dXRpb24gZmxhZy4KKy0gIHRiCistIyBBcHBlbmQgdGhlIG5leHQgbGluZS4KKy0gIDpiCistICBOCistIyBMb29rIHdoZXRoZXIgc2Vjb25kIHBhcnQgaXMgY29udGludWF0aW9uIGxpbmUuCistICBzL1woLipcblwpIlwoLipcKSIvXDFcMi8KKy0jIFllcywgdGhlbiBicmFuY2guCistICB0YQorLSAgUAorLSAgRAorLSMgTm90ZSB0aGF0IEQgaW5jbHVkZXMgYSBqdW1wIHRvIHRoZSBzdGFydCEhCistIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgorLSAgOmEKKy0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLworLSAgUAorLSMgV2UgY2Fubm90IHVzZSBEIGhlcmUuCistICBzLy4qXG5cKC4qXCkvXDEvCistICB0YgorLX0KKy1kCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sb2FkaW5mby5oIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkaW5mby5oCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRpbmZvLmgJMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbG9hZGluZm8uaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNTggKzAsMCBAQAorLSNpZm5kZWYgUEFSQU1TCistIyBpZiBfX1NURENfXworLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncworLSMgZWxzZQorLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogRW5jb2Rpbmcgb2YgbG9jYWxlIG5hbWUgcGFydHMuICAqLworLSNkZWZpbmUgQ0VOX1JFVklTSU9OCQkxCistI2RlZmluZSBDRU5fU1BPTlNPUgkJMgorLSNkZWZpbmUgQ0VOX1NQRUNJQUwJCTQKKy0jZGVmaW5lIFhQR19OT1JNX0NPREVTRVQJOAorLSNkZWZpbmUgWFBHX0NPREVTRVQJCTE2CistI2RlZmluZSBURVJSSVRPUlkJCTMyCistI2RlZmluZSBDRU5fQVVESUVOQ0UJCTY0CistI2RlZmluZSBYUEdfTU9ESUZJRVIJCTEyOAorLQorLSNkZWZpbmUgQ0VOX1NQRUNJRklDCShDRU5fUkVWSVNJT058Q0VOX1NQT05TT1J8Q0VOX1NQRUNJQUx8Q0VOX0FVRElFTkNFKQorLSNkZWZpbmUgWFBHX1NQRUNJRklDCShYUEdfQ09ERVNFVHxYUEdfTk9STV9DT0RFU0VUfFhQR19NT0RJRklFUikKKy0KKy0KKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlCisteworLSAgY29uc3QgY2hhciAqZmlsZW5hbWU7CistICBpbnQgZGVjaWRlZDsKKy0KKy0gIGNvbnN0IHZvaWQgKmRhdGE7CistCistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpuZXh0OworLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqc3VjY2Vzc29yWzFdOworLX07CistCistCistZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9ub3JtYWxpemVfY29kZXNldCBQQVJBTVMgKChjb25zdCBjaGFyICpjb2Rlc2V0LAorLQkJCQkJCSAgc2l6ZV90IG5hbWVfbGVuKSk7CistCistZXh0ZXJuIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgorLV9ubF9tYWtlX2wxMG5mbGlzdCBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdCwKKy0JCQkgICAgY29uc3QgY2hhciAqZGlybGlzdCwgc2l6ZV90IGRpcmxpc3RfbGVuLCBpbnQgbWFzaywKKy0JCQkgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKKy0JCQkgICAgY29uc3QgY2hhciAqY29kZXNldCwKKy0JCQkgICAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0LAorLQkJCSAgICBjb25zdCBjaGFyICptb2RpZmllciwgY29uc3QgY2hhciAqc3BlY2lhbCwKKy0JCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCistCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpKTsKKy0KKy0KKy1leHRlcm4gY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyBQQVJBTVMgKChjb25zdCBjaGFyICpuYW1lKSk7CistCistZXh0ZXJuIGludCBfbmxfZXhwbG9kZV9uYW1lIFBBUkFNUyAoKGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXIsCistCQkJCSAgICAgY29uc3QgY2hhciAqKnRlcnJpdG9yeSwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqY29kZXNldCwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsLAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcG9uc29yLAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbikpOworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9hZG1zZ2NhdC5jIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkbXNnY2F0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9hZG1zZ2NhdC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRtc2djYXQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTk5ICswLDAgQEAKKy0vKiBMb2FkIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYKKy0KKy0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVApIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN5cy9tbWFuLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImdldHRleHQuaCIKKy0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmZGVmIF9MSUJDCistLyogUmVuYW1lIHRoZSBub24gSVNPIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKKy0gICBiZWNhdXNlIHNvbWUgSVNPIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKKy0gICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCistIyBkZWZpbmUgZnN0YXQgIF9fZnN0YXQKKy0jIGRlZmluZSBvcGVuICAgX19vcGVuCistIyBkZWZpbmUgY2xvc2UgIF9fY2xvc2UKKy0jIGRlZmluZSByZWFkICAgX19yZWFkCistIyBkZWZpbmUgbW1hcCAgIF9fbW1hcAorLSMgZGVmaW5lIG11bm1hcCBfX211bm1hcAorLSNlbmRpZgorLQorLS8qIFdlIG5lZWQgYSBzaWduLCB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQKKy0gICB3aXRoIGFsbCB0cmFuc2xhdGlvbnMuICBUaGlzIGlzIGltcG9ydGFudCBpZiB0aGUgdHJhbnNsYXRpb25zIGFyZQorLSAgIGNhY2hlZCBieSBvbmUgb2YgR0NDJ3MgZmVhdHVyZXMuICAqLworLWludCBfbmxfbXNnX2NhdF9jbnRyID0gMDsKKy0KKy0KKy0vKiBMb2FkIHRoZSBtZXNzYWdlIGNhdGFsb2dzIHNwZWNpZmllZCBieSBGSUxFTkFNRS4gIElmIGl0IGlzIG5vIHZhbGlkCistICAgbWVzc2FnZSBjYXRhbG9nIGRvIG5vdGhpbmcuICAqLworLXZvaWQKKy1fbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlKQorLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGU7CisteworLSAgaW50IGZkOworLSAgc3RydWN0IHN0YXQgc3Q7CistICBzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKmRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xOworLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCistICAgIHx8IGRlZmluZWQgX0xJQkMKKy0gIGludCB1c2VfbW1hcCA9IDA7CistI2VuZGlmCistICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOworLQorLSAgZG9tYWluX2ZpbGUtPmRlY2lkZWQgPSAxOworLSAgZG9tYWluX2ZpbGUtPmRhdGEgPSBOVUxMOworLQorLSAgLyogSWYgdGhlIHJlY29yZCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBsb2NhbGUgdGhlIEZJTEVOQU1FCistICAgICBtaWdodCBiZSBOVUxMLiAgVGhpcyBjYW4gaGFwcGVuIHdoZW4gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbgorLSAgICAgc3BlY2lmaWNhdGlvbiB0aGUgbG9jYWxlIGZpbGUgbmFtZSBpcyBkaWZmZXJlbnQgZm9yIFhQRyBhbmQgQ0VOCistICAgICBzeW50YXguICAqLworLSAgaWYgKGRvbWFpbl9maWxlLT5maWxlbmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm47CistCistICAvKiBUcnkgdG8gb3BlbiB0aGUgYWRkcmVzc2VkIGZpbGUuICAqLworLSAgZmQgPSBvcGVuIChkb21haW5fZmlsZS0+ZmlsZW5hbWUsIE9fUkRPTkxZKTsKKy0gIGlmIChmZCA9PSAtMSkKKy0gICAgcmV0dXJuOworLQorLSAgLyogV2UgbXVzdCBrbm93IGFib3V0IHRoZSBzaXplIG9mIHRoZSBmaWxlLiAgKi8KKy0gIGlmIChmc3RhdCAoZmQsICZzdCkgIT0gMAorLSAgICAgICYmIHN0LnN0X3NpemUgPCAob2ZmX3QpIHNpemVvZiAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyKSkKKy0gICAgeworLSAgICAgIC8qIFNvbWV0aGluZyB3ZW50IHdyb25nLiAgKi8KKy0gICAgICBjbG9zZSAoZmQpOworLSAgICAgIHJldHVybjsKKy0gICAgfQorLQorLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCistICAgIHx8IGRlZmluZWQgX0xJQkMKKy0gIC8qIE5vdyB3ZSBhcmUgcmVhZHkgdG8gbG9hZCB0aGUgZmlsZS4gIElmIG1tYXAoKSBpcyBhdmFpbGFibGUgd2UgdHJ5CistICAgICB0aGlzIGZpcnN0LiAgSWYgbm90IGF2YWlsYWJsZSBvciBpdCBmYWlsZWQgd2UgdHJ5IHRvIGxvYWQgaXQuICAqLworLSAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbW1hcCAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFELAorLQkJCQkJIE1BUF9QUklWQVRFLCBmZCwgMCk7CistCistICBpZiAoZGF0YSAhPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xKQorLSAgICB7CistICAgICAgLyogbW1hcCgpIGNhbGwgd2FzIHN1Y2Nlc3NmdWwuICAqLworLSAgICAgIGNsb3NlIChmZCk7CistICAgICAgdXNlX21tYXAgPSAxOworLSAgICB9CistI2VuZGlmCistCistICAvKiBJZiB0aGUgZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZSAoaS5lLiBtbWFwJ2VkKSB3ZSB0cnkgdG8gbG9hZAorLSAgICAgaXQgbWFudWFsbHkuICAqLworLSAgaWYgKGRhdGEgPT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSkKKy0gICAgeworLSAgICAgIG9mZl90IHRvX3JlYWQ7CistICAgICAgY2hhciAqcmVhZF9wdHI7CistCistICAgICAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbWFsbG9jIChzdC5zdF9zaXplKTsKKy0gICAgICBpZiAoZGF0YSA9PSBOVUxMKQorLQlyZXR1cm47CistCistICAgICAgdG9fcmVhZCA9IHN0LnN0X3NpemU7CistICAgICAgcmVhZF9wdHIgPSAoY2hhciAqKSBkYXRhOworLSAgICAgIGRvCistCXsKKy0JICBsb25nIGludCBuYiA9IChsb25nIGludCkgcmVhZCAoZmQsIHJlYWRfcHRyLCB0b19yZWFkKTsKKy0JICBpZiAobmIgPT0gLTEpCistCSAgICB7CistCSAgICAgIGNsb3NlIChmZCk7CistCSAgICAgIHJldHVybjsKKy0JICAgIH0KKy0KKy0JICByZWFkX3B0ciArPSBuYjsKKy0JICB0b19yZWFkIC09IG5iOworLQl9CistICAgICAgd2hpbGUgKHRvX3JlYWQgPiAwKTsKKy0KKy0gICAgICBjbG9zZSAoZmQpOworLSAgICB9CistCistICAvKiBVc2luZyB0aGUgbWFnaWMgbnVtYmVyIHdlIGNhbiB0ZXN0IHdoZXRoZXIgaXQgcmVhbGx5IGlzIGEgbWVzc2FnZQorLSAgICAgY2F0YWxvZyBmaWxlLiAgKi8KKy0gIGlmIChkYXRhLT5tYWdpYyAhPSBfTUFHSUMgJiYgZGF0YS0+bWFnaWMgIT0gX01BR0lDX1NXQVBQRUQpCistICAgIHsKKy0gICAgICAvKiBUaGUgbWFnaWMgbnVtYmVyIGlzIHdyb25nOiBub3QgYSBtZXNzYWdlIGNhdGFsb2cgZmlsZS4gICovCistI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKKy0gICAgfHwgZGVmaW5lZCBfTElCQworLSAgICAgIGlmICh1c2VfbW1hcCkKKy0JbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc3Quc3Rfc2l6ZSk7CistICAgICAgZWxzZQorLSNlbmRpZgorLQlmcmVlIChkYXRhKTsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0KKy0gIGRvbWFpbl9maWxlLT5kYXRhCistICAgID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbikpOworLSAgaWYgKGRvbWFpbl9maWxlLT5kYXRhID09IE5VTEwpCistICAgIHJldHVybjsKKy0KKy0gIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKKy0gIGRvbWFpbi0+ZGF0YSA9IChjaGFyICopIGRhdGE7CistICBkb21haW4tPm11c3Rfc3dhcCA9IGRhdGEtPm1hZ2ljICE9IF9NQUdJQzsKKy0KKy0gIC8qIEZpbGwgaW4gdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdmFpbGFibGUgdGFibGVzLiAgKi8KKy0gIHN3aXRjaCAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnJldmlzaW9uKSkKKy0gICAgeworLSAgICBjYXNlIDA6CistICAgICAgZG9tYWluLT5uc3RyaW5ncyA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5uc3RyaW5ncyk7CistICAgICAgZG9tYWluLT5vcmlnX3RhYiA9IChzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKKy0JKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+b3JpZ190YWJfb2Zmc2V0KSk7CistICAgICAgZG9tYWluLT50cmFuc190YWIgPSAoc3RydWN0IHN0cmluZ19kZXNjICopCistCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnRyYW5zX3RhYl9vZmZzZXQpKTsKKy0gICAgICBkb21haW4tPmhhc2hfc2l6ZSA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9zaXplKTsKKy0gICAgICBkb21haW4tPmhhc2hfdGFiID0gKG5sc191aW50MzIgKikKKy0JKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfb2Zmc2V0KSk7CistICAgICAgYnJlYWs7CistICAgIGRlZmF1bHQ6CistICAgICAgLyogVGhpcyBpcyBhbiBpbGxlZ2FsIHJldmlzaW9uLiAgKi8KKy0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAorLSAgICB8fCBkZWZpbmVkIF9MSUJDCistICAgICAgaWYgKHVzZV9tbWFwKQorLQltdW5tYXAgKChjYWRkcl90KSBkYXRhLCBzdC5zdF9zaXplKTsKKy0gICAgICBlbHNlCistI2VuZGlmCistCWZyZWUgKGRhdGEpOworLSAgICAgIGZyZWUgKGRvbWFpbik7CistICAgICAgZG9tYWluX2ZpbGUtPmRhdGEgPSBOVUxMOworLSAgICAgIHJldHVybjsKKy0gICAgfQorLQorLSAgLyogU2hvdyB0aGF0IG9uZSBkb21haW4gaXMgY2hhbmdlZC4gIFRoaXMgbWlnaHQgbWFrZSBzb21lIGNhY2hlZAorLSAgICAgdHJhbnNsYXRpb25zIGludmFsaWQuICAqLworLSAgKytfbmxfbXNnX2NhdF9jbnRyOworLX0KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZWFsaWFzLmMgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZWFsaWFzLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9jYWxlYWxpYXMuYwkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVhbGlhcy5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwzNzggKzAsMCBAQAorLS8qIEhhbmRsZSBhbGlhc2VzIGZvciBsb2NhbGUgbmFtZXMKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPGN0eXBlLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpZmRlZiBfX0dOVUNfXworLSMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCistIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQorLSNlbHNlCistIyBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQworLSMgIGluY2x1ZGUgPGFsbG9jYS5oPgorLSMgZWxzZQorLSMgIGlmZGVmIF9BSVgKKy0gI3ByYWdtYSBhbGxvY2EKKy0jICBlbHNlCistIyAgIGlmbmRlZiBhbGxvY2EKKy1jaGFyICphbGxvY2EgKCk7CistIyAgIGVuZGlmCistIyAgZW5kaWYKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbHNlCistY2hhciAqZ2V0ZW52ICgpOworLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAorLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorLSMgZWxzZQorLXZvaWQgZnJlZSAoKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgX0dOVV9TT1VSQ0UKKy0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorLSMgZW5kaWYKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIHN0cmNocgorLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKKy0jIGVuZGlmCistI2VuZGlmCistCistI2luY2x1ZGUgImdldHRleHQuaCIKKy0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmZGVmIF9MSUJDCistLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCistICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KKy0jIGRlZmluZSBzdHJjYXNlY21wIF9fc3RyY2FzZWNtcAorLSNlbmRpZgorLQorLQorLS8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAorLSAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCistI2lmZGVmIEhBVkVfQUxMT0NBCistLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCistIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KKy0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KSAvKiBub3RoaW5nICovCistI2Vsc2UKKy1zdHJ1Y3QgYmxvY2tfbGlzdAorLXsKKy0gIHZvaWQgKmFkZHJlc3M7CistICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKKy19OworLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyKQkJCQkJCSAgICAgIFwKKy0gIGRvIHsJCQkJCQkJCQkgICAgICBcCistICAgIHN0cnVjdCBibG9ja19saXN0ICpuZXdwID0gKHN0cnVjdCBibG9ja19saXN0ICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOyAgXAorLSAgICAvKiBJZiB3ZSBjYW5ub3QgZ2V0IGEgZnJlZSBibG9jayB3ZSBjYW5ub3QgYWRkIHRoZSBuZXcgZWxlbWVudCB0bwkgICAgICBcCistICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAorLSAgICBpZiAobmV3cCAhPSBOVUxMKSB7CQkJCQkJCSAgICAgIFwKKy0gICAgICBuZXdwLT5hZGRyZXNzID0gKGFkZHIpOwkJCQkJCSAgICAgIFwKKy0gICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKKy0gICAgICAobGlzdCkgPSBuZXdwOwkJCQkJCQkgICAgICBcCistICAgIH0JCQkJCQkJCQkgICAgICBcCistICB9IHdoaWxlICgwKQorLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpCQkJCQkJICAgICAgXAorLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKKy0gICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKKy0gICAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqb2xkID0gbGlzdDsJCQkJCSAgICAgIFwKKy0gICAgICBsaXN0ID0gbGlzdC0+bmV4dDsJCQkJCQkgICAgICBcCistICAgICAgZnJlZSAob2xkKTsJCQkJCQkJICAgICAgXAorLSAgICB9CQkJCQkJCQkJICAgICAgXAorLSAgfSB3aGlsZSAoMCkKKy0jIHVuZGVmIGFsbG9jYQorLSMgZGVmaW5lIGFsbG9jYShzaXplKSAobWFsbG9jIChzaXplKSkKKy0jZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KKy0KKy0KKy1zdHJ1Y3QgYWxpYXNfbWFwCisteworLSAgY29uc3QgY2hhciAqYWxpYXM7CistICBjb25zdCBjaGFyICp2YWx1ZTsKKy19OworLQorLQorLXN0YXRpYyBzdHJ1Y3QgYWxpYXNfbWFwICptYXA7Cistc3RhdGljIHNpemVfdCBubWFwID0gMDsKKy1zdGF0aWMgc2l6ZV90IG1heG1hcCA9IDA7CistCistCistLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KKy1zdGF0aWMgc2l6ZV90IHJlYWRfYWxpYXNfZmlsZSBQQVJBTVMgKChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikpOworLXN0YXRpYyB2b2lkIGV4dGVuZF9hbGlhc190YWJsZSBQQVJBTVMgKCh2b2lkKSk7Cistc3RhdGljIGludCBhbGlhc19jb21wYXJlIFBBUkFNUyAoKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsCistCQkJCSAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMikpOworLQorLQorLWNvbnN0IGNoYXIgKgorLV9ubF9leHBhbmRfYWxpYXMgKG5hbWUpCistICAgIGNvbnN0IGNoYXIgKm5hbWU7CisteworLSAgc3RhdGljIGNvbnN0IGNoYXIgKmxvY2FsZV9hbGlhc19wYXRoID0gTE9DQUxFX0FMSUFTX1BBVEg7CistICBzdHJ1Y3QgYWxpYXNfbWFwICpyZXR2YWw7CistICBzaXplX3QgYWRkZWQ7CistCistICBkbworLSAgICB7CistICAgICAgc3RydWN0IGFsaWFzX21hcCBpdGVtOworLQorLSAgICAgIGl0ZW0uYWxpYXMgPSBuYW1lOworLQorLSAgICAgIGlmIChubWFwID4gMCkKKy0JcmV0dmFsID0gKHN0cnVjdCBhbGlhc19tYXAgKikgYnNlYXJjaCAoJml0ZW0sIG1hcCwgbm1hcCwKKy0JCQkJCSAgICAgICBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApLAorLQkJCQkJICAgICAgIChpbnQgKCopIFBBUkFNUyAoKGNvbnN0IHZvaWQgKiwKKy0JCQkJCQkJCSBjb25zdCB2b2lkICopKQorLQkJCQkJCSkgYWxpYXNfY29tcGFyZSk7CistICAgICAgZWxzZQorLQlyZXR2YWwgPSBOVUxMOworLQorLSAgICAgIC8qIFdlIHJlYWxseSBmb3VuZCBhbiBhbGlhcy4gIFJldHVybiB0aGUgdmFsdWUuICAqLworLSAgICAgIGlmIChyZXR2YWwgIT0gTlVMTCkKKy0JcmV0dXJuIHJldHZhbC0+dmFsdWU7CistCistICAgICAgLyogUGVyaGFwcyB3ZSBjYW4gZmluZCBhbm90aGVyIGFsaWFzIGZpbGUuICAqLworLSAgICAgIGFkZGVkID0gMDsKKy0gICAgICB3aGlsZSAoYWRkZWQgPT0gMCAmJiBsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnXDAnKQorLQl7CistCSAgY29uc3QgY2hhciAqc3RhcnQ7CistCistCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdID09ICc6JykKKy0JICAgICsrbG9jYWxlX2FsaWFzX3BhdGg7CistCSAgc3RhcnQgPSBsb2NhbGVfYWxpYXNfcGF0aDsKKy0KKy0JICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJ1wwJyAmJiBsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnOicpCistCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOworLQorLQkgIGlmIChzdGFydCA8IGxvY2FsZV9hbGlhc19wYXRoKQorLQkgICAgYWRkZWQgPSByZWFkX2FsaWFzX2ZpbGUgKHN0YXJ0LCBsb2NhbGVfYWxpYXNfcGF0aCAtIHN0YXJ0KTsKKy0JfQorLSAgICB9CistICB3aGlsZSAoYWRkZWQgIT0gMCk7CistCistICByZXR1cm4gTlVMTDsKKy19CistCistCistc3RhdGljIHNpemVfdAorLXJlYWRfYWxpYXNfZmlsZSAoZm5hbWUsIGZuYW1lX2xlbikKKy0gICAgIGNvbnN0IGNoYXIgKmZuYW1lOworLSAgICAgaW50IGZuYW1lX2xlbjsKKy17CistI2lmbmRlZiBIQVZFX0FMTE9DQQorLSAgc3RydWN0IGJsb2NrX2xpc3QgKmJsb2NrX2xpc3QgPSBOVUxMOworLSNlbmRpZgorLSAgRklMRSAqZnA7CistICBjaGFyICpmdWxsX2ZuYW1lOworLSAgc2l6ZV90IGFkZGVkOworLSAgc3RhdGljIGNvbnN0IGNoYXIgYWxpYXNmaWxlW10gPSAiL2xvY2FsZS5hbGlhcyI7CistCistICBmdWxsX2ZuYW1lID0gKGNoYXIgKikgYWxsb2NhIChmbmFtZV9sZW4gKyBzaXplb2YgYWxpYXNmaWxlKTsKKy0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZnVsbF9mbmFtZSk7CistICBtZW1jcHkgKGZ1bGxfZm5hbWUsIGZuYW1lLCBmbmFtZV9sZW4pOworLSAgbWVtY3B5ICgmZnVsbF9mbmFtZVtmbmFtZV9sZW5dLCBhbGlhc2ZpbGUsIHNpemVvZiBhbGlhc2ZpbGUpOworLQorLSAgZnAgPSBmb3BlbiAoZnVsbF9mbmFtZSwgInIiKTsKKy0gIGlmIChmcCA9PSBOVUxMKQorLSAgICB7CistICAgICAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLSAgICAgIHJldHVybiAwOworLSAgICB9CistCistICBhZGRlZCA9IDA7CistICB3aGlsZSAoIWZlb2YgKGZwKSkKKy0gICAgeworLSAgICAgIC8qIEl0IGlzIGEgcmVhc29uYWJsZSBhcHByb2FjaCB0byB1c2UgYSBmaXggYnVmZmVyIGhlcmUgYmVjYXVzZQorLQkgYSkgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZmlyc3QgdHdvIGZpZWxkcworLQkgYikgdGhlc2UgZmllbGRzIG11c3QgYmUgdXNhYmxlIGFzIGZpbGUgbmFtZXMgYW5kIHNvIG11c3Qgbm90CistCSAgICBiZSB0aGF0IGxvbmcKKy0gICAgICAgKi8KKy0gICAgICBjaGFyIGJ1ZltCVUZTSVpdOworLSAgICAgIGNoYXIgKmFsaWFzOworLSAgICAgIGNoYXIgKnZhbHVlOworLSAgICAgIGNoYXIgKmNwOworLQorLSAgICAgIGlmIChmZ2V0cyAoYnVmLCBCVUZTSVosIGZwKSA9PSBOVUxMKQorLQkvKiBFT0YgcmVhY2hlZC4gICovCistCWJyZWFrOworLQorLSAgICAgIGNwID0gYnVmOworLSAgICAgIC8qIElnbm9yZSBsZWFkaW5nIHdoaXRlIHNwYWNlLiAgKi8KKy0gICAgICB3aGlsZSAoaXNzcGFjZSAoY3BbMF0pKQorLQkrK2NwOworLQorLSAgICAgIC8qIEEgbGVhZGluZyAnIycgc2lnbmFscyBhIGNvbW1lbnQgbGluZS4gICovCistICAgICAgaWYgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJyMnKQorLQl7CistCSAgYWxpYXMgPSBjcCsrOworLQkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlIChjcFswXSkpCistCSAgICArK2NwOworLQkgIC8qIFRlcm1pbmF0ZSBhbGlhcyBuYW1lLiAgKi8KKy0JICBpZiAoY3BbMF0gIT0gJ1wwJykKKy0JICAgICpjcCsrID0gJ1wwJzsKKy0KKy0JICAvKiBOb3cgbG9vayBmb3IgdGhlIGJlZ2lubmluZyBvZiB0aGUgdmFsdWUuICAqLworLQkgIHdoaWxlIChpc3NwYWNlIChjcFswXSkpCistCSAgICArK2NwOworLQorLQkgIGlmIChjcFswXSAhPSAnXDAnKQorLQkgICAgeworLQkgICAgICBjaGFyICp0cDsKKy0JICAgICAgc2l6ZV90IGxlbjsKKy0KKy0JICAgICAgdmFsdWUgPSBjcCsrOworLQkgICAgICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoY3BbMF0pKQorLQkJKytjcDsKKy0JICAgICAgLyogVGVybWluYXRlIHZhbHVlLiAgKi8KKy0JICAgICAgaWYgKGNwWzBdID09ICdcbicpCistCQl7CistCQkgIC8qIFRoaXMgaGFzIHRvIGJlIGRvbmUgdG8gbWFrZSB0aGUgZm9sbG93aW5nIHRlc3QKKy0JCSAgICAgZm9yIHRoZSBlbmQgb2YgbGluZSBwb3NzaWJsZS4gIFdlIGFyZSBsb29raW5nIGZvcgorLQkJICAgICB0aGUgdGVybWluYXRpbmcgJ1xuJyB3aGljaCBkbyBub3Qgb3ZlcndyaXRlIGhlcmUuICAqLworLQkJICAqY3ArKyA9ICdcMCc7CistCQkgICpjcCA9ICdcbic7CistCQl9CistCSAgICAgIGVsc2UgaWYgKGNwWzBdICE9ICdcMCcpCistCQkqY3ArKyA9ICdcMCc7CistCistCSAgICAgIGlmIChubWFwID49IG1heG1hcCkKKy0JCWV4dGVuZF9hbGlhc190YWJsZSAoKTsKKy0KKy0JICAgICAgLyogV2UgY2Fubm90IGRlcGVuZCBvbiBzdHJkdXAgYXZhaWxhYmxlIGluIHRoZSBsaWJjLiAgU2lnaCEgICovCistCSAgICAgIGxlbiA9IHN0cmxlbiAoYWxpYXMpICsgMTsKKy0JICAgICAgdHAgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistCSAgICAgIGlmICh0cCA9PSBOVUxMKQorLQkJeworLQkJICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCQkgIHJldHVybiBhZGRlZDsKKy0JCX0KKy0JICAgICAgbWVtY3B5ICh0cCwgYWxpYXMsIGxlbik7CistCSAgICAgIG1hcFtubWFwXS5hbGlhcyA9IHRwOworLQorLQkgICAgICBsZW4gPSBzdHJsZW4gKHZhbHVlKSArIDE7CistCSAgICAgIHRwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLQkgICAgICBpZiAodHAgPT0gTlVMTCkKKy0JCXsKKy0JCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLQkJICByZXR1cm4gYWRkZWQ7CistCQl9CistCSAgICAgIG1lbWNweSAodHAsIHZhbHVlLCBsZW4pOworLQkgICAgICBtYXBbbm1hcF0udmFsdWUgPSB0cDsKKy0KKy0JICAgICAgKytubWFwOworLQkgICAgICArK2FkZGVkOworLQkgICAgfQorLQl9CistCistICAgICAgLyogUG9zc2libHkgbm90IHRoZSB3aG9sZSBsaW5lIGZpdHMgaW50byB0aGUgYnVmZmVyLiAgSWdub3JlCistCSB0aGUgcmVzdCBvZiB0aGUgbGluZS4gICovCistICAgICAgd2hpbGUgKHN0cmNociAoY3AsICdcbicpID09IE5VTEwpCistCXsKKy0JICBjcCA9IGJ1ZjsKKy0JICBpZiAoZmdldHMgKGJ1ZiwgQlVGU0laLCBmcCkgPT0gTlVMTCkKKy0JICAgIC8qIE1ha2Ugc3VyZSB0aGUgaW5uZXIgbG9vcCB3aWxsIGJlIGxlZnQuICBUaGUgb3V0ZXIgbG9vcAorLQkgICAgICAgd2lsbCBleGl0IGF0IHRoZSBgZmVvZicgdGVzdC4gICovCistCSAgICAqY3AgPSAnXG4nOworLQl9CistICAgIH0KKy0KKy0gIC8qIFNob3VsZCB3ZSB0ZXN0IGZvciBmZXJyb3IoKT8gIEkgdGhpbmsgd2UgaGF2ZSB0byBzaWxlbnRseSBpZ25vcmUKKy0gICAgIGVycm9ycy4gIC0tZHJlcHBlciAgKi8KKy0gIGZjbG9zZSAoZnApOworLQorLSAgaWYgKGFkZGVkID4gMCkKKy0gICAgcXNvcnQgKG1hcCwgbm1hcCwgc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSwKKy0JICAgKGludCAoKikgUEFSQU1TICgoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSkgYWxpYXNfY29tcGFyZSk7CistCistICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistICByZXR1cm4gYWRkZWQ7CistfQorLQorLQorLXN0YXRpYyB2b2lkCistZXh0ZW5kX2FsaWFzX3RhYmxlICgpCisteworLSAgc2l6ZV90IG5ld19zaXplOworLSAgc3RydWN0IGFsaWFzX21hcCAqbmV3X21hcDsKKy0KKy0gIG5ld19zaXplID0gbWF4bWFwID09IDAgPyAxMDAgOiAyICogbWF4bWFwOworLSAgbmV3X21hcCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIG1hbGxvYyAobmV3X3NpemUKKy0JCQkJCSAqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpOworLSAgaWYgKG5ld19tYXAgPT0gTlVMTCkKKy0gICAgLyogU2ltcGx5IGRvbid0IGV4dGVuZDogd2UgZG9uJ3QgaGF2ZSBhbnkgbW9yZSBjb3JlLiAgKi8KKy0gICAgcmV0dXJuOworLQorLSAgbWVtY3B5IChuZXdfbWFwLCBtYXAsIG5tYXAgKiBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApKTsKKy0KKy0gIGlmIChtYXhtYXAgIT0gMCkKKy0gICAgZnJlZSAobWFwKTsKKy0KKy0gIG1hcCA9IG5ld19tYXA7CistICBtYXhtYXAgPSBuZXdfc2l6ZTsKKy19CistCistCistc3RhdGljIGludAorLWFsaWFzX2NvbXBhcmUgKG1hcDEsIG1hcDIpCistICAgICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxOworLSAgICAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMjsKKy17CistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkNBU0VDTVAKKy0gIHJldHVybiBzdHJjYXNlY21wIChtYXAxLT5hbGlhcywgbWFwMi0+YWxpYXMpOworLSNlbHNlCistICBjb25zdCB1bnNpZ25lZCBjaGFyICpwMSA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1hcDEtPmFsaWFzOworLSAgY29uc3QgdW5zaWduZWQgY2hhciAqcDIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBtYXAyLT5hbGlhczsKKy0gIHVuc2lnbmVkIGNoYXIgYzEsIGMyOworLQorLSAgaWYgKHAxID09IHAyKQorLSAgICByZXR1cm4gMDsKKy0KKy0gIGRvCistICAgIHsKKy0gICAgICAvKiBJIGtub3cgdGhpcyBzZWVtcyB0byBiZSBvZGQgYnV0IHRoZSB0b2xvd2VyKCkgZnVuY3Rpb24gaW4KKy0JIHNvbWUgc3lzdGVtcyBsaWJjIGNhbm5vdCBoYW5kbGUgbm9uYWxwaGEgY2hhcmFjdGVycy4gICovCistICAgICAgYzEgPSBpc3VwcGVyICgqcDEpID8gdG9sb3dlciAoKnAxKSA6ICpwMTsKKy0gICAgICBjMiA9IGlzdXBwZXIgKCpwMikgPyB0b2xvd2VyICgqcDIpIDogKnAyOworLSAgICAgIGlmIChjMSA9PSAnXDAnKQorLQlicmVhazsKKy0gICAgICArK3AxOworLSAgICAgICsrcDI7CistICAgIH0KKy0gIHdoaWxlIChjMSA9PSBjMik7CistCistICByZXR1cm4gYzEgLSBjMjsKKy0jZW5kaWYKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9NYWtlZmlsZS5pbiBscnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4JMTk5OC0wNC0yNiAxNDoyMjozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDIxNCArMCwwIEBACistIyBNYWtlZmlsZSBmb3IgZGlyZWN0b3J5IHdpdGggbWVzc2FnZSBjYXRhbG9nIGhhbmRsaW5nIGluIEdOVSBOTFMgVXRpbGl0aWVzLgorLSMgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistCistUEFDS0FHRSA9IEBQQUNLQUdFQAorLVZFUlNJT04gPSBAVkVSU0lPTkAKKy0KKy1TSEVMTCA9IC9iaW4vc2gKKy0KKy1zcmNkaXIgPSBAc3JjZGlyQAorLXRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKKy10b3BfYnVpbGRkaXIgPSAuLgorLVZQQVRIID0gQHNyY2RpckAKKy0KKy1wcmVmaXggPSBAcHJlZml4QAorLWV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAorLXRyYW5zZm9ybSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAorLWxpYmRpciA9ICQoZXhlY19wcmVmaXgpL2xpYgorLWluY2x1ZGVkaXIgPSAkKHByZWZpeCkvaW5jbHVkZQorLWRhdGFkaXIgPSAkKHByZWZpeCkvQERBVEFESVJOQU1FQAorLWxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCistZ251bG9jYWxlZGlyID0gJChwcmVmaXgpL3NoYXJlL2xvY2FsZQorLWdldHRleHRzcmNkaXIgPSBAZGF0YWRpckAvZ2V0dGV4dC9pbnRsCistYWxpYXNwYXRoID0gJChsb2NhbGVkaXIpOi4KKy1zdWJkaXIgPSBpbnRsCistCistSU5TVEFMTCA9IEBJTlNUQUxMQAorLUlOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACistTUtJTlNUQUxMRElSUyA9IEBNS0lOU1RBTExESVJTQAorLQorLWwgPSBAbEAKKy0KKy1BUiA9IGFyCistQ0MgPSBAQ0NACistTElCVE9PTCA9IEBMSUJUT09MQAorLVJBTkxJQiA9IEBSQU5MSUJACistCistREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURHTlVMT0NBTEVESVI9XCIkKGdudWxvY2FsZWRpcilcIiBcCistLURMT0NBTEVfQUxJQVNfUEFUSD1cIiQoYWxpYXNwYXRoKVwiIEBERUZTQAorLUNQUEZMQUdTID0gQENQUEZMQUdTQAorLUNGTEFHUyA9IEBDRkxBR1NACistTERGTEFHUyA9IEBMREZMQUdTQAorLQorLUNPTVBJTEUgPSAkKENDKSAtYyAkKERFRlMpICQoSU5DTFVERVMpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKFhDRkxBR1MpCistCistSEVBREVSUyA9ICQoQ09NSERSUykgbGliZ2V0dGV4dC5oIGxvYWRpbmZvLmgKKy1DT01IRFJTID0gZ2V0dGV4dC5oIGdldHRleHRQLmggaGFzaC1zdHJpbmcuaAorLVNPVVJDRVMgPSAkKENPTVNSQ1MpIGludGwtY29tcGF0LmMgY2F0LWNvbXBhdC5jCistQ09NU1JDUyA9IGJpbmR0ZXh0ZG9tLmMgZGNnZXR0ZXh0LmMgZGdldHRleHQuYyBnZXR0ZXh0LmMgXAorLWZpbmRkb21haW4uYyBsb2FkbXNnY2F0LmMgbG9jYWxlYWxpYXMuYyB0ZXh0ZG9tYWluLmMgbDEwbmZsaXN0LmMgXAorLWV4cGxvZGVuYW1lLmMKKy1PQkpFQ1RTID0gQElOVExPQkpTQCBiaW5kdGV4dGRvbS4kbG8gZGNnZXR0ZXh0LiRsbyBkZ2V0dGV4dC4kbG8gZ2V0dGV4dC4kbG8gXAorLWZpbmRkb21haW4uJGxvIGxvYWRtc2djYXQuJGxvIGxvY2FsZWFsaWFzLiRsbyB0ZXh0ZG9tYWluLiRsbyBsMTBuZmxpc3QuJGxvIFwKKy1leHBsb2RlbmFtZS4kbG8KKy1DQVRPQkpTID0gY2F0LWNvbXBhdC4kbG8gLi4vcG8vY2F0LWlkLXRibC4kbG8KKy1HRVRUT0JKUyA9IGludGwtY29tcGF0LiRsbworLURJU1RGSUxFUy5jb21tb24gPSBDaGFuZ2VMb2cgTWFrZWZpbGUuaW4gbGludXgtbXNnLnNlZCBwbzJ0Ymwuc2VkLmluIFwKKy14b3Blbi1tc2cuc2VkICQoSEVBREVSUykgJChTT1VSQ0VTKQorLURJU1RGSUxFUy5ub3JtYWwgPSBWRVJTSU9OCistRElTVEZJTEVTLmdldHRleHQgPSBsaWJpbnRsLmdsaWJjIGludGxoLmluc3QuaW4KKy0KKy0uU1VGRklYRVM6CistLlNVRkZJWEVTOiAuYyAubyAubG8KKy0uYy5vOgorLQkkKENPTVBJTEUpICQ8CistLmMubG86CistCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkPAorLQorLUlOQ0xVREVTID0gLUkuLiAtSS4gLUkkKHRvcF9zcmNkaXIpL2ludGwgLUkkKHRvcF9zcmNkaXIpL2xpYgorLQorLWFsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKKy0KKy1hbGwteWVzOiBsaWJpbnRsLiRsYSBpbnRsaC5pbnN0CistYWxsLW5vOgorLQorLWxpYmludGwuYTogJChPQkpFQ1RTKQorLQlybSAtZiAkQAorLQkkKEFSKSBjcnUgJEAgJChPQkpFQ1RTKQorLQkkKFJBTkxJQikgJEAKKy0KKy1saWJpbnRsLmxhOiAkKE9CSkVDVFMpCistCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgJChMREZMQUdTKSAtbyAkQCAkKE9CSkVDVFMpIFwKKy0JCSAgIC12ZXJzaW9uLWluZm8gMTowIC1ycGF0aCAkKGxpYmRpcikKKy0KKy0uLi9wby9jYXQtaWQtdGJsLiRsbzogLi4vcG8vY2F0LWlkLXRibC5jICQodG9wX3NyY2RpcikvcG8vJChQQUNLQUdFKS5wb3QKKy0JY2QgLi4vcG8gJiYgJChNQUtFKSBjYXQtaWQtdGJsLiRsbworLQorLWNoZWNrOiBhbGwKKy0KKy0jIFRoaXMgaW5zdGFsbGF0aW9uIGdvYWwgaXMgb25seSB1c2VkIGluIEdOVSBnZXR0ZXh0LiAgUGFja2FnZXMgd2hpY2gKKy0jIG9ubHkgdXNlIHRoZSBsaWJyYXJ5IHNob3VsZCB1c2UgaW5zdGFsbCBpbnN0ZWFkLgorLQorLSMgV2UgbXVzdCBub3QgaW5zdGFsbCB0aGUgbGliaW50bC5oL2xpYmludGwuYSBmaWxlcyBpZiB3ZSBhcmUgb24gYQorLSMgc3lzdGVtIHdoaWNoIGhhcyB0aGUgZ2V0dGV4dCgpIGZ1bmN0aW9uIGluIGl0cyBDIGxpYnJhcnkgb3IgaW4gYQorLSMgc2VwYXJhdGUgbGlicmFyeSBvciB1c2UgdGhlIGNhdGdldHMgaW50ZXJmYWNlLiAgQSBzcGVjaWFsIGNhc2UgaXMKKy0jIHdoZXJlIGNvbmZpZ3VyZSBmb3VuZCBhIHByZXZpb3VzbHkgaW5zdGFsbGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCistIyBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIG9uZSB3aGljaCBjb21lcyB3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUKKy0jIHBhY2thZ2UsIHlvdSBoYXZlIHRvIHVzZSBgY29uZmlndXJlIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0Jy4KKy1pbnN0YWxsOiBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1kYXRhCistaW5zdGFsbC1leGVjOiBhbGwKKy0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCIgXAorLQkgICAmJiB0ZXN0ICdASU5UTE9CSlNAJyA9ICckKEdFVFRPQkpTKSc7IHRoZW4gXAorLQkgIGlmIHRlc3QgLXIgJChNS0lOU1RBTExESVJTKTsgdGhlbiBcCistCSAgICAkKE1LSU5TVEFMTERJUlMpICQobGliZGlyKSAkKGluY2x1ZGVkaXIpOyBcCistCSAgZWxzZSBcCistCSAgICAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChsaWJkaXIpICQoaW5jbHVkZWRpcik7IFwKKy0JICBmaTsgXAorLQkgICQoSU5TVEFMTF9EQVRBKSBpbnRsaC5pbnN0ICQoaW5jbHVkZWRpcikvbGliaW50bC5oOyBcCistCSAgJChJTlNUQUxMX0RBVEEpIGxpYmludGwuYSAkKGxpYmRpcikvbGliaW50bC5hOyBcCistCWVsc2UgXAorLQkgIDogOyBcCistCWZpCistaW5zdGFsbC1kYXRhOiBhbGwKKy0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCI7IHRoZW4gXAorLQkgIGlmIHRlc3QgLXIgJChNS0lOU1RBTExESVJTKTsgdGhlbiBcCistCSAgICAkKE1LSU5TVEFMTERJUlMpICQoZ2V0dGV4dHNyY2Rpcik7IFwKKy0JICBlbHNlIFwKKy0JICAgICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKGdldHRleHRzcmNkaXIpOyBcCistCSAgZmk7IFwKKy0JICAkKElOU1RBTExfREFUQSkgVkVSU0lPTiAkKGdldHRleHRzcmNkaXIpL1ZFUlNJT047IFwKKy0JICBkaXN0cz0iJChESVNURklMRVMuY29tbW9uKSI7IFwKKy0JICBmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCistCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSAkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorLQkgIGRvbmU7IFwKKy0JZWxzZSBcCistCSAgOiA7IFwKKy0JZmkKKy0KKy0jIERlZmluZSB0aGlzIGFzIGVtcHR5IHVudGlsIEkgZm91bmQgYSB1c2VmdWwgYXBwbGljYXRpb24uCistaW5zdGFsbGNoZWNrOgorLQorLXVuaW5zdGFsbDoKKy0JZGlzdHM9IiQoRElTVEZJTEVTLmNvbW1vbikiOyBcCistCWZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKKy0JICBybSAtZiAkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorLQlkb25lCistCistaW5mbyBkdmk6CistCistJChPQkpFQ1RTKTogLi4vY29uZmlnLmggbGliZ2V0dGV4dC5oCistYmluZHRleHRkb20uJGxvIGZpbmRkb21haW4uJGxvIGxvYWRtc2djYXQuJGxvOiBnZXR0ZXh0UC5oIGdldHRleHQuaCBsb2FkaW5mby5oCistZGNnZXR0ZXh0LiRsbzogZ2V0dGV4dFAuaCBnZXR0ZXh0LmggaGFzaC1zdHJpbmcuaCBsb2FkaW5mby5oCistCistdGFnczogVEFHUworLQorLVRBR1M6ICQoSEVBREVSUykgJChTT1VSQ0VTKQorLQloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgZXRhZ3MgLW8gJCRoZXJlL1RBR1MgJChIRUFERVJTKSAkKFNPVVJDRVMpCistCistaWQ6IElECistCistSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKQorLQloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgbWtpZCAtZiQkaGVyZS9JRCAkKEhFQURFUlMpICQoU09VUkNFUykKKy0KKy0KKy1tb3N0bHljbGVhbjoKKy0Jcm0gLWYgKi5hICoubyAqLmxvIGNvcmUgY29yZS4qCistCistY2xlYW46IG1vc3RseWNsZWFuCistCistZGlzdGNsZWFuOiBjbGVhbgorLQlybSAtZiBNYWtlZmlsZSBJRCBUQUdTIHBvMm1zZy5zZWQgcG8ydGJsLnNlZCBsaWJpbnRsLmgKKy0KKy1tYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KKy0JQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKKy0JQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorLQorLQorLSMgR05VIGdldHRleHQgbmVlZHMgbm90IGNvbnRhaW4gdGhlIGZpbGUgYFZFUlNJT04nIGJ1dCBjb250YWlucyBzb21lCistIyBvdGhlciBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkIGluIG90aGVyIHBhY2thZ2VzLgorLWRpc3RkaXIgPSAuLi8kKFBBQ0tBR0UpLSQoVkVSU0lPTikvJChzdWJkaXIpCistZGlzdCBkaXN0ZGlyOiBNYWtlZmlsZSAkKERJU1RGSUxFUykKKy0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSBnZXR0ZXh0OyB0aGVuIFwKKy0JICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5nZXR0ZXh0KSI7IFwKKy0JZWxzZSBcCistCSAgYWRkaXRpb25hbD0iJChESVNURklMRVMubm9ybWFsKSI7IFwKKy0JZmk7IFwKKy0JZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSAkJGFkZGl0aW9uYWw7IGRvIFwKKy0JICBsbiAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgMj4gL2Rldi9udWxsIFwKKy0JICAgIHx8IGNwIC1wICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKTsgXAorLQlkb25lCistCistZGlzdC1saWJjOgorLQl0YXIgemN2ZiBpbnRsLWdsaWJjLnRhci5neiAkKENPTVNSQ1MpICQoQ09NSERSUykgbGliaW50bC5oLmdsaWJjCistCistTWFrZWZpbGU6IE1ha2VmaWxlLmluIC4uL2NvbmZpZy5zdGF0dXMKKy0JY2QgLi4gXAorLQkgICYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cworLQorLSMgVGhlIGRlcGVuZGVuY3kgZm9yIGludGxoLmluc3QgaXMgZGlmZmVyZW50IGluIGdldHRleHQgYW5kIGFsbCBvdGhlcgorLSMgcGFja2FnZXMuICBCZWNhdXNlIHdlIGNhbm5vdCB5b3UgR05VIG1ha2UgZmVhdHVyZXMgd2UgaGF2ZSB0byBzb2x2ZQorLSMgdGhlIHByb2JsZW0gd2hpbGUgcmV3cml0aW5nIE1ha2VmaWxlLmluLgorLUBHVF9ZRVNAaW50bGguaW5zdDogaW50bGguaW5zdC5pbiAuLi9jb25maWcuc3RhdHVzCistQEdUX1lFU0AJY2QgLi4gXAorLUBHVF9ZRVNACSYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9IFwKKy1AR1RfWUVTQAkgICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cworLUBHVF9OT0AuUEhPTlk6IGludGxoLmluc3QKKy1AR1RfTk9AaW50bGguaW5zdDoKKy0KKy0jIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgorLSMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgorLS5OT0VYUE9SVDoKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4gbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvcG8ydGJsLnNlZC5pbgkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbzJ0Ymwuc2VkLmluCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDIgKzAsMCBAQAorLSMgcG8ydGJsLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gbG9va3VwIHRhYmxlIGZvciBjYXRnZXRzCistIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKy0jCistMSB7CistICBpXAorLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHBvMnRibC5zZWQgZnJvbSBAUEFDS0FHRSBOQU1FQC5wb3QuICAqL1wKKy1cCistI2lmIEhBVkVfQ09ORklHX0hcCistIyBpbmNsdWRlIDxjb25maWcuaD5cCistI2VuZGlmXAorLVwKKy0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIlwKKy1cCistY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW10gPSB7CistICBoCistICBzLy4qLzAvCistICB4CistfQorLSMKKy0jIFdyaXRlIG1zZ2lkIGVudHJpZXMgaW4gQyBhcnJheSBmb3JtLgorLSMKKy0vXm1zZ2lkLyB7CistICBzL21zZ2lkWyAJXSpcKCIuKiJcKS8gIHtcMS8KKy0gIHRiCistIyBBcHBlbmQgdGhlIG5leHQgbGluZQorLSAgOmIKKy0gIE4KKy0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBjb250aW51YXRpb24gbGluZS4KKy0gIHMvXCguKlwpIlwoXG5cKSJcKC4qIlwpL1wxXDJcMy8KKy0jIFllcywgdGhlbiBicmFuY2guCistICB0YQorLSMgQmVjYXVzZSB3ZSBhc3N1bWUgdGhhdCB0aGUgaW5wdXQgZmlsZSBjb3JyZWN0bHkgZm9ybWVkIHRoZSBsaW5lCistIyBqdXN0IHJlYWQgY2Fubm90IGJlIGFnYWluIGJlIGEgbXNnaWQgbGluZS4gIFNvIGl0J3Mgc2FmZSB0byBpZ25vcmUKKy0jIGl0LgorLSAgcy9cKC4qXClcbi4qL1wxLworLSAgYmMKKy0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCistICA6YQorLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCistICBQCistIyBXZSBjYW5ub3QgdXNlIEQgaGVyZS4KKy0gIHMvLipcblwoLipcKS9cMS8KKy0jIFNvbWUgYnVnZ3kgc2VkcyBkbyBub3QgY2xlYXIgdGhlIGBzdWNjZXNzZnVsIHN1YnN0aXR1dGlvbiBzaW5jZSBsYXN0IGBgdCcnJworLSMgZmxhZyBvbiBgTicsIHNvIHdlIGRvIGEgYHQnIGhlcmUgdG8gY2xlYXIgaXQuCistICB0YgorLSMgTm90IHJlYWNoZWQKKy0gIDpjCistICB4CistIyBUaGUgZm9sbG93aW5nIG5pY2Ugc29sdXRpb24gaXMgYnkKKy0jIEJydW5vIDxIYWlibGVAbWEyczIubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgorLSAgdGQKKy0jIEluY3JlbWVudCBhIGRlY2ltYWwgbnVtYmVyIGluIHBhdHRlcm4gc3BhY2UuCistIyBGaXJzdCBoaWRlIHRyYWlsaW5nIGA5JyBkaWdpdHMuCistICA6ZAorLSAgcy85XChfKlwpJC9fXDEvCistICB0ZAorLSMgQXNzdXJlIGF0IGxlYXN0IG9uZSBkaWdpdCBpcyBhdmFpbGFibGUuCistICBzL15cKF8qXCkkLzBcMS8KKy0jIEluY3JlbWVudCB0aGUgbGFzdCBkaWdpdC4KKy0gIHMvOFwoXypcKSQvOVwxLworLSAgcy83XChfKlwpJC84XDEvCistICBzLzZcKF8qXCkkLzdcMS8KKy0gIHMvNVwoXypcKSQvNlwxLworLSAgcy80XChfKlwpJC81XDEvCistICBzLzNcKF8qXCkkLzRcMS8KKy0gIHMvMlwoXypcKSQvM1wxLworLSAgcy8xXChfKlwpJC8yXDEvCistICBzLzBcKF8qXCkkLzFcMS8KKy0jIENvbnZlcnQgdGhlIGhpZGRlbiBgOScgZGlnaXRzIHRvIGAwJ3MuCistICBzL18vMC9nCistICB4CistICBHCistICBzL1woLipcKVxuXChbMC05XSpcKS9cMSwgXDJ9LC8KKy0gIHMvXCguKlwpIiQvXDEvCistICBwCistfQorLSMKKy0jIExhc3QgbGluZS4KKy0jCistJCB7CistICBpXAorLX07XAorLQorLSAgZworLSAgcy8wKlwoLipcKS9pbnQgX21zZ190YmxfbGVuZ3RoID0gXDE7L3AKKy19CistZAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvdGV4dGRvbWFpbi5jIGxyenN6LTAuMTIuMjAvaW50bC90ZXh0ZG9tYWluLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvdGV4dGRvbWFpbi5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL3RleHRkb21haW4uYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTA2ICswLDAgQEAKKy0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGV4dGRvbWFpbigzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSMgaWZuZGVmIG1lbWNweQorLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgdGV4dCBkb21haW4uICAqLworLWV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW107CistCistLyogRGVmYXVsdCB0ZXh0IGRvbWFpbiBpbiB3aGljaCBlbnRyaWVzIGZvciBnZXR0ZXh0KDMpIGFyZSB0byBiZSBmb3VuZC4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworLQorLQorLS8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKKy0gICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCistICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCistICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBURVhURE9NQUlOIF9fdGV4dGRvbWFpbgorLSMgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCistI2Vsc2UKKy0jIGRlZmluZSBURVhURE9NQUlOIHRleHRkb21haW5fXworLSNlbmRpZgorLQorLS8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgorLSAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCistICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCistY2hhciAqCistVEVYVERPTUFJTiAoZG9tYWlubmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CisteworLSAgY2hhciAqb2xkOworLQorLSAgLyogQSBOVUxMIHBvaW50ZXIgcmVxdWVzdHMgdGhlIGN1cnJlbnQgc2V0dGluZy4gICovCistICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47CistCistICBvbGQgPSAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKy0KKy0gIC8qIElmIGRvbWFpbiBuYW1lIGlzIHRoZSBudWxsIHN0cmluZyBzZXQgdG8gZGVmYXVsdCBkb21haW4gIm1lc3NhZ2VzIi4gICovCistICBpZiAoZG9tYWlubmFtZVswXSA9PSAnXDAnCistICAgICAgfHwgc3RyY21wIChkb21haW5uYW1lLCBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikgPT0gMCkKKy0gICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgIC8qIElmIHRoZSBmb2xsb3dpbmcgbWFsbG9jIGZhaWxzIGBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbicKKy0JIHdpbGwgYmUgTlVMTC4gIFRoaXMgdmFsdWUgd2lsbCBiZSByZXR1cm5lZCBhbmQgc28gc2lnbmFscyB3ZQorLQkgYXJlIG91dCBvZiBjb3JlLiAgKi8KKy0jaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCistICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBzdHJkdXAgKGRvbWFpbm5hbWUpOworLSNlbHNlCistICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSkgKyAxOworLSAgICAgIGNoYXIgKmNwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLSAgICAgIGlmIChjcCAhPSBOVUxMKQorLQltZW1jcHkgKGNwLCBkb21haW5uYW1lLCBsZW4pOworLSAgICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gY3A7CistI2VuZGlmCistICAgIH0KKy0KKy0gIGlmIChvbGQgIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCistICAgIGZyZWUgKG9sZCk7CistCistICByZXR1cm4gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47CistfQorLQorLSNpZmRlZiBfTElCQworLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLworLXdlYWtfYWxpYXMgKF9fdGV4dGRvbWFpbiwgdGV4dGRvbWFpbik7CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OIGxyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL1ZFUlNJT04JMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvVkVSU0lPTgkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEgKzAsMCBAQAorLUdOVSBnZXR0ZXh0IGxpYnJhcnkgZnJvbSBnZXR0ZXh0LTAuMTAuMzIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3hvcGVuLW1zZy5zZWQgbHJ6c3otMC4xMi4yMC9pbnRsL3hvcGVuLW1zZy5zZWQKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwveG9wZW4tbXNnLnNlZAkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC94b3Blbi1tc2cuc2VkCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDQgKzAsMCBAQAorLSMgcG8ybXNnLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gWC9PcGVuIHN0eWxlIC5tc2cgZmlsZQorLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistIworLSMKKy0jIFRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIC5tc2cgc2hvdWxkIGJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZQorLSMgbWVzc2FnZSBzZXQgbnVtYmVyLiAgV2UgdXNlIGFsd2F5cyBzZXQgbnVtYmVyIDEuCistIworLTEgeworLSAgaVwKKy0kc2V0IDEgIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgcG8ybXNnLnNlZAorLSAgaAorLSAgcy8uKi8wLworLSAgeAorLX0KKy0jCistIyBXZSBjb3B5IGFsbCBjb21tZW50cyBpbnRvIHRoZSAubXNnIGZpbGUuICBQZXJoYXBzIHRoZXkgY2FuIGhlbHAuCistIworLS9eIy8gcy9eI1sgCV0qLyQgL3AKKy0jCistIyBXZSBjb3B5IHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFzIGEgY29tbWVudCBpbnRvIHRoZSAubXNnIGZpbGUuCistIworLS9ebXNnaWQvIHsKKy0jIERvZXMgbm90IHdvcmsgbm93CistIyAgLyIkLyEgeworLSMgICAgcy9cXCQvLworLSMgICAgcy8kLyAuLi4gKG1vcmUgbGluZXMgZm9sbG93aW5nKSIvCistIyAgfQorLSAgcy9ebXNnaWRbIAldKiJcKC4qXCkiJC8kIE9yaWdpbmFsIE1lc3NhZ2U6IFwxLworLSAgcAorLX0KKy0jCistIyBUaGUgLm1zZyBmaWxlIGNvbnRhaW5zLCBvdGhlciB0aGVuIHRoZSAucG8gZmlsZSwgb25seSB0aGUgdHJhbnNsYXRpb25zCistIyBidXQgZWFjaCBnaXZlbiBhIHVuaXF1ZSBJRC4gIFN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGJ5IDEgZm9yCistIyBlYWNoIG1lc3NhZ2Ugd2UgYXNzaWduIHRoZW0gdG8gdGhlIG1lc3NhZ2VzLgorLSMgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIC5wbyBmaWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNhdC1pZC10YmwuYyBmaWxlCistIyAod2l0aCBwby10by10YmwpIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBoZXJlLiAgKEF0IGxlYXN0IHRoZSBvcmRlcgorLSMgb2YgZGVjbGFyYXRpb25zIG11c3Qgbm90IGJlIGNoYW5nZWQuKQorLSMKKy0vXm1zZ3N0ci8geworLSAgcy9tc2dzdHJbIAldKiJcKC4qXCkiL1wxLworLSAgeAorLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5CistIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KKy0gIHRkCistIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgorLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgorLSAgOmQKKy0gIHMvOVwoXypcKSQvX1wxLworLSAgdGQKKy0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgorLSAgcy9eXChfKlwpJC8wXDEvCistIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCistICBzLzhcKF8qXCkkLzlcMS8KKy0gIHMvN1woXypcKSQvOFwxLworLSAgcy82XChfKlwpJC83XDEvCistICBzLzVcKF8qXCkkLzZcMS8KKy0gIHMvNFwoXypcKSQvNVwxLworLSAgcy8zXChfKlwpJC80XDEvCistICBzLzJcKF8qXCkkLzNcMS8KKy0gIHMvMVwoXypcKSQvMlwxLworLSAgcy8wXChfKlwpJC8xXDEvCistIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgorLSAgcy9fLzAvZworLSAgeAorLSMgQnJpbmcgdGhlIGxpbmUgaW4gdGhlIGZvcm1hdCBgPG51bWJlcj4gPG1lc3NhZ2U+JworLSAgRworLSAgcy9eW15cbl0qJC8mIC8KKy0gIHMvXCguKlwpXG5cKFswLTldKlwpL1wyIFwxLworLSMgQ2xlYXIgZmxhZyBmcm9tIGxhc3Qgc3Vic3RpdHV0aW9uLgorLSAgdGIKKy0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lLgorLSAgOmIKKy0gIE4KKy0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBhIGNvbnRpbnVhdGlvbiBsaW5lLgorLSAgcy9cKC4qXG5cKSJcKC4qXCkiL1wxXDIvCistIyBZZXMsIHRoZW4gYnJhbmNoLgorLSAgdGEKKy0gIFAKKy0gIEQKKy0jIE5vdGUgdGhhdCBgRCcgaW5jbHVkZXMgYSBqdW1wIHRvIHRoZSBzdGFydCEhCistIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgorLSAgOmEKKy0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLworLSAgUAorLSMgV2UgY2Fubm90IHVzZSB0aGUgc2VkIGNvbW1hbmQgYEQnIGhlcmUKKy0gIHMvLipcblwoLipcKS9cMS8KKy0gIHRiCistfQorLWQKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0gbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2xpYi9NYWtlZmlsZS5hbQkxOTk4LTEyLTI3IDE2OjI1OjI2LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCTIwMTktMTEtMjUgMTY6MjI6MzQuMDAwMDAwMDAwICswMDAwCitAQCAtMSw2ICsxLDQgQEAKKyBub2luc3RfTElCUkFSSUVTPWxpYnptb2RlbS5hCistQ0ZMQUdTPUBDRkxBR1NACistQVVUT01BS0VfT1BUSU9OUz1hbnNpMmtucgorIAorIEVYVFJBX0RJU1QgPSBhbGxvY2EuYyBhbnNpMmtuci4xIGFuc2kya25yLmMgXAorIAlnZXRvcHQuYyBnZXRvcHQxLmMgbWtkaXIuYyBta3RpbWUuYyBcCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvTWFrZWZpbGUuYW0gbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5hbQorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvTWFrZWZpbGUuYW0JMTk5OC0xMi0zMCAxMToxOTo0MC4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL01ha2VmaWxlLmFtCTIwMTktMTEtMjYgMTE6NDc6MjkuMDAwMDAwMDAwICswMDAwCitAQCAtMSw1ICsxLDUgQEAKKy1TVUJESVJTID0gbGliIGludGwgc3JjIHBvIG1hbiB0ZXN0c3VpdGUKKy1FWFRSQV9ESVNUID0gY2hlY2subHJ6c3ogQ09NUEFUQUJJTElUWSBSRUFETUUuY3ZzIFJFQURNRS5pc2RuNGxpbnV4IFwKKytTVUJESVJTID0gbGliIHNyYyBwbyBtYW4gdGVzdHN1aXRlCisrRVhUUkFfRElTVCA9IGNvbmZpZy5ycGF0aCBtNC9DaGFuZ2VMb2cgIGNoZWNrLmxyenN6IENPTVBBVEFCSUxJVFkgUkVBRE1FLmN2cyBSRUFETUUuaXNkbjRsaW51eCBcCisgCVJFQURNRS5nZXR0ZXh0IHJwbXJjIGJ1aWxkcnBtIHN5c3R5cGUuaW4gZmFzdGNoZWNrLnNoIFJFQURNRS50ZXN0cyBcCisgCWJlb3MtcnVucGlwZWQuYyBmYXN0Y2hlY2suYmVvcworIG5vaW5zdF9TQ1JJUFRTPXN5c3R5cGUKK0BAIC03LDcgKzcsNiBAQCBQUj1AUEFDS0FHRUAtQFZFUlNJT05ACisgQ0xFQU5fRklMRVM9ZmFzdGNoZWNrLmRvbmUKKyAKKyBkaXN0LWhvb2s6CistCW1rZGlyICQoZGlzdGRpcikvZGViaWFuCisgCWNwIC1mYSAkKHNyY2RpcikvZGViaWFuL2NoYW5nZWxvZyAgJChkaXN0ZGlyKS9kZWJpYW4vCisgCWNwIC1mYSAkKHNyY2RpcikvZGViaWFuL2NvbnRyb2wgICQoZGlzdGRpcikvZGViaWFuLworIAljcCAtZmEgJChzcmNkaXIpL2RlYmlhbi9jb3B5cmlnaHQgICQoZGlzdGRpcikvZGViaWFuLworQEAgLTgzLDMgKzgyLDUgQEAgY3ZzLWRpc3Q6CisgcnBtOiAkKFBSKS50YXIuZ3ogU3BlY2ZpbGUKKyAJJChzcmNkaXIpL2J1aWxkcnBtICQoc3JjZGlyKQorIAorKworK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vY2F0LWlkLXRibC5jIGxyenN6LTAuMTIuMjAvcG8vY2F0LWlkLXRibC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9jYXQtaWQtdGJsLmMJMTk5OC0xMi0yOSAwOToyNDoyNC4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL2NhdC1pZC10YmwuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMjM0ICswLDAgQEAKKy0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBwbzJ0Ymwuc2VkIGZyb20gbHJ6c3oucG90LiAgKi8KKy0KKy0jaWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImxpYmdldHRleHQuaCIKKy0KKy1jb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXSA9IHsKKy0gIHsiIiwgMX0sCistICB7ImlvX21vZGUoLDIpIGluIHJic2IuYyBub3QgaW1wbGVtZW50ZWRcbiIsIDJ9LAorLSAgeyJjYXVnaHQgc2lnbmFsICVkOyBleGl0aW5nIiwgM30sCistICB7ImNvbW1hbmQgdHJpZXMiLCA0fSwKKy0gIHsicGFja2V0bGVuZ3RoIiwgNX0sCistICB7InBhY2tldGxlbmd0aCBvdXQgb2YgcmFuZ2UgMjQuLiVsZCIsIDZ9LAorLSAgeyJmcmFtZWxlbmd0aCIsIDd9LAorLSAgeyJmcmFtZWxlbmd0aCBvdXQgb2YgcmFuZ2UgMzIuLiVsZCIsIDh9LAorLSAgeyJtaW5fYnBzIiwgOX0sCistICB7Im1pbl9icHMgbXVzdCBiZSA+PSAwIiwgMTB9LAorLSAgeyJtaW5fYnBzX3RpbWUiLCAxMX0sCistICB7Im1pbl9icHNfdGltZSBtdXN0IGJlID4gMSIsIDEyfSwKKy0gIHsiaG91ciB0byBsYXJnZSAoMC4uMjMpIiwgMTN9LAorLSAgeyJ1bnBhcnNhYmxlIHN0b3AgdGltZVxuIiwgMTR9LAorLSAgeyJtaW51dGUgdG8gbGFyZ2UgKDAuLjU5KSIsIDE1fSwKKy0gIHsic3RvcCB0aW1lIHRvIHNtYWxsIiwgMTZ9LAorLSAgeyJzdG9wLWF0IiwgMTd9LAorLSAgeyJ0aW1lb3V0IiwgMTh9LAorLSAgeyJ0aW1lb3V0IG91dCBvZiByYW5nZSAxMC4uMTAwMCIsIDE5fSwKKy0gIHsic2VjdXJpdHkgdmlvbGF0aW9uOiBjYW4ndCBkbyB0aGF0IHVuZGVyIHJlc3RyaWN0ZWQgc2hlbGxcbiIsIDIwfSwKKy0gIHsid2luZG93IHNpemUiLCAyMX0sCistICB7ImNhbm5vdCB0dXJub2ZmIHN5c2xvZyIsIDIyfSwKKy0gIHsic3RhcnR1cCBkZWxheSIsIDIzfSwKKy0gIHsib3V0IG9mIG1lbW9yeSIsIDI0fSwKKy0gIHsidGhpcyBwcm9ncmFtIHdhcyBuZXZlciBpbnRlbmRlZCB0byBiZSB1c2VkIHNldHVpZFxuIiwgMjV9LAorLSAgeyJuZWVkIGF0IGxlYXN0IG9uZSBmaWxlIHRvIHNlbmQiLCAyNn0sCistICB7IkNhbid0IHNlbmQgY29tbWFuZCBpbiByZXN0cmljdGVkIG1vZGVcbiIsIDI3fSwKKy0gIHsiaG9zdG5hbWUgdG9vIGxvbmdcbiIsIDI4fSwKKy0gIHsiaWxsZWdhbCBzZXJ2ZXIgYWRkcmVzc1xuIiwgMjl9LAorLSAgeyJjYW4gcmVhZCBvbmx5IG9uZSBmaWxlIGZyb20gc3RkaW4iLCAzMH0sCistICB7IlRyYW5zZmVyIGluY29tcGxldGVcbiIsIDMxfSwKKy0gIHsiVHJhbnNmZXIgY29tcGxldGVcbiIsIDMyfSwKKy0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCBvcGVuIHRtcGZpbGUgJXM6ICVzIiwgMzN9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IGxzdGF0IHRtcGZpbGUgJXM6ICVzIiwgMzR9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogYXZvaWRpbmcgc3ltbGluayB0cmFwIiwgMzV9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IHdyaXRlIHRvIHRtcGZpbGUgJXM6ICVzIiwgMzZ9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogZmFpbGVkIiwgMzd9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogb2siLCAzOH0sCistICB7InRjcCBwcm90b2NvbCBpbml0IGZhaWxlZFxuIiwgMzl9LAorLSAgeyJBbnN3ZXJpbmcgVElNRVNZTkMgYXQgJXMiLCA0MH0sCistICB7InRpbWV6b25lIiwgNDF9LAorLSAgeyJ0aW1lem9uZSB1bmtub3duIiwgNDJ9LAorLSAgeyJDYW4ndCBvcGVuIGFueSByZXF1ZXN0ZWQgZmlsZXMuIiwgNDN9LAorLSAgeyJzZWN1cml0eSB2aW9sYXRpb246IG5vdCBhbGxvd2VkIHRvIHVwbG9hZCBmcm9tICVzIiwgNDR9LAorLSAgeyJjYW5ub3Qgb3BlbiAlcyIsIDQ1fSwKKy0gIHsiaXMgbm90IGEgZmlsZTogJXMiLCA0Nn0sCistICB7IiVzLyVzOiBlcnJvciBvY2N1cmVkIiwgNDd9LAorLSAgeyJza2lwcGVkOiAlcyIsIDQ4fSwKKy0gIHsiJXMvJXM6IHNraXBwZWQiLCA0OX0sCistICB7IkJ5dGVzIFNlbnQ6JTdsZCAgIEJQUzolLThsZCAgICAgICAgICAgICAgICAgICAgICAgIFxuIiwgNTB9LAorLSAgeyJTZW5kaW5nICVzLCAlbGQgYmxvY2tzOiAiLCA1MX0sCistICB7IkdpdmUgeW91ciBsb2NhbCBYTU9ERU0gcmVjZWl2ZSBjb21tYW5kIG5vdy4iLCA1Mn0sCistICB7IlNlbmRpbmc6ICVzXG4iLCA1M30sCistICB7IlRpbWVvdXQgb24gcGF0aG5hbWUiLCA1NH0sCistICB7IlJlY2VpdmVyIENhbmNlbGxlZCIsIDU1fSwKKy0gIHsiTm8gQUNLIG9uIEVPVCIsIDU2fSwKKy0gIHsiWG1vZGVtIHNlY3RvcnMva2J5dGVzIHNlbnQ6ICUzZC8lMmRrIiwgNTd9LAorLSAgeyJZbW9kZW0gc2VjdG9ycy9rYnl0ZXMgc2VudDogJTNkLyUyZGsiLCA1OH0sCistICB7IkNhbmNlbGxlZCIsIDU5fSwKKy0gIHsiVGltZW91dCBvbiBzZWN0b3IgQUNLIiwgNjB9LAorLSAgeyJOQUsgb24gc2VjdG9yIiwgNjF9LAorLSAgeyJHb3QgYnVyc3QgZm9yIHNlY3RvciBBQ0siLCA2Mn0sCistICB7IkdvdCAlMDJ4IGZvciBzZWN0b3IgQUNLIiwgNjN9LAorLSAgeyJSZXRyeSBDb3VudCBFeGNlZWRlZCIsIDY0fSwKKy0gIHsiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwgNjV9LAorLSAgeyIlcyB2ZXJzaW9uICVzXG4iLCA2Nn0sCistICB7IlVzYWdlOiAlcyBbb3B0aW9uc10gZmlsZSAuLi5cbiIsIDY3fSwKKy0gIHsiICAgb3I6ICVzIFtvcHRpb25zXSAte2N8aX0gQ09NTUFORFxuIiwgNjh9LAorLSAgeyJTZW5kIGZpbGUocykgd2l0aCBaTU9ERU0vWU1PREVNL1hNT0RFTSBwcm90b2NvbFxuIiwgNjl9LAorLSAgeyJcCistICAgIChYKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFhNT0RFTSBvbmx5XG5cCistICAgIChZKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFlNT0RFTSBvbmx5XG5cCistICAgIChaKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFpNT0RFTSBvbmx5XG4iLCA3MH0sCistICB7IlwKKy0gIC0rLCAtLWFwcGVuZCAgICAgICAgICAgICAgICBhcHBlbmQgdG8gZXhpc3RpbmcgZGVzdGluYXRpb24gZmlsZSAoWilcblwKKy0gIC0yLCAtLXR3b3N0b3AgICAgICAgICAgICAgICB1c2UgMiBzdG9wIGJpdHNcblwKKy0gIC00LCAtLXRyeS00ayAgICAgICAgICAgICAgICBnbyB1cCB0byA0SyBibG9ja3NpemVcblwKKy0gICAgICAtLXN0YXJ0LTRrICAgICAgICAgICAgICBzdGFydCB3aXRoIDRLIGJsb2Nrc2l6ZSAoZG9lc24ndCB0cnkgOClcblwKKy0gIC04LCAtLXRyeS04ayAgICAgICAgICAgICAgICBnbyB1cCB0byA4SyBibG9ja3NpemVcblwKKy0gICAgICAtLXN0YXJ0LThrICAgICAgICAgICAgICBzdGFydCB3aXRoIDhLIGJsb2Nrc2l6ZVxuXAorLSAgLWEsIC0tYXNjaWkgICAgICAgICAgICAgICAgIEFTQ0lJIHRyYW5zZmVyIChjaGFuZ2UgQ1IvTEYgdG8gTEYpXG5cCistICAtYiwgLS1iaW5hcnkgICAgICAgICAgICAgICAgYmluYXJ5IHRyYW5zZmVyXG5cCistICAtQiwgLS1idWZzaXplIE4gICAgICAgICAgICAgYnVmZmVyIE4gYnl0ZXMgKE49PWF1dG86IGJ1ZmZlciB3aG9sZSBmaWxlKVxuXAorLSAgLWMsIC0tY29tbWFuZCBDT01NQU5EICAgICAgIGV4ZWN1dGUgcmVtb3RlIGNvbW1hbmQgQ09NTUFORCAoWilcblwKKy0gIC1DLCAtLWNvbW1hbmQtdHJpZXMgTiAgICAgICB0cnkgTiB0aW1lcyB0byBleGVjdXRlIGEgY29tbWFuZCAoWilcblwKKy0gIC1kLCAtLWRvdC10by1zbGFzaCAgICAgICAgICBjaGFuZ2UgJy4nIHRvICcvJyBpbiBwYXRobmFtZXMgKFkvWilcblwKKy0gICAgICAtLWRlbGF5LXN0YXJ0dXAgTiAgICAgICBzbGVlcCBOIHNlY29uZHMgYmVmb3JlIGRvaW5nIGFueXRoaW5nXG5cCistICAtZSwgLS1lc2NhcGUgICAgICAgICAgICAgICAgZXNjYXBlIGFsbCBjb250cm9sIGNoYXJhY3RlcnMgKFopXG5cCistICAtRSwgLS1yZW5hbWUgICAgICAgICAgICAgICAgZm9yY2UgcmVjZWl2ZXIgdG8gcmVuYW1lIGZpbGVzIGl0IGFscmVhZHkgaGFzXG5cCistICAtZiwgLS1mdWxsLXBhdGggICAgICAgICAgICAgc2VuZCBmdWxsIHBhdGhuYW1lIChZL1opXG5cCistICAtaSwgLS1pbW1lZGlhdGUtY29tbWFuZCBDTUQgc2VuZCByZW1vdGUgQ01ELCByZXR1cm4gaW1tZWRpYXRlbHkgKFopXG5cCistICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlXG5cCistICAtaywgLS0xayAgICAgICAgICAgICAgICAgICAgc2VuZCAxMDI0IGJ5dGUgcGFja2V0cyAoWClcblwKKy0gIC1MLCAtLXBhY2tldGxlbiBOICAgICAgICAgICBsaW1pdCBzdWJwYWNrZXQgbGVuZ3RoIHRvIE4gYnl0ZXMgKFopXG5cCistICAtbCwgLS1mcmFtZWxlbiBOICAgICAgICAgICAgbGltaXQgZnJhbWUgbGVuZ3RoIHRvIE4gYnl0ZXMgKGw+PUwpIChaKVxuXAorLSAgLW0sIC0tbWluLWJwcyBOICAgICAgICAgICAgIHN0b3AgdHJhbnNtaXNzaW9uIGlmIEJQUyBiZWxvdyBOXG5cCistICAtTSwgLS1taW4tYnBzLXRpbWUgTiAgICAgICAgICBmb3IgYXQgbGVhc3QgTiBzZWNvbmRzIChkZWZhdWx0OiAxMjApXG4iLCA3MX0sCistICB7IlwKKy0gIC1uLCAtLW5ld2VyICAgICAgICAgICAgICAgICBzZW5kIGZpbGUgaWYgc291cmNlIG5ld2VyIChaKVxuXAorLSAgLU4sIC0tbmV3ZXItb3ItbG9uZ2VyICAgICAgIHNlbmQgZmlsZSBpZiBzb3VyY2UgbmV3ZXIgb3IgbG9uZ2VyIChaKVxuXAorLSAgLW8sIC0tMTYtYml0LWNyYyAgICAgICAgICAgIHVzZSAxNiBiaXQgQ1JDIGluc3RlYWQgb2YgMzIgYml0IENSQyAoWilcblwKKy0gIC1PLCAtLWRpc2FibGUtdGltZW91dHMgICAgICBkaXNhYmxlIHRpbWVvdXQgY29kZSwgd2FpdCBmb3JldmVyXG5cCistICAtcCwgLS1wcm90ZWN0ICAgICAgICAgICAgICAgcHJvdGVjdCBleGlzdGluZyBkZXN0aW5hdGlvbiBmaWxlIChaKVxuXAorLSAgLXIsIC0tcmVzdW1lICAgICAgICAgICAgICAgIHJlc3VtZSBpbnRlcnJ1cHRlZCBmaWxlIHRyYW5zZmVyIChaKVxuXAorLSAgLVIsIC0tcmVzdHJpY3RlZCAgICAgICAgICAgIHJlc3RyaWN0ZWQsIG1vcmUgc2VjdXJlIG1vZGVcblwKKy0gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgICBxdWlldCAobm8gcHJvZ3Jlc3MgcmVwb3J0cylcblwKKy0gIC1zLCAtLXN0b3AtYXQge0hIOk1NfCtOfSAgICBzdG9wIHRyYW5zbWlzc2lvbiBhdCBISDpNTSBvciBpbiBOIHNlY29uZHNcblwKKy0gICAgICAtLXRjcCAgICAgICAgICAgICAgICAgICBidWlsZCBhIFRDUCBjb25uZWN0aW9uIHRvIHRyYW5zbWl0IGZpbGVzXG5cCistICAgICAgLS10Y3Atc2VydmVyICAgICAgICAgICAgb3BlbiBzb2NrZXQsIHdhaXQgZm9yIGNvbm5lY3Rpb25cblwKKy0gIC11LCAtLXVubGluayAgICAgICAgICAgICAgICB1bmxpbmsgZmlsZSBhZnRlciB0cmFuc21pc3Npb25cblwKKy0gIC1VLCAtLXVucmVzdHJpY3QgICAgICAgICAgICB0dXJuIG9mZiByZXN0cmljdGVkIG1vZGUgKGlmIGFsbG93ZWQgdG8pXG5cCistICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgYmUgdmVyYm9zZSwgcHJvdmlkZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cblwKKy0gIC13LCAtLXdpbmRvd3NpemUgTiAgICAgICAgICBXaW5kb3cgaXMgTiBieXRlcyAoWilcblwKKy0gIC1YLCAtLXhtb2RlbSAgICAgICAgICAgICAgICB1c2UgWE1PREVNIHByb3RvY29sXG5cCistICAteSwgLS1vdmVyd3JpdGUgICAgICAgICAgICAgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzXG5cCistICAtWSwgLS1vdmVyd3JpdGUtb3Itc2tpcCAgICAgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLCBlbHNlIHNraXBcblwKKy0gICAgICAtLXltb2RlbSAgICAgICAgICAgICAgICB1c2UgWU1PREVNIHByb3RvY29sXG5cCistICAtWiwgLS16bW9kZW0gICAgICAgICAgICAgICAgdXNlIFpNT0RFTSBwcm90b2NvbFxuXAorLVxuXAorLXNob3J0IG9wdGlvbnMgdXNlIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbG9uZyBvbmVzXG4iLCA3Mn0sCistICB7ImdvdCBaUlFJTklUIiwgNzN9LAorLSAgeyJnb3QgWkNBTiIsIDc0fSwKKy0gIHsiYmxrbGVuIG5vdyAlZFxuIiwgNzV9LAorLSAgeyJ6c2VuZGZkYXRhOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIsIDc2fSwKKy0gIHsienNlbmRmZGF0YTogcmVhY2hlZCBzdG9wIHRpbWUiLCA3N30sCistICB7IkJ5dGVzIFNlbnQ6JTdsZC8lN2xkICAgQlBTOiUtOGxkIEVUQSAlMDJkOiUwMmQgICIsIDc4fSwKKy0gIHsiY2FsY19ibGtsZW46IHJlZHVjZWQgdG8gJWQgZHVlIHRvIGVycm9yXG4iLCA3OX0sCistICB7ImNhbGNfYmxrbGVuOiByZXR1cm5lZCBvbGQgdmFsdWUgJWQgZHVlIHRvIGxvdyBicGUgZGlmZlxuIiwgODB9LAorLSAgeyJjYWxjX2Jsa2xlbjogb2xkICVsZCwgbmV3ICVsZCwgZCAlbGRcbiIsIDgxfSwKKy0gIHsiY2FsY19ibGtsZW46IGNhbGMgdG90YWxfYnl0ZXM9JWxkLCBicGU9JWxkLCBlYz0lbGRcbiIsIDgyfSwKKy0gIHsiY2FsY19ibGtsZW46IGJsa2xlbiAlZCwgb2sgJWxkLCBmYWlsZWQgJWxkIC0+ICVsdVxuIiwgODN9LAorLSAgeyJjYWxjX2Jsa2xlbjogcmV0dXJuZWQgJWQgYXMgYmVzdFxuIiwgODR9LAorLSAgeyJcCistXG5cCistY291bnRlbTogVG90YWwgJWQgJWxkXG4iLCA4NX0sCistICB7IkJhZCBlc2NhcGUgc2VxdWVuY2UgJXgiLCA4Nn0sCistICB7IlNlbmRlciBDYW5jZWxlZCIsIDg3fSwKKy0gIHsiVElNRU9VVCIsIDg4fSwKKy0gIHsiQmFkIGRhdGEgc3VicGFja2V0IiwgODl9LAorLSAgeyJEYXRhIHN1YnBhY2tldCB0b28gbG9uZyIsIDkwfSwKKy0gIHsiR2FyYmFnZSBjb3VudCBleGNlZWRlZCIsIDkxfSwKKy0gIHsiR290ICVzIiwgOTJ9LAorLSAgeyJSZXRyeSAlZDogIiwgOTN9LAorLSAgeyJkb24ndCBoYXZlIHNldHRpbWVvZmRheSwgd2lsbCBub3Qgc2V0IHRpbWVcbiIsIDk0fSwKKy0gIHsibm90IHJ1bm5pbmcgYXMgcm9vdCAodGhpcyBpcyBnb29kISksIGNhbiBub3Qgc2V0IHRpbWVcbiIsIDk1fSwKKy0gIHsiYnl0ZXNfcGVyX2Vycm9yIiwgOTZ9LAorLSAgeyJieXRlcy1wZXItZXJyb3Igc2hvdWxkIGJlID4xMDAiLCA5N30sCistICB7Ik9fU1lOQyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwiLCA5OH0sCistICB7ImdhcmJhZ2Ugb24gY29tbWFuZGxpbmUiLCA5OX0sCistICB7IlVzYWdlOiAlcyBbb3B0aW9uc10gW2ZpbGVuYW1lLmlmLnhtb2RlbV1cbiIsIDEwMH0sCistICB7IlJlY2VpdmUgZmlsZXMgd2l0aCBaTU9ERU0vWU1PREVNL1hNT0RFTSBwcm90b2NvbFxuIiwgMTAxfSwKKy0gIHsiXAorLSAgLSssIC0tYXBwZW5kICAgICAgICAgICAgICAgIGFwcGVuZCB0byBleGlzdGluZyBmaWxlc1xuXAorLSAgLWEsIC0tYXNjaWkgICAgICAgICAgICAgICAgIEFTQ0lJIHRyYW5zZmVyIChjaGFuZ2UgQ1IvTEYgdG8gTEYpXG5cCistICAtYiwgLS1iaW5hcnkgICAgICAgICAgICAgICAgYmluYXJ5IHRyYW5zZmVyXG5cCistICAtQiwgLS1idWZzaXplIE4gICAgICAgICAgICAgYnVmZmVyIE4gYnl0ZXMgKE49PWF1dG86IGJ1ZmZlciB3aG9sZSBmaWxlKVxuXAorLSAgLWMsIC0td2l0aC1jcmMgICAgICAgICAgICAgIFVzZSAxNiBiaXQgQ1JDIChYKVxuXAorLSAgLUMsIC0tYWxsb3ctcmVtb3RlLWNvbW1hbmRzIGFsbG93IGV4ZWN1dGlvbiBvZiByZW1vdGUgY29tbWFuZHMgKFopXG5cCistICAtRCwgLS1udWxsICAgICAgICAgICAgICAgICAgd3JpdGUgYWxsIHJlY2VpdmVkIGRhdGEgdG8gL2Rldi9udWxsXG5cCistICAgICAgLS1kZWxheS1zdGFydHVwIE4gICAgICAgc2xlZXAgTiBzZWNvbmRzIGJlZm9yZSBkb2luZyBhbnl0aGluZ1xuXAorLSAgLWUsIC0tZXNjYXBlICAgICAgICAgICAgICAgIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgKFopXG5cCistICAtRSwgLS1yZW5hbWUgICAgICAgICAgICAgICAgcmVuYW1lIGFueSBmaWxlcyBhbHJlYWR5IGV4aXN0aW5nXG5cCistICAgICAgLS1lcnJvcnMgTiAgICAgICAgICAgICAgZ2VuZXJhdGUgQ1JDIGVycm9yIGV2ZXJ5IE4gYnl0ZXMgKGRlYnVnZ2luZylcblwKKy0gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICBIZWxwLCBwcmludCB0aGlzIHVzYWdlIG1lc3NhZ2VcblwKKy0gIC1tLCAtLW1pbi1icHMgTiAgICAgICAgICAgICBzdG9wIHRyYW5zbWlzc2lvbiBpZiBCUFMgYmVsb3cgTlxuXAorLSAgLU0sIC0tbWluLWJwcy10aW1lIE4gICAgICAgICAgZm9yIGF0IGxlYXN0IE4gc2Vjb25kcyAoZGVmYXVsdDogMTIwKVxuXAorLSAgLU8sIC0tZGlzYWJsZS10aW1lb3V0cyAgICAgIGRpc2FibGUgdGltZW91dCBjb2RlLCB3YWl0IGZvcmV2ZXIgZm9yIGRhdGFcblwKKy0gICAgICAtLW8tc3luYyAgICAgICAgICAgICAgICBvcGVuIG91dHB1dCBmaWxlKHMpIGluIHN5bmNocm9ub3VzIHdyaXRlIG1vZGVcblwKKy0gIC1wLCAtLXByb3RlY3QgICAgICAgICAgICAgICBwcm90ZWN0IGV4aXN0aW5nIGZpbGVzXG5cCistICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgcXVpZXQsIG5vIHByb2dyZXNzIHJlcG9ydHNcblwKKy0gIC1yLCAtLXJlc3VtZSAgICAgICAgICAgICAgICB0cnkgdG8gcmVzdW1lIGludGVycnVwdGVkIGZpbGUgdHJhbnNmZXIgKFopXG5cCistICAtUiwgLS1yZXN0cmljdGVkICAgICAgICAgICAgcmVzdHJpY3RlZCwgbW9yZSBzZWN1cmUgbW9kZVxuXAorLSAgLXMsIC0tc3RvcC1hdCB7SEg6TU18K059ICAgIHN0b3AgdHJhbnNtaXNzaW9uIGF0IEhIOk1NIG9yIGluIE4gc2Vjb25kc1xuXAorLSAgLVMsIC0tdGltZXN5bmMgICAgICAgICAgICAgIHJlcXVlc3QgcmVtb3RlIHRpbWUgKHR3aWNlOiBzZXQgbG9jYWwgdGltZSlcblwKKy0gICAgICAtLXN5c2xvZ1s9b2ZmXSAgICAgICAgICB0dXJuIHN5c2xvZyBvbiBvciBvZmYsIGlmIHBvc3NpYmxlXG5cCistICAtdCwgLS10aW1lb3V0IE4gICAgICAgICAgICAgc2V0IHRpbWVvdXQgdG8gTiB0ZW50aHMgb2YgYSBzZWNvbmRcblwKKy0gIC11LCAtLWtlZXAtdXBwZXJjYXNlICAgICAgICBrZWVwIHVwcGVyIGNhc2UgZmlsZW5hbWVzXG5cCistICAtVSwgLS11bnJlc3RyaWN0ICAgICAgICAgICAgZGlzYWJsZSByZXN0cmljdGVkIG1vZGUgKGlmIGFsbG93ZWQgdG8pXG5cCistICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgYmUgdmVyYm9zZSwgcHJvdmlkZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cblwKKy0gIC13LCAtLXdpbmRvd3NpemUgTiAgICAgICAgICBXaW5kb3cgaXMgTiBieXRlcyAoWilcblwKKy0gIC1YICAtLXhtb2RlbSAgICAgICAgICAgICAgICB1c2UgWE1PREVNIHByb3RvY29sXG5cCistICAteSwgLS1vdmVyd3JpdGUgICAgICAgICAgICAgWWVzLCBjbG9iYmVyIGV4aXN0aW5nIGZpbGUgaWYgYW55XG5cCistICAgICAgLS15bW9kZW0gICAgICAgICAgICAgICAgdXNlIFlNT0RFTSBwcm90b2NvbFxuXAorLSAgLVosIC0tem1vZGVtICAgICAgICAgICAgICAgIHVzZSBaTU9ERU0gcHJvdG9jb2xcblwKKy1cblwKKy1zaG9ydCBvcHRpb25zIHVzZSB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGxvbmcgb25lc1xuIiwgMTAyfSwKKy0gIHsiJXMgd2FpdGluZyB0byByZWNlaXZlLiIsIDEwM30sCistICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQvJTdsZCAgIEJQUzolLTZsZCAgICAgICAgICAgICAgICBcclxuIiwgMTA0fSwKKy0gIHsiJXM6IHJlYWR5IHRvIHJlY2VpdmUgJXMiLCAxMDV9LAorLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkICAgQlBTOiUtNmxkICAgICAgICAgICAgICAgIFxyXG4iLCAxMDZ9LAorLSAgeyJcCistXHJcblwKKy0lczogJXMgcmVtb3ZlZC5cclxuIiwgMTA3fSwKKy0gIHsiUGF0aG5hbWUgZmV0Y2ggcmV0dXJuZWQgRU9UIiwgMTA4fSwKKy0gIHsiUmVjZWl2ZWQgZHVwIFNlY3RvciIsIDEwOX0sCistICB7IlN5bmMgRXJyb3IiLCAxMTB9LAorLSAgeyJDUkMiLCAxMTF9LAorLSAgeyJDaGVja3N1bSIsIDExMn0sCistICB7IlNlY3RvciBudW1iZXIgZ2FyYmxlZCIsIDExM30sCistICB7IlNlbmRlciBDYW5jZWxsZWQiLCAxMTR9LAorLSAgeyJHb3QgMCVvIHNlY3RvciBoZWFkZXIiLCAxMTV9LAorLSAgeyJmaWxlIG5hbWUgZW5kcyB3aXRoIGEgLywgc2tpcHBlZDogJXNcbiIsIDExNn0sCistICB7InptYW5hZz0lZCwgTHptYW5hZz0lZFxuIiwgMTE3fSwKKy0gIHsiemNvbnY9JWRcbiIsIDExOH0sCistICB7ImZpbGUgZXhpc3RzLCBza2lwcGVkOiAlc1xuIiwgMTE5fSwKKy0gIHsiVElNRVNZTkM6IGhlcmUgJWxkLCByZW1vdGUgJWxkLCBkaWZmICVsZCBzZWNvbmRzXG4iLCAxMjB9LAorLSAgeyJUSU1FU1lOQzogY2Fubm90IHNldCB0aW1lOiAlc1xuIiwgMTIxfSwKKy0gIHsiY2Fubm90IHRtcGZpbGUoKSBmb3IgdGNwIHByb3RvY29sIHN5bmNocm9uaXphdGlvbiIsIDEyMn0sCistICB7IlRvcGlwZSIsIDEyM30sCistICB7IlJlY2VpdmluZzogJXNcbiIsIDEyNH0sCistICB7IkJsb2NrcyByZWNlaXZlZDogJWQiLCAxMjV9LAorLSAgeyIlczogJXMgZXhpc3RzXG4iLCAxMjZ9LAorLSAgeyIlczpcdFNlY3VyaXR5IFZpb2xhdGlvbiIsIDEyN30sCistICB7InJlbW90ZSBjb21tYW5kIGV4ZWN1dGlvbiByZXF1ZXN0ZWQiLCAxMjh9LAorLSAgeyJub3QgZXhlY3V0ZWQiLCAxMjl9LAorLSAgeyJnb3QgWlJJTklUIiwgMTMwfSwKKy0gIHsiU2tpcHBlZCIsIDEzMX0sCistICB7InJ6ZmlsZTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiLCAxMzJ9LAorLSAgeyJyemZpbGU6IHJlYWNoZWQgc3RvcCB0aW1lIiwgMTMzfSwKKy0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZC8lN2xkICAgQlBTOiUtNmxkIEVUQSAlMDJkOiUwMmQgICIsIDEzNH0sCistICB7ImZnZXRzIGZvciB0Y3AgcHJvdG9jb2wgc3luY2hyb25pemF0aW9uIGZhaWxlZDogIiwgMTM1fSwKKy0gIHsiZmlsZSBjbG9zZSBlcnJvciIsIDEzNn0sCistfTsKKy0KKy1pbnQgX21zZ190YmxfbGVuZ3RoID0gMTM2OworQmluYXJ5IGZpbGVzIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vZGUuZ21vIGFuZCBscnpzei0wLjEyLjIwL3BvL2RlLmdtbyBkaWZmZXIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9kZS5wbyBscnpzei0wLjEyLjIwL3BvL2RlLnBvCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9kZS5wbwkxOTk4LTEyLTMwIDE2OjMxOjQ2LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vZGUucG8JMjAxOS0xMS0yNiAxMTo0MjowNy4wMDAwMDAwMDAgKzAwMDAKK0BAIC02LDEwICs2LDEyIEBACisgbXNnaWQgIiIKKyBtc2dzdHIgIiIKKyAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKKy0iUE9ULUNyZWF0aW9uLURhdGU6IDE5OTgtMTItMzAgMDg6NDkrMDEwMFxuIgorKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCisrIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE5LTExLTI2IDExOjM5KzAwMDBcbiIKKyAiUE8tUmV2aXNpb24tRGF0ZTogMTk5Ny0wNi0wMSAxOTowMCswMjAwXG4iCisgIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDx1d2VAb2hzZS5kZT5cbiIKKyAiTGFuZ3VhZ2UtVGVhbTogbm9uZS4gdHJ5IDx1d2VAb2hzZS5kZT5cbiIKKysiTGFuZ3VhZ2U6IGRlXG4iCisgIk1JTUUtVmVyc2lvbjogMS4wXG4iCisgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1pc28tODg1OS0xXG4iCisgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKK0BAIC0xOCw3ICsyMCw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJpb19tb2RlKCwyKSBpbiByYnNiLmMgbm90IGltcGxlbWVudGVkXG4iCisgbXNnc3RyICJpb19tb2RlKDIpIGluIHJic2IuYyBuaWNodCBpbXBsZW1lbnRpZXJ0XG4iCisgCistIzogc3JjL2xyei5jOjIwMSBzcmMvbHN6LmM6MjMwCisrIzogc3JjL2xzei5jOjIzMCBzcmMvbHJ6LmM6MjAxCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiY2F1Z2h0IHNpZ25hbCAlZDsgZXhpdGluZyIKKyBtc2dzdHIgImVyaGllbHQgU2lnbmFsICVkOyBQcm9ncmFtbWFiYnJ1Y2giCitAQCAtNDUsNyArNDcsNyBAQCBtc2dzdHIgIkZyYW1lbORuZ2UiCisgbXNnaWQgImZyYW1lbGVuZ3RoIG91dCBvZiByYW5nZSAzMi4uJWxkIgorIG1zZ3N0ciAiQXJndW1lbnQgZGVyIE9wdGlvbiBsIGF132VyaGFsYiBkZXMgQmVyZWljaHMgMzIuLiVsZCIKKyAKKy0jOiBzcmMvbHJ6LmM6MzIzIHNyYy9sc3ouYzo0NTAKKysjOiBzcmMvbHN6LmM6NDUwIHNyYy9scnouYzozMjMKKyBtc2dpZCAibWluX2JwcyIKKyBtc2dzdHIgIm1pbmltYWxlIEJQUy1SYXRlIgorIAorQEAgLTUzLDY1ICs1NSw2NSBAQCBtc2dzdHIgIm1pbmltYWxlIEJQUy1SYXRlIgorIG1zZ2lkICJtaW5fYnBzIG11c3QgYmUgPj0gMCIKKyBtc2dzdHIgIm1pbmltYWxlIEJQUy1SYXRlIG113yA+PSAwIHNlaW4iCisgCistIzogc3JjL2xyei5jOjMyOSBzcmMvbHN6LmM6NDU4CisrIzogc3JjL2xzei5jOjQ1OCBzcmMvbHJ6LmM6MzI5CisgbXNnaWQgIm1pbl9icHNfdGltZSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzMxIHNyYy9sc3ouYzo0NjAKKysjOiBzcmMvbHN6LmM6NDYwIHNyYy9scnouYzozMzEKKyBtc2dpZCAibWluX2Jwc190aW1lIG11c3QgYmUgPiAxIgorIG1zZ3N0ciAiWmVpdGZlbnN0ZXIgZvxyIG1pbmltYWxlIEJQUy1SYXRlIG113yA+IDEgU2VrdW5kZSBzZWluIgorIAorLSM6IHNyYy9scnouYzozNDcgc3JjL2xzei5jOjQ4NAorKyM6IHNyYy9sc3ouYzo0ODQgc3JjL2xyei5jOjM0NworIG1zZ2lkICJob3VyIHRvIGxhcmdlICgwLi4yMykiCisgbXNnc3RyICJTdHVuZGUgenUgZ3Jvc3MgKDAuLjIzKSIKKyAKKy0jOiBzcmMvbHJ6LmM6MzQ5IHNyYy9sc3ouYzo0ODYKKysjOiBzcmMvbHN6LmM6NDg2IHNyYy9scnouYzozNDkKKyBtc2dpZCAidW5wYXJzYWJsZSBzdG9wIHRpbWVcbiIKKyBtc2dzdHIgInVucGFyc2JhcmUgRW5kemVpdFxuIgorIAorLSM6IHNyYy9scnouYzozNTMgc3JjL2xzei5jOjQ5MAorKyM6IHNyYy9sc3ouYzo0OTAgc3JjL2xyei5jOjM1MworIG1zZ2lkICJtaW51dGUgdG8gbGFyZ2UgKDAuLjU5KSIKKyBtc2dzdHIgIk1pbnV0ZSB6dSBncm/fICgwLi41OSkiCisgCistIzogc3JjL2xyei5jOjM2MyBzcmMvbHJ6LmM6MzcwIHNyYy9sc3ouYzo1MDAgc3JjL2xzei5jOjUwNworKyM6IHNyYy9sc3ouYzo1MDAgc3JjL2xzei5jOjUwNyBzcmMvbHJ6LmM6MzYzIHNyYy9scnouYzozNzAKKyBtc2dpZCAic3RvcCB0aW1lIHRvIHNtYWxsIgorIG1zZ3N0ciAiU3RvcHplaXQgenUga3VyeiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzY4IHNyYy9sc3ouYzo1MDUKKysjOiBzcmMvbHN6LmM6NTA1IHNyYy9scnouYzozNjgKKyBtc2dpZCAic3RvcC1hdCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6Mzk5IHNyYy9sc3ouYzo1MTYKKysjOiBzcmMvbHN6LmM6NTE2IHNyYy9scnouYzozOTkKKyBtc2dpZCAidGltZW91dCIKKyBtc2dzdHIgIlRpbWVvdXQiCisgCistIzogc3JjL2xyei5jOjQwMSBzcmMvbHN6LmM6NTE4CisrIzogc3JjL2xzei5jOjUxOCBzcmMvbHJ6LmM6NDAxCisgbXNnaWQgInRpbWVvdXQgb3V0IG9mIHJhbmdlIDEwLi4xMDAwIgorIG1zZ3N0ciAiQXJndW1lbnQgZGVyIE9wdGlvbiB0IGF132VyaGFsYiBkZXMgQmVyZWljaHMgMTAuLjEwMDAiCisgCistIzogc3JjL2xyei5jOjQxNyBzcmMvbHN6LmM6NTI2CisrIzogc3JjL2xzei5jOjUyNiBzcmMvbHJ6LmM6NDE3CisgbXNnaWQgInNlY3VyaXR5IHZpb2xhdGlvbjogY2FuJ3QgZG8gdGhhdCB1bmRlciByZXN0cmljdGVkIHNoZWxsXG4iCisgbXNnc3RyICJTaWNoZXJoZWl0c3ZlcnN0b986IEF1c2b8aHJ1bmcgdW50ZXIgZWluZ2VzY2hy5G5rdGVyIFNoZWxsIHZlcmJvdGVuXG4iCisgCistIzogc3JjL2xyei5jOjQwNyBzcmMvbHN6LmM6NTMzCisrIzogc3JjL2xzei5jOjUzMyBzcmMvbHJ6LmM6NDA3CisgbXNnaWQgIndpbmRvdyBzaXplIgorIG1zZ3N0ciAiRmVuc3Rlcmdy9t9lIgorIAorLSM6IHNyYy9scnouYzo0MzIgc3JjL2xyei5jOjQzOSBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMKKysjOiBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMgc3JjL2xyei5jOjQzMiBzcmMvbHJ6LmM6NDM5CisgbXNnaWQgImNhbm5vdCB0dXJub2ZmIHN5c2xvZyIKKyBtc2dzdHIgImthbm4gc3lzbG9nZ2luZyBuaWNodCBhYnNjaGFsdGVuIgorIAorLSM6IHNyYy9scnouYzo0NTQgc3JjL2xzei5jOjU3MQorKyM6IHNyYy9sc3ouYzo1NzEgc3JjL2xyei5jOjQ1NAorIG1zZ2lkICJzdGFydHVwIGRlbGF5IgorIG1zZ3N0ciAiU3RhcnR2ZXJ69mdlcnVuZyIKKyAKKysjOiBzcmMvbHN6LmM6NTgzIHNyYy9sc3ouYzo2OTIgc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisgIzogc3JjL2xyei5jOjQ3MCBzcmMvbHJ6LmM6NzU1IHNyYy9scnouYzoxMTE3IHNyYy9scnouYzoxMjQzIHNyYy9scnouYzoxMzAwCistIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEgc3JjL2xzei5jOjU4MyBzcmMvbHN6LmM6NjkyCistIzogc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisrIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEKKyBtc2dpZCAib3V0IG9mIG1lbW9yeSIKKyBtc2dzdHIgIktlaW4gU3BlaWNoZXIgbWVociBmcmVpIgorIAorLSM6IHNyYy9scnouYzo0ODAgc3JjL2xzei5jOjU5NQorKyM6IHNyYy9sc3ouYzo1OTUgc3JjL2xyei5jOjQ4MAorIG1zZ2lkICJ0aGlzIHByb2dyYW0gd2FzIG5ldmVyIGludGVuZGVkIHRvIGJlIHVzZWQgc2V0dWlkXG4iCisgbXNnc3RyICJkaWVzZXMgUHJvZ3JhbW0gZGFyZiBuaWNodCBzZXR1aWQgbGF1ZmVuXG4iCisgCitAQCAtMTIwLDE0ICsxMjIsMTUgQEAgbXNnaWQgIm5lZWQgYXQgbGVhc3Qgb25lIGZpbGUgdG8gc2VuZCIKKyBtc2dzdHIgImVzIG113yBtaW5kZXN0ZW5zIGVpbiBOYW1lIGVpbmVyIHp1IHNlbmRlbmRlbiBEYXRlaSBhbmdlZ2ViZW4gd2VyZGVuIgorIAorICM6IHNyYy9sc3ouYzo2MjgKKysjLCBjLWZvcm1hdAorIG1zZ2lkICJDYW4ndCBzZW5kIGNvbW1hbmQgaW4gcmVzdHJpY3RlZCBtb2RlXG4iCisgbXNnc3RyICJJbSBlaW5nZXNjaHLkbmt0ZW4gTW9kdXMgaXN0IGRhcyBTZW5kZW4gdm9uIEtvbW1hbmRvcyB2ZXJib3RlblxuIgorIAorLSM6IHNyYy9scnouYzo1MjQgc3JjL2xzei5jOjY1NQorKyM6IHNyYy9sc3ouYzo2NTUgc3JjL2xyei5jOjUyNAorIG1zZ2lkICJob3N0bmFtZSB0b28gbG9uZ1xuIgorIG1zZ3N0ciAiSG9zdG5hbWUgenUgbGFuZ1xuIgorIAorLSM6IHNyYy9scnouYzo1Mzkgc3JjL2xzei5jOjY3MAorKyM6IHNyYy9sc3ouYzo2NzAgc3JjL2xyei5jOjUzOQorIG1zZ2lkICJpbGxlZ2FsIHNlcnZlciBhZGRyZXNzXG4iCisgbXNnc3RyICJJbGxlZ2FsZSBTZXJ2ZXJhZGRyZXNzZVxuIgorIAorQEAgLTEzNSwxMSArMTM4LDExIEBAIG1zZ3N0ciAiSWxsZWdhbGUgU2VydmVyYWRkcmVzc2VcbiIKKyBtc2dpZCAiY2FuIHJlYWQgb25seSBvbmUgZmlsZSBmcm9tIHN0ZGluIgorIG1zZ3N0ciAia2FubiBudXIgZWluZSBEYXRlaSB2b24gZGVyIFN0YW5kYXJkZWluZ2FiZSBsZXNlbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTcxIHNyYy9sc3ouYzo4MDYKKysjOiBzcmMvbHN6LmM6ODA2IHNyYy9scnouYzo1NzEKKyBtc2dpZCAiVHJhbnNmZXIgaW5jb21wbGV0ZVxuIgorIG1zZ3N0ciAi3GJlcnRyYWd1bmcgbmljaHQgYWJnZXNjaGxvc3NlblxuIgorIAorLSM6IHNyYy9scnouYzo1NzMgc3JjL2xzei5jOjgwOAorKyM6IHNyYy9sc3ouYzo4MDggc3JjL2xyei5jOjU3MworIG1zZ2lkICJUcmFuc2ZlciBjb21wbGV0ZVxuIgorIG1zZ3N0ciAi3GJlcnRyYWd1bmcgYWJnZXNjaGxvc3NlblxuIgorIAorQEAgLTE5Nyw5ICsyMDAsOSBAQCBtc2dzdHIgIkthbm4ga2VpbmUgZGVyIGFuZ2Vmb3JkZXJ0ZW4gRGF0CisgIzogc3JjL2xzei5jOjEwMjgKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJzZWN1cml0eSB2aW9sYXRpb246IG5vdCBhbGxvd2VkIHRvIHVwbG9hZCBmcm9tICVzIgorLW1zZ3N0ciAiU2ljaGVyaGVpdHN2ZXJzdG/fOiBBdXNm/GhydW5nIHVudGVyIGVpbmdlc2NocuRua3RlciBTaGVsbCB2ZXJib3RlbiIKKyttc2dzdHIgIlNpY2hlcmhlaXRzdmVyc3Rv3zogQXVzZvxocnVuZyB1bnRlciAlcyB2ZXJib3RlbiIKKyAKKy0jOiBzcmMvbHJ6LmM6MTM5MiBzcmMvbHN6LmM6MTA0NgorKyM6IHNyYy9sc3ouYzoxMDQ2IHNyYy9scnouYzoxMzkyCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiY2Fubm90IG9wZW4gJXMiCisgbXNnc3RyICJrYW5uICVzIG5pY2h0IPZmZm5lbiIKK0BAIC0yOTAsMTIgKzI5MywxMiBAQCBtc2dzdHIgIkVyaGllbHQgJTAyeCBhbHMgU2VrdG9yYmVzdOR0aWd1CisgbXNnaWQgIlJldHJ5IENvdW50IEV4Y2VlZGVkIgorIG1zZ3N0ciAiTWF4aW1hbGUgV2llZGVyaG9sdW5nc2FuemFobCD8YmVyc2Nocml0dGVuIgorIAorLSM6IHNyYy9scnouYzo1OTMgc3JjL2xzei5jOjE1MjEKKysjOiBzcmMvbHN6LmM6MTUyMSBzcmMvbHJ6LmM6NTkzCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIgorIG1zZ3N0ciAiYCVzIC0taGVscCcgZ2lidCB3ZWl0ZXJlIEluZm9ybWF0aW9uZW4uXG4iCisgCistIzogc3JjL2xyei5jOjU5OCBzcmMvbHN6LmM6MTUyNgorKyM6IHNyYy9sc3ouYzoxNTI2IHNyYy9scnouYzo1OTgKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICIlcyB2ZXJzaW9uICVzXG4iCisgbXNnc3RyICIlcyBWZXJzaW9uICVzXG4iCitAQCAtMzE1LDcgKzMxOCw3IEBAIG1zZ2lkICJTZW5kIGZpbGUocykgd2l0aCBaTU9ERU0vWU1PREVNL1gKKyBtc2dzdHIgIkRhdGVpZW4gbWl0IFpNT0RFTS9ZTU9ERU0vWE1PREVNIPxiZXJ0cmFnZW5cbiIKKyAKKyAjIHNyYy9scnouYzo0NzUgc3JjL2xzei5jOjEzMzAgeHgKKy0jOiBzcmMvbHJ6LmM6NjA0IHNyYy9sc3ouYzoxNTM0CisrIzogc3JjL2xzei5jOjE1MzQgc3JjL2xyei5jOjYwNAorIG1zZ2lkICIiCisgIiAgICAoWCkgPSBvcHRpb24gYXBwbGllcyB0byBYTU9ERU0gb25seVxuIgorICIgICAgKFkpID0gb3B0aW9uIGFwcGxpZXMgdG8gWU1PREVNIG9ubHlcbiIKK0BAIC00MzEsNyArNDM0LDcgQEAgbXNnc3RyICIiCisgbXNnaWQgImdvdCBaUlFJTklUIgorIG1zZ3N0ciAiZXJoaWVsdCBaUlFJTklUIgorIAorLSM6IHNyYy9scnouYzoxMDc0IHNyYy9scnouYzoxNzg3IHNyYy9sc3ouYzoxNzkyCisrIzogc3JjL2xzei5jOjE3OTIgc3JjL2xyei5jOjEwNzQgc3JjL2xyei5jOjE3ODcKKyBtc2dpZCAiZ290IFpDQU4iCisgbXNnc3RyICJlcmhpZWx0IFpDQU4iCisgCitAQCAtNDcyLDcgKzQ3NSw3IEBAIG1zZ3N0ciAiY2FsY19ibGtsZW46IGFsdCAlbGQsIG5ldSAlbGQsIEQKKyAjOiBzcmMvbHN6LmM6MjI3MgorICMsIGMtZm9ybWF0CisgbXNnaWQgImNhbGNfYmxrbGVuOiBjYWxjIHRvdGFsX2J5dGVzPSVsZCwgYnBlPSVsZCwgZWM9JWxkXG4iCistbXNnc3RyICJjYWxjX2Jsa2xlbjoga2Fsa3VsaWVyZSBnZXNhbXRfYnl0ZXM9JWxkLCBicGU9JWxlLCBlYz0lbGRcbiIKKyttc2dzdHIgImNhbGNfYmxrbGVuOiBrYWxrdWxpZXJlIGdlc2FtdF9ieXRlcz0lbGQsIGJwZT0lbGQsIGVjPSVsZFxuIgorIAorICM6IHNyYy9sc3ouYzoyMjgzCisgIywgYy1mb3JtYXQKK0BAIC00OTMsNiArNDk2LDEwIEBAIG1zZ3N0ciAiIgorICJcbiIKKyAiY291bnRlbTogR2VzYW10ICVkICVsZFxuIgorIAorKyM6IHNyYy96bS5jOjkxCisrbXNnaWQgIkJhZCBDUkMiCisrbXNnc3RyICIiCisrCisgIzogc3JjL3ptLmM6MjQ0CisgIywgYy1mb3JtYXQKKyBtc2dpZCAiQmFkIGVzY2FwZSBzZXF1ZW5jZSAleCIKK0BAIC01MDIsNyArNTA5LDcgQEAgbXNnc3RyICJGYWxzY2hlIEVzY2FwZXNlcXVlbnogJXgiCisgbXNnaWQgIlNlbmRlciBDYW5jZWxlZCIKKyBtc2dzdHIgIlNlbmRlciBicmFjaCBhYiIKKyAKKy0jOiBzcmMvbHJ6LmM6OTk3IHNyYy96bS5jOjU4NSBzcmMvem0uYzo2NDQKKysjOiBzcmMvem0uYzo1ODUgc3JjL3ptLmM6NjQ0IHNyYy9scnouYzo5OTcKKyBtc2dpZCAiVElNRU9VVCIKKyBtc2dzdHIgIlRJTUVPVVQiCisgCitAQCAtNzcyLDEzICs3NzksMTEgQEAgbXNnc3RyICJFcmhpZWx0IHVuZXJ3YXJ0ZXRlcyBaUklOSVQiCisgbXNnaWQgIlNraXBwZWQiCisgbXNnc3RyICLcYmVyc3BydW5nZW4iCisgCistIy4gdG9vIGJhZAorICM6IHNyYy9scnouYzoyMDY0CisgIywgYy1mb3JtYXQKKyBtc2dpZCAicnpmaWxlOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIKKyBtc2dzdHIgInJ6ZmlsZTogQlBTLVJhdGUgJWxkIHVudGVyIE1pbmltdW0gJWxkIgorIAorLSMuIHRvbyBiYWQKKyAjOiBzcmMvbHJ6LmM6MjA3OQorIG1zZ2lkICJyemZpbGU6IHJlYWNoZWQgc3RvcCB0aW1lIgorIG1zZ3N0ciAicnpmaWxlOiBBYmJydWNoemVpdCBlcnJlaWNodCIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9scnpzei5wb3QgbHJ6c3otMC4xMi4yMC9wby9scnpzei5wb3QKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2xyenN6LnBvdAkxOTk4LTEyLTMwIDA3OjUwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vbHJ6c3oucG90CTIwMTktMTEtMjYgMTE6Mzk6MTIuMDAwMDAwMDAwICswMDAwCitAQCAtMSwyNCArMSwyNyBAQAorICMgU09NRSBERVNDUklQVElWRSBUSVRMRS4KKyAjIENvcHlyaWdodCAoQykgWUVBUiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBscnpzeiBwYWNrYWdlLgorICMgRklSU1QgQVVUSE9SIDxFTUFJTEBBRERSRVNTPiwgWUVBUi4KKyAjCisgIywgZnV6enkKKyBtc2dpZCAiIgorIG1zZ3N0ciAiIgorLSJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgorLSJQT1QtQ3JlYXRpb24tRGF0ZTogMTk5OC0xMi0zMCAwODo0OSswMTAwXG4iCisrIlByb2plY3QtSWQtVmVyc2lvbjogbHJ6c3ogMC4xMi4yMFxuIgorKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCisrIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE5LTExLTI2IDExOjM5KzAwMDBcbiIKKyAiUE8tUmV2aXNpb24tRGF0ZTogWUVBUi1NTy1EQSBITzpNSStaT05FXG4iCisgIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgorICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgorKyJMYW5ndWFnZTogXG4iCisgIk1JTUUtVmVyc2lvbjogMS4wXG4iCisgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1DSEFSU0VUXG4iCistIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IEVOQ09ESU5HXG4iCisrIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKKyAKKyAjOiBzcmMvbHN6LmM6MjI4CisgbXNnaWQgImlvX21vZGUoLDIpIGluIHJic2IuYyBub3QgaW1wbGVtZW50ZWRcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MjAxIHNyYy9sc3ouYzoyMzAKKysjOiBzcmMvbHN6LmM6MjMwIHNyYy9scnouYzoyMDEKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJjYXVnaHQgc2lnbmFsICVkOyBleGl0aW5nIgorIG1zZ3N0ciAiIgorQEAgLTQ1LDcgKzQ4LDcgQEAgbXNnc3RyICIiCisgbXNnaWQgImZyYW1lbGVuZ3RoIG91dCBvZiByYW5nZSAzMi4uJWxkIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozMjMgc3JjL2xzei5jOjQ1MAorKyM6IHNyYy9sc3ouYzo0NTAgc3JjL2xyei5jOjMyMworIG1zZ2lkICJtaW5fYnBzIgorIG1zZ3N0ciAiIgorIAorQEAgLTUzLDY1ICs1Niw2NSBAQCBtc2dzdHIgIiIKKyBtc2dpZCAibWluX2JwcyBtdXN0IGJlID49IDAiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjMyOSBzcmMvbHN6LmM6NDU4CisrIzogc3JjL2xzei5jOjQ1OCBzcmMvbHJ6LmM6MzI5CisgbXNnaWQgIm1pbl9icHNfdGltZSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzMxIHNyYy9sc3ouYzo0NjAKKysjOiBzcmMvbHN6LmM6NDYwIHNyYy9scnouYzozMzEKKyBtc2dpZCAibWluX2Jwc190aW1lIG11c3QgYmUgPiAxIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozNDcgc3JjL2xzei5jOjQ4NAorKyM6IHNyYy9sc3ouYzo0ODQgc3JjL2xyei5jOjM0NworIG1zZ2lkICJob3VyIHRvIGxhcmdlICgwLi4yMykiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM0OSBzcmMvbHN6LmM6NDg2CisrIzogc3JjL2xzei5jOjQ4NiBzcmMvbHJ6LmM6MzQ5CisgbXNnaWQgInVucGFyc2FibGUgc3RvcCB0aW1lXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM1MyBzcmMvbHN6LmM6NDkwCisrIzogc3JjL2xzei5jOjQ5MCBzcmMvbHJ6LmM6MzUzCisgbXNnaWQgIm1pbnV0ZSB0byBsYXJnZSAoMC4uNTkpIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozNjMgc3JjL2xyei5jOjM3MCBzcmMvbHN6LmM6NTAwIHNyYy9sc3ouYzo1MDcKKysjOiBzcmMvbHN6LmM6NTAwIHNyYy9sc3ouYzo1MDcgc3JjL2xyei5jOjM2MyBzcmMvbHJ6LmM6MzcwCisgbXNnaWQgInN0b3AgdGltZSB0byBzbWFsbCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzY4IHNyYy9sc3ouYzo1MDUKKysjOiBzcmMvbHN6LmM6NTA1IHNyYy9scnouYzozNjgKKyBtc2dpZCAic3RvcC1hdCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6Mzk5IHNyYy9sc3ouYzo1MTYKKysjOiBzcmMvbHN6LmM6NTE2IHNyYy9scnouYzozOTkKKyBtc2dpZCAidGltZW91dCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDAxIHNyYy9sc3ouYzo1MTgKKysjOiBzcmMvbHN6LmM6NTE4IHNyYy9scnouYzo0MDEKKyBtc2dpZCAidGltZW91dCBvdXQgb2YgcmFuZ2UgMTAuLjEwMDAiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQxNyBzcmMvbHN6LmM6NTI2CisrIzogc3JjL2xzei5jOjUyNiBzcmMvbHJ6LmM6NDE3CisgbXNnaWQgInNlY3VyaXR5IHZpb2xhdGlvbjogY2FuJ3QgZG8gdGhhdCB1bmRlciByZXN0cmljdGVkIHNoZWxsXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQwNyBzcmMvbHN6LmM6NTMzCisrIzogc3JjL2xzei5jOjUzMyBzcmMvbHJ6LmM6NDA3CisgbXNnaWQgIndpbmRvdyBzaXplIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo0MzIgc3JjL2xyei5jOjQzOSBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMKKysjOiBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMgc3JjL2xyei5jOjQzMiBzcmMvbHJ6LmM6NDM5CisgbXNnaWQgImNhbm5vdCB0dXJub2ZmIHN5c2xvZyIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDU0IHNyYy9sc3ouYzo1NzEKKysjOiBzcmMvbHN6LmM6NTcxIHNyYy9scnouYzo0NTQKKyBtc2dpZCAic3RhcnR1cCBkZWxheSIKKyBtc2dzdHIgIiIKKyAKKysjOiBzcmMvbHN6LmM6NTgzIHNyYy9sc3ouYzo2OTIgc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisgIzogc3JjL2xyei5jOjQ3MCBzcmMvbHJ6LmM6NzU1IHNyYy9scnouYzoxMTE3IHNyYy9scnouYzoxMjQzIHNyYy9scnouYzoxMzAwCistIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEgc3JjL2xzei5jOjU4MyBzcmMvbHN6LmM6NjkyCistIzogc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisrIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEKKyBtc2dpZCAib3V0IG9mIG1lbW9yeSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDgwIHNyYy9sc3ouYzo1OTUKKysjOiBzcmMvbHN6LmM6NTk1IHNyYy9scnouYzo0ODAKKyBtc2dpZCAidGhpcyBwcm9ncmFtIHdhcyBuZXZlciBpbnRlbmRlZCB0byBiZSB1c2VkIHNldHVpZFxuIgorIG1zZ3N0ciAiIgorIAorQEAgLTEyMCwxNCArMTIzLDE1IEBAIG1zZ2lkICJuZWVkIGF0IGxlYXN0IG9uZSBmaWxlIHRvIHNlbmQiCisgbXNnc3RyICIiCisgCisgIzogc3JjL2xzei5jOjYyOAorKyMsIGMtZm9ybWF0CisgbXNnaWQgIkNhbid0IHNlbmQgY29tbWFuZCBpbiByZXN0cmljdGVkIG1vZGVcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTI0IHNyYy9sc3ouYzo2NTUKKysjOiBzcmMvbHN6LmM6NjU1IHNyYy9scnouYzo1MjQKKyBtc2dpZCAiaG9zdG5hbWUgdG9vIGxvbmdcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTM5IHNyYy9sc3ouYzo2NzAKKysjOiBzcmMvbHN6LmM6NjcwIHNyYy9scnouYzo1MzkKKyBtc2dpZCAiaWxsZWdhbCBzZXJ2ZXIgYWRkcmVzc1xuIgorIG1zZ3N0ciAiIgorIAorQEAgLTEzNSwxMSArMTM5LDExIEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJjYW4gcmVhZCBvbmx5IG9uZSBmaWxlIGZyb20gc3RkaW4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjU3MSBzcmMvbHN6LmM6ODA2CisrIzogc3JjL2xzei5jOjgwNiBzcmMvbHJ6LmM6NTcxCisgbXNnaWQgIlRyYW5zZmVyIGluY29tcGxldGVcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTczIHNyYy9sc3ouYzo4MDgKKysjOiBzcmMvbHN6LmM6ODA4IHNyYy9scnouYzo1NzMKKyBtc2dpZCAiVHJhbnNmZXIgY29tcGxldGVcbiIKKyBtc2dzdHIgIiIKKyAKK0BAIC0xOTksNyArMjAzLDcgQEAgbXNnc3RyICIiCisgbXNnaWQgInNlY3VyaXR5IHZpb2xhdGlvbjogbm90IGFsbG93ZWQgdG8gdXBsb2FkIGZyb20gJXMiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjEzOTIgc3JjL2xzei5jOjEwNDYKKysjOiBzcmMvbHN6LmM6MTA0NiBzcmMvbHJ6LmM6MTM5MgorICMsIGMtZm9ybWF0CisgbXNnaWQgImNhbm5vdCBvcGVuICVzIgorIG1zZ3N0ciAiIgorQEAgLTI5MCwxMiArMjk0LDEyIEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJSZXRyeSBDb3VudCBFeGNlZWRlZCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTkzIHNyYy9sc3ouYzoxNTIxCisrIzogc3JjL2xzei5jOjE1MjEgc3JjL2xyei5jOjU5MworICMsIGMtZm9ybWF0CisgbXNnaWQgIlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTk4IHNyYy9sc3ouYzoxNTI2CisrIzogc3JjL2xzei5jOjE1MjYgc3JjL2xyei5jOjU5OAorICMsIGMtZm9ybWF0CisgbXNnaWQgIiVzIHZlcnNpb24gJXNcbiIKKyBtc2dzdHIgIiIKK0BAIC0zMTQsNyArMzE4LDcgQEAgbXNnc3RyICIiCisgbXNnaWQgIlNlbmQgZmlsZShzKSB3aXRoIFpNT0RFTS9ZTU9ERU0vWE1PREVNIHByb3RvY29sXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjYwNCBzcmMvbHN6LmM6MTUzNAorKyM6IHNyYy9sc3ouYzoxNTM0IHNyYy9scnouYzo2MDQKKyBtc2dpZCAiIgorICIgICAgKFgpID0gb3B0aW9uIGFwcGxpZXMgdG8gWE1PREVNIG9ubHlcbiIKKyAiICAgIChZKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFlNT0RFTSBvbmx5XG4iCitAQCAtMzc4LDcgKzM4Miw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJnb3QgWlJRSU5JVCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MTA3NCBzcmMvbHJ6LmM6MTc4NyBzcmMvbHN6LmM6MTc5MgorKyM6IHNyYy9sc3ouYzoxNzkyIHNyYy9scnouYzoxMDc0IHNyYy9scnouYzoxNzg3CisgbXNnaWQgImdvdCBaQ0FOIgorIG1zZ3N0ciAiIgorIAorQEAgLTQzOCw2ICs0NDIsMTAgQEAgbXNnaWQgIiIKKyAiY291bnRlbTogVG90YWwgJWQgJWxkXG4iCisgbXNnc3RyICIiCisgCisrIzogc3JjL3ptLmM6OTEKKyttc2dpZCAiQmFkIENSQyIKKyttc2dzdHIgIiIKKysKKyAjOiBzcmMvem0uYzoyNDQKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJCYWQgZXNjYXBlIHNlcXVlbmNlICV4IgorQEAgLTQ0Nyw3ICs0NTUsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiU2VuZGVyIENhbmNlbGVkIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo5OTcgc3JjL3ptLmM6NTg1IHNyYy96bS5jOjY0NAorKyM6IHNyYy96bS5jOjU4NSBzcmMvem0uYzo2NDQgc3JjL2xyei5jOjk5NworIG1zZ2lkICJUSU1FT1VUIgorIG1zZ3N0ciAiIgorIAorQEAgLTY3OCwxMyArNjg2LDExIEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJTa2lwcGVkIgorIG1zZ3N0ciAiIgorIAorLSMuIHRvbyBiYWQKKyAjOiBzcmMvbHJ6LmM6MjA2NAorICMsIGMtZm9ybWF0CisgbXNnaWQgInJ6ZmlsZTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiCisgbXNnc3RyICIiCisgCistIy4gdG9vIGJhZAorICM6IHNyYy9scnouYzoyMDc5CisgbXNnaWQgInJ6ZmlsZTogcmVhY2hlZCBzdG9wIHRpbWUiCisgbXNnc3RyICIiCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMgbHJ6c3otMC4xMi4yMC9wby9NYWtldmFycworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL01ha2V2YXJzCTIwMTktMTEtMjUgMTg6MDk6NTIuMDAwMDAwMDAwICswMDAwCitAQCAtMCwwICsxLDc4IEBACisrIyBNYWtlZmlsZSB2YXJpYWJsZXMgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KKysKKysjIFVzdWFsbHkgdGhlIG1lc3NhZ2UgZG9tYWluIGlzIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCisrRE9NQUlOID0gJChQQUNLQUdFKQorKworKyMgVGhlc2UgdHdvIHZhcmlhYmxlcyBkZXBlbmQgb24gdGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5LgorK3N1YmRpciA9IHBvCisrdG9wX2J1aWxkZGlyID0gLi4KKysKKysjIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byB4Z2V0dGV4dC4KKytYR0VUVEVYVF9PUFRJT05TID0gLS1rZXl3b3JkPV8gLS1rZXl3b3JkPU5fCisrCisrIyBUaGlzIGlzIHRoZSBjb3B5cmlnaHQgaG9sZGVyIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBoZWFkZXIgb2YgdGhlCisrIyAkKERPTUFJTikucG90IGZpbGUuICBTZXQgdGhpcyB0byB0aGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGUgc3Vycm91bmRpbmcKKysjIHBhY2thZ2UuICAoTm90ZSB0aGF0IHRoZSBtc2dzdHIgc3RyaW5ncywgZXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncworKyMgc291cmNlcywgYmVsb25nIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBwYWNrYWdlLikgIFRyYW5zbGF0b3JzIGFyZQorKyMgZXhwZWN0ZWQgdG8gdHJhbnNmZXIgdGhlIGNvcHlyaWdodCBmb3IgdGhlaXIgdHJhbnNsYXRpb25zIHRvIHRoaXMgcGVyc29uCisrIyBvciBlbnRpdHksIG9yIHRvIGRpc2NsYWltIHRoZWlyIGNvcHlyaWdodC4gIFRoZSBlbXB0eSBzdHJpbmcgc3RhbmRzIGZvcgorKyMgdGhlIHB1YmxpYyBkb21haW47IGluIHRoaXMgY2FzZSB0aGUgdHJhbnNsYXRvcnMgYXJlIGV4cGVjdGVkIHRvIGRpc2NsYWltCisrIyB0aGVpciBjb3B5cmlnaHQuCisrQ09QWVJJR0hUX0hPTERFUiA9IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyB0ZWxscyB3aGV0aGVyIG9yIG5vdCB0byBwcmVwZW5kICJHTlUgIiBwcmVmaXggdG8gdGhlIHBhY2thZ2UKKysjIG5hbWUgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUgJChET01BSU4pLnBvdCBmaWxlLgorKyMgUG9zc2libGUgdmFsdWVzIGFyZSAieWVzIiwgIm5vIiwgb3IgZW1wdHkuICBJZiBpdCBpcyBlbXB0eSwgdHJ5IHRvCisrIyBkZXRlY3QgaXQgYXV0b21hdGljYWxseSBieSBzY2FubmluZyB0aGUgZmlsZXMgaW4gJCh0b3Bfc3JjZGlyKSBmb3IKKysjICJHTlUgcGFja2FnZW5hbWUiIHN0cmluZy4KKytQQUNLQUdFX0dOVSA9CisrCisrIyBUaGlzIGlzIHRoZSBlbWFpbCBhZGRyZXNzIG9yIFVSTCB0byB3aGljaCB0aGUgdHJhbnNsYXRvcnMgc2hhbGwgcmVwb3J0CisrIyBidWdzIGluIHRoZSB1bnRyYW5zbGF0ZWQgc3RyaW5nczoKKysjIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCisrIyAgIGluIHRoZSBHTlUgZ2V0dGV4dCBkb2N1bWVudGF0aW9uLCBzZWN0aW9uICdQcmVwYXJpbmcgU3RyaW5ncycuCisrIyAtIFN0cmluZ3Mgd2hpY2ggdXNlIHVuY2xlYXIgdGVybXMgb3IgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbnRleHQgdG8gYmUKKysjICAgdW5kZXJzdG9vZC4KKysjIC0gU3RyaW5ncyB3aGljaCBtYWtlIGludmFsaWQgYXNzdW1wdGlvbnMgYWJvdXQgbm90YXRpb24gb2YgZGF0ZSwgdGltZSBvcgorKyMgICBtb25leS4KKysjIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KKysjIC0gSW5jb3JyZWN0IEVuZ2xpc2ggc3BlbGxpbmcuCisrIyAtIEluY29ycmVjdCBmb3JtYXR0aW5nLgorKyMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycworKyMgY2FuIHdyaXRlIHRvIHdpdGhvdXQgYmVpbmcgc3Vic2NyaWJlZCwgb3IgdGhlIFVSTCBvZiBhIHdlYiBwYWdlIHRocm91Z2gKKysjIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBjYW4gY29udGFjdCB5b3UuCisrTVNHSURfQlVHU19BRERSRVNTID0KKysKKysjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgbG9jYWxlIGNhdGVnb3JpZXMsIGJleW9uZCBMQ19NRVNTQUdFUywgZm9yIHdoaWNoIHRoZQorKyMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KKytFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyA9CisrCisrIyBUaGlzIHRlbGxzIHdoZXRoZXIgdGhlICQoRE9NQUlOKS5wb3QgZmlsZSBjb250YWlucyBtZXNzYWdlcyB3aXRoIGFuICdtc2djdHh0JworKyMgY29udGV4dC4gIFBvc3NpYmxlIHZhbHVlcyBhcmUgInllcyIgYW5kICJubyIuICBTZXQgdGhpcyB0byB5ZXMgaWYgdGhlCisrIyBwYWNrYWdlIHVzZXMgZnVuY3Rpb25zIHRha2luZyBhbHNvIGEgbWVzc2FnZSBjb250ZXh0LCBsaWtlIHBnZXR0ZXh0KCksIG9yCisrIyBpZiBpbiAkKFhHRVRURVhUX09QVElPTlMpIHlvdSBkZWZpbmUga2V5d29yZHMgd2l0aCBhIGNvbnRleHQgYXJndW1lbnQuCisrVVNFX01TR0NUWFQgPSBubworKworKyMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIG1zZ21lcmdlLgorKyMgVXNlZnVsIG9wdGlvbnMgYXJlIGluIHBhcnRpY3VsYXI6CisrIyAgIC0tcHJldmlvdXMgICAgICAgICAgICB0byBrZWVwIHByZXZpb3VzIG1zZ2lkcyBvZiB0cmFuc2xhdGVkIG1lc3NhZ2VzLAorKyMgICAtLXF1aWV0ICAgICAgICAgICAgICAgdG8gcmVkdWNlIHRoZSB2ZXJib3NpdHkuCisrTVNHTUVSR0VfT1BUSU9OUyA9CisrCisrIyBUaGVzZSBvcHRpb25zIGdldCBwYXNzZWQgdG8gbXNnaW5pdC4KKysjIElmIHlvdSB3YW50IHRvIGRpc2FibGUgbGluZSB3cmFwcGluZyB3aGVuIHdyaXRpbmcgUE8gZmlsZXMsIGFkZAorKyMgLS1uby13cmFwIHRvIE1TR01FUkdFX09QVElPTlMsIFhHRVRURVhUX09QVElPTlMsIGFuZAorKyMgTVNHSU5JVF9PUFRJT05TLgorK01TR0lOSVRfT1BUSU9OUyA9CisrCisrIyBUaGlzIHRlbGxzIHdoZXRoZXIgb3Igbm90IHRvIHJlZ2VuZXJhdGUgYSBQTyBmaWxlIHdoZW4gJChET01BSU4pLnBvdAorKyMgaGFzIGNoYW5nZWQuICBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ5ZXMiIGFuZCAibm8iLiAgU2V0IHRoaXMgdG8gbm8gaWYKKysjIHRoZSBQT1QgZmlsZSBpcyBjaGVja2VkIGluIHRoZSByZXBvc2l0b3J5IGFuZCB0aGUgdmVyc2lvbiBjb250cm9sCisrIyBwcm9ncmFtIGlnbm9yZXMgdGltZXN0YW1wcy4KKytQT19ERVBFTkRTX09OX1BPVCA9IHllcworKworKyMgVGhpcyB0ZWxscyB3aGV0aGVyIG9yIG5vdCB0byBmb3JjaWJseSB1cGRhdGUgJChET01BSU4pLnBvdCBhbmQKKysjIHJlZ2VuZXJhdGUgUE8gZmlsZXMgb24gIm1ha2UgZGlzdCIuICBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ5ZXMiIGFuZAorKyMgIm5vIi4gIFNldCB0aGlzIHRvIG5vIGlmIHRoZSBQT1QgZmlsZSBhbmQgUE8gZmlsZXMgYXJlIG1haW50YWluZWQKKysjIGV4dGVybmFsbHkuCisrRElTVF9ERVBFTkRTX09OX1VQREFURV9QTyA9IHllcworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3BvL3N0YW1wLWNhdC1pZCBscnpzei0wLjEyLjIwL3BvL3N0YW1wLWNhdC1pZAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vc3RhbXAtY2F0LWlkCTE5OTgtMTItMzAgMDc6NTA6MDEuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1jYXQtaWQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xICswLDAgQEAKKy10aW1lc3RhbXAKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1wbyBscnpzei0wLjEyLjIwL3BvL3N0YW1wLXBvCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1wbwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vc3RhbXAtcG8JMjAxOS0xMS0yNiAxMTo0MjowOS4wMDAwMDAwMDAgKzAwMDAKK0BAIC0wLDAgKzEgQEAKKyt0aW1lc3RhbXAKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0gbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbQkxOTk4LTEyLTI4IDA4OjM4OjQ3LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCTIwMTktMTEtMjUgMTY6MjI6NDkuMDAwMDAwMDAwICswMDAwCitAQCAtMiwxMyArMiwxMSBAQCBiaW5fUFJPR1JBTVM9bHJ6IGxzegorIGxyel9TT1VSQ0VTPWxyei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYworIGxzel9TT1VSQ0VTPWxzei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYworIG5vaW5zdF9IRUFERVJTID0gdGltaW5nLmggemdsb2JhbC5oIHptb2RlbS5oCistZGF0YWRpciA9ICQocHJlZml4KS9AREFUQURJUk5BTUVACisrZGF0YWRpciA9ICQocHJlZml4KS9zaGFyZQorIGxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCistQ0ZMQUdTPUBDRkxBR1NACisgRElTVENMRUFOX0ZJTEVTPWxyenN6YnVnCisgCistTERBREQgPSAuLi9saWIvbGliem1vZGVtLmEgQElOVExMSUJTQAorLUFVVE9NQUtFX09QVElPTlM9YW5zaTJrbnIKKytMREFERCA9IC4uL2xpYi9saWJ6bW9kZW0uYSBATElCSU5UTEAKKyBFWFRSQV9ESVNUID0gYW5zaTJrbnIuMSBhbnNpMmtuci5jIGxyenN6YnVnLmluCisgSU5DTFVERVMgPSAtSS4uIC1JJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLUkuLi9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9saWIKKyAjREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURPUz1cIkBob3N0X29zQFwiIC1EQ1BVPVwiQGhvc3RfY3B1QFwiCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvc3JjL3pnbG9iYWwuaCBscnpzei0wLjEyLjIwL3NyYy96Z2xvYmFsLmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3NyYy96Z2xvYmFsLmgJMTk5OC0xMi0yOSAxMjozNDo1OS4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3NyYy96Z2xvYmFsLmgJMjAxOS0xMS0yNSAxNjozMjo0Mi4wMDAwMDAwMDAgKzAwMDAKK0BAIC0xODAsOSArMTgwLDYgQEAgc3RydWN0IHRlcm1pb3M7CisgI2lmIEhBVkVfTE9DQUxFX0gKKyAjIGluY2x1ZGUgPGxvY2FsZS5oPgorICNlbmRpZgorLSNpZiAhSEFWRV9TRVRMT0NBTEUKKy0jIGRlZmluZSBzZXRsb2NhbGUoQ2F0ZWdvcnksIExvY2FsZSkgLyogZW1wdHkgKi8KKy0jZW5kaWYKKyAKKyAjaWYgRU5BQkxFX05MUworICMgaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3N0YW1wLWguaW4gbHJ6c3otMC4xMi4yMC9zdGFtcC1oLmluCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9zdGFtcC1oLmluCTE5OTgtMTItMzAgMDc6NTE6MDcuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9zdGFtcC1oLmluCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSArMCwwIEBACistdGltZXN0YW1wCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9nZXR0ZXh0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvZ2V0dGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEyNGExZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9nZXR0ZXh0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ODQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL0FCT1VULU5MUwkxOTk4LTA0LTI2IDA5OjIyOjMwLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvQUJPVVQtTkxTCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzIzNzUyOTUyIC0wNDAwCi1AQCAtMSwxNCArMSwxNCBAQAotIE5vdGVzIG9uIHRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gCi0tICAgRnJlZSBzb2Z0d2FyZSBpcyBnb2luZyBpbnRlcm5hdGlvbmFsISAgVGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdAotLWlzIGEgd2F5IHRvIGdldCBtYWludGFpbmVycyBvZiBmcmVlIHNvZnR3YXJlLCB0cmFuc2xhdG9ycywgYW5kIHVzZXJzIGFsbAotK0ZyZWUgc29mdHdhcmUgaXMgZ29pbmcgaW50ZXJuYXRpb25hbCEgIFRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QgaXMKLSthIHdheSB0byBnZXQgbWFpbnRhaW5lcnMgb2YgZnJlZSBzb2Z0d2FyZSwgdHJhbnNsYXRvcnMsIGFuZCB1c2VycyBhbGwKLSB0b2dldGhlciwgc28gdGhhdCB3aWxsIGdyYWR1YWxseSBiZWNvbWUgYWJsZSB0byBzcGVhayBtYW55IGxhbmd1YWdlcy4KLSBBIGZldyBwYWNrYWdlcyBhbHJlYWR5IHByb3ZpZGUgdHJhbnNsYXRpb25zIGZvciB0aGVpciBtZXNzYWdlcy4KLSAKLSAgICBJZiB5b3UgZm91bmQgdGhpcyBgQUJPVVQtTkxTJyBmaWxlIGluc2lkZSBhIGRpc3RyaWJ1dGlvbiwgeW91IG1heQotIGFzc3VtZSB0aGF0IHRoZSBkaXN0cmlidXRlZCBwYWNrYWdlIGRvZXMgdXNlIEdOVSBgZ2V0dGV4dCcgaW50ZXJuYWxseSwKLS1pdHNlbGYgYXZhaWxhYmxlIGF0IHlvdXIgbmVhcmVzdCBHTlUgYXJjaGl2ZSBzaXRlLiAgQnV0IHlvdSBkbyAqbm90KgotK2l0c2VsZiBhdmFpbGFibGUgYXQgeW91ciBuZWFyZXN0IEdOVSBhcmNoaXZlIHNpdGUuICBCdXQgeW91IGRvIF9ub3RfCi0gbmVlZCB0byBpbnN0YWxsIEdOVSBgZ2V0dGV4dCcgcHJpb3IgdG8gY29uZmlndXJpbmcsIGluc3RhbGxpbmcgb3IgdXNpbmcKLSB0aGlzIHBhY2thZ2Ugd2l0aCBtZXNzYWdlcyB0cmFuc2xhdGVkLgotIAotQEAgLTIyLDEwICsyMiwxMCBAQAotIGBnZXR0ZXh0JyB3aGljaCBpcyB1c2VkLiAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUKLSBgaW50bC9WRVJTSU9OJyBmaWxlLCBpbiBpbnRlcm5hdGlvbmFsaXplZCBwYWNrYWdlcy4KLSAKLS1PbmUgYWR2aXNlIGluIGFkdmFuY2UKLS09PT09PT09PT09PT09PT09PT09PT0KLStRdWljayBjb25maWd1cmF0aW9uIGFkdmljZQotKz09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gCi0tICAgSWYgeW91IHdhbnQgdG8gZXhwbG9pdCB0aGUgZnVsbCBwb3dlciBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgeW91Ci0rSWYgeW91IHdhbnQgdG8gZXhwbG9pdCB0aGUgZnVsbCBwb3dlciBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgeW91Ci0gc2hvdWxkIGNvbmZpZ3VyZSBpdCB1c2luZwotIAotICAgICAgLi9jb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQKLUBAIC0zNCw0MiArMzQsNDAgQEAKLSBwYWNrYWdlLCBkZXNwaXRlIHRoZSBleGlzdGVuY2Ugb2YgaW50ZXJuYXRpb25hbGl6aW5nIGNhcGFiaWxpdGllcyBpbiB0aGUKLSBvcGVyYXRpbmcgc3lzdGVtIHdoZXJlIHRoaXMgcGFja2FnZSBpcyBiZWluZyBpbnN0YWxsZWQuICBTbyBmYXIsIG9ubHkKLSB0aGUgYGdldHRleHQnIGltcGxlbWVudGF0aW9uIGluIHRoZSBHTlUgQyBsaWJyYXJ5IHZlcnNpb24gMiBwcm92aWRlcyBhcwotLW1hbnkgZmVhdHVyZXMgKHN1Y2ggYXMgbG9jYWxlIGFsaWFzIG9yIG1lc3NhZ2UgaW5oZXJpdGFuY2UpIGFzIHRoZQotLWltcGxlbWVudGF0aW9uIGhlcmUuICBJdCBpcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBvZmZlciB0aGlzIGFkZGl0aW9uYWwKLS1mdW5jdGlvbmFsaXR5IG9uIHRvcCBvZiBhIGBjYXRnZXRzJyBpbXBsZW1lbnRhdGlvbi4gIEZ1dHVyZSB2ZXJzaW9ucyBvZgotLUdOVSBgZ2V0dGV4dCcgd2lsbCB2ZXJ5IGxpa2VseSBjb252ZXkgZXZlbiBtb3JlIGZ1bmN0aW9uYWxpdHkuICBTbyBpdAotLW1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvIGNoYW5nZSB0byBHTlUgYGdldHRleHQnIGFzIHNvb24gYXMgcG9zc2libGUuCi0rbWFueSBmZWF0dXJlcyAoc3VjaCBhcyBsb2NhbGUgYWxpYXMsIG1lc3NhZ2UgaW5oZXJpdGFuY2UsIGF1dG9tYXRpYwotK2NoYXJzZXQgY29udmVyc2lvbiBvciBwbHVyYWwgZm9ybSBoYW5kbGluZykgYXMgdGhlIGltcGxlbWVudGF0aW9uIGhlcmUuCi0rSXQgaXMgYWxzbyBub3QgcG9zc2libGUgdG8gb2ZmZXIgdGhpcyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgb24gdG9wCi0rb2YgYSBgY2F0Z2V0cycgaW1wbGVtZW50YXRpb24uICBGdXR1cmUgdmVyc2lvbnMgb2YgR05VIGBnZXR0ZXh0JyB3aWxsCi0rdmVyeSBsaWtlbHkgY29udmV5IGV2ZW4gbW9yZSBmdW5jdGlvbmFsaXR5LiAgU28gaXQgbWlnaHQgYmUgYSBnb29kIGlkZWEKLSt0byBjaGFuZ2UgdG8gR05VIGBnZXR0ZXh0JyBhcyBzb29uIGFzIHBvc3NpYmxlLgotIAotLSAgIFNvIHlvdSBuZWVkIG5vdCBwcm92aWRlIHRoaXMgb3B0aW9uIGlmIHlvdSBhcmUgdXNpbmcgR05VIGxpYmMgMiBvcgotKyAgIFNvIHlvdSBuZWVkIF9ub3RfIHByb3ZpZGUgdGhpcyBvcHRpb24gaWYgeW91IGFyZSB1c2luZyBHTlUgbGliYyAyIG9yCi0geW91IGhhdmUgaW5zdGFsbGVkIGEgcmVjZW50IGNvcHkgb2YgdGhlIEdOVSBnZXR0ZXh0IHBhY2thZ2Ugd2l0aCB0aGUKLSBpbmNsdWRlZCBgbGliaW50bCcuCi0gCi0gSU5TVEFMTCBNYXR0ZXJzCi0gPT09PT09PT09PT09PT09Ci0gCi0tICAgU29tZSBwYWNrYWdlcyBhcmUgImxvY2FsaXphYmxlIiB3aGVuIHByb3Blcmx5IGluc3RhbGxlZDsgdGhlCi0tcHJvZ3JhbXMgdGhleSBjb250YWluIGNhbiBiZSBtYWRlIHRvIHNwZWFrIHlvdXIgb3duIG5hdGl2ZSBsYW5ndWFnZS4KLS1Nb3N0IHN1Y2ggcGFja2FnZXMgdXNlIEdOVSBgZ2V0dGV4dCcuICBPdGhlciBwYWNrYWdlcyBoYXZlIHRoZWlyIG93bgotLXdheXMgdG8gaW50ZXJuYXRpb25hbGl6YXRpb24sIHByZWRhdGluZyBHTlUgYGdldHRleHQnLgotK1NvbWUgcGFja2FnZXMgYXJlICJsb2NhbGl6YWJsZSIgd2hlbiBwcm9wZXJseSBpbnN0YWxsZWQ7IHRoZSBwcm9ncmFtcwotK3RoZXkgY29udGFpbiBjYW4gYmUgbWFkZSB0byBzcGVhayB5b3VyIG93biBuYXRpdmUgbGFuZ3VhZ2UuICBNb3N0IHN1Y2gKLStwYWNrYWdlcyB1c2UgR05VIGBnZXR0ZXh0Jy4gIE90aGVyIHBhY2thZ2VzIGhhdmUgdGhlaXIgb3duIHdheXMgdG8KLStpbnRlcm5hdGlvbmFsaXphdGlvbiwgcHJlZGF0aW5nIEdOVSBgZ2V0dGV4dCcuCi0gCi0gICAgQnkgZGVmYXVsdCwgdGhpcyBwYWNrYWdlIHdpbGwgYmUgaW5zdGFsbGVkIHRvIGFsbG93IHRyYW5zbGF0aW9uIG9mCi0tbWVzc2FnZXMuICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHdoZXRoZXIgdGhlIHN5c3RlbSBwcm92aWRlcwotLXVzYWJsZSBgY2F0Z2V0cycgKGlmIHVzaW5nIHRoaXMgaXMgc2VsZWN0ZWQgYnkgdGhlIGluc3RhbGxlcikgb3IKLS1gZ2V0dGV4dCcgZnVuY3Rpb25zLiAgSWYgbmVpdGhlciBpcyBhdmFpbGFibGUsIHRoZSBHTlUgYGdldHRleHQnIG93bgotK21lc3NhZ2VzLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVjdCB3aGV0aGVyIHRoZSBzeXN0ZW0gYWxyZWFkeQotK3Byb3ZpZGVzIHRoZSBHTlUgYGdldHRleHQnIGZ1bmN0aW9ucy4gIElmIG5vdCwgdGhlIEdOVSBgZ2V0dGV4dCcgb3duCi0gbGlicmFyeSB3aWxsIGJlIHVzZWQuICBUaGlzIGxpYnJhcnkgaXMgd2hvbGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhpcwotIHBhY2thZ2UsIHVzdWFsbHkgaW4gdGhlIGBpbnRsLycgc3ViZGlyZWN0b3J5LCBzbyBwcmlvciBpbnN0YWxsYXRpb24gb2YKLS10aGUgR05VIGBnZXR0ZXh0JyBwYWNrYWdlIGlzICpub3QqIHJlcXVpcmVkLiAgSW5zdGFsbGVycyBtYXkgdXNlCi0rdGhlIEdOVSBgZ2V0dGV4dCcgcGFja2FnZSBpcyBfbm90XyByZXF1aXJlZC4gIEluc3RhbGxlcnMgbWF5IHVzZQotIHNwZWNpYWwgb3B0aW9ucyBhdCBjb25maWd1cmF0aW9uIHRpbWUgZm9yIGNoYW5naW5nIHRoZSBkZWZhdWx0Ci0gYmVoYXZpb3VyLiAgVGhlIGNvbW1hbmRzOgotIAotICAgICAgLi9jb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQKLS0gICAgIC4vY29uZmlndXJlIC0td2l0aC1jYXRnZXRzCi0gICAgICAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtbmxzCi0gCi0td2lsbCByZXNwZWN0aXZlbHkgYnlwYXNzIGFueSBwcmUtZXhpc3RpbmcgYGNhdGdldHMnIG9yIGBnZXR0ZXh0JyB0byB1c2UKLS10aGUgaW50ZXJuYXRpb25hbGl6aW5nIHJvdXRpbmVzIHByb3ZpZGVkIHdpdGhpbiB0aGlzIHBhY2thZ2UsIGVuYWJsZQotLXRoZSB1c2Ugb2YgdGhlIGBjYXRnZXRzJyBmdW5jdGlvbnMgKGlmIGZvdW5kIG9uIHRoZSBsb2NhbGUgc3lzdGVtKSwgb3IKLS1lbHNlLCAqdG90YWxseSogZGlzYWJsZSB0cmFuc2xhdGlvbiBvZiBtZXNzYWdlcy4KLSt3aWxsIHJlc3BlY3RpdmVseSBieXBhc3MgYW55IHByZS1leGlzdGluZyBgZ2V0dGV4dCcgdG8gdXNlIHRoZQotK2ludGVybmF0aW9uYWxpemluZyByb3V0aW5lcyBwcm92aWRlZCB3aXRoaW4gdGhpcyBwYWNrYWdlLCBvciBlbHNlLAotK190b3RhbGx5XyBkaXNhYmxlIHRyYW5zbGF0aW9uIG9mIG1lc3NhZ2VzLgotIAotICAgIFdoZW4geW91IGFscmVhZHkgaGF2ZSBHTlUgYGdldHRleHQnIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSBhbmQgcnVuCi0gY29uZmlndXJlIHdpdGhvdXQgYW4gb3B0aW9uIGZvciB5b3VyIG5ldyBwYWNrYWdlLCBgY29uZmlndXJlJyB3aWxsCi1AQCAtODMsMTggKzgxLDEwIEBACi0gCi0gdG8gcHJldmVudCBhdXRvLWRldGVjdGlvbi4KLSAKLS0gICBCeSBkZWZhdWx0IHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3Mgd2lsbCBub3QgdGVzdCBmb3IgdGhlIGBjYXRnZXRzJwotLWZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgdGhleSB3aWxsIG5vdCBiZSB1c2VkLiAgVGhlIHJlYXNvbnMgYXJlIGFscmVhZHkKLS1naXZlbiBhYm92ZTogdGhlIGVtdWxhdGlvbiBvbiB0b3Agb2YgYGNhdGdldHMnIGNhbm5vdCBwcm92aWRlIGFsbCB0aGUKLS1leHRlbnNpb25zIHByb3ZpZGVkIGJ5IHRoZSBHTlUgYGdldHRleHQnIGxpYnJhcnkuICBJZiB5b3UgbmV2ZXJ0aGVsZXNzCi0td2FudCB0byB1c2UgdGhlIGBjYXRnZXRzJyBmdW5jdGlvbnMgdXNlCi0tCi0tICAgICAuL2NvbmZpZ3VyZSAtLXdpdGgtY2F0Z2V0cwotLQotLXRvIGVuYWJsZSB0aGUgdGVzdCBmb3IgYGNhdGdldHMnICh0aGlzIGNhdXNlcyBubyBoYXJtIGlmIGBjYXRnZXRzJyBpcwotLW5vdCBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0pLiAgSWYgeW91IHJlYWxseSBzZWxlY3QgdGhpcyBvcHRpb24gd2UKLS13b3VsZCBsaWtlIHRvIGhlYXIgYWJvdXQgdGhlIHJlYXNvbnMgYmVjYXVzZSB3ZSBjYW5ub3QgdGhpbmsgb2YgYW55Ci0tZ29vZCBvbmUgb3Vyc2VsZi4KLSsgICBUaGUgY29uZmlndXJhdGlvbiBwcm9jZXNzIHdpbGwgbm90IHRlc3QgZm9yIHRoZSBgY2F0Z2V0cycgZnVuY3Rpb24KLSthbmQgdGhlcmVmb3JlIGl0IHdpbGwgbm90IGJlIHVzZWQuICBUaGUgcmVhc29uIGlzIHRoYXQgZXZlbiBhbgotK2VtdWxhdGlvbiBvZiBgZ2V0dGV4dCcgb24gdG9wIG9mIGBjYXRnZXRzJyBjb3VsZCBub3QgcHJvdmlkZSBhbGwgdGhlCi0rZXh0ZW5zaW9ucyBvZiB0aGUgR05VIGBnZXR0ZXh0JyBsaWJyYXJ5LgotIAotICAgIEludGVybmF0aW9uYWxpemVkIHBhY2thZ2VzIGhhdmUgdXN1YWxseSBtYW55IGBwby9MTC5wbycgZmlsZXMsIHdoZXJlCi0gTEwgZ2l2ZXMgYW4gSVNPIDYzOSB0d28tbGV0dGVyIGNvZGUgaWRlbnRpZnlpbmcgdGhlIGxhbmd1YWdlLiAgVW5sZXNzCi1AQCAtMTA4LDU3ICs5OCw3MyBAQAotIFVzaW5nIFRoaXMgUGFja2FnZQotID09PT09PT09PT09PT09PT09PQotIAotLSAgIEFzIGEgdXNlciwgaWYgeW91ciBsYW5ndWFnZSBoYXMgYmVlbiBpbnN0YWxsZWQgZm9yIHRoaXMgcGFja2FnZSwgeW91Ci0rQXMgYSB1c2VyLCBpZiB5b3VyIGxhbmd1YWdlIGhhcyBiZWVuIGluc3RhbGxlZCBmb3IgdGhpcyBwYWNrYWdlLCB5b3UKLSBvbmx5IGhhdmUgdG8gc2V0IHRoZSBgTEFORycgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGFwcHJvcHJpYXRlCi0tSVNPIDYzOSBgTEwnIHR3by1sZXR0ZXIgY29kZSBwcmlvciB0byB1c2luZyB0aGUgcHJvZ3JhbXMgaW4gdGhlCi0tcGFja2FnZS4gIEZvciBleGFtcGxlLCBsZXQncyBzdXBwb3NlIHRoYXQgeW91IHNwZWFrIEdlcm1hbi4gIEF0IHRoZQotLXNoZWxsIHByb21wdCwgbWVyZWx5IGV4ZWN1dGUgYHNldGVudiBMQU5HIGRlJyAoaW4gYGNzaCcpLAotLWBleHBvcnQgTEFORzsgTEFORz1kZScgKGluIGBzaCcpIG9yIGBleHBvcnQgTEFORz1kZScgKGluIGBiYXNoJykuICBUaGlzCi0tY2FuIGJlIGRvbmUgZnJvbSB5b3VyIGAubG9naW4nIG9yIGAucHJvZmlsZScgZmlsZSwgb25jZSBhbmQgZm9yIGFsbC4KLStgTExfQ0MnIGNvbWJpbmF0aW9uLiAgSGVyZSBgTEwnIGlzIGFuIElTTyA2MzkgdHdvLWxldHRlciBsYW5ndWFnZSBjb2RlLAotK2FuZCBgQ0MnIGlzIGFuIElTTyAzMTY2IHR3by1sZXR0ZXIgY291bnRyeSBjb2RlLiAgRm9yIGV4YW1wbGUsIGxldCdzCi0rc3VwcG9zZSB0aGF0IHlvdSBzcGVhayBHZXJtYW4gYW5kIGxpdmUgaW4gR2VybWFueS4gIEF0IHRoZSBzaGVsbAotK3Byb21wdCwgbWVyZWx5IGV4ZWN1dGUgYHNldGVudiBMQU5HIGRlX0RFJyAoaW4gYGNzaCcpLAotK2BleHBvcnQgTEFORzsgTEFORz1kZV9ERScgKGluIGBzaCcpIG9yIGBleHBvcnQgTEFORz1kZV9ERScgKGluIGBiYXNoJykuCi0rVGhpcyBjYW4gYmUgZG9uZSBmcm9tIHlvdXIgYC5sb2dpbicgb3IgYC5wcm9maWxlJyBmaWxlLCBvbmNlIGFuZCBmb3IKLSthbGwuCi0gCi0tICAgQW4gb3BlcmF0aW5nIHN5c3RlbSBtaWdodCBhbHJlYWR5IG9mZmVyIG1lc3NhZ2UgbG9jYWxpemF0aW9uIGZvcgotLW1hbnkgb2YgaXRzIHByb2dyYW1zLCB3aGlsZSBvdGhlciBwcm9ncmFtcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGxvY2FsbHkKLS13aXRoIHRoZSBmdWxsIGNhcGFiaWxpdGllcyBvZiBHTlUgYGdldHRleHQnLiAgSnVzdCB1c2luZyBgZ2V0dGV4dCcKLS1leHRlbmRlZCBzeW50YXggZm9yIGBMQU5HJyB3b3VsZCBicmVhayBwcm9wZXIgbG9jYWxpemF0aW9uIG9mIGFscmVhZHkKLS1hdmFpbGFibGUgb3BlcmF0aW5nIHN5c3RlbSBwcm9ncmFtcy4gIEluIHRoaXMgY2FzZSwgdXNlcnMgc2hvdWxkIHNldAotLWJvdGggYExBTkdVQUdFJyBhbmQgYExBTkcnIHZhcmlhYmxlcyBpbiB0aGVpciBlbnZpcm9ubWVudCwgYXMgcHJvZ3JhbXMKLS11c2luZyBHTlUgYGdldHRleHQnIGdpdmUgcHJlZmVyZW5jZSB0byBgTEFOR1VBR0UnLiAgRm9yIGV4YW1wbGUsIHNvbWUKLS1Td2VkaXNoIHVzZXJzIHdvdWxkIHJhdGhlciByZWFkIHRyYW5zbGF0aW9ucyBpbiBHZXJtYW4gdGhhbiBFbmdsaXNoIGZvcgotLXdoZW4gU3dlZGlzaCBpcyBub3QgYXZhaWxhYmxlLiAgVGhpcyBpcyBlYXNpbHkgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcKLS1gTEFOR1VBR0UnIHRvIGBzdjpkZScgd2hpbGUgbGVhdmluZyBgTEFORycgdG8gYHN2Jy4KLSsgICBZb3UgbWlnaHQgdGhpbmsgdGhhdCB0aGUgY291bnRyeSBjb2RlIHNwZWNpZmljYXRpb24gaXMgcmVkdW5kYW50LgotK0J1dCBpbiBmYWN0LCBzb21lIGxhbmd1YWdlcyBoYXZlIGRpYWxlY3RzIGluIGRpZmZlcmVudCBjb3VudHJpZXMuICBGb3IKLStleGFtcGxlLCBgZGVfQVQnIGlzIHVzZWQgZm9yIEF1c3RyaWEsIGFuZCBgcHRfQlInIGZvciBCcmF6aWwuICBUaGUKLStjb3VudHJ5IGNvZGUgc2VydmVzIHRvIGRpc3Rpbmd1aXNoIHRoZSBkaWFsZWN0cy4KLSsKLSsgICBUaGUgbG9jYWxlIG5hbWluZyBjb252ZW50aW9uIG9mIGBMTF9DQycsIHdpdGggYExMJyBkZW5vdGluZyB0aGUKLStsYW5ndWFnZSBhbmQgYENDJyBkZW5vdGluZyB0aGUgY291bnRyeSwgaXMgdGhlIG9uZSB1c2Ugb24gc3lzdGVtcyBiYXNlZAotK29uIEdOVSBsaWJjLiAgT24gb3RoZXIgc3lzdGVtcywgc29tZSB2YXJpYXRpb25zIG9mIHRoaXMgc2NoZW1lIGFyZQotK3VzZWQsIHN1Y2ggYXMgYExMJyBvciBgTExfQ0MuRU5DT0RJTkcnLiAgWW91IGNhbiBnZXQgdGhlIGxpc3Qgb2YKLStsb2NhbGVzIHN1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSBmb3IgeW91ciBjb3VudHJ5IGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmQKLStgbG9jYWxlIC1hIHwgZ3JlcCAnXkxMJycuCi0rCi0rICAgTm90IGFsbCBwcm9ncmFtcyBoYXZlIHRyYW5zbGF0aW9ucyBmb3IgYWxsIGxhbmd1YWdlcy4gIEJ5IGRlZmF1bHQsIGFuCi0rRW5nbGlzaCBtZXNzYWdlIGlzIHNob3duIGluIHBsYWNlIG9mIGEgbm9uZXhpc3RlbnQgdHJhbnNsYXRpb24uICBJZiB5b3UKLSt1bmRlcnN0YW5kIG90aGVyIGxhbmd1YWdlcywgeW91IGNhbiBzZXQgdXAgYSBwcmlvcml0eSBsaXN0IG9mIGxhbmd1YWdlcy4KLStUaGlzIGlzIGRvbmUgdGhyb3VnaCBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgY2FsbGVkCi0rYExBTkdVQUdFJy4gIEdOVSBgZ2V0dGV4dCcgZ2l2ZXMgcHJlZmVyZW5jZSB0byBgTEFOR1VBR0UnIG92ZXIgYExBTkcnCi0rZm9yIHRoZSBwdXJwb3NlIG9mIG1lc3NhZ2UgaGFuZGxpbmcsIGJ1dCB5b3Ugc3RpbGwgbmVlZCB0byBoYXZlIGBMQU5HJwotK3NldCB0byB0aGUgcHJpbWFyeSBsYW5ndWFnZTsgdGhpcyBpcyByZXF1aXJlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUKLStzeXN0ZW0gbGlicmFyaWVzLiAgRm9yIGV4YW1wbGUsIHNvbWUgU3dlZGlzaCB1c2VycyB3aG8gd291bGQgcmF0aGVyCi0rcmVhZCB0cmFuc2xhdGlvbnMgaW4gR2VybWFuIHRoYW4gRW5nbGlzaCBmb3Igd2hlbiBTd2VkaXNoIGlzIG5vdAotK2F2YWlsYWJsZSwgc2V0IGBMQU5HVUFHRScgdG8gYHN2OmRlJyB3aGlsZSBsZWF2aW5nIGBMQU5HJyB0byBgc3ZfU0UnLgotKwotKyAgIFNwZWNpYWwgYWR2aWNlIGZvciBOb3J3ZWdpYW4gdXNlcnM6IFRoZSBsYW5ndWFnZSBjb2RlIGZvciBOb3J3ZWdpYW4KLStib2ttYSpsIGNoYW5nZWQgZnJvbSBgbm8nIHRvIGBuYicgcmVjZW50bHkgKGluIDIwMDMpLiAgRHVyaW5nIHRoZQotK3RyYW5zaXRpb24gcGVyaW9kLCB3aGlsZSBzb21lIG1lc3NhZ2UgY2F0YWxvZ3MgZm9yIHRoaXMgbGFuZ3VhZ2UgYXJlCi0raW5zdGFsbGVkIHVuZGVyIGBuYicgYW5kIHNvbWUgb2xkZXIgb25lcyB1bmRlciBgbm8nLCBpdCdzIHJlY29tbWVuZGVkCi0rZm9yIE5vcndlZ2lhbiB1c2VycyB0byBzZXQgYExBTkdVQUdFJyB0byBgbmI6bm8nIHNvIHRoYXQgYm90aCBuZXdlciBhbmQKLStvbGRlciB0cmFuc2xhdGlvbnMgYXJlIHVzZWQuCi0rCi0rICAgSW4gdGhlIGBMQU5HVUFHRScgZW52aXJvbm1lbnQgdmFyaWFibGUsIGJ1dCBub3QgaW4gdGhlIGBMQU5HJwotK2Vudmlyb25tZW50IHZhcmlhYmxlLCBgTExfQ0MnIGNvbWJpbmF0aW9ucyBjYW4gYmUgYWJicmV2aWF0ZWQgYXMgYExMJwotK3RvIGRlbm90ZSB0aGUgbGFuZ3VhZ2UncyBtYWluIGRpYWxlY3QuICBGb3IgZXhhbXBsZSwgYGRlJyBpcyBlcXVpdmFsZW50Ci0rdG8gYGRlX0RFJyAoR2VybWFuIGFzIHNwb2tlbiBpbiBHZXJtYW55KSwgYW5kIGBwdCcgdG8gYHB0X1BUJwotKyhQb3J0dWd1ZXNlIGFzIHNwb2tlbiBpbiBQb3J0dWdhbCkgaW4gdGhpcyBjb250ZXh0LgotIAotIFRyYW5zbGF0aW5nIFRlYW1zCi0gPT09PT09PT09PT09PT09PT0KLSAKLS0gICBGb3IgdGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdCB0byBiZSBhIHN1Y2Nlc3MsIHdlIG5lZWQgaW50ZXJlc3RlZAotK0ZvciB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0IHRvIGJlIGEgc3VjY2Vzcywgd2UgbmVlZCBpbnRlcmVzdGVkCi0gcGVvcGxlIHdobyBsaWtlIHRoZWlyIG93biBsYW5ndWFnZSBhbmQgd3JpdGUgaXQgd2VsbCwgYW5kIHdobyBhcmUgYWxzbwotIGFibGUgdG8gc3luZXJnaXplIHdpdGggb3RoZXIgdHJhbnNsYXRvcnMgc3BlYWtpbmcgdGhlIHNhbWUgbGFuZ3VhZ2UuCi0tRWFjaCB0cmFuc2xhdGlvbiB0ZWFtIGhhcyBpdHMgb3duIG1haWxpbmcgbGlzdCwgY291cnRlc3kgb2YgTGludXgKLS1JbnRlcm5hdGlvbmFsLiAgWW91IG1heSByZWFjaCB5b3VyIHRyYW5zbGF0aW9uIHRlYW0gYXQgdGhlIGFkZHJlc3MKLS1gTExAbGkub3JnJywgcmVwbGFjaW5nIExMIGJ5IHRoZSB0d28tbGV0dGVyIElTTyA2MzkgY29kZSBmb3IgeW91cgotLWxhbmd1YWdlLiAgTGFuZ3VhZ2UgY29kZXMgYXJlICpub3QqIHRoZSBzYW1lIGFzIHRoZSBjb3VudHJ5IGNvZGVzIGdpdmVuCi0taW4gSVNPIDMxNjYuICBUaGUgZm9sbG93aW5nIHRyYW5zbGF0aW9uIHRlYW1zIGV4aXN0LCBhcyBvZiBBdWd1c3QgMTk5NzoKLS0KLS0gICAgIENoaW5lc2UgYHpoJywgQ3plY2ggYGNzJywgRGFuaXNoIGBkYScsIER1dGNoIGBubCcsIEVuZ2xpc2ggYGVuJywKLS0gICAgIEVzcGVyYW50byBgZW8nLCBGaW5uaXNoIGBmaScsIEZyZW5jaCBgZnInLCBHZXJtYW4gYGRlJywgSHVuZ2FyaWFuCi0tICAgICBgaHUnLCBJcmlzaCBgZ2EnLCBJdGFsaWFuIGBpdCcsIEluZG9uZXNpYW4gYGlkJywgSmFwYW5lc2UgYGphJywKLS0gICAgIEtvcmVhbiBga28nLCBMYXRpbiBgbGEnLCBOb3J3ZWdpYW4gYG5vJywgUGVyc2lhbiBgZmEnLCBQb2xpc2gKLS0gICAgIGBwbCcsIFBvcnR1Z3Vlc2UgYHB0JywgUnVzc2lhbiBgcnUnLCBTbG92ZW5pYW4gYHNsJywgU3BhbmlzaCBgZXMnLAotLSAgICAgU3dlZGlzaCBgc3YnLCBhbmQgVHVya2lzaCBgdHInLgotLQotLUZvciBleGFtcGxlLCB5b3UgbWF5IHJlYWNoIHRoZSBDaGluZXNlIHRyYW5zbGF0aW9uIHRlYW0gYnkgd3JpdGluZyB0bwotLWB6aEBsaS5vcmcnLgotK0VhY2ggdHJhbnNsYXRpb24gdGVhbSBoYXMgaXRzIG93biBtYWlsaW5nIGxpc3QuICBUaGUgdXAtdG8tZGF0ZSBsaXN0IG9mCi0rdGVhbXMgY2FuIGJlIGZvdW5kIGF0IHRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QncyBob21lcGFnZSwKLStgaHR0cDovL3d3dy5pcm8udW1vbnRyZWFsLmNhL2NvbnRyaWIvcG8vSFRNTC8nLCBpbiB0aGUgIk5hdGlvbmFsIHRlYW1zIgotK2FyZWEuCi0gCi0tICAgSWYgeW91J2QgbGlrZSB0byB2b2x1bnRlZXIgdG8gKndvcmsqIGF0IHRyYW5zbGF0aW5nIG1lc3NhZ2VzLCB5b3UKLSsgICBJZiB5b3UnZCBsaWtlIHRvIHZvbHVudGVlciB0byBfd29ya18gYXQgdHJhbnNsYXRpbmcgbWVzc2FnZXMsIHlvdQotIHNob3VsZCBiZWNvbWUgYSBtZW1iZXIgb2YgdGhlIHRyYW5zbGF0aW5nIHRlYW0gZm9yIHlvdXIgb3duIGxhbmd1YWdlLgotLVRoZSBzdWJzY3JpYmluZyBhZGRyZXNzIGlzICpub3QqIHRoZSBzYW1lIGFzIHRoZSBsaXN0IGl0c2VsZiwgaXQgaGFzCi0rVGhlIHN1YnNjcmliaW5nIGFkZHJlc3MgaXMgX25vdF8gdGhlIHNhbWUgYXMgdGhlIGxpc3QgaXRzZWxmLCBpdCBoYXMKLSBgLXJlcXVlc3QnIGFwcGVuZGVkLiAgRm9yIGV4YW1wbGUsIHNwZWFrZXJzIG9mIFN3ZWRpc2ggY2FuIHNlbmQgYQotIG1lc3NhZ2UgdG8gYHN2LXJlcXVlc3RAbGkub3JnJywgaGF2aW5nIHRoaXMgbWVzc2FnZSBib2R5OgotIAotICAgICAgc3Vic2NyaWJlCi0gCi0gICAgS2VlcCBpbiBtaW5kIHRoYXQgdGVhbSBtZW1iZXJzIGFyZSBleHBlY3RlZCB0byBwYXJ0aWNpcGF0ZQotLSphY3RpdmVseSogaW4gdHJhbnNsYXRpb25zLCBvciBhdCBzb2x2aW5nIHRyYW5zbGF0aW9uYWwgZGlmZmljdWx0aWVzLAotK19hY3RpdmVseV8gaW4gdHJhbnNsYXRpb25zLCBvciBhdCBzb2x2aW5nIHRyYW5zbGF0aW9uYWwgZGlmZmljdWx0aWVzLAotIHJhdGhlciB0aGFuIG1lcmVseSBsdXJraW5nIGFyb3VuZC4gIElmIHlvdXIgdGVhbSBkb2VzIG5vdCBleGlzdCB5ZXQgYW5kCi0geW91IHdhbnQgdG8gc3RhcnQgb25lLCBvciBpZiB5b3UgYXJlIHVuc3VyZSBhYm91dCB3aGF0IHRvIGRvIG9yIGhvdyB0bwotIGdldCBzdGFydGVkLCBwbGVhc2Ugd3JpdGUgdG8gYHRyYW5zbGF0aW9uQGlyby51bW9udHJlYWwuY2EnIHRvIHJlYWNoIHRoZQotQEAgLTE3MSw0MyArMTc3LDU1OSBAQAotIEF2YWlsYWJsZSBQYWNrYWdlcwotID09PT09PT09PT09PT09PT09PQotIAotLSAgIExhbmd1YWdlcyBhcmUgbm90IGVxdWFsbHkgc3VwcG9ydGVkIGluIGFsbCBwYWNrYWdlcy4gIFRoZSBmb2xsb3dpbmcKLS1tYXRyaXggc2hvd3MgdGhlIGN1cnJlbnQgc3RhdGUgb2YgaW50ZXJuYXRpb25hbGl6YXRpb24sIGFzIG9mIEF1Z3VzdAotLTE5OTcuICBUaGUgbWF0cml4IHNob3dzLCBpbiByZWdhcmQgb2YgZWFjaCBwYWNrYWdlLCBmb3Igd2hpY2ggbGFuZ3VhZ2VzCi0tUE8gZmlsZXMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCB0byB0cmFuc2xhdGlvbiBjb29yZGluYXRpb24uCi0rTGFuZ3VhZ2VzIGFyZSBub3QgZXF1YWxseSBzdXBwb3J0ZWQgaW4gYWxsIHBhY2thZ2VzLiAgVGhlIGZvbGxvd2luZwotK21hdHJpeCBzaG93cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgYXMgb2YgSmFudWFyeQotKzIwMDQuICBUaGUgbWF0cml4IHNob3dzLCBpbiByZWdhcmQgb2YgZWFjaCBwYWNrYWdlLCBmb3Igd2hpY2ggbGFuZ3VhZ2VzCi0rUE8gZmlsZXMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCB0byB0cmFuc2xhdGlvbiBjb29yZGluYXRpb24sIHdpdGggYQotK3RyYW5zbGF0aW9uIHBlcmNlbnRhZ2Ugb2YgYXQgbGVhc3QgNTAlLgotIAotLSAgICAgUmVhZHkgUE8gZmlsZXMgICAgY3MgZGEgZGUgZW4gZXMgZmkgZnIgaXQgamEga28gbmwgbm8gcGwgcHQgc2wgc3YKLS0gICAgICAgICAgICAgICAgICAgICAuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS0gICAgIGJhc2ggICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwgIDMKLS0gICAgIGJpc29uICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwgIDMKLS0gICAgIGNsaXNwICAgICAgICAgICB8ICAgICAgIFtdIFtdIFtdICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLS0gICAgIGNwaW8gICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIHwgIDUKLS0gICAgIGRpZmZ1dGlscyAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIHwgIDUKLS0gICAgIGVuc2NyaXB0ICAgICAgICB8ICAgICAgIFtdICAgIFtdIFtdIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwgIDYKLS0gICAgIGZpbGV1dGlscyAgICAgICB8IFtdICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgIFtdIFtdIFtdIFtdIHwgMTAKLS0gICAgIGZpbmR1dGlscyAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdIFtdICAgIFtdIFtdICAgIFtdICAgICAgIFtdIHwgIDgKLS0gICAgIGZsZXggICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgIFtdIHwgIDQKLS0gICAgIGdjYWwgICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdIHwgIDUKLS0gICAgIGdldHRleHQgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIHwgMTEKLS0gICAgIGdyZXAgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIFtdIHwgIDkKLS0gICAgIGhlbGxvICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIHwgMTAKLS0gICAgIGlkLXV0aWxzICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwgIDMKLS0gICAgIGluZGVudCAgICAgICAgICB8ICAgIFtdIFtdICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgIHwgIDQKLS0gICAgIGxpYmMgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgIFtdICAgICAgIFtdIHwgIDcKLS0gICAgIG00ICAgICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgICAgIFtdIHwgIDUKLS0gICAgIG1ha2UgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgIFtdICAgICAgICAgIHwgIDYKLS0gICAgIG11c2ljICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwgIDIKLS0gICAgIHB0eCAgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIHwgIDgKLS0gICAgIHJlY29kZSAgICAgICAgICB8ICAgIFtdIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgIFtdIFtdIFtdIFtdIHwgIDkKLS0gICAgIHNoLXV0aWxzICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIHwgIDcKLS0gICAgIHNoYXJ1dGlscyAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIHwgIDUKLS0gICAgIHRhciAgICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdIFtdICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIHwgMTAKLS0gICAgIHRleGluZm8gICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEKLS0gICAgIHRleHR1dGlscyAgICAgICB8IFtdICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdICAgICAgIFtdIHwgIDkKLS0gICAgIHdkaWZmICAgICAgICAgICB8IFtdICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdIFtdIFtdICAgICAgIFtdIHwgIDgKLS0gICAgICAgICAgICAgICAgICAgICBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKLS0gICAgICAgMTYgbGFuZ3VhZ2VzICAgIGNzIGRhIGRlIGVuIGVzIGZpIGZyIGl0IGphIGtvIG5sIG5vIHBsIHB0IHNsIHN2Ci0tICAgICAgIDI3IHBhY2thZ2VzICAgICAgMyAgMiAyNCAgMSAxNyAgMSAyNiAgMiAgMSAxMSAyMCAgOSAxOSAgNyAgNyAxNyAgMTY3Ci0rICAgICBSZWFkeSBQTyBmaWxlcyAgICAgICBhZiBhbSBhciBheiBiZSBiZyBicyBjYSBjcyBkYSBkZSBlbCBlbiBlbl9HQiBlbyBlcwotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgYTJwcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgYWVnaXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYW50LXBob25lICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYW51YmlzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYXAtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYXNwZWxsICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmFzaCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgYmF0Y2hlbG9yICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmZkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgYmludXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgYmlzb24gICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgYmx1ZXotcGluICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgW10gfAotKyAgICAgY29uc29sZS10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgY29yZXV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgY3BpbyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZGFya3N0YXQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZGlmZnV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgZTJmc3Byb2dzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZW5zY3JpcHQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgIFtdICAgICAgICAgfAotKyAgICAgZXJyb3IgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgIFtdICAgICAgW10gfAotKyAgICAgZmV0Y2htYWlsICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgZmlsZXV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZmluZHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgZmxleCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZnNsaW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2F3ayAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2JpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2NhbCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2NjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dCAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dC1leGFtcGxlcyAgIHwgW10gICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dC1ydW50aW1lICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dC10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2ltcC1wcmludCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gICAgICAgIFtdICAgICAgW10gfAotKyAgICAgZ2xpdiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2x1bmFyY2xvY2sgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ251YmlmZiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ251Y2FzaCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgKCkgICAgICAgIFtdICAgICAgW10gfAotKyAgICAgZ251Y2FzaC1nbG9zc2FyeSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ251cGcgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgZ3BlLWFlcmlhbCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWJlYW0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNhbGVuZGFyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNsb2NrICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNvbmYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNvbnRhY3RzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWVkaXQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWdvICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWxvZ2luICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLW93bmVyaW5mbyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXNrZXRjaGJvb2sgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXN1ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRhc2ttYW5hZ2VyICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRpbWVzaGVldCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRvZGF5ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRvZG8gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3Bob3RvMiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ3Byb2YgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ3BzZHJpdmUgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgKCkgICAgICAgICAgKCkgfAotKyAgICAgZ3JhbWFkb2lyICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3JlcCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgZ3JldGwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ3RpY2sgICAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaGVsbG8gICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgaWQtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgaW5kZW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgaXNvXzMxNjYgICAgICAgICAgIHwgICAgICAgICAgW10gICAgW10gW10gW10gW10gW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgaXNvXzMxNjZfMSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgaXNvXzMxNjZfMiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzQyMTcgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgaXNvXzYzOSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAganBpbG90ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAganRhZyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgandob2lzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAga2JkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgbGF0cmluZSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgbGliYyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgbGliZ3Bld2lkZ2V0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGliaWNvbnYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgbGlmZWxpbmVzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGlseXBvbmQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaF9sZXNzb25zIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgKCkgfAotKyAgICAgbHlueCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgbTQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgbWFpbHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgbWFrZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbWFuLWRiICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gICAgICAgICAgICAgICAgKCkgfAotKyAgICAgbWluaWNvbSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbXlzZWNyZXRkaWFyeSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbmFubyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbmFub18xXzAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgb3Bjb2RlcyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgcGFydGVkICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgcHR4ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgcHl0aG9uICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgcmFkaXVzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgcmVjb2RlICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgcnBtICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2NyZWVtICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2Nyb2xsa2VlcGVyICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2VkICAgICAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgc2gtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2hhcmVkLW1pbWUtaW5mbyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2hhcnV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgc2lsa3kgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2tlbmNpbCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2tldGNoICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgW10gfAotKyAgICAgc291bmR0cmFja2VyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgc3AgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgdGFyICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgdGV4aW5mbyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgfAotKyAgICAgdGV4dHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgdGluICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICgpICAgICAgICAgfAotKyAgICAgdHAtcm9ib3QgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdHV4cGFpbnQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgIFtdICAgICAgW10gfAotKyAgICAgdW5pY29kZS1oYW4tdHJhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdW5pY29kZS10cmFuc2xhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdXRpbC1saW51eCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgdm9yYmlzLXRvb2xzICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgd2FzdGVzZWRnZSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgd2RpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgd2dldCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgW10gICAgW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgeGNoYXQgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgeGZyZWU4Nl94a2JfeG1sICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgeHBhZCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWYgYW0gYXIgYXogYmUgYmcgYnMgY2EgY3MgZGEgZGUgZWwgZW4gZW5fR0IgZW8gZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICA0ICAwICAwICAxICA5ICA0ICAxIDQwIDQxIDYwIDc4IDE3ICAxICAgNSAgIDEzIDY4Ci0rICAgICAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGV0IGV1IGZhIGZpIGZyIGdhIGdsIGhlIGhyIGh1IGlkIGlzIGl0IGphIGtvIGxnCi0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICBhMnBzICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICB8Ci0rICAgICBhZWdpcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhbnQtcGhvbmUgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhbnViaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhcC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhc3BlbGwgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiYXNoICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiYXRjaGVsb3IgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiZmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiaW51dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBiaXNvbiAgICAgICAgICAgICAgfCBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBibHVlei1waW4gICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjb25zb2xlLXRvb2xzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjb3JldXRpbHMgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBjcGlvICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBkYXJrc3RhdCAgICAgICAgICAgfCAgICAgICAgICAgICAoKSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBkaWZmdXRpbHMgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICBbXSBbXSAgICBbXSBbXSAgICAgICBbXSAgICAgICB8Ci0rICAgICBlMmZzcHJvZ3MgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBlbnNjcmlwdCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBlcnJvciAgICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBmZXRjaG1haWwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBmaWxldXRpbHMgICAgICAgICAgfCBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBmaW5kdXRpbHMgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICB8Ci0rICAgICBmbGV4ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBmc2xpbnQgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnYXdrICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBnYmlmZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2FsICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2MgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnZXR0ZXh0ICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBnZXR0ZXh0LWV4YW1wbGVzICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBnZXR0ZXh0LXJ1bnRpbWUgICAgfCAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICB8Ci0rICAgICBnZXR0ZXh0LXRvb2xzICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBnaW1wLXByaW50ICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBnbGl2ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbHVuYXJjbG9jayAgICAgICAgfCAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnViaWZmICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnVjYXNoICAgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBnbnVjYXNoLWdsb3NzYXJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBnbnVwZyAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBncGUtYWVyaWFsICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtYmVhbSAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY2FsZW5kYXIgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY2xvY2sgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY29uZiAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY29udGFjdHMgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtZWRpdCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtZ28gICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtbG9naW4gICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtb3duZXJpbmZvICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtc2tldGNoYm9vayAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtc3UgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdGFza21hbmFnZXIgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdGltZXNoZWV0ICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdG9kYXkgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdG9kbyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGhvdG8yICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBncHJvZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncHNkcml2ZSAgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAoKSAoKSAgICAgICB8Ci0rICAgICBncmFtYWRvaXIgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncmVwICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBncmV0bCAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBndGljayAgICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBoZWxsbyAgICAgICAgICAgICAgfCBbXSAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICB8Ci0rICAgICBpZC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBpbmRlbnQgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBpc29fMzE2NiAgICAgICAgICAgfCAgICBbXSAgICAgICBbXSBbXSAgICAgICBbXSBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8xICAgICAgICAgfCAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8yICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8zICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fNDIxNyAgICAgICAgICAgfCBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBpc29fNjM5ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqcGlsb3QgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICB8Ci0rICAgICBqdGFnICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqd2hvaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBrYmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsYXRyaW5lICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsZCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWJjICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBsaWJncGV3aWRnZXQgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWJpY29udiAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBsaWZlbGluZXMgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWx5cG9uZCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoX2xlc3NvbnMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBseW54ICAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBtNCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICAgICBbXSAgICAgICB8Ci0rICAgICBtYWlsdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBtYWtlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBtYW4tZGIgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAoKSAgICAgICB8Ci0rICAgICBtaW5pY29tICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBteXNlY3JldGRpYXJ5ICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBuYW5vICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBuYW5vXzFfMCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBvcGNvZGVzICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBwYXJ0ZWQgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBwdHggICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBweXRob24gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICByYWRpdXMgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICByZWNvZGUgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBycG0gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBzY3JlZW0gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzY3JvbGxrZWVwZXIgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzZWQgICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBzaC11dGlscyAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBzaGFyZWQtbWltZS1pbmZvICAgfCAgICAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzaGFydXRpbHMgICAgICAgICAgfCBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBzaWxreSAgICAgICAgICAgICAgfCAgICAgICAgICAoKSBbXSAgICAgICAgICAgICAoKSAgICAgICAoKSAgICAgICAgICB8Ci0rICAgICBza2VuY2lsICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBza2V0Y2ggICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzb3VuZHRyYWNrZXIgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBzcCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICB8Ci0rICAgICB0YXIgICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICBbXSAgICBbXSBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICB0ZXhpbmZvICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICB0ZXh0dXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSBbXSAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICB0aW4gICAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0cC1yb2JvdCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0dXhwYWludCAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICAgICBbXSAgICBbXSBbXSBbXSBbXSBbXSBbXSAgICB8Ci0rICAgICB1bmljb2RlLWhhbi10cmEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1bmljb2RlLXRyYW5zbGEuLi4gfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1dGlsLWxpbnV4ICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAoKSBbXSAgICAgICB8Ci0rICAgICB2b3JiaXMtdG9vbHMgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB3YXN0ZXNlZGdlICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB3ZGlmZiAgICAgICAgICAgICAgfCBbXSAgICAgICAgICBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICB3Z2V0ICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICBbXSAgICBbXSBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICB4Y2hhdCAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB4ZnJlZTg2X3hrYl94bWwgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB4cGFkICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBldCBldSBmYSBmaSBmciBnYSBnbCBoZSBociBodSBpZCBpcyBpdCBqYSBrbyBsZwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjIgIDIgIDEgMjYgMTA2IDI4IDI0ICA4IDEwIDQxIDMzICAxIDI2IDMzIDEyICAwCi0rICAgICAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGx0IGx2IG1rIG1uIG1zIG10IG5iIG5sIG5uIG5vIG5zbyBwbCBwdCBwdF9CUiBybyBydQotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgIGEycHMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICgpICAgICAoKSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBhZWdpcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgKCkgKCkgfAotKyAgICAgYW50LXBob25lICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGFudWJpcyAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBhcC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgKCkgICAgICAgICAgW10gICAgfAotKyAgICAgYXNwZWxsICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJhc2ggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICBbXSBbXSB8Ci0rICAgICBiYXRjaGVsb3IgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgYmZkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGJpbnV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBiaXNvbiAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gW10gfAotKyAgICAgYmx1ZXotcGluICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY29uc29sZS10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGNvcmV1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBjcGlvICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgZGFya3N0YXQgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdICAgIHwKLSsgICAgIGRpZmZ1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBlMmZzcHJvZ3MgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgZW5zY3JpcHQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGVycm9yICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSAgICB8Ci0rICAgICBmZXRjaG1haWwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICgpICAgICAgW10gfAotKyAgICAgZmlsZXV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGZpbmR1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBmbGV4ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgZnNsaW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnYXdrICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gICAgfAotKyAgICAgZ2JpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdjYWwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2MgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2V0dGV4dCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdldHRleHQtZXhhbXBsZXMgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICB8Ci0rICAgICBnZXR0ZXh0LXJ1bnRpbWUgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgZ2V0dGV4dC10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdpbXAtcHJpbnQgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbGl2ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gICAgfAotKyAgICAgZ2x1bmFyY2xvY2sgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdudWJpZmYgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnVjYXNoICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICgpICAgICAgW10gfAotKyAgICAgZ251Y2FzaC1nbG9zc2FyeSAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgICAgICAgIHwKLSsgICAgIGdudXBnICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBncGUtYWVyaWFsICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWJlYW0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1jYWxlbmRhciAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtY2xvY2sgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWNvbmYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1jb250YWN0cyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtZWRpdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWdvICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1sb2dpbiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtb3duZXJpbmZvICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXNrZXRjaGJvb2sgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1zdSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtdGFza21hbmFnZXIgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXRpbWVzaGVldCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS10b2RheSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtdG9kbyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3Bob3RvMiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdwcm9mICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICBbXSAgICB8Ci0rICAgICBncHNkcml2ZSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZ3JhbWFkb2lyICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdyZXAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgW10gICBbXSBbXSB8Ci0rICAgICBncmV0bCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3RpY2sgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGhlbGxvICAgICAgICAgICAgICB8ICAgIFtdICAgICAgIFtdICAgIFtdIFtdIFtdIFtdICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBpZC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gW10gfAotKyAgICAgaW5kZW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGlzb18zMTY2ICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8xICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fNDIxNyAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSBbXSAgICAgW10gW10gIFtdICAgICAgW10gfAotKyAgICAgaXNvXzYzOSAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGpwaWxvdCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICgpICAgICgpICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqdGFnICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgandob2lzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdICgpIHwKLSsgICAgIGtiZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICB8Ci0rICAgICBsYXRyaW5lICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgbGQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpYmMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICBbXSAgICAgW10gICAgICAgICB8Ci0rICAgICBsaWJncGV3aWRnZXQgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gICAgfAotKyAgICAgbGliaWNvbnYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGxpZmVsaW5lcyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWx5cG9uZCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbmdvdGVhY2hfbGVzc29ucyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBseW54ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgW10gfAotKyAgICAgbTQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIG1haWx1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBtYWtlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgICAgW10gfAotKyAgICAgbWFuLWRiICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIG1pbmljb20gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBteXNlY3JldGRpYXJ5ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gICAgfAotKyAgICAgbmFubyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIG5hbm9fMV8wICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBvcGNvZGVzICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgcGFydGVkICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgIFtdIFtdICBbXSAgICAgICAgIHwKLSsgICAgIHB0eCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdIFtdICAgIFtdICAgICBbXSBbXSAgW10gICBbXSBbXSB8Ci0rICAgICBweXRob24gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgcmFkaXVzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIHJlY29kZSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBycG0gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgW10gfAotKyAgICAgc2NyZWVtICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNjcm9sbGtlZXBlciAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBzZWQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gICAgfAotKyAgICAgc2gtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNoYXJlZC1taW1lLWluZm8gICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzaGFydXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2lsa3kgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpIHwKLSsgICAgIHNrZW5jaWwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgW10gICAgICAgICB8Ci0rICAgICBza2V0Y2ggICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gIFtdICAgICAgICAgfAotKyAgICAgc291bmR0cmFja2VyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNwICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0YXIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgW10gICAgIFtdICAgW10gICAgfAotKyAgICAgdGV4aW5mbyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHRleHR1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB0aW4gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdHAtcm9ib3QgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHR1eHBhaW50ICAgICAgICAgICB8IFtdICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICBbXSBbXSAgW10gICBbXSAgICB8Ci0rICAgICB1bmljb2RlLWhhbi10cmEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdW5pY29kZS10cmFuc2xhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHV0aWwtbGludXggICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICBbXSB8Ci0rICAgICB2b3JiaXMtdG9vbHMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gW10gfAotKyAgICAgd2FzdGVzZWRnZSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHdkaWZmICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICB3Z2V0ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgeGNoYXQgICAgICAgICAgICAgIHwgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHhmcmVlODZfeGtiX3htbCAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB4cGFkICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGx0IGx2IG1rIG1uIG1zIG10IG5iIG5sIG5uIG5vIG5zbyBwbCBwdCBwdF9CUiBybyBydQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgIDIgIDAgIDMgMTIgIDAgMTAgNjkgIDYgIDcgIDEgIDQwIDI2ICAzNiAgIDc2IDYzCi0rICAgICAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHNrIHNsIHNyIHN2IHRhIHRoIHRyIHVrIHZlbiB2aSB3YSB4aCB6aF9DTiB6aF9UVyB6dQotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgIGEycHMgICAgICAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2Ci0rICAgICBhZWdpcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgYW50LXBob25lICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGFudWJpcyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBhcC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgYXNwZWxsICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIGJhc2ggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBiYXRjaGVsb3IgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgYmZkICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYKLSsgICAgIGJpbnV0aWxzICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8ICA4Ci0rICAgICBiaXNvbiAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNAotKyAgICAgYmx1ZXotcGluICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgMTQKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCi0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgY29uc29sZS10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGNvcmV1dGlscyAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE2Ci0rICAgICBjcGlvICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNAotKyAgICAgZGFya3N0YXQgICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICAgIHwgMTIKLSsgICAgIGRpZmZ1dGlscyAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDIzCi0rICAgICBlMmZzcHJvZ3MgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgZW5zY3JpcHQgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKLSsgICAgIGVycm9yICAgICAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE1Ci0rICAgICBmZXRjaG1haWwgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMQotKyAgICAgZmlsZXV0aWxzICAgICAgICAgIHwgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgIHwgMTcKLSsgICAgIGZpbmR1dGlscyAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDI5Ci0rICAgICBmbGV4ICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMwotKyAgICAgZnNsaW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBnYXdrICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgotKyAgICAgZ2JpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIGdjYWwgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0Ci0rICAgICBnY2MgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNAotKyAgICAgZ2V0dGV4dCAgICAgICAgICAgIHwgW10gW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTYKLSsgICAgIGdldHRleHQtZXhhbXBsZXMgICB8IFtdICAgIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE0Ci0rICAgICBnZXR0ZXh0LXJ1bnRpbWUgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgfCAyMgotKyAgICAgZ2V0dGV4dC10b29scyAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTQKLSsgICAgIGdpbXAtcHJpbnQgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwCi0rICAgICBnbGl2ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ2x1bmFyY2xvY2sgICAgICAgIHwgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgMTMKLSsgICAgIGdudWJpZmYgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBnbnVjYXNoICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAgOQotKyAgICAgZ251Y2FzaC1nbG9zc2FyeSAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgIDgKLSsgICAgIGdudXBnICAgICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE3Ci0rICAgICBncGUtYWVyaWFsICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNwotKyAgICAgZ3BlLWJlYW0gICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDgKLSsgICAgIGdwZS1jYWxlbmRhciAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEzCi0rICAgICBncGUtY2xvY2sgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgZ3BlLWNvbmYgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIGdwZS1jb250YWN0cyAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDExCi0rICAgICBncGUtZWRpdCAgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgfCAxMgotKyAgICAgZ3BlLWdvICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIGdwZS1sb2dpbiAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEzCi0rICAgICBncGUtb3duZXJpbmZvICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxMwotKyAgICAgZ3BlLXNrZXRjaGJvb2sgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIGdwZS1zdSAgICAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwCi0rICAgICBncGUtdGFza21hbmFnZXIgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgZ3BlLXRpbWVzaGVldCAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTIKLSsgICAgIGdwZS10b2RheSAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEzCi0rICAgICBncGUtdG9kbyAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgfCAxMgotKyAgICAgZ3Bob3RvMiAgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTEKLSsgICAgIGdwcm9mICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBncHNkcml2ZSAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ3JhbWFkb2lyICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIGdyZXAgICAgICAgICAgICAgICB8ICAgIFtdIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI2Ci0rICAgICBncmV0bCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ3RpY2sgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcKLSsgICAgIGhlbGxvICAgICAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM0Ci0rICAgICBpZC11dGlscyAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgotKyAgICAgaW5kZW50ICAgICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjEKLSsgICAgIGlzb18zMTY2ICAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdICAgIFtdICAgICBbXSAgICAgICAgICAgICAgICAgICB8IDI3Ci0rICAgICBpc29fMzE2Nl8xICAgICAgICAgfCBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgotKyAgICAgaXNvXzMxNjZfMiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIGlzb18zMTY2XzMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICBpc29fNDIxNyAgICAgICAgICAgfCBbXSBbXSAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAyNAotKyAgICAgaXNvXzYzOSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEKLSsgICAgIGpwaWxvdCAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICBbXSAgICAgICAgW10gICAgW10gICAgICB8ICA5Ci0rICAgICBqdGFnICAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgandob2lzICAgICAgICAgICAgIHwgICAgICAgICAgKCkgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTEKLSsgICAgIGtiZCAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExCi0rICAgICBsYXRyaW5lICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgbGQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIGxpYmMgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDIwCi0rICAgICBsaWJncGV3aWRnZXQgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAxMwotKyAgICAgbGliaWNvbnYgICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gW10gICAgICAgIFtdICAgICBbXSAgICAgICAgICAgIHwgMjcKLSsgICAgIGxpZmVsaW5lcyAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICBsaWx5cG9uZCAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgbGluZ290ZWFjaCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIGxpbmdvdGVhY2hfbGVzc29ucyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICB8ICAwCi0rICAgICBseW54ICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNAotKyAgICAgbTQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTUKLSsgICAgIG1haWx1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICBtYWtlICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNgotKyAgICAgbWFuLWRiICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIG1pbmljb20gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExCi0rICAgICBteXNlY3JldGRpYXJ5ICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgbmFubyAgICAgICAgICAgICAgIHwgICAgICAgW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTcKLSsgICAgIG5hbm9fMV8wICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE3Ci0rICAgICBvcGNvZGVzICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgcGFydGVkICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTUKLSsgICAgIHB0eCAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIyCi0rICAgICBweXRob24gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgcmFkaXVzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIHJlY29kZSAgICAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCi0rICAgICBycG0gICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOQotKyAgICAgc2NyZWVtICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgIDIKLSsgICAgIHNjcm9sbGtlZXBlciAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1Ci0rICAgICBzZWQgICAgICAgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAotKyAgICAgc2gtdXRpbHMgICAgICAgICAgIHwgICAgW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQKLSsgICAgIHNoYXJlZC1taW1lLWluZm8gICB8ICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3Ci0rICAgICBzaGFydXRpbHMgICAgICAgICAgfCAgICAgICBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxNwotKyAgICAgc2lsa3kgICAgICAgICAgICAgIHwgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIHNrZW5jaWwgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2Ci0rICAgICBza2V0Y2ggICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgc291bmR0cmFja2VyICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcKLSsgICAgIHNwICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICB0YXIgICAgICAgICAgICAgICAgfCBbXSBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAyNAotKyAgICAgdGV4aW5mbyAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTQKLSsgICAgIHRleHR1dGlscyAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE2Ci0rICAgICB0aW4gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMQotKyAgICAgdHAtcm9ib3QgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIHR1eHBhaW50ICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICAgICAgICAgICB8IDI5Ci0rICAgICB1bmljb2RlLWhhbi10cmEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgdW5pY29kZS10cmFuc2xhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIHV0aWwtbGludXggICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1Ci0rICAgICB2b3JiaXMtdG9vbHMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOAotKyAgICAgd2FzdGVzZWRnZSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIHdkaWZmICAgICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4Ci0rICAgICB3Z2V0ICAgICAgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgfCAyNAotKyAgICAgeGNoYXQgICAgICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTUKLSsgICAgIHhmcmVlODZfeGtiX3htbCAgICB8IFtdICAgIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDExCi0rICAgICB4cGFkICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgICAgNjMgdGVhbXMgICAgICAgICAgIHNrIHNsIHNyIHN2IHRhIHRoIHRyIHVrIHZlbiB2aSB3YSB4aCB6aF9DTiB6aF9UVyB6dQotKyAgICAgIDEzMSBkb21haW5zICAgICAgICAgNDcgMTkgMjggODMgIDAgIDAgNTkgMTMgIDEgICAxIDExICAwICAyMiAgICAyMiAgICAwICAxMzczCi0gCi0gICAgU29tZSBjb3VudGVycyBpbiB0aGUgcHJlY2VkaW5nIG1hdHJpeCBhcmUgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZgotIHZpc2libGUgYmxvY2tzIGxldCB1cyBleHBlY3QuICBUaGlzIGlzIGJlY2F1c2UgYSBmZXcgZXh0cmEgUE8gZmlsZXMgYXJlCi1AQCAtMjIwLDYgKzc0MiwyNyBAQAotIGxhZyBiZXR3ZWVuIHRoZSBtZXJlIGV4aXN0ZW5jZSBhIFBPIGZpbGUgYW5kIGl0cyB3aWRlIGF2YWlsYWJpbGl0eSBpbiBhCi0gZGlzdHJpYnV0aW9uLgotIAotLSAgIElmIEF1Z3VzdCAxOTk3IHNlZW1zIHRvIGJlIG9sZCwgeW91IG1heSBmZXRjaCBhIG1vcmUgcmVjZW50IGNvcHkgb2YKLS10aGlzIGBBQk9VVC1OTFMnIGZpbGUgb24gbW9zdCBHTlUgYXJjaGl2ZSBzaXRlcy4KLSsgICBJZiBKYW51YXJ5IDIwMDQgc2VlbXMgdG8gYmUgb2xkLCB5b3UgbWF5IGZldGNoIGEgbW9yZSByZWNlbnQgY29weSBvZgotK3RoaXMgYEFCT1VULU5MUycgZmlsZSBvbiBtb3N0IEdOVSBhcmNoaXZlIHNpdGVzLiAgVGhlIG1vc3QgdXAtdG8tZGF0ZQotK21hdHJpeCB3aXRoIGZ1bGwgcGVyY2VudGFnZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBhdAotK2BodHRwOi8vd3d3Lmlyby51bW9udHJlYWwuY2EvY29udHJpYi9wby9IVE1ML21hdHJpeC5odG1sJy4KLSsKLStVc2luZyBgZ2V0dGV4dCcgaW4gbmV3IHBhY2thZ2VzCi0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKwotK0lmIHlvdSBhcmUgd3JpdGluZyBhIGZyZWVseSBhdmFpbGFibGUgcHJvZ3JhbSBhbmQgd2FudCB0bwotK2ludGVybmF0aW9uYWxpemUgaXQgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSBHTlUgYGdldHRleHQnIGluIHlvdXIKLStwYWNrYWdlLiAgT2YgY291cnNlIHlvdSBoYXZlIHRvIHJlc3BlY3QgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rTGljZW5zZSB3aGljaCBjb3ZlcnMgdGhlIHVzZSBvZiB0aGUgR05VIGBnZXR0ZXh0JyBsaWJyYXJ5LiAgVGhpcyBtZWFucwotK2luIHBhcnRpY3VsYXIgdGhhdCBldmVuIG5vbi1mcmVlIHByb2dyYW1zIGNhbiB1c2UgYGxpYmludGwnIGFzIGEgc2hhcmVkCi0rbGlicmFyeSwgd2hlcmVhcyBvbmx5IGZyZWUgc29mdHdhcmUgY2FuIHVzZSBgbGliaW50bCcgYXMgYSBzdGF0aWMKLStsaWJyYXJ5IG9yIHVzZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBgbGliaW50bCcuCi0rCi0rICAgT25jZSB0aGUgc291cmNlcyBhcmUgY2hhbmdlZCBhcHByb3ByaWF0ZWx5IGFuZCB0aGUgc2V0dXAgY2FuIGhhbmRsZQotK3RoZSB1c2Ugb2YgYGdldHRleHQnIHRoZSBvbmx5IHRoaW5nIG1pc3NpbmcgYXJlIHRoZSB0cmFuc2xhdGlvbnMuICBUaGUKLStGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHBhY2thZ2VzIHdoaWNoIGFyZSBub3QKLStkZXZlbG9wZWQgaW5zaWRlIHRoZSBHTlUgcHJvamVjdC4gIFRoZXJlZm9yZSB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gYWJvdmUKLSthcHBsaWVzIGFsc28gZm9yIGV2ZXJ5IG90aGVyIEZyZWUgU29mdHdhcmUgUHJvamVjdC4gIENvbnRhY3QKLStgdHJhbnNsYXRpb25AaXJvLnVtb250cmVhbC5jYScgdG8gbWFrZSB0aGUgYC5wb3QnIGZpbGVzIGF2YWlsYWJsZSB0bwotK3RoZSB0cmFuc2xhdGlvbiB0ZWFtcy4KLSAKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvQ2hhbmdlTG9nCTE5OTgtMTItMjkgMTc6NDk6NTYuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9DaGFuZ2VMb2cJMjAwNC0wOS0xMiAxNDo0MDozNS44NDY1MjE0NTYgLTA0MDAKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDA0LTA5LTEyICBnZXR0ZXh0aXplICA8YnVnLWdudS1nZXR0ZXh0QGdudS5vcmc+Ci0rCi0rCSogTWFrZWZpbGUuYW0gKEFDTE9DQUxfQU1GTEFHUyk6IE5ldyB2YXJpYWJsZS4KLSsJKEVYVFJBX0RJU1QpOiBBZGQgY29uZmlnLnJwYXRoLgotKwkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUKTogQWRkIG00L01ha2VmaWxlLgotKwkoQUNfT1VUUFVUKTogUmVtb3ZlIGNvbW1hbmQgdGhhdCBjcmVhdGVkIHBvL01ha2VmaWxlLgotKwkoQUNfTElOS19GSUxFUyk6IFJlbW92ZSBpbnZvY2F0aW9uLgotKwotIDE5OTgtMTItMjkJVXdlIE9oc2UgIDx1d2VAb2hzZS5kZT4KLSAKLSAJKiBzcmMvbHJ6LmM6IHJlbW92ZWQgc3RwY3B5IGNhbGwuCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2NvbmZpZy5ycGF0aAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvY29uZmlnLnJwYXRoCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzI5NzUyMDQwIC0wNDAwCi1AQCAtMCwwICsxLDU0OCBAQAotKyMhIC9iaW4vc2gKLSsjIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgc2V0IG9mIHZhcmlhYmxlcywgZGVzY3JpYmluZyBob3cgdG8gc2V0IHRoZQotKyMgcnVuIHRpbWUgc2VhcmNoIHBhdGggb2Ygc2hhcmVkIGxpYnJhcmllcyBpbiBhbiBleGVjdXRhYmxlLgotKyMKLSsjICAgQ29weXJpZ2h0IDE5OTYtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgVGFrZW4gZnJvbSBHTlUgbGlidG9vbCwgMjAwMQotKyMgICBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyMKLSsjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQotKyMgICBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKLSsjICAgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKLSsjICAgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKyMKLSsjIFRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhpcyBmaWxlIGlzIHRoZSBjYW5vbmljYWwgaG9zdCBzcGVjaWZpY2F0aW9uLAotKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KLSsjIG9yCi0rIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KLSsjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ0MsIEdDQywgTERGTEFHUywgTEQsIHdpdGhfZ251X2xkCi0rIyBzaG91bGQgYmUgc2V0IGJ5IHRoZSBjYWxsZXIuCi0rIwotKyMgVGhlIHNldCBvZiBkZWZpbmVkIHZhcmlhYmxlcyBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LgotKwotKyMgS25vd24gbGltaXRhdGlvbnM6Ci0rIyAtIE9uIElSSVggNi41IHdpdGggQ0M9ImNjIiwgdGhlIHJ1biB0aW1lIHNlYXJjaCBwYXRjaCBtdXN0IG5vdCBiZSBsb25nZXIKLSsjICAgdGhhbiAyNTYgYnl0ZXMsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgZHVtcCBjb3JlLiBUaGUgb25seQotKyMgICBrbm93biB3b3JrYXJvdW5kIGlzIHRvIGNob29zZSBzaG9ydGVyIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGJ1aWxkCi0rIyAgIGRpcmVjdG9yeSBhbmQvb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0rCi0rIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE0kVkMsCi0rIyB3aGljaCBuZWVkcyAnLmxpYicpLgotK2xpYmV4dD1hCi0rc2hyZXh0PS5zbwotKwotK2hvc3Q9IiQxIgotK2hvc3RfY3B1PWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotK2hvc3RfdmVuZG9yPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotK2hvc3Rfb3M9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0rCi0rIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIEFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMuCi0rCi0rd2w9Ci0raWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgIHdsPSctV2wsJwotK2Vsc2UKLSsgIGNhc2UgIiRob3N0X29zIiBpbgotKyAgICBhaXgqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIG1pbmd3KiB8IHB3MzIqIHwgb3MyKikKLSsgICAgICA7OwotKyAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIG5ld3NvczYpCi0rICAgICAgOzsKLSsgICAgbGludXgqKQotKyAgICAgIGNhc2UgJENDIGluCi0rICAgICAgICBpY2N8ZWNjKQotKyAgICAgICAgICB3bD0nLVdsLCcKLSsgICAgICAgICAgOzsKLSsgICAgICAgIGNjYykKLSsgICAgICAgICAgd2w9Jy1XbCwnCi0rICAgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIDs7Ci0rICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBzY28zLjJ2NSopCi0rICAgICAgOzsKLSsgICAgc29sYXJpcyopCi0rICAgICAgd2w9Jy1XbCwnCi0rICAgICAgOzsKLSsgICAgc3Vub3M0KikKLSsgICAgICB3bD0nLVFvcHRpb24gbGQgJwotKyAgICAgIDs7Ci0rICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBzeXN2NCpNUCopCi0rICAgICAgOzsKLSsgICAgdXRzNCopCi0rICAgICAgOzsKLSsgIGVzYWMKLStmaQotKwotKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTLgotKwotK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0raGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KLStoYXJkY29kZV9kaXJlY3Q9bm8KLStoYXJkY29kZV9taW51c19MPW5vCi0rCi0rY2FzZSAiJGhvc3Rfb3MiIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0rICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKLSsgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSsgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgd2l0aF9nbnVfbGQ9bm8KLSsgICAgZmkKLSsgICAgOzsKLSsgIG9wZW5ic2QqKQotKyAgICB3aXRoX2dudV9sZD1ubwotKyAgICA7OwotK2VzYWMKLSsKLStsZF9zaGxpYnM9eWVzCi0raWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotKyAgY2FzZSAiJGhvc3Rfb3MiIGluCi0rICAgIGFpeDMqIHwgYWl4NCogfCBhaXg1KikKLSsgICAgICAjIE9uIEFJWC9QUEMsIHRoZSBHTlUgbGlua2VyIGlzIHZlcnkgYnJva2VuCi0rICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIGFtaWdhb3MqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICMgU2FtdWVsIEEuIEZhbHZvIElJIDxrYzV0amFAZG9scGhpbi5vcGVucHJvamVjdHMubmV0PiByZXBvcnRzCi0rICAgICAgIyB0aGF0IHRoZSBzZW1hbnRpY3Mgb2YgZHluYW1pYyBsaWJyYXJpZXMgb24gQW1pZ2FPUywgYXQgbGVhc3QgdXAKLSsgICAgICAjIHRvIHZlcnNpb24gNCwgaXMgdG8gc2hhcmUgZGF0YSBhbW9uZyBtdWx0aXBsZSBwcm9ncmFtcyBsaW5rZWQKLSsgICAgICAjIHdpdGggdGhlIHNhbWUgZHluYW1pYyBsaWJyYXJ5LiAgU2luY2UgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZQotKyAgICAgICMgYmVoYXZpb3Igb2Ygc2hhcmVkIGxpYnJhcmllcyBvbiBvdGhlciBwbGF0Zm9ybXMsIHdlIGNhbiB1c2UKLSsgICAgICAjIHRoZW0uCi0rICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgOzsKLSsgICAgYmVvcyopCi0rICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICAgICA6Ci0rICAgICAgZWxzZQotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0rICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgOgotKyAgICAgIGVsc2UKLSsgICAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgbmV0YnNkKikKLSsgICAgICA7OwotKyAgICBzb2xhcmlzKiB8IHN5c3Y1KikKLSsgICAgICBpZiAkTEQgLXYgMj4mMSB8IGdyZXAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgICAgIDoKLSsgICAgICBlbHNlCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIHN1bm9zNCopCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICAgICA6Ci0rICAgICAgZWxzZQotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgZXNhYwotKyAgaWYgdGVzdCAiJGxkX3NobGlicyIgPSB5ZXM7IHRoZW4KLSsgICAgIyBVbmxpa2UgbGlidG9vbCwgd2UgdXNlIC1ycGF0aCBoZXJlLCBub3QgLS1ycGF0aCwgc2luY2UgdGhlIGRvY3VtZW50ZWQKLSsgICAgIyBvcHRpb24gb2YgR05VIGxkIGlzIGNhbGxlZCAtcnBhdGgsIG5vdCAtLXJwYXRoLgotKyAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0rICBmaQotK2Vsc2UKLSsgIGNhc2UgIiRob3N0X29zIiBpbgotKyAgICBhaXgzKikKLSsgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQotKyAgICAgICMgYXJlIG5vIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSAtTC4KLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICAgICAjIE5laXRoZXIgZGlyZWN0IGhhcmRjb2Rpbmcgbm9yIHN0YXRpYyBsaW5raW5nIGlzIHN1cHBvcnRlZCB3aXRoIGEKLSsgICAgICAgICMgYnJva2VuIGNvbGxlY3QyLgotKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBhaXg0KiB8IGFpeDUqKQotKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0rICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0Ci0rICAgICAgICAjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KLSsgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSsgICAgICBlbHNlCi0rICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCi0rICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKLSsgICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotKyAgICAgICAgIyBuZWVkIHRvIGRvIHJ1bnRpbWUgbGlua2luZy4KLSsgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMjNdfGFpeDQuWzIzXS4qfGFpeDUqKQotKyAgICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLSsgICAgICAgICAgICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgotKyAgICAgICAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKLSsgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgZG9uZQotKyAgICAgICAgZXNhYwotKyAgICAgIGZpCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCi0rICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMDEyXXxhaXg0LlswMTJdLiopCi0rICAgICAgICAgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKLSsgICAgICAgICAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYgXAotKyAgICAgICAgICAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgZ3JlcCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKLSsgICAgICAgICAgdGhlbgotKyAgICAgICAgICAgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgotKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSsgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotKyAgICAgICAgICBmaQotKyAgICAgICAgZXNhYwotKyAgICAgIGZpCi0rICAgICAgIyBCZWdpbiBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgotKyAgICAgIGVjaG8gJ2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0nID4gY29uZnRlc3QuYwotKyAgICAgICR7Q0N9ICR7TERGTEFHU30gY29uZnRlc3QuYyAtbyBjb25mdGVzdAotKyAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KLSt9J2AKLSsgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0rICAgICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Ci0rfSdgCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0rICAgICAgICBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiIKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3QKLSsgICAgICAjIEVuZCBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgotKyAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSsgICAgICBlbHNlCi0rICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBhbWlnYW9zKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICAjIHNlZSBjb21tZW50IGFib3V0IGRpZmZlcmVudCBzZW1hbnRpY3Mgb24gdGhlIEdOVSBsZCBzZWN0aW9uCi0rICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgOzsKLSsgICAgYnNkaTQqKQotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSsgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotKyAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0rICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsgICAgICBsaWJleHQ9bGliCi0rICAgICAgOzsKLSsgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSsgICAgICBpZiAkQ0MgLXYgMj4mMSB8IGdyZXAgJ0FwcGxlJyA+L2Rldi9udWxsIDsgdGhlbgotKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBkZ3V4KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgOzsKLSsgICAgZnJlZWJzZDEqKQotKyAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIDs7Ci0rICAgIGZyZWVic2QyLjIqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgOzsKLSsgICAgZnJlZWJzZDIqKQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgIDs7Ci0rICAgIGZyZWVic2QqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgOzsKLSsgICAgaHB1eDkqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotKyAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgOzsKLSsgICAgaHB1eDEwKiB8IGhwdXgxMSopCi0rICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0rICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0rICAgICAgICAgIGhwcGEqNjQqKQotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICAgIGlhNjQqKQotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSsgICAgICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotKyAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotKyAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgICAgICAgOzsKLSsgICAgICAgICAgKikKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSsgICAgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KLSsgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICBlc2FjCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICA7OwotKyAgICBuZXRic2QqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgOzsKLSsgICAgbmV3c29zNikKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIDs7Ci0rICAgIG9wZW5ic2QqKQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSsgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0rICAgICAgZWxzZQotKyAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0rICAgICAgICAgIG9wZW5ic2RbMDFdLiogfCBvcGVuYnNkMi5bMC03XSB8IG9wZW5ic2QyLlswLTddLiopCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICopCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSsgICAgICAgICAgICA7OwotKyAgICAgICAgZXNhYwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgb3MyKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICA7OwotKyAgICBvc2YzKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgOzsKLSsgICAgb3NmNCogfCBvc2Y1KikKLSsgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotKyAgICAgIGVsc2UKLSsgICAgICAgICMgQm90aCBjYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5Ci0rICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctcnBhdGggJGxpYmRpcicKLSsgICAgICBmaQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIDs7Ci0rICAgIHNjbzMuMnY1KikKLSsgICAgICA7OwotKyAgICBzb2xhcmlzKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0rICAgICAgOzsKLSsgICAgc3Vub3M0KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgOzsKLSsgICAgc3lzdjQpCi0rICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KLSsgICAgICAgIHNuaSkKLSsgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KLSsgICAgICAgICAgOzsKLSsgICAgICAgIHNpZW1lbnMpCi0rICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotKyAgICAgICAgICA7OwotKyAgICAgICAgbW90b3JvbGEpCi0rICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCi0rICAgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIDs7Ci0rICAgIHN5c3Y0LjMqKQotKyAgICAgIDs7Ci0rICAgIHN5c3Y0Kk1QKikKLSsgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCi0rICAgICAgICBsZF9zaGxpYnM9eWVzCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBzeXN2NC4ydXcyKikKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD1ubwotKyAgICAgIDs7Ci0rICAgIHN5c3Y1T3BlblVOSVg4KiB8IHN5c3Y1VW5peFdhcmU3KiB8ICBzeXN2NXV3Wzc4XSogfCB1bml4d2FyZTcqKQotKyAgICAgIDs7Ci0rICAgIHN5c3Y1KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotKyAgICAgIDs7Ci0rICAgIHV0czQqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsjIENoZWNrIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcwotKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUi4KLStsaWJuYW1lX3NwZWM9J2xpYiRuYW1lJwotK2Nhc2UgIiRob3N0X29zIiBpbgotKyAgYWl4MyopCi0rICAgIDs7Ci0rICBhaXg0KiB8IGFpeDUqKQotKyAgICA7OwotKyAgYW1pZ2FvcyopCi0rICAgIDs7Ci0rICBiZW9zKikKLSsgICAgOzsKLSsgIGJzZGk0KikKLSsgICAgOzsKLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSsgICAgc2hyZXh0PS5kbGwKLSsgICAgOzsKLSsgIGRhcndpbiogfCByaGFwc29keSopCi0rICAgIHNocmV4dD0uZHlsaWIKLSsgICAgOzsKLSsgIGRndXgqKQotKyAgICA7OwotKyAgZnJlZWJzZDEqKQotKyAgICA7OwotKyAgZnJlZWJzZCopCi0rICAgIDs7Ci0rICBnbnUqKQotKyAgICA7OwotKyAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0rICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KLSsgICAgICBpYTY0KikKLSsgICAgICAgIHNocmV4dD0uc28KLSsgICAgICAgIDs7Ci0rICAgICAgaHBwYSo2NCopCi0rICAgICAgICBzaHJleHQ9LnNsCi0rICAgICAgICA7OwotKyAgICAgICopCi0rICAgICAgICBzaHJleHQ9LnNsCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotKyAgICBjYXNlICIkaG9zdF9vcyIgaW4KLSsgICAgICBpcml4NSogfCBub25zdG9wdXgqKQotKyAgICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQotKyAgICAgICAgOzsKLSsgICAgICAqKQotKyAgICAgICAgY2FzZSAkTEQgaW4KLSsgICAgICAgICAgKi0zMnwqIi0zMiAifCotbWVsZjMyYnNtaXB8KiItbWVsZjMyYnNtaXAgIikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OwotKyAgICAgICAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKSBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgOzsKLSsgICAgICAgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IDs7Ci0rICAgICAgICAgICopIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKLSsgICAgICAgIGVzYWMKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgIGxpbnV4Km9sZGxkKiB8IGxpbnV4KmFvdXQqIHwgbGludXgqY29mZiopCi0rICAgIDs7Ci0rICBsaW51eCopCi0rICAgIDs7Ci0rICBuZXRic2QqKQotKyAgICA7OwotKyAgbmV3c29zNikKLSsgICAgOzsKLSsgIG50by1xbngpCi0rICAgIDs7Ci0rICBvcGVuYnNkKikKLSsgICAgOzsKLSsgIG9zMiopCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNocmV4dD0uZGxsCi0rICAgIDs7Ci0rICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0rICAgIDs7Ci0rICBzY28zLjJ2NSopCi0rICAgIDs7Ci0rICBzb2xhcmlzKikKLSsgICAgOzsKLSsgIHN1bm9zNCopCi0rICAgIDs7Ci0rICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyogfCBzeXN2NSopCi0rICAgIDs7Ci0rICBzeXN2NCpNUCopCi0rICAgIDs7Ci0rICB1dHM0KikKLSsgICAgOzsKLStlc2FjCi0rCi0rc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKLStlc2NhcGVkX3dsPWBlY2hvICJYJHdsIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rc2hsaWJleHQ9YGVjaG8gIiRzaHJleHQiIHwgc2VkIC1lICdzLF5cLiwsJ2AKLStlc2NhcGVkX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9YGVjaG8gIlgkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKwotK3NlZCAtZSAncy9eXChbYS16QS1aMC05X10qXCk9L2FjbF9jdl9cMT0vJyA8PEVPRgotKwotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0iJGVzY2FwZWRfd2wiCi0rCi0rIyBTdGF0aWMgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJhIikuCi0rbGliZXh0PSIkbGliZXh0IgotKwotKyMgU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAic28iKS4KLStzaGxpYmV4dD0iJHNobGliZXh0IgotKwotKyMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgotKyMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzIG5vdCBleGlzdC4KLStoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgotKwotKyMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlIC1ycGF0aCBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuCi0raGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCi0rCi0rIyBTZXQgdG8geWVzIGlmIHVzaW5nIERJUi9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKLSsjIHJlc3VsdGluZyBiaW5hcnkuCi0raGFyZGNvZGVfZGlyZWN0PSIkaGFyZGNvZGVfZGlyZWN0IgotKwotKyMgU2V0IHRvIHllcyBpZiB1c2luZyB0aGUgLUxESVIgZmxhZyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0rIyByZXN1bHRpbmcgYmluYXJ5LgotK2hhcmRjb2RlX21pbnVzX0w9IiRoYXJkY29kZV9taW51c19MIgotKwotK0VPRgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9jb25maWd1cmUuaW4JMjAwNC0wOS0xMiAxNDozOTo1NS4xNjE3MDY0ODggLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgkyMDA0LTA5LTEyIDE0OjQwOjM1LjgxNjUyNjAxNiAtMDQwMAotQEAgLTI2MCwxMSArMjYwLDEwIEBACi0gQU1fR05VX0dFVFRFWFQKLSAKLSBBQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCIkcHJlZml4LyREQVRBRElSTkFNRSIpCi0tQUNfTElOS19GSUxFUygkbmxzX2N2X2hlYWRlcl9saWJndCwgJG5sc19jdl9oZWFkZXJfaW50bCkKLSAKLS1BQ19PVVRQVVQoW01ha2VmaWxlIGludGwvTWFrZWZpbGUgbGliL01ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBcCi0rQUNfT1VUUFVUKFtNYWtlZmlsZSBpbnRsL01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgIG00L01ha2VmaWxlIFwKLSBtYW4vTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gc3JjL01ha2VmaWxlIGRlYmlhbi9ydWxlcyBTcGVjZmlsZSBzeXN0eXBlIFwKLSBzcmMvbHJ6c3pidWddLAotLVtzZWQgLWUgIi9QT1RGSUxFUyA9L3IgcG8vUE9URklMRVMiIHBvL01ha2VmaWxlLmluID4gcG8vTWFrZWZpbGU7IAotK1sKLSBjaG1vZCAreCBkZWJpYW4vcnVsZXM7Ci0gdGVzdCAteiAiJENPTkZJR19IRUFERVJTIiB8fCBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWhdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2JpbmR0ZXh0ZG9tLmMJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvYmluZHRleHRkb20uYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM0Mzc0OTkxMiAtMDQwMAotQEAgLTEsNTkgKzEsNzUgQEAKLSAvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYmluZHRleHRkb21haW4oMykgZnVuY3Rpb24KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTgsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZWxzZQotLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAotLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgotLSMgZWxzZQotLXZvaWQgZnJlZSAoKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotIAotICNpZmRlZiBfTElCQwotLSMgaW5jbHVkZSA8bGliaW50bC5oPgotKy8qIFdlIGhhdmUgdG8gaGFuZGxlIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucy4gICovCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rLyogUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpZiB0aGlzIGlzIG91dHNpZGUgZ2xpYmMuICAqLwotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfZGVmaW5lKENMQVNTLCBOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfd3Jsb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja191bmxvY2soTkFNRSkKLSsjZW5kaWYKLSsKLSsvKiBUaGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIHRoZSBzdGFuZGFsb25lIGxpYmludGwuYSBtdXN0IGhhdmUgZGlmZmVyZW50Ci0rICAgbmFtZXMgdGhhbiB0aGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIEdOVSBsaWJjLCBvdGhlcndpc2UgcHJvZ3JhbXMKLSsgICB1c2luZyBsaWJpbnRsLmEgY2Fubm90IGJlIGxpbmtlZCBzdGF0aWNhbGx5LiAgKi8KLSsjaWYgIWRlZmluZWQgX0xJQkMKLSsjIGRlZmluZSBfbmxfZGVmYXVsdF9kaXJuYW1lIGxpYmludGxfbmxfZGVmYXVsdF9kaXJuYW1lCi0rIyBkZWZpbmUgX25sX2RvbWFpbl9iaW5kaW5ncyBsaWJpbnRsX25sX2RvbWFpbl9iaW5kaW5ncwotKyNlbmRpZgotKwotKy8qIFNvbWUgY29tcGlsZXJzLCBsaWtlIFN1bk9TNCBjYywgZG9uJ3QgaGF2ZSBvZmZzZXRvZiBpbiA8c3RkZGVmLmg+LiAgKi8KLSsjaWZuZGVmIG9mZnNldG9mCi0rIyBkZWZpbmUgb2Zmc2V0b2YodHlwZSxpZGVudCkgKChzaXplX3QpJigoKHR5cGUqKTApLT5pZGVudCkpCi0gI2VuZGlmCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLS0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0gLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLwotIGV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXTsKLSsjaWZkZWYgX0xJQkMKLStleHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lX2ludGVybmFsW10gYXR0cmlidXRlX2hpZGRlbjsKLSsjZWxzZQotKyMgZGVmaW5lIElOVFVTRShuYW1lKSBuYW1lCi0rI2VuZGlmCi0gCi0gLyogTGlzdCB3aXRoIGJpbmRpbmdzIG9mIHNwZWNpZmljIGRvbWFpbnMuICAqLwotIGV4dGVybiBzdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKLSAKLSsvKiBMb2NrIHZhcmlhYmxlIHRvIHByb3RlY3QgdGhlIGdsb2JhbCBkYXRhIGluIHRoZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLiAgKi8KLStfX2xpYmNfcndsb2NrX2RlZmluZSAoZXh0ZXJuLCBfbmxfc3RhdGVfbG9jayBhdHRyaWJ1dGVfaGlkZGVuKQotKwotIAotIC8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSAgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi1AQCAtNjEsMjMgKzc3LDQxIEBACi0gICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSAjaWZkZWYgX0xJQkMKLSAjIGRlZmluZSBCSU5EVEVYVERPTUFJTiBfX2JpbmR0ZXh0ZG9tYWluCi0tIyBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKLSsjIGRlZmluZSBCSU5EX1RFWFRET01BSU5fQ09ERVNFVCBfX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0Ci0rIyBpZm5kZWYgc3RyZHVwCi0rIyAgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCi0rIyBlbmRpZgotICNlbHNlCi0tIyBkZWZpbmUgQklORFRFWFRET01BSU4gYmluZHRleHRkb21haW5fXwotKyMgZGVmaW5lIEJJTkRURVhURE9NQUlOIGxpYmludGxfYmluZHRleHRkb21haW4KLSsjIGRlZmluZSBCSU5EX1RFWFRET01BSU5fQ09ERVNFVCBsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0Ci0gI2VuZGlmCi0gCi0tLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCi0tICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLwotLWNoYXIgKgotLUJJTkRURVhURE9NQUlOIChkb21haW5uYW1lLCBkaXJuYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7Ci0rLyogU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgbmFtZSAqRElSTkFNRVAgYW5kIHRoZSBvdXRwdXQgY29kZXNldCAqQ09ERVNFVFAKLSsgICB0byBiZSB1c2VkIGZvciB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cuCi0rICAgSWYgKkRJUk5BTUVQIG9yICpDT0RFU0VUUCBpcyBOVUxMLCB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgaXMgbm90Ci0rICAgbW9kaWZpZWQsIG9ubHkgdGhlIGN1cnJlbnQgdmFsdWUgaXMgcmV0dXJuZWQuCi0rICAgSWYgRElSTkFNRVAgb3IgQ09ERVNFVFAgaXMgTlVMTCwgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGlzIG5laXRoZXIKLSsgICBtb2RpZmllZCBub3IgcmV0dXJuZWQuICAqLwotK3N0YXRpYyB2b2lkCi0rc2V0X2JpbmRpbmdfdmFsdWVzIChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJICAgIGNvbnN0IGNoYXIgKipkaXJuYW1lcCwgY29uc3QgY2hhciAqKmNvZGVzZXRwKQotIHsKLSAgIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOwotKyAgaW50IG1vZGlmaWVkOwotIAotICAgLyogU29tZSBzYW5pdHkgY2hlY2tzLiAgKi8KLSAgIGlmIChkb21haW5uYW1lID09IE5VTEwgfHwgZG9tYWlubmFtZVswXSA9PSAnXDAnKQotLSAgICByZXR1cm4gTlVMTDsKLSsgICAgewotKyAgICAgIGlmIChkaXJuYW1lcCkKLSsJKmRpcm5hbWVwID0gTlVMTDsKLSsgICAgICBpZiAoY29kZXNldHApCi0rCSpjb2Rlc2V0cCA9IE5VTEw7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBfX2xpYmNfcndsb2NrX3dybG9jayAoX25sX3N0YXRlX2xvY2spOwotKwotKyAgbW9kaWZpZWQgPSAwOwotIAotICAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKLSAgICAgewotQEAgLTkzLDgxICsxMjcsMTczIEBACi0gCX0KLSAgICAgfQotIAotLSAgaWYgKGRpcm5hbWUgPT0gTlVMTCkKLS0gICAgLyogVGhlIGN1cnJlbnQgYmluZGluZyBoYXMgYmUgdG8gcmV0dXJuZWQuICAqLwotLSAgICByZXR1cm4gYmluZGluZyA9PSBOVUxMID8gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZSA6IGJpbmRpbmctPmRpcm5hbWU7Ci0tCi0gICBpZiAoYmluZGluZyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgLyogVGhlIGRvbWFpbiBpcyBhbHJlYWR5IGJvdW5kLiAgSWYgdGhlIG5ldyB2YWx1ZSBhbmQgdGhlIG9sZAotLQkgb25lIGFyZSBlcXVhbCB3ZSBzaW1wbHkgZG8gbm90aGluZy4gIE90aGVyd2lzZSByZXBsYWNlIHRoZQotLQkgb2xkIGJpbmRpbmcuICAqLwotLSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIGJpbmRpbmctPmRpcm5hbWUpICE9IDApCi0rICAgICAgaWYgKGRpcm5hbWVwKQotIAl7Ci0tCSAgY2hhciAqbmV3X2Rpcm5hbWU7Ci0rCSAgY29uc3QgY2hhciAqZGlybmFtZSA9ICpkaXJuYW1lcDsKLSAKLS0JICBpZiAoc3RyY21wIChkaXJuYW1lLCBfbmxfZGVmYXVsdF9kaXJuYW1lKSA9PSAwKQotLQkgICAgbmV3X2Rpcm5hbWUgPSAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lOwotKwkgIGlmIChkaXJuYW1lID09IE5VTEwpCi0rCSAgICAvKiBUaGUgY3VycmVudCBiaW5kaW5nIGhhcyBiZSB0byByZXR1cm5lZC4gICovCi0rCSAgICAqZGlybmFtZXAgPSBiaW5kaW5nLT5kaXJuYW1lOwotIAkgIGVsc2UKLSAJICAgIHsKLSsJICAgICAgLyogVGhlIGRvbWFpbiBpcyBhbHJlYWR5IGJvdW5kLiAgSWYgdGhlIG5ldyB2YWx1ZSBhbmQgdGhlIG9sZAotKwkJIG9uZSBhcmUgZXF1YWwgd2Ugc2ltcGx5IGRvIG5vdGhpbmcuICBPdGhlcndpc2UgcmVwbGFjZSB0aGUKLSsJCSBvbGQgYmluZGluZy4gICovCi0rCSAgICAgIGNoYXIgKnJlc3VsdCA9IGJpbmRpbmctPmRpcm5hbWU7Ci0rCSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIHJlc3VsdCkgIT0gMCkKLSsJCXsKLSsJCSAgaWYgKHN0cmNtcCAoZGlybmFtZSwgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpKSA9PSAwKQotKwkJICAgIHJlc3VsdCA9IChjaGFyICopIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsJCSAgZWxzZQotKwkJICAgIHsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0tCSAgICAgIG5ld19kaXJuYW1lID0gc3RyZHVwIChkaXJuYW1lKTsKLS0JICAgICAgaWYgKG5ld19kaXJuYW1lID09IE5VTEwpCi0tCQlyZXR1cm4gTlVMTDsKLSsJCSAgICAgIHJlc3VsdCA9IHN0cmR1cCAoZGlybmFtZSk7Ci0gI2Vsc2UKLS0JICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOwotLQkgICAgICBuZXdfZGlybmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0JICAgICAgaWYgKG5ld19kaXJuYW1lID09IE5VTEwpCi0tCQlyZXR1cm4gTlVMTDsKLS0KLS0JICAgICAgbWVtY3B5IChuZXdfZGlybmFtZSwgZGlybmFtZSwgbGVuKTsKLSsJCSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKLSsJCSAgICAgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsJCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgIT0gTlVMTCwgMSkpCi0rCQkJbWVtY3B5IChyZXN1bHQsIGRpcm5hbWUsIGxlbik7Ci0gI2VuZGlmCi0rCQkgICAgfQotKwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ICE9IE5VTEwsIDEpKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChiaW5kaW5nLT5kaXJuYW1lICE9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkKLSsJCQlmcmVlIChiaW5kaW5nLT5kaXJuYW1lKTsKLSsKLSsJCSAgICAgIGJpbmRpbmctPmRpcm5hbWUgPSByZXN1bHQ7Ci0rCQkgICAgICBtb2RpZmllZCA9IDE7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICAqZGlybmFtZXAgPSByZXN1bHQ7Ci0gCSAgICB9Ci0rCX0KLSAKLS0JICBpZiAoYmluZGluZy0+ZGlybmFtZSAhPSBfbmxfZGVmYXVsdF9kaXJuYW1lKQotLQkgICAgZnJlZSAoYmluZGluZy0+ZGlybmFtZSk7Ci0rICAgICAgaWYgKGNvZGVzZXRwKQotKwl7Ci0rCSAgY29uc3QgY2hhciAqY29kZXNldCA9ICpjb2Rlc2V0cDsKLSAKLS0JICBiaW5kaW5nLT5kaXJuYW1lID0gbmV3X2Rpcm5hbWU7Ci0rCSAgaWYgKGNvZGVzZXQgPT0gTlVMTCkKLSsJICAgIC8qIFRoZSBjdXJyZW50IGJpbmRpbmcgaGFzIGJlIHRvIHJldHVybmVkLiAgKi8KLSsJICAgICpjb2Rlc2V0cCA9IGJpbmRpbmctPmNvZGVzZXQ7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAvKiBUaGUgZG9tYWluIGlzIGFscmVhZHkgYm91bmQuICBJZiB0aGUgbmV3IHZhbHVlIGFuZCB0aGUgb2xkCi0rCQkgb25lIGFyZSBlcXVhbCB3ZSBzaW1wbHkgZG8gbm90aGluZy4gIE90aGVyd2lzZSByZXBsYWNlIHRoZQotKwkJIG9sZCBiaW5kaW5nLiAgKi8KLSsJICAgICAgY2hhciAqcmVzdWx0ID0gYmluZGluZy0+Y29kZXNldDsKLSsJICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IHN0cmNtcCAoY29kZXNldCwgcmVzdWx0KSAhPSAwKQotKwkJewotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLSsJCSAgcmVzdWx0ID0gc3RyZHVwIChjb2Rlc2V0KTsKLSsjZWxzZQotKwkJICBzaXplX3QgbGVuID0gc3RybGVuIChjb2Rlc2V0KSArIDE7Ci0rCQkgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKLSsJCSAgICBtZW1jcHkgKHJlc3VsdCwgY29kZXNldCwgbGVuKTsKLSsjZW5kaWYKLSsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoYmluZGluZy0+Y29kZXNldCAhPSBOVUxMKQotKwkJCWZyZWUgKGJpbmRpbmctPmNvZGVzZXQpOwotKwotKwkJICAgICAgYmluZGluZy0+Y29kZXNldCA9IHJlc3VsdDsKLSsJCSAgICAgIGJpbmRpbmctPmNvZGVzZXRfY250cisrOwotKwkJICAgICAgbW9kaWZpZWQgPSAxOwotKwkJICAgIH0KLSsJCX0KLSsJICAgICAgKmNvZGVzZXRwID0gcmVzdWx0OwotKwkgICAgfQotIAl9Ci0gICAgIH0KLSsgIGVsc2UgaWYgKChkaXJuYW1lcCA9PSBOVUxMIHx8ICpkaXJuYW1lcCA9PSBOVUxMKQotKwkgICAmJiAoY29kZXNldHAgPT0gTlVMTCB8fCAqY29kZXNldHAgPT0gTlVMTCkpCi0rICAgIHsKLSsgICAgICAvKiBTaW1wbHkgcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlcy4gICovCi0rICAgICAgaWYgKGRpcm5hbWVwKQotKwkqZGlybmFtZXAgPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rICAgICAgaWYgKGNvZGVzZXRwKQotKwkqY29kZXNldHAgPSBOVUxMOwotKyAgICB9Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICAvKiBXZSBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBiaW5kaW5nLiAgKi8KLS0gICAgICBzaXplX3QgbGVuOwotKyAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpICsgMTsKLSAgICAgICBzdHJ1Y3QgYmluZGluZyAqbmV3X2JpbmRpbmcgPQotLQkoc3RydWN0IGJpbmRpbmcgKikgbWFsbG9jIChzaXplb2YgKCpuZXdfYmluZGluZykpOwotKwkoc3RydWN0IGJpbmRpbmcgKikgbWFsbG9jIChvZmZzZXRvZiAoc3RydWN0IGJpbmRpbmcsIGRvbWFpbm5hbWUpICsgbGVuKTsKLSAKLS0gICAgICBpZiAobmV3X2JpbmRpbmcgPT0gTlVMTCkKLS0JcmV0dXJuIE5VTEw7Ci0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKG5ld19iaW5kaW5nID09IE5VTEwsIDApKQotKwlnb3RvIGZhaWxlZDsKLSAKLSsgICAgICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lLCBkb21haW5uYW1lLCBsZW4pOwotKwotKyAgICAgIGlmIChkaXJuYW1lcCkKLSsJewotKwkgIGNvbnN0IGNoYXIgKmRpcm5hbWUgPSAqZGlybmFtZXA7Ci0rCi0rCSAgaWYgKGRpcm5hbWUgPT0gTlVMTCkKLSsJICAgIC8qIFRoZSBkZWZhdWx0IHZhbHVlLiAgKi8KLSsJICAgIGRpcm5hbWUgPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpID09IDApCi0rCQlkaXJuYW1lID0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIGNoYXIgKnJlc3VsdDsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0tICAgICAgbmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPSBzdHJkdXAgKGRvbWFpbm5hbWUpOwotLSAgICAgIGlmIChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9PSBOVUxMKQotLQlyZXR1cm4gTlVMTDsKLSsJCSAgcmVzdWx0ID0gc3RyZHVwIChkaXJuYW1lKTsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKLSsJCSAgICBnb3RvIGZhaWxlZF9kaXJuYW1lOwotICNlbHNlCi0tICAgICAgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7Ci0tICAgICAgbmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tICAgICAgaWYgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lID09IE5VTEwpCi0tCXJldHVybiBOVUxMOwotLSAgICAgIG1lbWNweSAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGxlbik7Ci0rCQkgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKLSsJCSAgcmVzdWx0ID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ID09IE5VTEwsIDApKQotKwkJICAgIGdvdG8gZmFpbGVkX2Rpcm5hbWU7Ci0rCQkgIG1lbWNweSAocmVzdWx0LCBkaXJuYW1lLCBsZW4pOwotICNlbmRpZgotLQotLSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIF9ubF9kZWZhdWx0X2Rpcm5hbWUpID09IDApCi0tCW5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKLSsJCSAgZGlybmFtZSA9IHJlc3VsdDsKLSsJCX0KLSsJICAgIH0KLSsJICAqZGlybmFtZXAgPSBkaXJuYW1lOwotKwkgIG5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgZGlybmFtZTsKLSsJfQotICAgICAgIGVsc2UKLSsJLyogVGhlIGRlZmF1bHQgdmFsdWUuICAqLwotKwluZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsKLSsgICAgICBuZXdfYmluZGluZy0+Y29kZXNldF9jbnRyID0gMDsKLSsKLSsgICAgICBpZiAoY29kZXNldHApCi0gCXsKLSsJICBjb25zdCBjaGFyICpjb2Rlc2V0ID0gKmNvZGVzZXRwOwotKwotKwkgIGlmIChjb2Rlc2V0ICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGNoYXIgKnJlc3VsdDsKLSsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0tCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSBzdHJkdXAgKGRpcm5hbWUpOwotLQkgIGlmIChuZXdfYmluZGluZy0+ZGlybmFtZSA9PSBOVUxMKQotLQkgICAgcmV0dXJuIE5VTEw7Ci0rCSAgICAgIHJlc3VsdCA9IHN0cmR1cCAoY29kZXNldCk7Ci0rCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgPT0gTlVMTCwgMCkpCi0rCQlnb3RvIGZhaWxlZF9jb2Rlc2V0OwotICNlbHNlCi0tCSAgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7Ci0tCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lID09IE5VTEwpCi0tCSAgICByZXR1cm4gTlVMTDsKLS0JICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kaXJuYW1lLCBkaXJuYW1lLCBsZW4pOwotKwkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChjb2Rlc2V0KSArIDE7Ci0rCSAgICAgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsJICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKLSsJCWdvdG8gZmFpbGVkX2NvZGVzZXQ7Ci0rCSAgICAgIG1lbWNweSAocmVzdWx0LCBjb2Rlc2V0LCBsZW4pOwotICNlbmRpZgotKwkgICAgICBjb2Rlc2V0ID0gcmVzdWx0OwotKwkgICAgICBuZXdfYmluZGluZy0+Y29kZXNldF9jbnRyKys7Ci0rCSAgICB9Ci0rCSAgKmNvZGVzZXRwID0gY29kZXNldDsKLSsJICBuZXdfYmluZGluZy0+Y29kZXNldCA9IChjaGFyICopIGNvZGVzZXQ7Ci0gCX0KLSsgICAgICBlbHNlCi0rCW5ld19iaW5kaW5nLT5jb2Rlc2V0ID0gTlVMTDsKLSAKLSAgICAgICAvKiBOb3cgZW5xdWV1ZSBpdC4gICovCi0gICAgICAgaWYgKF9ubF9kb21haW5fYmluZGluZ3MgPT0gTlVMTAotQEAgLTE4NywxMyArMzEzLDUxIEBACi0gCSAgYmluZGluZy0+bmV4dCA9IG5ld19iaW5kaW5nOwotIAl9Ci0gCi0tICAgICAgYmluZGluZyA9IG5ld19iaW5kaW5nOwotKyAgICAgIG1vZGlmaWVkID0gMTsKLSsKLSsgICAgICAvKiBIZXJlIHdlIGRlYWwgd2l0aCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4gICovCi0rICAgICAgaWYgKDApCi0rCXsKLSsJZmFpbGVkX2NvZGVzZXQ6Ci0rCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lICE9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkKLSsJICAgIGZyZWUgKG5ld19iaW5kaW5nLT5kaXJuYW1lKTsKLSsJZmFpbGVkX2Rpcm5hbWU6Ci0rCSAgZnJlZSAobmV3X2JpbmRpbmcpOwotKwlmYWlsZWQ6Ci0rCSAgaWYgKGRpcm5hbWVwKQotKwkgICAgKmRpcm5hbWVwID0gTlVMTDsKLSsJICBpZiAoY29kZXNldHApCi0rCSAgICAqY29kZXNldHAgPSBOVUxMOwotKwl9Ci0gICAgIH0KLSAKLS0gIHJldHVybiBiaW5kaW5nLT5kaXJuYW1lOwotKyAgLyogSWYgd2UgbW9kaWZpZWQgYW55IGJpbmRpbmcsIHdlIGZsdXNoIHRoZSBjYWNoZXMuICAqLwotKyAgaWYgKG1vZGlmaWVkKQotKyAgICArK19ubF9tc2dfY2F0X2NudHI7Ci0rCi0rICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotK30KLSsKLSsvKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKLSsgICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCi0rY2hhciAqCi0rQklORFRFWFRET01BSU4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmRpcm5hbWUpCi0rewotKyAgc2V0X2JpbmRpbmdfdmFsdWVzIChkb21haW5uYW1lLCAmZGlybmFtZSwgTlVMTCk7Ci0rICByZXR1cm4gKGNoYXIgKikgZGlybmFtZTsKLSt9Ci0rCi0rLyogU3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIGluIHdoaWNoIHRoZSBtZXNzYWdlcyBmcm9tIHRoZQotKyAgIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgcmV0dXJuZWQuICAqLwotK2NoYXIgKgotK0JJTkRfVEVYVERPTUFJTl9DT0RFU0VUIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICpjb2Rlc2V0KQotK3sKLSsgIHNldF9iaW5kaW5nX3ZhbHVlcyAoZG9tYWlubmFtZSwgTlVMTCwgJmNvZGVzZXQpOwotKyAgcmV0dXJuIChjaGFyICopIGNvZGVzZXQ7Ci0gfQotIAotICNpZmRlZiBfTElCQwotLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotKy8qIEFsaWFzZXMgZm9yIGZ1bmN0aW9uIG5hbWVzIGluIEdOVSBDIExpYnJhcnkuICAqLwotIHdlYWtfYWxpYXMgKF9fYmluZHRleHRkb21haW4sIGJpbmR0ZXh0ZG9tYWluKTsKLSt3ZWFrX2FsaWFzIChfX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0LCBiaW5kX3RleHRkb21haW5fY29kZXNldCk7Ci0gI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvY2F0LWNvbXBhdC5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2NhdC1jb21wYXQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMjYyICswLDAgQEAKLS0vKiBDb21wYXRpYmlsaXR5IGNvZGUgZm9yIGdldHRleHQtdXNpbmctY2F0Z2V0cyBpbnRlcmZhY2UuCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0tCi0tI2lmZGVmIEhBVkVfQ09ORklHX0gKLS0jIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlIDxzdGRpby5oPgotLQotLSNpZmRlZiBTVERDX0hFQURFUlMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2Vsc2UKLS1jaGFyICpnZXRlbnYgKCk7Ci0tIyBpZmRlZiBIQVZFX01BTExPQ19ICi0tIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZmRlZiBIQVZFX05MX1RZUEVTX0gKLS0jIGluY2x1ZGUgPG5sX3R5cGVzLmg+Ci0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgImxpYmdldHRleHQuaCIKLS0KLS0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0tCi0tLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgYHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKLS0gICBgYERpcmVjdHMgYHNldGxvY2FsZSgpJyB0byBxdWVyeSBgY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKLS0gICAgIHNldHRpbmcgb2YgYGxvY2FsJy4nJwotLSAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgQW5kIGV2ZW4gd29yc2U6IFBPU0lYCi0tICAgZGVmaW5lcyB0aGlzIG5vdCBhdCBhbGwuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkCi0tICAgc3lzdGVtIChlLmcuIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KLS0jaWZkZWYgX0xJQkMKLS0jIGRlZmluZSBIQVZFX0xPQ0FMRV9OVUxMCi0tI2VuZGlmCi0tCi0tLyogVGhlIGNhdGFsb2cgZGVzY3JpcHRvci4gICovCi0tc3RhdGljIG5sX2NhdGQgY2F0YWxvZyA9IChubF9jYXRkKSAtMTsKLS0KLS0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGNhdGFsb2cuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfY2F0YWxvZ19uYW1lW10gPSAibWVzc2FnZXMiOwotLQotLS8qIE5hbWUgb2YgY3VycmVudGx5IHVzZWQgY2F0YWxvZy4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOwotLQotLS8qIEdldCBJRCBmb3IgZ2l2ZW4gc3RyaW5nLiAgSWYgbm90IGZvdW5kIHJldHVybiAtMS4gICovCi0tc3RhdGljIGludCBtc2dfdG9fY2F0X2lkIFBBUkFNUyAoKGNvbnN0IGNoYXIgKm1zZykpOwotLQotLS8qIFN1YnN0aXR1dGlvbiBmb3Igc3lzdGVtcyBsYWNraW5nIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgQyBsaWJyYXJ5LiAgKi8KLS0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQotLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7Ci0tI2VuZGlmCi0tCi0tCi0tLyogU2V0IGN1cnJlbnRseSB1c2VkIGRvbWFpbi9jYXRhbG9nLiAgKi8KLS1jaGFyICoKLS10ZXh0ZG9tYWluIChkb21haW5uYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS17Ci0tICBubF9jYXRkIG5ld19jYXRhbG9nOwotLSAgY2hhciAqbmV3X25hbWU7Ci0tICBzaXplX3QgbmV3X25hbWVfbGVuOwotLSAgY2hhciAqbGFuZzsKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgXAotLSAgICAmJiBkZWZpbmVkIEhBVkVfTE9DQUxFX05VTEwKLS0gIGxhbmcgPSBzZXRsb2NhbGUgKExDX01FU1NBR0VTLCBOVUxMKTsKLS0jZWxzZQotLSAgbGFuZyA9IGdldGVudiAoIkxDX0FMTCIpOwotLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCi0tICAgIHsKLS0gICAgICBsYW5nID0gZ2V0ZW52ICgiTENfTUVTU0FHRVMiKTsKLS0gICAgICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKLS0JbGFuZyA9IGdldGVudiAoIkxBTkciKTsKLS0gICAgfQotLSNlbmRpZgotLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCi0tICAgIGxhbmcgPSAiQyI7Ci0tCi0tICAvKiBTZWUgd2hldGhlciBuYW1lIG9mIGN1cnJlbnRseSB1c2VkIGRvbWFpbiBpcyBhc2tlZC4gICovCi0tICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQotLSAgICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOwotLQotLSAgaWYgKGRvbWFpbm5hbWVbMF0gPT0gJ1wwJykKLS0gICAgZG9tYWlubmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOwotLQotLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgKi8KLS0gIG5ld19uYW1lX2xlbiA9IHNpemVvZiAoTE9DQUxFRElSKSAtIDEgKyAxICsgc3RybGVuIChsYW5nKQotLQkJICsgc2l6ZW9mICgiL0xDX01FU1NBR0VTLyIpIC0gMSArIHNpemVvZiAoUEFDS0FHRSkgLSAxCi0tCQkgKyBzaXplb2YgKCIuY2F0Iik7Ci0tCi0tICBuZXdfbmFtZSA9IChjaGFyICopIG1hbGxvYyAobmV3X25hbWVfbGVuKTsKLS0gIGlmIChuZXdfbmFtZSA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0KLS0gIHN0cmNweSAobmV3X25hbWUsIFBBQ0tBR0UpOwotLSAgbmV3X2NhdGFsb2cgPSBjYXRvcGVuIChuZXdfbmFtZSwgMCk7Ci0tCi0tICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQotLSAgICB7Ci0tICAgICAgLyogTkxTUEFUSCBzZWFyY2ggZGlkbid0IHdvcmssIHRyeSBhYnNvbHV0ZSBwYXRoICovCi0tICAgICAgc3ByaW50ZiAobmV3X25hbWUsICIlcy8lcy9MQ19NRVNTQUdFUy8lcy5jYXQiLCBMT0NBTEVESVIsIGxhbmcsCi0tCSAgICAgICBQQUNLQUdFKTsKLS0gICAgICBuZXdfY2F0YWxvZyA9IGNhdG9wZW4gKG5ld19uYW1lLCAwKTsKLS0KLS0gICAgICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQotLQl7Ci0tCSAgZnJlZSAobmV3X25hbWUpOwotLQkgIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7Ci0tCX0KLS0gICAgfQotLQotLSAgLyogQ2xvc2Ugb2xkIGNhdGFsb2cuICAqLwotLSAgaWYgKGNhdGFsb2cgIT0gKG5sX2NhdGQpIC0xKQotLSAgICBjYXRjbG9zZSAoY2F0YWxvZyk7Ci0tICBpZiAoY2F0YWxvZ19uYW1lICE9IGRlZmF1bHRfY2F0YWxvZ19uYW1lKQotLSAgICBmcmVlICgoY2hhciAqKSBjYXRhbG9nX25hbWUpOwotLQotLSAgY2F0YWxvZyA9IG5ld19jYXRhbG9nOwotLSAgY2F0YWxvZ19uYW1lID0gbmV3X25hbWU7Ci0tCi0tICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOwotLX0KLS0KLS1jaGFyICoKLS1iaW5kdGV4dGRvbWFpbiAoZG9tYWlubmFtZSwgZGlybmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICpkaXJuYW1lOwotLXsKLS0jaWYgSEFWRV9TRVRFTlYgfHwgSEFWRV9QVVRFTlYKLS0gIGNoYXIgKm9sZF92YWwsICpuZXdfdmFsLCAqY3A7Ci0tICBzaXplX3QgbmV3X3ZhbF9sZW47Ci0tCi0tICAvKiBUaGlzIGRvZXMgbm90IG1ha2UgbXVjaCBzZW5zZSBoZXJlIGJ1dCB0byBiZSBjb21wYXRpYmxlIGRvIGl0LiAgKi8KLS0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgSWYgd2UgdXNlIHNldGVudiB3ZSBkb24ndCBuZWVkCi0tICAgICB0aGUgZmlyc3QgYnl0cyBmb3IgTkxTUEFUSD0sIGJ1dCB3aHkgY29tcGxpY2F0ZSB0aGUgY29kZSBmb3IgdGhpcwotLSAgICAgcGVhbnV0cy4gICovCi0tICBuZXdfdmFsX2xlbiA9IHNpemVvZiAoIk5MU1BBVEg9IikgLSAxICsgc3RybGVuIChkaXJuYW1lKQotLQkJKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tCi0tICBvbGRfdmFsID0gZ2V0ZW52ICgiTkxTUEFUSCIpOwotLSAgaWYgKG9sZF92YWwgPT0gTlVMTCB8fCBvbGRfdmFsWzBdID09ICdcMCcpCi0tICAgIHsKLS0gICAgICBvbGRfdmFsID0gTlVMTDsKLS0gICAgICBuZXdfdmFsX2xlbiArPSAxICsgc2l6ZW9mIChMT0NBTEVESVIpIC0gMQotLQkgICAgICAgICAgICAgKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgbmV3X3ZhbF9sZW4gKz0gc3RybGVuIChvbGRfdmFsKTsKLS0KLS0gIG5ld192YWwgPSAoY2hhciAqKSBtYWxsb2MgKG5ld192YWxfbGVuKTsKLS0gIGlmIChuZXdfdmFsID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSMgaWYgSEFWRV9TRVRFTlYKLS0gIGNwID0gbmV3X3ZhbDsKLS0jIGVsc2UKLS0gIGNwID0gc3RwY3B5IChuZXdfdmFsLCAiTkxTUEFUSD0iKTsKLS0jIGVuZGlmCi0tCi0tICBjcCA9IHN0cGNweSAoY3AsIGRpcm5hbWUpOwotLSAgY3AgPSBzdHBjcHkgKGNwLCAiLyVML0xDX01FU1NBR0VTLyVOLmNhdDoiKTsKLS0KLS0gIGlmIChvbGRfdmFsID09IE5VTEwpCi0tICAgIHsKLS0jIGlmIF9fU1REQ19fCi0tICAgICAgc3RwY3B5IChjcCwgTE9DQUxFRElSICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tIyBlbHNlCi0tCi0tICAgICAgY3AgPSBzdHBjcHkgKGNwLCBMT0NBTEVESVIpOwotLSAgICAgIHN0cGNweSAoY3AsICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tIyBlbmRpZgotLSAgICB9Ci0tICBlbHNlCi0tICAgIHN0cGNweSAoY3AsIG9sZF92YWwpOwotLQotLSMgaWYgSEFWRV9TRVRFTlYKLS0gIHNldGVudiAoIk5MU1BBVEgiLCBuZXdfdmFsLCAxKTsKLS0gIGZyZWUgKG5ld192YWwpOwotLSMgZWxzZQotLSAgcHV0ZW52IChuZXdfdmFsKTsKLS0gIC8qIERvICpub3QqIGZyZWUgdGhlIGVudmlyb25tZW50IGVudHJ5IHdlIGp1c3QgZW50ZXJlZC4gIEl0IGlzIHVzZWQKLS0gICAgIGZyb20gbm93IG9uLiAgICovCi0tIyBlbmRpZgotLQotLSNlbmRpZgotLQotLSAgcmV0dXJuIChjaGFyICopIGRvbWFpbm5hbWU7Ci0tfQotLQotLSN1bmRlZiBnZXR0ZXh0Ci0tY2hhciAqCi0tZ2V0dGV4dCAobXNnKQotLSAgICAgY29uc3QgY2hhciAqbXNnOwotLXsKLS0gIGludCBtc2dpZDsKLS0KLS0gIGlmIChtc2cgPT0gTlVMTCB8fCBjYXRhbG9nID09IChubF9jYXRkKSAtMSkKLS0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKLS0KLS0gIC8qIEdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBjYXRhbG9nLiAgV2UgYWx3YXlzIHVzZSBzZXQgbnVtYmVyIDEuCi0tICAgICBUaGUgbWVzc2FnZSBJRCBpcyBjb21wdXRlZCBieSB0aGUgZnVuY3Rpb24gYG1zZ190b19jYXRfaWQnCi0tICAgICB3aGljaCB3b3JrcyBvbiB0aGUgdGFibGUgZ2VuZXJhdGVkIGJ5IGBwby10by10YmwnLiAgKi8KLS0gIG1zZ2lkID0gbXNnX3RvX2NhdF9pZCAobXNnKTsKLS0gIGlmIChtc2dpZCA9PSAtMSkKLS0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKLS0KLS0gIHJldHVybiBjYXRnZXRzIChjYXRhbG9nLCAxLCBtc2dpZCwgKGNoYXIgKikgbXNnKTsKLS19Ci0tCi0tLyogTG9vayB0aHJvdWdoIHRoZSB0YWJsZSBgX21zZ190YmwnIHdoaWNoIGhhcyBgX21zZ190YmxfbGVuZ3RoJyBlbnRyaWVzCi0tICAgZm9yIHRoZSBvbmUgZXF1YWwgdG8gbXNnLiAgSWYgaXQgaXMgZm91bmQgcmV0dXJuIHRoZSBJRC4gIEluIGNhc2Ugd2hlbgotLSAgIHRoZSBzdHJpbmcgaXMgbm90IGZvdW5kIHJldHVybiAtMS4gICovCi0tc3RhdGljIGludAotLW1zZ190b19jYXRfaWQgKG1zZykKLS0gICAgIGNvbnN0IGNoYXIgKm1zZzsKLS17Ci0tICBpbnQgY250OwotLQotLSAgZm9yIChjbnQgPSAwOyBjbnQgPCBfbXNnX3RibF9sZW5ndGg7ICsrY250KQotLSAgICBpZiAoc3RyY21wIChtc2csIF9tc2dfdGJsW2NudF0uX21zZykgPT0gMCkKLS0gICAgICByZXR1cm4gX21zZ190YmxbY250XS5fbXNnX251bWJlcjsKLS0KLS0gIHJldHVybiAtMTsKLS19Ci0tCi0tCi0tLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0tCi0tLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKLS0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcwotLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCi0tICAgdG8gYmUgZGVmaW5lZC4gICovCi0tI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqCi0tc3RwY3B5IChkZXN0LCBzcmMpCi0tICAgICBjaGFyICpkZXN0OwotLSAgICAgY29uc3QgY2hhciAqc3JjOwotLXsKLS0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKLS0gICAgLyogRG8gbm90aGluZy4gKi8gOwotLSAgcmV0dXJuIGRlc3QgLSAxOwotLX0KLS0jZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9DaGFuZ2VMb2cJMTk5OC0wNC0yNiAwOToyMjozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvQ2hhbmdlTG9nCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzQ5NzQ5MDAwIC0wNDAwCi1AQCAtMSwxMDIyICsxLDQgQEAKLS0xOTk3LTA5LTA2IDAyOjEwICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBpbnRsaC5pbnN0LmluOiBSZWZvcm1hdCBjb3B5cmlnaHQuCi0tCi0tMTk5Ny0wOC0xOSAxNToyMiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IFJlbW92ZSB3cm9uZyBjb21tZW50LgotLQotLTE5OTctMDgtMTYgMDA6MTMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWRhdGEpOiBEb24ndCBjaGFuZ2UgZGlyZWN0b3J5IHRvIGluc3RhbGwuCi0tCi0tMTk5Ny0wOC0wMSAxNDozMCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogY2F0LWNvbXBhdC5jOiBGaXggY29weXJpZ2h0LgotLQotLQkqIGxvY2FsZWFsaWFzLmM6IERvbid0IGRlZmluZSBzdHJjaHIgdW5sZXNzICFIQVZFX1NUUkNIUi4KLS0KLS0JKiBsb2FkbXNnY2F0LmM6IFVwZGF0ZSBjb3B5cmlnaHQuICBGaXggdHlwb3MuCi0tCi0tCSogbDEwbmZsaXN0LmM6IERvbid0IGRlZmluZSBzdHJjaHIgdW5sZXNzICFIQVZFX1NUUkNIUi4KLS0JKF9ubF9tYWtlX2wxMG5mbGlzdCk6IEhhbmRsZSBzcG9uc29yIGFuZCByZXZpc2lvbiBjb3JyZWN0bHkuCi0tCi0tCSogZ2V0dGV4dC5jOiBVcGRhdGUgY29weXJpZ2h0LgotLQkqIGdldHRleHQuaDogTGlrZXdpc2UuCi0tCSogaGFzaC1zdHJpbmcuaDogTGlrZXdpc2UuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBSZW1vYXZlIGRlYWQgY29kZS4gIERlZmluZSBzdHJjaHIgb25seSBpZgotLQkhSEFWRV9TVFJDSFIuCi0tCi0tCSogZXhwbG9kZW5hbWUuYzogSW5jbHVkZSA8c3lzL3R5cGVzLmg+LgotLQotLQkqIGV4cGxvZGVuYW1lLmM6IFJlZm9ybWF0IGNvcHlyaWdodCB0ZXh0LgotLQkoX25sX2V4cGxvZGVfbmFtZSk6IEZpeCB0eXBvLgotLQotLQkqIGRjZ2V0dGV4dC5jOiBEZWZpbmUgYW5kIHVzZSBfX3NldF9lcnJuby4KLS0JKGd1ZXNzX2NhdGVnb3J5X3ZhbHVlKTogRG9uJ3QgdXNlIHNldGxvY2FsZSBpZiBIQVZFX0xDX01FU1NBR0VTIGlzCi0tCW5vdCBkZWZpbmVkLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmM6IFByZXR0eSBwcmludGluZy4KLS0KLS0xOTk3LTA1LTAxIDAyOjI1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBkY2dldHRleHQuYyAoZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUpOiBEb24ndCBkZXBlbmQgb24KLS0JSEFWRV9MQ19NRVNTQUdFUy4gIFdlIGRvbid0IG5lZWQgdGhlIG1hY3JvIGhlcmUuCi0tCVBhdGNoIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+LgotLQotLQkqIGNhdC1jb21wYXQuYyAodGV4dGRvbWFpbik6IERvTid0IHJlZmVyIHRvIEhBVkVfU0VUTE9DQUxFX05VTEwKLS0JbWFjcm8uICBJbnN0ZWFkIHVzZSBIQVZFX0xPQ0FMRV9OVUxMIGFuZCBkZWZpbmUgaXQgd2hlbiB1c2luZwotLQlnbGliYywgYXMgaW4gZGNnZXR0ZXh0LmMuCi0tCVBhdGNoIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+LgotLQotLQkqIE1ha2VmaWxlLmluIChDUFBGTEFHUyk6IE5ldyB2YXJpYWJsZS4gIFJlcG9ydGVkIGJ5IEZyYW5jLG9pcwotLQlQaW5hcmQuCi0tCi0tTW9uIE1hciAxMCAwNjo1MToxNyAxOTk3ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbjogSW1wbGVtZW50IGhhbmRsaW5nIG9mIGxpYnRvb2wuCi0tCi0tCSogZ2V0dGV4dFAuaDogQ2hhbmdlIGRhdGEgc3RydWN0dXJlcyBmb3IgdXNlIG9mIGdlbmVyaWMgbG93bGV2ZWwKLS0JaTE4biBmaWxlIGhhbmRsaW5nLgotLQotLVdlZCBEZWMgIDQgMjA6MjE6MTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogdGV4dGRvbWFpbi5jOiBQdXQgcGFyZW50aGVzZXMgYXJvdW5kIGFyZ3VtZW50cyBvZiBtZW1jcHkgbWFjcm8KLS0JZGVmaW5pdGlvbi4KLS0JKiBsb2NhbGVhbGlhcy5jOiBMaWtld2lzZS4KLS0JKiBsMTBuZmxpc3QuYzogTGlrZXdpc2UuCi0tCSogZmluZGRvbWFpbi5jOiBMaWtld2lzZS4KLS0JKiBiaW5kdGV4dGRvbS5jOiBMaWtld2lzZS4KLS0JUmVwb3J0ZWQgYnkgVGhvbWFzIEVza2VuLgotLQotLU1vbiBOb3YgMjUgMjI6NTc6NTEgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogdGV4dGRvbWFpbi5jOiBNb3ZlIGRlZmluaXRpb24gb2YgYG1lbWNweWAgbWFjcm8gdG8gcmlnaHQKLS0JcG9zaXRpb24uCi0tCi0tRnJpIE5vdiAyMiAwNDowMTo1OCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgWyFIQVZFX1NUUklOR19IICYmICFfTElCQ106IERlZmluZSBtZW1jcHkgdXNpbmcKLS0gCWJjb3B5IGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuICBSZXBvcnRlZCBieSBUaG9tYXMgRXNrZW4uCi0tCSogYmluZHRleHRkb20uYzogTGlrZXdpc2UuCi0tCSogbDEwbmZsaXN0LmM6IExpa2V3aXNlLgotLQkqIGxvY2FsZWFsaWFzLmM6IExpa2V3aXNlLgotLQkqIHRleHRkb21haW4uYzogTGlrZXdpc2UuCi0tCi0tVHVlIE9jdCAyOSAxMToxMDoyNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAobGliZGlyKTogQ2hhbmdlIHRvIHVzZSBleGVjX3ByZWZpeCBpbnN0ZWFkIG9mCi0tIAlwcmVmaXguICBSZXBvcnRlZCBieSBLbnV0LUjldmFyZEFrc25lcyA8ZXRva25hQGV0by5lcmljc3Nvbi5zZT4uCi0tCi0tU2F0IEF1ZyAzMSAwMzowNzowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYyAoX25sX25vcm1hbGl6ZV9jb2Rlc2V0KTogV2UgY29udmVydCB0byBsb3dlciBjYXNlLAotLQlzbyBkb24ndCBwcmVwZW5kIHVwcGVyY2FzZSBgSVNPJyBmb3Igb25seSBudW1lcmljIGFyZy4KLS0KLS1GcmkgSnVsIDE5IDAwOjE1OjQ2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGwxMG5mbGlzdC5jOiBNb3ZlIGluY2x1c2lvbiBvZiBhcmd6LmgsIGN0eXBlLmgsIHN0ZGxpYi5oIGFmdGVyCi0tCWRlZmluaXRpb24gb2YgX0dOVV9TT1VSQ0UuICBQYXRjaCBieSBSb2xhbmQgTWNHcmF0aC4KLS0KLS0JKiBNYWtlZmlsZS5pbiAodW5pbnN0YWxsKTogRml4IGFub3RoZXIgYnVnIHdpdGggYGZvcicgbG9vcCBhbmQKLS0JZW1wdHkgYXJndW1lbnRzLiAgUGF0Y2ggYnkgSmltIE1leWVyaW5nLiAgQ29ycmVjdCBuYW1lIG9zCi0tCXVuaW5zdGFsbGVkIGZpbGVzOiBubyBpbnRsLSBwcmVmaXggYW55bW9yZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1kYXRhKTogQWdhaW4gd29yayBhcm91bmQgc2hlbGxzIHdoaWNoCi0tCWNhbm5vdCBoYW5kbGUgbXB0eSBmb3IgbGlzdC4gIFJlcG9ydGVkIGJ5IEppbSBNZXllcmluZy4KLS0KLS1TYXQgSnVsIDEzIDE4OjExOjM1IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogU3BsaXQgZ29hbC4gIE5vdyBkZXBlbmQgb24gaW5zdGFsbC1leGVjCi0tICAgICAgICBhbmQgaW5zdGFsbC1kYXRhLgotLQkoaW5zdGFsbC1leGVjLCBpbnN0YWxsLWRhdGEpOiBOZXcgZ29hbHMuICBDcmVhdGVkIGZyb20gZm9ybWVyCi0tCWluc3RhbGwgZ29hbC4KLS0JUmVwb3J0ZWQgYnkgS2FybCBCZXJyeS4KLS0KLS1TYXQgSnVuIDIyIDA0OjU4OjE0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChNS0lOU1RBTExESVJTKTogTmV3IHZhcmlhYmxlLiAgUGF0aCB0bwotLSAgICAgICAgbWtpbnN0YWxsZGlycyBzY3JpcHQuCi0tCShpbnN0YWxsKTogdXNlIE1LSU5TVEFMTERJUlMgdmFyaWFibGUgb3IgaWYgdGhlIHNjcmlwdCBpcyBub3QgcHJlc2VudAotLQl0cnkgdG8gZmluZCBpdCBpbiB0aGUgJHRvcF9zY3JkaXIpLgotLQotLVdlZCBKdW4gMTkgMDI6NTY6NTYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbDEwbmZsaXN0LmM6IExpbnV4IGxpYmMgKnBhcnRseSogaW5jbHVkZXMgdGhlIGFyZ3pfKiBmdW5jdGlvbnMuCi0tCUdyci4gIFdvcmsgYXJvdW5kIGJ5IHJlbmFtaW5nIHRoZSBzdGF0aWMgdmVyc2lvbiBhbmQgdXNlIG1hY3JvcwotLQlmb3IgcmVuYW1pbmcuCi0tCi0tVHVlIEp1biAxOCAyMDoxMToxNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYzogQ29ycmVjdCBwcmVzZW5jZSB0ZXN0IG1hY3JvcyBvZiBfX2FyZ3pfKiBmdW5jdGlvbnMuCi0tCi0tCSogbDEwbmZsaXN0LmM6IEluY2x1ZGUgPGFyZ3ouaD4gYmFzZWQgb24gdGVzdCBvZiBpdCBpbnN0ZWFkIHdoZW4KLS0JX19hcmd6XyogZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUuCi0tCVJlcG9ydGVkIGJ5IEFuZHJlYXMgU2Nod2FiLgotLQotLVRodSBKdW4gMTMgMTU6MTc6NDQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogZXhwbG9kZW5hbWUuYywgbDEwbmZsaXN0LmM6IERlZmluZSBOVUxMIGZvciBkdW1iIHN5c3RlbXMuCi0tCi0tVHVlIEp1biAxMSAxNzowNToxMyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBpbnRsaC5pbnN0LmluLCBsaWJnZXR0ZXh0LmggKGRjZ2V0dGV4dCk6IFJlbmFtZSBsb2NhbCB2YXJpYWJsZQotLQlyZXN1bHQgdG8gX19yZXN1bHQgdG8gcHJldmVudCBuYW1lIGNsYXNoLgotLQotLQkqIGwxMG5mbGlzdC5jLCBsb2NhbGVhbGlhcy5jLCBkY2dldHRleHQuYzogRGVmaW5lIF9HTlVfU09VUkNFIHRvCi0tICAgICAgICBnZXQgcHJvdG90eXBlIGZvciBzdHBjcHkgYW5kIHN0cmNhc2VjbXAuCi0tCi0tCSogaW50bGguaW5zdC5pbiwgbGliZ2V0dGV4dC5oOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCi0tCWBfbmxfbXNnX2NhdF9jbnRyJyBvdXRzaWRlIF9fZXh0ZW5zaW9uX18gYmxvY2sgdG8gcHJldmVudCB3YXJuaW5nCi0tCWZyb20gZ2NjJ3MgLVduZXN0ZWQtZXh0ZXJuIG9wdGlvbi4KLS0KLS1GcmkgSnVuICA3IDAxOjU4OjAwIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogUmVtb3ZlIGNvbW1lbnQuCi0tCi0tVGh1IEp1biAgNiAxNzoyODoxNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFdvcmsgYXJvdW5kIGZvciBhbm90aGVyIEJ1Z2xpeCBzdHVwaWRpdHkuCi0tCUFsd2F5cyB1c2UgYW4gYGVsc2UnIGNsb3NlIGZvciBgaWYncy4gIFJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW50bGguaW5zdCk6IENvcnJlY3QgdHlwbyBpbiBwaG9ueSBydWxlLgotLQlSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCi0tCi0tVGh1IEp1biAgNiAwMTo0OTo1MiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBkY2dldHRleHQuYyAocmVhZF9hbGlhc19maWxlKTogUmVuYW1lIHZhcmlhYmxlIGFsbG9jYV9saXN0IHRvCi0tCWJsb2NrX2xpc3QgYXMgdGhlIG1hY3JvIGNhbGxzIGFzc3VtZS4KLS0JUGF0Y2ggYnkgRXJpYyBCYWNrdXMuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyBbIUhBVkVfQUxMT0NBXTogRGVmaW5lIGFsbG9jYSBhcyBtYWNybyB1c2luZwotLSAgICAgICAgbWFsbG9jLgotLQkocmVhZF9hbGlhc19maWxlKTogUmVuYW1lIHZhcnJpYWJlIGFsbG9jYV9saXN0IHRvIGJsb2NrX2xpc3QgYXMgdGhlCi0tCW1hY3JvIGNhbGxzIGFzc3VtZS4KLS0JUGF0Y2ggYnkgRXJpYyBCYWNrdXMuCi0tCi0tCSogbDEwbmZsaXN0LmM6IENvcnJlY3QgY29uZGl0aW9uYWwgZm9yIDxhcmd6Lmg+IGluY2x1c2lvbi4KLS0JUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCi0tCi0tCSogTWFrZWZpbGUuaW4gKGFsbCk6IERlcGVuZCBvbiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQCwgbm90Ci0tICAgICAgICBhbGwtQFVTRV9OTFNALgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogaW50bGguaW5zdCBjb21lcyBmcm9tIGxvY2FsIGRpciwgbm90Ci0tICAgICAgICAkKHNyY2RpcikuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGludGxoLmluc3QpOiBTcGVjaWFsIGhhbmRsaW5nIG9mIHRoaXMgZ29hbC4gIElmCi0tCXVzZWQgaW4gZ2V0dGV4dCwgdGhpcyBpcyByZWFsbHkgYSBydWwgdG8gY29uc3RydWN0IHRoaXMgZmlsZS4gIElmCi0tCXVzZWQgaW4gYW55IG90aGVyIHBhY2thZ2UgaXQgaXMgZGVmaW5lZCBhcyBhIC5QSE9OWSBydWxlIHdpdGgKLS0JZW1wdHkgYm9keS4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEV4dHJhY3QgbG9jYWxlIGZpbGUgaW5mb3JtYXRpb24gaGFuZGxpbmcgaW50bwotLQlsMTBuZmlsZS5jLiAgUmVuYW1lIGxvY2FsIHN0cGNweV9fIGZ1bmN0aW9uIHRvIHN0cGNweS4KLS0KLS0JKiBkY2dldHRleHQuYyAoc3RwY3B5KTogQWRkIGxvY2FsIGRlZmluaXRpb24uCi0tCi0tCSogbDEwbmZsaXN0LmM6IFNvbHZlIHNvbWUgcG9ydGFiaWxpdHkgcHJvYmxlbXMuICBQYXRjaGVzIHBhcnRseSBieQotLQlUaG9tYXMgRXNrZW4uICBBZGQgbG9jYWwgZGVmaW5pdGlvbiBvZiBzdHBjcHkuCi0tCi0tVHVlIEp1biAgNCAwMjo0Nzo0OSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBpbnRsaC5pbnN0LmluOiBEb24ndCBkZXBlbmQgaW5jbHVkaW5nIDxsb2NhbGUuaD4gb24KLS0JSEFWRV9MT0NBTEVfSC4gIEluc3RlYWQgY29uZmlndXJlIG11c3QgcmV3cml0ZSB0aGlzIGZpaWxlCi0tCWRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmUgcnVuLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogbGliaW50bC5pbnN0IGlzIG5vdyBjYWxsZWQgaW50bGguaW5zdC4KLS0JQWRkIHJ1bGVzIGZvciB1cGRhdGluZyBpbnRsaC5pbnN0IGZyb20gaW50bGguaW5zdC5pbi4KLS0KLS0JKiBsaWJpbnRsLmluc3Q6IFJlbmFtZWQgdG8gaW50bGguaW5zdC5pbi4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jLCBkY2dldHRleHQuYyBbX19HTlVDX19dOiBEZWZpbmUgSEFWRV9BTExPQ0EgdG8gMQotLSAgICAgICAgYmVjYXVzZSBnY2MgaGFzIF9fYnVpdGxpbl9hbGxvY2EuCi0tCVJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLU1vbiBKdW4gIDMgMDA6MzI6MTYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGxjaGVjayk6IE5ldyBnb2FsIHRvIGZ1bGZpbGwgbmVlZHMgb2YKLS0gICAgICAgIGF1dG9tYWtlJ3MgZGlzdGNoZWNrLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogUmVvcmRlciBjb21tYW5kcyBzbyB0aGF0IFZFUlNJT04gaXMKLS0gICAgICAgIGZvdW5kLgotLQotLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKTogTm93IHVzZSBzdWJkaXJlY3RvcnkgaW50bC8gaW4KLS0gICAgICAgIEBkYXRhZGlyQC9nZXR0ZXh0LgotLQkoQ09NU1JDUyk6IEFkZCBsMTBuZmlsZS5jLgotLQkoT0JKRUNUUyk6IEFkZCBsMTBuZmlsZS5vLgotLQkoRElTVEZJTEVTKTogUmVuYW1lIHRvIERJU1RGSUxFLm5vcm1hbC4gIFJlbW92ZSAkKERJU1RGSUxFUy5jb21tb24pLgotLQkoRElTVEZJTEUuZ2V0dGV4dCk6IFJlbW92ZSAkKERJU1RGSUxFUy5jb21tb24pLgotLQkoYWxsLWdldHRleHQpOiBSZW1vdmUgZ29hbC4KLS0JKGluc3RhbGwpOiBJZiAkKFBBQ0tBR0UpID0gZ2V0dGV4dCBpbnN0YWxsLCBvdGhlcndvc2UgZG8gbm90aGluZy4gIE5vCi0tCXBhY2thZ2UgYnV0IGdldHRleHQgaXRzZWxmIHNob3VsZCBpbnN0YWxsIGxpYmludGwuaCArIGhlYWRlcnMuCi0tCShkaXN0KTogRXh0ZW5kIGdvYWwgdG8gd29yayBmb3IgZ2V0dGV4dCwgdG9vLgotLQkoZGlzdC1nZXR0ZXh0KTogUmVtb3ZlIGdvYWwuCi0tCi0tCSogZGNnZXR0ZXh0LmMgWyFIQVZFX0FMTE9DQV06IERlZmluZSBtYWNybyBhbGxvY2EgYnkgdXNpbmcgbWFsbG9jLgotLQotLVN1biBKdW4gIDIgMTc6MzM6MDYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOiBQYXJhbWV0ZXIgaXMgbm93IGNvbWVzIGZyb20KLS0gICAgICAgIGZpbmRfbDEwbmZpbGUuCi0tCi0tU2F0IEp1biAgMSAwMjoyMzowMyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYyAoX19hcmd6X25leHQpOiBBZGQgZGVmaW5pdGlvbi4KLS0KLS0JKiBkY2dldHRleHQuYyBbIUhBVkVfQUxMT0NBXTogQWRkIGNvZGUgZm9yIGhhbmRsaW5nIG1pc3NpbmcgYWxsb2NhCi0tCWNvZGUuICBVc2UgbmV3IGwxMG5maWxlIGhhbmRsaW5nLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgWyFIQVZFX0FMTE9DQV06IEFkZCBjb2RlIGZvciBoYW5kbGluZyBtaXNzaW5nCi0tICAgICAgICBhbGxvY2EgY29kZS4KLS0KLS0JKiBsMTBuZmxpc3QuYzogSW5pdGlhbCByZXZpc2lvbi4KLS0KLS1UdWUgQXByICAyIDE4OjUxOjE4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGFsbC1nZXR0ZXh0KTogTmV3IGdvYWwuICBTYW1lIGFzIGFsbC15ZXMuCi0tCi0tVGh1IE1hciAyOCAyMzowMToyMiAxOTk2ICBLYXJsIEVpY2h3YWxkZXIgIDxrZUBrZS5jZW50cmFsLmRlPgotLQotLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKTogRGVmaW5lIHVzaW5nIEBkYXRhZGlyQC4KLS0KLS1UdWUgTWFyIDI2IDEyOjM5OjE0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jOiBJbmNsdWRlIDxjdHlwZS5oPi4gIFJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLVNhdCBNYXIgMjMgMDI6MDA6MzUgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6IFJlbmFtZSB0byBzdHBjcHlfXyB0byBwcmV2ZW50IGNsYXNoaW5nCi0tICAgICAgICB3aXRoIGV4dGVybmFsIGRlY2xhcmF0aW9uLgotLQotLVNhdCBNYXIgIDIgMDA6NDc6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxsLW5vKTogUmVuYW1lIGZyb20gYWxsX25vLgotLQotLVNhdCBGZWIgMTcgMDA6MjU6NTkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBnZXR0ZXh0UC5oIFtsb2FkZWRfZG9tYWluXTogQXJyYXkgYHN1Y2Nlc3NvcicgbXVzdCBub3cgY29udGFpbiB1cAotLSAgICAgICAgdG8gNjMgZWxlbWVudHMgKGJlY2F1c2Ugb2YgY29kZXNldCBuYW1lIG5vcm1hbGl6YXRpb24pLgotLQotLQkqIGZpbmRkb21haW4uYzogSW1wbGVtZW50IGNvZGVzZXQgbmFtZSBub3JtYWxpemF0aW9uLgotLQotLVRodSBGZWIgMTUgMDQ6Mzk6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxsKTogRGVmaW5lIHRvIGBhbGwtQFVTRV9OTFNAJy4KLS0JKGFsbC15ZXMsIGFsbF9ubyk6IE5ldyBnb2Fscy4gIGBhbGwtbm8nIGlzIG5vb3AsIGBhbGwteWVzJwotLQlpcyBmb3JtZXIgYWxsLgotLQotLU1vbiBKYW4gMTUgMjE6NDY6MDEgMTk5NiAgSG93YXJkIEdheWxlICA8aG93YXJkQGhhbC5jb20+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6IEluY3JlbWVudCBzdHJpbmcgcG9pbnRlcnMgaW4gbG9vcAotLSAgICAgICAgb2Ygc3RyY2FzZWNtcCByZXBsYWNlbWVudC4KLS0KLS1GcmkgRGVjIDI5IDIxOjE2OjM0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogV2hvIGNvbW1lbnRlZCB0aGlzIGdvYWwgb3V0ID8gOi0pCi0tCi0tRnJpIERlYyAyOSAxNTowODoxNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOiBTYXZlIGBlcnJubycuICBGYWlsaW5nIHN5c3RlbSBjYWxscwotLQlzaG91bGQgbm90IGVmZmVjdCBpdCBiZWNhdXNlIGEgbWlzc2luZyBjYXRhbG9nIGlzIG5vIGVycm9yLgotLQlSZXBvcnRlZCBieSBIYXJhbGQgSzxvOj5uaWcgPGtvZW5pZ0B0YXQucGh5c2lrLnVuaS10dWViaW5nZW4uZGU+LgotLQotLVR1ZSBEZWMgMTkgMjI6MDk6MTMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoTWFrZWZpbGUpOiBFeHBsaWNpdGx5IHVzZSAkKFNIRUxMKSBmb3IgcnVubmluZwotLSAgICAgICAgc2hlbGwgc2NyaXB0cy4KLS0KLS1GcmkgRGVjIDE1IDE3OjM0OjU5IDE5OTUgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IE9ubHkgaW5zdGFsbCBsaWJyYXJ5IGFuZCBoZWFkZXIgd2hlbgotLQl3ZSB1c2UgdGhlIG93biBpbXBsZW1lbnRhdGlvbi4gIERvbid0IGRvIGl0IHdoZW4gdXNpbmcgdGhlCi0tCXN5c3RlbSdzIGdldHRleHQgb3IgY2F0Z2V0cyBmdW5jdGlvbnMuCi0tCi0tCSogZGNnZXR0ZXh0LmMgKGZpbmRfbXNnKTogTXVzdCBub3Qgc3dhcCBkb21haW4tPmhhc2hfc2l6ZSBoZXJlLgotLQotLVNhdCBEZWMgIDkgMTY6MjQ6MzcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jLCBsaWJpbnRsLmluc3QsIGxpYmdldHRleHQuaCwgaGFzaC1zdHJpbmcuaCwKLS0JZ2V0dGV4dFAuaCwgZmluZGRvbWFpbi5jLCBkY2dldHRleHQuYywgY2F0LWNvbXBhdC5jOgotLQlVc2UgUEFSQU1TIGluc3RlYWQgb2YgX19QLiAgU3VnZ2VzdGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLVR1ZSBEZWMgIDUgMTE6Mzk6MTQgMTk5NSAgTGFycnkgU2Nod2ltbWVyICA8cm9zZWJ1ZEBjeWNsb25lLnN0YW5mb3JkLmVkdT4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IFVzZSBgI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKScgaW5zdGVhZCBvZiBgI2lmCi0tCSFfTElCSU5UTF9IJyBiZWNhdXNlIFNvbGFyaXMgZGVmaW5lcyBfTElCSU5UTF9IIGFzIGVtcHR5LgotLQotLU1vbiBEZWMgIDQgMTU6NDI6MDcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOgotLQlJbnN0YWxsIGxpYmludGwuaW5zdCBpbnN0ZWFkIG9mIGxpYmludGwuaC5pbnN0YWxsLgotLQotLVNhdCBEZWMgIDIgMjI6NTE6MzggMTk5NSAgTWFyY3VzIERhbmllbHMgIDxtYXJjdXNAc3lzYy5wZHguZWR1PgotLQotLQkqIGNhdC1jb21wYXQuYyAodGV4dGRvbWFpbik6Ci0tCVJldmVyc2Ugb3JkZXIgaW4gd2hpY2ggZmlsZXMgYXJlIHRyaWVkIHlvdSBsb2FkLiAgRmlyc3QKLS0JdHJ5IGxvY2FsIGZpbGUsIHdoZW4gdGhpcyBmYWlsZWQgYWJzb2x1dGUgcGF0aC4KLS0KLS1XZWQgTm92IDI5IDAyOjAzOjUzIDE5OTUgIE5lbHNvbiBILiBGLiBCZWViZSAgPGJlZWJlQG1hdGgudXRhaC5lZHU+Ci0tCi0tCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6IEFkZCBtaXNzaW5nIHsgfS4KLS0KLS1TdW4gTm92IDI2IDE4OjIxOjQxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbGliaW50bC5pbnN0OiBBZGQgbWlzc2luZyBfX1AgZGVmaW5pdGlvbi4gIFJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KLS0KLS0JKiBNYWtlZmlsZS5pbjoKLS0JQWRkIGR1bW15IGBhbGwnIGFuZCBgZHZpJyBnb2Fscy4gIFJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkuCi0tCi0tU2F0IE5vdiAyNSAxNjoxMjowMSAxOTk1ICBGcmFuYyxvaXMgUGluYXJkICA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+Ci0tCi0tCSogaGFzaC1zdHJpbmcuaDogQ2FwaXRhbGl6ZSBhcmd1bWVudHMgb2YgbWFjcm9zLgotLQotLVNhdCBOb3YgMjUgMTI6MDE6MzYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogUHJldmVudCBmaWxlcyBuYW1lcyBsb25nZXIgdGhhbiAxMwotLQljaGFyYWN0ZXJzLiAgbGliaW50bC5oLmdsaWJjLT5saWJpbnRsLmdsaWJjLAotLQlsaWJpbnRsLmguaW5zdGFsbC0+bGliaW50bC5pbnN0LiAgUmVwb3J0ZWQgYnkgSm9zaHVhIFIuIFBvdWxzb24uCi0tCi0tU2F0IE5vdiAyNSAxMTozMToxMiAxOTk1ICBFcmljIEJhY2t1cyAgPGVyaWNiQGxzaWQuaHAuY29tPgotLQotLQkqIGRjZ2V0dGV4dC5jOiBGaXggYnVnIGluIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMuCi0tCi0tU2F0IE5vdiAyNSAwMjozNToyNyAxOTk1ICBOZWxzb24gSC4gRi4gQmVlYmUgIDxiZWViZUBtYXRoLnV0YWguZWR1PgotLQotLQkqIGxpYmdldHRleHQuaDogU29sYXJpcyBjYyBkb2VzIG5vdCB1bmRlcnN0YW5kCi0tCSAjaWYgIVNZTUJPTDEgJiYgIVNZTUJPTDIuICBTYWQJYnV0IHRydWUuCi0tCi0tVGh1IE5vdiAyMyAxNjoyMjoxNCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKToKLS0JRml4IGZvciBtYWNoaW5lIHdpdGggPjMyIGJpdCBgdW5zaWduZWQgbG9uZydzLgotLQotLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOgotLQlGaXggaG9ycmlibGUgYnVnIGluIGxvb3AgZm9yIGFsdGVybmF0aXZlIHRyYW5zbGF0aW9uLgotLQotLVRodSBOb3YgMjMgMDE6NDU6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBwbzJ0Ymwuc2VkLmluLCBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOgotLQlTb21lIGZ1cnRoZXIgc2ltcGxpZmljYXRpb25zIGluIG1lc3NhZ2UgbnVtYmVyIGdlbmVyYXRpb24uCi0tCi0tTW9uIE5vdiAyMCAyMTowODo0MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxpYmludGwuaC5nbGliYzogVXNlIF9fY29uc3QgaW5zdGVhZCBvZiBjb25zdCBpbiBwcm90b3R5cGVzLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6Ci0tCUluc3RhbGwgbGliaW50bC5oLmluc3RhbGwgaW5zdGVhZCBvZiBsaWJpbnRsLmguICBUaGlzCi0tCWlzIGEgc3RyaXBwZWQtZG93biB2ZXJzaW9uLiAgU3VnZ2VzdGVkIGJ5IFBldGVyIE1pbGxlci4KLS0KLS0JKiBsaWJpbnRsLmguaW5zdGFsbCwgbGliaW50bC5oLmdsaWJjOiBJbml0aWFsIHJldmlzaW9uLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKF9ubF9leHBhbmRfYWxpYXMsIHJlYWRfYWxpYXNfZmlsZSk6Ci0tCVByb3RlY3QgcHJvdG90eXBlcyBpbiB0eXBlIGNhc3RzIGJ5IF9fUC4KLS0KLS1UdWUgTm92IDE0IDE2OjQzOjU4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogaGFzaC1zdHJpbmcuaDogQ29ycmVjdCBwcm90b3R5cGUgZm9yIGhhc2hfc3RyaW5nLgotLQotLVN1biBOb3YgMTIgMTI6NDI6MzAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6IEFkZCBwcm90b3R5cGUuCi0tCi0tCSogZ2V0dGV4dFAuaDogRml4IGNvcHlyaWdodC4KLS0JKFNXQVApOiBBZGQgcHJvdG90eXBlLgotLQotLVdlZCBOb3YgIDggMjI6NTY6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOiBGb3Jnb3Qgc2l6ZW9mLgotLQlBdm9pZCBjYWxsaW5nICpwcmludGYgZnVuY3Rpb24uICBUaGlzIGludHJvZHVjZXMgYSBiaWcgb3ZlcmhlYWQuCi0tCVBhdGNoIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLVR1ZSBOb3YgIDcgMTQ6MjE6MDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMsIGNhdC1jb21wYXQuYzogV3JvbmcgaW5kZW50YXRpb24gaW4gI2lmIGZvciBzdHBjcHkuCi0tCi0tCSogZmluZGRvbWFpbi5jIChzdHBjcHkpOgotLQlEZWZpbmUgc3Vic3RpdHV0aW9uIGZ1bmN0aW9uIGxvY2FsLiAgVGhlIG1hY3JvIHdhcyB0byBmbGFreS4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IEZpeCB0eXBvLgotLQotLQkqIHhvcGVuLW1zZy5zZWQsIGxpbnV4LW1zZy5zZWQ6Ci0tCVdoaWxlIGJyaW5naW5nIG1lc3NhZ2UgbnVtYmVyIHRvIHJpZ2h0IHBsYWNlIG9ubHkgYWNjZXB0IGRpZ2l0cy4KLS0KLS0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOiBOb3cgdGhhdCB0aGUgY291bnRlciBkb2VzIG5vdCBoYXZlCi0tCWxlYWRpbmcgMHMgd2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgdGhlbS4gIFJlcG9ydGVkIGJ5IE1hcmN1cwotLQlEYW5pZWxzLgotLQotLQkqIE1ha2VmaWxlLmluICguLi9wby9jYXQtaWQtdGJsLm8pOiBVc2UgJCh0b3Bfc3JkaXIpIGluCi0tCWRlcGVuZGVuY3kuICBSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IChzdHBjcHkpIFshX0xJQkMgJiYgIUhBVkVfU1RQQ1BZXTogRGVmaW5lIHJlcGxhY2VtZW50LgotLQlHZW5lcmFsbHkgY2xlYW51cCB1c2luZyAjaWYgaW5zdGVhZCBvZiAjaWZuZGVmLgotLQotLQkqIE1ha2VmaWxlLmluOiBDb3JyZWN0IHR5cG9zIGluIGNvbW1lbnQuICBCeSBGcmFuYyxvaXMgUGluYXJkLgotLQotLU1vbiBOb3YgIDYgMDA6Mjc6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBEb24ndCBpbnN0YWxsIGxpYmludGwuaCBhbmQgbGliaW50bC5hCi0tCWlmIHdlIHVzZSBhbiBhdmFpbGFibGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4KLS0KLS1TdW4gTm92ICA1IDIyOjAyOjA4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbGliZ2V0dGV4dC5oOiBGaXggdHlwbzogSEFWRV9DQVRHRVRUUyAtPiBIQVZFX0NBVEdFVFMuICBSZXBvcnRlZAotLQlieSBGcmFuYyxvaXMgUGluYXJkLgotLQotLQkqIGxpYmdldHRleHQuaDogVXNlICNpZiBpbnN0ZWFkIG9mICNpZmRlZi8jaWZuZGVmLgotLQotLQkqIGZpbmRkb21haW4uYzoKLS0JQ29tbWVudHMgZGVzY3JpYmluZyB3aGF0IGhhcyB0byBiZSBkb25lIHNob3VsZCBzdGFydCB3aXRoIEZJWE1FLgotLQotLVN1biBOb3YgIDUgMTk6Mzg6MDEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogU3BsaXQuICBVc2UgRElTVEZJTEVTIHdpdGggbm9ybWFsIG1lYW5pbmcuCi0tCURJU1RGSUxFUy5jb21tb24gbmFtZXMgdGhlIGZpbGVzIGNvbW1vbiB0byBib3RoIGRpc3QgZ29hbHMuCi0tCURJU1RGSUxFUy5nZXR0ZXh0IGFyZSB0aGUgZmlsZXMgb25seSBkaXN0cmlidXRlZCBpbiBHTlUgZ2V0dGV4dC4KLS0KLS1TdW4gTm92ICA1IDE3OjMyOjU0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IENvcnJlY3Qgc2VhcmNoaW5nIGluIGRlcml2ZWQgbG9jYWxlcy4KLS0JVGhpcyB3YXMgbmVjZXNzYXJ5IHNpbmNlIGEgY2hhbmdlIGluIF9ubF9maW5kX21zZyBzZXZlcmFsIHdlZWtzCi0tCWFnby4gIEkgcmVhbGx5IGRvbid0IGtub3cgdGhpcyBpcyBzdGlsbCBub3QgZml4ZWQuCi0tCi0tU3VuIE5vdiAgNSAxMjo0MzoxMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKTogVGVzdCBmb3IgRklMRU5BTUUgPT0gTlVMTC4gIFRoaXMKLS0JbWlnaHQgbWFyayBhIHNwZWNpYWwgY29uZGl0aW9uLgotLQotLQkqIGZpbmRkb21haW4uYyAobWFrZV9lbnRyeV9yZWMpOiBEb24ndCBtYWtlIGlsbGVnYWwgZW50cnkgYXMgZGVjaWRlZC4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZGlzdCk6IFN1cHByZXNzIGVycm9yIG1lc3NhZ2Ugd2hlbiBsbiBmYWlsZWQuCi0tCUdldCBmaWxlcyBmcm9tICQoc3JjZGlyKSBleHBsaWNpdGx5LgotLQotLQkqIGxpYmdldHRleHQuaCAoZ2V0dGV4dF9jb25zdCk6IFJlbmFtZSB0byBnZXR0ZXh0X25vb3AuCi0tCi0tRnJpIE5vdiAgMyAwNzozNjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAobWFrZV9lbnRyeV9yZWMpOgotLQlQcm90ZWN0IGFnYWluc3Qgd3JvbmcgbG9jYWxlIG5hbWVzIGJ5IHRlc3RpbmcgbWFzay4KLS0KLS0JKiBsaWJnZXR0ZXh0LmggKGdldHRleHRfY29uc3QpOiBBZGQgbWFjcm8gZGVmaW5pdGlvbi4KLS0JQ2FwaXRhbGl6ZSBtYWNybyBhcmd1bWVudHMuCi0tCi0tVGh1IE5vdiAgMiAyMzoxNTo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKLS0JVGVzdCBmb3IgcG9pbnRlciAhPSBOVUxMIGJlZm9yZSBhY2Nlc3NpbmcgdmFsdWUuCi0tCVJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkuCi0tCi0tCSogZ2V0dGV4dC5jIChOVUxMKToKLS0JRGVmaW5lIGFzICh2b2lkKikwIGluc3RhZCBvZiAwLiAgUmVwb3J0ZWQgYnkgRnJhbmMsb2lzIFBpbmFyZC4KLS0KLS1Nb24gT2N0IDMwIDIxOjI4OjUyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogcG8ydGJsLnNlZC5pbjogU2VyaW91cyB0eXBvIGJ1ZyBmaXhlZCBieSBKaW0gTWV5ZXJpbmcuCi0tCi0tU2F0IE9jdCAyOCAyMzoyMDo0NyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxpYmdldHRleHQuaDogRGlzYWJsZSBkY2dldHRleHQgb3B0aW1pemF0aW9uIGZvciBTb2xhcmlzIDIuMy4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKToKLS0JUGV0ZXIgTWlsbGVyIHJlcG9ydGVkIHRoYXQgdG9sb3dlciBpbiBzb21lIHN5c3RlbXMgaXMKLS0JZXZlbiBkdW1iZXIgdGhhbiBJIHRob3VnaHQuICBQcm90ZWN0IGNhbGwgYnkgYGlzdXBwZXInLgotLQotLUZyaSBPY3QgMjcgMjI6MjI6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAobGliZGlyLCBpbmNsdWRlZGlyKTogTmV3IHZhcmlhYmxlcy4KLS0JKGluc3RhbGwtc3JjKTogSW5zdGFsbCBsaWJpbnRsLmEgYW5kIGxpYmludGwuaCBpbiBjb3JyZWN0IGRpcnMuCi0tCi0tRnJpIE9jdCAyNyAyMjowNzoyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChTT1VSQ0VTKTogRml4IHR5cG86IGludHJsLmNvbXBhdC5jIC0+IGludGwtY29tcGF0LmMuCi0tCi0tCSogcG8ydGJsLnNlZC5pbjogUGF0Y2ggZm9yIGJ1Z2d5IFNFRHMgYnkgQ2hyaXN0aWFuIHZvbiBSb3F1ZXMuCi0tCi0tCSogbG9jYWxlYWxpYXMuYzoKLS0JRml4IHR5cG8gYW5kIHN1cGVyZmxvdXMgdGVzdC4gIFJlcG9ydGVkIGJ5IENocmlzdGlhbiB2b24gUm9xdWVzLgotLQotLUZyaSBPY3QgIDYgMTE6NTI6MDUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCUNvcnJlY3Qgc29tZSByZW1haW5kZXIgZnJvbSB0aGUgcHJlLUNFTiBzeW50YXguICBOb3cKLS0Jd2UgZG9uJ3QgaGF2ZSBhIGNvbnN0YW50IG51bWJlciBvZiBzdWNjZXNzb3JzIGFueW1vcmUuCi0tCi0tV2VkIFNlcCAyNyAyMTo0MToxMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBBZGQgbGliaW50bC5oLmdsaWJjLgotLQotLQkqIE1ha2VmaWxlLmluIChkaXN0LWxpYmMpOiBBZGQgZ29hbCBmb3IgcGFja2luZyBzb3VyY2VzIGZvciBnbGliYy4KLS0JKENPTVNSQ1MsIENPTUhEUlMpOiBTcGxpdHRlZCB0byBzZXBhcmF0ZSBzb3VyY2VzIHNoYXJlZCB3aXRoIGdsaWJjLgotLQotLQkqIGxvYWRtc2djYXQuYzogRm9yZ2V0IHRvIGNvbnRpbnVlICNpZiBsaW5lLgotLQotLQkqIGxvY2FsZWFsaWFzLmM6Ci0tCVtfTElCQ106IFJlbmFtZSBzdHJjYXNlY21wIHRvIF9fc3RyY2FzZWNtcCB0byBrZWVwIEFOU0kgQyBuYW1lCi0tCXNwYWNlIGNsZWFuLgotLQotLQkqIGRjZ2V0dGV4dC5jLCBmaW5kZG9tYWluLmM6IEJldHRlciBjb21tZW50IHRvIGxhc3QgY2hhbmdlLgotLQotLQkqIGxvYWRtc2djYXQuYzoKLS0JW19MSUJDXTogUmVuYW1lIGZzdGF0LCBvcGVuLCBjbG9zZSwgcmVhZCwgbW1hcCwgYW5kIG11bm1hcCB0bwotLQlfX2ZzdGF0LCBfX29wZW4sIF9fY2xvc2UsIF9fcmVhZCwgX19tbWFwLCBhbmQgX19tdW5tYXAgcmVzcAotLQl0byBrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgotLQotLQkqIGZpbmRkb21haW4uYzoKLS0JW19MSUJDXTogUmVuYW1lIHN0cGNweSB0byBfX3N0cGNweSB0byBrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgotLQotLQkqIGRjZ2V0dGV4dC5jOgotLQlbX0xJQkNdOiBSZW5hbWUgZ2V0Y2VkIGFuZCBzdHBjcHkgdG8gX19nZXRjd2QgYW5kIF9fc3RwY3B5IHJlc3AgdG8KLS0Ja2VlcCBBTlNJIEMgbmFtZSBzcGFjZSBjbGVhbi4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6Ci0tCUluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHRob3NlIG9sZCBTeXNWIHN5c3RlbXMgb3V0IHRoZXJlLgotLQlSZXBvcnRlZCBieSBGcmFuY2VzY28gUG90b3J0aWAuCi0tCi0tCSogbG9hZG1zZ2NhdC5jICh1c2VfbW1hcCk6IERlZmluZSBpZiBjb21waWxlZCBmb3IgZ2xpYmMuCi0tCi0tCSogYmluZHRleHRkb20uYzogSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycwotLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEZpeCAyIHRpbWVzIGRlZmllbmQgLT4gZGVmaW5lZC4KLS0KLS0JKiB0ZXh0ZG9tYWluLmM6IEluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oIHdoZW4KLS0JY29tcGlsaW5nIGZvciBnbGliYy4gIEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMKLS0JdW5jb25kaXRpb25hbGx5IGlmIF9MSUJDIGlzIGRlZmluZWQuCi0tCi0tCSogbG9jYWxlYWxpYXMuYywgbG9hZG1zZ2NhdC5jOiBQcmVwYXJlIHRvIGJlIGNvbXBpbGVkIGluIGdsaWJjLgotLQotLQkqIGdldHRleHQuYzoKLS0JSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgotLQlHZXQgTlVMTCBmcm9tIHN0ZGRlZi5oIGlmIHdlIGNvbXBpbGUgZm9yIGdsaWJjLgotLQotLQkqIGZpbmRkb21haW4uYzogSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbgotLQljb21waWxpbmcgZm9yIGdsaWJjLiAgSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycwotLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KLS0KLS0JKiBkY2dldHRleHQuYzogSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycyB1bmNvbmRpdGlvbmFsbHkKLS0JaWYgX0xJQkMgaXMgZGVmaW5lZC4KLS0KLS0JKiBkZ2V0dGV4dC5jOiBJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mCi0tCWxpYmdldHRleHQuaC4KLS0JKGxvY2FsZS5oKTogRG9uJ3QgcmVseSBvbiBIQVZFX0xPQ0FMRV9IIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KLS0KLS0JKiBkY2dldHRleHQuYzogSWYgY29tcGlsZWQgaW4gZ2xpYmMgaW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZgotLQlsaWJnZXR0ZXh0LmguCi0tCShnZXRjd2QpOiBEb24ndCByZWx5IG9uIEhBVkVfR0VUQ1dEIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOgotLQlJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaC4KLS0KLS1Nb24gU2VwIDI1IDIyOjIzOjA2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYyAoX25sX2V4cGFuZF9hbGlhcyk6IERvbid0IGNhbGwgYnNlYXJjaCBpZiBOTUFQIDw9IDAuCi0tCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgotLQotLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgotLQlTdHJpbmcgdXNlZCBpbiBwdXRlbnYgbXVzdCBub3QgYmUgcmVjeWNsZWQuCi0tCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgotLQotLQkqIGxpYmdldHRleHQuaCAoX19VU0VfR05VX0dFVFRFWFQpOgotLQlBZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgR05VIGdldHRleHQKLS0JbGlicmFyeS4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKToKLS0JRml4IGJ1ZyB3aXRoIHRoZSBzdHJhbmdlIHN0cGNweSByZXBsYWNlbWVudC4KLS0JUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgotLQotLVNhdCBTZXAgMjMgMDg6MjM6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IEluY2x1ZGUgPHN0cmluZy5oPiBmb3Igc3RwY3B5IHByb3RvdHlwZS4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgotLQlXaGlsZSBleHBhbmQgc3RyZHVwIGNvZGUgdGVtcG9yYXJ5IHZhcmlhYmxlIGBjcCcgaGlkZWQKLS0JaGlnaGVyIGxldmVsIHZhcmlhYmxlIHdpdGggc2FtZSBuYW1lLiAgUmVuYW1lIHRvIGB0cCcuCi0tCi0tCSogdGV4dGRvbWFpbi5jICh0ZXh0ZG9tYWluKToKLS0JQXZvaWQgd2FybmluZyBieSB1c2luZyB0ZW1wb3JhcnkgdmFyaWFibGUgaW4gc3RyZHVwIGNvZGUuCi0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBhcHBsaWNhdGlvbicuCi0tCi0tVGh1IFNlcCAyMSAxNTo1MTo0NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOgotLQlVc2Ugc3RyY2FzZWNtcCgpIG9ubHkgaWYgYXZhaWxhYmxlLiAgRWxzZSB1c2UKLS0JaW1wbGVtZW50YXRpb24gaW4gcGxhY2UuCi0tCi0tCSogaW50bC1jb21wYXQuYzoKLS0JV3JhcHBlciBmdW5jdGlvbnMgbm93IGNhbGwgKl9fIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIF9fKi4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IERlY2xhcmUgcHJvdG90eXBlcyBmb3IgKl9fIGZ1bmN0aW9ucyBpbnN0ZWFkIGZvciBfXyouCi0tCi0tCSogY2F0LWNvbXBhdC5jLCBsb2FkbXNnY2F0LmM6Ci0tCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAotLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCi0tCXN0YW5kYWxvbmUuCi0tCi0tCSogYmluZHRleHRkb20uYzoKLS0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0Ci0tCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKLS0Jc3RhbmRhbG9uZS4KLS0JUmVuYW1lIHRvIGJpbmR0ZXh0ZG9tYWluX18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KLS0KLS0JKiBkZ2V0dGV4dC5jOgotLQlSZW5hbWUgZnVuY3Rpb24gdG8gZGdldHRleHRfXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgotLQotLQkqIGdldHRleHQuYzoKLS0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0Ci0tCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKLS0Jc3RhbmRhbG9uZS4KLS0JRnVuY3Rpb25zIG5vdyBjYWxsZWQgZ2V0dGV4dF9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCi0tCi0tCSogZGNnZXR0ZXh0LmMsIGxvY2FsZWFsaWFzLmMsIHRleHRkb21haW4uYywgZmluZGRvbWFpbi5jOgotLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKLS0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAotLQlzdGFuZGFsb25lLgotLQotLVN1biBTZXAgMTcgMjM6MTQ6NDkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IENvcnJlY3Qgc29tZSBidWdzIGluIGhhbmRsaW5nIG9mIENFTiBzdGFuZGFyZAotLSAJbG9jYWxlIGRlZmluaXRpb25zLgotLQotLVRodSBTZXAgIDcgMDE6NDk6MjggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEltcGxlbWVudCBDRU4gc3ludGF4LgotLQotLQkqIGdldHRleHRQLmggKGxvYWRlZF9kb21haW4pOiBFeHRlbmQgbnVtYmVyIG9mIHN1Y2Nlc3NvcnMgdG8gMzEuCi0tCi0tU2F0IEF1ZyAxOSAxOToyNToyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChhbGlhc3BhdGgpOiBSZW1vdmUgcGF0aCB0byBYMTEgbG9jYWxlIGRpci4KLS0KLS0JKiBNYWtlZmlsZS5pbjogTWFrZSBpbnN0YWxsLXNyYyBkZXBlbmQgb24gaW5zdGFsbC4gIFRoaXMgaGVscHMKLS0gCWdldHRleHQgdG8gaW5zdGFsbCB0aGUgc291cmNlcyBhbmQgb3RoZXIgcGFja2FnZXMgY2FuIHVzZSB0aGUKLS0gCWluc3RhbGwgZ29hbC4KLS0KLS1TYXQgQXVnIDE5IDE1OjE5OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKHVuaW5zdGFsbCk6IFJlbW92ZSBzdHVmZiBpbnN0YWxsZWQgYnkgaW5zdGFsbC1zcmMuCi0tCi0tVHVlIEF1ZyAxNSAxMzoxMzo1MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIFZFUlNJT04uaW46IEluaXRpYWwgcmV2aXNpb24uCi0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6Ci0tCUFkZCBWRVJTSU9OIGZpbGUuICBUaGlzIGlzIG5vdCBuZWNlc3NhcnkgZm9yIGdldHRleHQsIGJ1dAotLQlmb3Igb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhpcyBsaWJyYXJ5LgotLQotLVR1ZSBBdWcgMTUgMDY6MTY6NDQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBnZXR0ZXh0UC5oIChfbmxfZmluZF9kb21haW4pOgotLQlOZXcgcHJvdG90eXBlIGFmdGVyIGNoYW5naW5nIHNlYXJjaCBzdHJhdGVneS4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCVdlIG5vdyB0cnkgb25seSB0byBmaW5kIGEgc3BlY2lmaWVkIGNhdGFsb2cuICBGYWxsIGJhY2sgdG8gb3RoZXIKLS0JY2F0YWxvZ3MgbGlzdGVkIGluIHRoZSBsb2NhbGUgbGlzdCBpcyBub3cgZG9uZSBpbiBfX2RjZ2V0dGV4dC4KLS0KLS0JKiBkY2dldHRleHQuYyAoX19kY2dldHRleHQpOgotLQlOb3cgd2UgcHJvdmlkZSBtZXNzYWdlIGZhbGwgYmFjayBldmVuIHRvIGRpZmZlcmVudCBsYW5ndWFnZXMuCi0tCUkuZS4gaWYgYSBtZXNzYWdlIGlzIG5vdCBhdmFpbGFibGUgaW4gb25lIGxhbmd1YWdlIGFsbCB0aGUgb3RoZXIKLS0gCWluIHRoZSBsb2NhbGUgbGlzdCBhIHRyaWVkLiAgRm9ybWVybHkgZmFsbCBiYWNrIHdhcyBvbmx5IHBvc3NpYmxlCi0tIAl3aXRoaW4gb25lIGxhbmd1YWdlLiAgSW1wbGVtZW50ZWQgYnkgbW92aW5nIG9uZSBsb29wIGZyb20KLS0gCV9ubF9maW5kX2RvbWFpbiB0byBoZXJlLgotLQotLU1vbiBBdWcgMTQgMjM6NDU6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZ2V0dGV4dHNyY2Rpcik6Ci0tCURpcmVjdG9yeSB3aGVyZSBzb3VyY2Ugb2YgR05VIGdldHRleHQgbGlicmFyeSBhcmUgbWFkZQotLQlhdmFpbGFibGUuCi0tCShJTlNUQUxMLCBJTlNUQUxMX0RBVEEpOiBQcm9ncmFtcyB1c2VkIGZvciBpbnN0YWxsaW5nIHNvdXJjZXMuCi0tCShnZXR0ZXh0LXNyYyk6IE5ldy4gIFJ1bGUgdG8gaW5zdGFsbCBHTlUgZ2V0dGV4dCBzb3VyY2VzIGZvciB1c2UgaW4KLS0JZ2V0dGV4dGl6ZSBzaGVsbCBzY3JpcHQuCi0tCi0tU3VuIEF1ZyAxMyAxNDo0MDo0OCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKToKLS0JVXNlIG1tYXAgZm9yIGxvYWRpbmcgb25seSB3aGVuIG11bm1hcCBmdW5jdGlvbiBpcwotLQlhbHNvIGF2YWlsYWJsZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IERlcGVuZCBvbiBgYWxsJyBnb2FsLgotLQotLVdlZCBBdWcgIDkgMTE6MDQ6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgotLQlEbyBub3Qgb3ZlcndyaXRlICdcbicgd2hlbiB0ZXJtaW5hdGluZyBhbGlhcyB2YWx1ZSBzdHJpbmcuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKLS0JSGFuZGxlIGxvbmcgbGluZXMuICBJZ25vcmUgdGhlIHJlc3Qgbm90IGZpdHRpbmcgaW4KLS0JdGhlIGJ1ZmZlciBhZnRlciB0aGUgaW5pdGlhbCBgZmdldHMnIGNhbGwuCi0tCi0tV2VkIEF1ZyAgOSAwMDo1NDoyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGdldHRleHRQLmggKF9ubF9sb2FkX2RvbWFpbik6Ci0tCUFkZCBwcm90b3R5cGUsIHJlcGxhY2luZyBwcm90b3R5cGUgZm9yIF9ubF9sb2FkX21zZ19jYXQuCi0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgotLQlSZW1vdmUgdW5uZWVkZWQgdmFyaWFibGUgZmlsZW5hbWUgYW5kIGZpbGVuYW1lX2xlbi4KLS0JKGV4cGFuZF9hbGlhcyk6IFJlbW92ZSBwcm90b3R5cGUgYmVjYXVzZSBmdW5jdGlvbnMgZG9lcyBub3QKLS0gCWV4aXN0IGFueW1vcmUuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKLS0JQ2hhbmdlIHR5cGUgb2YgZm5hbWVfbGVuIHBhcmFtZXRlciB0byBpbnQuCi0tCSh4bWFsbG9jKTogQWRkIHByb3RvdHlwZS4KLS0KLS0JKiBsb2FkbXNnY2F0LmM6IEJldHRlciBwcm90b3R5cGVzIGZvciB4bWFsbG9jLgotLQotLVR1ZSBBdWcgIDggMjI6MzA6MzkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCUFsbG93IGFsaWFzIG5hbWUgdG8gYmUgY29uc3RydWN0ZWQgZnJvbSB0aGUgZm91ciBjb21wb25lbnRzLgotLQotLQkqIE1ha2VmaWxlLmluIChhbGlhc3BhdGgpOiBOZXcgdmFyaWFibGUuICBTZXQgdG8gcHJlbGltaW5hcnkgdmFsdWUuCi0tCShTT1VSQ0VTKTogQWRkIGxvY2FsZWFsaWFzLmMuCi0tCShPQkpFQ1RTKTogQWRkIGxvY2FsZWFsaWFzLm8uCi0tCi0tCSogZ2V0dGV4dFAuaDogQWRkIHByb3RvdHlwZSBmb3IgX25sX2V4cGFuZF9hbGlhcy4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEFsaWFzaW5nIGhhbmRsZWQgaW4gaW50bC9sb2NhbGVhbGlhcy5jLgotLQotLQkqIGxvY2FsZWFsaWFzLmM6IEFsaWFzaW5nIGZvciBsb2NhbGUgbmFtZXMuCi0tCi0tCSogYmluZHRleHRkb20uYzogQmV0dGVyIHByb3RvdHlwZXMgZm9yIHhtYWxsb2MgYW5kIHhzdHJkdXAuCi0tCi0tTW9uIEF1ZyAgNyAyMzo0Nzo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBnZXR0ZXh0LnBlcmwgaXMgbm93IGZvdW5kIGluIG1pc2MvLgotLQotLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgotLQlDb3JyZWN0IGltcGxlbWVudGF0aW9uLiAgZGlybmFtZSBwYXJhbWV0ZXIgd2FzIG5vdCB1c2VkLgotLQlSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KLS0KLS0JKiBnZXR0ZXh0UC5oIChsb2FkZWRfZG9tYWluKToKLS0JTmV3IGZpZWxkcyBgc3VjY2Vzc29yJyBhbmQgYGRlY2lkZWQnIGZvciBvbywgbGF6eQotLQltZXNzYWdlIGhhbmRsaW5nIGltcGxlbWVudGF0aW9uLgotLQotLQkqIGRjZ2V0dGV4dC5jOgotLQlBZG9wdCBmb3Igb28sIGxhenkgbWVzc2FnZSBoYW5kbGlpbmcuCi0tICAJTm93IHdlIGNhbiBpbmhlcml0IHRyYW5zbGF0aW9ucyBmcm9tIGxlc3Mgc3BlY2lmaWMgbG9jYWxlcy4KLS0JKGZpbmRfbXNnKTogTmV3IGZ1bmN0aW9uLgotLQotLQkqIGxvYWRtc2djYXQuYywgZmluZGRvbWFpbi5jOgotLQlDb21wbGV0ZSByZXdyaXRlLiAgSW1wbGVtZW50IG9vLCBsYXp5IG1lc3NhZ2UgaGFuZGxpbmcgOi0pLgotLSAgCVdlIG5vdyBoYXZlIGFuIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgYExBTkdVQUdFJyB3aXRoCi0tIAlhIGhpZ2hlciBwcmlvcml0eSB0aGFuIExDX0FMTCBmb3IgdGhlIExDX01FU1NBR0UgbG9jYWxlLgotLSAgCUhlcmUgd2UgY2FuIHNldCBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIHNwZWNpZmljYXRpb25zIGVhY2gKLS0gCW9mIHRoZSBmb3JtIGBsYW5ndWFnZVtfdGVycml0b3J5Wy5jb2Rlc2V0XV1bQG1vZGlmaWVyXScuCi0tCi0tU2F0IEF1ZyAgNSAwOTo1NTo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAodW5pc3RkLmgpOgotLQlJbmNsdWRlIHRvIGdldCBfUENfUEFUSF9NQVggZGVmaW5lZCBvbiBzeXN0ZW0gaGF2aW5nIGl0LgotLQotLUZyaSBBdWcgIDQgMjI6NDI6MDAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6IEluY2x1ZGUgcHJvdG90eXBlLgotLQotLQkqIE1ha2VmaWxlLmluIChkaXN0KTogUmVtb3ZlIGBjb3B5aW5nIGluc3RlYWQnIG1lc3NhZ2UuCi0tCi0tV2VkIEF1ZyAgMiAxODo1MjowMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChJRCwgVEFHUyk6IERvIG5vdCB1c2UgJF4uCi0tCi0tVHVlIEF1ZyAgMSAyMDowNzoxMSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChUQUdTLCBJRCk6IFVzZSAkXiBhcyBjb21tYW5kIGFyZ3VtZW50LgotLQkoVEFHUyk6IEdpdmUgZXRhZ3MgLW8gb3B0aW9uIHQgd3JpdGUgdG8gY3VycmVudCBkaXJlY3RvcnksCi0tIAlub3QgJChzcmNkaXIpLgotLQkoSUQpOiBVc2UgJChzcmNkaXIpIGluc3RlYWQgb3MgJCh0b3Bfc3JjZGlyKS9zcmMuCi0tCShkaXN0Y2xlYW4pOiBSZW1vdmUgSUQuCi0tCi0tU3VuIEp1bCAzMCAxMTo1MTo0NiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChnbnVsb2NhbGVkaXIpOgotLQlOZXcgdmFyaWFibGUsIGFsd2F5cyB1c2luZyBzaGFyZS8gZm9yIGRhdGEgZGlyZWN0b3J5LgotLQkoREVGUyk6IEFkZCBHTlVMT0NBTEVESVIsIHVzZWQgaW4gZmluZGRvbWFpbi5jLgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2RlZmF1bHRfZGlybmFtZSk6Ci0tCVNldCB0byBHTlVMT0NBTEVESVIsIGJlY2F1c2UgaXQgYWx3YXlzIGhhcyB0byBwb2ludAotLQl0byB0aGUgZGlyZWN0b3J5IHdoZXJlIEdOVSBnZXR0ZXh0IExpYnJhcnkgd3JpdGVzIGl0IHRvLgotLQotLQkqIGludGwtY29tcGF0LmMgKHRleHRkb21haW4sIGJpbmR0ZXh0ZG9tYWluKToKLS0JVW5kZWZpbmUgbWFjcm9zIGJlZm9yZSBmdW5jdGlvbiBkZWZpbml0aW9uLgotLQotLVNhdCBKdWwgMjIgMDE6MTA6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsaWJnZXR0ZXh0LmggKF9MSUJJTlRMX0gpOgotLQlQcm90ZWN0IGRlZmluaXRpb24gaW4gY2FzZSB3aGVyZSB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgYXMKLS0JbGliZ2V0dGV4dC5oIG9uIFNvbGFyaXMgbWFjaGluZXMuICBBZGQgY29tbWVudCBhYm91dCB0aGlzLgotLQotLVdlZCBKdWwgMTkgMDI6MzY6NDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBpbnRsLWNvbXBhdC5jICh0ZXh0ZG9tYWluKTogQ29ycmVjdCB0eXBvLgotLQotLVdlZCBKdWwgMTkgMDE6NTE6MzUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBkY2dldHRleHQuYyAoZGNnZXR0ZXh0KTogRnVuY3Rpb24gbm93IGNhbGxlZCBfX2RjZ2V0dGV4dC4KLS0KLS0JKiBkZ2V0dGV4dC5jIChkZ2V0dGV4dCk6IE5vdyBjYWxsZWQgX19kZ2V0dGV4dCBhbmQgY2FsbHMKLS0gCV9fZGNnZXR0ZXh0LgotLQotLQkqIGdldHRleHQuYyAoZ2V0dGV4dCk6Ci0tCUZ1bmN0aW9uIG5vdyBjYWxsZWQgX19nZXR0ZXh0IGFuZCBjYWxscyBfX2RnZXR0ZXh0LgotLQotLQkqIHRleHRkb21haW4uYyAodGV4dGRvbWFpbik6IEZ1bmN0aW9uIG5vdyBjYWxsZWQgX190ZXh0ZG9tYWluLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmMgKGJpbmR0ZXh0ZG9tYWluKTogRnVuY3Rpb24gbm93IGNhbGxlZAotLSAJX19iaW5kdGV4dGRvbWFpbi4KLS0KLS0JKiBpbnRsLWNvbXBhdC5jOiBJbml0aWFsIHJldmlzaW9uLgotLQotLQkqIE1ha2VmaWxlLmluIChTT1VSQ0VTKTogQWRkIGludGwtY29tcGF0LmMuCi0tCShPQkpFQ1RTKTogV2UgYWx3YXlzIGNvbXBpbGUgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgZnVuY3Rpb25zLgotLSAgCU9CSkVDVFMgY29udGFpbnMgYWxsIG9iamVjdHMgYnV0IGNhdC1jb21wYXQubywgLi4vcG8vY2F0LWlmLXRibC5vLAotLSAJYW5kIGludGwtY29tcGF0Lm8uCi0tICAJKEdFVFRPQkpTKTogQ29udGFpbnMgbm93IG9ubHkgaW50bC1jb21wYXQuby4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6Ci0tCVJlLWluY2x1ZGUgcHJvdGVjdGlvbiBtYXRjaGVzIGR1YWxpc3RpYyBjaGFyYWN0ZXIgb2YgbGliZ2V0dGV4dC5oLgotLQlGb3IgYWxsIGZ1bmN0aW9ucyBpbiBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGRlZmluZSBfXyBjb3VudGVyIHBhcnQuCi0tCi0tCSogZmluZGRvbWFpbi5jIChzdHJjaHIpOiBEZWZpbmUgYXMgaW5kZXggaWYgbm90IGZvdW5kIGluIEMgbGlicmFyeS4KLS0JKF9ubF9maW5kX2RvbWFpbik6IEZvciByZWxhdGl2ZSBwYXRocyBwYXN0ZSAvIGluIGJldHdlZW4uCi0tCi0tVHVlIEp1bCAxOCAxNjozNzo0NSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvYWRtc2djYXQuYywgZmluZGRvbWFpbi5jOiBBZGQgaW5jbHVzaW9uIG9mIHN5cy90eXBlcy5oLgotLQotLQkqIHhvcGVuLW1zZy5zZWQ6IEZpeCBidWcgd2l0aCBgbXNnc3RyICIiJyBsaW5lcy4KLS0JQSBsaXR0bGUgYml0IGJldHRlciBjb21tZW50cy4KLS0KLS1UdWUgSnVsIDE4IDAxOjE4OjI3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW46Ci0tCXBvLW1vZGUuZWwsIG1ha2VsaW5rcywgY29tYmluZS1zaCBhcmUgbm93IGZvdW5kIGluIC4uL21pc2MuCi0tCi0tCSogcG8tbW9kZS5lbCwgbWFrZWxpbmtzLCBjb21iaW5lLXNoLCBlbGlzcC1jb21wOgotLQlNb3ZlZCB0byAuLi9taXNjLy4KLS0KLS0JKiBsaWJnZXR0ZXh0LmgsIGdldHRleHRQLmgsIGdldHRleHQuaDogVW5pZm9ybSB0ZXN0IGZvciBfX1NURENfXy4KLS0KLS1TdW4gSnVsIDE2IDIyOjMzOjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKElOU1RBTEwsIElOU1RBTExfREFUQSk6IE5ldyB2YXJpYWJsZXMuCi0tCShpbnN0YWxsLWRhdGEsIHVuaW5zdGFsbCk6IEluc3RhbGwvdW5pbnN0YWxsIC5lbGMgZmlsZS4KLS0KLS0JKiBwby1tb2RlLmVsIChJbnN0YWxsYXRpb24gY29tbWVudCk6Ci0tCUFkZCAucG94IGFzIHBvc3NpYmxlIGV4dGVuc2lvbiBvZiAucG8gZmlsZXMuCi0tCi0tU3VuIEp1bCAxNiAxMzoyMzoyNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGVsaXNwLWNvbXA6IENvbXBsZXRlIG5ldyB2ZXJzaW9uIGJ5IEZyYW5jLG9pczogVGhpcyBkb2VzIG5vdAotLSAJZmFpbCB3aGVuIG5vdCBjb21waWxpbmcgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuCi0tCi0tU3VuIEp1bCAxNiAwMDoxMjoxNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluICguLi9wby9jYXQtaWQtdGJsLm8pOgotLQlVc2UgJChNQUtFKSBpbnN0ZWFkIG9mIG1ha2UgZm9yIHJlY3Vyc2l2ZSBtYWtlLgotLQotLQkqIE1ha2VmaWxlLmluICguZWwuZWxjKTogVXNlICQoU0hFTEwpIGluc3RlYWQgb2YgL2Jpbi9zaC4KLS0JKGluc3RhbGwtZXhlYyk6IEFkZCBtaXNzaW5nIGR1bW15IGdvYWwuCi0tCShpbnN0YWxsLWRhdGEsIHVuaW5zdGFsbCk6IEAgaW4gbXVsdGktbGluZSBzaGVsbCBjb21tYW5kIGF0Ci0tIAliZWdpbm5pbmcsIG5vdCBpbiBmcm9udCBvZiBlY2hvLiAgUmVwb3J0ZWQgYnkgRXJpYyBCYWNrdXMuCi0tCi0tU2F0IEp1bCAxNSAwMDoyMToyOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOgotLQlSZW5hbWUgbGliZ2V0dGV4dC5wZXJsIHRvIGdldHRleHQucGVybCB0byBmaXQgaW4gMTQgY2hhcnMKLS0JZmlsZSBzeXN0ZW1zLgotLQotLQkqIGdldHRleHQucGVybDoKLS0gCVJlbmFtZSB0byBnZXR0ZXh0LnBlcmwgdG8gZml0IGluIDE0IGNoYXJzIGZpbGUgc3lzdGVtcy4KLS0KLS1UaHUgSnVsIDEzIDIzOjE3OjIwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogY2F0LWNvbXBhdC5jOiBJZiAhU1REQ19IRUFERVJTIHRyeSB0byBpbmNsdWRlIG1hbGxvYy5oLgotLQotLVRodSBKdWwgMTMgMjA6NTU6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBwbzJ0Ymwuc2VkLmluOiBQcmV0dHkgcHJpbnRpbmcuCi0tCi0tCSogbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDoKLS0JQ29ycmVjdCBidWdzIHdpdGggaGFuZGxpbmcgc3Vic3RpdHV0ZSBmbGFncyBpbiBicmFuY2hlcy4KLS0KLS0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6Ci0tCU9sZCBLJlIgY29tcGlsZXJzIGRvbid0IHVuZGVyIHN0YW5kIGB1bnNpZ25lZCBjaGFyJy4KLS0KLS0JKiBnZXR0ZXh0LmggKG5sc191aW50MzIpOgotLQlTb21lIG9sZCBLJlIgY29tcGlsZXJzIChlZyBIUCkgZG9uJ3QgdW5kZXJzdGFuZCBgdW5zaWduZWQgaW50Jy4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKG1zZ190b19jYXRfaWQpOiBEZS1BTlNJLWZ5IHByb3RvdHlwZXMuCi0tCi0tVGh1IEp1bCAxMyAwMTozNDozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChFTENGSUxFUyk6IE5ldyB2YXJpYWJsZS4KLS0JKERJU1RGSUxFUyk6IEFkZCBlbGlzcC1jb21wLgotLQlBZGQgaW1wbGljaXQgcnVsZSBmb3IgLmVsIC0+IC5lbGMgY29tcGlsYXRpb24uCi0tCShpbnN0YWxsLWRhdGEpOiBpbnN0YWxsICRFTENGSUxFUwotLQkoY2xlYW4pOiByZW5hbWVkIHBvLXRvLXRibCBhbmQgcG8tdG8tbXNnIHRvIHBvMnRibCBhbmQgcG8ybXNnIHJlc3AuCi0tCi0tCSogZWxpc3AtY29tcDogSW5pdGlhbCByZXZpc2lvbgotLQotLVdlZCBKdWwgMTIgMTY6MTQ6NTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbjoKLS0JY2F0LWlkLXRibC5jIGlzIG5vdyBmb3VuZCBpbiBwby8uICBUaGlzIGVuYWJsZXMgdXMgdG8gdXNlIGFuIGlkZW50aWNhbAotLQlpbnRsLyBkaXJlY3RvcnkgaW4gYWxsIHBhY2thZ2VzLgotLQotLQkqIGRjZ2V0dGV4dC5jIChkY2dldHRleHQpOiBoYXNoaW5nIGRvZXMgbm90IHdvcmsgZm9yIHRhYmxlIHNpemUgPD0gMi4KLS0KLS0JKiB0ZXh0ZG9tYWluLmM6IGZpeCB0eXBvICgjaWYgZGVmIC0+ICNpZiBkZWZpbmVkKQotLQotLVR1ZSBKdWwgMTEgMTg6NDQ6NDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoc3RhbXAtY2F0LWlkKTogdXNlIHRvcF9zcmNkaXIgdG8gYWRkcmVzcyBzb3VyY2UgZmlsZXMKLS0JKERJU1RGSUxFUyxkaXN0Y2xlYW4pOiBtb3ZlIHR1cGRhdGUucGVybCB0byBzcmMvCi0tCi0tCSogcG8tdG8tdGJsLnNlZC5pbjoKLS0JYWRkIGFkZGl0aW9uYWwganVtcCB0byBjbGVhciBjaGFuZ2UgZmxhZyB0byByZWNvZ25pemUgbXVsdGlsaW5lIHN0cmluZ3MKLS0KLS1UdWUgSnVsIDExIDAxOjMyOjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogdGV4dGRvbWFpbi5jOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBzdGRsaWIuaCBhbmQgc3RyaW5nLmguCi0tCi0tCSogbG9hZG1zZ2NhdC5jOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBzdGRsaWIuaC4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IFByb3RlY3QgaW5jbHVzaW9uIG9mIGxvY2FsZS5oLgotLQlBbGxvdyB1c2UgaW4gQysrIHByb2dyYW1zLgotLQlEZWZpbmUgTlVMTCBpcyBub3QgaGFwcGVuZWQgYWxyZWFkeS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogc2hpcCBwby10by10Ymwuc2VkLmluIGluc3RlYWQgb2YKLS0JcG8tdG8tdGJsLnNlZC4KLS0JKGRpc3RjbGVhbik6IHJlbW92ZSBwby10by10Ymwuc2VkIGFuZCB0dXBkYXRlLnBlcmwuCi0tCi0tCSogdHVwZGF0ZS5wZXJsLmluOiBTdWJzdGl0dXRlIFBlcmwgcGF0aCBldmVuIGluIGV4ZWMgbGluZS4KLS0JRG9uJ3QgaW5jbHVkZSBlbnRyaWVzIHdpdGhvdXQgdHJhbnNsYXRpb24gZnJvbSBvbGQgLnBvIGZpbGUuCi0tCi0tVHVlIEp1bCAgNCAwMDo0MTo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIHR1cGRhdGUucGVybC5pbjogdXNlICJVcGRhdGVkOiAiIGluIG1zZ2lkICIiLgotLQotLQkqIGNhdC1jb21wYXQuYzogRml4IHR5cG8gKExPQ0FMRElSIC0+IExPQ0FMRURJUikuCi0tIAlEZWZpbmUgZ2V0ZW52IGlmICFfX1NURENfXy4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOiBQcm90ZWN0IHN0ZGxpYi5oIGFuZCBzdHJpbmcuaCBpbmNsdXNpb24uCi0tIAlEZWZpbmUgZnJlZSBpZiAhX19TVERDX18uCi0tCi0tCSogZmluZGRvbWFpbi5jOiBDaGFuZ2UgREVGX01TR19ET01fRElSIHRvIExPQ0FMRURJUi4KLS0gCURlZmluZSBmcmVlIGlmICFfX1NURENfXy4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IENoYW5nZSBERUZfTVNHX0RPTV9ESVIgdG8gTE9DQUxFRElSLgotLQotLU1vbiBKdWwgIDMgMjM6NTY6MzAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbjogVXNlIExPQ0FMRURJUiBpbnN0ZWFkIG9mIERFRl9NU0dfRE9NX0RJUi4KLS0JUmVtb3ZlIHVubmVlZGVkICQoc3JjZGlyKSBmcm9tIE1ha2VmaWxlLmluIGRlcGVuZGVuY3kuCi0tCi0tCSogbWFrZWxpbmtzOiBBZGQgY29weXJpZ2h0IGFuZCBzaG9ydCBkZXNjcmlwdGlvbi4KLS0KLS0JKiBwby1tb2RlLmVsOiBMYXN0IHZlcnNpb24gZm9yIDAuNy4KLS0KLS0JKiB0dXBkYXRlLnBlcmwuaW46IEZpeCBkaWUgbWVzc2FnZS4KLS0KLS0JKiBkY2dldHRleHQuYzogUHJvdGVjdCBpbmNsdWRlIG9mIHN0cmluZy5oLgotLQotLQkqIGdldHRleHQuYzogUHJvdGVjdCBpbmNsdWRlIG9mIHN0ZGxpYi5oIGFuZCBmdXJ0aGVyIHRyaWVzIHRvIGdldCBOVUxMLgotLQotLQkqIGZpbmRkb21haW4uYzogU29tZSBjb3JyZWN0aW9ucyBpbiBpbmNsdWRlcy4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoSU5DTFVERVMpOiBQcnVuZSBsaXN0IGNvcnJlY3QgcGF0aCB0byBNYWtlZmlsZS5pbi4KLS0KLS0JKiBwby10by10Ymwuc2VkOiBBZG9wdCBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KLS0KLS0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOiBBZG9wdCBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KLS0KLS1TdW4gSnVsICAyIDIzOjU1OjAzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogdHVwZGF0ZS5wZXJsLmluOiBDb21wbGV0ZSByZXdyaXRlIGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgotKzIwMDQtMDEtMjkgIEdOVSAgPGJ1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnPgotIAotLVN1biBKdWwgIDIgMDI6MDY6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLSsJKiBWZXJzaW9uIDAuMTQuMSByZWxlYXNlZC4KLSAKLS0JKiBGaXJzdCBvZmZpY2lhbCByZWxlYXNlLiAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYWxsIHRoZSBjb2RlCi0tCW5lZWRlZCB0byBpbnRlcm5hdGlvbmFsaXplIG93biBwYWNrYWdlcy4gIEl0IHByb3ZpZGVzIGZ1bmN0aW9ucwotLQl3aGljaCBhbGxvdyB0byB1c2UgdGhlIFgvT3BlbiBjYXRnZXRzIGZ1bmN0aW9uIHdpdGggYW4gaW50ZXJmYWNlCi0tCWxpa2UgdGhlIFVuaWZvcnVtIGdldHRleHQgZnVuY3Rpb24uICBGb3Igc3lzdGVtIHdoaWNoIGRvZXMgbm90Ci0tCWhhdmUgbmVpdGhlciBvZiB0aG9zZSBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGlzIHByb3ZpZGVkLgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2NvbmZpZy5jaGFyc2V0CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2NvbmZpZy5jaGFyc2V0CTIwMDQtMDktMTIgMTQ6NDA6MzQuMzU0NzQ4MjQwIC0wNDAwCi1AQCAtMCwwICsxLDYwOCBAQAotKyMhIC9iaW4vc2gKLSsjIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgdGFibGUgb2YgY2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMuCi0rIwotKyMgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyAgIFVTQS4KLSsjCi0rIyBUaGUgdGFibGUgY29uc2lzdHMgb2YgbGluZXMgb2YgdGhlIGZvcm0KLSsjICAgIEFMSUFTICBDQU5PTklDQUwKLSsjCi0rIyBBTElBUyBpcyB0aGUgKHN5c3RlbSBkZXBlbmRlbnQpIHJlc3VsdCBvZiAibmxfbGFuZ2luZm8gKENPREVTRVQpIi4KLSsjIEFMSUFTIGlzIGNvbXBhcmVkIGluIGEgY2FzZSBzZW5zaXRpdmUgd2F5LgotKyMKLSsjIENBTk9OSUNBTCBpcyB0aGUgR05VIGNhbm9uaWNhbCBuYW1lIGZvciB0aGlzIGNoYXJhY3RlciBlbmNvZGluZy4KLSsjIEl0IG11c3QgYmUgYW4gZW5jb2Rpbmcgc3VwcG9ydGVkIGJ5IGxpYmljb252LiBTdXBwb3J0IGJ5IEdOVSBsaWJjIGlzCi0rIyBhbHNvIGRlc2lyYWJsZS4gQ0FOT05JQ0FMIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzdWFsbHkgYW4gdXBwZXIgY2FzZQotKyMgTUlNRSBjaGFyc2V0IG5hbWUgaXMgcHJlZmVycmVkLgotKyMgVGhlIGN1cnJlbnQgbGlzdCBvZiBHTlUgY2Fub25pY2FsIGNoYXJzZXQgbmFtZXMgaXMgYXMgZm9sbG93cy4KLSsjCi0rIyAgICAgICBuYW1lICAgICAgICAgICAgICBNSU1FPyAgICAgICAgICAgICB1c2VkIGJ5IHdoaWNoIHN5c3RlbXMKLSsjICAgQVNDSUksIEFOU0lfWDMuNC0xOTY4ICAgICAgIGdsaWJjIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktMSAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktMiAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktMyAgICAgICAgICAgICAgWSAgIGdsaWJjIHNvbGFyaXMKLSsjICAgSVNPLTg4NTktNCAgICAgICAgICAgICAgWSAgIG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIElTTy04ODU5LTUgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIElTTy04ODU5LTYgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBzb2xhcmlzCi0rIyAgIElTTy04ODU5LTcgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzCi0rIyAgIElTTy04ODU5LTggICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcwotKyMgICBJU08tODg1OS05ICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcwotKyMgICBJU08tODg1OS0xMyAgICAgICAgICAgICAgICAgZ2xpYmMKLSsjICAgSVNPLTg4NTktMTQgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIElTTy04ODU5LTE1ICAgICAgICAgICAgICAgICBnbGliYyBhaXggb3NmIHNvbGFyaXMgZnJlZWJzZAotKyMgICBLT0k4LVIgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBLT0k4LVUgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgS09JOC1UICAgICAgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIENQNDM3ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A3NzUgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg1MCAgICAgICAgICAgICAgICAgICAgICAgYWl4IG9zZiBkb3MKLSsjICAgQ1A4NTIgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg1NSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODU2ICAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1A4NTcgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg2MSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODYyICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NjQgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg2NSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODY2ICAgICAgICAgICAgICAgICAgICAgICBmcmVlYnNkIGRhcndpbiBkb3MKLSsjICAgQ1A4NjkgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg3NCAgICAgICAgICAgICAgICAgICAgICAgd29lMzIgZG9zCi0rIyAgIENQOTIyICAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1A5MzIgICAgICAgICAgICAgICAgICAgICAgIGFpeCB3b2UzMiBkb3MKLSsjICAgQ1A5NDMgICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDk0OSAgICAgICAgICAgICAgICAgICAgICAgb3NmIHdvZTMyIGRvcwotKyMgICBDUDk1MCAgICAgICAgICAgICAgICAgICAgICAgd29lMzIgZG9zCi0rIyAgIENQMTA0NiAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1AxMTI0ICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDExMjUgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQMTEyOSAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1AxMjUwICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCi0rIyAgIENQMTI1MSAgICAgICAgICAgICAgICAgICAgICBnbGliYyBzb2xhcmlzIGRhcndpbiB3b2UzMgotKyMgICBDUDEyNTIgICAgICAgICAgICAgICAgICAgICAgYWl4IHdvZTMyCi0rIyAgIENQMTI1MyAgICAgICAgICAgICAgICAgICAgICB3b2UzMgotKyMgICBDUDEyNTQgICAgICAgICAgICAgICAgICAgICAgd29lMzIKLSsjICAgQ1AxMjU1ICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHdvZTMyCi0rIyAgIENQMTI1NiAgICAgICAgICAgICAgICAgICAgICB3b2UzMgotKyMgICBDUDEyNTcgICAgICAgICAgICAgICAgICAgICAgd29lMzIKLSsjICAgR0IyMzEyICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBFVUMtSlAgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBFVUMtS1IgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBFVUMtVFcgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcwotKyMgICBCSUc1ICAgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgQklHNS1IS1NDUyAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMKLSsjICAgR0JLICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBvc2Ygc29sYXJpcyB3b2UzMiBkb3MKLSsjICAgR0IxODAzMCAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMKLSsjICAgU0hJRlRfSklTICAgICAgICAgICAgICAgWSAgIGhwdXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSk9IQUIgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMgd29lMzIKLSsjICAgVElTLTYyMCAgICAgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBocHV4IG9zZiBzb2xhcmlzCi0rIyAgIFZJU0NJSSAgICAgICAgICAgICAgICAgIFkgICBnbGliYwotKyMgICBUQ1ZONTcxMi0xICAgICAgICAgICAgICAgICAgZ2xpYmMKLSsjICAgR0VPUkdJQU4tUFMgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIEhQLVJPTUFOOCAgICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUFSQUJJQzggICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUdSRUVLOCAgICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUhFQlJFVzggICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLVRVUktJU0g4ICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUtBTkE4ICAgICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIERFQy1LQU5KSSAgICAgICAgICAgICAgICAgICBvc2YKLSsjICAgREVDLUhBTllVICAgICAgICAgICAgICAgICAgIG9zZgotKyMgICBVVEYtOCAgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggb3NmIHNvbGFyaXMKLSsjCi0rIyBOb3RlOiBOYW1lcyB3aGljaCBhcmUgbm90IG1hcmtlZCBhcyBiZWluZyBhIE1JTUUgbmFtZSBzaG91bGQgbm90IGJlIHVzZWQgaW4KLSsjIEludGVybmV0IHByb3RvY29scyBmb3IgaW5mb3JtYXRpb24gaW50ZXJjaGFuZ2UgKG1haWwsIG5ld3MsIGV0Yy4pLgotKyMKLSsjIE5vdGU6IEFTQ0lJIGFuZCBBTlNJX1gzLjQtMTk2OCBhcmUgc3lub255bW91cyBjYW5vbmljYWwgbmFtZXMuIEFwcGxpY2F0aW9ucwotKyMgbXVzdCB1bmRlcnN0YW5kIGJvdGggbmFtZXMgYW5kIHRyZWF0IHRoZW0gYXMgZXF1aXZhbGVudC4KLSsjCi0rIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKLSsjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCi0rIyBvcgotKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCi0rCi0raG9zdD0iJDEiCi0rb3M9YGVjaG8gIiRob3N0IiB8IHNlZCAtZSAncy9eW14tXSotW14tXSotXCguKlwpJC9cMS8nYAotK2VjaG8gIiMgVGhpcyBmaWxlIGNvbnRhaW5zIGEgdGFibGUgb2YgY2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMsIgotK2VjaG8gIiMgc3VpdGFibGUgZm9yIG9wZXJhdGluZyBzeXN0ZW0gJyR7b3N9Jy4iCi0rZWNobyAiIyBJdCB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb25maWcuY2hhcnNldC4iCi0rIyBMaXN0IG9mIHJlZmVyZW5jZXMsIHVwZGF0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbjoKLStlY2hvICIjIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogIgotK2Nhc2UgIiRvcyIgaW4KLSsgICAgbGludXgtZ251bGliYzEqKQotKwkjIExpbnV4IGxpYmM1IGRvZXNuJ3QgaGF2ZSBubF9sYW5naW5mbyhDT0RFU0VUKTsgdGhlcmVmb3JlCi0rCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQotKwkjIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSsJZWNobyAiQyBBU0NJSSIKLSsJZWNobyAiUE9TSVggQVNDSUkiCi0rCWZvciBsIGluIGFmIGFmX1pBIGNhIGNhX0VTIGRhIGRhX0RLIGRlIGRlX0FUIGRlX0JFIGRlX0NIIGRlX0RFIGRlX0xVIFwKLSsJICAgICAgICAgZW4gZW5fQVUgZW5fQlcgZW5fQ0EgZW5fREsgZW5fR0IgZW5fSUUgZW5fTlogZW5fVVMgZW5fWkEgXAotKwkgICAgICAgICBlbl9aVyBlcyBlc19BUiBlc19CTyBlc19DTCBlc19DTyBlc19ETyBlc19FQyBlc19FUyBlc19HVCBcCi0rCSAgICAgICAgIGVzX0hOIGVzX01YIGVzX1BBIGVzX1BFIGVzX1BZIGVzX1NWIGVzX1VTIGVzX1VZIGVzX1ZFIGV0IFwKLSsJICAgICAgICAgZXRfRUUgZXUgZXVfRVMgZmkgZmlfRkkgZm8gZm9fRk8gZnIgZnJfQkUgZnJfQ0EgZnJfQ0ggZnJfRlIgXAotKwkgICAgICAgICBmcl9MVSBnYSBnYV9JRSBnbCBnbF9FUyBpZCBpZF9JRCBpbiBpbl9JRCBpcyBpc19JUyBpdCBpdF9DSCBcCi0rCSAgICAgICAgIGl0X0lUIGtsIGtsX0dMIG5sIG5sX0JFIG5sX05MIG5vIG5vX05PIHB0IHB0X0JSIHB0X1BUIHN2IFwKLSsJICAgICAgICAgc3ZfRkkgc3ZfU0U7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5pc28tODg1OS0xIElTTy04ODU5LTEiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktMTUgSVNPLTg4NTktMTUiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktMTVAZXVybyBJU08tODg1OS0xNSIKLSsJICBlY2hvICIkbEBldXJvIElTTy04ODU5LTE1IgotKwkgIGVjaG8gIiRsLmNwLTQzNyBDUDQzNyIKLSsJICBlY2hvICIkbC5jcC04NTAgQ1A4NTAiCi0rCSAgZWNobyAiJGwuY3AtMTI1MiBDUDEyNTIiCi0rCSAgZWNobyAiJGwuY3AtMTI1MkBldXJvIENQMTI1MiIKLSsJICAjZWNobyAiJGwuYXRhcmktc3QgQVRBUkktU1QiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZwotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwkgIGVjaG8gIiRsLnV0Zi04QGV1cm8gVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gY3MgY3NfQ1ogaHIgaHJfSFIgaHUgaHVfSFUgcGwgcGxfUEwgcm8gcm9fUk8gc2sgc2tfU0sgc2wgXAotKwkgICAgICAgICBzbF9TSSBzciBzcl9DUyBzcl9ZVTsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS0yIgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTIgSVNPLTg4NTktMiIKLSsJICBlY2hvICIkbC5jcC04NTIgQ1A4NTIiCi0rCSAgZWNobyAiJGwuY3AtMTI1MCBDUDEyNTAiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbWsgbWtfTUsgcnUgcnVfUlU7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktNSIKLSsJICBlY2hvICIkbC5pc28tODg1OS01IElTTy04ODU5LTUiCi0rCSAgZWNobyAiJGwua29pOC1yIEtPSTgtUiIKLSsJICBlY2hvICIkbC5jcC04NjYgQ1A4NjYiCi0rCSAgZWNobyAiJGwuY3AtMTI1MSBDUDEyNTEiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gYXIgYXJfU0E7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktNiIKLSsJICBlY2hvICIkbC5pc28tODg1OS02IElTTy04ODU5LTYiCi0rCSAgZWNobyAiJGwuY3AtODY0IENQODY0IgotKwkgICNlY2hvICIkbC5jcC04NjggQ1A4NjgiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZwotKwkgIGVjaG8gIiRsLmNwLTEyNTYgQ1AxMjU2IgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIGVsIGVsX0dSIGdyIGdyX0dSOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTciCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktNyBJU08tODg1OS03IgotKwkgIGVjaG8gIiRsLmNwLTg2OSBDUDg2OSIKLSsJICBlY2hvICIkbC5jcC0xMjUzIENQMTI1MyIKLSsJICBlY2hvICIkbC5jcC0xMjUzQGV1cm8gQ1AxMjUzIgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwkgIGVjaG8gIiRsLnV0Zi04QGV1cm8gVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gaGUgaGVfSUwgaXcgaXdfSUw7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktOCIKLSsJICBlY2hvICIkbC5pc28tODg1OS04IElTTy04ODU5LTgiCi0rCSAgZWNobyAiJGwuY3AtODYyIENQODYyIgotKwkgIGVjaG8gIiRsLmNwLTEyNTUgQ1AxMjU1IgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIHRyIHRyX1RSOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTkiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktOSBJU08tODg1OS05IgotKwkgIGVjaG8gIiRsLmNwLTg1NyBDUDg1NyIKLSsJICBlY2hvICIkbC5jcC0xMjU0IENQMTI1NCIKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiBsdCBsdF9MVCBsdiBsdl9MVjsgZG8KLSsJICAjZWNobyAiJGwgQkFMVElDIiAjIG5vdCBhIGNvbW1vbmx5IHVzZWQgZW5jb2RpbmcsIHdyb25nIGVuY29kaW5nIG5hbWUKLSsJICBlY2hvICIkbCBJU08tODg1OS0xMyIKLSsJZG9uZQotKwlmb3IgbCBpbiBydV9VQSB1ayB1a19VQTsgZG8KLSsJICBlY2hvICIkbCBLT0k4LVUiCi0rCWRvbmUKLSsJZm9yIGwgaW4gemggemhfQ047IGRvCi0rCSAgI2VjaG8gIiRsIEdCXzIzMTItODAiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZywgd3JvbmcgZW5jb2RpbmcgbmFtZQotKwkgIGVjaG8gIiRsIEdCMjMxMiIKLSsJZG9uZQotKwlmb3IgbCBpbiBqYSBqYV9KUCBqYV9KUC5FVUM7IGRvCi0rCSAgZWNobyAiJGwgRVVDLUpQIgotKwlkb25lCi0rCWZvciBsIGluIGtvIGtvX0tSOyBkbwotKwkgIGVjaG8gIiRsIEVVQy1LUiIKLSsJZG9uZQotKwlmb3IgbCBpbiB0aCB0aF9USDsgZG8KLSsJICBlY2hvICIkbCBUSVMtNjIwIgotKwlkb25lCi0rCWZvciBsIGluIGZhIGZhX0lSOyBkbwotKwkgICNlY2hvICIkbCBJU0lSSS0zMzQyIiAjIGEgYnJva2VuIGVuY29kaW5nCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJOzsKLSsgICAgbGludXgqIHwgKi1nbnUqKQotKwkjIFdpdGggZ2xpYmMtMi4xIG9yIG5ld2VyLCB3ZSBkb24ndCBuZWVkIGFueSBjYW5vbmljYWxpemF0aW9uLAotKwkjIGJlY2F1c2UgZ2xpYmMgaGFzIGljb252IGFuZCBib3RoIGdsaWJjIGFuZCBsaWJpY29udiBzdXBwb3J0IGFsbAotKwkjIEdOVSBjYW5vbmljYWwgbmFtZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgdGhlIE1ha2VmaWxlIGRvZXMgbm90Ci0rCSMgbmVlZCB0byBpbnN0YWxsIHRoZSBhbGlhcyBmaWxlIGF0IGFsbC4KLSsJIyBUaGUgZm9sbG93aW5nIGFwcGxpZXMgb25seSB0byBnbGliYy0yLjAueCBhbmQgb2xkZXIgbGliY3MuCi0rCWVjaG8gIklTT182NDYuSVJWOjE5ODMgQVNDSUkiCi0rCTs7Ci0rICAgIGFpeCopCi0rCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgotKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCi0rCWVjaG8gIklTTzg4NTktNiBJU08tODg1OS02IgotKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKLSsJZWNobyAiSVNPODg1OS04IElTTy04ODU5LTgiCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgotKwllY2hvICJJQk0tODUwIENQODUwIgotKwllY2hvICJJQk0tODU2IENQODU2IgotKwllY2hvICJJQk0tOTIxIElTTy04ODU5LTEzIgotKwllY2hvICJJQk0tOTIyIENQOTIyIgotKwllY2hvICJJQk0tOTMyIENQOTMyIgotKwllY2hvICJJQk0tOTQzIENQOTQzIgotKwllY2hvICJJQk0tMTA0NiBDUDEwNDYiCi0rCWVjaG8gIklCTS0xMTI0IENQMTEyNCIKLSsJZWNobyAiSUJNLTExMjkgQ1AxMTI5IgotKwllY2hvICJJQk0tMTI1MiBDUDEyNTIiCi0rCWVjaG8gIklCTS1ldWNDTiBHQjIzMTIiCi0rCWVjaG8gIklCTS1ldWNKUCBFVUMtSlAiCi0rCWVjaG8gIklCTS1ldWNLUiBFVUMtS1IiCi0rCWVjaG8gIklCTS1ldWNUVyBFVUMtVFciCi0rCWVjaG8gImJpZzUgQklHNSIKLSsJZWNobyAiR0JLIEdCSyIKLSsJZWNobyAiVElTLTYyMCBUSVMtNjIwIgotKwllY2hvICJVVEYtOCBVVEYtOCIKLSsJOzsKLSsgICAgaHB1eCopCi0rCWVjaG8gImlzbzg4NTkxIElTTy04ODU5LTEiCi0rCWVjaG8gImlzbzg4NTkyIElTTy04ODU5LTIiCi0rCWVjaG8gImlzbzg4NTk1IElTTy04ODU5LTUiCi0rCWVjaG8gImlzbzg4NTk2IElTTy04ODU5LTYiCi0rCWVjaG8gImlzbzg4NTk3IElTTy04ODU5LTciCi0rCWVjaG8gImlzbzg4NTk4IElTTy04ODU5LTgiCi0rCWVjaG8gImlzbzg4NTk5IElTTy04ODU5LTkiCi0rCWVjaG8gImlzbzg4NTkxNSBJU08tODg1OS0xNSIKLSsJZWNobyAicm9tYW44IEhQLVJPTUFOOCIKLSsJZWNobyAiYXJhYmljOCBIUC1BUkFCSUM4IgotKwllY2hvICJncmVlazggSFAtR1JFRUs4IgotKwllY2hvICJoZWJyZXc4IEhQLUhFQlJFVzgiCi0rCWVjaG8gInR1cmtpc2g4IEhQLVRVUktJU0g4IgotKwllY2hvICJrYW5hOCBIUC1LQU5BOCIKLSsJZWNobyAidGlzNjIwIFRJUy02MjAiCi0rCWVjaG8gImJpZzUgQklHNSIKLSsJZWNobyAiZXVjSlAgRVVDLUpQIgotKwllY2hvICJldWNLUiBFVUMtS1IiCi0rCWVjaG8gImV1Y1RXIEVVQy1UVyIKLSsJZWNobyAiaHAxNUNOIEdCMjMxMiIKLSsJI2VjaG8gImNjZGMgPyIgIyB3aGF0IGlzIHRoaXM/Ci0rCWVjaG8gIlNKSVMgU0hJRlRfSklTIgotKwllY2hvICJ1dGY4IFVURi04IgotKwk7OwotKyAgICBpcml4KikKLSsJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCWVjaG8gIklTTzg4NTktMiBJU08tODg1OS0yIgotKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKLSsJZWNobyAiSVNPODg1OS03IElTTy04ODU5LTciCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJldWNDTiBHQjIzMTIiCi0rCWVjaG8gImV1Y0pQIEVVQy1KUCIKLSsJZWNobyAiZXVjS1IgRVVDLUtSIgotKwllY2hvICJldWNUVyBFVUMtVFciCi0rCTs7Ci0rICAgIG9zZiopCi0rCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgotKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZWNobyAiSVNPODg1OS00IElTTy04ODU5LTQiCi0rCWVjaG8gIklTTzg4NTktNSBJU08tODg1OS01IgotKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKLSsJZWNobyAiSVNPODg1OS04IElTTy04ODU5LTgiCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgotKwllY2hvICJjcDg1MCBDUDg1MCIKLSsJZWNobyAiYmlnNSBCSUc1IgotKwllY2hvICJkZWNoYW55dSBERUMtSEFOWVUiCi0rCWVjaG8gImRlY2hhbnppIEdCMjMxMiIKLSsJZWNobyAiZGVja2FuamkgREVDLUtBTkpJIgotKwllY2hvICJkZWNrb3JlYW4gRVVDLUtSIgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gImV1Y0tSIEVVQy1LUiIKLSsJZWNobyAiZXVjVFcgRVVDLVRXIgotKwllY2hvICJHQksgR0JLIgotKwllY2hvICJLU0M1NjAxIENQOTQ5IgotKwllY2hvICJzZGVja2FuamkgRVVDLUpQIgotKwllY2hvICJTSklTIFNISUZUX0pJUyIKLSsJZWNobyAiVEFDVElTIFRJUy02MjAiCi0rCWVjaG8gIlVURi04IFVURi04IgotKwk7OwotKyAgICBzb2xhcmlzKikKLSsJZWNobyAiNjQ2IEFTQ0lJIgotKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKLSsJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWVjaG8gIklTTzg4NTktMyBJU08tODg1OS0zIgotKwllY2hvICJJU084ODU5LTQgSVNPLTg4NTktNCIKLSsJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCi0rCWVjaG8gIklTTzg4NTktNiBJU08tODg1OS02IgotKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKLSsJZWNobyAiSVNPODg1OS04IElTTy04ODU5LTgiCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgotKwllY2hvICJrb2k4LXIgS09JOC1SIgotKwllY2hvICJhbnNpLTEyNTEgQ1AxMjUxIgotKwllY2hvICJCSUc1IEJJRzUiCi0rCWVjaG8gIkJpZzUtSEtTQ1MgQklHNS1IS1NDUyIKLSsJZWNobyAiZ2IyMzEyIEdCMjMxMiIKLSsJZWNobyAiR0JLIEdCSyIKLSsJZWNobyAiR0IxODAzMCBHQjE4MDMwIgotKwllY2hvICJjbnMxMTY0MyBFVUMtVFciCi0rCWVjaG8gIjU2MDEgRVVDLUtSIgotKwllY2hvICJrb19LUi5qb2hhcDkyIEpPSEFCIgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gIlBDSyBTSElGVF9KSVMiCi0rCWVjaG8gIlRJUzYyMC4yNTMzIFRJUy02MjAiCi0rCSNlY2hvICJzdW5fZXVfZ3JlZWsgPyIgIyB3aGF0IGlzIHRoaXM/Ci0rCWVjaG8gIlVURi04IFVURi04IgotKwk7OwotKyAgICBmcmVlYnNkKiB8IG9zMiopCi0rCSMgRnJlZUJTRCA0LjIgZG9lc24ndCBoYXZlIG5sX2xhbmdpbmZvKENPREVTRVQpOyB0aGVyZWZvcmUKLSsJIyBsb2NhbGNoYXJzZXQuYyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBmdWxsIGxvY2FsZSBuYW1lCi0rCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotKwkjIExpa2V3aXNlIGZvciBPUy8yLiBPUy8yIGhhcyBYRnJlZTg2IGp1c3QgbGlrZSBGcmVlQlNELiBKdXN0Ci0rCSMgcmV1c2UgRnJlZUJTRCdzIGxvY2FsZSBkYXRhIGZvciBPUy8yLgotKwllY2hvICJDIEFTQ0lJIgotKwllY2hvICJVUy1BU0NJSSBBU0NJSSIKLSsJZm9yIGwgaW4gbGFfTE4gbHRfTE47IGRvCi0rCSAgZWNobyAiJGwuQVNDSUkgQVNDSUkiCi0rCWRvbmUKLSsJZm9yIGwgaW4gZGFfREsgZGVfQVQgZGVfQ0ggZGVfREUgZW5fQVUgZW5fQ0EgZW5fR0IgZW5fVVMgZXNfRVMgXAotKwkgICAgICAgICBmaV9GSSBmcl9CRSBmcl9DQSBmcl9DSCBmcl9GUiBpc19JUyBpdF9DSCBpdF9JVCBsYV9MTiBcCi0rCSAgICAgICAgIGx0X0xOIG5sX0JFIG5sX05MIG5vX05PIHB0X1BUIHN2X1NFOyBkbwotKwkgIGVjaG8gIiRsLklTT184ODU5LTEgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5ESVNfODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZG9uZQotKwlmb3IgbCBpbiBjc19DWiBocl9IUiBodV9IVSBsYV9MTiBsdF9MTiBwbF9QTCBzbF9TSTsgZG8KLSsJICBlY2hvICIkbC5JU09fODg1OS0yIElTTy04ODU5LTIiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbGFfTE4gbHRfTFQ7IGRvCi0rCSAgZWNobyAiJGwuSVNPXzg4NTktNCBJU08tODg1OS00IgotKwlkb25lCi0rCWZvciBsIGluIHJ1X1JVIHJ1X1NVOyBkbwotKwkgIGVjaG8gIiRsLktPSTgtUiBLT0k4LVIiCi0rCSAgZWNobyAiJGwuSVNPXzg4NTktNSBJU08tODg1OS01IgotKwkgIGVjaG8gIiRsLkNQODY2IENQODY2IgotKwlkb25lCi0rCWVjaG8gInVrX1VBLktPSTgtVSBLT0k4LVUiCi0rCWVjaG8gInpoX1RXLkJJRzUgQklHNSIKLSsJZWNobyAiemhfVFcuQmlnNSBCSUc1IgotKwllY2hvICJ6aF9DTi5FVUMgR0IyMzEyIgotKwllY2hvICJqYV9KUC5FVUMgRVVDLUpQIgotKwllY2hvICJqYV9KUC5TSklTIFNISUZUX0pJUyIKLSsJZWNobyAiamFfSlAuU2hpZnRfSklTIFNISUZUX0pJUyIKLSsJZWNobyAia29fS1IuRVVDIEVVQy1LUiIKLSsJOzsKLSsgICAgbmV0YnNkKikKLSsJZWNobyAiNjQ2IEFTQ0lJIgotKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKLSsJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWVjaG8gIklTTzg4NTktNCBJU08tODg1OS00IgotKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKLSsJZWNobyAiSVNPODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZWNobyAiZXVjQ04gR0IyMzEyIgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gImV1Y0tSIEVVQy1LUiIKLSsJZWNobyAiZXVjVFcgRVVDLVRXIgotKwllY2hvICJCSUc1IEJJRzUiCi0rCWVjaG8gIlNKSVMgU0hJRlRfSklTIgotKwk7OwotKyAgICBkYXJ3aW4qKQotKwkjIERhcndpbiA2LjggZG9lc24ndCBoYXZlIG5sX2xhbmdpbmZvKENPREVTRVQpOyB0aGVyZWZvcmUKLSsJIyBsb2NhbGNoYXJzZXQuYyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBmdWxsIGxvY2FsZSBuYW1lCi0rCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotKwllY2hvICJDIEFTQ0lJIgotKwlmb3IgbCBpbiBlbl9BVSBlbl9DQSBlbl9HQiBlbl9VUyBsYV9MTjsgZG8KLSsJICBlY2hvICIkbC5VUy1BU0NJSSBBU0NJSSIKLSsJZG9uZQotKwlmb3IgbCBpbiBkYV9ESyBkZV9BVCBkZV9DSCBkZV9ERSBlbl9BVSBlbl9DQSBlbl9HQiBlbl9VUyBlc19FUyBcCi0rCSAgICAgICAgIGZpX0ZJIGZyX0JFIGZyX0NBIGZyX0NIIGZyX0ZSIGlzX0lTIGl0X0NIIGl0X0lUIG5sX0JFIFwKLSsJICAgICAgICAgbmxfTkwgbm9fTk8gcHRfUFQgc3ZfU0U7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5JU084ODU5LTEgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5JU084ODU5LTE1IElTTy04ODU5LTE1IgotKwlkb25lCi0rCWZvciBsIGluIGxhX0xOOyBkbwotKwkgIGVjaG8gIiRsLklTTzg4NTktMSBJU08tODg1OS0xIgotKwkgIGVjaG8gIiRsLklTTzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWRvbmUKLSsJZm9yIGwgaW4gY3NfQ1ogaHJfSFIgaHVfSFUgbGFfTE4gcGxfUEwgc2xfU0k7IGRvCi0rCSAgZWNobyAiJGwuSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbGFfTE4gbHRfTFQ7IGRvCi0rCSAgZWNobyAiJGwuSVNPODg1OS00IElTTy04ODU5LTQiCi0rCWRvbmUKLSsJZm9yIGwgaW4gcnVfUlU7IGRvCi0rCSAgZWNobyAiJGwuS09JOC1SIEtPSTgtUiIKLSsJICBlY2hvICIkbC5JU084ODU5LTUgSVNPLTg4NTktNSIKLSsJICBlY2hvICIkbC5DUDg2NiBDUDg2NiIKLSsJZG9uZQotKwlmb3IgbCBpbiBiZ19CRzsgZG8KLSsJICBlY2hvICIkbC5DUDEyNTEgQ1AxMjUxIgotKwlkb25lCi0rCWVjaG8gInVrX1VBLktPSTgtVSBLT0k4LVUiCi0rCWVjaG8gInpoX1RXLkJJRzUgQklHNSIKLSsJZWNobyAiemhfVFcuQmlnNSBCSUc1IgotKwllY2hvICJ6aF9DTi5FVUMgR0IyMzEyIgotKwllY2hvICJqYV9KUC5FVUMgRVVDLUpQIgotKwllY2hvICJqYV9KUC5TSklTIFNISUZUX0pJUyIKLSsJZWNobyAia29fS1IuRVVDIEVVQy1LUiIKLSsJOzsKLSsgICAgYmVvcyopCi0rCSMgQmVPUyBoYXMgYSBzaW5nbGUgbG9jYWxlLCBhbmQgaXQgaGFzIFVURi04IGVuY29kaW5nLgotKwllY2hvICIqIFVURi04IgotKwk7OwotKyAgICBtc2Rvc2RqZ3BwKikKLSsJIyBESkdQUCAyLjAzIGRvZXNuJ3QgaGF2ZSBubF9sYW5naW5mbyhDT0RFU0VUKTsgdGhlcmVmb3JlCi0rCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQotKwkjIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSsJZWNobyAiIyIKLSsJZWNobyAiIyBUaGUgZW5jb2RpbmdzIGdpdmVuIGhlcmUgbWF5IG5vdCBhbGwgYmUgY29ycmVjdC4iCi0rCWVjaG8gIiMgSWYgeW91IGZpbmQgdGhhdCB0aGUgZW5jb2RpbmcgZ2l2ZW4gZm9yIHlvdXIgbGFuZ3VhZ2UgYW5kIgotKwllY2hvICIjIGNvdW50cnkgaXMgbm90IHRoZSBvbmUgeW91ciBET1MgbWFjaGluZSBhY3R1YWxseSB1c2VzLCBqdXN0IgotKwllY2hvICIjIGNvcnJlY3QgaXQgaW4gdGhpcyBmaWxlLCBhbmQgc2VuZCBhIG1haWwgdG8iCi0rCWVjaG8gIiMgSnVhbiBNYW51ZWwgR3VlcnJlcm8gPHN0MDAxOTA2QGhyejEuaHJ6LnR1LWRhcm1zdGFkdC5kZT4iCi0rCWVjaG8gIiMgYW5kIEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPi4iCi0rCWVjaG8gIiMiCi0rCWVjaG8gIkMgQVNDSUkiCi0rCSMgSVNPLTg4NTktMSBsYW5ndWFnZXMKLSsJZWNobyAiY2EgQ1A4NTAiCi0rCWVjaG8gImNhX0VTIENQODUwIgotKwllY2hvICJkYSBDUDg2NSIgICAgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAiZGFfREsgQ1A4NjUiICMgbm90IENQODUwID8/Ci0rCWVjaG8gImRlIENQODUwIgotKwllY2hvICJkZV9BVCBDUDg1MCIKLSsJZWNobyAiZGVfQ0ggQ1A4NTAiCi0rCWVjaG8gImRlX0RFIENQODUwIgotKwllY2hvICJlbiBDUDg1MCIKLSsJZWNobyAiZW5fQVUgQ1A4NTAiICMgbm90IENQNDM3ID8/Ci0rCWVjaG8gImVuX0NBIENQODUwIgotKwllY2hvICJlbl9HQiBDUDg1MCIKLSsJZWNobyAiZW5fTlogQ1A0MzciCi0rCWVjaG8gImVuX1VTIENQNDM3IgotKwllY2hvICJlbl9aQSBDUDg1MCIgIyBub3QgQ1A0MzcgPz8KLSsJZWNobyAiZXMgQ1A4NTAiCi0rCWVjaG8gImVzX0FSIENQODUwIgotKwllY2hvICJlc19CTyBDUDg1MCIKLSsJZWNobyAiZXNfQ0wgQ1A4NTAiCi0rCWVjaG8gImVzX0NPIENQODUwIgotKwllY2hvICJlc19DUiBDUDg1MCIKLSsJZWNobyAiZXNfQ1UgQ1A4NTAiCi0rCWVjaG8gImVzX0RPIENQODUwIgotKwllY2hvICJlc19FQyBDUDg1MCIKLSsJZWNobyAiZXNfRVMgQ1A4NTAiCi0rCWVjaG8gImVzX0dUIENQODUwIgotKwllY2hvICJlc19ITiBDUDg1MCIKLSsJZWNobyAiZXNfTVggQ1A4NTAiCi0rCWVjaG8gImVzX05JIENQODUwIgotKwllY2hvICJlc19QQSBDUDg1MCIKLSsJZWNobyAiZXNfUFkgQ1A4NTAiCi0rCWVjaG8gImVzX1BFIENQODUwIgotKwllY2hvICJlc19TViBDUDg1MCIKLSsJZWNobyAiZXNfVVkgQ1A4NTAiCi0rCWVjaG8gImVzX1ZFIENQODUwIgotKwllY2hvICJldCBDUDg1MCIKLSsJZWNobyAiZXRfRUUgQ1A4NTAiCi0rCWVjaG8gImV1IENQODUwIgotKwllY2hvICJldV9FUyBDUDg1MCIKLSsJZWNobyAiZmkgQ1A4NTAiCi0rCWVjaG8gImZpX0ZJIENQODUwIgotKwllY2hvICJmciBDUDg1MCIKLSsJZWNobyAiZnJfQkUgQ1A4NTAiCi0rCWVjaG8gImZyX0NBIENQODUwIgotKwllY2hvICJmcl9DSCBDUDg1MCIKLSsJZWNobyAiZnJfRlIgQ1A4NTAiCi0rCWVjaG8gImdhIENQODUwIgotKwllY2hvICJnYV9JRSBDUDg1MCIKLSsJZWNobyAiZ2QgQ1A4NTAiCi0rCWVjaG8gImdkX0dCIENQODUwIgotKwllY2hvICJnbCBDUDg1MCIKLSsJZWNobyAiZ2xfRVMgQ1A4NTAiCi0rCWVjaG8gImlkIENQODUwIiAgICAjIG5vdCBDUDQzNyA/PwotKwllY2hvICJpZF9JRCBDUDg1MCIgIyBub3QgQ1A0MzcgPz8KLSsJZWNobyAiaXMgQ1A4NjEiICAgICMgbm90IENQODUwID8/Ci0rCWVjaG8gImlzX0lTIENQODYxIiAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJpdCBDUDg1MCIKLSsJZWNobyAiaXRfQ0ggQ1A4NTAiCi0rCWVjaG8gIml0X0lUIENQODUwIgotKwllY2hvICJsdCBDUDc3NSIKLSsJZWNobyAibHRfTFQgQ1A3NzUiCi0rCWVjaG8gImx2IENQNzc1IgotKwllY2hvICJsdl9MViBDUDc3NSIKLSsJZWNobyAibmIgQ1A4NjUiICAgICMgbm90IENQODUwID8/Ci0rCWVjaG8gIm5iX05PIENQODY1IiAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJubCBDUDg1MCIKLSsJZWNobyAibmxfQkUgQ1A4NTAiCi0rCWVjaG8gIm5sX05MIENQODUwIgotKwllY2hvICJubiBDUDg2NSIgICAgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAibm5fTk8gQ1A4NjUiICMgbm90IENQODUwID8/Ci0rCWVjaG8gIm5vIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJub19OTyBDUDg2NSIgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAicHQgQ1A4NTAiCi0rCWVjaG8gInB0X0JSIENQODUwIgotKwllY2hvICJwdF9QVCBDUDg1MCIKLSsJZWNobyAic3YgQ1A4NTAiCi0rCWVjaG8gInN2X1NFIENQODUwIgotKwkjIElTTy04ODU5LTIgbGFuZ3VhZ2VzCi0rCWVjaG8gImNzIENQODUyIgotKwllY2hvICJjc19DWiBDUDg1MiIKLSsJZWNobyAiaHIgQ1A4NTIiCi0rCWVjaG8gImhyX0hSIENQODUyIgotKwllY2hvICJodSBDUDg1MiIKLSsJZWNobyAiaHVfSFUgQ1A4NTIiCi0rCWVjaG8gInBsIENQODUyIgotKwllY2hvICJwbF9QTCBDUDg1MiIKLSsJZWNobyAicm8gQ1A4NTIiCi0rCWVjaG8gInJvX1JPIENQODUyIgotKwllY2hvICJzayBDUDg1MiIKLSsJZWNobyAic2tfU0sgQ1A4NTIiCi0rCWVjaG8gInNsIENQODUyIgotKwllY2hvICJzbF9TSSBDUDg1MiIKLSsJZWNobyAic3EgQ1A4NTIiCi0rCWVjaG8gInNxX0FMIENQODUyIgotKwllY2hvICJzciBDUDg1MiIgICAgIyBDUDg1MiBvciBDUDg2NiBvciBDUDg1NSA/PwotKwllY2hvICJzcl9DUyBDUDg1MiIgIyBDUDg1MiBvciBDUDg2NiBvciBDUDg1NSA/PwotKwllY2hvICJzcl9ZVSBDUDg1MiIgIyBDUDg1MiBvciBDUDg2NiBvciBDUDg1NSA/PwotKwkjIElTTy04ODU5LTMgbGFuZ3VhZ2VzCi0rCWVjaG8gIm10IENQODUwIgotKwllY2hvICJtdF9NVCBDUDg1MCIKLSsJIyBJU08tODg1OS01IGxhbmd1YWdlcwotKwllY2hvICJiZSBDUDg2NiIKLSsJZWNobyAiYmVfQkUgQ1A4NjYiCi0rCWVjaG8gImJnIENQODY2IiAgICAjIG5vdCBDUDg1NSA/PwotKwllY2hvICJiZ19CRyBDUDg2NiIgIyBub3QgQ1A4NTUgPz8KLSsJZWNobyAibWsgQ1A4NjYiICAgICMgbm90IENQODU1ID8/Ci0rCWVjaG8gIm1rX01LIENQODY2IiAjIG5vdCBDUDg1NSA/PwotKwllY2hvICJydSBDUDg2NiIKLSsJZWNobyAicnVfUlUgQ1A4NjYiCi0rCWVjaG8gInVrIENQMTEyNSIKLSsJZWNobyAidWtfVUEgQ1AxMTI1IgotKwkjIElTTy04ODU5LTYgbGFuZ3VhZ2VzCi0rCWVjaG8gImFyIENQODY0IgotKwllY2hvICJhcl9BRSBDUDg2NCIKLSsJZWNobyAiYXJfRFogQ1A4NjQiCi0rCWVjaG8gImFyX0VHIENQODY0IgotKwllY2hvICJhcl9JUSBDUDg2NCIKLSsJZWNobyAiYXJfSVIgQ1A4NjQiCi0rCWVjaG8gImFyX0pPIENQODY0IgotKwllY2hvICJhcl9LVyBDUDg2NCIKLSsJZWNobyAiYXJfTUEgQ1A4NjQiCi0rCWVjaG8gImFyX09NIENQODY0IgotKwllY2hvICJhcl9RQSBDUDg2NCIKLSsJZWNobyAiYXJfU0EgQ1A4NjQiCi0rCWVjaG8gImFyX1NZIENQODY0IgotKwkjIElTTy04ODU5LTcgbGFuZ3VhZ2VzCi0rCWVjaG8gImVsIENQODY5IgotKwllY2hvICJlbF9HUiBDUDg2OSIKLSsJIyBJU08tODg1OS04IGxhbmd1YWdlcwotKwllY2hvICJoZSBDUDg2MiIKLSsJZWNobyAiaGVfSUwgQ1A4NjIiCi0rCSMgSVNPLTg4NTktOSBsYW5ndWFnZXMKLSsJZWNobyAidHIgQ1A4NTciCi0rCWVjaG8gInRyX1RSIENQODU3IgotKwkjIEphcGFuZXNlCi0rCWVjaG8gImphIENQOTMyIgotKwllY2hvICJqYV9KUCBDUDkzMiIKLSsJIyBDaGluZXNlCi0rCWVjaG8gInpoX0NOIEdCSyIKLSsJZWNobyAiemhfVFcgQ1A5NTAiICMgbm90IENQOTM4ID8/Ci0rCSMgS29yZWFuCi0rCWVjaG8gImtyIENQOTQ5IiAgICAjIG5vdCBDUDkzNCA/PwotKwllY2hvICJrcl9LUiBDUDk0OSIgIyBub3QgQ1A5MzQgPz8KLSsJIyBUaGFpCi0rCWVjaG8gInRoIENQODc0IgotKwllY2hvICJ0aF9USCBDUDg3NCIKLSsJIyBPdGhlcgotKwllY2hvICJlbyBDUDg1MCIKLSsJZWNobyAiZW9fRU8gQ1A4NTAiCi0rCTs7Ci0rZXNhYwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2RjZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RjZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzU5NzQ3NDgwIC0wNDAwCi1AQCAtMSw1OTMgKzEsNTYgQEAKLS0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGNnZXR0ZXh0KDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkY2dldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS0jaWZkZWYgX19HTlVDX18KLS0jIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotLSMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLS0jZWxzZQotLSMgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLS0jICBpbmNsdWRlIDxhbGxvY2EuaD4KLS0jIGVsc2UKLS0jICBpZmRlZiBfQUlYCi0tICNwcmFnbWEgYWxsb2NhCi0tIyAgZWxzZQotLSMgICBpZm5kZWYgYWxsb2NhCi0tY2hhciAqYWxsb2NhICgpOwotLSMgICBlbmRpZgotLSMgIGVuZGlmCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpbmNsdWRlIDxlcnJuby5oPgotLSNpZm5kZWYgZXJybm8KLS1leHRlcm4gaW50IGVycm5vOwotLSNlbmRpZgotLSNpZm5kZWYgX19zZXRfZXJybm8KLS0jIGRlZmluZSBfX3NldF9lcnJubyh2YWwpIGVycm5vID0gKHZhbCkKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2Vsc2UKLS1jaGFyICpnZXRlbnYgKCk7Ci0tIyBpZmRlZiBIQVZFX01BTExPQ19ICi0tIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0tIyBlbHNlCi0tdm9pZCBmcmVlICgpOwotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBfR05VX1NPVVJDRQotLSMgIGRlZmluZSBfR05VX1NPVVJDRQkxCi0tIyBlbmRpZgotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jZW5kaWYKLS0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgc3RyY2hyCi0tIyAgZGVmaW5lIHN0cmNociBpbmRleAotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHVuaXN0ZC5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlICJnZXR0ZXh0LmgiCi0gI2luY2x1ZGUgImdldHRleHRQLmgiCi0gI2lmZGVmIF9MSUJDCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLS0jaW5jbHVkZSAiaGFzaC1zdHJpbmcuaCIKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0tI2lmZGVmIF9MSUJDCi0tLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCi0tICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLS0jIGRlZmluZSBnZXRjd2QgX19nZXRjd2QKLS0jIGRlZmluZSBzdHBjcHkgX19zdHBjcHkKLS0jZWxzZQotLSMgaWYgIWRlZmluZWQgSEFWRV9HRVRDV0QKLS1jaGFyICpnZXR3ZCAoKTsKLS0jICBkZWZpbmUgZ2V0Y3dkKGJ1ZiwgbWF4KSBnZXR3ZCAoYnVmKQotLSMgZWxzZQotLWNoYXIgKmdldGN3ZCAoKTsKLS0jIGVuZGlmCi0tIyBpZm5kZWYgSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqc3RwY3B5IFBBUkFNUyAoKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykpOwotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0vKiBBbW91bnQgdG8gaW5jcmVhc2UgYnVmZmVyIHNpemUgYnkgaW4gZWFjaCB0cnkuICAqLwotLSNkZWZpbmUgUEFUSF9JTkNSIDMyCi0tCi0tLyogVGhlIGZvbGxvd2luZyBpcyBmcm9tIHBhdGhtYXguaC4gICovCi0tLyogTm9uLVBPU0lYIEJTRCBzeXN0ZW1zIG1pZ2h0IGhhdmUgZ2NjJ3MgbGltaXRzLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCi0tICAgUEFUSF9NQVggYnV0IG1pZ2h0IGNhdXNlIHJlZGVmaW5pdGlvbiB3YXJuaW5ncyB3aGVuIHN5cy9wYXJhbS5oIGlzCi0tICAgbGF0ZXIgaW5jbHVkZWQgKGFzIG9uIE1PUkUvQlNEIDQuMykuICAqLwotLSNpZiBkZWZpbmVkKF9QT1NJWF9WRVJTSU9OKSB8fCAoZGVmaW5lZChIQVZFX0xJTUlUU19IKSAmJiAhZGVmaW5lZChfX0dOVUNfXykpCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZW5kaWYKLS0KLS0jaWZuZGVmIF9QT1NJWF9QQVRIX01BWAotLSMgZGVmaW5lIF9QT1NJWF9QQVRIX01BWCAyNTUKLS0jZW5kaWYKLS0KLS0jaWYgIWRlZmluZWQoUEFUSF9NQVgpICYmIGRlZmluZWQoX1BDX1BBVEhfTUFYKQotLSMgZGVmaW5lIFBBVEhfTUFYIChwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpIDwgMSA/IDEwMjQgOiBwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpKQotLSNlbmRpZgotLQotLS8qIERvbid0IGluY2x1ZGUgc3lzL3BhcmFtLmggaWYgaXQgYWxyZWFkeSBoYXMgYmVlbi4gICovCi0tI2lmIGRlZmluZWQoSEFWRV9TWVNfUEFSQU1fSCkgJiYgIWRlZmluZWQoUEFUSF9NQVgpICYmICFkZWZpbmVkKE1BWFBBVEhMRU4pCi0tIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLS0jZW5kaWYKLS0KLS0jaWYgIWRlZmluZWQoUEFUSF9NQVgpICYmIGRlZmluZWQoTUFYUEFUSExFTikKLS0jIGRlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCi0tI2VuZGlmCi0tCi0tI2lmbmRlZiBQQVRIX01BWAotLSMgZGVmaW5lIFBBVEhfTUFYIF9QT1NJWF9QQVRIX01BWAotLSNlbmRpZgotLQotLS8qIFhQRzMgZGVmaW5lcyB0aGUgcmVzdWx0IG9mIGBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKScgYXM6Ci0tICAgYGBEaXJlY3RzIGBzZXRsb2NhbGUoKScgdG8gcXVlcnkgYGNhdGVnb3J5JyBhbmQgcmV0dXJuIHRoZSBjdXJyZW50Ci0tICAgICBzZXR0aW5nIG9mIGBsb2NhbCcuJycKLS0gICBIb3dldmVyIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIGV4YWN0IGZvcm1hdC4gIEFuZCBldmVuIHdvcnNlOiBQT1NJWAotLSAgIGRlZmluZXMgdGhpcyBub3QgYXQgYWxsLiAgU28gd2UgY2FuIHVzZSB0aGlzIGZlYXR1cmUgb25seSBvbiBzZWxlY3RlZAotLSAgIHN5c3RlbSAoZS5nLiB0aG9zZSB1c2luZyBHTlUgQyBMaWJyYXJ5KS4gICovCi0tI2lmZGVmIF9MSUJDCi0tIyBkZWZpbmUgSEFWRV9MT0NBTEVfTlVMTAotLSNlbmRpZgotLQotLS8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgZG9tYWluIHVzZWQgZm9yIGdldHRleHQoMykgcHJpb3IgYW55IGNhbGwgdG8KLS0gICB0ZXh0ZG9tYWluKDMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgaXMgIm1lc3NhZ2VzIi4gICovCi0tY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdID0gIm1lc3NhZ2VzIjsKLS0KLS0vKiBWYWx1ZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGRvbWFpbiBmb3IgZ2V0dGV4dCgzKS4gICovCi0tY29uc3QgY2hhciAqX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKLS0KLS0vKiBDb250YWlucyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBjYXRhbG9ncy4gICovCi0tY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW10gPSBHTlVMT0NBTEVESVI7Ci0tCi0tLyogTGlzdCB3aXRoIGJpbmRpbmdzIG9mIHNwZWNpZmljIGRvbWFpbnMgY3JlYXRlZCBieSBiaW5kdGV4dGRvbWFpbigpCi0tICAgY2FsbHMuICAqLwotLXN0cnVjdCBiaW5kaW5nICpfbmxfZG9tYWluX2JpbmRpbmdzOwotLQotLS8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCi0tc3RhdGljIGNoYXIgKmZpbmRfbXNnIFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotLQkJCSAgICAgICBjb25zdCBjaGFyICptc2dpZCkpOwotLXN0YXRpYyBjb25zdCBjaGFyICpjYXRlZ29yeV90b19uYW1lIFBBUkFNUyAoKGludCBjYXRlZ29yeSkpOwotLXN0YXRpYyBjb25zdCBjaGFyICpndWVzc19jYXRlZ29yeV92YWx1ZSBQQVJBTVMgKChpbnQgY2F0ZWdvcnksCi0tCQkJCQkJIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSkpOwotLQotLQotLS8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAotLSAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCi0tI2lmZGVmIEhBVkVfQUxMT0NBCi0tLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCi0tIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KLS0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KSAvKiBub3RoaW5nICovCi0tI2Vsc2UKLS1zdHJ1Y3QgYmxvY2tfbGlzdAotLXsKLS0gIHZvaWQgKmFkZHJlc3M7Ci0tICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKLS19OwotLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyKQkJCQkJCSAgICAgIFwKLS0gIGRvIHsJCQkJCQkJCQkgICAgICBcCi0tICAgIHN0cnVjdCBibG9ja19saXN0ICpuZXdwID0gKHN0cnVjdCBibG9ja19saXN0ICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOyAgXAotLSAgICAvKiBJZiB3ZSBjYW5ub3QgZ2V0IGEgZnJlZSBibG9jayB3ZSBjYW5ub3QgYWRkIHRoZSBuZXcgZWxlbWVudCB0bwkgICAgICBcCi0tICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAotLSAgICBpZiAobmV3cCAhPSBOVUxMKSB7CQkJCQkJCSAgICAgIFwKLS0gICAgICBuZXdwLT5hZGRyZXNzID0gKGFkZHIpOwkJCQkJCSAgICAgIFwKLS0gICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKLS0gICAgICAobGlzdCkgPSBuZXdwOwkJCQkJCQkgICAgICBcCi0tICAgIH0JCQkJCQkJCQkgICAgICBcCi0tICB9IHdoaWxlICgwKQotLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpCQkJCQkJICAgICAgXAotLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKLS0gICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKLS0gICAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqb2xkID0gbGlzdDsJCQkJCSAgICAgIFwKLS0gICAgICBsaXN0ID0gbGlzdC0+bmV4dDsJCQkJCQkgICAgICBcCi0tICAgICAgZnJlZSAob2xkKTsJCQkJCQkJICAgICAgXAotLSAgICB9CQkJCQkJCQkJICAgICAgXAotLSAgfSB3aGlsZSAoMCkKLS0jIHVuZGVmIGFsbG9jYQotLSMgZGVmaW5lIGFsbG9jYShzaXplKSAobWFsbG9jIChzaXplKSkKLS0jZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KLS0KLS0KLSAvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0gICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotICAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXwotICAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0gI2lmZGVmIF9MSUJDCi0gIyBkZWZpbmUgRENHRVRURVhUIF9fZGNnZXR0ZXh0Ci0rIyBkZWZpbmUgRENJR0VUVEVYVCBfX2RjaWdldHRleHQKLSAjZWxzZQotLSMgZGVmaW5lIERDR0VUVEVYVCBkY2dldHRleHRfXwotKyMgZGVmaW5lIERDR0VUVEVYVCBsaWJpbnRsX2RjZ2V0dGV4dAotKyMgZGVmaW5lIERDSUdFVFRFWFQgbGliaW50bF9kY2lnZXR0ZXh0Ci0gI2VuZGlmCi0gCi0gLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCi0gICAgbG9jYWxlLiAgKi8KLSBjaGFyICoKLS1EQ0dFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLS0gICAgIGludCBjYXRlZ29yeTsKLStEQ0dFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpCi0gewotLSNpZm5kZWYgSEFWRV9BTExPQ0EKLS0gIHN0cnVjdCBibG9ja19saXN0ICpibG9ja19saXN0ID0gTlVMTDsKLS0jZW5kaWYKLS0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbjsKLS0gIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOwotLSAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOwotLSAgY29uc3QgY2hhciAqY2F0ZWdvcnl2YWx1ZTsKLS0gIGNoYXIgKmRpcm5hbWUsICp4ZG9tYWlubmFtZTsKLS0gIGNoYXIgKnNpbmdsZV9sb2NhbGU7Ci0tICBjaGFyICpyZXR2YWw7Ci0tICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJubzsKLS0KLS0gIC8qIElmIG5vIHJlYWwgTVNHSUQgaXMgZ2l2ZW4gcmV0dXJuIE5VTEwuICAqLwotLSAgaWYgKG1zZ2lkID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSAgLyogSWYgRE9NQUlOTkFNRSBpcyBOVUxMLCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZGVmYXVsdCBkb21haW4uICBJZgotLSAgICAgQ0FURUdPUlkgaXMgbm90IExDX01FU1NBR0VTIHRoaXMgbWlnaHQgbm90IG1ha2UgbXVjaCBzZW5zZSBidXQgdGhlCi0tICAgICBkZWZpbnRpb24gbGVmdCB0aGlzIHVuZGVmaW5lZC4gICovCi0tICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQotLSAgICBkb21haW5uYW1lID0gX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0tCi0tICAvKiBGaXJzdCBmaW5kIG1hdGNoaW5nIGJpbmRpbmcuICAqLwotLSAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKLS0gICAgewotLSAgICAgIGludCBjb21wYXJlID0gc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5kb21haW5uYW1lKTsKLS0gICAgICBpZiAoY29tcGFyZSA9PSAwKQotLQkvKiBXZSBmb3VuZCBpdCEgICovCi0tCWJyZWFrOwotLSAgICAgIGlmIChjb21wYXJlIDwgMCkKLS0JewotLQkgIC8qIEl0IGlzIG5vdCBpbiB0aGUgbGlzdC4gICovCi0tCSAgYmluZGluZyA9IE5VTEw7Ci0tCSAgYnJlYWs7Ci0tCX0KLS0gICAgfQotLQotLSAgaWYgKGJpbmRpbmcgPT0gTlVMTCkKLS0gICAgZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7Ci0tICBlbHNlIGlmIChiaW5kaW5nLT5kaXJuYW1lWzBdID09ICcvJykKLS0gICAgZGlybmFtZSA9IGJpbmRpbmctPmRpcm5hbWU7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICAvKiBXZSBoYXZlIGEgcmVsYXRpdmUgcGF0aC4gIE1ha2UgaXQgYWJzb2x1dGUgbm93LiAgKi8KLS0gICAgICBzaXplX3QgZGlybmFtZV9sZW4gPSBzdHJsZW4gKGJpbmRpbmctPmRpcm5hbWUpICsgMTsKLS0gICAgICBzaXplX3QgcGF0aF9tYXg7Ci0tICAgICAgY2hhciAqcmV0OwotLQotLSAgICAgIHBhdGhfbWF4ID0gKHVuc2lnbmVkKSBQQVRIX01BWDsKLS0gICAgICBwYXRoX21heCArPSAyOwkJLyogVGhlIGdldGN3ZCBkb2NzIHNheSB0byBkbyB0aGlzLiAgKi8KLS0KLS0gICAgICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKLS0gICAgICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOwotLQotLSAgICAgIF9fc2V0X2Vycm5vICgwKTsKLS0gICAgICB3aGlsZSAoKHJldCA9IGdldGN3ZCAoZGlybmFtZSwgcGF0aF9tYXgpKSA9PSBOVUxMICYmIGVycm5vID09IEVSQU5HRSkKLS0JewotLQkgIHBhdGhfbWF4ICs9IFBBVEhfSU5DUjsKLS0JICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKLS0JICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOwotLQkgIF9fc2V0X2Vycm5vICgwKTsKLS0JfQotLQotLSAgICAgIGlmIChyZXQgPT0gTlVMTCkKLS0JewotLQkgIC8qIFdlIGNhbm5vdCBnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICBEb24ndCBzaWduYWwgYW4KLS0JICAgICBlcnJvciBidXQgc2ltcGx5IHJldHVybiB0aGUgZGVmYXVsdCBzdHJpbmcuICAqLwotLQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0JICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotLQkgIHJldHVybiAoY2hhciAqKSBtc2dpZDsKLS0JfQotLQotLSAgICAgIHN0cGNweSAoc3RwY3B5IChzdHJjaHIgKGRpcm5hbWUsICdcMCcpLCAiLyIpLCBiaW5kaW5nLT5kaXJuYW1lKTsKLS0gICAgfQotLQotLSAgLyogTm93IGRldGVybWluZSB0aGUgc3ltYm9saWMgbmFtZSBvZiBDQVRFR09SWSBhbmQgaXRzIHZhbHVlLiAgKi8KLS0gIGNhdGVnb3J5bmFtZSA9IGNhdGVnb3J5X3RvX25hbWUgKGNhdGVnb3J5KTsKLS0gIGNhdGVnb3J5dmFsdWUgPSBndWVzc19jYXRlZ29yeV92YWx1ZSAoY2F0ZWdvcnksIGNhdGVnb3J5bmFtZSk7Ci0tCi0tICB4ZG9tYWlubmFtZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeW5hbWUpCi0tCQkJCSArIHN0cmxlbiAoZG9tYWlubmFtZSkgKyA1KTsKLS0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgeGRvbWFpbm5hbWUpOwotLQotLSAgc3RwY3B5IChzdHBjcHkgKHN0cGNweSAoc3RwY3B5ICh4ZG9tYWlubmFtZSwgY2F0ZWdvcnluYW1lKSwgIi8iKSwKLS0JCSAgZG9tYWlubmFtZSksCi0tCSAgIi5tbyIpOwotLQotLSAgLyogQ3JlYXRpbmcgd29ya2luZyBhcmVhLiAgKi8KLS0gIHNpbmdsZV9sb2NhbGUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnl2YWx1ZSkgKyAxKTsKLS0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgc2luZ2xlX2xvY2FsZSk7Ci0tCi0tCi0tICAvKiBTZWFyY2ggZm9yIHRoZSBnaXZlbiBzdHJpbmcuICBUaGlzIGlzIGEgbG9vcCBiZWNhdXNlIHdlIHBlcmhhcHMKLS0gICAgIGdvdCBhbiBvcmRlcmVkIGxpc3Qgb2YgbGFuZ3VhZ2VzIHRvIGNvbnNpZGVyIGZvciB0aCB0cmFuc2xhdGlvbi4gICovCi0tICB3aGlsZSAoMSkKLS0gICAgewotLSAgICAgIC8qIE1ha2UgQ0FURUdPUllWQUxVRSBwb2ludCB0byB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBsaXN0LiAgKi8KLS0gICAgICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gPT0gJzonKQotLQkrK2NhdGVnb3J5dmFsdWU7Ci0tICAgICAgaWYgKGNhdGVnb3J5dmFsdWVbMF0gPT0gJ1wwJykKLS0JewotLQkgIC8qIFRoZSB3aG9sZSBjb250ZW50cyBvZiBDQVRFR09SWVZBTFVFIGhhcyBiZWVuIHNlYXJjaGVkIGJ1dAotLQkgICAgIG5vIHZhbGlkIGVudHJ5IGhhcyBiZWVuIGZvdW5kLiAgV2Ugc29sdmUgdGhpcyBzaXR1YXRpb24KLS0JICAgICBieSBpbXBsaWNpdGx5IGFwcGVuZGluZyBhICJDIiBlbnRyeSwgaS5lLiBubyB0cmFuc2xhdGlvbgotLQkgICAgIHdpbGwgdGFrZSBwbGFjZS4gICovCi0tCSAgc2luZ2xlX2xvY2FsZVswXSA9ICdDJzsKLS0JICBzaW5nbGVfbG9jYWxlWzFdID0gJ1wwJzsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIGNoYXIgKmNwID0gc2luZ2xlX2xvY2FsZTsKLS0JICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gIT0gJzonKQotLQkgICAgKmNwKysgPSAqY2F0ZWdvcnl2YWx1ZSsrOwotLQkgICpjcCA9ICdcMCc7Ci0tCX0KLS0KLS0gICAgICAvKiBJZiB0aGUgY3VycmVudCBsb2NhbGUgdmFsdWUgaXMgQyAob3IgUE9TSVgpIHdlIGRvbid0IGxvYWQgYQotLQkgZG9tYWluLiAgUmV0dXJuIHRoZSBNU0dJRC4gICovCi0tICAgICAgaWYgKHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIkMiKSA9PSAwCi0tCSAgfHwgc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiUE9TSVgiKSA9PSAwKQotLQl7Ci0tCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotLQkgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7Ci0tCSAgcmV0dXJuIChjaGFyICopIG1zZ2lkOwotLQl9Ci0tCi0tCi0tICAgICAgLyogRmluZCBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBjYXRhbG9nIG1hdGNoaW5nIHRoZQotLQkgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkuICAqLwotLSAgICAgIGRvbWFpbiA9IF9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgc2luZ2xlX2xvY2FsZSwgeGRvbWFpbm5hbWUpOwotLQotLSAgICAgIGlmIChkb21haW4gIT0gTlVMTCkKLS0JewotLQkgIHJldHZhbCA9IGZpbmRfbXNnIChkb21haW4sIG1zZ2lkKTsKLS0KLS0JICBpZiAocmV0dmFsID09IE5VTEwpCi0tCSAgICB7Ci0tCSAgICAgIGludCBjbnQ7Ci0tCi0tCSAgICAgIGZvciAoY250ID0gMDsgZG9tYWluLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKLS0JCXsKLS0JCSAgcmV0dmFsID0gZmluZF9tc2cgKGRvbWFpbi0+c3VjY2Vzc29yW2NudF0sIG1zZ2lkKTsKLS0KLS0JCSAgaWYgKHJldHZhbCAhPSBOVUxMKQotLQkJICAgIGJyZWFrOwotLQkJfQotLQkgICAgfQotLQotLQkgIGlmIChyZXR2YWwgIT0gTlVMTCkKLS0JICAgIHsKLS0JICAgICAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotLQkgICAgICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotLQkgICAgICByZXR1cm4gcmV0dmFsOwotLQkgICAgfQotLQl9Ci0tICAgIH0KLS0gIC8qIE5PVFJFQUNIRUQgKi8KLSsgIHJldHVybiBEQ0lHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCwgTlVMTCwgMCwgMCwgY2F0ZWdvcnkpOwotIH0KLSAKLSAjaWZkZWYgX0xJQkMKLSAvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KLStJTlRERUYoX19kY2dldHRleHQpCi0gd2Vha19hbGlhcyAoX19kY2dldHRleHQsIGRjZ2V0dGV4dCk7Ci0gI2VuZGlmCi0tCi0tCi0tc3RhdGljIGNoYXIgKgotLWZpbmRfbXNnIChkb21haW5fZmlsZSwgbXNnaWQpCi0tICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZTsKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotLXsKLS0gIHNpemVfdCB0b3AsIGFjdCwgYm90dG9tOwotLSAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbjsKLS0KLS0gIGlmIChkb21haW5fZmlsZS0+ZGVjaWRlZCA9PSAwKQotLSAgICBfbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlKTsKLS0KLS0gIGlmIChkb21haW5fZmlsZS0+ZGF0YSA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0KLS0gIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKLS0KLS0gIC8qIExvY2F0ZSB0aGUgTVNHSUQgYW5kIGl0cyB0cmFuc2xhdGlvbi4gICovCi0tICBpZiAoZG9tYWluLT5oYXNoX3NpemUgPiAyICYmIGRvbWFpbi0+aGFzaF90YWIgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIC8qIFVzZSB0aGUgaGFzaGluZyB0YWJsZS4gICovCi0tICAgICAgbmxzX3VpbnQzMiBsZW4gPSBzdHJsZW4gKG1zZ2lkKTsKLS0gICAgICBubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKLS0gICAgICBubHNfdWludDMyIGlkeCA9IGhhc2hfdmFsICUgZG9tYWluLT5oYXNoX3NpemU7Ci0tICAgICAgbmxzX3VpbnQzMiBpbmNyID0gMSArIChoYXNoX3ZhbCAlIChkb21haW4tPmhhc2hfc2l6ZSAtIDIpKTsKLS0gICAgICBubHNfdWludDMyIG5zdHIgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKLS0KLS0gICAgICBpZiAobnN0ciA9PSAwKQotLQkvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgKi8KLS0JcmV0dXJuIE5VTEw7Ci0tCi0tICAgICAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5sZW5ndGgpID09IGxlbgotLQkgICYmIHN0cmNtcCAobXNnaWQsCi0tCQkgICAgIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotLQkJCQkgICAgICAgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ub2Zmc2V0KSkgPT0gMCkKLS0JcmV0dXJuIChjaGFyICopIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotLQkJCQkJICBkb21haW4tPnRyYW5zX3RhYltuc3RyIC0gMV0ub2Zmc2V0KTsKLS0KLS0gICAgICB3aGlsZSAoMSkKLS0JewotLQkgIGlmIChpZHggPj0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyKQotLQkgICAgaWR4IC09IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcjsKLS0JICBlbHNlCi0tCSAgICBpZHggKz0gaW5jcjsKLS0KLS0JICBuc3RyID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+aGFzaF90YWJbaWR4XSk7Ci0tCSAgaWYgKG5zdHIgPT0gMCkKLS0JICAgIC8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICAqLwotLQkgICAgcmV0dXJuIE5VTEw7Ci0tCi0tCSAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5sZW5ndGgpID09IGxlbgotLQkgICAgICAmJiBzdHJjbXAgKG1zZ2lkLAotLQkJCSBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLS0JCQkJCSAgIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLm9mZnNldCkpCi0tCSAgICAgICAgID09IDApCi0tCSAgICByZXR1cm4gKGNoYXIgKikgZG9tYWluLT5kYXRhCi0tCSAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+dHJhbnNfdGFiW25zdHIgLSAxXS5vZmZzZXQpOwotLQl9Ci0tICAgICAgLyogTk9UUkVBQ0hFRCAqLwotLSAgICB9Ci0tCi0tICAvKiBOb3cgd2UgdHJ5IHRoZSBkZWZhdWx0IG1ldGhvZDogIGJpbmFyeSBzZWFyY2ggaW4gdGhlIHNvcnRlZAotLSAgICAgYXJyYXkgb2YgbWVzc2FnZXMuICAqLwotLSAgYm90dG9tID0gMDsKLS0gIHRvcCA9IGRvbWFpbi0+bnN0cmluZ3M7Ci0tICB3aGlsZSAoYm90dG9tIDwgdG9wKQotLSAgICB7Ci0tICAgICAgaW50IGNtcF92YWw7Ci0tCi0tICAgICAgYWN0ID0gKGJvdHRvbSArIHRvcCkgLyAyOwotLSAgICAgIGNtcF92YWwgPSBzdHJjbXAgKG1zZ2lkLCBkb21haW4tPmRhdGEKLS0JCQkgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLS0JCQkJICAgIGRvbWFpbi0+b3JpZ190YWJbYWN0XS5vZmZzZXQpKTsKLS0gICAgICBpZiAoY21wX3ZhbCA8IDApCi0tCXRvcCA9IGFjdDsKLS0gICAgICBlbHNlIGlmIChjbXBfdmFsID4gMCkKLS0JYm90dG9tID0gYWN0ICsgMTsKLS0gICAgICBlbHNlCi0tCWJyZWFrOwotLSAgICB9Ci0tCi0tICAvKiBJZiBhbiB0cmFuc2xhdGlvbiBpcyBmb3VuZCByZXR1cm4gdGhpcy4gICovCi0tICByZXR1cm4gYm90dG9tID49IHRvcCA/IE5VTEwgOiAoY2hhciAqKSBkb21haW4tPmRhdGEKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0tCQkJCSAgICAgZG9tYWluLT50cmFuc190YWJbYWN0XS5vZmZzZXQpOwotLX0KLS0KLS0KLS0vKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGxvY2FsZSBDQVRFR09SWS4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWNhdGVnb3J5X3RvX25hbWUgKGNhdGVnb3J5KQotLSAgICAgaW50IGNhdGVnb3J5OwotLXsKLS0gIGNvbnN0IGNoYXIgKnJldHZhbDsKLS0KLS0gIHN3aXRjaCAoY2F0ZWdvcnkpCi0tICB7Ci0tI2lmZGVmIExDX0NPTExBVEUKLS0gIGNhc2UgTENfQ09MTEFURToKLS0gICAgcmV0dmFsID0gIkxDX0NPTExBVEUiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfQ1RZUEUKLS0gIGNhc2UgTENfQ1RZUEU6Ci0tICAgIHJldHZhbCA9ICJMQ19DVFlQRSI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19NT05FVEFSWQotLSAgY2FzZSBMQ19NT05FVEFSWToKLS0gICAgcmV0dmFsID0gIkxDX01PTkVUQVJZIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX05VTUVSSUMKLS0gIGNhc2UgTENfTlVNRVJJQzoKLS0gICAgcmV0dmFsID0gIkxDX05VTUVSSUMiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfVElNRQotLSAgY2FzZSBMQ19USU1FOgotLSAgICByZXR2YWwgPSAiTENfVElNRSI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19NRVNTQUdFUwotLSAgY2FzZSBMQ19NRVNTQUdFUzoKLS0gICAgcmV0dmFsID0gIkxDX01FU1NBR0VTIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX1JFU1BPTlNFCi0tICBjYXNlIExDX1JFU1BPTlNFOgotLSAgICByZXR2YWwgPSAiTENfUkVTUE9OU0UiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfQUxMCi0tICBjYXNlIExDX0FMTDoKLS0gICAgLyogVGhpcyBtaWdodCBub3QgbWFrZSBzZW5zZSBidXQgaXMgcGVyaGFwcyBiZXR0ZXIgdGhhbiBhbnkgb3RoZXIKLS0gICAgICAgdmFsdWUuICAqLwotLSAgICByZXR2YWwgPSAiTENfQUxMIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tICBkZWZhdWx0OgotLSAgICAvKiBJZiB5b3UgaGF2ZSBhIGJldHRlciBpZGVhIGZvciBhIGRlZmF1bHQgdmFsdWUgbGV0IG1lIGtub3cuICAqLwotLSAgICByZXR2YWwgPSAiTENfWFhYIjsKLS0gIH0KLS0KLS0gIHJldHVybiByZXR2YWw7Ci0tfQotLQotLS8qIEd1ZXNzIHZhbHVlIG9mIGN1cnJlbnQgbG9jYWxlIGZyb20gdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKQotLSAgICAgaW50IGNhdGVnb3J5OwotLSAgICAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOwotLXsKLS0gIGNvbnN0IGNoYXIgKnJldHZhbDsKLS0KLS0gIC8qIFRoZSBoaWdoZXN0IHByaW9yaXR5IHZhbHVlIGlzIHRoZSBgTEFOR1VBR0UnIGVudmlyb25tZW50Ci0tICAgICB2YXJpYWJsZS4gIFRoaXMgaXMgYSBHTlUgZXh0ZW5zaW9uLiAgKi8KLS0gIHJldHZhbCA9IGdldGVudiAoIkxBTkdVQUdFIik7Ci0tICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0tICAgIHJldHVybiByZXR2YWw7Ci0tCi0tICAvKiBgTEFOR1VBR0UnIGlzIG5vdCBzZXQuICBTbyB3ZSBoYXZlIHRvIHByb2NlZWQgd2l0aCB0aGUgUE9TSVgKLS0gICAgIG1ldGhvZHMgb2YgbG9va2luZyB0byBgTENfQUxMJywgYExDX3h4eCcsIGFuZCBgTEFORycuICBPbiBzb21lCi0tICAgICBzeXN0ZW1zIHRoaXMgY2FuIGJlIGRvbmUgYnkgdGhlIGBzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCi0tI2lmIGRlZmluZWQgSEFWRV9TRVRMT0NBTEUgJiYgZGVmaW5lZCBIQVZFX0xDX01FU1NBR0VTICYmIGRlZmluZWQgSEFWRV9MT0NBTEVfTlVMTAotLSAgcmV0dXJuIHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpOwotLSNlbHNlCi0tICAvKiBTZXR0aW5nIG9mIExDX0FMTCBvdmVyd3JpdGVzIGFsbCBvdGhlci4gICovCi0tICByZXR2YWwgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLS0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLS0gICAgcmV0dXJuIHJldHZhbDsKLS0KLS0gIC8qIE5leHQgY29tZXMgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgY2F0ZWdvcnkuICAqLwotLSAgcmV0dmFsID0gZ2V0ZW52IChjYXRlZ29yeW5hbWUpOwotLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotLSAgICByZXR1cm4gcmV0dmFsOwotLQotLSAgLyogTGFzdCBwb3NzaWJpbGl0eSBpcyB0aGUgTEFORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCi0tICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HIik7Ci0tICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0tICAgIHJldHVybiByZXR2YWw7Ci0tCi0tICAvKiBXZSB1c2UgQyBhcyB0aGUgZGVmYXVsdCBkb21haW4uICBQT1NJWCBzYXlzIHRoaXMgaXMgaW1wbGVtZW50YXRpb24KLS0gICAgIGRlZmluZWQuICAqLwotLSAgcmV0dXJuICJDIjsKLS0jZW5kaWYKLS19Ci0tCi0tLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0tCi0tLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKLS0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcwotLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCi0tICAgdG8gYmUgZGVmaW5lZC4gICovCi0tI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqCi0tc3RwY3B5IChkZXN0LCBzcmMpCi0tICAgICBjaGFyICpkZXN0OwotLSAgICAgY29uc3QgY2hhciAqc3JjOwotLXsKLS0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKLS0gICAgLyogRG8gbm90aGluZy4gKi8gOwotLSAgcmV0dXJuIGRlc3QgLSAxOwotLX0KLS0jZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9kY2lnZXR0ZXh0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZGNpZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzY5NzQ1OTYwIC0wNDAwCi1AQCAtMCwwICsxLDEyMTkgQEAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJuYWwgZGNpZ2V0dGV4dCBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRQkxCi0rI2VuZGlmCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsKLSsjaWZkZWYgX19HTlVDX18KLSsjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotKyMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLSsjZWxzZQotKyMgaWZkZWYgX01TQ19WRVIKLSsjICBpbmNsdWRlIDxtYWxsb2MuaD4KLSsjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLSsjIGVsc2UKLSsjICBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgICBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjICBlbHNlCi0rIyAgIGlmZGVmIF9BSVgKLSsgI3ByYWdtYSBhbGxvY2EKLSsjICAgZWxzZQotKyMgICAgaWZuZGVmIGFsbG9jYQotK2NoYXIgKmFsbG9jYSAoKTsKLSsjICAgIGVuZGlmCi0rIyAgIGVuZGlmCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2lmbmRlZiBlcnJubwotK2V4dGVybiBpbnQgZXJybm87Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX3NldF9lcnJubwotKyMgZGVmaW5lIF9fc2V0X2Vycm5vKHZhbCkgZXJybm8gPSAodmFsKQotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKyNpZmRlZiBfTElCQwotKyAgLyogR3Vlc3Mgd2hldGhlciBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHNpZ25hbCBTSUdGUEUuCi0rICAgICBTZXQgdG8gMSBvbmx5IGlmIHlvdSBrbm93IGZvciBzdXJlLiAgSW4gY2FzZSBvZiBkb3VidCwgc2V0IHRvIDAuICAqLwotKyMgaWYgZGVmaW5lZCBfX2FscGhhX18gfHwgZGVmaW5lZCBfX2FybV9fIHx8IGRlZmluZWQgX19pMzg2X18gXAotKyAgICAgfHwgZGVmaW5lZCBfX202OGtfXyB8fCBkZWZpbmVkIF9fczM5MF9fCi0rIyAgZGVmaW5lIElOVERJVjBfUkFJU0VTX1NJR0ZQRSAxCi0rIyBlbHNlCi0rIyAgZGVmaW5lIElOVERJVjBfUkFJU0VTX1NJR0ZQRSAwCi0rIyBlbmRpZgotKyNlbmRpZgotKyNpZiAhSU5URElWMF9SQUlTRVNfU0lHRlBFCi0rIyBpbmNsdWRlIDxzaWduYWwuaD4KLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBIQVZFX1NZU19QQVJBTV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSsjZW5kaWYKLSsjaW5jbHVkZSAiaGFzaC1zdHJpbmcuaCIKLSsKLSsvKiBUaHJlYWQgc2FmZXR5bmVzcy4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotKyNlbHNlCi0rLyogUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpZiB0aGlzIGlzIG91dHNpZGUgZ2xpYmMuICAqLwotKyMgZGVmaW5lIF9fbGliY19sb2NrX2RlZmluZV9pbml0aWFsaXplZChDTEFTUywgTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfbG9ja19sb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX2xvY2tfdW5sb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQoQ0xBU1MsIE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja19yZGxvY2soTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX3VubG9jayhOQU1FKQotKyNlbmRpZgotKwotKy8qIEFsaWdubWVudCBvZiB0eXBlcy4gICovCi0rI2lmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPj0gMgotKyMgZGVmaW5lIGFsaWdub2YoVFlQRSkgX19hbGlnbm9mX18gKFRZUEUpCi0rI2Vsc2UKLSsjIGRlZmluZSBhbGlnbm9mKFRZUEUpIFwKLSsgICAgKChpbnQpICYoKHN0cnVjdCB7IGNoYXIgZHVtbXkxOyBUWVBFIGR1bW15MjsgfSAqKSAwKS0+ZHVtbXkyKQotKyNlbmRpZgotKwotKy8qIFRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gdGhlIHN0YW5kYWxvbmUgbGliaW50bC5hIG11c3QgaGF2ZSBkaWZmZXJlbnQKLSsgICBuYW1lcyB0aGFuIHRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gR05VIGxpYmMsIG90aGVyd2lzZSBwcm9ncmFtcwotKyAgIHVzaW5nIGxpYmludGwuYSBjYW5ub3QgYmUgbGlua2VkIHN0YXRpY2FsbHkuICAqLwotKyNpZiAhZGVmaW5lZCBfTElCQwotKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluIGxpYmludGxfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbgotKyMgZGVmaW5lIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGxpYmludGxfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbgotKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2Rpcm5hbWUgbGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWUKLSsjIGRlZmluZSBfbmxfZG9tYWluX2JpbmRpbmdzIGxpYmludGxfbmxfZG9tYWluX2JpbmRpbmdzCi0rI2VuZGlmCi0rCi0rLyogU29tZSBjb21waWxlcnMsIGxpa2UgU3VuT1M0IGNjLCBkb24ndCBoYXZlIG9mZnNldG9mIGluIDxzdGRkZWYuaD4uICAqLwotKyNpZm5kZWYgb2Zmc2V0b2YKLSsjIGRlZmluZSBvZmZzZXRvZih0eXBlLGlkZW50KSAoKHNpemVfdCkmKCgodHlwZSopMCktPmlkZW50KSkKLSsjZW5kaWYKLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rI2lmZGVmIF9MSUJDCi0rLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCi0rICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotKyAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLSsjIGRlZmluZSBnZXRjd2QgX19nZXRjd2QKLSsjIGlmbmRlZiBzdHBjcHkKLSsjICBkZWZpbmUgc3RwY3B5IF9fc3RwY3B5Ci0rIyBlbmRpZgotKyMgZGVmaW5lIHRmaW5kIF9fdGZpbmQKLSsjZWxzZQotKyMgaWYgIWRlZmluZWQgSEFWRV9HRVRDV0QKLStjaGFyICpnZXR3ZCAoKTsKLSsjICBkZWZpbmUgZ2V0Y3dkKGJ1ZiwgbWF4KSBnZXR3ZCAoYnVmKQotKyMgZWxzZQotKyMgIGlmIFZNUwotKyMgICBkZWZpbmUgZ2V0Y3dkKGJ1ZiwgbWF4KSAoZ2V0Y3dkKSAoYnVmLCBtYXgsIDApCi0rIyAgZWxzZQotK2NoYXIgKmdldGN3ZCAoKTsKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBIQVZFX1NUUENQWQotK3N0YXRpYyBjaGFyICpzdHBjcHkgKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7Ci0rIyBlbmRpZgotKyMgaWZuZGVmIEhBVkVfTUVNUENQWQotK3N0YXRpYyB2b2lkICptZW1wY3B5ICh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKTsKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogQW1vdW50IHRvIGluY3JlYXNlIGJ1ZmZlciBzaXplIGJ5IGluIGVhY2ggdHJ5LiAgKi8KLSsjZGVmaW5lIFBBVEhfSU5DUiAzMgotKwotKy8qIFRoZSBmb2xsb3dpbmcgaXMgZnJvbSBwYXRobWF4LmguICAqLwotKy8qIE5vbi1QT1NJWCBCU0Qgc3lzdGVtcyBtaWdodCBoYXZlIGdjYydzIGxpbWl0cy5oLCB3aGljaCBkb2Vzbid0IGRlZmluZQotKyAgIFBBVEhfTUFYIGJ1dCBtaWdodCBjYXVzZSByZWRlZmluaXRpb24gd2FybmluZ3Mgd2hlbiBzeXMvcGFyYW0uaCBpcwotKyAgIGxhdGVyIGluY2x1ZGVkIChhcyBvbiBNT1JFL0JTRCA0LjMpLiAgKi8KLSsjaWYgZGVmaW5lZCBfUE9TSVhfVkVSU0lPTiB8fCAoZGVmaW5lZCBIQVZFX0xJTUlUU19IICYmICFkZWZpbmVkIF9fR05VQ19fKQotKyMgaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfUE9TSVhfUEFUSF9NQVgKLSsjIGRlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU1Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkIFBBVEhfTUFYICYmIGRlZmluZWQgX1BDX1BBVEhfTUFYCi0rIyBkZWZpbmUgUEFUSF9NQVggKHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkgPCAxID8gMTAyNCA6IHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkpCi0rI2VuZGlmCi0rCi0rLyogRG9uJ3QgaW5jbHVkZSBzeXMvcGFyYW0uaCBpZiBpdCBhbHJlYWR5IGhhcyBiZWVuLiAgKi8KLSsjaWYgZGVmaW5lZCBIQVZFX1NZU19QQVJBTV9IICYmICFkZWZpbmVkIFBBVEhfTUFYICYmICFkZWZpbmVkIE1BWFBBVEhMRU4KLSsjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotKyNlbmRpZgotKwotKyNpZiAhZGVmaW5lZCBQQVRIX01BWCAmJiBkZWZpbmVkIE1BWFBBVEhMRU4KLSsjIGRlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBQQVRIX01BWAotKyMgZGVmaW5lIFBBVEhfTUFYIF9QT1NJWF9QQVRIX01BWAotKyNlbmRpZgotKwotKy8qIFBhdGhuYW1lIHN1cHBvcnQuCi0rICAgSVNTTEFTSChDKSAgICAgICAgICAgdGVzdHMgd2hldGhlciBDIGlzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciBjaGFyYWN0ZXIuCi0rICAgSVNfQUJTT0xVVEVfUEFUSChQKSAgdGVzdHMgd2hldGhlciBQIGlzIGFuIGFic29sdXRlIHBhdGguICBJZiBpdCBpcyBub3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXQgbWF5IGJlIGNvbmNhdGVuYXRlZCB0byBhIGRpcmVjdG9yeSBwYXRobmFtZS4KLSsgICBJU19QQVRIX1dJVEhfRElSKFApICB0ZXN0cyB3aGV0aGVyIFAgY29udGFpbnMgYSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbi4KLSsgKi8KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKLSsjIGRlZmluZSBIQVNfREVWSUNFKFApIFwKLSsgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAotKyAgICAgJiYgKFApWzFdID09ICc6JykKLSsjIGRlZmluZSBJU19BQlNPTFVURV9QQVRIKFApIChJU1NMQVNIICgoUClbMF0pIHx8IEhBU19ERVZJQ0UgKFApKQotKyMgZGVmaW5lIElTX1BBVEhfV0lUSF9ESVIoUCkgXAotKyAgICAoc3RyY2hyIChQLCAnLycpICE9IE5VTEwgfHwgc3RyY2hyIChQLCAnXFwnKSAhPSBOVUxMIHx8IEhBU19ERVZJQ0UgKFApKQotKyNlbHNlCi0rICAvKiBVbml4ICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJykKLSsjIGRlZmluZSBJU19BQlNPTFVURV9QQVRIKFApIElTU0xBU0ggKChQKVswXSkKLSsjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCkKLSsjZW5kaWYKLSsKLSsvKiBUaGlzIGlzIHRoZSB0eXBlIHVzZWQgZm9yIHRoZSBzZWFyY2ggdHJlZSB3aGVyZSBrbm93biB0cmFuc2xhdGlvbnMKLSsgICBhcmUgc3RvcmVkLiAgKi8KLStzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdAotK3sKLSsgIC8qIERvbWFpbiBpbiB3aGljaCB0byBzZWFyY2guICAqLwotKyAgY2hhciAqZG9tYWlubmFtZTsKLSsKLSsgIC8qIFRoZSBjYXRlZ29yeS4gICovCi0rICBpbnQgY2F0ZWdvcnk7Ci0rCi0rICAvKiBTdGF0ZSBvZiB0aGUgY2F0YWxvZyBjb3VudGVyIGF0IHRoZSBwb2ludCB0aGUgc3RyaW5nIHdhcyBmb3VuZC4gICovCi0rICBpbnQgY291bnRlcjsKLSsKLSsgIC8qIENhdGFsb2cgd2hlcmUgdGhlIHN0cmluZyB3YXMgZm91bmQuICAqLwotKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluOwotKwotKyAgLyogQW5kIGZpbmFsbHkgdGhlIHRyYW5zbGF0aW9uLiAgKi8KLSsgIGNvbnN0IGNoYXIgKnRyYW5zbGF0aW9uOwotKyAgc2l6ZV90IHRyYW5zbGF0aW9uX2xlbmd0aDsKLSsKLSsgIC8qIFBvaW50ZXIgdG8gdGhlIHN0cmluZyBpbiBxdWVzdGlvbi4gICovCi0rICBjaGFyIG1zZ2lkW1pFUk9dOwotK307Ci0rCi0rLyogUm9vdCBvZiB0aGUgc2VhcmNoIHRyZWUgd2l0aCBrbm93biB0cmFuc2xhdGlvbnMuICBXZSBjYW4gdXNlIHRoaXMKLSsgICBvbmx5IGlmIHRoZSBzeXN0ZW0gcHJvdmlkZXMgdGhlIGB0c2VhcmNoJyBmdW5jdGlvbiBmYW1pbHkuICAqLwotKyNpZiBkZWZpbmVkIEhBVkVfVFNFQVJDSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyBpbmNsdWRlIDxzZWFyY2guaD4KLSsKLStzdGF0aWMgdm9pZCAqcm9vdDsKLSsKLSsjIGlmZGVmIF9MSUJDCi0rIyAgZGVmaW5lIHRzZWFyY2ggX190c2VhcmNoCi0rIyBlbmRpZgotKwotKy8qIEZ1bmN0aW9uIHRvIGNvbXBhcmUgdHdvIGVudHJpZXMgaW4gdGhlIHRhYmxlIG9mIGtub3duIHRyYW5zbGF0aW9ucy4gICovCi0rc3RhdGljIGludAotK3RyYW5zY21wIChjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCi0rewotKyAgY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKnMxOwotKyAgY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKnMyOwotKyAgaW50IHJlc3VsdDsKLSsKLSsgIHMxID0gKGNvbnN0IHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICopIHAxOwotKyAgczIgPSAoY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKikgcDI7Ci0rCi0rICByZXN1bHQgPSBzdHJjbXAgKHMxLT5tc2dpZCwgczItPm1zZ2lkKTsKLSsgIGlmIChyZXN1bHQgPT0gMCkKLSsgICAgewotKyAgICAgIHJlc3VsdCA9IHN0cmNtcCAoczEtPmRvbWFpbm5hbWUsIHMyLT5kb21haW5uYW1lKTsKLSsgICAgICBpZiAocmVzdWx0ID09IDApCi0rCS8qIFdlIGNvbXBhcmUgdGhlIGNhdGVnb3J5IGxhc3QgKHRob3VnaCB0aGlzIGlzIHRoZSBjaGVhcGVzdAotKwkgICBvcGVyYXRpb24pIHNpbmNlIGl0IGlzIGhvcGVmdWxseSBhbHdheXMgdGhlIHNhbWUgKG5hbWVseQotKwkgICBMQ19NRVNTQUdFUykuICAqLwotKwlyZXN1bHQgPSBzMS0+Y2F0ZWdvcnkgLSBzMi0+Y2F0ZWdvcnk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKyNlbmRpZgotKwotKyNpZm5kZWYgSU5UVkFSREVGCi0rIyBkZWZpbmUgSU5UVkFSREVGKG5hbWUpCi0rI2VuZGlmCi0rI2lmbmRlZiBJTlRVU0UKLSsjIGRlZmluZSBJTlRVU0UobmFtZSkgbmFtZQotKyNlbmRpZgotKwotKy8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgZG9tYWluIHVzZWQgZm9yIGdldHRleHQoMykgcHJpb3IgYW55IGNhbGwgdG8KLSsgICB0ZXh0ZG9tYWluKDMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgaXMgIm1lc3NhZ2VzIi4gICovCi0rY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdIGF0dHJpYnV0ZV9oaWRkZW4gPSAibWVzc2FnZXMiOwotKwotKy8qIFZhbHVlIHVzZWQgYXMgdGhlIGRlZmF1bHQgZG9tYWluIGZvciBnZXR0ZXh0KDMpLiAgKi8KLStjb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBhdHRyaWJ1dGVfaGlkZGVuCi0rICAgICA9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluOwotKwotKy8qIENvbnRhaW5zIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2dzLiAgKi8KLSsjaWYgZGVmaW5lZCBfX0VNWF9fCi0rZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdOwotKyNlbHNlCi0rY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW10gPSBMT0NBTEVESVI7Ci0rSU5UVkFSREVGIChfbmxfZGVmYXVsdF9kaXJuYW1lKQotKyNlbmRpZgotKwotKy8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zIGNyZWF0ZWQgYnkgYmluZHRleHRkb21haW4oKQotKyAgIGNhbGxzLiAgKi8KLStzdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKLSsKLSsvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotK3N0YXRpYyBjaGFyICpwbHVyYWxfbG9va3VwIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW4sCi0rCQkJICAgIHVuc2lnbmVkIGxvbmcgaW50IG4sCi0rCQkJICAgIGNvbnN0IGNoYXIgKnRyYW5zbGF0aW9uLCBzaXplX3QgdHJhbnNsYXRpb25fbGVuKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rc3RhdGljIGNvbnN0IGNoYXIgKmd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChpbnQgY2F0ZWdvcnksCi0rCQkJCQkgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIgotKyMgZGVmaW5lIGNhdGVnb3J5X3RvX25hbWUoY2F0ZWdvcnkpCV9ubF9jYXRlZ29yeV9uYW1lc1tjYXRlZ29yeV0KLSsjZWxzZQotK3N0YXRpYyBjb25zdCBjaGFyICpjYXRlZ29yeV90b19uYW1lIChpbnQgY2F0ZWdvcnkpIGludGVybmFsX2Z1bmN0aW9uOwotKyNlbmRpZgotKwotKwotKy8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAotKyAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCi0rI2lmZGVmIEhBVkVfQUxMT0NBCi0rLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCi0rIyBkZWZpbmUgZnJlZWEocCkgLyogbm90aGluZyAqLwotKyMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCi0rIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLwotKyNlbHNlCi0rc3RydWN0IGJsb2NrX2xpc3QKLSt7Ci0rICB2b2lkICphZGRyZXNzOwotKyAgc3RydWN0IGJsb2NrX2xpc3QgKm5leHQ7Ci0rfTsKLSsjIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCi0rICBkbyB7CQkJCQkJCQkJICAgICAgXAotKyAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV3cCA9IChzdHJ1Y3QgYmxvY2tfbGlzdCAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsgIFwKLSsgICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAotKyAgICAgICB0aGUgbGlzdC4gICovCQkJCQkJCSAgICAgIFwKLSsgICAgaWYgKG5ld3AgIT0gTlVMTCkgewkJCQkJCQkgICAgICBcCi0rICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCi0rICAgICAgbmV3cC0+bmV4dCA9IChsaXN0KTsJCQkJCQkgICAgICBcCi0rICAgICAgKGxpc3QpID0gbmV3cDsJCQkJCQkJICAgICAgXAotKyAgICB9CQkJCQkJCQkJICAgICAgXAotKyAgfSB3aGlsZSAoMCkKLSsjIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KQkJCQkJCSAgICAgIFwKLSsgIGRvIHsJCQkJCQkJCQkgICAgICBcCi0rICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsJCQkJCQkgICAgICBcCi0rICAgICAgc3RydWN0IGJsb2NrX2xpc3QgKm9sZCA9IGxpc3Q7CQkJCQkgICAgICBcCi0rICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAotKyAgICAgIGZyZWUgKG9sZC0+YWRkcmVzcyk7CQkJCQkJICAgICAgXAotKyAgICAgIGZyZWUgKG9sZCk7CQkJCQkJCSAgICAgIFwKLSsgICAgfQkJCQkJCQkJCSAgICAgIFwKLSsgIH0gd2hpbGUgKDApCi0rIyB1bmRlZiBhbGxvY2EKLSsjIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCi0rIyBkZWZpbmUgZnJlZWEocCkgZnJlZSAocCkKLSsjZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KLSsKLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBMaXN0IG9mIGJsb2NrcyBhbGxvY2F0ZWQgZm9yIHRyYW5zbGF0aW9ucy4gICovCi0rdHlwZWRlZiBzdHJ1Y3QgdHJhbnNtZW1fbGlzdAotK3sKLSsgIHN0cnVjdCB0cmFuc21lbV9saXN0ICpuZXh0OwotKyAgY2hhciBkYXRhW1pFUk9dOwotK30gdHJhbnNtZW1fYmxvY2tfdDsKLStzdGF0aWMgc3RydWN0IHRyYW5zbWVtX2xpc3QgKnRyYW5zbWVtX2xpc3Q7Ci0rI2Vsc2UKLSt0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHJhbnNtZW1fYmxvY2tfdDsKLSsjZW5kaWYKLSsKLSsKLSsvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0rICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotKyAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXwotKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgRENJR0VUVEVYVCBfX2RjaWdldHRleHQKLSsjZWxzZQotKyMgZGVmaW5lIERDSUdFVFRFWFQgbGliaW50bF9kY2lnZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rLyogTG9jayB2YXJpYWJsZSB0byBwcm90ZWN0IHRoZSBnbG9iYWwgZGF0YSBpbiB0aGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4gICovCi0rI2lmZGVmIF9MSUJDCi0rX19saWJjX3J3bG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKCwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKLSsjZW5kaWYKLSsKLSsvKiBDaGVja2luZyB3aGV0aGVyIHRoZSBiaW5hcmllcyBydW5zIFNVSUQgbXVzdCBiZSBkb25lIGFuZCBnbGliYyBwcm92aWRlcwotKyAgIGVhc2llciBtZXRob2RzIHRoZXJlZm9yZSB3ZSBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBFTkFCTEVfU0VDVVJFIF9fbGliY19lbmFibGVfc2VjdXJlCi0rIyBkZWZpbmUgREVURVJNSU5FX1NFQ1VSRQotKyNlbHNlCi0rIyBpZm5kZWYgSEFWRV9HRVRVSUQKLSsjICBkZWZpbmUgZ2V0dWlkKCkgMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBIQVZFX0dFVEdJRAotKyMgIGRlZmluZSBnZXRnaWQoKSAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIEhBVkVfR0VURVVJRAotKyMgIGRlZmluZSBnZXRldWlkKCkgZ2V0dWlkKCkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgSEFWRV9HRVRFR0lECi0rIyAgZGVmaW5lIGdldGVnaWQoKSBnZXRnaWQoKQotKyMgZW5kaWYKLStzdGF0aWMgaW50IGVuYWJsZV9zZWN1cmU7Ci0rIyBkZWZpbmUgRU5BQkxFX1NFQ1VSRSAoZW5hYmxlX3NlY3VyZSA9PSAxKQotKyMgZGVmaW5lIERFVEVSTUlORV9TRUNVUkUgXAotKyAgaWYgKGVuYWJsZV9zZWN1cmUgPT0gMCkJCQkJCQkgICAgICBcCi0rICAgIHsJCQkJCQkJCQkgICAgICBcCi0rICAgICAgaWYgKGdldHVpZCAoKSAhPSBnZXRldWlkICgpIHx8IGdldGdpZCAoKSAhPSBnZXRlZ2lkICgpKQkJICAgICAgXAotKwllbmFibGVfc2VjdXJlID0gMTsJCQkJCQkgICAgICBcCi0rICAgICAgZWxzZQkJCQkJCQkJICAgICAgXAotKwllbmFibGVfc2VjdXJlID0gLTE7CQkJCQkJICAgICAgXAotKyAgICB9Ci0rI2VuZGlmCi0rCi0rLyogR2V0IHRoZSBmdW5jdGlvbiB0byBldmFsdWF0ZSB0aGUgcGx1cmFsIGV4cHJlc3Npb24uICAqLwotKyNpbmNsdWRlICJldmFsLXBsdXJhbC5oIgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotKyAgIENBVEVHT1JZIGxvY2FsZSBhbmQsIGlmIFBMVVJBTCBpcyBub256ZXJvLCBzZWFyY2ggb3ZlciBzdHJpbmcKLSsgICBkZXBlbmRpbmcgb24gdGhlIHBsdXJhbCBmb3JtIGRldGVybWluZWQgYnkgTi4gICovCi0rY2hhciAqCi0rRENJR0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsCi0rCSAgICBpbnQgcGx1cmFsLCB1bnNpZ25lZCBsb25nIGludCBuLCBpbnQgY2F0ZWdvcnkpCi0rewotKyNpZm5kZWYgSEFWRV9BTExPQ0EKLSsgIHN0cnVjdCBibG9ja19saXN0ICpibG9ja19saXN0ID0gTlVMTDsKLSsjZW5kaWYKLSsgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbjsKLSsgIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOwotKyAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOwotKyAgY29uc3QgY2hhciAqY2F0ZWdvcnl2YWx1ZTsKLSsgIGNoYXIgKmRpcm5hbWUsICp4ZG9tYWlubmFtZTsKLSsgIGNoYXIgKnNpbmdsZV9sb2NhbGU7Ci0rICBjaGFyICpyZXR2YWw7Ci0rICBzaXplX3QgcmV0bGVuOwotKyAgaW50IHNhdmVkX2Vycm5vOwotKyNpZiBkZWZpbmVkIEhBVkVfVFNFQVJDSCB8fCBkZWZpbmVkIF9MSUJDCi0rICBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqc2VhcmNoOwotKyAgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKipmb3VuZHAgPSBOVUxMOwotKyAgc2l6ZV90IG1zZ2lkX2xlbjsKLSsjZW5kaWYKLSsgIHNpemVfdCBkb21haW5uYW1lX2xlbjsKLSsKLSsgIC8qIElmIG5vIHJlYWwgTVNHSUQgaXMgZ2l2ZW4gcmV0dXJuIE5VTEwuICAqLwotKyAgaWYgKG1zZ2lkMSA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsjaWZkZWYgX0xJQkMKLSsgIGlmIChjYXRlZ29yeSA8IDAgfHwgY2F0ZWdvcnkgPj0gX19MQ19MQVNUIHx8IGNhdGVnb3J5ID09IExDX0FMTCkKLSsgICAgLyogQm9ndXMuICAqLwotKyAgICByZXR1cm4gKHBsdXJhbCA9PSAwCi0rCSAgICA/IChjaGFyICopIG1zZ2lkMQotKwkgICAgLyogVXNlIHRoZSBHZXJtYW5pYyBwbHVyYWwgcnVsZS4gICovCi0rCSAgICA6IG4gPT0gMSA/IChjaGFyICopIG1zZ2lkMSA6IChjaGFyICopIG1zZ2lkMik7Ci0rI2VuZGlmCi0rCi0rICBfX2xpYmNfcndsb2NrX3JkbG9jayAoX25sX3N0YXRlX2xvY2spOwotKwotKyAgLyogSWYgRE9NQUlOTkFNRSBpcyBOVUxMLCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZGVmYXVsdCBkb21haW4uICBJZgotKyAgICAgQ0FURUdPUlkgaXMgbm90IExDX01FU1NBR0VTIHRoaXMgbWlnaHQgbm90IG1ha2UgbXVjaCBzZW5zZSBidXQgdGhlCi0rICAgICBkZWZpbml0aW9uIGxlZnQgdGhpcyB1bmRlZmluZWQuICAqLwotKyAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKLSsgICAgZG9tYWlubmFtZSA9IF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotKwotKyAgLyogT1MvMiBzcGVjaWZpYzogYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGxpYmludGwgdmVyc2lvbnMgICovCi0rI2lmZGVmIExDX01FU1NBR0VTX0NPTVBBVAotKyAgaWYgKGNhdGVnb3J5ID09IExDX01FU1NBR0VTX0NPTVBBVCkKLSsgICAgY2F0ZWdvcnkgPSBMQ19NRVNTQUdFUzsKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBIQVZFX1RTRUFSQ0ggfHwgZGVmaW5lZCBfTElCQwotKyAgbXNnaWRfbGVuID0gc3RybGVuIChtc2dpZDEpICsgMTsKLSsKLSsgIC8qIFRyeSB0byBmaW5kIHRoZSB0cmFuc2xhdGlvbiBhbW9uZyB0aG9zZSB3aGljaCB3ZSBmb3VuZCBhdAotKyAgICAgc29tZSB0aW1lLiAgKi8KLSsgIHNlYXJjaCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKQotKwkgICBhbGxvY2EgKG9mZnNldG9mIChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCwgbXNnaWQpICsgbXNnaWRfbGVuKTsKLSsgIG1lbWNweSAoc2VhcmNoLT5tc2dpZCwgbXNnaWQxLCBtc2dpZF9sZW4pOwotKyAgc2VhcmNoLT5kb21haW5uYW1lID0gKGNoYXIgKikgZG9tYWlubmFtZTsKLSsgIHNlYXJjaC0+Y2F0ZWdvcnkgPSBjYXRlZ29yeTsKLSsKLSsgIGZvdW5kcCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKikgdGZpbmQgKHNlYXJjaCwgJnJvb3QsIHRyYW5zY21wKTsKLSsgIGZyZWVhIChzZWFyY2gpOwotKyAgaWYgKGZvdW5kcCAhPSBOVUxMICYmICgqZm91bmRwKS0+Y291bnRlciA9PSBfbmxfbXNnX2NhdF9jbnRyKQotKyAgICB7Ci0rICAgICAgLyogTm93IGRlYWwgd2l0aCBwbHVyYWwuICAqLwotKyAgICAgIGlmIChwbHVyYWwpCi0rCXJldHZhbCA9IHBsdXJhbF9sb29rdXAgKCgqZm91bmRwKS0+ZG9tYWluLCBuLCAoKmZvdW5kcCktPnRyYW5zbGF0aW9uLAotKwkJCQkoKmZvdW5kcCktPnRyYW5zbGF0aW9uX2xlbmd0aCk7Ci0rICAgICAgZWxzZQotKwlyZXR2YWwgPSAoY2hhciAqKSAoKmZvdW5kcCktPnRyYW5zbGF0aW9uOwotKwotKyAgICAgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgLyogUHJlc2VydmUgdGhlIGBlcnJubycgdmFsdWUuICAqLwotKyAgc2F2ZWRfZXJybm8gPSBlcnJubzsKLSsKLSsgIC8qIFNlZSB3aGV0aGVyIHRoaXMgaXMgYSBTVUlEIGJpbmFyeSBvciBub3QuICAqLwotKyAgREVURVJNSU5FX1NFQ1VSRTsKLSsKLSsgIC8qIEZpcnN0IGZpbmQgbWF0Y2hpbmcgYmluZGluZy4gICovCi0rICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQotKyAgICB7Ci0rICAgICAgaW50IGNvbXBhcmUgPSBzdHJjbXAgKGRvbWFpbm5hbWUsIGJpbmRpbmctPmRvbWFpbm5hbWUpOwotKyAgICAgIGlmIChjb21wYXJlID09IDApCi0rCS8qIFdlIGZvdW5kIGl0ISAgKi8KLSsJYnJlYWs7Ci0rICAgICAgaWYgKGNvbXBhcmUgPCAwKQotKwl7Ci0rCSAgLyogSXQgaXMgbm90IGluIHRoZSBsaXN0LiAgKi8KLSsJICBiaW5kaW5nID0gTlVMTDsKLSsJICBicmVhazsKLSsJfQotKyAgICB9Ci0rCi0rICBpZiAoYmluZGluZyA9PSBOVUxMKQotKyAgICBkaXJuYW1lID0gKGNoYXIgKikgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKyAgZWxzZSBpZiAoSVNfQUJTT0xVVEVfUEFUSCAoYmluZGluZy0+ZGlybmFtZSkpCi0rICAgIGRpcm5hbWUgPSBiaW5kaW5nLT5kaXJuYW1lOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogV2UgaGF2ZSBhIHJlbGF0aXZlIHBhdGguICBNYWtlIGl0IGFic29sdXRlIG5vdy4gICovCi0rICAgICAgc2l6ZV90IGRpcm5hbWVfbGVuID0gc3RybGVuIChiaW5kaW5nLT5kaXJuYW1lKSArIDE7Ci0rICAgICAgc2l6ZV90IHBhdGhfbWF4OwotKyAgICAgIGNoYXIgKnJldDsKLSsKLSsgICAgICBwYXRoX21heCA9ICh1bnNpZ25lZCBpbnQpIFBBVEhfTUFYOwotKyAgICAgIHBhdGhfbWF4ICs9IDI7CQkvKiBUaGUgZ2V0Y3dkIGRvY3Mgc2F5IHRvIGRvIHRoaXMuICAqLwotKwotKyAgICAgIGZvciAoOzspCi0rCXsKLSsJICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKLSsJICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOwotKwotKwkgIF9fc2V0X2Vycm5vICgwKTsKLSsJICByZXQgPSBnZXRjd2QgKGRpcm5hbWUsIHBhdGhfbWF4KTsKLSsJICBpZiAocmV0ICE9IE5VTEwgfHwgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgYnJlYWs7Ci0rCi0rCSAgcGF0aF9tYXggKz0gcGF0aF9tYXggLyAyOwotKwkgIHBhdGhfbWF4ICs9IFBBVEhfSU5DUjsKLSsJfQotKwotKyAgICAgIGlmIChyZXQgPT0gTlVMTCkKLSsJLyogV2UgY2Fubm90IGdldCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIERvbid0IHNpZ25hbCBhbgotKwkgICBlcnJvciBidXQgc2ltcGx5IHJldHVybiB0aGUgZGVmYXVsdCBzdHJpbmcuICAqLwotKwlnb3RvIHJldHVybl91bnRyYW5zbGF0ZWQ7Ci0rCi0rICAgICAgc3RwY3B5IChzdHBjcHkgKHN0cmNociAoZGlybmFtZSwgJ1wwJyksICIvIiksIGJpbmRpbmctPmRpcm5hbWUpOwotKyAgICB9Ci0rCi0rICAvKiBOb3cgZGV0ZXJtaW5lIHRoZSBzeW1ib2xpYyBuYW1lIG9mIENBVEVHT1JZIGFuZCBpdHMgdmFsdWUuICAqLwotKyAgY2F0ZWdvcnluYW1lID0gY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpOwotKyAgY2F0ZWdvcnl2YWx1ZSA9IGd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKTsKLSsKLSsgIGRvbWFpbm5hbWVfbGVuID0gc3RybGVuIChkb21haW5uYW1lKTsKLSsgIHhkb21haW5uYW1lID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5bmFtZSkKLSsJCQkJICsgZG9tYWlubmFtZV9sZW4gKyA1KTsKLSsgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgeGRvbWFpbm5hbWUpOwotKwotKyAgc3RwY3B5IChtZW1wY3B5IChzdHBjcHkgKHN0cGNweSAoeGRvbWFpbm5hbWUsIGNhdGVnb3J5bmFtZSksICIvIiksCi0rCQkgIGRvbWFpbm5hbWUsIGRvbWFpbm5hbWVfbGVuKSwKLSsJICAiLm1vIik7Ci0rCi0rICAvKiBDcmVhdGluZyB3b3JraW5nIGFyZWEuICAqLwotKyAgc2luZ2xlX2xvY2FsZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeXZhbHVlKSArIDEpOwotKyAgQUREX0JMT0NLIChibG9ja19saXN0LCBzaW5nbGVfbG9jYWxlKTsKLSsKLSsKLSsgIC8qIFNlYXJjaCBmb3IgdGhlIGdpdmVuIHN0cmluZy4gIFRoaXMgaXMgYSBsb29wIGJlY2F1c2Ugd2UgcGVyaGFwcwotKyAgICAgZ290IGFuIG9yZGVyZWQgbGlzdCBvZiBsYW5ndWFnZXMgdG8gY29uc2lkZXIgZm9yIHRoZSB0cmFuc2xhdGlvbi4gICovCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIC8qIE1ha2UgQ0FURUdPUllWQUxVRSBwb2ludCB0byB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBsaXN0LiAgKi8KLSsgICAgICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gPT0gJzonKQotKwkrK2NhdGVnb3J5dmFsdWU7Ci0rICAgICAgaWYgKGNhdGVnb3J5dmFsdWVbMF0gPT0gJ1wwJykKLSsJewotKwkgIC8qIFRoZSB3aG9sZSBjb250ZW50cyBvZiBDQVRFR09SWVZBTFVFIGhhcyBiZWVuIHNlYXJjaGVkIGJ1dAotKwkgICAgIG5vIHZhbGlkIGVudHJ5IGhhcyBiZWVuIGZvdW5kLiAgV2Ugc29sdmUgdGhpcyBzaXR1YXRpb24KLSsJICAgICBieSBpbXBsaWNpdGx5IGFwcGVuZGluZyBhICJDIiBlbnRyeSwgaS5lLiBubyB0cmFuc2xhdGlvbgotKwkgICAgIHdpbGwgdGFrZSBwbGFjZS4gICovCi0rCSAgc2luZ2xlX2xvY2FsZVswXSA9ICdDJzsKLSsJICBzaW5nbGVfbG9jYWxlWzFdID0gJ1wwJzsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGNoYXIgKmNwID0gc2luZ2xlX2xvY2FsZTsKLSsJICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gIT0gJzonKQotKwkgICAgKmNwKysgPSAqY2F0ZWdvcnl2YWx1ZSsrOwotKwkgICpjcCA9ICdcMCc7Ci0rCi0rCSAgLyogV2hlbiB0aGlzIGlzIGEgU1VJRCBiaW5hcnkgd2UgbXVzdCBub3QgYWxsb3cgYWNjZXNzaW5nIGZpbGVzCi0rCSAgICAgb3V0c2lkZSB0aGUgZGVkaWNhdGVkIGRpcmVjdG9yaWVzLiAgKi8KLSsJICBpZiAoRU5BQkxFX1NFQ1VSRSAmJiBJU19QQVRIX1dJVEhfRElSIChzaW5nbGVfbG9jYWxlKSkKLSsJICAgIC8qIEluZ29yZSB0aGlzIGVudHJ5LiAgKi8KLSsJICAgIGNvbnRpbnVlOwotKwl9Ci0rCi0rICAgICAgLyogSWYgdGhlIGN1cnJlbnQgbG9jYWxlIHZhbHVlIGlzIEMgKG9yIFBPU0lYKSB3ZSBkb24ndCBsb2FkIGEKLSsJIGRvbWFpbi4gIFJldHVybiB0aGUgTVNHSUQuICAqLwotKyAgICAgIGlmIChzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJDIikgPT0gMAotKwkgIHx8IHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIlBPU0lYIikgPT0gMCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgLyogRmluZCBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBjYXRhbG9nIG1hdGNoaW5nIHRoZQotKwkgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkuICAqLwotKyAgICAgIGRvbWFpbiA9IF9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgc2luZ2xlX2xvY2FsZSwgeGRvbWFpbm5hbWUsIGJpbmRpbmcpOwotKwotKyAgICAgIGlmIChkb21haW4gIT0gTlVMTCkKLSsJewotKwkgIHJldHZhbCA9IF9ubF9maW5kX21zZyAoZG9tYWluLCBiaW5kaW5nLCBtc2dpZDEsICZyZXRsZW4pOwotKwotKwkgIGlmIChyZXR2YWwgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgaW50IGNudDsKLSsKLSsJICAgICAgZm9yIChjbnQgPSAwOyBkb21haW4tPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQotKwkJewotKwkJICByZXR2YWwgPSBfbmxfZmluZF9tc2cgKGRvbWFpbi0+c3VjY2Vzc29yW2NudF0sIGJpbmRpbmcsCi0rCQkJCQkgbXNnaWQxLCAmcmV0bGVuKTsKLSsKLSsJCSAgaWYgKHJldHZhbCAhPSBOVUxMKQotKwkJICAgIHsKLSsJCSAgICAgIGRvbWFpbiA9IGRvbWFpbi0+c3VjY2Vzc29yW2NudF07Ci0rCQkgICAgICBicmVhazsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKHJldHZhbCAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICAvKiBGb3VuZCB0aGUgdHJhbnNsYXRpb24gb2YgTVNHSUQxIGluIGRvbWFpbiBET01BSU46Ci0rCQkgc3RhcnRpbmcgYXQgUkVUVkFMLCBSRVRMRU4gYnl0ZXMuICAqLwotKwkgICAgICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0rI2lmIGRlZmluZWQgSEFWRV9UU0VBUkNIIHx8IGRlZmluZWQgX0xJQkMKLSsJICAgICAgaWYgKGZvdW5kcCA9PSBOVUxMKQotKwkJewotKwkJICAvKiBDcmVhdGUgYSBuZXcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgc2VhcmNoIHRyZWUuICAqLwotKwkJICBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqbmV3cDsKLSsKLSsJCSAgbmV3cCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKQotKwkJICAgIG1hbGxvYyAob2Zmc2V0b2YgKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90LCBtc2dpZCkKLSsJCQkgICAgKyBtc2dpZF9sZW4gKyBkb21haW5uYW1lX2xlbiArIDEpOwotKwkJICBpZiAobmV3cCAhPSBOVUxMKQotKwkJICAgIHsKLSsJCSAgICAgIG5ld3AtPmRvbWFpbm5hbWUgPQotKwkJCW1lbXBjcHkgKG5ld3AtPm1zZ2lkLCBtc2dpZDEsIG1zZ2lkX2xlbik7Ci0rCQkgICAgICBtZW1jcHkgKG5ld3AtPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGRvbWFpbm5hbWVfbGVuICsgMSk7Ci0rCQkgICAgICBuZXdwLT5jYXRlZ29yeSA9IGNhdGVnb3J5OwotKwkJICAgICAgbmV3cC0+Y291bnRlciA9IF9ubF9tc2dfY2F0X2NudHI7Ci0rCQkgICAgICBuZXdwLT5kb21haW4gPSBkb21haW47Ci0rCQkgICAgICBuZXdwLT50cmFuc2xhdGlvbiA9IHJldHZhbDsKLSsJCSAgICAgIG5ld3AtPnRyYW5zbGF0aW9uX2xlbmd0aCA9IHJldGxlbjsKLSsKLSsJCSAgICAgIC8qIEluc2VydCB0aGUgZW50cnkgaW4gdGhlIHNlYXJjaCB0cmVlLiAgKi8KLSsJCSAgICAgIGZvdW5kcCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKikKLSsJCQl0c2VhcmNoIChuZXdwLCAmcm9vdCwgdHJhbnNjbXApOwotKwkJICAgICAgaWYgKGZvdW5kcCA9PSBOVUxMCi0rCQkJICB8fCBfX2J1aWx0aW5fZXhwZWN0ICgqZm91bmRwICE9IG5ld3AsIDApKQotKwkJCS8qIFRoZSBpbnNlcnQgZmFpbGVkLiAgKi8KLSsJCQlmcmVlIChuZXdwKTsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgLyogV2UgY2FuIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICAqLwotKwkJICAoKmZvdW5kcCktPmNvdW50ZXIgPSBfbmxfbXNnX2NhdF9jbnRyOwotKwkJICAoKmZvdW5kcCktPmRvbWFpbiA9IGRvbWFpbjsKLSsJCSAgKCpmb3VuZHApLT50cmFuc2xhdGlvbiA9IHJldHZhbDsKLSsJCSAgKCpmb3VuZHApLT50cmFuc2xhdGlvbl9sZW5ndGggPSByZXRsZW47Ci0rCQl9Ci0rI2VuZGlmCi0rCSAgICAgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7Ci0rCi0rCSAgICAgIC8qIE5vdyBkZWFsIHdpdGggcGx1cmFsLiAgKi8KLSsJICAgICAgaWYgKHBsdXJhbCkKLSsJCXJldHZhbCA9IHBsdXJhbF9sb29rdXAgKGRvbWFpbiwgbiwgcmV0dmFsLCByZXRsZW4pOwotKwotKwkgICAgICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotKwkgICAgICByZXR1cm4gcmV0dmFsOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSsgcmV0dXJuX3VudHJhbnNsYXRlZDoKLSsgIC8qIFJldHVybiB0aGUgdW50cmFuc2xhdGVkIE1TR0lELiAgKi8KLSsgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLSsgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rI2lmbmRlZiBfTElCQwotKyAgaWYgKCFFTkFCTEVfU0VDVVJFKQotKyAgICB7Ci0rICAgICAgZXh0ZXJuIHZvaWQgX25sX2xvZ191bnRyYW5zbGF0ZWQgKGNvbnN0IGNoYXIgKmxvZ2ZpbGVuYW1lLAotKwkJCQkJY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkJCWNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLAotKwkJCQkJaW50IHBsdXJhbCk7Ci0rICAgICAgY29uc3QgY2hhciAqbG9nZmlsZW5hbWUgPSBnZXRlbnYgKCJHRVRURVhUX0xPR19VTlRSQU5TTEFURUQiKTsKLSsKLSsgICAgICBpZiAobG9nZmlsZW5hbWUgIT0gTlVMTCAmJiBsb2dmaWxlbmFtZVswXSAhPSAnXDAnKQotKwlfbmxfbG9nX3VudHJhbnNsYXRlZCAobG9nZmlsZW5hbWUsIGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBwbHVyYWwpOwotKyAgICB9Ci0rI2VuZGlmCi0rICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotKyAgcmV0dXJuIChwbHVyYWwgPT0gMAotKwkgID8gKGNoYXIgKikgbXNnaWQxCi0rCSAgLyogVXNlIHRoZSBHZXJtYW5pYyBwbHVyYWwgcnVsZS4gICovCi0rCSAgOiBuID09IDEgPyAoY2hhciAqKSBtc2dpZDEgOiAoY2hhciAqKSBtc2dpZDIpOwotK30KLSsKLSsKLStjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF9maW5kX21zZyAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGUsCi0rCSAgICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nLCBjb25zdCBjaGFyICptc2dpZCwKLSsJICAgICAgc2l6ZV90ICpsZW5ndGhwKQotK3sKLSsgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW47Ci0rICBubHNfdWludDMyIG5zdHJpbmdzOwotKyAgc2l6ZV90IGFjdDsKLSsgIGNoYXIgKnJlc3VsdDsKLSsgIHNpemVfdCByZXN1bHRsZW47Ci0rCi0rICBpZiAoZG9tYWluX2ZpbGUtPmRlY2lkZWQgPT0gMCkKLSsgICAgX25sX2xvYWRfZG9tYWluIChkb21haW5fZmlsZSwgZG9tYWluYmluZGluZyk7Ci0rCi0rICBpZiAoZG9tYWluX2ZpbGUtPmRhdGEgPT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluX2ZpbGUtPmRhdGE7Ci0rCi0rICBuc3RyaW5ncyA9IGRvbWFpbi0+bnN0cmluZ3M7Ci0rCi0rICAvKiBMb2NhdGUgdGhlIE1TR0lEIGFuZCBpdHMgdHJhbnNsYXRpb24uICAqLwotKyAgaWYgKGRvbWFpbi0+aGFzaF90YWIgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIC8qIFVzZSB0aGUgaGFzaGluZyB0YWJsZS4gICovCi0rICAgICAgbmxzX3VpbnQzMiBsZW4gPSBzdHJsZW4gKG1zZ2lkKTsKLSsgICAgICBubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKLSsgICAgICBubHNfdWludDMyIGlkeCA9IGhhc2hfdmFsICUgZG9tYWluLT5oYXNoX3NpemU7Ci0rICAgICAgbmxzX3VpbnQzMiBpbmNyID0gMSArIChoYXNoX3ZhbCAlIChkb21haW4tPmhhc2hfc2l6ZSAtIDIpKTsKLSsKLSsgICAgICB3aGlsZSAoMSkKLSsJewotKwkgIG5sc191aW50MzIgbnN0ciA9Ci0rCSAgICBXIChkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKLSsKLSsJICBpZiAobnN0ciA9PSAwKQotKwkgICAgLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gICovCi0rCSAgICByZXR1cm4gTlVMTDsKLSsKLSsJICBuc3RyLS07Ci0rCi0rCSAgLyogQ29tcGFyZSBtc2dpZCB3aXRoIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXQgaW5kZXggbnN0ci4KLSsJICAgICBXZSBjb21wYXJlIHRoZSBsZW5ndGhzIHdpdGggPj0sIG5vdCA9PSwgYmVjYXVzZSBwbHVyYWwgZW50cmllcwotKwkgICAgIGFyZSByZXByZXNlbnRlZCBieSBzdHJpbmdzIHdpdGggYW4gZW1iZWRkZWQgTlVMLiAgKi8KLSsJICBpZiAobnN0ciA8IG5zdHJpbmdzCi0rCSAgICAgID8gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0cl0ubGVuZ3RoKSA+PSBsZW4KLSsJCSYmIChzdHJjbXAgKG1zZ2lkLAotKwkJCSAgICBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLSsJCQkJCSAgICAgIGRvbWFpbi0+b3JpZ190YWJbbnN0cl0ub2Zmc2V0KSkKLSsJCSAgICA9PSAwKQotKwkgICAgICA6IGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiW25zdHIgLSBuc3RyaW5nc10ubGVuZ3RoID4gbGVuCi0rCQkmJiAoc3RyY21wIChtc2dpZCwKLSsJCQkgICAgZG9tYWluLT5vcmlnX3N5c2RlcF90YWJbbnN0ciAtIG5zdHJpbmdzXS5wb2ludGVyKQotKwkJICAgID09IDApKQotKwkgICAgewotKwkgICAgICBhY3QgPSBuc3RyOwotKwkgICAgICBnb3RvIGZvdW5kOwotKwkgICAgfQotKwotKwkgIGlmIChpZHggPj0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyKQotKwkgICAgaWR4IC09IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcjsKLSsJICBlbHNlCi0rCSAgICBpZHggKz0gaW5jcjsKLSsJfQotKyAgICAgIC8qIE5PVFJFQUNIRUQgKi8KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogVHJ5IHRoZSBkZWZhdWx0IG1ldGhvZDogIGJpbmFyeSBzZWFyY2ggaW4gdGhlIHNvcnRlZCBhcnJheSBvZgotKwkgbWVzc2FnZXMuICAqLwotKyAgICAgIHNpemVfdCB0b3AsIGJvdHRvbTsKLSsKLSsgICAgICBib3R0b20gPSAwOwotKyAgICAgIHRvcCA9IG5zdHJpbmdzOwotKyAgICAgIHdoaWxlIChib3R0b20gPCB0b3ApCi0rCXsKLSsJICBpbnQgY21wX3ZhbDsKLSsKLSsJICBhY3QgPSAoYm90dG9tICsgdG9wKSAvIDI7Ci0rCSAgY21wX3ZhbCA9IHN0cmNtcCAobXNnaWQsIChkb21haW4tPmRhdGEKLSsJCQkJICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0rCQkJCQkgZG9tYWluLT5vcmlnX3RhYlthY3RdLm9mZnNldCkpKTsKLSsJICBpZiAoY21wX3ZhbCA8IDApCi0rCSAgICB0b3AgPSBhY3Q7Ci0rCSAgZWxzZSBpZiAoY21wX3ZhbCA+IDApCi0rCSAgICBib3R0b20gPSBhY3QgKyAxOwotKwkgIGVsc2UKLSsJICAgIGdvdG8gZm91bmQ7Ci0rCX0KLSsgICAgICAvKiBObyB0cmFuc2xhdGlvbiB3YXMgZm91bmQuICAqLwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rIGZvdW5kOgotKyAgLyogVGhlIHRyYW5zbGF0aW9uIHdhcyBmb3VuZCBhdCBpbmRleCBBQ1QuICBJZiB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlCi0rICAgICBzdHJpbmcgdG8gdXNlIGEgZGlmZmVyZW50IGNoYXJhY3RlciBzZXQsIHRoaXMgaXMgdGhlIHRpbWUuICAqLwotKyAgaWYgKGFjdCA8IG5zdHJpbmdzKQotKyAgICB7Ci0rICAgICAgcmVzdWx0ID0gKGNoYXIgKikKLSsJKGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPnRyYW5zX3RhYlthY3RdLm9mZnNldCkpOwotKyAgICAgIHJlc3VsdGxlbiA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPnRyYW5zX3RhYlthY3RdLmxlbmd0aCkgKyAxOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSAoY2hhciAqKSBkb21haW4tPnRyYW5zX3N5c2RlcF90YWJbYWN0IC0gbnN0cmluZ3NdLnBvaW50ZXI7Ci0rICAgICAgcmVzdWx0bGVuID0gZG9tYWluLT50cmFuc19zeXNkZXBfdGFiW2FjdCAtIG5zdHJpbmdzXS5sZW5ndGg7Ci0rICAgIH0KLSsKLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBIQVZFX0lDT05WCi0rICBpZiAoZG9tYWluLT5jb2Rlc2V0X2NudHIKLSsgICAgICAhPSAoZG9tYWluYmluZGluZyAhPSBOVUxMID8gZG9tYWluYmluZGluZy0+Y29kZXNldF9jbnRyIDogMCkpCi0rICAgIHsKLSsgICAgICAvKiBUaGUgZG9tYWluJ3MgY29kZXNldCBoYXMgY2hhbmdlZCB0aHJvdWdoIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KCkKLSsJIHNpbmNlIHRoZSBtZXNzYWdlIGNhdGFsb2cgd2FzIGluaXRpYWxpemVkIG9yIGxhc3QgYWNjZXNzZWQuICBXZQotKwkgaGF2ZSB0byByZWluaXRpYWxpemUgdGhlIGNvbnZlcnRlci4gICovCi0rICAgICAgX25sX2ZyZWVfZG9tYWluX2NvbnYgKGRvbWFpbik7Ci0rICAgICAgX25sX2luaXRfZG9tYWluX2NvbnYgKGRvbWFpbl9maWxlLCBkb21haW4sIGRvbWFpbmJpbmRpbmcpOwotKyAgICB9Ci0rCi0rICBpZiAoCi0rIyBpZmRlZiBfTElCQwotKyAgICAgIGRvbWFpbi0+Y29udiAhPSAoX19nY29udl90KSAtMQotKyMgZWxzZQotKyMgIGlmIEhBVkVfSUNPTlYKLSsgICAgICBkb21haW4tPmNvbnYgIT0gKGljb252X3QpIC0xCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rICAgICAgKQotKyAgICB7Ci0rICAgICAgLyogV2UgYXJlIHN1cHBvc2VkIHRvIGRvIGEgY29udmVyc2lvbi4gIEZpcnN0IGFsbG9jYXRlIGFuCi0rCSBhcHByb3ByaWF0ZSB0YWJsZSB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyB0aGUgdGFibGUKLSsJIG9mIHRyYW5zbGF0aW9ucyBpbiB0aGUgZmlsZSwgd2hlcmUgd2UgY2FuIHB1dCB0aGUgcG9pbnRlcnMKLSsJIHRvIHRoZSBjb252ZXJ0ZWQgc3RyaW5ncyBpbi4KLSsJIFRoZXJlIGlzIGEgc2xpZ2h0IGNvbXBsaWNhdGlvbiB3aXRoIHBsdXJhbCBlbnRyaWVzLiAgVGhleQotKwkgYXJlIHJlcHJlc2VudGVkIGJ5IGNvbnNlY3V0aXZlIE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3MuICBXZQotKwkgaGFuZGxlIHRoaXMgY2FzZSBieSBjb252ZXJ0aW5nIFJFU1VMVExFTiBieXRlcywgaW5jbHVkaW5nCi0rCSBOVUxzLiAgKi8KLSsKLSsgICAgICBpZiAoZG9tYWluLT5jb252X3RhYiA9PSBOVUxMCi0rCSAgJiYgKChkb21haW4tPmNvbnZfdGFiID0KLSsJCSAoY2hhciAqKikgY2FsbG9jIChuc3RyaW5ncyArIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncywKLSsJCQkJICAgc2l6ZW9mIChjaGFyICopKSkKLSsJICAgICAgPT0gTlVMTCkpCi0rCS8qIE1hcmsgdGhhdCB3ZSBkaWRuJ3Qgc3VjY2VlZCBhbGxvY2F0aW5nIGEgdGFibGUuICAqLwotKwlkb21haW4tPmNvbnZfdGFiID0gKGNoYXIgKiopIC0xOwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChkb21haW4tPmNvbnZfdGFiID09IChjaGFyICoqKSAtMSwgMCkpCi0rCS8qIE5vdGhpbmcgd2UgY2FuIGRvLCBubyBtb3JlIG1lbW9yeS4gICovCi0rCWdvdG8gY29udmVydGVkOwotKwotKyAgICAgIGlmIChkb21haW4tPmNvbnZfdGFiW2FjdF0gPT0gTlVMTCkKLSsJewotKwkgIC8qIFdlIGhhdmVuJ3QgdXNlZCB0aGlzIHN0cmluZyBzbyBmYXIsIHNvIGl0IGlzIG5vdAotKwkgICAgIHRyYW5zbGF0ZWQgeWV0LiAgRG8gdGhpcyBub3cuICAqLwotKwkgIC8qIFdlIHVzZSBhIGJpdCBtb3JlIGVmZmljaWVudCBtZW1vcnkgaGFuZGxpbmcuCi0rCSAgICAgV2UgYWxsb2NhdGUgYWx3YXlzIGxhcmdlciBibG9ja3Mgd2hpY2ggZ2V0IHVzZWQgb3ZlcgotKwkgICAgIHRpbWUuICBUaGlzIGlzIGZhc3RlciB0aGFuIG1hbnkgc21hbGwgYWxsb2NhdGlvbnMuICAgKi8KLSsJICBfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgbG9jaykKLSsjIGRlZmluZSBJTklUSUFMX0JMT0NLX1NJWkUJNDA4MAotKwkgIHN0YXRpYyB1bnNpZ25lZCBjaGFyICpmcmVlbWVtOwotKwkgIHN0YXRpYyBzaXplX3QgZnJlZW1lbV9zaXplOwotKwotKwkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluYnVmOwotKwkgIHVuc2lnbmVkIGNoYXIgKm91dGJ1ZjsKLSsJICBpbnQgbWFsbG9jX2NvdW50OwotKyMgaWZuZGVmIF9MSUJDCi0rCSAgdHJhbnNtZW1fYmxvY2tfdCAqdHJhbnNtZW1fbGlzdCA9IE5VTEw7Ci0rIyBlbmRpZgotKwotKwkgIF9fbGliY19sb2NrX2xvY2sgKGxvY2spOwotKwotKwkgIGluYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcmVzdWx0OwotKwkgIG91dGJ1ZiA9IGZyZWVtZW0gKyBzaXplb2YgKHNpemVfdCk7Ci0rCi0rCSAgbWFsbG9jX2NvdW50ID0gMDsKLSsJICB3aGlsZSAoMSkKLSsJICAgIHsKLSsJICAgICAgdHJhbnNtZW1fYmxvY2tfdCAqbmV3bWVtOwotKyMgaWZkZWYgX0xJQkMKLSsJICAgICAgc2l6ZV90IG5vbl9yZXZlcnNpYmxlOwotKwkgICAgICBpbnQgcmVzOwotKwotKwkgICAgICBpZiAoZnJlZW1lbV9zaXplIDwgc2l6ZW9mIChzaXplX3QpKQotKwkJZ290byByZXNpemVfZnJlZW1lbTsKLSsKLSsJICAgICAgcmVzID0gX19nY29udiAoZG9tYWluLT5jb252LAotKwkJCSAgICAgJmluYnVmLCBpbmJ1ZiArIHJlc3VsdGxlbiwKLSsJCQkgICAgICZvdXRidWYsCi0rCQkJICAgICBvdXRidWYgKyBmcmVlbWVtX3NpemUgLSBzaXplb2YgKHNpemVfdCksCi0rCQkJICAgICAmbm9uX3JldmVyc2libGUpOwotKwotKwkgICAgICBpZiAocmVzID09IF9fR0NPTlZfT0sgfHwgcmVzID09IF9fR0NPTlZfRU1QVFlfSU5QVVQpCi0rCQlicmVhazsKLSsKLSsJICAgICAgaWYgKHJlcyAhPSBfX0dDT05WX0ZVTExfT1VUUFVUKQotKwkJewotKwkJICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKwkJICBnb3RvIGNvbnZlcnRlZDsKLSsJCX0KLSsKLSsJICAgICAgaW5idWYgPSByZXN1bHQ7Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9JQ09OVgotKwkgICAgICBjb25zdCBjaGFyICppbnB0ciA9IChjb25zdCBjaGFyICopIGluYnVmOwotKwkgICAgICBzaXplX3QgaW5sZWZ0ID0gcmVzdWx0bGVuOwotKwkgICAgICBjaGFyICpvdXRwdHIgPSAoY2hhciAqKSBvdXRidWY7Ci0rCSAgICAgIHNpemVfdCBvdXRsZWZ0OwotKwotKwkgICAgICBpZiAoZnJlZW1lbV9zaXplIDwgc2l6ZW9mIChzaXplX3QpKQotKwkJZ290byByZXNpemVfZnJlZW1lbTsKLSsKLSsJICAgICAgb3V0bGVmdCA9IGZyZWVtZW1fc2l6ZSAtIHNpemVvZiAoc2l6ZV90KTsKLSsJICAgICAgaWYgKGljb252IChkb21haW4tPmNvbnYsCi0rCQkJIChJQ09OVl9DT05TVCBjaGFyICoqKSAmaW5wdHIsICZpbmxlZnQsCi0rCQkJICZvdXRwdHIsICZvdXRsZWZ0KQotKwkJICAhPSAoc2l6ZV90KSAoLTEpKQotKwkJewotKwkJICBvdXRidWYgPSAodW5zaWduZWQgY2hhciAqKSBvdXRwdHI7Ci0rCQkgIGJyZWFrOwotKwkJfQotKwkgICAgICBpZiAoZXJybm8gIT0gRTJCSUcpCi0rCQl7Ci0rCQkgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0rCQkgIGdvdG8gY29udmVydGVkOwotKwkJfQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwotKwkgICAgcmVzaXplX2ZyZWVtZW06Ci0rCSAgICAgIC8qIFdlIG11c3QgYWxsb2NhdGUgYSBuZXcgYnVmZmVyIG9yIHJlc2l6ZSB0aGUgb2xkIG9uZS4gICovCi0rCSAgICAgIGlmIChtYWxsb2NfY291bnQgPiAwKQotKwkJewotKwkJICArK21hbGxvY19jb3VudDsKLSsJCSAgZnJlZW1lbV9zaXplID0gbWFsbG9jX2NvdW50ICogSU5JVElBTF9CTE9DS19TSVpFOwotKwkJICBuZXdtZW0gPSAodHJhbnNtZW1fYmxvY2tfdCAqKSByZWFsbG9jICh0cmFuc21lbV9saXN0LAotKwkJCQkJCQkgZnJlZW1lbV9zaXplKTsKLSsjIGlmZGVmIF9MSUJDCi0rCQkgIGlmIChuZXdtZW0gIT0gTlVMTCkKLSsJCSAgICB0cmFuc21lbV9saXN0ID0gdHJhbnNtZW1fbGlzdC0+bmV4dDsKLSsJCSAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHN0cnVjdCB0cmFuc21lbV9saXN0ICpvbGQgPSB0cmFuc21lbV9saXN0OwotKwotKwkJICAgICAgdHJhbnNtZW1fbGlzdCA9IHRyYW5zbWVtX2xpc3QtPm5leHQ7Ci0rCQkgICAgICBmcmVlIChvbGQpOwotKwkJICAgIH0KLSsjIGVuZGlmCi0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgbWFsbG9jX2NvdW50ID0gMTsKLSsJCSAgZnJlZW1lbV9zaXplID0gSU5JVElBTF9CTE9DS19TSVpFOwotKwkJICBuZXdtZW0gPSAodHJhbnNtZW1fYmxvY2tfdCAqKSBtYWxsb2MgKGZyZWVtZW1fc2l6ZSk7Ci0rCQl9Ci0rCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChuZXdtZW0gPT0gTlVMTCwgMCkpCi0rCQl7Ci0rCQkgIGZyZWVtZW0gPSBOVUxMOwotKwkJICBmcmVlbWVtX3NpemUgPSAwOwotKwkJICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKwkJICBnb3RvIGNvbnZlcnRlZDsKLSsJCX0KLSsKLSsjIGlmZGVmIF9MSUJDCi0rCSAgICAgIC8qIEFkZCB0aGUgYmxvY2sgdG8gdGhlIGxpc3Qgb2YgYmxvY2tzIHdlIGhhdmUgdG8gZnJlZQotKyAgICAgICAgICAgICAgICAgYXQgc29tZSBwb2ludC4gICovCi0rCSAgICAgIG5ld21lbS0+bmV4dCA9IHRyYW5zbWVtX2xpc3Q7Ci0rCSAgICAgIHRyYW5zbWVtX2xpc3QgPSBuZXdtZW07Ci0rCi0rCSAgICAgIGZyZWVtZW0gPSBuZXdtZW0tPmRhdGE7Ci0rCSAgICAgIGZyZWVtZW1fc2l6ZSAtPSBvZmZzZXRvZiAoc3RydWN0IHRyYW5zbWVtX2xpc3QsIGRhdGEpOwotKyMgZWxzZQotKwkgICAgICB0cmFuc21lbV9saXN0ID0gbmV3bWVtOwotKwkgICAgICBmcmVlbWVtID0gbmV3bWVtOwotKyMgZW5kaWYKLSsKLSsJICAgICAgb3V0YnVmID0gZnJlZW1lbSArIHNpemVvZiAoc2l6ZV90KTsKLSsJICAgIH0KLSsKLSsJICAvKiBXZSBoYXZlIG5vdyBpbiBvdXIgYnVmZmVyIGEgY29udmVydGVkIHN0cmluZy4gIFB1dCB0aGlzCi0rCSAgICAgaW50byB0aGUgdGFibGUgb2YgY29udmVyc2lvbnMuICAqLwotKwkgICooc2l6ZV90ICopIGZyZWVtZW0gPSBvdXRidWYgLSBmcmVlbWVtIC0gc2l6ZW9mIChzaXplX3QpOwotKwkgIGRvbWFpbi0+Y29udl90YWJbYWN0XSA9IChjaGFyICopIGZyZWVtZW07Ci0rCSAgLyogU2hyaW5rIGZyZWVtZW0sIGJ1dCBrZWVwIGl0IGFsaWduZWQuICAqLwotKwkgIGZyZWVtZW1fc2l6ZSAtPSBvdXRidWYgLSBmcmVlbWVtOwotKwkgIGZyZWVtZW0gPSBvdXRidWY7Ci0rCSAgZnJlZW1lbSArPSBmcmVlbWVtX3NpemUgJiAoYWxpZ25vZiAoc2l6ZV90KSAtIDEpOwotKwkgIGZyZWVtZW1fc2l6ZSA9IGZyZWVtZW1fc2l6ZSAmIH4gKGFsaWdub2YgKHNpemVfdCkgLSAxKTsKLSsKLSsJICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKwl9Ci0rCi0rICAgICAgLyogTm93IGRvbWFpbi0+Y29udl90YWJbYWN0XSBjb250YWlucyB0aGUgdHJhbnNsYXRpb24gb2YgYWxsCi0rCSB0aGUgcGx1cmFsIHZhcmlhbnRzLiAgKi8KLSsgICAgICByZXN1bHQgPSBkb21haW4tPmNvbnZfdGFiW2FjdF0gKyBzaXplb2YgKHNpemVfdCk7Ci0rICAgICAgcmVzdWx0bGVuID0gKihzaXplX3QgKikgZG9tYWluLT5jb252X3RhYlthY3RdOwotKyAgICB9Ci0rCi0rIGNvbnZlcnRlZDoKLSsgIC8qIFRoZSByZXN1bHQgc3RyaW5nIGlzIGNvbnZlcnRlZC4gICovCi0rCi0rI2VuZGlmIC8qIF9MSUJDIHx8IEhBVkVfSUNPTlYgKi8KLSsKLSsgICpsZW5ndGhwID0gcmVzdWx0bGVuOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rCi0rLyogTG9vayB1cCBhIHBsdXJhbCB2YXJpYW50LiAgKi8KLStzdGF0aWMgY2hhciAqCi0raW50ZXJuYWxfZnVuY3Rpb24KLStwbHVyYWxfbG9va3VwIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW4sIHVuc2lnbmVkIGxvbmcgaW50IG4sCi0rCSAgICAgICBjb25zdCBjaGFyICp0cmFuc2xhdGlvbiwgc2l6ZV90IHRyYW5zbGF0aW9uX2xlbikKLSt7Ci0rICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluZGF0YSA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW4tPmRhdGE7Ci0rICB1bnNpZ25lZCBsb25nIGludCBpbmRleDsKLSsgIGNvbnN0IGNoYXIgKnA7Ci0rCi0rICBpbmRleCA9IHBsdXJhbF9ldmFsIChkb21haW5kYXRhLT5wbHVyYWwsIG4pOwotKyAgaWYgKGluZGV4ID49IGRvbWFpbmRhdGEtPm5wbHVyYWxzKQotKyAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICBJdCBtZWFucyB0aGUgcGx1cmFsIGV4cHJlc3Npb24gYW5kIHRoZQotKyAgICAgICBnaXZlbiBtYXhpbXVtIHZhbHVlIGRvIG5vdCBtYXRjaC4gICovCi0rICAgIGluZGV4ID0gMDsKLSsKLSsgIC8qIFNraXAgSU5ERVggc3RyaW5ncyBhdCBUUkFOU0xBVElPTi4gICovCi0rICBwID0gdHJhbnNsYXRpb247Ci0rICB3aGlsZSAoaW5kZXgtLSA+IDApCi0rICAgIHsKLSsjaWZkZWYgX0xJQkMKLSsgICAgICBwID0gX19yYXdtZW1jaHIgKHAsICdcMCcpOwotKyNlbHNlCi0rICAgICAgcCA9IHN0cmNociAocCwgJ1wwJyk7Ci0rI2VuZGlmCi0rICAgICAgLyogQW5kIHNraXAgb3ZlciB0aGUgTlVMIGJ5dGUuICAqLwotKyAgICAgIHArKzsKLSsKLSsgICAgICBpZiAocCA+PSB0cmFuc2xhdGlvbiArIHRyYW5zbGF0aW9uX2xlbikKLSsJLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgSXQgbWVhbnMgdGhlIHBsdXJhbCBleHByZXNzaW9uCi0rCSAgIGV2YWx1YXRlZCB0byBhIHZhbHVlIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgdmFyaWFudHMKLSsJICAgYXZhaWxhYmxlIGZvciBNU0dJRDEuICAqLwotKwlyZXR1cm4gKGNoYXIgKikgdHJhbnNsYXRpb247Ci0rICAgIH0KLSsgIHJldHVybiAoY2hhciAqKSBwOwotK30KLSsKLSsjaWZuZGVmIF9MSUJDCi0rLyogUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsb2NhbGUgQ0FURUdPUlkuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK2NhdGVnb3J5X3RvX25hbWUgKGludCBjYXRlZ29yeSkKLSt7Ci0rICBjb25zdCBjaGFyICpyZXR2YWw7Ci0rCi0rICBzd2l0Y2ggKGNhdGVnb3J5KQotKyAgewotKyNpZmRlZiBMQ19DT0xMQVRFCi0rICBjYXNlIExDX0NPTExBVEU6Ci0rICAgIHJldHZhbCA9ICJMQ19DT0xMQVRFIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX0NUWVBFCi0rICBjYXNlIExDX0NUWVBFOgotKyAgICByZXR2YWwgPSAiTENfQ1RZUEUiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfTU9ORVRBUlkKLSsgIGNhc2UgTENfTU9ORVRBUlk6Ci0rICAgIHJldHZhbCA9ICJMQ19NT05FVEFSWSI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19OVU1FUklDCi0rICBjYXNlIExDX05VTUVSSUM6Ci0rICAgIHJldHZhbCA9ICJMQ19OVU1FUklDIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX1RJTUUKLSsgIGNhc2UgTENfVElNRToKLSsgICAgcmV0dmFsID0gIkxDX1RJTUUiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfTUVTU0FHRVMKLSsgIGNhc2UgTENfTUVTU0FHRVM6Ci0rICAgIHJldHZhbCA9ICJMQ19NRVNTQUdFUyI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19SRVNQT05TRQotKyAgY2FzZSBMQ19SRVNQT05TRToKLSsgICAgcmV0dmFsID0gIkxDX1JFU1BPTlNFIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX0FMTAotKyAgY2FzZSBMQ19BTEw6Ci0rICAgIC8qIFRoaXMgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgYnV0IGlzIHBlcmhhcHMgYmV0dGVyIHRoYW4gYW55IG90aGVyCi0rICAgICAgIHZhbHVlLiAgKi8KLSsgICAgcmV0dmFsID0gIkxDX0FMTCI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyAgZGVmYXVsdDoKLSsgICAgLyogSWYgeW91IGhhdmUgYSBiZXR0ZXIgaWRlYSBmb3IgYSBkZWZhdWx0IHZhbHVlIGxldCBtZSBrbm93LiAgKi8KLSsgICAgcmV0dmFsID0gIkxDX1hYWCI7Ci0rICB9Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsjZW5kaWYKLSsKLSsvKiBHdWVzcyB2YWx1ZSBvZiBjdXJyZW50IGxvY2FsZSBmcm9tIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK2d1ZXNzX2NhdGVnb3J5X3ZhbHVlIChpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSkKLSt7Ci0rICBjb25zdCBjaGFyICpsYW5ndWFnZTsKLSsgIGNvbnN0IGNoYXIgKnJldHZhbDsKLSsKLSsgIC8qIFRoZSBoaWdoZXN0IHByaW9yaXR5IHZhbHVlIGlzIHRoZSBgTEFOR1VBR0UnIGVudmlyb25tZW50Ci0rICAgICB2YXJpYWJsZS4gIEJ1dCB3ZSBkb24ndCB1c2UgdGhlIHZhbHVlIGlmIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQKLSsgICAgIGxvY2FsZSBpcyB0aGUgQyBsb2NhbGUuICBUaGlzIGlzIGEgR05VIGV4dGVuc2lvbi4gICovCi0rICBsYW5ndWFnZSA9IGdldGVudiAoIkxBTkdVQUdFIik7Ci0rICBpZiAobGFuZ3VhZ2UgIT0gTlVMTCAmJiBsYW5ndWFnZVswXSA9PSAnXDAnKQotKyAgICBsYW5ndWFnZSA9IE5VTEw7Ci0rCi0rICAvKiBXZSBoYXZlIHRvIHByb2NlZWQgd2l0aCB0aGUgUE9TSVggbWV0aG9kcyBvZiBsb29raW5nIHRvIGBMQ19BTEwnLAotKyAgICAgYExDX3h4eCcsIGFuZCBgTEFORycuICBPbiBzb21lIHN5c3RlbXMgdGhpcyBjYW4gYmUgZG9uZSBieSB0aGUKLSsgICAgIGBzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCi0rI2lmZGVmIF9MSUJDCi0rICByZXR2YWwgPSBfX2N1cnJlbnRfbG9jYWxlX25hbWUgKGNhdGVnb3J5KTsKLSsjZWxzZQotKyAgcmV0dmFsID0gX25sX2xvY2FsZV9uYW1lIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKTsKLSsjZW5kaWYKLSsKLSsgIC8qIElnbm9yZSBMQU5HVUFHRSBpZiB0aGUgbG9jYWxlIGlzIHNldCB0byAiQyIgYmVjYXVzZQotKyAgICAgMS4gIkMiIGxvY2FsZSB1c3VhbGx5IHVzZXMgdGhlIEFTQ0lJIGVuY29kaW5nLCBhbmQgbW9zdCBpbnRlcm5hdGlvbmFsCi0rCW1lc3NhZ2VzIHVzZSBub24tQVNDSUkgY2hhcmFjdGVycy4gVGhlc2UgY2hhcmFjdGVycyBnZXQgZGlzcGxheWVkCi0rCWFzIHF1ZXN0aW9uIG1hcmtzIChpZiB1c2luZyBnbGliYydzIGljb252KCkpIG9yIGFzIGludmFsaWQgOC1iaXQKLSsJY2hhcmFjdGVycyAoYmVjYXVzZSBvdGhlciBpY29udigpcyByZWZ1c2UgdG8gY29udmVydCBtb3N0IG5vbi1BU0NJSQotKwljaGFyYWN0ZXJzIHRvIEFTQ0lJKS4gSW4gYW55IGNhc2UsIHRoZSBvdXRwdXQgaXMgdWdseS4KLSsgICAgIDIuIFRoZSBwcmVjaXNlIG91dHB1dCBvZiBzb21lIHByb2dyYW1zIGluIHRoZSAiQyIgbG9jYWxlIGlzIHNwZWNpZmllZAotKwlieSBQT1NJWCBhbmQgc2hvdWxkIG5vdCBkZXBlbmQgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIGxpa2UKLSsJIkxBTkdVQUdFIi4gIFdlIGFsbG93IHN1Y2ggcHJvZ3JhbXMgdG8gdXNlIGdldHRleHQoKS4gICovCi0rICByZXR1cm4gbGFuZ3VhZ2UgIT0gTlVMTCAmJiBzdHJjbXAgKHJldHZhbCwgIkMiKSAhPSAwID8gbGFuZ3VhZ2UgOiByZXR2YWw7Ci0rfQotKwotKy8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotKwotKy8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCi0rICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKLSsgICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQotKyAgIHRvIGJlIGRlZmluZWQuICAqLwotKyNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCi0rc3RhdGljIGNoYXIgKgotK3N0cGNweSAoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKQotK3sKLSsgIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKLSsgICAgLyogRG8gbm90aGluZy4gKi8gOwotKyAgcmV0dXJuIGRlc3QgLSAxOwotK30KLSsjZW5kaWYKLSsKLSsjaWYgIV9MSUJDICYmICFIQVZFX01FTVBDUFkKLStzdGF0aWMgdm9pZCAqCi0rbWVtcGNweSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikKLSt7Ci0rICByZXR1cm4gKHZvaWQgKikgKChjaGFyICopIG1lbWNweSAoZGVzdCwgc3JjLCBuKSArIG4pOwotK30KLSsjZW5kaWYKLSsKLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBJZiB3ZSB3YW50IHRvIGZyZWUgYWxsIHJlc291cmNlcyB3ZSBoYXZlIHRvIGRvIHNvbWUgd29yayBhdAotKyAgIHByb2dyYW0ncyBlbmQuICAqLwotK2xpYmNfZnJlZXJlc19mbiAoZnJlZV9tZW0pCi0rewotKyAgdm9pZCAqb2xkOwotKwotKyAgd2hpbGUgKF9ubF9kb21haW5fYmluZGluZ3MgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBiaW5kaW5nICpvbGRwID0gX25sX2RvbWFpbl9iaW5kaW5nczsKLSsgICAgICBfbmxfZG9tYWluX2JpbmRpbmdzID0gX25sX2RvbWFpbl9iaW5kaW5ncy0+bmV4dDsKLSsgICAgICBpZiAob2xkcC0+ZGlybmFtZSAhPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpCi0rCS8qIFllcywgdGhpcyBpcyBhIHBvaW50ZXIgY29tcGFyaXNvbi4gICovCi0rCWZyZWUgKG9sZHAtPmRpcm5hbWUpOwotKyAgICAgIGZyZWUgKG9sZHAtPmNvZGVzZXQpOwotKyAgICAgIGZyZWUgKG9sZHApOwotKyAgICB9Ci0rCi0rICBpZiAoX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCi0rICAgIC8qIFllcywgYWdhaW4gYSBwb2ludGVyIGNvbXBhcmlzb24uICAqLwotKyAgICBmcmVlICgoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbik7Ci0rCi0rICAvKiBSZW1vdmUgdGhlIHNlYXJjaCB0cmVlIHdpdGggdGhlIGtub3duIHRyYW5zbGF0aW9ucy4gICovCi0rICBfX3RkZXN0cm95IChyb290LCBmcmVlKTsKLSsgIHJvb3QgPSBOVUxMOwotKwotKyAgd2hpbGUgKHRyYW5zbWVtX2xpc3QgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIG9sZCA9IHRyYW5zbWVtX2xpc3Q7Ci0rICAgICAgdHJhbnNtZW1fbGlzdCA9IHRyYW5zbWVtX2xpc3QtPm5leHQ7Ci0rICAgICAgZnJlZSAob2xkKTsKLSsgICAgfQotK30KLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9kY25nZXR0ZXh0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZGNuZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzc1NzQ1MDQ4IC0wNDAwCi1AQCAtMCwwICsxLDU3IEBACi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRjbmdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotKyNlbHNlCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0rI2VuZGlmCi0rCi0rLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotKwotKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSsgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi0rICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCi0rICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBEQ05HRVRURVhUIF9fZGNuZ2V0dGV4dAotKyMgZGVmaW5lIERDSUdFVFRFWFQgX19kY2lnZXR0ZXh0Ci0rI2Vsc2UKLSsjIGRlZmluZSBEQ05HRVRURVhUIGxpYmludGxfZGNuZ2V0dGV4dAotKyMgZGVmaW5lIERDSUdFVFRFWFQgbGliaW50bF9kY2lnZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCi0rICAgbG9jYWxlLiAgKi8KLStjaGFyICoKLStEQ05HRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkgICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4sCi0rCSAgICBpbnQgY2F0ZWdvcnkpCi0rewotKyAgcmV0dXJuIERDSUdFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCAxLCBuLCBjYXRlZ29yeSk7Ci0rfQotKwotKyNpZmRlZiBfTElCQwotKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotK3dlYWtfYWxpYXMgKF9fZGNuZ2V0dGV4dCwgZGNuZ2V0dGV4dCk7Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZGdldHRleHQuYwkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9kZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzgwNzQ0Mjg4IC0wNDAwCi1AQCAtMSwzMiArMSwzMyBAQAotLS8qIGRnZXR0ZXh0LmMgLS0gaW1wbGVtZW50YXRpb24gb2YgdGhlIGRnZXR0ZXh0KDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLWFueSBsYXRlciB2ZXJzaW9uLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgSEFWRV9MT0NBTEVfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxsb2NhbGUuaD4KLS0jZW5kaWYKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gI2lmZGVmIF9MSUJDCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi1AQCAtMzcsMTggKzM4LDE2IEBACi0gICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSAjaWZkZWYgX0xJQkMKLSAjIGRlZmluZSBER0VUVEVYVCBfX2RnZXR0ZXh0Ci0tIyBkZWZpbmUgRENHRVRURVhUIF9fZGNnZXR0ZXh0Ci0rIyBkZWZpbmUgRENHRVRURVhUIElOVFVTRShfX2RjZ2V0dGV4dCkKLSAjZWxzZQotLSMgZGVmaW5lIERHRVRURVhUIGRnZXR0ZXh0X18KLS0jIGRlZmluZSBEQ0dFVFRFWFQgZGNnZXR0ZXh0X18KLSsjIGRlZmluZSBER0VUVEVYVCBsaWJpbnRsX2RnZXR0ZXh0Ci0rIyBkZWZpbmUgRENHRVRURVhUIGxpYmludGxfZGNnZXR0ZXh0Ci0gI2VuZGlmCi0gCi0gLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgb2YgdGhlIGN1cnJlbnQKLSAgICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLwotIGNoYXIgKgotLURHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLStER0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqbXNnaWQpCi0gewotICAgcmV0dXJuIERDR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIExDX01FU1NBR0VTKTsKLSB9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZG5nZXR0ZXh0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZG5nZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zODU3NDM1MjggLTA0MDAKLUBAIC0wLDAgKzEsNTkgQEAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZG5nZXR0ZXh0KDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSsjZW5kaWYKLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotKyAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLSsgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KLSsgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIEROR0VUVEVYVCBfX2RuZ2V0dGV4dAotKyMgZGVmaW5lIERDTkdFVFRFWFQgX19kY25nZXR0ZXh0Ci0rI2Vsc2UKLSsjIGRlZmluZSBETkdFVFRFWFQgbGliaW50bF9kbmdldHRleHQKLSsjIGRlZmluZSBEQ05HRVRURVhUIGxpYmludGxfZGNuZ2V0dGV4dAotKyNlbmRpZgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIG9mIHRoZSBjdXJyZW50Ci0rICAgTENfTUVTU0FHRVMgbG9jYWxlIGFuZCBza2lwIG1lc3NhZ2UgYWNjb3JkaW5nIHRvIHRoZSBwbHVyYWwgZm9ybS4gICovCi0rY2hhciAqCi0rRE5HRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbikKLSt7Ci0rICByZXR1cm4gRENOR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQxLCBtc2dpZDIsIG4sIExDX01FU1NBR0VTKTsKLSt9Ci0rCi0rI2lmZGVmIF9MSUJDCi0rLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCi0rd2Vha19hbGlhcyAoX19kbmdldHRleHQsIGRuZ2V0dGV4dCk7Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZXZhbC1wbHVyYWwuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9ldmFsLXBsdXJhbC5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzkwNzQyNzY4IC0wNDAwCi1AQCAtMCwwICsxLDEwOCBAQAotKy8qIFBsdXJhbCBleHByZXNzaW9uIGV2YWx1YXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgU1RBVElDCi0rI2RlZmluZSBTVEFUSUMgc3RhdGljCi0rI2VuZGlmCi0rCi0rLyogRXZhbHVhdGUgdGhlIHBsdXJhbCBleHByZXNzaW9uIGFuZCByZXR1cm4gYW4gaW5kZXggdmFsdWUuICAqLwotK1NUQVRJQwotK3Vuc2lnbmVkIGxvbmcgaW50Ci0raW50ZXJuYWxfZnVuY3Rpb24KLStwbHVyYWxfZXZhbCAoc3RydWN0IGV4cHJlc3Npb24gKnBleHAsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0rewotKyAgc3dpdGNoIChwZXhwLT5uYXJncykKLSsgICAgewotKyAgICBjYXNlIDA6Ci0rICAgICAgc3dpdGNoIChwZXhwLT5vcGVyYXRpb24pCi0rCXsKLSsJY2FzZSB2YXI6Ci0rCSAgcmV0dXJuIG47Ci0rCWNhc2UgbnVtOgotKwkgIHJldHVybiBwZXhwLT52YWwubnVtOwotKwlkZWZhdWx0OgotKwkgIGJyZWFrOwotKwl9Ci0rICAgICAgLyogTk9UUkVBQ0hFRCAqLwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgewotKwkvKiBwZXhwLT5vcGVyYXRpb24gbXVzdCBiZSBsbm90LiAgKi8KLSsJdW5zaWduZWQgbG9uZyBpbnQgYXJnID0gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzBdLCBuKTsKLSsJcmV0dXJuICEgYXJnOwotKyAgICAgIH0KLSsgICAgY2FzZSAyOgotKyAgICAgIHsKLSsJdW5zaWduZWQgbG9uZyBpbnQgbGVmdGFyZyA9IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1swXSwgbik7Ci0rCWlmIChwZXhwLT5vcGVyYXRpb24gPT0gbG9yKQotKwkgIHJldHVybiBsZWZ0YXJnIHx8IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1sxXSwgbik7Ci0rCWVsc2UgaWYgKHBleHAtPm9wZXJhdGlvbiA9PSBsYW5kKQotKwkgIHJldHVybiBsZWZ0YXJnICYmIHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1sxXSwgbik7Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICB1bnNpZ25lZCBsb25nIGludCByaWdodGFyZyA9IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1sxXSwgbik7Ci0rCi0rCSAgICBzd2l0Y2ggKHBleHAtPm9wZXJhdGlvbikKLSsJICAgICAgewotKwkgICAgICBjYXNlIG11bHQ6Ci0rCQlyZXR1cm4gbGVmdGFyZyAqIHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGRpdmlkZToKLSsjaWYgIUlOVERJVjBfUkFJU0VTX1NJR0ZQRQotKwkJaWYgKHJpZ2h0YXJnID09IDApCi0rCQkgIHJhaXNlIChTSUdGUEUpOwotKyNlbmRpZgotKwkJcmV0dXJuIGxlZnRhcmcgLyByaWdodGFyZzsKLSsJICAgICAgY2FzZSBtb2R1bGU6Ci0rI2lmICFJTlRESVYwX1JBSVNFU19TSUdGUEUKLSsJCWlmIChyaWdodGFyZyA9PSAwKQotKwkJICByYWlzZSAoU0lHRlBFKTsKLSsjZW5kaWYKLSsJCXJldHVybiBsZWZ0YXJnICUgcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgcGx1czoKLSsJCXJldHVybiBsZWZ0YXJnICsgcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgbWludXM6Ci0rCQlyZXR1cm4gbGVmdGFyZyAtIHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGxlc3NfdGhhbjoKLSsJCXJldHVybiBsZWZ0YXJnIDwgcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgZ3JlYXRlcl90aGFuOgotKwkJcmV0dXJuIGxlZnRhcmcgPiByaWdodGFyZzsKLSsJICAgICAgY2FzZSBsZXNzX29yX2VxdWFsOgotKwkJcmV0dXJuIGxlZnRhcmcgPD0gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgZ3JlYXRlcl9vcl9lcXVhbDoKLSsJCXJldHVybiBsZWZ0YXJnID49IHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGVxdWFsOgotKwkJcmV0dXJuIGxlZnRhcmcgPT0gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2Ugbm90X2VxdWFsOgotKwkJcmV0dXJuIGxlZnRhcmcgIT0gcmlnaHRhcmc7Ci0rCSAgICAgIGRlZmF1bHQ6Ci0rCQlicmVhazsKLSsJICAgICAgfQotKwkgIH0KLSsJLyogTk9UUkVBQ0hFRCAqLwotKwlicmVhazsKLSsgICAgICB9Ci0rICAgIGNhc2UgMzoKLSsgICAgICB7Ci0rCS8qIHBleHAtPm9wZXJhdGlvbiBtdXN0IGJlIHFtb3AuICAqLwotKwl1bnNpZ25lZCBsb25nIGludCBib29sYXJnID0gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzBdLCBuKTsKLSsJcmV0dXJuIHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1tib29sYXJnID8gMSA6IDJdLCBuKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIC8qIE5PVFJFQUNIRUQgKi8KLSsgIHJldHVybiAwOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9leHBsb2RlbmFtZS5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2V4cGxvZGVuYW1lLmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zOTU3NDIwMDggLTA0MDAKLUBAIC0xLDE5ICsxLDIwIEBACi0tLyogQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci1AQCAtMzYsMTggKzM3LDIzIEBACi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotK2NoYXIgKgotK19ubF9maW5kX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHdoaWxlIChuYW1lWzBdICE9ICdcMCcgJiYgbmFtZVswXSAhPSAnXycgJiYgbmFtZVswXSAhPSAnQCcKLSsJICYmIG5hbWVbMF0gIT0gJysnICYmIG5hbWVbMF0gIT0gJywnKQotKyAgICArK25hbWU7Ci0rCi0rICByZXR1cm4gKGNoYXIgKikgbmFtZTsKLSt9Ci0rCi0rCi0gaW50Ci0tX25sX2V4cGxvZGVfbmFtZSAobmFtZSwgbGFuZ3VhZ2UsIG1vZGlmaWVyLCB0ZXJyaXRvcnksIGNvZGVzZXQsCi0tCQkgIG5vcm1hbGl6ZWRfY29kZXNldCwgc3BlY2lhbCwgc3BvbnNvciwgcmV2aXNpb24pCi0tICAgICBjaGFyICpuYW1lOwotLSAgICAgY29uc3QgY2hhciAqKmxhbmd1YWdlOwotLSAgICAgY29uc3QgY2hhciAqKm1vZGlmaWVyOwotLSAgICAgY29uc3QgY2hhciAqKnRlcnJpdG9yeTsKLS0gICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0OwotLSAgICAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldDsKLS0gICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsOwotLSAgICAgY29uc3QgY2hhciAqKnNwb25zb3I7Ci0tICAgICBjb25zdCBjaGFyICoqcmV2aXNpb247Ci0rX25sX2V4cGxvZGVfbmFtZSAoY2hhciAqbmFtZSwKLSsJCSAgY29uc3QgY2hhciAqKmxhbmd1YWdlLCBjb25zdCBjaGFyICoqbW9kaWZpZXIsCi0rCQkgIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnksIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAotKwkJICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LCBjb25zdCBjaGFyICoqc3BlY2lhbCwKLSsJCSAgY29uc3QgY2hhciAqKnNwb25zb3IsIGNvbnN0IGNoYXIgKipyZXZpc2lvbikKLSB7Ci0gICBlbnVtIHsgdW5kZWNpZGVkLCB4cGcsIGNlbiB9IHN5bnRheDsKLSAgIGNoYXIgKmNwOwotQEAgLTY3LDkgKzczLDcgQEAKLSAgIG1hc2sgPSAwOwotICAgc3ludGF4ID0gdW5kZWNpZGVkOwotICAgKmxhbmd1YWdlID0gY3AgPSBuYW1lOwotLSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ18nICYmIGNwWzBdICE9ICdAJwotLQkgJiYgY3BbMF0gIT0gJysnICYmIGNwWzBdICE9ICcsJykKLS0gICAgKytjcDsKLSsgIGNwID0gX25sX2ZpbmRfbGFuZ3VhZ2UgKCpsYW5ndWFnZSk7Ci0gCi0gICBpZiAoKmxhbmd1YWdlID09IGNwKQotICAgICAvKiBUaGlzIGRvZXMgbm90IG1ha2Ugc2Vuc2U6IGxhbmd1YWdlIGhhcyB0byBiZSBzcGVjaWZpZWQuICBVc2UKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9maW5kZG9tYWluLmMJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZmluZGRvbWFpbi5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDE1NzM4OTY4IC0wNDAwCi1AQCAtMSw2NCArMSw0MCBAQAotIC8qIEhhbmRsZSBsaXN0IG9mIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUub3JnPiwgMTk5NS4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxjdHlwZS5oPgotLSNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2Vsc2UKLS0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKLS0jICBpbmNsdWRlIDxtYWxsb2MuaD4KLS0jIGVsc2UKLS12b2lkIGZyZWUgKCk7Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jIGlmbmRlZiBtZW1jcHkKLS0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgc3RyY2hyCi0tIyAgZGVmaW5lIHN0cmNociBpbmRleAotLSMgZW5kaWYKLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotICNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQwotICMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLSAjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAjaWZkZWYgX0xJQkMKLSAjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLUBAIC03MCwxMCArNDYsOSBAQAotICAgIHRoZSBET01BSU5OQU1FIGFuZCBDQVRFR09SWSBwYXJhbWV0ZXJzIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudGx5Ci0gICAgZXN0YWJsaXNoZWQgYmluZGluZ3MuICAqLwotIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgotLV9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgbG9jYWxlLCBkb21haW5uYW1lKQotLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKLS0gICAgIGNoYXIgKmxvY2FsZTsKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0raW50ZXJuYWxfZnVuY3Rpb24KLStfbmxfZmluZF9kb21haW4gKGNvbnN0IGNoYXIgKmRpcm5hbWUsIGNoYXIgKmxvY2FsZSwKLSsJCSBjb25zdCBjaGFyICpkb21haW5uYW1lLCBzdHJ1Y3QgYmluZGluZyAqZG9tYWluYmluZGluZykKLSB7Ci0gICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpyZXR2YWw7Ci0gICBjb25zdCBjaGFyICpsYW5ndWFnZTsKLUBAIC05NSw5ICs3MCw5IEBACi0gCi0gCWxhbmd1YWdlW190ZXJyaXRvcnldWythdWRpZW5jZV1bK3NwZWNpYWxdWyxbc3BvbnNvcl1bX3JldmlzaW9uXV0KLSAKLS0gICAgIEJlc2lkZSB0aGUgZmlyc3QgYWxsIG9mIHRoZW0gYXJlIGFsbG93ZWQgdG8gYmUgbWlzc2luZy4gIElmIHRoZQotLSAgICAgZnVsbCBzcGVjaWZpZWQgbG9jYWxlIGlzIG5vdCBmb3VuZCwgdGhlIGxlc3Mgc3BlY2lmaWMgb25lIGFyZQotLSAgICAgbG9va2VkIGZvci4gIFRoZSB2YXJpb3VzIHBhcnQgd2lsbCBiZSBzdHJpcHBlZCBvZiBhY2NvcmRpbmcgdG8KLSsgICAgIEJlc2lkZSB0aGUgZmlyc3QgcGFydCBhbGwgb2YgdGhlbSBhcmUgYWxsb3dlZCB0byBiZSBtaXNzaW5nLiAgSWYKLSsgICAgIHRoZSBmdWxsIHNwZWNpZmllZCBsb2NhbGUgaXMgbm90IGZvdW5kLCB0aGUgbGVzcyBzcGVjaWZpYyBvbmUgYXJlCi0rICAgICBsb29rZWQgZm9yLiAgVGhlIHZhcmlvdXMgcGFydHMgd2lsbCBiZSBzdHJpcHBlZCBvZmYgYWNjb3JkaW5nIHRvCi0gICAgICB0aGUgZm9sbG93aW5nIG9yZGVyOgotIAkJKDEpIHJldmlzaW9uCi0gCQkoMikgc3BvbnNvcgotQEAgLTExOSw3ICs5NCw3IEBACi0gICAgICAgaW50IGNudDsKLSAKLSAgICAgICBpZiAocmV0dmFsLT5kZWNpZGVkID09IDApCi0tCV9ubF9sb2FkX2RvbWFpbiAocmV0dmFsKTsKLSsJX25sX2xvYWRfZG9tYWluIChyZXR2YWwsIGRvbWFpbmJpbmRpbmcpOwotIAotICAgICAgIGlmIChyZXR2YWwtPmRhdGEgIT0gTlVMTCkKLSAJcmV0dXJuIHJldHZhbDsKLUBAIC0xMjcsNyArMTAyLDcgQEAKLSAgICAgICBmb3IgKGNudCA9IDA7IHJldHZhbC0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCi0gCXsKLSAJICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGVjaWRlZCA9PSAwKQotLQkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdKTsKLSsJICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSwgZG9tYWluYmluZGluZyk7Ci0gCi0gCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRhdGEgIT0gTlVMTCkKLSAJICAgIGJyZWFrOwotQEAgLTE0MiwxMiArMTE3LDE4IEBACi0gICBhbGlhc192YWx1ZSA9IF9ubF9leHBhbmRfYWxpYXMgKGxvY2FsZSk7Ci0gICBpZiAoYWxpYXNfdmFsdWUgIT0gTlVMTCkKLSAgICAgewotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLSsgICAgICBsb2NhbGUgPSBzdHJkdXAgKGFsaWFzX3ZhbHVlKTsKLSsgICAgICBpZiAobG9jYWxlID09IE5VTEwpCi0rCXJldHVybiBOVUxMOwotKyNlbHNlCi0gICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoYWxpYXNfdmFsdWUpICsgMTsKLSAgICAgICBsb2NhbGUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0gICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMKQotIAlyZXR1cm4gTlVMTDsKLSAKLSAgICAgICBtZW1jcHkgKGxvY2FsZSwgYWxpYXNfdmFsdWUsIGxlbik7Ci0rI2VuZGlmCi0gICAgIH0KLSAKLSAgIC8qIE5vdyB3ZSBkZXRlcm1pbmUgdGhlIHNpbmdsZSBwYXJ0cyBvZiB0aGUgbG9jYWxlIG5hbWUuICBGaXJzdAotQEAgLTE2OCwxNCArMTQ5LDE0IEBACi0gICAgIHJldHVybiBOVUxMOwotIAotICAgaWYgKHJldHZhbC0+ZGVjaWRlZCA9PSAwKQotLSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbCk7Ci0rICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLCBkb21haW5iaW5kaW5nKTsKLSAgIGlmIChyZXR2YWwtPmRhdGEgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGludCBjbnQ7Ci0gICAgICAgZm9yIChjbnQgPSAwOyByZXR2YWwtPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQotIAl7Ci0gCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRlY2lkZWQgPT0gMCkKLS0JICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSk7Ci0rCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0sIGRvbWFpbmJpbmRpbmcpOwotIAkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kYXRhICE9IE5VTEwpCi0gCSAgICBicmVhazsKLSAJfQotQEAgLTE4NSw1ICsxNjYsMjcgQEAKLSAgIGlmIChhbGlhc192YWx1ZSAhPSBOVUxMKQotICAgICBmcmVlIChsb2NhbGUpOwotIAotKyAgLyogVGhlIHNwYWNlIGZvciBub3JtYWxpemVkX2NvZGVzZXQgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiAgRnJlZSBpdC4gICovCi0rICBpZiAobWFzayAmIFhQR19OT1JNX0NPREVTRVQpCi0rICAgIGZyZWUgKCh2b2lkICopIG5vcm1hbGl6ZWRfY29kZXNldCk7Ci0rCi0gICByZXR1cm4gcmV0dmFsOwotIH0KLSsKLSsKLSsjaWZkZWYgX0xJQkMKLStsaWJjX2ZyZWVyZXNfZm4gKGZyZWVfbWVtKQotK3sKLSsgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJ1bnAgPSBfbmxfbG9hZGVkX2RvbWFpbnM7Ci0rCi0rICB3aGlsZSAocnVucCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqaGVyZSA9IHJ1bnA7Ci0rICAgICAgaWYgKHJ1bnAtPmRhdGEgIT0gTlVMTCkKLSsJX25sX3VubG9hZF9kb21haW4gKChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBydW5wLT5kYXRhKTsKLSsgICAgICBydW5wID0gcnVucC0+bmV4dDsKLSsgICAgICBmcmVlICgoY2hhciAqKSBoZXJlLT5maWxlbmFtZSk7Ci0rICAgICAgZnJlZSAoaGVyZSk7Ci0rICAgIH0KLSt9Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQyMDczODIwOCAtMDQwMAotQEAgLTEsMTkgKzEsMjAgQEAKLS0vKiBJbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0KDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIEltcGxlbWVudGF0aW9uIG9mIGdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLUBAIC0yMywyMSArMjQsMTQgQEAKLSAjIGRlZmluZSBfX25lZWRfTlVMTAotICMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2Vsc2UKLS0jIGlmZGVmIFNURENfSEVBREVSUwotLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgkJLyogSnVzdCBmb3IgTlVMTC4gICovCi0tIyBlbHNlCi0tIyAgaWZkZWYgSEFWRV9TVFJJTkdfSAotLSMgICBpbmNsdWRlIDxzdHJpbmcuaD4KLS0jICBlbHNlCi0tIyAgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQotLSMgIGVuZGlmCi0tIyBlbmRpZgotKyMgaW5jbHVkZSA8c3RkbGliLmg+CQkvKiBKdXN0IGZvciBOVUxMLiAgKi8KLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAjaWZkZWYgX0xJQkMKLSAjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLUBAIC00OCwyMCArNDIsMTkgQEAKLSAgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotICNpZmRlZiBfTElCQwotICMgZGVmaW5lIEdFVFRFWFQgX19nZXR0ZXh0Ci0tIyBkZWZpbmUgREdFVFRFWFQgX19kZ2V0dGV4dAotKyMgZGVmaW5lIERDR0VUVEVYVCBJTlRVU0UoX19kY2dldHRleHQpCi0gI2Vsc2UKLS0jIGRlZmluZSBHRVRURVhUIGdldHRleHRfXwotLSMgZGVmaW5lIERHRVRURVhUIGRnZXR0ZXh0X18KLSsjIGRlZmluZSBHRVRURVhUIGxpYmludGxfZ2V0dGV4dAotKyMgZGVmaW5lIERDR0VUVEVYVCBsaWJpbnRsX2RjZ2V0dGV4dAotICNlbmRpZgotIAotIC8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0gICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKLSAgICB0ZXh0KS4gICovCi0gY2hhciAqCi0tR0VUVEVYVCAobXNnaWQpCi0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLStHRVRURVhUIChjb25zdCBjaGFyICptc2dpZCkKLSB7Ci0tICByZXR1cm4gREdFVFRFWFQgKE5VTEwsIG1zZ2lkKTsKLSsgIHJldHVybiBEQ0dFVFRFWFQgKE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUyk7Ci0gfQotIAotICNpZmRlZiBfTElCQwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2dldHRleHQuaAkxOTk4LTA0LTI2IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDEwNSArMCwwIEBACi0tLyogSW50ZXJuYWwgaGVhZGVyIGZvciBHTlUgZ2V0dGV4dCBpbnRlcm5hdGlvbmFsaXphdGlvbiBmdW5jdGlvbnMKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCi0tICAgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotLSAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLS0KLS0jaWZuZGVmIF9HRVRURVhUX0gKLS0jZGVmaW5lIF9HRVRURVhUX0ggMQotLQotLSNpbmNsdWRlIDxzdGRpby5oPgotLQotLSNpZiBIQVZFX0xJTUlUU19IIHx8IF9MSUJDCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZW5kaWYKLS0KLS0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0tCi0tLyogVGhlIG1hZ2ljIG51bWJlciBvZiB0aGUgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQuICAqLwotLSNkZWZpbmUgX01BR0lDIDB4OTUwNDEyZGUKLS0jZGVmaW5lIF9NQUdJQ19TV0FQUEVEIDB4ZGUxMjA0OTUKLS0KLS0vKiBSZXZpc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnRseSB1c2VkIC5tbyAoYmluYXJ5KSBmaWxlIGZvcm1hdC4gICovCi0tI2RlZmluZSBNT19SRVZJU0lPTl9OVU1CRVIgMAotLQotLS8qIFRoZSBmb2xsb3dpbmcgY29udG9ydGlvbnMgYXJlIGFuIGF0dGVtcHQgdG8gdXNlIHRoZSBDIHByZXByb2Nlc3NvcgotLSAgIHRvIGRldGVybWluZSBhbiB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlIHRoYXQgaXMgMzIgYml0cyB3aWRlLiAgQW4KLS0gICBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0byB1c2UgYXV0b2NvbmYncyBBQ19DSEVDS19TSVpFT0YgbWFjcm8sIGJ1dAotLSAgIGRvaW5nIHRoYXQgd291bGQgcmVxdWlyZSB0aGF0IHRoZSBjb25maWd1cmUgc2NyaXB0IGNvbXBpbGUgYW5kICpydW4qCi0tICAgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlLiAgTG9jYWxseSBydW5uaW5nIGNyb3NzLWNvbXBpbGVkIGV4ZWN1dGFibGVzCi0tICAgaXMgdXN1YWxseSBub3QgcG9zc2libGUuICAqLwotLQotLSNpZiBfX1NURENfXwotLSMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgNDI5NDk2NzI5NVUKLS0jZWxzZQotLSMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgMHhGRkZGRkZGRgotLSNlbmRpZgotLQotLS8qIElmIFVJTlRfTUFYIGlzbid0IGRlZmluZWQsIGFzc3VtZSBpdCdzIGEgMzItYml0IHR5cGUuCi0tICAgVGhpcyBzaG91bGQgYmUgdmFsaWQgZm9yIGFsbCBzeXN0ZW1zIEdOVSBjYXJlcyBhYm91dCBiZWNhdXNlCi0tICAgdGhhdCBkb2Vzbid0IGluY2x1ZGUgMTYtYml0IHN5c3RlbXMsIGFuZCBvbmx5IG1vZGVybiBzeXN0ZW1zCi0tICAgKHRoYXQgY2VydGFpbmx5IGhhdmUgPGxpbWl0cy5oPikgaGF2ZSA2NCstYml0IGludGVncmFsIHR5cGVzLiAgKi8KLS0KLS0jaWZuZGVmIFVJTlRfTUFYCi0tIyBkZWZpbmUgVUlOVF9NQVggVUlOVF9NQVhfMzJfQklUUwotLSNlbmRpZgotLQotLSNpZiBVSU5UX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0tdHlwZWRlZiB1bnNpZ25lZCBubHNfdWludDMyOwotLSNlbHNlCi0tIyBpZiBVU0hSVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbmxzX3VpbnQzMjsKLS0jIGVsc2UKLS0jICBpZiBVTE9OR19NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBubHNfdWludDMyOwotLSMgIGVsc2UKLS0gIC8qIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBpbnRlbmRlZCB0byB0aHJvdyBhbiBlcnJvci4gIFVzaW5nICNlcnJvciBpcwotLSAgICAgbm90IHBvcnRhYmxlIGVub3VnaC4gICovCi0tICAiQ2Fubm90IGRldGVybWluZSB1bnNpZ25lZCAzMi1iaXQgZGF0YSB0eXBlLiIKLS0jICBlbmRpZgotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0KLS0vKiBIZWFkZXIgZm9yIGJpbmFyeSAubW8gZmlsZSBmb3JtYXQuICAqLwotLXN0cnVjdCBtb19maWxlX2hlYWRlcgotLXsKLS0gIC8qIFRoZSBtYWdpYyBudW1iZXIuICAqLwotLSAgbmxzX3VpbnQzMiBtYWdpYzsKLS0gIC8qIFRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGZpbGUgZm9ybWF0LiAgKi8KLS0gIG5sc191aW50MzIgcmV2aXNpb247Ci0tICAvKiBUaGUgbnVtYmVyIG9mIHN0cmluZ3MgcGFpcnMuICAqLwotLSAgbmxzX3VpbnQzMiBuc3RyaW5nczsKLS0gIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2Ygb3JpZ2luYWwgc3RyaW5ncy4gICovCi0tICBubHNfdWludDMyIG9yaWdfdGFiX29mZnNldDsKLS0gIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2YgdHJhbnNsYXRpb24gc3RyaW5ncy4gICovCi0tICBubHNfdWludDMyIHRyYW5zX3RhYl9vZmZzZXQ7Ci0tICAvKiBTaXplIG9mIGhhc2hpbmcgdGFibGUuICAqLwotLSAgbmxzX3VpbnQzMiBoYXNoX3RhYl9zaXplOwotLSAgLyogT2Zmc2V0IG9mIGZpcnN0IGhhc2hpbmcgZW50cnkuICAqLwotLSAgbmxzX3VpbnQzMiBoYXNoX3RhYl9vZmZzZXQ7Ci0tfTsKLS0KLS1zdHJ1Y3Qgc3RyaW5nX2Rlc2MKLS17Ci0tICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZy4gICovCi0tICBubHNfdWludDMyIGxlbmd0aDsKLS0gIC8qIE9mZnNldCBvZiBzdHJpbmcgaW4gZmlsZS4gICovCi0tICBubHNfdWludDMyIG9mZnNldDsKLS19OwotLQotLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotLQotLSNlbmRpZgkvKiBnZXR0ZXh0LmggICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZ2V0dGV4dFAuaAkxOTk4LTA0LTI2IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0UC5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDI2NzM3Mjk2IC0wNDAwCi1AQCAtMSwzMyArMSw1MyBAQAotLS8qIEhlYWRlciBkZXNjcmliaW5nIGludGVybmFscyBvZiBnZXR0ZXh0IGxpYnJhcnkKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogSGVhZGVyIGRlc2NyaWJpbmcgaW50ZXJuYWxzIG9mIGxpYmludGwgbGlicmFyeS4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZm5kZWYgX0dFVFRFWFRQX0gKLSAjZGVmaW5lIF9HRVRURVhUUF9ICi0gCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgkJLyogR2V0IHNpemVfdC4gICovCi0rCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlICIuLi9pY29udi9nY29udl9pbnQuaCIKLSsjZWxzZQotKyMgaWYgSEFWRV9JQ09OVgotKyMgIGluY2x1ZGUgPGljb252Lmg+Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotICNpbmNsdWRlICJsb2FkaW5mby5oIgotIAotKyNpbmNsdWRlICJnbW8uaCIJCS8qIEdldCBubHNfdWludDMyLiAgKi8KLSsKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0tI2lmbmRlZiBQQVJBTVMKLS0jIGlmIF9fU1REQ19fCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQotLSMgZW5kaWYKLSsjaWZuZGVmIGludGVybmFsX2Z1bmN0aW9uCi0rIyBkZWZpbmUgaW50ZXJuYWxfZnVuY3Rpb24KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIGF0dHJpYnV0ZV9oaWRkZW4KLSsjIGRlZmluZSBhdHRyaWJ1dGVfaGlkZGVuCi0rI2VuZGlmCi0rCi0rLyogVGVsbCB0aGUgY29tcGlsZXIgd2hlbiBhIGNvbmRpdGlvbmFsIG9yIGludGVnZXIgZXhwcmVzc2lvbiBpcwotKyAgIGFsbW9zdCBhbHdheXMgdHJ1ZSBvciBhbG1vc3QgYWx3YXlzIGZhbHNlLiAgKi8KLSsjaWZuZGVmIEhBVkVfQlVJTFRJTl9FWFBFQ1QKLSsjIGRlZmluZSBfX2J1aWx0aW5fZXhwZWN0KGV4cHIsIHZhbCkgKGV4cHIpCi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBXCi1AQCAtMzUsMzggKzU1LDE2MCBAQAotICNlbmRpZgotIAotIAotLXN0YXRpYyBubHNfdWludDMyIFNXQVAgUEFSQU1TICgobmxzX3VpbnQzMiBpKSk7Ci0tCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxieXRlc3dhcC5oPgotKyMgZGVmaW5lIFNXQVAoaSkgYnN3YXBfMzIgKGkpCi0rI2Vsc2UKLSBzdGF0aWMgaW5saW5lIG5sc191aW50MzIKLSBTV0FQIChpKQotICAgICAgbmxzX3VpbnQzMiBpOwotIHsKLSAgIHJldHVybiAoaSA8PCAyNCkgfCAoKGkgJiAweGZmMDApIDw8IDgpIHwgKChpID4+IDgpICYgMHhmZjAwKSB8IChpID4+IDI0KTsKLSB9Ci0rI2VuZGlmCi0rCi0gCi0rLyogSW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIG9mIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nLiAgKi8KLStzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjCi0rewotKyAgLyogTGVuZ3RoIG9mIGFkZHJlc3NlZCBzdHJpbmcsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KLSsgIHNpemVfdCBsZW5ndGg7Ci0rICAvKiBQb2ludGVyIHRvIGFkZHJlc3NlZCBzdHJpbmcuICAqLwotKyAgY29uc3QgY2hhciAqcG9pbnRlcjsKLSt9OwotIAotKy8qIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBvcGVuZWQgbWVzc2FnZSBjYXRhbG9nLiAgKi8KLSBzdHJ1Y3QgbG9hZGVkX2RvbWFpbgotIHsKLSsgIC8qIFBvaW50ZXIgdG8gbWVtb3J5IGNvbnRhaW5pbmcgdGhlIC5tbyBmaWxlLiAgKi8KLSAgIGNvbnN0IGNoYXIgKmRhdGE7Ci0rICAvKiAxIGlmIHRoZSBtZW1vcnkgaXMgbW1hcCgpZWQsIDAgaWYgdGhlIG1lbW9yeSBpcyBtYWxsb2MoKWVkLiAgKi8KLSsgIGludCB1c2VfbW1hcDsKLSsgIC8qIFNpemUgb2YgbW1hcCgpZWQgbWVtb3J5LiAgKi8KLSsgIHNpemVfdCBtbWFwX3NpemU7Ci0rICAvKiAxIGlmIHRoZSAubW8gZmlsZSB1c2VzIGEgZGlmZmVyZW50IGVuZGlhbm5lc3MgdGhhbiB0aGlzIG1hY2hpbmUuICAqLwotICAgaW50IG11c3Rfc3dhcDsKLSsgIC8qIFBvaW50ZXIgdG8gYWRkaXRpb25hbCBtYWxsb2MoKWVkIG1lbW9yeS4gICovCi0rICB2b2lkICptYWxsb2NlZDsKLSsKLSsgIC8qIE51bWJlciBvZiBzdGF0aWMgc3RyaW5ncyBwYWlycy4gICovCi0gICBubHNfdWludDMyIG5zdHJpbmdzOwotLSAgc3RydWN0IHN0cmluZ19kZXNjICpvcmlnX3RhYjsKLS0gIHN0cnVjdCBzdHJpbmdfZGVzYyAqdHJhbnNfdGFiOwotKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiBvcmlnaW5hbCBzdHJpbmdzIGluIHRoZSBmaWxlLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCBzdHJpbmdfZGVzYyAqb3JpZ190YWI7Ci0rICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIHRyYW5zbGF0ZWQgc3RyaW5ncyBpbiB0aGUgZmlsZS4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKnRyYW5zX3RhYjsKLSsKLSsgIC8qIE51bWJlciBvZiBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MgcGFpcnMuICAqLwotKyAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zdHJpbmdzOwotKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiBvcmlnaW5hbCBzeXNkZXAgc3RyaW5ncy4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICpvcmlnX3N5c2RlcF90YWI7Ci0rICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIHRyYW5zbGF0ZWQgc3lzZGVwIHN0cmluZ3MuICAqLwotKyAgY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqdHJhbnNfc3lzZGVwX3RhYjsKLSsKLSsgIC8qIFNpemUgb2YgaGFzaCB0YWJsZS4gICovCi0gICBubHNfdWludDMyIGhhc2hfc2l6ZTsKLS0gIG5sc191aW50MzIgKmhhc2hfdGFiOwotKyAgLyogUG9pbnRlciB0byBoYXNoIHRhYmxlLiAgKi8KLSsgIGNvbnN0IG5sc191aW50MzIgKmhhc2hfdGFiOwotKyAgLyogMSBpZiB0aGUgaGFzaCB0YWJsZSB1c2VzIGEgZGlmZmVyZW50IGVuZGlhbm5lc3MgdGhhbiB0aGlzIG1hY2hpbmUuICAqLwotKyAgaW50IG11c3Rfc3dhcF9oYXNoX3RhYjsKLSsKLSsgIGludCBjb2Rlc2V0X2NudHI7Ci0rI2lmZGVmIF9MSUJDCi0rICBfX2djb252X3QgY29udjsKLSsjZWxzZQotKyMgaWYgSEFWRV9JQ09OVgotKyAgaWNvbnZfdCBjb252OwotKyMgZW5kaWYKLSsjZW5kaWYKLSsgIGNoYXIgKipjb252X3RhYjsKLSsKLSsgIHN0cnVjdCBleHByZXNzaW9uICpwbHVyYWw7Ci0rICB1bnNpZ25lZCBsb25nIGludCBucGx1cmFsczsKLSB9OwotIAotKy8qIFdlIHdhbnQgdG8gYWxsb2NhdGUgYSBzdHJpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0LiAgQnV0IElTTyBDCi0rICAgZG9lc24ndCBhbGxvdyB6ZXJvIHNpemVkIGFycmF5cy4gICovCi0rI2lmZGVmIF9fR05VQ19fCi0rIyBkZWZpbmUgWkVSTyAwCi0rI2Vsc2UKLSsjIGRlZmluZSBaRVJPIDEKLSsjZW5kaWYKLSsKLSsvKiBBIHNldCBvZiBzZXR0aW5ncyBib3VuZCB0byBhIG1lc3NhZ2UgZG9tYWluLiAgVXNlZCB0byBzdG9yZSBzZXR0aW5ncwotKyAgIGZyb20gYmluZHRleHRkb21haW4oKSBhbmQgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoKS4gICovCi0gc3RydWN0IGJpbmRpbmcKLSB7Ci0gICBzdHJ1Y3QgYmluZGluZyAqbmV4dDsKLS0gIGNoYXIgKmRvbWFpbm5hbWU7Ci0gICBjaGFyICpkaXJuYW1lOwotKyAgaW50IGNvZGVzZXRfY250cjsJLyogSW5jcmVtZW50ZWQgZWFjaCB0aW1lIGNvZGVzZXQgY2hhbmdlcy4gICovCi0rICBjaGFyICpjb2Rlc2V0OwotKyAgY2hhciBkb21haW5uYW1lW1pFUk9dOwotIH07Ci0gCi0tc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2ZpbmRfZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZGlybmFtZSwKLS0JCQkJCQkgY2hhciAqX19sb2NhbGUsCi0tCQkJCQkJIGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOwotLXZvaWQgX25sX2xvYWRfZG9tYWluIFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9fZG9tYWluKSk7Ci0rLyogQSBjb3VudGVyIHdoaWNoIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBzb21lIHByZXZpb3VzIHRyYW5zbGF0aW9ucwotKyAgIGJlY29tZSBpbnZhbGlkLgotKyAgIFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiB0aGUgZXh0ZXJuYWwgQUJJIG9mIHRoZSBHTlUgbGliaW50bC4gICovCi0rZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwotKwotKyNpZm5kZWYgX0xJQkMKLStjb25zdCBjaGFyICpfbmxfbG9jYWxlX25hbWUgKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKTsKLSsjZW5kaWYKLSsKLStzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfZmluZF9kb21haW4gKGNvbnN0IGNoYXIgKl9fZGlybmFtZSwgY2hhciAqX19sb2NhbGUsCi0rCQkJCQkgY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkJIHN0cnVjdCBiaW5kaW5nICpfX2RvbWFpbmJpbmRpbmcpCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSt2b2lkIF9ubF9sb2FkX2RvbWFpbiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX19kb21haW4sCi0rCQkgICAgICBzdHJ1Y3QgYmluZGluZyAqX19kb21haW5iaW5kaW5nKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rdm9pZCBfbmxfdW5sb2FkX2RvbWFpbiAoc3RydWN0IGxvYWRlZF9kb21haW4gKl9fZG9tYWluKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rY29uc3QgY2hhciAqX25sX2luaXRfZG9tYWluX2NvbnYgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9fZG9tYWluX2ZpbGUsCi0rCQkJCSAgc3RydWN0IGxvYWRlZF9kb21haW4gKl9fZG9tYWluLAotKwkJCQkgIHN0cnVjdCBiaW5kaW5nICpfX2RvbWFpbmJpbmRpbmcpCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSt2b2lkIF9ubF9mcmVlX2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqX19kb21haW4pCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSsKLStjaGFyICpfbmxfZmluZF9tc2cgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotKwkJICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nLCBjb25zdCBjaGFyICptc2dpZCwKLSsJCSAgICBzaXplX3QgKmxlbmd0aHApCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSsKLSsjaWZkZWYgX0xJQkMKLStleHRlcm4gY2hhciAqX19nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkKTsKLStleHRlcm4gY2hhciAqX19kZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKTsKLStleHRlcm4gY2hhciAqX19kY2dldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKLSsJCQkgIGludCBfX2NhdGVnb3J5KTsKLStleHRlcm4gY2hhciAqX19uZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSB1bnNpZ25lZCBsb25nIGludCBfX24pOwotK2V4dGVybiBjaGFyICpfX2RuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCSAgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSAgdW5zaWduZWQgbG9uZyBpbnQgbik7Ci0rZXh0ZXJuIGNoYXIgKl9fZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCSAgIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgICB1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KTsKLStleHRlcm4gY2hhciAqX19kY2lnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJICAgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSAgIGludCBfX3BsdXJhbCwgdW5zaWduZWQgbG9uZyBpbnQgX19uLAotKwkJCSAgIGludCBfX2NhdGVnb3J5KTsKLStleHRlcm4gY2hhciAqX190ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpOwotK2V4dGVybiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSk7Ci0rZXh0ZXJuIGNoYXIgKl9fYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJCWNvbnN0IGNoYXIgKl9fY29kZXNldCk7Ci0rI2Vsc2UKLSsvKiBEZWNsYXJlIHRoZSBleHBvcnRlZCBsaWJpbnRsXyogZnVuY3Rpb25zLCBpbiBhIHdheSB0aGF0IGFsbG93cyB1cyB0bwotKyAgIGNhbGwgdGhlbSB1bmRlciB0aGVpciByZWFsIG5hbWUuICAqLwotKyMgdW5kZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rIyB1bmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLStleHRlcm4gY2hhciAqbGliaW50bF9kY2lnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCSBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJCSBpbnQgX19wbHVyYWwsIHVuc2lnbmVkIGxvbmcgaW50IF9fbiwKLSsJCQkJIGludCBfX2NhdGVnb3J5KTsKLSsjZW5kaWYKLSAKLSAvKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLSAKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9nbW8uaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9nbW8uaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQzMTczNjUzNiAtMDQwMAotQEAgLTAsMCArMSwxNDkgQEAKLSsvKiBEZXNjcmlwdGlvbiBvZiBHTlUgbWVzc2FnZSBjYXRhbG9nIGZvcm1hdDogZ2VuZXJhbCBmaWxlIGxheW91dC4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDIwMDAtMjAwMiwgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfR0VUVEVYVF9ICi0rI2RlZmluZSBfR0VUVEVYVF9IIDEKLSsKLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rCi0rLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotKwotKy8qIFRoZSBtYWdpYyBudW1iZXIgb2YgdGhlIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0LiAgKi8KLSsjZGVmaW5lIF9NQUdJQyAweDk1MDQxMmRlCi0rI2RlZmluZSBfTUFHSUNfU1dBUFBFRCAweGRlMTIwNDk1Ci0rCi0rLyogUmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50bHkgdXNlZCAubW8gKGJpbmFyeSkgZmlsZSBmb3JtYXQuICAqLwotKyNkZWZpbmUgTU9fUkVWSVNJT05fTlVNQkVSIDAKLSsjZGVmaW5lIE1PX1JFVklTSU9OX05VTUJFUl9XSVRIX1NZU0RFUF9JIDEKLSsKLSsvKiBUaGUgZm9sbG93aW5nIGNvbnRvcnRpb25zIGFyZSBhbiBhdHRlbXB0IHRvIHVzZSB0aGUgQyBwcmVwcm9jZXNzb3IKLSsgICB0byBkZXRlcm1pbmUgYW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSB0aGF0IGlzIDMyIGJpdHMgd2lkZS4gIEFuCi0rICAgYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gdXNlIGF1dG9jb25mJ3MgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvLCBidXQKLSsgICBhcyBvZiB2ZXJzaW9uIGF1dG9jb25mLTIuMTMsIHRoZSBBQ19DSEVDS19TSVpFT0YgbWFjcm8gZG9lc24ndCB3b3JrCi0rICAgd2hlbiBjcm9zcy1jb21waWxpbmcuICAqLwotKwotKyNpZiBfX1NURENfXwotKyMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgNDI5NDk2NzI5NVUKLSsjZWxzZQotKyMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgMHhGRkZGRkZGRgotKyNlbmRpZgotKwotKy8qIElmIFVJTlRfTUFYIGlzbid0IGRlZmluZWQsIGFzc3VtZSBpdCdzIGEgMzItYml0IHR5cGUuCi0rICAgVGhpcyBzaG91bGQgYmUgdmFsaWQgZm9yIGFsbCBzeXN0ZW1zIEdOVSBjYXJlcyBhYm91dCBiZWNhdXNlCi0rICAgdGhhdCBkb2Vzbid0IGluY2x1ZGUgMTYtYml0IHN5c3RlbXMsIGFuZCBvbmx5IG1vZGVybiBzeXN0ZW1zCi0rICAgKHRoYXQgY2VydGFpbmx5IGhhdmUgPGxpbWl0cy5oPikgaGF2ZSA2NCstYml0IGludGVncmFsIHR5cGVzLiAgKi8KLSsKLSsjaWZuZGVmIFVJTlRfTUFYCi0rIyBkZWZpbmUgVUlOVF9NQVggVUlOVF9NQVhfMzJfQklUUwotKyNlbmRpZgotKwotKyNpZiBVSU5UX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0rdHlwZWRlZiB1bnNpZ25lZCBubHNfdWludDMyOwotKyNlbHNlCi0rIyBpZiBVU0hSVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgbmxzX3VpbnQzMjsKLSsjIGVsc2UKLSsjICBpZiBVTE9OR19NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBubHNfdWludDMyOwotKyMgIGVsc2UKLSsgIC8qIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBpbnRlbmRlZCB0byB0aHJvdyBhbiBlcnJvci4gIFVzaW5nICNlcnJvciBpcwotKyAgICAgbm90IHBvcnRhYmxlIGVub3VnaC4gICovCi0rICAiQ2Fubm90IGRldGVybWluZSB1bnNpZ25lZCAzMi1iaXQgZGF0YSB0eXBlLiIKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsKLSsvKiBIZWFkZXIgZm9yIGJpbmFyeSAubW8gZmlsZSBmb3JtYXQuICAqLwotK3N0cnVjdCBtb19maWxlX2hlYWRlcgotK3sKLSsgIC8qIFRoZSBtYWdpYyBudW1iZXIuICAqLwotKyAgbmxzX3VpbnQzMiBtYWdpYzsKLSsgIC8qIFRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGZpbGUgZm9ybWF0LiAgKi8KLSsgIG5sc191aW50MzIgcmV2aXNpb247Ci0rCi0rICAvKiBUaGUgZm9sbG93aW5nIGFyZSBvbmx5IHVzZWQgaW4gLm1vIGZpbGVzIHdpdGggbWFqb3IgcmV2aXNpb24gMCBvciAxLiAgKi8KLSsKLSsgIC8qIFRoZSBudW1iZXIgb2Ygc3RyaW5ncyBwYWlycy4gICovCi0rICBubHNfdWludDMyIG5zdHJpbmdzOwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiBvcmlnaW5hbCBzdHJpbmdzLiAgKi8KLSsgIG5sc191aW50MzIgb3JpZ190YWJfb2Zmc2V0OwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiB0cmFuc2xhdGVkIHN0cmluZ3MuICAqLwotKyAgbmxzX3VpbnQzMiB0cmFuc190YWJfb2Zmc2V0OwotKyAgLyogU2l6ZSBvZiBoYXNoIHRhYmxlLiAgKi8KLSsgIG5sc191aW50MzIgaGFzaF90YWJfc2l6ZTsKLSsgIC8qIE9mZnNldCBvZiBmaXJzdCBoYXNoIHRhYmxlIGVudHJ5LiAgKi8KLSsgIG5sc191aW50MzIgaGFzaF90YWJfb2Zmc2V0OwotKwotKyAgLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSB1c2VkIGluIC5tbyBmaWxlcyB3aXRoIG1pbm9yIHJldmlzaW9uID49IDEuICAqLwotKwotKyAgLyogVGhlIG51bWJlciBvZiBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnRzLiAgKi8KLSsgIG5sc191aW50MzIgbl9zeXNkZXBfc2VnbWVudHM7Ci0rICAvKiBPZmZzZXQgb2YgdGFibGUgZGVzY3JpYmluZyBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnRzLiAgKi8KLSsgIG5sc191aW50MzIgc3lzZGVwX3NlZ21lbnRzX29mZnNldDsKLSsgIC8qIFRoZSBudW1iZXIgb2Ygc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIHBhaXJzLiAgKi8KLSsgIG5sc191aW50MzIgbl9zeXNkZXBfc3RyaW5nczsKLSsgIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2Ygb3JpZ2luYWwgc3lzZGVwIHN0cmluZ3MuICAqLwotKyAgbmxzX3VpbnQzMiBvcmlnX3N5c2RlcF90YWJfb2Zmc2V0OwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiB0cmFuc2xhdGVkIHN5c2RlcCBzdHJpbmdzLiAgKi8KLSsgIG5sc191aW50MzIgdHJhbnNfc3lzZGVwX3RhYl9vZmZzZXQ7Ci0rfTsKLSsKLSsvKiBEZXNjcmlwdG9yIGZvciBzdGF0aWMgc3RyaW5nIGNvbnRhaW5lZCBpbiB0aGUgYmluYXJ5IC5tbyBmaWxlLiAgKi8KLStzdHJ1Y3Qgc3RyaW5nX2Rlc2MKLSt7Ci0rICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZywgbm90IGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KLSsgIG5sc191aW50MzIgbGVuZ3RoOwotKyAgLyogT2Zmc2V0IG9mIHN0cmluZyBpbiBmaWxlLiAgKi8KLSsgIG5sc191aW50MzIgb2Zmc2V0OwotK307Ci0rCi0rLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSB1c2VkIGluIC5tbyBmaWxlcyB3aXRoIG1pbm9yIHJldmlzaW9uID49IDEuICAqLwotKwotKy8qIERlc2NyaXB0b3IgZm9yIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nIHNlZ21lbnQuICAqLwotK3N0cnVjdCBzeXNkZXBfc2VnbWVudAotK3sKLSsgIC8qIExlbmd0aCBvZiBhZGRyZXNzZWQgc3RyaW5nLCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gICovCi0rICBubHNfdWludDMyIGxlbmd0aDsKLSsgIC8qIE9mZnNldCBvZiBzdHJpbmcgaW4gZmlsZS4gICovCi0rICBubHNfdWludDMyIG9mZnNldDsKLSt9OwotKwotKy8qIERlc2NyaXB0b3IgZm9yIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nLiAgKi8KLStzdHJ1Y3Qgc3lzZGVwX3N0cmluZwotK3sKLSsgIC8qIE9mZnNldCBvZiBzdGF0aWMgc3RyaW5nIHNlZ21lbnRzIGluIGZpbGUuICAqLwotKyAgbmxzX3VpbnQzMiBvZmZzZXQ7Ci0rICAvKiBBbHRlcm5hdGluZyBzZXF1ZW5jZSBvZiBzdGF0aWMgYW5kIHN5c3RlbSBkZXBlbmRlbnQgc2VnbWVudHMuCi0rICAgICBUaGUgbGFzdCBzZWdtZW50IGlzIGEgc3RhdGljIHNlZ21lbnQsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KLSsgIHN0cnVjdCBzZWdtZW50X3BhaXIKLSsgIHsKLSsgICAgLyogU2l6ZSBvZiBzdGF0aWMgc2VnbWVudC4gICovCi0rICAgIG5sc191aW50MzIgc2Vnc2l6ZTsKLSsgICAgLyogUmVmZXJlbmNlIHRvIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nIHNlZ21lbnQsIG9yIH4wIGF0IHRoZSBlbmQuICAqLwotKyAgICBubHNfdWludDMyIHN5c2RlcHJlZjsKLSsgIH0gc2VnbWVudHNbMV07Ci0rfTsKLSsKLSsvKiBNYXJrZXIgZm9yIHRoZSBlbmQgb2YgdGhlIHNlZ21lbnRzW10gYXJyYXkuICBUaGlzIGhhcyB0aGUgdmFsdWUgMHhGRkZGRkZGRiwKLSsgICByZWdhcmRsZXNzIHdoZXRoZXIgJ2ludCcgaXMgMTYgYml0LCAzMiBiaXQsIG9yIDY0IGJpdC4gICovCi0rI2RlZmluZSBTRUdNRU5UU19FTkQgKChubHNfdWludDMyKSB+MCkKLSsKLSsvKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLSsKLSsjZW5kaWYJLyogZ2V0dGV4dC5oICAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2hhc2gtc3RyaW5nLmgJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvaGFzaC1zdHJpbmcuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQzNjczNTc3NiAtMDQwMAotQEAgLTEsMzUgKzEsMjMgQEAKLS0vKiBJbXBsZW1lbnRzIGEgc3RyaW5nIGhhc2hpbmcgZnVuY3Rpb24uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIERlc2NyaXB0aW9uIG9mIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0OiBzdHJpbmcgaGFzaGluZyBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTctMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LAotLSAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLS0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0tCi0tI2lmZGVmIEhBVkVfVkFMVUVTX0gKLS0jIGluY2x1ZGUgPHZhbHVlcy5oPgotLSNlbmRpZgotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLS0jaWZuZGVmIFBBUkFNUwotLSMgaWYgX19TVERDX18KLS0jICBkZWZpbmUgUEFSQU1TKEFyZ3MpIEFyZ3MKLS0jIGVsc2UKLS0jICBkZWZpbmUgUEFSQU1TKEFyZ3MpICgpCi0tIyBlbmRpZgotLSNlbmRpZgotLQotIC8qIFdlIGFzc3VtZSB0byBoYXZlIGB1bnNpZ25lZCBsb25nIGludCcgdmFsdWUgd2l0aCBhdCBsZWFzdCAzMiBiaXRzLiAgKi8KLSAjZGVmaW5lIEhBU0hXT1JEQklUUyAzMgotIAotQEAgLTM3LDExICsyNSw4IEBACi0gLyogRGVmaW5lcyB0aGUgc28gY2FsbGVkIGBoYXNocGp3JyBmdW5jdGlvbiBieSBQLkouIFdlaW5iZXJnZXIKLSAgICBbc2VlIEFoby9TZXRoaS9VbGxtYW4sIENPTVBJTEVSUzogUHJpbmNpcGxlcywgVGVjaG5pcXVlcyBhbmQgVG9vbHMsCi0gICAgMTk4NiwgMTk4NyBCZWxsIFRlbGVwaG9uZSBMYWJvcmF0b3JpZXMsIEluYy5dICAqLwotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGhhc2hfc3RyaW5nIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fc3RyX3BhcmFtKSk7Ci0tCi0tc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCi0taGFzaF9zdHJpbmcgKHN0cl9wYXJhbSkKLS0gICAgIGNvbnN0IGNoYXIgKnN0cl9wYXJhbTsKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgaW50Ci0raGFzaF9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cl9wYXJhbSkKLSB7Ci0gICB1bnNpZ25lZCBsb25nIGludCBodmFsLCBnOwotICAgY29uc3QgY2hhciAqc3RyID0gc3RyX3BhcmFtOwotQEAgLTUxLDggKzM2LDggQEAKLSAgIHdoaWxlICgqc3RyICE9ICdcMCcpCi0gICAgIHsKLSAgICAgICBodmFsIDw8PSA0OwotLSAgICAgIGh2YWwgKz0gKHVuc2lnbmVkIGxvbmcpICpzdHIrKzsKLS0gICAgICBnID0gaHZhbCAmICgodW5zaWduZWQgbG9uZykgMHhmIDw8IChIQVNIV09SREJJVFMgLSA0KSk7Ci0rICAgICAgaHZhbCArPSAodW5zaWduZWQgY2hhcikgKnN0cisrOwotKyAgICAgIGcgPSBodmFsICYgKCh1bnNpZ25lZCBsb25nIGludCkgMHhmIDw8IChIQVNIV09SREJJVFMgLSA0KSk7Ci0gICAgICAgaWYgKGcgIT0gMCkKLSAJewotIAkgIGh2YWwgXj0gZyA+PiAoSEFTSFdPUkRCSVRTIC0gOCk7Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvaW50bC1jb21wYXQuYwkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9pbnRsLWNvbXBhdC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDQxNzM1MDE2IC0wNDAwCi1AQCAtMSw3NiArMSwxMzEgQEAKLSAvKiBpbnRsLWNvbXBhdC5jIC0gU3R1YiBmdW5jdGlvbnMgdG8gY2FsbCBnZXR0ZXh0IGZ1bmN0aW9ucyBmcm9tIEdOVSBnZXR0ZXh0Ci0gICAgTGlicmFyeS4KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMjAwMC0yMDAzIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLWFueSBsYXRlciB2ZXJzaW9uLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0rLyogVGhpcyBmaWxlIHJlZGlyZWN0cyB0aGUgZ2V0dGV4dCBmdW5jdGlvbnMgKHdpdGhvdXQgcHJlZml4KSB0byB0aG9zZQotKyAgIGRlZmluZWQgaW4gdGhlIGluY2x1ZGVkIEdOVSBsaWJpbnRsIGxpYnJhcnkgKHdpdGggImxpYmludGxfIiBwcmVmaXgpLgotKyAgIEl0IGlzIGNvbXBpbGVkIGludG8gbGliaW50bCBpbiBvcmRlciB0byBtYWtlIHRoZSBBTV9HTlVfR0VUVEVYVCB0ZXN0Ci0rICAgb2YgZ2V0dGV4dCA8PSAwLjExLjIgd29yayB3aXRoIHRoZSBsaWJpbnRsIGxpYnJhcnkgPj0gMC4xMS4zIHdoaWNoCi0rICAgaGFzIHRoZSByZWRpcmVjdGlvbnMgcHJpbWFyaWx5IGluIHRoZSA8bGliaW50bC5oPiBpbmNsdWRlIGZpbGUuCi0rICAgSXQgaXMgYWxzbyBjb21waWxlZCBpbnRvIGxpYmdudWludGwgc28gdGhhdCBsaWJnbnVpbnRsLnNvIGNhbiBiZSB1c2VkCi0rICAgYXMgTERfUFJFTE9BRGFibGUgbGlicmFyeSBvbiBnbGliYyBzeXN0ZW1zLCB0byBwcm92aWRlIHRoZSBleHRyYQotKyAgIGZlYXR1cmVzIHRoYXQgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgbGliYyBkb24ndCBoYXZlIChuYW1lbHksIGxvZ2dpbmcpLiAgKi8KLSsKLSAKLSAjdW5kZWYgZ2V0dGV4dAotICN1bmRlZiBkZ2V0dGV4dAotICN1bmRlZiBkY2dldHRleHQKLSsjdW5kZWYgbmdldHRleHQKLSsjdW5kZWYgZG5nZXR0ZXh0Ci0rI3VuZGVmIGRjbmdldHRleHQKLSAjdW5kZWYgdGV4dGRvbWFpbgotICN1bmRlZiBiaW5kdGV4dGRvbWFpbgotKyN1bmRlZiBiaW5kX3RleHRkb21haW5fY29kZXNldAotKwotKwotKy8qIFdoZW4gYnVpbGRpbmcgYSBETEwsIHdlIG11c3QgZXhwb3J0IHNvbWUgZnVuY3Rpb25zLiAgTm90ZSB0aGF0IGJlY2F1c2UKLSsgICB0aGUgZnVuY3Rpb25zIGFyZSBvbmx5IGRlZmluZWQgZm9yIGJpbmFyeSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZQotKyAgIGRvbid0IG5lZWQgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbiBhbnkgY2FzZS4gICovCi0rI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgQlVJTERJTkdfRExMCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVEIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotKyNlbHNlCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVECi0rI2VuZGlmCi0gCi0gCi0rRExMX0VYUE9SVEVECi0gY2hhciAqCi0tYmluZHRleHRkb21haW4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKLStnZXR0ZXh0IChjb25zdCBjaGFyICptc2dpZCkKLSB7Ci0tICByZXR1cm4gYmluZHRleHRkb21haW5fXyAoZG9tYWlubmFtZSwgZGlybmFtZSk7Ci0rICByZXR1cm4gbGliaW50bF9nZXR0ZXh0IChtc2dpZCk7Ci0gfQotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLWRjZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotLSAgICAgaW50IGNhdGVnb3J5OwotK2RnZXR0ZXh0IChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZCkKLSB7Ci0tICByZXR1cm4gZGNnZXR0ZXh0X18gKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSk7Ci0rICByZXR1cm4gbGliaW50bF9kZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQpOwotIH0KLSAKLSAKLStETExfRVhQT1JURUQKLSBjaGFyICoKLS1kZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0rZGNnZXR0ZXh0IChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KQotIHsKLS0gIHJldHVybiBkZ2V0dGV4dF9fIChkb21haW5uYW1lLCBtc2dpZCk7Ci0rICByZXR1cm4gbGliaW50bF9kY2dldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSk7Ci0gfQotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLWdldHRleHQgKG1zZ2lkKQotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0rbmdldHRleHQgKGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuKQotIHsKLS0gIHJldHVybiBnZXR0ZXh0X18gKG1zZ2lkKTsKLSsgIHJldHVybiBsaWJpbnRsX25nZXR0ZXh0IChtc2dpZDEsIG1zZ2lkMiwgbik7Ci0gfQotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLXRleHRkb21haW4gKGRvbWFpbm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotK2RuZ2V0dGV4dCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0gewotLSAgcmV0dXJuIHRleHRkb21haW5fXyAoZG9tYWlubmFtZSk7Ci0rICByZXR1cm4gbGliaW50bF9kbmdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBuKTsKLSt9Ci0rCi0rCi0rRExMX0VYUE9SVEVECi0rY2hhciAqCi0rZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJICAgIGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuLAotKwkgICAgaW50IGNhdGVnb3J5KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RjbmdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBuLCBjYXRlZ29yeSk7Ci0rfQotKwotKwotK0RMTF9FWFBPUlRFRAotK2NoYXIgKgotK3RleHRkb21haW4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdGV4dGRvbWFpbiAoZG9tYWlubmFtZSk7Ci0rfQotKwotKwotK0RMTF9FWFBPUlRFRAotK2NoYXIgKgotK2JpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICpkaXJuYW1lKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluIChkb21haW5uYW1lLCBkaXJuYW1lKTsKLSt9Ci0rCi0rCi0rRExMX0VYUE9SVEVECi0rY2hhciAqCi0rYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmNvZGVzZXQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGRvbWFpbm5hbWUsIGNvZGVzZXQpOwotIH0KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sMTBuZmxpc3QuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sMTBuZmxpc3QuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ1NzczMjU4NCAtMDQwMAotQEAgLTEsNTIgKzEsNDAgQEAKLS0vKiBIYW5kbGUgbGlzdCBvZiBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncwotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvbnRyaWJ1dGVkIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGVsbCBnbGliYydzIDxzdHJpbmcuaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3Igc3RwY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRQkxCi0rI2VuZGlmCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLQotLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIF9HTlVfU09VUkNFCi0tIyAgZGVmaW5lIF9HTlVfU09VUkNFCTEKLS0jIGVuZGlmCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotLSNlbmRpZgotLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBzdHJjaHIKLS0jICBkZWZpbmUgc3RyY2hyIGluZGV4Ci0tIyBlbmRpZgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfQVJHWl9ICi0gIyBpbmNsdWRlIDxhcmd6Lmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLQotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gI2luY2x1ZGUgImxvYWRpbmZvLmgiCi0gCi1AQCAtNjUsMjMgKzUzLDM5IEBACi0gLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCi0gICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotICAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLS0jIGRlZmluZSBzdHBjcHkoZGVzdCwgc3JjKSBfX3N0cGNweShkZXN0LCBzcmMpCi0rIyBpZm5kZWYgc3RwY3B5Ci0rIyAgZGVmaW5lIHN0cGNweShkZXN0LCBzcmMpIF9fc3RwY3B5KGRlc3QsIHNyYykKLSsjIGVuZGlmCi0gI2Vsc2UKLSAjIGlmbmRlZiBIQVZFX1NUUENQWQotLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7Ci0rc3RhdGljIGNoYXIgKnN0cGNweSAoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKTsKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi0rLyogUGF0aG5hbWUgc3VwcG9ydC4KLSsgICBJU1NMQVNIKEMpICAgICAgICAgICB0ZXN0cyB3aGV0aGVyIEMgaXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3Rlci4KLSsgICBJU19BQlNPTFVURV9QQVRIKFApICB0ZXN0cyB3aGV0aGVyIFAgaXMgYW4gYWJzb2x1dGUgcGF0aC4gIElmIGl0IGlzIG5vdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBpdCBtYXkgYmUgY29uY2F0ZW5hdGVkIHRvIGEgZGlyZWN0b3J5IHBhdGhuYW1lLgotKyAqLwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXyB8fCBkZWZpbmVkIF9fRU1YX18gfHwgZGVmaW5lZCBfX0RKR1BQX18KLSsgIC8qIFdpbjMyLCBPUy8yLCBET1MgKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQotKyMgZGVmaW5lIEhBU19ERVZJQ0UoUCkgXAotKyAgICAoKCgoUClbMF0gPj0gJ0EnICYmIChQKVswXSA8PSAnWicpIHx8ICgoUClbMF0gPj0gJ2EnICYmIChQKVswXSA8PSAneicpKSBcCi0rICAgICAmJiAoUClbMV0gPT0gJzonKQotKyMgZGVmaW5lIElTX0FCU09MVVRFX1BBVEgoUCkgKElTU0xBU0ggKChQKVswXSkgfHwgSEFTX0RFVklDRSAoUCkpCi0rI2Vsc2UKLSsgIC8qIFVuaXggKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQotKyMgZGVmaW5lIElTX0FCU09MVVRFX1BBVEgoUCkgSVNTTEFTSCAoKFApWzBdKQotKyNlbmRpZgotKwotIC8qIERlZmluZSBmdW5jdGlvbiB3aGljaCBhcmUgdXN1YWxseSBub3QgYXZhaWxhYmxlLiAgKi8KLSAKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfQ09VTlQKLSAvKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiBBUkdaLiAgKi8KLS1zdGF0aWMgc2l6ZV90IGFyZ3pfY291bnRfXyBQQVJBTVMgKChjb25zdCBjaGFyICphcmd6LCBzaXplX3QgbGVuKSk7Ci0tCi0gc3RhdGljIHNpemVfdAotLWFyZ3pfY291bnRfXyAoYXJneiwgbGVuKQotLSAgICAgY29uc3QgY2hhciAqYXJnejsKLS0gICAgIHNpemVfdCBsZW47Ci0rYXJnel9jb3VudF9fIChjb25zdCBjaGFyICphcmd6LCBzaXplX3QgbGVuKQotIHsKLSAgIHNpemVfdCBjb3VudCA9IDA7Ci0gICB3aGlsZSAobGVuID4gMCkKLUBAIC05NSwxOCArOTksMTcgQEAKLSB9Ci0gIyB1bmRlZiBfX2FyZ3pfY291bnQKLSAjIGRlZmluZSBfX2FyZ3pfY291bnQoYXJneiwgbGVuKSBhcmd6X2NvdW50X18gKGFyZ3osIGxlbikKLSsjZWxzZQotKyMgaWZkZWYgX0xJQkMKLSsjICBkZWZpbmUgX19hcmd6X2NvdW50KGFyZ3osIGxlbikgSU5UVVNFKF9fYXJnel9jb3VudCkgKGFyZ3osIGxlbikKLSsjIGVuZGlmCi0gI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfQ09VTlQgKi8KLSAKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfU1RSSU5HSUZZCi0gLyogTWFrZSAnXDAnIHNlcGFyYXRlZCBhcmcgdmVjdG9yIEFSR1ogcHJpbnRhYmxlIGJ5IGNvbnZlcnRpbmcgYWxsIHRoZSAnXDAncwotICAgIGV4Y2VwdCB0aGUgbGFzdCBpbnRvIHRoZSBjaGFyYWN0ZXIgU0VQLiAgKi8KLS1zdGF0aWMgdm9pZCBhcmd6X3N0cmluZ2lmeV9fIFBBUkFNUyAoKGNoYXIgKmFyZ3osIHNpemVfdCBsZW4sIGludCBzZXApKTsKLS0KLSBzdGF0aWMgdm9pZAotLWFyZ3pfc3RyaW5naWZ5X18gKGFyZ3osIGxlbiwgc2VwKQotLSAgICAgY2hhciAqYXJnejsKLS0gICAgIHNpemVfdCBsZW47Ci0tICAgICBpbnQgc2VwOwotK2FyZ3pfc3RyaW5naWZ5X18gKGNoYXIgKmFyZ3osIHNpemVfdCBsZW4sIGludCBzZXApCi0gewotICAgd2hpbGUgKGxlbiA+IDApCi0gICAgIHsKLUBAIC0xMTksMTcgKzEyMiwxNiBAQAotIH0KLSAjIHVuZGVmIF9fYXJnel9zdHJpbmdpZnkKLSAjIGRlZmluZSBfX2FyZ3pfc3RyaW5naWZ5KGFyZ3osIGxlbiwgc2VwKSBhcmd6X3N0cmluZ2lmeV9fIChhcmd6LCBsZW4sIHNlcCkKLSsjZWxzZQotKyMgaWZkZWYgX0xJQkMKLSsjICBkZWZpbmUgX19hcmd6X3N0cmluZ2lmeShhcmd6LCBsZW4sIHNlcCkgXAotKyAgSU5UVVNFKF9fYXJnel9zdHJpbmdpZnkpIChhcmd6LCBsZW4sIHNlcCkKLSsjIGVuZGlmCi0gI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfU1RSSU5HSUZZICovCi0gCi0gI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX05FWFQKLS1zdGF0aWMgY2hhciAqYXJnel9uZXh0X18gUEFSQU1TICgoY2hhciAqYXJneiwgc2l6ZV90IGFyZ3pfbGVuLAotLQkJCQkgIGNvbnN0IGNoYXIgKmVudHJ5KSk7Ci0tCi0gc3RhdGljIGNoYXIgKgotLWFyZ3pfbmV4dF9fIChhcmd6LCBhcmd6X2xlbiwgZW50cnkpCi0tICAgICBjaGFyICphcmd6OwotLSAgICAgc2l6ZV90IGFyZ3pfbGVuOwotLSAgICAgY29uc3QgY2hhciAqZW50cnk7Ci0rYXJnel9uZXh0X18gKGNoYXIgKmFyZ3osIHNpemVfdCBhcmd6X2xlbiwgY29uc3QgY2hhciAqZW50cnkpCi0gewotICAgaWYgKGVudHJ5KQotICAgICB7Ci1AQCAtMTUwLDExICsxNTIsOCBAQAotIAotIAotIC8qIFJldHVybiBudW1iZXIgb2YgYml0cyBzZXQgaW4gWC4gICovCi0tc3RhdGljIGludCBwb3AgUEFSQU1TICgoaW50IHgpKTsKLS0KLSBzdGF0aWMgaW5saW5lIGludAotLXBvcCAoeCkKLS0gICAgIGludCB4OwotK3BvcCAoaW50IHgpCi0gewotICAgLyogV2UgYXNzdW1lIHRoYXQgbm8gbW9yZSB0aGFuIDE2IGJpdHMgYXJlIHVzZWQuICAqLwotICAgeCA9ICgoeCAmIH4weDU1NTUpID4+IDEpICsgKHggJiAweDU1NTUpOwotQEAgLTE2NywzMSArMTY2LDI3IEBACi0gCi0gDAotIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgotLV9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlybGlzdCwgZGlybGlzdF9sZW4sIG1hc2ssIGxhbmd1YWdlLAotLQkJICAgIHRlcnJpdG9yeSwgY29kZXNldCwgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKLS0JCSAgICBzcG9uc29yLCByZXZpc2lvbiwgZmlsZW5hbWUsIGRvX2FsbG9jYXRlKQotLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3Q7Ci0tICAgICBjb25zdCBjaGFyICpkaXJsaXN0OwotLSAgICAgc2l6ZV90IGRpcmxpc3RfbGVuOwotLSAgICAgaW50IG1hc2s7Ci0tICAgICBjb25zdCBjaGFyICpsYW5ndWFnZTsKLS0gICAgIGNvbnN0IGNoYXIgKnRlcnJpdG9yeTsKLS0gICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQ7Ci0tICAgICBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQ7Ci0tICAgICBjb25zdCBjaGFyICptb2RpZmllcjsKLS0gICAgIGNvbnN0IGNoYXIgKnNwZWNpYWw7Ci0tICAgICBjb25zdCBjaGFyICpzcG9uc29yOwotLSAgICAgY29uc3QgY2hhciAqcmV2aXNpb247Ci0tICAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKLS0gICAgIGludCBkb19hbGxvY2F0ZTsKLStfbmxfbWFrZV9sMTBuZmxpc3QgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0LAotKwkJICAgIGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwKLSsJCSAgICBpbnQgbWFzaywgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKLSsJCSAgICBjb25zdCBjaGFyICpjb2Rlc2V0LCBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQsCi0rCQkgICAgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKnNwZWNpYWwsCi0rCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCi0rCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBkb19hbGxvY2F0ZSkKLSB7Ci0gICBjaGFyICphYnNfZmlsZW5hbWU7Ci0tICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpsYXN0ID0gTlVMTDsKLSsgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsYXN0cDsKLSAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJldHZhbDsKLSAgIGNoYXIgKmNwOwotKyAgc2l6ZV90IGRpcmxpc3RfY291bnQ7Ci0gICBzaXplX3QgZW50cmllczsKLSAgIGludCBjbnQ7Ci0gCi0rICAvKiBJZiBMQU5HVUFHRSBjb250YWlucyBhbiBhYnNvbHV0ZSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbiwgd2UgaWdub3JlCi0rICAgICBESVJMSVNULiAgKi8KLSsgIGlmIChJU19BQlNPTFVURV9QQVRIIChsYW5ndWFnZSkpCi0rICAgIGRpcmxpc3RfbGVuID0gMDsKLSsKLSAgIC8qIEFsbG9jYXRlIHJvb20gZm9yIHRoZSBmdWxsIGZpbGUgbmFtZS4gICovCi0gICBhYnNfZmlsZW5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGRpcmxpc3RfbGVuCi0gCQkJCSAgKyBzdHJsZW4gKGxhbmd1YWdlKQotQEAgLTIwOSw3ICsyMDQsNyBAQAotIAkJCQkgICsgKCgobWFzayAmIENFTl9TUE9OU09SKSAhPSAwCi0gCQkJCSAgICAgIHx8IChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwKQotIAkJCQkgICAgID8gKDEgKyAoKG1hc2sgJiBDRU5fU1BPTlNPUikgIT0gMAotLQkJCQkJICAgICA/IHN0cmxlbiAoc3BvbnNvcikgKyAxIDogMCkKLSsJCQkJCSAgICAgPyBzdHJsZW4gKHNwb25zb3IpIDogMCkKLSAJCQkJCSsgKChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwCi0gCQkJCQkgICA/IHN0cmxlbiAocmV2aXNpb24pICsgMSA6IDApKSA6IDApCi0gCQkJCSAgKyAxICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKTsKLUBAIC0yMTcsMTQgKzIxMiwxNiBAQAotICAgaWYgKGFic19maWxlbmFtZSA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIHJldHZhbCA9IE5VTEw7Ci0tICBsYXN0ID0gTlVMTDsKLS0KLSAgIC8qIENvbnN0cnVjdCBmaWxlIG5hbWUuICAqLwotLSAgbWVtY3B5IChhYnNfZmlsZW5hbWUsIGRpcmxpc3QsIGRpcmxpc3RfbGVuKTsKLS0gIF9fYXJnel9zdHJpbmdpZnkgKGFic19maWxlbmFtZSwgZGlybGlzdF9sZW4sICc6Jyk7Ci0tICBjcCA9IGFic19maWxlbmFtZSArIChkaXJsaXN0X2xlbiAtIDEpOwotLSAgKmNwKysgPSAnLyc7Ci0rICBjcCA9IGFic19maWxlbmFtZTsKLSsgIGlmIChkaXJsaXN0X2xlbiA+IDApCi0rICAgIHsKLSsgICAgICBtZW1jcHkgKGNwLCBkaXJsaXN0LCBkaXJsaXN0X2xlbik7Ci0rICAgICAgX19hcmd6X3N0cmluZ2lmeSAoY3AsIGRpcmxpc3RfbGVuLCBQQVRIX1NFUEFSQVRPUik7Ci0rICAgICAgY3AgKz0gZGlybGlzdF9sZW47Ci0rICAgICAgY3BbLTFdID0gJy8nOwotKyAgICB9Ci0rCi0gICBjcCA9IHN0cGNweSAoY3AsIGxhbmd1YWdlKTsKLSAKLSAgIGlmICgobWFzayAmIFRFUlJJVE9SWSkgIT0gMCkKLUBAIC0yNzEsNyArMjY4LDcgQEAKLSAKLSAgIC8qIExvb2sgaW4gbGlzdCBvZiBhbHJlYWR5IGxvYWRlZCBkb21haW5zIHdoZXRoZXIgaXQgaXMgYWxyZWFkeQotICAgICAgYXZhaWxhYmxlLiAgKi8KLS0gIGxhc3QgPSBOVUxMOwotKyAgbGFzdHAgPSBsMTBuZmlsZV9saXN0OwotICAgZm9yIChyZXR2YWwgPSAqbDEwbmZpbGVfbGlzdDsgcmV0dmFsICE9IE5VTEw7IHJldHZhbCA9IHJldHZhbC0+bmV4dCkKLSAgICAgaWYgKHJldHZhbC0+ZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICB7Ci1AQCAtMjg2LDcgKzI4Myw3IEBACi0gCSAgICBicmVhazsKLSAJICB9Ci0gCi0tCWxhc3QgPSByZXR2YWw7Ci0rCWxhc3RwID0gJnJldHZhbC0+bmV4dDsKLSAgICAgICB9Ci0gCi0gICBpZiAocmV0dmFsICE9IE5VTEwgfHwgZG9fYWxsb2NhdGUgPT0gMCkKLUBAIC0yOTUsNDggKzI5Miw2NiBAQAotICAgICAgIHJldHVybiByZXR2YWw7Ci0gICAgIH0KLSAKLS0gIHJldHZhbCA9IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopCi0tICAgIG1hbGxvYyAoc2l6ZW9mICgqcmV0dmFsKSArIChfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKQotLQkJCQkqICgxIDw8IHBvcCAobWFzaykpCi0tCQkJCSogc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopKSk7Ci0rICBkaXJsaXN0X2NvdW50ID0gKGRpcmxpc3RfbGVuID4gMCA/IF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pIDogMSk7Ci0rCi0rICAvKiBBbGxvY2F0ZSBhIG5ldyBsb2FkZWRfbDEwbmZpbGUuICAqLwotKyAgcmV0dmFsID0KLSsgICAgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikKLSsgICAgbWFsbG9jIChzaXplb2YgKCpyZXR2YWwpCi0rCSAgICArICgoKGRpcmxpc3RfY291bnQgPDwgcG9wIChtYXNrKSkgKyAoZGlybGlzdF9jb3VudCA+IDEgPyAxIDogMCkpCi0rCSAgICAgICAqIHNpemVvZiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKSkpOwotICAgaWYgKHJldHZhbCA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSAgIHJldHZhbC0+ZmlsZW5hbWUgPSBhYnNfZmlsZW5hbWU7Ci0tICByZXR2YWwtPmRlY2lkZWQgPSAoX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgIT0gMQotKwotKyAgLyogV2Ugc2V0IHJldHZhbC0+ZGF0YSB0byBOVUxMIGhlcmU7IGl0IGlzIGZpbGxlZCBpbiBsYXRlci4KLSsgICAgIFNldHRpbmcgcmV0dmFsLT5kZWNpZGVkIHRvIDEgaGVyZSBtZWFucyB0aGF0IHJldHZhbCBkb2VzIG5vdAotKyAgICAgY29ycmVzcG9uZCB0byBhIHJlYWwgZmlsZSAoZGlybGlzdF9jb3VudCA+IDEpIG9yIGlzIG5vdCB3b3J0aAotKyAgICAgbG9va2luZyB1cCAoaWYgYW4gdW5ub3JtYWxpemVkIGNvZGVzZXQgd2FzIHNwZWNpZmllZCkuICAqLwotKyAgcmV0dmFsLT5kZWNpZGVkID0gKGRpcmxpc3RfY291bnQgPiAxCi0gCQkgICAgIHx8ICgobWFzayAmIFhQR19DT0RFU0VUKSAhPSAwCi0gCQkJICYmIChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkgIT0gMCkpOwotICAgcmV0dmFsLT5kYXRhID0gTlVMTDsKLSAKLS0gIGlmIChsYXN0ID09IE5VTEwpCi0tICAgIHsKLS0gICAgICByZXR2YWwtPm5leHQgPSAqbDEwbmZpbGVfbGlzdDsKLS0gICAgICAqbDEwbmZpbGVfbGlzdCA9IHJldHZhbDsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgcmV0dmFsLT5uZXh0ID0gbGFzdC0+bmV4dDsKLS0gICAgICBsYXN0LT5uZXh0ID0gcmV0dmFsOwotLSAgICB9Ci0rICByZXR2YWwtPm5leHQgPSAqbGFzdHA7Ci0rICAqbGFzdHAgPSByZXR2YWw7Ci0gCi0gICBlbnRyaWVzID0gMDsKLS0gIC8qIElmIHRoZSBESVJMSVNUIGlzIGEgcmVhbCBsaXN0IHRoZSBSRVRWQUwgZW50cnkgY29ycmVzcG9uZHMgbm90IHRvCi0tICAgICBhIHJlYWwgZmlsZS4gIFNvIHdlIGhhdmUgdG8gdXNlIHRoZSBESVJMSVNUIHNlcGFyYXRpb24gbWVjaGFuaXNtCi0tICAgICBvZiB0aGUgaW5uZXIgbG9vcC4gICovCi0tICBjbnQgPSBfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKSA9PSAxID8gbWFzayAtIDEgOiBtYXNrOwotLSAgZm9yICg7IGNudCA+PSAwOyAtLWNudCkKLSsgIC8qIFJlY3Vyc2UgdG8gZmlsbCB0aGUgaW5oZXJpdGFuY2UgbGlzdCBvZiBSRVRWQUwuCi0rICAgICBJZiB0aGUgRElSTElTVCBpcyBhIHJlYWwgbGlzdCAoaS5lLiBESVJMSVNUX0NPVU5UID4gMSksIHRoZSBSRVRWQUwKLSsgICAgIGVudHJ5IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSByZWFsIGZpbGU7IHJldHZhbC0+ZmlsZW5hbWUgY29udGFpbnMKLSsgICAgIGNvbG9ucy4gIEluIHRoaXMgY2FzZSB3ZSBsb29wIGFjcm9zcyBhbGwgZWxlbWVudHMgb2YgRElSTElTVCBhbmQKLSsgICAgIGFjcm9zcyBhbGwgYml0IHBhdHRlcm5zIGRvbWluYXRlZCBieSBNQVNLLgotKyAgICAgSWYgdGhlIERJUkxJU1QgaXMgYSBzaW5nbGUgZGlyZWN0b3J5IG9yIGVudGlyZWx5IHJlZHVuZGFudCAoaS5lLgotKyAgICAgRElSTElTVF9DT1VOVCA9PSAxKSwgd2UgbG9vcCBhY3Jvc3MgYWxsIGJpdCBwYXR0ZXJucyBkb21pbmF0ZWQgYnkKLSsgICAgIE1BU0ssIGV4Y2x1ZGluZyBNQVNLIGl0c2VsZi4KLSsgICAgIEluIGVpdGhlciBjYXNlLCB3ZSBsb29wIGRvd24gZnJvbSBNQVNLIHRvIDAuICBUaGlzIGhhcyB0aGUgZWZmZWN0Ci0rICAgICB0aGF0IHRoZSBleHRyYSBiaXRzIGluIHRoZSBsb2NhbGUgbmFtZSBhcmUgZHJvcHBlZCBpbiB0aGlzIG9yZGVyOgotKyAgICAgZmlyc3QgdGhlIG1vZGlmaWVyLCB0aGVuIHRoZSB0ZXJyaXRvcnksIHRoZW4gdGhlIGNvZGVzZXQsIHRoZW4gdGhlCi0rICAgICBub3JtYWxpemVkX2NvZGVzZXQuICAqLwotKyAgZm9yIChjbnQgPSBkaXJsaXN0X2NvdW50ID4gMSA/IG1hc2sgOiBtYXNrIC0gMTsgY250ID49IDA7IC0tY250KQotICAgICBpZiAoKGNudCAmIH5tYXNrKSA9PSAwCi0gCSYmICgoY250ICYgQ0VOX1NQRUNJRklDKSA9PSAwIHx8IChjbnQgJiBYUEdfU1BFQ0lGSUMpID09IDApCi0gCSYmICgoY250ICYgWFBHX0NPREVTRVQpID09IDAgfHwgKGNudCAmIFhQR19OT1JNX0NPREVTRVQpID09IDApKQotICAgICAgIHsKLS0JLyogSXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cyBvZiB0aGUgRElSTElTVC4gICovCi0tCWNoYXIgKmRpciA9IE5VTEw7Ci0rCWlmIChkaXJsaXN0X2NvdW50ID4gMSkKLSsJICB7Ci0rCSAgICAvKiBJdGVyYXRlIG92ZXIgYWxsIGVsZW1lbnRzIG9mIHRoZSBESVJMSVNULiAgKi8KLSsJICAgIGNoYXIgKmRpciA9IE5VTEw7Ci0gCi0tCXdoaWxlICgoZGlyID0gX19hcmd6X25leHQgKChjaGFyICopIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBkaXIpKQotLQkgICAgICAgIT0gTlVMTCkKLSsJICAgIHdoaWxlICgoZGlyID0gX19hcmd6X25leHQgKChjaGFyICopIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBkaXIpKQotKwkJICAgIT0gTlVMTCkKLSsJICAgICAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllcysrXQotKwkJPSBfbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpciwgc3RybGVuIChkaXIpICsgMSwKLSsJCQkJICAgICAgY250LCBsYW5ndWFnZSwgdGVycml0b3J5LCBjb2Rlc2V0LAotKwkJCQkgICAgICBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAotKwkJCQkgICAgICBzcG9uc29yLCByZXZpc2lvbiwgZmlsZW5hbWUsIDEpOwotKwkgIH0KLSsJZWxzZQotIAkgIHJldHZhbC0+c3VjY2Vzc29yW2VudHJpZXMrK10KLS0JICAgID0gX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXIsIHN0cmxlbiAoZGlyKSArIDEsIGNudCwKLS0JCQkJICBsYW5ndWFnZSwgdGVycml0b3J5LCBjb2Rlc2V0LAotKwkgICAgPSBfbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpcmxpc3QsIGRpcmxpc3RfbGVuLAotKwkJCQkgIGNudCwgbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY29kZXNldCwKLSAJCQkJICBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAotIAkJCQkgIHNwb25zb3IsIHJldmlzaW9uLCBmaWxlbmFtZSwgMSk7Ci0gICAgICAgfQotQEAgLTM0NywxMSArMzYyLDEwIEBACi0gDAotIC8qIE5vcm1hbGl6ZSBjb2Rlc2V0IG5hbWUuICBUaGVyZSBpcyBubyBzdGFuZGFyZCBmb3IgdGhlIGNvZGVzZXQKLSAgICBuYW1lcy4gIE5vcm1hbGl6YXRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHVzZSBhbnkgb2YgdGhlIGNvbW1vbgotLSAgIG5hbWVzLiAgKi8KLSsgICBuYW1lcy4gIFRoZSByZXR1cm4gdmFsdWUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBoYXMgdG8gYmUKLSsgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KLSBjb25zdCBjaGFyICoKLS1fbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvZGVzZXQsIG5hbWVfbGVuKQotLSAgICAgY29uc3QgY2hhciAqY29kZXNldDsKLS0gICAgIHNpemVfdCBuYW1lX2xlbjsKLStfbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmNvZGVzZXQsIHNpemVfdCBuYW1lX2xlbikKLSB7Ci0gICBpbnQgbGVuID0gMDsKLSAgIGludCBvbmx5X2RpZ2l0ID0gMTsKLUBAIC0zNjAsMTEgKzM3NCwxMSBAQAotICAgc2l6ZV90IGNudDsKLSAKLSAgIGZvciAoY250ID0gMDsgY250IDwgbmFtZV9sZW47ICsrY250KQotLSAgICBpZiAoaXNhbG51bSAoY29kZXNldFtjbnRdKSkKLSsgICAgaWYgKGlzYWxudW0gKCh1bnNpZ25lZCBjaGFyKSBjb2Rlc2V0W2NudF0pKQotICAgICAgIHsKLSAJKytsZW47Ci0gCi0tCWlmIChpc2FscGhhIChjb2Rlc2V0W2NudF0pKQotKwlpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCi0gCSAgb25seV9kaWdpdCA9IDA7Ci0gICAgICAgfQotIAotQEAgLTM3OCw5ICszOTIsOSBAQAotIAl3cCA9IHJldHZhbDsKLSAKLSAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IG5hbWVfbGVuOyArK2NudCkKLS0JaWYgKGlzYWxwaGEgKGNvZGVzZXRbY250XSkpCi0tCSAgKndwKysgPSB0b2xvd2VyIChjb2Rlc2V0W2NudF0pOwotLQllbHNlIGlmIChpc2RpZ2l0IChjb2Rlc2V0W2NudF0pKQotKwlpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCi0rCSAgKndwKysgPSB0b2xvd2VyICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKTsKLSsJZWxzZSBpZiAoaXNkaWdpdCAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCi0gCSAgKndwKysgPSBjb2Rlc2V0W2NudF07Ci0gCi0gICAgICAgKndwID0gJ1wwJzsKLUBAIC0zOTgsOSArNDEyLDcgQEAKLSAgICB0byBiZSBkZWZpbmVkLiAgKi8KLSAjaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQotIHN0YXRpYyBjaGFyICoKLS1zdHBjcHkgKGRlc3QsIHNyYykKLS0gICAgIGNoYXIgKmRlc3Q7Ci0tICAgICBjb25zdCBjaGFyICpzcmM7Ci0rc3RwY3B5IChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpCi0gewotICAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQotICAgICAvKiBEbyBub3RoaW5nLiAqLyA7Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbGliZ2V0dGV4dC5oCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdldHRleHQuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMTgyICswLDAgQEAKLS0vKiBNZXNzYWdlIGNhdGFsb2dzIGZvciBpbnRlcm5hdGlvbmFsaXphdGlvbi4KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLS0KLS0vKiBCZWNhdXNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBTb2xhcmlzKSB3ZSBzb21ldGltZXMgaGF2ZSB0byBpbmNsdWRlCi0tICAgdGhlIHN5c3RlbXMgbGliaW50bC5oIGFzIHdlbGwgYXMgdGhpcyBmaWxlIHdlIGhhdmUgbW9yZSBjb21wbGV4Ci0tICAgaW5jbHVkZSBwcm90ZWN0aW9uIGFib3ZlLiAgQnV0IHRoZSBzeXN0ZW1zIGhlYWRlciBtaWdodCBwZXJoYXBzIGFsc28KLS0gICBkZWZpbmUgX0xJQklOVExfSCBhbmQgdGhlcmVmb3JlIHdlIGhhdmUgdG8gcHJvdGVjdCB0aGUgZGVmaW5pdGlvbiBoZXJlLiAgKi8KLS0KLS0jaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpIHx8ICFkZWZpbmVkIChfTElCR0VUVEVYVF9IKQotLSNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCkKLS0jIGRlZmluZSBfTElCSU5UTF9ICTEKLS0jZW5kaWYKLS0jZGVmaW5lIF9MSUJHRVRURVhUX0gJMQotLQotLS8qIFdlIGRlZmluZSBhbiBhZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgdGhlIEdOVQotLSAgIGltcGxlbWVudGF0aW9uIG9mIGdldHRleHQuICAqLwotLSNkZWZpbmUgX19VU0VfR05VX0dFVFRFWFQgMQotLQotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS0jaWYgSEFWRV9MT0NBTEVfSAotLSMgaW5jbHVkZSA8bG9jYWxlLmg+Ci0tI2VuZGlmCi0tCi0tCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tZXh0ZXJuICJDIiB7Ci0tI2VuZGlmCi0tCi0tLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotLQotLSNpZm5kZWYgUEFSQU1TCi0tIyBpZiBfX1NURENfXwotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncwotLSMgZWxzZQotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmbmRlZiBOVUxMCi0tIyBpZiAhZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9fR05VQ19fCi0tIyAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCi0tIyBlbHNlCi0tIyAgZGVmaW5lIE5VTEwgKDApCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZiAhSEFWRV9MQ19NRVNTQUdFUwotLS8qIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgYmVoYXZpb3VyIG9mIHRoZSBnZXR0ZXh0KCkgYW5kIGRnZXR0ZXh0KCkKLS0gICBmdW5jdGlvbi4gIEJ1dCBzb21lIHN5c3RlbSBkb2VzIG5vdCBoYXZlIHRoaXMgZGVmaW5lZC4gIERlZmluZSBpdAotLSAgIHRvIGEgZGVmYXVsdCB2YWx1ZS4gICovCi0tIyBkZWZpbmUgTENfTUVTU0FHRVMgKC0xKQotLSNlbmRpZgotLQotLQotLS8qIERlY2xhcmF0aW9ucyBmb3IgZ2V0dGV4dC11c2luZy1jYXRnZXRzIGludGVyZmFjZS4gIERlcml2ZWQgZnJvbQotLSAgIEppbSBNZXllcmluZydzIGxpYmludGwuaC4gICovCi0tc3RydWN0IF9tc2dfZW50Ci0tewotLSAgY29uc3QgY2hhciAqX21zZzsKLS0gIGludCBfbXNnX251bWJlcjsKLS19OwotLQotLQotLSNpZiBIQVZFX0NBVEdFVFMKLS0vKiBUaGVzZSB0d28gdmFyaWFibGVzIGFyZSBkZWZpbmVkIGluIHRoZSBhdXRvbWF0aWNhbGx5IGJ5IHBvLXRvLXRibC5zZWQKLS0gICBnZW5lcmF0ZWQgZmlsZSBgY2F0LWlkLXRibC5jJy4gICovCi0tZXh0ZXJuIGNvbnN0IHN0cnVjdCBfbXNnX2VudCBfbXNnX3RibFtdOwotLWV4dGVybiBpbnQgX21zZ190YmxfbGVuZ3RoOwotLSNlbmRpZgotLQotLQotLS8qIEZvciBhdXRvbWF0aWNhbCBleHRyYWN0aW9uIG9mIG1lc3NhZ2VzIHNvbWV0aW1lcyBubyByZWFsCi0tICAgdHJhbnNsYXRpb24gaXMgbmVlZGVkLiAgSW5zdGVhZCB0aGUgc3RyaW5nIGl0c2VsZiBpcyB0aGUgcmVzdWx0LiAgKi8KLS0jZGVmaW5lIGdldHRleHRfbm9vcChTdHIpIChTdHIpCi0tCi0tLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLS0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAotLSAgIHRleHQpLiAgKi8KLS1leHRlcm4gY2hhciAqZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX21zZ2lkKSk7Ci0tZXh0ZXJuIGNoYXIgKmdldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX21zZ2lkKSk7Ci0tCi0tLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0tICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KLS1leHRlcm4gY2hhciAqZGdldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKSk7Ci0tZXh0ZXJuIGNoYXIgKmRnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotLQkJCQkgY29uc3QgY2hhciAqX19tc2dpZCkpOwotLQotLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQotLSAgIGxvY2FsZS4gICovCi0tZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCi0tCQkJCWludCBfX2NhdGVnb3J5KSk7Ci0tZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLS0JCQkJICBjb25zdCBjaGFyICpfX21zZ2lkLCBpbnQgX19jYXRlZ29yeSkpOwotLQotLQotLS8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgotLSAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCi0tICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCi0tZXh0ZXJuIGNoYXIgKnRleHRkb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7Ci0tZXh0ZXJuIGNoYXIgKnRleHRkb21haW5fXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKLS0KLS0vKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKLS0gICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCi0tZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLS0JCQkJICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpKTsKLS1leHRlcm4gY2hhciAqYmluZHRleHRkb21haW5fXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0tCQkJCSAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpKTsKLS0KLS0jaWYgRU5BQkxFX05MUwotLQotLS8qIFNvbGFyaXMgMi4zIGhhcyB0aGUgZ2V0dGV4dCBmdW5jdGlvbiBidXQgZGNnZXR0ZXh0IGlzIG1pc3NpbmcuCi0tICAgU28gd2Ugb21pdCB0aGlzIG9wdGltaXphdGlvbiBmb3IgU29sYXJpcyAyLjMuICBCVFcsIFNvbGFyaXMgMi40Ci0tICAgaGFzIGRjZ2V0dGV4dC4gICovCi0tIyBpZiAhSEFWRV9DQVRHRVRTICYmICghSEFWRV9HRVRURVhUIHx8IEhBVkVfRENHRVRURVhUKQotLQotLSMgIGRlZmluZSBnZXR0ZXh0KE1zZ2lkKQkJCQkJCSAgICAgIFwKLS0gICAgIGRnZXR0ZXh0IChOVUxMLCBNc2dpZCkKLS0KLS0jICBkZWZpbmUgZGdldHRleHQoRG9tYWlubmFtZSwgTXNnaWQpCQkJCQkgICAgICBcCi0tICAgICBkY2dldHRleHQgKERvbWFpbm5hbWUsIE1zZ2lkLCBMQ19NRVNTQUdFUykKLS0KLS0jICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPj0gNwotLS8qIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gbG9hZG1zZ2NhdC5jLiAgV2UgbmVlZCBhIHNpZ24sCi0tICAgd2hldGhlciBhIG5ldyBjYXRhbG9nIHdhcyBsb2FkZWQsIHdoaWNoIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYWxsCi0tICAgdHJhbnNsYXRpb25zLiAgKi8KLS1leHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0tCi0tIyAgIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KQkJCSAgICAgIFwKLS0gIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKLS0gICAoewkJCQkJCQkJCSAgICAgIFwKLS0gICAgIGNoYXIgKl9fcmVzdWx0OwkJCQkJCQkgICAgICBcCi0tICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AgKE1zZ2lkKSkJCQkJCSAgICAgIFwKLS0gICAgICAgewkJCQkJCQkJICAgICAgXAotLQkgc3RhdGljIGNoYXIgKl9fdHJhbnNsYXRpb25fXzsJCQkJCSAgICAgIFwKLS0JIHN0YXRpYyBpbnQgX19jYXRhbG9nX2NvdW50ZXJfXzsJCQkJICAgICAgXAotLQkgaWYgKCEgX190cmFuc2xhdGlvbl9fIHx8IF9fY2F0YWxvZ19jb3VudGVyX18gIT0gX25sX21zZ19jYXRfY250cikgICAgXAotLQkgICB7CQkJCQkJCQkgICAgICBcCi0tCSAgICAgX190cmFuc2xhdGlvbl9fID0JCQkJCQkgICAgICBcCi0tCSAgICAgICBkY2dldHRleHRfXyAoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KTsJCSAgICAgIFwKLS0JICAgICBfX2NhdGFsb2dfY291bnRlcl9fID0gX25sX21zZ19jYXRfY250cjsJCQkgICAgICBcCi0tCSAgIH0JCQkJCQkJCSAgICAgIFwKLS0JIF9fcmVzdWx0ID0gX190cmFuc2xhdGlvbl9fOwkJCQkJICAgICAgXAotLSAgICAgICB9CQkJCQkJCQkgICAgICBcCi0tICAgICBlbHNlCQkJCQkJCQkgICAgICBcCi0tICAgICAgIF9fcmVzdWx0ID0gZGNnZXR0ZXh0X18gKERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSk7CQkgICAgICBcCi0tICAgICBfX3Jlc3VsdDsJCQkJCQkJCSAgICAgIFwKLS0gICAgfSkpCi0tIyAgZW5kaWYKLS0jIGVuZGlmCi0tCi0tI2Vsc2UKLS0KLS0jIGRlZmluZSBnZXR0ZXh0KE1zZ2lkKSAoTXNnaWQpCi0tIyBkZWZpbmUgZGdldHRleHQoRG9tYWlubmFtZSwgTXNnaWQpIChNc2dpZCkKLS0jIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KSAoTXNnaWQpCi0tIyBkZWZpbmUgdGV4dGRvbWFpbihEb21haW5uYW1lKSB3aGlsZSAoMCkgLyogbm90aGluZyAqLwotLSMgZGVmaW5lIGJpbmR0ZXh0ZG9tYWluKERvbWFpbm5hbWUsIERpcm5hbWUpIHdoaWxlICgwKSAvKiBub3RoaW5nICovCi0tCi0tI2VuZGlmCi0tCi0tLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0tCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tfQotLSNlbmRpZgotLQotLSNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xpYmdudWludGwuaC5pbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9saWJnbnVpbnRsLmguaW4JMjAwNC0wOS0xMiAxNDo0MDozNC40NjI3MzE4MjQgLTA0MDAKLUBAIC0wLDAgKzEsMzgzIEBACi0rLyogTWVzc2FnZSBjYXRhbG9ncyBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfTElCSU5UTF9ICi0rI2RlZmluZSBfTElCSU5UTF9ICTEKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rLyogVGhlIExDX01FU1NBR0VTIGxvY2FsZSBjYXRlZ29yeSBpcyB0aGUgY2F0ZWdvcnkgdXNlZCBieSB0aGUgZnVuY3Rpb25zCi0rICAgZ2V0dGV4dCgpIGFuZCBkZ2V0dGV4dCgpLiAgSXQgaXMgc3BlY2lmaWVkIGluIFBPU0lYLCBidXQgbm90IGluIEFOU0kgQy4KLSsgICBPbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgZGVmaW5lIGl0LCB1c2UgYW4gYXJiaXRyYXJ5IHZhbHVlIGluc3RlYWQuCi0rICAgT24gU29sYXJpcywgPGxvY2FsZS5oPiBkZWZpbmVzIF9fTE9DQUxFX0ggKG9yIF9MT0NBTEVfSCBpbiBTb2xhcmlzIDIuNSkKLSsgICB0aGVuIGluY2x1ZGVzIDxsaWJpbnRsLmg+IChpLmUuIHRoaXMgZmlsZSEpIGFuZCB0aGVuIG9ubHkgZGVmaW5lcwotKyAgIExDX01FU1NBR0VTLiAgVG8gYXZvaWQgYSByZWRlZmluaXRpb24gd2FybmluZywgZG9uJ3QgZGVmaW5lIExDX01FU1NBR0VTCi0rICAgaW4gdGhpcyBjYXNlLiAgKi8KLSsjaWYgIWRlZmluZWQgTENfTUVTU0FHRVMgJiYgIShkZWZpbmVkIF9fTE9DQUxFX0ggfHwgKGRlZmluZWQgX0xPQ0FMRV9IICYmIGRlZmluZWQgX19zdW4pKQotKyMgZGVmaW5lIExDX01FU1NBR0VTIDE3MjkKLSsjZW5kaWYKLSsKLSsvKiBXZSBkZWZpbmUgYW4gYWRkaXRpb25hbCBzeW1ib2wgdG8gc2lnbmFsIHRoYXQgd2UgdXNlIHRoZSBHTlUKLSsgICBpbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0LiAgKi8KLSsjZGVmaW5lIF9fVVNFX0dOVV9HRVRURVhUIDEKLSsKLSsvKiBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdXBwb3J0ZWQgZmlsZSBmb3JtYXRzLiAgUmV0dXJucyB0aGUKLSsgICBtYXhpbXVtIG1pbm9yIHJldmlzaW9uIG51bWJlciBzdXBwb3J0ZWQgZm9yIGEgZ2l2ZW4gbWFqb3IgcmV2aXNpb24uICAqLwotKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04obWFqb3IpIFwKLSsgICgobWFqb3IpID09IDAgPyAxIDogLTEpCi0rCi0rLyogUmVzb2x2ZSBhIHBsYXRmb3JtIHNwZWNpZmljIGNvbmZsaWN0IG9uIERKR1BQLiAgR05VIGdldHRleHQgdGFrZXMKLSsgICBwcmVjZWRlbmNlIG92ZXIgX2NvbmlvX2dldHRleHQuICAqLwotKyNpZmRlZiBfX0RKR1BQX18KLSsjIHVuZGVmIGdldHRleHQKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsKLSsvKiBXZSByZWRpcmVjdCB0aGUgZnVuY3Rpb25zIHRvIHRob3NlIHByZWZpeGVkIHdpdGggImxpYmludGxfIi4gIFRoaXMgaXMKLSsgICBuZWNlc3NhcnksIGJlY2F1c2Ugc29tZSBzeXN0ZW1zIGRlZmluZSBnZXR0ZXh0L3RleHRkb21haW4vLi4uIGluIHRoZSBDCi0rICAgbGlicmFyeSAobmFtZWx5LCBTb2xhcmlzIDIuNCBhbmQgbmV3ZXIsIGFuZCBHTlUgbGliYyAyLjAgYW5kIG5ld2VyKS4KLSsgICBJZiB3ZSB1c2VkIHRoZSB1bnByZWZpeGVkIG5hbWVzLCB0aGVyZSB3b3VsZCBiZSBjYXNlcyB3aGVyZSB0aGUKLSsgICBkZWZpbml0aW9uIGluIHRoZSBDIGxpYnJhcnkgd291bGQgb3ZlcnJpZGUgdGhlIG9uZSBpbiB0aGUgbGliaW50bC5zbwotKyAgIHNoYXJlZCBsaWJyYXJ5LiAgUmVjYWxsIHRoYXQgb24gRUxGIHN5c3RlbXMsIHRoZSBzeW1ib2xzIGFyZSBsb29rZWQKLSsgICB1cCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgotKyAgICAgMS4gaW4gdGhlIGV4ZWN1dGFibGUsCi0rICAgICAyLiBpbiB0aGUgc2hhcmVkIGxpYnJhcmllcyBzcGVjaWZpZWQgb24gdGhlIGxpbmsgY29tbWFuZCBsaW5lLCBpbiBvcmRlciwKLSsgICAgIDMuIGluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIHNoYXJlZCBsaWJyYXJpZXMgc3BlY2lmaWVkIG9uIHRoZSBsaW5rCi0rICAgICAgICBjb21tYW5kIGxpbmUsCi0rICAgICA0LiBpbiB0aGUgZGxvcGVuKCllZCBzaGFyZWQgbGlicmFyaWVzLCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlCi0rICAgICAgICBkbG9wZW4oKWVkLgotKyAgIFRoZSBkZWZpbml0aW9uIGluIHRoZSBDIGxpYnJhcnkgd291bGQgb3ZlcnJpZGUgdGhlIG9uZSBpbiBsaWJpbnRsLnNvIGlmCi0rICAgZWl0aGVyCi0rICAgICAqIC1sYyBpcyBnaXZlbiBvbiB0aGUgbGluayBjb21tYW5kIGxpbmUgYW5kIC1saW50bCBpc24ndCwgb3IKLSsgICAgICogLWxjIGlzIGdpdmVuIG9uIHRoZSBsaW5rIGNvbW1hbmQgbGluZSBiZWZvcmUgLWxpbnRsLCBvcgotKyAgICAgKiBsaWJpbnRsLnNvIGlzIGEgZGVwZW5kZW5jeSBvZiBhIGRsb3BlbigpZWQgc2hhcmVkIGxpYnJhcnkgYnV0IG5vdAotKyAgICAgICBsaW5rZWQgdG8gdGhlIGV4ZWN1dGFibGUgYXQgbGluayB0aW1lLgotKyAgIFNpbmNlIFNvbGFyaXMgZ2V0dGV4dCgpIGJlaGF2ZXMgZGlmZmVyZW50bHkgdGhhbiBHTlUgZ2V0dGV4dCgpLCB0aGlzCi0rICAgd291bGQgYmUgdW5hY2NlcHRhYmxlLgotKwotKyAgIFRoZSByZWRpcmVjdGlvbiBoYXBwZW5zIGJ5IGRlZmF1bHQgdGhyb3VnaCBtYWNyb3MgaW4gQywgc28gdGhhdCAmZ2V0dGV4dAotKyAgIGlzIGluZGVwZW5kZW50IG9mIHRoZSBjb21waWxhdGlvbiB1bml0LCBidXQgdGhyb3VnaCBpbmxpbmUgZnVuY3Rpb25zIGluCi0rICAgQysrLCBpbiBvcmRlciBub3QgdG8gaW50ZXJmZXJlIHdpdGggdGhlIG5hbWUgbWFuZ2xpbmcgb2YgY2xhc3MgZmllbGRzIG9yCi0rICAgY2xhc3MgbWV0aG9kcyBjYWxsZWQgJ2dldHRleHQnLiAgKi8KLSsKLSsvKiBUaGUgdXNlciBjYW4gZGVmaW5lIF9JTlRMX1JFRElSRUNUX0lOTElORSBvciBfSU5UTF9SRURJUkVDVF9NQUNST1MuCi0rICAgSWYgaGUgZG9lc24ndCwgd2UgY2hvb3NlIHRoZSBtZXRob2QuICBBIHRoaXJkIHBvc3NpYmxlIG1ldGhvZCBpcwotKyAgIF9JTlRMX1JFRElSRUNUX0FTTSwgc3VwcG9ydGVkIG9ubHkgYnkgR0NDLiAgKi8KLSsjaWYgIShkZWZpbmVkIF9JTlRMX1JFRElSRUNUX0lOTElORSB8fCBkZWZpbmVkIF9JTlRMX1JFRElSRUNUX01BQ1JPUykKLSsjIGlmIF9fR05VQ19fID49IDIgJiYgIWRlZmluZWQgX19BUFBMRV9DQ19fICYmICFkZWZpbmVkIF9fTUlOR1czMl9fICYmICEoX19HTlVDX18gPT0gMiAmJiBkZWZpbmVkIF9BSVgpICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMpCi0rIyAgZGVmaW5lIF9JTlRMX1JFRElSRUNUX0FTTQotKyMgZWxzZQotKyMgIGlmZGVmIF9fY3BsdXNwbHVzCi0rIyAgIGRlZmluZSBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLSsjICBlbHNlCi0rIyAgIGRlZmluZSBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsvKiBBdXhpbGlhcnkgbWFjcm9zLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfQVNNCi0rIyBkZWZpbmUgX0lOVExfQVNNKGNuYW1lKSBfX2FzbV9fIChfSU5UTF9BU01OQU1FIChfX1VTRVJfTEFCRUxfUFJFRklYX18sICNjbmFtZSkpCi0rIyBkZWZpbmUgX0lOVExfQVNNTkFNRShwcmVmaXgsY25hbWVzdHJpbmcpIF9JTlRMX1NUUklOR0lGWSAocHJlZml4KSBjbmFtZXN0cmluZwotKyMgZGVmaW5lIF9JTlRMX1NUUklOR0lGWShwcmVmaXgpICNwcmVmaXgKLSsjZWxzZQotKyMgZGVmaW5lIF9JTlRMX0FTTShjbmFtZSkKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotKyAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0Ci0rICAgdGV4dCkuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfZ2V0dGV4dCAoX19tc2dpZCk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGdldHRleHQgbGliaW50bF9nZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9nZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLSsgICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmRnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfZGdldHRleHQgKF9fZG9tYWlubmFtZSwgX19tc2dpZCk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGRnZXR0ZXh0IGxpYmludGxfZGdldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqZGdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2RnZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKLSsgICBsb2NhbGUuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kY2dldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKLSsJCQkJaW50IF9fY2F0ZWdvcnkpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqZGNnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCi0rCQkJICAgICAgIGludCBfX2NhdGVnb3J5KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RjZ2V0dGV4dCAoX19kb21haW5uYW1lLCBfX21zZ2lkLCBfX2NhdGVnb3J5KTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgZGNnZXR0ZXh0IGxpYmludGxfZGNnZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAotKwkJCWludCBfX2NhdGVnb3J5KQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZGNnZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsKLSsvKiBTaW1pbGFyIHRvIGBnZXR0ZXh0JyBidXQgc2VsZWN0IHRoZSBwbHVyYWwgZm9ybSBjb3JyZXNwb25kaW5nIHRvIHRoZQotKyAgIG51bWJlciBOLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX19uKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKm5nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX19uKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX25nZXR0ZXh0IChfX21zZ2lkMSwgX19tc2dpZDIsIF9fbik7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIG5nZXR0ZXh0IGxpYmludGxfbmdldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCSAgICAgICB1bnNpZ25lZCBsb25nIGludCBfX24pCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9uZ2V0dGV4dCk7Ci0rI2VuZGlmCi0rCi0rLyogU2ltaWxhciB0byBgZGdldHRleHQnIGJ1dCBzZWxlY3QgdGhlIHBsdXJhbCBmb3JtIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0rICAgbnVtYmVyIE4uICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZDEsCi0rCQkJCWNvbnN0IGNoYXIgKl9fbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBfX24pOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqZG5nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQxLAotKwkJCSAgICAgICBjb25zdCBjaGFyICpfX21zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgX19uKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RuZ2V0dGV4dCAoX19kb21haW5uYW1lLCBfX21zZ2lkMSwgX19tc2dpZDIsIF9fbik7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGRuZ2V0dGV4dCBsaWJpbnRsX2RuZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpkbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQljb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJdW5zaWduZWQgbG9uZyBpbnQgX19uKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZG5nZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsvKiBTaW1pbGFyIHRvIGBkY2dldHRleHQnIGJ1dCBzZWxlY3QgdGhlIHBsdXJhbCBmb3JtIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0rICAgbnVtYmVyIE4uICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kY25nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCSBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJCSB1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmRjbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCQl1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RjbmdldHRleHQgKF9fZG9tYWlubmFtZSwgX19tc2dpZDEsIF9fbXNnaWQyLCBfX24sIF9fY2F0ZWdvcnkpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBkY25nZXR0ZXh0IGxpYmludGxfZGNuZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpkY25nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgdW5zaWduZWQgbG9uZyBpbnQgX19uLCBpbnQgX19jYXRlZ29yeSkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2RjbmdldHRleHQpOwotKyNlbmRpZgotKwotKwotKy8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgotKyAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCi0rICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX3RleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSk7Ci0rc3RhdGljIGlubGluZSBjaGFyICp0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdGV4dGRvbWFpbiAoX19kb21haW5uYW1lKTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgdGV4dGRvbWFpbiBsaWJpbnRsX3RleHRkb21haW4KLSsjZW5kaWYKLStleHRlcm4gY2hhciAqdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfdGV4dGRvbWFpbik7Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCi0rICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9iaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpiaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgICAgY29uc3QgY2hhciAqX19kaXJuYW1lKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluIChfX2RvbWFpbm5hbWUsIF9fZGlybmFtZSk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGJpbmR0ZXh0ZG9tYWluIGxpYmludGxfYmluZHRleHRkb21haW4KLSsjZW5kaWYKLStleHRlcm4gY2hhciAqYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19kaXJuYW1lKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfYmluZHRleHRkb21haW4pOwotKyNlbmRpZgotKwotKy8qIFNwZWNpZnkgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpbiB3aGljaCB0aGUgbWVzc2FnZXMgZnJvbSB0aGUKLSsgICBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIHJldHVybmVkLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJCSAgICAgIGNvbnN0IGNoYXIgKl9fY29kZXNldCk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpiaW5kX3RleHRkb21haW5fY29kZXNldCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkJICAgICBjb25zdCBjaGFyICpfX2NvZGVzZXQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKF9fZG9tYWlubmFtZSwgX19jb2Rlc2V0KTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpiaW5kX3RleHRkb21haW5fY29kZXNldCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgICAgICBjb25zdCBjaGFyICpfX2NvZGVzZXQpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCk7Ci0rI2VuZGlmCi0rCi0rCi0rLyogU3VwcG9ydCBmb3IgZm9ybWF0IHN0cmluZ3Mgd2l0aCBwb3NpdGlvbnMgaW4gKnByaW50ZigpLCBmb2xsb3dpbmcgdGhlCi0rICAgUE9TSVgvWFNJIHNwZWNpZmljYXRpb24uCi0rICAgTm90ZTogVGhlc2UgcmVwbGFjZW1lbnRzIGZvciB0aGUgKnByaW50ZigpIGZ1bmN0aW9ucyBhcmUgdmlzaWJsZSBvbmx5Ci0rICAgaW4gc291cmNlIGZpbGVzIHRoYXQgI2luY2x1ZGUgPGxpYmludGwuaD4gb3IgI2luY2x1ZGUgImdldHRleHQuaCIuCi0rICAgUGFja2FnZXMgdGhhdCB1c2UgKnByaW50ZigpIGluIHNvdXJjZSBmaWxlcyB0aGF0IGRvbid0IHJlZmVyIHRvIF8oKQotKyAgIG9yIGdldHRleHQoKSBidXQgZm9yIHdoaWNoIHRoZSBmb3JtYXQgc3RyaW5nIGNvdWxkIGJlIHRoZSByZXR1cm4gdmFsdWUKLSsgICBvZiBfKCkgb3IgZ2V0dGV4dCgpIG5lZWQgdG8gYWRkIHRoaXMgI2luY2x1ZGUuICBPaCB3ZWxsLiAgKi8KLSsKLSsjaWYgIUBIQVZFX1BPU0lYX1BSSU5URkAKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rLyogR2V0IHZhX2xpc3QuICAqLwotKyNpZiBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIKLSsjIGluY2x1ZGUgPHN0ZGFyZy5oPgotKyNlbHNlCi0rIyBpbmNsdWRlIDx2YXJhcmdzLmg+Ci0rI2VuZGlmCi0rCi0rI3VuZGVmIGZwcmludGYKLSsjZGVmaW5lIGZwcmludGYgbGliaW50bF9mcHJpbnRmCi0rZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdmZwcmludGYKLSsjZGVmaW5lIHZmcHJpbnRmIGxpYmludGxfdmZwcmludGYKLStleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI3VuZGVmIHByaW50ZgotKyNkZWZpbmUgcHJpbnRmIGxpYmludGxfcHJpbnRmCi0rZXh0ZXJuIGludCBwcmludGYgKGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdnByaW50ZgotKyNkZWZpbmUgdnByaW50ZiBsaWJpbnRsX3ZwcmludGYKLStleHRlcm4gaW50IHZwcmludGYgKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI3VuZGVmIHNwcmludGYKLSsjZGVmaW5lIHNwcmludGYgbGliaW50bF9zcHJpbnRmCi0rZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdnNwcmludGYKLSsjZGVmaW5lIHZzcHJpbnRmIGxpYmludGxfdnNwcmludGYKLStleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI2lmIEBIQVZFX1NOUFJJTlRGQAotKwotKyN1bmRlZiBzbnByaW50ZgotKyNkZWZpbmUgc25wcmludGYgbGliaW50bF9zbnByaW50ZgotK2V4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7Ci0rI3VuZGVmIHZzbnByaW50ZgotKyNkZWZpbmUgdnNucHJpbnRmIGxpYmludGxfdnNucHJpbnRmCi0rZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwotKwotKyNlbmRpZgotKwotKyNpZiBASEFWRV9BU1BSSU5URkAKLSsKLSsjdW5kZWYgYXNwcmludGYKLSsjZGVmaW5lIGFzcHJpbnRmIGxpYmludGxfYXNwcmludGYKLStleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7Ci0rI3VuZGVmIHZhc3ByaW50ZgotKyNkZWZpbmUgdmFzcHJpbnRmIGxpYmludGxfdmFzcHJpbnRmCi0rZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI2VuZGlmCi0rCi0rI2lmIEBIQVZFX1dQUklOVEZACi0rCi0rI3VuZGVmIGZ3cHJpbnRmCi0rI2RlZmluZSBmd3ByaW50ZiBsaWJpbnRsX2Z3cHJpbnRmCi0rZXh0ZXJuIGludCBmd3ByaW50ZiAoRklMRSAqLCBjb25zdCB3Y2hhcl90ICosIC4uLik7Ci0rI3VuZGVmIHZmd3ByaW50ZgotKyNkZWZpbmUgdmZ3cHJpbnRmIGxpYmludGxfdmZ3cHJpbnRmCi0rZXh0ZXJuIGludCB2ZndwcmludGYgKEZJTEUgKiwgY29uc3Qgd2NoYXJfdCAqLCB2YV9saXN0KTsKLSsKLSsjdW5kZWYgd3ByaW50ZgotKyNkZWZpbmUgd3ByaW50ZiBsaWJpbnRsX3dwcmludGYKLStleHRlcm4gaW50IHdwcmludGYgKGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKLSsjdW5kZWYgdndwcmludGYKLSsjZGVmaW5lIHZ3cHJpbnRmIGxpYmludGxfdndwcmludGYKLStleHRlcm4gaW50IHZ3cHJpbnRmIChjb25zdCB3Y2hhcl90ICosIHZhX2xpc3QpOwotKwotKyN1bmRlZiBzd3ByaW50ZgotKyNkZWZpbmUgc3dwcmludGYgbGliaW50bF9zd3ByaW50ZgotK2V4dGVybiBpbnQgc3dwcmludGYgKHdjaGFyX3QgKiwgc2l6ZV90LCBjb25zdCB3Y2hhcl90ICosIC4uLik7Ci0rI3VuZGVmIHZzd3ByaW50ZgotKyNkZWZpbmUgdnN3cHJpbnRmIGxpYmludGxfdnN3cHJpbnRmCi0rZXh0ZXJuIGludCB2c3dwcmludGYgKHdjaGFyX3QgKiwgc2l6ZV90LCBjb25zdCB3Y2hhcl90ICosIHZhX2xpc3QpOwotKwotKyNlbmRpZgotKwotKyNlbmRpZgotKwotKwotKy8qIFN1cHBvcnQgZm9yIHJlbG9jYXRhYmxlIHBhY2thZ2VzLiAgKi8KLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGUgcGFja2FnZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rI2RlZmluZSBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeAotK2V4dGVybiB2b2lkCi0rICAgICAgIGxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4IChjb25zdCBjaGFyICpvcmlnX3ByZWZpeCwKLSsJCQkJICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXgpOwotKwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogbGliaW50bC5oICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbGludXgtbXNnLnNlZAkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwxMDAgKzAsMCBAQAotLSMgcG8ybXNnLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gTGludXggc3R5bGUgLm1zZyBmaWxlCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLS0jCi0tIwotLSMgVGhlIGZpcnN0IGRpcmVjdGl2ZSBpbiB0aGUgLm1zZyBzaG91bGQgYmUgdGhlIGRlZmluaXRpb24gb2YgdGhlCi0tIyBtZXNzYWdlIHNldCBudW1iZXIuICBXZSB1c2UgYWx3YXlzIHNldCBudW1iZXIgMS4KLS0jCi0tMSB7Ci0tICBpXAotLSRzZXQgMSAjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBwbzJtc2cuc2VkCi0tICBoCi0tICBzLy4qLzAvCi0tICB4Ci0tfQotLSMKLS0jIE1pdGNoJ3Mgb2xkIGNhdGFsb2cgZm9ybWF0IGRvZXMgbm90IGFsbG93IGNvbW1lbnRzLgotLSMKLS0jIFdlIGNvcHkgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgYXMgYSBjb21tZW50IGludG8gdGhlIC5tc2cgZmlsZS4KLS0jCi0tL15tc2dpZC8gewotLSAgcy9tc2dpZFsgCV0qIi8vCi0tIwotLSMgVGhpcyBkb2VzIG5vdCB3b3JrIG5vdyB3aXRoIHRoZSBuZXcgZm9ybWF0LgotLSMgLyIkLyEgewotLSMgICBzL1xcJC8vCi0tIyAgIHMvJC8gLi4uIChtb3JlIGxpbmVzIGZvbGxvd2luZykiLwotLSMgfQotLSAgeAotLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5Ci0tIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KLS0gIHRkCi0tIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgotLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgotLSAgOmQKLS0gIHMvOVwoXypcKSQvX1wxLwotLSAgdGQKLS0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgotLSAgcy9eXChfKlwpJC8wXDEvCi0tIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCi0tICBzLzhcKF8qXCkkLzlcMS8KLS0gIHMvN1woXypcKSQvOFwxLwotLSAgcy82XChfKlwpJC83XDEvCi0tICBzLzVcKF8qXCkkLzZcMS8KLS0gIHMvNFwoXypcKSQvNVwxLwotLSAgcy8zXChfKlwpJC80XDEvCi0tICBzLzJcKF8qXCkkLzNcMS8KLS0gIHMvMVwoXypcKSQvMlwxLwotLSAgcy8wXChfKlwpJC8xXDEvCi0tIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgotLSAgcy9fLzAvZwotLSAgeAotLSAgRwotLSAgcy9cKC4qXCkiXG5cKFswLTldKlwpLyQgI1wyIE9yaWdpbmFsIE1lc3NhZ2U6KFwxKS9wCi0tfQotLSMKLS0jIFRoZSAubXNnIGZpbGUgY29udGFpbnMsIG90aGVyIHRoZW4gdGhlIC5wbyBmaWxlLCBvbmx5IHRoZSB0cmFuc2xhdGlvbnMKLS0jIGJ1dCBlYWNoIGdpdmVuIGEgdW5pcXVlIElELiAgU3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgYnkgMSBmb3IKLS0jIGVhY2ggbWVzc2FnZSB3ZSBhc3NpZ24gdGhlbSB0byB0aGUgbWVzc2FnZXMuCi0tIyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgLnBvIGZpbGUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY2F0LWlkLXRibC5jIGZpbGUKLS0jICh3aXRoIHBvLXRvLXRibCkgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGhlcmUuICAoQXQgbGVhc3QgdGhlIG9yZGVyCi0tIyBvZiBkZWNsYXJhdGlvbnMgbXVzdCBub3QgYmUgY2hhbmdlZC4pCi0tIwotLS9ebXNnc3RyLyB7Ci0tICBzL21zZ3N0clsgCV0qIlwoLipcKSIvIyBcMS8KLS0jIENsZWFyIHN1YnN0aXR1dGlvbiBmbGFnLgotLSAgdGIKLS0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lLgotLSAgOmIKLS0gIE4KLS0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBjb250aW51YXRpb24gbGluZS4KLS0gIHMvXCguKlxuXCkiXCguKlwpIi9cMVwyLwotLSMgWWVzLCB0aGVuIGJyYW5jaC4KLS0gIHRhCi0tICBQCi0tICBECi0tIyBOb3RlIHRoYXQgRCBpbmNsdWRlcyBhIGp1bXAgdG8gdGhlIHN0YXJ0ISEKLS0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCi0tICA6YQotLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCi0tICBQCi0tIyBXZSBjYW5ub3QgdXNlIEQgaGVyZS4KLS0gIHMvLipcblwoLipcKS9cMS8KLS0gIHRiCi0tfQotLWQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2FkaW5mby5oCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRpbmZvLmgJMjAwNC0wOS0xMiAxNDo0MDozNC40Njg3MzA5MTIgLTA0MDAKLUBAIC0xLDkgKzEsNTQgQEAKLS0jaWZuZGVmIFBBUkFNUwotLSMgaWYgX19TVERDX18KLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpIGFyZ3MKLS0jIGVsc2UKLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpICgpCi0tIyBlbmRpZgotKy8qIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rICAgQ29udHJpYnV0ZWQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTYuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX0xPQURJTkZPX0gKLSsjZGVmaW5lIF9MT0FESU5GT19ICTEKLSsKLSsvKiBEZWNsYXJhdGlvbnMgb2YgbG9jYWxlIGRlcGVuZGVudCBjYXRhbG9nIGxvb2t1cCBmdW5jdGlvbnMuCi0rICAgSW1wbGVtZW50ZWQgaW4KLSsKLSsgICAgIGxvY2FsZWFsaWFzLmMgICAgUG9zc2libHkgcmVwbGFjZSBhIGxvY2FsZSBuYW1lIGJ5IGFub3RoZXIuCi0rICAgICBleHBsb2RlbmFtZS5jICAgIFNwbGl0IGEgbG9jYWxlIG5hbWUgaW50byBpdHMgdmFyaW91cyBmaWVsZHMuCi0rICAgICBsMTBuZmxpc3QuYyAgICAgIEdlbmVyYXRlIGEgbGlzdCBvZiBmaWxlbmFtZXMgb2YgcG9zc2libGUgbWVzc2FnZSBjYXRhbG9ncy4KLSsgICAgIGZpbmRkb21haW4uYyAgICAgRmluZCBhbmQgb3BlbiB0aGUgcmVsZXZhbnQgbWVzc2FnZSBjYXRhbG9ncy4KLSsKLSsgICBUaGUgbWFpbiBmdW5jdGlvbiBfbmxfZmluZF9kb21haW4oKSBpbiBmaW5kZG9tYWluLmMgaXMgZGVjbGFyZWQKLSsgICBpbiBnZXR0ZXh0UC5oLgotKyAqLwotKwotKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KLSsjIGRlZmluZSBpbnRlcm5hbF9mdW5jdGlvbgotKyNlbmRpZgotKwotKy8qIFRlbGwgdGhlIGNvbXBpbGVyIHdoZW4gYSBjb25kaXRpb25hbCBvciBpbnRlZ2VyIGV4cHJlc3Npb24gaXMKLSsgICBhbG1vc3QgYWx3YXlzIHRydWUgb3IgYWxtb3N0IGFsd2F5cyBmYWxzZS4gICovCi0rI2lmbmRlZiBIQVZFX0JVSUxUSU5fRVhQRUNUCi0rIyBkZWZpbmUgX19idWlsdGluX2V4cGVjdChleHByLCB2YWwpIChleHByKQotKyNlbmRpZgotKwotKy8qIFNlcGFyYXRvciBpbiBQQVRIIGxpa2UgbGlzdHMgb2YgcGF0aG5hbWVzLiAgKi8KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzsnCi0rI2Vsc2UKLSsgIC8qIFVuaXggKi8KLSsjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKLSAjZW5kaWYKLSAKLSAvKiBFbmNvZGluZyBvZiBsb2NhbGUgbmFtZSBwYXJ0cy4gICovCi1AQCAtMzIsMjcgKzc3LDY5IEBACi0gfTsKLSAKLSAKLS1leHRlcm4gY29uc3QgY2hhciAqX25sX25vcm1hbGl6ZV9jb2Rlc2V0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKmNvZGVzZXQsCi0tCQkJCQkJICBzaXplX3QgbmFtZV9sZW4pKTsKLSsvKiBOb3JtYWxpemUgY29kZXNldCBuYW1lLiAgVGhlcmUgaXMgbm8gc3RhbmRhcmQgZm9yIHRoZSBjb2Rlc2V0Ci0rICAgbmFtZXMuICBOb3JtYWxpemF0aW9uIGFsbG93cyB0aGUgdXNlciB0byB1c2UgYW55IG9mIHRoZSBjb21tb24KLSsgICBuYW1lcy4gIFRoZSByZXR1cm4gdmFsdWUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBoYXMgdG8gYmUKLSsgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqX25sX25vcm1hbGl6ZV9jb2Rlc2V0IChjb25zdCBjaGFyICpjb2Rlc2V0LAotKwkJCQkJICBzaXplX3QgbmFtZV9sZW4pOwotIAotKy8qIExvb2t1cCBhIGxvY2FsZSBkZXBlbmRlbnQgZmlsZS4KLSsgICAqTDEwTkZJTEVfTElTVCBkZW5vdGVzIGEgcG9vbCBvZiBsb29rdXAgcmVzdWx0cyBvZiBsb2NhbGUgZGVwZW5kZW50Ci0rICAgZmlsZXMgb2YgdGhlIHNhbWUga2luZCwgc29ydGVkIGluIGRlY3JlYXNpbmcgb3JkZXIgb2YgLT5maWxlbmFtZS4KLSsgICBESVJMSVNUIGFuZCBESVJMSVNUX0xFTiBhcmUgYW4gYXJneiBsaXN0IG9mIGRpcmVjdG9yaWVzIGluIHdoaWNoIHRvCi0rICAgbG9vaywgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgZGlyZWN0b3J5IChpLmUuIERJUkxJU1RfTEVOID4gMCkuCi0rICAgTUFTSywgTEFOR1VBR0UsIFRFUlJJVE9SWSwgQ09ERVNFVCwgTk9STUFMSVpFRF9DT0RFU0VULCBNT0RJRklFUiwKLSsgICBTUEVDSUFMLCBTUE9OU09SLCBSRVZJU0lPTiBhcmUgdGhlIHBpZWNlcyBvZiB0aGUgbG9jYWxlIG5hbWUsIGFzCi0rICAgcHJvZHVjZWQgYnkgX25sX2V4cGxvZGVfbmFtZSgpLiAgRklMRU5BTUUgaXMgdGhlIGZpbGVuYW1lIHN1ZmZpeC4KLSsgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBsb29rdXAgcmVzdWx0LCBlaXRoZXIgZm91bmQgaW4gKkwxME5GSUxFX0xJU1QsCi0rICAgb3IgLSBpZiBET19BTExPQ0FURSBpcyBub256ZXJvIC0gZnJlc2hseSBhbGxvY2F0ZWQsIG9yIHBvc3NpYmx5IE5VTEwuCi0rICAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBub24tTlVMTCwgaXQgaXMgYWRkZWQgdG8gKkwxME5GSUxFX0xJU1QsIGFuZAotKyAgIGl0cyAtPm5leHQgZmllbGQgZGVub3RlcyB0aGUgY2hhaW5pbmcgaW5zaWRlICpMMTBORklMRV9MSVNULCBhbmQKLSsgICBmdXJ0aGVybW9yZSBpdHMgLT5zdWNjZXNzb3JbXSBmaWVsZCBjb250YWlucyBhIGxpc3Qgb2Ygb3RoZXIgbG9va3VwCi0rICAgcmVzdWx0cyBmcm9tIHdoaWNoIHRoaXMgbG9va3VwIHJlc3VsdCBpbmhlcml0cy4gICovCi0gZXh0ZXJuIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgotLV9ubF9tYWtlX2wxMG5mbGlzdCBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdCwKLS0JCQkgICAgY29uc3QgY2hhciAqZGlybGlzdCwgc2l6ZV90IGRpcmxpc3RfbGVuLCBpbnQgbWFzaywKLS0JCQkgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKLS0JCQkgICAgY29uc3QgY2hhciAqY29kZXNldCwKLS0JCQkgICAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0LAotLQkJCSAgICBjb25zdCBjaGFyICptb2RpZmllciwgY29uc3QgY2hhciAqc3BlY2lhbCwKLS0JCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCi0tCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpKTsKLStfbmxfbWFrZV9sMTBuZmxpc3QgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0LAotKwkJICAgIGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwgaW50IG1hc2ssCi0rCQkgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKLSsJCSAgICBjb25zdCBjaGFyICpjb2Rlc2V0LCBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQsCi0rCQkgICAgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKnNwZWNpYWwsCi0rCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCi0rCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBkb19hbGxvY2F0ZSk7Ci0gCi0rLyogTG9va3VwIHRoZSByZWFsIGxvY2FsZSBuYW1lIGZvciBhIGxvY2FsZSBhbGlhcyBOQU1FLCBvciBOVUxMIGlmCi0rICAgTkFNRSBpcyBub3QgYSBsb2NhbGUgYWxpYXMgKGJ1dCBwb3NzaWJseSBhIHJlYWwgbG9jYWxlIG5hbWUpLgotKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIG11c3Qgbm90IGJlIGZyZWVkLiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqbmFtZSk7Ci0gCi0tZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgUEFSQU1TICgoY29uc3QgY2hhciAqbmFtZSkpOwotKy8qIFNwbGl0IGEgbG9jYWxlIG5hbWUgTkFNRSBpbnRvIGl0cyBwaWVjZXM6IGxhbmd1YWdlLCBtb2RpZmllciwKLSsgICB0ZXJyaXRvcnksIGNvZGVzZXQsIHNwZWNpYWwsIHNwb25zb3IsIHJldmlzaW9uLgotKyAgIE5BTUUgZ2V0cyBkZXN0cnVjdGl2ZWx5IG1vZGlmaWVkOiBOVUwgYnl0ZXMgYXJlIGluc2VydGVkIGhlcmUgYW5kCi0rICAgdGhlcmUuICAqTEFOR1VBR0UgZ2V0cyBhc3NpZ25lZCBOQU1FLiAgRWFjaCBvZiAqTU9ESUZJRVIsICpURVJSSVRPUlksCi0rICAgKkNPREVTRVQsICpTUEVDSUFMLCAqU1BPTlNPUiwgKlJFVklTSU9OIGdldHMgYXNzaWduZWQgZWl0aGVyIGEKLSsgICBwb2ludGVyIGludG8gdGhlIG9sZCBOQU1FIHN0cmluZywgb3IgTlVMTC4gICpOT1JNQUxJWkVEX0NPREVTRVQKLSsgICBnZXRzIGFzc2lnbmVkIHRoZSBleHBhbmRlZCAqQ09ERVNFVCwgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gKkNPREVTRVQ7Ci0rICAgdGhpcyBvbmUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBoYXMgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlci4KLSsgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgYml0bWFzaywgd2hlcmUgZWFjaCBiaXQgY29ycmVzcG9uZHMgdG8gb25lCi0rICAgZmlsbGVkLWluIHZhbHVlOgotKyAgICAgWFBHX01PRElGSUVSLCBDRU5fQVVESUVOQ0UgIGZvciAqTU9ESUZJRVIsCi0rICAgICBURVJSSVRPUlkgICAgICAgICAgICAgICAgICAgZm9yICpURVJSSVRPUlksCi0rICAgICBYUEdfQ09ERVNFVCAgICAgICAgICAgICAgICAgZm9yICpDT0RFU0VULAotKyAgICAgWFBHX05PUk1fQ09ERVNFVCAgICAgICAgICAgIGZvciAqTk9STUFMSVpFRF9DT0RFU0VULAotKyAgICAgQ0VOX1NQRUNJQUwgICAgICAgICAgICAgICAgIGZvciAqU1BFQ0lBTCwKLSsgICAgIENFTl9TUE9OU09SICAgICAgICAgICAgICAgICBmb3IgKlNQT05TT1IsCi0rICAgICBDRU5fUkVWSVNJT04gICAgICAgICAgICAgICAgZm9yICpSRVZJU0lPTi4KLSsgKi8KLStleHRlcm4gaW50IF9ubF9leHBsb2RlX25hbWUgKGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKiptb2RpZmllciwgY29uc3QgY2hhciAqKnRlcnJpdG9yeSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAotKwkJCSAgICAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldCwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsLCBjb25zdCBjaGFyICoqc3BvbnNvciwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbik7Ci0gCi0tZXh0ZXJuIGludCBfbmxfZXhwbG9kZV9uYW1lIFBBUkFNUyAoKGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXIsCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKnRlcnJpdG9yeSwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqY29kZXNldCwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsLAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcG9uc29yLAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbikpOwotKy8qIFNwbGl0IGEgbG9jYWxlIG5hbWUgTkFNRSBpbnRvIGEgbGVhZGluZyBsYW5ndWFnZSBwYXJ0IGFuZCBhbGwgdGhlCi0rICAgcmVzdC4gIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgbGFuZ3VhZ2UsCi0rICAgaS5lLiB0byB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgcmVzdC4gICovCi0rZXh0ZXJuIGNoYXIgKl9ubF9maW5kX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lKTsKLSsKLSsjZW5kaWYJLyogbG9hZGluZm8uaCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvYWRtc2djYXQuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkbXNnY2F0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC40NzM3MzAxNTIgLTA0MDAKLUBAIC0xLDQyICsxLDQ1NSBAQAotLS8qIExvYWQgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogTG9hZCBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRSAgICAxCi0rI2VuZGlmCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAKLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2lmZGVmIF9fR05VQ19fCi0rIyB1bmRlZiAgYWxsb2NhCi0rIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSsjIGRlZmluZSBIQVZFX0FMTE9DQSAxCi0rI2Vsc2UKLSsjIGlmZGVmIF9NU0NfVkVSCi0rIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0rIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0rIyBlbHNlCi0rIyAgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjICAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0rIyAgZWxzZQotKyMgICBpZmRlZiBfQUlYCi0rICNwcmFnbWEgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmbmRlZiBhbGxvY2EKLStjaGFyICphbGxvY2EgKCk7Ci0rIyAgICBlbmRpZgotKyMgICBlbmRpZgotKyMgIGVuZGlmCi0rIyBlbmRpZgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0gI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCi0gIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAjZW5kaWYKLSAKLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVApIHx8IGRlZmluZWQgX0xJQkMKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxhbmdpbmZvLmg+Ci0rIyBpbmNsdWRlIDxsb2NhbGUuaD4KLSsjZW5kaWYKLSsKLSsjaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotKyAgICB8fCAoZGVmaW5lZCBfTElCQyAmJiBkZWZpbmVkIF9QT1NJWF9NQVBQRURfRklMRVMpCi0gIyBpbmNsdWRlIDxzeXMvbW1hbi5oPgotKyMgdW5kZWYgSEFWRV9NTUFQCi0rIyBkZWZpbmUgSEFWRV9NTUFQCTEKLSsjZWxzZQotKyMgdW5kZWYgSEFWRV9NTUFQCi0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLSsjaWYgZGVmaW5lZCBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCB8fCBkZWZpbmVkIF9MSUJDCi0rIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBIQVZFX0lOVFRZUEVTX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ21vLmgiCi0gI2luY2x1ZGUgImdldHRleHRQLmgiCi0rI2luY2x1ZGUgImhhc2gtc3RyaW5nLmgiCi0rI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKLSsKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgIi4uL2xvY2FsZS9sb2NhbGVpbmZvLmgiCi0rI2VuZGlmCi0rCi0rLyogUHJvdmlkZSBmYWxsYmFjayB2YWx1ZXMgZm9yIG1hY3JvcyB0aGF0IG91Z2h0IHRvIGJlIGRlZmluZWQgaW4gPGludHR5cGVzLmg+LgotKyAgIE5vdGUgdGhhdCBvdXIgZmFsbGJhY2sgdmFsdWVzIG5lZWQgbm90IGJlIGxpdGVyYWwgc3RyaW5ncywgYmVjYXVzZSB3ZSBkb24ndAotKyAgIHVzZSB0aGVtIHdpdGggcHJlcHJvY2Vzc29yIHN0cmluZyBjb25jYXRlbmF0aW9uLiAgKi8KLSsjaWYgIWRlZmluZWQgUFJJZDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWQ4Ci0rIyBkZWZpbmUgUFJJZDggImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWk4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpOAotKyMgZGVmaW5lIFBSSWk4ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJbzgKLSsjIGRlZmluZSBQUklvOCAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXU4Ci0rIyBkZWZpbmUgUFJJdTggInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXg4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4OAotKyMgZGVmaW5lIFBSSXg4ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWDgKLSsjIGRlZmluZSBQUklYOCAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkMTYKLSsjIGRlZmluZSBQUklkMTYgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWkxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaTE2Ci0rIyBkZWZpbmUgUFJJaTE2ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW8xNgotKyMgZGVmaW5lIFBSSW8xNiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1MTYKLSsjIGRlZmluZSBQUkl1MTYgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXgxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeDE2Ci0rIyBkZWZpbmUgUFJJeDE2ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVgxNgotKyMgZGVmaW5lIFBSSVgxNiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkMzIKLSsjIGRlZmluZSBQUklkMzIgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWkzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaTMyCi0rIyBkZWZpbmUgUFJJaTMyICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW8zMgotKyMgZGVmaW5lIFBSSW8zMiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1MzIKLSsjIGRlZmluZSBQUkl1MzIgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXgzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeDMyCi0rIyBkZWZpbmUgUFJJeDMyICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVgzMgotKyMgZGVmaW5lIFBSSVgzMiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkNjQKLSsjIGRlZmluZSBQUklkNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsZCIgOiAibGxkIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaTY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpNjQKLSsjIGRlZmluZSBQUklpNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsaSIgOiAibGxpIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJbzY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvNjQKLSsjIGRlZmluZSBQUklvNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsbyIgOiAibGxvIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1NjQKLSsjIGRlZmluZSBQUkl1NjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsdSIgOiAibGx1IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4NjQKLSsjIGRlZmluZSBQUkl4NjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJseCIgOiAibGx4IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYNjQKLSsjIGRlZmluZSBQUklYNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsWCIgOiAibGxYIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZExFQVNUOAotKyMgZGVmaW5lIFBSSWRMRUFTVDggImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlMRUFTVDgKLSsjIGRlZmluZSBQUklpTEVBU1Q4ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvTEVBU1Q4Ci0rIyBkZWZpbmUgUFJJb0xFQVNUOCAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUxFQVNUOAotKyMgZGVmaW5lIFBSSXVMRUFTVDggInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhMRUFTVDgKLSsjIGRlZmluZSBQUkl4TEVBU1Q4ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYTEVBU1Q4Ci0rIyBkZWZpbmUgUFJJWExFQVNUOCAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRMRUFTVDE2Ci0rIyBkZWZpbmUgUFJJZExFQVNUMTYgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTEVBU1QxNgotKyMgZGVmaW5lIFBSSWlMRUFTVDE2ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0xFQVNUMTYKLSsjIGRlZmluZSBQUklvTEVBU1QxNiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVMRUFTVDE2Ci0rIyBkZWZpbmUgUFJJdUxFQVNUMTYgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TEVBU1QxNgotKyMgZGVmaW5lIFBSSXhMRUFTVDE2ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWExFQVNUMTYKLSsjIGRlZmluZSBQUklYTEVBU1QxNiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRMRUFTVDMyCi0rIyBkZWZpbmUgUFJJZExFQVNUMzIgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTEVBU1QzMgotKyMgZGVmaW5lIFBSSWlMRUFTVDMyICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0xFQVNUMzIKLSsjIGRlZmluZSBQUklvTEVBU1QzMiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVMRUFTVDMyCi0rIyBkZWZpbmUgUFJJdUxFQVNUMzIgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TEVBU1QzMgotKyMgZGVmaW5lIFBSSXhMRUFTVDMyICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWExFQVNUMzIKLSsjIGRlZmluZSBQUklYTEVBU1QzMiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRMRUFTVDY0Ci0rIyBkZWZpbmUgUFJJZExFQVNUNjQgUFJJZDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTEVBU1Q2NAotKyMgZGVmaW5lIFBSSWlMRUFTVDY0IFBSSWk2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0xFQVNUNjQKLSsjIGRlZmluZSBQUklvTEVBU1Q2NCBQUklvNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVMRUFTVDY0Ci0rIyBkZWZpbmUgUFJJdUxFQVNUNjQgUFJJdTY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TEVBU1Q2NAotKyMgZGVmaW5lIFBSSXhMRUFTVDY0IFBSSXg2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWExFQVNUNjQKLSsjIGRlZmluZSBQUklYTEVBU1Q2NCBQUklYNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkRkFTVDgKLSsjIGRlZmluZSBQUklkRkFTVDggImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUZBU1Q4Ci0rIyBkZWZpbmUgUFJJaUZBU1Q4ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9GQVNUOAotKyMgZGVmaW5lIFBSSW9GQVNUOCAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1RkFTVDgKLSsjIGRlZmluZSBQUkl1RkFTVDggInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeEZBU1Q4Ci0rIyBkZWZpbmUgUFJJeEZBU1Q4ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhGQVNUOAotKyMgZGVmaW5lIFBSSVhGQVNUOCAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZEZBU1QxNgotKyMgZGVmaW5lIFBSSWRGQVNUMTYgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlGQVNUMTYKLSsjIGRlZmluZSBQUklpRkFTVDE2ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvRkFTVDE2Ci0rIyBkZWZpbmUgUFJJb0ZBU1QxNiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUZBU1QxNgotKyMgZGVmaW5lIFBSSXVGQVNUMTYgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhGQVNUMTYKLSsjIGRlZmluZSBQUkl4RkFTVDE2ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYRkFTVDE2Ci0rIyBkZWZpbmUgUFJJWEZBU1QxNiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZEZBU1QzMgotKyMgZGVmaW5lIFBSSWRGQVNUMzIgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlGQVNUMzIKLSsjIGRlZmluZSBQUklpRkFTVDMyICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvRkFTVDMyCi0rIyBkZWZpbmUgUFJJb0ZBU1QzMiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUZBU1QzMgotKyMgZGVmaW5lIFBSSXVGQVNUMzIgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhGQVNUMzIKLSsjIGRlZmluZSBQUkl4RkFTVDMyICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYRkFTVDMyCi0rIyBkZWZpbmUgUFJJWEZBU1QzMiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZEZBU1Q2NAotKyMgZGVmaW5lIFBSSWRGQVNUNjQgUFJJZDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlGQVNUNjQKLSsjIGRlZmluZSBQUklpRkFTVDY0IFBSSWk2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvRkFTVDY0Ci0rIyBkZWZpbmUgUFJJb0ZBU1Q2NCBQUklvNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUZBU1Q2NAotKyMgZGVmaW5lIFBSSXVGQVNUNjQgUFJJdTY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhGQVNUNjQKLSsjIGRlZmluZSBQUkl4RkFTVDY0IFBSSXg2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYRkFTVDY0Ci0rIyBkZWZpbmUgUFJJWEZBU1Q2NCBQUklYNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZE1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZE1BWAotKyMgZGVmaW5lIFBSSWRNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImxkIiA6ICJsbGQiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpTUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTUFYCi0rIyBkZWZpbmUgUFJJaU1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibGkiIDogImxsaSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9NQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9NQVgKLSsjIGRlZmluZSBQUklvTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsbyIgOiAibGxvIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdU1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdU1BWAotKyMgZGVmaW5lIFBSSXVNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImx1IiA6ICJsbHUiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4TUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TUFYCi0rIyBkZWZpbmUgUFJJeE1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibHgiIDogImxseCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhNQVgKLSsjIGRlZmluZSBQUklYTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsWCIgOiAibGxYIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZFBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZFBUUgotKyMgZGVmaW5lIFBSSWRQVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImxkIiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gImQiIDogXAotKyAgICJsbGQiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpUFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpUFRSCi0rIyBkZWZpbmUgUFJJaVBUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibGkiIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAiaSIgOiBcCi0rICAgImxsaSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9QVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9QVFIKLSsjIGRlZmluZSBQUklvUFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsbyIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJvIiA6IFwKLSsgICAibGxvIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdVBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdVBUUgotKyMgZGVmaW5lIFBSSXVQVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImx1IiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gInUiIDogXAotKyAgICJsbHUiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4UFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4UFRSCi0rIyBkZWZpbmUgUFJJeFBUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibHgiIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAieCIgOiBcCi0rICAgImxseCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhQVFIKLSsjIGRlZmluZSBQUklYUFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsWCIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJYIiA6IFwKLSsgICAibGxYIikKLSsjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi1AQCAtNDQsNyArNDU3LDYgQEAKLSAvKiBSZW5hbWUgdGhlIG5vbiBJU08gQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAotICAgIGJlY2F1c2Ugc29tZSBJU08gQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotICAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLS0jIGRlZmluZSBmc3RhdCAgX19mc3RhdAotICMgZGVmaW5lIG9wZW4gICBfX29wZW4KLSAjIGRlZmluZSBjbG9zZSAgX19jbG9zZQotICMgZGVmaW5lIHJlYWQgICBfX3JlYWQKLUBAIC01MiwzMCArNDY0LDQ3MSBAQAotICMgZGVmaW5lIG11bm1hcCBfX211bm1hcAotICNlbmRpZgotIAotKy8qIEZvciB0aG9zZSBsb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCi0rICAgc29tZSBhZGRpdGlvbmFsIGNvZGUgZW11bGF0aW5nIGl0LiAgKi8KLSsjaWZkZWYgSEFWRV9BTExPQ0EKLSsjIGRlZmluZSBmcmVlYShwKSAvKiBub3RoaW5nICovCi0rI2Vsc2UKLSsjIGRlZmluZSBhbGxvY2EobikgbWFsbG9jIChuKQotKyMgZGVmaW5lIGZyZWVhKHApIGZyZWUgKHApCi0rI2VuZGlmCi0rCi0rLyogRm9yIHN5c3RlbXMgdGhhdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRleHQgYW5kIGJpbmFyeSBJL08uCi0rICAgT19CSU5BUlkgaXMgdXN1YWxseSBkZWNsYXJlZCBpbiA8ZmNudGwuaD4uICovCi0rI2lmICFkZWZpbmVkIE9fQklOQVJZICYmIGRlZmluZWQgX09fQklOQVJZCi0rICAvKiBGb3IgTVNDLWNvbXBhdGlibGUgY29tcGlsZXJzLiAgKi8KLSsjIGRlZmluZSBPX0JJTkFSWSBfT19CSU5BUlkKLSsjIGRlZmluZSBPX1RFWFQgX09fVEVYVAotKyNlbmRpZgotKyNpZmRlZiBfX0JFT1NfXwotKyAgLyogQmVPUyA1IGhhcyBPX0JJTkFSWSBhbmQgT19URVhULCBidXQgdGhleSBoYXZlIG5vIGVmZmVjdC4gICovCi0rIyB1bmRlZiBPX0JJTkFSWQotKyMgdW5kZWYgT19URVhUCi0rI2VuZGlmCi0rLyogT24gcmVhc29uYWJsZSBzeXN0ZW1zLCBiaW5hcnkgSS9PIGlzIHRoZSBkZWZhdWx0LiAgKi8KLSsjaWZuZGVmIE9fQklOQVJZCi0rIyBkZWZpbmUgT19CSU5BUlkgMAotKyNlbmRpZgotKwotKwotIC8qIFdlIG5lZWQgYSBzaWduLCB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQKLSAgICB3aXRoIGFsbCB0cmFuc2xhdGlvbnMuICBUaGlzIGlzIGltcG9ydGFudCBpZiB0aGUgdHJhbnNsYXRpb25zIGFyZQotICAgIGNhY2hlZCBieSBvbmUgb2YgR0NDJ3MgZmVhdHVyZXMuICAqLwotLWludCBfbmxfbXNnX2NhdF9jbnRyID0gMDsKLStpbnQgX25sX21zZ19jYXRfY250cjsKLSAKLSAKLSsvKiBFeHBhbmQgYSBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZyBzZWdtZW50LiAgUmV0dXJuIE5VTEwgaWYgdW5zdXBwb3J0ZWQuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStnZXRfc3lzZGVwX3NlZ21lbnRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgLyogVGVzdCBmb3IgYW4gSVNPIEMgOTkgc2VjdGlvbiA3LjguMSBmb3JtYXQgc3RyaW5nIGRpcmVjdGl2ZS4KLSsgICAgIFN5bnRheDoKLSsgICAgIFAgUiBJIHsgZCB8IGkgfCBvIHwgdSB8IHggfCBYIH0KLSsgICAgIHsgeyB8IExFQVNUIHwgRkFTVCB9IHsgOCB8IDE2IHwgMzIgfCA2NCB9IHwgTUFYIHwgUFRSIH0gICovCi0rICAvKiBXZSBkb24ndCB1c2UgYSB0YWJsZSBvZiAxNCB0aW1lcyA2ICdjb25zdCBjaGFyIConIHN0cmluZ3MgaGVyZSwgYmVjYXVzZQotKyAgICAgZGF0YSByZWxvY2F0aW9ucyBjb3N0IHN0YXJ0dXAgdGltZS4gICovCi0rICBpZiAobmFtZVswXSA9PSAnUCcgJiYgbmFtZVsxXSA9PSAnUicgJiYgbmFtZVsyXSA9PSAnSScpCi0rICAgIHsKLSsgICAgICBpZiAobmFtZVszXSA9PSAnZCcgfHwgbmFtZVszXSA9PSAnaScgfHwgbmFtZVszXSA9PSAnbycgfHwgbmFtZVszXSA9PSAndScKLSsJICB8fCBuYW1lWzNdID09ICd4JyB8fCBuYW1lWzNdID09ICdYJykKLSsJewotKwkgIGlmIChuYW1lWzRdID09ICc4JyAmJiBuYW1lWzVdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkODsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJcmV0dXJuIFBSSWk4OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJbzg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1ODsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJcmV0dXJuIFBSSXg4OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWDg7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICcxJyAmJiBuYW1lWzVdID09ICc2JyAmJiBuYW1lWzZdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkMTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpMTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvMTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1MTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4MTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYMTY7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICczJyAmJiBuYW1lWzVdID09ICcyJyAmJiBuYW1lWzZdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkMzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpMzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvMzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1MzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4MzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYMzI7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICc2JyAmJiBuYW1lWzVdID09ICc0JyAmJiBuYW1lWzZdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkNjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpNjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvNjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1NjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4NjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYNjQ7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICdMJyAmJiBuYW1lWzVdID09ICdFJyAmJiBuYW1lWzZdID09ICdBJwotKwkgICAgICAmJiBuYW1lWzddID09ICdTJyAmJiBuYW1lWzhdID09ICdUJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbOV0gPT0gJzgnICYmIG5hbWVbMTBdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpTEVBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9MRUFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4TEVBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhMRUFTVDg7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs5XSA9PSAnMScgJiYgbmFtZVsxMF0gPT0gJzYnICYmIG5hbWVbMTFdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUxFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0xFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeExFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWExFQVNUMTY7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs5XSA9PSAnMycgJiYgbmFtZVsxMF0gPT0gJzInICYmIG5hbWVbMTFdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUxFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0xFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeExFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWExFQVNUMzI7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs5XSA9PSAnNicgJiYgbmFtZVsxMF0gPT0gJzQnICYmIG5hbWVbMTFdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUxFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0xFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeExFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWExFQVNUNjQ7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICdGJyAmJiBuYW1lWzVdID09ICdBJyAmJiBuYW1lWzZdID09ICdTJwotKwkgICAgICAmJiBuYW1lWzddID09ICdUJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbOF0gPT0gJzgnICYmIG5hbWVbOV0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkRkFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUZBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9GQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1RkFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeEZBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhGQVNUODsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICAgIGlmIChuYW1lWzhdID09ICcxJyAmJiBuYW1lWzldID09ICc2JyAmJiBuYW1lWzEwXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRGQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUZBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvRkFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVGQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeEZBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYRkFTVDE2OwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgICAgaWYgKG5hbWVbOF0gPT0gJzMnICYmIG5hbWVbOV0gPT0gJzInICYmIG5hbWVbMTBdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZEZBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpRkFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9GQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUZBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4RkFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhGQVNUMzI7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs4XSA9PSAnNicgJiYgbmFtZVs5XSA9PSAnNCcgJiYgbmFtZVsxMF0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkRkFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlGQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0ZBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1RkFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhGQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWEZBU1Q2NDsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJ00nICYmIG5hbWVbNV0gPT0gJ0EnICYmIG5hbWVbNl0gPT0gJ1gnCi0rCSAgICAgICYmIG5hbWVbN10gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWRNQVg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpTUFYOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJb01BWDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXVNQVg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4TUFYOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWE1BWDsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJ1AnICYmIG5hbWVbNV0gPT0gJ1QnICYmIG5hbWVbNl0gPT0gJ1InCi0rCSAgICAgICYmIG5hbWVbN10gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWRQVFI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpUFRSOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJb1BUUjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXVQVFI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4UFRSOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWFBUUjsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgLyogVGVzdCBmb3IgYSBnbGliYyBzcGVjaWZpYyBwcmludGYoKSBmb3JtYXQgZGlyZWN0aXZlIGZsYWcuICAqLwotKyAgaWYgKG5hbWVbMF0gPT0gJ0knICYmIG5hbWVbMV0gPT0gJ1wwJykKLSsgICAgewotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IF9fR0xJQkNfXyA+IDIgfHwgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyKQotKyAgICAgIC8qIFRoZSAnSScgZmxhZywgaW4gbnVtZXJpYyBmb3JtYXQgZGlyZWN0aXZlcywgcmVwbGFjZXMgQVNDSUkgZGlnaXRzCi0rCSB3aXRoIHRoZSAnb3V0ZGlnaXRzJyBkZWZpbmVkIGluIHRoZSBMQ19DVFlQRSBsb2NhbGUgZmFjZXQuICBUaGlzIGlzCi0rCSB1c2VkIGZvciBGYXJzaSAoUGVyc2lhbikgYW5kIG1heWJlIEFyYWJpYy4gICovCi0rICAgICAgcmV0dXJuICJJIjsKLSsjZWxzZQotKyAgICAgIHJldHVybiAiIjsKLSsjZW5kaWYKLSsgICAgfQotKyAgLyogT3RoZXIgc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIGFyZSBub3QgdmFsaWQuICAqLwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIEluaXRpYWxpemUgdGhlIGNvZGVzZXQgZGVwZW5kZW50IHBhcnRzIG9mIGFuIG9wZW5lZCBtZXNzYWdlIGNhdGFsb2cuCi0rICAgUmV0dXJuIHRoZSBoZWFkZXIgZW50cnkuICAqLwotK2NvbnN0IGNoYXIgKgotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX2luaXRfZG9tYWluX2NvbnYgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotKwkJICAgICAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbiwKLSsJCSAgICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nKQotK3sKLSsgIC8qIEZpbmQgb3V0IGFib3V0IHRoZSBjaGFyYWN0ZXIgc2V0IHRoZSBmaWxlIGlzIGVuY29kZWQgd2l0aC4KLSsgICAgIFRoaXMgY2FuIGJlIGZvdW5kIChpbiB0ZXh0dWFsIGZvcm0pIGluIHRoZSBlbnRyeSAiIi4gIElmIHRoaXMKLSsgICAgIGVudHJ5IGRvZXMgbm90IGV4aXN0IG9yIGlmIHRoaXMgZG9lcyBub3QgY29udGFpbiB0aGUgYGNoYXJzZXQ9JwotKyAgICAgaW5mb3JtYXRpb24sIHdlIHdpbGwgYXNzdW1lIHRoZSBjaGFyc2V0IG1hdGNoZXMgdGhlIG9uZSB0aGUKLSsgICAgIGN1cnJlbnQgbG9jYWxlIGFuZCB3ZSBkb24ndCBoYXZlIHRvIHBlcmZvcm0gYW55IGNvbnZlcnNpb24uICAqLwotKyAgY2hhciAqbnVsbGVudHJ5OwotKyAgc2l6ZV90IG51bGxlbnRyeWxlbjsKLSsKLSsgIC8qIFByZWluaXRpYWxpemUgZmllbGRzLCB0byBhdm9pZCByZWN1cnNpb24gZHVyaW5nIF9ubF9maW5kX21zZy4gICovCi0rICBkb21haW4tPmNvZGVzZXRfY250ciA9Ci0rICAgIChkb21haW5iaW5kaW5nICE9IE5VTEwgPyBkb21haW5iaW5kaW5nLT5jb2Rlc2V0X2NudHIgOiAwKTsKLSsjaWZkZWYgX0xJQkMKLSsgIGRvbWFpbi0+Y29udiA9IChfX2djb252X3QpIC0xOwotKyNlbHNlCi0rIyBpZiBIQVZFX0lDT05WCi0rICBkb21haW4tPmNvbnYgPSAoaWNvbnZfdCkgLTE7Ci0rIyBlbmRpZgotKyNlbmRpZgotKyAgZG9tYWluLT5jb252X3RhYiA9IE5VTEw7Ci0rCi0rICAvKiBHZXQgdGhlIGhlYWRlciBlbnRyeS4gICovCi0rICBudWxsZW50cnkgPSBfbmxfZmluZF9tc2cgKGRvbWFpbl9maWxlLCBkb21haW5iaW5kaW5nLCAiIiwgJm51bGxlbnRyeWxlbik7Ci0rCi0rICBpZiAobnVsbGVudHJ5ICE9IE5VTEwpCi0rICAgIHsKLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBIQVZFX0lDT05WCi0rICAgICAgY29uc3QgY2hhciAqY2hhcnNldHN0cjsKLSsKLSsgICAgICBjaGFyc2V0c3RyID0gc3Ryc3RyIChudWxsZW50cnksICJjaGFyc2V0PSIpOwotKyAgICAgIGlmIChjaGFyc2V0c3RyICE9IE5VTEwpCi0rCXsKLSsJICBzaXplX3QgbGVuOwotKwkgIGNoYXIgKmNoYXJzZXQ7Ci0rCSAgY29uc3QgY2hhciAqb3V0Y2hhcnNldDsKLSsKLSsJICBjaGFyc2V0c3RyICs9IHN0cmxlbiAoImNoYXJzZXQ9Iik7Ci0rCSAgbGVuID0gc3RyY3NwbiAoY2hhcnNldHN0ciwgIiBcdFxuIik7Ci0rCi0rCSAgY2hhcnNldCA9IChjaGFyICopIGFsbG9jYSAobGVuICsgMSk7Ci0rIyBpZiBkZWZpbmVkIF9MSUJDIHx8IEhBVkVfTUVNUENQWQotKwkgICooKGNoYXIgKikgbWVtcGNweSAoY2hhcnNldCwgY2hhcnNldHN0ciwgbGVuKSkgPSAnXDAnOwotKyMgZWxzZQotKwkgIG1lbWNweSAoY2hhcnNldCwgY2hhcnNldHN0ciwgbGVuKTsKLSsJICBjaGFyc2V0W2xlbl0gPSAnXDAnOwotKyMgZW5kaWYKLSsKLSsJICAvKiBUaGUgb3V0cHV0IGNoYXJzZXQgc2hvdWxkIG5vcm1hbGx5IGJlIGRldGVybWluZWQgYnkgdGhlCi0rCSAgICAgbG9jYWxlLiAgQnV0IHNvbWV0aW1lcyB0aGUgbG9jYWxlIGlzIG5vdCB1c2VkIG9yIG5vdCBjb3JyZWN0bHkKLSsJICAgICBzZXQgdXAsIHNvIHdlIHByb3ZpZGUgYSBwb3NzaWJpbGl0eSBmb3IgdGhlIHVzZXIgdG8gb3ZlcnJpZGUKLSsJICAgICB0aGlzLiAgTW9yZW92ZXIsIHRoZSB2YWx1ZSBzcGVjaWZpZWQgdGhyb3VnaAotKwkgICAgIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IG92ZXJyaWRlcyBib3RoLiAgKi8KLSsJICBpZiAoZG9tYWluYmluZGluZyAhPSBOVUxMICYmIGRvbWFpbmJpbmRpbmctPmNvZGVzZXQgIT0gTlVMTCkKLSsJICAgIG91dGNoYXJzZXQgPSBkb21haW5iaW5kaW5nLT5jb2Rlc2V0OwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgb3V0Y2hhcnNldCA9IGdldGVudiAoIk9VVFBVVF9DSEFSU0VUIik7Ci0rCSAgICAgIGlmIChvdXRjaGFyc2V0ID09IE5VTEwgfHwgb3V0Y2hhcnNldFswXSA9PSAnXDAnKQotKwkJewotKyMgaWZkZWYgX0xJQkMKLSsJCSAgb3V0Y2hhcnNldCA9IF9OTF9DVVJSRU5UIChMQ19DVFlQRSwgQ09ERVNFVCk7Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9JQ09OVgotKwkJICBleHRlcm4gY29uc3QgY2hhciAqbG9jYWxlX2NoYXJzZXQgKHZvaWQpOwotKwkJICBvdXRjaGFyc2V0ID0gbG9jYWxlX2NoYXJzZXQgKCk7Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCQl9Ci0rCSAgICB9Ci0rCi0rIyBpZmRlZiBfTElCQwotKwkgIC8qIFdlIGFsd2F5cyB3YW50IHRvIHVzZSB0cmFuc2xpdGVyYXRpb24uICAqLwotKwkgIG91dGNoYXJzZXQgPSBub3JtX2FkZF9zbGFzaGVzIChvdXRjaGFyc2V0LCAiVFJBTlNMSVQiKTsKLSsJICBjaGFyc2V0ID0gbm9ybV9hZGRfc2xhc2hlcyAoY2hhcnNldCwgTlVMTCk7Ci0rCSAgaWYgKF9fZ2NvbnZfb3BlbiAob3V0Y2hhcnNldCwgY2hhcnNldCwgJmRvbWFpbi0+Y29udiwKLSsJCQkgICAgR0NPTlZfQVZPSURfTk9DT05WKQotKwkgICAgICAhPSBfX0dDT05WX09LKQotKwkgICAgZG9tYWluLT5jb252ID0gKF9fZ2NvbnZfdCkgLTE7Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9JQ09OVgotKwkgIC8qIFdoZW4gdXNpbmcgR05VIGxpYmMgPj0gMi4yIG9yIEdOVSBsaWJpY29udiA+PSAxLjUsCi0rCSAgICAgd2Ugd2FudCB0byB1c2UgdHJhbnNsaXRlcmF0aW9uLiAgKi8KLSsjICAgaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyKSB8fCBfX0dMSUJDX18gPiAyIFwKLSsgICAgICAgfHwgX0xJQklDT05WX1ZFUlNJT04gPj0gMHgwMTA1Ci0rCSAgaWYgKHN0cmNociAob3V0Y2hhcnNldCwgJy8nKSA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICBjaGFyICp0bXA7Ci0rCi0rCSAgICAgIGxlbiA9IHN0cmxlbiAob3V0Y2hhcnNldCk7Ci0rCSAgICAgIHRtcCA9IChjaGFyICopIGFsbG9jYSAobGVuICsgMTAgKyAxKTsKLSsJICAgICAgbWVtY3B5ICh0bXAsIG91dGNoYXJzZXQsIGxlbik7Ci0rCSAgICAgIG1lbWNweSAodG1wICsgbGVuLCAiLy9UUkFOU0xJVCIsIDEwICsgMSk7Ci0rCSAgICAgIG91dGNoYXJzZXQgPSB0bXA7Ci0rCi0rCSAgICAgIGRvbWFpbi0+Y29udiA9IGljb252X29wZW4gKG91dGNoYXJzZXQsIGNoYXJzZXQpOwotKwotKwkgICAgICBmcmVlYSAob3V0Y2hhcnNldCk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKyMgICBlbmRpZgotKwkgICAgZG9tYWluLT5jb252ID0gaWNvbnZfb3BlbiAob3V0Y2hhcnNldCwgY2hhcnNldCk7Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCi0rCSAgZnJlZWEgKGNoYXJzZXQpOwotKwl9Ci0rI2VuZGlmIC8qIF9MSUJDIHx8IEhBVkVfSUNPTlYgKi8KLSsgICAgfQotKwotKyAgcmV0dXJuIG51bGxlbnRyeTsKLSt9Ci0rCi0rLyogRnJlZXMgdGhlIGNvZGVzZXQgZGVwZW5kZW50IHBhcnRzIG9mIGFuIG9wZW5lZCBtZXNzYWdlIGNhdGFsb2cuICAqLwotK3ZvaWQKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF9mcmVlX2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluKQotK3sKLSsgIGlmIChkb21haW4tPmNvbnZfdGFiICE9IE5VTEwgJiYgZG9tYWluLT5jb252X3RhYiAhPSAoY2hhciAqKikgLTEpCi0rICAgIGZyZWUgKGRvbWFpbi0+Y29udl90YWIpOwotKwotKyNpZmRlZiBfTElCQwotKyAgaWYgKGRvbWFpbi0+Y29udiAhPSAoX19nY29udl90KSAtMSkKLSsgICAgX19nY29udl9jbG9zZSAoZG9tYWluLT5jb252KTsKLSsjZWxzZQotKyMgaWYgSEFWRV9JQ09OVgotKyAgaWYgKGRvbWFpbi0+Y29udiAhPSAoaWNvbnZfdCkgLTEpCi0rICAgIGljb252X2Nsb3NlIChkb21haW4tPmNvbnYpOwotKyMgZW5kaWYKLSsjZW5kaWYKLSt9Ci0rCi0gLyogTG9hZCB0aGUgbWVzc2FnZSBjYXRhbG9ncyBzcGVjaWZpZWQgYnkgRklMRU5BTUUuICBJZiBpdCBpcyBubyB2YWxpZAotICAgIG1lc3NhZ2UgY2F0YWxvZyBkbyBub3RoaW5nLiAgKi8KLSB2b2lkCi0tX25sX2xvYWRfZG9tYWluIChkb21haW5fZmlsZSkKLS0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlOwotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX2xvYWRfZG9tYWluIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKLSsJCSBzdHJ1Y3QgYmluZGluZyAqZG9tYWluYmluZGluZykKLSB7Ci0gICBpbnQgZmQ7Ci0rICBzaXplX3Qgc2l6ZTsKLSsjaWZkZWYgX0xJQkMKLSsgIHN0cnVjdCBzdGF0NjQgc3Q7Ci0rI2Vsc2UKLSAgIHN0cnVjdCBzdGF0IHN0OwotKyNlbmRpZgotICAgc3RydWN0IG1vX2ZpbGVfaGVhZGVyICpkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMTsKLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotLSAgICB8fCBkZWZpbmVkIF9MSUJDCi0gICBpbnQgdXNlX21tYXAgPSAwOwotLSNlbmRpZgotICAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbjsKLSsgIGludCByZXZpc2lvbjsKLSsgIGNvbnN0IGNoYXIgKm51bGxlbnRyeTsKLSAKLSAgIGRvbWFpbl9maWxlLT5kZWNpZGVkID0gMTsKLSAgIGRvbWFpbl9maWxlLT5kYXRhID0gTlVMTDsKLSAKLSsgIC8qIE5vdGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VsZXNzIHRvIHN0b3JlIGRvbWFpbmJpbmRpbmcgaW4gZG9tYWluX2ZpbGUKLSsgICAgIGJlY2F1c2UgZG9tYWluYmluZGluZyBtaWdodCBiZSA9PSBOVUxMIG5vdyBidXQgIT0gTlVMTCBsYXRlciAoYWZ0ZXIKLSsgICAgIGEgY2FsbCB0byBiaW5kX3RleHRkb21haW5fY29kZXNldCkuICAqLwotKwotICAgLyogSWYgdGhlIHJlY29yZCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBsb2NhbGUgdGhlIEZJTEVOQU1FCi0gICAgICBtaWdodCBiZSBOVUxMLiAgVGhpcyBjYW4gaGFwcGVuIHdoZW4gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbgotICAgICAgc3BlY2lmaWNhdGlvbiB0aGUgbG9jYWxlIGZpbGUgbmFtZSBpcyBkaWZmZXJlbnQgZm9yIFhQRyBhbmQgQ0VOCi1AQCAtODQsMjcgKzkzNywzMiBAQAotICAgICByZXR1cm47Ci0gCi0gICAvKiBUcnkgdG8gb3BlbiB0aGUgYWRkcmVzc2VkIGZpbGUuICAqLwotLSAgZmQgPSBvcGVuIChkb21haW5fZmlsZS0+ZmlsZW5hbWUsIE9fUkRPTkxZKTsKLSsgIGZkID0gb3BlbiAoZG9tYWluX2ZpbGUtPmZpbGVuYW1lLCBPX1JET05MWSB8IE9fQklOQVJZKTsKLSAgIGlmIChmZCA9PSAtMSkKLSAgICAgcmV0dXJuOwotIAotICAgLyogV2UgbXVzdCBrbm93IGFib3V0IHRoZSBzaXplIG9mIHRoZSBmaWxlLiAgKi8KLS0gIGlmIChmc3RhdCAoZmQsICZzdCkgIT0gMAotLSAgICAgICYmIHN0LnN0X3NpemUgPCAob2ZmX3QpIHNpemVvZiAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyKSkKLSsgIGlmICgKLSsjaWZkZWYgX0xJQkMKLSsgICAgICBfX2J1aWx0aW5fZXhwZWN0IChmc3RhdDY0IChmZCwgJnN0KSAhPSAwLCAwKQotKyNlbHNlCi0rICAgICAgX19idWlsdGluX2V4cGVjdCAoZnN0YXQgKGZkLCAmc3QpICE9IDAsIDApCi0rI2VuZGlmCi0rICAgICAgfHwgX19idWlsdGluX2V4cGVjdCAoKHNpemUgPSAoc2l6ZV90KSBzdC5zdF9zaXplKSAhPSBzdC5zdF9zaXplLCAwKQotKyAgICAgIHx8IF9fYnVpbHRpbl9leHBlY3QgKHNpemUgPCBzaXplb2YgKHN0cnVjdCBtb19maWxlX2hlYWRlciksIDApKQotICAgICB7Ci0gICAgICAgLyogU29tZXRoaW5nIHdlbnQgd3JvbmcuICAqLwotICAgICAgIGNsb3NlIChmZCk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKLS0gICAgfHwgZGVmaW5lZCBfTElCQwotKyNpZmRlZiBIQVZFX01NQVAKLSAgIC8qIE5vdyB3ZSBhcmUgcmVhZHkgdG8gbG9hZCB0aGUgZmlsZS4gIElmIG1tYXAoKSBpcyBhdmFpbGFibGUgd2UgdHJ5Ci0gICAgICB0aGlzIGZpcnN0LiAgSWYgbm90IGF2YWlsYWJsZSBvciBpdCBmYWlsZWQgd2UgdHJ5IHRvIGxvYWQgaXQuICAqLwotLSAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbW1hcCAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFELAotKyAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbW1hcCAoTlVMTCwgc2l6ZSwgUFJPVF9SRUFELAotIAkJCQkJIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0gCi0tICBpZiAoZGF0YSAhPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xKQotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGRhdGEgIT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSwgMSkpCi0gICAgIHsKLSAgICAgICAvKiBtbWFwKCkgY2FsbCB3YXMgc3VjY2Vzc2Z1bC4gICovCi0gICAgICAgY2xvc2UgKGZkKTsKLUBAIC0xMTYsMjQgKzk3NCwyNyBAQAotICAgICAgaXQgbWFudWFsbHkuICAqLwotICAgaWYgKGRhdGEgPT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSkKLSAgICAgewotLSAgICAgIG9mZl90IHRvX3JlYWQ7Ci0rICAgICAgc2l6ZV90IHRvX3JlYWQ7Ci0gICAgICAgY2hhciAqcmVhZF9wdHI7Ci0gCi0tICAgICAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbWFsbG9jIChzdC5zdF9zaXplKTsKLSsgICAgICBkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSBtYWxsb2MgKHNpemUpOwotICAgICAgIGlmIChkYXRhID09IE5VTEwpCi0gCXJldHVybjsKLSAKLS0gICAgICB0b19yZWFkID0gc3Quc3Rfc2l6ZTsKLSsgICAgICB0b19yZWFkID0gc2l6ZTsKLSAgICAgICByZWFkX3B0ciA9IChjaGFyICopIGRhdGE7Ci0gICAgICAgZG8KLSAJewotIAkgIGxvbmcgaW50IG5iID0gKGxvbmcgaW50KSByZWFkIChmZCwgcmVhZF9wdHIsIHRvX3JlYWQpOwotLQkgIGlmIChuYiA9PSAtMSkKLSsJICBpZiAobmIgPD0gMCkKLSAJICAgIHsKLSsjaWZkZWYgRUlOVFIKLSsJICAgICAgaWYgKG5iID09IC0xICYmIGVycm5vID09IEVJTlRSKQotKwkJY29udGludWU7Ci0rI2VuZGlmCi0gCSAgICAgIGNsb3NlIChmZCk7Ci0gCSAgICAgIHJldHVybjsKLSAJICAgIH0KLS0KLSAJICByZWFkX3B0ciArPSBuYjsKLSAJICB0b19yZWFkIC09IG5iOwotIAl9Ci1AQCAtMTQ0LDQ3ICsxMDA1LDM3OCBAQAotIAotICAgLyogVXNpbmcgdGhlIG1hZ2ljIG51bWJlciB3ZSBjYW4gdGVzdCB3aGV0aGVyIGl0IHJlYWxseSBpcyBhIG1lc3NhZ2UKLSAgICAgIGNhdGFsb2cgZmlsZS4gICovCi0tICBpZiAoZGF0YS0+bWFnaWMgIT0gX01BR0lDICYmIGRhdGEtPm1hZ2ljICE9IF9NQUdJQ19TV0FQUEVEKQotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGRhdGEtPm1hZ2ljICE9IF9NQUdJQyAmJiBkYXRhLT5tYWdpYyAhPSBfTUFHSUNfU1dBUFBFRCwKLSsJCQkwKSkKLSAgICAgewotICAgICAgIC8qIFRoZSBtYWdpYyBudW1iZXIgaXMgd3Jvbmc6IG5vdCBhIG1lc3NhZ2UgY2F0YWxvZyBmaWxlLiAgKi8KLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotLSAgICB8fCBkZWZpbmVkIF9MSUJDCi0rI2lmZGVmIEhBVkVfTU1BUAotICAgICAgIGlmICh1c2VfbW1hcCkKLS0JbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc3Quc3Rfc2l6ZSk7Ci0rCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHNpemUpOwotICAgICAgIGVsc2UKLSAjZW5kaWYKLSAJZnJlZSAoZGF0YSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICBkb21haW5fZmlsZS0+ZGF0YQotLSAgICA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IGxvYWRlZF9kb21haW4pKTsKLS0gIGlmIChkb21haW5fZmlsZS0+ZGF0YSA9PSBOVUxMKQotKyAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbikpOwotKyAgaWYgKGRvbWFpbiA9PSBOVUxMKQotICAgICByZXR1cm47Ci0rICBkb21haW5fZmlsZS0+ZGF0YSA9IGRvbWFpbjsKLSAKLS0gIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKLSAgIGRvbWFpbi0+ZGF0YSA9IChjaGFyICopIGRhdGE7Ci0rICBkb21haW4tPnVzZV9tbWFwID0gdXNlX21tYXA7Ci0rICBkb21haW4tPm1tYXBfc2l6ZSA9IHNpemU7Ci0gICBkb21haW4tPm11c3Rfc3dhcCA9IGRhdGEtPm1hZ2ljICE9IF9NQUdJQzsKLSsgIGRvbWFpbi0+bWFsbG9jZWQgPSBOVUxMOwotIAotICAgLyogRmlsbCBpbiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF2YWlsYWJsZSB0YWJsZXMuICAqLwotLSAgc3dpdGNoIChXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+cmV2aXNpb24pKQotKyAgcmV2aXNpb24gPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+cmV2aXNpb24pOwotKyAgLyogV2Ugc3VwcG9ydCBvbmx5IHRoZSBtYWpvciByZXZpc2lvbnMgMCBhbmQgMS4gICovCi0rICBzd2l0Y2ggKHJldmlzaW9uID4+IDE2KQotICAgICB7Ci0gICAgIGNhc2UgMDoKLSsgICAgY2FzZSAxOgotICAgICAgIGRvbWFpbi0+bnN0cmluZ3MgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+bnN0cmluZ3MpOwotLSAgICAgIGRvbWFpbi0+b3JpZ190YWIgPSAoc3RydWN0IHN0cmluZ19kZXNjICopCi0rICAgICAgZG9tYWluLT5vcmlnX3RhYiA9IChjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKLSAJKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+b3JpZ190YWJfb2Zmc2V0KSk7Ci0tICAgICAgZG9tYWluLT50cmFuc190YWIgPSAoc3RydWN0IHN0cmluZ19kZXNjICopCi0rICAgICAgZG9tYWluLT50cmFuc190YWIgPSAoY29uc3Qgc3RydWN0IHN0cmluZ19kZXNjICopCi0gCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnRyYW5zX3RhYl9vZmZzZXQpKTsKLSAgICAgICBkb21haW4tPmhhc2hfc2l6ZSA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9zaXplKTsKLS0gICAgICBkb21haW4tPmhhc2hfdGFiID0gKG5sc191aW50MzIgKikKLS0JKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfb2Zmc2V0KSk7Ci0rICAgICAgZG9tYWluLT5oYXNoX3RhYiA9Ci0rCShkb21haW4tPmhhc2hfc2l6ZSA+IDIKLSsJID8gKGNvbnN0IG5sc191aW50MzIgKikKLSsJICAgKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfb2Zmc2V0KSkKLSsJIDogTlVMTCk7Ci0rICAgICAgZG9tYWluLT5tdXN0X3N3YXBfaGFzaF90YWIgPSBkb21haW4tPm11c3Rfc3dhcDsKLSsKLSsgICAgICAvKiBOb3cgZGlzcGF0Y2ggb24gdGhlIG1pbm9yIHJldmlzaW9uLiAgKi8KLSsgICAgICBzd2l0Y2ggKHJldmlzaW9uICYgMHhmZmZmKQotKwl7Ci0rCWNhc2UgMDoKLSsJICBkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiID0gTlVMTDsKLSsJICBkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBOVUxMOwotKwkgIGJyZWFrOwotKwljYXNlIDE6Ci0rCWRlZmF1bHQ6Ci0rCSAgewotKwkgICAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zdHJpbmdzOwotKwotKwkgICAgaWYgKGRvbWFpbi0+aGFzaF90YWIgPT0gTlVMTCkKLSsJICAgICAgLyogVGhpcyBpcyBpbnZhbGlkLiAgVGhlc2UgbWlub3IgcmV2aXNpb25zIG5lZWQgYSBoYXNoIHRhYmxlLiAgKi8KLSsJICAgICAgZ290byBpbnZhbGlkOwotKwotKwkgICAgbl9zeXNkZXBfc3RyaW5ncyA9Ci0rCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5uX3N5c2RlcF9zdHJpbmdzKTsKLSsJICAgIGlmIChuX3N5c2RlcF9zdHJpbmdzID4gMCkKLSsJICAgICAgewotKwkJbmxzX3VpbnQzMiBuX3N5c2RlcF9zZWdtZW50czsKLSsJCWNvbnN0IHN0cnVjdCBzeXNkZXBfc2VnbWVudCAqc3lzZGVwX3NlZ21lbnRzOwotKwkJY29uc3QgY2hhciAqKnN5c2RlcF9zZWdtZW50X3ZhbHVlczsKLSsJCWNvbnN0IG5sc191aW50MzIgKm9yaWdfc3lzZGVwX3RhYjsKLSsJCWNvbnN0IG5sc191aW50MzIgKnRyYW5zX3N5c2RlcF90YWI7Ci0rCQlubHNfdWludDMyIG5faW5tZW1fc3lzZGVwX3N0cmluZ3M7Ci0rCQlzaXplX3QgbWVtbmVlZDsKLSsJCWNoYXIgKm1lbTsKLSsJCXN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKmlubWVtX29yaWdfc3lzZGVwX3RhYjsKLSsJCXN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKmlubWVtX3RyYW5zX3N5c2RlcF90YWI7Ci0rCQlubHNfdWludDMyICppbm1lbV9oYXNoX3RhYjsKLSsJCXVuc2lnbmVkIGludCBpLCBqOwotKwotKwkJLyogR2V0IHRoZSB2YWx1ZXMgb2YgdGhlIHN5c3RlbSBkZXBlbmRlbnQgc2VnbWVudHMuICAqLwotKwkJbl9zeXNkZXBfc2VnbWVudHMgPQotKwkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+bl9zeXNkZXBfc2VnbWVudHMpOwotKwkJc3lzZGVwX3NlZ21lbnRzID0gKGNvbnN0IHN0cnVjdCBzeXNkZXBfc2VnbWVudCAqKQotKwkJICAoKGNoYXIgKikgZGF0YQotKwkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+c3lzZGVwX3NlZ21lbnRzX29mZnNldCkpOwotKwkJc3lzZGVwX3NlZ21lbnRfdmFsdWVzID0KLSsJCSAgYWxsb2NhIChuX3N5c2RlcF9zZWdtZW50cyAqIHNpemVvZiAoY29uc3QgY2hhciAqKSk7Ci0rCQlmb3IgKGkgPSAwOyBpIDwgbl9zeXNkZXBfc2VnbWVudHM7IGkrKykKLSsJCSAgewotKwkJICAgIGNvbnN0IGNoYXIgKm5hbWUgPQotKwkJICAgICAgKGNoYXIgKikgZGF0YQotKwkJICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgc3lzZGVwX3NlZ21lbnRzW2ldLm9mZnNldCk7Ci0rCQkgICAgbmxzX3VpbnQzMiBuYW1lbGVuID0KLSsJCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBzeXNkZXBfc2VnbWVudHNbaV0ubGVuZ3RoKTsKLSsKLSsJCSAgICBpZiAoIShuYW1lbGVuID4gMCAmJiBuYW1lW25hbWVsZW4gLSAxXSA9PSAnXDAnKSkKLSsJCSAgICAgIHsKLSsJCQlmcmVlYSAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzKTsKLSsJCQlnb3RvIGludmFsaWQ7Ci0rCQkgICAgICB9Ci0rCi0rCQkgICAgc3lzZGVwX3NlZ21lbnRfdmFsdWVzW2ldID0gZ2V0X3N5c2RlcF9zZWdtZW50X3ZhbHVlIChuYW1lKTsKLSsJCSAgfQotKwotKwkJb3JpZ19zeXNkZXBfdGFiID0gKGNvbnN0IG5sc191aW50MzIgKikKLSsJCSAgKChjaGFyICopIGRhdGEKLSsJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm9yaWdfc3lzZGVwX3RhYl9vZmZzZXQpKTsKLSsJCXRyYW5zX3N5c2RlcF90YWIgPSAoY29uc3QgbmxzX3VpbnQzMiAqKQotKwkJICAoKGNoYXIgKikgZGF0YQotKwkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+dHJhbnNfc3lzZGVwX3RhYl9vZmZzZXQpKTsKLSsKLSsJCS8qIENvbXB1dGUgdGhlIGFtb3VudCBvZiBhZGRpdGlvbmFsIG1lbW9yeSBuZWVkZWQgZm9yIHRoZQotKwkJICAgc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIGFuZCB0aGUgYXVnbWVudGVkIGhhc2ggdGFibGUuCi0rCQkgICBBdCB0aGUgc2FtZSB0aW1lLCBhbHNvIGRyb3Agc3RyaW5nIHBhaXJzIHdoaWNoIHJlZmVyIHRvCi0rCQkgICBhbiB1bmRlZmluZWQgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50LiAgKi8KLSsJCW5faW5tZW1fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkJbWVtbmVlZCA9IGRvbWFpbi0+aGFzaF9zaXplICogc2l6ZW9mIChubHNfdWludDMyKTsKLSsJCWZvciAoaSA9IDA7IGkgPCBuX3N5c2RlcF9zdHJpbmdzOyBpKyspCi0rCQkgIHsKLSsJCSAgICBpbnQgdmFsaWQgPSAxOwotKwkJICAgIHNpemVfdCBuZWVkc1syXTsKLSsKLSsJCSAgICBmb3IgKGogPSAwOyBqIDwgMjsgaisrKQotKwkJICAgICAgewotKwkJCWNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICpzeXNkZXBfc3RyaW5nID0KLSsJCQkgIChjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqKQotKwkJCSAgKChjaGFyICopIGRhdGEKLSsJCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotKwkJCQlqID09IDAKLSsJCQkJPyBvcmlnX3N5c2RlcF90YWJbaV0KLSsJCQkJOiB0cmFuc19zeXNkZXBfdGFiW2ldKSk7Ci0rCQkJc2l6ZV90IG5lZWQgPSAwOwotKwkJCWNvbnN0IHN0cnVjdCBzZWdtZW50X3BhaXIgKnAgPSBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czsKLSsKLSsJCQlpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnN5c2RlcHJlZikgIT0gU0VHTUVOVFNfRU5EKQotKwkJCSAgZm9yIChwID0gc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7OyBwKyspCi0rCQkJICAgIHsKLSsJCQkgICAgICBubHNfdWludDMyIHN5c2RlcHJlZjsKLSsKLSsJCQkgICAgICBuZWVkICs9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zZWdzaXplKTsKLSsKLSsJCQkgICAgICBzeXNkZXByZWYgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKTsKLSsJCQkgICAgICBpZiAoc3lzZGVwcmVmID09IFNFR01FTlRTX0VORCkKLSsJCQkJYnJlYWs7Ci0rCi0rCQkJICAgICAgaWYgKHN5c2RlcHJlZiA+PSBuX3N5c2RlcF9zZWdtZW50cykKLSsJCQkJewotKwkJCQkgIC8qIEludmFsaWQuICAqLwotKwkJCQkgIGZyZWVhIChzeXNkZXBfc2VnbWVudF92YWx1ZXMpOwotKwkJCQkgIGdvdG8gaW52YWxpZDsKLSsJCQkJfQotKwotKwkJCSAgICAgIGlmIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSA9PSBOVUxMKQotKwkJCQl7Ci0rCQkJCSAgLyogVGhpcyBwYXJ0aWN1bGFyIHN0cmluZyBwYWlyIGlzIGludmFsaWQuICAqLwotKwkJCQkgIHZhbGlkID0gMDsKLSsJCQkJICBicmVhazsKLSsJCQkJfQotKwotKwkJCSAgICAgIG5lZWQgKz0gc3RybGVuIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSk7Ci0rCQkJICAgIH0KLSsKLSsJCQluZWVkc1tqXSA9IG5lZWQ7Ci0rCQkJaWYgKCF2YWxpZCkKLSsJCQkgIGJyZWFrOwotKwkJICAgICAgfQotKwotKwkJICAgIGlmICh2YWxpZCkKLSsJCSAgICAgIHsKLSsJCQluX2lubWVtX3N5c2RlcF9zdHJpbmdzKys7Ci0rCQkJbWVtbmVlZCArPSBuZWVkc1swXSArIG5lZWRzWzFdOwotKwkJICAgICAgfQotKwkJICB9Ci0rCQltZW1uZWVkICs9IDIgKiBuX2lubWVtX3N5c2RlcF9zdHJpbmdzCi0rCQkJICAgKiBzaXplb2YgKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MpOwotKwotKwkJaWYgKG5faW5tZW1fc3lzZGVwX3N0cmluZ3MgPiAwKQotKwkJICB7Ci0rCQkgICAgdW5zaWduZWQgaW50IGs7Ci0rCi0rCQkgICAgLyogQWxsb2NhdGUgYWRkaXRpb25hbCBtZW1vcnkuICAqLwotKwkJICAgIG1lbSA9IChjaGFyICopIG1hbGxvYyAobWVtbmVlZCk7Ci0rCQkgICAgaWYgKG1lbSA9PSBOVUxMKQotKwkJICAgICAgZ290byBpbnZhbGlkOwotKwotKwkJICAgIGRvbWFpbi0+bWFsbG9jZWQgPSBtZW07Ci0rCQkgICAgaW5tZW1fb3JpZ19zeXNkZXBfdGFiID0gKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKikgbWVtOwotKwkJICAgIG1lbSArPSBuX2lubWVtX3N5c2RlcF9zdHJpbmdzCi0rCQkJICAgKiBzaXplb2YgKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MpOwotKwkJICAgIGlubWVtX3RyYW5zX3N5c2RlcF90YWIgPSAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqKSBtZW07Ci0rCQkgICAgbWVtICs9IG5faW5tZW1fc3lzZGVwX3N0cmluZ3MKLSsJCQkgICAqIHNpemVvZiAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyk7Ci0rCQkgICAgaW5tZW1faGFzaF90YWIgPSAobmxzX3VpbnQzMiAqKSBtZW07Ci0rCQkgICAgbWVtICs9IGRvbWFpbi0+aGFzaF9zaXplICogc2l6ZW9mIChubHNfdWludDMyKTsKLSsKLSsJCSAgICAvKiBDb21wdXRlIHRoZSBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MuICAqLwotKwkJICAgIGsgPSAwOwotKwkJICAgIGZvciAoaSA9IDA7IGkgPCBuX3N5c2RlcF9zdHJpbmdzOyBpKyspCi0rCQkgICAgICB7Ci0rCQkJaW50IHZhbGlkID0gMTsKLSsKLSsJCQlmb3IgKGogPSAwOyBqIDwgMjsgaisrKQotKwkJCSAgewotKwkJCSAgICBjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqc3lzZGVwX3N0cmluZyA9Ci0rCQkJICAgICAgKGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICopCi0rCQkJICAgICAgKChjaGFyICopIGRhdGEKLSsJCQkgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLSsJCQkJICAgIGogPT0gMAotKwkJCQkgICAgPyBvcmlnX3N5c2RlcF90YWJbaV0KLSsJCQkJICAgIDogdHJhbnNfc3lzZGVwX3RhYltpXSkpOwotKwkJCSAgICBjb25zdCBzdHJ1Y3Qgc2VnbWVudF9wYWlyICpwID0KLSsJCQkgICAgICBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czsKLSsKLSsJCQkgICAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpCi0rCQkJCSE9IFNFR01FTlRTX0VORCkKLSsJCQkgICAgICBmb3IgKHAgPSBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czs7IHArKykKLSsJCQkJewotKwkJCQkgIG5sc191aW50MzIgc3lzZGVwcmVmOwotKwotKwkJCQkgIHN5c2RlcHJlZiA9Ci0rCQkJCSAgICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKTsKLSsJCQkJICBpZiAoc3lzZGVwcmVmID09IFNFR01FTlRTX0VORCkKLSsJCQkJICAgIGJyZWFrOwotKwotKwkJCQkgIGlmIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSA9PSBOVUxMKQotKwkJCQkgICAgewotKwkJCQkgICAgICAvKiBUaGlzIHBhcnRpY3VsYXIgc3RyaW5nIHBhaXIgaXMKLSsJCQkJCSBpbnZhbGlkLiAgKi8KLSsJCQkJICAgICAgdmFsaWQgPSAwOwotKwkJCQkgICAgICBicmVhazsKLSsJCQkJICAgIH0KLSsJCQkJfQotKwotKwkJCSAgICBpZiAoIXZhbGlkKQotKwkJCSAgICAgIGJyZWFrOwotKwkJCSAgfQotKwotKwkJCWlmICh2YWxpZCkKLSsJCQkgIHsKLSsJCQkgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykKLSsJCQkgICAgICB7Ci0rCQkJCWNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICpzeXNkZXBfc3RyaW5nID0KLSsJCQkJICAoY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKikKLSsJCQkJICAoKGNoYXIgKikgZGF0YQotKwkJCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotKwkJCQkJaiA9PSAwCi0rCQkJCQk/IG9yaWdfc3lzZGVwX3RhYltpXQotKwkJCQkJOiB0cmFuc19zeXNkZXBfdGFiW2ldKSk7Ci0rCQkJCWNvbnN0IGNoYXIgKnN0YXRpY19zZWdtZW50cyA9Ci0rCQkJCSAgKGNoYXIgKikgZGF0YQotKwkJCQkgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHN5c2RlcF9zdHJpbmctPm9mZnNldCk7Ci0rCQkJCWNvbnN0IHN0cnVjdCBzZWdtZW50X3BhaXIgKnAgPQotKwkJCQkgIHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOwotKwotKwkJCQkvKiBDb25jYXRlbmF0ZSB0aGUgc2VnbWVudHMsIGFuZCBmaWxsCi0rCQkJCSAgIGlubWVtX29yaWdfc3lzZGVwX3RhYltrXSAoZm9yIGogPT0gMCkgYW5kCi0rCQkJCSAgIGlubWVtX3RyYW5zX3N5c2RlcF90YWJba10gKGZvciBqID09IDEpLiAgKi8KLSsKLSsJCQkJc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqaW5tZW1fdGFiX2VudHJ5ID0KLSsJCQkJICAoaiA9PSAwCi0rCQkJCSAgID8gaW5tZW1fb3JpZ19zeXNkZXBfdGFiCi0rCQkJCSAgIDogaW5tZW1fdHJhbnNfc3lzZGVwX3RhYikKLSsJCQkJICArIGs7Ci0rCi0rCQkJCWlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKQotKwkJCQkgICAgPT0gU0VHTUVOVFNfRU5EKQotKwkJCQkgIHsKLSsJCQkJICAgIC8qIE9ubHkgb25lIHN0YXRpYyBzZWdtZW50LiAgKi8KLSsJCQkJICAgIGlubWVtX3RhYl9lbnRyeS0+bGVuZ3RoID0KLSsJCQkJICAgICAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnNlZ3NpemUpOwotKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5wb2ludGVyID0gc3RhdGljX3NlZ21lbnRzOwotKwkJCQkgIH0KLSsJCQkJZWxzZQotKwkJCQkgIHsKLSsJCQkJICAgIGlubWVtX3RhYl9lbnRyeS0+cG9pbnRlciA9IG1lbTsKLSsKLSsJCQkJICAgIGZvciAocCA9IHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOzsgcCsrKQotKwkJCQkgICAgICB7Ci0rCQkJCQlubHNfdWludDMyIHNlZ3NpemUgPQotKwkJCQkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c2Vnc2l6ZSk7Ci0rCQkJCQlubHNfdWludDMyIHN5c2RlcHJlZiA9Ci0rCQkJCQkgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpOwotKwkJCQkJc2l6ZV90IG47Ci0rCi0rCQkJCQlpZiAoc2Vnc2l6ZSA+IDApCi0rCQkJCQkgIHsKLSsJCQkJCSAgICBtZW1jcHkgKG1lbSwgc3RhdGljX3NlZ21lbnRzLCBzZWdzaXplKTsKLSsJCQkJCSAgICBtZW0gKz0gc2Vnc2l6ZTsKLSsJCQkJCSAgICBzdGF0aWNfc2VnbWVudHMgKz0gc2Vnc2l6ZTsKLSsJCQkJCSAgfQotKwotKwkJCQkJaWYgKHN5c2RlcHJlZiA9PSBTRUdNRU5UU19FTkQpCi0rCQkJCQkgIGJyZWFrOwotKwotKwkJCQkJbiA9IHN0cmxlbiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0pOwotKwkJCQkJbWVtY3B5IChtZW0sIHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tzeXNkZXByZWZdLCBuKTsKLSsJCQkJCW1lbSArPSBuOwotKwkJCQkgICAgICB9Ci0rCi0rCQkJCSAgICBpbm1lbV90YWJfZW50cnktPmxlbmd0aCA9Ci0rCQkJCSAgICAgIG1lbSAtIGlubWVtX3RhYl9lbnRyeS0+cG9pbnRlcjsKLSsJCQkJICB9Ci0rCQkJICAgICAgfQotKwotKwkJCSAgICBrKys7Ci0rCQkJICB9Ci0rCQkgICAgICB9Ci0rCQkgICAgaWYgKGsgIT0gbl9pbm1lbV9zeXNkZXBfc3RyaW5ncykKLSsJCSAgICAgIGFib3J0ICgpOwotKwotKwkJICAgIC8qIENvbXB1dGUgdGhlIGF1Z21lbnRlZCBoYXNoIHRhYmxlLiAgKi8KLSsJCSAgICBmb3IgKGkgPSAwOyBpIDwgZG9tYWluLT5oYXNoX3NpemU7IGkrKykKLSsJCSAgICAgIGlubWVtX2hhc2hfdGFiW2ldID0KLSsJCQlXIChkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiwgZG9tYWluLT5oYXNoX3RhYltpXSk7Ci0rCQkgICAgZm9yIChpID0gMDsgaSA8IG5faW5tZW1fc3lzZGVwX3N0cmluZ3M7IGkrKykKLSsJCSAgICAgIHsKLSsJCQljb25zdCBjaGFyICptc2dpZCA9IGlubWVtX29yaWdfc3lzZGVwX3RhYltpXS5wb2ludGVyOwotKwkJCW5sc191aW50MzIgaGFzaF92YWwgPSBoYXNoX3N0cmluZyAobXNnaWQpOwotKwkJCW5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKLSsJCQlubHNfdWludDMyIGluY3IgPQotKwkJCSAgMSArIChoYXNoX3ZhbCAlIChkb21haW4tPmhhc2hfc2l6ZSAtIDIpKTsKLSsKLSsJCQlmb3IgKDs7KQotKwkJCSAgewotKwkJCSAgICBpZiAoaW5tZW1faGFzaF90YWJbaWR4XSA9PSAwKQotKwkJCSAgICAgIHsKLSsJCQkJLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gIFVzZSBpdC4gICovCi0rCQkJCWlubWVtX2hhc2hfdGFiW2lkeF0gPSAxICsgZG9tYWluLT5uc3RyaW5ncyArIGk7Ci0rCQkJCWJyZWFrOwotKwkJCSAgICAgIH0KLSsKLSsJCQkgICAgaWYgKGlkeCA+PSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3IpCi0rCQkJICAgICAgaWR4IC09IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcjsKLSsJCQkgICAgZWxzZQotKwkJCSAgICAgIGlkeCArPSBpbmNyOwotKwkJCSAgfQotKwkJICAgICAgfQotKwotKwkJICAgIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncyA9IG5faW5tZW1fc3lzZGVwX3N0cmluZ3M7Ci0rCQkgICAgZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBpbm1lbV9vcmlnX3N5c2RlcF90YWI7Ci0rCQkgICAgZG9tYWluLT50cmFuc19zeXNkZXBfdGFiID0gaW5tZW1fdHJhbnNfc3lzZGVwX3RhYjsKLSsKLSsJCSAgICBkb21haW4tPmhhc2hfdGFiID0gaW5tZW1faGFzaF90YWI7Ci0rCQkgICAgZG9tYWluLT5tdXN0X3N3YXBfaGFzaF90YWIgPSAwOwotKwkJICB9Ci0rCQllbHNlCi0rCQkgIHsKLSsJCSAgICBkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkJICAgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiID0gTlVMTDsKLSsJCSAgICBkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBOVUxMOwotKwkJICB9Ci0rCi0rCQlmcmVlYSAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzKTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkJZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBOVUxMOwotKwkJZG9tYWluLT50cmFuc19zeXNkZXBfdGFiID0gTlVMTDsKLSsJICAgICAgfQotKwkgIH0KLSsJICBicmVhazsKLSsJfQotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotLSAgICAgIC8qIFRoaXMgaXMgYW4gaWxsZWdhbCByZXZpc2lvbi4gICovCi0tI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKLS0gICAgfHwgZGVmaW5lZCBfTElCQwotKyAgICAgIC8qIFRoaXMgaXMgYW4gaW52YWxpZCByZXZpc2lvbi4gICovCi0rICAgIGludmFsaWQ6Ci0rICAgICAgLyogVGhpcyBpcyBhbiBpbnZhbGlkIC5tbyBmaWxlLiAgKi8KLSsgICAgICBpZiAoZG9tYWluLT5tYWxsb2NlZCkKLSsJZnJlZSAoZG9tYWluLT5tYWxsb2NlZCk7Ci0rI2lmZGVmIEhBVkVfTU1BUAotICAgICAgIGlmICh1c2VfbW1hcCkKLS0JbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc3Quc3Rfc2l6ZSk7Ci0rCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHNpemUpOwotICAgICAgIGVsc2UKLSAjZW5kaWYKLSAJZnJlZSAoZGF0YSk7Ci1AQCAtMTkzLDcgKzEzODUsMzYgQEAKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0gIC8qIFNob3cgdGhhdCBvbmUgZG9tYWluIGlzIGNoYW5nZWQuICBUaGlzIG1pZ2h0IG1ha2Ugc29tZSBjYWNoZWQKLS0gICAgIHRyYW5zbGF0aW9ucyBpbnZhbGlkLiAgKi8KLS0gICsrX25sX21zZ19jYXRfY250cjsKLSsgIC8qIE5vdyBpbml0aWFsaXplIHRoZSBjaGFyYWN0ZXIgc2V0IGNvbnZlcnRlciBmcm9tIHRoZSBjaGFyYWN0ZXIgc2V0Ci0rICAgICB0aGUgZmlsZSBpcyBlbmNvZGVkIHdpdGggKGZvdW5kIGluIHRoZSBoZWFkZXIgZW50cnkpIHRvIHRoZSBkb21haW4ncwotKyAgICAgc3BlY2lmaWVkIGNoYXJhY3RlciBzZXQgb3IgdGhlIGxvY2FsZSdzIGNoYXJhY3RlciBzZXQuICAqLwotKyAgbnVsbGVudHJ5ID0gX25sX2luaXRfZG9tYWluX2NvbnYgKGRvbWFpbl9maWxlLCBkb21haW4sIGRvbWFpbmJpbmRpbmcpOwotKwotKyAgLyogQWxzbyBsb29rIGZvciBhIHBsdXJhbCBzcGVjaWZpY2F0aW9uLiAgKi8KLSsgIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gKG51bGxlbnRyeSwgJmRvbWFpbi0+cGx1cmFsLCAmZG9tYWluLT5ucGx1cmFscyk7Ci0gfQotKwotKwotKyNpZmRlZiBfTElCQwotK3ZvaWQKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF91bmxvYWRfZG9tYWluIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluKQotK3sKLSsgIGlmIChkb21haW4tPnBsdXJhbCAhPSAmX19nZXR0ZXh0X2dlcm1hbmljX3BsdXJhbCkKLSsgICAgX19nZXR0ZXh0X2ZyZWVfZXhwIChkb21haW4tPnBsdXJhbCk7Ci0rCi0rICBfbmxfZnJlZV9kb21haW5fY29udiAoZG9tYWluKTsKLSsKLSsgIGlmIChkb21haW4tPm1hbGxvY2VkKQotKyAgICBmcmVlIChkb21haW4tPm1hbGxvY2VkKTsKLSsKLSsjIGlmZGVmIF9QT1NJWF9NQVBQRURfRklMRVMKLSsgIGlmIChkb21haW4tPnVzZV9tbWFwKQotKyAgICBtdW5tYXAgKChjYWRkcl90KSBkb21haW4tPmRhdGEsIGRvbWFpbi0+bW1hcF9zaXplKTsKLSsgIGVsc2UKLSsjIGVuZGlmCS8qIF9QT1NJWF9NQVBQRURfRklMRVMgKi8KLSsgICAgZnJlZSAoKHZvaWQgKikgZG9tYWluLT5kYXRhKTsKLSsKLSsgIGZyZWUgKGRvbWFpbik7Ci0rfQotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvY2FsY2hhcnNldC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsY2hhcnNldC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDc4NzI5MzkyIC0wNDAwCi1AQCAtMCwwICsxLDM5OCBAQAotKy8qIERldGVybWluZSBhIGNhbm9uaWNhbCBuYW1lIGZvciB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmaWNhdGlvbi4gICovCi0rI2luY2x1ZGUgImxvY2FsY2hhcnNldC5oIgotKwotKyNpZiBIQVZFX1NURERFRl9ICi0rIyBpbmNsdWRlIDxzdGRkZWYuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaWYgSEFWRV9TVFJJTkdfSAotKyMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgPHN0cmluZ3MuaD4KLSsjZW5kaWYKLSsjaWYgSEFWRV9TVERMSUJfSAotKyMgaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCi0rIyB1bmRlZiBXSU4zMiAgIC8qIGF2b2lkIHdhcm5pbmcgb24gbWluZ3czMiAqLwotKyMgZGVmaW5lIFdJTjMyCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX19FTVhfXwotKy8qIEFzc3VtZSBFTVggcHJvZ3JhbSBydW5zIG9uIE9TLzIsIGV2ZW4gaWYgY29tcGlsZWQgdW5kZXIgRE9TLiAgKi8KLSsjIGRlZmluZSBPUzIKLSsjZW5kaWYKLSsKLSsjaWYgIWRlZmluZWQgV0lOMzIKLSsjIGlmIEhBVkVfTEFOR0lORk9fQ09ERVNFVAotKyMgIGluY2x1ZGUgPGxhbmdpbmZvLmg+Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9TRVRMT0NBTEUKLSsjICAgaW5jbHVkZSA8bG9jYWxlLmg+Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VsaWYgZGVmaW5lZCBXSU4zMgotKyMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSsjIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBPUzIKLSsjIGRlZmluZSBJTkNMX0RPUwotKyMgaW5jbHVkZSA8b3MyLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIEVOQUJMRV9SRUxPQ0FUQUJMRQotKyMgaW5jbHVkZSAicmVsb2NhdGFibGUuaCIKLSsjZWxzZQotKyMgZGVmaW5lIHJlbG9jYXRlKHBhdGhuYW1lKSAocGF0aG5hbWUpCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXwotKyAgLyogV2luMzIsIE9TLzIsIERPUyAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBESVJFQ1RPUllfU0VQQVJBVE9SCi0rIyBkZWZpbmUgRElSRUNUT1JZX1NFUEFSQVRPUiAnLycKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIElTU0xBU0gKLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gRElSRUNUT1JZX1NFUEFSQVRPUikKLSsjZW5kaWYKLSsKLSsjaWYgSEFWRV9ERUNMX0dFVENfVU5MT0NLRUQKLSsjIHVuZGVmIGdldGMKLSsjIGRlZmluZSBnZXRjIGdldGNfdW5sb2NrZWQKLSsjZW5kaWYKLSsKLSsvKiBUaGUgZm9sbG93aW5nIHN0YXRpYyB2YXJpYWJsZSBpcyBkZWNsYXJlZCAndm9sYXRpbGUnIHRvIGF2b2lkIGEKLSsgICBwb3NzaWJsZSBtdWx0aXRocmVhZCBwcm9ibGVtIGluIHRoZSBmdW5jdGlvbiBnZXRfY2hhcnNldF9hbGlhc2VzLiBJZiB3ZQotKyAgIGFyZSBydW5uaW5nIGluIGEgdGhyZWFkZWQgZW52aXJvbm1lbnQsIGFuZCBpZiB0d28gdGhyZWFkcyBpbml0aWFsaXplCi0rICAgJ2NoYXJzZXRfYWxpYXNlcycgc2ltdWx0YW5lb3VzbHksIGJvdGggd2lsbCBwcm9kdWNlIHRoZSBzYW1lIHZhbHVlLAotKyAgIGFuZCBldmVyeXRoaW5nIHdpbGwgYmUgb2sgaWYgdGhlIHR3byBhc3NpZ25tZW50cyB0byAnY2hhcnNldF9hbGlhc2VzJwotKyAgIGFyZSBhdG9taWMuIEJ1dCBJIGRvbid0IGtub3cgd2hhdCB3aWxsIGhhcHBlbiBpZiB0aGUgdHdvIGFzc2lnbm1lbnRzIG1peC4gICovCi0rI2lmIF9fU1REQ19fICE9IDEKLSsjIGRlZmluZSB2b2xhdGlsZSAvKiBlbXB0eSAqLwotKyNlbmRpZgotKy8qIFBvaW50ZXIgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUsIGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4KLSsgICByZWFkLCBlbHNlIE5VTEwuICBJdHMgZm9ybWF0IGlzOgotKyAgIEFMSUFTXzEgJ1wwJyBDQU5PTklDQUxfMSAnXDAnIC4uLiBBTElBU19uICdcMCcgQ0FOT05JQ0FMX24gJ1wwJyAnXDAnICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICogdm9sYXRpbGUgY2hhcnNldF9hbGlhc2VzOwotKwotKy8qIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStnZXRfY2hhcnNldF9hbGlhc2VzICgpCi0rewotKyAgY29uc3QgY2hhciAqY3A7Ci0rCi0rICBjcCA9IGNoYXJzZXRfYWxpYXNlczsKLSsgIGlmIChjcCA9PSBOVUxMKQotKyAgICB7Ci0rI2lmICEoZGVmaW5lZCBWTVMgfHwgZGVmaW5lZCBXSU4zMikKLSsgICAgICBGSUxFICpmcDsKLSsgICAgICBjb25zdCBjaGFyICpkaXIgPSByZWxvY2F0ZSAoTElCRElSKTsKLSsgICAgICBjb25zdCBjaGFyICpiYXNlID0gImNoYXJzZXQuYWxpYXMiOwotKyAgICAgIGNoYXIgKmZpbGVfbmFtZTsKLSsKLSsgICAgICAvKiBDb25jYXRlbmF0ZSBkaXIgYW5kIGJhc2UgaW50byBmcmVzaGx5IGFsbG9jYXRlZCBmaWxlX25hbWUuICAqLwotKyAgICAgIHsKLSsJc2l6ZV90IGRpcl9sZW4gPSBzdHJsZW4gKGRpcik7Ci0rCXNpemVfdCBiYXNlX2xlbiA9IHN0cmxlbiAoYmFzZSk7Ci0rCWludCBhZGRfc2xhc2ggPSAoZGlyX2xlbiA+IDAgJiYgIUlTU0xBU0ggKGRpcltkaXJfbGVuIC0gMV0pKTsKLSsJZmlsZV9uYW1lID0gKGNoYXIgKikgbWFsbG9jIChkaXJfbGVuICsgYWRkX3NsYXNoICsgYmFzZV9sZW4gKyAxKTsKLSsJaWYgKGZpbGVfbmFtZSAhPSBOVUxMKQotKwkgIHsKLSsJICAgIG1lbWNweSAoZmlsZV9uYW1lLCBkaXIsIGRpcl9sZW4pOwotKwkgICAgaWYgKGFkZF9zbGFzaCkKLSsJICAgICAgZmlsZV9uYW1lW2Rpcl9sZW5dID0gRElSRUNUT1JZX1NFUEFSQVRPUjsKLSsJICAgIG1lbWNweSAoZmlsZV9uYW1lICsgZGlyX2xlbiArIGFkZF9zbGFzaCwgYmFzZSwgYmFzZV9sZW4gKyAxKTsKLSsJICB9Ci0rICAgICAgfQotKwotKyAgICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCB8fCAoZnAgPSBmb3BlbiAoZmlsZV9uYW1lLCAiciIpKSA9PSBOVUxMKQotKwkvKiBPdXQgb2YgbWVtb3J5IG9yIGZpbGUgbm90IGZvdW5kLCB0cmVhdCBpdCBhcyBlbXB0eS4gICovCi0rCWNwID0gIiI7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogUGFyc2UgdGhlIGZpbGUncyBjb250ZW50cy4gICovCi0rCSAgaW50IGM7Ci0rCSAgY2hhciBidWYxWzUwKzFdOwotKwkgIGNoYXIgYnVmMls1MCsxXTsKLSsJICBjaGFyICpyZXNfcHRyID0gTlVMTDsKLSsJICBzaXplX3QgcmVzX3NpemUgPSAwOwotKwkgIHNpemVfdCBsMSwgbDI7Ci0rCi0rCSAgZm9yICg7OykKLSsJICAgIHsKLSsJICAgICAgYyA9IGdldGMgKGZwKTsKLSsJICAgICAgaWYgKGMgPT0gRU9GKQotKwkJYnJlYWs7Ci0rCSAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAnICcgfHwgYyA9PSAnXHQnKQotKwkJY29udGludWU7Ci0rCSAgICAgIGlmIChjID09ICcjJykKLSsJCXsKLSsJCSAgLyogU2tpcCBjb21tZW50LCB0byBlbmQgb2YgbGluZS4gICovCi0rCQkgIGRvCi0rCQkgICAgYyA9IGdldGMgKGZwKTsKLSsJCSAgd2hpbGUgKCEoYyA9PSBFT0YgfHwgYyA9PSAnXG4nKSk7Ci0rCQkgIGlmIChjID09IEVPRikKLSsJCSAgICBicmVhazsKLSsJCSAgY29udGludWU7Ci0rCQl9Ci0rCSAgICAgIHVuZ2V0YyAoYywgZnApOwotKwkgICAgICBpZiAoZnNjYW5mIChmcCwgIiU1MHMgJTUwcyIsIGJ1ZjEsIGJ1ZjIpIDwgMikKLSsJCWJyZWFrOwotKwkgICAgICBsMSA9IHN0cmxlbiAoYnVmMSk7Ci0rCSAgICAgIGwyID0gc3RybGVuIChidWYyKTsKLSsJICAgICAgaWYgKHJlc19zaXplID09IDApCi0rCQl7Ci0rCQkgIHJlc19zaXplID0gbDEgKyAxICsgbDIgKyAxOwotKwkJICByZXNfcHRyID0gKGNoYXIgKikgbWFsbG9jIChyZXNfc2l6ZSArIDEpOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIHJlc19zaXplICs9IGwxICsgMSArIGwyICsgMTsKLSsJCSAgcmVzX3B0ciA9IChjaGFyICopIHJlYWxsb2MgKHJlc19wdHIsIHJlc19zaXplICsgMSk7Ci0rCQl9Ci0rCSAgICAgIGlmIChyZXNfcHRyID09IE5VTEwpCi0rCQl7Ci0rCQkgIC8qIE91dCBvZiBtZW1vcnkuICovCi0rCQkgIHJlc19zaXplID0gMDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICAgIHN0cmNweSAocmVzX3B0ciArIHJlc19zaXplIC0gKGwyICsgMSkgLSAobDEgKyAxKSwgYnVmMSk7Ci0rCSAgICAgIHN0cmNweSAocmVzX3B0ciArIHJlc19zaXplIC0gKGwyICsgMSksIGJ1ZjIpOwotKwkgICAgfQotKwkgIGZjbG9zZSAoZnApOwotKwkgIGlmIChyZXNfc2l6ZSA9PSAwKQotKwkgICAgY3AgPSAiIjsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgICoocmVzX3B0ciArIHJlc19zaXplKSA9ICdcMCc7Ci0rCSAgICAgIGNwID0gcmVzX3B0cjsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIGlmIChmaWxlX25hbWUgIT0gTlVMTCkKLSsJZnJlZSAoZmlsZV9uYW1lKTsKLSsKLSsjZWxzZQotKwotKyMgaWYgZGVmaW5lZCBWTVMKLSsgICAgICAvKiBUbyBhdm9pZCB0aGUgdHJvdWJsZXMgb2YgYW4gZXh0cmEgZmlsZSBjaGFyc2V0LmFsaWFzX3ZtcyBpbiB0aGUKLSsJIHNvdXJjZXMgb2YgbWFueSBHTlUgcGFja2FnZXMsIHNpbXBseSBpbmxpbmUgdGhlIGFsaWFzZXMgaGVyZS4gICovCi0rICAgICAgLyogVGhlIGxpc3Qgb2YgZW5jb2RpbmdzIGlzIHRha2VuIGZyb20gdGhlIE9wZW5WTVMgNy4zLTEgZG9jdW1lbnRhdGlvbgotKwkgIkNvbXBhcSBDIFJ1bi1UaW1lIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCBmb3IgT3BlblZNUyBzeXN0ZW1zIgotKwkgc2VjdGlvbiAxMC43ICJIYW5kbGluZyBEaWZmZXJlbnQgQ2hhcmFjdGVyIFNldHMiLiAgKi8KLSsgICAgICBjcCA9ICJJU084ODU5LTEiICJcMCIgIklTTy04ODU5LTEiICJcMCIKLSsJICAgIklTTzg4NTktMiIgIlwwIiAiSVNPLTg4NTktMiIgIlwwIgotKwkgICAiSVNPODg1OS01IiAiXDAiICJJU08tODg1OS01IiAiXDAiCi0rCSAgICJJU084ODU5LTciICJcMCIgIklTTy04ODU5LTciICJcMCIKLSsJICAgIklTTzg4NTktOCIgIlwwIiAiSVNPLTg4NTktOCIgIlwwIgotKwkgICAiSVNPODg1OS05IiAiXDAiICJJU08tODg1OS05IiAiXDAiCi0rCSAgIC8qIEphcGFuZXNlICovCi0rCSAgICJldWNKUCIgIlwwIiAiRVVDLUpQIiAiXDAiCi0rCSAgICJTSklTIiAiXDAiICJTSElGVF9KSVMiICJcMCIKLSsJICAgIkRFQ0tBTkpJIiAiXDAiICJERUMtS0FOSkkiICJcMCIKLSsJICAgIlNERUNLQU5KSSIgIlwwIiAiRVVDLUpQIiAiXDAiCi0rCSAgIC8qIENoaW5lc2UgKi8KLSsJICAgImV1Y1RXIiAiXDAiICJFVUMtVFciICJcMCIKLSsJICAgIkRFQ0hBTllVIiAiXDAiICJERUMtSEFOWVUiICJcMCIKLSsJICAgIkRFQ0hBTlpJIiAiXDAiICJHQjIzMTIiICJcMCIKLSsJICAgLyogS29yZWFuICovCi0rCSAgICJERUNLT1JFQU4iICJcMCIgIkVVQy1LUiIgIlwwIjsKLSsjIGVuZGlmCi0rCi0rIyBpZiBkZWZpbmVkIFdJTjMyCi0rICAgICAgLyogVG8gYXZvaWQgdGhlIHRyb3VibGVzIG9mIGluc3RhbGxpbmcgYSBzZXBhcmF0ZSBmaWxlIGluIHRoZSBzYW1lCi0rCSBkaXJlY3RvcnkgYXMgdGhlIERMTCBhbmQgb2YgcmV0cmlldmluZyB0aGUgRExMJ3MgZGlyZWN0b3J5IGF0Ci0rCSBydW50aW1lLCBzaW1wbHkgaW5saW5lIHRoZSBhbGlhc2VzIGhlcmUuICAqLwotKwotKyAgICAgIGNwID0gIkNQOTM2IiAiXDAiICJHQksiICJcMCIKLSsJICAgIkNQMTM2MSIgIlwwIiAiSk9IQUIiICJcMCIKLSsJICAgIkNQMjAxMjciICJcMCIgIkFTQ0lJIiAiXDAiCi0rCSAgICJDUDIwODY2IiAiXDAiICJLT0k4LVIiICJcMCIKLSsJICAgIkNQMjE4NjYiICJcMCIgIktPSTgtUlUiICJcMCIKLSsJICAgIkNQMjg1OTEiICJcMCIgIklTTy04ODU5LTEiICJcMCIKLSsJICAgIkNQMjg1OTIiICJcMCIgIklTTy04ODU5LTIiICJcMCIKLSsJICAgIkNQMjg1OTMiICJcMCIgIklTTy04ODU5LTMiICJcMCIKLSsJICAgIkNQMjg1OTQiICJcMCIgIklTTy04ODU5LTQiICJcMCIKLSsJICAgIkNQMjg1OTUiICJcMCIgIklTTy04ODU5LTUiICJcMCIKLSsJICAgIkNQMjg1OTYiICJcMCIgIklTTy04ODU5LTYiICJcMCIKLSsJICAgIkNQMjg1OTciICJcMCIgIklTTy04ODU5LTciICJcMCIKLSsJICAgIkNQMjg1OTgiICJcMCIgIklTTy04ODU5LTgiICJcMCIKLSsJICAgIkNQMjg1OTkiICJcMCIgIklTTy04ODU5LTkiICJcMCIKLSsJICAgIkNQMjg2MDUiICJcMCIgIklTTy04ODU5LTE1IiAiXDAiOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsgICAgICBjaGFyc2V0X2FsaWFzZXMgPSBjcDsKLSsgICAgfQotKwotKyAgcmV0dXJuIGNwOwotK30KLSsKLSsvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgY2hhcmFjdGVyIGVuY29kaW5nLCBhbmQgY2Fub25pY2FsaXplIGl0Ci0rICAgaW50byBvbmUgb2YgdGhlIGNhbm9uaWNhbCBuYW1lcyBsaXN0ZWQgaW4gY29uZmlnLmNoYXJzZXQuCi0rICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuCi0rICAgSWYgdGhlIGNhbm9uaWNhbCBuYW1lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCB0aGUgcmVzdWx0IGlzIGEgbm9uLWNhbm9uaWNhbAotKyAgIG5hbWUuICAqLwotKwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZW5kaWYKLStjb25zdCBjaGFyICoKLStsb2NhbGVfY2hhcnNldCAoKQotK3sKLSsgIGNvbnN0IGNoYXIgKmNvZGVzZXQ7Ci0rICBjb25zdCBjaGFyICphbGlhc2VzOwotKwotKyNpZiAhKGRlZmluZWQgV0lOMzIgfHwgZGVmaW5lZCBPUzIpCi0rCi0rIyBpZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKLSsKLSsgIC8qIE1vc3Qgc3lzdGVtcyBzdXBwb3J0IG5sX2xhbmdpbmZvIChDT0RFU0VUKSBub3dhZGF5cy4gICovCi0rICBjb2Rlc2V0ID0gbmxfbGFuZ2luZm8gKENPREVTRVQpOwotKwotKyMgZWxzZQotKwotKyAgLyogT24gb2xkIHN5c3RlbXMgd2hpY2ggbGFjayBpdCwgdXNlIHNldGxvY2FsZSBvciBnZXRlbnYuICAqLwotKyAgY29uc3QgY2hhciAqbG9jYWxlID0gTlVMTDsKLSsKLSsgIC8qIEJ1dCBtb3N0IG9sZCBzeXN0ZW1zIGRvbid0IGhhdmUgYSBjb21wbGV0ZSBzZXQgb2YgbG9jYWxlcy4gIFNvbWUKLSsgICAgIChsaWtlIFN1bk9TIDQgb3IgREpHUFApIGhhdmUgb25seSB0aGUgQyBsb2NhbGUuICBUaGVyZWZvcmUgd2UgZG9uJ3QKLSsgICAgIHVzZSBzZXRsb2NhbGUgaGVyZTsgaXQgd291bGQgcmV0dXJuICJDIiB3aGVuIGl0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUKLSsgICAgIGxvY2FsZSBuYW1lIHRoZSB1c2VyIGhhcyBzZXQuICAqLwotKyMgIGlmIEhBVkVfU0VUTE9DQUxFICYmIDAKLSsgIGxvY2FsZSA9IHNldGxvY2FsZSAoTENfQ1RZUEUsIE5VTEwpOwotKyMgIGVuZGlmCi0rICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICBsb2NhbGUgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLSsgICAgICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCi0rCXsKLSsJICBsb2NhbGUgPSBnZXRlbnYgKCJMQ19DVFlQRSIpOwotKwkgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKLSsJICAgIGxvY2FsZSA9IGdldGVudiAoIkxBTkciKTsKLSsJfQotKyAgICB9Ci0rCi0rICAvKiBPbiBzb21lIG9sZCBzeXN0ZW1zLCBvbmUgdXNlZCB0byBzZXQgbG9jYWxlID0gImlzbzg4NTlfMSIuIE9uIG90aGVycywKLSsgICAgIHlvdSBzZXQgaXQgdG8gImxhbmd1YWdlX0NPVU5UUlkuY2hhcnNldCIuIEluIGFueSBjYXNlLCB3ZSByZXNvbHZlIGl0Ci0rICAgICB0aHJvdWdoIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLwotKyAgY29kZXNldCA9IGxvY2FsZTsKLSsKLSsjIGVuZGlmCi0rCi0rI2VsaWYgZGVmaW5lZCBXSU4zMgotKwotKyAgc3RhdGljIGNoYXIgYnVmWzIgKyAxMCArIDFdOwotKwotKyAgLyogV29lMzIgaGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBsb2NhbGUncyBjb2RlcGFnZSBhcyBhIG51bWJlci4gICovCi0rICBzcHJpbnRmIChidWYsICJDUCV1IiwgR2V0QUNQICgpKTsKLSsgIGNvZGVzZXQgPSBidWY7Ci0rCi0rI2VsaWYgZGVmaW5lZCBPUzIKLSsKLSsgIGNvbnN0IGNoYXIgKmxvY2FsZTsKLSsgIHN0YXRpYyBjaGFyIGJ1ZlsyICsgMTAgKyAxXTsKLSsgIFVMT05HIGNwWzNdOwotKyAgVUxPTkcgY3BsZW47Ci0rCi0rICAvKiBBbGxvdyB1c2VyIHRvIG92ZXJyaWRlIHRoZSBjb2Rlc2V0LCBhcyBzZXQgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0sCi0rICAgICB3aXRoIHN0YW5kYXJkIGxhbmd1YWdlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCi0rICBsb2NhbGUgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLSsgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAgIGxvY2FsZSA9IGdldGVudiAoIkxDX0NUWVBFIik7Ci0rICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQotKwlsb2NhbGUgPSBnZXRlbnYgKCJMQU5HIik7Ci0rICAgIH0KLSsgIGlmIChsb2NhbGUgIT0gTlVMTCAmJiBsb2NhbGVbMF0gIT0gJ1wwJykKLSsgICAgewotKyAgICAgIC8qIElmIHRoZSBsb2NhbGUgbmFtZSBjb250YWlucyBhbiBlbmNvZGluZyBhZnRlciB0aGUgZG90LCByZXR1cm4gaXQuICAqLwotKyAgICAgIGNvbnN0IGNoYXIgKmRvdCA9IHN0cmNociAobG9jYWxlLCAnLicpOwotKwotKyAgICAgIGlmIChkb3QgIT0gTlVMTCkKLSsJewotKwkgIGNvbnN0IGNoYXIgKm1vZGlmaWVyOwotKwotKwkgIGRvdCsrOwotKwkgIC8qIExvb2sgZm9yIHRoZSBwb3NzaWJsZSBALi4uIHRyYWlsZXIgYW5kIHJlbW92ZSBpdCwgaWYgYW55LiAgKi8KLSsJICBtb2RpZmllciA9IHN0cmNociAoZG90LCAnQCcpOwotKwkgIGlmIChtb2RpZmllciA9PSBOVUxMKQotKwkgICAgcmV0dXJuIGRvdDsKLSsJICBpZiAobW9kaWZpZXIgLSBkb3QgPCBzaXplb2YgKGJ1ZikpCi0rCSAgICB7Ci0rCSAgICAgIG1lbWNweSAoYnVmLCBkb3QsIG1vZGlmaWVyIC0gZG90KTsKLSsJICAgICAgYnVmIFttb2RpZmllciAtIGRvdF0gPSAnXDAnOwotKwkgICAgICByZXR1cm4gYnVmOwotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgLyogUmVzb2x2ZSB0aHJvdWdoIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLwotKyAgICAgIGNvZGVzZXQgPSBsb2NhbGU7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIE9TLzIgaGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBsb2NhbGUncyBjb2RlcGFnZSBhcyBhIG51bWJlci4gICovCi0rICAgICAgaWYgKERvc1F1ZXJ5Q3AgKHNpemVvZiAoY3ApLCBjcCwgJmNwbGVuKSkKLSsJY29kZXNldCA9ICIiOwotKyAgICAgIGVsc2UKLSsJewotKwkgIHNwcmludGYgKGJ1ZiwgIkNQJXUiLCBjcFswXSk7Ci0rCSAgY29kZXNldCA9IGJ1ZjsKLSsJfQotKyAgICB9Ci0rCi0rI2VuZGlmCi0rCi0rICBpZiAoY29kZXNldCA9PSBOVUxMKQotKyAgICAvKiBUaGUgY2Fub25pY2FsIG5hbWUgY2Fubm90IGJlIGRldGVybWluZWQuICAqLwotKyAgICBjb2Rlc2V0ID0gIiI7Ci0rCi0rICAvKiBSZXNvbHZlIGFsaWFzLiAqLwotKyAgZm9yIChhbGlhc2VzID0gZ2V0X2NoYXJzZXRfYWxpYXNlcyAoKTsKLSsgICAgICAgKmFsaWFzZXMgIT0gJ1wwJzsKLSsgICAgICAgYWxpYXNlcyArPSBzdHJsZW4gKGFsaWFzZXMpICsgMSwgYWxpYXNlcyArPSBzdHJsZW4gKGFsaWFzZXMpICsgMSkKLSsgICAgaWYgKHN0cmNtcCAoY29kZXNldCwgYWxpYXNlcykgPT0gMAotKwl8fCAoYWxpYXNlc1swXSA9PSAnKicgJiYgYWxpYXNlc1sxXSA9PSAnXDAnKSkKLSsgICAgICB7Ci0rCWNvZGVzZXQgPSBhbGlhc2VzICsgc3RybGVuIChhbGlhc2VzKSArIDE7Ci0rCWJyZWFrOwotKyAgICAgIH0KLSsKLSsgIC8qIERvbid0IHJldHVybiBhbiBlbXB0eSBzdHJpbmcuICBHTlUgbGliYyBhbmQgR05VIGxpYmljb252IGludGVycHJldAotKyAgICAgdGhlIGVtcHR5IHN0cmluZyBhcyBkZW5vdGluZyAidGhlIGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZyIsCi0rICAgICB0aHVzIEdOVSBsaWJpY29udiB3b3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYSBzZWNvbmQgdGltZS4gICovCi0rICBpZiAoY29kZXNldFswXSA9PSAnXDAnKQotKyAgICBjb2Rlc2V0ID0gIkFTQ0lJIjsKLSsKLSsgIHJldHVybiBjb2Rlc2V0OwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2NhbGNoYXJzZXQuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGNoYXJzZXQuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ4MzcyODYzMiAtMDQwMAotQEAgLTAsMCArMSw0MiBAQAotKy8qIERldGVybWluZSBhIGNhbm9uaWNhbCBuYW1lIGZvciB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDSEFSU0VUIExpYnJhcnkuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX0xPQ0FMQ0hBUlNFVF9ICi0rI2RlZmluZSBfTE9DQUxDSEFSU0VUX0gKLSsKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsKLSsvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgY2hhcmFjdGVyIGVuY29kaW5nLCBhbmQgY2Fub25pY2FsaXplIGl0Ci0rICAgaW50byBvbmUgb2YgdGhlIGNhbm9uaWNhbCBuYW1lcyBsaXN0ZWQgaW4gY29uZmlnLmNoYXJzZXQuCi0rICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuCi0rICAgSWYgdGhlIGNhbm9uaWNhbCBuYW1lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCB0aGUgcmVzdWx0IGlzIGEgbm9uLWNhbm9uaWNhbAotKyAgIG5hbWUuICAqLwotK2V4dGVybiBjb25zdCBjaGFyICogbG9jYWxlX2NoYXJzZXQgKHZvaWQpOwotKwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsKLSsjZW5kaWYgLyogX0xPQ0FMQ0hBUlNFVF9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxlLmFsaWFzCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZS5hbGlhcwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ5OTcyNjIwMCAtMDQwMAotQEAgLTAsMCArMSw3OCBAQAotKyMgTG9jYWxlIG5hbWUgYWxpYXMgZGF0YSBiYXNlLgotKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyMgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsjIFVTQS4KLSsKLSsjIFRoZSBmb3JtYXQgb2YgdGhpcyBmaWxlIGlzIHRoZSBzYW1lIGFzIGZvciB0aGUgY29ycmVzcG9uZGluZyBmaWxlIG9mCi0rIyB0aGUgWCBXaW5kb3cgU3lzdGVtLCB3aGljaCBub3JtYWxseSBjYW4gYmUgZm91bmQgaW4KLSsjCS91c3IvbGliL1gxMS9sb2NhbGUvbG9jYWxlLmFsaWFzCi0rIyBBIHNpbmdsZSBsaW5lIGNvbnRhaW5zIHR3byBmaWVsZHM6IGFuIGFsaWFzIGFuZCBhIHN1YnN0aXR1dGlvbiB2YWx1ZS4KLSsjIEFsbCBlbnRyaWVzIGFyZSBjYXNlIGluZGVwZW5kZW50LgotKwotKyMgTm90ZTogVGhpcyBmaWxlIGlzIGZhciBmcm9tIGJlaW5nIGNvbXBsZXRlLiAgSWYgeW91IGhhdmUgYSB2YWx1ZSBmb3IKLSsjIHlvdXIgb3duIHNpdGUgd2hpY2ggeW91IHRoaW5rIG1pZ2h0IGJlIHVzZWZ1bCBmb3Igb3RoZXJzIHRvbywgc2hhcmUKLSsjIGl0IHdpdGggdGhlIHJlc3Qgb2YgdXMuICBTZW5kIGl0IHVzaW5nIHRoZSBgZ2xpYmNidWcnIHNjcmlwdCB0bwotKyMgYnVnc0BnbnUub3JnLgotKwotKyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAKLSsKLStib2ttYWwJCW5iX05PLklTTy04ODU5LTEKLStib2tt5WwJCW5iX05PLklTTy04ODU5LTEKLStjYXRhbGFuCQljYV9FUy5JU08tODg1OS0xCi0rY3JvYXRpYW4JaHJfSFIuSVNPLTg4NTktMgotK2N6ZWNoCQljc19DWi5JU08tODg1OS0yCi0rZGFuaXNoICAgICAgICAgIGRhX0RLLklTTy04ODU5LTEKLStkYW5zawkJZGFfREsuSVNPLTg4NTktMQotK2RldXRzY2gJCWRlX0RFLklTTy04ODU5LTEKLStkdXRjaAkJbmxfTkwuSVNPLTg4NTktMQotK2Vlc3RpCQlldF9FRS5JU08tODg1OS0xCi0rZXN0b25pYW4JZXRfRUUuSVNPLTg4NTktMQotK2Zpbm5pc2ggICAgICAgICBmaV9GSS5JU08tODg1OS0xCi0rZnJhbudhaXMJZnJfRlIuSVNPLTg4NTktMQotK2ZyZW5jaAkJZnJfRlIuSVNPLTg4NTktMQotK2dhbGVnbwkJZ2xfRVMuSVNPLTg4NTktMQotK2dhbGljaWFuCWdsX0VTLklTTy04ODU5LTEKLStnZXJtYW4JCWRlX0RFLklTTy04ODU5LTEKLStncmVlayAgICAgICAgICAgZWxfR1IuSVNPLTg4NTktNwotK2hlYnJldyAgICAgICAgICBoZV9JTC5JU08tODg1OS04Ci0raHJ2YXRza2kJaHJfSFIuSVNPLTg4NTktMgotK2h1bmdhcmlhbiAgICAgICBodV9IVS5JU08tODg1OS0yCi0raWNlbGFuZGljICAgICAgIGlzX0lTLklTTy04ODU5LTEKLStpdGFsaWFuICAgICAgICAgaXRfSVQuSVNPLTg4NTktMQotK2phcGFuZXNlCWphX0pQLmV1Y0pQCi0ramFwYW5lc2UuZXVjCWphX0pQLmV1Y0pQCi0ramFfSlAJCWphX0pQLmV1Y0pQCi0ramFfSlAudWppcwlqYV9KUC5ldWNKUAotK2phcGFuZXNlLnNqaXMJamFfSlAuU0pJUwotK2tvcmVhbgkJa29fS1IuZXVjS1IKLStrb3JlYW4uZXVjIAlrb19LUi5ldWNLUgotK2tvX0tSCQlrb19LUi5ldWNLUgotK2xpdGh1YW5pYW4gICAgICBsdF9MVC5JU08tODg1OS0xMwotK25vX05PCQluYl9OTy5JU08tODg1OS0xCi0rbm9fTk8uSVNPLTg4NTktMSBuYl9OTy5JU08tODg1OS0xCi0rbm9yd2VnaWFuICAgICAgIG5iX05PLklTTy04ODU5LTEKLStueW5vcnNrCQlubl9OTy5JU08tODg1OS0xCi0rcG9saXNoICAgICAgICAgIHBsX1BMLklTTy04ODU5LTIKLStwb3J0dWd1ZXNlICAgICAgcHRfUFQuSVNPLTg4NTktMQotK3JvbWFuaWFuICAgICAgICByb19STy5JU08tODg1OS0yCi0rcnVzc2lhbiAgICAgICAgIHJ1X1JVLklTTy04ODU5LTUKLStzbG92YWsgICAgICAgICAgc2tfU0suSVNPLTg4NTktMgotK3Nsb3ZlbmUgICAgICAgICBzbF9TSS5JU08tODg1OS0yCi0rc2xvdmVuaWFuICAgICAgIHNsX1NJLklTTy04ODU5LTIKLStzcGFuaXNoICAgICAgICAgZXNfRVMuSVNPLTg4NTktMQotK3N3ZWRpc2ggICAgICAgICBzdl9TRS5JU08tODg1OS0xCi0rdGhhaQkJdGhfVEguVElTLTYyMAotK3R1cmtpc2ggICAgICAgICB0cl9UUi5JU08tODg1OS05Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxlYWxpYXMuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVhbGlhcy5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTA1NzI1Mjg4IC0wNDAwCi1AQCAtMSwyMCArMSwyNyBAQAotLS8qIEhhbmRsZSBhbGlhc2VzIGZvciBsb2NhbGUgbmFtZXMKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0rLyogSGFuZGxlIGFsaWFzZXMgZm9yIGxvY2FsZSBuYW1lcy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRSAgICAxCi0rI2VuZGlmCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotQEAgLTIyLDU2ICsyOSw0NSBAQAotIAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9fX0ZTRVRMT0NLSU5HCi0rIyBpbmNsdWRlIDxzdGRpb19leHQuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2lmZGVmIF9fR05VQ19fCi0rIyB1bmRlZiBhbGxvY2EKLSAjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotICMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLSAjZWxzZQotLSMgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLS0jICBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjIGlmZGVmIF9NU0NfVkVSCi0rIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0rIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0gIyBlbHNlCi0tIyAgaWZkZWYgX0FJWAotLSAjcHJhZ21hIGFsbG9jYQotKyMgIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgotICMgIGVsc2UKLS0jICAgaWZuZGVmIGFsbG9jYQotKyMgICBpZmRlZiBfQUlYCi0rICNwcmFnbWEgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmbmRlZiBhbGxvY2EKLSBjaGFyICphbGxvY2EgKCk7Ci0rIyAgICBlbmRpZgotICMgICBlbmRpZgotICMgIGVuZGlmCi0gIyBlbmRpZgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZWxzZQotLWNoYXIgKmdldGVudiAoKTsKLS0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKLS0jICBpbmNsdWRlIDxtYWxsb2MuaD4KLS0jIGVsc2UKLS12b2lkIGZyZWUgKCk7Ci0tIyBlbmRpZgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgX0dOVV9TT1VSQ0UKLS0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotLSMgZW5kaWYKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKwotKyNpZiBFTkFCTEVfUkVMT0NBVEFCTEUKLSsjIGluY2x1ZGUgInJlbG9jYXRhYmxlLmgiCi0gI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jIGlmbmRlZiBtZW1jcHkKLS0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgc3RyY2hyCi0tIyAgZGVmaW5lIHN0cmNociBpbmRleAotLSMgZW5kaWYKLSsjIGRlZmluZSByZWxvY2F0ZShwYXRobmFtZSkgKHBhdGhuYW1lKQotICNlbmRpZgotIAotLSNpbmNsdWRlICJnZXR0ZXh0LmgiCi0tI2luY2x1ZGUgImdldHRleHRQLmgiCi0tCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotICNpZmRlZiBfTElCQwotQEAgLTc5LDQzICs3NSw0OSBAQAotICAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKLSAgICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCi0gIyBkZWZpbmUgc3RyY2FzZWNtcCBfX3N0cmNhc2VjbXAKLSsKLSsjIGlmbmRlZiBtZW1wY3B5Ci0rIyAgZGVmaW5lIG1lbXBjcHkgX19tZW1wY3B5Ci0rIyBlbmRpZgotKyMgZGVmaW5lIEhBVkVfTUVNUENQWQkxCi0rIyBkZWZpbmUgSEFWRV9fX0ZTRVRMT0NLSU5HCTEKLSsKLSsvKiBXZSBuZWVkIGxvY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYW4gYmUgY2FsbGVkIGZyb20gZGlmZmVyZW50IHBsYWNlcy4gICovCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotKwotK19fbGliY19sb2NrX2RlZmluZV9pbml0aWFsaXplZCAoc3RhdGljLCBsb2NrKTsKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIGludGVybmFsX2Z1bmN0aW9uCi0rIyBkZWZpbmUgaW50ZXJuYWxfZnVuY3Rpb24KLSAjZW5kaWYKLSAKLSsvKiBTb21lIG9wdGltaXphdGlvbnMgZm9yIGdsaWJjLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBGRU9GKGZwKQkJZmVvZl91bmxvY2tlZCAoZnApCi0rIyBkZWZpbmUgRkdFVFMoYnVmLCBuLCBmcCkJZmdldHNfdW5sb2NrZWQgKGJ1ZiwgbiwgZnApCi0rI2Vsc2UKLSsjIGRlZmluZSBGRU9GKGZwKQkJZmVvZiAoZnApCi0rIyBkZWZpbmUgRkdFVFMoYnVmLCBuLCBmcCkJZmdldHMgKGJ1ZiwgbiwgZnApCi0rI2VuZGlmCi0gCi0tLyogRm9yIHRob3NlIGxvb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCi0rLyogRm9yIHRob3NlIGxvc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKLSAgICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLwotICNpZmRlZiBIQVZFX0FMTE9DQQotLS8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLwotLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCi0tIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLwotKyMgZGVmaW5lIGZyZWVhKHApIC8qIG5vdGhpbmcgKi8KLSAjZWxzZQotLXN0cnVjdCBibG9ja19saXN0Ci0tewotLSAgdm9pZCAqYWRkcmVzczsKLS0gIHN0cnVjdCBibG9ja19saXN0ICpuZXh0OwotLX07Ci0tIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHIpCQkJCQkJICAgICAgXAotLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKLS0gICAgc3RydWN0IGJsb2NrX2xpc3QgKm5ld3AgPSAoc3RydWN0IGJsb2NrX2xpc3QgKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7ICBcCi0tICAgIC8qIElmIHdlIGNhbm5vdCBnZXQgYSBmcmVlIGJsb2NrIHdlIGNhbm5vdCBhZGQgdGhlIG5ldyBlbGVtZW50IHRvCSAgICAgIFwKLS0gICAgICAgdGhlIGxpc3QuICAqLwkJCQkJCQkgICAgICBcCi0tICAgIGlmIChuZXdwICE9IE5VTEwpIHsJCQkJCQkJICAgICAgXAotLSAgICAgIG5ld3AtPmFkZHJlc3MgPSAoYWRkcik7CQkJCQkJICAgICAgXAotLSAgICAgIG5ld3AtPm5leHQgPSAobGlzdCk7CQkJCQkJICAgICAgXAotLSAgICAgIChsaXN0KSA9IG5ld3A7CQkJCQkJCSAgICAgIFwKLS0gICAgfQkJCQkJCQkJCSAgICAgIFwKLS0gIH0gd2hpbGUgKDApCi0tIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkJCQkJCQkgICAgICBcCi0tICBkbyB7CQkJCQkJCQkJICAgICAgXAotLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7CQkJCQkJICAgICAgXAotLSAgICAgIHN0cnVjdCBibG9ja19saXN0ICpvbGQgPSBsaXN0OwkJCQkJICAgICAgXAotLSAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwkJCQkJCSAgICAgIFwKLS0gICAgICBmcmVlIChvbGQpOwkJCQkJCQkgICAgICBcCi0tICAgIH0JCQkJCQkJCQkgICAgICBcCi0tICB9IHdoaWxlICgwKQotLSMgdW5kZWYgYWxsb2NhCi0tIyBkZWZpbmUgYWxsb2NhKHNpemUpIChtYWxsb2MgKHNpemUpKQotLSNlbmRpZgkvKiBoYXZlIGFsbG9jYSAqLwotKyMgZGVmaW5lIGFsbG9jYShuKSBtYWxsb2MgKG4pCi0rIyBkZWZpbmUgZnJlZWEocCkgZnJlZSAocCkKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBfTElCQ19SRUVOVFJBTlQgfHwgSEFWRV9ERUNMX0ZHRVRTX1VOTE9DS0VECi0rIyB1bmRlZiBmZ2V0cwotKyMgZGVmaW5lIGZnZXRzKGJ1ZiwgbGVuLCBzKSBmZ2V0c191bmxvY2tlZCAoYnVmLCBsZW4sIHMpCi0rI2VuZGlmCi0rI2lmIGRlZmluZWQgX0xJQkNfUkVFTlRSQU5UIHx8IEhBVkVfREVDTF9GRU9GX1VOTE9DS0VECi0rIyB1bmRlZiBmZW9mCi0rIyBkZWZpbmUgZmVvZihzKSBmZW9mX3VubG9ja2VkIChzKQotKyNlbmRpZgotIAotIAotIHN0cnVjdCBhbGlhc19tYXAKLUBAIC0xMjUsMjYgKzEyNyw0MSBAQAotIH07Ci0gCi0gCi0tc3RhdGljIHN0cnVjdCBhbGlhc19tYXAgKm1hcDsKLS1zdGF0aWMgc2l6ZV90IG5tYXAgPSAwOwotLXN0YXRpYyBzaXplX3QgbWF4bWFwID0gMDsKLSsjaWZuZGVmIF9MSUJDCi0rIyBkZWZpbmUgbGliY19mcmVlcmVzX3B0cihkZWNsKSBkZWNsCi0rI2VuZGlmCi0rCi0rbGliY19mcmVlcmVzX3B0ciAoc3RhdGljIGNoYXIgKnN0cmluZ19zcGFjZSk7Ci0rc3RhdGljIHNpemVfdCBzdHJpbmdfc3BhY2VfYWN0OwotK3N0YXRpYyBzaXplX3Qgc3RyaW5nX3NwYWNlX21heDsKLStsaWJjX2ZyZWVyZXNfcHRyIChzdGF0aWMgc3RydWN0IGFsaWFzX21hcCAqbWFwKTsKLStzdGF0aWMgc2l6ZV90IG5tYXA7Ci0rc3RhdGljIHNpemVfdCBtYXhtYXA7Ci0gCi0gCi0gLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KLS1zdGF0aWMgc2l6ZV90IHJlYWRfYWxpYXNfZmlsZSBQQVJBTVMgKChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikpOwotLXN0YXRpYyB2b2lkIGV4dGVuZF9hbGlhc190YWJsZSBQQVJBTVMgKCh2b2lkKSk7Ci0tc3RhdGljIGludCBhbGlhc19jb21wYXJlIFBBUkFNUyAoKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsCi0tCQkJCSAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMikpOwotK3N0YXRpYyBzaXplX3QgcmVhZF9hbGlhc19maWxlIChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK3N0YXRpYyBpbnQgZXh0ZW5kX2FsaWFzX3RhYmxlICh2b2lkKTsKLStzdGF0aWMgaW50IGFsaWFzX2NvbXBhcmUgKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsCi0rCQkJICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyKTsKLSAKLSAKLSBjb25zdCBjaGFyICoKLS1fbmxfZXhwYW5kX2FsaWFzIChuYW1lKQotLSAgICBjb25zdCBjaGFyICpuYW1lOwotK19ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKm5hbWUpCi0gewotLSAgc3RhdGljIGNvbnN0IGNoYXIgKmxvY2FsZV9hbGlhc19wYXRoID0gTE9DQUxFX0FMSUFTX1BBVEg7Ci0rICBzdGF0aWMgY29uc3QgY2hhciAqbG9jYWxlX2FsaWFzX3BhdGg7Ci0gICBzdHJ1Y3QgYWxpYXNfbWFwICpyZXR2YWw7Ci0rICBjb25zdCBjaGFyICpyZXN1bHQgPSBOVUxMOwotICAgc2l6ZV90IGFkZGVkOwotIAotKyNpZmRlZiBfTElCQwotKyAgX19saWJjX2xvY2tfbG9jayAobG9jayk7Ci0rI2VuZGlmCi0rCi0rICBpZiAobG9jYWxlX2FsaWFzX3BhdGggPT0gTlVMTCkKLSsgICAgbG9jYWxlX2FsaWFzX3BhdGggPSBMT0NBTEVfQUxJQVNfUEFUSDsKLSsKLSAgIGRvCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgYWxpYXNfbWFwIGl0ZW07Ci1AQCAtMTU0LDE1ICsxNzEsMTggQEAKLSAgICAgICBpZiAobm1hcCA+IDApCi0gCXJldHZhbCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIGJzZWFyY2ggKCZpdGVtLCBtYXAsIG5tYXAsCi0gCQkJCQkgICAgICAgc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSwKLS0JCQkJCSAgICAgICAoaW50ICgqKSBQQVJBTVMgKChjb25zdCB2b2lkICosCi0tCQkJCQkJCQkgY29uc3Qgdm9pZCAqKSkKLSsJCQkJCSAgICAgICAoaW50ICgqKSAoY29uc3Qgdm9pZCAqLAotKwkJCQkJCQkgY29uc3Qgdm9pZCAqKQotIAkJCQkJCSkgYWxpYXNfY29tcGFyZSk7Ci0gICAgICAgZWxzZQotIAlyZXR2YWwgPSBOVUxMOwotIAotICAgICAgIC8qIFdlIHJlYWxseSBmb3VuZCBhbiBhbGlhcy4gIFJldHVybiB0aGUgdmFsdWUuICAqLwotICAgICAgIGlmIChyZXR2YWwgIT0gTlVMTCkKLS0JcmV0dXJuIHJldHZhbC0+dmFsdWU7Ci0rCXsKLSsJICByZXN1bHQgPSByZXR2YWwtPnZhbHVlOwotKwkgIGJyZWFrOwotKwl9Ci0gCi0gICAgICAgLyogUGVyaGFwcyB3ZSBjYW4gZmluZCBhbm90aGVyIGFsaWFzIGZpbGUuICAqLwotICAgICAgIGFkZGVkID0gMDsKLUBAIC0xNzAsMTEgKzE5MCwxMiBAQAotIAl7Ci0gCSAgY29uc3QgY2hhciAqc3RhcnQ7Ci0gCi0tCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdID09ICc6JykKLSsJICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gPT0gUEFUSF9TRVBBUkFUT1IpCi0gCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOwotIAkgIHN0YXJ0ID0gbG9jYWxlX2FsaWFzX3BhdGg7Ci0gCi0tCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICdcMCcgJiYgbG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJzonKQotKwkgIHdoaWxlIChsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnXDAnCi0rCQkgJiYgbG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gUEFUSF9TRVBBUkFUT1IpCi0gCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOwotIAotIAkgIGlmIChzdGFydCA8IGxvY2FsZV9hbGlhc19wYXRoKQotQEAgLTE4Myw3OCArMjA0LDg3IEBACi0gICAgIH0KLSAgIHdoaWxlIChhZGRlZCAhPSAwKTsKLSAKLS0gIHJldHVybiBOVUxMOwotKyNpZmRlZiBfTElCQwotKyAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKLSsjZW5kaWYKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotIAotIHN0YXRpYyBzaXplX3QKLS1yZWFkX2FsaWFzX2ZpbGUgKGZuYW1lLCBmbmFtZV9sZW4pCi0tICAgICBjb25zdCBjaGFyICpmbmFtZTsKLS0gICAgIGludCBmbmFtZV9sZW47Ci0raW50ZXJuYWxfZnVuY3Rpb24KLStyZWFkX2FsaWFzX2ZpbGUgKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgZm5hbWVfbGVuKQotIHsKLS0jaWZuZGVmIEhBVkVfQUxMT0NBCi0tICBzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2tfbGlzdCA9IE5VTEw7Ci0tI2VuZGlmCi0gICBGSUxFICpmcDsKLSAgIGNoYXIgKmZ1bGxfZm5hbWU7Ci0gICBzaXplX3QgYWRkZWQ7Ci0gICBzdGF0aWMgY29uc3QgY2hhciBhbGlhc2ZpbGVbXSA9ICIvbG9jYWxlLmFsaWFzIjsKLSAKLSAgIGZ1bGxfZm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKGZuYW1lX2xlbiArIHNpemVvZiBhbGlhc2ZpbGUpOwotLSAgQUREX0JMT0NLIChibG9ja19saXN0LCBmdWxsX2ZuYW1lKTsKLSsjaWZkZWYgSEFWRV9NRU1QQ1BZCi0rICBtZW1wY3B5IChtZW1wY3B5IChmdWxsX2ZuYW1lLCBmbmFtZSwgZm5hbWVfbGVuKSwKLSsJICAgYWxpYXNmaWxlLCBzaXplb2YgYWxpYXNmaWxlKTsKLSsjZWxzZQotICAgbWVtY3B5IChmdWxsX2ZuYW1lLCBmbmFtZSwgZm5hbWVfbGVuKTsKLSAgIG1lbWNweSAoJmZ1bGxfZm5hbWVbZm5hbWVfbGVuXSwgYWxpYXNmaWxlLCBzaXplb2YgYWxpYXNmaWxlKTsKLSsjZW5kaWYKLSAKLS0gIGZwID0gZm9wZW4gKGZ1bGxfZm5hbWUsICJyIik7Ci0rICBmcCA9IGZvcGVuIChyZWxvY2F0ZSAoZnVsbF9mbmFtZSksICJyIik7Ci0rICBmcmVlYSAoZnVsbF9mbmFtZSk7Ci0gICBpZiAoZnAgPT0gTlVMTCkKLS0gICAgewotLSAgICAgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0gICAgICByZXR1cm4gMDsKLS0gICAgfQotKyAgICByZXR1cm4gMDsKLSsKLSsjaWZkZWYgSEFWRV9fX0ZTRVRMT0NLSU5HCi0rICAvKiBObyB0aHJlYWRzIHByZXNlbnQuICAqLwotKyAgX19mc2V0bG9ja2luZyAoZnAsIEZTRVRMT0NLSU5HX0JZQ0FMTEVSKTsKLSsjZW5kaWYKLSAKLSAgIGFkZGVkID0gMDsKLS0gIHdoaWxlICghZmVvZiAoZnApKQotKyAgd2hpbGUgKCFGRU9GIChmcCkpCi0gICAgIHsKLSAgICAgICAvKiBJdCBpcyBhIHJlYXNvbmFibGUgYXBwcm9hY2ggdG8gdXNlIGEgZml4IGJ1ZmZlciBoZXJlIGJlY2F1c2UKLSAJIGEpIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGZpcnN0IHR3byBmaWVsZHMKLSAJIGIpIHRoZXNlIGZpZWxkcyBtdXN0IGJlIHVzYWJsZSBhcyBmaWxlIG5hbWVzIGFuZCBzbyBtdXN0IG5vdAotIAkgICAgYmUgdGhhdCBsb25nCi0tICAgICAgICovCi0tICAgICAgY2hhciBidWZbQlVGU0laXTsKLSsJIFdlIGF2b2lkIGEgbXVsdGkta2lsb2J5dGUgYnVmZmVyIGhlcmUgc2luY2UgdGhpcyB3b3VsZCB1c2UgdXAKLSsJIHN0YWNrIHNwYWNlIHdoaWNoIHdlIG1pZ2h0IG5vdCBoYXZlIGlmIHRoZSBwcm9ncmFtIHJhbiBvdXQgb2YKLSsJIG1lbW9yeS4gICovCi0rICAgICAgY2hhciBidWZbNDAwXTsKLSAgICAgICBjaGFyICphbGlhczsKLSAgICAgICBjaGFyICp2YWx1ZTsKLSAgICAgICBjaGFyICpjcDsKLSAKLS0gICAgICBpZiAoZmdldHMgKGJ1ZiwgQlVGU0laLCBmcCkgPT0gTlVMTCkKLSsgICAgICBpZiAoRkdFVFMgKGJ1Ziwgc2l6ZW9mIGJ1ZiwgZnApID09IE5VTEwpCi0gCS8qIEVPRiByZWFjaGVkLiAgKi8KLSAJYnJlYWs7Ci0gCi0gICAgICAgY3AgPSBidWY7Ci0gICAgICAgLyogSWdub3JlIGxlYWRpbmcgd2hpdGUgc3BhY2UuICAqLwotLSAgICAgIHdoaWxlIChpc3NwYWNlIChjcFswXSkpCi0rICAgICAgd2hpbGUgKGlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSBjcFswXSkpCi0gCSsrY3A7Ci0gCi0gICAgICAgLyogQSBsZWFkaW5nICcjJyBzaWduYWxzIGEgY29tbWVudCBsaW5lLiAgKi8KLSAgICAgICBpZiAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnIycpCi0gCXsKLSAJICBhbGlhcyA9IGNwKys7Ci0tCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKGNwWzBdKSkKLSsJICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKLSAJICAgICsrY3A7Ci0gCSAgLyogVGVybWluYXRlIGFsaWFzIG5hbWUuICAqLwotIAkgIGlmIChjcFswXSAhPSAnXDAnKQotIAkgICAgKmNwKysgPSAnXDAnOwotIAotIAkgIC8qIE5vdyBsb29rIGZvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSB2YWx1ZS4gICovCi0tCSAgd2hpbGUgKGlzc3BhY2UgKGNwWzBdKSkKLSsJICB3aGlsZSAoaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKLSAJICAgICsrY3A7Ci0gCi0gCSAgaWYgKGNwWzBdICE9ICdcMCcpCi0gCSAgICB7Ci0tCSAgICAgIGNoYXIgKnRwOwotLQkgICAgICBzaXplX3QgbGVuOwotKwkgICAgICBzaXplX3QgYWxpYXNfbGVuOwotKwkgICAgICBzaXplX3QgdmFsdWVfbGVuOwotIAotIAkgICAgICB2YWx1ZSA9IGNwKys7Ci0tCSAgICAgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlIChjcFswXSkpCi0rCSAgICAgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlICgodW5zaWduZWQgY2hhcikgY3BbMF0pKQotIAkJKytjcDsKLSAJICAgICAgLyogVGVybWluYXRlIHZhbHVlLiAgKi8KLSAJICAgICAgaWYgKGNwWzBdID09ICdcbicpCi1AQCAtMjY5LDI4ICsyOTksNDQgQEAKLSAJCSpjcCsrID0gJ1wwJzsKLSAKLSAJICAgICAgaWYgKG5tYXAgPj0gbWF4bWFwKQotLQkJZXh0ZW5kX2FsaWFzX3RhYmxlICgpOwotLQotLQkgICAgICAvKiBXZSBjYW5ub3QgZGVwZW5kIG9uIHN0cmR1cCBhdmFpbGFibGUgaW4gdGhlIGxpYmMuICBTaWdoISAgKi8KLS0JICAgICAgbGVuID0gc3RybGVuIChhbGlhcykgKyAxOwotLQkgICAgICB0cCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0JICAgICAgaWYgKHRwID09IE5VTEwpCi0tCQl7Ci0tCQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLSsJCWlmIChfX2J1aWx0aW5fZXhwZWN0IChleHRlbmRfYWxpYXNfdGFibGUgKCksIDApKQotIAkJICByZXR1cm4gYWRkZWQ7Ci0tCQl9Ci0tCSAgICAgIG1lbWNweSAodHAsIGFsaWFzLCBsZW4pOwotLQkgICAgICBtYXBbbm1hcF0uYWxpYXMgPSB0cDsKLSAKLS0JICAgICAgbGVuID0gc3RybGVuICh2YWx1ZSkgKyAxOwotLQkgICAgICB0cCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0JICAgICAgaWYgKHRwID09IE5VTEwpCi0rCSAgICAgIGFsaWFzX2xlbiA9IHN0cmxlbiAoYWxpYXMpICsgMTsKLSsJICAgICAgdmFsdWVfbGVuID0gc3RybGVuICh2YWx1ZSkgKyAxOwotKwotKwkgICAgICBpZiAoc3RyaW5nX3NwYWNlX2FjdCArIGFsaWFzX2xlbiArIHZhbHVlX2xlbiA+IHN0cmluZ19zcGFjZV9tYXgpCi0gCQl7Ci0tCQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0JCSAgcmV0dXJuIGFkZGVkOwotKwkJICAvKiBJbmNyZWFzZSBzaXplIG9mIG1lbW9yeSBwb29sLiAgKi8KLSsJCSAgc2l6ZV90IG5ld19zaXplID0gKHN0cmluZ19zcGFjZV9tYXgKLSsJCQkJICAgICArIChhbGlhc19sZW4gKyB2YWx1ZV9sZW4gPiAxMDI0Ci0rCQkJCQk/IGFsaWFzX2xlbiArIHZhbHVlX2xlbiA6IDEwMjQpKTsKLSsJCSAgY2hhciAqbmV3X3Bvb2wgPSAoY2hhciAqKSByZWFsbG9jIChzdHJpbmdfc3BhY2UsIG5ld19zaXplKTsKLSsJCSAgaWYgKG5ld19wb29sID09IE5VTEwpCi0rCQkgICAgcmV0dXJuIGFkZGVkOwotKwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAoc3RyaW5nX3NwYWNlICE9IG5ld19wb29sLCAwKSkKLSsJCSAgICB7Ci0rCQkgICAgICBzaXplX3QgaTsKLSsKLSsJCSAgICAgIGZvciAoaSA9IDA7IGkgPCBubWFwOyBpKyspCi0rCQkJewotKwkJCSAgbWFwW2ldLmFsaWFzICs9IG5ld19wb29sIC0gc3RyaW5nX3NwYWNlOwotKwkJCSAgbWFwW2ldLnZhbHVlICs9IG5ld19wb29sIC0gc3RyaW5nX3NwYWNlOwotKwkJCX0KLSsJCSAgICB9Ci0rCi0rCQkgIHN0cmluZ19zcGFjZSA9IG5ld19wb29sOwotKwkJICBzdHJpbmdfc3BhY2VfbWF4ID0gbmV3X3NpemU7Ci0gCQl9Ci0tCSAgICAgIG1lbWNweSAodHAsIHZhbHVlLCBsZW4pOwotLQkgICAgICBtYXBbbm1hcF0udmFsdWUgPSB0cDsKLSsKLSsJICAgICAgbWFwW25tYXBdLmFsaWFzID0gbWVtY3B5ICgmc3RyaW5nX3NwYWNlW3N0cmluZ19zcGFjZV9hY3RdLAotKwkJCQkJYWxpYXMsIGFsaWFzX2xlbik7Ci0rCSAgICAgIHN0cmluZ19zcGFjZV9hY3QgKz0gYWxpYXNfbGVuOwotKwotKwkgICAgICBtYXBbbm1hcF0udmFsdWUgPSBtZW1jcHkgKCZzdHJpbmdfc3BhY2Vbc3RyaW5nX3NwYWNlX2FjdF0sCi0rCQkJCQl2YWx1ZSwgdmFsdWVfbGVuKTsKLSsJICAgICAgc3RyaW5nX3NwYWNlX2FjdCArPSB2YWx1ZV9sZW47Ci0gCi0gCSAgICAgICsrbm1hcDsKLSAJICAgICAgKythZGRlZDsKLUBAIC0yOTksMTQgKzM0NSwxMSBAQAotIAotICAgICAgIC8qIFBvc3NpYmx5IG5vdCB0aGUgd2hvbGUgbGluZSBmaXRzIGludG8gdGhlIGJ1ZmZlci4gIElnbm9yZQotIAkgdGhlIHJlc3Qgb2YgdGhlIGxpbmUuICAqLwotLSAgICAgIHdoaWxlIChzdHJjaHIgKGNwLCAnXG4nKSA9PSBOVUxMKQotLQl7Ci0tCSAgY3AgPSBidWY7Ci0tCSAgaWYgKGZnZXRzIChidWYsIEJVRlNJWiwgZnApID09IE5VTEwpCi0tCSAgICAvKiBNYWtlIHN1cmUgdGhlIGlubmVyIGxvb3Agd2lsbCBiZSBsZWZ0LiAgVGhlIG91dGVyIGxvb3AKLS0JICAgICAgIHdpbGwgZXhpdCBhdCB0aGUgYGZlb2YnIHRlc3QuICAqLwotLQkgICAgKmNwID0gJ1xuJzsKLS0JfQotKyAgICAgIHdoaWxlIChzdHJjaHIgKGJ1ZiwgJ1xuJykgPT0gTlVMTCkKLSsJaWYgKEZHRVRTIChidWYsIHNpemVvZiBidWYsIGZwKSA9PSBOVUxMKQotKwkgIC8qIE1ha2Ugc3VyZSB0aGUgaW5uZXIgbG9vcCB3aWxsIGJlIGxlZnQuICBUaGUgb3V0ZXIgbG9vcAotKwkgICAgIHdpbGwgZXhpdCBhdCB0aGUgYGZlb2YnIHRlc3QuICAqLwotKwkgIGJyZWFrOwotICAgICB9Ci0gCi0gICAvKiBTaG91bGQgd2UgdGVzdCBmb3IgZmVycm9yKCk/ICBJIHRoaW5rIHdlIGhhdmUgdG8gc2lsZW50bHkgaWdub3JlCi1AQCAtMzE1LDQwICszNTgsMzMgQEAKLSAKLSAgIGlmIChhZGRlZCA+IDApCi0gICAgIHFzb3J0IChtYXAsIG5tYXAsIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCksCi0tCSAgIChpbnQgKCopIFBBUkFNUyAoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkpIGFsaWFzX2NvbXBhcmUpOwotKwkgICAoaW50ICgqKSAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSBhbGlhc19jb21wYXJlKTsKLSAKLS0gIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLSAgIHJldHVybiBhZGRlZDsKLSB9Ci0gCi0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgaW50Ci0gZXh0ZW5kX2FsaWFzX3RhYmxlICgpCi0gewotICAgc2l6ZV90IG5ld19zaXplOwotICAgc3RydWN0IGFsaWFzX21hcCAqbmV3X21hcDsKLSAKLSAgIG5ld19zaXplID0gbWF4bWFwID09IDAgPyAxMDAgOiAyICogbWF4bWFwOwotLSAgbmV3X21hcCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIG1hbGxvYyAobmV3X3NpemUKLS0JCQkJCSAqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpOwotKyAgbmV3X21hcCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIHJlYWxsb2MgKG1hcCwgKG5ld19zaXplCi0rCQkJCQkJKiBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApKSk7Ci0gICBpZiAobmV3X21hcCA9PSBOVUxMKQotICAgICAvKiBTaW1wbHkgZG9uJ3QgZXh0ZW5kOiB3ZSBkb24ndCBoYXZlIGFueSBtb3JlIGNvcmUuICAqLwotLSAgICByZXR1cm47Ci0tCi0tICBtZW1jcHkgKG5ld19tYXAsIG1hcCwgbm1hcCAqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpOwotLQotLSAgaWYgKG1heG1hcCAhPSAwKQotLSAgICBmcmVlIChtYXApOwotKyAgICByZXR1cm4gLTE7Ci0gCi0gICBtYXAgPSBuZXdfbWFwOwotICAgbWF4bWFwID0gbmV3X3NpemU7Ci0rICByZXR1cm4gMDsKLSB9Ci0gCi0gCi0gc3RhdGljIGludAotLWFsaWFzX2NvbXBhcmUgKG1hcDEsIG1hcDIpCi0tICAgICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxOwotLSAgICAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMjsKLSthbGlhc19jb21wYXJlIChjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxLCBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyKQotIHsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSQ0FTRUNNUAotICAgcmV0dXJuIHN0cmNhc2VjbXAgKG1hcDEtPmFsaWFzLCBtYXAyLT5hbGlhcyk7Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxlbmFtZS5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZW5hbWUuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjUxMDcyNDUyOCAtMDQwMAotQEAgLTAsMCArMSwxMTQyIEBACi0rLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IHNlbGVjdGVkIGxvY2FsZS4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5vcmc+LCAxOTk1LiAgKi8KLSsvKiBXaW4zMiBjb2RlIHdyaXR0ZW4gYnkgVG9yIExpbGxxdmlzdCA8dG1sQGlraS5maT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXwotKyMgdW5kZWYgV0lOMzIgICAvKiBhdm9pZCB3YXJuaW5nIG9uIG1pbmd3MzIgKi8KLSsjIGRlZmluZSBXSU4zMgotKyNlbmRpZgotKwotKyNpZmRlZiBXSU4zMgotKyMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSsjIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSsvKiBMaXN0IG9mIGxhbmd1YWdlIGNvZGVzLCBzb3J0ZWQgYnkgdmFsdWU6Ci0rICAgMHgwMSBMQU5HX0FSQUJJQwotKyAgIDB4MDIgTEFOR19CVUxHQVJJQU4KLSsgICAweDAzIExBTkdfQ0FUQUxBTgotKyAgIDB4MDQgTEFOR19DSElORVNFCi0rICAgMHgwNSBMQU5HX0NaRUNICi0rICAgMHgwNiBMQU5HX0RBTklTSAotKyAgIDB4MDcgTEFOR19HRVJNQU4KLSsgICAweDA4IExBTkdfR1JFRUsKLSsgICAweDA5IExBTkdfRU5HTElTSAotKyAgIDB4MGEgTEFOR19TUEFOSVNICi0rICAgMHgwYiBMQU5HX0ZJTk5JU0gKLSsgICAweDBjIExBTkdfRlJFTkNICi0rICAgMHgwZCBMQU5HX0hFQlJFVwotKyAgIDB4MGUgTEFOR19IVU5HQVJJQU4KLSsgICAweDBmIExBTkdfSUNFTEFORElDCi0rICAgMHgxMCBMQU5HX0lUQUxJQU4KLSsgICAweDExIExBTkdfSkFQQU5FU0UKLSsgICAweDEyIExBTkdfS09SRUFOCi0rICAgMHgxMyBMQU5HX0RVVENICi0rICAgMHgxNCBMQU5HX05PUldFR0lBTgotKyAgIDB4MTUgTEFOR19QT0xJU0gKLSsgICAweDE2IExBTkdfUE9SVFVHVUVTRQotKyAgIDB4MTcgTEFOR19SSEFFVE9fUk9NQU5DRQotKyAgIDB4MTggTEFOR19ST01BTklBTgotKyAgIDB4MTkgTEFOR19SVVNTSUFOCi0rICAgMHgxYSBMQU5HX0NST0FUSUFOID09IExBTkdfU0VSQklBTgotKyAgIDB4MWIgTEFOR19TTE9WQUsKLSsgICAweDFjIExBTkdfQUxCQU5JQU4KLSsgICAweDFkIExBTkdfU1dFRElTSAotKyAgIDB4MWUgTEFOR19USEFJCi0rICAgMHgxZiBMQU5HX1RVUktJU0gKLSsgICAweDIwIExBTkdfVVJEVQotKyAgIDB4MjEgTEFOR19JTkRPTkVTSUFOCi0rICAgMHgyMiBMQU5HX1VLUkFJTklBTgotKyAgIDB4MjMgTEFOR19CRUxBUlVTSUFOCi0rICAgMHgyNCBMQU5HX1NMT1ZFTklBTgotKyAgIDB4MjUgTEFOR19FU1RPTklBTgotKyAgIDB4MjYgTEFOR19MQVRWSUFOCi0rICAgMHgyNyBMQU5HX0xJVEhVQU5JQU4KLSsgICAweDI4IExBTkdfVEFKSUsKLSsgICAweDI5IExBTkdfRkFSU0kKLSsgICAweDJhIExBTkdfVklFVE5BTUVTRQotKyAgIDB4MmIgTEFOR19BUk1FTklBTgotKyAgIDB4MmMgTEFOR19BWkVSSQotKyAgIDB4MmQgTEFOR19CQVNRVUUKLSsgICAweDJlIExBTkdfU09SQklBTgotKyAgIDB4MmYgTEFOR19NQUNFRE9OSUFOCi0rICAgMHgzMCBMQU5HX1NVVFUKLSsgICAweDMxIExBTkdfVFNPTkdBCi0rICAgMHgzMiBMQU5HX1RTV0FOQQotKyAgIDB4MzMgTEFOR19WRU5EQQotKyAgIDB4MzQgTEFOR19YSE9TQQotKyAgIDB4MzUgTEFOR19aVUxVCi0rICAgMHgzNiBMQU5HX0FGUklLQUFOUwotKyAgIDB4MzcgTEFOR19HRU9SR0lBTgotKyAgIDB4MzggTEFOR19GQUVST0VTRQotKyAgIDB4MzkgTEFOR19ISU5ESQotKyAgIDB4M2EgTEFOR19NQUxURVNFCi0rICAgMHgzYiBMQU5HX1NBQU1JCi0rICAgMHgzYyBMQU5HX0dBRUxJQwotKyAgIDB4M2QgTEFOR19ZSURESVNICi0rICAgMHgzZSBMQU5HX01BTEFZCi0rICAgMHgzZiBMQU5HX0tBWkFLCi0rICAgMHg0MCBMQU5HX0tZUkdZWgotKyAgIDB4NDEgTEFOR19TV0FISUxJCi0rICAgMHg0MiBMQU5HX1RVUktNRU4KLSsgICAweDQzIExBTkdfVVpCRUsKLSsgICAweDQ0IExBTkdfVEFUQVIKLSsgICAweDQ1IExBTkdfQkVOR0FMSQotKyAgIDB4NDYgTEFOR19QVU5KQUJJCi0rICAgMHg0NyBMQU5HX0dVSkFSQVRJCi0rICAgMHg0OCBMQU5HX09SSVlBCi0rICAgMHg0OSBMQU5HX1RBTUlMCi0rICAgMHg0YSBMQU5HX1RFTFVHVQotKyAgIDB4NGIgTEFOR19LQU5OQURBCi0rICAgMHg0YyBMQU5HX01BTEFZQUxBTQotKyAgIDB4NGQgTEFOR19BU1NBTUVTRQotKyAgIDB4NGUgTEFOR19NQVJBVEhJCi0rICAgMHg0ZiBMQU5HX1NBTlNLUklUCi0rICAgMHg1MCBMQU5HX01PTkdPTElBTgotKyAgIDB4NTEgTEFOR19USUJFVEFOCi0rICAgMHg1MiBMQU5HX1dFTFNICi0rICAgMHg1MyBMQU5HX0NBTUJPRElBTgotKyAgIDB4NTQgTEFOR19MQU8KLSsgICAweDU1IExBTkdfQlVSTUVTRQotKyAgIDB4NTYgTEFOR19HQUxJQ0lBTgotKyAgIDB4NTcgTEFOR19LT05LQU5JCi0rICAgMHg1OCBMQU5HX01BTklQVVJJCi0rICAgMHg1OSBMQU5HX1NJTkRISQotKyAgIDB4NWEgTEFOR19TWVJJQUMKLSsgICAweDViIExBTkdfU0lOSEFMRVNFCi0rICAgMHg1YyBMQU5HX0NIRVJPS0VFCi0rICAgMHg1ZCBMQU5HX0lOVUtUSVRVVAotKyAgIDB4NWUgTEFOR19BTUhBUklDCi0rICAgMHg1ZiBMQU5HX1RBTUFaSUdIVAotKyAgIDB4NjAgTEFOR19LQVNITUlSSQotKyAgIDB4NjEgTEFOR19ORVBBTEkKLSsgICAweDYyIExBTkdfRlJJU0lBTgotKyAgIDB4NjMgTEFOR19QQVNIVE8KLSsgICAweDY0IExBTkdfVEFHQUxPRwotKyAgIDB4NjUgTEFOR19ESVZFSEkKLSsgICAweDY2IExBTkdfRURPCi0rICAgMHg2NyBMQU5HX0ZVTEZVTERFCi0rICAgMHg2OCBMQU5HX0hBVVNBCi0rICAgMHg2OSBMQU5HX0lCSUJJTwotKyAgIDB4NmEgTEFOR19ZT1JVQkEKLSsgICAweDcwIExBTkdfSUdCTwotKyAgIDB4NzEgTEFOR19LQU5VUkkKLSsgICAweDcyIExBTkdfT1JPTU8KLSsgICAweDczIExBTkdfVElHUklOWUEKLSsgICAweDc0IExBTkdfR1VBUkFOSQotKyAgIDB4NzUgTEFOR19IQVdBSUlBTgotKyAgIDB4NzYgTEFOR19MQVRJTgotKyAgIDB4NzcgTEFOR19TT01BTEkKLSsgICAweDc4IExBTkdfWUkKLSsgICAweDc5IExBTkdfUEFQSUFNRU5UVQotKyovCi0rLyogTWluZ3cgaGVhZGVycyBkb24ndCBoYXZlIGxhdGVzdCBsYW5ndWFnZSBhbmQgc3VibGFuZ3VhZ2UgY29kZXMuICAqLwotKyMgaWZuZGVmIExBTkdfQUZSSUtBQU5TCi0rIyBkZWZpbmUgTEFOR19BRlJJS0FBTlMgMHgzNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FMQkFOSUFOCi0rIyBkZWZpbmUgTEFOR19BTEJBTklBTiAweDFjCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQU1IQVJJQwotKyMgZGVmaW5lIExBTkdfQU1IQVJJQyAweDVlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQVJBQklDCi0rIyBkZWZpbmUgTEFOR19BUkFCSUMgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FSTUVOSUFOCi0rIyBkZWZpbmUgTEFOR19BUk1FTklBTiAweDJiCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQVNTQU1FU0UKLSsjIGRlZmluZSBMQU5HX0FTU0FNRVNFIDB4NGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19BWkVSSQotKyMgZGVmaW5lIExBTkdfQVpFUkkgMHgyYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0JBU1FVRQotKyMgZGVmaW5lIExBTkdfQkFTUVVFIDB4MmQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19CRUxBUlVTSUFOCi0rIyBkZWZpbmUgTEFOR19CRUxBUlVTSUFOIDB4MjMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19CRU5HQUxJCi0rIyBkZWZpbmUgTEFOR19CRU5HQUxJIDB4NDUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19CVVJNRVNFCi0rIyBkZWZpbmUgTEFOR19CVVJNRVNFIDB4NTUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19DQU1CT0RJQU4KLSsjIGRlZmluZSBMQU5HX0NBTUJPRElBTiAweDUzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQ0FUQUxBTgotKyMgZGVmaW5lIExBTkdfQ0FUQUxBTiAweDAzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQ0hFUk9LRUUKLSsjIGRlZmluZSBMQU5HX0NIRVJPS0VFIDB4NWMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ESVZFSEkKLSsjIGRlZmluZSBMQU5HX0RJVkVISSAweDY1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRURPCi0rIyBkZWZpbmUgTEFOR19FRE8gMHg2NgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0VTVE9OSUFOCi0rIyBkZWZpbmUgTEFOR19FU1RPTklBTiAweDI1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRkFFUk9FU0UKLSsjIGRlZmluZSBMQU5HX0ZBRVJPRVNFIDB4MzgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19GQVJTSQotKyMgZGVmaW5lIExBTkdfRkFSU0kgMHgyOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0ZSSVNJQU4KLSsjIGRlZmluZSBMQU5HX0ZSSVNJQU4gMHg2MgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0ZVTEZVTERFCi0rIyBkZWZpbmUgTEFOR19GVUxGVUxERSAweDY3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfR0FFTElDCi0rIyBkZWZpbmUgTEFOR19HQUVMSUMgMHgzYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0dBTElDSUFOCi0rIyBkZWZpbmUgTEFOR19HQUxJQ0lBTiAweDU2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfR0VPUkdJQU4KLSsjIGRlZmluZSBMQU5HX0dFT1JHSUFOIDB4MzcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19HVUFSQU5JCi0rIyBkZWZpbmUgTEFOR19HVUFSQU5JIDB4NzQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19HVUpBUkFUSQotKyMgZGVmaW5lIExBTkdfR1VKQVJBVEkgMHg0NwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0hBVVNBCi0rIyBkZWZpbmUgTEFOR19IQVVTQSAweDY4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSEFXQUlJQU4KLSsjIGRlZmluZSBMQU5HX0hBV0FJSUFOIDB4NzUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19IRUJSRVcKLSsjIGRlZmluZSBMQU5HX0hFQlJFVyAweDBkCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSElOREkKLSsjIGRlZmluZSBMQU5HX0hJTkRJIDB4MzkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19JQklCSU8KLSsjIGRlZmluZSBMQU5HX0lCSUJJTyAweDY5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSUdCTwotKyMgZGVmaW5lIExBTkdfSUdCTyAweDcwCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSU5ET05FU0lBTgotKyMgZGVmaW5lIExBTkdfSU5ET05FU0lBTiAweDIxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSU5VS1RJVFVUCi0rIyBkZWZpbmUgTEFOR19JTlVLVElUVVQgMHg1ZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tBTk5BREEKLSsjIGRlZmluZSBMQU5HX0tBTk5BREEgMHg0YgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tBTlVSSQotKyMgZGVmaW5lIExBTkdfS0FOVVJJIDB4NzEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19LQVNITUlSSQotKyMgZGVmaW5lIExBTkdfS0FTSE1JUkkgMHg2MAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tBWkFLCi0rIyBkZWZpbmUgTEFOR19LQVpBSyAweDNmCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS09OS0FOSQotKyMgZGVmaW5lIExBTkdfS09OS0FOSSAweDU3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS1lSR1laCi0rIyBkZWZpbmUgTEFOR19LWVJHWVogMHg0MAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0xBTwotKyMgZGVmaW5lIExBTkdfTEFPIDB4NTQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19MQVRJTgotKyMgZGVmaW5lIExBTkdfTEFUSU4gMHg3NgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0xBVFZJQU4KLSsjIGRlZmluZSBMQU5HX0xBVFZJQU4gMHgyNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0xJVEhVQU5JQU4KLSsjIGRlZmluZSBMQU5HX0xJVEhVQU5JQU4gMHgyNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BQ0VET05JQU4KLSsjIGRlZmluZSBMQU5HX01BQ0VET05JQU4gMHgyZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BTEFZCi0rIyBkZWZpbmUgTEFOR19NQUxBWSAweDNlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFMQVlBTEFNCi0rIyBkZWZpbmUgTEFOR19NQUxBWUFMQU0gMHg0YwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BTFRFU0UKLSsjIGRlZmluZSBMQU5HX01BTFRFU0UgMHgzYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BTklQVVJJCi0rIyBkZWZpbmUgTEFOR19NQU5JUFVSSSAweDU4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFSQVRISQotKyMgZGVmaW5lIExBTkdfTUFSQVRISSAweDRlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTU9OR09MSUFOCi0rIyBkZWZpbmUgTEFOR19NT05HT0xJQU4gMHg1MAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX05FUEFMSQotKyMgZGVmaW5lIExBTkdfTkVQQUxJIDB4NjEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19PUklZQQotKyMgZGVmaW5lIExBTkdfT1JJWUEgMHg0OAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX09ST01PCi0rIyBkZWZpbmUgTEFOR19PUk9NTyAweDcyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfUEFQSUFNRU5UVQotKyMgZGVmaW5lIExBTkdfUEFQSUFNRU5UVSAweDc5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfUEFTSFRPCi0rIyBkZWZpbmUgTEFOR19QQVNIVE8gMHg2MwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1BVTkpBQkkKLSsjIGRlZmluZSBMQU5HX1BVTkpBQkkgMHg0NgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1JIQUVUT19ST01BTkNFCi0rIyBkZWZpbmUgTEFOR19SSEFFVE9fUk9NQU5DRSAweDE3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0FBTUkKLSsjIGRlZmluZSBMQU5HX1NBQU1JIDB4M2IKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TQU5TS1JJVAotKyMgZGVmaW5lIExBTkdfU0FOU0tSSVQgMHg0ZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NFUkJJQU4KLSsjIGRlZmluZSBMQU5HX1NFUkJJQU4gMHgxYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NJTkRISQotKyMgZGVmaW5lIExBTkdfU0lOREhJIDB4NTkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TSU5IQUxFU0UKLSsjIGRlZmluZSBMQU5HX1NJTkhBTEVTRSAweDViCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0xPVkFLCi0rIyBkZWZpbmUgTEFOR19TTE9WQUsgMHgxYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NPTUFMSQotKyMgZGVmaW5lIExBTkdfU09NQUxJIDB4NzcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TT1JCSUFOCi0rIyBkZWZpbmUgTEFOR19TT1JCSUFOIDB4MmUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TVVRVCi0rIyBkZWZpbmUgTEFOR19TVVRVIDB4MzAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TV0FISUxJCi0rIyBkZWZpbmUgTEFOR19TV0FISUxJIDB4NDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TWVJJQUMKLSsjIGRlZmluZSBMQU5HX1NZUklBQyAweDVhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFHQUxPRwotKyMgZGVmaW5lIExBTkdfVEFHQUxPRyAweDY0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFKSUsKLSsjIGRlZmluZSBMQU5HX1RBSklLIDB4MjgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UQU1BWklHSFQKLSsjIGRlZmluZSBMQU5HX1RBTUFaSUdIVCAweDVmCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFNSUwKLSsjIGRlZmluZSBMQU5HX1RBTUlMIDB4NDkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UQVRBUgotKyMgZGVmaW5lIExBTkdfVEFUQVIgMHg0NAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RFTFVHVQotKyMgZGVmaW5lIExBTkdfVEVMVUdVIDB4NGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19USEFJCi0rIyBkZWZpbmUgTEFOR19USEFJIDB4MWUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19USUJFVEFOCi0rIyBkZWZpbmUgTEFOR19USUJFVEFOIDB4NTEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19USUdSSU5ZQQotKyMgZGVmaW5lIExBTkdfVElHUklOWUEgMHg3MwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RTT05HQQotKyMgZGVmaW5lIExBTkdfVFNPTkdBIDB4MzEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UU1dBTkEKLSsjIGRlZmluZSBMQU5HX1RTV0FOQSAweDMyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVFVSS01FTgotKyMgZGVmaW5lIExBTkdfVFVSS01FTiAweDQyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVUtSQUlOSUFOCi0rIyBkZWZpbmUgTEFOR19VS1JBSU5JQU4gMHgyMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1VSRFUKLSsjIGRlZmluZSBMQU5HX1VSRFUgMHgyMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1VaQkVLCi0rIyBkZWZpbmUgTEFOR19VWkJFSyAweDQzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVkVOREEKLSsjIGRlZmluZSBMQU5HX1ZFTkRBIDB4MzMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19WSUVUTkFNRVNFCi0rIyBkZWZpbmUgTEFOR19WSUVUTkFNRVNFIDB4MmEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19XRUxTSAotKyMgZGVmaW5lIExBTkdfV0VMU0ggMHg1MgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1hIT1NBCi0rIyBkZWZpbmUgTEFOR19YSE9TQSAweDM0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfWUkKLSsjIGRlZmluZSBMQU5HX1lJIDB4NzgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ZSURESVNICi0rIyBkZWZpbmUgTEFOR19ZSURESVNIIDB4M2QKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ZT1JVQkEKLSsjIGRlZmluZSBMQU5HX1lPUlVCQSAweDZhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfWlVMVQotKyMgZGVmaW5lIExBTkdfWlVMVSAweDM1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1NBVURJX0FSQUJJQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1NBVURJX0FSQUJJQSAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0lSQVEKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19JUkFRIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfRUdZUFQKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19FR1lQVCAweDAzCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0xJQllBCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfTElCWUEgMHgwNAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19BTEdFUklBCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfQUxHRVJJQSAweDA1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX01PUk9DQ08KLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19NT1JPQ0NPIDB4MDYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfVFVOSVNJQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1RVTklTSUEgMHgwNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19PTUFOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfT01BTiAweDA4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1lFTUVOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfWUVNRU4gMHgwOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19TWVJJQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1NZUklBIDB4MGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfSk9SREFOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfSk9SREFOIDB4MGIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfTEVCQU5PTgotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0xFQkFOT04gMHgwYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19LVVdBSVQKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19LVVdBSVQgMHgwZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19VQUUKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19VQUUgMHgwZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19CQUhSQUlOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfQkFIUkFJTiAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1FBVEFSCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfUUFUQVIgMHgxMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FaRVJJX0xBVElOCi0rIyBkZWZpbmUgU1VCTEFOR19BWkVSSV9MQVRJTiAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUMKLSsjIGRlZmluZSBTVUJMQU5HX0FaRVJJX0NZUklMTElDIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19CRU5HQUxJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19CRU5HQUxJX0lORElBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19CRU5HQUxJX0JBTkdMQURFU0gKLSsjIGRlZmluZSBTVUJMQU5HX0JFTkdBTElfQkFOR0xBREVTSCAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQ0hJTkVTRV9NQUNBVQotKyMgZGVmaW5lIFNVQkxBTkdfQ0hJTkVTRV9NQUNBVSAweDA1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9TT1VUSF9BRlJJQ0EKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfU09VVEhfQUZSSUNBIDB4MDcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0pBTUFJQ0EKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfSkFNQUlDQSAweDA4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9DQVJJQkJFQU4KLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfQ0FSSUJCRUFOIDB4MDkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0JFTElaRQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9CRUxJWkUgMHgwYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfVFJJTklEQUQKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfVFJJTklEQUQgMHgwYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfWklNQkFCV0UKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfWklNQkFCV0UgMHgwYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfUEhJTElQUElORVMKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfUEhJTElQUElORVMgMHgwZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfSU5ET05FU0lBCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0lORE9ORVNJQSAweDBlCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9IT05HS09ORwotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9IT05HS09ORyAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9JTkRJQSAweDEwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9NQUxBWVNJQQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9NQUxBWVNJQSAweDExCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9TSU5HQVBPUkUKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfU0lOR0FQT1JFIDB4MTIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfTFVYRU1CT1VSRwotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX0xVWEVNQk9VUkcgMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9NT05BQ08KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9NT05BQ08gMHgwNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9XRVNUSU5ESUVTCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfV0VTVElORElFUyAweDA3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX1JFVU5JT04KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9SRVVOSU9OIDB4MDgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfQ09OR08KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9DT05HTyAweDA5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX1NFTkVHQUwKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9TRU5FR0FMIDB4MGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfQ0FNRVJPT04KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9DQU1FUk9PTiAweDBiCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0NPVEVESVZPSVJFCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfQ09URURJVk9JUkUgMHgwYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9NQUxJCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfTUFMSSAweDBkCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX01PUk9DQ08KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9NT1JPQ0NPIDB4MGUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfSEFJVEkKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9IQUlUSSAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfR0VSTUFOX0xVWEVNQk9VUkcKLSsjIGRlZmluZSBTVUJMQU5HX0dFUk1BTl9MVVhFTUJPVVJHIDB4MDQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19HRVJNQU5fTElFQ0hURU5TVEVJTgotKyMgZGVmaW5lIFNVQkxBTkdfR0VSTUFOX0xJRUNIVEVOU1RFSU4gMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0tBU0hNSVJJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19LQVNITUlSSV9JTkRJQSAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfTUFMQVlfTUFMQVlTSUEKLSsjIGRlZmluZSBTVUJMQU5HX01BTEFZX01BTEFZU0lBIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19NQUxBWV9CUlVORUlfREFSVVNTQUxBTQotKyMgZGVmaW5lIFNVQkxBTkdfTUFMQVlfQlJVTkVJX0RBUlVTU0FMQU0gMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX05FUEFMSV9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfTkVQQUxJX0lORElBIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19QVU5KQUJJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19QVU5KQUJJX0lORElBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19QVU5KQUJJX1BBS0lTVEFOCi0rIyBkZWZpbmUgU1VCTEFOR19QVU5KQUJJX1BBS0lTVEFOIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19ST01BTklBTl9ST01BTklBCi0rIyBkZWZpbmUgU1VCTEFOR19ST01BTklBTl9ST01BTklBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19ST01BTklBTl9NT0xET1ZBCi0rIyBkZWZpbmUgU1VCTEFOR19ST01BTklBTl9NT0xET1ZBIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TRVJCSUFOX0xBVElOCi0rIyBkZWZpbmUgU1VCTEFOR19TRVJCSUFOX0xBVElOIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TRVJCSUFOX0NZUklMTElDCi0rIyBkZWZpbmUgU1VCTEFOR19TRVJCSUFOX0NZUklMTElDIDB4MDMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TSU5ESElfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX1NJTkRISV9JTkRJQSAweDAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU0lOREhJX1BBS0lTVEFOCi0rIyBkZWZpbmUgU1VCTEFOR19TSU5ESElfUEFLSVNUQU4gMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfR1VBVEVNQUxBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0dVQVRFTUFMQSAweDA0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9DT1NUQV9SSUNBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0NPU1RBX1JJQ0EgMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUEFOQU1BCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1BBTkFNQSAweDA2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9ET01JTklDQU5fUkVQVUJMSUMKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDIDB4MDcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1ZFTkVaVUVMQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9WRU5FWlVFTEEgMHgwOAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQ09MT01CSUEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfQ09MT01CSUEgMHgwOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUEVSVQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QRVJVIDB4MGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0FSR0VOVElOQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9BUkdFTlRJTkEgMHgwYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfRUNVQURPUgotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9FQ1VBRE9SIDB4MGMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0NISUxFCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0NISUxFIDB4MGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1VSVUdVQVkKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfVVJVR1VBWSAweDBlCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9QQVJBR1VBWQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QQVJBR1VBWSAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9CT0xJVklBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0JPTElWSUEgMHgxMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfRUxfU0FMVkFET1IKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfRUxfU0FMVkFET1IgMHgxMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVMKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVMgMHgxMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfTklDQVJBR1VBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX05JQ0FSQUdVQSAweDEzCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTwotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTyAweDE0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1dFRElTSF9GSU5MQU5ECi0rIyBkZWZpbmUgU1VCTEFOR19TV0VESVNIX0ZJTkxBTkQgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1RBTUFaSUdIVF9BUkFCSUMKLSsjIGRlZmluZSBTVUJMQU5HX1RBTUFaSUdIVF9BUkFCSUMgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1RBTUFaSUdIVF9MQVRJTgotKyMgZGVmaW5lIFNVQkxBTkdfVEFNQVpJR0hUX0xBVElOIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19USUdSSU5ZQV9FVEhJT1BJQQotKyMgZGVmaW5lIFNVQkxBTkdfVElHUklOWUFfRVRISU9QSUEgMHgwMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1RJR1JJTllBX0VSSVRSRUEKLSsjIGRlZmluZSBTVUJMQU5HX1RJR1JJTllBX0VSSVRSRUEgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1VSRFVfUEFLSVNUQU4KLSsjIGRlZmluZSBTVUJMQU5HX1VSRFVfUEFLSVNUQU4gMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1VSRFVfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX1VSRFVfSU5ESUEgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1VaQkVLX0xBVElOCi0rIyBkZWZpbmUgU1VCTEFOR19VWkJFS19MQVRJTiAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVVpCRUtfQ1lSSUxMSUMKLSsjIGRlZmluZSBTVUJMQU5HX1VaQkVLX0NZUklMTElDIDB4MDIKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgJ3NldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKLSsgICAiRGlyZWN0cyAnc2V0bG9jYWxlKCknIHRvIHF1ZXJ5ICdjYXRlZ29yeScgYW5kIHJldHVybiB0aGUgY3VycmVudAotKyAgICBzZXR0aW5nIG9mICdsb2NhbCcuIgotKyAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgTmVpdGhlciBkbyBTVVNWMiBhbmQKLSsgICBJU08gQyA5OS4gIFNvIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlIG9ubHkgb24gc2VsZWN0ZWQgc3lzdGVtcyAoZS5nLgotKyAgIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KLSsjaWYgZGVmaW5lZCBfTElCQyB8fCAoZGVmaW5lZCBfX0dOVV9MSUJSQVJZX18gJiYgX19HTlVfTElCUkFSWV9fID49IDIpCi0rIyBkZWZpbmUgSEFWRV9MT0NBTEVfTlVMTAotKyNlbmRpZgotKwotKy8qIERldGVybWluZSB0aGUgY3VycmVudCBsb2NhbGUncyBuYW1lLCBhbmQgY2Fub25pY2FsaXplIGl0IGludG8gWFBHIHN5bnRheAotKyAgICAgbGFuZ3VhZ2VbX3RlcnJpdG9yeVsuY29kZXNldF1dW0Btb2RpZmllcl0KLSsgICBUaGUgY29kZXNldCBwYXJ0IGluIHRoZSByZXN1bHQgaXMgbm90IHJlbGlhYmxlOyB0aGUgbG9jYWxlX2NoYXJzZXQoKQotKyAgIHNob3VsZCBiZSB1c2VkIGZvciBjb2Rlc2V0IGluZm9ybWF0aW9uIGluc3RlYWQuCi0rICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuICAqLwotKwotK2NvbnN0IGNoYXIgKgotK19ubF9sb2NhbGVfbmFtZSAoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpCi0rewotKyAgY29uc3QgY2hhciAqcmV0dmFsOwotKwotKyNpZm5kZWYgV0lOMzIKLSsKLSsgIC8qIFVzZSB0aGUgUE9TSVggbWV0aG9kcyBvZiBsb29raW5nIHRvICdMQ19BTEwnLCAnTENfeHh4JywgYW5kICdMQU5HJy4KLSsgICAgIE9uIHNvbWUgc3lzdGVtcyB0aGlzIGNhbiBiZSBkb25lIGJ5IHRoZSAnc2V0bG9jYWxlJyBmdW5jdGlvbiBpdHNlbGYuICAqLwotKyMgaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgJiYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9OVUxMCi0rICByZXR2YWwgPSBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKTsKLSsjIGVsc2UKLSsgIC8qIFNldHRpbmcgb2YgTENfQUxMIG92ZXJ3cml0ZXMgYWxsIG90aGVyLiAgKi8KLSsgIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOwotKyAgaWYgKHJldHZhbCA9PSBOVUxMIHx8IHJldHZhbFswXSA9PSAnXDAnKQotKyAgICB7Ci0rICAgICAgLyogTmV4dCBjb21lcyB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBjYXRlZ29yeS4gICovCi0rICAgICAgcmV0dmFsID0gZ2V0ZW52IChjYXRlZ29yeW5hbWUpOwotKyAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCB8fCByZXR2YWxbMF0gPT0gJ1wwJykKLSsJewotKwkgIC8qIExhc3QgcG9zc2liaWxpdHkgaXMgdGhlIExBTkcgZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLwotKwkgIHJldHZhbCA9IGdldGVudiAoIkxBTkciKTsKLSsJICBpZiAocmV0dmFsID09IE5VTEwgfHwgcmV0dmFsWzBdID09ICdcMCcpCi0rCSAgICAvKiBXZSB1c2UgQyBhcyB0aGUgZGVmYXVsdCBkb21haW4uICBQT1NJWCBzYXlzIHRoaXMgaXMKLSsJICAgICAgIGltcGxlbWVudGF0aW9uIGRlZmluZWQuICAqLwotKwkgICAgcmV0dmFsID0gIkMiOwotKwl9Ci0rICAgIH0KLSsjIGVuZGlmCi0rCi0rICByZXR1cm4gcmV0dmFsOwotKwotKyNlbHNlIC8qIFdJTjMyICovCi0rCi0rICAvKiBSZXR1cm4gYW4gWFBHIHN0eWxlIGxvY2FsZSBuYW1lIGxhbmd1YWdlW190ZXJyaXRvcnldW0Btb2RpZmllcl0uCi0rICAgICBEb24ndCBldmVuIGJvdGhlciBkZXRlcm1pbmluZyB0aGUgY29kZXNldDsgaXQncyBub3QgdXNlZnVsIGluIHRoaXMKLSsgICAgIGNvbnRleHQsIGJlY2F1c2UgbWVzc2FnZSBjYXRhbG9ncyBhcmUgbm90IHNwZWNpZmljIHRvIGEgc2luZ2xlCi0rICAgICBjb2Rlc2V0LiAgKi8KLSsKLSsgIExDSUQgbGNpZDsKLSsgIExBTkdJRCBsYW5naWQ7Ci0rICBpbnQgcHJpbWFyeSwgc3ViOwotKwotKyAgLyogTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSBzeXN0ZW0gc2V0dGluZ3MgdGhyb3VnaCBlbnZpcm9ubWVudAotKyAgICAgdmFyaWFibGVzLCBhcyBvbiBQT1NJWCBzeXN0ZW1zLiAgKi8KLSsgIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOwotKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotKyAgICByZXR1cm4gcmV0dmFsOwotKyAgcmV0dmFsID0gZ2V0ZW52IChjYXRlZ29yeW5hbWUpOwotKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotKyAgICByZXR1cm4gcmV0dmFsOwotKyAgcmV0dmFsID0gZ2V0ZW52ICgiTEFORyIpOwotKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotKyAgICByZXR1cm4gcmV0dmFsOwotKwotKyAgLyogVXNlIG5hdGl2ZSBXaW4zMiBBUEkgbG9jYWxlIElELiAgKi8KLSsgIGxjaWQgPSBHZXRUaHJlYWRMb2NhbGUgKCk7Ci0rCi0rICAvKiBTdHJpcCBvZmYgdGhlIHNvcnRpbmcgcnVsZXMsIGtlZXAgb25seSB0aGUgbGFuZ3VhZ2UgcGFydC4gICovCi0rICBsYW5naWQgPSBMQU5HSURGUk9NTENJRCAobGNpZCk7Ci0rCi0rICAvKiBTcGxpdCBpbnRvIGxhbmd1YWdlIGFuZCB0ZXJyaXRvcnkgcGFydC4gICovCi0rICBwcmltYXJ5ID0gUFJJTUFSWUxBTkdJRCAobGFuZ2lkKTsKLSsgIHN1YiA9IFNVQkxBTkdJRCAobGFuZ2lkKTsKLSsKLSsgIC8qIERpc3BhdGNoIG9uIGxhbmd1YWdlLgotKyAgICAgU2VlIGFsc28gaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL29ubGluZWRhdC9sYW5ndWFnZXMuaHRtbCAuCi0rICAgICBGb3IgZGV0YWlscyBhYm91dCBsYW5ndWFnZXMsIHNlZSBodHRwOi8vd3d3LmV0aG5vbG9ndWUuY29tLyAuICAqLwotKyAgc3dpdGNoIChwcmltYXJ5KQotKyAgICB7Ci0rICAgIGNhc2UgTEFOR19BRlJJS0FBTlM6IHJldHVybiAiYWZfWkEiOwotKyAgICBjYXNlIExBTkdfQUxCQU5JQU46IHJldHVybiAic3FfQUwiOwotKyAgICBjYXNlIExBTkdfQU1IQVJJQzogcmV0dXJuICJhbV9FVCI7Ci0rICAgIGNhc2UgTEFOR19BUkFCSUM6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19TQVVESV9BUkFCSUE6IHJldHVybiAiYXJfU0EiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0lSQVE6IHJldHVybiAiYXJfSVEiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0VHWVBUOiByZXR1cm4gImFyX0VHIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19MSUJZQTogcmV0dXJuICJhcl9MWSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfQUxHRVJJQTogcmV0dXJuICJhcl9EWiI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfTU9ST0NDTzogcmV0dXJuICJhcl9NQSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfVFVOSVNJQTogcmV0dXJuICJhcl9UTiI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfT01BTjogcmV0dXJuICJhcl9PTSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfWUVNRU46IHJldHVybiAiYXJfWUUiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX1NZUklBOiByZXR1cm4gImFyX1NZIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19KT1JEQU46IHJldHVybiAiYXJfSk8iOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0xFQkFOT046IHJldHVybiAiYXJfTEIiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0tVV0FJVDogcmV0dXJuICJhcl9LVyI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfVUFFOiByZXR1cm4gImFyX0FFIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19CQUhSQUlOOiByZXR1cm4gImFyX0JIIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19RQVRBUjogcmV0dXJuICJhcl9RQSI7Ci0rCX0KLSsgICAgICByZXR1cm4gImFyIjsKLSsgICAgY2FzZSBMQU5HX0FSTUVOSUFOOiByZXR1cm4gImh5X0FNIjsKLSsgICAgY2FzZSBMQU5HX0FTU0FNRVNFOiByZXR1cm4gImFzX0lOIjsKLSsgICAgY2FzZSBMQU5HX0FaRVJJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCS8qIEZJWE1FOiBBZGp1c3QgdGhpcyB3aGVuIEF6ZXJiYWlqYW5pIGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLwotKwljYXNlIFNVQkxBTkdfQVpFUklfTEFUSU46IHJldHVybiAiYXpfQVpAbGF0aW4iOwotKwljYXNlIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUM6IHJldHVybiAiYXpfQVpAY3lyaWxsaWMiOwotKwl9Ci0rICAgICAgcmV0dXJuICJheiI7Ci0rICAgIGNhc2UgTEFOR19CQVNRVUU6Ci0rICAgICAgcmV0dXJuICJldSI7IC8qIEFtYmlndW91czogY291bGQgYmUgImV1X0VTIiBvciAiZXVfRlIiLiAgKi8KLSsgICAgY2FzZSBMQU5HX0JFTEFSVVNJQU46IHJldHVybiAiYmVfQlkiOwotKyAgICBjYXNlIExBTkdfQkVOR0FMSToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfQkVOR0FMSV9JTkRJQTogcmV0dXJuICJibl9JTiI7Ci0rCWNhc2UgU1VCTEFOR19CRU5HQUxJX0JBTkdMQURFU0g6IHJldHVybiAiYm5fQkQiOwotKwl9Ci0rICAgICAgcmV0dXJuICJibiI7Ci0rICAgIGNhc2UgTEFOR19CVUxHQVJJQU46IHJldHVybiAiYmdfQkciOwotKyAgICBjYXNlIExBTkdfQlVSTUVTRTogcmV0dXJuICJteV9NTSI7Ci0rICAgIGNhc2UgTEFOR19DQU1CT0RJQU46IHJldHVybiAia21fS0giOwotKyAgICBjYXNlIExBTkdfQ0FUQUxBTjogcmV0dXJuICJjYV9FUyI7Ci0rICAgIGNhc2UgTEFOR19DSEVST0tFRTogcmV0dXJuICJjaHJfVVMiOwotKyAgICBjYXNlIExBTkdfQ0hJTkVTRToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9UUkFESVRJT05BTDogcmV0dXJuICJ6aF9UVyI7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX1NJTVBMSUZJRUQ6IHJldHVybiAiemhfQ04iOwotKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9IT05HS09ORzogcmV0dXJuICJ6aF9ISyI7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX1NJTkdBUE9SRTogcmV0dXJuICJ6aF9TRyI7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX01BQ0FVOiByZXR1cm4gInpoX01PIjsKLSsJfQotKyAgICAgIHJldHVybiAiemgiOwotKyAgICBjYXNlIExBTkdfQ1JPQVRJQU46CQkvKiBMQU5HX0NST0FUSUFOID09IExBTkdfU0VSQklBTgotKwkJCQkgKiBXaGF0IHVzZWQgdG8gYmUgY2FsbGVkIFNlcmJvLUNyb2F0aWFuCi0rCQkJCSAqIHNob3VsZCByZWFsbHkgbm93IGJlIHR3byBzZXBhcmF0ZQotKwkJCQkgKiBsYW5ndWFnZXMgYmVjYXVzZSBvZiBwb2xpdGljYWwgcmVhc29ucy4KLSsJCQkJICogKFNheXMgdG1sLCB3aG8ga25vd3Mgbm90aGluZyBhYm91dCBTZXJiaWFuCi0rCQkJCSAqIG9yIENyb2F0aWFuLikKLSsJCQkJICogKEkgY2FuIGZlZWwgdGhvc2UgZmxhbWVzIGNvbWluZyBhbHJlYWR5LikKLSsJCQkJICovCi0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAiaHJfSFIiOwotKwljYXNlIFNVQkxBTkdfU0VSQklBTl9MQVRJTjogcmV0dXJuICJzcl9DUyI7Ci0rCWNhc2UgU1VCTEFOR19TRVJCSUFOX0NZUklMTElDOiByZXR1cm4gInNyX0NTQGN5cmlsbGljIjsKLSsJfQotKyAgICAgIHJldHVybiAiaHIiOwotKyAgICBjYXNlIExBTkdfQ1pFQ0g6IHJldHVybiAiY3NfQ1oiOwotKyAgICBjYXNlIExBTkdfREFOSVNIOiByZXR1cm4gImRhX0RLIjsKLSsgICAgY2FzZSBMQU5HX0RJVkVISTogcmV0dXJuICJkdl9NViI7Ci0rICAgIGNhc2UgTEFOR19EVVRDSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfRFVUQ0g6IHJldHVybiAibmxfTkwiOwotKwljYXNlIFNVQkxBTkdfRFVUQ0hfQkVMR0lBTjogLyogRkxFTUlTSCwgVkxBQU1TICovIHJldHVybiAibmxfQkUiOwotKwl9Ci0rICAgICAgcmV0dXJuICJubCI7Ci0rICAgIGNhc2UgTEFOR19FRE86IHJldHVybiAiYmluX05HIjsKLSsgICAgY2FzZSBMQU5HX0VOR0xJU0g6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJLyogU1VCTEFOR19FTkdMSVNIX1VTID09IFNVQkxBTkdfREVGQVVMVC4gSGVoLiBJIHRob3VnaHQKLSsJICogRW5nbGlzaCB3YXMgdGhlIGxhbmd1YWdlIHNwb2tlbiBpbiBFbmdsYW5kLgotKwkgKiBPaCB3ZWxsLgotKwkgKi8KLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfVVM6IHJldHVybiAiZW5fVVMiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9VSzogcmV0dXJuICJlbl9HQiI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0FVUzogcmV0dXJuICJlbl9BVSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0NBTjogcmV0dXJuICJlbl9DQSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX05aOiByZXR1cm4gImVuX05aIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfRUlSRTogcmV0dXJuICJlbl9JRSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1NPVVRIX0FGUklDQTogcmV0dXJuICJlbl9aQSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0pBTUFJQ0E6IHJldHVybiAiZW5fSk0iOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9DQVJJQkJFQU46IHJldHVybiAiZW5fR0QiOyAvKiBHcmVuYWRhPyAqLwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9CRUxJWkU6IHJldHVybiAiZW5fQloiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9UUklOSURBRDogcmV0dXJuICJlbl9UVCI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1pJTUJBQldFOiByZXR1cm4gImVuX1pXIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfUEhJTElQUElORVM6IHJldHVybiAiZW5fUEgiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9JTkRPTkVTSUE6IHJldHVybiAiZW5fSUQiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9IT05HS09ORzogcmV0dXJuICJlbl9ISyI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0lORElBOiByZXR1cm4gImVuX0lOIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfTUFMQVlTSUE6IHJldHVybiAiZW5fTVkiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9TSU5HQVBPUkU6IHJldHVybiAiZW5fU0ciOwotKwl9Ci0rICAgICAgcmV0dXJuICJlbiI7Ci0rICAgIGNhc2UgTEFOR19FU1RPTklBTjogcmV0dXJuICJldF9FRSI7Ci0rICAgIGNhc2UgTEFOR19GQUVST0VTRTogcmV0dXJuICJmb19GTyI7Ci0rICAgIGNhc2UgTEFOR19GQVJTSTogcmV0dXJuICJmYV9JUiI7Ci0rICAgIGNhc2UgTEFOR19GSU5OSVNIOiByZXR1cm4gImZpX0ZJIjsKLSsgICAgY2FzZSBMQU5HX0ZSRU5DSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfRlJFTkNIOiByZXR1cm4gImZyX0ZSIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9CRUxHSUFOOiAvKiBXQUxMT09OICovIHJldHVybiAiZnJfQkUiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0NBTkFESUFOOiByZXR1cm4gImZyX0NBIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9TV0lTUzogcmV0dXJuICJmcl9DSCI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfTFVYRU1CT1VSRzogcmV0dXJuICJmcl9MVSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfTU9OQUNPOiByZXR1cm4gImZyX01DIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9XRVNUSU5ESUVTOiByZXR1cm4gImZyIjsgLyogQ2FyaWJiZWFuPyAqLwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX1JFVU5JT046IHJldHVybiAiZnJfUkUiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0NPTkdPOiByZXR1cm4gImZyX0NHIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9TRU5FR0FMOiByZXR1cm4gImZyX1NOIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9DQU1FUk9PTjogcmV0dXJuICJmcl9DTSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfQ09URURJVk9JUkU6IHJldHVybiAiZnJfQ0kiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX01BTEk6IHJldHVybiAiZnJfTUwiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX01PUk9DQ086IHJldHVybiAiZnJfTUEiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0hBSVRJOiByZXR1cm4gImZyX0hUIjsKLSsJfQotKyAgICAgIHJldHVybiAiZnIiOwotKyAgICBjYXNlIExBTkdfRlJJU0lBTjogcmV0dXJuICJmeV9OTCI7Ci0rICAgIGNhc2UgTEFOR19GVUxGVUxERToKLSsgICAgICAvKiBTcG9rZW4gaW4gTmlnZXJpYSwgR3VpbmVhLCBTZW5lZ2FsLCBNYWxpLCBOaWdlciwgQ2FtZXJvb24sIEJlbmluLiAqLwotKyAgICAgIHJldHVybiAiZmZfTkciOwotKyAgICBjYXNlIExBTkdfR0FFTElDOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgMHgwMTogLyogU0NPVFRJU0ggKi8gcmV0dXJuICJnZF9HQiI7Ci0rCWNhc2UgMHgwMjogLyogSVJJU0ggKi8gcmV0dXJuICJnYV9JRSI7Ci0rCX0KLSsgICAgICByZXR1cm4gIkMiOwotKyAgICBjYXNlIExBTkdfR0FMSUNJQU46IHJldHVybiAiZ2xfRVMiOwotKyAgICBjYXNlIExBTkdfR0VPUkdJQU46IHJldHVybiAia2FfR0UiOwotKyAgICBjYXNlIExBTkdfR0VSTUFOOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU46IHJldHVybiAiZGVfREUiOwotKwljYXNlIFNVQkxBTkdfR0VSTUFOX1NXSVNTOiByZXR1cm4gImRlX0NIIjsKLSsJY2FzZSBTVUJMQU5HX0dFUk1BTl9BVVNUUklBTjogcmV0dXJuICJkZV9BVCI7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU5fTFVYRU1CT1VSRzogcmV0dXJuICJkZV9MVSI7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU5fTElFQ0hURU5TVEVJTjogcmV0dXJuICJkZV9MSSI7Ci0rCX0KLSsgICAgICByZXR1cm4gImRlIjsKLSsgICAgY2FzZSBMQU5HX0dSRUVLOiByZXR1cm4gImVsX0dSIjsKLSsgICAgY2FzZSBMQU5HX0dVQVJBTkk6IHJldHVybiAiZ25fUFkiOwotKyAgICBjYXNlIExBTkdfR1VKQVJBVEk6IHJldHVybiAiZ3VfSU4iOwotKyAgICBjYXNlIExBTkdfSEFVU0E6IHJldHVybiAiaGFfTkciOwotKyAgICBjYXNlIExBTkdfSEFXQUlJQU46Ci0rICAgICAgLyogRklYTUU6IERvIHRoZXkgbWVhbiBIYXdhaWlhbiAoImhhd19VUyIsIDEwMDAgc3BlYWtlcnMpCi0rCSBvciBIYXdhaWkgQ3Jlb2xlIEVuZ2xpc2ggKCJjcGVfVVMiLCA2MDAwMDAgc3BlYWtlcnMpPyAgKi8KLSsgICAgICByZXR1cm4gImNwZV9VUyI7Ci0rICAgIGNhc2UgTEFOR19IRUJSRVc6IHJldHVybiAiaGVfSUwiOwotKyAgICBjYXNlIExBTkdfSElOREk6IHJldHVybiAiaGlfSU4iOwotKyAgICBjYXNlIExBTkdfSFVOR0FSSUFOOiByZXR1cm4gImh1X0hVIjsKLSsgICAgY2FzZSBMQU5HX0lCSUJJTzogcmV0dXJuICJuaWNfTkciOwotKyAgICBjYXNlIExBTkdfSUNFTEFORElDOiByZXR1cm4gImlzX0lTIjsKLSsgICAgY2FzZSBMQU5HX0lHQk86IHJldHVybiAiaWdfTkciOwotKyAgICBjYXNlIExBTkdfSU5ET05FU0lBTjogcmV0dXJuICJpZF9JRCI7Ci0rICAgIGNhc2UgTEFOR19JTlVLVElUVVQ6IHJldHVybiAiaXVfQ0EiOwotKyAgICBjYXNlIExBTkdfSVRBTElBTjoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfSVRBTElBTjogcmV0dXJuICJpdF9JVCI7Ci0rCWNhc2UgU1VCTEFOR19JVEFMSUFOX1NXSVNTOiByZXR1cm4gIml0X0NIIjsKLSsJfQotKyAgICAgIHJldHVybiAiaXQiOwotKyAgICBjYXNlIExBTkdfSkFQQU5FU0U6IHJldHVybiAiamFfSlAiOwotKyAgICBjYXNlIExBTkdfS0FOTkFEQTogcmV0dXJuICJrbl9JTiI7Ci0rICAgIGNhc2UgTEFOR19LQU5VUkk6IHJldHVybiAia3JfTkciOwotKyAgICBjYXNlIExBTkdfS0FTSE1JUkk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAia3NfUEsiOwotKwljYXNlIFNVQkxBTkdfS0FTSE1JUklfSU5ESUE6IHJldHVybiAia3NfSU4iOwotKwl9Ci0rICAgICAgcmV0dXJuICJrcyI7Ci0rICAgIGNhc2UgTEFOR19LQVpBSzogcmV0dXJuICJra19LWiI7Ci0rICAgIGNhc2UgTEFOR19LT05LQU5JOgotKyAgICAgIC8qIEZJWE1FOiBBZGp1c3QgdGhpcyB3aGVuIHN1Y2ggbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCi0rICAgICAgcmV0dXJuICJrb2tfSU4iOwotKyAgICBjYXNlIExBTkdfS09SRUFOOiByZXR1cm4gImtvX0tSIjsKLSsgICAgY2FzZSBMQU5HX0tZUkdZWjogcmV0dXJuICJreV9LRyI7Ci0rICAgIGNhc2UgTEFOR19MQU86IHJldHVybiAibG9fTEEiOwotKyAgICBjYXNlIExBTkdfTEFUSU46IHJldHVybiAibGFfVkEiOwotKyAgICBjYXNlIExBTkdfTEFUVklBTjogcmV0dXJuICJsdl9MViI7Ci0rICAgIGNhc2UgTEFOR19MSVRIVUFOSUFOOiByZXR1cm4gImx0X0xUIjsKLSsgICAgY2FzZSBMQU5HX01BQ0VET05JQU46IHJldHVybiAibWtfTUsiOwotKyAgICBjYXNlIExBTkdfTUFMQVk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX01BTEFZX01BTEFZU0lBOiByZXR1cm4gIm1zX01ZIjsKLSsJY2FzZSBTVUJMQU5HX01BTEFZX0JSVU5FSV9EQVJVU1NBTEFNOiByZXR1cm4gIm1zX0JOIjsKLSsJfQotKyAgICAgIHJldHVybiAibXMiOwotKyAgICBjYXNlIExBTkdfTUFMQVlBTEFNOiByZXR1cm4gIm1sX0lOIjsKLSsgICAgY2FzZSBMQU5HX01BTFRFU0U6IHJldHVybiAibXRfTVQiOwotKyAgICBjYXNlIExBTkdfTUFOSVBVUkk6Ci0rICAgICAgLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gc3VjaCBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KLSsgICAgICByZXR1cm4gIm1uaV9JTiI7Ci0rICAgIGNhc2UgTEFOR19NQVJBVEhJOiByZXR1cm4gIm1yX0lOIjsKLSsgICAgY2FzZSBMQU5HX01PTkdPTElBTjoKLSsgICAgICByZXR1cm4gIm1uIjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAibW5fQ04iIG9yICJtbl9NTiIuICAqLwotKyAgICBjYXNlIExBTkdfTkVQQUxJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19ERUZBVUxUOiByZXR1cm4gIm5lX05QIjsKLSsJY2FzZSBTVUJMQU5HX05FUEFMSV9JTkRJQTogcmV0dXJuICJuZV9JTiI7Ci0rCX0KLSsgICAgICByZXR1cm4gIm5lIjsKLSsgICAgY2FzZSBMQU5HX05PUldFR0lBTjoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTDogcmV0dXJuICJub19OTyI7Ci0rCWNhc2UgU1VCTEFOR19OT1JXRUdJQU5fTllOT1JTSzogcmV0dXJuICJubl9OTyI7Ci0rCX0KLSsgICAgICByZXR1cm4gIm5vIjsKLSsgICAgY2FzZSBMQU5HX09SSVlBOiByZXR1cm4gIm9yX0lOIjsKLSsgICAgY2FzZSBMQU5HX09ST01POiByZXR1cm4gIm9tX0VUIjsKLSsgICAgY2FzZSBMQU5HX1BBUElBTUVOVFU6IHJldHVybiAicGFwX0FOIjsKLSsgICAgY2FzZSBMQU5HX1BBU0hUTzoKLSsgICAgICByZXR1cm4gInBzIjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAicHNfUEsiIG9yICJwc19BRiIuICAqLwotKyAgICBjYXNlIExBTkdfUE9MSVNIOiByZXR1cm4gInBsX1BMIjsKLSsgICAgY2FzZSBMQU5HX1BPUlRVR1VFU0U6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1BPUlRVR1VFU0U6IHJldHVybiAicHRfUFQiOwotKwkvKiBIbW0uIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4gPT0gU1VCTEFOR19ERUZBVUxULgotKwkgICBTYW1lIHBoZW5vbWVub24gYXMgU1VCTEFOR19FTkdMSVNIX1VTID09IFNVQkxBTkdfREVGQVVMVC4gKi8KLSsJY2FzZSBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOOiByZXR1cm4gInB0X0JSIjsKLSsJfQotKyAgICAgIHJldHVybiAicHQiOwotKyAgICBjYXNlIExBTkdfUFVOSkFCSToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfUFVOSkFCSV9JTkRJQTogcmV0dXJuICJwYV9JTiI7IC8qIEd1cm11a2hpIHNjcmlwdCAqLwotKwljYXNlIFNVQkxBTkdfUFVOSkFCSV9QQUtJU1RBTjogcmV0dXJuICJwYV9QSyI7IC8qIEFyYWJpYyBzY3JpcHQgKi8KLSsJfQotKyAgICAgIHJldHVybiAicGEiOwotKyAgICBjYXNlIExBTkdfUkhBRVRPX1JPTUFOQ0U6IHJldHVybiAicm1fQ0giOwotKyAgICBjYXNlIExBTkdfUk9NQU5JQU46Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1JPTUFOSUFOX1JPTUFOSUE6IHJldHVybiAicm9fUk8iOwotKwljYXNlIFNVQkxBTkdfUk9NQU5JQU5fTU9MRE9WQTogcmV0dXJuICJyb19NRCI7Ci0rCX0KLSsgICAgICByZXR1cm4gInJvIjsKLSsgICAgY2FzZSBMQU5HX1JVU1NJQU46Ci0rICAgICAgcmV0dXJuICJydSI7IC8qIEFtYmlndW91czogY291bGQgYmUgInJ1X1JVIiBvciAicnVfVUEiIG9yICJydV9NRCIuICAqLwotKyAgICBjYXNlIExBTkdfU0FBTUk6IC8qIGFjdHVhbGx5IE5vcnRoZXJuIFNhbWkgKi8gcmV0dXJuICJzZV9OTyI7Ci0rICAgIGNhc2UgTEFOR19TQU5TS1JJVDogcmV0dXJuICJzYV9JTiI7Ci0rICAgIGNhc2UgTEFOR19TSU5ESEk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1NJTkRISV9JTkRJQTogcmV0dXJuICJzZF9JTiI7Ci0rCWNhc2UgU1VCTEFOR19TSU5ESElfUEFLSVNUQU46IHJldHVybiAic2RfUEsiOwotKwl9Ci0rICAgICAgcmV0dXJuICJzZCI7Ci0rICAgIGNhc2UgTEFOR19TSU5IQUxFU0U6IHJldHVybiAic2lfTEsiOwotKyAgICBjYXNlIExBTkdfU0xPVkFLOiByZXR1cm4gInNrX1NLIjsKLSsgICAgY2FzZSBMQU5HX1NMT1ZFTklBTjogcmV0dXJuICJzbF9TSSI7Ci0rICAgIGNhc2UgTEFOR19TT01BTEk6IHJldHVybiAic29fU08iOwotKyAgICBjYXNlIExBTkdfU09SQklBTjoKLSsgICAgICAvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBzdWNoIGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLwotKyAgICAgIHJldHVybiAid2VuX0RFIjsKLSsgICAgY2FzZSBMQU5HX1NQQU5JU0g6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0g6IHJldHVybiAiZXNfRVMiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9NRVhJQ0FOOiByZXR1cm4gImVzX01YIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfTU9ERVJOOgotKwkgIHJldHVybiAiZXNfRVNAbW9kZXJuIjsJLyogbm90IHNlZW4gb24gVW5peCAqLwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9HVUFURU1BTEE6IHJldHVybiAiZXNfR1QiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9DT1NUQV9SSUNBOiByZXR1cm4gImVzX0NSIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfUEFOQU1BOiByZXR1cm4gImVzX1BBIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDOiByZXR1cm4gImVzX0RPIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfVkVORVpVRUxBOiByZXR1cm4gImVzX1ZFIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQ09MT01CSUE6IHJldHVybiAiZXNfQ08iOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QRVJVOiByZXR1cm4gImVzX1BFIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQVJHRU5USU5BOiByZXR1cm4gImVzX0FSIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfRUNVQURPUjogcmV0dXJuICJlc19FQyI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0NISUxFOiByZXR1cm4gImVzX0NMIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfVVJVR1VBWTogcmV0dXJuICJlc19VWSI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX1BBUkFHVUFZOiByZXR1cm4gImVzX1BZIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQk9MSVZJQTogcmV0dXJuICJlc19CTyI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0VMX1NBTFZBRE9SOiByZXR1cm4gImVzX1NWIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVM6IHJldHVybiAiZXNfSE4iOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9OSUNBUkFHVUE6IHJldHVybiAiZXNfTkkiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTzogcmV0dXJuICJlc19QUiI7Ci0rCX0KLSsgICAgICByZXR1cm4gImVzIjsKLSsgICAgY2FzZSBMQU5HX1NVVFU6IHJldHVybiAiYm50X1RaIjsgLyogb3IgInN0X0xTIiBvciAibnNvX1pBIj8gKi8KLSsgICAgY2FzZSBMQU5HX1NXQUhJTEk6IHJldHVybiAic3dfS0UiOwotKyAgICBjYXNlIExBTkdfU1dFRElTSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfREVGQVVMVDogcmV0dXJuICJzdl9TRSI7Ci0rCWNhc2UgU1VCTEFOR19TV0VESVNIX0ZJTkxBTkQ6IHJldHVybiAic3ZfRkkiOwotKwl9Ci0rICAgICAgcmV0dXJuICJzdiI7Ci0rICAgIGNhc2UgTEFOR19TWVJJQUM6IHJldHVybiAic3lyX1RSIjsgLyogQW4gZXh0aW5jdCBsYW5ndWFnZS4gICovCi0rICAgIGNhc2UgTEFOR19UQUdBTE9HOiByZXR1cm4gInRsX1BIIjsKLSsgICAgY2FzZSBMQU5HX1RBSklLOiByZXR1cm4gInRnX1RKIjsKLSsgICAgY2FzZSBMQU5HX1RBTUFaSUdIVDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwkvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBUYW1hemlnaHQgbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCi0rCWNhc2UgU1VCTEFOR19UQU1BWklHSFRfQVJBQklDOiByZXR1cm4gImJlcl9NQUBhcmFiaWMiOwotKwljYXNlIFNVQkxBTkdfVEFNQVpJR0hUX0xBVElOOiByZXR1cm4gImJlcl9NQUBsYXRpbiI7Ci0rCX0KLSsgICAgICByZXR1cm4gImJlcl9NQSI7Ci0rICAgIGNhc2UgTEFOR19UQU1JTDoKLSsgICAgICByZXR1cm4gInRhIjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAidGFfSU4iIG9yICJ0YV9MSyIgb3IgInRhX1NHIi4gICovCi0rICAgIGNhc2UgTEFOR19UQVRBUjogcmV0dXJuICJ0dF9SVSI7Ci0rICAgIGNhc2UgTEFOR19URUxVR1U6IHJldHVybiAidGVfSU4iOwotKyAgICBjYXNlIExBTkdfVEhBSTogcmV0dXJuICJ0aF9USCI7Ci0rICAgIGNhc2UgTEFOR19USUJFVEFOOiByZXR1cm4gImJvX0NOIjsKLSsgICAgY2FzZSBMQU5HX1RJR1JJTllBOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19USUdSSU5ZQV9FVEhJT1BJQTogcmV0dXJuICJ0aV9FVCI7Ci0rCWNhc2UgU1VCTEFOR19USUdSSU5ZQV9FUklUUkVBOiByZXR1cm4gInRpX0VSIjsKLSsJfQotKyAgICAgIHJldHVybiAidGkiOwotKyAgICBjYXNlIExBTkdfVFNPTkdBOiByZXR1cm4gInRzX1pBIjsKLSsgICAgY2FzZSBMQU5HX1RTV0FOQTogcmV0dXJuICJ0bl9CVyI7Ci0rICAgIGNhc2UgTEFOR19UVVJLSVNIOiByZXR1cm4gInRyX1RSIjsKLSsgICAgY2FzZSBMQU5HX1RVUktNRU46IHJldHVybiAidGtfVE0iOwotKyAgICBjYXNlIExBTkdfVUtSQUlOSUFOOiByZXR1cm4gInVrX1VBIjsKLSsgICAgY2FzZSBMQU5HX1VSRFU6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1VSRFVfUEFLSVNUQU46IHJldHVybiAidXJfUEsiOwotKwljYXNlIFNVQkxBTkdfVVJEVV9JTkRJQTogcmV0dXJuICJ1cl9JTiI7Ci0rCX0KLSsgICAgICByZXR1cm4gInVyIjsKLSsgICAgY2FzZSBMQU5HX1VaQkVLOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19VWkJFS19MQVRJTjogcmV0dXJuICJ1el9VWiI7Ci0rCWNhc2UgU1VCTEFOR19VWkJFS19DWVJJTExJQzogcmV0dXJuICJ1el9VWkBjeXJpbGxpYyI7Ci0rCX0KLSsgICAgICByZXR1cm4gInV6IjsKLSsgICAgY2FzZSBMQU5HX1ZFTkRBOiByZXR1cm4gInZlX1pBIjsKLSsgICAgY2FzZSBMQU5HX1ZJRVROQU1FU0U6IHJldHVybiAidmlfVk4iOwotKyAgICBjYXNlIExBTkdfV0VMU0g6IHJldHVybiAiY3lfR0IiOwotKyAgICBjYXNlIExBTkdfWEhPU0E6IHJldHVybiAieGhfWkEiOwotKyAgICBjYXNlIExBTkdfWUk6IHJldHVybiAic2l0X0NOIjsKLSsgICAgY2FzZSBMQU5HX1lJRERJU0g6IHJldHVybiAieWlfSUwiOwotKyAgICBjYXNlIExBTkdfWU9SVUJBOiByZXR1cm4gInlvX05HIjsKLSsgICAgY2FzZSBMQU5HX1pVTFU6IHJldHVybiAienVfWkEiOwotKyAgICBkZWZhdWx0OiByZXR1cm4gIkMiOwotKyAgICB9Ci0rCi0rI2VuZGlmCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvZy5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvZy5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTE1NzIzNzY4IC0wNDAwCi1AQCAtMCwwICsxLDk4IEBACi0rLyogTG9nIGZpbGUgb3V0cHV0LgotKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKy8qIFByaW50IGFuIEFTQ0lJIHN0cmluZyB3aXRoIHF1b3RlcyBhbmQgZXNjYXBlIHNlcXVlbmNlcyB3aGVyZSBuZWVkZWQuICAqLwotK3N0YXRpYyB2b2lkCi0rcHJpbnRfZXNjYXBlZCAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpzdHIpCi0rewotKyAgcHV0YyAoJyInLCBzdHJlYW0pOwotKyAgZm9yICg7ICpzdHIgIT0gJ1wwJzsgc3RyKyspCi0rICAgIGlmICgqc3RyID09ICdcbicpCi0rICAgICAgewotKwlmcHV0cyAoIlxcblwiIiwgc3RyZWFtKTsKLSsJaWYgKHN0clsxXSA9PSAnXDAnKQotKwkgIHJldHVybjsKLSsJZnB1dHMgKCJcblwiIiwgc3RyZWFtKTsKLSsgICAgICB9Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCWlmICgqc3RyID09ICciJyB8fCAqc3RyID09ICdcXCcpCi0rCSAgcHV0YyAoJ1xcJywgc3RyZWFtKTsKLSsJcHV0YyAoKnN0ciwgc3RyZWFtKTsKLSsgICAgICB9Ci0rICBwdXRjICgnIicsIHN0cmVhbSk7Ci0rfQotKwotKy8qIEFkZCB0byB0aGUgbG9nIGZpbGUgYW4gZW50cnkgZGVub3RpbmcgYSBmYWlsZWQgdHJhbnNsYXRpb24uICAqLwotK3ZvaWQKLStfbmxfbG9nX3VudHJhbnNsYXRlZCAoY29uc3QgY2hhciAqbG9nZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCQkgICAgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgaW50IHBsdXJhbCkKLSt7Ci0rICBzdGF0aWMgY2hhciAqbGFzdF9sb2dmaWxlbmFtZSA9IE5VTEw7Ci0rICBzdGF0aWMgRklMRSAqbGFzdF9sb2dmaWxlID0gTlVMTDsKLSsgIEZJTEUgKmxvZ2ZpbGU7Ci0rCi0rICAvKiBDYW4gd2UgcmV1c2UgdGhlIGxhc3Qgb3BlbmVkIGxvZ2ZpbGU/ICAqLwotKyAgaWYgKGxhc3RfbG9nZmlsZW5hbWUgPT0gTlVMTCB8fCBzdHJjbXAgKGxvZ2ZpbGVuYW1lLCBsYXN0X2xvZ2ZpbGVuYW1lKSAhPSAwKQotKyAgICB7Ci0rICAgICAgLyogQ2xvc2UgdGhlIGxhc3QgdXNlZCBsb2dmaWxlLiAgKi8KLSsgICAgICBpZiAobGFzdF9sb2dmaWxlbmFtZSAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKGxhc3RfbG9nZmlsZSAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICBmY2xvc2UgKGxhc3RfbG9nZmlsZSk7Ci0rCSAgICAgIGxhc3RfbG9nZmlsZSA9IE5VTEw7Ci0rCSAgICB9Ci0rCSAgZnJlZSAobGFzdF9sb2dmaWxlbmFtZSk7Ci0rCSAgbGFzdF9sb2dmaWxlbmFtZSA9IE5VTEw7Ci0rCX0KLSsgICAgICAvKiBPcGVuIHRoZSBsb2dmaWxlLiAgKi8KLSsgICAgICBsYXN0X2xvZ2ZpbGVuYW1lID0gKGNoYXIgKikgbWFsbG9jIChzdHJsZW4gKGxvZ2ZpbGVuYW1lKSArIDEpOwotKyAgICAgIGlmIChsYXN0X2xvZ2ZpbGVuYW1lID09IE5VTEwpCi0rCXJldHVybjsKLSsgICAgICBzdHJjcHkgKGxhc3RfbG9nZmlsZW5hbWUsIGxvZ2ZpbGVuYW1lKTsKLSsgICAgICBsYXN0X2xvZ2ZpbGUgPSBmb3BlbiAobG9nZmlsZW5hbWUsICJhIik7Ci0rICAgICAgaWYgKGxhc3RfbG9nZmlsZSA9PSBOVUxMKQotKwlyZXR1cm47Ci0rICAgIH0KLSsgIGxvZ2ZpbGUgPSBsYXN0X2xvZ2ZpbGU7Ci0rCi0rICBmcHJpbnRmIChsb2dmaWxlLCAiZG9tYWluICIpOwotKyAgcHJpbnRfZXNjYXBlZCAobG9nZmlsZSwgZG9tYWlubmFtZSk7Ci0rICBmcHJpbnRmIChsb2dmaWxlLCAiXG5tc2dpZCAiKTsKLSsgIHByaW50X2VzY2FwZWQgKGxvZ2ZpbGUsIG1zZ2lkMSk7Ci0rICBpZiAocGx1cmFsKQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAobG9nZmlsZSwgIlxubXNnaWRfcGx1cmFsICIpOwotKyAgICAgIHByaW50X2VzY2FwZWQgKGxvZ2ZpbGUsIG1zZ2lkMik7Ci0rICAgICAgZnByaW50ZiAobG9nZmlsZSwgIlxubXNnc3RyWzBdIFwiXCJcbiIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIGZwcmludGYgKGxvZ2ZpbGUsICJcbm1zZ3N0ciBcIlwiXG4iKTsKLSsgIHB1dGMgKCdcbicsIGxvZ2ZpbGUpOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9NYWtlZmlsZS5pbgkxOTk4LTA0LTI2IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9NYWtlZmlsZS5pbgkyMDA0LTA5LTEyIDE0OjQwOjM0LjUyMTcyMjg1NiAtMDQwMAotQEAgLTEsMTkgKzEsMjAgQEAKLS0jIE1ha2VmaWxlIGZvciBkaXJlY3Rvcnkgd2l0aCBtZXNzYWdlIGNhdGFsb2cgaGFuZGxpbmcgaW4gR05VIE5MUyBVdGlsaXRpZXMuCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyBNYWtlZmlsZSBmb3IgZGlyZWN0b3J5IHdpdGggbWVzc2FnZSBjYXRhbG9nIGhhbmRsaW5nIGxpYnJhcnkgb2YgR05VIGdldHRleHQKLSsjIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyMgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICMgYW55IGxhdGVyIHZlcnNpb24uCi0gIwotICMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAjCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyBVU0EuCi0gCi0gUEFDS0FHRSA9IEBQQUNLQUdFQAotIFZFUlNJT04gPSBAVkVSU0lPTkAKLUBAIC0yMywxMTggKzI0LDM0MSBAQAotIHNyY2RpciA9IEBzcmNkaXJACi0gdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAotIHRvcF9idWlsZGRpciA9IC4uCi0tVlBBVEggPSBAc3JjZGlyQAotKyNWUEFUSCA9ICQoc3JjZGlyKQotIAotIHByZWZpeCA9IEBwcmVmaXhACi0gZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi0gdHJhbnNmb3JtID0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVACi0tbGliZGlyID0gJChleGVjX3ByZWZpeCkvbGliCi0taW5jbHVkZWRpciA9ICQocHJlZml4KS9pbmNsdWRlCi0tZGF0YWRpciA9ICQocHJlZml4KS9AREFUQURJUk5BTUVACi0rbGliZGlyID0gQGxpYmRpckAKLStpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACi0rZGF0YWRpciA9IEBkYXRhZGlyQAotIGxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCi0tZ251bG9jYWxlZGlyID0gJChwcmVmaXgpL3NoYXJlL2xvY2FsZQotLWdldHRleHRzcmNkaXIgPSBAZGF0YWRpckAvZ2V0dGV4dC9pbnRsCi0tYWxpYXNwYXRoID0gJChsb2NhbGVkaXIpOi4KLStnZXR0ZXh0c3JjZGlyID0gJChkYXRhZGlyKS9nZXR0ZXh0L2ludGwKLSthbGlhc3BhdGggPSAkKGxvY2FsZWRpcikKLSBzdWJkaXIgPSBpbnRsCi0gCi0gSU5TVEFMTCA9IEBJTlNUQUxMQAotIElOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACi0gTUtJTlNUQUxMRElSUyA9IEBNS0lOU1RBTExESVJTQAotK21raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKE1LSU5TVEFMTERJUlMpCi0gCi0tbCA9IEBsQAotK2wgPSBASU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVhACi0gCi0gQVIgPSBhcgotIENDID0gQENDQAotIExJQlRPT0wgPSBATElCVE9PTEAKLSBSQU5MSUIgPSBAUkFOTElCQAotK1lBQ0MgPSBASU5UTEJJU09OQCAteSAtZAotK1lGTEFHUyA9IC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0Ci0gCi0tREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURHTlVMT0NBTEVESVI9XCIkKGdudWxvY2FsZWRpcilcIiBcCi0tLURMT0NBTEVfQUxJQVNfUEFUSD1cIiQoYWxpYXNwYXRoKVwiIEBERUZTQAotK0RFRlMgPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiIC1ETE9DQUxFX0FMSUFTX1BBVEg9XCIkKGFsaWFzcGF0aClcIiBcCi0rLURMSUJESVI9XCIkKGxpYmRpcilcIiAtRElOX0xJQklOVEwgXAotKy1ERU5BQkxFX1JFTE9DQVRBQkxFPTEgLURJTl9MSUJSQVJZIC1ESU5TVEFMTERJUj1cIiQobGliZGlyKVwiIC1ETk9fWE1BTExPQyBcCi0rLURzZXRfcmVsb2NhdGlvbl9wcmVmaXg9bGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXggXAotKy1EcmVsb2NhdGU9bGliaW50bF9yZWxvY2F0ZSBcCi0rLURERVBFTkRTX09OX0xJQklDT05WPTEgQERFRlNACi0gQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACi0gQ0ZMQUdTID0gQENGTEFHU0AKLSBMREZMQUdTID0gQExERkxBR1NACi0rTElCUyA9IEBMSUJTQAotIAotIENPTVBJTEUgPSAkKENDKSAtYyAkKERFRlMpICQoSU5DTFVERVMpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKFhDRkxBR1MpCi0gCi0tSEVBREVSUyA9ICQoQ09NSERSUykgbGliZ2V0dGV4dC5oIGxvYWRpbmZvLmgKLS1DT01IRFJTID0gZ2V0dGV4dC5oIGdldHRleHRQLmggaGFzaC1zdHJpbmcuaAotLVNPVVJDRVMgPSAkKENPTVNSQ1MpIGludGwtY29tcGF0LmMgY2F0LWNvbXBhdC5jCi0tQ09NU1JDUyA9IGJpbmR0ZXh0ZG9tLmMgZGNnZXR0ZXh0LmMgZGdldHRleHQuYyBnZXR0ZXh0LmMgXAotLWZpbmRkb21haW4uYyBsb2FkbXNnY2F0LmMgbG9jYWxlYWxpYXMuYyB0ZXh0ZG9tYWluLmMgbDEwbmZsaXN0LmMgXAotLWV4cGxvZGVuYW1lLmMKLS1PQkpFQ1RTID0gQElOVExPQkpTQCBiaW5kdGV4dGRvbS4kbG8gZGNnZXR0ZXh0LiRsbyBkZ2V0dGV4dC4kbG8gZ2V0dGV4dC4kbG8gXAotLWZpbmRkb21haW4uJGxvIGxvYWRtc2djYXQuJGxvIGxvY2FsZWFsaWFzLiRsbyB0ZXh0ZG9tYWluLiRsbyBsMTBuZmxpc3QuJGxvIFwKLS1leHBsb2RlbmFtZS4kbG8KLS1DQVRPQkpTID0gY2F0LWNvbXBhdC4kbG8gLi4vcG8vY2F0LWlkLXRibC4kbG8KLS1HRVRUT0JKUyA9IGludGwtY29tcGF0LiRsbwotLURJU1RGSUxFUy5jb21tb24gPSBDaGFuZ2VMb2cgTWFrZWZpbGUuaW4gbGludXgtbXNnLnNlZCBwbzJ0Ymwuc2VkLmluIFwKLS14b3Blbi1tc2cuc2VkICQoSEVBREVSUykgJChTT1VSQ0VTKQotK0hFQURFUlMgPSBcCi0rICBnbW8uaCBcCi0rICBnZXR0ZXh0UC5oIFwKLSsgIGhhc2gtc3RyaW5nLmggXAotKyAgbG9hZGluZm8uaCBcCi0rICBwbHVyYWwtZXhwLmggXAotKyAgZXZhbC1wbHVyYWwuaCBcCi0rICBsb2NhbGNoYXJzZXQuaCBcCi0rICByZWxvY2F0YWJsZS5oIFwKLSsgIHhzaXplLmggXAotKyAgcHJpbnRmLWFyZ3MuaCBwcmludGYtYXJncy5jIFwKLSsgIHByaW50Zi1wYXJzZS5oIHdwcmludGYtcGFyc2UuaCBwcmludGYtcGFyc2UuYyBcCi0rICB2YXNucHJpbnRmLmggdmFzbndwcmludGYuaCB2YXNucHJpbnRmLmMgXAotKyAgb3MyY29tcGF0LmggXAotKyAgbGliZ251aW50bC5oLmluCi0rU09VUkNFUyA9IFwKLSsgIGJpbmR0ZXh0ZG9tLmMgXAotKyAgZGNnZXR0ZXh0LmMgXAotKyAgZGdldHRleHQuYyBcCi0rICBnZXR0ZXh0LmMgXAotKyAgZmluZGRvbWFpbi5jIFwKLSsgIGxvYWRtc2djYXQuYyBcCi0rICBsb2NhbGVhbGlhcy5jIFwKLSsgIHRleHRkb21haW4uYyBcCi0rICBsMTBuZmxpc3QuYyBcCi0rICBleHBsb2RlbmFtZS5jIFwKLSsgIGRjaWdldHRleHQuYyBcCi0rICBkY25nZXR0ZXh0LmMgXAotKyAgZG5nZXR0ZXh0LmMgXAotKyAgbmdldHRleHQuYyBcCi0rICBwbHVyYWwueSBcCi0rICBwbHVyYWwtZXhwLmMgXAotKyAgbG9jYWxjaGFyc2V0LmMgXAotKyAgcmVsb2NhdGFibGUuYyBcCi0rICBsb2NhbGVuYW1lLmMgXAotKyAgbG9nLmMgXAotKyAgcHJpbnRmLmMgXAotKyAgb3NkZXAuYyBcCi0rICBvczJjb21wYXQuYyBcCi0rICBpbnRsLWNvbXBhdC5jCi0rT0JKRUNUUyA9IFwKLSsgIGJpbmR0ZXh0ZG9tLiRsbyBcCi0rICBkY2dldHRleHQuJGxvIFwKLSsgIGRnZXR0ZXh0LiRsbyBcCi0rICBnZXR0ZXh0LiRsbyBcCi0rICBmaW5kZG9tYWluLiRsbyBcCi0rICBsb2FkbXNnY2F0LiRsbyBcCi0rICBsb2NhbGVhbGlhcy4kbG8gXAotKyAgdGV4dGRvbWFpbi4kbG8gXAotKyAgbDEwbmZsaXN0LiRsbyBcCi0rICBleHBsb2RlbmFtZS4kbG8gXAotKyAgZGNpZ2V0dGV4dC4kbG8gXAotKyAgZGNuZ2V0dGV4dC4kbG8gXAotKyAgZG5nZXR0ZXh0LiRsbyBcCi0rICBuZ2V0dGV4dC4kbG8gXAotKyAgcGx1cmFsLiRsbyBcCi0rICBwbHVyYWwtZXhwLiRsbyBcCi0rICBsb2NhbGNoYXJzZXQuJGxvIFwKLSsgIHJlbG9jYXRhYmxlLiRsbyBcCi0rICBsb2NhbGVuYW1lLiRsbyBcCi0rICBsb2cuJGxvIFwKLSsgIHByaW50Zi4kbG8gXAotKyAgb3NkZXAuJGxvIFwKLSsgIGludGwtY29tcGF0LiRsbwotK0RJU1RGSUxFUy5jb21tb24gPSBNYWtlZmlsZS5pbiBcCi0rY29uZmlnLmNoYXJzZXQgbG9jYWxlLmFsaWFzIHJlZi1hZGQuc2luIHJlZi1kZWwuc2luICQoSEVBREVSUykgJChTT1VSQ0VTKQotK0RJU1RGSUxFUy5nZW5lcmF0ZWQgPSBwbHVyYWwuYwotIERJU1RGSUxFUy5ub3JtYWwgPSBWRVJTSU9OCi0tRElTVEZJTEVTLmdldHRleHQgPSBsaWJpbnRsLmdsaWJjIGludGxoLmluc3QuaW4KLStESVNURklMRVMuZ2V0dGV4dCA9IENPUFlJTkcuTElCLTIuMCBDT1BZSU5HLkxJQi0yLjEgbGliaW50bC5nbGliYyBcCi0rbGliZ251aW50bC5oX3ZtcyBNYWtlZmlsZS52bXMgXAotK2xpYmdudWludGwuaC5tc3ZjLXN0YXRpYyBsaWJnbnVpbnRsLmgubXN2Yy1zaGFyZWQgUkVBRE1FLndvZTMyIE1ha2VmaWxlLm1zdmMKLStESVNURklMRVMub2Jzb2xldGUgPSB4b3Blbi1tc2cuc2VkIGxpbnV4LW1zZy5zZWQgcG8ydGJsLnNlZC5pbiBjYXQtY29tcGF0LmMgXAotK0NPUFlJTkcuTElCLTIgZ2V0dGV4dC5oIGxpYmdldHRleHQuaCBwbHVyYWwtZXZhbC5jIGxpYmdudWludGwuaAotKwotK2FsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKLSthbGwteWVzOiBsaWJpbnRsLiRsYSBsaWJpbnRsLmggY2hhcnNldC5hbGlhcyByZWYtYWRkLnNlZCByZWYtZGVsLnNlZAotK2FsbC1ubzogYWxsLW5vLUBCVUlMRF9JTkNMVURFRF9MSUJJTlRMQAotK2FsbC1uby15ZXM6IGxpYmdudWludGwuJGxhCi0rYWxsLW5vLW5vOgotKwotK2xpYmludGwuYSBsaWJnbnVpbnRsLmE6ICQoT0JKRUNUUykKLSsJcm0gLWYgJEAKLSsJJChBUikgY3J1ICRAICQoT0JKRUNUUykKLSsJJChSQU5MSUIpICRACi0rCi0rbGliaW50bC5sYSBsaWJnbnVpbnRsLmxhOiAkKE9CSkVDVFMpCi0rCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgXAotKwkgICQoQ0MpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKFhDRkxBR1MpICQoTERGTEFHUykgLW8gJEAgXAotKwkgICQoT0JKRUNUUykgQExUTElCSUNPTlZAICQoTElCUykgLWxjIFwKLSsJICAtdmVyc2lvbi1pbmZvICQoTFRWX0NVUlJFTlQpOiQoTFRWX1JFVklTSU9OKTokKExUVl9BR0UpIFwKLSsJICAtcnBhdGggJChsaWJkaXIpIFwKLSsJICAtbm8tdW5kZWZpbmVkCi0rCi0rIyBMaWJ0b29sJ3MgbGlicmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciBsaWJpbnRsLgotKyMgQmVmb3JlIG1ha2luZyBhIGdldHRleHQgcmVsZWFzZSwgdGhlIGdldHRleHQgbWFpbnRhaW5lciBtdXN0IGNoYW5nZSB0aGlzCi0rIyBhY2NvcmRpbmcgdG8gdGhlIGxpYnRvb2wgZG9jdW1lbnRhdGlvbiwgc2VjdGlvbiAiTGlicmFyeSBpbnRlcmZhY2UgdmVyc2lvbnMiLgotKyMgTWFpbnRhaW5lcnMgb2Ygb3RoZXIgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBpbnRsIGRpcmVjdG9yeSBtdXN0ICpub3QqCi0rIyBjaGFuZ2UgdGhlc2UgdmFsdWVzLgotK0xUVl9DVVJSRU5UPTcKLStMVFZfUkVWSVNJT049MAotK0xUVl9BR0U9NAotIAotIC5TVUZGSVhFUzoKLS0uU1VGRklYRVM6IC5jIC5vIC5sbwotKy5TVUZGSVhFUzogLmMgLnkgLm8gLmxvIC5zaW4gLnNlZAotKwotIC5jLm86Ci0gCSQoQ09NUElMRSkgJDwKLS0uYy5sbzoKLS0JJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQ8Ci0gCi0tSU5DTFVERVMgPSAtSS4uIC1JLiAtSSQodG9wX3NyY2RpcikvaW50bCAtSSQodG9wX3NyY2RpcikvbGliCi0rLnkuYzoKLSsJJChZQUNDKSAkKFlGTEFHUykgLS1vdXRwdXQgJEAgJDwKLSsJcm0gLWYgJCouaAotIAotLWFsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKLStiaW5kdGV4dGRvbS5sbzogJChzcmNkaXIpL2JpbmR0ZXh0ZG9tLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9iaW5kdGV4dGRvbS5jCi0rZGNnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGNnZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kY2dldHRleHQuYwotK2RnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RnZXR0ZXh0LmMKLStnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZ2V0dGV4dC5jCi0rZmluZGRvbWFpbi5sbzogJChzcmNkaXIpL2ZpbmRkb21haW4uYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2ZpbmRkb21haW4uYwotK2xvYWRtc2djYXQubG86ICQoc3JjZGlyKS9sb2FkbXNnY2F0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2FkbXNnY2F0LmMKLStsb2NhbGVhbGlhcy5sbzogJChzcmNkaXIpL2xvY2FsZWFsaWFzLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2NhbGVhbGlhcy5jCi0rdGV4dGRvbWFpbi5sbzogJChzcmNkaXIpL3RleHRkb21haW4uYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3RleHRkb21haW4uYwotK2wxMG5mbGlzdC5sbzogJChzcmNkaXIpL2wxMG5mbGlzdC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbDEwbmZsaXN0LmMKLStleHBsb2RlbmFtZS5sbzogJChzcmNkaXIpL2V4cGxvZGVuYW1lLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9leHBsb2RlbmFtZS5jCi0rZGNpZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RjaWdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RjaWdldHRleHQuYwotK2RjbmdldHRleHQubG86ICQoc3JjZGlyKS9kY25nZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kY25nZXR0ZXh0LmMKLStkbmdldHRleHQubG86ICQoc3JjZGlyKS9kbmdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RuZ2V0dGV4dC5jCi0rbmdldHRleHQubG86ICQoc3JjZGlyKS9uZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbmdldHRleHQuYwotK3BsdXJhbC5sbzogJChzcmNkaXIpL3BsdXJhbC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcGx1cmFsLmMKLStwbHVyYWwtZXhwLmxvOiAkKHNyY2RpcikvcGx1cmFsLWV4cC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcGx1cmFsLWV4cC5jCi0rbG9jYWxjaGFyc2V0LmxvOiAkKHNyY2RpcikvbG9jYWxjaGFyc2V0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2NhbGNoYXJzZXQuYwotK3JlbG9jYXRhYmxlLmxvOiAkKHNyY2RpcikvcmVsb2NhdGFibGUuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3JlbG9jYXRhYmxlLmMKLStsb2NhbGVuYW1lLmxvOiAkKHNyY2RpcikvbG9jYWxlbmFtZS5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbG9jYWxlbmFtZS5jCi0rbG9nLmxvOiAkKHNyY2RpcikvbG9nLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2cuYwotK3ByaW50Zi5sbzogJChzcmNkaXIpL3ByaW50Zi5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcHJpbnRmLmMKLStvc2RlcC5sbzogJChzcmNkaXIpL29zZGVwLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9vc2RlcC5jCi0raW50bC1jb21wYXQubG86ICQoc3JjZGlyKS9pbnRsLWNvbXBhdC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvaW50bC1jb21wYXQuYwotIAotLWFsbC15ZXM6IGxpYmludGwuJGxhIGludGxoLmluc3QKLS1hbGwtbm86Ci0rcmVmLWFkZC5zZWQ6ICQoc3JjZGlyKS9yZWYtYWRkLnNpbgotKwlzZWQgLWUgJy9eIy9kJyAtZSAncy9AJydQQUNLQUdFJydAL0BQQUNLQUdFQC9nJyAkKHNyY2RpcikvcmVmLWFkZC5zaW4gPiB0LXJlZi1hZGQuc2VkCi0rCW12IHQtcmVmLWFkZC5zZWQgcmVmLWFkZC5zZWQKLStyZWYtZGVsLnNlZDogJChzcmNkaXIpL3JlZi1kZWwuc2luCi0rCXNlZCAtZSAnL14jL2QnIC1lICdzL0AnJ1BBQ0tBR0UnJ0AvQFBBQ0tBR0VAL2cnICQoc3JjZGlyKS9yZWYtZGVsLnNpbiA+IHQtcmVmLWRlbC5zZWQKLSsJbXYgdC1yZWYtZGVsLnNlZCByZWYtZGVsLnNlZAotIAotLWxpYmludGwuYTogJChPQkpFQ1RTKQotLQlybSAtZiAkQAotLQkkKEFSKSBjcnUgJEAgJChPQkpFQ1RTKQotLQkkKFJBTkxJQikgJEAKLStJTkNMVURFUyA9IC1JLiAtSSQoc3JjZGlyKSAtSS4uCi0gCi0tbGliaW50bC5sYTogJChPQkpFQ1RTKQotLQkkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpICQoTERGTEFHUykgLW8gJEAgJChPQkpFQ1RTKSBcCi0tCQkgICAtdmVyc2lvbi1pbmZvIDE6MCAtcnBhdGggJChsaWJkaXIpCi0rbGliZ251aW50bC5oOiAkKHNyY2RpcikvbGliZ251aW50bC5oLmluCi0rCXNlZCAtZSAncyxAJydIQVZFX1BPU0lYX1BSSU5URicnQCxASEFWRV9QT1NJWF9QUklOVEZALGcnIFwKLSsJICAgIC1lICdzLEAnJ0hBVkVfQVNQUklOVEYnJ0AsQEhBVkVfQVNQUklOVEZALGcnIFwKLSsJICAgIC1lICdzLEAnJ0hBVkVfU05QUklOVEYnJ0AsQEhBVkVfU05QUklOVEZALGcnIFwKLSsJICAgIC1lICdzLEAnJ0hBVkVfV1BSSU5URicnQCxASEFWRV9XUFJJTlRGQCxnJyBcCi0rCSAgPCAkKHNyY2RpcikvbGliZ251aW50bC5oLmluID4gbGliZ251aW50bC5oCi0gCi0tLi4vcG8vY2F0LWlkLXRibC4kbG86IC4uL3BvL2NhdC1pZC10YmwuYyAkKHRvcF9zcmNkaXIpL3BvLyQoUEFDS0FHRSkucG90Ci0tCWNkIC4uL3BvICYmICQoTUFLRSkgY2F0LWlkLXRibC4kbG8KLStsaWJpbnRsLmg6IGxpYmdudWludGwuaAotKwljcCBsaWJnbnVpbnRsLmggbGliaW50bC5oCi0gCi0tY2hlY2s6IGFsbAotK2NoYXJzZXQuYWxpYXM6ICQoc3JjZGlyKS9jb25maWcuY2hhcnNldAotKwkkKFNIRUxMKSAkKHNyY2RpcikvY29uZmlnLmNoYXJzZXQgJ0Bob3N0QCcgPiB0LSRACi0rCW12IHQtJEAgJEAKLSAKLS0jIFRoaXMgaW5zdGFsbGF0aW9uIGdvYWwgaXMgb25seSB1c2VkIGluIEdOVSBnZXR0ZXh0LiAgUGFja2FnZXMgd2hpY2gKLS0jIG9ubHkgdXNlIHRoZSBsaWJyYXJ5IHNob3VsZCB1c2UgaW5zdGFsbCBpbnN0ZWFkLgotK2NoZWNrOiBhbGwKLSAKLSAjIFdlIG11c3Qgbm90IGluc3RhbGwgdGhlIGxpYmludGwuaC9saWJpbnRsLmEgZmlsZXMgaWYgd2UgYXJlIG9uIGEKLS0jIHN5c3RlbSB3aGljaCBoYXMgdGhlIGdldHRleHQoKSBmdW5jdGlvbiBpbiBpdHMgQyBsaWJyYXJ5IG9yIGluIGEKLS0jIHNlcGFyYXRlIGxpYnJhcnkgb3IgdXNlIHRoZSBjYXRnZXRzIGludGVyZmFjZS4gIEEgc3BlY2lhbCBjYXNlIGlzCi0tIyB3aGVyZSBjb25maWd1cmUgZm91bmQgYSBwcmV2aW91c2x5IGluc3RhbGxlZCBHTlUgZ2V0dGV4dCBsaWJyYXJ5LgotKyMgc3lzdGVtIHdoaWNoIGhhcyB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpbiBpdHMgQyBsaWJyYXJ5IG9yIGluIGEKLSsjIHNlcGFyYXRlIGxpYnJhcnkuCi0gIyBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIG9uZSB3aGljaCBjb21lcyB3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUKLSAjIHBhY2thZ2UsIHlvdSBoYXZlIHRvIHVzZSBgY29uZmlndXJlIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0Jy4KLSBpbnN0YWxsOiBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1kYXRhCi0gaW5zdGFsbC1leGVjOiBhbGwKLS0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCIgXAotLQkgICAmJiB0ZXN0ICdASU5UTE9CSlNAJyA9ICckKEdFVFRPQkpTKSc7IHRoZW4gXAotLQkgIGlmIHRlc3QgLXIgJChNS0lOU1RBTExESVJTKTsgdGhlbiBcCi0tCSAgICAkKE1LSU5TVEFMTERJUlMpICQobGliZGlyKSAkKGluY2x1ZGVkaXIpOyBcCi0tCSAgZWxzZSBcCi0tCSAgICAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChsaWJkaXIpICQoaW5jbHVkZWRpcik7IFwKLSsJaWYgeyB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiIHx8IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB9IFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKTsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSBsaWJpbnRsLmggJChERVNURElSKSQoaW5jbHVkZWRpcikvbGliaW50bC5oOyBcCi0rCSAgJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgbGliaW50bC4kbGEgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLiRsYTsgXAotKwkgIGlmIHRlc3QgIkBSRUxPQ0FUQUJMRUAiID0geWVzOyB0aGVuIFwKLSsJICAgIGRlcGVuZGVuY2llcz1gc2VkIC1uIC1lICdzLF5kZXBlbmRlbmN5X2xpYnM9XCguKlwpLFwxLHAnIDwgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLmxhIHwgc2VkIC1lICJzLF4nLCwiIC1lICJzLCdcJCQsLCJgOyBcCi0rCSAgICBpZiB0ZXN0IC1uICIkJGRlcGVuZGVuY2llcyI7IHRoZW4gXAotKwkgICAgICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwubGE7IFwKLSsJICAgIGZpOyBcCi0gCSAgZmk7IFwKLS0JICAkKElOU1RBTExfREFUQSkgaW50bGguaW5zdCAkKGluY2x1ZGVkaXIpL2xpYmludGwuaDsgXAotLQkgICQoSU5TVEFMTF9EQVRBKSBsaWJpbnRsLmEgJChsaWJkaXIpL2xpYmludGwuYTsgXAotIAllbHNlIFwKLSAJICA6IDsgXAotIAlmaQotLWluc3RhbGwtZGF0YTogYWxsCi0tCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQiOyB0aGVuIFwKLS0JICBpZiB0ZXN0IC1yICQoTUtJTlNUQUxMRElSUyk7IHRoZW4gXAotLQkgICAgJChNS0lOU1RBTExESVJTKSAkKGdldHRleHRzcmNkaXIpOyBcCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiIFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSBubzsgdGhlbiBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpOyBcCi0rCSAgJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgbGliZ251aW50bC4kbGEgJChERVNURElSKSQobGliZGlyKS9saWJnbnVpbnRsLiRsYTsgXAotKwkgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvcHJlbG9hZGFibGVfbGliaW50bC5zbzsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmdudWludGwuc28gJChERVNURElSKSQobGliZGlyKS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvOyBcCi0rCSAgJChMSUJUT09MKSAtLW1vZGU9dW5pbnN0YWxsIFwKLSsJICAgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliZ251aW50bC4kbGE7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgIHRlc3QgQEdMSUJDMjFAICE9IG5vIHx8ICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAotKwkgIHRlbXA9JChERVNURElSKSQobGliZGlyKS90LWNoYXJzZXQuYWxpYXM7IFwKLSsJICBkZXN0PSQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgXAotKwkgIGlmIHRlc3QgLWYgJChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyB0aGVuIFwKLSsJICAgIG9yaWc9JChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyBcCi0rCSAgICBzZWQgLWYgcmVmLWFkZC5zZWQgJCRvcmlnID4gJCR0ZW1wOyBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAotKwkgICAgcm0gLWYgJCR0ZW1wOyBcCi0gCSAgZWxzZSBcCi0tCSAgICAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChnZXR0ZXh0c3JjZGlyKTsgXAotKwkgICAgaWYgdGVzdCBAR0xJQkMyMUAgPSBubzsgdGhlbiBcCi0rCSAgICAgIG9yaWc9Y2hhcnNldC5hbGlhczsgXAotKwkgICAgICBzZWQgLWYgcmVmLWFkZC5zZWQgJCRvcmlnID4gJCR0ZW1wOyBcCi0rCSAgICAgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCi0rCSAgICAgIHJtIC1mICQkdGVtcDsgXAotKwkgICAgZmk7IFwKLSAJICBmaTsgXAotLQkgICQoSU5TVEFMTF9EQVRBKSBWRVJTSU9OICQoZ2V0dGV4dHNyY2RpcikvVkVSU0lPTjsgXAotLQkgIGRpc3RzPSIkKERJU1RGSUxFUy5jb21tb24pIjsgXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobG9jYWxlZGlyKTsgXAotKwkgIHRlc3QgLWYgJChERVNURElSKSQobG9jYWxlZGlyKS9sb2NhbGUuYWxpYXMgXAotKwkgICAgJiYgb3JpZz0kKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhcyBcCi0rCSAgICB8fCBvcmlnPSQoc3JjZGlyKS9sb2NhbGUuYWxpYXM7IFwKLSsJICB0ZW1wPSQoREVTVERJUikkKGxvY2FsZWRpcikvdC1sb2NhbGUuYWxpYXM7IFwKLSsJICBkZXN0PSQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzOyBcCi0rCSAgc2VkIC1mIHJlZi1hZGQuc2VkICQkb3JpZyA+ICQkdGVtcDsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCi0rCSAgcm0gLWYgJCR0ZW1wOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0raW5zdGFsbC1kYXRhOiBhbGwKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKLSsJICAkKElOU1RBTExfREFUQSkgVkVSU0lPTiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS9WRVJTSU9OOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpIENoYW5nZUxvZy5pbnN0ICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpL0NoYW5nZUxvZzsgXAotKwkgIGRpc3RzPSJDT1BZSU5HLkxJQi0yLjAgQ09QWUlORy5MSUItMi4xICQoRElTVEZJTEVTLmNvbW1vbikiOyBcCi0gCSAgZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotLQkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLSsJICAgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmaWxlIFwKLSsJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0gCSAgZG9uZTsgXAotKwkgIGNobW9kIGEreCAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS9jb25maWcuY2hhcnNldDsgXAotKwkgIGRpc3RzPSIkKERJU1RGSUxFUy5nZW5lcmF0ZWQpIjsgXAotKwkgIGZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKLSsJICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIGRpcj0uOyBlbHNlIGRpcj0kKHNyY2Rpcik7IGZpOyBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgJCRkaXIvJCRmaWxlIFwKLSsJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0rCSAgZG9uZTsgXAotKwkgIGRpc3RzPSIkKERJU1RGSUxFUy5vYnNvbGV0ZSkiOyBcCi0rCSAgZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotKwkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0rCSAgZG9uZTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwotK2luc3RhbGwtc3RyaXA6IGluc3RhbGwKLSsKLStpbnN0YWxsZGlyczoKLSsJaWYgeyB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiIHx8IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB9IFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiBcCi0rCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0gbm87IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCi0rCSAgdGVzdCBAR0xJQkMyMUAgIT0gbm8gfHwgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpOyBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsb2NhbGVkaXIpOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0gCWVsc2UgXAotIAkgIDogOyBcCi0gCWZpCi1AQCAtMTQzLDIyICszNjcsNzYgQEAKLSBpbnN0YWxsY2hlY2s6Ci0gCi0gdW5pbnN0YWxsOgotLQlkaXN0cz0iJChESVNURklMRVMuY29tbW9uKSI7IFwKLS0JZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotLQkgIHJtIC1mICQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0tCWRvbmUKLSsJaWYgeyB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiIHx8IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB9IFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgIHJtIC1mICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2xpYmludGwuaDsgXAotKwkgICQoTElCVE9PTCkgLS1tb2RlPXVuaW5zdGFsbCBcCi0rCSAgICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwuJGxhOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiIFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSBubzsgdGhlbiBcCi0rCSAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKLSsJICBpZiB0ZXN0IC1mICQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgdGhlbiBcCi0rCSAgICB0ZW1wPSQoREVTVERJUikkKGxpYmRpcikvdC1jaGFyc2V0LmFsaWFzOyBcCi0rCSAgICBkZXN0PSQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgXAotKwkgICAgc2VkIC1mIHJlZi1kZWwuc2VkICQkZGVzdCA+ICQkdGVtcDsgXAotKwkgICAgaWYgZ3JlcCAnXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAkJCcgJCR0ZW1wID4gL2Rldi9udWxsOyB0aGVuIFwKLSsJICAgICAgcm0gLWYgJCRkZXN0OyBcCi0rCSAgICBlbHNlIFwKLSsJICAgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKLSsJICAgIGZpOyBcCi0rCSAgICBybSAtZiAkJHRlbXA7IFwKLSsJICBmaTsgXAotKwkgIGlmIHRlc3QgLWYgJChERVNURElSKSQobG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM7IHRoZW4gXAotKwkgICAgdGVtcD0kKERFU1RESVIpJChsb2NhbGVkaXIpL3QtbG9jYWxlLmFsaWFzOyBcCi0rCSAgICBkZXN0PSQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzOyBcCi0rCSAgICBzZWQgLWYgcmVmLWRlbC5zZWQgJCRkZXN0ID4gJCR0ZW1wOyBcCi0rCSAgICBpZiBncmVwICdeIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6ICQkJyAkJHRlbXAgPiAvZGV2L251bGw7IHRoZW4gXAotKwkgICAgICBybSAtZiAkJGRlc3Q7IFwKLSsJICAgIGVsc2UgXAotKwkgICAgICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAotKwkgICAgZmk7IFwKLSsJICAgIHJtIC1mICQkdGVtcDsgXAotKwkgIGZpOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICBmb3IgZmlsZSBpbiBWRVJTSU9OIENoYW5nZUxvZyBDT1BZSU5HLkxJQi0yLjAgQ09QWUlORy5MSUItMi4xICQoRElTVEZJTEVTLmNvbW1vbikgJChESVNURklMRVMuZ2VuZXJhdGVkKTsgZG8gXAotKwkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0rCSAgZG9uZTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotIAotLWluZm8gZHZpOgotK2luZm8gZHZpIHBzIHBkZiBodG1sOgotIAotLSQoT0JKRUNUUyk6IC4uL2NvbmZpZy5oIGxpYmdldHRleHQuaAotLWJpbmR0ZXh0ZG9tLiRsbyBmaW5kZG9tYWluLiRsbyBsb2FkbXNnY2F0LiRsbzogZ2V0dGV4dFAuaCBnZXR0ZXh0LmggbG9hZGluZm8uaAotLWRjZ2V0dGV4dC4kbG86IGdldHRleHRQLmggZ2V0dGV4dC5oIGhhc2gtc3RyaW5nLmggbG9hZGluZm8uaAotKyQoT0JKRUNUUyk6IC4uL2NvbmZpZy5oIGxpYmdudWludGwuaAotK2JpbmR0ZXh0ZG9tLiRsbyBkY2dldHRleHQuJGxvIGRjaWdldHRleHQuJGxvIGRjbmdldHRleHQuJGxvIGRnZXR0ZXh0LiRsbyBkbmdldHRleHQuJGxvIGZpbmRkb21haW4uJGxvIGdldHRleHQuJGxvIGludGwtY29tcGF0LiRsbyBsb2FkbXNnY2F0LiRsbyBsb2NhbGVhbGlhcy4kbG8gbmdldHRleHQuJGxvIHRleHRkb21haW4uJGxvOiAkKHNyY2RpcikvZ2V0dGV4dFAuaCAkKHNyY2RpcikvZ21vLmggJChzcmNkaXIpL2xvYWRpbmZvLmgKLStkY2lnZXR0ZXh0LiRsbyBsb2FkbXNnY2F0LiRsbzogJChzcmNkaXIpL2hhc2gtc3RyaW5nLmgKLStleHBsb2RlbmFtZS4kbG8gbDEwbmZsaXN0LiRsbzogJChzcmNkaXIpL2xvYWRpbmZvLmgKLStkY2lnZXR0ZXh0LiRsbyBsb2FkbXNnY2F0LiRsbyBwbHVyYWwuJGxvIHBsdXJhbC1leHAuJGxvOiAkKHNyY2RpcikvcGx1cmFsLWV4cC5oCi0rZGNpZ2V0dGV4dC4kbG86ICQoc3JjZGlyKS9ldmFsLXBsdXJhbC5oCi0rbG9jYWxjaGFyc2V0LiRsbzogJChzcmNkaXIpL2xvY2FsY2hhcnNldC5oCi0rbG9jYWxlYWxpYXMuJGxvIGxvY2FsY2hhcnNldC4kbG8gcmVsb2NhdGFibGUuJGxvOiAkKHNyY2RpcikvcmVsb2NhdGFibGUuaAotK3ByaW50Zi4kbG86ICQoc3JjZGlyKS9wcmludGYtYXJncy5oICQoc3JjZGlyKS9wcmludGYtYXJncy5jICQoc3JjZGlyKS9wcmludGYtcGFyc2UuaCAkKHNyY2Rpcikvd3ByaW50Zi1wYXJzZS5oICQoc3JjZGlyKS94c2l6ZS5oICQoc3JjZGlyKS9wcmludGYtcGFyc2UuYyAkKHNyY2RpcikvdmFzbnByaW50Zi5oICQoc3JjZGlyKS92YXNud3ByaW50Zi5oICQoc3JjZGlyKS92YXNucHJpbnRmLmMKLSAKLSB0YWdzOiBUQUdTCi0gCi0gVEFHUzogJChIRUFERVJTKSAkKFNPVVJDRVMpCi0gCWhlcmU9YHB3ZGA7IGNkICQoc3JjZGlyKSAmJiBldGFncyAtbyAkJGhlcmUvVEFHUyAkKEhFQURFUlMpICQoU09VUkNFUykKLSAKLStjdGFnczogQ1RBR1MKLSsKLStDVEFHUzogJChIRUFERVJTKSAkKFNPVVJDRVMpCi0rCWhlcmU9YHB3ZGA7IGNkICQoc3JjZGlyKSAmJiBjdGFncyAtbyAkJGhlcmUvQ1RBR1MgJChIRUFERVJTKSAkKFNPVVJDRVMpCi0rCi0gaWQ6IElECi0gCi0gSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKQotQEAgLTE2NiwxMiArNDQ0LDE5IEBACi0gCi0gCi0gbW9zdGx5Y2xlYW46Ci0tCXJtIC1mICouYSAqLm8gKi5sbyBjb3JlIGNvcmUuKgotKwlybSAtZiAqLmEgKi5sYSAqLm8gKi5vYmogKi5sbyBjb3JlIGNvcmUuKgotKwlybSAtZiBsaWJnbnVpbnRsLmggbGliaW50bC5oIGNoYXJzZXQuYWxpYXMgcmVmLWFkZC5zZWQgcmVmLWRlbC5zZWQKLSsJcm0gLWYgLXIgLmxpYnMgX2xpYnMKLSAKLSBjbGVhbjogbW9zdGx5Y2xlYW4KLSAKLSBkaXN0Y2xlYW46IGNsZWFuCi0tCXJtIC1mIE1ha2VmaWxlIElEIFRBR1MgcG8ybXNnLnNlZCBwbzJ0Ymwuc2VkIGxpYmludGwuaAotKwlybSAtZiBNYWtlZmlsZSBJRCBUQUdTCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtcnVudGltZSIgfHwgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotKwkgIHJtIC1mIENoYW5nZUxvZy5pbnN0ICQoRElTVEZJTEVTLm5vcm1hbCk7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSAKLSBtYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KLSAJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKLUBAIC0xODEsMzMgKzQ2NiwyNyBAQAotICMgR05VIGdldHRleHQgbmVlZHMgbm90IGNvbnRhaW4gdGhlIGZpbGUgYFZFUlNJT04nIGJ1dCBjb250YWlucyBzb21lCi0gIyBvdGhlciBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkIGluIG90aGVyIHBhY2thZ2VzLgotIGRpc3RkaXIgPSAuLi8kKFBBQ0tBR0UpLSQoVkVSU0lPTikvJChzdWJkaXIpCi0tZGlzdCBkaXN0ZGlyOiBNYWtlZmlsZSAkKERJU1RGSUxFUykKLS0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSBnZXR0ZXh0OyB0aGVuIFwKLS0JICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5nZXR0ZXh0KSI7IFwKLStkaXN0IGRpc3RkaXI6IE1ha2VmaWxlCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICA6IDsgXAotIAllbHNlIFwKLS0JICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5ub3JtYWwpIjsgXAotLQlmaTsgXAotLQlmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pICQkYWRkaXRpb25hbDsgZG8gXAotLQkgIGxuICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKSAyPiAvZGV2L251bGwgXAotLQkgICAgfHwgY3AgLXAgJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpOyBcCi0tCWRvbmUKLS0KLS1kaXN0LWxpYmM6Ci0tCXRhciB6Y3ZmIGludGwtZ2xpYmMudGFyLmd6ICQoQ09NU1JDUykgJChDT01IRFJTKSBsaWJpbnRsLmguZ2xpYmMKLS0KLS1NYWtlZmlsZTogTWFrZWZpbGUuaW4gLi4vY29uZmlnLnN0YXR1cwotLQljZCAuLiBcCi0tCSAgJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQCBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0rCSAgaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIjsgdGhlbiBcCi0rCSAgICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5nZXR0ZXh0KSI7IFwKLSsJICBlbHNlIFwKLSsJICAgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLm5vcm1hbCkiOyBcCi0rCSAgZmk7IFwKLSsJICAkKE1BS0UpICQoRElTVEZJTEVTLmNvbW1vbikgJChESVNURklMRVMuZ2VuZXJhdGVkKSAkJGFkZGl0aW9uYWw7IFwKLSsJICBmb3IgZmlsZSBpbiBDaGFuZ2VMb2cgJChESVNURklMRVMuY29tbW9uKSAkKERJU1RGSUxFUy5nZW5lcmF0ZWQpICQkYWRkaXRpb25hbDsgZG8gXAotKwkgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gZGlyPS47IGVsc2UgZGlyPSQoc3JjZGlyKTsgZmk7IFwKLSsJICAgIGNwIC1wICQkZGlyLyQkZmlsZSAkKGRpc3RkaXIpOyBcCi0rCSAgZG9uZTsgXAotKwlmaQotIAotLSMgVGhlIGRlcGVuZGVuY3kgZm9yIGludGxoLmluc3QgaXMgZGlmZmVyZW50IGluIGdldHRleHQgYW5kIGFsbCBvdGhlcgotLSMgcGFja2FnZXMuICBCZWNhdXNlIHdlIGNhbm5vdCB5b3UgR05VIG1ha2UgZmVhdHVyZXMgd2UgaGF2ZSB0byBzb2x2ZQotLSMgdGhlIHByb2JsZW0gd2hpbGUgcmV3cml0aW5nIE1ha2VmaWxlLmluLgotLUBHVF9ZRVNAaW50bGguaW5zdDogaW50bGguaW5zdC5pbiAuLi9jb25maWcuc3RhdHVzCi0tQEdUX1lFU0AJY2QgLi4gXAotLUBHVF9ZRVNACSYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9IFwKLS1AR1RfWUVTQAkgICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotLUBHVF9OT0AuUEhPTlk6IGludGxoLmluc3QKLS1AR1RfTk9AaW50bGguaW5zdDoKLStNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCi0rCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKLSsjIFRoaXMgd291bGQgYmUgbW9yZSBlZmZpY2llbnQsIGJ1dCBkb2Vzbid0IHdvcmsgYW55IG1vcmUgd2l0aCBhdXRvY29uZi0yLjU3LAotKyMgd2hlbiBBQ19DT05GSUdfRklMRVMoW2ludGwvTWFrZWZpbGU6c29tZWRpci9NYWtlZmlsZS5pbl0pIGlzIHVzZWQuCi0rIwljZCAkKHRvcF9idWlsZGRpcikgJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQCBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0gCi0gIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIG5vdCB0byBleHBvcnQgYWxsIHZhcmlhYmxlcy4KLSAjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9uZ2V0dGV4dC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL25nZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC41MzM3MjEwMzIgLTA0MDAKLUBAIC0wLDAgKzEsNjUgQEAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ2V0dGV4dCgzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIF9fbmVlZF9OVUxMCi0rIyBpbmNsdWRlIDxzdGRkZWYuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSA8c3RkbGliLmg+CQkvKiBKdXN0IGZvciBOVUxMLiAgKi8KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotKyAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLSsgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KLSsgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIE5HRVRURVhUIF9fbmdldHRleHQKLSsjIGRlZmluZSBEQ05HRVRURVhUIF9fZGNuZ2V0dGV4dAotKyNlbHNlCi0rIyBkZWZpbmUgTkdFVFRFWFQgbGliaW50bF9uZ2V0dGV4dAotKyMgZGVmaW5lIERDTkdFVFRFWFQgbGliaW50bF9kY25nZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLSsgICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAotKyAgIHRleHQpLiAgKi8KLStjaGFyICoKLStOR0VUVEVYVCAoY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0rewotKyAgcmV0dXJuIERDTkdFVFRFWFQgKE5VTEwsIG1zZ2lkMSwgbXNnaWQyLCBuLCBMQ19NRVNTQUdFUyk7Ci0rfQotKwotKyNpZmRlZiBfTElCQwotKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotK3dlYWtfYWxpYXMgKF9fbmdldHRleHQsIG5nZXR0ZXh0KTsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9vczJjb21wYXQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9vczJjb21wYXQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjUzOTcyMDEyMCAtMDQwMAotQEAgLTAsMCArMSw5OCBAQAotKy8qIE9TLzIgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNkZWZpbmUgT1MyX0FXQVJFCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rCi0rLyogQSB2ZXJzaW9uIG9mIGdldGVudigpIHRoYXQgd29ya3MgZnJvbSBETExzICovCi0rZXh0ZXJuIHVuc2lnbmVkIGxvbmcgRG9zU2NhbkVudiAoY29uc3QgdW5zaWduZWQgY2hhciAqcHN6TmFtZSwgdW5zaWduZWQgY2hhciAqKnBwc3pWYWx1ZSk7Ci0rCi0rY2hhciAqCi0rX25sX2dldGVudiAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICB1bnNpZ25lZCBjaGFyICp2YWx1ZTsKLSsgIGlmIChEb3NTY2FuRW52IChuYW1lLCAmdmFsdWUpKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIHZhbHVlOwotK30KLSsKLSsvKiBBIGZpeGVkIHNpemUgYnVmZmVyLiAgKi8KLStjaGFyIGxpYmludGxfbmxfZGVmYXVsdF9kaXJuYW1lW01BWFBBVEhMRU4rMV07Ci0rCi0rY2hhciAqX25sb3MyX2xpYmRpciA9IE5VTEw7Ci0rY2hhciAqX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IE5VTEw7Ci0rY2hhciAqX25sb3MyX2xvY2FsZWRpciA9IE5VTEw7Ci0rCi0rc3RhdGljIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgdm9pZAotK25sb3MyX2luaXRpYWxpemUgKCkKLSt7Ci0rICBjaGFyICpyb290ID0gZ2V0ZW52ICgiVU5JWFJPT1QiKTsKLSsgIGNoYXIgKmdudWxvY2FsZWRpciA9IGdldGVudiAoIkdOVUxPQ0FMRURJUiIpOwotKwotKyAgX25sb3MyX2xpYmRpciA9IGdudWxvY2FsZWRpcjsKLSsgIGlmICghX25sb3MyX2xpYmRpcikKLSsgICAgewotKyAgICAgIGlmIChyb290KQotKyAgICAgICAgewotKyAgICAgICAgICBzaXplX3Qgc2wgPSBzdHJsZW4gKHJvb3QpOwotKyAgICAgICAgICBfbmxvczJfbGliZGlyID0gKGNoYXIgKikgbWFsbG9jIChzbCArIHN0cmxlbiAoTElCRElSKSArIDEpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9saWJkaXIsIHJvb3QsIHNsKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbGliZGlyICsgc2wsIExJQkRJUiwgc3RybGVuIChMSUJESVIpICsgMSk7Ci0rICAgICAgICB9Ci0rICAgICAgZWxzZQotKyAgICAgICAgX25sb3MyX2xpYmRpciA9IExJQkRJUjsKLSsgICAgfQotKwotKyAgX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IGdudWxvY2FsZWRpcjsKLSsgIGlmICghX25sb3MyX2xvY2FsZWFsaWFzcGF0aCkKLSsgICAgewotKyAgICAgIGlmIChyb290KQotKyAgICAgICAgewotKyAgICAgICAgICBzaXplX3Qgc2wgPSBzdHJsZW4gKHJvb3QpOwotKyAgICAgICAgICBfbmxvczJfbG9jYWxlYWxpYXNwYXRoID0gKGNoYXIgKikgbWFsbG9jIChzbCArIHN0cmxlbiAoTE9DQUxFX0FMSUFTX1BBVEgpICsgMSk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWFsaWFzcGF0aCwgcm9vdCwgc2wpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9sb2NhbGVhbGlhc3BhdGggKyBzbCwgTE9DQUxFX0FMSUFTX1BBVEgsIHN0cmxlbiAoTE9DQUxFX0FMSUFTX1BBVEgpICsgMSk7Ci0rICAgICAgICB9Ci0rICAgICBlbHNlCi0rICAgICAgICBfbmxvczJfbG9jYWxlYWxpYXNwYXRoID0gTE9DQUxFX0FMSUFTX1BBVEg7Ci0rICAgIH0KLSsKLSsgIF9ubG9zMl9sb2NhbGVkaXIgPSBnbnVsb2NhbGVkaXI7Ci0rICBpZiAoIV9ubG9zMl9sb2NhbGVkaXIpCi0rICAgIHsKLSsgICAgICBpZiAocm9vdCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgc2l6ZV90IHNsID0gc3RybGVuIChyb290KTsKLSsgICAgICAgICAgX25sb3MyX2xvY2FsZWRpciA9IChjaGFyICopIG1hbGxvYyAoc2wgKyBzdHJsZW4gKExPQ0FMRURJUikgKyAxKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbG9jYWxlZGlyLCByb290LCBzbCk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWRpciArIHNsLCBMT0NBTEVESVIsIHN0cmxlbiAoTE9DQUxFRElSKSArIDEpOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIF9ubG9zMl9sb2NhbGVkaXIgPSBMT0NBTEVESVI7Ci0rICAgIH0KLSsKLSsgIGlmIChzdHJsZW4gKF9ubG9zMl9sb2NhbGVkaXIpIDw9IE1BWFBBVEhMRU4pCi0rICAgIHN0cmNweSAobGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWUsIF9ubG9zMl9sb2NhbGVkaXIpOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9vczJjb21wYXQuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9vczJjb21wYXQuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjU0NDcxOTM2MCAtMDQwMAotQEAgLTAsMCArMSw0NiBAQAotKy8qIE9TLzIgY29tcGF0aWJpbGl0eSBkZWZpbmVzLgotKyAgIFRoaXMgZmlsZSBpcyBpbnRlbmRlZCB0byBiZSBpbmNsdWRlZCBmcm9tIGNvbmZpZy5oCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFdoZW4gaW5jbHVkZWQgZnJvbSBvczJjb21wYXQuaCB3ZSBuZWVkIGFsbCB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbnMgKi8KLSsjaWZuZGVmIE9TMl9BV0FSRQotKwotKyN1bmRlZiBMSUJESVIKLSsjZGVmaW5lIExJQkRJUgkJCV9ubG9zMl9saWJkaXIKLStleHRlcm4gY2hhciAqX25sb3MyX2xpYmRpcjsKLSsKLSsjdW5kZWYgTE9DQUxFRElSCi0rI2RlZmluZSBMT0NBTEVESVIJCV9ubG9zMl9sb2NhbGVkaXIKLStleHRlcm4gY2hhciAqX25sb3MyX2xvY2FsZWRpcjsKLSsKLSsjdW5kZWYgTE9DQUxFX0FMSUFTX1BBVEgKLSsjZGVmaW5lIExPQ0FMRV9BTElBU19QQVRICV9ubG9zMl9sb2NhbGVhbGlhc3BhdGgKLStleHRlcm4gY2hhciAqX25sb3MyX2xvY2FsZWFsaWFzcGF0aDsKLSsKLSsjZW5kaWYKLSsKLSsjdW5kZWYgSEFWRV9TVFJDQVNFQ01QCi0rI2RlZmluZSBIQVZFX1NUUkNBU0VDTVAgMQotKyNkZWZpbmUgc3RyY2FzZWNtcCBzdHJpY21wCi0rI2RlZmluZSBzdHJuY2FzZWNtcCBzdHJuaWNtcAotKwotKy8qIFdlIGhhdmUgb3VyIG93biBnZXRlbnYoKSB3aGljaCB3b3JrcyBldmVuIGlmIGxpYnJhcnkgaXMgY29tcGlsZWQgYXMgRExMICovCi0rI2RlZmluZSBnZXRlbnYgX25sX2dldGVudgotKwotKy8qIE9sZGVyIHZlcnNpb25zIG9mIGdldHRleHQgdXNlZCAtMSBhcyB0aGUgdmFsdWUgb2YgTENfTUVTU0FHRVMgKi8KLSsjZGVmaW5lIExDX01FU1NBR0VTX0NPTVBBVCAoLTEpCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvb3NkZXAuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9vc2RlcC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTUwNzE4NDQ4IC0wNDAwCi1AQCAtMCwwICsxLDI0IEBACi0rLyogT1MgZGVwZW5kZW50IHBhcnRzIG9mIGxpYmludGwuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZiBkZWZpbmVkIF9fRU1YX18KLSsjIGluY2x1ZGUgIm9zMmNvbXBhdC5jIgotKyNlbHNlCi0rLyogQXZvaWQgQUlYIGNvbXBpbGVyIHdhcm5pbmcuICAqLwotK3R5cGVkZWYgaW50IGR1bW15OwotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3BsdXJhbC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BsdXJhbC5jCTIwMDQtMDktMTIgMTQ6NDA6MzYuNTcxNDExMjU2IC0wNDAwCi1AQCAtMCwwICsxLDE0OTAgQEAKLSsvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBmcm9tIHBsdXJhbC55Ci0rICAgYnkgR05VIGJpc29uIDEuMzUuICAqLwotKwotKyNkZWZpbmUgWVlCSVNPTiAxICAvKiBJZGVudGlmeSBCaXNvbiBvdXRwdXQuICAqLwotKwotKyNkZWZpbmUgeXlwYXJzZSBfX2dldHRleHRwYXJzZQotKyNkZWZpbmUgeXlsZXggX19nZXR0ZXh0bGV4Ci0rI2RlZmluZSB5eWVycm9yIF9fZ2V0dGV4dGVycm9yCi0rI2RlZmluZSB5eWx2YWwgX19nZXR0ZXh0bHZhbAotKyNkZWZpbmUgeXljaGFyIF9fZ2V0dGV4dGNoYXIKLSsjZGVmaW5lIHl5ZGVidWcgX19nZXR0ZXh0ZGVidWcKLSsjZGVmaW5lIHl5bmVycnMgX19nZXR0ZXh0bmVycnMKLSsjIGRlZmluZQlFUVVPUDIJMjU3Ci0rIyBkZWZpbmUJQ01QT1AyCTI1OAotKyMgZGVmaW5lCUFERE9QMgkyNTkKLSsjIGRlZmluZQlNVUxPUDIJMjYwCi0rIyBkZWZpbmUJTlVNQkVSCTI2MQotKwotKyNsaW5lIDEgInBsdXJhbC55IgotKwotKy8qIEV4cHJlc3Npb24gcGFyc2luZyBmb3IgcGx1cmFsIGZvcm0gc2VsZWN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRoZSBiaXNvbiBnZW5lcmF0ZWQgcGFyc2VyIHVzZXMgYWxsb2NhLiAgQUlYIDMgZm9yY2VzIHVzIHRvIHB1dCB0aGlzCi0rICAgZGVjbGFyYXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gIFRoZSBkZWNsYXJhdGlvbiBpbiBiaXNvbidzCi0rICAgc2tlbGV0b24gZmlsZSBjb21lcyB0b28gbGF0ZS4gIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+Ci0rICAgYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlIGFyYml0cmFyeSBzeXN0ZW0gaGVhZGVycy4gICovCi0rI2lmIGRlZmluZWQgX0FJWCAmJiAhZGVmaW5lZCBfX0dOVUNfXwotKyAjcHJhZ21hIGFsbG9jYQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rCi0rLyogVGhlIG1haW4gZnVuY3Rpb24gZ2VuZXJhdGVkIGJ5IHRoZSBwYXJzZXIgaXMgY2FsbGVkIF9fZ2V0dGV4dHBhcnNlLAotKyAgIGJ1dCB3ZSB3YW50IGl0IHRvIGJlIGNhbGxlZCBQTFVSQUxfUEFSU0UuICAqLwotKyNpZm5kZWYgX0xJQkMKLSsjIGRlZmluZSBfX2dldHRleHRwYXJzZSBQTFVSQUxfUEFSU0UKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFlZTEVYX1BBUkFNCSYoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPmNwCi0rI2RlZmluZSBZWVBBUlNFX1BBUkFNCWFyZwotKwotKyNsaW5lIDQ5ICJwbHVyYWwueSIKLSsjaWZuZGVmIFlZU1RZUEUKLSt0eXBlZGVmIHVuaW9uIHsKLSsgIHVuc2lnbmVkIGxvbmcgaW50IG51bTsKLSsgIGVudW0gb3BlcmF0b3Igb3A7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwOwotK30geXlzdHlwZTsKLSsjIGRlZmluZSBZWVNUWVBFIHl5c3R5cGUKLSsjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQotKyNlbmRpZgotKyNsaW5lIDU1ICJwbHVyYWwueSIKLSsKLSsvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotK3N0YXRpYyBpbnQgeXlsZXggKFlZU1RZUEUgKmx2YWwsIGNvbnN0IGNoYXIgKipwZXhwKTsKLStzdGF0aWMgdm9pZCB5eWVycm9yIChjb25zdCBjaGFyICpzdHIpOwotKwotKy8qIEFsbG9jYXRpb24gb2YgZXhwcmVzc2lvbnMuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cCAoaW50IG5hcmdzLCBlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqIGNvbnN0ICphcmdzKQotK3sKLSsgIGludCBpOwotKyAgc3RydWN0IGV4cHJlc3Npb24gKm5ld3A7Ci0rCi0rICAvKiBJZiBhbnkgb2YgdGhlIGFyZ3VtZW50IGNvdWxkIG5vdCBiZSBtYWxsb2MnZWQsIGp1c3QgcmV0dXJuIE5VTEwuICAqLwotKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsgICAgaWYgKGFyZ3NbaV0gPT0gTlVMTCkKLSsgICAgICBnb3RvIGZhaWw7Ci0rCi0rICAvKiBBbGxvY2F0ZSBhIG5ldyBleHByZXNzaW9uLiAgKi8KLSsgIG5ld3AgPSAoc3RydWN0IGV4cHJlc3Npb24gKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7Ci0rICBpZiAobmV3cCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgbmV3cC0+bmFyZ3MgPSBuYXJnczsKLSsgICAgICBuZXdwLT5vcGVyYXRpb24gPSBvcDsKLSsgICAgICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKwluZXdwLT52YWwuYXJnc1tpXSA9IGFyZ3NbaV07Ci0rICAgICAgcmV0dXJuIG5ld3A7Ci0rICAgIH0KLSsKLSsgZmFpbDoKLSsgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rICAgIEZSRUVfRVhQUkVTU0lPTiAoYXJnc1tpXSk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8wIChlbnVtIG9wZXJhdG9yIG9wKQotK3sKLSsgIHJldHVybiBuZXdfZXhwICgwLCBvcCwgTlVMTCk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMSAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKnJpZ2h0KQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzFdOwotKwotKyAgYXJnc1swXSA9IHJpZ2h0OwotKyAgcmV0dXJuIG5ld19leHAgKDEsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzIgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpsZWZ0LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmlnaHQpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMl07Ci0rCi0rICBhcmdzWzBdID0gbGVmdDsKLSsgIGFyZ3NbMV0gPSByaWdodDsKLSsgIHJldHVybiBuZXdfZXhwICgyLCBvcCwgYXJncyk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMyAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmJleHAsCi0rCSAgIHN0cnVjdCBleHByZXNzaW9uICp0YnJhbmNoLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZmJyYW5jaCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1szXTsKLSsKLSsgIGFyZ3NbMF0gPSBiZXhwOwotKyAgYXJnc1sxXSA9IHRicmFuY2g7Ci0rICBhcmdzWzJdID0gZmJyYW5jaDsKLSsgIHJldHVybiBuZXdfZXhwICgzLCBvcCwgYXJncyk7Ci0rfQotKwotKyNpZm5kZWYgWVlERUJVRwotKyMgZGVmaW5lIFlZREVCVUcgMAotKyNlbmRpZgotKwotKwotKwotKyNkZWZpbmUJWVlGSU5BTAkJMjcKLSsjZGVmaW5lCVlZRkxBRwkJLTMyNzY4Ci0rI2RlZmluZQlZWU5UQkFTRQkxNgotKwotKy8qIFlZVFJBTlNMQVRFKFlZTEVYKSAtLSBCaXNvbiB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gKi8KLSsjZGVmaW5lIFlZVFJBTlNMQVRFKHgpICgodW5zaWduZWQpKHgpIDw9IDI2MSA/IHl5dHJhbnNsYXRlW3hdIDogMTgpCi0rCi0rLyogWVlUUkFOU0xBVEVbWVlMRVhdIC0tIEJpc29uIHRva2VuIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAqLwotK3N0YXRpYyBjb25zdCBjaGFyIHl5dHJhbnNsYXRlW10gPQotK3sKLSsgICAgICAgMCwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAxMCwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICA1LCAgICAgMiwKLSsgICAgICAxNCwgICAgMTUsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgIDEyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAxMywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDYsICAgICA3LCAgICAgOCwKLSsgICAgICAgOSwgICAgMTEKLSt9OwotKwotKyNpZiBZWURFQlVHCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cHJoc1tdID0KLSt7Ci0rICAgICAgIDAsICAgICAwLCAgICAgMiwgICAgIDgsICAgIDEyLCAgICAxNiwgICAgMjAsICAgIDI0LCAgICAyOCwgICAgMzIsCi0rICAgICAgMzUsICAgIDM3LCAgICAzOQotK307Ci0rc3RhdGljIGNvbnN0IHNob3J0IHl5cmhzW10gPQotK3sKLSsgICAgICAxNywgICAgIDAsICAgIDE3LCAgICAgMywgICAgMTcsICAgIDEyLCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgNCwKLSsgICAgICAxNywgICAgIDAsICAgIDE3LCAgICAgNSwgICAgMTcsICAgICAwLCAgICAxNywgICAgIDYsICAgIDE3LCAgICAgMCwKLSsgICAgICAxNywgICAgIDcsICAgIDE3LCAgICAgMCwgICAgMTcsICAgICA4LCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgOSwKLSsgICAgICAxNywgICAgIDAsICAgIDEwLCAgICAxNywgICAgIDAsICAgIDEzLCAgICAgMCwgICAgMTEsICAgICAwLCAgICAxNCwKLSsgICAgICAxNywgICAgMTUsICAgICAwCi0rfTsKLSsKLSsjZW5kaWYKLSsKLSsjaWYgWVlERUJVRwotKy8qIFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICovCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cmxpbmVbXSA9Ci0rewotKyAgICAgICAwLCAgIDE1MCwgICAxNTgsICAgMTYyLCAgIDE2NiwgICAxNzAsICAgMTc0LCAgIDE3OCwgICAxODIsICAgMTg2LAotKyAgICAgMTkwLCAgIDE5NCwgICAxOTkKLSt9OwotKyNlbmRpZgotKwotKwotKyNpZiAoWVlERUJVRykgfHwgZGVmaW5lZCBZWUVSUk9SX1ZFUkJPU0UKLSsKLSsvKiBZWVROQU1FW1RPS0VOX05VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHRva2VuIFRPS0VOX05VTS4gKi8KLStzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KLSt7Ci0rICAiJCIsICJlcnJvciIsICIkdW5kZWZpbmVkLiIsICInPyciLCAiJ3wnIiwgIicmJyIsICJFUVVPUDIiLCAiQ01QT1AyIiwgCi0rICAiQURET1AyIiwgIk1VTE9QMiIsICInISciLCAiTlVNQkVSIiwgIic6JyIsICInbiciLCAiJygnIiwgIicpJyIsIAotKyAgInN0YXJ0IiwgImV4cCIsIDAKLSt9OwotKyNlbmRpZgotKwotKy8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICovCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cjFbXSA9Ci0rewotKyAgICAgICAwLCAgICAxNiwgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LAotKyAgICAgIDE3LCAgICAxNywgICAgMTcKLSt9OwotKwotKy8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAqLwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXIyW10gPQotK3sKLSsgICAgICAgMCwgICAgIDEsICAgICA1LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMiwKLSsgICAgICAgMSwgICAgIDEsICAgICAzCi0rfTsKLSsKLSsvKiBZWURFRkFDVFtTXSAtLSBkZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGggaW4gc3RhdGUgUyB3aGVuIFlZVEFCTEUKLSsgICBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvIG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuCi0rICAgZXJyb3IuICovCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5ZGVmYWN0W10gPQotK3sKLSsgICAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMCwgICAgIDAsICAgICAxLCAgICAgOSwgICAgIDAsICAgICAwLCAgICAgMCwKLSsgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAgMCwgICAgIDMsICAgICA0LCAgICAgNSwKLSsgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgMCwgICAgIDIsICAgICAwLCAgICAgMCwgICAgIDAKLSt9OwotKwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eWRlZmdvdG9bXSA9Ci0rewotKyAgICAgIDI1LCAgICAgNQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cGFjdFtdID0KLSt7Ci0rICAgICAgLTksICAgIC05LC0zMjc2OCwtMzI3NjgsICAgIC05LCAgICAzNCwtMzI3NjgsICAgIDExLCAgICAtOSwgICAgLTksCi0rICAgICAgLTksICAgIC05LCAgICAtOSwgICAgLTksICAgIC05LC0zMjc2OCwgICAgMjQsICAgIDM5LCAgICA0MywgICAgMTYsCi0rICAgICAgMjYsICAgIC0zLC0zMjc2OCwgICAgLTksICAgIDM0LCAgICAyMSwgICAgNTMsLTMyNzY4Ci0rfTsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlwZ290b1tdID0KLSt7Ci0rICAtMzI3NjgsICAgIC0xCi0rfTsKLSsKLSsKLSsjZGVmaW5lCVlZTEFTVAkJNTMKLSsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXl0YWJsZVtdID0KLSt7Ci0rICAgICAgIDYsICAgICAxLCAgICAgMiwgICAgIDcsICAgICAzLCAgICAgNCwgICAgMTQsICAgIDE2LCAgICAxNywgICAgMTgsCi0rICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsCi0rICAgICAgMTQsICAgIDI2LCAgICAyNCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgICA4LCAgICAgOSwgICAgMTAsCi0rICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDEzLCAgICAxNCwgICAgMjMsICAgICA4LCAgICAgOSwgICAgMTAsCi0rICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTEsCi0rICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMjcKLSt9OwotKwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eWNoZWNrW10gPQotK3sKLSsgICAgICAgMSwgICAgMTAsICAgIDExLCAgICAgNCwgICAgMTMsICAgIDE0LCAgICAgOSwgICAgIDgsICAgICA5LCAgICAxMCwKLSsgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSsgICAgICAgOSwgICAgIDAsICAgIDIzLCAgICAgNywgICAgIDgsICAgICA5LCAgICAxNSwgICAgIDMsICAgICA0LCAgICAgNSwKLSsgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgIDgsICAgICA5LCAgICAxMiwgICAgIDMsICAgICA0LCAgICAgNSwKLSsgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAgNiwKLSsgICAgICAgNywgICAgIDgsICAgICA5LCAgICAgMAotK307Ci0rI2RlZmluZSBZWVBVUkUgMQotKwotKy8qIC0qLUMtKi0gIE5vdGUgc29tZSBjb21waWxlcnMgY2hva2Ugb24gY29tbWVudHMgb24gYCNsaW5lJyBsaW5lcy4gICovCi0rI2xpbmUgMyAiL3Vzci9sb2NhbC9zaGFyZS9iaXNvbi9iaXNvbi5zaW1wbGUiCi0rCi0rLyogU2tlbGV0b24gb3V0cHV0IHBhcnNlciBmb3IgYmlzb24sCi0rCi0rICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKwotKy8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHdoZW4gdGhpcyBmaWxlIGlzIGNvcGllZCBieSBCaXNvbiBpbnRvIGEKLSsgICBCaXNvbiBvdXRwdXQgZmlsZSwgeW91IG1heSB1c2UgdGhhdCBvdXRwdXQgZmlsZSB3aXRob3V0IHJlc3RyaWN0aW9uLgotKyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSsgICBpbiB2ZXJzaW9uIDEuMjQgb2YgQmlzb24uICAqLwotKwotKy8qIFRoaXMgaXMgdGhlIHBhcnNlciBjb2RlIHRoYXQgaXMgd3JpdHRlbiBpbnRvIGVhY2ggYmlzb24gcGFyc2VyIHdoZW4KLSsgICB0aGUgJXNlbWFudGljX3BhcnNlciBkZWNsYXJhdGlvbiBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBncmFtbWFyLgotKyAgIEl0IHdhcyB3cml0dGVuIGJ5IFJpY2hhcmQgU3RhbGxtYW4gYnkgc2ltcGxpZnlpbmcgdGhlIGhhaXJ5IHBhcnNlcgotKyAgIHVzZWQgd2hlbiAlc2VtYW50aWNfcGFyc2VyIGlzIHNwZWNpZmllZC4gICovCi0rCi0rLyogQWxsIHN5bWJvbHMgZGVmaW5lZCBiZWxvdyBzaG91bGQgYmVnaW4gd2l0aCB5eSBvciBZWSwgdG8gYXZvaWQKLSsgICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFjZS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgZXZlbiBmb3IgbG9jYWwKLSsgICB2YXJpYWJsZXMsIGFzIHRoZXkgbWlnaHQgb3RoZXJ3aXNlIGJlIGV4cGFuZGVkIGJ5IHVzZXIgbWFjcm9zLgotKyAgIFRoZXJlIGFyZSBzb21lIHVuYXZvaWRhYmxlIGV4Y2VwdGlvbnMgd2l0aGluIGluY2x1ZGUgZmlsZXMgdG8KLSsgICBkZWZpbmUgbmVjZXNzYXJ5IGxpYnJhcnkgc3ltYm9sczsgdGhleSBhcmUgbm90ZWQgIklORlJJTkdFUyBPTgotKyAgIFVTRVIgTkFNRSBTUEFDRSIgYmVsb3cuICAqLwotKwotKyNpZiAhIGRlZmluZWQgKHl5b3ZlcmZsb3cpIHx8IGRlZmluZWQgKFlZRVJST1JfVkVSQk9TRSkKLSsKLSsvKiBUaGUgcGFyc2VyIGludm9rZXMgYWxsb2NhIG9yIG1hbGxvYzsgZGVmaW5lIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovCi0rCi0rIyBpZiBZWVNUQUNLX1VTRV9BTExPQ0EKLSsjICBkZWZpbmUgWVlTVEFDS19BTExPQyBhbGxvY2EKLSsjIGVsc2UKLSsjICBpZm5kZWYgWVlTVEFDS19VU0VfQUxMT0NBCi0rIyAgIGlmIGRlZmluZWQgKGFsbG9jYSkgfHwgZGVmaW5lZCAoX0FMTE9DQV9IKQotKyMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmZGVmIF9fR05VQ19fCi0rIyAgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgX19idWlsdGluX2FsbG9jYQotKyMgICAgZW5kaWYKLSsjICAgZW5kaWYKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsjIGlmZGVmIFlZU1RBQ0tfQUxMT0MKLSsgICAvKiBQYWNpZnkgR0NDJ3MgYGVtcHR5IGlmLWJvZHknIHdhcm5pbmcuICovCi0rIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkgKi87IH0gd2hpbGUgKDApCi0rIyBlbHNlCi0rIyAgaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotKyMgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotKyMgICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Ci0rIyAgZW5kaWYKLSsjICBkZWZpbmUgWVlTVEFDS19BTExPQyBtYWxsb2MKLSsjICBkZWZpbmUgWVlTVEFDS19GUkVFIGZyZWUKLSsjIGVuZGlmCi0rI2VuZGlmIC8qICEgZGVmaW5lZCAoeXlvdmVyZmxvdykgfHwgZGVmaW5lZCAoWVlFUlJPUl9WRVJCT1NFKSAqLwotKwotKwotKyNpZiAoISBkZWZpbmVkICh5eW92ZXJmbG93KSBcCi0rICAgICAmJiAoISBkZWZpbmVkIChfX2NwbHVzcGx1cykgXAotKwkgfHwgKFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkKLSsKLSsvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KLSt1bmlvbiB5eWFsbG9jCi0rewotKyAgc2hvcnQgeXlzczsKLSsgIFlZU1RZUEUgeXl2czsKLSsjIGlmIFlZTFNQX05FRURFRAotKyAgWVlMVFlQRSB5eWxzOwotKyMgZW5kaWYKLSt9OwotKwotKy8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCi0rIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFYIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKLSsKLSsvKiBUaGUgc2l6ZSBvZiBhbiBhcnJheSBsYXJnZSB0byBlbm91Z2ggdG8gaG9sZCBhbGwgc3RhY2tzLCBlYWNoIHdpdGgKLSsgICBOIGVsZW1lbnRzLiAgKi8KLSsjIGlmIFlZTFNQX05FRURFRAotKyMgIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKLSsgICAgICgoTikgKiAoc2l6ZW9mIChzaG9ydCkgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZWUxUWVBFKSkJXAotKyAgICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWCkKLSsjIGVsc2UKLSsjICBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0rICAgICAoKE4pICogKHNpemVvZiAoc2hvcnQpICsgc2l6ZW9mIChZWVNUWVBFKSkJCQkJXAotKyAgICAgICsgWVlTVEFDS19HQVBfTUFYKQotKyMgZW5kaWYKLSsKLSsvKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBGUk9NIHRvIFRPLiAgVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG8KLSsgICBub3Qgb3ZlcmxhcC4gICovCi0rIyBpZm5kZWYgWVlDT1BZCi0rIyAgaWYgMSA8IF9fR05VQ19fCi0rIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KSBcCi0rICAgICAgX19idWlsdGluX21lbWNweSAoVG8sIEZyb20sIChDb3VudCkgKiBzaXplb2YgKCooRnJvbSkpKQotKyMgIGVsc2UKLSsjICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpCQlcCi0rICAgICAgZG8JCQkJCVwKLSsJewkJCQkJXAotKwkgIHJlZ2lzdGVyIFlZU0laRV9UIHl5aTsJCVwKLSsJICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKQlcCi0rCSAgICAoVG8pW3l5aV0gPSAoRnJvbSlbeXlpXTsJCVwKLSsJfQkJCQkJXAotKyAgICAgIHdoaWxlICgwKQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwotKy8qIFJlbG9jYXRlIFNUQUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQotKyAgIGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUgdGhlIG9sZCBhbmQgbmV3IG51bWJlciBvZgotKyAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCi0rICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKLSsgICBzdGFjay4gICovCi0rIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKLSsgICAgZG8JCQkJCQkJCQlcCi0rICAgICAgewkJCQkJCQkJCVwKLSsJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0rCVlZQ09QWSAoJnl5cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6ZSk7CQkJCVwKLSsJU3RhY2sgPSAmeXlwdHItPlN0YWNrOwkJCQkJCVwKLSsJeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYOwlcCi0rCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJCVwKLSsgICAgICB9CQkJCQkJCQkJXAotKyAgICB3aGlsZSAoMCkKLSsKLSsjZW5kaWYKLSsKLSsKLSsjaWYgISBkZWZpbmVkIChZWVNJWkVfVCkgJiYgZGVmaW5lZCAoX19TSVpFX1RZUEVfXykKLSsjIGRlZmluZSBZWVNJWkVfVCBfX1NJWkVfVFlQRV9fCi0rI2VuZGlmCi0rI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpICYmIGRlZmluZWQgKHNpemVfdCkKLSsjIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKLSsjZW5kaWYKLSsjaWYgISBkZWZpbmVkIChZWVNJWkVfVCkKLSsjIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSsjICBpbmNsdWRlIDxzdGRkZWYuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotKyMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKLSsjIGVuZGlmCi0rI2VuZGlmCi0rI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpCi0rIyBkZWZpbmUgWVlTSVpFX1QgdW5zaWduZWQgaW50Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSB5eWVycm9rCQkoeXllcnJzdGF0dXMgPSAwKQotKyNkZWZpbmUgeXljbGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZKQotKyNkZWZpbmUgWVlFTVBUWQkJLTIKLSsjZGVmaW5lIFlZRU9GCQkwCi0rI2RlZmluZSBZWUFDQ0VQVAlnb3RvIHl5YWNjZXB0bGFiCi0rI2RlZmluZSBZWUFCT1JUIAlnb3RvIHl5YWJvcnRsYWIKLSsjZGVmaW5lIFlZRVJST1IJCWdvdG8geXllcnJsYWIxCi0rLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQotKyAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0rICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICAqLwotKyNkZWZpbmUgWVlGQUlMCQlnb3RvIHl5ZXJybGFiCi0rI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCi0rI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpCQkJCQlcCi0rZG8JCQkJCQkJCVwKLSsgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxlbiA9PSAxKQkJCQlcCi0rICAgIHsJCQkJCQkJCVwKLSsgICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKLSsgICAgICB5eWx2YWwgPSAoVmFsdWUpOwkJCQkJCVwKLSsgICAgICB5eWNoYXIxID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CQkJCVwKLSsgICAgICBZWVBPUFNUQUNLOwkJCQkJCVwKLSsgICAgICBnb3RvIHl5YmFja3VwOwkJCQkJCVwKLSsgICAgfQkJCQkJCQkJXAotKyAgZWxzZQkJCQkJCQkJXAotKyAgICB7IAkJCQkJCQkJXAotKyAgICAgIHl5ZXJyb3IgKCJzeW50YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIik7CQkJXAotKyAgICAgIFlZRVJST1I7CQkJCQkJCVwKLSsgICAgfQkJCQkJCQkJXAotK3doaWxlICgwKQotKwotKyNkZWZpbmUgWVlURVJST1IJMQotKyNkZWZpbmUgWVlFUlJDT0RFCTI1NgotKwotKwotKy8qIFlZTExPQ19ERUZBVUxUIC0tIENvbXB1dGUgdGhlIGRlZmF1bHQgbG9jYXRpb24gKGJlZm9yZSB0aGUgYWN0aW9ucwotKyAgIGFyZSBydW4pLgotKwotKyAgIFdoZW4gWVlMTE9DX0RFRkFVTFQgaXMgcnVuLCBDVVJSRU5UIGlzIHNldCB0aGUgbG9jYXRpb24gb2YgdGhlCi0rICAgZmlyc3QgdG9rZW4uICBCeSBkZWZhdWx0LCB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgcmFuZ2VzLCBleHRlbmQKLSsgICBpdHMgcmFuZ2UgdG8gdGhlIGxhc3Qgc3ltYm9sLiAgKi8KLSsKLSsjaWZuZGVmIFlZTExPQ19ERUZBVUxUCi0rIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAJXAotKyAgIEN1cnJlbnQubGFzdF9saW5lICAgPSBSaHNbTl0ubGFzdF9saW5lOwlcCi0rICAgQ3VycmVudC5sYXN0X2NvbHVtbiA9IFJoc1tOXS5sYXN0X2NvbHVtbjsKLSsjZW5kaWYKLSsKLSsKLSsvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcgd2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KLSsKLSsjaWYgWVlQVVJFCi0rIyBpZiBZWUxTUF9ORUVERUQKLSsjICBpZmRlZiBZWUxFWF9QQVJBTQotKyMgICBkZWZpbmUgWVlMRVgJCXl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9QQVJBTSkKLSsjICBlbHNlCi0rIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCi0rIyAgZW5kaWYKLSsjIGVsc2UgLyogIVlZTFNQX05FRURFRCAqLwotKyMgIGlmZGVmIFlZTEVYX1BBUkFNCi0rIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwsIFlZTEVYX1BBUkFNKQotKyMgIGVsc2UKLSsjICAgZGVmaW5lIFlZTEVYCQl5eWxleCAoJnl5bHZhbCkKLSsjICBlbmRpZgotKyMgZW5kaWYgLyogIVlZTFNQX05FRURFRCAqLwotKyNlbHNlIC8qICFZWVBVUkUgKi8KLSsjIGRlZmluZSBZWUxFWAkJCXl5bGV4ICgpCi0rI2VuZGlmIC8qICFZWVBVUkUgKi8KLSsKLSsKLSsvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3RlZC4gICovCi0rI2lmIFlZREVCVUcKLSsKLSsjIGlmbmRlZiBZWUZQUklOVEYKLSsjICBpbmNsdWRlIDxzdGRpby5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0rIyAgZGVmaW5lIFlZRlBSSU5URiBmcHJpbnRmCi0rIyBlbmRpZgotKwotKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQkJCVwKLStkbyB7CQkJCQkJXAotKyAgaWYgKHl5ZGVidWcpCQkJCQlcCi0rICAgIFlZRlBSSU5URiBBcmdzOwkJCQlcCi0rfSB3aGlsZSAoMCkKLSsvKiBOb256ZXJvIG1lYW5zIHByaW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKLSsgICBtdWx0aXBsZSBwYXJzZXJzIGNhbiBjb2V4aXN0LiAgKi8KLStpbnQgeXlkZWJ1ZzsKLSsjZWxzZSAvKiAhWVlERUJVRyAqLwotKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQotKyNlbmRpZiAvKiAhWVlERUJVRyAqLwotKwotKy8qIFlZSU5JVERFUFRIIC0tIGluaXRpYWwgc2l6ZSBvZiB0aGUgcGFyc2VyJ3Mgc3RhY2tzLiAgKi8KLSsjaWZuZGVmCVlZSU5JVERFUFRICi0rIyBkZWZpbmUgWVlJTklUREVQVEggMjAwCi0rI2VuZGlmCi0rCi0rLyogWVlNQVhERVBUSCAtLSBtYXhpbXVtIHNpemUgdGhlIHN0YWNrcyBjYW4gZ3JvdyB0byAoZWZmZWN0aXZlIG9ubHkKLSsgICBpZiB0aGUgYnVpbHQtaW4gc3RhY2sgZXh0ZW5zaW9uIG1ldGhvZCBpcyB1c2VkKS4KLSsKLSsgICBEbyBub3QgbWFrZSB0aGlzIHZhbHVlIHRvbyBsYXJnZTsgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZgotKyAgIFNJWkVfTUFYIDwgWVlTVEFDS19CWVRFUyAoWVlNQVhERVBUSCkKLSsgICBldmFsdWF0ZWQgd2l0aCBpbmZpbml0ZS1wcmVjaXNpb24gaW50ZWdlciBhcml0aG1ldGljLiAgKi8KLSsKLSsjaWYgWVlNQVhERVBUSCA9PSAwCi0rIyB1bmRlZiBZWU1BWERFUFRICi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBZWU1BWERFUFRICi0rIyBkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAotKyNlbmRpZgotKwwKLSsjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCi0rCi0rIyBpZm5kZWYgeXlzdHJsZW4KLSsjICBpZiBkZWZpbmVkIChfX0dMSUJDX18pICYmIGRlZmluZWQgKF9TVFJJTkdfSCkKLSsjICAgZGVmaW5lIHl5c3RybGVuIHN0cmxlbgotKyMgIGVsc2UKLSsvKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCi0rc3RhdGljIFlZU0laRV9UCi0rIyAgIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSt5eXN0cmxlbiAoY29uc3QgY2hhciAqeXlzdHIpCi0rIyAgIGVsc2UKLSt5eXN0cmxlbiAoeXlzdHIpCi0rICAgICBjb25zdCBjaGFyICp5eXN0cjsKLSsjICAgZW5kaWYKLSt7Ci0rICByZWdpc3RlciBjb25zdCBjaGFyICp5eXMgPSB5eXN0cjsKLSsKLSsgIHdoaWxlICgqeXlzKysgIT0gJ1wwJykKLSsgICAgY29udGludWU7Ci0rCi0rICByZXR1cm4geXlzIC0geXlzdHIgLSAxOwotK30KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsjIGlmbmRlZiB5eXN0cGNweQotKyMgIGlmIGRlZmluZWQgKF9fR0xJQkNfXykgJiYgZGVmaW5lZCAoX1NUUklOR19IKSAmJiBkZWZpbmVkIChfR05VX1NPVVJDRSkKLSsjICAgZGVmaW5lIHl5c3RwY3B5IHN0cGNweQotKyMgIGVsc2UKLSsvKiBDb3B5IFlZU1JDIHRvIFlZREVTVCwgcmV0dXJuaW5nIHRoZSBhZGRyZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGluCi0rICAgWVlERVNULiAgKi8KLStzdGF0aWMgY2hhciAqCi0rIyAgIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSt5eXN0cGNweSAoY2hhciAqeXlkZXN0LCBjb25zdCBjaGFyICp5eXNyYykKLSsjICAgZWxzZQotK3l5c3RwY3B5ICh5eWRlc3QsIHl5c3JjKQotKyAgICAgY2hhciAqeXlkZXN0OwotKyAgICAgY29uc3QgY2hhciAqeXlzcmM7Ci0rIyAgIGVuZGlmCi0rewotKyAgcmVnaXN0ZXIgY2hhciAqeXlkID0geXlkZXN0OwotKyAgcmVnaXN0ZXIgY29uc3QgY2hhciAqeXlzID0geXlzcmM7Ci0rCi0rICB3aGlsZSAoKCp5eWQrKyA9ICp5eXMrKykgIT0gJ1wwJykKLSsgICAgY29udGludWU7Ci0rCi0rICByZXR1cm4geXlkIC0gMTsKLSt9Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rDAotKyNsaW5lIDMxNSAiL3Vzci9sb2NhbC9zaGFyZS9iaXNvbi9iaXNvbi5zaW1wbGUiCi0rCi0rCi0rLyogVGhlIHVzZXIgY2FuIGRlZmluZSBZWVBBUlNFX1BBUkFNIGFzIHRoZSBuYW1lIG9mIGFuIGFyZ3VtZW50IHRvIGJlIHBhc3NlZAotKyAgIGludG8geXlwYXJzZS4gIFRoZSBhcmd1bWVudCBzaG91bGQgaGF2ZSB0eXBlIHZvaWQgKi4KLSsgICBJdCBzaG91bGQgYWN0dWFsbHkgcG9pbnQgdG8gYW4gb2JqZWN0LgotKyAgIEdyYW1tYXIgYWN0aW9ucyBjYW4gYWNjZXNzIHRoZSB2YXJpYWJsZSBieSBjYXN0aW5nIGl0Ci0rICAgdG8gdGhlIHByb3BlciBwb2ludGVyIHR5cGUuICAqLwotKwotKyNpZmRlZiBZWVBBUlNFX1BBUkFNCi0rIyBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCi0rIyAgZGVmaW5lIFlZUEFSU0VfUEFSQU1fQVJHIHZvaWQgKllZUEFSU0VfUEFSQU0KLSsjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9ERUNMCi0rIyBlbHNlCi0rIyAgZGVmaW5lIFlZUEFSU0VfUEFSQU1fQVJHIFlZUEFSU0VfUEFSQU0KLSsjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9ERUNMIHZvaWQgKllZUEFSU0VfUEFSQU07Ci0rIyBlbmRpZgotKyNlbHNlIC8qICFZWVBBUlNFX1BBUkFNICovCi0rIyBkZWZpbmUgWVlQQVJTRV9QQVJBTV9BUkcKLSsjIGRlZmluZSBZWVBBUlNFX1BBUkFNX0RFQ0wKLSsjZW5kaWYgLyogIVlZUEFSU0VfUEFSQU0gKi8KLSsKLSsvKiBQcmV2ZW50IHdhcm5pbmcgaWYgLVdzdHJpY3QtcHJvdG90eXBlcy4gICovCi0rI2lmZGVmIF9fR05VQ19fCi0rIyBpZmRlZiBZWVBBUlNFX1BBUkFNCi0raW50IHl5cGFyc2UgKHZvaWQgKik7Ci0rIyBlbHNlCi0raW50IHl5cGFyc2UgKHZvaWQpOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsvKiBZWV9ERUNMX1ZBUklBQkxFUyAtLSBkZXBlbmRpbmcgd2hldGhlciB3ZSB1c2UgYSBwdXJlIHBhcnNlciwKLSsgICB2YXJpYWJsZXMgYXJlIGdsb2JhbCwgb3IgbG9jYWwgdG8gWVlQQVJTRS4gICovCi0rCi0rI2RlZmluZSBZWV9ERUNMX05PTl9MU1BfVkFSSUFCTEVTCQkJXAotKy8qIFRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8JCQkJXAotK2ludCB5eWNoYXI7CQkJCQkJXAotKwkJCQkJCQlcCi0rLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAqLwlcCi0rWVlTVFlQRSB5eWx2YWw7CQkJCQkJXAotKwkJCQkJCQlcCi0rLyogTnVtYmVyIG9mIHBhcnNlIGVycm9ycyBzbyBmYXIuICAqLwkJCVwKLStpbnQgeXluZXJyczsKLSsKLSsjaWYgWVlMU1BfTkVFREVECi0rIyBkZWZpbmUgWVlfREVDTF9WQVJJQUJMRVMJCQlcCi0rWVlfREVDTF9OT05fTFNQX1ZBUklBQkxFUwkJCVwKLSsJCQkJCQlcCi0rLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwlcCi0rWVlMVFlQRSB5eWxsb2M7Ci0rI2Vsc2UKLSsjIGRlZmluZSBZWV9ERUNMX1ZBUklBQkxFUwkJCVwKLStZWV9ERUNMX05PTl9MU1BfVkFSSUFCTEVTCi0rI2VuZGlmCi0rCi0rCi0rLyogSWYgbm9ucmVlbnRyYW50LCBnZW5lcmF0ZSB0aGUgdmFyaWFibGVzIGhlcmUuICovCi0rCi0rI2lmICFZWVBVUkUKLStZWV9ERUNMX1ZBUklBQkxFUwotKyNlbmRpZiAgLyogIVlZUFVSRSAqLwotKwotK2ludAotK3l5cGFyc2UgKFlZUEFSU0VfUEFSQU1fQVJHKQotKyAgICAgWVlQQVJTRV9QQVJBTV9ERUNMCi0rewotKyAgLyogSWYgcmVlbnRyYW50LCBnZW5lcmF0ZSB0aGUgdmFyaWFibGVzIGhlcmUuICovCi0rI2lmIFlZUFVSRQotKyAgWVlfREVDTF9WQVJJQUJMRVMKLSsjZW5kaWYgIC8qICFZWVBVUkUgKi8KLSsKLSsgIHJlZ2lzdGVyIGludCB5eXN0YXRlOwotKyAgcmVnaXN0ZXIgaW50IHl5bjsKLSsgIGludCB5eXJlc3VsdDsKLSsgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotKyAgaW50IHl5ZXJyc3RhdHVzOwotKyAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotKyAgaW50IHl5Y2hhcjEgPSAwOwotKwotKyAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSsgICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0rICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotKyAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLSsKLSsgICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotKyAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0rCi0rICAvKiBUaGUgc3RhdGUgc3RhY2suICovCi0rICBzaG9ydAl5eXNzYVtZWUlOSVRERVBUSF07Ci0rICBzaG9ydCAqeXlzcyA9IHl5c3NhOwotKyAgcmVnaXN0ZXIgc2hvcnQgKnl5c3NwOwotKwotKyAgLyogVGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KLSsgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOwotKyAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwotKyAgcmVnaXN0ZXIgWVlTVFlQRSAqeXl2c3A7Ci0rCi0rI2lmIFlZTFNQX05FRURFRAotKyAgLyogVGhlIGxvY2F0aW9uIHN0YWNrLiAgKi8KLSsgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOwotKyAgWVlMVFlQRSAqeXlscyA9IHl5bHNhOwotKyAgWVlMVFlQRSAqeXlsc3A7Ci0rI2VuZGlmCi0rCi0rI2lmIFlZTFNQX05FRURFRAotKyMgZGVmaW5lIFlZUE9QU1RBQ0sgICAoeXl2c3AtLSwgeXlzc3AtLSwgeXlsc3AtLSkKLSsjZWxzZQotKyMgZGVmaW5lIFlZUE9QU1RBQ0sgICAoeXl2c3AtLSwgeXlzc3AtLSkKLSsjZW5kaWYKLSsKLSsgIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7Ci0rCi0rCi0rICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQotKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSsgIFlZU1RZUEUgeXl2YWw7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgWVlMVFlQRSB5eWxvYzsKLSsjZW5kaWYKLSsKLSsgIC8qIFdoZW4gcmVkdWNpbmcsIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkCi0rICAgICBydWxlLiAqLwotKyAgaW50IHl5bGVuOwotKwotKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKLSsKLSsgIHl5c3RhdGUgPSAwOwotKyAgeXllcnJzdGF0dXMgPSAwOwotKyAgeXluZXJycyA9IDA7Ci0rICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KLSsKLSsgIC8qIEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCi0rICAgICBXYXN0ZSBvbmUgZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKLSsgICAgIHNvIHRoYXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4KLSsgICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAgKi8KLSsKLSsgIHl5c3NwID0geXlzczsKLSsgIHl5dnNwID0geXl2czsKLSsjaWYgWVlMU1BfTkVFREVECi0rICB5eWxzcCA9IHl5bHM7Ci0rI2VuZGlmCi0rICBnb3RvIHl5c2V0c3RhdGU7Ci0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eW5ld3N0YXRlIC0tIFB1c2ggYSBuZXcgc3RhdGUsIHdoaWNoIGlzIGZvdW5kIGluIHl5c3RhdGUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0rIHl5bmV3c3RhdGU6Ci0rICAvKiBJbiBhbGwgY2FzZXMsIHdoZW4geW91IGdldCBoZXJlLCB0aGUgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrcwotKyAgICAgaGF2ZSBqdXN0IGJlZW4gcHVzaGVkLiBzbyBwdXNoaW5nIGEgc3RhdGUgaGVyZSBldmVucyB0aGUgc3RhY2tzLgotKyAgICAgKi8KLSsgIHl5c3NwKys7Ci0rCi0rIHl5c2V0c3RhdGU6Ci0rICAqeXlzc3AgPSB5eXN0YXRlOwotKwotKyAgaWYgKHl5c3NwID49IHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEpCi0rICAgIHsKLSsgICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgdXNlZCBzaXplIG9mIHRoZSB0aHJlZSBzdGFja3MsIGluIGVsZW1lbnRzLiAgKi8KLSsgICAgICBZWVNJWkVfVCB5eXNpemUgPSB5eXNzcCAtIHl5c3MgKyAxOwotKwotKyNpZmRlZiB5eW92ZXJmbG93Ci0rICAgICAgewotKwkvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suIFVzZSBjb3BpZXMgb2YKLSsJICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRoZSByZWFsIG9uZXMgaW50bwotKwkgICBtZW1vcnkuICAqLwotKwlZWVNUWVBFICp5eXZzMSA9IHl5dnM7Ci0rCXNob3J0ICp5eXNzMSA9IHl5c3M7Ci0rCi0rCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQotKwkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gICovCi0rIyBpZiBZWUxTUF9ORUVERUQKLSsJWVlMVFlQRSAqeXlsczEgPSB5eWxzOwotKwkvKiBUaGlzIHVzZWQgdG8gYmUgYSBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsCi0rCSAgIGJ1dCB0aGF0IG1pZ2h0IGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93IGlzIGEgbWFjcm8uICAqLwotKwl5eW92ZXJmbG93ICgicGFyc2VyIHN0YWNrIG92ZXJmbG93IiwKLSsJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKLSsJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKLSsJCSAgICAmeXlsczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5bHNwKSwKLSsJCSAgICAmeXlzdGFja3NpemUpOwotKwl5eWxzID0geXlsczE7Ci0rIyBlbHNlCi0rCXl5b3ZlcmZsb3cgKCJwYXJzZXIgc3RhY2sgb3ZlcmZsb3ciLAotKwkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAotKwkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotKwkJICAgICZ5eXN0YWNrc2l6ZSk7Ci0rIyBlbmRpZgotKwl5eXNzID0geXlzczE7Ci0rCXl5dnMgPSB5eXZzMTsKLSsgICAgICB9Ci0rI2Vsc2UgLyogbm8geXlvdmVyZmxvdyAqLwotKyMgaWZuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKLSsgICAgICBnb3RvIHl5b3ZlcmZsb3dsYWI7Ci0rIyBlbHNlCi0rICAgICAgLyogRXh0ZW5kIHRoZSBzdGFjayBvdXIgb3duIHdheS4gICovCi0rICAgICAgaWYgKHl5c3RhY2tzaXplID49IFlZTUFYREVQVEgpCi0rCWdvdG8geXlvdmVyZmxvd2xhYjsKLSsgICAgICB5eXN0YWNrc2l6ZSAqPSAyOwotKyAgICAgIGlmICh5eXN0YWNrc2l6ZSA+IFlZTUFYREVQVEgpCi0rCXl5c3RhY2tzaXplID0gWVlNQVhERVBUSDsKLSsKLSsgICAgICB7Ci0rCXNob3J0ICp5eXNzMSA9IHl5c3M7Ci0rCXVuaW9uIHl5YWxsb2MgKnl5cHRyID0KLSsJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwotKwlpZiAoISB5eXB0cikKLSsJICBnb3RvIHl5b3ZlcmZsb3dsYWI7Ci0rCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwotKwlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLSsjIGlmIFlZTFNQX05FRURFRAotKwlZWVNUQUNLX1JFTE9DQVRFICh5eWxzKTsKLSsjIGVuZGlmCi0rIyB1bmRlZiBZWVNUQUNLX1JFTE9DQVRFCi0rCWlmICh5eXNzMSAhPSB5eXNzYSkKLSsJICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKLSsgICAgICB9Ci0rIyBlbmRpZgotKyNlbmRpZiAvKiBubyB5eW92ZXJmbG93ICovCi0rCi0rICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXplIC0gMTsKLSsgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxOwotKyNlbmRpZgotKwotKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKLSsJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwotKwotKyAgICAgIGlmICh5eXNzcCA+PSB5eXNzICsgeXlzdGFja3NpemUgLSAxKQotKwlZWUFCT1JUOwotKyAgICB9Ci0rCi0rICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwotKwotKyAgZ290byB5eWJhY2t1cDsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLgotK3wgeXliYWNrdXAuICB8Ci0rYC0tLS0tLS0tLS0tKi8KLSt5eWJhY2t1cDoKLSsKLSsvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgKi8KLSsvKiBSZWFkIGEgbG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KLSsvKiB5eXJlc3VtZTogKi8KLSsKLSsgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwotKwotKyAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotKyAgaWYgKHl5biA9PSBZWUZMQUcpCi0rICAgIGdvdG8geXlkZWZhdWx0OwotKwotKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KLSsKLSsgIC8qIHl5Y2hhciBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRgotKyAgICAgb3IgYSB2YWxpZCB0b2tlbiBpbiBleHRlcm5hbCBmb3JtLiAgKi8KLSsKLSsgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkKLSsgICAgewotKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwotKyAgICAgIHl5Y2hhciA9IFlZTEVYOwotKyAgICB9Ci0rCi0rICAvKiBDb252ZXJ0IHRva2VuIHRvIGludGVybmFsIGZvcm0gKGluIHl5Y2hhcjEpIGZvciBpbmRleGluZyB0YWJsZXMgd2l0aCAqLwotKwotKyAgaWYgKHl5Y2hhciA8PSAwKQkJLyogVGhpcyBtZWFucyBlbmQgb2YgaW5wdXQuICovCi0rICAgIHsKLSsgICAgICB5eWNoYXIxID0gMDsKLSsgICAgICB5eWNoYXIgPSBZWUVPRjsJCS8qIERvbid0IGNhbGwgWVlMRVggYW55IG1vcmUgKi8KLSsKLSsgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJOb3cgYXQgZW5kIG9mIGlucHV0LlxuIikpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICB5eWNoYXIxID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7Ci0rCi0rI2lmIFlZREVCVUcKLSsgICAgIC8qIFdlIGhhdmUgdG8ga2VlcCB0aGlzIGAjaWYgWVlERUJVRycsIHNpbmNlIHdlIHVzZSB2YXJpYWJsZXMKLSsJd2hpY2ggYXJlIGRlZmluZWQgb25seSBpZiBgWVlERUJVRycgaXMgc2V0LiAgKi8KLSsgICAgICBpZiAoeXlkZWJ1ZykKLSsJewotKwkgIFlZRlBSSU5URiAoc3RkZXJyLCAiTmV4dCB0b2tlbiBpcyAlZCAoJXMiLAotKwkJICAgICB5eWNoYXIsIHl5dG5hbWVbeXljaGFyMV0pOwotKwkgIC8qIEdpdmUgdGhlIGluZGl2aWR1YWwgcGFyc2VyIGEgd2F5IHRvIHByaW50IHRoZSBwcmVjaXNlCi0rCSAgICAgbWVhbmluZyBvZiBhIHRva2VuLCBmb3IgZnVydGhlciBkZWJ1Z2dpbmcgaW5mby4gICovCi0rIyBpZmRlZiBZWVBSSU5UCi0rCSAgWVlQUklOVCAoc3RkZXJyLCB5eWNoYXIsIHl5bHZhbCk7Ci0rIyBlbmRpZgotKwkgIFlZRlBSSU5URiAoc3RkZXJyLCAiKVxuIik7Ci0rCX0KLSsjZW5kaWYKLSsgICAgfQotKwotKyAgeXluICs9IHl5Y2hhcjE7Ci0rICBpZiAoeXluIDwgMCB8fCB5eW4gPiBZWUxBU1QgfHwgeXljaGVja1t5eW5dICE9IHl5Y2hhcjEpCi0rICAgIGdvdG8geXlkZWZhdWx0OwotKwotKyAgeXluID0geXl0YWJsZVt5eW5dOwotKwotKyAgLyogeXluIGlzIHdoYXQgdG8gZG8gZm9yIHRoaXMgdG9rZW4gdHlwZSBpbiB0aGlzIHN0YXRlLgotKyAgICAgTmVnYXRpdmUgPT4gcmVkdWNlLCAteXluIGlzIHJ1bGUgbnVtYmVyLgotKyAgICAgUG9zaXRpdmUgPT4gc2hpZnQsIHl5biBpcyBuZXcgc3RhdGUuCi0rICAgICAgIE5ldyBzdGF0ZSBpcyBmaW5hbCBzdGF0ZSA9PiBkb24ndCBib3RoZXIgdG8gc2hpZnQsCi0rICAgICAgIGp1c3QgcmV0dXJuIHN1Y2Nlc3MuCi0rICAgICAwLCBvciBtb3N0IG5lZ2F0aXZlIG51bWJlciA9PiBlcnJvci4gICovCi0rCi0rICBpZiAoeXluIDwgMCkKLSsgICAgewotKyAgICAgIGlmICh5eW4gPT0gWVlGTEFHKQotKwlnb3RvIHl5ZXJybGFiOwotKyAgICAgIHl5biA9IC15eW47Ci0rICAgICAgZ290byB5eXJlZHVjZTsKLSsgICAgfQotKyAgZWxzZSBpZiAoeXluID09IDApCi0rICAgIGdvdG8geXllcnJsYWI7Ci0rCi0rICBpZiAoeXluID09IFlZRklOQUwpCi0rICAgIFlZQUNDRVBUOwotKwotKyAgLyogU2hpZnQgdGhlIGxvb2thaGVhZCB0b2tlbi4gICovCi0rICBZWURQUklOVEYgKChzdGRlcnIsICJTaGlmdGluZyB0b2tlbiAlZCAoJXMpLCAiLAotKwkgICAgICB5eWNoYXIsIHl5dG5hbWVbeXljaGFyMV0pKTsKLSsKLSsgIC8qIERpc2NhcmQgdGhlIHRva2VuIGJlaW5nIHNoaWZ0ZWQgdW5sZXNzIGl0IGlzIGVvZi4gICovCi0rICBpZiAoeXljaGFyICE9IFlZRU9GKQotKyAgICB5eWNoYXIgPSBZWUVNUFRZOwotKwotKyAgKisreXl2c3AgPSB5eWx2YWw7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgKisreXlsc3AgPSB5eWxsb2M7Ci0rI2VuZGlmCi0rCi0rICAvKiBDb3VudCB0b2tlbnMgc2hpZnRlZCBzaW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCi0rICAgICBzdGF0dXMuICAqLwotKyAgaWYgKHl5ZXJyc3RhdHVzKQotKyAgICB5eWVycnN0YXR1cy0tOwotKwotKyAgeXlzdGF0ZSA9IHl5bjsKLSsgIGdvdG8geXluZXdzdGF0ZTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlkZWZhdWx0IC0tIGRvIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIGN1cnJlbnQgc3RhdGUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWRlZmF1bHQ6Ci0rICB5eW4gPSB5eWRlZmFjdFt5eXN0YXRlXTsKLSsgIGlmICh5eW4gPT0gMCkKLSsgICAgZ290byB5eWVycmxhYjsKLSsgIGdvdG8geXlyZWR1Y2U7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5cmVkdWNlIC0tIERvIGEgcmVkdWN0aW9uLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXlyZWR1Y2U6Ci0rICAvKiB5eW4gaXMgdGhlIG51bWJlciBvZiBhIHJ1bGUgdG8gcmVkdWNlIHdpdGguICAqLwotKyAgeXlsZW4gPSB5eXIyW3l5bl07Ci0rCi0rICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKLSsgICAgIGAkJCA9ICQxJy4KLSsKLSsgICAgIE90aGVyd2lzZSwgdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgWVlWQUwgdG8gdGhlIHNlbWFudGljIHZhbHVlIG9mCi0rICAgICB0aGUgbG9va2FoZWFkIHRva2VuLiAgVGhpcyBiZWhhdmlvciBpcyB1bmRvY3VtZW50ZWQgYW5kIEJpc29uCi0rICAgICB1c2VycyBzaG91bGQgbm90IHJlbHkgdXBvbiBpdC4gIEFzc2lnbmluZyB0byBZWVZBTAotKyAgICAgdW5jb25kaXRpb25hbGx5IG1ha2VzIHRoZSBwYXJzZXIgYSBiaXQgc21hbGxlciwgYW5kIGl0IGF2b2lkcyBhCi0rICAgICBHQ0Mgd2FybmluZyB0aGF0IFlZVkFMIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuICAqLwotKyAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKLSsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAvKiBTaW1pbGFybHkgZm9yIHRoZSBkZWZhdWx0IGxvY2F0aW9uLiAgTGV0IHRoZSB1c2VyIHJ1biBhZGRpdGlvbmFsCi0rICAgICBjb21tYW5kcyBpZiBmb3IgaW5zdGFuY2UgbG9jYXRpb25zIGFyZSByYW5nZXMuICAqLwotKyAgeXlsb2MgPSB5eWxzcFsxLXl5bGVuXTsKLSsgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5bHNwIC0geXlsZW4pLCB5eWxlbik7Ci0rI2VuZGlmCi0rCi0rI2lmIFlZREVCVUcKLSsgIC8qIFdlIGhhdmUgdG8ga2VlcCB0aGlzIGAjaWYgWVlERUJVRycsIHNpbmNlIHdlIHVzZSB2YXJpYWJsZXMgd2hpY2gKLSsgICAgIGFyZSBkZWZpbmVkIG9ubHkgaWYgYFlZREVCVUcnIGlzIHNldC4gICovCi0rICBpZiAoeXlkZWJ1ZykKLSsgICAgewotKyAgICAgIGludCB5eWk7Ci0rCi0rICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJSZWR1Y2luZyB2aWEgcnVsZSAlZCAobGluZSAlZCksICIsCi0rCQkgeXluLCB5eXJsaW5lW3l5bl0pOwotKwotKyAgICAgIC8qIFByaW50IHRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQsIGFuZCB0aGVpciByZXN1bHQuICAqLwotKyAgICAgIGZvciAoeXlpID0geXlwcmhzW3l5bl07IHl5cmhzW3l5aV0gPiAwOyB5eWkrKykKLSsJWVlGUFJJTlRGIChzdGRlcnIsICIlcyAiLCB5eXRuYW1lW3l5cmhzW3l5aV1dKTsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAtPiAlc1xuIiwgeXl0bmFtZVt5eXIxW3l5bl1dKTsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgc3dpdGNoICh5eW4pIHsKLSsKLStjYXNlIDE6Ci0rI2xpbmUgMTUxICJwbHVyYWwueSIKLSt7Ci0rCSAgICBpZiAoeXl2c3BbMF0uZXhwID09IE5VTEwpCi0rCSAgICAgIFlZQUJPUlQ7Ci0rCSAgICAoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPnJlcyA9IHl5dnNwWzBdLmV4cDsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgMjoKLSsjbGluZSAxNTkgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMyAocW1vcCwgeXl2c3BbLTRdLmV4cCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgMzoKLSsjbGluZSAxNjMgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAobG9yLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA0OgotKyNsaW5lIDE2NyAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yIChsYW5kLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA1OgotKyNsaW5lIDE3MSAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yICh5eXZzcFstMV0ub3AsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDY6Ci0rI2xpbmUgMTc1ICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKHl5dnNwWy0xXS5vcCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgNzoKLSsjbGluZSAxNzkgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAoeXl2c3BbLTFdLm9wLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA4OgotKyNsaW5lIDE4MyAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yICh5eXZzcFstMV0ub3AsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDk6Ci0rI2xpbmUgMTg3ICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzEgKGxub3QsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDEwOgotKyNsaW5lIDE5MSAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8wICh2YXIpOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSAxMToKLSsjbGluZSAxOTUgInBsdXJhbC55IgotK3sKLSsJICAgIGlmICgoeXl2YWwuZXhwID0gbmV3X2V4cF8wIChudW0pKSAhPSBOVUxMKQotKwkgICAgICB5eXZhbC5leHAtPnZhbC5udW0gPSB5eXZzcFswXS5udW07Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDEyOgotKyNsaW5lIDIwMCAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0geXl2c3BbLTFdLmV4cDsKLSsJICB9Ci0rICAgIGJyZWFrOwotK30KLSsKLSsjbGluZSA3MDUgIi91c3IvbG9jYWwvc2hhcmUvYmlzb24vYmlzb24uc2ltcGxlIgotKwotKwwKLSsgIHl5dnNwIC09IHl5bGVuOwotKyAgeXlzc3AgLT0geXlsZW47Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgeXlsc3AgLT0geXlsZW47Ci0rI2VuZGlmCi0rCi0rI2lmIFlZREVCVUcKLSsgIGlmICh5eWRlYnVnKQotKyAgICB7Ci0rICAgICAgc2hvcnQgKnl5c3NwMSA9IHl5c3MgLSAxOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAic3RhdGUgc3RhY2sgbm93Iik7Ci0rICAgICAgd2hpbGUgKHl5c3NwMSAhPSB5eXNzcCkKLSsJWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqKyt5eXNzcDEpOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgKisreXl2c3AgPSB5eXZhbDsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAqKyt5eWxzcCA9IHl5bG9jOwotKyNlbmRpZgotKwotKyAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKLSsgICAgIHRoYXQgZ29lcyB0bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQotKyAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAqLwotKwotKyAgeXluID0geXlyMVt5eW5dOwotKwotKyAgeXlzdGF0ZSA9IHl5cGdvdG9beXluIC0gWVlOVEJBU0VdICsgKnl5c3NwOwotKyAgaWYgKHl5c3RhdGUgPj0gMCAmJiB5eXN0YXRlIDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5c3RhdGVdID09ICp5eXNzcCkKLSsgICAgeXlzdGF0ZSA9IHl5dGFibGVbeXlzdGF0ZV07Ci0rICBlbHNlCi0rICAgIHl5c3RhdGUgPSB5eWRlZmdvdG9beXluIC0gWVlOVEJBU0VdOwotKwotKyAgZ290byB5eW5ld3N0YXRlOwotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRlY3RpbmcgZXJyb3IgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5ZXJybGFiOgotKyAgLyogSWYgbm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4gICovCi0rICBpZiAoIXl5ZXJyc3RhdHVzKQotKyAgICB7Ci0rICAgICAgKyt5eW5lcnJzOwotKwotKyNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSsgICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0rCi0rICAgICAgaWYgKHl5biA+IFlZRkxBRyAmJiB5eW4gPCBZWUxBU1QpCi0rCXsKLSsJICBZWVNJWkVfVCB5eXNpemUgPSAwOwotKwkgIGNoYXIgKnl5bXNnOwotKwkgIGludCB5eXgsIHl5Y291bnQ7Ci0rCi0rCSAgeXljb3VudCA9IDA7Ci0rCSAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgotKwkgICAgIFlZQ0hFQ0suICAqLwotKwkgIGZvciAoeXl4ID0geXluIDwgMCA/IC15eW4gOiAwOwotKwkgICAgICAgeXl4IDwgKGludCkgKHNpemVvZiAoeXl0bmFtZSkgLyBzaXplb2YgKGNoYXIgKikpOyB5eXgrKykKLSsJICAgIGlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4KQotKwkgICAgICB5eXNpemUgKz0geXlzdHJsZW4gKHl5dG5hbWVbeXl4XSkgKyAxNSwgeXljb3VudCsrOwotKwkgIHl5c2l6ZSArPSB5eXN0cmxlbiAoInBhcnNlIGVycm9yLCB1bmV4cGVjdGVkICIpICsgMTsKLSsJICB5eXNpemUgKz0geXlzdHJsZW4gKHl5dG5hbWVbWVlUUkFOU0xBVEUgKHl5Y2hhcildKTsKLSsJICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5c2l6ZSk7Ci0rCSAgaWYgKHl5bXNnICE9IDApCi0rCSAgICB7Ci0rCSAgICAgIGNoYXIgKnl5cCA9IHl5c3RwY3B5ICh5eW1zZywgInBhcnNlIGVycm9yLCB1bmV4cGVjdGVkICIpOwotKwkgICAgICB5eXAgPSB5eXN0cGNweSAoeXlwLCB5eXRuYW1lW1lZVFJBTlNMQVRFICh5eWNoYXIpXSk7Ci0rCi0rCSAgICAgIGlmICh5eWNvdW50IDwgNSkKLSsJCXsKLSsJCSAgeXljb3VudCA9IDA7Ci0rCQkgIGZvciAoeXl4ID0geXluIDwgMCA/IC15eW4gOiAwOwotKwkJICAgICAgIHl5eCA8IChpbnQpIChzaXplb2YgKHl5dG5hbWUpIC8gc2l6ZW9mIChjaGFyICopKTsKLSsJCSAgICAgICB5eXgrKykKLSsJCSAgICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCkKLSsJCSAgICAgIHsKLSsJCQljb25zdCBjaGFyICp5eXEgPSAhIHl5Y291bnQgPyAiLCBleHBlY3RpbmcgIiA6ICIgb3IgIjsKLSsJCQl5eXAgPSB5eXN0cGNweSAoeXlwLCB5eXEpOwotKwkJCXl5cCA9IHl5c3RwY3B5ICh5eXAsIHl5dG5hbWVbeXl4XSk7Ci0rCQkJeXljb3VudCsrOwotKwkJICAgICAgfQotKwkJfQotKwkgICAgICB5eWVycm9yICh5eW1zZyk7Ci0rCSAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHl5ZXJyb3IgKCJwYXJzZSBlcnJvcjsgYWxzbyB2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQiKTsKLSsJfQotKyAgICAgIGVsc2UKLSsjZW5kaWYgLyogZGVmaW5lZCAoWVlFUlJPUl9WRVJCT1NFKSAqLwotKwl5eWVycm9yICgicGFyc2UgZXJyb3IiKTsKLSsgICAgfQotKyAgZ290byB5eWVycmxhYjE7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5ZXJybGFiMSAtLSBlcnJvciByYWlzZWQgZXhwbGljaXRseSBieSBhbiBhY3Rpb24gfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXllcnJsYWIxOgotKyAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCi0rICAgIHsKLSsgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFuCi0rCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCi0rCi0rICAgICAgLyogcmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0ICovCi0rICAgICAgaWYgKHl5Y2hhciA9PSBZWUVPRikKLSsJWVlBQk9SVDsKLSsgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJEaXNjYXJkaW5nIHRva2VuICVkICglcykuXG4iLAotKwkJICB5eWNoYXIsIHl5dG5hbWVbeXljaGFyMV0pKTsKLSsgICAgICB5eWNoYXIgPSBZWUVNUFRZOwotKyAgICB9Ci0rCi0rICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKLSsgICAgIHRva2VuLiAgKi8KLSsKLSsgIHl5ZXJyc3RhdHVzID0gMzsJCS8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMgdGhpcyAqLwotKwotKyAgZ290byB5eWVycmhhbmRsZTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWVycmRlZmF1bHQgLS0gY3VycmVudCBzdGF0ZSBkb2VzIG5vdCBkbyBhbnl0aGluZyBzcGVjaWFsIGZvciB0aGUgfAotK3wgZXJyb3IgdG9rZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXllcnJkZWZhdWx0OgotKyNpZiAwCi0rICAvKiBUaGlzIGlzIHdyb25nOyBvbmx5IHN0YXRlcyB0aGF0IGV4cGxpY2l0bHkgd2FudCBlcnJvciB0b2tlbnMKLSsgICAgIHNob3VsZCBzaGlmdCB0aGVtLiAgKi8KLSsKLSsgIC8qIElmIGl0cyBkZWZhdWx0IGlzIHRvIGFjY2VwdCBhbnkgdG9rZW4sIG9rLiAgT3RoZXJ3aXNlIHBvcCBpdC4gICovCi0rICB5eW4gPSB5eWRlZmFjdFt5eXN0YXRlXTsKLSsgIGlmICh5eW4pCi0rICAgIGdvdG8geXlkZWZhdWx0OwotKyNlbmRpZgotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJwb3AgLS0gcG9wIHRoZSBjdXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fubm90IGhhbmRsZSB0aGUgfAotK3wgZXJyb3IgdG9rZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5ZXJycG9wOgotKyAgaWYgKHl5c3NwID09IHl5c3MpCi0rICAgIFlZQUJPUlQ7Ci0rICB5eXZzcC0tOwotKyAgeXlzdGF0ZSA9ICotLXl5c3NwOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgIHl5bHNwLS07Ci0rI2VuZGlmCi0rCi0rI2lmIFlZREVCVUcKLSsgIGlmICh5eWRlYnVnKQotKyAgICB7Ci0rICAgICAgc2hvcnQgKnl5c3NwMSA9IHl5c3MgLSAxOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiRXJyb3I6IHN0YXRlIHN0YWNrIG5vdyIpOwotKyAgICAgIHdoaWxlICh5eXNzcDEgIT0geXlzc3ApCi0rCVlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKisreXlzc3AxKTsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJoYW5kbGUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tKi8KLSt5eWVycmhhbmRsZToKLSsgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKLSsgIGlmICh5eW4gPT0gWVlGTEFHKQotKyAgICBnb3RvIHl5ZXJyZGVmYXVsdDsKLSsKLSsgIHl5biArPSBZWVRFUlJPUjsKLSsgIGlmICh5eW4gPCAwIHx8IHl5biA+IFlZTEFTVCB8fCB5eWNoZWNrW3l5bl0gIT0gWVlURVJST1IpCi0rICAgIGdvdG8geXllcnJkZWZhdWx0OwotKwotKyAgeXluID0geXl0YWJsZVt5eW5dOwotKyAgaWYgKHl5biA8IDApCi0rICAgIHsKLSsgICAgICBpZiAoeXluID09IFlZRkxBRykKLSsJZ290byB5eWVycnBvcDsKLSsgICAgICB5eW4gPSAteXluOwotKyAgICAgIGdvdG8geXlyZWR1Y2U7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHl5biA9PSAwKQotKyAgICBnb3RvIHl5ZXJycG9wOwotKwotKyAgaWYgKHl5biA9PSBZWUZJTkFMKQotKyAgICBZWUFDQ0VQVDsKLSsKLSsgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlNoaWZ0aW5nIGVycm9yIHRva2VuLCAiKSk7Ci0rCi0rICAqKyt5eXZzcCA9IHl5bHZhbDsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAqKyt5eWxzcCA9IHl5bGxvYzsKLSsjZW5kaWYKLSsKLSsgIHl5c3RhdGUgPSB5eW47Ci0rICBnb3RvIHl5bmV3c3RhdGU7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlhY2NlcHRsYWIgLS0gWVlBQ0NFUFQgY29tZXMgaGVyZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXlhY2NlcHRsYWI6Ci0rICB5eXJlc3VsdCA9IDA7Ci0rICBnb3RvIHl5cmV0dXJuOwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQgY29tZXMgaGVyZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5YWJvcnRsYWI6Ci0rICB5eXJlc3VsdCA9IDE7Ci0rICBnb3RvIHl5cmV0dXJuOwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlvdmVyZmxvd2FiIC0tIHBhcnNlciBvdmVyZmxvdyBjb21lcyBoZXJlLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5b3ZlcmZsb3dsYWI6Ci0rICB5eWVycm9yICgicGFyc2VyIHN0YWNrIG92ZXJmbG93Iik7Ci0rICB5eXJlc3VsdCA9IDI7Ci0rICAvKiBGYWxsIHRocm91Z2guICAqLwotKwotK3l5cmV0dXJuOgotKyNpZm5kZWYgeXlvdmVyZmxvdwotKyAgaWYgKHl5c3MgIT0geXlzc2EpCi0rICAgIFlZU1RBQ0tfRlJFRSAoeXlzcyk7Ci0rI2VuZGlmCi0rICByZXR1cm4geXlyZXN1bHQ7Ci0rfQotKyNsaW5lIDIwNSAicGx1cmFsLnkiCi0rCi0rCi0rdm9pZAotK2ludGVybmFsX2Z1bmN0aW9uCi0rRlJFRV9FWFBSRVNTSU9OIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQotK3sKLSsgIGlmIChleHAgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgLyogSGFuZGxlIHRoZSByZWN1cnNpdmUgY2FzZS4gICovCi0rICBzd2l0Y2ggKGV4cC0+bmFyZ3MpCi0rICAgIHsKLSsgICAgY2FzZSAzOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1syXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAyOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1sxXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAxOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1swXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgZnJlZSAoZXhwKTsKLSt9Ci0rCi0rCi0rc3RhdGljIGludAotK3l5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCkKLSt7Ci0rICBjb25zdCBjaGFyICpleHAgPSAqcGV4cDsKLSsgIGludCByZXN1bHQ7Ci0rCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIGlmIChleHBbMF0gPT0gJ1wwJykKLSsJewotKwkgICpwZXhwID0gZXhwOwotKwkgIHJldHVybiBZWUVPRjsKLSsJfQotKwotKyAgICAgIGlmIChleHBbMF0gIT0gJyAnICYmIGV4cFswXSAhPSAnXHQnKQotKwlicmVhazsKLSsKLSsgICAgICArK2V4cDsKLSsgICAgfQotKwotKyAgcmVzdWx0ID0gKmV4cCsrOwotKyAgc3dpdGNoIChyZXN1bHQpCi0rICAgIHsKLSsgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgotKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6Ci0rICAgICAgewotKwl1bnNpZ25lZCBsb25nIGludCBuID0gcmVzdWx0IC0gJzAnOwotKwl3aGlsZSAoZXhwWzBdID49ICcwJyAmJiBleHBbMF0gPD0gJzknKQotKwkgIHsKLSsJICAgIG4gKj0gMTA7Ci0rCSAgICBuICs9IGV4cFswXSAtICcwJzsKLSsJICAgICsrZXhwOwotKwkgIH0KLSsJbHZhbC0+bnVtID0gbjsKLSsJcmVzdWx0ID0gTlVNQkVSOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPSc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGVxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICchJzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbm90X2VxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcmJzoKLSsgICAgY2FzZSAnfCc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSByZXN1bHQpCi0rCSsrZXhwOwotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc8JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbGVzc19vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBsZXNzX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc+JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gZ3JlYXRlcl9vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBncmVhdGVyX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcqJzoKLSsgICAgICBsdmFsLT5vcCA9IG11bHQ7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcvJzoKLSsgICAgICBsdmFsLT5vcCA9IGRpdmlkZTsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyUnOgotKyAgICAgIGx2YWwtPm9wID0gbW9kdWxlOwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnKyc6Ci0rICAgICAgbHZhbC0+b3AgPSBwbHVzOwotKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLSc6Ci0rICAgICAgbHZhbC0+b3AgPSBtaW51czsKLSsgICAgICByZXN1bHQgPSBBRERPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJ24nOgotKyAgICBjYXNlICc/JzoKLSsgICAgY2FzZSAnOic6Ci0rICAgIGNhc2UgJygnOgotKyAgICBjYXNlICcpJzoKLSsgICAgICAvKiBOb3RoaW5nLCBqdXN0IHJldHVybiB0aGUgY2hhcmFjdGVyLiAgKi8KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnOyc6Ci0rICAgIGNhc2UgJ1xuJzoKLSsgICAgY2FzZSAnXDAnOgotKyAgICAgIC8qIEJlIHNhZmUgYW5kIGxldCB0aGUgdXNlciBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4uICAqLwotKyAgICAgIC0tZXhwOwotKyAgICAgIHJlc3VsdCA9IFlZRU9GOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJlc3VsdCA9IFlZRVJSQ09ERTsKLSsjaWYgWVlERUJVRyAhPSAwCi0rICAgICAgLS1leHA7Ci0rI2VuZGlmCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICpwZXhwID0gZXhwOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rCi0rc3RhdGljIHZvaWQKLSt5eWVycm9yIChjb25zdCBjaGFyICpzdHIpCi0rewotKyAgLyogRG8gbm90aGluZy4gIFdlIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUuICAqLwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbHVyYWwtZXhwLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcGx1cmFsLWV4cC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTc4NzE0MTkyIC0wNDAwCi1AQCAtMCwwICsxLDE1NCBAQAotKy8qIEV4cHJlc3Npb24gcGFyc2luZyBmb3IgcGx1cmFsIGZvcm0gc2VsZWN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rCi0rI2lmIChkZWZpbmVkIF9fR05VQ19fICYmICFkZWZpbmVkIF9fQVBQTEVfQ0NfXykgXAotKyAgICB8fCAoZGVmaW5lZCBfX1NURENfVkVSU0lPTl9fICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCkKLSsKLSsvKiBUaGVzZSBzdHJ1Y3RzIGFyZSB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbiBmb3IgdGhlIGdlcm1hbmljIHBsdXJhbAotKyAgIGZvcm0gZGV0ZXJtaW5hdGlvbi4gIEl0IHJlcHJlc2VudHMgdGhlIGV4cHJlc3Npb24gICJuICE9IDEiLiAgKi8KLStzdGF0aWMgY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gcGx2YXIgPQotK3sKLSsgIC5uYXJncyA9IDAsCi0rICAub3BlcmF0aW9uID0gdmFyLAotK307Ci0rc3RhdGljIGNvbnN0IHN0cnVjdCBleHByZXNzaW9uIHBsb25lID0KLSt7Ci0rICAubmFyZ3MgPSAwLAotKyAgLm9wZXJhdGlvbiA9IG51bSwKLSsgIC52YWwgPQotKyAgewotKyAgICAubnVtID0gMQotKyAgfQotK307Ci0rc3RydWN0IGV4cHJlc3Npb24gR0VSTUFOSUNfUExVUkFMID0KLSt7Ci0rICAubmFyZ3MgPSAyLAotKyAgLm9wZXJhdGlvbiA9IG5vdF9lcXVhbCwKLSsgIC52YWwgPQotKyAgewotKyAgICAuYXJncyA9Ci0rICAgIHsKLSsgICAgICBbMF0gPSAoc3RydWN0IGV4cHJlc3Npb24gKikgJnBsdmFyLAotKyAgICAgIFsxXSA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSAmcGxvbmUKLSsgICAgfQotKyAgfQotK307Ci0rCi0rIyBkZWZpbmUgSU5JVF9HRVJNQU5JQ19QTFVSQUwoKQotKwotKyNlbHNlCi0rCi0rLyogRm9yIGNvbXBpbGVycyB3aXRob3V0IHN1cHBvcnQgZm9yIElTTyBDIDk5IHN0cnVjdC91bmlvbiBpbml0aWFsaXplcnM6Ci0rICAgSW5pdGlhbGl6YXRpb24gYXQgcnVuLXRpbWUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiBwbHZhcjsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gcGxvbmU7Ci0rc3RydWN0IGV4cHJlc3Npb24gR0VSTUFOSUNfUExVUkFMOwotKwotK3N0YXRpYyB2b2lkCi0raW5pdF9nZXJtYW5pY19wbHVyYWwgKCkKLSt7Ci0rICBpZiAocGxvbmUudmFsLm51bSA9PSAwKQotKyAgICB7Ci0rICAgICAgcGx2YXIubmFyZ3MgPSAwOwotKyAgICAgIHBsdmFyLm9wZXJhdGlvbiA9IHZhcjsKLSsKLSsgICAgICBwbG9uZS5uYXJncyA9IDA7Ci0rICAgICAgcGxvbmUub3BlcmF0aW9uID0gbnVtOwotKyAgICAgIHBsb25lLnZhbC5udW0gPSAxOwotKwotKyAgICAgIEdFUk1BTklDX1BMVVJBTC5uYXJncyA9IDI7Ci0rICAgICAgR0VSTUFOSUNfUExVUkFMLm9wZXJhdGlvbiA9IG5vdF9lcXVhbDsKLSsgICAgICBHRVJNQU5JQ19QTFVSQUwudmFsLmFyZ3NbMF0gPSAmcGx2YXI7Ci0rICAgICAgR0VSTUFOSUNfUExVUkFMLnZhbC5hcmdzWzFdID0gJnBsb25lOwotKyAgICB9Ci0rfQotKwotKyMgZGVmaW5lIElOSVRfR0VSTUFOSUNfUExVUkFMKCkgaW5pdF9nZXJtYW5pY19wbHVyYWwgKCkKLSsKLSsjZW5kaWYKLSsKLSt2b2lkCi0raW50ZXJuYWxfZnVuY3Rpb24KLStFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIChjb25zdCBjaGFyICpudWxsZW50cnksIHN0cnVjdCBleHByZXNzaW9uICoqcGx1cmFscCwKLSsJCQkgICB1bnNpZ25lZCBsb25nIGludCAqbnBsdXJhbHNwKQotK3sKLSsgIGlmIChudWxsZW50cnkgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKnBsdXJhbDsKLSsgICAgICBjb25zdCBjaGFyICpucGx1cmFsczsKLSsKLSsgICAgICBwbHVyYWwgPSBzdHJzdHIgKG51bGxlbnRyeSwgInBsdXJhbD0iKTsKLSsgICAgICBucGx1cmFscyA9IHN0cnN0ciAobnVsbGVudHJ5LCAibnBsdXJhbHM9Iik7Ci0rICAgICAgaWYgKHBsdXJhbCA9PSBOVUxMIHx8IG5wbHVyYWxzID09IE5VTEwpCi0rCWdvdG8gbm9fcGx1cmFsOwotKyAgICAgIGVsc2UKLSsJewotKwkgIGNoYXIgKmVuZHA7Ci0rCSAgdW5zaWduZWQgbG9uZyBpbnQgbjsKLSsJICBzdHJ1Y3QgcGFyc2VfYXJncyBhcmdzOwotKwotKwkgIC8qIEZpcnN0IGdldCB0aGUgbnVtYmVyLiAgKi8KLSsJICBucGx1cmFscyArPSA5OwotKwkgIHdoaWxlICgqbnBsdXJhbHMgIT0gJ1wwJyAmJiBpc3NwYWNlICgodW5zaWduZWQgY2hhcikgKm5wbHVyYWxzKSkKLSsJICAgICsrbnBsdXJhbHM7Ci0rCSAgaWYgKCEoKm5wbHVyYWxzID49ICcwJyAmJiAqbnBsdXJhbHMgPD0gJzknKSkKLSsJICAgIGdvdG8gbm9fcGx1cmFsOwotKyNpZiBkZWZpbmVkIEhBVkVfU1RSVE9VTCB8fCBkZWZpbmVkIF9MSUJDCi0rCSAgbiA9IHN0cnRvdWwgKG5wbHVyYWxzLCAmZW5kcCwgMTApOwotKyNlbHNlCi0rCSAgZm9yIChlbmRwID0gbnBsdXJhbHMsIG4gPSAwOyAqZW5kcCA+PSAnMCcgJiYgKmVuZHAgPD0gJzknOyBlbmRwKyspCi0rCSAgICBuID0gbiAqIDEwICsgKCplbmRwIC0gJzAnKTsKLSsjZW5kaWYKLSsJICBpZiAobnBsdXJhbHMgPT0gZW5kcCkKLSsJICAgIGdvdG8gbm9fcGx1cmFsOwotKwkgICpucGx1cmFsc3AgPSBuOwotKwotKwkgIC8qIER1ZSB0byB0aGUgcmVzdHJpY3Rpb25zIGJpc29uIGltcG9zZXMgb250byB0aGUgaW50ZXJmYWNlIG9mIHRoZQotKwkgICAgIHNjYW5uZXIgZnVuY3Rpb24gd2UgaGF2ZSB0byBwdXQgdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlIHJlc3VsdAotKwkgICAgIHBhc3NlZCB1cCBmcm9tIHRoZSBwYXJzZXIgaW50byB0aGUgc2FtZSBzdHJ1Y3R1cmUgd2hpY2ggYWRkcmVzcwotKwkgICAgIGlzIHBhc3NlZCBkb3duIHRvIHRoZSBwYXJzZXIuICAqLwotKwkgIHBsdXJhbCArPSA3OwotKwkgIGFyZ3MuY3AgPSBwbHVyYWw7Ci0rCSAgaWYgKFBMVVJBTF9QQVJTRSAoJmFyZ3MpICE9IDApCi0rCSAgICBnb3RvIG5vX3BsdXJhbDsKLSsJICAqcGx1cmFscCA9IGFyZ3MucmVzOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIEJ5IGRlZmF1bHQgd2UgYXJlIHVzaW5nIHRoZSBHZXJtYW5pYyBmb3JtOiBzaW5ndWxhciBmb3JtIG9ubHkKLSsgICAgICAgICBmb3IgYG9uZScsIHRoZSBwbHVyYWwgZm9ybSBvdGhlcndpc2UuICBZZXMsIHRoaXMgaXMgYWxzbyB3aGF0Ci0rICAgICAgICAgRW5nbGlzaCBpcyB1c2luZyBzaW5jZSBFbmdsaXNoIGlzIGEgR2VybWFuaWMgbGFuZ3VhZ2UuICAqLwotKyAgICBub19wbHVyYWw6Ci0rICAgICAgSU5JVF9HRVJNQU5JQ19QTFVSQUwgKCk7Ci0rICAgICAgKnBsdXJhbHAgPSAmR0VSTUFOSUNfUExVUkFMOwotKyAgICAgICpucGx1cmFsc3AgPSAyOwotKyAgICB9Ci0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3BsdXJhbC1leHAuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbHVyYWwtZXhwLmgJMjAwNC0wOS0xMiAxNDo0MDozNC41ODQ3MTMyODAgLTA0MDAKLUBAIC0wLDAgKzEsMTE4IEBACi0rLyogRXhwcmVzc2lvbiBwYXJzaW5nIGFuZCBldmFsdWF0aW9uIGZvciBwbHVyYWwgZm9ybSBzZWxlY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfUExVUkFMX0VYUF9ICi0rI2RlZmluZSBfUExVUkFMX0VYUF9ICi0rCi0rI2lmbmRlZiBpbnRlcm5hbF9mdW5jdGlvbgotKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBhdHRyaWJ1dGVfaGlkZGVuCi0rIyBkZWZpbmUgYXR0cmlidXRlX2hpZGRlbgotKyNlbmRpZgotKwotKwotKy8qIFRoaXMgaXMgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBleHByZXNzaW9ucyB0byBkZXRlcm1pbmUgdGhlCi0rICAgcGx1cmFsIGZvcm0uICAqLwotK3N0cnVjdCBleHByZXNzaW9uCi0rewotKyAgaW50IG5hcmdzOwkJCS8qIE51bWJlciBvZiBhcmd1bWVudHMuICAqLwotKyAgZW51bSBvcGVyYXRvcgotKyAgewotKyAgICAvKiBXaXRob3V0IGFyZ3VtZW50czogICovCi0rICAgIHZhciwJCQkvKiBUaGUgdmFyaWFibGUgIm4iLiAgKi8KLSsgICAgbnVtLAkJCS8qIERlY2ltYWwgbnVtYmVyLiAgKi8KLSsgICAgLyogVW5hcnkgb3BlcmF0b3JzOiAgKi8KLSsgICAgbG5vdCwJCQkvKiBMb2dpY2FsIE5PVC4gICovCi0rICAgIC8qIEJpbmFyeSBvcGVyYXRvcnM6ICAqLwotKyAgICBtdWx0LAkJCS8qIE11bHRpcGxpY2F0aW9uLiAgKi8KLSsgICAgZGl2aWRlLAkJCS8qIERpdmlzaW9uLiAgKi8KLSsgICAgbW9kdWxlLAkJCS8qIE1vZHVsbyBvcGVyYXRpb24uICAqLwotKyAgICBwbHVzLAkJCS8qIEFkZGl0aW9uLiAgKi8KLSsgICAgbWludXMsCQkJLyogU3VidHJhY3Rpb24uICAqLwotKyAgICBsZXNzX3RoYW4sCQkJLyogQ29tcGFyaXNvbi4gICovCi0rICAgIGdyZWF0ZXJfdGhhbiwJCS8qIENvbXBhcmlzb24uICAqLwotKyAgICBsZXNzX29yX2VxdWFsLAkJLyogQ29tcGFyaXNvbi4gICovCi0rICAgIGdyZWF0ZXJfb3JfZXF1YWwsCQkvKiBDb21wYXJpc29uLiAgKi8KLSsgICAgZXF1YWwsCQkJLyogQ29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuICAqLwotKyAgICBub3RfZXF1YWwsCQkJLyogQ29tcGFyaXNvbiBmb3IgaW5lcXVhbGl0eS4gICovCi0rICAgIGxhbmQsCQkJLyogTG9naWNhbCBBTkQuICAqLwotKyAgICBsb3IsCQkJLyogTG9naWNhbCBPUi4gICovCi0rICAgIC8qIFRlcm5hcnkgb3BlcmF0b3JzOiAgKi8KLSsgICAgcW1vcAkJCS8qIFF1ZXN0aW9uIG1hcmsgb3BlcmF0b3IuICAqLwotKyAgfSBvcGVyYXRpb247Ci0rICB1bmlvbgotKyAgewotKyAgICB1bnNpZ25lZCBsb25nIGludCBudW07CS8qIE51bWJlciB2YWx1ZSBmb3IgYG51bScuICAqLwotKyAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1szXTsJLyogVXAgdG8gdGhyZWUgYXJndW1lbnRzLiAgKi8KLSsgIH0gdmFsOwotK307Ci0rCi0rLyogVGhpcyBpcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyIGFuZCBnZXQKLSsgICB0aGUgcmVzdWx0IGluIGEgdGhyZWFkLXNhZmUgd2F5LiAgKi8KLStzdHJ1Y3QgcGFyc2VfYXJncwotK3sKLSsgIGNvbnN0IGNoYXIgKmNwOwotKyAgc3RydWN0IGV4cHJlc3Npb24gKnJlczsKLSt9OwotKwotKwotKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoaXMgc291cmNlIGNvZGUgaXMgdXNlZAotKyAgIDEuIGluIHRoZSBHTlUgQyBMaWJyYXJ5IGxpYnJhcnksCi0rICAgMi4gaW4gdGhlIEdOVSBsaWJpbnRsIGxpYnJhcnksCi0rICAgMy4gaW4gdGhlIEdOVSBnZXR0ZXh0IHRvb2xzLgotKyAgIFRoZSBmdW5jdGlvbiBuYW1lcyBpbiBlYWNoIHNpdHVhdGlvbiBtdXN0IGJlIGRpZmZlcmVudCwgdG8gYWxsb3cgZm9yCi0rICAgYmluYXJ5IGluY29tcGF0aWJsZSBjaGFuZ2VzIGluICdzdHJ1Y3QgZXhwcmVzc2lvbicuICBGdXJ0aGVybW9yZSwKLSsgICAxLiBpbiB0aGUgR05VIEMgTGlicmFyeSBsaWJyYXJ5LCB0aGUgbmFtZXMgaGF2ZSBhIF9fIHByZWZpeCwKLSsgICAyLiszLiBpbiB0aGUgR05VIGxpYmludGwgbGlicmFyeSBhbmQgaW4gdGhlIEdOVSBnZXR0ZXh0IHRvb2xzLCB0aGUgbmFtZXMKLSsgICAgICAgICBtdXN0IGZvbGxvdyBBTlNJIEMgYW5kIG5vdCBzdGFydCB3aXRoIF9fLgotKyAgIFNvIHdlIGhhdmUgdG8gZGlzdGluZ3Vpc2ggdGhlIHRocmVlIGNhc2VzLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBGUkVFX0VYUFJFU1NJT04gX19nZXR0ZXh0X2ZyZWVfZXhwCi0rIyBkZWZpbmUgUExVUkFMX1BBUlNFIF9fZ2V0dGV4dHBhcnNlCi0rIyBkZWZpbmUgR0VSTUFOSUNfUExVUkFMIF9fZ2V0dGV4dF9nZXJtYW5pY19wbHVyYWwKLSsjIGRlZmluZSBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIF9fZ2V0dGV4dF9leHRyYWN0X3BsdXJhbAotKyNlbGlmIGRlZmluZWQgKElOX0xJQklOVEwpCi0rIyBkZWZpbmUgRlJFRV9FWFBSRVNTSU9OIGxpYmludGxfZ2V0dGV4dF9mcmVlX2V4cAotKyMgZGVmaW5lIFBMVVJBTF9QQVJTRSBsaWJpbnRsX2dldHRleHRwYXJzZQotKyMgZGVmaW5lIEdFUk1BTklDX1BMVVJBTCBsaWJpbnRsX2dldHRleHRfZ2VybWFuaWNfcGx1cmFsCi0rIyBkZWZpbmUgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiBsaWJpbnRsX2dldHRleHRfZXh0cmFjdF9wbHVyYWwKLSsjZWxzZQotKyMgZGVmaW5lIEZSRUVfRVhQUkVTU0lPTiBmcmVlX3BsdXJhbF9leHByZXNzaW9uCi0rIyBkZWZpbmUgUExVUkFMX1BBUlNFIHBhcnNlX3BsdXJhbF9leHByZXNzaW9uCi0rIyBkZWZpbmUgR0VSTUFOSUNfUExVUkFMIGdlcm1hbmljX3BsdXJhbAotKyMgZGVmaW5lIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gZXh0cmFjdF9wbHVyYWxfZXhwcmVzc2lvbgotKyNlbmRpZgotKwotK2V4dGVybiB2b2lkIEZSRUVfRVhQUkVTU0lPTiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCkKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK2V4dGVybiBpbnQgUExVUkFMX1BBUlNFICh2b2lkICphcmcpOwotK2V4dGVybiBzdHJ1Y3QgZXhwcmVzc2lvbiBHRVJNQU5JQ19QTFVSQUwgYXR0cmlidXRlX2hpZGRlbjsKLStleHRlcm4gdm9pZCBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIChjb25zdCBjaGFyICpudWxsZW50cnksCi0rCQkJCSAgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKnBsdXJhbHAsCi0rCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGludCAqbnBsdXJhbHNwKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rCi0rI2lmICFkZWZpbmVkIChfTElCQykgJiYgIWRlZmluZWQgKElOX0xJQklOVEwpCi0rZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHBsdXJhbF9ldmFsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqcGV4cCwKLSsJCQkJICAgICAgdW5zaWduZWQgbG9uZyBpbnQgbik7Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9QTFVSQUxfRVhQX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbHVyYWwueQkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbHVyYWwueQkyMDA0LTA5LTEyIDE0OjQwOjM0LjU4OTcxMjUyMCAtMDQwMAotQEAgLTAsMCArMSwzODEgQEAKLSslewotKy8qIEV4cHJlc3Npb24gcGFyc2luZyBmb3IgcGx1cmFsIGZvcm0gc2VsZWN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRoZSBiaXNvbiBnZW5lcmF0ZWQgcGFyc2VyIHVzZXMgYWxsb2NhLiAgQUlYIDMgZm9yY2VzIHVzIHRvIHB1dCB0aGlzCi0rICAgZGVjbGFyYXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gIFRoZSBkZWNsYXJhdGlvbiBpbiBiaXNvbidzCi0rICAgc2tlbGV0b24gZmlsZSBjb21lcyB0b28gbGF0ZS4gIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+Ci0rICAgYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlIGFyYml0cmFyeSBzeXN0ZW0gaGVhZGVycy4gICovCi0rI2lmIGRlZmluZWQgX0FJWCAmJiAhZGVmaW5lZCBfX0dOVUNfXwotKyAjcHJhZ21hIGFsbG9jYQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rCi0rLyogVGhlIG1haW4gZnVuY3Rpb24gZ2VuZXJhdGVkIGJ5IHRoZSBwYXJzZXIgaXMgY2FsbGVkIF9fZ2V0dGV4dHBhcnNlLAotKyAgIGJ1dCB3ZSB3YW50IGl0IHRvIGJlIGNhbGxlZCBQTFVSQUxfUEFSU0UuICAqLwotKyNpZm5kZWYgX0xJQkMKLSsjIGRlZmluZSBfX2dldHRleHRwYXJzZSBQTFVSQUxfUEFSU0UKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFlZTEVYX1BBUkFNCSYoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPmNwCi0rI2RlZmluZSBZWVBBUlNFX1BBUkFNCWFyZwotKyV9Ci0rJXB1cmVfcGFyc2VyCi0rJWV4cGVjdCA3Ci0rCi0rJXVuaW9uIHsKLSsgIHVuc2lnbmVkIGxvbmcgaW50IG51bTsKLSsgIGVudW0gb3BlcmF0b3Igb3A7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwOwotK30KLSsKLSslewotKy8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCi0rc3RhdGljIGludCB5eWxleCAoWVlTVFlQRSAqbHZhbCwgY29uc3QgY2hhciAqKnBleHApOwotK3N0YXRpYyB2b2lkIHl5ZXJyb3IgKGNvbnN0IGNoYXIgKnN0cik7Ci0rCi0rLyogQWxsb2NhdGlvbiBvZiBleHByZXNzaW9ucy4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwIChpbnQgbmFyZ3MsIGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICogY29uc3QgKmFyZ3MpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqbmV3cDsKLSsKLSsgIC8qIElmIGFueSBvZiB0aGUgYXJndW1lbnQgY291bGQgbm90IGJlIG1hbGxvYydlZCwganVzdCByZXR1cm4gTlVMTC4gICovCi0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICBpZiAoYXJnc1tpXSA9PSBOVUxMKQotKyAgICAgIGdvdG8gZmFpbDsKLSsKLSsgIC8qIEFsbG9jYXRlIGEgbmV3IGV4cHJlc3Npb24uICAqLwotKyAgbmV3cCA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsKLSsgIGlmIChuZXdwICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBuZXdwLT5uYXJncyA9IG5hcmdzOwotKyAgICAgIG5ld3AtPm9wZXJhdGlvbiA9IG9wOwotKyAgICAgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rCW5ld3AtPnZhbC5hcmdzW2ldID0gYXJnc1tpXTsKLSsgICAgICByZXR1cm4gbmV3cDsKLSsgICAgfQotKwotKyBmYWlsOgotKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsgICAgRlJFRV9FWFBSRVNTSU9OIChhcmdzW2ldKTsKLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzAgKGVudW0gb3BlcmF0b3Igb3ApCi0rewotKyAgcmV0dXJuIG5ld19leHAgKDAsIG9wLCBOVUxMKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8xIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmlnaHQpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMV07Ci0rCi0rICBhcmdzWzBdID0gcmlnaHQ7Ci0rICByZXR1cm4gbmV3X2V4cCAoMSwgb3AsIGFyZ3MpOwotK30KLSsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMiAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmxlZnQsIHN0cnVjdCBleHByZXNzaW9uICpyaWdodCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1syXTsKLSsKLSsgIGFyZ3NbMF0gPSBsZWZ0OwotKyAgYXJnc1sxXSA9IHJpZ2h0OwotKyAgcmV0dXJuIG5ld19leHAgKDIsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8zIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqYmV4cCwKLSsJICAgc3RydWN0IGV4cHJlc3Npb24gKnRicmFuY2gsIHN0cnVjdCBleHByZXNzaW9uICpmYnJhbmNoKQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzNdOwotKwotKyAgYXJnc1swXSA9IGJleHA7Ci0rICBhcmdzWzFdID0gdGJyYW5jaDsKLSsgIGFyZ3NbMl0gPSBmYnJhbmNoOwotKyAgcmV0dXJuIG5ld19leHAgKDMsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rJX0KLSsKLSsvKiBUaGlzIGRlY2xhcmVzIHRoYXQgYWxsIG9wZXJhdG9ycyBoYXZlIHRoZSBzYW1lIGFzc29jaWF0aXZpdHkgYW5kIHRoZQotKyAgIHByZWNlZGVuY2Ugb3JkZXIgYXMgaW4gQy4gIFNlZSBbSGFyYmlzb24sIFN0ZWVsZTogQywgQSBSZWZlcmVuY2UgTWFudWFsXS4KLSsgICBUaGVyZSBpcyBubyB1bmFyeSBtaW51cyBhbmQgbm8gYml0d2lzZSBvcGVyYXRvcnMuCi0rICAgT3BlcmF0b3JzIHdpdGggdGhlIHNhbWUgc3ludGFjdGljIGJlaGF2aW91ciBoYXZlIGJlZW4gbWVyZ2VkIGludG8gYSBzaW5nbGUKLSsgICB0b2tlbiwgdG8gc2F2ZSBzcGFjZSBpbiB0aGUgYXJyYXkgZ2VuZXJhdGVkIGJ5IGJpc29uLiAgKi8KLSslcmlnaHQgJz8nCQkvKiAgID8JCSovCi0rJWxlZnQgJ3wnCQkvKiAgIHx8CQkqLwotKyVsZWZ0ICcmJwkJLyogICAmJgkJKi8KLSslbGVmdCBFUVVPUDIJCS8qICAgPT0gIT0JKi8KLSslbGVmdCBDTVBPUDIJCS8qICAgPCA+IDw9ID49CSovCi0rJWxlZnQgQURET1AyCQkvKiAgICsgLQkqLwotKyVsZWZ0IE1VTE9QMgkJLyogICAqIC8gJQkqLwotKyVyaWdodCAnIScJCS8qICAgIQkJKi8KLSsKLSsldG9rZW4gPG9wPiBFUVVPUDIgQ01QT1AyIEFERE9QMiBNVUxPUDIKLSsldG9rZW4gPG51bT4gTlVNQkVSCi0rJXR5cGUgPGV4cD4gZXhwCi0rCi0rJSUKLSsKLStzdGFydDoJICBleHAKLSsJICB7Ci0rCSAgICBpZiAoJDEgPT0gTlVMTCkKLSsJICAgICAgWVlBQk9SVDsKLSsJICAgICgoc3RydWN0IHBhcnNlX2FyZ3MgKikgYXJnKS0+cmVzID0gJDE7Ci0rCSAgfQotKwk7Ci0rCi0rZXhwOgkgIGV4cCAnPycgZXhwICc6JyBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMyAocW1vcCwgJDEsICQzLCAkNSk7Ci0rCSAgfQotKwl8IGV4cCAnfCcgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKGxvciwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwICcmJyBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAobGFuZCwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwIEVRVU9QMiBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7Ci0rCSAgfQotKwl8IGV4cCBDTVBPUDIgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKCQyLCAkMSwgJDMpOwotKwkgIH0KLSsJfCBleHAgQURET1AyIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8yICgkMiwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwIE1VTE9QMiBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7Ci0rCSAgfQotKwl8ICchJyBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMSAobG5vdCwgJDIpOwotKwkgIH0KLSsJfCAnbicKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMCAodmFyKTsKLSsJICB9Ci0rCXwgTlVNQkVSCi0rCSAgewotKwkgICAgaWYgKCgkJCA9IG5ld19leHBfMCAobnVtKSkgIT0gTlVMTCkKLSsJICAgICAgJCQtPnZhbC5udW0gPSAkMTsKLSsJICB9Ci0rCXwgJygnIGV4cCAnKScKLSsJICB7Ci0rCSAgICAkJCA9ICQyOwotKwkgIH0KLSsJOwotKwotKyUlCi0rCi0rdm9pZAotK2ludGVybmFsX2Z1bmN0aW9uCi0rRlJFRV9FWFBSRVNTSU9OIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQotK3sKLSsgIGlmIChleHAgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgLyogSGFuZGxlIHRoZSByZWN1cnNpdmUgY2FzZS4gICovCi0rICBzd2l0Y2ggKGV4cC0+bmFyZ3MpCi0rICAgIHsKLSsgICAgY2FzZSAzOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1syXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAyOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1sxXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAxOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1swXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgZnJlZSAoZXhwKTsKLSt9Ci0rCi0rCi0rc3RhdGljIGludAotK3l5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCkKLSt7Ci0rICBjb25zdCBjaGFyICpleHAgPSAqcGV4cDsKLSsgIGludCByZXN1bHQ7Ci0rCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIGlmIChleHBbMF0gPT0gJ1wwJykKLSsJewotKwkgICpwZXhwID0gZXhwOwotKwkgIHJldHVybiBZWUVPRjsKLSsJfQotKwotKyAgICAgIGlmIChleHBbMF0gIT0gJyAnICYmIGV4cFswXSAhPSAnXHQnKQotKwlicmVhazsKLSsKLSsgICAgICArK2V4cDsKLSsgICAgfQotKwotKyAgcmVzdWx0ID0gKmV4cCsrOwotKyAgc3dpdGNoIChyZXN1bHQpCi0rICAgIHsKLSsgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgotKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6Ci0rICAgICAgewotKwl1bnNpZ25lZCBsb25nIGludCBuID0gcmVzdWx0IC0gJzAnOwotKwl3aGlsZSAoZXhwWzBdID49ICcwJyAmJiBleHBbMF0gPD0gJzknKQotKwkgIHsKLSsJICAgIG4gKj0gMTA7Ci0rCSAgICBuICs9IGV4cFswXSAtICcwJzsKLSsJICAgICsrZXhwOwotKwkgIH0KLSsJbHZhbC0+bnVtID0gbjsKLSsJcmVzdWx0ID0gTlVNQkVSOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPSc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGVxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICchJzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbm90X2VxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcmJzoKLSsgICAgY2FzZSAnfCc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSByZXN1bHQpCi0rCSsrZXhwOwotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc8JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbGVzc19vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBsZXNzX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc+JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gZ3JlYXRlcl9vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBncmVhdGVyX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcqJzoKLSsgICAgICBsdmFsLT5vcCA9IG11bHQ7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcvJzoKLSsgICAgICBsdmFsLT5vcCA9IGRpdmlkZTsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyUnOgotKyAgICAgIGx2YWwtPm9wID0gbW9kdWxlOwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnKyc6Ci0rICAgICAgbHZhbC0+b3AgPSBwbHVzOwotKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLSc6Ci0rICAgICAgbHZhbC0+b3AgPSBtaW51czsKLSsgICAgICByZXN1bHQgPSBBRERPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJ24nOgotKyAgICBjYXNlICc/JzoKLSsgICAgY2FzZSAnOic6Ci0rICAgIGNhc2UgJygnOgotKyAgICBjYXNlICcpJzoKLSsgICAgICAvKiBOb3RoaW5nLCBqdXN0IHJldHVybiB0aGUgY2hhcmFjdGVyLiAgKi8KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnOyc6Ci0rICAgIGNhc2UgJ1xuJzoKLSsgICAgY2FzZSAnXDAnOgotKyAgICAgIC8qIEJlIHNhZmUgYW5kIGxldCB0aGUgdXNlciBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4uICAqLwotKyAgICAgIC0tZXhwOwotKyAgICAgIHJlc3VsdCA9IFlZRU9GOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJlc3VsdCA9IFlZRVJSQ09ERTsKLSsjaWYgWVlERUJVRyAhPSAwCi0rICAgICAgLS1leHA7Ci0rI2VuZGlmCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICpwZXhwID0gZXhwOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rCi0rc3RhdGljIHZvaWQKLSt5eWVycm9yIChjb25zdCBjaGFyICpzdHIpCi0rewotKyAgLyogRG8gbm90aGluZy4gIFdlIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUuICAqLwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbzJ0Ymwuc2VkLmluCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDEwMiArMCwwIEBACi0tIyBwbzJ0Ymwuc2VkIC0gQ29udmVydCBVbmlmb3J1bSBzdHlsZSAucG8gZmlsZSB0byBsb29rdXAgdGFibGUgZm9yIGNhdGdldHMKLS0jIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0jIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotLSMKLS0xIHsKLS0gIGlcCi0tLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgcG8ydGJsLnNlZCBmcm9tIEBQQUNLQUdFIE5BTUVALnBvdC4gICovXAotLVwKLS0jaWYgSEFWRV9DT05GSUdfSFwKLS0jIGluY2x1ZGUgPGNvbmZpZy5oPlwKLS0jZW5kaWZcCi0tXAotLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiXAotLVwKLS1jb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXSA9IHsKLS0gIGgKLS0gIHMvLiovMC8KLS0gIHgKLS19Ci0tIwotLSMgV3JpdGUgbXNnaWQgZW50cmllcyBpbiBDIGFycmF5IGZvcm0uCi0tIwotLS9ebXNnaWQvIHsKLS0gIHMvbXNnaWRbIAldKlwoIi4qIlwpLyAge1wxLwotLSAgdGIKLS0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lCi0tICA6YgotLSAgTgotLSMgTG9vayB3aGV0aGVyIHNlY29uZCBwYXJ0IGlzIGNvbnRpbnVhdGlvbiBsaW5lLgotLSAgcy9cKC4qXCkiXChcblwpIlwoLioiXCkvXDFcMlwzLwotLSMgWWVzLCB0aGVuIGJyYW5jaC4KLS0gIHRhCi0tIyBCZWNhdXNlIHdlIGFzc3VtZSB0aGF0IHRoZSBpbnB1dCBmaWxlIGNvcnJlY3RseSBmb3JtZWQgdGhlIGxpbmUKLS0jIGp1c3QgcmVhZCBjYW5ub3QgYmUgYWdhaW4gYmUgYSBtc2dpZCBsaW5lLiAgU28gaXQncyBzYWZlIHRvIGlnbm9yZQotLSMgaXQuCi0tICBzL1woLipcKVxuLiovXDEvCi0tICBiYwotLSMgV2UgZm91bmQgYSBjb250aW51YXRpb24gbGluZS4gIEJ1dCBiZWZvcmUgcHJpbnRpbmcgaW5zZXJ0ICdcJy4KLS0gIDphCi0tICBzL1woLipcKVwoXG4uKlwpL1wxXFxcMi8KLS0gIFAKLS0jIFdlIGNhbm5vdCB1c2UgRCBoZXJlLgotLSAgcy8uKlxuXCguKlwpL1wxLwotLSMgU29tZSBidWdneSBzZWRzIGRvIG5vdCBjbGVhciB0aGUgYHN1Y2Nlc3NmdWwgc3Vic3RpdHV0aW9uIHNpbmNlIGxhc3QgYGB0JycnCi0tIyBmbGFnIG9uIGBOJywgc28gd2UgZG8gYSBgdCcgaGVyZSB0byBjbGVhciBpdC4KLS0gIHRiCi0tIyBOb3QgcmVhY2hlZAotLSAgOmMKLS0gIHgKLS0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQotLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+Ci0tICB0ZAotLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KLS0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KLS0gIDpkCi0tICBzLzlcKF8qXCkkL19cMS8KLS0gIHRkCi0tIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KLS0gIHMvXlwoXypcKSQvMFwxLwotLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgotLSAgcy84XChfKlwpJC85XDEvCi0tICBzLzdcKF8qXCkkLzhcMS8KLS0gIHMvNlwoXypcKSQvN1wxLwotLSAgcy81XChfKlwpJC82XDEvCi0tICBzLzRcKF8qXCkkLzVcMS8KLS0gIHMvM1woXypcKSQvNFwxLwotLSAgcy8yXChfKlwpJC8zXDEvCi0tICBzLzFcKF8qXCkkLzJcMS8KLS0gIHMvMFwoXypcKSQvMVwxLwotLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KLS0gIHMvXy8wL2cKLS0gIHgKLS0gIEcKLS0gIHMvXCguKlwpXG5cKFswLTldKlwpL1wxLCBcMn0sLwotLSAgcy9cKC4qXCkiJC9cMS8KLS0gIHAKLS19Ci0tIwotLSMgTGFzdCBsaW5lLgotLSMKLS0kIHsKLS0gIGlcCi0tfTtcCi0tCi0tICBnCi0tICBzLzAqXCguKlwpL2ludCBfbXNnX3RibF9sZW5ndGggPSBcMTsvcAotLX0KLS1kCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLWFyZ3MuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wcmludGYtYXJncy5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTk1NzExNjA4IC0wNDAwCi1AQCAtMCwwICsxLDExOSBAQAotKy8qIERlY29tcG9zZWQgcHJpbnRmIGFyZ3VtZW50IGxpc3QuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLWFyZ3MuaCIKLSsKLSsjaWZkZWYgU1RBVElDCi0rU1RBVElDCi0rI2VuZGlmCi0raW50Ci0rcHJpbnRmX2ZldGNoYXJncyAodmFfbGlzdCBhcmdzLCBhcmd1bWVudHMgKmEpCi0rewotKyAgc2l6ZV90IGk7Ci0rICBhcmd1bWVudCAqYXA7Ci0rCi0rICBmb3IgKGkgPSAwLCBhcCA9ICZhLT5hcmdbMF07IGkgPCBhLT5jb3VudDsgaSsrLCBhcCsrKQotKyAgICBzd2l0Y2ggKGFwLT50eXBlKQotKyAgICAgIHsKLSsgICAgICBjYXNlIFRZUEVfU0NIQVI6Ci0rCWFwLT5hLmFfc2NoYXIgPSB2YV9hcmcgKGFyZ3MsIC8qc2lnbmVkIGNoYXIqLyBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfVUNIQVI6Ci0rCWFwLT5hLmFfdWNoYXIgPSB2YV9hcmcgKGFyZ3MsIC8qdW5zaWduZWQgY2hhciovIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9TSE9SVDoKLSsJYXAtPmEuYV9zaG9ydCA9IHZhX2FyZyAoYXJncywgLypzaG9ydCovIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VU0hPUlQ6Ci0rCWFwLT5hLmFfdXNob3J0ID0gdmFfYXJnIChhcmdzLCAvKnVuc2lnbmVkIHNob3J0Ki8gaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0lOVDoKLSsJYXAtPmEuYV9pbnQgPSB2YV9hcmcgKGFyZ3MsIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VSU5UOgotKwlhcC0+YS5hX3VpbnQgPSB2YV9hcmcgKGFyZ3MsIHVuc2lnbmVkIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9MT05HSU5UOgotKwlhcC0+YS5hX2xvbmdpbnQgPSB2YV9hcmcgKGFyZ3MsIGxvbmcgaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX1VMT05HSU5UOgotKwlhcC0+YS5hX3Vsb25naW50ID0gdmFfYXJnIChhcmdzLCB1bnNpZ25lZCBsb25nIGludCk7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKyAgICAgIGNhc2UgVFlQRV9MT05HTE9OR0lOVDoKLSsJYXAtPmEuYV9sb25nbG9uZ2ludCA9IHZhX2FyZyAoYXJncywgbG9uZyBsb25nIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VTE9OR0xPTkdJTlQ6Ci0rCWFwLT5hLmFfdWxvbmdsb25naW50ID0gdmFfYXJnIChhcmdzLCB1bnNpZ25lZCBsb25nIGxvbmcgaW50KTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgY2FzZSBUWVBFX0RPVUJMRToKLSsJYXAtPmEuYV9kb3VibGUgPSB2YV9hcmcgKGFyZ3MsIGRvdWJsZSk7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rICAgICAgY2FzZSBUWVBFX0xPTkdET1VCTEU6Ci0rCWFwLT5hLmFfbG9uZ2RvdWJsZSA9IHZhX2FyZyAoYXJncywgbG9uZyBkb3VibGUpOwotKwlicmVhazsKLSsjZW5kaWYKLSsgICAgICBjYXNlIFRZUEVfQ0hBUjoKLSsJYXAtPmEuYV9jaGFyID0gdmFfYXJnIChhcmdzLCBpbnQpOwotKwlicmVhazsKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsgICAgICBjYXNlIFRZUEVfV0lERV9DSEFSOgotKwlhcC0+YS5hX3dpZGVfY2hhciA9IHZhX2FyZyAoYXJncywgd2ludF90KTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgY2FzZSBUWVBFX1NUUklORzoKLSsJYXAtPmEuYV9zdHJpbmcgPSB2YV9hcmcgKGFyZ3MsIGNvbnN0IGNoYXIgKik7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsgICAgICBjYXNlIFRZUEVfV0lERV9TVFJJTkc6Ci0rCWFwLT5hLmFfd2lkZV9zdHJpbmcgPSB2YV9hcmcgKGFyZ3MsIGNvbnN0IHdjaGFyX3QgKik7Ci0rCWJyZWFrOwotKyNlbmRpZgotKyAgICAgIGNhc2UgVFlQRV9QT0lOVEVSOgotKwlhcC0+YS5hX3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIHZvaWQgKik7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9TQ0hBUl9QT0lOVEVSOgotKwlhcC0+YS5hX2NvdW50X3NjaGFyX3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIHNpZ25lZCBjaGFyICopOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfQ09VTlRfU0hPUlRfUE9JTlRFUjoKLSsJYXAtPmEuYV9jb3VudF9zaG9ydF9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBzaG9ydCAqKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0NPVU5UX0lOVF9QT0lOVEVSOgotKwlhcC0+YS5hX2NvdW50X2ludF9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBpbnQgKik7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVI6Ci0rCWFwLT5hLmFfY291bnRfbG9uZ2ludF9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBsb25nIGludCAqKTsKLSsJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rICAgICAgY2FzZSBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVI6Ci0rCWFwLT5hLmFfY291bnRfbG9uZ2xvbmdpbnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgbG9uZyBsb25nIGludCAqKTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgZGVmYXVsdDoKLSsJLyogVW5rbm93biB0eXBlLiAgKi8KLSsJcmV0dXJuIC0xOwotKyAgICAgIH0KLSsgIHJldHVybiAwOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wcmludGYtYXJncy5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3ByaW50Zi1hcmdzLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42MDE3MTA2OTYgLTA0MDAKLUBAIC0wLDAgKzEsMTM3IEBACi0rLyogRGVjb21wb3NlZCBwcmludGYgYXJndW1lbnQgbGlzdC4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfUFJJTlRGX0FSR1NfSAotKyNkZWZpbmUgX1BSSU5URl9BUkdTX0gKLSsKLSsvKiBHZXQgc2l6ZV90LiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rLyogR2V0IHdjaGFyX3QuICAqLwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsjIGluY2x1ZGUgPHN0ZGRlZi5oPgotKyNlbmRpZgotKwotKy8qIEdldCB3aW50X3QuICAqLwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKyMgaW5jbHVkZSA8d2NoYXIuaD4KLSsjZW5kaWYKLSsKLSsvKiBHZXQgdmFfbGlzdC4gICovCi0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKwotKwotKy8qIEFyZ3VtZW50IHR5cGVzICovCi0rdHlwZWRlZiBlbnVtCi0rewotKyAgVFlQRV9OT05FLAotKyAgVFlQRV9TQ0hBUiwKLSsgIFRZUEVfVUNIQVIsCi0rICBUWVBFX1NIT1JULAotKyAgVFlQRV9VU0hPUlQsCi0rICBUWVBFX0lOVCwKLSsgIFRZUEVfVUlOVCwKLSsgIFRZUEVfTE9OR0lOVCwKLSsgIFRZUEVfVUxPTkdJTlQsCi0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rICBUWVBFX0xPTkdMT05HSU5ULAotKyAgVFlQRV9VTE9OR0xPTkdJTlQsCi0rI2VuZGlmCi0rICBUWVBFX0RPVUJMRSwKLSsjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKyAgVFlQRV9MT05HRE9VQkxFLAotKyNlbmRpZgotKyAgVFlQRV9DSEFSLAotKyNpZmRlZiBIQVZFX1dJTlRfVAotKyAgVFlQRV9XSURFX0NIQVIsCi0rI2VuZGlmCi0rICBUWVBFX1NUUklORywKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rICBUWVBFX1dJREVfU1RSSU5HLAotKyNlbmRpZgotKyAgVFlQRV9QT0lOVEVSLAotKyAgVFlQRV9DT1VOVF9TQ0hBUl9QT0lOVEVSLAotKyAgVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSLAotKyAgVFlQRV9DT1VOVF9JTlRfUE9JTlRFUiwKLSsgIFRZUEVfQ09VTlRfTE9OR0lOVF9QT0lOVEVSCi0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rLCBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVIKLSsjZW5kaWYKLSt9IGFyZ190eXBlOwotKwotKy8qIFBvbHltb3JwaGljIGFyZ3VtZW50ICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBhcmdfdHlwZSB0eXBlOwotKyAgdW5pb24KLSsgIHsKLSsgICAgc2lnbmVkIGNoYXIJCQlhX3NjaGFyOwotKyAgICB1bnNpZ25lZCBjaGFyCQlhX3VjaGFyOwotKyAgICBzaG9ydAkJCWFfc2hvcnQ7Ci0rICAgIHVuc2lnbmVkIHNob3J0CQlhX3VzaG9ydDsKLSsgICAgaW50CQkJCWFfaW50OwotKyAgICB1bnNpZ25lZCBpbnQJCWFfdWludDsKLSsgICAgbG9uZyBpbnQJCQlhX2xvbmdpbnQ7Ci0rICAgIHVuc2lnbmVkIGxvbmcgaW50CQlhX3Vsb25naW50OwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKyAgICBsb25nIGxvbmcgaW50CQlhX2xvbmdsb25naW50OwotKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50CWFfdWxvbmdsb25naW50OwotKyNlbmRpZgotKyAgICBmbG9hdAkJCWFfZmxvYXQ7Ci0rICAgIGRvdWJsZQkJCWFfZG91YmxlOwotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rICAgIGxvbmcgZG91YmxlCQkJYV9sb25nZG91YmxlOwotKyNlbmRpZgotKyAgICBpbnQJCQkJYV9jaGFyOwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKyAgICB3aW50X3QJCQlhX3dpZGVfY2hhcjsKLSsjZW5kaWYKLSsgICAgY29uc3QgY2hhcioJCQlhX3N0cmluZzsKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rICAgIGNvbnN0IHdjaGFyX3QqCQlhX3dpZGVfc3RyaW5nOwotKyNlbmRpZgotKyAgICB2b2lkKgkJCWFfcG9pbnRlcjsKLSsgICAgc2lnbmVkIGNoYXIgKgkJYV9jb3VudF9zY2hhcl9wb2ludGVyOwotKyAgICBzaG9ydCAqCQkJYV9jb3VudF9zaG9ydF9wb2ludGVyOwotKyAgICBpbnQgKgkJCWFfY291bnRfaW50X3BvaW50ZXI7Ci0rICAgIGxvbmcgaW50ICoJCQlhX2NvdW50X2xvbmdpbnRfcG9pbnRlcjsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsgICAgbG9uZyBsb25nIGludCAqCQlhX2NvdW50X2xvbmdsb25naW50X3BvaW50ZXI7Ci0rI2VuZGlmCi0rICB9Ci0rICBhOwotK30KLSthcmd1bWVudDsKLSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIHNpemVfdCBjb3VudDsKLSsgIGFyZ3VtZW50ICphcmc7Ci0rfQotK2FyZ3VtZW50czsKLSsKLSsKLSsvKiBGZXRjaCB0aGUgYXJndW1lbnRzLCBwdXR0aW5nIHRoZW0gaW50byBhLiAqLwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZWxzZQotK2V4dGVybgotKyNlbmRpZgotK2ludCBwcmludGZfZmV0Y2hhcmdzICh2YV9saXN0IGFyZ3MsIGFyZ3VtZW50cyAqYSk7Ci0rCi0rI2VuZGlmIC8qIF9QUklOVEZfQVJHU19IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcHJpbnRmLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42MDc3MDk3ODQgLTA0MDAKLUBAIC0wLDAgKzEsMzcxIEBACi0rLyogRm9ybWF0dGVkIG91dHB1dCB0byBzdHJpbmdzLCB1c2luZyBQT1NJWC9YU0kgZm9ybWF0IHN0cmluZ3Mgd2l0aCBwb3NpdGlvbnMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LCAyMDAzLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fR05VQ19fCi0rIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSsjIGRlZmluZSBIQVZFX0FMTE9DQSAxCi0rI2Vsc2UKLSsjIGlmZGVmIF9NU0NfVkVSCi0rIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0rIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0rIyBlbHNlCi0rIyAgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjICAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0rIyAgZWxzZQotKyMgICBpZmRlZiBfQUlYCi0rICNwcmFnbWEgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmbmRlZiBhbGxvY2EKLStjaGFyICphbGxvY2EgKCk7Ci0rIyAgICBlbmRpZgotKyMgICBlbmRpZgotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotKyNpZiAhSEFWRV9QT1NJWF9QUklOVEYKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKy8qIFdoZW4gYnVpbGRpbmcgYSBETEwsIHdlIG11c3QgZXhwb3J0IHNvbWUgZnVuY3Rpb25zLiAgTm90ZSB0aGF0IGJlY2F1c2UKLSsgICB0aGUgZnVuY3Rpb25zIGFyZSBvbmx5IGRlZmluZWQgZm9yIGJpbmFyeSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZQotKyAgIGRvbid0IG5lZWQgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbiBhbnkgY2FzZS4gICovCi0rI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgQlVJTERJTkdfRExMCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVEIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotKyNlbHNlCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVECi0rI2VuZGlmCi0rCi0rI2RlZmluZSBTVEFUSUMgc3RhdGljCi0rCi0rLyogRGVmaW5lIGF1eGlsaWFyeSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gInByaW50Zi1hcmdzLmgiLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLWFyZ3MuYyIKLSsKLSsvKiBEZWZpbmUgYXV4aWxpYXJ5IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAicHJpbnRmLXBhcnNlLmgiLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLXBhcnNlLmMiCi0rCi0rLyogRGVmaW5lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAidmFzbnByaW50Zi5oIi4gICovCi0rI2RlZmluZSB2YXNucHJpbnRmIGxpYmludGxfdmFzbnByaW50ZgotKyNpbmNsdWRlICJ2YXNucHJpbnRmLmMiCi0rI2lmIDAgLyogbm90IG5lZWRlZCAqLwotKyNkZWZpbmUgYXNucHJpbnRmIGxpYmludGxfYXNucHJpbnRmCi0rI2luY2x1ZGUgImFzbnByaW50Zi5jIgotKyNlbmRpZgotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdmZwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgaWYgKHN0cmNociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCi0rICAgIHJldHVybiB2ZnByaW50ZiAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IGxlbmd0aDsKLSsgICAgICBjaGFyICpyZXN1bHQgPSBsaWJpbnRsX3Zhc25wcmludGYgKE5VTEwsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaW50IHJldHZhbCA9IC0xOwotKyAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKLSsJewotKwkgIGlmIChmd3JpdGUgKHJlc3VsdCwgMSwgbGVuZ3RoLCBzdHJlYW0pID09IGxlbmd0aCkKLSsJICAgIHJldHZhbCA9IGxlbmd0aDsKLSsJICBmcmVlIChyZXN1bHQpOwotKwl9Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX2ZwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92ZnByaW50ZiAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdnByaW50ZiAoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdmZwcmludGYgKHN0ZG91dCwgZm9ybWF0LCBhcmdzKTsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9wcmludGYgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdnByaW50ZiAoZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3ZzcHJpbnRmIChjaGFyICpyZXN1bHRidWYsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIGlmIChzdHJjaHIgKGZvcm1hdCwgJyQnKSA9PSBOVUxMKQotKyAgICByZXR1cm4gdnNwcmludGYgKHJlc3VsdGJ1ZiwgZm9ybWF0LCBhcmdzKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHNpemVfdCBsZW5ndGggPSAoc2l6ZV90KSB+MCAvICg0ICogc2l6ZW9mIChjaGFyKSk7Ci0rICAgICAgY2hhciAqcmVzdWx0ID0gbGliaW50bF92YXNucHJpbnRmIChyZXN1bHRidWYsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYpCi0rCXsKLSsJICBmcmVlIChyZXN1bHQpOwotKwkgIHJldHVybiAtMTsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmV0dXJuIGxlbmd0aDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3NwcmludGYgKGNoYXIgKnJlc3VsdGJ1ZiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92c3ByaW50ZiAocmVzdWx0YnVmLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKyNpZiBIQVZFX1NOUFJJTlRGCi0rCi0rIyBpZiBIQVZFX0RFQ0xfX1NOUFJJTlRGCi0rICAgLyogV2luZG93cy4gICovCi0rIyAgZGVmaW5lIHN5c3RlbV92c25wcmludGYgX3ZzbnByaW50ZgotKyMgZWxzZQotKyAgIC8qIFVuaXguICAqLwotKyMgIGRlZmluZSBzeXN0ZW1fdnNucHJpbnRmIHZzbnByaW50ZgotKyMgZW5kaWYKLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3ZzbnByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBpZiAoc3RyY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKLSsgICAgcmV0dXJuIHN5c3RlbV92c25wcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IG1heGxlbmd0aCA9IGxlbmd0aDsKLSsgICAgICBjaGFyICpyZXN1bHQgPSBsaWJpbnRsX3Zhc25wcmludGYgKHJlc3VsdGJ1ZiwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdGJ1ZikKLSsJewotKwkgIGlmIChtYXhsZW5ndGggPiAwKQotKwkgICAgewotKwkgICAgICBpZiAobGVuZ3RoIDwgbWF4bGVuZ3RoKQotKwkJYWJvcnQgKCk7Ci0rCSAgICAgIG1lbWNweSAocmVzdWx0YnVmLCByZXN1bHQsIG1heGxlbmd0aCAtIDEpOwotKwkgICAgICByZXN1bHRidWZbbWF4bGVuZ3RoIC0gMV0gPSAnXDAnOwotKwkgICAgfQotKwkgIGZyZWUgKHJlc3VsdCk7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gbGVuZ3RoOwotKyAgICB9Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfc25wcmludGYgKGNoYXIgKnJlc3VsdGJ1Ziwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92c25wcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKyNlbmRpZgotKwotKyNpZiBIQVZFX0FTUFJJTlRGCi0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92YXNwcmludGYgKGNoYXIgKipyZXN1bHRwLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBzaXplX3QgbGVuZ3RoOwotKyAgY2hhciAqcmVzdWx0ID0gbGliaW50bF92YXNucHJpbnRmIChOVUxMLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgaWYgKHJlc3VsdCA9PSBOVUxMKQotKyAgICByZXR1cm4gLTE7Ci0rICAqcmVzdWx0cCA9IHJlc3VsdDsKLSsgIHJldHVybiBsZW5ndGg7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfYXNwcmludGYgKGNoYXIgKipyZXN1bHRwLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3Zhc3ByaW50ZiAocmVzdWx0cCwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsjZW5kaWYKLSsKLSsjaWYgSEFWRV9GV1BSSU5URgotKwotKyNpbmNsdWRlIDx3Y2hhci5oPgotKwotKyNkZWZpbmUgV0lERV9DSEFSX1ZFUlNJT04gMQotKwotKy8qIERlZmluZSBhdXhpbGlhcnkgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJ3cHJpbnRmLXBhcnNlLmgiLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLXBhcnNlLmMiCi0rCi0rLyogRGVmaW5lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAidmFzbnByaW50Zi5oIi4gICovCi0rI2RlZmluZSB2YXNud3ByaW50ZiBsaWJpbnRsX3Zhc253cHJpbnRmCi0rI2luY2x1ZGUgInZhc25wcmludGYuYyIKLSsjaWYgMCAvKiBub3QgbmVlZGVkICovCi0rI2RlZmluZSBhc253cHJpbnRmIGxpYmludGxfYXNud3ByaW50ZgotKyNpbmNsdWRlICJhc25wcmludGYuYyIKLSsjZW5kaWYKLSsKLSsjIGlmIEhBVkVfREVDTF9fU05XUFJJTlRGCi0rICAgLyogV2luZG93cy4gICovCi0rIyAgZGVmaW5lIHN5c3RlbV92c3dwcmludGYgX3ZzbndwcmludGYKLSsjIGVsc2UKLSsgICAvKiBVbml4LiAgKi8KLSsjICBkZWZpbmUgc3lzdGVtX3Zzd3ByaW50ZiB2c3dwcmludGYKLSsjIGVuZGlmCi0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92ZndwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgaWYgKHdjc2NociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCi0rICAgIHJldHVybiB2ZndwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHNpemVfdCBsZW5ndGg7Ci0rICAgICAgd2NoYXJfdCAqcmVzdWx0ID0gbGliaW50bF92YXNud3ByaW50ZiAoTlVMTCwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgICAgICBpbnQgcmV0dmFsID0gLTE7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQotKwl7Ci0rCSAgc2l6ZV90IGk7Ci0rCSAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotKwkgICAgaWYgKGZwdXR3YyAocmVzdWx0W2ldLCBzdHJlYW0pID09IFdFT0YpCi0rCSAgICAgIGJyZWFrOwotKwkgIGlmIChpID09IGxlbmd0aCkKLSsJICAgIHJldHZhbCA9IGxlbmd0aDsKLSsJICBmcmVlIChyZXN1bHQpOwotKwl9Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX2Z3cHJpbnRmIChGSUxFICpzdHJlYW0sIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdmZ3cHJpbnRmIChzdHJlYW0sIGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92d3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdmZ3cHJpbnRmIChzdGRvdXQsIGZvcm1hdCwgYXJncyk7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfd3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92d3ByaW50ZiAoZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3Zzd3ByaW50ZiAod2NoYXJfdCAqcmVzdWx0YnVmLCBzaXplX3QgbGVuZ3RoLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBpZiAod2NzY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKLSsgICAgcmV0dXJuIHN5c3RlbV92c3dwcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IG1heGxlbmd0aCA9IGxlbmd0aDsKLSsgICAgICB3Y2hhcl90ICpyZXN1bHQgPSBsaWJpbnRsX3Zhc253cHJpbnRmIChyZXN1bHRidWYsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYpCi0rCXsKLSsJICBpZiAobWF4bGVuZ3RoID4gMCkKLSsJICAgIHsKLSsJICAgICAgaWYgKGxlbmd0aCA8IG1heGxlbmd0aCkKLSsJCWFib3J0ICgpOwotKwkgICAgICBtZW1jcHkgKHJlc3VsdGJ1ZiwgcmVzdWx0LCAobWF4bGVuZ3RoIC0gMSkgKiBzaXplb2YgKHdjaGFyX3QpKTsKLSsJICAgICAgcmVzdWx0YnVmW21heGxlbmd0aCAtIDFdID0gMDsKLSsJICAgIH0KLSsJICBmcmVlIChyZXN1bHQpOwotKwkgIHJldHVybiAtMTsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmV0dXJuIGxlbmd0aDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3N3cHJpbnRmICh3Y2hhcl90ICpyZXN1bHRidWYsIHNpemVfdCBsZW5ndGgsIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdnN3cHJpbnRmIChyZXN1bHRidWYsIGxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsjZW5kaWYKLSsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wcmludGYtcGFyc2UuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wcmludGYtcGFyc2UuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjYyMjcwNzUwNCAtMDQwMAotQEAgLTAsMCArMSw1MzcgQEAKLSsvKiBGb3JtYXR0ZWQgb3V0cHV0IHRvIHN0cmluZ3MuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAsIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKy8qIFNwZWNpZmljYXRpb24uICAqLwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgaW5jbHVkZSAid3ByaW50Zi1wYXJzZS5oIgotKyNlbHNlCi0rIyBpbmNsdWRlICJwcmludGYtcGFyc2UuaCIKLSsjZW5kaWYKLSsKLSsvKiBHZXQgc2l6ZV90LCBOVUxMLiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rLyogR2V0IGludG1heF90LiAgKi8KLSsjaWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKLSsjIGluY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotKyNpZiBIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYCi0rIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNlbmRpZgotKwotKy8qIG1hbGxvYygpLCByZWFsbG9jKCksIGZyZWUoKS4gICovCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwotKy8qIENoZWNrZWQgc2l6ZV90IGNvbXB1dGF0aW9ucy4gICovCi0rI2luY2x1ZGUgInhzaXplLmgiCi0rCi0rI2lmIFdJREVfQ0hBUl9WRVJTSU9OCi0rIyBkZWZpbmUgUFJJTlRGX1BBUlNFIHdwcmludGZfcGFyc2UKLSsjIGRlZmluZSBDSEFSX1Qgd2NoYXJfdAotKyMgZGVmaW5lIERJUkVDVElWRSB3Y2hhcl90X2RpcmVjdGl2ZQotKyMgZGVmaW5lIERJUkVDVElWRVMgd2NoYXJfdF9kaXJlY3RpdmVzCi0rI2Vsc2UKLSsjIGRlZmluZSBQUklOVEZfUEFSU0UgcHJpbnRmX3BhcnNlCi0rIyBkZWZpbmUgQ0hBUl9UIGNoYXIKLSsjIGRlZmluZSBESVJFQ1RJVkUgY2hhcl9kaXJlY3RpdmUKLSsjIGRlZmluZSBESVJFQ1RJVkVTIGNoYXJfZGlyZWN0aXZlcwotKyNlbmRpZgotKwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZW5kaWYKLStpbnQKLStQUklOVEZfUEFSU0UgKGNvbnN0IENIQVJfVCAqZm9ybWF0LCBESVJFQ1RJVkVTICpkLCBhcmd1bWVudHMgKmEpCi0rewotKyAgY29uc3QgQ0hBUl9UICpjcCA9IGZvcm1hdDsJCS8qIHBvaW50ZXIgaW50byBmb3JtYXQgKi8KLSsgIHNpemVfdCBhcmdfcG9zbiA9IDA7CQkvKiBudW1iZXIgb2YgcmVndWxhciBhcmd1bWVudHMgY29uc3VtZWQgKi8KLSsgIHNpemVfdCBkX2FsbG9jYXRlZDsJCQkvKiBhbGxvY2F0ZWQgZWxlbWVudHMgb2YgZC0+ZGlyICovCi0rICBzaXplX3QgYV9hbGxvY2F0ZWQ7CQkJLyogYWxsb2NhdGVkIGVsZW1lbnRzIG9mIGEtPmFyZyAqLwotKyAgc2l6ZV90IG1heF93aWR0aF9sZW5ndGggPSAwOwotKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoID0gMDsKLSsKLSsgIGQtPmNvdW50ID0gMDsKLSsgIGRfYWxsb2NhdGVkID0gMTsKLSsgIGQtPmRpciA9IG1hbGxvYyAoZF9hbGxvY2F0ZWQgKiBzaXplb2YgKERJUkVDVElWRSkpOwotKyAgaWYgKGQtPmRpciA9PSBOVUxMKQotKyAgICAvKiBPdXQgb2YgbWVtb3J5LiAgKi8KLSsgICAgcmV0dXJuIC0xOwotKwotKyAgYS0+Y291bnQgPSAwOwotKyAgYV9hbGxvY2F0ZWQgPSAwOwotKyAgYS0+YXJnID0gTlVMTDsKLSsKLSsjZGVmaW5lIFJFR0lTVEVSX0FSRyhfaW5kZXhfLF90eXBlXykgXAotKyAgewkJCQkJCQkJCVwKLSsgICAgc2l6ZV90IG4gPSAoX2luZGV4Xyk7CQkJCQkJXAotKyAgICBpZiAobiA+PSBhX2FsbG9jYXRlZCkJCQkJCQlcCi0rICAgICAgewkJCQkJCQkJCVwKLSsJc2l6ZV90IG1lbW9yeV9zaXplOwkJCQkJCVwKLSsJYXJndW1lbnQgKm1lbW9yeTsJCQkJCQlcCi0rCQkJCQkJCQkJXAotKwlhX2FsbG9jYXRlZCA9IHh0aW1lcyAoYV9hbGxvY2F0ZWQsIDIpOwkJCQlcCi0rCWlmIChhX2FsbG9jYXRlZCA8PSBuKQkJCQkJCVwKLSsJICBhX2FsbG9jYXRlZCA9IHhzdW0gKG4sIDEpOwkJCQkJXAotKwltZW1vcnlfc2l6ZSA9IHh0aW1lcyAoYV9hbGxvY2F0ZWQsIHNpemVvZiAoYXJndW1lbnQpKTsJCVwKLSsJaWYgKHNpemVfb3ZlcmZsb3dfcCAobWVtb3J5X3NpemUpKQkJCQlcCi0rCSAgLyogT3ZlcmZsb3csIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeS4gICovCQkJXAotKwkgIGdvdG8gZXJyb3I7CQkJCQkJCVwKLSsJbWVtb3J5ID0gKGEtPmFyZwkJCQkJCVwKLSsJCSAgPyByZWFsbG9jIChhLT5hcmcsIG1lbW9yeV9zaXplKQkJCVwKLSsJCSAgOiBtYWxsb2MgKG1lbW9yeV9zaXplKSk7CQkJCVwKLSsJaWYgKG1lbW9yeSA9PSBOVUxMKQkJCQkJCVwKLSsJICAvKiBPdXQgb2YgbWVtb3J5LiAgKi8JCQkJCQlcCi0rCSAgZ290byBlcnJvcjsJCQkJCQkJXAotKwlhLT5hcmcgPSBtZW1vcnk7CQkJCQkJXAotKyAgICAgIH0JCQkJCQkJCQlcCi0rICAgIHdoaWxlIChhLT5jb3VudCA8PSBuKQkJCQkJCVwKLSsgICAgICBhLT5hcmdbYS0+Y291bnQrK10udHlwZSA9IFRZUEVfTk9ORTsJCQkJXAotKyAgICBpZiAoYS0+YXJnW25dLnR5cGUgPT0gVFlQRV9OT05FKQkJCQkJXAotKyAgICAgIGEtPmFyZ1tuXS50eXBlID0gKF90eXBlXyk7CQkJCQlcCi0rICAgIGVsc2UgaWYgKGEtPmFyZ1tuXS50eXBlICE9IChfdHlwZV8pKQkJCQlcCi0rICAgICAgLyogQW1iaWd1b3VzIHR5cGUgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQuICAqLwkJCVwKLSsgICAgICBnb3RvIGVycm9yOwkJCQkJCQlcCi0rICB9Ci0rCi0rICB3aGlsZSAoKmNwICE9ICdcMCcpCi0rICAgIHsKLSsgICAgICBDSEFSX1QgYyA9ICpjcCsrOwotKyAgICAgIGlmIChjID09ICclJykKLSsJewotKwkgIHNpemVfdCBhcmdfaW5kZXggPSBBUkdfTk9ORTsKLSsJICBESVJFQ1RJVkUgKmRwID0gJmQtPmRpcltkLT5jb3VudF07LyogcG9pbnRlciB0byBuZXh0IGRpcmVjdGl2ZSAqLwotKwotKwkgIC8qIEluaXRpYWxpemUgdGhlIG5leHQgZGlyZWN0aXZlLiAgKi8KLSsJICBkcC0+ZGlyX3N0YXJ0ID0gY3AgLSAxOwotKwkgIGRwLT5mbGFncyA9IDA7Ci0rCSAgZHAtPndpZHRoX3N0YXJ0ID0gTlVMTDsKLSsJICBkcC0+d2lkdGhfZW5kID0gTlVMTDsKLSsJICBkcC0+d2lkdGhfYXJnX2luZGV4ID0gQVJHX05PTkU7Ci0rCSAgZHAtPnByZWNpc2lvbl9zdGFydCA9IE5VTEw7Ci0rCSAgZHAtPnByZWNpc2lvbl9lbmQgPSBOVUxMOwotKwkgIGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID0gQVJHX05PTkU7Ci0rCSAgZHAtPmFyZ19pbmRleCA9IEFSR19OT05FOwotKwotKwkgIC8qIFRlc3QgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQuICAqLwotKwkgIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCi0rCSAgICB7Ci0rCSAgICAgIGNvbnN0IENIQVJfVCAqbnA7Ci0rCi0rCSAgICAgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJOwotKwkgICAgICBpZiAoKm5wID09ICckJykKLSsJCXsKLSsJCSAgc2l6ZV90IG4gPSAwOwotKwotKwkJICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKLSsJCSAgICBuID0geHN1bSAoeHRpbWVzIChuLCAxMCksICpucCAtICcwJyk7Ci0rCQkgIGlmIChuID09IDApCi0rCQkgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudCAwLiAgKi8KLSsJCSAgICBnb3RvIGVycm9yOwotKwkJICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKLSsJCSAgICAvKiBuIHRvbyBsYXJnZSwgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5IGxhdGVyLiAgKi8KLSsJCSAgICBnb3RvIGVycm9yOwotKwkJICBhcmdfaW5kZXggPSBuIC0gMTsKLSsJCSAgY3AgPSBucCArIDE7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgLyogUmVhZCB0aGUgZmxhZ3MuICAqLwotKwkgIGZvciAoOzspCi0rCSAgICB7Ci0rCSAgICAgIGlmICgqY3AgPT0gJ1wnJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfR1JPVVA7Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnLScpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX0xFRlQ7Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnKycpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX1NIT1dTSUdOOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJyAnKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19TUEFDRTsKLSsJCSAgY3ArKzsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoKmNwID09ICcjJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfQUxUOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJzAnKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19aRVJPOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlicmVhazsKLSsJICAgIH0KLSsKLSsJICAvKiBQYXJzZSB0aGUgZmllbGQgd2lkdGguICAqLwotKwkgIGlmICgqY3AgPT0gJyonKQotKwkgICAgewotKwkgICAgICBkcC0+d2lkdGhfc3RhcnQgPSBjcDsKLSsJICAgICAgY3ArKzsKLSsJICAgICAgZHAtPndpZHRoX2VuZCA9IGNwOwotKwkgICAgICBpZiAobWF4X3dpZHRoX2xlbmd0aCA8IDEpCi0rCQltYXhfd2lkdGhfbGVuZ3RoID0gMTsKLSsKLSsJICAgICAgLyogVGVzdCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudC4gICovCi0rCSAgICAgIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCi0rCQl7Ci0rCQkgIGNvbnN0IENIQVJfVCAqbnA7Ci0rCi0rCQkgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJICAgIDsKLSsJCSAgaWYgKCpucCA9PSAnJCcpCi0rCQkgICAgewotKwkJICAgICAgc2l6ZV90IG4gPSAwOwotKwotKwkJICAgICAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkJbiA9IHhzdW0gKHh0aW1lcyAobiwgMTApLCAqbnAgLSAnMCcpOwotKwkJICAgICAgaWYgKG4gPT0gMCkKLSsJCQkvKiBQb3NpdGlvbmFsIGFyZ3VtZW50IDAuICAqLwotKwkJCWdvdG8gZXJyb3I7Ci0rCQkgICAgICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKLSsJCQkvKiBuIHRvbyBsYXJnZSwgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5IGxhdGVyLiAgKi8KLSsJCQlnb3RvIGVycm9yOwotKwkJICAgICAgZHAtPndpZHRoX2FyZ19pbmRleCA9IG4gLSAxOwotKwkJICAgICAgY3AgPSBucCArIDE7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICBpZiAoZHAtPndpZHRoX2FyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCXsKLSsJCSAgZHAtPndpZHRoX2FyZ19pbmRleCA9IGFyZ19wb3NuKys7Ci0rCQkgIGlmIChkcC0+d2lkdGhfYXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJICAgIC8qIGFyZ19wb3NuIHdyYXBwZWQgYXJvdW5kLiAgKi8KLSsJCSAgICBnb3RvIGVycm9yOwotKwkJfQotKwkgICAgICBSRUdJU1RFUl9BUkcgKGRwLT53aWR0aF9hcmdfaW5kZXgsIFRZUEVfSU5UKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCi0rCSAgICB7Ci0rCSAgICAgIHNpemVfdCB3aWR0aF9sZW5ndGg7Ci0rCi0rCSAgICAgIGRwLT53aWR0aF9zdGFydCA9IGNwOwotKwkgICAgICBmb3IgKDsgKmNwID49ICcwJyAmJiAqY3AgPD0gJzknOyBjcCsrKQotKwkJOwotKwkgICAgICBkcC0+d2lkdGhfZW5kID0gY3A7Ci0rCSAgICAgIHdpZHRoX2xlbmd0aCA9IGRwLT53aWR0aF9lbmQgLSBkcC0+d2lkdGhfc3RhcnQ7Ci0rCSAgICAgIGlmIChtYXhfd2lkdGhfbGVuZ3RoIDwgd2lkdGhfbGVuZ3RoKQotKwkJbWF4X3dpZHRoX2xlbmd0aCA9IHdpZHRoX2xlbmd0aDsKLSsJICAgIH0KLSsKLSsJICAvKiBQYXJzZSB0aGUgcHJlY2lzaW9uLiAgKi8KLSsJICBpZiAoKmNwID09ICcuJykKLSsJICAgIHsKLSsJICAgICAgY3ArKzsKLSsJICAgICAgaWYgKCpjcCA9PSAnKicpCi0rCQl7Ci0rCQkgIGRwLT5wcmVjaXNpb25fc3RhcnQgPSBjcCAtIDE7Ci0rCQkgIGNwKys7Ci0rCQkgIGRwLT5wcmVjaXNpb25fZW5kID0gY3A7Ci0rCQkgIGlmIChtYXhfcHJlY2lzaW9uX2xlbmd0aCA8IDIpCi0rCQkgICAgbWF4X3ByZWNpc2lvbl9sZW5ndGggPSAyOwotKwotKwkJICAvKiBUZXN0IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgKi8KLSsJCSAgaWYgKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykKLSsJCSAgICB7Ci0rCQkgICAgICBjb25zdCBDSEFSX1QgKm5wOwotKwotKwkJICAgICAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkJOwotKwkJICAgICAgaWYgKCpucCA9PSAnJCcpCi0rCQkJewotKwkJCSAgc2l6ZV90IG4gPSAwOwotKwotKwkJCSAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkJICAgIG4gPSB4c3VtICh4dGltZXMgKG4sIDEwKSwgKm5wIC0gJzAnKTsKLSsJCQkgIGlmIChuID09IDApCi0rCQkJICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnQgMC4gICovCi0rCQkJICAgIGdvdG8gZXJyb3I7Ci0rCQkJICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKLSsJCQkgICAgLyogbiB0b28gbGFyZ2UsIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeQotKwkJCSAgICAgICBsYXRlci4gICovCi0rCQkJICAgIGdvdG8gZXJyb3I7Ci0rCQkJICBkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9IG4gLSAxOwotKwkJCSAgY3AgPSBucCArIDE7Ci0rCQkJfQotKwkJICAgIH0KLSsJCSAgaWYgKGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJICAgIHsKLSsJCSAgICAgIGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID0gYXJnX3Bvc24rKzsKLSsJCSAgICAgIGlmIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCQkvKiBhcmdfcG9zbiB3cmFwcGVkIGFyb3VuZC4gICovCi0rCQkJZ290byBlcnJvcjsKLSsJCSAgICB9Ci0rCQkgIFJFR0lTVEVSX0FSRyAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXgsIFRZUEVfSU5UKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJICBzaXplX3QgcHJlY2lzaW9uX2xlbmd0aDsKLSsKLSsJCSAgZHAtPnByZWNpc2lvbl9zdGFydCA9IGNwIC0gMTsKLSsJCSAgZm9yICg7ICpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JzsgY3ArKykKLSsJCSAgICA7Ci0rCQkgIGRwLT5wcmVjaXNpb25fZW5kID0gY3A7Ci0rCQkgIHByZWNpc2lvbl9sZW5ndGggPSBkcC0+cHJlY2lzaW9uX2VuZCAtIGRwLT5wcmVjaXNpb25fc3RhcnQ7Ci0rCQkgIGlmIChtYXhfcHJlY2lzaW9uX2xlbmd0aCA8IHByZWNpc2lvbl9sZW5ndGgpCi0rCQkgICAgbWF4X3ByZWNpc2lvbl9sZW5ndGggPSBwcmVjaXNpb25fbGVuZ3RoOwotKwkJfQotKwkgICAgfQotKwotKwkgIHsKLSsJICAgIGFyZ190eXBlIHR5cGU7Ci0rCi0rCSAgICAvKiBQYXJzZSBhcmd1bWVudCB0eXBlL3NpemUgc3BlY2lmaWVycy4gICovCi0rCSAgICB7Ci0rCSAgICAgIGludCBmbGFncyA9IDA7Ci0rCi0rCSAgICAgIGZvciAoOzspCi0rCQl7Ci0rCQkgIGlmICgqY3AgPT0gJ2gnKQotKwkJICAgIHsKLSsJCSAgICAgIGZsYWdzIHw9ICgxIDw8IChmbGFncyAmIDEpKTsKLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKwkJICBlbHNlIGlmICgqY3AgPT0gJ0wnKQotKwkJICAgIHsKLSsJCSAgICAgIGZsYWdzIHw9IDQ7Ci0rCQkgICAgICBjcCsrOwotKwkJICAgIH0KLSsJCSAgZWxzZSBpZiAoKmNwID09ICdsJykKLSsJCSAgICB7Ci0rCQkgICAgICBmbGFncyArPSA4OwotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rI2lmZGVmIEhBVkVfSU5UTUFYX1QKLSsJCSAgZWxzZSBpZiAoKmNwID09ICdqJykKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoc2l6ZW9mIChpbnRtYXhfdCkgPiBzaXplb2YgKGxvbmcpKQotKwkJCXsKLSsJCQkgIC8qIGludG1heF90ID0gbG9uZyBsb25nICovCi0rCQkJICBmbGFncyArPSAxNjsKLSsJCQl9Ci0rCQkgICAgICBlbHNlIGlmIChzaXplb2YgKGludG1heF90KSA+IHNpemVvZiAoaW50KSkKLSsJCQl7Ci0rCQkJICAvKiBpbnRtYXhfdCA9IGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDg7Ci0rCQkJfQotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rI2VuZGlmCi0rCQkgIGVsc2UgaWYgKCpjcCA9PSAneicgfHwgKmNwID09ICdaJykKLSsJCSAgICB7Ci0rCQkgICAgICAvKiAneicgaXMgc3RhbmRhcmRpemVkIGluIElTTyBDIDk5LCBidXQgZ2xpYmMgdXNlcyAnWicKLSsJCQkgYmVjYXVzZSB0aGUgd2FybmluZyBmYWNpbGl0eSBpbiBnY2MtMi45NS4yIHVuZGVyc3RhbmRzCi0rCQkJIG9ubHkgJ1onIChzZWUgZ2NjLTIuOTUuMi9nY2MvYy1jb21tb24uYzoxNzg0KS4gICovCi0rCQkgICAgICBpZiAoc2l6ZW9mIChzaXplX3QpID4gc2l6ZW9mIChsb25nKSkKLSsJCQl7Ci0rCQkJICAvKiBzaXplX3QgPSBsb25nIGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDE2OwotKwkJCX0KLSsJCSAgICAgIGVsc2UgaWYgKHNpemVvZiAoc2l6ZV90KSA+IHNpemVvZiAoaW50KSkKLSsJCQl7Ci0rCQkJICAvKiBzaXplX3QgPSBsb25nICovCi0rCQkJICBmbGFncyArPSA4OwotKwkJCX0KLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKwkJICBlbHNlIGlmICgqY3AgPT0gJ3QnKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChzaXplb2YgKHB0cmRpZmZfdCkgPiBzaXplb2YgKGxvbmcpKQotKwkJCXsKLSsJCQkgIC8qIHB0cmRpZmZfdCA9IGxvbmcgbG9uZyAqLwotKwkJCSAgZmxhZ3MgKz0gMTY7Ci0rCQkJfQotKwkJICAgICAgZWxzZSBpZiAoc2l6ZW9mIChwdHJkaWZmX3QpID4gc2l6ZW9mIChpbnQpKQotKwkJCXsKLSsJCQkgIC8qIHB0cmRpZmZfdCA9IGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDg7Ci0rCQkJfQotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rCQkgIGVsc2UKLSsJCSAgICBicmVhazsKLSsJCX0KLSsKLSsJICAgICAgLyogUmVhZCB0aGUgY29udmVyc2lvbiBjaGFyYWN0ZXIuICAqLwotKwkgICAgICBjID0gKmNwKys7Ci0rCSAgICAgIHN3aXRjaCAoYykKLSsJCXsKLSsJCWNhc2UgJ2QnOiBjYXNlICdpJzoKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgaWYgKGZsYWdzID49IDE2IHx8IChmbGFncyAmIDQpKQotKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdMT05HSU5UOwotKwkJICBlbHNlCi0rI2VuZGlmCi0rCQkgIGlmIChmbGFncyA+PSA4KQotKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdJTlQ7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMikKLSsJCSAgICB0eXBlID0gVFlQRV9TQ0hBUjsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAxKQotKwkJICAgIHR5cGUgPSBUWVBFX1NIT1JUOwotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfSU5UOwotKwkJICBicmVhazsKLSsJCWNhc2UgJ28nOiBjYXNlICd1JzogY2FzZSAneCc6IGNhc2UgJ1gnOgotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICBpZiAoZmxhZ3MgPj0gMTYgfHwgKGZsYWdzICYgNCkpCi0rCQkgICAgdHlwZSA9IFRZUEVfVUxPTkdMT05HSU5UOwotKwkJICBlbHNlCi0rI2VuZGlmCi0rCQkgIGlmIChmbGFncyA+PSA4KQotKwkJICAgIHR5cGUgPSBUWVBFX1VMT05HSU5UOwotKwkJICBlbHNlIGlmIChmbGFncyAmIDIpCi0rCQkgICAgdHlwZSA9IFRZUEVfVUNIQVI7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMSkKLSsJCSAgICB0eXBlID0gVFlQRV9VU0hPUlQ7Ci0rCQkgIGVsc2UKLSsJCSAgICB0eXBlID0gVFlQRV9VSU5UOwotKwkJICBicmVhazsKLSsJCWNhc2UgJ2YnOiBjYXNlICdGJzogY2FzZSAnZSc6IGNhc2UgJ0UnOiBjYXNlICdnJzogY2FzZSAnRyc6Ci0rCQljYXNlICdhJzogY2FzZSAnQSc6Ci0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsJCSAgaWYgKGZsYWdzID49IDE2IHx8IChmbGFncyAmIDQpKQotKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdET1VCTEU7Ci0rCQkgIGVsc2UKLSsjZW5kaWYKLSsJCSAgdHlwZSA9IFRZUEVfRE9VQkxFOwotKwkJICBicmVhazsKLSsJCWNhc2UgJ2MnOgotKwkJICBpZiAoZmxhZ3MgPj0gOCkKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsJCSAgICB0eXBlID0gVFlQRV9XSURFX0NIQVI7Ci0rI2Vsc2UKLSsJCSAgICBnb3RvIGVycm9yOwotKyNlbmRpZgotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfQ0hBUjsKLSsJCSAgYnJlYWs7Ci0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rCQljYXNlICdDJzoKLSsJCSAgdHlwZSA9IFRZUEVfV0lERV9DSEFSOwotKwkJICBjID0gJ2MnOwotKwkJICBicmVhazsKLSsjZW5kaWYKLSsJCWNhc2UgJ3MnOgotKwkJICBpZiAoZmxhZ3MgPj0gOCkKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rCQkgICAgdHlwZSA9IFRZUEVfV0lERV9TVFJJTkc7Ci0rI2Vsc2UKLSsJCSAgICBnb3RvIGVycm9yOwotKyNlbmRpZgotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfU1RSSU5HOwotKwkJICBicmVhazsKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rCQljYXNlICdTJzoKLSsJCSAgdHlwZSA9IFRZUEVfV0lERV9TVFJJTkc7Ci0rCQkgIGMgPSAncyc7Ci0rCQkgIGJyZWFrOwotKyNlbmRpZgotKwkJY2FzZSAncCc6Ci0rCQkgIHR5cGUgPSBUWVBFX1BPSU5URVI7Ci0rCQkgIGJyZWFrOwotKwkJY2FzZSAnbic6Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKLSsJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9MT05HTE9OR0lOVF9QT0lOVEVSOwotKwkJICBlbHNlCi0rI2VuZGlmCi0rCQkgIGlmIChmbGFncyA+PSA4KQotKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX0xPTkdJTlRfUE9JTlRFUjsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAyKQotKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX1NDSEFSX1BPSU5URVI7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMSkKLSsJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSOwotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfQ09VTlRfSU5UX1BPSU5URVI7Ci0rCQkgIGJyZWFrOwotKwkJY2FzZSAnJSc6Ci0rCQkgIHR5cGUgPSBUWVBFX05PTkU7Ci0rCQkgIGJyZWFrOwotKwkJZGVmYXVsdDoKLSsJCSAgLyogVW5rbm93biBjb252ZXJzaW9uIGNoYXJhY3Rlci4gICovCi0rCQkgIGdvdG8gZXJyb3I7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgICBpZiAodHlwZSAhPSBUWVBFX05PTkUpCi0rCSAgICAgIHsKLSsJCWRwLT5hcmdfaW5kZXggPSBhcmdfaW5kZXg7Ci0rCQlpZiAoZHAtPmFyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCSAgewotKwkJICAgIGRwLT5hcmdfaW5kZXggPSBhcmdfcG9zbisrOwotKwkJICAgIGlmIChkcC0+YXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJICAgICAgLyogYXJnX3Bvc24gd3JhcHBlZCBhcm91bmQuICAqLwotKwkJICAgICAgZ290byBlcnJvcjsKLSsJCSAgfQotKwkJUkVHSVNURVJfQVJHIChkcC0+YXJnX2luZGV4LCB0eXBlKTsKLSsJICAgICAgfQotKwkgICAgZHAtPmNvbnZlcnNpb24gPSBjOwotKwkgICAgZHAtPmRpcl9lbmQgPSBjcDsKLSsJICB9Ci0rCi0rCSAgZC0+Y291bnQrKzsKLSsJICBpZiAoZC0+Y291bnQgPj0gZF9hbGxvY2F0ZWQpCi0rCSAgICB7Ci0rCSAgICAgIHNpemVfdCBtZW1vcnlfc2l6ZTsKLSsJICAgICAgRElSRUNUSVZFICptZW1vcnk7Ci0rCi0rCSAgICAgIGRfYWxsb2NhdGVkID0geHRpbWVzIChkX2FsbG9jYXRlZCwgMik7Ci0rCSAgICAgIG1lbW9yeV9zaXplID0geHRpbWVzIChkX2FsbG9jYXRlZCwgc2l6ZW9mIChESVJFQ1RJVkUpKTsKLSsJICAgICAgaWYgKHNpemVfb3ZlcmZsb3dfcCAobWVtb3J5X3NpemUpKQotKwkJLyogT3ZlcmZsb3csIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeS4gICovCi0rCQlnb3RvIGVycm9yOwotKwkgICAgICBtZW1vcnkgPSByZWFsbG9jIChkLT5kaXIsIG1lbW9yeV9zaXplKTsKLSsJICAgICAgaWYgKG1lbW9yeSA9PSBOVUxMKQotKwkJLyogT3V0IG9mIG1lbW9yeS4gICovCi0rCQlnb3RvIGVycm9yOwotKwkgICAgICBkLT5kaXIgPSBtZW1vcnk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgZC0+ZGlyW2QtPmNvdW50XS5kaXJfc3RhcnQgPSBjcDsKLSsKLSsgIGQtPm1heF93aWR0aF9sZW5ndGggPSBtYXhfd2lkdGhfbGVuZ3RoOwotKyAgZC0+bWF4X3ByZWNpc2lvbl9sZW5ndGggPSBtYXhfcHJlY2lzaW9uX2xlbmd0aDsKLSsgIHJldHVybiAwOwotKwotK2Vycm9yOgotKyAgaWYgKGEtPmFyZykKLSsgICAgZnJlZSAoYS0+YXJnKTsKLSsgIGlmIChkLT5kaXIpCi0rICAgIGZyZWUgKGQtPmRpcik7Ci0rICByZXR1cm4gLTE7Ci0rfQotKwotKyN1bmRlZiBESVJFQ1RJVkVTCi0rI3VuZGVmIERJUkVDVElWRQotKyN1bmRlZiBDSEFSX1QKLSsjdW5kZWYgUFJJTlRGX1BBUlNFCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLXBhcnNlLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcHJpbnRmLXBhcnNlLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42Mjg3MDY1OTIgLTA0MDAKLUBAIC0wLDAgKzEsNzUgQEAKLSsvKiBQYXJzZSBwcmludGYgZm9ybWF0IHN0cmluZy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfUFJJTlRGX1BBUlNFX0gKLSsjZGVmaW5lIF9QUklOVEZfUEFSU0VfSAotKwotKyNpbmNsdWRlICJwcmludGYtYXJncy5oIgotKwotKwotKy8qIEZsYWdzICovCi0rI2RlZmluZSBGTEFHX0dST1VQCSAxCS8qICcgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19MRUZUCSAyCS8qIC0gZmxhZyAqLwotKyNkZWZpbmUgRkxBR19TSE9XU0lHTgkgNAkvKiArIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfU1BBQ0UJIDgJLyogc3BhY2UgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19BTFQJMTYJLyogIyBmbGFnICovCi0rI2RlZmluZSBGTEFHX1pFUk8JMzIKLSsKLSsvKiBhcmdfaW5kZXggdmFsdWUgaW5kaWNhdGluZyB0aGF0IG5vIGFyZ3VtZW50IGlzIGNvbnN1bWVkLiAgKi8KLSsjZGVmaW5lIEFSR19OT05FCSh+KHNpemVfdCkwKQotKwotKy8qIEEgcGFyc2VkIGRpcmVjdGl2ZS4gICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBjb25zdCBjaGFyKiBkaXJfc3RhcnQ7Ci0rICBjb25zdCBjaGFyKiBkaXJfZW5kOwotKyAgaW50IGZsYWdzOwotKyAgY29uc3QgY2hhciogd2lkdGhfc3RhcnQ7Ci0rICBjb25zdCBjaGFyKiB3aWR0aF9lbmQ7Ci0rICBzaXplX3Qgd2lkdGhfYXJnX2luZGV4OwotKyAgY29uc3QgY2hhciogcHJlY2lzaW9uX3N0YXJ0OwotKyAgY29uc3QgY2hhciogcHJlY2lzaW9uX2VuZDsKLSsgIHNpemVfdCBwcmVjaXNpb25fYXJnX2luZGV4OwotKyAgY2hhciBjb252ZXJzaW9uOyAvKiBkIGkgbyB1IHggWCBmIGUgRSBnIEcgYyBzIHAgbiBVICUgYnV0IG5vdCBDIFMgKi8KLSsgIHNpemVfdCBhcmdfaW5kZXg7Ci0rfQotK2NoYXJfZGlyZWN0aXZlOwotKwotKy8qIEEgcGFyc2VkIGZvcm1hdCBzdHJpbmcuICAqLwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgc2l6ZV90IGNvdW50OwotKyAgY2hhcl9kaXJlY3RpdmUgKmRpcjsKLSsgIHNpemVfdCBtYXhfd2lkdGhfbGVuZ3RoOwotKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoOwotK30KLStjaGFyX2RpcmVjdGl2ZXM7Ci0rCi0rCi0rLyogUGFyc2VzIHRoZSBmb3JtYXQgc3RyaW5nLiAgRmlsbHMgaW4gdGhlIG51bWJlciBOIG9mIGRpcmVjdGl2ZXMsIGFuZCBmaWxscwotKyAgIGluIGRpcmVjdGl2ZXNbMF0sIC4uLiwgZGlyZWN0aXZlc1tOLTFdLCBhbmQgc2V0cyBkaXJlY3RpdmVzW05dLmRpcl9zdGFydAotKyAgIHRvIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcuICBBbHNvIGZpbGxzIGluIHRoZSBhcmdfdHlwZSBmaWVsZHMgb2YgdGhlCi0rICAgYXJndW1lbnRzIGFuZCB0aGUgbmVlZGVkIGNvdW50IG9mIGFyZ3VtZW50cy4gICovCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbHNlCi0rZXh0ZXJuCi0rI2VuZGlmCi0raW50IHByaW50Zl9wYXJzZSAoY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyX2RpcmVjdGl2ZXMgKmQsIGFyZ3VtZW50cyAqYSk7Ci0rCi0rI2VuZGlmIC8qIF9QUklOVEZfUEFSU0VfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3JlZi1hZGQuc2luCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3JlZi1hZGQuc2luCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjMzNzA1ODMyIC0wNDAwCi1AQCAtMCwwICsxLDMxIEBACi0rIyBBZGQgdGhpcyBwYWNrYWdlIHRvIGEgbGlzdCBvZiByZWZlcmVuY2VzIHN0b3JlZCBpbiBhIHRleHQgZmlsZS4KLSsjCi0rIyAgIENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyAgIFVTQS4KLSsjCi0rIyBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPi4KLSsjCi0rL14jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogLyB7Ci0rICBzLyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOi8vCi0rICB0YQotKyAgOmEKLSsgIHMvIEBQQUNLQUdFQCAvIEBQQUNLQUdFQCAvCi0rICB0YgotKyAgcy8gJC8gQFBBQ0tBR0VAIC8KLSsgIDpiCi0rICBzL14vIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6LwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9yZWYtZGVsLnNpbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9yZWYtZGVsLnNpbgkyMDA0LTA5LTEyIDE0OjQwOjM0LjYzODcwNTA3MiAtMDQwMAotQEAgLTAsMCArMSwyNiBAQAotKyMgUmVtb3ZlIHRoaXMgcGFja2FnZSBmcm9tIGEgbGlzdCBvZiByZWZlcmVuY2VzIHN0b3JlZCBpbiBhIHRleHQgZmlsZS4KLSsjCi0rIyAgIENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyAgIFVTQS4KLSsjCi0rIyBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPi4KLSsjCi0rL14jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogLyB7Ci0rICBzLyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOi8vCi0rICBzLyBAUEFDS0FHRUAgLyAvCi0rICBzL14vIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6LwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9yZWxvY2F0YWJsZS5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3JlbG9jYXRhYmxlLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42NDQ3MDQxNjAgLTA0MDAKLUBAIC0wLDAgKzEsNDQ5IEBACi0rLyogUHJvdmlkZSByZWxvY2F0YWJsZSBwYWNrYWdlcy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4sIDIwMDMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RkaW8uaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3IgZ2V0bGluZSgpLgotKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQotKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KLSsjaWZuZGVmIF9HTlVfU09VUkNFCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaW5jbHVkZSAicmVsb2NhdGFibGUuaCIKLSsKLSsjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2lmZGVmIE5PX1hNQUxMT0MKLSsjIGRlZmluZSB4bWFsbG9jIG1hbGxvYwotKyNlbHNlCi0rIyBpbmNsdWRlICJ4YWxsb2MuaCIKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18KLSsjIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCi0rIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIERFUEVORFNfT05fTElCQ0hBUlNFVAotKyMgaW5jbHVkZSA8bGliY2hhcnNldC5oPgotKyNlbmRpZgotKyNpZiBERVBFTkRTX09OX0xJQklDT05WICYmIEhBVkVfSUNPTlYKLSsjIGluY2x1ZGUgPGljb252Lmg+Ci0rI2VuZGlmCi0rI2lmIERFUEVORFNfT05fTElCSU5UTCAmJiBFTkFCTEVfTkxTCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2VuZGlmCi0rCi0rLyogRmFrZWQgY2hlYXAgJ2Jvb2wnLiAgKi8KLSsjdW5kZWYgYm9vbAotKyN1bmRlZiBmYWxzZQotKyN1bmRlZiB0cnVlCi0rI2RlZmluZSBib29sIGludAotKyNkZWZpbmUgZmFsc2UgMAotKyNkZWZpbmUgdHJ1ZSAxCi0rCi0rLyogUGF0aG5hbWUgc3VwcG9ydC4KLSsgICBJU1NMQVNIKEMpICAgICAgICAgICB0ZXN0cyB3aGV0aGVyIEMgaXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3Rlci4KLSsgICBJU19QQVRIX1dJVEhfRElSKFApICB0ZXN0cyB3aGV0aGVyIFAgY29udGFpbnMgYSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbi4KLSsgKi8KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKLSsjIGRlZmluZSBIQVNfREVWSUNFKFApIFwKLSsgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAotKyAgICAgJiYgKFApWzFdID09ICc6JykKLSsjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIFwKLSsgICAgKHN0cmNociAoUCwgJy8nKSAhPSBOVUxMIHx8IHN0cmNociAoUCwgJ1xcJykgIT0gTlVMTCB8fCBIQVNfREVWSUNFIChQKSkKLSsjIGRlZmluZSBGSUxFU1lTVEVNX1BSRUZJWF9MRU4oUCkgKEhBU19ERVZJQ0UgKFApID8gMiA6IDApCi0rI2Vsc2UKLSsgIC8qIFVuaXggKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQotKyMgZGVmaW5lIElTX1BBVEhfV0lUSF9ESVIoUCkgKHN0cmNociAoUCwgJy8nKSAhPSBOVUxMKQotKyMgZGVmaW5lIEZJTEVTWVNURU1fUFJFRklYX0xFTihQKSAwCi0rI2VuZGlmCi0rCi0rLyogT3JpZ2luYWwgaW5zdGFsbGF0aW9uIHByZWZpeC4gICovCi0rc3RhdGljIGNoYXIgKm9yaWdfcHJlZml4OwotK3N0YXRpYyBzaXplX3Qgb3JpZ19wcmVmaXhfbGVuOwotKy8qIEN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeC4gICovCi0rc3RhdGljIGNoYXIgKmN1cnJfcHJlZml4OwotK3N0YXRpYyBzaXplX3QgY3Vycl9wcmVmaXhfbGVuOwotKy8qIFRoZXNlIHByZWZpeGVzIGRvIG5vdCBlbmQgaW4gYSBzbGFzaC4gIEFueXRoaW5nIHRoYXQgd2lsbCBiZSBjb25jYXRlbmF0ZWQKLSsgICB0byB0aGVtIG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoLiAgKi8KLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGlzIG1vZHVsZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rc3RhdGljIHZvaWQKLStzZXRfdGhpc19yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXhfYXJnLAotKwkJCSAgICBjb25zdCBjaGFyICpjdXJyX3ByZWZpeF9hcmcpCi0rewotKyAgaWYgKG9yaWdfcHJlZml4X2FyZyAhPSBOVUxMICYmIGN1cnJfcHJlZml4X2FyZyAhPSBOVUxMCi0rICAgICAgLyogT3B0aW1pemF0aW9uOiBpZiBvcmlnX3ByZWZpeCBhbmQgY3Vycl9wcmVmaXggYXJlIGVxdWFsLCB0aGUKLSsJIHJlbG9jYXRpb24gaXMgYSBub3AuICAqLwotKyAgICAgICYmIHN0cmNtcCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpICE9IDApCi0rICAgIHsKLSsgICAgICAvKiBEdXBsaWNhdGUgdGhlIGFyZ3VtZW50IHN0cmluZ3MuICAqLwotKyAgICAgIGNoYXIgKm1lbW9yeTsKLSsKLSsgICAgICBvcmlnX3ByZWZpeF9sZW4gPSBzdHJsZW4gKG9yaWdfcHJlZml4X2FyZyk7Ci0rICAgICAgY3Vycl9wcmVmaXhfbGVuID0gc3RybGVuIChjdXJyX3ByZWZpeF9hcmcpOwotKyAgICAgIG1lbW9yeSA9IChjaGFyICopIHhtYWxsb2MgKG9yaWdfcHJlZml4X2xlbiArIDEgKyBjdXJyX3ByZWZpeF9sZW4gKyAxKTsKLSsjaWZkZWYgTk9fWE1BTExPQwotKyAgICAgIGlmIChtZW1vcnkgIT0gTlVMTCkKLSsjZW5kaWYKLSsJewotKwkgIG1lbWNweSAobWVtb3J5LCBvcmlnX3ByZWZpeF9hcmcsIG9yaWdfcHJlZml4X2xlbiArIDEpOwotKwkgIG9yaWdfcHJlZml4ID0gbWVtb3J5OwotKwkgIG1lbW9yeSArPSBvcmlnX3ByZWZpeF9sZW4gKyAxOwotKwkgIG1lbWNweSAobWVtb3J5LCBjdXJyX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2xlbiArIDEpOwotKwkgIGN1cnJfcHJlZml4ID0gbWVtb3J5OwotKwkgIHJldHVybjsKLSsJfQotKyAgICB9Ci0rICBvcmlnX3ByZWZpeCA9IE5VTEw7Ci0rICBjdXJyX3ByZWZpeCA9IE5VTEw7Ci0rICAvKiBEb24ndCB3b3JyeSBhYm91dCB3YXN0ZWQgbWVtb3J5IGhlcmUgLSB0aGlzIGZ1bmN0aW9uIGlzIHVzdWFsbHkgb25seQotKyAgICAgY2FsbGVkIG9uY2UuICAqLwotK30KLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGUgcGFja2FnZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rdm9pZAotK3NldF9yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXhfYXJnLCBjb25zdCBjaGFyICpjdXJyX3ByZWZpeF9hcmcpCi0rewotKyAgc2V0X3RoaXNfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKTsKLSsKLSsgIC8qIE5vdyBub3RpZnkgYWxsIGRlcGVuZGVudCBsaWJyYXJpZXMuICAqLwotKyNpZiBERVBFTkRTX09OX0xJQkNIQVJTRVQKLSsgIGxpYmNoYXJzZXRfc2V0X3JlbG9jYXRpb25fcHJlZml4IChvcmlnX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2FyZyk7Ci0rI2VuZGlmCi0rI2lmIERFUEVORFNfT05fTElCSUNPTlYgJiYgSEFWRV9JQ09OViAmJiBfTElCSUNPTlZfVkVSU0lPTiA+PSAweDAxMDkKLSsgIGxpYmljb252X3NldF9yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOwotKyNlbmRpZgotKyNpZiBERVBFTkRTX09OX0xJQklOVEwgJiYgRU5BQkxFX05MUyAmJiBkZWZpbmVkIGxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4Ci0rICBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOwotKyNlbmRpZgotK30KLSsKLSsjaWYgIWRlZmluZWQgSU5fTElCUkFSWSB8fCAoZGVmaW5lZCBQSUMgJiYgZGVmaW5lZCBJTlNUQUxMRElSKQotKwotKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uOgotKyAgIENvbXB1dGVzIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXgsIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotKyAgIGluc3RhbGxhdGlvbiBwcmVmaXgsIHRoZSBvcmlnaW5hbCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9mIGEgcGFydGljdWxhcgotKyAgIGZpbGUsIGFuZCB0aGUgY3VycmVudCBwYXRobmFtZSBvZiB0aGlzIGZpbGUuICBSZXR1cm5zIE5VTEwgdXBvbiBmYWlsdXJlLiAgKi8KLSsjaWZkZWYgSU5fTElCUkFSWQotKyNkZWZpbmUgY29tcHV0ZV9jdXJyX3ByZWZpeCBsb2NhbF9jb21wdXRlX2N1cnJfcHJlZml4Ci0rc3RhdGljCi0rI2VuZGlmCi0rY29uc3QgY2hhciAqCi0rY29tcHV0ZV9jdXJyX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19pbnN0YWxscHJlZml4LAotKwkJICAgICBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIsCi0rCQkgICAgIGNvbnN0IGNoYXIgKmN1cnJfcGF0aG5hbWUpCi0rewotKyAgY29uc3QgY2hhciAqY3Vycl9pbnN0YWxsZGlyOwotKyAgY29uc3QgY2hhciAqcmVsX2luc3RhbGxkaXI7Ci0rCi0rICBpZiAoY3Vycl9wYXRobmFtZSA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIERldGVybWluZSB0aGUgcmVsYXRpdmUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdGhlIHByZWZpeC4KLSsgICAgIFRoaXMgaXMgc2ltcGx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb3JpZ19pbnN0YWxscHJlZml4IGFuZAotKyAgICAgb3JpZ19pbnN0YWxsZGlyLiAgKi8KLSsgIGlmIChzdHJuY21wIChvcmlnX2luc3RhbGxwcmVmaXgsIG9yaWdfaW5zdGFsbGRpciwgc3RybGVuIChvcmlnX2luc3RhbGxwcmVmaXgpKQotKyAgICAgICE9IDApCi0rICAgIC8qIFNob3VsZG4ndCBoYXBwZW4gLSBub3RoaW5nIHNob3VsZCBiZSBpbnN0YWxsZWQgb3V0c2lkZSAkKHByZWZpeCkuICAqLwotKyAgICByZXR1cm4gTlVMTDsKLSsgIHJlbF9pbnN0YWxsZGlyID0gb3JpZ19pbnN0YWxsZGlyICsgc3RybGVuIChvcmlnX2luc3RhbGxwcmVmaXgpOwotKwotKyAgLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuICAqLwotKyAgewotKyAgICBjb25zdCBjaGFyICpwX2Jhc2UgPSBjdXJyX3BhdGhuYW1lICsgRklMRVNZU1RFTV9QUkVGSVhfTEVOIChjdXJyX3BhdGhuYW1lKTsKLSsgICAgY29uc3QgY2hhciAqcCA9IGN1cnJfcGF0aG5hbWUgKyBzdHJsZW4gKGN1cnJfcGF0aG5hbWUpOwotKyAgICBjaGFyICpxOwotKwotKyAgICB3aGlsZSAocCA+IHBfYmFzZSkKLSsgICAgICB7Ci0rCXAtLTsKLSsJaWYgKElTU0xBU0ggKCpwKSkKLSsJICBicmVhazsKLSsgICAgICB9Ci0rCi0rICAgIHEgPSAoY2hhciAqKSB4bWFsbG9jIChwIC0gY3Vycl9wYXRobmFtZSArIDEpOwotKyNpZmRlZiBOT19YTUFMTE9DCi0rICAgIGlmIChxID09IE5VTEwpCi0rICAgICAgcmV0dXJuIE5VTEw7Ci0rI2VuZGlmCi0rICAgIG1lbWNweSAocSwgY3Vycl9wYXRobmFtZSwgcCAtIGN1cnJfcGF0aG5hbWUpOwotKyAgICBxW3AgLSBjdXJyX3BhdGhuYW1lXSA9ICdcMCc7Ci0rICAgIGN1cnJfaW5zdGFsbGRpciA9IHE7Ci0rICB9Ci0rCi0rICAvKiBDb21wdXRlIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggYnkgcmVtb3ZpbmcgdGhlIHRyYWlsaW5nCi0rICAgICByZWxfaW5zdGFsbGRpciBmcm9tIGl0LiAgKi8KLSsgIHsKLSsgICAgY29uc3QgY2hhciAqcnAgPSByZWxfaW5zdGFsbGRpciArIHN0cmxlbiAocmVsX2luc3RhbGxkaXIpOwotKyAgICBjb25zdCBjaGFyICpjcCA9IGN1cnJfaW5zdGFsbGRpciArIHN0cmxlbiAoY3Vycl9pbnN0YWxsZGlyKTsKLSsgICAgY29uc3QgY2hhciAqY3BfYmFzZSA9Ci0rICAgICAgY3Vycl9pbnN0YWxsZGlyICsgRklMRVNZU1RFTV9QUkVGSVhfTEVOIChjdXJyX2luc3RhbGxkaXIpOwotKwotKyAgICB3aGlsZSAocnAgPiByZWxfaW5zdGFsbGRpciAmJiBjcCA+IGNwX2Jhc2UpCi0rICAgICAgewotKwlib29sIHNhbWUgPSBmYWxzZTsKLSsJY29uc3QgY2hhciAqcnBpID0gcnA7Ci0rCWNvbnN0IGNoYXIgKmNwaSA9IGNwOwotKwotKwl3aGlsZSAocnBpID4gcmVsX2luc3RhbGxkaXIgJiYgY3BpID4gY3BfYmFzZSkKLSsJICB7Ci0rCSAgICBycGktLTsKLSsJICAgIGNwaS0tOwotKwkgICAgaWYgKElTU0xBU0ggKCpycGkpIHx8IElTU0xBU0ggKCpjcGkpKQotKwkgICAgICB7Ci0rCQlpZiAoSVNTTEFTSCAoKnJwaSkgJiYgSVNTTEFTSCAoKmNwaSkpCi0rCQkgIHNhbWUgPSB0cnVlOwotKwkJYnJlYWs7Ci0rCSAgICAgIH0KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rCSAgICAvKiBXaW4zMiwgT1MvMiwgRE9TIC0gY2FzZSBpbnNpZ25pZmljYW50IGZpbGVzeXN0ZW0gKi8KLSsJICAgIGlmICgoKnJwaSA+PSAnYScgJiYgKnJwaSA8PSAneicgPyAqcnBpIC0gJ2EnICsgJ0EnIDogKnJwaSkKLSsJCSE9ICgqY3BpID49ICdhJyAmJiAqY3BpIDw9ICd6JyA/ICpjcGkgLSAnYScgKyAnQScgOiAqY3BpKSkKLSsJICAgICAgYnJlYWs7Ci0rI2Vsc2UKLSsJICAgIGlmICgqcnBpICE9ICpjcGkpCi0rCSAgICAgIGJyZWFrOwotKyNlbmRpZgotKwkgIH0KLSsJaWYgKCFzYW1lKQotKwkgIGJyZWFrOwotKwkvKiBUaGUgbGFzdCBwYXRobmFtZSBjb21wb25lbnQgd2FzIHRoZSBzYW1lLiAgb3BpIGFuZCBjcGkgbm93IHBvaW50Ci0rCSAgIHRvIHRoZSBzbGFzaCBiZWZvcmUgaXQuICAqLwotKwlycCA9IHJwaTsKLSsJY3AgPSBjcGk7Ci0rICAgICAgfQotKwotKyAgICBpZiAocnAgPiByZWxfaW5zdGFsbGRpcikKLSsgICAgICAvKiBVbmV4cGVjdGVkOiBUaGUgY3Vycl9pbnN0YWxsZGlyIGRvZXMgbm90IGVuZCB3aXRoIHJlbF9pbnN0YWxsZGlyLiAgKi8KLSsgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgewotKyAgICAgIHNpemVfdCBjdXJyX3ByZWZpeF9sZW4gPSBjcCAtIGN1cnJfaW5zdGFsbGRpcjsKLSsgICAgICBjaGFyICpjdXJyX3ByZWZpeDsKLSsKLSsgICAgICBjdXJyX3ByZWZpeCA9IChjaGFyICopIHhtYWxsb2MgKGN1cnJfcHJlZml4X2xlbiArIDEpOwotKyNpZmRlZiBOT19YTUFMTE9DCi0rICAgICAgaWYgKGN1cnJfcHJlZml4ID09IE5VTEwpCi0rCXJldHVybiBOVUxMOwotKyNlbmRpZgotKyAgICAgIG1lbWNweSAoY3Vycl9wcmVmaXgsIGN1cnJfaW5zdGFsbGRpciwgY3Vycl9wcmVmaXhfbGVuKTsKLSsgICAgICBjdXJyX3ByZWZpeFtjdXJyX3ByZWZpeF9sZW5dID0gJ1wwJzsKLSsKLSsgICAgICByZXR1cm4gY3Vycl9wcmVmaXg7Ci0rICAgIH0KLSsgIH0KLSt9Ci0rCi0rI2VuZGlmIC8qICFJTl9MSUJSQVJZIHx8IFBJQyAqLwotKwotKyNpZiBkZWZpbmVkIFBJQyAmJiBkZWZpbmVkIElOU1RBTExESVIKLSsKLSsvKiBGdWxsIHBhdGhuYW1lIG9mIHNoYXJlZCBsaWJyYXJ5LCBvciBOVUxMLiAgKi8KLStzdGF0aWMgY2hhciAqc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWU7Ci0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCi0rCi0rLyogRGV0ZXJtaW5lIHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSB3aGVuIGl0IGlzIGxvYWRlZC4gICovCi0rCi0rQk9PTCBXSU5BUEkKLStEbGxNYWluIChISU5TVEFOQ0UgbW9kdWxlX2hhbmRsZSwgRFdPUkQgZXZlbnQsIExQVk9JRCByZXNlcnZlZCkKLSt7Ci0rICAodm9pZCkgcmVzZXJ2ZWQ7Ci0rCi0rICBpZiAoZXZlbnQgPT0gRExMX1BST0NFU1NfQVRUQUNIKQotKyAgICB7Ci0rICAgICAgLyogVGhlIERMTCBpcyBiZWluZyBsb2FkZWQgaW50byBhbiBhcHBsaWNhdGlvbidzIGFkZHJlc3MgcmFuZ2UuICAqLwotKyAgICAgIHN0YXRpYyBjaGFyIGxvY2F0aW9uW01BWF9QQVRIXTsKLSsKLSsgICAgICBpZiAoIUdldE1vZHVsZUZpbGVOYW1lIChtb2R1bGVfaGFuZGxlLCBsb2NhdGlvbiwgc2l6ZW9mIChsb2NhdGlvbikpKQotKwkvKiBTaG91bGRuJ3QgaGFwcGVuLiAgKi8KLSsJcmV0dXJuIEZBTFNFOwotKwotKyAgICAgIGlmICghSVNfUEFUSF9XSVRIX0RJUiAobG9jYXRpb24pKQotKwkvKiBTaG91bGRuJ3QgaGFwcGVuLiAgKi8KLSsJcmV0dXJuIEZBTFNFOwotKwotKyAgICAgIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lID0gc3RyZHVwIChsb2NhdGlvbik7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLSsjZWxzZSAvKiBVbml4ICovCi0rCi0rc3RhdGljIHZvaWQKLStmaW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lICgpCi0rewotKyNpZiBkZWZpbmVkIF9fbGludXhfXyAmJiBfX0dMSUJDX18gPj0gMgotKyAgLyogTGludXggaGFzIC9wcm9jL3NlbGYvbWFwcy4gZ2xpYmMgMiBoYXMgdGhlIGdldGxpbmUoKSBmdW5jdGlvbi4gICovCi0rICBGSUxFICpmcDsKLSsKLSsgIC8qIE9wZW4gdGhlIGN1cnJlbnQgcHJvY2VzcycgbWFwcyBmaWxlLiAgSXQgZGVzY3JpYmVzIG9uZSBWTUEgcGVyIGxpbmUuICAqLwotKyAgZnAgPSBmb3BlbiAoIi9wcm9jL3NlbGYvbWFwcyIsICJyIik7Ci0rICBpZiAoZnApCi0rICAgIHsKLSsgICAgICB1bnNpZ25lZCBsb25nIGFkZHJlc3MgPSAodW5zaWduZWQgbG9uZykgJmZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWU7Ci0rICAgICAgZm9yICg7OykKLSsJewotKwkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKLSsJICBpbnQgYzsKLSsKLSsJICBpZiAoZnNjYW5mIChmcCwgIiVseC0lbHgiLCAmc3RhcnQsICZlbmQpICE9IDIpCi0rCSAgICBicmVhazsKLSsJICBpZiAoYWRkcmVzcyA+PSBzdGFydCAmJiBhZGRyZXNzIDw9IGVuZCAtIDEpCi0rCSAgICB7Ci0rCSAgICAgIC8qIEZvdW5kIGl0LiAgTm93IHNlZSBpZiB0aGlzIGxpbmUgY29udGFpbnMgYSBmaWxlbmFtZS4gICovCi0rCSAgICAgIHdoaWxlIChjID0gZ2V0YyAoZnApLCBjICE9IEVPRiAmJiBjICE9ICdcbicgJiYgYyAhPSAnLycpCi0rCQljb250aW51ZTsKLSsJICAgICAgaWYgKGMgPT0gJy8nKQotKwkJewotKwkJICBzaXplX3Qgc2l6ZTsKLSsJCSAgaW50IGxlbjsKLSsKLSsJCSAgdW5nZXRjIChjLCBmcCk7Ci0rCQkgIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lID0gTlVMTDsgc2l6ZSA9IDA7Ci0rCQkgIGxlbiA9IGdldGxpbmUgKCZzaGFyZWRfbGlicmFyeV9mdWxsbmFtZSwgJnNpemUsIGZwKTsKLSsJCSAgaWYgKGxlbiA+PSAwKQotKwkJICAgIHsKLSsJCSAgICAgIC8qIFN1Y2Nlc3M6IGZpbGxlZCBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZS4gICovCi0rCQkgICAgICBpZiAobGVuID4gMCAmJiBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZVtsZW4gLSAxXSA9PSAnXG4nKQotKwkJCXNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lW2xlbiAtIDFdID0gJ1wwJzsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwkgIHdoaWxlIChjID0gZ2V0YyAoZnApLCBjICE9IEVPRiAmJiBjICE9ICdcbicpCi0rCSAgICBjb250aW51ZTsKLSsJfQotKyAgICAgIGZjbG9zZSAoZnApOwotKyAgICB9Ci0rI2VuZGlmCi0rfQotKwotKyNlbmRpZiAvKiBXSU4zMiAvIFVuaXggKi8KLSsKLSsvKiBSZXR1cm4gdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGN1cnJlbnQgc2hhcmVkIGxpYnJhcnkuCi0rICAgUmV0dXJuIE5VTEwgaWYgdW5rbm93bi4KLSsgICBHdWFyYW50ZWVkIHRvIHdvcmsgb25seSBvbiBMaW51eCBhbmQgV29lMzIuICAqLwotK3N0YXRpYyBjaGFyICoKLStnZXRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgKCkKLSt7Ci0rI2lmICEoZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18pCi0rICBzdGF0aWMgYm9vbCB0cmllZF9maW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lOwotKyAgaWYgKCF0cmllZF9maW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lKQotKyAgICB7Ci0rICAgICAgZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSAoKTsKLSsgICAgICB0cmllZF9maW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lID0gdHJ1ZTsKLSsgICAgfQotKyNlbmRpZgotKyAgcmV0dXJuIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lOwotK30KLSsKLSsjZW5kaWYgLyogUElDICovCi0rCi0rLyogUmV0dXJucyB0aGUgcGF0aG5hbWUsIHJlbG9jYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uCi0rICAgZGlyZWN0b3J5LiAgKi8KLStjb25zdCBjaGFyICoKLStyZWxvY2F0ZSAoY29uc3QgY2hhciAqcGF0aG5hbWUpCi0rewotKyNpZiBkZWZpbmVkIFBJQyAmJiBkZWZpbmVkIElOU1RBTExESVIKLSsgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7Ci0rCi0rICAvKiBJbml0aWFsaXphdGlvbiBjb2RlIGZvciBhIHNoYXJlZCBsaWJyYXJ5LiAgKi8KLSsgIGlmICghaW5pdGlhbGl6ZWQpCi0rICAgIHsKLSsgICAgICAvKiBBdCB0aGlzIHBvaW50LCBvcmlnX3ByZWZpeCBhbmQgY3Vycl9wcmVmaXggbGlrZWx5IGhhdmUgYWxyZWFkeSBiZWVuCi0rCSBzZXQgdGhyb3VnaCB0aGUgbWFpbiBwcm9ncmFtJ3Mgc2V0X3Byb2dyYW1fbmFtZV9hbmRfaW5zdGFsbGRpcgotKwkgZnVuY3Rpb24uICBUaGlzIGlzIHN1ZmZpY2llbnQgaW4gdGhlIGNhc2UgdGhhdCB0aGUgbGlicmFyeSBoYXMKLSsJIGluaXRpYWxseSBiZWVuIGluc3RhbGxlZCBpbiB0aGUgc2FtZSBvcmlnX3ByZWZpeC4gIEJ1dCB3ZSBjYW4gZG8KLSsJIGJldHRlciwgdG8gYWxzbyBjb3ZlciB0aGUgY2FzZXMgdGhhdCAxLiBpdCBoYXMgYmVlbiBpbnN0YWxsZWQKLSsJIGluIGEgZGlmZmVyZW50IHByZWZpeCBiZWZvcmUgYmVpbmcgbW92ZWQgdG8gb3JpZ19wcmVmaXggYW5kIChsYXRlcikKLSsJIHRvIGN1cnJfcHJlZml4LCAyLiB1bmxpa2UgdGhlIHByb2dyYW0sIGl0IGhhcyBub3QgbW92ZWQgYXdheSBmcm9tCi0rCSBvcmlnX3ByZWZpeC4gICovCi0rICAgICAgY29uc3QgY2hhciAqb3JpZ19pbnN0YWxscHJlZml4ID0gSU5TVEFMTFBSRUZJWDsKLSsgICAgICBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIgPSBJTlNUQUxMRElSOwotKyAgICAgIGNvbnN0IGNoYXIgKmN1cnJfcHJlZml4X2JldHRlcjsKLSsKLSsgICAgICBjdXJyX3ByZWZpeF9iZXR0ZXIgPQotKwljb21wdXRlX2N1cnJfcHJlZml4IChvcmlnX2luc3RhbGxwcmVmaXgsIG9yaWdfaW5zdGFsbGRpciwKLSsJCQkgICAgIGdldF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSAoKSk7Ci0rICAgICAgaWYgKGN1cnJfcHJlZml4X2JldHRlciA9PSBOVUxMKQotKwljdXJyX3ByZWZpeF9iZXR0ZXIgPSBjdXJyX3ByZWZpeDsKLSsKLSsgICAgICBzZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfaW5zdGFsbHByZWZpeCwgY3Vycl9wcmVmaXhfYmV0dGVyKTsKLSsKLSsgICAgICBpbml0aWFsaXplZCA9IDE7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsgIC8qIE5vdGU6IEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gcGVyZm9ybSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gaGVyZSwKLSsgICAgIGV2ZW4gZm9yIERPUy1saWtlIGZpbGVzeXN0ZW1zLCBiZWNhdXNlIHRoZSBwYXRobmFtZSBhcmd1bWVudCB3YXMKLSsgICAgIHR5cGljYWxseSBjcmVhdGVkIGZyb20gdGhlIHNhbWUgTWFrZWZpbGUgdmFyaWFibGUgYXMgb3JpZ19wcmVmaXggY2FtZQotKyAgICAgZnJvbS4gICovCi0rICBpZiAob3JpZ19wcmVmaXggIT0gTlVMTCAmJiBjdXJyX3ByZWZpeCAhPSBOVUxMCi0rICAgICAgJiYgc3RybmNtcCAocGF0aG5hbWUsIG9yaWdfcHJlZml4LCBvcmlnX3ByZWZpeF9sZW4pID09IDApCi0rICAgIHsKLSsgICAgICBpZiAocGF0aG5hbWVbb3JpZ19wcmVmaXhfbGVuXSA9PSAnXDAnKQotKwkvKiBwYXRobmFtZSBlcXVhbHMgb3JpZ19wcmVmaXguICAqLwotKwlyZXR1cm4gY3Vycl9wcmVmaXg7Ci0rICAgICAgaWYgKElTU0xBU0ggKHBhdGhuYW1lW29yaWdfcHJlZml4X2xlbl0pKQotKwl7Ci0rCSAgLyogcGF0aG5hbWUgc3RhcnRzIHdpdGggb3JpZ19wcmVmaXguICAqLwotKwkgIGNvbnN0IGNoYXIgKnBhdGhuYW1lX3RhaWwgPSAmcGF0aG5hbWVbb3JpZ19wcmVmaXhfbGVuXTsKLSsJICBjaGFyICpyZXN1bHQgPQotKwkgICAgKGNoYXIgKikgeG1hbGxvYyAoY3Vycl9wcmVmaXhfbGVuICsgc3RybGVuIChwYXRobmFtZV90YWlsKSArIDEpOwotKwotKyNpZmRlZiBOT19YTUFMTE9DCi0rCSAgaWYgKHJlc3VsdCAhPSBOVUxMKQotKyNlbmRpZgotKwkgICAgewotKwkgICAgICBtZW1jcHkgKHJlc3VsdCwgY3Vycl9wcmVmaXgsIGN1cnJfcHJlZml4X2xlbik7Ci0rCSAgICAgIHN0cmNweSAocmVzdWx0ICsgY3Vycl9wcmVmaXhfbGVuLCBwYXRobmFtZV90YWlsKTsKLSsJICAgICAgcmV0dXJuIHJlc3VsdDsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rICAvKiBOb3RoaW5nIHRvIHJlbG9jYXRlLiAgKi8KLSsgIHJldHVybiBwYXRobmFtZTsKLSt9Ci0rCi0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcmVsb2NhdGFibGUuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9yZWxvY2F0YWJsZS5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjUxNzAzMDk2IC0wNDAwCi1AQCAtMCwwICsxLDc3IEBACi0rLyogUHJvdmlkZSByZWxvY2F0YWJsZSBwYWNrYWdlcy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4sIDIwMDMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1JFTE9DQVRBQkxFX0gKLSsjZGVmaW5lIF9SRUxPQ0FUQUJMRV9ICi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rCi0rLyogVGhpcyBjYW4gYmUgZW5hYmxlZCB0aHJvdWdoIHRoZSBjb25maWd1cmUgLS1lbmFibGUtcmVsb2NhdGFibGUgb3B0aW9uLiAgKi8KLSsjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCi0rCi0rLyogV2hlbiBidWlsZGluZyBhIERMTCwgd2UgbXVzdCBleHBvcnQgc29tZSBmdW5jdGlvbnMuICBOb3RlIHRoYXQgYmVjYXVzZQotKyAgIHRoaXMgaXMgYSBwcml2YXRlIC5oIGZpbGUsIHdlIGRvbid0IG5lZWQgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotKyAgIGluIGFueSBjYXNlLiAgKi8KLSsjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBCVUlMRElOR19ETEwKLSsjIGRlZmluZSBSRUxPQ0FUQUJMRV9ETExfRVhQT1JURUQgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0rI2Vsc2UKLSsjIGRlZmluZSBSRUxPQ0FUQUJMRV9ETExfRVhQT1JURUQKLSsjZW5kaWYKLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGUgcGFja2FnZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rZXh0ZXJuIFJFTE9DQVRBQkxFX0RMTF9FWFBPUlRFRCB2b2lkCi0rICAgICAgIHNldF9yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXgsCi0rCQkJICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXgpOwotKwotKy8qIFJldHVybnMgdGhlIHBhdGhuYW1lLCByZWxvY2F0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbgotKyAgIGRpcmVjdG9yeS4gICovCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKiByZWxvY2F0ZSAoY29uc3QgY2hhciAqcGF0aG5hbWUpOwotKwotKy8qIE1lbW9yeSBtYW5hZ2VtZW50OiByZWxvY2F0ZSgpIGxlYWtzIG1lbW9yeSwgYmVjYXVzZSBpdCBoYXMgdG8gY29uc3RydWN0Ci0rICAgYSBmcmVzaCBwYXRobmFtZS4gIElmIHRoaXMgaXMgYSBwcm9ibGVtIGJlY2F1c2UgeW91ciBwcm9ncmFtIGNhbGxzCi0rICAgcmVsb2NhdGUoKSBmcmVxdWVudGx5LCB0aGluayBhYm91dCBjYWNoaW5nIHRoZSByZXN1bHQuICAqLwotKwotKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uOgotKyAgIENvbXB1dGVzIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXgsIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotKyAgIGluc3RhbGxhdGlvbiBwcmVmaXgsIHRoZSBvcmlnaW5hbCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9mIGEgcGFydGljdWxhcgotKyAgIGZpbGUsIGFuZCB0aGUgY3VycmVudCBwYXRobmFtZSBvZiB0aGlzIGZpbGUuICBSZXR1cm5zIE5VTEwgdXBvbiBmYWlsdXJlLiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqIGNvbXB1dGVfY3Vycl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbHByZWZpeCwKLSsJCQkJCSBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIsCi0rCQkJCQkgY29uc3QgY2hhciAqY3Vycl9wYXRobmFtZSk7Ci0rCi0rI2Vsc2UKLSsKLSsvKiBCeSBkZWZhdWx0LCB3ZSB1c2UgdGhlIGhhcmR3aXJlZCBwYXRobmFtZXMuICAqLwotKyNkZWZpbmUgcmVsb2NhdGUocGF0aG5hbWUpIChwYXRobmFtZSkKLSsKLSsjZW5kaWYKLSsKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9SRUxPQ0FUQUJMRV9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvdGV4dGRvbWFpbi5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3RleHRkb21haW4uYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjY1NjcwMjMzNiAtMDQwMAotQEAgLTEsNTEgKzEsNjAgQEAKLS0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGV4dGRvbWFpbigzKSBmdW5jdGlvbgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGV4dGRvbWFpbigzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotIAotICNpZmRlZiBfTElCQwotLSMgaW5jbHVkZSA8bGliaW50bC5oPgotKy8qIFdlIGhhdmUgdG8gaGFuZGxlIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucy4gICovCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rLyogUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpZiB0aGlzIGlzIG91dHNpZGUgZ2xpYmMuICAqLwotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfZGVmaW5lKENMQVNTLCBOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfd3Jsb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja191bmxvY2soTkFNRSkKLSsjZW5kaWYKLSsKLSsvKiBUaGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIHRoZSBzdGFuZGFsb25lIGxpYmludGwuYSBtdXN0IGhhdmUgZGlmZmVyZW50Ci0rICAgbmFtZXMgdGhhbiB0aGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIEdOVSBsaWJjLCBvdGhlcndpc2UgcHJvZ3JhbXMKLSsgICB1c2luZyBsaWJpbnRsLmEgY2Fubm90IGJlIGxpbmtlZCBzdGF0aWNhbGx5LiAgKi8KLSsjaWYgIWRlZmluZWQgX0xJQkMKLSsjIGRlZmluZSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4KLSsjIGRlZmluZSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4KLSAjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0gLyogTmFtZSBvZiB0aGUgZGVmYXVsdCB0ZXh0IGRvbWFpbi4gICovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXTsKLStleHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdIGF0dHJpYnV0ZV9oaWRkZW47Ci0gCi0gLyogRGVmYXVsdCB0ZXh0IGRvbWFpbiBpbiB3aGljaCBlbnRyaWVzIGZvciBnZXR0ZXh0KDMpIGFyZSB0byBiZSBmb3VuZC4gICovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotK2V4dGVybiBjb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBhdHRyaWJ1dGVfaGlkZGVuOwotIAotIAotIC8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLUBAIC01NCw1MCArNjMsNzYgQEAKLSAgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotICNpZmRlZiBfTElCQwotICMgZGVmaW5lIFRFWFRET01BSU4gX190ZXh0ZG9tYWluCi0tIyBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKLSsjIGlmbmRlZiBzdHJkdXAKLSsjICBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKLSsjIGVuZGlmCi0gI2Vsc2UKLS0jIGRlZmluZSBURVhURE9NQUlOIHRleHRkb21haW5fXwotKyMgZGVmaW5lIFRFWFRET01BSU4gbGliaW50bF90ZXh0ZG9tYWluCi0gI2VuZGlmCi0gCi0rLyogTG9jayB2YXJpYWJsZSB0byBwcm90ZWN0IHRoZSBnbG9iYWwgZGF0YSBpbiB0aGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4gICovCi0rX19saWJjX3J3bG9ja19kZWZpbmUgKGV4dGVybiwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKLSsKLSAvKiBTZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgdG8gRE9NQUlOTkFNRS4KLSAgICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgotICAgIElmIERPTUFJTk5BTUUgaXMgIiIsIHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9mICJtZXNzYWdlcyIuICAqLwotIGNoYXIgKgotLVRFWFRET01BSU4gKGRvbWFpbm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotK1RFWFRET01BSU4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpCi0gewotLSAgY2hhciAqb2xkOwotKyAgY2hhciAqbmV3X2RvbWFpbjsKLSsgIGNoYXIgKm9sZF9kb21haW47Ci0gCi0gICAvKiBBIE5VTEwgcG9pbnRlciByZXF1ZXN0cyB0aGUgY3VycmVudCBzZXR0aW5nLiAgKi8KLSAgIGlmIChkb21haW5uYW1lID09IE5VTEwpCi0gICAgIHJldHVybiAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSAKLS0gIG9sZCA9IChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotKyAgX19saWJjX3J3bG9ja193cmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsKLSsgIG9sZF9kb21haW4gPSAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSAKLSAgIC8qIElmIGRvbWFpbiBuYW1lIGlzIHRoZSBudWxsIHN0cmluZyBzZXQgdG8gZGVmYXVsdCBkb21haW4gIm1lc3NhZ2VzIi4gICovCi0gICBpZiAoZG9tYWlubmFtZVswXSA9PSAnXDAnCi0gICAgICAgfHwgc3RyY21wIChkb21haW5uYW1lLCBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikgPT0gMCkKLS0gICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKLSsgICAgewotKyAgICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47Ci0rICAgICAgbmV3X2RvbWFpbiA9IChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotKyAgICB9Ci0rICBlbHNlIGlmIChzdHJjbXAgKGRvbWFpbm5hbWUsIG9sZF9kb21haW4pID09IDApCi0rICAgIC8qIFRoaXMgY2FuIGhhcHBlbiBhbmQgcGVvcGxlIHdpbGwgdXNlIGl0IHRvIHNpZ25hbCB0aGF0IHNvbWUKLSsgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgY2hhbmdlZC4gICovCi0rICAgIG5ld19kb21haW4gPSBvbGRfZG9tYWluOwotICAgZWxzZQotICAgICB7Ci0gICAgICAgLyogSWYgdGhlIGZvbGxvd2luZyBtYWxsb2MgZmFpbHMgYF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluJwotIAkgd2lsbCBiZSBOVUxMLiAgVGhpcyB2YWx1ZSB3aWxsIGJlIHJldHVybmVkIGFuZCBzbyBzaWduYWxzIHdlCi0gCSBhcmUgb3V0IG9mIGNvcmUuICAqLwotICNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLS0gICAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IHN0cmR1cCAoZG9tYWlubmFtZSk7Ci0rICAgICAgbmV3X2RvbWFpbiA9IHN0cmR1cCAoZG9tYWlubmFtZSk7Ci0gI2Vsc2UKLSAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7Ci0tICAgICAgY2hhciAqY3AgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tICAgICAgaWYgKGNwICE9IE5VTEwpCi0tCW1lbWNweSAoY3AsIGRvbWFpbm5hbWUsIGxlbik7Ci0tICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBjcDsKLSsgICAgICBuZXdfZG9tYWluID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotKyAgICAgIGlmIChuZXdfZG9tYWluICE9IE5VTEwpCi0rCW1lbWNweSAobmV3X2RvbWFpbiwgZG9tYWlubmFtZSwgbGVuKTsKLSAjZW5kaWYKLSsKLSsgICAgICBpZiAobmV3X2RvbWFpbiAhPSBOVUxMKQotKwlfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IG5ld19kb21haW47Ci0gICAgIH0KLSAKLS0gIGlmIChvbGQgIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCi0tICAgIGZyZWUgKG9sZCk7Ci0rICAvKiBXZSB1c2UgdGhpcyBwb3NzaWJpbGl0eSB0byBzaWduYWwgYSBjaGFuZ2Ugb2YgdGhlIGxvYWRlZCBjYXRhbG9ncwotKyAgICAgc2luY2UgdGhpcyBpcyBtb3N0IGxpa2VseSB0aGUgY2FzZSBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgZWFzeSB3ZQotKyAgICAgdG8gZG8gaXQuICBEbyBpdCBvbmx5IHdoZW4gdGhlIGNhbGwgd2FzIHN1Y2Nlc3NmdWwuICAqLwotKyAgaWYgKG5ld19kb21haW4gIT0gTlVMTCkKLSsgICAgewotKyAgICAgICsrX25sX21zZ19jYXRfY250cjsKLSAKLS0gIHJldHVybiAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSsgICAgICBpZiAob2xkX2RvbWFpbiAhPSBuZXdfZG9tYWluICYmIG9sZF9kb21haW4gIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCi0rCWZyZWUgKG9sZF9kb21haW4pOwotKyAgICB9Ci0rCi0rICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotKwotKyAgcmV0dXJuIG5ld19kb21haW47Ci0gfQotIAotICNpZmRlZiBfTElCQwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3Zhc25wcmludGYuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC92YXNucHJpbnRmLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42NjI3MDE0MjQgLTA0MDAKLUBAIC0wLDAgKzEsODg3IEBACi0rLyogdnNwcmludGYgd2l0aCBhdXRvbWF0aWMgbWVtb3J5IGFsbG9jYXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RkaW8uaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3Igc25wcmludGYoKS4KLSsgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKLSsgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCi0rI2lmbmRlZiBfR05VX1NPVVJDRQotKyMgZGVmaW5lIF9HTlVfU09VUkNFICAgIDEKLSsjZW5kaWYKLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rI2lmbmRlZiBJTl9MSUJJTlRMCi0rIyBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaWYgV0lERV9DSEFSX1ZFUlNJT04KLSsjIGluY2x1ZGUgInZhc253cHJpbnRmLmgiCi0rI2Vsc2UKLSsjIGluY2x1ZGUgInZhc25wcmludGYuaCIKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4JLyogc25wcmludGYoKSwgc3ByaW50ZigpICovCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgkvKiBhYm9ydCgpLCBtYWxsb2MoKSwgcmVhbGxvYygpLCBmcmVlKCkgKi8KLSsjaW5jbHVkZSA8c3RyaW5nLmg+CS8qIG1lbWNweSgpLCBzdHJsZW4oKSAqLwotKyNpbmNsdWRlIDxlcnJuby5oPgkvKiBlcnJubyAqLwotKyNpbmNsdWRlIDxsaW1pdHMuaD4JLyogQ0hBUl9CSVQgKi8KLSsjaW5jbHVkZSA8ZmxvYXQuaD4JLyogREJMX01BWF9FWFAsIExEQkxfTUFYX0VYUCAqLwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgaW5jbHVkZSAid3ByaW50Zi1wYXJzZS5oIgotKyNlbHNlCi0rIyBpbmNsdWRlICJwcmludGYtcGFyc2UuaCIKLSsjZW5kaWYKLSsKLSsvKiBDaGVja2VkIHNpemVfdCBjb21wdXRhdGlvbnMuICAqLwotKyNpbmNsdWRlICJ4c2l6ZS5oIgotKwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsjIGlmZGVmIEhBVkVfV0NTTEVOCi0rIyAgZGVmaW5lIGxvY2FsX3djc2xlbiB3Y3NsZW4KLSsjIGVsc2UKLSsgICAvKiBTb2xhcmlzIDIuNS4xIGhhcyB3Y3NsZW4oKSBpbiBhIHNlcGFyYXRlIGxpYnJhcnkgbGlidy5zby4gVG8gYXZvaWQKLSsgICAgICBhIGRlcGVuZGVuY3kgdG93YXJkcyB0aGlzIGxpYnJhcnksIGhlcmUgaXMgYSBsb2NhbCBzdWJzdGl0dXRlLgotKyAgICAgIERlZmluZSB0aGlzIHN1YnN0aXR1dGUgb25seSBvbmNlLCBldmVuIGlmIHRoaXMgZmlsZSBpcyBpbmNsdWRlZAotKyAgICAgIHR3aWNlIGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuICAqLwotKyMgIGlmbmRlZiBsb2NhbF93Y3NsZW5fZGVmaW5lZAotKyMgICBkZWZpbmUgbG9jYWxfd2NzbGVuX2RlZmluZWQgMQotK3N0YXRpYyBzaXplX3QKLStsb2NhbF93Y3NsZW4gKGNvbnN0IHdjaGFyX3QgKnMpCi0rewotKyAgY29uc3Qgd2NoYXJfdCAqcHRyOwotKwotKyAgZm9yIChwdHIgPSBzOyAqcHRyICE9ICh3Y2hhcl90KSAwOyBwdHIrKykKLSsgICAgOwotKyAgcmV0dXJuIHB0ciAtIHM7Ci0rfQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgZGVmaW5lIFZBU05QUklOVEYgdmFzbndwcmludGYKLSsjIGRlZmluZSBDSEFSX1Qgd2NoYXJfdAotKyMgZGVmaW5lIERJUkVDVElWRSB3Y2hhcl90X2RpcmVjdGl2ZQotKyMgZGVmaW5lIERJUkVDVElWRVMgd2NoYXJfdF9kaXJlY3RpdmVzCi0rIyBkZWZpbmUgUFJJTlRGX1BBUlNFIHdwcmludGZfcGFyc2UKLSsjIGRlZmluZSBVU0VfU05QUklOVEYgMQotKyMgaWYgSEFWRV9ERUNMX19TTldQUklOVEYKLSsgICAvKiBPbiBXaW5kb3dzLCB0aGUgZnVuY3Rpb24gc3dwcmludGYoKSBoYXMgYSBkaWZmZXJlbnQgc2lnbmF0dXJlIHRoYW4KLSsgICAgICBvbiBVbml4OyB3ZSB1c2UgdGhlIF9zbndwcmludGYoKSBmdW5jdGlvbiBpbnN0ZWFkLiAgKi8KLSsjICBkZWZpbmUgU05QUklOVEYgX3Nud3ByaW50ZgotKyMgZWxzZQotKyAgIC8qIFVuaXguICAqLwotKyMgIGRlZmluZSBTTlBSSU5URiBzd3ByaW50ZgotKyMgZW5kaWYKLSsjZWxzZQotKyMgZGVmaW5lIFZBU05QUklOVEYgdmFzbnByaW50ZgotKyMgZGVmaW5lIENIQVJfVCBjaGFyCi0rIyBkZWZpbmUgRElSRUNUSVZFIGNoYXJfZGlyZWN0aXZlCi0rIyBkZWZpbmUgRElSRUNUSVZFUyBjaGFyX2RpcmVjdGl2ZXMKLSsjIGRlZmluZSBQUklOVEZfUEFSU0UgcHJpbnRmX3BhcnNlCi0rIyBkZWZpbmUgVVNFX1NOUFJJTlRGIChIQVZFX0RFQ0xfX1NOUFJJTlRGIHx8IEhBVkVfU05QUklOVEYpCi0rIyBpZiBIQVZFX0RFQ0xfX1NOUFJJTlRGCi0rICAgLyogV2luZG93cy4gICovCi0rIyAgZGVmaW5lIFNOUFJJTlRGIF9zbnByaW50ZgotKyMgZWxzZQotKyAgIC8qIFVuaXguICAqLwotKyMgIGRlZmluZSBTTlBSSU5URiBzbnByaW50ZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLStDSEFSX1QgKgotK1ZBU05QUklOVEYgKENIQVJfVCAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IENIQVJfVCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgRElSRUNUSVZFUyBkOwotKyAgYXJndW1lbnRzIGE7Ci0rCi0rICBpZiAoUFJJTlRGX1BBUlNFIChmb3JtYXQsICZkLCAmYSkgPCAwKQotKyAgICB7Ci0rICAgICAgZXJybm8gPSBFSU5WQUw7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsjZGVmaW5lIENMRUFOVVAoKSBcCi0rICBmcmVlIChkLmRpcik7CQkJCQkJCQlcCi0rICBpZiAoYS5hcmcpCQkJCQkJCQlcCi0rICAgIGZyZWUgKGEuYXJnKTsKLSsKLSsgIGlmIChwcmludGZfZmV0Y2hhcmdzIChhcmdzLCAmYSkgPCAwKQotKyAgICB7Ci0rICAgICAgQ0xFQU5VUCAoKTsKLSsgICAgICBlcnJubyA9IEVJTlZBTDsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgewotKyAgICBzaXplX3QgYnVmX25lZWRlZGxlbmd0aDsKLSsgICAgQ0hBUl9UICpidWY7Ci0rICAgIENIQVJfVCAqYnVmX21hbGxvY2VkOwotKyAgICBjb25zdCBDSEFSX1QgKmNwOwotKyAgICBzaXplX3QgaTsKLSsgICAgRElSRUNUSVZFICpkcDsKLSsgICAgLyogT3V0cHV0IHN0cmluZyBhY2N1bXVsYXRvci4gICovCi0rICAgIENIQVJfVCAqcmVzdWx0OwotKyAgICBzaXplX3QgYWxsb2NhdGVkOwotKyAgICBzaXplX3QgbGVuZ3RoOwotKwotKyAgICAvKiBBbGxvY2F0ZSBhIHNtYWxsIGJ1ZmZlciB0aGF0IHdpbGwgaG9sZCBhIGRpcmVjdGl2ZSBwYXNzZWQgdG8KLSsgICAgICAgc3ByaW50ZiBvciBzbnByaW50Zi4gICovCi0rICAgIGJ1Zl9uZWVkZWRsZW5ndGggPQotKyAgICAgIHhzdW00ICg3LCBkLm1heF93aWR0aF9sZW5ndGgsIGQubWF4X3ByZWNpc2lvbl9sZW5ndGgsIDYpOwotKyNpZiBIQVZFX0FMTE9DQQotKyAgICBpZiAoYnVmX25lZWRlZGxlbmd0aCA8IDQwMDAgLyBzaXplb2YgKENIQVJfVCkpCi0rICAgICAgewotKwlidWYgPSAoQ0hBUl9UICopIGFsbG9jYSAoYnVmX25lZWRlZGxlbmd0aCAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCWJ1Zl9tYWxsb2NlZCA9IE5VTEw7Ci0rICAgICAgfQotKyAgICBlbHNlCi0rI2VuZGlmCi0rICAgICAgewotKwlzaXplX3QgYnVmX21lbXNpemUgPSB4dGltZXMgKGJ1Zl9uZWVkZWRsZW5ndGgsIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCWlmIChzaXplX292ZXJmbG93X3AgKGJ1Zl9tZW1zaXplKSkKLSsJICBnb3RvIG91dF9vZl9tZW1vcnlfMTsKLSsJYnVmID0gKENIQVJfVCAqKSBtYWxsb2MgKGJ1Zl9tZW1zaXplKTsKLSsJaWYgKGJ1ZiA9PSBOVUxMKQotKwkgIGdvdG8gb3V0X29mX21lbW9yeV8xOwotKwlidWZfbWFsbG9jZWQgPSBidWY7Ci0rICAgICAgfQotKwotKyAgICBpZiAocmVzdWx0YnVmICE9IE5VTEwpCi0rICAgICAgewotKwlyZXN1bHQgPSByZXN1bHRidWY7Ci0rCWFsbG9jYXRlZCA9ICpsZW5ndGhwOwotKyAgICAgIH0KLSsgICAgZWxzZQotKyAgICAgIHsKLSsJcmVzdWx0ID0gTlVMTDsKLSsJYWxsb2NhdGVkID0gMDsKLSsgICAgICB9Ci0rICAgIGxlbmd0aCA9IDA7Ci0rICAgIC8qIEludmFyaWFudHM6Ci0rICAgICAgIHJlc3VsdCBpcyBlaXRoZXIgPT0gcmVzdWx0YnVmIG9yID09IE5VTEwgb3IgbWFsbG9jLWFsbG9jYXRlZC4KLSsgICAgICAgSWYgbGVuZ3RoID4gMCwgdGhlbiByZXN1bHQgIT0gTlVMTC4gICovCi0rCi0rICAgIC8qIEVuc3VyZXMgdGhhdCBhbGxvY2F0ZWQgPj0gbmVlZGVkLiAgQWJvcnRzIHRocm91Z2ggYSBqdW1wIHRvCi0rICAgICAgIG91dF9vZl9tZW1vcnkgaWYgbmVlZGVkIGlzIFNJWkVfTUFYIG9yIG90aGVyd2lzZSB0b28gYmlnLiAgKi8KLSsjZGVmaW5lIEVOU1VSRV9BTExPQ0FUSU9OKG5lZWRlZCkgXAotKyAgICBpZiAoKG5lZWRlZCkgPiBhbGxvY2F0ZWQpCQkJCQkJICAgICBcCi0rICAgICAgewkJCQkJCQkJCSAgICAgXAotKwlzaXplX3QgbWVtb3J5X3NpemU7CQkJCQkJICAgICBcCi0rCUNIQVJfVCAqbWVtb3J5OwkJCQkJCQkgICAgIFwKLSsJCQkJCQkJCQkgICAgIFwKLSsJYWxsb2NhdGVkID0gKGFsbG9jYXRlZCA+IDAgPyB4dGltZXMgKGFsbG9jYXRlZCwgMikgOiAxMik7CSAgICAgXAotKwlpZiAoKG5lZWRlZCkgPiBhbGxvY2F0ZWQpCQkJCQkgICAgIFwKLSsJICBhbGxvY2F0ZWQgPSAobmVlZGVkKTsJCQkJCQkgICAgIFwKLSsJbWVtb3J5X3NpemUgPSB4dGltZXMgKGFsbG9jYXRlZCwgc2l6ZW9mIChDSEFSX1QpKTsJCSAgICAgXAotKwlpZiAoc2l6ZV9vdmVyZmxvd19wIChtZW1vcnlfc2l6ZSkpCQkJCSAgICAgXAotKwkgIGdvdG8gb3V0X29mX21lbW9yeTsJCQkJCQkgICAgIFwKLSsJaWYgKHJlc3VsdCA9PSByZXN1bHRidWYgfHwgcmVzdWx0ID09IE5VTEwpCQkJICAgICBcCi0rCSAgbWVtb3J5ID0gKENIQVJfVCAqKSBtYWxsb2MgKG1lbW9yeV9zaXplKTsJCQkgICAgIFwKLSsJZWxzZQkJCQkJCQkJICAgICBcCi0rCSAgbWVtb3J5ID0gKENIQVJfVCAqKSByZWFsbG9jIChyZXN1bHQsIG1lbW9yeV9zaXplKTsJCSAgICAgXAotKwlpZiAobWVtb3J5ID09IE5VTEwpCQkJCQkJICAgICBcCi0rCSAgZ290byBvdXRfb2ZfbWVtb3J5OwkJCQkJCSAgICAgXAotKwlpZiAocmVzdWx0ID09IHJlc3VsdGJ1ZiAmJiBsZW5ndGggPiAwKQkJCQkgICAgIFwKLSsJICBtZW1jcHkgKG1lbW9yeSwgcmVzdWx0LCBsZW5ndGggKiBzaXplb2YgKENIQVJfVCkpOwkJICAgICBcCi0rCXJlc3VsdCA9IG1lbW9yeTsJCQkJCQkgICAgIFwKLSsgICAgICB9Ci0rCi0rICAgIGZvciAoY3AgPSBmb3JtYXQsIGkgPSAwLCBkcCA9ICZkLmRpclswXTsgOyBjcCA9IGRwLT5kaXJfZW5kLCBpKyssIGRwKyspCi0rICAgICAgewotKwlpZiAoY3AgIT0gZHAtPmRpcl9zdGFydCkKLSsJICB7Ci0rCSAgICBzaXplX3QgbiA9IGRwLT5kaXJfc3RhcnQgLSBjcDsKLSsJICAgIHNpemVfdCBhdWdtZW50ZWRfbGVuZ3RoID0geHN1bSAobGVuZ3RoLCBuKTsKLSsKLSsJICAgIEVOU1VSRV9BTExPQ0FUSU9OIChhdWdtZW50ZWRfbGVuZ3RoKTsKLSsJICAgIG1lbWNweSAocmVzdWx0ICsgbGVuZ3RoLCBjcCwgbiAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCSAgICBsZW5ndGggPSBhdWdtZW50ZWRfbGVuZ3RoOwotKwkgIH0KLSsJaWYgKGkgPT0gZC5jb3VudCkKLSsJICBicmVhazsKLSsKLSsJLyogRXhlY3V0ZSBhIHNpbmdsZSBkaXJlY3RpdmUuICAqLwotKwlpZiAoZHAtPmNvbnZlcnNpb24gPT0gJyUnKQotKwkgIHsKLSsJICAgIHNpemVfdCBhdWdtZW50ZWRfbGVuZ3RoOwotKwotKwkgICAgaWYgKCEoZHAtPmFyZ19pbmRleCA9PSBBUkdfTk9ORSkpCi0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgYXVnbWVudGVkX2xlbmd0aCA9IHhzdW0gKGxlbmd0aCwgMSk7Ci0rCSAgICBFTlNVUkVfQUxMT0NBVElPTiAoYXVnbWVudGVkX2xlbmd0aCk7Ci0rCSAgICByZXN1bHRbbGVuZ3RoXSA9ICclJzsKLSsJICAgIGxlbmd0aCA9IGF1Z21lbnRlZF9sZW5ndGg7Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgaWYgKCEoZHAtPmFyZ19pbmRleCAhPSBBUkdfTk9ORSkpCi0rCSAgICAgIGFib3J0ICgpOwotKwotKwkgICAgaWYgKGRwLT5jb252ZXJzaW9uID09ICduJykKLSsJICAgICAgewotKwkJc3dpdGNoIChhLmFyZ1tkcC0+YXJnX2luZGV4XS50eXBlKQotKwkJICB7Ci0rCQkgIGNhc2UgVFlQRV9DT1VOVF9TQ0hBUl9QT0lOVEVSOgotKwkJICAgICphLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY291bnRfc2NoYXJfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX1NIT1JUX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9zaG9ydF9wb2ludGVyID0gbGVuZ3RoOwotKwkJICAgIGJyZWFrOwotKwkJICBjYXNlIFRZUEVfQ09VTlRfSU5UX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9pbnRfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX0xPTkdJTlRfUE9JTlRFUjoKLSsJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X2xvbmdpbnRfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9sb25nbG9uZ2ludF9wb2ludGVyID0gbGVuZ3RoOwotKwkJICAgIGJyZWFrOwotKyNlbmRpZgotKwkJICBkZWZhdWx0OgotKwkJICAgIGFib3J0ICgpOwotKwkJICB9Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJYXJnX3R5cGUgdHlwZSA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLnR5cGU7Ci0rCQlDSEFSX1QgKnA7Ci0rCQl1bnNpZ25lZCBpbnQgcHJlZml4X2NvdW50OwotKwkJaW50IHByZWZpeGVzWzJdOwotKyNpZiAhVVNFX1NOUFJJTlRGCi0rCQlzaXplX3QgdG1wX2xlbmd0aDsKLSsJCUNIQVJfVCB0bXBidWZbNzAwXTsKLSsJCUNIQVJfVCAqdG1wOwotKwotKwkJLyogQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIG9mIHN1ZmZpY2llbnQgc2l6ZSBmb3IgY2FsbGluZwotKwkJICAgc3ByaW50Zi4gICovCi0rCQl7Ci0rCQkgIHNpemVfdCB3aWR0aDsKLSsJCSAgc2l6ZV90IHByZWNpc2lvbjsKLSsKLSsJCSAgd2lkdGggPSAwOwotKwkJICBpZiAoZHAtPndpZHRoX3N0YXJ0ICE9IGRwLT53aWR0aF9lbmQpCi0rCQkgICAgewotKwkJICAgICAgaWYgKGRwLT53aWR0aF9hcmdfaW5kZXggIT0gQVJHX05PTkUpCi0rCQkJewotKwkJCSAgaW50IGFyZzsKLSsKLSsJCQkgIGlmICghKGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLnR5cGUgPT0gVFlQRV9JTlQpKQotKwkJCSAgICBhYm9ydCAoKTsKLSsJCQkgIGFyZyA9IGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkJICB3aWR0aCA9IChhcmcgPCAwID8gKHVuc2lnbmVkIGludCkgKC1hcmcpIDogYXJnKTsKLSsJCQl9Ci0rCQkgICAgICBlbHNlCi0rCQkJewotKwkJCSAgY29uc3QgQ0hBUl9UICpkaWdpdHAgPSBkcC0+d2lkdGhfc3RhcnQ7Ci0rCi0rCQkJICBkbwotKwkJCSAgICB3aWR0aCA9IHhzdW0gKHh0aW1lcyAod2lkdGgsIDEwKSwgKmRpZ2l0cCsrIC0gJzAnKTsKLSsJCQkgIHdoaWxlIChkaWdpdHAgIT0gZHAtPndpZHRoX2VuZCk7Ci0rCQkJfQotKwkJICAgIH0KLSsKLSsJCSAgcHJlY2lzaW9uID0gNjsKLSsJCSAgaWYgKGRwLT5wcmVjaXNpb25fc3RhcnQgIT0gZHAtPnByZWNpc2lvbl9lbmQpCi0rCQkgICAgewotKwkJICAgICAgaWYgKGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ICE9IEFSR19OT05FKQotKwkJCXsKLSsJCQkgIGludCBhcmc7Ci0rCi0rCQkJICBpZiAoIShhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCi0rCQkJICAgIGFib3J0ICgpOwotKwkJCSAgYXJnID0gYS5hcmdbZHAtPnByZWNpc2lvbl9hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkJICBwcmVjaXNpb24gPSAoYXJnIDwgMCA/IDAgOiBhcmcpOwotKwkJCX0KLSsJCSAgICAgIGVsc2UKLSsJCQl7Ci0rCQkJICBjb25zdCBDSEFSX1QgKmRpZ2l0cCA9IGRwLT5wcmVjaXNpb25fc3RhcnQgKyAxOwotKwotKwkJCSAgcHJlY2lzaW9uID0gMDsKLSsJCQkgIGRvCi0rCQkJICAgIHByZWNpc2lvbiA9IHhzdW0gKHh0aW1lcyAocHJlY2lzaW9uLCAxMCksICpkaWdpdHArKyAtICcwJyk7Ci0rCQkJICB3aGlsZSAoZGlnaXRwICE9IGRwLT5wcmVjaXNpb25fZW5kKTsKLSsJCQl9Ci0rCQkgICAgfQotKwotKwkJICBzd2l0Y2ggKGRwLT5jb252ZXJzaW9uKQotKwkJICAgIHsKLSsKLSsJCSAgICBjYXNlICdkJzogY2FzZSAnaSc6IGNhc2UgJ3UnOgotKyMgaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KLSsJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLwotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0lOVCB8fCB0eXBlID09IFRZUEVfVUxPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLwotKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCi0rCQkgICAgICBlbHNlCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBpbnQpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCi0rCQkJCQkgICogMiAvKiBlc3RpbWF0ZSBmb3IgRkxBR19HUk9VUCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ28nOgotKyMgaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGVsc2UKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGludCkgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ3gnOiBjYXNlICdYJzoKLSsjIGlmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdMT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0xPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nIGxvbmcpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjI1IC8qIGJpbmFyeSAtPiBoZXhhZGVjaW1hbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gb3IgYWx0ZXJuYXRlIGZvcm0gKi8KLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMjUgLyogYmluYXJ5IC0+IGhleGFkZWNpbWFsICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDI7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiBvciBhbHRlcm5hdGUgZm9ybSAqLwotKwkJICAgICAgZWxzZQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgaW50KSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4yNSAvKiBiaW5hcnkgLT4gaGV4YWRlY2ltYWwgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMjsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduIG9yIGFsdGVybmF0ZSBmb3JtICovCi0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICdmJzogY2FzZSAnRic6Ci0rIyBpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdET1VCTEUpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoTERCTF9NQVhfRVhQCi0rCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLwotKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTA7IC8qIHNpZ24sIGRlY2ltYWwgcG9pbnQgZXRjLiAqLwotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChEQkxfTUFYX0VYUAotKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KLSsJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDEwOyAvKiBzaWduLCBkZWNpbWFsIHBvaW50IGV0Yy4gKi8KLSsJCSAgICAgIHRtcF9sZW5ndGggPSB4c3VtICh0bXBfbGVuZ3RoLCBwcmVjaXNpb24pOwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAnZSc6IGNhc2UgJ0UnOiBjYXNlICdnJzogY2FzZSAnRyc6Ci0rCQkgICAgY2FzZSAnYSc6IGNhc2UgJ0EnOgotKwkJICAgICAgdG1wX2xlbmd0aCA9Ci0rCQkJMTI7IC8qIHNpZ24sIGRlY2ltYWwgcG9pbnQsIGV4cG9uZW50IGV0Yy4gKi8KLSsJCSAgICAgIHRtcF9sZW5ndGggPSB4c3VtICh0bXBfbGVuZ3RoLCBwcmVjaXNpb24pOwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAnYyc6Ci0rIyBpZiBkZWZpbmVkIEhBVkVfV0lOVF9UICYmICFXSURFX0NIQVJfVkVSU0lPTgotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9XSURFX0NIQVIpCi0rCQkJdG1wX2xlbmd0aCA9IE1CX0NVUl9NQVg7Ci0rCQkgICAgICBlbHNlCi0rIyBlbmRpZgotKwkJCXRtcF9sZW5ndGggPSAxOwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAncyc6Ci0rIyBpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfV0lERV9TVFJJTkcpCi0rCQkJewotKwkJCSAgdG1wX2xlbmd0aCA9Ci0rCQkJICAgIGxvY2FsX3djc2xlbiAoYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3dpZGVfc3RyaW5nKTsKLSsKLSsjICBpZiAhV0lERV9DSEFSX1ZFUlNJT04KLSsJCQkgIHRtcF9sZW5ndGggPSB4dGltZXMgKHRtcF9sZW5ndGgsIE1CX0NVUl9NQVgpOwotKyMgIGVuZGlmCi0rCQkJfQotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCQl0bXBfbGVuZ3RoID0gc3RybGVuIChhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfc3RyaW5nKTsKLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ3AnOgotKwkJICAgICAgdG1wX2xlbmd0aCA9Ci0rCQkJKHVuc2lnbmVkIGludCkgKHNpemVvZiAodm9pZCAqKSAqIENIQVJfQklUCi0rCQkJCQkqIDAuMjUgLyogYmluYXJ5IC0+IGhleGFkZWNpbWFsICovCi0rCQkJCSAgICAgICApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMjsgLyogYWNjb3VudCBmb3IgbGVhZGluZyAweCAqLwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgZGVmYXVsdDoKLSsJCSAgICAgIGFib3J0ICgpOwotKwkJICAgIH0KLSsKLSsJCSAgaWYgKHRtcF9sZW5ndGggPCB3aWR0aCkKLSsJCSAgICB0bXBfbGVuZ3RoID0gd2lkdGg7Ci0rCi0rCQkgIHRtcF9sZW5ndGggPSB4c3VtICh0bXBfbGVuZ3RoLCAxKTsgLyogYWNjb3VudCBmb3IgdHJhaWxpbmcgTlVMICovCi0rCQl9Ci0rCi0rCQlpZiAodG1wX2xlbmd0aCA8PSBzaXplb2YgKHRtcGJ1ZikgLyBzaXplb2YgKENIQVJfVCkpCi0rCQkgIHRtcCA9IHRtcGJ1ZjsKLSsJCWVsc2UKLSsJCSAgewotKwkJICAgIHNpemVfdCB0bXBfbWVtc2l6ZSA9IHh0aW1lcyAodG1wX2xlbmd0aCwgc2l6ZW9mIChDSEFSX1QpKTsKLSsKLSsJCSAgICBpZiAoc2l6ZV9vdmVyZmxvd19wICh0bXBfbWVtc2l6ZSkpCi0rCQkgICAgICAvKiBPdmVyZmxvdywgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5LiAgKi8KLSsJCSAgICAgIGdvdG8gb3V0X29mX21lbW9yeTsKLSsJCSAgICB0bXAgPSAoQ0hBUl9UICopIG1hbGxvYyAodG1wX21lbXNpemUpOwotKwkJICAgIGlmICh0bXAgPT0gTlVMTCkKLSsJCSAgICAgIC8qIE91dCBvZiBtZW1vcnkuICAqLwotKwkJICAgICAgZ290byBvdXRfb2ZfbWVtb3J5OwotKwkJICB9Ci0rI2VuZGlmCi0rCi0rCQkvKiBDb25zdHJ1Y3QgdGhlIGZvcm1hdCBzdHJpbmcgZm9yIGNhbGxpbmcgc25wcmludGYgb3IKLSsJCSAgIHNwcmludGYuICAqLwotKwkJcCA9IGJ1ZjsKLSsJCSpwKysgPSAnJSc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19HUk9VUCkKLSsJCSAgKnArKyA9ICdcJyc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19MRUZUKQotKwkJICAqcCsrID0gJy0nOwotKwkJaWYgKGRwLT5mbGFncyAmIEZMQUdfU0hPV1NJR04pCi0rCQkgICpwKysgPSAnKyc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19TUEFDRSkKLSsJCSAgKnArKyA9ICcgJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX0FMVCkKLSsJCSAgKnArKyA9ICcjJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX1pFUk8pCi0rCQkgICpwKysgPSAnMCc7Ci0rCQlpZiAoZHAtPndpZHRoX3N0YXJ0ICE9IGRwLT53aWR0aF9lbmQpCi0rCQkgIHsKLSsJCSAgICBzaXplX3QgbiA9IGRwLT53aWR0aF9lbmQgLSBkcC0+d2lkdGhfc3RhcnQ7Ci0rCQkgICAgbWVtY3B5IChwLCBkcC0+d2lkdGhfc3RhcnQsIG4gKiBzaXplb2YgKENIQVJfVCkpOwotKwkJICAgIHAgKz0gbjsKLSsJCSAgfQotKwkJaWYgKGRwLT5wcmVjaXNpb25fc3RhcnQgIT0gZHAtPnByZWNpc2lvbl9lbmQpCi0rCQkgIHsKLSsJCSAgICBzaXplX3QgbiA9IGRwLT5wcmVjaXNpb25fZW5kIC0gZHAtPnByZWNpc2lvbl9zdGFydDsKLSsJCSAgICBtZW1jcHkgKHAsIGRwLT5wcmVjaXNpb25fc3RhcnQsIG4gKiBzaXplb2YgKENIQVJfVCkpOwotKwkJICAgIHAgKz0gbjsKLSsJCSAgfQotKwotKwkJc3dpdGNoICh0eXBlKQotKwkJICB7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgIGNhc2UgVFlQRV9MT05HTE9OR0lOVDoKLSsJCSAgY2FzZSBUWVBFX1VMT05HTE9OR0lOVDoKLSsJCSAgICAqcCsrID0gJ2wnOwotKwkJICAgIC8qRkFMTFRIUk9VR0gqLwotKyNlbmRpZgotKwkJICBjYXNlIFRZUEVfTE9OR0lOVDoKLSsJCSAgY2FzZSBUWVBFX1VMT05HSU5UOgotKyNpZmRlZiBIQVZFX1dJTlRfVAotKwkJICBjYXNlIFRZUEVfV0lERV9DSEFSOgotKyNlbmRpZgotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCSAgY2FzZSBUWVBFX1dJREVfU1RSSU5HOgotKyNlbmRpZgotKwkJICAgICpwKysgPSAnbCc7Ci0rCQkgICAgYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsJCSAgY2FzZSBUWVBFX0xPTkdET1VCTEU6Ci0rCQkgICAgKnArKyA9ICdMJzsKLSsJCSAgICBicmVhazsKLSsjZW5kaWYKLSsJCSAgZGVmYXVsdDoKLSsJCSAgICBicmVhazsKLSsJCSAgfQotKwkJKnAgPSBkcC0+Y29udmVyc2lvbjsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQlwWzFdID0gJyUnOwotKwkJcFsyXSA9ICduJzsKLSsJCXBbM10gPSAnXDAnOwotKyNlbHNlCi0rCQlwWzFdID0gJ1wwJzsKLSsjZW5kaWYKLSsKLSsJCS8qIENvbnN0cnVjdCB0aGUgYXJndW1lbnRzIGZvciBjYWxsaW5nIHNucHJpbnRmIG9yIHNwcmludGYuICAqLwotKwkJcHJlZml4X2NvdW50ID0gMDsKLSsJCWlmIChkcC0+d2lkdGhfYXJnX2luZGV4ICE9IEFSR19OT05FKQotKwkJICB7Ci0rCQkgICAgaWYgKCEoYS5hcmdbZHAtPndpZHRoX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCi0rCQkgICAgICBhYm9ydCAoKTsKLSsJCSAgICBwcmVmaXhlc1twcmVmaXhfY291bnQrK10gPSBhLmFyZ1tkcC0+d2lkdGhfYXJnX2luZGV4XS5hLmFfaW50OwotKwkJICB9Ci0rCQlpZiAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggIT0gQVJHX05PTkUpCi0rCQkgIHsKLSsJCSAgICBpZiAoIShhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCi0rCQkgICAgICBhYm9ydCAoKTsKLSsJCSAgICBwcmVmaXhlc1twcmVmaXhfY291bnQrK10gPSBhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0uYS5hX2ludDsKLSsJCSAgfQotKwotKyNpZiBVU0VfU05QUklOVEYKLSsJCS8qIFByZXBhcmUgY2hlY2tpbmcgd2hldGhlciBzbnByaW50ZiByZXR1cm5zIHRoZSBjb3VudAotKwkJICAgdmlhICVuLiAgKi8KLSsJCUVOU1VSRV9BTExPQ0FUSU9OICh4c3VtIChsZW5ndGgsIDEpKTsKLSsJCXJlc3VsdFtsZW5ndGhdID0gJ1wwJzsKLSsjZW5kaWYKLSsKLSsJCWZvciAoOzspCi0rCQkgIHsKLSsJCSAgICBzaXplX3QgbWF4bGVuOwotKwkJICAgIGludCBjb3VudDsKLSsJCSAgICBpbnQgcmV0Y291bnQ7Ci0rCi0rCQkgICAgbWF4bGVuID0gYWxsb2NhdGVkIC0gbGVuZ3RoOwotKwkJICAgIGNvdW50ID0gLTE7Ci0rCQkgICAgcmV0Y291bnQgPSAwOwotKwotKyNpZiBVU0VfU05QUklOVEYKLSsjIGRlZmluZSBTTlBSSU5URl9CVUYoYXJnKSBcCi0rCQkgICAgc3dpdGNoIChwcmVmaXhfY291bnQpCQkJCSAgICBcCi0rCQkgICAgICB7CQkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDA6CQkJCQkJICAgIFwKLSsJCQlyZXRjb3VudCA9IFNOUFJJTlRGIChyZXN1bHQgKyBsZW5ndGgsIG1heGxlbiwgYnVmLCAgXAotKwkJCQkJICAgICBhcmcsICZjb3VudCk7CQkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDE6CQkJCQkJICAgIFwKLSsJCQlyZXRjb3VudCA9IFNOUFJJTlRGIChyZXN1bHQgKyBsZW5ndGgsIG1heGxlbiwgYnVmLCAgXAotKwkJCQkJICAgICBwcmVmaXhlc1swXSwgYXJnLCAmY291bnQpOwkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDI6CQkJCQkJICAgIFwKLSsJCQlyZXRjb3VudCA9IFNOUFJJTlRGIChyZXN1bHQgKyBsZW5ndGgsIG1heGxlbiwgYnVmLCAgXAotKwkJCQkJICAgICBwcmVmaXhlc1swXSwgcHJlZml4ZXNbMV0sIGFyZywgXAotKwkJCQkJICAgICAmY291bnQpOwkJCSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGRlZmF1bHQ6CQkJCQkJICAgIFwKLSsJCQlhYm9ydCAoKTsJCQkJCSAgICBcCi0rCQkgICAgICB9Ci0rI2Vsc2UKLSsjIGRlZmluZSBTTlBSSU5URl9CVUYoYXJnKSBcCi0rCQkgICAgc3dpdGNoIChwcmVmaXhfY291bnQpCQkJCSAgICBcCi0rCQkgICAgICB7CQkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDA6CQkJCQkJICAgIFwKLSsJCQljb3VudCA9IHNwcmludGYgKHRtcCwgYnVmLCBhcmcpOwkJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgY2FzZSAxOgkJCQkJCSAgICBcCi0rCQkJY291bnQgPSBzcHJpbnRmICh0bXAsIGJ1ZiwgcHJlZml4ZXNbMF0sIGFyZyk7CSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGNhc2UgMjoJCQkJCQkgICAgXAotKwkJCWNvdW50ID0gc3ByaW50ZiAodG1wLCBidWYsIHByZWZpeGVzWzBdLCBwcmVmaXhlc1sxXSxcCi0rCQkJCQkgYXJnKTsJCQkJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgZGVmYXVsdDoJCQkJCQkgICAgXAotKwkJCWFib3J0ICgpOwkJCQkJICAgIFwKLSsJCSAgICAgIH0KLSsjZW5kaWYKLSsKLSsJCSAgICBzd2l0Y2ggKHR5cGUpCi0rCQkgICAgICB7Ci0rCQkgICAgICBjYXNlIFRZUEVfU0NIQVI6Ci0rCQkJewotKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zY2hhcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfVUNIQVI6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91Y2hhcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfU0hPUlQ6Ci0rCQkJewotKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zaG9ydDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfVVNIT1JUOgotKwkJCXsKLSsJCQkgIHVuc2lnbmVkIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdXNob3J0OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9JTlQ6Ci0rCQkJewotKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX1VJTlQ6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91aW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9MT05HSU5UOgotKwkJCXsKLSsJCQkgIGxvbmcgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9sb25naW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9VTE9OR0lOVDoKLSsJCQl7Ci0rCQkJICB1bnNpZ25lZCBsb25nIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdWxvbmdpbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICAgICAgY2FzZSBUWVBFX0xPTkdMT05HSU5UOgotKwkJCXsKLSsJCQkgIGxvbmcgbG9uZyBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2xvbmdsb25naW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9VTE9OR0xPTkdJTlQ6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgbG9uZyBsb25nIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdWxvbmdsb25naW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjZW5kaWYKLSsJCSAgICAgIGNhc2UgVFlQRV9ET1VCTEU6Ci0rCQkJewotKwkJCSAgZG91YmxlIGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9kb3VibGU7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rCQkgICAgICBjYXNlIFRZUEVfTE9OR0RPVUJMRToKLSsJCQl7Ci0rCQkJICBsb25nIGRvdWJsZSBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfbG9uZ2RvdWJsZTsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCQkgICAgICBjYXNlIFRZUEVfQ0hBUjoKLSsJCQl7Ci0rCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NoYXI7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKwkJICAgICAgY2FzZSBUWVBFX1dJREVfQ0hBUjoKLSsJCQl7Ci0rCQkJICB3aW50X3QgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3dpZGVfY2hhcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCQkgICAgICBjYXNlIFRZUEVfU1RSSU5HOgotKwkJCXsKLSsJCQkgIGNvbnN0IGNoYXIgKmFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zdHJpbmc7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCSAgICAgIGNhc2UgVFlQRV9XSURFX1NUUklORzoKLSsJCQl7Ci0rCQkJICBjb25zdCB3Y2hhcl90ICphcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfd2lkZV9zdHJpbmc7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNlbmRpZgotKwkJICAgICAgY2FzZSBUWVBFX1BPSU5URVI6Ci0rCQkJewotKwkJCSAgdm9pZCAqYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3BvaW50ZXI7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgZGVmYXVsdDoKLSsJCQlhYm9ydCAoKTsKLSsJCSAgICAgIH0KLSsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQkgICAgLyogUG9ydGFiaWxpdHk6IE5vdCBhbGwgaW1wbGVtZW50YXRpb25zIG9mIHNucHJpbnRmKCkKLSsJCSAgICAgICBhcmUgSVNPIEMgOTkgY29tcGxpYW50LiAgRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YKLSsJCSAgICAgICBieXRlcyB0aGF0IHNucHJpbnRmKCkgaGFzIHByb2R1Y2VkIG9yIHdvdWxkIGhhdmUKLSsJCSAgICAgICBwcm9kdWNlZC4gICovCi0rCQkgICAgaWYgKGNvdW50ID49IDApCi0rCQkgICAgICB7Ci0rCQkJLyogVmVyaWZ5IHRoYXQgc25wcmludGYoKSBoYXMgTlVMLXRlcm1pbmF0ZWQgaXRzCi0rCQkJICAgcmVzdWx0LiAgKi8KLSsJCQlpZiAoY291bnQgPCBtYXhsZW4gJiYgcmVzdWx0W2xlbmd0aCArIGNvdW50XSAhPSAnXDAnKQotKwkJCSAgYWJvcnQgKCk7Ci0rCQkJLyogUG9ydGFiaWxpdHkgaGFjay4gICovCi0rCQkJaWYgKHJldGNvdW50ID4gY291bnQpCi0rCQkJICBjb3VudCA9IHJldGNvdW50OwotKwkJICAgICAgfQotKwkJICAgIGVsc2UKLSsJCSAgICAgIHsKLSsJCQkvKiBzbnByaW50ZigpIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgJyVuJwotKwkJCSAgIGRpcmVjdGl2ZS4gICovCi0rCQkJaWYgKHBbMV0gIT0gJ1wwJykKLSsJCQkgIHsKLSsJCQkgICAgLyogRG9uJ3QgdXNlIHRoZSAnJW4nIGRpcmVjdGl2ZTsgaW5zdGVhZCwgbG9vawotKwkJCSAgICAgICBhdCB0aGUgc25wcmludGYoKSByZXR1cm4gdmFsdWUuICAqLwotKwkJCSAgICBwWzFdID0gJ1wwJzsKLSsJCQkgICAgY29udGludWU7Ci0rCQkJICB9Ci0rCQkJZWxzZQotKwkJCSAgewotKwkJCSAgICAvKiBMb29rIGF0IHRoZSBzbnByaW50ZigpIHJldHVybiB2YWx1ZS4gICovCi0rCQkJICAgIGlmIChyZXRjb3VudCA8IDApCi0rCQkJICAgICAgewotKwkJCQkvKiBIUC1VWCAxMC4yMCBzbnByaW50ZigpIGlzIGRvdWJseSBkZWZpY2llbnQ6Ci0rCQkJCSAgIEl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgJyVuJyBkaXJlY3RpdmUsCi0rCQkJCSAgICphbmQqIGl0IHJldHVybnMgLTEgKHJhdGhlciB0aGFuIHRoZSBsZW5ndGgKLSsJCQkJICAgdGhhdCB3b3VsZCBoYXZlIGJlZW4gcmVxdWlyZWQpIHdoZW4gdGhlCi0rCQkJCSAgIGJ1ZmZlciBpcyB0b28gc21hbGwuICAqLwotKwkJCQlzaXplX3QgYmlnZ2VyX25lZWQgPQotKwkJCQkgIHhzdW0gKHh0aW1lcyAoYWxsb2NhdGVkLCAyKSwgMTIpOwotKwkJCQlFTlNVUkVfQUxMT0NBVElPTiAoYmlnZ2VyX25lZWQpOwotKwkJCQljb250aW51ZTsKLSsJCQkgICAgICB9Ci0rCQkJICAgIGVsc2UKLSsJCQkgICAgICBjb3VudCA9IHJldGNvdW50OwotKwkJCSAgfQotKwkJICAgICAgfQotKyNlbmRpZgotKwotKwkJICAgIC8qIEF0dGVtcHQgdG8gaGFuZGxlIGZhaWx1cmUuICAqLwotKwkJICAgIGlmIChjb3VudCA8IDApCi0rCQkgICAgICB7Ci0rCQkJaWYgKCEocmVzdWx0ID09IHJlc3VsdGJ1ZiB8fCByZXN1bHQgPT0gTlVMTCkpCi0rCQkJICBmcmVlIChyZXN1bHQpOwotKwkJCWlmIChidWZfbWFsbG9jZWQgIT0gTlVMTCkKLSsJCQkgIGZyZWUgKGJ1Zl9tYWxsb2NlZCk7Ci0rCQkJQ0xFQU5VUCAoKTsKLSsJCQllcnJubyA9IEVJTlZBTDsKLSsJCQlyZXR1cm4gTlVMTDsKLSsJCSAgICAgIH0KLSsKLSsjaWYgIVVTRV9TTlBSSU5URgotKwkJICAgIGlmIChjb3VudCA+PSB0bXBfbGVuZ3RoKQotKwkJICAgICAgLyogdG1wX2xlbmd0aCB3YXMgaW5jb3JyZWN0bHkgY2FsY3VsYXRlZCAtIGZpeCB0aGUKLSsJCQkgY29kZSBhYm92ZSEgICovCi0rCQkgICAgICBhYm9ydCAoKTsKLSsjZW5kaWYKLSsKLSsJCSAgICAvKiBNYWtlIHJvb20gZm9yIHRoZSByZXN1bHQuICAqLwotKwkJICAgIGlmIChjb3VudCA+PSBtYXhsZW4pCi0rCQkgICAgICB7Ci0rCQkJLyogTmVlZCBhdCBsZWFzdCBjb3VudCBieXRlcy4gIEJ1dCBhbGxvY2F0ZQotKwkJCSAgIHByb3BvcnRpb25hbGx5LCB0byBhdm9pZCBsb29waW5nIGV0ZXJuYWxseSBpZgotKwkJCSAgIHNucHJpbnRmKCkgcmVwb3J0cyBhIHRvbyBzbWFsbCBjb3VudC4gICovCi0rCQkJc2l6ZV90IG4gPQotKwkJCSAgeG1heCAoeHN1bSAobGVuZ3RoLCBjb3VudCksIHh0aW1lcyAoYWxsb2NhdGVkLCAyKSk7Ci0rCi0rCQkJRU5TVVJFX0FMTE9DQVRJT04gKG4pOwotKyNpZiBVU0VfU05QUklOVEYKLSsJCQljb250aW51ZTsKLSsjZW5kaWYKLSsJCSAgICAgIH0KLSsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQkgICAgLyogVGhlIHNucHJpbnRmKCkgcmVzdWx0IGRpZCBmaXQuICAqLwotKyNlbHNlCi0rCQkgICAgLyogQXBwZW5kIHRoZSBzcHJpbnRmKCkgcmVzdWx0LiAgKi8KLSsJCSAgICBtZW1jcHkgKHJlc3VsdCArIGxlbmd0aCwgdG1wLCBjb3VudCAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCQkgICAgaWYgKHRtcCAhPSB0bXBidWYpCi0rCQkgICAgICBmcmVlICh0bXApOwotKyNlbmRpZgotKwotKwkJICAgIGxlbmd0aCArPSBjb3VudDsKLSsJCSAgICBicmVhazsKLSsJCSAgfQotKwkgICAgICB9Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsgICAgLyogQWRkIHRoZSBmaW5hbCBOVUwuICAqLwotKyAgICBFTlNVUkVfQUxMT0NBVElPTiAoeHN1bSAobGVuZ3RoLCAxKSk7Ci0rICAgIHJlc3VsdFtsZW5ndGhdID0gJ1wwJzsKLSsKLSsgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYgJiYgbGVuZ3RoICsgMSA8IGFsbG9jYXRlZCkKLSsgICAgICB7Ci0rCS8qIFNocmluayB0aGUgYWxsb2NhdGVkIG1lbW9yeSBpZiBwb3NzaWJsZS4gICovCi0rCUNIQVJfVCAqbWVtb3J5OwotKwotKwltZW1vcnkgPSAoQ0hBUl9UICopIHJlYWxsb2MgKHJlc3VsdCwgKGxlbmd0aCArIDEpICogc2l6ZW9mIChDSEFSX1QpKTsKLSsJaWYgKG1lbW9yeSAhPSBOVUxMKQotKwkgIHJlc3VsdCA9IG1lbW9yeTsKLSsgICAgICB9Ci0rCi0rICAgIGlmIChidWZfbWFsbG9jZWQgIT0gTlVMTCkKLSsgICAgICBmcmVlIChidWZfbWFsbG9jZWQpOwotKyAgICBDTEVBTlVQICgpOwotKyAgICAqbGVuZ3RocCA9IGxlbmd0aDsKLSsgICAgcmV0dXJuIHJlc3VsdDsKLSsKLSsgIG91dF9vZl9tZW1vcnk6Ci0rICAgIGlmICghKHJlc3VsdCA9PSByZXN1bHRidWYgfHwgcmVzdWx0ID09IE5VTEwpKQotKyAgICAgIGZyZWUgKHJlc3VsdCk7Ci0rICAgIGlmIChidWZfbWFsbG9jZWQgIT0gTlVMTCkKLSsgICAgICBmcmVlIChidWZfbWFsbG9jZWQpOwotKyAgb3V0X29mX21lbW9yeV8xOgotKyAgICBDTEVBTlVQICgpOwotKyAgICBlcnJubyA9IEVOT01FTTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICB9Ci0rfQotKwotKyN1bmRlZiBTTlBSSU5URgotKyN1bmRlZiBVU0VfU05QUklOVEYKLSsjdW5kZWYgUFJJTlRGX1BBUlNFCi0rI3VuZGVmIERJUkVDVElWRVMKLSsjdW5kZWYgRElSRUNUSVZFCi0rI3VuZGVmIENIQVJfVAotKyN1bmRlZiBWQVNOUFJJTlRGCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvdmFzbnByaW50Zi5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3Zhc25wcmludGYuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjY2NzcwMDY2NCAtMDQwMAotQEAgLTAsMCArMSw2MSBAQAotKy8qIHZzcHJpbnRmIHdpdGggYXV0b21hdGljIG1lbW9yeSBhbGxvY2F0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9WQVNOUFJJTlRGX0gKLSsjZGVmaW5lIF9WQVNOUFJJTlRGX0gKLSsKLSsvKiBHZXQgdmFfbGlzdC4gICovCi0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKwotKy8qIEdldCBzaXplX3QuICAqLwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsjaWZuZGVmIF9fYXR0cmlidXRlX18KLSsvKiBUaGlzIGZlYXR1cmUgaXMgYXZhaWxhYmxlIGluIGdjYyB2ZXJzaW9ucyAyLjUgYW5kIGxhdGVyLiAgKi8KLSsjIGlmIF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpIHx8IF9fU1RSSUNUX0FOU0lfXwotKyMgIGRlZmluZSBfX2F0dHJpYnV0ZV9fKFNwZWMpIC8qIGVtcHR5ICovCi0rIyBlbmRpZgotKy8qIFRoZSBfXy1wcm90ZWN0ZWQgdmFyaWFudHMgb2YgYGZvcm1hdCcgYW5kIGBwcmludGYnIGF0dHJpYnV0ZXMKLSsgICBhcmUgYWNjZXB0ZWQgYnkgZ2NjIHZlcnNpb25zIDIuNi40IChlZmZlY3RpdmVseSAyLjcpIGFuZCBsYXRlci4gICovCi0rIyBpZiBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA3KQotKyMgIGRlZmluZSBfX2Zvcm1hdF9fIGZvcm1hdAotKyMgIGRlZmluZSBfX3ByaW50Zl9fIHByaW50ZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYJX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsvKiBXcml0ZSBmb3JtYXR0ZWQgb3V0cHV0IHRvIGEgc3RyaW5nIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB3aXRoIG1hbGxvYygpLgotKyAgIFlvdSBjYW4gcGFzcyBhIHByZWFsbG9jYXRlZCBidWZmZXIgZm9yIHRoZSByZXN1bHQgaW4gUkVTVUxUQlVGIGFuZCBpdHMKLSsgICBzaXplIGluICpMRU5HVEhQOyBvdGhlcndpc2UgeW91IHBhc3MgUkVTVUxUQlVGID0gTlVMTC4KLSsgICBJZiBzdWNjZXNzZnVsLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0cmluZyAodGhpcyBtYXkgYmUgPSBSRVNVTFRCVUYKLSsgICBpZiBubyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdhcyBuZWNlc3NhcnkpIGFuZCBzZXQgKkxFTkdUSFAgdG8gdGhlCi0rICAgbnVtYmVyIG9mIHJlc3VsdGluZyBieXRlcywgZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICBVcG9uIGVycm9yLCBzZXQKLSsgICBlcnJubyBhbmQgcmV0dXJuIE5VTEwuICAqLwotK2V4dGVybiBjaGFyICogYXNucHJpbnRmIChjaGFyICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwotK2V4dGVybiBjaGFyICogdmFzbnByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotKyAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKLSsKLSsjaWZkZWYJX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9WQVNOUFJJTlRGX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC92YXNud3ByaW50Zi5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3Zhc253cHJpbnRmLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42NzM2OTk3NTIgLTA0MDAKLUBAIC0wLDAgKzEsNDYgQEAKLSsvKiB2c3dwcmludGYgd2l0aCBhdXRvbWF0aWMgbWVtb3J5IGFsbG9jYXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1ZBU05XUFJJTlRGX0gKLSsjZGVmaW5lIF9WQVNOV1BSSU5URl9ICi0rCi0rLyogR2V0IHZhX2xpc3QuICAqLwotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsKLSsvKiBHZXQgd2NoYXJfdCwgc2l6ZV90LiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rI2lmZGVmCV9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rLyogV3JpdGUgZm9ybWF0dGVkIG91dHB1dCB0byBhIHN0cmluZyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgd2l0aCBtYWxsb2MoKS4KLSsgICBZb3UgY2FuIHBhc3MgYSBwcmVhbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgcmVzdWx0IGluIFJFU1VMVEJVRiBhbmQgaXRzCi0rICAgc2l6ZSBpbiAqTEVOR1RIUDsgb3RoZXJ3aXNlIHlvdSBwYXNzIFJFU1VMVEJVRiA9IE5VTEwuCi0rICAgSWYgc3VjY2Vzc2Z1bCwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdHJpbmcgKHRoaXMgbWF5IGJlID0gUkVTVUxUQlVGCi0rICAgaWYgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3YXMgbmVjZXNzYXJ5KSBhbmQgc2V0ICpMRU5HVEhQIHRvIHRoZQotKyAgIG51bWJlciBvZiByZXN1bHRpbmcgYnl0ZXMsIGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgVXBvbiBlcnJvciwgc2V0Ci0rICAgZXJybm8gYW5kIHJldHVybiBOVUxMLiAgKi8KLStleHRlcm4gd2NoYXJfdCAqIGFzbndwcmludGYgKHdjaGFyX3QgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIC4uLik7Ci0rZXh0ZXJuIHdjaGFyX3QgKiB2YXNud3ByaW50ZiAod2NoYXJfdCAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKTsKLSsKLSsjaWZkZWYJX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9WQVNOV1BSSU5URl9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvVkVSU0lPTgkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjc5Njk4ODQwIC0wNDAwCi1AQCAtMSArMSBAQAotLUdOVSBnZXR0ZXh0IGxpYnJhcnkgZnJvbSBnZXR0ZXh0LTAuMTAuMzIKLStHTlUgZ2V0dGV4dCBsaWJyYXJ5IGZyb20gZ2V0dGV4dC0wLjE0LjEKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC93cHJpbnRmLXBhcnNlLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvd3ByaW50Zi1wYXJzZS5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjk1Njk2NDA4IC0wNDAwCi1AQCAtMCwwICsxLDc1IEBACi0rLyogUGFyc2UgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1dQUklOVEZfUEFSU0VfSAotKyNkZWZpbmUgX1dQUklOVEZfUEFSU0VfSAotKwotKyNpbmNsdWRlICJwcmludGYtYXJncy5oIgotKwotKwotKy8qIEZsYWdzICovCi0rI2RlZmluZSBGTEFHX0dST1VQCSAxCS8qICcgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19MRUZUCSAyCS8qIC0gZmxhZyAqLwotKyNkZWZpbmUgRkxBR19TSE9XU0lHTgkgNAkvKiArIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfU1BBQ0UJIDgJLyogc3BhY2UgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19BTFQJMTYJLyogIyBmbGFnICovCi0rI2RlZmluZSBGTEFHX1pFUk8JMzIKLSsKLSsvKiBhcmdfaW5kZXggdmFsdWUgaW5kaWNhdGluZyB0aGF0IG5vIGFyZ3VtZW50IGlzIGNvbnN1bWVkLiAgKi8KLSsjZGVmaW5lIEFSR19OT05FCSh+KHNpemVfdCkwKQotKwotKy8qIEEgcGFyc2VkIGRpcmVjdGl2ZS4gICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBjb25zdCB3Y2hhcl90KiBkaXJfc3RhcnQ7Ci0rICBjb25zdCB3Y2hhcl90KiBkaXJfZW5kOwotKyAgaW50IGZsYWdzOwotKyAgY29uc3Qgd2NoYXJfdCogd2lkdGhfc3RhcnQ7Ci0rICBjb25zdCB3Y2hhcl90KiB3aWR0aF9lbmQ7Ci0rICBzaXplX3Qgd2lkdGhfYXJnX2luZGV4OwotKyAgY29uc3Qgd2NoYXJfdCogcHJlY2lzaW9uX3N0YXJ0OwotKyAgY29uc3Qgd2NoYXJfdCogcHJlY2lzaW9uX2VuZDsKLSsgIHNpemVfdCBwcmVjaXNpb25fYXJnX2luZGV4OwotKyAgd2NoYXJfdCBjb252ZXJzaW9uOyAvKiBkIGkgbyB1IHggWCBmIGUgRSBnIEcgYyBzIHAgbiBVICUgYnV0IG5vdCBDIFMgKi8KLSsgIHNpemVfdCBhcmdfaW5kZXg7Ci0rfQotK3djaGFyX3RfZGlyZWN0aXZlOwotKwotKy8qIEEgcGFyc2VkIGZvcm1hdCBzdHJpbmcuICAqLwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgc2l6ZV90IGNvdW50OwotKyAgd2NoYXJfdF9kaXJlY3RpdmUgKmRpcjsKLSsgIHNpemVfdCBtYXhfd2lkdGhfbGVuZ3RoOwotKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoOwotK30KLSt3Y2hhcl90X2RpcmVjdGl2ZXM7Ci0rCi0rCi0rLyogUGFyc2VzIHRoZSBmb3JtYXQgc3RyaW5nLiAgRmlsbHMgaW4gdGhlIG51bWJlciBOIG9mIGRpcmVjdGl2ZXMsIGFuZCBmaWxscwotKyAgIGluIGRpcmVjdGl2ZXNbMF0sIC4uLiwgZGlyZWN0aXZlc1tOLTFdLCBhbmQgc2V0cyBkaXJlY3RpdmVzW05dLmRpcl9zdGFydAotKyAgIHRvIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcuICBBbHNvIGZpbGxzIGluIHRoZSBhcmdfdHlwZSBmaWVsZHMgb2YgdGhlCi0rICAgYXJndW1lbnRzIGFuZCB0aGUgbmVlZGVkIGNvdW50IG9mIGFyZ3VtZW50cy4gICovCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbHNlCi0rZXh0ZXJuCi0rI2VuZGlmCi0raW50IHdwcmludGZfcGFyc2UgKGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgd2NoYXJfdF9kaXJlY3RpdmVzICpkLCBhcmd1bWVudHMgKmEpOwotKwotKyNlbmRpZiAvKiBfV1BSSU5URl9QQVJTRV9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwveG9wZW4tbXNnLnNlZAkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC94b3Blbi1tc2cuc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwxMDQgKzAsMCBAQAotLSMgcG8ybXNnLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gWC9PcGVuIHN0eWxlIC5tc2cgZmlsZQotLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0tIwotLSMKLS0jIFRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIC5tc2cgc2hvdWxkIGJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZQotLSMgbWVzc2FnZSBzZXQgbnVtYmVyLiAgV2UgdXNlIGFsd2F5cyBzZXQgbnVtYmVyIDEuCi0tIwotLTEgewotLSAgaVwKLS0kc2V0IDEgIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgcG8ybXNnLnNlZAotLSAgaAotLSAgcy8uKi8wLwotLSAgeAotLX0KLS0jCi0tIyBXZSBjb3B5IGFsbCBjb21tZW50cyBpbnRvIHRoZSAubXNnIGZpbGUuICBQZXJoYXBzIHRoZXkgY2FuIGhlbHAuCi0tIwotLS9eIy8gcy9eI1sgCV0qLyQgL3AKLS0jCi0tIyBXZSBjb3B5IHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFzIGEgY29tbWVudCBpbnRvIHRoZSAubXNnIGZpbGUuCi0tIwotLS9ebXNnaWQvIHsKLS0jIERvZXMgbm90IHdvcmsgbm93Ci0tIyAgLyIkLyEgewotLSMgICAgcy9cXCQvLwotLSMgICAgcy8kLyAuLi4gKG1vcmUgbGluZXMgZm9sbG93aW5nKSIvCi0tIyAgfQotLSAgcy9ebXNnaWRbIAldKiJcKC4qXCkiJC8kIE9yaWdpbmFsIE1lc3NhZ2U6IFwxLwotLSAgcAotLX0KLS0jCi0tIyBUaGUgLm1zZyBmaWxlIGNvbnRhaW5zLCBvdGhlciB0aGVuIHRoZSAucG8gZmlsZSwgb25seSB0aGUgdHJhbnNsYXRpb25zCi0tIyBidXQgZWFjaCBnaXZlbiBhIHVuaXF1ZSBJRC4gIFN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGJ5IDEgZm9yCi0tIyBlYWNoIG1lc3NhZ2Ugd2UgYXNzaWduIHRoZW0gdG8gdGhlIG1lc3NhZ2VzLgotLSMgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIC5wbyBmaWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNhdC1pZC10YmwuYyBmaWxlCi0tIyAod2l0aCBwby10by10YmwpIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBoZXJlLiAgKEF0IGxlYXN0IHRoZSBvcmRlcgotLSMgb2YgZGVjbGFyYXRpb25zIG11c3Qgbm90IGJlIGNoYW5nZWQuKQotLSMKLS0vXm1zZ3N0ci8gewotLSAgcy9tc2dzdHJbIAldKiJcKC4qXCkiL1wxLwotLSAgeAotLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5Ci0tIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KLS0gIHRkCi0tIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgotLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgotLSAgOmQKLS0gIHMvOVwoXypcKSQvX1wxLwotLSAgdGQKLS0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgotLSAgcy9eXChfKlwpJC8wXDEvCi0tIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCi0tICBzLzhcKF8qXCkkLzlcMS8KLS0gIHMvN1woXypcKSQvOFwxLwotLSAgcy82XChfKlwpJC83XDEvCi0tICBzLzVcKF8qXCkkLzZcMS8KLS0gIHMvNFwoXypcKSQvNVwxLwotLSAgcy8zXChfKlwpJC80XDEvCi0tICBzLzJcKF8qXCkkLzNcMS8KLS0gIHMvMVwoXypcKSQvMlwxLwotLSAgcy8wXChfKlwpJC8xXDEvCi0tIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgotLSAgcy9fLzAvZwotLSAgeAotLSMgQnJpbmcgdGhlIGxpbmUgaW4gdGhlIGZvcm1hdCBgPG51bWJlcj4gPG1lc3NhZ2U+JwotLSAgRwotLSAgcy9eW15cbl0qJC8mIC8KLS0gIHMvXCguKlwpXG5cKFswLTldKlwpL1wyIFwxLwotLSMgQ2xlYXIgZmxhZyBmcm9tIGxhc3Qgc3Vic3RpdHV0aW9uLgotLSAgdGIKLS0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lLgotLSAgOmIKLS0gIE4KLS0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBhIGNvbnRpbnVhdGlvbiBsaW5lLgotLSAgcy9cKC4qXG5cKSJcKC4qXCkiL1wxXDIvCi0tIyBZZXMsIHRoZW4gYnJhbmNoLgotLSAgdGEKLS0gIFAKLS0gIEQKLS0jIE5vdGUgdGhhdCBgRCcgaW5jbHVkZXMgYSBqdW1wIHRvIHRoZSBzdGFydCEhCi0tIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgotLSAgOmEKLS0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLwotLSAgUAotLSMgV2UgY2Fubm90IHVzZSB0aGUgc2VkIGNvbW1hbmQgYEQnIGhlcmUKLS0gIHMvLipcblwoLipcKS9cMS8KLS0gIHRiCi0tfQotLWQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC94c2l6ZS5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3hzaXplLmgJMjAwNC0wOS0xMiAxNDo0MDozNC43MDA2OTU2NDggLTA0MDAKLUBAIC0wLDAgKzEsMTA5IEBACi0rLyogeHNpemUuaCAtLSBDaGVja2VkIHNpemVfdCBjb21wdXRhdGlvbnMuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9YU0laRV9ICi0rI2RlZmluZSBfWFNJWkVfSAotKwotKy8qIEdldCBzaXplX3QuICAqLwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvKiBHZXQgU0laRV9NQVguICAqLwotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaWYgSEFWRV9TVERJTlRfSAotKyMgaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2VuZGlmCi0rCi0rLyogVGhlIHNpemUgb2YgbWVtb3J5IG9iamVjdHMgaXMgb2Z0ZW4gY29tcHV0ZWQgdGhyb3VnaCBleHByZXNzaW9ucyBvZgotKyAgIHR5cGUgc2l6ZV90LiBFeGFtcGxlOgotKyAgICAgIHZvaWQqIHAgPSBtYWxsb2MgKGhlYWRlcl9zaXplICsgbiAqIGVsZW1lbnRfc2l6ZSkuCi0rICAgVGhlc2UgY29tcHV0YXRpb25zIGNhbiBsZWFkIHRvIG92ZXJmbG93LiAgV2hlbiB0aGlzIGhhcHBlbnMsIG1hbGxvYygpCi0rICAgcmV0dXJucyBhIHBpZWNlIG9mIG1lbW9yeSB0aGF0IGlzIHdheSB0b28gc21hbGwsIGFuZCB0aGUgcHJvZ3JhbSB0aGVuCi0rICAgY3Jhc2hlcyB3aGlsZSBhdHRlbXB0aW5nIHRvIGZpbGwgdGhlIG1lbW9yeS4KLSsgICBUbyBhdm9pZCB0aGlzLCB0aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MgaW4gdGhpcyBmaWxlIGNoZWNrIGZvciBvdmVyZmxvdy4KLSsgICBUaGUgY29udmVudGlvbiBpcyB0aGF0IFNJWkVfTUFYIHJlcHJlc2VudHMgb3ZlcmZsb3cuCi0rICAgbWFsbG9jIChTSVpFX01BWCkgaXMgbm90IGd1YXJhbnRlZWQgdG8gZmFpbCAtLSB0aGluayBvZiBhIG1hbGxvYwotKyAgIGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBtbWFwIC0tLCBpdCdzIHJlY29tbWVuZGVkIHRvIHVzZSBzaXplX292ZXJmbG93X3AoKQotKyAgIG9yIHNpemVfaW5fYm91bmRzX3AoKSBiZWZvcmUgaW52b2tpbmcgbWFsbG9jKCkuCi0rICAgVGhlIGV4YW1wbGUgdGh1cyBiZWNvbWVzOgotKyAgICAgIHNpemVfdCBzaXplID0geHN1bSAoaGVhZGVyX3NpemUsIHh0aW1lcyAobiwgZWxlbWVudF9zaXplKSk7Ci0rICAgICAgdm9pZCAqcCA9IChzaXplX2luX2JvdW5kc19wIChzaXplKSA/IG1hbGxvYyAoc2l6ZSkgOiBOVUxMKTsKLSsqLwotKwotKy8qIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhbHVlID49IDAgdG8gdHlwZSBzaXplX3QuICAqLwotKyNkZWZpbmUgeGNhc3Rfc2l6ZV90KE4pIFwKLSsgICgoTikgPD0gU0laRV9NQVggPyAoc2l6ZV90KSAoTikgOiBTSVpFX01BWCkKLSsKLSsvKiBTdW0gb2YgdHdvIHNpemVzLCB3aXRoIG92ZXJmbG93IGNoZWNrLiAgKi8KLStzdGF0aWMgaW5saW5lIHNpemVfdAotKyNpZiBfX0dOVUNfXyA+PSAzCi0rX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKLSsjZW5kaWYKLSt4c3VtIChzaXplX3Qgc2l6ZTEsIHNpemVfdCBzaXplMikKLSt7Ci0rICBzaXplX3Qgc3VtID0gc2l6ZTEgKyBzaXplMjsKLSsgIHJldHVybiAoc3VtID49IHNpemUxID8gc3VtIDogU0laRV9NQVgpOwotK30KLSsKLSsvKiBTdW0gb2YgdGhyZWUgc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90Ci0rI2lmIF9fR05VQ19fID49IDMKLStfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotKyNlbmRpZgotK3hzdW0zIChzaXplX3Qgc2l6ZTEsIHNpemVfdCBzaXplMiwgc2l6ZV90IHNpemUzKQotK3sKLSsgIHJldHVybiB4c3VtICh4c3VtIChzaXplMSwgc2l6ZTIpLCBzaXplMyk7Ci0rfQotKwotKy8qIFN1bSBvZiBmb3VyIHNpemVzLCB3aXRoIG92ZXJmbG93IGNoZWNrLiAgKi8KLStzdGF0aWMgaW5saW5lIHNpemVfdAotKyNpZiBfX0dOVUNfXyA+PSAzCi0rX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKLSsjZW5kaWYKLSt4c3VtNCAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIsIHNpemVfdCBzaXplMywgc2l6ZV90IHNpemU0KQotK3sKLSsgIHJldHVybiB4c3VtICh4c3VtICh4c3VtIChzaXplMSwgc2l6ZTIpLCBzaXplMyksIHNpemU0KTsKLSt9Ci0rCi0rLyogTWF4aW11bSBvZiB0d28gc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90Ci0rI2lmIF9fR05VQ19fID49IDMKLStfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotKyNlbmRpZgotK3htYXggKHNpemVfdCBzaXplMSwgc2l6ZV90IHNpemUyKQotK3sKLSsgIC8qIE5vIGV4cGxpY2l0IGNoZWNrIGlzIG5lZWRlZCBoZXJlLCBiZWNhdXNlIGZvciBhbnkgbjoKLSsgICAgIG1heCAoU0laRV9NQVgsIG4pID09IFNJWkVfTUFYIGFuZCBtYXggKG4sIFNJWkVfTUFYKSA9PSBTSVpFX01BWC4gICovCi0rICByZXR1cm4gKHNpemUxID49IHNpemUyID8gc2l6ZTEgOiBzaXplMik7Ci0rfQotKwotKy8qIE11bHRpcGxpY2F0aW9uIG9mIGEgY291bnQgd2l0aCBhbiBlbGVtZW50IHNpemUsIHdpdGggb3ZlcmZsb3cgY2hlY2suCi0rICAgVGhlIGNvdW50IG11c3QgYmUgPj0gMCBhbmQgdGhlIGVsZW1lbnQgc2l6ZSBtdXN0IGJlID4gMC4KLSsgICBUaGlzIGlzIGEgbWFjcm8sIG5vdCBhbiBpbmxpbmUgZnVuY3Rpb24sIHNvIHRoYXQgaXQgd29ya3MgY29ycmVjdGx5IGV2ZW4KLSsgICB3aGVuIE4gaXMgb2YgYSB3aWRlciB0dXBlIGFuZCBOID4gU0laRV9NQVguICAqLwotKyNkZWZpbmUgeHRpbWVzKE4sIEVMU0laRSkgXAotKyAgKChOKSA8PSBTSVpFX01BWCAvIChFTFNJWkUpID8gKHNpemVfdCkgKE4pICogKEVMU0laRSkgOiBTSVpFX01BWCkKLSsKLSsvKiBDaGVjayBmb3Igb3ZlcmZsb3cuICAqLwotKyNkZWZpbmUgc2l6ZV9vdmVyZmxvd19wKFNJWkUpIFwKLSsgICgoU0laRSkgPT0gU0laRV9NQVgpCi0rLyogQ2hlY2sgYWdhaW5zdCBvdmVyZmxvdy4gICovCi0rI2RlZmluZSBzaXplX2luX2JvdW5kc19wKFNJWkUpIFwKLSsgICgoU0laRSkgIT0gU0laRV9NQVgpCi0rCi0rI2VuZGlmIC8qIF9YU0laRV9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L0NoYW5nZUxvZwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvQ2hhbmdlTG9nCTIwMDQtMDktMTIgMTQ6NDA6MzUuMDU0NjQxODQwIC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rMjAwNC0wOS0xMiAgZ2V0dGV4dGl6ZSAgPGJ1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnPgotKwotKwkqIGNvZGVzZXQubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGdldHRleHQubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGdsaWJjMjEubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGljb252Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnRkaXYwLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnRtYXgubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGludHR5cGVzLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnR0eXBlc19oLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnR0eXBlcy1wcmkubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGlzYy1wb3NpeC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbGNtZXNzYWdlLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsaWItbGQubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGxpYi1saW5rLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsaWItcHJlZml4Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsb25nZG91YmxlLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsb25nbG9uZy5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbmxzLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBwby5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogcHJpbnRmLXBvc2l4Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBwcm9ndGVzdC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogc2lnbmVkLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBzaXplX21heC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogc3RkaW50X2gubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHVpbnRtYXhfdC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogdWxvbmdsb25nLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiB3Y2hhcl90Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiB3aW50X3QubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHhzaXplLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBNYWtlZmlsZS5hbTogTmV3IGZpbGUuCi0rCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2NvZGVzZXQubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2NvZGVzZXQubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44MjA2Nzc0MDggLTA0MDAKLUBAIC0wLDAgKzEsMjMgQEAKLSsjIGNvZGVzZXQubTQgc2VyaWFsIEFNMSAoZ2V0dGV4dC0wLjEwLjQwKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbQU1fTEFOR0lORk9fQ09ERVNFVF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBubF9sYW5naW5mbyBhbmQgQ09ERVNFVF0sIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQsCi0rICAgIFtBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxhbmdpbmZvLmg+XSwKLSsgICAgICBbY2hhciogY3MgPSBubF9sYW5naW5mbyhDT0RFU0VUKTtdLAotKyAgICAgIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9eWVzLAotKyAgICAgIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9bm8pCi0rICAgIF0pCi0rICBpZiB0ZXN0ICRhbV9jdl9sYW5naW5mb19jb2Rlc2V0ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0xBTkdJTkZPX0NPREVTRVQsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSA8bGFuZ2luZm8uaD4gYW5kIG5sX2xhbmdpbmZvKENPREVTRVQpLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2dldHRleHQubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2dldHRleHQubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44MjY2NzY0OTYgLTA0MDAKLUBAIC0wLDAgKzEsNDg3IEBACi0rIyBnZXR0ZXh0Lm00IHNlcmlhbCAyOCAoZ2V0dGV4dC0wLjEzKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotK2RubAotK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCi0rZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLStkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAotK2RubCBmdW5jdGlvbmFsaXR5LgotK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCi0rZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQotK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLStkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KLStkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwMy4KLSsKLStkbmwgTWFjcm8gdG8gYWRkIGZvciB1c2luZyBHTlUgZ2V0dGV4dC4KLSsKLStkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUKFtJTlRMU1lNQk9MXSwgW05FRURTWU1CT0xdLCBbSU5UTERJUl0pLgotK2RubCBJTlRMU1lNQk9MIGNhbiBiZSBvbmUgb2YgJ2V4dGVybmFsJywgJ25vLWxpYnRvb2wnLCAndXNlLWxpYnRvb2wnLiBUaGUKLStkbmwgICAgZGVmYXVsdCAoaWYgaXQgaXMgbm90IHNwZWNpZmllZCBvciBlbXB0eSkgaXMgJ25vLWxpYnRvb2wnLgotK2RubCAgICBJTlRMU1lNQk9MIHNob3VsZCBiZSAnZXh0ZXJuYWwnIGZvciBwYWNrYWdlcyB3aXRoIG5vIGludGwgZGlyZWN0b3J5LAotK2RubCAgICBhbmQgJ25vLWxpYnRvb2wnIG9yICd1c2UtbGlidG9vbCcgZm9yIHBhY2thZ2VzIHdpdGggYW4gaW50bCBkaXJlY3RvcnkuCi0rZG5sICAgIElmIElOVExTWU1CT0wgaXMgJ3VzZS1saWJ0b29sJywgdGhlbiBhIGxpYnRvb2wgbGlicmFyeQotK2RubCAgICAkKHRvcF9idWlsZGRpcikvaW50bC9saWJpbnRsLmxhIHdpbGwgYmUgY3JlYXRlZCAoc2hhcmVkIGFuZC9vciBzdGF0aWMsCi0rZG5sICAgIGRlcGVuZGluZyBvbiAtLXtlbmFibGUsZGlzYWJsZX0te3NoYXJlZCxzdGF0aWN9IGFuZCBvbiB0aGUgcHJlc2VuY2Ugb2YKLStkbmwgICAgQU0tRElTQUJMRS1TSEFSRUQpLiBJZiBJTlRMU1lNQk9MIGlzICduby1saWJ0b29sJywgYSBzdGF0aWMgbGlicmFyeQotK2RubCAgICAkKHRvcF9idWlsZGRpcikvaW50bC9saWJpbnRsLmEgd2lsbCBiZSBjcmVhdGVkLgotK2RubCBJZiBORUVEU1lNQk9MIGlzIHNwZWNpZmllZCBhbmQgaXMgJ25lZWQtbmdldHRleHQnLCB0aGVuIEdOVSBnZXR0ZXh0Ci0rZG5sICAgIGltcGxlbWVudGF0aW9ucyAoaW4gbGliYyBvciBsaWJpbnRsKSB3aXRob3V0IHRoZSBuZ2V0dGV4dCgpIGZ1bmN0aW9uCi0rZG5sICAgIHdpbGwgYmUgaWdub3JlZC4gIElmIE5FRURTWU1CT0wgaXMgc3BlY2lmaWVkIGFuZCBpcwotK2RubCAgICAnbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zJywgdGhlbiBHTlUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBkb24ndAotK2RubCAgICBzdXBwb3J0IHRoZSBJU08gQyA5OSA8aW50dHlwZXMuaD4gZm9ybWF0c3RyaW5nIG1hY3JvcyB3aWxsIGJlIGlnbm9yZWQuCi0rZG5sIElOVExESVIgaXMgdXNlZCB0byBmaW5kIHRoZSBpbnRsIGxpYnJhcmllcy4gIElmIGVtcHR5LAotK2RubCAgICB0aGUgdmFsdWUgYCQodG9wX2J1aWxkZGlyKS9pbnRsLycgaXMgdXNlZC4KLStkbmwKLStkbmwgVGhlIHJlc3VsdCBvZiB0aGUgY29uZmlndXJhdGlvbiBpcyBvbmUgb2YgdGhyZWUgY2FzZXM6Ci0rZG5sIDEpIEdOVSBnZXR0ZXh0LCBhcyBpbmNsdWRlZCBpbiB0aGUgaW50bCBzdWJkaXJlY3RvcnksIHdpbGwgYmUgY29tcGlsZWQKLStkbmwgICAgYW5kIHVzZWQuCi0rZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQotK2RubCAgICBDYXRhbG9nIGV4dGVuc2lvbjogLm1vIGFmdGVyIGluc3RhbGxhdGlvbiwgLmdtbyBpbiBzb3VyY2UgdHJlZQotK2RubCAyKSBHTlUgZ2V0dGV4dCBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5LgotK2RubCAgICBDYXRhbG9nIGZvcm1hdDogR05VIC0tPiBpbnN0YWxsIGluICQoZGF0YWRpcikKLStkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IC5tbyBhZnRlciBpbnN0YWxsYXRpb24sIC5nbW8gaW4gc291cmNlIHRyZWUKLStkbmwgMykgTm8gaW50ZXJuYXRpb25hbGl6YXRpb24sIGFsd2F5cyB1c2UgRW5nbGlzaCBtc2dpZC4KLStkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IG5vbmUKLStkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IG5vbmUKLStkbmwgSWYgSU5UTFNZTUJPTCBpcyAnZXh0ZXJuYWwnLCBvbmx5IGNhc2VzIDIgYW5kIDMgY2FuIG9jY3VyLgotK2RubCBUaGUgdXNlIG9mIC5nbW8gaXMgaGlzdG9yaWNhbCAoaXQgd2FzIG5lZWRlZCB0byBhdm9pZCBvdmVyd3JpdGluZyB0aGUKLStkbmwgR05VIGZvcm1hdCBjYXRhbG9ncyB3aGVuIGJ1aWxkaW5nIG9uIGEgcGxhdGZvcm0gd2l0aCBhbiBYL09wZW4gZ2V0dGV4dCksCi0rZG5sIGJ1dCB3ZSBrZWVwIGl0IGluIG9yZGVyIG5vdCB0byBmb3JjZSBpcnJlbGV2YW50IGZpbGVuYW1lIGNoYW5nZXMgb24gdGhlCi0rZG5sIG1haW50YWluZXJzLgotK2RubAotK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF0sCi0rWwotKyAgZG5sIEFyZ3VtZW50IGNoZWNraW5nLgotKyAgaWZlbHNlKFskMV0sIFtdLCAsIFtpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgLCBbaWZlbHNlKFskMV0sIFtuby1saWJ0b29sXSwgLCBbaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sICwKLSsgICAgW2VycnByaW50KFtFUlJPUjogaW52YWxpZCBmaXJzdCBhcmd1bWVudCB0byBBTV9HTlVfR0VUVEVYVAotK10pXSldKV0pXSkKLSsgIGlmZWxzZShbJDJdLCBbXSwgLCBbaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgLCBbaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLCAsCi0rICAgIFtlcnJwcmludChbRVJST1I6IGludmFsaWQgc2Vjb25kIGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCi0rXSldKV0pXSkKLSsgIGRlZmluZShndF9pbmNsdWRlZF9pbnRsLCBpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgW25vXSwgW3llc10pKQotKyAgZGVmaW5lKGd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeCwgaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sIFtsXSwgW10pKQotKwotKyAgQUNfUkVRVUlSRShbQU1fUE9fU1VCRElSU10pZG5sCi0rICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCi0rICAgIEFDX1JFUVVJUkUoW0FNX0lOVExfU1VCRElSXSlkbmwKLSsgIF0pCi0rCi0rICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSsKLSsgIGRubCBTb21ldGltZXMgbGliaW50bCByZXF1aXJlcyBsaWJpY29udiwgc28gZmlyc3Qgc2VhcmNoIGZvciBsaWJpY29udi4KLSsgIGRubCBJZGVhbGx5IHdlIHdvdWxkIGRvIHRoaXMgc2VhcmNoIG9ubHkgYWZ0ZXIgdGhlCi0rICBkbmwgICAgICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgotKyAgZG5sICAgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmMiICE9ICJ5ZXMiOyB0aGVuCi0rICBkbmwgdGVzdHMuIEJ1dCBpZiBjb25maWd1cmUuaW4gaW52b2tlcyBBTV9JQ09OViBhZnRlciBBTV9HTlVfR0VUVEVYVAotKyAgZG5sIHRoZSBjb25maWd1cmUgc2NyaXB0IHdvdWxkIG5lZWQgdG8gY29udGFpbiB0aGUgc2FtZSBzaGVsbCBjb2RlCi0rICBkbmwgYWdhaW4sIG91dHNpZGUgYW55ICdpZicuIFRoZXJlIGFyZSB0d28gc29sdXRpb25zOgotKyAgZG5sIC0gSW52b2tlIEFNX0lDT05WX0xJTktGTEFHU19CT0RZIGhlcmUsIG91dHNpZGUgYW55ICdpZicuCi0rICBkbmwgLSBDb250cm9sIHRoZSBleHBhbnNpb25zIGluIG1vcmUgZGV0YWlsIHVzaW5nIEFDX1BST1ZJREVfSUZFTFNFLgotKyAgZG5sIFNpbmNlIEFDX1BST1ZJREVfSUZFTFNFIGlzIG9ubHkgaW4gYXV0b2NvbmYgPj0gMi41MiBhbmQgbm90Ci0rICBkbmwgZG9jdW1lbnRlZCwgd2UgYXZvaWQgaXQuCi0rICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCAsIFsKLSsgICAgQUNfUkVRVUlSRShbQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFldKQotKyAgXSkKLSsKLSsgIGRubCBTZXQgVVNFX05MUy4KLSsgIEFNX05MUwotKwotKyAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWwotKyAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPW5vCi0rICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPW5vCi0rICBdKQotKyAgTElCSU5UTD0KLSsgIExUTElCSU5UTD0KLSsgIFBPU1VCPQotKwotKyAgZG5sIElmIHdlIHVzZSBOTFMgZmlndXJlIG91dCB3aGF0IG1ldGhvZAotKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KLSsgICAgZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0PW5vCi0rICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKLSsgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2V0dGV4dCBpcyByZXF1ZXN0ZWRdKQotKyAgICAgIEFDX0FSR19XSVRIKGluY2x1ZGVkLWdldHRleHQsCi0rICAgICAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dCB1c2UgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaW5jbHVkZWQgaGVyZV0sCi0rICAgICAgICBubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0PSR3aXRodmFsLAotKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD1ubykKLSsgICAgICBBQ19NU0dfUkVTVUxUKCRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0KQotKwotKyAgICAgIG5sc19jdl91c2VfZ251X2dldHRleHQ9IiRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0IgotKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgotKyAgICBdKQotKyAgICAgICAgZG5sIFVzZXIgZG9lcyBub3QgaW5zaXN0IG9uIHVzaW5nIEdOVSBOTFMgbGlicmFyeS4gIEZpZ3VyZSBvdXQgd2hhdAotKyAgICAgICAgZG5sIHRvIHVzZS4gIElmIEdOVSBnZXR0ZXh0IGlzIGF2YWlsYWJsZSB3ZSB1c2UgdGhpcy4gIEVsc2Ugd2UgaGF2ZQotKyAgICAgICAgZG5sIHRvIGZhbGwgYmFjayB0byBHTlUgTkxTIGxpYnJhcnkuCi0rCi0rICAgICAgICBkbmwgQWRkIGEgdmVyc2lvbiBudW1iZXIgdG8gdGhlIGNhY2hlIG1hY3Jvcy4KLSsgICAgICAgIGRlZmluZShbZ3RfYXBpX3ZlcnNpb25dLCBpZmVsc2UoWyQyXSwgW25lZWQtZm9ybWF0c3RyaW5nLW1hY3Jvc10sIDMsIGlmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sIDIsIDEpKSkKLSsgICAgICAgIGRlZmluZShbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmNdLCBbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0XWd0X2FwaV92ZXJzaW9uW19saWJjXSkKLSsgICAgICAgIGRlZmluZShbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGxdLCBbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0XWd0X2FwaV92ZXJzaW9uW19saWJpbnRsXSkKLSsKLSsgICAgICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgR05VIGdldHRleHQgaW4gbGliY10sIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjLAotKyAgICAgICAgIFtBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmludGwuaD4KLStdaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLAotK1sjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCi0rI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKLSsjZW5kaWYKLStjaGFuZ2VxdW90ZSgsKWRubAotK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07Ci0rY2hhbmdlcXVvdGUoWyxdKWRubAotK10sIFtdKVtleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0rZXh0ZXJuIGludCAqX25sX2RvbWFpbl9iaW5kaW5ncztdLAotKyAgICAgICAgICAgIFtiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKLStyZXR1cm4gKGludCkgZ2V0dGV4dCAoIiIpXWlmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sIFsgKyAoaW50KSBuZ2V0dGV4dCAoIiIsICIiLCAwKV0sIFtdKVsgKyBfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9kb21haW5fYmluZGluZ3NdLAotKyAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjPXllcywKLSsgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliYz1ubyldKQotKwotKyAgICAgICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjIiAhPSAieWVzIjsgdGhlbgotKyAgICAgICAgICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCi0rICAgICAgICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWwotKyAgICAgICAgICAgIEFNX0lDT05WX0xJTksKLSsgICAgICAgICAgXSkKLSsgICAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliaW50bCBhbmQgZGVmaW5lIExJQklOVEwsIExUTElCSU5UTCBhbmQgSU5DSU5UTAotKyAgICAgICAgICBkbmwgYWNjb3JkaW5nbHkuIERvbid0IHVzZSBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ludGxdLFtpY29udl0pCi0rICAgICAgICAgIGRubCBiZWNhdXNlIHRoYXQgd291bGQgYWRkICItbGljb252IiB0byBMSUJJTlRMIGFuZCBMVExJQklOVEwKLSsgICAgICAgICAgZG5sIGV2ZW4gaWYgbGliaWNvbnYgZG9lc24ndCBleGlzdC4KLSsgICAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpbnRsXSkKLSsgICAgICAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBHTlUgZ2V0dGV4dCBpbiBsaWJpbnRsXSwKLSsgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bCwKLSsgICAgICAgICAgIFtndF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0rICAgICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DSU5UTCIKLSsgICAgICAgICAgICBndF9zYXZlX0xJQlM9IiRMSUJTIgotKyAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJTlRMIgotKyAgICAgICAgICAgIGRubCBOb3cgc2VlIHdoZXRoZXIgbGliaW50bCBleGlzdHMgYW5kIGRvZXMgbm90IGRlcGVuZCBvbiBsaWJpY29udi4KLSsgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmludGwuaD4KLStdaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLAotK1sjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCi0rI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKLSsjZW5kaWYKLStjaGFuZ2VxdW90ZSgsKWRubAotK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07Ci0rY2hhbmdlcXVvdGUoWyxdKWRubAotK10sIFtdKVtleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0rZXh0ZXJuCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rIkMiCi0rI2VuZGlmCi0rY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoKTtdLAotKyAgICAgICAgICAgICAgW2JpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOwotK3JldHVybiAoaW50KSBnZXR0ZXh0ICgiIildaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgWyArIChpbnQpIG5nZXR0ZXh0ICgiIiwgIiIsIDApXSwgW10pWyArIF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2V4cGFuZF9hbGlhcyAoMCldLAotKyAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9eWVzLAotKyAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9bm8pCi0rICAgICAgICAgICAgZG5sIE5vdyBzZWUgd2hldGhlciBsaWJpbnRsIGV4aXN0cyBhbmQgZGVwZW5kcyBvbiBsaWJpY29udi4KLSsgICAgICAgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiICE9IHllcyAmJiB0ZXN0IC1uICIkTElCSUNPTlYiOyB0aGVuCi0rICAgICAgICAgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCi0rICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmludGwuaD4KLStdaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLAotK1sjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCi0rI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKLSsjZW5kaWYKLStjaGFuZ2VxdW90ZSgsKWRubAotK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07Ci0rY2hhbmdlcXVvdGUoWyxdKWRubAotK10sIFtdKVtleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0rZXh0ZXJuCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rIkMiCi0rI2VuZGlmCi0rY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoKTtdLAotKyAgICAgICAgICAgICAgICBbYmluZHRleHRkb21haW4gKCIiLCAiIik7Ci0rcmV0dXJuIChpbnQpIGdldHRleHQgKCIiKV1pZmVsc2UoWyQyXSwgW25lZWQtbmdldHRleHRdLCBbICsgKGludCkgbmdldHRleHQgKCIiLCAiIiwgMCldLCBbXSlbICsgX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgwKV0sCi0rICAgICAgICAgICAgICAgW0xJQklOVEw9IiRMSUJJTlRMICRMSUJJQ09OViIKLSsgICAgICAgICAgICAgICAgTFRMSUJJTlRMPSIkTFRMSUJJTlRMICRMVExJQklDT05WIgotKyAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bD15ZXMKLSsgICAgICAgICAgICAgICBdKQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgQ1BQRkxBR1M9IiRndF9zYXZlX0NQUEZMQUdTIgotKyAgICAgICAgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKLSsgICAgICAgIGZpCi0rCi0rICAgICAgICBkbmwgSWYgYW4gYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZCBHTlUgZ2V0dGV4dCgpIGlzIGZvdW5kLAotKyAgICAgICAgZG5sIHVzZSBpdC4gIEJ1dCBpZiB0aGlzIG1hY3JvIGlzIHVzZWQgaW4gR05VIGdldHRleHQsIGFuZCBHTlUKLSsgICAgICAgIGRubCBnZXR0ZXh0IGlzIGFscmVhZHkgcHJlaW5zdGFsbGVkIGluIGxpYmludGwsIHdlIHVwZGF0ZSB0aGlzCi0rICAgICAgICBkbmwgbGliaW50bC4gIChDZi4gdGhlIGluc3RhbGwgcnVsZSBpbiBpbnRsL01ha2VmaWxlLmluLikKLSsgICAgICAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliYyIgPSAieWVzIiBcCi0rICAgICAgICAgICB8fCB7IHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bCIgPSAieWVzIiBcCi0rICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXJ1bnRpbWUgXAotKyAgICAgICAgICAgICAgICAmJiB0ZXN0ICIkUEFDS0FHRSIgIT0gZ2V0dGV4dC10b29sczsgfTsgdGhlbgotKyAgICAgICAgICBndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQ9eWVzCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGRubCBSZXNldCB0aGUgdmFsdWVzIHNldCBieSBzZWFyY2hpbmcgZm9yIGxpYmludGwuCi0rICAgICAgICAgIExJQklOVEw9Ci0rICAgICAgICAgIExUTElCSU5UTD0KLSsgICAgICAgICAgSU5DSU5UTD0KLSsgICAgICAgIGZpCi0rCi0rICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKLSsgICAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiICE9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICAgIGRubCBHTlUgZ2V0dGV4dCBpcyBub3QgZm91bmQgaW4gdGhlIEMgbGlicmFyeS4KLSsgICAgICAgICAgZG5sIEZhbGwgYmFjayBvbiBpbmNsdWRlZCBHTlUgZ2V0dGV4dCBsaWJyYXJ5LgotKyAgICAgICAgICBubHNfY3ZfdXNlX2dudV9nZXR0ZXh0PXllcwotKyAgICAgICAgZmkKLSsgICAgICBmaQotKwotKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICBkbmwgTWFyayBhY3Rpb25zIHVzZWQgdG8gZ2VuZXJhdGUgR05VIE5MUyBsaWJyYXJ5LgotKyAgICAgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKLSsgICAgICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPXllcwotKyAgICAgICAgTElCSU5UTD0iaWZlbHNlKFskM10sW10sXCR7dG9wX2J1aWxkZGlyfS9pbnRsLFskM10pL2xpYmludGwuW11ndF9saWJ0b29sX3N1ZmZpeF9wcmVmaXhbXWEgJExJQklDT05WIgotKyAgICAgICAgTFRMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5bXWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeFtdYSAkTFRMSUJJQ09OViIKLSsgICAgICAgIExJQlM9YGVjaG8gIiAkTElCUyAiIHwgc2VkIC1lICdzLyAtbGludGwgLyAvJyAtZSAncy9eIC8vJyAtZSAncy8gJC8vJ2AKLSsgICAgICBmaQotKwotKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAotKyAgICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICBkbmwgTWFyayBhY3Rpb25zIHRvIHVzZSBHTlUgZ2V0dGV4dCB0b29scy4KLSsgICAgICAgIENBVE9CSkVYVD0uZ21vCi0rICAgICAgZmkKLSsgICAgXSkKLSsKLSsgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIiBcCi0rICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgQUNfREVGSU5FKEVOQUJMRV9OTFMsIDEsCi0rICAgICAgICBbRGVmaW5lIHRvIDEgaWYgdHJhbnNsYXRpb24gb2YgcHJvZ3JhbSBtZXNzYWdlcyB0byB0aGUgdXNlcidzIG5hdGl2ZSBsYW5ndWFnZQotKyAgIGlzIHJlcXVlc3RlZC5dKQotKyAgICBlbHNlCi0rICAgICAgVVNFX05MUz1ubwotKyAgICBmaQotKyAgZmkKLSsKLSsgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB1c2UgTkxTXSkKLSsgIEFDX01TR19SRVNVTFQoWyRVU0VfTkxTXSkKLSsgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCi0rICAgIEFDX01TR19DSEVDS0lORyhbd2hlcmUgdGhlIGdldHRleHQgZnVuY3Rpb24gY29tZXMgZnJvbV0pCi0rICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiID0gInllcyI7IHRoZW4KLSsgICAgICAgIGd0X3NvdXJjZT0iZXh0ZXJuYWwgbGliaW50bCIKLSsgICAgICBlbHNlCi0rICAgICAgICBndF9zb3VyY2U9ImxpYmMiCi0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIGd0X3NvdXJjZT0iaW5jbHVkZWQgaW50bCBkaXJlY3RvcnkiCi0rICAgIGZpCi0rICAgIEFDX01TR19SRVNVTFQoWyRndF9zb3VyY2VdKQotKyAgZmkKLSsKLSsgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCi0rCi0rICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiID0gInllcyI7IHRoZW4KLSsgICAgICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpbnRsXSkKLSsgICAgICAgIEFDX01TR19SRVNVTFQoWyRMSUJJTlRMXSkKLSsgICAgICAgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lOVExdKQotKyAgICAgIGZpCi0rCi0rICAgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIHBhY2thZ2VzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICAgIEFDX0RFRklORShIQVZFX0dFVFRFWFQsIDEsCi0rICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBnZXR0ZXh0KCkgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZC5dKQotKyAgICAgIEFDX0RFRklORShIQVZFX0RDR0VUVEVYVCwgMSwKLSsgICAgICAgW0RlZmluZSBpZiB0aGUgR05VIGRjZ2V0dGV4dCgpIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCBvciBwcmVpbnN0YWxsZWQuXSkKLSsgICAgZmkKLSsKLSsgICAgZG5sIFdlIG5lZWQgdG8gcHJvY2VzcyB0aGUgcG8vIGRpcmVjdG9yeS4KLSsgICAgUE9TVUI9cG8KLSsgIGZpCi0rCi0rICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCi0rICAgIGRubCBJZiB0aGlzIGlzIHVzZWQgaW4gR05VIGdldHRleHQgd2UgaGF2ZSB0byBzZXQgQlVJTERfSU5DTFVERURfTElCSU5UTAotKyAgICBkbmwgdG8gJ3llcycgYmVjYXVzZSBzb21lIG9mIHRoZSB0ZXN0c3VpdGUgcmVxdWlyZXMgaXQuCi0rICAgIGlmIHRlc3QgIiRQQUNLQUdFIiA9IGdldHRleHQtcnVudGltZSB8fCB0ZXN0ICIkUEFDS0FHRSIgPSBnZXR0ZXh0LXRvb2xzOyB0aGVuCi0rICAgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKLSsgICAgZmkKLSsKLSsgICAgZG5sIE1ha2UgYWxsIHZhcmlhYmxlcyB3ZSB1c2Uga25vd24gdG8gYXV0b2NvbmYuCi0rICAgIEFDX1NVQlNUKEJVSUxEX0lOQ0xVREVEX0xJQklOVEwpCi0rICAgIEFDX1NVQlNUKFVTRV9JTkNMVURFRF9MSUJJTlRMKQotKyAgICBBQ19TVUJTVChDQVRPQkpFWFQpCi0rCi0rICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBjb25maWd1cmUuaW5zIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBubHNfY3ZfaGVhZGVyX2ludGw9Ci0rICAgIG5sc19jdl9oZWFkZXJfbGliZ3Q9Ci0rCi0rICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICAgIERBVEFESVJOQU1FPXNoYXJlCi0rICAgIEFDX1NVQlNUKERBVEFESVJOQU1FKQotKwotKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBJTlNUT0JKRVhUPS5tbwotKyAgICBBQ19TVUJTVChJTlNUT0JKRVhUKQotKwotKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBHRU5DQVQ9Z2VuY2F0Ci0rICAgIEFDX1NVQlNUKEdFTkNBVCkKLSsKLSsgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgICAgaWYgdGVzdCAiJFVTRV9JTkNMVURFRF9MSUJJTlRMIiA9IHllczsgdGhlbgotKyAgICAgIElOVExPQkpTPSJcJChHRVRUT0JKUykiCi0rICAgIGZpCi0rICAgIEFDX1NVQlNUKElOVExPQkpTKQotKwotKyAgICBkbmwgRW5hYmxlIGxpYnRvb2wgc3VwcG9ydCBpZiB0aGUgc3Vycm91bmRpbmcgcGFja2FnZSB3aXNoZXMgaXQuCi0rICAgIElOVExfTElCVE9PTF9TVUZGSVhfUFJFRklYPWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeAotKyAgICBBQ19TVUJTVChJTlRMX0xJQlRPT0xfU1VGRklYX1BSRUZJWCkKLSsgIF0pCi0rCi0rICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgSU5UTExJQlM9IiRMSUJJTlRMIgotKyAgQUNfU1VCU1QoSU5UTExJQlMpCi0rCi0rICBkbmwgTWFrZSBhbGwgZG9jdW1lbnRlZCB2YXJpYWJsZXMga25vd24gdG8gYXV0b2NvbmYuCi0rICBBQ19TVUJTVChMSUJJTlRMKQotKyAgQUNfU1VCU1QoTFRMSUJJTlRMKQotKyAgQUNfU1VCU1QoUE9TVUIpCi0rXSkKLSsKLSsKLStkbmwgQ2hlY2tzIGZvciBhbGwgcHJlcmVxdWlzaXRlcyBvZiB0aGUgaW50bCBzdWJkaXJlY3RvcnksCi0rZG5sIGV4Y2VwdCBmb3IgSU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVggKGFuZCBwb3NzaWJseSBMSUJUT09MKSwgSU5UTE9CSlMsCi0rZG5sICAgICAgICAgICAgVVNFX0lOQ0xVREVEX0xJQklOVEwsIEJVSUxEX0lOQ0xVREVEX0xJQklOVEwuCi0rQUNfREVGVU4oW0FNX0lOVExfU1VCRElSXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKWRubAotKyAgQUNfUkVRVUlSRShbQU1fTUtJTlNUQUxMRElSU10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfUkFOTElCXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0lTQ19QT1NJWF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19IRUFERVJfU1REQ10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19DX0NPTlNUXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2JoX0NfU0lHTkVEXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX1RZUEVfT0ZGX1RdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfVFlQRV9TSVpFX1RdKWRubAotKyAgQUNfUkVRVUlSRShbam1fQUNfVFlQRV9MT05HX0xPTkddKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfVFlQRV9MT05HRE9VQkxFXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2d0X1RZUEVfV0NIQVJfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9UWVBFX1dJTlRfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdKQotKyAgQUNfUkVRVUlSRShbZ3RfVFlQRV9JTlRNQVhfVF0pCi0rICBBQ19SRVFVSVJFKFtndF9QUklOVEZfUE9TSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfRlVOQ19BTExPQ0FdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfRlVOQ19NTUFQXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2ptX0dMSUJDMjFdKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfSU5URElWMF0pZG5sCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19UWVBFX1VJTlRNQVhfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9IRUFERVJfSU5UVFlQRVNfSF0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9JTlRUWVBFU19QUkldKWRubAotKyAgQUNfUkVRVUlSRShbZ2xfWFNJWkVdKWRubAotKwotKyAgQUNfQ0hFQ0tfVFlQRShbcHRyZGlmZl90XSwgLAotKyAgICBbQUNfREVGSU5FKFtwdHJkaWZmX3RdLCBbbG9uZ10sCi0rICAgICAgIFtEZWZpbmUgYXMgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiBzdWJ0cmFjdGluZyB0d28gcG9pbnRlcnMsIGlmIHRoZSBzeXN0ZW0gZG9lc24ndCBkZWZpbmUgaXQuXSkKLSsgICAgXSkKLSsgIEFDX0NIRUNLX0hFQURFUlMoW2FyZ3ouaCBsaW1pdHMuaCBsb2NhbGUuaCBubF90eXBlcy5oIG1hbGxvYy5oIHN0ZGRlZi5oIFwKLStzdGRsaWIuaCBzdHJpbmcuaCB1bmlzdGQuaCBzeXMvcGFyYW0uaF0pCi0rICBBQ19DSEVDS19GVU5DUyhbYXNwcmludGYgZndwcmludGYgZ2V0Y3dkIGdldGVnaWQgZ2V0ZXVpZCBnZXRnaWQgZ2V0dWlkIFwKLSttZW1wY3B5IG11bm1hcCBwdXRlbnYgc2V0ZW52IHNldGxvY2FsZSBzbnByaW50ZiBzdHBjcHkgc3RyY2FzZWNtcCBzdHJkdXAgXAotK3N0cnRvdWwgdHNlYXJjaCB3Y3NsZW4gX19hcmd6X2NvdW50IF9fYXJnel9zdHJpbmdpZnkgX19hcmd6X25leHQgXAotK19fZnNldGxvY2tpbmddKQotKwotKyAgZG5sIFVzZSB0aGUgX3NucHJpbnRmIGZ1bmN0aW9uIG9ubHkgaWYgaXQgaXMgZGVjbGFyZWQgKGJlY2F1c2Ugb24gTmV0QlNEIGl0Ci0rICBkbmwgaXMgZGVmaW5lZCBhcyBhIHdlYWsgYWxpYXMgb2Ygc25wcmludGY7IHdlIHByZWZlciB0byB1c2UgdGhlIGxhdHRlcikuCi0rICBndF9DSEVDS19ERUNMKF9zbnByaW50ZiwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rICBndF9DSEVDS19ERUNMKF9zbndwcmludGYsIFsjaW5jbHVkZSA8c3RkaW8uaD5dKQotKwotKyAgZG5sIFVzZSB0aGUgKl91bmxvY2tlZCBmdW5jdGlvbnMgb25seSBpZiB0aGV5IGFyZSBkZWNsYXJlZC4KLSsgIGRubCAoYmVjYXVzZSBzb21lIG9mIHRoZW0gd2VyZSBkZWZpbmVkIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgaW4gU29sYXJpcwotKyAgZG5sIDIuNS4xIGJ1dCB3ZXJlIHJlbW92ZWQgaW4gU29sYXJpcyAyLjYsIHdoZXJlYXMgd2Ugd2FudCBiaW5hcmllcyBidWlsdAotKyAgZG5sIG9uIFNvbGFyaXMgMi41LjEgdG8gcnVuIG9uIFNvbGFyaXMgMi42KS4KLSsgIGRubCBEb24ndCB1c2UgQUNfQ0hFQ0tfREVDTFMgYmVjYXVzZSBpdCBpc24ndCBzdXBwb3J0ZWQgaW4gYXV0b2NvbmYtMi4xMy4KLSsgIGd0X0NIRUNLX0RFQ0woZmVvZl91bmxvY2tlZCwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rICBndF9DSEVDS19ERUNMKGZnZXRzX3VubG9ja2VkLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKLSsgIGd0X0NIRUNLX0RFQ0woZ2V0Y191bmxvY2tlZCwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rCi0rICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCBpbgotKyAgICAqeWVzKSBIQVZFX1BPU0lYX1BSSU5URj0xIDs7Ci0rICAgICopIEhBVkVfUE9TSVhfUFJJTlRGPTAgOzsKLSsgIGVzYWMKLSsgIEFDX1NVQlNUKFtIQVZFX1BPU0lYX1BSSU5URl0pCi0rICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19hc3ByaW50ZiIgPSB5ZXM7IHRoZW4KLSsgICAgSEFWRV9BU1BSSU5URj0xCi0rICBlbHNlCi0rICAgIEhBVkVfQVNQUklOVEY9MAotKyAgZmkKLSsgIEFDX1NVQlNUKFtIQVZFX0FTUFJJTlRGXSkKLSsgIGlmIHRlc3QgIiRhY19jdl9mdW5jX3NucHJpbnRmIiA9IHllczsgdGhlbgotKyAgICBIQVZFX1NOUFJJTlRGPTEKLSsgIGVsc2UKLSsgICAgSEFWRV9TTlBSSU5URj0wCi0rICBmaQotKyAgQUNfU1VCU1QoW0hBVkVfU05QUklOVEZdKQotKyAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfd3ByaW50ZiIgPSB5ZXM7IHRoZW4KLSsgICAgSEFWRV9XUFJJTlRGPTEKLSsgIGVsc2UKLSsgICAgSEFWRV9XUFJJTlRGPTAKLSsgIGZpCi0rICBBQ19TVUJTVChbSEFWRV9XUFJJTlRGXSkKLSsKLSsgIEFNX0lDT05WCi0rICBBTV9MQU5HSU5GT19DT0RFU0VUCi0rICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfbG9jYWxlX2ggPSB5ZXM7IHRoZW4KLSsgICAgQU1fTENfTUVTU0FHRVMKLSsgIGZpCi0rCi0rICBkbmwgaW50bC9wbHVyYWwuYyBpcyBnZW5lcmF0ZWQgZnJvbSBpbnRsL3BsdXJhbC55LiBJdCByZXF1aXJlcyBiaXNvbiwKLSsgIGRubCBiZWNhdXNlIHBsdXJhbC55IHVzZXMgYmlzb24gc3BlY2lmaWMgZmVhdHVyZXMuIEl0IHJlcXVpcmVzIGF0IGxlYXN0Ci0rICBkbmwgYmlzb24tMS4yNiBiZWNhdXNlIGVhcmxpZXIgdmVyc2lvbnMgZ2VuZXJhdGUgYSBwbHVyYWwuYyB0aGF0IGRvZXNuJ3QKLSsgIGRubCBjb21waWxlLgotKyAgZG5sIGJpc29uIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgbWFpbnRhaW5lciAod2hvIHRvdWNoZXMgcGx1cmFsLnkpLiBCdXQgaW4KLSsgIGRubCBvcmRlciB0byBhdm9pZCBzZXBhcmF0ZSBNYWtlZmlsZXMgb3IgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlLCB3ZSBwdXQKLSsgIGRubCB0aGUgcnVsZSBpbiBnZW5lcmFsIE1ha2VmaWxlLiBOb3csIHNvbWUgcGVvcGxlIGNhcmVsZXNzbHkgdG91Y2ggdGhlCi0rICBkbmwgZmlsZXMgb3IgaGF2ZSBhIGJyb2tlbiAibWFrZSIgcHJvZ3JhbSwgaGVuY2UgdGhlIHBsdXJhbC5jIHJ1bGUgd2lsbAotKyAgZG5sIHNvbWV0aW1lcyBmaXJlLiBUbyBhdm9pZCBhbiBlcnJvciwgZGVmaW5lcyBCSVNPTiB0byAiOiIgaWYgaXQgaXMgbm90Ci0rICBkbmwgcHJlc2VudCBvciB0b28gb2xkLgotKyAgQUNfQ0hFQ0tfUFJPR1MoW0lOVExCSVNPTl0sIFtiaXNvbl0pCi0rICBpZiB0ZXN0IC16ICIkSU5UTEJJU09OIjsgdGhlbgotKyAgICBhY192ZXJjX2ZhaWw9eWVzCi0rICBlbHNlCi0rICAgIGRubCBGb3VuZCBpdCwgbm93IGNoZWNrIHRoZSB2ZXJzaW9uLgotKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3ZlcnNpb24gb2YgYmlzb25dKQotK2NoYW5nZXF1b3RlKDw8LD4+KWRubAotKyAgICBhY19wcm9nX3ZlcnNpb249YCRJTlRMQklTT04gLS12ZXJzaW9uIDI+JjEgfCBzZWQgLW4gJ3MvXi4qR05VIEJpc29uLiogXChbMC05XSpcLlswLTkuXSpcKS4qJC9cMS9wJ2AKLSsgICAgY2FzZSAkYWNfcHJvZ192ZXJzaW9uIGluCi0rICAgICAgJycpIGFjX3Byb2dfdmVyc2lvbj0idi4gPy4/PywgYmFkIjsgYWNfdmVyY19mYWlsPXllczs7Ci0rICAgICAgMS4yWzYtOV0qIHwgMS5bMy05XVswLTldKiB8IFsyLTldLiopCi0rY2hhbmdlcXVvdGUoWyxdKWRubAotKyAgICAgICAgIGFjX3Byb2dfdmVyc2lvbj0iJGFjX3Byb2dfdmVyc2lvbiwgb2siOyBhY192ZXJjX2ZhaWw9bm87OwotKyAgICAgICopIGFjX3Byb2dfdmVyc2lvbj0iJGFjX3Byb2dfdmVyc2lvbiwgYmFkIjsgYWNfdmVyY19mYWlsPXllczs7Ci0rICAgIGVzYWMKLSsgICAgQUNfTVNHX1JFU1VMVChbJGFjX3Byb2dfdmVyc2lvbl0pCi0rICBmaQotKyAgaWYgdGVzdCAkYWNfdmVyY19mYWlsID0geWVzOyB0aGVuCi0rICAgIElOVExCSVNPTj06Ci0rICBmaQotK10pCi0rCi0rCi0rZG5sIGd0X0NIRUNLX0RFQ0woRlVOQywgSU5DTFVERVMpCi0rZG5sIENoZWNrIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBkZWNsYXJlZC4KLStBQ19ERUZVTihbZ3RfQ0hFQ0tfREVDTF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgJDEgaXMgZGVjbGFyZWRdLCBhY19jdl9oYXZlX2RlY2xfJDEsCi0rICAgIFtBQ19UUllfQ09NUElMRShbJDJdLCBbCi0rI2lmbmRlZiAkMQotKyAgY2hhciAqcCA9IChjaGFyICopICQxOwotKyNlbmRpZgotK10sIGFjX2N2X2hhdmVfZGVjbF8kMT15ZXMsIGFjX2N2X2hhdmVfZGVjbF8kMT1ubyldKQotKyAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsXyQxID0geWVzOyB0aGVuCi0rICAgIGd0X3ZhbHVlPTEKLSsgIGVsc2UKLSsgICAgZ3RfdmFsdWU9MAotKyAgZmkKLSsgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9ERUNMX110cmFuc2xpdCgkMSwgW2Etel0sIFtBLVpdKSwgWyRndF92YWx1ZV0sCi0rICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYCQxJywgYW5kIHRvIDAgaWYgeW91IGRvbid0Ll0pCi0rXSkKLSsKLSsKLStkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oW2dldHRleHQtdmVyc2lvbl0pCi0rQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUX1ZFUlNJT05dLCBbXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvZ2xpYmMyMS5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvZ2xpYmMyMS5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjgzMzY3NTQzMiAtMDQwMAotQEAgLTAsMCArMSwzMiBAQAotKyMgZ2xpYmMyMS5tNCBzZXJpYWwgMiAoZmlsZXV0aWxzLTQuMS4zLCBnZXR0ZXh0LTAuMTAuNDApCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMC0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rIyBUZXN0IGZvciB0aGUgR05VIEMgTGlicmFyeSwgdmVyc2lvbiAyLjEgb3IgbmV3ZXIuCi0rIyBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbam1fR0xJQkMyMV0sCi0rICBbCi0rICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBMaWJyYXJ5IDIuMSBvciBuZXdlciwKLSsgICAgICBhY19jdl9nbnVfbGlicmFyeV8yXzEsCi0rICAgICAgW0FDX0VHUkVQX0NQUChbTHVja3kgR05VIHVzZXJdLAotKwlbCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fR05VX0xJQlJBUllfXwotKyAjaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTElCQ19fID4gMikKLSsgIEx1Y2t5IEdOVSB1c2VyCi0rICNlbmRpZgotKyNlbmRpZgotKwldLAotKwlhY19jdl9nbnVfbGlicmFyeV8yXzE9eWVzLAotKwlhY19jdl9nbnVfbGlicmFyeV8yXzE9bm8pCi0rICAgICAgXQotKyAgICApCi0rICAgIEFDX1NVQlNUKEdMSUJDMjEpCi0rICAgIEdMSUJDMjE9IiRhY19jdl9nbnVfbGlicmFyeV8yXzEiCi0rICBdCi0rKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pY29udi5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaWNvbnYubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44Mzk2NzQ1MjAgLTA0MDAKLUBAIC0wLDAgKzEsMTAzIEBACi0rIyBpY29udi5tNCBzZXJpYWwgQU00IChnZXR0ZXh0LTAuMTEuMykKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSwKLStbCi0rICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSsKLSsgIGRubCBTZWFyY2ggZm9yIGxpYmljb252IGFuZCBkZWZpbmUgTElCSUNPTlYsIExUTElCSUNPTlYgYW5kIElOQ0lDT05WCi0rICBkbmwgYWNjb3JkaW5nbHkuCi0rICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ljb252XSkKLStdKQotKwotK0FDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKLStbCi0rICBkbmwgU29tZSBzeXN0ZW1zIGhhdmUgaWNvbnYgaW4gbGliYywgc29tZSBoYXZlIGl0IGluIGxpYmljb252IChPU0YvMSBhbmQKLSsgIGRubCB0aG9zZSB3aXRoIHRoZSBzdGFuZGFsb25lIHBvcnRhYmxlIEdOVSBsaWJpY29udiBpbnN0YWxsZWQpLgotKwotKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKLSsgIGRubCBhY2NvcmRpbmdseS4KLSsgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKLSsKLSsgIGRubCBBZGQgJElOQ0lDT05WIHRvIENQUEZMQUdTIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2tzLAotKyAgZG5sIGJlY2F1c2UgaWYgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBsaWJpY29udiBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKLSsgIGRubCB2aWEgLS13aXRob3V0LWxpYmljb252LXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LiBUaGUgZmlyc3QKLSsgIGRubCBBQ19UUllfTElOSyB3aWxsIHRoZW4gZmFpbCwgdGhlIHNlY29uZCBBQ19UUllfTElOSyB3aWxsIHN1Y2NlZWQuCi0rICBhbV9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0rICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNJQ09OVl0pCi0rCi0rICBBQ19DQUNIRV9DSEVDSyhmb3IgaWNvbnYsIGFtX2N2X2Z1bmNfaWNvbnYsIFsKLSsgICAgYW1fY3ZfZnVuY19pY29udj0ibm8sIGNvbnNpZGVyIGluc3RhbGxpbmcgR05VIGxpYmljb252IgotKyAgICBhbV9jdl9saWJfaWNvbnY9bm8KLSsgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8aWNvbnYuaD5dLAotKyAgICAgIFtpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7Ci0rICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOwotKyAgICAgICBpY29udl9jbG9zZShjZCk7XSwKLSsgICAgICBhbV9jdl9mdW5jX2ljb252PXllcykKLSsgICAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiICE9IHllczsgdGhlbgotKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCi0rICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgotKyAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGljb252Lmg+XSwKLSsgICAgICAgIFtpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7Ci0rICAgICAgICAgaWNvbnYoY2QsTlVMTCxOVUxMLE5VTEwsTlVMTCk7Ci0rICAgICAgICAgaWNvbnZfY2xvc2UoY2QpO10sCi0rICAgICAgICBhbV9jdl9saWJfaWNvbnY9eWVzCi0rICAgICAgICBhbV9jdl9mdW5jX2ljb252PXllcykKLSsgICAgICBMSUJTPSIkYW1fc2F2ZV9MSUJTIgotKyAgICBmaQotKyAgXSkKLSsgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9JQ09OViwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaWNvbnYoKSBmdW5jdGlvbi5dKQotKyAgZmkKLSsgIGlmIHRlc3QgIiRhbV9jdl9saWJfaWNvbnYiID0geWVzOyB0aGVuCi0rICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpY29udl0pCi0rICAgIEFDX01TR19SRVNVTFQoWyRMSUJJQ09OVl0pCi0rICBlbHNlCi0rICAgIGRubCBJZiAkTElCSUNPTlYgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZCAkSU5DSUNPTlYKLSsgICAgZG5sIGVpdGhlci4KLSsgICAgQ1BQRkxBR1M9IiRhbV9zYXZlX0NQUEZMQUdTIgotKyAgICBMSUJJQ09OVj0KLSsgICAgTFRMSUJJQ09OVj0KLSsgIGZpCi0rICBBQ19TVUJTVChMSUJJQ09OVikKLSsgIEFDX1NVQlNUKExUTElCSUNPTlYpCi0rXSkKLSsKLStBQ19ERUZVTihbQU1fSUNPTlZdLAotK1sKLSsgIEFNX0lDT05WX0xJTksKLSsgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgotKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBpY29udiBkZWNsYXJhdGlvbl0pCi0rICAgIEFDX0NBQ0hFX1ZBTChhbV9jdl9wcm90b19pY29udiwgWwotKyAgICAgIEFDX1RSWV9DT01QSUxFKFsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGljb252Lmg+Ci0rZXh0ZXJuCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rIkMiCi0rI2VuZGlmCi0rI2lmIGRlZmluZWQoX19TVERDX18pIHx8IGRlZmluZWQoX19jcGx1c3BsdXMpCi0rc2l6ZV90IGljb252IChpY29udl90IGNkLCBjaGFyICogKmluYnVmLCBzaXplX3QgKmluYnl0ZXNsZWZ0LCBjaGFyICogKm91dGJ1Ziwgc2l6ZV90ICpvdXRieXRlc2xlZnQpOwotKyNlbHNlCi0rc2l6ZV90IGljb252KCk7Ci0rI2VuZGlmCi0rXSwgW10sIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9IiIsIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9ImNvbnN0IikKLSsgICAgICBhbV9jdl9wcm90b19pY29udj0iZXh0ZXJuIHNpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgJGFtX2N2X3Byb3RvX2ljb252X2FyZzEgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsiXSkKLSsgICAgYW1fY3ZfcHJvdG9faWNvbnY9YGVjaG8gIlskXWFtX2N2X3Byb3RvX2ljb252IiB8IHRyIC1zICcgJyB8IHNlZCAtZSAncy8oIC8oLydgCi0rICAgIEFDX01TR19SRVNVTFQoWyRde2FjX3Q6LQotKyAgICAgICAgIH1bJF1hbV9jdl9wcm90b19pY29udikKLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKElDT05WX0NPTlNULCAkYW1fY3ZfcHJvdG9faWNvbnZfYXJnMSwKLSsgICAgICBbRGVmaW5lIGFzIGNvbnN0IGlmIHRoZSBkZWNsYXJhdGlvbiBvZiBpY29udigpIG5lZWRzIGNvbnN0Ll0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ludGRpdjAubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2ludGRpdjAubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44NDU2NzM2MDggLTA0MDAKLUBAIC0wLDAgKzEsNzIgQEAKLSsjIGludGRpdjAubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMS4zKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW2d0X0lOVERJVjBdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotKwotKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBTSUdGUEVdLAotKyAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSwKLSsgICAgWwotKyAgICAgIEFDX1RSWV9SVU4oWwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rCi0rc3RhdGljIHZvaWQKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStzaWdmcGVfaGFuZGxlciAoaW50IHNpZykKLSsjZWxzZQotK3NpZ2ZwZV9oYW5kbGVyIChzaWcpIGludCBzaWc7Ci0rI2VuZGlmCi0rewotKyAgLyogRXhpdCB3aXRoIGNvZGUgMCBpZiBTSUdGUEUsIHdpdGggY29kZSAxIGlmIGFueSBvdGhlciBzaWduYWwuICAqLwotKyAgZXhpdCAoc2lnICE9IFNJR0ZQRSk7Ci0rfQotKwotK2ludCB4ID0gMTsKLStpbnQgeSA9IDA7Ci0raW50IHo7Ci0raW50IG5hbjsKLSsKLStpbnQgbWFpbiAoKQotK3sKLSsgIHNpZ25hbCAoU0lHRlBFLCBzaWdmcGVfaGFuZGxlcik7Ci0rLyogSVJJWCBhbmQgQUlYICh3aGVuICJ4bGMgLXFjaGVjayIgaXMgdXNlZCkgeWllbGQgc2lnbmFsIFNJR1RSQVAuICAqLwotKyNpZiAoZGVmaW5lZCAoX19zZ2kpIHx8IGRlZmluZWQgKF9BSVgpKSAmJiBkZWZpbmVkIChTSUdUUkFQKQotKyAgc2lnbmFsIChTSUdUUkFQLCBzaWdmcGVfaGFuZGxlcik7Ci0rI2VuZGlmCi0rLyogTGludXgvU1BBUkMgeWllbGRzIHNpZ25hbCBTSUdJTEwuICAqLwotKyNpZiBkZWZpbmVkIChfX3NwYXJjX18pICYmIGRlZmluZWQgKF9fbGludXhfXykKLSsgIHNpZ25hbCAoU0lHSUxMLCBzaWdmcGVfaGFuZGxlcik7Ci0rI2VuZGlmCi0rCi0rICB6ID0geCAvIHk7Ci0rICBuYW4gPSB5IC8geTsKLSsgIGV4aXQgKDEpOwotK30KLStdLCBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT15ZXMsIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPW5vLAotKyAgICAgICAgWwotKyAgICAgICAgICAjIEd1ZXNzIGJhc2VkIG9uIHRoZSBDUFUuCi0rICAgICAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KLSsgICAgICAgICAgICBhbHBoYSogfCBpWzM0NTY3XTg2IHwgbTY4ayB8IHMzOTAqKQotKyAgICAgICAgICAgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9Imd1ZXNzaW5nIHllcyI7OwotKyAgICAgICAgICAgICopCi0rICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0iZ3Vlc3Npbmcgbm8iOzsKLSsgICAgICAgICAgZXNhYwotKyAgICAgICAgXSkKLSsgICAgXSkKLSsgIGNhc2UgIiRndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSIgaW4KLSsgICAgKnllcykgdmFsdWU9MTs7Ci0rICAgICopIHZhbHVlPTA7OwotKyAgZXNhYwotKyAgQUNfREVGSU5FX1VOUVVPVEVEKElOVERJVjBfUkFJU0VTX1NJR0ZQRSwgJHZhbHVlLAotKyAgICBbRGVmaW5lIGlmIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgc2lnbmFsIFNJR0ZQRS5dKQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ludG1heC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaW50bWF4Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODU1NjcyMDg4IC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rIyBpbnRtYXgubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rZG5sIFRlc3Qgd2hldGhlciB0aGUgc3lzdGVtIGhhcyB0aGUgJ2ludG1heF90JyB0eXBlLCBidXQgZG9uJ3QgYXR0ZW1wdCB0bwotK2RubCBmaW5kIGEgcmVwbGFjZW1lbnQgaWYgaXQgaXMgbGFja2luZy4KLSsKLStBQ19ERUZVTihbZ3RfVFlQRV9JTlRNQVhfVF0sCi0rWwotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX0lOVFRZUEVTX0hdKQotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX1NURElOVF9IXSkKLSsgIEFDX0NBQ0hFX0NIRUNLKGZvciBpbnRtYXhfdCwgZ3RfY3ZfY19pbnRtYXhfdCwKLSsgICAgW0FDX1RSWV9DT01QSUxFKFsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+IAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2VuZGlmCi0rI2lmIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVgKLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjZW5kaWYKLStdLCBbaW50bWF4X3QgeCA9IC0xO10sIGd0X2N2X2NfaW50bWF4X3Q9eWVzLCBndF9jdl9jX2ludG1heF90PW5vKV0pCi0rICBpZiB0ZXN0ICRndF9jdl9jX2ludG1heF90ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0lOVE1BWF9ULCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpbnRtYXhfdCcgdHlwZSBpbiA8c3RkaW50Lmg+IG9yIDxpbnR0eXBlcy5oPi5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pbnR0eXBlc19oLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pbnR0eXBlc19oLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODY4NjcwMTEyIC0wNDAwCi1AQCAtMCwwICsxLDI4IEBACi0rIyBpbnR0eXBlc19oLm00IHNlcmlhbCA1IChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rIyBEZWZpbmUgSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWCBpZiA8aW50dHlwZXMuaD4gZXhpc3RzLAotKyMgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sIGFuZCBkZWNsYXJlcyB1aW50bWF4X3QuCi0rCi0rQUNfREVGVU4oW2ptX0FDX0hFQURFUl9JTlRUWVBFU19IXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGludHR5cGVzLmhdLCBqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaCwKLSsgIFtBQ19UUllfQ09NUElMRSgKLSsgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD5dLAotKyAgICBbdWludG1heF90IGkgPSAodWludG1heF90KSAtMTtdLAotKyAgICBqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaD15ZXMsCi0rICAgIGptX2FjX2N2X2hlYWRlcl9pbnR0eXBlc19oPW5vKV0pCi0rICBpZiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMsIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+LAotKyAgICAgICBhbmQgZGVjbGFyZXMgdWludG1heF90LiBdKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pbnR0eXBlcy5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaW50dHlwZXMubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44NjE2NzExNzYgLTA0MDAKLUBAIC0wLDAgKzEsMjcgQEAKLSsjIGludHR5cGVzLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTEuNCkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLSsjIERlZmluZSBIQVZFX0lOVFRZUEVTX0ggaWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZG9lc24ndCBjbGFzaCB3aXRoCi0rIyA8c3lzL3R5cGVzLmg+LgotKwotK0FDX0RFRlVOKFtndF9IRUFERVJfSU5UVFlQRVNfSF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBpbnR0eXBlcy5oXSwgZ3RfY3ZfaGVhZGVyX2ludHR5cGVzX2gsCi0rICBbCi0rICAgIEFDX1RSWV9DT01QSUxFKAotKyAgICAgIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+XSwKLSsgICAgICBbXSwgZ3RfY3ZfaGVhZGVyX2ludHR5cGVzX2g9eWVzLCBndF9jdl9oZWFkZXJfaW50dHlwZXNfaD1ubykKLSsgIF0pCi0rICBpZiB0ZXN0ICRndF9jdl9oZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JTlRUWVBFU19ILCAxLAotKyAgICAgIFtEZWZpbmUgaWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4uXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaW50dHlwZXMtcHJpLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pbnR0eXBlcy1wcmkubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44NzQ2NjkyMDAgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGludHR5cGVzLXByaS5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjExLjQpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotKyMgRGVmaW5lIFBSSV9NQUNST1NfQlJPS0VOIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMgYW5kIGRlZmluZXMgdGhlIFBSSSoKLSsjIG1hY3JvcyB0byBub24tc3RyaW5nIHZhbHVlcy4gIFRoaXMgaXMgdGhlIGNhc2Ugb24gQUlYIDQuMy4zLgotKwotK0FDX0RFRlVOKFtndF9JTlRUWVBFU19QUkldLAotK1sKLSsgIEFDX1JFUVVJUkUoW2d0X0hFQURFUl9JTlRUWVBFU19IXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2hlYWRlcl9pbnR0eXBlc19oID0geWVzOyB0aGVuCi0rICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBpbnR0eXBlcy5oIFBSSXhOTiBtYWNyb3MgYXJlIGJyb2tlbl0sCi0rICAgICAgZ3RfY3ZfaW50dHlwZXNfcHJpX2Jyb2tlbiwKLSsgICAgICBbCi0rICAgICAgICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2lmZGVmIFBSSWQzMgotK2NoYXIgKnAgPSBQUklkMzI7Ci0rI2VuZGlmCi0rXSwgW10sIGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW49bm8sIGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW49eWVzKQotKyAgICAgIF0pCi0rICBmaQotKyAgaWYgdGVzdCAiJGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW4iID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChQUklfTUFDUk9TX0JST0tFTiwgMSwKLSsgICAgICBbRGVmaW5lIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMgYW5kIGRlZmluZXMgdW51c2FibGUgUFJJKiBtYWNyb3MuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaXNjLXBvc2l4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pc2MtcG9zaXgubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44ODU2Njc1MjggLTA0MDAKLUBAIC0wLDAgKzEsMjYgQEAKLSsjIGlzYy1wb3NpeC5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjExLjIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rIyBUaGlzIGZpbGUgaXMgbm90IG5lZWRlZCB3aXRoIGF1dG9jb25mLTIuNTMgYW5kIG5ld2VyLiAgUmVtb3ZlIGl0IGluIDIwMDUuCi0rCi0rIyBUaGlzIHRlc3QgcmVwbGFjZXMgdGhlIG9uZSBpbiBhdXRvY29uZi4KLSsjIEN1cnJlbnRseSB0aGlzIG1hY3JvIHNob3VsZCBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGF1dG9jb25mIG1hY3JvCi0rIyBiZWNhdXNlIGdldHRleHQncyBnZXR0ZXh0Lm00IChkaXN0cmlidXRlZCBpbiB0aGUgYXV0b21ha2UgcGFja2FnZSkKLSsjIHN0aWxsIHVzZXMgaXQuICBPdGhlcndpc2UsIHRoZSB1c2UgaW4gZ2V0dGV4dC5tNCBtYWtlcyBhdXRvaGVhZGVyCi0rIyBnaXZlIHRoZXNlIGRpYWdub3N0aWNzOgotKyMgICBjb25maWd1cmUuaW46NTU2OiBBQ19UUllfQ09NUElMRSB3YXMgY2FsbGVkIGJlZm9yZSBBQ19JU0NfUE9TSVgKLSsjICAgY29uZmlndXJlLmluOjU1NjogQUNfVFJZX1JVTiB3YXMgY2FsbGVkIGJlZm9yZSBBQ19JU0NfUE9TSVgKLSsKLSt1bmRlZmluZShbQUNfSVNDX1BPU0lYXSkKLSsKLStBQ19ERUZVTihbQUNfSVNDX1BPU0lYXSwKLSsgIFsKLSsgICAgZG5sIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb2Jzb2xlc2NlbnQgQUNfSVNDX1BPU0lYIGtsdWRnZS4KLSsgICAgQUNfQ0hFQ0tfTElCKGNwb3NpeCwgc3RyZXJyb3IsIFtMSUJTPSIkTElCUyAtbGNwb3NpeCJdKQotKyAgXQotKykKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbGNtZXNzYWdlLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9sY21lc3NhZ2UubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45MDI2NjQ5NDQgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGxjbWVzc2FnZS5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS4KLSsKLSsjIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2NhbGUuaD4uCi0rCi0rQUNfREVGVU4oW0FNX0xDX01FU1NBR0VTXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIExDX01FU1NBR0VTXSwgYW1fY3ZfdmFsX0xDX01FU1NBR0VTLAotKyAgICBbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsb2NhbGUuaD5dLCBbcmV0dXJuIExDX01FU1NBR0VTXSwKLSsgICAgICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcywgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPW5vKV0pCi0rICBpZiB0ZXN0ICRhbV9jdl92YWxfTENfTUVTU0FHRVMgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTENfTUVTU0FHRVMsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2xpYi1sZC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbGliLWxkLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTA4NjY0MDMyIC0wNDAwCi1AQCAtMCwwICsxLDExMiBAQAotKyMgbGliLWxkLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTMpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIFN1YnJvdXRpbmVzIG9mIGxpYnRvb2wubTQsCi0rZG5sIHdpdGggcmVwbGFjZW1lbnRzIHMvQUNfL0FDX0xJQi8gYW5kIHMvbHRfY3YvYWNsX2N2LyB0byBhdm9pZCBjb2xsaXNpb24KLStkbmwgd2l0aCBsaWJ0b29sLm00LgotKwotK2RubCBGcm9tIGxpYnRvb2wtMS40LiBTZXRzIHRoZSB2YXJpYWJsZSB3aXRoX2dudV9sZCB0byB5ZXMgb3Igbm8uCi0rQUNfREVGVU4oW0FDX0xJQl9QUk9HX0xEX0dOVV0sCi0rW0FDX0NBQ0hFX0NIRUNLKFtpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZF0sIGFjbF9jdl9wcm9nX2dudV9sZCwKLStbIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGQncyBvbmx5IGFjY2VwdCAtdi4KLStjYXNlIGAkTEQgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgotKypHTlUqIHwgKid3aXRoIEJGRCcqKQotKyAgYWNsX2N2X3Byb2dfZ251X2xkPXllcyA7OwotKyopCi0rICBhY2xfY3ZfcHJvZ19nbnVfbGQ9bm8gOzsKLStlc2FjXSkKLSt3aXRoX2dudV9sZD0kYWNsX2N2X3Byb2dfZ251X2xkCi0rXSkKLSsKLStkbmwgRnJvbSBsaWJ0b29sLTEuNC4gU2V0cyB0aGUgdmFyaWFibGUgTEQuCi0rQUNfREVGVU4oW0FDX0xJQl9QUk9HX0xEXSwKLStbQUNfQVJHX1dJVEgoZ251LWxkLAotK1sgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub11dLAotK3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllcywgd2l0aF9nbnVfbGQ9bm8pCi0rQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0rQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotKyMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KLSsjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KLStpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotKyAgZWNobyAiIyEgL2Jpbi9zaCIgPmNvbmYkJC5zaAotKyAgZWNobyAgImV4aXQgMCIgICA+PmNvbmYkJC5zaAotKyAgY2htb2QgK3ggY29uZiQkLnNoCi0rICBpZiAoUEFUSD0iL25vbmV4aXN0ZW50Oy4iOyBjb25mJCQuc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICBQQVRIX1NFUEFSQVRPUj0nOycKLSsgIGVsc2UKLSsgICAgUEFUSF9TRVBBUkFUT1I9OgotKyAgZmkKLSsgIHJtIC1mIGNvbmYkJC5zaAotK2ZpCi0rYWNfcHJvZz1sZAotK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KLSsgIEFDX01TR19DSEVDS0lORyhbZm9yIGxkIHVzZWQgYnkgR0NDXSkKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyopCi0rICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKLSsgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OwotKyAgKikKLSsgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1YCA7OwotKyAgZXNhYwotKyAgY2FzZSAkYWNfcHJvZyBpbgotKyAgICAjIEFjY2VwdCBhYnNvbHV0ZSBwYXRocy4KLSsgICAgW1tcXC9dKiB8IFtBLVphLXpdOltcXC9dKildCi0rICAgICAgW3JlX2RpcmVsdD0nL1teL11bXi9dKi9cLlwuLyddCi0rICAgICAgIyBDYW5vbmljYWxpemUgdGhlIHBhdGggb2YgbGQKLSsgICAgICBhY19wcm9nPWBlY2hvICRhY19wcm9nfCBzZWQgJ3MlXFxcXCUvJWcnYAotKyAgICAgIHdoaWxlIGVjaG8gJGFjX3Byb2cgfCBncmVwICIkcmVfZGlyZWx0IiA+IC9kZXYvbnVsbCAyPiYxOyBkbwotKwlhY19wcm9nPWBlY2hvICRhY19wcm9nfCBzZWQgInMlJHJlX2RpcmVsdCUvJSJgCi0rICAgICAgZG9uZQotKyAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9IiRhY19wcm9nIgotKyAgICAgIDs7Ci0rICAiIikKLSsgICAgIyBJZiBpdCBmYWlscywgdGhlbiBwcmV0ZW5kIHdlIGFyZW4ndCB1c2luZyBHQ0MuCi0rICAgIGFjX3Byb2c9bGQKLSsgICAgOzsKLSsgICopCi0rICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRoZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KLSsgICAgd2l0aF9nbnVfbGQ9dW5rbm93bgotKyAgICA7OwotKyAgZXNhYwotK2VsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKLStlbHNlCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBub24tR05VIGxkXSkKLStmaQotK0FDX0NBQ0hFX1ZBTChhY2xfY3ZfcGF0aF9MRCwKLStbaWYgdGVzdCAteiAiJExEIjsgdGhlbgotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JHtQQVRIX1NFUEFSQVRPUi06fSIKLSsgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCi0rICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0rICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ciIHx8IHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ckYWNfZXhlZXh0IjsgdGhlbgotKyAgICAgIGFjbF9jdl9wYXRoX0xEPSIkYWNfZGlyLyRhY19wcm9nIgotKyAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKLSsgICAgICAjIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkJ3Mgb25seSBhY2NlcHQgLXYuCi0rICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCi0rICAgICAgY2FzZSBgIiRhY2xfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8IC9kZXYvbnVsbGAgaW4KLSsgICAgICAqR05VKiB8ICond2l0aCBCRkQnKikKLSsJdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhayA7OwotKyAgICAgICopCi0rCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0geWVzICYmIGJyZWFrIDs7Ci0rICAgICAgZXNhYwotKyAgICBmaQotKyAgZG9uZQotKyAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0rZWxzZQotKyAgYWNsX2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0rZmldKQotK0xEPSIkYWNsX2N2X3BhdGhfTEQiCi0raWYgdGVzdCAtbiAiJExEIjsgdGhlbgotKyAgQUNfTVNHX1JFU1VMVCgkTEQpCi0rZWxzZQotKyAgQUNfTVNHX1JFU1VMVChubykKLStmaQotK3Rlc3QgLXogIiRMRCIgJiYgQUNfTVNHX0VSUk9SKFtubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSF0pCi0rQUNfTElCX1BST0dfTERfR05VCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbGliLWxpbmsubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2xpYi1saW5rLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTE0NjYzMTIwIC0wNDAwCi1AQCAtMCwwICsxLDU1MSBAQAotKyMgbGliLWxpbmsubTQgc2VyaWFsIDQgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rZG5sIEFDX0xJQl9MSU5LRkxBR1MobmFtZSBbLCBkZXBlbmRlbmNpZXNdKSBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQKLStkbmwgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMuCi0rZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQKLStkbmwgYXVnbWVudHMgdGhlIENQUEZMQUdTIHZhcmlhYmxlLgotK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSsgIGRlZmluZShbTmFtZV0sW3RyYW5zbGl0KFskMV0sWy4vLV0sIFtfX19dKV0pCi0rICBkZWZpbmUoW05BTUVdLFt0cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pXSkKLSsgIEFDX0NBQ0hFX0NIRUNLKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdLCBbYWNfY3ZfbGliW11OYW1lW11fbGlic10sIFsKLSsgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFskMV0sIFskMl0pCi0rICAgIGFjX2N2X2xpYltdTmFtZVtdX2xpYnM9IiRMSUJbXU5BTUUiCi0rICAgIGFjX2N2X2xpYltdTmFtZVtdX2x0bGlicz0iJExUTElCW11OQU1FIgotKyAgICBhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncz0iJElOQ1tdTkFNRSIKLSsgIF0pCi0rICBMSUJbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9saWJzIgotKyAgTFRMSUJbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9sdGxpYnMiCi0rICBJTkNbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncyIKLSsgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ11OQU1FKQotKyAgQUNfU1VCU1QoW0xJQl1OQU1FKQotKyAgQUNfU1VCU1QoW0xUTElCXU5BTUUpCi0rICBkbmwgQWxzbyBzZXQgSEFWRV9MSUJbXU5BTUUgc28gdGhhdCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FuIHJldXNlIHRoZQotKyAgZG5sIHJlc3VsdHMgb2YgdGhpcyBzZWFyY2ggd2hlbiB0aGlzIGxpYnJhcnkgYXBwZWFycyBhcyBhIGRlcGVuZGVuY3kuCi0rICBIQVZFX0xJQltdTkFNRT15ZXMKLSsgIHVuZGVmaW5lKFtOYW1lXSkKLSsgIHVuZGVmaW5lKFtOQU1FXSkKLStdKQotKwotK2RubCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MobmFtZSwgZGVwZW5kZW5jaWVzLCBpbmNsdWRlcywgdGVzdGNvZGUpCi0rZG5sIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kCi0rZG5sIGltcGxpY2l0IGRlcGVuZGVuY2llcywgdG9nZXRoZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGluY2x1ZGUgZmlsZXMgYW5kCi0rZG5sIHRoZSBhYmlsaXR5IHRvIGNvbXBpbGUgYW5kIGxpbmsgdGhlIHNwZWNpZmllZCB0ZXN0Y29kZS4gSWYgZm91bmQsIGl0Ci0rZG5sIHNldHMgYW5kIEFDX1NVQlNUcyBIQVZFX0xJQiR7TkFNRX09eWVzIGFuZCB0aGUgTElCJHtOQU1FfSBhbmQKLStkbmwgTFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQgYXVnbWVudHMgdGhlIENQUEZMQUdTIHZhcmlhYmxlLCBhbmQKLStkbmwgI2RlZmluZXMgSEFWRV9MSUIke05BTUV9IHRvIDEuIE90aGVyd2lzZSwgaXQgc2V0cyBhbmQgQUNfU1VCU1RzCi0rZG5sIEhBVkVfTElCJHtOQU1FfT1ubyBhbmQgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHRvIGVtcHR5LgotK0FDX0RFRlVOKFtBQ19MSUJfSEFWRV9MSU5LRkxBR1NdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQotKyAgZGVmaW5lKFtOYW1lXSxbdHJhbnNsaXQoWyQxXSxbLi8tXSwgW19fX10pXSkKLSsgIGRlZmluZShbTkFNRV0sW3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldKQotKwotKyAgZG5sIFNlYXJjaCBmb3IgbGliW11OYW1lIGFuZCBkZWZpbmUgTElCW11OQU1FLCBMVExJQltdTkFNRSBhbmQgSU5DW11OQU1FCi0rICBkbmwgYWNjb3JkaW5nbHkuCi0rICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoWyQxXSwgWyQyXSkKLSsKLSsgIGRubCBBZGQgJElOQ1tdTkFNRSB0byBDUFBGTEFHUyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZm9sbG93aW5nIGNoZWNrcywKLSsgIGRubCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgbGliW11OYW1lIGFuZCBub3QgZGlzYWJsZWQgaXRzIHVzZQotKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliW11OYW1lLXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LgotKyAgYWNfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotKyAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DXU5BTUUpCi0rCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxpYltdJDFdLCBbYWNfY3ZfbGliW11OYW1lXSwgWwotKyAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgotKyAgICBMSUJTPSIkTElCUyAkTElCW11OQU1FIgotKyAgICBBQ19UUllfTElOSyhbJDNdLCBbJDRdLCBbYWNfY3ZfbGliW11OYW1lPXllc10sIFthY19jdl9saWJbXU5hbWU9bm9dKQotKyAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgotKyAgXSkKLSsgIGlmIHRlc3QgIiRhY19jdl9saWJbXU5hbWUiID0geWVzOyB0aGVuCi0rICAgIEhBVkVfTElCW11OQU1FPXllcwotKyAgICBBQ19ERUZJTkUoW0hBVkVfTElCXU5BTUUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICQxIGxpYnJhcnkuXSkKLSsgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdKQotKyAgICBBQ19NU0dfUkVTVUxUKFskTElCW11OQU1FXSkKLSsgIGVsc2UKLSsgICAgSEFWRV9MSUJbXU5BTUU9bm8KLSsgICAgZG5sIElmICRMSUJbXU5BTUUgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZAotKyAgICBkbmwgJElOQ1tdTkFNRSBlaXRoZXIuCi0rICAgIENQUEZMQUdTPSIkYWNfc2F2ZV9DUFBGTEFHUyIKLSsgICAgTElCW11OQU1FPQotKyAgICBMVExJQltdTkFNRT0KLSsgIGZpCi0rICBBQ19TVUJTVChbSEFWRV9MSUJdTkFNRSkKLSsgIEFDX1NVQlNUKFtMSUJdTkFNRSkKLSsgIEFDX1NVQlNUKFtMVExJQl1OQU1FKQotKyAgdW5kZWZpbmUoW05hbWVdKQotKyAgdW5kZWZpbmUoW05BTUVdKQotK10pCi0rCi0rZG5sIERldGVybWluZSB0aGUgcGxhdGZvcm0gZGVwZW5kZW50IHBhcmFtZXRlcnMgbmVlZGVkIHRvIHVzZSBycGF0aDoKLStkbmwgbGliZXh0LCBzaGxpYmV4dCwgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwKLStkbmwgaGFyZGNvZGVfZGlyZWN0LCBoYXJkY29kZV9taW51c19MLgotK0FDX0RFRlVOKFtBQ19MSUJfUlBBVEhdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKSAgICAgICAgICAgICAgICBkbmwgd2UgdXNlICRDQywgJEdDQywgJExERkxBR1MKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUk9HX0xEXSkgICAgICAgICAgICBkbmwgd2UgdXNlICRMRCwgJHdpdGhfZ251X2xkCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pICAgICAgICAgZG5sIHdlIHVzZSAkaG9zdAotKyAgQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pIGRubCB3ZSB1c2UgJGFjX2F1eF9kaXIKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc2hhcmVkIGxpYnJhcnkgcnVuIHBhdGggb3JpZ2luXSwgYWNsX2N2X3JwYXRoLCBbCi0rICAgIENDPSIkQ0MiIEdDQz0iJEdDQyIgTERGTEFHUz0iJExERkxBR1MiIExEPSIkTEQiIHdpdGhfZ251X2xkPSIkd2l0aF9nbnVfbGQiIFwKLSsgICAgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gIiRhY19hdXhfZGlyL2NvbmZpZy5ycGF0aCIgIiRob3N0IiA+IGNvbmZ0ZXN0LnNoCi0rICAgIC4gLi9jb25mdGVzdC5zaAotKyAgICBybSAtZiAuL2NvbmZ0ZXN0LnNoCi0rICAgIGFjbF9jdl9ycGF0aD1kb25lCi0rICBdKQotKyAgd2w9IiRhY2xfY3Zfd2wiCi0rICBsaWJleHQ9IiRhY2xfY3ZfbGliZXh0IgotKyAgc2hsaWJleHQ9IiRhY2xfY3Zfc2hsaWJleHQiCi0rICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCi0rICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCi0rICBoYXJkY29kZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNvZGVfZGlyZWN0IgotKyAgaGFyZGNvZGVfbWludXNfTD0iJGFjbF9jdl9oYXJkY29kZV9taW51c19MIgotKyAgZG5sIERldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIHdhbnRzIHJwYXRoIGhhbmRsaW5nIGF0IGFsbC4KLSsgIEFDX0FSR19FTkFCTEUocnBhdGgsCi0rICAgIFsgIC0tZGlzYWJsZS1ycGF0aCAgICAgICAgIGRvIG5vdCBoYXJkY29kZSBydW50aW1lIGxpYnJhcnkgcGF0aHNdLAotKyAgICA6LCBlbmFibGVfcnBhdGg9eWVzKQotK10pCi0rCi0rZG5sIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZAotK2RubCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kIGltcGxpY2l0IGRlcGVuZGVuY2llcy4KLStkbmwgU2V0cyB0aGUgTElCJHtOQU1FfSwgTFRMSUIke05BTUV9IGFuZCBJTkMke05BTUV9IHZhcmlhYmxlcy4KLStBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU19CT0RZXSwKLStbCi0rICBkZWZpbmUoW05BTUVdLFt0cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pXSkKLSsgIGRubCBCeSBkZWZhdWx0LCBsb29rIGluICRpbmNsdWRlZGlyIGFuZCAkbGliZGlyLgotKyAgdXNlX2FkZGl0aW9uYWw9eWVzCi0rICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWwotKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKLSsgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgotKyAgXSkKLSsgIEFDX0xJQl9BUkdfV0lUSChbbGliJDEtcHJlZml4XSwKLStbICAtLXdpdGgtbGliJDEtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYiQxIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi0rICAtLXdpdGhvdXQtbGliJDEtcHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIGxpYiQxIGluIGluY2x1ZGVkaXIgYW5kIGxpYmRpcl0sCi0rWwotKyAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlhubyI7IHRoZW4KLSsgICAgICB1c2VfYWRkaXRpb25hbD1ubwotKyAgICBlbHNlCi0rICAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYIjsgdGhlbgotKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKLSsgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCi0rICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKLSsgICAgICAgIF0pCi0rICAgICAgZWxzZQotKyAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgotKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsL2xpYiIKLSsgICAgICBmaQotKyAgICBmaQotK10pCi0rICBkbmwgU2VhcmNoIHRoZSBsaWJyYXJ5IGFuZCBpdHMgZGVwZW5kZW5jaWVzIGluICRhZGRpdGlvbmFsX2xpYmRpciBhbmQKLSsgIGRubCAkTERGTEFHUy4gVXNpbmcgYnJlYWR0aC1maXJzdC1zZWFjaC4KLSsgIExJQltdTkFNRT0KLSsgIExUTElCW11OQU1FPQotKyAgSU5DW11OQU1FPQotKyAgcnBhdGhkaXJzPQotKyAgbHRycGF0aGRpcnM9Ci0rICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9Ci0rICBuYW1lc19uZXh0X3JvdW5kPSckMSAkMicKLSsgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KLSsgICAgbmFtZXNfdGhpc19yb3VuZD0iJG5hbWVzX25leHRfcm91bmQiCi0rICAgIG5hbWVzX25leHRfcm91bmQ9Ci0rICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbwotKyAgICAgIGFscmVhZHlfaGFuZGxlZD0KLSsgICAgICBmb3IgbiBpbiAkbmFtZXNfYWxyZWFkeV9oYW5kbGVkOyBkbwotKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgotKyAgICAgICAgICBhbHJlYWR5X2hhbmRsZWQ9eWVzCi0rICAgICAgICAgIGJyZWFrCi0rICAgICAgICBmaQotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVkIjsgdGhlbgotKyAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgotKyAgICAgICAgZG5sIFNlZSBpZiBpdCB3YXMgYWxyZWFkeSBsb2NhdGVkIGJ5IGFuIGVhcmxpZXIgQUNfTElCX0xJTktGTEFHUwotKyAgICAgICAgZG5sIG9yIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYWxsLgotKyAgICAgICAgdXBwZXJuYW1lPWBlY2hvICIkbmFtZSIgfCBzZWQgLWUgJ3l8YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy18QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX198J2AKLSsgICAgICAgIGV2YWwgdmFsdWU9XCJcJEhBVkVfTElCJHVwcGVybmFtZVwiCi0rICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgIiR2YWx1ZSIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMSUIkdXBwZXJuYW1lXCIKLSsgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JHZhbHVlIgotKyAgICAgICAgICAgIGV2YWwgdmFsdWU9XCJcJExUTElCJHVwcGVybmFtZVwiCi0rICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSR2YWx1ZSIKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGRubCBBbiBlYXJsaWVyIGNhbGwgdG8gQUNfTElCX0hBVkVfTElOS0ZMQUdTIGhhcyBkZXRlcm1pbmVkCi0rICAgICAgICAgICAgZG5sIHRoYXQgdGhpcyBsaWJyYXJ5IGRvZXNuJ3QgZXhpc3QuIFNvIGp1c3QgZHJvcCBpdC4KLSsgICAgICAgICAgICA6Ci0rICAgICAgICAgIGZpCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGRubCBTZWFyY2ggdGhlIGxpYnJhcnkgbGliJG5hbWUgaW4gJGFkZGl0aW9uYWxfbGliZGlyIGFuZCAkTERGTEFHUwotKyAgICAgICAgICBkbmwgYW5kIHRoZSBhbHJlYWR5IGNvbnN0cnVjdGVkICRMSUJOQU1FLyRMVExJQk5BTUUuCi0rICAgICAgICAgIGZvdW5kX2Rpcj0KLSsgICAgICAgICAgZm91bmRfbGE9Ci0rICAgICAgICAgIGZvdW5kX3NvPQotKyAgICAgICAgICBmb3VuZF9hPQotKyAgICAgICAgICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgotKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYmV4dCIgJiYgdGVzdCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICAgICAgZm91bmRfc289IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS4kc2hsaWJleHQiCi0rICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUubGEiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUubGEiCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS4kbGliZXh0IjsgdGhlbgotKyAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgZm91bmRfYT0iJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRsaWJleHQiCi0rICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLmxhIgotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICBmaQotKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJbXU5BTUU7IGRvCi0rICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgY2FzZSAiJHgiIGluCi0rICAgICAgICAgICAgICAgIC1MKikKLSsgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkeCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKLSsgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJleHQiICYmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUuJHNobGliZXh0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgotKyAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvbGliJG5hbWUuJHNobGliZXh0IgotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvbGliJG5hbWUubGEiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUuJGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyL2xpYiRuYW1lLiRsaWJleHQiCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUubGEiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvbGliJG5hbWUubGEiCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICBmaQotKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgZG5sIEZvdW5kIHRoZSBsaWJyYXJ5LgotKyAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCi0rICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9zbyIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc2hhcmVkIGxpYnJhcnkuIFdlIGF0dGVtcHQgdG8gaGFyZGNvZGUgaXRzCi0rICAgICAgICAgICAgICBkbmwgZGlyZWN0b3J5IGludG8gdGhlIGV4ZWN1dGFibGUncyBydW5wYXRoLCB1bmxlc3MgaXQncyB0aGUKLSsgICAgICAgICAgICAgIGRubCBzdGFuZGFyZCAvdXNyL2xpYi4KLSsgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiID0gbm8gfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyL2xpYiI7IHRoZW4KLSsgICAgICAgICAgICAgICAgZG5sIE5vIGhhcmRjb2RpbmcgaXMgbmVlZGVkLgotKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgRElSIGludG8gdGhlIHJlc3VsdGluZwotKyAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgotKyAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBsdHJwYXRoZGlycy4KLSsgICAgICAgICAgICAgICAgZG5sIFRoZSBsdHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMVExJQk5BTUUgYXQgdGhlIGVuZC4KLSsgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGZvdW5kX2RpciIKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZG5sIFRoZSBoYXJkY29kaW5nIGludG8gJExJQk5BTUUgaXMgc3lzdGVtIGRlcGVuZGVudC4KLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBkbmwgVXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotKyAgICAgICAgICAgICAgICAgIGRubCByZXN1bHRpbmcgYmluYXJ5LgotKyAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBkbmwgVXNlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBoYXJkY29kZSBESVIgaW50byB0aGUgcmVzdWx0aW5nCi0rICAgICAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgotKyAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCi0rICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMSUJOQU1FIGF0IHRoZSBlbmQuCi0rICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRmb3VuZF9kaXIiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgIGRubCBSZWx5IG9uICItTCRmb3VuZF9kaXIiLgotKyAgICAgICAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQgaWYgaXQncyBhbHJlYWR5IGNvbnRhaW5lZCBpbiB0aGUgTERGTEFHUwotKyAgICAgICAgICAgICAgICAgICAgZG5sIG9yIHRoZSBhbHJlYWR5IGNvbnN0cnVjdGVkICRMSUJOQU1FCi0rICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCW11OQU1FOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRmb3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGZvdW5kX2RpciIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIEZJWE1FOiBOb3Qgc3VyZSB3aGV0aGVyIHdlIHNob3VsZCB1c2UKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFdlIGNhbm5vdCB1c2UgJGhhcmRjb2RlX3J1bnBhdGhfdmFyIGFuZCBMRF9SVU5fUEFUSAotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZSwgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgZml0IGluIGZsYWdzIHBhc3NlZCB0byB0aGUKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIGNvbXBpbGVyLiBTbyBnaXZlIHVwLiBObyBoYXJkY29kaW5nLiBUaGlzIGFmZmVjdHMgb25seQotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgdmVyeSBvbGQgc3lzdGVtcy4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIEZJWE1FOiBOb3Qgc3VyZSB3aGV0aGVyIHdlIHNob3VsZCB1c2UKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1sJG5hbWUiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfYSIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGRubCBMaW5raW5nIHdpdGggYSBzdGF0aWMgbGlicmFyeS4KLSsgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfYSIKLSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgZG5sIFdlIHNob3VsZG4ndCBjb21lIGhlcmUsIGJ1dCBhbnl3YXkgaXQncyBnb29kIHRvIGhhdmUgYQotKyAgICAgICAgICAgICAgICBkbmwgZmFsbGJhY2suCi0rICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZG5sIEFzc3VtZSB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgbmVhcmJ5LgotKyAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0KLSsgICAgICAgICAgICBjYXNlICIkZm91bmRfZGlyIiBpbgotKyAgICAgICAgICAgICAgKi9saWIgfCAqL2xpYi8pCi0rICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAncywvbGliLyokLCwnYAotKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCi0rICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkSU5DTkFNRS4KLSsgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0Ci0rICAgICAgICAgICAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2luY2x1ZGUsCi0rICAgICAgICAgICAgICBkbmwgICAyLiBpZiBpdCdzIC91c3IvbG9jYWwvaW5jbHVkZSBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgICAgICAgICAgIGRubCAgIDMuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRDUFBGTEFHUyBvciB0aGUgYWxyZWFkeQotKyAgICAgICAgICAgICAgZG5sICAgICAgY29uc3RydWN0ZWQgJElOQ05BTUUsCi0rICAgICAgICAgICAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgotKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgotKyAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCi0rICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KikgaGF2ZWl0PXllczs7Ci0rICAgICAgICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1MgJElOQ1tdTkFNRTsgZG8KLSsgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRJTkNOQU1FLgotKyAgICAgICAgICAgICAgICAgICAgICBJTkNbXU5BTUU9IiR7SU5DW11OQU1FfSR7SU5DW11OQU1FOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBkbmwgTG9vayBmb3IgZGVwZW5kZW5jaWVzLgotKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmb3VuZF9sYSI7IHRoZW4KLSsgICAgICAgICAgICAgIGRubCBSZWFkIHRoZSAubGEgZmlsZS4gSXQgZGVmaW5lcyB0aGUgdmFyaWFibGVzCi0rICAgICAgICAgICAgICBkbmwgZGxuYW1lLCBsaWJyYXJ5X25hbWVzLCBvbGRfbGlicmFyeSwgZGVwZW5kZW5jeV9saWJzLCBjdXJyZW50LAotKyAgICAgICAgICAgICAgZG5sIGFnZSwgcmV2aXNpb24sIGluc3RhbGxlZCwgZGxvcGVuLCBkbHByZW9wZW4sIGxpYmRpci4KLSsgICAgICAgICAgICAgIHNhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2xhIiBpbgotKyAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEiIDs7Ci0rICAgICAgICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OwotKyAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCi0rICAgICAgICAgICAgICBkbmwgV2UgdXNlIG9ubHkgZGVwZW5kZW5jeV9saWJzLgotKyAgICAgICAgICAgICAgZm9yIGRlcCBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotKyAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBpbgotKyAgICAgICAgICAgICAgICAgIC1MKikKLSsgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKLSsgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMSUJOQU1FIGFuZCAkTFRMSUJOQU1FLgotKyAgICAgICAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvbGliLAotKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMi4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgIDMuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRMREZMQUdTIG9yIHRoZSBhbHJlYWR5Ci0rICAgICAgICAgICAgICAgICAgICBkbmwgICAgICBjb25zdHJ1Y3RlZCAkTElCTkFNRSwKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvbGliIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsL2xpYiI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW51eCopIGhhdmVpdD15ZXM7OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJbXU5BTUU7IGRvCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTElCTkFNRS4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCW11OQU1FOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExUTElCTkFNRS4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgICAgIC1SKikKLSsgICAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLVIvLydgCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgcnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExJQk5BTUUgYXQgdGhlIGVuZC4KLSsgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gbHRycGF0aGRpcnMuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgbHRycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTFRMSUJOQU1FIGF0IHRoZSBlbmQuCi0rICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRkaXIiCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAtbCopCi0rICAgICAgICAgICAgICAgICAgICBkbmwgSGFuZGxlIHRoaXMgaW4gdGhlIG5leHQgcm91bmQuCi0rICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1sLy8nYAotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAqLmxhKQotKyAgICAgICAgICAgICAgICAgICAgZG5sIEhhbmRsZSB0aGlzIGluIHRoZSBuZXh0IHJvdW5kLiBUaHJvdyBhd2F5IHRoZSAubGEncwotKyAgICAgICAgICAgICAgICAgICAgZG5sIGRpcmVjdG9yeTsgaXQgaXMgYWxyZWFkeSBjb250YWluZWQgaW4gYSBwcmVjZWRpbmcgLUwKLSsgICAgICAgICAgICAgICAgICAgIGRubCBvcHRpb24uCi0rICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncyxeWC4qLywsJyAtZSAncyxebGliLCwnIC1lICdzLFwubGEkLCwnYAotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAqKQotKyAgICAgICAgICAgICAgICAgICAgZG5sIE1vc3QgbGlrZWx5IGFuIGltbWVkaWF0ZSBsaWJyYXJ5IG5hbWUuCi0rICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRkZXAiCi0rICAgICAgICAgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSRkZXAiCi0rICAgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGRubCBEaWRuJ3QgZmluZCB0aGUgbGlicmFyeTsgYXNzdW1lIGl0IGlzIGluIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICBkbmwga25vd24gdG8gdGhlIGxpbmtlciBhbmQgcnVudGltZSBsb2FkZXIuIChBbGwgdGhlIHN5c3RlbQotKyAgICAgICAgICAgIGRubCBkaXJlY3RvcmllcyBrbm93biB0byB0aGUgbGlua2VyIHNob3VsZCBhbHNvIGJlIGtub3duIHRvIHRoZQotKyAgICAgICAgICAgIGRubCBydW50aW1lIGxvYWRlciwgb3RoZXJ3aXNlIHRoZSBzeXN0ZW0gaXMgc2V2ZXJlbHkgbWlzY29uZmlndXJlZC4pCi0rICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tbCRuYW1lIgotKyAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LWwkbmFtZSIKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZG9uZQotKyAgZG9uZQotKyAgaWYgdGVzdCAiWCRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgotKyAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSsgICAgICBkbmwgV2VpcmQgcGxhdGZvcm06IG9ubHkgdGhlIGxhc3QgLXJwYXRoIG9wdGlvbiBjb3VudHMsIHRoZSB1c2VyIG11c3QKLSsgICAgICBkbmwgcGFzcyBhbGwgcGF0aCBlbGVtZW50cyBpbiBvbmUgb3B0aW9uLiBXZSBjYW4gYXJyYW5nZSB0aGF0IGZvciBhCi0rICAgICAgZG5sIHNpbmdsZSBsaWJyYXJ5LCBidXQgbm90IHdoZW4gbW9yZSB0aGFuIG9uZSAkTElCTkFNRXMgYXJlIHVzZWQuCi0rICAgICAgYWxsZGlycz0KLSsgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCi0rICAgICAgICBhbGxkaXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZm91bmRfZGlyIgotKyAgICAgIGRvbmUKLSsgICAgICBkbmwgTm90ZTogaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyB1c2VzICRsaWJkaXIgYW5kICR3bC4KLSsgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCi0rICAgICAgbGliZGlyPSIkYWxsZGlycyIKLSsgICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgotKyAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCi0rICAgIGVsc2UKLSsgICAgICBkbmwgVGhlIC1ycGF0aCBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgotKyAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KLSsgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKLSsgICAgICAgIGxpYmRpcj0iJGZvdW5kX2RpciIKLSsgICAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKLSsgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCi0rICAgICAgZG9uZQotKyAgICBmaQotKyAgZmkKLSsgIGlmIHRlc3QgIlgkbHRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgotKyAgICBkbmwgV2hlbiB1c2luZyBsaWJ0b29sLCB0aGUgb3B0aW9uIHRoYXQgd29ya3MgZm9yIGJvdGggbGlicmFyaWVzIGFuZAotKyAgICBkbmwgZXhlY3V0YWJsZXMgaXMgLVIuIFRoZSAtUiBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgotKyAgICBmb3IgZm91bmRfZGlyIGluICRsdHJwYXRoZGlyczsgZG8KLSsgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1SJGZvdW5kX2RpciIKLSsgICAgZG9uZQotKyAgZmkKLStdKQotKwotK2RubCBBQ19MSUJfQVBQRU5EVE9WQVIoVkFSLCBDT05URU5UUykgYXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgQ09OVEVOVFMgdG8gVkFSLAotK2RubCB1bmxlc3MgYWxyZWFkeSBwcmVzZW50IGluIFZBUi4KLStkbmwgV29ya3Mgb25seSBmb3IgQ1BQRkxBR1MsIG5vdCBmb3IgTElCKiB2YXJpYWJsZXMgYmVjYXVzZSB0aGF0IHNvbWV0aW1lcwotK2RubCBjb250YWlucyB0d28gb3IgdGhyZWUgY29uc2VjdXRpdmUgZWxlbWVudHMgdGhhdCBiZWxvbmcgdG9nZXRoZXIuCi0rQUNfREVGVU4oW0FDX0xJQl9BUFBFTkRUT1ZBUl0sCi0rWwotKyAgZm9yIGVsZW1lbnQgaW4gWyQyXTsgZG8KLSsgICAgaGF2ZWl0PQotKyAgICBmb3IgeCBpbiAkWyQxXTsgZG8KLSsgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRlbGVtZW50IjsgdGhlbgotKyAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgYnJlYWsKLSsgICAgICBmaQotKyAgICBkb25lCi0rICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgWyQxXT0iJHtbJDFdfSR7WyQxXTorIH0kZWxlbWVudCIKLSsgICAgZmkKLSsgIGRvbmUKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9saWItcHJlZml4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9saWItcHJlZml4Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTIxNjYyMDU2IC0wNDAwCi1AQCAtMCwwICsxLDE1NSBAQAotKyMgbGliLXByZWZpeC5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjEzKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStkbmwgQUNfTElCX0FSR19XSVRIIGlzIHN5bm9ueW1vdXMgdG8gQUNfQVJHX1dJVEggaW4gYXV0b2NvbmYtMi4xMywgYW5kCi0rZG5sIHNpbWlsYXIgdG8gQUNfQVJHX1dJVEggaW4gYXV0b2NvbmYgMi41Mi4uLjIuNTcgZXhjZXB0IHRoYXQgaXMgZG9lc24ndAotK2RubCByZXF1aXJlIGV4Y2Vzc2l2ZSBicmFja2V0aW5nLgotK2lmZGVmKFtBQ19IRUxQX1NUUklOR10sCi0rW0FDX0RFRlVOKFtBQ19MSUJfQVJHX1dJVEhdLCBbQUNfQVJHX1dJVEgoWyQxXSxbWyQyXV0sWyQzXSxbJDRdKV0pXSwKLStbQUNfREVGVU4oW0FDX11bTElCX0FSR19XSVRIXSwgW0FDX0FSR19XSVRIKFskMV0sWyQyXSxbJDNdLFskNF0pXSldKQotKwotK2RubCBBQ19MSUJfUFJFRklYIGFkZHMgdG8gdGhlIENQUEZMQUdTIGFuZCBMREZMQUdTIHRoZSBmbGFncyB0aGF0IGFyZSBuZWVkZWQKLStkbmwgdG8gYWNjZXNzIHByZXZpb3VzbHkgaW5zdGFsbGVkIGxpYnJhcmllcy4gVGhlIGJhc2ljIGFzc3VtcHRpb24gaXMgdGhhdAotK2RubCBhIHVzZXIgd2lsbCB3YW50IHBhY2thZ2VzIHRvIHVzZSBvdGhlciBwYWNrYWdlcyBoZSBwcmV2aW91c2x5IGluc3RhbGxlZAotK2RubCB3aXRoIHRoZSBzYW1lIC0tcHJlZml4IG9wdGlvbi4KLStkbmwgVGhpcyBtYWNybyBpcyBub3QgbmVlZGVkIGlmIG9ubHkgQUNfTElCX0xJTktGTEFHUyBpcyB1c2VkIHRvIGxvY2F0ZQotK2RubCBsaWJyYXJpZXMsIGJ1dCBpcyBvdGhlcndpc2UgdmVyeSBjb252ZW5pZW50LgotK0FDX0RFRlVOKFtBQ19MSUJfUFJFRklYXSwKLStbCi0rICBBQ19CRUZPUkUoWyQwXSwgW0FDX0xJQl9MSU5LRkxBR1NdKQotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgZG5sIEJ5IGRlZmF1bHQsIGxvb2sgaW4gJGluY2x1ZGVkaXIgYW5kICRsaWJkaXIuCi0rICB1c2VfYWRkaXRpb25hbD15ZXMKLSsgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCi0rICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgotKyAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCi0rICBdKQotKyAgQUNfTElCX0FSR19XSVRIKFtsaWItcHJlZml4XSwKLStbICAtLXdpdGgtbGliLXByZWZpeFs9RElSXSBzZWFyY2ggZm9yIGxpYnJhcmllcyBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgotKyAgLS13aXRob3V0LWxpYi1wcmVmaXggICAgZG9uJ3Qgc2VhcmNoIGZvciBsaWJyYXJpZXMgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyXSwKLStbCi0rICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWG5vIjsgdGhlbgotKyAgICAgIHVzZV9hZGRpdGlvbmFsPW5vCi0rICAgIGVsc2UKLSsgICAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlgiOyB0aGVuCi0rICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWwotKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKLSsgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgotKyAgICAgICAgXSkKLSsgICAgICBlbHNlCi0rICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCi0rICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvbGliIgotKyAgICAgIGZpCi0rICAgIGZpCi0rXSkKLSsgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCi0rICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkQ1BQRkxBR1MuCi0rICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0Ci0rICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvaW5jbHVkZSwKLSsgICAgZG5sICAgMi4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJENQUEZMQUdTLAotKyAgICBkbmwgICAzLiBpZiBpdCdzIC91c3IvbG9jYWwvaW5jbHVkZSBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KLSsgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgotKyAgICAgIGhhdmVpdD0KLSsgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1M7IGRvCi0rICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgIGJyZWFrCi0rICAgICAgICBmaQotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotKyAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKLSsgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KLSsgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRDUFBGTEFHUy4KLSsgICAgICAgICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30ke0NQUEZMQUdTOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZmkKLSsgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExERkxBR1MuCi0rICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0Ci0rICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvbGliLAotKyAgICBkbmwgICAyLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkTERGTEFHUywKLSsgICAgZG5sICAgMy4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KLSsgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyL2xpYiI7IHRoZW4KLSsgICAgICBoYXZlaXQ9Ci0rICAgICAgZm9yIHggaW4gJExERkxBR1M7IGRvCi0rICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgYnJlYWsKLSsgICAgICAgIGZpCi0rICAgICAgZG9uZQotKyAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC9saWIiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotKyAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKLSsgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTERGTEFHUy4KLSsgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9JHtMREZMQUdTOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBmaQotKyAgZmkKLStdKQotKwotK2RubCBBQ19MSUJfUFJFUEFSRV9QUkVGSVggY3JlYXRlcyB2YXJpYWJsZXMgYWNsX2ZpbmFsX3ByZWZpeCwKLStkbmwgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4LCBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gd2hpY2ggJHByZWZpeCBhbmQKLStkbmwgJGV4ZWNfcHJlZml4IHdpbGwgZXhwYW5kIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCi0rQUNfREVGVU4oW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0sCi0rWwotKyAgZG5sIFVuZm9ydHVuYXRlbHksIHByZWZpeCBhbmQgZXhlY19wcmVmaXggZ2V0IG9ubHkgZmluYWxseSBkZXRlcm1pbmVkCi0rICBkbmwgYXQgdGhlIGVuZCBvZiBjb25maWd1cmUuCi0rICBpZiB0ZXN0ICJYJHByZWZpeCIgPSAiWE5PTkUiOyB0aGVuCi0rICAgIGFjbF9maW5hbF9wcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSsgIGVsc2UKLSsgICAgYWNsX2ZpbmFsX3ByZWZpeD0iJHByZWZpeCIKLSsgIGZpCi0rICBpZiB0ZXN0ICJYJGV4ZWNfcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KLSsgICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PScke3ByZWZpeH0nCi0rICBlbHNlCi0rICAgIGFjbF9maW5hbF9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZmkKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCi0rICBldmFsIGFjbF9maW5hbF9leGVjX3ByZWZpeD1cIiRhY2xfZmluYWxfZXhlY19wcmVmaXhcIgotKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgotK10pCi0rCi0rZG5sIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbc3RhdGVtZW50XSkgZXZhbHVhdGVzIHN0YXRlbWVudCwgd2l0aCB0aGUKLStkbmwgdmFyaWFibGVzIHByZWZpeCBhbmQgZXhlY19wcmVmaXggYm91bmQgdG8gdGhlIHZhbHVlcyB0aGV5IHdpbGwgaGF2ZQotK2RubCBhdCB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0LgotK0FDX0RFRlVOKFtBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVhdLAotK1sKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICAkMQotKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9sb25nZG91YmxlLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9sb25nZG91YmxlLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTQyNjU4ODY0IC0wNDAwCi1AQCAtMCwwICsxLDMwIEBACi0rIyBsb25nZG91YmxlLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSAnbG9uZyBkb3VibGUnIHR5cGUuCi0rZG5sIFByZXJlcXVpc2l0ZTogQUNfUFJPR19DQwotKwotK0FDX0RFRlVOKFtndF9UWVBFX0xPTkdET1VCTEVdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbG9uZyBkb3VibGVdLCBndF9jdl9jX2xvbmdfZG91YmxlLAotKyAgICBbaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgICAgZ3RfY3ZfY19sb25nX2RvdWJsZT15ZXMKLSsgICAgIGVsc2UKLSsgICAgICAgQUNfVFJZX0NPTVBJTEUoWwotKyAgICAgICAgIC8qIFRoZSBTdGFyZGVudCBWaXN0cmEga25vd3Mgc2l6ZW9mKGxvbmcgZG91YmxlKSwgYnV0IGRvZXMgbm90IHN1cHBvcnQgaXQuICAqLwotKyAgICAgICAgIGxvbmcgZG91YmxlIGZvbyA9IDAuMDsKLSsgICAgICAgICAvKiBPbiBVbHRyaXggNC4zIGNjLCBsb25nIGRvdWJsZSBpcyA0IGFuZCBkb3VibGUgaXMgOC4gICovCi0rICAgICAgICAgaW50IGFycmF5IFsyKihzaXplb2YobG9uZyBkb3VibGUpID49IHNpemVvZihkb3VibGUpKSAtIDFdOwotKyAgICAgICAgIF0sICwKLSsgICAgICAgICBndF9jdl9jX2xvbmdfZG91YmxlPXllcywgZ3RfY3ZfY19sb25nX2RvdWJsZT1ubykKLSsgICAgIGZpXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2NfbG9uZ19kb3VibGUgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTE9OR19ET1VCTEUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdsb25nIGRvdWJsZScgdHlwZS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9sb25nbG9uZy5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbG9uZ2xvbmcubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45NDk2NTc4MDAgLTA0MDAKLUBAIC0wLDAgKzEsMjUgQEAKLSsjIGxvbmdsb25nLm00IHNlcmlhbCA0Ci0rZG5sIENvcHlyaWdodCAoQykgMTk5OS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rIyBEZWZpbmUgSEFWRV9MT05HX0xPTkcgaWYgJ2xvbmcgbG9uZycgd29ya3MuCi0rCi0rQUNfREVGVU4oW2ptX0FDX1RZUEVfTE9OR19MT05HXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxvbmcgbG9uZ10sIGFjX2N2X3R5cGVfbG9uZ19sb25nLAotKyAgW0FDX1RSWV9MSU5LKFtsb25nIGxvbmcgbGwgPSAxTEw7IGludCBpID0gNjM7XSwKLSsgICAgW2xvbmcgbG9uZyBsbG1heCA9IChsb25nIGxvbmcpIC0xOwotKyAgICAgcmV0dXJuIGxsIDw8IGkgfCBsbCA+PiBpIHwgbGxtYXggLyBsbCB8IGxsbWF4ICUgbGw7XSwKLSsgICAgYWNfY3ZfdHlwZV9sb25nX2xvbmc9eWVzLAotKyAgICBhY19jdl90eXBlX2xvbmdfbG9uZz1ubyldKQotKyAgaWYgdGVzdCAkYWNfY3ZfdHlwZV9sb25nX2xvbmcgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTE9OR19MT05HLCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdsb25nIGxvbmcnIHR5cGUuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvTWFrZWZpbGUuYW0JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L01ha2VmaWxlLmFtCTIwMDQtMDktMTIgMTQ6NDA6MzUuMDQ4NjQyNzUyIC0wNDAwCi1AQCAtMCwwICsxIEBACi0rRVhUUkFfRElTVCA9IGNvZGVzZXQubTQgZ2V0dGV4dC5tNCBnbGliYzIxLm00IGljb252Lm00IGludGRpdjAubTQgaW50bWF4Lm00IGludHR5cGVzLm00IGludHR5cGVzX2gubTQgaW50dHlwZXMtcHJpLm00IGlzYy1wb3NpeC5tNCBsY21lc3NhZ2UubTQgbGliLWxkLm00IGxpYi1saW5rLm00IGxpYi1wcmVmaXgubTQgbG9uZ2RvdWJsZS5tNCBsb25nbG9uZy5tNCBubHMubTQgcG8ubTQgcHJpbnRmLXBvc2l4Lm00IHByb2d0ZXN0Lm00IHNpZ25lZC5tNCBzaXplX21heC5tNCBzdGRpbnRfaC5tNCB1aW50bWF4X3QubTQgdWxvbmdsb25nLm00IHdjaGFyX3QubTQgd2ludF90Lm00IHhzaXplLm00Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L25scy5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbmxzLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTU1NjU2ODg4IC0wNDAwCi1AQCAtMCwwICsxLDQ5IEBACi0rIyBubHMubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotKwotK2RubCBBdXRob3JzOgotK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCi0rZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCi0rCi0rQUNfREVGVU4oW0FNX05MU10sCi0rWwotKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIE5MUyBpcyByZXF1ZXN0ZWRdKQotKyAgZG5sIERlZmF1bHQgaXMgZW5hYmxlZCBOTFMKLSsgIEFDX0FSR19FTkFCTEUobmxzLAotKyAgICBbICAtLWRpc2FibGUtbmxzICAgICAgICAgICBkbyBub3QgdXNlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0XSwKLSsgICAgVVNFX05MUz0kZW5hYmxldmFsLCBVU0VfTkxTPXllcykKLSsgIEFDX01TR19SRVNVTFQoJFVTRV9OTFMpCi0rICBBQ19TVUJTVChVU0VfTkxTKQotK10pCi0rCi0rQUNfREVGVU4oW0FNX01LSU5TVEFMTERJUlNdLAotK1sKLSsgIGRubCBJZiB0aGUgQUNfQ09ORklHX0FVWF9ESVIgbWFjcm8gZm9yIGF1dG9jb25mIGlzIHVzZWQgd2UgcG9zc2libHkKLSsgIGRubCBmaW5kIHRoZSBta2luc3RhbGxkaXJzIHNjcmlwdCBpbiBhbm90aGVyIHN1YmRpciBidXQgJCh0b3Bfc3JjZGlyKS4KLSsgIGRubCBUcnkgdG8gbG9jYXRlIGl0LgotKyAgTUtJTlNUQUxMRElSUz0KLSsgIGlmIHRlc3QgLW4gIiRhY19hdXhfZGlyIjsgdGhlbgotKyAgICBjYXNlICIkYWNfYXV4X2RpciIgaW4KLSsgICAgICAvKikgTUtJTlNUQUxMRElSUz0iJGFjX2F1eF9kaXIvbWtpbnN0YWxsZGlycyIgOzsKLSsgICAgICAqKSBNS0lOU1RBTExESVJTPSJcJCh0b3BfYnVpbGRkaXIpLyRhY19hdXhfZGlyL21raW5zdGFsbGRpcnMiIDs7Ci0rICAgIGVzYWMKLSsgIGZpCi0rICBpZiB0ZXN0IC16ICIkTUtJTlNUQUxMRElSUyI7IHRoZW4KLSsgICAgTUtJTlNUQUxMRElSUz0iXCQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyIKLSsgIGZpCi0rICBBQ19TVUJTVChNS0lOU1RBTExESVJTKQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3BvLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9wby5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk2MTY1NTk3NiAtMDQwMAotQEAgLTAsMCArMSw0MjYgQEAKLSsjIHBvLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTQpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgotK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgotKwotK2RubCBDaGVja3MgZm9yIGFsbCBwcmVyZXF1aXNpdGVzIG9mIHRoZSBwbyBzdWJkaXJlY3RvcnkuCi0rQUNfREVGVU4oW0FNX1BPX1NVQkRJUlNdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FNX01LSU5TVEFMTERJUlNdKWRubAotKyAgQUNfUkVRVUlSRShbQU1fTkxTXSlkbmwKLSsKLSsgIGRubCBQZXJmb3JtIHRoZSBmb2xsb3dpbmcgdGVzdHMgYWxzbyBpZiAtLWRpc2FibGUtbmxzIGhhcyBiZWVuIGdpdmVuLAotKyAgZG5sIGJlY2F1c2UgdGhleSBhcmUgbmVlZGVkIGZvciAibWFrZSBkaXN0IiB0byB3b3JrLgotKwotKyAgZG5sIFNlYXJjaCBmb3IgR05VIG1zZ2ZtdCBpbiB0aGUgUEFUSC4KLSsgIGRubCBUaGUgZmlyc3QgdGVzdCBleGNsdWRlcyBTb2xhcmlzIG1zZ2ZtdCBhbmQgZWFybHkgR05VIG1zZ2ZtdCB2ZXJzaW9ucy4KLSsgIGRubCBUaGUgc2Vjb25kIHRlc3QgZXhjbHVkZXMgRnJlZUJTRCBtc2dmbXQuCi0rICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKE1TR0ZNVCwgbXNnZm10LAotKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgKGlmICRhY19kaXIvJGFjX3dvcmQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpXSwKLSsgICAgOikKLSsgIEFDX1BBVEhfUFJPRyhHTVNHRk1ULCBnbXNnZm10LCAkTVNHRk1UKQotKwotKyAgZG5sIFNlYXJjaCBmb3IgR05VIHhnZXR0ZXh0IDAuMTIgb3IgbmV3ZXIgaW4gdGhlIFBBVEguCi0rICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyB4Z2V0dGV4dCBhbmQgZWFybHkgR05VIHhnZXR0ZXh0IHZlcnNpb25zLgotKyAgZG5sIFRoZSBzZWNvbmQgdGVzdCBleGNsdWRlcyBGcmVlQlNEIHhnZXR0ZXh0LgotKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChYR0VUVEVYVCwgeGdldHRleHQsCi0rICAgIFskYWNfZGlyLyRhY193b3JkIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgKGlmICRhY19kaXIvJGFjX3dvcmQgLS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKV0sCi0rICAgIDopCi0rICBkbmwgUmVtb3ZlIGxlZnRvdmVyIGZyb20gRnJlZUJTRCB4Z2V0dGV4dCBjYWxsLgotKyAgcm0gLWYgbWVzc2FnZXMucG8KLSsKLSsgIGRubCBTZWFyY2ggZm9yIEdOVSBtc2dtZXJnZSAwLjExIG9yIG5ld2VyIGluIHRoZSBQQVRILgotKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChNU0dNRVJHRSwgbXNnbWVyZ2UsCi0rICAgIFskYWNfZGlyLyRhY193b3JkIC0tdXBkYXRlIC1xIC9kZXYvbnVsbCAvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxXSwgOikKLSsKLSsgIGRubCBUaGlzIGNvdWxkIGdvIGF3YXkgc29tZSBkYXk7IHRoZSBQQVRIX1BST0dfV0lUSF9URVNUIGFscmVhZHkgZG9lcyBpdC4KLSsgIGRubCBUZXN0IHdoZXRoZXIgd2UgcmVhbGx5IGZvdW5kIEdOVSBtc2dmbXQuCi0rICBpZiB0ZXN0ICIkR01TR0ZNVCIgIT0gIjoiOyB0aGVuCi0rICAgIGRubCBJZiBpdCBpcyBubyBHTlUgbXNnZm10IHdlIGRlZmluZSBpdCBhcyA6IHNvIHRoYXQgdGhlCi0rICAgIGRubCBNYWtlZmlsZXMgc3RpbGwgY2FuIHdvcmsuCi0rICAgIGlmICRHTVNHRk1UIC0tc3RhdGlzdGljcyAvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxICYmCi0rICAgICAgIChpZiAkR01TR0ZNVCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSk7IHRoZW4KLSsgICAgICA6IDsKLSsgICAgZWxzZQotKyAgICAgIEdNU0dGTVQ9YGVjaG8gIiRHTVNHRk1UIiB8IHNlZCAtZSAncyxeLiovLCwnYAotKyAgICAgIEFDX01TR19SRVNVTFQoCi0rICAgICAgICBbZm91bmQgJEdNU0dGTVQgcHJvZ3JhbSBpcyBub3QgR05VIG1zZ2ZtdDsgaWdub3JlIGl0XSkKLSsgICAgICBHTVNHRk1UPSI6IgotKyAgICBmaQotKyAgZmkKLSsKLSsgIGRubCBUaGlzIGNvdWxkIGdvIGF3YXkgc29tZSBkYXk7IHRoZSBQQVRIX1BST0dfV0lUSF9URVNUIGFscmVhZHkgZG9lcyBpdC4KLSsgIGRubCBUZXN0IHdoZXRoZXIgd2UgcmVhbGx5IGZvdW5kIEdOVSB4Z2V0dGV4dC4KLSsgIGlmIHRlc3QgIiRYR0VUVEVYVCIgIT0gIjoiOyB0aGVuCi0rICAgIGRubCBJZiBpdCBpcyBubyBHTlUgeGdldHRleHQgd2UgZGVmaW5lIGl0IGFzIDogc28gdGhhdCB0aGUKLSsgICAgZG5sIE1ha2VmaWxlcyBzdGlsbCBjYW4gd29yay4KLSsgICAgaWYgJFhHRVRURVhUIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgICAoaWYgJFhHRVRURVhUIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSk7IHRoZW4KLSsgICAgICA6IDsKLSsgICAgZWxzZQotKyAgICAgIEFDX01TR19SRVNVTFQoCi0rICAgICAgICBbZm91bmQgeGdldHRleHQgcHJvZ3JhbSBpcyBub3QgR05VIHhnZXR0ZXh0OyBpZ25vcmUgaXRdKQotKyAgICAgIFhHRVRURVhUPSI6IgotKyAgICBmaQotKyAgICBkbmwgUmVtb3ZlIGxlZnRvdmVyIGZyb20gRnJlZUJTRCB4Z2V0dGV4dCBjYWxsLgotKyAgICBybSAtZiBtZXNzYWdlcy5wbwotKyAgZmkKLSsKLSsgIEFDX09VVFBVVF9DT01NQU5EUyhbCi0rICAgIGZvciBhY19maWxlIGluICRDT05GSUdfRklMRVM7IGRvCi0rICAgICAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIgotKyAgICAgIGNhc2UgIiRhY19maWxlIiBpbgotKyAgICAgICAgKjoqKSBhY19maWxlPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKLSsgICAgICBlc2FjCi0rICAgICAgIyBQTyBkaXJlY3RvcmllcyBoYXZlIGEgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGZyb20gTWFrZWZpbGUuaW4uaW4uCi0rICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluICovTWFrZWZpbGUuaW4pCi0rICAgICAgICAjIEFkanVzdCBhIHJlbGF0aXZlIHNyY2Rpci4KLSsgICAgICAgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKLSsgICAgICAgIGFjX2Rpcl9zdWZmaXg9Ii9gZWNobyAiJGFjX2RpciJ8c2VkICdzJV5cLi8lJSdgIgotKyAgICAgICAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgifHNlZCAncyUvW14vXSolLi4vJWcnYAotKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjEzIGl0IGlzIGNhbGxlZCAkYWNfZ2l2ZW5fc3JjZGlyLgotKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgotKyAgICAgICAgdGVzdCAtbiAiJGFjX2dpdmVuX3NyY2RpciIgfHwgYWNfZ2l2ZW5fc3JjZGlyPSIkc3JjZGlyIgotKyAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KLSsgICAgICAgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OwotKyAgICAgICAgICAvKikgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgICAgICAgICAgKikgIHRvcF9zcmNkaXI9IiRhY19kb3RzJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgICAgICAgIGVzYWMKLSsgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiI7IHRoZW4KLSsgICAgICAgICAgcm0gLWYgIiRhY19kaXIvUE9URklMRVMiCi0rICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgotKyAgICAgICAgICBjYXQgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiIgfCBzZWQgLWUgIi9eIy9kIiAtZSAiL15bIAldKlwkL2QiIC1lICJzLC4qLCAgICAgJHRvcF9zcmNkaXIvJiBcXFxcLCIgfCBzZWQgLWUgIlwkcy9cKC4qXCkgXFxcXC9cMS8iID4gIiRhY19kaXIvUE9URklMRVMiCi0rICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSJQT1RGSUxFUy5pbiIKLSsgICAgICAgICAgIyBBTExfTElOR1VBUywgUE9GSUxFUywgVVBEQVRFUE9GSUxFUywgRFVNTVlQT0ZJTEVTLCBHTU9GSUxFUyBkZXBlbmQKLSsgICAgICAgICAgIyBvbiAkYWNfZGlyIGJ1dCBkb24ndCBkZXBlbmQgb24gdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlvbgotKyAgICAgICAgICAjIHBhcmFtZXRlcnMuCi0rICAgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTIjsgdGhlbgotKyAgICAgICAgICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCi0rICAgICAgICAgICAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhlbgotKyAgICAgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IHNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIiB8fCBlY2hvICJzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIEFMTF9MSU5HVUFTXz1gc2VkIC1lICIvXiMvZCIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKLSsgICAgICAgICAgICAjIEhpZGUgdGhlIEFMTF9MSU5HVUFTIGFzc2lnbWVudCBmcm9tIGF1dG9tYWtlLgotKyAgICAgICAgICAgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JEFMTF9MSU5HVUFTXycKLSsgICAgICAgICAgICBQT01BS0VGSUxFREVQUz0iJFBPTUFLRUZJTEVERVBTIExJTkdVQVMiCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAjIFRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcyB3YXMgZ2l2ZW4gaW4gY29uZmlndXJlLmluLgotKyAgICAgICAgICAgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JE9CU09MRVRFX0FMTF9MSU5HVUFTJwotKyAgICAgICAgICBmaQotKyAgICAgICAgICAjIENvbXB1dGUgUE9GSUxFUwotKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKLSsgICAgICAgICAgIyBDb21wdXRlIFVQREFURVBPRklMRVMKLSsgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5wby11cGRhdGUpCi0rICAgICAgICAgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKLSsgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5ub3ApCi0rICAgICAgICAgICMgQ29tcHV0ZSBHTU9GSUxFUwotKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCi0rICAgICAgICAgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCi0rICAgICAgICAgICAgLikgc3JjZGlycHJlPSA7OwotKyAgICAgICAgICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKLSsgICAgICAgICAgZXNhYwotKyAgICAgICAgICBQT0ZJTEVTPQotKyAgICAgICAgICBVUERBVEVQT0ZJTEVTPQotKyAgICAgICAgICBEVU1NWVBPRklMRVM9Ci0rICAgICAgICAgIEdNT0ZJTEVTPQotKyAgICAgICAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgICAgICAgICAgUE9GSUxFUz0iJFBPRklMRVMgJHNyY2RpcnByZSRsYW5nLnBvIgotKyAgICAgICAgICAgIFVQREFURVBPRklMRVM9IiRVUERBVEVQT0ZJTEVTICRsYW5nLnBvLXVwZGF0ZSIKLSsgICAgICAgICAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgotKyAgICAgICAgICAgIEdNT0ZJTEVTPSIkR01PRklMRVMgJHNyY2RpcnByZSRsYW5nLmdtbyIKLSsgICAgICAgICAgZG9uZQotKyAgICAgICAgICAjIENBVEFMT0dTIGRlcGVuZHMgb24gYm90aCAkYWNfZGlyIGFuZCB0aGUgdXNlcidzIExJTkdVQVMKLSsgICAgICAgICAgIyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsgICAgICAgICAgSU5TVF9MSU5HVUFTPQotKyAgICAgICAgICBpZiB0ZXN0IC1uICIkQUxMX0xJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgZm9yIHByZXNlbnRsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgICAgICAgICAgIHVzZWl0PW5vCi0rICAgICAgICAgICAgICBpZiB0ZXN0ICIlVU5TRVQlIiAhPSAiJExJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRMSU5HVUFTIgotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkQUxMX0xJTkdVQVMiCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbwotKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJlc2VudGxhbmcgY2F0YWxvZyBpZiBkZXNpcmVkbGFuZyBpcwotKyAgICAgICAgICAgICAgICAjICAgYS4gZXF1YWwgdG8gcHJlc2VudGxhbmcsIG9yCi0rICAgICAgICAgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAotKyAgICAgICAgICAgICAgICAjICAgICAgcHJlc2VudGxhbmcgY2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgbWVzc2FnZXMKLSsgICAgICAgICAgICAgICAgIyAgICAgIHdoaWNoIGFyZSBub3QgdHJhbnNsYXRlZCBpbiB0aGUgZGVzaXJlZGxhbmcgY2F0YWxvZykuCi0rICAgICAgICAgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KLSsgICAgICAgICAgICAgICAgICAiJHByZXNlbnRsYW5nIiopIHVzZWl0PXllczs7Ci0rICAgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVuCi0rICAgICAgICAgICAgICAgIElOU1RfTElOR1VBUz0iJElOU1RfTElOR1VBUyAkcHJlc2VudGxhbmciCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgQ0FUQUxPR1M9Ci0rICAgICAgICAgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgZm9yIGxhbmcgaW4gJElOU1RfTElOR1VBUzsgZG8KLSsgICAgICAgICAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgotKyAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiCi0rICAgICAgICAgIHNlZCAtZSAiL15QT1RGSUxFUyA9L3IgJGFjX2Rpci9QT1RGSUxFUyIgLWUgIi9eIyBNYWtldmFycy9yICRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9NYWtldmFycyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBQT01BS0VGSUxFREVQU0B8JFBPTUFLRUZJTEVERVBTfGciICIkYWNfZGlyL01ha2VmaWxlLmluIiA+ICIkYWNfZGlyL01ha2VmaWxlIgotKyAgICAgICAgICBmb3IgZiBpbiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyIi9SdWxlcy0qOyBkbwotKyAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgotKyAgICAgICAgICAgICAgY2FzZSAiJGYiIGluCi0rICAgICAgICAgICAgICAgICoub3JpZyB8ICouYmFrIHwgKn4pIDs7Ci0rICAgICAgICAgICAgICAgICopIGNhdCAiJGYiID4+ICIkYWNfZGlyL01ha2VmaWxlIiA7OwotKyAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgIGRvbmUKLSsgICAgICAgIGZpCi0rICAgICAgICA7OwotKyAgICAgIGVzYWMKLSsgICAgZG9uZV0sCi0rICAgWyMgQ2FwdHVyZSB0aGUgdmFsdWUgb2Ygb2Jzb2xldGUgQUxMX0xJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUKLSsgICAgIyBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTLCBDQVRBTE9HUy4gQnV0IGhpZGUgaXQKLSsgICAgIyBmcm9tIGF1dG9tYWtlLgotKyAgICBldmFsICdPQlNPTEVURV9BTExfTElOR1VBUycnPSIkQUxMX0xJTkdVQVMiJwotKyAgICAjIENhcHR1cmUgdGhlIHZhbHVlIG9mIExJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUgQ0FUQUxPR1MuCi0rICAgIExJTkdVQVM9IiR7TElOR1VBUy0lVU5TRVQlfSIKLSsgICBdKQotK10pCi0rCi0rZG5sIFBvc3Rwcm9jZXNzZXMgYSBNYWtlZmlsZSBpbiBhIGRpcmVjdG9yeSBjb250YWluaW5nIFBPIGZpbGVzLgotK0FDX0RFRlVOKFtBTV9QT1NUUFJPQ0VTU19QT19NQUtFRklMRV0sCi0rWwotKyAgIyBXaGVuIHRoaXMgY29kZSBpcyBydW4sIGluIGNvbmZpZy5zdGF0dXMsIHR3byB2YXJpYWJsZXMgaGF2ZSBhbHJlYWR5IGJlZW4KLSsgICMgc2V0OgotKyAgIyAtIE9CU09MRVRFX0FMTF9MSU5HVUFTIGlzIHRoZSB2YWx1ZSBvZiBMSU5HVUFTIHNldCBpbiBjb25maWd1cmUuaW4sCi0rICAjIC0gTElOR1VBUyBpcyB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExJTkdVQVMgYXQgY29uZmlndXJlCi0rICAjICAgdGltZS4KLSsKLStjaGFuZ2VxdW90ZSgsKWRubAotKyAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCi0rICBhY19kaXI9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlL1teL11bXi9dKiQlJSdgCi0rICBhY19kaXJfc3VmZml4PSIvYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYCIKLSsgIGFjX2RvdHM9YGVjaG8gIiRhY19kaXJfc3VmZml4InxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKLSsgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KLSsgICMgSW4gYXV0b2NvbmYtMi41MCBpdCBpcyBjYWxsZWQgJHNyY2Rpci4KLSsgIHRlc3QgLW4gIiRhY19naXZlbl9zcmNkaXIiIHx8IGFjX2dpdmVuX3NyY2Rpcj0iJHNyY2RpciIKLSsgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCi0rICAgIC4pICB0b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2AgOzsKLSsgICAgLyopIHRvcF9zcmNkaXI9IiRhY19naXZlbl9zcmNkaXIiIDs7Ci0rICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7Ci0rICBlc2FjCi0rCi0rICAjIEZpbmQgYSB3YXkgdG8gZWNobyBzdHJpbmdzIHdpdGhvdXQgaW50ZXJwcmV0aW5nIGJhY2tzbGFzaC4KLSsgIGlmIHRlc3QgIlhgKGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCi0rICAgIGd0X2VjaG89J2VjaG8nCi0rICBlbHNlCi0rICAgIGlmIHRlc3QgIlhgKHByaW50ZiAnJXNcbicgJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCi0rICAgICAgZ3RfZWNobz0ncHJpbnRmICVzXG4nCi0rICAgIGVsc2UKLSsgICAgICBlY2hvX2Z1bmMgKCkgewotKyAgICAgICAgY2F0IDw8RU9UCi0rJCoKLStFT1QKLSsgICAgICB9Ci0rICAgICAgZ3RfZWNobz0nZWNob19mdW5jJwotKyAgICBmaQotKyAgZmkKLSsKLSsgICMgQSBzZWQgc2NyaXB0IHRoYXQgZXh0cmFjdHMgdGhlIHZhbHVlIG9mIFZBUklBQkxFIGZyb20gYSBNYWtlZmlsZS4KLSsgIHNlZF94X3ZhcmlhYmxlPScKLSsjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCi0reAotK3MvUC9QLwotK3gKLSt0YQotKyMgWWVzIGl0IHdhcyBlbXB0eS4gTG9vayBpZiB3ZSBoYXZlIHRoZSBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uLgotKy9eWwkgXSpWQVJJQUJMRVsJIF0qPS97Ci0rICAjIFNlZW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCi0rICBzL15bCSBdKlZBUklBQkxFWwkgXSo9Ly8KLSsgIGJhCi0rfQotK2JkCi0rOmEKLSsjIEhlcmUgd2UgYXJlIHByb2Nlc3NpbmcgYSBsaW5lIGZyb20gdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCi0rIyBSZW1vdmUgY29tbWVudCwgbW9yZSBwcmVjaXNlbHkgcmVwbGFjZSBpdCB3aXRoIGEgc3BhY2UuCi0rcy8jLiokLyAvCi0rIyBTZWUgaWYgdGhlIGxpbmUgZW5kcyBpbiBhIGJhY2tzbGFzaC4KLSt0YgotKzpiCi0rcy9cXCQvLwotKyMgUHJpbnQgdGhlIGxpbmUsIHdpdGhvdXQgdGhlIHRyYWlsaW5nIGJhY2tzbGFzaC4KLStwCi0rdGMKLSsjIFRoZXJlIHdhcyBubyB0cmFpbGluZyBiYWNrc2xhc2guIFRoZSBlbmQgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gaXMKLSsjIHJlYWNoZWQuIENsZWFyIHRoZSBob2xkIHNwYWNlLgotK3MvXi4qJC8vCi0reAotK2JkCi0rOmMKLSsjIEEgdHJhaWxpbmcgYmFja3NsYXNoIG1lYW5zIHRoYXQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gY29udGludWVzIGluIHRoZQotKyMgbmV4dCBsaW5lLiBQdXQgYSBub25lbXB0eSBzdHJpbmcgaW50byB0aGUgaG9sZCBzcGFjZSB0byBpbmRpY2F0ZSB0aGlzLgotK3MvXi4qJC9QLwotK3gKLSs6ZAotKycKLStjaGFuZ2VxdW90ZShbLF0pZG5sCi0rCi0rICAjIFNldCBQT1RGSUxFUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIFBPVEZJTEVTLgotKyAgc2VkX3hfUE9URklMRVM9ImAkZ3RfZWNobyBcIiRzZWRfeF92YXJpYWJsZVwiIHwgc2VkIC1lICcvXiAqIy9kJyAtZSAncy9WQVJJQUJMRS9QT1RGSUxFUy9nJ2AiCi0rICBQT1RGSUxFUz1gc2VkIC1uIC1lICIkc2VkX3hfUE9URklMRVMiIDwgIiRhY19maWxlImAKLSsgICMgQ29tcHV0ZSBQT1RGSUxFU19ERVBTIGFzCi0rICAjICAgJChmb3JlYWNoIGZpbGUsICQoUE9URklMRVMpLCAkKHRvcF9zcmNkaXIpLyQoZmlsZSkpCi0rICBQT1RGSUxFU19ERVBTPQotKyAgZm9yIGZpbGUgaW4gJFBPVEZJTEVTOyBkbwotKyAgICBQT1RGSUxFU19ERVBTPSIkUE9URklMRVNfREVQUyAiJyQodG9wX3NyY2RpcikvJyIkZmlsZSIKLSsgIGRvbmUKLSsgIFBPTUFLRUZJTEVERVBTPSIiCi0rCi0rICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCi0rICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCi0rICBmaQotKyAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiOyB0aGVuCi0rICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCi0rICAgIEFMTF9MSU5HVUFTXz1gc2VkIC1lICIvXiMvZCIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKLSsgICAgUE9NQUtFRklMRURFUFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgotKyAgZWxzZQotKyAgICAjIFNldCBBTExfTElOR1VBUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIExJTkdVQVMuCi0rICAgIHNlZF94X0xJTkdVQVM9ImAkZ3RfZWNobyBcIiRzZWRfeF92YXJpYWJsZVwiIHwgc2VkIC1lICcvXiAqIy9kJyAtZSAncy9WQVJJQUJMRS9MSU5HVUFTL2cnYCIKLSsgICAgQUxMX0xJTkdVQVNfPWBzZWQgLW4gLWUgIiRzZWRfeF9MSU5HVUFTIiA8ICIkYWNfZmlsZSJgCi0rICBmaQotKyAgIyBIaWRlIHRoZSBBTExfTElOR1VBUyBhc3NpZ21lbnQgZnJvbSBhdXRvbWFrZS4KLSsgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JEFMTF9MSU5HVUFTXycKLSsgICMgQ29tcHV0ZSBQT0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKLSsgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLnBvLXVwZGF0ZSkKLSsgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQotKyAgIyBDb21wdXRlIEdNT0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCi0rICAjIENvbXB1dGUgUFJPUEVSVElFU0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHRvcF9zcmNkaXIpLyQoRE9NQUlOKV8kKGxhbmcpLnByb3BlcnRpZXMpCi0rICAjIENvbXB1dGUgQ0xBU1NGSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJCh0b3Bfc3JjZGlyKS8kKERPTUFJTilfJChsYW5nKS5jbGFzcykKLSsgICMgQ29tcHV0ZSBRTUZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5xbSkKLSsgICMgQ29tcHV0ZSBNU0dGSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoZnJvYiAkKGxhbmcpKS5tc2cpCi0rICAjIENvbXB1dGUgUkVTT1VSQ0VTRExMRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGZyb2IgJChsYW5nKSkvJChET01BSU4pLnJlc291cmNlcy5kbGwpCi0rICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgotKyAgICAuKSBzcmNkaXJwcmU9IDs7Ci0rICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKLSsgIGVzYWMKLSsgIFBPRklMRVM9Ci0rICBVUERBVEVQT0ZJTEVTPQotKyAgRFVNTVlQT0ZJTEVTPQotKyAgR01PRklMRVM9Ci0rICBQUk9QRVJUSUVTRklMRVM9Ci0rICBDTEFTU0ZJTEVTPQotKyAgUU1GSUxFUz0KLSsgIE1TR0ZJTEVTPQotKyAgUkVTT1VSQ0VTRExMRklMRVM9Ci0rICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgIFBPRklMRVM9IiRQT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5wbyIKLSsgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgotKyAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgotKyAgICBHTU9GSUxFUz0iJEdNT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5nbW8iCi0rICAgIFBST1BFUlRJRVNGSUxFUz0iJFBST1BFUlRJRVNGSUxFUyBcJCh0b3Bfc3JjZGlyKS9cJChET01BSU4pXyRsYW5nLnByb3BlcnRpZXMiCi0rICAgIENMQVNTRklMRVM9IiRDTEFTU0ZJTEVTIFwkKHRvcF9zcmNkaXIpL1wkKERPTUFJTilfJGxhbmcuY2xhc3MiCi0rICAgIFFNRklMRVM9IiRRTUZJTEVTICRzcmNkaXJwcmUkbGFuZy5xbSIKLSsgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKLSsgICAgTVNHRklMRVM9IiRNU0dGSUxFUyAkc3JjZGlycHJlJGZyb2JiZWRsYW5nLm1zZyIKLSsgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnYAotKyAgICBSRVNPVVJDRVNETExGSUxFUz0iJFJFU09VUkNFU0RMTEZJTEVTICRzcmNkaXJwcmUkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgotKyAgZG9uZQotKyAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBMSU5HVUFTCi0rICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgotKyAgSU5TVF9MSU5HVUFTPQotKyAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgotKyAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICAgIHVzZWl0PW5vCi0rICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhlbgotKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCi0rICAgICAgZWxzZQotKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgotKyAgICAgIGZpCi0rICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbwotKyAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFsb2cgaWYgZGVzaXJlZGxhbmcgaXMKLSsgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKLSsgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAotKyAgICAgICAgIyAgICAgIHByZXNlbnRsYW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCi0rICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KLSsgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KLSsgICAgICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OwotKyAgICAgICAgZXNhYwotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0ICR1c2VpdCA9IHllczsgdGhlbgotKyAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKLSsgICAgICBmaQotKyAgICBkb25lCi0rICBmaQotKyAgQ0FUQUxPR1M9Ci0rICBKQVZBQ0FUQUxPR1M9Ci0rICBRVENBVEFMT0dTPQotKyAgVENMQ0FUQUxPR1M9Ci0rICBDU0hBUlBDQVRBTE9HUz0KLSsgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCi0rICAgIGZvciBsYW5nIGluICRJTlNUX0xJTkdVQVM7IGRvCi0rICAgICAgQ0FUQUxPR1M9IiRDQVRBTE9HUyAkbGFuZy5nbW8iCi0rICAgICAgSkFWQUNBVEFMT0dTPSIkSkFWQUNBVEFMT0dTIFwkKERPTUFJTilfJGxhbmcucHJvcGVydGllcyIKLSsgICAgICBRVENBVEFMT0dTPSIkUVRDQVRBTE9HUyAkbGFuZy5xbSIKLSsgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAotKyAgICAgIFRDTENBVEFMT0dTPSIkVENMQ0FUQUxPR1MgJGZyb2JiZWRsYW5nLm1zZyIKLSsgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZydgCi0rICAgICAgQ1NIQVJQQ0FUQUxPR1M9IiRDU0hBUlBDQVRBTE9HUyAkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgotKyAgICBkb25lCi0rICBmaQotKwotKyAgc2VkIC1lICJzfEBQT1RGSUxFU19ERVBTQHwkUE9URklMRVNfREVQU3xnIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QFBST1BFUlRJRVNGSUxFU0B8JFBST1BFUlRJRVNGSUxFU3xnIiAtZSAic3xAQ0xBU1NGSUxFU0B8JENMQVNTRklMRVN8ZyIgLWUgInN8QFFNRklMRVNAfCRRTUZJTEVTfGciIC1lICJzfEBNU0dGSUxFU0B8JE1TR0ZJTEVTfGciIC1lICJzfEBSRVNPVVJDRVNETExGSUxFU0B8JFJFU09VUkNFU0RMTEZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBKQVZBQ0FUQUxPR1NAfCRKQVZBQ0FUQUxPR1N8ZyIgLWUgInN8QFFUQ0FUQUxPR1NAfCRRVENBVEFMT0dTfGciIC1lICJzfEBUQ0xDQVRBTE9HU0B8JFRDTENBVEFMT0dTfGciIC1lICJzfEBDU0hBUlBDQVRBTE9HU0B8JENTSEFSUENBVEFMT0dTfGciIC1lICdzLF4jZGlzdGRpcjosZGlzdGRpcjosJyA8ICIkYWNfZmlsZSIgPiAiJGFjX2ZpbGUudG1wIgotKyAgaWYgZ3JlcCAtbCAnQFRDTENBVEFMT0dTQCcgIiRhY19maWxlIiA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAjIEFkZCBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZm9ybXVsYXRlZCBhcyBhIHNpbXBsZSBzdWZmaXggcnVsZS4KLSsgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCi0rICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCi0rJGZyb2JiZWRsYW5nLm1zZzogJGxhbmcucG8KLSsJQGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8iOyBcCi0rCVwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLStFT0YKLSsgICAgZG9uZQotKyAgZmkKLSsgIGlmIGdyZXAgLWwgJ0BDU0hBUlBDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgIyBBZGQgZGVwZW5kZW5jaWVzIHRoYXQgY2Fubm90IGJlIGZvcm11bGF0ZWQgYXMgYSBzaW1wbGUgc3VmZml4IHJ1bGUuCi0rICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZydgCi0rICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCi0rJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbDogJGxhbmcucG8KLSsJQGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgXCQoRE9NQUlOKSI7IFwKLSsJXCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yICJcJChET01BSU4pIiB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLStFT0YKLSsgICAgZG9uZQotKyAgZmkKLSsgIGlmIHRlc3QgLW4gIiRQT01BS0VGSUxFREVQUyI7IHRoZW4KLSsgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCi0rTWFrZWZpbGU6ICRQT01BS0VGSUxFREVQUwotK0VPRgotKyAgZmkKLSsgIG12ICIkYWNfZmlsZS50bXAiICIkYWNfZmlsZSIKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9wcmludGYtcG9zaXgubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3ByaW50Zi1wb3NpeC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk3NDY1NDAwMCAtMDQwMAotQEAgLTAsMCArMSw0NiBAQAotKyMgcHJpbnRmLXBvc2l4Lm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTMuMSkKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgdGhlIHByaW50ZigpIGZ1bmN0aW9uIHN1cHBvcnRzIFBPU0lYL1hTSSBmb3JtYXQgc3RyaW5ncyB3aXRoCi0rZG5sIHBvc2l0aW9ucy4KLSsKLStBQ19ERUZVTihbZ3RfUFJJTlRGX1BPU0lYXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKLSsgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHByaW50ZigpIHN1cHBvcnRzIFBPU0lYL1hTSSBmb3JtYXQgc3RyaW5nc10sCi0rICAgIGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4LAotKyAgICBbCi0rICAgICAgQUNfVFJZX1JVTihbCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKy8qIFRoZSBzdHJpbmcgIiUyJGQgJTEkZCIsIHdpdGggZG9sbGFyIGNoYXJhY3RlcnMgcHJvdGVjdGVkIGZyb20gdGhlIHNoZWxsJ3MKLSsgICBkb2xsYXIgZXhwYW5zaW9uIChwb3NzaWJseSBhbiBhdXRvY29uZiBidWcpLiAgKi8KLStzdGF0aWMgY2hhciBmb3JtYXRbXSA9IHsgJyUnLCAnMicsICckJywgJ2QnLCAnICcsICclJywgJzEnLCAnJCcsICdkJywgJ1wwJyB9OwotK3N0YXRpYyBjaGFyIGJ1ZlsxMDBdOwotK2ludCBtYWluICgpCi0rewotKyAgc3ByaW50ZiAoYnVmLCBmb3JtYXQsIDMzLCA1NSk7Ci0rICByZXR1cm4gKHN0cmNtcCAoYnVmLCAiNTUgMzMiKSAhPSAwKTsKLSt9XSwgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9eWVzLCBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD1ubywKLSsgICAgICBbCi0rICAgICAgICBBQ19FR1JFUF9DUFAobm90cG9zaXgsIFsKLSsjaWYgZGVmaW5lZCBfX05ldEJTRF9fIHx8IGRlZmluZWQgX01TQ19WRVIgfHwgZGVmaW5lZCBfX01JTkdXMzJfXyB8fCBkZWZpbmVkIF9fQ1lHV0lOX18KLSsgIG5vdHBvc2l4Ci0rI2VuZGlmCi0rICAgICAgICBdLCBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD0iZ3Vlc3Npbmcgbm8iLAotKyAgICAgICAgICAgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9Imd1ZXNzaW5nIHllcyIpCi0rICAgICAgXSkKLSsgICAgXSkKLSsgIGNhc2UgJGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4IGluCi0rICAgICp5ZXMpCi0rICAgICAgQUNfREVGSU5FKEhBVkVfUE9TSVhfUFJJTlRGLCAxLAotKyAgICAgICAgW0RlZmluZSBpZiB5b3VyIHByaW50ZigpIGZ1bmN0aW9uIHN1cHBvcnRzIGZvcm1hdCBzdHJpbmdzIHdpdGggcG9zaXRpb25zLl0pCi0rICAgICAgOzsKLSsgIGVzYWMKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9wcm9ndGVzdC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvcHJvZ3Rlc3QubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45OTA2NTE1NjggLTA0MDAKLUBAIC0wLDAgKzEsOTEgQEAKLSsjIHByb2d0ZXN0Lm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5Ni4KLSsKLSsjIFNlYXJjaCBwYXRoIGZvciBhIHByb2dyYW0gd2hpY2ggcGFzc2VzIHRoZSBnaXZlbiB0ZXN0LgotKwotK2RubCBBTV9QQVRIX1BST0dfV0lUSF9URVNUKFZBUklBQkxFLCBQUk9HLVRPLUNIRUNLLUZPUiwKLStkbmwgICBURVNULVBFUkZPUk1FRC1PTi1GT1VORF9QUk9HUkFNIFssIFZBTFVFLUlGLU5PVC1GT1VORCBbLCBQQVRIXV0pCi0rQUNfREVGVU4oW0FNX1BBVEhfUFJPR19XSVRIX1RFU1RdLAotK1sKLSsjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCi0rIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCi0raWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KLSsgIGVjaG8gIiMhIC9iaW4vc2giID5jb25mJCQuc2gKLSsgIGVjaG8gICJleGl0IDAiICAgPj5jb25mJCQuc2gKLSsgIGNobW9kICt4IGNvbmYkJC5zaAotKyAgaWYgKFBBVEg9Ii9ub25leGlzdGVudDsuIjsgY29uZiQkLnNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgUEFUSF9TRVBBUkFUT1I9JzsnCi0rICBlbHNlCi0rICAgIFBBVEhfU0VQQVJBVE9SPToKLSsgIGZpCi0rICBybSAtZiBjb25mJCQuc2gKLStmaQotKwotKyMgRmluZCBvdXQgaG93IHRvIHRlc3QgZm9yIGV4ZWN1dGFibGUgZmlsZXMuIERvbid0IHVzZSBhIHplcm8tYnl0ZSBmaWxlLAotKyMgYXMgc3lzdGVtcyBtYXkgdXNlIG1ldGhvZHMgb3RoZXIgdGhhbiBtb2RlIGJpdHMgdG8gZGV0ZXJtaW5lIGV4ZWN1dGFiaWxpdHkuCi0rY2F0ID5jb25mJCQuZmlsZSA8PF9BU0VPRgotKyMhIC9iaW4vc2gKLStleGl0IDAKLStfQVNFT0YKLStjaG1vZCAreCBjb25mJCQuZmlsZQotK2lmIHRlc3QgLXggY29uZiQkLmZpbGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICBhY19leGVjdXRhYmxlX3A9InRlc3QgLXgiCi0rZWxzZQotKyAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgotK2ZpCi0rcm0gLWYgY29uZiQkLmZpbGUKLSsKLSsjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiQyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJDI7IGFjX3dvcmQ9WyRdMgotK0FDX01TR19DSEVDS0lORyhbZm9yICRhY193b3JkXSkKLStBQ19DQUNIRV9WQUwoYWNfY3ZfcGF0aF8kMSwKLStbY2FzZSAiWyRdJDEiIGluCi0rICBbW1xcL11dKiB8ID86W1tcXC9dXSopCi0rICAgIGFjX2N2X3BhdGhfJDE9IlskXSQxIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSsgICAgOzsKLSsgICopCi0rICAgIGFjX3NhdmVfSUZTPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotKyAgICBmb3IgYWNfZGlyIGluIGlmZWxzZShbJDVdLCAsICRQQVRILCBbJDVdKTsgZG8KLSsgICAgICBJRlM9IiRhY19zYXZlX0lGUyIKLSsgICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgICAgICAgaWYgJGFjX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgICAgICAgaWYgWyQzXTsgdGhlbgotKyAgICAgICAgICAgIGFjX2N2X3BhdGhfJDE9IiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0rICAgICAgICAgICAgYnJlYWsgMgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBkb25lCi0rICAgIGRvbmUKLSsgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCi0rZG5sIElmIG5vIDR0aCBhcmcgaXMgZ2l2ZW4sIGxlYXZlIHRoZSBjYWNoZSB2YXJpYWJsZSB1bnNldCwKLStkbmwgc28gQUNfUEFUSF9QUk9HUyB3aWxsIGtlZXAgbG9va2luZy4KLStpZmVsc2UoWyQ0XSwgLCAsIFsgIHRlc3QgLXogIlskXWFjX2N2X3BhdGhfJDEiICYmIGFjX2N2X3BhdGhfJDE9IiQ0IgotK10pZG5sCi0rICAgIDs7Ci0rZXNhY10pZG5sCi0rJDE9IiRhY19jdl9wYXRoXyQxIgotK2lmIHRlc3QgaWZlbHNlKFskNF0sICwgWy1uICJbJF0kMSJdLCBbIlskXSQxIiAhPSAiJDQiXSk7IHRoZW4KLSsgIEFDX01TR19SRVNVTFQoWyRdJDEpCi0rZWxzZQotKyAgQUNfTVNHX1JFU1VMVChubykKLStmaQotK0FDX1NVQlNUKCQxKWRubAotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3NpZ25lZC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvc2lnbmVkLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTk2NjUwNjU2IC0wNDAwCi1AQCAtMCwwICsxLDE5IEBACi0rIyBzaWduZWQubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMC40MCkKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW2JoX0NfU0lHTkVEXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHNpZ25lZF0sIGJoX2N2X2Nfc2lnbmVkLAotKyAgIFtBQ19UUllfQ09NUElMRSgsIFtzaWduZWQgY2hhciB4O10sIGJoX2N2X2Nfc2lnbmVkPXllcywgYmhfY3ZfY19zaWduZWQ9bm8pXSkKLSsgIGlmIHRlc3QgJGJoX2N2X2Nfc2lnbmVkID0gbm87IHRoZW4KLSsgICAgQUNfREVGSU5FKHNpZ25lZCwgLAotKyAgICAgICAgICAgICAgW0RlZmluZSB0byBlbXB0eSBpZiB0aGUgQyBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBrZXl3b3JkLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3NpemVfbWF4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9zaXplX21heC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjAwMzY0OTU5MiAtMDQwMAotQEAgLTAsMCArMSw2MSBAQAotKyMgc2l6ZV9tYXgubTQgc2VyaWFsIDIKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtnbF9TSVpFX01BWF0sCi0rWwotKyAgQUNfQ0hFQ0tfSEVBREVSUyhzdGRpbnQuaCkKLSsgIGRubCBGaXJzdCB0ZXN0IHdoZXRoZXIgdGhlIHN5c3RlbSBhbHJlYWR5IGhhcyBTSVpFX01BWC4KLSsgIEFDX01TR19DSEVDS0lORyhbZm9yIFNJWkVfTUFYXSkKLSsgIHJlc3VsdD0KLSsgIEFDX0VHUkVQX0NQUChbRm91bmQgaXRdLCBbCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpZiBIQVZFX1NURElOVF9ICi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotKyNpZmRlZiBTSVpFX01BWAotK0ZvdW5kIGl0Ci0rI2VuZGlmCi0rXSwgcmVzdWx0PXllcykKLSsgIGlmIHRlc3QgLXogIiRyZXN1bHQiOyB0aGVuCi0rICAgIGRubCBEZWZpbmUgaXQgb3Vyc2VsdmVzLiBIZXJlIHdlIGFzc3VtZSB0aGF0IHRoZSB0eXBlICdzaXplX3QnIGlzIG5vdCB3aWRlcgotKyAgICBkbmwgdGhhbiB0aGUgdHlwZSAndW5zaWduZWQgbG9uZycuCi0rICAgIGRubCBUaGUgX0FDX0NPTVBVVEVfSU5UIG1hY3JvIHdvcmtzIHVwIHRvIExPTkdfTUFYLCBzaW5jZSBpdCB1c2VzICdleHByJywKLSsgICAgZG5sIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gd29yayBmcm9tIExPTkdfTUlOIHRvIExPTkdfTUFYLgotKyAgICBfQUNfQ09NUFVURV9JTlQoW34oc2l6ZV90KTAgLyAxMF0sIHJlc19oaSwKLSsgICAgICBbI2luY2x1ZGUgPHN0ZGRlZi5oPl0sIHJlc3VsdD0/KQotKyAgICBfQUNfQ09NUFVURV9JTlQoW34oc2l6ZV90KTAgJSAxMF0sIHJlc19sbywKLSsgICAgICBbI2luY2x1ZGUgPHN0ZGRlZi5oPl0sIHJlc3VsdD0/KQotKyAgICBfQUNfQ09NUFVURV9JTlQoW3NpemVvZiAoc2l6ZV90KSA8PSBzaXplb2YgKHVuc2lnbmVkIGludCldLCBmaXRzX2luX3VpbnQsCi0rICAgICAgWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCByZXN1bHQ9PykKLSsgICAgaWYgdGVzdCAiJGZpdHNfaW5fdWludCIgPSAxOyB0aGVuCi0rICAgICAgZG5sIEV2ZW4gdGhvdWdoIFNJWkVfTUFYIGZpdHMgaW4gYW4gdW5zaWduZWQgaW50LCBpdCBtdXN0IGJlIG9mIHR5cGUKLSsgICAgICBkbmwgJ3Vuc2lnbmVkIGxvbmcnIGlmIHRoZSB0eXBlICdzaXplX3QnIGlzIHRoZSBzYW1lIGFzICd1bnNpZ25lZCBsb25nJy4KLSsgICAgICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyAgICAgICAgZXh0ZXJuIHNpemVfdCBmb287Ci0rICAgICAgICBleHRlcm4gdW5zaWduZWQgbG9uZyBmb287Ci0rICAgICAgICBdLCBbXSwgZml0c19pbl91aW50PTApCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgLXogIiRyZXN1bHQiOyB0aGVuCi0rICAgICAgaWYgdGVzdCAiJGZpdHNfaW5fdWludCIgPSAxOyB0aGVuCi0rICAgICAgICByZXN1bHQ9IiRyZXNfaGkkcmVzX2xvIlUKLSsgICAgICBlbHNlCi0rICAgICAgICByZXN1bHQ9IiRyZXNfaGkkcmVzX2xvIlVMCi0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIGRubCBTaG91bGRuJ3QgaGFwcGVuLCBidXQgd2hvIGtub3dzLi4uCi0rICAgICAgcmVzdWx0PSd+KHNpemVfdCkwJwotKyAgICBmaQotKyAgZmkKLSsgIEFDX01TR19SRVNVTFQoWyRyZXN1bHRdKQotKyAgaWYgdGVzdCAiJHJlc3VsdCIgIT0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChbU0laRV9NQVhdLCBbJHJlc3VsdF0sCi0rICAgICAgW0RlZmluZSBhcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0eXBlICdzaXplX3QnLCBpZiB0aGUgc3lzdGVtIGRvZXNuJ3QgZGVmaW5lIGl0Ll0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3N0ZGludF9oLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9zdGRpbnRfaC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjAwOTY0ODY4MCAtMDQwMAotQEAgLTAsMCArMSwyOCBAQAotKyMgc3RkaW50X2gubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLSsjIERlZmluZSBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCBpZiA8c3RkaW50Lmg+IGV4aXN0cywKLSsjIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+LCBhbmQgZGVjbGFyZXMgdWludG1heF90LgotKwotK0FDX0RFRlVOKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3RkaW50LmhdLCBqbV9hY19jdl9oZWFkZXJfc3RkaW50X2gsCi0rICBbQUNfVFJZX0NPTVBJTEUoCi0rICAgIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPl0sCi0rICAgIFt1aW50bWF4X3QgaSA9ICh1aW50bWF4X3QpIC0xO10sCi0rICAgIGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaD15ZXMsCi0rICAgIGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaD1ubyldKQotKyAgaWYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX3N0ZGludF9oID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIDxzdGRpbnQuaD4gZXhpc3RzLCBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwKLSsgICAgICAgYW5kIGRlY2xhcmVzIHVpbnRtYXhfdC4gXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvdWludG1heF90Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC91aW50bWF4X3QubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMjE2NDY4NTYgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIHVpbnRtYXhfdC5tNCBzZXJpYWwgNyAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotK0FDX1BSRVJFUSgyLjEzKQotKwotKyMgRGVmaW5lIHVpbnRtYXhfdCB0byAndW5zaWduZWQgbG9uZycgb3IgJ3Vuc2lnbmVkIGxvbmcgbG9uZycKLSsjIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQgaW4gPHN0ZGludC5oPiBvciA8aW50dHlwZXMuaD4uCi0rCi0rQUNfREVGVU4oW2ptX0FDX1RZUEVfVUlOVE1BWF9UXSwKLStbCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdKQotKyAgaWYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSBubyAmJiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfc3RkaW50X2ggPSBubzsgdGhlbgotKyAgICBBQ19SRVFVSVJFKFtqbV9BQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR10pCi0rICAgIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nID0geWVzIFwKLSsgICAgICAmJiBhY190eXBlPSd1bnNpZ25lZCBsb25nIGxvbmcnIFwKLSsgICAgICB8fCBhY190eXBlPSd1bnNpZ25lZCBsb25nJwotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQodWludG1heF90LCAkYWNfdHlwZSwKLSsgICAgICBbRGVmaW5lIHRvIHVuc2lnbmVkIGxvbmcgb3IgdW5zaWduZWQgbG9uZyBsb25nCi0rICAgICAgIGlmIDxzdGRpbnQuaD4gYW5kIDxpbnR0eXBlcy5oPiBkb24ndCBkZWZpbmUuXSkKLSsgIGVsc2UKLSsgICAgQUNfREVGSU5FKEhBVkVfVUlOVE1BWF9ULCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd1aW50bWF4X3QnIHR5cGUgaW4gPHN0ZGludC5oPiBvciA8aW50dHlwZXMuaD4uXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvdWxvbmdsb25nLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC91bG9uZ2xvbmcubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMjg2NDU3OTIgLTA0MDAKLUBAIC0wLDAgKzEsMjUgQEAKLSsjIHVsb25nbG9uZy5tNCBzZXJpYWwgMwotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotKyMgRGVmaW5lIEhBVkVfVU5TSUdORURfTE9OR19MT05HIGlmICd1bnNpZ25lZCBsb25nIGxvbmcnIHdvcmtzLgotKwotK0FDX0RFRlVOKFtqbV9BQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR10sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB1bnNpZ25lZCBsb25nIGxvbmddLCBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZywKLSsgIFtBQ19UUllfTElOSyhbdW5zaWduZWQgbG9uZyBsb25nIHVsbCA9IDFVTEw7IGludCBpID0gNjM7XSwKLSsgICAgW3Vuc2lnbmVkIGxvbmcgbG9uZyB1bGxtYXggPSAodW5zaWduZWQgbG9uZyBsb25nKSAtMTsKLSsgICAgIHJldHVybiB1bGwgPDwgaSB8IHVsbCA+PiBpIHwgdWxsbWF4IC8gdWxsIHwgdWxsbWF4ICUgdWxsO10sCi0rICAgIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nPXllcywKLSsgICAgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmc9bm8pXSkKLSsgIGlmIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1VOU0lHTkVEX0xPTkdfTE9ORywgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAndW5zaWduZWQgbG9uZyBsb25nJyB0eXBlLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3djaGFyX3QubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3djaGFyX3QubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMzQ2NDQ4ODAgLTA0MDAKLUBAIC0wLDAgKzEsMjIgQEAKLSsjIHdjaGFyX3QubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rZG5sIFRlc3Qgd2hldGhlciA8c3RkZGVmLmg+IGhhcyB0aGUgJ3djaGFyX3QnIHR5cGUuCi0rZG5sIFByZXJlcXVpc2l0ZTogQUNfUFJPR19DQwotKwotK0FDX0RFRlVOKFtndF9UWVBFX1dDSEFSX1RdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2NoYXJfdF0sIGd0X2N2X2Nfd2NoYXJfdCwKLSsgICAgW0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rICAgICAgIHdjaGFyX3QgZm9vID0gKHdjaGFyX3QpJ1wwJztdLCAsCi0rICAgICAgIGd0X2N2X2Nfd2NoYXJfdD15ZXMsIGd0X2N2X2Nfd2NoYXJfdD1ubyldKQotKyAgaWYgdGVzdCAkZ3RfY3ZfY193Y2hhcl90ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1dDSEFSX1QsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd3Y2hhcl90JyB0eXBlLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3dpbnRfdC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvd2ludF90Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDQwNjQzOTY4IC0wNDAwCi1AQCAtMCwwICsxLDIyIEBACi0rIyB3aW50X3QubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgPHdjaGFyLmg+IGhhcyB0aGUgJ3dpbnRfdCcgdHlwZS4KLStkbmwgUHJlcmVxdWlzaXRlOiBBQ19QUk9HX0NDCi0rCi0rQUNfREVGVU4oW2d0X1RZUEVfV0lOVF9UXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnRfdF0sIGd0X2N2X2Nfd2ludF90LAotKyAgICBbQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDx3Y2hhci5oPgotKyAgICAgICB3aW50X3QgZm9vID0gKHdjaGFyX3QpJ1wwJztdLCAsCi0rICAgICAgIGd0X2N2X2Nfd2ludF90PXllcywgZ3RfY3ZfY193aW50X3Q9bm8pXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2Nfd2ludF90ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1dJTlRfVCwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3dpbnRfdCcgdHlwZS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC94c2l6ZS5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQveHNpemUubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wNDc2NDI5MDQgLTA0MDAKLUBAIC0wLDAgKzEsMTQgQEAKLSsjIHhzaXplLm00IHNlcmlhbCAyCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK0FDX0RFRlVOKFtnbF9YU0laRV0sCi0rWwotKyAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgbGliL3hzaXplLmguCi0rICBBQ19SRVFVSVJFKFtnbF9TSVpFX01BWF0pCi0rICBBQ19DSEVDS19IRUFERVJTKHN0ZGludC5oKQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL01ha2VmaWxlLmFtCTE5OTgtMTItMzAgMDY6MTk6NDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5hbQkyMDA0LTA5LTEyIDE0OjQwOjM1LjEyMTYzMTY1NiAtMDQwMAotQEAgLTEsNSArMSw1IEBACi0gU1VCRElSUyA9IGxpYiBpbnRsIHNyYyBwbyBtYW4gdGVzdHN1aXRlCi0tRVhUUkFfRElTVCA9IGNoZWNrLmxyenN6IENPTVBBVEFCSUxJVFkgUkVBRE1FLmN2cyBSRUFETUUuaXNkbjRsaW51eCBcCi0rRVhUUkFfRElTVCA9IGNvbmZpZy5ycGF0aCAgY2hlY2subHJ6c3ogQ09NUEFUQUJJTElUWSBSRUFETUUuY3ZzIFJFQURNRS5pc2RuNGxpbnV4IFwKLSAJUkVBRE1FLmdldHRleHQgcnBtcmMgYnVpbGRycG0gc3lzdHlwZS5pbiBmYXN0Y2hlY2suc2ggUkVBRE1FLnRlc3RzIFwKLSAJYmVvcy1ydW5waXBlZC5jIGZhc3RjaGVjay5iZW9zCi0gbm9pbnN0X1NDUklQVFM9c3lzdHlwZQotQEAgLTgzLDMgKzgzLDUgQEAKLSBycG06ICQoUFIpLnRhci5neiBTcGVjZmlsZQotIAkkKHNyY2RpcikvYnVpbGRycG0gJChzcmNkaXIpCi0gCi0rCi0rQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvTWFrZWZpbGUuaW4JMTk5OC0xMi0zMCAxMTozMTo0MC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL01ha2VmaWxlLmluCTIwMDQtMDktMTIgMTQ6NDA6MzUuMTA5NjMzNDgwIC0wNDAwCi1AQCAtMTI1LDcgKzEyNSw3IEBACi0gCSAgJiYgQ09ORklHX0ZJTEVTPSRAIENPTkZJR19IRUFERVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKLSAKLSAkKEFDTE9DQUxfTTQpOiAgY29uZmlndXJlLmluICBhY2luY2x1ZGUubTQKLS0JY2QgJChzcmNkaXIpICYmICQoQUNMT0NBTCkKLSsJY2QgJChzcmNkaXIpICYmICQoQUNMT0NBTCkgLUkgbTQKLSAKLSBjb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJlCi0gCSQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbWtpbnN0YWxsZGlycwkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvbWtpbnN0YWxsZGlycwkyMDA0LTA5LTEyIDE0OjQwOjM0LjMzNzc1MDgyNCAtMDQwMAotQEAgLTEsMzQgKzEsMTUwIEBACi0gIyEgL2Jpbi9zaAotICMgbWtpbnN0YWxsZGlycyAtLS0gbWFrZSBkaXJlY3RvcnkgaGllcmFyY2h5Ci0tIyBBdXRob3I6IE5vYWggRnJpZWRtYW4gPGZyaWVkbWFuQHByZXAuYWkubWl0LmVkdT4KLSsKLStzY3JpcHR2ZXJzaW9uPTIwMDQtMDItMTUuMjAKLSsKLSsjIE9yaWdpbmFsIGF1dGhvcjogTm9haCBGcmllZG1hbiA8ZnJpZWRtYW5AcHJlcC5haS5taXQuZWR1PgotICMgQ3JlYXRlZDogMTk5My0wNS0xNgotLSMgTGFzdCBtb2RpZmllZDogMTk5NS0wMy0wNQotLSMgUHVibGljIGRvbWFpbgotKyMgUHVibGljIGRvbWFpbi4KLSsjCi0rIyBUaGlzIGZpbGUgaXMgbWFpbnRhaW5lZCBpbiBBdXRvbWFrZSwgcGxlYXNlIHJlcG9ydAotKyMgYnVncyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+IG9yIHNlbmQgcGF0Y2hlcyB0bwotKyMgPGF1dG9tYWtlLXBhdGNoZXNAZ251Lm9yZz4uCi0gCi0gZXJyc3RhdHVzPTAKLStkaXJtb2RlPSIiCi0gCi0tZm9yIGZpbGUgaW4gJHsxKyIkQCJ9IDsgZG8KLS0gICBzZXQgZm5vcmQgYGVjaG8gIjokZmlsZSIgfCBzZWQgLW5lICdzL146XC8vIy87cy9eOi8vO3MvXC8vIC9nO3MvXiMvXC8vO3AnYAotLSAgIHNoaWZ0Ci0rdXNhZ2U9IlwKLStVc2FnZTogbWtpbnN0YWxsZGlycyBbLWhdIFstLWhlbHBdIFstLXZlcnNpb25dIFstbSBNT0RFXSBESVIgLi4uCi0gCi0tICAgcGF0aGNvbXA9Ci0tICAgZm9yIGQgaW4gJHsxKyIkQCJ9IDsgZG8KLS0gICAgIHBhdGhjb21wPSIkcGF0aGNvbXAkZCIKLS0gICAgIGNhc2UgIiRwYXRoY29tcCIgaW4KLS0gICAgICAgLSogKSBwYXRoY29tcD0uLyRwYXRoY29tcCA7OwotLSAgICAgZXNhYwotK0NyZWF0ZSBlYWNoIGRpcmVjdG9yeSBESVIgKHdpdGggbW9kZSBNT0RFLCBpZiBzcGVjaWZpZWQpLCBpbmNsdWRpbmcgYWxsCi0rbGVhZGluZyBmaWxlIG5hbWUgY29tcG9uZW50cy4KLSAKLS0gICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotLSAgICAgICAgZWNobyAibWtkaXIgJHBhdGhjb21wIiAxPiYyCi0tICAgICAgICBta2RpciAiJHBhdGhjb21wIiA+IC9kZXYvbnVsbCAyPiYxIHx8IGxhc3RlcnI9JD8KLS0gICAgIGZpCi0rUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1hdXRvbWFrZUBnbnUub3JnPi4iCi0gCi0tICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KLSsjIHByb2Nlc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwotK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbwotKyAgY2FzZSAkMSBpbgotKyAgICAtaCB8IC0taGVscCB8IC0taCopICAgICAgICAgIyAtaCBmb3IgaGVscAotKyAgICAgIGVjaG8gIiR1c2FnZSIKLSsgICAgICBleGl0IDAKLSsgICAgICA7OwotKyAgICAtbSkgICAgICAgICAgICAgICAgICAgICAgICAgIyAtbSBQRVJNIGFyZwotKyAgICAgIHNoaWZ0Ci0rICAgICAgdGVzdCAkIyAtZXEgMCAmJiB7IGVjaG8gIiR1c2FnZSIgMT4mMjsgZXhpdCAxOyB9Ci0rICAgICAgZGlybW9kZT0kMQotKyAgICAgIHNoaWZ0Ci0rICAgICAgOzsKLSsgICAgLS12ZXJzaW9uKQotKyAgICAgIGVjaG8gIiQwICRzY3JpcHR2ZXJzaW9uIgotKyAgICAgIGV4aXQgMAotKyAgICAgIDs7Ci0rICAgIC0tKSAgICAgICAgICAgICAgICAgICAgICAgICAjIHN0b3Agb3B0aW9uIHByb2Nlc3NpbmcKLSsgICAgICBzaGlmdAotKyAgICAgIGJyZWFrCi0rICAgICAgOzsKLSsgICAgLSopICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5rbm93biBvcHRpb24KLSsgICAgICBlY2hvICIkdXNhZ2UiIDE+JjIKLSsgICAgICBleGl0IDEKLSsgICAgICA7OwotKyAgICAqKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCBub24tb3B0IGFyZwotKyAgICAgIGJyZWFrCi0rICAgICAgOzsKLSsgIGVzYWMKLStkb25lCi0rCi0rZm9yIGZpbGUKLStkbwotKyAgaWYgdGVzdCAtZCAiJGZpbGUiOyB0aGVuCi0rICAgIHNoaWZ0Ci0rICBlbHNlCi0rICAgIGJyZWFrCi0rICBmaQotK2RvbmUKLSsKLStjYXNlICQjIGluCi0rICAwKSBleGl0IDAgOzsKLStlc2FjCi0rCi0rIyBTb2xhcmlzIDgncyBta2RpciAtcCBpc24ndCB0aHJlYWQtc2FmZS4gIElmIHlvdSBta2RpciAtcCBhL2IgYW5kCi0rIyBta2RpciAtcCBhL2MgYXQgdGhlIHNhbWUgdGltZSwgYm90aCB3aWxsIGRldGVjdCB0aGF0IGEgaXMgbWlzc2luZywKLSsjIG9uZSB3aWxsIGNyZWF0ZSBhLCB0aGVuIHRoZSBvdGhlciB3aWxsIHRyeSB0byBjcmVhdGUgYSBhbmQgZGllIHdpdGgKLSsjIGEgIkZpbGUgZXhpc3RzIiBlcnJvci4gIFRoaXMgaXMgYSBwcm9ibGVtIHdoZW4gY2FsbGluZyBta2luc3RhbGxkaXJzCi0rIyBmcm9tIGEgcGFyYWxsZWwgbWFrZS4gIFdlIHVzZSAtLXZlcnNpb24gaW4gdGhlIHByb2JlIHRvIHJlc3RyaWN0Ci0rIyBvdXJzZWx2ZXMgdG8gR05VIG1rZGlyLCB3aGljaCBpcyB0aHJlYWQtc2FmZS4KLStjYXNlICRkaXJtb2RlIGluCi0rICAnJykKLSsgICAgaWYgbWtkaXIgLXAgLS12ZXJzaW9uIC4gPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgISAtZCAuLy0tdmVyc2lvbjsgdGhlbgotKyAgICAgIGVjaG8gIm1rZGlyIC1wIC0tICQqIgotKyAgICAgIGV4ZWMgbWtkaXIgLXAgLS0gIiRAIgotKyAgICBlbHNlCi0rICAgICAgIyBPbiBOZXh0U3RlcCBhbmQgT3BlblN0ZXAsIHRoZSBgbWtkaXInIGNvbW1hbmQgZG9lcyBub3QKLSsgICAgICAjIHJlY29nbml6ZSBhbnkgb3B0aW9uLiAgSXQgd2lsbCBpbnRlcnByZXQgYWxsIG9wdGlvbnMgYXMKLSsgICAgICAjIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSwgYW5kIHRoZW4gYWJvcnQgYmVjYXVzZSBgLicgYWxyZWFkeQotKyAgICAgICMgZXhpc3RzLgotKyAgICAgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1wCi0rICAgICAgdGVzdCAtZCAuLy0tdmVyc2lvbiAmJiBybWRpciAuLy0tdmVyc2lvbgotKyAgICBmaQotKyAgICA7OwotKyAgKikKLSsgICAgaWYgbWtkaXIgLW0gIiRkaXJtb2RlIiAtcCAtLXZlcnNpb24gLiA+L2Rldi9udWxsIDI+JjEgJiYKLSsgICAgICAgdGVzdCAhIC1kIC4vLS12ZXJzaW9uOyB0aGVuCi0rICAgICAgZWNobyAibWtkaXIgLW0gJGRpcm1vZGUgLXAgLS0gJCoiCi0rICAgICAgZXhlYyBta2RpciAtbSAiJGRpcm1vZGUiIC1wIC0tICIkQCIKLSsgICAgZWxzZQotKyAgICAgICMgQ2xlYW4gdXAgYWZ0ZXIgTmV4dFN0ZXAgYW5kIE9wZW5TdGVwIG1rZGlyLgotKyAgICAgIGZvciBkIGluIC4vLW0gLi8tcCAuLy0tdmVyc2lvbiAiLi8kZGlybW9kZSI7Ci0rICAgICAgZG8KLSsgICAgICAgIHRlc3QgLWQgJGQgJiYgcm1kaXIgJGQKLSsgICAgICBkb25lCi0rICAgIGZpCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZvciBmaWxlCi0rZG8KLSsgIHNldCBmbm9yZCBgZWNobyAiOiRmaWxlIiB8IHNlZCAtbmUgJ3MvXjpcLy8jLztzL146Ly87cy9cLy8gL2c7cy9eIy9cLy87cCdgCi0rICBzaGlmdAotKwotKyAgcGF0aGNvbXA9Ci0rICBmb3IgZAotKyAgZG8KLSsgICAgcGF0aGNvbXA9IiRwYXRoY29tcCRkIgotKyAgICBjYXNlICRwYXRoY29tcCBpbgotKyAgICAgIC0qKSBwYXRoY29tcD0uLyRwYXRoY29tcCA7OwotKyAgICBlc2FjCi0rCi0rICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotKyAgICAgIGVjaG8gIm1rZGlyICRwYXRoY29tcCIKLSsKLSsgICAgICBta2RpciAiJHBhdGhjb21wIiB8fCBsYXN0ZXJyPSQ/Ci0rCi0rICAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0gCWVycnN0YXR1cz0kbGFzdGVycgotLSAgICAgZmkKLSsgICAgICBlbHNlCi0rCWlmIHRlc3QgISAteiAiJGRpcm1vZGUiOyB0aGVuCi0rCSAgZWNobyAiY2htb2QgJGRpcm1vZGUgJHBhdGhjb21wIgotKwkgIGxhc3RlcnI9IiIKLSsJICBjaG1vZCAiJGRpcm1vZGUiICIkcGF0aGNvbXAiIHx8IGxhc3RlcnI9JD8KLSAKLS0gICAgIHBhdGhjb21wPSIkcGF0aGNvbXAvIgotLSAgIGRvbmUKLSsJICBpZiB0ZXN0ICEgLXogIiRsYXN0ZXJyIjsgdGhlbgotKwkgICAgZXJyc3RhdHVzPSRsYXN0ZXJyCi0rCSAgZmkKLSsJZmkKLSsgICAgICBmaQotKyAgICBmaQotKwotKyAgICBwYXRoY29tcD0iJHBhdGhjb21wLyIKLSsgIGRvbmUKLSBkb25lCi0gCi0gZXhpdCAkZXJyc3RhdHVzCi0rCi0rIyBMb2NhbCBWYXJpYWJsZXM6Ci0rIyBtb2RlOiBzaGVsbC1zY3JpcHQKLSsjIHNoLWluZGVudGF0aW9uOiAyCi0rIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCi0rIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCi0rIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKLSsjIHRpbWUtc3RhbXAtZW5kOiAiJCIKLSsjIEVuZDoKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vYm9sZHF1b3Quc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9ib2xkcXVvdC5zZWQJMjAwNC0wOS0xMiAxNDo0MDozNC43MjM2OTIxNTIgLTA0MDAKLUBAIC0wLDAgKzEsMTAgQEAKLStzLyJcKFteIl0qXCkiL+KAnFwx4oCdL2cKLStzL2BcKFteYCddKlwpJy/igJhcMeKAmS9nCi0rcy8gJ1woW15gJ10qXCknIC8g4oCYXDHigJkgL2cKLStzLyAnXChbXmAnXSpcKSckLyDigJhcMeKAmS9nCi0rcy9eJ1woW15gJ10qXCknIC/igJhcMeKAmSAvZwotK3Mv4oCc4oCdLyIiL2cKLStzL+KAnC/igJwbWzFtL2cKLStzL+KAnS8bWzBt4oCdL2cKLStzL+KAmC/igJgbWzFtL2cKLStzL+KAmS8bWzBt4oCZL2cKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vY2F0LWlkLXRibC5jCTE5OTgtMTItMjkgMDQ6MjQ6MjQuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9jYXQtaWQtdGJsLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDIzNCArMCwwIEBACi0tLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgcG8ydGJsLnNlZCBmcm9tIGxyenN6LnBvdC4gICovCi0tCi0tI2lmIEhBVkVfQ09ORklHX0gKLS0jIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0tCi0tY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW10gPSB7Ci0tICB7IiIsIDF9LAotLSAgeyJpb19tb2RlKCwyKSBpbiByYnNiLmMgbm90IGltcGxlbWVudGVkXG4iLCAyfSwKLS0gIHsiY2F1Z2h0IHNpZ25hbCAlZDsgZXhpdGluZyIsIDN9LAotLSAgeyJjb21tYW5kIHRyaWVzIiwgNH0sCi0tICB7InBhY2tldGxlbmd0aCIsIDV9LAotLSAgeyJwYWNrZXRsZW5ndGggb3V0IG9mIHJhbmdlIDI0Li4lbGQiLCA2fSwKLS0gIHsiZnJhbWVsZW5ndGgiLCA3fSwKLS0gIHsiZnJhbWVsZW5ndGggb3V0IG9mIHJhbmdlIDMyLi4lbGQiLCA4fSwKLS0gIHsibWluX2JwcyIsIDl9LAotLSAgeyJtaW5fYnBzIG11c3QgYmUgPj0gMCIsIDEwfSwKLS0gIHsibWluX2Jwc190aW1lIiwgMTF9LAotLSAgeyJtaW5fYnBzX3RpbWUgbXVzdCBiZSA+IDEiLCAxMn0sCi0tICB7ImhvdXIgdG8gbGFyZ2UgKDAuLjIzKSIsIDEzfSwKLS0gIHsidW5wYXJzYWJsZSBzdG9wIHRpbWVcbiIsIDE0fSwKLS0gIHsibWludXRlIHRvIGxhcmdlICgwLi41OSkiLCAxNX0sCi0tICB7InN0b3AgdGltZSB0byBzbWFsbCIsIDE2fSwKLS0gIHsic3RvcC1hdCIsIDE3fSwKLS0gIHsidGltZW91dCIsIDE4fSwKLS0gIHsidGltZW91dCBvdXQgb2YgcmFuZ2UgMTAuLjEwMDAiLCAxOX0sCi0tICB7InNlY3VyaXR5IHZpb2xhdGlvbjogY2FuJ3QgZG8gdGhhdCB1bmRlciByZXN0cmljdGVkIHNoZWxsXG4iLCAyMH0sCi0tICB7IndpbmRvdyBzaXplIiwgMjF9LAotLSAgeyJjYW5ub3QgdHVybm9mZiBzeXNsb2ciLCAyMn0sCi0tICB7InN0YXJ0dXAgZGVsYXkiLCAyM30sCi0tICB7Im91dCBvZiBtZW1vcnkiLCAyNH0sCi0tICB7InRoaXMgcHJvZ3JhbSB3YXMgbmV2ZXIgaW50ZW5kZWQgdG8gYmUgdXNlZCBzZXR1aWRcbiIsIDI1fSwKLS0gIHsibmVlZCBhdCBsZWFzdCBvbmUgZmlsZSB0byBzZW5kIiwgMjZ9LAotLSAgeyJDYW4ndCBzZW5kIGNvbW1hbmQgaW4gcmVzdHJpY3RlZCBtb2RlXG4iLCAyN30sCi0tICB7Imhvc3RuYW1lIHRvbyBsb25nXG4iLCAyOH0sCi0tICB7ImlsbGVnYWwgc2VydmVyIGFkZHJlc3NcbiIsIDI5fSwKLS0gIHsiY2FuIHJlYWQgb25seSBvbmUgZmlsZSBmcm9tIHN0ZGluIiwgMzB9LAotLSAgeyJUcmFuc2ZlciBpbmNvbXBsZXRlXG4iLCAzMX0sCi0tICB7IlRyYW5zZmVyIGNvbXBsZXRlXG4iLCAzMn0sCi0tICB7InNlbmRfcHNldWRvICVzOiBjYW5ub3Qgb3BlbiB0bXBmaWxlICVzOiAlcyIsIDMzfSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCBsc3RhdCB0bXBmaWxlICVzOiAlcyIsIDM0fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGF2b2lkaW5nIHN5bWxpbmsgdHJhcCIsIDM1fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCB3cml0ZSB0byB0bXBmaWxlICVzOiAlcyIsIDM2fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGZhaWxlZCIsIDM3fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IG9rIiwgMzh9LAotLSAgeyJ0Y3AgcHJvdG9jb2wgaW5pdCBmYWlsZWRcbiIsIDM5fSwKLS0gIHsiQW5zd2VyaW5nIFRJTUVTWU5DIGF0ICVzIiwgNDB9LAotLSAgeyJ0aW1lem9uZSIsIDQxfSwKLS0gIHsidGltZXpvbmUgdW5rbm93biIsIDQyfSwKLS0gIHsiQ2FuJ3Qgb3BlbiBhbnkgcmVxdWVzdGVkIGZpbGVzLiIsIDQzfSwKLS0gIHsic2VjdXJpdHkgdmlvbGF0aW9uOiBub3QgYWxsb3dlZCB0byB1cGxvYWQgZnJvbSAlcyIsIDQ0fSwKLS0gIHsiY2Fubm90IG9wZW4gJXMiLCA0NX0sCi0tICB7ImlzIG5vdCBhIGZpbGU6ICVzIiwgNDZ9LAotLSAgeyIlcy8lczogZXJyb3Igb2NjdXJlZCIsIDQ3fSwKLS0gIHsic2tpcHBlZDogJXMiLCA0OH0sCi0tICB7IiVzLyVzOiBza2lwcGVkIiwgNDl9LAotLSAgeyJCeXRlcyBTZW50OiU3bGQgICBCUFM6JS04bGQgICAgICAgICAgICAgICAgICAgICAgICBcbiIsIDUwfSwKLS0gIHsiU2VuZGluZyAlcywgJWxkIGJsb2NrczogIiwgNTF9LAotLSAgeyJHaXZlIHlvdXIgbG9jYWwgWE1PREVNIHJlY2VpdmUgY29tbWFuZCBub3cuIiwgNTJ9LAotLSAgeyJTZW5kaW5nOiAlc1xuIiwgNTN9LAotLSAgeyJUaW1lb3V0IG9uIHBhdGhuYW1lIiwgNTR9LAotLSAgeyJSZWNlaXZlciBDYW5jZWxsZWQiLCA1NX0sCi0tICB7Ik5vIEFDSyBvbiBFT1QiLCA1Nn0sCi0tICB7Ilhtb2RlbSBzZWN0b3JzL2tieXRlcyBzZW50OiAlM2QvJTJkayIsIDU3fSwKLS0gIHsiWW1vZGVtIHNlY3RvcnMva2J5dGVzIHNlbnQ6ICUzZC8lMmRrIiwgNTh9LAotLSAgeyJDYW5jZWxsZWQiLCA1OX0sCi0tICB7IlRpbWVvdXQgb24gc2VjdG9yIEFDSyIsIDYwfSwKLS0gIHsiTkFLIG9uIHNlY3RvciIsIDYxfSwKLS0gIHsiR290IGJ1cnN0IGZvciBzZWN0b3IgQUNLIiwgNjJ9LAotLSAgeyJHb3QgJTAyeCBmb3Igc2VjdG9yIEFDSyIsIDYzfSwKLS0gIHsiUmV0cnkgQ291bnQgRXhjZWVkZWQiLCA2NH0sCi0tICB7IlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsIDY1fSwKLS0gIHsiJXMgdmVyc2lvbiAlc1xuIiwgNjZ9LAotLSAgeyJVc2FnZTogJXMgW29wdGlvbnNdIGZpbGUgLi4uXG4iLCA2N30sCi0tICB7IiAgIG9yOiAlcyBbb3B0aW9uc10gLXtjfGl9IENPTU1BTkRcbiIsIDY4fSwKLS0gIHsiU2VuZCBmaWxlKHMpIHdpdGggWk1PREVNL1lNT0RFTS9YTU9ERU0gcHJvdG9jb2xcbiIsIDY5fSwKLS0gIHsiXAotLSAgICAoWCkgPSBvcHRpb24gYXBwbGllcyB0byBYTU9ERU0gb25seVxuXAotLSAgICAoWSkgPSBvcHRpb24gYXBwbGllcyB0byBZTU9ERU0gb25seVxuXAotLSAgICAoWikgPSBvcHRpb24gYXBwbGllcyB0byBaTU9ERU0gb25seVxuIiwgNzB9LAotLSAgeyJcCi0tICAtKywgLS1hcHBlbmQgICAgICAgICAgICAgICAgYXBwZW5kIHRvIGV4aXN0aW5nIGRlc3RpbmF0aW9uIGZpbGUgKFopXG5cCi0tICAtMiwgLS10d29zdG9wICAgICAgICAgICAgICAgdXNlIDIgc3RvcCBiaXRzXG5cCi0tICAtNCwgLS10cnktNGsgICAgICAgICAgICAgICAgZ28gdXAgdG8gNEsgYmxvY2tzaXplXG5cCi0tICAgICAgLS1zdGFydC00ayAgICAgICAgICAgICAgc3RhcnQgd2l0aCA0SyBibG9ja3NpemUgKGRvZXNuJ3QgdHJ5IDgpXG5cCi0tICAtOCwgLS10cnktOGsgICAgICAgICAgICAgICAgZ28gdXAgdG8gOEsgYmxvY2tzaXplXG5cCi0tICAgICAgLS1zdGFydC04ayAgICAgICAgICAgICAgc3RhcnQgd2l0aCA4SyBibG9ja3NpemVcblwKLS0gIC1hLCAtLWFzY2lpICAgICAgICAgICAgICAgICBBU0NJSSB0cmFuc2ZlciAoY2hhbmdlIENSL0xGIHRvIExGKVxuXAotLSAgLWIsIC0tYmluYXJ5ICAgICAgICAgICAgICAgIGJpbmFyeSB0cmFuc2ZlclxuXAotLSAgLUIsIC0tYnVmc2l6ZSBOICAgICAgICAgICAgIGJ1ZmZlciBOIGJ5dGVzIChOPT1hdXRvOiBidWZmZXIgd2hvbGUgZmlsZSlcblwKLS0gIC1jLCAtLWNvbW1hbmQgQ09NTUFORCAgICAgICBleGVjdXRlIHJlbW90ZSBjb21tYW5kIENPTU1BTkQgKFopXG5cCi0tICAtQywgLS1jb21tYW5kLXRyaWVzIE4gICAgICAgdHJ5IE4gdGltZXMgdG8gZXhlY3V0ZSBhIGNvbW1hbmQgKFopXG5cCi0tICAtZCwgLS1kb3QtdG8tc2xhc2ggICAgICAgICAgY2hhbmdlICcuJyB0byAnLycgaW4gcGF0aG5hbWVzIChZL1opXG5cCi0tICAgICAgLS1kZWxheS1zdGFydHVwIE4gICAgICAgc2xlZXAgTiBzZWNvbmRzIGJlZm9yZSBkb2luZyBhbnl0aGluZ1xuXAotLSAgLWUsIC0tZXNjYXBlICAgICAgICAgICAgICAgIGVzY2FwZSBhbGwgY29udHJvbCBjaGFyYWN0ZXJzIChaKVxuXAotLSAgLUUsIC0tcmVuYW1lICAgICAgICAgICAgICAgIGZvcmNlIHJlY2VpdmVyIHRvIHJlbmFtZSBmaWxlcyBpdCBhbHJlYWR5IGhhc1xuXAotLSAgLWYsIC0tZnVsbC1wYXRoICAgICAgICAgICAgIHNlbmQgZnVsbCBwYXRobmFtZSAoWS9aKVxuXAotLSAgLWksIC0taW1tZWRpYXRlLWNvbW1hbmQgQ01EIHNlbmQgcmVtb3RlIENNRCwgcmV0dXJuIGltbWVkaWF0ZWx5IChaKVxuXAotLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgIHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZVxuXAotLSAgLWssIC0tMWsgICAgICAgICAgICAgICAgICAgIHNlbmQgMTAyNCBieXRlIHBhY2tldHMgKFgpXG5cCi0tICAtTCwgLS1wYWNrZXRsZW4gTiAgICAgICAgICAgbGltaXQgc3VicGFja2V0IGxlbmd0aCB0byBOIGJ5dGVzIChaKVxuXAotLSAgLWwsIC0tZnJhbWVsZW4gTiAgICAgICAgICAgIGxpbWl0IGZyYW1lIGxlbmd0aCB0byBOIGJ5dGVzIChsPj1MKSAoWilcblwKLS0gIC1tLCAtLW1pbi1icHMgTiAgICAgICAgICAgICBzdG9wIHRyYW5zbWlzc2lvbiBpZiBCUFMgYmVsb3cgTlxuXAotLSAgLU0sIC0tbWluLWJwcy10aW1lIE4gICAgICAgICAgZm9yIGF0IGxlYXN0IE4gc2Vjb25kcyAoZGVmYXVsdDogMTIwKVxuIiwgNzF9LAotLSAgeyJcCi0tICAtbiwgLS1uZXdlciAgICAgICAgICAgICAgICAgc2VuZCBmaWxlIGlmIHNvdXJjZSBuZXdlciAoWilcblwKLS0gIC1OLCAtLW5ld2VyLW9yLWxvbmdlciAgICAgICBzZW5kIGZpbGUgaWYgc291cmNlIG5ld2VyIG9yIGxvbmdlciAoWilcblwKLS0gIC1vLCAtLTE2LWJpdC1jcmMgICAgICAgICAgICB1c2UgMTYgYml0IENSQyBpbnN0ZWFkIG9mIDMyIGJpdCBDUkMgKFopXG5cCi0tICAtTywgLS1kaXNhYmxlLXRpbWVvdXRzICAgICAgZGlzYWJsZSB0aW1lb3V0IGNvZGUsIHdhaXQgZm9yZXZlclxuXAotLSAgLXAsIC0tcHJvdGVjdCAgICAgICAgICAgICAgIHByb3RlY3QgZXhpc3RpbmcgZGVzdGluYXRpb24gZmlsZSAoWilcblwKLS0gIC1yLCAtLXJlc3VtZSAgICAgICAgICAgICAgICByZXN1bWUgaW50ZXJydXB0ZWQgZmlsZSB0cmFuc2ZlciAoWilcblwKLS0gIC1SLCAtLXJlc3RyaWN0ZWQgICAgICAgICAgICByZXN0cmljdGVkLCBtb3JlIHNlY3VyZSBtb2RlXG5cCi0tICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgcXVpZXQgKG5vIHByb2dyZXNzIHJlcG9ydHMpXG5cCi0tICAtcywgLS1zdG9wLWF0IHtISDpNTXwrTn0gICAgc3RvcCB0cmFuc21pc3Npb24gYXQgSEg6TU0gb3IgaW4gTiBzZWNvbmRzXG5cCi0tICAgICAgLS10Y3AgICAgICAgICAgICAgICAgICAgYnVpbGQgYSBUQ1AgY29ubmVjdGlvbiB0byB0cmFuc21pdCBmaWxlc1xuXAotLSAgICAgIC0tdGNwLXNlcnZlciAgICAgICAgICAgIG9wZW4gc29ja2V0LCB3YWl0IGZvciBjb25uZWN0aW9uXG5cCi0tICAtdSwgLS11bmxpbmsgICAgICAgICAgICAgICAgdW5saW5rIGZpbGUgYWZ0ZXIgdHJhbnNtaXNzaW9uXG5cCi0tICAtVSwgLS11bnJlc3RyaWN0ICAgICAgICAgICAgdHVybiBvZmYgcmVzdHJpY3RlZCBtb2RlIChpZiBhbGxvd2VkIHRvKVxuXAotLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgIGJlIHZlcmJvc2UsIHByb3ZpZGUgZGVidWdnaW5nIGluZm9ybWF0aW9uXG5cCi0tICAtdywgLS13aW5kb3dzaXplIE4gICAgICAgICAgV2luZG93IGlzIE4gYnl0ZXMgKFopXG5cCi0tICAtWCwgLS14bW9kZW0gICAgICAgICAgICAgICAgdXNlIFhNT0RFTSBwcm90b2NvbFxuXAotLSAgLXksIC0tb3ZlcndyaXRlICAgICAgICAgICAgIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlc1xuXAotLSAgLVksIC0tb3ZlcndyaXRlLW9yLXNraXAgICAgIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcywgZWxzZSBza2lwXG5cCi0tICAgICAgLS15bW9kZW0gICAgICAgICAgICAgICAgdXNlIFlNT0RFTSBwcm90b2NvbFxuXAotLSAgLVosIC0tem1vZGVtICAgICAgICAgICAgICAgIHVzZSBaTU9ERU0gcHJvdG9jb2xcblwKLS1cblwKLS1zaG9ydCBvcHRpb25zIHVzZSB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGxvbmcgb25lc1xuIiwgNzJ9LAotLSAgeyJnb3QgWlJRSU5JVCIsIDczfSwKLS0gIHsiZ290IFpDQU4iLCA3NH0sCi0tICB7ImJsa2xlbiBub3cgJWRcbiIsIDc1fSwKLS0gIHsienNlbmRmZGF0YTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiLCA3Nn0sCi0tICB7InpzZW5kZmRhdGE6IHJlYWNoZWQgc3RvcCB0aW1lIiwgNzd9LAotLSAgeyJCeXRlcyBTZW50OiU3bGQvJTdsZCAgIEJQUzolLThsZCBFVEEgJTAyZDolMDJkICAiLCA3OH0sCi0tICB7ImNhbGNfYmxrbGVuOiByZWR1Y2VkIHRvICVkIGR1ZSB0byBlcnJvclxuIiwgNzl9LAotLSAgeyJjYWxjX2Jsa2xlbjogcmV0dXJuZWQgb2xkIHZhbHVlICVkIGR1ZSB0byBsb3cgYnBlIGRpZmZcbiIsIDgwfSwKLS0gIHsiY2FsY19ibGtsZW46IG9sZCAlbGQsIG5ldyAlbGQsIGQgJWxkXG4iLCA4MX0sCi0tICB7ImNhbGNfYmxrbGVuOiBjYWxjIHRvdGFsX2J5dGVzPSVsZCwgYnBlPSVsZCwgZWM9JWxkXG4iLCA4Mn0sCi0tICB7ImNhbGNfYmxrbGVuOiBibGtsZW4gJWQsIG9rICVsZCwgZmFpbGVkICVsZCAtPiAlbHVcbiIsIDgzfSwKLS0gIHsiY2FsY19ibGtsZW46IHJldHVybmVkICVkIGFzIGJlc3RcbiIsIDg0fSwKLS0gIHsiXAotLVxuXAotLWNvdW50ZW06IFRvdGFsICVkICVsZFxuIiwgODV9LAotLSAgeyJCYWQgZXNjYXBlIHNlcXVlbmNlICV4IiwgODZ9LAotLSAgeyJTZW5kZXIgQ2FuY2VsZWQiLCA4N30sCi0tICB7IlRJTUVPVVQiLCA4OH0sCi0tICB7IkJhZCBkYXRhIHN1YnBhY2tldCIsIDg5fSwKLS0gIHsiRGF0YSBzdWJwYWNrZXQgdG9vIGxvbmciLCA5MH0sCi0tICB7IkdhcmJhZ2UgY291bnQgZXhjZWVkZWQiLCA5MX0sCi0tICB7IkdvdCAlcyIsIDkyfSwKLS0gIHsiUmV0cnkgJWQ6ICIsIDkzfSwKLS0gIHsiZG9uJ3QgaGF2ZSBzZXR0aW1lb2ZkYXksIHdpbGwgbm90IHNldCB0aW1lXG4iLCA5NH0sCi0tICB7Im5vdCBydW5uaW5nIGFzIHJvb3QgKHRoaXMgaXMgZ29vZCEpLCBjYW4gbm90IHNldCB0aW1lXG4iLCA5NX0sCi0tICB7ImJ5dGVzX3Blcl9lcnJvciIsIDk2fSwKLS0gIHsiYnl0ZXMtcGVyLWVycm9yIHNob3VsZCBiZSA+MTAwIiwgOTd9LAotLSAgeyJPX1NZTkMgbm90IHN1cHBvcnRlZCBieSB0aGUga2VybmVsIiwgOTh9LAotLSAgeyJnYXJiYWdlIG9uIGNvbW1hbmRsaW5lIiwgOTl9LAotLSAgeyJVc2FnZTogJXMgW29wdGlvbnNdIFtmaWxlbmFtZS5pZi54bW9kZW1dXG4iLCAxMDB9LAotLSAgeyJSZWNlaXZlIGZpbGVzIHdpdGggWk1PREVNL1lNT0RFTS9YTU9ERU0gcHJvdG9jb2xcbiIsIDEwMX0sCi0tICB7IlwKLS0gIC0rLCAtLWFwcGVuZCAgICAgICAgICAgICAgICBhcHBlbmQgdG8gZXhpc3RpbmcgZmlsZXNcblwKLS0gIC1hLCAtLWFzY2lpICAgICAgICAgICAgICAgICBBU0NJSSB0cmFuc2ZlciAoY2hhbmdlIENSL0xGIHRvIExGKVxuXAotLSAgLWIsIC0tYmluYXJ5ICAgICAgICAgICAgICAgIGJpbmFyeSB0cmFuc2ZlclxuXAotLSAgLUIsIC0tYnVmc2l6ZSBOICAgICAgICAgICAgIGJ1ZmZlciBOIGJ5dGVzIChOPT1hdXRvOiBidWZmZXIgd2hvbGUgZmlsZSlcblwKLS0gIC1jLCAtLXdpdGgtY3JjICAgICAgICAgICAgICBVc2UgMTYgYml0IENSQyAoWClcblwKLS0gIC1DLCAtLWFsbG93LXJlbW90ZS1jb21tYW5kcyBhbGxvdyBleGVjdXRpb24gb2YgcmVtb3RlIGNvbW1hbmRzIChaKVxuXAotLSAgLUQsIC0tbnVsbCAgICAgICAgICAgICAgICAgIHdyaXRlIGFsbCByZWNlaXZlZCBkYXRhIHRvIC9kZXYvbnVsbFxuXAotLSAgICAgIC0tZGVsYXktc3RhcnR1cCBOICAgICAgIHNsZWVwIE4gc2Vjb25kcyBiZWZvcmUgZG9pbmcgYW55dGhpbmdcblwKLS0gIC1lLCAtLWVzY2FwZSAgICAgICAgICAgICAgICBFc2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzIChaKVxuXAotLSAgLUUsIC0tcmVuYW1lICAgICAgICAgICAgICAgIHJlbmFtZSBhbnkgZmlsZXMgYWxyZWFkeSBleGlzdGluZ1xuXAotLSAgICAgIC0tZXJyb3JzIE4gICAgICAgICAgICAgIGdlbmVyYXRlIENSQyBlcnJvciBldmVyeSBOIGJ5dGVzIChkZWJ1Z2dpbmcpXG5cCi0tICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgSGVscCwgcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlXG5cCi0tICAtbSwgLS1taW4tYnBzIE4gICAgICAgICAgICAgc3RvcCB0cmFuc21pc3Npb24gaWYgQlBTIGJlbG93IE5cblwKLS0gIC1NLCAtLW1pbi1icHMtdGltZSBOICAgICAgICAgIGZvciBhdCBsZWFzdCBOIHNlY29uZHMgKGRlZmF1bHQ6IDEyMClcblwKLS0gIC1PLCAtLWRpc2FibGUtdGltZW91dHMgICAgICBkaXNhYmxlIHRpbWVvdXQgY29kZSwgd2FpdCBmb3JldmVyIGZvciBkYXRhXG5cCi0tICAgICAgLS1vLXN5bmMgICAgICAgICAgICAgICAgb3BlbiBvdXRwdXQgZmlsZShzKSBpbiBzeW5jaHJvbm91cyB3cml0ZSBtb2RlXG5cCi0tICAtcCwgLS1wcm90ZWN0ICAgICAgICAgICAgICAgcHJvdGVjdCBleGlzdGluZyBmaWxlc1xuXAotLSAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIHF1aWV0LCBubyBwcm9ncmVzcyByZXBvcnRzXG5cCi0tICAtciwgLS1yZXN1bWUgICAgICAgICAgICAgICAgdHJ5IHRvIHJlc3VtZSBpbnRlcnJ1cHRlZCBmaWxlIHRyYW5zZmVyIChaKVxuXAotLSAgLVIsIC0tcmVzdHJpY3RlZCAgICAgICAgICAgIHJlc3RyaWN0ZWQsIG1vcmUgc2VjdXJlIG1vZGVcblwKLS0gIC1zLCAtLXN0b3AtYXQge0hIOk1NfCtOfSAgICBzdG9wIHRyYW5zbWlzc2lvbiBhdCBISDpNTSBvciBpbiBOIHNlY29uZHNcblwKLS0gIC1TLCAtLXRpbWVzeW5jICAgICAgICAgICAgICByZXF1ZXN0IHJlbW90ZSB0aW1lICh0d2ljZTogc2V0IGxvY2FsIHRpbWUpXG5cCi0tICAgICAgLS1zeXNsb2dbPW9mZl0gICAgICAgICAgdHVybiBzeXNsb2cgb24gb3Igb2ZmLCBpZiBwb3NzaWJsZVxuXAotLSAgLXQsIC0tdGltZW91dCBOICAgICAgICAgICAgIHNldCB0aW1lb3V0IHRvIE4gdGVudGhzIG9mIGEgc2Vjb25kXG5cCi0tICAtdSwgLS1rZWVwLXVwcGVyY2FzZSAgICAgICAga2VlcCB1cHBlciBjYXNlIGZpbGVuYW1lc1xuXAotLSAgLVUsIC0tdW5yZXN0cmljdCAgICAgICAgICAgIGRpc2FibGUgcmVzdHJpY3RlZCBtb2RlIChpZiBhbGxvd2VkIHRvKVxuXAotLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgIGJlIHZlcmJvc2UsIHByb3ZpZGUgZGVidWdnaW5nIGluZm9ybWF0aW9uXG5cCi0tICAtdywgLS13aW5kb3dzaXplIE4gICAgICAgICAgV2luZG93IGlzIE4gYnl0ZXMgKFopXG5cCi0tICAtWCAgLS14bW9kZW0gICAgICAgICAgICAgICAgdXNlIFhNT0RFTSBwcm90b2NvbFxuXAotLSAgLXksIC0tb3ZlcndyaXRlICAgICAgICAgICAgIFllcywgY2xvYmJlciBleGlzdGluZyBmaWxlIGlmIGFueVxuXAotLSAgICAgIC0teW1vZGVtICAgICAgICAgICAgICAgIHVzZSBZTU9ERU0gcHJvdG9jb2xcblwKLS0gIC1aLCAtLXptb2RlbSAgICAgICAgICAgICAgICB1c2UgWk1PREVNIHByb3RvY29sXG5cCi0tXG5cCi0tc2hvcnQgb3B0aW9ucyB1c2UgdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBsb25nIG9uZXNcbiIsIDEwMn0sCi0tICB7IiVzIHdhaXRpbmcgdG8gcmVjZWl2ZS4iLCAxMDN9LAotLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkLyU3bGQgICBCUFM6JS02bGQgICAgICAgICAgICAgICAgXHJcbiIsIDEwNH0sCi0tICB7IiVzOiByZWFkeSB0byByZWNlaXZlICVzIiwgMTA1fSwKLS0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZCAgIEJQUzolLTZsZCAgICAgICAgICAgICAgICBcclxuIiwgMTA2fSwKLS0gIHsiXAotLVxyXG5cCi0tJXM6ICVzIHJlbW92ZWQuXHJcbiIsIDEwN30sCi0tICB7IlBhdGhuYW1lIGZldGNoIHJldHVybmVkIEVPVCIsIDEwOH0sCi0tICB7IlJlY2VpdmVkIGR1cCBTZWN0b3IiLCAxMDl9LAotLSAgeyJTeW5jIEVycm9yIiwgMTEwfSwKLS0gIHsiQ1JDIiwgMTExfSwKLS0gIHsiQ2hlY2tzdW0iLCAxMTJ9LAotLSAgeyJTZWN0b3IgbnVtYmVyIGdhcmJsZWQiLCAxMTN9LAotLSAgeyJTZW5kZXIgQ2FuY2VsbGVkIiwgMTE0fSwKLS0gIHsiR290IDAlbyBzZWN0b3IgaGVhZGVyIiwgMTE1fSwKLS0gIHsiZmlsZSBuYW1lIGVuZHMgd2l0aCBhIC8sIHNraXBwZWQ6ICVzXG4iLCAxMTZ9LAotLSAgeyJ6bWFuYWc9JWQsIEx6bWFuYWc9JWRcbiIsIDExN30sCi0tICB7Inpjb252PSVkXG4iLCAxMTh9LAotLSAgeyJmaWxlIGV4aXN0cywgc2tpcHBlZDogJXNcbiIsIDExOX0sCi0tICB7IlRJTUVTWU5DOiBoZXJlICVsZCwgcmVtb3RlICVsZCwgZGlmZiAlbGQgc2Vjb25kc1xuIiwgMTIwfSwKLS0gIHsiVElNRVNZTkM6IGNhbm5vdCBzZXQgdGltZTogJXNcbiIsIDEyMX0sCi0tICB7ImNhbm5vdCB0bXBmaWxlKCkgZm9yIHRjcCBwcm90b2NvbCBzeW5jaHJvbml6YXRpb24iLCAxMjJ9LAotLSAgeyJUb3BpcGUiLCAxMjN9LAotLSAgeyJSZWNlaXZpbmc6ICVzXG4iLCAxMjR9LAotLSAgeyJCbG9ja3MgcmVjZWl2ZWQ6ICVkIiwgMTI1fSwKLS0gIHsiJXM6ICVzIGV4aXN0c1xuIiwgMTI2fSwKLS0gIHsiJXM6XHRTZWN1cml0eSBWaW9sYXRpb24iLCAxMjd9LAotLSAgeyJyZW1vdGUgY29tbWFuZCBleGVjdXRpb24gcmVxdWVzdGVkIiwgMTI4fSwKLS0gIHsibm90IGV4ZWN1dGVkIiwgMTI5fSwKLS0gIHsiZ290IFpSSU5JVCIsIDEzMH0sCi0tICB7IlNraXBwZWQiLCAxMzF9LAotLSAgeyJyemZpbGU6IGJwcyByYXRlICVsZCBiZWxvdyBtaW4gJWxkIiwgMTMyfSwKLS0gIHsicnpmaWxlOiByZWFjaGVkIHN0b3AgdGltZSIsIDEzM30sCi0tICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQvJTdsZCAgIEJQUzolLTZsZCBFVEEgJTAyZDolMDJkICAiLCAxMzR9LAotLSAgeyJmZ2V0cyBmb3IgdGNwIHByb3RvY29sIHN5bmNocm9uaXphdGlvbiBmYWlsZWQ6ICIsIDEzNX0sCi0tICB7ImZpbGUgY2xvc2UgZXJyb3IiLCAxMzZ9LAotLX07Ci0tCi0taW50IF9tc2dfdGJsX2xlbmd0aCA9IDEzNjsKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vQ2hhbmdlTG9nCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9DaGFuZ2VMb2cJMjAwNC0wOS0xMiAxNDo0MDozNC43OTM2ODE1MTIgLTA0MDAKLUBAIC0xLDMgKzEsMTUgQEAKLSsyMDA0LTA5LTEyICBnZXR0ZXh0aXplICA8YnVnLWdudS1nZXR0ZXh0QGdudS5vcmc+Ci0rCi0rCSogYm9sZHF1b3Quc2VkOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBlbkBib2xkcXVvdC5oZWFkZXI6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGVuQHF1b3QuaGVhZGVyOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnNlcnQtaGVhZGVyLnNpbjogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogcXVvdC5zZWQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHJlbW92ZS1wb3RjZGF0ZS5zaW46IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIFJ1bGVzLXF1b3Q6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGNhdC1pZC10YmwuYzogUmVtb3ZlIGZpbGUuCi0rCSogc3RhbXAtY2F0LWlkOiBSZW1vdmUgZmlsZS4KLSsKLSAvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBwbzJ0Ymwuc2VkIGZyb20gbHJ6c3oucG90LiAgKi8KLSAKLSAjaWYgSEFWRV9DT05GSUdfSAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9lbkBib2xkcXVvdC5oZWFkZXIJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2VuQGJvbGRxdW90LmhlYWRlcgkyMDA0LTA5LTEyIDE0OjQwOjM0LjczMTY5MDkzNiAtMDQwMAotQEAgLTAsMCArMSwyNSBAQAotKyMgQWxsIHRoaXMgY2F0YWxvZyAidHJhbnNsYXRlcyIgYXJlIHF1b3RhdGlvbiBjaGFyYWN0ZXJzLgotKyMgVGhlIG1zZ2lkcyBtdXN0IGJlIEFTQ0lJIGFuZCB0aGVyZWZvcmUgY2Fubm90IGNvbnRhaW4gcmVhbCBxdW90YXRpb24KLSsjIGNoYXJhY3RlcnMsIG9ubHkgc3Vic3RpdHV0ZXMgbGlrZSBncmF2ZSBhY2NlbnQgKDB4NjApLCBhcG9zdHJvcGhlICgweDI3KQotKyMgYW5kIGRvdWJsZSBxdW90ZSAoMHgyMikuIFRoZXNlIHN1YnN0aXR1dGVzIGxvb2sgc3RyYW5nZTsgc2VlCi0rIyBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdWNzL3F1b3Rlcy5odG1sCi0rIwotKyMgVGhpcyBjYXRhbG9nIHRyYW5zbGF0ZXMgZ3JhdmUgYWNjZW50ICgweDYwKSBhbmQgYXBvc3Ryb3BoZSAoMHgyNykgdG8KLSsjIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTgpIGFuZCByaWdodCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOSkuCi0rIyBJdCBhbHNvIHRyYW5zbGF0ZXMgcGFpcnMgb2YgYXBvc3Ryb3BoZSAoMHgyNykgdG8KLSsjIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTgpIGFuZCByaWdodCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOSkKLSsjIGFuZCBwYWlycyBvZiBxdW90YXRpb24gbWFyayAoMHgyMikgdG8KLSsjIGxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIChVKzIwMUMpIGFuZCByaWdodCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxRCkuCi0rIwotKyMgV2hlbiBvdXRwdXQgdG8gYW4gVVRGLTggdGVybWluYWwsIHRoZSBxdW90YXRpb24gY2hhcmFjdGVycyBhcHBlYXIgcGVyZmVjdGx5LgotKyMgV2hlbiBvdXRwdXQgdG8gYW4gSVNPLTg4NTktMSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byBhcG9zdHJvcGhlcyAoYnkgaWNvbnYgaW4gZ2xpYmMgMi4yIG9yIG5ld2VyKSBvciB0bwotKyMgZ3JhdmUvYWN1dGUgYWNjZW50IChieSBsaWJpY29udiksIGFuZCB0aGUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIDB4MjIuCi0rIyBXaGVuIG91dHB1dCB0byBhbiBBU0NJSSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byBhcG9zdHJvcGhlcywgYW5kIHRoZSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KLSsjCi0rIyBUaGlzIGNhdGFsb2cgZnVydGhlcm1vcmUgZGlzcGxheXMgdGhlIHRleHQgYmV0d2VlbiB0aGUgcXVvdGF0aW9uIG1hcmtzIGluCi0rIyBib2xkIGZhY2UsIGFzc3VtaW5nIHRoZSBWVDEwMC9YVGVybSBlc2NhcGUgc2VxdWVuY2VzLgotKyMKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vZW5AcXVvdC5oZWFkZXIJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2VuQHF1b3QuaGVhZGVyCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzM3NjkwMDI0IC0wNDAwCi1AQCAtMCwwICsxLDIyIEBACi0rIyBBbGwgdGhpcyBjYXRhbG9nICJ0cmFuc2xhdGVzIiBhcmUgcXVvdGF0aW9uIGNoYXJhY3RlcnMuCi0rIyBUaGUgbXNnaWRzIG11c3QgYmUgQVNDSUkgYW5kIHRoZXJlZm9yZSBjYW5ub3QgY29udGFpbiByZWFsIHF1b3RhdGlvbgotKyMgY2hhcmFjdGVycywgb25seSBzdWJzdGl0dXRlcyBsaWtlIGdyYXZlIGFjY2VudCAoMHg2MCksIGFwb3N0cm9waGUgKDB4MjcpCi0rIyBhbmQgZG91YmxlIHF1b3RlICgweDIyKS4gVGhlc2Ugc3Vic3RpdHV0ZXMgbG9vayBzdHJhbmdlOyBzZWUKLSsjIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91Y3MvcXVvdGVzLmh0bWwKLSsjCi0rIyBUaGlzIGNhdGFsb2cgdHJhbnNsYXRlcyBncmF2ZSBhY2NlbnQgKDB4NjApIGFuZCBhcG9zdHJvcGhlICgweDI3KSB0bwotKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KS4KLSsjIEl0IGFsc28gdHJhbnNsYXRlcyBwYWlycyBvZiBhcG9zdHJvcGhlICgweDI3KSB0bwotKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KQotKyMgYW5kIHBhaXJzIG9mIHF1b3RhdGlvbiBtYXJrICgweDIyKSB0bwotKyMgbGVmdCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxQykgYW5kIHJpZ2h0IGRvdWJsZSBxdW90YXRpb24gbWFyayAoVSsyMDFEKS4KLSsjCi0rIyBXaGVuIG91dHB1dCB0byBhbiBVVEYtOCB0ZXJtaW5hbCwgdGhlIHF1b3RhdGlvbiBjaGFyYWN0ZXJzIGFwcGVhciBwZXJmZWN0bHkuCi0rIyBXaGVuIG91dHB1dCB0byBhbiBJU08tODg1OS0xIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzIChieSBpY29udiBpbiBnbGliYyAyLjIgb3IgbmV3ZXIpIG9yIHRvCi0rIyBncmF2ZS9hY3V0ZSBhY2NlbnQgKGJ5IGxpYmljb252KSwgYW5kIHRoZSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KLSsjIFdoZW4gb3V0cHV0IHRvIGFuIEFTQ0lJIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzLCBhbmQgdGhlIGRvdWJsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byAweDIyLgotKyMKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vaW5zZXJ0LWhlYWRlci5zaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2luc2VydC1oZWFkZXIuc2luCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzQzNjg5MTEyIC0wNDAwCi1AQCAtMCwwICsxLDIzIEBACi0rIyBTZWQgc2NyaXB0IHRoYXQgaW5zZXJ0cyB0aGUgZmlsZSBjYWxsZWQgSEVBREVSIGJlZm9yZSB0aGUgaGVhZGVyIGVudHJ5LgotKyMKLSsjIEF0IGVhY2ggb2NjdXJyZW5jZSBvZiBhIGxpbmUgc3RhcnRpbmcgd2l0aCAibXNnaWQgIiwgd2UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nCi0rIyBjb21tYW5kcy4gQXQgdGhlIGZpcnN0IG9jY3VycmVuY2UsIGluc2VydCB0aGUgZmlsZS4gQXQgdGhlIGZvbGxvd2luZwotKyMgb2NjdXJyZW5jZXMsIGRvIG5vdGhpbmcuIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGZvbGxvd2luZwotKyMgb2NjdXJyZW5jZXMgaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KLSsvXm1zZ2lkIC97Ci0reAotKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLStzL20vbS8KLSt0YQotKyMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVhZCB0aGUgZmlsZS4KLStyIEhFQURFUgotKyMgT3V0cHV0IHRoZSBmaWxlJ3MgY29udGVudHMgYnkgcmVhZGluZyB0aGUgbmV4dCBsaW5lLiBCdXQgZG9uJ3QgbG9zZSB0aGUKLSsjIGN1cnJlbnQgbGluZSB3aGlsZSBkb2luZyB0aGlzLgotK2cKLStOCi0rYmIKLSs6YQotKyMgVGhlIGhvbGQgc3BhY2Ugd2FzIG5vbmVtcHR5LiBGb2xsb3dpbmcgb2NjdXJyZW5jZXMuIERvIG5vdGhpbmcuCi0reAotKzpiCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9NYWtldmFycwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMJMjAwNC0wOS0xMiAxNDo0MDozNC43NDg2ODgzNTIgLTA0MDAKLUBAIC0wLDAgKzEsNDEgQEAKLSsjIE1ha2VmaWxlIHZhcmlhYmxlcyBmb3IgUE8gZGlyZWN0b3J5IGluIGFueSBwYWNrYWdlIHVzaW5nIEdOVSBnZXR0ZXh0LgotKwotKyMgVXN1YWxseSB0aGUgbWVzc2FnZSBkb21haW4gaXMgdGhlIHNhbWUgYXMgdGhlIHBhY2thZ2UgbmFtZS4KLStET01BSU4gPSAkKFBBQ0tBR0UpCi0rCi0rIyBUaGVzZSB0d28gdmFyaWFibGVzIGRlcGVuZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhpcyBkaXJlY3RvcnkuCi0rc3ViZGlyID0gcG8KLSt0b3BfYnVpbGRkaXIgPSAuLgotKwotKyMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIHhnZXR0ZXh0LgotK1hHRVRURVhUX09QVElPTlMgPSAtLWtleXdvcmQ9XyAtLWtleXdvcmQ9Tl8KLSsKLSsjIFRoaXMgaXMgdGhlIGNvcHlyaWdodCBob2xkZXIgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUKLSsjICQoRE9NQUlOKS5wb3QgZmlsZS4gIFNldCB0aGlzIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBzdXJyb3VuZGluZwotKyMgcGFja2FnZS4gIChOb3RlIHRoYXQgdGhlIG1zZ3N0ciBzdHJpbmdzLCBleHRyYWN0ZWQgZnJvbSB0aGUgcGFja2FnZSdzCi0rIyBzb3VyY2VzLCBiZWxvbmcgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHBhY2thZ2UuKSAgVHJhbnNsYXRvcnMgYXJlCi0rIyBleHBlY3RlZCB0byB0cmFuc2ZlciB0aGUgY29weXJpZ2h0IGZvciB0aGVpciB0cmFuc2xhdGlvbnMgdG8gdGhpcyBwZXJzb24KLSsjIG9yIGVudGl0eSwgb3IgdG8gZGlzY2xhaW0gdGhlaXIgY29weXJpZ2h0LiAgVGhlIGVtcHR5IHN0cmluZyBzdGFuZHMgZm9yCi0rIyB0aGUgcHVibGljIGRvbWFpbjsgaW4gdGhpcyBjYXNlIHRoZSB0cmFuc2xhdG9ycyBhcmUgZXhwZWN0ZWQgdG8gZGlzY2xhaW0KLSsjIHRoZWlyIGNvcHlyaWdodC4KLStDT1BZUklHSFRfSE9MREVSID0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIGlzIHRoZSBlbWFpbCBhZGRyZXNzIG9yIFVSTCB0byB3aGljaCB0aGUgdHJhbnNsYXRvcnMgc2hhbGwgcmVwb3J0Ci0rIyBidWdzIGluIHRoZSB1bnRyYW5zbGF0ZWQgc3RyaW5nczoKLSsjIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCi0rIyAgIGluIHRoZSBHTlUgZ2V0dGV4dCBkb2N1bWVudGF0aW9uLCBzZWN0aW9uICdQcmVwYXJpbmcgU3RyaW5ncycuCi0rIyAtIFN0cmluZ3Mgd2hpY2ggdXNlIHVuY2xlYXIgdGVybXMgb3IgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbnRleHQgdG8gYmUKLSsjICAgdW5kZXJzdG9vZC4KLSsjIC0gU3RyaW5ncyB3aGljaCBtYWtlIGludmFsaWQgYXNzdW1wdGlvbnMgYWJvdXQgbm90YXRpb24gb2YgZGF0ZSwgdGltZSBvcgotKyMgICBtb25leS4KLSsjIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KLSsjIC0gSW5jb3JyZWN0IEVuZ2xpc2ggc3BlbGxpbmcuCi0rIyAtIEluY29ycmVjdCBmb3JtYXR0aW5nLgotKyMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycwotKyMgY2FuIHdyaXRlIHRvIHdpdGhvdXQgYmVpbmcgc3Vic2NyaWJlZCwgb3IgdGhlIFVSTCBvZiBhIHdlYiBwYWdlIHRocm91Z2gKLSsjIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBjYW4gY29udGFjdCB5b3UuCi0rTVNHSURfQlVHU19BRERSRVNTID0KLSsKLSsjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgbG9jYWxlIGNhdGVnb3JpZXMsIGJleW9uZCBMQ19NRVNTQUdFUywgZm9yIHdoaWNoIHRoZQotKyMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KLStFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyA9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL3F1b3Quc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9xdW90LnNlZAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljc1NDY4NzQ0MCAtMDQwMAotQEAgLTAsMCArMSw2IEBACi0rcy8iXChbXiJdKlwpIi/igJxcMeKAnS9nCi0rcy9gXChbXmAnXSpcKScv4oCYXDHigJkvZwotK3MvICdcKFteYCddKlwpJyAvIOKAmFwx4oCZIC9nCi0rcy8gJ1woW15gJ10qXCknJC8g4oCYXDHigJkvZwotK3MvXidcKFteYCddKlwpJyAv4oCYXDHigJkgL2cKLStzL+KAnOKAnS8iIi9nCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4JMjAwNC0wOS0xMiAxNDo0MDozNC43NjI2ODYyMjQgLTA0MDAKLUBAIC0wLDAgKzEsMTkgQEAKLSsjIFNlZCBzY3JpcHQgdGhhdCByZW1vdmUgdGhlIFBPVC1DcmVhdGlvbi1EYXRlIGxpbmUgaW4gdGhlIGhlYWRlciBlbnRyeQotKyMgZnJvbSBhIFBPVCBmaWxlLgotKyMKLSsjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGZvbGxvd2luZyBvY2N1cnJlbmNlcyBvZiB0aGUKLSsjIHBhdHRlcm4gaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KLSsvXiJQT1QtQ3JlYXRpb24tRGF0ZTogLioiJC97Ci0reAotKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLStzL1AvUC8KLSt0YQotKyMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVtb3ZlIHRoZSBsaW5lLgotK2cKLStkCi0rYmIKLSs6YQotKyMgVGhlIGhvbGQgc3BhY2Ugd2FzIG5vbmVtcHR5LiBGb2xsb3dpbmcgb2NjdXJyZW5jZXMuIERvIG5vdGhpbmcuCi0reAotKzpiCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9SdWxlcy1xdW90CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9SdWxlcy1xdW90CTIwMDQtMDktMTIgMTQ6NDA6MzQuNzc4NjgzNzkyIC0wNDAwCi1AQCAtMCwwICsxLDQ3IEBACi0rIyBTcGVjaWFsIE1ha2VmaWxlIHJ1bGVzIGZvciBFbmdsaXNoIG1lc3NhZ2UgY2F0YWxvZ3Mgd2l0aCBxdW90YXRpb24gbWFya3MuCi0rCi0rRElTVEZJTEVTLmNvbW1vbi5leHRyYTEgPSBxdW90LnNlZCBib2xkcXVvdC5zZWQgZW5AcXVvdC5oZWFkZXIgZW5AYm9sZHF1b3QuaGVhZGVyIGluc2VydC1oZWFkZXIuc2luIFJ1bGVzLXF1b3QKLSsKLSsuU1VGRklYRVM6IC5pbnNlcnQtaGVhZGVyIC5wby11cGRhdGUtZW4KLSsKLStlbkBxdW90LnBvLWNyZWF0ZToKLSsJJChNQUtFKSBlbkBxdW90LnBvLXVwZGF0ZQotK2VuQGJvbGRxdW90LnBvLWNyZWF0ZToKLSsJJChNQUtFKSBlbkBib2xkcXVvdC5wby11cGRhdGUKLSsKLStlbkBxdW90LnBvLXVwZGF0ZTogZW5AcXVvdC5wby11cGRhdGUtZW4KLStlbkBib2xkcXVvdC5wby11cGRhdGU6IGVuQGJvbGRxdW90LnBvLXVwZGF0ZS1lbgotKwotKy5pbnNlcnQtaGVhZGVyLnBvLXVwZGF0ZS1lbjoKLSsJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUtZW4kJC8vJ2A7IFwKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCI7IHRoZW4gUEFUSD1gcHdkYC8uLi9zcmM6JCRQQVRIOyBHRVRURVhUTElCRElSPWBjZCAkKHRvcF9zcmNkaXIpL3NyYyAmJiBwd2RgOyBleHBvcnQgR0VUVEVYVExJQkRJUjsgZmk7IFwKLSsJdG1wZGlyPWBwd2RgOyBcCi0rCWVjaG8gIiQkbGFuZzoiOyBcCi0rCWxsPWBlY2hvICQkbGFuZyB8IHNlZCAtZSAncy9ALiovLydgOyBcCi0rCUxDX0FMTD1DOyBleHBvcnQgTENfQUxMOyBcCi0rCWNkICQoc3JjZGlyKTsgXAotKwlpZiAkKE1TR0lOSVQpIC1pICQoRE9NQUlOKS5wb3QgLS1uby10cmFuc2xhdG9yIC1sICQkbGwgLW8gLSAyPi9kZXYvbnVsbCB8IHNlZCAtZiAkJHRtcGRpci8kJGxhbmcuaW5zZXJ0LWhlYWRlciB8ICQoTVNHQ09OVikgLXQgVVRGLTggfCAkKE1TR0ZJTFRFUikgc2VkIC1mIGBlY2hvICQkbGFuZyB8IHNlZCAtZSAncy8uKkAvLydgLnNlZCAyPi9kZXYvbnVsbCA+ICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IHRoZW4gXAotKwkgIGlmIGNtcCAkJGxhbmcucG8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAotKwkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotKwkgIGVsc2UgXAotKwkgICAgaWYgbXYgLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG87IHRoZW4gXAotKwkgICAgICA6OyBcCi0rCSAgICBlbHNlIFwKLSsJICAgICAgZWNobyAiY3JlYXRpb24gb2YgJCRsYW5nLnBvIGZhaWxlZDogY2Fubm90IG1vdmUgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyB0byAkJGxhbmcucG8iIDE+JjI7IFwKLSsJICAgICAgZXhpdCAxOyBcCi0rCSAgICBmaTsgXAotKwkgIGZpOyBcCi0rCWVsc2UgXAotKwkgIGVjaG8gImNyZWF0aW9uIG9mICQkbGFuZy5wbyBmYWlsZWQhIiAxPiYyOyBcCi0rCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotKwlmaQotKwotK2VuQHF1b3QuaW5zZXJ0LWhlYWRlcjogaW5zZXJ0LWhlYWRlci5zaW4KLSsJc2VkIC1lICcvXiMvZCcgLWUgJ3MvSEVBREVSL2VuQHF1b3QuaGVhZGVyL2cnICQoc3JjZGlyKS9pbnNlcnQtaGVhZGVyLnNpbiA+IGVuQHF1b3QuaW5zZXJ0LWhlYWRlcgotKwotK2VuQGJvbGRxdW90Lmluc2VydC1oZWFkZXI6IGluc2VydC1oZWFkZXIuc2luCi0rCXNlZCAtZSAnL14jL2QnIC1lICdzL0hFQURFUi9lbkBib2xkcXVvdC5oZWFkZXIvZycgJChzcmNkaXIpL2luc2VydC1oZWFkZXIuc2luID4gZW5AYm9sZHF1b3QuaW5zZXJ0LWhlYWRlcgotKwotK21vc3RseWNsZWFuOiBtb3N0bHljbGVhbi1xdW90Ci0rbW9zdGx5Y2xlYW4tcXVvdDoKLSsJcm0gLWYgKi5pbnNlcnQtaGVhZGVyCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL3N0YW1wLWNhdC1pZAkxOTk4LTEyLTMwIDAyOjUwOjAxLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vc3RhbXAtY2F0LWlkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSArMCwwIEBACi0tdGltZXN0YW1wCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3NyYy9NYWtlZmlsZS5hbQkxOTk4LTEyLTI4IDAzOjM4OjQ3LjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCTIwMDQtMDktMTIgMTQ6NDA6NTMuNjY1ODEyNTEyIC0wNDAwCi1AQCAtMiwxMiArMiwxMiBAQAotIGxyel9TT1VSQ0VTPWxyei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYwotIGxzel9TT1VSQ0VTPWxzei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYwotIG5vaW5zdF9IRUFERVJTID0gdGltaW5nLmggemdsb2JhbC5oIHptb2RlbS5oCi0tZGF0YWRpciA9ICQocHJlZml4KS9AREFUQURJUk5BTUVACi0rZGF0YWRpciA9ICQocHJlZml4KS9zaGFyZQotIGxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCi0gQ0ZMQUdTPUBDRkxBR1NACi0gRElTVENMRUFOX0ZJTEVTPWxyenN6YnVnCi0gCi0tTERBREQgPSAuLi9saWIvbGliem1vZGVtLmEgQElOVExMSUJTQAotK0xEQUREID0gLi4vbGliL2xpYnptb2RlbS5hIEBMSUJJTlRMQAotIEFVVE9NQUtFX09QVElPTlM9YW5zaTJrbnIKLSBFWFRSQV9ESVNUID0gYW5zaTJrbnIuMSBhbnNpMmtuci5jIGxyenN6YnVnLmluCi0gSU5DTFVERVMgPSAtSS4uIC1JJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLUkuLi9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9saWIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgyZjFjOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9scnpzel9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhpcyBwYXRjaCBmaXhlcyBmb2xsb3dpbmcgaXNzdWUgd2l0aCBhdXRvbWFrZSAxLjEyCi0KLXwgY29uZmlndXJlLmluOjk1OiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCi0uLi4KLXwgbGliL01ha2VmaWxlLmFtOjM6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKLXwgbGliL01ha2VmaWxlLmFtOiBpbnN0YWxsaW5nICcuL2RlcGNvbXAnCi18IHNyYy9NYWtlZmlsZS5hbToxMTogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAotCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA1LzAzCi0KLUluZGV4OiBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxyenN6LTAuMTIuMjAub3JpZy9jb25maWd1cmUuaW4KLSsrKyBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgotQEAgLTkyLDcgKzkyLDYgQEAgQUNfUFJPR19SQU5MSUIKLSBBQ19JU0NfUE9TSVgKLSBBQ19BSVgKLSBBQ19NSU5JWAotLUFNX0NfUFJPVE9UWVBFUwotIEFDX0NfQ09OU1QKLSBBQ19DX0lOTElORQotIAotSW5kZXg6IGxyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHJ6c3otMC4xMi4yMC5vcmlnL2xpYi9NYWtlZmlsZS5hbQotKysrIGxyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDUgQEAKLSBub2luc3RfTElCUkFSSUVTPWxpYnptb2RlbS5hCi0gQ0ZMQUdTPUBDRkxBR1NACi0tQVVUT01BS0VfT1BUSU9OUz1hbnNpMmtucgotIAotIEVYVFJBX0RJU1QgPSBhbGxvY2EuYyBhbnNpMmtuci4xIGFuc2kya25yLmMgXAotIAlnZXRvcHQuYyBnZXRvcHQxLmMgbWtkaXIuYyBta3RpbWUuYyBcCi1JbmRleDogbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBscnpzei0wLjEyLjIwLm9yaWcvc3JjL01ha2VmaWxlLmFtCi0rKysgbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0KLUBAIC04LDcgKzgsNiBAQCBDRkxBR1M9QENGTEFHU0AKLSBESVNUQ0xFQU5fRklMRVM9bHJ6c3pidWcKLSAKLSBMREFERCA9IC4uL2xpYi9saWJ6bW9kZW0uYSBATElCSU5UTEAKLS1BVVRPTUFLRV9PUFRJT05TPWFuc2kya25yCi0gRVhUUkFfRElTVCA9IGFuc2kya25yLjEgYW5zaTJrbnIuYyBscnpzemJ1Zy5pbgotIElOQ0xVREVTID0gLUkuLiAtSSQoc3JjZGlyKSAtSSQodG9wX3NyY2Rpcikvc3JjIC1JLi4vaW50bCAtSSQodG9wX3NyY2RpcikvbGliCi0gI0RFRlMgPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiIC1ET1M9XCJAaG9zdF9vc0BcIiAtRENQVT1cIkBob3N0X2NwdUBcIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6XzAuMTIuMjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3pfMC4xMi4yMC5iYgppbmRleCAzNDU1NmIyLi40MTI5MjM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3pfMC4xMi4yMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3pfMC4xMi4yMC5iYgpAQCAtMTMsMTEgKzEzLDkgQEAKIFBSID0gInI2IgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cub2hzZS5kZS91d2UvcmVsZWFzZXMvbHJ6c3otJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2F1dG90b29scy11cGRhdGUucGF0Y2ggXAogCSAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAogCSAgIGZpbGU6Ly9tYWtlZmlsZS5wYXRjaCBcCi0JICAgZmlsZTovL2dldHRleHQucGF0Y2ggXAotCSAgIGZpbGU6Ly9hY2RlZmluZS5wYXRjaCBcCi0JICAgZmlsZTovL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9scnpzei1jaGVjay1sb2NhbGUuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jdmUtMjAxOC0xMDE5NS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlLnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL2ZpbGVzLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvZmlsZXMvMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2gKaW5kZXggOWMyZDBlYi4uZDJhODA0OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvZmlsZXMvMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvZmlsZXMvMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGY1ODcxZTFmMzY1MGQ2YzhhMDMyOTI4Y2I1ZDhjYTAwYzI3NWMzNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZlOTg2MGZkODVlNDlhNzViZWY1NDVlNWQ5OTE0MDcwNDkxZTgwMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CiBEYXRlOiBGcmksIDE1IEZlYiAyMDE5IDE0OjU3OjQxIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBEb24ndCBzcGVjaWZ5IG1hYmkgb3IgbWFyY2gKQEAgLTcsMjUgKzcsMjYgQEAKICAgICBjYW4ndCBsaW5rIGRvdWJsZS1mbG9hdCBtb2R1bGVzIHdpdGggc29mdC1mbG9hdCBtb2R1bGVzCiBlcnJvcnMgd2hlbiBidWlsZGluZyAzMi1iaXQgb3BlblNCSSBkb24ndCBzcGVjaWZ5IG1hYmkgb3IgbWFyY2guCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRml4ZXMgYSAzMi1iaXQgWW9jdG8gZmxvdyBidWddCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0ZpeGVzIGEgMzItYml0IE9FIGZsb3cgYnVnXQogU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorCiAtLS0KICBNYWtlZmlsZSB8IDIgLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGFlNjhmNTUuLjEwODUxZmMgMTAwNjQ0CitpbmRleCBjY2Y4ZWEzLi42OWU1YjM4IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtMTQ1LDcgKzE0NSw2IEBAIEdFTkZMQUdTCSs9CSQoZmlybXdhcmUtZ2VuZmxhZ3MteSkKLSBDRkxBR1MJCT0JLWcgLVdhbGwgLVdlcnJvciAtbm9zdGRsaWIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLU8yCitAQCAtMTY5LDcgKzE2OSw2IEBAIEdFTkZMQUdTCSs9CSQoZmlybXdhcmUtZ2VuZmxhZ3MteSkKKyBDRkxBR1MJCT0JLWcgLVdhbGwgLVdlcnJvciAtZmZyZWVzdGFuZGluZyAtbm9zdGRsaWIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLU8yCiAgQ0ZMQUdTCQkrPQktZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZm5vLW9wdGltaXplLXNpYmxpbmctY2FsbHMKICBDRkxBR1MJCSs9CS1tbm8tc2F2ZS1yZXN0b3JlIC1tc3RyaWN0LWFsaWduCiAtQ0ZMQUdTCQkrPQktbWFiaT0kKFBMQVRGT1JNX1JJU0NWX0FCSSkgLW1hcmNoPSQoUExBVEZPUk1fUklTQ1ZfSVNBKQogIENGTEFHUwkJKz0JLW1jbW9kZWw9JChQTEFURk9STV9SSVNDVl9DT0RFX01PREVMKQogIENGTEFHUwkJKz0JJChHRU5GTEFHUykKICBDRkxBR1MJCSs9CSQocGxhdGZvcm0tY2ZsYWdzLXkpCi1AQCAtMTU4LDcgKzE1Nyw2IEBAIENQUEZMQUdTCSs9CSQoZmlybXdhcmUtY3BwZmxhZ3MteSkKK0BAIC0xODMsNyArMTgyLDYgQEAgQ1BQRkxBR1MJKz0JJChmaXJtd2FyZS1jcHBmbGFncy15KQogIEFTRkxBR1MJCT0JLWcgLVdhbGwgLW5vc3RkbGliIC1EX19BU1NFTUJMWV9fCiAgQVNGTEFHUwkJKz0JLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzCiAgQVNGTEFHUwkJKz0JLW1uby1zYXZlLXJlc3RvcmUgLW1zdHJpY3QtYWxpZ24KQEAgLTMzLDYgKzM0LDMgQEAKICBBU0ZMQUdTCQkrPQktbWNtb2RlbD0kKFBMQVRGT1JNX1JJU0NWX0NPREVfTU9ERUwpCiAgQVNGTEFHUwkJKz0JJChHRU5GTEFHUykKICBBU0ZMQUdTCQkrPQkkKHBsYXRmb3JtLWFzZmxhZ3MteSkKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmktcGF5bG9hZHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaS1wYXlsb2Fkcy5pbmMKaW5kZXggYjk3MTRhNy4uMmUzMjk0MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaS1wYXlsb2Fkcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaS1wYXlsb2Fkcy5pbmMKQEAgLTcsMTggKzcsOCBAQAogCiAgICAgcmV0dXJuICJGV19QQVlMT0FEX1BBVEg9IiArIGRlcGxveV9kaXIgKyAiLyIgKyBzYmlfcGF5bG9hZAogCi1kZWYgcmlzY3ZfZ2V0X2V4dHJhX29lbWFrZV9mZHQoZCk6Ci0gICAgc2JpX2ZkdF9wYXlsb2FkID0gZC5nZXRWYXIoJ1JJU0NWX1NCSV9GRFQnKQotICAgIGRlcGxveV9kaXIgPSBkLmdldFZhcignREVQTE9ZX0RJUl9JTUFHRScpCi0KLSAgICBpZiBzYmlfZmR0X3BheWxvYWQgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuICIiCi0KLSAgICByZXR1cm4gIkZXX1BBWUxPQURfRkRUX1BBVEg9IiArIGRlcGxveV9kaXIgKyAiLyIgKyBzYmlfZmR0X3BheWxvYWQKLQogZGVmIHJpc2N2X2dldF9kb19jb21waWxlX2RlcGVuZHMoZCk6CiAgICAgc2JpX3BheWxvYWQgPSBkLmdldFZhcignUklTQ1ZfU0JJX1BBWUxPQUQnKQotICAgIHNiaV9mZHRfcGF5bG9hZCA9IGQuZ2V0VmFyKCdSSVNDVl9TQklfRkRUJykKIAogICAgIGlmIHNiaV9wYXlsb2FkIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiAiIgpAQCAtMjYsMTQgKzE2LDYgQEAKICAgICBpZiAnbGludXgnIGluIHNiaV9wYXlsb2FkIG9yICdJbWFnZScgaW4gc2JpX3BheWxvYWQ6CiAgICAgICAgIHJldHVybiAidmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IgogICAgIGlmICd1LWJvb3QuYmluJyBpbiBzYmlfcGF5bG9hZDoKLSAgICAgICAgIyBJZiB3ZSB3YW50IFUtQm9vdCBhbmQgYSBGRFQgdGhlbiB3ZSBuZWVkIHRvIGRlcGVuZCBvbiBVLUJvb3QgYW5kCi0gICAgICAgICMgdGhlIGtlcm5lbAotICAgICAgICBpZiBzYmlfZmR0X3BheWxvYWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gInZpcnR1YWwvYm9vdGxvYWRlcjpkb19kZXBsb3kgdmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJ2aXJ0dWFsL2Jvb3Rsb2FkZXI6ZG9fZGVwbG95IgotICAgICMgSWYgd2Ugd2FudCBhIGN1c3RvbSBGRFQgdGhlbiB3ZSBuZWVkIHRvIGRlcGVuZCBvbiB0aGUga2VybmVsCi0gICAgaWYgc2JpX2ZkdF9wYXlsb2FkIGlzIG5vdCBOb25lOgotICAgICAgICByZXR1cm4gInZpcnR1YWwva2VybmVsOmRvX2RlcGxveSIKKyAgICAgICAgcmV0dXJuICJ2aXJ0dWFsL2Jvb3Rsb2FkZXI6ZG9fZGVwbG95IgogCiAgICAgcmV0dXJuICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTliYmJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJSSVNDLVYgT3BlbiBTb3VyY2UgU3VwZXJ2aXNvciBCaW5hcnkgSW50ZXJmYWNlIChPcGVuU0JJKSIKLURFU0NSSVBUSU9OID0gIk9wZW5TQkkgYWltcyB0byBwcm92aWRlIGFuIG9wZW4tc291cmNlIGFuZCBleHRlbnNpYmxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSSVNDLVYgU0JJIHNwZWNpZmljYXRpb24gZm9yIGEgcGxhdGZvcm0gc3BlY2lmaWMgZmlybXdhcmUgKE0tbW9kZSkgYW5kIGEgZ2VuZXJhbCBwdXJwb3NlIE9TLCBoeXBlcnZpc29yIG9yIGJvb3Rsb2FkZXIgKFMtbW9kZSBvciBIUy1tb2RlKS4gT3BlblNCSSBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZWFzaWx5IGV4dGVuZGVkIGJ5IFJJU0MtViBwbGF0Zm9ybSBvciBTeXN0ZW0tb24tQ2hpcCB2ZW5kb3JzIHRvIGZpdCBhIHBhcnRpY3VsYXIgaGFkd2FyZSBjb25maWd1cmF0aW9uLiIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTQyZGQ5NTU1ZWIxNzdmMzUxNTBjZjlhYTI0MGI2MWU1IgotREVQRU5EUyArPSAiZHRjLW5hdGl2ZSIKLQotcmVxdWlyZSBvcGVuc2JpLXBheWxvYWRzLmluYwotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZGVwbG95Ci0KLVNSQ1JFViA9ICJiZTkyZGEyODBkODdjMzhhMmUwYWRjNWQzZjQzYmFiN2I1NDY4ZjA5IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jpc2N2L29wZW5zYmkuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MjFmMzhkODIwNWVmNWZiMTg1ZTQwNTUwMjVlNzNkZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2YxOGI3M2FiZjNiODVhYWJlNWJlYWQxOWE5MjM3MTZjMTAwZDMwZWI1ODAzMzQ1OWYzOWMzYTIyNGJlMzAwIgotCi1FWFRSQV9PRU1BS0UgKz0gIlBMQVRGT1JNPSR7UklTQ1ZfU0JJX1BMQVR9IEk9JHtEfSIKLSMgSWYgUklTQ1ZfU0JJX1BBWUxPQUQgaXMgc2V0IHRoZW4gaW5jbHVkZSBpdCBhcyBhIHBheWxvYWQKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiICR7QHJpc2N2X2dldF9leHRyYV9vZW1ha2VfaW1hZ2UoZCl9ICR7QHJpc2N2X2dldF9leHRyYV9vZW1ha2VfZmR0KGQpfSIKLQotIyBSZXF1aXJlZCBpZiBzcGVjaWZ5aW5nIGEgY3VzdG9tIHBheWxvYWQKLWRvX2NvbXBpbGVbZGVwZW5kc10gKz0gIiR7QHJpc2N2X2dldF9kb19jb21waWxlX2RlcGVuZHMoZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIEluIHRoZSBmdXR1cmUgdGhlc2UgbWlnaHQgYmUgcmVxdWlyZWQgYXMgYSBkZXBlbmRlbmN5IGZvciBvdGhlciBwYWNrYWdlcy4KLQkjIEF0IHRoZSBtb21lbnQganVzdCBkZWxldGUgdGhlbSB0byBhdm9pZCB3YXJuaW5ncwotCXJtIC1yICR7RH0vaW5jbHVkZQotCXJtIC1yICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vbGliCi0Jcm0gLXIgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9wYXlsb2FkcwotCXJtIC1yICR7RH0vbGliCi19Ci0KLWRvX2RlcGxveSAoKSB7Ci0JaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLiogJHtERVBMT1lESVJ9LwotCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qICR7REVQTE9ZRElSfS8KLQlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiAke0RFUExPWURJUn0vCi19Ci0KLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCi0KLUZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qIgotRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLioiCi1GSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiIKLQotCi1DT01QQVRJQkxFX0hPU1QgPSAiKHJpc2N2NjR8cmlzY3YzMikuKiIKLUlOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgotCi1TRUNVUklUWV9DRkxBR1MgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmYyZDRiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjYuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJSSVNDLVYgT3BlbiBTb3VyY2UgU3VwZXJ2aXNvciBCaW5hcnkgSW50ZXJmYWNlIChPcGVuU0JJKSIKK0RFU0NSSVBUSU9OID0gIk9wZW5TQkkgYWltcyB0byBwcm92aWRlIGFuIG9wZW4tc291cmNlIGFuZCBleHRlbnNpYmxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSSVNDLVYgU0JJIHNwZWNpZmljYXRpb24gZm9yIGEgcGxhdGZvcm0gc3BlY2lmaWMgZmlybXdhcmUgKE0tbW9kZSkgYW5kIGEgZ2VuZXJhbCBwdXJwb3NlIE9TLCBoeXBlcnZpc29yIG9yIGJvb3Rsb2FkZXIgKFMtbW9kZSBvciBIUy1tb2RlKS4gT3BlblNCSSBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZWFzaWx5IGV4dGVuZGVkIGJ5IFJJU0MtViBwbGF0Zm9ybSBvciBTeXN0ZW0tb24tQ2hpcCB2ZW5kb3JzIHRvIGZpdCBhIHBhcnRpY3VsYXIgaGFkd2FyZSBjb25maWd1cmF0aW9uLiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTQyZGQ5NTU1ZWIxNzdmMzUxNTBjZjlhYTI0MGI2MWU1IgorCityZXF1aXJlIG9wZW5zYmktcGF5bG9hZHMuaW5jCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkZXBsb3kKKworU1JDUkVWID0gImFjNWU4MjFkNTBiZTYzMWYyNjI3NDc2NWE1OWJjMWI0NDRmZmQ4NjIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmlzY3Yvb3BlbnNiaS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VNQUtFICs9ICJQTEFURk9STT0ke1JJU0NWX1NCSV9QTEFUfSBJPSR7RH0iCisjIElmIFJJU0NWX1NCSV9QQVlMT0FEIGlzIHNldCB0aGVuIGluY2x1ZGUgaXQgYXMgYSBwYXlsb2FkCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiAke0ByaXNjdl9nZXRfZXh0cmFfb2VtYWtlX2ltYWdlKGQpfSIKKworIyBSZXF1aXJlZCBpZiBzcGVjaWZ5aW5nIGEgY3VzdG9tIHBheWxvYWQKK2RvX2NvbXBpbGVbZGVwZW5kc10gKz0gIiR7QHJpc2N2X2dldF9kb19jb21waWxlX2RlcGVuZHMoZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIEluIHRoZSBmdXR1cmUgdGhlc2UgbWlnaHQgYmUgcmVxdWlyZWQgYXMgYSBkZXBlbmRlbmN5IGZvciBvdGhlciBwYWNrYWdlcy4KKwkjIEF0IHRoZSBtb21lbnQganVzdCBkZWxldGUgdGhlbSB0byBhdm9pZCB3YXJuaW5ncworCXJtIC1yICR7RH0vaW5jbHVkZQorCXJtIC1yICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vbGliCisJcm0gLXIgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9wYXlsb2FkcworCXJtIC1yICR7RH0vbGliCit9CisKK2RvX2RlcGxveSAoKSB7CisJaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLiogJHtERVBMT1lESVJ9LworCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qICR7REVQTE9ZRElSfS8KKwlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiAke0RFUExPWURJUn0vCit9CisKK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCisKK0ZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qIgorRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLioiCitGSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiIKKworQ09NUEFUSUJMRV9IT1NUID0gIihyaXNjdjY0fHJpc2N2MzIpLioiCitJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKKworU0VDVVJJVFlfQ0ZMQUdTID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCmluZGV4IGE3ZTQ0NTcuLmU0NDRjMTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaApAQCAtMjQsNyArMjQsNyBAQAogLQkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTERMSUJTKSAtbyAkQAogKwkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTElCX0xETElCUykgJChMRExJQlMpIC1vICRACiAgCi0gJS44ICUuNzogJS5tYW4KKyAlLjggJS43ICUuNTogJS5tYW4KICAJTT1gZWNobyAkKERBVEUpIHwgc2VkICdzLy0wMS0vLUphbnVhcnktLztzLy0wMi0vLUZlYnJ1YXJ5LS87cy8tMDMtLy1NYXJjaC0vO3MvLTA0LS8tQXByaWwtLztzLy0wNS0vLU1heS0vO3MvLTA2LS8tSnVuZS0vO3MvLTA3LS8tSnVseS0vO3MvLTA4LS8tQXVndXN0LS87cy8tMDktLy1TZXB0ZW1iZXItLztzLy0xMC0vLU9jdG9iZXItLztzLy0xMS0vLU5vdmVtYmVyLS87cy8tMTItLy1EZWNlbWJlci0vO3MvXCguKlwpLVwoLipcKS1cKC4qXCkvXDMgXDIgXDEvJ2AgOyBzZWQgPCQ8ID4kQCAicy9AVE9EQVlALyQkTS87cy9AVkVSU0lPTkAvcGNpdXRpbHMtJChWRVJTSU9OKS87cyNASURTRElSQCMkKElEU0RJUikjIgogSW5kZXg6IHBjaXV0aWxzLTMuNS42L2xpYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTcwLDcgKzcwLDcgQEAKICBmaQogIFsgLW4gIiRSRUxFQVNFIiBdICYmIHJlbD0iJHtSRUxFQVNFfSIKICAjIENBVkVBVDogdHIgb24gU29sYXJpcyBpcyBhIGJpdCB3ZWlyZCBhbmQgdGhlIGV4dHJhIFtdIGlzIG90aGVyd2lzZSBoYXJtbGVzcy4KLUBAIC00NCw2ICs0OCw4IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14KK0BAIC00NCw2ICs0OCw4IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCiAgc3lzPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKICBlY2hvICIgJGhvc3QgJHJlbCAkY3B1ICRzeXMiCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMzQyMWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCi10byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCi1IT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAiemxpYiBrbW9kIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc3OTYzNzk2ZDFiZTRmNDUxYjgzZTZkYTI4YmE0ZjgyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiNDUyZWM5ODZlZGVmZDg4YWYwZDIyMmQyMmY2MTAyZjgwMzBhODYzM2ZkZmU4NDZjM2FlNGJkZTliYjkzZjMiCi0KLWluaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCi0KLVBDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgotCi0jIHNlZSBjb25maWd1cmUucGF0Y2gKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JKAotCSAgY2QgbGliICYmIFwKLQkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCi0JICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKLQkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQotCSkKLX0KLQotZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCi1leHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgotZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCi1leHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKLQotQVNORUVERUQgPSAiIgotCi0jIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKLUhPU1RbdW5leHBvcnRdID0gIjEiCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKLQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKLUZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgotRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKLVNVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCi1ERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0YmI2MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuNC5iYgpAQCAtMCwwICsxLDYwIEBACitTVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKK3RvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKK0hPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJ6bGliIGttb2QiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDM0M2IzN2UxOWYzMTljZThmM2Q1OWMzMDAzMTc5MGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjY3ZmY3MzI5NzZlMmRiMmE1Y2NkZjM5NjAwMjA3OTY1MjZiYTZiMDVmNmIxY2RkMjRiN2IyMDZhZjcwNjA1NSIKKworaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKKworUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCisKKyMgc2VlIGNvbmZpZ3VyZS5wYXRjaAorZG9fY29uZmlndXJlICgpIHsKKwkoCisJICBjZCBsaWIgJiYgXAorCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKKwkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQorCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9CisJKQorfQorCitleHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKK2V4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCitleHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKK2V4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgorCitBU05FRURFRCA9ICIiCisKKyMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAorSE9TVFt1bmV4cG9ydF0gPSAiMSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgorCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgorRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCitGSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgorU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKK0RFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMDAwMS1pbmNsdWRlLWVudi5oLUVuc3VyZS11bG9uZy1pcy1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8wMDAxLWluY2x1ZGUtZW52LmgtRW5zdXJlLXVsb25nLWlzLWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MTE4MTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8wMDAxLWluY2x1ZGUtZW52LmgtRW5zdXJlLXVsb25nLWlzLWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDA1NjVhMDgwZDE1M2Q1YmFhYWFjZmViNTA0NWE4MzJlMTI2ZjRmOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci1EYXRlOiBNb24sIDE0IE9jdCAyMDE5IDE3OjM3OjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUvZW52Lmg6IEVuc3VyZSB1bG9uZyBpcyBkZWZpbmVkCi0KLVRvIGZpeCB0aGVzZSBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbDoKLSAgIGluY2x1ZGUvZW52Lmg6MTY2OjE6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndWxvbmcnOyBkaWQgeW91IG1lYW4gJ2xvbmcnPwotZW5zdXJlIHRoYXQgdWxvbmcgaXMgZGVmaW5lZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci0tLS0KLSBpbmNsdWRlL2Vudi5oIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZW52LmggYi9pbmNsdWRlL2Vudi5oCi1pbmRleCBiNzIyMzlmNmE1Li41Y2E0OWEzNDU2IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9lbnYuaAotKysrIGIvaW5jbHVkZS9lbnYuaAotQEAgLTEzLDYgKzEzLDggQEAKLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotIAotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICAgdWxvbmc7Ci0rCi0gc3RydWN0IGVudmlyb25tZW50X3M7Ci0gCi0gLyogVmFsdWUgZm9yIGVudmlyb25tZW50IHZhbGlkaXR5ICovCi0tLSAKLTIuMjMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2xpYnVib290ZW52XzAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvbGlidWJvb3RlbnZfMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNTFkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2xpYnVib290ZW52XzAuMi5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlUtQm9vdCBsaWJyYXJpZXMgYW5kIHRvb2xzIHRvIGFjY2VzcyBlbnZpcm9ubWVudCIKK0RFUEVORFMgKz0gIm10ZC11dGlscyIKKworREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRvb2xzIGFuZCBsaWJyYXJpZXMgdG8gcmVhZCBcCithbmQgbW9kaWZ5IFUtQm9vdCBlbnZpcm9ubWVudC4gXAorSXQgcHJvdmlkZXMgYSBoYXJkd2FyZS1pbmRlcGVuZGVudCByZXBsYWNlbWVudCBmb3IgZndfcHJpbnRlbnYvc2V0ZW52IHV0aWxpdGllcyBcCitwcm92aWRlZCBieSBVLUJvb3QiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYmFiaWMvbGlidWJvb3RlbnYiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvbGdwbC0yLjEudHh0O21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKK1NFQ1RJT04gPSAibGlicyIKKworUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NiYWJpYy9saWJ1Ym9vdGVudjtwcm90b2NvbD1odHRwcyIKK1NSQ1JFViA9ICJmNGI5Y2RlMzgxNWFiZTg0YTk4MDc5Y2VkZDUxNTI4M2VhMDhjMTZiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ01BS0UgPSAiLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCisKK1BST1ZJREVTICs9ICJ1LWJvb3QtZnctdXRpbHMiCitSUFJPVklERVNfJHtQTn0tYmluICs9ICJ1LWJvb3QtZnctdXRpbHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbi5pbmMKaW5kZXggYzNlNDU4ZS4uZjQ3OTA1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb24uaW5jCkBAIC0xMiw5ICsxMiwxMSBAQAogCiAjIFdlIHVzZSB0aGUgcmV2aXNpb24gaW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGZldGNoIGl0IGZyb20gdGhlCiAjIHJlcG8gZHVyaW5nIHBhcnNlCi1TUkNSRVYgPSAiNjFiYTEyNDRiNTQ4NDYzZGJmYjNjNTI4NWI2YjIyZTdjNzcyYzViZCIKK1NSQ1JFViA9ICIxMDc5ZWMwYTc3YzNmZGE1MTBmMDc4NjBiMjU0OWM0N2YzYTQ2YzIxIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE5LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQzMjFiNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE5LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGZ3X3ByaW50ZW52L3NldGVudiB1dGlsaXRpZXMiCi1ERVBFTkRTICs9ICJtdGQtdXRpbHMiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWluY2x1ZGUtZW52LmgtRW5zdXJlLXVsb25nLWlzLWRlZmluZWQucGF0Y2giCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFscmVhZHktc3RyaXBwZWQiCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdIT1NUQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBWPTEnCi0KLWluaGVyaXQgdWJvb3QtY29uZmlnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgJHtVQk9PVF9NQUNISU5FfQotCW9lX3J1bm1ha2UgZW52dG9vbHMKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfcHJpbnRlbnYKLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3NldGVudgotCWluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Vudi9md19lbnYuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2Z3X2Vudi5jb25maWcKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3N9Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19wcmludGVudgotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfc2V0ZW52Ci19Ci0KLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7YmluZGlyX2Nyb3NzfSIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLUJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29scy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29scy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlMjkwYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzLmluYwpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIHRvb2xzIgorREVQRU5EUyArPSAib3BlbnNzbCIKKworUFJPVklERVMgPSAiJHtNTFBSRUZJWH11LWJvb3QtbWtpbWFnZSAke01MUFJFRklYfXUtYm9vdC1ta2VudmltYWdlIgorUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSB1LWJvb3QtbWtlbnZpbWFnZS1uYXRpdmUiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1ta2ltYWdlICR7UE59LW1rZW52aW1hZ2UiCisKKyMgUmVxdWlyZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCAidS1ib290LW1raW1hZ2UteHh4LmJiIgorUlBST1ZJREVTXyR7UE59LW1raW1hZ2UgPSAidS1ib290LW1raW1hZ2UiCitSUkVQTEFDRVNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKK1JDT05GTElDVFNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKKworU0VEX0NPTkZJR19FRkkgPSAnLWUgInMvQ09ORklHX0VGSV9MT0FERVI9LiovIyBDT05GSUdfRUZJX0xPQURFUiBpcyBub3Qgc2V0LyInCitTRURfQ09ORklHX0VGSV94ODYgPSAnJworU0VEX0NPTkZJR19FRklfeDg2LTY0ID0gJycKK1NFRF9DT05GSUdfRUZJX2FybSA9ICcnCitTRURfQ09ORklHX0VGSV9hcm1lYiA9ICcnCitTRURfQ09ORklHX0VGSV9hYXJjaDY0ID0gJycKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAtQyAke1N9IHNhbmRib3hfZGVmY29uZmlnIE89JHtCfQorCisJIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAorCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKKwkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgorCXNlZCAtaSAtZSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iICR7U0VEX0NPTkZJR19FRkl9ICR7Qn0vLmNvbmZpZworCisJb2VfcnVubWFrZSAtQyAke1N9IGNyb3NzX3Rvb2xzIE5PX1NETD0xIE89JHtCfQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKworCSMgbWtpbWFnZQorCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQorCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQorCisJIyBta2VudmltYWdlCisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2VudmltYWdlCisJbG4gLXNmIHVib290LW1rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS9ta2VudmltYWdlCisKKwkjIGR1bXBpbWFnZQorCWluc3RhbGwgLW0gMDc1NSB0b29scy9kdW1waW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1kdW1waW1hZ2UKKwlsbiAtc2YgdWJvb3QtZHVtcGltYWdlICR7RH0ke2JpbmRpcn0vZHVtcGltYWdlCisKKwkjIGZpdF9jaGVja19zaWduCisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL2ZpdF9jaGVja19zaWduICR7RH0ke2JpbmRpcn0vdWJvb3QtZml0X2NoZWNrX3NpZ24KKwlsbiAtc2YgdWJvb3QtZml0X2NoZWNrX3NpZ24gJHtEfSR7YmluZGlyfS9maXRfY2hlY2tfc2lnbgorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tbWtpbWFnZSA9ICIke2JpbmRpcn0vdWJvb3QtbWtpbWFnZSAke2JpbmRpcn0vbWtpbWFnZSAke2JpbmRpcn0vdWJvb3QtZHVtcGltYWdlICR7YmluZGlyfS9kdW1waW1hZ2UgJHtiaW5kaXJ9L3Vib290LWZpdF9jaGVja19zaWduICR7YmluZGlyfS9maXRfY2hlY2tfc2lnbiIKK0ZJTEVTXyR7UE59LW1rZW52aW1hZ2UgPSAiJHtiaW5kaXJ9L3Vib290LW1rZW52aW1hZ2UgJHtiaW5kaXJ9L21rZW52aW1hZ2UiCisKK1JERVBFTkRTXyR7UE59LW1raW1hZ2UgKz0gImR0YyIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ta2ltYWdlICR7UE59LW1rZW52aW1hZ2UiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMTkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDE5LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWRlOTg0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMTkuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgdG9vbHMiCi1ERVBFTkRTICs9ICJvcGVuc3NsIgotCi1QUk9WSURFUyA9ICIke01MUFJFRklYfXUtYm9vdC1ta2ltYWdlICR7TUxQUkVGSVh9dS1ib290LW1rZW52aW1hZ2UiCi1QUk9WSURFU19jbGFzcy1uYXRpdmUgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIHUtYm9vdC1ta2VudmltYWdlLW5hdGl2ZSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LW1raW1hZ2UgJHtQTn0tbWtlbnZpbWFnZSIKLQotIyBSZXF1aXJlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoICJ1LWJvb3QtbWtpbWFnZS14eHguYmIiCi1SUFJPVklERVNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKLVJSRVBMQUNFU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgotUkNPTkZMSUNUU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgotCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gJ0NDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gJ0NST1NTX0NPTVBJTEU9IiR7SE9TVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotCi1TRURfQ09ORklHX0VGSSA9ICctZSAicy9DT05GSUdfRUZJX0xPQURFUj0uKi8jIENPTkZJR19FRklfTE9BREVSIGlzIG5vdCBzZXQvIicKLVNFRF9DT05GSUdfRUZJX3g4NiA9ICcnCi1TRURfQ09ORklHX0VGSV94ODYtNjQgPSAnJwotU0VEX0NPTkZJR19FRklfYXJtID0gJycKLVNFRF9DT05GSUdfRUZJX2FybWViID0gJycKLVNFRF9DT05GSUdfRUZJX2FhcmNoNjQgPSAnJwotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlIHNhbmRib3hfZGVmY29uZmlnCi0KLQkjIERpc2FibGUgQ09ORklHX0NNRF9MSUNFTlNFLCBsaWNlbnNlLmggaXMgbm90IHVzZWQgYnkgdG9vbHMgYW5kCi0JIyBnZW5lcmF0aW5nIGl0IHJlcXVpcmVzIGJpbjJoZWFkZXIgdG9vbCwgd2hpY2ggZm9yIHRhcmdldCBidWlsZAotCSMgaXMgYnVpbHQgd2l0aCB0YXJnZXQgdG9vbHMgYW5kIHRodXMgY2Fubm90IGJlIGV4ZWN1dGVkIG9uIGhvc3QuCi0Jc2VkIC1pIC1lICJzL0NPTkZJR19DTURfTElDRU5TRT0uKi8jIENPTkZJR19DTURfTElDRU5TRSBpcyBub3Qgc2V0LyIgJHtTRURfQ09ORklHX0VGSX0gLmNvbmZpZwotCi0Jb2VfcnVubWFrZSBjcm9zc190b29scyBOT19TREw9MQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQotCSMgbWtpbWFnZQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQotCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQotCi0JIyBta2VudmltYWdlCi0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2VudmltYWdlCi0JbG4gLXNmIHVib290LW1rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS9ta2VudmltYWdlCi0KLQkjIGR1bXBpbWFnZQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9kdW1waW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1kdW1waW1hZ2UKLQlsbiAtc2YgdWJvb3QtZHVtcGltYWdlICR7RH0ke2JpbmRpcn0vZHVtcGltYWdlCi0KLQkjIGZpdF9jaGVja19zaWduCi0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL2ZpdF9jaGVja19zaWduICR7RH0ke2JpbmRpcn0vdWJvb3QtZml0X2NoZWNrX3NpZ24KLQlsbiAtc2YgdWJvb3QtZml0X2NoZWNrX3NpZ24gJHtEfSR7YmluZGlyfS9maXRfY2hlY2tfc2lnbgotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tbWtpbWFnZSA9ICIke2JpbmRpcn0vdWJvb3QtbWtpbWFnZSAke2JpbmRpcn0vbWtpbWFnZSAke2JpbmRpcn0vdWJvb3QtZHVtcGltYWdlICR7YmluZGlyfS9kdW1waW1hZ2UgJHtiaW5kaXJ9L3Vib290LWZpdF9jaGVja19zaWduICR7YmluZGlyfS9maXRfY2hlY2tfc2lnbiIKLUZJTEVTXyR7UE59LW1rZW52aW1hZ2UgPSAiJHtiaW5kaXJ9L3Vib290LW1rZW52aW1hZ2UgJHtiaW5kaXJ9L21rZW52aW1hZ2UiCi0KLVJERVBFTkRTXyR7UE59LW1raW1hZ2UgKz0gImR0YyIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ta2ltYWdlICR7UE59LW1rZW52aW1hZ2UiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDIwLjA0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAyMC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWFmNzIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAyMC4wNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgdS1ib290LWNvbW1vbi5pbmMKK3JlcXVpcmUgdS1ib290LXRvb2xzLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCmluZGV4IDlhNzU0ZmQuLjgwZjgyOGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKQEAgLTEsMTkgKzEsMTcgQEAKIFNVTU1BUlkgPSAiVW5pdmVyc2FsIEJvb3QgTG9hZGVyIGZvciBlbWJlZGRlZCBkZXZpY2VzIgogUFJPVklERVMgPSAidmlydHVhbC9ib290bG9hZGVyIgogCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi0KIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKIERFUEVORFMgKz0gImtlcm4tdG9vbHMtbmF0aXZlIgogCi1pbmhlcml0IHVib290LWNvbmZpZyB1Ym9vdC1leHRsaW51eC1jb25maWcgdWJvb3Qtc2lnbiBkZXBsb3kgY21sMQoraW5oZXJpdCB1Ym9vdC1jb25maWcgdWJvb3QtZXh0bGludXgtY29uZmlnIHVib290LXNpZ24gZGVwbG95IGNtbDEgcHl0aG9uM25hdGl2ZQogCi1ERVBFTkRTICs9ICJzd2lnLW5hdGl2ZSBweXRob24tbmF0aXZlIgorREVQRU5EUyArPSAic3dpZy1uYXRpdmUiCiAKIEVYVFJBX09FTUFLRSA9ICdDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUT09MQ0hBSU5fT1BUSU9OU30iIFY9MScKIEVYVFJBX09FTUFLRSArPSAnSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSInCi1FWFRSQV9PRU1BS0UgKz0gJ1BZVEhPTjI9bmF0aXZlcHl0aG9uIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0nCitFWFRSQV9PRU1BS0UgKz0gJ1NUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0nCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIgogIyB1LWJvb3Qgd2lsbCBjb21waWxlIGl0cyBvd24gdG9vbHMgZHVyaW5nIHRoZSBidWlsZCwgd2l0aCBzcGVjaWZpYwpAQCAtODcsNiArODUsOCBAQAogICAgICAgICBmaQogICAgICAgICBtZXJnZV9jb25maWcuc2ggLW0gLmNvbmZpZyAke0AiICIuam9pbihmaW5kX2NmZ3MoZCkpfQogICAgICAgICBjbWwxX2RvX2NvbmZpZ3VyZQorICAgIGVsc2UKKyAgICAgICAgREVWVE9PTF9ESVNBQkxFX01FTlVDT05GSUc9dHJ1ZQogICAgIGZpCiB9CiAKQEAgLTEyMiw2ICsxMjIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcCAke0J9LyR7Y29uZmlnfS8ke2JpbmFyeX0gJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9CiAgICAgICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgICBkb25lCisKKyAgICAgICAgICAgICAgICAgICAgIyBHZW5lcmF0ZSB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgICAgICAgICAgICAgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfS8ke2NvbmZpZ30gdS1ib290LWluaXRpYWwtZW52CisgICAgICAgICAgICAgICAgICAgIGNwICR7Qn0vJHtjb25maWd9L3UtYm9vdC1pbml0aWFsLWVudiAke0J9LyR7Y29uZmlnfS91LWJvb3QtaW5pdGlhbC1lbnYtJHt0eXBlfQorCiAgICAgICAgICAgICAgICAgICAgIHVuc2V0IGsKICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgZG9uZQpAQCAtMTMwLDYgKzEzNSw5IEBACiAgICAgICAgIHVuc2V0ICBpCiAgICAgZWxzZQogICAgICAgICBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9ICR7VUJPT1RfTUFLRV9UQVJHRVR9CisKKyAgICAgICAgIyBHZW5lcmF0ZSB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSB1LWJvb3QtaW5pdGlhbC1lbnYKICAgICBmaQogCiB9CkBAIC0xNDMsMTkgKzE1MSwyOCBAQAogICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgWyAkaiAtZXEgJGkgXQogICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9L2Jvb3QKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9CisKKyAgICAgICAgICAgICAgICAgICAgIyBJbnN0YWxsIHRoZSB1Ym9vdC1pbml0aWFsLWVudgorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtaW5pdGlhbC1lbnYtJHt0eXBlfSAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfQorICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke3R5cGV9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52CiAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIHVuc2V0ICBqCiAgICAgICAgIGRvbmUKICAgICAgICAgdW5zZXQgIGkKICAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS9ib290Ci0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtVQk9PVF9CSU5BUll9ICR7RH0vYm9vdC8ke1VCT09UX0lNQUdFfQorICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7VUJPT1RfQklOQVJZfSAke0R9L2Jvb3QvJHtVQk9PVF9JTUFHRX0KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7RH0vYm9vdC8ke1VCT09UX0JJTkFSWX0KKworICAgICAgICAjIEluc3RhbGwgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vdS1ib290LWluaXRpYWwtZW52ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9CisgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9CisgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudgogICAgIGZpCiAKICAgICBpZiBbIC1uICIke1VCT09UX0VMRn0iIF0KQEAgLTIyNCw3ICsyNDEsMTYgQEAKIAogfQogCi1GSUxFU18ke1BOfSA9ICIvYm9vdCAke3N5c2NvbmZkaXJ9ICR7ZGF0YWRpcn0iCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tZW52IgorCitSUFJPVklERVNfJHtQTn0tZW52ICs9ICJ1LWJvb3QtZGVmYXVsdC1lbnYiCitGSUxFU18ke1BOfS1lbnYgPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52KiBcCisgICAgJHtzeXNjb25mZGlyfS9md19lbnYuY29uZmlnIFwKKyIKKworRklMRVNfJHtQTn0gPSAiL2Jvb3QgJHtkYXRhZGlyfSIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1lbnYiCiAKIGRvX2RlcGxveSAoKSB7CiAgICAgaWYgWyAtbiAiJHtVQk9PVF9DT05GSUd9IiBdCkBAIC0yMzUsMjUgKzI2MSw0MyBAQAogICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgWyAkaiAtZXEgJGkgXQogICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0RFUExPWURJUn0KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7REVQTE9ZRElSfS91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7REVQTE9ZRElSfS91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KICAgICAgICAgICAgICAgICAgICAgY2QgJHtERVBMT1lESVJ9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9TWU1MSU5LfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9TWU1MSU5LfQogICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9ICR7VUJPT1RfQklOQVJZfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9CSU5BUll9CisKKyAgICAgICAgICAgICAgICAgICAgIyBEZXBsb3kgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vJHtjb25maWd9L3UtYm9vdC1pbml0aWFsLWVudi0ke3R5cGV9ICR7REVQTE9ZRElSfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0KKyAgICAgICAgICAgICAgICAgICAgY2QgJHtERVBMT1lESVJ9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtQTn0taW5pdGlhbC1lbnYtJHt0eXBlfQogICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICB1bnNldCAgagogICAgICAgICBkb25lCiAgICAgICAgIHVuc2V0ICBpCiAgICAgZWxzZQotICAgICAgICBpbnN0YWxsIC1kICR7REVQTE9ZRElSfQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7VUJPT1RfQklOQVJZfSAke0RFUExPWURJUn0vJHtVQk9PVF9JTUFHRX0KKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke1VCT09UX0JJTkFSWX0gJHtERVBMT1lESVJ9LyR7VUJPT1RfSU1BR0V9CisKICAgICAgICAgY2QgJHtERVBMT1lESVJ9CiAgICAgICAgIHJtIC1mICR7VUJPT1RfQklOQVJZfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0lNQUdFfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0lNQUdFfSAke1VCT09UX0JJTkFSWX0KKworICAgICAgICAjIERlcGxveSB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS91LWJvb3QtaW5pdGlhbC1lbnYgJHtERVBMT1lESVJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0KKyAgICAgICAgY2QgJHtERVBMT1lESVJ9CisgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9ICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0KKyAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0gJHtQTn0taW5pdGlhbC1lbnYKKyAgICBmaQorCisgICAgaWYgWyAtZSAke1dPUktESVJ9L2Z3X2Vudi5jb25maWcgXSA7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9md19lbnYuY29uZmlnICR7REVQTE9ZRElSfS9md19lbnYuY29uZmlnLSR7TUFDSElORX0tJHtQVn0tJHtQUn0KKyAgICAgICAgY2QgJHtERVBMT1lESVJ9CisgICAgICAgIGxuIC1zZiBmd19lbnYuY29uZmlnLSR7TUFDSElORX0tJHtQVn0tJHtQUn0gZndfZW52LmNvbmZpZy0ke01BQ0hJTkV9CisgICAgICAgIGxuIC1zZiBmd19lbnYuY29uZmlnLSR7TUFDSElORX0tJHtQVn0tJHtQUn0gZndfZW52LmNvbmZpZwogICAgIGZpCiAKICAgICBpZiBbIC1uICIke1VCT09UX0VMRn0iIF0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDIwLjA0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE5LjEwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDIwLjA0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgppbmRleCAyZTA0ZDMwLi4yNDUyM2M3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKQEAgLTEwLDYgKzEwLDE2IEBACiAKIFBBQ0tBR0VTID0rICJsaWJhdmFoaS1nb2JqZWN0IGF2YWhpLWRhZW1vbiBsaWJhdmFoaS1jb21tb24gbGliYXZhaGktY29yZSBsaWJhdmFoaS1jbGllbnQgYXZhaGktZG5zY29uZmQgbGliYXZhaGktZ2xpYiBhdmFoaS1hdXRvaXBkIGF2YWhpLXV0aWxzIgogCitMSUNFTlNFX2xpYmF2YWhpLWdvYmplY3QgPSAiTEdQTHYyLjErIgorTElDRU5TRV9hdmFoaS1kYWVtb24gPSAiTEdQTHYyLjErIgorTElDRU5TRV9saWJhdmFoaS1jb21tb24gPSAiTEdQTHYyLjErIgorTElDRU5TRV9saWJhdmFoaS1jb3JlID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktY2xpZW50ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktZG5zY29uZmQgPSAiTEdQTHYyLjErIgorTElDRU5TRV9saWJhdmFoaS1nbGliID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktYXV0b2lwZCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2F2YWhpLXV0aWxzID0gIkxHUEx2Mi4xKyIKKwogIyBBcyBhdmFoaSBkb2Vzbid0IHB1dCBhbnkgZmlsZXMgaW50byBQTiwgY2xlYXIgdGhlIGZpbGVzIGxpc3QgdG8gYXZvaWQgcHJvYmxlbXMKICMgaWYgZXh0cmEgbGlicmFyaWVzIGFwcGVhci4KIEZJTEVTXyR7UE59ID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1iaW5kLWZpeC1DVkUtMjAxOS02NDcxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJpbmQtZml4LUNWRS0yMDE5LTY0NzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZWQ5OWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJpbmQtZml4LUNWRS0yMDE5LTY0NzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTktNjQ3MS4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOS02NDcxCi0KLUNWRTogQ1ZFLTIwMTktNjQ3MQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0LzNhOWM3YmJdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDNhOWM3YmI4MGQ0YTYwOWI4NjQyNzQwNmQ5ZGQ3ODMxOTk5MjBiNWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBUdWUsIDE5IE1hciAyMDE5IDE0OjE0OjIxICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1vdmUgaXRlbV9vdXQgdGVzdCBpbnNpZGUgbG9jayBpbiBkbnNfZGlzcGF0Y2hfZ2V0bmV4dCgpCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDYwYzQyZjg0OWQ1MjA1NjRlZDQyZTVlZDBiYTQ2YjRiNjljMDc3MTIpCi0tLS0KLSBsaWIvZG5zL2Rpc3BhdGNoLmMgfCAxMiArKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9kaXNwYXRjaC5jIGIvbGliL2Rucy9kaXNwYXRjaC5jCi1pbmRleCA0MDhiZWRhMzY3Li4zMjc4ZGI0YTA3IDEwMDY0NAotLS0tIGEvbGliL2Rucy9kaXNwYXRjaC5jCi0rKysgYi9saWIvZG5zL2Rpc3BhdGNoLmMKLUBAIC0xMzQsNyArMTM0LDcgQEAgc3RydWN0IGRuc19kaXNwZW50cnkgewotIAlpc2NfdGFza190CQkgICAgICAgKnRhc2s7Ci0gCWlzY190YXNrYWN0aW9uX3QJCWFjdGlvbjsKLSAJdm9pZAkJCSAgICAgICAqYXJnOwotLQlib29sCQkJaXRlbV9vdXQ7Ci0rCWJvb2wJCQkJaXRlbV9vdXQ7Ci0gCWRpc3Bzb2NrZXRfdAkJCSpkaXNwc29ja2V0OwotIAlJU0NfTElTVChkbnNfZGlzcGF0Y2hldmVudF90KQlpdGVtczsKLSAJSVNDX0xJTksoZG5zX2Rpc3BlbnRyeV90KQlsaW5rOwotQEAgLTM0MjIsMTMgKzM0MjIsMTQgQEAgZG5zX2Rpc3BhdGNoX2dldG5leHQoZG5zX2Rpc3BlbnRyeV90ICpyZXNwLCBkbnNfZGlzcGF0Y2hldmVudF90ICoqc29ja2V2ZW50KSB7Ci0gCWRpc3AgPSByZXNwLT5kaXNwOwotIAlSRVFVSVJFKFZBTElEX0RJU1BBVENIKGRpc3ApKTsKLSAKLS0JUkVRVUlSRShyZXNwLT5pdGVtX291dCA9PSB0cnVlKTsKLS0JcmVzcC0+aXRlbV9vdXQgPSBmYWxzZTsKLS0KLSAJZXYgPSAqc29ja2V2ZW50OwotIAkqc29ja2V2ZW50ID0gTlVMTDsKLSAKLSAJTE9DSygmZGlzcC0+bG9jayk7Ci0rCi0rCVJFUVVJUkUocmVzcC0+aXRlbV9vdXQgPT0gdHJ1ZSk7Ci0rCXJlc3AtPml0ZW1fb3V0ID0gZmFsc2U7Ci0rCi0gCWlmIChldi0+YnVmZmVyLmJhc2UgIT0gTlVMTCkKLSAJCWZyZWVfYnVmZmVyKGRpc3AsIGV2LT5idWZmZXIuYmFzZSwgZXYtPmJ1ZmZlci5sZW5ndGgpOwotIAlmcmVlX2RldmVudChkaXNwLCBldik7Ci1AQCAtMzU3Myw2ICszNTc0LDkgQEAgZG5zX2Rpc3BhdGNoX3JlbW92ZXJlc3BvbnNlKGRuc19kaXNwZW50cnlfdCAqKnJlc3AsCi0gCQlpc2NfdGFza19zZW5kKGRpc3AtPnRhc2tbMF0sICZkaXNwLT5jdGxldmVudCk7Ci0gfQotIAotKy8qCi0rICogZGlzcCBtdXN0IGJlIGxvY2tlZC4KLSsgKi8KLSBzdGF0aWMgdm9pZAotIGRvX2NhbmNlbChkbnNfZGlzcGF0Y2hfdCAqZGlzcCkgewotIAlkbnNfZGlzcGF0Y2hldmVudF90ICpldjsKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoCmluZGV4IDg3MWJiMmEuLjlkMzFiOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTUwODY3ZDlmZDNmNjkwZTI3MWM4YzgwN2I2ZWVkMTQ0YjI5MzViMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjMyNWE5MmYxODk2YTJhN2Y1ODY2MTE2ODY4MDFiNDFmYmM5MWI1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjcgQXVnIDIwMTggMTU6MDA6NTEgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmluOiByZW1vdmUgdXNlbGVzcyBgLUwkdXNlX29wZW5zc2wvbGliJwpAQCAtMTAsMTUgKzEwLDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gY29uZmlndXJlLmluIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNTRlZmM1NS4uNzZhYzBlYiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTY5MSw3ICsxNjkxLDcgQEAgSWYgeW91IGRvbid0IHdhbnQgT3BlblNTTCwgdXNlIC0td2l0aG91dC1vcGVuc3NsXSkKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGU4NWE1YzYuLjJiYmZjNTggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2MzEsNyArMTYzMSw3IEBAIElmIHlvdSBkb24ndCB3YW50IE9wZW5TU0wsIHVzZSAtLXdpdGhvdXQtb3BlbnNzbF0pCiAgCQkJCWZpCiAgCQkJCTs7CiAgCQkJKikKQEAgLTI3LDYgKzI4LDMgQEAKICAJCQkJOzsKICAJCQllc2FjCiAgCQlmaQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZml4LWVuZm9yY2VtZW50LW9mLXRjcC1jbGllbnRzLXYxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWZpeC1lbmZvcmNlbWVudC1vZi10Y3AtY2xpZW50cy12MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhhZTEyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZml4LWVuZm9yY2VtZW50LW9mLXRjcC1jbGllbnRzLXYxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC9lYzJkNTBkXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBlYzJkNTBkYThkODE4MTQ2NDBlMjg1OTNkOTEyZjRiOTZjN2VmZWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1dpdG9sZD0yMEtyPUM0PTk5Y2lja2k/PSA8d3BrQGlzYy5vcmc+Ci1EYXRlOiBUaHUsIDMgSmFuIDIwMTkgMTQ6MTc6NDMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzZdIGZpeCBlbmZvcmNlbWVudCBvZiB0Y3AtY2xpZW50cyAodjEpCi0KLXRjcC1jbGllbnRzIHNldHRpbmdzIGNvdWxkIGJlIGV4Y2VlZGVkIGluIHNvbWUgY2FzZXMgYnkKLWNyZWF0aW5nIG1vcmUgYW5kIG1vcmUgYWN0aXZlIFRDUCBjbGllbnRzIHRoYXQgYXJlIG92ZXIKLXRoZSBzZXQgcXVvdGEgbGltaXQsIHdoaWNoIGluIHRoZSBlbmQgY291bGQgbGVhZCB0byBhCi1Eb1MgYXR0YWNrIGJ5IGUuZy4gZXhoYXVzdGlvbiBvZiBmaWxlIGRlc2NyaXB0b3JzLgotCi1JZiBUQ1AgY2xpZW50IHdlJ3JlIGNsb3Npbmcgd2VudCBvdmVyIHRoZSBxdW90YSAoc28gaXQncwotbm90IGF0dGFjaGVkIHRvIGEgcXVvdGEpIG1hcmsgaXQgYXMgbW9ydGFsIC0gc28gdGhhdCBpdAotd2lsbCBiZSBkZXN0cm95ZWQgYW5kIG5vdCBzZXQgdXAgdG8gbGlzdGVuIGZvciBuZXcKLWNvbm5lY3Rpb25zIC0gdW5sZXNzIGl0J3MgdGhlIGxhc3QgY2xpZW50IGZvciBhIHNwZWNpZmljCi1pbnRlcmZhY2UuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGY5NzEzMWQyMWI5NzM4MWNlZjcyYjk3MWIxNTczNDVjMWY5YjQxMTUpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA5Njg5ZmZjNDg1ZGY4Zjk3MWYwYWQ4MWFiOGFiMWY1Mzg5NDkzNzc2KQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jIHwgMTMgKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IGQ0ODJkYTcxMjEuLjA3MzlkZDQ4YWYgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTQyMSw4ICs0MjEsMTkgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dGNwc29ja2V0KTsKLSAJCX0KLSAKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpCi0rCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0gCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQl9IGVsc2UgewotKwkJCS8qCi0rCQkJICogV2Ugd2VudCBvdmVyIHF1b3RhIHdpdGggdGhpcyBjbGllbnQsIHdlIGRvbid0Ci0rCQkJICogd2FudCB0byByZXN0YXJ0IGxpc3RlbmluZyB1bmxlc3MgdGhpcyBpcyB0aGUKLSsJCQkgKiBsYXN0IGNsaWVudCBvbiB0aGlzIGludGVyZmFjZSwgd2hpY2ggaXMKLSsJCQkgKiBjaGVja2VkIGxhdGVyLgotKwkJCSAqLwotKwkJCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkpIHsKLSsJCQkJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotKwkJCX0KLSsJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRpbWVyc2V0KSB7Ci0gCQkJKHZvaWQpaXNjX3RpbWVyX3Jlc2V0KGNsaWVudC0+dGltZXIsCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGQ2MDFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVN1YmplY3Q6IGdlbi5jOiBleHRlbmQgRElSTkFNRVNJWkUgZnJvbSAyNTYgdG8gNTEyCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9kbnMvZ2VuLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmluZC05LjExLjMub3JpZy9saWIvZG5zL2dlbi5jCi0rKysgYmluZC05LjExLjMvbGliL2Rucy9nZW4uYwotQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9Ci0gI2RlZmluZSBUWVBFQ0xBU1NCVUYgKFRZUEVDTEFTU0xFTiArIDEpCi0gI2RlZmluZSBUWVBFQ0xBU1NGTVQgIiUiIFNUUihUWVBFQ0xBU1NMRU4pICJbLTAtOWEtel1fJWQiCi0gI2RlZmluZSBBVFRSSUJVVEVTSVpFIDI1NgotLSNkZWZpbmUgRElSTkFNRVNJWkUgMjU2Ci0rI2RlZmluZSBESVJOQU1FU0laRSA1MTIKLSAKLSBzdGF0aWMgc3RydWN0IGNjIHsKLSAJc3RydWN0IGNjICpuZXh0OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTg3NGE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNWJjMzE2N2E4YjcxNGVjMGM0YTNmMWM3ZjNiOTQxMTI5NmVjMGEyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBTZXAgMjAxNSAyMDoyMzo0NyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWIvZG5zL2dlbi5jOiBmaXggdG9vIGxvbmcgZXJyb3IKLQotVGhlIDUxMiBpcyBhIGxpdHRsZSBzaG9ydCB3aGVuIGJ1aWxkIGluIGRlZXAgZGlyLCBhbmQgY2F1c2UgInRvbyBsb25nIgotZXJyb3IsIHVzZSBQQVRIX01BWCBpZiBkZWZpbmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZG5zL2dlbi5jIHwgICAgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogYmluZC05LjExLjMvbGliL2Rucy9nZW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJpbmQtOS4xMS4zLm9yaWcvbGliL2Rucy9nZW4uYwotKysrIGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKLUBAIC0xMzAsNyArMTMwLDExIEBAIHN0YXRpYyBjb25zdCBjaGFyIGNvcHlyaWdodFtdID0KLSAjZGVmaW5lIFRZUEVDTEFTU0JVRiAoVFlQRUNMQVNTTEVOICsgMSkKLSAjZGVmaW5lIFRZUEVDTEFTU0ZNVCAiJSIgU1RSKFRZUEVDTEFTU0xFTikgIlstMC05YS16XV8lZCIKLSAjZGVmaW5lIEFUVFJJQlVURVNJWkUgMjU2Ci0rI2lmZGVmIFBBVEhfTUFYCi0rI2RlZmluZSBESVJOQU1FU0laRSBQQVRIX01BWAotKyNlbHNlCi0gI2RlZmluZSBESVJOQU1FU0laRSA1MTIKLSsjZW5kaWYKLSAKLSBzdGF0aWMgc3RydWN0IGNjIHsKLSAJc3RydWN0IGNjICpuZXh0OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAyLXRjcC1jbGllbnRzLWNvdWxkLXN0aWxsLWJlLWV4Y2VlZGVkLXYyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAyLXRjcC1jbGllbnRzLWNvdWxkLXN0aWxsLWJlLWV4Y2VlZGVkLXYyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTRlOGIxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMi10Y3AtY2xpZW50cy1jb3VsZC1zdGlsbC1iZS1leGNlZWRlZC12Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY3MCArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOC01NzQzCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0LzcxOWY2MDRdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDcxOWY2MDRlM2ZhZDViNzQ3OWJkMTRlMmZhMGVmNDQxM2YwYThmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/V2l0b2xkPTIwS3I9QzQ9OTljaWNraT89IDx3cGtAaXNjLm9yZz4KLURhdGU6IEZyaSwgNCBKYW4gMjAxOSAxMjo1MDo1MSArMDEwMAotU3ViamVjdDogW1BBVENIIDIvNl0gdGNwLWNsaWVudHMgY291bGQgc3RpbGwgYmUgZXhjZWVkZWQgKHYyKQotCi10aGUgVENQIGNsaWVudCBxdW90YSBjb3VsZCBzdGlsbCBiZSBpbmVmZmVjdGl2ZSB1bmRlciBzb21lCi1jaXJjdW1zdGFuY2VzLiAgdGhpcyBjaGFuZ2U6Ci0KLS0gaW1wcm92ZXMgcXVvdGEgYWNjb3VudGluZyB0byBlbnN1cmUgdGhhdCBUQ1AgY2xpZW50cyBhcmUKLSAgcHJvcGVybHkgbGltaXRlZCwgd2hpbGUgc3RpbGwgZ3VhcmFudGVlaW5nIHRoYXQgYXQgbGVhc3Qgb25lIGNsaWVudAotICBpcyBhbHdheXMgYXZhaWxhYmxlIHRvIHNlcnZlIFRDUCBjb25uZWN0aW9ucyBvbiBlYWNoIGludGVyZmFjZS4KLS0gdXNlcyBtb3JlIGRlc2NyaXB0aXZlIG5hbWVzIGFuZCByZW1vdmVzIG9uZSAobnRjcHRhcmdldCkgdGhhdAotICB3YXMgbm8gbG9uZ2VyIG5lZWRlZAotLSBhZGRzIGNvbW1lbnRzCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDkyNDY1MWYxZDVlNjA1Y2QxODZkMDNmNGY3MzQwYmNjNTRkNzdjYzIpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA1NWE3YTQ1OGUzMGU0Nzg3NGQzNGJkZjEwNzllYjg2M2EwNTEyMzk2KQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgICAgICAgfCAzMTEgKysrKysrKysrKysrKysrKysrKystLS0tLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oICAgICAgIHwgIDE0ICstCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmggfCAgMTEgKy0KLSBiaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMgICAgICAgICAgICAgICB8ICAgOCArLQotIDQgZmlsZXMgY2hhbmdlZCwgMjY3IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCAwNzM5ZGQ0OGFmLi5hN2I0OWEwZjcxIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0yNDYsMTAgKzI0NiwxMSBAQCBzdGF0aWMgdm9pZCBuc19jbGllbnRfZHVtcG1lc3NhZ2UobnNfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgY2hhciAqcmVhc29uKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCQkJICAgICAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBib29sIHRjcCk7Ci0gc3RhdGljIGlzY19yZXN1bHRfdCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotLQkJCSAgICAgICBpc2Nfc29ja2V0X3QgKnNvY2spOwotKwkJCSAgICAgICBpc2Nfc29ja2V0X3QgKnNvY2ssIG5zX2NsaWVudF90ICpvbGRjbGllbnQpOwotIHN0YXRpYyBpbmxpbmUgYm9vbAotLWFsbG93ZWQoaXNjX25ldGFkZHJfdCAqYWRkciwgZG5zX25hbWVfdCAqc2lnbmVyLCBpc2NfbmV0YWRkcl90ICplY3NfYWRkciwKLS0JdWludDhfdCBlY3NfYWRkcmxlbiwgdWludDhfdCAqZWNzX3Njb3BlLCBkbnNfYWNsX3QgKmFjbCk7Ci0rYWxsb3dlZChpc2NfbmV0YWRkcl90ICphZGRyLCBkbnNfbmFtZV90ICpzaWduZXIsCi0rCWlzY19uZXRhZGRyX3QgKmVjc19hZGRyLCB1aW50OF90IGVjc19hZGRybGVuLAotKwl1aW50OF90ICplY3Nfc2NvcGUsIGRuc19hY2xfdCAqYWNsKQotIHN0YXRpYyB2b2lkIGNvbXB1dGVfY29va2llKG5zX2NsaWVudF90ICpjbGllbnQsIHVpbnQzMl90IHdoZW4sCi0gCQkJICAgdWludDMyX3Qgbm9uY2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlY3JldCwKLSAJCQkgICBpc2NfYnVmZmVyX3QgKmJ1Zik7Ci1AQCAtNDA1LDggKzQwNiwxMSBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqLwotIAkJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0gCQlJTlNJU1QoY2xpZW50LT5uZXdzdGF0ZSA8PSBOU19DTElFTlRTVEFURV9SRUFEWSk7Ci0tCQlpZiAoY2xpZW50LT5ucmVhZHMgPiAwKQotKwotKwkJaWYgKGNsaWVudC0+bnJlYWRzID4gMCkgewotIAkJCWRuc190Y3Btc2dfY2FuY2VscmVhZCgmY2xpZW50LT50Y3Btc2cpOwotKwkJfQotKwotIAkJaWYgKGNsaWVudC0+bnJlYWRzICE9IDApIHsKLSAJCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWFkIGNhbmNlbCBjb21wbGV0aW9uLiAqLwotIAkJCXJldHVybiAodHJ1ZSk7Ci1AQCAtNDE2LDI1ICs0MjAsNTggQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJZG5zX3RjcG1zZ19pbnZhbGlkYXRlKCZjbGllbnQtPnRjcG1zZyk7Ci0gCQkJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSBmYWxzZTsKLSAJCX0KLSsKLSAJCWlmIChjbGllbnQtPnRjcHNvY2tldCAhPSBOVUxMKSB7Ci0gCQkJQ1RSQUNFKCJjbG9zZXRjcCIpOwotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcHNvY2tldCk7Ci0rCi0rCQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQkJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0rCQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0rCQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotKwkJCX0KLSAJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCX0gZWxzZSB7Ci0gCQkJLyoKLS0JCQkgKiBXZSB3ZW50IG92ZXIgcXVvdGEgd2l0aCB0aGlzIGNsaWVudCwgd2UgZG9uJ3QKLS0JCQkgKiB3YW50IHRvIHJlc3RhcnQgbGlzdGVuaW5nIHVubGVzcyB0aGlzIGlzIHRoZQotLQkJCSAqIGxhc3QgY2xpZW50IG9uIHRoaXMgaW50ZXJmYWNlLCB3aGljaCBpcwotLQkJCSAqIGNoZWNrZWQgbGF0ZXIuCi0rCQkJICogSWYgd2UgYXJlIG5vdCBpbiBhIHBpcGVsaW5lIGdyb3VwLCBvcgotKwkJCSAqIHdlIGFyZSB0aGUgbGFzdCBjbGllbnQgaW4gdGhlIGdyb3VwLCBkZXRhY2ggZnJvbQotKwkJCSAqIHRjcHF1b3RhOyBvdGhlcndpc2UsIHRyYW5zZmVyIHRoZSBxdW90YSB0bwotKwkJCSAqIGFub3RoZXIgY2xpZW50IGluIHRoZSBzYW1lIGdyb3VwLgotIAkJCSAqLwotLQkJCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkpIHsKLS0JCQkJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotKwkJCWlmICghSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspIHx8Ci0rCQkJICAgIChjbGllbnQtPmdsaW5rLm5leHQgPT0gTlVMTCAmJgotKwkJCSAgICAgY2xpZW50LT5nbGluay5wcmV2ID09IE5VTEwpKQotKwkJCXsKLSsJCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQkJfSBlbHNlIGlmIChjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotKwkJCQlJTlNJU1QoY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9PSBOVUxMKTsKLSsJCQkJY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9IGNsaWVudC0+dGNwcXVvdGE7Ci0rCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwkJCX0gZWxzZSB7Ci0rCQkJCUlOU0lTVChjbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID09IE5VTEwpOwotKwkJCQljbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID0gY2xpZW50LT50Y3BxdW90YTsKLSsJCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0gCQkJfQotIAkJfQotIAotKwkJLyoKLSsJCSAqIFVubGluayBmcm9tIHBpcGVsaW5lIGdyb3VwLgotKwkJICovCi0rCQlpZiAoSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspKSB7Ci0rCQkJaWYgKGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0rCQkJCWNsaWVudC0+Z2xpbmsubmV4dC0+Z2xpbmsucHJldiA9Ci0rCQkJCQljbGllbnQtPmdsaW5rLnByZXY7Ci0rCQkJfQotKwkJCWlmIChjbGllbnQtPmdsaW5rLnByZXYgIT0gTlVMTCkgewotKwkJCQljbGllbnQtPmdsaW5rLnByZXYtPmdsaW5rLm5leHQgPQotKwkJCQkJY2xpZW50LT5nbGluay5uZXh0OwotKwkJCX0KLSsJCQlJU0NfTElOS19JTklUKGNsaWVudCwgZ2xpbmspOwotKwkJfQotKwotIAkJaWYgKGNsaWVudC0+dGltZXJzZXQpIHsKLSAJCQkodm9pZClpc2NfdGltZXJfcmVzZXQoY2xpZW50LT50aW1lciwKLSAJCQkJCSAgICAgIGlzY190aW1lcnR5cGVfaW5hY3RpdmUsCi1AQCAtNDU1LDE1ICs0OTIsMTYgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiB0aGF0IGFscmVhZHkuICBDaGVjayB3aGV0aGVyIHRoaXMgY2xpZW50IG5lZWRzIHRvIHJlbWFpbgotIAkJICogYWN0aXZlIGFuZCBmb3JjZSBpdCB0byBnbyBpbmFjdGl2ZSBpZiBub3QuCi0gCQkgKgotLQkJICogVURQIGNsaWVudHMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IFRDUCBjbGllbnRzCi0tCQkgKiBtYXkgcmVtYWluIGFjdGl2ZSBpZiB3ZSBoYXZlIGZld2VyIGFjdGl2ZSBUQ1AgY2xpZW50Ci0tCQkgKiBvYmplY3RzIHRoYW4gZGVzaXJlZCBkdWUgdG8gYW4gZWFybGllciBxdW90YSBleGhhdXN0aW9uLgotKwkJICogVURQIGNsaWVudHMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IGEgVENQIGNsaWVudAotKwkJICogd2lsbCBuZWVkcyB0byByZW1haW4gYWN0aXZlIGlmIG5vIG90aGVyIGNsaWVudHMgYXJlCi0rCQkgKiBsaXN0ZW5pbmcgZm9yIFRDUCByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZSwgdG8KLSsJCSAqIHByZXZlbnQgdGhpcyBpbnRlcmZhY2UgZnJvbSBnb2luZyBub25yZXNwb25zaXZlLgotIAkJICovCi0gCQlpZiAoY2xpZW50LT5tb3J0YWwgJiYgVENQX0NMSUVOVChjbGllbnQpICYmICFuc19nX2NsaWVudHRlc3QpIHsKLSAJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJaWYgKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwY3VycmVudCA8Ci0tCQkJCSAgICBjbGllbnQtPmludGVyZmFjZS0+bnRjcHRhcmdldCkKLSsJCQlpZiAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcgPT0gMCkgewotIAkJCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotKwkJCX0KLSAJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAJCX0KLSAKLUBAIC00NzIsMTUgKzUxMCwxNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqIHF1ZXVlIGZvciByZWN5Y2xpbmcuCi0gCQkgKi8KLSAJCWlmIChjbGllbnQtPm1vcnRhbCkgewotLQkJCWlmIChjbGllbnQtPm5ld3N0YXRlID4gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkUpCi0rCQkJaWYgKGNsaWVudC0+bmV3c3RhdGUgPiBOU19DTElFTlRTVEFURV9JTkFDVElWRSkgewotIAkJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkU7Ci0rCQkJfQotIAkJfQotIAotIAkJaWYgKE5TX0NMSUVOVFNUQVRFX1JFQURZID09IGNsaWVudC0+bmV3c3RhdGUpIHsKLSAJCQlpZiAoVENQX0NMSUVOVChjbGllbnQpKSB7Ci0gCQkJCWNsaWVudF9hY2NlcHQoY2xpZW50KTsKLS0JCQl9IGVsc2UKLSsJCQl9IGVsc2UgewotIAkJCQljbGllbnRfdWRwcmVjdihjbGllbnQpOwotKwkJCX0KLSAJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfTUFYOwotIAkJCXJldHVybiAodHJ1ZSk7Ci0gCQl9Ci1AQCAtNDkyLDQxICs1MzIsNTcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkvKgotIAkJICogV2UgYXJlIHRyeWluZyB0byBlbnRlciB0aGUgaW5hY3RpdmUgc3RhdGUuCi0gCQkgKi8KLS0JCWlmIChjbGllbnQtPm5hY2NlcHRzID4gMCkKLSsJCWlmIChjbGllbnQtPm5hY2NlcHRzID4gMCkgewotIAkJCWlzY19zb2NrZXRfY2FuY2VsKGNsaWVudC0+dGNwbGlzdGVuZXIsIGNsaWVudC0+dGFzaywKLSAJCQkJCSAgSVNDX1NPQ0tDQU5DRUxfQUNDRVBUKTsKLSsJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIGFjY2VwdCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLS0JCWlmICghIChjbGllbnQtPm5hY2NlcHRzID09IDApKQotKwkJaWYgKCEgKGNsaWVudC0+bmFjY2VwdHMgPT0gMCkpIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotKwkJfQotIAotIAkJLyogQWNjZXB0IGNhbmNlbCBpcyBjb21wbGV0ZS4gKi8KLS0JCWlmIChjbGllbnQtPm5yZWN2cyA+IDApCi0rCQlpZiAoY2xpZW50LT5ucmVjdnMgPiAwKSB7Ci0gCQkJaXNjX3NvY2tldF9jYW5jZWwoY2xpZW50LT51ZHBzb2NrZXQsIGNsaWVudC0+dGFzaywKLSAJCQkJCSAgSVNDX1NPQ0tDQU5DRUxfUkVDVik7Ci0rCQl9Ci0gCi0gCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWN2IGNhbmNlbCBjb21wbGV0aW9uLiAqLwotLQkJaWYgKCEgKGNsaWVudC0+bnJlY3ZzID09IDApKQotKwkJaWYgKCEgKGNsaWVudC0+bnJlY3ZzID09IDApKSB7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSsJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIGNvbnRyb2wgZXZlbnQgdG8gYmUgZGVsaXZlcmVkICovCi0tCQlpZiAoY2xpZW50LT5uY3RscyA+IDApCi0rCQlpZiAoY2xpZW50LT5uY3RscyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotLQotLQkJLyogRGVhY3RpdmF0ZSB0aGUgY2xpZW50LiAqLwotLQkJaWYgKGNsaWVudC0+aW50ZXJmYWNlKQotLQkJCW5zX2ludGVyZmFjZV9kZXRhY2goJmNsaWVudC0+aW50ZXJmYWNlKTsKLSsJCX0KLSAKLSAJCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDApOwotIAkJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0tCQlpZiAoY2xpZW50LT50Y3BsaXN0ZW5lciAhPSBOVUxMKQotKwkJaWYgKGNsaWVudC0+dGNwbGlzdGVuZXIgIT0gTlVMTCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLSAKLS0JCWlmIChjbGllbnQtPnVkcHNvY2tldCAhPSBOVUxMKQotKwkJCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotKwkJCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotKwkJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQkJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLSsJCQl9Ci0rCQl9Ci0rCQlpZiAoY2xpZW50LT51ZHBzb2NrZXQgIT0gTlVMTCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnVkcHNvY2tldCk7Ci0rCQl9Ci0gCi0tCQlpZiAoY2xpZW50LT5kaXNwYXRjaCAhPSBOVUxMKQotKwkJLyogRGVhY3RpdmF0ZSB0aGUgY2xpZW50LiAqLwotKwkJaWYgKGNsaWVudC0+aW50ZXJmYWNlICE9IE5VTEwpIHsKLSsJCQluc19pbnRlcmZhY2VfZGV0YWNoKCZjbGllbnQtPmludGVyZmFjZSk7Ci0rCQl9Ci0rCi0rCQlpZiAoY2xpZW50LT5kaXNwYXRjaCAhPSBOVUxMKSB7Ci0gCQkJZG5zX2Rpc3BhdGNoX2RldGFjaCgmY2xpZW50LT5kaXNwYXRjaCk7Ci0rCQl9Ci0gCi0gCQljbGllbnQtPmF0dHJpYnV0ZXMgPSAwOwotIAkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLUBAIC01NTEsMTAgKzYwNywxMyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfTUFYOwotIAkJCWlmICghbnNfZ19jbGllbnR0ZXN0ICYmIG1hbmFnZXIgIT0gTlVMTCAmJgotIAkJCSAgICAhbWFuYWdlci0+ZXhpdGluZykKLSsJCQl7Ci0gCQkJCUlTQ19RVUVVRV9QVVNIKG1hbmFnZXItPmluYWN0aXZlLCBjbGllbnQsCi0gCQkJCQkgICAgICAgaWxpbmspOwotLQkJCWlmIChjbGllbnQtPm5lZWRzaHV0ZG93bikKLSsJCQl9Ci0rCQkJaWYgKGNsaWVudC0+bmVlZHNodXRkb3duKSB7Ci0gCQkJCWlzY190YXNrX3NodXRkb3duKGNsaWVudC0+dGFzayk7Ci0rCQkJfQotIAkJCXJldHVybiAodHJ1ZSk7Ci0gCQl9Ci0gCX0KLUBAIC02NzUsNyArNzM0LDYgQEAgY2xpZW50X3N0YXJ0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAl9Ci0gfQotIAotLQotIC8qJQotICAqIFRoZSBjbGllbnQncyB0YXNrIGhhcyByZWNlaXZlZCBhIHNodXRkb3duIGV2ZW50LgotICAqLwotQEAgLTI1MDcsMTcgKzI1NjUsMTIgQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCS8qCi0gCSAqIFBpcGVsaW5lIFRDUCBxdWVyeSBwcm9jZXNzaW5nLgotIAkgKi8KLS0JaWYgKGNsaWVudC0+bWVzc2FnZS0+b3Bjb2RlICE9IGRuc19vcGNvZGVfcXVlcnkpCi0rCWlmIChjbGllbnQtPm1lc3NhZ2UtPm9wY29kZSAhPSBkbnNfb3Bjb2RlX3F1ZXJ5KSB7Ci0gCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwl9Ci0gCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLS0JCXJlc3VsdCA9IGlzY19xdW90YV9yZXNlcnZlKCZuc19nX3NlcnZlci0+dGNwcXVvdGEpOwotLQkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKQotLQkJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0rCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQkJbnNfY2xpZW50X2xvZyhjbGllbnQsIE5TX0xPR0NBVEVHT1JZX0NMSUVOVCwKLS0JCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19XQVJOSU5HLAotLQkJCQkgICAgICAibm8gbW9yZSBUQ1AgY2xpZW50cyhyZWFkKTogJXMiLAotLQkJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSAJCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAkJfQotIAl9Ci1AQCAtMzA4Nyw2ICszMTQwLDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+ZmlsdGVyX2FhYWEgPSBkbnNfYWFhYV9vazsKLSAjZW5kaWYKLSAJY2xpZW50LT5uZWVkc2h1dGRvd24gPSBuc19nX2NsaWVudHRlc3Q7Ci0rCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0gCi0gCUlTQ19FVkVOVF9JTklUKCZjbGllbnQtPmN0bGV2ZW50LCBzaXplb2YoY2xpZW50LT5jdGxldmVudCksIDAsIE5VTEwsCi0gCQkgICAgICAgTlNfRVZFTlRfQ0xJRU5UQ09OVFJPTCwgY2xpZW50X3N0YXJ0LCBjbGllbnQsIGNsaWVudCwKLUBAIC0zMTAwLDYgKzMxNTQsNyBAQCBjbGllbnRfY3JlYXRlKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19jbGllbnRfdCAqKmNsaWVudHApIHsKLSAJY2xpZW50LT5mb3JtZXJyY2FjaGUuaWQgPSAwOwotIAlJU0NfTElOS19JTklUKGNsaWVudCwgbGluayk7Ci0gCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBybGluayk7Ci0rCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBnbGluayk7Ci0gCUlTQ19RTElOS19JTklUKGNsaWVudCwgaWxpbmspOwotIAljbGllbnQtPmtleXRhZyA9IE5VTEw7Ci0gCWNsaWVudC0+a2V5dGFnX2xlbiA9IDA7Ci1AQCAtMzE5MywxMiArMzI0OCwxOSBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAKLSAJSU5TSVNUKGNsaWVudC0+c3RhdGUgPT0gTlNfQ0xJRU5UU1RBVEVfUkVBRFkpOwotIAotKwkvKgotKwkgKiBUaGUgYWNjZXB0KCkgd2FzIHN1Y2Nlc3NmdWwgYW5kIHdlJ3JlIG5vdyBlc3RhYmxpc2hpbmcgYSBuZXcKLSsJICogY29ubmVjdGlvbi4gV2UgbmVlZCB0byBtYWtlIG5vdGUgb2YgaXQgaW4gdGhlIGNsaWVudCBhbmQKLSsJICogaW50ZXJmYWNlIG9iamVjdHMgc28gY2xpZW50IG9iamVjdHMgY2FuIGRvIHRoZSByaWdodCB0aGluZwotKwkgKiB3aGVuIGdvaW5nIGluYWN0aXZlIGluIGV4aXRfY2hlY2soKSAoc2VlIGNvbW1lbnRzIGluCi0rCSAqIGNsaWVudF9hY2NlcHQoKSBmb3IgZGV0YWlscykuCi0rCSAqLwotIAlJTlNJU1QoY2xpZW50LT5uYWNjZXB0cyA9PSAxKTsKLSAJY2xpZW50LT5uYWNjZXB0cy0tOwotIAotIAlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGN1cnJlbnQgPiAwKTsKLS0JY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BjdXJyZW50LS07Ci0rCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZyA+IDApOwotKwljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZy0tOwotIAlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAKLSAJLyoKLUBAIC0zMjMyLDYgKzMyOTQsOSBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDMpLAotIAkJCSAgICAgICJhY2NlcHQgZmFpbGVkOiAlcyIsCi0gCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQobmV2ZW50LT5yZXN1bHQpKTsKLSsJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLSsJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCX0KLSAJfQotIAotIAlpZiAoZXhpdF9jaGVjayhjbGllbnQpKQotQEAgLTMyNzAsMTggKzMzMzUsMTIgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkgKiBkZW55IHNlcnZpY2UgdG8gbGVnaXRpbWF0ZSBUQ1AgY2xpZW50cy4KLSAJCSAqLwotIAkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLS0JCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJm5zX2dfc2VydmVyLT50Y3BxdW90YSwKLS0JCQkJCSAgJmNsaWVudC0+dGNwcXVvdGEpOwotLQkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKQotLQkJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0tCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLS0JCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotLQkJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX1dBUk5JTkcsCi0tCQkJCSAgICAgICJubyBtb3JlIFRDUCBjbGllbnRzKGFjY2VwdCk6ICVzIiwKLS0JCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0tCQl9IGVsc2UgaWYgKG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyID09IE5VTEwgfHwKLS0JCQkgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLS0JCQkJICAgIG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyKSkgewotKwkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSsJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJgotKwkJICAgIChjbGllbnQtPnNjdHgtPmtlZXByZXNwb3JkZXIgPT0gTlVMTCB8fAotKwkJICAgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLSsJCQkgICAgICBuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlcikpKQotKwkJewotIAkJCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSAJCX0KLSAKLUBAIC0zMjk4LDEyICszMzU3LDgwIEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAotIAlDVFJBQ0UoImFjY2VwdCIpOwotIAotKwkvKgotKwkgKiBUaGUgdGNwcXVvdGEgb2JqZWN0IGNhbiBvbmx5IGJlIHNpbXVsdGFuZW91c2x5IHJlZmVyZW5jZWQgYQotKwkgKiBwcmUtZGVmaW5lZCBudW1iZXIgb2YgdGltZXM7IHRoaXMgaXMgY29uZmlndXJlZCBieSAndGNwLWNsaWVudHMnCi0rCSAqIGluIG5hbWVkLmNvbmYuIElmIHdlIGNhbid0IGF0dGFjaCB0byBpdCBoZXJlLCB0aGF0IG1lYW5zIHRoZSBUQ1AKLSsJICogY2xpZW50IHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLgotKwkgKi8KLSsJcmVzdWx0ID0gaXNjX3F1b3RhX2F0dGFjaCgmY2xpZW50LT5zY3R4LT50Y3BxdW90YSwKLSsJCQkJICAmY2xpZW50LT50Y3BxdW90YSk7Ci0rCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotKwkJCWJvb2wgZXhpdDsKLSsKLSsJCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotKwkJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDEpLAotKwkJCQkgICAgICAibm8gbW9yZSBUQ1AgY2xpZW50czogJXMiLAotKwkJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSsKLSsJCQkvKgotKwkJCSAqIFdlIGhhdmUgZXhjZWVkZWQgdGhlIHN5c3RlbS13aWRlIFRDUCBjbGllbnQKLSsJCQkgKiBxdW90YS4gIEJ1dCwgd2UgY2FuJ3QganVzdCBibG9jayB0aGlzIGFjY2VwdAotKwkJCSAqIGluIGFsbCBjYXNlcywgYmVjYXVzZSBpZiB3ZSBkaWQsIGEgaGVhdnkgVENQCi0rCQkJICogbG9hZCBvbiBvdGhlciBpbnRlcmZhY2VzIG1pZ2h0IGNhdXNlIHRoaXMKLSsJCQkgKiBpbnRlcmZhY2UgdG8gYmUgc3RhcnZlZCwgd2l0aCBubyBjbGllbnRzIGFibGUKLSsJCQkgKiB0byBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zLgotKwkJCSAqCi0rCQkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnQKLSsJCQkgKiBpcyBhbHJlYWR5IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBvbiB0aGlzCi0rCQkJICogaW50ZXJmYWNlICh3aGV0aGVyIGFjY2VwdGluZywgcmVhZGluZywgb3IKLSsJCQkgKiBwcm9jZXNzaW5nKS4KLSsJCQkgKgotKwkJCSAqIElmIHNvLCB0aGVuIGl0J3Mgb2theSAqbm90KiB0byBjYWxsCi0rCQkJICogYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzIGNsaWVudCB0byBnbyBpbmFjdGl2ZQotKwkJCSAqIGFuZCB0aGUgb3RoZXIgb25lIGhhbmRsZSB0aGUgbmV4dCBjb25uZWN0aW9uCi0rCQkJICogd2hlbiBpdCdzIHJlYWR5LgotKwkJCSAqCi0rCQkJICogQnV0IGlmIG5vdCwgdGhlbiB3ZSBuZWVkIHRvIGJlIGEgbGl0dGxlIGJpdAotKwkJCSAqIGZsZXhpYmxlIGFib3V0IHRoZSBxdW90YS4gV2UgYWxsb3cgKm9uZSogZXh0cmEKLSsJCQkgKiBUQ1AgY2xpZW50IHRocm91Z2gsIHRvIGVuc3VyZSB3ZSdyZSBsaXN0ZW5pbmcgb24KLSsJCQkgKiBldmVyeSBpbnRlcmZhY2UuCi0rCQkJICoKLSsJCQkgKiAoTm90ZTogSW4gcHJhY3RpY2UgdGhpcyBtZWFucyB0aGF0IHRoZSAqcmVhbCoKLSsJCQkgKiBUQ1AgY2xpZW50IHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlIG51bWJlcgotKwkJCSAqIG9mIGludGVyZmFjZXMuKQotKwkJCSAqLwotKwkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQlleGl0ID0gKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0rCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCi0rCQkJaWYgKGV4aXQpIHsKLSsJCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotKwkJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci0rCQkJCXJldHVybjsKLSsJCQl9Ci0rCX0KLSsKLSsJLyoKLSsJICogQnkgaW5jcmVtZW50aW5nIHRoZSBpbnRlcmZhY2UncyBudGNwYWN0aXZlIGNvdW50ZXIgd2Ugc2lnbmFsCi0rCSAqIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsaWVudCBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgZm9yIHRoZQotKwkgKiBpbnRlcmZhY2UuCi0rCSAqCi0rCSAqIFdlIGFsc28gbWFrZSBub3RlIG9mIHRoZSBmYWN0IGluIHRoZSBjbGllbnQgaXRzZWxmIHdpdGggdGhlCi0rCSAqIHRjcGFjdGl2ZSBmbGFnLiBUaGlzIGVuc3VyZXMgcHJvcGVyIGFjY291bnRpbmcgYnkgcHJldmVudGluZwotKwkgKiB1cyBmcm9tIGFjY2lkZW50YWxseSBpbmNyZW1lbnRpbmcgb3IgZGVjcmVtZW50aW5nIG50Y3BhY3RpdmUKLSsJICogbW9yZSB0aGFuIG9uY2UgcGVyIGNsaWVudCBvYmplY3QuCi0rCSAqLwotKwlpZiAoIWNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotKwkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0rCX0KLSsKLSAJcmVzdWx0ID0gaXNjX3NvY2tldF9hY2NlcHQoY2xpZW50LT50Y3BsaXN0ZW5lciwgY2xpZW50LT50YXNrLAotIAkJCQkgICBjbGllbnRfbmV3Y29ubiwgY2xpZW50KTsKLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQlVTkVYUEVDVEVEX0VSUk9SKF9fRklMRV9fLCBfX0xJTkVfXywKLS0JCQkJICJpc2Nfc29ja2V0X2FjY2VwdCgpIGZhaWxlZDogJXMiLAotLQkJCQkgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0gCQkvKgotIAkJICogWFhYUlRIICBXaGF0IHNob3VsZCB3ZSBkbz8gIFdlJ3JlIHRyeWluZyB0byBhY2NlcHQgYnV0Ci0gCQkgKgkgICBpdCBkaWRuJ3Qgd29yay4gIElmIHdlIGp1c3QgZ2l2ZSB1cCwgdGhlbiBUQ1AKLUBAIC0zMzExLDEyICszNDM4LDM5IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICoKLSAJCSAqCSAgIEZvciBub3csIHdlIGp1c3QgZ28gaWRsZS4KLSAJCSAqLwotKwkJVU5FWFBFQ1RFRF9FUlJPUihfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkJCSAiaXNjX3NvY2tldF9hY2NlcHQoKSBmYWlsZWQ6ICVzIiwKLSsJCQkJIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotKwkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotKwkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwkJfQotIAkJcmV0dXJuOwotIAl9Ci0rCi0rCS8qCi0rCSAqIFRoZSBjbGllbnQncyAnbmFjY2VwdHMnIGNvdW50ZXIgaW5kaWNhdGVzIHRoYXQgdGhpcyBjbGllbnQgaGFzCi0rCSAqIGNhbGxlZCBhY2NlcHQoKSBhbmQgaXMgd2FpdGluZyBmb3IgYSBuZXcgY29ubmVjdGlvbi4gSXQgc2hvdWxkCi0rCSAqIG5ldmVyIGV4Y2VlZCAxLgotKwkgKi8KLSAJSU5TSVNUKGNsaWVudC0+bmFjY2VwdHMgPT0gMCk7Ci0gCWNsaWVudC0+bmFjY2VwdHMrKzsKLSsKLSsJLyoKLSsJICogVGhlIGludGVyZmFjZSdzICdudGNwYWNjZXB0aW5nJyBjb3VudGVyIGlzIGluY3JlbWVudGVkIHdoZW4KLSsJICogYW55IGNsaWVudCBjYWxscyBhY2NlcHQoKSwgYW5kIGRlY3JlbWVudGVkIGluIGNsaWVudF9uZXdjb25uKCkKLSsJICogb25jZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KLSsJICoKLSsJICogV2hlbiB0aGUgY2xpZW50IG9iamVjdCBpcyBzaHV0dGluZyBkb3duIGFmdGVyIGhhbmRsaW5nIGEgVENQCi0rCSAqIHJlcXVlc3QgKHNlZSBleGl0X2NoZWNrKCkpLCBpdCBsb29rcyB0byBzZWUgd2hldGhlciB0aGlzIHZhbHVlIGlzCi0rCSAqIG5vbi16ZXJvLiBJZiBzbywgdGhhdCBtZWFucyBhbm90aGVyIGNsaWVudCBoYXMgYWxyZWFkeSBjYWxsZWQKLSsJICogYWNjZXB0KCkgYW5kIGlzIHdhaXRpbmcgdG8gZXN0YWJsaXNoIHRoZSBuZXh0IGNvbm5lY3Rpb24sIHdoaWNoCi0rCSAqIG1lYW5zIHRoZSBmaXJzdCBjbGllbnQgaXMgZnJlZSB0byBnbyBpbmFjdGl2ZS4gT3RoZXJ3aXNlLAotKwkgKiB0aGUgZmlyc3QgY2xpZW50IG11c3QgY29tZSBiYWNrIGFuZCBjYWxsIGFjY2VwdCgpIGFnYWluOyB0aGlzCi0rCSAqIGd1YXJhbnRlZXMgdGhlcmUgd2lsbCBhbHdheXMgYmUgYXQgbGVhc3Qgb25lIGNsaWVudCBsaXN0ZW5pbmcKLSsJICogZm9yIG5ldyBUQ1AgY29ubmVjdGlvbnMgb24gZWFjaCBpbnRlcmZhY2UuCi0rCSAqLwotIAlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwY3VycmVudCsrOwotKwljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZysrOwotIAlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSB9Ci0gCi1AQCAtMzM5MCwxMyArMzU0NCwxNCBAQCBuc19jbGllbnRfcmVwbGFjZShuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCXRjcCA9IFRDUF9DTElFTlQoY2xpZW50KTsKLSAJaWYgKHRjcCAmJiBjbGllbnQtPnBpcGVsaW5lZCkgewotIAkJcmVzdWx0ID0gZ2V0X3dvcmtlcihjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotLQkJCQkgICAgY2xpZW50LT50Y3Bzb2NrZXQpOwotKwkJCQkgICAgY2xpZW50LT50Y3Bzb2NrZXQsIGNsaWVudCk7Ci0gCX0gZWxzZSB7Ci0gCQlyZXN1bHQgPSBnZXRfY2xpZW50KGNsaWVudC0+bWFuYWdlciwgY2xpZW50LT5pbnRlcmZhY2UsCi0gCQkJCSAgICBjbGllbnQtPmRpc3BhdGNoLCB0Y3ApOwotIAl9Ci0tCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSsJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQlyZXR1cm4gKHJlc3VsdCk7Ci0rCX0KLSAKLSAJLyoKLSAJICogVGhlIHJlc3BvbnNpYmlsaXR5IGZvciBsaXN0ZW5pbmcgZm9yIG5ldyByZXF1ZXN0cyBpcyBoZXJlYnkKLUBAIC0zNTg1LDYgKzM3NDAsNyBAQCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIAkJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotIAkJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsCi0gCQkJCSAgJmNsaWVudC0+dGNwbGlzdGVuZXIpOwotKwotIAl9IGVsc2UgewotIAkJaXNjX3NvY2tldF90ICpzb2NrOwotIAotQEAgLTM2MDIsNyArMzc1OCw4IEBAIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gfQotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLS1nZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2spCi0rZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotKwkgICBuc19jbGllbnRfdCAqb2xkY2xpZW50KQotIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0gCWlzY19ldmVudF90ICpldjsKLUBAIC0zNjEwLDYgKzM3NjcsNyBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2spCi0gCU1UUkFDRSgiZ2V0IHdvcmtlciIpOwotIAotIAlSRVFVSVJFKG1hbmFnZXIgIT0gTlVMTCk7Ci0rCVJFUVVJUkUob2xkY2xpZW50ICE9IE5VTEwpOwotIAotIAlpZiAobWFuYWdlci0+ZXhpdGluZykKLSAJCXJldHVybiAoSVNDX1JfU0hVVFRJTkdET1dOKTsKLUBAIC0zNjQyLDcgKzM4MDAsMjggQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrKQotIAluc19pbnRlcmZhY2VfYXR0YWNoKGlmcCwgJmNsaWVudC0+aW50ZXJmYWNlKTsKLSAJY2xpZW50LT5uZXdzdGF0ZSA9IGNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9XT1JLSU5HOwotIAlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0JY2xpZW50LT50Y3BxdW90YSA9ICZuc19nX3NlcnZlci0+dGNwcXVvdGE7Ci0rCi0rCS8qCi0rCSAqIFRyYW5zZmVyIFRDUCBxdW90YSB0byB0aGUgbmV3IGNsaWVudC4KLSsJICovCi0rCUlOU0lTVChjbGllbnQtPnRjcHF1b3RhID09IE5VTEwpOwotKwlJTlNJU1Qob2xkY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKTsKLSsJY2xpZW50LT50Y3BxdW90YSA9IG9sZGNsaWVudC0+dGNwcXVvdGE7Ci0rCW9sZGNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwotKwkvKgotKwkgKiBMaW5rIHRvIGEgcGlwZWxpbmUgZ3JvdXAsIGNyZWF0aW5nIGl0IGlmIG5lZWRlZC4KLSsJICovCi0rCWlmICghSVNDX0xJTktfTElOS0VEKG9sZGNsaWVudCwgZ2xpbmspKSB7Ci0rCQlvbGRjbGllbnQtPmdsaW5rLm5leHQgPSBOVUxMOwotKwkJb2xkY2xpZW50LT5nbGluay5wcmV2ID0gTlVMTDsKLSsJfQotKwljbGllbnQtPmdsaW5rLm5leHQgPSBvbGRjbGllbnQtPmdsaW5rLm5leHQ7Ci0rCWNsaWVudC0+Z2xpbmsucHJldiA9IG9sZGNsaWVudDsKLSsJaWYgKG9sZGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0rCQlvbGRjbGllbnQtPmdsaW5rLm5leHQtPmdsaW5rLnByZXYgPSBjbGllbnQ7Ci0rCX0KLSsJb2xkY2xpZW50LT5nbGluay5uZXh0ID0gY2xpZW50OwotIAotIAljbGllbnQtPmRzY3AgPSBpZnAtPmRzY3A7Ci0gCi1AQCAtMzY1Niw2ICszODM1LDEyIEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaykKLSAJKHZvaWQpaXNjX3NvY2tldF9nZXRwZWVybmFtZShjbGllbnQtPnRjcHNvY2tldCwgJmNsaWVudC0+cGVlcmFkZHIpOwotIAljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gdHJ1ZTsKLSAKLSsJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotKwlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsKLSsJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotKwotIAlJTlNJU1QoY2xpZW50LT50Y3Btc2dfdmFsaWQgPT0gZmFsc2UpOwotIAlkbnNfdGNwbXNnX2luaXQoY2xpZW50LT5tY3R4LCBjbGllbnQtPnRjcHNvY2tldCwgJmNsaWVudC0+dGNwbXNnKTsKLSAJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSB0cnVlOwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLWluZGV4IGIyM2E3YjE5MWQuLjFmNzk3M2Y5YzUgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLUBAIC05NCw3ICs5NCw4IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlpbnQJCQludXBkYXRlczsKLSAJaW50CQkJbmN0bHM7Ci0gCWludAkJCXJlZmVyZW5jZXM7Ci0tCWJvb2wJCW5lZWRzaHV0ZG93bjsgCS8qCi0rCWJvb2wJCQl0Y3BhY3RpdmU7Ci0rCWJvb2wJCQluZWVkc2h1dGRvd247IAkvKgotIAkJCQkJCSAqIFVzZWQgYnkgY2xpZW50dGVzdCB0byBnZXQKLSAJCQkJCQkgKiB0aGUgY2xpZW50IHRvIGdvIGZyb20KLSAJCQkJCQkgKiBpbmFjdGl2ZSB0byBmcmVlIHN0YXRlCi1AQCAtMTMwLDkgKzEzMSw5IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlpc2Nfc3RkdGltZV90CQlub3c7Ci0gCWlzY190aW1lX3QJCXRub3c7Ci0gCWRuc19uYW1lX3QJCXNpZ25lcm5hbWU7ICAgLyolPCBbVF1TSUcga2V5IG5hbWUgKi8KLS0JZG5zX25hbWVfdCAqCQlzaWduZXI7CSAgICAgIC8qJTwgTlVMTCBpZiBub3QgdmFsaWQgc2lnICovCi0tCWJvb2wJCW1vcnRhbDsJICAgICAgLyolPCBEaWUgYWZ0ZXIgaGFuZGxpbmcgcmVxdWVzdCAqLwotLQlib29sCQlwaXBlbGluZWQ7ICAgLyolPCBUQ1AgcXVlcmllcyBub3QgaW4gc2VxdWVuY2UgKi8KLSsJZG5zX25hbWVfdAkJKnNpZ25lcjsgICAgICAvKiU8IE5VTEwgaWYgbm90IHZhbGlkIHNpZyAqLwotKwlib29sCQkJbW9ydGFsOwkgICAgICAvKiU8IERpZSBhZnRlciBoYW5kbGluZyByZXF1ZXN0ICovCi0rCWJvb2wJCQlwaXBlbGluZWQ7ICAgLyolPCBUQ1AgcXVlcmllcyBub3QgaW4gc2VxdWVuY2UgKi8KLSAJaXNjX3F1b3RhX3QJCSp0Y3BxdW90YTsKLSAJaXNjX3F1b3RhX3QJCSpyZWN1cnNpb25xdW90YTsKLSAJbnNfaW50ZXJmYWNlX3QJCSppbnRlcmZhY2U7Ci1AQCAtMTQzLDggKzE0NCw4IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlpc2Nfc29ja2FkZHJfdAkJZGVzdHNvY2thZGRyOwotIAotIAlpc2NfbmV0YWRkcl90CQllY3NfYWRkcjsJLyolPCBFRE5TIGNsaWVudCBzdWJuZXQgKi8KLS0JdWludDhfdAkJZWNzX2FkZHJsZW47Ci0tCXVpbnQ4X3QJCWVjc19zY29wZTsKLSsJdWludDhfdAkJCWVjc19hZGRybGVuOwotKwl1aW50OF90CQkJZWNzX3Njb3BlOwotIAotIAlzdHJ1Y3QgaW42X3BrdGluZm8JcGt0aW5mbzsKLSAJaXNjX2RzY3BfdAkJZHNjcDsKLUBAIC0xNjYsNiArMTY3LDcgQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCi0gCUlTQ19MSU5LKG5zX2NsaWVudF90KQlsaW5rOwotIAlJU0NfTElOSyhuc19jbGllbnRfdCkJcmxpbms7Ci0rCUlTQ19MSU5LKG5zX2NsaWVudF90KQlnbGluazsKLSAJSVNDX1FMSU5LKG5zX2NsaWVudF90KQlpbGluazsKLSAJdW5zaWduZWQgY2hhcgkJY29va2llWzhdOwotIAl1aW50MzJfdAkJZXhwaXJlOwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLWluZGV4IDdkMTg4M2UxZTguLjYxYjA4ODI2YTYgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLUBAIC03Nyw5ICs3NywxNCBAQCBzdHJ1Y3QgbnNfaW50ZXJmYWNlIHsKLSAJCQkJCQkvKiU8IFVEUCBkaXNwYXRjaGVycy4gKi8KLSAJaXNjX3NvY2tldF90ICoJCXRjcHNvY2tldDsJLyolPCBUQ1Agc29ja2V0LiAqLwotIAlpc2NfZHNjcF90CQlkc2NwOwkJLyolPCAibGlzdGVuLW9uIiBEU0NQIHZhbHVlICovCi0tCWludAkJCW50Y3B0YXJnZXQ7CS8qJTwgRGVzaXJlZCBudW1iZXIgb2YgY29uY3VycmVudAotLQkJCQkJCSAgICAgVENQIGFjY2VwdHMgKi8KLS0JaW50CQkJbnRjcGN1cnJlbnQ7CS8qJTwgQ3VycmVudCBkaXR0bywgbG9ja2VkICovCi0rCWludAkJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJCQkJCQkgICAgIHJlYWR5IHRvIGFjY2VwdCBuZXcKLSsJCQkJCQkgICAgIFRDUCBjb25uZWN0aW9ucyBvbiB0aGlzCi0rCQkJCQkJICAgICBpbnRlcmZhY2UgKi8KLSsJaW50CQkJbnRjcGFjdGl2ZTsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwkJCQkJCSAgICAgc2VydmljaW5nIFRDUCBxdWVyaWVzCi0rCQkJCQkJICAgICAod2hldGhlciBhY2NlcHRpbmcgb3IKLSsJCQkJCQkgICAgIGNvbm5lY3RlZCkgKi8KLSAJaW50CQkJbnVkcGRpc3BhdGNoOwkvKiU8IE51bWJlciBvZiBVRFAgZGlzcGF0Y2hlcyAqLwotIAluc19jbGllbnRtZ3JfdCAqCWNsaWVudG1ncjsJLyolPCBDbGllbnQgbWFuYWdlci4gKi8KLSAJSVNDX0xJTksobnNfaW50ZXJmYWNlX3QpIGxpbms7Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1pbmRleCA0MTk5MjdiZjU0Li45NTUwOTZlZjQ3IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi0rKysgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLUBAIC0zODYsOCArMzg2LDggQEAgbnNfaW50ZXJmYWNlX2NyZWF0ZShuc19pbnRlcmZhY2VtZ3JfdCAqbWdyLCBpc2Nfc29ja2FkZHJfdCAqYWRkciwKLSAJICogY29ubmVjdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGluIHBhcmFsbGVsIGV2ZW4gdGhvdWdoIHRoZXJlIGlzCi0gCSAqIG9ubHkgb25lIGNsaWVudCBpbml0aWFsbHkuCi0gCSAqLwotLQlpZnAtPm50Y3B0YXJnZXQgPSAxOwotLQlpZnAtPm50Y3BjdXJyZW50ID0gMDsKLSsJaWZwLT5udGNwYWNjZXB0aW5nID0gMDsKLSsJaWZwLT5udGNwYWN0aXZlID0gMDsKLSAJaWZwLT5udWRwZGlzcGF0Y2ggPSAwOwotIAotIAlpZnAtPmRzY3AgPSAtMTsKLUBAIC01MjIsOSArNTIyLDcgQEAgbnNfaW50ZXJmYWNlX2FjY2VwdHRjcChuc19pbnRlcmZhY2VfdCAqaWZwKSB7Ci0gCSAqLwotIAkodm9pZClpc2Nfc29ja2V0X2ZpbHRlcihpZnAtPnRjcHNvY2tldCwgImRhdGFyZWFkeSIpOwotIAotLQlyZXN1bHQgPSBuc19jbGllbnRtZ3JfY3JlYXRlY2xpZW50cyhpZnAtPmNsaWVudG1nciwKLS0JCQkJCSAgICBpZnAtPm50Y3B0YXJnZXQsIGlmcCwKLS0JCQkJCSAgICB0cnVlKTsKLSsJcmVzdWx0ID0gbnNfY2xpZW50bWdyX2NyZWF0ZWNsaWVudHMoaWZwLT5jbGllbnRtZ3IsIDEsIGlmcCwgdHJ1ZSk7Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJVU5FWFBFQ1RFRF9FUlJPUihfX0ZJTEVfXywgX19MSU5FX18sCi0gCQkJCSAiVENQIG5zX2NsaWVudG1ncl9jcmVhdGVjbGllbnRzKCk6ICVzIiwKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMy11c2UtcmVmZXJlbmNlLWNvdW50ZXItZm9yLXBpcGVsaW5lLWdyb3Vwcy12My5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMy11c2UtcmVmZXJlbmNlLWNvdW50ZXItZm9yLXBpcGVsaW5lLWdyb3Vwcy12My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyY2ZiOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDMtdXNlLXJlZmVyZW5jZS1jb3VudGVyLWZvci1waXBlbGluZS1ncm91cHMtdjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzggKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC8zNjZiNGUxXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSAzNjZiNGUxZWRlOGFlZDY5MGU5ODFlMDcxMzdjYjFjYjc3ODc5YzM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP01pY2hhPUM1PTgyPTIwSz1DND05OXBpZT1DNT04ND89IDxtaWNoYWxAaXNjLm9yZz4KLURhdGU6IFRodSwgMTcgSmFuIDIwMTkgMTU6NTM6MzggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzZdIHVzZSByZWZlcmVuY2UgY291bnRlciBmb3IgcGlwZWxpbmUgZ3JvdXBzICh2MykKLQotVHJhY2sgcGlwZWxpbmUgZ3JvdXBzIHVzaW5nIGEgc2hhcmVkIHJlZmVyZW5jZSBjb3VudGVyCi1pbnN0ZWFkIG9mIGEgbGlua2VkIGxpc3QuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDUxM2FmZDMzZWIxN2Q1ZGM0MWEzZjBkMmQzODIwNGVmOGM1ZjZmOTEpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA5NDQ2NjI5YjczMGM1OWM0MjE1ZjA4ZDM3ZmJhZjgxMDI4MmZiY2NiKQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgfCAxNzEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIHwgICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IGE3YjQ5YTBmNzEuLjI3NzY1NmNlZjAgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTI5OSw2ICsyOTksNzUgQEAgbnNfY2xpZW50X3NldHRpbWVvdXQobnNfY2xpZW50X3QgKmNsaWVudCwgdW5zaWduZWQgaW50IHNlY29uZHMpIHsKLSAJfQotIH0KLSAKLSsvKiUKLSsgKiBBbGxvY2F0ZSBhIHJlZmVyZW5jZSBjb3VudGVyIHRoYXQgd2lsbCB0cmFjayB0aGUgbnVtYmVyIG9mIGNsaWVudCBzdHJ1Y3R1cmVzCi0rICogdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQgJ2NsaWVudCcgY2FsbGVkIGFjY2VwdCgpIGZvci4gIFRoaXMgY291bnRlcgotKyAqIHdpbGwgYmUgc2hhcmVkIGJldHdlZW4gYWxsIGNsaWVudCBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFRDUAotKyAqIGNvbm5lY3Rpb24uCi0rICovCi0rc3RhdGljIHZvaWQKLStwaXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSsJaXNjX3JlZmNvdW50X3QgKnJlZnM7Ci0rCi0rCVJFUVVJUkUoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwpOwotKwotKwkvKgotKwkgKiBBIGdsb2JhbCBtZW1vcnkgY29udGV4dCBpcyB1c2VkIGZvciB0aGUgYWxsb2NhdGlvbiBhcyBkaWZmZXJlbnQKLSsJICogY2xpZW50IHN0cnVjdHVyZXMgbWF5IGhhdmUgZGlmZmVyZW50IG1lbW9yeSBjb250ZXh0cyBhc3NpZ25lZCBhbmQgYQotKwkgKiByZWZlcmVuY2UgY291bnRlciBhbGxvY2F0ZWQgaGVyZSBtaWdodCBuZWVkIHRvIGJlIGZyZWVkIGJ5IGEKLSsJICogZGlmZmVyZW50IGNsaWVudC4gIFRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgY2F1c2VkIGJ5IG1lbW9yeSBjb250ZXh0Ci0rCSAqIGNvbnRlbnRpb24gaGVyZSBpcyBleHBlY3RlZCB0byBiZSBuZWdsaWdpYmxlLCBnaXZlbiB0aGF0IHRoaXMgY29kZQotKwkgKiBpcyBvbmx5IGV4ZWN1dGVkIGZvciBUQ1AgY29ubmVjdGlvbnMuCi0rCSAqLwotKwlyZWZzID0gaXNjX21lbV9hbGxvY2F0ZShjbGllbnQtPnNjdHgtPm1jdHgsIHNpemVvZigqcmVmcykpOwotKwlpc2NfcmVmY291bnRfaW5pdChyZWZzLCAxKTsKLSsJY2xpZW50LT5waXBlbGluZV9yZWZzID0gcmVmczsKLSt9Ci0rCi0rLyolCi0rICogSW5jcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0Ci0rICogJ3NvdXJjZScgaXMgYXNzb2NpYXRlZCB3aXRoIGFuZCBwdXQgYSBwb2ludGVyIHRvIHRoYXQgY291bnQgaW4gJ3RhcmdldCcsCi0rICogdGh1cyBhc3NvY2lhdGluZyBpdCB3aXRoIHRoZSBzYW1lIFRDUCBjb25uZWN0aW9uLgotKyAqLwotK3N0YXRpYyB2b2lkCi0rcGlwZWxpbmVfYXR0YWNoKG5zX2NsaWVudF90ICpzb3VyY2UsIG5zX2NsaWVudF90ICp0YXJnZXQpIHsKLSsJaW50IG9sZF9yZWZzOwotKwotKwlSRVFVSVJFKHNvdXJjZS0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLSsJUkVRVUlSRSh0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCk7Ci0rCi0rCW9sZF9yZWZzID0gaXNjX3JlZmNvdW50X2luY3JlbWVudChzb3VyY2UtPnBpcGVsaW5lX3JlZnMpOwotKwlJTlNJU1Qob2xkX3JlZnMgPiAwKTsKLSsJdGFyZ2V0LT5waXBlbGluZV9yZWZzID0gc291cmNlLT5waXBlbGluZV9yZWZzOwotK30KLSsKLSsvKiUKLSsgKiBEZWNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLSsgKiAnY2xpZW50JyBpcyBhc3NvY2lhdGVkIHdpdGguICBJZiB0aGlzIGlzIHRoZSBsYXN0IGNsaWVudCB1c2luZyB0aGlzIFRDUAotKyAqIGNvbm5lY3Rpb24sIGZyZWUgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGFuZCByZXR1cm4gdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4KLSsgKiBmYWxzZS4KLSsgKi8KLStzdGF0aWMgYm9vbAotK3BpcGVsaW5lX2RldGFjaChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0rCWlzY19yZWZjb3VudF90ICpyZWZzOwotKwlpbnQgb2xkX3JlZnM7Ci0rCi0rCVJFUVVJUkUoY2xpZW50LT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotKwotKwlyZWZzID0gY2xpZW50LT5waXBlbGluZV9yZWZzOwotKwljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSBOVUxMOwotKwotKwlvbGRfcmVmcyA9IGlzY19yZWZjb3VudF9kZWNyZW1lbnQocmVmcyk7Ci0rCUlOU0lTVChvbGRfcmVmcyA+IDApOwotKwotKwlpZiAob2xkX3JlZnMgPT0gMSkgewotKwkJaXNjX21lbV9mcmVlKGNsaWVudC0+c2N0eC0+bWN0eCwgcmVmcyk7Ci0rCQlyZXR1cm4gKHRydWUpOwotKwl9Ci0rCi0rCXJldHVybiAoZmFsc2UpOwotK30KLSsKLSAvKiUKLSAgKiBDaGVjayBmb3IgYSBkZWFjdGl2YXRpb24gb3Igc2h1dGRvd24gcmVxdWVzdCBhbmQgdGFrZSBhcHByb3ByaWF0ZQotICAqIGFjdGlvbi4gIFJldHVybnMgdHJ1ZSBpZiBlaXRoZXIgaXMgaW4gcHJvZ3Jlc3M7IGluIHRoaXMgY2FzZQotQEAgLTQyMSw2ICs0OTAsNDAgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSBmYWxzZTsKLSAJCX0KLSAKLSsJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLSsJCQlpZiAoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwgfHwKLSsJCQkgICAgcGlwZWxpbmVfZGV0YWNoKGNsaWVudCkpCi0rCQkJewotKwkJCQkvKgotKwkJCQkgKiBPbmx5IGRldGFjaCBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlmCi0rCQkJCSAqIHRoZXJlIGFyZSBubyBtb3JlIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nCi0rCQkJCSAqIHRoaXMgVENQIGNvbm5lY3Rpb24uCi0rCQkJCSAqCi0rCQkJCSAqIE5vdGUgdGhhdCB3ZSBjaGVjayAncGlwZWxpbmVfcmVmcycgYW5kIG5vdAotKwkJCQkgKiAncGlwZWxpbmVkJyBiZWNhdXNlIGluIHNvbWUgY2FzZXMgKGUuZy4KLSsJCQkJICogYWZ0ZXIgcmVjZWl2aW5nIGEgcmVxdWVzdCB3aXRoIGFuIG9wY29kZQotKwkJCQkgKiBkaWZmZXJlbnQgdGhhbiBRVUVSWSkgJ3BpcGVsaW5lZCcgaXMgc2V0IHRvCi0rCQkJCSAqIGZhbHNlIGFmdGVyIHRoZSByZWZlcmVuY2UgY291bnRlciBnZXRzCi0rCQkJCSAqIGFsbG9jYXRlZCBpbiBwaXBlbGluZV9pbml0KCkgYW5kIHdlIG11c3QKLSsJCQkJICogc3RpbGwgZHJvcCBvdXIgcmVmZXJlbmNlIGFzIGZhaWxpbmcgdG8gZG8gc28KLSsJCQkJICogd291bGQgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgaXRzZWxmCi0rCQkJCSAqIGZyb20gYmVpbmcgZnJlZWQuCi0rCQkJCSAqLwotKwkJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCQl9IGVsc2UgewotKwkJCQkvKgotKwkJCQkgKiBUaGVyZSBhcmUgb3RoZXIgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhpcwotKwkJCQkgKiBUQ1AgY29ubmVjdGlvbiwgc28gd2UgY2Fubm90IGRldGFjaCBmcm9tIHRoZQotKwkJCQkgKiBUQ1AgY2xpZW50IHF1b3RhIHRvIHByZXZlbnQgZXhjZXNzIFRDUAotKwkJCQkgKiBjb25uZWN0aW9ucyBmcm9tIGJlaW5nIGFjY2VwdGVkLiAgSG93ZXZlciwKLSsJCQkJICogdGhpcyBjbGllbnQgc3RydWN0dXJlIG1pZ2h0IGxhdGVyIGJlIHJldXNlZAotKwkJCQkgKiBmb3IgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyBhbmQgdGh1cyBtdXN0Ci0rCQkJCSAqIGhhdmUgaXRzICd0Y3BxdW90YScgZmllbGQgc2V0IHRvIE5VTEwuCi0rCQkJCSAqLwotKwkJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJCQl9Ci0rCQl9Ci0rCi0gCQlpZiAoY2xpZW50LT50Y3Bzb2NrZXQgIT0gTlVMTCkgewotIAkJCUNUUkFDRSgiY2xvc2V0Y3AiKTsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3Bzb2NrZXQpOwotQEAgLTQzNCw0NCArNTM3LDYgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJfQotIAkJfQotIAotLQkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotLQkJCS8qCi0tCQkJICogSWYgd2UgYXJlIG5vdCBpbiBhIHBpcGVsaW5lIGdyb3VwLCBvcgotLQkJCSAqIHdlIGFyZSB0aGUgbGFzdCBjbGllbnQgaW4gdGhlIGdyb3VwLCBkZXRhY2ggZnJvbQotLQkJCSAqIHRjcHF1b3RhOyBvdGhlcndpc2UsIHRyYW5zZmVyIHRoZSBxdW90YSB0bwotLQkJCSAqIGFub3RoZXIgY2xpZW50IGluIHRoZSBzYW1lIGdyb3VwLgotLQkJCSAqLwotLQkJCWlmICghSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspIHx8Ci0tCQkJICAgIChjbGllbnQtPmdsaW5rLm5leHQgPT0gTlVMTCAmJgotLQkJCSAgICAgY2xpZW50LT5nbGluay5wcmV2ID09IE5VTEwpKQotLQkJCXsKLS0JCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQkJfSBlbHNlIGlmIChjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotLQkJCQlJTlNJU1QoY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9PSBOVUxMKTsKLS0JCQkJY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9IGNsaWVudC0+dGNwcXVvdGE7Ci0tCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotLQkJCX0gZWxzZSB7Ci0tCQkJCUlOU0lTVChjbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID09IE5VTEwpOwotLQkJCQljbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID0gY2xpZW50LT50Y3BxdW90YTsKLS0JCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCQkJfQotLQkJfQotLQotLQkJLyoKLS0JCSAqIFVubGluayBmcm9tIHBpcGVsaW5lIGdyb3VwLgotLQkJICovCi0tCQlpZiAoSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspKSB7Ci0tCQkJaWYgKGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0tCQkJCWNsaWVudC0+Z2xpbmsubmV4dC0+Z2xpbmsucHJldiA9Ci0tCQkJCQljbGllbnQtPmdsaW5rLnByZXY7Ci0tCQkJfQotLQkJCWlmIChjbGllbnQtPmdsaW5rLnByZXYgIT0gTlVMTCkgewotLQkJCQljbGllbnQtPmdsaW5rLnByZXYtPmdsaW5rLm5leHQgPQotLQkJCQkJY2xpZW50LT5nbGluay5uZXh0OwotLQkJCX0KLS0JCQlJU0NfTElOS19JTklUKGNsaWVudCwgZ2xpbmspOwotLQkJfQotLQotIAkJaWYgKGNsaWVudC0+dGltZXJzZXQpIHsKLSAJCQkodm9pZClpc2NfdGltZXJfcmVzZXQoY2xpZW50LT50aW1lciwKLSAJCQkJCSAgICAgIGlzY190aW1lcnR5cGVfaW5hY3RpdmUsCi1AQCAtMzEzMCw2ICszMTk1LDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWRuc19uYW1lX2luaXQoJmNsaWVudC0+c2lnbmVybmFtZSwgTlVMTCk7Ci0gCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci0gCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0gCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotIAljbGllbnQtPnJlY3Vyc2lvbnF1b3RhID0gTlVMTDsKLSAJY2xpZW50LT5pbnRlcmZhY2UgPSBOVUxMOwotQEAgLTMxNTQsNyArMzIyMCw2IEBAIGNsaWVudF9jcmVhdGUobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2NsaWVudF90ICoqY2xpZW50cCkgewotIAljbGllbnQtPmZvcm1lcnJjYWNoZS5pZCA9IDA7Ci0gCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBsaW5rKTsKLSAJSVNDX0xJTktfSU5JVChjbGllbnQsIHJsaW5rKTsKLS0JSVNDX0xJTktfSU5JVChjbGllbnQsIGdsaW5rKTsKLSAJSVNDX1FMSU5LX0lOSVQoY2xpZW50LCBpbGluayk7Ci0gCWNsaWVudC0+a2V5dGFnID0gTlVMTDsKLSAJY2xpZW50LT5rZXl0YWdfbGVuID0gMDsKLUBAIC0zMzQxLDYgKzM0MDYsNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCSAgICAgIWFsbG93ZWQoJm5ldGFkZHIsIE5VTEwsIE5VTEwsIDAsIE5VTEwsCi0gCQkJICAgICAgbnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIpKSkKLSAJCXsKLSsJCQlwaXBlbGluZV9pbml0KGNsaWVudCk7Ci0gCQkJY2xpZW50LT5waXBlbGluZWQgPSB0cnVlOwotIAkJfQotIAotQEAgLTM4MDAsMzUgKzM4NjYsMTYgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotIAluc19pbnRlcmZhY2VfYXR0YWNoKGlmcCwgJmNsaWVudC0+aW50ZXJmYWNlKTsKLSAJY2xpZW50LT5uZXdzdGF0ZSA9IGNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9XT1JLSU5HOwotIAlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0KLS0JLyoKLS0JICogVHJhbnNmZXIgVENQIHF1b3RhIHRvIHRoZSBuZXcgY2xpZW50LgotLQkgKi8KLS0JSU5TSVNUKGNsaWVudC0+dGNwcXVvdGEgPT0gTlVMTCk7Ci0tCUlOU0lTVChvbGRjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpOwotLQljbGllbnQtPnRjcHF1b3RhID0gb2xkY2xpZW50LT50Y3BxdW90YTsKLS0Jb2xkY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCi0tCS8qCi0tCSAqIExpbmsgdG8gYSBwaXBlbGluZSBncm91cCwgY3JlYXRpbmcgaXQgaWYgbmVlZGVkLgotLQkgKi8KLS0JaWYgKCFJU0NfTElOS19MSU5LRUQob2xkY2xpZW50LCBnbGluaykpIHsKLS0JCW9sZGNsaWVudC0+Z2xpbmsubmV4dCA9IE5VTEw7Ci0tCQlvbGRjbGllbnQtPmdsaW5rLnByZXYgPSBOVUxMOwotLQl9Ci0tCWNsaWVudC0+Z2xpbmsubmV4dCA9IG9sZGNsaWVudC0+Z2xpbmsubmV4dDsKLS0JY2xpZW50LT5nbGluay5wcmV2ID0gb2xkY2xpZW50OwotLQlpZiAob2xkY2xpZW50LT5nbGluay5uZXh0ICE9IE5VTEwpIHsKLS0JCW9sZGNsaWVudC0+Z2xpbmsubmV4dC0+Z2xpbmsucHJldiA9IGNsaWVudDsKLS0JfQotLQlvbGRjbGllbnQtPmdsaW5rLm5leHQgPSBjbGllbnQ7Ci0rCWNsaWVudC0+dGNwcXVvdGEgPSAmY2xpZW50LT5zY3R4LT50Y3BxdW90YTsKLSAKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotIAljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9UQ1A7Ci0tCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSAJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotIAotKwlwaXBlbGluZV9hdHRhY2gob2xkY2xpZW50LCBjbGllbnQpOwotKwljbGllbnQtPnBpcGVsaW5lZCA9IHRydWU7Ci0rCi0gCWlzY19zb2NrZXRfYXR0YWNoKGlmcC0+dGNwc29ja2V0LCAmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci0gCWlzY19zb2NrZXRfYXR0YWNoKHNvY2ssICZjbGllbnQtPnRjcHNvY2tldCk7Ci0gCWlzY19zb2NrZXRfc2V0bmFtZShjbGllbnQtPnRjcHNvY2tldCwgIndvcmtlci10Y3AiLCBOVUxMKTsKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1pbmRleCAxZjc5NzNmOWM1Li5hZWVkOWNjZGRhIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1AQCAtMTM0LDYgKzEzNCw3IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlkbnNfbmFtZV90CQkqc2lnbmVyOyAgICAgIC8qJTwgTlVMTCBpZiBub3QgdmFsaWQgc2lnICovCi0gCWJvb2wJCQltb3J0YWw7CSAgICAgIC8qJTwgRGllIGFmdGVyIGhhbmRsaW5nIHJlcXVlc3QgKi8KLSAJYm9vbAkJCXBpcGVsaW5lZDsgICAvKiU8IFRDUCBxdWVyaWVzIG5vdCBpbiBzZXF1ZW5jZSAqLwotKwlpc2NfcmVmY291bnRfdAkJKnBpcGVsaW5lX3JlZnM7Ci0gCWlzY19xdW90YV90CQkqdGNwcXVvdGE7Ci0gCWlzY19xdW90YV90CQkqcmVjdXJzaW9ucXVvdGE7Ci0gCW5zX2ludGVyZmFjZV90CQkqaW50ZXJmYWNlOwotQEAgLTE2Nyw3ICsxNjgsNiBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAKLSAJSVNDX0xJTksobnNfY2xpZW50X3QpCWxpbms7Ci0gCUlTQ19MSU5LKG5zX2NsaWVudF90KQlybGluazsKLS0JSVNDX0xJTksobnNfY2xpZW50X3QpCWdsaW5rOwotIAlJU0NfUUxJTksobnNfY2xpZW50X3QpCWlsaW5rOwotIAl1bnNpZ25lZCBjaGFyCQljb29raWVbOF07Ci0gCXVpbnQzMl90CQlleHBpcmU7Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDQtYmV0dGVyLXRjcHF1b3RhLWFjY291bnRpbmctYW5kLWNsaWVudC1tb3J0YWxpdHktY2hlYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNC1iZXR0ZXItdGNwcXVvdGEtYWNjb3VudGluZy1hbmQtY2xpZW50LW1vcnRhbGl0eS1jaGVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzRhYjEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNC1iZXR0ZXItdGNwcXVvdGEtYWNjb3VudGluZy1hbmQtY2xpZW50LW1vcnRhbGl0eS1jaGVjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEyICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvMmFiOGEwOF0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gMmFiOGEwODViM2M2NjZmMjhmMWY5MjI5YmQ2ZWNiNTk5MTViMjZjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2YW4gSHVudCA8ZWFjaEBpc2Mub3JnPgotRGF0ZTogRnJpLCA1IEFwciAyMDE5IDE2OjEyOjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNC82XSBiZXR0ZXIgdGNwcXVvdGEgYWNjb3VudGluZyBhbmQgY2xpZW50IG1vcnRhbGl0eSBjaGVja3MKLQotLSBlbnN1cmUgdGhhdCB0Y3BhY3RpdmUgaXMgY2xlYW5lZCB1cCBjb3JyZWN0bHkgd2hlbiBhY2NlcHQoKSBmYWlscy4KLS0gc2V0ICdjbGllbnQtPnRjcGF0dGFjaGVkJyB3aGVuIHRoZSBjbGllbnQgaXMgYXR0YWNoZWQgdG8gdGhlIHRjcHF1b3RhLgotICBjYXJyeSB0aGlzIHZhbHVlIG9uIHRvIG5ldyBjbGllbnRzIHNoYXJpbmcgdGhlIHNhbWUgcGlwZWxpbmUgZ3JvdXAuCi0gIGRvbid0IGNhbGwgaXNjX3F1b3RhX2RldGFjaCgpIG9uIHRoZSB0Y3BxdW90YSB1bmxlc3MgdGNwYXR0YWNoZWQgaXMKLSAgc2V0LiAgdGhpcyB3YXkgY2xpZW50cyB0aGF0IHdlcmUgYWxsb3dlZCB0byBhY2NlcHQgVENQIGNvbm5lY3Rpb25zCi0gIGRlc3BpdGUgYmVpbmcgb3ZlciBxdW90YSAoYW5kIHRoZXJlZm9yZSwgd2VyZSBuZXZlciBhdHRhY2hlZCB0byB0aGUKLSAgcXVvdGEpIHdpbGwgbm90IGluYWR2ZXJ0ZW50bHkgZGV0YWNoIGZyb20gaXQgYW5kIG1lc3MgdXAgdGhlCi0gIGFjY291bnRpbmcuCi0tIHNpbXBsaWZ5IHRoZSBjb2RlIGZvciB0Y3BxdW90YSBkaXNjb25uZWN0aW9uIGJ5IHVzaW5nIGEgbmV3IGZ1bmN0aW9uCi0gIHRjcHF1b3RhX2Rpc2Nvbm5lY3QoKS4KLS0gYmVmb3JlIGRlY2lkaW5nIHdoZXRoZXIgdG8gcmVqZWN0IGEgbmV3IGNvbm5lY3Rpb24gZHVlIHRvIHF1b3RhCi0gIGV4aGF1c3Rpb24sIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gYWN0aXZlCi0gIGNsaWVudHMuIHByZXZpb3VzbHksIHRoaXMgd2FzICJhdCBsZWFzdCBvbmUiLCBidXQgdGhhdCBjb3VsZCBiZQotICBpbnN1ZmZpY2llbnQgaWYgdGhlcmUgd2FzIG9uZSBvdGhlciBjbGllbnQgaW4gUkVBRElORyBzdGF0ZSAod2FpdGluZwotICBmb3IgbWVzc2FnZXMgb24gYW4gb3BlbiBjb25uZWN0aW9uKSBidXQgbm9uZSBpbiBSRUFEWSAobGlzdGVuaW5nCi0gIGZvciBuZXcgY29ubmVjdGlvbnMpLgotLSBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciBhIFRDUCBjbGllbnQgb2JqZWN0IGNhbiB0byBnbyBpbmFjdGl2ZSwgd2UKLSAgbXVzdCBlbnN1cmUgdGhlcmUgYXJlIGVub3VnaCBvdGhlciBjbGllbnRzIHRvIG1haW50YWluIHNlcnZpY2UKLSAgYWZ0ZXJ3YXJkIC0tIGJvdGggYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyBhbmQgcmVhZGluZy9wcm9jZXNzaW5nIG5ldwotICBxdWVyaWVzLiAgQSBUQ1AgY2xpZW50IGNhbid0IHNodXQgZG93biB1bmxlc3MgYXQgbGVhc3Qgb25lCi0gIGNsaWVudCBpcyBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zIGFuZCAoaW4gdGhlIGNhc2Ugb2YgcGlwZWxpbmVkCi0gIGNsaWVudHMpIGF0IGxlYXN0IG9uZSBhZGRpdGlvbmFsIGNsaWVudCBpcyB3YWl0aW5nIHRvIHJlYWQuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGM3Mzk0NzM4YjI0NDVjMTZmNzI4YTg4Mzk0ODY0ZGQ2MWJhYWQ5MDApCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBlOTY1ZDVmMTFkM2QwZjZkNTk3MDRlNjE0ZmNlY2EyMDkzY2IxODU2KQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgODdkNDMxMTYxNDUwNzc3ZWEwOTM4MjEyMTJhYmZiNTJkNTFiMzZlMykKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgICAgICAgICAgIHwgMjQ0ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCB8ICAgMyArLQotIDIgZmlsZXMgY2hhbmdlZCwgMTUyIGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCAyNzc2NTZjZWYwLi42MWU5NmRkMjhjIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0yNDQsMTMgKzI0NCwxNCBAQCBzdGF0aWMgdm9pZCBjbGllbnRfc3RhcnQoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KTsKLSBzdGF0aWMgdm9pZCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpOwotIHN0YXRpYyB2b2lkIG5zX2NsaWVudF9kdW1wbWVzc2FnZShuc19jbGllbnRfdCAqY2xpZW50LCBjb25zdCBjaGFyICpyZWFzb24pOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLS0JCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKTsKLSsJCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIG5zX2NsaWVudF90ICpvbGRjbGllbnQsCi0rCQkJICAgICAgIGJvb2wgdGNwKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCQkJICAgICAgIGlzY19zb2NrZXRfdCAqc29jaywgbnNfY2xpZW50X3QgKm9sZGNsaWVudCk7Ci0gc3RhdGljIGlubGluZSBib29sCi0gYWxsb3dlZChpc2NfbmV0YWRkcl90ICphZGRyLCBkbnNfbmFtZV90ICpzaWduZXIsCi0gCWlzY19uZXRhZGRyX3QgKmVjc19hZGRyLCB1aW50OF90IGVjc19hZGRybGVuLAotLQl1aW50OF90ICplY3Nfc2NvcGUsIGRuc19hY2xfdCAqYWNsKQotKwl1aW50OF90ICplY3Nfc2NvcGUsIGRuc19hY2xfdCAqYWNsKTsKLSBzdGF0aWMgdm9pZCBjb21wdXRlX2Nvb2tpZShuc19jbGllbnRfdCAqY2xpZW50LCB1aW50MzJfdCB3aGVuLAotIAkJCSAgIHVpbnQzMl90IG5vbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWNyZXQsCi0gCQkJICAgaXNjX2J1ZmZlcl90ICpidWYpOwotQEAgLTMxOSw3ICszMjAsNyBAQCBwaXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogY29udGVudGlvbiBoZXJlIGlzIGV4cGVjdGVkIHRvIGJlIG5lZ2xpZ2libGUsIGdpdmVuIHRoYXQgdGhpcyBjb2RlCi0gCSAqIGlzIG9ubHkgZXhlY3V0ZWQgZm9yIFRDUCBjb25uZWN0aW9ucy4KLSAJICovCi0tCXJlZnMgPSBpc2NfbWVtX2FsbG9jYXRlKGNsaWVudC0+c2N0eC0+bWN0eCwgc2l6ZW9mKCpyZWZzKSk7Ci0rCXJlZnMgPSBpc2NfbWVtX2FsbG9jYXRlKG5zX2dfbWN0eCwgc2l6ZW9mKCpyZWZzKSk7Ci0gCWlzY19yZWZjb3VudF9pbml0KHJlZnMsIDEpOwotIAljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSByZWZzOwotIH0KLUBAIC0zMzEsMTMgKzMzMiwxMyBAQCBwaXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAgKi8KLSBzdGF0aWMgdm9pZAotIHBpcGVsaW5lX2F0dGFjaChuc19jbGllbnRfdCAqc291cmNlLCBuc19jbGllbnRfdCAqdGFyZ2V0KSB7Ci0tCWludCBvbGRfcmVmczsKLSsJaW50IHJlZnM7Ci0gCi0gCVJFUVVJUkUoc291cmNlLT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotIAlSRVFVSVJFKHRhcmdldC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSAKLS0Jb2xkX3JlZnMgPSBpc2NfcmVmY291bnRfaW5jcmVtZW50KHNvdXJjZS0+cGlwZWxpbmVfcmVmcyk7Ci0tCUlOU0lTVChvbGRfcmVmcyA+IDApOwotKwlpc2NfcmVmY291bnRfaW5jcmVtZW50KHNvdXJjZS0+cGlwZWxpbmVfcmVmcywgJnJlZnMpOwotKwlJTlNJU1QocmVmcyA+IDEpOwotIAl0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPSBzb3VyY2UtPnBpcGVsaW5lX3JlZnM7Ci0gfQotIAotQEAgLTM0OSwyNSArMzUwLDUxIEBAIHBpcGVsaW5lX2F0dGFjaChuc19jbGllbnRfdCAqc291cmNlLCBuc19jbGllbnRfdCAqdGFyZ2V0KSB7Ci0gICovCi0gc3RhdGljIGJvb2wKLSBwaXBlbGluZV9kZXRhY2gobnNfY2xpZW50X3QgKmNsaWVudCkgewotLQlpc2NfcmVmY291bnRfdCAqcmVmczsKLS0JaW50IG9sZF9yZWZzOwotKwlpc2NfcmVmY291bnRfdCAqcmVmY291bnQ7Ci0rCWludCByZWZzOwotIAotIAlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLSAKLS0JcmVmcyA9IGNsaWVudC0+cGlwZWxpbmVfcmVmczsKLSsJcmVmY291bnQgPSBjbGllbnQtPnBpcGVsaW5lX3JlZnM7Ci0gCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0gCi0tCW9sZF9yZWZzID0gaXNjX3JlZmNvdW50X2RlY3JlbWVudChyZWZzKTsKLS0JSU5TSVNUKG9sZF9yZWZzID4gMCk7Ci0rCWlzY19yZWZjb3VudF9kZWNyZW1lbnQocmVmY291bnQsIHJlZnMpOwotIAotLQlpZiAob2xkX3JlZnMgPT0gMSkgewotLQkJaXNjX21lbV9mcmVlKGNsaWVudC0+c2N0eC0+bWN0eCwgcmVmcyk7Ci0rCWlmIChyZWZzID09IDApIHsKLSsJCWlzY19tZW1fZnJlZShuc19nX21jdHgsIHJlZnMpOwotIAkJcmV0dXJuICh0cnVlKTsKLSAJfQotIAotIAlyZXR1cm4gKGZhbHNlKTsKLSB9Ci0gCi0rLyoKLSsgKiBEZXRhY2ggYSBjbGllbnQgZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YSBpZiBhcHByb3ByaWF0ZSwgYW5kIHNldAotKyAqIHRoZSBxdW90YSBwb2ludGVyIHRvIE5VTEwuCi0rICoKLSsgKiBTb21ldGltZXMgd2hlbiB0aGUgVENQIGNsaWVudCBxdW90YSBpcyBleGhhdXN0ZWQgYnV0IHRoZXJlIGFyZSBubyBvdGhlcgotKyAqIGNsaWVudHMgc2VydmljaW5nIHRoZSBpbnRlcmZhY2UsIGEgY2xpZW50IHdpbGwgYmUgYWxsb3dlZCB0byBjb250aW51ZQotKyAqIHJ1bm5pbmcgZGVzcGl0ZSBub3QgaGF2aW5nIGJlZW4gYXR0YWNoZWQgdG8gdGhlIHF1b3RhLiBJbiB0aGlzIGV2ZW50LAotKyAqIHRoZSBUQ1AgcXVvdGEgd2FzIG5ldmVyIGF0dGFjaGVkIHRvIHRoZSBjbGllbnQsIHNvIHdoZW4gdGhlIGNsaWVudCAob3IKLSsgKiBhc3NvY2lhdGVkIHBpcGVsaW5lIGdyb3VwKSBzaHV0cyBkb3duLCB0aGUgcXVvdGEgbXVzdCBOT1QgYmUgZGV0YWNoZWQuCi0rICoKLSsgKiBPdGhlcndpc2UsIGlmIHRoZSBxdW90YSBwb2ludGVyIGlzIHNldCwgaXQgc2hvdWxkIGJlIGRldGFjaGVkLiBJZiBub3QKLSsgKiBzZXQgYXQgYWxsLCB3ZSBqdXN0IHJldHVybiB3aXRob3V0IGRvaW5nIGFueXRoaW5nLgotKyAqLwotK3N0YXRpYyB2b2lkCi0rdGNwcXVvdGFfZGlzY29ubmVjdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0rCWlmIChjbGllbnQtPnRjcHF1b3RhID09IE5VTEwpIHsKLSsJCXJldHVybjsKLSsJfQotKwotKwlpZiAoY2xpZW50LT50Y3BhdHRhY2hlZCkgewotKwkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0rCX0gZWxzZSB7Ci0rCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJfQotK30KLSsKLSAvKiUKLSAgKiBDaGVjayBmb3IgYSBkZWFjdGl2YXRpb24gb3Igc2h1dGRvd24gcmVxdWVzdCBhbmQgdGFrZSBhcHByb3ByaWF0ZQotICAqIGFjdGlvbi4gIFJldHVybnMgdHJ1ZSBpZiBlaXRoZXIgaXMgaW4gcHJvZ3Jlc3M7IGluIHRoaXMgY2FzZQotQEAgLTQ5MCwzOCArNTE3LDMxIEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWNsaWVudC0+dGNwbXNnX3ZhbGlkID0gZmFsc2U7Ci0gCQl9Ci0gCi0tCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0tCQkJaWYgKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMIHx8Ci0tCQkJICAgIHBpcGVsaW5lX2RldGFjaChjbGllbnQpKQotLQkJCXsKLS0JCQkJLyoKLS0JCQkJICogT25seSBkZXRhY2ggZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YSBpZgotLQkJCQkgKiB0aGVyZSBhcmUgbm8gbW9yZSBjbGllbnQgc3RydWN0dXJlcyB1c2luZwotLQkJCQkgKiB0aGlzIFRDUCBjb25uZWN0aW9uLgotLQkJCQkgKgotLQkJCQkgKiBOb3RlIHRoYXQgd2UgY2hlY2sgJ3BpcGVsaW5lX3JlZnMnIGFuZCBub3QKLS0JCQkJICogJ3BpcGVsaW5lZCcgYmVjYXVzZSBpbiBzb21lIGNhc2VzIChlLmcuCi0tCQkJCSAqIGFmdGVyIHJlY2VpdmluZyBhIHJlcXVlc3Qgd2l0aCBhbiBvcGNvZGUKLS0JCQkJICogZGlmZmVyZW50IHRoYW4gUVVFUlkpICdwaXBlbGluZWQnIGlzIHNldCB0bwotLQkJCQkgKiBmYWxzZSBhZnRlciB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgZ2V0cwotLQkJCQkgKiBhbGxvY2F0ZWQgaW4gcGlwZWxpbmVfaW5pdCgpIGFuZCB3ZSBtdXN0Ci0tCQkJCSAqIHN0aWxsIGRyb3Agb3VyIHJlZmVyZW5jZSBhcyBmYWlsaW5nIHRvIGRvIHNvCi0tCQkJCSAqIHdvdWxkIHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGl0c2VsZgotLQkJCQkgKiBmcm9tIGJlaW5nIGZyZWVkLgotLQkJCQkgKi8KLS0JCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQkJfSBlbHNlIHsKLS0JCQkJLyoKLS0JCQkJICogVGhlcmUgYXJlIG90aGVyIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoaXMKLS0JCQkJICogVENQIGNvbm5lY3Rpb24sIHNvIHdlIGNhbm5vdCBkZXRhY2ggZnJvbSB0aGUKLS0JCQkJICogVENQIGNsaWVudCBxdW90YSB0byBwcmV2ZW50IGV4Y2VzcyBUQ1AKLS0JCQkJICogY29ubmVjdGlvbnMgZnJvbSBiZWluZyBhY2NlcHRlZC4gIEhvd2V2ZXIsCi0tCQkJCSAqIHRoaXMgY2xpZW50IHN0cnVjdHVyZSBtaWdodCBsYXRlciBiZSByZXVzZWQKLS0JCQkJICogZm9yIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgYW5kIHRodXMgbXVzdAotLQkJCQkgKiBoYXZlIGl0cyAndGNwcXVvdGEnIGZpZWxkIHNldCB0byBOVUxMLgotLQkJCQkgKi8KLS0JCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCQkJfQotKwkJLyoKLSsJCSAqIERldGFjaCBmcm9tIHBpcGVsaW5lIGdyb3VwIGFuZCBmcm9tIFRDUCBjbGllbnQgcXVvdGEsCi0rCQkgKiBpZiBhcHByb3ByaWF0ZS4KLSsJCSAqCi0rCQkgKiAtIElmIG5vIHBpcGVsaW5lIGdyb3VwIGlzIGFjdGl2ZSwgYXR0ZW1wdCB0bwotKwkJICogICBkZXRhY2ggZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YS4KLSsJCSAqCi0rCQkgKiAtIElmIGEgcGlwZWxpbmUgZ3JvdXAgaXMgYWN0aXZlLCBkZXRhY2ggZnJvbSBpdDsKLSsJCSAqICAgaWYgdGhlIHJldHVybiBjb2RlIGluZGljYXRlcyB0aGF0IHRoZXJlIG5vIG1vcmUKLSsJCSAqICAgY2xpZW50cyBsZWZ0IGlmIHRoaXMgcGlwZWxpbmUgZ3JvdXAsIHdlIGFsc28gZGV0YWNoCi0rCQkgKiAgIGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEuCi0rCQkgKgotKwkJICogLSBPdGhlcndpc2Ugd2UgZG9uJ3QgdHJ5IHRvIGRldGFjaCwgd2UganVzdCBzZXQgdGhlCi0rCQkgKiAgIFRDUCBxdW90YSBwb2ludGVyIHRvIE5VTEwgaWYgaXQgd2Fzbid0IE5VTEwgYWxyZWFkeS4KLSsJCSAqCi0rCQkgKiB0Y3BxdW90YV9kaXNjb25uZWN0KCkgd2lsbCBzZXQgdGNwcXVvdGEgdG8gTlVMTCwgZWl0aGVyCi0rCQkgKiBieSBkZXRhY2hpbmcgaXQgb3IgYnkgYXNzaWdubWVudCwgZGVwZW5kaW5nIG9uIHRoZQotKwkJICogbmVlZHMgb2YgdGhlIGNsaWVudC4gU2VlIHRoZSBjb21tZW50cyBvbiB0aGF0IGZ1bmN0aW9uCi0rCQkgKiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KLSsJCSAqLwotKwkJaWYgKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMIHx8IHBpcGVsaW5lX2RldGFjaChjbGllbnQpKSB7Ci0rCQkJdGNwcXVvdGFfZGlzY29ubmVjdChjbGllbnQpOwotKwkJfSBlbHNlIHsKLSsJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0gCQl9Ci0gCi0gCQlpZiAoY2xpZW50LT50Y3Bzb2NrZXQgIT0gTlVMTCkgewotQEAgLTU0NCw4ICs1NjQsNiBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQljbGllbnQtPnRpbWVyc2V0ID0gZmFsc2U7Ci0gCQl9Ci0gCi0tCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotLQotIAkJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IGZhbHNlOwotIAotIAkJY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotQEAgLTU1OCwxOCArNTc2LDI3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICogYWN0aXZlIGFuZCBmb3JjZSBpdCB0byBnbyBpbmFjdGl2ZSBpZiBub3QuCi0gCQkgKgotIAkJICogVURQIGNsaWVudHMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IGEgVENQIGNsaWVudAotLQkJICogd2lsbCBuZWVkcyB0byByZW1haW4gYWN0aXZlIGlmIG5vIG90aGVyIGNsaWVudHMgYXJlCi0tCQkgKiBsaXN0ZW5pbmcgZm9yIFRDUCByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZSwgdG8KLS0JCSAqIHByZXZlbnQgdGhpcyBpbnRlcmZhY2UgZnJvbSBnb2luZyBub25yZXNwb25zaXZlLgotKwkJICogbWF5IG5lZWQgdG8gcmVtYWluIGFjdGl2ZSBhbmQgZ28gaW50byByZWFkeSBzdGF0ZSBpZgotKwkJICogbm8gb3RoZXIgY2xpZW50cyBhcmUgYXZhaWxhYmxlIHRvIGxpc3RlbiBmb3IgVENQCi0rCQkgKiByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZSBvciAoaW4gdGhlIGNhc2Ugb2YgcGlwZWxpbmVkCi0rCQkgKiBjbGllbnRzKSB0byByZWFkIGZvciBhZGRpdGlvbmFsIG1lc3NhZ2VzIG9uIHRoZSBjdXJyZW50Ci0rCQkgKiBjb25uZWN0aW9uLgotIAkJICovCi0gCQlpZiAoY2xpZW50LT5tb3J0YWwgJiYgVENQX0NMSUVOVChjbGllbnQpICYmICFuc19nX2NsaWVudHRlc3QpIHsKLSAJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJaWYgKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID09IDApIHsKLSsJCQlpZiAoKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID09IDAgfHwKLSsJCQkgICAgKGNsaWVudC0+cGlwZWxpbmVkICYmCi0rCQkJICAgICBjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA8IDIpKSAmJgotKwkJCSAgICBjbGllbnQtPm5ld3N0YXRlICE9IE5TX0NMSUVOVFNUQVRFX0ZSRUVEKQotKwkJCXsKLSAJCQkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLSsJCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotIAkJCX0KLSAJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAJCX0KLSAKLSsJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCi0gCQkvKgotIAkJICogV2UgZG9uJ3QgbmVlZCB0aGUgY2xpZW50OyBzZW5kIGl0IHRvIHRoZSBpbmFjdGl2ZQotIAkJICogcXVldWUgZm9yIHJlY3ljbGluZy4KLUBAIC0yNjM0LDYgKzI2NjEsMTggQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAl9Ci0gCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLSsJCS8qCi0rCQkgKiBXZSdyZSBwaXBlbGluaW5nLiBSZXBsYWNlIHRoZSBjbGllbnQ7IHRoZQotKwkJICogdGhlIHJlcGxhY2VtZW50IGNhbiByZWFkIHRoZSBUQ1Agc29ja2V0IGxvb2tpbmcKLSsJCSAqIGZvciBuZXcgbWVzc2FnZXMgYW5kIHRoaXMgY2xpZW50IGNhbiBwcm9jZXNzIHRoZQotKwkJICogY3VycmVudCBtZXNzYWdlIGFzeW5jaHJvbm91c2x5LgotKwkJICoKLSsJCSAqIFRoZXJlIGFyZSBub3cgYXQgbGVhc3QgdGhyZWUgY2xpZW50cyB1c2luZyB0aGlzCi0rCQkgKiBUQ1Agc29ja2V0IC0gb25lIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMsCi0rCQkgKiBvbmUgcmVhZGluZyBhbiBleGlzdGluZyBjb25uZWN0aW9uIHRvIGdldCBuZXcKLSsJCSAqIG1lc3NhZ2VzLCBhbmQgb25lIGFuc3dlcmluZyB0aGUgbWVzc2FnZSBhbHJlYWR5Ci0rCQkgKiByZWNlaXZlZC4KLSsJCSAqLwotIAkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci1AQCAtMzE5Nyw2ICszMjM2LDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0gCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0gCWNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPSBOVUxMOwotIAljbGllbnQtPmludGVyZmFjZSA9IE5VTEw7Ci0gCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSBmYWxzZTsKLUBAIC0zMzU5LDkgKzMzOTksNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDMpLAotIAkJCSAgICAgICJhY2NlcHQgZmFpbGVkOiAlcyIsCi0gCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQobmV2ZW50LT5yZXN1bHQpKTsKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCX0KLSsJCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLSAJfQotIAotIAlpZiAoZXhpdF9jaGVjayhjbGllbnQpKQotQEAgLTM0MDIsNyArMzQ0MCw3IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSAJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0gCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYKLS0JCSAgICAoY2xpZW50LT5zY3R4LT5rZWVwcmVzcG9yZGVyID09IE5VTEwgfHwKLSsJCSAgICAobnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIgPT0gTlVMTCB8fAotIAkJICAgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLSAJCQkgICAgICBuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlcikpKQotIAkJewotQEAgLTM0MjksNyArMzQ2Nyw3IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBpbiBuYW1lZC5jb25mLiBJZiB3ZSBjYW4ndCBhdHRhY2ggdG8gaXQgaGVyZSwgdGhhdCBtZWFucyB0aGUgVENQCi0gCSAqIGNsaWVudCBxdW90YSBoYXMgYmVlbiBleGNlZWRlZC4KLSAJICovCi0tCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJmNsaWVudC0+c2N0eC0+dGNwcXVvdGEsCi0rCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJm5zX2dfc2VydmVyLT50Y3BxdW90YSwKLSAJCQkJICAmY2xpZW50LT50Y3BxdW90YSk7Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJCWJvb2wgZXhpdDsKLUBAIC0zNDQ3LDI3ICszNDg1LDI3IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCSAqIGludGVyZmFjZSB0byBiZSBzdGFydmVkLCB3aXRoIG5vIGNsaWVudHMgYWJsZQotIAkJCSAqIHRvIGFjY2VwdCBuZXcgY29ubmVjdGlvbnMuCi0gCQkJICoKLS0JCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudAotLQkJCSAqIGlzIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMKLSsJCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudHMKLSsJCQkgKiBhcmUgYWxyZWFkeSBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgb24gdGhpcwotIAkJCSAqIGludGVyZmFjZSAod2hldGhlciBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yCi0tCQkJICogcHJvY2Vzc2luZykuCi0tCQkJICoKLS0JCQkgKiBJZiBzbywgdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbAotLQkJCSAqIGFjY2VwdCAtIHdlIGNhbiBsZXQgdGhpcyBjbGllbnQgdG8gZ28gaW5hY3RpdmUKLS0JCQkgKiBhbmQgdGhlIG90aGVyIG9uZSBoYW5kbGUgdGhlIG5leHQgY29ubmVjdGlvbgotLQkJCSAqIHdoZW4gaXQncyByZWFkeS4KLSsJCQkgKiBwcm9jZXNzaW5nKS4gSWYgdGhlcmUgYXJlIGF0IGxlYXN0IHR3bwotKwkJCSAqIChvbmUgcmVhZGluZyBhbmQgb25lIHByb2Nlc3NpbmcgYSByZXF1ZXN0KQotKwkJCSAqIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UKLSsJCQkgKiBjYW4gbGV0IHRoaXMgY2xpZW50IGdvIGluYWN0aXZlIGFuZCBhbm90aGVyCi0rCQkJICogb25lIHdpbGwgcmVzdW1lIGFjY2VwdGluZyB3aGVuIGl0J3MgZG9uZS4KLSAJCQkgKgotLQkJCSAqIEJ1dCBpZiBub3QsIHRoZW4gd2UgbmVlZCB0byBiZSBhIGxpdHRsZSBiaXQKLS0JCQkgKiBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuIFdlIGFsbG93ICpvbmUqIGV4dHJhCi0tCQkJICogVENQIGNsaWVudCB0aHJvdWdoLCB0byBlbnN1cmUgd2UncmUgbGlzdGVuaW5nIG9uCi0tCQkJICogZXZlcnkgaW50ZXJmYWNlLgotKwkJCSAqIElmIHRoZXJlIGFyZW4ndCBlbm91Z2ggYWN0aXZlIGNsaWVudHMgb24gdGhlCi0rCQkJICogaW50ZXJmYWNlLCB0aGVuIHdlIGNhbiBiZSBhIGxpdHRsZSBiaXQKLSsJCQkgKiBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuIFdlJ2xsIGFsbG93ICpvbmUqCi0rCQkJICogZXh0cmEgY2xpZW50IHRocm91Z2ggdG8gZW5zdXJlIHdlJ3JlIGxpc3RlbmluZwotKwkJCSAqIG9uIGV2ZXJ5IGludGVyZmFjZS4KLSAJCQkgKgotLQkJCSAqIChOb3RlOiBJbiBwcmFjdGljZSB0aGlzIG1lYW5zIHRoYXQgdGhlICpyZWFsKgotLQkJCSAqIFRDUCBjbGllbnQgcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUgbnVtYmVyCi0tCQkJICogb2YgaW50ZXJmYWNlcy4pCi0rCQkJICogKE5vdGU6IEluIHByYWN0aWNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVhbAotKwkJCSAqIFRDUCBjbGllbnQgcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUKLSsJCQkgKiBudW1iZXIgb2YgbGlzdGVuaW5nIGludGVyZmFjZXMgcGx1cyAyLikKLSAJCQkgKi8KLSAJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJZXhpdCA9IChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotKwkJCWV4aXQgPSAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAxKTsKLSAJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAKLSAJCQlpZiAoZXhpdCkgewotQEAgLTM0NzUsNiArMzUxMyw5IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci0gCQkJCXJldHVybjsKLSAJCQl9Ci0rCi0rCX0gZWxzZSB7Ci0rCQljbGllbnQtPnRjcGF0dGFjaGVkID0gdHJ1ZTsKLSAJfQotIAotIAkvKgotQEAgLTM1MDcsOSArMzU0OCwxNiBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCVVORVhQRUNURURfRVJST1IoX19GSUxFX18sIF9fTElORV9fLAotIAkJCQkgImlzY19zb2NrZXRfYWNjZXB0KCkgZmFpbGVkOiAlcyIsCi0gCQkJCSBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsKLSsJCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLSsKLSsJCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotKwkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0gCQl9Ci0rCi0gCQlyZXR1cm47Ci0gCX0KLSAKLUBAIC0zNTI3LDEzICszNTc1LDEyIEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBvbmNlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgotIAkgKgotIAkgKiBXaGVuIHRoZSBjbGllbnQgb2JqZWN0IGlzIHNodXR0aW5nIGRvd24gYWZ0ZXIgaGFuZGxpbmcgYSBUQ1AKLS0JICogcmVxdWVzdCAoc2VlIGV4aXRfY2hlY2soKSksIGl0IGxvb2tzIHRvIHNlZSB3aGV0aGVyIHRoaXMgdmFsdWUgaXMKLS0JICogbm9uLXplcm8uIElmIHNvLCB0aGF0IG1lYW5zIGFub3RoZXIgY2xpZW50IGhhcyBhbHJlYWR5IGNhbGxlZAotLQkgKiBhY2NlcHQoKSBhbmQgaXMgd2FpdGluZyB0byBlc3RhYmxpc2ggdGhlIG5leHQgY29ubmVjdGlvbiwgd2hpY2gKLS0JICogbWVhbnMgdGhlIGZpcnN0IGNsaWVudCBpcyBmcmVlIHRvIGdvIGluYWN0aXZlLiBPdGhlcndpc2UsCi0tCSAqIHRoZSBmaXJzdCBjbGllbnQgbXVzdCBjb21lIGJhY2sgYW5kIGNhbGwgYWNjZXB0KCkgYWdhaW47IHRoaXMKLS0JICogZ3VhcmFudGVlcyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhdCBsZWFzdCBvbmUgY2xpZW50IGxpc3RlbmluZwotLQkgKiBmb3IgbmV3IFRDUCBjb25uZWN0aW9ucyBvbiBlYWNoIGludGVyZmFjZS4KLSsJICogcmVxdWVzdCAoc2VlIGV4aXRfY2hlY2soKSksIGlmIHRoaXMgdmFsdWUgaXMgYXQgbGVhc3Qgb25lLCB0aGF0Ci0rCSAqIG1lYW5zIGFub3RoZXIgY2xpZW50IGhhcyBjYWxsZWQgYWNjZXB0KCkgYW5kIGlzIHdhaXRpbmcgdG8KLSsJICogZXN0YWJsaXNoIHRoZSBuZXh0IGNvbm5lY3Rpb24uIFRoYXQgbWVhbnMgdGhlIGNsaWVudCBtYXkgYmUKLSsJICogYmUgZnJlZSB0byBiZWNvbWUgaW5hY3RpdmU7IG90aGVyd2lzZSBpdCBtYXkgbmVlZCB0byBzdGFydAotKwkgKiBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25zIGl0c2VsZiB0byBwcmV2ZW50IHRoZSBpbnRlcmZhY2UKLSsJICogZ29pbmcgZGVhZC4KLSAJICovCi0gCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcrKzsKLUBAIC0zNjEzLDE5ICszNjYwLDE5IEBAIG5zX2NsaWVudF9yZXBsYWNlKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQkJICAgIGNsaWVudC0+dGNwc29ja2V0LCBjbGllbnQpOwotIAl9IGVsc2UgewotIAkJcmVzdWx0ID0gZ2V0X2NsaWVudChjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotLQkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgdGNwKTsKLSsJCQkJICAgIGNsaWVudC0+ZGlzcGF0Y2gsIGNsaWVudCwgdGNwKTsKLSsKLSsJCS8qCi0rCQkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotKwkJICogdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBjbGllbnQuICBUaGVyZWZvcmUsIHRoZSBvbGQgY2xpZW50Ci0rCQkgKiBzaG91bGQgcmVmcmFpbiBmcm9tIGxpc3RlbmluZyBmb3IgYW55IG1vcmUgcmVxdWVzdHMuCi0rCQkgKi8KLSsJCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSAJfQotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCXJldHVybiAocmVzdWx0KTsKLSAJfQotIAotLQkvKgotLQkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotLQkgKiB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGNsaWVudC4gIFRoZXJlZm9yZSwgdGhlIG9sZCBjbGllbnQKLS0JICogc2hvdWxkIHJlZnJhaW4gZnJvbSBsaXN0ZW5pbmcgZm9yIGFueSBtb3JlIHJlcXVlc3RzLgotLQkgKi8KLS0JY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotLQotIAlyZXR1cm4gKElTQ19SX1NVQ0NFU1MpOwotIH0KLSAKLUBAIC0zNzU5LDcgKzM4MDYsNyBAQCBuc19jbGllbnRtZ3JfZGVzdHJveShuc19jbGllbnRtZ3JfdCAqKm1hbmFnZXJwKSB7Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0tCSAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBib29sIHRjcCkKLSsJICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIG5zX2NsaWVudF90ICpvbGRjbGllbnQsIGJvb2wgdGNwKQotIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0gCWlzY19ldmVudF90ICpldjsKLUBAIC0zODAzLDYgKzM4NTAsMTYgQEAgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotIAlpZiAodGNwKSB7Ci0rCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0rCQlpZiAob2xkY2xpZW50ICE9IE5VTEwpIHsKLSsJCQljbGllbnQtPnRjcGF0dGFjaGVkID0gb2xkY2xpZW50LT50Y3BhdHRhY2hlZDsKLSsJCX0KLSsKLSsJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0rCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLSsKLSAJCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1RDUDsKLSAJCWlzY19zb2NrZXRfYXR0YWNoKGlmcC0+dGNwc29ja2V0LAotIAkJCQkgICZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLUBAIC0zODY2LDcgKzM5MjMsOCBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0gCW5zX2ludGVyZmFjZV9hdHRhY2goaWZwLCAmY2xpZW50LT5pbnRlcmZhY2UpOwotIAljbGllbnQtPm5ld3N0YXRlID0gY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1dPUktJTkc7Ci0gCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQljbGllbnQtPnRjcHF1b3RhID0gJmNsaWVudC0+c2N0eC0+dGNwcXVvdGE7Ci0rCWNsaWVudC0+dGNwcXVvdGEgPSAmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhOwotKwljbGllbnQtPnRjcGF0dGFjaGVkID0gb2xkY2xpZW50LT50Y3BhdHRhY2hlZDsKLSAKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotQEAgLTM4ODUsNyArMzk0Myw2IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaywKLSAJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIAljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotIAlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0KLSAJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotIAotIAlJTlNJU1QoY2xpZW50LT50Y3Btc2dfdmFsaWQgPT0gZmFsc2UpOwotQEAgLTM5MTMsNyArMzk3MCw4IEBAIG5zX2NsaWVudG1ncl9jcmVhdGVjbGllbnRzKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCB1bnNpZ25lZCBpbnQgbiwKLSAJTVRSQUNFKCJjcmVhdGVjbGllbnRzIik7Ci0gCi0gCWZvciAoZGlzcCA9IDA7IGRpc3AgPCBuOyBkaXNwKyspIHsKLS0JCXJlc3VsdCA9IGdldF9jbGllbnQobWFuYWdlciwgaWZwLCBpZnAtPnVkcGRpc3BhdGNoW2Rpc3BdLCB0Y3ApOwotKwkJcmVzdWx0ID0gZ2V0X2NsaWVudChtYW5hZ2VyLCBpZnAsIGlmcC0+dWRwZGlzcGF0Y2hbZGlzcF0sCi0rCQkJCSAgICBOVUxMLCB0Y3ApOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCWJyZWFrOwotIAl9Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotaW5kZXggYWVlZDljY2RkYS4uZTJjNDBhY2QyOCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotQEAgLTksOCArOSw2IEBACi0gICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCi0gICovCi0gCi0tLyogJElkOiBjbGllbnQuaCx2IDEuOTYgMjAxMi8wMS8zMSAyMzo0NzozMSB0Ym94IEV4cCAkICovCi0tCi0gI2lmbmRlZiBOQU1FRF9DTElFTlRfSAotICNkZWZpbmUgTkFNRURfQ0xJRU5UX0ggMQotIAotQEAgLTEzNiw2ICsxMzQsNyBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJYm9vbAkJCXBpcGVsaW5lZDsgICAvKiU8IFRDUCBxdWVyaWVzIG5vdCBpbiBzZXF1ZW5jZSAqLwotIAlpc2NfcmVmY291bnRfdAkJKnBpcGVsaW5lX3JlZnM7Ci0gCWlzY19xdW90YV90CQkqdGNwcXVvdGE7Ci0rCWJvb2wJCQl0Y3BhdHRhY2hlZDsKLSAJaXNjX3F1b3RhX3QJCSpyZWN1cnNpb25xdW90YTsKLSAJbnNfaW50ZXJmYWNlX3QJCSppbnRlcmZhY2U7Ci0gCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDUtcmVmYWN0b3ItdGNwcXVvdGEtYW5kLXBpcGVsaW5lLXJlZnMtYWxsb3ctc3BlY2lhbC1jYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNS1yZWZhY3Rvci10Y3BxdW90YS1hbmQtcGlwZWxpbmUtcmVmcy1hbGxvdy1zcGVjaWFsLWNhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODdlNzViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNS1yZWZhY3Rvci10Y3BxdW90YS1hbmQtcGlwZWxpbmUtcmVmcy1hbGxvdy1zcGVjaWFsLWNhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTExICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvYzQ3Y2NmNl0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gYzQ3Y2NmNjMwZjE0NzM3ODU2OGIzM2U4ZmRiN2I3NTRmMjI4YzM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2YW4gSHVudCA8ZWFjaEBpc2Mub3JnPgotRGF0ZTogRnJpLCA1IEFwciAyMDE5IDE2OjI2OjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNS82XSByZWZhY3RvciB0Y3BxdW90YSBhbmQgcGlwZWxpbmUgcmVmczsgYWxsb3cgc3BlY2lhbC1jYXNlCi0gb3ZlcnJ1biBpbiBpc2NfcXVvdGEKLQotLSBpZiB0aGUgVENQIHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkIGJ1dCB0aGVyZSBhcmUgbm8gY2xpZW50cyBsaXN0ZW5pbmcKLSAgZm9yIG5ldyBjb25uZWN0aW9ucyBvbiB0aGUgaW50ZXJmYWNlLCB3ZSBjYW4gbm93IGZvcmNlIGF0dGFjaG1lbnQgdG8gdGhlCi0gIHF1b3RhIHVzaW5nIGlzY19xdW90YV9mb3JjZSgpLCBpbnN0ZWFkIG9mIGNhcnJ5aW5nIG9uIHdpdGggdGhlIHF1b3RhIG5vdAotICBhdHRhY2hlZC4KLS0gdGhlIFRDUCBjbGllbnQgcXVvdGEgaXMgbm93IHJlZmVyZW5jZWQgdmlhIGEgcmVmZXJlbmNlLWNvdW50ZWQKLSAgJ25zX3RjcGNvbm4nIG9iamVjdCwgb25lIG9mIHdoaWNoIGlzIGNyZWF0ZWQgd2hlbmV2ZXIgYSBjbGllbnQgYmVnaW5zCi0gIGxpc3RlbmluZyBmb3IgbmV3IGNvbm5lY3Rpb25zLCBhbmQgYXR0YWNoZWQgdG8gYnkgbWVtYmVycyBvZiB0aGF0Ci0gIGNsaWVudCdzIHBpcGVsaW5lIGdyb3VwLiB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgdGNwY29ubgotICBvYmplY3QgaXMgZGV0YWNoZWQsIGl0IGlzIGZyZWVkIGFuZCB0aGUgVENQIHF1b3RhIHNsb3QgaXMgcmVsZWFzZWQuCi0tIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uIGJ5IGFkZGluZyBtYXJrX3RjcF9hY3RpdmUoKSBmdW5jdGlvbi4KLS0gY29udmVydCBjb3VudGVycyB0byBhdG9taWMuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDdlODIyMjM3OGNhMjRmMTMwMmEwYzFjNjM4NTY1MDUwYWIwNDY4MWIpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA0OTM5NDUxMjc1NzIyYmZkYTQ5MGVhODZjYTEzZTg0ZjZiYzcxZTQ2KQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTNmN2M5MThiODcyMGQ4OTA0MDhmNjc4YmQ3M2MyMGU2MzQ1MzlkOSkKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgICAgICAgICAgICAgICAgIHwgNDQ0ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCAgICAgICB8ICAxMiArLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIHwgICA2ICstCi0gYmluL25hbWVkL2ludGVyZmFjZW1nci5jICAgICAgICAgICAgICAgfCAgIDEgKwotIGxpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaCAgICAgICAgICAgIHwgICA3ICsKLSBsaWIvaXNjL3F1b3RhLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMyArLQotIGxpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbiAgICAgICAgICAgIHwgICAxICsKLSA3IGZpbGVzIGNoYW5nZWQsIDIzNiBpbnNlcnRpb25zKCspLCAyNjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IDYxZTk2ZGQyOGMuLmQ4MjZhYjMyYmYgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTI0NCw4ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBjbGllbnRfc3RhcnQoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KTsKLSBzdGF0aWMgdm9pZCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpOwotIHN0YXRpYyB2b2lkIG5zX2NsaWVudF9kdW1wbWVzc2FnZShuc19jbGllbnRfdCAqY2xpZW50LCBjb25zdCBjaGFyICpyZWFzb24pOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLS0JCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIG5zX2NsaWVudF90ICpvbGRjbGllbnQsCi0tCQkJICAgICAgIGJvb2wgdGNwKTsKLSsJCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCQkJICAgICAgIGlzY19zb2NrZXRfdCAqc29jaywgbnNfY2xpZW50X3QgKm9sZGNsaWVudCk7Ci0gc3RhdGljIGlubGluZSBib29sCi1AQCAtMzAxLDE2ICszMDAsMzIgQEAgbnNfY2xpZW50X3NldHRpbWVvdXQobnNfY2xpZW50X3QgKmNsaWVudCwgdW5zaWduZWQgaW50IHNlY29uZHMpIHsKLSB9Ci0gCi0gLyolCi0tICogQWxsb2NhdGUgYSByZWZlcmVuY2UgY291bnRlciB0aGF0IHdpbGwgdHJhY2sgdGhlIG51bWJlciBvZiBjbGllbnQgc3RydWN0dXJlcwotLSAqIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0ICdjbGllbnQnIGNhbGxlZCBhY2NlcHQoKSBmb3IuICBUaGlzIGNvdW50ZXIKLS0gKiB3aWxsIGJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBjbGllbnQgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBUQ1AKLS0gKiBjb25uZWN0aW9uLgotKyAqIEFsbG9jYXRlIGEgcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0IHRoYXQgd2lsbCBtYWludGFpbiBhIHNpbmdsZSBwb2ludGVyIHRvCi0rICogdGhlIChhbHNvIHJlZmVyZW5jZS1jb3VudGVkKSBUQ1AgY2xpZW50IHF1b3RhLCBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlCi0rICogY2xpZW50cyBwcm9jZXNzaW5nIHF1ZXJpZXMgb24gYSBzaW5nbGUgVENQIGNvbm5lY3Rpb24sIHNvIHRoYXQgYWxsCi0rICogY2xpZW50cyBzaGFyaW5nIHRoZSBvbmUgc29ja2V0IHdpbGwgdG9nZXRoZXIgY29uc3VtZSBvbmx5IG9uZSBzbG90IGluCi0rICogdGhlICd0Y3AtY2xpZW50cycgcXVvdGEuCi0gICovCi0tc3RhdGljIHZvaWQKLS1waXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLS0JaXNjX3JlZmNvdW50X3QgKnJlZnM7Ci0rc3RhdGljIGlzY19yZXN1bHRfdAotK3RjcGNvbm5faW5pdChuc19jbGllbnRfdCAqY2xpZW50LCBib29sIGZvcmNlKSB7Ci0rCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0rCWlzY19xdW90YV90ICpxdW90YSA9IE5VTEw7Ci0rCW5zX3RjcGNvbm5fdCAqdGNvbm4gPSBOVUxMOwotIAotLQlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSsJUkVRVUlSRShjbGllbnQtPnRjcGNvbm4gPT0gTlVMTCk7Ci0rCi0rCS8qCi0rCSAqIFRyeSB0byBhdHRhY2ggdG8gdGhlIHF1b3RhIGZpcnN0LCBzbyB3ZSB3b24ndCBwb2ludGxlc3NseQotKwkgKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgdGNwY29ubiBvYmplY3QgaWYgd2UgY2FuJ3QgZ2V0IG9uZS4KLSsJICovCi0rCWlmIChmb3JjZSkgewotKwkJcmVzdWx0ID0gaXNjX3F1b3RhX2ZvcmNlKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsICZxdW90YSk7Ci0rCX0gZWxzZSB7Ci0rCQlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsICZxdW90YSk7Ci0rCX0KLSsJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0rCQlyZXR1cm4gKHJlc3VsdCk7Ci0rCX0KLSAKLSAJLyoKLSAJICogQSBnbG9iYWwgbWVtb3J5IGNvbnRleHQgaXMgdXNlZCBmb3IgdGhlIGFsbG9jYXRpb24gYXMgZGlmZmVyZW50Ci1AQCAtMzIwLDc4ICszMzUsODAgQEAgcGlwZWxpbmVfaW5pdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCSAqIGNvbnRlbnRpb24gaGVyZSBpcyBleHBlY3RlZCB0byBiZSBuZWdsaWdpYmxlLCBnaXZlbiB0aGF0IHRoaXMgY29kZQotIAkgKiBpcyBvbmx5IGV4ZWN1dGVkIGZvciBUQ1AgY29ubmVjdGlvbnMuCi0gCSAqLwotLQlyZWZzID0gaXNjX21lbV9hbGxvY2F0ZShuc19nX21jdHgsIHNpemVvZigqcmVmcykpOwotLQlpc2NfcmVmY291bnRfaW5pdChyZWZzLCAxKTsKLS0JY2xpZW50LT5waXBlbGluZV9yZWZzID0gcmVmczsKLSsJdGNvbm4gPSBpc2NfbWVtX2FsbG9jYXRlKG5zX2dfbWN0eCwgc2l6ZW9mKCp0Y29ubikpOwotKwotKwlpc2NfcmVmY291bnRfaW5pdCgmdGNvbm4tPnJlZnMsIDEpOwotKwl0Y29ubi0+dGNwcXVvdGEgPSBxdW90YTsKLSsJcXVvdGEgPSBOVUxMOwotKwl0Y29ubi0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCi0rCWNsaWVudC0+dGNwY29ubiA9IHRjb25uOwotKwotKwlyZXR1cm4gKElTQ19SX1NVQ0NFU1MpOwotIH0KLSAKLSAvKiUKLS0gKiBJbmNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLS0gKiAnc291cmNlJyBpcyBhc3NvY2lhdGVkIHdpdGggYW5kIHB1dCBhIHBvaW50ZXIgdG8gdGhhdCBjb3VudCBpbiAndGFyZ2V0JywKLS0gKiB0aHVzIGFzc29jaWF0aW5nIGl0IHdpdGggdGhlIHNhbWUgVENQIGNvbm5lY3Rpb24uCi0rICogSW5jcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHNoYXJpbmcgdGhlIFRDUCBjb25uZWN0aW9uCi0rICogdGhhdCAnc291cmNlJyBpcyBhc3NvY2lhdGVkIHdpdGg7IGFkZCBhIHBvaW50ZXIgdG8gdGhlIHNhbWUgdGNwY29ubgotKyAqIHRvICd0YXJnZXQnLCB0aHVzIGFzc29jaWF0aW5nIGl0IHdpdGggdGhlIHNhbWUgVENQIGNvbm5lY3Rpb24uCi0gICovCi0gc3RhdGljIHZvaWQKLS1waXBlbGluZV9hdHRhY2gobnNfY2xpZW50X3QgKnNvdXJjZSwgbnNfY2xpZW50X3QgKnRhcmdldCkgewotK3RjcGNvbm5fYXR0YWNoKG5zX2NsaWVudF90ICpzb3VyY2UsIG5zX2NsaWVudF90ICp0YXJnZXQpIHsKLSAJaW50IHJlZnM7Ci0gCi0tCVJFUVVJUkUoc291cmNlLT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotLQlSRVFVSVJFKHRhcmdldC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSsJUkVRVUlSRShzb3VyY2UtPnRjcGNvbm4gIT0gTlVMTCk7Ci0rCVJFUVVJUkUodGFyZ2V0LT50Y3Bjb25uID09IE5VTEwpOwotKwlSRVFVSVJFKHNvdXJjZS0+dGNwY29ubi0+cGlwZWxpbmVkKTsKLSAKLS0JaXNjX3JlZmNvdW50X2luY3JlbWVudChzb3VyY2UtPnBpcGVsaW5lX3JlZnMsICZyZWZzKTsKLSsJaXNjX3JlZmNvdW50X2luY3JlbWVudCgmc291cmNlLT50Y3Bjb25uLT5yZWZzLCAmcmVmcyk7Ci0gCUlOU0lTVChyZWZzID4gMSk7Ci0tCXRhcmdldC0+cGlwZWxpbmVfcmVmcyA9IHNvdXJjZS0+cGlwZWxpbmVfcmVmczsKLSsJdGFyZ2V0LT50Y3Bjb25uID0gc291cmNlLT50Y3Bjb25uOwotIH0KLSAKLSAvKiUKLS0gKiBEZWNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLSsgKiBEZWNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgc2hhcmluZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdAotICAqICdjbGllbnQnIGlzIGFzc29jaWF0ZWQgd2l0aC4gIElmIHRoaXMgaXMgdGhlIGxhc3QgY2xpZW50IHVzaW5nIHRoaXMgVENQCi0tICogY29ubmVjdGlvbiwgZnJlZSB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgYW5kIHJldHVybiB0cnVlOyBvdGhlcndpc2UsIHJldHVybgotLSAqIGZhbHNlLgotKyAqIGNvbm5lY3Rpb24sIHdlIGRldGFjaCBmcm9tIHRoZSBUQ1AgcXVvdGEgYW5kIGZyZWUgdGhlIHRjcGNvbm4KLSsgKiBvYmplY3QuIEVpdGhlciB3YXksIGNsaWVudC0+dGNwY29ubiBpcyBzZXQgdG8gTlVMTC4KLSAgKi8KLS1zdGF0aWMgYm9vbAotLXBpcGVsaW5lX2RldGFjaChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0tCWlzY19yZWZjb3VudF90ICpyZWZjb3VudDsKLStzdGF0aWMgdm9pZAotK3RjcGNvbm5fZGV0YWNoKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSsJbnNfdGNwY29ubl90ICp0Y29ubiA9IE5VTEw7Ci0gCWludCByZWZzOwotIAotLQlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLS0KLS0JcmVmY291bnQgPSBjbGllbnQtPnBpcGVsaW5lX3JlZnM7Ci0tCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0rCVJFUVVJUkUoY2xpZW50LT50Y3Bjb25uICE9IE5VTEwpOwotIAotLQlpc2NfcmVmY291bnRfZGVjcmVtZW50KHJlZmNvdW50LCByZWZzKTsKLSsJdGNvbm4gPSBjbGllbnQtPnRjcGNvbm47Ci0rCWNsaWVudC0+dGNwY29ubiA9IE5VTEw7Ci0gCi0rCWlzY19yZWZjb3VudF9kZWNyZW1lbnQoJnRjb25uLT5yZWZzLCAmcmVmcyk7Ci0gCWlmIChyZWZzID09IDApIHsKLS0JCWlzY19tZW1fZnJlZShuc19nX21jdHgsIHJlZnMpOwotLQkJcmV0dXJuICh0cnVlKTsKLSsJCWlzY19xdW90YV9kZXRhY2goJnRjb25uLT50Y3BxdW90YSk7Ci0rCQlpc2NfbWVtX2ZyZWUobnNfZ19tY3R4LCB0Y29ubik7Ci0gCX0KLS0KLS0JcmV0dXJuIChmYWxzZSk7Ci0gfQotIAotLS8qCi0tICogRGV0YWNoIGEgY2xpZW50IGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEgaWYgYXBwcm9wcmlhdGUsIGFuZCBzZXQKLS0gKiB0aGUgcXVvdGEgcG9pbnRlciB0byBOVUxMLgotLSAqCi0tICogU29tZXRpbWVzIHdoZW4gdGhlIFRDUCBjbGllbnQgcXVvdGEgaXMgZXhoYXVzdGVkIGJ1dCB0aGVyZSBhcmUgbm8gb3RoZXIKLS0gKiBjbGllbnRzIHNlcnZpY2luZyB0aGUgaW50ZXJmYWNlLCBhIGNsaWVudCB3aWxsIGJlIGFsbG93ZWQgdG8gY29udGludWUKLS0gKiBydW5uaW5nIGRlc3BpdGUgbm90IGhhdmluZyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBxdW90YS4gSW4gdGhpcyBldmVudCwKLS0gKiB0aGUgVENQIHF1b3RhIHdhcyBuZXZlciBhdHRhY2hlZCB0byB0aGUgY2xpZW50LCBzbyB3aGVuIHRoZSBjbGllbnQgKG9yCi0tICogYXNzb2NpYXRlZCBwaXBlbGluZSBncm91cCkgc2h1dHMgZG93biwgdGhlIHF1b3RhIG11c3QgTk9UIGJlIGRldGFjaGVkLgotKy8qJQotKyAqIE1hcmsgYSBjbGllbnQgYXMgYWN0aXZlIGFuZCBpbmNyZW1lbnQgdGhlIGludGVyZmFjZSdzICdudGNwYWN0aXZlJwotKyAqIGNvdW50ZXIsIGFzIGEgc2lnbmFsIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsaWVudCBzZXJ2aWNpbmcKLSsgKiBUQ1AgcXVlcmllcyBmb3IgdGhlIGludGVyZmFjZS4gSWYgd2UgcmVhY2ggdGhlIFRDUCBjbGllbnQgcXVvdGEgYXQKLSsgKiBzb21lIHBvaW50LCB0aGlzIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIHF1b3RhIG92ZXJydW4KLSsgKiBzaG91bGQgYmUgcGVybWl0dGVkLgotICAqCi0tICogT3RoZXJ3aXNlLCBpZiB0aGUgcXVvdGEgcG9pbnRlciBpcyBzZXQsIGl0IHNob3VsZCBiZSBkZXRhY2hlZC4gSWYgbm90Ci0tICogc2V0IGF0IGFsbCwgd2UganVzdCByZXR1cm4gd2l0aG91dCBkb2luZyBhbnl0aGluZy4KLSsgKiBNYXJraW5nIHRoZSBjbGllbnQgYWN0aXZlIHdpdGggdGhlICd0Y3BhY3RpdmUnIGZsYWcgZW5zdXJlcyBwcm9wZXIKLSsgKiBhY2NvdW50aW5nLCBieSBwcmV2ZW50aW5nIHVzIGZyb20gaW5jcmVtZW50aW5nIG9yIGRlY3JlbWVudGluZwotKyAqICdudGNwYWN0aXZlJyBtb3JlIHRoYW4gb25jZSBwZXIgY2xpZW50LgotICAqLwotIHN0YXRpYyB2b2lkCi0tdGNwcXVvdGFfZGlzY29ubmVjdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0tCWlmIChjbGllbnQtPnRjcHF1b3RhID09IE5VTEwpIHsKLS0JCXJldHVybjsKLS0JfQotLQotLQlpZiAoY2xpZW50LT50Y3BhdHRhY2hlZCkgewotLQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0tCX0gZWxzZSB7Ci0tCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSttYXJrX3RjcF9hY3RpdmUobnNfY2xpZW50X3QgKmNsaWVudCwgYm9vbCBhY3RpdmUpIHsKLSsJaWYgKGFjdGl2ZSAmJiAhY2xpZW50LT50Y3BhY3RpdmUpIHsKLSsJCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDEpOwotKwkJY2xpZW50LT50Y3BhY3RpdmUgPSBhY3RpdmU7Ci0rCX0gZWxzZSBpZiAoIWFjdGl2ZSAmJiBjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJdWludDMyX3Qgb2xkID0KLSsJCQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAtMSk7Ci0rCQlJTlNJU1Qob2xkID4gMCk7Ci0rCQljbGllbnQtPnRjcGFjdGl2ZSA9IGFjdGl2ZTsKLSAJfQotIH0KLSAKLUBAIC00ODQsNyArNTAxLDggQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLSAKLSAJCWlmIChOU19DTElFTlRTVEFURV9SRUFESU5HID09IGNsaWVudC0+bmV3c3RhdGUpIHsKLS0JCQlpZiAoIWNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCQkJSU5TSVNUKGNsaWVudC0+dGNwY29ubiAhPSBOVUxMKTsKLSsJCQlpZiAoIWNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkKSB7Ci0gCQkJCWNsaWVudF9yZWFkKGNsaWVudCk7Ci0gCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9NQVg7Ci0gCQkJCXJldHVybiAodHJ1ZSk7IC8qIFdlJ3JlIGRvbmUuICovCi1AQCAtNTA3LDggKzUyNSw4IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWRuc190Y3Btc2dfY2FuY2VscmVhZCgmY2xpZW50LT50Y3Btc2cpOwotIAkJfQotIAotLQkJaWYgKGNsaWVudC0+bnJlYWRzICE9IDApIHsKLS0JCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWFkIGNhbmNlbCBjb21wbGV0aW9uLiAqLwotKwkJLyogU3RpbGwgd2FpdGluZyBmb3IgcmVhZCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLSsJCWlmIChjbGllbnQtPm5yZWFkcyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotIAotQEAgLTUxOCw0MyArNTM2LDQ1IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJfQotIAotIAkJLyoKLS0JCSAqIERldGFjaCBmcm9tIHBpcGVsaW5lIGdyb3VwIGFuZCBmcm9tIFRDUCBjbGllbnQgcXVvdGEsCi0tCQkgKiBpZiBhcHByb3ByaWF0ZS4KLSsJCSAqIFNvb24gdGhlIGNsaWVudCB3aWxsIGJlIHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBUQ1AKLSsJCSAqIGNvbm5lY3Rpb24gb3IgVURQIHJlcXVlc3QsIGJ1dCB3ZSBtYXkgaGF2ZSBlbm91Z2gKLSsJCSAqIGNsaWVudHMgZG9pbmcgdGhhdCBhbHJlYWR5LiAgQ2hlY2sgd2hldGhlciB0aGlzIGNsaWVudAotKwkJICogbmVlZHMgdG8gcmVtYWluIGFjdGl2ZSBhbmQgYWxsb3cgaXQgZ28gaW5hY3RpdmUgaWYKLSsJCSAqIG5vdC4KLSAJCSAqCi0tCQkgKiAtIElmIG5vIHBpcGVsaW5lIGdyb3VwIGlzIGFjdGl2ZSwgYXR0ZW1wdCB0bwotLQkJICogICBkZXRhY2ggZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YS4KLSsJCSAqIFVEUCBjbGllbnRzIGFsd2F5cyBnbyBpbmFjdGl2ZSBhdCB0aGlzIHBvaW50LCBidXQgYSBUQ1AKLSsJCSAqIGNsaWVudCBtYXkgbmVlZCB0byBzdGF5IGFjdGl2ZSBhbmQgcmV0dXJuIHRvIFJFQURZCi0rCQkgKiBzdGF0ZSBpZiBubyBvdGhlciBjbGllbnRzIGFyZSBhdmFpbGFibGUgdG8gbGlzdGVuCi0rCQkgKiBmb3IgVENQIHJlcXVlc3RzIG9uIHRoaXMgaW50ZXJmYWNlLgotIAkJICoKLS0JCSAqIC0gSWYgYSBwaXBlbGluZSBncm91cCBpcyBhY3RpdmUsIGRldGFjaCBmcm9tIGl0OwotLQkJICogICBpZiB0aGUgcmV0dXJuIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlcmUgbm8gbW9yZQotLQkJICogICBjbGllbnRzIGxlZnQgaWYgdGhpcyBwaXBlbGluZSBncm91cCwgd2UgYWxzbyBkZXRhY2gKLS0JCSAqICAgZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YS4KLS0JCSAqCi0tCQkgKiAtIE90aGVyd2lzZSB3ZSBkb24ndCB0cnkgdG8gZGV0YWNoLCB3ZSBqdXN0IHNldCB0aGUKLS0JCSAqICAgVENQIHF1b3RhIHBvaW50ZXIgdG8gTlVMTCBpZiBpdCB3YXNuJ3QgTlVMTCBhbHJlYWR5LgotLQkJICoKLS0JCSAqIHRjcHF1b3RhX2Rpc2Nvbm5lY3QoKSB3aWxsIHNldCB0Y3BxdW90YSB0byBOVUxMLCBlaXRoZXIKLS0JCSAqIGJ5IGRldGFjaGluZyBpdCBvciBieSBhc3NpZ25tZW50LCBkZXBlbmRpbmcgb24gdGhlCi0tCQkgKiBuZWVkcyBvZiB0aGUgY2xpZW50LiBTZWUgdGhlIGNvbW1lbnRzIG9uIHRoYXQgZnVuY3Rpb24KLS0JCSAqIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotKwkJICogUmVnYXJkbGVzcywgaWYgd2UncmUgZ29pbmcgdG8gRlJFRUQgc3RhdGUsIHRoYXQgbWVhbnMKLSsJCSAqIHRoZSBzeXN0ZW0gaXMgc2h1dHRpbmcgZG93biBhbmQgd2UgZG9uJ3QgbmVlZCB0bwotKwkJICogcmV0YWluIGNsaWVudHMuCi0gCQkgKi8KLS0JCWlmIChjbGllbnQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCB8fCBwaXBlbGluZV9kZXRhY2goY2xpZW50KSkgewotLQkJCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLS0JCX0gZWxzZSB7Ci0tCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotKwkJaWYgKGNsaWVudC0+bW9ydGFsICYmIFRDUF9DTElFTlQoY2xpZW50KSAmJgotKwkJICAgIGNsaWVudC0+bmV3c3RhdGUgIT0gTlNfQ0xJRU5UU1RBVEVfRlJFRUQgJiYKLSsJCSAgICAhbnNfZ19jbGllbnR0ZXN0ICYmCi0rCQkgICAgaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgMCkgPT0gMCkKLSsJCXsKLSsJCQkvKiBOb2JvZHkgZWxzZSBpcyBhY2NlcHRpbmcgKi8KLSsJCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotKwkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9SRUFEWTsKLSsJCX0KLSsKLSsJCS8qCi0rCQkgKiBEZXRhY2ggZnJvbSBUQ1AgY29ubmVjdGlvbiBhbmQgVENQIGNsaWVudCBxdW90YSwKLSsJCSAqIGlmIGFwcHJvcHJpYXRlLiBJZiB0aGlzIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSB0bwotKwkJICogdGhlIFRDUCBjb25uZWN0aW9uIGluIG91ciBwaXBlbGluZSBncm91cCwgdGhlCi0rCQkgKiBUQ1AgcXVvdGEgc2xvdCB3aWxsIGJlIHJlbGVhc2VkLgotKwkJICovCi0rCQlpZiAoY2xpZW50LT50Y3Bjb25uKSB7Ci0rCQkJdGNwY29ubl9kZXRhY2goY2xpZW50KTsKLSAJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRjcHNvY2tldCAhPSBOVUxMKSB7Ci0gCQkJQ1RSQUNFKCJjbG9zZXRjcCIpOwotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcHNvY2tldCk7Ci0tCi0tCQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQkJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0tCQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0tCQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotLQkJCX0KLSsJCQltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCBmYWxzZSk7Ci0gCQl9Ci0gCi0gCQlpZiAoY2xpZW50LT50aW1lcnNldCkgewotQEAgLTU2NywzNSArNTg3LDYgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gZmFsc2U7Ci0gCi0gCQljbGllbnQtPnN0YXRlID0gTlNfQ0xJRU5UU1RBVEVfUkVBRFk7Ci0tCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0KLS0JCS8qCi0tCQkgKiBOb3cgdGhlIGNsaWVudCBpcyByZWFkeSB0byBhY2NlcHQgYSBuZXcgVENQIGNvbm5lY3Rpb24KLS0JCSAqIG9yIFVEUCByZXF1ZXN0LCBidXQgd2UgbWF5IGhhdmUgZW5vdWdoIGNsaWVudHMgZG9pbmcKLS0JCSAqIHRoYXQgYWxyZWFkeS4gIENoZWNrIHdoZXRoZXIgdGhpcyBjbGllbnQgbmVlZHMgdG8gcmVtYWluCi0tCQkgKiBhY3RpdmUgYW5kIGZvcmNlIGl0IHRvIGdvIGluYWN0aXZlIGlmIG5vdC4KLS0JCSAqCi0tCQkgKiBVRFAgY2xpZW50cyBnbyBpbmFjdGl2ZSBhdCB0aGlzIHBvaW50LCBidXQgYSBUQ1AgY2xpZW50Ci0tCQkgKiBtYXkgbmVlZCB0byByZW1haW4gYWN0aXZlIGFuZCBnbyBpbnRvIHJlYWR5IHN0YXRlIGlmCi0tCQkgKiBubyBvdGhlciBjbGllbnRzIGFyZSBhdmFpbGFibGUgdG8gbGlzdGVuIGZvciBUQ1AKLS0JCSAqIHJlcXVlc3RzIG9uIHRoaXMgaW50ZXJmYWNlIG9yIChpbiB0aGUgY2FzZSBvZiBwaXBlbGluZWQKLS0JCSAqIGNsaWVudHMpIHRvIHJlYWQgZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgb24gdGhlIGN1cnJlbnQKLS0JCSAqIGNvbm5lY3Rpb24uCi0tCQkgKi8KLS0JCWlmIChjbGllbnQtPm1vcnRhbCAmJiBUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgIW5zX2dfY2xpZW50dGVzdCkgewotLQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQlpZiAoKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID09IDAgfHwKLS0JCQkgICAgKGNsaWVudC0+cGlwZWxpbmVkICYmCi0tCQkJICAgICBjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA8IDIpKSAmJgotLQkJCSAgICBjbGllbnQtPm5ld3N0YXRlICE9IE5TX0NMSUVOVFNUQVRFX0ZSRUVEKQotLQkJCXsKLS0JCQkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLS0JCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotLQkJCX0KLS0JCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCX0KLS0KLS0JCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCi0gCQkvKgotIAkJICogV2UgZG9uJ3QgbmVlZCB0aGUgY2xpZW50OyBzZW5kIGl0IHRvIHRoZSBpbmFjdGl2ZQotQEAgLTYzMCw3ICs2MjEsNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIGFjY2VwdCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLS0JCWlmICghIChjbGllbnQtPm5hY2NlcHRzID09IDApKSB7Ci0rCQlpZiAoY2xpZW50LT5uYWNjZXB0cyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotIAotQEAgLTY0MSw3ICs2MzIsNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIHJlY3YgY2FuY2VsIGNvbXBsZXRpb24uICovCi0tCQlpZiAoISAoY2xpZW50LT5ucmVjdnMgPT0gMCkpIHsKLSsJCWlmIChjbGllbnQtPm5yZWN2cyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotIAotQEAgLTY1NCwxNCArNjQ1LDcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLSAJCWlmIChjbGllbnQtPnRjcGxpc3RlbmVyICE9IE5VTEwpIHsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci0tCi0tCQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQkJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0tCQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0tCQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotLQkJCX0KLSsJCQltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCBmYWxzZSk7Ci0gCQl9Ci0gCQlpZiAoY2xpZW50LT51ZHBzb2NrZXQgIT0gTlVMTCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnVkcHNvY2tldCk7Ci1AQCAtODE2LDcgKzgwMCw3IEBAIGNsaWVudF9zdGFydChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCXJldHVybjsKLSAKLSAJaWYgKFRDUF9DTElFTlQoY2xpZW50KSkgewotLQkJaWYgKGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCQlpZiAoY2xpZW50LT50Y3Bjb25uICE9IE5VTEwpIHsKLSAJCQljbGllbnRfcmVhZChjbGllbnQpOwotIAkJfSBlbHNlIHsKLSAJCQljbGllbnRfYWNjZXB0KGNsaWVudCk7Ci1AQCAtMjQ3MCw2ICsyNDU0LDcgQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQljbGllbnQtPm5yZWN2cy0tOwotIAl9IGVsc2UgewotIAkJSU5TSVNUKFRDUF9DTElFTlQoY2xpZW50KSk7Ci0rCQlJTlNJU1QoY2xpZW50LT50Y3Bjb25uICE9IE5VTEwpOwotIAkJUkVRVUlSRShldmVudC0+ZXZfdHlwZSA9PSBETlNfRVZFTlRfVENQTVNHKTsKLSAJCVJFUVVJUkUoZXZlbnQtPmV2X3NlbmRlciA9PSAmY2xpZW50LT50Y3Btc2cpOwotIAkJYnVmZmVyID0gJmNsaWVudC0+dGNwbXNnLmJ1ZmZlcjsKLUBAIC0yNjU3LDE3ICsyNjQyLDE5IEBAIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkvKgotIAkgKiBQaXBlbGluZSBUQ1AgcXVlcnkgcHJvY2Vzc2luZy4KLSAJICovCi0tCWlmIChjbGllbnQtPm1lc3NhZ2UtPm9wY29kZSAhPSBkbnNfb3Bjb2RlX3F1ZXJ5KSB7Ci0tCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwlpZiAoVENQX0NMSUVOVChjbGllbnQpICYmCi0rCSAgICBjbGllbnQtPm1lc3NhZ2UtPm9wY29kZSAhPSBkbnNfb3Bjb2RlX3F1ZXJ5KQotKwl7Ci0rCQljbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCA9IGZhbHNlOwotIAl9Ci0tCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLSsJaWYgKFRDUF9DTElFTlQoY2xpZW50KSAmJiBjbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCkgewotIAkJLyoKLSAJCSAqIFdlJ3JlIHBpcGVsaW5pbmcuIFJlcGxhY2UgdGhlIGNsaWVudDsgdGhlCi0tCQkgKiB0aGUgcmVwbGFjZW1lbnQgY2FuIHJlYWQgdGhlIFRDUCBzb2NrZXQgbG9va2luZwotLQkJICogZm9yIG5ldyBtZXNzYWdlcyBhbmQgdGhpcyBjbGllbnQgY2FuIHByb2Nlc3MgdGhlCi0rCQkgKiByZXBsYWNlbWVudCBjYW4gcmVhZCB0aGUgVENQIHNvY2tldCBsb29raW5nCi0rCQkgKiBmb3IgbmV3IG1lc3NhZ2VzIGFuZCB0aGlzIG9uZSBjYW4gcHJvY2VzcyB0aGUKLSAJCSAqIGN1cnJlbnQgbWVzc2FnZSBhc3luY2hyb25vdXNseS4KLSAJCSAqCi0tCQkgKiBUaGVyZSBhcmUgbm93IGF0IGxlYXN0IHRocmVlIGNsaWVudHMgdXNpbmcgdGhpcwotKwkJICogVGhlcmUgd2lsbCBub3cgYmUgYXQgbGVhc3QgdGhyZWUgY2xpZW50cyB1c2luZyB0aGlzCi0gCQkgKiBUQ1Agc29ja2V0IC0gb25lIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMsCi0gCQkgKiBvbmUgcmVhZGluZyBhbiBleGlzdGluZyBjb25uZWN0aW9uIHRvIGdldCBuZXcKLSAJCSAqIG1lc3NhZ2VzLCBhbmQgb25lIGFuc3dlcmluZyB0aGUgbWVzc2FnZSBhbHJlYWR5Ci1AQCAtMjY3NSw3ICsyNjYyLDcgQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkgKi8KLSAJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLS0JCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwkJCWNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCQl9Ci0gCX0KLSAKLUBAIC0zMjMzLDEwICszMjIwLDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+c2lnbmVyID0gTlVMTDsKLSAJZG5zX25hbWVfaW5pdCgmY2xpZW50LT5zaWduZXJuYW1lLCBOVUxMKTsKLSAJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLS0JY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLS0JY2xpZW50LT5waXBlbGluZV9yZWZzID0gTlVMTDsKLS0JY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLSsJY2xpZW50LT50Y3Bjb25uID0gTlVMTDsKLSAJY2xpZW50LT5yZWN1cnNpb25xdW90YSA9IE5VTEw7Ci0gCWNsaWVudC0+aW50ZXJmYWNlID0gTlVMTDsKLSAJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IGZhbHNlOwotQEAgLTMzNDEsOSArMzMyNSwxMCBAQCBjbGllbnRfcmVhZChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCi0gc3RhdGljIHZvaWQKLSBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSsJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJbnNfY2xpZW50X3QgKmNsaWVudCA9IGV2ZW50LT5ldl9hcmc7Ci0gCWlzY19zb2NrZXRfbmV3Y29ubmV2X3QgKm5ldmVudCA9IChpc2Nfc29ja2V0X25ld2Nvbm5ldl90ICopZXZlbnQ7Ci0tCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0rCXVpbnQzMl90IG9sZDsKLSAKLSAJUkVRVUlSRShldmVudC0+ZXZfdHlwZSA9PSBJU0NfU09DS0VWRU5UX05FV0NPTk4pOwotIAlSRVFVSVJFKE5TX0NMSUVOVF9WQUxJRChjbGllbnQpKTsKLUBAIC0zMzYzLDEwICszMzQ4LDggQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDEpOwotIAljbGllbnQtPm5hY2NlcHRzLS07Ci0gCi0tCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID4gMCk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLS07Ci0tCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwlvbGQgPSBpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAtMSk7Ci0rCUlOU0lTVChvbGQgPiAwKTsKLSAKLSAJLyoKLSAJICogV2UgbXVzdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgbmV3IHNvY2tldCBiZWZvcmUgdGhlIGV4aXQKLUBAIC0zMzk5LDcgKzMzODIsNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDMpLAotIAkJCSAgICAgICJhY2NlcHQgZmFpbGVkOiAlcyIsCi0gCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQobmV2ZW50LT5yZXN1bHQpKTsKLS0JCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLSsJCXRjcGNvbm5fZGV0YWNoKGNsaWVudCk7Ci0gCX0KLSAKLSAJaWYgKGV4aXRfY2hlY2soY2xpZW50KSkKLUBAIC0zNDM3LDE1ICszNDIwLDEzIEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJICogdGVsbmV0dGluZyB0byBwb3J0IDUzIChvbmNlIHBlciBDUFUpIHdpbGwKLSAJCSAqIGRlbnkgc2VydmljZSB0byBsZWdpdGltYXRlIFRDUCBjbGllbnRzLgotIAkJICovCi0tCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSAJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJgotIAkJICAgIChuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlciA9PSBOVUxMIHx8Ci0gCQkgICAgICFhbGxvd2VkKCZuZXRhZGRyLCBOVUxMLCBOVUxMLCAwLCBOVUxMLAotIAkJCSAgICAgIG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyKSkpCi0gCQl7Ci0tCQkJcGlwZWxpbmVfaW5pdChjbGllbnQpOwotLQkJCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSsJCQljbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCA9IHRydWU7Ci0gCQl9Ci0gCi0gCQljbGllbnRfcmVhZChjbGllbnQpOwotQEAgLTM0NjIsNzggKzM0NDMsNTkgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCUNUUkFDRSgiYWNjZXB0Iik7Ci0gCi0gCS8qCi0tCSAqIFRoZSB0Y3BxdW90YSBvYmplY3QgY2FuIG9ubHkgYmUgc2ltdWx0YW5lb3VzbHkgcmVmZXJlbmNlZCBhCi0tCSAqIHByZS1kZWZpbmVkIG51bWJlciBvZiB0aW1lczsgdGhpcyBpcyBjb25maWd1cmVkIGJ5ICd0Y3AtY2xpZW50cycKLS0JICogaW4gbmFtZWQuY29uZi4gSWYgd2UgY2FuJ3QgYXR0YWNoIHRvIGl0IGhlcmUsIHRoYXQgbWVhbnMgdGhlIFRDUAotLQkgKiBjbGllbnQgcXVvdGEgaGFzIGJlZW4gZXhjZWVkZWQuCi0rCSAqIFNldCB1cCBhIG5ldyBUQ1AgY29ubmVjdGlvbi4gVGhpcyBtZWFucyB0cnkgdG8gYXR0YWNoIHRvIHRoZQotKwkgKiBUQ1AgY2xpZW50IHF1b3RhICh0Y3AtY2xpZW50cyksIGJ1dCBmYWlsIGlmIHdlJ3JlIG92ZXIgcXVvdGEuCi0gCSAqLwotLQlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsCi0tCQkJCSAgJmNsaWVudC0+dGNwcXVvdGEpOwotKwlyZXN1bHQgPSB0Y3Bjb25uX2luaXQoY2xpZW50LCBmYWxzZSk7Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotLQkJCWJvb2wgZXhpdDsKLSsJCWJvb2wgZXhpdDsKLSAKLS0JCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotLQkJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDEpLAotLQkJCQkgICAgICAibm8gbW9yZSBUQ1AgY2xpZW50czogJXMiLAotLQkJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLS0KLS0JCQkvKgotLQkJCSAqIFdlIGhhdmUgZXhjZWVkZWQgdGhlIHN5c3RlbS13aWRlIFRDUCBjbGllbnQKLS0JCQkgKiBxdW90YS4gIEJ1dCwgd2UgY2FuJ3QganVzdCBibG9jayB0aGlzIGFjY2VwdAotLQkJCSAqIGluIGFsbCBjYXNlcywgYmVjYXVzZSBpZiB3ZSBkaWQsIGEgaGVhdnkgVENQCi0tCQkJICogbG9hZCBvbiBvdGhlciBpbnRlcmZhY2VzIG1pZ2h0IGNhdXNlIHRoaXMKLS0JCQkgKiBpbnRlcmZhY2UgdG8gYmUgc3RhcnZlZCwgd2l0aCBubyBjbGllbnRzIGFibGUKLS0JCQkgKiB0byBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zLgotLQkJCSAqCi0tCQkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnRzCi0tCQkJICogYXJlIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMKLS0JCQkgKiBpbnRlcmZhY2UgKHdoZXRoZXIgYWNjZXB0aW5nLCByZWFkaW5nLCBvcgotLQkJCSAqIHByb2Nlc3NpbmcpLiBJZiB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvCi0tCQkJICogKG9uZSByZWFkaW5nIGFuZCBvbmUgcHJvY2Vzc2luZyBhIHJlcXVlc3QpCi0tCQkJICogdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbCBhY2NlcHQgLSB3ZQotLQkJCSAqIGNhbiBsZXQgdGhpcyBjbGllbnQgZ28gaW5hY3RpdmUgYW5kIGFub3RoZXIKLS0JCQkgKiBvbmUgd2lsbCByZXN1bWUgYWNjZXB0aW5nIHdoZW4gaXQncyBkb25lLgotLQkJCSAqCi0tCQkJICogSWYgdGhlcmUgYXJlbid0IGVub3VnaCBhY3RpdmUgY2xpZW50cyBvbiB0aGUKLS0JCQkgKiBpbnRlcmZhY2UsIHRoZW4gd2UgY2FuIGJlIGEgbGl0dGxlIGJpdAotLQkJCSAqIGZsZXhpYmxlIGFib3V0IHRoZSBxdW90YS4gV2UnbGwgYWxsb3cgKm9uZSoKLS0JCQkgKiBleHRyYSBjbGllbnQgdGhyb3VnaCB0byBlbnN1cmUgd2UncmUgbGlzdGVuaW5nCi0tCQkJICogb24gZXZlcnkgaW50ZXJmYWNlLgotLQkJCSAqCi0tCQkJICogKE5vdGU6IEluIHByYWN0aWNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVhbAotLQkJCSAqIFRDUCBjbGllbnQgcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUKLS0JCQkgKiBudW1iZXIgb2YgbGlzdGVuaW5nIGludGVyZmFjZXMgcGx1cyAyLikKLS0JCQkgKi8KLS0JCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJZXhpdCA9IChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDEpOwotLQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJbnNfY2xpZW50X2xvZyhjbGllbnQsIE5TX0xPR0NBVEVHT1JZX0NMSUVOVCwKLSsJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX1dBUk5JTkcsCi0rCQkJICAgICAgIlRDUCBjbGllbnQgcXVvdGEgcmVhY2hlZDogJXMiLAotKwkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotIAotLQkJCWlmIChleGl0KSB7Ci0tCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLS0JCQkJKHZvaWQpZXhpdF9jaGVjayhjbGllbnQpOwotLQkJCQlyZXR1cm47Ci0tCQkJfQotKwkJLyoKLSsJCSAqIFdlIGhhdmUgZXhjZWVkZWQgdGhlIHN5c3RlbS13aWRlIFRDUCBjbGllbnQgcXVvdGEuICBCdXQsCi0rCQkgKiB3ZSBjYW4ndCBqdXN0IGJsb2NrIHRoaXMgYWNjZXB0IGluIGFsbCBjYXNlcywgYmVjYXVzZSBpZgotKwkJICogd2UgZGlkLCBhIGhlYXZ5IFRDUCBsb2FkIG9uIG90aGVyIGludGVyZmFjZXMgbWlnaHQgY2F1c2UKLSsJCSAqIHRoaXMgaW50ZXJmYWNlIHRvIGJlIHN0YXJ2ZWQsIHdpdGggbm8gY2xpZW50cyBhYmxlIHRvCi0rCQkgKiBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zLgotKwkJICoKLSsJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50cyBhcmUKLSsJCSAqIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMgaW50ZXJmYWNlICh3aGV0aGVyCi0rCQkgKiBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yIHByb2Nlc3NpbmcpLiBJZiB3ZSBmaW5kIGF0IGxlYXN0Ci0rCQkgKiBvbmUsIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzCi0rCQkgKiBjbGllbnQgZ28gaW5hY3RpdmUgYW5kIGFub3RoZXIgd2lsbCB0YWtlIG92ZXIgd2hlbiBpdCdzCi0rCQkgKiBkb25lLgotKwkJICoKLSsJCSAqIElmIHRoZXJlIGFyZW4ndCBlbm91Z2ggYWN0aXZlIGNsaWVudHMgb24gdGhlIGludGVyZmFjZSwKLSsJCSAqIHRoZW4gd2UgY2FuIGJlIGEgbGl0dGxlIGJpdCBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuCi0rCQkgKiBXZSdsbCBhbGxvdyAqb25lKiBleHRyYSBjbGllbnQgdGhyb3VnaCB0byBlbnN1cmUgd2UncmUKLSsJCSAqIGxpc3RlbmluZyBvbiBldmVyeSBpbnRlcmZhY2U7IHdlIGRvIHRoaXMgYnkgc2V0dGluZyB0aGUKLSsJCSAqICdmb3JjZScgb3B0aW9uIHRvIHRjcGNvbm5faW5pdCgpLgotKwkJICoKLSsJCSAqIChOb3RlOiBJbiBwcmFjdGljZSB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlYWwgVENQIGNsaWVudAotKwkJICogcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUgbnVtYmVyIG9mIGxpc3RlbmluZwotKwkJICogaW50ZXJmYWNlcyBwbHVzIDEuKQotKwkJICovCi0rCQlleGl0ID0gKGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDApID4gMCk7Ci0rCQlpZiAoZXhpdCkgewotKwkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLSsJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci0rCQkJcmV0dXJuOwotKwkJfQotIAotLQl9IGVsc2UgewotLQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IHRydWU7Ci0rCQlyZXN1bHQgPSB0Y3Bjb25uX2luaXQoY2xpZW50LCB0cnVlKTsKLSsJCVJVTlRJTUVfQ0hFQ0socmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpOwotIAl9Ci0gCi0gCS8qCi0tCSAqIEJ5IGluY3JlbWVudGluZyB0aGUgaW50ZXJmYWNlJ3MgbnRjcGFjdGl2ZSBjb3VudGVyIHdlIHNpZ25hbAotLQkgKiB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjbGllbnQgc2VydmljaW5nIFRDUCBxdWVyaWVzIGZvciB0aGUKLS0JICogaW50ZXJmYWNlLgotLQkgKgotLQkgKiBXZSBhbHNvIG1ha2Ugbm90ZSBvZiB0aGUgZmFjdCBpbiB0aGUgY2xpZW50IGl0c2VsZiB3aXRoIHRoZQotLQkgKiB0Y3BhY3RpdmUgZmxhZy4gVGhpcyBlbnN1cmVzIHByb3BlciBhY2NvdW50aW5nIGJ5IHByZXZlbnRpbmcKLS0JICogdXMgZnJvbSBhY2NpZGVudGFsbHkgaW5jcmVtZW50aW5nIG9yIGRlY3JlbWVudGluZyBudGNwYWN0aXZlCi0tCSAqIG1vcmUgdGhhbiBvbmNlIHBlciBjbGllbnQgb2JqZWN0LgotKwkgKiBJZiB0aGlzIGNsaWVudCB3YXMgc2V0IHVwIHVzaW5nIGdldF9jbGllbnQoKSBvciBnZXRfd29ya2VyKCksCi0rCSAqIHRoZW4gVENQIGlzIGFscmVhZHkgbWFya2VkIGFjdGl2ZS4gSG93ZXZlciwgaWYgaXQgd2FzIHJlc3RhcnRlZAotKwkgKiBmcm9tIGV4aXRfY2hlY2soKSwgaXQgbWlnaHQgbm90IGJlLCBzbyB3ZSB0YWtlIGNhcmUgb2YgaXQgbm93LgotIAkgKi8KLS0JaWYgKCFjbGllbnQtPnRjcGFjdGl2ZSkgewotLQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLS0JCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotLQl9Ci0rCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIHRydWUpOwotIAotIAlyZXN1bHQgPSBpc2Nfc29ja2V0X2FjY2VwdChjbGllbnQtPnRjcGxpc3RlbmVyLCBjbGllbnQtPnRhc2ssCi0gCQkJCSAgIGNsaWVudF9uZXdjb25uLCBjbGllbnQpOwotQEAgLTM1NDksMTUgKzM1MTEsOCBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQkJICJpc2Nfc29ja2V0X2FjY2VwdCgpIGZhaWxlZDogJXMiLAotIAkJCQkgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0gCi0tCQl0Y3BxdW90YV9kaXNjb25uZWN0KGNsaWVudCk7Ci0tCi0tCQlpZiAoY2xpZW50LT50Y3BhY3RpdmUpIHsKLS0JCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUtLTsKLS0JCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotLQkJfQotLQotKwkJdGNwY29ubl9kZXRhY2goY2xpZW50KTsKLSsJCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIGZhbHNlKTsKLSAJCXJldHVybjsKLSAJfQotIAotQEAgLTM1ODIsOSArMzUzNyw3IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25zIGl0c2VsZiB0byBwcmV2ZW50IHRoZSBpbnRlcmZhY2UKLSAJICogZ29pbmcgZGVhZC4KLSAJICovCi0tCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcrKzsKLS0JVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIDEpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTM2NTUsMjQgKzM2MDgsMjUgQEAgbnNfY2xpZW50X3JlcGxhY2UobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAlSRVFVSVJFKGNsaWVudC0+bWFuYWdlciAhPSBOVUxMKTsKLSAKLSAJdGNwID0gVENQX0NMSUVOVChjbGllbnQpOwotLQlpZiAodGNwICYmIGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCWlmICh0Y3AgJiYgY2xpZW50LT50Y3Bjb25uICE9IE5VTEwgJiYgY2xpZW50LT50Y3Bjb25uLT5waXBlbGluZWQpIHsKLSAJCXJlc3VsdCA9IGdldF93b3JrZXIoY2xpZW50LT5tYW5hZ2VyLCBjbGllbnQtPmludGVyZmFjZSwKLSAJCQkJICAgIGNsaWVudC0+dGNwc29ja2V0LCBjbGllbnQpOwotIAl9IGVsc2UgewotIAkJcmVzdWx0ID0gZ2V0X2NsaWVudChjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotLQkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgY2xpZW50LCB0Y3ApOwotKwkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgdGNwKTsKLSAKLS0JCS8qCi0tCQkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotLQkJICogdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBjbGllbnQuICBUaGVyZWZvcmUsIHRoZSBvbGQgY2xpZW50Ci0tCQkgKiBzaG91bGQgcmVmcmFpbiBmcm9tIGxpc3RlbmluZyBmb3IgYW55IG1vcmUgcmVxdWVzdHMuCi0tCQkgKi8KLS0JCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSAJfQotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCXJldHVybiAocmVzdWx0KTsKLSAJfQotIAotKwkvKgotKwkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotKwkgKiB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGNsaWVudC4gIFRoZXJlZm9yZSwgdGhlIG9sZCBjbGllbnQKLSsJICogc2hvdWxkIHJlZnJhaW4gZnJvbSBsaXN0ZW5pbmcgZm9yIGFueSBtb3JlIHJlcXVlc3RzLgotKwkgKi8KLSsJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotKwotIAlyZXR1cm4gKElTQ19SX1NVQ0NFU1MpOwotIH0KLSAKLUBAIC0zODA2LDcgKzM3NjAsNyBAQCBuc19jbGllbnRtZ3JfZGVzdHJveShuc19jbGllbnRtZ3JfdCAqKm1hbmFnZXJwKSB7Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0tCSAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBuc19jbGllbnRfdCAqb2xkY2xpZW50LCBib29sIHRjcCkKLSsJICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKQotIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0gCWlzY19ldmVudF90ICpldjsKLUBAIC0zODUwLDE1ICszODA0LDcgQEAgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotIAlpZiAodGNwKSB7Ci0tCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0tCQlpZiAob2xkY2xpZW50ICE9IE5VTEwpIHsKLS0JCQljbGllbnQtPnRjcGF0dGFjaGVkID0gb2xkY2xpZW50LT50Y3BhdHRhY2hlZDsKLS0JCX0KLS0KLS0JCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0tCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLSsJCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIHRydWUpOwotIAotIAkJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotIAkJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsCi1AQCAtMzkyMywxNiArMzg2OSwxNCBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0gCW5zX2ludGVyZmFjZV9hdHRhY2goaWZwLCAmY2xpZW50LT5pbnRlcmZhY2UpOwotIAljbGllbnQtPm5ld3N0YXRlID0gY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1dPUktJTkc7Ci0gCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQljbGllbnQtPnRjcHF1b3RhID0gJm5zX2dfc2VydmVyLT50Y3BxdW90YTsKLS0JY2xpZW50LT50Y3BhdHRhY2hlZCA9IG9sZGNsaWVudC0+dGNwYXR0YWNoZWQ7Ci0gCi0gCWNsaWVudC0+ZHNjcCA9IGlmcC0+ZHNjcDsKLSAKLSAJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotIAljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0gCi0tCXBpcGVsaW5lX2F0dGFjaChvbGRjbGllbnQsIGNsaWVudCk7Ci0tCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSsJdGNwY29ubl9hdHRhY2gob2xkY2xpZW50LCBjbGllbnQpOwotKwltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCB0cnVlKTsKLSAKLSAJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsICZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLSAJaXNjX3NvY2tldF9hdHRhY2goc29jaywgJmNsaWVudC0+dGNwc29ja2V0KTsKLUBAIC0zOTQwLDExICszODg0LDYgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotIAkodm9pZClpc2Nfc29ja2V0X2dldHBlZXJuYW1lKGNsaWVudC0+dGNwc29ja2V0LCAmY2xpZW50LT5wZWVyYWRkcik7Ci0gCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSB0cnVlOwotIAotLQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0tCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0tCi0gCUlOU0lTVChjbGllbnQtPnRjcG1zZ192YWxpZCA9PSBmYWxzZSk7Ci0gCWRuc190Y3Btc2dfaW5pdChjbGllbnQtPm1jdHgsIGNsaWVudC0+dGNwc29ja2V0LCAmY2xpZW50LT50Y3Btc2cpOwotIAljbGllbnQtPnRjcG1zZ192YWxpZCA9IHRydWU7Ci1AQCAtMzk3MCw4ICszOTA5LDcgQEAgbnNfY2xpZW50bWdyX2NyZWF0ZWNsaWVudHMobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIHVuc2lnbmVkIGludCBuLAotIAlNVFJBQ0UoImNyZWF0ZWNsaWVudHMiKTsKLSAKLSAJZm9yIChkaXNwID0gMDsgZGlzcCA8IG47IGRpc3ArKykgewotLQkJcmVzdWx0ID0gZ2V0X2NsaWVudChtYW5hZ2VyLCBpZnAsIGlmcC0+dWRwZGlzcGF0Y2hbZGlzcF0sCi0tCQkJCSAgICBOVUxMLCB0Y3ApOwotKwkJcmVzdWx0ID0gZ2V0X2NsaWVudChtYW5hZ2VyLCBpZnAsIGlmcC0+dWRwZGlzcGF0Y2hbZGlzcF0sIHRjcCk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJYnJlYWs7Ci0gCX0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1pbmRleCBlMmM0MGFjZDI4Li45NjllZTRjMDhmIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1AQCAtNzgsNiArNzgsMTMgQEAKLSAgKioqIFR5cGVzCi0gICoqKi8KLSAKLSsvKiUgcmVmZXJlbmNlLWNvdW50ZWQgVENQIGNvbm5lY3Rpb24gb2JqZWN0ICovCi0rdHlwZWRlZiBzdHJ1Y3QgbnNfdGNwY29ubiB7Ci0rCWlzY19yZWZjb3VudF90CQlyZWZzOwotKwlpc2NfcXVvdGFfdAkJKnRjcHF1b3RhOwotKwlib29sCQkJcGlwZWxpbmVkOwotK30gbnNfdGNwY29ubl90OwotKwotIC8qJSBuYW1lc2VydmVyIGNsaWVudCBzdHJ1Y3R1cmUgKi8KLSBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJdW5zaWduZWQgaW50CQltYWdpYzsKLUBAIC0xMzEsMTAgKzEzOCw3IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlkbnNfbmFtZV90CQlzaWduZXJuYW1lOyAgIC8qJTwgW1RdU0lHIGtleSBuYW1lICovCi0gCWRuc19uYW1lX3QJCSpzaWduZXI7ICAgICAgLyolPCBOVUxMIGlmIG5vdCB2YWxpZCBzaWcgKi8KLSAJYm9vbAkJCW1vcnRhbDsJICAgICAgLyolPCBEaWUgYWZ0ZXIgaGFuZGxpbmcgcmVxdWVzdCAqLwotLQlib29sCQkJcGlwZWxpbmVkOyAgIC8qJTwgVENQIHF1ZXJpZXMgbm90IGluIHNlcXVlbmNlICovCi0tCWlzY19yZWZjb3VudF90CQkqcGlwZWxpbmVfcmVmczsKLS0JaXNjX3F1b3RhX3QJCSp0Y3BxdW90YTsKLS0JYm9vbAkJCXRjcGF0dGFjaGVkOwotKwluc190Y3Bjb25uX3QJCSp0Y3Bjb25uOwotIAlpc2NfcXVvdGFfdAkJKnJlY3Vyc2lvbnF1b3RhOwotIAluc19pbnRlcmZhY2VfdAkJKmludGVyZmFjZTsKLSAKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1pbmRleCA2MWIwODgyNmE2Li4zNTM1ZWYyMmE4IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1AQCAtOSw4ICs5LDYgQEAKLSAgKiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4KLSAgKi8KLSAKLS0vKiAkSWQ6IGludGVyZmFjZW1nci5oLHYgMS4zNSAyMDExLzA3LzI4IDIzOjQ3OjU4IHRib3ggRXhwICQgKi8KLS0KLSAjaWZuZGVmIE5BTUVEX0lOVEVSRkFDRU1HUl9ICi0gI2RlZmluZSBOQU1FRF9JTlRFUkZBQ0VNR1JfSCAxCi0gCi1AQCAtNzcsMTEgKzc1LDExIEBAIHN0cnVjdCBuc19pbnRlcmZhY2UgewotIAkJCQkJCS8qJTwgVURQIGRpc3BhdGNoZXJzLiAqLwotIAlpc2Nfc29ja2V0X3QgKgkJdGNwc29ja2V0OwkvKiU8IFRDUCBzb2NrZXQuICovCi0gCWlzY19kc2NwX3QJCWRzY3A7CQkvKiU8ICJsaXN0ZW4tb24iIERTQ1AgdmFsdWUgKi8KLS0JaW50CQkJbnRjcGFjY2VwdGluZzsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwlpbnQzMl90CQkJbnRjcGFjY2VwdGluZzsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotIAkJCQkJCSAgICAgcmVhZHkgdG8gYWNjZXB0IG5ldwotIAkJCQkJCSAgICAgVENQIGNvbm5lY3Rpb25zIG9uIHRoaXMKLSAJCQkJCQkgICAgIGludGVyZmFjZSAqLwotLQlpbnQJCQludGNwYWN0aXZlOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0rCWludDMyX3QJCQludGNwYWN0aXZlOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0gCQkJCQkJICAgICBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMKLSAJCQkJCQkgICAgICh3aGV0aGVyIGFjY2VwdGluZyBvcgotIAkJCQkJCSAgICAgY29ubmVjdGVkKSAqLwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYyBiL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotaW5kZXggOTU1MDk2ZWY0Ny4uZDlmNmRmNTgwMiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotKysrIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1AQCAtMzg4LDYgKzM4OCw3IEBAIG5zX2ludGVyZmFjZV9jcmVhdGUobnNfaW50ZXJmYWNlbWdyX3QgKm1nciwgaXNjX3NvY2thZGRyX3QgKmFkZHIsCi0gCSAqLwotIAlpZnAtPm50Y3BhY2NlcHRpbmcgPSAwOwotIAlpZnAtPm50Y3BhY3RpdmUgPSAwOwotKwotIAlpZnAtPm51ZHBkaXNwYXRjaCA9IDA7Ci0gCi0gCWlmcC0+ZHNjcCA9IC0xOwotZGlmZiAtLWdpdCBhL2xpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaCBiL2xpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaAotaW5kZXggYjliZjU5ODc3YS4uMzZjNTgzMDI0MiAxMDA2NDQKLS0tLSBhL2xpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaAotKysrIGIvbGliL2lzYy9pbmNsdWRlL2lzYy9xdW90YS5oCi1AQCAtMTAwLDYgKzEwMCwxMyBAQCBpc2NfcXVvdGFfYXR0YWNoKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwKTsKLSAgKiBxdW90YSBpZiBzdWNjZXNzZnVsIChJU0NfUl9TVUNDRVNTIG9yIElTQ19SX1NPRlRRVU9UQSkuCi0gICovCi0gCi0raXNjX3Jlc3VsdF90Ci0raXNjX3F1b3RhX2ZvcmNlKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwKTsKLSsvKiU8Ci0rICogTGlrZSBpc2NfcXVvdGFfYXR0YWNoLCBidXQgd2lsbCBhdHRhY2ggJypwJyB0byB0aGUgcXVvdGEKLSsgKiBldmVuIGlmIHRoZSBoYXJkIHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLgotKyAqLwotKwotIHZvaWQKLSBpc2NfcXVvdGFfZGV0YWNoKGlzY19xdW90YV90ICoqcCk7Ci0gLyolPAotZGlmZiAtLWdpdCBhL2xpYi9pc2MvcXVvdGEuYyBiL2xpYi9pc2MvcXVvdGEuYwotaW5kZXggM2RkZmYwZDg3NS4uNTU2YTYxZjIxZCAxMDA2NDQKLS0tLSBhL2xpYi9pc2MvcXVvdGEuYwotKysrIGIvbGliL2lzYy9xdW90YS5jCi1AQCAtNzQsMjAgKzc0LDM5IEBAIGlzY19xdW90YV9yZWxlYXNlKGlzY19xdW90YV90ICpxdW90YSkgewotIAlVTkxPQ0soJnF1b3RhLT5sb2NrKTsKLSB9Ci0gCi0taXNjX3Jlc3VsdF90Ci0taXNjX3F1b3RhX2F0dGFjaChpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCkKLS17Ci0rc3RhdGljIGlzY19yZXN1bHRfdAotK2RvYXR0YWNoKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwLCBib29sIGZvcmNlKSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0tCUlOU0lTVChwICE9IE5VTEwgJiYgKnAgPT0gTlVMTCk7Ci0rCVJFUVVJUkUocCAhPSBOVUxMICYmICpwID09IE5VTEwpOwotKwotIAlyZXN1bHQgPSBpc2NfcXVvdGFfcmVzZXJ2ZShxdW90YSk7Ci0tCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyB8fCByZXN1bHQgPT0gSVNDX1JfU09GVFFVT1RBKQotKwlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgfHwgcmVzdWx0ID09IElTQ19SX1NPRlRRVU9UQSkgewotKwkJKnAgPSBxdW90YTsKLSsJfSBlbHNlIGlmIChyZXN1bHQgPT0gSVNDX1JfUVVPVEEgJiYgZm9yY2UpIHsKLSsJCS8qIGF0dGFjaCBhbnl3YXkgKi8KLSsJCUxPQ0soJnF1b3RhLT5sb2NrKTsKLSsJCXF1b3RhLT51c2VkKys7Ci0rCQlVTkxPQ0soJnF1b3RhLT5sb2NrKTsKLSsKLSAJCSpwID0gcXVvdGE7Ci0rCQlyZXN1bHQgPSBJU0NfUl9TVUNDRVNTOwotKwl9Ci0rCi0gCXJldHVybiAocmVzdWx0KTsKLSB9Ci0gCi0raXNjX3Jlc3VsdF90Ci0raXNjX3F1b3RhX2F0dGFjaChpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCkgewotKwlyZXR1cm4gKGRvYXR0YWNoKHF1b3RhLCBwLCBmYWxzZSkpOwotK30KLSsKLStpc2NfcmVzdWx0X3QKLStpc2NfcXVvdGFfZm9yY2UoaXNjX3F1b3RhX3QgKnF1b3RhLCBpc2NfcXVvdGFfdCAqKnApIHsKLSsJcmV0dXJuIChkb2F0dGFjaChxdW90YSwgcCwgdHJ1ZSkpOwotK30KLSsKLSB2b2lkCi0taXNjX3F1b3RhX2RldGFjaChpc2NfcXVvdGFfdCAqKnApCi0tewotK2lzY19xdW90YV9kZXRhY2goaXNjX3F1b3RhX3QgKipwKSB7Ci0gCUlOU0lTVChwICE9IE5VTEwgJiYgKnAgIT0gTlVMTCk7Ci0gCWlzY19xdW90YV9yZWxlYXNlKCpwKTsKLSAJKnAgPSBOVUxMOwotZGlmZiAtLWdpdCBhL2xpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbiBiL2xpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbgotaW5kZXggYTgyZmFjZWMwZi4uN2I5ZjIzZDc3NiAxMDA2NDQKLS0tLSBhL2xpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbgotKysrIGIvbGliL2lzYy93aW4zMi9saWJpc2MuZGVmLmluCi1AQCAtNTE5LDYgKzUxOSw3IEBAIGlzY19wb3J0c2V0X3JlbW92ZXJhbmdlCi0gaXNjX3F1b3RhX2F0dGFjaAotIGlzY19xdW90YV9kZXN0cm95Ci0gaXNjX3F1b3RhX2RldGFjaAotK2lzY19xdW90YV9mb3JjZQotIGlzY19xdW90YV9pbml0Ci0gaXNjX3F1b3RhX21heAotIGlzY19xdW90YV9yZWxlYXNlCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDYtcmVzdG9yZS1hbGxvd2FuY2UtZm9yLXRjcC1jbGllbnRzLWludGVyZmFjZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDYtcmVzdG9yZS1hbGxvd2FuY2UtZm9yLXRjcC1jbGllbnRzLWludGVyZmFjZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MjFkMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA2LXJlc3RvcmUtYWxsb3dhbmNlLWZvci10Y3AtY2xpZW50cy1pbnRlcmZhY2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC81OTQzNGI5XQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSA1OTQzNGI5ODdlOGViNDM2YjA4YzI0ZTU1OWVlMDk0YzRlOTM5ZGFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZhbiBIdW50IDxlYWNoQGlzYy5vcmc+Ci1EYXRlOiBGcmksIDUgQXByIDIwMTkgMTY6MjY6MTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIHJlc3RvcmUgYWxsb3dhbmNlIGZvciB0Y3AtY2xpZW50cyA8IGludGVyZmFjZXMKLQotaW4gdGhlICJyZWZhY3RvciB0Y3BxdW90YSBhbmQgcGlwZWxpbmUgcmVmcyIgY29tbWl0LCB0aGUgY291bnRpbmcKLW9mIGFjdGl2ZSBpbnRlcmZhY2VzIHdhcyB0aWdodGVuZWQgaW4gc3VjaCBhIHdheSB0aGF0IG5hbWVkIGNvdWxkCi1mYWlsIHRvIGxpc3RlbiBvbiBhbiBpbnRlcmZhY2UgaWYgdGhlcmUgd2VyZSBtb3JlIGludGVyZmFjZXMgdGhhbgotdGNwLWNsaWVudHMuIHdoZW4gY2hlY2tpbmcgdGhlIHF1b3RhIHRvIHN0YXJ0IGFjY2VwdGluZyBvbiBhbgotaW50ZXJmYWNlLCBpZiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBjbGllbnRzIHdhcyBhYm92ZSB6ZXJvLCB0aGVuCi1pdCB3YXMgcHJlc3VtZWQgdGhhdCBzb21lIG90aGVyIGNsaWVudCB3YXMgYWJsZSB0byBoYW5kbGUgYWNjZXB0aW5nCi1uZXcgY29ubmVjdGlvbnMuIHRoaXMsIGhvd2V2ZXIsIGlnbm9yZWQgdGhlIGZhY3QgdGhhdCB0aGUgY3VycmVudCBjbGllbnQKLWNvdWxkIGJlIGluY2x1ZGVkIGluIHRoYXQgY291bnQsIHNvIGlmIHRoZSBxdW90YSB3YXMgYWxyZWFkeSBleGNlZWRlZAotYmVmb3JlIGFsbCB0aGUgaW50ZXJmYWNlcyB3ZXJlIGxpc3RlbmluZywgc29tZSBpbnRlcmZhY2VzIHdvdWxkIG5ldmVyCi1saXN0ZW4uCi0KLXdlIG5vdyBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGNsaWVudCBoYXMgYmVlbiBtYXJrZWQgYWN0aXZlOyBpZiBzbywKLXRoZW4gdGhlIG51bWJlciBvZiBhY3RpdmUgY2xpZW50cyBvbiB0aGUgaW50ZXJmYWNlIG11c3QgYmUgZ3JlYXRlcgotdGhhbiAxLCBub3QgMC4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMGI0ZTJjZDRjMzE5MmJhODg1NjlkZDM0NGY1NDJhOGNjNDM3NDJiNSkKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGQwMTAyM2FhYWMzNTU0M2RhZmZiZGY0ODQ2NGUzMjAxNTAyMzVkNDEpCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgICAgICB8IDggKysrKystLS0KLSBkb2MvYXJtL0J2OUFSTS1ib29rLnhtbCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IGQ4MjZhYjMyYmYuLjg0NTMyNmFiYzAgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTM0NjQsOCArMzQ2NCw5IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICoKLSAJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50cyBhcmUKLSAJCSAqIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMgaW50ZXJmYWNlICh3aGV0aGVyCi0tCQkgKiBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yIHByb2Nlc3NpbmcpLiBJZiB3ZSBmaW5kIGF0IGxlYXN0Ci0tCQkgKiBvbmUsIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzCi0rCQkgKiBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yIHByb2Nlc3NpbmcpLiBJZiB3ZSBmaW5kIHRoYXQgYXQKLSsJCSAqIGxlYXN0IG9uZSBjbGllbnQgb3RoZXIgdGhhbiB0aGlzIG9uZSBpcyBhY3RpdmUsIHRoZW4KLSsJCSAqIGl0J3Mgb2theSAqbm90KiB0byBjYWxsIGFjY2VwdCAtIHdlIGNhbiBsZXQgdGhpcwotIAkJICogY2xpZW50IGdvIGluYWN0aXZlIGFuZCBhbm90aGVyIHdpbGwgdGFrZSBvdmVyIHdoZW4gaXQncwotIAkJICogZG9uZS4KLSAJCSAqCi1AQCAtMzQ3OSw3ICszNDgwLDggQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZSBudW1iZXIgb2YgbGlzdGVuaW5nCi0gCQkgKiBpbnRlcmZhY2VzIHBsdXMgMS4pCi0gCQkgKi8KLS0JCWV4aXQgPSAoaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMCkgPiAwKTsKLSsJCWV4aXQgPSAoaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMCkgPgotKwkJCShjbGllbnQtPnRjcGFjdGl2ZSA/IDEgOiAwKSk7Ci0gCQlpZiAoZXhpdCkgewotIAkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLSAJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci1kaWZmIC0tZ2l0IGEvZG9jL2FybS9CdjlBUk0tYm9vay54bWwgYi9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotaW5kZXggMzgxNzY4ZDU0MC4uOWM3NmQzY2Q2ZiAxMDA2NDQKLS0tLSBhL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sCi0rKysgYi9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotQEAgLTg0OTMsNyArODQ5Myw4IEBAIGF2b2lkLXY2LXVkcC1wb3J0cyB7IDQwMDAwOyByYW5nZSA1MDAwMCA2MDAwMDsgfTsKLSAJCTxwYXJhPgotIAkJICBUaGUgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgcmVzZXJ2ZWQgZm9yIFRDUCwgc3RkaW8sCi0gCQkgIGV0Yy4gIFRoaXMgbmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBjb3ZlciB0aGUgbnVtYmVyIG9mCi0tCQkgIGludGVyZmFjZXMgPGNvbW1hbmQ+bmFtZWQ8L2NvbW1hbmQ+IGxpc3RlbnMgb24sIDxjb21tYW5kPnRjcC1jbGllbnRzPC9jb21tYW5kPiBhcyB3ZWxsIGFzCi0rCQkgIGludGVyZmFjZXMgPGNvbW1hbmQ+bmFtZWQ8L2NvbW1hbmQ+IGxpc3RlbnMgb24gcGx1cwotKwkJICA8Y29tbWFuZD50Y3AtY2xpZW50czwvY29tbWFuZD4sIGFzIHdlbGwgYXMKLSAJCSAgdG8gcHJvdmlkZSByb29tIGZvciBvdXRnb2luZyBUQ1AgcXVlcmllcyBhbmQgaW5jb21pbmcgem9uZQotIAkJICB0cmFuc2ZlcnMuICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD41MTI8L2xpdGVyYWw+LgotIAkJICBUaGUgbWluaW11bSB2YWx1ZSBpcyA8bGl0ZXJhbD4xMjg8L2xpdGVyYWw+IGFuZCB0aGUKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNy1SZXBsYWNlLWF0b21pYy1vcGVyYXRpb25zLWluLWJpbi1uYW1lZC1jbGllbnQuYy13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA3LVJlcGxhY2UtYXRvbWljLW9wZXJhdGlvbnMtaW4tYmluLW5hbWVkLWNsaWVudC5jLXdpdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhODRlY2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA3LVJlcGxhY2UtYXRvbWljLW9wZXJhdGlvbnMtaW4tYmluLW5hbWVkLWNsaWVudC5jLXdpdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotQmFja3BvcnQgY29tbWl0IHRvIGZpeCBjb21waWxlIGVycm9yIG9uIGFybSBjYXVzZWQgYnkgY29tbWl0cyB3aGljaCBhcmUKLXRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC9lZjQ5NzgwXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBlZjQ5NzgwZDMwZDNkZGM1NzM1Y2ZjMzI1NjFiNjc4YTYzNGZhNzJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP09uZD1DNT05OWVqPTIwU3VyPUMzPUJEPz0gPG9uZHJlakBzdXJ5Lm9yZz4KLURhdGU6IFdlZCwgMTcgQXByIDIwMTkgMTU6MjI6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSBhdG9taWMgb3BlcmF0aW9ucyBpbiBiaW4vbmFtZWQvY2xpZW50LmMgd2l0aAotIGlzY19yZWZjb3VudCByZWZlcmVuY2UgY291bnRpbmcKLQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrLS0tLS0tLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCB8ICA1ICsrKy0tCi0gYmluL25hbWVkL2ludGVyZmFjZW1nci5jICAgICAgICAgICAgICAgfCAgNyArKysrKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggODQ1MzI2YWJjMC4uMjlmZWNhZGNhOCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtNDAyLDEyICs0MDIsMTAgQEAgdGNwY29ubl9kZXRhY2gobnNfY2xpZW50X3QgKmNsaWVudCkgewotIHN0YXRpYyB2b2lkCi0gbWFya190Y3BfYWN0aXZlKG5zX2NsaWVudF90ICpjbGllbnQsIGJvb2wgYWN0aXZlKSB7Ci0gCWlmIChhY3RpdmUgJiYgIWNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAxKTsKLSsJCWlzY19yZWZjb3VudF9pbmNyZW1lbnQwKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgTlVMTCk7Ci0gCQljbGllbnQtPnRjcGFjdGl2ZSA9IGFjdGl2ZTsKLSAJfSBlbHNlIGlmICghYWN0aXZlICYmIGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQl1aW50MzJfdCBvbGQgPQotLQkJCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIC0xKTsKLS0JCUlOU0lTVChvbGQgPiAwKTsKLSsJCWlzY19yZWZjb3VudF9kZWNyZW1lbnQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCBOVUxMKTsKLSAJCWNsaWVudC0+dGNwYWN0aXZlID0gYWN0aXZlOwotIAl9Ci0gfQotQEAgLTU1NCw3ICs1NTIsNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCWlmIChjbGllbnQtPm1vcnRhbCAmJiBUQ1BfQ0xJRU5UKGNsaWVudCkgJiYKLSAJCSAgICBjbGllbnQtPm5ld3N0YXRlICE9IE5TX0NMSUVOVFNUQVRFX0ZSRUVEICYmCi0gCQkgICAgIW5zX2dfY2xpZW50dGVzdCAmJgotLQkJICAgIGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIDApID09IDApCi0rCQkgICAgaXNjX3JlZmNvdW50X2N1cnJlbnQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nKSA9PSAwKQotIAkJewotIAkJCS8qIE5vYm9keSBlbHNlIGlzIGFjY2VwdGluZyAqLwotIAkJCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci1AQCAtMzMyOCw3ICszMzI2LDYgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCW5zX2NsaWVudF90ICpjbGllbnQgPSBldmVudC0+ZXZfYXJnOwotIAlpc2Nfc29ja2V0X25ld2Nvbm5ldl90ICpuZXZlbnQgPSAoaXNjX3NvY2tldF9uZXdjb25uZXZfdCAqKWV2ZW50OwotLQl1aW50MzJfdCBvbGQ7Ci0gCi0gCVJFUVVJUkUoZXZlbnQtPmV2X3R5cGUgPT0gSVNDX1NPQ0tFVkVOVF9ORVdDT05OKTsKLSAJUkVRVUlSRShOU19DTElFTlRfVkFMSUQoY2xpZW50KSk7Ci1AQCAtMzM0OCw4ICszMzQ1LDcgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDEpOwotIAljbGllbnQtPm5hY2NlcHRzLS07Ci0gCi0tCW9sZCA9IGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIC0xKTsKLS0JSU5TSVNUKG9sZCA+IDApOwotKwlpc2NfcmVmY291bnRfZGVjcmVtZW50KCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgTlVMTCk7Ci0gCi0gCS8qCi0gCSAqIFdlIG11c3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIG5ldyBzb2NrZXQgYmVmb3JlIHRoZSBleGl0Ci1AQCAtMzQ4MCw4ICszNDc2LDggQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZSBudW1iZXIgb2YgbGlzdGVuaW5nCi0gCQkgKiBpbnRlcmZhY2VzIHBsdXMgMS4pCi0gCQkgKi8KLS0JCWV4aXQgPSAoaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMCkgPgotLQkJCShjbGllbnQtPnRjcGFjdGl2ZSA/IDEgOiAwKSk7Ci0rCQlleGl0ID0gKGlzY19yZWZjb3VudF9jdXJyZW50KCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSkgPgotKwkJCShjbGllbnQtPnRjcGFjdGl2ZSA/IDFVIDogMFUpKTsKLSAJCWlmIChleGl0KSB7Ci0gCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotIAkJCSh2b2lkKWV4aXRfY2hlY2soY2xpZW50KTsKLUBAIC0zNTM5LDcgKzM1MzUsNyBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogbGlzdGVuaW5nIGZvciBjb25uZWN0aW9ucyBpdHNlbGYgdG8gcHJldmVudCB0aGUgaW50ZXJmYWNlCi0gCSAqIGdvaW5nIGRlYWQuCi0gCSAqLwotLQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAxKTsKLSsJaXNjX3JlZmNvdW50X2luY3JlbWVudDAoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCBOVUxMKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1pbmRleCAzNTM1ZWYyMmE4Li42ZTEwZjIxMGZkIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1AQCAtNDUsNiArNDUsNyBAQAotICNpbmNsdWRlIDxpc2MvbWFnaWMuaD4KLSAjaW5jbHVkZSA8aXNjL21lbS5oPgotICNpbmNsdWRlIDxpc2Mvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPGlzYy9yZWZjb3VudC5oPgotIAotICNpbmNsdWRlIDxkbnMvcmVzdWx0Lmg+Ci0gCi1AQCAtNzUsMTEgKzc2LDExIEBAIHN0cnVjdCBuc19pbnRlcmZhY2UgewotIAkJCQkJCS8qJTwgVURQIGRpc3BhdGNoZXJzLiAqLwotIAlpc2Nfc29ja2V0X3QgKgkJdGNwc29ja2V0OwkvKiU8IFRDUCBzb2NrZXQuICovCi0gCWlzY19kc2NwX3QJCWRzY3A7CQkvKiU8ICJsaXN0ZW4tb24iIERTQ1AgdmFsdWUgKi8KLS0JaW50MzJfdAkJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJaXNjX3JlZmNvdW50X3QJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSAJCQkJCQkgICAgIHJlYWR5IHRvIGFjY2VwdCBuZXcKLSAJCQkJCQkgICAgIFRDUCBjb25uZWN0aW9ucyBvbiB0aGlzCi0gCQkJCQkJICAgICBpbnRlcmZhY2UgKi8KLS0JaW50MzJfdAkJCW50Y3BhY3RpdmU7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJaXNjX3JlZmNvdW50X3QJCW50Y3BhY3RpdmU7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSAJCQkJCQkgICAgIHNlcnZpY2luZyBUQ1AgcXVlcmllcwotIAkJCQkJCSAgICAgKHdoZXRoZXIgYWNjZXB0aW5nIG9yCi0gCQkJCQkJICAgICBjb25uZWN0ZWQpICovCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1pbmRleCBkOWY2ZGY1ODAyLi4xMzU1MzNiZTZiIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi0rKysgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLUBAIC0zODYsOCArMzg2LDggQEAgbnNfaW50ZXJmYWNlX2NyZWF0ZShuc19pbnRlcmZhY2VtZ3JfdCAqbWdyLCBpc2Nfc29ja2FkZHJfdCAqYWRkciwKLSAJICogY29ubmVjdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGluIHBhcmFsbGVsIGV2ZW4gdGhvdWdoIHRoZXJlIGlzCi0gCSAqIG9ubHkgb25lIGNsaWVudCBpbml0aWFsbHkuCi0gCSAqLwotLQlpZnAtPm50Y3BhY2NlcHRpbmcgPSAwOwotLQlpZnAtPm50Y3BhY3RpdmUgPSAwOwotKwlpc2NfcmVmY291bnRfaW5pdCgmaWZwLT5udGNwYWNjZXB0aW5nLCAwKTsKLSsJaXNjX3JlZmNvdW50X2luaXQoJmlmcC0+bnRjcGFjdGl2ZSwgMCk7Ci0gCi0gCWlmcC0+bnVkcGRpc3BhdGNoID0gMDsKLSAKLUBAIC02MTgsNiArNjE4LDkgQEAgbnNfaW50ZXJmYWNlX2Rlc3Ryb3kobnNfaW50ZXJmYWNlX3QgKmlmcCkgewotIAotIAluc19pbnRlcmZhY2VtZ3JfZGV0YWNoKCZpZnAtPm1ncik7Ci0gCi0rCWlzY19yZWZjb3VudF9kZXN0cm95KCZpZnAtPm50Y3BhY3RpdmUpOwotKwlpc2NfcmVmY291bnRfZGVzdHJveSgmaWZwLT5udGNwYWNjZXB0aW5nKTsKLSsKLSAJaWZwLT5tYWdpYyA9IDA7Ci0gCWlzY19tZW1fcHV0KG1jdHgsIGlmcCwgc2l6ZW9mKCppZnApKTsKLSB9Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2gKaW5kZXggMzdlMjEwZS4uODQ1NTllNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTQ3M2QyOTg0MzU3OTgwMmU5NmIwMjkzYTNlOTUzZmVkOTNkZTgyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWRkYTIwZmI1YTZlODg1NDhmODVlMzlkMzRkNmMwNzQzMDZlMTViYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCA5IEp1biAyMDE1IDExOjIyOjAwIC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJpbmQ6IGVuc3VyZSBzZWFyY2hpbmcgZm9yIGpzb24gaGVhZGVycyBzZWFyY2hlcyBzeXNyb290CkBAIC0yNywxNSArMjcsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBjb25maWd1cmUuaW4gfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogYmluZC05LjExLjMvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmluZC05LjExLjMub3JpZy9jb25maWd1cmUuaW4KLSsrKyBiaW5kLTkuMTEuMy9jb25maWd1cmUuaW4KLUBAIC0yNTc0LDcgKzI1NzQsNyBAQCBjYXNlICIkdXNlX2xpYmpzb24iIGluCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxNzM5MmZkLi5lODVhNWM2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yNDQ5LDcgKzI0NDksNyBAQCBjYXNlICIkdXNlX2xpYmpzb24iIGluCiAgCQlsaWJqc29uX2xpYnM9IiIKICAJCTs7CiAgCWF1dG98eWVzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNjQxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuMTMuYmIKQEAgLTAsMCArMSwxNDEgQEAKK1NVTU1BUlkgPSAiSVNDIEludGVybmV0IERvbWFpbiBOYW1lIFNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy9zdy9iaW5kLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIklTQyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9OGYxN2Y2NGU0N2U4M2I2MGNkOTIwYTFlNGI1NDQxOWUiCisKK0RFUEVORFMgPSAib3BlbnNzbCBsaWJjYXAgemxpYiIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCisgICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hbWVkLWx3cmVzZC1WLWFuZC1zdGFydC1sb2ctaGlkZS1idWlsZC1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXZvaWQtc3RhcnQtZmFpbHVyZS13aXRoLWJpbmQtdXNlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjE3ZGUwZDAyNGFiMWVhYzM3N2YxYzI4NTRkYzI1MDU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkM2YzY2M5ZmNmY2RhYTc1MmRiMzVlYjI0NTk4YWZhMWZkY2MyNTA5ZDMyMjdmYzkwYTg2MzFiN2I0MDBmN2QiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8iCisjIHN0YXkgYXQgOS4xMSB1bnRpbCA5LjE2LCBmcm9tIDkuMTYgZm9sbG93IHRoZSBFU1YgdmVyc2lvbnMgZGl2aXNpYmxlIGJ5IDQKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjkuKDExfDE2fDIwfDI0fDI4KShcLlxkKykrKC1QXGQrKSopLyIKKworIyBCSU5EID49IDkuMTEuMiBuZWVkIGRoY3BkID49IDQuNC4wLAorIyBkb24ndCByZXBvcnQgaXQgaGVyZSBzaW5jZSBkaGNwZCBpcyBhbHJlYWR5IHJlY2VudCBlbm91Z2guCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOS02NDcwIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIG11bHRpbGliX3NjcmlwdCBtdWx0aWxpYl9oZWFkZXIKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vYmluZDktY29uZmlnICR7UE59OiR7YmluZGlyfS9pc2MtY29uZmlnLnNoIgorCisjIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQorUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgorUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob249eWVzIC0td2l0aC1weXRob24taW5zdGFsbC1kaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLCAtLXdpdGhvdXQtcHl0aG9uLCBweXRob24zLXBseS1uYXRpdmUsIgorCitFTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCitFWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyAtLXdpdGgtZWRkc2E9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbG1kYj1ubyBcCisgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICIKKworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUgZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQorCisjIGRoY3AgbmVlZHMgLmxhIHNvIGtlZXAgdGhlbQorUkVNT1ZFX0xJQlRPT0xfTEEgPSAiMCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKKwkjIGJ5ICJtYWtlIGluc3RhbGwiOgorCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAorCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisKKwlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKwlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCisJaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgorCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgXAorCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgXAorCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCisJCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1rZXltZ3IKKwlmaQorCisJIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJCWVjaG8gImQgL3J1bi9uYW1lZCAwNzU1IGJpbmQgYmluZCAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9iaW5kLmNvbmYKKwlmaQorCisgICAgb2VfbXVsdGlsaWJfaGVhZGVyIGlzYy9wbGF0Zm9ybS5oCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCisJIgorCitBTFRFUk5BVElWRV8ke1BOfS11dGlscyA9ICJuc2xvb2t1cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtuc2xvb2t1cF0gPSAiJHtiaW5kaXJ9L25zbG9va3VwIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnICR7YmluZGlyfS9tZGlnICR7YmluZGlyfS9uc2xvb2t1cCAke2JpbmRpcn0vbnN1cGRhdGUiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCitGSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCIKKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LWxpYnMiCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8qLnNvKiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyoubGEiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtYmluZCcsICcnLCBkKX0iCitGSUxFU19weXRob24zLWJpbmQgPSAiJHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCisgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9kbnNzZWMta2V5bWdyICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUkRFUEVORFNfcHl0aG9uMy1iaW5kID0gInB5dGhvbjMtY29yZSBweXRob24zLXBseSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS41LVA0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4OTc3MDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiSVNDICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT04ZjE3ZjY0ZTQ3ZTgzYjYwY2Q5MjBhMWU0YjU0NDE5ZSIKLQotREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCB6bGliIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXJuZGMta2V5LnNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2UtZXRjLWluaXRkLWJpbmQtc3RvcC13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmFtZWQtbHdyZXNkLVYtYW5kLXN0YXJ0LWxvZy1oaWRlLWJ1aWxkLW9wdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hdm9pZC1zdGFydC1mYWlsdXJlLXdpdGgtYmluZC11c2VyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYmluZC1maXgtQ1ZFLTIwMTktNjQ3MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1lbmZvcmNlbWVudC1vZi10Y3AtY2xpZW50cy12MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXRjcC1jbGllbnRzLWNvdWxkLXN0aWxsLWJlLWV4Y2VlZGVkLXYyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdXNlLXJlZmVyZW5jZS1jb3VudGVyLWZvci1waXBlbGluZS1ncm91cHMtdjMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1iZXR0ZXItdGNwcXVvdGEtYWNjb3VudGluZy1hbmQtY2xpZW50LW1vcnRhbGl0eS1jaGVjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtcmVmYWN0b3ItdGNwcXVvdGEtYW5kLXBpcGVsaW5lLXJlZnMtYWxsb3ctc3BlY2lhbC1jYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXJlc3RvcmUtYWxsb3dhbmNlLWZvci10Y3AtY2xpZW50cy1pbnRlcmZhY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctUmVwbGFjZS1hdG9taWMtb3BlcmF0aW9ucy1pbi1iaW4tbmFtZWQtY2xpZW50LmMtd2l0aC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZGRhYjRiNjFmYTQ1MTZmZTQwNDY3OWM3NGUzNzk2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZThjMDgxOTJiY2JhZWI2ZTlmMjM5MWE3MGU2NzU4M2IwMjdiOTBlOGM0YmMxNjA1ZGE2ZWIxMjZlZGRlNDM0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgotIyBzdGF5IGF0IDkuMTEgdW50aWwgOS4xNiwgZnJvbSA5LjE2IGZvbGxvdyB0aGUgRVNWIHZlcnNpb25zIGRpdmlzaWJsZSBieSA0Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj45LigxMXwxNnwyMHwyNHwyOCkoXC5cZCspKygtUFxkKykqKS8iCi0KLSMgQklORCA+PSA5LjExLjIgbmVlZCBkaGNwZCA+PSA0LjQuMCwKLSMgZG9uJ3QgcmVwb3J0IGl0IGhlcmUgc2luY2UgZGhjcGQgaXMgYWxyZWFkeSByZWNlbnQgZW5vdWdoLgotQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTktNjQ3MCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZyBtdWx0aWxpYl9zY3JpcHQKLQotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vYmluZDktY29uZmlnICR7UE59OiR7YmluZGlyfS9pc2MtY29uZmlnLnNoIgotCi0jIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQotUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgotUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob249eWVzIC0td2l0aC1weXRob24taW5zdGFsbC1kaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLCAtLXdpdGhvdXQtcHl0aG9uLCBweXRob24zLXBseS1uYXRpdmUsIgotCi1FTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCi1FWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyAtLXdpdGgtZWRkc2E9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbG1kYj1ubyBcCi0gICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICIKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUgZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQotCi0jIGRoY3AgbmVlZHMgLmxhIHNvIGtlZXAgdGhlbQotUkVNT1ZFX0xJQlRPT0xfTEEgPSAiMCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKLQkjIGJ5ICJtYWtlIGluc3RhbGwiOgotCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAotCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0KLQlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLQlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCi0JaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCi0JaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgotCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgXAotCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgXAotCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCi0JCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1rZXltZ3IKLQlmaQotCi0JIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcwotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JCWVjaG8gImQgL3J1bi9uYW1lZCAwNzU1IGJpbmQgYmluZCAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9iaW5kLmNvbmYKLQlmaQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYubG9jYWwgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLm9wdGlvbnMgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4wIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMTI3IFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuZW1wdHkgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLnJvb3QgXAotCSIKLQotQUxURVJOQVRJVkVfJHtQTn0tdXRpbHMgPSAibnNsb29rdXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbnNsb29rdXBdID0gIiR7YmluZGlyfS9uc2xvb2t1cCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyAke2JpbmRpcn0vbWRpZyAke2JpbmRpcn0vbnNsb29rdXAgJHtiaW5kaXJ9L25zdXBkYXRlIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgotRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2giCi0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1saWJzIgotRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vKi5zbyoiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8qLmxhIgotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWJpbmQnLCAnJywgZCl9IgotRklMRVNfcHl0aG9uMy1iaW5kID0gIiR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMgXAotICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vZG5zc2VjLWtleW1nciAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJERVBFTkRTX3B5dGhvbjMtYmluZCA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1wbHkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKaW5kZXggNDg0NTA5My4uMTUwZDkwOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwpAQCAtNDYsMjAgKzQ2LDEzIEBACiBQQUNLQUdFQ09ORklHW2J0cGNsaWVudF0gPSAiLS1lbmFibGUtYnRwY2xpZW50LC0tZGlzYWJsZS1idHBjbGllbnQsIGVsbCIKIFBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS1lbmFibGUtdWRldiwtLWRpc2FibGUtdWRldix1ZGV2IgogCi1TUkNfVVJJID0gIlwKLSAgICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9vdXQtb2YtdHJlZS5wYXRjaCBcCi0gICAgZmlsZTovL2luaXQgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAnZmlsZTovLzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaCcsIGQpfSBcCi0gICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1GaXgtYS1yYWNlLWlzc3VlLWZvci10b29scy5wYXRjaCBcCi0gICAgZmlsZTovL0NWRS0yMDE4LTEwOTEwLnBhdGNoIFwKLSAgICBmaWxlOi8vZ2NjOS1maXhlcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXRvb2xzLWJ0cGNsaWVudC5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2ggXAotIgorU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgIgogUyA9ICIke1dPUktESVJ9L2JsdWV6LSR7UFZ9IgogCiBDVkVfUFJPRFVDVCA9ICJibHVleiIKQEAgLTcwLDYgKzYzLDcgQEAKICAgLS1lbmFibGUtdGVzdCBcCiAgIC0tZW5hYmxlLWRhdGFmaWxlcyBcCiAgIC0tZW5hYmxlLWxpYnJhcnkgXAorICAtLXdpdGhvdXQtenNoLWNvbXBsZXRpb24tZGlyIFwKICIKIAogIyBibHVlejUgYnVpbGRzIGEgbGFyZ2UgbnVtYmVyIG9mIHVzZWZ1bCB1dGlsaXRpZXMgYnV0IGRvZXMgbm90CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gKaW5kZXggZGE3MTQwOS4uNjE4ZWQ3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTljY2RiZTE1NTAyOGM0Yzc4OTgwM2E0MjkwNzI2NzViODdkMGMzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjc0ZWI5N2M5ZmIzYzBlZTI4OTU3NDJlNzczYWM2YTNjNDFjOTk5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEdpb3Zhbm5pIENhbXBhZ25hIDxnY2FtcGFnbmEtY05VZGxSb3RGTW5OTHhqVGVuTGV0d0BwdWJsaWMuZ21hbmUub3JnPgogRGF0ZTogU2F0LCAxMiBPY3QgMjAxMyAxNzo0NToyNSArMDIwMAogU3ViamVjdDogW1BBVENIXSBBbGxvdyB1c2luZyBvYmV4ZCB3aXRob3V0IHN5c3RlbWQgaW4gdGhlIHVzZXIgc2Vzc2lvbgpAQCAtMTcsMjIgKzE3LDIyIEBACiBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgVmlndWVyYSA8amF2aWVyLnZpZ3VlcmFAZGlnaS5jb20+CiAKIC0tLQotIE1ha2VmaWxlLm9iZXhkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIG9iZXhkL3NyYy97b3JnLmJsdWV6Lm9iZXguc2VydmljZSA9PiBvcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmlufSB8IDIgKy0KKyBNYWtlZmlsZS5vYmV4ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgLi4uL3NyYy97b3JnLmJsdWV6Lm9iZXguc2VydmljZSA9PiBvcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmlufSB8IDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKICByZW5hbWUgb2JleGQvc3JjL3tvcmcuYmx1ZXoub2JleC5zZXJ2aWNlID0+IG9yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW59ICg3NiUpCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5vYmV4ZCBiL01ha2VmaWxlLm9iZXhkCi1pbmRleCBjNDYyNjkyLi4wMzI1ZjY2IDEwMDY0NAoraW5kZXggZGU1OWQyOS4uNzMwMDRhMyAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLm9iZXhkCiArKysgYi9NYWtlZmlsZS5vYmV4ZAogQEAgLTEsMTIgKzEsMTIgQEAKICBpZiBTWVNURU1ECi0gc3lzdGVtZHVzZXJ1bml0ZGlyID0gQFNZU1RFTURfVVNFUlVOSVRESVJACisgc3lzdGVtZHVzZXJ1bml0ZGlyID0gJChTWVNURU1EX1VTRVJVTklURElSKQogIHN5c3RlbWR1c2VydW5pdF9EQVRBID0gb2JleGQvc3JjL29iZXguc2VydmljZQogK2VuZGlmCiAgCi0gZGJ1c3Nlc3Npb25idXNkaXIgPSBAREJVU19TRVNTSU9OQlVTRElSQAorIGRidXNzZXNzaW9uYnVzZGlyID0gJChEQlVTX1NFU1NJT05CVVNESVIpCiAgZGJ1c3Nlc3Npb25idXNfREFUQSA9IG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCiAtZW5kaWYKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtTWFrZWZpbGUuYW0tRml4LWEtcmFjZS1pc3N1ZS1mb3ItdG9vbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLU1ha2VmaWxlLmFtLUZpeC1hLXJhY2UtaXNzdWUtZm9yLXRvb2xzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmNiOTc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtTWFrZWZpbGUuYW0tRml4LWEtcmFjZS1pc3N1ZS1mb3ItdG9vbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDExN2M0MTI0MmMwMWUwNTcyOTVhZWQ4MGVkOTczYzZkYzdlMzVmZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCA4IE9jdCAyMDE5IDExOjAxOjU2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggQmx1ZVpdIE1ha2VmaWxlLmFtOiBhZGQgbWlzc2luZyBta2RpciBpbiBydWxlcyBnZW5lcmF0aW9uCi0KLUluIHBhcmFsbGVsIG91dC1vZi10cmVlIGJ1aWxkcyBpdCdzIHBvc3NpYmxlIHRoYXQgdG9vbHMvKi5ydWxlcyBhcmUKLWdlbmVyYXRlZCBiZWZvcmUgdGhlIHRhcmdldCBkaXJlY3RvcnkgaGFzIGJlZW4gaW1wbGljaXRseSBjcmVhdGVkLiBTb2x2ZSB0aGlzIGJ5Ci1jcmVhdGluZyB0aGUgZGlyZWN0b3J5IGJlZm9yZSB3cml0aW5nIGludG8gaXQuCi0tLS0KLSBNYWtlZmlsZS5hbSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMmFjMjhiMjNkLi5lN2JjZDIzNjYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01ODksNiArNTg5LDcgQEAgc3JjL2J1aWx0aW4uaDogc3JjL2dlbmJ1aWx0aW4gJChidWlsdGluX3NvdXJjZXMpCi0gCSQoQU1fVl9HRU4pJChzcmNkaXIpL3NyYy9nZW5idWlsdGluICQoYnVpbHRpbl9tb2R1bGVzKSA+ICRACi0gCi0gdG9vbHMvJS5ydWxlczoKLSsJJChBTV9WX2F0KSQoTUtESVJfUCkgdG9vbHMKLSAJJChBTV9WX0dFTiljcCAkKHNyY2RpcikvJChzdWJzdCA5Ny0sLCRAKSAkQAotIAotICQobGliX2xpYmJsdWV0b290aF9sYV9PQkpFQ1RTKTogJChsb2NhbF9oZWFkZXJzKQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYTIwYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gZjM2ZjcxZjYwYjFlNjhjMGYxMmU2MTViOWIxMjhkMDg5ZWMzZGQxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KLURhdGU6IEZyaSwgNyBKdW4gMjAxOSAwOTo1MTozMyArMDIwMAotU3ViamVjdDogW1BBVENIXSB0b29sczogRml4IGJ1aWxkIGFmdGVyIHkyMDM4IGNoYW5nZXMgaW4gZ2xpYmMKLQotVGhlIDMyLWJpdCBTSU9DR1NUQU1QIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSB0aGUgZGVwcmVjYXRlZCBuYW1lCi10byBmaXggdGhlIGJ1aWxkLgotCi1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0IGNvbW1pdCBmMzZmNzFmNjBiMWU2OGMwZjEyZTYxNWI5YjEyOGQwODllYzNkZDE5Ci0KLVNpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEBnbWFpbC5jb20+Ci0KLS0tLQotIHRvb2xzL2wydGVzdC5jIHwgNiArKysrKy0KLSB0b29scy9yY3Rlc3QuYyB8IDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbDJ0ZXN0LmMgYi90b29scy9sMnRlc3QuYwotaW5kZXggZTc1NWFjODgxLi5lNzg3YzJjZTIgMTAwNjQ0Ci0tLS0gYS90b29scy9sMnRlc3QuYwotKysrIGIvdG9vbHMvbDJ0ZXN0LmMKLUBAIC01NSw2ICs1NSwxMCBAQAotICNkZWZpbmUgQlJFRFJfREVGQVVMVF9QU00JMHgxMDExCi0gI2RlZmluZSBMRV9ERUZBVUxUX1BTTQkJMHgwMDgwCi0gCi0rI2lmbmRlZiBTSU9DR1NUQU1QX09MRAotKyNkZWZpbmUgU0lPQ0dTVEFNUF9PTEQgU0lPQ0dTVEFNUAotKyNlbmRpZgotKwotIC8qIFRlc3QgbW9kZXMgKi8KLSBlbnVtIHsKLSAJU0VORCwKLUBAIC05MDcsNyArOTExLDcgQEAgc3RhdGljIHZvaWQgcmVjdl9tb2RlKGludCBzaykKLSAJCQlpZiAodGltZXN0YW1wKSB7Ci0gCQkJCXN0cnVjdCB0aW1ldmFsIHR2OwotIAotLQkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVAsICZ0dikgPCAwKSB7Ci0rCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUF9PTEQsICZ0dikgPCAwKSB7Ci0gCQkJCQl0aW1lc3RhbXAgPSAwOwotIAkJCQkJbWVtc2V0KHRzLCAwLCBzaXplb2YodHMpKTsKLSAJCQkJfSBlbHNlIHsKLWRpZmYgLS1naXQgYS90b29scy9yY3Rlc3QuYyBiL3Rvb2xzL3JjdGVzdC5jCi1pbmRleCA5NDQ5MGY0NjIuLmJjOGVkODc1ZCAxMDA2NDQKLS0tLSBhL3Rvb2xzL3JjdGVzdC5jCi0rKysgYi90b29scy9yY3Rlc3QuYwotQEAgLTUwLDYgKzUwLDEwIEBACi0gCi0gI2luY2x1ZGUgInNyYy9zaGFyZWQvdXRpbC5oIgotIAotKyNpZm5kZWYgU0lPQ0dTVEFNUF9PTEQKLSsjZGVmaW5lIFNJT0NHU1RBTVBfT0xEIFNJT0NHU1RBTVAKLSsjZW5kaWYKLSsKLSAvKiBUZXN0IG1vZGVzICovCi0gZW51bSB7Ci0gCVNFTkQsCi1AQCAtNTA1LDcgKzUwOSw3IEBAIHN0YXRpYyB2b2lkIHJlY3ZfbW9kZShpbnQgc2spCi0gCQkJaWYgKHRpbWVzdGFtcCkgewotIAkJCQlzdHJ1Y3QgdGltZXZhbCB0djsKLSAKLS0JCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QLCAmdHYpIDwgMCkgewotKwkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVBfT0xELCAmdHYpIDwgMCkgewotIAkJCQkJdGltZXN0YW1wID0gMDsKLSAJCQkJCW1lbXNldCh0cywgMCwgc2l6ZW9mKHRzKSk7Ci0gCQkJCX0gZWxzZSB7Ci0tLSAKLTIuMTkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLWJ0cGNsaWVudC5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLWJ0cGNsaWVudC5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMGFhYWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1idHBjbGllbnQuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAwYjE3NjY1MTRmNjg0N2M3MzY3ZmNlMDdmMTlhNzUwZWM3NGMxMWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI2IFNlcCAyMDE5IDE2OjE5OjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRvb2xzL2J0cGNsaWVudC5jOiBpbmNsdWRlIHNpZ25hbC5oCi0KLUZpeCBjb21waWxlIGZhaWx1cmUgd2hlbiBjb25maWd1cmUgLS1lbmFibGUtYnRwY2xpZW50OgotYnRwY2xpZW50LmM6MjgzNDo3OiBlcnJvcjogJ1NJR0lOVCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW0Egc3Vic2V0IG9mIHRoZSBmdWxsIGZpeCB0aGF0IHdlbnQgdXBzdHJlYW1dCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdG9vbHMvYnRwY2xpZW50LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2J0cGNsaWVudC5jIGIvdG9vbHMvYnRwY2xpZW50LmMKLWluZGV4IGIyMTdkZjUuLmFlY2U3ZmUgMTAwNjQ0Ci0tLS0gYS90b29scy9idHBjbGllbnQuYwotKysrIGIvdG9vbHMvYnRwY2xpZW50LmMKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotIAotICNpbmNsdWRlIDxlbGwvZWxsLmg+Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0NWRS0yMDE4LTEwOTEwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvQ1ZFLTIwMTgtMTA5MTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNzgwNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvQ1ZFLTIwMTgtMTA5MTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MDUgKzAsMCBAQAotRnJvbSA5NzczMjFmMmM3Zjk3NGVhNjhhM2Q5MGRmMjk2YzY2MTg5YTNmMjU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotRGF0ZTogRnJpLCAyMSBKdW4gMjAxOSAxNzo1NzozNSArMDkwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxOC0xMDkxMAotCi1BIGJ1ZyBpbiBCbHVleiBtYXkgYWxsb3cgZm9yIHRoZSBCbHVldG9vdGggRGlzY292ZXJhYmxlIHN0YXRlIGJlaW5nIHNldCB0byBvbgotd2hlbiBubyBCbHVldG9vdGggYWdlbnQgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzeXN0ZW0uIFRoaXMgc2l0dWF0aW9uIGNvdWxkCi1sZWFkIHRvIHRoZSB1bmF1dGhvcml6ZWQgcGFpcmluZyBvZiBjZXJ0YWluIEJsdWV0b290aCBkZXZpY2VzIHdpdGhvdXQgYW55Ci1mb3JtIG9mIGF1dGhlbnRpY2F0aW9uLgotCi1DVkU6IENWRS0yMDE4LTEwOTEwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1TdWJqZWN0OiAgICBbUEFUQ0ggQmx1ZVogMS80XSBjbGllbnQ6IEFkZCBkaXNjb3ZlcmFibGUtdGltZW91dCBjb21tYW5kCi1Gcm9tOiAgICAgICBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LmRlbnR6ICgpIGdtYWlsICEgY29tPgotRGF0ZTogICAgICAgMjAxOC0wNy0yNSAxMDoyMDozMgotTWVzc2FnZS1JRDogMjAxODA3MjUxMDIwMzUuMTk0MzktMS1sdWl6LmRlbnR6ICgpIGdtYWlsICEgY29tCi1bRG93bmxvYWQgUkFXIG1lc3NhZ2Ugb3IgYm9keV0KLQotRnJvbTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotCi1UaGlzIGFkZHMgZGlzY292ZXJhYmxlLXRpbWVvdXQgY29tbWFuZCB3aGljaCBjYW4gYmUgdXNlZCB0byBnZXQvc2V0Ci1EaXNjb3ZlcmFibGVUaW1lb3V0IHByb3BlcnR5OgotCi1bYmx1ZXRvb3RoXSMgZGlzY292ZXJhYmxlLXRpbWVvdXQgMTgwCi1DaGFuZ2luZyBkaXNjb3ZlcmFibGUtdGltZW91dCAxODAgc3VjY2VlZGVkCi0tLS0KLSBjbGllbnQvbWFpbi5jICAgICAgIHwgIDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBkb2MvYWRhcHRlci1hcGkudHh0IHwgICA2ICsrKwotIHNyYy9hZGFwdGVyLmMgICAgICAgfCAxMjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L21haW4uYyBiL2NsaWVudC9tYWluLmMKLWluZGV4IDg3MzIzZDguLjFhNjZhM2EgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvbWFpbi5jCi0rKysgYi9jbGllbnQvbWFpbi5jCi1AQCAtODc3LDYgKzg3Nyw3IEBAIHN0YXRpYyB2b2lkIGNtZF9zaG93KGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXByaW50X3Byb3BlcnR5KHByb3h5LCAiQ2xhc3MiKTsKLSAJcHJpbnRfcHJvcGVydHkocHJveHksICJQb3dlcmVkIik7Ci0gCXByaW50X3Byb3BlcnR5KHByb3h5LCAiRGlzY292ZXJhYmxlIik7Ci0rCXByaW50X3Byb3BlcnR5KHByb3h5LCAiRGlzY292ZXJhYmxlVGltZW91dCIpOwotIAlwcmludF9wcm9wZXJ0eShwcm94eSwgIlBhaXJhYmxlIik7Ci0gCXByaW50X3V1aWRzKHByb3h5KTsKLSAJcHJpbnRfcHJvcGVydHkocHJveHksICJNb2RhbGlhcyIpOwotQEAgLTEwNjEsNiArMTA2Miw0NyBAQCBzdGF0aWMgdm9pZCBjbWRfZGlzY292ZXJhYmxlKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7Ci0gfQotIAotK3N0YXRpYyB2b2lkIGNtZF9kaXNjb3ZlcmFibGVfdGltZW91dChpbnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsJdWludDMyX3QgdmFsdWU7Ci0rCWNoYXIgKmVuZHB0ciA9IE5VTEw7Ci0rCWNoYXIgKnN0cjsKLSsKLSsJaWYgKGFyZ2MgPCAyKSB7Ci0rCQlEQnVzTWVzc2FnZUl0ZXIgaXRlcjsKLSsKLSsJCWlmICghZ19kYnVzX3Byb3h5X2dldF9wcm9wZXJ0eShkZWZhdWx0X2N0cmwtPnByb3h5LAotKwkJCQkJIkRpc2NvdmVyYWJsZVRpbWVvdXQiLCAmaXRlcikpIHsKLSsJCQlidF9zaGVsbF9wcmludGYoIlVuYWJsZSB0byBnZXQgRGlzY292ZXJhYmxlVGltZW91dFxuIik7Ci0rCQkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSsJCX0KLSsKLSsJCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYygmaXRlciwgJnZhbHVlKTsKLSsKLSsJCWJ0X3NoZWxsX3ByaW50ZigiRGlzY292ZXJhYmxlVGltZW91dDogJWQgc2Vjb25kc1xuIiwgdmFsdWUpOwotKwotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCXZhbHVlID0gc3RydG9sKGFyZ3ZbMV0sICZlbmRwdHIsIDApOwotKwlpZiAoIWVuZHB0ciB8fCAqZW5kcHRyICE9ICdcMCcgfHwgdmFsdWUgPiBVSU5UMzJfTUFYKSB7Ci0rCQlidF9zaGVsbF9wcmludGYoIkludmFsaWQgYXJndW1lbnRcbiIpOwotKwkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwotKwlzdHIgPSBnX3N0cmR1cF9wcmludGYoImRpc2NvdmVyYWJsZS10aW1lb3V0ICVkIiwgdmFsdWUpOwotKwotKwlpZiAoZ19kYnVzX3Byb3h5X3NldF9wcm9wZXJ0eV9iYXNpYyhkZWZhdWx0X2N0cmwtPnByb3h5LAotKwkJCQkJIkRpc2NvdmVyYWJsZVRpbWVvdXQiLAotKwkJCQkJREJVU19UWVBFX1VJTlQzMiwgJnZhbHVlLAotKwkJCQkJZ2VuZXJpY19jYWxsYmFjaywgc3RyLCBnX2ZyZWUpKQotKwkJcmV0dXJuOwotKwotKwlnX2ZyZWUoc3RyKTsKLSsKLSsJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQgY21kX2FnZW50KGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gewotIAlkYnVzX2Jvb2xfdCBlbmFibGU7Ci1AQCAtMTEyNCw2ICsxMTY2LDcgQEAgc3RhdGljIHN0cnVjdCBzZXRfZGlzY292ZXJ5X2ZpbHRlcl9hcmdzIHsKLSAJY2hhciAqKnV1aWRzOwotIAlzaXplX3QgdXVpZHNfbGVuOwotIAlkYnVzX2Jvb2xfdCBkdXBsaWNhdGU7Ci0rCWRidXNfYm9vbF90IGRpc2NvdmVyYWJsZTsKLSAJYm9vbCBzZXQ7Ci0gfSBmaWx0ZXIgPSB7Ci0gCS5yc3NpID0gRElTVEFOQ0VfVkFMX0lOVkFMSUQsCi1AQCAtMTE2Myw2ICsxMjA2LDExIEBAIHN0YXRpYyB2b2lkIHNldF9kaXNjb3ZlcnlfZmlsdGVyX3NldHVwKERCdXNNZXNzYWdlSXRlciAqaXRlciwgdm9pZCAqdXNlcl9kYXRhKQotIAkJCQkJCURCVVNfVFlQRV9CT09MRUFOLAotIAkJCQkJCSZhcmdzLT5kdXBsaWNhdGUpOwotIAotKwlpZiAoYXJncy0+ZGlzY292ZXJhYmxlKQotKwkJZ19kYnVzX2RpY3RfYXBwZW5kX2VudHJ5KCZkaWN0LCAiRGlzY292ZXJhYmxlIiwKLSsJCQkJCQlEQlVTX1RZUEVfQk9PTEVBTiwKLSsJCQkJCQkmYXJncy0+ZGlzY292ZXJhYmxlKTsKLSsKLSAJZGJ1c19tZXNzYWdlX2l0ZXJfY2xvc2VfY29udGFpbmVyKGl0ZXIsICZkaWN0KTsKLSB9Ci0gCi1AQCAtMTMyMCw2ICsxMzY4LDI2IEBAIHN0YXRpYyB2b2lkIGNtZF9zY2FuX2ZpbHRlcl9kdXBsaWNhdGVfZGF0YShpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlmaWx0ZXIuc2V0ID0gZmFsc2U7Ci0gfQotIAotK3N0YXRpYyB2b2lkIGNtZF9zY2FuX2ZpbHRlcl9kaXNjb3ZlcmFibGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7Ci0rCWlmIChhcmdjIDwgMiB8fCAhc3RybGVuKGFyZ3ZbMV0pKSB7Ci0rCQlidF9zaGVsbF9wcmludGYoIkRpc2NvdmVyYWJsZTogJXNcbiIsCi0rCQkJCWZpbHRlci5kaXNjb3ZlcmFibGUgPyAib24iIDogIm9mZiIpOwotKwkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9TVUNDRVNTKTsKLSsJfQotKwotKwlpZiAoIXN0cmNtcChhcmd2WzFdLCAib24iKSkKLSsJCWZpbHRlci5kaXNjb3ZlcmFibGUgPSB0cnVlOwotKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJvZmYiKSkKLSsJCWZpbHRlci5kaXNjb3ZlcmFibGUgPSBmYWxzZTsKLSsJZWxzZSB7Ci0rCQlidF9zaGVsbF9wcmludGYoIkludmFsaWQgb3B0aW9uOiAlc1xuIiwgYXJndlsxXSk7Ci0rCQlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCi0rCWZpbHRlci5zZXQgPSBmYWxzZTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQgZmlsdGVyX2NsZWFyX3V1aWRzKHZvaWQpCi0gewotIAlnX3N0cmZyZWV2KGZpbHRlci51dWlkcyk7Ci1AQCAtMTM0OCw2ICsxNDE2LDExIEBAIHN0YXRpYyB2b2lkIGZpbHRlcl9jbGVhcl9kdXBsaWNhdGUodm9pZCkKLSAJZmlsdGVyLmR1cGxpY2F0ZSA9IGZhbHNlOwotIH0KLSAKLStzdGF0aWMgdm9pZCBmaWx0ZXJfY2xlYXJfZGlzY292ZXJhYmxlKHZvaWQpCi0rewotKwlmaWx0ZXIuZGlzY292ZXJhYmxlID0gZmFsc2U7Ci0rfQotKwotIHN0cnVjdCBjbGVhcl9lbnRyeSB7Ci0gCWNvbnN0IGNoYXIgKm5hbWU7Ci0gCXZvaWQgKCpjbGVhcikgKHZvaWQpOwotQEAgLTEzNTksNiArMTQzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xlYXJfZW50cnkgZmlsdGVyX2NsZWFyW10gPSB7Ci0gCXsgInBhdGhsb3NzIiwgZmlsdGVyX2NsZWFyX3BhdGhsb3NzIH0sCi0gCXsgInRyYW5zcG9ydCIsIGZpbHRlcl9jbGVhcl90cmFuc3BvcnQgfSwKLSAJeyAiZHVwbGljYXRlLWRhdGEiLCBmaWx0ZXJfY2xlYXJfZHVwbGljYXRlIH0sCi0rCXsgImRpc2NvdmVyYWJsZSIsIGZpbHRlcl9jbGVhcl9kaXNjb3ZlcmFibGUgfSwKLSAJe30KLSB9OwotIAotQEAgLTI0NjgsNyArMjU0MiwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0X3NoZWxsX21lbnUgc2Nhbl9tZW51ID0gewotIAl7ICJkdXBsaWNhdGUtZGF0YSIsICJbb24vb2ZmXSIsIGNtZF9zY2FuX2ZpbHRlcl9kdXBsaWNhdGVfZGF0YSwKLSAJCQkJIlNldC9HZXQgZHVwbGljYXRlIGRhdGEgZmlsdGVyIiwKLSAJCQkJTlVMTCB9LAotLQl7ICJjbGVhciIsICJbdXVpZHMvcnNzaS9wYXRobG9zcy90cmFuc3BvcnQvZHVwbGljYXRlLWRhdGFdIiwKLSsJeyAiZGlzY292ZXJhYmxlIiwgIltvbi9vZmZdIiwgY21kX3NjYW5fZmlsdGVyX2Rpc2NvdmVyYWJsZSwKLSsJCQkJIlNldC9HZXQgZGlzY292ZXJhYmxlIGZpbHRlciIsCi0rCQkJCU5VTEwgfSwKLSsJeyAiY2xlYXIiLAotKwkJIlt1dWlkcy9yc3NpL3BhdGhsb3NzL3RyYW5zcG9ydC9kdXBsaWNhdGUtZGF0YS9kaXNjb3ZlcmFibGVdIiwKLSAJCQkJY21kX3NjYW5fZmlsdGVyX2NsZWFyLAotIAkJCQkiQ2xlYXJzIGRpc2NvdmVyeSBmaWx0ZXIuIiwKLSAJCQkJZmlsdGVyX2NsZWFyX2dlbmVyYXRvciB9LAotQEAgLTI1NDksNiArMjYyNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRfc2hlbGxfbWVudSBtYWluX21lbnUgPSB7Ci0gCXsgImRpc2NvdmVyYWJsZSIsICI8b24vb2ZmPiIsIGNtZF9kaXNjb3ZlcmFibGUsCi0gCQkJCQkiU2V0IGNvbnRyb2xsZXIgZGlzY292ZXJhYmxlIG1vZGUiLAotIAkJCQkJCQlOVUxMIH0sCi0rCXsgImRpc2NvdmVyYWJsZS10aW1lb3V0IiwgIlt2YWx1ZV0iLCBjbWRfZGlzY292ZXJhYmxlX3RpbWVvdXQsCi0rCQkJCQkiU2V0IGRpc2NvdmVyYWJsZSB0aW1lb3V0IiwgTlVMTCB9LAotIAl7ICJhZ2VudCIsICAgICAgICAiPG9uL29mZi9jYXBhYmlsaXR5PiIsIGNtZF9hZ2VudCwKLSAJCQkJIkVuYWJsZS9kaXNhYmxlIGFnZW50IHdpdGggZ2l2ZW4gY2FwYWJpbGl0eSIsCi0gCQkJCQkJCWNhcGFiaWxpdHlfZ2VuZXJhdG9yfSwKLWRpZmYgLS1naXQgYS9kb2MvYWRhcHRlci1hcGkudHh0IGIvZG9jL2FkYXB0ZXItYXBpLnR4dAotaW5kZXggZDE0ZDBjYS4uNDc5MWFmMiAxMDA2NDQKLS0tLSBhL2RvYy9hZGFwdGVyLWFwaS50eHQKLSsrKyBiL2RvYy9hZGFwdGVyLWFwaS50eHQKLUBAIC0xMTMsNiArMTEzLDEyIEBAIE1ldGhvZHMJCXZvaWQgU3RhcnREaXNjb3ZlcnkoKQotIAkJCQlnZW5lcmF0ZWQgZm9yIGVpdGhlciBNYW51ZmFjdHVyZXJEYXRhIGFuZAotIAkJCQlTZXJ2aWNlRGF0YSBldmVyeXRpbWUgdGhleSBhcmUgZGlzY292ZXJlZC4KLSAKLSsJCQlib29sIERpc2NvdmVyYWJsZSAoRGVmYXVsdDogZmFsc2UpCi0rCi0rCQkJCU1ha2UgYWRhcHRlciBkaXNjb3ZlcmFibGUgd2hpbGUgZGlzY292ZXJpbmcsCi0rCQkJCWlmIHRoZSBhZGFwdGVyIGlzIGFscmVhZHkgZGlzY292ZXJhYmxlIHRoaXMKLSsJCQkJc2V0dGluZyB0aGlzIGZpbHRlciB3b24ndCBkbyBhbnl0aGluZy4KLSsKLSAJCQlXaGVuIGRpc2NvdmVyeSBmaWx0ZXIgaXMgc2V0LCBEZXZpY2Ugb2JqZWN0cyB3aWxsIGJlCi0gCQkJY3JlYXRlZCBhcyBuZXcgZGV2aWNlcyB3aXRoIG1hdGNoaW5nIGNyaXRlcmlhIGFyZQotIAkJCWRpc2NvdmVyZWQgcmVnYXJkbGVzcyBvZiB0aGV5IGFyZSBjb25uZWN0YWJsZSBvcgotZGlmZiAtLWdpdCBhL3NyYy9hZGFwdGVyLmMgYi9zcmMvYWRhcHRlci5jCi1pbmRleCBhZjM0MGZkLi44MjJiZDM0IDEwMDY0NAotLS0tIGEvc3JjL2FkYXB0ZXIuYwotKysrIGIvc3JjL2FkYXB0ZXIuYwotQEAgLTE1Nyw2ICsxNTcsNyBAQCBzdHJ1Y3QgZGlzY292ZXJ5X2ZpbHRlciB7Ci0gCWludDE2X3QgcnNzaTsKLSAJR1NMaXN0ICp1dWlkczsKLSAJYm9vbCBkdXBsaWNhdGU7Ci0rCWJvb2wgZGlzY292ZXJhYmxlOwotIH07Ci0gCi0gc3RydWN0IHdhdGNoX2NsaWVudCB7Ci1AQCAtMTk2LDYgKzE5Nyw3IEBAIHN0cnVjdCBidGRfYWRhcHRlciB7Ci0gCWNoYXIgKm5hbWU7CQkJLyogY29udHJvbGxlciBkZXZpY2UgbmFtZSAqLwotIAljaGFyICpzaG9ydF9uYW1lOwkJLyogY29udHJvbGxlciBzaG9ydCBuYW1lICovCi0gCXVpbnQzMl90IHN1cHBvcnRlZF9zZXR0aW5nczsJLyogY29udHJvbGxlciBzdXBwb3J0ZWQgc2V0dGluZ3MgKi8KLSsJdWludDMyX3QgcGVuZGluZ19zZXR0aW5nczsJLyogcGVuZGluZyBjb250cm9sbGVyIHNldHRpbmdzICovCi0gCXVpbnQzMl90IGN1cnJlbnRfc2V0dGluZ3M7CS8qIGN1cnJlbnQgY29udHJvbGxlciBzZXR0aW5ncyAqLwotIAotIAljaGFyICpwYXRoOwkJCS8qIGFkYXB0ZXIgb2JqZWN0IHBhdGggKi8KLUBAIC0yMTMsNiArMjE1LDcgQEAgc3RydWN0IGJ0ZF9hZGFwdGVyIHsKLSAKLSAJYm9vbCBkaXNjb3ZlcmluZzsJCS8qIGRpc2NvdmVyaW5nIHByb3BlcnR5IHN0YXRlICovCi0gCWJvb2wgZmlsdGVyZWRfZGlzY292ZXJ5OwkvKiB3ZSBhcmUgZG9pbmcgZmlsdGVyZWQgZGlzY292ZXJ5ICovCi0rCWJvb2wgZmlsdGVyZWRfZGlzY292ZXJhYmxlOwkvKiB3ZSBhcmUgZG9pbmcgZmlsdGVyZWQgZGlzY292ZXJ5ICovCi0gCWJvb2wgbm9fc2Nhbl9yZXN0YXJ0X2RlbGF5OwkvKiB3aGVuIHRoaXMgZmxhZyBpcyBzZXQsIHJlc3RhcnQgc2NhbgotIAkJCQkJICogd2l0aG91dCBkZWxheSAqLwotIAl1aW50OF90IGRpc2NvdmVyeV90eXBlOwkJLyogY3VycmVudCBhY3RpdmUgZGlzY292ZXJ5IHR5cGUgKi8KLUBAIC01MDksOCArNTEyLDEwIEBAIHN0YXRpYyB2b2lkIHNldHRpbmdzX2NoYW5nZWQoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1aW50MzJfdCBzZXR0aW5ncykKLSAJY2hhbmdlZF9tYXNrID0gYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyBeIHNldHRpbmdzOwotIAotIAlhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzID0gc2V0dGluZ3M7Ci0rCWFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgJj0gfmNoYW5nZWRfbWFzazsKLSAKLSAJREJHKCJDaGFuZ2VkIHNldHRpbmdzOiAweCUwOHgiLCBjaGFuZ2VkX21hc2spOwotKwlEQkcoIlBlbmRpbmcgc2V0dGluZ3M6IDB4JTA4eCIsIGFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MpOwotIAotIAlpZiAoY2hhbmdlZF9tYXNrICYgTUdNVF9TRVRUSU5HX1BPV0VSRUQpIHsKLSAJICAgICAgICBnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKLUBAIC01OTYsMTAgKzYwMSwzMSBAQCBzdGF0aWMgYm9vbCBzZXRfbW9kZShzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIHVpbnQxNl90IG9wY29kZSwKLSAJCQkJCQkJdWludDhfdCBtb2RlKQotIHsKLSAJc3RydWN0IG1nbXRfbW9kZSBjcDsKLSsJdWludDMyX3Qgc2V0dGluZyA9IDA7Ci0gCi0gCW1lbXNldCgmY3AsIDAsIHNpemVvZihjcCkpOwotIAljcC52YWwgPSBtb2RlOwotIAotKwlzd2l0Y2ggKG1vZGUpIHsKLSsJY2FzZSBNR01UX09QX1NFVF9QT1dFUkVEOgotKwkJc2V0dGluZyA9IE1HTVRfU0VUVElOR19QT1dFUkVEOwotKwkJYnJlYWs7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfQ09OTkVDVEFCTEU6Ci0rCQlzZXR0aW5nID0gTUdNVF9TRVRUSU5HX0NPTk5FQ1RBQkxFOwotKwkJYnJlYWs7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfRkFTVF9DT05ORUNUQUJMRToKLSsJCXNldHRpbmcgPSBNR01UX1NFVFRJTkdfRkFTVF9DT05ORUNUQUJMRTsKLSsJCWJyZWFrOwotKwljYXNlIE1HTVRfT1BfU0VUX0RJU0NPVkVSQUJMRToKLSsJCXNldHRpbmcgPSBNR01UX1NFVFRJTkdfRElTQ09WRVJBQkxFOwotKwkJYnJlYWs7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfQk9OREFCTEU6Ci0rCQlzZXR0aW5nID0gTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRTsKLSsJCWJyZWFrOwotKwl9Ci0rCi0rCWFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgfD0gc2V0dGluZzsKLSsKLSAJREJHKCJzZW5kaW5nIHNldCBtb2RlIGNvbW1hbmQgZm9yIGluZGV4ICV1IiwgYWRhcHRlci0+ZGV2X2lkKTsKLSAKLSAJaWYgKG1nbXRfc2VuZChhZGFwdGVyLT5tZ210LCBvcGNvZGUsCi1AQCAtMTgxOCw3ICsxODQ0LDE3IEBAIHN0YXRpYyB2b2lkIGRpc2NvdmVyeV9mcmVlKHZvaWQgKnVzZXJfZGF0YSkKLSAJZ19mcmVlKGNsaWVudCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIGRpc2NvdmVyeV9yZW1vdmUoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50KQotK3N0YXRpYyBib29sIHNldF9maWx0ZXJlZF9kaXNjb3ZlcmFibGUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCBib29sIGVuYWJsZSkKLSt7Ci0rCWlmIChhZGFwdGVyLT5maWx0ZXJlZF9kaXNjb3ZlcmFibGUgPT0gZW5hYmxlKQotKwkJcmV0dXJuIHRydWU7Ci0rCi0rCWFkYXB0ZXItPmZpbHRlcmVkX2Rpc2NvdmVyYWJsZSA9IGVuYWJsZTsKLSsKLSsJcmV0dXJuIHNldF9kaXNjb3ZlcmFibGUoYWRhcHRlciwgZW5hYmxlLCAwKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZGlzY292ZXJ5X3JlbW92ZShzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQsIGJvb2wgZXhpdCkKLSB7Ci0gCXN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciA9IGNsaWVudC0+YWRhcHRlcjsKLSAKLUBAIC0xODMwLDcgKzE4NjYsMjcgQEAgc3RhdGljIHZvaWQgZGlzY292ZXJ5X3JlbW92ZShzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQpCi0gCWFkYXB0ZXItPmRpc2NvdmVyeV9saXN0ID0gZ19zbGlzdF9yZW1vdmUoYWRhcHRlci0+ZGlzY292ZXJ5X2xpc3QsCi0gCQkJCQkJCQljbGllbnQpOwotIAotLQlkaXNjb3ZlcnlfZnJlZShjbGllbnQpOwotKwlpZiAoYWRhcHRlci0+ZmlsdGVyZWRfZGlzY292ZXJhYmxlICYmCi0rCQkJY2xpZW50LT5kaXNjb3ZlcnlfZmlsdGVyLT5kaXNjb3ZlcmFibGUpIHsKLSsJCUdTTGlzdCAqbDsKLSsKLSsJCWZvciAobCA9IGFkYXB0ZXItPmRpc2NvdmVyeV9saXN0OyBsOyBsID0gZ19zbGlzdF9uZXh0KGwpKSB7Ci0rCQkJc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50ID0gbC0+ZGF0YTsKLSsKLSsJCQlpZiAoY2xpZW50LT5kaXNjb3ZlcnlfZmlsdGVyLT5kaXNjb3ZlcmFibGUpCi0rCQkJCWJyZWFrOwotKwkJfQotKwotKwkJLyogRGlzYWJsZSBmaWx0ZXJlZCBkaXNjb3ZlcmFibGUgaWYgdGhlcmUgYXJlIG5vIGNsaWVudHMgKi8KLSsJCWlmICghbCkKLSsJCQlzZXRfZmlsdGVyZWRfZGlzY292ZXJhYmxlKGFkYXB0ZXIsIGZhbHNlKTsKLSsJfQotKwotKwlpZiAoIWV4aXQgJiYgY2xpZW50LT5kaXNjb3ZlcnlfZmlsdGVyKQotKwkJYWRhcHRlci0+c2V0X2ZpbHRlcl9saXN0ID0gZ19zbGlzdF9wcmVwZW5kKAotKwkJCQkJYWRhcHRlci0+c2V0X2ZpbHRlcl9saXN0LCBjbGllbnQpOwotKwllbHNlCi0rCQlkaXNjb3ZlcnlfZnJlZShjbGllbnQpOwotIAotIAkvKgotIAkgKiBJZiB0aGVyZSBhcmUgb3RoZXIgY2xpZW50IGRpc2NvdmVyaWVzIGluIHByb2dyZXNzLCB0aGVuIGxlYXZlCi1AQCAtMTg1OSw4ICsxOTE1LDExIEBAIHN0YXRpYyB2b2lkIHN0b3BfZGlzY292ZXJ5X2NvbXBsZXRlKHVpbnQ4X3Qgc3RhdHVzLCB1aW50MTZfdCBsZW5ndGgsCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLS0JaWYgKGNsaWVudC0+bXNnKQotKwlpZiAoY2xpZW50LT5tc2cpIHsKLSAJCWdfZGJ1c19zZW5kX3JlcGx5KGRidXNfY29ubiwgY2xpZW50LT5tc2csIERCVVNfVFlQRV9JTlZBTElEKTsKLSsJCWRidXNfbWVzc2FnZV91bnJlZihjbGllbnQtPm1zZyk7Ci0rCQljbGllbnQtPm1zZyA9IE5VTEw7Ci0rCX0KLSAKLSAJYWRhcHRlci0+ZGlzY292ZXJ5X3R5cGUgPSAweDAwOwotIAlhZGFwdGVyLT5kaXNjb3ZlcnlfZW5hYmxlID0gMHgwMDsKLUBAIC0xODczLDcgKzE5MzIsNyBAQCBzdGF0aWMgdm9pZCBzdG9wX2Rpc2NvdmVyeV9jb21wbGV0ZSh1aW50OF90IHN0YXR1cywgdWludDE2X3QgbGVuZ3RoLAotIAl0cmlnZ2VyX3Bhc3NpdmVfc2Nhbm5pbmcoYWRhcHRlcik7Ci0gCi0gZG9uZToKLS0JZGlzY292ZXJ5X3JlbW92ZShjbGllbnQpOwotKwlkaXNjb3ZlcnlfcmVtb3ZlKGNsaWVudCwgZmFsc2UpOwotIH0KLSAKLSBzdGF0aWMgaW50IGNvbXBhcmVfc2VuZGVyKGdjb25zdHBvaW50ZXIgYSwgZ2NvbnN0cG9pbnRlciBiKQotQEAgLTIwOTQsMTQgKzIxNTMsMTQgQEAgc3RhdGljIGludCB1cGRhdGVfZGlzY292ZXJ5X2ZpbHRlcihzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIpCi0gCXJldHVybiAtRUlOUFJPR1JFU1M7Ci0gfQotIAotLXN0YXRpYyBpbnQgZGlzY292ZXJ5X3N0b3Aoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50KQotK3N0YXRpYyBpbnQgZGlzY292ZXJ5X3N0b3Aoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50LCBib29sIGV4aXQpCi0gewotIAlzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIgPSBjbGllbnQtPmFkYXB0ZXI7Ci0gCXN0cnVjdCBtZ210X2NwX3N0b3BfZGlzY292ZXJ5IGNwOwotIAotIAkvKiBDaGVjayBpZiB0aGVyZSBhcmUgbW9yZSBjbGllbnQgZGlzY292ZXJpbmcgKi8KLSAJaWYgKGdfc2xpc3RfbmV4dChhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdCkpIHsKLS0JCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50KTsKLSsJCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50LCBleGl0KTsKLSAJCXVwZGF0ZV9kaXNjb3ZlcnlfZmlsdGVyKGFkYXB0ZXIpOwotIAkJcmV0dXJuIDA7Ci0gCX0KLUBAIC0yMTExLDcgKzIxNzAsNyBAQCBzdGF0aWMgaW50IGRpc2NvdmVyeV9zdG9wKHN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCkKLSAJICogYW5kIHNvIGl0IGlzIGVub3VnaCB0byBzZW5kIG91dCB0aGUgc2lnbmFsIGFuZCBqdXN0IHJldHVybi4KLSAJICovCi0gCWlmIChhZGFwdGVyLT5kaXNjb3ZlcnlfZW5hYmxlID09IDB4MDApIHsKLS0JCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50KTsKLSsJCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50LCBleGl0KTsKLSAJCWFkYXB0ZXItPmRpc2NvdmVyaW5nID0gZmFsc2U7Ci0gCQlnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKLSAJCQkJCUFEQVBURVJfSU5URVJGQUNFLCAiRGlzY292ZXJpbmciKTsKLUBAIC0yMTM2LDcgKzIxOTUsNyBAQCBzdGF0aWMgdm9pZCBkaXNjb3ZlcnlfZGlzY29ubmVjdChEQnVzQ29ubmVjdGlvbiAqY29ubiwgdm9pZCAqdXNlcl9kYXRhKQotIAotIAlEQkcoIm93bmVyICVzIiwgY2xpZW50LT5vd25lcik7Ci0gCi0tCWRpc2NvdmVyeV9zdG9wKGNsaWVudCk7Ci0rCWRpc2NvdmVyeV9zdG9wKGNsaWVudCwgdHJ1ZSk7Ci0gfQotIAotIC8qCi1AQCAtMjIwMCw2ICsyMjU5LDE1IEBAIHN0YXRpYyBEQnVzTWVzc2FnZSAqc3RhcnRfZGlzY292ZXJ5KERCdXNDb25uZWN0aW9uICpjb25uLAotIAkJCQkJICAgICBhZGFwdGVyLT5zZXRfZmlsdGVyX2xpc3QsIGNsaWVudCk7Ci0gCQlhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdCA9IGdfc2xpc3RfcHJlcGVuZCgKLSAJCQkJCSAgICAgIGFkYXB0ZXItPmRpc2NvdmVyeV9saXN0LCBjbGllbnQpOwotKwotKwkJLyogUmVzZXQgZGlzY292ZXJhYmxlIGZpbHRlciBpZiBhbHJlYWR5IHNldCAqLwotKwkJaWYgKGFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MgJiBNR01UX09QX1NFVF9ESVNDT1ZFUkFCTEUpCi0rCQkJZ290byBkb25lOwotKwotKwkJLyogU2V0IGRpc2NvdmVyYWJsZSBpZiBmaWx0ZXIgcmVxdWlyZXMgYW5kIGl0Ki8KLSsJCWlmIChjbGllbnQtPmRpc2NvdmVyeV9maWx0ZXItPmRpc2NvdmVyYWJsZSkKLSsJCQlzZXRfZmlsdGVyZWRfZGlzY292ZXJhYmxlKGFkYXB0ZXIsIHRydWUpOwotKwotIAkJZ290byBkb25lOwotIAl9Ci0gCi1AQCAtMjMyNCw2ICsyMzkyLDE3IEBAIHN0YXRpYyBib29sIHBhcnNlX2R1cGxpY2F0ZV9kYXRhKERCdXNNZXNzYWdlSXRlciAqdmFsdWUsCi0gCXJldHVybiB0cnVlOwotIH0KLSAKLStzdGF0aWMgYm9vbCBwYXJzZV9kaXNjb3ZlcmFibGUoREJ1c01lc3NhZ2VJdGVyICp2YWx1ZSwKLSsJCQkJCXN0cnVjdCBkaXNjb3ZlcnlfZmlsdGVyICpmaWx0ZXIpCi0rewotKwlpZiAoZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKHZhbHVlKSAhPSBEQlVTX1RZUEVfQk9PTEVBTikKLSsJCXJldHVybiBmYWxzZTsKLSsKLSsJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKHZhbHVlLCAmZmlsdGVyLT5kaXNjb3ZlcmFibGUpOwotKwotKwlyZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0gc3RydWN0IGZpbHRlcl9wYXJzZXIgewotIAljb25zdCBjaGFyICpuYW1lOwotIAlib29sICgqZnVuYykoREJ1c01lc3NhZ2VJdGVyICppdGVyLCBzdHJ1Y3QgZGlzY292ZXJ5X2ZpbHRlciAqZmlsdGVyKTsKLUBAIC0yMzMzLDYgKzI0MTIsNyBAQCBzdHJ1Y3QgZmlsdGVyX3BhcnNlciB7Ci0gCXsgIlBhdGhsb3NzIiwgcGFyc2VfcGF0aGxvc3MgfSwKLSAJeyAiVHJhbnNwb3J0IiwgcGFyc2VfdHJhbnNwb3J0IH0sCi0gCXsgIkR1cGxpY2F0ZURhdGEiLCBwYXJzZV9kdXBsaWNhdGVfZGF0YSB9LAotKwl7ICJEaXNjb3ZlcmFibGUiLCBwYXJzZV9kaXNjb3ZlcmFibGUgfSwKLSAJeyB9Ci0gfTsKLSAKLUBAIC0yMzcyLDYgKzI0NTIsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZV9kaXNjb3ZlcnlfZmlsdGVyX2RpY3Qoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLAotIAkoKmZpbHRlciktPnJzc2kgPSBESVNUQU5DRV9WQUxfSU5WQUxJRDsKLSAJKCpmaWx0ZXIpLT50eXBlID0gZ2V0X3NjYW5fdHlwZShhZGFwdGVyKTsKLSAJKCpmaWx0ZXIpLT5kdXBsaWNhdGUgPSBmYWxzZTsKLSsJKCpmaWx0ZXIpLT5kaXNjb3ZlcmFibGUgPSBmYWxzZTsKLSAKLSAJZGJ1c19tZXNzYWdlX2l0ZXJfaW5pdChtc2csICZpdGVyKTsKLSAJaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmaXRlcikgIT0gREJVU19UWVBFX0FSUkFZIHx8Ci1AQCAtMjQxNyw4ICsyNDk4LDEwIEBAIHN0YXRpYyBib29sIHBhcnNlX2Rpc2NvdmVyeV9maWx0ZXJfZGljdChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsCi0gCQlnb3RvIGludmFsaWRfYXJnczsKLSAKLSAJREJHKCJmaWx0ZXJlZCBkaXNjb3ZlcnkgcGFyYW1zOiB0cmFuc3BvcnQ6ICVkIHJzc2k6ICVkIHBhdGhsb3NzOiAlZCAiCi0tCQkiIGR1cGxpY2F0ZSBkYXRhOiAlcyAiLCAoKmZpbHRlciktPnR5cGUsICgqZmlsdGVyKS0+cnNzaSwKLS0JCSgqZmlsdGVyKS0+cGF0aGxvc3MsICgqZmlsdGVyKS0+ZHVwbGljYXRlID8gInRydWUiIDogImZhbHNlIik7Ci0rCQkiIGR1cGxpY2F0ZSBkYXRhOiAlcyBkaXNjb3ZlcmFibGUgJXMiLCAoKmZpbHRlciktPnR5cGUsCi0rCQkoKmZpbHRlciktPnJzc2ksICgqZmlsdGVyKS0+cGF0aGxvc3MsCi0rCQkoKmZpbHRlciktPmR1cGxpY2F0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIsCi0rCQkoKmZpbHRlciktPmRpc2NvdmVyYWJsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotIAotIAlyZXR1cm4gdHJ1ZTsKLSAKLUBAIC0yNTEwLDcgKzI1OTMsNyBAQCBzdGF0aWMgREJ1c01lc3NhZ2UgKnN0b3BfZGlzY292ZXJ5KERCdXNDb25uZWN0aW9uICpjb25uLAotIAlpZiAoY2xpZW50LT5tc2cpCi0gCQlyZXR1cm4gYnRkX2Vycm9yX2J1c3kobXNnKTsKLSAKLS0JZXJyID0gZGlzY292ZXJ5X3N0b3AoY2xpZW50KTsKLSsJZXJyID0gZGlzY292ZXJ5X3N0b3AoY2xpZW50LCBmYWxzZSk7Ci0gCXN3aXRjaCAoZXJyKSB7Ci0gCWNhc2UgMDoKLSAJCXJldHVybiBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsKLUBAIC0yNzM5LDEzICsyODIyLDE1IEBAIHN0YXRpYyB2b2lkIHByb3BlcnR5X3NldF9tb2RlKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwgdWludDMyX3Qgc2V0dGluZywKLSAJZWxzZQotIAkJY3VycmVudF9lbmFibGUgPSBGQUxTRTsKLSAKLS0JaWYgKGVuYWJsZSA9PSBjdXJyZW50X2VuYWJsZSkgewotKwlpZiAoZW5hYmxlID09IGN1cnJlbnRfZW5hYmxlIHx8IGFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgJiBzZXR0aW5nKSB7Ci0gCQlnX2RidXNfcGVuZGluZ19wcm9wZXJ0eV9zdWNjZXNzKGlkKTsKLSAJCXJldHVybjsKLSAJfQotIAotIAltb2RlID0gKGVuYWJsZSA9PSBUUlVFKSA/IDB4MDEgOiAweDAwOwotIAotKwlhZGFwdGVyLT5wZW5kaW5nX3NldHRpbmdzIHw9IHNldHRpbmc7Ci0rCi0gCXN3aXRjaCAoc2V0dGluZykgewotIAljYXNlIE1HTVRfU0VUVElOR19QT1dFUkVEOgotIAkJb3Bjb2RlID0gTUdNVF9PUF9TRVRfUE9XRVJFRDsKLUBAIC0yNzk4LDcgKzI4ODMsNyBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfbW9kZShzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIHVpbnQzMl90IHNldHRpbmcsCi0gCWRhdGEtPmlkID0gaWQ7Ci0gCi0gCWlmIChtZ210X3NlbmQoYWRhcHRlci0+bWdtdCwgb3Bjb2RlLCBhZGFwdGVyLT5kZXZfaWQsIGxlbiwgcGFyYW0sCi0tCQkJCXByb3BlcnR5X3NldF9tb2RlX2NvbXBsZXRlLCBkYXRhLCBnX2ZyZWUpID4gMCkKLSsJCQlwcm9wZXJ0eV9zZXRfbW9kZV9jb21wbGV0ZSwgZGF0YSwgZ19mcmVlKSA+IDApCi0gCQlyZXR1cm47Ci0gCi0gCWdfZnJlZShkYXRhKTsKLUBAIC0yODc1LDYgKzI5NjAsNyBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfZGlzY292ZXJhYmxlX3RpbWVvdXQoCi0gCQkJCUdEQnVzUGVuZGluZ1Byb3BlcnR5U2V0IGlkLCB2b2lkICp1c2VyX2RhdGEpCi0gewotIAlzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIgPSB1c2VyX2RhdGE7Ci0rCWJvb2wgZW5hYmxlZDsKLSAJZGJ1c191aW50MzJfdCB2YWx1ZTsKLSAKLSAJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKGl0ZXIsICZ2YWx1ZSk7Ci1AQCAtMjg4OCw4ICsyOTc0LDE5IEBAIHN0YXRpYyB2b2lkIHByb3BlcnR5X3NldF9kaXNjb3ZlcmFibGVfdGltZW91dCgKLSAJZ19kYnVzX2VtaXRfcHJvcGVydHlfY2hhbmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgsCi0gCQkJCUFEQVBURVJfSU5URVJGQUNFLCAiRGlzY292ZXJhYmxlVGltZW91dCIpOwotIAotKwlpZiAoYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyAmIE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEUpIHsKLSsJCWlmIChhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzICYgTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRSkKLSsJCQllbmFibGVkID0gZmFsc2U7Ci0rCQllbHNlCi0rCQkJZW5hYmxlZCA9IHRydWU7Ci0rCX0gZWxzZSB7Ci0rCQlpZiAoYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyAmIE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEUpCi0rCQkJZW5hYmxlZCA9IHRydWU7Ci0rCQllbHNlCi0rCQkJZW5hYmxlZCA9IGZhbHNlOwotKwl9Ci0gCi0tCWlmIChhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzICYgTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRSkKLSsJaWYgKGVuYWJsZWQpCi0gCQlzZXRfZGlzY292ZXJhYmxlKGFkYXB0ZXIsIDB4MDEsIGFkYXB0ZXItPmRpc2NvdmVyYWJsZV90aW1lb3V0KTsKLSB9Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2djYzktZml4ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9nY2M5LWZpeGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTY3OGU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2djYzktZml4ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDEgKzAsMCBAQAotQmFja3BvcnRlZCBjb21taXQgZnJvbSB1cHN0cmVhbSBtYXN0ZXIgYnJhbmNoIChwb3N0IDUuNTAgcmVsZWFzZSksIHdoaWNoCi1yZXNvbHZlcyBhc3NlcnRpb24gZmFpbHVyZXMgaW4gc2V2ZXJhbCB1bml0IHRlc3RzLgotCi1odHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYmx1ZXRvb3RoL2JsdWV6LmdpdC9wYXRjaC8/aWQ9MGJlNTI0NjE3MAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWF2Y3RwLmMgYi91bml0L3Rlc3QtYXZjdHAuYwotaW5kZXggM2JjMzU2OS4uMjRkZTY2MyAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1hdmN0cC5jCi0rKysgYi91bml0L3Rlc3QtYXZjdHAuYwotQEAgLTQzLDcgKzQzLDcgQEAKLSAKLSBzdHJ1Y3QgdGVzdF9wZHUgewotIAlib29sIHZhbGlkOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSB9OwotIAotQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IGNvbnRleHQgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtOTEsNiArOTEsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF9kZWJ1Zyhjb25zdCBjaGFyICpzdHIsIHZvaWQgKnVzZXJfZGF0YSkKLSBzdGF0aWMgdm9pZCB0ZXN0X2ZyZWUoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gewotIAljb25zdCBzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotKwlzdHJ1Y3QgdGVzdF9wZHUgKnBkdTsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IChwZHUgPSAmZGF0YS0+cGR1X2xpc3RbaV0pICYmIHBkdS0+dmFsaWQ7IGkrKykKLSsJCWdfZnJlZShwZHUtPmRhdGEpOwotIAotIAlnX2ZyZWUoZGF0YS0+dGVzdF9uYW1lKTsKLSAJZ19mcmVlKGRhdGEtPnBkdV9saXN0KTsKLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtYXZkdHAuYyBiL3VuaXQvdGVzdC1hdmR0cC5jCi1pbmRleCBkZDhhZWQ3Li5lMmM5NTFhIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWF2ZHRwLmMKLSsrKyBiL3VuaXQvdGVzdC1hdmR0cC5jCi1AQCAtNDcsNyArNDcsNyBAQAotIHN0cnVjdCB0ZXN0X3BkdSB7Ci0gCWJvb2wgdmFsaWQ7Ci0gCWJvb2wgZnJhZ21lbnRlZDsKLS0JY29uc3QgdWludDhfdCAqZGF0YTsKLSsJdWludDhfdCAqZGF0YTsKLSAJc2l6ZV90IHNpemU7Ci0gfTsKLSAKLUBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKSBcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC02OSw3ICs2OSw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0gCQkuZnJhZ21lbnRlZCA9IHRydWUsCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC04MSw3ICs4MSw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotIAkJc3RhdGljIHN0cnVjdCB0ZXN0X2RhdGEgZGF0YTsJCQkJXAotIAkJZGF0YS50ZXN0X25hbWUgPSBnX3N0cmR1cChuYW1lKTsJCQlcCi0gCQlkYXRhLnBkdV9saXN0ID0gZ19tZW1kdXAocGR1cywgc2l6ZW9mKHBkdXMpKTsJCVwKLS0JCXRlc3Rlcl9hZGQobmFtZSwgJmRhdGEsIE5VTEwsIGZ1bmN0aW9uLCBOVUxMKTsJCVwKLSsJCXRlc3Rlcl9hZGQobmFtZSwgJmRhdGEsIE5VTEwsIGZ1bmN0aW9uLCBOVUxMKTsJXAotIAl9IHdoaWxlICgwKQotIAotIHN0cnVjdCBjb250ZXh0IHsKLUBAIC0xMDksNiArMTA5LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfZGVidWcoY29uc3QgY2hhciAqc3RyLCB2b2lkICp1c2VyX2RhdGEpCi0gc3RhdGljIHZvaWQgdGVzdF9mcmVlKGdjb25zdHBvaW50ZXIgdXNlcl9kYXRhKQotIHsKLSAJY29uc3Qgc3RydWN0IHRlc3RfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsJc3RydWN0IHRlc3RfcGR1ICpwZHU7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyAocGR1ID0gJmRhdGEtPnBkdV9saXN0W2ldKSAmJiBwZHUtPnZhbGlkOyBpKyspCi0rCQlnX2ZyZWUocGR1LT5kYXRhKTsKLSAKLSAJZ19mcmVlKGRhdGEtPnRlc3RfbmFtZSk7Ci0gCWdfZnJlZShkYXRhLT5wZHVfbGlzdCk7Ci1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWF2cmNwLmMgYi91bml0L3Rlc3QtYXZyY3AuYwotaW5kZXggMDEzMDdlNi4uZjFhYTM1MyAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1hdnJjcC5jCi0rKysgYi91bml0L3Rlc3QtYXZyY3AuYwotQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IHRlc3RfcGR1IHsKLSAJYm9vbCBmcmFnbWVudGVkOwotIAlib29sIGNvbnRpbnVpbmc7Ci0gCWJvb2wgYnJvd3NlOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSB9OwotIAotQEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IGNvbnRleHQgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLSAJCS5icm93c2UgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0IGNvbnRleHQgewotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0gCQkuZnJhZ21lbnRlZCA9IHRydWUsCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC05OCw3ICs5OCw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotIAkJLmNvbnRpbnVpbmcgPSB0cnVlLAkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtMTIzLDYgKzEyMywxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2RlYnVnKGNvbnN0IGNoYXIgKnN0ciwgdm9pZCAqdXNlcl9kYXRhKQotIHN0YXRpYyB2b2lkIHRlc3RfZnJlZShnY29uc3Rwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rCXN0cnVjdCB0ZXN0X3BkdSAqcGR1OwotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgKHBkdSA9ICZkYXRhLT5wZHVfbGlzdFtpXSkgJiYgcGR1LT52YWxpZDsgaSsrKQotKwkJZ19mcmVlKHBkdS0+ZGF0YSk7Ci0gCi0gCWdfZnJlZShkYXRhLT50ZXN0X25hbWUpOwotIAlnX2ZyZWUoZGF0YS0+cGR1X2xpc3QpOwotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1nYXR0LmMgYi91bml0L3Rlc3QtZ2F0dC5jCi1pbmRleCBjN2UyOGY4Li5kNDlmN2EwIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWdhdHQuYwotKysrIGIvdW5pdC90ZXN0LWdhdHQuYwotQEAgLTQ4LDcgKzQ4LDcgQEAKLSAKLSBzdHJ1Y3QgdGVzdF9wZHUgewotIAlib29sIHZhbGlkOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSB9OwotIAotQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0IGNvbnRleHQgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtMzA2LDYgKzMwNiwxMSBAQCBzdGF0aWMgYnRfdXVpZF90IHV1aWRfY2hhcl8xMjggPSB7Ci0gc3RhdGljIHZvaWQgdGVzdF9mcmVlKGdjb25zdHBvaW50ZXIgdXNlcl9kYXRhKQotIHsKLSAJY29uc3Qgc3RydWN0IHRlc3RfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsJc3RydWN0IHRlc3RfcGR1ICpwZHU7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyAocGR1ID0gJmRhdGEtPnBkdV9saXN0W2ldKSAmJiBwZHUtPnZhbGlkOyBpKyspCi0rCQlnX2ZyZWUocGR1LT5kYXRhKTsKLSAKLSAJZ19mcmVlKGRhdGEtPnRlc3RfbmFtZSk7Ci0gCWdfZnJlZShkYXRhLT5wZHVfbGlzdCk7Ci1AQCAtMTkxMSw2ICsxOTE2LDggQEAgc3RhdGljIHZvaWQgdGVzdF9zZXJ2ZXIoZ2NvbnN0cG9pbnRlciBkYXRhKQotIAlnX2Fzc2VydF9jbXBpbnQobGVuLCA9PSwgcGR1LnNpemUpOwotIAotIAl1dGlsX2hleGR1bXAoJzwnLCBwZHUuZGF0YSwgbGVuLCB0ZXN0X2RlYnVnLCAiR0FUVDogIik7Ci0rCi0rCWdfZnJlZShwZHUuZGF0YSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRlc3Rfc2VhcmNoX3ByaW1hcnkoZ2NvbnN0cG9pbnRlciBkYXRhKQotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1oZnAuYyBiL3VuaXQvdGVzdC1oZnAuYwotaW5kZXggZjJiOTYyMi4uODkwZWVlNiAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1oZnAuYwotKysrIGIvdW5pdC90ZXN0LWhmcC5jCi1AQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gCi0gc3RydWN0IHRlc3RfcGR1IHsKLSAJYm9vbCB2YWxpZDsKLS0JY29uc3QgdWludDhfdCAqZGF0YTsKLSsJdWludDhfdCAqZGF0YTsKLSAJc2l6ZV90IHNpemU7Ci0gCWVudW0gaGZwX2d3X2NtZF90eXBlIHR5cGU7Ci0gCWJvb2wgZnJhZ21lbnRlZDsKLUBAIC02Myw3ICs2Myw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtNzUsNyArNzUsNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAjZGVmaW5lIHR5cGVfcGR1KGNtZF90eXBlLCBhcmdzLi4uKQkJCQlcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCQkudHlwZSA9IGNtZF90eXBlLAkJCQlcCi0gCX0KLUBAIC04Myw3ICs4Myw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgZnJnX3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAkJLmZyYWdtZW50ZWQgPSB0cnVlLAkJCQlcCi0gCX0KLUBAIC0xMTksNiArMTE5LDExIEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotIHN0YXRpYyB2b2lkIHRlc3RfZnJlZShnY29uc3Rwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rCXN0cnVjdCB0ZXN0X3BkdSAqcGR1OwotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgKHBkdSA9ICZkYXRhLT5wZHVfbGlzdFtpXSkgJiYgcGR1LT52YWxpZDsgaSsrKQotKwkJZ19mcmVlKHBkdS0+ZGF0YSk7Ci0gCi0gCWdfZnJlZShkYXRhLT50ZXN0X25hbWUpOwotIAlnX2ZyZWUoZGF0YS0+cGR1X2xpc3QpOwotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1ob2cuYyBiL3VuaXQvdGVzdC1ob2cuYwotaW5kZXggZDExNzk2OC4uMjViZGI0MiAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1ob2cuYwotKysrIGIvdW5pdC90ZXN0LWhvZy5jCi1AQCAtNjgsMTEgKzY4LDExIEBAIHN0cnVjdCBjb250ZXh0IHsKLSAKLSAjZGVmaW5lIGRhdGEoYXJncy4uLikgKChjb25zdCB1bnNpZ25lZCBjaGFyW10pIHsgYXJncyB9KQotIAotLSNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKSAgICBcCi0teyAgICAgIFwKLS0JLnZhbGlkID0gdHJ1ZSwJCVwKLS0JLmRhdGEgPSBkYXRhKGFyZ3MpLCBcCi0tCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLFwKLSsjZGVmaW5lIHJhd19wZHUoYXJncy4uLikJCQkJCVwKLSt7CQkJCQkJCQlcCi0rCS52YWxpZCA9IHRydWUsCQkJCQkJXAotKwkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksCVwKLSsJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJCVwKLSB9Ci0gCi0gI2RlZmluZSBmYWxzZV9wZHUoKQlcCi1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LXNkcC5jIGIvdW5pdC90ZXN0LXNkcC5jCi1pbmRleCBhYzkyMWE5Li5jNzFlZTFmIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LXNkcC5jCi0rKysgYi91bml0L3Rlc3Qtc2RwLmMKLUBAIC01OSwxNCArNTksMTQgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pIFwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLnJhd19kYXRhID0gcmF3X2RhdGEoYXJncyksCQkJXAotKwkJLnJhd19kYXRhID0gZ19tZW1kdXAocmF3X2RhdGEoYXJncyksIHNpemVvZihyYXdfZGF0YShhcmdzKSkpLCBcCi0gCQkucmF3X3NpemUgPSBzaXplb2YocmF3X2RhdGEoYXJncykpLAkJXAotIAl9Ci0gCi0gI2RlZmluZSByYXdfcGR1X2NvbnQoY29udCwgYXJncy4uLikgXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkucmF3X2RhdGEgPSByYXdfZGF0YShhcmdzKSwJCQlcCi0rCQkucmF3X2RhdGEgPSBnX21lbWR1cChyYXdfZGF0YShhcmdzKSwgc2l6ZW9mKHJhd19kYXRhKGFyZ3MpKSksIFwKLSAJCS5yYXdfc2l6ZSA9IHNpemVvZihyYXdfZGF0YShhcmdzKSksCQlcCi0gCQkuY29udF9sZW4gPSBjb250LAkJCQlcCi0gCX0KLUBAIC0xMDMsNyArMTAzLDcgQEAgc3RydWN0IHRlc3RfZGF0YV9kZSB7Ci0gI2RlZmluZSBkZWZpbmVfdGVzdF9kZV9hdHRyKG5hbWUsIGlucHV0LCBleHApIFwKLSAJZG8gewkJCQkJCQkJXAotIAkJc3RhdGljIHN0cnVjdCB0ZXN0X2RhdGFfZGUgZGF0YTsJCQlcCi0tCQlkYXRhLmlucHV0X2RhdGEgPSBpbnB1dDsJCQkJXAotKwkJZGF0YS5pbnB1dF9kYXRhID0gZ19tZW1kdXAoaW5wdXQsIHNpemVvZihpbnB1dCkpOwlcCi0gCQlkYXRhLmlucHV0X3NpemUgPSBzaXplb2YoaW5wdXQpOwkJCVwKLSAJCWRhdGEuZXhwZWN0ZWQgPSBleHA7CQkJCQlcCi0gCQl0ZXN0ZXJfYWRkKCIvc2RwL0RFL0FUVFIvIiBuYW1lLCAmZGF0YSwJTlVMTCwJCVwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L291dC1vZi10cmVlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvb3V0LW9mLXRyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZWQ3NzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvb3V0LW9mLXRyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGVkNTViNDlhMjI2Y2EzOTA5ZjUyNDE2YmUyYWU1Y2UxYzVjYTJjYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyMiBBcHIgMjAxNiAxNTo0MDozNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5vYmV4ZDogYWRkIG1pc3NpbmcgbWtkaXIgaW4gYnVpbHRpbi5oIGdlbmVyYXRpb24KLQotSW4gcGFyYWxsZWwgb3V0LW9mLXRyZWUgYnVpbGRzIGl0J3MgcG9zc2libGUgdGhhdCBvYmV4ZC9zcmMvYnVpbHRpbi5oIGlzCi1nZW5lcmF0ZWQgYmVmb3JlIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGhhcyBiZWVuIGltcGxpY2l0bHkgY3JlYXRlZC4gU29sdmUgdGhpcyBieQotY3JlYXRpbmcgdGhlIGRpcmVjdG9yeSBiZWZvcmUgd3JpdGluZyBpbnRvIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUub2JleGQgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9iZXhkIGIvTWFrZWZpbGUub2JleGQKLWluZGV4IDJlMzNjYmMuLmM4Mjg2ZjAgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5vYmV4ZAotKysrIGIvTWFrZWZpbGUub2JleGQKLUBAIC0xMDUsMiArMTA1LDMgQEAgb2JleGQvc3JjL3BsdWdpbi4kKE9CSkVYVCk6IG9iZXhkL3NyYy9idWlsdGluLmgKLSBvYmV4ZC9zcmMvYnVpbHRpbi5oOiBvYmV4ZC9zcmMvZ2VuYnVpbHRpbiAkKG9iZXhkX2J1aWx0aW5fc291cmNlcykKLSsJJChBTV9WX2F0KSQoTUtESVJfUCkgJChkaXIgJEApCi0gCSQoQU1fVl9HRU4pJChzcmNkaXIpL29iZXhkL3NyYy9nZW5idWlsdGluICQob2JleGRfYnVpbHRpbl9tb2R1bGVzKSA+ICRACi0tLSAKLTIuOC4wLnJjMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9ydW4tcHRlc3QKaW5kZXggMjFkZjAwYy4uMDMzNWU2OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L3J1bi1wdGVzdApAQCAtNiw3ICs2LDcgQEAKIGFsbD0wCiAKIGZvciBmIGluIHRlc3QtKjsgZG8KLSAgICAiLi8kZiIKKyAgICAiLi8kZiIgLXEKICAgICBjYXNlICIkPyIgaW4KICAgICAgICAgMCkKICAgICAgICAgICAgIGVjaG8gIlBBU1M6ICRmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNDQzZTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo1LmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGUzNWM2N2M4MWE1NWQzYWQ0YzlmMjIyODBkYWUxNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZmY2FhZTE4YmJiNjE1NWYxNTkxYmU4YzI0ODk4ZGMxMmYwNjIwNzVhNDBiNTM4Yjc0NWJmZDQ3NzQ4MTkxMSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCi0gICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCi0gICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCi0gICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCi0gICAgdG9vbHMvb2JleGN0bCBcCi0gICAgdG9vbHMvYnRtZ210IFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORwotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKLSAgICBlbXVsYXRvci9idHZpcnQgXAotICAgIGVtdWxhdG9yL2IxZWUgXAotICAgIGVtdWxhdG9yL2hmcCBcCi0gICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCi0gICAgdG9vbHMvM2RzcCBcCi0gICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAotICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAotICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCi0gICAgdG9vbHMvc2NvLXRlc3RlciBcCi0gICAgdG9vbHMvc21wLXRlc3RlciBcCi0gICAgdG9vbHMvaGNpLXRlc3RlciBcCi0gICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCi0gICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAotICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19CVCA/PSAiIFwKLSAgICB0b29scy9iZGFkZHIgXAotICAgIHRvb2xzL2F2aW5mbyBcCi0gICAgdG9vbHMvYXZ0ZXN0IFwKLSAgICB0b29scy9zY290ZXN0IFwKLSAgICB0b29scy9hbXB0ZXN0IFwKLSAgICB0b29scy9od2RiIFwKLSAgICB0b29scy9oY2lldmVudG1hc2sgXAotICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCi0gICAgdG9vbHMvYnRpbmZvIFwKLSAgICB0b29scy9idHNub29wIFwKLSAgICB0b29scy9idHByb3h5IFwKLSAgICB0b29scy9idGlvdGVzdCBcCi0gICAgdG9vbHMvYm5lcHRlc3QgXAotICAgIHRvb2xzL21jYXB0ZXN0IFwKLSAgICB0b29scy9jbHRlc3QgXAotICAgIHRvb2xzL29vYnRlc3QgXAotICAgIHRvb2xzL2FkdnRlc3QgXAotICAgIHRvb2xzL3NlcTJic2VxIFwKLSAgICB0b29scy9ub2tmdyBcCi0gICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKLSAgICB0b29scy9lZGR5c3RvbmUgXAotICAgIHRvb2xzL2liZWFjb24gXAotICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAotICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAotICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKLSAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCi0gICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKLSAgICBwcm9maWxlcy9pYXAvaWFwZCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYnRwY2xpZW50JywgJ3Rvb2xzL2J0cGNsaWVudCcsICcnLCBkKX0gXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYwZWVlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTQuYmIKQEAgLTAsMCArMSw2OCBAQAorcmVxdWlyZSBibHVlejUuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNjM3ZmViMmRiYjc1ODJiYmJmZjE3MDgzNjdhODQ3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OGNkYWI5ZTYzZTg4MzJiMTMwZDU5NzlkYzhjOTZmZGIwODdiMzEyNzhmMzQyODc0ZDk5MmFmM2U1NjY1NmRjIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQorIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGVwcmVjYXRlZCcsICdhdHRyaWIvZ2F0dHRvb2wnLCAnJywgZCl9IFwKKyAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKKyAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKKyAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKKyAgICB0b29scy9vYmV4Y3RsIFwKKyAgICB0b29scy9idG1nbXQgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBURVNUSU5HCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19URVNUSU5HID89ICIgXAorICAgIGVtdWxhdG9yL2J0dmlydCBcCisgICAgZW11bGF0b3IvYjFlZSBcCisgICAgZW11bGF0b3IvaGZwIFwKKyAgICBwZXJpcGhlcmFsL2J0c2Vuc29yIFwKKyAgICB0b29scy8zZHNwIFwKKyAgICB0b29scy9tZ210LXRlc3RlciBcCisgICAgdG9vbHMvZ2FwLXRlc3RlciBcCisgICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKKyAgICB0b29scy9zY28tdGVzdGVyIFwKKyAgICB0b29scy9zbXAtdGVzdGVyIFwKKyAgICB0b29scy9oY2ktdGVzdGVyIFwKKyAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKKyAgICB0b29scy9ibmVwLXRlc3RlciBcCisgICAgdG9vbHMvdXNlcmNoYW4tdGVzdGVyIFwKKyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVE9PTFMKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX0JUID89ICIgXAorICAgIHRvb2xzL2JkYWRkciBcCisgICAgdG9vbHMvYXZpbmZvIFwKKyAgICB0b29scy9hdnRlc3QgXAorICAgIHRvb2xzL3Njb3Rlc3QgXAorICAgIHRvb2xzL2FtcHRlc3QgXAorICAgIHRvb2xzL2h3ZGIgXAorICAgIHRvb2xzL2hjaWV2ZW50bWFzayBcCisgICAgdG9vbHMvaGNpc2VjZmlsdGVyIFwKKyAgICB0b29scy9idGluZm8gXAorICAgIHRvb2xzL2J0c25vb3AgXAorICAgIHRvb2xzL2J0cHJveHkgXAorICAgIHRvb2xzL2J0aW90ZXN0IFwKKyAgICB0b29scy9ibmVwdGVzdCBcCisgICAgdG9vbHMvbWNhcHRlc3QgXAorICAgIHRvb2xzL2NsdGVzdCBcCisgICAgdG9vbHMvb29idGVzdCBcCisgICAgdG9vbHMvYWR2dGVzdCBcCisgICAgdG9vbHMvc2VxMmJzZXEgXAorICAgIHRvb2xzL25va2Z3IFwKKyAgICB0b29scy9jcmVhdGUtaW1hZ2UgXAorICAgIHRvb2xzL2VkZHlzdG9uZSBcCisgICAgdG9vbHMvaWJlYWNvbiBcCisgICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCisgICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCisgICAgdG9vbHMvdGVzdC1ydW5uZXIgXAorICAgIHRvb2xzL2NoZWNrLXNlbGZ0ZXN0IFwKKyAgICB0b29scy9nYXR0LXNlcnZpY2UgXAorICAgIHByb2ZpbGVzL2lhcC9pYXBkIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdidHBjbGllbnQnLCAndG9vbHMvYnRwY2xpZW50JywgJycsIGQpfSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCmluZGV4IGZiMzhhYjQuLmQzZWViM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCkBAIC0xNSw3ICsxNSw3IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAotREVQRU5EUyAgPSAiZGJ1cyBnbGliLTIuMCBwcHAgcmVhZGxpbmUiCitERVBFTkRTICA9ICJkYnVzIGdsaWItMi4wIHBwcCIKIAogSU5DX1BSID0gInIyMCIKIApAQCAtMjcsMTMgKzI3LDExIEBACiAgICAgLS1lbmFibGUtZXRoZXJuZXQgXAogICAgIC0tZW5hYmxlLXRvb2xzIFwKICAgICAtLWRpc2FibGUtcG9sa2l0IFwKLSAgICAtLWVuYWJsZS1jbGllbnQgXAogIgogCi1QQUNLQUdFQ09ORklHID8/PSAid2lzcHIgXAorUEFDS0FHRUNPTkZJRyA/Pz0gIndpc3ByIGlwdGFibGVzIGNsaWVudFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICczZyBzeXN0ZW1kIHdpZmknLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgaXB0YWJsZXMgXAogIgogCiAjIElmIHlvdSB3YW50IENvbm5NYW4gdG8gc3VwcG9ydCBWUE4sIGFkZCBmb2xsb3dpbmcgc3RhdGVtZW50IGludG8KQEAgLTUxLDkgKzQ5LDEwIEBACiBQQUNLQUdFQ09ORklHW3BwdHBdID0gIi0tZW5hYmxlLXBwdHAgLS13aXRoLXBwdHA9JHtzYmluZGlyfS9wcHRwLC0tZGlzYWJsZS1wcHRwLCxwcHRwLWxpbnV4IgogIyBXSVNQciBzdXBwb3J0IGZvciBsb2dnaW5nIGludG8gaG90c3BvdHMsIHJlcXVpcmVzIFRMUwogUEFDS0FHRUNPTkZJR1t3aXNwcl0gPSAiLS1lbmFibGUtd2lzcHIsLS1kaXNhYmxlLXdpc3ByLGdudXRscywiCi1QQUNLQUdFQ09ORklHW25mdGFibGVzXSA9ICItLXdpdGgtZmlyZXdhbGw9bmZ0YWJsZXMgLCxsaWJtbmwgbGlibmZ0bmwsLGtlcm5lbC1tb2R1bGUtbmYtdGFibGVzLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tbmF0LWlwdjQga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tcm91dGUtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1tZXRhIGtlcm5lbC1tb2R1bGUtbmZ0LW1hc3EtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1uYXQiCitQQUNLQUdFQ09ORklHW25mdGFibGVzXSA9ICItLXdpdGgtZmlyZXdhbGw9bmZ0YWJsZXMgLCxsaWJtbmwgbGlibmZ0bmwsLGtlcm5lbC1tb2R1bGUtbmYtdGFibGVzIGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLW5hdC1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLXJvdXRlLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtbWFzcS1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LW5hdCIKIFBBQ0tBR0VDT05GSUdbaXB0YWJsZXNdID0gIi0td2l0aC1maXJld2FsbD1pcHRhYmxlcyAsLGlwdGFibGVzLGlwdGFibGVzIgogUEFDS0FHRUNPTkZJR1tuZmNdID0gIi0tZW5hYmxlLW5lYXJkLCAtLWRpc2FibGUtbmVhcmQsIG5lYXJkLCBuZWFyZCIKK1BBQ0tBR0VDT05GSUdbY2xpZW50XSA9ICItLWVuYWJsZS1jbGllbnQsLS1kaXNhYmxlLWNsaWVudCxyZWFkbGluZSIKIAogSU5JVFNDUklQVF9OQU1FID0gImNvbm5tYW4iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwNSA1IDIgMyAuIHN0b3AgMjIgMCAxIDYgLiIKQEAgLTg3LDcgKzg2LDYgQEAKIAlpZiBbIC1lICR7Qn0vdG9vbHMvd2lzcHIgXTsgdGhlbgogCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS90b29scy93aXNwciAke0R9JHtiaW5kaXJ9CiAJZmkKLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9jbGllbnQvY29ubm1hbmN0bCAke0R9JHtiaW5kaXJ9CiAKIAkjIFdlIGRvbid0IG5lZWQgdG8gcGFja2FnZSBhbiBlbXB0eSBkaXJlY3RvcnkKIAlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9L2Nvbm5tYW4vc2NyaXB0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwppbmRleCBjNDY5N2JlLi5kNDYxMzBkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwpAQCAtMTAwLDYgKzEwMCw3IEBACiBQQUNLQUdFUyArPSAiZGhjcC1saWJzIGRoY3Atc2VydmVyIGRoY3Atc2VydmVyLWNvbmZpZyBkaGNwLWNsaWVudCBkaGNwLXJlbGF5IGRoY3Atb21zaGVsbCIKIAogUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tY2xpZW50ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaXByb3V0ZTInLCAnJywgZCl9IgogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIFJERVBFTkRTXyR7UE59LXN0YXRpY2RldiA9ICIiCiBGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWJkaGNwY3RsLnNvLjAqICR7bGliZGlyfS9saWJvbWFwaS5zby4wKiAke2xpYmRpcn0vbGliZGhjcC5zby4wKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1GaXgtYS1OU1VQREFURS1jb21waWxpbmctaXNzdWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtRml4LWEtTlNVUERBVEUtY29tcGlsaW5nLWlzc3VlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTJhMTEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1GaXgtYS1OU1VQREFURS1jb21waWxpbmctaXNzdWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGE1OWNiOThhNDczY2FhMmFmZDY0ZDdhZTM2ODQ4MGI2ZTlmOTFiM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE0IE1heSAyMDE5IDExOjA3OjE1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIE5TVVBEQVRFIGNvbXBpbGluZyBpc3N1ZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW1BhdGNoIHNlbnQgdG86IGh0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2RoY3AvaXNzdWVzLzE2XQotCi1BIGZvbGxvd2luZyBlcnJvciB3YXMgb2JzZXJ2ZWQgd2hlbiBOU1VQREFURSBpcyBub3QgZGVmaW5lZDoKLXwgb21hcGlwL2lzY2xpYi5jOiBJbiBmdW5jdGlvbiAnZG5zX2NsaWVudF9pbml0JzoKLXwgb21hcGlwL2lzY2xpYi5jOjM1NjoxODogZXJyb3I6ICdkaGNwX2NvbnRleHRfdCB7YWthIHN0cnVjdCBkaGNwX2NvbnRleHR9JyBoYXMgbm8gbWVtYmVyIG5hbWVkICdkbnNjbGllbnQnCi18ICAgaWYgKGRoY3BfZ2JsX2N0eC5kbnNjbGllbnQgPT0gTlVMTCkgewotfCAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjM6MjQ6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAnZG5zY2xpZW50JwotfCAgICAgICAgICAgICZkaGNwX2dibF9jdHguZG5zY2xpZW50LAotfCAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjQ6MjQ6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAndXNlX2xvY2FsNCcKLXwgICAgICAgICAgICAoZGhjcF9nYmxfY3R4LnVzZV9sb2NhbDQgPwotfCAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjU6MjU6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAnbG9jYWw0X3NvY2thZGRyJwotfCAgICAgICAgICAgICAmZGhjcF9nYmxfY3R4LmxvY2FsNF9zb2NrYWRkcgotfCAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBvbWFwaXAvaXNjbGliLmM6MzY3OjI0OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3VzZV9sb2NhbDYnCi18ICAgICAgICAgICAgKGRoY3BfZ2JsX2N0eC51c2VfbG9jYWw2ID8KLXwgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBvbWFwaXAvaXNjbGliLmM6MzY4OjI1OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ2xvY2FsNl9zb2NrYWRkcicKLXwgICAgICAgICAgICAgJmRoY3BfZ2JsX2N0eC5sb2NhbDZfc29ja2FkZHIKLQotRml4IGl0IGJ5IGFkZGluZyBOU1VQREFURSBjb25kaXRpb25hbCBjaGVja2luZy4KLQotU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgotLS0tCi0gaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oIHwgMiArKwotIG9tYXBpcC9pc2NsaWIuYyAgICAgICAgICB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oIGIvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi1pbmRleCA1MzhiOTI3Li42YzIwNTg0IDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi0rKysgYi9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLUBAIC0xNDEsNiArMTQxLDggQEAgdm9pZCBpc2NsaWJfY2xlYW51cCh2b2lkKTsKLSB2b2lkIGRoY3Bfc2lnbmFsX2hhbmRsZXIoaW50IHNpZ25hbCk7Ci0gZXh0ZXJuIGludCBzaHV0ZG93bl9zaWduYWw7Ci0gCi0rI2lmIGRlZmluZWQgKE5TVVBEQVRFKQotIGlzY19yZXN1bHRfdCBkbnNfY2xpZW50X2luaXQoKTsKLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogSVNDTElCX0ggKi8KLWRpZmYgLS1naXQgYS9vbWFwaXAvaXNjbGliLmMgYi9vbWFwaXAvaXNjbGliLmMKLWluZGV4IGRiM2I4OTUuLmNlNGI0YTEgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvaXNjbGliLmMKLSsrKyBiL29tYXBpcC9pc2NsaWIuYwotQEAgLTM1MSw2ICszNTEsNyBAQCB2b2lkIGRoY3Bfc2lnbmFsX2hhbmRsZXIoaW50IHNpZ25hbCkgewotIAl9Ci0gfQotIAotKyNpZiBkZWZpbmVkIChOU1VQREFURSkKLSBpc2NfcmVzdWx0X3QgZG5zX2NsaWVudF9pbml0KCkgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAlpZiAoZGhjcF9nYmxfY3R4LmRuc2NsaWVudCA9PSBOVUxMKSB7Ci1AQCAtMzg3LDMgKzM4OCw0IEBAIGlzY19yZXN1bHRfdCBkbnNfY2xpZW50X2luaXQoKSB7Ci0gCi0gCXJldHVybiBJU0NfUl9TVUNDRVNTOwotIH0KLSsjZW5kaWYKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLW1hc3Rlci1BZGRlZC1pbmNsdWRlcy1vZi1uZXctQklORDktY29tcGF0aWJpbGl0eS1oZWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtbWFzdGVyLUFkZGVkLWluY2x1ZGVzLW9mLW5ldy1CSU5EOS1jb21wYXRpYmlsaXR5LWhlYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjMTQyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtbWFzdGVyLUFkZGVkLWluY2x1ZGVzLW9mLW5ldy1CSU5EOS1jb21wYXRpYmlsaXR5LWhlYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gODE5NGRhYWJmZDU5MGYxNzgyNWYwYzYxZTk1MzRiZWU1Yzk5Y2M4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBNYXJrd2FsZGVyIDx0bWFya0Bpc2Mub3JnPgotRGF0ZTogRnJpLCAxNCBTZXAgMjAxOCAxMzo0MTo0MSAtMDQwMAotU3ViamVjdDogW21hc3Rlcl0gQWRkZWQgaW5jbHVkZXMgb2YgbmV3IEJJTkQ5IGNvbXBhdGliaWxpdHkgaGVhZGVycwotCi0gICAgTWVyZ2VzIGluIHJ0NDgwNzIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFkcmlhbiBCdW5rIDxidW5rQHN0dXN0YS5kZT4KLQotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaCBiL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaAotaW5kZXggNzVhODdmZjYuLjUzOGI5MjdmIDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi0rKysgYi9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLUBAIC00OCw2ICs0OCw5IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgotIAotKyNpbmNsdWRlIDxpc2MvYm9vbGVhbi5oPgotKyNpbmNsdWRlIDxpc2MvaW50Lmg+Ci0rCi0gI2luY2x1ZGUgPGlzYy9idWZmZXIuaD4KLSAjaW5jbHVkZSA8aXNjL2xleC5oPgotICNpbmNsdWRlIDxpc2MvbGliLmg+Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvb21hcGlwL3Jlc3VsdC5oIGIvaW5jbHVkZXMvb21hcGlwL3Jlc3VsdC5oCi1pbmRleCA5MTI0M2UxYi4uODYwMjk4ZjYgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlcy9vbWFwaXAvcmVzdWx0LmgKLSsrKyBiL2luY2x1ZGVzL29tYXBpcC9yZXN1bHQuaAotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaWZuZGVmIERIQ1BfUkVTVUxUX0gKLSAjZGVmaW5lIERIQ1BfUkVTVUxUX0ggMQotIAotKyNpbmNsdWRlIDxpc2MvYm9vbGVhbi5oPgotICNpbmNsdWRlIDxpc2MvbGFuZy5oPgotICNpbmNsdWRlIDxpc2MvcmVzdWx0Y2xhc3MuaD4KLSAjaW5jbHVkZSA8aXNjL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc2VydmVyL2RoY3B2Ni5jIGIvc2VydmVyL2RoY3B2Ni5jCi1pbmRleCBhNzExMGY5OC4uY2RlNGY2MTcgMTAwNjQ0Ci0tLS0gYS9zZXJ2ZXIvZGhjcHY2LmMKLSsrKyBiL3NlcnZlci9kaGNwdjYuYwotQEAgLTEwMzQsNyArMTAzNCw4IEBAIHZvaWQgY2hlY2tfcG9vbDZfdGhyZXNob2xkKHN0cnVjdCByZXBseV9zdGF0ZSAqcmVwbHksCi0gCQkJCSAgc2hhcmVkX25hbWUsCi0gCQkJCSAgaW5ldF9udG9wKEFGX0lORVQ2LCAmbGVhc2UtPmFkZHIsCi0gCQkJCQkgICAgdG1wX2FkZHIsIHNpemVvZih0bXBfYWRkcikpLAotLQkJCQkgIHVzZWQsIGNvdW50KTsKLSsJCQkJICAobG9uZyBsb25nIHVuc2lnbmVkKSh1c2VkKSwKLSsJCQkJICAobG9uZyBsb25nIHVuc2lnbmVkKShjb3VudCkpOwotIAkJfQotIAkJcmV0dXJuOwotIAl9Ci1AQCAtMTA2Niw3ICsxMDY3LDggQEAgdm9pZCBjaGVja19wb29sNl90aHJlc2hvbGQoc3RydWN0IHJlcGx5X3N0YXRlICpyZXBseSwKLSAJCSAgImFkZHJlc3M6ICVzOyBoaWdoIHRocmVzaG9sZCAlZCUlICVsbHUvJWxsdS4iLAotIAkJICBzaGFyZWRfbmFtZSwKLSAJCSAgaW5ldF9udG9wKEFGX0lORVQ2LCAmbGVhc2UtPmFkZHIsIHRtcF9hZGRyLCBzaXplb2YodG1wX2FkZHIpKSwKLS0JCSAgcG9vbGhpZ2gsIHVzZWQsIGNvdW50KTsKLSsJCSAgcG9vbGhpZ2gsIChsb25nIGxvbmcgdW5zaWduZWQpKHVzZWQpLAotKwkJICAobG9uZyBsb25nIHVuc2lnbmVkKShjb3VudCkpOwotIAotIAkvKiBoYW5kbGUgdGhlIGxvdyB0aHJlc2hvbGQgbm93LCBpZiB3ZSBkb24ndAotIAkgKiBoYXZlIG9uZSB3ZSBkZWZhdWx0IHRvIDAuICovCi1AQCAtMTQzNiwxMiArMTQzOCwxNSBAQCBwaWNrX3Y2X2FkZHJlc3Moc3RydWN0IHJlcGx5X3N0YXRlICpyZXBseSkKLSAJCWxvZ19kZWJ1ZygiVW5hYmxlIHRvIHBpY2sgY2xpZW50IGFkZHJlc3M6ICIKLSAJCQkgICJubyBhZGRyZXNzZXMgYXZhaWxhYmxlICAtIHNoYXJlZCBuZXR3b3JrICVzOiAiCi0gCQkJICAiIDJeNjQtMSA8IHRvdGFsLCAlbGx1IGFjdGl2ZSwgICVsbHUgYWJhbmRvbmVkIiwKLS0JCQkgIHNoYXJlZF9uYW1lLCBhY3RpdmUgLSBhYmFuZG9uZWQsIGFiYW5kb25lZCk7Ci0rCQkJICBzaGFyZWRfbmFtZSwgKGxvbmcgbG9uZyB1bnNpZ25lZCkoYWN0aXZlIC0gYWJhbmRvbmVkKSwKLSsJCQkgIChsb25nIGxvbmcgdW5zaWduZWQpKGFiYW5kb25lZCkpOwotIAl9IGVsc2UgewotIAkJbG9nX2RlYnVnKCJVbmFibGUgdG8gcGljayBjbGllbnQgYWRkcmVzczogIgotIAkJCSAgIm5vIGFkZHJlc3NlcyBhdmFpbGFibGUgIC0gc2hhcmVkIG5ldHdvcmsgJXM6ICIKLSAJCQkgICIlbGx1IHRvdGFsLCAlbGx1IGFjdGl2ZSwgICVsbHUgYWJhbmRvbmVkIiwKLS0JCQkgIHNoYXJlZF9uYW1lLCB0b3RhbCwgYWN0aXZlIC0gYWJhbmRvbmVkLCBhYmFuZG9uZWQpOwotKwkJCSAgc2hhcmVkX25hbWUsIChsb25nIGxvbmcgdW5zaWduZWQpKHRvdGFsKSwKLSsJCQkgIChsb25nIGxvbmcgdW5zaWduZWQpKGFjdGl2ZSAtIGFiYW5kb25lZCksCi0rCQkgICAgICAgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCkoYWJhbmRvbmVkKSk7Ci0gCX0KLSAKLSAJcmV0dXJuIElTQ19SX05PUkVTT1VSQ0VTOwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmluZGV4IGI3MWM5M2QuLjdiNTc3MzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC04NSw5ICs4NSwxMSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGRoY3AtNC40LjEub3JpZy9yZWxheS9NYWtlZmlsZS5hbQogKysrIGRoY3AtNC40LjEvcmVsYXkvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAorQEAgLTEsNiArMSw2IEBACisgU1VCRElSUyA9IC4gdGVzdHMKKwogLUFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKICtBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAorCiAgc2Jpbl9QUk9HUkFNUyA9IGRoY3JlbGF5CiAgZGhjcmVsYXlfU09VUkNFUyA9IGRoY3JlbGF5LmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjA3NzdiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1yZXF1aXJlIGRoY3AuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWZpeHVwX3VzZV9saWJiaW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1hc3Rlci1BZGRlZC1pbmNsdWRlcy1vZi1uZXctQklORDktY29tcGF0aWJpbGl0eS1oZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWEtTlNVUERBVEUtY29tcGlsaW5nLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdvcmthcm91bmQtYnVzeWJveC1saW1pdGF0aW9uLWluLWxpbnV4LWRoY2xpZW50LXNjcmlwdC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxOGM3ZjRkY2JiMGE2M2RmMjUwOTgyMTZkNDdiMWVkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYTIyNTA4OTIyYWIzNjdiNGFmNDY2NGEwNDcyZGMyMjBjYzk2MDM0ODJjZjNjMTZkOWFmZjE0ZjNhNzZiNjA4IgotCi1MREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTZhMjA0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMi5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGRoY3AuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWZpeHVwX3VzZV9saWJiaW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdvcmthcm91bmQtYnVzeWJveC1saW1pdGF0aW9uLWluLWxpbnV4LWRoY2xpZW50LXNjcmlwdC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYWZkYWY4NDk4ZGMxZWRhZjMwMTJlZmRkNTg5YjNlMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYTdjY2Q2NGExNmU1ZTY4ZjdiNWUwZjUyN2ZkMDcyNDBhMjg5MmVhNTNmZTI0NTYyMGY0ZjVmNjA3MDA0NTIxIgorCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaW5ldHV0aWxzL2luZXR1dGlsc18xLjkuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiCmluZGV4IDY4NGZiZTAuLmNjOTQxMGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiCkBAIC0xNDMsMTEgKzE0MywxNSBAQAogQUxURVJOQVRJVkVfJHtQTn0taG9zdG5hbWUgPSAiaG9zdG5hbWUiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWVdICA9ICIke2Jhc2VfYmluZGlyfS9ob3N0bmFtZSIKIAotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImhvc3RuYW1lLjEgZG5zZG9tYWlubmFtZS4xIGxvZ2dlci4xIHN5c2xvZ2QuOCIKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJob3N0bmFtZS4xIGRuc2RvbWFpbm5hbWUuMSBsb2dnZXIuMSBzeXNsb2dkLjggXAorICAgICAgICAgICAgICAgICAgICAgICAgIHRmdHBkLjggdGZ0cC4xIHRlbG5ldGQuOCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9ob3N0bmFtZS4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2Ruc2RvbWFpbm5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvZG5zZG9tYWlubmFtZS4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2xvZ2dlci4xXSA9ICIke21hbmRpcn0vbWFuMS9sb2dnZXIuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2dkLjhdID0gIiR7bWFuZGlyfS9tYW44L3N5c2xvZ2QuOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZWxuZXRkLjhdID0gIiR7bWFuZGlyfS9tYW44L3RlbG5ldGQuOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZnRwZC44XSA9ICIke21hbmRpcn0vbWFuOC90ZnRwZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RmdHAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdGZ0cC4xIgogCiBBTFRFUk5BVElWRV8ke1BOfS1pZmNvbmZpZyA9ICJpZmNvbmZpZyIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtpZmNvbmZpZ10gID0gIiR7YmFzZV9zYmluZGlyfS9pZmNvbmZpZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCmluZGV4IGZjMzFiODQuLjQwM2QyNjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwpAQCAtMTUsMTIgKzE1LDE5IEBACiAKIENMRUFOQlJPS0VOID0gIjEiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJ0aXBjIGVsZiIKK1BBQ0tBR0VDT05GSUcgPz89ICJ0aXBjIGVsZiBkZXZsaW5rIgogUEFDS0FHRUNPTkZJR1t0aXBjXSA9ICIsLGxpYm1ubCwiCiBQQUNLQUdFQ09ORklHW2VsZl0gPSAiLCxlbGZ1dGlscywiCitQQUNLQUdFQ09ORklHW2RldmxpbmtdID0gIiwsbGlibW5sLCIKIAotRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgS0VSTkVMX0lOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0gRE9DRElSPSR7ZG9jZGlyfS9pcHJvdXRlMiBTVUJESVJTPSdsaWIgdGMgaXAgYnJpZGdlIG1pc2MgZ2VubCBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICd0aXBjJywgJycsIGQpfScgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBMSUJESVI9JyR7bGliZGlyfSciCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIENDPScke0NDfScgXAorICAgIEtFUk5FTF9JTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICBET0NESVI9JHtkb2NkaXJ9L2lwcm91dGUyIFwKKyAgICBTVUJESVJTPSdsaWIgdGMgaXAgYnJpZGdlIG1pc2MgZ2VubCAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnZGV2bGluayB0aXBjJywgZCl9JyBcCisgICAgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBcCisgICAgTElCRElSPScke2xpYmRpcn0nIFwKKyIKIAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CiAgICAgc2ggY29uZmlndXJlICR7U1RBR0lOR19JTkNESVJ9CkBAIC0zOSwxNCArNDYsMTggQEAKICMgVGhlIC5zbyBmaWxlcyBpbiBpcHJvdXRlMi10YyBhcmUgbW9kdWxlcywgbm90IHRyYWRpdGlvbmFsIGxpYnJhcmllcwogSU5TQU5FX1NLSVBfJHtQTn0tdGMgPSAiZGV2LXNvIgogCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGMgXAotICAgICAgICAgICAgICR7UE59LWxuc3RhdCBcCi0gICAgICAgICAgICAgJHtQTn0taWZzdGF0IFwKLSAgICAgICAgICAgICAke1BOfS1nZW5sIFwKLSAgICAgICAgICAgICAke1BOfS1ydGFjY3QgXAotICAgICAgICAgICAgICR7UE59LW5zdGF0IFwKLSAgICAgICAgICAgICAke1BOfS1zcyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICcke1BOfS10aXBjJywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICJcCisgICAgJHtQTn0tZGV2bGluayBcCisgICAgJHtQTn0tZ2VubCBcCisgICAgJHtQTn0taWZzdGF0IFwKKyAgICAke1BOfS1sbnN0YXQgXAorICAgICR7UE59LW5zdGF0IFwKKyAgICAke1BOfS1ydGFjY3QgXAorICAgICR7UE59LXNzIFwKKyAgICAke1BOfS10YyBcCisgICAgJHtQTn0tdGlwYyBcCisiCisKIEZJTEVTXyR7UE59LXRjID0gIiR7YmFzZV9zYmluZGlyfS90YyogXAogICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3RjLyouc28iCiBGSUxFU18ke1BOfS1sbnN0YXQgPSAiJHtiYXNlX3NiaW5kaXJ9L2xuc3RhdCBcCkBAIC01OCw2ICs2OSw3IEBACiBGSUxFU18ke1BOfS1uc3RhdCA9ICIke2Jhc2Vfc2JpbmRpcn0vbnN0YXQiCiBGSUxFU18ke1BOfS1zcyA9ICIke2Jhc2Vfc2JpbmRpcn0vc3MiCiBGSUxFU18ke1BOfS10aXBjID0gIiR7YmFzZV9zYmluZGlyfS90aXBjIgorRklMRVNfJHtQTn0tZGV2bGluayA9ICIke2Jhc2Vfc2JpbmRpcn0vZGV2bGluayIKIAogQUxURVJOQVRJVkVfJHtQTn0gPSAiaXAiCiBBTFRFUk5BVElWRV9UQVJHRVRbaXBdID0gIiR7YmFzZV9zYmluZGlyfS9pcC4ke0JQTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhODZjYmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBpcHJvdXRlMi5pbmMKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25ldC8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMjc0MDQ0MTNjOGQ2ZGI2NDlkNjE4OGVhZDFlNWE2ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjFjMWU0NTk5M2EzYmQyNDM4NTQzZmQ0MzMyZDcwZjE3MjZhNmU2ZmY5N2RjNjEzYTgyNThjOTkzMTE3YjNmIgotCi0jIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKLSMKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9JyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDBhYjEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuNS4wLmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgaXByb3V0ZTIuaW5jCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWU4ZTJjZGI0MTZkNGE4ZWYzOTUyNWQzOWFiN2MyZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmFjNTQzNDM1Y2FjMjA4YTExZGI0NGM5Y2M4ZTM1YWE5MDJiZWZlZjg3NTA1OTQ2NTRlZTcxOTQxYzM4OGY3YiIKKworIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCisjCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSAtZmNvbW1vbiciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvc2VwYXJhdGUtb2JqZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3L3NlcGFyYXRlLW9iamRpci5wYXRjaAppbmRleCBlYjAxYTVhLi4xNzlmZDkwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvc2VwYXJhdGUtb2JqZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pdy9zZXBhcmF0ZS1vYmpkaXIucGF0Y2gKQEAgLTEsMyArMSw2IEBACitGcm9tIGZmOWYwYTYzMWM5OWZiNmUyNjc3YzAyYmY1NzJhNWU2OWM3MGY1Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAyMjo0ODowMyArMDEwMAogU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IHNlcGFyYXRpb24gb2YgU1JDRElSIGFuZCBPQkpESVIKIAogVHlwaWNhbCB1c2Ugb2YgVlBBVEggdG8gbG9jYXRlIHRoZSBzb3VyY2VzLgpAQCAtMTEsMTIgKzE0LDEyIEBACiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDMzYWFmNmEuLjkwMzA3OTYgMTAwNjQ0CitpbmRleCA5MGYyMjUxLi43MTRjZGI5IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtMSw1ICsxLDkgQEAKICBNQUtFRkxBR1MgKz0gLS1uby1wcmludC1kaXJlY3RvcnkKLQorIAogK1NSQ0RJUiA/PSAkKGRpciAkKGxhc3R3b3JkICQoTUFLRUZJTEVfTElTVCkpKQogK09CSkRJUiA/PSAkKFBXRCkKICtWUEFUSCA9ICQoU1JDRElSKQpAQCAtMjQsMTkgKzI3LDI0IEBACiAgUFJFRklYID89IC91c3IKICBTQklORElSID89ICQoUFJFRklYKS9zYmluCiAgTUFORElSID89ICQoUFJFRklYKS9zaGFyZS9tYW4KLUBAIC0xMDMsMTEgKzEwNywxMSBAQCBWRVJTSU9OX09CSlMgOj0gJChmaWx0ZXItb3V0IHZlcnNpb24ubywgJChPQkpTKSkKK0BAIC05Miw3ICs5Niw3IEBAIGFsbDogJChBTEwpCiAgdmVyc2lvbi5jOiB2ZXJzaW9uLnNoICQocGF0c3Vic3QgJS5vLCUuYywkKFZFUlNJT05fT0JKUykpIG5sODAyMTEuaCBpdy5oIE1ha2VmaWxlIFwKICAJCSQod2lsZGNhcmQgLmdpdC9pbmRleCAuZ2l0L3JlZnMvdGFncykKICAJQCQoTlEpICcgR0VOICcgJEAKIC0JJChRKS4vdmVyc2lvbi5zaCAkQAogKwkkKFEpY2QgJChTUkNESVIpICYmIC4vdmVyc2lvbi5zaCAkKE9CSkRJUikvJEAKLQotICUubzogJS5jIGl3Lmggbmw4MDIxMS5oCisgCisgbmw4MDIxMS1jb21tYW5kcy5pbmM6IG5sODAyMTEuaAorIAlAJChOUSkgJyBHRU4gJyAkQAorQEAgLTEwMCw3ICsxMDQsNyBAQCBubDgwMjExLWNvbW1hbmRzLmluYzogbmw4MDIxMS5oCisgCisgJS5vOiAlLmMgaXcuaCBubDgwMjExLmggbmw4MDIxMS1jb21tYW5kcy5pbmMKICAJQCQoTlEpICcgQ0MgICcgJEAKIC0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtYyAtbyAkQCAkPAogKwkkKFEpJChDQykgLUkkKFNSQ0RJUikgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1jIC1vICRAICQ8Ci0KKyAKICBpZmVxICgkKElXX0FORFJPSURfQlVJTEQpLCkKICBpdzoJJChPQkpTKQotLS0KLTIuMjAuMSAoQXBwbGUgR2l0LTExNykKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2YxM2Y1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIm5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3Igd2lyZWxlc3MgZGV2aWNlcyIKLURFU0NSSVBUSU9OID0gIml3IGlzIGEgbmV3IG5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3IgXAotd2lyZWxlc3MgZGV2aWNlcy4gSXQgc3VwcG9ydHMgYWxtb3N0IGFsbCBuZXcgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBcCi10byB0aGUga2VybmVsIHJlY2VudGx5LiAiCi1IT01FUEFHRSA9ICJodHRwOi8vd2lyZWxlc3Mua2VybmVsLm9yZy9lbi91c2Vycy9Eb2N1bWVudGF0aW9uL2l3IgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Nzg2MThhNWM0YWYyNWU5YjkzZWYwYmUxYTkzZjc3NCIKLQotREVQRU5EUyA9ICJsaWJubCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvaXcvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXctdmVyc2lvbi5zaC1kb24tdC11c2UtZ2l0LWRlc2NyaWJlLWZvci12ZXJzaW9uaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcGFyYXRlLW9iamRpci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZDRkMWMwZWUzNGYzYTdiZGEwZTZhYWZjZDdhYWYzMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzVhYmJmY2U4NjM0OGMwYjcwZTc3OGMxM2E5NGMwYmZjOWFiYzdhNTA2ZDJiZDYwODI2MTU4M2FlZWRmNjRhIgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIC1mICcke1N9L01ha2VmaWxlJyBcCi0gICAgXAotICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCi0gICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAotICAgICdNQU5ESVI9JHttYW5kaXJ9JyBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjU4ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuNC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIm5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3Igd2lyZWxlc3MgZGV2aWNlcyIKK0RFU0NSSVBUSU9OID0gIml3IGlzIGEgbmV3IG5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3IgXAord2lyZWxlc3MgZGV2aWNlcy4gSXQgc3VwcG9ydHMgYWxtb3N0IGFsbCBuZXcgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBcCit0byB0aGUga2VybmVsIHJlY2VudGx5LiAiCitIT01FUEFHRSA9ICJodHRwOi8vd2lyZWxlc3Mua2VybmVsLm9yZy9lbi91c2Vycy9Eb2N1bWVudGF0aW9uL2l3IgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Nzg2MThhNWM0YWYyNWU5YjkzZWYwYmUxYTkzZjc3NCIKKworREVQRU5EUyA9ICJsaWJubCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvaXcvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXctdmVyc2lvbi5zaC1kb24tdC11c2UtZ2l0LWRlc2NyaWJlLWZvci12ZXJzaW9uaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlcGFyYXRlLW9iamRpci5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwOGE0ZjU4MWEzOWRjNjJmYTg1ZDNhZjc5NmQ4NDRiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDNjZDI0NDZhNmM3MjQyZmRlZDM3NjZkMDU0YWIyYTIxNGEzNTE0YjlhOGI3ZTk0MmZlZDhmYjEzYzEzNzBjIgorCitpbmhlcml0IHBrZ2NvbmZpZworCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIC1mICcke1N9L01ha2VmaWxlJyBcCisgICAgXAorICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCisgICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAorICAgICdNQU5ESVI9JHttYW5kaXJ9JyBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTM1MDU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJOYW1lIFNlcnZpY2UgU3dpdGNoIG1vZHVsZSBmb3IgTXVsdGljYXN0IEROUyAoemVyb2NvbmYpIG5hbWUgcmVzb2x1dGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly8wcG9pbnRlci5kZS9sZW5uYXJ0L3Byb2plY3RzL25zcy1tZG5zLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotREVQRU5EUyA9ICJhdmFoaSIKLVBSID0gInI3IgotCi1TUkNfVVJJID0gImh0dHA6Ly8wcG9pbnRlci5kZS9sZW5uYXJ0L3Byb2plY3RzL25zcy1tZG5zL25zcy1tZG5zLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAzOTM4ZjE3NjQ2ZWZiYjUwYWE3MGJhNWY5OWY1MWQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlNjgzYzJlN2MzOTIxODE0NzA2ZDYyZmJiZDNlOWNiZjQ5M2E3NWZhMDAyNTVlMGU3MTU1MDhkODEzNGZhNmQiCi0KLVMgPSAiJHtXT1JLRElSfS9uc3MtbWRucy0ke1BWfSIKLQotbG9jYWxzdGF0ZWRpciA9ICIvIgotCi1pbmhlcml0IGF1dG90b29scwotCi1DT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCi0KLUVYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLWRpc2FibGUtbHlueCAtLWVuYWJsZS1hdmFoaSIKLQotIyBzdXBwcmVzcyB3YXJuaW5nLCBidXQgZG9uJ3QgYm90aGVyIHdpdGggYXV0b25hbWVyCi1MRUFEX1NPTkFNRSA9ICJsaWJuc3NfbWRucy5zbyIKLURFQklBTk5BTUVfJHtQTn0gPSAibGlibnNzLW1kbnMiCi0KLVJERVBFTkRTXyR7UE59ID0gImF2YWhpLWRhZW1vbiIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlzZWQgJwotCQkvXmhvc3RzOi8gIWIKLQkJL1w8bWRuc1woNFx8NlwpXD9cKF9taW5pbWFsXClcP1w+LyBiCi0JCXMvXChbWzpibGFuazpdXVwrXClkbnNcPi9cMW1kbnM0X21pbmltYWwgW05PVEZPVU5EPXJldHVybl0gZG5zL2cKLQkJJyAtaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn0gKCkgewotCXNlZCAnCi0JCS9eaG9zdHM6LyAhYgotCQlzL1tbOmJsYW5rOl1dXCttZG5zXCg0XHw2XClcP1woX21pbmltYWxcKCBcW05PVEZPVU5EPXJldHVyblxdXClcP1wpXD8vL2cKLQkJJyAtaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU0NDYwMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjE0LjEuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJOYW1lIFNlcnZpY2UgU3dpdGNoIG1vZHVsZSBmb3IgTXVsdGljYXN0IEROUyAoemVyb2NvbmYpIG5hbWUgcmVzb2x1dGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L25zcy1tZG5zIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorCitERVBFTkRTID0gImF2YWhpIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGF0aGlhdC9uc3MtbWRucyBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjQxYzljNWU3OGYyODdlZDRiNDFhYzQzOGMxODczZmE3MWJmYTcwYWUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKK0VYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKKworUkRFUEVORFNfJHtQTn0gPSAiYXZhaGktZGFlbW9uIgorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCXNlZCAnCisJCS9eaG9zdHM6LyAhYgorCQkvXDxtZG5zXCg0XHw2XClcP1woX21pbmltYWxcKVw/XD4vIGIKKwkJcy9cKFtbOmJsYW5rOl1dXCtcKWRuc1w+L1wxbWRuczRfbWluaW1hbCBbTk9URk9VTkQ9cmV0dXJuXSBkbnMvZworCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisJc2VkICcKKwkJL15ob3N0czovICFiCisJCXMvW1s6Ymxhbms6XV1cK21kbnNcKDRcfDZcKVw/XChfbWluaW1hbFwoIFxbTk9URk9VTkQ9cmV0dXJuXF1cKVw/XClcPy8vZworCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLURvbi10LWJ1aWxkLXRvb2xzLXdpdGgtQ0NfRk9SX0JVSUxELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1Eb24tdC1idWlsZC10b29scy13aXRoLUNDX0ZPUl9CVUlMRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNiYzNlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLURvbi10LWJ1aWxkLXRvb2xzLXdpdGgtQ0NfRk9SX0JVSUxELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA3OTAxOWQ5NzY1ODRjNTk4ZjhkMGE5ZDhkZTQzYzk4OTk0NmY5NzRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgotRGF0ZTogV2VkLCAxMyBGZWIgMjAxOSAwOToyODowNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCB0b29scyB3aXRoIENDX0ZPUl9CVUlMRAotCi1UaGUgdG9vbHMgYXJlIGludGVuZGVkIGZvciB0aGUgdGFyZ2V0IG5vdCBmb3IgdGhlIGhvc3QuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0tLS0KLSB0b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbSB8IDEgLQotIHRvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbSAgIHwgMSAtCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbG9ja3Rlc3QvTWFrZWZpbGUuYW0gYi90b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbQotaW5kZXggMzE1NjgxNS4uODdkMGJhYyAxMDA2NDQKLS0tLSBhL3Rvb2xzL2xvY2t0ZXN0L01ha2VmaWxlLmFtCi0rKysgYi90b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw1IEBACi0gIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCi0gCi0tQ0M9JChDQ19GT1JfQlVJTEQpCi0gTElCVE9PTCA9IEBMSUJUT09MQCAtLXRhZz1DQwotIAotIG5vaW5zdF9QUk9HUkFNUyA9IHRlc3RsawotZGlmZiAtLWdpdCBhL3Rvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbSBiL3Rvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbQotaW5kZXggOGE5ZWM4OS4uM2UwOTJjOSAxMDA2NDQKLS0tLSBhL3Rvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbQotKysrIGIvdG9vbHMvcnBjZ2VuL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDUgQEAKLSAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4KLSAKLS1DQz0kKENDX0ZPUl9CVUlMRCkKLSBMSUJUT09MID0gQExJQlRPT0xAIC0tdGFnPUNDCi0gCi0gbm9pbnN0X1BST0dSQU1TID0gcnBjZ2VuCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLUZpeC1pbmNsdWRlLW9yZGVyLWJldHdlZW4tY29uZmlnLmgtYW5kLXN0YXQuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRml4LWluY2x1ZGUtb3JkZXItYmV0d2Vlbi1jb25maWcuaC1hbmQtc3RhdC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjBmOTM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRml4LWluY2x1ZGUtb3JkZXItYmV0d2Vlbi1jb25maWcuaC1hbmQtc3RhdC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLUZyb20gMmZiYzYyZTJhMTNmYzIyYjZhZTQ5MTBlMjk1YTJjMTBmYjc5MDQ4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFpvbHRhbiBLYXJjYWdpIDx6a3I3NDMyQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTIgQXVnIDIwMTkgMTM6Mjc6MTYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGluY2x1ZGUgb3JkZXIgYmV0d2VlbiBjb25maWcuaCBhbmQgc3RhdC5oCi0KLUF0IGxlYXN0IG9uIEFyY2ggbGludXggQVJNLCB0aGUgZGVmaW5pdGlvbiBvZiBzdHJ1Y3Qgc3RhdCBpbiBzdGF0LmggZGVwZW5kcwotb24gX19VU0VfRklMRV9PRkZTRVQ2NC4gVGhpcyBzeW1ib2wgY29tZXMgZnJvbSBjb25maWcuaCB3aGVuIGRlZmluZWQsCi10aGVyZWZvcmUgY29uZmlnLmggbXVzdCBhbHdheXMgYmUgaW5jbHVkZWQgYmVmb3JlIHN0YXQuaC4gRml4IGFsbAotb2NjdXJyZW5jZXMgd2hlcmUgdGhlIG9yZGVyIGlzIHdyb25nIGJ5IG1vdmluZyBjb25maWcuaCB0byB0aGUgdG9wLgotCi1UaGlzIGZpeGVzIHRoZSBjbGllbnQgc2lkZSBlcnJvciAiU3RhbGUgZmlsZSBoYW5kbGUiIHdoZW4gbW91bnRpbmcgZnJvbQotYSBzZXJ2ZXIgcnVubmluZyBBcmNoIExpbnV4IEFSTS4KLQotU2lnbmVkLW9mZi1ieTogWm9sdGFuIEthcmNhZ2kgPHprcjc0MzJAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwOi8vZ2l0LmxpbnV4LW5mcy5vcmcvP3A9c3RldmVkL25mcy11dGlscy5naXQ7YT1jb21taXQ7aD0yZmJjNjJlMmExM2ZjMjJiNmFlNDkxMGUyOTVhMmMxMGZiNzkwNDg2XQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzdXBwb3J0L21pc2MvbmZzZF9wYXRoLmMgICAgICAgICB8IDUgKysrKy0KLSBzdXBwb3J0L21pc2MveHN0YXQuYyAgICAgICAgICAgICB8IDUgKysrKy0KLSBzdXBwb3J0L25mcy9jb25mZmlsZS5jICAgICAgICAgICB8IDggKysrKysrKy0KLSB1dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYyB8IDggKysrKy0tLS0KLSB1dGlscy9pZG1hcGQvaWRtYXBkLmMgICAgICAgICAgICB8IDggKysrKy0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jIGIvc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jCi1pbmRleCA4NGU0ODAyLi5mMDc4YTY2IDEwMDY0NAotLS0tIGEvc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jCi0rKysgYi9zdXBwb3J0L21pc2MvbmZzZF9wYXRoLmMKLUBAIC0xLDMgKzEsNyBAQAotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLUBAIC01LDcgKzksNiBAQAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0tI2luY2x1ZGUgImNvbmZpZy5oIgotICNpbmNsdWRlICJjb25mZmlsZS5oIgotICNpbmNsdWRlICJ4bWFsbG9jLmgiCi0gI2luY2x1ZGUgInhsb2cuaCIKLWRpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MveHN0YXQuYyBiL3N1cHBvcnQvbWlzYy94c3RhdC5jCi1pbmRleCBmYTA0Nzg4Li40Yzk5N2VlIDEwMDY0NAotLS0tIGEvc3VwcG9ydC9taXNjL3hzdGF0LmMKLSsrKyBiL3N1cHBvcnQvbWlzYy94c3RhdC5jCi1AQCAtMSwzICsxLDcgQEAKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci1AQCAtNSw3ICs5LDYgQEAKLSAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0gI2luY2x1ZGUgInhzdGF0LmgiCi0gCi0gI2lmZGVmIEhBVkVfRlNUQVRBVAotZGlmZiAtLWdpdCBhL3N1cHBvcnQvbmZzL2NvbmZmaWxlLmMgYi9zdXBwb3J0L25mcy9jb25mZmlsZS5jCi1pbmRleCBiNjQwMGJlLi42YmE4YTM1IDEwMDY0NAotLS0tIGEvc3VwcG9ydC9uZnMvY29uZmZpbGUuYwotKysrIGIvc3VwcG9ydC9uZnMvY29uZmZpbGUuYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBjb25mX3JlYWRmaWxlKGNvbnN0IGNoYXIgKnBhdGgpCi0gCi0gCWlmICgoc3RhdCAocGF0aCwgJnNiKSA9PSAwKSB8fCAoZXJybm8gIT0gRU5PRU5UKSkgewotIAkJY2hhciAqbmV3X2NvbmZfYWRkciA9IE5VTEw7Ci0tCQlzaXplX3Qgc3ogPSBzYi5zdF9zaXplOwotKwkJb2ZmX3Qgc3o7Ci0gCQlpbnQgZmQgPSBvcGVuIChwYXRoLCBPX1JET05MWSwgMCk7Ci0gCi0gCQlpZiAoZmQgPT0gLTEpIHsKLUBAIC01MTcsNiArNTE3LDExIEBAIGNvbmZfcmVhZGZpbGUoY29uc3QgY2hhciAqcGF0aCkKLSAKLSAJCS8qIG9ubHkgYWZ0ZXIgd2UgaGF2ZSB0aGUgbG9jaywgY2hlY2sgdGhlIGZpbGUgc2l6ZSByZWFkeSB0byByZWFkIGl0ICovCi0gCQlzeiA9IGxzZWVrKGZkLCAwLCBTRUVLX0VORCk7Ci0rCQlpZiAoc3ogPCAwKSB7Ci0rCQkJeGxvZ193YXJuKCJjb25mX3JlYWRmaWxlOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGZpbGUgc2l6ZTogJXMiLAotKwkJCQkgIHN0cmVycm9yKGVycm5vKSk7Ci0rCQkJZ290byBmYWlsOwotKwkJfQotIAkJbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKLSAKLSAJCW5ld19jb25mX2FkZHIgPSBtYWxsb2Moc3orMSk7Ci1AQCAtMjE2Miw2ICsyMTY3LDcgQEAgY29uZl93cml0ZShjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqc2VjdGlvbiwgY29uc3QgY2hhciAqYXJnLAotIAlyZXQgPSAwOwotIAotIGNsZWFudXA6Ci0rCWZsdXNoX291dHF1ZXVlKCZpbnF1ZXVlLCBOVUxMKTsKLSAJZmx1c2hfb3V0cXVldWUoJm91dHF1ZXVlLCBOVUxMKTsKLSAKLSAJaWYgKGJ1ZmYpCi1kaWZmIC0tZ2l0IGEvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMgYi91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYwotaW5kZXggZTgxMTcwMy4uZjVmOWIxMCAxMDA2NDQKLS0tLSBhL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCi0rKysgYi91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYwotQEAgLTI2LDYgKzI2LDEwIEBACi0gICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAgKi8KLSAKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKwotICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotQEAgLTUxLDEwICs1NSw2IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGxpYmRldm1hcHBlci5oPgotIAotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgImNvbmZpZy5oIgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0tCi0gI2luY2x1ZGUgImRldmljZS1kaXNjb3ZlcnkuaCIKLSAjaW5jbHVkZSAieGNvbW1vbi5oIgotICNpbmNsdWRlICJuZnNsaWIuaCIKLWRpZmYgLS1naXQgYS91dGlscy9pZG1hcGQvaWRtYXBkLmMgYi91dGlscy9pZG1hcGQvaWRtYXBkLmMKLWluZGV4IDYyZTM3YjguLjI2N2FjZWEgMTAwNjQ0Ci0tLS0gYS91dGlscy9pZG1hcGQvaWRtYXBkLmMKLSsrKyBiL3V0aWxzL2lkbWFwZC9pZG1hcGQuYwotQEAgLTM0LDYgKzM0LDEwIEBACi0gICogIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICAqLwotIAotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvaW5vdGlmeS5oPgotQEAgLTYyLDEwICs2Niw2IEBACi0gI2luY2x1ZGUgPGxpYmdlbi5oPgotICNpbmNsdWRlIDxuZnNpZG1hcC5oPgotIAotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgImNvbmZpZy5oIgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0tCi0gI2luY2x1ZGUgInhsb2cuaCIKLSAjaW5jbHVkZSAiY29uZmZpbGUuaCIKLSAjaW5jbHVkZSAicXVldWUuaCIKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2gKaW5kZXggZmNiMGU5OS4uYmQzNTAxNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoCkBAIC0yOCwxMCArMjgsMTAgQEAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCiAgc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtIHwgICAyICstCi0gc3VwcG9ydC9taXNjL2ZpbGUuYyAgICAgIHwgMTExIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHN1cHBvcnQvbWlzYy9maWxlLmMgICAgICB8IDExNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBzdXBwb3J0L21pc2MvbWlzYy5jICAgICAgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgc3VwcG9ydC9uc20vTWFrZWZpbGUuYW0gIHwgICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMTEzIGRlbGV0aW9ucygtKQorIDQgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy9NYWtlZmlsZS5hbSBiL3N1cHBvcnQvbWlzYy9NYWtlZmlsZS5hbQogaW5kZXggZjk5OTNlMy4uOGIwZTlkYiAxMDA2NDQKQEAgLTQ4LDEwICs0OCwxMCBAQAogIE1BSU5UQUlORVJDTEVBTkZJTEVTID0gTWFrZWZpbGUuaW4KIGRpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MvZmlsZS5jIGIvc3VwcG9ydC9taXNjL2ZpbGUuYwogZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBlN2MzODE5Li4wMDAwMDAwCitpbmRleCAwNmY2YmIyLi4wMDAwMDAwCiAtLS0gYS9zdXBwb3J0L21pc2MvZmlsZS5jCiArKysgL2Rldi9udWxsCi1AQCAtMSwxMTEgKzAsMCBAQAorQEAgLTEsMTE1ICswLDAgQEAKIC0vKgogLSAqIENvcHlyaWdodCAyMDA5IE9yYWNsZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAtICogQ29weXJpZ2h0IDIwMTcgUmVkIEhhdCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTcyLDYgKzcyLDEwIEBACiAtICogYWxvbmcgd2l0aCBuZnMtdXRpbHMuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAtICovCiAtCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCiAtI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAtCiAtI2luY2x1ZGUgPHN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWZhdGFsaXplLVdtaXNzaW5nLXByb3RvdHlwZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE0ZjA3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNjY0NzFmYmY3MTA2OTE3ZGE3YTE1MzZiMThhMGE3N2QwNzQ3OTc3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE3IERlYyAyMDE4IDE1OjI5OjQ3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogRG8gbm90IGZhdGFsaXplIC1XbWlzc2luZy1wcm90b3R5cGVzCi0KLVRoZXJlIGNvbWVzIGJlbG93IGVycm9yIHdoZW4gcnVuICJtYWtlIC1DIHRlc3RzL25zbV9jbGllbnQgbnNtX2NsaWVudCIKLXwgbmxtX3NtX2ludGVyX3N2Yy5jOjIwOjE6IGVycm9yOiBubyBwcmV2aW91cyBwcm90b3R5cGUgZm9yICdubG1fc21fcHJvZ18zJyBbLVdlcnJvcj1taXNzaW5nLXByb3RvdHlwZXNdCi0KLUl0IGlzIGJlY2F1c2UgcnBjZ2VuIGRvZXNuJ3QgZ2VuZXJhdGUgLVdtaXNzaW5nLXByb3RvdHlwZXMKLWZyZWUgY29kZSBmb3IgbmxtX3NtX2ludGVyX3N2Yy5jIHdpdGggYmVsb3cgbG9naWMKLWluIHRlc3RzL25zbV9jbGllbnQvTWFrZWZpbGUuYW0KLVtzbmlwXQotR0VORklMRVNfU1ZDICAgID0gbmxtX3NtX2ludGVyX3N2Yy5jCi1bc25pcF0KLSQoR0VORklMRVNfU1ZDKTogJV9zdmMuYzogJS54ICQoUlBDR0VOKQotICAgICAgICB0ZXN0IC1mICRAICYmIHJtIC1yZiAkQCB8fCB0cnVlCi0gICAgICAgICQoUlBDR0VOKSAtbSAtbyAkQCAkPAotCi1TbyBhZGQgdGhlIGxvZ2ljIG5vdCB0byBmYXRhbGl6ZSAtV21pc3NpbmctcHJvdG90eXBlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWRbaHR0cHM6Ly9tYXJjLmluZm8vP2w9bGludXgtbmZzJm09MTU0NTAzMjYwMzIzOTM2Jnc9Ml0KLQotU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNTAwMDJiNC4uYWViZmYwMSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTgyLDcgKzU4Miw3IEBAIG15X2FtX2NmbGFncz0iXAotICAtV2FsbCBcCi0gIC1XZXh0cmEgXAotICAkcnBjZ2VuX2NmbGFncyBcCi0tIC1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzIFwKLSsgLVdtaXNzaW5nLXByb3RvdHlwZXMgXAotICAtV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zIFwKLSAgLVdlcnJvcj1mb3JtYXQ9MiBcCi0gIC1XZXJyb3I9dW5kZWYgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLWZvcm1hdC1zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNjkzZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1DbGFuZyBjb21lcyB1cCB3aXRoIG1vcmUgcHJpbnRmIGZvcm1hdCB3YXJuaW5ncwotQ29ycmVjdGluZyDigJxmb3JtYXQgc3RyaW5nIGlzIG5vdCBhIHN0cmluZyBsaXRlcmFs4oCdIHdhcm5pbmcKLXJlcXVpcmVzIHVzIHRvIGRlY2xhcmUgdGhhdCBwYXJhbWV0ZXIgaXMgYSBwcmludGYgc3R5bGUgCi1mb3JtYXQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBmbGFnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94Y29tbW9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L2luY2x1ZGUveGNvbW1vbi5oCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94Y29tbW9uLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gLyogRnVuY3Rpb25zIGluIHN1bmRyaWVzLmMgdGhhdCBhcmUgdXNlZCBpbiBtb3VudC5jIGFuZCB1bW91bnQuYyAgKi8gCi0gY2hhciAqY2Fub25pY2FsaXplIChjb25zdCBjaGFyICpwYXRoKTsKLS12b2lkIG5mc19lcnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4pOwotK3ZvaWQgbmZzX2Vycm9yIChjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKLSB2b2lkICp4bWFsbG9jIChzaXplX3Qgc2l6ZSk7Ci0gdm9pZCAqeHJlYWxsb2Modm9pZCAqcCwgc2l6ZV90IHNpemUpOwotIHZvaWQgeGZyZWUodm9pZCAqKTsKLUBAIC0zNiw5ICszNiw5IEBAIGNoYXIgKnhzdHJuZHVwIChjb25zdCBjaGFyICpzLCBpbnQgbik7Ci0gY2hhciAqeHN0cmNvbmNhdDIgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSBjaGFyICp4c3RyY29uY2F0MyAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gY2hhciAqeHN0cmNvbmNhdDQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0tdm9pZCBkaWUgKGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0rdm9pZCBkaWUgKGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKLSAKLS1leHRlcm4gdm9pZCBkaWUoaW50IGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotK2V4dGVybiB2b2lkIGRpZShpbnQgZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKLSBleHRlcm4gdm9pZCAoKmF0X2RpZSkodm9pZCk7Ci0gCi0gLyogZXhpdCBzdGF0dXMgLSBiaXRzIGJlbG93IGFyZSBPUmVkICovCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94bG9nLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L2luY2x1ZGUveGxvZy5oCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94bG9nLmgKLUBAIC00MywxMCArNDMsMTAgQEAgdm9pZAkJCXhsb2dfY29uZmlnKGludCBmYWMsIGludCBvbik7Ci0gdm9pZAkJCXhsb2dfc2NvbmZpZyhjaGFyICosIGludCBvbik7Ci0gdm9pZAkJCXhsb2dfZnJvbV9jb25mZmlsZShjaGFyICopOwotIGludAkJCXhsb2dfZW5hYmxlZChpbnQgZmFjKTsKLS12b2lkCQkJeGxvZyhpbnQgZmFjLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0tdm9pZAkJCXhsb2dfd2Fybihjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0tdm9pZAkJCXhsb2dfZXJyKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLS12b2lkCQkJeGxvZ19lcnJubyhpbnQgZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0tdm9pZAkJCXhsb2dfYmFja2VuZChpbnQgZmFjLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7Ci0rdm9pZAkJCXhsb2coaW50IGZhYywgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0rdm9pZAkJCXhsb2dfd2Fybihjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKLSt2b2lkCQkJeGxvZ19lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSk7Ci0rdm9pZAkJCXhsb2dfZXJybm8oaW50IGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0rdm9pZAkJCXhsb2dfYmFja2VuZChpbnQgZmFjLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKLSAKLSAjZW5kaWYgLyogWExPR19IICovCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbmZzL3hjb21tb24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3N1cHBvcnQvbmZzL3hjb21tb24uYwotKysrIG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25mcy94Y29tbW9uLmMKLUBAIC05Myw3ICs5MywxMCBAQCBuZnNfZXJyb3IgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7Ci0gCi0gICAgICBmbXQyID0geHN0cmNvbmNhdDIgKGZtdCwgIlxuIik7Ci0gICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgotICAgICAgdmZwcmludGYgKHN0ZGVyciwgZm10MiwgYXJncyk7Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAgdmFfZW5kIChhcmdzKTsKLSAgICAgIGZyZWUgKGZtdDIpOwotIH0KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYwotQEAgLTY0NCw2ICs2NDQsNyBAQCBvdXQ6Ci0gCXJldHVybiByZXN1bHQ7Ci0gfQotIAotK19fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkKLSBzdGF0aWMgY2hhcgotIGR1bXBvcHQoY2hhciBjLCBjaGFyICpmbXQsIC4uLikKLSB7Ci1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3N0YXRkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9zdGF0ZC9zdGF0ZC5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3N0YXRkLmMKLUBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIHZvaWQgbG9nX21vZGVzKHZvaWQpCi0gCXN0cmNhdChidWYsICJUSS1SUEMgIik7Ci0gI2VuZGlmCi0gCi0tCXhsb2dfd2FybihidWYpOwotKwl4bG9nX3dhcm4oIiVzIiwgYnVmKTsKLSB9Ci0gCi0gLyoKLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uZnMvc3ZjX2NyZWF0ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvc3VwcG9ydC9uZnMvc3ZjX2NyZWF0ZS5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbmZzL3N2Y19jcmVhdGUuYwotQEAgLTE4NCw3ICsxODQsNyBAQCBzdmNfY3JlYXRlX3NvY2soY29uc3Qgc3RydWN0IHNvY2thZGRyICpzCi0gCQl0eXBlID0gU09DS19TVFJFQU07Ci0gCQlicmVhazsKLSAJZGVmYXVsdDoKLS0JCXhsb2coRF9HRU5FUkFMLCAiJXM6IFVucmVjb2duaXplZCBiaW5kIGFkZHJlc3Mgc2VtYW50aWNzOiAldSIsCi0rCQl4bG9nKERfR0VORVJBTCwgIiVzOiBVbnJlY29nbml6ZWQgYmluZCBhZGRyZXNzIHNlbWFudGljczogJWx1IiwKLSAJCQlfX2Z1bmNfXywgbmNvbmYtPm5jX3NlbWFudGljcyk7Ci0gCQlyZXR1cm4gLTE7Ci0gCX0KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uc20vcnBjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L25zbS9ycGMuYwotKysrIG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25zbS9ycGMuYwotQEAgLTE4Miw3ICsxODIsNyBAQCBuc21feG1pdF9nZXRwb3J0KGNvbnN0IGludCBzb2NrLCBjb25zdCBzCi0gCXVpbnQzMl90IHhpZDsKLSAJWERSIHhkcjsKLSAKLS0JeGxvZyhEX0NBTEwsICJTZW5kaW5nIFBNQVBfR0VUUE9SVCBmb3IgJXUsICV1LCB1ZHAiLCBwcm9ncmFtLCB2ZXJzaW9uKTsKLSsJeGxvZyhEX0NBTEwsICJTZW5kaW5nIFBNQVBfR0VUUE9SVCBmb3IgJWx1LCAlbHUsIHVkcCIsIHByb2dyYW0sIHZlcnNpb24pOwotIAotIAluc21faW5pdF94ZHJtZW0obXNnYnVmLCBOU01fTUFYTVNHU0laRSwgJnhkcik7Ci0gCXhpZCA9IG5zbV9pbml0X3JwY19oZWFkZXIoUE1BUFBST0csIFBNQVBWRVJTLAotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9tb3VudGQvY2FjaGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL21vdW50ZC9jYWNoZS5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL21vdW50ZC9jYWNoZS5jCi1AQCAtOTY4LDggKzk2OCw3IEBAIGxvb2t1cF9leHBvcnQoY2hhciAqZG9tLCBjaGFyICpwYXRoLCBzdHIKLSAJCQl9IGVsc2UgaWYgKGZvdW5kX3R5cGUgPT0gaSAmJiBmb3VuZC0+bV93YXJuZWQgPT0gMCkgewotIAkJCQl4bG9nKExfV0FSTklORywgIiVzIGV4cG9ydGVkIHRvIGJvdGggJXMgYW5kICVzLCAiCi0gCQkJCSAgICAgImFyYml0cmFyaWx5IGNob29zaW5nIG9wdGlvbnMgZnJvbSBmaXJzdCIsCi0tCQkJCSAgICAgcGF0aCwgZm91bmQtPm1fY2xpZW50LT5tX2hvc3RuYW1lLCBleHAtPm1fY2xpZW50LT5tX2hvc3RuYW1lLAotLQkJCQkgICAgIGRvbSk7Ci0rCQkJCSAgICAgcGF0aCwgZm91bmQtPm1fY2xpZW50LT5tX2hvc3RuYW1lLCBleHAtPm1fY2xpZW50LT5tX2hvc3RuYW1lKTsKLSAJCQkJZm91bmQtPm1fd2FybmVkID0gMTsKLSAJCQl9Ci0gCQl9Ci1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL21vdW50ZC9tb3VudGQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL21vdW50ZC9tb3VudGQuYwotKysrIG5mcy11dGlscy0yLjMuMy91dGlscy9tb3VudGQvbW91bnRkLmMKLUBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIHZvaWQKLSBzaWdfaHVwIChpbnQgc2lnKQotIHsKLSAJLyogZG9uJ3QgZXhpdCBvbiBTSUdIVVAgKi8KLS0JeGxvZyAoTF9OT1RJQ0UsICJSZWNlaXZlZCBTSUdIVVAuLi4gSWdub3JpbmcuXG4iLCBzaWcpOwotKwl4bG9nIChMX05PVElDRSwgIlJlY2VpdmVkIFNJR0hVUCglZCkuLi4gSWdub3JpbmcuXG4iLCBzaWcpOwotIAlyZXR1cm47Ci0gfQotIAotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9zdGF0ZC9ybXRjYWxsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9zdGF0ZC9ybXRjYWxsLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvcm10Y2FsbC5jCi1AQCAtMjQ3LDcgKzI0Nyw3IEBAIHByb2Nlc3NfcmVwbHkoRkRfU0VUX1RZUEUgKnJmZHMpCi0gCQl4bG9nX3dhcm4oIiVzOiBzZXJ2aWNlICVkIG5vdCByZWdpc3RlcmVkIG9uIGxvY2FsaG9zdCIsCi0gCQkJX19mdW5jX18sIE5MX01ZX1BST0cobHApKTsKLSAJfSBlbHNlIHsKLS0JCXhsb2coRF9HRU5FUkFMLCAiJXM6IENhbGxiYWNrIHRvICVzIChmb3IgJWQpIHN1Y2NlZWRlZCIsCi0rCQl4bG9nKERfR0VORVJBTCwgIiVzOiBDYWxsYmFjayB0byAlcyAoZm9yICVzKSBzdWNjZWVkZWQiLAotIAkJCV9fZnVuY19fLCBOTF9NWV9OQU1FKGxwKSwgTkxfTU9OX05BTUUobHApKTsKLSAJfQotIAlubGlzdF9mcmVlKCZub3RpZnksIGxwKTsKLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvc3ZjX3J1bi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvdXRpbHMvc3RhdGQvc3ZjX3J1bi5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3N2Y19ydW4uYwotQEAgLTUzLDYgKzUzLDcgQEAKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlICJzdGF0ZC5oIgotICNpbmNsdWRlICJub3RsaXN0LmgiCi0gCi1AQCAtMTA0LDggKzEwNSw4IEBAIG15X3N2Y19ydW4oaW50IHNvY2tmZCkKLSAKLSAJCQl0di50dl9zZWMgID0gTkxfV0hFTihub3RpZnkpIC0gbm93OwotIAkJCXR2LnR2X3VzZWMgPSAwOwotLQkJCXhsb2coRF9HRU5FUkFMLCAiV2FpdGluZyBmb3IgcmVwbHkuLi4gKHRpbWVvICVkKSIsCi0tCQkJCQkJCXR2LnR2X3NlYyk7Ci0rCQkJeGxvZyhEX0dFTkVSQUwsICJXYWl0aW5nIGZvciByZXBseS4uLiAodGltZW8gJWpkKSIsCi0rCQkJCQkJCShpbnRtYXhfdCl0di50dl9zZWMpOwotIAkJCXNlbHJldCA9IHNlbGVjdChGRF9TRVRTSVpFLCAmcmVhZGZkcywKLSAJCQkJKHZvaWQgKikgMCwgKHZvaWQgKikgMCwgJnR2KTsKLSAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy13YXJuaW5ncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDAwZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitEZXRlY3Qgd2FybmluZyBvcHRpb25zIGR1cmluZyBjb25maWd1cmUKKworQ2VydGFpbiBvcHRpb25zIG1heWJlIGNvbXBpbGVyIHNwZWNpZmljIHRoZXJlZm9yZSBpdHMgYmV0dGVyCit0byBkZXRlY3QgdGhlbSBiZWZvcmUgdXNlLgorCituZnNfZXJyb3IgY29waWVzIHRoZSBmb3JtYXQgc3RyaW5nIGFuZCBhcHBlbmRzIG5ld2xpbmUgdG8gaXQKK2J1dCBjb21waWxlciBjYW4gZm9yZ2V0IHRoYXQgaXQgd2FzIGZvcm1hdCBzdHJpbmcgc2luY2UgaXRzIG5vdAorc2FtZSBmbXQgc3RyaW5nIHRoYXQgd2FzIHBhc3NlZC4gSWdub3JlIHRoZSB3YXJuaW5nCisKK1dkaXNjYXJkZWQtcXVhbGlmaWVycyBpcyBnY2Mgc3BlY2lmaWMgYW5kIHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTk5LDcgKzU5OSw2IEBAIG15X2FtX2NmbGFncz0iXAorICAtV2Vycm9yPXBhcmVudGhlc2VzIFwKKyAgLVdlcnJvcj1hZ2dyZWdhdGUtcmV0dXJuIFwKKyAgLVdlcnJvcj11bnVzZWQtcmVzdWx0IFwKKy0gLVduby1jYXN0LWZ1bmN0aW9uLXR5cGUgXAorICAtZm5vLXN0cmljdC1hbGlhc2luZyBcCisgIgorIAorQEAgLTYxOSw5ICs2MTgsMTAgQEAgQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWZvcm1hdC1vdmVyZmxvdworIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1pbnQtY29udmVyc2lvbl0sIFtmbGcyXSkKKyBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXNdLCBbZmxnM10pCisgQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPW1pc2xlYWRpbmctaW5kZW50YXRpb25dLCBbZmxnNF0pCisrQ0hFQ0tfQ0NTVVBQT1JUKFstV25vLWNhc3QtZnVuY3Rpb24tdHlwZV0sIFtmbGc1XSkKKyBBWF9HQ0NfRlVOQ19BVFRSSUJVVEUoW2Zvcm1hdF0pCisgCistQUNfU1VCU1QoW0FNX0NGTEFHU10sIFsiJG15X2FtX2NmbGFncyAkZmxnMSAkZmxnMiAkZmxnMyAkZmxnNCJdKQorK0FDX1NVQlNUKFtBTV9DRkxBR1NdLCBbIiRteV9hbV9jZmxhZ3MgJGZsZzEgJGZsZzIgJGZsZzMgJGZsZzQgJGZsZzUiXSkKKyAKKyAjIE1ha2Ugc3VyZSB0aGF0ICRBQ0xPQ0FMX0ZMQUdTIGFyZSB1c2VkIGR1cmluZyBhIHJlYnVpbGQKKyBBQ19TVUJTVChbQUNMT0NBTF9BTUZMQUdTXSwgWyItSSAkYWNfbWFjcm9fZGlyIFwkKEFDTE9DQUxfRkxBR1MpIl0pCistLS0gYS9zdXBwb3J0L25mcy94Y29tbW9uLmMKKysrKyBiL3N1cHBvcnQvbmZzL3hjb21tb24uYworQEAgLTk4LDcgKzk4LDEwIEBAIG5mc19lcnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4pIHsKKyAKKyAgICAgIGZtdDIgPSB4c3RyY29uY2F0MiAoZm10LCAiXG4iKTsKKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtbm9ubGl0ZXJhbCIKKyAgICAgIHZmcHJpbnRmIChzdGRlcnIsIGZtdDIsIGFyZ3MpOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgICAgICB2YV9lbmQgKGFyZ3MpOworICAgICAgZnJlZSAoZm10Mik7CisgfQorLS0tIGEvdXRpbHMvbW91bnQvc3Ryb3B0cy5jCisrKysgYi91dGlscy9tb3VudC9zdHJvcHRzLmMKK0BAIC0xMDk0LDkgKzEwOTQsNyBAQCBzdGF0aWMgaW50IG5mc21vdW50X2ZnKHN0cnVjdCBuZnNtb3VudF9pCisgCQlpZiAobmZzX3RyeV9tb3VudChtaSkpCisgCQkJcmV0dXJuIEVYX1NVQ0NFU1M7CisgCistI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rpc2NhcmRlZC1xdWFsaWZpZXJzIgorIAkJaWYgKGVycm5vID09IEVCVVNZICYmIGlzX21vdW50cG9pbnQobWktPm5vZGUpKSB7CistI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyB3YXJuaW5nICItV2Rpc2NhcmRlZC1xdWFsaWZpZXJzIgorIAkJCS8qCisgCQkJICogRUJVU1kgY2FuIGhhcHBlbiB3aGVuIG1vdW50aW5nIGEgZmlsZXN5c3RlbSB0aGF0CisgCQkJICogaXMgYWxyZWFkeSBtb3VudGVkIG9yIHdoZW4gdGhlIGNvbnRleHQ9IGFyZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjFmNWVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gY2FhMTkyMzExOTZkNzM1NDE0NDU3MjhlNjgxM2M4ZmE3MDM0NWFjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNiBKdW4gMjAxOCAxNTo1OTowMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBuZnMtdXRpbHM6IDIuMS4xIC0+IDIuMy4xCi0KLUZpeGVkOgotY29uZmlndXJlOiBlcnJvcjogcmVzX3F1ZXJ5ZG9tYWluIG5lZWRlZAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vZ2l0aHViLmNvbS9hbHBpbmVsaW51eC9hcG9ydHMvYmxvYi9tYXN0ZXIvbWFpbi9uZnMtdXRpbHMvbXVzbC1jb25maWd1cmVfYWMucGF0Y2hdCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBjb25maWd1cmUuYWMgfCA5ICsrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDUwMDAyYjQuLmRjYWRiMjMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU4MiwxMCArNTgyLDEwIEBAIG15X2FtX2NmbGFncz0iXAotICAtV2FsbCBcCi0gIC1XZXh0cmEgXAotICAkcnBjZ2VuX2NmbGFncyBcCi0tIC1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzIFwKLS0gLVdlcnJvcj1taXNzaW5nLWRlY2xhcmF0aW9ucyBcCi0rIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKLSsgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBcCi0gIC1XZXJyb3I9Zm9ybWF0PTIgXAotLSAtV2Vycm9yPXVuZGVmIFwKLSsgLVd1bmRlZiBcCi0gIC1XZXJyb3I9bWlzc2luZy1pbmNsdWRlLWRpcnMgXAotICAtV2Vycm9yPXN0cmljdC1hbGlhc2luZz0yIFwKLSAgLVdlcnJvcj1pbml0LXNlbGYgXAotQEAgLTYxNCwxMCArNjE0LDkgQEAgQUNfREVGVU4oW0NIRUNLX0NDU1VQUE9SVF0sIFsKLSAKLSBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9Zm9ybWF0LW92ZXJmbG93PTJdLCBbZmxnMV0pCi0gQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWludC1jb252ZXJzaW9uXSwgW2ZsZzJdKQotLUNIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlc10sIFtmbGczXSkKLSBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9bWlzbGVhZGluZy1pbmRlbnRhdGlvbl0sIFtmbGc0XSkKLSAKLS1BQ19TVUJTVChbQU1fQ0ZMQUdTXSwgWyIkbXlfYW1fY2ZsYWdzICRmbGcxICRmbGcyICRmbGczICRmbGc0Il0pCi0rQUNfU1VCU1QoW0FNX0NGTEFHU10sIFsiJG15X2FtX2NmbGFncyAkZmxnMSAkZmxnMiAkZmxnNCJdKQotIAotICMgTWFrZSBzdXJlIHRoYXQgJEFDTE9DQUxfRkxBR1MgYXJlIHVzZWQgZHVyaW5nIGEgcmVidWlsZAotIEFDX1NVQlNUKFtBQ0xPQ0FMX0FNRkxBR1NdLCBbIi1JICRhY19tYWNyb19kaXIgXCQoQUNMT0NBTF9GTEFHUykiXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMzJiY2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJ1c2Vyc3BhY2UgdXRpbGl0aWVzIGZvciBrZXJuZWwgbmZzIgotREVTQ1JJUFRJT04gPSAiVGhlIG5mcy11dGlscyBwYWNrYWdlIHByb3ZpZGVzIGEgZGFlbW9uIGZvciB0aGUga2VybmVsIFwKLU5GUyBzZXJ2ZXIgYW5kIHJlbGF0ZWQgdG9vbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIrICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTVmM2E5M2E1YzNjNzg4OGRlNjIzYjQ2ZWEwODVhODQiCi0KLSMgdXRpbC1saW51eCBmb3IgbGliYmxraWQKLURFUEVORFMgPSAibGliY2FwIGxpYmV2ZW50IHV0aWwtbGludXggc3FsaXRlMyBsaWJ0aXJwYyIKLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmZzZCIKLQotaW5oZXJpdCB1c2VyYWRkCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tY2xpZW50IgotVVNFUkFERF9QQVJBTV8ke1BOfS1jbGllbnQgPSAiLS1zeXN0ZW0gIC0taG9tZS1kaXIgL3Zhci9saWIvbmZzIFwKLQkJCSAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgcnBjdXNlciIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25mcy11dGlscy8ke1BWfS9uZnMtdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL25mc3NlcnZlciBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnNjb21tb24gXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXNlcnZlci5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1tb3VudGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtc3RhdGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9wcm9jLWZzLW5mc2QubW91bnQgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhY2hlaW8tdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtSU8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdG9vbHMtd2l0aC1DQ19GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaW5jbHVkZS1vcmRlci1iZXR3ZWVuLWNvbmZpZy5oLWFuZC1zdGF0LmgucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1nbGliYyA9ICIgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTYxZWZlNDY5ZWMxYjA2ZjFjNzUwYmQ4N2Y4YmE2ZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODUyNzRhZGE5NDQ3OWIxYmViYTlmOGVlZmZkMTlmNDc3YzUzYTY3MTBiOTk5OGQxMTkyYzgwNzg1NDA4NzczNiIKLQotIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAotIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCi1JTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgotCi0jIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAotICAgICAgICAgICAgICAgIgotCi1DRkxBR1MgKz0gIi1Xbm8tZXJyb3I9Zm9ybWF0LW92ZXJmbG93IgotCi1QQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0jIGxpYmRldm1hcHBlciBpcyBhdmFpbGFibGUgaW4gbWV0YS1vZQotUEFDS0FHRUNPTkZJR1tuZnN2NDFdID0gIi0tZW5hYmxlLW5mc3Y0MSwtLWRpc2FibGUtbmZzdjQxLGxpYmRldm1hcHBlciIKLSMga2V5dXRpbHMgaXMgYXZhaWxhYmxlIGluIG1ldGEtc2VjdXJpdHkKLVBBQ0tBR0VDT05GSUdbbmZzdjRdID0gIi0tZW5hYmxlLW5mc3Y0LC0tZGlzYWJsZS1uZnN2NCxrZXl1dGlscyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNsaWVudCAke1BOfS1tb3VudCAke1BOfS1zdGF0cyIKLQotQ09ORkZJTEVTXyR7UE59LWNsaWVudCArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL2V0YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3JtdGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy94dGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZSBcCi0JCQkgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYiCi0KLUZJTEVTXyR7UE59LWNsaWVudCA9ICIke3NiaW5kaXJ9LypzdGF0ZCBcCi0JCSAgICAgICR7c2JpbmRpcn0vcnBjLmlkbWFwZCAke3NiaW5kaXJ9L3NtLW5vdGlmeSBcCi0JCSAgICAgICR7c2JpbmRpcn0vc2hvd21vdW50ICR7c2JpbmRpcn0vbmZzc3RhdCBcCi0JCSAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcyBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vbmZzLXV0aWxzLmNvbmYgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24gXAotCQkgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25mcy1zdGF0ZC5zZXJ2aWNlIgotUkRFUEVORFNfJHtQTn0tY2xpZW50ID0gIiR7UE59LW1vdW50IHJwY2JpbmQiCi0KLUZJTEVTXyR7UE59LW1vdW50ID0gIiR7YmFzZV9zYmluZGlyfS8qbW91bnQubmZzKiIKLQotRklMRVNfJHtQTn0tc3RhdHMgPSAiJHtzYmluZGlyfS9tb3VudHN0YXRzICR7c2JpbmRpcn0vbmZzaW9zdGF0IgotUkRFUEVORFNfJHtQTn0tc3RhdHMgPSAicHl0aG9uMy1jb3JlIgotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgICR7U30vdXRpbHMvbW91bnQvTWFrZWZpbGUuYW0KLX0KLQotIyBNYWtlIGNsZWFuIG5lZWRlZCBiZWNhdXNlIHRoZSBwYWNrYWdlIGNvbWVzIHdpdGgKLSMgcHJlY29tcGlsZWQgNjQtYml0IG9iamVjdHMgdGhhdCBicmVhayB0aGUgYnVpbGQKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQltYWtlIGNsZWFuCi19Ci0KLSMgV29ya3Mgb24gc3lzdGVtZCBvbmx5Ci1ISUdIX1JMSU1JVF9OT0ZJTEUgPz89ICI0MDk2IgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCi0KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJLWUgJ3MsQEhJR0hfUkxJTUlUX05PRklMRUAsJHtISUdIX1JMSU1JVF9OT0ZJTEV9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCi0JICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50Ci0JZmkKLQotCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAotCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5Ci0KLQkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKLQljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAotCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQotCi0gICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAotCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZGI2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMy5iYgpAQCAtMCwwICsxLDE0NyBAQAorU1VNTUFSWSA9ICJ1c2Vyc3BhY2UgdXRpbGl0aWVzIGZvciBrZXJuZWwgbmZzIgorREVTQ1JJUFRJT04gPSAiVGhlIG5mcy11dGlscyBwYWNrYWdlIHByb3ZpZGVzIGEgZGFlbW9uIGZvciB0aGUga2VybmVsIFwKK05GUyBzZXJ2ZXIgYW5kIHJlbGF0ZWQgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIrICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTVmM2E5M2E1YzNjNzg4OGRlNjIzYjQ2ZWEwODVhODQiCisKKyMgdXRpbC1saW51eCBmb3IgbGliYmxraWQKK0RFUEVORFMgPSAibGliY2FwIGxpYmV2ZW50IHV0aWwtbGludXggc3FsaXRlMyBsaWJ0aXJwYyIKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmZzZCIKKworaW5oZXJpdCB1c2VyYWRkCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tY2xpZW50IgorVVNFUkFERF9QQVJBTV8ke1BOfS1jbGllbnQgPSAiLS1zeXN0ZW0gIC0taG9tZS1kaXIgL3Zhci9saWIvbmZzIFwKKwkJCSAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgcnBjdXNlciIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25mcy11dGlscy8ke1BWfS9uZnMtdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25mc3NlcnZlciBcCisgICAgICAgICAgIGZpbGU6Ly9uZnNjb21tb24gXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXNlcnZlci5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1tb3VudGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtc3RhdGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9wcm9jLWZzLW5mc2QubW91bnQgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhY2hlaW8tdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtSU8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGFuZy13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNjAyMGM3NmY1MzFlZDk3ZjMxNDU1MTQ5MDFlMGU3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjY1ZmNlNWRkODM3MGNmZjllYWQ2N2JhYWM1YTZjZDY5YzM3NmRjYWRmZWYyNjRkYzJjNzhjOTA0ZjI2NTk5IgorCisjIE9ubHkga2VybmVsLW1vZHVsZS1uZnNkIGlzIHJlcXVpcmVkIGhlcmUgKGJ1dCBjYW4gYmUgYnVpbHQtaW4pICAtIHRoZSBuZnNkIG1vZHVsZSB3aWxsCisjIHB1bGwgaW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgZGVwZW5kZW5jaWVzLgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKK0lOSVRTQ1JJUFRfTkFNRSA9ICJuZnNzZXJ2ZXIiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1jbGllbnQgPSAibmZzY29tbW9uIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tY2xpZW50ID0gImRlZmF1bHRzIDE5IDIxIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmZzLXNlcnZlci5zZXJ2aWNlIG5mcy1tb3VudGQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1jbGllbnQgPSAibmZzLXN0YXRkLnNlcnZpY2UiCisKKyMgLS1lbmFibGUtdXVpZCBpcyBuZWVkIGZvciBjcm9zcy1jb21waWxpbmcKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc3RhdGR1c2VyPXJwY3VzZXIgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vdW50Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJtb3VudC1tb3VudCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdXVpZCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5mc2RjbHRyYWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3RhdGRwYXRoPS92YXIvbGliL25mcy9zdGF0ZCBcCisgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsdGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKyMgbGliZGV2bWFwcGVyIGlzIGF2YWlsYWJsZSBpbiBtZXRhLW9lCitQQUNLQUdFQ09ORklHW25mc3Y0MV0gPSAiLS1lbmFibGUtbmZzdjQxLC0tZGlzYWJsZS1uZnN2NDEsbGliZGV2bWFwcGVyLGxpYmRldm1hcHBlciIKKyMga2V5dXRpbHMgaXMgYXZhaWxhYmxlIGluIG1ldGEtb2UKK1BBQ0tBR0VDT05GSUdbbmZzdjRdID0gIi0tZW5hYmxlLW5mc3Y0LC0tZGlzYWJsZS1uZnN2NCxrZXl1dGlscyxweXRob24zLWNvcmUiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCisKK0NPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKKwkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAorCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgorCitGSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAorCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAorCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAorCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAorCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKKwkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgorCitGSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCisKK0ZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKK1JERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGlibmZzaWRtYXAvKi5hIgorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bGliZGlyfS9saWJuZnNpZG1hcC8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQorfQorCisjIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aAorIyBwcmVjb21waWxlZCA2NC1iaXQgb2JqZWN0cyB0aGF0IGJyZWFrIHRoZSBidWlsZAorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCW1ha2UgY2xlYW4KK30KKworIyBXb3JrcyBvbiBzeXN0ZW1kIG9ubHkKK0hJR0hfUkxJTUlUX05PRklMRSA/Pz0gIjQwOTYiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc3NlcnZlciAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzc2VydmVyCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzY29tbW9uICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24KKworCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mcy11dGlscy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7U30vdXRpbHMvbW91bnQvbmZzbW91bnQuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zZXJ2ZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtbW91bnRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXN0YXRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQktZSAncyxASElHSF9STElNSVRfTk9GSUxFQCwke0hJR0hfUkxJTUlUX05PRklMRX0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwkgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy8KKwkgICAgbG4gLXNmIC4uL3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9wcm9jLWZzLW5mc2QubW91bnQKKwlmaQorCisJIyBrZXJuZWwgY29kZSBhcyBvZiAzLjggaGFyZC1jb2RlcyB0aGlzIHBhdGggYXMgYSBkZWZhdWx0CisJaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvbmZzL3Y0cmVjb3ZlcnkKKworCSMgY2hvd24gdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcworCWNob3duIC1SIHJwY3VzZXI6cnBjdXNlciAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkCisJY2htb2QgMDY0NCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlCisKKyAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0CisKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS11cHN0cmVhbS1maXgtaW50ZWdlci1vdmVyZmxvdy1pbi1YTVNTLXByaXZhdGUta2V5LXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLXVwc3RyZWFtLWZpeC1pbnRlZ2VyLW92ZXJmbG93LWluLVhNU1MtcHJpdmF0ZS1rZXktcGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjViZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLXVwc3RyZWFtLWZpeC1pbnRlZ2VyLW92ZXJmbG93LWluLVhNU1MtcHJpdmF0ZS1rZXktcGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDIwMTRmYWQzZDI4MDkwYjU5ZDJmOGEwOTcxMTY2YzA2ZTVmYTZkYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE4IE9jdCAyMDE5IDE0OjU2OjU4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVwc3RyZWFtOiBmaXggaW50ZWdlciBvdmVyZmxvdyBpbiBYTVNTIHByaXZhdGUga2V5IHBhcnNpbmcuCi0KLVJlcG9ydGVkIGJ5IEFkYW0gWmFicm9ja2kgdmlhIFNlY3VyaVRlYW0ncyBTU0ggcHJvZ3JhbS4KLQotTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBleHBlcmltZW50YWwgYW5kIG5vdCBjb21waWxlZCBieSBkZWZhdWx0LgotCi1vayBtYXJrdXNACi0KLU9wZW5CU0QtQ29tbWl0LUlEOiBjZDAzNjE4OTZkMTVlOGExYmFjNDk1YWM1ODNmZjA2NWZmY2EyYmUxCi0KLVNpZ25lZC1vZmYtYnk6ICJkam1Ab3BlbmJzZC5vcmciIDxkam1Ab3BlbmJzZC5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoL29wZW5zc2gtcG9ydGFibGUvY29tbWl0L2E1NDZiMTdiYmFlYjEyYmVhYzRjOWFlZWQ1NmY3NGE0MmIxOGE5M2FdCi1DVkU6IENWRS0yMDE5LTE2OTA1Ci0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNzaGtleS14bXNzLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NzaGtleS14bXNzLmMgYi9zc2hrZXkteG1zcy5jCi1pbmRleCBhYWFlNzAyLi5jNTc2ODFhIDEwMDY0NAotLS0tIGEvc3Noa2V5LXhtc3MuYwotKysrIGIvc3Noa2V5LXhtc3MuYwotQEAgLTk3Nyw3ICs5NzcsOCBAQCBzc2hrZXlfeG1zc19kZWNyeXB0X3N0YXRlKGNvbnN0IHN0cnVjdCBzc2hrZXkgKmssIHN0cnVjdCBzc2hidWYgKmVuY29kZWQsCi0gCQlnb3RvIG91dDsKLSAJfQotIAkvKiBjaGVjayB0aGF0IGFuIGFwcHJvcHJpYXRlIGFtb3VudCBvZiBhdXRoIGRhdGEgaXMgcHJlc2VudCAqLwotLQlpZiAoc3NoYnVmX2xlbihlbmNvZGVkKSA8IGVuY3J5cHRlZF9sZW4gKyBhdXRobGVuKSB7Ci0rCWlmIChzc2hidWZfbGVuKGVuY29kZWQpIDwgYXV0aGxlbiB8fAotKwkgICAgc3NoYnVmX2xlbihlbmNvZGVkKSAtIGF1dGhsZW4gPCBlbmNyeXB0ZWRfbGVuKSB7Ci0gCQlyID0gU1NIX0VSUl9JTlZBTElEX0ZPUk1BVDsKLSAJCWdvdG8gb3V0OwotIAl9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9ydW4tcHRlc3QKaW5kZXggZGFmNjJjYy4uYWUwM2U5MiAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9ydW4tcHRlc3QKQEAgLTEsNiArMSw3IEBACiAjIS9iaW4vc2gKIAogZXhwb3J0IFRFU1RfU0hFTEw9c2gKK2V4cG9ydCBTS0lQX1VOSVQ9MQogCiBjZCByZWdyZXNzCiBzZWQgLWkgIi9cdFx0YWdlbnQtcHRyYWNlIC9kIiBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkLnNvY2tldCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZC5zb2NrZXQKaW5kZXggMTJjMzliMi4uOGQ3NmQ2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkLnNvY2tldAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGQuc29ja2V0CkBAIC0xLDUgKzEsNiBAQAogW1VuaXRdCiBDb25mbGljdHM9c3NoZC5zZXJ2aWNlCitXYW50cz1zc2hkZ2Vua2V5cy5zZXJ2aWNlCiAKIFtTb2NrZXRdCiBFeGVjU3RhcnRQcmU9QEJBU0VfQklORElSQC9ta2RpciAtcCAvdmFyL3J1bi9zc2hkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRALnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRALnNlcnZpY2UKaW5kZXggOWQ4M2RmYi4uNDIyNDUwYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkQC5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZEAuc2VydmljZQpAQCAtMSwxMyArMSwxMSBAQAogW1VuaXRdCiBEZXNjcmlwdGlvbj1PcGVuU1NIIFBlci1Db25uZWN0aW9uIERhZW1vbgotV2FudHM9c3NoZGdlbmtleXMuc2VydmljZQogQWZ0ZXI9c3NoZGdlbmtleXMuc2VydmljZQogCiBbU2VydmljZV0KIEVudmlyb25tZW50PSJTU0hEX09QVFM9IgogRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQvc3NoCiBFeGVjU3RhcnQ9LUBTQklORElSQC9zc2hkIC1pICRTU0hEX09QVFMKLUV4ZWNSZWxvYWQ9QEJBU0VfQklORElSQC9raWxsIC1IVVAgJE1BSU5QSUQKIFN0YW5kYXJkSW5wdXQ9c29ja2V0CiBTdGFuZGFyZEVycm9yPXN5c2xvZwogS2lsbE1vZGU9cHJvY2VzcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjBwMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfOC4wcDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZmJjOWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjBwMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1TVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCi10aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCi1Tc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCi1hbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCAmIElTQyAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTQyOTY1OGM2NjEyZjNhOWIxMjkzNzgyMzY2YWIyOWQ4IgotCi1ERVBFTkRTID0gInpsaWIgb3BlbnNzbCB2aXJ0dWFsL2NyeXB0IgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL09wZW5TU0gvcG9ydGFibGUvb3BlbnNzaC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdXBzdHJlYW0tZml4LWludGVnZXItb3ZlcmZsb3ctaW4tWE1TUy1wcml2YXRlLWtleS1wYS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjA1MGYwMDJmZTUxMGUxZGFlY2QzOTA0NGUxMTIyZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDk0Mzg3OWU2OTQ5OGU4MDMxZWI2YjdmNDRkMDhjZGMzN2Q1OWE3YWI2ODlhYTBiNDM3MzIwYzM0ODFmZDY4IgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKLQotaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1FWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCBcCi0gICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9JHtiaW5kaXJ9L3hhdXRoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAotICAgICAgICAgICAgICAgICIKLQotIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgotCi0jIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0Ci0jIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKLSMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCi0KLSMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKLQotIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWV4cG9ydCBMRD0iJHtDQ30iCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCi0gICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCi0gICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQgXAotICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3MvY2hlY2stcGVybSByZWdyZXNzL21rZHRlbXAKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKLQkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KLQlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KLQotCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCi0JaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQotCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCi0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCi0JY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCi1GSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLUZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgotRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKLUZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKLUZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCi1SREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgotUlJFQ09NTUVORFNfJHtQTn0tc3NoZF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBybmctdG9vbHMiCi0jIGdkYiB3b3VsZCBtYWtlIGF0dGFjaC1wdHJhY2UgdGVzdCBwYXNzIHJhdGhlciB0aGFuIHNraXAgYnV0IG5vdCB3b3J0aCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIG1ha2Ugc2VkIHN1ZG8gY29yZXV0aWxzIgotCi1SUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKLVJQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCi0KLUNPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgotQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKLUFMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCi1BTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgotCi1CQkNMQVNTRVhURU5EICs9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzguMnAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjJwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODc5ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjJwMS5iYgpAQCAtMCwwICsxLDE3MCBAQAorU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAordGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgorREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAorU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAorYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QgJiBJU0MgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0xOGQ5ZTVhOGIzZGQxNzkwZDczNTAyZjUwNDI2ZDRkMyIKKworREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgdmlydHVhbC9jcnlwdCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NoZWNrX2tleXMgXAorICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMDc2ZTY0MTNlOGRiZTU2ZDMzODQ4YzEwNTRhYzA5MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzkyNTE1MWU2Y2Y2Y2VlMTQ1MDE5MGMwZTlhZjRkYzM2YjQxYzEyNzM3NjE5ZWRmZjhiY2ViZGZmNjRlNjcxIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKKworaW5oZXJpdCBtYW5wYWdlcyB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitVU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1trZXJiZXJvc10gPSAiLS13aXRoLWtlcmJlcm9zNSwtLXdpdGhvdXQta2VyYmVyb3M1LGtyYjUiCitQQUNLQUdFQ09ORklHW2xkbnNdID0gIi0td2l0aC1sZG5zLC0td2l0aG91dC1sZG5zLGxkbnMiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1saWJlZGl0LC0td2l0aG91dC1saWJlZGl0LGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLXdpdGgtbWFudHlwZT1tYW4sLS13aXRoLW1hbnR5cGU9Y2F0IgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitFWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCBcCisgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9JHtiaW5kaXJ9L3hhdXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAorICAgICAgICAgICAgICAgICIKKworIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgorCisjIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0CisjIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKKyMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCisKKyMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKKworIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWV4cG9ydCBMRD0iJHtDQ30iCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCisgICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCisgICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQgXAorICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3MvY2hlY2stcGVybSByZWdyZXNzL21rZHRlbXAKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKKwkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KKwlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KKworCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCisJaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCisJY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCitGSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKK0ZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgorRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKK0ZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKK0ZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCitSREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgorUlJFQ09NTUVORFNfJHtQTn0tc3NoZF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBybmctdG9vbHMiCisjIGdkYiB3b3VsZCBtYWtlIGF0dGFjaC1wdHJhY2UgdGVzdCBwYXNzIHJhdGhlciB0aGFuIHNraXAgYnV0IG5vdCB3b3J0aCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIG1ha2Ugc2VkIHN1ZG8gY29yZXV0aWxzIgorCitSUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKK1JQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCisKK0NPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgorQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKK0FMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCitBTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3JlcHJvZHVjaWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcmVwcm9kdWNpYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNDI2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3JlcHJvZHVjaWJsZS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitUaGUgdmFsdWUgZm9yIHBlcmxfYXJjaG5hbWUgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBob3N0LCBlLmcuIAoreDg2XzY0LWxpbnV4LWdudS10aHJlYWQtbXVsdGkgb3IgeDg2XzY0LWxpbnV4LXRocmVhZC1tdWx0aSB3aGljaAorbWFrZXMgdGhlIHB0ZXN0IHBhY2thZ2Ugbm9uLXJlcHJvZHVjaWJsZS4gSXRzIHVudXNlZCBvdGhlciB0aGFuIAordGhlc2UgcmVmZXJlbmNlcyBzbyBkcm9wIGl0LgorCitSUCAyMDIwLzIvNgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogb3BlbnNzbC0xLjEuMWQvQ29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjEuMWQub3JpZy9Db25maWd1cmUKKysrKyBvcGVuc3NsLTEuMS4xZC9Db25maWd1cmUKK0BAIC0yODYsNyArMjg2LDcgQEAgaWYgKGRlZmluZWQgZW52KCRsb2NhbF9jb25maWdfZW52bmFtZSkpCisgIyBTYXZlIGF3YXkgcGVybCBjb21tYW5kIGluZm9ybWF0aW9uCisgJGNvbmZpZ3twZXJsX2NtZH0gPSAkXlg7CisgJGNvbmZpZ3twZXJsX3ZlcnNpb259ID0gJENvbmZpZ3t2ZXJzaW9ufTsKKy0kY29uZmlne3BlcmxfYXJjaG5hbWV9ID0gJENvbmZpZ3thcmNobmFtZX07CisrIyRjb25maWd7cGVybF9hcmNobmFtZX0gPSAkQ29uZmlne2FyY2huYW1lfTsKKyAKKyAkY29uZmlne3ByZWZpeH09IiI7CisgJGNvbmZpZ3tvcGVuc3NsZGlyfT0iIjsKK0BAIC0yNTE3LDcgKzI1MTcsNyBAQCBfX19fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgQHskY29uZmlne3Blcmxhcmd2fX0pLCAiXG4iOworICAgICAgICAgcHJpbnQgIlxuUGVybCBpbmZvcm1hdGlvbjpcblxuIjsKKyAgICAgICAgIHByaW50ICcgICAgJywkY29uZmlne3BlcmxfY21kfSwiXG4iOworLSAgICAgICAgcHJpbnQgJyAgICAnLCRjb25maWd7cGVybF92ZXJzaW9ufSwnIGZvciAnLCRjb25maWd7cGVybF9hcmNobmFtZX0sIlxuIjsKKysgICAgICAgIHByaW50ICcgICAgJywkY29uZmlne3BlcmxfdmVyc2lvbn0sIlxuIjsKKyAgICAgfQorICAgICBpZiAoJGR1bXAgfHwgJG9wdGlvbnMpIHsKKyAgICAgICAgIG15ICRsb25nZXN0ID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjFkLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MTllMTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLSMgIm9wZW5zc2wiIGhlcmUgYWN0dWFsbHkgbWVhbnMgYm90aCBPcGVuU1NMIGFuZCBTU0xlYXkgbGljZW5zZXMgYXBwbHkKLSMgKHNlZSBtZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9PcGVuU1NMIHRvIHdoaWNoICJvcGVuc3NsIiBpcyBTUERYTElDRU5TRU1BUHBlZCkKLUxJQ0VOU0UgPSAib3BlbnNzbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQzNDNlNjJmYzljODMzNzEwYmJiZWQyNWYyNzM2NGM4IgotCi1ERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNraXAtdGVzdF9zeW1ib2xfcHJlc2VuY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZGluZm8tc3RyaXAtc3lzcm9vdC1hbmQtZGVidWctcHJlZml4LW1hcC1mcm9tLWNvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FmYWxnLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNiZTIwOTAwMGRiYzdlMWI5NWJjZGY0Nzk4MGEzYmFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlM2E5MWJjMWY5ZGZjZTAxYWYyNjAyNmY4NTZlMDY0ZWFiNGM4ZWUwYThmNDU3YjVhZTMwYjQwYjhiNzExZjIiCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdCBwdGVzdAotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1iaW46JHtiaW5kaXJ9L2NfcmVoYXNoIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbY3J5cHRvZGV2LWxpbnV4XSA9ICJlbmFibGUtZGV2Y3J5cHRvZW5nLGRpc2FibGUtZGV2Y3J5cHRvZW5nLGNyeXB0b2Rldi1saW51eCIKLQotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKLQotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiBuby1hc3luYyIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsX3Bvd2VycGM2NCA9ICIgbm8tYXNtIgotCi0jIGFkZGluZyBkZXZyYW5kb20gcHJldmVudHMgb3BlbnNzbCBmcm9tIHVzaW5nIGdldHJhbmRvbSgpIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24gb2xkZXIgZ2xpYmMgdmVyc2lvbnMKLSMgKG5hdGl2ZSB2ZXJzaW9ucyBjYW4gYmUgYnVpbHQgd2l0aCBuZXdlciBnbGliYywgYnV0IHRoZW4gcmVsb2NhdGVkIG9udG8gYSBzeXN0ZW0gd2l0aCBvbGRlciBnbGliYykKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRoLXJhbmQtc2VlZD1vcyxkZXZyYW5kb20iCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aC1yYW5kLXNlZWQ9b3MsZGV2cmFuZG9tIgotCi0jIFJlbHlpbmcgb24gaGFyZGNvZGVkIGJ1aWx0LWluIHBhdGhzIGNhdXNlcyBvcGVuc3NsLW5hdGl2ZSB0byBub3QgYmUgcmVsb2NhdGVhYmxlIGZyb20gc3N0YXRlLgotQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1ET1BFTlNTTERJUj0vbm90L2J1aWx0aW4gLURFTkdJTkVTRElSPS9ub3QvYnVpbHRpbiIKLUNGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRE9QRU5TU0xESVI9L25vdC9idWlsdGluIC1ERU5HSU5FU0RJUj0vbm90L2J1aWx0aW4iCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0Jb3M9JHtIT1NUX09TfQotCWNhc2UgJG9zIGluCi0JbGludXgtZ251ZWFiaSB8XAotCWxpbnV4LWdudXNwZSB8XAotCWxpbnV4LW11c2xlYWJpIHxcCi0JbGludXgtbXVzbHNwZSB8XAotCWxpbnV4LW11c2wgKQotCQlvcz1saW51eAotCQk7OwotCSopCi0JCTs7Ci0JZXNhYwotCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKLQljYXNlICR0YXJnZXQgaW4KLQlsaW51eC1hcm0qKQotCQl0YXJnZXQ9bGludXgtYXJtdjQKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1pPzg2IHwgbGludXgtdmlhYzMpCi0JCXRhcmdldD1saW51eC14ODYKLQkJOzsKLQlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQotCQl0YXJnZXQ9bGludXgteDMyCi0JCTs7Ci0JbGludXgtZ251NjQteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDg2XzY0Ci0JCTs7Ci0JbGludXgtbWlwcyB8IGxpbnV4LW1pcHNlbCkKLQkJIyBzcGVjaWZ5aW5nIFRBUkdFVF9DQ19BUkNIIHByZXZlbnRzIG9wZW5zc2wgZnJvbSAoaW5jb3JyZWN0bHkpIGFkZGluZyB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZsYWdzCi0JCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgotCQk7OwotCWxpbnV4LWdudW4zMi1taXBzKikKLQkJdGFyZ2V0PWxpbnV4LW1pcHM2NAotCQk7OwotCWxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0IHwgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQotCQl0YXJnZXQ9bGludXg2NC1taXBzNjQKLQkJOzsKLQlsaW51eC1taWNyb2JsYXplKiB8IGxpbnV4LW5pb3MyKiB8IGxpbnV4LXNoMyB8IGxpbnV4LXNoNCB8IGxpbnV4LWFyYyopCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1wb3dlcnBjKQotCQl0YXJnZXQ9bGludXgtcHBjCi0JCTs7Ci0JbGludXgtcG93ZXJwYzY0KQotCQl0YXJnZXQ9bGludXgtcHBjNjQKLQkJOzsKLQlsaW51eC1yaXNjdjMyKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcmlzY3Y2NCkKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAotCQk7OwotCWxpbnV4LXNwYXJjIHwgbGludXgtc3VwZXJzcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKLQkJOzsKLQllc2FjCi0KLQl1c2VwcmVmaXg9JHtwcmVmaXh9Ci0JaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KLQkJdXNlcHJlZml4PS8KLQlmaQotCSMgV0FSTklORzogZG8gbm90IHNldCBjb21waWxlci9saW5rZXIgZmxhZ3MgKC1JLy1EIGV0Yy4pIGluIEVYVFJBX09FQ09ORiwgYXMgdGhleSB3aWxsIGZ1bGx5IHJlcGxhY2UgdGhlCi0JIyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IGJ5IGJpdGJha2UuIEFkanVzdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluc3RlYWQuCi0JUEVSTDVMSUI9IiR7U30vZXh0ZXJuYWwvcGVybC9UZXh0LVRlbXBsYXRlLTEuNDYvbGliLyIgXAotCXBlcmwgJHtTfS9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JHtsaWJkaXJ9ICR0YXJnZXQKLQlwZXJsICR7Qn0vY29uZmlnZGF0YS5wbSAtLWR1bXAKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgTUFOU1VGRklYPXNzbCBpbnN0YWxsCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0KLQkjIENyZWF0ZSBTU0wgc3RydWN0dXJlIGZvciBwYWNrYWdlcyBzdWNoIGFzIGNhLWNlcnRpZmljYXRlcyB3aGljaAotCSMgY29udGFpbiBoYXJkLWNvZGVkIHBhdGhzIHRvIC9ldGMvc3NsLiBEZWJpYW4gZG9lcyB0aGUgc2FtZS4KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbAotCW12ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cyBcCi0JICAgJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUgXAotCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZiBcCi0JICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsLwotCi0JIyBBbHRob3VnaCBhYnNvbHV0ZSBzeW1saW5rcyB3b3VsZCBiZSBPSyBmb3IgdGhlIHRhcmdldCwgdGhleSBiZWNvbWUKLQkjIGludmFsaWQgaWYgbmF0aXZlIG9yIG5hdGl2ZXNkayBhcmUgcmVsb2NhdGVkIGZyb20gc3N0YXRlLgotCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cycpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMKLQlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZScpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvcHJpdmF0ZQotCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZicpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29wZW5zc2wgXAotCSAgICBPUEVOU1NMX0NPTkY9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAotCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAotCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wtMS4xL2NlcnQucGVtIFwKLQkgICAgT1BFTlNTTF9FTkdJTkVTPSR7bGliZGlyfS9lbmdpbmVzLTEuMQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCW1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKLQlzZWQgJ3N8L3Vzci9saWIvc3NsL3wvdXNyL2xpYi9zc2wtMS4xL3xnJyAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKLX0KLQotUFRFU1RfQlVJTERfSE9TVF9GSUxFUyArPSAiY29uZmlnZGF0YS5wbSIKLVBURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJwZXJsX3ZlcnNpb24gPSIKLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCSMgUHJ1bmUgdGhlIGJ1aWxkIHRyZWUKLQlybSAtZiAke0J9L2Z1enovKi4qICR7Qn0vdGVzdC8qLioKLQotCWNwICR7U30vQ29uZmlndXJlICR7Qn0vY29uZmlnZGF0YS5wbSAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7U30vZXh0ZXJuYWwgJHtCfS90ZXN0ICR7U30vdGVzdCAke0J9L2Z1enogJHtTfS91dGlsICR7Qn0vdXRpbCAke0R9JHtQVEVTVF9QQVRIfQotCi0JIyBGb3IgdGVzdF9zaGxpYmxvYWQKLQlsbiAtcyAke2xpYmRpcn0vbGliY3J5cHRvLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KLQlsbiAtcyAke2xpYmRpcn0vbGlic3NsLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KLQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zICR7YmluZGlyfS9vcGVuc3NsICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlpbnN0YWxsIC1tNjQ0ICR7U30vYXBwcy8qLnBlbSAke1N9L2FwcHMvKi5zcmwgJHtTfS9hcHBzL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlpbnN0YWxsIC1tNzU1ICR7Qn0vYXBwcy9DQS5wbCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0KLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2VuZ2luZXMKLQlpbnN0YWxsIC1tNzU1ICR7Qn0vZW5naW5lcy9vc3NsdGVzdC5zbyAke0R9JHtQVEVTVF9QQVRIfS9lbmdpbmVzCi19Ci0KLSMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gTWFrZSB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiBUaGlzIHdpbGwgZW5hYmxlIHRoZSBjb25maWd1cmF0aW9uCi0jIGZpbGUgdG8gYmUgaW5zdGFsbGVkIGZvciBib3RoIHRoZSBvcGVuc3NsLWJpbiBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2Ugc2luY2UgdGhlIG9wZW5zc2wtYmluIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCi0KLVBBQ0tBR0VTID0rICJsaWJjcnlwdG8gbGlic3NsIG9wZW5zc2wtY29uZiAke1BOfS1lbmdpbmVzICR7UE59LW1pc2MiCi0KLUZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgotRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCi1GSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCi1GSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9lbmdpbmVzLTEuMSIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC0xLjEvbWlzYyIKLUZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vc3NsLTEuMS8qIgotRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2giCi0KLUNPTkZGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCi0KLVJSRUNPTU1FTkRTX2xpYmNyeXB0byArPSAib3BlbnNzbC1jb25mIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm9wZW5zc2wtYmluIHBlcmwgcGVybC1tb2R1bGVzIGJhc2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ1ZFX1BST0RVQ1QgPSAib3BlbnNzbDpvcGVuc3NsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xZi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmEyYjQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWYuYmIKQEAgLTAsMCArMSwyMTEgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIiBoZXJlIGFjdHVhbGx5IG1lYW5zIGJvdGggT3BlblNTTCBhbmQgU1NMZWF5IGxpY2Vuc2VzIGFwcGx5CisjIChzZWUgbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvT3BlblNTTCB0byB3aGljaCAib3BlbnNzbCIgaXMgU1BEWExJQ0VOU0VNQVBwZWQpCitMSUNFTlNFID0gIm9wZW5zc2wiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMzQzZTYyZmM5YzgzMzcxMGJiYmVkMjVmMjczNjRjOCIKKworREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1za2lwLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRpbmZvLXN0cmlwLXN5c3Jvb3QtYW5kLWRlYnVnLXByZWZpeC1tYXAtZnJvbS1jby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hZmFsZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAorICAgICAgICAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTg2YzZiZmU2ZWNmYmE3YTViNDhjNDdmOGExNjczZDBmM2IwZTViYTJlMjU2MDJkZDIzYjYyOTk3NWRhM2YzNSIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgbXVsdGlsaWJfc2NyaXB0IHB0ZXN0CitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWJpbjoke2JpbmRpcn0vY19yZWhhc2giCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tjcnlwdG9kZXYtbGludXhdID0gImVuYWJsZS1kZXZjcnlwdG9lbmcsZGlzYWJsZS1kZXZjcnlwdG9lbmcsY3J5cHRvZGV2LWxpbnV4LCxjcnlwdG9kZXYtbW9kdWxlIgorCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzZXRjb250ZXh0JworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1ha2Vjb250ZXh0JworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIG5vLWFzeW5jIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2xfcG93ZXJwYzY0ID0gIiBuby1hc20iCisKKyMgYWRkaW5nIGRldnJhbmRvbSBwcmV2ZW50cyBvcGVuc3NsIGZyb20gdXNpbmcgZ2V0cmFuZG9tKCkgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvbiBvbGRlciBnbGliYyB2ZXJzaW9ucworIyAobmF0aXZlIHZlcnNpb25zIGNhbiBiZSBidWlsdCB3aXRoIG5ld2VyIGdsaWJjLCBidXQgdGhlbiByZWxvY2F0ZWQgb250byBhIHN5c3RlbSB3aXRoIG9sZGVyIGdsaWJjKQorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGgtcmFuZC1zZWVkPW9zLGRldnJhbmRvbSIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRoLXJhbmQtc2VlZD1vcyxkZXZyYW5kb20iCisKKyMgUmVseWluZyBvbiBoYXJkY29kZWQgYnVpbHQtaW4gcGF0aHMgY2F1c2VzIG9wZW5zc2wtbmF0aXZlIHRvIG5vdCBiZSByZWxvY2F0ZWFibGUgZnJvbSBzc3RhdGUuCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURPUEVOU1NMRElSPS9ub3QvYnVpbHRpbiAtREVOR0lORVNESVI9L25vdC9idWlsdGluIgorQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1ET1BFTlNTTERJUj0vbm90L2J1aWx0aW4gLURFTkdJTkVTRElSPS9ub3QvYnVpbHRpbiIKKworZG9fY29uZmlndXJlICgpIHsKKwlvcz0ke0hPU1RfT1N9CisJY2FzZSAkb3MgaW4KKwlsaW51eC1nbnVlYWJpIHxcCisJbGludXgtZ251c3BlIHxcCisJbGludXgtbXVzbGVhYmkgfFwKKwlsaW51eC1tdXNsc3BlIHxcCisJbGludXgtbXVzbCApCisJCW9zPWxpbnV4CisJCTs7CisJKikKKwkJOzsKKwllc2FjCisJdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgorCWNhc2UgJHRhcmdldCBpbgorCWxpbnV4LWFybSopCisJCXRhcmdldD1saW51eC1hcm12NAorCQk7OworCWxpbnV4LWFhcmNoNjQqKQorCQl0YXJnZXQ9bGludXgtYWFyY2g2NAorCQk7OworCWxpbnV4LWk/ODYgfCBsaW51eC12aWFjMykKKwkJdGFyZ2V0PWxpbnV4LXg4NgorCQk7OworCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCisJCXRhcmdldD1saW51eC14MzIKKwkJOzsKKwlsaW51eC1nbnU2NC14ODZfNjQpCisJCXRhcmdldD1saW51eC14ODZfNjQKKwkJOzsKKwlsaW51eC1taXBzIHwgbGludXgtbWlwc2VsKQorCQkjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKKwkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCisJCTs7CisJbGludXgtZ251bjMyLW1pcHMqKQorCQl0YXJnZXQ9bGludXgtbWlwczY0CisJCTs7CisJbGludXgtKi1taXBzNjQgfCBsaW51eC1taXBzNjQgfCBsaW51eC0qLW1pcHM2NGVsIHwgbGludXgtbWlwczY0ZWwpCisJCXRhcmdldD1saW51eDY0LW1pcHM2NAorCQk7OworCWxpbnV4LW1pY3JvYmxhemUqIHwgbGludXgtbmlvczIqIHwgbGludXgtc2gzIHwgbGludXgtc2g0IHwgbGludXgtYXJjKikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXBvd2VycGMpCisJCXRhcmdldD1saW51eC1wcGMKKwkJOzsKKwlsaW51eC1wb3dlcnBjNjQpCisJCXRhcmdldD1saW51eC1wcGM2NAorCQk7OworCWxpbnV4LXBvd2VycGM2NGxlKQorCQl0YXJnZXQ9bGludXgtcHBjNjRsZQorCQk7OworCWxpbnV4LXJpc2N2MzIpCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1yaXNjdjY0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzY0CisJCTs7CisJbGludXgtc3BhcmMgfCBsaW51eC1zdXBlcnNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OQorCQk7OworCWVzYWMKKworCXVzZXByZWZpeD0ke3ByZWZpeH0KKwlpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgorCQl1c2VwcmVmaXg9LworCWZpCisJIyBXQVJOSU5HOiBkbyBub3Qgc2V0IGNvbXBpbGVyL2xpbmtlciBmbGFncyAoLUkvLUQgZXRjLikgaW4gRVhUUkFfT0VDT05GLCBhcyB0aGV5IHdpbGwgZnVsbHkgcmVwbGFjZSB0aGUKKwkjIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQgYnkgYml0YmFrZS4gQWRqdXN0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW5zdGVhZC4KKwlIQVNIQkFOR1BFUkw9Ii91c3IvYmluL2VudiBwZXJsIiBQRVJMPXBlcmwgUEVSTDVMSUI9IiR7U30vZXh0ZXJuYWwvcGVybC9UZXh0LVRlbXBsYXRlLTEuNDYvbGliLyIgXAorCXBlcmwgJHtTfS9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JHtsaWJkaXJ9ICR0YXJnZXQKKwlwZXJsICR7Qn0vY29uZmlnZGF0YS5wbSAtLWR1bXAKK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgTUFOU1VGRklYPXNzbCBpbnN0YWxsCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCisKKwkjIENyZWF0ZSBTU0wgc3RydWN0dXJlIGZvciBwYWNrYWdlcyBzdWNoIGFzIGNhLWNlcnRpZmljYXRlcyB3aGljaAorCSMgY29udGFpbiBoYXJkLWNvZGVkIHBhdGhzIHRvIC9ldGMvc3NsLiBEZWJpYW4gZG9lcyB0aGUgc2FtZS4KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbAorCW12ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cyBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZiBcCisJICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsLworCisJIyBBbHRob3VnaCBhYnNvbHV0ZSBzeW1saW5rcyB3b3VsZCBiZSBPSyBmb3IgdGhlIHRhcmdldCwgdGhleSBiZWNvbWUKKwkjIGludmFsaWQgaWYgbmF0aXZlIG9yIG5hdGl2ZXNkayBhcmUgcmVsb2NhdGVkIGZyb20gc3N0YXRlLgorCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cycpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMKKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZScpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvcHJpdmF0ZQorCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZicpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29wZW5zc2wgXAorCSAgICBPUEVOU1NMX0NPTkY9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAorCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAorCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wtMS4xL2NlcnQucGVtIFwKKwkgICAgT1BFTlNTTF9FTkdJTkVTPSR7bGliZGlyfS9lbmdpbmVzLTEuMQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCW1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKKwlzZWQgJ3N8L3Vzci9saWIvc3NsL3wvdXNyL2xpYi9zc2wtMS4xL3xnJyAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKK30KKworUFRFU1RfQlVJTERfSE9TVF9GSUxFUyArPSAiY29uZmlnZGF0YS5wbSIKK1BURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJwZXJsX3ZlcnNpb24gPSIKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCSMgUHJ1bmUgdGhlIGJ1aWxkIHRyZWUKKwlybSAtZiAke0J9L2Z1enovKi4qICR7Qn0vdGVzdC8qLioKKworCWNwICR7U30vQ29uZmlndXJlICR7Qn0vY29uZmlnZGF0YS5wbSAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vZXh0ZXJuYWwgJHtCfS90ZXN0ICR7U30vdGVzdCAke0J9L2Z1enogJHtTfS91dGlsICR7Qn0vdXRpbCAke0R9JHtQVEVTVF9QQVRIfQorCisJIyBGb3IgdGVzdF9zaGxpYmxvYWQKKwlsbiAtcyAke2xpYmRpcn0vbGliY3J5cHRvLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KKwlsbiAtcyAke2xpYmRpcn0vbGlic3NsLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KKworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWxuIC1zICR7YmluZGlyfS9vcGVuc3NsICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlpbnN0YWxsIC1tNjQ0ICR7U30vYXBwcy8qLnBlbSAke1N9L2FwcHMvKi5zcmwgJHtTfS9hcHBzL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlpbnN0YWxsIC1tNzU1ICR7Qn0vYXBwcy9DQS5wbCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2VuZ2luZXMKKwlpbnN0YWxsIC1tNzU1ICR7Qn0vZW5naW5lcy9vc3NsdGVzdC5zbyAke0R9JHtQVEVTVF9QQVRIfS9lbmdpbmVzCit9CisKKyMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gTWFrZSB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiBUaGlzIHdpbGwgZW5hYmxlIHRoZSBjb25maWd1cmF0aW9uCisjIGZpbGUgdG8gYmUgaW5zdGFsbGVkIGZvciBib3RoIHRoZSBvcGVuc3NsLWJpbiBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2Ugc2luY2UgdGhlIG9wZW5zc2wtYmluIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCisKK1BBQ0tBR0VTID0rICJsaWJjcnlwdG8gbGlic3NsIG9wZW5zc2wtY29uZiAke1BOfS1lbmdpbmVzICR7UE59LW1pc2MiCisKK0ZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgorRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCitGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCitGSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9lbmdpbmVzLTEuMSIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC0xLjEvbWlzYyIKK0ZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vc3NsLTEuMS8qIgorRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2giCisKK0NPTkZGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCisKK1JSRUNPTU1FTkRTX2xpYmNyeXB0byArPSAib3BlbnNzbC1jb25mIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm9wZW5zc2wtYmluIHBlcmwgcGVybC1tb2R1bGVzIGJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ1ZFX1BST0RVQ1QgPSAib3BlbnNzbDpvcGVuc3NsIgorCisjIE9ubHkgYWZmZWN0cyBPcGVuU1NMID49IDEuMS4xIGluIGNvbWJpbmF0aW9uIHdpdGggQXBhY2hlIDwgMi40LjM3CisjIEFwYWNoZSBpbiBtZXRhLXdlYnNlcnZlciBpcyBhbHJlYWR5IHJlY2VudCBlbm91Z2gKK0NWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTAxOTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC8wMDAxLXBwcGQtRml4LWJvdW5kcy1jaGVjay1pbi1FQVAtY29kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwZC1GaXgtYm91bmRzLWNoZWNrLWluLUVBUC1jb2RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YmE3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC8wMDAxLXBwcGQtRml4LWJvdW5kcy1jaGVjay1pbi1FQVAtY29kZS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDhkNzk3MGI4ZjNkYjcyN2ZlNzk4YjY1ZjMzNzdmZTY3ODc1NzU0MjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+CitEYXRlOiBNb24sIDMgRmViIDIwMjAgMTU6NTM6MjggKzExMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBwZDogRml4IGJvdW5kcyBjaGVjayBpbiBFQVAgY29kZQorCitHaXZlbiB0aGF0IHdlIGhhdmUganVzdCBjaGVja2VkIHZhbGxlbiA8IGxlbiwgaXQgY2FuIG5ldmVyIGJlIHRoZSBjYXNlCit0aGF0IHZhbGxlbiA+PSBsZW4gKyBzaXplb2Yocmhvc3RuYW1lKS4gIFRoaXMgZml4ZXMgdGhlIGNoZWNrIHNvIHdlCithY3R1YWxseSBhdm9pZCBvdmVyZmxvd2luZyB0aGUgcmhvc3RuYW1lIGFycmF5LgorCitSZXBvcnRlZC1ieTogSWxqYSBWYW4gU3BydW5kZWwgPGl2YW5zcHJ1bmRlbEBpb2FjdGl2ZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vcGF1bHVzbWFjay9wcHAvY29tbWl0LzhkNzk3MGI4ZjNkYjcyN2ZlNzk4YjY1ZjMzNzdmZTY3ODc1NzU0MjZdCisKK0NWRTogQ1ZFLTIwMjAtODU5NworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBwcHBkL2VhcC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BwcGQvZWFwLmMgYi9wcHBkL2VhcC5jCitpbmRleCA5NDQwN2Y1Li4xYjkzZGIwIDEwMDY0NAorLS0tIGEvcHBwZC9lYXAuYworKysrIGIvcHBwZC9lYXAuYworQEAgLTE0MjAsNyArMTQyMCw3IEBAIGludCBsZW47CisgCQl9CisgCisgCQkvKiBOb3Qgc28gbGlrZWx5IHRvIGhhcHBlbi4gKi8KKy0JCWlmICh2YWxsZW4gPj0gbGVuICsgc2l6ZW9mIChyaG9zdG5hbWUpKSB7CisrCQlpZiAobGVuIC0gdmFsbGVuID49IHNpemVvZiAocmhvc3RuYW1lKSkgeworIAkJCWRiZ2xvZygiRUFQOiB0cmltbWluZyByZWFsbHkgbG9uZyBwZWVyIG5hbWUgZG93biIpOworIAkJCUJDT1BZKGlucCArIHZhbGxlbiwgcmhvc3RuYW1lLCBzaXplb2YgKHJob3N0bmFtZSkgLSAxKTsKKyAJCQlyaG9zdG5hbWVbc2l6ZW9mIChyaG9zdG5hbWUpIC0gMV0gPSAnXDAnOworQEAgLTE4NDYsNyArMTg0Niw3IEBAIGludCBsZW47CisgCQl9CisgCisgCQkvKiBOb3Qgc28gbGlrZWx5IHRvIGhhcHBlbi4gKi8KKy0JCWlmICh2YWxsZW4gPj0gbGVuICsgc2l6ZW9mIChyaG9zdG5hbWUpKSB7CisrCQlpZiAobGVuIC0gdmFsbGVuID49IHNpemVvZiAocmhvc3RuYW1lKSkgeworIAkJCWRiZ2xvZygiRUFQOiB0cmltbWluZyByZWFsbHkgbG9uZyBwZWVyIG5hbWUgZG93biIpOworIAkJCUJDT1BZKGlucCArIHZhbGxlbiwgcmhvc3RuYW1lLCBzaXplb2YgKHJob3N0bmFtZSkgLSAxKTsKKyAJCQlyaG9zdG5hbWVbc2l6ZW9mIChyaG9zdG5hbWUpIC0gMV0gPSAnXDAnOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgppbmRleCA2NDRjZGU0Li42MGM1NmRkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgpAQCAtMzMsNiArMzMsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcC1SZW1vdmUtdW5uZWVkZWQtaW5jbHVkZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wcHAtMi40LjctREVTLW9wZW5zc2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHBkLUZpeC1ib3VuZHMtY2hlY2staW4tRUFQLWNvZGUucGF0Y2ggXAogIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjc5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjc5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTUwMTc3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS43OS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAibmFtZSBzZXJ2ZXIgaW5mb3JtYXRpb24gaGFuZGxlciIKLURFU0NSSVBUSU9OID0gIlJlc29sdmNvbmYgaXMgYSBmcmFtZXdvcmsgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHN5c3RlbSdzIFwKLWluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnRseSBhdmFpbGFibGUgbmFtZXNlcnZlcnMuIEl0IHNldHMgXAotaXRzZWxmIHVwIGFzIHRoZSBpbnRlcm1lZGlhcnkgYmV0d2VlbiBwcm9ncmFtcyB0aGF0IHN1cHBseSBcCi1uYW1lc2VydmVyIGluZm9ybWF0aW9uIGFuZCBwcm9ncmFtcyB0aGF0IG5lZWQgbmFtZXNlcnZlciBcCi1pbmZvcm1hdGlvbi4iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCi1BVVRIT1IgPSAiVGhvbWFzIEhvb2QiCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9yZXNvbHZjb25mIgotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDUyMFQwNDQzNDBaL3Bvb2wvbWFpbi9yLyR7QlBOfS8ke0JQTn1fMS43OS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBhdGgtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vOTlfcmVzb2x2Y29uZiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWFiMjM4MjAyMGZjNTE4ZjA2YTA2ZTkyNGM1NmQzMDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGUyODQzY2Q0MTYyYjcwNmYwNDgxYjNjMjgxNjU3NzI4Y2JjMjgyMmU1MGE2NGZmZjc5Yjc5YmQ4YWE4NzBhMCIKLQotIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKLSMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9yL3Jlc29sdmNvbmYvIgotCi1pbmhlcml0IGFsbGFyY2gKLQotZG9fY29tcGlsZSAoKSB7Ci0JOgotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfcmVzb2x2Y29uZiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCQllY2hvICJkIC9ydW4vJHtCUE59L2ludGVyZmFjZSAtIC0gLSAtIiBcCi0JCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Jlc29sdmNvbmYuY29uZgotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KLQlsbiAtc25mICR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vcnVuCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggJHtEfSR7ZG9jZGlyfS8ke1B9Ci0JY3AgLXBQUiBldGMvKiAke0R9JHtzeXNjb25mZGlyfS8KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vCi0JaW5zdGFsbCAtbSAwNzU1IGJpbi9yZXNvbHZjb25mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCi0JaW5zdGFsbCAtbSAwNzU1IGJpbi9saXN0LXJlY29yZHMgJHtEfSR7YmFzZV9saWJkaXJ9LyR7QlBOfQotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAotCWluc3RhbGwgLW0gMDc1NSBkZWJpYW4vcmVzb2x2Y29uZi4wMDByZXNvbHZjb25mLmlmLXVwICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvMDAwcmVzb2x2Y29uZgotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtZG93bi5kCi0JaW5zdGFsbCAtbSAwNzU1IGRlYmlhbi9yZXNvbHZjb25mLnJlc29sdmNvbmYuaWYtZG93biAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1kb3duLmQvcmVzb2x2Y29uZgotCWluc3RhbGwgLW0gMDY0NCBSRUFETUUgJHtEfSR7ZG9jZGlyfS8ke1B9LwotCWluc3RhbGwgLW0gMDY0NCBtYW4vcmVzb2x2Y29uZi44ICR7RH0ke21hbmRpcn0vbWFuOC8KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlpZiBbIC16ICIkRCIgXTsgdGhlbgotCQlpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotCQkJc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmVzb2x2Y29uZi5jb25mCi0JCWVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0JCQkke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQkJZmkKLQlmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vJHtCUE59IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjgyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjgyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3OTU5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuODIuYmIKQEAgLTAsMCArMSw2OCBAQAorU1VNTUFSWSA9ICJuYW1lIHNlcnZlciBpbmZvcm1hdGlvbiBoYW5kbGVyIgorREVTQ1JJUFRJT04gPSAiUmVzb2x2Y29uZiBpcyBhIGZyYW1ld29yayBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgc3lzdGVtJ3MgXAoraW5mb3JtYXRpb24gYWJvdXQgY3VycmVudGx5IGF2YWlsYWJsZSBuYW1lc2VydmVycy4gSXQgc2V0cyBcCitpdHNlbGYgdXAgYXMgdGhlIGludGVybWVkaWFyeSBiZXR3ZWVuIHByb2dyYW1zIHRoYXQgc3VwcGx5IFwKK25hbWVzZXJ2ZXIgaW5mb3JtYXRpb24gYW5kIHByb2dyYW1zIHRoYXQgbmVlZCBuYW1lc2VydmVyIFwKK2luZm9ybWF0aW9uLiIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKK0FVVEhPUiA9ICJUaG9tYXMgSG9vZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3Jlc29sdmNvbmYiCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL3Jlc29sdmNvbmYuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wYXRoLWZvci1idXN5Ym94LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzk5X3Jlc29sdmNvbmYgXAorICAgICAgICAgICIKKworU1JDUkVWID0gImNiMTliYmZiZTdlNTIxNzQzMzJmNjhiZjJmMjk1YjM5ZDExOWZhZDMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCisjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vci9yZXNvbHZjb25mLyIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2NvbXBpbGUgKCkgeworCToKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X3Jlc29sdmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwkJZWNobyAiZCAvcnVuLyR7QlBOfS9pbnRlcmZhY2UgLSAtIC0gLSIgXAorCQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yZXNvbHZjb25mLmNvbmYKKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9LyR7QlBOfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59CisJbG4gLXNuZiAke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0gJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L3J1bgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0gJHtEfSR7YmFzZV9zYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44ICR7RH0ke2RvY2Rpcn0vJHtQfQorCWNwIC1wUFIgZXRjLyogJHtEfSR7c3lzY29uZmRpcn0vCisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9LworCWluc3RhbGwgLW0gMDc1NSBiaW4vcmVzb2x2Y29uZiAke0R9JHtiYXNlX3NiaW5kaXJ9LworCWluc3RhbGwgLW0gMDc1NSBiaW4vbGlzdC1yZWNvcmRzICR7RH0ke2Jhc2VfbGliZGlyfS8ke0JQTn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKwlpbnN0YWxsIC1tIDA3NTUgZGViaWFuL3Jlc29sdmNvbmYuMDAwcmVzb2x2Y29uZi5pZi11cCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kLzAwMHJlc29sdmNvbmYKKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLWRvd24uZAorCWluc3RhbGwgLW0gMDc1NSBkZWJpYW4vcmVzb2x2Y29uZi5yZXNvbHZjb25mLmlmLWRvd24gJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtZG93bi5kL3Jlc29sdmNvbmYKKwlpbnN0YWxsIC1tIDA2NDQgUkVBRE1FICR7RH0ke2RvY2Rpcn0vJHtQfS8KKwlpbnN0YWxsIC1tIDA2NDQgbWFuL3Jlc29sdmNvbmYuOCAke0R9JHttYW5kaXJ9L21hbjgvCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJaWYgWyAteiAiJEQiIF07IHRoZW4KKwkJaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KKwkJCXN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Jlc29sdmNvbmYuY29uZgorCQllbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorCQkJJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisJCWZpCisJZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9LyR7QlBOfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYmJlNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcHVycG9zZSByZWxheSBmb3IgYmlkaXJlY3Rpb25hbCBkYXRhIHRyYW5zZmVyIgotREVTQ1JJUFRJT04gPSAiU29jYXQgaXMgYSByZWxheSBmb3IgYmlkaXJlY3Rpb25hbCBkYXRhIFwKLXRyYW5zZmVyIGJldHdlZW4gdHdvIGluZGVwZW5kZW50IGRhdGEgY2hhbm5lbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0LyIKLQotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLURFUEVORFMgPSAib3BlbnNzbCIKLQotTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI1NztlbmRsaW5lPTI4NzttZDU9MzM4YzA1ZWFkZDAxMzg3MmFiYjFkNmUxOThlMTBhM2YiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0L2Rvd25sb2FkL3NvY2F0LSR7UFZ9LnRhci5iejIgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJhMDMyYTQ3YjhiODlhMTg0ODU2OTdmYTk3NTE1NGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGRkNjNmZmU0OTgxNjhhNGFhYzQxZDMwNzU5NGM1MDc2ZmYzMDdhYTBhYzA0YjE0MWY4ZjFjZWM2NTk0ZDA0YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIiCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfaGF2ZV96X21vZGlmaWVyPXllcyBcCi0gICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIFwKLSAgICAgICAgICAgICAgICAgc2NfY3ZfdGVybWlvc19pc3BlZWQ9bm8gXAotICAgICAgICAgICAgICAgICAke1RFUk1CSVRTX1NISUZUU30gXAotIgotCi1URVJNQklUU19TSElGVFMgPz0gInNjX2N2X3N5c19jcmRseV9zaGlmdD05IFwKLSAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMSBcCi0gICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD00IgotCi1URVJNQklUU19TSElGVFNfcG93ZXJwYyA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9OCIKLQotVEVSTUJJVFNfU0hJRlRTX3Bvd2VycGM2NCA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTEwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTgiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAidGNwLXdyYXBwZXJzIHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0tZW5hYmxlLWxpYndyYXAsLS1kaXNhYmxlLWxpYndyYXAsdGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS1lbmFibGUtcmVhZGxpbmUsLS1kaXNhYmxlLXJlYWRsaW5lLHJlYWRsaW5lIgotCi1kb19pbnN0YWxsX3ByZXBlbmQgKCkgewotICAgIG1rZGlyIC1wICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW4xCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIwZDQwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy40LmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiTXVsdGlwdXJwb3NlIHJlbGF5IGZvciBiaWRpcmVjdGlvbmFsIGRhdGEgdHJhbnNmZXIiCitERVNDUklQVElPTiA9ICJTb2NhdCBpcyBhIHJlbGF5IGZvciBiaWRpcmVjdGlvbmFsIGRhdGEgXAordHJhbnNmZXIgYmV0d2VlbiB0d28gaW5kZXBlbmRlbnQgZGF0YSBjaGFubmVscy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvIgorCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworREVQRU5EUyA9ICJvcGVuc3NsIgorCitMSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjU3O2VuZGxpbmU9Mjg3O21kNT0zMzhjMDVlYWRkMDEzODcyYWJiMWQ2ZTE5OGUxMGEzZiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvZG93bmxvYWQvc29jYXQtJHtQVn0udGFyLmJ6MiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzY2NhNGY4Y2Q5ZDJkMWNhYWJkOWNjMDk5NDUxYmFjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzIzNzRjYTg2ZjY1NDk4ZTIzZTMyNTljMmVlMWI4ZjlkYmViMDRkMTJjMmE3OGMwYzliNWQxY2I5N2RmZGZjIgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9oYXZlX3pfbW9kaWZpZXI9eWVzIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gXAorICAgICAgICAgICAgICAgICBzY19jdl90ZXJtaW9zX2lzcGVlZD1ubyBcCisgICAgICAgICAgICAgICAgICR7VEVSTUJJVFNfU0hJRlRTfSBcCisiCisKK1RFUk1CSVRTX1NISUZUUyA/PSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTkgXAorICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTExIFwKKyAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTQiCisKK1RFUk1CSVRTX1NISUZUU19wb3dlcnBjID0gInNjX2N2X3N5c19jcmRseV9zaGlmdD0xMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTEwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD04IgorCitURVJNQklUU19TSElGVFNfcG93ZXJwYzY0ID0gInNjX2N2X3N5c19jcmRseV9zaGlmdD0xMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9OCIKKworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJ0Y3Atd3JhcHBlcnMgcmVhZGxpbmUiCitQQUNLQUdFQ09ORklHID8/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS1lbmFibGUtbGlid3JhcCwtLWRpc2FibGUtbGlid3JhcCx0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1yZWFkbGluZSwtLWRpc2FibGUtcmVhZGxpbmUscmVhZGxpbmUiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKK2RvX2luc3RhbGxfcHJlcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHttYW5kaXJ9L21hbjEKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvZnN0YWIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9mc3RhYgppbmRleCBkNzlhMDE2Li43MGU0MDBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9mc3RhYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9mc3RhYgpAQCAtMiw3ICsyLDcgQEAKIAogL2Rldi9yb290ICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgYXV0byAgICAgICBkZWZhdWx0cyAgICAgICAgICAgICAgMSAgMQogcHJvYyAgICAgICAgICAgICAgICAgL3Byb2MgICAgICAgICAgICAgICAgcHJvYyAgICAgICBkZWZhdWx0cyAgICAgICAgICAgICAgMCAgMAotZGV2cHRzICAgICAgICAgICAgICAgL2Rldi9wdHMgICAgICAgICAgICAgZGV2cHRzICAgICBtb2RlPTA2MjAsZ2lkPTUgICAgICAgMCAgMAorZGV2cHRzICAgICAgICAgICAgICAgL2Rldi9wdHMgICAgICAgICAgICAgZGV2cHRzICAgICBtb2RlPTA2MjAscHRteG1vZGU9MDY2NixnaWQ9NSAgICAgIDAgIDAKIHRtcGZzICAgICAgICAgICAgICAgIC9ydW4gICAgICAgICAgICAgICAgIHRtcGZzICAgICAgbW9kZT0wNzU1LG5vZGV2LG5vc3VpZCxzdHJpY3RhdGltZSAwICAwCiB0bXBmcyAgICAgICAgICAgICAgICAvdmFyL3ZvbGF0aWxlICAgICAgICB0bXBmcyAgICAgIGRlZmF1bHRzICAgICAgICAgICAgICAwICAwCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1wYXNzd2QvYmFzZS1wYXNzd2RfMy41LjI5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLXBhc3N3ZC9iYXNlLXBhc3N3ZF8zLjUuMjkuYmIKaW5kZXggZDFhYWIwOS4uZDAxY2Q3ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLXBhc3N3ZC9iYXNlLXBhc3N3ZF8zLjUuMjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLXBhc3N3ZC9iYXNlLXBhc3N3ZF8zLjUuMjkuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkJhc2Ugc3lzdGVtIG1hc3RlciBwYXNzd29yZC9ncm91cCBmaWxlcyIKIERFU0NSSVBUSU9OID0gIlRoZSBtYXN0ZXIgY29waWVzIG9mIHRoZSB1c2VyIGRhdGFiYXNlIGZpbGVzICgvZXRjL3Bhc3N3ZCBhbmQgL2V0Yy9ncm91cCkuICBUaGUgdXBkYXRlLXBhc3N3ZCB0b29sIGlzIGFsc28gcHJvdmlkZWQgdG8ga2VlcCB0aGUgc3lzdGVtIGRhdGFiYXNlcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGVzZSBtYXN0ZXIgZmlsZXMuIgogU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MisiCitMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCiAKIFJFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlZlcnNpb24gMy41LjM4IHJlcXVpcmVzIGNkZWJjb25mIGZvciB1cGRhdGUtcGFzc3dkIHV0aWxpdHkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKaW5kZXggZDA4ZmE4ZC4uNmNmZGNkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwpAQCAtMSwxMyArMSwxMyBAQAogU1VNTUFSWSA9ICJUaW55IHZlcnNpb25zIG9mIG1hbnkgY29tbW9uIFVOSVggdXRpbGl0aWVzIGluIGEgc2luZ2xlIHNtYWxsIGV4ZWN1dGFibGUiCiBERVNDUklQVElPTiA9ICJCdXN5Qm94IGNvbWJpbmVzIHRpbnkgdmVyc2lvbnMgb2YgbWFueSBjb21tb24gVU5JWCB1dGlsaXRpZXMgaW50byBhIHNpbmdsZSBzbWFsbCBleGVjdXRhYmxlLiBJdCBwcm92aWRlcyBtaW5pbWFsaXN0IHJlcGxhY2VtZW50cyBmb3IgbW9zdCBvZiB0aGUgdXRpbGl0aWVzIHlvdSB1c3VhbGx5IGZpbmQgaW4gR05VIGZpbGV1dGlscywgc2hlbGx1dGlscywgZXRjLiBUaGUgdXRpbGl0aWVzIGluIEJ1c3lCb3ggZ2VuZXJhbGx5IGhhdmUgZmV3ZXIgb3B0aW9ucyB0aGFuIHRoZWlyIGZ1bGwtZmVhdHVyZWQgR05VIGNvdXNpbnM7IGhvd2V2ZXIsIHRoZSBvcHRpb25zIHRoYXQgYXJlIGluY2x1ZGVkIHByb3ZpZGUgdGhlIGV4cGVjdGVkIGZ1bmN0aW9uYWxpdHkgYW5kIGJlaGF2ZSB2ZXJ5IG11Y2ggbGlrZSB0aGVpciBHTlUgY291bnRlcnBhcnRzLiBCdXN5Qm94IHByb3ZpZGVzIGEgZmFpcmx5IGNvbXBsZXRlIFBPU0lYIGVudmlyb25tZW50IGZvciBhbnkgc21hbGwgb3IgZW1iZWRkZWQgc3lzdGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5idXN5Ym94Lm5ldCIKIEJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0LyIKIAogREVQRU5EUyArPSAia2Vybi10b29scy1uYXRpdmUgdmlydHVhbC9jcnlwdCIKIAogIyBiemlwMiBhcHBsZXQgaW4gYnVzeWJveCBpcyBiYXNlZCBvbiBsaWdodGx5LW1vZGlmaWVkIGJ6aXAyIHNvdXJjZQogIyB0aGUgR1BMIGlzIHZlcnNpb24gMiBvbmx5Ci1MSUNFTlNFID0gIkdQTHYyICYgYnppcDIiCitMSUNFTlNFID0gIkdQTHYyICYgYnppcDItMS4wLjYiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kZTEwZGU0ODY0MmFiNzQzMThlODkzYTYxMTA1YWZiYiIKIAogU0VDVElPTiA9ICJiYXNlIgpAQCAtMzU0LDcgKzM1NCw5IEBACiAKIGRvX2luc3RhbGxfcHRlc3QgKCkgewogCWNwIC1yICR7Qn0vdGVzdHN1aXRlICR7RH0ke1BURVNUX1BBVEh9LwotCWNwICR7Qn0vLmNvbmZpZyAgICAgICR7RH0ke1BURVNUX1BBVEh9LworICAgICAgICAjIFRoZXNlIGFjY2VzcyB0aGUgaW50ZXJuZXQgd2hpY2ggaXMgbm90IGd1YXJhbnRlZWQgdG8gd29yayBvbiBtYWNoaW5lcyBydW5uaW5nIHRoZSB0ZXN0cworICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlL3dnZXQKKwlzb3J0ICR7Qn0vLmNvbmZpZyA+ICR7RH0ke1BURVNUX1BBVEh9Ly5jb25maWcKIAlsbiAtcyAvYmluL2J1c3lib3ggICAke0R9JHtQVEVTVF9QQVRIfS9idXN5Ym94CiB9CiAKQEAgLTQzMSw2ICs0MzMsMzIgQEAKICAgICBkLnByZXBlbmRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2csIHBvc3RpbnN0KQogfQogCitwa2dfcG9zdGluc3RfJHtQTn1fcHJlcGVuZCAoKSB7CisgICAgICAgICMgTmVlZCBwYXRoIHRvIHNhdmVkIHV0aWxzLCBidXQgdGhleSBtYXkgaGF2ZSBiZSByZW1vdmVkIG9uIHVwZ3JhZGUgb2YgYnVzeWJveAorICAgICAgICAjIE9ubHkgdXNlIHNoZWxsIHRvIGdldCBwYXRocy4gQWxzbyBjYXB0dXJlIGlmIGJ1c3lib3ggd2FzIHNhdmVkLgorICAgICAgICBCVVNZQk9YPSIiCisgICAgICAgIGlmIFsgIngkRCIgPSAieCIgXSA7IHRoZW4gCisgICAgICAgICAgIGZvciBidXN5Ym94X3JtZGlyIGluIC90bXAvYnVzeWJveHJtLSo7IGRvCisgICAgICAgICAgICAgICBpZiBbICIkYnVzeWJveF9ybWRpciIgIT0gJy90bXAvYnVzeWJveHJtLSonIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICBleHBvcnQgUEFUSD0kYnVzeWJveF9ybWRpcjokUEFUSAorICAgICAgICAgICAgICAgICAgaWYgWyAtZSAkYnVzeWJveF9ybWRpci9idXN5Ym94KiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICBCVVNZQk9YPSIkYnVzeWJveF9ybWRpci9idXN5Ym94KiIKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICBkb25lCisgICAgICAgIGZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfV9hcHBlbmQgKCkgeworICAgICAgICAjIElmIGJ1c3lib3ggZXhpc3RzIGluIHRoZSByZW1vdmUgZGlyZWN0b3J5IGl0IGlzIGJlY2F1c2UgaXQgd2FzIHRoZSBvbmx5IHNoZWxsIGxlZnQuCisgICAgICAgIGlmIFsgIngkRCIgPSAieCIgXSA7IHRoZW4KKyAgICAgICAgICAgaWYgWyAieCRCVVNZQk9YIiAhPSAieCIgXSA7IHRoZW4KKyAgICAgICAgICAgICAgdXBkYXRlLWFsdGVybmF0aXZlcyAtLXJlbW92ZSBzaCAkQlVTWUJPWAorICAgICAgICAgICAgICBybSAtZiAkQlVTWUJPWAorICAgICAgICAgICBmaQorICAgICAgICBmaQorfSAKKwogcGtnX3ByZXJtXyR7UE59ICgpIHsKIAkjIFRoaXMgaXMgc28geW91IGNhbiBtYWtlIGJ1c3lib3ggY29tbWl0IHN1aWNpZGUgLSByZW1vdmluZyBidXN5Ym94IHdpdGggbm8gb3RoZXIgcGFja2FnZXMKIAkjIHByb3ZpZGluZyBpdHMgZmlsZXMsIHRoaXMgd2lsbCBtYWtlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgd29yaywgYnV0IHRoZSB1cGRhdGUtcmMuZCBwYXJ0CkBAIC00NTEsOSArNDc5LDI2IEBACiAJbG4gLXMgJHtiYXNlX2JpbmRpcn0vYnVzeWJveCAkdG1wZGlyL2dyZXAKIAlsbiAtcyAke2Jhc2VfYmluZGlyfS9idXN5Ym94ICR0bXBkaXIvdGFpbAogCWV4cG9ydCBQQVRIPSRQQVRIOiR0bXBkaXIKKworICAgICAgICAjIElmIGJ1c3lib3ggaXMgdGhlIHNoZWxsLCB3ZSBuZWVkIHRvIHNhdmUgaXQgc2luY2UgaXRzIHRoZSBsb3dlc3QgcHJpb3JpdHkgc2hlbGwKKyAgICAgICAgIyBSZWdpc3RlciBzYXZlZCBiaXRiYWtlIGFzIHRoZSBsb3dlc3QgcHJpb3JpdHkgc2hlbGwgcG9zc2libGUgYXMgYmFjayB1cC4KKyAgICAgICAgaWYgWyAtbiAiJChyZWFkbGluayAtZiAvYmluL3NoIHwgZ3JlcCBidXN5Ym94KSIgXSA7IHRoZW4KKyAgICAgICAgICAgQlVTWUJPWD0kKHJlYWRsaW5rIC1mIC9iaW4vc2gpCisgICAgICAgICAgIGNwICRCVVNZQk9YICR0bXBkaXIvJChiYXNlbmFtZSAkQlVTWUJPWCkKKyAgICAgICAgICAgdXBkYXRlLWFsdGVybmF0aXZlcyAtLWluc3RhbGwgL2Jpbi9zaCBzaCAkdG1wZGlyLyQoYmFzZW5hbWUgJEJVU1lCT1gpIDEgCisgICAgICAgIGZpCiB9CiAKIHBrZ19wb3N0cm1fJHtQTn0gKCkgeworICAgICAgICAjIEFkZCBwYXRoIHRvIHJlbW92ZSBkaXIgaW4gY2FzZSB3ZSByZW1vdmVkIG91ciBvbmx5IGdyZXAKKyAgICAgICAgaWYgWyAieCREIiA9ICJ4IiBdIDsgdGhlbgorICAgICAgICAgICBmb3IgYnVzeWJveF9ybWRpciBpbiAvdG1wL2J1c3lib3hybS0qOyBkbworICAgICAgICAgICAgICAgaWYgWyAiJGJ1c3lib3hfcm1kaXIiICE9ICcvdG1wL2J1c3lib3hybS0qJyBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgZXhwb3J0IFBBVEg9JGJ1c3lib3hfcm1kaXI6JFBBVEgKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgIGRvbmUKKyAgICAgICAgZmkKKwogCWlmIGdyZXAgLXEgIl4ke2Jhc2VfYmluZGlyfS9iYXNoJCIgJEQke3N5c2NvbmZkaXJ9L2J1c3lib3gubGlua3MqICYmIFsgISAtZSAkRCR7YmFzZV9iaW5kaXJ9L2Jhc2ggXTsgdGhlbgogCQlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmFzZV9iaW5kaXJ9L2Jhc2gkIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKIAlmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3RpbWUtZnVuY3Rpb24tY2FsbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVJlbW92ZS1zdGltZS1mdW5jdGlvbi1jYWxscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yjk0MzI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3RpbWUtZnVuY3Rpb24tY2FsbHMucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSBkMzUzOWJlOGYyN2I4Y2JmZGZlZTQ2MGZlMDgyOTkxNThmMDhiY2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxMzowNjo0MCArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgc3RpbWUoKSBmdW5jdGlvbiBjYWxscworCitzdGltZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZ2xpYmMgMi4zMSBhbmQgcmVwbGFjZWQgd2l0aAorY2xvY2tfc2V0dGltZSgpLiBMZXQncyByZXBsYWNlIHRoZSBzdGltZSgpIGZ1bmN0aW9uIGNhbGxzIHdpdGgKK2Nsb2NrX3NldHRpbWUoKSBpbiBwcmVwZXJhdGlvbi4KKworZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCityZGF0ZV9tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NyAgICAgMjI0ICAgICArMjcKK2Nsb2NrX3NldHRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgMjcgICAgICsyNworZGF0ZV9tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MjYgICAgIDk0MSAgICAgKzE1CitzdGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNyAgICAgICAtICAgICAtMzcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKGFkZC9yZW1vdmU6IDIvMiBncm93L3NocmluazogMi8wIHVwL2Rvd246IDY5Ly0zNykgICAgICAgICAgICAgVG90YWw6IDMyIGJ5dGVzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD1kMzUzOWJlOGYyN2I4Y2JmZGZlZTQ2MGZlMDgyOTkxNThmMDhiY2Q5XSAKK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBjb3JldXRpbHMvZGF0ZS5jICAgICAgICAgfCA2ICsrKysrLQorIGxpYmJiL21pc3Npbmdfc3lzY2FsbHMuYyB8IDggLS0tLS0tLS0KKyB1dGlsLWxpbnV4L3JkYXRlLmMgICAgICAgfCA4ICsrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworLS0tIGEvY29yZXV0aWxzL2RhdGUuYworKysrIGIvY29yZXV0aWxzL2RhdGUuYworQEAgLTI3OSw2ICsyNzksOSBAQCBpbnQgZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhCisgCQl0aW1lKCZ0cy50dl9zZWMpOworICNlbmRpZgorIAl9CisrI2lmICFFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8KKysJdHMudHZfbnNlYyA9IDA7CisrI2VuZGlmCisgCWxvY2FsdGltZV9yKCZ0cy50dl9zZWMsICZ0bV90aW1lKTsKKyAKKyAJLyogSWYgZGF0ZSBzdHJpbmcgaXMgZ2l2ZW4sIHVwZGF0ZSB0bV90aW1lLCBhbmQgbWF5YmUgc2V0IGRhdGUgKi8KK0BAIC0zMDEsOSArMzA0LDEwIEBAIGludCBkYXRlX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGEKKyAJCWlmIChkYXRlX3N0clswXSAhPSAnQCcpCisgCQkJdG1fdGltZS50bV9pc2RzdCA9IC0xOworIAkJdHMudHZfc2VjID0gdmFsaWRhdGVfdG1fdGltZShkYXRlX3N0ciwgJnRtX3RpbWUpOworKwkJdHMudHZfbnNlYyA9IDA7CisgCisgCQkvKiBpZiBzZXR0aW5nIHRpbWUsIHNldCBpdCAqLworLQkJaWYgKChvcHQgJiBPUFRfU0VUKSAmJiBzdGltZSgmdHMudHZfc2VjKSA8IDApIHsKKysJCWlmICgob3B0ICYgT1BUX1NFVCkgJiYgY2xvY2tfc2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKSA8IDApIHsKKyAJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBzZXQgZGF0ZSIpOworIAkJfQorIAl9CistLS0gYS9saWJiYi9taXNzaW5nX3N5c2NhbGxzLmMKKysrKyBiL2xpYmJiL21pc3Npbmdfc3lzY2FsbHMuYworQEAgLTE1LDE0ICsxNSw2IEBAIHBpZF90IGdldHNpZChwaWRfdCBwaWQpCisgCXJldHVybiBzeXNjYWxsKF9fTlJfZ2V0c2lkLCBwaWQpOworIH0KKyAKKy1pbnQgc3RpbWUoY29uc3QgdGltZV90ICp0KQorLXsKKy0Jc3RydWN0IHRpbWV2YWwgdHY7CistCXR2LnR2X3NlYyA9ICp0OworLQl0di50dl91c2VjID0gMDsKKy0JcmV0dXJuIHNldHRpbWVvZmRheSgmdHYsIE5VTEwpOworLX0KKy0KKyBpbnQgc2V0aG9zdG5hbWUoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IGxlbikKKyB7CisgCXJldHVybiBzeXNjYWxsKF9fTlJfc2V0aG9zdG5hbWUsIG5hbWUsIGxlbik7CistLS0gYS91dGlsLWxpbnV4L3JkYXRlLmMKKysrKyBiL3V0aWwtbGludXgvcmRhdGUuYworQEAgLTk1LDkgKzk1LDEzIEBAIGludCByZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2gKKyAJaWYgKCEoZmxhZ3MgJiAyKSkgeyAvKiBubyAtcCAoLXMgbWF5IGJlIHByZXNlbnQpICovCisgCQlpZiAodGltZShOVUxMKSA9PSByZW1vdGVfdGltZSkKKyAJCQliYl9lcnJvcl9tc2coImN1cnJlbnQgdGltZSBtYXRjaGVzIHJlbW90ZSB0aW1lIik7CistCQllbHNlCistCQkJaWYgKHN0aW1lKCZyZW1vdGVfdGltZSkgPCAwKQorKwkJZWxzZSB7CisrCQkJc3RydWN0IHRpbWVzcGVjIHRzOworKwkJCXRzLnR2X3NlYyA9IHJlbW90ZV90aW1lOworKwkJCXRzLnR2X25zZWMgPSAwOworKwkJCWlmIChjbG9ja19zZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpIDwgMCkKKyAJCQkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBzZXQgdGltZSBvZiBkYXkiKTsKKysJCX0KKyAJfQorIAorIAlpZiAoZmxhZ3MgIT0gMSkgLyogbm90IGxvbmUgLXMgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN5c2NhbGwtd3JhcHBlcnMtYXJvdW5kLWNsb2NrX2dldHRpbWUtY2xvc2VzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN5c2NhbGwtd3JhcHBlcnMtYXJvdW5kLWNsb2NrX2dldHRpbWUtY2xvc2VzLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzdmOWI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3lzY2FsbC13cmFwcGVycy1hcm91bmQtY2xvY2tfZ2V0dGltZS1jbG9zZXMtLnBhdGNoCkBAIC0wLDAgKzEsMTIwIEBACitGcm9tIGJlNWE1MDVkNzcxYTc3YzY0MGFjYzM1Y2VhYTQ3MGM4MGU2MmY5NTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorRGF0ZTogVGh1LCAyNCBPY3QgMjAxOSAxNjoyNjo1NSArMDIwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgc3lzY2FsbCB3cmFwcGVycyBhcm91bmQgY2xvY2tfZ2V0dGltZSwgY2xvc2VzIDEyMDkxCisKKzEyMDkxICJEaXJlY3QgdXNlIG9mIF9fTlJfY2xvY2tfZ2V0dGltZSBpcyBub3QgdGltZTY0LXNhZmUiLgorCitmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKK3J1bnN2X21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjk4ICAgIDE3MTIgICAgICsxNAorc3RhcnRzZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNzggICAgIDM4MyAgICAgICs1CitnZXRfbW9ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMSAgICAgIDI1ICAgICAgLTYKK2RhdGVfbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTMyICAgICA5MjYgICAgICAtNgorZ2V0dGltZW9mZGF5X25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcgICAgICAgLSAgICAgLTE3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyhhZGQvcmVtb3ZlOiAwLzEgZ3Jvdy9zaHJpbms6IDIvMiB1cC9kb3duOiAxOS8tMjkpICAgICAgICAgICAgVG90YWw6IC0xMCBieXRlcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YmU1YTUwNWQ3NzFhNzdjNjQwYWNjMzVjZWFhNDcwYzgwZTYyZjk1NF0KK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5mbGFncyAgIHwgIDYgKysrKy0tCisgY29yZXV0aWxzL2RhdGUuYyB8IDE2ICsrKy0tLS0tLS0tLS0tLS0KKyBsaWJiYi90aW1lLmMgICAgIHwgMTEgKy0tLS0tLS0tLS0KKyBydW5pdC9ydW5zdi5jICAgIHwgMTEgKy0tLS0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCisKKy0tLSBhL01ha2VmaWxlLmZsYWdzCisrKysgYi9NYWtlZmlsZS5mbGFncworQEAgLTEyOSwxMCArMTI5LDEyIEBAIGVuZGlmCisgIyBmYWxsIGJhY2sgdG8gdXNpbmcgYSB0ZW1wIGZpbGU6CisgQ1JZUFRfQVZBSUxBQkxFIDo9ICQoc2hlbGwgZWNobyAnaW50IG1haW4odm9pZCl7cmV0dXJuIDA7fScgPmNyeXB0dGVzdC5jOyAkKENDKSAkKENGTEFHUykgLWxjcnlwdCAtbyAvZGV2L251bGwgY3J5cHR0ZXN0LmMgPi9kZXYvbnVsbCAyPiYxICYmIGVjaG8gInkiOyBybSBjcnlwdHRlc3QuYykKKyBpZmVxICgkKENSWVBUX0FWQUlMQUJMRSkseSkKKy1MRExJQlMgKz0gbSBjcnlwdAorK0xETElCUyArPSBtIHJ0IGNyeXB0CisgZWxzZQorLUxETElCUyArPSBtCisrTERMSUJTICs9IG0gcnQKKyBlbmRpZgorKyMgbGlibSBtYXkgYmUgbmVlZGVkIGZvciBkYywgYXdrLCBudHBkCisrIyBsaWJydCBtYXkgYmUgbmVlZGVkIGZvciBjbG9ja19nZXR0aW1lKCkKKyAKKyAjIGxpYnBhbSBtYXkgdXNlIGxpYnB0aHJlYWQsIGxpYmRsIGFuZC9vciBsaWJhdWRpdC4KKyAjIE9uIHNvbWUgcGxhdGZvcm1zIHRoYXQgcmVxdWlyZXMgYW4gZXhwbGljaXQgLWxwdGhyZWFkLCAtbGRsLCAtbGF1ZGl0LgorLS0tIGEvY29yZXV0aWxzL2RhdGUuYworKysrIGIvY29yZXV0aWxzL2RhdGUuYworQEAgLTMzLDEwICszMyw5IEBACisgLy9jb25maWc6CUVuYWJsZSBvcHRpb24gKC1JKSB0byBvdXRwdXQgYW4gSVNPLTg2MDEgY29tcGxpYW50CisgLy9jb25maWc6CWRhdGUvdGltZSBzdHJpbmcuCisgLy9jb25maWc6CistLy9jb25maWc6IyBkZWZhdWx0cyB0byAibm8iOiBzdGF0J3MgbmFub3NlY29uZCBmaWVsZCBpcyBhIGJpdCBub24tcG9ydGFibGUKKyAvL2NvbmZpZzpjb25maWcgRkVBVFVSRV9EQVRFX05BTk8KKyAvL2NvbmZpZzoJYm9vbCAiU3VwcG9ydCAlW251bV1OIG5hbm9zZWNvbmQgZm9ybWF0IHNwZWNpZmllciIKKy0vL2NvbmZpZzoJZGVmYXVsdCBuICAjIHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lKSBvciBzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0KQorKy8vY29uZmlnOglkZWZhdWx0IG4gIyBzdGF0J3MgbmFub3NlY29uZCBmaWVsZCBpcyBhIGJpdCBub24tcG9ydGFibGUKKyAvL2NvbmZpZzoJZGVwZW5kcyBvbiBEQVRFCisgLy9jb25maWc6CXNlbGVjdCBQTEFURk9STV9MSU5VWAorIC8vY29uZmlnOgloZWxwCitAQCAtMjcxLDE3ICsyNzAsOCBAQCBpbnQgZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhCisgCQkgKi8KKyAjZW5kaWYKKyAJfSBlbHNlIHsKKy0jaWYgRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PICYmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorLQkJLyogbGliYyBoYXMgaW5jcmVkaWJseSBtZXNzeSB3YXkgb2YgZG9pbmcgdGhpcywKKy0JCSAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKy0JCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19SRUFMVElNRSwgJnRzKTsKKy0jZWxpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8gJiYgX19USU1FU0laRSA9PSA2NAorLQkJLyogTGV0J3Mgb25seSBzdXBwb3J0IHRoZSA2NCBzdWZmaXggc3lzY2FsbHMgZm9yIDY0LWJpdCB0aW1lX3QuCistCQkgKiBUaGlzIHNpbXBsaWZpZXMgdGhlIGNvZGUgZm9yIHVzIGFzIHdlIGRvbid0IG5lZWQgdG8gY29udmVydAorLQkJICogYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdC4gV2UgYWxzbyBkb24ndCBoYXZlIGEgd2F5IHRvCistCQkgKiByZXBvcnQgb3ZlcmZsb3cgZXJyb3JzIGhlcmUuCistCQkgKi8KKy0JCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX1JFQUxUSU1FLCAmdHMpOworKyNpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8KKysJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CisgI2Vsc2UKKyAJCXRpbWUoJnRzLnR2X3NlYyk7CisgI2VuZGlmCistLS0gYS9saWJiYi90aW1lLmMKKysrKyBiL2xpYmJiL3RpbWUuYworQEAgLTI1MywxOCArMjUzLDkgQEAgY2hhciogRkFTVF9GVU5DIHN0cmZ0aW1lX1lZWVlNTURESEhNTVNTKAorICNkZWZpbmUgQ0xPQ0tfTU9OT1RPTklDIDEKKyAjZW5kaWYKKyAKKy0vKiBsaWJjIGhhcyBpbmNyZWRpYmx5IG1lc3N5IHdheSBvZiBkb2luZyB0aGlzLAorLSAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyBzdGF0aWMgdm9pZCBnZXRfbW9ubyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKy0jaWYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCistIAlpZiAoc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX01PTk9UT05JQywgdHMpKQorLSNlbGlmIF9fVElNRVNJWkUgPT0gNjQKKy0JaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX01PTk9UT05JQywgdHMpKQorLSNlbHNlCistIyBlcnJvciAiV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYXJjaGl0ZWN0dXJlcyB3aXRob3V0ICIgXAorLQkidGhlIF9fTlJfY2xvY2tfZ2V0dGltZSBzeXNjYWxsIGFuZCAzMi1iaXQgdGltZV90IgorLSNlbmRpZgorKwlpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIHRzKSkKKyAJCWJiX2Vycm9yX21zZ19hbmRfZGllKCJjbG9ja19nZXR0aW1lKE1PTk9UT05JQykgZmFpbGVkIik7CisgfQorIHVuc2lnbmVkIGxvbmcgbG9uZyBGQVNUX0ZVTkMgbW9ub3RvbmljX25zKHZvaWQpCistLS0gYS9ydW5pdC9ydW5zdi5jCisrKysgYi9ydW5pdC9ydW5zdi5jCitAQCAtNTEsMTggKzUxLDkgQEAgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BRworICNpZiBFTkFCTEVfTU9OT1RPTklDX1NZU0NBTEwKKyAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyAKKy0vKiBsaWJjIGhhcyBpbmNyZWRpYmx5IG1lc3N5IHdheSBvZiBkb2luZyB0aGlzLAorLSAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyBzdGF0aWMgdm9pZCBnZXR0aW1lb2ZkYXlfbnMoc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CistI2lmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorLQlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKy0jZWxpZiBfX1RJTUVTSVpFID09IDY0CistCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX1JFQUxUSU1FLCB0cyk7CistI2Vsc2UKKy0jIGVycm9yICJXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgIiBcCistCSJ0aGUgX19OUl9jbG9ja19nZXR0aW1lIHN5c2NhbGwgYW5kIDMyLWJpdCB0aW1lX3QiCistI2VuZGlmCisrCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKyB9CisgI2Vsc2UKKyBzdGF0aWMgdm9pZCBnZXR0aW1lb2ZkYXlfbnMoc3RydWN0IHRpbWVzcGVjICp0cykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZGF0ZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZGF0ZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDQ1MjZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1kYXRlLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYjdiNzQ1MmYyOTJmMDNlZWZhZmE2ZmQxZGE5YmNmYzkzM2RlZTE1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK0RhdGU6IFdlZCwgMTggU2VwIDIwMTkgMDk6Mjg6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZGF0ZTogVXNlIDY0IHByZWZpeCBzeXNjYWxsIGlmIHdlIGhhdmUgdG8KKworU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyBubyBsb25nZXIgaGF2ZSB0aGUgMzItYml0IHRpbWVfdCBzeXNjYWxscy4KK0luc3RlYWQgdGhleSBoYXZlIHN1ZmZpeGVkIHN5c2NhbGxzIHRoYXQgcmV0dXJucyBhIDY0LWJpdCB0aW1lX3QuIElmCit0aGUgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgaGF2ZSB0aGUgbm9uLXN1ZmZpeGVkIHN5c2NhbGwgYW5kIGlzIHVzaW5nIGEKKzY0LWJpdCB0aW1lX3QgbGV0J3MgdXNlIHRoZSBzdWZmaXhlZCBzeXNjYWxsIGluc3RlYWQuCisKK1RoaXMgZml4ZXMgYnVpbGQgaXNzdWVzIHdoZW4gYnVpbGRpbmcgZm9yIFJJU0MtViAzMi1iaXQgd2l0aCA1LjErIGtlcm5lbAoraGVhZGVycy4KKworSWYgYW4gYXJjaGl0ZWN0dXJlIG9ubHkgc3VwcG9ydHMgdGhlIHN1ZmZpeGVkIHN5c2NhbGxzLCBidXQgaXMgc3RpbGwKK3VzaW5nIGEgMzItYml0IHRpbWVfdCBmYWxsIGJhY2sgdG8gdGhlIGxpYmMgY2FsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWI3Yjc0NTJmMjkyZjAzZWVmYWZhNmZkMWRhOWJjZmM5MzNkZWUxNWFdCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorLS0tCisgY29yZXV0aWxzL2RhdGUuYyB8IDExICsrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworLS0tIGEvY29yZXV0aWxzL2RhdGUuYworKysrIGIvY29yZXV0aWxzL2RhdGUuYworQEAgLTM2LDcgKzM2LDcgQEAKKyAvL2NvbmZpZzojIGRlZmF1bHRzIHRvICJubyI6IHN0YXQncyBuYW5vc2Vjb25kIGZpZWxkIGlzIGEgYml0IG5vbi1wb3J0YWJsZQorIC8vY29uZmlnOmNvbmZpZyBGRUFUVVJFX0RBVEVfTkFOTworIC8vY29uZmlnOglib29sICJTdXBwb3J0ICVbbnVtXU4gbmFub3NlY29uZCBmb3JtYXQgc3BlY2lmaWVyIgorLS8vY29uZmlnOglkZWZhdWx0IG4gICMgc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUpCisrLy9jb25maWc6CWRlZmF1bHQgbiAgIyBzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSkgb3Igc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCkKKyAvL2NvbmZpZzoJZGVwZW5kcyBvbiBEQVRFCisgLy9jb25maWc6CXNlbGVjdCBQTEFURk9STV9MSU5VWAorIC8vY29uZmlnOgloZWxwCitAQCAtMjcxLDEwICsyNzEsMTcgQEAgaW50IGRhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYQorIAkJICovCisgI2VuZGlmCisgCX0gZWxzZSB7CistI2lmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTworKyNpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8gJiYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCisgCQkvKiBsaWJjIGhhcyBpbmNyZWRpYmx5IG1lc3N5IHdheSBvZiBkb2luZyB0aGlzLAorIAkJICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworIAkJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX1JFQUxUSU1FLCAmdHMpOworKyNlbGlmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTyAmJiBfX1RJTUVTSVpFID09IDY0CisrCQkvKiBMZXQncyBvbmx5IHN1cHBvcnQgdGhlIDY0IHN1ZmZpeCBzeXNjYWxscyBmb3IgNjQtYml0IHRpbWVfdC4KKysJCSAqIFRoaXMgc2ltcGxpZmllcyB0aGUgY29kZSBmb3IgdXMgYXMgd2UgZG9uJ3QgbmVlZCB0byBjb252ZXJ0CisrCQkgKiBiZXR3ZWVuIDY0LWJpdCBhbmQgMzItYml0LiBXZSBhbHNvIGRvbid0IGhhdmUgYSB3YXkgdG8KKysJCSAqIHJlcG9ydCBvdmVyZmxvdyBlcnJvcnMgaGVyZS4KKysJCSAqLworKwkJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CisgI2Vsc2UKKyAJCXRpbWUoJnRzLnR2X3NlYyk7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1OGVhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc3lzY3RsLWlnbm9yZS1FSU8tb2Ytc3RhYmxlX3NlY3JldC1iZWxvdy1wcm9jLXN5cy1uZS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDNiZWUwNDYwZDc0YmFkODhlY2E2NTkyZTYzY2E5MjY5NjFiNDNiNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDYgTWFyIDIwMjAgMTY6MDk6MjYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzY3RsOiBpZ25vcmUgRUlPIG9mIHN0YWJsZV9zZWNyZXQgYmVsb3cKKyAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZgorCitBdm9pZCBjb25mdXNpbmcgbWVzc2FnZXMgY2F1c2VkIGJ5IEVJTyBvbiByZWFkaW5nCisvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi8qL3N0YWJsZV9zZWNyZXQgaWYgdGhvc2UgYXJlIG5vdCBzZXQgeWV0LgorTWFrZSBpdCBiZWhhdmUgdGhlIHNhbWUgYXMgcHJvY3BzKD49My4zLjEzKS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1c3lib3hAYnVzeWJveC5uZXQgbWFpbGluZyBsaXN0XQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBwcm9jcHMvc3lzY3RsLmMgfCA5ICsrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Byb2Nwcy9zeXNjdGwuYyBiL3Byb2Nwcy9zeXNjdGwuYworaW5kZXggNmQ3NzE4NWNhLi40MmM1MWNjOTEgMTAwNjQ0CistLS0gYS9wcm9jcHMvc3lzY3RsLmMKKysrKyBiL3Byb2Nwcy9zeXNjdGwuYworQEAgLTIwMiw3ICsyMDIsMTQgQEAgc3RhdGljIGludCBzeXNjdGxfYWN0X29uX3NldHRpbmcoY2hhciAqc2V0dGluZykKKyAJCXZhbHVlID0gY3B0ciA9IHhtYWxsb2NfcmVhZChmZCwgTlVMTCk7CisgCQljbG9zZShmZCk7CisgCQlpZiAodmFsdWUgPT0gTlVMTCkgeworLQkJCWJiX3BlcnJvcl9tc2coImVycm9yIHJlYWRpbmcga2V5ICclcyciLCBvdXRuYW1lKTsKKysJCQlzd2l0Y2ggKGVycm5vKSB7CisrCQkJCWNhc2UgRUlPOgorKwkJCQkJLyogSWdub3JlIHN0YWJsZV9zZWNyZXQgYmVsb3cgL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYgKi8KKysJCQkJCWJyZWFrOworKwkJCQlkZWZhdWx0OgorKwkJCQkJYmJfcGVycm9yX21zZygiZXJyb3IgcmVhZGluZyBrZXkgJyVzJyIsIG91dG5hbWUpOworKwkJCQkJYnJlYWs7CisrCQkJfQorIAkJCXJldHZhbCA9IEVYSVRfRkFJTFVSRTsKKyAJCQlnb3RvIGVuZDsKKyAJCX0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtdGltZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtdGltZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGE2YzBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS10aW1lLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gOTAyZDM5OTI5MjJmYzhkYjg0OTVkNWZiMzBhNDU4MTcxMWI2MGM2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK0RhdGU6IFdlZCwgMTggU2VwIDIwMTkgMDk6Mjg6NTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGltZTogVXNlIDY0IHByZWZpeCBzeXNjYWxsIGlmIHdlIGhhdmUgdG8KKworU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyBubyBsb25nZXIgaGF2ZSB0aGUgMzItYml0IHRpbWVfdCBzeXNjYWxscy4KK0luc3RlYWQgdGhleSBoYXZlIHN1ZmZpeGVkIHN5c2NhbGxzIHRoYXQgcmV0dXJucyBhIDY0LWJpdCB0aW1lX3QuIElmCit0aGUgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgaGF2ZSB0aGUgbm9uLXN1ZmZpeGVkIHN5c2NhbGwgYW5kIGlzIHVzaW5nIGEKKzY0LWJpdCB0aW1lX3QgbGV0J3MgdXNlIHRoZSBzdWZmaXhlZCBzeXNjYWxsIGluc3RlYWQuCisKK1RoaXMgZml4ZXMgYnVpbGQgaXNzdWVzIHdoZW4gYnVpbGRpbmcgZm9yIFJJU0MtViAzMi1iaXQgd2l0aCA1LjErIGtlcm5lbAoraGVhZGVycy4KKworSWYgYW4gYXJjaGl0ZWN0dXJlIG9ubHkgc3VwcG9ydHMgdGhlIHN1ZmZpeGVkIHN5c2NhbGxzLCBidXQgaXMgc3RpbGwKK3VzaW5nIGEgMzItYml0IHRpbWVfdCByZXBvcnQgYSBjb21waWxhdGlvbiBlcnJvci4gVGhpcyBhdm9pZHMgdXMgaGF2ZSB0bworZGVhbCB3aXRoIGNvbnZlcnRpbmcgYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdCB2YWx1ZXMuIFRoZXJlIGFyZQorY3VycmVudGx5IG5vIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhpcyBpcyB0aGUgY2FzZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTkwMmQzOTkyOTIyZmM4ZGI4NDk1ZDVmYjMwYTQ1ODE3MTFiNjBjNjJdCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorLS0tCisgbGliYmIvdGltZS5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCistLS0gYS9saWJiYi90aW1lLmMKKysrKyBiL2xpYmJiL3RpbWUuYworQEAgLTI1Nyw3ICsyNTcsMTQgQEAgY2hhciogRkFTVF9GVU5DIHN0cmZ0aW1lX1lZWVlNTURESEhNTVNTKAorICAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyBzdGF0aWMgdm9pZCBnZXRfbW9ubyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKy0JaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19NT05PVE9OSUMsIHRzKSkKKysjaWYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCisrIAlpZiAoc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX01PTk9UT05JQywgdHMpKQorKyNlbGlmIF9fVElNRVNJWkUgPT0gNjQKKysJaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX01PTk9UT05JQywgdHMpKQorKyNlbHNlCisrIyBlcnJvciAiV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYXJjaGl0ZWN0dXJlcyB3aXRob3V0ICIgXAorKwkidGhlIF9fTlJfY2xvY2tfZ2V0dGltZSBzeXNjYWxsIGFuZCAzMi1iaXQgdGltZV90IgorKyNlbmRpZgorIAkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoImNsb2NrX2dldHRpbWUoTU9OT1RPTklDKSBmYWlsZWQiKTsKKyB9CisgdW5zaWduZWQgbG9uZyBsb25nIEZBU1RfRlVOQyBtb25vdG9uaWNfbnModm9pZCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDMtcnVuc3YtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAzLXJ1bnN2LVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NjA1NzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAzLXJ1bnN2LVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gOGM3NDE5NjQ5ZDZlNmZkYThmYTdkMGU4NjMwODRjNzhhYzcyODYyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK0RhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTA6NTQ6MTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHJ1bnN2OiBVc2UgNjQgcHJlZml4IHN5c2NhbGwgaWYgd2UgaGF2ZSB0bworCitTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIG5vIGxvbmdlciBoYXZlIHRoZSAzMi1iaXQgdGltZV90IHN5c2NhbGxzLgorSW5zdGVhZCB0aGV5IGhhdmUgc3VmZml4ZWQgc3lzY2FsbHMgdGhhdCByZXR1cm5zIGEgNjQtYml0IHRpbWVfdC4gSWYKK3RoZSBhcmNoaXRlY3R1cmUgZG9lc24ndCBoYXZlIHRoZSBub24tc3VmZml4ZWQgc3lzY2FsbCBhbmQgaXMgdXNpbmcgYQorNjQtYml0IHRpbWVfdCBsZXQncyB1c2UgdGhlIHN1ZmZpeGVkIHN5c2NhbGwgaW5zdGVhZC4KKworVGhpcyBmaXhlcyBidWlsZCBpc3N1ZXMgd2hlbiBidWlsZGluZyBmb3IgUklTQy1WIDMyLWJpdCB3aXRoIDUuMSsga2VybmVsCitoZWFkZXJzLgorCitJZiBhbiBhcmNoaXRlY3R1cmUgb25seSBzdXBwb3J0cyB0aGUgc3VmZml4ZWQgc3lzY2FsbHMsIGJ1dCBpcyBzdGlsbAordXNpbmcgYSAzMi1iaXQgdGltZV90IHJlcG9ydCBhIGNvbXBpbGF0aW9uIGVycm9yLiBUaGlzIGF2b2lkcyB1cyBoYXZlIHRvCitkZWFsIHdpdGggY29udmVydGluZyBiZXR3ZWVuIDY0LWJpdCBhbmQgMzItYml0IHZhbHVlcy4gVGhlcmUgYXJlCitjdXJyZW50bHkgbm8gYXJjaGl0ZWN0dXJlcyB3aGVyZSB0aGlzIGlzIHRoZSBjYXNlLgorCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YWQyN2Q0NGViZTk1MDMzNTYxNmYzN2UzNjg2MzQ2OWRjMTgxYjQ1NV0KKy0tLQorIHJ1bml0L3J1bnN2LmMgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9ydW5pdC9ydW5zdi5jIGIvcnVuaXQvcnVuc3YuYworaW5kZXggY2NjNzYyZDc4Li43Mzc5MDliMGUgMTAwNjQ0CistLS0gYS9ydW5pdC9ydW5zdi5jCisrKysgYi9ydW5pdC9ydW5zdi5jCitAQCAtNTUsNyArNTUsMTQgQEAgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworIHN0YXRpYyB2b2lkIGdldHRpbWVvZmRheV9ucyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKysjaWYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCisgCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19SRUFMVElNRSwgdHMpOworKyNlbGlmIF9fVElNRVNJWkUgPT0gNjQKKysJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKysjZWxzZQorKyMgZXJyb3IgIldlIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFyY2hpdGVjdHVyZXMgd2l0aG91dCAiIFwKKysJInRoZSBfX05SX2Nsb2NrX2dldHRpbWUgc3lzY2FsbCBhbmQgMzItYml0IHRpbWVfdCIKKysjZW5kaWYKKyB9CisgI2Vsc2UKKyBzdGF0aWMgdm9pZCBnZXR0aW1lb2ZkYXlfbnMoc3RydWN0IHRpbWVzcGVjICp0cykKKy0tIAorMi4yMi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRiMWYyYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1yZXF1aXJlIGJ1c3lib3guaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5idXN5Ym94Lm5ldC9kb3dubG9hZHMvYnVzeWJveC0ke1BWfS50YXIuYnoyO25hbWU9dGFyYmFsbCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maW5kLXRvdWNoc2NyZWVuLnNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3JvbiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWh0dHBkIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BkIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQuc2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL3NpbXBsZS5zY3JpcHQgXAotICAgICAgICAgICBmaWxlOi8vaHdjbG9jay5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL21kZXYgXAotICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAotICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAotICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXAotICAgICAgICAgICBmaWxlOi8vZ2V0b3B0cy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly91bmljb2RlLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yY1MgXAotICAgICAgICAgICBmaWxlOi8vcmNLIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0c3VpdGUtY2hlY2stdXVkZWNvZGUtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHN1aXRlLXVzZS13d3cuZXhhbXBsZS5vcmctZm9yLXdnZXQtdGVzdC1jYXNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWR1LWwtd29ya3MtZml4LXRvLXVzZS0xNDUtaW5zdGVhZC1vZi0xNDQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJjZGJhNWQ0NDU4Zjk0NGNlZWM1Y2RjZjdjNDkxNGI2OSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjBlNDkyNTM5MmZkOWYzNzQzY2M1MTdlMDMxYjY4YjAxMmIyNGE2M2IwY2Y2YzFmZjAzY2NlN2JiMzg0NmNjOTkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJiMWQ1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMS5iYgpAQCAtMCwwICsxLDU1IEBACityZXF1aXJlIGJ1c3lib3guaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9idXN5Ym94Lm5ldC9kb3dubG9hZHMvYnVzeWJveC0ke1BWfS50YXIuYnoyO25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maW5kLXRvdWNoc2NyZWVuLnNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3JvbiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWh0dHBkIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BkIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQuc2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL3NpbXBsZS5zY3JpcHQgXAorICAgICAgICAgICBmaWxlOi8vaHdjbG9jay5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKKyAgICAgICAgICAgZmlsZTovL21kZXYgXAorICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAorICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKKyAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAorICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXAorICAgICAgICAgICBmaWxlOi8vZ2V0b3B0cy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCisgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCisgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly91bmljb2RlLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yY1MgXAorICAgICAgICAgICBmaWxlOi8vcmNLIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0c3VpdGUtY2hlY2stdXVkZWNvZGUtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHN1aXRlLXVzZS13d3cuZXhhbXBsZS5vcmctZm9yLXdnZXQtdGVzdC1jYXNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWR1LWwtd29ya3MtZml4LXRvLXVzZS0xNDUtaW5zdGVhZC1vZi0xNDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kYXRlLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGltZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJ1bnN2LVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXN5c2NhbGwtd3JhcHBlcnMtYXJvdW5kLWNsb2NrX2dldHRpbWUtY2xvc2VzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1zdGltZS1mdW5jdGlvbi1jYWxscy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI3MDkxM2VkYWYyMjYzYTE1NzM5M2FmMDc1NjVjMTdmMCIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImQwZjk0MGE3MmY2NDg5NDNjMWYyMjExZTBlMzExNzM4N2MzMWQ3NjUxMzdkOTJiZDgyODRhM2ZiOTc1MmE5OTgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvaW5pdHRhYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiCmluZGV4IDJiYzgzMWMuLmU4ZWMyYWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiCkBAIC04LDExICs4LDE3IEBACiA6OnN5c2luaXQ6L2Jpbi9ta2RpciAtcCAvZGV2L3B0cwogOjpzeXNpbml0Oi9iaW4vbW91bnQgLXQgZGV2cHRzIGRldnB0cyAvZGV2L3B0cwogOjpzeXNpbml0Oi9iaW4vbW91bnQgLWEKLQorOjpzeXNpbml0Oi9zYmluL3N3YXBvbiAtYQorbnVsbDo6c3lzaW5pdDovYmluL2xuIC1zZiAvcHJvYy9zZWxmL2ZkIC9kZXYvZmQKK251bGw6OnN5c2luaXQ6L2Jpbi9sbiAtc2YgL3Byb2Mvc2VsZi9mZC8wIC9kZXYvc3RkaW4KK251bGw6OnN5c2luaXQ6L2Jpbi9sbiAtc2YgL3Byb2Mvc2VsZi9mZC8xIC9kZXYvc3Rkb3V0CitudWxsOjpzeXNpbml0Oi9iaW4vbG4gLXNmIC9wcm9jL3NlbGYvZmQvMiAvZGV2L3N0ZGVycgorIyBzZXQgaG9zdG5hbWUKK251bGw6OnN5c2luaXQ6L2Jpbi9idXN5Ym94IGhvc3RuYW1lIC1GIC9ldGMvaG9zdG5hbWUKIDo6c3lzaW5pdDovZXRjL2luaXQuZC9yY1MKIAogIyBTdHVmZiB0byBkbyBiZWZvcmUgcmVib290aW5nCi06OmN0cmxhbHRkZWw6L3NiaW4vcmVib290CisjOjpjdHJsYWx0ZGVsOi9zYmluL3JlYm9vdAogOjpzaHV0ZG93bjovZXRjL2luaXQuZC9yY0sKIDo6c2h1dGRvd246L3NiaW4vc3dhcG9mZiAtYQogOjpzaHV0ZG93bjovYmluL3Vtb3VudCAtYSAtcgpAQCAtMjAsNSArMjYsMyBAQAogIyBTdHVmZiB0byBkbyB3aGVuIHJlc3RhcnRpbmcgdGhlIGluaXQgcHJvY2VzcwogOjpyZXN0YXJ0Oi9zYmluL2luaXQKIAotIyBzZXQgaG9zdG5hbWUKLW51bGw6OnN5c2luaXQ6L2Jpbi9idXN5Ym94IGhvc3RuYW1lIC1GIC9ldGMvaG9zdG5hbWUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvcnVuLXB0ZXN0CmluZGV4IGIxOWU1YjUuLjc2ODczYzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL3J1bi1wdGVzdApAQCAtNiw0ICs2LDQgQEAKIGV4cG9ydCBTS0lQX0tOT1dOX0JVR1M9MQogCiBjZCB0ZXN0c3VpdGUgfHwgZXhpdCAxCi0uL3J1bnRlc3QgLXYgfCBzZWQgLXIgJ3MvXihTS0lQUEVEfFVOVEVTVEVEKTovU0tJUDovJworTEFORz1DLlVURi04IC4vcnVudGVzdCAtdiB8IHNlZCAtciAncy9eKFNLSVBQRUR8VU5URVNURUQpOi9TS0lQOi8nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvc2ltcGxlLnNjcmlwdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CmluZGV4IDZlZDAyOTMuLjAxMzQ0MDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CkBAIC0yOCw3ICsyOCw3IEBACiAJCWZpCiAJCWlmICEgcm9vdF9pc19uZnMgOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbICRoYXZlX2Jpbl9pcCAtZXEgMSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCBhZGRyIGZsdXNoIGRldiAkaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCAtNCBhZGRyIGZsdXNoIGRldiAkaW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCBsaW5rIHNldCBkZXYgJGludGVyZmFjZSB1cAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvaWZjb25maWcgJGludGVyZmFjZSAwLjAuMC4wCkBAIC01OSw3ICs1OSw3IEBACiAJCQltZXRyaWM9MTAKIAkJCWZvciBpIGluICRyb3V0ZXIgOyBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbICRoYXZlX2Jpbl9pcCAtZXEgMSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1NCSU5fRElSL2lwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAkaSBtZXRyaWMgJG1ldHJpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJGkgbWV0cmljICRtZXRyaWMgZGV2ICRpbnRlcmZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9yb3V0ZSBhZGQgZGVmYXVsdCBndyAkaSBkZXYgJGludGVyZmFjZSBtZXRyaWMgJG1ldHJpYyAyPi9kZXYvbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1Db3Zlci10aGUtZWxzZS13aXRoLV9fR0xJQkNfXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZTRiZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1Db3Zlci10aGUtZWxzZS13aXRoLV9fR0xJQkNfXy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gYjZhNTliMDVmMWZhNTE0YzZiMzg3Yzk1NDRiZDYzYjFiZmNmMmVlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEzIEphbiAyMDE2IDA1OjM4OjI5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIENvdmVyIHRoZSBlbHNlIHdpdGggX19HTElCQ19fCi0KLUZpeGVzIGJ1aWxkIGVycm9ycyBvbiBtdXNsL3g4NgotCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9hc20vdGVybWlvcy5oOjE6MCwKLXwgICAgICAgICAgICAgICAgICBmcm9tCi0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaDo1LAotfCAgICAgICAgICAgICAgICAgIGZyb20KLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2NvbnNvbGUtdG9vbHMvMC4zLjItcjgvY29uc29sZS10b29scy0wLjMuMi92dHRvb2xzL3Jlc2l6ZWNvbnMuYzo4NjoKLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvdGVybWlvcy5oOjE0Ojg6Ci1lcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3Qgd2luc2l6ZScKLXwgIHN0cnVjdCB3aW5zaXplIHsKLXwgICAgICAgICBeCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaDo3OjAsCi18ICAgICAgICAgICAgICAgICAgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvY29uc29sZS10b29scy8wLjMuMi1yOC9jb25zb2xlLXRvb2xzLTAuMy4yL3Z0dG9vbHMvcmVzaXplY29ucy5jOjgxOgotfAotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9iaXRzL2lvY3RsLmg6OTA6ODoKLW5vdGU6IG9yaWdpbmFsbHkgZGVmaW5lZCBoZXJlCi18ICBzdHJ1Y3Qgd2luc2l6ZSB7Ci18ICAgICAgICAgXgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHZ0dG9vbHMvcmVzaXplY29ucy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdnR0b29scy9yZXNpemVjb25zLmMgYi92dHRvb2xzL3Jlc2l6ZWNvbnMuYwotaW5kZXggZjBhNzA1NS4uZTg3NTNiMSAxMDA2NDQKLS0tLSBhL3Z0dG9vbHMvcmVzaXplY29ucy5jCi0rKysgYi92dHRvb2xzL3Jlc2l6ZWNvbnMuYwotQEAgLTgxLDcgKzgxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2lmIChfX0dOVV9MSUJSQVJZX18gPj0gNikKLSAjIGluY2x1ZGUgPHN5cy9wZXJtLmg+Ci0tI2Vsc2UKLSsjZWxpZiBkZWZpbmVkIF9fR0xJQkNfXwotICMgaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjIGluY2x1ZGUgPGxpbnV4L3Rlcm1pb3MuaD4KLSAjZW5kaWYKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTcyZWM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS1jb21waWxhdGlvbi1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVN1YmplY3Q6IEZpeCAnZm9ybWF0LXNlY3VyaXR5JyBjb21waWxhdGlvbiBlcnJvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGtiZHRvb2xzL2tiZF9tb2RlLmMgICAgfCA2ICsrKy0tLQotIGtiZHRvb2xzL3NldG1ldGFtb2RlLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rYmR0b29scy9rYmRfbW9kZS5jIGIva2JkdG9vbHMva2JkX21vZGUuYwotaW5kZXggMDJkY2EzOC4uOGRiY2QzOSAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2tiZF9tb2RlLmMKLSsrKyBiL2tiZHRvb2xzL2tiZF9tb2RlLmMKLUBAIC0xMjAsNyArMTIwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAvKiByZXBvcnQgbW9kZSAqLwotICAgICAgIGlmIChpb2N0bChmZCwgS0RHS0JNT0RFLCAmbW9kZSkpIAotIAl7Ci0tCSAgZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsJICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvZ25hbWUpOwotIAkgIHBlcnJvcihfKCI6IGVycm9yIHJlYWRpbmcga2V5Ym9hcmQgbW9kZVxuIikpOwotIAkgIGV4aXQoMSk7Ci0gCX0KLUBAIC0xNTEsNyArMTUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAga2JkX3JlcC5wZXJpb2QgPSByYXRlOwotICAgICBpZiAoaW9jdGwoZmQsIEtES0JEUkVQLCAma2JkX3JlcCkpCi0gICAgICAgewotLQlmcHJpbnRmKHN0ZGVyciwgcHJvZ25hbWUpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvZ25hbWUpOwotIAlwZXJyb3IoXygiOiBlcnJvciBzZXR0aW5nIGtleWJvYXJkIHJlcGVhdCBtb2RlXG4iKSk7Ci0gCWV4aXQoMSk7Ci0gICAgICAgfQotQEAgLTE2MCw3ICsxNjAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgCi0gICBpZiAoaW9jdGwoZmQsIEtEU0tCTU9ERSwgbW9kZSkpCi0gICAgIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwgcHJvZ25hbWUpOwotKyAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBwcm9nbmFtZSk7Ci0gICAgICAgcGVycm9yKF8oIjogZXJyb3Igc2V0dGluZyBrZXlib2FyZCBtb2RlXG4iKSk7Ci0gICAgICAgZXhpdCgxKTsKLSAgICAgfQotZGlmZiAtLWdpdCBhL2tiZHRvb2xzL3NldG1ldGFtb2RlLmMgYi9rYmR0b29scy9zZXRtZXRhbW9kZS5jCi1pbmRleCA1YmVkOTQ1Li4wYmE3Njc2IDEwMDY0NAotLS0tIGEva2JkdG9vbHMvc2V0bWV0YW1vZGUuYwotKysrIGIva2JkdG9vbHMvc2V0bWV0YW1vZGUuYwotQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCByZXBvcnQoaW50IG1ldGEpCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcyA9IE5fKCJTdHJhbmdlIG1vZGUgZm9yIE1ldGEga2V5P1xuIik7Ci0gICAgIH0KLS0gIHByaW50ZihfKHMpKTsKLSsgIHByaW50ZigiJXMiLCBfKHMpKTsKLSB9Ci0gCi0gc3RydWN0IG1ldGEgCi0tLSAKLTIuOC4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEta2JkdG9vbHMtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9jaGFyLWFuZC11X3Nob3J0LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEta2JkdG9vbHMtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9jaGFyLWFuZC11X3Nob3J0LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRiNWIwNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi8wMDAxLWtiZHRvb2xzLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfY2hhci1hbmQtdV9zaG9ydC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDBmZDVkZGE1MWQ2OGUxZWMyYTg3ZTI3YjVlZDBkZmYzNTAzYjQ2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAwODoxMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBrYmR0b29sczogSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdV9jaGFyIGFuZCB1X3Nob3J0Ci0gZGVmaW5pdGlvbgotCi1vbiBtdXNsIHRoaXMgZ2V0cyBleHBvc2VkIHNpbmNlIHN5cy90eXBlcy5oIGlzIG5vdAotaW5jbHVkZWQgdmlhIHNvbWUgb3RoZXIgaW5kaXJlY3QgaW5jbHVzaW9uIGFzIGlzIHRoZSBjYXNlIHdpdGggZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBrYmR0b29scy9kdW1wa2V5cy5jIHwgMSArCi0ga2JkdG9vbHMvbG9hZGtleXMueSB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9rYmR0b29scy9kdW1wa2V5cy5jIGIva2JkdG9vbHMvZHVtcGtleXMuYwotaW5kZXggNjE1OWQ0OS4uYzE5ZmIyMSAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2R1bXBrZXlzLmMKLSsrKyBiL2tiZHRvb2xzL2R1bXBrZXlzLmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN5c2V4aXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgva2QuaD4KLSAjaW5jbHVkZSA8bGludXgva2V5Ym9hcmQuaD4KLWRpZmYgLS1naXQgYS9rYmR0b29scy9sb2Fka2V5cy55IGIva2JkdG9vbHMvbG9hZGtleXMueQotaW5kZXggYjZhOGUwMS4uNDQ2OGY3NyAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2xvYWRrZXlzLnkKLSsrKyBiL2tiZHRvb2xzL2xvYWRrZXlzLnkKLUBAIC03MSw2ICs3MSw3IEBACi0gI2luY2x1ZGUgPGxpbnV4L2tkLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2tleWJvYXJkLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3lzZXhpdHMuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL01ha2V2YXJzIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZXZhcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjkyYWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZXZhcnMKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIE1ha2VmaWxlIHZhcmlhYmxlcyBmb3IgUE8gZGlyZWN0b3J5IGluIGFueSBwYWNrYWdlIHVzaW5nIEdOVSBnZXR0ZXh0LgotCi0jIFVzdWFsbHkgdGhlIG1lc3NhZ2UgZG9tYWluIGlzIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCi1ET01BSU4gPSAkKFBBQ0tBR0UpCi0KLSMgVGhlc2UgdHdvIHZhcmlhYmxlcyBkZXBlbmQgb24gdGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5Lgotc3ViZGlyID0gcG8KLXRvcF9idWlsZGRpciA9IC4uCi0KLSMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIHhnZXR0ZXh0LgotWEdFVFRFWFRfT1BUSU9OUyA9IC0ta2V5d29yZD1fIC0ta2V5d29yZD1OXwotCi0jIFRoaXMgaXMgdGhlIGNvcHlyaWdodCBob2xkZXIgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUKLSMgJChET01BSU4pLnBvdCBmaWxlLiAgU2V0IHRoaXMgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHN1cnJvdW5kaW5nCi0jIHBhY2thZ2UuICAoTm90ZSB0aGF0IHRoZSBtc2dzdHIgc3RyaW5ncywgZXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncwotIyBzb3VyY2VzLCBiZWxvbmcgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHBhY2thZ2UuKSAgVHJhbnNsYXRvcnMgYXJlCi0jIGV4cGVjdGVkIHRvIHRyYW5zZmVyIHRoZSBjb3B5cmlnaHQgZm9yIHRoZWlyIHRyYW5zbGF0aW9ucyB0byB0aGlzIHBlcnNvbgotIyBvciBlbnRpdHksIG9yIHRvIGRpc2NsYWltIHRoZWlyIGNvcHlyaWdodC4gIFRoZSBlbXB0eSBzdHJpbmcgc3RhbmRzIGZvcgotIyB0aGUgcHVibGljIGRvbWFpbjsgaW4gdGhpcyBjYXNlIHRoZSB0cmFuc2xhdG9ycyBhcmUgZXhwZWN0ZWQgdG8gZGlzY2xhaW0KLSMgdGhlaXIgY29weXJpZ2h0LgotQ09QWVJJR0hUX0hPTERFUiA9IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgaXMgdGhlIGVtYWlsIGFkZHJlc3Mgb3IgVVJMIHRvIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBzaGFsbCByZXBvcnQKLSMgYnVncyBpbiB0aGUgdW50cmFuc2xhdGVkIHN0cmluZ3M6Ci0jIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCi0jICAgaW4gdGhlIEdOVSBnZXR0ZXh0IGRvY3VtZW50YXRpb24sIHNlY3Rpb24gJ1ByZXBhcmluZyBTdHJpbmdzJy4KLSMgLSBTdHJpbmdzIHdoaWNoIHVzZSB1bmNsZWFyIHRlcm1zIG9yIHJlcXVpcmUgYWRkaXRpb25hbCBjb250ZXh0IHRvIGJlCi0jICAgdW5kZXJzdG9vZC4KLSMgLSBTdHJpbmdzIHdoaWNoIG1ha2UgaW52YWxpZCBhc3N1bXB0aW9ucyBhYm91dCBub3RhdGlvbiBvZiBkYXRlLCB0aW1lIG9yCi0jICAgbW9uZXkuCi0jIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KLSMgLSBJbmNvcnJlY3QgRW5nbGlzaCBzcGVsbGluZy4KLSMgLSBJbmNvcnJlY3QgZm9ybWF0dGluZy4KLSMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycwotIyBjYW4gd3JpdGUgdG8gd2l0aG91dCBiZWluZyBzdWJzY3JpYmVkLCBvciB0aGUgVVJMIG9mIGEgd2ViIHBhZ2UgdGhyb3VnaAotIyB3aGljaCB0aGUgdHJhbnNsYXRvcnMgY2FuIGNvbnRhY3QgeW91LgotTVNHSURfQlVHU19BRERSRVNTID0KLQotIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGxvY2FsZSBjYXRlZ29yaWVzLCBiZXlvbmQgTENfTUVTU0FHRVMsIGZvciB3aGljaCB0aGUKLSMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KLUVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTID0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvZGVwYWdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29kZXBhZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODcwMTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29kZXBhZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIwotIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cubW4tbG9naXN0aWsuZGUvdW5zdXBwb3J0ZWQvcHhhMjUwL3BhdGNoZXIKLSMKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIvY29udHJpYi9jb2RlcGFnZS5jfmNvZGVwYWdlCi0rKysgY29uc29sZS10b29scy0wLjMuMi9jb250cmliL2NvZGVwYWdlLmMKLUBAIC0yMjksNyArMjI5LDcgQEAKLSAJICByZXR1cm4gMDsKLSAKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXAotLVdhcm5pbmc6IENQIGZvcm1hdCBpcyBhIGhhY2shXG4KLStXYXJuaW5nOiBDUCBmb3JtYXQgaXMgYSBoYWNrIVxuXAotICAgICAgICAgIFRoZSBmaWxlcyBwcm9kdWNlZCBtYXkgb3IgbWF5IG5vdCBiZSB1c2FibGUhXG4iKTsKLSAKLSAJc3ByaW50ZihvdXRmaWxlLCAiJWQuY3AiLCBDUEVudHJ5SGVhZGVyLmNvZGVwYWdlKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb21waWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTNmNTExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvc2hvd2tleS5jfmNvbXBpbGUJMTk5OS0wOC0yNSAxNzoyMDowOC4wMDAwMDAwMDAgLTA0MDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL3Nob3drZXkuYwkyMDA0LTA1LTA5IDAzOjAzOjIzLjAwMDAwMDAwMCAtMDQwMAotQEAgLTI2NCw3ICsyNjQsNiBAQAotIAkgIGJyZWFrOwotIAljYXNlIGNtZF9rZXltYXA6Ci0gCSAgcHJpbnRmKCIpXG4iKTsKLS0JZGVmYXVsdDoKLSAJfQotICAgICB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YzEwMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2NvbmZpZ3VyZS5pbn5jb25maWd1cmUKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2NvbmZpZ3VyZS5pbgotQEAgLTIsMTMgKzIsMTQgQEAKLSBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSAKLSAjIEluaXRpYWxpemUKLS1BQ19JTklUKGtiZHRvb2xzL2xvYWRrZXlzLnkpCi0rQUNfSU5JVAotK0FDX0NPTkZJR19TUkNESVIoW2tiZHRvb2xzL2xvYWRrZXlzLnldKQotIAotIGRlZmluZShjdF91bmljb2RlZGF0YV9kZWZhdWx0LC91c3Ivc2hhcmUvdW5pZGF0YS9Vbmljb2RlRGF0YS0yLnR4dCkKLSBjdF9sb2NhbGRhdGFkaXJfZGVmYXVsdD0vdXNyL2xvY2FsL3NoYXJlICAgICAjIGlmZiAtLWVuYWJsZS1sb2NhbGRhdGFkaXIgd2l0aG91dCBzcGVjaWZpYyBkaXIKLSAKLSAjQUNfQ09ORklHX0FVWF9ESVIoYXV0b2NvbmYpCi0tQUNfQ0FOT05JQ0FMX1NZU1RFTQotK0FDX0NBTk9OSUNBTF9UQVJHRVQoW10pCi0gQU1fSU5JVF9BVVRPTUFLRShjb25zb2xlLXRvb2xzLCAwLjMuMikKLSAKLSAjIERlZmF1bHRzCi1AQCAtMjUsNyArMjYsNiBAQAotICMgaTE4biBzdHVmZgotIEFMTF9MSU5HVUFTPSJjcyBkZSBydSBnYSBmciIKLSBBTV9HTlVfR0VUVEVYVAotLUFDX09VVFBVVF9DT01NQU5EUyhbc2VkIC1lICIvUE9URklMRVMgPS9yIHBvL1BPVEZJTEVTIiBwby9NYWtlZmlsZS5pbiA+IHBvL01ha2VmaWxlXSkKLSAKLSBBQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCAiL3Vzci9zaGFyZS9sb2NhbGUiKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2ZpeC1saWJjb25zb2xlLWxpbmtpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNjFlYjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZpeCB0aGUgZm9sbG93aW5nIGVycm9yIGRldGVjdGVkIHdpdGggaTU4Ni1wb2t5bWxsaWIzMi1saW51eC1nY2MgKHRoZQotbXVsdGlsaWIgeDg2LTY0IGxpYjMyIGNvbXBpbGVyKToKLSAgICAuLi9saWIvY3R1dGlscy8ubGlicy9saWJjdHV0aWxzLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRfa2VybmVsX3NmbScKLSAgICBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotSXQgc2VlbXMgdGhhdCBsaWJjdHV0aWxzLnNvICh0aGUgbGlicmFyeSB0aGF0IHVzZXMgZ2V0X2tlcm5lbF9zZm0pIG11c3QKLWJlIHN0YXRlZCBiZWZvcmUgbGliY29uc29sZS5zbyAodGhlIGxpYnJhcnkgdGhhdCBleHBvcnRzIHRoZSBmdW5jdGlvbikgd2hlbgotdXNpbmcgbXVsdGlsaWIgZ2NjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1JbmRleDogY29uc29sZS10b29scy0wLjMuMi9mb250ZmlsZXRvb2xzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY29uc29sZS10b29scy0wLjMuMi5vcmlnL2ZvbnRmaWxldG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2ZvbnRmaWxldG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0xMCw1ICsxMCw1IEBAIEVYVFJBX0RJU1QgPSBmb250czJ2aXJmb250LmMgdmlyZm9udC5oCi0gCi0gIyBsaWJjb25zb2xlIGlzIG5lZWRlZCBieSBjdHV0aWxzCi0gTERBREQgPSAuLi9saWIvY3Rsb2NhbC9saWJjdGxvY2FsLmEgLi4vbGliL2Nmb250L2xpYmNmb250LmxhIFwKLS0JLi4vbGliL2NvbnNvbGUvbGliY29uc29sZS5sYSBcCi0tCS4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgLi4vbGliL2dlbmVyaWMvbGliY3RnZW5lcmljLmxhCi0rCS4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIvdnR0b29scy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIub3JpZy92dHRvb2xzL01ha2VmaWxlLmFtCi0rKysgY29uc29sZS10b29scy0wLjMuMi92dHRvb2xzL01ha2VmaWxlLmFtCi1AQCAtNyw5ICs3LDkgQEAgYmluX1BST0dSQU1TID0gY2h2dCBkZWFsbG9jdnQgd3JpdGV2dCBmZwotIAl2Y3N0aW1lIHZ0LWlzLVVURjggb3BlbnZ0IEBSRVNJWkVDT05TQAotIEVYVFJBX1BST0dSQU1TID0gcmVzaXplY29ucwotIAotLUxEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgXAotK0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotIAkuLi9saWIvY2ZvbnQvbGliY2ZvbnQubGEgXAotLQkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotIAotIHZjc3RpbWVfTERBREQgPSAuLi9saWIvY3Rsb2NhbC9saWJjdGxvY2FsLmEKLSBzY3JlZW5kdW1wX0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hCi1JbmRleDogY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIub3JpZy9rYmR0b29scy9NYWtlZmlsZS5hbQotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0xNSw5ICsxNSw5IEBAIEVYVFJBX1BST0dSQU1TID0gZ2V0a2V5Y29kZXMgc2V0a2V5Y29kZXMKLSBsb2Fka2V5c19TT1VSQ0VTID0gbG9hZGtleXMueSBhbmFseXplLmwKLSAKLSBZRkxBR1MgPSAtZAotLUxEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgXAotK0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotIAkuLi9saWIvY2ZvbnQvbGliY2ZvbnQubGEgXAotLQkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotIAotIGxvYWRrZXlzX0xEQUREID0gJChMREFERCkgQExFWExJQkAKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2tiZHJhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9rYmRyYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzcwYmU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2tiZHJhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1QYXRjaCBmcm9tIE1hdHRoaWFzIEdvZWJsIDxvZUBtLmdvZWJsLm5ldD4KLUFkZGVkIHZpYSBPRSBidWd0cmFja2VyOiBidWcgIzQ3OAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMva2JkX21vZGUuYy5vcmlnCi0rKysgY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9rYmRfbW9kZS5jCi1AQCAtMjksMTEgKzI5LDE2IEBACi0gICBPUFQoIi11IC0tdW5pY29kZSAgIiwgXygiVVRGLTggbW9kZSAoVU5JQ09ERSkiKSk7Ci0gICBPUFQoIi1zIC0tc2NhbmNvZGUgIiwgXygic2NhbmNvZGUgbW9kZSAoUkFXKSIpKTsKLSAgIE9QVCgiICAgLS1tb2RlPXs4Yml0LGtleWNvZGUsdW5pY29kZSxzY2FuY29kZX0gIiwgXygic2V0IG1vZGUiKSk7Ci0rICBPUFQoIi1yIC0tcmF0ZT1SQVRFICIsIF8oInNldCByZXBlYXQgcmF0ZSAoZGVmYXVsdDogMzMpIikpOwotKyAgT1BUKCItZCAtLWRlbGF5PURFTEFZICIsIF8oInNldCByZXBlYXQgZGVsYXkgKGRlZmF1bHQ6IDI1MCkiKSk7Ci0gCi0gICBPUFQoIi1oIC0taGVscCAgICAgIiwgSEVMUERFU0MpOwotICAgT1BUKCItViAtLXZlcnNpb24gICIsIFZFUlNJT05ERVNDKTsKLSB9Ci0gCi0raW50IHJhdGU9LTE7Ci0raW50IGRlbGF5PS0xOwotKwotIHN0YXRpYyBpbnQgcGFyc2VfY21kbGluZSAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci0gICAgIGludCBtb2RlID0gLTE7Ci1AQCAtNDYsMTEgKzUxLDEzIEBACi0gICAgICAgeyAibW9kZSIgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdtJyB9LAotICAgICAgIHsgInNjYW5jb2RlIiAsIG5vX2FyZ3VtZW50LCBOVUxMLCAncycgfSwKLSAgICAgICB7ICJ1bmljb2RlIiAgLCBub19hcmd1bWVudCwgTlVMTCwgJ3UnIH0sCi0rICAgICAgeyAicmF0ZSIgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdyJyB9LAotKyAgICAgIHsgImRlbGF5IiAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnZCcgfSwKLSAgICAgICB7IE5VTEwsIDAsIE5VTEwsIDAgfQotICAgICB9OwotICAgICBpbnQgYzsKLSAKLS0gICAgd2hpbGUgKCAoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiVmhha3N1IiwgbG9uZ19vcHRzLCBOVUxMKSkgIT0gRU9GKSAKLSsgICAgd2hpbGUgKCAoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiVmhha3N1cjpkOiIsIGxvbmdfb3B0cywgTlVMTCkpICE9IEVPRikgCi0gICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgY2FzZSAnaCc6Ci0gCXVzYWdlICgpOwotQEAgLTU4LDYgKzY1LDE0IEBACi0gICAgICAgY2FzZSAnVic6Ci0gCXZlcnNpb24gKCk7Ci0gCWV4aXQoMCk7Ci0rICAgICAgY2FzZSAncic6Ci0rCXJhdGUgPSBhdG9pKG9wdGFyZyk7Ci0rCW1vZGUgPSAtMjsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAnZCc6Ci0rCWRlbGF5ID0gYXRvaShvcHRhcmcpOwotKwltb2RlID0gLTI7Ci0rCWJyZWFrOwotICAgICAgIGNhc2UgJ2EnOgotIAltb2RlID0gS19YTEFURTsKLSAJYnJlYWs7Ci1AQCAtMTI5LDYgKzE0NCwyMCBAQAotICAgICAgIGV4aXQoMCk7Ci0gICAgIH0KLSAgIAotKyAgaWYgKCByYXRlICE9IC0xIHx8IGRlbGF5ICE9IC0xICkKLSsgICAgewotKyAgICBzdHJ1Y3Qga2JkX3JlcGVhdCBrYmRfcmVwOwotKyAgICBrYmRfcmVwLmRlbGF5ID0gZGVsYXk7Ci0rICAgIGtiZF9yZXAucGVyaW9kID0gcmF0ZTsKLSsgICAgaWYgKGlvY3RsKGZkLCBLREtCRFJFUCwgJmtiZF9yZXApKQotKyAgICAgIHsKLSsJZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsJcGVycm9yKF8oIjogZXJyb3Igc2V0dGluZyBrZXlib2FyZCByZXBlYXQgbW9kZVxuIikpOwotKwlleGl0KDEpOwotKyAgICAgIH0KLSsgICAgaWYobW9kZT09LTIpIGV4aXQoMCk7Ci0rICAgIH0KLSsgIAotICAgaWYgKGlvY3RsKGZkLCBLRFNLQk1PREUsIG1vZGUpKQotICAgICB7Ci0gICAgICAgZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2xjbWVzc2FnZS5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2xjbWVzc2FnZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkNDdhOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9sY21lc3NhZ2UubTQKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2NhbGUuaD4uCi0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LgotIwotIyBUaGlzIGZpbGUgY2FuIGJlIGNvcGllZCBhbmQgdXNlZCBmcmVlbHkgd2l0aG91dCByZXN0cmljdGlvbnMuICBJdCBjYW4KLSMgYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQKLSMgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQgZnVuY3Rpb25hbGl0eS4KLSMgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotIyBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLSMgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0jIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotCi0jIHNlcmlhbCAyCi0KLUFDX0RFRlVOKFtBTV9MQ19NRVNTQUdFU10sCi0gIFtpZiB0ZXN0ICRhY19jdl9oZWFkZXJfbG9jYWxlX2ggPSB5ZXM7IHRoZW4KLSAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIExDX01FU1NBR0VTXSwgYW1fY3ZfdmFsX0xDX01FU1NBR0VTLAotICAgICAgW0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bG9jYWxlLmg+XSwgW3JldHVybiBMQ19NRVNTQUdFU10sCi0gICAgICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcywgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPW5vKV0pCi0gICAgaWYgdGVzdCAkYW1fY3ZfdmFsX0xDX01FU1NBR0VTID0geWVzOyB0aGVuCi0gICAgICBBQ19ERUZJTkUoSEFWRV9MQ19NRVNTQUdFUywgMSwKLSAgICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCi0gICAgZmkKLSAgZmldKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm8tZGVwLW9uLWxpYmZsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm8tZGVwLW9uLWxpYmZsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjczNWE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL25vLWRlcC1vbi1saWJmbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLU5vIHJlYXNvbiB0byBsaW5rIHdpdGggbGliZmwgc2luY2UgJ2xvYWRrZXlzJyBpbXBsZW1lbnRzCi1pdHMgb3duIHl5d3JhcCgpL3l5bGV4KCkgZnVuY3Rpb25zLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEphY29iIEtyb29uIDxqYWNvYi5rcm9vbkBtaWtyb2RpZGFrdC5zZT4KLQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcva2JkdG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL01ha2VmaWxlLmFtCi1AQCAtMTksOCArMTksNiBAQCBMREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYSAuLi9sCi0gCS4uL2xpYi9jZm9udC9saWJjZm9udC5sYSBcCi0gCS4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgLi4vbGliL2dlbmVyaWMvbGliY3RnZW5lcmljLmxhCi0gCi0tbG9hZGtleXNfTERBREQgPSAkKExEQUREKSBATEVYTElCQAotLQotIGJpbl9TQ1JJUFRTID0gbWtfbW9kbWFwCi0gCi0gbm9pbnN0X0hFQURFUlMgPSBsb2Fka2V5cy5oCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9ub2RvY3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9ub2RvY3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZDYwOTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm9kb2NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIGRvY3MgbmVlZCB0b29scyB3ZSBkb24ndCBoYXZlIHRvIGJ1aWxkIHNvIGRpc2FibGUgdGhlbS4KLQotQWxzbyByZW1vdmUgaW50bCBzaW5jZSB0aGUgTWFrZWZpbGUgZG9lc24ndCB3b3JrIHdpdGggMy44MiBhbmQgd2UKLWRvbid0IHdhbnQgdG8gYnVpbGQgbGliaW50bCBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVJQIDIwMTIvMTAvMTcKLQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcvTWFrZWZpbGUuYW0JMTk5OS0wNC0xNSAwMTozMzoyNC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL01ha2VmaWxlLmFtCTIwMTItMTAtMTcgMTE6NDg6MTQuMTA3MDY5MTQ1ICswMDAwCi1AQCAtMSw3ICsxLDcgQEAKLSAjIC0qLSBtYWtlZmlsZSAtKi0KLSBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotLVNVQkRJUlMgPSBsaWIgZm9udGZpbGV0b29scyB2dHRvb2xzIGtiZHRvb2xzIHNjcmVlbmZvbnR0b29scyBjb250cmliIGRvYyBcCi0tCWNvbXBhdCBpbmNsdWRlIGV4YW1wbGVzIHBvIGludGwKLStTVUJESVJTID0gbGliIGZvbnRmaWxldG9vbHMgdnR0b29scyBrYmR0b29scyBzY3JlZW5mb250dG9vbHMgY29udHJpYiBcCi0rCWNvbXBhdCBpbmNsdWRlIGV4YW1wbGVzIHBvCi0gCi0gRVhUUkFfRElTVCA9IEJVR1MgUkVMRUFTRSBDUkVESVRTIENPUFlJTkcua2JkIGxvY2FsLXNjcmlwdHMvKiBkZWJpYW4vKiAqLmxzbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvdWNsaWJjLWZpbGVuby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL3VjbGliYy1maWxlbm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOTUwNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvdWNsaWJjLWZpbGVuby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZpeGluZyB0aGUgbG9jYWxlIGlzc3VlcyBpc24ndCBlbm91Z2gsIGNvbnNvbGUtdG9vbHMgYWxzbyBkb2VzIGEgY291cGxlIG9mCi1vdGhlciBwcmV0dHkgc3R1cGlkIHRoaW5ncyAobGlrZSBGSUxFICpmOyBmLT5fZmlsZW5vIGluc3RlYWQgb2YgZmlsZW5vKGYpKSwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2xpYi9jZm9udC9mb250c3RydWN0LmMuYXJrCTIwMDUtMDUtMjIgMTk6MTI6MzguMDAwMDAwMDAwICswMDAwCi0rKysgY29uc29sZS10b29scy0wLjMuMi9saWIvY2ZvbnQvZm9udHN0cnVjdC5jCTIwMDUtMDUtMjIgMTk6MTM6MjMuMDAwMDAwMDAwICswMDAwCi1AQCAtNTAsOCArNTAsNyBAQAotICAgICogZ2V0IGZpbGVzaXplCi0gICAgKi8KLSAgIAotLSAgLyogRklYTUU6IHNob3VsZCBub3QgdXNlIF9maWxlbm8gISAqLwotLSAgaWYgKGZzdGF0KGZvbnRmaWxlLT5fZmlsZW5vLCAmc3RidWYpID09IC0xKQotKyAgaWYgKGZzdGF0KGZpbGVubyhmb250ZmlsZSksICZzdGJ1ZikgPT0gLTEpCi0gICAgIGdvdG8gcnNmX3JldHVybl9lcnJvcjsKLSAgIAotICAgaWYgKFNfSVNSRUcoc3RidWYuc3RfbW9kZSkpCi1AQCAtMjExLDggKzIxMCw3IEBACi0gICAgKiBnZXQgZmlsZXNpemUKLSAgICAqLwotICAgCi0tICAvKiBGSVhNRTogc2hvdWxkIG5vdCB1c2UgX2ZpbGVubyAhICovCi0tICBpZiAoZnN0YXQoZm9udGZpbGUtPl9maWxlbm8sICZzdGJ1ZikgPT0gLTEpCi0rICBpZiAoZnN0YXQoZmlsZW5vKGZvbnRmaWxlKSwgJnN0YnVmKSA9PSAtMSkKLSAgICAgZ290byByZmdfcmV0dXJuX2Vycm9yOwotICAgCi0gICBpZiAoU19JU1JFRyhzdGJ1Zi5zdF9tb2RlKSkKLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2xpYi9jb25zb2xlL2FjbS5jLmFyawkyMDA1LTA1LTIyIDE5OjE3OjE1LjAwMDAwMDAwMCArMDAwMAotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIvbGliL2NvbnNvbGUvYWNtLmMJMjAwNS0wNS0yMiAxOToxNzoyMy4wMDAwMDAwMDAgKzAwMDAKLUBAIC0zMCw3ICszMCw3IEBACi0gICBsY3RfYm9vbGVhbiBwYXJzZV9mYWlsZWQgPSBGYWxzZTsKLSAgIGxjdF9ib29sZWFuIGlzX3VuaWNvZGU7Ci0gCi0tICBpZiAoZnN0YXQoZnAtPl9maWxlbm8sICZzdGJ1ZikpIAotKyAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdGJ1ZikpIAotICAgICBwZXJyb3IoXygiQ2Fubm90IHN0YXQgQUNNIGZpbGUiKSksIGV4aXQoMSk7Ci0gCi0gICAvKiBmaXJzdCB0cnkgYSB3ZzE1LWNoYXJtYXAgKGdsaWJjKSBmaWxlIGZvcm1hdCAqLwotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIvaW5jbHVkZS9sY3QvbG9jYWwuaC5hcmsJMjAwNS0wNS0yMiAxOTowODo1NC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2luY2x1ZGUvbGN0L2xvY2FsLmgJMjAwNS0wNS0yMiAxOTowOToxMi4wMDAwMDAwMDAgKzAwMDAKLUBAIC04LDcgKzgsNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAKLS0jaWZkZWYgSEFWRV9MT0NBTEVfSAotKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX0gpICYmIGRlZmluZWQoSEFWRV9MSUJJTlRMX0gpCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gIyBkZWZpbmUgXyhTdHJpbmcpIGdldHRleHQgKFN0cmluZykKLSAjIGlmZGVmIGdldHRleHRfbm9vcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29sc18wLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE0NGZiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29sc18wLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiQWxsb3dzIHlvdSB0byBzZXQtdXAgYW5kIG1hbmlwdWxhdGUgdGhlIExpbnV4IGNvbnNvbGUiCi1ERVNDUklQVElPTiA9ICJQcm92aWRlcyB0b29scyB0aGF0IGVuYWJsZSB0aGUgc2V0LXVwIGFuZCBtYW5pcHVsYXRpb24gb2YgdGhlIGxpbnV4IGNvbnNvbGUgYW5kIGNvbnNvbGUtZm9udCBmaWxlcy4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5rYmQ7bWQ1PTliMmQ5MTUxMWQzZDgwZDRkMjBhYzZlNmIwMTM3ZmU5IgotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi1QUiA9ICJyOCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGN0L2NvbnNvbGUtdG9vbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvZGVwYWdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2tiZHJhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjLWZpbGVuby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub2RvY3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1kZXAtb24tbGliZmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1rYmR0b29scy1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci11X2NoYXItYW5kLXVfc2hvcnQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xjbWVzc2FnZS5tNCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtldmFycyIKLQotU1JDX1VSSVttZDVzdW1dID0gImJmMjE1NjRmYzM4YjNhZjg1M2VmNzI0YmFiZGRiYWNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlYTZiNDQxNjcyZGFjZDI1MTA3OWZjODVlZDMyMmUxOTYyODJlMGU2NmMxNjMwM2VjNjRjM2EyYjFjMTI2YzIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xjdC9maWxlcy9jb25zb2xlLXRvb2xzLWRldmVsLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9jb25zb2xlLXRvb2xzLWRldmVsLyg/UDxwdmVyPihcZFxkP1wuKStcZFxkPykvIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQ0ZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtRF9VU0VfVEVSTUlPUyAiCi0KLUFTTkVFREVEID0gIiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wICR7U30vbTQKLQljcCAke1dPUktESVJ9L2xjbWVzc2FnZS5tNCAke1N9L200LwotCXJtIC1mICR7U30vYWNpbmNsdWRlLm00Ci0JY3AgJHtXT1JLRElSfS9NYWtldmFycyAke1N9L3BvLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIzMCIKLQotYmluZGlyX3Byb2dzID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30iCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZDRhN2IzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3J1bi1wdGVzdApAQCAtMCwwICsxLDE3IEBACisjIS9iaW4vc2gKKworIyByZW1vdmUgYW55IHN0YWxlIGxvY2sgZmlsZXMgc28gdGhhdCB0aGUgY2FsbHMgdG8gZ3JvdXBhZGQvdXNlcmFkZCBkb24ndCBzdG9wCisjIHRoZSBwdGVzdCBpZiByZS11c2luZyB0aGUgc2FtZSBpbWFnZQorcm0gLXJmIC9ldGMvcGFzc3dkLmxvY2sgL2V0Yy9ncm91cC5sb2NrIC9ldGMvZ3NoYWRvdy5sb2NrCisKK0NPUkVVVElMU0xJQj1AbGliZGlyQC9jb3JldXRpbHMKK0xPRz0iJHtDT1JFVVRJTFNMSUJ9L3B0ZXN0L2NvcmV1dGlsc19wdGVzdF8kKGRhdGUgKyVZJW0lZC0lSCVNJVMpLmxvZyIKK1VTRVJOQU1FPSJ0ZXN0ZXIiCitncm91cGFkZCB1Z3JvdXAxCitncm91cGFkZCB1Z3JvdXAyCit1c2VyYWRkIC1HIHVncm91cDEsdWdyb3VwMiAkVVNFUk5BTUUgfHwgZWNobyAidXNlciAkVVNFUk5BTUUgYWxyZWFkeSBleGlzdHMiCisKK3N1IHRlc3RlciAtYyAiY2QgJHtDT1JFVVRJTFNMSUJ9L3B0ZXN0ICYmIG1ha2UgY2hlY2stVEVTVFMgdG9wX3NyY2Rpcj0uIHNyY2Rpcj0uIiAyPiYxIHwgdGVlIC1hICR7TE9HfQordXNlcmRlbCAkVVNFUk5BTUUgCitncm91cGRlbCB1Z3JvdXAxCitncm91cGRlbCB1Z3JvdXAyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCmluZGV4IDU3YjJjMWIuLjJiMTk2YjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiZmlsZTovL3N0cnRvZF9maXhfY2xhc2hfd2l0aF9zdHJ0b2xkLnBhdGNoIgpAQCAtMTQzLDMgKzE0NCw0NyBAQAogfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZmluZHV0aWxzIGdhd2sgbGliZXJyb3ItcGVybCBsaWJtb2R1bGUtYnVpbGQtcGVybCBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1zdGF0IHB5dGhvbjMtY29yZSBzZWQgc2hhZG93IgorCisjIC1kZXYgYXV0b21hdGljIGRlcGVuZGVuY2llcyBmYWlscyBhcyB3ZSBkb24ndCB3YW50IGxpYm1vZHVsZS1idWlsZC1wZXJsLWRldiwgaXRzIHRvbyBoZWF2eQorIyBtYXkgbmVlZCB0d2Vha2luZyBpZiBERVBFTkRTIGNoYW5nZXMKK1JSRUNPTU1FTkRTX2NvcmV1dGlscy1kZXZbbm9kZXBycmVjc10gPSAiMSIKK1JSRUNPTU1FTkRTX2NvcmV1dGlscy1kZXYgPSAiYWNsLWRldiBhdHRyLWRldiBnbXAtZGV2IGxpYmNhcC1kZXYgYmFzaC1kZXYgZmluZHV0aWxzLWRldiBnYXdrLWRldiBzaGFkb3ctZGV2IgorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXIgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgc2VkIC1pICdzL2dpbnN0YWxsL2luc3RhbGwvZycgIGBncmVwIC1SIGdpbnN0YWxsICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIHwgYXdrIC1GOiAne3ByaW50ICQxfScgfCB1bmlxYAorICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4CisgICAgaW5zdGFsbCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCisgICAgY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS8KKyAgICBjcCAke1N9L2luaXQuY2ZnICR7RH0ke1BURVNUX1BBVEh9LworICAgIGNwIC1yICR7Qn0vc3JjICR7RH0ke1BURVNUX1BBVEh9LworICAgIGNwIC1yICR7U30vc3JjLyouYyAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICBzZWQgLWkgJy9eVlBBVEgvcy89IC4qJC89IC4vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eUFJPR1JBTVMvcy9eLyMvZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eTWFrZWZpbGU6IC9zL14uKiQvTWFrZWZpbGU6L2cnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgc2VkIC1pICcvXmFic19zcmNkaXIvcy89IC4qJC89IFwkXHtQV0RcfS9nJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgIHNlZCAtaSAnL15hYnNfdG9wX2J1aWxkZGlyL3MvPSAuKiQvPSBcJFx7UFdEXH0vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eYWJzX3RvcF9zcmNkaXIvcy89IC4qJC89IFwkXHtQV0RcfS9nJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgIHNlZCAtaSAnL15idWlsdF9wcm9ncmFtcy9zL2dpbnN0YWxsL2luc3RhbGwvZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBjaG1vZCAtUiA3NzcgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgRGlzYWJsZSBzdWJjYXNlIHN0dHktcGFpcnMuc2gsIGl0IHdpbGwgY2F1c2UgdGVzdCBmcmFtZXdvcmsgaGFuZworICAgIHNlZCAtaSAnL3N0dHktcGFpcnMuc2gvZCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICMgRGlzYWJsZSBzdWJjYXNlIHRhaWwtMi9hc3NlcnQuc2ggYXMgaXQgaGFzIGlzc3VlcyBvbiAzMi1iaXQgc3lzdGVtcworICAgIHNlZCAtaSAnL2Fzc2VydC5zaC9kJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisgICAgIyBUd2VhayB0ZXN0IGRfdHlwZS1jaGVjayB0byB1c2UgcHl0aG9uMyBpbnN0ZWFkIG9mIHB5dGhvbgorICAgIHNlZCAtaSAiMXNALipAIyEvdXNyL2Jpbi9weXRob24zQCIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZF90eXBlLWNoZWNrCisgICAgaW5zdGFsbCAke0J9L3NyYy9nZXRsaW1pdHMgJHtEfS8ke2JpbmRpcn0KKyAgICAKKyAgICAjIGhhbmRsZSBtdWx0aWxpYgorICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorfQorCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtiaW5kaXJ9L2dldGxpbWl0cyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiCmluZGV4IDlhZmJjMmIuLjBiNDU4MDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYl8wLjExMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiSGlnaCBsZXZlbCBsYW5ndWFnZSAoR0xpYikgYmluZGluZyBmb3IgRC1CdXMiCiBERVNDUklQVElPTiA9ICJHTGliIGJpbmRpbmdzIGZvciB0aGUgRC1CdXMgbWVzc2FnZSBidXMgdGhhdCBpbnRlZ3JhdGUgXAogdGhlIEQtQnVzIGxpYnJhcnkgd2l0aCB0aGUgR0xpYiB0aHJlYWQgYWJzdHJhY3Rpb24gYW5kIG1haW4gbG9vcC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCiBMSUNFTlNFID0gIkFGTC0yLjEgfCBHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZjViM2EyZjcwODM3NTBkNTA0MzMzMTE0ZTczODY1NiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMtZ2xpYi5oO2JlZ2lubGluZT03O2VuZGxpbmU9MjE7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgpAQCAtMTAsNyArMTAsNyBAQAogREVQRU5EUyA9ICJleHBhdCBnbGliLTIuMCB2aXJ0dWFsL2xpYmludGwgZGJ1cy1nbGliLW5hdGl2ZSBkYnVzIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2xpYi0yLjAtbmF0aXZlIGRidXMtbmF0aXZlIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLWdsaWIvZGJ1cy1nbGliLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1nbGliL2RidXMtZ2xpYi0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm8tZXhhbXBsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdGVzdC1pbnN0YWxsLW1ha2VmaWxlLnBhdGNoIFwKICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdAppbmRleCA0ODUzNWUxLi5kM2VlYzA4IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CkBAIC0xOSwxMCArMTksMTIgQEAKIGZvciBpIGluICRmaWxlcwogZG8KICAgICAgI3RoZXNlIHByb2dyYW1zIGFyZSB1c2VkIGJ5IHRlc3RjYXNlIHRlc3QtYnVzLCBkb24ndCBydW4gaGVyZQorICAgICAjYWRkaXRpb25hbGx5LCB0ZXN0LW5hbWVzIG5lZWRzIHRvIGJlIHJ1biB1bmRlciBYCiAgICAgIGlmIFsgJGkgPSAidGVzdC90ZXN0LXNlcnZpY2UiIF0gXAogICAgICAgICB8fCBbICRpID0gInRlc3QvdGVzdC1zaGVsbC1zZXJ2aWNlIiBdIFwKICAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3Qtc2VnZmF1bHQiIF0gXAotICAgICAgICB8fCBbICRpID0gInRlc3QvdGVzdC1idXMiIF0KKyAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3QtYnVzIiBdIFwKKyAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3QtbmFtZXMiIF0KICAgICAgdGhlbgogICAgICAgICAgY29udGludWUKICAgICAgZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjE2LmJiCmluZGV4IDk2YjUwMzYuLjgyYmI3NTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4xNi5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCiBERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkFGTC0yLjEgfCBHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCkBAIC0xMiw3ICsxMiw3IEBACiBBTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCiBSREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKICAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjI2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjI1MmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZICA9ICJFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVtYmVkZGVkIExpbnV4IExpYnJhcnkgKEVMTCkgcHJvdmlkZXMgY29yZSwgXAotbG93LWxldmVsIGZ1bmN0aW9uYWxpdHkgZm9yIHN5c3RlbSBkYWVtb25zLiBJdCB0eXBpY2FsbHkgaGFzIG5vIFwKLWRlcGVuZGVuY2llcyBvdGhlciB0aGFuIHRoZSBMaW51eCBrZXJuZWwsIEMgc3RhbmRhcmQgbGlicmFyeSwgYW5kIFwKLWxpYmRsIChmb3IgZHluYW1pYyBsaW5raW5nKS4gV2hpbGUgRUxMIGlzIGRlc2lnbmVkIHRvIGJlIGVmZmljaWVudCBcCi1hbmQgY29tcGFjdCBlbm91Z2ggZm9yIHVzZSBvbiBlbWJlZGRlZCBMaW51eCBwbGF0Zm9ybXMsIGl0IGlzIG5vdCBcCi1saW1pdGVkIHRvIHJlc291cmNlLWNvbnN0cmFpbmVkIHN5c3RlbXMuIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSAgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKLQotREVQRU5EUyA9ICJkYnVzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSA9ICJodHRwczovL21pcnJvcnMuZWRnZS5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjQ2NjBlMjU1NDEwNzFlOTMzYTJiYjAyZWYyZjk0ZTdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4NTViNGI4ZjI3MWJhNmVlNjdkODdkMDk2NWI5NzVhOWE4ZGJlYWE2MTY2NjVjYTIyNDhhZmEzYjVmY2JjNzciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke1N9L2J1aWxkLWF1eAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGI3MTMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMzEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSAgPSAiRW1iZWRkZWQgTGludXggTGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IChFTEwpIHByb3ZpZGVzIGNvcmUsIFwKK2xvdy1sZXZlbCBmdW5jdGlvbmFsaXR5IGZvciBzeXN0ZW0gZGFlbW9ucy4gSXQgdHlwaWNhbGx5IGhhcyBubyBcCitkZXBlbmRlbmNpZXMgb3RoZXIgdGhhbiB0aGUgTGludXgga2VybmVsLCBDIHN0YW5kYXJkIGxpYnJhcnksIGFuZCBcCitsaWJkbCAoZm9yIGR5bmFtaWMgbGlua2luZykuIFdoaWxlIEVMTCBpcyBkZXNpZ25lZCB0byBiZSBlZmZpY2llbnQgXAorYW5kIGNvbXBhY3QgZW5vdWdoIGZvciB1c2Ugb24gZW1iZWRkZWQgTGludXggcGxhdGZvcm1zLCBpdCBpcyBub3QgXAorbGltaXRlZCB0byByZXNvdXJjZS1jb25zdHJhaW5lZCBzeXN0ZW1zLiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkiCisKK0RFUEVORFMgPSAiZGJ1cyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9taXJyb3JzLmVkZ2Uua2VybmVsLm9yZy9wdWIvbGludXgvbGlicy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZjY3MDIzMGJlNGQ4OWQ2MjFiMDUwOGM3MGIxZDM2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTg4NjE3Mjc1NDUyZjlmNTg0MGIyMzY1ZTMzZTZjN2ZiNmZhMzQwNWQ0MmNiZjkzNjdkZTY0MmVlOGI2NzAxIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtTfS9idWlsZC1hdXgKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWYxNjA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1Gcm9tIGU1NDZkZTY1YTMzMzc4OWU4M2Y1NDg1NzU3OTY3Y2VlMjllZTM2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMTkgRmViIDIwMTcgMjM6MzI6NDYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3Itc3RhdGVtZW50LmMvdGltc29ydC5oOiBmaXggZm9ybWF0dGluZyBpc3N1ZXMKLQotRml4ZWQgd2hlbiBjb21waWxlIHdpdGggIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IjoKLXwgZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jOiBJbiBmdW5jdGlvbiAnY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCc6Ci18IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzoyNjYxOjE3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKLQotQW5kOgotZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0Lmg6MzI2OjgwOiB3YXJuaW5nOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAzIGhhcyB0eXBlICd1bnNpZ25lZCBpbnQnIFstV2Zvcm1hdD1dCi0gICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBhbGxvY2F0aW5nIHRlbXBvcmFyeSBzdG9yYWdlIGZvciB0aW0gc29ydDogbmVlZCAlbHUgYnl0ZXMiLCBzaXplb2YoU09SVF9UWVBFKSAqIG5ld19zaXplKTsKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIHwgMTAgKysrKystLS0tLQotIGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oICAgICAgICB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKLWluZGV4IDYxNzUyMGYuLjEwMDEwNGIgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYwotQEAgLTI2MDcsNyArMjYwNyw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX3J1bGVzZXQgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ2xvbmcgYV9pbmRlbnQpCi0gICAgICAgICBnX3JldHVybl9pZl9mYWlsIChhX2ZwICYmIGFfdGhpcyk7Ci0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfcnVsZXNldF90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cik7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEw7Ci0gICAgICAgICB9Ci1AQCAtMjY1OCw3ICsyNjU4LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBndWxvbmcgYV9pbmRlbnQpCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfY2hhcnNldF90b19zdHJpbmcgKGFfdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9pbmRlbnQpIDsKLSAgICAgICAgIGlmIChzdHIpIHsKLS0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOwotICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKLSAgICAgICAgIH0KLUBAIC0yNjg1LDcgKzI2ODUsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9wYWdlIChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGd1bG9uZyBhX2luZGVudCkKLSAKLSAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9hdF9wYWdlX3J1bGVfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KSA7Ci0gICAgICAgICBpZiAoc3RyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cik7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cik7Ci0gICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOyAKLSAgICAgICAgIH0KLUBAIC0yNzExLDcgKzI3MTEsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9tZWRpYV9ydWxlIChDUlN0YXRlbWVudCAqIGFfdGhpcywKLSAKLSAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9tZWRpYV9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKLSsgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7Ci0gICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOwotICAgICAgICAgfQotQEAgLTI3MzcsNyArMjczNyw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX2ltcG9ydF9ydWxlIChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsCi0gCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfaW1wb3J0X3J1bGVfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KSA7Ci0gICAgICAgICBpZiAoc3RyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKLSAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKLSAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7Ci0gICAgICAgICB9Ci1kaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0LmggYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaAotaW5kZXggNzk1ZjI3Mi4uNDQzOTE4YSAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaAotQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgdm9pZCBUSU1fU09SVF9SRVNJWkUoVEVNUF9TVE9SQUdFX1QgKnN0b3JlLCBjb25zdCBzaXplX3QgbmV3X3NpemUpCi0gICAgIFNPUlRfVFlQRSAqdGVtcHN0b3JlID0gKFNPUlRfVFlQRSAqKXJlYWxsb2Moc3RvcmUtPnN0b3JhZ2UsIG5ld19zaXplICogc2l6ZW9mKFNPUlRfVFlQRSkpOwotICAgICBpZiAodGVtcHN0b3JlID09IE5VTEwpCi0gICAgIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGFsbG9jYXRpbmcgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHRpbSBzb3J0OiBuZWVkICVsdSBieXRlcyIsIHNpemVvZihTT1JUX1RZUEUpICogbmV3X3NpemUpOwotKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYWxsb2NhdGluZyB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgdGltIHNvcnQ6IG5lZWQgJXp1IGJ5dGVzIiwgc2l6ZW9mKFNPUlRfVFlQRSkgKiBuZXdfc2l6ZSk7Ci0gICAgICAgZXhpdCgxKTsKLSAgICAgfQotICAgICBzdG9yZS0+c3RvcmFnZSA9IHRlbXBzdG9yZTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRmZTIwMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9maXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Z2V0dGV4dC5naXQ7YT1jb21taXQ7aD1kY2UzYTE2XQotQ1ZFOiBDVkUtMjAxOC0xODc1MQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBkY2UzYTE2ZTVlOTM2ODI0NTczNWUyOWJmNDk4ZGNkNWUzZTQ3NGE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFpa2kgVWVubyA8dWVub0BnbnUub3JnPgotRGF0ZTogVGh1LCAxNSBTZXAgMjAxNiAxMzo1NzoyNCArMDIwMAotU3ViamVjdDogW1BBVENIXSB4Z2V0dGV4dDogRml4IGNyYXNoIHdpdGggKi5wbyBmaWxlIGlucHV0Ci0KLVdoZW4geGdldHRleHQgd2FzIGdpdmVuIHR3byAqLnBvIGZpbGVzIHdpdGggdGhlIHNhbWUgbXNnaWRfcGx1cmFsLCBpdAotY3Jhc2hlZCB3aXRoIGRvdWJsZS1mcmVlLiAgUHJvYmxlbSByZXBvcnRlZCBieSBEYXZsZXQgUGFuZWNoIGluOgotaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nZXR0ZXh0LzIwMTYtMDkvbXNnMDAwMDEuaHRtbAotKiBnZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55OiBEb24ndCBmcmVlIG1zZ2lkX3BsdXJhbGZvcm0gYWZ0ZXIKLWNhbGxpbmcgZG9fY2FsbGJhY2tfbWVzc2FnZSwgYXNzdW1pbmcgdGhhdCBpdCB0YWtlcyBvd25lcnNoaXAuCi0qIGdldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jIChkZWZhdWx0X2FkZF9tZXNzYWdlKTogRnJlZQotbXNnaWRfcGx1cmFsIGFmdGVyIGNhbGxpbmcgbWVzc2FnZV9hbGxvYy4KLSogZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yOiBOZXcgZmlsZS4KLSogZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBBZGQgbmV3IHRlc3QuCi0tLS0KLSBnZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55ICAgfCAxMyArKysrLS0tLS0KLSBnZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYyAgfCAgMiArKwotIGdldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0gICB8ICAyICstCi0gZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDc1NSBnZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLQotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL3BvLWdyYW0tZ2VuLnkgYi9nZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55Ci1pbmRleCBiZWNmNWU2Li40NDI4ZTc3IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueQotKysrIGIvZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueQotQEAgLTIyMSwxNCArMjIxLDExIEBAIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAgICBjaGVja19vYnNvbGV0ZSAoJDEsICQzKTsKLSAgICAgICAgICAgICAgICAgICBjaGVja19vYnNvbGV0ZSAoJDEsICQ0KTsKLSAgICAgICAgICAgICAgICAgICBpZiAoISQxLm9ic29sZXRlIHx8IHBhc3Nfb2Jzb2xldGVfZW50cmllcykKLS0gICAgICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgICAgZG9fY2FsbGJhY2tfbWVzc2FnZSAoJDEuY3R4dCwgc3RyaW5nMiwgJiQxLnBvcywgJDMuc3RyaW5nLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNC5yaHMubXNnc3RyLCAkNC5yaHMubXNnc3RyX2xlbiwgJiQ0LnBvcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEucHJldl9jdHh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2lkLCAkMS5wcmV2X2lkX3BsdXJhbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEub2Jzb2xldGUpOwotLSAgICAgICAgICAgICAgICAgICAgICBmcmVlICgkMy5zdHJpbmcpOwotLSAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgZG9fY2FsbGJhY2tfbWVzc2FnZSAoJDEuY3R4dCwgc3RyaW5nMiwgJiQxLnBvcywgJDMuc3RyaW5nLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDQucmhzLm1zZ3N0ciwgJDQucmhzLm1zZ3N0cl9sZW4sICYkNC5wb3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2N0eHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2lkLCAkMS5wcmV2X2lkX3BsdXJhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxLm9ic29sZXRlKTsKLSAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIGZyZWVfbWVzc2FnZV9pbnRybyAoJDEpOwotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jIGIvZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMKLWluZGV4IDU3MWQxOGUuLjZhZjZkMjAgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYwotKysrIGIvZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMKLUBAIC0zOTcsNiArMzk3LDggQEAgZGVmYXVsdF9hZGRfbWVzc2FnZSAoZGVmYXVsdF9jYXRhbG9nX3JlYWRlcl90eSAqdGhpcywKLSAgICAgICAgICBhcHByb3ByaWF0ZS4gICovCi0gICAgICAgbXAgPSBtZXNzYWdlX2FsbG9jIChtc2djdHh0LCBtc2dpZCwgbXNnaWRfcGx1cmFsLCBtc2dzdHIsIG1zZ3N0cl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dzdHJfcG9zKTsKLSsgICAgICBpZiAobXNnaWRfcGx1cmFsICE9IE5VTEwpCi0rICAgICAgICBmcmVlIChtc2dpZF9wbHVyYWwpOwotICAgICAgIG1wLT5wcmV2X21zZ2N0eHQgPSBwcmV2X21zZ2N0eHQ7Ci0gICAgICAgbXAtPnByZXZfbXNnaWQgPSBwcmV2X21zZ2lkOwotICAgICAgIG1wLT5wcmV2X21zZ2lkX3BsdXJhbCA9IHByZXZfbXNnaWRfcGx1cmFsOwotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0gYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAyM2IwOWIxLi4wZGZiNGQ4IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTk1LDcgKzk1LDcgQEAgVEVTVFMgPSBnZXR0ZXh0LTEgZ2V0dGV4dC0yIGdldHRleHQtMyBnZXR0ZXh0LTQgZ2V0dGV4dC01IGdldHRleHQtNiBnZXR0ZXh0LTcgXAotIAl4Z2V0dGV4dC1wZXJsLTEgeGdldHRleHQtcGVybC0yIHhnZXR0ZXh0LXBlcmwtMyB4Z2V0dGV4dC1wZXJsLTQgXAotIAl4Z2V0dGV4dC1wZXJsLTUgeGdldHRleHQtcGVybC02IHhnZXR0ZXh0LXBlcmwtNyB4Z2V0dGV4dC1wZXJsLTggXAotIAl4Z2V0dGV4dC1waHAtMSB4Z2V0dGV4dC1waHAtMiB4Z2V0dGV4dC1waHAtMyB4Z2V0dGV4dC1waHAtNCBcCi0tCXhnZXR0ZXh0LXBvLTEgXAotKwl4Z2V0dGV4dC1wby0xIHhnZXR0ZXh0LXBvLTIgXAotIAl4Z2V0dGV4dC1wcm9wZXJ0aWVzLTEgXAotIAl4Z2V0dGV4dC1weXRob24tMSB4Z2V0dGV4dC1weXRob24tMiB4Z2V0dGV4dC1weXRob24tMyBcCi0gCXhnZXR0ZXh0LXB5dGhvbi00IFwKLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLW5ldyBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCAwMDAwMDAwLi5jNGJkOWQwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLUBAIC0wLDAgKzEsNTUgQEAKLSsjISAvYmluL3NoCi0rLiAiJHtzcmNkaXI9Ln0vaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLiAuLi9zcmMKLSsKLSsjIFRlc3QgUE8gZXh0cmFjdG9ycyB3aXRoIG11bHRpcGxlIGlucHV0IGZpbGVzLgotKwotK2NhdCA8PEVPRiA+IHhnLXBvLTItMS5wbwotK21zZ2lkICJmaXJzdCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgImZpcnN0IG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJzZWNvbmQgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJzZWNvbmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rRU9GCi0rCi0rY2F0IDw8RU9GID4geGctcG8tMi0yLnBvCi0rbXNnaWQgInRoaXJkIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAidGhpcmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rCi0rbXNnaWQgInNlY29uZCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgInNlY29uZCBtc2dpZCAocGx1cmFsKSIKLSttc2dzdHJbMF0gIiIKLSttc2dzdHJbMV0gIiIKLStFT0YKLSsKLSs6ICR7WEdFVFRFWFQ9eGdldHRleHR9Ci0rJHtYR0VUVEVYVH0gLS1vbWl0LWhlYWRlciB4Zy1wby0yLTEucG8geGctcG8tMi0yLnBvIC1vIHhnLXBvLTIudG1wLnBvIHx8IEV4aXQgMQotK0xDX0FMTD1DIHRyIC1kICdccicgPCB4Zy1wby0yLnRtcC5wbyA+IHhnLXBvLTIucG8gfHwgRXhpdCAxCi0rCi0rY2F0IDw8RU9GID4geGctcG8tMi5vawotK21zZ2lkICJmaXJzdCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgImZpcnN0IG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJzZWNvbmQgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJzZWNvbmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rCi0rbXNnaWQgInRoaXJkIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAidGhpcmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rRU9GCi0rCi0rOiAke0RJRkY9ZGlmZn0KLSske0RJRkZ9IHhnLXBvLTIub2sgeGctcG8tMi5wbwotK3Jlc3VsdD0kPwotKwotK2V4aXQgJHJlc3VsdAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3BhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGUyYzk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3BhcmFsbGVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotaW5zdGFsIGxpYmdldHRleHRsaWIuYSBiZWZvcmUgcmVtb3ZpbmcgaXQKLQotSW4gYSBtdWx0aXBsZSBqb2IgYnVpbGQsIE1ha2VmaWxlIGNhbiBzaW11bHRhbmVvdXNseQotYmUgaW5zdGFsbGluZyBhbmQgcmVtb3ZpbmcgbGliZ2V0dGV4dGxpYi5hLiAgV2Ugc2VyaWFsaXplCi10aGUgb3BlcmF0aW9ucy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL01ha2VmaWxlLmFtCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvTWFrZWZpbGUuYW0KLUBAIC01Nyw2ICs1NywxMCBAQCBlbmRpZgotICMgUnVsZXMgZ2VuZXJhdGVkIGFuZCBjb2xsZWN0ZWQgYnkgZ251bGliLXRvb2wuCi0gaW5jbHVkZSBNYWtlZmlsZS5nbnVsaWIKLSAKLSsjIGRlZmluZWQgaW4gTWFrZWZpbGUuZ251bGliIGJ1dCBtaXNzaW5nIHRoaXMgZGVwZW5kZW5jeQotKyMKLStpbnN0YWxsLWV4ZWMtY2xlYW46IGluc3RhbGwtbGliTFRMSUJSQVJJRVMKLSsKLSAjIFdoaWNoIGNsYXNzZXMgdG8gZXhwb3J0IGZyb20gdGhlIHNoYXJlZCBsaWJyYXJ5LgotIE1PT1BQRkxBR1MgKz0gLS1kbGxleHBvcnQ9c3R5bGVkX29zdHJlYW0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWZmOTEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIGM0YjFmM2EwYzdiN2M0MGIzNDNiZTliOTVkZWI4NGUwNDg1NjQzYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSG9uZ2p1bi5ZYW5nIiA8aG9uZ2p1bi55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI4IEp1bCAyMDE2IDEyOjM2OjE1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBmb3IgcHRlc3QKLQotQWRkIHNlcmlhbC10ZXN0cyBzdXBwb3J0LCBwdGVzdCBuZWVkIGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgMiArLQotIGdldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMgfCAyICstCi0gZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNWU5OTZmYS4uODgwNTgxZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjMsNyArMjMsNyBAQCBBQ19JTklUKFtnZXR0ZXh0XSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtnZXR0ZXh0LXRvb2xzL3NyYy9tc2dmbXQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMyBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHMgZGlzdC14eiBkaXN0LWx6aXBdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTMgc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0cyBkaXN0LXh6IGRpc3QtbHppcF0pCi0gCi0gZG5sIE92ZXJyaWRlIGF1dG9tYWtlJ3MgdGFyIGNvbW1hbmQgdXNlZCBmb3IgY3JlYXRpbmcgZGlzdHJpYnV0aW9ucy4KLSBhbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gLS1vd25lcj1yb290IC0tZ3JvdXA9cm9vdCAiJCR0YXJkaXIiJwotZGlmZiAtLWdpdCBhL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMgYi9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjCi1pbmRleCBlOTI5OWI2Li5kNGY1NTI4IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYwotQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dC1ydW50aW1lXSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtpbnRsL2RjaWdldHRleHQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQotIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gCi0gZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCi1pbmRleCA5MjBlZWI2Li5jNTA3NDM0IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMKLSsrKyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCi1AQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtnZXR0ZXh0LXRvb2xzXSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtzcmMvbXNnZm10LmNdKQotIEFDX0NPTkZJR19BVVhfRElSKFsuLi9idWlsZC1hdXhdKQotLUFNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHNdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzXSkKLSBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotIAotIGRubCBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3VzZS1wa2djb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTU2YTE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3VzZS1wa2djb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjEgKzAsMCBAQAotRm9yIHJlYXNvbnMgd2hpY2ggSSBqdXN0IGNhbid0IGZhdGhvbSBnbnVsaWIgZG9lc24ndCB1c2UgdGhlIGV4cGVjdGVkIHRvb2xzIHRvCi1maW5kIGxpYnJhcmllcyBidXQgYmFkbHkgcmVpbnZlbnRzIHRoZSB3aGVlbC4gIFRoaXMgd2lsbCB0cml2aWFsbHkgbGVhZCB0byBob3N0Ci1jb250YW1pbmF0aW9uIChleHBsaWNpdCBzZWFyY2hlcyBvZiAvdXNyL2xpYikgb3IgaW5jb3JyZWN0IFJQQVRIcyAoYmFkCi1jYW5vbmljYWxpc2F0aW9uIHJlc3VsdGluZyBpbiByZWxhdGl2ZSBwYXRocykuCi0KLVNpbXBseSBkZWxldGUgYWxsIHRoZSBjcmF6eSwgYW5kIHJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBjYWxsIHRvIHBrZy1jb25maWcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAodXBzdHJlYW0gc3RpbGwgcmVmdXNlIHRvIGNvbnNpZGVyIHBrZy1jb25maWcpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00IGIvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00Ci1pbmRleCBmNzllYTgyZjEuLjFmNjcyNzRkYiAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmNyb2NvLm00Ci0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJjcm9jby5tNAotQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KLSAKLSBBQ19ERUZVTihbZ2xfTElCQ1JPQ09dLAotIFsKLSsgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQotICAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KLSAgIEFDX1JFUVVJUkUoW2dsX0xJQkdMSUJdKQotIAotQEAgLTIzLDY1ICsyNCwxMCBAQCBBQ19ERUZVTihbZ2xfTElCQ1JPQ09dLAotICAgTFRMSUJDUk9DTz0KLSAgIElOQ0NST0NPPQotICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCi0tICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJjcm9jby0wLjYsIG9yIGhhdmUgdG8KLS0gICAgZG5sIHVzZSB0aGUgaW5jbHVkZWQgb25lLgotLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmNyb2NvXSwgWwotLSAgICAgIGdsX2N2X2xpYmNyb2NvPW5vCi0tICAgICAgZ2xfY3ZfTElCQ1JPQ089Ci0tICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0KLS0gICAgICBnbF9jdl9JTkNDUk9DTz0KLS0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgotLSAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmNyb2NvIGFuZCBkZWZpbmUgTElCQ1JPQ09fMF82LCBMVExJQkNST0NPXzBfNiBhbmQKLS0gICAgICBkbmwgSU5DQ1JPQ09fMF82IGFjY29yZGluZ2x5LgotLSAgICAgIGRubCBEb24ndCB1c2UgY3JvY28tMC42LWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KLS0gICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQotLSAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KLS0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2Nyb2NvLTAuNl0sIFtnbGliLTIuMF0pCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCQ1JPQ09fMF82IgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKLS0gICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCi0tICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCi0tICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgotLSAgICAgICAgXSkKLS0gICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgotLSAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DQ1JPQ09fMF82IgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAotLSAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAotLSAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCi0tICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSIkSU5DQ1JPQ09fMF82IgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4KLS0gICAgICAgICAgZG5sIC91c3IvaW5jbHVkZS9saWJjcm9jby0wLjYvbGliY3JvY28uCi0tICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tMC42L2xpYmNyb2NvL2xpYmNyb2NvLWNvbmZpZy5oPl0sCi0tICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKLS0gICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmhdKQotLSAgICAgICAgICAgICBsaWJjcm9jb19pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYmNyb2NvXzBfNl9saWJjcm9jb19saWJjcm9jb19jb25maWdfaCIgfCBzZWQgLWUgJ3MsLmxpYmNyb2NvLWNvbmZpZ1wuaCQsLCdgCi0tICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRsaWJjcm9jb19pbmNsdWRlX2RpciI7IHRoZW4KLS0gICAgICAgICAgICAgICBnbF9jdl9saWJjcm9jbz15ZXMKLS0gICAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ii1JJGxpYmNyb2NvX2luY2x1ZGVfZGlyIgotLSAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIF0pCi0tICAgICAgICBmaQotLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgotLSAgICAgIGZpCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKLS0gICAgXSkKLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGliY3JvY29dKQotLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29dKQotLSAgICBpZiB0ZXN0ICRnbF9jdl9saWJjcm9jbyA9IHllczsgdGhlbgotLSAgICAgIExJQkNST0NPPSIkZ2xfY3ZfTElCQ1JPQ08iCi0tICAgICAgTFRMSUJDUk9DTz0iJGdsX2N2X0xUTElCQ1JPQ08iCi0tICAgICAgSU5DQ1JPQ089IiRnbF9jdl9JTkNDUk9DTyIKLS0gICAgZWxzZQotLSAgICAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD15ZXMKLS0gICAgZmkKLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoW0NST0NPXSwgW2xpYmNyb2NvLTAuNl0pCi0rICAgIExJQkNST0NPPSRDUk9DT19MSUJTCi0rICAgIExUTElCQ1JPQ089JENST0NPX0xJQlMKLSsgICAgSU5DQ1JPQ089JENST0NPX0NGTEFHUwotICAgZmkKLSAgIEFDX1NVQlNUKFtMSUJDUk9DT10pCi0gICBBQ19TVUJTVChbTFRMSUJDUk9DT10pCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgYi9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNAotaW5kZXggNDJlNTVlNmZkLi5hYjI1YTViMjIgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJnbGliLm00Ci0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJnbGliLm00Ci1AQCAtOCw2ICs4LDcgQEAgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotIAotIEFDX0RFRlVOKFtnbF9MSUJHTElCXSwKLSBbCi0rICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKLSAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnbGliIGlzIHJlcXVlc3RlZF0pCi0gICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCi0gICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCi1AQCAtMjAsNzYgKzIxLDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJHTElCXSwKLSAgIExUTElCR0xJQj0KLSAgIElOQ0dMSUI9Ci0gICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgotLSAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliZ2xpYi0yLjAsIG9yIGhhdmUgdG8gdXNlCi0tICAgIGRubCB0aGUgaW5jbHVkZWQgb25lLgotLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmdsaWJdLCBbCi0tICAgICAgZ2xfY3ZfbGliZ2xpYj1ubwotLSAgICAgIGdsX2N2X0xJQkdMSUI9Ci0tICAgICAgZ2xfY3ZfTFRMSUJHTElCPQotLSAgICAgIGdsX2N2X0lOQ0dMSUI9Ci0tICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJnbGliMiBhbmQgZGVmaW5lIExJQkdMSUJfMl8wLCBMVExJQkdMSUJfMl8wIGFuZAotLSAgICAgIGRubCBJTkNHTElCXzJfMCBhY2NvcmRpbmdseS4KLS0gICAgICBkbmwgRG9uJ3QgdXNlIGdsaWItY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgotLSAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCi0tICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgotLSAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbZ2xpYi0yLjBdKQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkdMSUJfMl8wIgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgotLSNpZm5kZWYgR19CRUdJTl9ERUNMUwotLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54Ci0tI2VuZGlmCi0tXSwKLS0gICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAotLSAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCi0tICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgotLSAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCi0tICAgICAgICBdKQotLSAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLS0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0dMSUJfMl8wIgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+Ci0tI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCi0tZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKLS0jZW5kaWYKLS1dLAotLSAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKLS0gICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCi0tICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCi0tICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgotLSAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iJElOQ0dMSUJfMl8wIgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgotLSAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvZ2xpYi0yLjAKLS0gICAgICAgICAgZG5sIGFuZCAvdXNyL2xpYi9nbGliLTIuMC9pbmNsdWRlLgotLSAgICAgICAgICBpZiB0ZXN0IC1uICIkTElCR0xJQl8yXzBfUFJFRklYIjsgdGhlbgotLSAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCi0tICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+Ci0tI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCi0tZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKLS0jZW5kaWYKLS1dLAotLSAgICAgICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCi0tICAgICAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKLS0gICAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKLS0gICAgICAgICAgICAgICBnbF9jdl9JTkNHTElCPSItSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCi0tICAgICAgICAgICAgICBdKQotLSAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKLS0gICAgICBmaQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCi0tICAgIF0pCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGdsaWJdKQotLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl0pCi0tICAgIGlmIHRlc3QgJGdsX2N2X2xpYmdsaWIgPSB5ZXM7IHRoZW4KLS0gICAgICBMSUJHTElCPSIkZ2xfY3ZfTElCR0xJQiIKLS0gICAgICBMVExJQkdMSUI9IiRnbF9jdl9MVExJQkdMSUIiCi0tICAgICAgSU5DR0xJQj0iJGdsX2N2X0lOQ0dMSUIiCi0tICAgIGVsc2UKLS0gICAgICBnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZD15ZXMKLS0gICAgZmkKLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dMSUJdLCBbZ2xpYi0yLjBdKQotKyAgICBMSUJHTElCPSIkR0xJQl9MSUJTIgotKyAgICBMVExJQkdMSUI9IiRHTElCX0xJQlMiCi0rICAgIElOQ0dMSUI9IiRHTElCX0NGTEFHUyIKLSAgIGZpCi0gICBBQ19TVUJTVChbTElCR0xJQl0pCi0gICBBQ19TVUJTVChbTFRMSUJHTElCXSkKLWRpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbTQvbGlieG1sLm00IGIvZ251bGliLWxvY2FsL200L2xpYnhtbC5tNAotaW5kZXggNDgwYzcwMGQyLi5jYjM5MzA5ZDUgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNAotQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KLQotIEFDX0RFRlVOKFtnbF9MSUJYTUxdLAotIFsKLSsgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQotICAgQUNfUkVRVUlSRShbQU1fSUNPTlZfTElOS10pCi0KLSAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJ4bWwgaXMgcmVxdWVzdGVkXSkKLUBAIC0yMiwxMDAgKzIyLDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJYTUxdLAotICAgTFRMSUJYTUw9Ci0gICBJTkNYTUw9Ci0gICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCi0tICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJ4bWwyLCBvciBoYXZlIHRvIHVzZQotLSAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KLS0gICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJ4bWxdLCBbCi0tICAgICAgZ2xfY3ZfbGlieG1sPW5vCi0tICAgICAgZ2xfY3ZfTElCWE1MPQotLSAgICAgIGdsX2N2X0xUTElCWE1MPQotLSAgICAgIGdsX2N2X0lOQ1hNTD0KLS0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgotLSAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKLS0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJ4bWwyIGFuZCBkZWZpbmUgTElCWE1MMiwgTFRMSUJYTUwyIGFuZCBJTkNYTUwyCi0tICAgICAgZG5sIGFjY29yZGluZ2x5LgotLSAgICAgIGRubCBEb24ndCB1c2UgeG1sMi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCi0tICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKLS0gICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCi0tICAgICAgZG5sIFVzZSBhIHRlc3QgcHJvZ3JhbSB0aGF0IHRyaWVzIHRvIGludm9rZSB4bWxGcmVlLiBPbiBDeWd3aW4gMS43LngsCi0tICAgICAgZG5sIGxpYnhtbDIgaXMgYnVpbHQgaW4gc3VjaCBhIHdheSB0aGF0IHVzZXMgb2YgeG1sRnJlZSB3b3JrIGZpbmUgd2l0aAotLSAgICAgIGRubCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQgYnV0IGxlYWQgdG8gYSBsaW5rIGVycm9yIHdpdGgKLS0gICAgICBkbmwgLVdsLC0tZGlzYWJsZS1hdXRvLWltcG9ydC4KLS0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW3htbDJdKQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KLS0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KLS0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgotLSAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKLS0gICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKLS0gICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7Ci0tICAgICAgICBdLAotLSAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKLS0gICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKLS0gICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKLS0gICAgICAgIF0pCi0tICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCi0tICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0tICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNYTUwyIgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgotLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+Ci0tICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7Ci0tICAgICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKLS0gICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKLS0gICAgICAgICAgXSwKLS0gICAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKLS0gICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCi0tICAgICAgICAgICBnbF9jdl9JTkNYTUw9IiRJTkNYTUwyIgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCi0tICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS9saWJ4bWwyLgotLSAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjUsIDxsaWJ4bWwveG1sdmVyc2lvbi5oPiBpcyBzZWxmLWNvbnRhaW5lZC4KLS0gICAgICAgICAgZG5sIEluIGxpYnhtbDItMi42LCBpdCBpbmNsdWRlcyA8bGlieG1sL3htbGV4cG9ydHMuaD4gd2hpY2ggaXMKLS0gICAgICAgICAgZG5sIHNlbGYtY29udGFpbmVkLgotLSAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPQotLSAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sZXhwb3J0cy5oPl0sCi0tICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGlieG1sMi9saWJ4bWwveG1sZXhwb3J0cy5oXSkKLS0gICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbGV4cG9ydHNfaCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWxleHBvcnRzXC5oJCwsJ2AKLS0gICAgICAgICAgICBdKQotLSAgICAgICAgICBpZiB0ZXN0IC16ICIkbGlieG1sMl9pbmNsdWRlX2RpciI7IHRoZW4KLS0gICAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oPl0sCi0tICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJ4bWwyL2xpYnhtbC94bWx2ZXJzaW9uLmhdKQotLSAgICAgICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJ4bWwyX2xpYnhtbF94bWx2ZXJzaW9uX2giIHwgc2VkIC1lICdzLC5saWJ4bWwueG1sdmVyc2lvblwuaCQsLCdgCi0tICAgICAgICAgICAgICBdKQotLSAgICAgICAgICBmaQotLSAgICAgICAgICBpZiB0ZXN0IC1uICIkbGlieG1sMl9pbmNsdWRlX2RpciIgJiYgdGVzdCAtZCAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCi0tICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCi0tICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgotLSAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgotLSAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOwotLSAgICAgICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOwotLSAgICAgICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKLS0gICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcwotLSAgICAgICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgotLSAgICAgICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKLS0gICAgICAgICAgICAgIF0pCi0tICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgotLSAgICAgIGZpCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKLS0gICAgXSkKLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGlieG1sXSkKLS0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYnhtbF0pCi0tICAgIGlmIHRlc3QgJGdsX2N2X2xpYnhtbCA9IHllczsgdGhlbgotLSAgICAgIExJQlhNTD0iJGdsX2N2X0xJQlhNTCIKLS0gICAgICBMVExJQlhNTD0iJGdsX2N2X0xUTElCWE1MIgotLSAgICAgIElOQ1hNTD0iJGdsX2N2X0lOQ1hNTCIKLS0gICAgZWxzZQotLSAgICAgIGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQ9eWVzCi0tICAgIGZpCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFtYTUxdLCBbbGlieG1sLTIuMF0pCi0rICAgIExJQlhNTD0kWE1MX0xJQlMKLSsgICAgTFRMSUJYTUw9JFhNTF9MSUJTCi0rICAgIElOQ1hNTD0kWE1MX0NGTEFHUwotICAgZmkKLSAgIEFDX1NVQlNUKFtMSUJYTUxdKQotICAgQUNfU1VCU1QoW0xUTElCWE1MXSkKLWRpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYyBiL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCi1pbmRleCA4MWE0MDc0NjcuLjIxODU2NTMyOSAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKLUBAIC0yNSw0ICsyNSw0IEBACi0tI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgotLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+Ci0tI2luY2x1ZGUgPGNyLXN0eWxlLmg+Ci0tI2luY2x1ZGUgPGNyLXJnYi5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KLUBAIC0zMSArMzEgQEAKLS0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+Ci0rIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgotQEAgLTMzICszMyBAQAotLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ1Yjc1OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLWluaXQtZW52LmluLWRvLW5vdC1hZGQtQy1DWFgtcGFyYW1ldGVycy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDliOTEyYTQ3Zjc5MGE3YjI4MmVjMGMyMjk1YTE4OGM1ZDhmYjZhN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMTowNDowNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBpbml0LWVudi5pbjogZG8gbm90IGFkZCBDL0NYWCBwYXJhbWV0ZXJzCisKK1RoZXNlIGFyZSB0YWtlbiBmcm9tIHRoZSBjcm9zcyBlbnZpcm9ubWVudCBhbmQgaW5jbHVkZQorc3lzcm9vdCBwYXRocywgc28gYXJlIG5vdCByZXByb2R1Y2libGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbiB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbiBiL2dldHRleHQtdG9vbHMvdGVzdHMvaW5pdC1lbnYuaW4KK2luZGV4IGNjODRmZmQuLmI2OWM5OTAgMTAwNjQ0CistLS0gYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52LmluCisrKysgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52LmluCitAQCAtMywxMCArMyw2IEBAIHRvcF9idWlsZGRpcj0uLi8uLgorIAorIE9CSkVYVD0iQE9CSkVYVEAiCisgRVhFRVhUPSJARVhFRVhUQCIKKy1DQz0iQENDQCIKKy1DRkxBR1M9IkBDRkxBR1NAIgorLUNYWD0iQENYWEAiCistQ1hYRkxBR1M9IkBDWFhGTEFHU0AiCisgQ1BQRkxBR1M9IkBDUFBGTEFHU0AiCisgTERGTEFHUz0iQExERkxBR1NAIgorIExUTElCSU5UTD0iQExUTElCSU5UTEAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1tc2dtZXJnZS1GaXgtYmVoYXZpb3VyLW9mLWZvci1tc2dmbXQtb24tUE8tZmlsZXMtd2l0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQ1ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDc1ZTMxNWZkZWM4MmQxYTE3ZWJjZDllMDcxMmQxMDkzMjM1NzhkNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4KK0RhdGU6IFN1biwgMTkgTWF5IDIwMTkgMTE6MTA6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXNnbWVyZ2U6IEZpeCBiZWhhdmlvdXIgb2YgLS1mb3ItbXNnZm10IG9uIFBPIGZpbGVzIHdpdGggbm8KKyB0cmFuc2xhdGlvbnMuCisKK21zZ21lcmdlOiBGaXggYmVoYXZpb3VyIG9mIC0tZm9yLW1zZ2ZtdCBvbiBQTyBmaWxlcyB3aXRoIG5vIHRyYW5zbGF0aW9ucy4KKworUmVwb3J0ZWQgYnkgRG9uIExhd3JlbmNlIDxkbGF3cmVuY2VAaWVjb2suY29tPgoraW4gPGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3AxMS1nbHVlLzIwMTktTWF5LzAwMDcwMC5odG1sPgordmlhIERhaWtpIFVlbm8KK2luIDxodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nZXR0ZXh0LzIwMTktMDUvbXNnMDAxMjQuaHRtbD4uCisKKyogZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYyAobWFpbik6IFRyZWF0IGZvcmNlX3BvIGxpa2UgdHJ1ZSBpZiBmb3JfbXNnZm10CitpcyB0cnVlLgorKiBnZXR0ZXh0LXRvb2xzL3Rlc3RzL21zZ21lcmdlLTI2OiBBZGQgdGVzdCBvZiBQTyBmaWxlIHdpdGggbm8gdHJhbnNsYXRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1nZXR0ZXh0LmdpdDthPWNvbW1pdGRpZmY7aD0yMzM2NDUxZWQ2OGQ5MWZmNGI1YWUxYWNiYzFlY2EzMGU0N2E4NmE5XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMgICAgfCAgNCArKy0tCisgZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNiB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMgYi9nZXR0ZXh0LXRvb2xzL3NyYy9tc2dtZXJnZS5jCitpbmRleCBjZDc2MmMwLi45MmM5YjdhIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYworKysrIGIvZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYworQEAgLTUyMCw4ICs1MjAsOCBAQCBUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LlxuXAorICAgZWxzZQorICAgICB7CisgICAgICAgLyogV3JpdGUgdGhlIG1lcmdlZCBtZXNzYWdlIGxpc3Qgb3V0LiAgKi8KKy0gICAgICBtc2dkb21haW5fbGlzdF9wcmludCAocmVzdWx0LCBvdXRwdXRfZmlsZSwgb3V0cHV0X3N5bnRheCwgZm9yY2VfcG8sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKysgICAgICBtc2dkb21haW5fbGlzdF9wcmludCAocmVzdWx0LCBvdXRwdXRfZmlsZSwgb3V0cHV0X3N5bnRheCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yX21zZ2ZtdCB8fCBmb3JjZV9wbywgZmFsc2UpOworICAgICB9CisgCisgICBleGl0IChFWElUX1NVQ0NFU1MpOworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvbXNnbWVyZ2UtMjYgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL21zZ21lcmdlLTI2CitpbmRleCBjZDM4NjJlLi5iODZmN2EwIDEwMDc1NQorLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNgorKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNgorQEAgLTczLDcgKzczLDM3IEBAIG1zZ3N0ciAiUGFwYXlhIgorIEVPRgorIAorIDogJHtESUZGPWRpZmZ9CistJHtESUZGfSBtbS10ZXN0MjYub2sgbW0tdGVzdDI2Lm91dAorLXJlc3VsdD0kPworKyR7RElGRn0gbW0tdGVzdDI2Lm9rIG1tLXRlc3QyNi5vdXQgfHwgRXhpdCAxCisgCistZXhpdCAkcmVzdWx0CisrIyBUZXN0IHdpdGggYSBQTyBmaWxlIHRoYXQgaGFzIG5vIHRyYW5zbGF0ZWQgbWVzc2FnZXMuCisrCisrY2F0IDw8XEVPRiA+IG1tLXRlc3QyNmEuaW4xCisrbXNnaWQgIiIKKyttc2dzdHIgIiIKKysiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisrCisrbXNnaWQgIkhlbGxvIHdvcmxkIgorK21zZ3N0ciAiSGFsbG8gV2VsdCIKKytFT0YKKysKKytjYXQgPDxcRU9GID4gbW0tdGVzdDI2YS5pbjIKKyttc2dpZCAiIgorK21zZ3N0ciAiIgorKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9QVNDSUlcbiIKKysKKyttc2dpZCAiSGVsbG8sIHdvcmxkISIKKyttc2dzdHIgIiIKKytFT0YKKysKKys6ICR7TVNHTUVSR0U9bXNnbWVyZ2V9CisrJHtNU0dNRVJHRX0gLS1mb3ItbXNnZm10IC1vIG1tLXRlc3QyNmEudG1wIG1tLXRlc3QyNmEuaW4xIG1tLXRlc3QyNmEuaW4yIFwKKysgICAgfHwgRXhpdCAxCisrTENfQUxMPUMgdHIgLWQgJ1xyJyA8IG1tLXRlc3QyNmEudG1wID4gbW0tdGVzdDI2YS5vdXQgfHwgRXhpdCAxCisrCisrY2F0IDw8XEVPRiA+IG1tLXRlc3QyNmEub2sKKyttc2dpZCAiIgorK21zZ3N0ciAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisrRU9GCisrCisrOiAke0RJRkY9ZGlmZn0KKyske0RJRkZ9IG1tLXRlc3QyNmEub2sgbW0tdGVzdDI2YS5vdXQgfHwgRXhpdCAxCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBiYzZiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLXRlc3RzLWF1dG9wb2ludC0zLXVuc2V0LU1BS0VGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDM4YjI1NmU1YWE3ZGZlYjQyYWNmZmQ4OTU2NWU1M2EyYzBiYWIzZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNyBKYW4gMjAyMCAxNjo0NDozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0cy9hdXRvcG9pbnQtMzogdW5zZXQgTUFLRUZMQUdTCisKK1RoaXMgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBwdGVzdHMsIGFzIHRoZSBNQUtFRkxBR1MgdmFsdWUgKHNldCB1cCBieSBydW4tcHRlc3QpCitpcyBtZXNzaW5nIHVwIHRoZSB0ZXN0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGdldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2F1dG9wb2ludC0zCitpbmRleCBlMTM1NTJiLi41NTE4OGRmIDEwMDc1NQorLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9hdXRvcG9pbnQtMworKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9hdXRvcG9pbnQtMworQEAgLTEyNiw2ICsxMjYsNyBAQCB0ZXN0ICQ/ID0gMCB8fCB7IGNhdCBhdXRvcG9pbnQuZXJyOyBFeGl0IDE7IH0KKyAke0NPTkZJR19TSEVMTH0gLi9jb25maWd1cmUgPi9kZXYvbnVsbCAyPmF1dHBvaW50LmVycgorIHRlc3QgJD8gPSAwIHx8IHsgY2F0IGF1dG9wb2ludC5lcnI7IEV4aXQgMTsgfQorIAorK3Vuc2V0IE1BS0VGTEFHUworICR7TUFLRX0gPi9kZXYvbnVsbCAyPmF1dG9wb2ludC5lcnIKKyB0ZXN0ICQ/ID0gMCB8fCB7IGNhdCBhdXRvcG9pbnQuZXJyOyBFeGl0IDE7IH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NjFlZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGY2MjQ1ZWY1NTMwZmMzN2E2MjQzZTc5OGRmMzQxNjJmYmJlYWI2ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTkgRmViIDIwMTcgMjM6MzI6NDYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY3Itc3RhdGVtZW50LmMvdGltc29ydC5oOiBmaXggZm9ybWF0dGluZyBpc3N1ZXMKKworRml4ZWQgd2hlbiBjb21waWxlIHdpdGggIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IjoKK3wgZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jOiBJbiBmdW5jdGlvbiAnY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCc6Cit8IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzoyNjYxOjE3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKKworQW5kOgorZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0Lmg6MzI2OjgwOiB3YXJuaW5nOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAzIGhhcyB0eXBlICd1bnNpZ25lZCBpbnQnIFstV2Zvcm1hdD1dCisgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBhbGxvY2F0aW5nIHRlbXBvcmFyeSBzdG9yYWdlIGZvciB0aW0gc29ydDogbmVlZCAlbHUgYnl0ZXMiLCBzaXplb2YoU09SVF9UWVBFKSAqIG5ld19zaXplKTsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0KKyBsaWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIGIvbGlidGV4dHN0eWxlL2xpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYworaW5kZXggNjE3NTIwZi4uMTAwMTA0YiAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKKysrKyBiL2xpYnRleHRzdHlsZS9saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKK0BAIC0yNjA3LDcgKzI2MDcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9ydWxlc2V0IChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGdsb25nIGFfaW5kZW50KQorICAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYV9mcCAmJiBhX3RoaXMpOworICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X3J1bGVzZXRfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KTsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKTsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKTsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMOworICAgICAgICAgfQorQEAgLTI2NTgsNyArMjY1OCw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX2NoYXJzZXQgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ3Vsb25nIGFfaW5kZW50KQorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2NoYXJzZXRfdG9fc3RyaW5nIChhX3RoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfaW5kZW50KSA7CisgICAgICAgICBpZiAoc3RyKSB7CistICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOworKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKKyAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7CisgICAgICAgICB9CitAQCAtMjY4NSw3ICsyNjg1LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfcGFnZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBndWxvbmcgYV9pbmRlbnQpCisgCisgICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfYXRfcGFnZV9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOworICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpOworKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpOworICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsgCisgICAgICAgICB9CitAQCAtMjcxMSw3ICsyNzExLDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfbWVkaWFfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsCisgCisgICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfbWVkaWFfcnVsZV90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpIDsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7CisrICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOworICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKKyAgICAgICAgIH0KK0BAIC0yNzM3LDcgKzI3MzcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9pbXBvcnRfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLAorIAorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2ltcG9ydF9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOworICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7CisgICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7CisgICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOworICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3BhcmFsbGVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3BhcmFsbGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NmEzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvcGFyYWxsZWwucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA0YTJhMGE5M2I0NjkwOTNiNjBmZmQwYmVjNTVkMzNkMWUwM2Q0NzEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA3IEp1biAyMDEyIDE2OjM3OjAxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluc3RhbCBsaWJnZXR0ZXh0bGliLmEgYmVmb3JlIHJlbW92aW5nIGl0CisKK0luIGEgbXVsdGlwbGUgam9iIGJ1aWxkLCBNYWtlZmlsZSBjYW4gc2ltdWx0YW5lb3VzbHkKK2JlIGluc3RhbGxpbmcgYW5kIHJlbW92aW5nIGxpYmdldHRleHRsaWIuYS4gIFdlIHNlcmlhbGl6ZQordGhlIG9wZXJhdGlvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbSBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQoraW5kZXggMjEyNjY5OS4uZDJkZDdlNCAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL01ha2VmaWxlLmFtCitAQCAtNTgsNiArNTgsMTAgQEAgZW5kaWYKKyAjIFJ1bGVzIGdlbmVyYXRlZCBhbmQgY29sbGVjdGVkIGJ5IGdudWxpYi10b29sLgorIGluY2x1ZGUgTWFrZWZpbGUuZ251bGliCisgCisrIyBkZWZpbmVkIGluIE1ha2VmaWxlLmdudWxpYiBidXQgbWlzc2luZyB0aGlzIGRlcGVuZGVuY3kKKysjCisraW5zdGFsbC1leGVjLWNsZWFuOiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTCisrCisgIyBPUy8yIGRvZXMgbm90IHN1cHBvcnQgYSBETEwgbmFtZSBsb25nZXIgdGhhbiA4IGNoYXJhY3RlcnMuCisgaWYgT1MyCisgbGliZ2V0dGV4dGxpYl9sYV9MREZMQUdTICs9IC1vczJkbGxuYW1lIGd0bGliCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9ydW4tcHRlc3QKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmN2MwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gZWQ2NGE1NzI0ZWY3ZDZlYjRlOWE4NzZmODE3ZWEyNjZhNTM2ZTE5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJIb25nanVuLllhbmciIDxob25nanVuLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjggSnVsIDIwMTYgMTI6MzY6MTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGZvciBwdGVzdAorCitBZGQgc2VyaWFsLXRlc3RzIHN1cHBvcnQsIHB0ZXN0IG5lZWQgaXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIHwgMiArLQorIGdldHRleHQtdG9vbHMvY29uZmlndXJlLmFjICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDM4ZGI2ZmQuLmYwMTlhZTAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dF0sCisgCVtidWctZ2V0dGV4dEBnbnUub3JnXSkKKyBBQ19DT05GSUdfU1JDRElSKFtnZXR0ZXh0LXRvb2xzL3NyYy9tc2dmbXQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMyBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHMgdGFyLXVzdGFyXSkKKytBTV9JTklUX0FVVE9NQUtFKFsxLjEzIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHMgdGFyLXVzdGFyXSkKKyAKKyBkbmwgT3ZlcnJpZGUgYXV0b21ha2UncyB0YXIgY29tbWFuZCB1c2VkIGZvciBjcmVhdGluZyBkaXN0cmlidXRpb25zLgorIGFtX190YXI9JyR7QU1UQVJ9IGNoZiAtIC0tZm9ybWF0PXVzdGFyIC0tb3duZXI9cm9vdCAtLWdyb3VwPXJvb3QgIiQkdGFyZGlyIicKK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIGIvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYworaW5kZXggZGUyMDNlNy4uMTM4YTA3ZiAxMDA2NDQKKy0tLSBhL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKKysrKyBiL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKK0BAIC0yMiw3ICsyMiw3IEBAIEFDX0lOSVQoW2dldHRleHQtcnVudGltZV0sCisgCVtidWctZ2V0dGV4dEBnbnUub3JnXSkKKyBBQ19DT05GSUdfU1JDRElSKFtpbnRsL2RjaWdldHRleHQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCisrQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisgZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCitpbmRleCBjZjFkZDczLi5iNTQ0ZDZkIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMKKysrKyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCitAQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtnZXR0ZXh0LXRvb2xzXSwKKyAJW2J1Zy1nZXR0ZXh0QGdudS5vcmddKQorIEFDX0NPTkZJR19TUkNESVIoW3NyYy9tc2dmbXQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCisrQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisgZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS91c2UtcGtnY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3VzZS1wa2djb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmM2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS91c2UtcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNzEzIEBACitGcm9tIGVmNDE0YjA2YmU4MGM2ZjYwNTczMWFiYzllNjc0ZTM5NmI4MGVjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAwMDo1NDoxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBnZXR0ZXh0OiBiZWF0IGxpYnJhcnkgZGV0ZWN0aW9uIGludG8gc2hhcGUKKworRm9yIHJlYXNvbnMgd2hpY2ggSSBqdXN0IGNhbid0IGZhdGhvbSBnbnVsaWIgZG9lc24ndCB1c2UgdGhlIGV4cGVjdGVkIHRvb2xzIHRvCitmaW5kIGxpYnJhcmllcyBidXQgYmFkbHkgcmVpbnZlbnRzIHRoZSB3aGVlbC4gIFRoaXMgd2lsbCB0cml2aWFsbHkgbGVhZCB0byBob3N0Citjb250YW1pbmF0aW9uIChleHBsaWNpdCBzZWFyY2hlcyBvZiAvdXNyL2xpYikgb3IgaW5jb3JyZWN0IFJQQVRIcyAoYmFkCitjYW5vbmljYWxpc2F0aW9uIHJlc3VsdGluZyBpbiByZWxhdGl2ZSBwYXRocykuCisKK1NpbXBseSBkZWxldGUgYWxsIHRoZSBjcmF6eSwgYW5kIHJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBjYWxsIHRvIHBrZy1jb25maWcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gc3RpbGwgcmVmdXNlIHRvIGNvbnNpZGVyIHBrZy1jb25maWddCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0KKyBnZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQgICAgICAgICAgICAgfCAgOTkgKy0tLS0tLS0tLS0tLS0tLS0KKyAuLi4vZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgfCAgMTIgKy0KKyBsaWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00ICAgICAgfCAgOTkgKysrLS0tLS0tLS0tLS0tLS0KKyBsaWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgICAgICAgfCAxMDQgKysrLS0tLS0tLS0tLS0tLS0tCisgbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNCAgICAgICAgICAgIHwgIDk5ICsrKy0tLS0tLS0tLS0tLS0tCisgbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00ICAgICAgICAgICAgIHwgMTA0ICsrKy0tLS0tLS0tLS0tLS0tLQorIGxpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jICAgICAgICB8ICAxMiArLQorIGxpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jICAgICB8ICAxMiArLQorIDggZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgNDU0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00IGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CitpbmRleCAwNWI5NTUwLi4wMzFlZTY1IDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CisrKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKK0BAIC0xMyw2ICsxMyw3IEBAIGRubCBnbF9MSUJYTUwoRk9SQ0UtSU5DTFVERUQpCisgZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYnhtbC4KKyBBQ19ERUZVTihbZ2xfTElCWE1MXSwKKyBbCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKyAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktdKQorIAorICAgaWZlbHNlKFskMV0sICwgWworQEAgLTMwLDEwMCArMzEsMTAgQEAgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgICBJTkNYTUw9CisgICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYnhtbDIsIG9yIGhhdmUgdG8gdXNlCistICAgICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJ4bWxdLCBbCistICAgICAgICBnbF9jdl9saWJ4bWw9bm8KKy0gICAgICAgIGdsX2N2X0xJQlhNTD0KKy0gICAgICAgIGdsX2N2X0xUTElCWE1MPQorLSAgICAgICAgZ2xfY3ZfSU5DWE1MPQorLSAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKy0gICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYnhtbDIgYW5kIGRlZmluZSBMSUJYTUwyLCBMVExJQlhNTDIgYW5kIElOQ1hNTDIKKy0gICAgICAgIGRubCBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgeG1sMi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgZG5sIFVzZSBhIHRlc3QgcHJvZ3JhbSB0aGF0IHRyaWVzIHRvIGludm9rZSB4bWxGcmVlLiBPbiBDeWd3aW4gMS43LngsCistICAgICAgICBkbmwgbGlieG1sMiBpcyBidWlsdCBpbiBzdWNoIGEgd2F5IHRoYXQgdXNlcyBvZiB4bWxGcmVlIHdvcmsgZmluZSB3aXRoCistICAgICAgICBkbmwgLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IGJ1dCBsZWFkIHRvIGEgbGluayBlcnJvciB3aXRoCistICAgICAgICBkbmwgLVdsLC0tZGlzYWJsZS1hdXRvLWltcG9ydC4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbeG1sMl0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KKy0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgorLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOworLSAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7CistICAgICAgICAgIF0sCistICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgorLSAgICAgICAgICBdKQorLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DWE1MMiIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgorLSAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgorLSAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgICAgZ2xfY3ZfSU5DWE1MPSIkSU5DWE1MMiIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvbGlieG1sMi4KKy0gICAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjUsIDxsaWJ4bWwveG1sdmVyc2lvbi5oPiBpcyBzZWxmLWNvbnRhaW5lZC4KKy0gICAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjYsIGl0IGluY2x1ZGVzIDxsaWJ4bWwveG1sZXhwb3J0cy5oPiB3aGljaCBpcworLSAgICAgICAgICAgIGRubCBzZWxmLWNvbnRhaW5lZC4KKy0gICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPQorLSAgICAgICAgICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDxsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmg+XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0pCistICAgICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbGV4cG9ydHNfaCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWxleHBvcnRzXC5oJCwsJ2AKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgICAgaWYgdGVzdCAteiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oPl0sCistICAgICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaF0pCistICAgICAgICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGlieG1sMl9saWJ4bWxfeG1sdmVyc2lvbl9oIiB8IHNlZCAtZSAncywubGlieG1sLnhtbHZlcnNpb25cLmgkLCwnYAorLSAgICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiICYmIHRlc3QgLWQgIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKKy0gICAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYnhtbF0pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYnhtbF0pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGlieG1sID0geWVzOyB0aGVuCistICAgICAgICBMSUJYTUw9IiRnbF9jdl9MSUJYTUwiCistICAgICAgICBMVExJQlhNTD0iJGdsX2N2X0xUTElCWE1MIgorLSAgICAgICAgSU5DWE1MPSIkZ2xfY3ZfSU5DWE1MIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKysgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbWE1MXSwgW2xpYnhtbC0yLjBdKQorKyAgICAgIExJQlhNTD0kWE1MX0xJQlMKKysgICAgICBMVExJQlhNTD0kWE1MX0xJQlMKKysgICAgICBJTkNYTUw9JFhNTF9DRkxBR1MKKyAgICAgZmkKKyAgIF0pCisgICBBQ19TVUJTVChbTElCWE1MXSkKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK2luZGV4IDJjZmQ0YTguLmQ0MmM4YjQgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTIyLDE1ICsyMiwxNSBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorIC8qIDxjci1mb250cy5oPiBoYXMgYSBicm9rZW4gZG91YmxlLWluY2x1c2lvbiBndWFyZCBpbiBsaWJjcm9jby0wLjYuMS4gICovCisgI2lmbmRlZiBfX0NSX0ZPTlRTX0hfXworLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CisgI2VuZGlmCistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSAidGVybS1vc3RyZWFtLmgiCisgI2luY2x1ZGUgImhhc2guaCIKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00IGIvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNAoraW5kZXggYmM1M2NjNi4uMTBiMjQ1NSAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKK0BAIC0xLDk5ICsxLDM0IEBACistIyBsaWJjcm9jby5tNCBzZXJpYWwgMworLWRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIGxpYmNyb2NvLm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTcpCisrZG5sIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCisgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorLWRubCBnbF9MSUJDUk9DTworLWRubCAgIGdpdmVzIHRoZSB1c2VyIHRoZSBvcHRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHRoZSBpbmNsdWRlZCBvcgorLWRubCAgIGFuIGV4dGVybmFsIGxpYmNyb2NvLgorLWRubCBnbF9MSUJDUk9DTyhGT1JDRS1JTkNMVURFRCkKKy1kbmwgICBmb3JjZXMgdGhlIHVzZSBvZiB0aGUgaW5jbHVkZWQgb3IgYW4gZXh0ZXJuYWwgbGliY3JvY28uCisgQUNfREVGVU4oW2dsX0xJQkNST0NPXSwKKyBbCistICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworLSAgICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorLSAgICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKKy0gIF0pCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysgIGRubCBsaWJjcm9jbyBkZXBlbmRzIG9uIGxpYmdsaWIuCisrICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKKyAKKy0gIGlmZWxzZShbJDFdLCAsIFsKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYmNyb2NvIGlzIHJlcXVlc3RlZF0pCistICAgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1saWJjcm9jb10sCistICAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvICB1c2UgdGhlIGxpYmNyb2NvIGluY2x1ZGVkIGhlcmVdLAorLSAgICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCistICAgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkXSkKKy0gIF0sIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kMV0pCisrICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgbGliY3JvY28gaXMgcmVxdWVzdGVkXSkKKysgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1saWJjcm9jb10sCisrICAgIFsgIC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyAgdXNlIHRoZSBsaWJjcm9jbyBpbmNsdWRlZCBoZXJlXSwKKysgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKysgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKysgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZF0pCisgCisgICBnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQ9IiRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZCIKKyAgIExJQkNST0NPPQorICAgTFRMSUJDUk9DTz0KKyAgIElOQ0NST0NPPQorLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmNyb2NvLTAuNiwgb3IgaGF2ZSB0bworLSAgICAgIGRubCB1c2UgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmNyb2NvXSwgWworLSAgICAgICAgZ2xfY3ZfbGliY3JvY289bm8KKy0gICAgICAgIGdsX2N2X0xJQkNST0NPPQorLSAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0KKy0gICAgICAgIGdsX2N2X0lOQ0NST0NPPQorLSAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmNyb2NvIGFuZCBkZWZpbmUgTElCQ1JPQ09fMF82LCBMVExJQkNST0NPXzBfNiBhbmQKKy0gICAgICAgIGRubCBJTkNDUk9DT18wXzYgYWNjb3JkaW5nbHkuCistICAgICAgICBkbmwgRG9uJ3QgdXNlIGNyb2NvLTAuNi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtjcm9jby0wLjZdLCBbZ2xpYi0yLjBdKQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCQ1JPQ09fMF82IgorLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DQ1JPQ09fMF82IgorLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSIkSU5DQ1JPQ09fMF82IgorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4KKy0gICAgICAgICAgICBkbmwgL3Vzci9pbmNsdWRlL2xpYmNyb2NvLTAuNi9saWJjcm9jby4KKy0gICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaF0pCistICAgICAgICAgICAgICAgbGliY3JvY29faW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJjcm9jb18wXzZfbGliY3JvY29fbGliY3JvY29fY29uZmlnX2giIHwgc2VkIC1lICdzLC5saWJjcm9jby1jb25maWdcLmgkLCwnYAorLSAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRsaWJjcm9jb19pbmNsdWRlX2RpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgIGdsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iLUkkbGliY3JvY29faW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgIGZpCistICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgIGZpCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICAgIF0pCistICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGliY3JvY29dKQorLSAgICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb10pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGliY3JvY28gPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQkNST0NPPSIkZ2xfY3ZfTElCQ1JPQ08iCistICAgICAgICBMVExJQkNST0NPPSIkZ2xfY3ZfTFRMSUJDUk9DTyIKKy0gICAgICAgIElOQ0NST0NPPSIkZ2xfY3ZfSU5DQ1JPQ08iCistICAgICAgZWxzZQorLSAgICAgICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPXllcworLSAgICAgIGZpCistICAgIGZpCistICBdKQorKyAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtDUk9DT10sIFtsaWJjcm9jby0wLjZdKQorKyAgICBMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBMVExJQkNST0NPPSRDUk9DT19MSUJTCisrICAgIElOQ0NST0NPPSRDUk9DT19DRkxBR1MKKysgIGZpCisgICBBQ19TVUJTVChbTElCQ1JPQ09dKQorICAgQUNfU1VCU1QoW0xUTElCQ1JPQ09dKQorICAgQUNfU1VCU1QoW0lOQ0NST0NPXSkKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKK2luZGV4IGJlZjZmYTMuLjg4NDE3NTUgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNAorQEAgLTEsMTA1ICsxLDMxIEBACistIyBsaWJnbGliLm00IHNlcmlhbCA0CistZG5sIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgbGliZ2xpYi5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjE3KQorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCisgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorLWRubCBnbF9MSUJHTElCCistZG5sICAgZ2l2ZXMgdGhlIHVzZXIgdGhlIG9wdGlvbiB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIGluY2x1ZGVkIG9yCistZG5sICAgYW4gZXh0ZXJuYWwgbGliZ2xpYi4KKy1kbmwgZ2xfTElCR0xJQihGT1JDRS1JTkNMVURFRCkKKy1kbmwgICBmb3JjZXMgdGhlIHVzZSBvZiB0aGUgaW5jbHVkZWQgb3IgYW4gZXh0ZXJuYWwgbGliZ2xpYi4KKyBBQ19ERUZVTihbZ2xfTElCR0xJQl0sCisgWworLSAgaWZlbHNlKFskMV0sICwgWworLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorLSAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCistICAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWdsaWIgICAgdXNlIHRoZSBnbGliMiBpbmNsdWRlZCBoZXJlXSwKKy0gICAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCistICAgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9bm9dKQorLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZF0pCistICBdLCBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kMV0pCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnbGliIGlzIHJlcXVlc3RlZF0pCisrICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCisrICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCisrICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKysgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9bm9dKQorKyAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWRdKQorIAorICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9IiRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkIgorICAgTElCR0xJQj0KKyAgIExUTElCR0xJQj0KKyAgIElOQ0dMSUI9CistICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworLSAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJnbGliLTIuMCwgb3IgaGF2ZSB0byB1c2UKKy0gICAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmdsaWJdLCBbCistICAgICAgICBnbF9jdl9saWJnbGliPW5vCistICAgICAgICBnbF9jdl9MSUJHTElCPQorLSAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPQorLSAgICAgICAgZ2xfY3ZfSU5DR0xJQj0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJnbGliMiBhbmQgZGVmaW5lIExJQkdMSUJfMl8wLCBMVExJQkdMSUJfMl8wIGFuZAorLSAgICAgICAgZG5sIElOQ0dMSUJfMl8wIGFjY29yZGluZ2x5LgorLSAgICAgICAgZG5sIERvbid0IHVzZSBnbGliLWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KKy0gICAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCistICAgICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCistICAgICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2dsaWItMi4wXSkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkdMSUJfMl8wIgorLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICBdKQorLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0dMSUJfMl8wIgorLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iJElOQ0dMSUJfMl8wIgorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvZ2xpYi0yLjAKKy0gICAgICAgICAgICBkbmwgYW5kIC91c3IvbGliL2dsaWItMi4wL2luY2x1ZGUuCistICAgICAgICAgICAgaWYgdGVzdCAtbiAiJExJQkdMSUJfMl8wX1BSRUZJWCI7IHRoZW4KKy0gICAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCistICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgICBnbF9jdl9JTkNHTElCPSItSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCistICAgICAgICAgICAgICAgIF0pCistICAgICAgICAgICAgZmkKKy0gICAgICAgICAgZmkKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgorLSAgICAgICAgZmkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCistICAgICAgXSkKKy0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnbGliXSkKKy0gICAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl0pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGliZ2xpYiA9IHllczsgdGhlbgorLSAgICAgICAgTElCR0xJQj0iJGdsX2N2X0xJQkdMSUIiCistICAgICAgICBMVExJQkdMSUI9IiRnbF9jdl9MVExJQkdMSUIiCistICAgICAgICBJTkNHTElCPSIkZ2xfY3ZfSU5DR0xJQiIKKy0gICAgICBlbHNlCistICAgICAgICBnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgICBmaQorLSAgICBmaQorLSAgXSkKKysgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtHTElCXSwgW2dsaWItMi4wXSkKKysgICAgTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgTFRMSUJHTElCPSIkR0xJQl9MSUJTIgorKyAgICBJTkNHTElCPSIkR0xJQl9DRkxBR1MiCisrICBmaQorICAgQUNfU1VCU1QoW0xJQkdMSUJdKQorICAgQUNfU1VCU1QoW0xUTElCR0xJQl0pCisgICBBQ19TVUJTVChbSU5DR0xJQl0pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNCBiL2xpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliY3JvY28ubTQKK2luZGV4IGJjNTNjYzYuLjEwYjI0NTUgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmNyb2NvLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmNyb2NvLm00CitAQCAtMSw5OSArMSwzNCBAQAorLSMgbGliY3JvY28ubTQgc2VyaWFsIDMKKy1kbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBsaWJjcm9jby5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjE3KQorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCQ1JPQ08KKy1kbmwgICBnaXZlcyB0aGUgdXNlciB0aGUgb3B0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSB0aGUgaW5jbHVkZWQgb3IKKy1kbmwgICBhbiBleHRlcm5hbCBsaWJjcm9jby4KKy1kbmwgZ2xfTElCQ1JPQ08oRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmNyb2NvLgorIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgWworLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KKy0gICAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCistICBdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorKyAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCisgCistICBpZmVsc2UoWyQxXSwgLCBbCistICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJjcm9jbyBpcyByZXF1ZXN0ZWRdKQorLSAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyAgdXNlIHRoZSBsaWJjcm9jbyBpbmNsdWRlZCBoZXJlXSwKKy0gICAgICBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZF0pCistICBdLCBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYmNyb2NvIGlzIHJlcXVlc3RlZF0pCisrICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28gIHVzZSB0aGUgbGliY3JvY28gaW5jbHVkZWQgaGVyZV0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCisrICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWRdKQorIAorICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQiCisgICBMSUJDUk9DTz0KKyAgIExUTElCQ1JPQ089CisgICBJTkNDUk9DTz0KKy0gIGlmZWxzZShbJDFdLCBbeWVzXSwgLCBbCistICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJjcm9jby0wLjYsIG9yIGhhdmUgdG8KKy0gICAgICBkbmwgdXNlIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJjcm9jb10sIFsKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvPW5vCistICAgICAgICBnbF9jdl9MSUJDUk9DTz0KKy0gICAgICAgIGdsX2N2X0xUTElCQ1JPQ089CistICAgICAgICBnbF9jdl9JTkNDUk9DTz0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJjcm9jbyBhbmQgZGVmaW5lIExJQkNST0NPXzBfNiwgTFRMSUJDUk9DT18wXzYgYW5kCistICAgICAgICBkbmwgSU5DQ1JPQ09fMF82IGFjY29yZGluZ2x5LgorLSAgICAgICAgZG5sIERvbid0IHVzZSBjcm9jby0wLjYtY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbY3JvY28tMC42XSwgW2dsaWItMi4wXSkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkNST0NPXzBfNiIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluCistICAgICAgICAgICAgZG5sIC91c3IvaW5jbHVkZS9saWJjcm9jby0wLjYvbGliY3JvY28uCistICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmhdKQorLSAgICAgICAgICAgICAgIGxpYmNyb2NvX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGliY3JvY29fMF82X2xpYmNyb2NvX2xpYmNyb2NvX2NvbmZpZ19oIiB8IHNlZCAtZSAncywubGliY3JvY28tY29uZmlnXC5oJCwsJ2AKKy0gICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkbGliY3JvY29faW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICAgICBnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ii1JJGxpYmNyb2NvX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICBdKQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYmNyb2NvXSkKKy0gICAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29dKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmNyb2NvID0geWVzOyB0aGVuCistICAgICAgICBMSUJDUk9DTz0iJGdsX2N2X0xJQkNST0NPIgorLSAgICAgICAgTFRMSUJDUk9DTz0iJGdsX2N2X0xUTElCQ1JPQ08iCistICAgICAgICBJTkNDUk9DTz0iJGdsX2N2X0lOQ0NST0NPIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgICBmaQorLSAgICBmaQorLSAgXSkKKysgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JPQ09dLCBbbGliY3JvY28tMC42XSkKKysgICAgTElCQ1JPQ089JENST0NPX0xJQlMKKysgICAgTFRMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBJTkNDUk9DTz0kQ1JPQ09fQ0ZMQUdTCisrICBmaQorICAgQUNfU1VCU1QoW0xJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtMVExJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtJTkNDUk9DT10pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00IGIvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00CitpbmRleCBiZWY2ZmEzLi44ODQxNzU1IDEwMDY0NAorLS0tIGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmdsaWIubTQKK0BAIC0xLDEwNSArMSwzMSBAQAorLSMgbGliZ2xpYi5tNCBzZXJpYWwgNAorLWRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIGxpYmdsaWIubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xNykKKytkbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCR0xJQgorLWRubCAgIGdpdmVzIHRoZSB1c2VyIHRoZSBvcHRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHRoZSBpbmNsdWRlZCBvcgorLWRubCAgIGFuIGV4dGVybmFsIGxpYmdsaWIuCistZG5sIGdsX0xJQkdMSUIoRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmdsaWIuCisgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorIFsKKy0gIGlmZWxzZShbJDFdLCAsIFsKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdsaWIgaXMgcmVxdWVzdGVkXSkKKy0gICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCistICAgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWRdKQorLSAgXSwgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorKyAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2xpYiAgICB1c2UgdGhlIGdsaWIyIGluY2x1ZGVkIGhlcmVdLAorKyAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKysgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkXSkKKyAKKyAgIGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZCIKKyAgIExJQkdMSUI9CisgICBMVExJQkdMSUI9CisgICBJTkNHTElCPQorLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliZ2xpYi0yLjAsIG9yIGhhdmUgdG8gdXNlCistICAgICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJnbGliXSwgWworLSAgICAgICAgZ2xfY3ZfbGliZ2xpYj1ubworLSAgICAgICAgZ2xfY3ZfTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0xUTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0lOQ0dMSUI9CistICAgICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliZ2xpYjIgYW5kIGRlZmluZSBMSUJHTElCXzJfMCwgTFRMSUJHTElCXzJfMCBhbmQKKy0gICAgICAgIGRubCBJTkNHTElCXzJfMCBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgZ2xpYi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtnbGliLTIuMF0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJHTElCXzJfMCIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9IiRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2dsaWItMi4wCistICAgICAgICAgICAgZG5sIGFuZCAvdXNyL2xpYi9nbGliLTIuMC9pbmNsdWRlLgorLSAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJHTElCXzJfMF9QUkVGSVgiOyB0aGVuCistICAgICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgIGZpCistICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgIGZpCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICAgIF0pCistICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2xpYl0pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJdKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmdsaWIgPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQkdMSUI9IiRnbF9jdl9MSUJHTElCIgorLSAgICAgICAgTFRMSUJHTElCPSIkZ2xfY3ZfTFRMSUJHTElCIgorLSAgICAgICAgSU5DR0xJQj0iJGdsX2N2X0lOQ0dMSUIiCistICAgICAgZWxzZQorLSAgICAgICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKy0gICAgZmkKKy0gIF0pCisrICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0xJQl0sIFtnbGliLTIuMF0pCisrICAgIExJQkdMSUI9IiRHTElCX0xJQlMiCisrICAgIExUTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgSU5DR0xJQj0iJEdMSUJfQ0ZMQUdTIgorKyAgZmkKKyAgIEFDX1NVQlNUKFtMSUJHTElCXSkKKyAgIEFDX1NVQlNUKFtMVExJQkdMSUJdKQorICAgQUNfU1VCU1QoW0lOQ0dMSUJdKQorZGlmZiAtLWdpdCBhL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLmMKK2luZGV4IDM2NzViNWYuLjgxMWU1NDYgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0uYworKysrIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLmMKK0BAIC0yOCwxNSArMjgsMTUgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgCistI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgorLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+CistI2luY2x1ZGUgPGNyLXN0eWxlLmg+CistI2luY2x1ZGUgPGNyLXJnYi5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KKyAvKiA8Y3ItZm9udHMuaD4gaGFzIGEgYnJva2VuIGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQgaW4gbGliY3JvY28tMC42LjEuICAqLworICNpZm5kZWYgX19DUl9GT05UU19IX18KKy0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+CisrIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgorICNlbmRpZgorLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CisgCisgI2luY2x1ZGUgInRlcm0tb3N0cmVhbS5oIgorICNpbmNsdWRlICJoYXNoLmgiCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworaW5kZXggMmNmZDRhOC4uZDQyYzhiNCAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCisrKysgYi9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTIyLDE1ICsyMiwxNSBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorIC8qIDxjci1mb250cy5oPiBoYXMgYSBicm9rZW4gZG91YmxlLWluY2x1c2lvbiBndWFyZCBpbiBsaWJjcm9jby0wLjYuMS4gICovCisgI2lmbmRlZiBfX0NSX0ZPTlRTX0hfXworLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CisgI2VuZGlmCistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSAidGVybS1vc3RyZWFtLmgiCisgI2luY2x1ZGUgImhhc2guaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZWYyYTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1bUEFUQ0hdIERpc2FibGUgdGhlIHRlc3QgdG8gY29udmVydCBldWMtanAKLQotUmVtb3ZlIHRoZSB0ZXN0ICJUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOgotTm8gY29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzIHByb3ZpZGVkIgotc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBIUC1VWCBhbmQgaWYgdGhlIGV1Yy1qcCBpcyBub3QKLWluc3RhbGxlZCBvbiB0aGUgaG9zdCwgdGhlIGRlcGVuZGVuY2Ugd2lsbCBiZSBidWlsdCB3aXRob3V0Ci1pY29udiBzdXBwb3J0IGFuZCB3aWxsIGNhdXNlIGd1aWxlLW5hdGl2ZSBidWlsZGluZyBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpY29udi5tNCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pY29udi5tNCBiL2ljb252Lm00Ci1pbmRleCA0ZTM3MzYzLi4zNWY1NGJkIDEwMDY0NAotLS0tIGEvaWNvbnYubTQKLSsrKyBiL2ljb252Lm00Ci1AQCAtMTY1LDYgKzE2NSw3IEBAIEFDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKLSAgICAgICB9Ci0gICB9Ci0gI2VuZGlmCi0rI2lmIDAKLSAgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcwotICAgICAgcHJvdmlkZWQuICAqLwotICAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLwotQEAgLTE3Niw2ICsxNzcsNyBAQCBBQ19ERUZVTihbQU1fSUNPTlZfTElOS10sCi0gICAgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KLSAgICAgICAmJiBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkpCi0gICAgIHJlc3VsdCB8PSAxNjsKLSsjZW5kaWYKLSAgIHJldHVybiByZXN1bHQ7Ci0gXV0pXSwKLSAgICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwgLAotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL01ha2VmaWxlLmluLmluIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9NYWtlZmlsZS5pbi5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhjMjkzZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL01ha2VmaWxlLmluLmluCisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLSMgTWFrZWZpbGUgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KLSMgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwNywgMjAwOS0yMDEwIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PgotIwotIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAotIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKLSMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCi0jIHdpdGhvdXQgYW55IHdhcnJhbnR5LgotIwotIyBPcmlnaW46IGdldHRleHQtMC4xOS44Ci1HRVRURVhUX01BQ1JPX1ZFUlNJT04gPSAwLjE5Ci0KLVBBQ0tBR0UgPSBAUEFDS0FHRUAKLVZFUlNJT04gPSBAVkVSU0lPTkAKLVBBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAotCi1TRUQgPSBAU0VEQAotU0hFTEwgPSAvYmluL3NoCi1AU0VUX01BS0VACi0KLXNyY2RpciA9IEBzcmNkaXJACi10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACi1WUEFUSCA9IEBzcmNkaXJACi0KLXByZWZpeCA9IEBwcmVmaXhACi1leGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAotZGF0YWRpciA9IEBkYXRhZGlyQAotbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKLWdldHRleHRzcmNkaXIgPSAkKGRhdGFkaXIpL2dldHRleHQvcG8KLQotSU5TVEFMTCA9IEBJTlNUQUxMQAotSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKLQotIyBXZSB1c2UgJChta2Rpcl9wKS4KLSMgSW4gYXV0b21ha2UgPD0gMS45LngsICQobWtkaXJfcCkgaXMgZGVmaW5lZCBlaXRoZXIgYXMgIm1rZGlyIC1wIC0tIiBvciBhcwotIyAiJChta2luc3RhbGxkaXJzKSIgb3IgYXMgIiQoaW5zdGFsbF9zaCkgLWQiLiBGb3IgdGhlc2UgYXV0b21ha2UgdmVyc2lvbnMsCi0jIEBpbnN0YWxsX3NoQCBkb2VzIG5vdCBzdGFydCB3aXRoICQoU0hFTEwpLCBzbyB3ZSBhZGQgaXQuCi0jIEluIGF1dG9tYWtlID49IDEuMTAsIEBta2Rpcl9wQCBpcyBkZXJpdmVkIGZyb20gJHtNS0RJUl9QfSwgd2hpY2ggaXMgZGVmaW5lZAotIyBlaXRoZXIgYXMgIi9wYXRoL3RvL21rZGlyIC1wIiBvciAiLi4uL2luc3RhbGwtc2ggLWMgLWQiLiBGb3IgdGhlc2UgYXV0b21ha2UKLSMgdmVyc2lvbnMsICQobWtpbnN0YWxsZGlycykgYW5kICQoaW5zdGFsbF9zaCkgYXJlIHVudXNlZC4KLW1raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSBAaW5zdGFsbF9zaEAgLWQKLWluc3RhbGxfc2ggPSAkKFNIRUxMKSBAaW5zdGFsbF9zaEAKLU1LRElSX1AgPSBATUtESVJfUEAKLW1rZGlyX3AgPSBAbWtkaXJfcEAKLQotIyBXaGVuIGJ1aWxkaW5nIGdldHRleHQtdG9vbHMsIHdlIHByZWZlciB0byB1c2UgdGhlIGJ1aWx0IHByb2dyYW1zCi0jIHJhdGhlciB0aGFuIGluc3RhbGxlZCBwcm9ncmFtcy4gIEhvd2V2ZXIsIHdlIGNhbid0IGRvIHRoYXQgd2hlbiB3ZQotIyBhcmUgY3Jvc3MgY29tcGlsaW5nLgotQ1JPU1NfQ09NUElMSU5HID0gQENST1NTX0NPTVBJTElOR0AKLQotR01TR0ZNVF8gPSBAR01TR0ZNVEAKLUdNU0dGTVRfbm8gPSBAR01TR0ZNVEAKLUdNU0dGTVRfeWVzID0gQEdNU0dGTVRfMDE1QAotR01TR0ZNVCA9ICQoR01TR0ZNVF8kKFVTRV9NU0dDVFhUKSkKLU1TR0ZNVF8gPSBATVNHRk1UQAotTVNHRk1UX25vID0gQE1TR0ZNVEAKLU1TR0ZNVF95ZXMgPSBATVNHRk1UXzAxNUAKLU1TR0ZNVCA9ICQoTVNHRk1UXyQoVVNFX01TR0NUWFQpKQotWEdFVFRFWFRfID0gQFhHRVRURVhUQAotWEdFVFRFWFRfbm8gPSBAWEdFVFRFWFRACi1YR0VUVEVYVF95ZXMgPSBAWEdFVFRFWFRfMDE1QAotWEdFVFRFWFQgPSAkKFhHRVRURVhUXyQoVVNFX01TR0NUWFQpKQotTVNHTUVSR0UgPSBtc2dtZXJnZQotTVNHTUVSR0VfVVBEQVRFID0gQE1TR01FUkdFQCAtLXVwZGF0ZQotTVNHSU5JVCA9IG1zZ2luaXQKLU1TR0NPTlYgPSBtc2djb252Ci1NU0dGSUxURVIgPSBtc2dmaWx0ZXIKLQotUE9GSUxFUyA9IEBQT0ZJTEVTQAotR01PRklMRVMgPSBAR01PRklMRVNACi1VUERBVEVQT0ZJTEVTID0gQFVQREFURVBPRklMRVNACi1EVU1NWVBPRklMRVMgPSBARFVNTVlQT0ZJTEVTQAotRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluLmluIHJlbW92ZS1wb3RjZGF0ZS5zaW4gXAotJChESVNURklMRVMuY29tbW9uLmV4dHJhMSkgJChESVNURklMRVMuY29tbW9uLmV4dHJhMikgJChESVNURklMRVMuY29tbW9uLmV4dHJhMykKLURJU1RGSUxFUyA9ICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMgUE9URklMRVMuaW4gXAotJChQT0ZJTEVTKSAkKEdNT0ZJTEVTKSBcCi0kKERJU1RGSUxFUy5leHRyYTEpICQoRElTVEZJTEVTLmV4dHJhMikgJChESVNURklMRVMuZXh0cmEzKQotCi1QT1RGSUxFUyA9IFwKLQotQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACi0KLVBPRklMRVNERVBTXyA9ICQoc3JjZGlyKS8kKERPTUFJTikucG90Ci1QT0ZJTEVTREVQU195ZXMgPSAkKFBPRklMRVNERVBTXykKLVBPRklMRVNERVBTX25vID0KLVBPRklMRVNERVBTID0gJChQT0ZJTEVTREVQU18kKFBPX0RFUEVORFNfT05fUE9UKSkKLQotRElTVEZJTEVTREVQU18gPSB1cGRhdGUtcG8KLURJU1RGSUxFU0RFUFNfeWVzID0gJChESVNURklMRVNERVBTXykKLURJU1RGSUxFU0RFUFNfbm8gPQotRElTVEZJTEVTREVQUyA9ICQoRElTVEZJTEVTREVQU18kKERJU1RfREVQRU5EU19PTl9VUERBVEVfUE8pKQotCi0jIE1ha2V2YXJzIGdldHMgaW5zZXJ0ZWQgaGVyZS4gKERvbid0IHJlbW92ZSB0aGlzIGxpbmUhKQotCi0uU1VGRklYRVM6Ci0uU1VGRklYRVM6IC5wbyAuZ21vIC5tbyAuc2VkIC5zaW4gLm5vcCAucG8tY3JlYXRlIC5wby11cGRhdGUKLQotLnBvLm1vOgotCUBlY2hvICIkKE1TR0ZNVCkgLWMgLW8gJEAgJDwiOyBcCi0JJChNU0dGTVQpIC1jIC1vIHQtJEAgJDwgJiYgbXYgdC0kQCAkQAotCi0ucG8uZ21vOgotCUBsYW5nPWBlY2hvICQqIHwgc2VkIC1lICdzLC4qLywsJ2A7IFwKLQl0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKLQllY2hvICIkJHtjZGNtZH1ybSAtZiAkJHtsYW5nfS5nbW8gJiYgJChHTVNHRk1UKSAtYyAtLXN0YXRpc3RpY3MgLS12ZXJib3NlIC1vICQke2xhbmd9LmdtbyAkJHtsYW5nfS5wbyI7IFwKLQljZCAkKHNyY2RpcikgJiYgcm0gLWYgJCR7bGFuZ30uZ21vICYmICQoR01TR0ZNVCkgLWMgLS1zdGF0aXN0aWNzIC0tdmVyYm9zZSAtbyB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5wbyAmJiBtdiB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5nbW8KLQotLnNpbi5zZWQ6Ci0Jc2VkIC1lICcvXiMvZCcgJDwgPiB0LSRACi0JbXYgdC0kQCAkQAotCi0KLWFsbDogYWxsLUBVU0VfTkxTQAotCi1hbGwteWVzOiBzdGFtcC1wbwotYWxsLW5vOgotCi0jIEVuc3VyZSB0aGF0IHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgdGhpcyBNYWtlZmlsZS5pbi5pbiBhcmUgaW4gc3luYy4KLUNIRUNLX01BQ1JPX1ZFUlNJT04gPSBcCi0JdGVzdCAiJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIiA9ICJAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgXAotCSAgfHwgeyBlY2hvICIqKiogZXJyb3I6IGdldHRleHQgaW5mcmFzdHJ1Y3R1cmUgbWlzbWF0Y2g6IHVzaW5nIGEgTWFrZWZpbGUuaW4uaW4gZnJvbSBnZXR0ZXh0IHZlcnNpb24gJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIGJ1dCB0aGUgYXV0b2NvbmYgbWFjcm9zIGFyZSBmcm9tIGdldHRleHQgdmVyc2lvbiBAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgMT4mMjsgXAotCSAgICAgICBleGl0IDE7IFwKLQkgICAgIH0KLQotIyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBvbmx5IGNyZWF0ZWQgd2hlbiBuZWVkZWQuIFdoZW4geGdldHRleHQgZmluZHMgbm8KLSMgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMsIG5vICQoc3JjZGlyKS8kKERPTUFJTikucG90IGlzIGNyZWF0ZWQgKGJlY2F1c2UKLSMgd2UgZG9uJ3Qgd2FudCB0byBib3RoZXIgdHJhbnNsYXRvcnMgd2l0aCBlbXB0eSBQT1QgZmlsZXMpLiBXZSBhc3N1bWUgdGhhdAotIyBMSU5HVUFTIGlzIGVtcHR5IGluIHRoaXMgY2FzZSwgaS5lLiAkKFBPRklMRVMpIGFuZCAkKEdNT0ZJTEVTKSBhcmUgZW1wdHkuCi0jIEluIHRoaXMgY2FzZSwgc3RhbXAtcG8gaXMgYSBub3AgKGkuZS4gYSBwaG9ueSB0YXJnZXQpLgotCi0jIHN0YW1wLXBvIGlzIGEgdGltZXN0YW1wIGRlbm90aW5nIHRoZSBsYXN0IHRpbWUgYXQgd2hpY2ggdGhlIENBVEFMT0dTIGhhdmUKLSMgYmVlbiBsb29zZWx5IHVwZGF0ZWQuIEl0cyBwdXJwb3NlIGlzIHRoYXQgd2hlbiBhIGRldmVsb3BlciBvciB0cmFuc2xhdG9yCi0jIGNoZWNrcyBvdXQgdGhlIHBhY2thZ2UgdmlhIENWUywgYW5kIHRoZSAkKERPTUFJTikucG90IGZpbGUgaXMgbm90IGluIENWUywKLSMgIm1ha2UiIHdpbGwgdXBkYXRlIHRoZSAkKERPTUFJTikucG90IGFuZCB0aGUgJChDQVRBTE9HUyksIGJ1dCBzdWJzZXF1ZW50Ci0jIGludm9jYXRpb25zIG9mICJtYWtlIiB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgdGltZXN0YW1wIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkKLSMgaWYgdXBkYXRpbmcgdGhlICQoQ0FUQUxPR1MpIHdvdWxkIGFsd2F5cyB0b3VjaCB0aGVtOyBob3dldmVyLCB0aGUgcnVsZSBmb3IKLSMgJChQT0ZJTEVTKSBoYXMgYmVlbiBkZXNpZ25lZCB0byBub3QgdG91Y2ggZmlsZXMgdGhhdCBkb24ndCBuZWVkIHRvIGJlCi0jIGNoYW5nZWQuCi1zdGFtcC1wbzogJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QKLQlAJChDSEVDS19NQUNST19WRVJTSU9OKQotCXRlc3QgISAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdCB8fCBcCi0JICB0ZXN0IC16ICIkKEdNT0ZJTEVTKSIgfHwgJChNQUtFKSAkKEdNT0ZJTEVTKQotCUB0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgeyBcCi0JICBlY2hvICJ0b3VjaCBzdGFtcC1wbyIgJiYgXAotCSAgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1wb1QgJiYgXAotCSAgbXYgc3RhbXAtcG9UIHN0YW1wLXBvOyBcCi0JfQotCi0jIE5vdGU6IFRhcmdldCAnYWxsJyBtdXN0IG5vdCBkZXBlbmQgb24gdGFyZ2V0ICckKERPTUFJTikucG90LXVwZGF0ZScsCi0jIG90aGVyd2lzZSBwYWNrYWdlcyBsaWtlIEdDQyBjYW4gbm90IGJlIGJ1aWx0IGlmIG9ubHkgcGFydHMgb2YgdGhlIHNvdXJjZQotIyBoYXZlIGJlZW4gZG93bmxvYWRlZC4KLQotIyBUaGlzIHRhcmdldCByZWJ1aWxkcyAkKERPTUFJTikucG90OyBpdCBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uLgotIyBOb3RlIHRoYXQgJChET01BSU4pLnBvdCBpcyBub3QgdG91Y2hlZCBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2hhbmdlZC4KLSMgVGhlIGRldGVybWluYXRpb24gb2Ygd2hldGhlciB0aGUgcGFja2FnZSB4eXogaXMgYSBHTlUgb25lIGlzIGJhc2VkIG9uIHRoZQotIyBoZXVyaXN0aWMgd2hldGhlciBzb21lIGZpbGUgaW4gdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkgbWVudGlvbnMgIkdOVSB4eXoiLgotIyBJZiBHTlUgJ2ZpbmQnIGlzIGF2YWlsYWJsZSwgd2UgYXZvaWQgZ3JlcHBpbmcgdGhyb3VnaCBtb25zdGVyIGZpbGVzLgotJChET01BSU4pLnBvdC11cGRhdGU6ICQoUE9URklMRVMpICQoc3JjZGlyKS9QT1RGSUxFUy5pbiByZW1vdmUtcG90Y2RhdGUuc2VkCi0JcGFja2FnZV9nbnU9IiQoUEFDS0FHRV9HTlUpIjsgXAotCXRlc3QgLW4gIiQkcGFja2FnZV9nbnUiIHx8IHsgXAotCSAgaWYgeyBpZiAoTENfQUxMPUMgZmluZCAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwgZ3JlcCBHTlUgPi9kZXYvbnVsbDsgdGhlbiBcCi0JCSBMQ19BTEw9QyBmaW5kIC1MICQodG9wX3NyY2RpcikgLW1heGRlcHRoIDEgLXR5cGUgZiBcCi0JCQkgICAgICAgLXNpemUgLTEwMDAwMDAwYyAtZXhlYyBncmVwICdHTlUgQFBBQ0tBR0VAJyBcCi0JCQkgICAgICAgL2Rldi9udWxsICd7fScgJzsnIDI+L2Rldi9udWxsOyBcCi0JICAgICAgIGVsc2UgXAotCQkgTENfQUxMPUMgZ3JlcCAnR05VIEBQQUNLQUdFQCcgJCh0b3Bfc3JjZGlyKS8qIDI+L2Rldi9udWxsOyBcCi0JICAgICAgIGZpOyBcCi0JICAgICB9IHwgZ3JlcCAtdiAnbGlidG9vbDonID4vZGV2L251bGw7IHRoZW4gXAotCSAgICAgcGFja2FnZV9nbnU9eWVzOyBcCi0JICAgZWxzZSBcCi0JICAgICBwYWNrYWdlX2dudT1ubzsgXAotCSAgIGZpOyBcCi0JfTsgXAotCWlmIHRlc3QgIiQkcGFja2FnZV9nbnUiID0gInllcyI7IHRoZW4gXAotCSAgcGFja2FnZV9wcmVmaXg9J0dOVSAnOyBcCi0JZWxzZSBcCi0JICBwYWNrYWdlX3ByZWZpeD0nJzsgXAotCWZpOyBcCi0JaWYgdGVzdCAtbiAnJChNU0dJRF9CVUdTX0FERFJFU1MpJyB8fCB0ZXN0ICckKFBBQ0tBR0VfQlVHUkVQT1JUKScgPSAnQCdQQUNLQUdFX0JVR1JFUE9SVCdAJzsgdGhlbiBcCi0JICBtc2dpZF9idWdzX2FkZHJlc3M9JyQoTVNHSURfQlVHU19BRERSRVNTKSc7IFwKLQllbHNlIFwKLQkgIG1zZ2lkX2J1Z3NfYWRkcmVzcz0nJChQQUNLQUdFX0JVR1JFUE9SVCknOyBcCi0JZmk7IFwKLQljYXNlIGAkKFhHRVRURVhUKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKLQkgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTVdIHwgMC4xWzAtNV0uKiB8IDAuMTYgfCAwLjE2LlswLTFdKikgXAotCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKLQkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAotCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAotCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAotCSAgICAgIC0tbXNnaWQtYnVncy1hZGRyZXNzPSIkJG1zZ2lkX2J1Z3NfYWRkcmVzcyIgXAotCSAgICA7OyBcCi0JICAqKSBcCi0JICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAotCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiAkKFhHRVRURVhUX09QVElPTlMpIEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQCBcCi0JICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCi0JICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCi0JICAgICAgLS1wYWNrYWdlLW5hbWU9IiQke3BhY2thZ2VfcHJlZml4fUBQQUNLQUdFQCIgXAotCSAgICAgIC0tcGFja2FnZS12ZXJzaW9uPSdAVkVSU0lPTkAnIFwKLQkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKLQkgICAgOzsgXAotCWVzYWMKLQl0ZXN0ICEgLWYgJChET01BSU4pLnBvIHx8IHsgXAotCSAgaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXI7IHRoZW4gXAotCSAgICBzZWQgLWUgJzEsL14jJCQvZCcgPCAkKERPTUFJTikucG8gPiAkKERPTUFJTikuMXBvICYmIFwKLQkgICAgY2F0ICQoc3JjZGlyKS8kKERPTUFJTikucG90LWhlYWRlciAkKERPTUFJTikuMXBvID4gJChET01BSU4pLnBvOyBcCi0JICAgIHJtIC1mICQoRE9NQUlOKS4xcG87IFwKLQkgIGZpOyBcCi0JICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKLQkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKHNyY2RpcikvJChET01BSU4pLnBvdCA+ICQoRE9NQUlOKS4xcG8gJiYgXAotCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4ycG8gJiYgXAotCSAgICBpZiBjbXAgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCi0JICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoRE9NQUlOKS5wbzsgXAotCSAgICBlbHNlIFwKLQkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJiYgXAotCSAgICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAotCSAgICBmaTsgXAotCSAgZWxzZSBcCi0JICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAotCSAgZmk7IFwKLQl9Ci0KLSMgVGhpcyBydWxlIGhhcyBubyBkZXBlbmRlbmNpZXM6IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlICQoRE9NQUlOKS5wb3QgYXQKLSMgZXZlcnkgIm1ha2UiIGludm9jYXRpb24sIG9ubHkgY3JlYXRlIGl0IHdoZW4gaXQgaXMgbWlzc2luZy4KLSMgT25seSAibWFrZSAkKERPTUFJTikucG90LXVwZGF0ZSIgb3IgIm1ha2UgZGlzdCIgd2lsbCBmb3JjZSBhbiB1cGRhdGUuCi0kKHNyY2RpcikvJChET01BSU4pLnBvdDoKLQkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCi0KLSMgVGhpcyB0YXJnZXQgcmVidWlsZHMgYSBQTyBmaWxlIGlmICQoRE9NQUlOKS5wb3QgaGFzIGNoYW5nZWQuCi0jIE5vdGUgdGhhdCBhIFBPIGZpbGUgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCi0kKFBPRklMRVMpOiAkKFBPRklMRVNERVBTKQotCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzLC4qLywsJyAtZSAncy9cLnBvJCQvLydgOyBcCi0JaWYgdGVzdCAtZiAiJChzcmNkaXIpLyQke2xhbmd9LnBvIjsgdGhlbiBcCi0JICB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8ICQoTUFLRSkgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKLQkgIHRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAotCSAgZWNobyAiJCR7Y2RjbWR9JChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQke2xhbmd9ICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3QiOyBcCi0JICBjZCAkKHNyY2RpcikgXAotCSAgICAmJiB7IGNhc2UgYCQoTVNHTUVSR0UpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAotCSAgICAgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtN10gfCAwLjFbMC03XS4qKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCi0JICAgICAgICAgICAqKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAgIGVzYWM7IFwKLQkgICAgICAgfTsgXAotCWVsc2UgXAotCSAgJChNQUtFKSAkJHtsYW5nfS5wby1jcmVhdGU7IFwKLQlmaQotCi0KLWluc3RhbGw6IGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEKLWluc3RhbGwtZXhlYzoKLWluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgICQobWtkaXJfcCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKLQkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKLQkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgXAotCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotCSAgZG9uZTsgXAotCSAgZm9yIGZpbGUgaW4gTWFrZXZhcnM7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0JICBkb25lOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsLWRhdGEtbm86IGFsbAotaW5zdGFsbC1kYXRhLXllczogYWxsCi0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGlmIHRlc3QgLXIgJCRjYXQ7IHRoZW4gcmVhbGNhdD0kJGNhdDsgZWxzZSByZWFsY2F0PSQoc3JjZGlyKS8kJGNhdDsgZmk7IFwKLQkgICQoSU5TVEFMTF9EQVRBKSAkJHJlYWxjYXQgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbzsgXAotCSAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgYXMgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbyI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAotCSAgICAgIGxuIC1zIC4uL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCi0JICAgICAgbG4gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKLQkgICAgICBjcCAtcCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgICAgICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBsaW5rIGFzICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIjsgXAotCSAgICBmaTsgXAotCSAgZG9uZTsgXAotCWRvbmUKLQotaW5zdGFsbC1zdHJpcDogaW5zdGFsbAotCi1pbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtZXhlYyBpbnN0YWxsZGlycy1kYXRhCi1pbnN0YWxsZGlycy1leGVjOgotaW5zdGFsbGRpcnMtZGF0YTogaW5zdGFsbGRpcnMtZGF0YS1AVVNFX05MU0AKLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0JICAkKG1rZGlyX3ApICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsZGlycy1kYXRhLW5vOgotaW5zdGFsbGRpcnMtZGF0YS15ZXM6Ci0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgZmk7IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLSMgRGVmaW5lIHRoaXMgYXMgZW1wdHkgdW50aWwgSSBmb3VuZCBhIHVzZWZ1bCBhcHBsaWNhdGlvbi4KLWluc3RhbGxjaGVjazoKLQotdW5pbnN0YWxsOiB1bmluc3RhbGwtZXhlYyB1bmluc3RhbGwtZGF0YQotdW5pbnN0YWxsLWV4ZWM6Ci11bmluc3RhbGwtZGF0YTogdW5pbnN0YWxsLWRhdGEtQFVTRV9OTFNACi0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAotCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLQkgIGRvbmU7IFwKLQllbHNlIFwKLQkgIDogOyBcCi0JZmkKLXVuaW5zdGFsbC1kYXRhLW5vOgotdW5pbnN0YWxsLWRhdGEteWVzOgotCWNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBmb3IgbGMgaW4gTENfTUVTU0FHRVMgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLWNoZWNrOiBhbGwKLQotaW5mbyBkdmkgcHMgcGRmIGh0bWwgdGFncyBUQUdTIGN0YWdzIENUQUdTIElEOgotCi1tb3N0bHljbGVhbjoKLQlybSAtZiByZW1vdmUtcG90Y2RhdGUuc2VkCi0Jcm0gLWYgc3RhbXAtcG9UCi0Jcm0gLWYgY29yZSBjb3JlLiogJChET01BSU4pLnBvICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAqLm5ldy5wbwotCXJtIC1mciAqLm8KLQotY2xlYW46IG1vc3RseWNsZWFuCi0KLWRpc3RjbGVhbjogY2xlYW4KLQlybSAtZiBNYWtlZmlsZSBNYWtlZmlsZS5pbiBQT1RGSUxFUyAqLm1vCi0KLW1haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgotCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZTsiCi0JQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgotCXJtIC1mIHN0YW1wLXBvICQoR01PRklMRVMpCi0KLWRpc3RkaXIgPSAkKHRvcF9idWlsZGRpcikvJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQotZGlzdCBkaXN0ZGlyOgotCXRlc3QgLXogIiQoRElTVEZJTEVTREVQUykiIHx8ICQoTUFLRSkgJChESVNURklMRVNERVBTKQotCUAkKE1BS0UpIGRpc3QyCi0jIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KLWRpc3QyOiBzdGFtcC1wbyAkKERJU1RGSUxFUykKLQlkaXN0cz0iJChESVNURklMRVMpIjsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIE1ha2V2YXJzLnRlbXBsYXRlIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgdGhlbiBcCi0JICBkaXN0cz0iJCRkaXN0cyAkKERPTUFJTikucG90IHN0YW1wLXBvIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvQ2hhbmdlTG9nOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIENoYW5nZUxvZyI7IFwKLQlmaTsgXAotCWZvciBpIGluIDAgMSAyIDMgNCA1IDYgNyA4IDk7IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZy4kJGk7IHRoZW4gXAotCSAgICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2cuJCRpIjsgXAotCSAgZmk7IFwKLQlkb25lOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvTElOR1VBUzsgdGhlbiBkaXN0cz0iJCRkaXN0cyBMSU5HVUFTIjsgZmk7IFwKLQlmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0JICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCi0JICAgIGNwIC1wICQkZmlsZSAkKGRpc3RkaXIpIHx8IGV4aXQgMTsgXAotCSAgZWxzZSBcCi0JICAgIGNwIC1wICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKLQkgIGZpOyBcCi0JZG9uZQotCi11cGRhdGUtcG86IE1ha2VmaWxlCi0JJChNQUtFKSAkKERPTUFJTikucG90LXVwZGF0ZQotCXRlc3QgLXogIiQoVVBEQVRFUE9GSUxFUykiIHx8ICQoTUFLRSkgJChVUERBVEVQT0ZJTEVTKQotCSQoTUFLRSkgdXBkYXRlLWdtbwotCi0jIEdlbmVyYWwgcnVsZSBmb3IgY3JlYXRpbmcgUE8gZmlsZXMuCi0KLS5ub3AucG8tY3JlYXRlOgotCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzL1wucG8tY3JlYXRlJCQvLydgOyBcCi0JZWNobyAiRmlsZSAkJGxhbmcucG8gZG9lcyBub3QgZXhpc3QuIElmIHlvdSBhcmUgYSB0cmFuc2xhdG9yLCB5b3UgY2FuIGNyZWF0ZSBpdCB0aHJvdWdoICdtc2dpbml0Jy4iIDE+JjI7IFwKLQlleGl0IDEKLQotIyBHZW5lcmFsIHJ1bGUgZm9yIHVwZGF0aW5nIFBPIGZpbGVzLgotCi0ubm9wLnBvLXVwZGF0ZToKLQlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLXVwZGF0ZSQkLy8nYDsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiICYmIHRlc3QgIiQoQ1JPU1NfQ09NUElMSU5HKSIgIT0gInllcyI7IHRoZW4gUEFUSD1gcHdkYC8uLi9zcmM6JCRQQVRIOyBmaTsgXAotCXRtcGRpcj1gcHdkYDsgXAotCWVjaG8gIiQkbGFuZzoiOyBcCi0JdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCi0JZWNobyAiJCR7Y2RjbWR9JChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCRsYW5nICQkbGFuZy5wbyAkKERPTUFJTikucG90IC1vICQkbGFuZy5uZXcucG8iOyBcCi0JY2QgJChzcmNkaXIpOyBcCi0JaWYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKLQkgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtN10gfCAwLjFbMC03XS4qKSBcCi0JICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAqKSBcCi0JICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCRsYW5nIC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvICQoRE9NQUlOKS5wb3Q7OyBcCi0JICAgICBlc2FjOyBcCi0JICAgfTsgdGhlbiBcCi0JICBpZiBjbXAgJCRsYW5nLnBvICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKLQkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotCSAgZWxzZSBcCi0JICAgIGlmIG12IC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvOyB0aGVuIFwKLQkgICAgICA6OyBcCi0JICAgIGVsc2UgXAotCSAgICAgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAotCSAgICAgIGV4aXQgMTsgXAotCSAgICBmaTsgXAotCSAgZmk7IFwKLQllbHNlIFwKLQkgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkISIgMT4mMjsgXAotCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotCWZpCi0KLSQoRFVNTVlQT0ZJTEVTKToKLQotdXBkYXRlLWdtbzogTWFrZWZpbGUgJChHTU9GSUxFUykKLQlAOgotCi0jIFJlY3JlYXRlIE1ha2VmaWxlIGJ5IGludm9raW5nIGNvbmZpZy5zdGF0dXMuIEV4cGxpY2l0bHkgaW52b2tlIHRoZSBzaGVsbCwKLSMgYmVjYXVzZSBleGVjdXRpb24gcGVybWlzc2lvbiBiaXRzIG1heSBub3Qgd29yayBvbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4KLSMgVXNlIEBTSEVMTEAsIHdoaWNoIGlzIHRoZSBzaGVsbCBkZXRlcm1pbmVkIGJ5IGF1dG9jb25mIGZvciB0aGUgdXNlIGJ5IGl0cwotIyBzY3JpcHRzLCBub3QgJChTSEVMTCkgd2hpY2ggaXMgaGFyZHdpcmVkIHRvIC9iaW4vc2ggYW5kIG1heSBiZSBkZWZpY2llbnQuCi1NYWtlZmlsZTogTWFrZWZpbGUuaW4uaW4gTWFrZXZhcnMgJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgQFBPTUFLRUZJTEVERVBTQAotCWNkICQodG9wX2J1aWxkZGlyKSBcCi0JICAmJiBAU0hFTExAIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAuaW4gcG8tZGlyZWN0b3JpZXMKLQotZm9yY2U6Ci0KLSMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCi0jIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KLS5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3ogYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2FjbG9jYWwudGd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjJkMWY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3oKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2NvbmZpZy5ycGF0aCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvY29uZmlnLnJwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ODE4M2ZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvY29uZmlnLnJwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNjg0ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMgT3V0cHV0IGEgc3lzdGVtIGRlcGVuZGVudCBzZXQgb2YgdmFyaWFibGVzLCBkZXNjcmliaW5nIGhvdyB0byBzZXQgdGhlCi0jIHJ1biB0aW1lIHNlYXJjaCBwYXRoIG9mIHNoYXJlZCBsaWJyYXJpZXMgaW4gYW4gZXhlY3V0YWJsZS4KLSMKLSMgICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIyAgIFRha2VuIGZyb20gR05VIGxpYnRvb2wsIDIwMDEKLSMgICBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotIwotIyAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCi0jICAgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0jICAgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0jCi0jIFRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhpcyBmaWxlIGlzIHRoZSBjYW5vbmljYWwgaG9zdCBzcGVjaWZpY2F0aW9uLAotIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQotIyBvcgotIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBDQywgR0NDLCBMREZMQUdTLCBMRCwgd2l0aF9nbnVfbGQKLSMgc2hvdWxkIGJlIHNldCBieSB0aGUgY2FsbGVyLgotIwotIyBUaGUgc2V0IG9mIGRlZmluZWQgdmFyaWFibGVzIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyBzY3JpcHQuCi0KLSMgS25vd24gbGltaXRhdGlvbnM6Ci0jIC0gT24gSVJJWCA2LjUgd2l0aCBDQz0iY2MiLCB0aGUgcnVuIHRpbWUgc2VhcmNoIHBhdGNoIG11c3Qgbm90IGJlIGxvbmdlcgotIyAgIHRoYW4gMjU2IGJ5dGVzLCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGR1bXAgY29yZS4gVGhlIG9ubHkKLSMgICBrbm93biB3b3JrYXJvdW5kIGlzIHRvIGNob29zZSBzaG9ydGVyIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGJ1aWxkCi0jICAgZGlyZWN0b3J5IGFuZC9vciB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLQotIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgJy5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi0jIHdoaWNoIG5lZWRzICcubGliJykuCi1saWJleHQ9YQotc2hyZXh0PS5zbwotCi1ob3N0PSIkMSIKLWhvc3RfY3B1PWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotaG9zdF92ZW5kb3I9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi1ob3N0X29zPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0NDX0JBU0VOQU1FLgotCi1mb3IgY2NfdGVtcCBpbiAkQ0MiIjsgZG8KLSAgY2FzZSAkY2NfdGVtcCBpbgotICAgIGNvbXBpbGUgfCAqW1xcL11jb21waWxlIHwgY2NhY2hlIHwgKltcXC9dY2NhY2hlICkgOzsKLSAgICBkaXN0Y2MgfCAqW1xcL11kaXN0Y2MgfCBwdXJpZnkgfCAqW1xcL11wdXJpZnkgKSA7OwotICAgIFwtKikgOzsKLSAgICAqKSBicmVhazs7Ci0gIGVzYWMKLWRvbmUKLWNjX2Jhc2VuYW1lPWBlY2hvICIkY2NfdGVtcCIgfCBzZWQgLWUgJ3MlXi4qLyUlJ2AKLQotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DT01QSUxFUl9QSUMuCi0KLXdsPQotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgd2w9Jy1XbCwnCi1lbHNlCi0gIGNhc2UgIiRob3N0X29zIiBpbgotICAgIGFpeCopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKLSAgICAgIDs7Ci0gICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICBlY2MqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIGljYyogfCBpZm9ydCopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgbGY5NSopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgbmFnZm9yKikKLSAgICAgICAgICB3bD0nLVdsLC1XbCwsJwotICAgICAgICAgIDs7Ci0gICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBjY2MqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIHhsKiB8IGJneGwqIHwgYmdmKiB8IG1waXhsKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBjb21vKQotICAgICAgICAgIHdsPSctbG9wdD0nCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLSAgICAgICAgICAgICpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKLSAgICAgICAgICAgICAgd2w9Ci0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqU3VuXCBDKikKLSAgICAgICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgZXNhYwotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIG5ld3NvczYpCi0gICAgICA7OwotICAgICpudG8qIHwgKnFueCopCi0gICAgICA7OwotICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICByZG9zKikKLSAgICAgIDs7Ci0gICAgc29sYXJpcyopCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gICAgICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKLSAgICAgICAgICA7OwotICAgICAgICAqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN1bm9zNCopCi0gICAgICB3bD0nLVFvcHRpb24gbGQgJwotICAgICAgOzsKLSAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgc3lzdjQqTVAqKQotICAgICAgOzsKLSAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIHVuaWNvcyopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgdXRzNCopCi0gICAgICA7OwotICBlc2FjCi1maQotCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0xJTktFUl9TSExJQlMuCi0KLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci1oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotaGFyZGNvZGVfZGlyZWN0PW5vCi1oYXJkY29kZV9taW51c19MPW5vCi0KLWNhc2UgIiRob3N0X29zIiBpbgotICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgIyBGSVhNRTogdGhlIE1TVkMrKyBwb3J0IGhhc24ndCBiZWVuIHRlc3RlZCBpbiBhIGxvb29vbmcgdGltZQotICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0gICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSAgICAgIHdpdGhfZ251X2xkPW5vCi0gICAgZmkKLSAgICA7OwotICBpbnRlcml4KikKLSAgICAjIHdlIGp1c3QgaG9wZS9hc3N1bWUgdGhpcyBpcyBnY2MgYW5kIG5vdCBjODkgKD0gTVNWQysrKQotICAgIHdpdGhfZ251X2xkPXllcwotICAgIDs7Ci0gIG9wZW5ic2QqKQotICAgIHdpdGhfZ251X2xkPW5vCi0gICAgOzsKLWVzYWMKLQotbGRfc2hsaWJzPXllcwotaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQotICAjIGFyZSByZXNldCBsYXRlciBpZiBzaGFyZWQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBQdXR0aW5nIHRoZW0KLSAgIyBoZXJlIGFsbG93cyB0aGVtIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVjZXNzYXJ5LgotICAjIFVubGlrZSBsaWJ0b29sLCB3ZSB1c2UgLXJwYXRoIGhlcmUsIG5vdCAtLXJwYXRoLCBzaW5jZSB0aGUgZG9jdW1lbnRlZAotICAjIG9wdGlvbiBvZiBHTlUgbGQgaXMgY2FsbGVkIC1ycGF0aCwgbm90IC0tcnBhdGguCi0gIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgYWl4WzMtOV0qKQotICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgYW1pZ2FvcyopCi0gICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICAgIHBvd2VycGMpCi0gICAgICAgICAgOzsKLSAgICAgICAgbTY4aykKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBiZW9zKikKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaGFpa3UqKQotICAgICAgOzsKLSAgICBpbnRlcml4WzMtOV0qKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgOzsKLSAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgbmV0YnNkKikKLSAgICAgIDs7Ci0gICAgc29sYXJpcyopCi0gICAgICBpZiAkTEQgLXYgMj4mMSB8IGdyZXAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQotICAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCi0gICAgICAgICpcIFswMV0uKiB8ICpcIDIuWzAtOV0uKiB8ICpcIDIuMVswLTVdLiopCi0gICAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1ycGF0aCwkbGliZGlyYCcKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgICAgICBmaQotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN1bm9zNCopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICA7OwotICAgICopCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICBlc2FjCi0gIGlmIHRlc3QgIiRsZF9zaGxpYnMiID0gbm87IHRoZW4KLSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotICBmaQotZWxzZQotICBjYXNlICIkaG9zdF9vcyIgaW4KLSAgICBhaXgzKikKLSAgICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVzIHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCi0gICAgICAjIGFyZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICAgIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCi0gICAgICAgICMgYnJva2VuIGNvbGxlY3QyLgotICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGFpeFs0LTldKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKLSAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCi0gICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSAgICAgIGVsc2UKLSAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwotICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKLSAgICAgICAgIyBBSVggc3R5bGUgbGlua2luZy4gSWYgLWJydGwgaXMgc29tZXdoZXJlIGluIExERkxBR1MsIHdlCi0gICAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0gICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMjNdfGFpeDQuWzIzXS4qfGFpeFs1LTldKikKLSAgICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLSAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0gICAgICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9eWVzCi0gICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBmaQotICAgICAgICAgIGRvbmUKLSAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICBmaQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMDEyXXxhaXg0LlswMTJdLiopCi0gICAgICAgICAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAotICAgICAgICAgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmIFwKLSAgICAgICAgICAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgZ3JlcCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKLSAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKLSAgICAgICAgICAgIDoKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCi0gICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotICAgICAgICAgIGZpCi0gICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgICMgQmVnaW4gX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KLSAgICAgIGVjaG8gJ2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0nID4gY29uZnRlc3QuYwotICAgICAgJHtDQ30gJHtMREZMQUdTfSBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Ci0gICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Ci19J2AKLSAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQotfSdgCi0gICAgICBmaQotICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICAgICAgICBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiIKLSAgICAgIGZpCi0gICAgICBybSAtZiBjb25mdGVzdC5jIGNvbmZ0ZXN0Ci0gICAgICAjIEVuZCBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICBlbHNlCi0gICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICBmaQotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgYW1pZ2FvcyopCi0gICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICAgIHBvd2VycGMpCi0gICAgICAgICAgOzsKLSAgICAgICAgbTY4aykKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBic2RpWzQ1XSopCi0gICAgICA7OwotICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0gICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0gICAgICBsaWJleHQ9bGliCi0gICAgICA7OwotICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSAgICAgIGlmIHsgY2FzZSAkY2NfYmFzZW5hbWUgaW4gaWZvcnQqKSB0cnVlOzsgKikgdGVzdCAiJEdDQyIgPSB5ZXM7OyBlc2FjOyB9OyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBkZ3V4KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIDs7Ci0gICAgZnJlZWJzZDIuWzAxXSopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgOzsKLSAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICA7OwotICAgIGhwdXg5KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgOzsKLSAgICBocHV4MTAqKQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KLSAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgICBjYXNlICRob3N0X2NwdSBpbgotICAgICAgICAgIGhwcGEqNjQqfGlhNjQqKQotICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICAgICAgICA7OwotICAgICAgICAgICopCi0gICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgOzsKLSAgICBuZXRic2QqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgOzsKLSAgICBuZXdzb3M2KQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgICpudG8qIHwgKnFueCopCi0gICAgICA7OwotICAgIG9wZW5ic2QqKQotICAgICAgaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgICBlbHNlCi0gICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICAgICAgICBvcGVuYnNkWzAxXS4qIHwgb3BlbmJzZDIuWzAtN10gfCBvcGVuYnNkMi5bMC03XS4qKQotICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqKQotICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgICAgICAgICA7OwotICAgICAgICAgIGVzYWMKLSAgICAgICAgZmkKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBvczIqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgb3NmMyopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgIDs7Ci0gICAgb3NmNCogfCBvc2Y1KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGVsc2UKLSAgICAgICAgIyBCb3RoIGNjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCi0gICAgICBmaQotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgIHNvbGFyaXMqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgOzsKLSAgICBzdW5vczQqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgc3lzdjQpCi0gICAgICBjYXNlICRob3N0X3ZlbmRvciBpbgotICAgICAgICBzbmkpCi0gICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KLSAgICAgICAgICA7OwotICAgICAgICBzaWVtZW5zKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotICAgICAgICAgIDs7Ci0gICAgICAgIG1vdG9yb2xhKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgc3lzdjQuMyopCi0gICAgICA7OwotICAgIHN5c3Y0Kk1QKikKLSAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLSAgICAgICAgbGRfc2hsaWJzPXllcwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuWzAxXS5bMTBdKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLlswMjRdKikKLSAgICAgIDs7Ci0gICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1SLCRsaWJkaXJgJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKLSAgICAgIDs7Ci0gICAgdXRzNCopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICA7OwotICAgICopCi0gICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIDs7Ci0gIGVzYWMKLWZpCi0KLSMgQ2hlY2sgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX1NZU19EWU5BTUlDX0xJTktFUi4KLSMgVW5saWtlIGxpYnRvb2wubTQsIGhlcmUgd2UgZG9uJ3QgY2FyZSBhYm91dCBfYWxsXyBuYW1lcyBvZiB0aGUgbGlicmFyeSwgYnV0Ci0jIG9ubHkgYWJvdXQgdGhlIG9uZSB0aGUgbGlua2VyIGZpbmRzIHdoZW4gcGFzc2VkIC1sTkFNRS4gVGhpcyBpcyB0aGUgbGFzdAotIyBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00LCBvciBwb3NzaWJseSB0d28gb2YgdGhlbSBpZiB0aGUKLSMgbGlua2VyIGhhcyBzcGVjaWFsIHNlYXJjaCBydWxlcy4KLWxpYnJhcnlfbmFtZXNfc3BlYz0gICAgICAjIHRoZSBsYXN0IGVsZW1lbnQgb2YgbGlicmFyeV9uYW1lc19zcGVjIGluIGxpYnRvb2wubTQKLWxpYm5hbWVfc3BlYz0nbGliJG5hbWUnCi1jYXNlICIkaG9zdF9vcyIgaW4KLSAgYWl4MyopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJwotICAgIDs7Ci0gIGFpeFs0LTldKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBhbWlnYW9zKikKLSAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICBwb3dlcnBjKikKLSAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnIDs7Ci0gICAgICBtNjhrKQotICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnIDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGJlb3MqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGJzZGlbNDVdKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgc2hyZXh0PS5kbGwKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hICRsaWJuYW1lLmxpYicKLSAgICA7OwotICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgIHNocmV4dD0uZHlsaWIKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBkZ3V4KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBmcmVlYnNkWzIzXS4qKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgZ251KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBoYWlrdSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICAgIGlhNjQqKQotICAgICAgICBzaHJleHQ9LnNvCi0gICAgICAgIDs7Ci0gICAgICBocHBhKjY0KikKLSAgICAgICAgc2hyZXh0PS5zbAotICAgICAgICA7OwotICAgICAgKikKLSAgICAgICAgc2hyZXh0PS5zbAotICAgICAgICA7OwotICAgIGVzYWMKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBpbnRlcml4WzMtOV0qKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICBpcml4NSogfCBub25zdG9wdXgqKQotICAgICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9Ci0gICAgICAgIDs7Ci0gICAgICAqKQotICAgICAgICBjYXNlICRMRCBpbgotICAgICAgICAgICotMzJ8KiItMzIgInwqLW1lbGYzMmJzbWlwfCoiLW1lbGYzMmJzbWlwICIpIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKLSAgICAgICAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKSBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgOzsKLSAgICAgICAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikgbGlic3VmZj02NCBzaGxpYnN1ZmY9NjQgOzsKLSAgICAgICAgICAqKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKLSAgICA7OwotICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAga25ldGJzZCotZ251KQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG5ldGJzZCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgbmV3c29zNikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICAqbnRvKiB8ICpxbngqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG9wZW5ic2QqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBvczIqKQotICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0gICAgc2hyZXh0PS5kbGwKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnCi0gICAgOzsKLSAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHJkb3MqKQotICAgIDs7Ci0gIHNvbGFyaXMqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN1bm9zNCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JwotICAgIDs7Ci0gIHN5c3Y0IHwgc3lzdjQuMyopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgc3lzdjQqTVAqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHRwZiopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgdXRzNCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLWVzYWMKLQotc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKLWVzY2FwZWRfd2w9YGVjaG8gIlgkd2wiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLXNobGliZXh0PWBlY2hvICIkc2hyZXh0IiB8IHNlZCAtZSAncyxeXC4sLCdgCi1lc2NhcGVkX2xpYm5hbWVfc3BlYz1gZWNobyAiWCRsaWJuYW1lX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLWVzY2FwZWRfbGlicmFyeV9uYW1lc19zcGVjPWBlY2hvICJYJGxpYnJhcnlfbmFtZXNfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPWBlY2hvICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQotTENfQUxMPUMgc2VkIC1lICdzL15cKFthLXpBLVowLTlfXSpcKT0vYWNsX2N2X1wxPS8nIDw8RU9GCi0KLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLXdsPSIkZXNjYXBlZF93bCIKLQotIyBTdGF0aWMgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJhIikuCi1saWJleHQ9IiRsaWJleHQiCi0KLSMgU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAic28iKS4KLXNobGliZXh0PSIkc2hsaWJleHQiCi0KLSMgRm9ybWF0IG9mIGxpYnJhcnkgbmFtZSBwcmVmaXguCi1saWJuYW1lX3NwZWM9IiRlc2NhcGVkX2xpYm5hbWVfc3BlYyIKLQotIyBMaWJyYXJ5IG5hbWVzIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuCi1saWJyYXJ5X25hbWVzX3NwZWM9IiRlc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYyIKLQotIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCi0jIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgotCi0jIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAtcnBhdGggZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50LgotaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyBESVIvbGliTkFNRS5zbyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9kaXJlY3Q9IiRoYXJkY29kZV9kaXJlY3QiCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyB0aGUgLUxESVIgZmxhZyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9taW51c19MPSIkaGFyZGNvZGVfbWludXNfTCIKLQotRU9GCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MzZjNDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9yZW1vdmUtcG90Y2RhdGUuc2luCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyBTZWQgc2NyaXB0IHRoYXQgcmVtb3ZlIHRoZSBQT1QtQ3JlYXRpb24tRGF0ZSBsaW5lIGluIHRoZSBoZWFkZXIgZW50cnkKLSMgZnJvbSBhIFBPVCBmaWxlLgotIwotIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBmb2xsb3dpbmcgb2NjdXJyZW5jZXMgb2YgdGhlCi0jIHBhdHRlcm4gaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KLS9eIlBPVC1DcmVhdGlvbi1EYXRlOiAuKiIkL3sKLXgKLSMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLXMvUC9QLwotdGEKLSMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVtb3ZlIHRoZSBsaW5lLgotZwotZAotYmIKLTphCi0jIFRoZSBob2xkIHNwYWNlIHdhcyBub25lbXB0eS4gRm9sbG93aW5nIG9jY3VycmVuY2VzLiBEbyBub3RoaW5nLgoteAotOmIKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvQ09QWUlORyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL0NPUFlJTkcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvQ09QWUlORwpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvQ09QWUlORwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvTWFrZWZpbGUuaW4uaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9NYWtlZmlsZS5pbi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGI2YWQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvTWFrZWZpbGUuaW4uaW4KQEAgLTAsMCArMSw1MDMgQEAKKyMgTWFrZWZpbGUgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KKyMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+CisjIENvcHlyaWdodCAoQykgMjAwMC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKKyMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCisjIHdpdGhvdXQgYW55IHdhcnJhbnR5LgorIworIyBPcmlnaW46IGdldHRleHQtMC4yMAorR0VUVEVYVF9NQUNST19WRVJTSU9OID0gMC4yMAorCitQQUNLQUdFID0gQFBBQ0tBR0VACitWRVJTSU9OID0gQFZFUlNJT05ACitQQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAKKworU0VEID0gQFNFREAKK1NIRUxMID0gL2Jpbi9zaAorQFNFVF9NQUtFQAorCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAorCitwcmVmaXggPSBAcHJlZml4QAorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACitkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK2xvY2FsZWRpciA9IEBsb2NhbGVkaXJACitnZXR0ZXh0c3JjZGlyID0gJChkYXRhZGlyKS9nZXR0ZXh0L3BvCisKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACisKKyMgV2UgdXNlICQobWtkaXJfcCkuCisjIEluIGF1dG9tYWtlIDw9IDEuOS54LCAkKG1rZGlyX3ApIGlzIGRlZmluZWQgZWl0aGVyIGFzICJta2RpciAtcCAtLSIgb3IgYXMKKyMgIiQobWtpbnN0YWxsZGlycykiIG9yIGFzICIkKGluc3RhbGxfc2gpIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlIHZlcnNpb25zLAorIyBAaW5zdGFsbF9zaEAgZG9lcyBub3Qgc3RhcnQgd2l0aCAkKFNIRUxMKSwgc28gd2UgYWRkIGl0LgorIyBJbiBhdXRvbWFrZSA+PSAxLjEwLCBAbWtkaXJfcEAgaXMgZGVyaXZlZCBmcm9tICR7TUtESVJfUH0sIHdoaWNoIGlzIGRlZmluZWQKKyMgZWl0aGVyIGFzICIvcGF0aC90by9ta2RpciAtcCIgb3IgIi4uLi9pbnN0YWxsLXNoIC1jIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlCisjIHZlcnNpb25zLCAkKG1raW5zdGFsbGRpcnMpIGFuZCAkKGluc3RhbGxfc2gpIGFyZSB1bnVzZWQuCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgQGluc3RhbGxfc2hAIC1kCitpbnN0YWxsX3NoID0gJChTSEVMTCkgQGluc3RhbGxfc2hACitNS0RJUl9QID0gQE1LRElSX1BACitta2Rpcl9wID0gQG1rZGlyX3BACisKKyMgV2hlbiBidWlsZGluZyBnZXR0ZXh0LXRvb2xzLCB3ZSBwcmVmZXIgdG8gdXNlIHRoZSBidWlsdCBwcm9ncmFtcworIyByYXRoZXIgdGhhbiBpbnN0YWxsZWQgcHJvZ3JhbXMuICBIb3dldmVyLCB3ZSBjYW4ndCBkbyB0aGF0IHdoZW4gd2UKKyMgYXJlIGNyb3NzIGNvbXBpbGluZy4KK0NST1NTX0NPTVBJTElORyA9IEBDUk9TU19DT01QSUxJTkdACisKK0dNU0dGTVRfID0gQEdNU0dGTVRACitHTVNHRk1UX25vID0gQEdNU0dGTVRACitHTVNHRk1UX3llcyA9IEBHTVNHRk1UXzAxNUAKK0dNU0dGTVQgPSAkKEdNU0dGTVRfJChVU0VfTVNHQ1RYVCkpCitYR0VUVEVYVF8gPSBAWEdFVFRFWFRACitYR0VUVEVYVF9ubyA9IEBYR0VUVEVYVEAKK1hHRVRURVhUX3llcyA9IEBYR0VUVEVYVF8wMTVACitYR0VUVEVYVCA9ICQoWEdFVFRFWFRfJChVU0VfTVNHQ1RYVCkpCitNU0dNRVJHRSA9IEBNU0dNRVJHRUAKK01TR01FUkdFX1VQREFURSA9IEBNU0dNRVJHRUAgLS11cGRhdGUKK01TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OID0gQE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OQAorTVNHSU5JVCA9IG1zZ2luaXQKK01TR0NPTlYgPSBtc2djb252CitNU0dGSUxURVIgPSBtc2dmaWx0ZXIKKworUE9GSUxFUyA9IEBQT0ZJTEVTQAorR01PRklMRVMgPSBAR01PRklMRVNACitVUERBVEVQT0ZJTEVTID0gQFVQREFURVBPRklMRVNACitEVU1NWVBPRklMRVMgPSBARFVNTVlQT0ZJTEVTQAorRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluLmluIHJlbW92ZS1wb3RjZGF0ZS5zaW4gXAorJChESVNURklMRVMuY29tbW9uLmV4dHJhMSkgJChESVNURklMRVMuY29tbW9uLmV4dHJhMikgJChESVNURklMRVMuY29tbW9uLmV4dHJhMykKK0RJU1RGSUxFUyA9ICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMgUE9URklMRVMuaW4gXAorJChQT0ZJTEVTKSAkKEdNT0ZJTEVTKSBcCiskKERJU1RGSUxFUy5leHRyYTEpICQoRElTVEZJTEVTLmV4dHJhMikgJChESVNURklMRVMuZXh0cmEzKQorCitQT1RGSUxFUyA9IFwKKworQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACisKK1BPRklMRVNERVBTXyA9ICQoc3JjZGlyKS8kKERPTUFJTikucG90CitQT0ZJTEVTREVQU195ZXMgPSAkKFBPRklMRVNERVBTXykKK1BPRklMRVNERVBTX25vID0KK1BPRklMRVNERVBTID0gJChQT0ZJTEVTREVQU18kKFBPX0RFUEVORFNfT05fUE9UKSkKKworRElTVEZJTEVTREVQU18gPSB1cGRhdGUtcG8KK0RJU1RGSUxFU0RFUFNfeWVzID0gJChESVNURklMRVNERVBTXykKK0RJU1RGSUxFU0RFUFNfbm8gPQorRElTVEZJTEVTREVQUyA9ICQoRElTVEZJTEVTREVQU18kKERJU1RfREVQRU5EU19PTl9VUERBVEVfUE8pKQorCisjIE1ha2V2YXJzIGdldHMgaW5zZXJ0ZWQgaGVyZS4gKERvbid0IHJlbW92ZSB0aGlzIGxpbmUhKQorCisuU1VGRklYRVM6CisuU1VGRklYRVM6IC5wbyAuZ21vIC5zZWQgLnNpbiAubm9wIC5wby1jcmVhdGUgLnBvLXVwZGF0ZQorCisjIFRoZSAucG90IGZpbGUsIHN0YW1wLXBvLCAucG8gZmlsZXMsIGFuZCAuZ21vIGZpbGVzIGFwcGVhciBpbiByZWxlYXNlIHRhcmJhbGxzLgorIyBUaGUgR05VIENvZGluZyBTdGFuZGFyZHMgc2F5IGluCisjIDxodHRwczovL3d3dy5nbnUub3JnL3ByZXAvc3RhbmRhcmRzL2h0bWxfbm9kZS9NYWtlZmlsZS1CYXNpY3MuaHRtbD46CisjICAgIkdOVSBkaXN0cmlidXRpb25zIHVzdWFsbHkgY29udGFpbiBzb21lIGZpbGVzIHdoaWNoIGFyZSBub3Qgc291cmNlIGZpbGVzCisjICAgIC4uLiAuIFNpbmNlIHRoZXNlIGZpbGVzIG5vcm1hbGx5IGFwcGVhciBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSwgdGhleQorIyAgICBzaG91bGQgYWx3YXlzIGFwcGVhciBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSwgbm90IGluIHRoZSBidWlsZCBkaXJlY3RvcnkuCisjICAgIFNvIE1ha2VmaWxlIHJ1bGVzIHRvIHVwZGF0ZSB0aGVtIHNob3VsZCBwdXQgdGhlIHVwZGF0ZWQgZmlsZXMgaW4gdGhlCisjICAgIHNvdXJjZSBkaXJlY3RvcnkuIgorIyBUaGVyZWZvcmUgd2UgcHV0IHRoZXNlIGZpbGVzIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LCBub3QgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKworIyBEdXJpbmcgLnBvIC0+IC5nbW8gY29udmVyc2lvbiwgdGFrZSBpbnRvIGFjY291bnQgdGhlIG1vc3QgcmVjZW50IGNoYW5nZXMgdG8KKyMgdGhlIC5wb3QgZmlsZS4gVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIHRvIHVwZGF0ZSB0aGUgLnBvIGZpbGVzIHdoZW4gdGhlCisjIC5wb3QgZmlsZSBoYXMgY2hhbmdlZCwgd2hpY2ggd291bGQgYmUgdHJvdWJsZXNvbWUgaWYgdGhlIC5wbyBmaWxlcyBhcmUgcHV0CisjIHVuZGVyIHZlcnNpb24gY29udHJvbC4KKy5wby5nbW86ICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQGxhbmc9YGVjaG8gJCogfCBzZWQgLWUgJ3MsLiovLCwnYDsgXAorCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCWVjaG8gIiQke2NkY21kfXJtIC1mICQke2xhbmd9LmdtbyAmJiAkKE1TR01FUkdFKSAkKE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OKSAtbyAkJHtsYW5nfS4xcG8gJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdCAmJiAkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gJCR7bGFuZ30uZ21vICQke2xhbmd9LjFwbyAmJiBybSAtZiAkJHtsYW5nfS4xcG8iOyBcCisJY2QgJChzcmNkaXIpICYmIFwKKwlybSAtZiAkJHtsYW5nfS5nbW8gJiYgXAorCSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT04pIC1vICQke2xhbmd9LjFwbyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90ICYmIFwKKwkkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uMXBvICYmIFwKKwltdiB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5nbW8gJiYgXAorCXJtIC1mICQke2xhbmd9LjFwbworCisuc2luLnNlZDoKKwlzZWQgLWUgJy9eIy9kJyAkPCA+IHQtJEAKKwltdiB0LSRAICRACisKKworYWxsOiBhbGwtQFVTRV9OTFNACisKK2FsbC15ZXM6ICQoc3JjZGlyKS9zdGFtcC1wbworYWxsLW5vOgorCisjIEVuc3VyZSB0aGF0IHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgdGhpcyBNYWtlZmlsZS5pbi5pbiBhcmUgaW4gc3luYy4KK0NIRUNLX01BQ1JPX1ZFUlNJT04gPSBcCisJdGVzdCAiJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIiA9ICJAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgXAorCSAgfHwgeyBlY2hvICIqKiogZXJyb3I6IGdldHRleHQgaW5mcmFzdHJ1Y3R1cmUgbWlzbWF0Y2g6IHVzaW5nIGEgTWFrZWZpbGUuaW4uaW4gZnJvbSBnZXR0ZXh0IHZlcnNpb24gJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIGJ1dCB0aGUgYXV0b2NvbmYgbWFjcm9zIGFyZSBmcm9tIGdldHRleHQgdmVyc2lvbiBAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgMT4mMjsgXAorCSAgICAgICBleGl0IDE7IFwKKwkgICAgIH0KKworIyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBvbmx5IGNyZWF0ZWQgd2hlbiBuZWVkZWQuIFdoZW4geGdldHRleHQgZmluZHMgbm8KKyMgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMsIG5vICQoc3JjZGlyKS8kKERPTUFJTikucG90IGlzIGNyZWF0ZWQgKGJlY2F1c2UKKyMgd2UgZG9uJ3Qgd2FudCB0byBib3RoZXIgdHJhbnNsYXRvcnMgd2l0aCBlbXB0eSBQT1QgZmlsZXMpLiBXZSBhc3N1bWUgdGhhdAorIyBMSU5HVUFTIGlzIGVtcHR5IGluIHRoaXMgY2FzZSwgaS5lLiAkKFBPRklMRVMpIGFuZCAkKEdNT0ZJTEVTKSBhcmUgZW1wdHkuCisjIEluIHRoaXMgY2FzZSwgJChzcmNkaXIpL3N0YW1wLXBvIGlzIGEgbm9wIChpLmUuIGEgcGhvbnkgdGFyZ2V0KS4KKworIyAkKHNyY2Rpcikvc3RhbXAtcG8gaXMgYSB0aW1lc3RhbXAgZGVub3RpbmcgdGhlIGxhc3QgdGltZSBhdCB3aGljaCB0aGUgQ0FUQUxPR1MKKyMgaGF2ZSBiZWVuIGxvb3NlbHkgdXBkYXRlZC4gSXRzIHB1cnBvc2UgaXMgdGhhdCB3aGVuIGEgZGV2ZWxvcGVyIG9yIHRyYW5zbGF0b3IKKyMgY2hlY2tzIG91dCB0aGUgcGFja2FnZSBmcm9tIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgYW5kIHRoZSAkKERPTUFJTikucG90CisjIGZpbGUgaXMgbm90IHVuZGVyIHZlcnNpb24gY29udHJvbCwgIm1ha2UiIHdpbGwgdXBkYXRlIHRoZSAkKERPTUFJTikucG90IGFuZAorIyB0aGUgJChDQVRBTE9HUyksIGJ1dCBzdWJzZXF1ZW50IGludm9jYXRpb25zIG9mICJtYWtlIiB3aWxsIGRvIG5vdGhpbmcuIFRoaXMKKyMgdGltZXN0YW1wIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkgaWYgdXBkYXRpbmcgdGhlICQoQ0FUQUxPR1MpIHdvdWxkIGFsd2F5cworIyB0b3VjaCB0aGVtOyBob3dldmVyLCB0aGUgcnVsZSBmb3IgJChQT0ZJTEVTKSBoYXMgYmVlbiBkZXNpZ25lZCB0byBub3QgdG91Y2gKKyMgZmlsZXMgdGhhdCBkb24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKHNyY2Rpcikvc3RhbXAtcG86ICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQCQoQ0hFQ0tfTUFDUk9fVkVSU0lPTikKKwl0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgXAorCSAgdGVzdCAteiAiJChHTU9GSUxFUykiIHx8ICQoTUFLRSkgJChHTU9GSUxFUykKKwlAdGVzdCAhIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8IHsgXAorCSAgZWNobyAidG91Y2ggJChzcmNkaXIpL3N0YW1wLXBvIiAmJiBcCisJICBlY2hvIHRpbWVzdGFtcCA+ICQoc3JjZGlyKS9zdGFtcC1wb1QgJiYgXAorCSAgbXYgJChzcmNkaXIpL3N0YW1wLXBvVCAkKHNyY2Rpcikvc3RhbXAtcG87IFwKKwl9CisKKyMgTm90ZTogVGFyZ2V0ICdhbGwnIG11c3Qgbm90IGRlcGVuZCBvbiB0YXJnZXQgJyQoRE9NQUlOKS5wb3QtdXBkYXRlJywKKyMgb3RoZXJ3aXNlIHBhY2thZ2VzIGxpa2UgR0NDIGNhbiBub3QgYmUgYnVpbHQgaWYgb25seSBwYXJ0cyBvZiB0aGUgc291cmNlCisjIGhhdmUgYmVlbiBkb3dubG9hZGVkLgorCisjIFRoaXMgdGFyZ2V0IHJlYnVpbGRzICQoRE9NQUlOKS5wb3Q7IGl0IGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24uCisjIE5vdGUgdGhhdCAkKERPTUFJTikucG90IGlzIG5vdCB0b3VjaGVkIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjaGFuZ2VkLgorIyBUaGUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIHRoZSBwYWNrYWdlIHh5eiBpcyBhIEdOVSBvbmUgaXMgYmFzZWQgb24gdGhlCisjIGhldXJpc3RpYyB3aGV0aGVyIHNvbWUgZmlsZSBpbiB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSBtZW50aW9ucyAiR05VIHh5eiIuCisjIElmIEdOVSAnZmluZCcgaXMgYXZhaWxhYmxlLCB3ZSBhdm9pZCBncmVwcGluZyB0aHJvdWdoIG1vbnN0ZXIgZmlsZXMuCiskKERPTUFJTikucG90LXVwZGF0ZTogJChQT1RGSUxFUykgJChzcmNkaXIpL1BPVEZJTEVTLmluIHJlbW92ZS1wb3RjZGF0ZS5zZWQKKwlwYWNrYWdlX2dudT0iJChQQUNLQUdFX0dOVSkiOyBcCisJdGVzdCAtbiAiJCRwYWNrYWdlX2dudSIgfHwgeyBcCisJICBpZiB7IGlmIChMQ19BTEw9QyBmaW5kIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCBncmVwIEdOVSA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgICBMQ19BTEw9QyBmaW5kIC1MICQodG9wX3NyY2RpcikgLW1heGRlcHRoIDEgLXR5cGUgZiAtc2l6ZSAtMTAwMDAwMDBjIC1leGVjIGdyZXAgLWkgJ0dOVSBAUEFDS0FHRUAnIC9kZXYvbnVsbCAne30nICc7JyAyPi9kZXYvbnVsbDsgXAorCSAgICAgICBlbHNlIFwKKwkgICAgICAgICBMQ19BTEw9QyBncmVwIC1pICdHTlUgQFBBQ0tBR0VAJyAkKHRvcF9zcmNkaXIpLyogMj4vZGV2L251bGw7IFwKKwkgICAgICAgZmk7IFwKKwkgICAgIH0gfCBncmVwIC12ICdsaWJ0b29sOicgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgICBwYWNrYWdlX2dudT15ZXM7IFwKKwkgICBlbHNlIFwKKwkgICAgIHBhY2thZ2VfZ251PW5vOyBcCisJICAgZmk7IFwKKwl9OyBcCisJaWYgdGVzdCAiJCRwYWNrYWdlX2dudSIgPSAieWVzIjsgdGhlbiBcCisJICBwYWNrYWdlX3ByZWZpeD0nR05VICc7IFwKKwllbHNlIFwKKwkgIHBhY2thZ2VfcHJlZml4PScnOyBcCisJZmk7IFwKKwlpZiB0ZXN0IC1uICckKE1TR0lEX0JVR1NfQUREUkVTUyknIHx8IHRlc3QgJyQoUEFDS0FHRV9CVUdSRVBPUlQpJyA9ICdAJ1BBQ0tBR0VfQlVHUkVQT1JUJ0AnOyB0aGVuIFwKKwkgIG1zZ2lkX2J1Z3NfYWRkcmVzcz0nJChNU0dJRF9CVUdTX0FERFJFU1MpJzsgXAorCWVsc2UgXAorCSAgbXNnaWRfYnVnc19hZGRyZXNzPSckKFBBQ0tBR0VfQlVHUkVQT1JUKSc7IFwKKwlmaTsgXAorCWNhc2UgYCQoWEdFVFRFWFQpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAorCSAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNV0gfCAwLjFbMC01XS4qIHwgMC4xNiB8IDAuMTYuWzAtMV0qKSBcCisJICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAorCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiBcCisJICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCisJICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCisJICAgICAgLS1tc2dpZC1idWdzLWFkZHJlc3M9IiQkbXNnaWRfYnVnc19hZGRyZXNzIiBcCisJICAgICAgJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAorCSAgICA7OyBcCisJICAqKSBcCisJICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAorCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiBcCisJICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCisJICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCisJICAgICAgLS1wYWNrYWdlLW5hbWU9IiQke3BhY2thZ2VfcHJlZml4fUBQQUNLQUdFQCIgXAorCSAgICAgIC0tcGFja2FnZS12ZXJzaW9uPSdAVkVSU0lPTkAnIFwKKwkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKKwkgICAgICAkKFhHRVRURVhUX09QVElPTlMpIEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQCBcCisJICAgIDs7IFwKKwllc2FjCisJdGVzdCAhIC1mICQoRE9NQUlOKS5wbyB8fCB7IFwKKwkgIGlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QtaGVhZGVyOyB0aGVuIFwKKwkgICAgc2VkIC1lICcxLC9eIyQkL2QnIDwgJChET01BSU4pLnBvID4gJChET01BSU4pLjFwbyAmJiBcCisJICAgIGNhdCAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXIgJChET01BSU4pLjFwbyA+ICQoRE9NQUlOKS5wbyAmJiBcCisJICAgIHJtIC1mICQoRE9NQUlOKS4xcG8gXAorCSAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKKwkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKHNyY2RpcikvJChET01BSU4pLnBvdCA+ICQoRE9NQUlOKS4xcG8gJiYgXAorCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4ycG8gJiYgXAorCSAgICBpZiBjbXAgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoRE9NQUlOKS5wbzsgXAorCSAgICBlbHNlIFwKKwkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJiYgXAorCSAgICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgICBmaTsgXAorCSAgZWxzZSBcCisJICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgZmk7IFwKKwl9CisKKyMgVGhpcyBydWxlIGhhcyBubyBkZXBlbmRlbmNpZXM6IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlICQoRE9NQUlOKS5wb3QgYXQKKyMgZXZlcnkgIm1ha2UiIGludm9jYXRpb24sIG9ubHkgY3JlYXRlIGl0IHdoZW4gaXQgaXMgbWlzc2luZy4KKyMgT25seSAibWFrZSAkKERPTUFJTikucG90LXVwZGF0ZSIgb3IgIm1ha2UgZGlzdCIgd2lsbCBmb3JjZSBhbiB1cGRhdGUuCiskKHNyY2RpcikvJChET01BSU4pLnBvdDoKKwkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCisKKyMgVGhpcyB0YXJnZXQgcmVidWlsZHMgYSBQTyBmaWxlIGlmICQoRE9NQUlOKS5wb3QgaGFzIGNoYW5nZWQuCisjIE5vdGUgdGhhdCBhIFBPIGZpbGUgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKFBPRklMRVMpOiAkKFBPRklMRVNERVBTKQorCUB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8ICQoTUFLRSkgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncywuKi8sLCcgLWUgJ3MvXC5wbyQkLy8nYDsgXAorCWlmIHRlc3QgLWYgIiQoc3JjZGlyKS8kJHtsYW5nfS5wbyI7IHRoZW4gXAorCSAgdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCisJICBlY2hvICIkJHtjZGNtZH0kKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCR7bGFuZ30gLS1wcmV2aW91cyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90IjsgXAorCSAgY2QgJChzcmNkaXIpIFwKKwkgICAgJiYgeyBjYXNlIGAkKE1TR01FUkdFX1VQREFURSkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCisJICAgICAgICAgICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC01XSB8IDAuMVswLTVdLiopIFwKKwkgICAgICAgICAgICAgJChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgICAgIDAuMVs2LTddIHwgMC4xWzYtN10uKikgXAorCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLXByZXZpb3VzICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICAgICAqKSBcCisJICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAtLXByZXZpb3VzICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICAgZXNhYzsgXAorCSAgICAgICB9OyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQke2xhbmd9LnBvLWNyZWF0ZTsgXAorCWZpCisKKworaW5zdGFsbDogaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YQoraW5zdGFsbC1leGVjOgoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtQFVTRV9OTFNACisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAorCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAorCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSBcCisJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJICBmb3IgZmlsZSBpbiBNYWtldmFyczsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKwkgIGRvbmU7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK2luc3RhbGwtZGF0YS1ubzogYWxsCitpbnN0YWxsLWRhdGEteWVzOiBhbGwKKwlAY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGRpcj0kKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTOyBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkJGRpcjsgXAorCSAgaWYgdGVzdCAtciAkJGNhdDsgdGhlbiByZWFsY2F0PSQkY2F0OyBlbHNlIHJlYWxjYXQ9JChzcmNkaXIpLyQkY2F0OyBmaTsgXAorCSAgJChJTlNUQUxMX0RBVEEpICQkcmVhbGNhdCAkKERFU1RESVIpJCRkaXIvJChET01BSU4pLm1vOyBcCisJICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBhcyAkKERFU1RESVIpJCRkaXIvJChET01BSU4pLm1vIjsgXAorCSAgZm9yIGxjIGluICcnICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIGlmIHRlc3QgLW4gIiQkbGMiOyB0aGVuIFwKKwkgICAgICBpZiAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyAyPi9kZXYvbnVsbCkgfCBncmVwICcgLT4gJyA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgIGxpbms9YGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgfCBzZWQgLWUgJ3MvXi4qIC0+IC8vJ2A7IFwKKwkgICAgICAgIG12ICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZCAmJiBcCisJICAgICAgICAgZm9yIGZpbGUgaW4gKjsgZG8gXAorCSAgICAgICAgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICAgICAgICAgICBsbiAtcyAuLi8kJGxpbmsvJCRmaWxlICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJCRmaWxlOyBcCisJICAgICAgICAgICBmaTsgXAorCSAgICAgICAgIGRvbmUpOyBcCisJICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgIGVsc2UgXAorCSAgICAgICAgaWYgdGVzdCAtZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyB0aGVuIFwKKwkgICAgICAgICAgOjsgXAorCSAgICAgICAgZWxzZSBcCisJICAgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgZmk7IFwKKwkgICAgICBmaTsgXAorCSAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCisJICAgICAgbG4gLXMgLi4vTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgICBsbiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8gMj4vZGV2L251bGwgfHwgXAorCSAgICAgIGNwIC1wICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgICAgIGVjaG8gImluc3RhbGxpbmcgJCRyZWFsY2F0IGxpbmsgYXMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8iOyBcCisJICAgIGZpOyBcCisJICBkb25lOyBcCisJZG9uZQorCitpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCisKK2luc3RhbGxkaXJzOiBpbnN0YWxsZGlycy1leGVjIGluc3RhbGxkaXJzLWRhdGEKK2luc3RhbGxkaXJzLWV4ZWM6CitpbnN0YWxsZGlycy1kYXRhOiBpbnN0YWxsZGlycy1kYXRhLUBVU0VfTkxTQAorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgICQobWtkaXJfcCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK2luc3RhbGxkaXJzLWRhdGEtbm86CitpbnN0YWxsZGlycy1kYXRhLXllczoKKwlAY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGRpcj0kKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTOyBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkJGRpcjsgXAorCSAgZm9yIGxjIGluICcnICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIGlmIHRlc3QgLW4gIiQkbGMiOyB0aGVuIFwKKwkgICAgICBpZiAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyAyPi9kZXYvbnVsbCkgfCBncmVwICcgLT4gJyA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgIGxpbms9YGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgfCBzZWQgLWUgJ3MvXi4qIC0+IC8vJ2A7IFwKKwkgICAgICAgIG12ICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZCAmJiBcCisJICAgICAgICAgZm9yIGZpbGUgaW4gKjsgZG8gXAorCSAgICAgICAgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICAgICAgICAgICBsbiAtcyAuLi8kJGxpbmsvJCRmaWxlICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJCRmaWxlOyBcCisJICAgICAgICAgICBmaTsgXAorCSAgICAgICAgIGRvbmUpOyBcCisJICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgIGVsc2UgXAorCSAgICAgICAgaWYgdGVzdCAtZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyB0aGVuIFwKKwkgICAgICAgICAgOjsgXAorCSAgICAgICAgZWxzZSBcCisJICAgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgZmk7IFwKKwkgICAgICBmaTsgXAorCSAgICBmaTsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworIyBEZWZpbmUgdGhpcyBhcyBlbXB0eSB1bnRpbCBJIGZvdW5kIGEgdXNlZnVsIGFwcGxpY2F0aW9uLgoraW5zdGFsbGNoZWNrOgorCit1bmluc3RhbGw6IHVuaW5zdGFsbC1leGVjIHVuaW5zdGFsbC1kYXRhCit1bmluc3RhbGwtZXhlYzoKK3VuaW5zdGFsbC1kYXRhOiB1bmluc3RhbGwtZGF0YS1AVVNFX05MU0AKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzLnRlbXBsYXRlOyBkbyBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorCSAgZG9uZTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQordW5pbnN0YWxsLWRhdGEtbm86Cit1bmluc3RhbGwtZGF0YS15ZXM6CisJY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGZvciBsYyBpbiBMQ19NRVNTQUdFUyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworY2hlY2s6IGFsbAorCitpbmZvIGR2aSBwcyBwZGYgaHRtbCB0YWdzIFRBR1MgY3RhZ3MgQ1RBR1MgSUQ6CisKK2luc3RhbGwtZHZpIGluc3RhbGwtcHMgaW5zdGFsbC1wZGYgaW5zdGFsbC1odG1sOgorCittb3N0bHljbGVhbjoKKwlybSAtZiByZW1vdmUtcG90Y2RhdGUuc2VkCisJcm0gLWYgJChzcmNkaXIpL3N0YW1wLXBvVAorCXJtIC1mIGNvcmUgY29yZS4qICQoRE9NQUlOKS5wbyAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gKi5uZXcucG8KKwlybSAtZnIgKi5vCisKK2NsZWFuOiBtb3N0bHljbGVhbgorCitkaXN0Y2xlYW46IGNsZWFuCisJcm0gLWYgTWFrZWZpbGUgTWFrZWZpbGUuaW4gUE9URklMRVMKKworbWFpbnRhaW5lci1jbGVhbjogZGlzdGNsZWFuCisJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKKwlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCisJcm0gLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJChzcmNkaXIpL3N0YW1wLXBvICQoR01PRklMRVMpCisKK2Rpc3RkaXIgPSAkKHRvcF9idWlsZGRpcikvJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQorZGlzdCBkaXN0ZGlyOgorCXRlc3QgLXogIiQoRElTVEZJTEVTREVQUykiIHx8ICQoTUFLRSkgJChESVNURklMRVNERVBTKQorCUAkKE1BS0UpIGRpc3QyCisjIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KK2Rpc3QyOiAkKHNyY2Rpcikvc3RhbXAtcG8gJChESVNURklMRVMpCisJZGlzdHM9IiQoRElTVEZJTEVTKSI7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBNYWtldmFycy50ZW1wbGF0ZSI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IHRoZW4gXAorCSAgZGlzdHM9IiQkZGlzdHMgJChET01BSU4pLnBvdCBzdGFtcC1wbyI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZzsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2ciOyBcCisJZmk7IFwKKwlmb3IgaSBpbiAwIDEgMiAzIDQgNSA2IDcgOCA5OyBkbyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS9DaGFuZ2VMb2cuJCRpOyB0aGVuIFwKKwkgICAgZGlzdHM9IiQkZGlzdHMgQ2hhbmdlTG9nLiQkaSI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0xJTkdVQVM7IHRoZW4gZGlzdHM9IiQkZGlzdHMgTElOR1VBUyI7IGZpOyBcCisJZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICBjcCAtcCAkJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKKwkgIGVsc2UgXAorCSAgICBjcCAtcCAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwordXBkYXRlLXBvOiBNYWtlZmlsZQorCSQoTUFLRSkgJChET01BSU4pLnBvdC11cGRhdGUKKwl0ZXN0IC16ICIkKFVQREFURVBPRklMRVMpIiB8fCAkKE1BS0UpICQoVVBEQVRFUE9GSUxFUykKKwkkKE1BS0UpIHVwZGF0ZS1nbW8KKworIyBHZW5lcmFsIHJ1bGUgZm9yIGNyZWF0aW5nIFBPIGZpbGVzLgorCisubm9wLnBvLWNyZWF0ZToKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLWNyZWF0ZSQkLy8nYDsgXAorCWVjaG8gIkZpbGUgJCRsYW5nLnBvIGRvZXMgbm90IGV4aXN0LiBJZiB5b3UgYXJlIGEgdHJhbnNsYXRvciwgeW91IGNhbiBjcmVhdGUgaXQgdGhyb3VnaCAnbXNnaW5pdCcuIiAxPiYyOyBcCisJZXhpdCAxCisKKyMgR2VuZXJhbCBydWxlIGZvciB1cGRhdGluZyBQTyBmaWxlcy4KKworLm5vcC5wby11cGRhdGU6CisJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUkJC8vJ2A7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiAmJiB0ZXN0ICIkKENST1NTX0NPTVBJTElORykiICE9ICJ5ZXMiOyB0aGVuIFBBVEg9YHB3ZGAvLi4vc3JjOiQkUEFUSDsgZmk7IFwKKwl0bXBkaXI9YHB3ZGA7IFwKKwllY2hvICIkJGxhbmc6IjsgXAorCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCWVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtLXByZXZpb3VzICQkbGFuZy5wbyAkKERPTUFJTikucG90IC1vICQkbGFuZy5uZXcucG8iOyBcCisJY2QgJChzcmNkaXIpOyBcCisJaWYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKKwkgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNV0gfCAwLjFbMC01XS4qKSBcCisJICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgICAwLjFbNi03XSB8IDAuMVs2LTddLiopIFwKKwkgICAgICAgICAkKE1TR01FUkdFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tcHJldmlvdXMgLW8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgKikgXAorCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtLXByZXZpb3VzIC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICBlc2FjOyBcCisJICAgfTsgdGhlbiBcCisJICBpZiBjbXAgJCRsYW5nLnBvICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKwkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAorCSAgZWxzZSBcCisJICAgIGlmIG12IC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvOyB0aGVuIFwKKwkgICAgICA6OyBcCisJICAgIGVsc2UgXAorCSAgICAgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAorCSAgICAgIGV4aXQgMTsgXAorCSAgICBmaTsgXAorCSAgZmk7IFwKKwllbHNlIFwKKwkgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkISIgMT4mMjsgXAorCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAorCWZpCisKKyQoRFVNTVlQT0ZJTEVTKToKKwordXBkYXRlLWdtbzogTWFrZWZpbGUgJChHTU9GSUxFUykKKwlAOgorCisjIFJlY3JlYXRlIE1ha2VmaWxlIGJ5IGludm9raW5nIGNvbmZpZy5zdGF0dXMuIEV4cGxpY2l0bHkgaW52b2tlIHRoZSBzaGVsbCwKKyMgYmVjYXVzZSBleGVjdXRpb24gcGVybWlzc2lvbiBiaXRzIG1heSBub3Qgd29yayBvbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4KKyMgVXNlIEBTSEVMTEAsIHdoaWNoIGlzIHRoZSBzaGVsbCBkZXRlcm1pbmVkIGJ5IGF1dG9jb25mIGZvciB0aGUgdXNlIGJ5IGl0cworIyBzY3JpcHRzLCBub3QgJChTSEVMTCkgd2hpY2ggaXMgaGFyZHdpcmVkIHRvIC9iaW4vc2ggYW5kIG1heSBiZSBkZWZpY2llbnQuCitNYWtlZmlsZTogTWFrZWZpbGUuaW4uaW4gTWFrZXZhcnMgJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgQFBPTUFLRUZJTEVERVBTQAorCWNkICQodG9wX2J1aWxkZGlyKSBcCisJICAmJiBAU0hFTExAIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAuaW4gcG8tZGlyZWN0b3JpZXMKKworZm9yY2U6CisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvZ2V0dGV4dC5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvZ2V0dGV4dC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzgzMjQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9nZXR0ZXh0Lm00CkBAIC0wLDAgKzEsMzg2IEBACisjIGdldHRleHQubTQgc2VyaWFsIDcwIChnZXR0ZXh0LTAuMjApCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTQsIDIwMTYsIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCitkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwNiwgMjAwOC0yMDEwLgorCitkbmwgTWFjcm8gdG8gYWRkIGZvciB1c2luZyBHTlUgZ2V0dGV4dC4KKworZG5sIFVzYWdlOiBBTV9HTlVfR0VUVEVYVChbSU5UTFNZTUJPTF0sIFtORUVEU1lNQk9MXSwgW0lOVExESVJdKS4KK2RubCBJTlRMU1lNQk9MIG11c3QgYmUgb25lIG9mICdleHRlcm5hbCcsICd1c2UtbGlidG9vbCcuCitkbmwgICAgSU5UTFNZTUJPTCBzaG91bGQgYmUgJ2V4dGVybmFsJyBmb3IgcGFja2FnZXMgb3RoZXIgdGhhbiBHTlUgZ2V0dGV4dCwgYW5kCitkbmwgICAgJ3VzZS1saWJ0b29sJyBmb3IgdGhlIHBhY2thZ2VzICdnZXR0ZXh0LXJ1bnRpbWUnIGFuZCAnZ2V0dGV4dC10b29scycuCitkbmwgICAgSWYgSU5UTFNZTUJPTCBpcyAndXNlLWxpYnRvb2wnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5CitkbmwgICAgJCh0b3BfYnVpbGRkaXIpL2ludGwvbGliaW50bC5sYSB3aWxsIGJlIGNyZWF0ZWQgKHNoYXJlZCBhbmQvb3Igc3RhdGljLAorZG5sICAgIGRlcGVuZGluZyBvbiAtLXtlbmFibGUsZGlzYWJsZX0te3NoYXJlZCxzdGF0aWN9IGFuZCBvbiB0aGUgcHJlc2VuY2Ugb2YKK2RubCAgICBBTS1ESVNBQkxFLVNIQVJFRCkuCitkbmwgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzICduZWVkLW5nZXR0ZXh0JywgdGhlbiBHTlUgZ2V0dGV4dAorZG5sICAgIGltcGxlbWVudGF0aW9ucyAoaW4gbGliYyBvciBsaWJpbnRsKSB3aXRob3V0IHRoZSBuZ2V0dGV4dCgpIGZ1bmN0aW9uCitkbmwgICAgd2lsbCBiZSBpZ25vcmVkLiAgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzCitkbmwgICAgJ25lZWQtZm9ybWF0c3RyaW5nLW1hY3JvcycsIHRoZW4gR05VIGdldHRleHQgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3QKK2RubCAgICBzdXBwb3J0IHRoZSBJU08gQyA5OSA8aW50dHlwZXMuaD4gZm9ybWF0c3RyaW5nIG1hY3JvcyB3aWxsIGJlIGlnbm9yZWQuCitkbmwgSU5UTERJUiBpcyB1c2VkIHRvIGZpbmQgdGhlIGludGwgbGlicmFyaWVzLiAgSWYgZW1wdHksCitkbmwgICAgdGhlIHZhbHVlICckKHRvcF9idWlsZGRpcikvaW50bC8nIGlzIHVzZWQuCitkbmwKK2RubCBUaGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmF0aW9uIGlzIG9uZSBvZiB0aHJlZSBjYXNlczoKK2RubCAxKSBHTlUgZ2V0dGV4dCwgYXMgaW5jbHVkZWQgaW4gdGhlIGludGwgc3ViZGlyZWN0b3J5LCB3aWxsIGJlIGNvbXBpbGVkCitkbmwgICAgYW5kIHVzZWQuCitkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IEdOVSAtLT4gaW5zdGFsbCBpbiAkKGRhdGFkaXIpCitkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IC5tbyBhZnRlciBpbnN0YWxsYXRpb24sIC5nbW8gaW4gc291cmNlIHRyZWUKK2RubCAyKSBHTlUgZ2V0dGV4dCBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5LgorZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiAubW8gYWZ0ZXIgaW5zdGFsbGF0aW9uLCAuZ21vIGluIHNvdXJjZSB0cmVlCitkbmwgMykgTm8gaW50ZXJuYXRpb25hbGl6YXRpb24sIGFsd2F5cyB1c2UgRW5nbGlzaCBtc2dpZC4KK2RubCAgICBDYXRhbG9nIGZvcm1hdDogbm9uZQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiBub25lCitkbmwgSWYgSU5UTFNZTUJPTCBpcyAnZXh0ZXJuYWwnLCBvbmx5IGNhc2VzIDIgYW5kIDMgY2FuIG9jY3VyLgorZG5sIFRoZSB1c2Ugb2YgLmdtbyBpcyBoaXN0b3JpY2FsIChpdCB3YXMgbmVlZGVkIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZQorZG5sIEdOVSBmb3JtYXQgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBvbiBhIHBsYXRmb3JtIHdpdGggYW4gWC9PcGVuIGdldHRleHQpLAorZG5sIGJ1dCB3ZSBrZWVwIGl0IGluIG9yZGVyIG5vdCB0byBmb3JjZSBpcnJlbGV2YW50IGZpbGVuYW1lIGNoYW5nZXMgb24gdGhlCitkbmwgbWFpbnRhaW5lcnMuCitkbmwKK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF0sCitbCisgIGRubCBBcmd1bWVudCBjaGVja2luZy4KKyAgaWZlbHNlKFskMV0sIFtdLCAsIFtpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgLCBbaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sICwKKyAgICBbZXJycHJpbnQoW0VSUk9SOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCitdKV0pXSldKQorICBpZmVsc2UoaWZlbHNlKFskMV0sIFtdLCBbb2xkXSlbXWlmZWxzZShbJDFdLCBbbm8tbGlidG9vbF0sIFtvbGRdKSwgW29sZF0sCisgICAgW2VycnByaW50KFtFUlJPUjogVXNlIG9mIEFNX0dOVV9HRVRURVhUIHdpdGhvdXQgW2V4dGVybmFsXSBhcmd1bWVudCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgorXSldKQorICBpZmVsc2UoWyQyXSwgW10sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwgLAorICAgIFtlcnJwcmludChbRVJST1I6IGludmFsaWQgc2Vjb25kIGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCitdKV0pXSldKQorICBkZWZpbmUoW2d0X2luY2x1ZGVkX2ludGxdLAorICAgIGlmZWxzZShbJDFdLCBbZXh0ZXJuYWxdLCBbbm9dLCBbeWVzXSkpCisgIGd0X05FRURTX0lOSVQKKyAgQU1fR05VX0dFVFRFWFRfTkVFRChbJDJdKQorCisgIEFDX1JFUVVJUkUoW0FNX1BPX1NVQkRJUlNdKWRubAorICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgQUNfUkVRVUlSRShbQU1fSU5UTF9TVUJESVJdKWRubAorICBdKQorCisgIGRubCBQcmVyZXF1aXNpdGVzIG9mIEFDX0xJQl9MSU5LRkxBR1NfQk9EWS4KKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKworICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCisgIGRubCBJZGVhbGx5IHdlIHdvdWxkIGRvIHRoaXMgc2VhcmNoIG9ubHkgYWZ0ZXIgdGhlCisgIGRubCAgICAgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisgIGRubCAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorICBkbmwgdGVzdHMuIEJ1dCBpZiBjb25maWd1cmUuaW4gaW52b2tlcyBBTV9JQ09OViBhZnRlciBBTV9HTlVfR0VUVEVYVAorICBkbmwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd291bGQgbmVlZCB0byBjb250YWluIHRoZSBzYW1lIHNoZWxsIGNvZGUKKyAgZG5sIGFnYWluLCBvdXRzaWRlIGFueSAnaWYnLiBUaGVyZSBhcmUgdHdvIHNvbHV0aW9uczoKKyAgZG5sIC0gSW52b2tlIEFNX0lDT05WX0xJTktGTEFHU19CT0RZIGhlcmUsIG91dHNpZGUgYW55ICdpZicuCisgIGRubCAtIENvbnRyb2wgdGhlIGV4cGFuc2lvbnMgaW4gbW9yZSBkZXRhaWwgdXNpbmcgQUNfUFJPVklERV9JRkVMU0UuCisgIGRubCBTaW5jZSBBQ19QUk9WSURFX0lGRUxTRSBpcyBub3QgZG9jdW1lbnRlZCwgd2UgYXZvaWQgaXQuCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWworICAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKKyAgXSkKKworICBkbmwgU29tZXRpbWVzLCBvbiBNYWMgT1MgWCwgbGliaW50bCByZXF1aXJlcyBsaW5raW5nIHdpdGggQ29yZUZvdW5kYXRpb24uCisgIGd0X0lOVExfTUFDT1NYCisKKyAgZG5sIFNldCBVU0VfTkxTLgorICBBQ19SRVFVSVJFKFtBTV9OTFNdKQorCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPW5vCisgICAgVVNFX0lOQ0xVREVEX0xJQklOVEw9bm8KKyAgXSkKKyAgTElCSU5UTD0KKyAgTFRMSUJJTlRMPQorICBQT1NVQj0KKworICBkbmwgQWRkIGEgdmVyc2lvbiBudW1iZXIgdG8gdGhlIGNhY2hlIG1hY3Jvcy4KKyAgY2FzZSAiICRndF9uZWVkcyAiIGluCisgICAgKiIgbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zICIqKSBndF9hcGlfdmVyc2lvbj0zIDs7CisgICAgKiIgbmVlZC1uZ2V0dGV4dCAiKikgZ3RfYXBpX3ZlcnNpb249MiA7OworICAgICopIGd0X2FwaV92ZXJzaW9uPTEgOzsKKyAgZXNhYworICBndF9mdW5jX2dudWdldHRleHRfbGliYz0iZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0JHtndF9hcGlfdmVyc2lvbn1fbGliYyIKKyAgZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9Imd0X2N2X2Z1bmNfZ251Z2V0dGV4dCR7Z3RfYXBpX3ZlcnNpb259X2xpYmludGwiCisKKyAgZG5sIElmIHdlIHVzZSBOTFMgZmlndXJlIG91dCB3aGF0IG1ldGhvZAorICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgorICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dD1ubworICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZF0pCisgICAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2V0dGV4dF0sCisgICAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0IHVzZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpbmNsdWRlZCBoZXJlXSwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD0kd2l0aHZhbCwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD1ubykKKyAgICAgIEFDX01TR19SRVNVTFQoWyRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0XSkKKworICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD0iJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiCisgICAgICBpZiB0ZXN0ICIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIgIT0gInllcyI7IHRoZW4KKyAgICBdKQorICAgICAgICBkbmwgVXNlciBkb2VzIG5vdCBpbnNpc3Qgb24gdXNpbmcgR05VIE5MUyBsaWJyYXJ5LiAgRmlndXJlIG91dCB3aGF0CisgICAgICAgIGRubCB0byB1c2UuICBJZiBHTlUgZ2V0dGV4dCBpcyBhdmFpbGFibGUgd2UgdXNlIHRoaXMuICBFbHNlIHdlIGhhdmUKKyAgICAgICAgZG5sIHRvIGZhbGwgYmFjayB0byBHTlUgTkxTIGxpYnJhcnkuCisKKyAgICAgICAgaWYgdGVzdCAkZ3RfYXBpX3ZlcnNpb24gLWdlIDM7IHRoZW4KKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9JworI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKKyNlbmRpZgorY2hhbmdlcXVvdGUoLClkbmwKK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07CitjaGFuZ2VxdW90ZShbLF0pZG5sCisnCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9CisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgJGd0X2FwaV92ZXJzaW9uIC1nZSAyOyB0aGVuCisgICAgICAgICAgZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGU9JyArICogbmdldHRleHQgKCIiLCAiIiwgMCknCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9leHByZXNzaW9uX3Rlc3RfY29kZT0KKyAgICAgICAgZmkKKworICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmNdLCBbJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjXSwKKyAgICAgICAgIFtBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybiBpbnQgKl9ubF9kb21haW5fYmluZGluZ3M7CisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gKF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2RvbWFpbl9iaW5kaW5ncykKKyNlbHNlCisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gMAorI2VuZGlmCiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCisgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgIFtbCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04KKyAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjPXllcyJdLAorICAgICAgICAgICAgW2V2YWwgIiRndF9mdW5jX2dudWdldHRleHRfbGliYz1ubyJdKV0pCisKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorICAgICAgICAgIGRubCBTb21ldGltZXMgbGliaW50bCByZXF1aXJlcyBsaWJpY29udiwgc28gZmlyc3Qgc2VhcmNoIGZvciBsaWJpY29udi4KKyAgICAgICAgICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCAsIFsKKyAgICAgICAgICAgIEFNX0lDT05WX0xJTksKKyAgICAgICAgICBdKQorICAgICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmludGwgYW5kIGRlZmluZSBMSUJJTlRMLCBMVExJQklOVEwgYW5kIElOQ0lOVEwKKyAgICAgICAgICBkbmwgYWNjb3JkaW5nbHkuIERvbid0IHVzZSBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ludGxdLFtpY29udl0pCisgICAgICAgICAgZG5sIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgIi1saWNvbnYiIHRvIExJQklOVEwgYW5kIExUTElCSU5UTAorICAgICAgICAgIGRubCBldmVuIGlmIGxpYmljb252IGRvZXNuJ3QgZXhpc3QuCisgICAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpbnRsXSkKKyAgICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmludGxdLAorICAgICAgICAgICAgWyRndF9mdW5jX2dudWdldHRleHRfbGliaW50bF0sCisgICAgICAgICAgIFtndF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNJTlRMIgorICAgICAgICAgICAgZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJTlRMIgorICAgICAgICAgICAgZG5sIE5vdyBzZWUgd2hldGhlciBsaWJpbnRsIGV4aXN0cyBhbmQgZG9lcyBub3QgZGVwZW5kIG9uIGxpYmljb252LgorICAgICAgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICAgIFtbCisjaW5jbHVkZSA8bGliaW50bC5oPgorI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOworZXh0ZXJuCisjaWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCitjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFyICopOworI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIChfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9leHBhbmRfYWxpYXMgKCIiKSkKKyNlbHNlCisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gMAorI2VuZGlmCiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCisgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICBbWworYmluZHRleHRkb21haW4gKCIiLCAiIik7CityZXR1cm4gKiBnZXR0ZXh0ICgiIikkZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGUgKyBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9eWVzIl0sCisgICAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9bm8iXSkKKyAgICAgICAgICAgIGRubCBOb3cgc2VlIHdoZXRoZXIgbGliaW50bCBleGlzdHMgYW5kIGRlcGVuZHMgb24gbGliaWNvbnYuCisgICAgICAgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiICE9IHllczsgfSAmJiB0ZXN0IC1uICIkTElCSUNPTlYiOyB0aGVuCisgICAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgICAgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybgorI2lmZGVmIF9fY3BsdXNwbHVzCisiQyIKKyNlbmRpZgorY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqKTsKKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTiAoX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgiIikpCisjZWxzZQorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIDAKKyNlbmRpZgorJGd0X3JldmlzaW9uX3Rlc3RfY29kZQorICAgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgIFtbCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04KKyAgICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICAgIFtMSUJJTlRMPSIkTElCSU5UTCAkTElCSUNPTlYiCisgICAgICAgICAgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkTFRMSUJJQ09OViIKKyAgICAgICAgICAgICAgICAgZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcyIKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIENQUEZMQUdTPSIkZ3Rfc2F2ZV9DUFBGTEFHUyIKKyAgICAgICAgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgICAgICAgZmkKKworICAgICAgICBkbmwgSWYgYW4gYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZCBHTlUgZ2V0dGV4dCgpIGlzIGZvdW5kLAorICAgICAgICBkbmwgdXNlIGl0LiAgQnV0IGlmIHRoaXMgbWFjcm8gaXMgdXNlZCBpbiBHTlUgZ2V0dGV4dCwgYW5kIEdOVQorICAgICAgICBkbmwgZ2V0dGV4dCBpcyBhbHJlYWR5IHByZWluc3RhbGxlZCBpbiBsaWJpbnRsLCB3ZSB1cGRhdGUgdGhpcworICAgICAgICBkbmwgbGliaW50bC4gIChDZi4gdGhlIGluc3RhbGwgcnVsZSBpbiBpbnRsL01ha2VmaWxlLmluLikKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiA9ICJ5ZXMiOyB9IFwKKyAgICAgICAgICAgfHwgeyB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH0gXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXJ1bnRpbWUgXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXRvb2xzOyB9OyB0aGVuCisgICAgICAgICAgZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0PXllcworICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFJlc2V0IHRoZSB2YWx1ZXMgc2V0IGJ5IHNlYXJjaGluZyBmb3IgbGliaW50bC4KKyAgICAgICAgICBMSUJJTlRMPQorICAgICAgICAgIExUTElCSU5UTD0KKyAgICAgICAgICBJTkNJTlRMPQorICAgICAgICBmaQorCisgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWworICAgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgorICAgICAgICAgIGRubCBHTlUgZ2V0dGV4dCBpcyBub3QgZm91bmQgaW4gdGhlIEMgbGlicmFyeS4KKyAgICAgICAgICBkbmwgRmFsbCBiYWNrIG9uIGluY2x1ZGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCisgICAgICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD15ZXMKKyAgICAgICAgZmkKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIGRubCBNYXJrIGFjdGlvbnMgdXNlZCB0byBnZW5lcmF0ZSBHTlUgTkxTIGxpYnJhcnkuCisgICAgICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9eWVzCisgICAgICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPXllcworICAgICAgICBMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5sYSAkTElCSUNPTlYgJExJQlRIUkVBRCIKKyAgICAgICAgTFRMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5sYSAkTFRMSUJJQ09OViAkTFRMSUJUSFJFQUQiCisgICAgICAgIExJQlM9YGVjaG8gIiAkTElCUyAiIHwgc2VkIC1lICdzLyAtbGludGwgLyAvJyAtZSAncy9eIC8vJyAtZSAncy8gJC8vJ2AKKyAgICAgIGZpCisKKyAgICAgIENBVE9CSkVYVD0KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIE1hcmsgYWN0aW9ucyB0byB1c2UgR05VIGdldHRleHQgdG9vbHMuCisgICAgICAgIENBVE9CSkVYVD0uZ21vCisgICAgICBmaQorICAgIF0pCisKKyAgICBpZiB0ZXN0IC1uICIkSU5UTF9NQUNPU1hfTElCUyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIFNvbWUgZXh0cmEgZmxhZ3MgYXJlIG5lZWRlZCBkdXJpbmcgbGlua2luZy4KKyAgICAgICAgTElCSU5UTD0iJExJQklOVEwgJElOVExfTUFDT1NYX0xJQlMiCisgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkSU5UTF9NQUNPU1hfTElCUyIKKyAgICAgIGZpCisgICAgZmkKKworICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBBQ19ERUZJTkUoW0VOQUJMRV9OTFNdLCBbMV0sCisgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlIGxhbmd1YWdlCisgICBpcyByZXF1ZXN0ZWQuXSkKKyAgICBlbHNlCisgICAgICBVU0VfTkxTPW5vCisgICAgZmkKKyAgZmkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIE5MU10pCisgIEFDX01TR19SRVNVTFQoWyRVU0VfTkxTXSkKKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXJlIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGNvbWVzIGZyb21dKQorICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfTsgdGhlbgorICAgICAgICBndF9zb3VyY2U9ImV4dGVybmFsIGxpYmludGwiCisgICAgICBlbHNlCisgICAgICAgIGd0X3NvdXJjZT0ibGliYyIKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZ3Rfc291cmNlPSJpbmNsdWRlZCBpbnRsIGRpcmVjdG9yeSIKKyAgICBmaQorICAgIEFDX01TR19SRVNVTFQoWyRndF9zb3VyY2VdKQorICBmaQorCisgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisKKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH07IHRoZW4KKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYmludGxdKQorICAgICAgICBBQ19NU0dfUkVTVUxUKFskTElCSU5UTF0pCisgICAgICAgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lOVExdKQorICAgICAgZmkKKworICAgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIHBhY2thZ2VzIG1heSBiZSB1c2luZyB0aGlzLgorICAgICAgQUNfREVGSU5FKFtIQVZFX0dFVFRFWFRdLCBbMV0sCisgICAgICAgW0RlZmluZSBpZiB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgICBBQ19ERUZJTkUoW0hBVkVfRENHRVRURVhUXSwgWzFdLAorICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBkY2dldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgZmkKKworICAgIGRubCBXZSBuZWVkIHRvIHByb2Nlc3MgdGhlIHBvLyBkaXJlY3RvcnkuCisgICAgUE9TVUI9cG8KKyAgZmkKKworICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgZG5sIEluIEdOVSBnZXR0ZXh0IHdlIGhhdmUgdG8gc2V0IEJVSUxEX0lOQ0xVREVEX0xJQklOVEwgdG8gJ3llcycKKyAgICBkbmwgYmVjYXVzZSBzb21lIG9mIHRoZSB0ZXN0c3VpdGUgcmVxdWlyZXMgaXQuCisgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKKworICAgIGRubCBNYWtlIGFsbCB2YXJpYWJsZXMgd2UgdXNlIGtub3duIHRvIGF1dG9jb25mLgorICAgIEFDX1NVQlNUKFtCVUlMRF9JTkNMVURFRF9MSUJJTlRMXSkKKyAgICBBQ19TVUJTVChbVVNFX0lOQ0xVREVEX0xJQklOVExdKQorICAgIEFDX1NVQlNUKFtDQVRPQkpFWFRdKQorICBdKQorCisgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCisgIElOVExMSUJTPSIkTElCSU5UTCIKKyAgQUNfU1VCU1QoW0lOVExMSUJTXSkKKworICBkbmwgTWFrZSBhbGwgZG9jdW1lbnRlZCB2YXJpYWJsZXMga25vd24gdG8gYXV0b2NvbmYuCisgIEFDX1NVQlNUKFtMSUJJTlRMXSkKKyAgQUNfU1VCU1QoW0xUTElCSU5UTF0pCisgIEFDX1NVQlNUKFtQT1NVQl0pCitdKQorCisKK2RubCBndF9ORUVEU19JTklUIGVuc3VyZXMgdGhhdCB0aGUgZ3RfbmVlZHMgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQuCittNF9kZWZpbmUoW2d0X05FRURTX0lOSVRdLAorWworICBtNF9kaXZlcnRfdGV4dChbREVGQVVMVFNdLCBbZ3RfbmVlZHM9XSkKKyAgbTRfZGVmaW5lKFtndF9ORUVEU19JTklUXSwgW10pCitdKQorCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfTkVFRChbTkVFRFNZTUJPTF0pCitBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRfTkVFRF0sCitbCisgIG00X2RpdmVydF90ZXh0KFtJTklUX1BSRVBBUkVdLCBbZ3RfbmVlZHM9IiRndF9uZWVkcyAkMSJdKQorXSkKKworCitkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oW2dldHRleHQtdmVyc2lvbl0pCitBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRfVkVSU0lPTl0sIFtdKQorCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfUkVRVUlSRV9WRVJTSU9OKFtnZXR0ZXh0LXZlcnNpb25dKQorQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUX1JFUVVJUkVfVkVSU0lPTl0sIFtdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9ob3N0LWNwdS1jLWFiaS5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaG9zdC1jcHUtYy1hYmkubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwNzI5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaG9zdC1jcHUtYy1hYmkubTQKQEAgLTAsMCArMSw2NDQgQEAKKyMgaG9zdC1jcHUtYy1hYmkubTQgc2VyaWFsIDExCitkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlIGFuZCBTYW0gU3RlaW5nb2xkLgorCitkbmwgU2V0cyB0aGUgSE9TVF9DUFUgdmFyaWFibGUgdG8gdGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBDUFUuCitkbmwgU2V0cyB0aGUgSE9TVF9DUFVfQ19BQkkgdmFyaWFibGUgdG8gdGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBDUFUgd2l0aCBpdHMKK2RubCBDIGxhbmd1YWdlIEFCSSAoYXBwbGljYXRpb24gYmluYXJ5IGludGVyZmFjZSkuCitkbmwgQWxzbyBkZWZpbmVzIF9fJHtIT1NUX0NQVX1fXyBhbmQgX18ke0hPU1RfQ1BVX0NfQUJJfV9fIGFzIEMgbWFjcm9zIGluCitkbmwgY29uZmlnLmguCitkbmwKK2RubCBUaGlzIGNhbm9uaWNhbCBuYW1lIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIHBhcnRpY3VsYXIgYXNzZW1ibHkgbGFuZ3VhZ2UKK2RubCBzb3VyY2UgZmlsZSB0aGF0IHdpbGwgaW50ZXJvcGVyYXRlIHdpdGggQyBjb2RlIG9uIHRoZSBnaXZlbiBob3N0LgorZG5sCitkbmwgRm9yIGV4YW1wbGU6CitkbmwgKiAnaTM4NicgYW5kICdzcGFyYycgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgY29kZSBmb3IgaTM4NgorZG5sICAgd2lsbCBub3QgcnVuIG9uIFNQQVJDIENQVXMgYW5kIHZpY2UgdmVyc2EuIFRoZXkgaGF2ZSBkaWZmZXJlbnQKK2RubCAgIGluc3RydWN0aW9uIHNldHMuCitkbmwgKiAnc3BhcmMnIGFuZCAnc3BhcmM2NCcgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgY29kZSBmb3IKK2RubCAgICdzcGFyYycgYW5kIGNvZGUgZm9yICdzcGFyYzY0JyBjYW5ub3QgYmUgbGlua2VkIHRvZ2V0aGVyOiAnc3BhcmMnIGNvZGUKK2RubCAgIGNvbnRhaW5zIDMyLWJpdCBpbnN0cnVjdGlvbnMsIHdoZXJlYXMgJ3NwYXJjNjQnIGNvZGUgY29udGFpbnMgNjQtYml0CitkbmwgICBpbnN0cnVjdGlvbnMuIEEgcHJvY2VzcyBvbiBhIFNQQVJDIENQVSBjYW4gYmUgaW4gMzItYml0IG1vZGUgb3IgaW4gNjQtYml0CitkbmwgICBtb2RlLCBidXQgbm90IGJvdGguCitkbmwgKiAnbWlwcycgYW5kICdtaXBzbjMyJyBhcmUgZGlmZmVyZW50IGNhbm9uaWNhbCBuYW1lcywgYmVjYXVzZSB0aGV5IHVzZQorZG5sICAgZGlmZmVyZW50IGFyZ3VtZW50IHBhc3NpbmcgYW5kIHJldHVybiBjb252ZW50aW9ucyBmb3IgQyBmdW5jdGlvbnMsIGFuZAorZG5sICAgYWx0aG91Z2ggdGhlIGluc3RydWN0aW9uIHNldCBvZiAnbWlwcycgaXMgYSBsYXJnZSBzdWJzZXQgb2YgdGhlCitkbmwgICBpbnN0cnVjdGlvbiBzZXQgb2YgJ21pcHNuMzInLgorZG5sICogJ21pcHNuMzInIGFuZCAnbWlwczY0JyBhcmUgZGlmZmVyZW50IGNhbm9uaWNhbCBuYW1lcywgYmVjYXVzZSB0aGV5IHVzZQorZG5sICAgZGlmZmVyZW50IHNpemVzIGZvciB0aGUgQyB0eXBlcyBsaWtlICdpbnQnIGFuZCAndm9pZCAqJywgYW5kIGFsdGhvdWdoCitkbmwgICB0aGUgaW5zdHJ1Y3Rpb24gc2V0cyBvZiAnbWlwc24zMicgYW5kICdtaXBzNjQnIGFyZSB0aGUgc2FtZS4KK2RubCAqIFRoZSBzYW1lIGNhbm9uaWNhbCBuYW1lIGlzIHVzZWQgZm9yIGRpZmZlcmVudCBlbmRpYW5uZXNzZXMuIFlvdSBjYW4KK2RubCAgIGRldGVybWluZSB0aGUgZW5kaWFubmVzcyB0aHJvdWdoIHByZXByb2Nlc3NvciBzeW1ib2xzOgorZG5sICAgLSAnYXJtJzogdGVzdCBfX0FSTUVMX18uCitkbmwgICAtICdtaXBzJywgJ21pcHNuMzInLCAnbWlwczY0JzogdGVzdCBfTUlQU0VCIHZzLiBfTUlQU0VMLgorZG5sICAgLSAncG93ZXJwYzY0JzogdGVzdCBfQklHX0VORElBTiB2cy4gX0xJVFRMRV9FTkRJQU4uCitkbmwgKiBUaGUgc2FtZSBuYW1lICdpMzg2JyBpcyB1c2VkIGZvciBDUFVzIG9mIHR5cGUgaTM4NiwgaTQ4NiwgaTU4NgorZG5sICAgKFBlbnRpdW0pLCBBTUQgSzcsIFBlbnRpdW0gSUksIFBlbnRpdW0gSVYsIGV0Yy4sIGJlY2F1c2UKK2RubCAgIC0gSW5zdHJ1Y3Rpb25zIHRoYXQgZG8gbm90IGV4aXN0IG9uIGFsbCBvZiB0aGVzZSBDUFVzIChjbXB4Y2hnLAorZG5sICAgICBNTVgsIFNTRSwgU1NFMiwgM0ROb3chIGV0Yy4pIGFyZSBub3QgZnJlcXVlbnRseSB1c2VkLiBJZiB5b3VyCitkbmwgICAgIGFzc2VtYmx5IGxhbmd1YWdlIHNvdXJjZSBmaWxlcyB1c2Ugc3VjaCBpbnN0cnVjdGlvbnMsIHlvdSB3aWxsCitkbmwgICAgIG5lZWQgdG8gbWFrZSB0aGUgZGlzdGluY3Rpb24uCitkbmwgICAtIFNwZWVkIG9mIGV4ZWN1dGlvbiBvZiB0aGUgY29tbW9uIGluc3RydWN0aW9uIHNldCBpcyByZWFzb25hYmxlIGFjcm9zcworZG5sICAgICB0aGUgZW50aXJlIGZhbWlseSBvZiBDUFVzLiBJZiB5b3UgaGF2ZSBhc3NlbWJseSBsYW5ndWFnZSBzb3VyY2UgZmlsZXMKK2RubCAgICAgdGhhdCBhcmUgb3B0aW1pemVkIGZvciBwYXJ0aWN1bGFyIENQVSB0eXBlcyAobGlrZSBHTlUgZ21wIGhhcyksIHlvdQorZG5sICAgICB3aWxsIG5lZWQgdG8gbWFrZSB0aGUgZGlzdGluY3Rpb24uCitkbmwgICBTZWUgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Nl9pbnN0cnVjdGlvbl9saXN0aW5ncz4uCitBQ19ERUZVTihbZ2xfSE9TVF9DUFVfQ19BQkldLAorWworICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIEFDX1JFUVVJUkUoW2dsX0NfQVNNXSkKKyAgQUNfQ0FDSEVfQ0hFQ0soW2hvc3QgQ1BVIGFuZCBDIEFCSV0sIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV0sCisgICAgW2Nhc2UgIiRob3N0X2NwdSIgaW4KKworY2hhbmdlcXVvdGUoLClkbmwKKyAgICAgICBpWzQ1NjddODYgKQorY2hhbmdlcXVvdGUoWyxdKWRubAorICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9aTM4NgorICAgICAgICAgOzsKKworICAgICAgIHg4Nl82NCApCisgICAgICAgICAjIE9uIHg4Nl82NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyBjb2RlIGluIG9uZSBvZgorICAgICAgICAgIyB0aGVzZSBBQklzOgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogeDg2XzY0LgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0CisgICAgICAgICAjICAgd2l0aCBuYXRpdmUgV2luZG93cyAobWluZ3csIE1TVkMpLgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0LXgzMi4KKyAgICAgICAgICMgLSAzMi1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGkzODYuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZiAoZGVmaW5lZCBfX3g4Nl82NF9fIHx8IGRlZmluZWQgX19hbWQ2NF9fIFwKKyAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQgX01fWDY0IHx8IGRlZmluZWQgX01fQU1ENjQpCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMgorICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9eDg2XzY0LXgzMl0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT14ODZfNjRdKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1pMzg2XSkKKyAgICAgICAgIDs7CisKK2NoYW5nZXF1b3RlKCwpZG5sCisgICAgICAgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFwY2E1WzY3XSB8IGFscGhhZXY2Wzc4XSApCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT1hbHBoYQorICAgICAgICAgOzsKKworICAgICAgIGFybSogfCBhYXJjaDY0ICkKKyAgICAgICAgICMgQXNzdW1lIGFybSB3aXRoIEVBQkkuCisgICAgICAgICAjIE9uIGFybTY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAjIHRoZXNlIEFCSXM6CisgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogYXJtNjQuCisgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogYXJtNjQtaWxwMzIuCisgICAgICAgICAjIC0gMzItYml0IGluc3RydWN0aW9uIHNldCwgMzItYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiBhcm0gb3IgYXJtaGYuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZmRlZiBfX2FhcmNoNjRfXworICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMgorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWFybTY0LWlscDMyXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWFybTY0XSldLAorICAgICAgICAgICBbIyBEb24ndCBkaXN0aW5ndWlzaCBsaXR0bGUtZW5kaWFuIGFuZCBiaWctZW5kaWFuIGFybSwgc2luY2UgdGhleQorICAgICAgICAgICAgIyBkb24ndCByZXF1aXJlIGRpZmZlcmVudCBtYWNoaW5lIGNvZGUgZm9yIHNpbXBsZSBvcGVyYXRpb25zIGFuZAorICAgICAgICAgICAgIyBzaW5jZSB0aGUgdXNlciBjYW4gZGlzdGluZ3Vpc2ggdGhlbSB0aHJvdWdoIHRoZSBwcmVwcm9jZXNzb3IKKyAgICAgICAgICAgICMgZGVmaW5lcyBfX0FSTUVMX18gdnMuIF9fQVJNRUJfXy4KKyAgICAgICAgICAgICMgQnV0IGRpc3Rpbmd1aXNoIGFybSB3aGljaCBwYXNzZXMgZmxvYXRpbmctcG9pbnQgYXJndW1lbnRzIGFuZAorICAgICAgICAgICAgIyByZXR1cm4gdmFsdWVzIGluIGludGVnZXIgcmVnaXN0ZXJzIChyMCwgcjEsIC4uLikgLSB0aGlzIGlzCisgICAgICAgICAgICAjIGdjYyAtbWZsb2F0LWFiaT1zb2Z0IG9yIGdjYyAtbWZsb2F0LWFiaT1zb2Z0ZnAgLSBmcm9tIGFybSB3aGljaAorICAgICAgICAgICAgIyBwYXNzZXMgdGhlbSBpbiBmbG9hdCByZWdpc3RlcnMgKHMwLCBzMSwgLi4uKSBhbmQgZG91YmxlIHJlZ2lzdGVycworICAgICAgICAgICAgIyAoZDAsIGQxLCAuLi4pIC0gdGhpcyBpcyBnY2MgLW1mbG9hdC1hYmk9aGFyZC4gR0NDIDQuNiBvciBuZXdlcgorICAgICAgICAgICAgIyBzZXRzIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5lcyBfX0FSTV9QQ1MgKGZvciB0aGUgZmlyc3QgY2FzZSkgYW5kCisgICAgICAgICAgICAjIF9fQVJNX1BDU19WRlAgKGZvciB0aGUgc2Vjb25kIGNhc2UpLCBidXQgb2xkZXIgR0NDIGRvZXMgbm90LgorICAgICAgICAgICAgZWNobyAnZG91YmxlIGRkZDsgdm9pZCBmdW5jIChkb3VibGUgZGQpIHsgZGRkID0gZGQ7IH0nID4gY29uZnRlc3QuYworICAgICAgICAgICAgIyBMb29rIGZvciBhIHJlZmVyZW5jZSB0byB0aGUgcmVnaXN0ZXIgZDAgaW4gdGhlIC5zIGZpbGUuCisgICAgICAgICAgICBBQ19UUllfQ09NTUFORCgke0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkZ2xfY19hc21fb3B0IGNvbmZ0ZXN0LmMpID4vZGV2L251bGwgMj4mMQorICAgICAgICAgICAgaWYgTENfQUxMPUMgZ3JlcCAnZDAsJyBjb25mdGVzdC4kZ2xfYXNtZXh0ID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9YXJtaGYKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9YXJtCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgcm0gLWYgY29uZnRlc3QqCisgICAgICAgICAgIF0pCisgICAgICAgICA7OworCisgICAgICAgaHBwYTEuMCB8IGhwcGExLjEgfCBocHBhMi4wKiB8IGhwcGE2NCApCisgICAgICAgICAjIE9uIGhwcGEsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDMyLWJpdCBjb2RlIG9yIDY0LWJpdAorICAgICAgICAgIyBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0xQNjQgYW5kIF9fTFA2NF9fLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWhwcGE2NF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1ocHBhXSkKKyAgICAgICAgIDs7CisKKyAgICAgICBpYTY0KiApCisgICAgICAgICAjIE9uIGlhNjQgb24gSFAtVVgsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlIG9yCisgICAgICAgICAjIDMyLWJpdCBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0lMUDMyLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX0lMUDMyCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1pYTY0LWlscDMyXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWlhNjRdKQorICAgICAgICAgOzsKKworICAgICAgIG1pcHMqICkKKyAgICAgICAgICMgV2Ugc2hvdWxkIGFsc28gY2hlY2sgZm9yIChfTUlQU19TWlBUUiA9PSA2NCksIGJ1dCBnY2Mga2VlcHMgdGhpcworICAgICAgICAgIyBhdCAzMi4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX01JUFNfU1pMT05HICYmIChfTUlQU19TWkxPTkcgPT0gNjQpCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1taXBzNjRdLAorICAgICAgICAgICBbIyBJbiB0aGUgbjMyIEFCSSwgX0FCSU4zMiBpcyBkZWZpbmVkLCBfQUJJTzMyIGlzIG5vdCBkZWZpbmVkIChidXQKKyAgICAgICAgICAgICMgbWF5IGxhdGVyIGdldCBkZWZpbmVkIGJ5IDxzZ2lkZWZzLmg+KSwgYW5kIF9NSVBTX1NJTSA9PSBfQUJJTjMyLgorICAgICAgICAgICAgIyBJbiB0aGUgMzIgQUJJLCBfQUJJTzMyIGlzIGRlZmluZWQsIF9BQklOMzIgaXMgbm90IGRlZmluZWQgKGJ1dAorICAgICAgICAgICAgIyBtYXkgbGF0ZXIgZ2V0IGRlZmluZWQgYnkgPHNnaWRlZnMuaD4pLCBhbmQgX01JUFNfU0lNID09IF9BQklPMzIuCisgICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgICBbWyNpZiAoX01JUFNfU0lNID09IF9BQklOMzIpCisgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1taXBzbjMyXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPW1pcHNdKV0pCisgICAgICAgICA7OworCisgICAgICAgcG93ZXJwYyogKQorICAgICAgICAgIyBEaWZmZXJlbnQgQUJJcyBhcmUgaW4gdXNlIG9uIEFJWCB2cy4gTWFjIE9TIFggdnMuIExpbnV4LCpCU0QuCisgICAgICAgICAjIE5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlbSBoZXJlOyB0aGUgY2FsbGVyIG1heSBkaXN0aW5ndWlzaAorICAgICAgICAgIyB0aGVtIGJhc2VkIG9uIHRoZSBPUy4KKyAgICAgICAgICMgT24gcG93ZXJwYzY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBzdGlsbCBiZSBnZW5lcmF0aW5nCisgICAgICAgICAjIDMyLWJpdCBjb2RlLiBBbmQgb24gcG93ZXJwYy1pYm0tYWl4IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heQorICAgICAgICAgIyBiZSBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Bvd2VycGM2NF9fIHx8IGRlZmluZWQgX0FSQ0hfUFBDNjQKKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgWyMgT24gcG93ZXJwYzY0LCB0aGVyZSBhcmUgdHdvIEFCSXMgb24gTGludXg6IFRoZSBBSVggY29tcGF0aWJsZQorICAgICAgICAgICAgIyBvbmUgYW5kIHRoZSBFTEZ2MiBvbmUuIFRoZSBsYXR0ZXIgZGVmaW5lcyBfQ0FMTF9FTEY9Mi4KKyAgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX0NBTExfRUxGICYmIF9DQUxMX0VMRiA9PSAyCisgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1wb3dlcnBjNjQtZWxmdjJdLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9cG93ZXJwYzY0XSkKKyAgICAgICAgICAgXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPXBvd2VycGNdKQorICAgICAgICAgOzsKKworICAgICAgIHJzNjAwMCApCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT1wb3dlcnBjCisgICAgICAgICA7OworCisgICAgICAgcmlzY3YzMiB8IHJpc2N2NjQgKQorICAgICAgICAgIyBUaGVyZSBhcmUgMiBhcmNoaXRlY3R1cmVzICh3aXRoIHZhcmlhbnRzKTogcnYzMiogYW5kIHJ2NjQqLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgX19yaXNjdl94bGVuID09IDY0CisgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2NwdT1yaXNjdjY0XSwKKyAgICAgICAgICAgW2NwdT1yaXNjdjMyXSkKKyAgICAgICAgICMgVGhlcmUgYXJlIDYgQUJJczogaWxwMzIsIGlscDMyZiwgaWxwMzJkLCBscDY0LCBscDY0ZiwgbHA2NGQuCisgICAgICAgICAjIFNpemUgb2YgJ2xvbmcnIGFuZCAndm9pZCAqJzoKKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbbWFpbl9hYmk9bHA2NF0sCisgICAgICAgICAgIFttYWluX2FiaT1pbHAzMl0pCisgICAgICAgICAjIEZsb2F0IEFCSXM6CisgICAgICAgICAjIF9fcmlzY3ZfZmxvYXRfYWJpX2RvdWJsZToKKyAgICAgICAgICMgICAnZmxvYXQnIGFuZCAnZG91YmxlJyBhcmUgcGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KKyAgICAgICAgICMgX19yaXNjdl9mbG9hdF9hYmlfc2luZ2xlOgorICAgICAgICAgIyAgICdmbG9hdCcgYXJlIHBhc3NlZCBpbiBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCisgICAgICAgICAjIF9fcmlzY3ZfZmxvYXRfYWJpX3NvZnQ6CisgICAgICAgICAjICAgTm8gdmFsdWVzIGFyZSBwYXNzZWQgaW4gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Jpc2N2X2Zsb2F0X2FiaV9kb3VibGUKKyAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZmxvYXRfYWJpPWRdLAorICAgICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Jpc2N2X2Zsb2F0X2FiaV9zaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZmxvYXRfYWJpPWZdLAorICAgICAgICAgICAgICBbZmxvYXRfYWJpPScnXSkKKyAgICAgICAgICAgXSkKKyAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPSIke2NwdX0tJHttYWluX2FiaX0ke2Zsb2F0X2FiaX0iCisgICAgICAgICA7OworCisgICAgICAgczM5MCogKQorICAgICAgICAgIyBPbiBzMzkweCwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgNjQtYml0ICg9IHMzOTB4KSBjb2RlCisgICAgICAgICAjIG9yIDMxLWJpdCAoPSBzMzkwKSBjb2RlLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0xQNjRfXyB8fCBkZWZpbmVkIF9fczM5MHhfXworICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zMzkweF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zMzkwXSkKKyAgICAgICAgIDs7CisKKyAgICAgICBzcGFyYyB8IHNwYXJjNjQgKQorICAgICAgICAgIyBVbHRyYVNQQVJDcyBydW5uaW5nIExpbnV4IGhhdmUgYHVuYW1lIC1tYCA9ICJzcGFyYzY0IiwgYnV0IHRoZQorICAgICAgICAgIyBDIGNvbXBpbGVyIHN0aWxsIGdlbmVyYXRlcyAzMi1iaXQgY29kZS4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19zcGFyY3Y5IHx8IGRlZmluZWQgX19hcmNoNjRfXworICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9c3BhcmM2NF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zcGFyY10pCisgICAgICAgICA7OworCisgICAgICAgKikKKyAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPSIkaG9zdF9jcHUiCisgICAgICAgICA7OworICAgICBlc2FjCisgICAgXSkKKworICBkbmwgSW4gbW9zdCBjYXNlcywgJEhPU1RfQ1BVIGFuZCAkSE9TVF9DUFVfQ19BQkkgYXJlIHRoZSBzYW1lLgorICBIT1NUX0NQVT1gZWNobyAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIiB8IHNlZCAtZSAncy8tLiovLydgCisgIEhPU1RfQ1BVX0NfQUJJPSIkZ2xfY3ZfaG9zdF9jcHVfY19hYmkiCisgIEFDX1NVQlNUKFtIT1NUX0NQVV0pCisgIEFDX1NVQlNUKFtIT1NUX0NQVV9DX0FCSV0pCisKKyAgIyBUaGlzIHdhcworICAjICAgQUNfREVGSU5FX1VOUVVPVEVEKFtfXyR7SE9TVF9DUFV9X19dKQorICAjICAgQUNfREVGSU5FX1VOUVVPVEVEKFtfXyR7SE9TVF9DUFVfQ19BQkl9X19dKQorICAjIGVhcmxpZXIsIGJ1dCBLQUkgQysrIDMuMmQgZG9lc24ndCBsaWtlIHRoaXMuCisgIHNlZCAtZSAncy8tL18vZycgPj4gY29uZmRlZnMuaCA8PEVPRgorI2lmbmRlZiBfXyR7SE9TVF9DUFV9X18KKyNkZWZpbmUgX18ke0hPU1RfQ1BVfV9fIDEKKyNlbmRpZgorI2lmbmRlZiBfXyR7SE9TVF9DUFVfQ19BQkl9X18KKyNkZWZpbmUgX18ke0hPU1RfQ1BVX0NfQUJJfV9fIDEKKyNlbmRpZgorRU9GCisgIEFIX1RPUChbLyogQ1BVIGFuZCBDIEFCSSBpbmRpY2F0b3IgKi8KKyNpZm5kZWYgX19pMzg2X18KKyN1bmRlZiBfX2kzODZfXworI2VuZGlmCisjaWZuZGVmIF9feDg2XzY0X3gzMl9fCisjdW5kZWYgX194ODZfNjRfeDMyX18KKyNlbmRpZgorI2lmbmRlZiBfX3g4Nl82NF9fCisjdW5kZWYgX194ODZfNjRfXworI2VuZGlmCisjaWZuZGVmIF9fYWxwaGFfXworI3VuZGVmIF9fYWxwaGFfXworI2VuZGlmCisjaWZuZGVmIF9fYXJtX18KKyN1bmRlZiBfX2FybV9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm1oZl9fCisjdW5kZWYgX19hcm1oZl9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm02NF9pbHAzMl9fCisjdW5kZWYgX19hcm02NF9pbHAzMl9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm02NF9fCisjdW5kZWYgX19hcm02NF9fCisjZW5kaWYKKyNpZm5kZWYgX19ocHBhX18KKyN1bmRlZiBfX2hwcGFfXworI2VuZGlmCisjaWZuZGVmIF9faHBwYTY0X18KKyN1bmRlZiBfX2hwcGE2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19pYTY0X2lscDMyX18KKyN1bmRlZiBfX2lhNjRfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9faWE2NF9fCisjdW5kZWYgX19pYTY0X18KKyNlbmRpZgorI2lmbmRlZiBfX202OGtfXworI3VuZGVmIF9fbTY4a19fCisjZW5kaWYKKyNpZm5kZWYgX19taXBzX18KKyN1bmRlZiBfX21pcHNfXworI2VuZGlmCisjaWZuZGVmIF9fbWlwc24zMl9fCisjdW5kZWYgX19taXBzbjMyX18KKyNlbmRpZgorI2lmbmRlZiBfX21pcHM2NF9fCisjdW5kZWYgX19taXBzNjRfXworI2VuZGlmCisjaWZuZGVmIF9fcG93ZXJwY19fCisjdW5kZWYgX19wb3dlcnBjX18KKyNlbmRpZgorI2lmbmRlZiBfX3Bvd2VycGM2NF9fCisjdW5kZWYgX19wb3dlcnBjNjRfXworI2VuZGlmCisjaWZuZGVmIF9fcG93ZXJwYzY0X2VsZnYyX18KKyN1bmRlZiBfX3Bvd2VycGM2NF9lbGZ2Ml9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX18KKyN1bmRlZiBfX3Jpc2N2MzJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9fCisjdW5kZWYgX19yaXNjdjY0X18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2MzJfaWxwMzJfXworI3VuZGVmIF9fcmlzY3YzMl9pbHAzMl9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX2lscDMyZl9fCisjdW5kZWYgX19yaXNjdjMyX2lscDMyZl9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX2lscDMyZF9fCisjdW5kZWYgX19yaXNjdjMyX2lscDMyZF9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjY0X2lscDMyX18KKyN1bmRlZiBfX3Jpc2N2NjRfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9pbHAzMmZfXworI3VuZGVmIF9fcmlzY3Y2NF9pbHAzMmZfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9pbHAzMmRfXworI3VuZGVmIF9fcmlzY3Y2NF9pbHAzMmRfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9scDY0X18KKyN1bmRlZiBfX3Jpc2N2NjRfbHA2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjY0X2xwNjRmX18KKyN1bmRlZiBfX3Jpc2N2NjRfbHA2NGZfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9scDY0ZF9fCisjdW5kZWYgX19yaXNjdjY0X2xwNjRkX18KKyNlbmRpZgorI2lmbmRlZiBfX3MzOTBfXworI3VuZGVmIF9fczM5MF9fCisjZW5kaWYKKyNpZm5kZWYgX19zMzkweF9fCisjdW5kZWYgX19zMzkweF9fCisjZW5kaWYKKyNpZm5kZWYgX19zaF9fCisjdW5kZWYgX19zaF9fCisjZW5kaWYKKyNpZm5kZWYgX19zcGFyY19fCisjdW5kZWYgX19zcGFyY19fCisjZW5kaWYKKyNpZm5kZWYgX19zcGFyYzY0X18KKyN1bmRlZiBfX3NwYXJjNjRfXworI2VuZGlmCitdKQorCitdKQorCisKK2RubCBTZXRzIHRoZSBIT1NUX0NQVV9DX0FCSV8zMkJJVCB2YXJpYWJsZSB0byAneWVzJyBpZiB0aGUgQyBsYW5ndWFnZSBBQkkKK2RubCAoYXBwbGljYXRpb24gYmluYXJ5IGludGVyZmFjZSkgaXMgYSAzMi1iaXQgb25lLCBvciB0byAnbm8nIG90aGVyd2lzZS4KK2RubCBUaGlzIGlzIGEgc2ltcGxpZmllZCB2YXJpYW50IG9mIGdsX0hPU1RfQ1BVX0NfQUJJLgorQUNfREVGVU4oW2dsX0hPU1RfQ1BVX0NfQUJJXzMyQklUXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorICBBQ19DQUNIRV9DSEVDSyhbMzItYml0IGhvc3QgQyBBQkldLCBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXRdLAorICAgIFtpZiB0ZXN0IC1uICIkZ2xfY3ZfaG9zdF9jcHVfY19hYmkiOyB0aGVuCisgICAgICAgY2FzZSAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIiBpbgorICAgICAgICAgaTM4NiB8IHg4Nl82NC14MzIgfCBhcm0gfCBhcm1oZiB8IGFybTY0LWlscDMyIHwgaHBwYSB8IGlhNjQtaWxwMzIgfCBtaXBzIHwgbWlwc24zMiB8IHBvd2VycGMgfCByaXNjdiotaWxwMzIqIHwgczM5MCB8IHNwYXJjKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXMgOzsKKyAgICAgICAgICopCisgICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vIDs7CisgICAgICAgZXNhYworICAgICBlbHNlCisgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorCitjaGFuZ2VxdW90ZSgsKWRubAorICAgICAgICAgaVs0NTY3XTg2ICkKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIHg4Nl82NCApCisgICAgICAgICAgICMgT24geDg2XzY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAgICMgdGhlc2UgQUJJczoKKyAgICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogeDg2XzY0LgorICAgICAgICAgICAjIC0gNjQtYml0IGluc3RydWN0aW9uIHNldCwgNjQtYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiB4ODZfNjQKKyAgICAgICAgICAgIyAgIHdpdGggbmF0aXZlIFdpbmRvd3MgKG1pbmd3LCBNU1ZDKS4KKyAgICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0LXgzMi4KKyAgICAgICAgICAgIyAtIDMyLWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogaTM4Ni4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIChkZWZpbmVkIF9feDg2XzY0X18gfHwgZGVmaW5lZCBfX2FtZDY0X18gXAorICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkIF9NX1g2NCB8fCBkZWZpbmVkIF9NX0FNRDY0KSBcCisgICAgICAgICAgICAgICAgICAgICAgJiYgIShkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMikKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgYXJtKiB8IGFhcmNoNjQgKQorICAgICAgICAgICAjIEFzc3VtZSBhcm0gd2l0aCBFQUJJLgorICAgICAgICAgICAjIE9uIGFybTY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAgICMgdGhlc2UgQUJJczoKKyAgICAgICAgICAgIyAtIGFhcmNoNjQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDY0LWJpdCAnbG9uZyc6IGFybTY0LgorICAgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogYXJtNjQtaWxwMzIuCisgICAgICAgICAgICMgLSAzMi1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGFybSBvciBhcm1oZi4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19hYXJjaDY0X18gJiYgIShkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMikKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgaHBwYTEuMCB8IGhwcGExLjEgfCBocHBhMi4wKiB8IGhwcGE2NCApCisgICAgICAgICAgICMgT24gaHBwYSwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgMzItYml0IGNvZGUgb3IgNjQtYml0CisgICAgICAgICAgICMgY29kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBkZWZpbmVzIF9MUDY0IGFuZCBfX0xQNjRfXy4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmZGVmIF9fTFA2NF9fCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIGlhNjQqICkKKyAgICAgICAgICAgIyBPbiBpYTY0IG9uIEhQLVVYLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyA2NC1iaXQgY29kZSBvcgorICAgICAgICAgICAjIDMyLWJpdCBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0lMUDMyLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWZkZWYgX0lMUDMyCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIG1pcHMqICkKKyAgICAgICAgICAgIyBXZSBzaG91bGQgYWxzbyBjaGVjayBmb3IgKF9NSVBTX1NaUFRSID09IDY0KSwgYnV0IGdjYyBrZWVwcyB0aGlzCisgICAgICAgICAgICMgYXQgMzIuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9NSVBTX1NaTE9ORyAmJiAoX01JUFNfU1pMT05HID09IDY0KQorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBwb3dlcnBjKiApCisgICAgICAgICAgICMgRGlmZmVyZW50IEFCSXMgYXJlIGluIHVzZSBvbiBBSVggdnMuIE1hYyBPUyBYIHZzLiBMaW51eCwqQlNELgorICAgICAgICAgICAjIE5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlbSBoZXJlOyB0aGUgY2FsbGVyIG1heSBkaXN0aW5ndWlzaAorICAgICAgICAgICAjIHRoZW0gYmFzZWQgb24gdGhlIE9TLgorICAgICAgICAgICAjIE9uIHBvd2VycGM2NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgc3RpbGwgYmUgZ2VuZXJhdGluZworICAgICAgICAgICAjIDMyLWJpdCBjb2RlLiBBbmQgb24gcG93ZXJwYy1pYm0tYWl4IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heQorICAgICAgICAgICAjIGJlIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fcG93ZXJwYzY0X18gfHwgZGVmaW5lZCBfQVJDSF9QUEM2NAorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICByczYwMDAgKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXMKKyAgICAgICAgICAgOzsKKworICAgICAgICAgcmlzY3YzMiB8IHJpc2N2NjQgKQorICAgICAgICAgICAjIFRoZXJlIGFyZSA2IEFCSXM6IGlscDMyLCBpbHAzMmYsIGlscDMyZCwgbHA2NCwgbHA2NGYsIGxwNjRkLgorICAgICAgICAgICAjIFNpemUgb2YgJ2xvbmcnIGFuZCAndm9pZCAqJzoKKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBzMzkwKiApCisgICAgICAgICAgICMgT24gczM5MHgsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDY0LWJpdCAoPSBzMzkweCkgY29kZQorICAgICAgICAgICAjIG9yIDMxLWJpdCAoPSBzMzkwKSBjb2RlLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0xQNjRfXyB8fCBkZWZpbmVkIF9fczM5MHhfXworICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIHNwYXJjIHwgc3BhcmM2NCApCisgICAgICAgICAgICMgVWx0cmFTUEFSQ3MgcnVubmluZyBMaW51eCBoYXZlIGB1bmFtZSAtbWAgPSAic3BhcmM2NCIsIGJ1dCB0aGUKKyAgICAgICAgICAgIyBDIGNvbXBpbGVyIHN0aWxsIGdlbmVyYXRlcyAzMi1iaXQgY29kZS4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19zcGFyY3Y5IHx8IGRlZmluZWQgX19hcmNoNjRfXworICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICAqKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ubworICAgICAgICAgICA7OworICAgICAgIGVzYWMKKyAgICAgZmkKKyAgICBdKQorCisgIEhPU1RfQ1BVX0NfQUJJXzMyQklUPSIkZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQiCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pY29udi5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaWNvbnYubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4NWU5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaWNvbnYubTQKQEAgLTAsMCArMSwyODggQEAKKyMgaWNvbnYubTQgc2VyaWFsIDIxCitkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIsIDIwMDctMjAxNCwgMjAxNi0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKK2RubCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitBQ19ERUZVTihbQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFldLAorWworICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisKKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKKyAgZG5sIGFjY29yZGluZ2x5LgorICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ljb252XSkKK10pCisKK0FDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKK1sKKyAgZG5sIFNvbWUgc3lzdGVtcyBoYXZlIGljb252IGluIGxpYmMsIHNvbWUgaGF2ZSBpdCBpbiBsaWJpY29udiAoT1NGLzEgYW5kCisgIGRubCB0aG9zZSB3aXRoIHRoZSBzdGFuZGFsb25lIHBvcnRhYmxlIEdOVSBsaWJpY29udiBpbnN0YWxsZWQpLgorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGlsZXMKKworICBkbmwgU2VhcmNoIGZvciBsaWJpY29udiBhbmQgZGVmaW5lIExJQklDT05WLCBMVExJQklDT05WIGFuZCBJTkNJQ09OVgorICBkbmwgYWNjb3JkaW5nbHkuCisgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKKworICBkbmwgQWRkICRJTkNJQ09OViB0byBDUFBGTEFHUyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZm9sbG93aW5nIGNoZWNrcywKKyAgZG5sIGJlY2F1c2UgaWYgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBsaWJpY29udiBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliaWNvbnYtcHJlZml4LCBoZSB3YW50cyB0byB1c2UgaXQuIFRoZSBmaXJzdAorICBkbmwgQUNfTElOS19JRkVMU0Ugd2lsbCB0aGVuIGZhaWwsIHRoZSBzZWNvbmQgQUNfTElOS19JRkVMU0Ugd2lsbCBzdWNjZWVkLgorICBhbV9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lDT05WXSkKKworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGljb252XSwgW2FtX2N2X2Z1bmNfaWNvbnZdLCBbCisgICAgYW1fY3ZfZnVuY19pY29udj0ibm8sIGNvbnNpZGVyIGluc3RhbGxpbmcgR05VIGxpYmljb252IgorICAgIGFtX2N2X2xpYl9pY29udj1ubworICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgIFtbCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8aWNvbnYuaD4KKyAgICAgICAgIF1dLAorICAgICAgICAgW1tpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7CisgICAgICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOworICAgICAgICAgICBpY29udl9jbG9zZShjZCk7XV0pXSwKKyAgICAgIFthbV9jdl9mdW5jX2ljb252PXllc10pCisgICAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiICE9IHllczsgdGhlbgorICAgICAgYW1fc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICBbWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGljb252Lmg+CisgICAgICAgICAgIF1dLAorICAgICAgICAgICBbW2ljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKKyAgICAgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKKyAgICAgICAgICAgICBpY29udl9jbG9zZShjZCk7XV0pXSwKKyAgICAgICAgW2FtX2N2X2xpYl9pY29udj15ZXNdCisgICAgICAgIFthbV9jdl9mdW5jX2ljb252PXllc10pCisgICAgICBMSUJTPSIkYW1fc2F2ZV9MSUJTIgorICAgIGZpCisgIF0pCisgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd29ya2luZyBpY29udl0sIFthbV9jdl9mdW5jX2ljb252X3dvcmtzXSwgWworICAgICAgZG5sIFRoaXMgdGVzdHMgYWdhaW5zdCBidWdzIGluIEFJWCA1LjEsIEFJWCA2LjEuLjcuMSwgSFAtVVggMTEuMTEsCisgICAgICBkbmwgU29sYXJpcyAxMC4KKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCisgICAgICBpZiB0ZXN0ICRhbV9jdl9saWJfaWNvbnYgPSB5ZXM7IHRoZW4KKyAgICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgorICAgICAgZmkKKyAgICAgIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9bm8KKyAgICAgIGZvciBhY19pY29udl9jb25zdCBpbiAnJyAnY29uc3QnOyBkbworICAgICAgICBBQ19SVU5fSUZFTFNFKAorICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxpY29udi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWZuZGVmIElDT05WX0NPTlNUCisjIGRlZmluZSBJQ09OVl9DT05TVCAkYWNfaWNvbnZfY29uc3QKKyNlbmRpZgorICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgIFtbaW50IHJlc3VsdCA9IDA7CisgIC8qIFRlc3QgYWdhaW5zdCBBSVggNS4xIGJ1ZzogRmFpbHVyZXMgYXJlIG5vdCBkaXN0aW5ndWlzaGFibGUgZnJvbSBzdWNjZXNzZnVsCisgICAgIHJldHVybnMuICAqLworICB7CisgICAgaWNvbnZfdCBjZF91dGY4X3RvXzg4NTkxID0gaWNvbnZfb3BlbiAoIklTTzg4NTktMSIsICJVVEYtOCIpOworICAgIGlmIChjZF91dGY4X3RvXzg4NTkxICE9IChpY29udl90KSgtMSkpCisgICAgICB7CisgICAgICAgIHN0YXRpYyBJQ09OVl9DT05TVCBjaGFyIGlucHV0W10gPSAiXDM0MlwyMDJcMjU0IjsgLyogRVVSTyBTSUdOICovCisgICAgICAgIGNoYXIgYnVmWzEwXTsKKyAgICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gc3RybGVuIChpbnB1dCk7CisgICAgICAgIGNoYXIgKm91dHB0ciA9IGJ1ZjsKKyAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF91dGY4X3RvXzg4NTkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzID09IDApCisgICAgICAgICAgcmVzdWx0IHw9IDE7CisgICAgICAgIGljb252X2Nsb3NlIChjZF91dGY4X3RvXzg4NTkxKTsKKyAgICAgIH0KKyAgfQorICAvKiBUZXN0IGFnYWluc3QgU29sYXJpcyAxMCBidWc6IEZhaWx1cmVzIGFyZSBub3QgZGlzdGluZ3Vpc2hhYmxlIGZyb20KKyAgICAgc3VjY2Vzc2Z1bCByZXR1cm5zLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfYXNjaWlfdG9fODg1OTEgPSBpY29udl9vcGVuICgiSVNPODg1OS0xIiwgIjY0NiIpOworICAgIGlmIChjZF9hc2NpaV90b184ODU5MSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwyNjMiOworICAgICAgICBjaGFyIGJ1ZlsxMF07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfYXNjaWlfdG9fODg1OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHRyLCAmaW5ieXRlc2xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB0ciwgJm91dGJ5dGVzbGVmdCk7CisgICAgICAgIGlmIChyZXMgPT0gMCkKKyAgICAgICAgICByZXN1bHQgfD0gMjsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkX2FzY2lpX3RvXzg4NTkxKTsKKyAgICAgIH0KKyAgfQorICAvKiBUZXN0IGFnYWluc3QgQUlYIDYuMS4uNy4xIGJ1ZzogQnVmZmVyIG92ZXJydW4uICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIklTTy04ODU5LTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwzMDQiOworICAgICAgICBzdGF0aWMgY2hhciBidWZbMl0gPSB7IChjaGFyKTB4REUsIChjaGFyKTB4QUQgfTsKKyAgICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF84ODU5MV90b191dGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzICE9IChzaXplX3QpKC0xKSB8fCBvdXRwdHIgLSBidWYgPiAxIHx8IGJ1ZlsxXSAhPSAoY2hhcikweEFEKQorICAgICAgICAgIHJlc3VsdCB8PSA0OworICAgICAgICBpY29udl9jbG9zZSAoY2RfODg1OTFfdG9fdXRmOCk7CisgICAgICB9CisgIH0KKyNpZiAwIC8qIFRoaXMgYnVnIGNvdWxkIGJlIHdvcmtlZCBhcm91bmQgYnkgdGhlIGNhbGxlci4gICovCisgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IFBvc2l0aXZlIHJldHVybiB2YWx1ZSBpbnN0ZWFkIG9mIDAuICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiaXNvODg1OTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwzMDRyZ2VyIG1pdCBiXDM2NnNlbiBCXDM3NGJjaGVuIG9obmUgQXVnZW5tYVwzMzciOworICAgICAgICBjaGFyIGJ1Zls1MF07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfODg1OTFfdG9fdXRmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKChpbnQpcmVzID4gMCkKKyAgICAgICAgICByZXN1bHQgfD0gODsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkXzg4NTkxX3RvX3V0ZjgpOworICAgICAgfQorICB9CisjZW5kaWYKKyAgLyogVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzogTm8gY29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzCisgICAgIHByb3ZpZGVkLiAgKi8KKyAgeworICAgIC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLworICAgIGljb252X3QgY2QxID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIkVVQy1KUCIpOworICAgIC8qIFRyeSBJUklYLCBPU0YvMSBuYW1lcy4gICovCisgICAgaWNvbnZfdCBjZDIgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiZXVjSlAiKTsKKyAgICAvKiBUcnkgQUlYIG5hbWVzLiAgKi8KKyAgICBpY29udl90IGNkMyA9IGljb252X29wZW4gKCJVVEYtOCIsICJJQk0tZXVjSlAiKTsKKyAgICAvKiBUcnkgSFAtVVggbmFtZXMuICAqLworICAgIGljb252X3QgY2Q0ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKTsKKyAgICBpZiAoY2QxID09IChpY29udl90KSgtMSkgJiYgY2QyID09IChpY29udl90KSgtMSkKKyAgICAgICAgJiYgY2QzID09IChpY29udl90KSgtMSkgJiYgY2Q0ID09IChpY29udl90KSgtMSkpCisgICAgICByZXN1bHQgfD0gMTY7CisgICAgaWYgKGNkMSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMSk7CisgICAgaWYgKGNkMiAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMik7CisgICAgaWYgKGNkMyAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMyk7CisgICAgaWYgKGNkNCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkNCk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK11dKV0sCisgICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwgLAorICAgICAgICAgIFtjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgICBhaXgqIHwgaHB1eCopIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgICAgICAgICopICAgICAgICAgICAgYW1fY3ZfZnVuY19pY29udl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICBlc2FjXSkKKyAgICAgICAgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnZfd29ya3MiID0gbm8gfHwgYnJlYWsKKyAgICAgIGRvbmUKKyAgICAgIExJQlM9IiRhbV9zYXZlX0xJQlMiCisgICAgXSkKKyAgICBjYXNlICIkYW1fY3ZfZnVuY19pY29udl93b3JrcyIgaW4KKyAgICAgICpubykgYW1fZnVuY19pY29udj1ubyBhbV9jdl9saWJfaWNvbnY9bm8gOzsKKyAgICAgICopICAgYW1fZnVuY19pY29udj15ZXMgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBhbV9mdW5jX2ljb252PW5vIGFtX2N2X2xpYl9pY29udj1ubworICBmaQorICBpZiB0ZXN0ICIkYW1fZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfSUNPTlZdLCBbMV0sCisgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpY29udigpIGZ1bmN0aW9uIGFuZCBpdCB3b3Jrcy5dKQorICBmaQorICBpZiB0ZXN0ICIkYW1fY3ZfbGliX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpY29udl0pCisgICAgQUNfTVNHX1JFU1VMVChbJExJQklDT05WXSkKKyAgZWxzZQorICAgIGRubCBJZiAkTElCSUNPTlYgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZCAkSU5DSUNPTlYKKyAgICBkbmwgZWl0aGVyLgorICAgIENQUEZMQUdTPSIkYW1fc2F2ZV9DUFBGTEFHUyIKKyAgICBMSUJJQ09OVj0KKyAgICBMVExJQklDT05WPQorICBmaQorICBBQ19TVUJTVChbTElCSUNPTlZdKQorICBBQ19TVUJTVChbTFRMSUJJQ09OVl0pCitdKQorCitkbmwgRGVmaW5lIEFNX0lDT05WIHVzaW5nIEFDX0RFRlVOX09OQ0UgZm9yIEF1dG9jb25mID49IDIuNjQsIGluIG9yZGVyIHRvCitkbmwgYXZvaWQgd2FybmluZ3MgbGlrZQorZG5sICJ3YXJuaW5nOiBBQ19SRVFVSVJFOiBgQU1fSUNPTlYnIHdhcyBleHBhbmRlZCBiZWZvcmUgaXQgd2FzIHJlcXVpcmVkIi4KK2RubCBUaGlzIGlzIHRyaWNreSBiZWNhdXNlIG9mIHRoZSB3YXkgJ2FjbG9jYWwnIGlzIGltcGxlbWVudGVkOgorZG5sIC0gSXQgcmVxdWlyZXMgZGVmaW5pbmcgYW4gYXV4aWxpYXJ5IG1hY3JvIHdob3NlIG5hbWUgZW5kcyBpbiBBQ19ERUZVTi4KK2RubCAgIE90aGVyd2lzZSBhY2xvY2FsJ3MgaW5pdGlhbCBzY2FuIHBhc3Mgd291bGQgbWlzcyB0aGUgbWFjcm8gZGVmaW5pdGlvbi4KK2RubCAtIEl0IHJlcXVpcmVzIGEgbGluZSBicmVhayBpbnNpZGUgdGhlIEFDX0RFRlVOX09OQ0UgYW5kIEFDX0RFRlVOIGV4cGFuc2lvbnMuCitkbmwgICBPdGhlcndpc2UgYWNsb2NhbCB3b3VsZCBlbWl0IG1hbnkgIlVzZSBvZiB1bmluaXRpYWxpemVkIHZhbHVlICQxIgorZG5sICAgd2FybmluZ3MuCittNF9kZWZpbmUoW2dsX2ljb252X0FDX0RFRlVOXSwKKyAgbTRfdmVyc2lvbl9wcmVyZXEoWzIuNjRdLAorICAgIFtbQUNfREVGVU5fT05DRSgKKyAgICAgICAgWyQxXSwgWyQyXSldXSwKKyAgICBbbTRfaWZkZWYoW2dsXzAwR05VTElCXSwKKyAgICAgICBbW0FDX0RFRlVOX09OQ0UoCisgICAgICAgICAgIFskMV0sIFskMl0pXV0sCisgICAgICAgW1tBQ19ERUZVTigKKyAgICAgICAgICAgWyQxXSwgWyQyXSldXSldKSkKK2dsX2ljb252X0FDX0RFRlVOKFtBTV9JQ09OVl0sCitbCisgIEFNX0lDT05WX0xJTksKKyAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgaWNvbnYgZGVjbGFyYXRpb25dKQorICAgIEFDX0NBQ0hFX1ZBTChbYW1fY3ZfcHJvdG9faWNvbnZdLCBbCisgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpY29udi5oPgorZXh0ZXJuCisjaWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCisjaWYgZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX2NwbHVzcGx1cykKK3NpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKKyNlbHNlCitzaXplX3QgaWNvbnYoKTsKKyNlbmRpZgorICAgICAgICAgICBdXSwKKyAgICAgICAgICAgW1tdXSldLAorICAgICAgICBbYW1fY3ZfcHJvdG9faWNvbnZfYXJnMT0iIl0sCisgICAgICAgIFthbV9jdl9wcm90b19pY29udl9hcmcxPSJjb25zdCJdKQorICAgICAgYW1fY3ZfcHJvdG9faWNvbnY9ImV4dGVybiBzaXplX3QgaWNvbnYgKGljb252X3QgY2QsICRhbV9jdl9wcm90b19pY29udl9hcmcxIGNoYXIgKiAqaW5idWYsIHNpemVfdCAqaW5ieXRlc2xlZnQsIGNoYXIgKiAqb3V0YnVmLCBzaXplX3QgKm91dGJ5dGVzbGVmdCk7Il0pCisgICAgYW1fY3ZfcHJvdG9faWNvbnY9YGVjaG8gIlskXWFtX2N2X3Byb3RvX2ljb252IiB8IHRyIC1zICcgJyB8IHNlZCAtZSAncy8oIC8oLydgCisgICAgQUNfTVNHX1JFU1VMVChbCisgICAgICAgICAkYW1fY3ZfcHJvdG9faWNvbnZdKQorICBlbHNlCisgICAgZG5sIFdoZW4gY29tcGlsaW5nIEdOVSBsaWJpY29udiBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IGhhdmUgaWNvbnYgeWV0LAorICAgIGRubCBwaWNrIHRoZSBQT1NJWCBjb21wbGlhbnQgZGVjbGFyYXRpb24gd2l0aG91dCAnY29uc3QnLgorICAgIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9IiIKKyAgZmkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtJQ09OVl9DT05TVF0sIFskYW1fY3ZfcHJvdG9faWNvbnZfYXJnMV0sCisgICAgW0RlZmluZSBhcyBjb25zdCBpZiB0aGUgZGVjbGFyYXRpb24gb2YgaWNvbnYoKSBuZWVkcyBjb25zdC5dKQorICBkbmwgQWxzbyBzdWJzdGl0dXRlIElDT05WX0NPTlNUIGluIHRoZSBnbnVsaWIgZ2VuZXJhdGVkIDxpY29udi5oPi4KKyAgbTRfaWZkZWYoW2dsX0lDT05WX0hfREVGQVVMVFNdLAorICAgIFtBQ19SRVFVSVJFKFtnbF9JQ09OVl9IX0RFRkFVTFRTXSkKKyAgICAgaWYgdGVzdCAtbiAiJGFtX2N2X3Byb3RvX2ljb252X2FyZzEiOyB0aGVuCisgICAgICAgSUNPTlZfQ09OU1Q9ImNvbnN0IgorICAgICBmaQorICAgIF0pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pbnRsbWFjb3N4Lm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pbnRsbWFjb3N4Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZTZmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2ludGxtYWNvc3gubTQKQEAgLTAsMCArMSw3MiBAQAorIyBpbnRsbWFjb3N4Lm00IHNlcmlhbCA2IChnZXR0ZXh0LTAuMjApCitkbmwgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTQsIDIwMTYsIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQ2hlY2tzIGZvciBzcGVjaWFsIG9wdGlvbnMgbmVlZGVkIG9uIE1hYyBPUyBYLgorZG5sIERlZmluZXMgSU5UTF9NQUNPU1hfTElCUy4KK0FDX0RFRlVOKFtndF9JTlRMX01BQ09TWF0sCitbCisgIGRubCBDaGVjayBmb3IgQVBJIGludHJvZHVjZWQgaW4gTWFjIE9TIFggMTAuNC4KKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlXSwKKyAgICBbZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlXSwKKyAgICBbZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgTElCUz0iJExJQlMgLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUHJlZmVyZW5jZXMuaD5dXSwKKyAgICAgICAgICBbW0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoTlVMTCwgTlVMTCldXSldLAorICAgICAgIFtndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9eWVzXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlPW5vXSkKKyAgICAgTElCUz0iJGd0X3NhdmVfTElCUyJdKQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfQ0ZQUkVGRVJFTkNFU0NPUFlBUFBWQUxVRV0sIFsxXSwKKyAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgTWFjIE9TIFggZnVuY3Rpb24gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSBpbiB0aGUgQ29yZUZvdW5kYXRpb24gZnJhbWV3b3JrLl0pCisgIGZpCisgIGRubCBDaGVjayBmb3IgQVBJIGludHJvZHVjZWQgaW4gTWFjIE9TIFggMTAuNS4KKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRkxvY2FsZUNvcHlDdXJyZW50XSwgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudF0sCisgICAgW2d0X3NhdmVfTElCUz0iJExJQlMiCisgICAgIExJQlM9IiRMSUJTIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKyAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICBbWyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkxvY2FsZS5oPl1dLAorICAgICAgICAgIFtbQ0ZMb2NhbGVDb3B5Q3VycmVudCgpO11dKV0sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudD15ZXNdLAorICAgICAgIFtndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQ9bm9dKQorICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIl0pCisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudCA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShbSEFWRV9DRkxPQ0FMRUNPUFlDVVJSRU5UXSwgWzFdLAorICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNYWMgT1MgWCBmdW5jdGlvbiBDRkxvY2FsZUNvcHlDdXJyZW50IGluIHRoZSBDb3JlRm91bmRhdGlvbiBmcmFtZXdvcmsuXSkKKyAgZmkKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXNdLCBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXNdLAorICAgIFtndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaD5dXSwKKyAgICAgICAgICBbW0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpO11dKV0sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzPXllc10sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzPW5vXSkKKyAgICAgTElCUz0iJGd0X3NhdmVfTElCUyJdKQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcyA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShbSEFWRV9DRkxPQ0FMRUNPUFlQUkVGRVJSRURMQU5HVUFHRVNdLCBbMV0sCisgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE1hYyBPUyBYIGZ1bmN0aW9uIENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcyBpbiB0aGUgQ29yZUZvdW5kYXRpb24gZnJhbWV3b3JrLl0pCisgIGZpCisgIElOVExfTUFDT1NYX0xJQlM9CisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSA9IHllcyBcCisgICAgIHx8IHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudCA9IHllcyBcCisgICAgIHx8IHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzID0geWVzOyB0aGVuCisgICAgSU5UTF9NQUNPU1hfTElCUz0iLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICBmaQorICBBQ19TVUJTVChbSU5UTF9NQUNPU1hfTElCU10pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGQubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1sZC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTg3MTk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGQubTQKQEAgLTAsMCArMSwxNjggQEAKKyMgbGliLWxkLm00IHNlcmlhbCA5CitkbmwgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDMsIDIwMDktMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgU3Vicm91dGluZXMgb2YgbGlidG9vbC5tNCwKK2RubCB3aXRoIHJlcGxhY2VtZW50cyBzL18qTFRfUEFUSC9BQ19MSUJfUFJPRy8gYW5kIHMvbHRfL2FjbF8vIHRvIGF2b2lkCitkbmwgY29sbGlzaW9uIHdpdGggbGlidG9vbC5tNC4KKworZG5sIEZyb20gbGlidG9vbC0yLjQuIFNldHMgdGhlIHZhcmlhYmxlIHdpdGhfZ251X2xkIHRvIHllcyBvciBuby4KK0FDX0RFRlVOKFtBQ19MSUJfUFJPR19MRF9HTlVdLAorW0FDX0NBQ0hFX0NIRUNLKFtpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZF0sIFthY2xfY3ZfcHJvZ19nbnVfbGRdLAorWyMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkcyBvbmx5IGFjY2VwdCAtdi4KK2Nhc2UgYCRMRCAtdiAyPiYxIDwvZGV2L251bGxgIGluCisqR05VKiB8ICond2l0aCBCRkQnKikKKyAgYWNsX2N2X3Byb2dfZ251X2xkPXllcworICA7OworKikKKyAgYWNsX2N2X3Byb2dfZ251X2xkPW5vCisgIDs7Citlc2FjXSkKK3dpdGhfZ251X2xkPSRhY2xfY3ZfcHJvZ19nbnVfbGQKK10pCisKK2RubCBGcm9tIGxpYnRvb2wtMi40LiBTZXRzIHRoZSB2YXJpYWJsZSBMRC4KK0FDX0RFRlVOKFtBQ19MSUJfUFJPR19MRF0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCisKK0FDX0FSR19XSVRIKFtnbnUtbGRdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCisgICAgICAgIFthc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dXSldLAorICAgIFt0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXNdLAorICAgIFt3aXRoX2dudV9sZD1ub10pZG5sCisKKyMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KKyMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgIyBEZXRlcm1pbmUgUEFUSF9TRVBBUkFUT1IgYnkgdHJ5aW5nIHRvIGZpbmQgL2Jpbi9zaCBpbiBhIFBBVEggd2hpY2gKKyAgIyBjb250YWlucyBvbmx5IC9iaW4uIE5vdGUgdGhhdCBrc2ggbG9va3MgYWxzbyBhdCB0aGUgRlBBVEggdmFyaWFibGUsCisgICMgc28gd2UgaGF2ZSB0byBzZXQgdGhhdCBhcyB3ZWxsIGZvciB0aGUgdGVzdC4KKyAgUEFUSF9TRVBBUkFUT1I9OgorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgJiYgeyAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgICAgICAgIHx8IFBBVEhfU0VQQVJBVE9SPSc7JworICAgICAgIH0KK2ZpCisKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGRdKQorZWxpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCitlbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKK2Vsc2UKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igbm9uLUdOVSBsZF0pCitmaQoraWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOgorZWxzZQorICBBQ19DQUNIRV9WQUwoW2FjbF9jdl9wYXRoX0xEXSwKKyAgWworICAgIGFjbF9jdl9wYXRoX0xEPSAjIEZpbmFsIHJlc3VsdCBvZiB0aGlzIHRlc3QKKyAgICBhY19wcm9nPWxkICMgUHJvZ3JhbSB0byBzZWFyY2ggaW4gJFBBVEgKKyAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIyBDaGVjayBpZiBnY2MgLXByaW50LXByb2ctbmFtZT1sZCBnaXZlcyBhIHBhdGguCisgICAgICBjYXNlICRob3N0IGluCisgICAgICAgICotKi1taW5ndyopCisgICAgICAgICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdoaWNoIHVwc2V0cyBtaW5ndworICAgICAgICAgIGFjbF9vdXRwdXQ9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKKyAgICAgICAgKikKKyAgICAgICAgICBhY2xfb3V0cHV0PWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CisgICAgICBlc2FjCisgICAgICBjYXNlICRhY2xfb3V0cHV0IGluCisgICAgICAgICMgQWNjZXB0IGFic29sdXRlIHBhdGhzLgorICAgICAgICBbW1xcL11dKiB8ID86W1tcXC9dXSopCisgICAgICAgICAgcmVfZGlyZWx0PScvW1teL11dW1teL11dKi9cLlwuLycKKyAgICAgICAgICAjIENhbm9uaWNhbGl6ZSB0aGUgcGF0aG5hbWUgb2YgbGQKKyAgICAgICAgICBhY2xfb3V0cHV0PWBlY2hvICIkYWNsX291dHB1dCIgfCBzZWQgJ3MlXFxcXCUvJWcnYAorICAgICAgICAgIHdoaWxlIGVjaG8gIiRhY2xfb3V0cHV0IiB8IGdyZXAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCisgICAgICAgICAgICBhY2xfb3V0cHV0PWBlY2hvICRhY2xfb3V0cHV0IHwgc2VkICJzJSRyZV9kaXJlbHQlLyUiYAorICAgICAgICAgIGRvbmUKKyAgICAgICAgICAjIEdvdCB0aGUgcGF0aG5hbWUuIE5vIHNlYXJjaCBpbiBQQVRIIGlzIG5lZWRlZC4KKyAgICAgICAgICBhY2xfY3ZfcGF0aF9MRD0iJGFjbF9vdXRwdXQiCisgICAgICAgICAgYWNfcHJvZz0KKyAgICAgICAgICA7OworICAgICAgICAiIikKKyAgICAgICAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRoZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KKyAgICAgICAgICB3aXRoX2dudV9sZD11bmtub3duCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICAgIGlmIHRlc3QgLW4gIiRhY19wcm9nIjsgdGhlbgorICAgICAgIyBTZWFyY2ggZm9yICRhY19wcm9nIGluICRQQVRILgorICAgICAgYWNsX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICAgICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KKyAgICAgICAgSUZTPSIkYWNsX3NhdmVfaWZzIgorICAgICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KKyAgICAgICAgICBhY2xfY3ZfcGF0aF9MRD0iJGFjX2Rpci8kYWNfcHJvZyIKKyAgICAgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUgcHJvZ3JhbSBpcyBHTlUgbGQuICBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24sCisgICAgICAgICAgIyBidXQgYXBwYXJlbnRseSBzb21lIHZhcmlhbnRzIG9mIEdOVSBsZCBvbmx5IGFjY2VwdCAtdi4KKyAgICAgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KKyAgICAgICAgICBjYXNlIGAiJGFjbF9jdl9wYXRoX0xEIiAtdiAyPiYxIDwvZGV2L251bGxgIGluCisgICAgICAgICAgICAqR05VKiB8ICond2l0aCBCRkQnKikKKyAgICAgICAgICAgICAgdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgdGVzdCAiJHdpdGhfZ251X2xkIiAhPSB5ZXMgJiYgYnJlYWsKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRhY2xfc2F2ZV9pZnMiCisgICAgZmkKKyAgICBjYXNlICRob3N0IGluCisgICAgICAqLSotYWl4KikKKyAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19wb3dlcnBjNjRfXyB8fCBkZWZpbmVkIF9BUkNIX1BQQzY0CisgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICBdXSldLAorICAgICAgICAgIFsjIFRoZSBjb21waWxlciBwcm9kdWNlcyA2NC1iaXQgY29kZS4gQWRkIG9wdGlvbiAnLWI2NCcgc28gdGhhdCB0aGUKKyAgICAgICAgICAgIyBsaW5rZXIgZ3Jva3MgNjQtYml0IG9iamVjdCBmaWxlcy4KKyAgICAgICAgICAgY2FzZSAiJGFjbF9jdl9wYXRoX0xEICIgaW4KKyAgICAgICAgICAgICAqIiAtYjY0ICIqKSA7OworICAgICAgICAgICAgICopIGFjbF9jdl9wYXRoX0xEPSIkYWNsX2N2X3BhdGhfTEQgLWI2NCIgOzsKKyAgICAgICAgICAgZXNhYworICAgICAgICAgIF0sIFtdKQorICAgICAgICA7OworICAgICAgc3BhcmM2NC0qLW5ldGJzZCopCisgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fc3BhcmN2OSB8fCBkZWZpbmVkIF9fYXJjaDY0X18KKyAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgW10sCisgICAgICAgICAgWyMgVGhlIGNvbXBpbGVyIHByb2R1Y2VzIDMyLWJpdCBjb2RlLiBBZGQgb3B0aW9uICctbSBlbGYzMl9zcGFyYycKKyAgICAgICAgICAgIyBzbyB0aGF0IHRoZSBsaW5rZXIgZ3Jva3MgMzItYml0IG9iamVjdCBmaWxlcy4KKyAgICAgICAgICAgY2FzZSAiJGFjbF9jdl9wYXRoX0xEICIgaW4KKyAgICAgICAgICAgICAqIiAtbSBlbGYzMl9zcGFyYyAiKikgOzsKKyAgICAgICAgICAgICAqKSBhY2xfY3ZfcGF0aF9MRD0iJGFjbF9jdl9wYXRoX0xEIC1tIGVsZjMyX3NwYXJjIiA7OworICAgICAgICAgICBlc2FjCisgICAgICAgICAgXSkKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIF0pCisgIExEPSIkYWNsX2N2X3BhdGhfTEQiCitmaQoraWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICBBQ19NU0dfUkVTVUxUKFskTERdKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub10pCisgIEFDX01TR19FUlJPUihbbm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEhdKQorZmkKK0FDX0xJQl9QUk9HX0xEX0dOVQorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLWxpbmsubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1saW5rLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZjEwNzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1saW5rLm00CkBAIC0wLDAgKzEsNzc0IEBACisjIGxpYi1saW5rLm00IHNlcmlhbCAyOAorZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworQUNfUFJFUkVRKFsyLjYxXSkKKworZG5sIEFDX0xJQl9MSU5LRkxBR1MobmFtZSBbLCBkZXBlbmRlbmNpZXNdKSBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQKK2RubCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kIGltcGxpY2l0IGRlcGVuZGVuY2llcy4KK2RubCBTZXRzIGFuZCBBQ19TVUJTVHMgdGhlIExJQiR7TkFNRX0gYW5kIExUTElCJHtOQU1FfSB2YXJpYWJsZXMgYW5kCitkbmwgYXVnbWVudHMgdGhlIENQUEZMQUdTIHZhcmlhYmxlLgorZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfV9QUkVGSVggdmFyaWFibGUgdG8gbm9uZW1wdHkgaWYgbGlibmFtZQorZG5sIHdhcyBmb3VuZCBpbiAke0xJQiR7TkFNRX1fUFJFRklYfS8kYWNsX2xpYmRpcnN0ZW0uCitBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU10sCitbCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisgIHB1c2hkZWYoW05hbWVdLFttNF90cmFuc2xpdChbJDFdLFsuLystXSwgW19fX19dKV0pCisgIHB1c2hkZWYoW05BTUVdLFttNF90cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorICBBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGxpbmsgd2l0aCBsaWJbXSQxXSwgW2FjX2N2X2xpYltdTmFtZVtdX2xpYnNdLCBbCisgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFskMV0sIFskMl0pCisgICAgYWNfY3ZfbGliW11OYW1lW11fbGlicz0iJExJQltdTkFNRSIKKyAgICBhY19jdl9saWJbXU5hbWVbXV9sdGxpYnM9IiRMVExJQltdTkFNRSIKKyAgICBhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncz0iJElOQ1tdTkFNRSIKKyAgICBhY19jdl9saWJbXU5hbWVbXV9wcmVmaXg9IiRMSUJbXU5BTUVbXV9QUkVGSVgiCisgIF0pCisgIExJQltdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2xpYnMiCisgIExUTElCW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fbHRsaWJzIgorICBJTkNbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncyIKKyAgTElCW11OQU1FW11fUFJFRklYPSIkYWNfY3ZfbGliW11OYW1lW11fcHJlZml4IgorICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FKQorICBBQ19TVUJTVChbTFRMSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FW19QUkVGSVhdKQorICBkbmwgQWxzbyBzZXQgSEFWRV9MSUJbXU5BTUUgc28gdGhhdCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FuIHJldXNlIHRoZQorICBkbmwgcmVzdWx0cyBvZiB0aGlzIHNlYXJjaCB3aGVuIHRoaXMgbGlicmFyeSBhcHBlYXJzIGFzIGEgZGVwZW5kZW5jeS4KKyAgSEFWRV9MSUJbXU5BTUU9eWVzCisgIHBvcGRlZihbTkFNRV0pCisgIHBvcGRlZihbTmFtZV0pCitdKQorCitkbmwgQUNfTElCX0hBVkVfTElOS0ZMQUdTKG5hbWUsIGRlcGVuZGVuY2llcywgaW5jbHVkZXMsIHRlc3Rjb2RlLCBbbWlzc2luZy1tZXNzYWdlXSkKK2RubCBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZAorZG5sIGltcGxpY2l0IGRlcGVuZGVuY2llcywgdG9nZXRoZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGluY2x1ZGUgZmlsZXMgYW5kCitkbmwgdGhlIGFiaWxpdHkgdG8gY29tcGlsZSBhbmQgbGluayB0aGUgc3BlY2lmaWVkIHRlc3Rjb2RlLiBUaGUgbWlzc2luZy1tZXNzYWdlCitkbmwgZGVmYXVsdHMgdG8gJ25vJyBhbmQgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBoaW50cyBmb3IgdGhlIHVzZXIuCitkbmwgSWYgZm91bmQsIGl0IHNldHMgYW5kIEFDX1NVQlNUcyBIQVZFX0xJQiR7TkFNRX09eWVzIGFuZCB0aGUgTElCJHtOQU1FfQorZG5sIGFuZCBMVExJQiR7TkFNRX0gdmFyaWFibGVzIGFuZCBhdWdtZW50cyB0aGUgQ1BQRkxBR1MgdmFyaWFibGUsIGFuZAorZG5sICNkZWZpbmVzIEhBVkVfTElCJHtOQU1FfSB0byAxLiBPdGhlcndpc2UsIGl0IHNldHMgYW5kIEFDX1NVQlNUcworZG5sIEhBVkVfTElCJHtOQU1FfT1ubyBhbmQgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHRvIGVtcHR5LgorZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfV9QUkVGSVggdmFyaWFibGUgdG8gbm9uZW1wdHkgaWYgbGlibmFtZQorZG5sIHdhcyBmb3VuZCBpbiAke0xJQiR7TkFNRX1fUFJFRklYfS8kYWNsX2xpYmRpcnN0ZW0uCitBQ19ERUZVTihbQUNfTElCX0hBVkVfTElOS0ZMQUdTXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKyAgcHVzaGRlZihbTmFtZV0sW200X3RyYW5zbGl0KFskMV0sWy4vKy1dLCBbX19fX10pXSkKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisKKyAgZG5sIFNlYXJjaCBmb3IgbGliW11OYW1lIGFuZCBkZWZpbmUgTElCW11OQU1FLCBMVExJQltdTkFNRSBhbmQgSU5DW11OQU1FCisgIGRubCBhY2NvcmRpbmdseS4KKyAgQUNfTElCX0xJTktGTEFHU19CT0RZKFskMV0sIFskMl0pCisKKyAgZG5sIEFkZCAkSU5DW11OQU1FIHRvIENQUEZMQUdTIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2tzLAorICBkbmwgYmVjYXVzZSBpZiB0aGUgdXNlciBoYXMgaW5zdGFsbGVkIGxpYltdTmFtZSBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliW11OYW1lLXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LgorICBhY19zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ11OQU1FKQorCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbGliW10kMV0sIFthY19jdl9saWJbXU5hbWVdLCBbCisgICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICBkbmwgSWYgJExJQltdTkFNRSBjb250YWlucyBzb21lIC1sIG9wdGlvbnMsIGFkZCBpdCB0byB0aGUgZW5kIG9mIExJQlMsCisgICAgZG5sIGJlY2F1c2UgdGhlc2UgLWwgb3B0aW9ucyBtaWdodCByZXF1aXJlIC1MIG9wdGlvbnMgdGhhdCBhcmUgcHJlc2VudCBpbgorICAgIGRubCBMSUJTLiAtbCBvcHRpb25zIGJlbmVmaXQgb25seSBmcm9tIHRoZSAtTCBvcHRpb25zIGxpc3RlZCBiZWZvcmUgaXQuCisgICAgZG5sIE90aGVyd2lzZSwgYWRkIGl0IHRvIHRoZSBmcm9udCBvZiBMSUJTLCBiZWNhdXNlIGl0IG1heSBiZSBhIHN0YXRpYworICAgIGRubCBsaWJyYXJ5IHRoYXQgZGVwZW5kcyBvbiBhbm90aGVyIHN0YXRpYyBsaWJyYXJ5IHRoYXQgaXMgcHJlc2VudCBpbiBMSUJTLgorICAgIGRubCBTdGF0aWMgbGlicmFyaWVzIGJlbmVmaXQgb25seSBmcm9tIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxpc3RlZCBhZnRlcgorICAgIGRubCBpdC4KKyAgICBjYXNlICIgJExJQltdTkFNRSIgaW4KKyAgICAgICoiIC1sIiopIExJQlM9IiRMSUJTICRMSUJbXU5BTUUiIDs7CisgICAgICAqKSAgICAgICBMSUJTPSIkTElCW11OQU1FICRMSUJTIiA7OworICAgIGVzYWMKKyAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgIFtBQ19MQU5HX1BST0dSQU0oW1skM11dLCBbWyQ0XV0pXSwKKyAgICAgIFthY19jdl9saWJbXU5hbWU9eWVzXSwKKyAgICAgIFthY19jdl9saWJbXU5hbWU9J200X2lmKFskNV0sIFtdLCBbbm9dLCBbWyQ1XV0pJ10pCisgICAgTElCUz0iJGFjX3NhdmVfTElCUyIKKyAgXSkKKyAgaWYgdGVzdCAiJGFjX2N2X2xpYltdTmFtZSIgPSB5ZXM7IHRoZW4KKyAgICBIQVZFX0xJQltdTkFNRT15ZXMKKyAgICBBQ19ERUZJTkUoW0hBVkVfTElCXU5BTUUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxpYl1bJDEgbGlicmFyeS5dKQorICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJbXSQxXSkKKyAgICBBQ19NU0dfUkVTVUxUKFskTElCW11OQU1FXSkKKyAgZWxzZQorICAgIEhBVkVfTElCW11OQU1FPW5vCisgICAgZG5sIElmICRMSUJbXU5BTUUgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZAorICAgIGRubCAkSU5DW11OQU1FIGVpdGhlci4KKyAgICBDUFBGTEFHUz0iJGFjX3NhdmVfQ1BQRkxBR1MiCisgICAgTElCW11OQU1FPQorICAgIExUTElCW11OQU1FPQorICAgIExJQltdTkFNRVtdX1BSRUZJWD0KKyAgZmkKKyAgQUNfU1VCU1QoW0hBVkVfTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xUTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMSUJdTkFNRVtfUFJFRklYXSkKKyAgcG9wZGVmKFtOQU1FXSkKKyAgcG9wZGVmKFtOYW1lXSkKK10pCisKK2RubCBEZXRlcm1pbmUgdGhlIHBsYXRmb3JtIGRlcGVuZGVudCBwYXJhbWV0ZXJzIG5lZWRlZCB0byB1c2UgcnBhdGg6CitkbmwgICBhY2xfbGliZXh0LAorZG5sICAgYWNsX3NobGliZXh0LAorZG5sICAgYWNsX2xpYm5hbWVfc3BlYywKK2RubCAgIGFjbF9saWJyYXJ5X25hbWVzX3NwZWMsCitkbmwgICBhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywKK2RubCAgIGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLAorZG5sICAgYWNsX2hhcmRjb2RlX2RpcmVjdCwKK2RubCAgIGFjbF9oYXJkY29kZV9taW51c19MLgorQUNfREVGVU4oW0FDX0xJQl9SUEFUSF0sCitbCisgIGRubCBDb21wbGFpbiBpZiBjb25maWcucnBhdGggaXMgbWlzc2luZy4KKyAgQUNfUkVRVUlSRV9BVVhfRklMRShbY29uZmlnLnJwYXRoXSkKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pICAgICAgICAgICAgICAgIGRubCB3ZSB1c2UgJENDLCAkR0NDLCAkTERGTEFHUworICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJPR19MRF0pICAgICAgICAgICAgZG5sIHdlIHVzZSAkTEQsICR3aXRoX2dudV9sZAorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pICAgICAgICAgZG5sIHdlIHVzZSAkaG9zdAorICBBQ19SRVFVSVJFKFtBQ19DT05GSUdfQVVYX0RJUl9ERUZBVUxUXSkgZG5sIHdlIHVzZSAkYWNfYXV4X2RpcgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdpbl0sIFthY2xfY3ZfcnBhdGhdLCBbCisgICAgQ0M9IiRDQyIgR0NDPSIkR0NDIiBMREZMQUdTPSIkTERGTEFHUyIgTEQ9IiRMRCIgd2l0aF9nbnVfbGQ9IiR3aXRoX2dudV9sZCIgXAorICAgICR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICIkYWNfYXV4X2Rpci9jb25maWcucnBhdGgiICIkaG9zdCIgPiBjb25mdGVzdC5zaAorICAgIC4gLi9jb25mdGVzdC5zaAorICAgIHJtIC1mIC4vY29uZnRlc3Quc2gKKyAgICBhY2xfY3ZfcnBhdGg9ZG9uZQorICBdKQorICB3bD0iJGFjbF9jdl93bCIKKyAgYWNsX2xpYmV4dD0iJGFjbF9jdl9saWJleHQiCisgIGFjbF9zaGxpYmV4dD0iJGFjbF9jdl9zaGxpYmV4dCIKKyAgYWNsX2xpYm5hbWVfc3BlYz0iJGFjbF9jdl9saWJuYW1lX3NwZWMiCisgIGFjbF9saWJyYXJ5X25hbWVzX3NwZWM9IiRhY2xfY3ZfbGlicmFyeV9uYW1lc19zcGVjIgorICBhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGFjbF9jdl9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgorICBhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGFjbF9jdl9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgorICBhY2xfaGFyZGNvZGVfZGlyZWN0PSIkYWNsX2N2X2hhcmRjb2RlX2RpcmVjdCIKKyAgYWNsX2hhcmRjb2RlX21pbnVzX0w9IiRhY2xfY3ZfaGFyZGNvZGVfbWludXNfTCIKKyAgZG5sIERldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIHdhbnRzIHJwYXRoIGhhbmRsaW5nIGF0IGFsbC4KKyAgQUNfQVJHX0VOQUJMRShbcnBhdGhdLAorICAgIFsgIC0tZGlzYWJsZS1ycGF0aCAgICAgICAgIGRvIG5vdCBoYXJkY29kZSBydW50aW1lIGxpYnJhcnkgcGF0aHNdLAorICAgIDosIGVuYWJsZV9ycGF0aD15ZXMpCitdKQorCitkbmwgQUNfTElCX0ZST01QQUNLQUdFKG5hbWUsIHBhY2thZ2UpCitkbmwgZGVjbGFyZXMgdGhhdCBsaWJuYW1lIGNvbWVzIGZyb20gdGhlIGdpdmVuIHBhY2thZ2UuIFRoZSBjb25maWd1cmUgZmlsZQorZG5sIHdpbGwgdGhlbiBub3QgaGF2ZSBhIC0td2l0aC1saWJuYW1lLXByZWZpeCBvcHRpb24gYnV0IGEKK2RubCAtLXdpdGgtcGFja2FnZS1wcmVmaXggb3B0aW9uLiBTZXZlcmFsIGxpYnJhcmllcyBjYW4gY29tZSBmcm9tIHRoZSBzYW1lCitkbmwgcGFja2FnZS4gVGhpcyBkZWNsYXJhdGlvbiBtdXN0IG9jY3VyIGJlZm9yZSBhbiBBQ19MSUJfTElOS0ZMQUdTIG9yIHNpbWlsYXIKK2RubCBtYWNybyBjYWxsIHRoYXQgc2VhcmNoZXMgZm9yIGxpYm5hbWUuCitBQ19ERUZVTihbQUNfTElCX0ZST01QQUNLQUdFXSwKK1sKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIGRlZmluZShbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBbJDJdKQorICBwb3BkZWYoW05BTUVdKQorICBwdXNoZGVmKFtQQUNLXSxbJDJdKQorICBwdXNoZGVmKFtQQUNLVVBdLFttNF90cmFuc2xpdChQQUNLLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIGRlZmluZShbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUCwKKyAgICBtNF9pZmRlZihbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUCwgW200X2RlZm4oW2FjbF9saWJzaW5wYWNrYWdlX11QQUNLVVApWywgXV0sKVtsaWIkMV0pCisgIHBvcGRlZihbUEFDS1VQXSkKKyAgcG9wZGVmKFtQQUNLXSkKK10pCisKK2RubCBBQ19MSUJfTElOS0ZMQUdTX0JPRFkobmFtZSBbLCBkZXBlbmRlbmNpZXNdKSBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQKK2RubCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kIGltcGxpY2l0IGRlcGVuZGVuY2llcy4KK2RubCBTZXRzIHRoZSBMSUIke05BTUV9LCBMVExJQiR7TkFNRX0gYW5kIElOQyR7TkFNRX0gdmFyaWFibGVzLgorZG5sIEFsc28sIHNldHMgdGhlIExJQiR7TkFNRX1fUFJFRklYIHZhcmlhYmxlIHRvIG5vbmVtcHR5IGlmIGxpYm5hbWUgd2FzIGZvdW5kCitkbmwgaW4gJHtMSUIke05BTUV9X1BSRUZJWH0vJGFjbF9saWJkaXJzdGVtLgorQUNfREVGVU4oW0FDX0xJQl9MSU5LRkxBR1NfQk9EWV0sCitbCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSkKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIHB1c2hkZWYoW1BBQ0tdLFttNF9pZmRlZihbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBsaWJbJDFdKV0pCisgIHB1c2hkZWYoW1BBQ0tVUF0sW200X3RyYW5zbGl0KFBBQ0ssW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgcHVzaGRlZihbUEFDS0xJQlNdLFttNF9pZmRlZihbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUCwgbGliWyQxXSldKQorICBkbmwgQnkgZGVmYXVsdCwgbG9vayBpbiAkaW5jbHVkZWRpciBhbmQgJGxpYmRpci4KKyAgdXNlX2FkZGl0aW9uYWw9eWVzCisgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCisgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorICBdKQorICBBQ19BUkdfV0lUSChQQUNLWy1wcmVmaXhdLAorW1sgIC0td2l0aC1dXVBBQ0tbWy1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgXVBBQ0tMSUJTWyBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgorICAtLXdpdGhvdXQtXV1QQUNLW1stcHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIF1QQUNLTElCU1sgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyXV0sCitbCisgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCisgICAgICB1c2VfYWRkaXRpb25hbD1ubworICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisgICAgICAgIF0pCisgICAgICBlbHNlCisgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSIKKyAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJkaXJzdGVtMiIgIT0gIiRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAmJiB0ZXN0ICEgLWQgIiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4KKyAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtMiIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKK10pCisgIGRubCBTZWFyY2ggdGhlIGxpYnJhcnkgYW5kIGl0cyBkZXBlbmRlbmNpZXMgaW4gJGFkZGl0aW9uYWxfbGliZGlyIGFuZAorICBkbmwgJExERkxBR1MuIFVzaW5nIGJyZWFkdGgtZmlyc3Qtc2VhY2guCisgIExJQltdTkFNRT0KKyAgTFRMSUJbXU5BTUU9CisgIElOQ1tdTkFNRT0KKyAgTElCW11OQU1FW11fUFJFRklYPQorICBkbmwgSEFWRV9MSUIke05BTUV9IGlzIGFuIGluZGljYXRvciB0aGF0IExJQiR7TkFNRX0sIExUTElCJHtOQU1FfSBoYXZlIGJlZW4KKyAgZG5sIGNvbXB1dGVkLiBTbyBpdCBoYXMgdG8gYmUgcmVzZXQgaGVyZS4KKyAgSEFWRV9MSUJbXU5BTUU9CisgIHJwYXRoZGlycz0KKyAgbHRycGF0aGRpcnM9CisgIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0KKyAgbmFtZXNfbmV4dF9yb3VuZD0nJDEgJDInCisgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KKyAgICBuYW1lc190aGlzX3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCIKKyAgICBuYW1lc19uZXh0X3JvdW5kPQorICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbworICAgICAgYWxyZWFkeV9oYW5kbGVkPQorICAgICAgZm9yIG4gaW4gJG5hbWVzX2FscmVhZHlfaGFuZGxlZDsgZG8KKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgorICAgICAgICAgIGFscmVhZHlfaGFuZGxlZD15ZXMKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAteiAiJGFscmVhZHlfaGFuZGxlZCI7IHRoZW4KKyAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgorICAgICAgICBkbmwgU2VlIGlmIGl0IHdhcyBhbHJlYWR5IGxvY2F0ZWQgYnkgYW4gZWFybGllciBBQ19MSUJfTElOS0ZMQUdTCisgICAgICAgIGRubCBvciBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FsbC4KKyAgICAgICAgdXBwZXJuYW1lPWBlY2hvICIkbmFtZSIgfCBzZWQgLWUgJ3l8YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystfEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX3wnYAorICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1cHBlcm5hbWVcIgorICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAiJHZhbHVlIiA9IHllczsgdGhlbgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTElCJHVwcGVybmFtZVwiCisgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JHZhbHVlIgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTFRMSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0kdmFsdWUiCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZG5sIEFuIGVhcmxpZXIgY2FsbCB0byBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgaGFzIGRldGVybWluZWQKKyAgICAgICAgICAgIGRubCB0aGF0IHRoaXMgbGlicmFyeSBkb2Vzbid0IGV4aXN0LiBTbyBqdXN0IGRyb3AgaXQuCisgICAgICAgICAgICA6CisgICAgICAgICAgZmkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRubCBTZWFyY2ggdGhlIGxpYnJhcnkgbGliJG5hbWUgaW4gJGFkZGl0aW9uYWxfbGliZGlyIGFuZCAkTERGTEFHUworICAgICAgICAgIGRubCBhbmQgdGhlIGFscmVhZHkgY29uc3RydWN0ZWQgJExJQk5BTUUvJExUTElCTkFNRS4KKyAgICAgICAgICBmb3VuZF9kaXI9CisgICAgICAgICAgZm91bmRfbGE9CisgICAgICAgICAgZm91bmRfc289CisgICAgICAgICAgZm91bmRfYT0KKyAgICAgICAgICBldmFsIGxpYm5hbWU9XCIkYWNsX2xpYm5hbWVfc3BlY1wiICAgICMgdHlwaWNhbGx5OiBsaWJuYW1lPWxpYiRuYW1lCisgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgIHNocmV4dD0iLiRhY2xfc2hsaWJleHQiICAgICAgICAgICAgICMgdHlwaWNhbGx5OiBzaHJleHQ9LnNvCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgc2hyZXh0PQorICAgICAgICAgIGZpCisgICAgICAgICAgaWYgdGVzdCAkdXNlX2FkZGl0aW9uYWwgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgIGRpcj0iJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgZG5sIFRoZSBzYW1lIGNvZGUgYXMgaW4gdGhlIGxvb3AgYmVsb3c6CisgICAgICAgICAgICBkbmwgRmlyc3QgbG9vayBmb3IgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCisgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlYyIgPSAnJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAiJGxpYm5hbWUkc2hyZXh0Ii4qOyBkbyBlY2hvICIkZiI7IGRvbmUgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgInMsXiRsaWJuYW1lJHNocmV4dFxcXFwuLCwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAnLicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgMXEgKSAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiR2ZXIiICYmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIGV2YWwgbGlicmFyeV9uYW1lcz1cIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjXCIKKyAgICAgICAgICAgICAgICAgIGZvciBmIGluICRsaWJyYXJ5X25hbWVzOyBkbworICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRmIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kZiIKKyAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG5sIFRoZW4gbG9vayBmb3IgYSBzdGF0aWMgbGlicmFyeS4KKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5sYSIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQltdTkFNRTsgZG8KKyAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgY2FzZSAiJHgiIGluCisgICAgICAgICAgICAgICAgLUwqKQorICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwvLydgCisgICAgICAgICAgICAgICAgICBkbmwgRmlyc3QgbG9vayBmb3IgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlYyIgPSAnJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCc7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAiJGxpYm5hbWUkc2hyZXh0Ii4qOyBkbyBlY2hvICIkZiI7IGRvbmUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgInMsXiRsaWJuYW1lJHNocmV4dFxcXFwuLCwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAnLicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgMXEgKSAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiR2ZXIiICYmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwgbGlicmFyeV9uYW1lcz1cIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjXCIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICRsaWJyYXJ5X25hbWVzOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRmIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZG5sIFRoZW4gbG9vayBmb3IgYSBzdGF0aWMgbGlicmFyeS4KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5sYSIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgZG5sIEZvdW5kIHRoZSBsaWJyYXJ5LgorICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfc28iICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc2hhcmVkIGxpYnJhcnkuIFdlIGF0dGVtcHQgdG8gaGFyZGNvZGUgaXRzCisgICAgICAgICAgICAgIGRubCBkaXJlY3RvcnkgaW50byB0aGUgZXhlY3V0YWJsZSdzIHJ1bnBhdGgsIHVubGVzcyBpdCdzIHRoZQorICAgICAgICAgICAgICBkbmwgc3RhbmRhcmQgL3Vzci9saWIuCisgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiID0gbm8gXAorICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgIGRubCBObyBoYXJkY29kaW5nIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRubCBVc2UgYW4gZXhwbGljaXQgb3B0aW9uIHRvIGhhcmRjb2RlIERJUiBpbnRvIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgorICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIGx0cnBhdGhkaXJzLgorICAgICAgICAgICAgICAgIGRubCBUaGUgbHRycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTFRMSUJOQU1FIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBkbmwgVGhlIGhhcmRjb2RpbmcgaW50byAkTElCTkFNRSBpcyBzeXN0ZW0gZGVwZW5kZW50LgorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgICAgZG5sIFVzaW5nIERJUi9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgIGRubCByZXN1bHRpbmcgYmluYXJ5LgorICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgRElSIGludG8gdGhlIHJlc3VsdGluZworICAgICAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgorICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gcnBhdGhkaXJzLgorICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMSUJOQU1FIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRubCBSZWx5IG9uICItTCRmb3VuZF9kaXIiLgorICAgICAgICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdCBpZiBpdCdzIGFscmVhZHkgY29udGFpbmVkIGluIHRoZSBMREZMQUdTCisgICAgICAgICAgICAgICAgICAgIGRubCBvciB0aGUgYWxyZWFkeSBjb25zdHJ1Y3RlZCAkTElCTkFNRQorICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJbXU5BTUU7IGRvCisgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJkY29kZV9taW51c19MIiAhPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGRubCBGSVhNRTogTm90IHN1cmUgd2hldGhlciB3ZSBzaG91bGQgdXNlCisgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgV2UgY2Fubm90IHVzZSAkYWNsX2hhcmRjb2RlX3J1bnBhdGhfdmFyIGFuZCBMRF9SVU5fUEFUSAorICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLCBiZWNhdXNlIHRoaXMgZG9lc24ndCBmaXQgaW4gZmxhZ3MgcGFzc2VkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgIGRubCBjb21waWxlci4gU28gZ2l2ZSB1cC4gTm8gaGFyZGNvZGluZy4gVGhpcyBhZmZlY3RzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgdmVyeSBvbGQgc3lzdGVtcy4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgRklYTUU6IE5vdCBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIHVzZQorICAgICAgICAgICAgICAgICAgICAgIGRubCAiLUwkZm91bmRfZGlyIC1sJG5hbWUiIG9yICItTCRmb3VuZF9kaXIgJGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLgorICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LWwkbmFtZSIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9hIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc3RhdGljIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfYSIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRubCBXZSBzaG91bGRuJ3QgY29tZSBoZXJlLCBidXQgYW55d2F5IGl0J3MgZ29vZCB0byBoYXZlIGEKKyAgICAgICAgICAgICAgICBkbmwgZmFsbGJhY2suCisgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkbmwgQXNzdW1lIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBuZWFyYnkuCisgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9CisgICAgICAgICAgICBjYXNlICIkZm91bmRfZGlyIiBpbgorICAgICAgICAgICAgICAqLyRhY2xfbGliZGlyc3RlbSB8ICovJGFjbF9saWJkaXJzdGVtLykKKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbS8iJyokLCwnYAorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiA9ICckMSc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIExJQltdTkFNRVtdX1BSRUZJWD0iJGJhc2VkaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0yIHwgKi8kYWNsX2xpYmRpcnN0ZW0yLykKKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbTIvIicqJCwsJ2AKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnJDEnOyB0aGVuCisgICAgICAgICAgICAgICAgICBMSUJbXU5BTUVbXV9QUkVGSVg9IiRiYXNlZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkSU5DTkFNRS4KKyAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICAgICAgICAgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9pbmNsdWRlLAorICAgICAgICAgICAgICBkbmwgICAyLiBpZiBpdCdzIC91c3IvbG9jYWwvaW5jbHVkZSBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKKyAgICAgICAgICAgICAgZG5sICAgMy4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJENQUEZMQUdTIG9yIHRoZSBhbHJlYWR5CisgICAgICAgICAgICAgIGRubCAgICAgIGNvbnN0cnVjdGVkICRJTkNOQU1FLAorICAgICAgICAgICAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1MgJElOQ1tdTkFNRTsgZG8KKyAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRJTkNOQU1FLgorICAgICAgICAgICAgICAgICAgICAgIElOQ1tdTkFNRT0iJHtJTkNbXU5BTUV9JHtJTkNbXU5BTUU6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRubCBMb29rIGZvciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZm91bmRfbGEiOyB0aGVuCisgICAgICAgICAgICAgIGRubCBSZWFkIHRoZSAubGEgZmlsZS4gSXQgZGVmaW5lcyB0aGUgdmFyaWFibGVzCisgICAgICAgICAgICAgIGRubCBkbG5hbWUsIGxpYnJhcnlfbmFtZXMsIG9sZF9saWJyYXJ5LCBkZXBlbmRlbmN5X2xpYnMsIGN1cnJlbnQsCisgICAgICAgICAgICAgIGRubCBhZ2UsIHJldmlzaW9uLCBpbnN0YWxsZWQsIGRsb3BlbiwgZGxwcmVvcGVuLCBsaWJkaXIuCisgICAgICAgICAgICAgIHNhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgICBjYXNlICIkZm91bmRfbGEiIGluCisgICAgICAgICAgICAgICAgKi8qIHwgKlxcKikgLiAiJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGxpYmRpcj0iJHNhdmVfbGliZGlyIgorICAgICAgICAgICAgICBkbmwgV2UgdXNlIG9ubHkgZGVwZW5kZW5jeV9saWJzLgorICAgICAgICAgICAgICBmb3IgZGVwIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgICAgICAgICAgICAgICAgY2FzZSAiJGRlcCIgaW4KKyAgICAgICAgICAgICAgICAgIC1MKikKKyAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1MLy8nYAorICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTElCTkFNRSBhbmQgJExUTElCTkFNRS4KKyAgICAgICAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9saWIsCisgICAgICAgICAgICAgICAgICAgIGRubCAgIDIuIGlmIGl0J3MgL3Vzci9sb2NhbC9saWIgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCisgICAgICAgICAgICAgICAgICAgIGRubCAgIDMuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRMREZMQUdTIG9yIHRoZSBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgIGRubCAgICAgIGNvbnN0cnVjdGVkICRMSUJOQU1FLAorICAgICAgICAgICAgICAgICAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgICAgICAgICYmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCW11OQU1FOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExJQk5BTUUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJbXU5BTUU7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTFRMSUJOQU1FLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAtUiopCisgICAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLVIvLydgCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gcnBhdGhkaXJzLgorICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgcnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIGx0cnBhdGhkaXJzLgorICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgbHRycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTFRMSUJOQU1FIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgIC1sKikKKyAgICAgICAgICAgICAgICAgICAgZG5sIEhhbmRsZSB0aGlzIGluIHRoZSBuZXh0IHJvdW5kLgorICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1sLy8nYAorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgKi5sYSkKKyAgICAgICAgICAgICAgICAgICAgZG5sIEhhbmRsZSB0aGlzIGluIHRoZSBuZXh0IHJvdW5kLiBUaHJvdyBhd2F5IHRoZSAubGEncworICAgICAgICAgICAgICAgICAgICBkbmwgZGlyZWN0b3J5OyBpdCBpcyBhbHJlYWR5IGNvbnRhaW5lZCBpbiBhIHByZWNlZGluZyAtTAorICAgICAgICAgICAgICAgICAgICBkbmwgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncyxeWC4qLywsJyAtZSAncyxebGliLCwnIC1lICdzLFwubGEkLCwnYAorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICAgICAgZG5sIE1vc3QgbGlrZWx5IGFuIGltbWVkaWF0ZSBsaWJyYXJ5IG5hbWUuCisgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGRlcCIKKyAgICAgICAgICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0kZGVwIgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBkbmwgRGlkbid0IGZpbmQgdGhlIGxpYnJhcnk7IGFzc3VtZSBpdCBpcyBpbiB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzCisgICAgICAgICAgICBkbmwga25vd24gdG8gdGhlIGxpbmtlciBhbmQgcnVudGltZSBsb2FkZXIuIChBbGwgdGhlIHN5c3RlbQorICAgICAgICAgICAgZG5sIGRpcmVjdG9yaWVzIGtub3duIHRvIHRoZSBsaW5rZXIgc2hvdWxkIGFsc28gYmUga25vd24gdG8gdGhlCisgICAgICAgICAgICBkbmwgcnVudGltZSBsb2FkZXIsIG90aGVyd2lzZSB0aGUgc3lzdGVtIGlzIHNldmVyZWx5IG1pc2NvbmZpZ3VyZWQuKQorICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tbCRuYW1lIgorICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tbCRuYW1lIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGRvbmUKKyAgZG9uZQorICBpZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorICAgICAgZG5sIFdlaXJkIHBsYXRmb3JtOiBvbmx5IHRoZSBsYXN0IC1ycGF0aCBvcHRpb24gY291bnRzLCB0aGUgdXNlciBtdXN0CisgICAgICBkbmwgcGFzcyBhbGwgcGF0aCBlbGVtZW50cyBpbiBvbmUgb3B0aW9uLiBXZSBjYW4gYXJyYW5nZSB0aGF0IGZvciBhCisgICAgICBkbmwgc2luZ2xlIGxpYnJhcnksIGJ1dCBub3Qgd2hlbiBtb3JlIHRoYW4gb25lICRMSUJOQU1FcyBhcmUgdXNlZC4KKyAgICAgIGFsbGRpcnM9CisgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgIGFsbGRpcnM9IiR7YWxsZGlyc30ke2FsbGRpcnM6KyRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZm91bmRfZGlyIgorICAgICAgZG9uZQorICAgICAgZG5sIE5vdGU6IGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIHVzZXMgJGxpYmRpciBhbmQgJHdsLgorICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgbGliZGlyPSIkYWxsZGlycyIKKyAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmbGFnIgorICAgIGVsc2UKKyAgICAgIGRubCBUaGUgLXJwYXRoIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCisgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgbGliZGlyPSIkZm91bmRfZGlyIgorICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCisgICAgICBkb25lCisgICAgZmkKKyAgZmkKKyAgaWYgdGVzdCAiWCRsdHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgZG5sIFdoZW4gdXNpbmcgbGlidG9vbCwgdGhlIG9wdGlvbiB0aGF0IHdvcmtzIGZvciBib3RoIGxpYnJhcmllcyBhbmQKKyAgICBkbmwgZXhlY3V0YWJsZXMgaXMgLVIuIFRoZSAtUiBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgorICAgIGZvciBmb3VuZF9kaXIgaW4gJGx0cnBhdGhkaXJzOyBkbworICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tUiRmb3VuZF9kaXIiCisgICAgZG9uZQorICBmaQorICBwb3BkZWYoW1BBQ0tMSUJTXSkKKyAgcG9wZGVmKFtQQUNLVVBdKQorICBwb3BkZWYoW1BBQ0tdKQorICBwb3BkZWYoW05BTUVdKQorXSkKKworZG5sIEFDX0xJQl9BUFBFTkRUT1ZBUihWQVIsIENPTlRFTlRTKSBhcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBDT05URU5UUyB0byBWQVIsCitkbmwgdW5sZXNzIGFscmVhZHkgcHJlc2VudCBpbiBWQVIuCitkbmwgV29ya3Mgb25seSBmb3IgQ1BQRkxBR1MsIG5vdCBmb3IgTElCKiB2YXJpYWJsZXMgYmVjYXVzZSB0aGF0IHNvbWV0aW1lcworZG5sIGNvbnRhaW5zIHR3byBvciB0aHJlZSBjb25zZWN1dGl2ZSBlbGVtZW50cyB0aGF0IGJlbG9uZyB0b2dldGhlci4KK0FDX0RFRlVOKFtBQ19MSUJfQVBQRU5EVE9WQVJdLAorWworICBmb3IgZWxlbWVudCBpbiBbJDJdOyBkbworICAgIGhhdmVpdD0KKyAgICBmb3IgeCBpbiAkWyQxXTsgZG8KKyAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZWxlbWVudCI7IHRoZW4KKyAgICAgICAgaGF2ZWl0PXllcworICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBkb25lCisgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgIFskMV09IiR7WyQxXX0ke1skMV06KyB9JGVsZW1lbnQiCisgICAgZmkKKyAgZG9uZQorXSkKKworZG5sIEZvciB0aG9zZSBjYXNlcyB3aGVyZSBhIHZhcmlhYmxlIGNvbnRhaW5zIHNldmVyYWwgLUwgYW5kIC1sIG9wdGlvbnMKK2RubCByZWZlcnJpbmcgdG8gdW5rbm93biBsaWJyYXJpZXMgYW5kIGRpcmVjdG9yaWVzLCB0aGlzIG1hY3JvIGRldGVybWluZXMgdGhlCitkbmwgbmVjZXNzYXJ5IGFkZGl0aW9uYWwgbGlua2VyIG9wdGlvbnMgZm9yIHRoZSBydW50aW1lIHBhdGguCitkbmwgQUNfTElCX0xJTktGTEFHU19GUk9NX0xJQlMoW0xEQUREVkFSXSwgW0xJQlNWQUxVRV0sIFtVU0UtTElCVE9PTF0pCitkbmwgc2V0cyBMREFERFZBUiB0byBsaW5rZXIgb3B0aW9ucyBuZWVkZWQgdG9nZXRoZXIgd2l0aCBMSUJTVkFMVUUuCitkbmwgSWYgVVNFLUxJQlRPT0wgZXZhbHVhdGVzIHRvIG5vbi1lbXB0eSwgbGlua2luZyB3aXRoIGxpYnRvb2wgaXMgYXNzdW1lZCwKK2RubCBvdGhlcndpc2UgbGlua2luZyB3aXRob3V0IGxpYnRvb2wgaXMgYXNzdW1lZC4KK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTX0ZST01fTElCU10sCitbCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSkKKyAgJDE9CisgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KKyAgICAgIGRubCBVc2UgYW4gZXhwbGljaXQgb3B0aW9uIHRvIGhhcmRjb2RlIGRpcmVjdG9yaWVzIGludG8gdGhlIHJlc3VsdGluZworICAgICAgZG5sIGJpbmFyeS4KKyAgICAgIHJwYXRoZGlycz0KKyAgICAgIG5leHQ9CisgICAgICBmb3Igb3B0IGluICQyOyBkbworICAgICAgICBpZiB0ZXN0IC1uICIkbmV4dCI7IHRoZW4KKyAgICAgICAgICBkaXI9IiRuZXh0IgorICAgICAgICAgIGRubCBObyBuZWVkIHRvIGhhcmRjb2RlIHRoZSBzdGFuZGFyZCAvdXNyL2xpYi4KKyAgICAgICAgICBpZiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICYmIHRlc3QgIlgkZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgIGZpCisgICAgICAgICAgbmV4dD0KKyAgICAgICAgZWxzZQorICAgICAgICAgIGNhc2UgJG9wdCBpbgorICAgICAgICAgICAgLUwpIG5leHQ9eWVzIDs7CisgICAgICAgICAgICAtTCopIGRpcj1gZWNobyAiWCRvcHQiIHwgc2VkIC1lICdzLF5YLUwsLCdgCisgICAgICAgICAgICAgICAgIGRubCBObyBuZWVkIHRvIGhhcmRjb2RlIHRoZSBzdGFuZGFyZCAvdXNyL2xpYi4KKyAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgICAgJiYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICBuZXh0PSA7OworICAgICAgICAgICAgKikgbmV4dD0gOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgLW4gIiIkMyIiOyB0aGVuCisgICAgICAgICAgZG5sIGxpYnRvb2wgaXMgdXNlZCBmb3IgbGlua2luZy4gVXNlIC1SIG9wdGlvbnMuCisgICAgICAgICAgZm9yIGRpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgJDE9IiR7JDF9JHskMTorIH0tUiRkaXIiCisgICAgICAgICAgZG9uZQorICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFRoZSBsaW5rZXIgaXMgdXNlZCBmb3IgbGlua2luZyBkaXJlY3RseS4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgICAgICAgICAgICBkbmwgV2VpcmQgcGxhdGZvcm06IG9ubHkgdGhlIGxhc3QgLXJwYXRoIG9wdGlvbiBjb3VudHMsIHRoZSB1c2VyCisgICAgICAgICAgICBkbmwgbXVzdCBwYXNzIGFsbCBwYXRoIGVsZW1lbnRzIGluIG9uZSBvcHRpb24uCisgICAgICAgICAgICBhbGxkaXJzPQorICAgICAgICAgICAgZm9yIGRpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICBhbGxkaXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGRpciIKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCisgICAgICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgorICAgICAgICAgICAgJDE9IiRmbGFnIgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRubCBUaGUgLXJwYXRoIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCisgICAgICAgICAgICBmb3IgZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgICAgICAgbGliZGlyPSIkZGlyIgorICAgICAgICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgICAgICAgICQxPSIkeyQxfSR7JDE6KyB9JGZsYWciCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKKyAgQUNfU1VCU1QoWyQxXSkKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1wcmVmaXgubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1wcmVmaXgubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFkYjE3YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLXByZWZpeC5tNApAQCAtMCwwICsxLDI0OSBAQAorIyBsaWItcHJlZml4Lm00IHNlcmlhbCAxNAorZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDA1LCAyMDA4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitkbmwgQUNfTElCX1BSRUZJWCBhZGRzIHRvIHRoZSBDUFBGTEFHUyBhbmQgTERGTEFHUyB0aGUgZmxhZ3MgdGhhdCBhcmUgbmVlZGVkCitkbmwgdG8gYWNjZXNzIHByZXZpb3VzbHkgaW5zdGFsbGVkIGxpYnJhcmllcy4gVGhlIGJhc2ljIGFzc3VtcHRpb24gaXMgdGhhdAorZG5sIGEgdXNlciB3aWxsIHdhbnQgcGFja2FnZXMgdG8gdXNlIG90aGVyIHBhY2thZ2VzIGhlIHByZXZpb3VzbHkgaW5zdGFsbGVkCitkbmwgd2l0aCB0aGUgc2FtZSAtLXByZWZpeCBvcHRpb24uCitkbmwgVGhpcyBtYWNybyBpcyBub3QgbmVlZGVkIGlmIG9ubHkgQUNfTElCX0xJTktGTEFHUyBpcyB1c2VkIHRvIGxvY2F0ZQorZG5sIGxpYnJhcmllcywgYnV0IGlzIG90aGVyd2lzZSB2ZXJ5IGNvbnZlbmllbnQuCitBQ19ERUZVTihbQUNfTElCX1BSRUZJWF0sCitbCisgIEFDX0JFRk9SRShbJDBdLCBbQUNfTElCX0xJTktGTEFHU10pCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgZG5sIEJ5IGRlZmF1bHQsIGxvb2sgaW4gJGluY2x1ZGVkaXIgYW5kICRsaWJkaXIuCisgIHVzZV9hZGRpdGlvbmFsPXllcworICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWworICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKKyAgXSkKKyAgQUNfQVJHX1dJVEgoW2xpYi1wcmVmaXhdLAorW1sgIC0td2l0aC1saWItcHJlZml4Wz1ESVJdIHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCisgIC0td2l0aG91dC1saWItcHJlZml4ICAgIGRvbid0IHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIGluY2x1ZGVkaXIgYW5kIGxpYmRpcl1dLAorWworICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWG5vIjsgdGhlbgorICAgICAgdXNlX2FkZGl0aW9uYWw9bm8KKyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlgiOyB0aGVuCisgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorICAgICAgICBdKQorICAgICAgZWxzZQorICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCisgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iCisgICAgICBmaQorICAgIGZpCitdKQorICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgorICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkQ1BQRkxBR1MuCisgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2luY2x1ZGUsCisgICAgZG5sICAgMi4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJENQUEZMQUdTLAorICAgIGRubCAgIDMuIGlmIGl0J3MgL3Vzci9sb2NhbC9pbmNsdWRlIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAorICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgorICAgICAgaGF2ZWl0PQorICAgICAgZm9yIHggaW4gJENQUEZMQUdTOyBkbworICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkQ1BQRkxBR1MuCisgICAgICAgICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30ke0NQUEZMQUdTOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMREZMQUdTLgorICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0CisgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9saWIsCisgICAgZG5sICAgMi4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJExERkxBR1MsCisgICAgZG5sICAgMy4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKKyAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgorICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCisgICAgICBoYXZlaXQ9CisgICAgICBmb3IgeCBpbiAkTERGTEFHUzsgZG8KKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTERGTEFHUy4KKyAgICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30ke0xERkxBR1M6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKK10pCisKK2RubCBBQ19MSUJfUFJFUEFSRV9QUkVGSVggY3JlYXRlcyB2YXJpYWJsZXMgYWNsX2ZpbmFsX3ByZWZpeCwKK2RubCBhY2xfZmluYWxfZXhlY19wcmVmaXgsIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byB3aGljaCAkcHJlZml4IGFuZAorZG5sICRleGVjX3ByZWZpeCB3aWxsIGV4cGFuZCBhdCB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0LgorQUNfREVGVU4oW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0sCitbCisgIGRubCBVbmZvcnR1bmF0ZWx5LCBwcmVmaXggYW5kIGV4ZWNfcHJlZml4IGdldCBvbmx5IGZpbmFsbHkgZGV0ZXJtaW5lZAorICBkbmwgYXQgdGhlIGVuZCBvZiBjb25maWd1cmUuCisgIGlmIHRlc3QgIlgkcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KKyAgICBhY2xfZmluYWxfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgIGVsc2UKKyAgICBhY2xfZmluYWxfcHJlZml4PSIkcHJlZml4IgorICBmaQorICBpZiB0ZXN0ICJYJGV4ZWNfcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KKyAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKyAgZWxzZQorICAgIGFjbF9maW5hbF9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBmaQorICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGV2YWwgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PVwiJGFjbF9maW5hbF9leGVjX3ByZWZpeFwiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKK10pCisKK2RubCBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW3N0YXRlbWVudF0pIGV2YWx1YXRlcyBzdGF0ZW1lbnQsIHdpdGggdGhlCitkbmwgdmFyaWFibGVzIHByZWZpeCBhbmQgZXhlY19wcmVmaXggYm91bmQgdG8gdGhlIHZhbHVlcyB0aGV5IHdpbGwgaGF2ZQorZG5sIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCitBQ19ERUZVTihbQUNfTElCX1dJVEhfRklOQUxfUFJFRklYXSwKK1sKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKyAgJDEKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorXSkKKworZG5sIEFDX0xJQl9QUkVQQVJFX01VTFRJTElCIGNyZWF0ZXMKK2RubCAtIGEgdmFyaWFibGUgYWNsX2xpYmRpcnN0ZW0sIGNvbnRhaW5pbmcgdGhlIGJhc2VuYW1lIG9mIHRoZSBsaWJkaXIsIGVpdGhlcgorZG5sICAgImxpYiIgb3IgImxpYjY0IiBvciAibGliLzY0IiwKK2RubCAtIGEgdmFyaWFibGUgYWNsX2xpYmRpcnN0ZW0yLCBhcyBhIHNlY29uZGFyeSBwb3NzaWJsZSB2YWx1ZSBmb3IKK2RubCAgIGFjbF9saWJkaXJzdGVtLCBlaXRoZXIgdGhlIHNhbWUgYXMgYWNsX2xpYmRpcnN0ZW0gb3IgImxpYi9zcGFyY3Y5IiBvcgorZG5sICAgImxpYi9hbWQ2NCIuCitBQ19ERUZVTihbQUNfTElCX1BSRVBBUkVfTVVMVElMSUJdLAorWworICBkbmwgVGhlcmUgaXMgbm8gZm9ybWFsIHN0YW5kYXJkIHJlZ2FyZGluZyBsaWIgYW5kIGxpYjY0LgorICBkbmwgT24gZ2xpYmMgc3lzdGVtcywgdGhlIGN1cnJlbnQgcHJhY3RpY2UgaXMgdGhhdCBvbiBhIHN5c3RlbSBzdXBwb3J0aW5nCisgIGRubCAzMi1iaXQgYW5kIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXRzIG9yIEFCSXMsIDY0LWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIKKyAgZG5sICRwcmVmaXgvbGliNjQgYW5kIDMyLWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIgJHByZWZpeC9saWIuIFdlIGRldGVybWluZQorICBkbmwgdGhlIGNvbXBpbGVyJ3MgZGVmYXVsdCBtb2RlIGJ5IGxvb2tpbmcgYXQgdGhlIGNvbXBpbGVyJ3MgbGlicmFyeSBzZWFyY2gKKyAgZG5sIHBhdGguIElmIGF0IGxlYXN0IG9uZSBvZiBpdHMgZWxlbWVudHMgZW5kcyBpbiAvbGliNjQgb3IgcG9pbnRzIHRvIGEKKyAgZG5sIGRpcmVjdG9yeSB3aG9zZSBhYnNvbHV0ZSBwYXRobmFtZSBlbmRzIGluIC9saWI2NCwgd2UgYXNzdW1lIGEgNjQtYml0IEFCSS4KKyAgZG5sIE90aGVyd2lzZSB3ZSB1c2UgdGhlIGRlZmF1bHQsIG5hbWVseSAibGliIi4KKyAgZG5sIE9uIFNvbGFyaXMgc3lzdGVtcywgdGhlIGN1cnJlbnQgcHJhY3RpY2UgaXMgdGhhdCBvbiBhIHN5c3RlbSBzdXBwb3J0aW5nCisgIGRubCAzMi1iaXQgYW5kIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXRzIG9yIEFCSXMsIDY0LWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIKKyAgZG5sICRwcmVmaXgvbGliLzY0ICh3aGljaCBpcyBhIHN5bWxpbmsgdG8gZWl0aGVyICRwcmVmaXgvbGliL3NwYXJjdjkgb3IKKyAgZG5sICRwcmVmaXgvbGliL2FtZDY0KSBhbmQgMzItYml0IGxpYnJhcmllcyBnbyB1bmRlciAkcHJlZml4L2xpYi4KKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorICBBQ19SRVFVSVJFKFtnbF9IT1NUX0NQVV9DX0FCSV8zMkJJVF0pCisKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgc29sYXJpcyopCisgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIDY0LWJpdCBob3N0XSwgW2dsX2N2X3NvbGFyaXNfNjRiaXRdLAorICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX0xQNjQKKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2dsX2N2X3NvbGFyaXNfNjRiaXQ9eWVzXSwKKyAgICAgICAgICAgW2dsX2N2X3NvbGFyaXNfNjRiaXQ9bm9dKQorICAgICAgICBdKTs7CisgIGVzYWMKKworICBkbmwgQWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIHJlc3VsdCBieSBzZXR0aW5nIGFjbF9jdl9saWJkaXJzdGVtcy4KKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB0aGUgY29tbW9uIHN1ZmZpeGVzIG9mIGRpcmVjdG9yaWVzIGluIHRoZSBsaWJyYXJ5IHNlYXJjaCBwYXRoXSwKKyAgICBbYWNsX2N2X2xpYmRpcnN0ZW1zXSwKKyAgICBbYWNsX2xpYmRpcnN0ZW09bGliCisgICAgIGFjbF9saWJkaXJzdGVtMj0KKyAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBkbmwgU2VlIFNvbGFyaXMgMTAgU29mdHdhcmUgRGV2ZWxvcGVyIENvbGxlY3Rpb24gPiBTb2xhcmlzIDY0LWJpdCBEZXZlbG9wZXIncyBHdWlkZSA+IFRoZSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudAorICAgICAgICAgZG5sIDxodHRwczovL2RvY3Mub3JhY2xlLmNvbS9jZC9FMTkyNTMtMDEvODE2LTUxMzgvZGV2LWVudi9pbmRleC5odG1sPi4KKyAgICAgICAgIGRubCAiUG9ydGFibGUgTWFrZWZpbGVzIHNob3VsZCByZWZlciB0byBhbnkgbGlicmFyeSBkaXJlY3RvcmllcyB1c2luZyB0aGUgNjQgc3ltYm9saWMgbGluay4iCisgICAgICAgICBkbmwgQnV0IHdlIHdhbnQgdG8gcmVjb2duaXplIHRoZSBzcGFyY3Y5IG9yIGFtZDY0IHN1YmRpcmVjdG9yeSBhbHNvIGlmIHRoZQorICAgICAgICAgZG5sIHN5bWxpbmsgaXMgbWlzc2luZywgc28gd2Ugc2V0IGFjbF9saWJkaXJzdGVtMiB0b28uCisgICAgICAgICBpZiB0ZXN0ICRnbF9jdl9zb2xhcmlzXzY0Yml0ID0geWVzOyB0aGVuCisgICAgICAgICAgIGFjbF9saWJkaXJzdGVtPWxpYi82NAorICAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgICAgICAgICAgc3BhcmMqKSAgICAgICAgYWNsX2xpYmRpcnN0ZW0yPWxpYi9zcGFyY3Y5IDs7CisgICAgICAgICAgICAgaSo4NiB8IHg4Nl82NCkgYWNsX2xpYmRpcnN0ZW0yPWxpYi9hbWQ2NCA7OworICAgICAgICAgICBlc2FjCisgICAgICAgICBmaQorICAgICAgICAgOzsKKyAgICAgICAqKQorICAgICAgICAgZG5sIElmICRDQyBnZW5lcmF0ZXMgY29kZSBmb3IgYSAzMi1iaXQgQUJJLCB0aGUgbGlicmFyaWVzIGFyZQorICAgICAgICAgZG5sIHN1cmVseSB1bmRlciAkcHJlZml4L2xpYiwgbm90ICRwcmVmaXgvbGliNjQuCisgICAgICAgICBpZiB0ZXN0ICIkSE9TVF9DUFVfQ19BQklfMzJCSVQiICE9IHllczsgdGhlbgorICAgICAgICAgICBkbmwgVGhlIHJlc3VsdCBpcyBhIHByb3BlcnR5IG9mIHRoZSBzeXN0ZW0uIEhvd2V2ZXIsIG5vbi1zeXN0ZW0KKyAgICAgICAgICAgZG5sIGNvbXBpbGVycyBzb21ldGltZXMgaGF2ZSBvZGQgbGlicmFyeSBzZWFyY2ggcGF0aHMuIFRoZXJlZm9yZQorICAgICAgICAgICBkbmwgcHJlZmVyIGFza2luZyAvdXNyL2Jpbi9nY2MsIGlmIGF2YWlsYWJsZSwgcmF0aGVyIHRoYW4gJENDLgorICAgICAgICAgICBzZWFyY2hwYXRoPWAoaWYgdGVzdCAtZiAvdXNyL2Jpbi9nY2MgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgTENfQUxMPUMgL3Vzci9iaW4vZ2NjIC1wcmludC1zZWFyY2gtZGlycyA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTENfQUxMPUMgL3Vzci9iaW4vZ2NjIC1wcmludC1zZWFyY2gtZGlyczsgXAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIExDX0FMTD1DICRDQyAtcHJpbnQtc2VhcmNoLWRpcnM7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpKSAyPi9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1uIC1lICdzLF5saWJyYXJpZXM6ICwscCcgfCBzZWQgLWUgJ3MsXj0sLCdgCisgICAgICAgICAgIGlmIHRlc3QgLW4gIiRzZWFyY2hwYXRoIjsgdGhlbgorICAgICAgICAgICAgIGFjbF9zYXZlX0lGUz0iJHtJRlM9IAl9IjsgSUZTPSI6IgorICAgICAgICAgICAgIGZvciBzZWFyY2hkaXIgaW4gJHNlYXJjaHBhdGg7IGRvCisgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkc2VhcmNoZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAgICAgICovbGliNjQvIHwgKi9saWI2NCApIGFjbF9saWJkaXJzdGVtPWxpYjY0IDs7CisgICAgICAgICAgICAgICAgICAgKi8uLi8gfCAqLy4uICkKKyAgICAgICAgICAgICAgICAgICAgICMgQmV0dGVyIGlnbm9yZSBkaXJlY3RvcmllcyBvZiB0aGlzIGZvcm0uIFRoZXkgYXJlIG1pc2xlYWRpbmcuCisgICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgICopIHNlYXJjaGRpcj1gY2QgIiRzZWFyY2hkaXIiICYmIHB3ZGAKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgKi9saWI2NCApIGFjbF9saWJkaXJzdGVtPWxpYjY0IDs7CisgICAgICAgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICBJRlM9IiRhY2xfc2F2ZV9JRlMiCisgICAgICAgICAgIGZpCisgICAgICAgICBmaQorICAgICAgICAgOzsKKyAgICAgZXNhYworICAgICB0ZXN0IC1uICIkYWNsX2xpYmRpcnN0ZW0yIiB8fCBhY2xfbGliZGlyc3RlbTI9IiRhY2xfbGliZGlyc3RlbSIKKyAgICAgYWNsX2N2X2xpYmRpcnN0ZW1zPSIkYWNsX2xpYmRpcnN0ZW0sJGFjbF9saWJkaXJzdGVtMiIKKyAgICBdKQorICAjIERlY29tcG9zZSBhY2xfY3ZfbGliZGlyc3RlbXMgaW50byBhY2xfbGliZGlyc3RlbSBhbmQgYWNsX2xpYmRpcnN0ZW0yLgorICBhY2xfbGliZGlyc3RlbT1gZWNobyAiJGFjbF9jdl9saWJkaXJzdGVtcyIgfCBzZWQgLWUgJ3MvLC4qLy8nYAorICBhY2xfbGliZGlyc3RlbTI9YGVjaG8gIiRhY2xfY3ZfbGliZGlyc3RlbXMiIHwgc2VkIC1lICcvLC9zLy4qLC8vJ2AKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL25scy5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbmxzLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MmY2MTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL25scy5tNApAQCAtMCwwICsxLDMyIEBACisjIG5scy5tNCBzZXJpYWwgNSAoZ2V0dGV4dC0wLjE4KQorZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzLCAyMDA1LTIwMDYsIDIwMDgtMjAxNCwgMjAxNiwgMjAxOSBGcmVlIFNvZnR3YXJlCitkbmwgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorZG5sIGZ1bmN0aW9uYWxpdHkuCitkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAorZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQorZG5sIGdldHRleHQgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgorZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCisKK0FDX1BSRVJFUShbMi41MF0pCisKK0FDX0RFRlVOKFtBTV9OTFNdLAorWworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgTkxTIGlzIHJlcXVlc3RlZF0pCisgIGRubCBEZWZhdWx0IGlzIGVuYWJsZWQgTkxTCisgIEFDX0FSR19FTkFCTEUoW25sc10sCisgICAgWyAgLS1kaXNhYmxlLW5scyAgICAgICAgICAgZG8gbm90IHVzZSBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydF0sCisgICAgVVNFX05MUz0kZW5hYmxldmFsLCBVU0VfTkxTPXllcykKKyAgQUNfTVNHX1JFU1VMVChbJFVTRV9OTFNdKQorICBBQ19TVUJTVChbVVNFX05MU10pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9wby5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcG8ubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzNzkyZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcG8ubTQKQEAgLTAsMCArMSw0NTAgQEAKKyMgcG8ubTQgc2VyaWFsIDMwIChnZXR0ZXh0LTAuMjApCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTQsIDIwMTYsIDIwMTgtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBBdXRob3JzOgorZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgorCitBQ19QUkVSRVEoWzIuNjBdKQorCitkbmwgQ2hlY2tzIGZvciBhbGwgcHJlcmVxdWlzaXRlcyBvZiB0aGUgcG8gc3ViZGlyZWN0b3J5LgorQUNfREVGVU4oW0FNX1BPX1NVQkRJUlNdLAorWworICBBQ19SRVFVSVJFKFtBQ19QUk9HX01BS0VfU0VUXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19NS0RJUl9QXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19TRURdKWRubAorICBBQ19SRVFVSVJFKFtBTV9OTFNdKWRubAorCisgIGRubCBSZWxlYXNlIHZlcnNpb24gb2YgdGhlIGdldHRleHQgbWFjcm9zLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQKKyAgZG5sIHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgcG8vTWFrZWZpbGUuaW4uaW4gYXJlIGluIHN5bmMuCisgIEFDX1NVQlNUKFtHRVRURVhUX01BQ1JPX1ZFUlNJT05dLCBbMC4yMF0pCisKKyAgZG5sIFBlcmZvcm0gdGhlIGZvbGxvd2luZyB0ZXN0cyBhbHNvIGlmIC0tZGlzYWJsZS1ubHMgaGFzIGJlZW4gZ2l2ZW4sCisgIGRubCBiZWNhdXNlIHRoZXkgYXJlIG5lZWRlZCBmb3IgIm1ha2UgZGlzdCIgdG8gd29yay4KKworICBkbmwgU2VhcmNoIGZvciBHTlUgbXNnZm10IGluIHRoZSBQQVRILgorICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyBtc2dmbXQgYW5kIGVhcmx5IEdOVSBtc2dmbXQgdmVyc2lvbnMuCisgIGRubCBUaGUgc2Vjb25kIHRlc3QgZXhjbHVkZXMgRnJlZUJTRCBtc2dmbXQuCisgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoTVNHRk1ULCBtc2dmbXQsCisgICAgWyRhY19kaXIvJGFjX3dvcmQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCA+Jl1BU19NRVNTQUdFX0xPR19GRFsgMj4mMSAmJgorICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSldLAorICAgIDopCisgIEFDX1BBVEhfUFJPRyhbR01TR0ZNVF0sIFtnbXNnZm10XSwgWyRNU0dGTVRdKQorCisgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIG1zZ2ZtdCA+PSAwLjE1LgorY2hhbmdlcXVvdGUoLClkbmwKKyAgY2FzZSBgJEdNU0dGTVQgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbgorICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTRdIHwgMC4xWzAtNF0uKikgR01TR0ZNVF8wMTU9OiA7OworICAgICopIEdNU0dGTVRfMDE1PSRHTVNHRk1UIDs7CisgIGVzYWMKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgQUNfU1VCU1QoW0dNU0dGTVRfMDE1XSkKKworICBkbmwgU2VhcmNoIGZvciBHTlUgeGdldHRleHQgMC4xMiBvciBuZXdlciBpbiB0aGUgUEFUSC4KKyAgZG5sIFRoZSBmaXJzdCB0ZXN0IGV4Y2x1ZGVzIFNvbGFyaXMgeGdldHRleHQgYW5kIGVhcmx5IEdOVSB4Z2V0dGV4dCB2ZXJzaW9ucy4KKyAgZG5sIFRoZSBzZWNvbmQgdGVzdCBleGNsdWRlcyBGcmVlQlNEIHhnZXR0ZXh0LgorICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKFhHRVRURVhULCB4Z2V0dGV4dCwKKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCA+Jl1BU19NRVNTQUdFX0xPR19GRFsgMj4mMSAmJgorICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpXSwKKyAgICA6KQorICBkbmwgUmVtb3ZlIGxlZnRvdmVyIGZyb20gRnJlZUJTRCB4Z2V0dGV4dCBjYWxsLgorICBybSAtZiBtZXNzYWdlcy5wbworCisgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIHhnZXR0ZXh0ID49IDAuMTUuCitjaGFuZ2VxdW90ZSgsKWRubAorICBjYXNlIGAkWEdFVFRFWFQgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbgorICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTRdIHwgMC4xWzAtNF0uKikgWEdFVFRFWFRfMDE1PTogOzsKKyAgICAqKSBYR0VUVEVYVF8wMTU9JFhHRVRURVhUIDs7CisgIGVzYWMKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgQUNfU1VCU1QoW1hHRVRURVhUXzAxNV0pCisKKyAgZG5sIFNlYXJjaCBmb3IgR05VIG1zZ21lcmdlIDAuMTEgb3IgbmV3ZXIgaW4gdGhlIFBBVEguCisgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoTVNHTUVSR0UsIG1zZ21lcmdlLAorICAgIFskYWNfZGlyLyRhY193b3JkIC0tdXBkYXRlIC1xIC9kZXYvbnVsbCAvZGV2L251bGwgPiZdQVNfTUVTU0FHRV9MT0dfRkRbIDI+JjFdLCA6KQorCisgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIG1zZ21lcmdlID49IDAuMjAuCisgIGlmIExDX0FMTD1DICRNU0dNRVJHRSAtLWhlbHAgfCBncmVwICcgLS1mb3ItbXNnZm10ICcgPi9kZXYvbnVsbDsgdGhlbgorICAgIE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OPSctLWZvci1tc2dmbXQnCisgIGVsc2UKKyAgICBkbmwgVGVzdCB3aGV0aGVyIGl0IGlzIEdOVSBtc2dtZXJnZSA+PSAwLjEyLgorICAgIGlmIExDX0FMTD1DICRNU0dNRVJHRSAtLWhlbHAgfCBncmVwICcgLS1uby1mdXp6eS1tYXRjaGluZyAnID4vZGV2L251bGw7IHRoZW4KKyAgICAgIE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OPSctLW5vLWZ1enp5LW1hdGNoaW5nIC0tbm8tbG9jYXRpb24gLS1xdWlldCcKKyAgICBlbHNlCisgICAgICBkbmwgV2l0aCB0aGVzZSBvbGQgdmVyc2lvbnMsICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT04pIGlzCisgICAgICBkbmwgc2xvdy4gQnV0IHRoaXMgaXMgbm90IGEgYmlnIHByb2JsZW0sIGFzIHN1Y2ggb2xkIGdldHRleHQgdmVyc2lvbnMgYXJlCisgICAgICBkbmwgaGFyZGx5IGluIHVzZSBhbnkgbW9yZS4KKyAgICAgIE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OPSctLW5vLWxvY2F0aW9uIC0tcXVpZXQnCisgICAgZmkKKyAgZmkKKyAgQUNfU1VCU1QoW01TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OXSkKKworICBkbmwgU3VwcG9ydCBmb3IgQU1fWEdFVFRFWFRfT1BUSU9OLgorICB0ZXN0IC1uICIke1hHRVRURVhUX0VYVFJBX09QVElPTlMrc2V0fSIgfHwgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0KKyAgQUNfU1VCU1QoW1hHRVRURVhUX0VYVFJBX09QVElPTlNdKQorCisgIEFDX0NPTkZJR19DT01NQU5EUyhbcG8tZGlyZWN0b3JpZXNdLCBbWworICAgIGZvciBhY19maWxlIGluICRDT05GSUdfRklMRVM7IGRvCisgICAgICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iCisgICAgICBjYXNlICIkYWNfZmlsZSIgaW4KKyAgICAgICAgKjoqKSBhY19maWxlPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKKyAgICAgIGVzYWMKKyAgICAgICMgUE8gZGlyZWN0b3JpZXMgaGF2ZSBhIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBmcm9tIE1ha2VmaWxlLmluLmluLgorICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluICovTWFrZWZpbGUuaW4pCisgICAgICAgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLgorICAgICAgICBhY19kaXI9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlL1teL11bXi9dKiQlJSdgCisgICAgICAgIGFjX2Rpcl9zdWZmaXg9L2BlY2hvICIkYWNfZGlyInxzZWQgJ3MlXlwuLyUlJ2AKKyAgICAgICAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgifHNlZCAncyUvW14vXSolLi4vJWcnYAorICAgICAgICAjIEluIGF1dG9jb25mLTIuMTMgaXQgaXMgY2FsbGVkICRhY19naXZlbl9zcmNkaXIuCisgICAgICAgICMgSW4gYXV0b2NvbmYtMi41MCBpdCBpcyBjYWxsZWQgJHNyY2Rpci4KKyAgICAgICAgdGVzdCAtbiAiJGFjX2dpdmVuX3NyY2RpciIgfHwgYWNfZ2l2ZW5fc3JjZGlyPSIkc3JjZGlyIgorICAgICAgICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgICAgICAgIC4pICB0b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2AgOzsKKyAgICAgICAgICAvKikgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKKyAgICAgICAgICAqKSAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICAgICAgICBlc2FjCisgICAgICAgICMgVHJlYXQgYSBkaXJlY3RvcnkgYXMgYSBQTyBkaXJlY3RvcnkgaWYgYW5kIG9ubHkgaWYgaXQgaGFzIGEKKyAgICAgICAgIyBQT1RGSUxFUy5pbiBmaWxlLiBUaGlzIGFsbG93cyBwYWNrYWdlcyB0byBoYXZlIG11bHRpcGxlIFBPCisgICAgICAgICMgZGlyZWN0b3JpZXMgdW5kZXIgZGlmZmVyZW50IG5hbWVzIG9yIGluIGRpZmZlcmVudCBsb2NhdGlvbnMuCisgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiI7IHRoZW4KKyAgICAgICAgICBybSAtZiAiJGFjX2Rpci9QT1RGSUxFUyIKKyAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIgfHwgZWNobyAiY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIKKyAgICAgICAgICBndF90YWI9YHByaW50ZiAnXHQnYAorICAgICAgICAgIGNhdCAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIiB8IHNlZCAtZSAiL14jL2QiIC1lICIvXlsgJHtndF90YWJ9XSpcJC9kIiAtZSAicywuKiwgICAgICR0b3Bfc3JjZGlyLyYgXFxcXCwiIHwgc2VkIC1lICJcJHMvXCguKlwpIFxcXFwvXDEvIiA+ICIkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSJQT1RGSUxFUy5pbiIKKyAgICAgICAgICAjIEFMTF9MSU5HVUFTLCBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTIGRlcGVuZAorICAgICAgICAgICMgb24gJGFjX2RpciBidXQgZG9uJ3QgZGVwZW5kIG9uIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAjIHBhcmFtZXRlcnMuCisgICAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAjIFRoZSBMSU5HVUFTIGZpbGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgorICAgICAgICAgICAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhlbgorICAgICAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogc2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiIHx8IGVjaG8gInNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIgorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIEFMTF9MSU5HVUFTPWBzZWQgLWUgIi9eIy9kIiAtZSAicy8jLiovLyIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKKyAgICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSIkUE9NQUtFRklMRURFUFMgTElOR1VBUyIKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAjIFRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcyB3YXMgZ2l2ZW4gaW4gY29uZmlndXJlLmluLgorICAgICAgICAgICAgQUxMX0xJTkdVQVM9JE9CU09MRVRFX0FMTF9MSU5HVUFTCisgICAgICAgICAgZmkKKyAgICAgICAgICAjIENvbXB1dGUgUE9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnBvKQorICAgICAgICAgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCisgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5wby11cGRhdGUpCisgICAgICAgICAgIyBDb21wdXRlIERVTU1ZUE9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQorICAgICAgICAgICMgQ29tcHV0ZSBHTU9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLmdtbykKKyAgICAgICAgICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgICAgICAgICAgLikgc3JjZGlycHJlPSA7OworICAgICAgICAgICAgKikgc3JjZGlycHJlPSckKHNyY2RpcikvJyA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICBQT0ZJTEVTPQorICAgICAgICAgIFVQREFURVBPRklMRVM9CisgICAgICAgICAgRFVNTVlQT0ZJTEVTPQorICAgICAgICAgIEdNT0ZJTEVTPQorICAgICAgICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgICAgICAgIFBPRklMRVM9IiRQT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5wbyIKKyAgICAgICAgICAgIFVQREFURVBPRklMRVM9IiRVUERBVEVQT0ZJTEVTICRsYW5nLnBvLXVwZGF0ZSIKKyAgICAgICAgICAgIERVTU1ZUE9GSUxFUz0iJERVTU1ZUE9GSUxFUyAkbGFuZy5ub3AiCisgICAgICAgICAgICBHTU9GSUxFUz0iJEdNT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5nbW8iCisgICAgICAgICAgZG9uZQorICAgICAgICAgICMgQ0FUQUxPR1MgZGVwZW5kcyBvbiBib3RoICRhY19kaXIgYW5kIHRoZSB1c2VyJ3MgTElOR1VBUworICAgICAgICAgICMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisgICAgICAgICAgSU5TVF9MSU5HVUFTPQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRBTExfTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgIGZvciBwcmVzZW50bGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICAgICAgICAgIHVzZWl0PW5vCisgICAgICAgICAgICAgIGlmIHRlc3QgIiVVTlNFVCUiICE9ICIkTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkTElOR1VBUyIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRBTExfTElOR1VBUyIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbworICAgICAgICAgICAgICAgICMgVXNlIHRoZSBwcmVzZW50bGFuZyBjYXRhbG9nIGlmIGRlc2lyZWRsYW5nIGlzCisgICAgICAgICAgICAgICAgIyAgIGEuIGVxdWFsIHRvIHByZXNlbnRsYW5nLCBvcgorICAgICAgICAgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAorICAgICAgICAgICAgICAgICMgICAgICBwcmVzZW50bGFuZyBjYW4gYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciBtZXNzYWdlcworICAgICAgICAgICAgICAgICMgICAgICB3aGljaCBhcmUgbm90IHRyYW5zbGF0ZWQgaW4gdGhlIGRlc2lyZWRsYW5nIGNhdGFsb2cpLgorICAgICAgICAgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KKyAgICAgICAgICAgICAgICAgICIkcHJlc2VudGxhbmciKikgdXNlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgaWYgdGVzdCAkdXNlaXQgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICBJTlNUX0xJTkdVQVM9IiRJTlNUX0xJTkdVQVMgJHByZXNlbnRsYW5nIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgQ0FUQUxPR1M9CisgICAgICAgICAgaWYgdGVzdCAtbiAiJElOU1RfTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgIGZvciBsYW5nIGluICRJTlNUX0xJTkdVQVM7IGRvCisgICAgICAgICAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiCisgICAgICAgICAgc2VkIC1lICIvXlBPVEZJTEVTID0vciAkYWNfZGlyL1BPVEZJTEVTIiAtZSAiL14jIE1ha2V2YXJzL3IgJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL01ha2V2YXJzIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QENBVEFMT0dTQHwkQ0FUQUxPR1N8ZyIgLWUgInN8QFBPTUFLRUZJTEVERVBTQHwkUE9NQUtFRklMRURFUFN8ZyIgIiRhY19kaXIvTWFrZWZpbGUuaW4iID4gIiRhY19kaXIvTWFrZWZpbGUiCisgICAgICAgICAgZm9yIGYgaW4gIiRhY19naXZlbl9zcmNkaXIvJGFjX2RpciIvUnVsZXMtKjsgZG8KKyAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgorICAgICAgICAgICAgICBjYXNlICIkZiIgaW4KKyAgICAgICAgICAgICAgICAqLm9yaWcgfCAqLmJhayB8ICp+KSA7OworICAgICAgICAgICAgICAgICopIGNhdCAiJGYiID4+ICIkYWNfZGlyL01ha2VmaWxlIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBmaQorICAgICAgICAgIGRvbmUKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBkb25lXV0sCisgICBbIyBDYXB0dXJlIHRoZSB2YWx1ZSBvZiBvYnNvbGV0ZSBBTExfTElOR1VBUyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZQorICAgICMgUE9GSUxFUywgVVBEQVRFUE9GSUxFUywgRFVNTVlQT0ZJTEVTLCBHTU9GSUxFUywgQ0FUQUxPR1MuCisgICAgT0JTT0xFVEVfQUxMX0xJTkdVQVM9IiRBTExfTElOR1VBUyIKKyAgICAjIENhcHR1cmUgdGhlIHZhbHVlIG9mIExJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUgQ0FUQUxPR1MuCisgICAgTElOR1VBUz0iJHtMSU5HVUFTLSVVTlNFVCV9IgorICAgXSkKK10pCisKK2RubCBQb3N0cHJvY2Vzc2VzIGEgTWFrZWZpbGUgaW4gYSBkaXJlY3RvcnkgY29udGFpbmluZyBQTyBmaWxlcy4KK0FDX0RFRlVOKFtBTV9QT1NUUFJPQ0VTU19QT19NQUtFRklMRV0sCitbCisgICMgV2hlbiB0aGlzIGNvZGUgaXMgcnVuLCBpbiBjb25maWcuc3RhdHVzLCB0d28gdmFyaWFibGVzIGhhdmUgYWxyZWFkeSBiZWVuCisgICMgc2V0OgorICAjIC0gT0JTT0xFVEVfQUxMX0xJTkdVQVMgaXMgdGhlIHZhbHVlIG9mIExJTkdVQVMgc2V0IGluIGNvbmZpZ3VyZS5pbiwKKyAgIyAtIExJTkdVQVMgaXMgdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMSU5HVUFTIGF0IGNvbmZpZ3VyZQorICAjICAgdGltZS4KKworY2hhbmdlcXVvdGUoLClkbmwKKyAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCisgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKKyAgYWNfZGlyX3N1ZmZpeD0vYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYAorICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydgCisgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KKyAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgorICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIiCisgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCisgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OworICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7CisgIGVzYWMKKworICAjIEZpbmQgYSB3YXkgdG8gZWNobyBzdHJpbmdzIHdpdGhvdXQgaW50ZXJwcmV0aW5nIGJhY2tzbGFzaC4KKyAgaWYgdGVzdCAiWGAoZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KKyAgICBndF9lY2hvPSdlY2hvJworICBlbHNlCisgICAgaWYgdGVzdCAiWGAocHJpbnRmICclc1xuJyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KKyAgICAgIGd0X2VjaG89J3ByaW50ZiAlc1xuJworICAgIGVsc2UKKyAgICAgIGVjaG9fZnVuYyAoKSB7CisgICAgICAgIGNhdCA8PEVPVAorJCoKK0VPVAorICAgICAgfQorICAgICAgZ3RfZWNobz0nZWNob19mdW5jJworICAgIGZpCisgIGZpCisKKyAgIyBBIHNlZCBzY3JpcHQgdGhhdCBleHRyYWN0cyB0aGUgdmFsdWUgb2YgVkFSSUFCTEUgZnJvbSBhIE1ha2VmaWxlLgorICB0YWI9YHByaW50ZiAnXHQnYAorICBzZWRfeF92YXJpYWJsZT0nCisjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCit4CitzL1AvUC8KK3gKK3RhCisjIFllcyBpdCB3YXMgZW1wdHkuIExvb2sgaWYgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbi4KKy9eWyciJHt0YWJ9IicgXSpWQVJJQUJMRVsnIiR7dGFifSInIF0qPS97CisgICMgU2VlbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbi4KKyAgcy9eWyciJHt0YWJ9IicgXSpWQVJJQUJMRVsnIiR7dGFifSInIF0qPS8vCisgIGJhCit9CitiZAorOmEKKyMgSGVyZSB3ZSBhcmUgcHJvY2Vzc2luZyBhIGxpbmUgZnJvbSB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbi4KKyMgUmVtb3ZlIGNvbW1lbnQsIG1vcmUgcHJlY2lzZWx5IHJlcGxhY2UgaXQgd2l0aCBhIHNwYWNlLgorcy8jLiokLyAvCisjIFNlZSBpZiB0aGUgbGluZSBlbmRzIGluIGEgYmFja3NsYXNoLgordGIKKzpiCitzL1xcJC8vCisjIFByaW50IHRoZSBsaW5lLCB3aXRob3V0IHRoZSB0cmFpbGluZyBiYWNrc2xhc2guCitwCit0YworIyBUaGVyZSB3YXMgbm8gdHJhaWxpbmcgYmFja3NsYXNoLiBUaGUgZW5kIG9mIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGlzCisjIHJlYWNoZWQuIENsZWFyIHRoZSBob2xkIHNwYWNlLgorcy9eLiokLy8KK3gKK2JkCis6YworIyBBIHRyYWlsaW5nIGJhY2tzbGFzaCBtZWFucyB0aGF0IHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGNvbnRpbnVlcyBpbiB0aGUKKyMgbmV4dCBsaW5lLiBQdXQgYSBub25lbXB0eSBzdHJpbmcgaW50byB0aGUgaG9sZCBzcGFjZSB0byBpbmRpY2F0ZSB0aGlzLgorcy9eLiokL1AvCit4Cis6ZAorJworY2hhbmdlcXVvdGUoWyxdKWRubAorCisgICMgU2V0IFBPVEZJTEVTIHRvIHRoZSB2YWx1ZSBvZiB0aGUgTWFrZWZpbGUgdmFyaWFibGUgUE9URklMRVMuCisgIHNlZF94X1BPVEZJTEVTPWAkZ3RfZWNobyAiJHNlZF94X3ZhcmlhYmxlIiB8IHNlZCAtZSAnL14gKiMvZCcgLWUgJ3MvVkFSSUFCTEUvUE9URklMRVMvZydgCisgIFBPVEZJTEVTPWBzZWQgLW4gLWUgIiRzZWRfeF9QT1RGSUxFUyIgPCAiJGFjX2ZpbGUiYAorICAjIENvbXB1dGUgUE9URklMRVNfREVQUyBhcworICAjICAgJChmb3JlYWNoIGZpbGUsICQoUE9URklMRVMpLCAkKHRvcF9zcmNkaXIpLyQoZmlsZSkpCisgIFBPVEZJTEVTX0RFUFM9CisgIGZvciBmaWxlIGluICRQT1RGSUxFUzsgZG8KKyAgICBQT1RGSUxFU19ERVBTPSIkUE9URklMRVNfREVQUyAiJyQodG9wX3NyY2RpcikvJyIkZmlsZSIKKyAgZG9uZQorICBQT01BS0VGSUxFREVQUz0iIgorCisgIGlmIHRlc3QgLW4gIiRPQlNPTEVURV9BTExfTElOR1VBUyI7IHRoZW4KKyAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogc2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiIHx8IGVjaG8gInNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIgorICBmaQorICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KKyAgICAjIFRoZSBMSU5HVUFTIGZpbGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgorICAgIEFMTF9MSU5HVUFTPWBzZWQgLWUgIi9eIy9kIiAtZSAicy8jLiovLyIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKKyAgICBQT01BS0VGSUxFREVQUz0iJFBPTUFLRUZJTEVERVBTIExJTkdVQVMiCisgIGVsc2UKKyAgICAjIFNldCBBTExfTElOR1VBUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIExJTkdVQVMuCisgICAgc2VkX3hfTElOR1VBUz1gJGd0X2VjaG8gIiRzZWRfeF92YXJpYWJsZSIgfCBzZWQgLWUgJy9eICojL2QnIC1lICdzL1ZBUklBQkxFL0xJTkdVQVMvZydgCisgICAgQUxMX0xJTkdVQVM9YHNlZCAtbiAtZSAiJHNlZF94X0xJTkdVQVMiIDwgIiRhY19maWxlImAKKyAgZmkKKyAgIyBDb21wdXRlIFBPRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucG8pCisgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQorICAjIENvbXB1dGUgRFVNTVlQT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQorICAjIENvbXB1dGUgR01PRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykuZ21vKQorICAjIENvbXB1dGUgUFJPUEVSVElFU0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKERPTUFJTilfJChsYW5nKS5wcm9wZXJ0aWVzKQorICAjIENvbXB1dGUgQ0xBU1NGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChET01BSU4pXyQobGFuZykuY2xhc3MpCisgICMgQ29tcHV0ZSBRTUZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnFtKQorICAjIENvbXB1dGUgTVNHRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoZnJvYiAkKGxhbmcpKS5tc2cpCisgICMgQ29tcHV0ZSBSRVNPVVJDRVNETExGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChmcm9iICQobGFuZykpLyQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsKQorICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgIC4pIHNyY2RpcnByZT0gOzsKKyAgICAqKSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7CisgIGVzYWMKKyAgUE9GSUxFUz0KKyAgVVBEQVRFUE9GSUxFUz0KKyAgRFVNTVlQT0ZJTEVTPQorICBHTU9GSUxFUz0KKyAgUFJPUEVSVElFU0ZJTEVTPQorICBDTEFTU0ZJTEVTPQorICBRTUZJTEVTPQorICBNU0dGSUxFUz0KKyAgUkVTT1VSQ0VTRExMRklMRVM9CisgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCisgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgorICAgIERVTU1ZUE9GSUxFUz0iJERVTU1ZUE9GSUxFUyAkbGFuZy5ub3AiCisgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgorICAgIFBST1BFUlRJRVNGSUxFUz0iJFBST1BFUlRJRVNGSUxFUyBcJChzcmNkaXIpL1wkKERPTUFJTilfJGxhbmcucHJvcGVydGllcyIKKyAgICBDTEFTU0ZJTEVTPSIkQ0xBU1NGSUxFUyBcJChzcmNkaXIpL1wkKERPTUFJTilfJGxhbmcuY2xhc3MiCisgICAgUU1GSUxFUz0iJFFNRklMRVMgJHNyY2RpcnByZSRsYW5nLnFtIgorICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCisgICAgTVNHRklMRVM9IiRNU0dGSUxFUyAkc3JjZGlycHJlJGZyb2JiZWRsYW5nLm1zZyIKKyAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZycgLWUgJ3MvXnNyLUNTL3NyLVNQLycgLWUgJ3MvQGxhdGluJC8tTGF0bi8nIC1lICdzL0BjeXJpbGxpYyQvLUN5cmwvJyAtZSAncy9ec3ItU1AkL3NyLVNQLUxhdG4vJyAtZSAncy9edXotVVokL3V6LVVaLUxhdG4vJ2AKKyAgICBSRVNPVVJDRVNETExGSUxFUz0iJFJFU09VUkNFU0RMTEZJTEVTICRzcmNkaXJwcmUkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgorICBkb25lCisgICMgQ0FUQUxPR1MgZGVwZW5kcyBvbiBib3RoICRhY19kaXIgYW5kIHRoZSB1c2VyJ3MgTElOR1VBUworICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgorICBJTlNUX0xJTkdVQVM9CisgIGlmIHRlc3QgLW4gIiRBTExfTElOR1VBUyI7IHRoZW4KKyAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgdXNlaXQ9bm8KKyAgICAgIGlmIHRlc3QgIiVVTlNFVCUiICE9ICIkTElOR1VBUyI7IHRoZW4KKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCisgICAgICBlbHNlCisgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRBTExfTElOR1VBUyIKKyAgICAgIGZpCisgICAgICBmb3IgZGVzaXJlZGxhbmcgaW4gJGRlc2lyZWRsYW5ndWFnZXM7IGRvCisgICAgICAgICMgVXNlIHRoZSBwcmVzZW50bGFuZyBjYXRhbG9nIGlmIGRlc2lyZWRsYW5nIGlzCisgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKKyAgICAgICAgIyAgIGIuIGEgdmFyaWFudCBvZiBwcmVzZW50bGFuZyAoYmVjYXVzZSBpbiB0aGlzIGNhc2UsCisgICAgICAgICMgICAgICBwcmVzZW50bGFuZyBjYW4gYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciBtZXNzYWdlcworICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KKyAgICAgICAgY2FzZSAiJGRlc2lyZWRsYW5nIiBpbgorICAgICAgICAgICIkcHJlc2VudGxhbmciKikgdXNlaXQ9eWVzOzsKKyAgICAgICAgZXNhYworICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAkdXNlaXQgPSB5ZXM7IHRoZW4KKyAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKKyAgICAgIGZpCisgICAgZG9uZQorICBmaQorICBDQVRBTE9HUz0KKyAgSkFWQUNBVEFMT0dTPQorICBRVENBVEFMT0dTPQorICBUQ0xDQVRBTE9HUz0KKyAgQ1NIQVJQQ0FUQUxPR1M9CisgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCisgICAgZm9yIGxhbmcgaW4gJElOU1RfTElOR1VBUzsgZG8KKyAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgorICAgICAgSkFWQUNBVEFMT0dTPSIkSkFWQUNBVEFMT0dTIFwkKERPTUFJTilfJGxhbmcucHJvcGVydGllcyIKKyAgICAgIFFUQ0FUQUxPR1M9IiRRVENBVEFMT0dTICRsYW5nLnFtIgorICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKKyAgICAgIFRDTENBVEFMT0dTPSIkVENMQ0FUQUxPR1MgJGZyb2JiZWRsYW5nLm1zZyIKKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJyAtZSAncy9ec3ItQ1Mvc3ItU1AvJyAtZSAncy9AbGF0aW4kLy1MYXRuLycgLWUgJ3MvQGN5cmlsbGljJC8tQ3lybC8nIC1lICdzL15zci1TUCQvc3ItU1AtTGF0bi8nIC1lICdzL151ei1VWiQvdXotVVotTGF0bi8nYAorICAgICAgQ1NIQVJQQ0FUQUxPR1M9IiRDU0hBUlBDQVRBTE9HUyAkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgorICAgIGRvbmUKKyAgZmkKKworICBzZWQgLWUgInN8QFBPVEZJTEVTX0RFUFNAfCRQT1RGSUxFU19ERVBTfGciIC1lICJzfEBQT0ZJTEVTQHwkUE9GSUxFU3xnIiAtZSAic3xAVVBEQVRFUE9GSUxFU0B8JFVQREFURVBPRklMRVN8ZyIgLWUgInN8QERVTU1ZUE9GSUxFU0B8JERVTU1ZUE9GSUxFU3xnIiAtZSAic3xAR01PRklMRVNAfCRHTU9GSUxFU3xnIiAtZSAic3xAUFJPUEVSVElFU0ZJTEVTQHwkUFJPUEVSVElFU0ZJTEVTfGciIC1lICJzfEBDTEFTU0ZJTEVTQHwkQ0xBU1NGSUxFU3xnIiAtZSAic3xAUU1GSUxFU0B8JFFNRklMRVN8ZyIgLWUgInN8QE1TR0ZJTEVTQHwkTVNHRklMRVN8ZyIgLWUgInN8QFJFU09VUkNFU0RMTEZJTEVTQHwkUkVTT1VSQ0VTRExMRklMRVN8ZyIgLWUgInN8QENBVEFMT0dTQHwkQ0FUQUxPR1N8ZyIgLWUgInN8QEpBVkFDQVRBTE9HU0B8JEpBVkFDQVRBTE9HU3xnIiAtZSAic3xAUVRDQVRBTE9HU0B8JFFUQ0FUQUxPR1N8ZyIgLWUgInN8QFRDTENBVEFMT0dTQHwkVENMQ0FUQUxPR1N8ZyIgLWUgInN8QENTSEFSUENBVEFMT0dTQHwkQ1NIQVJQQ0FUQUxPR1N8ZyIgLWUgJ3MsXiNkaXN0ZGlyOixkaXN0ZGlyOiwnIDwgIiRhY19maWxlIiA+ICIkYWNfZmlsZS50bXAiCisgIHRhYj1gcHJpbnRmICdcdCdgCisgIGlmIGdyZXAgLWwgJ0BUQ0xDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAjIEFkZCBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZm9ybXVsYXRlZCBhcyBhIHNpbXBsZSBzdWZmaXggcnVsZS4KKyAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAorICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCiskZnJvYmJlZGxhbmcubXNnOiAkbGFuZy5wbworJHt0YWJ9QGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8iOyBcCiske3RhYn1cJChNU0dGTVQpIC1jIC0tdGNsIC1kICJcJChzcmNkaXIpIiAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9CitFT0YKKyAgICBkb25lCisgIGZpCisgIGlmIGdyZXAgLWwgJ0BDU0hBUlBDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAjIEFkZCBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZm9ybXVsYXRlZCBhcyBhIHNpbXBsZSBzdWZmaXggcnVsZS4KKyAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZycgLWUgJ3MvXnNyLUNTL3NyLVNQLycgLWUgJ3MvQGxhdGluJC8tTGF0bi8nIC1lICdzL0BjeXJpbGxpYyQvLUN5cmwvJyAtZSAncy9ec3ItU1AkL3NyLVNQLUxhdG4vJyAtZSAncy9edXotVVokL3V6LVVaLUxhdG4vJ2AKKyAgICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgorJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbDogJGxhbmcucG8KKyR7dGFifUBlY2hvICJcJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yIFwkKERPTUFJTikiOyBcCiske3RhYn1cJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kICJcJChzcmNkaXIpIiAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgIlwkKERPTUFJTikiIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQorRU9GCisgICAgZG9uZQorICBmaQorICBpZiB0ZXN0IC1uICIkUE9NQUtFRklMRURFUFMiOyB0aGVuCisgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCitNYWtlZmlsZTogJFBPTUFLRUZJTEVERVBTCitFT0YKKyAgZmkKKyAgbXYgIiRhY19maWxlLnRtcCIgIiRhY19maWxlIgorXSkKKworZG5sIEluaXRpYWxpemVzIHRoZSBhY2N1bXVsYXRvciB1c2VkIGJ5IEFNX1hHRVRURVhUX09QVElPTi4KK0FDX0RFRlVOKFtBTV9YR0VUVEVYVF9PUFRJT05fSU5JVF0sCitbCisgIFhHRVRURVhUX0VYVFJBX09QVElPTlM9CitdKQorCitkbmwgUmVnaXN0ZXJzIGFuIG9wdGlvbiB0byBiZSBwYXNzZWQgdG8geGdldHRleHQgaW4gdGhlIHBvIHN1YmRpcmVjdG9yeS4KK0FDX0RFRlVOKFtBTV9YR0VUVEVYVF9PUFRJT05dLAorWworICBBQ19SRVFVSVJFKFtBTV9YR0VUVEVYVF9PUFRJT05fSU5JVF0pCisgIFhHRVRURVhUX0VYVFJBX09QVElPTlM9IiRYR0VUVEVYVF9FWFRSQV9PUFRJT05TICQxIgorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcHJvZ3Rlc3QubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3Byb2d0ZXN0Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMTg2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3Byb2d0ZXN0Lm00CkBAIC0wLDAgKzEsOTEgQEAKKyMgcHJvZ3Rlc3QubTQgc2VyaWFsIDcgKGdldHRleHQtMC4xOC4yKQorZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzLCAyMDA1LCAyMDA4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk2LgorCitBQ19QUkVSRVEoWzIuNTBdKQorCisjIFNlYXJjaCBwYXRoIGZvciBhIHByb2dyYW0gd2hpY2ggcGFzc2VzIHRoZSBnaXZlbiB0ZXN0LgorCitkbmwgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChWQVJJQUJMRSwgUFJPRy1UTy1DSEVDSy1GT1IsCitkbmwgICBURVNULVBFUkZPUk1FRC1PTi1GT1VORF9QUk9HUkFNIFssIFZBTFVFLUlGLU5PVC1GT1VORCBbLCBQQVRIXV0pCitBQ19ERUZVTihbQU1fUEFUSF9QUk9HX1dJVEhfVEVTVF0sCitbCisjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgICMgRGV0ZXJtaW5lIFBBVEhfU0VQQVJBVE9SIGJ5IHRyeWluZyB0byBmaW5kIC9iaW4vc2ggaW4gYSBQQVRIIHdoaWNoCisgICMgY29udGFpbnMgb25seSAvYmluLiBOb3RlIHRoYXQga3NoIGxvb2tzIGFsc28gYXQgdGhlIEZQQVRIIHZhcmlhYmxlLAorICAjIHNvIHdlIGhhdmUgdG8gc2V0IHRoYXQgYXMgd2VsbCBmb3IgdGhlIHRlc3QuCisgIFBBVEhfU0VQQVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICYmIHsgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICAgICAgICB8fCBQQVRIX1NFUEFSQVRPUj0nOycKKyAgICAgICB9CitmaQorCisjIEZpbmQgb3V0IGhvdyB0byB0ZXN0IGZvciBleGVjdXRhYmxlIGZpbGVzLiBEb24ndCB1c2UgYSB6ZXJvLWJ5dGUgZmlsZSwKKyMgYXMgc3lzdGVtcyBtYXkgdXNlIG1ldGhvZHMgb3RoZXIgdGhhbiBtb2RlIGJpdHMgdG8gZGV0ZXJtaW5lIGV4ZWN1dGFiaWxpdHkuCitjYXQgPmNvbmYkJC5maWxlIDw8X0FTRU9GCisjISAvYmluL3NoCitleGl0IDAKK19BU0VPRgorY2htb2QgK3ggY29uZiQkLmZpbGUKK2lmIHRlc3QgLXggY29uZiQkLmZpbGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAteCIKK2Vsc2UKKyAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgorZmkKK3JtIC1mIGNvbmYkJC5maWxlCisKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJDIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICQyOyBhY193b3JkPVskXTIKK0FDX01TR19DSEVDS0lORyhbZm9yICRhY193b3JkXSkKK0FDX0NBQ0hFX1ZBTChbYWNfY3ZfcGF0aF8kMV0sCitbY2FzZSAiWyRdJDEiIGluCisgIFtbXFwvXV0qIHwgPzpbW1xcL11dKikKKyAgICBhY19jdl9wYXRoXyQxPSJbJF0kMSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgICAgOzsKKyAgKikKKyAgICBhY19zYXZlX0lGUz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICBmb3IgYWNfZGlyIGluIGlmZWxzZShbJDVdLCAsICRQQVRILCBbJDVdKTsgZG8KKyAgICAgIElGUz0iJGFjX3NhdmVfSUZTIgorICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgICBpZiAkYWNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICAgICAgIGVjaG8gIiRhc19tZTogdHJ5aW5nICRhY19kaXIvJGFjX3dvcmQuLi4iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICAgICBpZiBbJDNdOyB0aGVuCisgICAgICAgICAgICBhY19jdl9wYXRoXyQxPSIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICAgICAgICAgYnJlYWsgMgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgZG9uZQorICAgIElGUz0iJGFjX3NhdmVfSUZTIgorZG5sIElmIG5vIDR0aCBhcmcgaXMgZ2l2ZW4sIGxlYXZlIHRoZSBjYWNoZSB2YXJpYWJsZSB1bnNldCwKK2RubCBzbyBBQ19QQVRIX1BST0dTIHdpbGwga2VlcCBsb29raW5nLgoraWZlbHNlKFskNF0sICwgLCBbICB0ZXN0IC16ICJbJF1hY19jdl9wYXRoXyQxIiAmJiBhY19jdl9wYXRoXyQxPSIkNCIKK10pZG5sCisgICAgOzsKK2VzYWNdKWRubAorJDE9IiRhY19jdl9wYXRoXyQxIgoraWYgdGVzdCBpZmVsc2UoWyQ0XSwgLCBbLW4gIlskXSQxIl0sIFsiWyRdJDEiICE9ICIkNCJdKTsgdGhlbgorICBBQ19NU0dfUkVTVUxUKFskXVskMV0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vXSkKK2ZpCitBQ19TVUJTVChbJDFdKWRubAorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2NvbmZpZy5ycGF0aCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2NvbmZpZy5ycGF0aApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iZTIwMmMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvY29uZmlnLnJwYXRoCkBAIC0wLDAgKzEsNjg0IEBACisjISAvYmluL3NoCisjIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgc2V0IG9mIHZhcmlhYmxlcywgZGVzY3JpYmluZyBob3cgdG8gc2V0IHRoZQorIyBydW4gdGltZSBzZWFyY2ggcGF0aCBvZiBzaGFyZWQgbGlicmFyaWVzIGluIGFuIGV4ZWN1dGFibGUuCisjCisjICAgQ29weXJpZ2h0IDE5OTYtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBUYWtlbiBmcm9tIEdOVSBsaWJ0b29sLCAyMDAxCisjICAgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKKyMKKyMgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyAgIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyAgIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIworIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KKyMgb3IKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ0MsIEdDQywgTERGTEFHUywgTEQsIHdpdGhfZ251X2xkCisjIHNob3VsZCBiZSBzZXQgYnkgdGhlIGNhbGxlci4KKyMKKyMgVGhlIHNldCBvZiBkZWZpbmVkIHZhcmlhYmxlcyBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LgorCisjIEtub3duIGxpbWl0YXRpb25zOgorIyAtIE9uIElSSVggNi41IHdpdGggQ0M9ImNjIiwgdGhlIHJ1biB0aW1lIHNlYXJjaCBwYXRjaCBtdXN0IG5vdCBiZSBsb25nZXIKKyMgICB0aGFuIDI1NiBieXRlcywgb3RoZXJ3aXNlIHRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBkdW1wIGNvcmUuIFRoZSBvbmx5CisjICAga25vd24gd29ya2Fyb3VuZCBpcyB0byBjaG9vc2Ugc2hvcnRlciBkaXJlY3RvcnkgbmFtZXMgZm9yIHRoZSBidWlsZAorIyAgIGRpcmVjdG9yeSBhbmQvb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisKKyMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhICcuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyB3aGljaCBuZWVkcyAnLmxpYicpLgorbGliZXh0PWEKK3NocmV4dD0uc28KKworaG9zdD0iJDEiCitob3N0X2NwdT1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKK2hvc3RfdmVuZG9yPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAoraG9zdF9vcz1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKKworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DQ19CQVNFTkFNRS4KKworZm9yIGNjX3RlbXAgaW4gJENDIiI7IGRvCisgIGNhc2UgJGNjX3RlbXAgaW4KKyAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7CisgICAgZGlzdGNjIHwgKltcXC9dZGlzdGNjIHwgcHVyaWZ5IHwgKltcXC9dcHVyaWZ5ICkgOzsKKyAgICBcLSopIDs7CisgICAgKikgYnJlYWs7OworICBlc2FjCitkb25lCitjY19iYXNlbmFtZT1gZWNobyAiJGNjX3RlbXAiIHwgc2VkIC1lICdzJV4uKi8lJSdgCisKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfQ09NUElMRVJfUElDLgorCit3bD0KK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIHdsPSctV2wsJworZWxzZQorICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBhaXgqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCisgICAgICA7OworICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgZWNjKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBpY2MqIHwgaWZvcnQqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGxmOTUqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIG5hZ2ZvciopCisgICAgICAgICAgd2w9Jy1XbCwtV2wsLCcKKyAgICAgICAgICA7OworICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgY2NjKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgY29tbykKKyAgICAgICAgICB3bD0nLWxvcHQ9JworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisgICAgICAgICAgICAqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCisgICAgICAgICAgICAgIHdsPQorICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKlN1blwgQyopCisgICAgICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgICAgICA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBuZXdzb3M2KQorICAgICAgOzsKKyAgICAqbnRvKiB8ICpxbngqKQorICAgICAgOzsKKyAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgcmRvcyopCisgICAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorICAgICAgICAgIHdsPSctUW9wdGlvbiBsZCAnCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzdW5vczQqKQorICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKKyAgICAgIDs7CisgICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHN5c3Y0Kk1QKikKKyAgICAgIDs7CisgICAgc3lzdjUqIHwgdW5peHdhcmUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IE9wZW5VTklYKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICB1bmljb3MqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHV0czQqKQorICAgICAgOzsKKyAgZXNhYworZmkKKworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9MSU5LRVJfU0hMSUJTLgorCitoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQoraGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KK2hhcmRjb2RlX2RpcmVjdD1ubworaGFyZGNvZGVfbWludXNfTD1ubworCitjYXNlICIkaG9zdF9vcyIgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKKyAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICB3aXRoX2dudV9sZD1ubworICAgIGZpCisgICAgOzsKKyAgaW50ZXJpeCopCisgICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKKyAgICB3aXRoX2dudV9sZD15ZXMKKyAgICA7OworICBvcGVuYnNkKikKKyAgICB3aXRoX2dudV9sZD1ubworICAgIDs7Citlc2FjCisKK2xkX3NobGlicz15ZXMKK2lmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKKyAgIyBhcmUgcmVzZXQgbGF0ZXIgaWYgc2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZC4gUHV0dGluZyB0aGVtCisgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KKyAgIyBVbmxpa2UgbGlidG9vbCwgd2UgdXNlIC1ycGF0aCBoZXJlLCBub3QgLS1ycGF0aCwgc2luY2UgdGhlIGRvY3VtZW50ZWQKKyAgIyBvcHRpb24gb2YgR05VIGxkIGlzIGNhbGxlZCAtcnBhdGgsIG5vdCAtLXJwYXRoLgorICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIGFpeFszLTldKikKKyAgICAgICMgT24gQUlYL1BQQywgdGhlIEdOVSBsaW5rZXIgaXMgdmVyeSBicm9rZW4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICBwb3dlcnBjKQorICAgICAgICAgIDs7CisgICAgICAgIG02OGspCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgYmVvcyopCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGhhaWt1KikKKyAgICAgIDs7CisgICAgaW50ZXJpeFszLTldKikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgIDs7CisgICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIG5ldGJzZCopCisgICAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKikKKyAgICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgICAgICAqXCBbMDFdLiogfCAqXCAyLlswLTldLiogfCAqXCAyLjFbMC01XS4qKQorICAgICAgICAgIGxkX3NobGlicz1ubworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tcnBhdGgsJGxpYmRpcmAnCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICAgICAgZmkKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzdW5vczQqKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgOzsKKyAgICAqKQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgZXNhYworICBpZiB0ZXN0ICIkbGRfc2hsaWJzIiA9IG5vOyB0aGVuCisgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAgZmkKK2Vsc2UKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgYWl4MyopCisgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQorICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgorICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgICMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQorICAgICAgICAjIGJyb2tlbiBjb2xsZWN0Mi4KKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCisgICAgICBmaQorICAgICAgOzsKKyAgICBhaXhbNC05XSopCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0CisgICAgICAgICMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgorICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICBlbHNlCisgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKyAgICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCisgICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQorICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCisgICAgICAgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisgICAgICAgICAgICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgorICAgICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgICBkb25lCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzAxMl18YWl4NC5bMDEyXS4qKQorICAgICAgICAgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKyAgICAgICAgICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCisgICAgICAgICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCisgICAgICAgICAgdGhlbgorICAgICAgICAgICAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCisgICAgICAgICAgICA6CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBXZSBoYXZlIG9sZCBjb2xsZWN0MgorICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCisgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KKyAgICAgICAgICBmaQorICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICAjIEJlZ2luIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCisgICAgICBlY2hvICdpbnQgbWFpbiAoKSB7IHJldHVybiAwOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgICAgICR7Q0N9ICR7TERGTEFHU30gY29uZnRlc3QuYyAtbyBjb25mdGVzdAorICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQorfSdgCisgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCisgICAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KK30nYAorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKyAgICAgICAgYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiCisgICAgICBmaQorICAgICAgcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdAorICAgICAgIyBFbmQgX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KKyAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgZWxzZQorICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworICAgICAgICBlbHNlCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICA7OworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICBwb3dlcnBjKQorICAgICAgICAgIDs7CisgICAgICAgIG02OGspCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgYnNkaVs0NV0qKQorICAgICAgOzsKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworICAgICAgbGliZXh0PWxpYgorICAgICAgOzsKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCisgICAgICBpZiB7IGNhc2UgJGNjX2Jhc2VuYW1lIGluIGlmb3J0KikgdHJ1ZTs7ICopIHRlc3QgIiRHQ0MiID0geWVzOzsgZXNhYzsgfTsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgZGd1eCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICA7OworICAgIGZyZWVic2QyLlswMV0qKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgOzsKKyAgICBocHV4OSopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgaHB1eDEwKikKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICBmaQorICAgICAgOzsKKyAgICBocHV4MTEqKQorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgICAgICBocHBhKjY0KnxpYTY0KikKKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqKQorICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICA7OworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgbmV0YnNkKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIDs7CisgICAgbmV3c29zNikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICAqbnRvKiB8ICpxbngqKQorICAgICAgOzsKKyAgICBvcGVuYnNkKikKKyAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgICAgZWxzZQorICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAgb3BlbmJzZFswMV0uKiB8IG9wZW5ic2QyLlswLTddIHwgb3BlbmJzZDIuWzAtN10uKikKKyAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgb3MyKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIG9zZjMqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICA7OworICAgIG9zZjQqIHwgb3NmNSopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBlbHNlCisgICAgICAgICMgQm90aCBjYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJworICAgICAgZmkKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIDs7CisgICAgc3Vub3M0KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIHN5c3Y0KQorICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KKyAgICAgICAgc25pKQorICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/CisgICAgICAgICAgOzsKKyAgICAgICAgc2llbWVucykKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgICAgICA7OworICAgICAgICBtb3Rvcm9sYSkKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIHN5c3Y0LjMqKQorICAgICAgOzsKKyAgICBzeXN2NCpNUCopCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCisgICAgICAgIGxkX3NobGlicz15ZXMKKyAgICAgIGZpCisgICAgICA7OworICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCisgICAgICA7OworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tUiwkbGliZGlyYCcKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCisgICAgICA7OworICAgIHV0czQqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgOzsKKyAgICAqKQorICAgICAgbGRfc2hsaWJzPW5vCisgICAgICA7OworICBlc2FjCitmaQorCisjIENoZWNrIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIuCisjIFVubGlrZSBsaWJ0b29sLm00LCBoZXJlIHdlIGRvbid0IGNhcmUgYWJvdXQgX2FsbF8gbmFtZXMgb2YgdGhlIGxpYnJhcnksIGJ1dAorIyBvbmx5IGFib3V0IHRoZSBvbmUgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuIFRoaXMgaXMgdGhlIGxhc3QKKyMgZWxlbWVudCBvZiBsaWJyYXJ5X25hbWVzX3NwZWMgaW4gbGlidG9vbC5tNCwgb3IgcG9zc2libHkgdHdvIG9mIHRoZW0gaWYgdGhlCisjIGxpbmtlciBoYXMgc3BlY2lhbCBzZWFyY2ggcnVsZXMuCitsaWJyYXJ5X25hbWVzX3NwZWM9ICAgICAgIyB0aGUgbGFzdCBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00CitsaWJuYW1lX3NwZWM9J2xpYiRuYW1lJworY2FzZSAiJGhvc3Rfb3MiIGluCisgIGFpeDMqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScKKyAgICA7OworICBhaXhbNC05XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgYW1pZ2FvcyopCisgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgcG93ZXJwYyopCisgICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JyA7OworICAgICAgbTY4aykKKyAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJyA7OworICAgIGVzYWMKKyAgICA7OworICBiZW9zKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBic2RpWzQ1XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgIHNocmV4dD0uZGxsCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYSAkbGlibmFtZS5saWInCisgICAgOzsKKyAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICBzaHJleHQ9LmR5bGliCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgZGd1eCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgZnJlZWJzZFsyM10uKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGdudSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaGFpa3UqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBpYTY0KikKKyAgICAgICAgc2hyZXh0PS5zbworICAgICAgICA7OworICAgICAgaHBwYSo2NCopCisgICAgICAgIHNocmV4dD0uc2wKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIHNocmV4dD0uc2wKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaW50ZXJpeFszLTldKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKKyAgICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgY2FzZSAkTEQgaW4KKyAgICAgICAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7CisgICAgICAgICAgKi1uMzJ8KiItbjMyICJ8Ki1tZWxmMzJibWlwbjMyfCoiLW1lbGYzMmJtaXBuMzIgIikgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIDs7CisgICAgICAgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IDs7CisgICAgICAgICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGxpbnV4Km9sZGxkKiB8IGxpbnV4KmFvdXQqIHwgbGludXgqY29mZiopCisgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGtuZXRic2QqLWdudSkKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBuZXRic2QqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIG5ld3NvczYpCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgKm50byogfCAqcW54KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBvcGVuYnNkKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgb3MyKikKKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICAgIHNocmV4dD0uZGxsCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJworICAgIDs7CisgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICByZG9zKikKKyAgICA7OworICBzb2xhcmlzKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzdW5vczQqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKKyAgICA7OworICBzeXN2NCB8IHN5c3Y0LjMqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHN5c3Y0Kk1QKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICB0cGYqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHV0czQqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7Citlc2FjCisKK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCitlc2NhcGVkX3dsPWBlY2hvICJYJHdsIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitzaGxpYmV4dD1gZWNobyAiJHNocmV4dCIgfCBzZWQgLWUgJ3MsXlwuLCwnYAorZXNjYXBlZF9saWJuYW1lX3NwZWM9YGVjaG8gIlgkbGlibmFtZV9zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitlc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYz1gZWNobyAiWCRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKK2VzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz1gZWNobyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisKK0xDX0FMTD1DIHNlZCAtZSAncy9eXChbYS16QS1aMC05X10qXCk9L2FjbF9jdl9cMT0vJyA8PEVPRgorCisjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCit3bD0iJGVzY2FwZWRfd2wiCisKKyMgU3RhdGljIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiYSIpLgorbGliZXh0PSIkbGliZXh0IgorCisjIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgInNvIikuCitzaGxpYmV4dD0iJHNobGliZXh0IgorCisjIEZvcm1hdCBvZiBsaWJyYXJ5IG5hbWUgcHJlZml4LgorbGlibmFtZV9zcGVjPSIkZXNjYXBlZF9saWJuYW1lX3NwZWMiCisKKyMgTGlicmFyeSBuYW1lcyB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2hlbiBwYXNzZWQgLWxOQU1FLgorbGlicmFyeV9uYW1lc19zcGVjPSIkZXNjYXBlZF9saWJyYXJ5X25hbWVzX3NwZWMiCisKKyMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgorIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgoraGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKKworIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgorCisjIFNldCB0byB5ZXMgaWYgdXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorIyByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfZGlyZWN0PSIkaGFyZGNvZGVfZGlyZWN0IgorCisjIFNldCB0byB5ZXMgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorIyByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfbWludXNfTD0iJGhhcmRjb2RlX21pbnVzX0wiCisKK0VPRgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvcmVtb3ZlLXBvdGNkYXRlLnNpbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM3MGRmYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4KQEAgLTAsMCArMSwyNSBAQAorIyBTZWQgc2NyaXB0IHRoYXQgcmVtb3ZlcyB0aGUgUE9ULUNyZWF0aW9uLURhdGUgbGluZSBpbiB0aGUgaGVhZGVyIGVudHJ5CisjIGZyb20gYSBQT1QgZmlsZS4KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKKyMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCisjIHdpdGhvdXQgYW55IHdhcnJhbnR5LgorIworIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBmb2xsb3dpbmcgb2NjdXJyZW5jZXMgb2YgdGhlCisjIHBhdHRlcm4gaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KKy9eIlBPVC1DcmVhdGlvbi1EYXRlOiAuKiIkL3sKK3gKKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KK3MvUC9QLwordGEKKyMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVtb3ZlIHRoZSBsaW5lLgorZworZAorYmIKKzphCisjIFRoZSBob2xkIHNwYWNlIHdhcyBub25lbXB0eS4gRm9sbG93aW5nIG9jY3VycmVuY2VzLiBEbyBub3RoaW5nLgoreAorOmIKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMTkuOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZmYxOTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIk1pbmltYWwgZ2V0dGV4dCBmb3Igc3VwcG9ydGluZyBuYXRpdmUgYXV0b2NvbmYvYXV0b21ha2UiCi1ERVNDUklQVElPTiA9ICJDb250YWlucyB0aGUgbTQgbWFjcm9zIHN1ZmZpY2llbnQgdG8gc3VwcG9ydCBidWlsZGluZyBcCi1hdXRvY29uZi9hdXRvbWFrZS4gVGhpcyBwcm92aWRlcyBhIHNpZ25pZmljYW50IGJ1aWxkIHRpbWUgc3BlZWR1cCBieSBcCi10aGUgcmVtb3ZhbCBvZiBnZXR0ZXh0LW5hdGl2ZSBmcm9tIG1vc3QgZGVwZW5kZW5jeSBjaGFpbnMgKG5vdyBvbmx5IFwKLW5lZWRlZCBmb3IgZ2V0dGV4dCBmb3IgdGhlIHRhcmdldCkuIgotU1JDX1VSSSA9ICJmaWxlOi8vYWNsb2NhbC50Z3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnLnJwYXRoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLmluIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1wb3RjZGF0ZS5zaW4gXAotICAgICAgICAgICBmaWxlOi8vQ09QWUlORyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAotIgotCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotSU5ISUJJVF9BVVRPVE9PTFNfREVQUyA9ICIxIgotCi1MSUNFTlNFID0gIkZTRi1VbmxpbWl0ZWQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YmQwOTBhMjBiZmNkMWExOGYxZjc5ODM3YjVlM2U5MSIKLQotaW5oZXJpdCBuYXRpdmUKLQotUyA9ICIke1dPUktESVJ9IgotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCi0JY3AgJHtXT1JLRElSfS8qLm00ICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCi0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotCWNwICR7V09SS0RJUn0vY29uZmlnLnJwYXRoICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvCi0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZS5pbi5pbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotCWNwICR7V09SS0RJUn0vcmVtb3ZlLXBvdGNkYXRlLnNpbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4yMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNGRjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjIwLjEuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJNaW5pbWFsIGdldHRleHQgZm9yIHN1cHBvcnRpbmcgbmF0aXZlIGF1dG9jb25mL2F1dG9tYWtlIgorREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIG00IG1hY3JvcyBzdWZmaWNpZW50IHRvIHN1cHBvcnQgYnVpbGRpbmcgXAorYXV0b2NvbmYvYXV0b21ha2UuIFRoaXMgcHJvdmlkZXMgYSBzaWduaWZpY2FudCBidWlsZCB0aW1lIHNwZWVkdXAgYnkgXAordGhlIHJlbW92YWwgb2YgZ2V0dGV4dC1uYXRpdmUgZnJvbSBtb3N0IGRlcGVuZGVuY3kgY2hhaW5zIChub3cgb25seSBcCituZWVkZWQgZm9yIGdldHRleHQgZm9yIHRoZSB0YXJnZXQpLiIKK1NSQ19VUkkgPSAiZmlsZTovL2FjbG9jYWwvIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZy5ycGF0aCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcG90Y2RhdGUuc2luIFwKKyAgICAgICAgICAgZmlsZTovL0NPUFlJTkcgXAorIgorCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorSU5ISUJJVF9BVVRPVE9PTFNfREVQUyA9ICIxIgorCitMSUNFTlNFID0gIkZTRi1VbmxpbWl0ZWQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YmQwOTBhMjBiZmNkMWExOGYxZjc5ODM3YjVlM2U5MSIKKworaW5oZXJpdCBuYXRpdmUKKworUyA9ICIke1dPUktESVJ9IgorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCisJY3AgJHtXT1JLRElSfS9hY2xvY2FsLyoubTQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8KKwlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCisJY3AgJHtXT1JLRElSfS9jb25maWcucnBhdGggJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC8KKwljcCAke1dPUktESVJ9L01ha2VmaWxlLmluLmluICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCisJY3AgJHtXT1JLRElSfS9yZW1vdmUtcG90Y2RhdGUuc2luICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDEyMWFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIHByb2R1Y2luZyBtdWx0aS1saW5ndWFsIG1lc3NhZ2VzIgotREVTQ1JJUFRJT04gPSAiR05VIGdldHRleHQgaXMgYSBzZXQgb2YgdG9vbHMgdGhhdCBwcm92aWRlcyBhIGZyYW1ld29yayB0byBoZWxwIG90aGVyIHByb2dyYW1zIHByb2R1Y2UgbXVsdGktbGluZ3VhbCBtZXNzYWdlcy4gXAotVGhlc2UgdG9vbHMgaW5jbHVkZSBhIHNldCBvZiBjb252ZW50aW9ucyBhYm91dCBob3cgcHJvZ3JhbXMgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gc3VwcG9ydCBtZXNzYWdlIGNhdGFsb2dzLCBhIGRpcmVjdG9yeSBhbmQgZmlsZSBcCi1uYW1pbmcgb3JnYW5pemF0aW9uIGZvciB0aGUgbWVzc2FnZSBjYXRhbG9ncyB0aGVtc2VsdmVzLCBhIHJ1bnRpbWUgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSByZXRyaWV2YWwgb2YgdHJhbnNsYXRlZCBtZXNzYWdlcywgYW5kIFwKLWEgZmV3IHN0YW5kLWFsb25lIHByb2dyYW1zIHRvIG1hc3NhZ2UgaW4gdmFyaW91cyB3YXlzIHRoZSBzZXRzIG9mIHRyYW5zbGF0YWJsZSBhbmQgYWxyZWFkeSB0cmFuc2xhdGVkIHN0cmluZ3MuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dldHRleHQvZ2V0dGV4dC5odG1sIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotIyBCZWNhdXNlIHBvLWdyYW0tZ2VuLnkgaGFzIGJlZW4gbW9kaWZpZWQgYnkgZml4LUNWRS0yMDE4LTE4NzUxLnBhdGNoLAotIyBpdCByZXF1aXJlcyB5YWNjIHdoaWNoIHByb3ZpZGVkIGJ5IGJpc29uLW5hdGl2ZQotIyBQbGVhc2UgcmVtb3ZlIGJpc29uLW5hdGl2ZSBmcm9tIERFUEVORFMqIHdoZW4gbmV4dCB1cGdyYWRlCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSB2aXJ0dWFsL2xpYmljb252IgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYmlzb24tbmF0aXZlIGdldHRleHQtbWluaW1hbC1uYXRpdmUiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgotUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInZpcnR1YWwvZ2V0dGV4dC1uYXRpdmUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInByb3h5LWxpYmludGwiCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2V0dGV4dC9nZXR0ZXh0LSR7UFZ9LnRhci5neiBcCi0JICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKLQkgICBmaWxlOi8vYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2ggXAotCSAgIGZpbGU6Ly9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIFwKLQkgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCi0JICAgZmlsZTovL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaCBcCi0JICAgZmlsZTovL3J1bi1wdGVzdCBcCi0JICAgZmlsZTovL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTdlMDM0Y2Y4Y2U1YmE3M2EyOGZmNmMzYzA2MzgwOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmY5NDJhZjBlNDM4Y2VkNGE4YjBlYTRiMGI2ZTBkNmQ2NTcxNTdjNWUyMzY0ZGU1N2JhYTI3OWMxYzEyNWM0MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcgcHRlc3QKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlzcGRpciBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jc2hhcnAgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXNwcmludGYgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtamF2YSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uYXRpdmUtamF2YSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vcGVubXAgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtYWNsIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWVtYWNzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1naXQgXAotICAgICAgICAgICAgICAgICAtLWNhY2hlLWZpbGU9JHtCfS9jb25maWcuY2FjaGUgXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1iaXNvbmxvY2FsZWRpcj0ke2RhdGFkaXJ9L2xvY2FsZSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJjcm9jbyBnbGliIGxpYnhtbCIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tjcm9jb10gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYmNyb2NvLC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyxsaWJjcm9jbyIKLVBBQ0tBR0VDT05GSUdbZ2xpYl0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWdsaWIsLS13aXRoLWluY2x1ZGVkLWdsaWIsZ2xpYi0yLjAiCi1QQUNLQUdFQ09ORklHW2xpYnhtbF0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYnhtbCwtLXdpdGgtaW5jbHVkZWQtbGlieG1sLGxpYnhtbDIiCi0jIE5lZWQgcGF0aHMgaGVyZSB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24gYnV0IHRoaXMgY2FuIGNhdXNlIFJQQVRIIHdhcm5pbmdzCi0jIG9yIHByb2JsZW1zIGlmICRsaWJkaXIgaXNuJ3QgJHByZWZpeC9saWIuCi1QQUNLQUdFQ09ORklHW2xpYnVuaXN0cmluZ10gPSAiLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS13aXRoLWluY2x1ZGVkLWxpYnVuaXN0cmluZyxsaWJ1bmlzdHJpbmciCi1QQUNLQUdFQ09ORklHW21zZ2NhdC1jdXJzZXNdID0gIi0td2l0aC1saWJuY3Vyc2VzLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsIgotCi1hY3BhdGhzID0gJy1JICR7U30vZ2V0dGV4dC1ydW50aW1lL200IFwKLSAgICAgICAgICAgLUkgJHtTfS9nZXR0ZXh0LXRvb2xzL200JwotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2wgKCkgewotCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotCXJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmludGwuaAotCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliaW50bC5sYQotfQotCi0jIHRoZXNlIGxhY2sgdGhlIC54IGJlaGluZCB0aGUgLnNvLCBidXQgc2hvdWxkbid0IGJlIGluIHRoZSAtZGV2IHBhY2thZ2UKLSMgT3RoZXJ3aXNlIHlvdSBnZXQgdGhlIGZvbGxvd2luZyByZXN1bHRzOgotIyA3LjRNICAgIGdsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS1nbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKLSMgMjVNICAgICB1Y2xpYmMvaW1hZ2VzL2VwOTN4eC9BbmdzdHJvbS1jb25zb2xlLWltYWdlLXVjbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKLSMgYmVjYXVzZSBnZXR0ZXh0IGRlcGVuZHMgb24gZ2V0dGV4dC1kZXYsIHdoaWNoIHB1bGxzIGluIG1vcmUgLWRldiBwYWNrYWdlczoKLSMgMTUyMjggICBLaUIgL2VwOTN4eC9saWJzdGRjKystZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKLSMgMTMwMCAgICBLaUIgL2VwOTN4eC91Y2xpYmMtZGV2XzAuOS4yOS1yOF9lcDkzeHguaXBrCi0jIDE0MCAgICAgS2lCIC9hcm12NHQvZ2V0dGV4dC1kZXZfMC4xNC4xLXI2X2FybXY0dC5pcGsKLSMgNCAgICAgICBLaUIgL2VwOTN4eC9saWJnY2Mtcy1kZXZfNC4yLjItcjJfZXA5M3h4LmlwawotCi1QQUNLQUdFUyA9KyAibGliZ2V0dGV4dGxpYiBsaWJnZXR0ZXh0c3JjIgotRklMRVNfbGliZ2V0dGV4dGxpYiA9ICIke2xpYmRpcn0vbGliZ2V0dGV4dGxpYi0qLnNvKiIKLUZJTEVTX2xpYmdldHRleHRzcmMgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRzcmMtKi5zbyoiCi0KLVBBQ0tBR0VTID0rICJnZXR0ZXh0LXJ1bnRpbWUgZ2V0dGV4dC1ydW50aW1lLWRldiBnZXR0ZXh0LXJ1bnRpbWUtZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qIgotCi0jIFRoZSBpdHMvTWFrZWZpbGUuYW0gaGFzIGRlZmluZWQ6Ci0jIGl0c2RpciA9ICQocGtnZGF0YWRpcikkKFBBQ0tBR0VfU1VGRklYKS9pdHMKLSMgbm90IGl0c2RpciA9ICQocGtnZGF0YWRpciksIHNvIHVzZSB3aWxkY2FyZCB0byBtYXRjaCB0aGUgdmVyc2lvbi4KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS0qLyoiCi0KLUZJTEVTX2dldHRleHQtcnVudGltZSA9ICIke2JpbmRpcn0vZ2V0dGV4dCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25nZXR0ZXh0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZW52c3Vic3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nZXR0ZXh0LnNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliYXNwcmludGYuc28qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vR05VLkdldHRleHQuZGxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTX2dldHRleHQtcnVudGltZS1kZXYgKz0gIiR7bGliZGlyfS9saWJhc3ByaW50Zi5hIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2F1dG9zcHJpbnRmLmggXAotICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRvYyA9ICIke21hbmRpcn0vbWFuMS9nZXR0ZXh0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9uZ2V0dGV4dC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvZW52c3Vic3QuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xLy4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjMvKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2dldHRleHQuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L25nZXR0ZXh0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9lbnZzdWJzdC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvKi4zLmh0bWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dldHRleHQvQUJPVVQtTkxTIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvY3NoYXJwZG9jLyogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vbGliYXNwcmludGYvYXV0b3NwcmludGYuaHRtbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5mb2Rpcn0vYXV0b3NwcmludGYuaW5mbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3ByZWxvYWRhYmxlX2xpYmludGwuc28KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlybSAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyoKLQlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aAotCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4KLQlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KLQotICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L21zZ2ZtdCBcCi0gICAgICAgICAgICAgICAgR0VUVEVYVERBVEFESVI9IiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC0wLjE5LjgvIgotCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgIGNkICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy8KLSAgICAgICAgc2VkIC1pICcvXmJ1aWxkdGVzdC1URVNUUzogL2MgYnVpbGR0ZXN0LVRFU1RTOiAkKFRFU1RTKSAkKGNoZWNrX1BST0dSQU1TKScgTWFrZWZpbGUKLSAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKLSAgICAgICAgY2QgLQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGlmIFsgJHtQVEVTVF9FTkFCTEVEfSA9ICIxIiBdOyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9wbwotICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9taXNjCi0gICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvdGVzdHMvKiAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvLmxpYnMvKiAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtcnVudGltZS9pbnRsLy5saWJzL2xpYmdudWludGwuc28uOCogICAgICAgICAke0R9JHtsaWJkaXJ9LwotICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotICAgICAgICBzZWQgLWkgJy9eTWFrZWZpbGU6L2MgTWFrZWZpbGU6JyAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotICAgICAgICBzZWQgLWkgLWUgJ3M6Q09ORklHX1NIRUxMPS4qOiYgTE9DQUxFX0ZSPSdmcl9GUi5pc284ODU5MScgTE9DQUxFX0ZSX1VURjg9J2ZyX0ZSLnV0ZjgnIExPQ0FMRV9KQT0namFfSlAuZXVjanAnOmcnIFwKLSAgICAgICAgICAgIC1lICdzOmxhbmctYyBsYW5nLWMrKzpsYW5nLWMrKzpnJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9zcmMvbXNndW5mbXQudGNsICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvc3JjL3Byb2plY3QtaWQgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9uZ2V0dGV4dCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZW52c3Vic3QgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC10b29scy9zcmMvLmxpYnMvY2xkci1wbHVyYWxzICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3BvL2dldHRleHQtdG9vbHMucG90ICR7RH0ke1BURVNUX1BBVEh9L3BvCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXRvb2xzL21pc2MvKiAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9taXNjCi0gICAgICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vIC1uYW1lICIqLm8iIC1leGVjIHJtIHt9IFw7Ci0gICAgICAgIGNobW9kIDA3NTUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvbGFuZy12YWxhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3BsdXJhbC0xICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXRjbC00IFwKLSAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC12YWxhLTEgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLSAgICBmaQotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIlwKLSAgICBnbGliYy1nY29udi1iaWc1IFwKLSAgICBnbGliYy1jaGFybWFwLWJpZzUgXAotICAgIGdsaWJjLWdjb252LWNwMTI1MSBcCi0gICAgZ2xpYmMtY2hhcm1hcC1jcDEyNTEgXAotICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktOSBcCi0gICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS05IFwKLSAgICBnbGliYy1jaGFybWFwLWtvaTgtciBcCi0gICAgZ2xpYmMtZ2NvbnYta29pOC1yIFwKLSAgICBnbGliYy1nY29udi1pc284ODU5LTIgXAotICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktMiBcCi0gICAgZ2xpYmMtZ2NvbnYtZXVjLWtyIFwKLSAgICBnbGliYy1jaGFybWFwLWV1Yy1rciBcCi0iCi0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJsZGZsYWdzIgotSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gInJwYXRocyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4yMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NDkzZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjIwLjEuYmIKQEAgLTAsMCArMSwyMTIgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIHByb2R1Y2luZyBtdWx0aS1saW5ndWFsIG1lc3NhZ2VzIgorREVTQ1JJUFRJT04gPSAiR05VIGdldHRleHQgaXMgYSBzZXQgb2YgdG9vbHMgdGhhdCBwcm92aWRlcyBhIGZyYW1ld29yayB0byBoZWxwIG90aGVyIHByb2dyYW1zIHByb2R1Y2UgbXVsdGktbGluZ3VhbCBtZXNzYWdlcy4gXAorVGhlc2UgdG9vbHMgaW5jbHVkZSBhIHNldCBvZiBjb252ZW50aW9ucyBhYm91dCBob3cgcHJvZ3JhbXMgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gc3VwcG9ydCBtZXNzYWdlIGNhdGFsb2dzLCBhIGRpcmVjdG9yeSBhbmQgZmlsZSBcCituYW1pbmcgb3JnYW5pemF0aW9uIGZvciB0aGUgbWVzc2FnZSBjYXRhbG9ncyB0aGVtc2VsdmVzLCBhIHJ1bnRpbWUgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSByZXRyaWV2YWwgb2YgdHJhbnNsYXRlZCBtZXNzYWdlcywgYW5kIFwKK2EgZmV3IHN0YW5kLWFsb25lIHByb2dyYW1zIHRvIG1hc3NhZ2UgaW4gdmFyaW91cyB3YXlzIHRoZSBzZXRzIG9mIHRyYW5zbGF0YWJsZSBhbmQgYWxyZWFkeSB0cmFuc2xhdGVkIHN0cmluZ3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dldHRleHQvZ2V0dGV4dC5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMLTIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNjc4OTU3YjBjOGU5NjRhYTZjNzBmZDc3NjQxYTcxZSIKKworIyBCZWNhdXNlIHBvLWdyYW0tZ2VuLnkgaGFzIGJlZW4gbW9kaWZpZWQgYnkgZml4LUNWRS0yMDE4LTE4NzUxLnBhdGNoLAorIyBpdCByZXF1aXJlcyB5YWNjIHdoaWNoIHByb3ZpZGVkIGJ5IGJpc29uLW5hdGl2ZQorIyBQbGVhc2UgcmVtb3ZlIGJpc29uLW5hdGl2ZSBmcm9tIERFUEVORFMqIHdoZW4gbmV4dCB1cGdyYWRlCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSB2aXJ0dWFsL2xpYmljb252IgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYmlzb24tbmF0aXZlIGdldHRleHQtbWluaW1hbC1uYXRpdmUiCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgorUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInZpcnR1YWwvZ2V0dGV4dC1uYXRpdmUiCitSQ09ORkxJQ1RTXyR7UE59ID0gInByb3h5LWxpYmludGwiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2V0dGV4dC9nZXR0ZXh0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tc2dtZXJnZS1GaXgtYmVoYXZpb3VyLW9mLWZvci1tc2dmbXQtb24tUE8tZmlsZXMtd2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtYXV0b3BvaW50LTMtdW5zZXQtTUFLRUZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5pdC1lbnYuaW4tZG8tbm90LWFkZC1DLUNYWC1wYXJhbWV0ZXJzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImJiNWIwYzBjYWEwMjgxMDVmM2NhMTkwNWRkYzMwNmUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NDE1NjM0YzZlOGMzZmE4YjcxMzYyODc5ZWM3NTc1ZTI3ZGE0M2RhNTYyYzc5OGE4YTJmMjIzZTZlNDdmNWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gcGtnY29uZmlnIHB0ZXN0CisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpc3BkaXIgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3NoYXJwIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmFzcHJpbnRmIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWphdmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmF0aXZlLWphdmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3Blbm1wIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWFjbCBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1lbWFjcyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZ2l0IFwKKyAgICAgICAgICAgICAgICAgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtYmlzb25sb2NhbGVkaXI9JHtkYXRhZGlyfS9sb2NhbGUgXAorICAgICAgICAgICAgICAgICBndF9jdl9sb2NhbGVfZnJfdXRmOD1mcl9GUiBcCisgICAgICAgICAgICAgICAgIGd0X2N2X2xvY2FsZV9mcj1mcl9GUi5JU08tODg1OS0xIFwKKyAgICAgICAgICAgICAgICAgZ3RfY3ZfbG9jYWxlX2RlX3V0Zjg9ZGVfREUgXAorICAgICAgICAgICAgICAgICBndF9jdl9sb2NhbGVfZGU9ZGVfREUuSVNPLTg4NTktMSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjcm9jbyBnbGliIGxpYnhtbCIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tjcm9jb10gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYmNyb2NvLC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyxsaWJjcm9jbyIKK1BBQ0tBR0VDT05GSUdbZ2xpYl0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWdsaWIsLS13aXRoLWluY2x1ZGVkLWdsaWIsZ2xpYi0yLjAiCitQQUNLQUdFQ09ORklHW2xpYnhtbF0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYnhtbCwtLXdpdGgtaW5jbHVkZWQtbGlieG1sLGxpYnhtbDIiCisjIE5lZWQgcGF0aHMgaGVyZSB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24gYnV0IHRoaXMgY2FuIGNhdXNlIFJQQVRIIHdhcm5pbmdzCisjIG9yIHByb2JsZW1zIGlmICRsaWJkaXIgaXNuJ3QgJHByZWZpeC9saWIuCitQQUNLQUdFQ09ORklHW2xpYnVuaXN0cmluZ10gPSAiLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS13aXRoLWluY2x1ZGVkLWxpYnVuaXN0cmluZyxsaWJ1bmlzdHJpbmciCitQQUNLQUdFQ09ORklHW21zZ2NhdC1jdXJzZXNdID0gIi0td2l0aC1saWJuY3Vyc2VzLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsIgorCithY3BhdGhzID0gJy1JICR7U30vZ2V0dGV4dC1ydW50aW1lL200IFwKKyAgICAgICAgICAgLUkgJHtTfS9nZXR0ZXh0LXRvb2xzL200JworCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2wgKCkgeworCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworCXJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmludGwuaAorCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliaW50bC5sYQorfQorCisjIHRoZXNlIGxhY2sgdGhlIC54IGJlaGluZCB0aGUgLnNvLCBidXQgc2hvdWxkbid0IGJlIGluIHRoZSAtZGV2IHBhY2thZ2UKKyMgT3RoZXJ3aXNlIHlvdSBnZXQgdGhlIGZvbGxvd2luZyByZXN1bHRzOgorIyA3LjRNICAgIGdsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS1nbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKKyMgMjVNICAgICB1Y2xpYmMvaW1hZ2VzL2VwOTN4eC9BbmdzdHJvbS1jb25zb2xlLWltYWdlLXVjbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKKyMgYmVjYXVzZSBnZXR0ZXh0IGRlcGVuZHMgb24gZ2V0dGV4dC1kZXYsIHdoaWNoIHB1bGxzIGluIG1vcmUgLWRldiBwYWNrYWdlczoKKyMgMTUyMjggICBLaUIgL2VwOTN4eC9saWJzdGRjKystZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKKyMgMTMwMCAgICBLaUIgL2VwOTN4eC91Y2xpYmMtZGV2XzAuOS4yOS1yOF9lcDkzeHguaXBrCisjIDE0MCAgICAgS2lCIC9hcm12NHQvZ2V0dGV4dC1kZXZfMC4xNC4xLXI2X2FybXY0dC5pcGsKKyMgNCAgICAgICBLaUIgL2VwOTN4eC9saWJnY2Mtcy1kZXZfNC4yLjItcjJfZXA5M3h4LmlwaworCitQQUNLQUdFUyA9KyAibGliZ2V0dGV4dGxpYiBsaWJnZXR0ZXh0c3JjIgorRklMRVNfbGliZ2V0dGV4dGxpYiA9ICIke2xpYmRpcn0vbGliZ2V0dGV4dGxpYi0qLnNvKiIKK0ZJTEVTX2xpYmdldHRleHRzcmMgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRzcmMtKi5zbyoiCisKK1BBQ0tBR0VTID0rICJnZXR0ZXh0LXJ1bnRpbWUgZ2V0dGV4dC1ydW50aW1lLWRldiBnZXR0ZXh0LXJ1bnRpbWUtZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qIgorCisjIFRoZSBpdHMvTWFrZWZpbGUuYW0gaGFzIGRlZmluZWQ6CisjIGl0c2RpciA9ICQocGtnZGF0YWRpcikkKFBBQ0tBR0VfU1VGRklYKS9pdHMKKyMgbm90IGl0c2RpciA9ICQocGtnZGF0YWRpciksIHNvIHVzZSB3aWxkY2FyZCB0byBtYXRjaCB0aGUgdmVyc2lvbi4KK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS0qLyoiCisKK0ZJTEVTX2dldHRleHQtcnVudGltZSA9ICIke2JpbmRpcn0vZ2V0dGV4dCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25nZXR0ZXh0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZW52c3Vic3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nZXR0ZXh0LnNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliYXNwcmludGYuc28qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vR05VLkdldHRleHQuZGxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTX2dldHRleHQtcnVudGltZS1kZXYgKz0gIiR7bGliZGlyfS9saWJhc3ByaW50Zi5hIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2F1dG9zcHJpbnRmLmggXAorICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRvYyA9ICIke21hbmRpcn0vbWFuMS9nZXR0ZXh0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9uZ2V0dGV4dC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvZW52c3Vic3QuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xLy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjMvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2dldHRleHQuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L25nZXR0ZXh0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9lbnZzdWJzdC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvKi4zLmh0bWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dldHRleHQvQUJPVVQtTkxTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvY3NoYXJwZG9jLyogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vbGliYXNwcmludGYvYXV0b3NwcmludGYuaHRtbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5mb2Rpcn0vYXV0b3NwcmludGYuaW5mbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3ByZWxvYWRhYmxlX2xpYmludGwuc28KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwlybSAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyoKKwlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aAorCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4KKwlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KKworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L21zZ2ZtdCBcCisgICAgICAgICAgICAgICAgR0VUVEVYVERBVEFESVI9IiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC0wLjIwLyIKKworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBjZCAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvCisgICAgICAgIHNlZCAtaSAnL15idWlsZHRlc3QtVEVTVFM6IC9jIGJ1aWxkdGVzdC1URVNUUzogJChURVNUUykgJChjaGVja19QUk9HUkFNUyknIE1ha2VmaWxlCisgICAgICAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCisgICAgICAgIGNkIC0KK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpZiBbICR7UFRFU1RfRU5BQkxFRH0gPSAiMSIgXTsgdGhlbgorICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vcG8KKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbWlzYworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9pdHMKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3R5bGVzCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2dudWxpYi1saWIKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXhhbXBsZXMKKyAgICAgICAgY3AgLXJmICR7U30vZ2V0dGV4dC10b29scy9pdHMvKiAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vaXRzCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvc3R5bGVzLyogICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3N0eWxlcworICAgICAgICBjcCAtcmYgJHtTfS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvZ2V0dGV4dC5oICAke0R9JHtQVEVTVF9QQVRIfS9nbnVsaWItbGliCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvZXhhbXBsZXMvaGVsbG8tYyAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V4YW1wbGVzCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvdGVzdHMvKiAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvLmxpYnMvKiAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtcnVudGltZS9pbnRsLy5saWJzL2xpYmdudWludGwuc28uOCogICAgICAgICAke0R9JHtsaWJkaXJ9LworICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52ICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBzZWQgLWkgJy9eTWFrZWZpbGU6L2MgTWFrZWZpbGU6JyAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgLWUgJ3M6bGFuZy1jIGxhbmctYysrOmxhbmctYysrOmcnICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9zcmMvbXNndW5mbXQudGNsICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvc3JjL3Byb2plY3QtaWQgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9uZ2V0dGV4dCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZW52c3Vic3QgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC10b29scy9zcmMvLmxpYnMvY2xkci1wbHVyYWxzICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3BvL2dldHRleHQtdG9vbHMucG90ICR7RH0ke1BURVNUX1BBVEh9L3BvCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXRvb2xzL21pc2MvKiAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9taXNjCisgICAgICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vIC1uYW1lICIqLm8iIC1leGVjIHJtIHt9IFw7CisgICAgICAgIGNobW9kIDA3NTUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvbGFuZy12YWxhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3BsdXJhbC0xICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXRjbC00IFwKKyAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC12YWxhLTEgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXBvLTIKKyAgICBmaQorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIlwKKyAgICBnbGliYy1nY29udi1iaWc1IFwKKyAgICBnbGliYy1jaGFybWFwLWJpZzUgXAorICAgIGdsaWJjLWdjb252LWNwMTI1MSBcCisgICAgZ2xpYmMtY2hhcm1hcC1jcDEyNTEgXAorICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktOSBcCisgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS05IFwKKyAgICBnbGliYy1jaGFybWFwLWtvaTgtciBcCisgICAgZ2xpYmMtZ2NvbnYta29pOC1yIFwKKyAgICBnbGliYy1nY29udi1pc284ODU5LTIgXAorICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktMiBcCisgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIFwKKyAgICBnbGliYy1jaGFybWFwLWlzby04ODU5LTEgXAorICAgIGdsaWJjLWdjb252LWV1Yy1rciBcCisgICAgZ2xpYmMtY2hhcm1hcC1ldWMta3IgXAorICAgIGdsaWJjLWdjb252LWV1Yy1qcCBcCisgICAgZ2xpYmMtY2hhcm1hcC1ldWMtanAgXAorICAgIGxvY2FsZS1iYXNlLWRlLWRlIFwKKyAgICBsb2NhbGUtYmFzZS1mci1mciBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIlwKKyAgICBsb2NhbGUtYmFzZS1kZS1kZS5pc28tODg1OS0xIFwKKyAgICBsb2NhbGUtYmFzZS1mci1mci5pc28tODg1OS0xIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImxkZmxhZ3MiCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAicnBhdGhzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtZ2lvLXRlc3RzLXJlc291cmNlcy5jLWNvbW1lbnQtb3V0LWEtYnVpbGQtaG9zdC1vbmx5LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1naW8tdGVzdHMtcmVzb3VyY2VzLmMtY29tbWVudC1vdXQtYS1idWlsZC1ob3N0LW9ubHktLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZmVmMTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtZ2lvLXRlc3RzLXJlc291cmNlcy5jLWNvbW1lbnQtb3V0LWEtYnVpbGQtaG9zdC1vbmx5LS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDczMDgwM2YyYmMzZjJmMWE3NGY0ZGI4MDlhMjI0MDY2ZTdlYWUxMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgOCBKYW4gMjAyMCAxODoyMjo0NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBnaW8vdGVzdHMvcmVzb3VyY2VzLmM6IGNvbW1lbnQgb3V0IGEgYnVpbGQgaG9zdC1vbmx5IHRlc3QKKworVGhpcyB0ZXN0IHJlcXVpcmVzIGJ1aWxkaW5nIHJlc291cmNlcyBpbiBhIHdheSB0aGF0IGlzCitub3QgY3Jvc3MtY29tcGF0aWJsZSAoaGFyZGNvZGVzIGxkIGFuZCBvYmpjb3B5KS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBnaW8vdGVzdHMvcmVzb3VyY2VzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9naW8vdGVzdHMvcmVzb3VyY2VzLmMgYi9naW8vdGVzdHMvcmVzb3VyY2VzLmMKK2luZGV4IGM0NGQyMTQuLmUyODlhMDEgMTAwNjQ0CistLS0gYS9naW8vdGVzdHMvcmVzb3VyY2VzLmMKKysrKyBiL2dpby90ZXN0cy9yZXNvdXJjZXMuYworQEAgLTk5Myw3ICs5OTMsNyBAQCBtYWluIChpbnQgICBhcmdjLAorICAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL2F1dG9tYXRpYyIsIHRlc3RfcmVzb3VyY2VfYXV0b21hdGljKTsKKyAgIC8qIFRoaXMgb25seSB1c2VzIGF1dG9tYXRpYyByZXNvdXJjZXMgdG9vLCBzbyBpdCB0ZXN0cyB0aGUgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyAqLworICAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL21vZHVsZSIsIHRlc3RfcmVzb3VyY2VfbW9kdWxlKTsKKy0gIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS9iaW5hcnktbGlua2VkIiwgdGVzdF9yZXNvdXJjZV9iaW5hcnlfbGlua2VkKTsKKysgIC8qIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS9iaW5hcnktbGlua2VkIiwgdGVzdF9yZXNvdXJjZV9iaW5hcnlfbGlua2VkKTsgKi8KKyAjZW5kaWYKKyAgIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS91cmkvcXVlcnktaW5mbyIsIHRlc3RfdXJpX3F1ZXJ5X2luZm8pOworICAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL3VyaS9maWxlIiwgdGVzdF91cmlfZmlsZSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTEtR01haW5Db250ZXh0LUZpeC1HU291cmNlLWl0ZXJhdG9yLWlmLWl0ZXJhdGlvbi1jYW4tbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMS1HTWFpbkNvbnRleHQtRml4LUdTb3VyY2UtaXRlcmF0b3ItaWYtaXRlcmF0aW9uLWNhbi1tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3Yjc3ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTEtR01haW5Db250ZXh0LUZpeC1HU291cmNlLWl0ZXJhdG9yLWlmLWl0ZXJhdGlvbi1jYW4tbS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGVmMmJlNDI5OThlM2ZjMTAyOTkwNTVhNWEwMWY3Yzc5MTUzODE3NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogTW9uLCAzIEZlYiAyMDIwIDE1OjM4OjI4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEdNYWluQ29udGV4dCAtIEZpeCBHU291cmNlIGl0ZXJhdG9yIGlmIGl0ZXJhdGlvbiBjYW4gbW9kaWZ5CisgdGhlIGxpc3QKKworV2UgZmlyc3QgaGF2ZSB0byByZWYgdGhlIG5leHQgc291cmNlIGFuZCB0aGVuIHVucmVmIHRoZSBwcmV2aW91cyBvbmUuCitUaGlzIG1pZ2h0IGJlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgc291cmNlLCBhbmQgZnJlZWluZyB0aGUKK3ByZXZpb3VzIHNvdXJjZSBtaWdodCB1bnJlZiBhbmQgZnJlZSB0aGUgbmV4dCBvbmUgd2hpY2ggd291bGQgdGhlbiBsZWF2ZQordXNlIHdpdGggYSBkYW5nbGluZyBwb2ludGVyIGhlcmUuCisKK0ZpeGVzIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliL2lzc3Vlcy8yMDMxCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLy0vY29tbWl0L2IwNmM0OGRlNzU1NDYwN2ZmM2ZiNThkNmMwNTEwY2ZhNTA4OGU5MDldCisKKy0tLQorIGdsaWIvZ21haW4uYyB8IDggKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2xpYi9nbWFpbi5jIGIvZ2xpYi9nbWFpbi5jCitpbmRleCBhZjk3OWM4Li5hOWEyODdkIDEwMDY0NAorLS0tIGEvZ2xpYi9nbWFpbi5jCisrKysgYi9nbGliL2dtYWluLmMKK0BAIC05NjksMTMgKzk2OSwxNyBAQCBnX3NvdXJjZV9pdGVyX25leHQgKEdTb3VyY2VJdGVyICppdGVyLCBHU291cmNlICoqc291cmNlKQorICAgICogR1NvdXJjZUxpc3QgdG8gYmUgcmVtb3ZlZCBmcm9tIHNvdXJjZV9saXN0cyAoaWYgaXRlci0+c291cmNlIGlzCisgICAgKiB0aGUgb25seSBzb3VyY2UgaW4gaXRzIGxpc3QsIGFuZCBpdCBpcyBkZXN0cm95ZWQpLCBzbyB3ZSBoYXZlIHRvCisgICAgKiBrZWVwIGl0IHJlZmZlZCB1bnRpbCBhZnRlciB3ZSBhZHZhbmNlIGl0ZXItPmN1cnJlbnRfbGlzdCwgYWJvdmUuCisrICAgKgorKyAgICogQWxzbyB3ZSBmaXJzdCBoYXZlIHRvIHJlZiB0aGUgbmV4dCBzb3VyY2UgYmVmb3JlIHVucmVmZmluZyB0aGUKKysgICAqIHByZXZpb3VzIG9uZSBhcyB1bnJlZmZpbmcgdGhlIHByZXZpb3VzIHNvdXJjZSBjYW4gcG90ZW50aWFsbHkKKysgICAqIGZyZWUgdGhlIG5leHQgb25lLgorICAgICovCisrICBpZiAobmV4dF9zb3VyY2UgJiYgaXRlci0+bWF5X21vZGlmeSkKKysgICAgZ19zb3VyY2VfcmVmIChuZXh0X3NvdXJjZSk7CisKKyAgIGlmIChpdGVyLT5zb3VyY2UgJiYgaXRlci0+bWF5X21vZGlmeSkKKyAgICAgZ19zb3VyY2VfdW5yZWZfaW50ZXJuYWwgKGl0ZXItPnNvdXJjZSwgaXRlci0+Y29udGV4dCwgVFJVRSk7CisgICBpdGVyLT5zb3VyY2UgPSBuZXh0X3NvdXJjZTsKKy0gIGlmIChpdGVyLT5zb3VyY2UgJiYgaXRlci0+bWF5X21vZGlmeSkKKy0gICAgZ19zb3VyY2VfcmVmIChpdGVyLT5zb3VyY2UpOworCisgICAqc291cmNlID0gaXRlci0+c291cmNlOworICAgcmV0dXJuICpzb3VyY2UgIT0gTlVMTDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMi1HTWFpbkNvbnRleHQtRml4LW1lbW9yeS1sZWFrcy1hbmQtbWVtb3J5LWNvcnJ1cHRpb24tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEyLUdNYWluQ29udGV4dC1GaXgtbWVtb3J5LWxlYWtzLWFuZC1tZW1vcnktY29ycnVwdGlvbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5N2Q5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMi1HTWFpbkNvbnRleHQtRml4LW1lbW9yeS1sZWFrcy1hbmQtbWVtb3J5LWNvcnJ1cHRpb24tLnBhdGNoCkBAIC0wLDAgKzEsMTA5IEBACitGcm9tIDYxMTQzMGEzMmE0NmQwZGM4MDZhODI5MTYxZTJkY2NmOWMwMTk2YTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogTW9uLCAzIEZlYiAyMDIwIDE1OjM1OjUxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEdNYWluQ29udGV4dCAtIEZpeCBtZW1vcnkgbGVha3MgYW5kIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4KKyBmcmVlaW5nIHNvdXJjZXMgd2hpbGUgZnJlZWluZyBhIGNvbnRleHQKKworSW5zdGVhZCBvZiBkZXN0cm95aW5nIHNvdXJjZXMgZGlyZWN0bHkgd2hpbGUgZnJlZWluZyB0aGUgY29udGV4dCwgYW5kCitwb3RlbnRpYWxseSBmcmVlaW5nIHRoZW0gaWYgdGhpcyB3YXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZW0sIGNvbGxlY3QKK25ldyByZWZlcmVuY2VzIG9mIGFsbCBzb3VyY2VzIGluIGEgc2VwYXJhdGUgbGlzdCBiZWZvcmUgYW5kIGF0IHRoZSBzYW1lCit0aW1lIGludmFsaWRhdGUgdGhlaXIgY29udGV4dCBzbyB0aGF0IHRoZXkgY2FuJ3QgYWNjZXNzIGl0IGFueW1vcmUuIE9ubHkKK29uY2UgYWxsIHNvdXJjZXMgaGF2ZSB0aGVpciBjb250ZXh0IGludmFsaWRhdGVkLCBkZXN0cm95IHRoZW0gd2hpbGUKK3N0aWxsIGtlZXBpbmcgYSByZWZlcmVuY2UgdG8gdGhlbS4gT25jZSBhbGwgc291cmNlcyBhcmUgZGVzdHJveWVkIHdlIGdldAorcmlkIG9mIHRoZSBhZGRpdGlvbmFsIHJlZmVyZW5jZXMgYW5kIGZyZWUgdGhlbSBpZiBub3RoaW5nIGVsc2Uga2VlcHMgYQorcmVmZXJlbmNlIHRvIHRoZW0gYW55bW9yZS4KKworVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSAyNjA1NjU1OGJlIGluIDIwMTIuCisKK1RoZSBwcmV2aW91cyBjb2RlIHRoYXQgaW52YWxpZGF0ZWQgdGhlIGNvbnRleHQgb2YgZWFjaCBzb3VyY2UgYW5kIHRoZW4KK2Rlc3Ryb3llZCBpdCBiZWZvcmUgZ29pbmcgdG8gdGhlIG5leHQgc291cmNlIHdpdGhvdXQga2VlcGluZyBhbgorYWRkaXRpb25hbCByZWZlcmVuY2UgY2F1c2VkIG1lbW9yeSBsZWFrcyBvciBtZW1vcnkgY29ycnVwdGlvbiBkZXBlbmRpbmcKK29uIHRoZSBvcmRlciBvZiB0aGUgc291cmNlcyBpbiB0aGUgc291cmNlcyBsaXN0cy4KKworSWYgYSBzb3VyY2Ugd2FzIGRlc3Ryb3llZCBpdCBtaWdodCBoYXBwZW4gdGhhdCB0aGlzIHdhcyB0aGUgbGFzdAorcmVmZXJlbmNlIHRvIHRoaXMgc291cmNlLCBhbmQgaXQgd291bGQgdGhlbiBiZSBmcmVlZC4gVGhpcyB3b3VsZCBjYXVzZQordGhlIGZpbmFsaXplIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgd2hpY2ggbWlnaHQgZGVzdHJveSBhbmQgdW5yZWYKK2Fub3RoZXIgc291cmNlIGFuZCBwb3RlbnRpYWxseSBmcmVlIGl0LiBUaGlzIG90aGVyIHNvdXJjZSB3b3VsZCB0aGVuCitlaXRoZXIKKy0gZ28gdGhyb3VnaCB0aGUgbm9ybWFsIGZyZWUgbG9naWMgYW5kIGNoYW5nZSB0aGUgaW50ZXJuIGxpbmtlZCBsaXN0CisgIGJldHdlZW4gdGhlIHNvdXJjZXMsIHdoaWxlIG90aGVyIHNvdXJjZXMgdGhhdCBhcmUgdW5yZWZmZWQgYXMgcGFydCBvZgorICB0aGUgbWFpbiBjb250ZXh0IGZyZWVpbmcgd291bGQgbm90LiBBcyBzdWNoIHRoZSBsaXN0IHdvdWxkIGJlIGluIGFuCisgIGluY29uc2lzdGVudCBzdGF0ZSBhbmQgd2UgbWlnaHQgZGVyZWZlcmVuY2UgZnJlZWQgbWVtb3J5LgorLSBnbyB0aHJvdWdoIHRoZSBub3JtYWwgZGVzdHJveSBhbmQgZnJlZSBsb2dpYyBidXQgYmVjYXVzZSB0aGUgY29udGV4dAorICBwb2ludGVyIHdhcyBhbHJlYWR5IGludmFsaWRhdGVkIGl0IHdvdWxkIHNpbXBseSBtYXJrIHRoZSBzb3VyY2UgYXMKKyAgZGVzdHJveWVkIHdpdGhvdXQgYWN0dWFsbHkgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgY29udGV4dC4gVGhpcyB3b3VsZAorICB0aGVuIGNhdXNlIGEgbWVtb3J5IGxlYWsgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIG93bmVkIGJ5IHRoZSBjb250ZXh0IGlzCisgIG5vdCBmcmVlZC4KKworRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL2d0ay1ycy9nbGliL2lzc3Vlcy81ODMgd2hpbGUgc3RpbGwga2VlcGluZworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTc2NyBmaXhlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWIvLS9jb21taXQvYWEyMDE2N2Q0MTljNjQ5ZjM0ZmVkMDZhOTQ2Mzg5MGI0MWIxZWJhMF0KKworLS0tCisgZ2xpYi9nbWFpbi5jIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2xpYi9nbWFpbi5jIGIvZ2xpYi9nbWFpbi5jCitpbmRleCBhOWEyODdkLi4xMGJhMmY4IDEwMDY0NAorLS0tIGEvZ2xpYi9nbWFpbi5jCisrKysgYi9nbGliL2dtYWluLmMKK0BAIC01MzgsNiArNTM4LDcgQEAgZ19tYWluX2NvbnRleHRfdW5yZWYgKEdNYWluQ29udGV4dCAqY29udGV4dCkKKyAgIEdTb3VyY2VJdGVyIGl0ZXI7CisgICBHU291cmNlICpzb3VyY2U7CisgICBHTGlzdCAqc2xfaXRlcjsKKysgIEdTTGlzdCAqc19pdGVyLCAqcmVtYWluaW5nX3NvdXJjZXMgPSBOVUxMOworICAgR1NvdXJjZUxpc3QgKmxpc3Q7CisgICBndWludCBpOworCitAQCAtNTU3LDEwICs1NTgsMzAgQEAgZ19tYWluX2NvbnRleHRfdW5yZWYgKEdNYWluQ29udGV4dCAqY29udGV4dCkKKworICAgLyogZ19zb3VyY2VfaXRlcl9uZXh0KCkgYXNzdW1lcyB0aGUgY29udGV4dCBpcyBsb2NrZWQuICovCisgICBMT0NLX0NPTlRFWFQgKGNvbnRleHQpOworLSAgZ19zb3VyY2VfaXRlcl9pbml0ICgmaXRlciwgY29udGV4dCwgVFJVRSk7CisrCisrICAvKiBGaXJzdCBjb2xsZWN0IGFsbCByZW1haW5pbmcgc291cmNlcyBmcm9tIHRoZSBzb3VyY2VzIGxpc3RzIGFuZCBzdG9yZSBhCisrICAgKiBuZXcgcmVmZXJlbmNlIGluIGEgc2VwYXJhdGUgbGlzdC4gQWxzbyBzZXQgdGhlIGNvbnRleHQgb2YgdGhlIHNvdXJjZXMKKysgICAqIHRvIE5VTEwgc28gdGhhdCB0aGV5IGNhbid0IGFjY2VzcyBhIHBhcnRpYWxseSBkZXN0cm95ZWQgY29udGV4dCBhbnltb3JlLgorKyAgICoKKysgICAqIFdlIGhhdmUgdG8gZG8gdGhpcyBmaXJzdCBzbyB0aGF0IHdlIGhhdmUgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIGFsbAorKyAgICogc291cmNlcyBhbmQgZGVzdHJveWluZyB0aGVtIGJlbG93IGRvZXMgbm90IGFsc28gZnJlZSB0aGVtLCBhbmQgc28gdGhhdAorKyAgICogbm9uZSBvZiB0aGUgc291cmNlcyBjYW4gYWNjZXNzIHRoZSBjb250ZXh0IGZyb20gdGhlaXIgZmluYWxpemUvZGlzcG9zZQorKyAgICogZnVuY3Rpb25zLiAqLworKyAgZ19zb3VyY2VfaXRlcl9pbml0ICgmaXRlciwgY29udGV4dCwgRkFMU0UpOworICAgd2hpbGUgKGdfc291cmNlX2l0ZXJfbmV4dCAoJml0ZXIsICZzb3VyY2UpKQorICAgICB7CisgICAgICAgc291cmNlLT5jb250ZXh0ID0gTlVMTDsKKysgICAgICByZW1haW5pbmdfc291cmNlcyA9IGdfc2xpc3RfcHJlcGVuZCAocmVtYWluaW5nX3NvdXJjZXMsIGdfc291cmNlX3JlZiAoc291cmNlKSk7CisrICAgIH0KKysgIGdfc291cmNlX2l0ZXJfY2xlYXIgKCZpdGVyKTsKKysKKysgIC8qIE5leHQgZGVzdHJveSBhbGwgc291cmNlcy4gQXMgd2Ugc3RpbGwgaG9sZCBhIHJlZmVyZW5jZSB0byBhbGwgb2YgdGhlbSwKKysgICAqIHRoaXMgd29uJ3QgY2F1c2UgYW55IG9mIHRoZW0gdG8gYmUgZnJlZWQgeWV0IGFuZCBlc3BlY2lhbGx5IHByZXZlbnRzIGFueQorKyAgICogc291cmNlIHRoYXQgdW5yZWZzIGFub3RoZXIgc291cmNlIGZyb20gaXRzIGZpbmFsaXplIGZ1bmN0aW9uIHRvIGJlIGZyZWVkLgorKyAgICovCisrICBmb3IgKHNfaXRlciA9IHJlbWFpbmluZ19zb3VyY2VzOyBzX2l0ZXI7IHNfaXRlciA9IHNfaXRlci0+bmV4dCkKKysgICAgeworKyAgICAgIHNvdXJjZSA9IHNfaXRlci0+ZGF0YTsKKyAgICAgICBnX3NvdXJjZV9kZXN0cm95X2ludGVybmFsIChzb3VyY2UsIGNvbnRleHQsIFRSVUUpOworICAgICB9CisgICBVTkxPQ0tfQ09OVEVYVCAoY29udGV4dCk7CitAQCAtNTg1LDYgKzYwNiwxOCBAQCBnX21haW5fY29udGV4dF91bnJlZiAoR01haW5Db250ZXh0ICpjb250ZXh0KQorICAgZ19jb25kX2NsZWFyICgmY29udGV4dC0+Y29uZCk7CisKKyAgIGdfZnJlZSAoY29udGV4dCk7CisrCisrICAvKiBBbmQgbm93IGZpbmFsbHkgZ2V0IHJpZCBvZiBvdXIgcmVmZXJlbmNlcyB0byB0aGUgc291cmNlcy4gVGhpcyB3aWxsIGNhdXNlCisrICAgKiB0aGVtIHRvIGJlIGZyZWVkIHVubGVzcyBzb21ldGhpbmcgZWxzZSBzdGlsbCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlbS4gRHVlCisrICAgKiB0byBzZXR0aW5nIHRoZSBjb250ZXh0IHBvaW50ZXJzIGluIHRoZSBzb3VyY2VzIHRvIE5VTEwgYWJvdmUsIHRoaXMgd29uJ3QKKysgICAqIGV2ZXIgYWNjZXNzIHRoZSBjb250ZXh0IG9yIHRoZSBpbnRlcm5hbCBsaW5rZWQgbGlzdCBpbnNpZGUgdGhlIEdTb3VyY2UuCisrICAgKiBXZSBhbHJlYWR5IHJlbW92ZWQgdGhlIHNvdXJjZXMgY29tcGxldGVseSBmcm9tIHRoZSBjb250ZXh0IGFib3ZlLiAqLworKyAgZm9yIChzX2l0ZXIgPSByZW1haW5pbmdfc291cmNlczsgc19pdGVyOyBzX2l0ZXIgPSBzX2l0ZXItPm5leHQpCisrICAgIHsKKysgICAgICBzb3VyY2UgPSBzX2l0ZXItPmRhdGE7CisrICAgICAgZ19zb3VyY2VfdW5yZWZfaW50ZXJuYWwgKHNvdXJjZSwgTlVMTCwgRkFMU0UpOworKyAgICB9CisrICBnX3NsaXN0X2ZyZWUgKHJlbWFpbmluZ19zb3VyY2VzKTsKKyB9CisKKyAvKiBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBtYWlubG9vcC9vdmVyZmxvdyB0ZXN0LgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEzLUdNYWluQ29udGV4dC1Nb3ZlLW11dGV4LXVubG9ja2luZy1pbi1kZXN0cnVjdG9yLXJpZ2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTMtR01haW5Db250ZXh0LU1vdmUtbXV0ZXgtdW5sb2NraW5nLWluLWRlc3RydWN0b3ItcmlnaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzllOWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEzLUdNYWluQ29udGV4dC1Nb3ZlLW11dGV4LXVubG9ja2luZy1pbi1kZXN0cnVjdG9yLXJpZ2gucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAzZTlkODVmMWI3NWUyYjEwOTZkOTY0MzU2M2Q3ZDE3MzgwNzUyZmM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1NlYmFzdGlhbj0yMERyPUMzPUI2Z2U/PSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IFR1ZSwgMTEgRmViIDIwMjAgMDk6MzQ6MzggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gR01haW5Db250ZXh0IC0gTW92ZSBtdXRleCB1bmxvY2tpbmcgaW4gZGVzdHJ1Y3RvciByaWdodAorIGJlZm9yZSBmcmVlaW5nIHRoZSBtdXRleAorCitUaGlzIGRvZXMgbm90IGhhdmUgYW55IGJlaGF2aW91ciBjaGFuZ2VzIGJ1dCBpcyBjbGVhbmVyLiBUaGUgbXV0ZXggaXMKK29ubHkgdW5sb2NrZWQgbm93IGFmdGVyIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBjb250ZXh0IGFyZSBkb25lIGFuZCByaWdodAorYmVmb3JlIGZyZWVpbmcgdGhlIG11dGV4IGFuZCB0aGUgY29udGV4dCBpdHNlbGYuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLy0vY29tbWl0LzczMGE3NWZjOGU4MjcxYzM4ZmJkNTM2M2QxZjc3YTAwODc2YjlkZGNdCisKKy0tLQorIGdsaWIvZ21haW4uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dsaWIvZ21haW4uYyBiL2dsaWIvZ21haW4uYworaW5kZXggMTBiYTJmOC4uYjFkZjQ3MCAxMDA2NDQKKy0tLSBhL2dsaWIvZ21haW4uYworKysrIGIvZ2xpYi9nbWFpbi5jCitAQCAtNTg0LDcgKzU4NCw2IEBAIGdfbWFpbl9jb250ZXh0X3VucmVmIChHTWFpbkNvbnRleHQgKmNvbnRleHQpCisgICAgICAgc291cmNlID0gc19pdGVyLT5kYXRhOworICAgICAgIGdfc291cmNlX2Rlc3Ryb3lfaW50ZXJuYWwgKHNvdXJjZSwgY29udGV4dCwgVFJVRSk7CisgICAgIH0KKy0gIFVOTE9DS19DT05URVhUIChjb250ZXh0KTsKKworICAgZm9yIChzbF9pdGVyID0gY29udGV4dC0+c291cmNlX2xpc3RzOyBzbF9pdGVyOyBzbF9pdGVyID0gc2xfaXRlci0+bmV4dCkKKyAgICAgeworQEAgLTU5NSw2ICs1OTQsNyBAQCBnX21haW5fY29udGV4dF91bnJlZiAoR01haW5Db250ZXh0ICpjb250ZXh0KQorCisgICBnX2hhc2hfdGFibGVfZGVzdHJveSAoY29udGV4dC0+c291cmNlcyk7CisKKysgIFVOTE9DS19DT05URVhUIChjb250ZXh0KTsKKyAgIGdfbXV0ZXhfY2xlYXIgKCZjb250ZXh0LT5tdXRleCk7CisKKyAgIGdfcHRyX2FycmF5X2ZyZWUgKGNvbnRleHQtPnBlbmRpbmdfZGlzcGF0Y2hlcywgVFJVRSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmluZGV4IGZmMjYyOWYuLjQ4ODk5Y2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyM2NkMTU3MzUyYWM4YTUzZjk5MmRkYzZkNmQwMWNhYWRmMWM3OWJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMDYxZDY2MDU3ZGZkN2U3MjY3NzcyZGY2MGIzNjQ3NGZiMTgwZWVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IE1vbiwgOSBOb3YgMjAxNSAxMTowNzoyNyArMDIwMAogU3ViamVjdDogW1BBVENIXSBFbmFibGUgbW9yZSB0ZXN0cyB3aGlsZSBjcm9zcy1jb21waWxpbmcKQEAgLTExLDE0ICsxMSwxNCBAQAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogLS0tCi0gZ2lvL3Rlc3RzL21lc29uLmJ1aWxkIHwgMjYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisgZ2lvL3Rlc3RzL21lc29uLmJ1aWxkIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lvL3Rlc3RzL21lc29uLmJ1aWxkIGIvZ2lvL3Rlc3RzL21lc29uLmJ1aWxkCi1pbmRleCA2NWY0M2UyLi4wMjhiMTk2IDEwMDY0NAoraW5kZXggMzgyZGZjYy4uYzE3MTcxNyAxMDA2NDQKIC0tLSBhL2dpby90ZXN0cy9tZXNvbi5idWlsZAogKysrIGIvZ2lvL3Rlc3RzL21lc29uLmJ1aWxkCi1AQCAtMTg1LDcgKzE4NSw3IEBAIGlmIGhvc3RfbWFjaGluZS5zeXN0ZW0oKSAhPSAnd2luZG93cycKK0BAIC0xOTEsNyArMTkxLDcgQEAgaWYgaG9zdF9tYWNoaW5lLnN5c3RlbSgpICE9ICd3aW5kb3dzJwogIAogICAgIyAgVGVzdCBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYnJpbmcgdXAgYSBzZXNzaW9uIGJ1cyAocmVxdWlyZXMgZGJ1cy1kYWVtb24pCiAgICBoYXZlX2RidXNfZGFlbW9uID0gZmluZF9wcm9ncmFtKCdkYnVzLWRhZW1vbicsIHJlcXVpcmVkIDogZmFsc2UpLmZvdW5kKCkKQEAgLTI3LDEyICsyNywxMSBAQAogICAgICBhbm5vdGF0ZV9hcmdzID0gWwogICAgICAgICctLWFubm90YXRlJywgJ29yZy5wcm9qZWN0LkJhcicsICdLZXkxJywgJ1ZhbHVlMScsCiAgICAgICAgJy0tYW5ub3RhdGUnLCAnb3JnLnByb2plY3QuQmFyJywgJ29yZy5ndGsuR0RCdXMuSW50ZXJuYWwnLCAnVmFsdWUyJywKLUBAIC00NTMsMTIgKzQ1MywxMyBAQCBpZiBpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZAorQEAgLTQ2NSwxMiArNDY1LDEyIEBAIGlmIGluc3RhbGxlZF90ZXN0c19lbmFibGVkCiAgICBpbnN0YWxsX2RhdGEoJ3N0YXRpYy1saW5rLnB5JywgaW5zdGFsbF9kaXIgOiBpbnN0YWxsZWRfdGVzdHNfZXhlY2RpcikKICBlbmRpZgogIAogLWlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCi0rI2lmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAraWYgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQogIAogICAgcGx1Z2luX3Jlc291cmNlc19jID0gY3VzdG9tX3RhcmdldCgncGx1Z2luLXJlc291cmNlcy5jJywKQEAgLTQzLDcgKzQyLDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tZ2VuZXJhdGUtc291cmNlJywKLUBAIC00ODIsNyArNDgzLDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC00OTQsNyArNDk0LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIHRlc3RfZ3Jlc291cmNlID0gY3VzdG9tX3RhcmdldCgndGVzdC5ncmVzb3VyY2UnLAogICAgICBpbnB1dCA6ICd0ZXN0LmdyZXNvdXJjZS54bWwnLAogICAgICBvdXRwdXQgOiAndGVzdC5ncmVzb3VyY2UnLApAQCAtNTIsNyArNTEsNyBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi1AQCAtNDkzLDcgKzQ5NCw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTA1LDcgKzUwNSw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICB0ZXN0X3Jlc291cmNlczJfYyA9IGN1c3RvbV90YXJnZXQoJ3Rlc3RfcmVzb3VyY2VzMi5jJywKICAgICAgaW5wdXQgOiAndGVzdDMuZ3Jlc291cmNlLnhtbCcsCiAgICAgIG91dHB1dCA6ICd0ZXN0X3Jlc291cmNlczIuYycsCkBAIC02MSw3ICs2MCw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLWdlbmVyYXRlJywKLUBAIC01MDQsNyArNTA1LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01MTYsNyArNTE2LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIHRlc3RfcmVzb3VyY2VzMl9oID0gY3VzdG9tX3RhcmdldCgndGVzdF9yZXNvdXJjZXMyLmgnLAogICAgICBpbnB1dCA6ICd0ZXN0My5ncmVzb3VyY2UueG1sJywKICAgICAgb3V0cHV0IDogJ3Rlc3RfcmVzb3VyY2VzMi5oJywKQEAgLTcwLDcgKzY5LDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tZ2VuZXJhdGUnLAotQEAgLTUxNiw3ICs1MTcsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTUyOCw3ICs1MjgsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgICBpbnB1dCA6ICd0ZXN0Mi5ncmVzb3VyY2UueG1sJywKICAgICAgZGVwZW5kcyA6IGJpZ190ZXN0X3Jlc291cmNlLAogICAgICBvdXRwdXQgOiAndGVzdF9yZXNvdXJjZXMuYycsCkBAIC03OSw3ICs3OCw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKLUBAIC01MjcsNyArNTI4LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01MzksNyArNTM5LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIGRpZ2l0X3Rlc3RfcmVzb3VyY2VzX2MgPSBjdXN0b21fdGFyZ2V0KCdkaWdpdF90ZXN0X3Jlc291cmNlcy5jJywKICAgICAgaW5wdXQgOiAnMTExX2RpZ2l0X3Rlc3QuZ3Jlc291cmNlLnhtbCcsCiAgICAgIG91dHB1dCA6ICdkaWdpdF90ZXN0X3Jlc291cmNlcy5jJywKQEAgLTg4LDcgKzg3LDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotQEAgLTUzOCw3ICs1MzksNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTU1MCw3ICs1NTAsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgZGlnaXRfdGVzdF9yZXNvdXJjZXNfaCA9IGN1c3RvbV90YXJnZXQoJ2RpZ2l0X3Rlc3RfcmVzb3VyY2VzLmgnLAogICAgICBpbnB1dCA6ICcxMTFfZGlnaXRfdGVzdC5ncmVzb3VyY2UueG1sJywKICAgICAgb3V0cHV0IDogJ2RpZ2l0X3Rlc3RfcmVzb3VyY2VzLmgnLApAQCAtOTcsMTIgKzk2LDExIEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLWdlbmVyYXRlJywKLUBAIC01NjUsMTEgKzU2NiwxMiBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQotICAgIyBTdXBwb3J0IGZvciAtLWFkZC1zeW1ib2wgd2FzIGFkZGVkIHRvIExMVk0gb2JqY29weSBpbiAyMDE5Ci0gICAjIChodHRwczovL3Jldmlld3MubGx2bS5vcmcvRDU4MjM0KS4gRklYTUU6IFRoaXMgdGVzdCBjb3VsZCBiZSBlbmFibGVkIGZvcgorQEAgLTU3OSwxMSArNTc5LDExIEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICAjIExMVk0gb25jZSB0aGF0IHN1cHBvcnQgaXMgaW4gYSBzdGFibGUgcmVsZWFzZS4KLS0gIGlmIGJ1aWxkX21hY2hpbmUuc3lzdGVtKCkgPT0gJ2xpbnV4JyBhbmQgY2MuZ2V0X2lkKCkgPT0gJ2djYycKLSsgICNpZiBidWlsZF9tYWNoaW5lLnN5c3RlbSgpID09ICdsaW51eCcgYW5kIGNjLmdldF9pZCgpID09ICdnY2MnCisgICBvYmpjb3B5ID0gZmluZF9wcm9ncmFtKCdvYmpjb3B5JywgcmVxdWlyZWQgOiBmYWxzZSkKKyAKKy0gIGlmIGJ1aWxkX21hY2hpbmUuc3lzdGVtKCkgPT0gJ2xpbnV4JyBhbmQgY2MuZ2V0X2lkKCkgPT0gJ2djYycgYW5kIG9iamNvcHkuZm91bmQoKQogKyAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKICAgICAgdGVzdF9ncmVzb3VyY2VfYmluYXJ5ID0gY3VzdG9tX3RhcmdldCgndGVzdDUuZ3Jlc291cmNlJywKICAgICAgICBpbnB1dCA6ICd0ZXN0NS5ncmVzb3VyY2UueG1sJywKQEAgLTExMiw3ICsxMTAsNyBAQAogICAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi1AQCAtNTgxLDcgKzU4Myw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTk1LDcgKzU5NSw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICAgIHRlc3RfcmVzb3VyY2VzX2JpbmFyeV9jID0gY3VzdG9tX3RhcmdldCgndGVzdF9yZXNvdXJjZXNfYmluYXJ5LmMnLAogICAgICAgIGlucHV0IDogJ3Rlc3Q1LmdyZXNvdXJjZS54bWwnLAogICAgICAgIG91dHB1dCA6ICd0ZXN0X3Jlc291cmNlc19iaW5hcnkuYycsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItbWVzb24uY3Jvc3MgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItbWVzb24uY3Jvc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGY0MDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9nbGliLW1lc29uLmNyb3NzCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1bcHJvcGVydGllc10KLWhhdmVfYzk5X3ZzbnByaW50ZiA9IHRydWUKLWhhdmVfYzk5X3NucHJpbnRmID0gdHJ1ZQotaGF2ZV91bml4OThfcHJpbnRmID0gdHJ1ZQotdmFfdmFsX2NvcHkgPSB0cnVlCi1ncm93aW5nX3N0YWNrID0gZmFsc2UKLQotW2JpbmFyaWVzXQotZW52ID0gIi91c3IvYmluL2VudiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkN2M1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uCkBAIC0wLDAgKzEsMyBAQAorW3Byb3BlcnRpZXNdCisjIE9uIGFsbCBrbm93biBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyB0aGUgc3RhY2sgZ3Jvd3MgZG93bgorZ3Jvd2luZ19zdGFjayA9IGZhbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWdsaWJjIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1nbGliYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDY0OGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1nbGliYwpAQCAtMCwwICsxLDUgQEAKK1twcm9wZXJ0aWVzXQoraGF2ZV9jOTlfdnNucHJpbnRmID0gdHJ1ZQoraGF2ZV9jOTlfc25wcmludGYgPSB0cnVlCitoYXZlX3VuaXg5OF9wcmludGYgPSB0cnVlCit2YV92YWxfY29weSA9IHRydWUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbGludXggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNTk2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWxpbnV4CkBAIC0wLDAgKzEsNSBAQAorW3Byb3BlcnRpZXNdCitoYXZlX3Byb2Nfc2VsZl9jbWRsaW5lID0gdHJ1ZQorCitbYmluYXJpZXNdCitlbnYgPSAiL3Vzci9iaW4vZW52IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1taW5ndyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbWluZ3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmOTExYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbWluZ3cKQEAgLTAsMCArMSw2IEBACitbcHJvcGVydGllc10KK2hhdmVfYzk5X3ZzbnByaW50ZiA9IGZhbHNlCitoYXZlX2M5OV9zbnByaW50ZiA9IGZhbHNlCitoYXZlX3VuaXg5OF9wcmludGYgPSBmYWxzZQordmFfdmFsX2NvcHkgPSB0cnVlCitoYXZlX3Byb2Nfc2VsZl9jbWRsaW5lID0gZmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbXVzbCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbXVzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDQ5ZTUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1tdXNsCkBAIC0wLDAgKzEsNiBAQAorW3Byb3BlcnRpZXNdCitoYXZlX2M5OV92c25wcmludGYgPSB0cnVlCitoYXZlX2M5OV9zbnByaW50ZiA9IHRydWUKK2hhdmVfdW5peDk4X3ByaW50ZiA9IHRydWUKK3ZhX3ZhbF9jb3B5ID0gdHJ1ZQoraGF2ZV9zdHJsY3B5ID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoCmluZGV4IDdlOTkyNTguLmZjMzIwZGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDYzMjViZjRlOGEyZjU2OWM1NWM4ZTFhMzZiOTQzOWQzNTY2Zjk4ZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhjNjIzYWNkYmVhM2VjYzI4MTJiYmFhZmNmYzg5Mjc1OGZhOTc4ZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogRnJpLCAxMSBNYXIgMjAxNiAxNTozNTo1NSArMDAwMAogU3ViamVjdDogW1BBVENIXSBnbGliLTIuMDogcmVsb2NhdGUgdGhlIEdJTyBtb2R1bGUgZGlyZWN0b3J5IGZvciBuYXRpdmUgYnVpbGRzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcnVuLXB0ZXN0CmluZGV4IGZjNTAwODIuLjdhMjMxYjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcnVuLXB0ZXN0CkBAIC0xLDYgKzEsOSBAQAogIyEgL2Jpbi9zaAogCiBzZXQgLWV1eAoraWYgaWQgLXUgZ2xpYjItdGVzdDsgdGhlbgorICAgdXNlcmRlbCBnbGliMi10ZXN0CitmaQogdXNlcmFkZCBnbGliMi10ZXN0CiBzdSBnbGliMi10ZXN0IC1jICdnbm9tZS1kZXNrdG9wLXRlc3RpbmctcnVubmVyIGdsaWInCiB1c2VyZGVsIGdsaWIyLXRlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi42Mi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3YTE1YTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIGdsaWIuaW5jCi0KLVBFID0gIjEiCi0KLVNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2dsaWIvJHtTSFJUX1ZFUn0vZ2xpYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LURBVEFESVJOQU1FLW9uLXVjbGliYy1MaW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVNldC1ob3N0X21hY2hpbmUtY29ycmVjdGx5LXdoZW4tYnVpbGRpbmctd2l0aC1taW5ndzMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtd3JpdGUtYmluZGlyLWludG8tcGtnLWNvbmZpZy1maWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLVJ1bi1hdG9taWNzLXRlc3Qtb24tY2xhbmctYXMtd2VsbC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL2dsaWItbWVzb24uY3Jvc3MiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZWQzYTcwMzk3YTAxOTk2NWVmYWMwYzQ5ZjljODE2NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTg4MjRhNDEzZjc2ZGYwMzk3MzljMmE3OGY0NWIxMDkzOWQ1MjZhZTc0OTViYWI0ZTY5NGU2NzMwZGViM2YxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDk2MjM1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjQuYmIKQEAgLTAsMCArMSw1MyBAQAorcmVxdWlyZSBnbGliLmluYworCitQRSA9ICIxIgorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1EQVRBRElSTkFNRS1vbi11Y2xpYmMtTGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TZXQtaG9zdF9tYWNoaW5lLWNvcnJlY3RseS13aGVuLWJ1aWxkaW5nLXdpdGgtbWluZ3czLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXdyaXRlLWJpbmRpci1pbnRvLXBrZy1jb25maWctZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1SdW4tYXRvbWljcy10ZXN0LW9uLWNsYW5nLWFzLXdlbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1naW8tdGVzdHMtcmVzb3VyY2VzLmMtY29tbWVudC1vdXQtYS1idWlsZC1ob3N0LW9ubHktLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtR01haW5Db250ZXh0LUZpeC1HU291cmNlLWl0ZXJhdG9yLWlmLWl0ZXJhdGlvbi1jYW4tbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLUdNYWluQ29udGV4dC1GaXgtbWVtb3J5LWxlYWtzLWFuZC1tZW1vcnktY29ycnVwdGlvbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1HTWFpbkNvbnRleHQtTW92ZS1tdXRleC11bmxvY2tpbmctaW4tZGVzdHJ1Y3Rvci1yaWdoLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDUyMjM0ZWNiYTEyODkzMmJlZDkwYmJjMzU1M2JmZTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM4NDAzMGQ3N2ZhOTcxMjEzNWRmYTgwMzZhZDY2MzkyNTY1NWFlOTViMWQxOTM5OWI2MjAwZTg2OTkyNWJiYyIKKworIyBGaW5kIGFueSBtZXNvbiBjcm9zcyBmaWxlcyBpbiBGSUxFU1BBVEggdGhhdCBhcmUgcmVsZXZhbnQgZm9yIHRoZSBjdXJyZW50CisjIGJ1aWxkICh1c2luZyBzaXRlaW5mbykgYW5kIGFkZCB0aGVtIHRvIEVYVFJBX09FTUVTT04uCitpbmhlcml0IHNpdGVpbmZvCitkZWYgZmluZF9tZXNvbl9jcm9zc19maWxlcyhkKToKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKToKKyAgICAgICAgcmV0dXJuICIiCisKKyAgICBjb3JlYmFzZSA9IGQuZ2V0VmFyKCJDT1JFQkFTRSIpCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zCisgICAgc2l0ZWRhdGEgPSBzaXRlaW5mb19kYXRhKGQpCisgICAgIyBmaWxlbmFtZSAtPiBmb3VuZAorICAgIGZpbGVzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQorICAgIGZvciBwYXRoIGluIGQuZ2V0VmFyKCJGSUxFU1BBVEgiKS5zcGxpdCgiOiIpOgorICAgICAgICBmb3IgZWxlbWVudCBpbiBzaXRlZGF0YToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ocGF0aCwgIm1lc29uLmNyb3NzLmQiLCBlbGVtZW50KSkKKyAgICAgICAgICAgIGZpbGVzW2ZpbGVuYW1lLnJlcGxhY2UoY29yZWJhc2UsICIke0NPUkVCQVNFfSIpXSA9IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKQorCisgICAgaXRlbXMgPSBbIi0tY3Jvc3MtZmlsZT0iICsgayBmb3Igayx2IGluIGZpbGVzLml0ZW1zKCkgaWYgdl0KKyAgICBkLmFwcGVuZFZhcigiRVhUUkFfT0VNRVNPTiIsICIgIiArICIgIi5qb2luKGl0ZW1zKSkKKyAgICBpdGVtcyA9IFsiJXM6JXMiICUgKGssICJUcnVlIiBpZiB2IGVsc2UgIkZhbHNlIikgZm9yIGssdiBpbiBmaWxlcy5pdGVtcygpXQorICAgIGQuYXBwZW5kVmFyRmxhZygiZG9fY29uZmlndXJlIiwgImZpbGUtY2hlY2tzdW1zIiwgIiAiICsgIiAiLmpvaW4oaXRlbXMpKQorCitweXRob24gKCkgeworICAgIGZpbmRfbWVzb25fY3Jvc3NfZmlsZXMoZCkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCmluZGV4IGU4MTFiNDIuLjdlYmVkMGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwpAQCAtNDksNyArNDksNiBAQAogUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLURpbnN0YWxsZWRfdGVzdHM9dHJ1ZSwtRGluc3RhbGxlZF90ZXN0cz1mYWxzZSxkYnVzIgogCiBFWFRSQV9PRU1FU09OID0gIi1EZHRyYWNlPWZhbHNlIC1EZmFtPWZhbHNlIC1Ec3lzdGVtdGFwPWZhbHNlIC1Ec2VsaW51eD1kaXNhYmxlZCIKLUVYVFJBX09FTUVTT05fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLS1jcm9zcy1maWxlICR7V09SS0RJUn0vZ2xpYi1tZXNvbi5jcm9zcyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KQEAgLTU5LDEzICs1OCwxNSBAQAogICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpbyBcCiAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9LypnaW8tcXVlcnltb2R1bGVzIFwKICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcyIKKworRklMRVNfJHtQTn0tdXRpbHMgKz0gIiR7YmluZGlyfS9nbGliLWdlbm1hcnNoYWwgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWdldHRleHRpemUgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLW1rZW51bXMgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWNvbXBpbGUtcmVzb3VyY2VzIgorCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nbGliLTIuMC9pbmNsdWRlIFwKICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYioke1NPTElCU0RFVn0gXAogICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWdlbm1hcnNoYWwgXAotICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1nZXR0ZXh0aXplIFwKLSAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItbWtlbnVtcyBcCi0gICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWNvbXBpbGUtcmVzb3VyY2VzIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzL2dzY2hlbWEuZHRkIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC92YWxncmluZC9nbGliLnN1cHAgXApAQCAtMTI3LDYgKzEyOCwxMSBAQAogCQkJcm0gJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvZ2RidXMtc2VyaWFsaXphdGlvbi50ZXN0CiAJCWZpCiAJZmkKKwlpZiBbIC1mICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliL3N0YXRpYy1saW5rLnRlc3QgXTsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JHtNTFBSRUZJWH0iICE9ICJ4IjsgdGhlbgorICAgICAgICAgICAgICAgIG12ICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliL3N0YXRpYy1saW5rLnRlc3QgJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvJHtNTFBSRUZJWH1zdGF0aWMtbGluay50ZXN0CisgICAgICAgIGZpCisJZmkKIH0KIAogIyBBcyB3ZSBkbyBub3QgYnVpbGQgcHl0aG9uMyBmb3Igd2luZG93cywgbWFrZXMgbm8gc2Vuc2UgdG8gc2hpcCB0aGUgc2NyaXB0IHRoYXQncyB1c2luZyBpdApAQCAtMTM5LDYgKzE0NSw4IEBACiAKIFJERVBFTkRTXyR7UE59LWNvZGVnZW4gKz0gIiR7Q09ERUdFTl9QWVRIT05fUkRFUEVORFN9IgogCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tdXRpbHMiCisKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJcCiAgICAgICAgICAgICBjb3JldXRpbHMgXAogICAgICAgICAgICAgbGliZ2NjIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWQzZmQ0My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJHTGliIG5ldHdvcmtpbmcgZXh0ZW5zaW9ucyIKLURFU0NSSVBUSU9OID0gImdsaWItbmV0d29ya2luZyBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGNlcnRhaW4gR0xpYiBuZXR3b3JraW5nIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIEdMaWIgaXRzZWxmIGJlY2F1c2Ugb2YgdGhlaXIgZGVwZW5kZW5jaWVzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLW5ldHdvcmtpbmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY0Y2ExZTFlNDNlNjIzYjkxNjA1OTU4NWJmN2U0NzU4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2M1NWFlNjc3MWFkN2E3OWZhNjA2YTgzNGY0Njg2ZWQ1NTVjMjc3NGVkNmU5ZWNlNmYzYzBmNmEzZGFiNzExMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLQotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPWVuYWJsZWQsLURnbnV0bHM9ZGlzYWJsZWQsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItRG9wZW5zc2w9ZW5hYmxlZCwtRG9wZW5zc2w9ZGlzYWJsZWQsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbbGlicHJveHldID0gIi1EbGlicHJveHk9ZW5hYmxlZCwtRGxpYnByb3h5PWRpc2FibGVkLGxpYnByb3h5IgotCi1FWFRSQV9PRU1FU09OID0gIi1EZ25vbWVfcHJveHk9ZGlzYWJsZWQiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCi0KLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouc28gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjIuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1OTZjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjMuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJHTGliIG5ldHdvcmtpbmcgZXh0ZW5zaW9ucyIKK0RFU0NSSVBUSU9OID0gImdsaWItbmV0d29ya2luZyBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGNlcnRhaW4gR0xpYiBuZXR3b3JraW5nIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIEdMaWIgaXRzZWxmIGJlY2F1c2Ugb2YgdGhlaXIgZGVwZW5kZW5jaWVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLW5ldHdvcmtpbmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImE3NThjYTYyYmQ1NDk4MmE3OThiMzljNzQ0Y2JmNzgzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGNhMWY4NmYyM2E3NmI1Yzc2NDA2MjRmN2Q1NDkwNzA1Yzc4ZTgxMzc1ZTE3NDFjOWExYzQxY2U3ZjhmN2ZmNyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKKworUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPWVuYWJsZWQsLURnbnV0bHM9ZGlzYWJsZWQsZ251dGxzIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItRG9wZW5zc2w9ZW5hYmxlZCwtRG9wZW5zc2w9ZGlzYWJsZWQsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbGlicHJveHldID0gIi1EbGlicHJveHk9ZW5hYmxlZCwtRGxpYnByb3h5PWRpc2FibGVkLGxpYnByb3h5IgorCitFWFRSQV9PRU1FU09OID0gIi1EZ25vbWVfcHJveHk9ZGlzYWJsZWQiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCisKK0ZJTEVTXyR7UE59ICs9ICJcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouc28gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjljZDQzZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9Y2ZjMGVkNzdhOWY2MmZhNjJlZGVkMDQyZWJlMzFkNzIgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1yZXF1aXJlIGdsaWJjLXZlcnNpb24uaW5jCi0KLSMgVGVsbCBhdXRvdG9vbHMgdGhhdCB3ZSdyZSB3b3JraW5nIGluIHRoZSBsb2NhbGVkZWYgZGlyZWN0b3J5Ci0jCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9sb2NhbGVkZWYiCi0KLWluaGVyaXQgbmF0aXZlCi1pbmhlcml0IGF1dG90b29scwotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToke0ZJTEVfRElSTkFNRX0vZ2xpYmM6IgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL2xvY2FsZWRlZjticmFuY2g9bWFzdGVyO25hbWU9bG9jYWxlZGVmO2Rlc3RzdWZmaXg9Z2l0L2xvY2FsZWRlZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LWNvbXBpbGUtc2VwYXJhdGUtZnJvbS11dGlsLWxpbnV4LWhhcmRsaW5rLnBhdGNoIFwKLSIKLSMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCi0jCi1TUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgotQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCi0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZGU1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMS5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PTE1NDFmZDhmNWU4ZjE1Nzk1MTJiZjA1ZjUzMzM3MWJhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworcmVxdWlyZSBnbGliYy12ZXJzaW9uLmluYworCisjIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQorIworQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgorCitpbmhlcml0IG5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAorICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItdG8tYnVpbGQucGF0Y2g7cGF0Y2hkaXI9bG9jYWxlZGVmIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLWZyb20tdXRpbC1saW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxvY2FsZWRlZi1maXgtdXBzLWhhcmRsaW5rLXRvLW1ha2UtaXQtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggXAorIgorIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KKyMKK1NSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCitDRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29tbW9uLmluYwppbmRleCBmYTQ2ZmQ4Li44ZDQxMmNjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb21tb24uaW5jCkBAIC00LDcgKzQsNyBAQAogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgogCi1MSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWNmYzBlZDc3YTlmNjJmYTYyZWRlZDA0MmViZTMxZDcyIFwKK0xJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNFUzttZDU9MTU0MWZkOGY1ZThmMTU3OTUxMmJmMDVmNTMzMzcxYmEgXAogICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCiAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgpAQCAtMjIsNCArMjIsNCBAQAogIwogQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKIAotUFYgPSAiMi4zMCIKK1BWID0gIjIuMzEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4zMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4zMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMzEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMzAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCmluZGV4IDlkZDVhMGQuLjI4NWE5YWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwpAQCAtMSw2ICsxLDYgQEAKIElOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgogCi1QQUNLQUdFUyA9ICIke1BOfS1kYmcgY2F0Y2hzZWd2IHNsbiBuc2NkIGxkZCB0emNvZGUgZ2xpYmMtdGhyZWFkLWRiICR7UE59LXBpYyBsaWJjaWRuIGxpYm1lbXVzYWdlIGxpYm5zcy1kYiBsaWJzZWdmYXVsdCAke1BOfS1wY3Byb2ZpbGUgbGlic290cnVzcyAke1BOfSAke1BOfS11dGlscyBnbGliYy1leHRyYS1uc3MgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgbGRjb25maWciCitQQUNLQUdFUyA9ICIke1BOfS1kYmcgY2F0Y2hzZWd2IHNsbiBuc2NkIGxkY29uZmlnIGxkZCB0emNvZGUgZ2xpYmMtdGhyZWFkLWRiICR7UE59LXBpYyBsaWJjaWRuIGxpYm1lbXVzYWdlIGxpYm5zcy1kYiBsaWJzZWdmYXVsdCAke1BOfS1wY3Byb2ZpbGUgbGlic290cnVzcyAke1BOfSAke1BOfS11dGlscyBnbGliYy1leHRyYS1uc3MgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MiCiAKICMgVGhlIGxkLnNvIGluIHRoaXMgZ2xpYmMgc3VwcG9ydHMgdGhlIEdOVV9IQVNICiBSUFJPVklERVNfJHtQTn0gPSAiZWdsaWJjIHJ0bGQoR05VX0hBU0gpIgpAQCAtNjUsOSArNjUsMjEgQEAKIERFU0NSSVBUSU9OX2xpYnNvdHJ1c3MgPSAiTGlicmFyeSB0byBzdXBwb3J0IHNvdHJ1c3Mgd2hpY2ggdHJhY2VzIGNhbGxzIHRocm91Z2ggUExUcyIKIERFU0NSSVBUSU9OX3R6Y29kZSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgogCi1pbmhlcml0IGxpYmMtY29tbW9uIG11bHRpbGliX2hlYWRlcgoraW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIKIAotZG9faW5zdGFsbF9hcHBlbmQgKCkgeworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGxfcm9vdD0ke0R9IGluc3RhbGwKKwlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2xkLnNvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYKKwlpbnN0YWxsIC1kICR7RH0ke2xvY2FsZWRpcn0KKwltYWtlIC1mICR7V09SS0RJUn0vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIElOPSIke1N9L2xvY2FsZWRhdGEvU1VQUE9SVEVEIiBPVVQ9IiR7V09SS0RJUn0vU1VQUE9SVEVEIgorCSMgZ2V0IHJpZCBvZiBzb21lIGJyb2tlbiBmaWxlcy4uLgorCWZvciBpIGluICR7R0xJQkNfQlJPS0VOX0xPQ0FMRVN9OyBkbworCQlzZWQgLWkgIi8kaS9kIiAke1dPUktESVJ9L1NVUFBPUlRFRAorCWRvbmUKKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9ycGMKKwlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKwlybSAtcmYgJHtEfSR7bGliZXhlY2Rpcn0vZ2V0Y29uZgorCiAJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCiAKIAkjIHJlbW92ZSBlbXB0eSBnbGliYyBkaXIKQEAgLTc1LDcgKzg3LDcgQEAKIAkJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KIAlmaQogCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvc3lzY2FsbC5oIGJpdHMvbG9uZy1kb3VibGUuaCBiaXRzL2Zsb2F0bi5oCisJb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvc3lzY2FsbC5oIGJpdHMvbG9uZy1kb3VibGUuaCBiaXRzL2Zsb2F0bi5oIGJpdHMvZW5kaWFubmVzcy5oIGJpdHMvc3RydWN0X3J3bG9jay5oCiAKIAlpZiBbIC1mICR7RH0ke2JpbmRpcn0vbXRyYWNlIF07IHRoZW4KIAkJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgLWUgJzJzLGV4ZWMuKnBlcmwsZXhlYyAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS9tdHJhY2UKQEAgLTEwOCw2ICsxMjAsMTEgQEAKIAlmaQogfQogCitkZWYgZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpOgorICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcsICdwcGMtZWZkJyBdOgorICAgICAgICByZXR1cm4gIi0td2l0aG91dC1mcCIKKyAgICByZXR1cm4gIiIKKwogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCiAJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZApAQCAtMjEzLDYgKzIzMCw4IEBACiAJcm0gLXJmICRjbGVhbnVwZGlyJHtsaWJkaXJ9L2djb252CiAJcm0gLXJmICRjbGVhbnVwZGlyJHtsb2NhbGVkaXJ9CiAJcm0gLXJmICRjbGVhbnVwZGlyJHtkYXRhZGlyfS9sb2NhbGUKKwlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAkY2xlYW51cGRpciR7ZGF0YWRpcn0KKwogCWlmIFsgIiR7bGliZGlyfSIgIT0gIiR7ZXhlY19wcmVmaXh9L2xpYiIgXSAmJiBbICIke3Jvb3RfcHJlZml4fS9saWIiICE9ICIke2V4ZWNfcHJlZml4fS9saWIiIF07IHRoZW4KIAkJaWYgWyAtZCAiJGNsZWFudXBkaXIke2V4ZWNfcHJlZml4fS9saWIiIF07IHRoZW4KIAkJCWlmIFsgLXogIiR7QVJDSF9EWU5BTUlDX0xPQURFUn0iIC1vIFwKQEAgLTIzMyw2ICsyNTIsMjUgQEAKIAlzdGFzaF9sb2NhbGVfY2xlYW51cCAke1BLR0R9CiB9CiAKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6CisgICAgICAgIHBrZ3MgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCisgICAgICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nKQorICAgICAgICBwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAiIgorICAgICAgICAjIFNldCB0aGUgYmFzZSBwYWNrYWdlLi4uCisgICAgICAgIGQuc2V0VmFyKCdQS0dfJyArIHByZWZpeCArIGJwbiwgcHJlZml4ICsgJ2xpYmM2JykKKyAgICAgICAgbGliY3ByZWZpeCA9IHByZWZpeCArIGJwbiArICctJworICAgICAgICBmb3IgcCBpbiBwa2dzOgorICAgICAgICAgICAgIyBBbmQgYWxsIHRoZSBzdWJwYWNrYWdlcy4KKyAgICAgICAgICAgIGlmIHAuc3RhcnRzd2l0aChsaWJjcHJlZml4KToKKyAgICAgICAgICAgICAgICByZW5hbWVkID0gcC5yZXBsYWNlKGJwbiwgJ2xpYmM2JywgMSkKKyAgICAgICAgICAgICAgICBkLnNldFZhcignUEtHXycgKyBwLCByZW5hbWVkKQorICAgICAgICAjIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIC1kYmcgcGFja2FnZQorICAgICAgICBkLmFwcGVuZFZhcignUlBST1ZJREVTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSQ09ORkxJQ1RTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVQTEFDRVNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKK30KKwogcGtnX3Bvc3RpbnN0X25zY2QgKCkgewogCWlmIFsgLXogIiREIiBdOyB0aGVuCiAJCWlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdGluZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RpbmcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTQyYWU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdGluZy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi1kb19jb21waWxlX2FwcGVuZCAoKSB7Ci0JIyBub3cgZ2VuZXJhdGUgc2NyaXB0IHRvIGRyaXZlIHRlc3RpbmcKLQllY2hvICIjIS91c3IvYmluL2VudiBzaCIgPiR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZXQgPj4gJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCSMgcHJ1bmUgb3V0IHRoZSB1bm5lZWRlZCB2YXJzCi0Jc2VkIC1pIC1lICIvXkJBU0gvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15VU0VSL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eT1BUL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eRElSU1RBQ0svZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15FVUlEL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eRlVOQ05BTUUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15HUk9VUFMvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15IT1NUL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eSE9NRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXklGUy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkxDX0FMTC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkxPR05BTUUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15NQUNIVFlQRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXk9TVFlQRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBJUEUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15TSEVMTC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXicvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15VSUQvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15URVJNL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUEtHXy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBPU0lYTFlfL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUFBJRC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBTNC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlEvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15TSExWTC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlNUQUdJTkcvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15MRF9MSUJSQVJZX1BBVEgvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15QU0VVRE8vZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCi0JIyBwb2ludCB0byByZWFsIHN5c3Jvb3Qgbm90IHRoZSB0b29sY2hhaW4gYm9vdHN0cmFwIHN5c3Jvb3QKLQlzZWQgLWkgLWUgInMvXC10Y2Jvb3RzdHJhcC8vZyIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCi0JIyB1c2UgdGhlIGZpbmFsIGNyb3NzLWdjYyB0byB0ZXN0IHNpbmNlIHNvbWUgdGVzdHMgbmVlZCBsaWJzdGRjKysKLQlzZWQgLWkgLWUgInMvXlBBVEg9LipcLmdjYy1jcm9zcy1pbml0aWFsXDovUEFUSD0vZyIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCi0JIyBhcHBlbmQgZXhlY3V0aW9uIHBhcnQgc2NyaXB0Ci1jYXQgPj4gJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYyA8PCBTVE9QCi10YXJnZXQ9IlwkMSIKLWlmIFsgInhcJHRhcmdldCIgPSAieCIgXQotdGhlbgotCWVjaG8gIlBsZWFzZSBzcGVjaWZ5IHRoZSB0YXJnZXQgbWFjaGluZSBhbmQgcmVtb3RlIHVzZXIgaW4gZm9ybSBvZiB1c2VyQHRhcmdldCIKLQlleGl0IDE7Ci1maQotc3NoIFwkdGFyZ2V0IGxzIFwkUFdEXCAgMj4mMSA+IC9kZXYvbnVsbAotaWYgWyAieFwkPyIgIT0gIngwIiBdCi10aGVuCi0JZWNobyAiRmFpbGVkIGNvbm5lY3RpbmcgdG8gXCR0YXJnZXQgaXQgY291bGQgYmUgYmVjYXVzZSBvZjoiCi0JZWNobyAiMS4gWW91IGRvbnQgaGF2ZSBwYXNzd29yZGxlc3Mgc3NoIHNldHVwIHRvIGFjY2VzcyBcJHRhcmdldCIKLQllY2hvICIyLiBORlMgc2hhcmUgb24gXCR0YXJnZXQgaXMgbm90IG1vdW50ZWQgb3IgaWYgbW91bnRlZCB0aGVuIG5vdCBtYXRjaGluZyB0aGUgYnVpbGQgdHJlZSBsYXlvdXQuIgotCWVjaG8gIiAgIFRoZSB0cmVlIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGF0IHNhbWUgbG9jYXRpb24gb24gYnVpbGQgaG9zdCBhbmQgdGFyZ2V0IgotCWVjaG8gIiAgIFlvdSBjYW4gYWRkIG5mcy1jbGllbnQgdG8gSU1BR0VfRkVBVFVSRVMgdG8gZ2V0IHRoZSBuZnMgY2xpZW50IG9uIHRhcmdldCIKLQllY2hvICIzLiBuZnMgc2VydmVyIG9uIGJ1aWxkIGhvc3QgaXMgbm90IHJ1bm5pbmcuIgotCWVjaG8gIiAgIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSAnbm9fcm9vdF9zcXVhc2gnIGFkZGVkIGluIC9ldGMvZXhwb3J0cyBpZiB5b3Ugd2FudCIKLQllY2hvICIgICB0byB0ZXN0IGFzIHJvb3QgdXNlciBvbiB0YXJnZXQgKHVzdWFsbHkgaXRzIHJlY29tbWVuZGVkIHRvIGNyZWF0ZSBhIG5vbiIKLQllY2hvICIgICByb290IHVzZXIuIgotCWVjaG8gIiAgIEFzIGEgc2FuaXR5IGNoZWNrIG1ha2Ugc3VyZSB0aGF0IHRhcmdldCBjYW4gcmVhZC93cml0ZSB0byB0aGUgZ2xpYmMgYnVpbGQgdHJlZSIKLQllY2hvICIgICBQbGVhc2UgcmVmZXIgdG8gJHtTfS9FR0xJQkMuY3Jvc3MtdGVzdGluZyBmb3IgZnVydGhlciBpbnN0cnVjdGlvbnMgb24gc2V0dXAiCi0JZXhpdCAxCi1maQotCWVjaG8gIiMgd2UgdGVzdCB1c2luZyBjcm9zcyBjb21waWxlciBmcm9tIHJlYWwgc3lzcm9vdCB0aGVyZWZvcmUgb3ZlcnJpZGUgdGhlIiA+ICR7Qn0vY29uZmlncGFybXMKLQllY2hvICIjIGRlZmluaXRpb25zIHRoYXQgY29tZSBmcm9tICR7Qn0vY29uZmlnLm1ha2UiID4+ICR7Qn0vY29uZmlncGFybXMKLQlmZ3JlcCB0Y2Jvb3RzdHJhcCAke0J9L2NvbmZpZy5tYWtlID4gJHtCfS9jb25maWdwYXJtcwotCXNlZCAtaSAtZSAicy9cLXRjYm9vdHN0cmFwLy9nIiAke0J9L2NvbmZpZ3Bhcm1zCi0KLSMgZysrIHVzZXMgZmxhZyAtbm9zdGRpbmMsIHNvIHRoZSBsb2NhdGlvbnMgb2Ygc3lzdGVtIGluY2x1ZGUgaGVhZGVycyBtdXN0IGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkCi0jIElmIHRoZSBsb2NhdGlvbnMgYXJlIG5vdCBhbHJlYWR5IHNwZWNpZmllZCBpbiBjb25maWcubWFrZSwgdGhlbiB3ZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOgotIyAgICA8c3lzcm9vdD4vdXNyL2luY2x1ZGUvYysrLzxnKysgdmVyc2lvbj4KLSMgICAgPHN5c3Jvb3Q+L3Vzci9pbmNsdWRlL2MrKy88ZysrIHZlcnNpb24+LzxtYWNoaW5lPgotCi1jeHhpbmNsdWRlcz1cYGNhdCAke0J9L2NvbmZpZy5tYWtlIHwgZ2F3ayAnXCQxID09ICJjKystc3lzaW5jbHVkZXMiJyB8IGdhd2sgLUYiPSIgJ3twcmludCBcJDJ9JyB8IHNlZCAicy9bIFx0XVw/Ly9nIlxgCi0KLWlmIFsgLXogIlwkY3h4aW5jbHVkZXMiIF07IHRoZW4KLSAgc3lzcm9vdD1cYGNhdCAke0J9L2NvbmZpZ3Bhcm1zIHwgc2VkIC1uICIvQ1hYL3AiIHwgc2VkIC1lICJzL14uKi0tc3lzcm9vdD0vLyJcYAotICBjeHg9XGBjYXQgJHtCfS9jb25maWdwYXJtcyB8IGdhd2sgJ1wkMSB+IC9eQ1hYLycgfCBnYXdrIC1GIj0iICd7cHJpbnQgXCQyfScgfCBnYXdrICd7cHJpbnQgXCQxfSdcYAotICBjeHhtYWNoaW5lPVxgXCRjeHggLWR1bXBtYWNoaW5lXGAKLSAgY3h4dmVyc2lvbj1cYFwkY3h4IC1kdW1wdmVyc2lvblxgCi0gICMgcGFzcyB0aGUgbmV3IHZhbHVlIG9mIGMrKy1zeXNpbmNsdWRlcyB2aWEgY29uZmlncGFybXMKLSAgZWNobyAiIyBjKystc3lzaW5jbHVkZXMgYWRkZWQ6IiA+PiAke0J9L2NvbmZpZ3Bhcm1zCi0gIGVjaG8gImMrKy1zeXNpbmNsdWRlcyA9IC1pc3lzdGVtIFwkc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvXCRjeHh2ZXJzaW9uIC1pc3lzdGVtIFwkc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvXCRjeHh2ZXJzaW9uL1wkY3h4bWFjaGluZSIgPj4gJHtCfS9jb25maWdwYXJtcwotZmkKLQotd3JhcHBlcj0iJHtTfS9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoIFwkdGFyZ2V0IgotbG9jYWxlZGVmPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vY3Jvc3MtbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgotbWFrZSB0ZXN0cy1jbGVhbgotbWFrZSBjcm9zcy1sb2NhbGVkZWY9IlwkbG9jYWxlZGVmIiBjcm9zcy10ZXN0LXdyYXBwZXI9Ilwkd3JhcHBlciIgLWsgY2hlY2sKLXJtIC1yZiAke0J9L2NvbmZpZ3Bhcm1zCi1TVE9QCi0KLQljaG1vZCAreCAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3ZmQ0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmVxdWlyZSBnbGliY18ke1BWfS5iYgotCi0jIGhhbmRsZSBQTiBkaWZmZXJlbmNlcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZ2xpYmM6IgotCi0jIHN0cmlwIHByb3ZpZGVzCi1QUk9WSURFUyA9ICIiCi0jIHNldHVwIGRlcGVuZHMKLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIiIKLQotcHl0aG9uICgpIHsKLSAgICBsaWJjID0gZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMiKQotICAgIGxpYmNsb2NhbGUgPSBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYy1sb2NhbGUiKQotICAgIGlmIGxpYmMgIT0gImdsaWJjIiBvciBsaWJjbG9jYWxlICE9ICJnbGliYy1sb2NhbGUiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJnbGliYy10ZXN0c3VpdGUgcmVxdWlyZXMgdGhhdCB2aXJ0dWFsL2xpYmMgaXMgZ2xpYmMiKQotfQotCi1ERVBFTkRTICs9ICJnbGliYy1sb2NhbGUgbGliZ2NjIGdjYy1ydW50aW1lIgotCi0jIHJlbW92ZSB0aGUgaW5pdGlhbCBkZXBlbmRzCi1ERVBFTkRTX3JlbW92ZSA9ICJsaWJnY2MtaW5pdGlhbCIKLQotaW5oZXJpdCBxZW11Ci0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jaGVjay10ZXN0LXdyYXBwZXIiCi0KLURFUEVORFMgKz0gIiR7QCdxZW11LW5hdGl2ZScgaWYgZC5nZXRWYXIoJ1RPT0xDSEFJTl9URVNUX1RBUkdFVCcpID09ICd1c2VyJyBlbHNlICcnfSIKLQotVE9PTENIQUlOX1RFU1RfVEFSR0VUID8/PSAidXNlciIKLVRPT0xDSEFJTl9URVNUX0hPU1QgPz89ICJsb2NhbGhvc3QiCi1UT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVIgPz89ICJyb290IgotVE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUID8/PSAiMjIyMiIKLQotZG9fY2hlY2tbZGlyc10gKz0gIiR7Qn0iCi1kb19jaGVja1tub3N0YW1wXSA9ICIxIgotZG9fY2hlY2sgKCkgewotICAgIGNobW9kIDA3NTUgJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIKLQotICAgICMgY2xlYW4gb3V0IHByZXZpb3VzIHRlc3QgcmVzdWx0cwotICAgIG9lX3J1bm1ha2UgdGVzdHMtY2xlYW4KLSAgICAjIG1ha2VmaWxlcyBkb24ndCBjbGVhbiBlbnRpcmVseSAoYW5kIGFsc28gc29tZXRpbWVzIGZhaWxzIGR1ZSB0byB0b28gbWFueSBhcmdzKQotICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLm91dCIgLWRlbGV0ZQotICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLnRlc3QtcmVzdWx0IiAtZGVsZXRlCi0gICAgZmluZCAke0J9L2NhdGdldHMgLW5hbWUgIiouY2F0IiAtZGVsZXRlCi0gICAgZmluZCAke0J9L2NvbmZvcm0gLW5hbWUgInN5bWxpc3QtKiIgLWRlbGV0ZQotICAgIFsgISAtZSAke0J9L3RpbWV6b25lL3Rlc3RkYXRhIF0gfHwgcm0gLXJmICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEKLQotICAgIG9lX3J1bm1ha2UgLWkgXAotICAgICAgICBRRU1VX1NZU1JPT1Q9IiR7UkVDSVBFX1NZU1JPT1R9IiBcCi0gICAgICAgIFFFTVVfT1BUSU9OUz0iJHtAcWVtdV90YXJnZXRfYmluYXJ5KGQpfSAke1FFTVVfT1BUSU9OU30iIFwKLSAgICAgICAgU1NIX0hPU1Q9IiR7VE9PTENIQUlOX1RFU1RfSE9TVH0iIFwKLSAgICAgICAgU1NIX0hPU1RfVVNFUj0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVJ9IiBcCi0gICAgICAgIFNTSF9IT1NUX1BPUlQ9IiR7VE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUfSIgXAotICAgICAgICB0ZXN0LXdyYXBwZXI9IiR7V09SS0RJUn0vY2hlY2stdGVzdC13cmFwcGVyICR7VE9PTENIQUlOX1RFU1RfVEFSR0VUfSIgXAotICAgICAgICBjaGVjawotfQotYWRkdGFzayBkb19jaGVjayBhZnRlciBkb19jb21waWxlCi0KLWluaGVyaXQgbm9wYWNrYWdlcwotZGVsdGFzayBkb19zdGFzaF9sb2NhbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ODdhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMxLmJiCkBAIC0wLDAgKzEsNjMgQEAKK3JlcXVpcmUgZ2xpYmNfJHtQVn0uYmIKKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCisKKyMgaGFuZGxlIFBOIGRpZmZlcmVuY2VzCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9nbGliYzoiCisKKyMgc3RyaXAgcHJvdmlkZXMKK1BST1ZJREVTID0gIiIKKyMgc2V0dXAgZGVwZW5kcworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiIgorCitweXRob24gKCkgeworICAgIGxpYmMgPSBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYyIpCisgICAgbGliY2xvY2FsZSA9IGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjLWxvY2FsZSIpCisgICAgaWYgbGliYyAhPSAiZ2xpYmMiIG9yIGxpYmNsb2NhbGUgIT0gImdsaWJjLWxvY2FsZSI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImdsaWJjLXRlc3RzdWl0ZSByZXF1aXJlcyB0aGF0IHZpcnR1YWwvbGliYyBpcyBnbGliYyIpCit9CisKK0RFUEVORFMgKz0gImdsaWJjLWxvY2FsZSBsaWJnY2MgZ2NjLXJ1bnRpbWUiCisKKyMgcmVtb3ZlIHRoZSBpbml0aWFsIGRlcGVuZHMKK0RFUEVORFNfcmVtb3ZlID0gImxpYmdjYy1pbml0aWFsIgorCitpbmhlcml0IHFlbXUKKworU1JDX1VSSSArPSAiZmlsZTovL2NoZWNrLXRlc3Qtd3JhcHBlciIKKworREVQRU5EUyArPSAiJHtAJ3FlbXUtbmF0aXZlJyBpZiBkLmdldFZhcignVE9PTENIQUlOX1RFU1RfVEFSR0VUJykgPT0gJ3VzZXInIGVsc2UgJyd9IgorCitUT09MQ0hBSU5fVEVTVF9UQVJHRVQgPz89ICJ1c2VyIgorVE9PTENIQUlOX1RFU1RfSE9TVCA/Pz0gImxvY2FsaG9zdCIKK1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiA/Pz0gInJvb3QiCitUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlQgPz89ICIyMjIyIgorCitkb19jaGVja1tkaXJzXSArPSAiJHtCfSIKK2RvX2NoZWNrW25vc3RhbXBdID0gIjEiCitkb19jaGVjayAoKSB7CisgICAgY2htb2QgMDc1NSAke1dPUktESVJ9L2NoZWNrLXRlc3Qtd3JhcHBlcgorCisgICAgIyBjbGVhbiBvdXQgcHJldmlvdXMgdGVzdCByZXN1bHRzCisgICAgb2VfcnVubWFrZSB0ZXN0cy1jbGVhbgorICAgICMgbWFrZWZpbGVzIGRvbid0IGNsZWFuIGVudGlyZWx5IChhbmQgYWxzbyBzb21ldGltZXMgZmFpbHMgZHVlIHRvIHRvbyBtYW55IGFyZ3MpCisgICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioub3V0IiAtZGVsZXRlCisgICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioudGVzdC1yZXN1bHQiIC1kZWxldGUKKyAgICBmaW5kICR7Qn0vY2F0Z2V0cyAtbmFtZSAiKi5jYXQiIC1kZWxldGUKKyAgICBmaW5kICR7Qn0vY29uZm9ybSAtbmFtZSAic3ltbGlzdC0qIiAtZGVsZXRlCisgICAgWyAhIC1lICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEgXSB8fCBybSAtcmYgJHtCfS90aW1lem9uZS90ZXN0ZGF0YQorCisgICAgb2VfcnVubWFrZSAtaSBcCisgICAgICAgIFFFTVVfU1lTUk9PVD0iJHtSRUNJUEVfU1lTUk9PVH0iIFwKKyAgICAgICAgUUVNVV9PUFRJT05TPSIke0BxZW11X3RhcmdldF9iaW5hcnkoZCl9ICR7UUVNVV9PUFRJT05TfSIgXAorICAgICAgICBTU0hfSE9TVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUfSIgXAorICAgICAgICBTU0hfSE9TVF9VU0VSPSIke1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUn0iIFwKKyAgICAgICAgU1NIX0hPU1RfUE9SVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlR9IiBcCisgICAgICAgIHRlc3Qtd3JhcHBlcj0iJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIgJHtUT09MQ0hBSU5fVEVTVF9UQVJHRVR9IiBcCisgICAgICAgIGNoZWNrCit9CithZGR0YXNrIGRvX2NoZWNrIGFmdGVyIGRvX2NvbXBpbGUKKworaW5oZXJpdCBub3BhY2thZ2VzCitkZWx0YXNrIGRvX3N0YXNoX2xvY2FsZQorZGVsdGFzayBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXZlcnNpb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy12ZXJzaW9uLmluYwppbmRleCBjMThjNTgzLi40YzcyZWVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXZlcnNpb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdmVyc2lvbi5pbmMKQEAgLTEsNiArMSw2IEBACi1TUkNCUkFOQ0ggPz0gInJlbGVhc2UvMi4zMC9tYXN0ZXIiCi1QViA9ICIyLjMwIgotU1JDUkVWX2dsaWJjID89ICJiZTlhMzI4YzkzODM0NjQ4ZTBiZWMxMDZhMWY4NjM1N2QxYThjN2UxIgorU1JDQlJBTkNIID89ICJyZWxlYXNlLzIuMzEvbWFzdGVyIgorUFYgPSAiMi4zMStnaXQke1NSQ1BWfSIKK1NSQ1JFVl9nbGliYyA/PSAiNzFmMmIyNDlhMjhlMTdlYWMwZTQ3YzUzYWY0NGQ1YzViNjUxMDFhYSIKIFNSQ1JFVl9sb2NhbGVkZWYgPz0gImNkOWY5NThjNGM5NGE2MzhmYTdiMmI0ZTIxNjI3MzY0ZjFhMWE2NTUiCiAKIEdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCmluZGV4IGVhOWEwNGEuLjIzYTZjYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCkBAIC0xLDYgKzEsNSBAQAogcmVxdWlyZSBnbGliYy1jb21tb24uaW5jCiByZXF1aXJlIGdsaWJjLWxkLmluYwotcmVxdWlyZSBnbGliYy10ZXN0aW5nLmluYwogCiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyBsaWJnY2MtaW5pdGlhbCBsaW51eC1saWJjLWhlYWRlcnMiCiAKQEAgLTEwLDggKzksMTEgQEAKIAogTEVBRF9TT05BTUUgPSAibGliYy5zbyIKIAorIyBtc2dmbXQgY291bGQgY29tZSBmcm9tIGdldHRleHQtbmF0aXZlIGJ1dCB3ZSBkb24ndCBkZXBlbmQgb24gdGhhdCBhbmQKKyMgZGlzYWJsZSBmb3IgcmVwcm9kdWNpYmlsaXR5CiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiIFwKICAgYWNfY3ZfcGF0aF9CQVNIX1NIRUxMPSR7YmFzZV9iaW5kaXJ9L2Jhc2ggXAorICBhY19jdl9wcm9nX01TR0ZNVD0gXAogICBsaWJjX2N2X3NsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAogICBsaWJjX2N2X3Jvb3RzYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCiAgIGxpYmNfY3ZfbG9jYWxlZGlyPSR7bG9jYWxlZGlyfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci1mcm9tLXV0aWwtbGludXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci1mcm9tLXV0aWwtbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3ODZiZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLWZyb20tdXRpbC1saW51eC5wYXRjaApAQCAtMCwwICsxLDExMzAgQEAKK0Zyb20gM2RjZjE0NGU5OThhZWQxN2IzZmI5NTdhMjU1YjFlOTIzYmEwN2Q3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDcgRGVjIDIwMTkgMDk6NTk6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jYWxlZGVmOiBBZGQgaGFyZGxpbmsgcmVzb2x2ZXIgZnJvbSB1dGlsLWxpbnV4CisKK1RoZSBoYXJkIGxpbmsgcmVzb2x2ZXIgdGhhdCBpcyBidWlsdCBpbnRvIGxvY2FsZWRlZiBjYW5ub3QgYmUgcnVuIGluCitwYXJhbGxlbC4gIEl0IHdpbGwgc2VhcmNoIHNpYmxpbmcgZGlyZWN0b3JpZXMgKHdoaWNoIGFyZSBiZSBwcm9jZXNzZWQKK2luIHBhcmFsbGVsKSBhbmQgcGVyZm9ybSBhIGNyZWF0aW9uIG9mIGEgLnRtcCBmaWxlIGFuZCByZW1vdmUgdGhlCitvcmlnaW5hbCBhbmQgbW92ZSB0aGUgLnRtcCBmaWxlIGluLiAgVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBhIHByb2JlCitvY2N1cnMgYSBoYXJkIGxpbmsgY2FuIGJlIHJlcXVlc3RlZCB0byB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIHJlbW92ZWQuCitUaGlzIHdpbGwgbGVhZCB0byBhIHN0cmF5IGNvcHkgb3IgcG90ZW50aWFsbHksIG9uIGEgbG9hZGVkIHN5c3RlbQorY2F1c2UgcmFjZSBjb25kaXRpb24gd2hpY2ggcHNldWRvIGNhbm5vdCBkZWFsIHdpdGgsIHdoZXJlIGl0IGlzIGxlZnQKK3dpdGggYSBoYXJkIGxpbmsgcmVxdWVzdCB0byBhIGZpbGUgdGhhdCBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcworc2l0dWF0aW9uIHBzdWVkbyB3aWxsIGluaGVyaXQgdGhlIHBlcm1pc3Npb25zIG9mIHdoYXQgZXZlciB0aGUgdGFyZ2V0Citpbm9kZSBoYWQgdG8gb2ZmZXIuCisKK0luIHNob3J0LCB0aGVyZSBhcmUgdHdvIHByb2JsZW1zOgorCisxKSBZb3Ugd2lsbCBiZSBsZWZ0IHdpdGggc3RyYXkgY29waWVzIHdoZW4gdXNpbmcgdGhlIGhhcmQgbGluaworcmVzb2x1dGlvbiB0aGF0IGlzIGJ1aWx0IGluIHdoaWxlIHJ1bm5pbmcgaW4gcGFyYWxsZWwgd2l0aAorbG9jYWxlZGVmLgorCisyKSBXaGVuIHJ1bm5pbmcgdW5kZXIgcHNldWRvIHRoZSBwb3NzaWJpbGl0eSBleGlzdHMgZm9yIHVpZC9naWQKK2xlYWthZ2Ugd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgcmVtb3ZlZCBiZWZvcmUgdGhlIGhhcmQgbGluayBjYW4KK2JlIGNvbXBsZXRlZC4KKworVGhlIHNvbHV0aW9uIGlzIHRvIGNhbGwgbG9jYWxlZGVmIHdpdGggLS1uby1oYXJkLWxpbmtzIGFuZCBzZXBhcmF0ZWx5Citwcm9jZXNzIHRoZSBoYXJkbGlua3MgYXQgYSBsYXRlciBwb2ludC4gIFRvIGRvIHRoaXMgcmVxdWlyZXMgdGhlCitpbmNsdXNpb24gb2YgdGhlIGhhcmRsaW5rIHV0aWxpdHkgZm91bmQgaW4gbW9kZXJuIHZlcnNpb25zIG9mCit1dGlsLWxpbnV4LiAgTW9zdCBob3N0IHN5c3RlbXMgZG8gbm90IGhhdmUgdGhpcywgc28gaXQgd2lsbCBiZQoraW5jbHVkZWQgd2l0aCB0aGUgY3Jvc3MtbG9jYWxlZGVmIGJpbmFyeS4KKworW1lPQ1RPICMxMTI5OV0KK1tZT0NUTyAjMTI0MzRdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9jLmggICAgICAgICAgICAgICAgICAgICAgICB8IDQwNyArKysrKysrKysrKysrKysrCisgbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIHwgNTI4ICsrKysrKysrKysrKysrKysrKysrKworIGxvY2FsZS9wcm9ncmFtcy94YWxsb2MuaCAgICAgICAgICAgICAgICAgICB8IDEyOSArKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMTA2NCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9wcm9ncmFtcy9jLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9wcm9ncmFtcy94YWxsb2MuaAorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2MuaCBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5kMGE0MDJlOTBlCistLS0gL2Rldi9udWxsCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCitAQCAtMCwwICsxLDQwNyBAQAorKy8qCisrICogRnVuZGFtZW50YWwgQyBkZWZpbml0aW9ucy4KKysgKi8KKysKKysjaWZuZGVmIFVUSUxfTElOVVhfQ19ICisrI2RlZmluZSBVVElMX0xJTlVYX0NfSAorKworKyNpbmNsdWRlIDxsaW1pdHMuaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3RkYXJnLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrI2lmZGVmIEhBVkVfRVJSX0gKKysjIGluY2x1ZGUgPGVyci5oPgorKyNlbmRpZgorKworKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAorKyMgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiAgICAgLyogZm9yIG1ham9yLCBtaW5vciAqLworKyNlbmRpZgorKworKyNpZm5kZWYgTE9HSU5fTkFNRV9NQVgKKysjIGRlZmluZSBMT0dJTl9OQU1FX01BWCAyNTYKKysjZW5kaWYKKysKKysjaWZuZGVmIE5BTUVfTUFYCisrIyBkZWZpbmUgTkFNRV9NQVggUEFUSF9NQVgKKysjZW5kaWYKKysKKysvKgorKyAqIF9fR05VQ19QUkVSRVEgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgX19oYXNfYXR0cmlidXRlKCkgYW5kCisrICogX19oYXNfZmVhdHVyZSgpLiBUaGUgX19oYXMgbWFjcm9zIGFyZSBzdXBwb3J0ZWQgYnkgY2xhbmcgYW5kIGdjYz49NS4KKysgKi8KKysjaWZuZGVmIF9fR05VQ19QUkVSRVEKKysjIGlmIGRlZmluZWQgX19HTlVDX18gJiYgZGVmaW5lZCBfX0dOVUNfTUlOT1JfXworKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSBcCisrCSgoX19HTlVDX18gPDwgMTYpICsgX19HTlVDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQorKyMgZWxzZQorKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSAwCisrIyBlbmRpZgorKyNlbmRpZgorKworKyNpZmRlZiBfX0dOVUNfXworKworKy8qICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjogYSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovCisrIyBkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpIFwKKysJVUxfQlVJTERfQlVHX09OX1pFUk8oX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGEpLCBfX3R5cGVvZl9fKCZhWzBdKSkpCisrCisrIyBkZWZpbmUgaWdub3JlX3Jlc3VsdCh4KSBfX2V4dGVuc2lvbl9fICh7IFwKKysJX190eXBlb2ZfXyh4KSBfX2R1bW15IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSA9ICh4KTsgKHZvaWQpIF9fZHVtbXk7IFwKKyt9KQorKworKyNlbHNlIC8qICFfX0dOVUNfXyAqLworKyMgZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKQkwCisrIyBkZWZpbmUgX19hdHRyaWJ1dGVfXyhfYXJnXykKKysjIGRlZmluZSBpZ25vcmVfcmVzdWx0KHgpICgodm9pZCkgKHgpKQorKyNlbmRpZiAvKiAhX19HTlVDX18gKi8KKysKKysvKgorKyAqIEl0IGV2YWx1YXRlcyB0byAxIGlmIHRoZSBhdHRyaWJ1dGUvZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQKKysgKiBjb21waWxhdGlvbiB0YXJnZWQuIEZhbGxiYWNrIGZvciBvbGQgY29tcGlsZXJzLgorKyAqLworKyNpZm5kZWYgX19oYXNfYXR0cmlidXRlCisrICAjZGVmaW5lIF9faGFzX2F0dHJpYnV0ZSh4KSAwCisrI2VuZGlmCisrCisrI2lmbmRlZiBfX2hhc19mZWF0dXJlCisrICAjZGVmaW5lIF9faGFzX2ZlYXR1cmUoeCkgMAorKyNlbmRpZgorKworKy8qCisrICogRnVuY3Rpb24gYXR0cmlidXRlcworKyAqLworKyNpZm5kZWYgX191bF9hbGxvY19zaXplCisrIyBpZiAoX19oYXNfYXR0cmlidXRlKGFsbG9jX3NpemUpICYmIF9faGFzX2F0dHJpYnV0ZSh3YXJuX3VudXNlZF9yZXN1bHQpKSB8fCBfX0dOVUNfUFJFUkVRICg0LCAzKQorKyMgIGRlZmluZSBfX3VsX2FsbG9jX3NpemUocykgX19hdHRyaWJ1dGVfXygoYWxsb2Nfc2l6ZShzKSwgd2Fybl91bnVzZWRfcmVzdWx0KSkKKysjIGVsc2UKKysjICBkZWZpbmUgX191bF9hbGxvY19zaXplKHMpCisrIyBlbmRpZgorKyNlbmRpZgorKworKyNpZm5kZWYgX191bF9jYWxsb2Nfc2l6ZQorKyMgaWYgKF9faGFzX2F0dHJpYnV0ZShhbGxvY19zaXplKSAmJiBfX2hhc19hdHRyaWJ1dGUod2Fybl91bnVzZWRfcmVzdWx0KSkgfHwgX19HTlVDX1BSRVJFUSAoNCwgMykKKysjICBkZWZpbmUgX191bF9jYWxsb2Nfc2l6ZShuLCBzKSBfX2F0dHJpYnV0ZV9fKChhbGxvY19zaXplKG4sIHMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKQorKyMgZWxzZQorKyMgIGRlZmluZSBfX3VsX2NhbGxvY19zaXplKG4sIHMpCisrIyBlbmRpZgorKyNlbmRpZgorKworKyNpZiBfX2hhc19hdHRyaWJ1dGUocmV0dXJuc19ub25udWxsKSB8fCBfX0dOVUNfUFJFUkVRICg0LCA5KQorKyMgZGVmaW5lIF9fdWxfcmV0dXJuc19ub25udWxsIF9fYXR0cmlidXRlX18oKHJldHVybnNfbm9ubnVsbCkpCisrI2Vsc2UKKysjIGRlZmluZSBfX3VsX3JldHVybnNfbm9ubnVsbAorKyNlbmRpZgorKworKy8qCisrICogRm9yY2UgYSBjb21waWxhdGlvbiBlcnJvciBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgYnV0IGFsc28gcHJvZHVjZSBhCisrICogcmVzdWx0IChvZiB2YWx1ZSAwIGFuZCB0eXBlIHNpemVfdCksIHNvIHRoZSBleHByZXNzaW9uIGNhbiBiZSB1c2VkCisrICogZS5nLiBpbiBhIHN0cnVjdHVyZSBpbml0aWFsaXplciAob3Igd2hlcmV2ZXIgZWxzZSBjb21tYSBleHByZXNzaW9ucworKyAqIGFyZW4ndCBwZXJtaXR0ZWQpLgorKyAqLworKyNkZWZpbmUgVUxfQlVJTERfQlVHX09OX1pFUk8oZSkgX19leHRlbnNpb25fXyAoc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQorKyNkZWZpbmUgQlVJTERfQlVHX09OX05VTEwoZSkgKCh2b2lkICopc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQorKworKyNpZm5kZWYgQVJSQVlfU0laRQorKyMgZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpCisrI2VuZGlmCisrCisrI2lmbmRlZiBQQVRIX01BWAorKyMgZGVmaW5lIFBBVEhfTUFYIDQwOTYKKysjZW5kaWYKKysKKysjaWZuZGVmIFRSVUUKKysjIGRlZmluZSBUUlVFIDEKKysjZW5kaWYKKysKKysjaWZuZGVmIEZBTFNFCisrIyBkZWZpbmUgRkFMU0UgMAorKyNlbmRpZgorKworKyNpZm5kZWYgbWluCisrIyBkZWZpbmUgbWluKHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJCVwKKysJX190eXBlb2ZfXyh4KSBfbWluMSA9ICh4KTsJCVwKKysJX190eXBlb2ZfXyh5KSBfbWluMiA9ICh5KTsJCVwKKysJKHZvaWQpICgmX21pbjEgPT0gJl9taW4yKTsJCVwKKysJX21pbjEgPCBfbWluMiA/IF9taW4xIDogX21pbjI7IH0pCisrI2VuZGlmCisrCisrI2lmbmRlZiBtYXgKKysjIGRlZmluZSBtYXgoeCwgeSkgX19leHRlbnNpb25fXyAoewkJXAorKwlfX3R5cGVvZl9fKHgpIF9tYXgxID0gKHgpOwkJXAorKwlfX3R5cGVvZl9fKHkpIF9tYXgyID0gKHkpOwkJXAorKwkodm9pZCkgKCZfbWF4MSA9PSAmX21heDIpOwkJXAorKwlfbWF4MSA+IF9tYXgyID8gX21heDEgOiBfbWF4MjsgfSkKKysjZW5kaWYKKysKKysjaWZuZGVmIGNtcF9udW1iZXJzCisrIyBkZWZpbmUgY21wX251bWJlcnMoeCwgeSkgX19leHRlbnNpb25fXyAoewlcCisrCV9fdHlwZW9mX18oeCkgX2EgPSAoeCk7CQkJXAorKwlfX3R5cGVvZl9fKHkpIF9iID0gKHkpOwkJCVwKKysJKHZvaWQpICgmX2EgPT0gJl9iKTsJCQlcCisrCV9hID09IF9iID8gMCA6IF9hID4gX2IgPyAxIDogLTE7IH0pCisrI2VuZGlmCisrCisrI2lmbmRlZiBvZmZzZXRvZgorKyNkZWZpbmUgb2Zmc2V0b2YoVFlQRSwgTUVNQkVSKSAoKHNpemVfdCkgJigoVFlQRSAqKTApLT5NRU1CRVIpCisrI2VuZGlmCisrCisrLyoKKysgKiBjb250YWluZXJfb2YgLSBjYXN0IGEgbWVtYmVyIG9mIGEgc3RydWN0dXJlIG91dCB0byB0aGUgY29udGFpbmluZyBzdHJ1Y3R1cmUKKysgKiBAcHRyOgl0aGUgcG9pbnRlciB0byB0aGUgbWVtYmVyLgorKyAqIEB0eXBlOgl0aGUgdHlwZSBvZiB0aGUgY29udGFpbmVyIHN0cnVjdCB0aGlzIGlzIGVtYmVkZGVkIGluLgorKyAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgd2l0aGluIHRoZSBzdHJ1Y3QuCisrICovCisrI2lmbmRlZiBjb250YWluZXJfb2YKKysjZGVmaW5lIGNvbnRhaW5lcl9vZihwdHIsIHR5cGUsIG1lbWJlcikgX19leHRlbnNpb25fXyAoewlcCisrCWNvbnN0IF9fdHlwZW9mX18oICgodHlwZSAqKTApLT5tZW1iZXIgKSAqX19tcHRyID0gKHB0cik7IFwKKysJKHR5cGUgKikoIChjaGFyICopX19tcHRyIC0gb2Zmc2V0b2YodHlwZSxtZW1iZXIpICk7fSkKKysjZW5kaWYKKysKKysjaWZuZGVmIEhBVkVfUFJPR1JBTV9JTlZPQ0FUSU9OX1NIT1JUX05BTUUKKysjIGlmZGVmIEhBVkVfX19QUk9HTkFNRQorK2V4dGVybiBjaGFyICpfX3Byb2duYW1lOworKyMgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBfX3Byb2duYW1lCisrIyBlbHNlCisrIyAgaWZkZWYgSEFWRV9HRVRFWEVDTkFNRQorKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAorKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKGdldGV4ZWNuYW1lKCksIDApCisrIyAgZWxzZQorKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAorKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKF9fRklMRV9fLCAxKQorKyMgIGVuZGlmCisrc3RhdGljIGNoYXIgcHJvZ19pbnZfc2hfbm1fYnVmWzI1Nl07Cisrc3RhdGljIGlubGluZSBjaGFyICoKKytwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoY2hhciAqZiwgY2hhciBzdHJpcGV4dCkKKyt7CisrCWNoYXIgKnQ7CisrCisrCWlmICgodCA9IHN0cnJjaHIoZiwgJy8nKSkgIT0gTlVMTCkKKysJCXQrKzsKKysJZWxzZQorKwkJdCA9IGY7CisrCisrCXN0cm5jcHkocHJvZ19pbnZfc2hfbm1fYnVmLCB0LCBzaXplb2YocHJvZ19pbnZfc2hfbm1fYnVmKSAtIDEpOworKwlwcm9nX2ludl9zaF9ubV9idWZbc2l6ZW9mKHByb2dfaW52X3NoX25tX2J1ZikgLSAxXSA9ICdcMCc7CisrCisrCWlmIChzdHJpcGV4dCAmJiAodCA9IHN0cnJjaHIocHJvZ19pbnZfc2hfbm1fYnVmLCAnLicpKSAhPSBOVUxMKQorKwkJKnQgPSAnXDAnOworKworKwlyZXR1cm4gcHJvZ19pbnZfc2hfbm1fYnVmOworK30KKysjIGVuZGlmCisrI2VuZGlmCisrCisrCisrI2lmbmRlZiBIQVZFX0VSUl9ICisrc3RhdGljIGlubGluZSB2b2lkCisrZXJybXNnKGNoYXIgZG9leGl0LCBpbnQgZXhjb2RlLCBjaGFyIGFkZGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pCisreworKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7CisrCWlmIChmbXQgIT0gTlVMTCkgeworKwkJdmFfbGlzdCBhcmdwOworKwkJdmFfc3RhcnQoYXJncCwgZm10KTsKKysJCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdwKTsKKysJCXZhX2VuZChhcmdwKTsKKysJCWlmIChhZGRlcnIpCisrCQkJZnByaW50ZihzdGRlcnIsICI6ICIpOworKwl9CisrCWlmIChhZGRlcnIpCisrCQlmcHJpbnRmKHN0ZGVyciwgIiVtIik7CisrCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKysJaWYgKGRvZXhpdCkKKysJCWV4aXQoZXhjb2RlKTsKKyt9CisrCisrI2lmbmRlZiBIQVZFX0VSUgorKyMgZGVmaW5lIGVycihFLCBGTVQuLi4pIGVycm1zZygxLCBFLCAxLCBGTVQpCisrI2VuZGlmCisrCisrI2lmbmRlZiBIQVZFX0VSUlgKKysjIGRlZmluZSBlcnJ4KEUsIEZNVC4uLikgZXJybXNnKDEsIEUsIDAsIEZNVCkKKysjZW5kaWYKKysKKysjaWZuZGVmIEhBVkVfV0FSTgorKyMgZGVmaW5lIHdhcm4oRk1ULi4uKSBlcnJtc2coMCwgMCwgMSwgRk1UKQorKyNlbmRpZgorKworKyNpZm5kZWYgSEFWRV9XQVJOWAorKyMgZGVmaW5lIHdhcm54KEZNVC4uLikgZXJybXNnKDAsIDAsIDAsIEZNVCkKKysjZW5kaWYKKysjZW5kaWYgLyogIUhBVkVfRVJSX0ggKi8KKysKKysKKysvKiBEb24ndCB1c2UgaW5saW5lIGZ1bmN0aW9uIHRvIGF2b2lkICcjaW5jbHVkZSAibmxzLmgiJyBpbiBjLmgKKysgKi8KKysjZGVmaW5lIGVycnRyeWhlbHAoZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCisrCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAorKwkJCXByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsgXAorKwlleGl0KGV2YWwpOyBcCisrfSkKKysKKysvKiBBZnRlciBmYWlsZWQgZXhlY3ZwKCkgKi8KKysjZGVmaW5lIEVYX0VYRUNfRkFJTEVECQkxMjYJLyogUHJvZ3JhbSBsb2NhdGVkLCBidXQgbm90IHVzYWJsZS4gKi8KKysjZGVmaW5lIEVYX0VYRUNfRU5PRU5UCQkxMjcJLyogQ291bGQgbm90IGZpbmQgcHJvZ3JhbSB0byBleGVjLiAgKi8KKysjZGVmaW5lIGVycmV4ZWMobmFtZSkJZXJyKGVycm5vID09IEVOT0VOVCA/IEVYX0VYRUNfRU5PRU5UIDogRVhfRVhFQ19GQUlMRUQsIFwKKysJCQlfKCJmYWlsZWQgdG8gZXhlY3V0ZSAlcyIpLCBuYW1lKQorKworKworK3N0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBpbnQgaXNfcG93ZXJfb2ZfMih1bnNpZ25lZCBsb25nIG51bSkKKyt7CisrCXJldHVybiAobnVtICE9IDAgJiYgKChudW0gJiAobnVtIC0gMSkpID09IDApKTsKKyt9CisrCisrI2lmbmRlZiBIQVZFX0xPRkZfVAorK3R5cGVkZWYgaW50NjRfdCBsb2ZmX3Q7CisrI2VuZGlmCisrCisrI2lmICFkZWZpbmVkKEhBVkVfRElSRkQpICYmICghZGVmaW5lZChIQVZFX0RFQ0xfRElSRkQpIHx8IEhBVkVfREVDTF9ESVJGRCA9PSAwKSAmJiBkZWZpbmVkKEhBVkVfRElSX0REX0ZEKQorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8ZGlyZW50Lmg+Cisrc3RhdGljIGlubGluZSBpbnQgZGlyZmQoRElSICpkKQorK3sKKysJcmV0dXJuIGQtPmRkX2ZkOworK30KKysjZW5kaWYKKysKKysvKgorKyAqIEZhbGxiYWNrIGRlZmluZXMgZm9yIG9sZCB2ZXJzaW9ucyBvZiBnbGliYworKyAqLworKyNpbmNsdWRlIDxmY250bC5oPgorKworKyNpZmRlZiBPX0NMT0VYRUMKKysjZGVmaW5lIFVMX0NMT0VYRUNTVFIJImUiCisrI2Vsc2UKKysjZGVmaW5lIFVMX0NMT0VYRUNTVFIJIiIKKysjZW5kaWYKKysKKysjaWZuZGVmIE9fQ0xPRVhFQworKyNkZWZpbmUgT19DTE9FWEVDIDAKKysjZW5kaWYKKysKKysjaWZkZWYgX19GcmVlQlNEX2tlcm5lbF9fCisrI2lmbmRlZiBGX0RVUEZEX0NMT0VYRUMKKysjZGVmaW5lIEZfRFVQRkRfQ0xPRVhFQwkxNwkvKiBMaWtlIEZfRFVQRkQsIGJ1dCBGRF9DTE9FWEVDIGlzIHNldCAqLworKyNlbmRpZgorKyNlbmRpZgorKworKworKyNpZm5kZWYgQUlfQUREUkNPTkZJRworKyNkZWZpbmUgQUlfQUREUkNPTkZJRyAweDAwMjAKKysjZW5kaWYKKysKKysjaWZuZGVmIElVVEY4CisrI2RlZmluZSBJVVRGOCAwMDQwMDAwCisrI2VuZGlmCisrCisrLyoKKysgKiBNQVhIT1NUTkFNRUxFTiByZXBsYWNlbWVudAorKyAqLworK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGdldF9ob3N0bmFtZV9tYXgodm9pZCkKKyt7CisrCWxvbmcgbGVuID0gc3lzY29uZihfU0NfSE9TVF9OQU1FX01BWCk7CisrCisrCWlmICgwIDwgbGVuKQorKwkJcmV0dXJuIGxlbjsKKysKKysjaWZkZWYgTUFYSE9TVE5BTUVMRU4KKysJcmV0dXJuIE1BWEhPU1ROQU1FTEVOOworKyNlbGlmIEhPU1RfTkFNRV9NQVgKKysJcmV0dXJuIEhPU1RfTkFNRV9NQVg7CisrI2VuZGlmCisrCXJldHVybiA2NDsKKyt9CisrCisrCisrLyoKKysgKiBDb25zdGFudCBzdHJpbmdzIGZvciB1c2FnZSgpIGZ1bmN0aW9ucy4gRm9yIG1vcmUgaW5mbyBzZWUKKysgKiBEb2N1bWVudGF0aW9uL3tob3d0by11c2FnZS1mdW5jdGlvbi50eHQsYm9pbGVycGxhdGUuY30KKysgKi8KKysjZGVmaW5lIFVTQUdFX0hFQURFUiAgICAgKCJcblVzYWdlOlxuIikKKysjZGVmaW5lIFVTQUdFX09QVElPTlMgICAgKCJcbk9wdGlvbnM6XG4iKQorKyNkZWZpbmUgVVNBR0VfRlVOQ1RJT05TICAoIlxuRnVuY3Rpb25zOlxuIikKKysjZGVmaW5lIFVTQUdFX0NPTU1BTkRTICAgKCJcbkNvbW1hbmRzOlxuIikKKysjZGVmaW5lIFVTQUdFX0NPTFVNTlMgICAgKCJcbkF2YWlsYWJsZSBvdXRwdXQgY29sdW1uczpcbiIpCisrI2RlZmluZSBVU0FHRV9TRVBBUkFUT1IgICAgIlxuIgorKworKyNkZWZpbmUgVVNBR0VfT1BUU1RSX0hFTFAgICAgICgiZGlzcGxheSB0aGlzIGhlbHAiKQorKyNkZWZpbmUgVVNBR0VfT1BUU1RSX1ZFUlNJT04gICgiZGlzcGxheSB2ZXJzaW9uIikKKysKKysjZGVmaW5lIFVTQUdFX0hFTFBfT1BUSU9OUyhtYXJnX2RzYykgXAorKwkJIiUtIiAjbWFyZ19kc2MgInMlc1xuIiBcCisrCQkiJS0iICNtYXJnX2RzYyAicyVzXG4iIFwKKysJCSwgIiAtaCwgLS1oZWxwIiwgICAgVVNBR0VfT1BUU1RSX0hFTFAgXAorKwkJLCAiIC1WLCAtLXZlcnNpb24iLCBVU0FHRV9PUFRTVFJfVkVSU0lPTgorKworKyNkZWZpbmUgVVNBR0VfTUFOX1RBSUwoX21hbikgICAoIlxuRm9yIG1vcmUgZGV0YWlscyBzZWUgJXMuXG4iKSwgX21hbgorKworKyNkZWZpbmUgVVRJTF9MSU5VWF9WRVJTSU9OICgiJXMgZnJvbSAlc1xuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lLCBQQUNLQUdFX1NUUklORworKworKyNkZWZpbmUgcHJpbnRfdmVyc2lvbihldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKKysJCXByaW50ZihVVElMX0xJTlVYX1ZFUlNJT04pOyBcCisrCQlleGl0KGV2YWwpOyBcCisrfSkKKysKKysvKgorKyAqIHNjYW5mIG1vZGlmaWVycyBmb3IgInN0cmluZ3MgYWxsb2NhdGlvbiIKKysgKi8KKysjaWZkZWYgSEFWRV9TQ0FORl9NU19NT0RJRklFUgorKyNkZWZpbmUgVUxfU0NOc0EJIiVtcyIKKysjZWxpZiBkZWZpbmVkKEhBVkVfU0NBTkZfQVNfTU9ESUZJRVIpCisrI2RlZmluZSBVTF9TQ05zQQkiJWFzIgorKyNlbmRpZgorKworKy8qCisrICogc2VlayBzdHVmZgorKyAqLworKyNpZm5kZWYgU0VFS19EQVRBCisrIyBkZWZpbmUgU0VFS19EQVRBCTMKKysjZW5kaWYKKysjaWZuZGVmIFNFRUtfSE9MRQorKyMgZGVmaW5lIFNFRUtfSE9MRQk0CisrI2VuZGlmCisrCisrCisrLyoKKysgKiBNYWNyb3MgdG8gY29udmVydCAjZGVmaW5lJ2l0aW9ucyB0byBzdHJpbmdzLCBmb3IgZXhhbXBsZQorKyAqICNkZWZpbmUgWFlYWFkgNDIKKysgKiBwcmludGYgKCIlcz0lc1xuIiwgc3RyaW5naWZ5KFhZWFhZKSwgc3RyaW5naWZ5X3ZhbHVlKFhZWFhZKSk7CisrICovCisrI2RlZmluZSBzdHJpbmdpZnlfdmFsdWUocykgc3RyaW5naWZ5KHMpCisrI2RlZmluZSBzdHJpbmdpZnkocykgI3MKKysKKysvKgorKyAqIFVMX0FTQU5fQkxBQ0tMSVNUIGlzIGEgbWFjcm8gdG8gdGVsbCBBZGRyZXNzU2FuaXRpemVyIChhIGNvbXBpbGUtdGltZQorKyAqIGluc3RydW1lbnRhdGlvbiBzaGlwcGVkIHdpdGggQ2xhbmcgYW5kIEdDQykgdG8gbm90IGluc3RydW1lbnQgdGhlCisrICogYW5ub3RhdGVkIGZ1bmN0aW9uLiAgRnVydGhlcm1vcmUsIGl0IHdpbGwgcHJldmVudCB0aGUgY29tcGlsZXIgZnJvbQorKyAqIGlubGluaW5nIHRoZSBmdW5jdGlvbiBiZWNhdXNlIGlubGluaW5nIGN1cnJlbnRseSBicmVha3MgdGhlIGJsYWNrbGlzdGluZworKyAqIG1lY2hhbmlzbSBvZiBBZGRyZXNzU2FuaXRpemVyLgorKyAqLworKyNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfbWVtb3J5KSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfYWRkcmVzcykKKysjIGRlZmluZSBVTF9BU0FOX0JMQUNLTElTVCBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9yeSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2FkZHJlc3MpKQorKyNlbHNlCisrIyBkZWZpbmUgVUxfQVNBTl9CTEFDS0xJU1QJLyogbm90aGluZyAqLworKyNlbmRpZgorKworKy8qCisrICogTm90ZSB0aGF0IHN5c2NvbmYoX1NDX0dFVFBXX1JfU0laRV9NQVgpIHJldHVybnMgKmluaXRpYWwqIHN1Z2dlc3RlZCBzaXplIGZvcgorKyAqIHB3ZCBidWZmZXIgYW5kIGluIHNvbWUgY2FzZXMgaXQgaXMgbm90IGxhcmdlIGVub3VnaC4gU2VlIFBPU0lYIGFuZAorKyAqIGdldHB3bmFtX3IgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKi8KKysjZGVmaW5lIFVMX0dFVFBXX0JVRlNJWgkoMTYgKiAxMDI0KQorKworKy8qCisrICogRGFyd2luIG9yIG90aGVyIEJTRHMgbWF5IG9ubHkgaGF2ZSBNQVBfQU5PTi4gVG8gZ2V0IGl0IG9uIERhcndpbiB3ZSBtdXN0CisrICogZGVmaW5lIF9EQVJXSU5fQ19TT1VSQ0UgYmVmb3JlIGluY2x1ZGluZyBzeXMvbW1hbi5oLiBXZSBkbyB0aGlzIGluIGNvbmZpZy5oLgorKyAqLworKyNpZiAhZGVmaW5lZCBNQVBfQU5PTllNT1VTICYmIGRlZmluZWQgTUFQX0FOT04KKysjIGRlZmluZSBNQVBfQU5PTllNT1VTICAoTUFQX0FOT04pCisrI2VuZGlmCisrCisrI2VuZGlmIC8qIFVUSUxfTElOVVhfQ19IICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjM2MTU4OTZiMAorLS0tIC9kZXYvbnVsbAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCitAQCAtMCwwICsxLDUyOCBAQAorKy8qCisrICogaGFyZGxpbmsgLSBjb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdmlhIGhhcmRsaW5rcworKyAqCisrICogQ29weXJpZ2h0IChDKSAyMDE4IFJlZCBIYXQsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKiBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+CisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTkgS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd291bGQgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisrICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKysgKi8KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxnZXRvcHQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxkaXJlbnQuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysjaWZkZWYgSEFWRV9QQ1JFCisrIyBkZWZpbmUgUENSRTJfQ09ERV9VTklUX1dJRFRIIDgKKysjIGluY2x1ZGUgPHBjcmUyLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgImMuaCIKKysjaW5jbHVkZSAieGFsbG9jLmgiCisrI2luY2x1ZGUgIm5scy5oIgorKyNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgorKworKyNkZWZpbmUgTkhBU0ggICAoMTw8MTcpICAvKiBNdXN0IGJlIGEgcG93ZXIgb2YgMiEgKi8KKysjZGVmaW5lIE5CVUYgICAgNjQKKysKKytzdHJ1Y3QgaGFyZGxpbmtfZmlsZTsKKysKKytzdHJ1Y3QgaGFyZGxpbmtfaGFzaCB7CisrCXN0cnVjdCBoYXJkbGlua19oYXNoICpuZXh0OworKwlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqY2hhaW47CisrCW9mZl90IHNpemU7CisrCXRpbWVfdCBtdGltZTsKKyt9OworKworK3N0cnVjdCBoYXJkbGlua19kaXIgeworKwlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpuZXh0OworKwljaGFyIG5hbWVbXTsKKyt9OworKworK3N0cnVjdCBoYXJkbGlua19maWxlIHsKKysJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKm5leHQ7CisrCWlub190IGlubzsKKysJZGV2X3QgZGV2OworKwl1bnNpZ25lZCBpbnQgY2tzdW07CisrCWNoYXIgbmFtZVtdOworK307CisrCisrc3RydWN0IGhhcmRsaW5rX2R5bnN0ciB7CisrCWNoYXIgKmJ1ZjsKKysJc2l6ZV90IGFsbG9jOworK307CisrCisrc3RydWN0IGhhcmRsaW5rX2N0bCB7CisrCXN0cnVjdCBoYXJkbGlua19kaXIgKmRpcnM7CisrCXN0cnVjdCBoYXJkbGlua19oYXNoICpocHNbTkhBU0hdOworKwljaGFyIGlvYnVmMVtCVUZTSVpdOworKwljaGFyIGlvYnVmMltCVUZTSVpdOworKwkvKiBzdW1tYXJ5IGNvdW50ZXJzICovCisrCXVuc2lnbmVkIGxvbmcgbG9uZyBuZGlyczsKKysJdW5zaWduZWQgbG9uZyBsb25nIG5vYmplY3RzOworKwl1bnNpZ25lZCBsb25nIGxvbmcgbnJlZ2ZpbGVzOworKwl1bnNpZ25lZCBsb25nIGxvbmcgbmNvbXA7CisrCXVuc2lnbmVkIGxvbmcgbG9uZyBubGlua3M7CisrCXVuc2lnbmVkIGxvbmcgbG9uZyBuc2F2ZWQ7CisrCS8qIGN1cnJlbnQgZGV2aWNlICovCisrCWRldl90IGRldjsKKysJLyogZmxhZ3MgKi8KKysJdW5zaWduZWQgaW50IHZlcmJvc2U7CisrCXVuc2lnbmVkIGludAorKwkJbm9fbGluazoxLAorKwkJY29udGVudF9vbmx5OjEsCisrCQlmb3JjZToxOworK307CisrLyogY3RsIGlzIGluIGdsb2JhbCBzY29wZSBkdWUgdXNlIGluIGF0ZXhpdCgpICovCisrc3RydWN0IGhhcmRsaW5rX2N0bCBnbG9iYWxfY3RsOworKworK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKytzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBoYXNoKG9mZl90IHNpemUsIHRpbWVfdCBtdGltZSkKKyt7CisrCXJldHVybiAoc2l6ZSBeIG10aW1lKSAmIChOSEFTSCAtIDEpOworK30KKysKKytfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisrc3RhdGljIGlubGluZSBpbnQgc3RjbXAoc3RydWN0IHN0YXQgKnN0MSwgc3RydWN0IHN0YXQgKnN0MiwgaW50IGNvbnRlbnRfc2NvcGUpCisreworKwlpZiAoY29udGVudF9zY29wZSkKKysJCXJldHVybiBzdDEtPnN0X3NpemUgIT0gc3QyLT5zdF9zaXplOworKworKwlyZXR1cm4gc3QxLT5zdF9tb2RlICE9IHN0Mi0+c3RfbW9kZQorKwkJfHwgc3QxLT5zdF91aWQgIT0gc3QyLT5zdF91aWQKKysJCXx8IHN0MS0+c3RfZ2lkICE9IHN0Mi0+c3RfZ2lkCisrCQl8fCBzdDEtPnN0X3NpemUgIT0gc3QyLT5zdF9zaXplCisrCQl8fCBzdDEtPnN0X210aW1lICE9IHN0Mi0+c3RfbXRpbWU7CisrfQorKworK3N0YXRpYyB2b2lkIHByaW50X3N1bW1hcnkodm9pZCkKKyt7CisrCXN0cnVjdCBoYXJkbGlua19jdGwgY29uc3QgKmNvbnN0IGN0bCA9ICZnbG9iYWxfY3RsOworKworKwlpZiAoIWN0bC0+dmVyYm9zZSkKKysJCXJldHVybjsKKysKKysJaWYgKGN0bC0+dmVyYm9zZSA+IDEgJiYgY3RsLT5ubGlua3MpCisrCQlmcHV0YygnXG4nLCBzdGRvdXQpOworKworKwlwcmludGYoXygiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKKysJcHJpbnRmKF8oIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7CisrCXByaW50ZihfKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKKysJcHJpbnRmKF8oIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7CisrCXByaW50ZiggICIlcyU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KKysJICAgICAgIF8oIldvdWxkIGxpbms6ICAgICIpIDoKKysJICAgICAgIF8oIkxpbmtlZDogICAgICAgICIpKSwgY3RsLT5ubGlua3MpOworKwlwcmludGYoICAiJXMgJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPworKwkgICAgICAgXygiV291bGQgc2F2ZTogICAiKSA6CisrCSAgICAgICBfKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOworK30KKysKKytzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSB1c2FnZSh2b2lkKQorK3sKKysJZnB1dHMoVVNBR0VfSEVBREVSLCBzdGRvdXQpOworKwlwcmludGYoXygiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7CisrCisrCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKKysJcHV0cyhfKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKKysKKysJZnB1dHMoVVNBR0VfT1BUSU9OUywgc3Rkb3V0KTsKKysJcHV0cyhfKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOworKwlwdXRzKF8oIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7CisrCXB1dHMoXygiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKKysJcHV0cyhfKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7CisrCXB1dHMoXygiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOworKwlwdXRzKF8oIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKKysKKysJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOworKwlwcmludGYoVVNBR0VfSEVMUF9PUFRJT05TKDE2KSk7IC8qIGNoYXIgb2Zmc2V0IHRvIGFsaWduIG9wdGlvbiBkZXNjcmlwdGlvbnMgKi8KKysJcHJpbnRmKFVTQUdFX01BTl9UQUlMKCJoYXJkbGluaygxKSIpKTsKKysJZXhpdChFWElUX1NVQ0NFU1MpOworK30KKysKKytfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisrc3RhdGljIGlubGluZSBzaXplX3QgYWRkMihzaXplX3QgYSwgc2l6ZV90IGIpCisreworKwlzaXplX3Qgc3VtID0gYSArIGI7CisrCisrCWlmIChzdW0gPCBhKQorKwkJZXJyeChFWElUX0ZBSUxVUkUsIF8oImludGVnZXIgb3ZlcmZsb3ciKSk7CisrCXJldHVybiBzdW07CisrfQorKworK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKytzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQzKHNpemVfdCBhLCBzaXplX3QgYiwgc2l6ZV90IGMpCisreworKwlyZXR1cm4gYWRkMihhZGQyKGEsIGIpLCBjKTsKKyt9CisrCisrc3RhdGljIHZvaWQgZ3Jvd3N0cihzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyICpzdHIsIHNpemVfdCBuZXdsZW4pCisreworKwlpZiAobmV3bGVuIDwgc3RyLT5hbGxvYykKKysJCXJldHVybjsKKysJc3RyLT5idWYgPSB4cmVhbGxvYyhzdHItPmJ1Ziwgc3RyLT5hbGxvYyA9IGFkZDIobmV3bGVuLCAxKSk7CisrfQorKworK3N0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisreworKwlzdHJ1Y3Qgc3RhdCBzdCwgc3QyLCBzdDM7CisrCWNvbnN0IHNpemVfdCBuYW1lbGVuID0gc3RybGVuKG5hbWUpOworKworKwljdGwtPm5vYmplY3RzKys7CisrCWlmIChsc3RhdChuYW1lLCAmc3QpKQorKwkJcmV0dXJuOworKworKwlpZiAoc3Quc3RfZGV2ICE9IGN0bC0+ZGV2ICYmICFjdGwtPmZvcmNlKSB7CisrCQlpZiAoY3RsLT5kZXYpCisrCQkJZXJyeChFWElUX0ZBSUxVUkUsCisrCQkJICAgICBfKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKKysJCQkgICAgICAgIih1c2UgLWYgb3B0aW9uIHRvIG92ZXJyaWRlKS4iKSwgbmFtZSk7CisrCQljdGwtPmRldiA9IHN0LnN0X2RldjsKKysJfQorKwlpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgeworKwkJc3RydWN0IGhhcmRsaW5rX2RpciAqZHAgPSB4bWFsbG9jKGFkZDMoc2l6ZW9mKCpkcCksIG5hbWVsZW4sIDEpKTsKKysJCW1lbWNweShkcC0+bmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOworKwkJZHAtPm5leHQgPSBjdGwtPmRpcnM7CisrCQljdGwtPmRpcnMgPSBkcDsKKysKKysJfSBlbHNlIGlmIChTX0lTUkVHKHN0LnN0X21vZGUpKSB7CisrCQlpbnQgZmQsIGk7CisrCQlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqZnAsICpmcDI7CisrCQlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqaHA7CisrCQljb25zdCBjaGFyICpuMSwgKm4yOworKwkJdW5zaWduZWQgaW50IGJ1ZltOQlVGXTsKKysJCWludCBja3N1bXNpemUgPSBzaXplb2YoYnVmKTsKKysJCXVuc2lnbmVkIGludCBja3N1bTsKKysJCXRpbWVfdCBtdGltZSA9IGN0bC0+Y29udGVudF9vbmx5ID8gMCA6IHN0LnN0X210aW1lOworKwkJdW5zaWduZWQgaW50IGhzaCA9IGhhc2goc3Quc3Rfc2l6ZSwgbXRpbWUpOworKwkJb2ZmX3QgZnNpemU7CisrCisrCQljdGwtPm5yZWdmaWxlcysrOworKwkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCisrCQkJcHJpbnRmKCIlc1xuIiwgbmFtZSk7CisrCisrCQlmZCA9IG9wZW4obmFtZSwgT19SRE9OTFkpOworKwkJaWYgKGZkIDwgMCkKKysJCQlyZXR1cm47CisrCisrCQlpZiAoKHNpemVfdClzdC5zdF9zaXplIDwgc2l6ZW9mKGJ1ZikpIHsKKysJCQlja3N1bXNpemUgPSBzdC5zdF9zaXplOworKwkJCW1lbXNldCgoKGNoYXIgKilidWYpICsgY2tzdW1zaXplLCAwLAorKwkJCSAgICAgICAoc2l6ZW9mKGJ1ZikgLSBja3N1bXNpemUpICUgc2l6ZW9mKGJ1ZlswXSkpOworKwkJfQorKwkJaWYgKHJlYWQoZmQsIGJ1ZiwgY2tzdW1zaXplKSAhPSBja3N1bXNpemUpIHsKKysJCQljbG9zZShmZCk7CisrCQkJcmV0dXJuOworKwkJfQorKwkJY2tzdW1zaXplID0gKGNrc3Vtc2l6ZSArIHNpemVvZihidWZbMF0pIC0gMSkgLyBzaXplb2YoYnVmWzBdKTsKKysJCWZvciAoaSA9IDAsIGNrc3VtID0gMDsgaSA8IGNrc3Vtc2l6ZTsgaSsrKSB7CisrCQkJaWYgKGNrc3VtICsgYnVmW2ldIDwgY2tzdW0pCisrCQkJCWNrc3VtICs9IGJ1ZltpXSArIDE7CisrCQkJZWxzZQorKwkJCQlja3N1bSArPSBidWZbaV07CisrCQl9CisrCQlmb3IgKGhwID0gY3RsLT5ocHNbaHNoXTsgaHA7IGhwID0gaHAtPm5leHQpIHsKKysJCQlpZiAoaHAtPnNpemUgPT0gc3Quc3Rfc2l6ZSAmJiBocC0+bXRpbWUgPT0gbXRpbWUpCisrCQkJCWJyZWFrOworKwkJfQorKwkJaWYgKCFocCkgeworKwkJCWhwID0geG1hbGxvYyhzaXplb2YoKmhwKSk7CisrCQkJaHAtPnNpemUgPSBzdC5zdF9zaXplOworKwkJCWhwLT5tdGltZSA9IG10aW1lOworKwkJCWhwLT5jaGFpbiA9IE5VTEw7CisrCQkJaHAtPm5leHQgPSBjdGwtPmhwc1toc2hdOworKwkJCWN0bC0+aHBzW2hzaF0gPSBocDsKKysJCX0KKysJCWZvciAoZnAgPSBocC0+Y2hhaW47IGZwOyBmcCA9IGZwLT5uZXh0KSB7CisrCQkJaWYgKGZwLT5ja3N1bSA9PSBja3N1bSkKKysJCQkJYnJlYWs7CisrCQl9CisrCQlmb3IgKGZwMiA9IGZwOyBmcDIgJiYgZnAyLT5ja3N1bSA9PSBja3N1bTsgZnAyID0gZnAyLT5uZXh0KSB7CisrCQkJaWYgKGZwMi0+aW5vID09IHN0LnN0X2lubyAmJiBmcDItPmRldiA9PSBzdC5zdF9kZXYpIHsKKysJCQkJY2xvc2UoZmQpOworKwkJCQlyZXR1cm47CisrCQkJfQorKwkJfQorKwkJZm9yIChmcDIgPSBmcDsgZnAyICYmIGZwMi0+Y2tzdW0gPT0gY2tzdW07IGZwMiA9IGZwMi0+bmV4dCkgeworKworKwkJCWlmICghbHN0YXQoZnAyLT5uYW1lLCAmc3QyKSAmJiBTX0lTUkVHKHN0Mi5zdF9tb2RlKSAmJgorKwkJCSAgICAhc3RjbXAoJnN0LCAmc3QyLCBjdGwtPmNvbnRlbnRfb25seSkgJiYKKysJCQkgICAgc3QyLnN0X2lubyAhPSBzdC5zdF9pbm8gJiYKKysJCQkgICAgc3QyLnN0X2RldiA9PSBzdC5zdF9kZXYpIHsKKysKKysJCQkJaW50IGZkMiA9IG9wZW4oZnAyLT5uYW1lLCBPX1JET05MWSk7CisrCQkJCWlmIChmZDIgPCAwKQorKwkJCQkJY29udGludWU7CisrCisrCQkJCWlmIChmc3RhdChmZDIsICZzdDIpIHx8ICFTX0lTUkVHKHN0Mi5zdF9tb2RlKQorKwkJCQkgICAgfHwgc3QyLnN0X3NpemUgPT0gMCkgeworKwkJCQkJY2xvc2UoZmQyKTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQl9CisrCQkJCWN0bC0+bmNvbXArKzsKKysJCQkJbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKKysKKysJCQkJZm9yIChmc2l6ZSA9IHN0LnN0X3NpemU7IGZzaXplID4gMDsKKysJCQkJICAgICBmc2l6ZSAtPSAob2ZmX3Qpc2l6ZW9mKGN0bC0+aW9idWYxKSkgeworKwkJCQkJc3NpemVfdCB4c3o7CisrCQkJCQlzc2l6ZV90IHJzaXplID0gZnNpemUgPiAoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA/CisrCQkJCQkJCShzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpIDogZnNpemU7CisrCisrCQkJCQlpZiAoKHhzeiA9IHJlYWQoZmQsIGN0bC0+aW9idWYxLCByc2l6ZSkpICE9IHJzaXplKQorKwkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7CisrCQkJCQllbHNlIGlmICgoeHN6ID0gcmVhZChmZDIsIGN0bC0+aW9idWYyLCByc2l6ZSkpICE9IHJzaXplKQorKwkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKKysKKysJCQkJCWlmICh4c3ogIT0gcnNpemUpIHsKKysJCQkJCQljbG9zZShmZCk7CisrCQkJCQkJY2xvc2UoZmQyKTsKKysJCQkJCQlyZXR1cm47CisrCQkJCQl9CisrCQkJCQlpZiAobWVtY21wKGN0bC0+aW9idWYxLCBjdGwtPmlvYnVmMiwgcnNpemUpKQorKwkJCQkJCWJyZWFrOworKwkJCQl9CisrCQkJCWNsb3NlKGZkMik7CisrCQkJCWlmIChmc2l6ZSA+IDApCisrCQkJCQljb250aW51ZTsKKysJCQkJaWYgKGxzdGF0KG5hbWUsICZzdDMpKSB7CisrCQkJCQl3YXJuKF8oImNhbm5vdCBzdGF0ICVzIiksIG5hbWUpOworKwkJCQkJY2xvc2UoZmQpOworKwkJCQkJcmV0dXJuOworKwkJCQl9CisrCQkJCXN0My5zdF9hdGltZSA9IHN0LnN0X2F0aW1lOworKwkJCQlpZiAoc3RjbXAoJnN0LCAmc3QzLCAwKSkgeworKwkJCQkJd2FybngoXygiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7CisrCQkJCQljbG9zZShmZCk7CisrCQkJCQlyZXR1cm47CisrCQkJCX0KKysJCQkJbjEgPSBmcDItPm5hbWU7CisrCQkJCW4yID0gbmFtZTsKKysKKysJCQkJaWYgKCFjdGwtPm5vX2xpbmspIHsKKysJCQkJCWNvbnN0IGNoYXIgKnN1ZmZpeCA9CisrCQkJCQkgICAgIi4kJCRfX19jbGVhbml0X19fJCQkIjsKKysJCQkJCWNvbnN0IHNpemVfdCBzdWZmaXhsZW4gPSBzdHJsZW4oc3VmZml4KTsKKysJCQkJCXNpemVfdCBuMmxlbiA9IHN0cmxlbihuMik7CisrCQkJCQlzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyIG5hbTIgPSB7IE5VTEwsIDAgfTsKKysKKysJCQkJCWdyb3dzdHIoJm5hbTIsIGFkZDIobjJsZW4sIHN1ZmZpeGxlbikpOworKwkJCQkJbWVtY3B5KG5hbTIuYnVmLCBuMiwgbjJsZW4pOworKwkJCQkJbWVtY3B5KCZuYW0yLmJ1ZltuMmxlbl0sIHN1ZmZpeCwKKysJCQkJCSAgICAgICBzdWZmaXhsZW4gKyAxKTsKKysJCQkJCS8qIEZpcnN0IGNyZWF0ZSBhIHRlbXBvcmFyeSBsaW5rIHRvIG4xIHVuZGVyIGEgbmV3IG5hbWUgKi8KKysJCQkJCWlmIChsaW5rKG4xLCBuYW0yLmJ1ZikpIHsKKysJCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKKysJCQkJCQkJbjEsIG4yLCBuYW0yLmJ1Zik7CisrCQkJCQkJZnJlZShuYW0yLmJ1Zik7CisrCQkJCQkJY29udGludWU7CisrCQkJCQl9CisrCQkJCQkvKiBUaGVuIHJlbmFtZSBpbnRvIHBsYWNlIG92ZXIgdGhlIGV4aXN0aW5nIG4yICovCisrCQkJCQlpZiAocmVuYW1lKG5hbTIuYnVmLCBuMikpIHsKKysJCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKKysJCQkJCQkJbjEsIG4yLCBuMik7CisrCQkJCQkJLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHRyeSB0byByZW1vdmUgdGhlIG5vdyByZWR1bmRhbnQgdGVtcG9yYXJ5IGxpbmsgKi8KKysJCQkJCQlpZiAodW5saW5rKG5hbTIuYnVmKSkKKysJCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKKysJCQkJCQlmcmVlKG5hbTIuYnVmKTsKKysJCQkJCQljb250aW51ZTsKKysJCQkJCX0KKysJCQkJCWZyZWUobmFtMi5idWYpOworKwkJCQl9CisrCQkJCWN0bC0+bmxpbmtzKys7CisrCQkJCWlmIChzdDMuc3RfbmxpbmsgPiAxKSB7CisrCQkJCQkvKiBXZSBhY3R1YWxseSBkaWQgbm90IHNhdmUgYW55dGhpbmcgdGhpcyB0aW1lLCBzaW5jZSB0aGUgbGluayBzZWNvbmQgYXJndW1lbnQKKysJCQkJCSAgIGhhZCBzb21lIG90aGVyIGxpbmtzIGFzIHdlbGwuICAqLworKwkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCisrCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlc1xuIiksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJCW4xLCBuMik7CisrCQkJCX0gZWxzZSB7CisrCQkJCQljdGwtPm5zYXZlZCArPSAoKHN0LnN0X3NpemUgKyA0MDk1KSAvIDQwOTYpICogNDA5NjsKKysJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQorKwkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJCW4xLCBuMiwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIndvdWxkIHNhdmUiKSA6IF8oInNhdmVkIikpLAorKwkJCQkJCQkoaW50bWF4X3Qpc3Quc3Rfc2l6ZSk7CisrCQkJCX0KKysJCQkJY2xvc2UoZmQpOworKwkJCQlyZXR1cm47CisrCQkJfQorKwkJfQorKwkJZnAyID0geG1hbGxvYyhhZGQzKHNpemVvZigqZnAyKSwgbmFtZWxlbiwgMSkpOworKwkJY2xvc2UoZmQpOworKwkJZnAyLT5pbm8gPSBzdC5zdF9pbm87CisrCQlmcDItPmRldiA9IHN0LnN0X2RldjsKKysJCWZwMi0+Y2tzdW0gPSBja3N1bTsKKysJCW1lbWNweShmcDItPm5hbWUsIG5hbWUsIG5hbWVsZW4gKyAxKTsKKysKKysJCWlmIChmcCkgeworKwkJCWZwMi0+bmV4dCA9IGZwLT5uZXh0OworKwkJCWZwLT5uZXh0ID0gZnAyOworKwkJfSBlbHNlIHsKKysJCQlmcDItPm5leHQgPSBocC0+Y2hhaW47CisrCQkJaHAtPmNoYWluID0gZnAyOworKwkJfQorKwkJcmV0dXJuOworKwl9CisrfQorKworK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7CisrCWludCBjaDsKKysJaW50IGk7CisrI2lmZGVmIEhBVkVfUENSRQorKwlpbnQgZXJyb3JudW1iZXI7CisrCVBDUkUyX1NJWkUgZXJyb3JvZmZzZXQ7CisrCXBjcmUyX2NvZGUgKnJlID0gTlVMTDsKKysJUENSRTJfU1BUUiBleGNsdWRlX3BhdHRlcm4gPSBOVUxMOworKwlwY3JlMl9tYXRjaF9kYXRhICptYXRjaF9kYXRhID0gTlVMTDsKKysjZW5kaWYKKysJc3RydWN0IGhhcmRsaW5rX2R5bnN0ciBuYW0xID0geyBOVUxMLCAwIH07CisrCXN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCA9ICZnbG9iYWxfY3RsOworKworKwlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBsb25nb3B0c1tdID0geworKwkJeyAiY29udGVudCIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnYycgfSwKKysJCXsgImRyeS1ydW4iLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ24nIH0sCisrCQl7ICJleGNsdWRlIiwgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4JyB9LAorKwkJeyAiZm9yY2UiLCAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnZicgfSwKKysJCXsgImhlbHAiLCAgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ2gnIH0sCisrCQl7ICJ2ZXJib3NlIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICd2JyB9LAorKwkJeyAidmVyc2lvbiIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnVicgfSwKKysJCXsgTlVMTCwgMCwgTlVMTCwgMCB9LAorKwl9OworKworKwlzZXRsb2NhbGUoTENfQUxMLCAiIik7CisrCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJUik7CisrCXRleHRkb21haW4oUEFDS0FHRSk7CisrCWNsb3NlX3N0ZG91dF9hdGV4aXQoKTsKKysKKysJd2hpbGUgKChjaCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJjbnZmeDpWaCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpIHsKKysJCXN3aXRjaCAoY2gpIHsKKysJCWNhc2UgJ24nOgorKwkJCWN0bC0+bm9fbGluayA9IDE7CisrCQkJYnJlYWs7CisrCQljYXNlICd2JzoKKysJCQljdGwtPnZlcmJvc2UrKzsKKysJCQlicmVhazsKKysJCWNhc2UgJ2MnOgorKwkJCWN0bC0+Y29udGVudF9vbmx5ID0gMTsKKysJCQlicmVhazsKKysJCWNhc2UgJ2YnOgorKwkJCWN0bC0+Zm9yY2UgPSAxOworKwkJCWJyZWFrOworKwkJY2FzZSAneCc6CisrI2lmZGVmIEhBVkVfUENSRQorKwkJCWV4Y2x1ZGVfcGF0dGVybiA9IChQQ1JFMl9TUFRSKSBvcHRhcmc7CisrI2Vsc2UKKysJCQllcnJ4KEVYSVRfRkFJTFVSRSwKKysJCQkgICAgIF8oIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7CisrI2VuZGlmCisrCQkJYnJlYWs7CisrCQljYXNlICdWJzoKKysJCQlwcmludF92ZXJzaW9uKEVYSVRfU1VDQ0VTUyk7CisrCQljYXNlICdoJzoKKysJCQl1c2FnZSgpOworKwkJZGVmYXVsdDoKKysJCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7CisrCQl9CisrCX0KKysKKysJaWYgKG9wdGluZCA9PSBhcmdjKSB7CisrCQl3YXJueChfKCJubyBkaXJlY3Rvcnkgc3BlY2lmaWVkIikpOworKwkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOworKwl9CisrCisrI2lmZGVmIEhBVkVfUENSRQorKwlpZiAoZXhjbHVkZV9wYXR0ZXJuKSB7CisrCQlyZSA9IHBjcmUyX2NvbXBpbGUoZXhjbHVkZV9wYXR0ZXJuLCAvKiB0aGUgcGF0dGVybiAqLworKwkJCQkgICBQQ1JFMl9aRVJPX1RFUk1JTkFURUQsIC8qIGluZGljYXRlcyBwYXR0ZXJuIGlzIHplcm8tdGVybWluYXRlICovCisrCQkJCSAgIDAsIC8qIGRlZmF1bHQgb3B0aW9ucyAqLworKwkJCQkgICAmZXJyb3JudW1iZXIsICZlcnJvcm9mZnNldCwgTlVMTCk7IC8qIHVzZSBkZWZhdWx0IGNvbXBpbGUgY29udGV4dCAqLworKwkJaWYgKCFyZSkgeworKwkJCVBDUkUyX1VDSEFSIGJ1ZmZlclsyNTZdOworKwkJCXBjcmUyX2dldF9lcnJvcl9tZXNzYWdlKGVycm9ybnVtYmVyLCBidWZmZXIsCisrCQkJCQkJc2l6ZW9mKGJ1ZmZlcikpOworKwkJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKKysJCQkJKGludCllcnJvcm9mZnNldCwgYnVmZmVyKTsKKysJCX0KKysJCW1hdGNoX2RhdGEgPSBwY3JlMl9tYXRjaF9kYXRhX2NyZWF0ZV9mcm9tX3BhdHRlcm4ocmUsIE5VTEwpOworKwl9CisrI2VuZGlmCisrCWF0ZXhpdChwcmludF9zdW1tYXJ5KTsKKysKKysJZm9yIChpID0gb3B0aW5kOyBpIDwgYXJnYzsgaSsrKQorKwkJcHJvY2Vzc19wYXRoKGN0bCwgYXJndltpXSk7CisrCisrCXdoaWxlIChjdGwtPmRpcnMpIHsKKysJCURJUiAqZGg7CisrCQlzdHJ1Y3QgZGlyZW50ICpkaTsKKysJCXN0cnVjdCBoYXJkbGlua19kaXIgKmRwID0gY3RsLT5kaXJzOworKwkJc2l6ZV90IG5hbTFiYXNlbGVuID0gc3RybGVuKGRwLT5uYW1lKTsKKysKKysJCWN0bC0+ZGlycyA9IGRwLT5uZXh0OworKwkJZ3Jvd3N0cigmbmFtMSwgYWRkMihuYW0xYmFzZWxlbiwgMSkpOworKwkJbWVtY3B5KG5hbTEuYnVmLCBkcC0+bmFtZSwgbmFtMWJhc2VsZW4pOworKwkJZnJlZShkcCk7CisrCQluYW0xLmJ1ZltuYW0xYmFzZWxlbisrXSA9ICcvJzsKKysJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7CisrCQlkaCA9IG9wZW5kaXIobmFtMS5idWYpOworKworKwkJaWYgKGRoID09IE5VTEwpCisrCQkJY29udGludWU7CisrCQljdGwtPm5kaXJzKys7CisrCisrCQl3aGlsZSAoKGRpID0gcmVhZGRpcihkaCkpICE9IE5VTEwpIHsKKysJCQlpZiAoIWRpLT5kX25hbWVbMF0pCisrCQkJCWNvbnRpbnVlOworKwkJCWlmIChkaS0+ZF9uYW1lWzBdID09ICcuJykgeworKwkJCQlpZiAoIWRpLT5kX25hbWVbMV0gfHwgIXN0cmNtcChkaS0+ZF9uYW1lLCAiLi4iKSkKKysJCQkJCWNvbnRpbnVlOworKwkJCX0KKysjaWZkZWYgSEFWRV9QQ1JFCisrCQkJaWYgKHJlICYmIHBjcmUyX21hdGNoKHJlLCAvKiBjb21waWxlZCByZWdleCAqLworKwkJCQkJICAgICAgKFBDUkUyX1NQVFIpIGRpLT5kX25hbWUsIHN0cmxlbihkaS0+ZF9uYW1lKSwgMCwgLyogc3RhcnQgYXQgb2Zmc2V0IDAgKi8KKysJCQkJCSAgICAgIDAsIC8qIGRlZmF1bHQgb3B0aW9ucyAqLworKwkJCQkJICAgICAgbWF0Y2hfZGF0YSwgLyogYmxvY2sgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCAqLworKwkJCQkJICAgICAgTlVMTCkgLyogdXNlIGRlZmF1bHQgbWF0Y2ggY29udGV4dCAqLworKwkJCSAgICA+PTApIHsKKysJCQkJaWYgKGN0bC0+dmVyYm9zZSkgeworKwkJCQkJbmFtMS5idWZbbmFtMWJhc2VsZW5dID0gMDsKKysJCQkJCXByaW50ZihfKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOworKwkJCQl9CisrCQkJCWNvbnRpbnVlOworKwkJCX0KKysjZW5kaWYKKysJCQl7CisrCQkJCXNpemVfdCBzdWJkaXJsZW47CisrCQkJCWdyb3dzdHIoJm5hbTEsCisrCQkJCQlhZGQyKG5hbTFiYXNlbGVuLCBzdWJkaXJsZW4gPQorKwkJCQkJICAgICBzdHJsZW4oZGktPmRfbmFtZSkpKTsKKysJCQkJbWVtY3B5KCZuYW0xLmJ1ZltuYW0xYmFzZWxlbl0sIGRpLT5kX25hbWUsCisrCQkJCSAgICAgICBhZGQyKHN1YmRpcmxlbiwgMSkpOworKwkJCX0KKysJCQlwcm9jZXNzX3BhdGgoY3RsLCBuYW0xLmJ1Zik7CisrCQl9CisrCQljbG9zZWRpcihkaCk7CisrCX0KKysKKysJcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy94YWxsb2MuaCBiL2xvY2FsZS9wcm9ncmFtcy94YWxsb2MuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjAxMjlhODVlMmUKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy94YWxsb2MuaAorQEAgLTAsMCArMSwxMjkgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxMCBEYXZpZGxvaHIgQnVlc28gPGRhdmVAZ251Lm9yZz4KKysgKgorKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisrICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKyAqCisrICogR2VuZXJhbCBtZW1vcnkgYWxsb2NhdGlvbiB3cmFwcGVycyBmb3IgbWFsbG9jLCByZWFsbG9jLCBjYWxsb2MgYW5kIHN0cmR1cAorKyAqLworKworKyNpZm5kZWYgVVRJTF9MSU5VWF9YQUxMT0NfSAorKyNkZWZpbmUgVVRJTF9MSU5VWF9YQUxMT0NfSAorKworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgImMuaCIKKysKKysjaWZuZGVmIFhBTExPQ19FWElUX0NPREUKKysjIGRlZmluZSBYQUxMT0NfRVhJVF9DT0RFIEVYSVRfRkFJTFVSRQorKyNlbmRpZgorKworK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQorK19fZXJyX29vbShjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKKyt7CisrCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiJXM6ICV1OiBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IiwgZmlsZSwgbGluZSk7CisrfQorKworKyNkZWZpbmUgZXJyX29vbSgpCV9fZXJyX29vbShfX0ZJTEVfXywgX19MSU5FX18pCisrCisrc3RhdGljIGlubGluZSBfX3VsX2FsbG9jX3NpemUoMSkgX191bF9yZXR1cm5zX25vbm51bGwKKyt2b2lkICp4bWFsbG9jKGNvbnN0IHNpemVfdCBzaXplKQorK3sKKysgICAgICAgIHZvaWQgKnJldCA9IG1hbGxvYyhzaXplKTsKKysKKysgICAgICAgIGlmICghcmV0ICYmIHNpemUpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBfX3VsX2FsbG9jX3NpemUoMikgX191bF9yZXR1cm5zX25vbm51bGwKKyt2b2lkICp4cmVhbGxvYyh2b2lkICpwdHIsIGNvbnN0IHNpemVfdCBzaXplKQorK3sKKysgICAgICAgIHZvaWQgKnJldCA9IHJlYWxsb2MocHRyLCBzaXplKTsKKysKKysgICAgICAgIGlmICghcmV0ICYmIHNpemUpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBfX3VsX2NhbGxvY19zaXplKDEsIDIpIF9fdWxfcmV0dXJuc19ub25udWxsCisrdm9pZCAqeGNhbGxvYyhjb25zdCBzaXplX3QgbmVsZW1zLCBjb25zdCBzaXplX3Qgc2l6ZSkKKyt7CisrICAgICAgICB2b2lkICpyZXQgPSBjYWxsb2MobmVsZW1zLCBzaXplKTsKKysKKysgICAgICAgIGlmICghcmV0ICYmIHNpemUgJiYgbmVsZW1zKQorKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgY2hhciBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSBfX3VsX3JldHVybnNfbm9ubnVsbAorKyp4c3RyZHVwKGNvbnN0IGNoYXIgKnN0cikKKyt7CisrICAgICAgICBjaGFyICpyZXQ7CisrCisrICAgICAgICBpZiAoIXN0cikKKysgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgICAgICByZXQgPSBzdHJkdXAoc3RyKTsKKysKKysgICAgICAgIGlmICghcmV0KQorKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBkdXBsaWNhdGUgc3RyaW5nIik7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW5saW5lIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSBfX3VsX3JldHVybnNfbm9ubnVsbAorK3hzdHJuZHVwKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IHNpemUpCisreworKyAgICAgICAgY2hhciAqcmV0OworKworKyAgICAgICAgaWYgKCFzdHIpCisrICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICAgICAgcmV0ID0gc3RybmR1cChzdHIsIHNpemUpOworKworKyAgICAgICAgaWYgKCFyZXQpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGR1cGxpY2F0ZSBzdHJpbmciKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworKworK3N0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQorKyAgICB4YXNwcmludGYoY2hhciAqKnN0cnAsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorK3sKKysJaW50IHJldDsKKysJdmFfbGlzdCBhcmdzOworKwl2YV9zdGFydChhcmdzLCBmbXQpOworKwlyZXQgPSB2YXNwcmludGYoJigqc3RycCksIGZtdCwgYXJncyk7CisrCXZhX2VuZChhcmdzKTsKKysJaWYgKHJldCA8IDApCisrCQllcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSBzdHJpbmciKTsKKysJcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBpbnQgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMCkpKQorK3h2YXNwcmludGYoY2hhciAqKnN0cnAsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKKyt7CisrCWludCByZXQgPSB2YXNwcmludGYoJigqc3RycCksIGZtdCwgYXApOworKwlpZiAocmV0IDwgMCkKKysJCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlIHN0cmluZyIpOworKwlyZXR1cm4gcmV0OworK30KKysKKysKKytzdGF0aWMgaW5saW5lIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSB4Z2V0aG9zdG5hbWUodm9pZCkKKyt7CisrCWNoYXIgKm5hbWU7CisrCXNpemVfdCBzeiA9IGdldF9ob3N0bmFtZV9tYXgoKSArIDE7CisrCisrCW5hbWUgPSB4bWFsbG9jKHNpemVvZihjaGFyKSAqIHN6KTsKKysKKysJaWYgKGdldGhvc3RuYW1lKG5hbWUsIHN6KSAhPSAwKSB7CisrCQlmcmVlKG5hbWUpOworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysJbmFtZVtzeiAtIDFdID0gJ1wwJzsKKysJcmV0dXJuIG5hbWU7CisrfQorKworKyNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItdG8tYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci10by1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjY1Mjk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItdG8tYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA1NmFlMjYwYWMyNGFkZTk0ZTJlMGU3N2M4MTc1MTMxMjM3MmQyNTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgNyBEZWMgMjAxOSAwOTo1NjoyMyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGVkZWY6IEFkZCBoYXJkbGluayByZXNvbHZlciB0byBidWlsZAorCitUaGUgc291cmNlY29kZSBmb3IgdGhpcyBpcyBpbXBvcnRlZCBmcm9tIHV0aWwtbGludXggYW5kIGlzIGtlcHQgd2l0aAorZ2xpYmMgc291cmNlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCA4ICsrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggNzdmYmRlZC4uYTg3ZTViMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTQwLDYgKzQwLDggQEAgV0FSTkZMQUdTCT0gLVdhbGwgLVduby1mb3JtYXQKKyBGVUxMQ0MJCT0gJChDQykgJChDUFBGTEFHUykgJChDRkxBR1MpIFwKKyAJCSAgJChERUZJTkVTKSAkKElOQ0xVREVTKSAkKFdBUk5GTEFHUykKKyAKKytDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUyA9IGNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5vCisrCisgTE9DQUxFREVGX09CSlMJPSBjaGFybWFwLm8gY2hhcm1hcC1kaXIubyBsZC1hZGRyZXNzLm8gbGQtY29sbGF0ZS5vIFwKKyAJCSAgbGQtY3R5cGUubyBsZC1pZGVudGlmaWNhdGlvbi5vIGxkLW1lYXN1cmVtZW50Lm8gXAorIAkJICBsZC1tZXNzYWdlcy5vIGxkLW1vbmV0YXJ5Lm8gbGQtbmFtZS5vIGxkLW51bWVyaWMubyBcCitAQCAtNTQsMTEgKzU2LDE0IEBAIExPQ0FMRURFRl9PQkpTCT0gY2hhcm1hcC5vIGNoYXJtYXAtZGlyLm8gbGQtYWRkcmVzcy5vIGxkLWNvbGxhdGUubyBcCisgCQkgIGFzcHJpbnRmLm8gZ2V0ZGVsaW0ubyBsb2NhbGVkZWZfZXh0cmEubyBcCisgCQkgIG9ic3RhY2tfcHJpbnRmLm8gdmFzcHJpbnRmLm8KKyAKKy1hbGw6CQlsb2NhbGVkZWYkKEVYRUVYVCkKKythbGw6CQlsb2NhbGVkZWYkKEVYRUVYVCkgY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rJChFWEVFWFQpCisgCisgbG9jYWxlZGVmJChFWEVFWFQpOiAkKExPQ0FMRURFRl9PQkpTKQorIAkJJChDQykgLW8gJEAgJChMT0NBTEVERUZfT0JKUykgJChMSUJTKQorIAorK2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluayQoRVhFRVhUKTogJChDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUykKKysJCSQoQ0MpIC1vICRAICQoQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMpICQoTElCUykKKysKKyBjbGVhbjoKKyAJCXJtIC1mIGxvY2FsZSQoRVhFRVhUKSAkKExPQ0FMRURFRl9PQkpTKQorIAorQEAgLTc3LDYgKzgyLDcgQEAgY2xlYW46CisgJS5vOiAkKHNyY2RpcikvJS5jCisgCQkkKEZVTExDQykgLWMgLW8gJEAgJDwKKyAKKytjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCisgY2hhcm1hcC5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC5jCisgY2hhcm1hcC1kaXIubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKKyBsZC1hZGRyZXNzLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9sZC1hZGRyZXNzLmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NmQxZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIGY2OTg0YzkyM2I0MTE1NTk3OTc2NGJmYTNmNDQ2MDk1NzJiZTU0MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo0ODoyNCArMDAwMAotU3ViamVjdDogW1BBVENIIDAxLzI4XSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzCi0gd2VsbAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1UaGUgZGVmYXVsdCBsaWIgc2VhcmNoIHBhdGggb3JkZXIgaXM6Ci0KLSAgMSkgTERfTElCUkFSWV9QQVRICi0gIDIpIFJQQVRIIGZyb20gdGhlIGJpbmFyeQotICAzKSBsZC5zby5jYWNoZQotICA0KSBkZWZhdWx0IHNlYXJjaCBwYXRocyBlbWJlZGRlZCBpbiB0aGUgbGlua2VyCi0KLUZvciBuYXRpdmVzZGsgYmluYXJpZXMgd2hpY2ggYXJlIGJlaW5nIHVzZWQgYWxvbmdzaWRlIGJpbmFyaWVzIG9uIGEgaG9zdCBzeXN0ZW0sIHdlCi1uZWVkIHRoZSBzZWFyY2ggcGF0aHMgdG8gZmlyc3RseSBzZWFyY2ggdGhlIHNoaXBwZWQgbmF0aXZlc2RrIGxpYnMgYnV0IHRoZW4gYWxzbwotY292ZXIgdGhlIGhvc3Qgc3lzdGVtLiBGb3IgZXhhbXBsZSB3ZSB3YW50IHRoZSBob3N0IHN5c3RlbSdzIGxpYkdMIGFuZCB0aGlzIG1heSBiZQotaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24gbGlrZSAvdXNyL2xpYi9tZXNhLiBUaGUgb25seSBwbGFjZSB0aGUgbG9jYXRpb24gaXMga25vdwotYWJvdXQgaXMgaW4gdGhlIGxkLnNvLmNhY2hlIG9mIHRoZSBob3N0IHN5c3RlbS4KLQotU2luY2UgbmF0aXZlc2RrIGhhcyBhIHNpbXBsZSBzdHJ1Y3R1cmUgYW5kIGRvZXNuJ3QgbmVlZCB0byB1c2UgYSBjYWNoZSBpdHNlbGYsIHdlCi1yZXB1cnBvc2UgdGhlIGNhY2hlIGZvciB1c2UgYXMgYSBsYXN0IHJlc29ydCBpbiBmaW5kaW5nIGhvc3Qgc3lzdGVtIGJpbmFyaWVzLiBUaGlzCi1tZWFucyB3ZSBuZWVkIHRvIHN3aXRjaCB0aGUgb3JkZXIgb2YgMyBhbmQgNCBhYm92ZSB0byBtYWtlIHRoaXMgd29yayBlZmZlY3RpdmVseS4KLQotUlAgMTQvMTAvMjAxMAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZWxmL2RsLWxvYWQuYyB8IDE2ICsrKysrKysrLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDVhYmViODY3ZjEuLjk4MWJkNWI0YWYgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtbG9hZC5jCi0rKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMjA4MCw2ICsyMDgwLDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gCi0rICAgICAgLyogdHJ5IHRoZSBkZWZhdWx0IHBhdGguICAqLwotKyAgICAgIGlmIChmZCA9PSAtMQotKwkgICYmICgobCA9IGxvYWRlciA/OiBHTChkbF9ucylbbnNpZF0uX25zX2xvYWRlZCkgPT0gTlVMTAotKwkgICB8fCBfX2J1aWx0aW5fZXhwZWN0ICghKGwtPmxfZmxhZ3NfMSAmIERGXzFfTk9ERUZMSUIpLCAxKSkKLSsJICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKLSsJZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUgJiBfX1JUTERfU0VDVVJFLCAmcnRsZF9zZWFyY2hfZGlycywKLSsJCQkmcmVhbG5hbWUsICZmYiwgbCwgTEFfU0VSX0RFRkFVTFQsICZmb3VuZF9vdGhlcl9jbGFzcyk7Ci0rICAgICAgLyogRmluYWxseSB0cnkgbGQuc28uY2FjaGUgKi8KLSAjaWZkZWYgVVNFX0xEQ09ORklHCi0gICAgICAgaWYgKGZkID09IC0xCi0gCSAgJiYgKF9fZ2xpYmNfbGlrZWx5ICgobW9kZSAmIF9fUlRMRF9TRUNVUkUpID09IDApCi1AQCAtMjEzOCwxNCArMjE0Niw2IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKLSAJfQotICNlbmRpZgotIAotLSAgICAgIC8qIEZpbmFsbHksIHRyeSB0aGUgZGVmYXVsdCBwYXRoLiAgKi8KLS0gICAgICBpZiAoZmQgPT0gLTEKLS0JICAmJiAoKGwgPSBsb2FkZXIgPzogR0woZGxfbnMpW25zaWRdLl9uc19sb2FkZWQpID09IE5VTEwKLS0JICAgICAgfHwgX19nbGliY19saWtlbHkgKCEobC0+bF9mbGFnc18xICYgREZfMV9OT0RFRkxJQikpKQotLQkgICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKLS0JZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUsICZydGxkX3NlYXJjaF9kaXJzLAotLQkJCSZyZWFsbmFtZSwgJmZiLCBsLCBMQV9TRVJfREVGQVVMVCwgJmZvdW5kX290aGVyX2NsYXNzKTsKLS0KLSAgICAgICAvKiBBZGQgYW5vdGhlciBuZXdsaW5lIHdoZW4gd2UgYXJlIHRyYWNpbmcgdGhlIGxpYnJhcnkgbG9hZGluZy4gICovCi0gICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKLSAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbG9jYWxlZGVmLWZpeC11cHMtaGFyZGxpbmstdG8tbWFrZS1pdC1jb21waWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLWxvY2FsZWRlZi1maXgtdXBzLWhhcmRsaW5rLXRvLW1ha2UtaXQtY29tcGlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjIyZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLWxvY2FsZWRlZi1maXgtdXBzLWhhcmRsaW5rLXRvLW1ha2UtaXQtY29tcGlsZS5wYXRjaApAQCAtMCwwICsxLDIzOCBAQAorRnJvbSBiNTJkYmExNTUyNzM4MGNjMTg2MzVlMzY5NmUwZWY4N2VmZWU5YTg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgNyBEZWMgMjAxOSAxMDowMTozNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGVkZWY6IGZpeC11cHMgaGFyZGxpbmsgdG8gbWFrZSBpdCBjb21waWxlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvcHJvZ3JhbXMvYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyB8IDc5ICsrKysrKysrKysrLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2MuaCBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKK2luZGV4IGQwYTQwMmU5MGUuLjE4MDRkMzFjNzMgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvYy5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCitAQCAtMjQwLDcgKzI0MCw3IEBAIGVycm1zZyhjaGFyIGRvZXhpdCwgaW50IGV4Y29kZSwgY2hhciBhZGRlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorIC8qIERvbid0IHVzZSBpbmxpbmUgZnVuY3Rpb24gdG8gYXZvaWQgJyNpbmNsdWRlICJubHMuaCInIGluIGMuaAorICAqLworICNkZWZpbmUgZXJydHJ5aGVscChldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKKy0JZnByaW50ZihzdGRlcnIsIF8oIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCisrCWZwcmludGYoc3RkZXJyLCAoIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCisgCQkJcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOyBcCisgCWV4aXQoZXZhbCk7IFwKKyB9KQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworaW5kZXggNjM2MTU4OTZiMC4uNzI2ZTZkZDk0OCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCitAQCAtMjAsNiArMjAsOCBAQAorICAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyAgKi8KKysKKysjdW5kZWYgSEFWRV9QQ1JFCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8Z2V0b3B0Lmg+CitAQCAtMzgsOCArNDAsOCBAQAorIAorICNpbmNsdWRlICJjLmgiCisgI2luY2x1ZGUgInhhbGxvYy5oIgorLSNpbmNsdWRlICJubHMuaCIKKy0jaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKKysvLyNpbmNsdWRlICJubHMuaCIKKysvLyNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgorIAorICNkZWZpbmUgTkhBU0ggICAoMTw8MTcpICAvKiBNdXN0IGJlIGEgcG93ZXIgb2YgMiEgKi8KKyAjZGVmaW5lIE5CVUYgICAgNjQKK0BAIC0xMjQsMzMgKzEyNiwzMyBAQCBzdGF0aWMgdm9pZCBwcmludF9zdW1tYXJ5KHZvaWQpCisgCWlmIChjdGwtPnZlcmJvc2UgPiAxICYmIGN0bC0+bmxpbmtzKQorIAkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKyAKKy0JcHJpbnRmKF8oIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7CistCXByaW50ZihfKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOworLQlwcmludGYoXygiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7CistCXByaW50ZihfKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOworKwlwcmludGYoKCJEaXJlY3RvcmllczogICAlOWxsZFxuIiksIGN0bC0+bmRpcnMpOworKwlwcmludGYoKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOworKwlwcmludGYoKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKKysJcHJpbnRmKCgiQ29tcGFyaXNvbnM6ICAgJTlsbGRcbiIpLCBjdGwtPm5jb21wKTsKKyAJcHJpbnRmKCAgIiVzJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPworLQkgICAgICAgXygiV291bGQgbGluazogICAgIikgOgorLQkgICAgICAgXygiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7CisrCSAgICAgICAoIldvdWxkIGxpbms6ICAgICIpIDoKKysJICAgICAgICgiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7CisgCXByaW50ZiggICIlcyAlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/CistCSAgICAgICBfKCJXb3VsZCBzYXZlOiAgICIpIDoKKy0JICAgICAgIF8oIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7CisrCSAgICAgICAoIldvdWxkIHNhdmU6ICAgIikgOgorKwkgICAgICAgKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOworIH0KKyAKKyBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSB1c2FnZSh2b2lkKQorIHsKKyAJZnB1dHMoVVNBR0VfSEVBREVSLCBzdGRvdXQpOworLQlwcmludGYoXygiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7CisrCXByaW50ZigoIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOworIAorIAlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7CistCXB1dHMoXygiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7CisrCXB1dHMoKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKKyAKKyAJZnB1dHMoVVNBR0VfT1BUSU9OUywgc3Rkb3V0KTsKKy0JcHV0cyhfKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOworLQlwdXRzKF8oIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7CistCXB1dHMoXygiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKKy0JcHV0cyhfKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7CistCXB1dHMoXygiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOworLQlwdXRzKF8oIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKKysJcHV0cygoIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7CisrCXB1dHMoKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOworKwlwdXRzKCgiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKKysJcHV0cygoIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKKysJcHV0cygoIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKKysJcHV0cygoIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKKyAKKyAJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOworIAlwcmludGYoVVNBR0VfSEVMUF9PUFRJT05TKDE2KSk7IC8qIGNoYXIgb2Zmc2V0IHRvIGFsaWduIG9wdGlvbiBkZXNjcmlwdGlvbnMgKi8KK0BAIC0xNjQsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSBzaXplX3QgYWRkMihzaXplX3QgYSwgc2l6ZV90IGIpCisgCXNpemVfdCBzdW0gPSBhICsgYjsKKyAKKyAJaWYgKHN1bSA8IGEpCistCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygiaW50ZWdlciBvdmVyZmxvdyIpKTsKKysJCWVycngoRVhJVF9GQUlMVVJFLCAoImludGVnZXIgb3ZlcmZsb3ciKSk7CisgCXJldHVybiBzdW07CisgfQorIAorQEAgLTE5Myw3ICsxOTUsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorIAlpZiAoc3Quc3RfZGV2ICE9IGN0bC0+ZGV2ICYmICFjdGwtPmZvcmNlKSB7CisgCQlpZiAoY3RsLT5kZXYpCisgCQkJZXJyeChFWElUX0ZBSUxVUkUsCistCQkJICAgICBfKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKKysJCQkgICAgICgiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCisgCQkJICAgICAgICIodXNlIC1mIG9wdGlvbiB0byBvdmVycmlkZSkuIiksIG5hbWUpOworIAkJY3RsLT5kZXYgPSBzdC5zdF9kZXY7CisgCX0KK0BAIC0yODcsOSArMjg5LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyAJCQkJCQkJKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgOiBmc2l6ZTsKKyAKKyAJCQkJCWlmICgoeHN6ID0gcmVhZChmZCwgY3RsLT5pb2J1ZjEsIHJzaXplKSkgIT0gcnNpemUpCistCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBuYW1lKTsKKysJCQkJCQl3YXJuKCgiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7CisgCQkJCQllbHNlIGlmICgoeHN6ID0gcmVhZChmZDIsIGN0bC0+aW9idWYyLCByc2l6ZSkpICE9IHJzaXplKQorLQkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKKysJCQkJCQl3YXJuKCgiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKKyAKKyAJCQkJCWlmICh4c3ogIT0gcnNpemUpIHsKKyAJCQkJCQljbG9zZShmZCk7CitAQCAtMzAzLDEzICszMDUsMTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyAJCQkJaWYgKGZzaXplID4gMCkKKyAJCQkJCWNvbnRpbnVlOworIAkJCQlpZiAobHN0YXQobmFtZSwgJnN0MykpIHsKKy0JCQkJCXdhcm4oXygiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7CisrCQkJCQl3YXJuKCgiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7CisgCQkJCQljbG9zZShmZCk7CisgCQkJCQlyZXR1cm47CisgCQkJCX0KKyAJCQkJc3QzLnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7CisgCQkJCWlmIChzdGNtcCgmc3QsICZzdDMsIDApKSB7CistCQkJCQl3YXJueChfKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKKysJCQkJCXdhcm54KCgiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7CisgCQkJCQljbG9zZShmZCk7CisgCQkJCQlyZXR1cm47CisgCQkJCX0KK0BAIC0zMjksMTggKzMzMSwxOCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorIAkJCQkJICAgICAgIHN1ZmZpeGxlbiArIDEpOworIAkJCQkJLyogRmlyc3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGxpbmsgdG8gbjEgdW5kZXIgYSBuZXcgbmFtZSAqLworIAkJCQkJaWYgKGxpbmsobjEsIG5hbTIuYnVmKSkgeworLQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChjcmVhdGUgdGVtcG9yYXJ5IGxpbmsgYXMgJXMgZmFpbGVkKSIpLAorKwkJCQkJCXdhcm4oKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCisgCQkJCQkJCW4xLCBuMiwgbmFtMi5idWYpOworIAkJCQkJCWZyZWUobmFtMi5idWYpOworIAkJCQkJCWNvbnRpbnVlOworIAkJCQkJfQorIAkJCQkJLyogVGhlbiByZW5hbWUgaW50byBwbGFjZSBvdmVyIHRoZSBleGlzdGluZyBuMiAqLworIAkJCQkJaWYgKHJlbmFtZShuYW0yLmJ1ZiwgbjIpKSB7CistCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCisrCQkJCQkJd2FybigoImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKKyAJCQkJCQkJbjEsIG4yLCBuMik7CisgCQkJCQkJLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHRyeSB0byByZW1vdmUgdGhlIG5vdyByZWR1bmRhbnQgdGVtcG9yYXJ5IGxpbmsgKi8KKyAJCQkJCQlpZiAodW5saW5rKG5hbTIuYnVmKSkKKy0JCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKKysJCQkJCQkJd2FybigoImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOworIAkJCQkJCWZyZWUobmFtMi5idWYpOworIAkJCQkJCWNvbnRpbnVlOworIAkJCQkJfQorQEAgLTM1MSwxNiArMzUzLDE2IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisgCQkJCQkvKiBXZSBhY3R1YWxseSBkaWQgbm90IHNhdmUgYW55dGhpbmcgdGhpcyB0aW1lLCBzaW5jZSB0aGUgbGluayBzZWNvbmQgYXJndW1lbnQKKyAJCQkJCSAgIGhhZCBzb21lIG90aGVyIGxpbmtzIGFzIHdlbGwuICAqLworIAkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCistCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlc1xuIiksCistCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJcHJpbnRmKCgiICVzICVzIHRvICVzXG4iKSwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgiV291bGQgbGluayIpIDogKCJMaW5rZWQiKSksCisgCQkJCQkJCW4xLCBuMik7CisgCQkJCX0gZWxzZSB7CisgCQkJCQljdGwtPm5zYXZlZCArPSAoKHN0LnN0X3NpemUgKyA0MDk1KSAvIDQwOTYpICogNDA5NjsKKyAJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQorLQkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCistCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJcHJpbnRmKCgiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAorKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJXb3VsZCBsaW5rIikgOiAoIkxpbmtlZCIpKSwKKyAJCQkJCQkJbjEsIG4yLAorLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygid291bGQgc2F2ZSIpIDogXygic2F2ZWQiKSksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIndvdWxkIHNhdmUiKSA6ICgic2F2ZWQiKSksCisgCQkJCQkJCShpbnRtYXhfdClzdC5zdF9zaXplKTsKKyAJCQkJfQorIAkJCQljbG9zZShmZCk7CitAQCAtNDEwLDExICs0MTIsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl7IE5VTEwsIDAsIE5VTEwsIDAgfSwKKyAJfTsKKyAKKy0Jc2V0bG9jYWxlKExDX0FMTCwgIiIpOworLQliaW5kdGV4dGRvbWFpbihQQUNLQUdFLCBMT0NBTEVESVIpOworLQl0ZXh0ZG9tYWluKFBBQ0tBR0UpOworLQljbG9zZV9zdGRvdXRfYXRleGl0KCk7CistCisgCXdoaWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiY252Zng6VmgiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKSB7CisgCQlzd2l0Y2ggKGNoKSB7CisgCQljYXNlICduJzoKK0BAIC00MzQsNyArNDMxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCWV4Y2x1ZGVfcGF0dGVybiA9IChQQ1JFMl9TUFRSKSBvcHRhcmc7CisgI2Vsc2UKKyAJCQllcnJ4KEVYSVRfRkFJTFVSRSwKKy0JCQkgICAgIF8oIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7CisrCQkJICAgICAoIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7CisgI2VuZGlmCisgCQkJYnJlYWs7CisgCQljYXNlICdWJzoKK0BAIC00NDcsNyArNDQ0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAl9CisgCisgCWlmIChvcHRpbmQgPT0gYXJnYykgeworLQkJd2FybngoXygibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKKysJCXdhcm54KCgibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKKyAJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKKyAJfQorIAorQEAgLTQ2MSw3ICs0NTgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJUENSRTJfVUNIQVIgYnVmZmVyWzI1Nl07CisgCQkJcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2UoZXJyb3JudW1iZXIsIGJ1ZmZlciwKKyAJCQkJCQlzaXplb2YoYnVmZmVyKSk7CistCQkJZXJyeChFWElUX0ZBSUxVUkUsIF8oInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAorKwkJCWVycngoRVhJVF9GQUlMVVJFLCAoInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAorIAkJCQkoaW50KWVycm9yb2Zmc2V0LCBidWZmZXIpOworIAkJfQorIAkJbWF0Y2hfZGF0YSA9IHBjcmUyX21hdGNoX2RhdGFfY3JlYXRlX2Zyb21fcGF0dGVybihyZSwgTlVMTCk7CitAQCAtNTA2LDcgKzUwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQkgICAgPj0wKSB7CisgCQkJCWlmIChjdGwtPnZlcmJvc2UpIHsKKyAJCQkJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7CistCQkJCQlwcmludGYoXygiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKKysJCQkJCXByaW50ZigoIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7CisgCQkJCX0KKyAJCQkJY29udGludWU7CisgCQkJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM1MzEwOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gYjkxYzMyM2Q4MDkwMzliZjliOGM0NDU0MTg1NzlhOGI1ZmU2MWFlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMjhdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQKLSBTREsKLQotV2hlbiBsZC1saW51eC0qLnNvLjIgaXMgcmVsb2NhdGVkIHRvIGEgcGF0aCB0aGF0IGlzIGxvbmdlciB0aGFuIHRoZQotb3JpZ2luYWwgZml4ZWQgbG9jYXRpb24sIHRoZSBkeW5hbWljIGxvYWRlciB3aWxsIGNyYXNoIGluIG9wZW5fcGF0aAotYmVjYXVzZSBpdCBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdCBtYXhfZGlybmFtZWxlbiBpcyBhIGZpeGVkIHNpemUgdGhhdAotbmV2ZXIgY2hhbmdlcy4KLQotVGhlIGFsbG9jYXRlZCBidWZmZXIgd2lsbCBub3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGRpcmVjdG9yeQotcGF0aCBzdHJpbmcgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gdGhlIGZpeGVkIGxvY2F0aW9uIHByb3ZpZGVkIGF0IGJ1aWxkCi10aW1lLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNESyBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBlbGYvZGwtbG9hZC5jIHwgMTIgKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCA5ODFiZDViNGFmLi5jN2EwZmE1OGNiIDEwMDY0NAotLS0tIGEvZWxmL2RsLWxvYWQuYwotKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTE3ODAsNyArMTc4MCwxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKLSAgICAgICAgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSB3aGVuIHJ0bGQgaXMgcnVuIGRpcmVjdGx5LiAgKi8KLSAgICAgcmV0dXJuIC0xOwotIAotKyAgZG8KLSsgICAgewotKyAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7Ci0rICAgICAgaWYgKHRoaXNfZGlyLT5kaXJuYW1lbGVuID4gbWF4X2Rpcm5hbWVsZW4pCi0rCXsKLSsJICBtYXhfZGlybmFtZWxlbiA9IHRoaXNfZGlyLT5kaXJuYW1lbGVuOwotKwl9Ci0rICAgIH0KLSsgIHdoaWxlICgqKytkaXJzICE9IE5VTEwpOwotKwotICAgYnVmID0gYWxsb2NhIChtYXhfZGlybmFtZWxlbiArIG1heF9jYXBzdHJsZW4gKyBuYW1lbGVuKTsKLSsKLSsgIGRpcnMgPSBzcHMtPmRpcnM7Ci0gICBkbwotICAgICB7Ci0gICAgICAgc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqdGhpc19kaXIgPSAqZGlyczsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNkYzgzNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gNjk4N2FkMTgzNzcwY2I1NjY4MGNjYzRmNmVhMDY1YTA0ZjMxY2NiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjQ4OjI0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMgd2VsbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitUaGUgZGVmYXVsdCBsaWIgc2VhcmNoIHBhdGggb3JkZXIgaXM6CisKKyAgMSkgTERfTElCUkFSWV9QQVRICisgIDIpIFJQQVRIIGZyb20gdGhlIGJpbmFyeQorICAzKSBsZC5zby5jYWNoZQorICA0KSBkZWZhdWx0IHNlYXJjaCBwYXRocyBlbWJlZGRlZCBpbiB0aGUgbGlua2VyCisKK0ZvciBuYXRpdmVzZGsgYmluYXJpZXMgd2hpY2ggYXJlIGJlaW5nIHVzZWQgYWxvbmdzaWRlIGJpbmFyaWVzIG9uIGEgaG9zdCBzeXN0ZW0sIHdlCituZWVkIHRoZSBzZWFyY2ggcGF0aHMgdG8gZmlyc3RseSBzZWFyY2ggdGhlIHNoaXBwZWQgbmF0aXZlc2RrIGxpYnMgYnV0IHRoZW4gYWxzbworY292ZXIgdGhlIGhvc3Qgc3lzdGVtLiBGb3IgZXhhbXBsZSB3ZSB3YW50IHRoZSBob3N0IHN5c3RlbSdzIGxpYkdMIGFuZCB0aGlzIG1heSBiZQoraW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24gbGlrZSAvdXNyL2xpYi9tZXNhLiBUaGUgb25seSBwbGFjZSB0aGUgbG9jYXRpb24gaXMga25vdworYWJvdXQgaXMgaW4gdGhlIGxkLnNvLmNhY2hlIG9mIHRoZSBob3N0IHN5c3RlbS4KKworU2luY2UgbmF0aXZlc2RrIGhhcyBhIHNpbXBsZSBzdHJ1Y3R1cmUgYW5kIGRvZXNuJ3QgbmVlZCB0byB1c2UgYSBjYWNoZSBpdHNlbGYsIHdlCityZXB1cnBvc2UgdGhlIGNhY2hlIGZvciB1c2UgYXMgYSBsYXN0IHJlc29ydCBpbiBmaW5kaW5nIGhvc3Qgc3lzdGVtIGJpbmFyaWVzLiBUaGlzCittZWFucyB3ZSBuZWVkIHRvIHN3aXRjaCB0aGUgb3JkZXIgb2YgMyBhbmQgNCBhYm92ZSB0byBtYWtlIHRoaXMgd29yayBlZmZlY3RpdmVseS4KKworUlAgMTQvMTAvMjAxMAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZWxmL2RsLWxvYWQuYyB8IDE2ICsrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKK2luZGV4IGE2YjgwZjkzOTUuLjMyMjZmMmU1MzEgMTAwNjQ0CistLS0gYS9lbGYvZGwtbG9hZC5jCisrKysgYi9lbGYvZGwtbG9hZC5jCitAQCAtMjA3Myw2ICsyMDczLDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCisrICAgICAgLyogdHJ5IHRoZSBkZWZhdWx0IHBhdGguICAqLworKyAgICAgIGlmIChmZCA9PSAtMQorKwkgICYmICgobCA9IGxvYWRlciA/OiBHTChkbF9ucylbbnNpZF0uX25zX2xvYWRlZCkgPT0gTlVMTAorKwkgICB8fCBfX2J1aWx0aW5fZXhwZWN0ICghKGwtPmxfZmxhZ3NfMSAmIERGXzFfTk9ERUZMSUIpLCAxKSkKKysJICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKKysJZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUgJiBfX1JUTERfU0VDVVJFLCAmcnRsZF9zZWFyY2hfZGlycywKKysJCQkmcmVhbG5hbWUsICZmYiwgbCwgTEFfU0VSX0RFRkFVTFQsICZmb3VuZF9vdGhlcl9jbGFzcyk7CisrICAgICAgLyogRmluYWxseSB0cnkgbGQuc28uY2FjaGUgKi8KKyAjaWZkZWYgVVNFX0xEQ09ORklHCisgICAgICAgaWYgKGZkID09IC0xCisgCSAgJiYgKF9fZ2xpYmNfbGlrZWx5ICgobW9kZSAmIF9fUlRMRF9TRUNVUkUpID09IDApCitAQCAtMjEzMSwxNCArMjEzOSw2IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKKyAJfQorICNlbmRpZgorIAorLSAgICAgIC8qIEZpbmFsbHksIHRyeSB0aGUgZGVmYXVsdCBwYXRoLiAgKi8KKy0gICAgICBpZiAoZmQgPT0gLTEKKy0JICAmJiAoKGwgPSBsb2FkZXIgPzogR0woZGxfbnMpW25zaWRdLl9uc19sb2FkZWQpID09IE5VTEwKKy0JICAgICAgfHwgX19nbGliY19saWtlbHkgKCEobC0+bF9mbGFnc18xICYgREZfMV9OT0RFRkxJQikpKQorLQkgICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKKy0JZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUsICZydGxkX3NlYXJjaF9kaXJzLAorLQkJCSZyZWFsbmFtZSwgJmZiLCBsLCBMQV9TRVJfREVGQVVMVCwgJmZvdW5kX290aGVyX2NsYXNzKTsKKy0KKyAgICAgICAvKiBBZGQgYW5vdGhlciBuZXdsaW5lIHdoZW4gd2UgYXJlIHRyYWNpbmcgdGhlIGxpYnJhcnkgbG9hZGluZy4gICovCisgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKKyAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGY1YTc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLUZyb20gM2FjZWI4NGUyYmMwZjc5NjIwNGZlMDU5YmVlZGU5MTE3OWIxYmM2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjhdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKLSBwYXRocwotCi1UaGlzIHBhdGNoIHB1dHMgdGhlIGR5bmFtaWMgbG9hZGVyIHBhdGggaW4gdGhlIGJpbmFyaWVzLCBTWVNURU1fRElSUyBzdHJpbmdzCi1hbmQgbGVuZ3RocyBhcyB3ZWxsIGFzIGxkLnNvLmNhY2hlIHBhdGggaW4gdGhlIGR5bmFtaWMgbG9hZGVyIHRvIHNwZWNpZmljCi1zZWN0aW9ucyBpbiBtZW1vcnkuIFRoZSBzZWN0aW9ucyB0aGF0IGNvbnRhaW4gcGF0aHMgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhIDQwOTYKLWJ5dGUgc2VjdGlvbiwgd2hpY2ggaXMgdGhlIG1heGltdW0gcGF0aCBsZW5ndGggaW4gbGludXguIFRoaXMgd2lsbCBhbGxvdyB0aGUKLXJlbG9jYXRpbmcgc2NyaXB0IHRvIHBhcnNlIHRoZSBFTEYgYmluYXJ5LCBkZXRlY3QgdGhlIHNlY3Rpb24gYW5kIGVhc2lseSByZXBsYWNlCi10aGUgc3RyaW5ncyBpbiBhIGNlcnRhaW4gcGF0aC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTREsgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IExhdXJlbnRpdSBQYWxjdSA8bGF1cmVudGl1LnBhbGN1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBlbGYvZGwtY2FjaGUuYyAgICAgICAgICAgICB8IDQgKysrKwotIGVsZi9kbC1sb2FkLmMgICAgICAgICAgICAgIHwgNCArKy0tCi0gZWxmL2ludGVycC5jICAgICAgICAgICAgICAgfCAyICstCi0gZWxmL2xkY29uZmlnLmMgICAgICAgICAgICAgfCAzICsrKwotIGVsZi9ydGxkLmMgICAgICAgICAgICAgICAgIHwgNSArKystLQotIGljb252L2djb252X2NvbmYuYyAgICAgICAgIHwgMiArLQotIHN5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIHwgNCAtLS0tCi0gNyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2VsZi9kbC1jYWNoZS5jIGIvZWxmL2RsLWNhY2hlLmMKLWluZGV4IGQ4ZDFlMjM0NGUuLmQyMjQ3YmZjNGYgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtY2FjaGUuYwotKysrIGIvZWxmL2RsLWNhY2hlLmMKLUBAIC0xMzMsNiArMTMzLDEwIEBAIGRvCQkJCQkJCQkJICAgICAgXAotIHdoaWxlICgwKQotIAotIAotK2NvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKSA9Ci0rCQlTWVNDT05GRElSICIvbGQuc28uY2FjaGUiOwotKwotKwotIGludAotIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKLSB7Ci1kaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGM3YTBmYTU4Y2IuLjRiODc1MDVkNDUgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtbG9hZC5jCi0rKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87Ci0gICAgZ2VuLXRydXN0ZWQtZGlycy5hd2suICAqLwotICNpbmNsdWRlICJ0cnVzdGVkLWRpcnMuaCIKLSAKLS1zdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1tdID0gU1lTVEVNX0RJUlM7Ci0tc3RhdGljIGNvbnN0IHNpemVfdCBzeXN0ZW1fZGlyc19sZW5bXSA9Ci0rc3RhdGljIGNvbnN0IGNoYXIgc3lzdGVtX2RpcnNbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuc3lzZGlycyIpKSkgPSBTWVNURU1fRElSUzsKLSt2b2xhdGlsZSBzdGF0aWMgY29uc3Qgc2l6ZV90IHN5c3RlbV9kaXJzX2xlbltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnN5c2RpcnNsZW4iKSkpID0KLSB7Ci0gICBTWVNURU1fRElSU19MRU4KLSB9OwotZGlmZiAtLWdpdCBhL2VsZi9pbnRlcnAuYyBiL2VsZi9pbnRlcnAuYwotaW5kZXggMjQzODI5ZjVmNy4uMGU3NDI0MTcwMyAxMDA2NDQKLS0tLSBhL2VsZi9pbnRlcnAuYwotKysrIGIvZWxmL2ludGVycC5jCi1AQCAtMTgsNSArMTgsNSBAQAotIAotICNpbmNsdWRlIDxydW50aW1lLWxpbmtlci5oPgotIAotLWNvbnN0IGNoYXIgX19pbnZva2VfZHluYW1pY19saW5rZXJfX1tdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmludGVycCIpKSkKLStjb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQotICAgPSBSVU5USU1FX0xJTktFUjsKLWRpZmYgLS1naXQgYS9lbGYvbGRjb25maWcuYyBiL2VsZi9sZGNvbmZpZy5jCi1pbmRleCAzYmM5ZTYxODkxLi42YTIzMDk2NDM1IDEwMDY0NAotLS0tIGEvZWxmL2xkY29uZmlnLmMKLSsrKyBiL2VsZi9sZGNvbmZpZy5jCi1AQCAtMTY4LDYgKzE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYXJncCBhcmdwID0KLSAgIG9wdGlvbnMsIHBhcnNlX29wdCwgTlVMTCwgZG9jLCBOVUxMLCBtb3JlX2hlbHAsIE5VTEwKLSB9OwotIAotKwotK2V4dGVybiBjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSk7Ci0rCi0gLyogQ2hlY2sgaWYgc3RyaW5nIGNvcnJlc3BvbmRzIHRvIGFuIGltcG9ydGFudCBoYXJkd2FyZSBjYXBhYmlsaXR5IG9yCi0gICAgYSBwbGF0Zm9ybS4gICovCi0gc3RhdGljIGludAotZGlmZiAtLWdpdCBhL2VsZi9ydGxkLmMgYi9lbGYvcnRsZC5jCi1pbmRleCBjOTQ5MGZmNjk0Li4zOTYyMzczZWJiIDEwMDY0NAotLS0tIGEvZWxmL3J0bGQuYwotKysrIGIvZWxmL3J0bGQuYwotQEAgLTE3Myw2ICsxNzMsNyBAQCBkc29fbmFtZV92YWxpZF9mb3Jfc3VpZCAoY29uc3QgY2hhciAqcCkKLSAgICAgfQotICAgcmV0dXJuICpwICE9ICdcMCc7Ci0gfQotK2V4dGVybiBjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSk7Ci0gCi0gLyogTERfQVVESVQgdmFyaWFibGUgY29udGVudHMuICBNdXN0IGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlCi0gICAgYXVkaXRfbGlzdCBiZWxvdy4gICovCi1AQCAtMTIyMCwxMyArMTIyMSwxMyBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKLSAgIC0tbGlzdCAgICAgICAgICAgICAgICBsaXN0IGFsbCBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGFyZSByZXNvbHZlZFxuXAotICAgLS12ZXJpZnkgICAgICAgICAgICAgIHZlcmlmeSB0aGF0IGdpdmVuIG9iamVjdCByZWFsbHkgaXMgYSBkeW5hbWljYWxseSBsaW5rZWRcblwKLSAJCQlvYmplY3Qgd2UgY2FuIGhhbmRsZVxuXAotLSAgLS1pbmhpYml0LWNhY2hlICAgICAgIERvIG5vdCB1c2UgIiBMRF9TT19DQUNIRSAiXG5cCi0rICAtLWluaGliaXQtY2FjaGUgICAgICAgRG8gbm90IHVzZSAlc1xuXAotICAgLS1saWJyYXJ5LXBhdGggUEFUSCAgIHVzZSBnaXZlbiBQQVRIIGluc3RlYWQgb2YgY29udGVudCBvZiB0aGUgZW52aXJvbm1lbnRcblwKLSAJCQl2YXJpYWJsZSBMRF9MSUJSQVJZX1BBVEhcblwKLSAgIC0taW5oaWJpdC1ycGF0aCBMSVNUICBpZ25vcmUgUlVOUEFUSCBhbmQgUlBBVEggaW5mb3JtYXRpb24gaW4gb2JqZWN0IG5hbWVzXG5cCi0gCQkJaW4gTElTVFxuXAotICAgLS1hdWRpdCBMSVNUICAgICAgICAgIHVzZSBvYmplY3RzIG5hbWVkIGluIExJU1QgYXMgYXVkaXRvcnNcblwKLS0gIC0tcHJlbG9hZCBMSVNUICAgICAgICBwcmVsb2FkIG9iamVjdHMgbmFtZWQgaW4gTElTVFxuIik7Ci0rICAtLXByZWxvYWQgTElTVCAgICAgICAgcHJlbG9hZCBvYmplY3RzIG5hbWVkIGluIExJU1RcbiIsIExEX1NPX0NBQ0hFKTsKLSAKLSAgICAgICArK19kbF9za2lwX2FyZ3M7Ci0gICAgICAgLS1fZGxfYXJnYzsKLWRpZmYgLS1naXQgYS9pY29udi9nY29udl9jb25mLmMgYi9pY29udi9nY29udl9jb25mLmMKLWluZGV4IGFlODkzN2NiYTAuLmYzMjFlZTQxOWUgMTAwNjQ0Ci0tLS0gYS9pY29udi9nY29udl9jb25mLmMKLSsrKyBiL2ljb252L2djb252X2NvbmYuYwotQEAgLTM2LDcgKzM2LDcgQEAKLSAKLSAKLSAvKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHBhdGggd2hlcmUgd2UgbG9vayBmb3IgbW9kdWxlIGxpc3RzLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciBkZWZhdWx0X2djb252X3BhdGhbXSA9IEdDT05WX1BBVEg7Ci0rc3RhdGljIGNoYXIgZGVmYXVsdF9nY29udl9wYXRoWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDT05WX1BBVEg7Ci0gCi0gLyogVHlwZSB0byByZXByZXNlbnQgc2VhcmNoIHBhdGguICAqLwotIHN0cnVjdCBwYXRoX2VsZW0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi1pbmRleCBiYzhiNDAzMzFkLi5iMGZkZDIxNDRiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKLSsrKyBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi1AQCAtMjcsMTAgKzI3LDYgQEAKLSAgICgoZmxhZ3MpID09IDEgfHwgKGZsYWdzKSA9PSBfRExfQ0FDSEVfREVGQVVMVF9JRCkKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIExEX1NPX0NBQ0hFCi0tIyBkZWZpbmUgTERfU09fQ0FDSEUgU1lTQ09ORkRJUiAiL2xkLnNvLmNhY2hlIgotLSNlbmRpZgotLQotICNpZm5kZWYgYWRkX3N5c3RlbV9kaXIKLSAjIGRlZmluZSBhZGRfc3lzdGVtX2RpcihkaXIpIGFkZF9kaXIgKGRpcikKLSAjZW5kaWYKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQzZjI5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGU0MWUwNDIxNDllYWMzNDllMDlmYTYyOWZjYWM0YzY0ZTU3NDMyMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozNTozNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzI4XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKLQotVGhlIGZpeCBjb25zaXN0IG9mIGFsbG93aW5nIDY0Yml0IGF0b21pYyBvcHMgZm9yIHg4Ni4KLVRoaXMgc2hvdWxkIGJlIHNhZmUgZm9yIGk1ODYgYW5kIG5ld2VyIENQVXMuCi1JdCBhbHNvIG1ha2VzIHRoZSBzeW5jaHJvbml6YXRpb24gbW9yZSBlZmZpY2llbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oIHwgMyArLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oIGIvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAotaW5kZXggYWE2MGNhNGNkNi4uM2U0MmUwMDE4MyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKLSsrKyBiL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKLUBAIC01OCwxNSArNTgsMTQgQEAgdHlwZWRlZiB1aW50bWF4X3QgdWF0b21pY19tYXhfdDsKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIFVTRV9BVE9NSUNfQ09NUElMRVJfQlVJTFRJTlMJMQotKyMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMQotIAotICNpZmRlZiBfX3g4Nl82NF9fCi0tIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkxCi0gIyBkZWZpbmUgU1BfUkVHCQkJCSJyc3AiCi0gIyBkZWZpbmUgU0VHX1JFRwkJCSJmcyIKLSAjIGRlZmluZSBCUl9DT05TVFJBSU5UCQkJInEiCi0gIyBkZWZpbmUgSUJSX0NPTlNUUkFJTlQJCQkiaXEiCi0gI2Vsc2UKLS0jIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTAKLSAjIGRlZmluZSBTUF9SRUcJCQkJImVzcCIKLSAjIGRlZmluZSBTRUdfUkVHCQkJImdzIgotICMgZGVmaW5lIEJSX0NPTlNUUkFJTlQJCQkiciIKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJlMTI4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNzgwNjM0MGMyYWNjYzJjNTFlN2U4NjFiNjE4YzI5ZmI1NjA5YTAwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUwOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQgU0RLCisKK1doZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKK29yaWdpbmFsIGZpeGVkIGxvY2F0aW9uLCB0aGUgZHluYW1pYyBsb2FkZXIgd2lsbCBjcmFzaCBpbiBvcGVuX3BhdGgKK2JlY2F1c2UgaXQgaW1wbGljaXRseSBhc3N1bWVzIHRoYXQgbWF4X2Rpcm5hbWVsZW4gaXMgYSBmaXhlZCBzaXplIHRoYXQKK25ldmVyIGNoYW5nZXMuCisKK1RoZSBhbGxvY2F0ZWQgYnVmZmVyIHdpbGwgbm90IGJlIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBkaXJlY3RvcnkKK3BhdGggc3RyaW5nIHdoaWNoIGlzIGxhcmdlciB0aGFuIHRoZSBmaXhlZCBsb2NhdGlvbiBwcm92aWRlZCBhdCBidWlsZAordGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTREsgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZWxmL2RsLWxvYWQuYyB8IDEyICsrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYworaW5kZXggMzIyNmYyZTUzMS4uN2NiOGE4NmZhYiAxMDA2NDQKKy0tLSBhL2VsZi9kbC1sb2FkLmMKKysrKyBiL2VsZi9kbC1sb2FkLmMKK0BAIC0xNzczLDcgKzE3NzMsMTkgQEAgb3Blbl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IG1vZGUsCisgICAgICAgIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBydGxkIGlzIHJ1biBkaXJlY3RseS4gICovCisgICAgIHJldHVybiAtMTsKKyAKKysgIGRvCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICp0aGlzX2RpciA9ICpkaXJzOworKyAgICAgIGlmICh0aGlzX2Rpci0+ZGlybmFtZWxlbiA+IG1heF9kaXJuYW1lbGVuKQorKwl7CisrCSAgbWF4X2Rpcm5hbWVsZW4gPSB0aGlzX2Rpci0+ZGlybmFtZWxlbjsKKysJfQorKyAgICB9CisrICB3aGlsZSAoKisrZGlycyAhPSBOVUxMKTsKKysKKyAgIGJ1ZiA9IGFsbG9jYSAobWF4X2Rpcm5hbWVsZW4gKyBtYXhfY2Fwc3RybGVuICsgbmFtZWxlbik7CisrCisrICBkaXJzID0gc3BzLT5kaXJzOworICAgZG8KKyAgICAgeworICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWFkNjAzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSA1MGFiMGIwYzExNmY0YWUzZDk3NWVjMWIxNWVkNDU5NWZkOTE0N2Y2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo1NToxMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDA1LzI4XSBuYXRpdmVzZGstZ2xpYmM6IE1ha2UgcmVsb2NhdGFibGUgaW5zdGFsbCBmb3IgbG9jYWxlcwotCi1UaGUgZ2xpYmMgbG9jYWxlIHBhdGggaXMgaGFyZC1jb2RlZCB0byB0aGUgaW5zdGFsbCBwcmVmaXgsIGJ1dCBpbiBTREtzIHdlIG5lZWQKLXRvIGJlIGFibGUgdG8gcmVsb2NhdGUgdGhlIGJpbmFyaWVzLiAgRXhwYW5kIHRoZSBzdHJpbmdzIHRvIDRLIGFuZCBwdXQgdGhlbSBpbiBhCi1tYWdpYyBzZWdtZW50IHRoYXQgd2UgY2FuIHJlbG9jYXRlIGF0IGluc3RhbGwgdGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvZmluZGxvY2FsZS5jICB8IDQgKystLQotIGxvY2FsZS9sb2FkYXJjaGl2ZS5jIHwgMiArLQotIGxvY2FsZS9sb2NhbGVpbmZvLmggIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2ZpbmRsb2NhbGUuYyBiL2xvY2FsZS9maW5kbG9jYWxlLmMKLWluZGV4IDlhZjYwNWJkNjQuLmIyYjBhM2Y5M2IgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvZmluZGxvY2FsZS5jCi0rKysgYi9sb2NhbGUvZmluZGxvY2FsZS5jCi1AQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqY29uc3QgX25sX0NbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLSAgICB3aGljaCBhcmUgc29tZWhvdyBhZGRyZXNzZWQuICAqLwotIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W19fTENfTEFTVF07Ci0gCi0tY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOwotK2NoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbiBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSOwotIAotIC8qIENoZWNrcyBpZiB0aGUgbmFtZSBpcyBhY3R1YWxseSBwcmVzZW50LCB0aGF0IGlzLCBub3QgTlVMTCBhbmQgbm90Ci0gICAgZW1wdHkuICAqLwotQEAgLTE2Nyw3ICsxNjcsNyBAQCBfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoLCBzaXplX3QgbG9jYWxlX3BhdGhfbGVuLAotIAotICAgICAgIC8qIE5vdGhpbmcgaW4gdGhlIGFyY2hpdmUuICBTZXQgdGhlIGRlZmF1bHQgcGF0aCB0byBzZWFyY2ggYmVsb3cuICAqLwotICAgICAgIGxvY2FsZV9wYXRoID0gX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7Ci0tICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc2l6ZW9mIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOwotKyAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHN0cmxlbihsb2NhbGVfcGF0aCkgKyAxOwotICAgICB9Ci0gICBlbHNlCi0gICAgIC8qIFdlIHJlYWxseSBoYXZlIHRvIGxvYWQgc29tZSBkYXRhLiAgRmlyc3Qgc2VlIHdoZXRoZXIgdGhlIG5hbWUgaXMKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9hZGFyY2hpdmUuYyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCi1pbmRleCA4MDNjMWNmMmE0Li45MDIzZjQ3NWI4IDEwMDY0NAotLS0tIGEvbG9jYWxlL2xvYWRhcmNoaXZlLmMKLSsrKyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCi1AQCAtNDIsNyArNDIsNyBAQAotIAotIAotIC8qIE5hbWUgb2YgdGhlIGxvY2FsZSBhcmNoaXZlIGZpbGUuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVtdID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKLStzdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKLSAKLSAvKiBTaXplIG9mIGluaXRpYWwgbWFwcGluZyB3aW5kb3csIG9wdGltYWwgaWYgbGFyZ2UgZW5vdWdoIHRvCi0gICAgY292ZXIgdGhlIGhlYWRlciBwbHVzIHRoZSBpbml0aWFsIGxvY2FsZS4gICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2xvY2FsZWluZm8uaCBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLWluZGV4IDdjMWNjM2VlY2IuLjUzY2I4YmZjNTkgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCi0rKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1AQCAtMzI1LDcgKzMyNSw3IEBAIF9ubF9sb29rdXBfd29yZCAobG9jYWxlX3QgbCwgaW50IGNhdGVnb3J5LCBpbnQgaXRlbSkKLSB9Ci0gCi0gLyogRGVmYXVsdCBzZWFyY2ggcGF0aCBpZiBubyBMT0NQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KLS1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW47Ci0rZXh0ZXJuIGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbjsKLSAKLSAvKiBMb2FkIHRoZSBsb2NhbGUgZGF0YSBmb3IgQ0FURUdPUlkgZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKk5BTUUuCi0gICAgSWYgKk5BTUUgaXMgIiIsIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXMgc3BlY2lmaWVkIGJ5IFBPU0lYLCBhbmQKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk0YzJiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDFiOTdiZWZiZTY5M2ViOTNhNzdiNjA5OGY2YWUxMzk0YTUzNDYyZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MTozOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IFJhaXNlIHRoZSBzaXplIG9mIGFycmF5cyBjb250YWluaW5nIGRsIHBhdGhzCisKK1RoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKK2FuZCBsZW5ndGhzIGFzIHdlbGwgYXMgbGQuc28uY2FjaGUgcGF0aCBpbiB0aGUgZHluYW1pYyBsb2FkZXIgdG8gc3BlY2lmaWMKK3NlY3Rpb25zIGluIG1lbW9yeS4gVGhlIHNlY3Rpb25zIHRoYXQgY29udGFpbiBwYXRocyBoYXZlIGJlZW4gYWxsb2NhdGVkIGEgNDA5NgorYnl0ZSBzZWN0aW9uLCB3aGljaCBpcyB0aGUgbWF4aW11bSBwYXRoIGxlbmd0aCBpbiBsaW51eC4gVGhpcyB3aWxsIGFsbG93IHRoZQorcmVsb2NhdGluZyBzY3JpcHQgdG8gcGFyc2UgdGhlIEVMRiBiaW5hcnksIGRldGVjdCB0aGUgc2VjdGlvbiBhbmQgZWFzaWx5IHJlcGxhY2UKK3RoZSBzdHJpbmdzIGluIGEgY2VydGFpbiBwYXRoLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NESyBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTGF1cmVudGl1IFBhbGN1IDxsYXVyZW50aXUucGFsY3VAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGVsZi9kbC1jYWNoZS5jICAgICAgICAgICAgIHwgNCArKysrCisgZWxmL2RsLWxvYWQuYyAgICAgICAgICAgICAgfCA0ICsrLS0KKyBlbGYvaW50ZXJwLmMgICAgICAgICAgICAgICB8IDIgKy0KKyBlbGYvbGRjb25maWcuYyAgICAgICAgICAgICB8IDMgKysrCisgZWxmL3J0bGQuYyAgICAgICAgICAgICAgICAgfCA1ICsrKy0tCisgaWNvbnYvZ2NvbnZfY29uZi5jICAgICAgICAgfCAyICstCisgc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggfCA0IC0tLS0KKyA3IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWNhY2hlLmMgYi9lbGYvZGwtY2FjaGUuYworaW5kZXggM2VlZGQ5YWZjZi4uZWZkZmU1Y2FlNyAxMDA2NDQKKy0tLSBhL2VsZi9kbC1jYWNoZS5jCisrKysgYi9lbGYvZGwtY2FjaGUuYworQEAgLTEzMyw2ICsxMzMsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCisgd2hpbGUgKDApCisgCisgCisrY29uc3QgY2hhciBMRF9TT19DQUNIRVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5sZHNvY2FjaGUiKSkpID0KKysJCVNZU0NPTkZESVIgIi9sZC5zby5jYWNoZSI7CisrCisrCisgaW50CisgX2RsX2NhY2hlX2xpYmNtcCAoY29uc3QgY2hhciAqcDEsIGNvbnN0IGNoYXIgKnAyKQorIHsKK2RpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYworaW5kZXggN2NiOGE4NmZhYi4uZTMyZDRhYTkzNiAxMDA2NDQKKy0tLSBhL2VsZi9kbC1sb2FkLmMKKysrKyBiL2VsZi9kbC1sb2FkLmMKK0BAIC0xMTAsOCArMTEwLDggQEAgc3RhdGljIHNpemVfdCBtYXhfY2Fwc3RybGVuIGF0dHJpYnV0ZV9yZWxybzsKKyAgICBnZW4tdHJ1c3RlZC1kaXJzLmF3ay4gICovCisgI2luY2x1ZGUgInRydXN0ZWQtZGlycy5oIgorIAorLXN0YXRpYyBjb25zdCBjaGFyIHN5c3RlbV9kaXJzW10gPSBTWVNURU1fRElSUzsKKy1zdGF0aWMgY29uc3Qgc2l6ZV90IHN5c3RlbV9kaXJzX2xlbltdID0KKytzdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1s0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5zeXNkaXJzIikpKSA9IFNZU1RFTV9ESVJTOworK3ZvbGF0aWxlIHN0YXRpYyBjb25zdCBzaXplX3Qgc3lzdGVtX2RpcnNfbGVuW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuc3lzZGlyc2xlbiIpKSkgPQorIHsKKyAgIFNZU1RFTV9ESVJTX0xFTgorIH07CitkaWZmIC0tZ2l0IGEvZWxmL2ludGVycC5jIGIvZWxmL2ludGVycC5jCitpbmRleCAzMzFjYzFkZjQ4Li44ODViMmQ5NDc2IDEwMDY0NAorLS0tIGEvZWxmL2ludGVycC5jCisrKysgYi9lbGYvaW50ZXJwLmMKK0BAIC0xOCw1ICsxOCw1IEBACisgCisgI2luY2x1ZGUgPHJ1bnRpbWUtbGlua2VyLmg+CisgCistY29uc3QgY2hhciBfX2ludm9rZV9keW5hbWljX2xpbmtlcl9fW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQorK2NvbnN0IGNoYXIgX19pbnZva2VfZHluYW1pY19saW5rZXJfX1s0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbnRlcnAiKSkpCisgICA9IFJVTlRJTUVfTElOS0VSOworZGlmZiAtLWdpdCBhL2VsZi9sZGNvbmZpZy5jIGIvZWxmL2xkY29uZmlnLmMKK2luZGV4IDY4MWVkNzg0OTYuLjg4MzNlZDBhNmIgMTAwNjQ0CistLS0gYS9lbGYvbGRjb25maWcuYworKysrIGIvZWxmL2xkY29uZmlnLmMKK0BAIC0xNjgsNiArMTY4LDkgQEAgc3RhdGljIHN0cnVjdCBhcmdwIGFyZ3AgPQorICAgb3B0aW9ucywgcGFyc2Vfb3B0LCBOVUxMLCBkb2MsIE5VTEwsIG1vcmVfaGVscCwgTlVMTAorIH07CisgCisrCisrZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKKysKKyAvKiBDaGVjayBpZiBzdHJpbmcgY29ycmVzcG9uZHMgdG8gYW4gaW1wb3J0YW50IGhhcmR3YXJlIGNhcGFiaWxpdHkgb3IKKyAgICBhIHBsYXRmb3JtLiAgKi8KKyBzdGF0aWMgaW50CitkaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKK2luZGV4IDU1M2NmYmQxYjcuLjM5MzQ3YzJjMDMgMTAwNjQ0CistLS0gYS9lbGYvcnRsZC5jCisrKysgYi9lbGYvcnRsZC5jCitAQCAtMTc1LDYgKzE3NSw3IEBAIGRzb19uYW1lX3ZhbGlkX2Zvcl9zdWlkIChjb25zdCBjaGFyICpwKQorICAgICB9CisgICByZXR1cm4gKnAgIT0gJ1wwJzsKKyB9CisrZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKKyAKKyAvKiBMRF9BVURJVCB2YXJpYWJsZSBjb250ZW50cy4gIE11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUKKyAgICBhdWRpdF9saXN0IGJlbG93LiAgKi8KK0BAIC0xMjIyLDEzICsxMjIzLDEzIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAorICAgLS1saXN0ICAgICAgICAgICAgICAgIGxpc3QgYWxsIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkgYXJlIHJlc29sdmVkXG5cCisgICAtLXZlcmlmeSAgICAgICAgICAgICAgdmVyaWZ5IHRoYXQgZ2l2ZW4gb2JqZWN0IHJlYWxseSBpcyBhIGR5bmFtaWNhbGx5IGxpbmtlZFxuXAorIAkJCW9iamVjdCB3ZSBjYW4gaGFuZGxlXG5cCistICAtLWluaGliaXQtY2FjaGUgICAgICAgRG8gbm90IHVzZSAiIExEX1NPX0NBQ0hFICJcblwKKysgIC0taW5oaWJpdC1jYWNoZSAgICAgICBEbyBub3QgdXNlICVzXG5cCisgICAtLWxpYnJhcnktcGF0aCBQQVRIICAgdXNlIGdpdmVuIFBBVEggaW5zdGVhZCBvZiBjb250ZW50IG9mIHRoZSBlbnZpcm9ubWVudFxuXAorIAkJCXZhcmlhYmxlIExEX0xJQlJBUllfUEFUSFxuXAorICAgLS1pbmhpYml0LXJwYXRoIExJU1QgIGlnbm9yZSBSVU5QQVRIIGFuZCBSUEFUSCBpbmZvcm1hdGlvbiBpbiBvYmplY3QgbmFtZXNcblwKKyAJCQlpbiBMSVNUXG5cCisgICAtLWF1ZGl0IExJU1QgICAgICAgICAgdXNlIG9iamVjdHMgbmFtZWQgaW4gTElTVCBhcyBhdWRpdG9yc1xuXAorLSAgLS1wcmVsb2FkIExJU1QgICAgICAgIHByZWxvYWQgb2JqZWN0cyBuYW1lZCBpbiBMSVNUXG4iKTsKKysgIC0tcHJlbG9hZCBMSVNUICAgICAgICBwcmVsb2FkIG9iamVjdHMgbmFtZWQgaW4gTElTVFxuIiwgTERfU09fQ0FDSEUpOworIAorICAgICAgICsrX2RsX3NraXBfYXJnczsKKyAgICAgICAtLV9kbF9hcmdjOworZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NvbmYuYyBiL2ljb252L2djb252X2NvbmYuYworaW5kZXggNzM1YmQxZjJkNS4uMjUxMDBiYTY2NiAxMDA2NDQKKy0tLSBhL2ljb252L2djb252X2NvbmYuYworKysrIGIvaWNvbnYvZ2NvbnZfY29uZi5jCitAQCAtMzYsNyArMzYsNyBAQAorIAorIAorIC8qIFRoaXMgaXMgdGhlIGRlZmF1bHQgcGF0aCB3aGVyZSB3ZSBsb29rIGZvciBtb2R1bGUgbGlzdHMuICAqLworLXN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfZ2NvbnZfcGF0aFtdID0gR0NPTlZfUEFUSDsKKytzdGF0aWMgY2hhciBkZWZhdWx0X2djb252X3BhdGhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NPTlZfUEFUSDsKKyAKKyAvKiBUeXBlIHRvIHJlcHJlc2VudCBzZWFyY2ggcGF0aC4gICovCisgc3RydWN0IHBhdGhfZWxlbQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKK2luZGV4IDZiMzEwZTllMTUuLjM4NzczMTFkZjQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAorKysrIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKK0BAIC0yNywxMCArMjcsNiBAQAorICAgKChmbGFncykgPT0gMSB8fCAoZmxhZ3MpID09IF9ETF9DQUNIRV9ERUZBVUxUX0lEKQorICNlbmRpZgorIAorLSNpZm5kZWYgTERfU09fQ0FDSEUKKy0jIGRlZmluZSBMRF9TT19DQUNIRSBTWVNDT05GRElSICIvbGQuc28uY2FjaGUiCistI2VuZGlmCistCisgI2lmbmRlZiBhZGRfc3lzdGVtX2RpcgorICMgZGVmaW5lIGFkZF9zeXN0ZW1fZGlyKGRpcikgYWRkX2RpciAoZGlyKQorICNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxYzU5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ODQgKzAsMCBAQAotRnJvbSA3Y2NjZjVjZWMwOWYyYTQyY2MzZmU1ZDgyY2UyMWI3MzA5MzMwYjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8yOF0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyAgICB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgIHwgICAxICsKLSAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzICAgICAgfCAgIDIgKwotIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgICAgICB8ICAgMSArCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAxOSBmaWxlcyBjaGFuZ2VkLCAxNDE4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmIxMDNiNGRlYTUKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjY0ZGIxN2ZhZGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotQEAgLTAsMCArMSwyIEBACi0rIyBlMzAwYzMgaXMgYSB2YXJpYW50IG9mIDYwM2Ugc28gdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbnMgZm9yIHNxcnQKLStwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjdlYWM1ZmNmMDIKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjY0YjJhNzcwMAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYTI1OTM0NDY3YgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYTdiYzg1NGJlOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMDRmZjhjYzE4MQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjhiNmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYTc1Mjg1N2NjMzQyZWU1MTM2YzlhNTkzMDM3YjZlZTZmZjhhZjhlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjM1OjM1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgorCitUaGUgZml4IGNvbnNpc3Qgb2YgYWxsb3dpbmcgNjRiaXQgYXRvbWljIG9wcyBmb3IgeDg2LgorVGhpcyBzaG91bGQgYmUgc2FmZSBmb3IgaTU4NiBhbmQgbmV3ZXIgQ1BVcy4KK0l0IGFsc28gbWFrZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtb3JlIGVmZmljaWVudC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmggfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmggYi9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oCitpbmRleCBiYjQ5NjQ4Mzc0Li5hYTA4ZDNjMGE3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAorKysrIGIvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAorQEAgLTU4LDE1ICs1OCwxNCBAQCB0eXBlZGVmIHVpbnRtYXhfdCB1YXRvbWljX21heF90OworICNlbmRpZgorIAorICNkZWZpbmUgVVNFX0FUT01JQ19DT01QSUxFUl9CVUlMVElOUwkxCisrIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkxCisgCisgI2lmZGVmIF9feDg2XzY0X18KKy0jIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTEKKyAjIGRlZmluZSBTUF9SRUcJCQkJInJzcCIKKyAjIGRlZmluZSBTRUdfUkVHCQkJImZzIgorICMgZGVmaW5lIEJSX0NPTlNUUkFJTlQJCQkicSIKKyAjIGRlZmluZSBJQlJfQ09OU1RSQUlOVAkJCSJpcSIKKyAjZWxzZQorLSMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMAorICMgZGVmaW5lIFNQX1JFRwkJCQkiZXNwIgorICMgZGVmaW5lIFNFR19SRUcJCQkiZ3MiCisgIyBkZWZpbmUgQlJfQ09OU1RSQUlOVAkJCSJyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2NkMTdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2gKQEAgLTAsMCArMSw5OSBAQAorRnJvbSAzZGY5MWQxZDhiOWM3YTAxYjNlZjgxMzNjNGY5Yjk3NjQyMjdkNTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo1NToxMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IE1ha2UgcmVsb2NhdGFibGUgaW5zdGFsbCBmb3IgbG9jYWxlcworCitUaGUgZ2xpYmMgbG9jYWxlIHBhdGggaXMgaGFyZC1jb2RlZCB0byB0aGUgaW5zdGFsbCBwcmVmaXgsIGJ1dCBpbiBTREtzIHdlIG5lZWQKK3RvIGJlIGFibGUgdG8gcmVsb2NhdGUgdGhlIGJpbmFyaWVzLiAgRXhwYW5kIHRoZSBzdHJpbmdzIHRvIDRLIGFuZCBwdXQgdGhlbSBpbiBhCittYWdpYyBzZWdtZW50IHRoYXQgd2UgY2FuIHJlbG9jYXRlIGF0IGluc3RhbGwgdGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvZmluZGxvY2FsZS5jICB8IDQgKystLQorIGxvY2FsZS9sb2FkYXJjaGl2ZS5jIHwgMiArLQorIGxvY2FsZS9sb2NhbGVpbmZvLmggIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L2xvY2FsZS9maW5kbG9jYWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvZmluZGxvY2FsZS5jCisrKysgZ2l0L2xvY2FsZS9maW5kbG9jYWxlLmMKK0BAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBfX2xvY2FsZV9kYXRhICpjb25zdCBfbmxfQ1tdIGF0dHIKKyAgICB3aGljaCBhcmUgc29tZWhvdyBhZGRyZXNzZWQuICAqLworIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W19fTENfTEFTVF07CisgCistY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOworK2NoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbiBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSOworIAorIC8qIENoZWNrcyBpZiB0aGUgbmFtZSBpcyBhY3R1YWxseSBwcmVzZW50LCB0aGF0IGlzLCBub3QgTlVMTCBhbmQgbm90CisgICAgZW1wdHkuICAqLworQEAgLTE2Niw3ICsxNjYsNyBAQCBfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoCisgCisgICAgICAgLyogTm90aGluZyBpbiB0aGUgYXJjaGl2ZS4gIFNldCB0aGUgZGVmYXVsdCBwYXRoIHRvIHNlYXJjaCBiZWxvdy4gICovCisgICAgICAgbG9jYWxlX3BhdGggPSBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKKy0gICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzaXplb2YgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7CisrICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc3RybGVuKGxvY2FsZV9wYXRoKSArIDE7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgLyogV2UgcmVhbGx5IGhhdmUgdG8gbG9hZCBzb21lIGRhdGEuICBGaXJzdCBzZWUgd2hldGhlciB0aGUgbmFtZSBpcworSW5kZXg6IGdpdC9sb2NhbGUvbG9hZGFyY2hpdmUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCisrKysgZ2l0L2xvY2FsZS9sb2FkYXJjaGl2ZS5jCitAQCAtNDIsNyArNDIsNyBAQAorIAorIAorIC8qIE5hbWUgb2YgdGhlIGxvY2FsZSBhcmNoaXZlIGZpbGUuICAqLworLXN0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVtdID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKKytzdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKKyAKKyAvKiBTaXplIG9mIGluaXRpYWwgbWFwcGluZyB3aW5kb3csIG9wdGltYWwgaWYgbGFyZ2UgZW5vdWdoIHRvCisgICAgY292ZXIgdGhlIGhlYWRlciBwbHVzIHRoZSBpbml0aWFsIGxvY2FsZS4gICovCitJbmRleDogZ2l0L2xvY2FsZS9sb2NhbGVpbmZvLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvbG9jYWxlaW5mby5oCisrKysgZ2l0L2xvY2FsZS9sb2NhbGVpbmZvLmgKK0BAIC0zMzEsNyArMzMxLDcgQEAgX25sX2xvb2t1cF93b3JkIChsb2NhbGVfdCBsLCBpbnQgY2F0ZWdvcgorIH0KKyAKKyAvKiBEZWZhdWx0IHNlYXJjaCBwYXRoIGlmIG5vIExPQ1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLworLWV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoW10gYXR0cmlidXRlX2hpZGRlbjsKKytleHRlcm4gY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuOworIAorIC8qIExvYWQgdGhlIGxvY2FsZSBkYXRhIGZvciBDQVRFR09SWSBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqTkFNRS4KKyAgICBJZiAqTkFNRSBpcyAiIiwgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBzcGVjaWZpZWQgYnkgUE9TSVgsIGFuZAorSW5kZXg6IGdpdC9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlLmMKKysrKyBnaXQvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZS5jCitAQCAtNjMyLDYgKzYzMiw3IEBAIG5hbWVlbnRjbXAgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIKKyAJCSAgKChjb25zdCBzdHJ1Y3QgbmFtZWVudCAqKSBiKS0+bmFtZSk7CisgfQorIAorK3N0YXRpYyBjaGFyIF93cml0ZV9hcmNoaXZlX2xvY2FsZXNfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEFSQ0hJVkVfTkFNRTsKKyAKKyBzdGF0aWMgaW50Cisgd3JpdGVfYXJjaGl2ZV9sb2NhbGVzICh2b2lkICoqYWxsX2RhdGFwLCBjaGFyICpsaW5lYnVmKQorQEAgLTY0NSw3ICs2NDYsNyBAQCB3cml0ZV9hcmNoaXZlX2xvY2FsZXMgKHZvaWQgKiphbGxfZGF0YXAsCisgICBpbnQgZmQsIHJldCA9IDA7CisgICB1aW50MzJfdCBjbnQ7CisgCistICBmZCA9IG9wZW42NCAoQVJDSElWRV9OQU1FLCBPX1JET05MWSk7CisrICBmZCA9IG9wZW42NCAoX3dyaXRlX2FyY2hpdmVfbG9jYWxlc19wYXRoLCBPX1JET05MWSk7CisgICBpZiAoZmQgPCAwKQorICAgICByZXR1cm4gMDsKKyAKK0BAIC03MDAsOCArNzAxLDggQEAgd3JpdGVfYXJjaGl2ZV9sb2NhbGVzICh2b2lkICoqYWxsX2RhdGFwLAorIAkgIGlmIChjbnQpCisgCSAgICBwdXRjaGFyX3VubG9ja2VkICgnXG4nKTsKKyAKKy0JICBwcmludGYgKCJsb2NhbGU6ICUtMTUuMTVzIGFyY2hpdmU6ICIgQVJDSElWRV9OQU1FICJcbiVzXG4iLAorLQkJICBuYW1lc1tjbnRdLm5hbWUsIGxpbmVidWYpOworKwkgIHByaW50ZiAoImxvY2FsZTogJS0xNS4xNXMgYXJjaGl2ZTogJXNcbiVzXG4iLAorKwkJICBuYW1lc1tjbnRdLm5hbWUsIF93cml0ZV9hcmNoaXZlX2xvY2FsZXNfcGF0aCwgbGluZWJ1Zik7CisgCisgCSAgbG9jcmVjID0gKHN0cnVjdCBsb2NyZWNlbnQgKikgKGFkZHIgKyBuYW1lc1tjbnRdLmxvY3JlY19vZmZzZXQpOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU2ZmIyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gZGM3MTVmNmM3MGQwMWU5YzNiMzFjMTgyNWZhNWJjNDQ3OTY3Yzg0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjExOjIyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjhdIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24KLSBuYW1lcwotCi1UaGlzIGJvbHRzIGluIGEgaG9vayBmb3IgT0UgdG8gcGFzcyBpdHMgb3duIHZlcnNpb24gb2YgaW50ZXJwcmV0ZXIKLW5hbWVzIGludG8gZ2xpYmMgZXNwZWNpYWxseSBmb3IgbXVsdGlsaWIgY2FzZSwgd2hlcmUgaXQgZGlmZmVycyBmcm9tIGFueQotb3RoZXIgZGlzdHJvcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBMaWFuaGFvIEx1IDxsaWFuaGFvLmx1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBlbGYvcmVhZGxpYi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9lbGYvcmVhZGxpYi5jIGIvZWxmL3JlYWRsaWIuYwotaW5kZXggYzk3NDNlNjY5Mi4uNjMwN2Y5MThmYyAxMDA2NDQKLS0tLSBhL2VsZi9yZWFkbGliLmMKLSsrKyBiL2VsZi9yZWFkbGliLmMKLUBAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMgaW50ZXJwcmV0ZXJzW10gPQotICNpZmRlZiBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKLSAgIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUwotICNlbmRpZgotKyAgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCi0gfTsKLSAKLSBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGtub3duX2xpYnNbXSA9Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYWMzMjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDE1ODEgQEAKK0Zyb20gNjFiNmM5NzM3ODk3YzU4MjhlZjRiNDA2OTllZTBhNzRjNTcwMDM0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBFZG1hciBXaWVuc2tvc2tpIDxlZG1hckBmcmVlc2NhbGUuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyB8IDEzNCArKysrKysrKysrKysrKysrKysKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgICAgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzICB8ICAgMSArCisgLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyAgICAgIHwgICAyICsKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzICAgICAgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgMTkgZmlsZXMgY2hhbmdlZCwgMTQxOCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcworCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iMTAzYjRkZWE1CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi42NGRiMTdmYWRhCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEsMiBAQAorKyMgZTMwMGMzIGlzIGEgdmFyaWFudCBvZiA2MDNlIHNvIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb25zIGZvciBzcXJ0CisrcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43ZWFjNWZjZjAyCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2NGIyYTc3MDAKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmEyNTkzNDQ2N2IKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmE3YmM4NTRiZTgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjA0ZmY4Y2MxODEKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmVkMjAzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLUZyb20gNDJhMDFjNTU3ODZhOTQ3MjkzNGUxMmUwYmYwYzQwOTgzNTc5YjYwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE1OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjhdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKLQotb24gcHBjIGZpeGVzIHRoZSBlcnJvcnMgbGlrZSBiZWxvdwotfCAuLy5saWJzL2xpYnB1bHNlY29yZS0xLjEuc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCi18IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1DaGFuZ2VMb2cKLQotMjAxMi0wMS0wNiAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmM6IEFkZCBfXypfZmluaXRlIGFsaWFzLgotICAgICAgICBSZW1vdmUgY3J1ZnQuCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmM6IERpdHRvLgotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmM6IERpdHRvLgotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jOiBEaXR0by4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKwotIDEyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1AQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLS0jZWxzZQotLWRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotLSAgICAgZG91YmxlIGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0gX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotLSNlbHNlCi0tZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0tICAgICBmbG9hdCBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLS0jZWxzZQotLWRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotLSAgICAgZG91YmxlIGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotICAgIHNxdWFyZSByb290LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBmbG9hdAotIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLS0jZWxzZQotLWZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotLSAgICAgZmxvYXQgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE1ZDZkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi1Gcm9tIGEwZmNiOTEzNWJjOGMyYjlkOGExNjFkMTY2YjZmOWQ1NmQ3YWYyNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzI4XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCi0gb3V0IF9fc2xvdyB2ZXJzaW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgIDggKysrKysrKy0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMTQgKysrKysrKysrKystLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAgOCArKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOCArKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDkgKysrKysrKystCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQotIDEyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2YzNlLi5kYWE4M2YzZmU4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLWluZGV4IGE5MTdmMzEzYWIuLmI4MTJjZjE3MDUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05Myw0ICs5MywxMCBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gI2Vsc2UKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQotICAgICAgZG91YmxlIGI7Ci0gI2VuZGlmCi0gewotQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjFjMzQyNDRiZDggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyMmE4Li44MTI2NTM1NThmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2YzNlLi4xM2E4MTk3M2UzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IGE5MTdmMzEzYWIuLmZhZTJkODEyMTAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTkzLDQgKzkzLDExIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTZmOTFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAxM2JlYjFmNDI4ZWMwNjc3ODU5MGJmNTI2ZDZlNjQxZjczZDVjZjYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTE6MjIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93biBuYW1lcworCitUaGlzIGJvbHRzIGluIGEgaG9vayBmb3IgT0UgdG8gcGFzcyBpdHMgb3duIHZlcnNpb24gb2YgaW50ZXJwcmV0ZXIKK25hbWVzIGludG8gZ2xpYmMgZXNwZWNpYWxseSBmb3IgbXVsdGlsaWIgY2FzZSwgd2hlcmUgaXQgZGlmZmVycyBmcm9tIGFueQorb3RoZXIgZGlzdHJvcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBMaWFuaGFvIEx1IDxsaWFuaGFvLmx1QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBlbGYvcmVhZGxpYi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9lbGYvcmVhZGxpYi5jIGIvZWxmL3JlYWRsaWIuYworaW5kZXggOTk0YTQ0MjZhMS4uYmFhYmYwOTliMSAxMDA2NDQKKy0tLSBhL2VsZi9yZWFkbGliLmMKKysrKyBiL2VsZi9yZWFkbGliLmMKK0BAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMgaW50ZXJwcmV0ZXJzW10gPQorICNpZmRlZiBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKKyAgIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUworICNlbmRpZgorKyAgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCisgfTsKKyAKKyBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGtub3duX2xpYnNbXSA9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTQwYTE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSA5YzFmMjIyOWM0OGMzN2IzODYyOGM0ODVlZjE2ZTAxZjY3ODAxNjBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yOF0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzCi0gOgotCi0gIFdlIGJ1aWxkIHNvbWUgcmFuZG9tIHByb2dyYW0gYW5kIGxpbmsgaXQgd2l0aCAtbHVzdC4gIFdoZW4gd2UgcnVuIGl0LAotICBpdCBkaWVzIHdpdGggYSBTSUdTRUdWIGJlZm9yZSByZWFjaGluZyBtYWluKCkuCi0KLSAgTGlidXN0LnNvIGRlcGVuZHMgb24gbGlidXJjdS1icC5zbyBmcm9tIHRoZSB1c2VybW9kZS1yY3UgcGFja2FnZS4KLSAgQWx0aG91Z2ggbGlidXN0LnNvIGlzIG5vdCBwcmVsaW5rZWQsIGxpYnVyY3UtYnAuc28gSVMgcHJlbGlua2VkOyB0aGlzCi0gIGlzIGNyaXRpY2FsLgotCi0gIExpYnVzdC5zbyB1c2VzIGEgVExTIC8gX190aHJlYWQgdmFyaWFibGUgdGhhdCBpcyBkZWZpbmVkIGluIGxpYnVyY3UtCi0gIGJwLnNvLiAgVGhlcmUgYXJlIHNwZWNpYWwgQVJNLXNwZWNpZmljIHJlbG9jYXRpb24gdHlwZXMgdGhhdCBhbGxvdyB0d28KLSAgc2hhcmVkIGxpYnJhcmllcyB0byBzaGFyZSB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gIFRoaXMgaXMgY3JpdGljYWwgdG9vLgotCi0gIE9uZSBtb3JlIGNyaXRpY2FsIGlzc3VlOiBhbHRob3VnaCBsaWJ1cmN1LWJwLnNvIGlzIHByZWxpbmtlZCwgd2UgY2FuJ3QKLSAgbG9hZCBpdCBhdCBpdHMgcHJlbGlua2VkIGFkZHJlc3MsIGJlY2F1c2Ugd2UgYWxzbyBsaW5rIGFnYWluc3QKLSAgbGlicnQuc28sIGFuZCBsaWJydC5zbyB1c2VzIHRoYXQgYWRkcmVzcy4KLQotICBUaGUgZHluYW1pYyBsaW5rZXIgaXMgZm9yY2VkIHRvIHJlbGluayBsaWJ1cmN1LWJwLnNvIGF0IGEgZGlmZmVyZW50Ci0gIGFkZHJlc3MuICBJbiB0aGUgY291cnNlIG9mIHJlbGlua2luZywgaXQgcHJvY2Vzc2VzIHRoZSBzcGVjaWFsIEFSTQotICByZWxvY2F0aW9uIHJlY29yZCBtZW50aW9uZWQgYWJvdmUuICBUaGUgcHJlbGlua2VyIGhhcyBhbHJlYWR5IGZpbGxlZAotICBpbiB0aGUgaW5mb3JtYXRpb24sIHdoaWNoIGlzIGEgc2hvcnQgb2Zmc2V0IGludG8gYSB0YWJsZSBvZiB0aHJlYWQtCi0gIHNwZWNpZmljIGRhdGEgdGhhdCBpcyBhbGxvY2F0ZWQgcGVyLXRocmVhZCBmb3IgZWFjaCBsaWJyYXJ5IHRoYXQgdXNlcwotICBUTFMuICBCZWNhdXNlIHRoZSBub3JtYWwgYmVoYXZpb3Igb2YgYSByZWxvY2F0aW9uIGlzIHRvIGFkZCB0aGUgc3ltYm9sCi0gIHZhbHVlIHRvIGFuIGFkZGVuZCBzdG9yZWQgYXQgdGhlIGFkZHJlc3MgYmVpbmcgcmVsb2NhdGVkLCB3ZSBlbmQgdXAKLSAgYWRkaW5nIHRoZSBzaG9ydCBvZmZzZXQgdG8gaXRzZWxmLCBkb3VibGluZyBpdC4KLQotICBOb3cgd2UgaGF2ZSBhbiBhd2t3YXJkIHNpdHVhdGlvbi4gIFRoZSBsaWJ1c3Quc28gbGlicmFyeSBkb2Vzbid0IGtub3cKLSAgYWJvdXQgdGhlIGFkZGVuZCwgc28gaXRzIFRMUyBkYXRhIGZvciB0aGlzIGVsZW1lbnQgaXMgY29ycmVjdC4gIFRoZQotICBsaWJ1cmN1LWJwLnNvIGxpYnJhcnkgaGFzIGEgZGlmZmVyZW50IG9mZnNldCBmb3IgdGhlIGVsZW1lbnQuICBXaGVuIHdlCi0gIGdvIHRvIGluaXRpYWxpemUgdGhlIGVsZW1lbnQgZm9yIHRoZSBmaXJzdCB0aW1lIGluIGxpYnVyY3UtYnAuc28sIHdlCi0gIHdyaXRlIHRoZSBhZGRyZXNzIG9mIHRoZSByZXN1bHQgYXQgdGhlIGRvdWJsZWQgKGJyb2tlbikgb2Zmc2V0LgotICBMYXRlciwgd2hlbiB3ZSByZWZlciB0byB0aGUgYWRkcmVzcyBmcm9tIGxpYnVzdC5zbywgd2UgY2hlY2sgdGhlIHZhbHVlCi0gIGF0IHRoZSBjb3JyZWN0IG9mZnNldCwgYnV0IGl0J3MgTlVMTCwgc28gd2UgZWF0IGhvdCBTSUdTRUdWLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVpIERpbnUgPGFuZHJlaS5hZHJpYW54LmRpbnVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotaW5kZXggN2EyZjlkOWI3OC4uMzZhMWRkMTg4OCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotKysrIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1AQCAtNTEwLDcgKzUxMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCi0gCi0gCWNhc2UgUl9BUk1fVExTX0RUUE9GRjMyOgotIAkgIGlmIChzeW0gIT0gTlVMTCkKLS0JICAgICpyZWxvY19hZGRyICs9IHN5bS0+c3RfdmFsdWU7Ci0rCSAgICAqcmVsb2NfYWRkciA9IHN5bS0+c3RfdmFsdWU7Ci0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgUl9BUk1fVExTX1RQT0ZGMzI6Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNDQ2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApAQCAtMCwwICsxLDIwNSBAQAorRnJvbSA0NDgzYTgzMDc0YTM0MGE5MjFlMzE5Yjg4ZDcyMTY2ZjE4ZTBkZjBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTU6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJworCitvbiBwcGMgZml4ZXMgdGhlIGVycm9ycyBsaWtlIGJlbG93Cit8IC4vLmxpYnMvbGlicHVsc2Vjb3JlLTEuMS5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKK3wgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0NoYW5nZUxvZworCisyMDEyLTAxLTA2ICBLaGVtIFJhaiAgPHJhai5raGVtQGdtYWlsLmNvbT4KKworICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYzogQWRkIF9fKl9maW5pdGUgYWxpYXMuCisgICAgICAgIFJlbW92ZSBjcnVmdC4KKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYzogRGl0dG8uCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYzogRGl0dG8uCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmM6IERpdHRvLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCisgMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK0BAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCisgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorLSNlbHNlCistZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCistICAgICBkb3VibGUgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitAQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKyBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCistI2Vsc2UKKy1mbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKy0gICAgIGZsb2F0IGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCisgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorLSNlbHNlCistZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCistICAgICBkb3VibGUgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisgICAgc3F1YXJlIHJvb3QuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGZsb2F0CisgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorLSNlbHNlCistZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCistICAgICBmbG9hdCBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MWYzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApAQCAtMCwwICsxLDM4NCBAQAorRnJvbSAzNDdiMmUzMWQwMTBiMDRjNDJlNzgxNTdhMDI4YWExZDU4ZmUwZjVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTY6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbCBvdXQKKyBfX3Nsb3cgdmVyc2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8ICA4ICsrKysrKystCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDE0ICsrKysrKysrKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgIDggKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDggKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8ICA5ICsrKysrKysrLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworaW5kZXggMTc5NWZkNmMzZS4uZGFhODNmM2ZlOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK0BAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTc3LDcgKzc3LDcgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTI2LDQgKzEyNiwxMiBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitpbmRleCBhOTE3ZjMxM2FiLi5iODEyY2YxNzA1IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIHNxdWFyZSByb290LiAgKi8KKyAKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTMsNCArOTMsMTAgQEAgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworIAorICNpZmRlZiBfX1NURENfXworIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICNlbHNlCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGIpCisgICAgICBmbG9hdCBiOworICNlbmRpZgorIHsKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworIAorICNpZmRlZiBfX1NURENfXworIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICNlbHNlCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGIpCisgICAgICBmbG9hdCBiOworICNlbmRpZgorIHsKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi4xYzM0MjQ0YmQ4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uODEyNjUzNTU4ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggMTc5NWZkNmMzZS4uMTNhODE5NzNlMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCBhOTE3ZjMxM2FiLi5mYWUyZDgxMjEwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgc3F1YXJlIHJvb3QuICAqLworIAorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05Myw0ICs5MywxMSBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworIAorICNpZmRlZiBfX1NURENfXworIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICNlbHNlCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGIpCisgICAgICBmbG9hdCBiOworICNlbmRpZgorIHsKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I5OTA5Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDE3MWQyYWZiOTMwOTE3YjBjZmJlOWRmNzcwNzc0ZGExYzkyZGQxODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBXZWQsIDE5IERlYyAyMDEyIDA0OjM5OjU3IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMjhdIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQotCi1saWJtLWVyci10YWIucGwgd2lsbCBwYXJzZSBhbGwgdGhlIGZpbGVzIG5hbWVkICJsaWJtLXRlc3QtdWxwcyIKLWluIHRoZSBnaXZlbiBkaXIgcmVjdXJzaXZlbHkuIFRvIGF2b2lkIHBhcnNpbmcgdGhlIG9uZSBpbgotJHtTfS8ucGMvIChpdCBkb2VzIGV4aXN0IGFmdGVyIGVnbGliYyBhZGRzIGFhcmNoNjQgc3VwcG9ydCwKLSR7U30vLnBjL2FhcmNoNjQtMDAwMS1nbGliYy1mc2YtdjEtZWFmNmYyMDUucGF0Y2gvcG9ydHMvc3lzZGVwcy8KLWFhcmNoNjQvbGlibS10ZXN0LXVscHMpLCBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycwotaW4gJHtTfS4KLQotVXBzdHJlYW0tU3RhdHVzOiBpbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgotLS0tCi0gbWFudWFsL01ha2VmaWxlIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tYW51YWwvTWFrZWZpbGUgYi9tYW51YWwvTWFrZWZpbGUKLWluZGV4IDRmNzZlZTg1ZDIuLjA0YjhjOGMzMjAgMTAwNjQ0Ci0tLS0gYS9tYW51YWwvTWFrZWZpbGUKLSsrKyBiL21hbnVhbC9NYWtlZmlsZQotQEAgLTEwMyw3ICsxMDMsOCBAQCAkKG9ianBmeClzdGFtcC1saWJtLWVycjogJCguLiltYXRoL2dlbi1saWJtLXRlc3QucHkgXAotIAkJCSAkKHdpbGRjYXJkICQoZm9yZWFjaCBkaXIsJChzeXNkaXJzKSxcCi0gCQkJCQkJICAkKGRpcikvbGlibS10ZXN0LXVscHMpKQotIAlwd2Q9YHB3ZGA7IFwKLS0JJChQWVRIT04pICQ8IC1zICQkcHdkLy4uIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAotKwkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4vcG9ydHMgLW0gJChvYmpwZngpbGlibS1lcnItdG1wCi0rCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLi9zeXNkZXBzIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAotIAkkKG1vdmUtaWYtY2hhbmdlKSAkKG9ianBmeClsaWJtLWVyci10bXAgJChvYmpwZngpbGlibS1lcnIudGV4aQotIAl0b3VjaCAkQAotIAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGI0NmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA4Y2E4ZTVjZDc4Y2JkMzdhNzEzZTExODFmOGY2NjQxYjU3MzUyYWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzIDoKKworICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKKyAgaXQgZGllcyB3aXRoIGEgU0lHU0VHViBiZWZvcmUgcmVhY2hpbmcgbWFpbigpLgorCisgIExpYnVzdC5zbyBkZXBlbmRzIG9uIGxpYnVyY3UtYnAuc28gZnJvbSB0aGUgdXNlcm1vZGUtcmN1IHBhY2thZ2UuCisgIEFsdGhvdWdoIGxpYnVzdC5zbyBpcyBub3QgcHJlbGlua2VkLCBsaWJ1cmN1LWJwLnNvIElTIHByZWxpbmtlZDsgdGhpcworICBpcyBjcml0aWNhbC4KKworICBMaWJ1c3Quc28gdXNlcyBhIFRMUyAvIF9fdGhyZWFkIHZhcmlhYmxlIHRoYXQgaXMgZGVmaW5lZCBpbiBsaWJ1cmN1LQorICBicC5zby4gIFRoZXJlIGFyZSBzcGVjaWFsIEFSTS1zcGVjaWZpYyByZWxvY2F0aW9uIHR5cGVzIHRoYXQgYWxsb3cgdHdvCisgIHNoYXJlZCBsaWJyYXJpZXMgdG8gc2hhcmUgdGhyZWFkLXNwZWNpZmljIGRhdGEuICBUaGlzIGlzIGNyaXRpY2FsIHRvby4KKworICBPbmUgbW9yZSBjcml0aWNhbCBpc3N1ZTogYWx0aG91Z2ggbGlidXJjdS1icC5zbyBpcyBwcmVsaW5rZWQsIHdlIGNhbid0CisgIGxvYWQgaXQgYXQgaXRzIHByZWxpbmtlZCBhZGRyZXNzLCBiZWNhdXNlIHdlIGFsc28gbGluayBhZ2FpbnN0CisgIGxpYnJ0LnNvLCBhbmQgbGlicnQuc28gdXNlcyB0aGF0IGFkZHJlc3MuCisKKyAgVGhlIGR5bmFtaWMgbGlua2VyIGlzIGZvcmNlZCB0byByZWxpbmsgbGlidXJjdS1icC5zbyBhdCBhIGRpZmZlcmVudAorICBhZGRyZXNzLiAgSW4gdGhlIGNvdXJzZSBvZiByZWxpbmtpbmcsIGl0IHByb2Nlc3NlcyB0aGUgc3BlY2lhbCBBUk0KKyAgcmVsb2NhdGlvbiByZWNvcmQgbWVudGlvbmVkIGFib3ZlLiAgVGhlIHByZWxpbmtlciBoYXMgYWxyZWFkeSBmaWxsZWQKKyAgaW4gdGhlIGluZm9ybWF0aW9uLCB3aGljaCBpcyBhIHNob3J0IG9mZnNldCBpbnRvIGEgdGFibGUgb2YgdGhyZWFkLQorICBzcGVjaWZpYyBkYXRhIHRoYXQgaXMgYWxsb2NhdGVkIHBlci10aHJlYWQgZm9yIGVhY2ggbGlicmFyeSB0aGF0IHVzZXMKKyAgVExTLiAgQmVjYXVzZSB0aGUgbm9ybWFsIGJlaGF2aW9yIG9mIGEgcmVsb2NhdGlvbiBpcyB0byBhZGQgdGhlIHN5bWJvbAorICB2YWx1ZSB0byBhbiBhZGRlbmQgc3RvcmVkIGF0IHRoZSBhZGRyZXNzIGJlaW5nIHJlbG9jYXRlZCwgd2UgZW5kIHVwCisgIGFkZGluZyB0aGUgc2hvcnQgb2Zmc2V0IHRvIGl0c2VsZiwgZG91YmxpbmcgaXQuCisKKyAgTm93IHdlIGhhdmUgYW4gYXdrd2FyZCBzaXR1YXRpb24uICBUaGUgbGlidXN0LnNvIGxpYnJhcnkgZG9lc24ndCBrbm93CisgIGFib3V0IHRoZSBhZGRlbmQsIHNvIGl0cyBUTFMgZGF0YSBmb3IgdGhpcyBlbGVtZW50IGlzIGNvcnJlY3QuICBUaGUKKyAgbGlidXJjdS1icC5zbyBsaWJyYXJ5IGhhcyBhIGRpZmZlcmVudCBvZmZzZXQgZm9yIHRoZSBlbGVtZW50LiAgV2hlbiB3ZQorICBnbyB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50IGZvciB0aGUgZmlyc3QgdGltZSBpbiBsaWJ1cmN1LWJwLnNvLCB3ZQorICB3cml0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgcmVzdWx0IGF0IHRoZSBkb3VibGVkIChicm9rZW4pIG9mZnNldC4KKyAgTGF0ZXIsIHdoZW4gd2UgcmVmZXIgdG8gdGhlIGFkZHJlc3MgZnJvbSBsaWJ1c3Quc28sIHdlIGNoZWNrIHRoZSB2YWx1ZQorICBhdCB0aGUgY29ycmVjdCBvZmZzZXQsIGJ1dCBpdCdzIE5VTEwsIHNvIHdlIGVhdCBob3QgU0lHU0VHVi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBEaW51IDxhbmRyZWkuYWRyaWFueC5kaW51QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKK2luZGV4IDkwODU2Nzc5YjEuLmEyOWJiODZjNTYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKKysrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAorQEAgLTUxMCw3ICs1MTAsNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAorIAorIAljYXNlIFJfQVJNX1RMU19EVFBPRkYzMjoKKyAJICBpZiAoc3ltICE9IE5VTEwpCistCSAgICAqcmVsb2NfYWRkciArPSBzeW0tPnN0X3ZhbHVlOworKwkgICAgKnJlbG9jX2FkZHIgPSBzeW0tPnN0X3ZhbHVlOworIAkgIGJyZWFrOworIAorIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIzM2ZiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gMzc2YmU3Yjk2MTUyZWY1MDFjOGNmOTVlZDZkYzUyYzAzMThiZDI2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI0OjQ2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMjhdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKLSBvdXQgX19zbG93IHZlcnNpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBjaHVucm9uZyBndW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDYgKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxYzM0MjQ0YmQ4Li43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggODEyNjUzNTU4Zi4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmRlOGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAyMTUwOTczNTY3ODk5MDc2MGQ1ZWJmOWQwYzY1ZWZhNGI1MmI4MzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgorRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAwNDozOTo1NyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KKworbGlibS1lcnItdGFiLnBsIHdpbGwgcGFyc2UgYWxsIHRoZSBmaWxlcyBuYW1lZCAibGlibS10ZXN0LXVscHMiCitpbiB0aGUgZ2l2ZW4gZGlyIHJlY3Vyc2l2ZWx5LiBUbyBhdm9pZCBwYXJzaW5nIHRoZSBvbmUgaW4KKyR7U30vLnBjLyAoaXQgZG9lcyBleGlzdCBhZnRlciBlZ2xpYmMgYWRkcyBhYXJjaDY0IHN1cHBvcnQsCiske1N9Ly5wYy9hYXJjaDY0LTAwMDEtZ2xpYmMtZnNmLXYxLWVhZjZmMjA1LnBhdGNoL3BvcnRzL3N5c2RlcHMvCithYXJjaDY0L2xpYm0tdGVzdC11bHBzKSwgcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMKK2luICR7U30uCisKK1Vwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KKy0tLQorIG1hbnVhbC9NYWtlZmlsZSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCitpbmRleCBjNjFlMTFkY2Q3Li41ZDg1OWU2Zjg0IDEwMDY0NAorLS0tIGEvbWFudWFsL01ha2VmaWxlCisrKysgYi9tYW51YWwvTWFrZWZpbGUKK0BAIC0xMDMsNyArMTAzLDggQEAgJChvYmpwZngpc3RhbXAtbGlibS1lcnI6ICQoLi4pbWF0aC9nZW4tbGlibS10ZXN0LnB5IFwKKyAJCQkgJCh3aWxkY2FyZCAkKGZvcmVhY2ggZGlyLCQoc3lzZGlycyksXAorIAkJCQkJCSAgJChkaXIpL2xpYm0tdGVzdC11bHBzKSkKKyAJcHdkPWBwd2RgOyBcCistCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLiAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKKysJJChQWVRIT04pICQ8IC1zICQkcHdkLy4uL3BvcnRzIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAorKwkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4vc3lzZGVwcyAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKKyAJJChtb3ZlLWlmLWNoYW5nZSkgJChvYmpwZngpbGlibS1lcnItdG1wICQob2JqcGZ4KWxpYm0tZXJyLnRleGkKKyAJdG91Y2ggJEAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliYTUyZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDFiYTRlOTU3NzQzNzYzMjg1NmQ3MTljYmQ1ZDYzYjVhNzZjYmI0YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI4XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKLSAkbGliY19jdl9yb290c2JpbmRpcgotCi1VcHN0cmVhbS1TdGF0dXM6UGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQotIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotaW5kZXggYzE1ZDEwODdlOC4uMzdjYzk4M2YyYSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1AQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotaW5kZXggNjM0ZmU0ZGUyYS4uM2RiMTY5N2Y0ZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi1AQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTYwMmJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYjg0OTk5ZGNmNjQyYjA3ZTZjMTRlNmZmNTA3YmUxNDc0MzM0OTk0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI4OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjhdIEFkZCB1bnVzZWQgYXR0cmlidXRlCi0KLUhlbHBzIGluIGF2b2lkaW5nIGdjYyB3YXJuaW5nIHdoZW4gaGVhZGVyIGlzIGlzIGluY2x1ZGVkIGluCi1hIHNvdXJjZSBmaWxlIHdoaWNoIGRvZXMgbm90IHVzZSBib3RoIGZ1bmN0aW9ucwotCi0gICAgICAgICogaWNvbnYvZ2NvbnZfY2hhcnNldC5oIChzdHJpcCk6Ci0gICAgICAgIEFkZCB1bnVzZWQgYXR0cmlidXRlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGljb252L2djb252X2NoYXJzZXQuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NoYXJzZXQuaCBiL2ljb252L2djb252X2NoYXJzZXQuaAotaW5kZXggOTFlMGFkMzE0MS4uMmU5NTQ5ZmU0OSAxMDA2NDQKLS0tLSBhL2ljb252L2djb252X2NoYXJzZXQuaAotKysrIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAKLS1zdGF0aWMgdm9pZAotK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIHN0cmlwIChjaGFyICp3cCwgY29uc3QgY2hhciAqcykKLSB7Ci0gICBpbnQgc2xhc2hfY291bnQgPSAwOwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzNiNjQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSBlMzNkZWIxMTk3MzRlZjQ0M2VmNDRjNDJhMDBhNTY5ZjkwZTFlMTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbCBvdXQKKyBfX3Nsb3cgdmVyc2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IGNodW5yb25nIGd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgNiArKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDFjMzQyNDRiZDguLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA4MTI2NTM1NThmLi4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZGQwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGM1MGNhZTM2ZTkwYzQxODQ5MzAxYTlhNjY4YWRmMzFlODFlNDNhMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKKyAkbGliY19jdl9yb290c2JpbmRpcgorCitVcHN0cmVhbS1TdGF0dXM6UGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQorIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQoraW5kZXggYzE1ZDEwODdlOC4uMzdjYzk4M2YyYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitAQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworaW5kZXggNjM0ZmU0ZGUyYS4uM2RiMTY5N2Y0ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitAQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDY1NjJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2MyArMCwwIEBACi1Gcm9tIDdjNTdmODRiZWY0YWFmZmU0MjA0YTdhMzU0NDExYWIzZWE3ZTUyNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMTowNiArMDAwMAotU3ViamVjdDogW1BBVENIIDE1LzI4XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCi0KLUl0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKLWJ1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCi1mYWxzZS1wb3NpdGl2ZSBtYXRjaGVzIHdpdGggdGhlIHBhdGggaXQgaXMgY29uZmlndXJlZCBpbnRvLgotCi1UaGUgY2hhbmdlIGlzIHRvIHVzZSBhIG1vcmUgZWxhYm9yYXRlZCBzdHJpbmcgdG8gZ3JlcCBmb3IuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhQHNvdXJjZXdhcmUub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBFc3F1aXZlbCA8YmVuamFtaW4uZXNxdWl2ZWxAbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbmlvczIvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSAgICB8IDggKysrKy0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgfCA4ICsrKystLS0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotaW5kZXggNWJkMzU1YTY5MS4uM2JjNTUzN2JjMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLUBAIC0xNDgsMTIgKzE0OCwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX0FBUkNINjRFQl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgImlzX2FhcmNoNjRfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzCi0gZWxzZQotICAgbGliY19jdl9hYXJjaDY0X2JlPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLWluZGV4IDc4NTFkZDRkYWMuLjZlOTIzODE3MWYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi1AQCAtMTAsOCArMTAsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCi0gQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKLSAgIFtsaWJjX2N2X2FhcmNoNjRfYmVdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FBUkNINjRFQl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUChpc19hYXJjaDY0X2JlLFsjaWZkZWYgX19BQVJDSDY0RUJfXwotKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzLCBsaWJjX2N2X2FhcmNoNjRfYmU9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X2FhcmNoNjRfYmUgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKLWluZGV4IDQzMWU4NDNiMmIuLmUxNTI0NjExMzggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotQEAgLTE1MSwxMiArMTUxLDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fQVJNX1BDU19WRlAKLS0JCSAgICAgIHllcwotKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCi0gCQkgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfYXJtX3Bjc192ZnAiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X2FybV9wY3NfdmZwPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLWluZGV4IDkwY2RkNjljNzUuLjA1YTI2MmJhMDAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotQEAgLTE1LDggKzE1LDggQEAgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQotICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBBUk0gaGFyZC1mbG9hdCBBQkldLAotICAgW2xpYmNfY3ZfYXJtX3Bjc192ZnBdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0tCQkgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAodXNlX2FybV9wY3NfdmZwLFsjaWZkZWYgX19BUk1fUENTX1ZGUAotKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCi0gCQkgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMsIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X2FybV9wY3NfdmZwID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLWluZGV4IDRlMTMyNDhjMDMuLmYxNGFmOTUyZDAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCi1AQCAtMTQzLDExICsxNDMsMTEgQEAgZWxzZQotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSBkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi1pbmRleCBiY2JkYWZmZDlmLi5hZDMwNTdmNGNjIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotQEAgLTYsOSArNiw5IEBAIGRubCBwb3NpdGlvbiBpbmRlcGVuZGVudCB3YXkuCi0gZG5sIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKLSAKLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKLS0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAotKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCi0gaWYgdGVzdCB4JGxpYmNfY3ZfbWlwc19uYW4yMDA4ID0geHllczsgdGhlbgotICAgQUNfREVGSU5FKEhBVkVfTUlQU19OQU4yMDA4KQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLWluZGV4IDE0YzhhM2EwMTQuLmRkZTM4MTRlZjIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLUBAIC0xNDIsMTIgKzE0MiwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfbmlvczJfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X25pb3MyX2JlPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbmlvczJfYmU9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi1pbmRleCBmMDVmNDM4MDJiLi5kYzg2Mzk5MDJkIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi1AQCAtNCw4ICs0LDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KLSAjIE5pb3MgSUkgYmlnIGVuZGlhbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4KLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAotICAgW2xpYmNfY3ZfbmlvczJfYmVdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAoaXNfbmlvczJfYmUsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9uaW9zMl9iZT15ZXMsIGxpYmNfY3ZfbmlvczJfYmU9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X25pb3MyX2JlID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotaW5kZXggMWVlN2Y0MWEzNi4uNzdlMzhiZWJkZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotQEAgLTQxNCwxMSArNDE0LDExIEBAIGVsc2UKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZgotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCi0gZWxzZQotICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi1pbmRleCA5MTQ3YWE0NTgyLi43ODk4ZTI0NzM4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi1AQCAtMTA1LDkgKzEwNSw5IEBAIEFDX0NPTVBJTEVfSUZFTFNFKAotIExJQkNfQ09ORklHX1ZBUihbbWlwcy1tb2RlLXN3aXRjaF0sWyR7bGliY19taXBzX21vZGVfc3dpdGNofV0pCi0gCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCi0tICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKLSsgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQotIAotIGxpYmNfbWlwc19uYW49Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi1pbmRleCBhZTdmMjU0ZGE0Li44NzQ1MTkwMDBiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLUBAIC0xNTUsMTIgKzE1NSwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZiBfQ0FMTF9FTEYgPT0gMgotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX3BwY19lbGZ2Ml9hYmkiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubwotQEAgLTE4OCwxMiArMTg4LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9DQUxMX0VMRgotLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfZGVmX2NhbGxfZWxmIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzCi0gZWxzZQotICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLWluZGV4IGY5Y2JhNmUxNWQuLmIyMWY3MmYxZTQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotQEAgLTYsOCArNiw4IEBAIExJQkNfU0xJQkRJUl9SVExERElSKFtsaWI2NF0sIFtsaWI2NF0pCi0gIyBEZWZpbmUgZGVmYXVsdC1hYmkgYWNjb3JkaW5nIHRvIGNvbXBpbGVyIGZsYWdzLgotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgUG93ZXJQQzY0IEVMRnYyIEFCSV0sCi0gICBbbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmldLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZiBfQ0FMTF9FTEYgPT0gMgotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAodXNlX3BwY19lbGZ2Ml9hYmksWyNpZiBfQ0FMTF9FTEYgPT0gMgotKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpID0geWVzOyB0aGVuCi1AQCAtMTksOCArMTksOCBAQCBlbHNlCi0gICAjIENvbXBpbGVyIHRoYXQgZG8gbm90IHN1cHBvcnQgRUxGdjIgQUJJIGRvZXMgbm90IGRlZmluZSBfQ0FMTF9FTEYKLSAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBkZWZpbmVzIF9DQUxMX0VMRl0sCi0gICAgIFtsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZl0sCi0tICAgIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX0NBTExfRUxGCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICBbQUNfRUdSRVBfQ1BQKGlzX2RlZl9jYWxsX2VsZixbI2lmZGVmIF9DQUxMX0VMRgotKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICBdLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMsIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vKV0pCi0gICBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZiA9IG5vOyB0aGVuCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc0ZTdjMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGMzMjMxMjU3NDQwMjBhMjlmNzllNTBkYzRkMDI0YjU1YzQ4MmVhZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAorU3ViamVjdDogW1BBVENIXSBBZGQgdW51c2VkIGF0dHJpYnV0ZQorCitIZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgorYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKKworICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgorICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKK2luZGV4IDM0OGFjYzA4OWIuLmZhOTI0NjVkODkgMTAwNjQ0CistLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKKysrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgCistc3RhdGljIHZvaWQKKytzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCisgeworICAgaW50IHNsYXNoX2NvdW50ID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMWNmMzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGE3NGYzMWVhOWVkZjEwNWYxYTZkYzI2NDk3YWEyYTEyYWU3MzY2NjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAotU3ViamVjdDogW1BBVENIIDE2LzI4XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAotCi1UbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRpbWV6b25lL01ha2VmaWxlICAgICB8IDIgKy0KLSB0aW1lem9uZS90enNlbGVjdC5rc2ggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCi1pbmRleCA0OTNkZWNhNzkwLi4zNmU1NTllMTZjIDEwMDY0NAotLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKLSsrKyBiL3RpbWV6b25lL01ha2VmaWxlCi1AQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCi0gCWNwICQ8ICRACi0gCi0gJChvYmpwZngpdHpzZWxlY3Q6IHR6c2VsZWN0LmtzaCAkKGNvbW1vbi1vYmpwZngpY29uZmlnLm1ha2UKLS0Jc2VkIC1lICdzfC9iaW4vYmFzaHwkKEJBU0gpfCcgXAotKwlzZWQgLWUgJ3N8L2Jpbi9iYXNofC9iaW4vc2h8JyBcCi0gCSAgICAtZSAnc3xUWkRJUj1bXn1dKnxUWkRJUj0kKHpvbmVkaXIpfCcgXAotIAkgICAgLWUgJy9UWlZFUlNJT049L3N8c2VlX01ha2VmaWxlfCIkKHZlcnNpb24pInwnIFwKLSAJICAgIC1lICcvUEtHVkVSU0lPTj0vc3w9Lip8PSIkKFBLR1ZFUlNJT04pInwnIFwKLWRpZmYgLS1naXQgYS90aW1lem9uZS90enNlbGVjdC5rc2ggYi90aW1lem9uZS90enNlbGVjdC5rc2gKLWluZGV4IDE4ZmNlMjdlMjQuLjcwNzQ1ZjlkMzYgMTAwNzU1Ci0tLS0gYS90aW1lem9uZS90enNlbGVjdC5rc2gKLSsrKyBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotQEAgLTM0LDcgKzM0LDcgQEAgUkVQT1JUX0JVR1NfVE89dHpAaWFuYS5vcmcKLSAKLSAjIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpZiB0aGV5IGFyZSB1bnNldC4KLSA6ICR7QVdLPWF3a30KLS06ICR7VFpESVI9YHB3ZGB9Ci0rOiAke1RaRElSPSQocHdkKX0KLSAKLSAjIE91dHB1dCBvbmUgYXJndW1lbnQgYXMtaXMgdG8gc3RhbmRhcmQgb3V0cHV0LgotICMgU2FmZXIgdGhhbiAnZWNobycsIHdoaWNoIGNhbiBtaXNoYW5kbGUgJ1wnIG9yIGxlYWRpbmcgJy0nLgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRmOGExMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gOTU4ODJiOTg2NGZmMjBlNDc2ZDE1YzY4MjVjODM3MjhlYjk5NTk3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMjhdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKLQotVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KLSh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAotaW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKLS0tLSBhL25zY2QvbnNjZC5pbml0Ci0rKysgYi9uc2NkL25zY2QuaW5pdAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KLSAjCi1AQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKLSBzdGFydCAoKSB7Ci0gICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKLSAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKLS0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCi0gICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAotICAgICBSRVRWQUw9JD8KLSAgICAgZWNobwotQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgewotIH0KLSAKLSBzdG9wICgpIHsKLS0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCi0gICAgIC91c3Ivc2Jpbi9uc2NkIC1LCi0gICAgIFJFVFZBTD0kPwotICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgotQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7Ci0gCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCi0gCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKLSAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKLS0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKLSsJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCi0gICAgIGVsc2UKLS0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKLSsJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCi0gICAgIGZpCi0gICAgIGVjaG8KLSAgICAgcmV0dXJuICRSRVRWQUwKLUBAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KLSAJUkVUVkFMPSQ/Ci0gCTs7Ci0gICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKLS0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKLSsJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCi0gCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKLSAJUkVUVkFMPSQ/Ci0gCWVjaG8KLSAJOzsKLSAgICAgKikKLS0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgotKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSAJUkVUVkFMPTEKLSAJOzsKLSBlc2FjCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTcteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTcteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwODlhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDI2MCBAQAorRnJvbSBjNDIxY2Q3ZTg4NTQ5N2E5OTE3OWI5ODJkYzRhMjdlODQwNWY4ODU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcworCitJdCBzZWVtcyB0aGF0IHRoZSAnQUNfRUdSRVBfQ1BQKHllcy4uLicgZXhhbXBsZSBpcyBxdWl0ZSBwb3B1bGFyCitidXQgYmVpbmcgc3VjaCBhIHNob3J0IHdvcmQgdG8gZ3JlcCBpdCBpcyBsaWtlbHkgdG8gcHJvZHVjZQorZmFsc2UtcG9zaXRpdmUgbWF0Y2hlcyB3aXRoIHRoZSBwYXRoIGl0IGlzIGNvbmZpZ3VyZWQgaW50by4KKworVGhlIGNoYW5nZSBpcyB0byB1c2UgYSBtb3JlIGVsYWJvcmF0ZWQgc3RyaW5nIHRvIGdyZXAgZm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYUBzb3VyY2V3YXJlLm9yZ10KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gRXNxdWl2ZWwgPGJlbmphbWluLmVzcXVpdmVsQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FybS9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FybS9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgICAgfCA4ICsrKystLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQorIDEyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKK2luZGV4IDViZDM1NWE2OTEuLjNiYzU1MzdiYzAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCitAQCAtMTQ4LDEyICsxNDgsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19BQVJDSDY0RUJfXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19hYXJjaDY0X2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9hYXJjaDY0X2JlPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCitpbmRleCA3ODUxZGQ0ZGFjLi42ZTkyMzgxNzFmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworQEAgLTEwLDggKzEwLDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KKyAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgorIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCisgICBbbGliY19jdl9hYXJjaDY0X2JlXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BQVJDSDY0RUJfXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAoaXNfYWFyY2g2NF9iZSxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KKysgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9hYXJjaDY0X2JlPXllcywgbGliY19jdl9hYXJjaDY0X2JlPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9hYXJjaDY0X2JlID0geWVzOyB0aGVuCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCitpbmRleCA0MzFlODQzYjJiLi5lMTUyNDYxMTM4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKK0BAIC0xNTEsMTIgKzE1MSwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfX0FSTV9QQ1NfVkZQCistCQkgICAgICB5ZXMKKysJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAorIAkJICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX2FybV9wY3NfdmZwIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X2FybV9wY3NfdmZwPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCitpbmRleCA5MGNkZDY5Yzc1Li4wNWEyNjJiYTAwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKK0BAIC0xNSw4ICsxNSw4IEBAIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKKyAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgQVJNIGhhcmQtZmxvYXQgQUJJXSwKKyAgIFtsaWJjX2N2X2FybV9wY3NfdmZwXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BUk1fUENTX1ZGUAorLQkJICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKHVzZV9hcm1fcGNzX3ZmcCxbI2lmZGVmIF9fQVJNX1BDU19WRlAKKysJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAorIAkJICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzLCBsaWJjX2N2X2FybV9wY3NfdmZwPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9hcm1fcGNzX3ZmcCA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCitpbmRleCA0ZTEzMjQ4YzAzLi5mMTRhZjk1MmQwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQorQEAgLTE0MywxMSArMTQzLDExIEBAIGVsc2UKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZgorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCisgZWxzZQorICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYworaW5kZXggYmNiZGFmZmQ5Zi4uYWQzMDU3ZjRjYyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKK0BAIC02LDkgKzYsOSBAQCBkbmwgcG9zaXRpb24gaW5kZXBlbmRlbnQgd2F5LgorIGRubCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCisgCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCistICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKKysgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQorIGlmIHRlc3QgeCRsaWJjX2N2X21pcHNfbmFuMjAwOCA9IHh5ZXM7IHRoZW4KKyAgIEFDX0RFRklORShIQVZFX01JUFNfTkFOMjAwOCkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCitpbmRleCAxNGM4YTNhMDE0Li5kZGUzODE0ZWYyIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCitAQCAtMTQyLDEyICsxNDIsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX25pb3MyX2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9uaW9zMl9iZT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X25pb3MyX2JlPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworaW5kZXggZjA1ZjQzODAyYi4uZGM4NjM5OTAyZCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworQEAgLTQsOCArNCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgIyBOaW9zIElJIGJpZyBlbmRpYW4gaXMgbm90IHlldCBzdXBwb3J0ZWQuCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKKyAgIFtsaWJjX2N2X25pb3MyX2JlXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKGlzX25pb3MyX2JlLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKysgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKK2luZGV4IDI1Zjk4ZTBjN2IuLmU5NWJmYWUzNTkgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKK0BAIC00MTQsMTEgKzQxNCwxMSBAQCBlbHNlCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIGRubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWYKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworaW5kZXggM2RiMWIzMmIwOC4uZjhjZDM3NWViYyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworQEAgLTEwNSw5ICsxMDUsOSBAQCBBQ19DT01QSUxFX0lGRUxTRSgKKyBMSUJDX0NPTkZJR19WQVIoW21pcHMtbW9kZS1zd2l0Y2hdLFske2xpYmNfbWlwc19tb2RlX3N3aXRjaH1dKQorIAorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAorLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCisrICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKKyAKKyBsaWJjX21pcHNfbmFuPQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQoraW5kZXggYWU3ZjI1NGRhNC4uODc0NTE5MDAwYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCitAQCAtMTU1LDEyICsxNTUsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWYgX0NBTExfRUxGID09IDIKKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9wcGNfZWxmdjJfYWJpIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzCisgZWxzZQorICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8KK0BAIC0xODgsMTIgKzE4OCwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfQ0FMTF9FTEYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX2RlZl9jYWxsX2VsZiIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCitpbmRleCBmOWNiYTZlMTVkLi5iMjFmNzJmMWU0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKK0BAIC02LDggKzYsOCBAQCBMSUJDX1NMSUJESVJfUlRMRERJUihbbGliNjRdLCBbbGliNjRdKQorICMgRGVmaW5lIGRlZmF1bHQtYWJpIGFjY29yZGluZyB0byBjb21waWxlciBmbGFncy4KKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIFBvd2VyUEM2NCBFTEZ2MiBBQkldLAorICAgW2xpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWYgX0NBTExfRUxGID09IDIKKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKHVzZV9wcGNfZWxmdjJfYWJpLFsjaWYgX0NBTExfRUxGID09IDIKKysgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcywgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaSA9IHllczsgdGhlbgorQEAgLTE5LDggKzE5LDggQEAgZWxzZQorICAgIyBDb21waWxlciB0aGF0IGRvIG5vdCBzdXBwb3J0IEVMRnYyIEFCSSBkb2VzIG5vdCBkZWZpbmUgX0NBTExfRUxGCisgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgZGVmaW5lcyBfQ0FMTF9FTEZdLAorICAgICBbbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGZdLAorLSAgICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9DQUxMX0VMRgorLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgW0FDX0VHUkVQX0NQUChpc19kZWZfY2FsbF9lbGYsWyNpZmRlZiBfQ0FMTF9FTEYKKysgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCisgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgXSwgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubyldKQorICAgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGYgPSBubzsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVlZmM0My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxOSArMCwwIEBACi1Gcm9tIDZiNjAzZDI1Y2M1NzIzYmE2MzFkZmM2MGI1NDQ3NzRkYjExNDdkODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0Mjo1OCArMDAwMAotU3ViamVjdDogW1BBVENIIDE4LzI4XSBlZ2xpYmM6IENyb3NzIGJ1aWxkaW5nIGFuZCB0ZXN0aW5nIGluc3RydWN0aW9ucwotCi1Qb3J0ZWQgZnJvbSBlZ2xpYmMKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gR0xJQkMuY3Jvc3MtYnVpbGRpbmcgfCAzODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1ODggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy1idWlsZGluZwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy10ZXN0aW5nCi0KLWRpZmYgLS1naXQgYS9HTElCQy5jcm9zcy1idWlsZGluZyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uZTZlMGRhMWFhZgotLS0tIC9kZXYvbnVsbAotKysrIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLUBAIC0wLDAgKzEsMzgzIEBACi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1Db21waWxpbmcgR0xJQkMKLSsgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rCi0rSW50cm9kdWN0aW9uCi0rCi0rTW9zdCBHTlUgdG9vbHMgaGF2ZSBhIHNpbXBsZSBidWlsZCBwcm9jZWR1cmU6IHlvdSBydW4gdGhlaXIKLSsnY29uZmlndXJlJyBzY3JpcHQsIGFuZCB0aGVuIHlvdSBydW4gJ21ha2UnLiAgVW5mb3J0dW5hdGVseSwgdGhlCi0rcHJvY2VzcyBvZiBjcm9zcy1jb21waWxpbmcgdGhlIEdOVSBDIGxpYnJhcnkgaXMgcXVpdGUgYSBiaXQgbW9yZQotK2ludm9sdmVkOgotKwotKzEpIEJ1aWxkIGEgY3Jvc3MtY29tcGlsZXIsIHdpdGggY2VydGFpbiBmYWNpbGl0aWVzIGRpc2FibGVkLgotKwotKzIpIENvbmZpZ3VyZSB0aGUgQyBsaWJyYXJ5IHVzaW5nIHRoZSBjb21waWxlciB5b3UgYnVpbHQgaW4gc3RlcCAxKS4KLSsgICBCdWlsZCBhIGZldyBvZiB0aGUgQyBydW4tdGltZSBvYmplY3QgZmlsZXMsIGJ1dCBub3QgdGhlIHJlc3Qgb2YgdGhlCi0rICAgbGlicmFyeS4gIEluc3RhbGwgdGhlIGxpYnJhcnkncyBoZWFkZXIgZmlsZXMgYW5kIHRoZSBydW4tdGltZQotKyAgIG9iamVjdCBmaWxlcywgYW5kIGNyZWF0ZSBhIGR1bW15IGxpYmMuc28uCi0rCi0rMykgQnVpbGQgYSBzZWNvbmQgY3Jvc3MtY29tcGlsZXIsIHVzaW5nIHRoZSBoZWFkZXIgZmlsZXMgYW5kIG9iamVjdAotKyAgIGZpbGVzIHlvdSBpbnN0YWxsZWQgaW4gc3RlcCAyLgotKwotKzQpIENvbmZpZ3VyZSwgYnVpbGQsIGFuZCBpbnN0YWxsIGEgZnJlc2ggQyBsaWJyYXJ5LCB1c2luZyB0aGUgY29tcGlsZXIKLSsgICBidWlsdCBpbiBzdGVwIDMuCi0rCi0rNSkgQnVpbGQgYSB0aGlyZCBjcm9zcy1jb21waWxlciwgYmFzZWQgb24gdGhlIEMgbGlicmFyeSBidWlsdCBpbiBzdGVwIDQuCi0rCi0rVGhlIHJlYXNvbiBmb3IgdGhpcyBjb21wbGV4aXR5IGlzIHRoYXQsIGFsdGhvdWdoIEdDQyBhbmQgdGhlIEdOVSBDCi0rbGlicmFyeSBhcmUgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseSwgdGhleSBhcmUgbm90IGFjdHVhbGx5IGluZGVwZW5kZW50Ci0rb2YgZWFjaCBvdGhlcjogR0NDIHJlcXVpcmVzIHRoZSBDIGxpYnJhcnkncyBoZWFkZXJzIGFuZCBzb21lIG9iamVjdAotK2ZpbGVzIHRvIGNvbXBpbGUgaXRzIG93biBsaWJyYXJpZXMsIHdoaWxlIHRoZSBDIGxpYnJhcnkgZGVwZW5kcyBvbgotK0dDQydzIGxpYnJhcmllcy4gIEdMSUJDIGluY2x1ZGVzIGZlYXR1cmVzIGFuZCBidWcgZml4ZXMgdG8gdGhlIHN0b2NrCi0rR05VIEMgbGlicmFyeSB0aGF0IHNpbXBsaWZ5IHRoaXMgcHJvY2VzcywgYnV0IHRoZSBmdW5kYW1lbnRhbAotK2ludGVyZGVwZW5kZW5jeSBzdGFuZHMuCi0rCi0rSW4gdGhpcyBkb2N1bWVudCwgd2UgZXhwbGFpbiBob3cgdG8gY3Jvc3MtY29tcGlsZSBhbiBHTElCQy9HQ0MgcGFpcgotK2Zyb20gc291cmNlLiAgT3VyIGludGVuZGVkIGF1ZGllbmNlIGlzIGRldmVsb3BlcnMgd2hvIGFyZSBhbHJlYWR5Ci0rZmFtaWxpYXIgd2l0aCB0aGUgR05VIHRvb2xjaGFpbiBhbmQgY29tZm9ydGFibGUgd29ya2luZyB3aXRoCi0rY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMuICBXaGlsZSB3ZSBkbyBwcmVzZW50IGEgd29ya2VkIGV4YW1wbGUgdG8KLSthY2NvbXBhbnkgdGhlIGV4cGxhbmF0aW9uLCBmb3IgY2xhcml0eSdzIHNha2Ugd2UgZG8gbm90IGNvdmVyIG1hbnkgb2YKLSt0aGUgb3B0aW9ucyBhdmFpbGFibGUgdG8gY3Jvc3MtdG9vbGNoYWluIHVzZXJzLgotKwotKwotK1ByZXBhcmF0aW9uCi0rCi0rR0xJQkMgcmVxdWlyZXMgcmVjZW50IHZlcnNpb25zIG9mIHRoZSBHTlUgYmludXRpbHMsIEdDQywgYW5kIHRoZQotK0xpbnV4IGtlcm5lbC4gIFRoZSB3ZWIgcGFnZSA8aHR0cDovL3d3dy5lZ2xpYmMub3JnL3ByZXJlcXVpc2l0ZXM+Ci0rZG9jdW1lbnRzIHRoZSBjdXJyZW50IHJlcXVpcmVtZW50cywgYW5kIGxpc3RzIHBhdGNoZXMgbmVlZGVkIGZvcgotK2NlcnRhaW4gdGFyZ2V0IGFyY2hpdGVjdHVyZXMuICBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZXNlIGJ1aWxkCi0raW5zdHJ1Y3Rpb25zIGhhdmUgYmVlbiB0ZXN0ZWQgd2l0aCBiaW51dGlscyAyLjIyLjUxLCBHQ0MgNC42LjIsCi0rYW5kIExpbnV4IDMuMS4KLSsKLStGaXJzdCwgbGV0J3Mgc2V0IHNvbWUgdmFyaWFibGVzLCB0byBzaW1wbGlmeSBsYXRlciBjb21tYW5kcy4gIFdlJ2xsCi0rYnVpbGQgR0xJQkMgYW5kIEdDQyBmb3IgYW4gQVJNIHRhcmdldCwga25vd24gdG8gdGhlIExpbnV4IGtlcm5lbAotK2FzICdhcm0nLCBhbmQgd2UnbGwgZG8gdGhlIGJ1aWxkIG9uIGFuIEludGVsIHg4Nl82NCBMaW51eCBib3g6Ci0rCi0rICAgICQgYnVpbGQ9eDg2XzY0LXBjLWxpbnV4LWdudQotKyAgICAkIGhvc3Q9JGJ1aWxkCi0rICAgICQgdGFyZ2V0PWFybS1ub25lLWxpbnV4LWdudWVhYmkKLSsgICAgJCBsaW51eF9hcmNoPWFybQotKwotK1dlJ3JlIHVzaW5nIHRoZSBhZm9yZW1lbnRpb25lZCB2ZXJzaW9ucyBvZiBCaW51dGlscywgR0NDLCBhbmQgTGludXg6Ci0rCi0rICAgICQgYmludXRpbHN2PWJpbnV0aWxzLTIuMjIuNTEKLSsgICAgJCBnY2N2PWdjYy00LjYuMgotKyAgICAkIGxpbnV4dj1saW51eC0zLjEKLSsKLStXZSdyZSBjYXJyeWluZyBvdXQgdGhlIGVudGlyZSBwcm9jZXNzIHVuZGVyICd+L2Nyb3NzLWJ1aWxkJywgd2hpY2gKLStjb250YWlucyB1bnBhY2tlZCBzb3VyY2UgdHJlZXMgZm9yIGJpbnV0aWxzLCBnY2MsIGFuZCBsaW51eCBrZXJuZWwsCi0rYWxvbmcgd2l0aCBHTElCQyBzdm4gdHJ1bmsgKHdoaWNoIGNhbiBiZSBjaGVja2VkLW91dCB3aXRoCi0rJ3N2biBjbyBodHRwOi8vd3d3LmVnbGliYy5vcmcvc3ZuL3RydW5rIGVnbGliYycpOgotKwotKyAgICAkIHRvcD0kSE9NRS9jcm9zcy1idWlsZC8kdGFyZ2V0Ci0rICAgICQgc3JjPSRIT01FL2Nyb3NzLWJ1aWxkL3NyYwotKyAgICAkIGxzICRzcmMKLSsgICAgYmludXRpbHMtMi4yMi41MSAgZ2xpYmMgIGdjYy00LjYuMiAgbGludXgtMy4xCi0rCi0rV2UncmUgZ29pbmcgdG8gcGxhY2Ugb3VyIGJ1aWxkIGRpcmVjdG9yaWVzIGluIGEgc3ViZGlyZWN0b3J5ICdvYmonLAotK3dlJ2xsIGluc3RhbGwgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpbiAndG9vbHMnLCBhbmQgd2UnbGwKLStwbGFjZSBvdXIgc3lzcm9vdCAoY29udGFpbmluZyBmaWxlcyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIHRhcmdldAotK3N5c3RlbSkgaW4gJ3N5c3Jvb3QnOgotKwotKyAgICAkIG9iaj0kdG9wL29iagotKyAgICAkIHRvb2xzPSR0b3AvdG9vbHMKLSsgICAgJCBzeXNyb290PSR0b3Avc3lzcm9vdAotKwotKwotK0JpbnV0aWxzCi0rCi0rQ29uZmlndXJpbmcgYW5kIGJ1aWxkaW5nIGJpbnV0aWxzIGZvciB0aGUgdGFyZ2V0IGlzIHN0cmFpZ2h0Zm9yd2FyZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2JpbnV0aWxzCi0rICAgICQgY2QgJG9iai9iaW51dGlscwotKyAgICAkICRzcmMvJGJpbnV0aWxzdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QKLSsgICAgJCBtYWtlCi0rICAgICQgbWFrZSBpbnN0YWxsCi0rCi0rCi0rVGhlIEZpcnN0IEdDQwotKwotK0ZvciBvdXIgd29yaywgd2UgbmVlZCBhIGNyb3NzLWNvbXBpbGVyIHRhcmdldGluZyBhbiBBUk0gTGludXgKLStzeXN0ZW0uICBIb3dldmVyLCB0aGF0IGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rJ2xpYmdjY19zLnNvJywgd2hpY2ggaXMgY29tcGlsZWQgYWdhaW5zdCB0aGUgR0xJQkMgaGVhZGVycyAod2hpY2ggd2UKLStoYXZlbid0IGluc3RhbGxlZCB5ZXQpIGFuZCBsaW5rZWQgYWdhaW5zdCAnbGliYy5zbycgKHdoaWNoIHdlIGhhdmVuJ3QKLStidWlsdCB5ZXQpLgotKwotK0ZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBHQ0Mgd2hpY2ggdGVsbCBpdCBub3QKLSt0byBidWlsZCAnbGliZ2NjX3Muc28nLiAgVGhlICctLXdpdGhvdXQtaGVhZGVycycgb3B0aW9uIGlzIHN1cHBvc2VkIHRvCi0rdGFrZSBjYXJlIG9mIHRoaXMsIGJ1dCBpdHMgaW1wbGVtZW50YXRpb24gaXMgaW5jb21wbGV0ZSwgc28geW91IG11c3QKLSthbHNvIGNvbmZpZ3VyZSB3aXRoIHRoZSAnLS13aXRoLW5ld2xpYicgb3B0aW9uLiAgV2hpbGUgJy0td2l0aC1uZXdsaWInCi0rYXBwZWFycyB0byBtZWFuICJVc2UgdGhlIE5ld2xpYiBDIGxpYnJhcnkiLCBpdHMgZWZmZWN0IGlzIHRvIHRlbGwgdGhlCi0rR0NDIGJ1aWxkIG1hY2hpbmVyeSwgIkRvbid0IGFzc3VtZSB0aGVyZSBpcyBhIEMgbGlicmFyeSBhdmFpbGFibGUuIgotKwotK1dlIGFsc28gbmVlZCB0byBkaXNhYmxlIHNvbWUgb2YgdGhlIGxpYnJhcmllcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlCi0rYnVpbHQgYWxvbmcgd2l0aCBHQ0MsIGFuZCBzcGVjaWZ5IHRoYXQgb25seSB0aGUgY29tcGlsZXIgZm9yIHRoZSBDCi0rbGFuZ3VhZ2UgaXMgbmVlZGVkLgotKwotK1NvLCB3ZSBjcmVhdGUgYSBidWlsZCBkaXJlY3RvcnksIGNvbmZpZ3VyZSwgbWFrZSwgYW5kIGluc3RhbGwuCi0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MxCi0rICAgICQgY2QgJG9iai9nY2MxCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXRocmVhZHMgLS1kaXNhYmxlLWxpYnNzcCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1kZWNpbWFsLWZsb2F0IC0tZGlzYWJsZS1saWJmZmkgXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAotKwotKwotK0xpbnV4IEtlcm5lbCBIZWFkZXJzCi0rCi0rVG8gY29uZmlndXJlIEdMSUJDLCB3ZSBhbHNvIG5lZWQgTGludXgga2VybmVsIGhlYWRlcnMgaW4gcGxhY2UuCi0rRm9ydHVuYXRlbHksIHRoZSBMaW51eCBtYWtlZmlsZXMgaGF2ZSBhIHRhcmdldCB0aGF0IGluc3RhbGxzIHRoZW0gZm9yCi0rdXMuICBTaW5jZSB0aGUgcHJvY2VzcyBkb2VzIG1vZGlmeSB0aGUgc291cmNlIHRyZWUgYSBiaXQsIHdlIG1ha2UgYQotK2NvcHkgZmlyc3Q6Ci0rCi0rICAgICQgY3AgLXIgJHNyYy8kbGludXh2ICRvYmovbGludXgKLSsgICAgJCBjZCAkb2JqL2xpbnV4Ci0rCi0rTm93IHdlJ3JlIHJlYWR5IHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgaW50byB0aGUgc3lzcm9vdDoKLSsKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggXAotKyAgICA+IG1ha2UgaGVhZGVyc19pbnN0YWxsIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rICAgID4gICAgICBJTlNUQUxMX0hEUl9QQVRIPSRzeXNyb290L3VzcgotKwotKwotK0dMSUJDIEhlYWRlcnMgYW5kIFByZWxpbWluYXJ5IE9iamVjdHMKLSsKLStVc2luZyB0aGUgY3Jvc3MtY29tcGlsZXIgd2UndmUganVzdCBidWlsdCwgd2UgY2FuIG5vdyBjb25maWd1cmUgR0xJQkMKLSt3ZWxsIGVub3VnaCB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGFuZCBidWlsZCB0aGUgb2JqZWN0IGZpbGVzIHRoYXQgdGhlCi0rZnVsbCBjcm9zcy1jb21waWxlciB3aWxsIG5lZWQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nbGliYy1oZWFkZXJzCi0rICAgICQgY2QgJG9iai9nbGliYy1oZWFkZXJzCi0rICAgICQgQlVJTERfQ0M9Z2NjIFwKLSsgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKLSsgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCi0rICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKLSsgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCi0rICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tcHJlZml4PS91c3IgXAotKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCi0rICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKLSsgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCi0rICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKLSsKLStUaGUgb3B0aW9uICctLXByZWZpeD0vdXNyJyBtYXkgbG9vayBzdHJhbmdlLCBidXQgeW91IHNob3VsZCBuZXZlcgotK2NvbmZpZ3VyZSBHTElCQyB3aXRoIGEgcHJlZml4IG90aGVyIHRoYW4gJy91c3InOiBpbiB2YXJpb3VzIHBsYWNlcywKLStHTElCQydzIGJ1aWxkIHN5c3RlbSBjaGVja3Mgd2hldGhlciB0aGUgcHJlZml4IGlzICcvdXNyJywgYW5kIGRvZXMKLStzcGVjaWFsIGhhbmRsaW5nIG9ubHkgaWYgdGhhdCBpcyB0aGUgY2FzZS4gIFVubGVzcyB5b3UgdXNlIHRoaXMKLStwcmVmaXgsIHlvdSB3aWxsIGdldCBhIHN5c3Jvb3QgdGhhdCBkb2VzIG5vdCB1c2UgdGhlIHN0YW5kYXJkIExpbnV4Ci0rZGlyZWN0b3J5IGxheW91dHMgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGEgYmFzaXMgZm9yIHRoZSByb290Ci0rZmlsZXN5c3RlbSBvbiB5b3VyIHRhcmdldCBzeXN0ZW0gY29tcGF0aWJseSB3aXRoIG5vcm1hbCBHTElCQwotK2luc3RhbGxhdGlvbnMuCi0rCi0rVGhlICctLXdpdGgtaGVhZGVycycgb3B0aW9uIHRlbGxzIEdMSUJDIHdoZXJlIHRoZSBMaW51eCBoZWFkZXJzIGhhdmUKLStiZWVuIGluc3RhbGxlZC4KLSsKLStUaGUgJy0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMnIG9wdGlvbiB0ZWxscyBHTElCQyB0byBsb29rCi0rZm9yIHRoZSBsaXN0ZWQgZ2xpYmMgYWRkLW9ucy4gTW9zdCBub3RhYmx5IHRoZSBwb3J0cyBhZGQtb24gKGxvY2F0ZWQKLStqdXN0IGFib3ZlIHRoZSBsaWJjIHNvdXJjZXMgaW4gdGhlIEdMSUJDIHN2biB0cmVlKSBpcyByZXF1aXJlZCB0bwotK3N1cHBvcnQgQVJNIHRhcmdldHMuCi0rCi0rV2UgY2FuIG5vdyB1c2UgdGhlICdpbnN0YWxsLWhlYWRlcnMnIG1ha2VmaWxlIHRhcmdldCB0byBpbnN0YWxsIHRoZQotK2hlYWRlcnM6Ci0rCi0rICAgICQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbF9yb290PSRzeXNyb290IFwKLSsgICAgPiAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcwotKwotK1RoZSAnaW5zdGFsbF9yb290JyB2YXJpYWJsZSBpbmRpY2F0ZXMgd2hlcmUgdGhlIGZpbGVzIHNob3VsZCBhY3R1YWxseQotK2JlIGluc3RhbGxlZDsgaXRzIHZhbHVlIGlzIHRyZWF0ZWQgYXMgdGhlIHBhcmVudCBvZiB0aGUgJy0tcHJlZml4JwotK2RpcmVjdG9yeSB3ZSBwYXNzZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIHNvIHRoZSBoZWFkZXJzIHdpbGwgZ28gaW4KLSsnJHN5c3Jvb3QvdXNyL2luY2x1ZGUnLiAgVGhlICdpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzJyB2YXJpYWJsZQotK3JlcXVlc3RzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGNlcnRhaW4gdHJpY2t5IGhlYWRlciBmaWxlcy4KLSsKLStOZXh0LCB0aGVyZSBhcmUgYSBmZXcgb2JqZWN0IGZpbGVzIG5lZWRlZCB0byBsaW5rIHNoYXJlZCBsaWJyYXJpZXMsCi0rd2hpY2ggd2UgYnVpbGQgYW5kIGluc3RhbGwgYnkgaGFuZDoKLSsKLSsgICAgJCBta2RpciAtcCAkc3lzcm9vdC91c3IvbGliCi0rICAgICQgbWFrZSBjc3Uvc3ViZGlyX2xpYgotKyAgICAkIGNwIGNzdS9jcnQxLm8gY3N1L2NydGkubyBjc3UvY3J0bi5vICRzeXNyb290L3Vzci9saWIKLSsKLStGaW5hbGx5LCAnbGliZ2NjX3Muc28nIHJlcXVpcmVzIGEgJ2xpYmMuc28nIHRvIGxpbmsgYWdhaW5zdC4gIEhvd2V2ZXIsCi0rc2luY2Ugd2Ugd2lsbCBuZXZlciBhY3R1YWxseSBleGVjdXRlIGl0cyBjb2RlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGF0Ci0raXQgY29udGFpbnMuICBTbywgdHJlYXRpbmcgJy9kZXYvbnVsbCcgYXMgYSBDIHNvdXJjZSBmaWxlLCB3ZSBwcm9kdWNlCi0rYSBkdW1teSAnbGliYy5zbycgaW4gb25lIHN0ZXA6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtc2hhcmVkIC14IGMgL2Rldi9udWxsIFwKLSsgICAgPiAgICAgICAgICAgICAgICAgICAgICAgIC1vICRzeXNyb290L3Vzci9saWIvbGliYy5zbwotKwotKwotK1RoZSBTZWNvbmQgR0NDCi0rCi0rV2l0aCB0aGUgR0xJQkMgaGVhZGVycyBhbmQgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIGluc3RhbGxlZCwgd2UgY2FuCi0rbm93IGJ1aWxkIGEgR0NDIHRoYXQgaXMgY2FwYWJsZSBvZiBjb21waWxpbmcgR0xJQkMuICBXZSBjb25maWd1cmUsCi0rYnVpbGQsIGFuZCBpbnN0YWxsIHRoZSBzZWNvbmQgR0NDLCBhZ2FpbiBidWlsZGluZyBvbmx5IHRoZSBDIGNvbXBpbGVyLAotK2FuZCBhdm9pZGluZyBsaWJyYXJpZXMgd2Ugd29uJ3QgdXNlOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMgotKyAgICAkIGNkICRvYmovZ2NjMgotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJmZmkgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLSsKLStHTElCQywgQ29tcGxldGUKLSsKLStXaXRoIHRoZSBzZWNvbmQgY29tcGlsZXIgYnVpbHQgYW5kIGluc3RhbGxlZCwgd2UncmUgbm93IHJlYWR5IGZvciB0aGUKLStmdWxsIEdMSUJDIGJ1aWxkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMKLSsgICAgJCBjZCAkb2JqL2dsaWJjCi0rICAgICQgQlVJTERfQ0M9Z2NjIFwKLSsgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKLSsgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCi0rICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKLSsgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCi0rICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tcHJlZml4PS91c3IgXAotKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCi0rICAgID4gICAgIC0td2l0aC1rY29uZmlnPSRvYmovbGludXgvc2NyaXB0cy9rY29uZmlnIFwKLSsgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAotKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKLSsgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cwotKwotK05vdGUgdGhlIGFkZGl0aW9uYWwgJy0td2l0aC1rY29uZmlnJyBvcHRpb24uIFRoaXMgdGVsbHMgR0xJQkMgd2hlcmUgdG8KLStmaW5kIHRoZSBob3N0IGNvbmZpZyB0b29scyB1c2VkIGJ5IHRoZSBrZXJuZWwgJ21ha2UgY29uZmlnJyBhbmQgJ21ha2UKLSttZW51Y29uZmlnJy4gIFRoZXNlIHRvb2xzIGNhbiBiZSByZS11c2VkIGJ5IEdMSUJDIGZvciBpdHMgb3duICdtYWtlCi0rKmNvbmZpZycgc3VwcG9ydCwgd2hpY2ggd2lsbCBjcmVhdGUgJ29wdGlvbi1ncm91cHMuY29uZmlnJyBmb3IgeW91LgotK0J1dCBmaXJzdCBtYWtlIHN1cmUgdGhvc2UgdG9vbHMgaGF2ZSBiZWVuIGJ1aWx0IGJ5IHJ1bm5pbmcgc29tZQotK2R1bW15ICdtYWtlICpjb25maWcnIGNhbGxzIGluIHRoZSBrZXJuZWwgZGlyZWN0b3J5OgotKwotKyAgICAkIGNkICRvYmovbGludXgKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBjb25maWcgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rCi0rTm93IHdlIGNhbiBjb25maWd1cmUgYW5kIGJ1aWxkIHRoZSBmdWxsIEdMSUJDOgotKwotKyAgICAkIGNkICRvYmovZ2xpYmMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBkZWZjb25maWcKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsIGluc3RhbGxfcm9vdD0kc3lzcm9vdAotKwotK0F0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBjb21wbGV0ZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JywKLSt3aXRoIGhlYWRlciBmaWxlcywgbGlicmFyeSBmaWxlcywgYW5kIG1vc3Qgb2YgdGhlIEMgcnVudGltZSBzdGFydHVwCi0rZmlsZXMgaW4gcGxhY2UuCi0rCi0rCi0rVGhlIFRoaXJkIEdDQwotKwotK0ZpbmFsbHksIHdlIHJlY29tcGlsZSBHQ0MgYWdhaW5zdCB0aGlzIGZ1bGwgaW5zdGFsbGF0aW9uLCBlbmFibGluZwotK3doYXRldmVyIGxhbmd1YWdlcyBhbmQgbGlicmFyaWVzIHdlIHdvdWxkIGxpa2UgdG8gdXNlOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMwotKyAgICAkIGNkICRvYmovZ2NjMwotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKLSsgICAgPiAgICAgLS1lbmFibGUtX19jeGFfYXRleGl0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGMrKwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAotKwotK1RoZSAnLS1lbmFibGUtX19jeGFfYXRleGl0JyBvcHRpb24gdGVsbHMgR0NDIHdoYXQgc29ydCBvZiBDKysKLStkZXN0cnVjdG9yIHN1cHBvcnQgdG8gZXhwZWN0IGZyb20gdGhlIEMgbGlicmFyeTsgaXQncyByZXF1aXJlZCB3aXRoCi0rR0xJQkMuCi0rCi0rQW5kIHNpbmNlIEdDQydzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzbid0IGRlc2lnbmVkIHRvIGhlbHAgY29uc3RydWN0Ci0rc3lzcm9vdCB0cmVlcywgd2UgbXVzdCBtYW51YWxseSBjb3B5IGNlcnRhaW4gbGlicmFyaWVzIGludG8gcGxhY2UgaW4KLSt0aGUgc3lzcm9vdC4KLSsKLSsgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGliZ2NjX3Muc28qICRzeXNyb290L2xpYgotKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJzdGRjKysuc28qICRzeXNyb290L3Vzci9saWIKLSsKLSsKLStUcnlpbmcgVGhpbmdzIE91dAotKwotK0F0IHRoaXMgcG9pbnQsICckdG9vbHMnIGNvbnRhaW5zIGEgY3Jvc3MgdG9vbGNoYWluIHJlYWR5IHRvIHVzZQotK3RoZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JzoKLSsKLSsgICAgJCBjYXQgPiBoZWxsby5jIDw8RU9GCi0rICAgID4gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rICAgID4gaW50Ci0rICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotKyAgICA+IHsKLSsgICAgPiAgIHB1dHMgKCJIZWxsbywgd29ybGQhIik7Ci0rICAgID4gICByZXR1cm4gMDsKLSsgICAgPiB9Ci0rICAgID4gRU9GCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtV2FsbCBoZWxsby5jIC1vIGhlbGxvCi0rICAgICQgY2F0ID4gYysrLWhlbGxvLmNjIDw8RU9GCi0rICAgID4gI2luY2x1ZGUgPGlvc3RyZWFtPgotKyAgICA+IGludAotKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsgICAgPiB7Ci0rICAgID4gICBzdGQ6OmNvdXQgPDwgIkhlbGxvLCBDKysgd29ybGQhIiA8PCBzdGQ6OmVuZGw7Ci0rICAgID4gICByZXR1cm4gMDsKLSsgICAgPiB9Ci0rICAgID4gRU9GCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyAtV2FsbCBjKystaGVsbG8uY2MgLW8gYysrLWhlbGxvCi0rCi0rCi0rV2UgY2FuIHVzZSAncmVhZGVsZicgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgYXJlIGluZGVlZCBleGVjdXRhYmxlcyBmb3IKLStvdXIgdGFyZ2V0LCB1c2luZyBvdXIgZHluYW1pYyBsaW5rZXI6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWhsIGhlbGxvCi0rICAgIEVMRiBIZWFkZXI6Ci0rICAgIC4uLgotKyAgICAgIFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhFQyAoRXhlY3V0YWJsZSBmaWxlKQotKyAgICAgIE1hY2hpbmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJNCi0rCi0rICAgIC4uLgotKyAgICBQcm9ncmFtIEhlYWRlcnM6Ci0rICAgICAgVHlwZSAgICAgICAgICAgT2Zmc2V0ICAgVmlydEFkZHIgICBQaHlzQWRkciAgIEZpbGVTaXogTWVtU2l6ICBGbGcgQWxpZ24KLSsgICAgICBQSERSICAgICAgICAgICAweDAwMDAzNCAweDEwMDAwMDM0IDB4MTAwMDAwMzQgMHgwMDEwMCAweDAwMTAwIFIgRSAweDQKLSsgICAgICBJTlRFUlAgICAgICAgICAweDAwMDEzNCAweDAwMDA4MTM0IDB4MDAwMDgxMzQgMHgwMDAxMyAweDAwMDEzIFIgICAweDEKLSsgICAgICAgICAgW1JlcXVlc3RpbmcgcHJvZ3JhbSBpbnRlcnByZXRlcjogL2xpYi9sZC1saW51eC5zby4zXQotKyAgICAgIExPQUQgICAgICAgICAgIDB4MDAwMDAwIDB4MDAwMDgwMDAgMHgwMDAwODAwMCAweDAwNDJjIDB4MDA0MmMgUiBFIDB4ODAwMAotKyAgICAuLi4KLSsKLStMb29raW5nIGF0IHRoZSBkeW5hbWljIHNlY3Rpb24gb2YgdGhlIGluc3RhbGxlZCAnbGliZ2NjX3Muc28nLCB3ZSBzZWUKLSt0aGF0IHRoZSAnTkVFREVEJyBlbnRyeSBmb3IgdGhlIEMgbGlicmFyeSBkb2VzIGluY2x1ZGUgdGhlICcuNicKLStzdWZmaXgsIGluZGljYXRpbmcgdGhhdCB3YXMgbGlua2VkIGFnYWluc3Qgb3VyIGZ1bGx5IGJ1aWxkIEdMSUJDLCBhbmQKLStub3Qgb3VyIGR1bW15ICdsaWJjLnNvJzoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtZCAkc3lzcm9vdC9saWIvbGliZ2NjX3Muc28uMQotKyAgICBEeW5hbWljIHNlY3Rpb24gYXQgb2Zmc2V0IDB4MTA4M2MgY29udGFpbnMgMjQgZW50cmllczoKLSsgICAgICBUYWcgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZS9WYWx1ZQotKyAgICAgMHgwMDAwMDAwMSAoTkVFREVEKSAgICAgICAgICAgICAgICAgICAgIFNoYXJlZCBsaWJyYXJ5OiBbbGliYy5zby42XQotKyAgICAgMHgwMDAwMDAwZSAoU09OQU1FKSAgICAgICAgICAgICAgICAgICAgIExpYnJhcnkgc29uYW1lOiBbbGliZ2NjX3Muc28uMV0KLSsgICAgLi4uCi0rCi0rCi0rQW5kIG9uIHRoZSB0YXJnZXQgbWFjaGluZSwgd2UgY2FuIHJ1biBvdXIgcHJvZ3JhbXM6Ci0rCi0rICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAotKyAgICA+IC4vaGVsbG8KLSsgICAgSGVsbG8sIHdvcmxkIQotKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKLSsgICAgPiAuL2MrKy1oZWxsbwotKyAgICBIZWxsbywgQysrIHdvcmxkIQotZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLXRlc3RpbmcgYi9HTElCQy5jcm9zcy10ZXN0aW5nCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYjY3YjQ2ODQ2NgotLS0tIC9kZXYvbnVsbAotKysrIGIvR0xJQkMuY3Jvc3MtdGVzdGluZwotQEAgLTAsMCArMSwyMDUgQEAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQotKwotKyAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1UZXN0aW5nIFdpdGggR0xJQkMKLSsgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rCi0rSW50cm9kdWN0aW9uCi0rCi0rRGV2ZWxvcGVycyB3cml0aW5nIHNvZnR3YXJlIGZvciBlbWJlZGRlZCBzeXN0ZW1zIG9mdGVuIHVzZSBhIGRlc2t0b3AKLStvciBvdGhlciBzaW1pbGFybHkgY2FwYWJsZSBjb21wdXRlciBmb3IgZGV2ZWxvcG1lbnQsIGJ1dCBuZWVkIHRvIHJ1bgotK3Rlc3RzIG9uIHRoZSBlbWJlZGRlZCBzeXN0ZW0sIG9yIHBlcmhhcHMgb24gYSBzaW11bGF0b3IuICBXaGVuCi0rY29uZmlndXJlZCBmb3IgY3Jvc3MtY29tcGlsYXRpb24sIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHNpbXBseQotK2Rpc2FibGVzIHJ1bm5pbmcgdGVzdHMgYWx0b2dldGhlcjogdGhlIGNvbW1hbmQgJ21ha2UgdGVzdHMnIGJ1aWxkcwotK3Rlc3QgcHJvZ3JhbXMsIGJ1dCBkb2VzIG5vdCBydW4gdGhlbS4gIEdMSUJDLCBob3dldmVyLCBwcm92aWRlcwotK2ZhY2lsaXRpZXMgZm9yIGNvbXBpbGluZyB0ZXN0cyBhbmQgZ2VuZXJhdGluZyBkYXRhIGZpbGVzIG9uIHRoZSBidWlsZAotK3N5c3RlbSwgYnV0IHJ1bm5pbmcgdGhlIHRlc3QgcHJvZ3JhbXMgdGhlbXNlbHZlcyBvbiBhIHJlbW90ZSBzeXN0ZW0gb3IKLStzaW11bGF0b3IuCi0rCi0rCi0rVGVzdCBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMKLSsKLStUaGUgdGVzdCBlbnZpcm9ubWVudCBtdXN0IG1lZXQgY2VydGFpbiBjb25kaXRpb25zIGZvciBHTElCQydzCi0rY3Jvc3MtdGVzdGluZyBmYWNpbGl0aWVzIHRvIHdvcms6Ci0rCi0rLSBTaGFyZWQgZmlsZXN5c3RlbXMuICBUaGUgJ2J1aWxkJyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBjb25maWd1cmUgYW5kCi0rICBjb21waWxlIEdMSUJDLCBhbmQgdGhlICdob3N0JyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBpbnRlbmQgdG8gcnVuCi0rICBHTElCQywgbXVzdCBzaGFyZSBhIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgR0xJQkMgYnVpbGQgYW5kCi0rICBzb3VyY2UgdHJlZXMuICBGaWxlcyBtdXN0IGFwcGVhciBhdCB0aGUgc2FtZSBwYXRocyBvbiBib3RoIHN5c3RlbXMuCi0rCi0rLSBSZW1vdGUtc2hlbGwgbGlrZSBpbnZvY2F0aW9uLiAgVGhlcmUgbXVzdCBiZSBhIHdheSB0byBydW4gYSBwcm9ncmFtCi0rICBvbiB0aGUgaG9zdCBzeXN0ZW0gZnJvbSB0aGUgYnVpbGQgc3lzdGVtLCBwYXNzaW5nIGl0IHByb3Blcmx5IHF1b3RlZAotKyAgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgc2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZAotKyAgaW5oZXJpdGluZyB0aGUgY2FsbGVyJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KLSsKLSsKLStVc2FnZQotKwotK1RvIHVzZSBHTElCQydzIGNyb3NzLXRlc3Rpbmcgc3VwcG9ydCwgcHJvdmlkZSB2YWx1ZXMgZm9yIHRoZQotK2ZvbGxvd2luZyBNYWtlIHZhcmlhYmxlcyB3aGVuIHlvdSBpbnZva2UgJ21ha2UnOgotKwotKy0gY3Jvc3MtdGVzdC13cmFwcGVyCi0rCi0rICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyIGNvbW1hbmQsIGFsb25nCi0rICB3aXRoIGFueSBhcmd1bWVudHMuCi0rCi0rLSBjcm9zcy1sb2NhbGVkZWYKLSsKLSsgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIGEgY3Jvc3MtY2FwYWJsZSBsb2NhbGVkZWYgcHJvZ3JhbSwgbGlrZQotKyAgdGhhdCBpbmNsdWRlZCBpbiB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlLCBhbG9uZyB3aXRoIGFueQotKyAgYXJndW1lbnRzIG5lZWRlZC4KLSsKLStUaGVzZSBhcmUgZWFjaCBleHBsYWluZWQgaW4gZGV0YWlsIGJlbG93LgotKwotKwotK1RoZSBDcm9zcy1UZXN0aW5nIFdyYXBwZXIKLSsKLStUbyBydW4gdGVzdCBwcm9ncmFtcyByZWxpYWJseSwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgdGFrZXMgY2FyZSB0bwotK2Vuc3VyZSB0aGF0IHRlc3QgcHJvZ3JhbXMgdXNlIHRoZSBuZXdseSBjb21waWxlZCBkeW5hbWljIGxpbmtlciBhbmQKLStzaGFyZWQgbGlicmFyaWVzLCBhbmQgbmV2ZXIgdGhlIGhvc3Qgc3lzdGVtJ3MgaW5zdGFsbGVkIGxpYnJhcmllcy4gIFRvCi0rYWNjb21wbGlzaCB0aGlzLCBpdCBydW5zIHRoZSB0ZXN0cyBieSBleHBsaWNpdGx5IGludm9raW5nIHRoZSBkeW5hbWljCi0rbGlua2VyIGZyb20gdGhlIGJ1aWxkIHRyZWUsIHBhc3NpbmcgaXQgYSBsaXN0IG9mIGJ1aWxkIHRyZWUKLStkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIHNoYXJlZCBsaWJyYXJpZXMsIGZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mCi0rdGhlIGV4ZWN1dGFibGUgdG8gcnVuIGFuZCBpdHMgYXJndW1lbnRzLgotKwotK0ZvciBleGFtcGxlLCB3aGVyZSBvbmUgbWlnaHQgbm9ybWFsbHkgcnVuIGEgdGVzdCBwcm9ncmFtIGxpa2UgdGhpczoKLSsKLSsgICAgJCAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rdGhlIEdOVSBDIGxpYnJhcnkgbWlnaHQgcnVuIHRoYXQgcHJvZ3JhbSBsaWtlIHRoaXM6Ci0rCi0rICAgICQgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rKHdoZXJlICRvYmpkaXIgaXMgdGhlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgYnVpbGQgdHJlZSwgYW5kIHRoZQotK3RyYWlsaW5nIGJhY2tzbGFzaCBpbmRpY2F0ZXMgYSBjb250aW51YXRpb24gb2YgdGhlIGNvbW1hbmQpLiAgSW4gb3RoZXIKLSt3b3JkcywgZWFjaCB0ZXN0IHByb2dyYW0gaW52b2NhdGlvbiBpcyAnd3JhcHBlZCB1cCcgaW5zaWRlIGFuIGV4cGxpY2l0Ci0raW52b2NhdGlvbiBvZiB0aGUgZHluYW1pYyBsaW5rZXIsIHdoaWNoIG11c3QgaXRzZWxmIGV4ZWN1dGUgdGhlIHRlc3QKLStwcm9ncmFtLCBoYXZpbmcgbG9hZGVkIHNoYXJlZCBsaWJyYXJpZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUKLStkaXJlY3Rvcmllcy4KLSsKLStUbyBzdXBwb3J0IGNyb3NzLXRlc3RpbmcsIEdMSUJDIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIG9wdGlvbmFsbHkKLStzZXQgdGhlICdjcm9zcy10ZXN0LXdyYXBwZXInIE1ha2UgdmFyaWFibGUgdG8gYW5vdGhlciB3cmFwcGVyIGNvbW1hbmQsCi0rdG8gd2hpY2ggaXQgcGFzc2VzIHRoZSBlbnRpcmUgZHluYW1pYyBsaW5rZXIgaW52b2NhdGlvbiBzaG93biBhYm92ZSBhcwotK2FyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBpZiB0aGUgZGV2ZWxvcGVyIHN1cHBsaWVzIGEgd3JhcHBlciBvZgotKydteS13cmFwcGVyIGhvc3RuYW1lJywgdGhlbiBHTElCQyB3b3VsZCBydW4gdGhlIHRlc3QgYWJvdmUgYXMKLStmb2xsb3dzOgotKwotKyAgICAkIG15LXdyYXBwZXIgaG9zdG5hbWUgXAotKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotK1RoZSAnbXktd3JhcHBlcicgY29tbWFuZCBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIHRoZSBjb21tYW5kCi0rZ2l2ZW4gb24gdGhlIGhvc3Qgc3lzdGVtLgotKwotK1NpbmNlIHRlc3RzIGFyZSBydW4gaW4gdmFyeWluZyBkaXJlY3RvcmllcywgdGhlIHdyYXBwZXIgc2hvdWxkIGVpdGhlcgotK2JlIGluIHlvdXIgY29tbWFuZCBzZWFyY2ggcGF0aCwgb3IgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgc2hvdWxkIGdpdmUgYW4KLSthYnNvbHV0ZSBwYXRoIGZvciB0aGUgd3JhcHBlci4KLSsKLStUaGUgd3JhcHBlciBtdXN0IG1lZXQgc2V2ZXJhbCByZXF1aXJlbWVudHM6Ci0rCi0rLSBJdCBtdXN0IHByZXNlcnZlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhlCi0rICBidWlsZCBkaXJlY3RvcnkgdHJlZSBtdXN0IGJlIHZpc2libGUgb24gYm90aCB0aGUgYnVpbGQgYW5kIGhvc3QKLSsgIHN5c3RlbXMsIGF0IHRoZSBzYW1lIHBhdGguICBUaGUgdGVzdCB3cmFwcGVyIG11c3QgZW5zdXJlIHRoYXQgdGhlCi0rICBjdXJyZW50IGRpcmVjdG9yeSBpdCBpbmhlcml0cyBpcyBhbHNvIGluaGVyaXRlZCBieSB0aGUgZHluYW1pYwotKyAgbGlua2VyIChhbmQgdGh1cyB0aGUgdGVzdCBwcm9ncmFtIGl0c2VsZikuCi0rCi0rLSBJdCBtdXN0IHByZXNlcnZlIGVudmlyb25tZW50IHZhcmlhYmxlcycgdmFsdWVzLiAgTWFueSBHTElCQyB0ZXN0cwotKyAgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBydW5zOyBpbiBuYXRpdmUgdGVzdGluZywgaXQKLSsgIGludm9rZXMgcHJvZ3JhbXMgbGlrZSB0aGlzOgotKwotKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAotKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyAgV2l0aCB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyLCB0aGF0IGludm9jYXRpb24gYmVjb21lczoKLSsKLSsgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKLSsgICAgICBteS13cmFwcGVyIGhvc3RuYW1lIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsgIEhlcmUsICdteS13cmFwcGVyJyBtdXN0IGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpdCBzZWVzIGZvcgotKyAgJ0dDT05WX1BBVEgnIHdpbGwgYmUgc2VlbiBieSB0aGUgZHluYW1pYyBsaW5rZXIsIGFuZCB0aHVzICd0c3QtZm9vJwotKyAgaXRzZWxmLiAgKFRoZSB3cmFwcGVyIHN1cHBsaWVkIHdpdGggR0xJQkMgc2ltcGx5IHByZXNlcnZlcyB0aGUKLSsgIHZhbHVlcyBvZiAqYWxsKiBlbnZpcm9tZW50IHZhcmlhYmxlcywgd2l0aCBhIGZpeGVkIHNldCBvZgotKyAgZXhjZXB0aW9ucy4pCi0rCi0rICBJZiB5b3VyIHdyYXBwZXIgaXMgYSBzaGVsbCBzY3JpcHQsIHRha2UgY2FyZSB0byBjb3JyZWN0bHkgcHJvcGFnYXRlCi0rICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hvc2UgdmFsdWVzIGNvbnRhaW4gc3BhY2VzIGFuZCBzaGVsbAotKyAgbWV0YWNoYXJhY3RlcnMuCi0rCi0rLSBJdCBtdXN0IHBhc3MgdGhlIGNvbW1hbmQncyBhcmd1bWVudHMsIHVubW9kaWZpZWQuICBUaGUgYXJndW1lbnRzCi0rICBzZWVuIGJ5IHRoZSB0ZXN0IHByb2dyYW0gc2hvdWxkIGJlIGV4YWN0bHkgdGhvc2Ugc2VlbiBieSB0aGUgd3JhcHBlcgotKyAgKGFmdGVyIHdoYXRldmVyIGFyZ3VtZW50cyBhcmUgZ2l2ZW4gdG8gdGhlIHdyYXBwZXIgaXRzZWxmKS4gIFRoZQotKyAgR0xJQkMgdGVzdCBmcmFtZXdvcmsgcGVyZm9ybXMgYWxsIG5lZWRlZCBzaGVsbCB3b3JkIHNwbGl0dGluZyBhbmQKLSsgIGV4cGFuc2lvbiAod2lsZGNhcmQgZXhwYW5zaW9uLCBwYXJhbWV0ZXIgc3Vic3RpdHV0aW9uLCBhbmQgc28gb24pCi0rICBiZWZvcmUgaW52b2tpbmcgdGhlIHdyYXBwZXI7IGZ1cnRoZXIgZXhwYW5zaW9uIG1heSBicmVhayB0aGUgdGVzdHMuCi0rCi0rCi0rVGhlICdjcm9zcy10ZXN0LXNzaC5zaCcgc2NyaXB0Ci0rCi0rSWYgeW91IHdhbnQgdG8gdXNlICdzc2gnIChvciBzb21ldGhpbmcgc3VmZmljaWVudGx5IHNpbWlsYXIpIHRvIHJ1bgotK3Rlc3QgcHJvZ3JhbXMgb24geW91ciBob3N0IHN5c3RlbSwgR0xJQkMgaW5jbHVkZXMgYSBzaGVsbCBzY3JpcHQsCi0rJ3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2gnLCB3aGljaCB5b3UgY2FuIHVzZSBhcyB5b3VyIHdyYXBwZXIKLStjb21tYW5kLiAgVGhpcyBzY3JpcHQgdGFrZXMgY2FyZSBvZiBzZXR0aW5nIHRoZSB0ZXN0IGNvbW1hbmQncyBjdXJyZW50Ci0rZGlyZWN0b3J5LCBwcm9wYWdhdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMsIGFuZCBjYXJyeWluZwotK2NvbW1hbmQtbGluZSBhcmd1bWVudHMsIGFsbCBhY3Jvc3MgYW4gJ3NzaCcgY29ubmVjdGlvbi4gIFlvdSBtYXkgZXZlbgotK3N1cHBseSBhbiBhbHRlcm5hdGl2ZSB0byAnc3NoJyBvbiB0aGUgY29tbWFuZCBsaW5lLCBpZiBuZWVkZWQuCi0rCi0rRm9yIG1vcmUgZGV0YWlscywgcGFzcyAnY3Jvc3MtdGVzdC1zc2guc2gnIHRoZSAnLS1oZWxwJyBvcHRpb24uCi0rCi0rCi0rVGhlIENyb3NzLUNvbXBpbGluZyBMb2NhbGUgRGVmaW5pdGlvbiBDb21tYW5kCi0rCi0rU29tZSBHTElCQyB0ZXN0cyByZWx5IG9uIGxvY2FsZXMgZ2VuZXJhdGVkIGVzcGVjaWFsbHkgZm9yIHRoZSB0ZXN0Ci0rcHJvY2Vzcy4gIEluIGEgbmF0aXZlIGNvbmZpZ3VyYXRpb24sIHRoZXNlIHRlc3RzIHNpbXBseSBydW4gdGhlCi0rJ2xvY2FsZWRlZicgY29tbWFuZCBidWlsdCBieSB0aGUgbm9ybWFsIEdMSUJDIGJ1aWxkIHByb2Nlc3MsCi0rJ2xvY2FsZS9sb2NhbGVkZWYnLCB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIHRoZWlyIGxvY2FsZXMuICBIb3dldmVyLCBpbgotK2EgY3Jvc3MtY29tcGlsaW5nIGNvbmZpZ3VyYXRpb24sIHRoaXMgJ2xvY2FsZWRlZicgaXMgYnVpbHQgZm9yIHRoZQotK2hvc3Qgc3lzdGVtLCBub3QgdGhlIGJ1aWxkIHN5c3RlbSwgYW5kIHNpbmNlIGl0IHJlcXVpcmVzIHF1aXRlIGEgYml0Ci0rb2YgbWVtb3J5IHRvIHJ1biAod2UgaGF2ZSBzZWVuIGl0IGZhaWwgb24gc3lzdGVtcyB3aXRoIDY0TWlCIG9mCi0rbWVtb3J5KSwgaXQgbWF5IG5vdCBiZSBwcmFjdGljYWwgdG8gcnVuIGl0IG9uIHRoZSBob3N0IHN5c3RlbS4KLSsKLStJZiBzZXQsIEdMSUJDIHVzZXMgdGhlICdjcm9zcy1sb2NhbGVkZWYnIE1ha2UgdmFyaWFibGUgYXMgdGhlIGNvbW1hbmQKLSt0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbSB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIGxvY2FsZXMuICBUaGUKLStsb2NhbGVkZWYgcHJvZ3JhbSBidWlsdCBmcm9tIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUgaXMKLStzdWl0YWJsZS4KLSsKLStUaGUgdmFsdWUgb2YgJ2Nyb3NzLWxvY2FsZWRlZicgbWF5IGFsc28gaW5jbHVkZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzCi0rdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9ncmFtOyBpZiB5b3UgYXJlIHVzaW5nIEdMSUJDJ3MgJ2xvY2FsZWRlZicsCi0reW91IG1heSBpbmNsdWRlIGVuZGlhbm5lc3MgYW5kICd1aW50MzJfdCcgYWxpZ25tZW50IGFyZ3VtZW50cyBoZXJlLgotKwotKwotK0V4YW1wbGUKLSsKLStJbiBkZXZlbG9waW5nIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBmYWNpbGl0eSwgd2UgaW52b2tlZCAnbWFrZScgd2l0aAotK3RoZSBmb2xsb3dpbmcgc2NyaXB0OgotKwotKyAgICAjIS9iaW4vc2gKLSsKLSsgICAgc3JjZGlyPS4uLgotKyAgICB0ZXN0X2hvc3RuYW1lPS4uLgotKyAgICBsb2NhbGVkZWZkaXI9Li4uCi0rICAgIGNyb3NzX2d4eD0uLi4tZysrCi0rCi0rICAgIHdyYXBwZXI9IiRzcmNkaXIvc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCAkdGVzdF9ob3N0bmFtZSIKLSsgICAgbG9jYWxlZGVmPSIkbG9jYWxlZGVmZGlyL2xvY2FsZWRlZiAtLWxpdHRsZS1lbmRpYW4gLS11aW50MzItYWxpZ249NCIKLSsKLSsgICAgbWFrZSBjcm9zcy10ZXN0LXdyYXBwZXI9IiR3cmFwcGVyIiBcCi0rICAgICAgICAgY3Jvc3MtbG9jYWxlZGVmPSIkbG9jYWxlZGVmIiBcCi0rICAgICAgICAgQ1hYPSIkY3Jvc3NfZ3h4IiBcCi0rICAgICAgICAgIiRAIgotKwotKwotK090aGVyIENyb3NzLVRlc3RpbmcgQ29uY2VybnMKLSsKLStIZXJlIGFyZSBub3RlcyBvbiBzb21lIG90aGVyIGlzc3VlcyB3aGljaCB5b3UgbWF5IGVuY291bnRlciBpbiBydW5uaW5nCi0rdGhlIEdMSUJDIHRlc3RzIGluIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50OgotKwotKy0gU29tZSB0ZXN0cyByZXF1aXJlIGEgQysrIGNyb3NzLWNvbXBpbGVyOyB5b3Ugc2hvdWxkIHNldCB0aGUgJ0NYWCcKLSsgIE1ha2UgdmFyaWFibGUgdG8gdGhlIG5hbWUgb2YgYW4gYXBwcm9wcmlhdGUgY3Jvc3MtY29tcGlsZXIuCi0rCi0rLSBTb21lIHRlc3RzIHJlcXVpcmUgYWNjZXNzIHRvIGxpYnN0ZGMrKy5zby42IGFuZCBsaWJnY2Nfcy5zby4xOyB3ZQotKyAgc2ltcGx5IHBsYWNlIGNvcGllcyBvZiB0aGVzZSBsaWJyYXJpZXMgaW4gdGhlIHRvcCBHTElCQyBidWlsZAotKyAgZGlyZWN0b3J5LgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGIwZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAyMDIzZDg4YzM1NWI4YWY2NDU4YzhlMzljZTM4Yjc1YzFjYTRlYTJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzM6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGltZXpvbmU6IHJlLXdyaXR0ZW4gdHpzZWxlY3QgYXMgcG9zaXggc2gKKworVG8gYXZvaWQgdGhlIGJhc2ggZGVwZW5kZW5jeS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0aW1lem9uZS9NYWtlZmlsZSAgICAgfCAyICstCisgdGltZXpvbmUvdHpzZWxlY3Qua3NoIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGltZXpvbmUvTWFrZWZpbGUgYi90aW1lem9uZS9NYWtlZmlsZQoraW5kZXggNzVmMzhkZjUyNy4uNzRlMWFiN2ZmNyAxMDA2NDQKKy0tLSBhL3RpbWV6b25lL01ha2VmaWxlCisrKysgYi90aW1lem9uZS9NYWtlZmlsZQorQEAgLTEyMiw3ICsxMjIsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQorIAljcCAkPCAkQAorIAorICQob2JqcGZ4KXR6c2VsZWN0OiB0enNlbGVjdC5rc2ggJChjb21tb24tb2JqcGZ4KWNvbmZpZy5tYWtlCistCXNlZCAtZSAnc3wvYmluL2Jhc2h8JChCQVNIKXwnIFwKKysJc2VkIC1lICdzfC9iaW4vYmFzaHwvYmluL3NofCcgXAorIAkgICAgLWUgJ3N8VFpESVI9W159XSp8VFpESVI9JCh6b25lZGlyKXwnIFwKKyAJICAgIC1lICcvVFpWRVJTSU9OPS9zfHNlZV9NYWtlZmlsZXwiJCh2ZXJzaW9uKSJ8JyBcCisgCSAgICAtZSAnL1BLR1ZFUlNJT049L3N8PS4qfD0iJChQS0dWRVJTSU9OKSJ8JyBcCitkaWZmIC0tZ2l0IGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCitpbmRleCAxOGZjZTI3ZTI0Li43MDc0NWY5ZDM2IDEwMDc1NQorLS0tIGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoCisrKysgYi90aW1lem9uZS90enNlbGVjdC5rc2gKK0BAIC0zNCw3ICszNCw3IEBAIFJFUE9SVF9CVUdTX1RPPXR6QGlhbmEub3JnCisgCisgIyBTcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaWYgdGhleSBhcmUgdW5zZXQuCisgOiAke0FXSz1hd2t9CistOiAke1RaRElSPWBwd2RgfQorKzogJHtUWkRJUj0kKHB3ZCl9CisgCisgIyBPdXRwdXQgb25lIGFyZ3VtZW50IGFzLWlzIHRvIHN0YW5kYXJkIG91dHB1dC4KKyAjIFNhZmVyIHRoYW4gJ2VjaG8nLCB3aGljaCBjYW4gbWlzaGFuZGxlICdcJyBvciBsZWFkaW5nICctJy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMxNWE1MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gMDZkYTIwZDlmODk5MDdlNWYyNzc3NTM3MjQ0ZTY1ODljYTNjOTcwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKKworVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KKyh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAoraW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKKy0tLSBhL25zY2QvbnNjZC5pbml0CisrKysgYi9uc2NkL25zY2QuaW5pdAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjCisgIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KKyAjCitAQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKKyBzdGFydCAoKSB7CisgICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKKyAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKKy0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCisgICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAorICAgICBSRVRWQUw9JD8KKyAgICAgZWNobworQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgeworIH0KKyAKKyBzdG9wICgpIHsKKy0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCisgICAgIC91c3Ivc2Jpbi9uc2NkIC1LCisgICAgIFJFVFZBTD0kPworICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgorQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7CisgCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCisgCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKKyAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKKy0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKKysJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCisgICAgIGVsc2UKKy0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKKysJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCisgICAgIGZpCisgICAgIGVjaG8KKyAgICAgcmV0dXJuICRSRVRWQUwKK0BAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KKyAJUkVUVkFMPSQ/CisgCTs7CisgICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKKy0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKKysJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCisgCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKKyAJUkVUVkFMPSQ/CisgCWVjaG8KKyAJOzsKKyAgICAgKikKKy0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgorKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKKyAJUkVUVkFMPTEKKyAJOzsKKyBlc2FjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzMzZGIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLUZyb20gMjg2NGFhYWU5ODRkOTQ1NDQ1ZjNmNzk4NjljNzAzZTBiNzkxZGY4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQ5OjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMjhdIGVnbGliYzogSGVscCBib290c3RyYXAgY3Jvc3MgdG9vbGNoYWluCi0KLVRha2VuIGZyb20gRUdMSUJDLCByMTQ4NCArIHIxNTI1Ci0KLSAgICAgICAgMjAwNy0wMi0yMCAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAgICAgICAgICogTWFrZWZpbGUgKGluc3RhbGwtaGVhZGVycyk6IFByZXNlcnZlIG9sZCBiZWhhdmlvcjogZGVwZW5kIG9uCi0gICAgICAgICAgICAgICAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oIG9ubHkgaWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycwotICAgICAgICAgICAgICAgIGlzIHNldDsgb3RoZXJ3aXNlLCBwbGFjZSBnbnUvc3R1YnMuaCBvbiB0aGUgJ2luc3RhbGwtb3RoZXJzJyBsaXN0LgotCi0gICAgICAgIDIwMDctMDItMTYgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgICAgICAgICAqIE1ha2VmaWxlOiBBbWVuZCBtYWtlIGluc3RhbGwtaGVhZGVycyB0byBpbnN0YWxsIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICAgICBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEgY3Jvc3MtY29tcGlsZXIuICBJbnN0YWxsIGdudS9zdHVicy5oIGFzCi0gICAgICAgICAgICAgICAgcGFydCBvZiAnaW5zdGFsbC1oZWFkZXJzJywgbm90ICdpbnN0YWxsLW90aGVycycuCi0gICAgICAgICAgICAgICAgSWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycyBpcyAneWVzJywgaW5zdGFsbCBhIGR1bW15IGNvcHkgb2YKLSAgICAgICAgICAgICAgICBnbnUvc3R1YnMuaCwgaW5zdGVhZCBvZiBjb21wdXRpbmcgdGhlIHJlYWwgdGhpbmcuCi0gICAgICAgICAgICAgICAgKiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oOiBOZXcgZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KLSBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIHwgMTIgKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDlmYmY3MDUyMDAuLjY0YmZkNDU1YmMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC03MCw5ICs3MCwxOCBAQCBzdWJkaXItZGlycyA9IGluY2x1ZGUKLSB2cGF0aCAlLmggJChzdWJkaXItZGlycykKLSAKLSAjIFdoYXQgdG8gaW5zdGFsbC4KLS1pbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotIGluc3RhbGwtYmluLXNjcmlwdCA9Ci0gCi0rIyBJZiB3ZSdyZSBib290c3RyYXBwaW5nLCBpbnN0YWxsIGEgZHVtbXkgZ251L3N0dWJzLmggYWxvbmcgd2l0aCB0aGUKLSsjIG90aGVyIGhlYWRlcnMsIHNvICdtYWtlIGluc3RhbGwtaGVhZGVycycgcHJvZHVjZXMgYSB1c2VhYmxlIGluY2x1ZGUKLSsjIHRyZWUuICBPdGhlcndpc2UsIGluc3RhbGwgZ251L3N0dWJzLmggbGF0ZXIsIGFmdGVyIHRoZSByZXN0IG9mIHRoZQotKyMgYnVpbGQgaXMgZG9uZS4KLStpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKLStpbnN0YWxsLWhlYWRlcnM6ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotK2Vsc2UKLStpbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotK2VuZGlmCi0rCi0gaWZlcSAoeWVzLCQoYnVpbGQtc2hhcmVkKSkKLSBoZWFkZXJzICs9IGdudS9saWItbmFtZXMuaAotIGVuZGlmCi1AQCAtMTk2LDYgKzIwNSwxNiBAQCBvdGhlcnM6ICQoY29tbW9uLW9ianBmeCl0ZXN0cnVuLnNoCi0gCi0gc3ViZGlyLXN0dWJzIDo9ICQoZm9yZWFjaCBkaXIsJChzdWJkaXJzKSwkKGNvbW1vbi1vYmpwZngpJChkaXIpL3N0dWJzKQotIAotKyMgZ251L3N0dWJzLmggZGVwZW5kcyAodmlhIHRoZSBzdWJkaXIgJ3N0dWJzJyB0YXJnZXRzKSBvbiBhbGwgdGhlIC5vCi0rIyBmaWxlcyBpbiBFR0xJQkMuICBGb3IgYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgYW4gZW1wdHkKLSsjIGdudS9zdHVicy5oIGlzIGdvb2QgZW5vdWdoLgotK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQotKyQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCAkKCtmb3JjZSkKLSsJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCi0rCSQoSU5TVEFMTF9EQVRBKSAkPCAkQAotKwotK2luc3RhbGxlZC1zdHVicyA9Ci0rZWxzZQotIGlmbmRlZiBhYmktdmFyaWFudHMKLSBpbnN0YWxsZWQtc3R1YnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLSBlbHNlCi1AQCAtMjIyLDYgKzI0MSw3IEBAICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogJCgrZm9yY2UpCi0gCi0gaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXI6ICQoaW5zdGFsbGVkLXN0dWJzKQotIGVuZGlmCi0rZW5kaWYKLSAKLSAKLSAjIFNpbmNlIHN0dWJzLmggaXMgbmV2ZXIgbmVlZGVkIHdoZW4gYnVpbGRpbmcgdGhlIGxpYnJhcnksIHdlIHNpbXBsaWZ5IHRoZQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMWQyYjY2OWFmZgotLS0tIC9kZXYvbnVsbAotKysrIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotQEAgLTAsMCArMSwxMiBAQAotKy8qIFBsYWNlaG9sZGVyIHN0dWJzLmggZmlsZSBmb3IgYm9vdHN0cmFwcGluZy4KLSsKLSsgICBXaGVuIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIEdDQyByZXF1aXJlcyB0aGF0IHRoZSBFR0xJQkMKLSsgICBoZWFkZXJzIGJlIGluc3RhbGxlZCwgYnV0IHdlIGNhbid0IGZ1bGx5IGJ1aWxkIEVHTElCQyB3aXRob3V0IHRoYXQKLSsgICBHQ0MuICBTbyB3ZSBydW4gdGhlIGNvbW1hbmQ6Ci0rCi0rICAgICAgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKLSsKLSsgICB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIEdDQyBuZWVkcywgYnV0IGF2b2lkIGJ1aWxkaW5nIGNlcnRhaW4KLSsgICBkaWZmaWN1bHQgaGVhZGVycy4gIFRoZSA8Z251L3N0dWJzLmg+IGhlYWRlciBkZXBlbmRzLCB2aWEgdGhlCi0rICAgRUdMSUJDIHN1YmRpciAnc3R1YnMnIG1ha2UgdGFyZ2V0cywgb24gZXZlcnkgLm8gZmlsZSBpbiBFR0xJQkMsIGJ1dAotKyAgIGFuIGVtcHR5IHN0dWJzLmggbGlrZSB0aGlzIHdpbGwgZG8gZmluZSBmb3IgR0NDLiAgKi8KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NWFkNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIGUyNjY3MDg2YmY5ODRkZTRkM2YxMjI2Yjk0Njc3NjFjZDVhNGMzOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxNTowOSAtMDgwMAotU3ViamVjdDogW1BBVENIIDIwLzI4XSBlZ2xpYmM6IENsZWFyIGNhY2hlIGxpbmVzIG9uIHBwYzh4eAotCi0yMDA3LTA2LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgotICAgICAgICAgICAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotICAgICAgICAoX19saWJjX3N0YXJ0X21haW4pOiBEZXRlY3QgOHh4IHBhcnRzIGFuZCBjbGVhcgotICAgICAgICBfX2NhY2hlX2xpbmVfc2l6ZSBpZiBkZXRlY3RlZC4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi0gICAgICAgIChETF9QTEFURk9STV9BVVhWKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyAgfCAxNCArKysrKysrKysrKysrLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIHwgMTYgKysrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1pbmRleCBiMDRlY2M0YTRjLi43NWJkYTk3MjQxIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotQEAgLTI0LDkgKzI0LDIxIEBAIGludCBfX2NhY2hlX2xpbmVfc2l6ZSBhdHRyaWJ1dGVfaGlkZGVuOwotIC8qIFNjYW4gdGhlIEF1eCBWZWN0b3IgZm9yIHRoZSAiRGF0YSBDYWNoZSBCbG9jayBTaXplIiBlbnRyeS4gIElmIGZvdW5kCi0gICAgdmVyaWZ5IHRoYXQgdGhlIHN0YXRpYyBleHRlcm4gX19jYWNoZV9saW5lX3NpemUgaXMgZGVmaW5lZCBieSBjaGVja2luZwotICAgIGZvciBub3QgTlVMTC4gIElmIGl0IGlzIGRlZmluZWQgdGhlbiBhc3NpZ24gdGhlIGNhY2hlIGJsb2NrIHNpemUKLS0gICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gICovCi0rICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvCi0rICAgb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0byBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoCi0rICAgaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0IGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMKLSsgICBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLCB3aGljaCBpcyBhIHByaXZpbGVnZWQKLSsgICBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIKLSsgICByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAgKi8KLSAjZGVmaW5lIERMX1BMQVRGT1JNX0FVWFYJCQkJCQkgICAgICBcCi0gICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToJCQkJCQkgICAgICBcCi0rCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQkJCQkgICAgICBcCi0rCSAgewkJCQkJCQkJICAgICAgXAotKwkgICAgdW5zaWduZWQgcHZyID0gMDsJCQkJCQkgICAgICBcCi0rCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikpOwkJCQkgICAgICBcCi0rCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCQkJICAgICAgXAotKwkgICAgICBicmVhazsJCQkJCQkJICAgICAgXAotKwkgIH0JCQkJCQkJCSAgICAgIFwKLSAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsJCQkJICAgICAgXAotIAlicmVhazsKLSAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi1pbmRleCA0ZmQ1ZjcwNzAwLi4xYTIxZTQ2NzVjIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi1AQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBfX2NhY2hlX2xpbmVfc2l6ZSB2YXJpYWJsZSBmcm9tIHRoZSBhdXggdmVjdG9yLiAgRm9yIHRoZQotICAgICAgc3RhdGljIGNhc2UsIHdlIGFsc28gbmVlZCBfZGxfaHdjYXAsIF9kbF9od2NhcDIgYW5kIF9kbF9wbGF0Zm9ybSwgc28gd2UKLS0gICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLiAgKi8KLSsgICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLgotKwotKyAgICAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0byBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvCi0rICAgICBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdAotKyAgICAgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cyBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLAotKyAgICAgd2hpY2ggaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIKLSsgICAgIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgKi8KLSAgIGZvciAoRWxmVyAoYXV4dl90KSAqIGF2ID0gYXV4dmVjOyBhdi0+YV90eXBlICE9IEFUX05VTEw7ICsrYXYpCi0gICAgIHN3aXRjaCAoYXYtPmFfdHlwZSkKLSAgICAgICB7Ci0gICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToKLSsJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCi0rCSAgewotKwkgICAgdW5zaWduZWQgcHZyID0gMDsKLSsKLSsJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSA6KTsKLSsJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkKLSsJICAgICAgYnJlYWs7Ci0rCSAgfQotIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwotIAlicmVhazsKLSAjaWZuZGVmIFNIQVJFRAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGE1NTY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKQEAgLTAsMCArMSw2MTYgQEAKK0Zyb20gNTY0MTQ1MmEyNGY3NmM1ZGFmYTM3NDlhNTQyZmNhYzkzZjc3MzkwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCisKK1BvcnRlZCBmcm9tIGVnbGliYworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBHTElCQy5jcm9zcy1idWlsZGluZyB8IDM4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgR0xJQkMuY3Jvc3MtdGVzdGluZyAgfCAyMDUgKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLWJ1aWxkaW5nCisgY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLXRlc3RpbmcKKworZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLWJ1aWxkaW5nIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5lNmUwZGExYWFmCistLS0gL2Rldi9udWxsCisrKysgYi9HTElCQy5jcm9zcy1idWlsZGluZworQEAgLTAsMCArMSwzODMgQEAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQorKworKyAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzLUNvbXBpbGluZyBHTElCQworKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKysKKysKKytJbnRyb2R1Y3Rpb24KKysKKytNb3N0IEdOVSB0b29scyBoYXZlIGEgc2ltcGxlIGJ1aWxkIHByb2NlZHVyZTogeW91IHJ1biB0aGVpcgorKydjb25maWd1cmUnIHNjcmlwdCwgYW5kIHRoZW4geW91IHJ1biAnbWFrZScuICBVbmZvcnR1bmF0ZWx5LCB0aGUKKytwcm9jZXNzIG9mIGNyb3NzLWNvbXBpbGluZyB0aGUgR05VIEMgbGlicmFyeSBpcyBxdWl0ZSBhIGJpdCBtb3JlCisraW52b2x2ZWQ6CisrCisrMSkgQnVpbGQgYSBjcm9zcy1jb21waWxlciwgd2l0aCBjZXJ0YWluIGZhY2lsaXRpZXMgZGlzYWJsZWQuCisrCisrMikgQ29uZmlndXJlIHRoZSBDIGxpYnJhcnkgdXNpbmcgdGhlIGNvbXBpbGVyIHlvdSBidWlsdCBpbiBzdGVwIDEpLgorKyAgIEJ1aWxkIGEgZmV3IG9mIHRoZSBDIHJ1bi10aW1lIG9iamVjdCBmaWxlcywgYnV0IG5vdCB0aGUgcmVzdCBvZiB0aGUKKysgICBsaWJyYXJ5LiAgSW5zdGFsbCB0aGUgbGlicmFyeSdzIGhlYWRlciBmaWxlcyBhbmQgdGhlIHJ1bi10aW1lCisrICAgb2JqZWN0IGZpbGVzLCBhbmQgY3JlYXRlIGEgZHVtbXkgbGliYy5zby4KKysKKyszKSBCdWlsZCBhIHNlY29uZCBjcm9zcy1jb21waWxlciwgdXNpbmcgdGhlIGhlYWRlciBmaWxlcyBhbmQgb2JqZWN0CisrICAgZmlsZXMgeW91IGluc3RhbGxlZCBpbiBzdGVwIDIuCisrCisrNCkgQ29uZmlndXJlLCBidWlsZCwgYW5kIGluc3RhbGwgYSBmcmVzaCBDIGxpYnJhcnksIHVzaW5nIHRoZSBjb21waWxlcgorKyAgIGJ1aWx0IGluIHN0ZXAgMy4KKysKKys1KSBCdWlsZCBhIHRoaXJkIGNyb3NzLWNvbXBpbGVyLCBiYXNlZCBvbiB0aGUgQyBsaWJyYXJ5IGJ1aWx0IGluIHN0ZXAgNC4KKysKKytUaGUgcmVhc29uIGZvciB0aGlzIGNvbXBsZXhpdHkgaXMgdGhhdCwgYWx0aG91Z2ggR0NDIGFuZCB0aGUgR05VIEMKKytsaWJyYXJ5IGFyZSBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5LCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW5kZXBlbmRlbnQKKytvZiBlYWNoIG90aGVyOiBHQ0MgcmVxdWlyZXMgdGhlIEMgbGlicmFyeSdzIGhlYWRlcnMgYW5kIHNvbWUgb2JqZWN0CisrZmlsZXMgdG8gY29tcGlsZSBpdHMgb3duIGxpYnJhcmllcywgd2hpbGUgdGhlIEMgbGlicmFyeSBkZXBlbmRzIG9uCisrR0NDJ3MgbGlicmFyaWVzLiAgR0xJQkMgaW5jbHVkZXMgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcyB0byB0aGUgc3RvY2sKKytHTlUgQyBsaWJyYXJ5IHRoYXQgc2ltcGxpZnkgdGhpcyBwcm9jZXNzLCBidXQgdGhlIGZ1bmRhbWVudGFsCisraW50ZXJkZXBlbmRlbmN5IHN0YW5kcy4KKysKKytJbiB0aGlzIGRvY3VtZW50LCB3ZSBleHBsYWluIGhvdyB0byBjcm9zcy1jb21waWxlIGFuIEdMSUJDL0dDQyBwYWlyCisrZnJvbSBzb3VyY2UuICBPdXIgaW50ZW5kZWQgYXVkaWVuY2UgaXMgZGV2ZWxvcGVycyB3aG8gYXJlIGFscmVhZHkKKytmYW1pbGlhciB3aXRoIHRoZSBHTlUgdG9vbGNoYWluIGFuZCBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKKytjcm9zcy1kZXZlbG9wbWVudCB0b29scy4gIFdoaWxlIHdlIGRvIHByZXNlbnQgYSB3b3JrZWQgZXhhbXBsZSB0bworK2FjY29tcGFueSB0aGUgZXhwbGFuYXRpb24sIGZvciBjbGFyaXR5J3Mgc2FrZSB3ZSBkbyBub3QgY292ZXIgbWFueSBvZgorK3RoZSBvcHRpb25zIGF2YWlsYWJsZSB0byBjcm9zcy10b29sY2hhaW4gdXNlcnMuCisrCisrCisrUHJlcGFyYXRpb24KKysKKytHTElCQyByZXF1aXJlcyByZWNlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVSBiaW51dGlscywgR0NDLCBhbmQgdGhlCisrTGludXgga2VybmVsLiAgVGhlIHdlYiBwYWdlIDxodHRwOi8vd3d3LmVnbGliYy5vcmcvcHJlcmVxdWlzaXRlcz4KKytkb2N1bWVudHMgdGhlIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBhbmQgbGlzdHMgcGF0Y2hlcyBuZWVkZWQgZm9yCisrY2VydGFpbiB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhlc2UgYnVpbGQKKytpbnN0cnVjdGlvbnMgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIGJpbnV0aWxzIDIuMjIuNTEsIEdDQyA0LjYuMiwKKythbmQgTGludXggMy4xLgorKworK0ZpcnN0LCBsZXQncyBzZXQgc29tZSB2YXJpYWJsZXMsIHRvIHNpbXBsaWZ5IGxhdGVyIGNvbW1hbmRzLiAgV2UnbGwKKytidWlsZCBHTElCQyBhbmQgR0NDIGZvciBhbiBBUk0gdGFyZ2V0LCBrbm93biB0byB0aGUgTGludXgga2VybmVsCisrYXMgJ2FybScsIGFuZCB3ZSdsbCBkbyB0aGUgYnVpbGQgb24gYW4gSW50ZWwgeDg2XzY0IExpbnV4IGJveDoKKysKKysgICAgJCBidWlsZD14ODZfNjQtcGMtbGludXgtZ251CisrICAgICQgaG9zdD0kYnVpbGQKKysgICAgJCB0YXJnZXQ9YXJtLW5vbmUtbGludXgtZ251ZWFiaQorKyAgICAkIGxpbnV4X2FyY2g9YXJtCisrCisrV2UncmUgdXNpbmcgdGhlIGFmb3JlbWVudGlvbmVkIHZlcnNpb25zIG9mIEJpbnV0aWxzLCBHQ0MsIGFuZCBMaW51eDoKKysKKysgICAgJCBiaW51dGlsc3Y9YmludXRpbHMtMi4yMi41MQorKyAgICAkIGdjY3Y9Z2NjLTQuNi4yCisrICAgICQgbGludXh2PWxpbnV4LTMuMQorKworK1dlJ3JlIGNhcnJ5aW5nIG91dCB0aGUgZW50aXJlIHByb2Nlc3MgdW5kZXIgJ34vY3Jvc3MtYnVpbGQnLCB3aGljaAorK2NvbnRhaW5zIHVucGFja2VkIHNvdXJjZSB0cmVlcyBmb3IgYmludXRpbHMsIGdjYywgYW5kIGxpbnV4IGtlcm5lbCwKKythbG9uZyB3aXRoIEdMSUJDIHN2biB0cnVuayAod2hpY2ggY2FuIGJlIGNoZWNrZWQtb3V0IHdpdGgKKysnc3ZuIGNvIGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9zdm4vdHJ1bmsgZWdsaWJjJyk6CisrCisrICAgICQgdG9wPSRIT01FL2Nyb3NzLWJ1aWxkLyR0YXJnZXQKKysgICAgJCBzcmM9JEhPTUUvY3Jvc3MtYnVpbGQvc3JjCisrICAgICQgbHMgJHNyYworKyAgICBiaW51dGlscy0yLjIyLjUxICBnbGliYyAgZ2NjLTQuNi4yICBsaW51eC0zLjEKKysKKytXZSdyZSBnb2luZyB0byBwbGFjZSBvdXIgYnVpbGQgZGlyZWN0b3JpZXMgaW4gYSBzdWJkaXJlY3RvcnkgJ29iaicsCisrd2UnbGwgaW5zdGFsbCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGluICd0b29scycsIGFuZCB3ZSdsbAorK3BsYWNlIG91ciBzeXNyb290IChjb250YWluaW5nIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Cisrc3lzdGVtKSBpbiAnc3lzcm9vdCc6CisrCisrICAgICQgb2JqPSR0b3Avb2JqCisrICAgICQgdG9vbHM9JHRvcC90b29scworKyAgICAkIHN5c3Jvb3Q9JHRvcC9zeXNyb290CisrCisrCisrQmludXRpbHMKKysKKytDb25maWd1cmluZyBhbmQgYnVpbGRpbmcgYmludXRpbHMgZm9yIHRoZSB0YXJnZXQgaXMgc3RyYWlnaHRmb3J3YXJkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovYmludXRpbHMKKysgICAgJCBjZCAkb2JqL2JpbnV0aWxzCisrICAgICQgJHNyYy8kYmludXRpbHN2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdAorKyAgICAkIG1ha2UKKysgICAgJCBtYWtlIGluc3RhbGwKKysKKysKKytUaGUgRmlyc3QgR0NDCisrCisrRm9yIG91ciB3b3JrLCB3ZSBuZWVkIGEgY3Jvc3MtY29tcGlsZXIgdGFyZ2V0aW5nIGFuIEFSTSBMaW51eAorK3N5c3RlbS4gIEhvd2V2ZXIsIHRoYXQgY29uZmlndXJhdGlvbiBpbmNsdWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkKKysnbGliZ2NjX3Muc28nLCB3aGljaCBpcyBjb21waWxlZCBhZ2FpbnN0IHRoZSBHTElCQyBoZWFkZXJzICh3aGljaCB3ZQorK2hhdmVuJ3QgaW5zdGFsbGVkIHlldCkgYW5kIGxpbmtlZCBhZ2FpbnN0ICdsaWJjLnNvJyAod2hpY2ggd2UgaGF2ZW4ndAorK2J1aWx0IHlldCkuCisrCisrRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdDQyB3aGljaCB0ZWxsIGl0IG5vdAorK3RvIGJ1aWxkICdsaWJnY2Nfcy5zbycuICBUaGUgJy0td2l0aG91dC1oZWFkZXJzJyBvcHRpb24gaXMgc3VwcG9zZWQgdG8KKyt0YWtlIGNhcmUgb2YgdGhpcywgYnV0IGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBpbmNvbXBsZXRlLCBzbyB5b3UgbXVzdAorK2Fsc28gY29uZmlndXJlIHdpdGggdGhlICctLXdpdGgtbmV3bGliJyBvcHRpb24uICBXaGlsZSAnLS13aXRoLW5ld2xpYicKKythcHBlYXJzIHRvIG1lYW4gIlVzZSB0aGUgTmV3bGliIEMgbGlicmFyeSIsIGl0cyBlZmZlY3QgaXMgdG8gdGVsbCB0aGUKKytHQ0MgYnVpbGQgbWFjaGluZXJ5LCAiRG9uJ3QgYXNzdW1lIHRoZXJlIGlzIGEgQyBsaWJyYXJ5IGF2YWlsYWJsZS4iCisrCisrV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgc29tZSBvZiB0aGUgbGlicmFyaWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUKKytidWlsdCBhbG9uZyB3aXRoIEdDQywgYW5kIHNwZWNpZnkgdGhhdCBvbmx5IHRoZSBjb21waWxlciBmb3IgdGhlIEMKKytsYW5ndWFnZSBpcyBuZWVkZWQuCisrCisrU28sIHdlIGNyZWF0ZSBhIGJ1aWxkIGRpcmVjdG9yeSwgY29uZmlndXJlLCBtYWtlLCBhbmQgaW5zdGFsbC4KKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzEKKysgICAgJCBjZCAkb2JqL2djYzEKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtdGhyZWFkcyAtLWRpc2FibGUtbGlic3NwIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgLS1kaXNhYmxlLWxpYmZmaSBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrCisrTGludXggS2VybmVsIEhlYWRlcnMKKysKKytUbyBjb25maWd1cmUgR0xJQkMsIHdlIGFsc28gbmVlZCBMaW51eCBrZXJuZWwgaGVhZGVycyBpbiBwbGFjZS4KKytGb3J0dW5hdGVseSwgdGhlIExpbnV4IG1ha2VmaWxlcyBoYXZlIGEgdGFyZ2V0IHRoYXQgaW5zdGFsbHMgdGhlbSBmb3IKKyt1cy4gIFNpbmNlIHRoZSBwcm9jZXNzIGRvZXMgbW9kaWZ5IHRoZSBzb3VyY2UgdHJlZSBhIGJpdCwgd2UgbWFrZSBhCisrY29weSBmaXJzdDoKKysKKysgICAgJCBjcCAtciAkc3JjLyRsaW51eHYgJG9iai9saW51eAorKyAgICAkIGNkICRvYmovbGludXgKKysKKytOb3cgd2UncmUgcmVhZHkgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBpbnRvIHRoZSBzeXNyb290OgorKworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBcCisrICAgID4gbWFrZSBoZWFkZXJzX2luc3RhbGwgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysgICAgPiAgICAgIElOU1RBTExfSERSX1BBVEg9JHN5c3Jvb3QvdXNyCisrCisrCisrR0xJQkMgSGVhZGVycyBhbmQgUHJlbGltaW5hcnkgT2JqZWN0cworKworK1VzaW5nIHRoZSBjcm9zcy1jb21waWxlciB3ZSd2ZSBqdXN0IGJ1aWx0LCB3ZSBjYW4gbm93IGNvbmZpZ3VyZSBHTElCQworK3dlbGwgZW5vdWdoIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgYW5kIGJ1aWxkIHRoZSBvYmplY3QgZmlsZXMgdGhhdCB0aGUKKytmdWxsIGNyb3NzLWNvbXBpbGVyIHdpbGwgbmVlZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjLWhlYWRlcnMKKysgICAgJCBjZCAkb2JqL2dsaWJjLWhlYWRlcnMKKysgICAgJCBCVUlMRF9DQz1nY2MgXAorKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAorKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKKysgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAorKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKKysgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCisrICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKKysgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAorKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKKysgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cworKworK1RoZSBvcHRpb24gJy0tcHJlZml4PS91c3InIG1heSBsb29rIHN0cmFuZ2UsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyCisrY29uZmlndXJlIEdMSUJDIHdpdGggYSBwcmVmaXggb3RoZXIgdGhhbiAnL3Vzcic6IGluIHZhcmlvdXMgcGxhY2VzLAorK0dMSUJDJ3MgYnVpbGQgc3lzdGVtIGNoZWNrcyB3aGV0aGVyIHRoZSBwcmVmaXggaXMgJy91c3InLCBhbmQgZG9lcworK3NwZWNpYWwgaGFuZGxpbmcgb25seSBpZiB0aGF0IGlzIHRoZSBjYXNlLiAgVW5sZXNzIHlvdSB1c2UgdGhpcworK3ByZWZpeCwgeW91IHdpbGwgZ2V0IGEgc3lzcm9vdCB0aGF0IGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgTGludXgKKytkaXJlY3RvcnkgbGF5b3V0cyBhbmQgY2Fubm90IGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIHJvb3QKKytmaWxlc3lzdGVtIG9uIHlvdXIgdGFyZ2V0IHN5c3RlbSBjb21wYXRpYmx5IHdpdGggbm9ybWFsIEdMSUJDCisraW5zdGFsbGF0aW9ucy4KKysKKytUaGUgJy0td2l0aC1oZWFkZXJzJyBvcHRpb24gdGVsbHMgR0xJQkMgd2hlcmUgdGhlIExpbnV4IGhlYWRlcnMgaGF2ZQorK2JlZW4gaW5zdGFsbGVkLgorKworK1RoZSAnLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cycgb3B0aW9uIHRlbGxzIEdMSUJDIHRvIGxvb2sKKytmb3IgdGhlIGxpc3RlZCBnbGliYyBhZGQtb25zLiBNb3N0IG5vdGFibHkgdGhlIHBvcnRzIGFkZC1vbiAobG9jYXRlZAorK2p1c3QgYWJvdmUgdGhlIGxpYmMgc291cmNlcyBpbiB0aGUgR0xJQkMgc3ZuIHRyZWUpIGlzIHJlcXVpcmVkIHRvCisrc3VwcG9ydCBBUk0gdGFyZ2V0cy4KKysKKytXZSBjYW4gbm93IHVzZSB0aGUgJ2luc3RhbGwtaGVhZGVycycgbWFrZWZpbGUgdGFyZ2V0IHRvIGluc3RhbGwgdGhlCisraGVhZGVyczoKKysKKysgICAgJCBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrVGhlICdpbnN0YWxsX3Jvb3QnIHZhcmlhYmxlIGluZGljYXRlcyB3aGVyZSB0aGUgZmlsZXMgc2hvdWxkIGFjdHVhbGx5CisrYmUgaW5zdGFsbGVkOyBpdHMgdmFsdWUgaXMgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIHRoZSAnLS1wcmVmaXgnCisrZGlyZWN0b3J5IHdlIHBhc3NlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCwgc28gdGhlIGhlYWRlcnMgd2lsbCBnbyBpbgorKyckc3lzcm9vdC91c3IvaW5jbHVkZScuICBUaGUgJ2luc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMnIHZhcmlhYmxlCisrcmVxdWVzdHMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY2VydGFpbiB0cmlja3kgaGVhZGVyIGZpbGVzLgorKworK05leHQsIHRoZXJlIGFyZSBhIGZldyBvYmplY3QgZmlsZXMgbmVlZGVkIHRvIGxpbmsgc2hhcmVkIGxpYnJhcmllcywKKyt3aGljaCB3ZSBidWlsZCBhbmQgaW5zdGFsbCBieSBoYW5kOgorKworKyAgICAkIG1rZGlyIC1wICRzeXNyb290L3Vzci9saWIKKysgICAgJCBtYWtlIGNzdS9zdWJkaXJfbGliCisrICAgICQgY3AgY3N1L2NydDEubyBjc3UvY3J0aS5vIGNzdS9jcnRuLm8gJHN5c3Jvb3QvdXNyL2xpYgorKworK0ZpbmFsbHksICdsaWJnY2Nfcy5zbycgcmVxdWlyZXMgYSAnbGliYy5zbycgdG8gbGluayBhZ2FpbnN0LiAgSG93ZXZlciwKKytzaW5jZSB3ZSB3aWxsIG5ldmVyIGFjdHVhbGx5IGV4ZWN1dGUgaXRzIGNvZGUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQKKytpdCBjb250YWlucy4gIFNvLCB0cmVhdGluZyAnL2Rldi9udWxsJyBhcyBhIEMgc291cmNlIGZpbGUsIHdlIHByb2R1Y2UKKythIGR1bW15ICdsaWJjLnNvJyBpbiBvbmUgc3RlcDoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1zaGFyZWQgLXggYyAvZGV2L251bGwgXAorKyAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgLW8gJHN5c3Jvb3QvdXNyL2xpYi9saWJjLnNvCisrCisrCisrVGhlIFNlY29uZCBHQ0MKKysKKytXaXRoIHRoZSBHTElCQyBoZWFkZXJzIGFuZCBzZWxlY3RlZCBvYmplY3QgZmlsZXMgaW5zdGFsbGVkLCB3ZSBjYW4KKytub3cgYnVpbGQgYSBHQ0MgdGhhdCBpcyBjYXBhYmxlIG9mIGNvbXBpbGluZyBHTElCQy4gIFdlIGNvbmZpZ3VyZSwKKytidWlsZCwgYW5kIGluc3RhbGwgdGhlIHNlY29uZCBHQ0MsIGFnYWluIGJ1aWxkaW5nIG9ubHkgdGhlIEMgY29tcGlsZXIsCisrYW5kIGF2b2lkaW5nIGxpYnJhcmllcyB3ZSB3b24ndCB1c2U6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MyCisrICAgICQgY2QgJG9iai9nY2MyCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYmZmaSAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAorKworKworK0dMSUJDLCBDb21wbGV0ZQorKworK1dpdGggdGhlIHNlY29uZCBjb21waWxlciBidWlsdCBhbmQgaW5zdGFsbGVkLCB3ZSdyZSBub3cgcmVhZHkgZm9yIHRoZQorK2Z1bGwgR0xJQkMgYnVpbGQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nbGliYworKyAgICAkIGNkICRvYmovZ2xpYmMKKysgICAgJCBCVUlMRF9DQz1nY2MgXAorKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAorKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKKysgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAorKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKKysgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCisrICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKKysgICAgPiAgICAgLS13aXRoLWtjb25maWc9JG9iai9saW51eC9zY3JpcHRzL2tjb25maWcgXAorKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCisrICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAorKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCisrCisrTm90ZSB0aGUgYWRkaXRpb25hbCAnLS13aXRoLWtjb25maWcnIG9wdGlvbi4gVGhpcyB0ZWxscyBHTElCQyB3aGVyZSB0bworK2ZpbmQgdGhlIGhvc3QgY29uZmlnIHRvb2xzIHVzZWQgYnkgdGhlIGtlcm5lbCAnbWFrZSBjb25maWcnIGFuZCAnbWFrZQorK21lbnVjb25maWcnLiAgVGhlc2UgdG9vbHMgY2FuIGJlIHJlLXVzZWQgYnkgR0xJQkMgZm9yIGl0cyBvd24gJ21ha2UKKysqY29uZmlnJyBzdXBwb3J0LCB3aGljaCB3aWxsIGNyZWF0ZSAnb3B0aW9uLWdyb3Vwcy5jb25maWcnIGZvciB5b3UuCisrQnV0IGZpcnN0IG1ha2Ugc3VyZSB0aG9zZSB0b29scyBoYXZlIGJlZW4gYnVpbHQgYnkgcnVubmluZyBzb21lCisrZHVtbXkgJ21ha2UgKmNvbmZpZycgY2FsbHMgaW4gdGhlIGtlcm5lbCBkaXJlY3Rvcnk6CisrCisrICAgICQgY2QgJG9iai9saW51eAorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGNvbmZpZyBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysKKytOb3cgd2UgY2FuIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGZ1bGwgR0xJQkM6CisrCisrICAgICQgY2QgJG9iai9nbGliYworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGRlZmNvbmZpZworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwgaW5zdGFsbF9yb290PSRzeXNyb290CisrCisrQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIGNvbXBsZXRlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnLAorK3dpdGggaGVhZGVyIGZpbGVzLCBsaWJyYXJ5IGZpbGVzLCBhbmQgbW9zdCBvZiB0aGUgQyBydW50aW1lIHN0YXJ0dXAKKytmaWxlcyBpbiBwbGFjZS4KKysKKysKKytUaGUgVGhpcmQgR0NDCisrCisrRmluYWxseSwgd2UgcmVjb21waWxlIEdDQyBhZ2FpbnN0IHRoaXMgZnVsbCBpbnN0YWxsYXRpb24sIGVuYWJsaW5nCisrd2hhdGV2ZXIgbGFuZ3VhZ2VzIGFuZCBsaWJyYXJpZXMgd2Ugd291bGQgbGlrZSB0byB1c2U6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MzCisrICAgICQgY2QgJG9iai9nY2MzCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrVGhlICctLWVuYWJsZS1fX2N4YV9hdGV4aXQnIG9wdGlvbiB0ZWxscyBHQ0Mgd2hhdCBzb3J0IG9mIEMrKworK2Rlc3RydWN0b3Igc3VwcG9ydCB0byBleHBlY3QgZnJvbSB0aGUgQyBsaWJyYXJ5OyBpdCdzIHJlcXVpcmVkIHdpdGgKKytHTElCQy4KKysKKytBbmQgc2luY2UgR0NDJ3MgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXNuJ3QgZGVzaWduZWQgdG8gaGVscCBjb25zdHJ1Y3QKKytzeXNyb290IHRyZWVzLCB3ZSBtdXN0IG1hbnVhbGx5IGNvcHkgY2VydGFpbiBsaWJyYXJpZXMgaW50byBwbGFjZSBpbgorK3RoZSBzeXNyb290LgorKworKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJnY2Nfcy5zbyogJHN5c3Jvb3QvbGliCisrICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYnN0ZGMrKy5zbyogJHN5c3Jvb3QvdXNyL2xpYgorKworKworK1RyeWluZyBUaGluZ3MgT3V0CisrCisrQXQgdGhpcyBwb2ludCwgJyR0b29scycgY29udGFpbnMgYSBjcm9zcyB0b29sY2hhaW4gcmVhZHkgdG8gdXNlCisrdGhlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnOgorKworKyAgICAkIGNhdCA+IGhlbGxvLmMgPDxFT0YKKysgICAgPiAjaW5jbHVkZSA8c3RkaW8uaD4KKysgICAgPiBpbnQKKysgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrICAgID4geworKyAgICA+ICAgcHV0cyAoIkhlbGxvLCB3b3JsZCEiKTsKKysgICAgPiAgIHJldHVybiAwOworKyAgICA+IH0KKysgICAgPiBFT0YKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1XYWxsIGhlbGxvLmMgLW8gaGVsbG8KKysgICAgJCBjYXQgPiBjKystaGVsbG8uY2MgPDxFT0YKKysgICAgPiAjaW5jbHVkZSA8aW9zdHJlYW0+CisrICAgID4gaW50CisrICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorKyAgICA+IHsKKysgICAgPiAgIHN0ZDo6Y291dCA8PCAiSGVsbG8sIEMrKyB3b3JsZCEiIDw8IHN0ZDo6ZW5kbDsKKysgICAgPiAgIHJldHVybiAwOworKyAgICA+IH0KKysgICAgPiBFT0YKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZysrIC1XYWxsIGMrKy1oZWxsby5jYyAtbyBjKystaGVsbG8KKysKKysKKytXZSBjYW4gdXNlICdyZWFkZWxmJyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgaW5kZWVkIGV4ZWN1dGFibGVzIGZvcgorK291ciB0YXJnZXQsIHVzaW5nIG91ciBkeW5hbWljIGxpbmtlcjoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtaGwgaGVsbG8KKysgICAgRUxGIEhlYWRlcjoKKysgICAgLi4uCisrICAgICAgVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEVDIChFeGVjdXRhYmxlIGZpbGUpCisrICAgICAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICBBUk0KKysKKysgICAgLi4uCisrICAgIFByb2dyYW0gSGVhZGVyczoKKysgICAgICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgorKyAgICAgIFBIRFIgICAgICAgICAgIDB4MDAwMDM0IDB4MTAwMDAwMzQgMHgxMDAwMDAzNCAweDAwMTAwIDB4MDAxMDAgUiBFIDB4NAorKyAgICAgIElOVEVSUCAgICAgICAgIDB4MDAwMTM0IDB4MDAwMDgxMzQgMHgwMDAwODEzNCAweDAwMDEzIDB4MDAwMTMgUiAgIDB4MQorKyAgICAgICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjNdCisrICAgICAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAgMHgwMDAwODAwMCAweDAwMDA4MDAwIDB4MDA0MmMgMHgwMDQyYyBSIEUgMHg4MDAwCisrICAgIC4uLgorKworK0xvb2tpbmcgYXQgdGhlIGR5bmFtaWMgc2VjdGlvbiBvZiB0aGUgaW5zdGFsbGVkICdsaWJnY2Nfcy5zbycsIHdlIHNlZQorK3RoYXQgdGhlICdORUVERUQnIGVudHJ5IGZvciB0aGUgQyBsaWJyYXJ5IGRvZXMgaW5jbHVkZSB0aGUgJy42JworK3N1ZmZpeCwgaW5kaWNhdGluZyB0aGF0IHdhcyBsaW5rZWQgYWdhaW5zdCBvdXIgZnVsbHkgYnVpbGQgR0xJQkMsIGFuZAorK25vdCBvdXIgZHVtbXkgJ2xpYmMuc28nOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1kICRzeXNyb290L2xpYi9saWJnY2Nfcy5zby4xCisrICAgIER5bmFtaWMgc2VjdGlvbiBhdCBvZmZzZXQgMHgxMDgzYyBjb250YWlucyAyNCBlbnRyaWVzOgorKyAgICAgIFRhZyAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lL1ZhbHVlCisrICAgICAweDAwMDAwMDAxIChORUVERUQpICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIGxpYnJhcnk6IFtsaWJjLnNvLjZdCisrICAgICAweDAwMDAwMDBlIChTT05BTUUpICAgICAgICAgICAgICAgICAgICAgTGlicmFyeSBzb25hbWU6IFtsaWJnY2Nfcy5zby4xXQorKyAgICAuLi4KKysKKysKKytBbmQgb24gdGhlIHRhcmdldCBtYWNoaW5lLCB3ZSBjYW4gcnVuIG91ciBwcm9ncmFtczoKKysKKysgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCisrICAgID4gLi9oZWxsbworKyAgICBIZWxsbywgd29ybGQhCisrICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAorKyAgICA+IC4vYysrLWhlbGxvCisrICAgIEhlbGxvLCBDKysgd29ybGQhCitkaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtdGVzdGluZyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iNjdiNDY4NDY2CistLS0gL2Rldi9udWxsCisrKysgYi9HTElCQy5jcm9zcy10ZXN0aW5nCitAQCAtMCwwICsxLDIwNSBAQAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCisrCisrICAgICAgICAgICAgICAgICAgICAgIENyb3NzLVRlc3RpbmcgV2l0aCBHTElCQworKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKysKKysKKytJbnRyb2R1Y3Rpb24KKysKKytEZXZlbG9wZXJzIHdyaXRpbmcgc29mdHdhcmUgZm9yIGVtYmVkZGVkIHN5c3RlbXMgb2Z0ZW4gdXNlIGEgZGVza3RvcAorK29yIG90aGVyIHNpbWlsYXJseSBjYXBhYmxlIGNvbXB1dGVyIGZvciBkZXZlbG9wbWVudCwgYnV0IG5lZWQgdG8gcnVuCisrdGVzdHMgb24gdGhlIGVtYmVkZGVkIHN5c3RlbSwgb3IgcGVyaGFwcyBvbiBhIHNpbXVsYXRvci4gIFdoZW4KKytjb25maWd1cmVkIGZvciBjcm9zcy1jb21waWxhdGlvbiwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgc2ltcGx5CisrZGlzYWJsZXMgcnVubmluZyB0ZXN0cyBhbHRvZ2V0aGVyOiB0aGUgY29tbWFuZCAnbWFrZSB0ZXN0cycgYnVpbGRzCisrdGVzdCBwcm9ncmFtcywgYnV0IGRvZXMgbm90IHJ1biB0aGVtLiAgR0xJQkMsIGhvd2V2ZXIsIHByb3ZpZGVzCisrZmFjaWxpdGllcyBmb3IgY29tcGlsaW5nIHRlc3RzIGFuZCBnZW5lcmF0aW5nIGRhdGEgZmlsZXMgb24gdGhlIGJ1aWxkCisrc3lzdGVtLCBidXQgcnVubmluZyB0aGUgdGVzdCBwcm9ncmFtcyB0aGVtc2VsdmVzIG9uIGEgcmVtb3RlIHN5c3RlbSBvcgorK3NpbXVsYXRvci4KKysKKysKKytUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50cworKworK1RoZSB0ZXN0IGVudmlyb25tZW50IG11c3QgbWVldCBjZXJ0YWluIGNvbmRpdGlvbnMgZm9yIEdMSUJDJ3MKKytjcm9zcy10ZXN0aW5nIGZhY2lsaXRpZXMgdG8gd29yazoKKysKKystIFNoYXJlZCBmaWxlc3lzdGVtcy4gIFRoZSAnYnVpbGQnIHN5c3RlbSwgb24gd2hpY2ggeW91IGNvbmZpZ3VyZSBhbmQKKysgIGNvbXBpbGUgR0xJQkMsIGFuZCB0aGUgJ2hvc3QnIHN5c3RlbSwgb24gd2hpY2ggeW91IGludGVuZCB0byBydW4KKysgIEdMSUJDLCBtdXN0IHNoYXJlIGEgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBHTElCQyBidWlsZCBhbmQKKysgIHNvdXJjZSB0cmVlcy4gIEZpbGVzIG11c3QgYXBwZWFyIGF0IHRoZSBzYW1lIHBhdGhzIG9uIGJvdGggc3lzdGVtcy4KKysKKystIFJlbW90ZS1zaGVsbCBsaWtlIGludm9jYXRpb24uICBUaGVyZSBtdXN0IGJlIGEgd2F5IHRvIHJ1biBhIHByb2dyYW0KKysgIG9uIHRoZSBob3N0IHN5c3RlbSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0sIHBhc3NpbmcgaXQgcHJvcGVybHkgcXVvdGVkCisrICBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kCisrICBpbmhlcml0aW5nIHRoZSBjYWxsZXIncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgorKworKworK1VzYWdlCisrCisrVG8gdXNlIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBzdXBwb3J0LCBwcm92aWRlIHZhbHVlcyBmb3IgdGhlCisrZm9sbG93aW5nIE1ha2UgdmFyaWFibGVzIHdoZW4geW91IGludm9rZSAnbWFrZSc6CisrCisrLSBjcm9zcy10ZXN0LXdyYXBwZXIKKysKKysgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIgY29tbWFuZCwgYWxvbmcKKysgIHdpdGggYW55IGFyZ3VtZW50cy4KKysKKystIGNyb3NzLWxvY2FsZWRlZgorKworKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBjcm9zcy1jYXBhYmxlIGxvY2FsZWRlZiBwcm9ncmFtLCBsaWtlCisrICB0aGF0IGluY2x1ZGVkIGluIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUsIGFsb25nIHdpdGggYW55CisrICBhcmd1bWVudHMgbmVlZGVkLgorKworK1RoZXNlIGFyZSBlYWNoIGV4cGxhaW5lZCBpbiBkZXRhaWwgYmVsb3cuCisrCisrCisrVGhlIENyb3NzLVRlc3RpbmcgV3JhcHBlcgorKworK1RvIHJ1biB0ZXN0IHByb2dyYW1zIHJlbGlhYmx5LCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSB0YWtlcyBjYXJlIHRvCisrZW5zdXJlIHRoYXQgdGVzdCBwcm9ncmFtcyB1c2UgdGhlIG5ld2x5IGNvbXBpbGVkIGR5bmFtaWMgbGlua2VyIGFuZAorK3NoYXJlZCBsaWJyYXJpZXMsIGFuZCBuZXZlciB0aGUgaG9zdCBzeXN0ZW0ncyBpbnN0YWxsZWQgbGlicmFyaWVzLiAgVG8KKythY2NvbXBsaXNoIHRoaXMsIGl0IHJ1bnMgdGhlIHRlc3RzIGJ5IGV4cGxpY2l0bHkgaW52b2tpbmcgdGhlIGR5bmFtaWMKKytsaW5rZXIgZnJvbSB0aGUgYnVpbGQgdHJlZSwgcGFzc2luZyBpdCBhIGxpc3Qgb2YgYnVpbGQgdHJlZQorK2RpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3Igc2hhcmVkIGxpYnJhcmllcywgZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YKKyt0aGUgZXhlY3V0YWJsZSB0byBydW4gYW5kIGl0cyBhcmd1bWVudHMuCisrCisrRm9yIGV4YW1wbGUsIHdoZXJlIG9uZSBtaWdodCBub3JtYWxseSBydW4gYSB0ZXN0IHByb2dyYW0gbGlrZSB0aGlzOgorKworKyAgICAkIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKyt0aGUgR05VIEMgbGlicmFyeSBtaWdodCBydW4gdGhhdCBwcm9ncmFtIGxpa2UgdGhpczoKKysKKysgICAgJCAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysod2hlcmUgJG9iamRpciBpcyB0aGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBidWlsZCB0cmVlLCBhbmQgdGhlCisrdHJhaWxpbmcgYmFja3NsYXNoIGluZGljYXRlcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgY29tbWFuZCkuICBJbiBvdGhlcgorK3dvcmRzLCBlYWNoIHRlc3QgcHJvZ3JhbSBpbnZvY2F0aW9uIGlzICd3cmFwcGVkIHVwJyBpbnNpZGUgYW4gZXhwbGljaXQKKytpbnZvY2F0aW9uIG9mIHRoZSBkeW5hbWljIGxpbmtlciwgd2hpY2ggbXVzdCBpdHNlbGYgZXhlY3V0ZSB0aGUgdGVzdAorK3Byb2dyYW0sIGhhdmluZyBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQorK2RpcmVjdG9yaWVzLgorKworK1RvIHN1cHBvcnQgY3Jvc3MtdGVzdGluZywgR0xJQkMgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gb3B0aW9uYWxseQorK3NldCB0aGUgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgTWFrZSB2YXJpYWJsZSB0byBhbm90aGVyIHdyYXBwZXIgY29tbWFuZCwKKyt0byB3aGljaCBpdCBwYXNzZXMgdGhlIGVudGlyZSBkeW5hbWljIGxpbmtlciBpbnZvY2F0aW9uIHNob3duIGFib3ZlIGFzCisrYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBkZXZlbG9wZXIgc3VwcGxpZXMgYSB3cmFwcGVyIG9mCisrJ215LXdyYXBwZXIgaG9zdG5hbWUnLCB0aGVuIEdMSUJDIHdvdWxkIHJ1biB0aGUgdGVzdCBhYm92ZSBhcworK2ZvbGxvd3M6CisrCisrICAgICQgbXktd3JhcHBlciBob3N0bmFtZSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrVGhlICdteS13cmFwcGVyJyBjb21tYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgdGhlIGNvbW1hbmQKKytnaXZlbiBvbiB0aGUgaG9zdCBzeXN0ZW0uCisrCisrU2luY2UgdGVzdHMgYXJlIHJ1biBpbiB2YXJ5aW5nIGRpcmVjdG9yaWVzLCB0aGUgd3JhcHBlciBzaG91bGQgZWl0aGVyCisrYmUgaW4geW91ciBjb21tYW5kIHNlYXJjaCBwYXRoLCBvciAnY3Jvc3MtdGVzdC13cmFwcGVyJyBzaG91bGQgZ2l2ZSBhbgorK2Fic29sdXRlIHBhdGggZm9yIHRoZSB3cmFwcGVyLgorKworK1RoZSB3cmFwcGVyIG11c3QgbWVldCBzZXZlcmFsIHJlcXVpcmVtZW50czoKKysKKystIEl0IG11c3QgcHJlc2VydmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUKKysgIGJ1aWxkIGRpcmVjdG9yeSB0cmVlIG11c3QgYmUgdmlzaWJsZSBvbiBib3RoIHRoZSBidWlsZCBhbmQgaG9zdAorKyAgc3lzdGVtcywgYXQgdGhlIHNhbWUgcGF0aC4gIFRoZSB0ZXN0IHdyYXBwZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUKKysgIGN1cnJlbnQgZGlyZWN0b3J5IGl0IGluaGVyaXRzIGlzIGFsc28gaW5oZXJpdGVkIGJ5IHRoZSBkeW5hbWljCisrICBsaW5rZXIgKGFuZCB0aHVzIHRoZSB0ZXN0IHByb2dyYW0gaXRzZWxmKS4KKysKKystIEl0IG11c3QgcHJlc2VydmUgZW52aXJvbm1lbnQgdmFyaWFibGVzJyB2YWx1ZXMuICBNYW55IEdMSUJDIHRlc3RzCisrICBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHJ1bnM7IGluIG5hdGl2ZSB0ZXN0aW5nLCBpdAorKyAgaW52b2tlcyBwcm9ncmFtcyBsaWtlIHRoaXM6CisrCisrICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrICBXaXRoIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIsIHRoYXQgaW52b2NhdGlvbiBiZWNvbWVzOgorKworKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAorKyAgICAgIG15LXdyYXBwZXIgaG9zdG5hbWUgXAorKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyAgSGVyZSwgJ215LXdyYXBwZXInIG11c3QgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGl0IHNlZXMgZm9yCisrICAnR0NPTlZfUEFUSCcgd2lsbCBiZSBzZWVuIGJ5IHRoZSBkeW5hbWljIGxpbmtlciwgYW5kIHRodXMgJ3RzdC1mb28nCisrICBpdHNlbGYuICAoVGhlIHdyYXBwZXIgc3VwcGxpZWQgd2l0aCBHTElCQyBzaW1wbHkgcHJlc2VydmVzIHRoZQorKyAgdmFsdWVzIG9mICphbGwqIGVudmlyb21lbnQgdmFyaWFibGVzLCB3aXRoIGEgZml4ZWQgc2V0IG9mCisrICBleGNlcHRpb25zLikKKysKKysgIElmIHlvdXIgd3JhcHBlciBpcyBhIHNoZWxsIHNjcmlwdCwgdGFrZSBjYXJlIHRvIGNvcnJlY3RseSBwcm9wYWdhdGUKKysgIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgY29udGFpbiBzcGFjZXMgYW5kIHNoZWxsCisrICBtZXRhY2hhcmFjdGVycy4KKysKKystIEl0IG11c3QgcGFzcyB0aGUgY29tbWFuZCdzIGFyZ3VtZW50cywgdW5tb2RpZmllZC4gIFRoZSBhcmd1bWVudHMKKysgIHNlZW4gYnkgdGhlIHRlc3QgcHJvZ3JhbSBzaG91bGQgYmUgZXhhY3RseSB0aG9zZSBzZWVuIGJ5IHRoZSB3cmFwcGVyCisrICAoYWZ0ZXIgd2hhdGV2ZXIgYXJndW1lbnRzIGFyZSBnaXZlbiB0byB0aGUgd3JhcHBlciBpdHNlbGYpLiAgVGhlCisrICBHTElCQyB0ZXN0IGZyYW1ld29yayBwZXJmb3JtcyBhbGwgbmVlZGVkIHNoZWxsIHdvcmQgc3BsaXR0aW5nIGFuZAorKyAgZXhwYW5zaW9uICh3aWxkY2FyZCBleHBhbnNpb24sIHBhcmFtZXRlciBzdWJzdGl0dXRpb24sIGFuZCBzbyBvbikKKysgIGJlZm9yZSBpbnZva2luZyB0aGUgd3JhcHBlcjsgZnVydGhlciBleHBhbnNpb24gbWF5IGJyZWFrIHRoZSB0ZXN0cy4KKysKKysKKytUaGUgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyBzY3JpcHQKKysKKytJZiB5b3Ugd2FudCB0byB1c2UgJ3NzaCcgKG9yIHNvbWV0aGluZyBzdWZmaWNpZW50bHkgc2ltaWxhcikgdG8gcnVuCisrdGVzdCBwcm9ncmFtcyBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBHTElCQyBpbmNsdWRlcyBhIHNoZWxsIHNjcmlwdCwKKysnc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCcsIHdoaWNoIHlvdSBjYW4gdXNlIGFzIHlvdXIgd3JhcHBlcgorK2NvbW1hbmQuICBUaGlzIHNjcmlwdCB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhlIHRlc3QgY29tbWFuZCdzIGN1cnJlbnQKKytkaXJlY3RvcnksIHByb3BhZ2F0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcywgYW5kIGNhcnJ5aW5nCisrY29tbWFuZC1saW5lIGFyZ3VtZW50cywgYWxsIGFjcm9zcyBhbiAnc3NoJyBjb25uZWN0aW9uLiAgWW91IG1heSBldmVuCisrc3VwcGx5IGFuIGFsdGVybmF0aXZlIHRvICdzc2gnIG9uIHRoZSBjb21tYW5kIGxpbmUsIGlmIG5lZWRlZC4KKysKKytGb3IgbW9yZSBkZXRhaWxzLCBwYXNzICdjcm9zcy10ZXN0LXNzaC5zaCcgdGhlICctLWhlbHAnIG9wdGlvbi4KKysKKysKKytUaGUgQ3Jvc3MtQ29tcGlsaW5nIExvY2FsZSBEZWZpbml0aW9uIENvbW1hbmQKKysKKytTb21lIEdMSUJDIHRlc3RzIHJlbHkgb24gbG9jYWxlcyBnZW5lcmF0ZWQgZXNwZWNpYWxseSBmb3IgdGhlIHRlc3QKKytwcm9jZXNzLiAgSW4gYSBuYXRpdmUgY29uZmlndXJhdGlvbiwgdGhlc2UgdGVzdHMgc2ltcGx5IHJ1biB0aGUKKysnbG9jYWxlZGVmJyBjb21tYW5kIGJ1aWx0IGJ5IHRoZSBub3JtYWwgR0xJQkMgYnVpbGQgcHJvY2VzcywKKysnbG9jYWxlL2xvY2FsZWRlZicsIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlaXIgbG9jYWxlcy4gIEhvd2V2ZXIsIGluCisrYSBjcm9zcy1jb21waWxpbmcgY29uZmlndXJhdGlvbiwgdGhpcyAnbG9jYWxlZGVmJyBpcyBidWlsdCBmb3IgdGhlCisraG9zdCBzeXN0ZW0sIG5vdCB0aGUgYnVpbGQgc3lzdGVtLCBhbmQgc2luY2UgaXQgcmVxdWlyZXMgcXVpdGUgYSBiaXQKKytvZiBtZW1vcnkgdG8gcnVuICh3ZSBoYXZlIHNlZW4gaXQgZmFpbCBvbiBzeXN0ZW1zIHdpdGggNjRNaUIgb2YKKyttZW1vcnkpLCBpdCBtYXkgbm90IGJlIHByYWN0aWNhbCB0byBydW4gaXQgb24gdGhlIGhvc3Qgc3lzdGVtLgorKworK0lmIHNldCwgR0xJQkMgdXNlcyB0aGUgJ2Nyb3NzLWxvY2FsZWRlZicgTWFrZSB2YXJpYWJsZSBhcyB0aGUgY29tbWFuZAorK3RvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgbG9jYWxlcy4gIFRoZQorK2xvY2FsZWRlZiBwcm9ncmFtIGJ1aWx0IGZyb20gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSBpcworK3N1aXRhYmxlLgorKworK1RoZSB2YWx1ZSBvZiAnY3Jvc3MtbG9jYWxlZGVmJyBtYXkgYWxzbyBpbmNsdWRlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKKyt0byBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW07IGlmIHlvdSBhcmUgdXNpbmcgR0xJQkMncyAnbG9jYWxlZGVmJywKKyt5b3UgbWF5IGluY2x1ZGUgZW5kaWFubmVzcyBhbmQgJ3VpbnQzMl90JyBhbGlnbm1lbnQgYXJndW1lbnRzIGhlcmUuCisrCisrCisrRXhhbXBsZQorKworK0luIGRldmVsb3BpbmcgR0xJQkMncyBjcm9zcy10ZXN0aW5nIGZhY2lsaXR5LCB3ZSBpbnZva2VkICdtYWtlJyB3aXRoCisrdGhlIGZvbGxvd2luZyBzY3JpcHQ6CisrCisrICAgICMhL2Jpbi9zaAorKworKyAgICBzcmNkaXI9Li4uCisrICAgIHRlc3RfaG9zdG5hbWU9Li4uCisrICAgIGxvY2FsZWRlZmRpcj0uLi4KKysgICAgY3Jvc3NfZ3h4PS4uLi1nKysKKysKKysgICAgd3JhcHBlcj0iJHNyY2Rpci9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoICR0ZXN0X2hvc3RuYW1lIgorKyAgICBsb2NhbGVkZWY9IiRsb2NhbGVkZWZkaXIvbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgorKworKyAgICBtYWtlIGNyb3NzLXRlc3Qtd3JhcHBlcj0iJHdyYXBwZXIiIFwKKysgICAgICAgICBjcm9zcy1sb2NhbGVkZWY9IiRsb2NhbGVkZWYiIFwKKysgICAgICAgICBDWFg9IiRjcm9zc19neHgiIFwKKysgICAgICAgICAiJEAiCisrCisrCisrT3RoZXIgQ3Jvc3MtVGVzdGluZyBDb25jZXJucworKworK0hlcmUgYXJlIG5vdGVzIG9uIHNvbWUgb3RoZXIgaXNzdWVzIHdoaWNoIHlvdSBtYXkgZW5jb3VudGVyIGluIHJ1bm5pbmcKKyt0aGUgR0xJQkMgdGVzdHMgaW4gYSBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnQ6CisrCisrLSBTb21lIHRlc3RzIHJlcXVpcmUgYSBDKysgY3Jvc3MtY29tcGlsZXI7IHlvdSBzaG91bGQgc2V0IHRoZSAnQ1hYJworKyAgTWFrZSB2YXJpYWJsZSB0byB0aGUgbmFtZSBvZiBhbiBhcHByb3ByaWF0ZSBjcm9zcy1jb21waWxlci4KKysKKystIFNvbWUgdGVzdHMgcmVxdWlyZSBhY2Nlc3MgdG8gbGlic3RkYysrLnNvLjYgYW5kIGxpYmdjY19zLnNvLjE7IHdlCisrICBzaW1wbHkgcGxhY2UgY29waWVzIG9mIHRoZXNlIGxpYnJhcmllcyBpbiB0aGUgdG9wIEdMSUJDIGJ1aWxkCisrICBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNzRlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApAQCAtMCwwICsxLDk3IEBACitGcm9tIDZhMzJkNWJmNDBkZWVlNWQxMmQyNGMwNmYzZWE5YjU0NzljMTY4MDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgorCitUYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQorCisgICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKKyAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KKworICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcworICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgorICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCisgICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgorICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCisgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA4ZjBhOTNhY2ViLi44ZWJhMjNhODY4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzksOSArNzksMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCisgdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCisgCisgIyBXaGF0IHRvIGluc3RhbGwuCistaW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKyBpbnN0YWxsLWJpbi1zY3JpcHQgPQorIAorKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCisrIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCisrIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKKysjIGJ1aWxkIGlzIGRvbmUuCisraWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCisraW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbHNlCisraW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbmRpZgorKworIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCisgaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKKyBlbmRpZgorQEAgLTQwNyw2ICs0MTYsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaCAkKGNvbW1vbi1vYmpwZngpZGVidWdnbGliYy5zaAorIAorIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKKyAKKysjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubworKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5CisrIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KKytpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKKyskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCisrCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQorKwkkKElOU1RBTExfREFUQSkgJDwgJEAKKysKKytpbnN0YWxsZWQtc3R1YnMgPQorK2Vsc2UKKyBpZm5kZWYgYWJpLXZhcmlhbnRzCisgaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisgZWxzZQorQEAgLTQzMyw2ICs0NTIsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQorIAorIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKKyBlbmRpZgorK2VuZGlmCisgCisgCisgIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjFkMmI2NjlhZmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCisrCisrICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCisrICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0CisrICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgorKworKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCisrICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQorKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKKysgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY1NTFjZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBiNzI5MGU1NGExYmRhN2EwMjEyMTMxNjU1YmMyNzkyNmZjMjJkZTIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yOF0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAotCi0yMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KLQotICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotaW5kZXggZTA5MzhjNDE2NS4uY2ExZDdkYTMzOSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotQEAgLTIsNiArMiw3IEBAIGxpYmMgewotICAgR0xJQkNfMi4yIHsKLSAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKLSAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OwotKyAgICBfX2Zwc2NyX3ZhbHVlczsKLSAKLSAgICAgIyBhKgotICAgICBhbHBoYXNvcnQ2NDsKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1pbmRleCA2Y2UzNmQ2ZGQ1Li40MjU4MTFjYzc3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1AQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKLSAKLSAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQotICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+Ci0rCi0rICAgICAgIC5kYXRhCi0rICAgICAgIC5hbGlnbiAzCi0rICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKLSsgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0Ci0rICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAotK19fX2Zwc2NyX3ZhbHVlczoKLSsgICAgICAgLmxvbmcgMAotKyAgICAgICAubG9uZyAweDgwMDAwCi0rd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKLSsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDYwMjFhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NjYgKzAsMCBAQAotRnJvbSBiZTM4MmI0ZTBjNmRlNTI1NzNmN2UwMzdmMmQ0ZmY5YjFiNWJiYjZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8yOF0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKy0KLSBsb2NhbGUvY2F0bmFtZXMuYyAgICAgICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsb2NhbGUvbG9jYWxlaW5mby5oICAgICAgICAgICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgfCAgNiArKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKy0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKy0tLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyAgICAgfCAzMSArKysrKysrKysrKystLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKwotIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgICAgIHwgIDUgKystCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCAgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIGxvY2FsZS9zZXRsb2NhbGUuYyAgICAgICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYwotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL01ha2VmaWxlIGIvbG9jYWxlL01ha2VmaWxlCi1pbmRleCBkNzhjZjliODNhLi5lMTY2ZjUyNTJlIDEwMDY0NAotLS0tIGEvbG9jYWxlL01ha2VmaWxlCi0rKysgYi9sb2NhbGUvTWFrZWZpbGUKLUBAIC0yNiw3ICsyNiw4IEBAIGhlYWRlcnMJCT0gbGFuZ2luZm8uaCBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIFwKLSAJCSAgYml0cy90eXBlcy9sb2NhbGVfdC5oIGJpdHMvdHlwZXMvX19sb2NhbGVfdC5oCi0gcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKLSAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAotLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCi0rCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAotKwkJICBjYXRuYW1lcwotIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCi0gY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKLSAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQotZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi45ZmFkMzU3ZGIxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvY2F0bmFtZXMuYwotQEAgLTAsMCArMSw0OCBAQAotKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCi0rCi0rLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotK2NvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rICAgIHsKLSsjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLSsgICAgICBjYXRlZ29yeV9uYW1lLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0rICAgIH0KLSsgIH07Ci0rCi0rY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLSsgIH07Ci0rCi0rLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLStjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmCURFRklORV9DQVRFR09SWQotKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotKyAgfTsKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggNTNjYjhiZmM1OS4uOTJjNDY2MjAwYyAxMDA2NDQKLS0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKLSsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLUBAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgbG9jYWxlX3QsIExPQ0FMRSkKLSAgICB1bnVzZWQuICBXZSBjYW4gbWFuYWdlIHRoaXMgcGxheWluZyBzb21lIHRyaWNrcyB3aXRoIHdlYWsgcmVmZXJlbmNlcy4KLSAgICBCdXQgd2l0aCB0aHJlYWQtbG9jYWwgbG9jYWxlIHNldHRpbmdzLCBpdCBiZWNvbWVzIHF1aXRlIHVuZ2Fpbmx5IHVubGVzcwotICAgIHdlIGNhbiB1c2UgX190aHJlYWQgdmFyaWFibGVzLiAgU28gb25seSBpbiB0aGF0IGNhc2UgZG8gd2UgYXR0ZW1wdCB0aGlzLiAgKi8KLS0jaWZuZGVmIFNIQVJFRAotKyNpZiAhZGVmaW5lZCBTSEFSRUQgJiYgIWRlZmluZWQgSU5fR0xJQkNfTE9DQUxFREVGCi0gIyBpbmNsdWRlIDx0bHMuaD4KLSAjIGRlZmluZSBOTF9DVVJSRU5UX0lORElSRUNUCTEKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1pbmRleCA5NGMxMjJkZjY4Li44MGU1M2UxMmM4IDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1AQCAtMTgsNyArMTgsOSBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gI2luY2x1ZGUgPHNwYXduLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLUBAIC0xNTQsNiArMTU2LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCi0gICByZXR1cm4gY2xvc2VkaXIgKGRpcik7Ci0gfQotIAotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotIC8qIENyZWF0ZXMgYSBzdWJwcm9jZXNzIGRlY29tcHJlc3NpbmcgdGhlIGdpdmVuIHBhdGhuYW1lLCBhbmQgcmV0dXJucwotICAgIGEgc3RyZWFtIHJlYWRpbmcgaXRzIG91dHB1dCAodGhlIGRlY29tcHJlc3NlZCBkYXRhKS4gICovCi0gc3RhdGljCi1AQCAtMjAyLDYgKzIwNSw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCi0gICAgIH0KLSAgIHJldHVybiBOVUxMOwotIH0KLSsjZW5kaWYKLSAKLSAvKiBPcGVucyBhIGNoYXJtYXAgZm9yIHJlYWRpbmcsIGdpdmVuIGl0cyBuYW1lIChub3QgYW4gYWxpYXMgbmFtZSkuICAqLwotIEZJTEUgKgotQEAgLTIyNCw2ICsyMjgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN0cmVhbTsKLSAKLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAgIG1lbWNweSAocCwgIi5neiIsIDQpOwotICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImd6aXAiKTsKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLUBAIC0yMzMsNiArMjM4LDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCi0gICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiYnppcDIiKTsKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN0cmVhbTsKLSsjZW5kaWYKLSAKLSAgIHJldHVybiBOVUxMOwotIH0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotaW5kZXggNmJhYWI2Y2ZiMC4uYjEyYTJmY2VhYiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLUBAIC0zNDksNyArMzQ5LDcgQEAgbmV3X2VsZW1lbnQgKHN0cnVjdCBsb2NhbGVfY29sbGF0ZV90ICpjb2xsYXRlLCBjb25zdCBjaGFyICptYnMsIHNpemVfdCBtYnNsZW4sCi0gICAgIH0KLSAgIGlmICh3Y3MgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuICgod2NoYXJfdCAqKSB3Y3MpOwotKyAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuX3VpbnQzMiAod2NzKTsKLSAgICAgICB1aW50MzJfdCB6ZXJvID0gMDsKLSAgICAgICAvKiBIYW5kbGUgPFUwMDAwPiBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuICAqLwotICAgICAgIGlmIChud2NzID09IDApCi1AQCAtMTc3Miw4ICsxNzcyLDcgQEAgc3ltYm9sIGAlcycgaGFzIHRoZSBzYW1lIGVuY29kaW5nIGFzIiksICgqZXB0ciktPm5hbWUpOwotIAotIAkgICAgICBpZiAoKCplcHRyKS0+bndjcyA9PSBydW5wLT5ud2NzKQotIAkJewotLQkJICBpbnQgYyA9IHdtZW1jbXAgKCh3Y2hhcl90ICopICgqZXB0ciktPndjcywKLS0JCQkJICAgKHdjaGFyX3QgKikgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKLSsJCSAgaW50IGMgPSB3bWVtY21wX3VpbnQzMiAoKCplcHRyKS0+d2NzLCBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOwotIAotIAkJICBpZiAoYyA9PSAwKQotIAkJICAgIHsKLUBAIC0yMDAwLDkgKzE5OTksOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCi0gCSAgICAgb25lIGNvbnNlY3V0aXZlIGVudHJ5LiAgKi8KLSAJICBpZiAocnVucC0+d2NuZXh0ICE9IE5VTEwKLSAJICAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKLS0JICAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAotLQkJCSAgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKLS0JCQkgIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0rCSAgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCi0rCQkJCSBydW5wLT53Y25leHQtPndjcywKLSsJCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0gCSAgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCi0gCQkgID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKQotIAkgICAgewotQEAgLTIwMjYsOSArMjAyNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKLSAJCXJ1bnAgPSBydW5wLT53Y25leHQ7Ci0gCSAgICAgIHdoaWxlIChydW5wLT53Y25leHQgIT0gTlVMTAotIAkJICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwotLQkJICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCi0tCQkJCSAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAotLQkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKLSsJCSAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKLSsJCQkJCXJ1bnAtPndjbmV4dC0+d2NzLAotKwkJCQkJcnVucC0+bndjcyAtIDEpID09IDAKLSAJCSAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KLSAJCQkgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpOwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLWluZGV4IGNmYzljNDNmZDUuLjY1NzJjYzE5OWMgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLUBAIC05MTUsNyArOTE1LDcgQEAgY3R5cGVfb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAgIGFsbG9jYXRlX2FycmF5cyAoY3R5cGUsIGNoYXJtYXAsIGN0eXBlLT5yZXBlcnRvaXJlKTsKLSAKLSAgIGRlZmF1bHRfbWlzc2luZ19sZW4gPSAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZwotLQkJCSA/IHdjc2xlbiAoKHdjaGFyX3QgKikgY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKLSsJCQkgPyB3Y3NsZW5fdWludDMyIChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQotIAkJCSA6IDApOwotIAotICAgaW5pdF9sb2NhbGVfZGF0YSAoJmZpbGUsIG5lbGVtcyk7Ci1AQCAtMTkyNyw3ICsxOTI3LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKLSAJICAgIGlnbm9yZSA9IDE7Ci0gCSAgZWxzZQotIAkgICAgLyogVGhpcyB2YWx1ZSBpcyB1c2FibGUuICAqLwotLQkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuICgod2NoYXJfdCAqKSB0b193c3RyKSAqIDQpOwotKwkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuX3VpbnQzMiAodG9fd3N0cikgKiA0KTsKLSAKLSAJICBmaXJzdCA9IDA7Ci0gCX0KLUBAIC0yNDYxLDggKzI0NjEsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOwotIAkgICAgfQotIAotIAloYW5kbGVfdG9rX2RpZ2l0OgotLQkgIGNsYXNzX2JpdCA9IF9JU3dkaWdpdDsKLS0JICBjbGFzczI1Nl9iaXQgPSBfSVNkaWdpdDsKLSsJICBjbGFzc19iaXQgPSBCSVR3ICh0b2tfZGlnaXQpOwotKwkgIGNsYXNzMjU2X2JpdCA9IEJJVCAodG9rX2RpZ2l0KTsKLSAJICBoYW5kbGVfZGlnaXRzID0gMTsKLSAJICBnb3RvIHJlYWRfY2hhcmNsYXNzOwotIAotQEAgLTM5MDQsOCArMzkwNCw3IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAKLSAJICB3aGlsZSAoaWR4IDwgbnVtYmVyKQotIAkgICAgewotLQkgICAgICBpbnQgcmVzID0gd2NzY21wICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbaWR4XS0+ZnJvbSwKLS0JCQkJKGNvbnN0IHdjaGFyX3QgKikgcnVucC0+ZnJvbSk7Ci0rCSAgICAgIGludCByZXMgPSB3Y3NjbXBfdWludDMyIChzb3J0ZWRbaWR4XS0+ZnJvbSwgcnVucC0+ZnJvbSk7Ci0gCSAgICAgIGlmIChyZXMgPT0gMCkKLSAJCXsKLSAJCSAgcmVwbGFjZSA9IDE7Ci1AQCAtMzk0MiwxMSArMzk0MSwxMSBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gICAgICAgZm9yIChzaXplX3QgY250ID0gMDsgY250IDwgbnVtYmVyOyArK2NudCkKLSAJewotIAkgIHN0cnVjdCB0cmFuc2xpdF90b190ICpzcnVucDsKLS0JICBmcm9tX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0rCSAgZnJvbV9sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKLSAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgdG9fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOwotKwkgICAgICB0b19sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOwotIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwotIAkgICAgfQotIAkgIC8qIFBsdXMgb25lIGZvciB0aGUgZXh0cmEgTlVMIGNoYXJhY3RlciBtYXJraW5nIHRoZSBlbmQgb2YKLUBAIC0zOTcwLDE4ICszOTY5LDE4IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAJICBjdHlwZS0+dHJhbnNsaXRfZnJvbV9pZHhbY250XSA9IGZyb21fbGVuOwotIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKLSAKLS0JICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0tCSAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCi0tCQkgICAoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKLSsJICBsZW4gPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotKwkgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKLSsJCQkgIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOwotIAkgIGZyb21fbGVuICs9IGxlbjsKLSAKLSAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47Ci0gCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87Ci0gCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCi0gCSAgICB7Ci0tCSAgICAgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOwotLQkgICAgICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAotLQkJICAgICAgIChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIsIGxlbik7Ci0rCSAgICAgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKLSsJICAgICAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCi0rCQkJICAgICAgc3J1bnAtPnN0ciwgbGVuKTsKLSAJICAgICAgdG9fbGVuICs9IGxlbjsKLSAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKLSAJICAgIH0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotaW5kZXggOGU5ODQ5ZmRiYS4uMDI4ZDNlZmE5ZiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLUBAIC0yMjAsOCArMjIwLDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSsJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQotKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OwotIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOwotLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOwotKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07Ci0gCX0KLSAgICAgfQotIAotQEAgLTIzMSw3ICsyMzMsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwotICAgICAgIGNvbnN0IGludCBkYXlzX3Blcl9tb250aFsxMl0gPSB7IDMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsCi0gCQkJCSAgICAgICAzMSwgMzEsIDMwLCAzMSAsMzAsIDMxIH07Ci0gICAgICAgc2l6ZV90IGlkeDsKLS0gICAgICB3Y2hhcl90ICp3c3RyOwotKyAgICAgIHVpbnQzMl90ICp3c3RyOwotIAotICAgICAgIHRpbWUtPmVyYV9lbnRyaWVzID0KLSAJKHN0cnVjdCBlcmFfZGF0YSAqKSB4bWFsbG9jICh0aW1lLT5udW1fZXJhCi1AQCAtNDU3LDE4ICs0NTksMTggQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKLSAJICAgIH0KLSAKLSAJICAvKiBOb3cgZ2VuZXJhdGUgdGhlIHdpZGUgY2hhcmFjdGVyIG5hbWUgYW5kIGZvcm1hdC4gICovCi0tCSAgd3N0ciA9IHdjc2NociAoKHdjaGFyX3QgKikgdGltZS0+d2VyYVtpZHhdLCBMJzonKTsvKiBlbmQgZGlyZWN0aW9uICovCi0tCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBvZmZzZXQgKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIHN0YXJ0ICovCi0tCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBlbmQgKi8KLSsJICB3c3RyID0gd2NzY2hyX3VpbnQzMiAodGltZS0+d2VyYVtpZHhdLCBMJzonKTsgLyogZW5kIGRpcmVjdGlvbiAqLwotKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIG9mZnNldCAqLwotKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIHN0YXJ0ICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgZW5kICovCi0gCSAgaWYgKHdzdHIgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKLS0JICAgICAgd3N0ciA9IHdjc2NociAod3N0ciArIDEsIEwnOicpOwkvKiBlbmQgbmFtZSAqLwotKwkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gd3N0ciArIDE7Ci0rCSAgICAgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6Jyk7IC8qIGVuZCBuYW1lICovCi0gCSAgICAgIGlmICh3c3RyICE9IE5VTEwpCi0gCQl7Ci0gCQkgICp3c3RyID0gTCdcMCc7Ci0tCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKLSsJCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gd3N0ciArIDE7Ci0gCQl9Ci0gCSAgICAgIGVsc2UKLSAJCXRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPQotQEAgLTUyNyw3ICs1MjksMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKLSAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQotICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7Ci0gICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCi0tICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKLSsgICAgewotKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9Ci0rCXsgJyUnLCdhJywnICcsCi0rCSAgJyUnLCdiJywnICcsCi0rCSAgJyUnLCdlJywnICcsCi0rCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCi0rCSAgJyUnLCdaJywnICcsCi0rCSAgJyUnLCdZJywwIH07Ci0rICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OwotKyAgICB9Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi1pbmRleCBlZDNhOTczMWQwLi4zMTc4ZWEwNTdhIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gewotICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOwotICAgY2hhciAqYnVmOwotLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7Ci0rICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7Ci0gICBzaXplX3QgYnVmYWN0OwotICAgc2l6ZV90IGJ1Zm1heCA9IDU2OwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotaW5kZXggYjdiY2VmODI0OC4uZWZlY2VkMWUwZiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1AQCAtMTA5LDYgKzEwOSw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247Ci0gI2RlZmluZSBPUFRfTk9fV0FSTiA0MDIKLSAjZGVmaW5lIE9QVF9XQVJOIDQwMwotICNkZWZpbmUgT1BUX05PX0hBUkRfTElOS1MgNDA0Ci0rI2RlZmluZSBPUFRfVUlOVDMyX0FMSUdOIDQwNQotIAotIC8qIERlZmluaXRpb25zIG9mIGFyZ3VtZW50cyBmb3IgYXJncCBmdW5jdGlvbnMuICAqLwotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KLUBAIC0xNTMsNiArMTU0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQotICAgICBOXygiR2VuZXJhdGUgbGl0dGxlLWVuZGlhbiBvdXRwdXQiKSB9LAotICAgeyAiYmlnLWVuZGlhbiIsIE9QVF9CSUdfRU5ESUFOLCBOVUxMLCAwLAotICAgICBOXygiR2VuZXJhdGUgYmlnLWVuZGlhbiBvdXRwdXQiKSB9LAotKyAgeyAidWludDMyLWFsaWduIiwgT1BUX1VJTlQzMl9BTElHTiwgIkFMSUdOTUVOVCIsIDAsCi0rICAgIE5fKCJTZXQgdGhlIHRhcmdldCdzIHVpbnQzMl90IGFsaWdubWVudCBpbiBieXRlcyAoZGVmYXVsdCA0KSIpIH0sCi0gICB7IE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwgfQotIH07Ci0gCi1AQCAtMjQyLDEyICsyNDUsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgIGN0eXBlIGxvY2FsZS4gIChQMTAwMy4yIDQuMzUuNS4yKSAgKi8KLSAgIHNldGxvY2FsZSAoTENfQ1RZUEUsICJQT1NJWCIpOwotIAotKyNpZm5kZWYgTk9fU1lTQ09ORgotICAgLyogTG9vayB3aGV0aGVyIHRoZSBzeXN0ZW0gcmVhbGx5IGFsbG93cyBsb2NhbGUgZGVmaW5pdGlvbnMuICBQT1NJWAotICAgICAgZGVmaW5lcyBlcnJvciBjb2RlIDMgZm9yIHRoaXMgc2l0dWF0aW9uIHNvIEkgdGhpbmsgaXQgbXVzdCBiZQotICAgICAgYSBmYXRhbCBlcnJvciAoc2VlIFAxMDAzLjIgNC4zNS44KS4gICovCi0gICBpZiAoc3lzY29uZiAoX1NDXzJfTE9DQUxFREVGKSA8IDApCi0gICAgIHJlY29yZF9lcnJvciAoMywgMCwgXygiXAotIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSk7Ci0rI2VuZGlmCi0gCi0gICAvKiBQcm9jZXNzIGNoYXJtYXAgZmlsZS4gICovCi0gICBjaGFybWFwID0gY2hhcm1hcF9yZWFkIChjaGFybWFwX2ZpbGUsIHZlcmJvc2UsIDEsIGJlX3F1aWV0LCAxKTsKLUBAIC0zOTksNiArNDA0LDkgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkKLSAgICAgICAvKiBEbyBub3QgaGFyZCBsaW5rIHRvIG90aGVyIGxvY2FsZXMuICAqLwotICAgICAgIGhhcmRfbGlua3MgPSBmYWxzZTsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBPUFRfVUlOVDMyX0FMSUdOOgotKyAgICAgIHVpbnQzMl9hbGlnbl9tYXNrID0gc3RydG9sIChhcmcsIE5VTEwsIDApIC0gMTsKLSsgICAgICBicmVhazsKLSAgICAgY2FzZSAnYyc6Ci0gICAgICAgZm9yY2Vfb3V0cHV0ID0gMTsKLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotaW5kZXggZTRiYTQ4ZTk2OC4uZTdiMGVmZTg4NyAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLUBAIC01NDQsNiArNTQ0LDkgQEAgY29tcGFyZV9maWxlcyAoY29uc3QgY2hhciAqZmlsZW5hbWUxLCBjb25zdCBjaGFyICpmaWxlbmFtZTIsIHNpemVfdCBzaXplLAotICAgIG1hY2hpbmUgcnVubmluZyBsb2NhbGVkZWYuICAqLwotIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7Ci0gCi0rLyogVGhlIHRhcmdldCdzIHZhbHVlIG9mIF9fYWxpZ25fXyh1aW50MzJfdCkgLSAxLiAgKi8KLSt1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2sgPSAzOwotKwotIC8qIFdoZW4gY2FsbGVkIG91dHNpZGUgYSBzdGFydF9sb2NhbGVfc3RydWN0dXJlL2VuZF9sb2NhbGVfc3RydWN0dXJlCi0gICAgb3Igc3RhcnRfbG9jYWxlX3ByZWx1ZGUvZW5kX2xvY2FsZV9wcmVsdWRlIGJsb2NrLCByZWNvcmQgdGhhdCB0aGUKLSAgICBuZXh0IGJ5dGUgaW4gRklMRSdzIG9ic3RhY2sgd2lsbCBiZSB0aGUgZmlyc3QgYnl0ZSBvZiBhIG5ldyBlbGVtZW50LgotQEAgLTYyMSw3ICs2MjQsNyBAQCBhZGRfbG9jYWxlX3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHJpbmcpCi0gdm9pZAotIGFkZF9sb2NhbGVfd3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCB1aW50MzJfdCAqc3RyaW5nKQotIHsKLS0gIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3RyaW5nKSArIDEpOwotKyAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuX3VpbnQzMiAoc3RyaW5nKSArIDEpOwotIH0KLSAKLSAvKiBSZWNvcmQgdGhhdCBGSUxFJ3MgbmV4dCBlbGVtZW50IGlzIHRoZSAzMi1iaXQgaW50ZWdlciBWQUxVRS4gICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLWluZGV4IGMwNjNmYzA5N2QuLjRlNzQ2NWU1NWEgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi1AQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gdm9pZCB3cml0ZV9hbGxfY2F0ZWdvcmllcyAoc3RydWN0IGxvY2FsZWRlZl90ICpkZWZpbml0aW9ucywKLSAKLSBleHRlcm4gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKLSAKLStleHRlcm4gdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrOwotKwotIC8qIENoYW5nZSB0aGUgb3V0cHV0IHRvIGJlIGJpZy1lbmRpYW4gaWYgQklHX0VORElBTiBpcyB0cnVlIGFuZAotICAgIGxpdHRsZS1lbmRpYW4gb3RoZXJ3aXNlLiAgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQKLUBAIC04OSw3ICs5MSw4IEBAIG1heWJlX3N3YXBfdWludDMyICh1aW50MzJfdCB2YWx1ZSkKLSB9Ci0gCi0gLyogTGlrZXdpc2UsIGJ1dCBtdW5nZSBhbiBhcnJheSBvZiBOIHVpbnQzMl90cyBzdGFydGluZyBhdCBBUlJBWS4gICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIHZvaWQKLStfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKLSB7Ci0gICBpZiAoc3dhcF9lbmRpYW5uZXNzX3ApCi1AQCAtOTksNyArMTAyLDggQEAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCi0gCi0gLyogTGlrZSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSwgYnV0IHRoZSBhcnJheSBvZiBOIGVsZW1lbnRzIGlzIGF0Ci0gICAgdGhlIGVuZCBvZiBPQlNUQUNLJ3MgY3VycmVudCBvYmplY3QuICAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZAotK3N0YXRpYyB2b2lkCi0rX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCi0gbWF5YmVfc3dhcF91aW50MzJfb2JzdGFjayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHNpemVfdCBuKQotIHsKLSAgIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICgodWludDMyX3QgKikgb2JzdGFja19uZXh0X2ZyZWUgKG9ic3RhY2spIC0gbiwgbik7Ci1AQCAtMjc2LDQgKzI4MCw1NSBAQCBleHRlcm4gdm9pZCBpZGVudGlmaWNhdGlvbl9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLAotIAkJCQkgICBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAkJCQkgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0aCk7Ci0gCi0rc3RhdGljIHNpemVfdCB3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIHVpbnQzMl90ICogd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyB1aW50MzJfdCAqIHdjc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyBpbnQgd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgaW50IHdtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLSsKLStzdGF0aWMgc2l6ZV90Ci0rd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikKLSt7Ci0rICBzaXplX3QgbGVuID0gMDsKLSsgIHdoaWxlIChzdHJbbGVuXSAhPSAwKQotKyAgICBsZW4rKzsKLSsgIHJldHVybiBsZW47Ci0rfQotKwotK3N0YXRpYyAgaW50Ci0rd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKLSt7Ci0rICB3aGlsZSAobi0tICE9IDApCi0rICAgIHsKLSsgICAgICBpbnQgZGlmZiA9ICpzMSsrIC0gKnMyKys7Ci0rICAgICAgaWYgKGRpZmYgIT0gMCkKLSsJcmV0dXJuIGRpZmY7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0rd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpCi0rewotKyAgd2hpbGUgKCpzMSAhPSAwICYmICpzMSA9PSAqczIpCi0rICAgIHMxKyssIHMyKys7Ci0rICByZXR1cm4gKnMxIC0gKnMyOwotK30KLSsKLStzdGF0aWMgdWludDMyX3QgKgotK3dtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCi0rewotKyAgcmV0dXJuIG1lbWNweSAoczEsIHMyLCBuICogc2l6ZW9mICh1aW50MzJfdCkpOwotK30KLSsKLStzdGF0aWMgdWludDMyX3QgKgotK3djc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkKLSt7Ci0rICBkbwotKyAgICBpZiAoKnMgPT0gY2gpCi0rICAgICAgcmV0dXJuICh1aW50MzJfdCAqKSBzOwotKyAgd2hpbGUgKCpzKysgIT0gMCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0gI2VuZGlmIC8qIGxvY2ZpbGUuaCAqLwotZGlmZiAtLWdpdCBhL2xvY2FsZS9zZXRsb2NhbGUuYyBiL2xvY2FsZS9zZXRsb2NhbGUuYwotaW5kZXggOWJkMzU0NTRiOS4uMmE2N2RjNjU4OSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9zZXRsb2NhbGUuYwotKysrIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1AQCAtNjQsMzYgKzY0LDYgQEAgc3RhdGljIGNoYXIgKmNvbnN0IF9ubF9jdXJyZW50X3VzZWRbXSA9Ci0gI2VuZGlmCi0gCi0gCi0tLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotLWNvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tICAgIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgICBjYXRlZ29yeV9uYW1lLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0tICAgIH0KLS0gIH07Ci0tCi0tY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0tICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLS0gIH07Ci0tCi0tLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLS1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0tICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmCURFRklORV9DQVRFR09SWQotLSAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotLSAgfTsKLS0KLS0KLSAjaWZkZWYgTkxfQ1VSUkVOVF9JTkRJUkVDVAotICMgZGVmaW5lIFdFQUtfUE9TVExPQUQocG9zdGxvYWQpIHdlYWtfZXh0ZXJuIChwb3N0bG9hZCkKLSAjZWxzZQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1MDNjOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAyNWMyMTg1N2EzZmMwZWIyNjgzMTYxNmJhODhhNjk2ZGQzMWVjYmExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAorCisyMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KKworICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworaW5kZXggZTA5MzhjNDE2NS4uY2ExZDdkYTMzOSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworQEAgLTIsNiArMiw3IEBAIGxpYmMgeworICAgR0xJQkNfMi4yIHsKKyAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKKyAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OworKyAgICBfX2Zwc2NyX3ZhbHVlczsKKyAKKyAgICAgIyBhKgorICAgICBhbHBoYXNvcnQ2NDsKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitpbmRleCA4NWZmM2Y5MDBlLi43NzQzYjhkNTdhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitAQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKKyAKKyAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQorICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+CisrCisrICAgICAgIC5kYXRhCisrICAgICAgIC5hbGlnbiAzCisrICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKKysgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0CisrICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAorK19fX2Zwc2NyX3ZhbHVlczoKKysgICAgICAgLmxvbmcgMAorKyAgICAgICAubG9uZyAweDgwMDAwCisrd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKKysKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzY2N2RhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGFmYThkNmZhZWRkZWI4MGFjYTMxOGIzM2VkZjQ5ZDlmOGNlNjU3NjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAyMToxMTowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIzLzI4XSBEZWZpbmUgRFVNTVlfTE9DQUxFX1QgaWYgbm90IGRlZmluZWQKLQotVGhpcyBpcyBhIGhhY2sgdG8gZml4IGJ1aWxkaW5nIHRoZSBsb2NhbGUgYml0cyBvbiBhbiBvbGRlcgotQ2VudE9zIDUuWCBtYWNoaW5lCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaCBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotaW5kZXggYTFlNmUwZWMzYy4uN2Y3NTUyOGVhZSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi1AQCAtMTksNiArMTksOSBAQAotICNpZm5kZWYgX0xEX0NPTkZJR19ICi0gI2RlZmluZSBfTERfQ09ORklHX0gJMQotIAotKyNpZm5kZWYgRFVNTVlfTE9DQUxFX1QKLSsjZGVmaW5lIERVTU1ZX0xPQ0FMRV9UCi0rI2VuZGlmCi0gLyogVXNlIHRoZSBpbnRlcm5hbCB0ZXh0ZG9tYWluIHVzZWQgZm9yIGxpYmMgbWVzc2FnZXMuICAqLwotICNkZWZpbmUgUEFDS0FHRSBfbGliY19pbnRsX2RvbWFpbm5hbWUKLSAjaWZuZGVmIFZFUlNJT04KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOTBmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNTYwIEBACitGcm9tIDMwMDA4MzI3YWFkZjBjNzc1ZTY0NGJiMzg3ZDdjMjU5NTJlZDA1YjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTozMzo0OSArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgMyArLQorIGxvY2FsZS9jYXRuYW1lcy5jICAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbG9jYWxlL2xvY2FsZWluZm8uaCAgICAgICAgICAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIHwgIDYgKysrKworIGxvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgIHwgMTcgKysrKystLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jICAgIHwgMjcgKysrKysrKystLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyAgIHwgIDggKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDI5IC0tLS0tLS0tLS0tLS0tLS0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYworCitkaWZmIC0tZ2l0IGEvbG9jYWxlL01ha2VmaWxlIGIvbG9jYWxlL01ha2VmaWxlCitpbmRleCBjOTY5NGUyMzZlLi5iYTcxMDVmYWQ2IDEwMDY0NAorLS0tIGEvbG9jYWxlL01ha2VmaWxlCisrKysgYi9sb2NhbGUvTWFrZWZpbGUKK0BAIC0yNiw3ICsyNiw4IEBAIGhlYWRlcnMJCT0gbGFuZ2luZm8uaCBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIFwKKyAJCSAgYml0cy90eXBlcy9sb2NhbGVfdC5oIGJpdHMvdHlwZXMvX19sb2NhbGVfdC5oCisgcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKKyAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAorLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCisrCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAorKwkJICBjYXRuYW1lcworIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCisgY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKKyAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQorZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi41MzhmM2Y1ZWRiCistLS0gL2Rldi9udWxsCisrKysgYi9sb2NhbGUvY2F0bmFtZXMuYworQEAgLTAsMCArMSw0NiBAQAorKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCisrCisrLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLworK2NvbnN0IHN0cnVjdCBjYXRuYW1lc3RyX3QgX25sX2NhdGVnb3J5X25hbWVzIGF0dHJpYnV0ZV9oaWRkZW4gPQorKyAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICBjYXRlZ29yeV9uYW1lLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYgREVGSU5FX0NBVEVHT1JZCisrICB9OworKworK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfaWR4c1tfX0xDX0xBU1RdIGF0dHJpYnV0ZV9oaWRkZW4gPQorKyAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICBbY2F0ZWdvcnldID0gb2Zmc2V0b2YgKHN0cnVjdCBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmIERFRklORV9DQVRFR09SWQorKyAgfTsKKysKKysvKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYJREVGSU5FX0NBVEVHT1JZCisrICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCisrICB9OworZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCitpbmRleCBmZGMyODNjNjlhLi40ZWVlZDM1ZjkwIDEwMDY0NAorLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAorQEAgLTIzMCw3ICsyMzAsNyBAQCBfX2xpYmNfdHNkX2RlZmluZSAoZXh0ZXJuLCBsb2NhbGVfdCwgTE9DQUxFKQorICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgorICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCisgICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLworLSNpZm5kZWYgU0hBUkVECisrI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKKyAjIGluY2x1ZGUgPHRscy5oPgorICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK2luZGV4IDFhNTI2YTI0MGQuLjBmYjJkYWY5MzYgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK0BAIC0xOCw3ICsxOCw5IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAjaW5jbHVkZSA8c3Bhd24uaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTE1NCw2ICsxNTYsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKKyAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKKyB9CisgCisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCisgICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KKyBzdGF0aWMKK0BAIC0yMDIsNiArMjA1LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKKyAgICAgfQorICAgcmV0dXJuIE5VTEw7CisgfQorKyNlbmRpZgorIAorIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCisgRklMRSAqCitAQCAtMjI0LDYgKzIyOCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworIAorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7CisgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorQEAgLTIzMyw2ICsyMzgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKKyAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworKyNlbmRpZgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCitpbmRleCBmZWIxYTExMjU4Li41YThlNTIyNDcwIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworQEAgLTM0OSw3ICszNDksNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKKyAgICAgfQorICAgaWYgKHdjcyAhPSBOVUxMKQorICAgICB7CistICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7CisrICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOworICAgICAgIHVpbnQzMl90IHplcm8gPSAwOworICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCisgICAgICAgaWYgKG53Y3MgPT0gMCkKK0BAIC0xNzcyLDggKzE3NzIsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7CisgCisgCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCisgCQl7CistCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAorLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOworKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7CisgCisgCQkgIGlmIChjID09IDApCisgCQkgICAgeworQEAgLTIwMDAsOSArMTk5OSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKKyAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLworIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAorIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcworLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCistCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAorLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKKysJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKKysJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAorKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKKyAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KKyAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCisgCSAgICB7CitAQCAtMjAyNiw5ICsyMDI1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKKyAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCisgCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCistCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKKy0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCistCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAorKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAorKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCisrCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAorIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQorIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7CisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworaW5kZXggMzMyODA5M2QwZS4uZDU4ZmIwZjRiNyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworQEAgLTkxNSw3ICs5MTUsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOworIAorICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCistCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQorKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCisgCQkJIDogMCk7CisgCisgICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKK0BAIC0xOTI3LDcgKzE5MjcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAorIAkgICAgaWdub3JlID0gMTsKKyAJICBlbHNlCisgCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCistCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7CisrCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOworIAorIAkgIGZpcnN0ID0gMDsKKyAJfQorQEAgLTI0NjEsOCArMjQ2MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7CisgCSAgICB9CisgCisgCWhhbmRsZV90b2tfZGlnaXQ6CistCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OworLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OworKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7CisrCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOworIAkgIGhhbmRsZV9kaWdpdHMgPSAxOworIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7CisgCitAQCAtMzkwNCw4ICszOTA0LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAorIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCisgCSAgICB7CistCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAorLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKKysJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKKyAJICAgICAgaWYgKHJlcyA9PSAwKQorIAkJeworIAkJICByZXBsYWNlID0gMTsKK0BAIC0zOTQyLDExICszOTQxLDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQorIAl7CisgCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOworLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKysJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOworIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CisrCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7CisgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CisgCSAgICB9CisgCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgorQEAgLTM5NzAsMTggKzM5NjksMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47CisgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOworIAorLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKy0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKKy0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOworKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisrCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAorKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7CisgCSAgZnJvbV9sZW4gKz0gbGVuOworIAorIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKKyAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKKyAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CistCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCistCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKKysJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOworKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKKysJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOworIAkgICAgICB0b19sZW4gKz0gbGVuOworIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OworIAkgICAgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCitpbmRleCBmN2RiODczYWRiLi5mZWMzNzczYzlkIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworQEAgLTIyMCw4ICsyMjAsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworKwkgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3dF9mbXRfYW1wbVtdCisrCSAgICA9IHsgJyUnLCdJJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsJyUnLCdwJywwIH07CisgCSAgdGltZS0+dF9mbXRfYW1wbSA9ICIlSTolTTolUyAlcCI7CistCSAgdGltZS0+d3RfZm10X2FtcG0gPSAoY29uc3QgdWludDMyX3QgKikgTCIlSTolTTolUyAlcCI7CisrCSAgdGltZS0+d3RfZm10X2FtcG0gPSB3dF9mbXRfYW1wbTsKKyAJfQorICAgICB9CisgCitAQCAtMjMxLDcgKzIzMyw3IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CisgICAgICAgY29uc3QgaW50IGRheXNfcGVyX21vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwKKyAJCQkJICAgICAgIDMxLCAzMSwgMzAsIDMxICwzMCwgMzEgfTsKKyAgICAgICBzaXplX3QgaWR4OworLSAgICAgIHdjaGFyX3QgKndzdHI7CisrICAgICAgdWludDMyX3QgKndzdHI7CisgCisgICAgICAgdGltZS0+ZXJhX2VudHJpZXMgPQorIAkoc3RydWN0IGVyYV9kYXRhICopIHhtYWxsb2MgKHRpbWUtPm51bV9lcmEKK0BAIC00NTcsMTggKzQ1OSwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOworIAkgICAgfQorIAorIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KKy0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLworKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KKyAJICBpZiAod3N0ciAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCisrCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKKysJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KKyAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKKyAJCXsKKyAJCSAgKndzdHIgPSBMJ1wwJzsKKy0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKKyAJCX0KKyAJICAgICAgZWxzZQorIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9CitAQCAtNTI3LDcgKzUyOSwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOworICAgaWYgKHRpbWUtPmRhdGVfZm10ID09IE5VTEwpCisgICAgIHRpbWUtPmRhdGVfZm10ID0gIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKKyAgIGlmICh0aW1lLT53ZGF0ZV9mbXQgPT0gTlVMTCkKKy0gICAgdGltZS0+d2RhdGVfZm10ID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOworKyAgICB7CisrICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHdkYXRlX2ZtdFtdID0KKysJeyAnJScsJ2EnLCcgJywKKysJICAnJScsJ2InLCcgJywKKysJICAnJScsJ2UnLCcgJywKKysJICAnJScsJ0gnLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywKKysJICAnJScsJ1onLCcgJywKKysJICAnJScsJ1knLDAgfTsKKysgICAgICB0aW1lLT53ZGF0ZV9mbXQgPSB3ZGF0ZV9mbXQ7CisrICAgIH0KKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKK2luZGV4IDdlYmQ5MzM4MDEuLjU3NTM3NTA3NTYgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCitAQCAtNTk1LDcgKzU5NSw3IEBAIGdldF9zdHJpbmcgKHN0cnVjdCBsaW5lcmVhZGVyICpsciwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyB7CisgICBpbnQgcmV0dXJuX3dpZGVzdHIgPSBsci0+cmV0dXJuX3dpZGVzdHI7CisgICBjaGFyICpidWY7CistICB3Y2hhcl90ICpidWYyID0gTlVMTDsKKysgIHVpbnQzMl90ICpidWYyID0gTlVMTDsKKyAgIHNpemVfdCBidWZhY3Q7CisgICBzaXplX3QgYnVmbWF4ID0gNTY7CisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCitpbmRleCBkYmJiMDE0NWMwLi4wOTdhOGI2MTkzIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKK0BAIC0xMDksNiArMTA5LDcgQEAgdm9pZCAoKmFyZ3BfcHJvZ3JhbV92ZXJzaW9uX2hvb2spIChGSUxFICosIHN0cnVjdCBhcmdwX3N0YXRlICopID0gcHJpbnRfdmVyc2lvbjsKKyAjZGVmaW5lIE9QVF9OT19XQVJOIDQwMgorICNkZWZpbmUgT1BUX1dBUk4gNDAzCisgI2RlZmluZSBPUFRfTk9fSEFSRF9MSU5LUyA0MDQKKysjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDA1CisgCisgLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQorQEAgLTE1Myw2ICsxNTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9CisgICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCisgICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCisgICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCisrICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKKysgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKKyAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9CisgfTsKKyAKK0BAIC0yNDIsMTIgKzI0NSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLworICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7CisgCisrI2lmbmRlZiBOT19TWVNDT05GCisgICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCisgICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCisgICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KKyAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKKyAgICAgcmVjb3JkX2Vycm9yICgzLCAwLCBfKCJcCisgRkFUQUw6IHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgYF9QT1NJWDJfTE9DQUxFREVGJyIpKTsKKysjZW5kaWYKKyAKKyAgIC8qIFByb2Nlc3MgY2hhcm1hcCBmaWxlLiAgKi8KKyAgIGNoYXJtYXAgPSBjaGFybWFwX3JlYWQgKGNoYXJtYXBfZmlsZSwgdmVyYm9zZSwgMSwgYmVfcXVpZXQsIDEpOworQEAgLTM5OSw2ICs0MDQsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQorICAgICAgIC8qIERvIG5vdCBoYXJkIGxpbmsgdG8gb3RoZXIgbG9jYWxlcy4gICovCisgICAgICAgaGFyZF9saW5rcyA9IGZhbHNlOworICAgICAgIGJyZWFrOworKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046CisrICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOworKyAgICAgIGJyZWFrOworICAgICBjYXNlICdjJzoKKyAgICAgICBmb3JjZV9vdXRwdXQgPSAxOworICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCitpbmRleCBlYjJmNDYzNGRhLi5kMzg3MTQ3MzIzIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCisgICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCisgYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKKyAKKysvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLworK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7CisrCisgLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKKyAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQorICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCitAQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKKyB2b2lkCisgYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCisgeworLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7CisrICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7CisgfQorIAorIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAoraW5kZXggN2VhMTAwMzhiNC4uMDg4OGMwOTc2MiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKK0BAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAorIAorIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOworIAorK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7CisrCisgLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCisgICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLworIHN0YXRpYyBpbmxpbmUgdm9pZAorQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQorIH0KKyAKKyAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQKKytzdGF0aWMgdm9pZAorK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQorIHsKKyAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKK0BAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKKyAKKyAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKKyAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIHZvaWQKKytfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCisgeworICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKK0BAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCisgCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKKyAKKytzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworKworK3N0YXRpYyBzaXplX3QKKyt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQorK3sKKysgIHNpemVfdCBsZW4gPSAwOworKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCisrICAgIGxlbisrOworKyAgcmV0dXJuIGxlbjsKKyt9CisrCisrc3RhdGljICBpbnQKKyt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQorK3sKKysgIHdoaWxlIChuLS0gIT0gMCkKKysgICAgeworKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKKysgICAgICBpZiAoZGlmZiAhPSAwKQorKwlyZXR1cm4gZGlmZjsKKysgICAgfQorKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQKKyt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKKyt7CisrICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKKysgICAgczErKywgczIrKzsKKysgIHJldHVybiAqczEgLSAqczI7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKKyt7CisrICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQorK3sKKysgIGRvCisrICAgIGlmICgqcyA9PSBjaCkKKysgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7CisrICB3aGlsZSAoKnMrKyAhPSAwKTsKKysgIHJldHVybiAwOworK30KKysKKyAjZW5kaWYgLyogbG9jZmlsZS5oICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCitpbmRleCAwMzBmMTcyN2JkLi4wOTZkOGVkODk1IDEwMDY0NAorLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCisrKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKK0BAIC02MywzNSArNjMsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KKyAKKyAjZW5kaWYKKyAKKy0KKy0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCistY29uc3Qgc3RydWN0IGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgIGNhdGVnb3J5X25hbWUsCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKy0gIH07CistCistY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAoc3RydWN0IGNhdG5hbWVzdHJfdCwgQ0FUTkFNRU1GIChfX0xJTkVfXykpLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCistICB9OworLQorLS8qIEFuIGFycmF5IG9mIHRoZWlyIGxlbmd0aHMsIGZvciBjb252ZW5pZW5jZS4gICovCistY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9zaXplc1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQorLSAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICBbY2F0ZWdvcnldID0gc2l6ZW9mIChjYXRlZ29yeV9uYW1lKSAtIDEsCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZglERUZJTkVfQ0FURUdPUlkKKy0gICAgW0xDX0FMTF0gPSBzaXplb2YgKCJMQ19BTEwiKSAtIDEKKy0gIH07CistCistCisgI2lmZGVmIE5MX0NVUlJFTlRfSU5ESVJFQ1QKKyAjIGRlZmluZSBXRUFLX1BPU1RMT0FEKHBvc3Rsb2FkKSB3ZWFrX2V4dGVybiAocG9zdGxvYWQpCisgI2Vsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZTQ2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMDY3ZjcxYTM4MWNlNjYyNmVmMTE3OWJlM2RkOTBjNGVkMmFhNTJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIwIEFwciAyMDE2IDIxOjExOjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAorCitUaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCitDZW50T3MgNS5YIG1hY2hpbmUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9jb25maWcuaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCitpbmRleCBkNzZkOWY3ZThiLi45MmI1NmQ3ZGYzIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKK0BAIC0xOSw2ICsxOSw5IEBACisgI2lmbmRlZiBfTERfQ09ORklHX0gKKyAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCisgCisrI2lmbmRlZiBEVU1NWV9MT0NBTEVfVAorKyNkZWZpbmUgRFVNTVlfTE9DQUxFX1QKKysjZW5kaWYKKyAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCisgI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQorICNpZm5kZWYgVkVSU0lPTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY4ZTRmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUZyb20gYzEzZTE4YWRiNjM0YTZmZDU5MTI5MTUwYWI3Zjk0NjhmNjRkYzkzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NDI6MDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8yOF0gbG9jYWxlZGVmIC0tYWRkLXRvLWFyY2hpdmUgdXNlcyBhIGhhcmQtY29kZWQgbG9jYWxlCi0gcGF0aAotCi1pdCBkb2Vzbid0IGV4aXN0IGluIG5vcm1hbCB1c2UsIGFuZCB0aGVyZSdzIG5vIHdheSB0byBwYXNzIGFuCi1hbHRlcm5hdGl2ZSBmaWxlbmFtZS4KLQotQWRkIGEgZmFsbGJhY2sgb2YgJExPQ0FMRUFSQ0hJVkUgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZCBhbGxvdwotY3JlYXRpb24gb2YgbmV3IGxvY2FsZSBhcmNoaXZlcyB0aGF0IGFyZSBub3QgdGhlIHN5c3RlbSBhcmNoaXZlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCi1pbmRleCBlNjMxMGIxOGJlLi5mNTRhNzZlYWRlIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYwotQEAgLTM0MCwxMiArMzQwLDI0IEBAIGVubGFyZ2VfYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgY29uc3Qgc3RydWN0IGxvY2FyaGVhZCAqaGVhZCkKLSAgIHN0cnVjdCBuYW1laGFzaGVudCAqb2xkbmFtZWhhc2h0YWI7Ci0gICBzdHJ1Y3QgbG9jYXJoYW5kbGUgbmV3X2FoOwotICAgc2l6ZV90IHByZWZpeF9sZW4gPSBvdXRwdXRfcHJlZml4ID8gc3RybGVuIChvdXRwdXRfcHJlZml4KSA6IDA7Ci0tICBjaGFyIGFyY2hpdmVmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpXTsKLS0gIGNoYXIgZm5hbWVbcHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDFdOwotKyAgY2hhciAqYXJjaGl2ZWZuYW1lOwotKyAgY2hhciAqZm5hbWU7Ci0rICBjaGFyICplbnZhcmNoaXZlID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7Ci0gCi0tICBpZiAob3V0cHV0X3ByZWZpeCkKLS0gICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOwotLSAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOwotKyAgaWYgKGVudmFyY2hpdmUgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGFyY2hpdmVmbmFtZSA9IHhtYWxsb2Moc3RybGVuKGVudmFyY2hpdmUpICsgMSk7Ci0rICAgICAgZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIHNpemVvZiAoIi5YWFhYWFgiKSk7Ci0rICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUsIGVudmFyY2hpdmUpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkpOwotKyAgICAgIGZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMSk7Ci0rICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCi0rICAgICAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0rICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOwotKyAgICB9Ci0gICBzdHJjcHkgKHN0cGNweSAoZm5hbWUsIGFyY2hpdmVmbmFtZSksICIuWFhYWFhYIik7Ci0gCi0gICAvKiBOb3QgYWxsIG9mIHRoZSBvbGQgZmlsZSBoYXMgdG8gYmUgbWFwcGVkLiAgQ2hhbmdlIHRoaXMgbm93IHRoaXMKLUBAIC01NjksMTAgKzU4MSwxMyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCi0gICAvKiBJZiBhaCBoYXMgYSBub24tTlVMTCBmbmFtZSBvcGVuIHRoYXQgb3RoZXJ3aXNlIG9wZW4gdGhlIGRlZmF1bHQuICAqLwotICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKLS0gICAgICBpZiAob3V0cHV0X3ByZWZpeCkKLS0gICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0tICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKLSsgICAgICBhcmNoaXZlZm5hbWUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKLSsgICAgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7Ci0rICAgICAgICAgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKLSsgICAgICAgICAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKLSsgICAgICAgICAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7Ci0rICAgICAgfQotICAgICB9Ci0gCi0gICB3aGlsZSAoMSkKLUBAIC01ODUsNyArNjAwLDcgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQotIAkgICAgIHRoZSBkZWZhdWx0IGxvY2FsZSBhcmNoaXZlIHdlIGlnbm9yZSB0aGUgZmFpbHVyZSBhbmQKLSAJICAgICBsaXN0IGFuIGVtcHR5IGFyY2hpdmUsIG90aGVyd2lzZSB3ZSBwcmludCBhbiBlcnJvcgotIAkgICAgIGFuZCBleGl0LiAgKi8KLS0JICBpZiAoZXJybm8gPT0gRU5PRU5UICYmIGFyY2hpdmVmbmFtZSA9PSBkZWZhdWx0X2ZuYW1lKQotKwkgIGlmIChlcnJubyA9PSBFTk9FTlQpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChyZWFkb25seSkKLSAJCXsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YTllYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIDdjOWViZTk2NmJiOTdkZDE0ZGU1NzE5OTA1YjYxMzExMjExYWUzYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMjhdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKLQotQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKLQotV2hlbiByZXNvbHZpbmcgc3ltYm9saWMgcmVmZXJlbmNlcywgdGhlIGR5bmFtaWMgbGlua2VyIGV4YW1pbmVzIHRoZSBzeW1ib2wKLXRhYmxlcyB3aXRoIGEgYnJlYWR0aC1maXJzdCBzZWFyY2guCi0KLVRoaXMgZnVuY3Rpb24gd2FzIHVzaW5nIGEgZGVwdGggZmlyc3Qgc2VhcmNoLiAgQnkgZG9pbmcgc28gdGhlIGNvbmZsaWN0Ci1yZXNvbHV0aW9uIHJlcG9ydGVkIHRvIHRoZSBwcmVsaW5rZXIgKHdoZW4gTERfVFJBQ0VfUFJFTElOS0lORz0xIGlzIHNldCkKLXdhcyBpbmNvcnJlY3QuICBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aGVuIHRoZWlyIHdlcmUgdmFyaW91cyBjaXJjdWxhcgotZGVwZW5kZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzLiAgVGhlIHByb2JsZW0gdXN1YWxseSBtYW5pZmVzdGVkIGl0c2VsZiBieQotdGhlIHdyb25nIElGVU5DIGJlaW5nIGV4ZWN1dGVkLgotCi1bQlojIDIwNDg4XQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYV0KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZWxmL2RsLWRlcHMuYyB8IDE0ICsrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYwotaW5kZXggZTEyYzM1MzE1OC4uOTIzNGRhYWMwNSAxMDA2NDQKLS0tLSBhL2VsZi9kbC1kZXBzLmMKLSsrKyBiL2VsZi9kbC1kZXBzLmMKLUBAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKLSB7Ci0gICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKLSAgIHN0cnVjdCBsaW5rX21hcCAqKnE7Ci0rICBzdHJ1Y3QgbGlua19tYXAgKipyOwotIAotICAgKnArKyA9IG1hcDsKLSAgIG1hcC0+bF9yZXNlcnZlZCA9IDE7Ci0tICBpZiAobWFwLT5sX2luaXRmaW5pKQotLSAgICBmb3IgKHEgPSBtYXAtPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQotLSAgICAgIGlmICghICgqcSktPmxfcmVzZXJ2ZWQpCi0tCXAgKz0gX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChwLCAqcSk7Ci0rCi0rICBmb3IgKHIgPSBsaXN0OyByIDwgcDsgKytyKQotKyAgICBpZiAoKCpyKS0+bF9pbml0ZmluaSkKLSsgICAgICBmb3IgKHEgPSAoKnIpLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKLSsJaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKLSsJICB7Ci0rCSAgICAqcCsrID0gKnE7Ci0rCSAgICAoKnEpLT5sX3Jlc2VydmVkID0gMTsKLSsJICB9Ci0gICByZXR1cm4gcCAtIGxpc3Q7Ci0gfQotIAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDNmNjVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorRnJvbSA4ZjRiMGJhYzg1ZDE0YjE4NGUwODg0OGIwMmRlM2YzMDc3NWYwNWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0MjowNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGVkZWYgLS1hZGQtdG8tYXJjaGl2ZSB1c2VzIGEgaGFyZC1jb2RlZCBsb2NhbGUgcGF0aAorCitpdCBkb2Vzbid0IGV4aXN0IGluIG5vcm1hbCB1c2UsIGFuZCB0aGVyZSdzIG5vIHdheSB0byBwYXNzIGFuCithbHRlcm5hdGl2ZSBmaWxlbmFtZS4KKworQWRkIGEgZmFsbGJhY2sgb2YgJExPQ0FMRUFSQ0hJVkUgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZCBhbGxvdworY3JlYXRpb24gb2YgbmV3IGxvY2FsZSBhcmNoaXZlcyB0aGF0IGFyZSBub3QgdGhlIHN5c3RlbSBhcmNoaXZlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCitpbmRleCBkY2NhZjA0ZTNiLi5hZTBiN2ZlMTU1IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYworQEAgLTM0MCwxMiArMzQwLDI0IEBAIGVubGFyZ2VfYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgY29uc3Qgc3RydWN0IGxvY2FyaGVhZCAqaGVhZCkKKyAgIHN0cnVjdCBuYW1laGFzaGVudCAqb2xkbmFtZWhhc2h0YWI7CisgICBzdHJ1Y3QgbG9jYXJoYW5kbGUgbmV3X2FoOworICAgc2l6ZV90IHByZWZpeF9sZW4gPSBvdXRwdXRfcHJlZml4ID8gc3RybGVuIChvdXRwdXRfcHJlZml4KSA6IDA7CistICBjaGFyIGFyY2hpdmVmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpXTsKKy0gIGNoYXIgZm5hbWVbcHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDFdOworKyAgY2hhciAqYXJjaGl2ZWZuYW1lOworKyAgY2hhciAqZm5hbWU7CisrICBjaGFyICplbnZhcmNoaXZlID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7CisgCistICBpZiAob3V0cHV0X3ByZWZpeCkKKy0gICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworLSAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgaWYgKGVudmFyY2hpdmUgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGFyY2hpdmVmbmFtZSA9IHhtYWxsb2Moc3RybGVuKGVudmFyY2hpdmUpICsgMSk7CisrICAgICAgZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIHNpemVvZiAoIi5YWFhYWFgiKSk7CisrICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUsIGVudmFyY2hpdmUpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkpOworKyAgICAgIGZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMSk7CisrICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCisrICAgICAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CisrICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgICB9CisgICBzdHJjcHkgKHN0cGNweSAoZm5hbWUsIGFyY2hpdmVmbmFtZSksICIuWFhYWFhYIik7CisgCisgICAvKiBOb3QgYWxsIG9mIHRoZSBvbGQgZmlsZSBoYXMgdG8gYmUgbWFwcGVkLiAgQ2hhbmdlIHRoaXMgbm93IHRoaXMKK0BAIC01NjksMTAgKzU4MSwxMyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCisgICAvKiBJZiBhaCBoYXMgYSBub24tTlVMTCBmbmFtZSBvcGVuIHRoYXQgb3RoZXJ3aXNlIG9wZW4gdGhlIGRlZmF1bHQuICAqLworICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKQorICAgICB7CistICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKKy0gICAgICBpZiAob3V0cHV0X3ByZWZpeCkKKy0gICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CistICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgICAgICBhcmNoaXZlZm5hbWUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKKysgICAgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpIHsKKysgICAgICAgICAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7CisrICAgICAgICAgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKKysgICAgICAgICAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKKysgICAgICAgICAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7CisrICAgICAgfQorICAgICB9CisgCisgICB3aGlsZSAoMSkKK0BAIC01ODUsNyArNjAwLDcgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQorIAkgICAgIHRoZSBkZWZhdWx0IGxvY2FsZSBhcmNoaXZlIHdlIGlnbm9yZSB0aGUgZmFpbHVyZSBhbmQKKyAJICAgICBsaXN0IGFuIGVtcHR5IGFyY2hpdmUsIG90aGVyd2lzZSB3ZSBwcmludCBhbiBlcnJvcgorIAkgICAgIGFuZCBleGl0LiAgKi8KKy0JICBpZiAoZXJybm8gPT0gRU5PRU5UICYmIGFyY2hpdmVmbmFtZSA9PSBkZWZhdWx0X2ZuYW1lKQorKwkgIGlmIChlcnJubyA9PSBFTk9FTlQpCisgCSAgICB7CisgCSAgICAgIGlmIChyZWFkb25seSkKKyAJCXsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY2ZWU0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gMWRhZDc0NmNlOTM5MjhhNTdiMmZlNjE4Yzc0NzIyZjcxMDc1MTgyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTggQXVnIDIwMTYgMTQ6MDc6NTggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZWxmL2RsLWRlcHMuYzogTWFrZSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgYnJlYWR0aCBmaXJzdAorCitBY2NvcmRpbmcgdG8gdGhlIEVMRiBzcGVjaWZpY2F0aW9uOgorCitXaGVuIHJlc29sdmluZyBzeW1ib2xpYyByZWZlcmVuY2VzLCB0aGUgZHluYW1pYyBsaW5rZXIgZXhhbWluZXMgdGhlIHN5bWJvbAordGFibGVzIHdpdGggYSBicmVhZHRoLWZpcnN0IHNlYXJjaC4KKworVGhpcyBmdW5jdGlvbiB3YXMgdXNpbmcgYSBkZXB0aCBmaXJzdCBzZWFyY2guICBCeSBkb2luZyBzbyB0aGUgY29uZmxpY3QKK3Jlc29sdXRpb24gcmVwb3J0ZWQgdG8gdGhlIHByZWxpbmtlciAod2hlbiBMRF9UUkFDRV9QUkVMSU5LSU5HPTEgaXMgc2V0KQord2FzIGluY29ycmVjdC4gIFRoaXMgY2F1c2VkIHByb2JsZW1zIHdoZW4gdGhlaXIgd2VyZSB2YXJpb3VzIGNpcmN1bGFyCitkZXBlbmRlbmNpZXMgYmV0d2VlbiBsaWJyYXJpZXMuICBUaGUgcHJvYmxlbSB1c3VhbGx5IG1hbmlmZXN0ZWQgaXRzZWxmIGJ5Cit0aGUgd3JvbmcgSUZVTkMgYmVpbmcgZXhlY3V0ZWQuCisKK1tCWiMgMjA0ODhdCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBlbGYvZGwtZGVwcy5jIHwgMTQgKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2VsZi9kbC1kZXBzLmMgYi9lbGYvZGwtZGVwcy5jCitpbmRleCA1MTAzYThhMTExLi41NGNkODBhYWZmIDEwMDY0NAorLS0tIGEvZWxmL2RsLWRlcHMuYworKysrIGIvZWxmL2RsLWRlcHMuYworQEAgLTczLDEzICs3MywxOSBAQCBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHN0cnVjdCBsaW5rX21hcCAqKmxpc3QsIHN0cnVjdCBsaW5rX21hcCAqbWFwKQorIHsKKyAgIHN0cnVjdCBsaW5rX21hcCAqKnAgPSBsaXN0OworICAgc3RydWN0IGxpbmtfbWFwICoqcTsKKysgIHN0cnVjdCBsaW5rX21hcCAqKnI7CisgCisgICAqcCsrID0gbWFwOworICAgbWFwLT5sX3Jlc2VydmVkID0gMTsKKy0gIGlmIChtYXAtPmxfaW5pdGZpbmkpCistICAgIGZvciAocSA9IG1hcC0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCistICAgICAgaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKKy0JcCArPSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHAsICpxKTsKKysKKysgIGZvciAociA9IGxpc3Q7IHIgPCBwOyArK3IpCisrICAgIGlmICgoKnIpLT5sX2luaXRmaW5pKQorKyAgICAgIGZvciAocSA9ICgqciktPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQorKwlpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQorKwkgIHsKKysJICAgICpwKysgPSAqcTsKKysJICAgICgqcSktPmxfcmVzZXJ2ZWQgPSAxOworKwkgIH0KKyAgIHJldHVybiBwIC0gbGlzdDsKKyB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTg5ZTExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBhYTVjNzU4ZmJiN2RiYjAyNmRmMzNmYzZiZGMwNTU0ODU0N2JkYjE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0NDowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDI2LzI4XSBpbnRsOiBFbWl0IG5vIGxpbmVzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcwotCi1JbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKLURvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCi1UaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KLXRoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGludGwvTWFrZWZpbGUgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbnRsL01ha2VmaWxlIGIvaW50bC9NYWtlZmlsZQotaW5kZXggOWVlYThkNTdlMy4uNjI3ZGNlNGNmMSAxMDA2NDQKLS0tLSBhL2ludGwvTWFrZWZpbGUKLSsrKyBiL2ludGwvTWFrZWZpbGUKLUBAIC0xNTUsNyArMTU1LDcgQEAgJChvYmpwZngpdHN0LWdldHRleHQ2Lm91dDogJChvYmpwZngpdHN0LWdldHRleHQub3V0Ci0gCi0gQ1BQRkxBR1MgKz0gLUQnTE9DQUxFRElSPSIkKGxvY2FsZWRpcikiJyBcCi0gCSAgICAtRCdMT0NBTEVfQUxJQVNfUEFUSD0iJChsb2NhbGVkaXIpIicKLS1CSVNPTkZMQUdTID0gLS15YWNjIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0Ci0rQklTT05GTEFHUyA9IC0teWFjYyAtLW5vLWxpbmVzIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0Ci0gCi0gJChpbnN0X2xvY2FsZWRpcikvbG9jYWxlLmFsaWFzOiBsb2NhbGUuYWxpYXMgJCgrZm9yY2UpCi0gCSQoZG8taW5zdGFsbCkKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjA1YTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDQgKzAsMCBAQAotRnJvbSBmZWNkOTgwNDBhMmFlMWJjNTk0M2E0MGExNjIzZDc2YTY5NmUwNzg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjkgTm92IDIwMTggMTc6Mjk6MzUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyNy8yOF0gaW5qZWN0IGZpbGUgYXNzZW1ibHkgZGlyZWN0aXZlcwotCi1DdXJyZW50bHksIG5vbi1JQSBidWlsZHMgYXJlIG5vdCByZXByb2R1Y2liaWxlIHNpbmNlIGJ1aWxkIHBhdGhzIGFyZQotYmVpbmcgaW5qZWN0ZWQgaW50byB0aGUgZGVidWcgc3ltYm9scy4gVGhlc2UgYXJlIGNvbWluZyBmcm9tIHRoZSB1c2Ugb2YKLS5TIGFzc2VtYmxlciBmaWxlcyBkdXJpbmcgdGhlIGdsaWJjIGJ1aWxkLiBObyBTVFRfRklMRSBzZWN0aW9uIGlzIGFkZGVkCi1kdXJpbmcgdGhlIGFzc2VtYmx5IGJ1dCB3aGVuIGxpbmtpbmcsIGxkIGRlY2lkZXMgdG8gYWRkIG9uZSB0byBhaWQKLWRlYnVnZ2luZyBhbmQgZW5zdXJlIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IG9iamVjdCBmaWxlcyBpdHMKLWxpbmtpbmcgcmVtYWluIGNsZWFyLgotCi1XZSBjYW4gYXZvaWQgdGhpcyBieSBpbmplY3RpbmcgYSBmaWxlIGhlYWRlciBpbnRvIHRoZSBhc3NlbWJsZXIgZmlsZXMKLWFoZWFkIG9mIHRpbWUsIGNob29zaW5nIGEgZmlsZW5hbWUgd2hpY2ggZG9lcyBub3QgY29udGFpbiBidWlsZCBzeXN0ZW0KLXBhdGhzLgotCi1UaGlzIGlzIGEgYml0IG9mIGEgd29ya2Fyb3VuZC9oYWNrIGJ1dCBkb2VzIHNpZ25pZmljYW50bHkgcmVkdWNlIHRoZQotYnVpbGQgc3lzdGVtIHJlZmVyZW5jZXMgaW4gdGFyZ2V0IGJpbmFyaWVzIGZvciB0aGUgbm9uLUlBIGFyY2hpdGVjdHVyZXMKLXdoaWNoIHVzZSAuUyBmaWxlcy4KLQotUlAKLTIwMTgvMTAvMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNzdS9hYmktbm90ZS5TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FhcmNoNjQvY3J0aS5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hYXJjaDY0L2NydG4uUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL2FiaS1ub3RlLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9jcnRpLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vY3J0bi5TICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUyAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvbWlwcy9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUyAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TICAgfCAyICsrCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUyAgIHwgMiArKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUyB8IDIgKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TICAgICAgfCAyICsrCi0gMjAgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3N1L2FiaS1ub3RlLlMgYi9jc3UvYWJpLW5vdGUuUwotaW5kZXggZmExZjAxNGE4OC4uMDk4NzMxMzYyYSAxMDA2NDQKLS0tLSBhL2NzdS9hYmktbm90ZS5TCi0rKysgYi9jc3UvYWJpLW5vdGUuUwotQEAgLTU2LDYgKzU2LDggQEAgb2Zmc2V0CWxlbmd0aAljb250ZW50cwotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8YWJpLXRhZy5oPgkJLyogT1Mtc3BlY2lmaWMgQUJJIHRhZyB2YWx1ZSAqLwotIAotKwkuZmlsZSAiYWJpLW5vdGUuUyIKLSsKLSAvKiBUaGUgbGlua2VyIChHTlUgbGQgMi44IGFuZCBsYXRlcikgcmVjb2duaXplcyBhbiBhbGxvY2F0ZWQgc2VjdGlvbiB3aG9zZQotICAgIG5hbWUgYmVnaW5zIHdpdGggYC5ub3RlJyBhbmQgY3JlYXRlcyBhIFBUX05PVEUgcHJvZ3JhbSBoZWFkZXIgZW50cnkKLSAgICBwb2ludGluZyBhdCBpdC4gKi8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TIGIvc3lzZGVwcy9hYXJjaDY0L2NydGkuUwotaW5kZXggZDRlN2RmY2Y1Yy4uZTAyMThkZjMwYyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKLUBAIC01MCw2ICs1MCw4IEBACi0gIyBkZWZpbmUgUFJFSU5JVF9GVU5DVElPTl9XRUFLIDEKLSAjZW5kaWYKLSAKLSsgICAgLmZpbGUgImNydGkuUyIKLSsKLSAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCi0gCXdlYWtfZXh0ZXJuIChQUkVJTklUX0ZVTkNUSU9OKQotICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NydG4uUyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKLWluZGV4IDM2M2Y3NTI0NjAuLjJmYjA2ZmJhNjIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCi1AQCAtMzcsNiArMzcsOCBAQAotIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCi0gICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KLSAKLSsJLmZpbGUgImNydG4uUyIKLSsKLSAJLnNlY3Rpb24gLmluaXQsImF4IiwlcHJvZ2JpdHMKLSAJbGRwCXgyOSwgeDMwLCBbc3BdLCAxNgotIAlSRVQKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUwotaW5kZXggNGFiZTZiODJhMy4uOGM0NGIyZmY4YSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKLUBAIC0yMiw2ICsyMiw4IEBACi0gI2luY2x1ZGUgPHRscy5oPgotICNpbmNsdWRlICJ0bHNkZXNjLmgiCi0gCi0rCS5maWxlICJkbC10bHNkZXNjLlMiCi0rCi0gI2RlZmluZSBOU0FWRURRUkVHUEFJUlMJMTYKLSAjZGVmaW5lIFNBVkVfUV9SRUdJU1RFUlMJCQkJXAotIAlzdHAJcTAsIHExLAlbc3AsICMtMzIqTlNBVkVEUVJFR1BBSVJTXSE7CVwKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUwotaW5kZXggMTliMTE3ZThmOS4uMzhjNzhiNTQwOSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKLUBAIC0yMSw2ICsyMSw4IEBACi0gCi0gI2luY2x1ZGUgImRsLWxpbmsuaCIKLSAKLSsJLmZpbGUgImRsLXRyYW1wb2xpbmUuUyIKLSsKLSAjZGVmaW5lIGlwMCB4MTYKLSAjZGVmaW5lIGlwMGwgUFRSX1JFRyAoMTYpCi0gI2RlZmluZSBpcDEgeDE3Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUwotaW5kZXggZjVlOWI5YzIyMy4uYWUzZTIyYTZhNSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUwotQEAgLTE4LDYgKzE4LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJzdGFydC5TIgotKwotIC8qIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBlbnRyeSBwb2ludCwgdXN1YWxseSB0aGUgZmlyc3QgdGhpbmcgaW4gdGhlIHRleHQKLSAgICBzZWdtZW50LgotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMgYi9zeXNkZXBzL2FybS9hYmktbm90ZS5TCi1pbmRleCAwN2JkNGM0NjE5Li43MjEzYjE2ZjI3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUwotKysrIGIvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUwotQEAgLTEsMyArMSw1IEBACi0rCS5maWxlICJhYmktbm90ZS5TIgotKwotIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKLSAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCi0gCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NydGkuUyBiL3N5c2RlcHMvYXJtL2NydGkuUwotaW5kZXggMjZkYmJhNjZhMy4uZGQ4NGVjZDU2NiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NydGkuUwotKysrIGIvc3lzZGVwcy9hcm0vY3J0aS5TCi1AQCAtNTcsNiArNTcsOCBAQAotIAkuaGlkZGVuIFBSRUlOSVRfRlVOQ1RJT04KLSAjZW5kaWYKLSAKLSsgICAgLmZpbGUgImNydGkuUyIKLSsKLSAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCi0gCS5wMmFsaWduIDIKLSAJLnR5cGUgY2FsbF93ZWFrX2ZuLCAlZnVuY3Rpb24KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jcnRuLlMgYi9zeXNkZXBzL2FybS9jcnRuLlMKLWluZGV4IDhmOTFjOGQ4OGIuLmE4N2ZlNDllMDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jcnRuLlMKLSsrKyBiL3N5c2RlcHMvYXJtL2NydG4uUwotQEAgLTM3LDYgKzM3LDggQEAKLSAjZGVmaW5lIE5PX1RIVU1CCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKyAgICAuZmlsZSAiY3J0bi5TIgotKwotIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCi0gICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KLSAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKLWluZGV4IGE5MjkzNDBiNDIuLmI3MjRjOTc3NmQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKLSsrKyBiL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUwotQEAgLTIxLDYgKzIxLDggQEAKLSAjaW5jbHVkZSA8dGxzLmg+Ci0gI2luY2x1ZGUgInRsc2Rlc2MuaCIKLSAKLSsJLmZpbGUgImRsLXRsc2Rlc2MuUyIKLSsKLSAJLnRleHQKLSAJQCBlbWl0IGRlYnVnIGluZm9ybWF0aW9uIHdpdGggY2ZpCi0gCUAgdXNlIGFybS1zcGVjaWZpYyBwc2V1ZG9zIGZvciB1bndpbmRpbmcgaXRzZWxmCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TIGIvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCi1pbmRleCAzMjVjZmNkMmNlLi40YmZkY2JjZTUxIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCi0rKysgYi9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKLUBAIC0yMSw2ICsyMSw4IEBACi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotICNpbmNsdWRlIDxsaWJjLXN5bWJvbHMuaD4KLSAKLSsJLmZpbGUgImRsLXRyYW1wb2xpbmUuUyIKLSsKLSAJLnRleHQKLSAJLmdsb2JsIF9kbF9ydW50aW1lX3Jlc29sdmUKLSAJLnR5cGUgX2RsX3J1bnRpbWVfcmVzb2x2ZSwgI2Z1bmN0aW9uCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vc3RhcnQuUyBiL3N5c2RlcHMvYXJtL3N0YXJ0LlMKLWluZGV4IGEwNWY4YTQ2NTEuLjJmNDM3NGZjYWEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9zdGFydC5TCi0rKysgYi9zeXNkZXBzL2FybS9zdGFydC5TCi1AQCAtNTcsNiArNTcsOCBAQAotIAkJCQkJTlVMTAotICovCi0gCi0rCS5maWxlICJzdGFydC5TIgotKwotIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKLSAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCi0gCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9zdGFydC5TIGIvc3lzZGVwcy9taXBzL3N0YXJ0LlMKLWluZGV4IDg2MzhlNWI1NDUuLjkzZjY1NjRhZWMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvc3RhcnQuUwotKysrIGIvc3lzZGVwcy9taXBzL3N0YXJ0LlMKLUBAIC0zOCw2ICszOCw4IEBACi0gI2luY2x1ZGUgPHNnaWRlZnMuaD4KLSAjaW5jbHVkZSA8c3lzL2FzbS5oPgotIAotKwkuZmlsZSAic3RhcnQuUyIKLSsKLSAjaWZuZGVmIEVOVFJZX1BPSU5UCi0gI2Vycm9yIEVOVFJZX1BPSU5UIG5lZWRzIHRvIGJlIGRlZmluZWQgZm9yIHN0YXJ0LlMgb24gTUlQUy9FTEYuCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCi1pbmRleCA5OWExMGQ2NDNhLi5lNDdmYzBkMjQ1IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKLUBAIC0xOCw2ICsxOCw4IEBACi0gCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKwkuZmlsZSAiZGwtc3RhcnQuUyIKLSsKLSAvKiBJbml0aWFsIGVudHJ5IHBvaW50IGNvZGUgZm9yIHRoZSBkeW5hbWljIGxpbmtlci4KLSAgICBUaGUgQyBmdW5jdGlvbiBgX2RsX3N0YXJ0JyBpcyB0aGUgcmVhbCBlbnRyeSBwb2ludDsKLSAgICBpdHMgcmV0dXJuIHZhbHVlIGlzIHRoZSB1c2VyIHByb2dyYW0ncyBlbnRyeSBwb2ludC4JKi8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKLWluZGV4IDE3MmZiNWE1NmIuLmVmMTQ3MWI4NjEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUwotQEAgLTM1LDYgKzM1LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJzdGFydC5TIgotKwotIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAotICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLwotICN1bmRlZiBjZmlfc3RhcnRwcm9jCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCi1pbmRleCA1NWZhZTY4YWQ2Li4wY2I2MDhmZTBmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKLUBAIC0zNSw2ICszNSw4IEBACi0gCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKwkuZmlsZSAic3RhcnQuUyIKLSsKLSAvKiBXZSBkbyBub3Qgd2FudCAuZWhfZnJhbWUgaW5mbyBmb3IgY3J0MS5vIHNpbmNlIGNydDEubyBpcyBsaW5rZWQKLSAgICBiZWZvcmUgY3J0YmVnaW4ubywgdGhlIGZpbGUgZGVmaW5pbmcgX19FSF9GUkFNRV9CRUdJTl9fLiAgKi8KLSAjdW5kZWYgY2ZpX3N0YXJ0cHJvYwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCi1pbmRleCAzMGEyOWI5ZmIwLi4wNzg5MmIzODNmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUwotQEAgLTE4LDYgKzE4LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJfX3JlYWRfdHAuUyIKLSsKLSAJLmhpZGRlbiBfX3JlYWRfdHAKLSBFTlRSWSAoX19yZWFkX3RwKQotIAltcnMJeDAsIHRwaWRyX2VsMAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCi1pbmRleCBmNjRjNGZmZThhLi4yZGEzMTVhYjA4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUwotQEAgLTM5LDYgKzM5LDggQEAKLSAgICBhIG5vcm1hbCBmdW5jdGlvbiBjYWxsKSBpbiBhIGhpZ2ggcGFnZSBvZiBtZW1vcnk7IHRhaWwgY2FsbCB0byB0aGUKLSAgICBoZWxwZXIuICAqLwotIAotKwkuZmlsZSAiYWVhYmlfcmVhZF90cC5TIgotKwotIAkuaGlkZGVuIF9fYWVhYmlfcmVhZF90cAotIEVOVFJZIChfX2FlYWJpX3JlYWRfdHApCi0gI2lmZGVmIEFSQ0hfSEFTX0hBUkRfVFAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKLWluZGV4IDBiNjIzN2FjNTUuLjhjZGE0OTFjMjggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUwotQEAgLTI3LDYgKzI3LDggQEAKLSAgICBBUk0gdW53aW5kIHRhYmxlcyBmb3IgcmVnaXN0ZXIgdG8gcmVnaXN0ZXIgbW92ZXMsIHRoZSBhY3R1YWwgb3Bjb2RlcwotICAgIGFyZSBub3QgZGVmaW5lZC4gICovCi0gCi0rICAgICAgLmZpbGUgImxpYmMtZG8tc3lzY2FsbC5TIgotKwotICNpZiBkZWZpbmVkKF9fdGh1bWJfXykKLSAJLnRodW1iCi0gCS5zeW50YXggdW5pZmllZAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCi1pbmRleCBlZWI5NjU0NGUzLi5kYTE4MmIyOGY4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUwotQEAgLTEgKzEsMyBAQAotKwkuZmlsZSAiZGwtYnJrLlMiCi0rCi0gI2luY2x1ZGUgPGJyay5TPgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzMxN2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAzYzhkOWVhZTgzYWI0ZjE2NzdhZmM5YjM3OWY5NzExNGU4NTAzMzYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0NDowMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbnRsOiBFbWl0IG5vIGxpbmVzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcworCitJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKK0RvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCitUaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KK3RoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGludGwvTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnRsL01ha2VmaWxlIGIvaW50bC9NYWtlZmlsZQoraW5kZXggY2UzMDcyNDIwZi4uNTg0NTc4NDBkOSAxMDA2NDQKKy0tLSBhL2ludGwvTWFrZWZpbGUKKysrKyBiL2ludGwvTWFrZWZpbGUKK0BAIC0xNTUsNyArMTU1LDcgQEAgJChvYmpwZngpdHN0LWdldHRleHQ2Lm91dDogJChvYmpwZngpdHN0LWdldHRleHQub3V0CisgCisgQ1BQRkxBR1MgKz0gLUQnTE9DQUxFRElSPSIkKGxvY2FsZWRpcikiJyBcCisgCSAgICAtRCdMT0NBTEVfQUxJQVNfUEFUSD0iJChsb2NhbGVkaXIpIicKKy1CSVNPTkZMQUdTID0gLS15YWNjIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0CisrQklTT05GTEFHUyA9IC0teWFjYyAtLW5vLWxpbmVzIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0CisgCisgJChpbnN0X2xvY2FsZWRpcikvbG9jYWxlLmFsaWFzOiBsb2NhbGUuYWxpYXMgJCgrZm9yY2UpCisgCSQoZG8taW5zdGFsbCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFhMDMwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoCkBAIC0wLDAgKzEsMzAxIEBACitGcm9tIDQyMDQ1NGY3MDk4YjU0NDU3MzBjYWE4NTVjMzdiODE0M2JmY2NjMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyOSBOb3YgMjAxOCAxNzoyOTozNSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBpbmplY3QgZmlsZSBhc3NlbWJseSBkaXJlY3RpdmVzCisKK0N1cnJlbnRseSwgbm9uLUlBIGJ1aWxkcyBhcmUgbm90IHJlcHJvZHVjaWJpbGUgc2luY2UgYnVpbGQgcGF0aHMgYXJlCitiZWluZyBpbmplY3RlZCBpbnRvIHRoZSBkZWJ1ZyBzeW1ib2xzLiBUaGVzZSBhcmUgY29taW5nIGZyb20gdGhlIHVzZSBvZgorLlMgYXNzZW1ibGVyIGZpbGVzIGR1cmluZyB0aGUgZ2xpYmMgYnVpbGQuIE5vIFNUVF9GSUxFIHNlY3Rpb24gaXMgYWRkZWQKK2R1cmluZyB0aGUgYXNzZW1ibHkgYnV0IHdoZW4gbGlua2luZywgbGQgZGVjaWRlcyB0byBhZGQgb25lIHRvIGFpZAorZGVidWdnaW5nIGFuZCBlbnN1cmUgcmVmZXJlbmNlcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb2JqZWN0IGZpbGVzIGl0cworbGlua2luZyByZW1haW4gY2xlYXIuCisKK1dlIGNhbiBhdm9pZCB0aGlzIGJ5IGluamVjdGluZyBhIGZpbGUgaGVhZGVyIGludG8gdGhlIGFzc2VtYmxlciBmaWxlcworYWhlYWQgb2YgdGltZSwgY2hvb3NpbmcgYSBmaWxlbmFtZSB3aGljaCBkb2VzIG5vdCBjb250YWluIGJ1aWxkIHN5c3RlbQorcGF0aHMuCisKK1RoaXMgaXMgYSBiaXQgb2YgYSB3b3JrYXJvdW5kL2hhY2sgYnV0IGRvZXMgc2lnbmlmaWNhbnRseSByZWR1Y2UgdGhlCitidWlsZCBzeXN0ZW0gcmVmZXJlbmNlcyBpbiB0YXJnZXQgYmluYXJpZXMgZm9yIHRoZSBub24tSUEgYXJjaGl0ZWN0dXJlcword2hpY2ggdXNlIC5TIGZpbGVzLgorCitSUAorMjAxOC8xMC8zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY3N1L2FiaS1ub3RlLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYWFyY2g2NC9jcnRpLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FhcmNoNjQvY3J0bi5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUyAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FhcmNoNjQvc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vYWJpLW5vdGUuUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL2NydGkuUyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9jcnRuLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUyAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9taXBzL3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUyAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMgICB8IDIgKysKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TICAgfCAyICsrCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TIHwgMiArKworIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMgICAgICB8IDIgKysKKyAyMCBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jc3UvYWJpLW5vdGUuUyBiL2NzdS9hYmktbm90ZS5TCitpbmRleCAyYjRiNWY4ODI0Li45NjQ4NDMwMTZjIDEwMDY0NAorLS0tIGEvY3N1L2FiaS1ub3RlLlMKKysrKyBiL2NzdS9hYmktbm90ZS5TCitAQCAtNTYsNiArNTYsOCBAQCBvZmZzZXQJbGVuZ3RoCWNvbnRlbnRzCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxhYmktdGFnLmg+CQkvKiBPUy1zcGVjaWZpYyBBQkkgdGFnIHZhbHVlICovCisgCisrCS5maWxlICJhYmktbm90ZS5TIgorKworIC8qIFRoZSBsaW5rZXIgKEdOVSBsZCAyLjggYW5kIGxhdGVyKSByZWNvZ25pemVzIGFuIGFsbG9jYXRlZCBzZWN0aW9uIHdob3NlCisgICAgbmFtZSBiZWdpbnMgd2l0aCBgLm5vdGUnIGFuZCBjcmVhdGVzIGEgUFRfTk9URSBwcm9ncmFtIGhlYWRlciBlbnRyeQorICAgIHBvaW50aW5nIGF0IGl0LiAqLworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMgYi9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCitpbmRleCAxNzI4ZWFjMzdhLi43NmE4YWI1OTBiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NydGkuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NydGkuUworQEAgLTUwLDYgKzUwLDggQEAKKyAjIGRlZmluZSBQUkVJTklUX0ZVTkNUSU9OX1dFQUsgMQorICNlbmRpZgorIAorKyAgICAuZmlsZSAiY3J0aS5TIgorKworICNpZiBQUkVJTklUX0ZVTkNUSU9OX1dFQUsKKyAJd2Vha19leHRlcm4gKFBSRUlOSVRfRlVOQ1RJT04pCisgI2Vsc2UKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TIGIvc3lzZGVwcy9hYXJjaDY0L2NydG4uUworaW5kZXggYzNlOTdjYzQ0OS4uZmMyZTVjMmRmOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKK0BAIC0zNyw2ICszNyw4IEBACisgLyogY3J0bi5TIHB1dHMgZnVuY3Rpb24gZXBpbG9ndWVzIGluIHRoZSAuaW5pdCBhbmQgLmZpbmkgc2VjdGlvbnMKKyAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9sb2d1ZXMgaW4gY3J0aS5TLiAqLworIAorKwkuZmlsZSAiY3J0bi5TIgorKworIAkuc2VjdGlvbiAuaW5pdCwiYXgiLCVwcm9nYml0cworIAlsZHAJeDI5LCB4MzAsIFtzcF0sIDE2CisgCVJFVAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCitpbmRleCA1NTdhZDFkNTA1Li4xOTRhODUzMWRhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUworQEAgLTIyLDYgKzIyLDggQEAKKyAjaW5jbHVkZSA8dGxzLmg+CisgI2luY2x1ZGUgInRsc2Rlc2MuaCIKKyAKKysJLmZpbGUgImRsLXRsc2Rlc2MuUyIKKysKKyAjZGVmaW5lIE5TQVZFRFFSRUdQQUlSUwkxNgorICNkZWZpbmUgU0FWRV9RX1JFR0lTVEVSUwkJCQlcCisgCXN0cAlxMCwgcTEsCVtzcCwgIy0zMipOU0FWRURRUkVHUEFJUlNdITsJXAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCitpbmRleCA5NGU5NjVjMDk2Li5iYTE4NzQyZjNlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUworQEAgLTIxLDYgKzIxLDggQEAKKyAKKyAjaW5jbHVkZSAiZGwtbGluay5oIgorIAorKwkuZmlsZSAiZGwtdHJhbXBvbGluZS5TIgorKworICNkZWZpbmUgaXAwIHgxNgorICNkZWZpbmUgaXAwbCBQVFJfUkVHICgxNikKKyAjZGVmaW5lIGlwMSB4MTcKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCitpbmRleCBkOTZjZjU3ZTJkLi4wN2E1MjM5NzhhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogVGhpcyBpcyB0aGUgY2Fub25pY2FsIGVudHJ5IHBvaW50LCB1c3VhbGx5IHRoZSBmaXJzdCB0aGluZyBpbiB0aGUgdGV4dAorICAgIHNlZ21lbnQuCisgCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUyBiL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKK2luZGV4IDA3YmQ0YzQ2MTkuLjcyMTNiMTZmMjcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9hYmktbm90ZS5TCisrKysgYi9zeXNkZXBzL2FybS9hYmktbm90ZS5TCitAQCAtMSwzICsxLDUgQEAKKysJLmZpbGUgImFiaS1ub3RlLlMiCisrCisgLyogVGFnX0FCSV9hbGlnbjhfcHJlc2VydmVkOiBUaGlzIGNvZGUgcHJlc2VydmVzIDgtYnl0ZQorICAgIGFsaWdubWVudCBpbiBhbnkgY2FsbGVlLiAgKi8KKyAJLmVhYmlfYXR0cmlidXRlIDI1LCAxCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY3J0aS5TIGIvc3lzZGVwcy9hcm0vY3J0aS5TCitpbmRleCA4MTY5NzgzMjY3Li5mNTZlMGM4NWE2IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY3J0aS5TCisrKysgYi9zeXNkZXBzL2FybS9jcnRpLlMKK0BAIC01Nyw2ICs1Nyw4IEBACisgCS5oaWRkZW4gUFJFSU5JVF9GVU5DVElPTgorICNlbmRpZgorIAorKyAgICAuZmlsZSAiY3J0aS5TIgorKworICNpZiBQUkVJTklUX0ZVTkNUSU9OX1dFQUsKKyAJLnAyYWxpZ24gMgorIAkudHlwZSBjYWxsX3dlYWtfZm4sICVmdW5jdGlvbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NydG4uUyBiL3N5c2RlcHMvYXJtL2NydG4uUworaW5kZXggZDYwZjlmMDVkZS4uMWUxMGVjNDM5ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NydG4uUworKysrIGIvc3lzZGVwcy9hcm0vY3J0bi5TCitAQCAtMzcsNiArMzcsOCBAQAorICNkZWZpbmUgTk9fVEhVTUIKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrICAgIC5maWxlICJjcnRuLlMiCisrCisgLyogY3J0bi5TIHB1dHMgZnVuY3Rpb24gZXBpbG9ndWVzIGluIHRoZSAuaW5pdCBhbmQgLmZpbmkgc2VjdGlvbnMKKyAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9sb2d1ZXMgaW4gY3J0aS5TLiAqLworIAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUyBiL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUworaW5kZXggODQxNWU0NzYwNy4uMjljMmNiODEyOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUworKysrIGIvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCitAQCAtMjEsNiArMjEsOCBAQAorICNpbmNsdWRlIDx0bHMuaD4KKyAjaW5jbHVkZSAidGxzZGVzYy5oIgorIAorKwkuZmlsZSAiZGwtdGxzZGVzYy5TIgorKworIAkudGV4dAorIAlAIGVtaXQgZGVidWcgaW5mb3JtYXRpb24gd2l0aCBjZmkKKyAJQCB1c2UgYXJtLXNwZWNpZmljIHBzZXVkb3MgZm9yIHVud2luZGluZyBpdHNlbGYKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMgYi9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKK2luZGV4IGEyMGJhZjU1NWUuLjJkZDNiZWYwNGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKKysrKyBiL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUworQEAgLTIxLDYgKzIxLDggQEAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgI2luY2x1ZGUgPGxpYmMtc3ltYm9scy5oPgorIAorKwkuZmlsZSAiZGwtdHJhbXBvbGluZS5TIgorKworIAkudGV4dAorIAkuZ2xvYmwgX2RsX3J1bnRpbWVfcmVzb2x2ZQorIAkudHlwZSBfZGxfcnVudGltZV9yZXNvbHZlLCAjZnVuY3Rpb24KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9zdGFydC5TIGIvc3lzZGVwcy9hcm0vc3RhcnQuUworaW5kZXggMmZmNTYxNzlkMi4uYzExODA0NmVjNiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvYXJtL3N0YXJ0LlMKK0BAIC01Nyw2ICs1Nyw4IEBACisgCQkJCQlOVUxMCisgKi8KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogVGFnX0FCSV9hbGlnbjhfcHJlc2VydmVkOiBUaGlzIGNvZGUgcHJlc2VydmVzIDgtYnl0ZQorICAgIGFsaWdubWVudCBpbiBhbnkgY2FsbGVlLiAgKi8KKyAJLmVhYmlfYXR0cmlidXRlIDI1LCAxCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL3N0YXJ0LlMgYi9zeXNkZXBzL21pcHMvc3RhcnQuUworaW5kZXggZmFiYzgwODBkZi4uODNjNmI5MWQ3ZCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9zdGFydC5TCisrKysgYi9zeXNkZXBzL21pcHMvc3RhcnQuUworQEAgLTM4LDYgKzM4LDggQEAKKyAjaW5jbHVkZSA8c2dpZGVmcy5oPgorICNpbmNsdWRlIDxzeXMvYXNtLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworICNpZm5kZWYgRU5UUllfUE9JTlQKKyAjZXJyb3IgRU5UUllfUE9JTlQgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3Igc3RhcnQuUyBvbiBNSVBTL0VMRi4KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKK2luZGV4IGMxNTI0MmQzYmMuLjZjYTI3NzE1YTQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUworQEAgLTE4LDYgKzE4LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJkbC1zdGFydC5TIgorKworIC8qIEluaXRpYWwgZW50cnkgcG9pbnQgY29kZSBmb3IgdGhlIGR5bmFtaWMgbGlua2VyLgorICAgIFRoZSBDIGZ1bmN0aW9uIGBfZGxfc3RhcnQnIGlzIHRoZSByZWFsIGVudHJ5IHBvaW50OworICAgIGl0cyByZXR1cm4gdmFsdWUgaXMgdGhlIHVzZXIgcHJvZ3JhbSdzIGVudHJ5IHBvaW50LgkqLworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworaW5kZXggYjdiOWExMzNhMi4uOGRmNzE0ZjgxYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCitAQCAtMzUsNiArMzUsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogV2UgZG8gbm90IHdhbnQgLmVoX2ZyYW1lIGluZm8gZm9yIGNydDEubyBzaW5jZSBjcnQxLm8gaXMgbGlua2VkCisgICAgYmVmb3JlIGNydGJlZ2luLm8sIHRoZSBmaWxlIGRlZmluaW5nIF9fRUhfRlJBTUVfQkVHSU5fXy4gICovCisgI3VuZGVmIGNmaV9zdGFydHByb2MKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKK2luZGV4IDk0YmY3NzFlODMuLmNmZmI5OTUwMGEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUworQEAgLTM1LDYgKzM1LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAorICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLworICN1bmRlZiBjZmlfc3RhcnRwcm9jCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKK2luZGV4IDEyZTExMzFmZTcuLjc2N2UwZDA0M2IgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgIl9fcmVhZF90cC5TIgorKworIAkuaGlkZGVuIF9fcmVhZF90cAorIEVOVFJZIChfX3JlYWRfdHApCisgCW1ycwl4MCwgdHBpZHJfZWwwCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKK2luZGV4IDNiMGQ2MTEwMzkuLjRhN2U0NzZjMzcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCitAQCAtMzksNiArMzksOCBAQAorICAgIGEgbm9ybWFsIGZ1bmN0aW9uIGNhbGwpIGluIGEgaGlnaCBwYWdlIG9mIG1lbW9yeTsgdGFpbCBjYWxsIHRvIHRoZQorICAgIGhlbHBlci4gICovCisgCisrCS5maWxlICJhZWFiaV9yZWFkX3RwLlMiCisrCisgCS5oaWRkZW4gX19hZWFiaV9yZWFkX3RwCisgRU5UUlkgKF9fYWVhYmlfcmVhZF90cCkKKyAjaWZkZWYgQVJDSF9IQVNfSEFSRF9UUAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUworaW5kZXggZmI1ZTBjN2Q5Ny4uYmQwN2JkYjM4YiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCitAQCAtMjcsNiArMjcsOCBAQAorICAgIEFSTSB1bndpbmQgdGFibGVzIGZvciByZWdpc3RlciB0byByZWdpc3RlciBtb3ZlcywgdGhlIGFjdHVhbCBvcGNvZGVzCisgICAgYXJlIG5vdCBkZWZpbmVkLiAgKi8KKyAKKysgICAgICAuZmlsZSAibGliYy1kby1zeXNjYWxsLlMiCisrCisgI2lmIGRlZmluZWQoX190aHVtYl9fKQorIAkudGh1bWIKKyAJLnN5bnRheCB1bmlmaWVkCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKK2luZGV4IGVlYjk2NTQ0ZTMuLmRhMTgyYjI4ZjggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCitAQCAtMSArMSwzIEBACisrCS5maWxlICJkbC1icmsuUyIKKysKKyAjaW5jbHVkZSA8YnJrLlM+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzQ5MDY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBkOTM0Nzg4ZTMyMjFjMjhjOWExODkyMjM1Y2JlNGNmZDFiMjhjZWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNyBEZWMgMjAxOCAyMTozNjoxOCArMDAwMAotU3ViamVjdDogW1BBVENIIDI4LzI4XSBsb2NhbGU6IHByZXZlbnQgbWF5YmUtdW5pbml0aWFsaXplZCBlcnJvcnMgd2l0aCAtT3MgW0JaCi0gIzE5NDQ0XQotCi1GaXhlcyBmb2xsb3dpbmcgZXJyb3Igd2hlbiBidWlsZGluZyBmb3IgYWFyY2g2NCB3aXRoIC1PczoKLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgotfCBzdHJjb2xsX2wuYzogSW4gZnVuY3Rpb24gJ19fc3RyY29sbF9sJzoKLXwgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTIuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCi18ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KLXwgc3RyY29sbF9sLmM6MzA0OjE4OiBub3RlOiAnc2VxMi5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQotfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOwotfCAgICAgICAgICAgICAgICAgICBefn5+Ci18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzdHJjb2xsX2wuYzo0MzoKLXwgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTEuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCi18ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KLXwgc3RyY29sbF9sLmM6MzA0OjEyOiBub3RlOiAnc2VxMS5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQotfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOwotfCAgICAgICAgICAgICBefn5+Ci0KLSAgICAgICAgUGFydGlhbCBmaXggZm9yIFtCWiAjMTk0NDRdCi0gICAgICAgICogbG9jYWxlL3dlaWdodC5oOiBGaXggYnVpbGQgd2l0aCAtT3MuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzEwMTQ3NjZdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvd2VpZ2h0LmggfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvd2VpZ2h0LmggYi9sb2NhbGUvd2VpZ2h0LmgKLWluZGV4IDdjYTgxNDk4YjIuLmQ2MDhjYTcwYmIgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvd2VpZ2h0LmgKLSsrKyBiL2xvY2FsZS93ZWlnaHQuaAotQEAgLTI4LDcgKzI4LDE0IEBAIGZpbmRpZHggKGNvbnN0IGludDMyX3QgKnRhYmxlLAotIAkgY29uc3QgdW5zaWduZWQgY2hhciAqZXh0cmEsCi0gCSBjb25zdCB1bnNpZ25lZCBjaGFyICoqY3BwLCBzaXplX3QgbGVuKQotIHsKLSsgIC8qIFdpdGggR0NDIDggd2hlbiBjb21waWxpbmcgd2l0aCAtT3MgdGhlIGNvbXBpbGVyIHdhcm5zIHRoYXQKLSsgICAgIHNlcTEuYmFja191cyBhbmQgc2VxMi5iYWNrX3VzIG1pZ2h0IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KLSsgICAgIFRoaXMgdW5pbml0aWFsaXplZCB1c2UgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIHNhbWUgcmVhc29uCi0rICAgICBhcyBkZXNjcmliZWQgaW4gY29tbWVudHMgaW4gbG9jYWxlL3dlaWdodHdjLmguICAqLwotKyAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7Ci0rICBESUFHX0lHTk9SRV9Pc19ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7Ci0gICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107Ci0rICBESUFHX1BPUF9ORUVEU19DT01NRU5UOwotICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3A7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyICp1c3JjOwotIAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGMzNTlmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA2Njk2M2FkODNiZGQzYjA3NTAwNmRkY2E5ZGZlMzU3YWVkMTgxZDZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNyBEZWMgMjAxOCAyMTozNjoxOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGU6IHByZXZlbnQgbWF5YmUtdW5pbml0aWFsaXplZCBlcnJvcnMgd2l0aCAtT3MgW0JaCisgIzE5NDQ0XQorCitGaXhlcyBmb2xsb3dpbmcgZXJyb3Igd2hlbiBidWlsZGluZyBmb3IgYWFyY2g2NCB3aXRoIC1PczoKK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgorfCBzdHJjb2xsX2wuYzogSW4gZnVuY3Rpb24gJ19fc3RyY29sbF9sJzoKK3wgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTIuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KK3wgc3RyY29sbF9sLmM6MzA0OjE4OiBub3RlOiAnc2VxMi5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOworfCAgICAgICAgICAgICAgICAgICBefn5+Cit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzdHJjb2xsX2wuYzo0MzoKK3wgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTEuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KK3wgc3RyY29sbF9sLmM6MzA0OjEyOiBub3RlOiAnc2VxMS5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOworfCAgICAgICAgICAgICBefn5+CisKKyAgICAgICAgUGFydGlhbCBmaXggZm9yIFtCWiAjMTk0NDRdCisgICAgICAgICogbG9jYWxlL3dlaWdodC5oOiBGaXggYnVpbGQgd2l0aCAtT3MuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzEwMTQ3NjZdCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvd2VpZ2h0LmggfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvd2VpZ2h0LmggYi9sb2NhbGUvd2VpZ2h0LmgKK2luZGV4IGUwNzEyNTNmODUuLjI4ODljMzk1ZjEgMTAwNjQ0CistLS0gYS9sb2NhbGUvd2VpZ2h0LmgKKysrKyBiL2xvY2FsZS93ZWlnaHQuaAorQEAgLTI4LDcgKzI4LDE0IEBAIGZpbmRpZHggKGNvbnN0IGludDMyX3QgKnRhYmxlLAorIAkgY29uc3QgdW5zaWduZWQgY2hhciAqZXh0cmEsCisgCSBjb25zdCB1bnNpZ25lZCBjaGFyICoqY3BwLCBzaXplX3QgbGVuKQorIHsKKysgIC8qIFdpdGggR0NDIDggd2hlbiBjb21waWxpbmcgd2l0aCAtT3MgdGhlIGNvbXBpbGVyIHdhcm5zIHRoYXQKKysgICAgIHNlcTEuYmFja191cyBhbmQgc2VxMi5iYWNrX3VzIG1pZ2h0IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KKysgICAgIFRoaXMgdW5pbml0aWFsaXplZCB1c2UgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIHNhbWUgcmVhc29uCisrICAgICBhcyBkZXNjcmliZWQgaW4gY29tbWVudHMgaW4gbG9jYWxlL3dlaWdodHdjLmguICAqLworKyAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7CisrICBESUFHX0lHTk9SRV9Pc19ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107CisrICBESUFHX1BPUF9ORUVEU19DT01NRU5UOworICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3A7CisgICBjb25zdCB1bnNpZ25lZCBjaGFyICp1c3JjOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLUltcHJvdmUtSUZVTkMtY2hlY2stQlotMjU1MDYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtSW1wcm92ZS1JRlVOQy1jaGVjay1CWi0yNTUwNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2IzOThkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLUltcHJvdmUtSUZVTkMtY2hlY2stQlotMjU1MDYucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA4N2E2OThhMjE2NDZiN2VlNjIwOTIzZWY1ZmZhOTczNTQ3MWE4ZGRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuZ3J1aSBTb25nIDxtYXNrcmF5QGdvb2dsZS5jb20+CitEYXRlOiBUdWUsIDQgRmViIDIwMjAgMjE6NTU6NDQgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW1wcm92ZSBJRlVOQyBjaGVjayBbQlogIzI1NTA2XQorCitHTlUgbGQncyBSSVNDViBwb3J0IGRvZXMgbm90IHN1cHBvcnQgSUZVTkMuIGxkIC1uby1waWUgcHJvZHVjZXMgbm8KK3JlbG9jYXRpb24gYW5kIHRoZSB0ZXN0IHBhc3NlZCBpbmNvcnJlY3RseS4gQmUgbW9yZSByaWdpZCBieSB0ZXN0aW5nCitJUkVMQVRJVkUgZXhwbGljaXRseS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWdsaWJjLmdpdDtoPTg3YTY5OGEyMTY0NmI3ZWU2MjA5MjNlZjVmZmE5NzM1NDcxYThkZGRdCitUZXN0ZWQtYnk6IEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4KK1Jldmlld2VkLWJ5OiBBZGhlbWVydmFsIFphbmVsbGEgPGFkaGVtZXJ2YWwuemFuZWxsYUBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGI5NTlkMmQ5ODguLjNiOThlYzMxMmYgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTQwMzUsNyArNDAzNSw3IEBAIGlmICR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIFwKKyAJICAgIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LlMgMT4mNSAyPiY1OyB0aGVuCisgICAjIERvIGEgbGluayB0byBzZWUgaWYgdGhlIGJhY2tlbmQgc3VwcG9ydHMgSUZVTkMgcmVsb2NzLgorICAgJFJFQURFTEYgLXIgY29uZnRlc3QgMT4mNQorLSAgTENfQUxMPUMgJFJFQURFTEYgLXIgY29uZnRlc3QgfCBncmVwICdubyByZWxvY2F0aW9ucycgPi9kZXYvbnVsbCB8fCB7CisrICBMQ19BTEw9QyAkUkVBREVMRiAtV3IgY29uZnRlc3QgfCBncmVwIC1xICdJUkVMQVRJVkVcfFJfU1BBUkNfSk1QX0lSRUwnICYmIHsKKyAgICAgbGliY19jdl9sZF9nbnVfaW5kaXJlY3RfZnVuY3Rpb249eWVzCisgICB9CisgZmkKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDQ5YjkwMGMxZWQuLmUyMDAzNGYzMDEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY0OSw3ICs2NDksNyBAQCBpZiAke0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBcCisgCSAgICAtbyBjb25mdGVzdCBjb25mdGVzdC5TIDE+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JkFTX01FU1NBR0VfTE9HX0ZEOyB0aGVuCisgICAjIERvIGEgbGluayB0byBzZWUgaWYgdGhlIGJhY2tlbmQgc3VwcG9ydHMgSUZVTkMgcmVsb2NzLgorICAgJFJFQURFTEYgLXIgY29uZnRlc3QgMT4mQVNfTUVTU0FHRV9MT0dfRkQKKy0gIExDX0FMTD1DICRSRUFERUxGIC1yIGNvbmZ0ZXN0IHwgZ3JlcCAnbm8gcmVsb2NhdGlvbnMnID4vZGV2L251bGwgfHwgeworKyAgTENfQUxMPUMgJFJFQURFTEYgLVdyIGNvbmZ0ZXN0IHwgZ3JlcCAtcSAnSVJFTEFUSVZFXHxSX1NQQVJDX0pNUF9JUkVMJyAmJiB7CisgICAgIGxpYmNfY3ZfbGRfZ251X2luZGlyZWN0X2Z1bmN0aW9uPXllcworICAgfQorIGZpCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtRml4LWJ1aWxkLXdpdGgtR0NDLTEwLXdoZW4tbG9uZy1kb3VibGUtZG91YmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLUZpeC1idWlsZC13aXRoLUdDQy0xMC13aGVuLWxvbmctZG91YmxlLWRvdWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjYyMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLUZpeC1idWlsZC13aXRoLUdDQy0xMC13aGVuLWxvbmctZG91YmxlLWRvdWJsZS5wYXRjaApAQCAtMCwwICsxLDE3MCBAQAorRnJvbSA0OTM0OGJlYWZlOWJhMTUwYzliZDQ4NTk1YjNmMzcyMjk5YmRkYmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zZXBoIE15ZXJzIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KK0RhdGU6IFR1ZSwgMTcgTWFyIDIwMjAgMjI6NTc6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggR0NDIDEwIHdoZW4gbG9uZyBkb3VibGUgPSBkb3VibGUuCisKK09uIHBsYXRmb3JtcyB3aGVyZSBsb25nIGRvdWJsZSBoYXMgdGhlIHNhbWUgQUJJIGFzIGRvdWJsZSwgZ2xpYmMKK2RlZmluZXMgbG9uZyBkb3VibGUgZnVuY3Rpb25zIGFzIGFsaWFzZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZQorZnVuY3Rpb25zLiAgVGhlIGRlY2xhcmF0aW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMgaW4gPG1hdGguaD4gYXJlCitkaXNhYmxlZCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGFsaWFzZXMgaGF2aW5nIGluY29tcGF0aWJsZSB0eXBlcywgYnV0CitHQ0MgMTAgbm93IGdpdmVzIGVycm9ycyBmb3IgaW5jb21wYXRpYmxlIHR5cGVzIHdoZW4gdGhlIGxvbmcgZG91YmxlCitmdW5jdGlvbiBpcyBrbm93biB0byBHQ0MgYXMgYSBidWlsdC1pbiBmdW5jdGlvbiwgbm90IGp1c3Qgd2hlbiB0aGVyZQoraXMgYW4gaW5jb21wYXRpYmxlIGhlYWRlciBkZWNsYXJhdGlvbi4KKworVGhpcyBwYXRjaCBmaXhlcyB0aG9zZSBlcnJvcnMgYnkgdXNpbmcgYXBwcm9wcmlhdGUKKy1mbm8tYnVpbHRpbi08ZnVuY3Rpb24+IG9wdGlvbnMgdG8gY29tcGlsZSB0aGUgZG91YmxlIGZ1bmN0aW9ucy4gIFRoZQorbGlzdCBvZiBDRkxBR1MtKiBzZXR0aW5ncyBpcyBhbiBhcHByb3ByaWF0ZWx5IGFkYXB0ZWQgdmVyc2lvbiBvZiB0aGF0CitpbiBzeXNkZXBzL2llZWU3NTQvbGRibC1vcHQvTWFrZWZpbGUgdXNlZCB0aGVyZSBmb3IgYnVpbGRpbmcgbmxkYmwtKi5jCitmaWxlczsgaW4gcGFydGljdWxhciwgdGhlIG9wdGlvbnMgYXJlIHVzZWQgZXZlbiBpZiBHQ0MgZG9lcyBub3QKK2N1cnJlbnRseSBoYXZlIGEgYnVpbHQtaW4gZnVuY3Rpb24gb2YgYSBnaXZlbiBmdW5jdGlvbiwgc28gdGhhdCBhZGRpbmcKK3N1Y2ggYSBidWlsdC1pbiBmdW5jdGlvbiBpbiBmdXR1cmUgd2lsbCBub3QgYnJlYWsgdGhlIGdsaWJjIGJ1aWxkLgorVGh1cywgdmFyaW91cyBvZiB0aGUgQ0ZMQUdTLSogc2V0dGluZ3MgYXJlIG9ubHkgZm9yIGZ1dHVyZS1wcm9vZmluZworYW5kIG1heSBub3QgY3VycmVudGx5IGJlIG5lZWRlZCAoYW5kIGl0J3MgcG9zc2libGUgc29tZSBjb3VsZCBiZQoraXJyZWxldmFudCBmb3Igb3RoZXIgcmVhc29ucykuCisKK1Rlc3RlZCB3aXRoIGJ1aWxkLW1hbnktZ2xpYmNzLnB5IGZvciBhcm0tbGludXgtZ251ZWFiaSAoY29tcGlsZXJzIGFuZAorZ2xpYmNzIGJ1aWxkcyksIHdoZXJlIGl0IGZpeGVzIHRoZSBidWlsZCB0aGF0IHByZXZpb3VzbHkgZmFpbGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD00OTM0OGJlYWZlOWJhMTUwYzliZDQ4NTk1YjNmMzcyMjk5YmRkYmIwXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgbWF0aC9NYWtlZmlsZSB8IDEyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWF0aC9NYWtlZmlsZSBiL21hdGgvTWFrZWZpbGUKK2luZGV4IDg0YThiOTRjNzQuLjBhNWE0MDQzMGUgMTAwNjQ0CistLS0gYS9tYXRoL01ha2VmaWxlCisrKysgYi9tYXRoL01ha2VmaWxlCitAQCAtNjUwLDYgKzY1MCwxMjggQEAgaWZuZXEgKCQobG9uZy1kb3VibGUtZmN0cykseWVzKQorICMgV2Ugd29uJ3QgY29tcGlsZSB0aGUgYGxvbmcgZG91YmxlJyBjb2RlIGF0IGFsbC4gIFRlbGwgdGhlIGBkb3VibGUnIGNvZGUKKyAjIHRvIGRlZmluZSBhbGlhc2VzIGZvciB0aGUgYEZVTkNsJyBuYW1lcy4KKyBtYXRoLUNQUEZMQUdTICs9IC1ETk9fTE9OR19ET1VCTEUKKysjIEdDQyAxMCBkaWFnbm9zZXMgYWxpYXNlcyB3aXRoIHR5cGVzIGNvbmZsaWN0aW5nIHdpdGggYnVpbHQtaW4KKysjIGZ1bmN0aW9ucy4KKytDRkxBR1Mtd19hY29zLmMgKz0gLWZuby1idWlsdGluLWFjb3NsCisrQ0ZMQUdTLXdfYWNvc2guYyArPSAtZm5vLWJ1aWx0aW4tYWNvc2hsCisrQ0ZMQUdTLXdfYXNpbi5jICs9IC1mbm8tYnVpbHRpbi1hc2lubAorK0NGTEFHUy1zX2FzaW5oLmMgKz0gLWZuby1idWlsdGluLWFzaW5obAorK0NGTEFHUy1zX2F0YW4uYyArPSAtZm5vLWJ1aWx0aW4tYXRhbmwKKytDRkxBR1Mtd19hdGFuMi5jICs9IC1mbm8tYnVpbHRpbi1hdGFuMmwKKytDRkxBR1Mtd19hdGFuaC5jICs9IC1mbm8tYnVpbHRpbi1hdGFuaGwKKytDRkxBR1Mtc19jYWJzLmMgKz0gLWZuby1idWlsdGluLWNhYnNsCisrQ0ZMQUdTLXNfY2Fjb3MuYyArPSAtZm5vLWJ1aWx0aW4tY2Fjb3NsCisrQ0ZMQUdTLXNfY2Fjb3NoLmMgKz0gLWZuby1idWlsdGluLWNhY29zaGwKKytDRkxBR1Mtc19jYW5vbmljYWxpemUuYyArPSAtZm5vLWJ1aWx0aW4tY2Fub25pY2FsaXplbAorK0NGTEFHUy1zX2NhcmcuYyArPSAtZm5vLWJ1aWx0aW4tY2FyZ2wKKytDRkxBR1Mtc19jYXNpbi5jICs9IC1mbm8tYnVpbHRpbi1jYXNpbmwKKytDRkxBR1Mtc19jYXNpbmguYyArPSAtZm5vLWJ1aWx0aW4tY2FzaW5obAorK0NGTEFHUy1zX2NhdGFuLmMgKz0gLWZuby1idWlsdGluLWNhdGFubAorK0NGTEFHUy1zX2NhdGFuaC5jICs9IC1mbm8tYnVpbHRpbi1jYXRhbmhsCisrQ0ZMQUdTLXNfY2JydC5jICs9IC1mbm8tYnVpbHRpbi1jYnJ0bAorK0NGTEFHUy1zX2Njb3MuYyArPSAtZm5vLWJ1aWx0aW4tY2Nvc2wKKytDRkxBR1Mtc19jY29zaC5jICs9IC1mbm8tYnVpbHRpbi1jY29zaGwKKytDRkxBR1Mtc19jZWlsLmMgKz0gLWZuby1idWlsdGluLWNlaWxsCisrQ0ZMQUdTLXNfY2V4cC5jICs9IC1mbm8tYnVpbHRpbi1jZXhwbAorK0NGTEFHUy1zX2NpbWFnLmMgKz0gLWZuby1idWlsdGluLWNpbWFnbAorK0NGTEFHUy1zX2Nsb2cuYyArPSAtZm5vLWJ1aWx0aW4tY2xvZ2wKKytDRkxBR1Mtc19jbG9nMTAuYyArPSAtZm5vLWJ1aWx0aW4tY2xvZzEwbAorK0NGTEFHUy1zX2NvbmouYyArPSAtZm5vLWJ1aWx0aW4tY29uamwKKytDRkxBR1Mtc19jb3B5c2lnbi5jICs9IC1mbm8tYnVpbHRpbi1jb3B5c2lnbmwKKytDRkxBR1Mtc19jb3MuYyArPSAtZm5vLWJ1aWx0aW4tY29zbAorK0NGTEFHUy13X2Nvc2guYyArPSAtZm5vLWJ1aWx0aW4tY29zaGwKKytDRkxBR1Mtc19jcG93LmMgKz0gLWZuby1idWlsdGluLWNwb3dsCisrQ0ZMQUdTLXNfY3Byb2ouYyArPSAtZm5vLWJ1aWx0aW4tY3Byb2psCisrQ0ZMQUdTLXNfY3JlYWwuYyArPSAtZm5vLWJ1aWx0aW4tY3JlYWxsCisrQ0ZMQUdTLXNfY3Npbi5jICs9IC1mbm8tYnVpbHRpbi1jc2lubAorK0NGTEFHUy1zX2NzaW5oLmMgKz0gLWZuby1idWlsdGluLWNzaW5obAorK0NGTEFHUy1zX2NzcXJ0LmMgKz0gLWZuby1idWlsdGluLWNzcXJ0bAorK0NGTEFHUy1zX2N0YW4uYyArPSAtZm5vLWJ1aWx0aW4tY3RhbmwKKytDRkxBR1Mtc19jdGFuaC5jICs9IC1mbm8tYnVpbHRpbi1jdGFuaGwKKytDRkxBR1Mtc19kYWRkLmMgKz0gLWZuby1idWlsdGluLWRhZGRsCisrQ0ZMQUdTLXNfZGRpdi5jICs9IC1mbm8tYnVpbHRpbi1kZGl2bAorK0NGTEFHUy1zX2RtdWwuYyArPSAtZm5vLWJ1aWx0aW4tZG11bGwKKytDRkxBR1Mtc19kc3ViLmMgKz0gLWZuby1idWlsdGluLWRzdWJsCisrQ0ZMQUdTLXNfZXJmLmMgKz0gLWZuby1idWlsdGluLWVyZmwKKytDRkxBR1Mtc19lcmZjLmMgKz0gLWZuby1idWlsdGluLWVyZmNsCisrQ0ZMQUdTLWVfZXhwLmMgKz0gLWZuby1idWlsdGluLWV4cGwKKytDRkxBR1Mtd19leHAxMC5jICs9IC1mbm8tYnVpbHRpbi1leHAxMGwKKytDRkxBR1MtZV9leHAyLmMgKz0gLWZuby1idWlsdGluLWV4cDJsCisrQ0ZMQUdTLXNfZXhwbTEuYyArPSAtZm5vLWJ1aWx0aW4tZXhwbTFsCisrQ0ZMQUdTLXNfZmFicy5jICs9IC1mbm8tYnVpbHRpbi1mYWJzbAorK0NGTEFHUy1zX2ZhZGQuYyArPSAtZm5vLWJ1aWx0aW4tZmFkZGwKKytDRkxBR1Mtc19mZGltLmMgKz0gLWZuby1idWlsdGluLWZkaW1sCisrQ0ZMQUdTLXNfZmRpdi5jICs9IC1mbm8tYnVpbHRpbi1mZGl2bAorK0NGTEFHUy1zX2Zpbml0ZS5jICs9IC1mbm8tYnVpbHRpbi1maW5pdGVsCisrQ0ZMQUdTLXNfZmxvb3IuYyArPSAtZm5vLWJ1aWx0aW4tZmxvb3JsCisrQ0ZMQUdTLXNfZm1hLmMgKz0gLWZuby1idWlsdGluLWZtYWwKKytDRkxBR1Mtc19mbWF4LmMgKz0gLWZuby1idWlsdGluLWZtYXhsCisrQ0ZMQUdTLXNfZm1heG1hZy5jICs9IC1mbm8tYnVpbHRpbi1mbWF4bWFnbAorK0NGTEFHUy1zX2ZtaW4uYyArPSAtZm5vLWJ1aWx0aW4tZm1pbmwKKytDRkxBR1Mtc19mbWlubWFnLmMgKz0gLWZuby1idWlsdGluLWZtaW5tYWdsCisrQ0ZMQUdTLXdfZm1vZC5jICs9IC1mbm8tYnVpbHRpbi1mbW9kbAorK0NGTEFHUy1zX2ZtdWwuYyArPSAtZm5vLWJ1aWx0aW4tZm11bGwKKytDRkxBR1Mtc19mcmV4cC5jICs9IC1mbm8tYnVpbHRpbi1mcmV4cGwKKytDRkxBR1Mtc19mcm9tZnAuYyArPSAtZm5vLWJ1aWx0aW4tZnJvbWZwbAorK0NGTEFHUy1zX2Zyb21mcHguYyArPSAtZm5vLWJ1aWx0aW4tZnJvbWZweGwKKytDRkxBR1Mtc19mc3ViLmMgKz0gLWZuby1idWlsdGluLWZzdWJsCisrQ0ZMQUdTLXNfZ2FtbWEuYyArPSAtZm5vLWJ1aWx0aW4tZ2FtbWFsCisrQ0ZMQUdTLXNfZ2V0cGF5bG9hZC5jICs9IC1mbm8tYnVpbHRpbi1nZXRwYXlsb2FkbAorK0NGTEFHUy13X2h5cG90LmMgKz0gLWZuby1idWlsdGluLWh5cG90bAorK0NGTEFHUy13X2lsb2diLmMgKz0gLWZuby1idWlsdGluLWlsb2dibAorK0NGTEFHUy1zX2lzaW5mLmMgKz0gLWZuby1idWlsdGluLWlzaW5mbAorK0NGTEFHUy1zX2lzbmFuLmMgKz0gLWZuby1idWlsdGluLWlzbmFubAorK0NGTEFHUy13X2owLmMgKz0gLWZuby1idWlsdGluLWowbAorK0NGTEFHUy13X2oxLmMgKz0gLWZuby1idWlsdGluLWoxbAorK0NGTEFHUy13X2puLmMgKz0gLWZuby1idWlsdGluLWpubAorK0NGTEFHUy1zX2xkZXhwLmMgKz0gLWZuby1idWlsdGluLWxkZXhwbAorK0NGTEFHUy13X2xnYW1tYS5jICs9IC1mbm8tYnVpbHRpbi1sZ2FtbWFsCisrQ0ZMQUdTLXdfbGdhbW1hX3IuYyArPSAtZm5vLWJ1aWx0aW4tbGdhbW1hbF9yCisrQ0ZMQUdTLXdfbGxvZ2IuYyArPSAtZm5vLWJ1aWx0aW4tbGxvZ2JsCisrQ0ZMQUdTLXNfbGxyaW50LmMgKz0gLWZuby1idWlsdGluLWxscmludGwKKytDRkxBR1Mtc19sbHJvdW5kLmMgKz0gLWZuby1idWlsdGluLWxscm91bmRsCisrQ0ZMQUdTLWVfbG9nLmMgKz0gLWZuby1idWlsdGluLWxvZ2wKKytDRkxBR1Mtd19sb2cxMC5jICs9IC1mbm8tYnVpbHRpbi1sb2cxMGwKKytDRkxBR1Mtd19sb2cxcC5jICs9IC1mbm8tYnVpbHRpbi1sb2cxcGwKKytDRkxBR1MtZV9sb2cyLmMgKz0gLWZuby1idWlsdGluLWxvZzJsCisrQ0ZMQUdTLXNfbG9nYi5jICs9IC1mbm8tYnVpbHRpbi1sb2dibAorK0NGTEFHUy1zX2xyaW50LmMgKz0gLWZuby1idWlsdGluLWxyaW50bAorK0NGTEFHUy1zX2xyb3VuZC5jICs9IC1mbm8tYnVpbHRpbi1scm91bmRsCisrQ0ZMQUdTLXNfbW9kZi5jICs9IC1mbm8tYnVpbHRpbi1tb2RmbAorK0NGTEFHUy1zX25hbi5jICs9IC1mbm8tYnVpbHRpbi1uYW5sCisrQ0ZMQUdTLXNfbmVhcmJ5aW50LmMgKz0gLWZuby1idWlsdGluLW5lYXJieWludGwKKytDRkxBR1Mtc19uZXh0YWZ0ZXIuYyArPSAtZm5vLWJ1aWx0aW4tbmV4dGFmdGVybAorK0NGTEFHUy1zX25leHRkb3duLmMgKz0gLWZuby1idWlsdGluLW5leHRkb3dubAorK0NGTEFHUy1zX25leHR0b3dhcmQuYyArPSAtZm5vLWJ1aWx0aW4tbmV4dHRvd2FyZCAtZm5vLWJ1aWx0aW4tbmV4dHRvd2FyZGwKKytDRkxBR1Mtc19uZXh0dG93YXJkZi5jICs9IC1mbm8tYnVpbHRpbi1uZXh0dG93YXJkZgorK0NGTEFHUy1zX25leHR1cC5jICs9IC1mbm8tYnVpbHRpbi1uZXh0dXBsCisrQ0ZMQUdTLWVfcG93LmMgKz0gLWZuby1idWlsdGluLXBvd2wKKytDRkxBR1Mtd19yZW1haW5kZXIuYyArPSAtZm5vLWJ1aWx0aW4tcmVtYWluZGVybCAtZm5vLWJ1aWx0aW4tZHJlbWwKKytDRkxBR1Mtc19yZW1xdW8uYyArPSAtZm5vLWJ1aWx0aW4tcmVtcXVvbAorK0NGTEFHUy1zX3JpbnQuYyArPSAtZm5vLWJ1aWx0aW4tcmludGwKKytDRkxBR1Mtc19yb3VuZC5jICs9IC1mbm8tYnVpbHRpbi1yb3VuZGwKKytDRkxBR1Mtc19yb3VuZGV2ZW4uYyArPSAtZm5vLWJ1aWx0aW4tcm91bmRldmVubAorK0NGTEFHUy13X3NjYWxiLmMgKz0gLWZuby1idWlsdGluLXNjYWxibAorK0NGTEFHUy13X3NjYWxibG4uYyArPSAtZm5vLWJ1aWx0aW4tc2NhbGJsbmwKKytDRkxBR1Mtc19zY2FsYm4uYyArPSAtZm5vLWJ1aWx0aW4tc2NhbGJubAorK0NGTEFHUy1zX3NldHBheWxvYWQuYyArPSAtZm5vLWJ1aWx0aW4tc2V0cGF5bG9hZGwKKytDRkxBR1Mtc19zZXRwYXlsb2Fkc2lnLmMgKz0gLWZuby1idWlsdGluLXNldHBheWxvYWRzaWdsCisrQ0ZMQUdTLXNfc2lnbmlmaWNhbmQuYyArPSAtZm5vLWJ1aWx0aW4tc2lnbmlmaWNhbmRsCisrQ0ZMQUdTLXNfc2luLmMgKz0gLWZuby1idWlsdGluLXNpbmwKKytDRkxBR1Mtc19zaW5jb3MuYyArPSAtZm5vLWJ1aWx0aW4tc2luY29zbAorK0NGTEFHUy13X3NpbmguYyArPSAtZm5vLWJ1aWx0aW4tc2luaGwKKytDRkxBR1Mtd19zcXJ0LmMgKz0gLWZuby1idWlsdGluLXNxcnRsCisrQ0ZMQUdTLXNfdGFuLmMgKz0gLWZuby1idWlsdGluLXRhbmwKKytDRkxBR1Mtc190YW5oLmMgKz0gLWZuby1idWlsdGluLXRhbmhsCisrQ0ZMQUdTLXdfdGdhbW1hLmMgKz0gLWZuby1idWlsdGluLXRnYW1tYWwKKytDRkxBR1Mtc190b3RhbG9yZGVyLmMgKz0gLWZuby1idWlsdGluLXRvdGFsb3JkZXJsCisrQ0ZMQUdTLXNfdG90YWxvcmRlcm1hZy5jICs9IC1mbm8tYnVpbHRpbi10b3RhbG9yZGVybWFnbAorK0NGTEFHUy1zX3RydW5jLmMgKz0gLWZuby1idWlsdGluLXRydW5jbAorK0NGTEFHUy1zX3Vmcm9tZnAuYyArPSAtZm5vLWJ1aWx0aW4tdWZyb21mcGwKKytDRkxBR1Mtc191ZnJvbWZweC5jICs9IC1mbm8tYnVpbHRpbi11ZnJvbWZweGwKKytDRkxBR1Mtc195MC5jICs9IC1mbm8tYnVpbHRpbi15MGwKKytDRkxBR1Mtc195MS5jICs9IC1mbm8tYnVpbHRpbi15MWwKKytDRkxBR1Mtc195bi5jICs9IC1mbm8tYnVpbHRpbi15bmwKKyBlbmRpZgorIAorICMgVGhlc2UgZmlsZXMgcXVpZXQgc05hTnMgaW4gYSB3YXkgdGhhdCBpcyBvcHRpbWl6ZWQgYXdheSB3aXRob3V0CistLSAKKzIuMjYuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDIwLTEwMDI5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAyMC0xMDAyOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmExNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAyMC0xMDAyOS5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSBjZTI2NWVjNWJjMjVlYzM1ZmJhNTM4MDdhYmFjMWIwYzg0Njk4OTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zZXBoIE15ZXJzIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KK0RhdGU6IFdlZCwgMTIgRmViIDIwMjAgMjM6MzE6NTYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQXZvaWQgbGRibC05NiBzdGFjayBjb3JydXB0aW9uIGZyb20gcmFuZ2UgcmVkdWN0aW9uIG9mCisKKyBwc2V1ZG8temVybyAoYnVnIDI1NDg3KS4KKworQnVnIDI1NDg3IHJlcG9ydHMgc3RhY2sgY29ycnVwdGlvbiBpbiBsZGJsLTk2IHNpbmwgb24gYSBwc2V1ZG8temVybworYXJndW1lbnQgKGFuIHJlcHJlc2VudGF0aW9uIHdoZXJlIGFsbCB0aGUgc2lnbmlmaWNhbmQgYml0cywgaW5jbHVkaW5nCit0aGUgZXhwbGljaXQgaGlnaCBiaXQsIGFyZSB6ZXJvLCBidXQgdGhlIGV4cG9uZW50IGlzIG5vdCB6ZXJvLCB3aGljaAoraXMgbm90IGEgdmFsaWQgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBsb25nIGRvdWJsZSB0eXBlKS4KKworQWx0aG91Z2ggdGhpcyBpcyBub3QgYSB2YWxpZCBsb25nIGRvdWJsZSByZXByZXNlbnRhdGlvbiwgZXhpc3RpbmcKK3ByYWN0aWNlIGluIHRoaXMgYXJlYSAoc2VlIGJ1ZyA0NTg2LCBvcmlnaW5hbGx5IG1hcmtlZCBpbnZhbGlkIGJ1dAorc3Vic2VxdWVudGx5IGZpeGVkKSBpcyB0aGF0IHdlIHN0aWxsIHNlZWsgdG8gYXZvaWQgaW52YWxpZCBtZW1vcnkKK2FjY2Vzc2VzIGFzIGEgcmVzdWx0LCBpbiBjYXNlIG9mIHByb2dyYW1zIHRoYXQgdHJlYXQgYXJiaXRyYXJ5IGJpbmFyeQorZGF0YSBhcyBsb25nIGRvdWJsZSByZXByZXNlbnRhdGlvbnMsIGFsdGhvdWdoIHRoZSBpbnZhbGlkCityZXByZXNlbnRhdGlvbnMgb2YgdGhlIGxkYmwtOTYgZm9ybWF0IGRvIG5vdCBuZWVkIHRvIGJlIGNvbnNpc3RlbnRseQoraGFuZGxlZCB0aGUgc2FtZSBhcyBhbnkgcGFydGljdWxhciB2YWxpZCByZXByZXNlbnRhdGlvbi4KKworVGhpcyBwYXRjaCBtYWtlcyB0aGUgcmFuZ2UgcmVkdWN0aW9uIGRldGVjdCBwc2V1ZG8temVybyBhbmQgdW5ub3JtYWwKK3JlcHJlc2VudGF0aW9ucyB0aGF0IHdvdWxkIG90aGVyd2lzZSBnbyB0byBfX2tlcm5lbF9yZW1fcGlvMiwgYW5kCityZXR1cm5zIGEgTmFOIGZvciB0aGVtIGluc3RlYWQgb2YgY29udGludWluZyB3aXRoIHRoZSByYW5nZSByZWR1Y3Rpb24KK3Byb2Nlc3MuICAoUHNldWRvLXplcm8gYW5kIHVubm9ybWFsIHJlcHJlc2VudGF0aW9ucyB3aG9zZSB1bmJpYXNlZAorZXhwb25lbnQgaXMgbGVzcyB0aGFuIC0xIGhhdmUgYWxyZWFkeSBiZWVuIHNhZmVseSByZXR1cm5lZCBmcm9tIHRoZQorZnVuY3Rpb24gYmVmb3JlIHRoaXMgcG9pbnQgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSByZXN0IG9mIHJhbmdlCityZWR1Y3Rpb24uKSAgUHNldWRvLXplcm8gcmVwcmVzZW50YXRpb25zIHdvdWxkIHByZXZpb3VzbHkgcmVzdWx0IGluCit0aGUgdmFsdWUgcGFzc2VkIHRvIF9fa2VybmVsX3JlbV9waW8yIGJlaW5nIGFsbC16ZXJvLCB3aGljaCBpcworZGVmaW5pdGVseSB1bnNhZmU7IHVubm9ybWFsIHJlcHJlc2VudGF0aW9ucyB3b3VsZCBwcmV2aW91c2x5IHJlc3VsdCBpbgorYSB2YWx1ZSBwYXNzZWQgd2hvc2UgaGlnaCBiaXQgaXMgemVybywgd2hpY2ggbWlnaHQgd2VsbCBiZSB1bnNhZmUKK3NpbmNlIHRoYXQgaXMgbm90IGEgZm9ybSBvZiBpbnB1dCBleHBlY3RlZCBieSBfX2tlcm5lbF9yZW1fcGlvMi4KKworVGVzdGVkIGZvciB4ODZfNjQuCisKK0NWRTogQ1ZFLTIwMjAtMTAwMjkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1nbGliYy5naXQ7CithPXBhdGNoO2g9OTMzMzQ5ODc5NGNkZTFkNWNjYTUxOGJhZGY3OTUzM2EyNDExNGI2Zl0KK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L01ha2VmaWxlICAgICAgICAgICB8ICAzICsrLQorIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMgICAgICB8IDEyICsrKysrKysrKworIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni90ZXN0LXNpbmwtcHNldWRvLmMKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L01ha2VmaWxlIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvTWFrZWZpbGUKK2luZGV4IGIxMDMyNTQuLjA1MmMxYzcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9NYWtlZmlsZQorKysrIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvTWFrZWZpbGUKK0BAIC0xNyw1ICsxNyw2IEBACisgIyA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIAorIGlmZXEgKCQoc3ViZGlyKSxtYXRoKQorLXRlc3RzICs9IHRlc3QtY2Fub25pY2FsLWxkYmwtOTYgdGVzdC10b3RhbG9yZGVybC1sZGJsLTk2CisrdGVzdHMgKz0gdGVzdC1jYW5vbmljYWwtbGRibC05NiB0ZXN0LXRvdGFsb3JkZXJsLWxkYmwtOTYgdGVzdC1zaW5sLXBzZXVkbworK0NGTEFHUy10ZXN0LXNpbmwtcHNldWRvLmMgKz0gLWZzdGFjay1wcm90ZWN0b3ItYWxsCisgZW5kaWYKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX3JlbV9waW8ybC5jIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9yZW1fcGlvMmwuYworaW5kZXggODA1ZGUyMi4uMWFlY2NiNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMKK0BAIC0yMTAsNiArMjEwLDE4IEBAIF9faWVlZTc1NF9yZW1fcGlvMmwgKGxvbmcgZG91YmxlIHgsIGxvbmcgZG91YmxlICp5KQorICAgICAgIHJldHVybiAwOworICAgICB9CisgCisrICBpZiAoKGkwICYgMHg4MDAwMDAwMCkgPT0gMCkKKysgICAgeworKyAgICAgIC8qIFBzZXVkby16ZXJvIGFuZCB1bm5vcm1hbCByZXByZXNlbnRhdGlvbnMgYXJlIG5vdCB2YWxpZAorKwkgcmVwcmVzZW50YXRpb25zIG9mIGxvbmcgZG91YmxlLiAgV2UgbmVlZCB0byBhdm9pZCBzdGFjaworKwkgY29ycnVwdGlvbiBpbiBfX2tlcm5lbF9yZW1fcGlvMiwgd2hpY2ggZXhwZWN0cyBpbnB1dCBpbiBhCisrCSBwYXJ0aWN1bGFyIG5vcm1hbCBmb3JtLCBidXQgdGhvc2UgcmVwcmVzZW50YXRpb25zIGRvIG5vdCBuZWVkCisrCSB0byBiZSBjb25zaXN0ZW50bHkgaGFuZGxlZCBsaWtlIGFueSBwYXJ0aWN1bGFyIGZsb2F0aW5nLXBvaW50CisrCSB2YWx1ZS4gICovCisrICAgICAgeVsxXSA9IHlbMF0gPSBfX2J1aWx0aW5fbmFubCAoIiIpOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisgICAvKiBTcGxpdCB0aGUgNjQgYml0cyBvZiB0aGUgbWFudGlzc2EgaW50byB0aHJlZSAyNC1iaXQgaW50ZWdlcnMKKyAgICAgIHN0b3JlZCBpbiBhIGRvdWJsZSBhcnJheS4gICovCisgICBleHAgPSBqMCAtIDIzOworZGlmZiAtLWdpdCBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmY1OWI5NzcKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYworQEAgLTAsMCArMSw0MSBAQAorKy8qIFRlc3Qgc2lubCBmb3IgcHNldWRvLXplcm9zIGFuZCB1bm5vcm1hbHMgZm9yIGxkYmwtOTYgKGJ1ZyAyNTQ4NykuCisrICAgQ29weXJpZ2h0IChDKSAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisrICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9sZGJsLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKworK3N0YXRpYyBpbnQKKytkb190ZXN0ICh2b2lkKQorK3sKKysgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7IGkrKykKKysgICAgeworKyAgICAgIHVpbnQ2NF90IHNpZyA9IGkgPT0gNjMgPyAwIDogMVVMTCA8PCBpOworKyAgICAgIGxvbmcgZG91YmxlIGxkOworKyAgICAgIFNFVF9MRE9VQkxFX1dPUkRTIChsZCwgMHg0MTQxLAorKwkJCSBzaWcgPj4gMzIsIHNpZyAmIDB4ZmZmZmZmZmZVTEwpOworKyAgICAgIC8qIFRoZSByZXF1aXJlbWVudCBpcyB0aGF0IG5vIHN0YWNrIG92ZXJmbG93IG9jY3VycyB3aGVuIHRoZQorKwkgcHNldWRvLXplcm8gb3IgdW5ub3JtYWwgZ29lcyB0aHJvdWdoIHJhbmdlIHJlZHVjdGlvbi4gICovCisrICAgICAgdm9sYXRpbGUgbG9uZyBkb3VibGUgbGRyOworKyAgICAgIGxkciA9IHNpbmwgKGxkKTsKKysgICAgICAodm9pZCkgbGRyOworKyAgICB9CisrICByZXR1cm4gMDsKKyt9CisrCisrI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuYz4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWRkLWNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWRkLWNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ3MTEyMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FkZC1jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTE1ICswLDAgQEAKLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0MDcgKysrKysrKysrKysrKysrKysrKysrKwotIGxvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyB8ICA1MjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmggICAgICAgICAgICAgICAgICAgfCAgMTI5ICsrKysrKysKLSBsb2NhbGVkZWYvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgICA4IAotIDQgZmlsZXMgY2hhbmdlZCwgMTA3MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYwotQEAgLTAsMCArMSw1MjggQEAKLSsvKgotKyAqIGhhcmRsaW5rIC0gY29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHZpYSBoYXJkbGlua3MKLSsgKgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICogV3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDE5IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdvdWxkIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0rICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2lmZGVmIEhBVkVfUENSRQotKyMgZGVmaW5lIFBDUkUyX0NPREVfVU5JVF9XSURUSCA4Ci0rIyBpbmNsdWRlIDxwY3JlMi5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJjLmgiCi0rI2luY2x1ZGUgInhhbGxvYy5oIgotKyNpbmNsdWRlICJubHMuaCIKLSsjaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKLSsKLSsjZGVmaW5lIE5IQVNIICAgKDE8PDE3KSAgLyogTXVzdCBiZSBhIHBvd2VyIG9mIDIhICovCi0rI2RlZmluZSBOQlVGICAgIDY0Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2ZpbGU7Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2hhc2ggewotKwlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqbmV4dDsKLSsJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKmNoYWluOwotKwlvZmZfdCBzaXplOwotKwl0aW1lX3QgbXRpbWU7Ci0rfTsKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfZGlyIHsKLSsJc3RydWN0IGhhcmRsaW5rX2RpciAqbmV4dDsKLSsJY2hhciBuYW1lW107Ci0rfTsKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfZmlsZSB7Ci0rCXN0cnVjdCBoYXJkbGlua19maWxlICpuZXh0OwotKwlpbm9fdCBpbm87Ci0rCWRldl90IGRldjsKLSsJdW5zaWduZWQgaW50IGNrc3VtOwotKwljaGFyIG5hbWVbXTsKLSt9OwotKwotK3N0cnVjdCBoYXJkbGlua19keW5zdHIgewotKwljaGFyICpidWY7Ci0rCXNpemVfdCBhbGxvYzsKLSt9OwotKwotK3N0cnVjdCBoYXJkbGlua19jdGwgewotKwlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkaXJzOwotKwlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqaHBzW05IQVNIXTsKLSsJY2hhciBpb2J1ZjFbQlVGU0laXTsKLSsJY2hhciBpb2J1ZjJbQlVGU0laXTsKLSsJLyogc3VtbWFyeSBjb3VudGVycyAqLwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbmRpcnM7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyBub2JqZWN0czsKLSsJdW5zaWduZWQgbG9uZyBsb25nIG5yZWdmaWxlczsKLSsJdW5zaWduZWQgbG9uZyBsb25nIG5jb21wOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbmxpbmtzOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbnNhdmVkOwotKwkvKiBjdXJyZW50IGRldmljZSAqLwotKwlkZXZfdCBkZXY7Ci0rCS8qIGZsYWdzICovCi0rCXVuc2lnbmVkIGludCB2ZXJib3NlOwotKwl1bnNpZ25lZCBpbnQKLSsJCW5vX2xpbms6MSwKLSsJCWNvbnRlbnRfb25seToxLAotKwkJZm9yY2U6MTsKLSt9OwotKy8qIGN0bCBpcyBpbiBnbG9iYWwgc2NvcGUgZHVlIHVzZSBpbiBhdGV4aXQoKSAqLwotK3N0cnVjdCBoYXJkbGlua19jdGwgZ2xvYmFsX2N0bDsKLSsKLStfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCi0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaGFzaChvZmZfdCBzaXplLCB0aW1lX3QgbXRpbWUpCi0rewotKwlyZXR1cm4gKHNpemUgXiBtdGltZSkgJiAoTkhBU0ggLSAxKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQotK3N0YXRpYyBpbmxpbmUgaW50IHN0Y21wKHN0cnVjdCBzdGF0ICpzdDEsIHN0cnVjdCBzdGF0ICpzdDIsIGludCBjb250ZW50X3Njb3BlKQotK3sKLSsJaWYgKGNvbnRlbnRfc2NvcGUpCi0rCQlyZXR1cm4gc3QxLT5zdF9zaXplICE9IHN0Mi0+c3Rfc2l6ZTsKLSsKLSsJcmV0dXJuIHN0MS0+c3RfbW9kZSAhPSBzdDItPnN0X21vZGUKLSsJCXx8IHN0MS0+c3RfdWlkICE9IHN0Mi0+c3RfdWlkCi0rCQl8fCBzdDEtPnN0X2dpZCAhPSBzdDItPnN0X2dpZAotKwkJfHwgc3QxLT5zdF9zaXplICE9IHN0Mi0+c3Rfc2l6ZQotKwkJfHwgc3QxLT5zdF9tdGltZSAhPSBzdDItPnN0X210aW1lOwotK30KLSsKLStzdGF0aWMgdm9pZCBwcmludF9zdW1tYXJ5KHZvaWQpCi0rewotKwlzdHJ1Y3QgaGFyZGxpbmtfY3RsIGNvbnN0ICpjb25zdCBjdGwgPSAmZ2xvYmFsX2N0bDsKLSsKLSsJaWYgKCFjdGwtPnZlcmJvc2UpCi0rCQlyZXR1cm47Ci0rCi0rCWlmIChjdGwtPnZlcmJvc2UgPiAxICYmIGN0bC0+bmxpbmtzKQotKwkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKLSsKLSsJcHJpbnRmKF8oIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7Ci0rCXByaW50ZihfKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOwotKwlwcmludGYoXygiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7Ci0rCXByaW50ZihfKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOwotKwlwcmludGYoICAiJXMlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/Ci0rCSAgICAgICBfKCJXb3VsZCBsaW5rOiAgICAiKSA6Ci0rCSAgICAgICBfKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKLSsJcHJpbnRmKCAgIiVzICU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KLSsJICAgICAgIF8oIldvdWxkIHNhdmU6ICAgIikgOgotKwkgICAgICAgXygiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkgdXNhZ2Uodm9pZCkKLSt7Ci0rCWZwdXRzKFVTQUdFX0hFQURFUiwgc3Rkb3V0KTsKLSsJcHJpbnRmKF8oIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwotKwotKwlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7Ci0rCXB1dHMoXygiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7Ci0rCi0rCWZwdXRzKFVTQUdFX09QVElPTlMsIHN0ZG91dCk7Ci0rCXB1dHMoXygiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKLSsJcHV0cyhfKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOwotKwlwdXRzKF8oIiAtdiwgLS12ZXJib3NlICAgICAgICAgIHByaW50IHN1bW1hcnkgYWZ0ZXIgaGFyZGxpbmtpbmciKSk7Ci0rCXB1dHMoXygiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOwotKwlwdXRzKF8oIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKLSsJcHV0cyhfKCIgLXgsIC0tZXhjbHVkZSA8cmVnZXg+ICBleGNsdWRlIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSk7Ci0rCi0rCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKLSsJcHJpbnRmKFVTQUdFX0hFTFBfT1BUSU9OUygxNikpOyAvKiBjaGFyIG9mZnNldCB0byBhbGlnbiBvcHRpb24gZGVzY3JpcHRpb25zICovCi0rCXByaW50ZihVU0FHRV9NQU5fVEFJTCgiaGFyZGxpbmsoMSkiKSk7Ci0rCWV4aXQoRVhJVF9TVUNDRVNTKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQotK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGFkZDIoc2l6ZV90IGEsIHNpemVfdCBiKQotK3sKLSsJc2l6ZV90IHN1bSA9IGEgKyBiOwotKwotKwlpZiAoc3VtIDwgYSkKLSsJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJpbnRlZ2VyIG92ZXJmbG93IikpOwotKwlyZXR1cm4gc3VtOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCi0rc3RhdGljIGlubGluZSBzaXplX3QgYWRkMyhzaXplX3QgYSwgc2l6ZV90IGIsIHNpemVfdCBjKQotK3sKLSsJcmV0dXJuIGFkZDIoYWRkMihhLCBiKSwgYyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGdyb3dzdHIoc3RydWN0IGhhcmRsaW5rX2R5bnN0ciAqc3RyLCBzaXplX3QgbmV3bGVuKQotK3sKLSsJaWYgKG5ld2xlbiA8IHN0ci0+YWxsb2MpCi0rCQlyZXR1cm47Ci0rCXN0ci0+YnVmID0geHJlYWxsb2Moc3RyLT5idWYsIHN0ci0+YWxsb2MgPSBhZGQyKG5ld2xlbiwgMSkpOwotK30KLSsKLStzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQotK3sKLSsJc3RydWN0IHN0YXQgc3QsIHN0Miwgc3QzOwotKwljb25zdCBzaXplX3QgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKLSsKLSsJY3RsLT5ub2JqZWN0cysrOwotKwlpZiAobHN0YXQobmFtZSwgJnN0KSkKLSsJCXJldHVybjsKLSsKLSsJaWYgKHN0LnN0X2RldiAhPSBjdGwtPmRldiAmJiAhY3RsLT5mb3JjZSkgewotKwkJaWYgKGN0bC0+ZGV2KQotKwkJCWVycngoRVhJVF9GQUlMVVJFLAotKwkJCSAgICAgXygiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCi0rCQkJICAgICAgICIodXNlIC1mIG9wdGlvbiB0byBvdmVycmlkZSkuIiksIG5hbWUpOwotKwkJY3RsLT5kZXYgPSBzdC5zdF9kZXY7Ci0rCX0KLSsJaWYgKFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKLSsJCXN0cnVjdCBoYXJkbGlua19kaXIgKmRwID0geG1hbGxvYyhhZGQzKHNpemVvZigqZHApLCBuYW1lbGVuLCAxKSk7Ci0rCQltZW1jcHkoZHAtPm5hbWUsIG5hbWUsIG5hbWVsZW4gKyAxKTsKLSsJCWRwLT5uZXh0ID0gY3RsLT5kaXJzOwotKwkJY3RsLT5kaXJzID0gZHA7Ci0rCi0rCX0gZWxzZSBpZiAoU19JU1JFRyhzdC5zdF9tb2RlKSkgewotKwkJaW50IGZkLCBpOwotKwkJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKmZwLCAqZnAyOwotKwkJc3RydWN0IGhhcmRsaW5rX2hhc2ggKmhwOwotKwkJY29uc3QgY2hhciAqbjEsICpuMjsKLSsJCXVuc2lnbmVkIGludCBidWZbTkJVRl07Ci0rCQlpbnQgY2tzdW1zaXplID0gc2l6ZW9mKGJ1Zik7Ci0rCQl1bnNpZ25lZCBpbnQgY2tzdW07Ci0rCQl0aW1lX3QgbXRpbWUgPSBjdGwtPmNvbnRlbnRfb25seSA/IDAgOiBzdC5zdF9tdGltZTsKLSsJCXVuc2lnbmVkIGludCBoc2ggPSBoYXNoKHN0LnN0X3NpemUsIG10aW1lKTsKLSsJCW9mZl90IGZzaXplOwotKwotKwkJY3RsLT5ucmVnZmlsZXMrKzsKLSsJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotKwkJCXByaW50ZigiJXNcbiIsIG5hbWUpOwotKwotKwkJZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZKTsKLSsJCWlmIChmZCA8IDApCi0rCQkJcmV0dXJuOwotKwotKwkJaWYgKChzaXplX3Qpc3Quc3Rfc2l6ZSA8IHNpemVvZihidWYpKSB7Ci0rCQkJY2tzdW1zaXplID0gc3Quc3Rfc2l6ZTsKLSsJCQltZW1zZXQoKChjaGFyICopYnVmKSArIGNrc3Vtc2l6ZSwgMCwKLSsJCQkgICAgICAgKHNpemVvZihidWYpIC0gY2tzdW1zaXplKSAlIHNpemVvZihidWZbMF0pKTsKLSsJCX0KLSsJCWlmIChyZWFkKGZkLCBidWYsIGNrc3Vtc2l6ZSkgIT0gY2tzdW1zaXplKSB7Ci0rCQkJY2xvc2UoZmQpOwotKwkJCXJldHVybjsKLSsJCX0KLSsJCWNrc3Vtc2l6ZSA9IChja3N1bXNpemUgKyBzaXplb2YoYnVmWzBdKSAtIDEpIC8gc2l6ZW9mKGJ1ZlswXSk7Ci0rCQlmb3IgKGkgPSAwLCBja3N1bSA9IDA7IGkgPCBja3N1bXNpemU7IGkrKykgewotKwkJCWlmIChja3N1bSArIGJ1ZltpXSA8IGNrc3VtKQotKwkJCQlja3N1bSArPSBidWZbaV0gKyAxOwotKwkJCWVsc2UKLSsJCQkJY2tzdW0gKz0gYnVmW2ldOwotKwkJfQotKwkJZm9yIChocCA9IGN0bC0+aHBzW2hzaF07IGhwOyBocCA9IGhwLT5uZXh0KSB7Ci0rCQkJaWYgKGhwLT5zaXplID09IHN0LnN0X3NpemUgJiYgaHAtPm10aW1lID09IG10aW1lKQotKwkJCQlicmVhazsKLSsJCX0KLSsJCWlmICghaHApIHsKLSsJCQlocCA9IHhtYWxsb2Moc2l6ZW9mKCpocCkpOwotKwkJCWhwLT5zaXplID0gc3Quc3Rfc2l6ZTsKLSsJCQlocC0+bXRpbWUgPSBtdGltZTsKLSsJCQlocC0+Y2hhaW4gPSBOVUxMOwotKwkJCWhwLT5uZXh0ID0gY3RsLT5ocHNbaHNoXTsKLSsJCQljdGwtPmhwc1toc2hdID0gaHA7Ci0rCQl9Ci0rCQlmb3IgKGZwID0gaHAtPmNoYWluOyBmcDsgZnAgPSBmcC0+bmV4dCkgewotKwkJCWlmIChmcC0+Y2tzdW0gPT0gY2tzdW0pCi0rCQkJCWJyZWFrOwotKwkJfQotKwkJZm9yIChmcDIgPSBmcDsgZnAyICYmIGZwMi0+Y2tzdW0gPT0gY2tzdW07IGZwMiA9IGZwMi0+bmV4dCkgewotKwkJCWlmIChmcDItPmlubyA9PSBzdC5zdF9pbm8gJiYgZnAyLT5kZXYgPT0gc3Quc3RfZGV2KSB7Ci0rCQkJCWNsb3NlKGZkKTsKLSsJCQkJcmV0dXJuOwotKwkJCX0KLSsJCX0KLSsJCWZvciAoZnAyID0gZnA7IGZwMiAmJiBmcDItPmNrc3VtID09IGNrc3VtOyBmcDIgPSBmcDItPm5leHQpIHsKLSsKLSsJCQlpZiAoIWxzdGF0KGZwMi0+bmFtZSwgJnN0MikgJiYgU19JU1JFRyhzdDIuc3RfbW9kZSkgJiYKLSsJCQkgICAgIXN0Y21wKCZzdCwgJnN0MiwgY3RsLT5jb250ZW50X29ubHkpICYmCi0rCQkJICAgIHN0Mi5zdF9pbm8gIT0gc3Quc3RfaW5vICYmCi0rCQkJICAgIHN0Mi5zdF9kZXYgPT0gc3Quc3RfZGV2KSB7Ci0rCi0rCQkJCWludCBmZDIgPSBvcGVuKGZwMi0+bmFtZSwgT19SRE9OTFkpOwotKwkJCQlpZiAoZmQyIDwgMCkKLSsJCQkJCWNvbnRpbnVlOwotKwotKwkJCQlpZiAoZnN0YXQoZmQyLCAmc3QyKSB8fCAhU19JU1JFRyhzdDIuc3RfbW9kZSkKLSsJCQkJICAgIHx8IHN0Mi5zdF9zaXplID09IDApIHsKLSsJCQkJCWNsb3NlKGZkMik7Ci0rCQkJCQljb250aW51ZTsKLSsJCQkJfQotKwkJCQljdGwtPm5jb21wKys7Ci0rCQkJCWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7Ci0rCi0rCQkJCWZvciAoZnNpemUgPSBzdC5zdF9zaXplOyBmc2l6ZSA+IDA7Ci0rCQkJCSAgICAgZnNpemUgLT0gKG9mZl90KXNpemVvZihjdGwtPmlvYnVmMSkpIHsKLSsJCQkJCXNzaXplX3QgeHN6OwotKwkJCQkJc3NpemVfdCByc2l6ZSA9IGZzaXplID4gKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgPwotKwkJCQkJCQkoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA6IGZzaXplOwotKwotKwkJCQkJaWYgKCh4c3ogPSByZWFkKGZkLCBjdGwtPmlvYnVmMSwgcnNpemUpKSAhPSByc2l6ZSkKLSsJCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIG5hbWUpOwotKwkJCQkJZWxzZSBpZiAoKHhzeiA9IHJlYWQoZmQyLCBjdGwtPmlvYnVmMiwgcnNpemUpKSAhPSByc2l6ZSkKLSsJCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7Ci0rCi0rCQkJCQlpZiAoeHN6ICE9IHJzaXplKSB7Ci0rCQkJCQkJY2xvc2UoZmQpOwotKwkJCQkJCWNsb3NlKGZkMik7Ci0rCQkJCQkJcmV0dXJuOwotKwkJCQkJfQotKwkJCQkJaWYgKG1lbWNtcChjdGwtPmlvYnVmMSwgY3RsLT5pb2J1ZjIsIHJzaXplKSkKLSsJCQkJCQlicmVhazsKLSsJCQkJfQotKwkJCQljbG9zZShmZDIpOwotKwkJCQlpZiAoZnNpemUgPiAwKQotKwkJCQkJY29udGludWU7Ci0rCQkJCWlmIChsc3RhdChuYW1lLCAmc3QzKSkgewotKwkJCQkJd2FybihfKCJjYW5ub3Qgc3RhdCAlcyIpLCBuYW1lKTsKLSsJCQkJCWNsb3NlKGZkKTsKLSsJCQkJCXJldHVybjsKLSsJCQkJfQotKwkJCQlzdDMuc3RfYXRpbWUgPSBzdC5zdF9hdGltZTsKLSsJCQkJaWYgKHN0Y21wKCZzdCwgJnN0MywgMCkpIHsKLSsJCQkJCXdhcm54KF8oImZpbGUgJXMgY2hhbmdlZCB1bmRlcm5lYXRoIHVzIiksIG5hbWUpOwotKwkJCQkJY2xvc2UoZmQpOwotKwkJCQkJcmV0dXJuOwotKwkJCQl9Ci0rCQkJCW4xID0gZnAyLT5uYW1lOwotKwkJCQluMiA9IG5hbWU7Ci0rCi0rCQkJCWlmICghY3RsLT5ub19saW5rKSB7Ci0rCQkJCQljb25zdCBjaGFyICpzdWZmaXggPQotKwkJCQkJICAgICIuJCQkX19fY2xlYW5pdF9fXyQkJCI7Ci0rCQkJCQljb25zdCBzaXplX3Qgc3VmZml4bGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0rCQkJCQlzaXplX3QgbjJsZW4gPSBzdHJsZW4objIpOwotKwkJCQkJc3RydWN0IGhhcmRsaW5rX2R5bnN0ciBuYW0yID0geyBOVUxMLCAwIH07Ci0rCi0rCQkJCQlncm93c3RyKCZuYW0yLCBhZGQyKG4ybGVuLCBzdWZmaXhsZW4pKTsKLSsJCQkJCW1lbWNweShuYW0yLmJ1ZiwgbjIsIG4ybGVuKTsKLSsJCQkJCW1lbWNweSgmbmFtMi5idWZbbjJsZW5dLCBzdWZmaXgsCi0rCQkJCQkgICAgICAgc3VmZml4bGVuICsgMSk7Ci0rCQkJCQkvKiBGaXJzdCBjcmVhdGUgYSB0ZW1wb3JhcnkgbGluayB0byBuMSB1bmRlciBhIG5ldyBuYW1lICovCi0rCQkJCQlpZiAobGluayhuMSwgbmFtMi5idWYpKSB7Ci0rCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCi0rCQkJCQkJCW4xLCBuMiwgbmFtMi5idWYpOwotKwkJCQkJCWZyZWUobmFtMi5idWYpOwotKwkJCQkJCWNvbnRpbnVlOwotKwkJCQkJfQotKwkJCQkJLyogVGhlbiByZW5hbWUgaW50byBwbGFjZSBvdmVyIHRoZSBleGlzdGluZyBuMiAqLwotKwkJCQkJaWYgKHJlbmFtZShuYW0yLmJ1ZiwgbjIpKSB7Ci0rCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCi0rCQkJCQkJCW4xLCBuMiwgbjIpOwotKwkJCQkJCS8qIFNvbWV0aGluZyB3ZW50IHdyb25nLCB0cnkgdG8gcmVtb3ZlIHRoZSBub3cgcmVkdW5kYW50IHRlbXBvcmFyeSBsaW5rICovCi0rCQkJCQkJaWYgKHVubGluayhuYW0yLmJ1ZikpCi0rCQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7Ci0rCQkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0rCQkJCQkJY29udGludWU7Ci0rCQkJCQl9Ci0rCQkJCQlmcmVlKG5hbTIuYnVmKTsKLSsJCQkJfQotKwkJCQljdGwtPm5saW5rcysrOwotKwkJCQlpZiAoc3QzLnN0X25saW5rID4gMSkgewotKwkJCQkJLyogV2UgYWN0dWFsbHkgZGlkIG5vdCBzYXZlIGFueXRoaW5nIHRoaXMgdGltZSwgc2luY2UgdGhlIGxpbmsgc2Vjb25kIGFyZ3VtZW50Ci0rCQkJCQkgICBoYWQgc29tZSBvdGhlciBsaW5rcyBhcyB3ZWxsLiAgKi8KLSsJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotKwkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXNcbiIpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCQluMSwgbjIpOwotKwkJCQl9IGVsc2UgewotKwkJCQkJY3RsLT5uc2F2ZWQgKz0gKChzdC5zdF9zaXplICsgNDA5NSkgLyA0MDk2KSAqIDQwOTY7Ci0rCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKLSsJCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCQluMSwgbjIsCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJ3b3VsZCBzYXZlIikgOiBfKCJzYXZlZCIpKSwKLSsJCQkJCQkJKGludG1heF90KXN0LnN0X3NpemUpOwotKwkJCQl9Ci0rCQkJCWNsb3NlKGZkKTsKLSsJCQkJcmV0dXJuOwotKwkJCX0KLSsJCX0KLSsJCWZwMiA9IHhtYWxsb2MoYWRkMyhzaXplb2YoKmZwMiksIG5hbWVsZW4sIDEpKTsKLSsJCWNsb3NlKGZkKTsKLSsJCWZwMi0+aW5vID0gc3Quc3RfaW5vOwotKwkJZnAyLT5kZXYgPSBzdC5zdF9kZXY7Ci0rCQlmcDItPmNrc3VtID0gY2tzdW07Ci0rCQltZW1jcHkoZnAyLT5uYW1lLCBuYW1lLCBuYW1lbGVuICsgMSk7Ci0rCi0rCQlpZiAoZnApIHsKLSsJCQlmcDItPm5leHQgPSBmcC0+bmV4dDsKLSsJCQlmcC0+bmV4dCA9IGZwMjsKLSsJCX0gZWxzZSB7Ci0rCQkJZnAyLT5uZXh0ID0gaHAtPmNoYWluOwotKwkJCWhwLT5jaGFpbiA9IGZwMjsKLSsJCX0KLSsJCXJldHVybjsKLSsJfQotK30KLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKwlpbnQgY2g7Ci0rCWludCBpOwotKyNpZmRlZiBIQVZFX1BDUkUKLSsJaW50IGVycm9ybnVtYmVyOwotKwlQQ1JFMl9TSVpFIGVycm9yb2Zmc2V0OwotKwlwY3JlMl9jb2RlICpyZSA9IE5VTEw7Ci0rCVBDUkUyX1NQVFIgZXhjbHVkZV9wYXR0ZXJuID0gTlVMTDsKLSsJcGNyZTJfbWF0Y2hfZGF0YSAqbWF0Y2hfZGF0YSA9IE5VTEw7Ci0rI2VuZGlmCi0rCXN0cnVjdCBoYXJkbGlua19keW5zdHIgbmFtMSA9IHsgTlVMTCwgMCB9OwotKwlzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwgPSAmZ2xvYmFsX2N0bDsKLSsKLSsJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbG9uZ29wdHNbXSA9IHsKLSsJCXsgImNvbnRlbnQiLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ2MnIH0sCi0rCQl7ICJkcnktcnVuIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICduJyB9LAotKwkJeyAiZXhjbHVkZSIsICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAneCcgfSwKLSsJCXsgImZvcmNlIiwgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ2YnIH0sCi0rCQl7ICJoZWxwIiwgICAgICAgbm9fYXJndW1lbnQsIE5VTEwsICdoJyB9LAotKwkJeyAidmVyYm9zZSIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAndicgfSwKLSsJCXsgInZlcnNpb24iLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ1YnIH0sCi0rCQl7IE5VTEwsIDAsIE5VTEwsIDAgfSwKLSsJfTsKLSsKLSsJc2V0bG9jYWxlKExDX0FMTCwgIiIpOwotKwliaW5kdGV4dGRvbWFpbihQQUNLQUdFLCBMT0NBTEVESVIpOwotKwl0ZXh0ZG9tYWluKFBBQ0tBR0UpOwotKwljbG9zZV9zdGRvdXRfYXRleGl0KCk7Ci0rCi0rCXdoaWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiY252Zng6VmgiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKSB7Ci0rCQlzd2l0Y2ggKGNoKSB7Ci0rCQljYXNlICduJzoKLSsJCQljdGwtPm5vX2xpbmsgPSAxOwotKwkJCWJyZWFrOwotKwkJY2FzZSAndic6Ci0rCQkJY3RsLT52ZXJib3NlKys7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlICdjJzoKLSsJCQljdGwtPmNvbnRlbnRfb25seSA9IDE7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlICdmJzoKLSsJCQljdGwtPmZvcmNlID0gMTsKLSsJCQlicmVhazsKLSsJCWNhc2UgJ3gnOgotKyNpZmRlZiBIQVZFX1BDUkUKLSsJCQlleGNsdWRlX3BhdHRlcm4gPSAoUENSRTJfU1BUUikgb3B0YXJnOwotKyNlbHNlCi0rCQkJZXJyeChFWElUX0ZBSUxVUkUsCi0rCQkJICAgICBfKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOwotKyNlbmRpZgotKwkJCWJyZWFrOwotKwkJY2FzZSAnVic6Ci0rCQkJcHJpbnRfdmVyc2lvbihFWElUX1NVQ0NFU1MpOwotKwkJY2FzZSAnaCc6Ci0rCQkJdXNhZ2UoKTsKLSsJCWRlZmF1bHQ6Ci0rCQkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOwotKwkJfQotKwl9Ci0rCi0rCWlmIChvcHRpbmQgPT0gYXJnYykgewotKwkJd2FybngoXygibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKLSsJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwotKyNpZmRlZiBIQVZFX1BDUkUKLSsJaWYgKGV4Y2x1ZGVfcGF0dGVybikgewotKwkJcmUgPSBwY3JlMl9jb21waWxlKGV4Y2x1ZGVfcGF0dGVybiwgLyogdGhlIHBhdHRlcm4gKi8KLSsJCQkJICAgUENSRTJfWkVST19URVJNSU5BVEVELCAvKiBpbmRpY2F0ZXMgcGF0dGVybiBpcyB6ZXJvLXRlcm1pbmF0ZSAqLwotKwkJCQkgICAwLCAvKiBkZWZhdWx0IG9wdGlvbnMgKi8KLSsJCQkJICAgJmVycm9ybnVtYmVyLCAmZXJyb3JvZmZzZXQsIE5VTEwpOyAvKiB1c2UgZGVmYXVsdCBjb21waWxlIGNvbnRleHQgKi8KLSsJCWlmICghcmUpIHsKLSsJCQlQQ1JFMl9VQ0hBUiBidWZmZXJbMjU2XTsKLSsJCQlwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZShlcnJvcm51bWJlciwgYnVmZmVyLAotKwkJCQkJCXNpemVvZihidWZmZXIpKTsKLSsJCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygicGF0dGVybiBlcnJvciBhdCBvZmZzZXQgJWQ6ICVzIiksCi0rCQkJCShpbnQpZXJyb3JvZmZzZXQsIGJ1ZmZlcik7Ci0rCQl9Ci0rCQltYXRjaF9kYXRhID0gcGNyZTJfbWF0Y2hfZGF0YV9jcmVhdGVfZnJvbV9wYXR0ZXJuKHJlLCBOVUxMKTsKLSsJfQotKyNlbmRpZgotKwlhdGV4aXQocHJpbnRfc3VtbWFyeSk7Ci0rCi0rCWZvciAoaSA9IG9wdGluZDsgaSA8IGFyZ2M7IGkrKykKLSsJCXByb2Nlc3NfcGF0aChjdGwsIGFyZ3ZbaV0pOwotKwotKwl3aGlsZSAoY3RsLT5kaXJzKSB7Ci0rCQlESVIgKmRoOwotKwkJc3RydWN0IGRpcmVudCAqZGk7Ci0rCQlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkcCA9IGN0bC0+ZGlyczsKLSsJCXNpemVfdCBuYW0xYmFzZWxlbiA9IHN0cmxlbihkcC0+bmFtZSk7Ci0rCi0rCQljdGwtPmRpcnMgPSBkcC0+bmV4dDsKLSsJCWdyb3dzdHIoJm5hbTEsIGFkZDIobmFtMWJhc2VsZW4sIDEpKTsKLSsJCW1lbWNweShuYW0xLmJ1ZiwgZHAtPm5hbWUsIG5hbTFiYXNlbGVuKTsKLSsJCWZyZWUoZHApOwotKwkJbmFtMS5idWZbbmFtMWJhc2VsZW4rK10gPSAnLyc7Ci0rCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOwotKwkJZGggPSBvcGVuZGlyKG5hbTEuYnVmKTsKLSsKLSsJCWlmIChkaCA9PSBOVUxMKQotKwkJCWNvbnRpbnVlOwotKwkJY3RsLT5uZGlycysrOwotKwotKwkJd2hpbGUgKChkaSA9IHJlYWRkaXIoZGgpKSAhPSBOVUxMKSB7Ci0rCQkJaWYgKCFkaS0+ZF9uYW1lWzBdKQotKwkJCQljb250aW51ZTsKLSsJCQlpZiAoZGktPmRfbmFtZVswXSA9PSAnLicpIHsKLSsJCQkJaWYgKCFkaS0+ZF9uYW1lWzFdIHx8ICFzdHJjbXAoZGktPmRfbmFtZSwgIi4uIikpCi0rCQkJCQljb250aW51ZTsKLSsJCQl9Ci0rI2lmZGVmIEhBVkVfUENSRQotKwkJCWlmIChyZSAmJiBwY3JlMl9tYXRjaChyZSwgLyogY29tcGlsZWQgcmVnZXggKi8KLSsJCQkJCSAgICAgIChQQ1JFMl9TUFRSKSBkaS0+ZF9uYW1lLCBzdHJsZW4oZGktPmRfbmFtZSksIDAsIC8qIHN0YXJ0IGF0IG9mZnNldCAwICovCi0rCQkJCQkgICAgICAwLCAvKiBkZWZhdWx0IG9wdGlvbnMgKi8KLSsJCQkJCSAgICAgIG1hdGNoX2RhdGEsIC8qIGJsb2NrIGZvciBzdG9yaW5nIHRoZSByZXN1bHQgKi8KLSsJCQkJCSAgICAgIE5VTEwpIC8qIHVzZSBkZWZhdWx0IG1hdGNoIGNvbnRleHQgKi8KLSsJCQkgICAgPj0wKSB7Ci0rCQkJCWlmIChjdGwtPnZlcmJvc2UpIHsKLSsJCQkJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7Ci0rCQkJCQlwcmludGYoXygiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKLSsJCQkJfQotKwkJCQljb250aW51ZTsKLSsJCQl9Ci0rI2VuZGlmCi0rCQkJewotKwkJCQlzaXplX3Qgc3ViZGlybGVuOwotKwkJCQlncm93c3RyKCZuYW0xLAotKwkJCQkJYWRkMihuYW0xYmFzZWxlbiwgc3ViZGlybGVuID0KLSsJCQkJCSAgICAgc3RybGVuKGRpLT5kX25hbWUpKSk7Ci0rCQkJCW1lbWNweSgmbmFtMS5idWZbbmFtMWJhc2VsZW5dLCBkaS0+ZF9uYW1lLAotKwkJCQkgICAgICAgYWRkMihzdWJkaXJsZW4sIDEpKTsKLSsJCQl9Ci0rCQkJcHJvY2Vzc19wYXRoKGN0bCwgbmFtMS5idWYpOwotKwkJfQotKwkJY2xvc2VkaXIoZGgpOwotKwl9Ci0rCi0rCXJldHVybiAwOwotK30KLS0tLSBhL2xvY2FsZWRlZi9NYWtlZmlsZS5pbgotKysrIGIvbG9jYWxlZGVmL01ha2VmaWxlLmluCi1AQCAtNDAsNiArNDAsOCBAQCBXQVJORkxBR1MJPSAtV2FsbCAtV25vLWZvcm1hdAotIEZVTExDQwkJPSAkKENDKSAkKENQUEZMQUdTKSAkKENGTEFHUykgXAotIAkJICAkKERFRklORVMpICQoSU5DTFVERVMpICQoV0FSTkZMQUdTKQotIAotK0NST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTID0gY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLm8KLSsKLSBMT0NBTEVERUZfT0JKUwk9IGNoYXJtYXAubyBjaGFybWFwLWRpci5vIGxkLWFkZHJlc3MubyBsZC1jb2xsYXRlLm8gXAotIAkJICBsZC1jdHlwZS5vIGxkLWlkZW50aWZpY2F0aW9uLm8gbGQtbWVhc3VyZW1lbnQubyBcCi0gCQkgIGxkLW1lc3NhZ2VzLm8gbGQtbW9uZXRhcnkubyBsZC1uYW1lLm8gbGQtbnVtZXJpYy5vIFwKLUBAIC01NCwxMSArNTYsMTQgQEAgTE9DQUxFREVGX09CSlMJPSBjaGFybWFwLm8gY2hhcm1hcC1kaXIubwotIAkJICBhc3ByaW50Zi5vIGdldGRlbGltLm8gbG9jYWxlZGVmX2V4dHJhLm8gXAotIAkJICBvYnN0YWNrX3ByaW50Zi5vIHZhc3ByaW50Zi5vCi0gCi0tYWxsOgkJbG9jYWxlZGVmJChFWEVFWFQpCi0rYWxsOgkJbG9jYWxlZGVmJChFWEVFWFQpIGNyb3NzLWxvY2FsZWRlZi1oYXJkbGluayQoRVhFRVhUKQotIAotIGxvY2FsZWRlZiQoRVhFRVhUKTogJChMT0NBTEVERUZfT0JKUykKLSAJCSQoQ0MpIC1vICRAICQoTE9DQUxFREVGX09CSlMpICQoTElCUykKLSAKLStjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmskKEVYRUVYVCk6ICQoQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMpCi0rCQkkKENDKSAtbyAkQCAkKENST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTKSAkKExJQlMpCi0rCi0gY2xlYW46Ci0gCQlybSAtZiBsb2NhbGUkKEVYRUVYVCkgJChMT0NBTEVERUZfT0JKUykKLSAKLUBAIC03Nyw2ICs4Miw3IEBAIGNsZWFuOgotICUubzogJChzcmNkaXIpLyUuYwotIAkJJChGVUxMQ0MpIC1jIC1vICRAICQ8Ci0gCi0rY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYwotIGNoYXJtYXAubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAuYwotIGNoYXJtYXAtZGlyLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi0gbGQtYWRkcmVzcy5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvbGQtYWRkcmVzcy5jCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCi1AQCAtMCwwICsxLDQwNyBAQAotKy8qCi0rICogRnVuZGFtZW50YWwgQyBkZWZpbml0aW9ucy4KLSsgKi8KLSsKLSsjaWZuZGVmIFVUSUxfTElOVVhfQ19ICi0rI2RlZmluZSBVVElMX0xJTlVYX0NfSAotKwotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rCi0rI2lmZGVmIEhBVkVfRVJSX0gKLSsjIGluY2x1ZGUgPGVyci5oPgotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAotKyMgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiAgICAgLyogZm9yIG1ham9yLCBtaW5vciAqLwotKyNlbmRpZgotKwotKyNpZm5kZWYgTE9HSU5fTkFNRV9NQVgKLSsjIGRlZmluZSBMT0dJTl9OQU1FX01BWCAyNTYKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE5BTUVfTUFYCi0rIyBkZWZpbmUgTkFNRV9NQVggUEFUSF9NQVgKLSsjZW5kaWYKLSsKLSsvKgotKyAqIF9fR05VQ19QUkVSRVEgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgX19oYXNfYXR0cmlidXRlKCkgYW5kCi0rICogX19oYXNfZmVhdHVyZSgpLiBUaGUgX19oYXMgbWFjcm9zIGFyZSBzdXBwb3J0ZWQgYnkgY2xhbmcgYW5kIGdjYz49NS4KLSsgKi8KLSsjaWZuZGVmIF9fR05VQ19QUkVSRVEKLSsjIGlmIGRlZmluZWQgX19HTlVDX18gJiYgZGVmaW5lZCBfX0dOVUNfTUlOT1JfXwotKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSBcCi0rCSgoX19HTlVDX18gPDwgMTYpICsgX19HTlVDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQotKyMgZWxzZQotKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSAwCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZmRlZiBfX0dOVUNfXwotKwotKy8qICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjogYSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovCi0rIyBkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpIFwKLSsJVUxfQlVJTERfQlVHX09OX1pFUk8oX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGEpLCBfX3R5cGVvZl9fKCZhWzBdKSkpCi0rCi0rIyBkZWZpbmUgaWdub3JlX3Jlc3VsdCh4KSBfX2V4dGVuc2lvbl9fICh7IFwKLSsJX190eXBlb2ZfXyh4KSBfX2R1bW15IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSA9ICh4KTsgKHZvaWQpIF9fZHVtbXk7IFwKLSt9KQotKwotKyNlbHNlIC8qICFfX0dOVUNfXyAqLwotKyMgZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKQkwCi0rIyBkZWZpbmUgX19hdHRyaWJ1dGVfXyhfYXJnXykKLSsjIGRlZmluZSBpZ25vcmVfcmVzdWx0KHgpICgodm9pZCkgKHgpKQotKyNlbmRpZiAvKiAhX19HTlVDX18gKi8KLSsKLSsvKgotKyAqIEl0IGV2YWx1YXRlcyB0byAxIGlmIHRoZSBhdHRyaWJ1dGUvZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQKLSsgKiBjb21waWxhdGlvbiB0YXJnZWQuIEZhbGxiYWNrIGZvciBvbGQgY29tcGlsZXJzLgotKyAqLwotKyNpZm5kZWYgX19oYXNfYXR0cmlidXRlCi0rICAjZGVmaW5lIF9faGFzX2F0dHJpYnV0ZSh4KSAwCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfX2hhc19mZWF0dXJlCi0rICAjZGVmaW5lIF9faGFzX2ZlYXR1cmUoeCkgMAotKyNlbmRpZgotKwotKy8qCi0rICogRnVuY3Rpb24gYXR0cmlidXRlcwotKyAqLwotKyNpZm5kZWYgX191bF9hbGxvY19zaXplCi0rIyBpZiAoX19oYXNfYXR0cmlidXRlKGFsbG9jX3NpemUpICYmIF9faGFzX2F0dHJpYnV0ZSh3YXJuX3VudXNlZF9yZXN1bHQpKSB8fCBfX0dOVUNfUFJFUkVRICg0LCAzKQotKyMgIGRlZmluZSBfX3VsX2FsbG9jX3NpemUocykgX19hdHRyaWJ1dGVfXygoYWxsb2Nfc2l6ZShzKSwgd2Fybl91bnVzZWRfcmVzdWx0KSkKLSsjIGVsc2UKLSsjICBkZWZpbmUgX191bF9hbGxvY19zaXplKHMpCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZm5kZWYgX191bF9jYWxsb2Nfc2l6ZQotKyMgaWYgKF9faGFzX2F0dHJpYnV0ZShhbGxvY19zaXplKSAmJiBfX2hhc19hdHRyaWJ1dGUod2Fybl91bnVzZWRfcmVzdWx0KSkgfHwgX19HTlVDX1BSRVJFUSAoNCwgMykKLSsjICBkZWZpbmUgX191bF9jYWxsb2Nfc2l6ZShuLCBzKSBfX2F0dHJpYnV0ZV9fKChhbGxvY19zaXplKG4sIHMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKQotKyMgZWxzZQotKyMgIGRlZmluZSBfX3VsX2NhbGxvY19zaXplKG4sIHMpCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZiBfX2hhc19hdHRyaWJ1dGUocmV0dXJuc19ub25udWxsKSB8fCBfX0dOVUNfUFJFUkVRICg0LCA5KQotKyMgZGVmaW5lIF9fdWxfcmV0dXJuc19ub25udWxsIF9fYXR0cmlidXRlX18oKHJldHVybnNfbm9ubnVsbCkpCi0rI2Vsc2UKLSsjIGRlZmluZSBfX3VsX3JldHVybnNfbm9ubnVsbAotKyNlbmRpZgotKwotKy8qCi0rICogRm9yY2UgYSBjb21waWxhdGlvbiBlcnJvciBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgYnV0IGFsc28gcHJvZHVjZSBhCi0rICogcmVzdWx0IChvZiB2YWx1ZSAwIGFuZCB0eXBlIHNpemVfdCksIHNvIHRoZSBleHByZXNzaW9uIGNhbiBiZSB1c2VkCi0rICogZS5nLiBpbiBhIHN0cnVjdHVyZSBpbml0aWFsaXplciAob3Igd2hlcmV2ZXIgZWxzZSBjb21tYSBleHByZXNzaW9ucwotKyAqIGFyZW4ndCBwZXJtaXR0ZWQpLgotKyAqLwotKyNkZWZpbmUgVUxfQlVJTERfQlVHX09OX1pFUk8oZSkgX19leHRlbnNpb25fXyAoc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQotKyNkZWZpbmUgQlVJTERfQlVHX09OX05VTEwoZSkgKCh2b2lkICopc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQotKwotKyNpZm5kZWYgQVJSQVlfU0laRQotKyMgZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBQQVRIX01BWAotKyMgZGVmaW5lIFBBVEhfTUFYIDQwOTYKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFRSVUUKLSsjIGRlZmluZSBUUlVFIDEKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEZBTFNFCi0rIyBkZWZpbmUgRkFMU0UgMAotKyNlbmRpZgotKwotKyNpZm5kZWYgbWluCi0rIyBkZWZpbmUgbWluKHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJCVwKLSsJX190eXBlb2ZfXyh4KSBfbWluMSA9ICh4KTsJCVwKLSsJX190eXBlb2ZfXyh5KSBfbWluMiA9ICh5KTsJCVwKLSsJKHZvaWQpICgmX21pbjEgPT0gJl9taW4yKTsJCVwKLSsJX21pbjEgPCBfbWluMiA/IF9taW4xIDogX21pbjI7IH0pCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBtYXgKLSsjIGRlZmluZSBtYXgoeCwgeSkgX19leHRlbnNpb25fXyAoewkJXAotKwlfX3R5cGVvZl9fKHgpIF9tYXgxID0gKHgpOwkJXAotKwlfX3R5cGVvZl9fKHkpIF9tYXgyID0gKHkpOwkJXAotKwkodm9pZCkgKCZfbWF4MSA9PSAmX21heDIpOwkJXAotKwlfbWF4MSA+IF9tYXgyID8gX21heDEgOiBfbWF4MjsgfSkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIGNtcF9udW1iZXJzCi0rIyBkZWZpbmUgY21wX251bWJlcnMoeCwgeSkgX19leHRlbnNpb25fXyAoewlcCi0rCV9fdHlwZW9mX18oeCkgX2EgPSAoeCk7CQkJXAotKwlfX3R5cGVvZl9fKHkpIF9iID0gKHkpOwkJCVwKLSsJKHZvaWQpICgmX2EgPT0gJl9iKTsJCQlcCi0rCV9hID09IF9iID8gMCA6IF9hID4gX2IgPyAxIDogLTE7IH0pCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBvZmZzZXRvZgotKyNkZWZpbmUgb2Zmc2V0b2YoVFlQRSwgTUVNQkVSKSAoKHNpemVfdCkgJigoVFlQRSAqKTApLT5NRU1CRVIpCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBjb250YWluZXJfb2YgLSBjYXN0IGEgbWVtYmVyIG9mIGEgc3RydWN0dXJlIG91dCB0byB0aGUgY29udGFpbmluZyBzdHJ1Y3R1cmUKLSsgKiBAcHRyOgl0aGUgcG9pbnRlciB0byB0aGUgbWVtYmVyLgotKyAqIEB0eXBlOgl0aGUgdHlwZSBvZiB0aGUgY29udGFpbmVyIHN0cnVjdCB0aGlzIGlzIGVtYmVkZGVkIGluLgotKyAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgd2l0aGluIHRoZSBzdHJ1Y3QuCi0rICovCi0rI2lmbmRlZiBjb250YWluZXJfb2YKLSsjZGVmaW5lIGNvbnRhaW5lcl9vZihwdHIsIHR5cGUsIG1lbWJlcikgX19leHRlbnNpb25fXyAoewlcCi0rCWNvbnN0IF9fdHlwZW9mX18oICgodHlwZSAqKTApLT5tZW1iZXIgKSAqX19tcHRyID0gKHB0cik7IFwKLSsJKHR5cGUgKikoIChjaGFyICopX19tcHRyIC0gb2Zmc2V0b2YodHlwZSxtZW1iZXIpICk7fSkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfUFJPR1JBTV9JTlZPQ0FUSU9OX1NIT1JUX05BTUUKLSsjIGlmZGVmIEhBVkVfX19QUk9HTkFNRQotK2V4dGVybiBjaGFyICpfX3Byb2duYW1lOwotKyMgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBfX3Byb2duYW1lCi0rIyBlbHNlCi0rIyAgaWZkZWYgSEFWRV9HRVRFWEVDTkFNRQotKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAotKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKGdldGV4ZWNuYW1lKCksIDApCi0rIyAgZWxzZQotKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAotKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKF9fRklMRV9fLCAxKQotKyMgIGVuZGlmCi0rc3RhdGljIGNoYXIgcHJvZ19pbnZfc2hfbm1fYnVmWzI1Nl07Ci0rc3RhdGljIGlubGluZSBjaGFyICoKLStwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoY2hhciAqZiwgY2hhciBzdHJpcGV4dCkKLSt7Ci0rCWNoYXIgKnQ7Ci0rCi0rCWlmICgodCA9IHN0cnJjaHIoZiwgJy8nKSkgIT0gTlVMTCkKLSsJCXQrKzsKLSsJZWxzZQotKwkJdCA9IGY7Ci0rCi0rCXN0cm5jcHkocHJvZ19pbnZfc2hfbm1fYnVmLCB0LCBzaXplb2YocHJvZ19pbnZfc2hfbm1fYnVmKSAtIDEpOwotKwlwcm9nX2ludl9zaF9ubV9idWZbc2l6ZW9mKHByb2dfaW52X3NoX25tX2J1ZikgLSAxXSA9ICdcMCc7Ci0rCi0rCWlmIChzdHJpcGV4dCAmJiAodCA9IHN0cnJjaHIocHJvZ19pbnZfc2hfbm1fYnVmLCAnLicpKSAhPSBOVUxMKQotKwkJKnQgPSAnXDAnOwotKwotKwlyZXR1cm4gcHJvZ19pbnZfc2hfbm1fYnVmOwotK30KLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rCi0rI2lmbmRlZiBIQVZFX0VSUl9ICi0rc3RhdGljIGlubGluZSB2b2lkCi0rZXJybXNnKGNoYXIgZG9leGl0LCBpbnQgZXhjb2RlLCBjaGFyIGFkZGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7Ci0rCWlmIChmbXQgIT0gTlVMTCkgewotKwkJdmFfbGlzdCBhcmdwOwotKwkJdmFfc3RhcnQoYXJncCwgZm10KTsKLSsJCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdwKTsKLSsJCXZhX2VuZChhcmdwKTsKLSsJCWlmIChhZGRlcnIpCi0rCQkJZnByaW50ZihzdGRlcnIsICI6ICIpOwotKwl9Ci0rCWlmIChhZGRlcnIpCi0rCQlmcHJpbnRmKHN0ZGVyciwgIiVtIik7Ci0rCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKLSsJaWYgKGRvZXhpdCkKLSsJCWV4aXQoZXhjb2RlKTsKLSt9Ci0rCi0rI2lmbmRlZiBIQVZFX0VSUgotKyMgZGVmaW5lIGVycihFLCBGTVQuLi4pIGVycm1zZygxLCBFLCAxLCBGTVQpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBIQVZFX0VSUlgKLSsjIGRlZmluZSBlcnJ4KEUsIEZNVC4uLikgZXJybXNnKDEsIEUsIDAsIEZNVCkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfV0FSTgotKyMgZGVmaW5lIHdhcm4oRk1ULi4uKSBlcnJtc2coMCwgMCwgMSwgRk1UKQotKyNlbmRpZgotKwotKyNpZm5kZWYgSEFWRV9XQVJOWAotKyMgZGVmaW5lIHdhcm54KEZNVC4uLikgZXJybXNnKDAsIDAsIDAsIEZNVCkKLSsjZW5kaWYKLSsjZW5kaWYgLyogIUhBVkVfRVJSX0ggKi8KLSsKLSsKLSsvKiBEb24ndCB1c2UgaW5saW5lIGZ1bmN0aW9uIHRvIGF2b2lkICcjaW5jbHVkZSAibmxzLmgiJyBpbiBjLmgKLSsgKi8KLSsjZGVmaW5lIGVycnRyeWhlbHAoZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCi0rCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAotKwkJCXByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsgXAotKwlleGl0KGV2YWwpOyBcCi0rfSkKLSsKLSsvKiBBZnRlciBmYWlsZWQgZXhlY3ZwKCkgKi8KLSsjZGVmaW5lIEVYX0VYRUNfRkFJTEVECQkxMjYJLyogUHJvZ3JhbSBsb2NhdGVkLCBidXQgbm90IHVzYWJsZS4gKi8KLSsjZGVmaW5lIEVYX0VYRUNfRU5PRU5UCQkxMjcJLyogQ291bGQgbm90IGZpbmQgcHJvZ3JhbSB0byBleGVjLiAgKi8KLSsjZGVmaW5lIGVycmV4ZWMobmFtZSkJZXJyKGVycm5vID09IEVOT0VOVCA/IEVYX0VYRUNfRU5PRU5UIDogRVhfRVhFQ19GQUlMRUQsIFwKLSsJCQlfKCJmYWlsZWQgdG8gZXhlY3V0ZSAlcyIpLCBuYW1lKQotKwotKwotK3N0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBpbnQgaXNfcG93ZXJfb2ZfMih1bnNpZ25lZCBsb25nIG51bSkKLSt7Ci0rCXJldHVybiAobnVtICE9IDAgJiYgKChudW0gJiAobnVtIC0gMSkpID09IDApKTsKLSt9Ci0rCi0rI2lmbmRlZiBIQVZFX0xPRkZfVAotK3R5cGVkZWYgaW50NjRfdCBsb2ZmX3Q7Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkKEhBVkVfRElSRkQpICYmICghZGVmaW5lZChIQVZFX0RFQ0xfRElSRkQpIHx8IEhBVkVfREVDTF9ESVJGRCA9PSAwKSAmJiBkZWZpbmVkKEhBVkVfRElSX0REX0ZEKQotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0rc3RhdGljIGlubGluZSBpbnQgZGlyZmQoRElSICpkKQotK3sKLSsJcmV0dXJuIGQtPmRkX2ZkOwotK30KLSsjZW5kaWYKLSsKLSsvKgotKyAqIEZhbGxiYWNrIGRlZmluZXMgZm9yIG9sZCB2ZXJzaW9ucyBvZiBnbGliYwotKyAqLwotKyNpbmNsdWRlIDxmY250bC5oPgotKwotKyNpZmRlZiBPX0NMT0VYRUMKLSsjZGVmaW5lIFVMX0NMT0VYRUNTVFIJImUiCi0rI2Vsc2UKLSsjZGVmaW5lIFVMX0NMT0VYRUNTVFIJIiIKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE9fQ0xPRVhFQwotKyNkZWZpbmUgT19DTE9FWEVDIDAKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19GcmVlQlNEX2tlcm5lbF9fCi0rI2lmbmRlZiBGX0RVUEZEX0NMT0VYRUMKLSsjZGVmaW5lIEZfRFVQRkRfQ0xPRVhFQwkxNwkvKiBMaWtlIEZfRFVQRkQsIGJ1dCBGRF9DTE9FWEVDIGlzIHNldCAqLwotKyNlbmRpZgotKyNlbmRpZgotKwotKwotKyNpZm5kZWYgQUlfQUREUkNPTkZJRwotKyNkZWZpbmUgQUlfQUREUkNPTkZJRyAweDAwMjAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIElVVEY4Ci0rI2RlZmluZSBJVVRGOCAwMDQwMDAwCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBNQVhIT1NUTkFNRUxFTiByZXBsYWNlbWVudAotKyAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGdldF9ob3N0bmFtZV9tYXgodm9pZCkKLSt7Ci0rCWxvbmcgbGVuID0gc3lzY29uZihfU0NfSE9TVF9OQU1FX01BWCk7Ci0rCi0rCWlmICgwIDwgbGVuKQotKwkJcmV0dXJuIGxlbjsKLSsKLSsjaWZkZWYgTUFYSE9TVE5BTUVMRU4KLSsJcmV0dXJuIE1BWEhPU1ROQU1FTEVOOwotKyNlbGlmIEhPU1RfTkFNRV9NQVgKLSsJcmV0dXJuIEhPU1RfTkFNRV9NQVg7Ci0rI2VuZGlmCi0rCXJldHVybiA2NDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBDb25zdGFudCBzdHJpbmdzIGZvciB1c2FnZSgpIGZ1bmN0aW9ucy4gRm9yIG1vcmUgaW5mbyBzZWUKLSsgKiBEb2N1bWVudGF0aW9uL3tob3d0by11c2FnZS1mdW5jdGlvbi50eHQsYm9pbGVycGxhdGUuY30KLSsgKi8KLSsjZGVmaW5lIFVTQUdFX0hFQURFUiAgICAgKCJcblVzYWdlOlxuIikKLSsjZGVmaW5lIFVTQUdFX09QVElPTlMgICAgKCJcbk9wdGlvbnM6XG4iKQotKyNkZWZpbmUgVVNBR0VfRlVOQ1RJT05TICAoIlxuRnVuY3Rpb25zOlxuIikKLSsjZGVmaW5lIFVTQUdFX0NPTU1BTkRTICAgKCJcbkNvbW1hbmRzOlxuIikKLSsjZGVmaW5lIFVTQUdFX0NPTFVNTlMgICAgKCJcbkF2YWlsYWJsZSBvdXRwdXQgY29sdW1uczpcbiIpCi0rI2RlZmluZSBVU0FHRV9TRVBBUkFUT1IgICAgIlxuIgotKwotKyNkZWZpbmUgVVNBR0VfT1BUU1RSX0hFTFAgICAgICgiZGlzcGxheSB0aGlzIGhlbHAiKQotKyNkZWZpbmUgVVNBR0VfT1BUU1RSX1ZFUlNJT04gICgiZGlzcGxheSB2ZXJzaW9uIikKLSsKLSsjZGVmaW5lIFVTQUdFX0hFTFBfT1BUSU9OUyhtYXJnX2RzYykgXAotKwkJIiUtIiAjbWFyZ19kc2MgInMlc1xuIiBcCi0rCQkiJS0iICNtYXJnX2RzYyAicyVzXG4iIFwKLSsJCSwgIiAtaCwgLS1oZWxwIiwgICAgVVNBR0VfT1BUU1RSX0hFTFAgXAotKwkJLCAiIC1WLCAtLXZlcnNpb24iLCBVU0FHRV9PUFRTVFJfVkVSU0lPTgotKwotKyNkZWZpbmUgVVNBR0VfTUFOX1RBSUwoX21hbikgICAoIlxuRm9yIG1vcmUgZGV0YWlscyBzZWUgJXMuXG4iKSwgX21hbgotKwotKyNkZWZpbmUgVVRJTF9MSU5VWF9WRVJTSU9OICgiJXMgZnJvbSAlc1xuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lLCBQQUNLQUdFX1NUUklORwotKwotKyNkZWZpbmUgcHJpbnRfdmVyc2lvbihldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKLSsJCXByaW50ZihVVElMX0xJTlVYX1ZFUlNJT04pOyBcCi0rCQlleGl0KGV2YWwpOyBcCi0rfSkKLSsKLSsvKgotKyAqIHNjYW5mIG1vZGlmaWVycyBmb3IgInN0cmluZ3MgYWxsb2NhdGlvbiIKLSsgKi8KLSsjaWZkZWYgSEFWRV9TQ0FORl9NU19NT0RJRklFUgotKyNkZWZpbmUgVUxfU0NOc0EJIiVtcyIKLSsjZWxpZiBkZWZpbmVkKEhBVkVfU0NBTkZfQVNfTU9ESUZJRVIpCi0rI2RlZmluZSBVTF9TQ05zQQkiJWFzIgotKyNlbmRpZgotKwotKy8qCi0rICogc2VlayBzdHVmZgotKyAqLwotKyNpZm5kZWYgU0VFS19EQVRBCi0rIyBkZWZpbmUgU0VFS19EQVRBCTMKLSsjZW5kaWYKLSsjaWZuZGVmIFNFRUtfSE9MRQotKyMgZGVmaW5lIFNFRUtfSE9MRQk0Ci0rI2VuZGlmCi0rCi0rCi0rLyoKLSsgKiBNYWNyb3MgdG8gY29udmVydCAjZGVmaW5lJ2l0aW9ucyB0byBzdHJpbmdzLCBmb3IgZXhhbXBsZQotKyAqICNkZWZpbmUgWFlYWFkgNDIKLSsgKiBwcmludGYgKCIlcz0lc1xuIiwgc3RyaW5naWZ5KFhZWFhZKSwgc3RyaW5naWZ5X3ZhbHVlKFhZWFhZKSk7Ci0rICovCi0rI2RlZmluZSBzdHJpbmdpZnlfdmFsdWUocykgc3RyaW5naWZ5KHMpCi0rI2RlZmluZSBzdHJpbmdpZnkocykgI3MKLSsKLSsvKgotKyAqIFVMX0FTQU5fQkxBQ0tMSVNUIGlzIGEgbWFjcm8gdG8gdGVsbCBBZGRyZXNzU2FuaXRpemVyIChhIGNvbXBpbGUtdGltZQotKyAqIGluc3RydW1lbnRhdGlvbiBzaGlwcGVkIHdpdGggQ2xhbmcgYW5kIEdDQykgdG8gbm90IGluc3RydW1lbnQgdGhlCi0rICogYW5ub3RhdGVkIGZ1bmN0aW9uLiAgRnVydGhlcm1vcmUsIGl0IHdpbGwgcHJldmVudCB0aGUgY29tcGlsZXIgZnJvbQotKyAqIGlubGluaW5nIHRoZSBmdW5jdGlvbiBiZWNhdXNlIGlubGluaW5nIGN1cnJlbnRseSBicmVha3MgdGhlIGJsYWNrbGlzdGluZwotKyAqIG1lY2hhbmlzbSBvZiBBZGRyZXNzU2FuaXRpemVyLgotKyAqLwotKyNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfbWVtb3J5KSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfYWRkcmVzcykKLSsjIGRlZmluZSBVTF9BU0FOX0JMQUNLTElTVCBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9yeSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2FkZHJlc3MpKQotKyNlbHNlCi0rIyBkZWZpbmUgVUxfQVNBTl9CTEFDS0xJU1QJLyogbm90aGluZyAqLwotKyNlbmRpZgotKwotKy8qCi0rICogTm90ZSB0aGF0IHN5c2NvbmYoX1NDX0dFVFBXX1JfU0laRV9NQVgpIHJldHVybnMgKmluaXRpYWwqIHN1Z2dlc3RlZCBzaXplIGZvcgotKyAqIHB3ZCBidWZmZXIgYW5kIGluIHNvbWUgY2FzZXMgaXQgaXMgbm90IGxhcmdlIGVub3VnaC4gU2VlIFBPU0lYIGFuZAotKyAqIGdldHB3bmFtX3IgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKi8KLSsjZGVmaW5lIFVMX0dFVFBXX0JVRlNJWgkoMTYgKiAxMDI0KQotKwotKy8qCi0rICogRGFyd2luIG9yIG90aGVyIEJTRHMgbWF5IG9ubHkgaGF2ZSBNQVBfQU5PTi4gVG8gZ2V0IGl0IG9uIERhcndpbiB3ZSBtdXN0Ci0rICogZGVmaW5lIF9EQVJXSU5fQ19TT1VSQ0UgYmVmb3JlIGluY2x1ZGluZyBzeXMvbW1hbi5oLiBXZSBkbyB0aGlzIGluIGNvbmZpZy5oLgotKyAqLwotKyNpZiAhZGVmaW5lZCBNQVBfQU5PTllNT1VTICYmIGRlZmluZWQgTUFQX0FOT04KLSsjIGRlZmluZSBNQVBfQU5PTllNT1VTICAoTUFQX0FOT04pCi0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIFVUSUxfTElOVVhfQ19IICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmgKLUBAIC0wLDAgKzEsMTI5IEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGF2aWRsb2hyIEJ1ZXNvIDxkYXZlQGdudS5vcmc+Ci0rICoKLSsgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQotKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsgKgotKyAqIEdlbmVyYWwgbWVtb3J5IGFsbG9jYXRpb24gd3JhcHBlcnMgZm9yIG1hbGxvYywgcmVhbGxvYywgY2FsbG9jIGFuZCBzdHJkdXAKLSsgKi8KLSsKLSsjaWZuZGVmIFVUSUxfTElOVVhfWEFMTE9DX0gKLSsjZGVmaW5lIFVUSUxfTElOVVhfWEFMTE9DX0gKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICJjLmgiCi0rCi0rI2lmbmRlZiBYQUxMT0NfRVhJVF9DT0RFCi0rIyBkZWZpbmUgWEFMTE9DX0VYSVRfQ09ERSBFWElUX0ZBSUxVUkUKLSsjZW5kaWYKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKLStfX2Vycl9vb20oY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUpCi0rewotKwllcnIoWEFMTE9DX0VYSVRfQ09ERSwgIiVzOiAldTogY2Fubm90IGFsbG9jYXRlIG1lbW9yeSIsIGZpbGUsIGxpbmUpOwotK30KLSsKLSsjZGVmaW5lIGVycl9vb20oKQlfX2Vycl9vb20oX19GSUxFX18sIF9fTElORV9fKQotKwotK3N0YXRpYyBpbmxpbmUgX191bF9hbGxvY19zaXplKDEpIF9fdWxfcmV0dXJuc19ub25udWxsCi0rdm9pZCAqeG1hbGxvYyhjb25zdCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICAgICAgICB2b2lkICpyZXQgPSBtYWxsb2Moc2l6ZSk7Ci0rCi0rICAgICAgICBpZiAoIXJldCAmJiBzaXplKQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgX191bF9hbGxvY19zaXplKDIpIF9fdWxfcmV0dXJuc19ub25udWxsCi0rdm9pZCAqeHJlYWxsb2Modm9pZCAqcHRyLCBjb25zdCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICAgICAgICB2b2lkICpyZXQgPSByZWFsbG9jKHB0ciwgc2l6ZSk7Ci0rCi0rICAgICAgICBpZiAoIXJldCAmJiBzaXplKQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgX191bF9jYWxsb2Nfc2l6ZSgxLCAyKSBfX3VsX3JldHVybnNfbm9ubnVsbAotK3ZvaWQgKnhjYWxsb2MoY29uc3Qgc2l6ZV90IG5lbGVtcywgY29uc3Qgc2l6ZV90IHNpemUpCi0rewotKyAgICAgICAgdm9pZCAqcmV0ID0gY2FsbG9jKG5lbGVtcywgc2l6ZSk7Ci0rCi0rICAgICAgICBpZiAoIXJldCAmJiBzaXplICYmIG5lbGVtcykKLSsgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgJXp1IGJ5dGVzIiwgc2l6ZSk7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIGNoYXIgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgX191bF9yZXR1cm5zX25vbm51bGwKLSsqeHN0cmR1cChjb25zdCBjaGFyICpzdHIpCi0rewotKyAgICAgICAgY2hhciAqcmV0OwotKwotKyAgICAgICAgaWYgKCFzdHIpCi0rICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICAgICAgcmV0ID0gc3RyZHVwKHN0cik7Ci0rCi0rICAgICAgICBpZiAoIXJldCkKLSsgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgZHVwbGljYXRlIHN0cmluZyIpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgX191bF9yZXR1cm5zX25vbm51bGwKLSt4c3RybmR1cChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBzaXplKQotK3sKLSsgICAgICAgIGNoYXIgKnJldDsKLSsKLSsgICAgICAgIGlmICghc3RyKQotKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgICAgIHJldCA9IHN0cm5kdXAoc3RyLCBzaXplKTsKLSsKLSsgICAgICAgIGlmICghcmV0KQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBkdXBsaWNhdGUgc3RyaW5nIik7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLSsKLStzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkKLSsgICAgeGFzcHJpbnRmKGNoYXIgKipzdHJwLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rCWludCByZXQ7Ci0rCXZhX2xpc3QgYXJnczsKLSsJdmFfc3RhcnQoYXJncywgZm10KTsKLSsJcmV0ID0gdmFzcHJpbnRmKCYoKnN0cnApLCBmbXQsIGFyZ3MpOwotKwl2YV9lbmQoYXJncyk7Ci0rCWlmIChyZXQgPCAwKQotKwkJZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgc3RyaW5nIik7Ci0rCXJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgaW50ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkKLSt4dmFzcHJpbnRmKGNoYXIgKipzdHJwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCi0rewotKwlpbnQgcmV0ID0gdmFzcHJpbnRmKCYoKnN0cnApLCBmbXQsIGFwKTsKLSsJaWYgKHJldCA8IDApCi0rCQllcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSBzdHJpbmciKTsKLSsJcmV0dXJuIHJldDsKLSt9Ci0rCi0rCi0rc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgeGdldGhvc3RuYW1lKHZvaWQpCi0rewotKwljaGFyICpuYW1lOwotKwlzaXplX3Qgc3ogPSBnZXRfaG9zdG5hbWVfbWF4KCkgKyAxOwotKwotKwluYW1lID0geG1hbGxvYyhzaXplb2YoY2hhcikgKiBzeik7Ci0rCi0rCWlmIChnZXRob3N0bmFtZShuYW1lLCBzeikgIT0gMCkgewotKwkJZnJlZShuYW1lKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCW5hbWVbc3ogLSAxXSA9ICdcMCc7Ci0rCXJldHVybiBuYW1lOwotK30KLSsKLSsjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWxsb3ctY29tcGlsZS1zZXBhcmF0ZS1mcm9tLXV0aWwtbGludXgtaGFyZGxpbmsucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FsbG93LWNvbXBpbGUtc2VwYXJhdGUtZnJvbS11dGlsLWxpbnV4LWhhcmRsaW5rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTQ4ZWJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWxsb3ctY29tcGlsZS1zZXBhcmF0ZS1mcm9tLXV0aWwtbGludXgtaGFyZGxpbmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAKLSBsb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMgfCAgIDc5ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKLQotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKLUBAIC0yMCw2ICsyMCw4IEBACi0gICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSAgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotICAqLwotKwotKyN1bmRlZiBIQVZFX1BDUkUKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxnZXRvcHQuaD4KLUBAIC0zOCw4ICs0MCw4IEBACi0gCi0gI2luY2x1ZGUgImMuaCIKLSAjaW5jbHVkZSAieGFsbG9jLmgiCi0tI2luY2x1ZGUgIm5scy5oIgotLSNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgotKy8vI2luY2x1ZGUgIm5scy5oIgotKy8vI2luY2x1ZGUgImNsb3Nlc3RyZWFtLmgiCi0gCi0gI2RlZmluZSBOSEFTSCAgICgxPDwxNykgIC8qIE11c3QgYmUgYSBwb3dlciBvZiAyISAqLwotICNkZWZpbmUgTkJVRiAgICA2NAotQEAgLTEyNCwzMyArMTI2LDMzIEBAIHN0YXRpYyB2b2lkIHByaW50X3N1bW1hcnkodm9pZCkKLSAJaWYgKGN0bC0+dmVyYm9zZSA+IDEgJiYgY3RsLT5ubGlua3MpCi0gCQlmcHV0YygnXG4nLCBzdGRvdXQpOwotIAotLQlwcmludGYoXygiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKLS0JcHJpbnRmKF8oIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7Ci0tCXByaW50ZihfKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKLS0JcHJpbnRmKF8oIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7Ci0rCXByaW50ZigoIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7Ci0rCXByaW50ZigoIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7Ci0rCXByaW50ZigoIlJlZ3VsYXIgZmlsZXM6ICU5bGxkXG4iKSwgY3RsLT5ucmVnZmlsZXMpOwotKwlwcmludGYoKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOwotIAlwcmludGYoICAiJXMlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/Ci0tCSAgICAgICBfKCJXb3VsZCBsaW5rOiAgICAiKSA6Ci0tCSAgICAgICBfKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKLSsJICAgICAgICgiV291bGQgbGluazogICAgIikgOgotKwkgICAgICAgKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKLSAJcHJpbnRmKCAgIiVzICU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KLS0JICAgICAgIF8oIldvdWxkIHNhdmU6ICAgIikgOgotLQkgICAgICAgXygiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKLSsJICAgICAgICgiV291bGQgc2F2ZTogICAiKSA6Ci0rCSAgICAgICAoIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpIHVzYWdlKHZvaWQpCi0gewotIAlmcHV0cyhVU0FHRV9IRUFERVIsIHN0ZG91dCk7Ci0tCXByaW50ZihfKCIgJXMgW29wdGlvbnNdIGRpcmVjdG9yeS4uLlxuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKLSsJcHJpbnRmKCgiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7Ci0gCi0gCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKLS0JcHV0cyhfKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKLSsJcHV0cygoIkNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB1c2luZyBoYXJkbGlua3MuIikpOwotIAotIAlmcHV0cyhVU0FHRV9PUFRJT05TLCBzdGRvdXQpOwotLQlwdXRzKF8oIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7Ci0tCXB1dHMoXygiIC1uLCAtLWRyeS1ydW4gICAgICAgICAgZG9uJ3QgYWN0dWFsbHkgbGluayBhbnl0aGluZyIpKTsKLS0JcHV0cyhfKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOwotLQlwdXRzKF8oIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKLS0JcHV0cyhfKCIgLWYsIC0tZm9yY2UgICAgICAgICAgICBmb3JjZSBoYXJkbGlua2luZyBhY3Jvc3MgZmlsZXN5c3RlbXMiKSk7Ci0tCXB1dHMoXygiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOwotKwlwdXRzKCgiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKLSsJcHV0cygoIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7Ci0rCXB1dHMoKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOwotKwlwdXRzKCgiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOwotKwlwdXRzKCgiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOwotKwlwdXRzKCgiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOwotIAotIAlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7Ci0gCXByaW50ZihVU0FHRV9IRUxQX09QVElPTlMoMTYpKTsgLyogY2hhciBvZmZzZXQgdG8gYWxpZ24gb3B0aW9uIGRlc2NyaXB0aW9ucyAqLwotQEAgLTE2NCw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQyKHNpemVfdCBhLCBzaXplCi0gCXNpemVfdCBzdW0gPSBhICsgYjsKLSAKLSAJaWYgKHN1bSA8IGEpCi0tCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygiaW50ZWdlciBvdmVyZmxvdyIpKTsKLSsJCWVycngoRVhJVF9GQUlMVVJFLCAoImludGVnZXIgb3ZlcmZsb3ciKSk7Ci0gCXJldHVybiBzdW07Ci0gfQotIAotQEAgLTE5Myw3ICsxOTUsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCWlmIChzdC5zdF9kZXYgIT0gY3RsLT5kZXYgJiYgIWN0bC0+Zm9yY2UpIHsKLSAJCWlmIChjdGwtPmRldikKLSAJCQllcnJ4KEVYSVRfRkFJTFVSRSwKLS0JCQkgICAgIF8oIiVzIGlzIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gdGhlIHJlc3QgIgotKwkJCSAgICAgKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKLSAJCQkgICAgICAgIih1c2UgLWYgb3B0aW9uIHRvIG92ZXJyaWRlKS4iKSwgbmFtZSk7Ci0gCQljdGwtPmRldiA9IHN0LnN0X2RldjsKLSAJfQotQEAgLTI4Nyw5ICsyODksOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCQkJCQkJCShzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpIDogZnNpemU7Ci0gCi0gCQkJCQlpZiAoKHhzeiA9IHJlYWQoZmQsIGN0bC0+aW9idWYxLCByc2l6ZSkpICE9IHJzaXplKQotLQkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7Ci0rCQkJCQkJd2FybigoImNhbm5vdCByZWFkICVzIiksIG5hbWUpOwotIAkJCQkJZWxzZSBpZiAoKHhzeiA9IHJlYWQoZmQyLCBjdGwtPmlvYnVmMiwgcnNpemUpKSAhPSByc2l6ZSkKLS0JCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7Ci0rCQkJCQkJd2FybigoImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7Ci0gCi0gCQkJCQlpZiAoeHN6ICE9IHJzaXplKSB7Ci0gCQkJCQkJY2xvc2UoZmQpOwotQEAgLTMwMywxMyArMzA1LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmsKLSAJCQkJaWYgKGZzaXplID4gMCkKLSAJCQkJCWNvbnRpbnVlOwotIAkJCQlpZiAobHN0YXQobmFtZSwgJnN0MykpIHsKLS0JCQkJCXdhcm4oXygiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7Ci0rCQkJCQl3YXJuKCgiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7Ci0gCQkJCQljbG9zZShmZCk7Ci0gCQkJCQlyZXR1cm47Ci0gCQkJCX0KLSAJCQkJc3QzLnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7Ci0gCQkJCWlmIChzdGNtcCgmc3QsICZzdDMsIDApKSB7Ci0tCQkJCQl3YXJueChfKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKLSsJCQkJCXdhcm54KCgiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7Ci0gCQkJCQljbG9zZShmZCk7Ci0gCQkJCQlyZXR1cm47Ci0gCQkJCX0KLUBAIC0zMjksMTggKzMzMSwxOCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCQkJCQkgICAgICAgc3VmZml4bGVuICsgMSk7Ci0gCQkJCQkvKiBGaXJzdCBjcmVhdGUgYSB0ZW1wb3JhcnkgbGluayB0byBuMSB1bmRlciBhIG5ldyBuYW1lICovCi0gCQkJCQlpZiAobGluayhuMSwgbmFtMi5idWYpKSB7Ci0tCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCi0rCQkJCQkJd2FybigoImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKLSAJCQkJCQkJbjEsIG4yLCBuYW0yLmJ1Zik7Ci0gCQkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0gCQkJCQkJY29udGludWU7Ci0gCQkJCQl9Ci0gCQkJCQkvKiBUaGVuIHJlbmFtZSBpbnRvIHBsYWNlIG92ZXIgdGhlIGV4aXN0aW5nIG4yICovCi0gCQkJCQlpZiAocmVuYW1lKG5hbTIuYnVmLCBuMikpIHsKLS0JCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKLSsJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChyZW5hbWUgdGVtcG9yYXJ5IGxpbmsgdG8gJXMgZmFpbGVkKSIpLAotIAkJCQkJCQluMSwgbjIsIG4yKTsKLSAJCQkJCQkvKiBTb21ldGhpbmcgd2VudCB3cm9uZywgdHJ5IHRvIHJlbW92ZSB0aGUgbm93IHJlZHVuZGFudCB0ZW1wb3JhcnkgbGluayAqLwotIAkJCQkJCWlmICh1bmxpbmsobmFtMi5idWYpKQotLQkJCQkJCQl3YXJuKF8oImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOwotKwkJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7Ci0gCQkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0gCQkJCQkJY29udGludWU7Ci0gCQkJCQl9Ci1AQCAtMzUxLDE2ICszNTMsMTYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGluawotIAkJCQkJLyogV2UgYWN0dWFsbHkgZGlkIG5vdCBzYXZlIGFueXRoaW5nIHRoaXMgdGltZSwgc2luY2UgdGhlIGxpbmsgc2Vjb25kIGFyZ3VtZW50Ci0gCQkJCQkgICBoYWQgc29tZSBvdGhlciBsaW5rcyBhcyB3ZWxsLiAgKi8KLSAJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotLQkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXNcbiIpLAotLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCXByaW50ZigoIiAlcyAlcyB0byAlc1xuIiksCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIldvdWxkIGxpbmsiKSA6ICgiTGlua2VkIikpLAotIAkJCQkJCQluMSwgbjIpOwotIAkJCQl9IGVsc2UgewotIAkJCQkJY3RsLT5uc2F2ZWQgKz0gKChzdC5zdF9zaXplICsgNDA5NSkgLyA0MDk2KSAqIDQwOTY7Ci0gCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKLS0JCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAotLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCXByaW50ZigoIiAlcyAlcyB0byAlcywgJXMgJWpkXG4iKSwKLSsJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgiV291bGQgbGluayIpIDogKCJMaW5rZWQiKSksCi0gCQkJCQkJCW4xLCBuMiwKLS0JCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIndvdWxkIHNhdmUiKSA6IF8oInNhdmVkIikpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJ3b3VsZCBzYXZlIikgOiAoInNhdmVkIikpLAotIAkJCQkJCQkoaW50bWF4X3Qpc3Quc3Rfc2l6ZSk7Ci0gCQkJCX0KLSAJCQkJY2xvc2UoZmQpOwotQEAgLTQxMCwxMSArNDEyLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJeyBOVUxMLCAwLCBOVUxMLCAwIH0sCi0gCX07Ci0gCi0tCXNldGxvY2FsZShMQ19BTEwsICIiKTsKLS0JYmluZHRleHRkb21haW4oUEFDS0FHRSwgTE9DQUxFRElSKTsKLS0JdGV4dGRvbWFpbihQQUNLQUdFKTsKLS0JY2xvc2Vfc3Rkb3V0X2F0ZXhpdCgpOwotLQotIAl3aGlsZSAoKGNoID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImNudmZ4OlZoIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSkgewotIAkJc3dpdGNoIChjaCkgewotIAkJY2FzZSAnbic6Ci1AQCAtNDM0LDcgKzQzMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlleGNsdWRlX3BhdHRlcm4gPSAoUENSRTJfU1BUUikgb3B0YXJnOwotICNlbHNlCi0gCQkJZXJyeChFWElUX0ZBSUxVUkUsCi0tCQkJICAgICBfKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOwotKwkJCSAgICAgKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOwotICNlbmRpZgotIAkJCWJyZWFrOwotIAkJY2FzZSAnVic6Ci1AQCAtNDQ3LDcgKzQ0NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJfQotIAotIAlpZiAob3B0aW5kID09IGFyZ2MpIHsKLS0JCXdhcm54KF8oIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7Ci0rCQl3YXJueCgoIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7Ci0gCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7Ci0gCX0KLSAKLUBAIC00NjEsNyArNDU4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCVBDUkUyX1VDSEFSIGJ1ZmZlclsyNTZdOwotIAkJCXBjcmUyX2dldF9lcnJvcl9tZXNzYWdlKGVycm9ybnVtYmVyLCBidWZmZXIsCi0gCQkJCQkJc2l6ZW9mKGJ1ZmZlcikpOwotLQkJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKLSsJCQllcnJ4KEVYSVRfRkFJTFVSRSwgKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKLSAJCQkJKGludCllcnJvcm9mZnNldCwgYnVmZmVyKTsKLSAJCX0KLSAJCW1hdGNoX2RhdGEgPSBwY3JlMl9tYXRjaF9kYXRhX2NyZWF0ZV9mcm9tX3BhdHRlcm4ocmUsIE5VTEwpOwotQEAgLTUwNiw3ICs1MDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJICAgID49MCkgewotIAkJCQlpZiAoY3RsLT52ZXJib3NlKSB7Ci0gCQkJCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOwotLQkJCQkJcHJpbnRmKF8oIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7Ci0rCQkJCQlwcmludGYoKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOwotIAkJCQl9Ci0gCQkJCWNvbnRpbnVlOwotIAkJCX0KLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jLmgKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKLUBAIC0yNDAsNyArMjQwLDcgQEAgZXJybXNnKGNoYXIgZG9leGl0LCBpbnQgZXhjb2RlLCBjaGFyIGFkZAotIC8qIERvbid0IHVzZSBpbmxpbmUgZnVuY3Rpb24gdG8gYXZvaWQgJyNpbmNsdWRlICJubHMuaCInIGluIGMuaAotICAqLwotICNkZWZpbmUgZXJydHJ5aGVscChldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKLS0JZnByaW50ZihzdGRlcnIsIF8oIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCi0rCWZwcmludGYoc3RkZXJyLCAoIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCi0gCQkJcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOyBcCi0gCWV4aXQoZXZhbCk7IFwKLSB9KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2FkZDMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1yZXF1aXJlIGdsaWJjLmluYwotcmVxdWlyZSBnbGliYy12ZXJzaW9uLmluYwotCi1ERVBFTkRTICs9ICJncGVyZi1uYXRpdmUgYmlzb24tbmF0aXZlIG1ha2UtbmF0aXZlIgotCi1OQVRJVkVTREtGSVhFUyA/PSAiIgotTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIFwKLSIKLQotU1JDX1VSSSA9ICAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VkYnMuc2ggXAotICAgICAgICAgICBcCi0gICAgICAgICAgICR7TkFUSVZFU0RLRklYRVN9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggXAotICAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiIgotCi0jIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCi0KLUdMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKLQotR0xJQkNQSUUgPz89ICIiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXByb2ZpbGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXR1bmFibGVzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1iaW5kLW5vdyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2stcHJvdGVjdG9yPXN0cm9uZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2tndWFyZC1yYW5kb21pemF0aW9uIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3J5cHQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kZWZhdWx0LWxpbmsgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW5zY2QgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnU0VMRUNURURfT1BUSU1JWkFUSU9OJywgJy1PMCAtT2cnLCAnLS1kaXNhYmxlLXdlcnJvcicsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICR7R0xJQkNQSUV9IFwKLSAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKLQotZG9fcGF0Y2hfYXBwZW5kKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCi19Ci0KLWRvX2ZpeF9yZWFkbGliX2MgKCkgewotCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCi19Ci0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0jIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgotIyBjYWxscyBmb3Igbm93Ci0jIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKLSMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCi0gICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCi0gICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCi0gICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0JIyAtV2wsLXJwYXRoLWxpbmsgPHN0YWdpbmc+L2xpYiBpbiBMREZMQUdTIGNhbiBjYXVzZSBicmVha2FnZSBpZiBhbm90aGVyIGdsaWJjIGlzIGluIHN0YWdpbmcKLQlMREZMQUdTPSItZnVzZS1sZD1iZmQiCi0JYmFzZV9kb19jb21waWxlCi0JZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCi0JaWYgWyAtbiAiJHtSVExETElTVH0iIF0KLQl0aGVuCi0JCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKLQkJIyByZW1vdmUgZHVwbGljYXRlIGVudHJpZXMKLQkJbmV3cnRsZD1gZWNobyAkKHByaW50ZiAnJXNcbicgJHtwcmV2cnRsZH0gJHtSVExETElTVH0gfCBMQ19BTEw9QyBzb3J0IC11KWAKLQkJZWNobyAibGRkIFwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiAtPiBcIiR7bmV3cnRsZH1cIiIKLQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7bmV3cnRsZH1cIiMiCi0JZmkKLX0KLQotcmVxdWlyZSBnbGliYy1wYWNrYWdlLmluYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjA1ZmQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMxLmJiCkBAIC0wLDAgKzEsMTEzIEBACityZXF1aXJlIGdsaWJjLmluYworcmVxdWlyZSBnbGliYy12ZXJzaW9uLmluYworCitERVBFTkRTICs9ICJncGVyZi1uYXRpdmUgYmlzb24tbmF0aXZlIG1ha2UtbmF0aXZlIgorCitOQVRJVkVTREtGSVhFUyA/PSAiIgorTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIFwKKyIKKworU1JDX1VSSSA9ICAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VkYnMuc2ggXAorICAgICAgICAgICBcCisgICAgICAgICAgICR7TkFUSVZFU0RLRklYRVN9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC0xMDAyOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLUltcHJvdmUtSUZVTkMtY2hlY2stQlotMjU1MDYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1GaXgtYnVpbGQtd2l0aC1HQ0MtMTAtd2hlbi1sb25nLWRvdWJsZS1kb3VibGUucGF0Y2ggXAorICAgICAgICAgICAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiIgorCisjIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCisKK0dMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKKworR0xJQkNQSUUgPz89ICIiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXByb2ZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXR1bmFibGVzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1iaW5kLW5vdyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2stcHJvdGVjdG9yPXN0cm9uZyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2tndWFyZC1yYW5kb21pemF0aW9uIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3J5cHQgXAorICAgICAgICAgICAgICAgIC0td2l0aC1kZWZhdWx0LWxpbmsgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW5zY2QgXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnU0VMRUNURURfT1BUSU1JWkFUSU9OJywgJy1PMCAtT2cnLCAnLS1kaXNhYmxlLXdlcnJvcicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICR7R0xJQkNQSUV9IFwKKyAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCisKK0VYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKKworZG9fcGF0Y2hfYXBwZW5kKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCit9CisKK2RvX2ZpeF9yZWFkbGliX2MgKCkgeworCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCit9CisKK2RvX2NvbmZpZ3VyZSAoKSB7CisjIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgorIyBjYWxscyBmb3Igbm93CisjIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKKyMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCisgICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCisgICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCisgICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKK30KKworTERGTEFHUyArPSAiLWZ1c2UtbGQ9YmZkIgorZG9fY29tcGlsZSAoKSB7CisJYmFzZV9kb19jb21waWxlCisJZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCisJaWYgWyAtbiAiJHtSVExETElTVH0iIF0KKwl0aGVuCisJCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKKwkJIyByZW1vdmUgZHVwbGljYXRlIGVudHJpZXMKKwkJbmV3cnRsZD1gZWNobyAkKHByaW50ZiAnJXNcbicgJHtwcmV2cnRsZH0gJHtSVExETElTVH0gfCBMQ19BTEw9QyBzb3J0IC11KWAKKwkJZWNobyAibGRkIFwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiAtPiBcIiR7bmV3cnRsZH1cIiIKKwkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7bmV3cnRsZH1cIiMiCisJZmkKK30KKworcmVxdWlyZSBnbGliYy1wYWNrYWdlLmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvMDAwMS1NYWtlZmlsZS1kby1ub3QtdXNlLWRwa2ctZm9yLWRldGVybWluaW5nLU9TLXR5cGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZG8tbm90LXVzZS1kcGtnLWZvci1kZXRlcm1pbmluZy1PUy10eXBlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YzhkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZG8tbm90LXVzZS1kcGtnLWZvci1kZXRlcm1pbmluZy1PUy10eXBlLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Zyb20gN2FjZTA2NTZiZDMyNWY5ZTc3NDlmMmNkZTY0MWVkZGMwNTdiYzk4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA5IEphbiAyMDIwIDE1OjM4OjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBkbyBub3QgdXNlIGRwa2cgZm9yIGRldGVybWluaW5nIE9TIHR5cGUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDBjZTJmYTMuLjczOWFlZjIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xLDYgKzEsNiBAQAorIFZFUlNJT04gPz0gMC44CisgQ0ZMQUdTID89IC1XYWxsIC1XIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtZyAtTzIKKy1BUkNIIDo9ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9BUkNIX09TKQorK0FSQ0ggOj0gbGludXgKKyAKKyBCQVNFRElSID89ICQoREVTVERJUikKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMGQ1MWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MDMgKzAsMCBAQAotRnJvbSA2ZmNlOTljOWU0MmNiYWNkZTE4NTU0NzNiNzQ1Y2ExZmRlZDNmYmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMjEgRGVjIDIwMTYgMTU6MzI6MDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGluZXRbNl0uZGVmbjogZml4IGludmVydGVkIGNoZWNrcyBmb3IgbG9vcGJhY2sKLQotQ29tcGFyZWQgdG8gdGhlIGh1cmQgbGluay5kZWZuIGZvciBsb29wYmFjaywgd2Ugc2VlIHRoZXNlCi1hcmUgaW52ZXJ0ZWQsIG1lYW5pbmcgdGhhdCB5b3Ugd291bGQgb25seSBiZSBhYmxlIHRvIGNvbmZpZ3VyZQotYSBsb29wYmFjayBkZXZpY2UgdGhhdCB3YXMgX25vdF8gbmFtZWQgImxvIiAodW5saWtlbHkgdG8gZXhpc3QpLgotCi1UaGUgcmVzdWx0IHdhcyB0aGF0IHdlJ2QgdXBkYXRlIC9ydW4vbmV0d29yay9pZnN0YXRlIGZvciAibG8iCi1idXQgbmV2ZXIgYWN0dWFsbHkgZG8gYW55dGhpbmcgZm9yIHVwL2Rvd24sIGFzIHNob3duIGJlbG93OgotCi1yb290QGxvY2FsaG9zdDp+IyBpZmNvbmZpZyAtcwotSWZhY2UgICBNVFUgTWV0ICAgUlgtT0sgUlgtRVJSIFJYLURSUCBSWC1PVlIgIFRYLU9LIFRYLUVSUiBUWC1EUlAgVFgtT1ZSIEZsZwotZXRoMCAgICAgICAxNTAwIDAgICA3NzM2MzI5ICAgICAgMCAgIDIwMTYgMCA1Mjg5NDIyICAgICAgMCAgICAgIDAgICAgICAwIEJNUlUKLWxvICAgICAgICA2NTUzNiAwICAgICAgICAxOCAgICAgIDAgICAgICAwIDAgICAgICAxOCAgICAgIDAgICAgICAwICAgICAgMCBMUlUKLXJvb3RAbG9jYWxob3N0On4jIGlmZG93biBsbwotcm9vdEBsb2NhbGhvc3Q6fiMgZWNobyAkPwotMAotcm9vdEBsb2NhbGhvc3Q6fiMgaWZjb25maWcgLXMKLUlmYWNlICAgTVRVIE1ldCAgIFJYLU9LIFJYLUVSUiBSWC1EUlAgIFJYLU9WUiAgICBUWC1PSyBUWC1FUlIgVFgtRFJQIFRYLU9WUiBGbGcKLWV0aDAgICAgICAgMTUwMCAwICAgNzczNjQwNiAgICAgIDAgIDIwMTYgMCAgIDUyODk0NTUgICAgICAwICAgICAgMCAgICAgIDAgQk1SVQotbG8gICAgICAgIDY1NTM2IDAgICAgICAgIDE4ICAgICAgMCAgIDAgMCAgICAgICAgICAgIDE4ICAgIDAgICAgMCAgICAwICAgICBMUlUKLXJvb3RAbG9jYWxob3N0On4jIGlmY29uZmlnIGxvIGRvd24KLXJvb3RAbG9jYWxob3N0On4jIGlmY29uZmlnIC1zCi1JZmFjZSAgIE1UVSBNZXQgICBSWC1PSyBSWC1FUlIgUlgtRFJQIFJYLU9WUiAgICBUWC1PSyBUWC1FUlIgVFgtRFJQIFRYLU9WUiBGbGcKLWV0aDAgICAgICAgMTUwMCAwICAgNzczNjQ3NCAwICAgMjAxNiAwICAgICAgIDUyODk0ODEgICAgICAwICAgICAwICAgICAgMCBCTVJVCi1yb290QGxvY2FsaG9zdDp+IwotCi1BbHNvIHJldmVydGVkIHRoZSBjb21taXQ6Ci1jb21taXQgODBiODc4NDk3NjYzZGFlMDhmNzBiNGQzY2ZmZTEyN2I1N2EzY2ZjCi13aGljaCB1c2VzIGFic29sdXRlIHBhdGhzIHRvIGJpbmFyaWVzIGNhbGxlZCBieSBpZnVwL2lmZG93bi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGluZXQuZGVmbiB8IDEzNCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmV0LmRlZm4gYi9pbmV0LmRlZm4KLWluZGV4IDE4MmI1NmIuLjMxMDY3YmMgMTAwNjQ0Ci0tLS0gYS9pbmV0LmRlZm4KLSsrKyBiL2luZXQuZGVmbgotQEAgLTYsMTAgKzYsMTAgQEAgbWV0aG9kIGxvb3BiYWNrCi0gICAgIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGRlZmluZSB0aGUgSVB2NCBsb29wYmFjayBpbnRlcmZhY2UuCi0gCi0gICB1cAotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIGlmICghaWZhY2VfaXNfbG8oKSkKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgdXAgaWYgKCFpZmFjZV9pc19sbygpKQotIAotICAgZG93bgotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gaWYgKCFpZmFjZV9pc19sbygpKQotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIGlmICghaWZhY2VfaXNfbG8oKSkKLSAKLSBtZXRob2Qgc3RhdGljCi0gICBkZXNjcmlwdGlvbgotQEAgLTM2LDE3ICszNiwxNyBAQCBtZXRob2Qgc3RhdGljCi0gICAgIGJyb2FkY2FzdCBjb21wdXRlX3Y0X2Jyb2FkY2FzdAotIAotICAgdXAKLS0gICAgL2Jpbi9pcCBhZGRyIGFkZCAlYWRkcmVzcyVbWy8lbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSsgICAgaXAgYWRkciBhZGQgJWFkZHJlc3MlW1svJW5ldG1hc2slXV0gW1ticm9hZGNhc3QgJWJyb2FkY2FzdCVdXSBcCi0gCVtbcGVlciAlcG9pbnRvcG9pbnQlXV0gW1tzY29wZSAlc2NvcGUlXV0gZGV2ICVpZmFjZSUgbGFiZWwgJWlmYWNlJQotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIFtbbXR1ICVtdHUlXV0gW1thZGRyZXNzICVod2FkZHJlc3MlXV0gdXAKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgW1ttdHUgJW10dSVdXSBbW2FkZHJlc3MgJWh3YWRkcmVzcyVdXSB1cAotIAotLSAgICBbWyAvYmluL2lwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSBvbmxpbmsgXV0KLSsgICAgW1sgaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIG9ubGluayBdXQotIAotICAgZG93bgotLSAgICBbWyAvYmluL2lwIHJvdXRlIGRlbCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSAyPiYxIDE+L2Rldi9udWxsIHx8IHRydWUgXV0KLS0gICAgL2Jpbi9pcCBhZGRyIGRlbCAlYWRkcmVzcyVbWy8lbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSsgICAgW1sgaXAgcm91dGUgZGVsIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIDI+JjEgMT4vZGV2L251bGwgfHwgdHJ1ZSBdXQotKyAgICBpcCBhZGRyIGRlbCAlYWRkcmVzcyVbWy8lbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSAJW1twZWVyICVwb2ludG9wb2ludCVdXSBbW3Njb3BlICVzY29wZSVdXSBkZXYgJWlmYWNlJSBsYWJlbCAlaWZhY2UlCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotIAkJaWYgKGlmYWNlX2lzX2xpbmsoKSkKLSAKLSBtZXRob2QgbWFudWFsCi1AQCAtNjMsMTIgKzYzLDEyIEBAIG1ldGhvZCBtYW51YWwKLSAgICAgaHdhZGRyZXNzIGNsZWFudXBfaHdhZGRyZXNzCi0gCi0gICB1cAotLSAgICBbWy9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgbXR1ICVtdHUlXV0KLS0gICAgW1svYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGFkZHJlc3MgJWh3YWRkcmVzcyVdXQotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIDI+L2Rldi9udWxsIHx8IHRydWUKLSsgICAgW1tpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBtdHUgJW10dSVdXQotKyAgICBbW2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGFkZHJlc3MgJWh3YWRkcmVzcyVdXQotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSB1cCAyPi9kZXYvbnVsbCB8fCB0cnVlCi0gCi0gICBkb3duCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biAyPi9kZXYvbnVsbCB8fCB0cnVlIFwKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biAyPi9kZXYvbnVsbCB8fCB0cnVlIFwKLSAgICAgICAgIGlmIChpZmFjZV9pc19saW5rKCkgJiYgIWRvX2FsbCkKLSAKLSBtZXRob2QgZGhjcAotQEAgLTkzLDMzICs5MywzMyBAQCBtZXRob2QgZGhjcAotICAgICBod2FkZHJlc3MgY2xlYW51cF9od2FkZHJlc3MKLSAKLSAgIHVwCi0tICAgIFtbL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBhZGRyZXNzICVod2FkZHJlc3MlXV0KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotKyAgICBbW2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGFkZHJlc3MgJWh3YWRkcmVzcyVdXQotKyAgICBkaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gCVtbLWUgSUZfTUVUUklDPSVtZXRyaWMlXV0gXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotLSAgICAvc2Jpbi9wdW1wIC1pICVpZmFjZSUgW1staCAlaG9zdG5hbWUlXV0gW1stbCAlbGVhc2Vob3VycyVdXSBcCi0rICAgIHB1bXAgLWkgJWlmYWNlJSBbWy1oICVob3N0bmFtZSVdXSBbWy1sICVsZWFzZWhvdXJzJV1dIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vcHVtcCIpKQotLSAgICAvc2Jpbi91ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQgLWkgJWlmYWNlJSBbWy14IGhvc3RuYW1lOiVob3N0bmFtZSVdXSBcCi0rICAgIHVkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCAtaSAlaWZhY2UlIFtbLXggaG9zdG5hbWU6JWhvc3RuYW1lJV1dIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSsgICAgZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotICAgICAgICAgICAgW1stbCAlbGVhc2V0aW1lJV1dIFtbLW0gJW1ldHJpYyVdXSAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotKyAgICBkaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0tICAgIC9zYmluL3B1bXAgLWkgJWlmYWNlJSAtciBcCi0rICAgIHB1bXAgLWkgJWlmYWNlJSAtciBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3B1bXAiKSkKLSAgICAgaWYgdGVzdCAtZiAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZDsgdGhlbiBraWxsIC1VU1IyICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQpOyBraWxsIC1URVJNICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQpOyBmaSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgLWsgJWlmYWNlJSBcCi0rICAgIGRoY3BjZCAtayAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIFwKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0gCQlpZiAoaWZhY2VfaXNfbGluaygpKQotIAotIG1ldGhvZCBib290cAotQEAgLTEzNCwxMSArMTM0LDExIEBAIG1ldGhvZCBib290cAotICAgICAgICAgICAgICAgICAgICAgICB3aGF0ZXZlciBpdCByZWFsbHkgaXMuCi0gCi0gICB1cAotLSAgICAvc2Jpbi9ib290cGMgW1stLWJvb3RmaWxlICVib290ZmlsZSVdXSAtLWRldiAlaWZhY2UlIFtbLS1zZXJ2ZXIgJXNlcnZlciVdXSBcCi0rICAgIGJvb3RwYyBbWy0tYm9vdGZpbGUgJWJvb3RmaWxlJV1dIC0tZGV2ICVpZmFjZSUgW1stLXNlcnZlciAlc2VydmVyJV1dIFwKLSAgICAgICAgICAgIFtbLS1od2FkZHIgJWh3YWRkciVdXSAtLXJldHVybmlmZmFpbCAtLXNlcnZlcmJjYXN0Ci0gCi0gICBkb3duCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotICAgICAgICAgaWYgKGlmYWNlX2lzX2xpbmsoKSkKLSAKLSBtZXRob2QgdHVubmVsCi1AQCAtMTU4LDEzICsxNTgsMTMgQEAgbWV0aG9kIHR1bm5lbAotICAgICB0dGwgdGltZSAgICAgICAgICAgICAgLS0gVFRMIHNldHRpbmcKLSAgICAgbXR1IHNpemUgICAgICAgICAgICAgIC0tIE1UVSBzaXplCi0gICB1cAotLSAgICAvYmluL2lwIHR1bm5lbCBhZGQgJWlmYWNlJSBtb2RlICVtb2RlJSByZW1vdGUgJWVuZHBvaW50JSBbW2xvY2FsICVsb2NhbCVdXSBcCi0rICAgIGlwIHR1bm5lbCBhZGQgJWlmYWNlJSBtb2RlICVtb2RlJSByZW1vdGUgJWVuZHBvaW50JSBbW2xvY2FsICVsb2NhbCVdXSBcCi0gICAgICAgIFtbdHRsICV0dGwlXV0KLS0gICAgL2Jpbi9pcCBsaW5rIHNldCAlaWZhY2UlIHVwIFtbbXR1ICVtdHUlXV0KLS0gICAgL2Jpbi9pcCBhZGRyIGFkZCAlYWRkcmVzcyUvJW5ldG1hc2slIGRldiAlaWZhY2UlIFtbcGVlciAlZHN0YWRkciVdXQotLSAgICBbWyAvYmluL2lwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSBvbmxpbmsgXV0KLSsgICAgaXAgbGluayBzZXQgJWlmYWNlJSB1cCBbW210dSAlbXR1JV1dCi0rICAgIGlwIGFkZHIgYWRkICVhZGRyZXNzJS8lbmV0bWFzayUgZGV2ICVpZmFjZSUgW1twZWVyICVkc3RhZGRyJV1dCi0rICAgIFtbIGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSBvbmxpbmsgXV0KLSAgIGRvd24KLS0gICAgL2Jpbi9pcCB0dW5uZWwgZGVsICVpZmFjZSUKLSsgICAgaXAgdHVubmVsIGRlbCAlaWZhY2UlCi0gCi0gbWV0aG9kIHBwcAotICAgZGVzY3JpcHRpb24KLUBAIC0xNzUsOSArMTc1LDkgQEAgbWV0aG9kIHBwcAotICAgICB1bml0IG51bWJlciAgICAtLSBVc2UgL251bWJlci8gYXMgdGhlIHBwcCB1bml0IG51bWJlci4KLSAgICAgb3B0aW9ucyBzdHJpbmcgLS0gUGFzcyAvc3RyaW5nLyBhcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gcG9uLgotICAgdXAKLS0gICAgL3Vzci9iaW4vcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0rICAgIHBvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotICAgZG93bgotLSAgICAvdXNyL2Jpbi9wb2ZmIFtbJXByb3ZpZGVyJV1dCi0rICAgIHBvZmYgW1slcHJvdmlkZXIlXV0KLSAKLSBtZXRob2Qgd3ZkaWFsCi0gICBkZXNjcmlwdGlvbgotQEAgLTE4NiwxMCArMTg2LDEwIEBAIG1ldGhvZCB3dmRpYWwKLSAgIG9wdGlvbnMKLSAgICAgcHJvdmlkZXIgbmFtZSAgLS0gVXNlIC9uYW1lLyBhcyB0aGUgcHJvdmlkZXIgKGZyb20gL2V0Yy93dmRpYWwuY29uZikuCi0gICB1cAotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlJS5waWQgLWIgLW0gLS0gW1sgJXByb3ZpZGVyJSBdXQotICAgZG93bgotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSsgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZSUucGlkIC1zIDIKLSAKLSAKLUBAIC0yMDAsOSArMjAwLDkgQEAgbWV0aG9kIGlwdjRsbAotICAgICBrbm93biBhcyBBUElQQSBvciBJUEFDLCBhbmQgb2Z0ZW4gY29sbG9xdWlhbGx5IHJlZmVycmVkIHRvCi0gICAgIGFzICJaZXJvY29uZiBhZGRyZXNzIi4KLSAgIHVwCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0gICBkb3duCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLSAKLSBhcmNoaXRlY3R1cmUga2ZyZWVic2QKLSAKLUBAIC0yMTEsMTEgKzIxMSwxMSBAQCBtZXRob2QgbG9vcGJhY2sKLSAgICAgVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gZGVmaW5lIHRoZSBJUHY0IGxvb3BiYWNrIGludGVyZmFjZS4KLSAKLSAgIHVwCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgMTI3LjAuMC4xIHVwIFwKLSsgICAgaWZjb25maWcgJWlmYWNlJSAxMjcuMC4wLjEgdXAgXAotIAlpZiAoIWlmYWNlX2lzX2xvKCkpCi0gCi0gICBkb3duCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgZG93biBcCi0rICAgIGlmY29uZmlnICVpZmFjZSUgZG93biBcCi0gCWlmICghaWZhY2VfaXNfbG8oKSkKLSAKLSBtZXRob2Qgc3RhdGljCi1AQCAtMjM4LDE1ICsyMzgsMTUgQEAgbWV0aG9kIHN0YXRpYwotICAgICBod2FkZHJlc3MgY2xlYW51cF9od2FkZHJlc3MKLSAKLSAgIHVwCi0tICAgIFtbIC9zYmluL2lmY29uZmlnICVpZmFjZSUgbGluayAlaHdhZGRyZXNzJV1dCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgJWFkZHJlc3MlIFtbbmV0bWFzayAlbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSsgICAgW1sgaWZjb25maWcgJWlmYWNlJSBsaW5rICVod2FkZHJlc3MlXV0KLSsgICAgaWZjb25maWcgJWlmYWNlJSAlYWRkcmVzcyUgW1tuZXRtYXNrICVuZXRtYXNrJV1dIFtbYnJvYWRjYXN0ICVicm9hZGNhc3QlXV0gXAotIAlbW3BvaW50b3BvaW50ICVwb2ludG9wb2ludCVdXSBbW21lZGlhICVtZWRpYSVdXSBbW210dSAlbXR1JV1dIFwKLSAJdXAKLS0gICAgW1sgL3NiaW4vcm91dGUgYWRkIGRlZmF1bHQgJWdhdGV3YXklIF1dCi0rICAgIFtbIHJvdXRlIGFkZCBkZWZhdWx0ICVnYXRld2F5JSBdXQotIAotICAgZG93bgotLSAgICBbWyAvc2Jpbi9yb3V0ZSBkZWwgZGVmYXVsdCAlZ2F0ZXdheSUgMj4mMSAxPi9kZXYvbnVsbCB8fCB0cnVlIF1dCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgZG93bgotKyAgICBbWyByb3V0ZSBkZWwgZGVmYXVsdCAlZ2F0ZXdheSUgMj4mMSAxPi9kZXYvbnVsbCB8fCB0cnVlIF1dCi0rICAgIGlmY29uZmlnICVpZmFjZSUgZG93bgotIAotIG1ldGhvZCBtYW51YWwKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMjc5LDMwICsyNzksMzAgQEAgbWV0aG9kIGRoY3AKLSAgICAgaHdhZGRyZXNzIGNsZWFudXBfaHdhZGRyZXNzCi0gCi0gICB1cAotLSAgICBbWy9zYmluL2lmY29uZmlnICVpZmFjZSUgbGluayAlaHdhZGRyZXNzJV1dCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgW1tpZmNvbmZpZyAlaWZhY2UlIGxpbmsgJWh3YWRkcmVzcyVdXQotKyAgICBkaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gCVtbLWUgSUZfTUVUUklDPSVtZXRyaWMlXV0gXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotLSAgICAvc2Jpbi91ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQgLWkgJWlmYWNlJSBbWy1IICVob3N0bmFtZSVdXSBcCi0rICAgIHVkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCAtaSAlaWZhY2UlIFtbLUggJWhvc3RuYW1lJV1dIFwKLSAgICAgICAgICAgIFtbLWMgJWNsaWVudCVdXSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgW1staCAlaG9zdG5hbWUlXV0gW1staSAldmVuZG9yJV1dIFtbLUkgJWNsaWVudCVdXSBcCi0rICAgIGRoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSAgICAgICAgICAgIFtbLWwgJWxlYXNldGltZSVdXSAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotKyAgICBkaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0gICAgIGlmIHRlc3QgLWYgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQ7IHRoZW4ga2lsbCAtVVNSMiAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkKTsga2lsbCAtVEVSTSAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkKTsgZmkgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi91ZGhjcGMiKSkKLS0gICAgL3NiaW4vZGhjcGNkIC1rICVpZmFjZSUgXAotKyAgICBkaGNwY2QgLWsgJWlmYWNlJSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL2RoY3BjZCIpKQotICAgICBlY2hvICdObyBESENQIGNsaWVudCBzb2Z0d2FyZSBmb3VuZCEnID4vZGV2L3N0ZGVycjsgZmFsc2UgXAotICAgICAgICAgZWxzaWYgKDEpCi0gCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgZG93bgotKyAgICBpZmNvbmZpZyAlaWZhY2UlIGRvd24KLSAKLSBtZXRob2QgYm9vdHAKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMzE2LDExICszMTYsMTEgQEAgbWV0aG9kIGJvb3RwCi0gICAgICAgICAgICAgICAgICAgICAgIHdoYXRldmVyIGl0IHJlYWxseSBpcy4KLSAKLSAgIHVwCi0tICAgIC9zYmluL2Jvb3RwYyBbWy0tYm9vdGZpbGUgJWJvb3RmaWxlJV1dIC0tZGV2ICVpZmFjZSUgW1stLXNlcnZlciAlc2VydmVyJV1dIFwKLSsgICAgYm9vdHBjIFtbLS1ib290ZmlsZSAlYm9vdGZpbGUlXV0gLS1kZXYgJWlmYWNlJSBbWy0tc2VydmVyICVzZXJ2ZXIlXV0gXAotICAgICAgICAgICAgW1stLWh3YWRkciAlaHdhZGRyJV1dIC0tcmV0dXJuaWZmYWlsIC0tc2VydmVyYmNhc3QKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSBkb3duCi0rICAgIGlmY29uZmlnICVpZmFjZSUgZG93bgotIAotIG1ldGhvZCBwcHAKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMzMxLDkgKzMzMSw5IEBAIG1ldGhvZCBwcHAKLSAgICAgdW5pdCBudW1iZXIgICAgLS0gVXNlIC9udW1iZXIvIGFzIHRoZSBwcHAgdW5pdCBudW1iZXIuCi0gICAgIG9wdGlvbnMgc3RyaW5nIC0tIFBhc3MgL3N0cmluZy8gYXMgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBvbi4KLSAgIHVwCi0tICAgIC91c3IvYmluL3BvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotKyAgICBwb24gW1slcHJvdmlkZXIlXV0gW1t1bml0ICV1bml0JV1dIFtbJW9wdGlvbnMlXV0KLSAgIGRvd24KLS0gICAgL3Vzci9iaW4vcG9mZiBbWyVwcm92aWRlciVdXQotKyAgICBwb2ZmIFtbJXByb3ZpZGVyJV1dCi0gCi0gbWV0aG9kIHd2ZGlhbAotICAgZGVzY3JpcHRpb24KLUBAIC0zNDIsMTAgKzM0MiwxMCBAQCBtZXRob2Qgd3ZkaWFsCi0gICBvcHRpb25zCi0gICAgIHByb3ZpZGVyIG5hbWUgIC0tIFVzZSAvbmFtZS8gYXMgdGhlIHByb3ZpZGVyIChmcm9tIC9ldGMvd3ZkaWFsLmNvbmYpLgotICAgdXAKLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAvdXNyL2Jpbi93dmRpYWwgXAotKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZSUucGlkIC1iIC1tIC0tIFtbICVwcm92aWRlciUgXV0KLSAgIGRvd24KLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UlLnBpZCAtcyAyCi0gCi0gCi1AQCAtMzU2LDkgKzM1Niw5IEBAIG1ldGhvZCBpcHY0bGwKLSAgICAga25vd24gYXMgQVBJUEEgb3IgSVBBQywgYW5kIG9mdGVuIGNvbGxvcXVpYWxseSByZWZlcnJlZCB0bwotICAgICBhcyAiWmVyb2NvbmYgYWRkcmVzcyIuCi0gICB1cAotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotICAgZG93bgotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0gYXJjaGl0ZWN0dXJlIGh1cmQKLSAKLSBtZXRob2QgbG9vcGJhY2sKLUBAIC00MzIsMjMgKzQzMiwyMyBAQCBtZXRob2QgZGhjcAotIAotICAgdXAKLSAgICAgW1tXYXJuaW5nOiBPcHRpb24gaHdhZGRyZXNzOiAlaHdhZGRyZXNzJSBub3QgeWV0IHN1cHBvcnRlZF1dCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZS8vLy4lLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UvLy8uJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZS8vLy4lLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlLy8vLiUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZS8vLy4lLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlLy8vLiUubGVhc2VzICVpZmFjZSUgXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotLSAgICAvc2Jpbi91ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlLy8vLiUucGlkIC1pICVpZmFjZSUgW1stSCAlaG9zdG5hbWUlXV0gXAotKyAgICB1ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlLy8vLiUucGlkIC1pICVpZmFjZSUgW1stSCAlaG9zdG5hbWUlXV0gXAotICAgICAgICAgICAgW1stYyAlY2xpZW50JV1dIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSsgICAgZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotICAgICAgICAgICAgW1stbCAlbGVhc2V0aW1lJV1dICVpZmFjZSUgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNwY2QiKSkKLSAgICAgZWNobyAnTm8gREhDUCBjbGllbnQgc29mdHdhcmUgZm91bmQhJyA+L2Rldi9zdGRlcnI7IGZhbHNlIFwKLSAgICAgICAgIGVsc2lmICgxKQotIAotICAgZG93bgotLSAgICAvc2Jpbi9kaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UvLy8uJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlLy8vLiUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UvLy8uJS5sZWFzZXMgJWlmYWNlJSBcCi0rICAgIGRoY2xpZW50IC00IC12IC1yIC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZS8vLy4lLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UvLy8uJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZS8vLy4lLmxlYXNlcyAlaWZhY2UlIFwKLSAgICAgICAgIGlmIChleGVjYWJsZSgiL3NiaW4vZGhjbGllbnQiKSkKLSAgICAgaWYgdGVzdCAtZiAvcnVuL3VkaGNwYy4laWZhY2UvLy8uJS5waWQ7IHRoZW4ga2lsbCAtVVNSMiAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZS8vLy4lLnBpZCk7IGtpbGwgLVRFUk0gJCgvYmluL2NhdCAvcnVuL3VkaGNwYy4laWZhY2UvLy8uJS5waWQpOyBmaSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgLWsgJWlmYWNlJSBcCi0rICAgIGRoY3BjZCAtayAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLUBAIC00ODIsOSArNDgyLDkgQEAgbWV0aG9kIHBwcAotICAgICB1bml0IG51bWJlciAgICAtLSBVc2UgL251bWJlci8gYXMgdGhlIHBwcCB1bml0IG51bWJlci4KLSAgICAgb3B0aW9ucyBzdHJpbmcgLS0gUGFzcyAvc3RyaW5nLyBhcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gcG9uLgotICAgdXAKLS0gICAgL3Vzci9iaW4vcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0rICAgIHBvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotICAgZG93bgotLSAgICAvdXNyL2Jpbi9wb2ZmIFtbJXByb3ZpZGVyJV1dCi0rICAgIHBvZmYgW1slcHJvdmlkZXIlXV0KLSAKLSBtZXRob2Qgd3ZkaWFsCi0gICBkZXNjcmlwdGlvbgotQEAgLTQ5MywxMCArNDkzLDEwIEBAIG1ldGhvZCB3dmRpYWwKLSAgIG9wdGlvbnMKLSAgICAgcHJvdmlkZXIgbmFtZSAgLS0gVXNlIC9uYW1lLyBhcyB0aGUgcHJvdmlkZXIgKGZyb20gL2V0Yy93dmRpYWwuY29uZikuCi0gICB1cAotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlLy8vLiUucGlkIC1iIC1tIC0tIFtbICVwcm92aWRlciUgXV0KLSAgIGRvd24KLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UvLy8uJS5waWQgLXMgMgotIAotIAotQEAgLTUwNyw2ICs1MDcsNiBAQCBtZXRob2QgaXB2NGxsCi0gICAgIGtub3duIGFzIEFQSVBBIG9yIElQQUMsIGFuZCBvZnRlbiBjb2xsb3F1aWFsbHkgcmVmZXJyZWQgdG8KLSAgICAgYXMgIlplcm9jb25mIGFkZHJlc3MiLgotICAgdXAKLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSAgIGRvd24KLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njk0MDQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSw0IEBACisjIS9iaW4vc2gKKworQ1VSRElSPSQoZGlybmFtZSBgcmVhZGxpbmsgLWYgJDBgKQorY2QgJENVUkRJUi90ZXN0cyAmJiAuL3Rlc3RidWlsZC1saW51eApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy90d2Vhay1wdGVzdC1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3R3ZWFrLXB0ZXN0LXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzYwMGNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy90d2Vhay1wdGVzdC1zY3JpcHQucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorVHdlYWsgdGVzdHMgb2YgaWZ1cGRvd24gdG8gbWFrZSBpdCB3b3JrIHdpdGggb2UtY29yZSBwdGVzdCBmcmFtZXdvcmsuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0YnVpbGQtbGludXggYi90ZXN0cy90ZXN0YnVpbGQtbGludXgKK2luZGV4IDExODFlYTAuLmQ1YzE4MTQgMTAwNzU1CistLS0gYS90ZXN0cy90ZXN0YnVpbGQtbGludXgKKysrKyBiL3Rlc3RzL3Rlc3RidWlsZC1saW51eAorQEAgLTEsNiArMSw3IEBACisgIyEvYmluL3NoIC1lCisgCistZGlyPXRlc3RzL2xpbnV4CisrY3VyZGlyPSQoZGlybmFtZSBgcmVhZGxpbmsgLWYgJDBgKQorK2Rpcj0kY3VyZGlyL2xpbnV4CisgCisgcmVzdWx0PXRydWUKKyBmb3IgdGVzdCBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxODsgZG8KK0BAIC0xMiw3ICsxMyw3IEBAIGZvciB0ZXN0IGluIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4OyBkbworICAgICAgICAgZWNobyAiVGVzdGNhc2UgJHRlc3Q6ICRhcmdzIgorIAorIAlleGl0Y29kZT0wCistICAgICAgICAuL2lmdXAgLXYgLS1uby1hY3QtY29tbWFuZHMgLS1mb3JjZSAtaSAkZGlyL3Rlc3RjYXNlLiR0ZXN0IC0tc3RhdGUtZGlyPSRkaXIvc3RhdGUuJHRlc3QgJGFyZ3MgXAorKyAgICAgICAgaWZ1cCAtdiAtLW5vLWFjdC1jb21tYW5kcyAtLWZvcmNlIC1pICRkaXIvdGVzdGNhc2UuJHRlc3QgLS1zdGF0ZS1kaXI9JGRpci9zdGF0ZS4kdGVzdCAkYXJncyBcCisgICAgICAgICAgICAgICAgID4kZGlyL3VwLXJlcy1vdXQuJHRlc3QgMj4kZGlyL3VwLXJlcy1lcnIuJHRlc3QgfHwgZXhpdGNvZGU9JD8KKyAKKyAgICAgICAgIChlY2hvICJleGl0IGNvZGU6ICRleGl0Y29kZSI7CitAQCAtMjAsNyArMjEsNyBAQCBmb3IgdGVzdCBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxODsgZG8KKyAgICAgICAgICBlY2hvICI9PT09c3RkZXJyPT09PSI7IGNhdCAkZGlyL3VwLXJlcy1lcnIuJHRlc3QpID4gJGRpci91cC1yZXMuJHRlc3QKKyAKKyAJZXhpdGNvZGU9MAorLSAgICAgICAgLi9pZmRvd24gLXYgLS1uby1hY3QtY29tbWFuZHMgLS1mb3JjZSAtaSAkZGlyL3Rlc3RjYXNlLiR0ZXN0IC0tc3RhdGUtZGlyPSRkaXIvc3RhdGUuJHRlc3QgJGFyZ3MgXAorKyAgICAgICAgaWZkb3duIC12IC0tbm8tYWN0LWNvbW1hbmRzIC0tZm9yY2UgLWkgJGRpci90ZXN0Y2FzZS4kdGVzdCAtLXN0YXRlLWRpcj0kZGlyL3N0YXRlLiR0ZXN0ICRhcmdzIFwKKyAgICAgICAgICAgICAgICA+JGRpci9kb3duLXJlcy1vdXQuJHRlc3QgMj4kZGlyL2Rvd24tcmVzLWVyci4kdGVzdCB8fCBleGl0Y29kZT0kPworIAorICAgICAgICAgKGVjaG8gImV4aXQgY29kZTogJGV4aXRjb2RlIjsKK0BAIC0yOCw5ICsyOSw5IEBAIGZvciB0ZXN0IGluIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4OyBkbworICAgICAgICAgIGVjaG8gIj09PT1zdGRlcnI9PT09IjsgY2F0ICRkaXIvZG93bi1yZXMtZXJyLiR0ZXN0KSA+ICRkaXIvZG93bi1yZXMuJHRlc3QKKyAKKyAgICAgICAgIGlmIGRpZmYgLXViICRkaXIvdXAuJHRlc3QgJGRpci91cC1yZXMuJHRlc3QgJiYgZGlmZiAtdWIgJGRpci9kb3duLiR0ZXN0ICRkaXIvZG93bi1yZXMuJHRlc3Q7IHRoZW4KKy0gICAgICAgICAgICAgICAgZWNobyAiKG9rYXkpIgorKyAgICAgICAgICAgICAgICBlY2hvICJQQVNTOiAkdGVzdCIKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgZWNobyAiKGZhaWxlZCkiCisrICAgICAgICAgICAgICAgIGVjaG8gIkZBSUw6ICR0ZXN0IgorICAgICAgICAgICAgICAgICByZXN1bHQ9ZmFsc2UKKyAgICAgICAgIGZpCisgICAgICAgICBlY2hvICI9PT09PT09PT09IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQwOTg5ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiaWZ1cGRvd246IGJhc2ljIGlmdXAgYW5kIGlmZG93biB1c2VkIGJ5IGluaXRzY3JpcHRzIgotREVTQ1JJUFRJT04gPSAiSGlnaCBsZXZlbCB0b29scyB0byBjb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2VzIFwKLVRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgdG9vbHMgaWZ1cCBhbmQgaWZkb3duIHdoaWNoIG1heSBiZSB1c2VkIHRvIFwKLWNvbmZpZ3VyZSAob3IsIHJlc3BlY3RpdmVseSwgZGVjb25maWd1cmUpIG5ldHdvcmsgaW50ZXJmYWNlcywgYmFzZWQgb24gXAotdGhlIGZpbGUgL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMuIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2lmdXBkb3duLmdpdDtwcm90b2NvbD1odHRwcyBcCi0JICAgZmlsZTovL2RlZm4yLWMtbWFuLWRvbi10LXJlbHktb24tZHBrZy1hcmNoaXRlY3R1cmUtdG8tc2V0LWEucGF0Y2ggXAotCSAgIGZpbGU6Ly9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2ggXAotCSAgIGZpbGU6Ly85OV9uZXR3b3JrIFwKLQkgICBmaWxlOi8vMDAwMS1EZWZpbmUtRk5NX0VYVE1BVENILWZvci1tdXNsLnBhdGNoIFwKLQkgICIKLVNSQ1JFViA9ICJhYjVhMGY0NjRlNTNlMTcyMzE2YTVjYThiNWRjZGM0OWU4ODQ4OTk5IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19jb21waWxlICgpIHsKLQljaG1vZCBhK3J4ICoucGwgKi5zaAotCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9JyAiQ0ZMQUdTPSR7Q0ZMQUdTfSAtV2FsbCAtVyAtRCdJRlVQRE9XTl9WRVJTSU9OPVwiJHtQVn1cIiciCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKLQkJICAke0R9JHttYW5kaXJ9L21hbjUgXAotCQkgICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQotCSMgSWYgdm9sYXRpbGVzIGFyZSB1c2VkLCB0aGVuIHdlJ2xsIGFsc28gbmVlZCAvcnVuL25ldHdvcmsgdGhlcmUgdG9vLgotCWluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9uZXR3b3JrICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCi0KLQlpbnN0YWxsIC1tIDA3NTUgaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9LwotCWxuICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9L2lmZG93bgotCWluc3RhbGwgLW0gMDY0NCBpZnVwLjggJHtEfSR7bWFuZGlyfS9tYW44Ci0JaW5zdGFsbCAtbSAwNjQ0IGludGVyZmFjZXMuNSAke0R9JHttYW5kaXJ9L21hbjUKLQljZCAke0R9JHttYW5kaXJ9L21hbjggJiYgbG4gLXMgaWZ1cC44IGlmZG93bi44Ci19Ci0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImlmdXAgaWZkb3duIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaWZ1cF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lmdXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaWZkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaWZkb3duIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMzUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2NiOTcxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMzUuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJpZnVwZG93bjogYmFzaWMgaWZ1cCBhbmQgaWZkb3duIHVzZWQgYnkgaW5pdHNjcmlwdHMiCitERVNDUklQVElPTiA9ICJIaWdoIGxldmVsIHRvb2xzIHRvIGNvbmZpZ3VyZSBuZXR3b3JrIGludGVyZmFjZXMgXAorVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB0b29scyBpZnVwIGFuZCBpZmRvd24gd2hpY2ggbWF5IGJlIHVzZWQgdG8gXAorY29uZmlndXJlIChvciwgcmVzcGVjdGl2ZWx5LCBkZWNvbmZpZ3VyZSkgbmV0d29yayBpbnRlcmZhY2VzLCBiYXNlZCBvbiBcCit0aGUgZmlsZSAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy4iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vaWZ1cGRvd24uZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL2RlZm4yLWMtbWFuLWRvbi10LXJlbHktb24tZHBrZy1hcmNoaXRlY3R1cmUtdG8tc2V0LWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vOTlfbmV0d29yayBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURlZmluZS1GTk1fRVhUTUFUQ0gtZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1kby1ub3QtdXNlLWRwa2ctZm9yLWRldGVybWluaW5nLU9TLXR5cGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdmaWxlOi8vdHdlYWstcHRlc3Qtc2NyaXB0LnBhdGNoJywgJycsIGQpfSBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI0YWY3NjMxOGNmYzU3ZjhlNGE0NGQzNTcxMDQxODg2NjYyMTNiZDRiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisKK2luaGVyaXQgcHRlc3QgdXBkYXRlLWFsdGVybmF0aXZlcworCitkb19jb21waWxlICgpIHsKKwljaG1vZCBhK3J4ICoucGwgKi5zaAorCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9JyAiQ0ZMQUdTPSR7Q0ZMQUdTfSAtV2FsbCAtVyAtRCdJRlVQRE9XTl9WRVJTSU9OPVwiJHtQVn1cIiciCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKKwkJICAke0R9JHttYW5kaXJ9L21hbjUgXAorCQkgICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKworCSMgSWYgdm9sYXRpbGVzIGFyZSB1c2VkLCB0aGVuIHdlJ2xsIGFsc28gbmVlZCAvcnVuL25ldHdvcmsgdGhlcmUgdG9vLgorCWluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9uZXR3b3JrICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisKKwlpbnN0YWxsIC1tIDA3NTUgaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9LworCWxuICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9L2lmZG93bgorCWluc3RhbGwgLW0gMDY0NCBpZnVwLjggJHtEfSR7bWFuZGlyfS9tYW44CisJaW5zdGFsbCAtbSAwNjQ0IGludGVyZmFjZXMuNSAke0R9JHttYW5kaXJ9L21hbjUKKwljZCAke0R9JHttYW5kaXJ9L21hbjggJiYgbG4gLXMgaWZ1cC44IGlmZG93bi44Cit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtciAke1N9L3Rlc3RzL3Rlc3RidWlsZC1saW51eCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBjcCAtciAke1N9L3Rlc3RzL2xpbnV4ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpZnVwIGlmZG93biIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2lmdXBdID0gIiR7YmFzZV9zYmluZGlyfS9pZnVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2lmZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lmZG93biIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCmluZGV4IDFkNzRlZTUuLmM5MzY3ZGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgpAQCAtMjQsNyArMjQsNyBAQAogCiBpbmhlcml0IGNvcmUtaW1hZ2UgbW9kdWxlLWJhc2Ugc2V0dXB0b29sczMKIAotU1JDUkVWID89ICI4MTgxNjgxYjMzZGEyNzJmZWY4MzI3NjEwNGQ1YzdhOTNmODRkYTQ2IgorU1JDUkVWID89ICIzMzkwMzkzMmFkODdiZmE4ZThiZjdiYWYyMjU2NzgxNzE0OTkzYjc5IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXggXAogICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteGYgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvdWRldiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3VkZXYKaW5kZXggODc1NTFmZi4uNDg5OGI4OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvdWRldgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay91ZGV2CkBAIC00MSw2ICs0MSw5IEBACiAJbWtkaXIgLXAgL3J1bgogCW1rZGlyIC1wIC92YXIvcnVuCiAKKwkjIFdvcmthcm91bmQgaWYgY29uc29sZT1udWxsLCBzeXN0ZW1kLXVkZXZkIG5lZWRzIHZhbGlkIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciB0byB3b3JrCisJc2ggLWMgImV4ZWMgNDwgL2Rldi9jb25zb2xlIiB8fCB7IGV4ZWMgMD4gL2Rldi9udWxsOyBleGVjIDE+IC9kZXYvbnVsbDsgZXhlYyAyPiAvZGV2L251bGw7IH0KKwogCSRfVURFVl9EQUVNT04gLS1kYWVtb24KIAl1ZGV2YWRtIHRyaWdnZXIgLS1hY3Rpb249YWRkCiAJdWRldmFkbSBzZXR0bGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLVVzZS1EQVRBRElSLWFuZC1hcHBlbmQtaTM4Ni10by1maXgtbGlia2JkZmlsZS10ZXN0MDgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1Vc2UtREFUQURJUi1hbmQtYXBwZW5kLWkzODYtdG8tZml4LWxpYmtiZGZpbGUtdGVzdDA4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNTIzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1Vc2UtREFUQURJUi1hbmQtYXBwZW5kLWkzODYtdG8tZml4LWxpYmtiZGZpbGUtdGVzdDA4LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNGMxMmY3NmY0MTc3Y2ZkNTYwY2Y3MDhhMTY3NzRlYmZhZGJkNDFhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJNaW5nZGUgKE1hdHRoZXcpIFplbmciIDxtYXR0aGV3LnplbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjIgSmFuIDIwMjAgMTE6MDI6MTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIERBVEFESVIgYW5kIGFwcGVuZCBpMzg2IHRvIGZpeCBsaWJrYmRmaWxlLXRlc3QwOCBwdGVzdAorIGZhaWx1cmUKKworUmVwbGFjZSBBQlNfREFUQURJUiB3aXRoIERBVEFESVIgYW5kIGFwcGVuZCBpMzg2IHRvIGRpcnBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1RoaXMgT0Ugc3BlY2lmaWMgcGF0Y2ggYXBwbGllcyB0byBrYmQgdjIuMi4wIGZvciBub3csIHRoZSB1cHN0cmVhbQorbWFkZSBkcmFzdGljIGNoYW5nZXMgc2luY2UgdjIuMi4wLCBpbiBmYWN0IHRoZXkgZ290IHJpZCBvZiBBQlNfREFUQURJUgoraW4gY29tbWl0IDViNmRmNWMgYWxvbmcgd2l0aCBhIHNlcmllcyBvZiBvdGhlciBjb21taXRzIHdoaWNoIG1heSBvcgorbWF5IG5vdCBmaXggdGhpcyBpc3N1ZS4gV2Ugd2lsbCBmaW5kIG91dCBpbiBmdXR1cmUgcmVsZWFzZXMuCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoZXcgWmVuZzxNYXR0aGV3LlplbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9saWJrYmRmaWxlLXRlc3QwOC5jIGIvdGVzdHMvbGlia2JkZmlsZS10ZXN0MDguYworaW5kZXggYmY0MTcwNy4uNWUyODdmMSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMKKysrKyBiL3Rlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMKK0BAIC0xNCwxNCArMTQsMTQgQEAgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqKmFyZ3YpCisgCWlmICghZnApCisgCQlrYmRfZXJyb3IoRVhJVF9GQUlMVVJFLCAwLCAidW5hYmxlIHRvIGNyZWF0ZSBrYmRmaWxlIik7CisKKy0JY29uc3QgY2hhciAqY29uc3QgZGlycGF0aFtdICA9IHsgIiIsIERBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy8qKiIsIDAgfTsKKysJY29uc3QgY2hhciAqY29uc3QgZGlycGF0aFtdICA9IHsgIiIsIERBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy9pMzg2LyoqIiwgMCB9OworIAljb25zdCBjaGFyICpjb25zdCBzdWZmaXhlc1tdID0geyAiIiwgIi5tYXAiLCAiLmttYXAiLCAwIH07CisKKy0JY29uc3QgY2hhciAqZXhwZWN0ID0gQUJTX0RBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy9pMzg2L3F3ZXJ0eS90ZXN0MC5tYXAiOworKwljb25zdCBjaGFyICpleHBlY3QgPSBEQVRBRElSICIvZmluZGZpbGUvdGVzdF8wL2tleW1hcHMvaTM4Ni9xd2VydHkvdGVzdDAubWFwIjsKKworIAlpbnQgcmMgPSAwOworCistCXJjID0ga2JkZmlsZV9maW5kKChjaGFyICopKEFCU19EQVRBRElSICIvZmluZGZpbGUvdGVzdF8wL2tleW1hcHMvaTM4Ni9xd2VydHkvdGVzdDAiKSwgKGNoYXIgKiopIGRpcnBhdGgsIChjaGFyICoqKSBzdWZmaXhlcywgZnApOworKwlyYyA9IGtiZGZpbGVfZmluZCgoY2hhciAqKSJ0ZXN0MCIsIChjaGFyICoqKSBkaXJwYXRoLCAoY2hhciAqKikgc3VmZml4ZXMsIGZwKTsKKworIAlpZiAocmMgIT0gMCkKKyAJCWtiZF9lcnJvcihFWElUX0ZBSUxVUkUsIDAsICJ1bmFibGUgdG8gZmluZCBmaWxlIik7CistLQorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLWFuYWx5emUubC1hZGQtbWlzc2luZy1zdHJpbmctZm9ybWF0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkLzAwMDEtYW5hbHl6ZS5sLWFkZC1taXNzaW5nLXN0cmluZy1mb3JtYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxNmZkOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLWFuYWx5emUubC1hZGQtbWlzc2luZy1zdHJpbmctZm9ybWF0LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gZGM2YmYyYWUwODM1YzY1NjliMjcwZThlMWYyNmEzMTczZjM5MjdkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IERlYyAyMDE5IDEzOjE0OjAxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFuYWx5emUubDogYWRkIG1pc3Npbmcgc3RyaW5nIGZvcm1hdAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xlZ2lvbnVzL2tiZC9wdWxsLzM1XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvbGlia2V5bWFwL2FuYWx5emUubCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWJrZXltYXAvYW5hbHl6ZS5sIGIvc3JjL2xpYmtleW1hcC9hbmFseXplLmwKK2luZGV4IGUzMmFjZTYuLmRlNjJmNDYgMTAwNjQ0CistLS0gYS9zcmMvbGlia2V5bWFwL2FuYWx5emUubAorKysrIGIvc3JjL2xpYmtleW1hcC9hbmFseXplLmwKK0BAIC00NjMsNyArNDYzLDcgQEAgVG8gICAgICAgICAgICAgICAgICAgICAgdG98VG98VE8KKyAKKyAJCQkJCXN0cmVycm9yX3IoZXJybm8sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworIAorLQkJCQkJRVJSKHl5ZXh0cmEsIGJ1Zik7CisrCQkJCQlFUlIoeXlleHRyYSwgIiVzIiwgYnVmKTsKKyAJCQkJCXJldHVybihFUlJPUik7CisgCQkJCX0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9maXhfY2ZsYWdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL2ZpeF9jZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcyMjA5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9maXhfY2ZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK1dlIG5lZWQgdG8gZW5zdXJlIG91ciBDRkxBR1MgYXJlIHByZXNlcnZlZCBhcyB3ZWxsIGFzIHdoYXRldmVyIHR3ZWFrIGNvbmZpZ3VyZQordHJpZXMgdG8gbWFrZS4gV2l0aG91dCB0aGVzZSwgdGhlIGRlYnVnIHByZWZpeCBjaGFuZ2VzIGdldCBsb3N0IGFuZCB3ZSBsb3NlCitidWlsZCByZXByb2R1Y2liaWxpdHksIGxpa2VseSB3aXRoIG90aGVyIHNpZGUgZWZmZWN0cy4KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKzIwMjAvMS8yNworCitJbmRleDoga2JkLTIuMi4wL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtiZC0yLjIuMC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGtiZC0yLjIuMC9jb25maWd1cmUuYWMKK0BAIC03Miw5ICs3Miw5IEBAIGlmIHRlc3QgIiRlbmFibGVfY29kZV9jb3ZlcmFnZSIgPSB5ZXM7IHQKKyBmaQorIAorIGNhc2UgIiRHQ0MsJGFjX2N2X3Byb2dfY2NfZyIgaW4KKy0JeWVzLHllcykgQ0ZMQUdTPSItZyAkQ0NfT19MRVZFTCAkRk9SVElGWV9TT1VSQ0UiIDs7CistCXllcywpICAgIENGTEFHUz0iJENDX09fTEVWRUwgJEZPUlRJRllfU09VUkNFIiA7OworLQkgICAseWVzKSBDRkxBR1M9Ii1nIiA7OworKwl5ZXMseWVzKSBDRkxBR1M9Ii1nICRDQ19PX0xFVkVMICRGT1JUSUZZX1NPVVJDRSAkQ0ZMQUdTIiA7OworKwl5ZXMsKSAgICBDRkxBR1M9IiRDQ19PX0xFVkVMICRGT1JUSUZZX1NPVVJDRSAkQ0ZMQUdTIiA7OworKwkgICAseWVzKSBDRkxBR1M9Ii1nICRDRkxBR1MiIDs7CisgZXNhYworIAorIENDX0NIRUNLX0NGTEFHU19BUFBFTkQoW1wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKaW5kZXggYTlhM2FiOC4uNGIxZTViOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIGNiM2FmOGZiMDcyZjg5OTlkYmI1MTYwYmRjOTVhMTAyYjAyZmQzN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMzAgU2VwIDIwMTYgMTY6NDk6NTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0ga2JkOiBjcmVhdGUgcHRlc3Qgc3ViLXBhY2thZ2UKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAoga2JkIGlzIG91dCBvZiBzb3VyY2UgYnVpbHQsIHRoZW4gdGhlIHZhbHVlIG9mICQoc3JjZGlyKSBpcyByZWxhdGl2ZSBwYXRoIG9mCkBAIC0xMywzOCArMTgsNjEgQEAKIAogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiAKLUluZGV4OiBrYmQtMi4wLjQvdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGtiZC0yLjAuNC90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTEsNyArMSw3IEBACi0gQU1fQ1BQRkxBR1MgPSBcCi0gCS1JJChzcmNkaXIpLy4uL3NyYy9saWJrZXltYXAgXAorLS0tCisgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgIHwgNCArKy0tCisgdGVzdHMvYWx0LWlzLW1ldGEuaW4gICAgICAgIHwgMiArLQorIHRlc3RzL2R1bXBrZXlzLWJrZXltYXAuaW4gICB8IDQgKystLQorIHRlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbiB8IDIgKy0KKyB0ZXN0cy9kdW1wa2V5cy1ta3RhYmxlLmluICAgfCA0ICsrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDhkMGFiNjkuLjUxNDdjMjggMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC03LDggKzcsOCBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLUkkKGJ1aWxkZGlyKS8uLi9zcmMvbGlia2V5bWFwIFwKLS0JLUREQVRBRElSPVwiJChzcmNkaXIpXCIgLURCVUlMRERJUj1cIiQoYnVpbGRkaXIpXCIKLSsJLUREQVRBRElSPVwiLlwiIC1EQlVJTERESVI9XCIkKGJ1aWxkZGlyKVwiCisgCS1JJChzcmNkaXIpLy4uL3NyYy9saWJrYmRmaWxlIFwKKyAJLUkkKGJ1aWxkZGlyKS8uLi9zcmMvbGlia2JkZmlsZSBcCistCS1EREFUQURJUj1cIiQoc3JjZGlyKVwiIFwKKy0JLURBQlNfREFUQURJUj1cIiQocmVhbHBhdGggJChzcmNkaXIpKVwiIFwKKysJLUREQVRBRElSPVwiLlwiIFwKKysJLURBQlNfREFUQURJUj1cIi91c3IvbGliL2tiZC9wdGVzdC90ZXN0c1wiIFwKKyAJLURCVUlMRERJUj1cIiQoYnVpbGRkaXIpXCIKICAKLSBBTV9DRkxBR1MgPSAkKENIRUNLX0NGTEFHUykKLSBMREFERCAgPSAkKHRvcF9idWlsZGRpcikvc3JjL2xpYmtleW1hcC9saWJrZXltYXAubGEgJChDSEVDS19MSUJTKSBASU5UTExJQlNACi1JbmRleDoga2JkLTIuMC40L3Rlc3RzL2FsdC1pcy1tZXRhLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ga2JkLTIuMC40Lm9yaWcvdGVzdHMvYWx0LWlzLW1ldGEuaW4KLSsrKyBrYmQtMi4wLjQvdGVzdHMvYWx0LWlzLW1ldGEuaW4KLUBAIC03LDggKzcsOCBAQCBjZCAiJGN3ZCIKKyBBTV9DRkxBR1MgPSAkKENIRUNLX0NGTEFHUykgJChDT0RFX0NPVkVSQUdFX0NGTEFHUykKK2RpZmYgLS1naXQgYS90ZXN0cy9hbHQtaXMtbWV0YS5pbiBiL3Rlc3RzL2FsdC1pcy1tZXRhLmluCitpbmRleCAzYTE0NDFmLi5kODI5ZjJlIDEwMDc1NQorLS0tIGEvdGVzdHMvYWx0LWlzLW1ldGEuaW4KKysrKyBiL3Rlc3RzL2FsdC1pcy1tZXRhLmluCitAQCAtNyw3ICs3LDcgQEAgY2QgIiRjd2QiCiAgcmM9MAogIHRlbXA9IiQobWt0ZW1wICJAQlVJTERESVJAL3RlbXAuWFhYWFhYWFhYIikiCiAgCi0tLi9saWJrZXltYXAtc2hvd21hcHMgIkBEQVRBRElSQCIvYWx0LWlzLW1ldGEubWFwID4gIiR0ZW1wIiB8fCByYz0kPwotLWNtcCAtcyAiQERBVEFESVJALy9hbHQtaXMtbWV0YS5vdXRwdXQiICIkdGVtcCIgfHwgcmM9JD8KLSsuL2xpYmtleW1hcC1zaG93bWFwcyAuL2FsdC1pcy1tZXRhLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KLStjbXAgLXMgIi4vYWx0LWlzLW1ldGEub3V0cHV0IiAiJHRlbXAiIHx8IHJjPSQ/CistZGF0YWRpcj0iQERBVEFESVJAL2RhdGEvYWx0LWlzLW1ldGEiCisrZGF0YWRpcj0iLi9kYXRhL2FsdC1pcy1tZXRhIgorIAorIC4vbGlia2V5bWFwLXNob3dtYXBzICIkZGF0YWRpciIvYWx0LWlzLW1ldGEubWFwID4gIiR0ZW1wIiB8fCByYz0kPworIGNtcCAtcyAiJGRhdGFkaXIvYWx0LWlzLW1ldGEub3V0cHV0IiAiJHRlbXAiIHx8IHJjPSQ/CitkaWZmIC0tZ2l0IGEvdGVzdHMvZHVtcGtleXMtYmtleW1hcC5pbiBiL3Rlc3RzL2R1bXBrZXlzLWJrZXltYXAuaW4KK2luZGV4IDAzZDRjYTIuLmQxZDBlMjYgMTAwNzU1CistLS0gYS90ZXN0cy9kdW1wa2V5cy1ia2V5bWFwLmluCisrKysgYi90ZXN0cy9kdW1wa2V5cy1ia2V5bWFwLmluCitAQCAtOSw4ICs5LDggQEAgdGVtcD0iJChta3RlbXAgIkBCVUlMRERJUkAvdGVtcC5YWFhYWFhYWFgiKSIKKyAKKyBkYXRhZGlyPSJAREFUQURJUkAiCisgCistLi9saWJrZXltYXAtYmtleW1hcCAiJGRhdGFkaXIvIi4uL2RhdGEva2V5bWFwcy9pMzg2L3F3ZXJ0eS9kZWZrZXltYXAubWFwID4gIiR0ZW1wIiB8fCByYz0kPworLWNtcCAtcyAiJGRhdGFkaXIvZGF0YS9kdW1wa2V5cy1ia2V5bWFwL2JrZXltYXAuYmluIiAiJHRlbXAiIHx8IHJjPSQ/CisrLi9saWJrZXltYXAtYmtleW1hcCAuLi9kYXRhL2tleW1hcHMvaTM4Ni9xd2VydHkvZGVma2V5bWFwLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKytjbXAgLXMgIi4vZGF0YS9kdW1wa2V5cy1ia2V5bWFwL2JrZXltYXAuYmluIiAiJHRlbXAiIHx8IHJjPSQ/CiAgCiAgaWYgWyAiJHJjIiAhPSAwIF07IHRoZW4KICAJcHJpbnRmICdmYWlsZWRcbicKLUluZGV4OiBrYmQtMi4wLjQvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ga2JkLTIuMC40Lm9yaWcvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCi0rKysga2JkLTIuMC40L3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorZGlmZiAtLWdpdCBhL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbiBiL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgoraW5kZXggYTNhNWVjZS4uNjdhNzNlZiAxMDA3NTUKKy0tLSBhL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorKysrIGIvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCiBAQCAtNSw3ICs1LDcgQEAgY3dkPSIkKHJlYWRsaW5rIC1ldiAiJHswJS8qfSIpIgogIGNkICIkY3dkIgogIApAQCAtNTQsMyArODIsMTggQEAKICAKICBjaGVja19rZXltYXAoKSB7CiAgCWxvY2FsIGttYXAgdGVtcCByYworZGlmZiAtLWdpdCBhL3Rlc3RzL2R1bXBrZXlzLW1rdGFibGUuaW4gYi90ZXN0cy9kdW1wa2V5cy1ta3RhYmxlLmluCitpbmRleCAwZjE3YzQwLi43ZTUxNjFkIDEwMDc1NQorLS0tIGEvdGVzdHMvZHVtcGtleXMtbWt0YWJsZS5pbgorKysrIGIvdGVzdHMvZHVtcGtleXMtbWt0YWJsZS5pbgorQEAgLTcsOCArNyw4IEBAIGNkICIkY3dkIgorIHJjPTAKKyB0ZW1wPSIkKG1rdGVtcCAiQEJVSUxERElSQC90ZW1wLlhYWFhYWFhYWCIpIgorIAorLS4vbGlia2V5bWFwLW1rdGFibGUgIkBEQVRBRElSQC8iLi4vZGF0YS9rZXltYXBzL2kzODYvcXdlcnR5L2RlZmtleW1hcC5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/CistY21wIC1zICJAREFUQURJUkAvZGF0YS9kdW1wa2V5cy1ta3RhYmxlL2RlZmtleW1hcC5jIiAiJHRlbXAiIHx8IHJjPSQ/CisrLi9saWJrZXltYXAtbWt0YWJsZSAuLi9kYXRhL2tleW1hcHMvaTM4Ni9xd2VydHkvZGVma2V5bWFwLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKytjbXAgLXMgIi4vZGF0YS9kdW1wa2V5cy1ta3RhYmxlL2RlZmtleW1hcC5jIiAiJHRlbXAiIHx8IHJjPSQ/CisgCisgaWYgWyAiJHJjIiAhPSAwIF07IHRoZW4KKyAJcHJpbnRmICdmYWlsZWRcbicKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFmMzI1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1TVU1NQVJZID0gIktleXRhYmxlIGZpbGVzIGFuZCBrZXlib2FyZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmtiZC1wcm9qZWN0Lm9yZy8iCi0jIGV2ZXJ5dGhpbmcgbWludXMgY29uc29sZS1mb250cyBpcyBHUEx2MisKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTVmY2MzNjEyMWQ5M2UxZjY5ZDk2YTMxMzA3OGM4YjUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QgcGtnY29uZmlnCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgotUlBST1ZJREVTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnZmlsZTovL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gnLCAnJywgZCl9IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMTYzNWE1YTgzYjYzYWNhN2Y5N2EzZWFiMzllYmFhNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmQ5MGFmNmJlYjIyNWE5YmI5YjlmYjQxNGMwOTBmYmE1M2M5YTU1NzkzZTE3MmY1MDhjZDQzNjUyZTU5YTg4IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS12bG9jaywgLS1kaXNhYmxlLXZsb2NrLCBsaWJwYW0sIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsIC0tZGlzYWJsZS10ZXN0cywgbGliY2hlY2siCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzIGR1bXBrZXlzLWZ1bGx0YWJsZSBhbHQtaXMtbWV0YQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGluc3RhbGwgLUQgJHtCfS90ZXN0cy9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKLQktZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCi0JLWUgJ3M6JHtERUJVR19QUkVGSVhfTUFQfTo6ZycgXAotCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLQktZSAnczoke1N9L2NvbmZpZy9taXNzaW5nOjpnJyBcCi0JLWUgJ3M6JHtXT1JLRElSfTo6ZycgXAotCS1lICcvbGlia2V5bWFwXy4qX1NPVVJDRVMgPS9kJyAtZSAnLyQoRVhFRVhUKTovLC9eJC9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotCi0gICAgZmluZCAke0J9L3Rlc3RzIC1leGVjdXRhYmxlIC1leGVjIGluc3RhbGwge30gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgXDsKLSAgICBmaW5kICR7U30vdGVzdHMgXCggLW5hbWUgXCoubWFwIC1vIC1uYW1lIFwqLmJpbiAtbyAtbmFtZSBcKi5vdXRwdXQgXCkgLWV4ZWMgaW5zdGFsbCB7fSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBcOwotCi0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtTfS9jb25maWcvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vY29uZmlnL3Rlc3QtZHJpdmVyCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS1jb25zb2xlZm9udHMgJHtQTn0ta2V5bWFwcyAke1BOfS11bmltYXBzICR7UE59LWNvbnNvbGV0cmFucyIKLQotRklMRVNfJHtQTn0tY29uc29sZWZvbnRzID0gIiR7ZGF0YWRpcn0vY29uc29sZWZvbnRzIgotRklMRVNfJHtQTn0tY29uc29sZXRyYW5zID0gIiR7ZGF0YWRpcn0vY29uc29sZXRyYW5zIgotRklMRVNfJHtQTn0ta2V5bWFwcyA9ICIke2RhdGFkaXJ9L2tleW1hcHMiCi1GSUxFU18ke1BOfS11bmltYXBzID0gIiR7ZGF0YWRpcn0vdW5pbWFwcyIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibWFrZSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQgc2hvd2tleSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4yLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU3MDBmZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjIuMC5iYgpAQCAtMCwwICsxLDcyIEBACitTVU1NQVJZID0gIktleXRhYmxlIGZpbGVzIGFuZCBrZXlib2FyZCB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmtiZC1wcm9qZWN0Lm9yZy8iCisjIGV2ZXJ5dGhpbmcgbWludXMgY29uc29sZS1mb250cyBpcyBHUEx2MisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODkyZjU2OWE1NTViYTljMDdhNTY4YTdjMGM0ZmE2M2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gImZsZXgtbmF0aXZlIgorCitSUkVQTEFDRVNfJHtQTn0gPSAiY29uc29sZS10b29scyIKK1JQUk9WSURFU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgorUkNPTkZMSUNUU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ2ZpbGU6Ly9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoJywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFuYWx5emUubC1hZGQtbWlzc2luZy1zdHJpbmctZm9ybWF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLURBVEFESVItYW5kLWFwcGVuZC1pMzg2LXRvLWZpeC1saWJrYmRmaWxlLXRlc3QwOC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfY2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDFkN2FlMGI1ZmI4NzVkYzA4MjczMWUwOWNkMGM4YmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjFhMWJjNWY2ZmIzYjE4Y2U5ZmRkNzE3ZTQ1MzMzNjgwNjBhMzE4MmEzOWM3MTU1ZWFmN2VjMGY1ZjgzZTlmNyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAndGVzdHMnLCcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtdmxvY2ssIC0tZGlzYWJsZS12bG9jaywgbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLCAtLWRpc2FibGUtdGVzdHMsIGxpYmNoZWNrIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cyBhbHQtaXMtbWV0YSBkdW1wa2V5cy1ia2V5bWFwIGR1bXBrZXlzLWZ1bGx0YWJsZSBkdW1wa2V5cy1ta3RhYmxlCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtRCAke0J9L3Rlc3RzL01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCS1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKKwktZSAnczoke0RFQlVHX1BSRUZJWF9NQVB9OjpnJyBcCisJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwktZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCS1lICdzOiR7U30vY29uZmlnL21pc3Npbmc6OmcnIFwKKwktZSAnczoke1dPUktESVJ9OjpnJyBcCisJLWUgJy9ebGliLipfU09VUkNFUyA9L2QnIC1lICcvJChFWEVFWFQpOi8sL14kL2QnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisKKyAgICBmaW5kICR7Qn0vdGVzdHMgLWV4ZWN1dGFibGUgLWV4ZWMgaW5zdGFsbCB7fSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBcOworICAgIGNwIC1yZiAke1N9L3Rlc3RzL2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy9maW5kZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7U30vY29uZmlnL3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L2NvbmZpZy90ZXN0LWRyaXZlcgorfQorCitQQUNLQUdFUyArPSAiJHtQTn0tY29uc29sZWZvbnRzICR7UE59LWtleW1hcHMgJHtQTn0tdW5pbWFwcyAke1BOfS1jb25zb2xldHJhbnMiCisKK0ZJTEVTXyR7UE59LWNvbnNvbGVmb250cyA9ICIke2RhdGFkaXJ9L2NvbnNvbGVmb250cyIKK0ZJTEVTXyR7UE59LWNvbnNvbGV0cmFucyA9ICIke2RhdGFkaXJ9L2NvbnNvbGV0cmFucyIKK0ZJTEVTXyR7UE59LWtleW1hcHMgPSAiJHtkYXRhZGlyfS9rZXltYXBzIgorRklMRVNfJHtQTn0tdW5pbWFwcyA9ICIke2RhdGFkaXJ9L3VuaW1hcHMiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIm1ha2UiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjaHZ0IGRlYWxsb2N2dCBmZ2NvbnNvbGUgb3BlbnZ0IHNob3drZXkgXAorICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndmxvY2snLCcnLCBkKX0iCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTc0ZWIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuMTUuYmIKQEAgLTAsMCArMSwxOCBAQAorIworIyBUaGlzIHByb3ZpZGVzIGxpYmNyeXB0by5zby4xIHdoaWNoIGNvbnRhaW5zIG9ic29sZXRlIEFQSXMsIG5lZWRlZCBmb3IgdW5pbmF0aXZlIGluIHBhcnRpY3VsYXIKKyMKKworcmVxdWlyZSBsaWJ4Y3J5cHQuaW5jCisKK1BST1ZJREVTID0gIiIKK0FVVE9fTElCTkFNRV9QS0dTID0gIiIKK0VYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgorCitBUEkgPSAiLS1lbmFibGUtb2Jzb2xldGUtYXBpIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9CisJcm0gLXJmICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJcm0gLXJmICR7RH0ke2RhdGFkaXJ9Cit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmM0NjQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jCi0jIFRoaXMgcHJvdmlkZXMgbGliY3J5cHRvLnNvLjEgd2hpY2ggY29udGFpbnMgb2Jzb2xldGUgQVBJcywgbmVlZGVkIGZvciB1bmluYXRpdmUgaW4gcGFydGljdWxhcgotIwotCi1yZXF1aXJlIGxpYnhjcnlwdF8ke1BWfS5iYgotCi1QUk9WSURFUyA9ICIiCi1BVVRPX0xJQk5BTUVfUEtHUyA9ICIiCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKLQotQVBJID0gIi0tZW5hYmxlLW9ic29sZXRlLWFwaSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfQotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCXJtIC1yZiAke0R9JHtkYXRhZGlyfQotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWUxMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LmluYwpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkV4dGVuZGVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSAoZnJvbSBnbGliYykiCitERVNDUklQVElPTiA9ICJGb3JrZWQgY29kZSBmcm9tIGdsaWJjIGxpYmFyeSB0byBleHRyYWN0IG9ubHkgY3J5cHRvIHBhcnQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT0zYmI2NjE0Y2Y1ODgwY2JmMWI5ZGJkOWUzZDE0NWUyYyBcCisgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCitTUkNSRVYgPSAiODIzNDM3ZDAxNWNkNGFiNGQxMDBlZDIwNWYyMTg2ODFiMDNhZTQ1YyIKK1NSQ0JSQU5DSCA/PSAiZGV2ZWxvcCIKKworUFJPVklERVMgPSAidmlydHVhbC9jcnlwdCIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0Ki5zby4qIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJjcnlwdC0qLnNvIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0Ki5zby4qIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0LSouc28gXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0gLVduby1lcnJvciIKK0NQUEZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1Xbm8tZXJyb3IiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKK0FQSSA9ICItLWRpc2FibGUtb2Jzb2xldGUtYXBpIgorRVhUUkFfT0VDT05GICs9ICIke0FQSX0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZGJhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjE1LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBsaWJ4Y3J5cHQuaW5jCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4N2Y2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkV4dGVuZGVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSAoZnJvbSBnbGliYykiCi1ERVNDUklQVElPTiA9ICJGb3JrZWQgY29kZSBmcm9tIGdsaWJjIGxpYmFyeSB0byBleHRyYWN0IG9ubHkgY3J5cHRvIHBhcnQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT0zYmI2NjE0Y2Y1ODgwY2JmMWI5ZGJkOWUzZDE0NWUyYyBcCi0gICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCi1TUkNSRVYgPSAiYWNkODQ5OTdhNWE4YjJiYWRkMjhiNzBhNjQyYWJlZTExMjcyZmFkMiIKLVNSQ0JSQU5DSCA/PSAiZGV2ZWxvcCIKLQotUFJPVklERVMgPSAidmlydHVhbC9jcnlwdCIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0Ki5zby4qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJjcnlwdC0qLnNvIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0Ki5zby4qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0LSouc28gXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0gLVduby1lcnJvciIKLUNQUEZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1Xbm8tZXJyb3IiCi0KLUFQSSA9ICItLWRpc2FibGUtb2Jzb2xldGUtYXBpIgotRVhUUkFfT0VDT05GICs9ICIke0FQSX0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaAppbmRleCAyYjkyZGJjLi41ZTlhMGE1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzhkYmQ0YzA5ZDYxN2E5Y2I3MzBkNzk2Zjk0ZWU0ZDkzODQwZDNjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmI1ZmI0MTZhYTI3NWZkMmExN2EwMTM5YTJmNzgzOTk4YmNiNDJjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgogRGF0ZTogRnJpLCA5IEp1biAyMDE3IDE3OjUwOjQ2ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgcHRlc3QgcnVuIHRoZSBweXRob24gdGVzdHMgaWYgcHl0aG9uIGlzIGVuYWJsZWQKQEAgLTgsMTggKzgsMTkgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgorCiAtLS0KICBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgIHwgIDIgKy0KICBweXRob24vTWFrZWZpbGUuYW0gICAgICAgICAgIHwgIDkgKysrKysrKysrCi0gcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtICAgICB8IDEyICsrKysrKysrKystLQorIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCAxMCArKysrKysrKysrCiAgcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSB8ICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIDQgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGxpYnhtbDItMi45LjcvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCi1AQCAtMjA3LDkgKzIwNyw5IEBAIGluc3RhbGwtcHRlc3Q6CitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYWU2MjI3NC4uYmQxZTQyNSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTIwMyw5ICsyMDMsOSBAQCBpbnN0YWxsLXB0ZXN0OgogIAlpbnN0YWxsICQoY2hlY2tfUFJPR1JBTVMpICQoREVTVERJUikpCiAgCWNwIC1yICQoc3JjZGlyKS90ZXN0ICQoREVTVERJUikKICAJY3AgLXIgJChzcmNkaXIpL3Jlc3VsdCAkKERFU1RESVIpCkBAIC0zMCwxMSArMzEsMTEgQEAKICAKICBydW50ZXN0czogcnVudGVzdCQoRVhFRVhUKSB0ZXN0cmVjdXJzZSQoRVhFRVhUKSB0ZXN0YXBpJChFWEVFWFQpIFwKICAgICAgICAgICAgdGVzdGNoYXIkKEVYRUVYVCkgdGVzdGRpY3QkKEVYRUVYVCkgcnVueG1sY29uZiQoRVhFRVhUKQotSW5kZXg6IGxpYnhtbDItMi45LjcvcHl0aG9uL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlieG1sMi0yLjkuNy5vcmlnL3B5dGhvbi9NYWtlZmlsZS5hbQotKysrIGxpYnhtbDItMi45LjcvcHl0aG9uL01ha2VmaWxlLmFtCi1AQCAtNDgsNyArNDgsMTYgQEAgR0VORVJBVEVEID0gbGlieG1sMmNsYXNzLnB5IGxpYnhtbDJjbGFzcworZGlmZiAtLWdpdCBhL3B5dGhvbi9NYWtlZmlsZS5hbSBiL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggMzRhZWQ5Ni4uYmEzZWM2YSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9NYWtlZmlsZS5hbQorKysrIGIvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtNDgsNyArNDgsMTYgQEAgR0VORVJBVEVEID0gbGlieG1sMmNsYXNzLnB5IGxpYnhtbDJjbGFzcy50eHQgJChCVUlMVF9TT1VSQ0VTKQogIAogICQoR0VORVJBVEVEKTogJChzcmNkaXIpL2dlbmVyYXRvci5weSAkKEFQSV9ERVNDKQogIAkkKFBZVEhPTikgJChzcmNkaXIpL2dlbmVyYXRvci5weSAkKHNyY2RpcikKQEAgLTUxLDEwICs1MiwxMCBAQAogKy5QSE9OWTogdGVzdHMgdGVzdAogIHRlc3RzIHRlc3Q6IGFsbAogIAljZCB0ZXN0cyAmJiAkKE1BS0UpIHRlc3RzCi1JbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0gYi9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDIyN2UyNGQuLjAyMWJiMjkgMTAwNjQ0CistLS0gYS9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTU5LDYgKzU5LDExIEBAIFhNTFM9CQlcCiAgQ0xFQU5GSUxFUyA9IGNvcmUgdG1wLnhtbCAqLnB5YwogIApAQCAtNjcsMjQgKzY4LDI1IEBACiAgdGVzdHM6ICQoUFlURVNUUykKICAJQGZvciBmIGluICQoWE1MUykgOyBkbyB0ZXN0IC1mICQkZiB8fCAkKExOX1MpICQoc3JjZGlyKS8kJGYgLiA7IGRvbmUKICAJQGVjaG8gIiMjIHJ1bm5pbmcgUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMiCi1AQCAtNjgsOCArNzMsMTEgQEAgdGVzdHM6ICQoUFlURVNUUykKLSAJICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSDsgXAotIAkgICBmb3IgdGVzdCBpbiAkKFBZVEVTVFMpIDsgXAotIAkgICBkbyBsb2c9YCQoUFlUSE9OKSAkKHNyY2RpcikvJCR0ZXN0YCA7IFwKLS0JICAgaWYgWyAiYGVjaG8gJCRsb2cgfCBncmVwIE9LYCIgPSAiIiBdIDsgdGhlbiBcCi0tCSAgIGVjaG8gIi0tICQkdGVzdCIgOyBlY2hvICIkJGxvZyIgOyBmaSA7IGRvbmUpCi0rCSAgIGlmIFsgImBlY2hvICQkbG9nIHwgZ3JlcCBPS2AiIF07IHRoZW4gXAotKwkgICBlY2hvICJQQVNTOiAkJHRlc3QiOyBlbHNlIFwKLSsJICAgZWNobyAiJCRsb2ciOyBlY2hvICJGQUlMOiAkJHRlc3QiOyBmaTsgZG9uZSkKK0BAIC03MCw5ICs3NSwxNCBAQCB0ZXN0czogJChQWVRFU1RTKQorIAkgICAgaWYgWyAiJCQ/IiAtbmUgMCBdIDsgdGhlbiBcCisgCSAgICAgIGVjaG8gIi0tICQkdGVzdCIgOyBcCisgCSAgICAgIGVjaG8gIiQkbG9nIiA7IFwKKysgICAgICAgICAgICAgIGVjaG8gIkZBSUw6ICQkdGVzdCI7IFwKKyAJICAgICAgZXhpdCAxIDsgXAorKyAgICAgICAgICAgIGVsc2UgXAorKyAgICAgICAgICAgICAgZWNobyAiUEFTUzogJCR0ZXN0IjsgXAorIAkgICAgZmkgOyBcCisgCSAgZG9uZSkKICBlbHNlCiAraW5zdGFsbC1wdGVzdDoKICsKICB0ZXN0czoKICBlbmRpZgotSW5kZXg6IGxpYnhtbDItMi45LjcvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnhtbDItMi45Ljcub3JpZy9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5Ci0rKysgbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSBiL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKK2luZGV4IDgxZDBhY2MuLjE2MmM4ZGIgMTAwNzU1CistLS0gYS9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CisrKysgYi9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CiBAQCAtMjUsNyArMjUsNyBAQCBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICB3aGVuIHRoZSBleGNlcHRpb24gaXMgcmFpc2VkLCBjaGVjayB0aGUgbGlieG1sMi5sYXN0RXJyb3IgZm9yCiAgICAgICAgICBleHBlY3RlZCB2YWx1ZXMuIiIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDE5LTIwMzg4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAxOS0yMDM4OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGViNjVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAxOS0yMDM4OC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDdmZmNkNDRkN2U2YzQ2NzA0ZjhhZjAzMjFkOTMxNGNkMjZlMGUxOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGlwZW5nIFhpZSA8eGllemhpcGVuZzFAaHVhd2VpLmNvbT4KK0RhdGU6IFR1ZSwgMjAgQXVnIDIwMTkgMTY6MzM6MDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IG1lbW9yeSBsZWFrIGluIHhtbFNjaGVtYVZhbGlkYXRlU3RyZWFtCisKK1doZW4gY3R4dC0+c2NoZW1hIGlzIE5VTEwsIHhtbFNjaGVtYVNBWFBsdWctPnhtbFNjaGVtYVByZVJ1bgorYWxsb2MgYSBuZXcgc2NoZW1hIGZvciBjdHh0LT5zY2hlbWEgYW5kIHNldCB2Y3R4dC0+eHNpQXNzZW1ibGUKK3RvIDEuIFRoZW4geG1sU2NoZW1hVlN0YXJ0LT54bWxTY2hlbWFQcmVSdW4gaW5pdGlhbGl6ZQordmN0eHQtPnhzaUFzc2VtYmxlIHRvIDAgYWdhaW4gd2hpY2ggY2F1c2UgdGhlIGFsbG9jZWQgc2NoZW1hCitjYW4gbm90IGJlIGZyZWVkIGFueW1vcmUuCisKK0ZvdW5kIHdpdGggbGliRnV6emVyLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieG1sMi9jb21taXQvN2ZmY2Q0NGQ3ZTZjNDY3MDRmOGFmMDMyMWQ5MzE0Y2QyNmUwZTE4YV0KK0NWRTogQ1ZFLTIwMTktMjAzODgKKworU2lnbmVkLW9mZi1ieTogWmhpcGVuZyBYaWUgPHhpZXpoaXBlbmcxQGh1YXdlaS5jb20+CitTaWduZWQtb2ZmLWJ5OiBMZWUgQ2hlZSBZYW5nIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIHhtbHNjaGVtYXMuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS94bWxzY2hlbWFzLmMgYi94bWxzY2hlbWFzLmMKK2luZGV4IDMwMWM4NDQ5Li4zOWQ5MjE4MiAxMDA2NDQKKy0tLSBhL3htbHNjaGVtYXMuYworKysrIGIveG1sc2NoZW1hcy5jCitAQCAtMjgwOTAsNyArMjgwOTAsNiBAQCB4bWxTY2hlbWFQcmVSdW4oeG1sU2NoZW1hVmFsaWRDdHh0UHRyIHZjdHh0KSB7CisgICAgIHZjdHh0LT5uYmVycm9ycyA9IDA7CisgICAgIHZjdHh0LT5kZXB0aCA9IC0xOworICAgICB2Y3R4dC0+c2tpcERlcHRoID0gLTE7CistICAgIHZjdHh0LT54c2lBc3NlbWJsZSA9IDA7CisgICAgIHZjdHh0LT5oYXNLZXlyZWZzID0gMDsKKyAjaWZkZWYgRU5BQkxFX0lEQ19OT0RFX1RBQkxFU19URVNUCisgICAgIHZjdHh0LT5jcmVhdGVJRENOb2RlVGFibGVzID0gMTsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMjAtNzU5NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMjAtNzU5NS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWNmZWZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAyMC03NTk1LnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMGUxYTQ5Yzg5MDc2NDVkMmUxNTVmMGQ4OWQ0ZDk4OTVhYzUxMTJiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpoaXBlbmcgWGllIDx4aWV6aGlwZW5nMUBodWF3ZWkuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAxNzozMDo1NSArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggaW5maW5pdGUgbG9vcCBpbiB4bWxTdHJpbmdMZW5EZWNvZGVFbnRpdGllcworCitXaGVuIGN0eHQtPmluc3RhdGUgPT0gWE1MX1BBUlNFUl9FT0YseG1sUGFyc2VTdHJpbmdFbnRpdHlSZWYKK3JldHVybiBOVUxMIHdoaWNoIGNhdXNlIGEgaW5maW5pdGUgbG9vcCBpbiB4bWxTdHJpbmdMZW5EZWNvZGVFbnRpdGllcworCitGb3VuZCB3aXRoIGxpYkZ1enplci4KKworU2lnbmVkLW9mZi1ieTogWmhpcGVuZyBYaWUgPHhpZXpoaXBlbmcxQGh1YXdlaS5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJ4bWwyL2NvbW1pdC8wZTFhNDljODkwNzZdCitDVkU6IENWRS0yMDIwLTc1OTUKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IAorLS0tCisgcGFyc2VyLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BhcnNlci5jIGIvcGFyc2VyLmMKK2luZGV4IGQxYzMxOTYzLi5hMzRiYjZjZCAxMDA2NDQKKy0tLSBhL3BhcnNlci5jCisrKysgYi9wYXJzZXIuYworQEAgLTI2NDYsNyArMjY0Niw4IEBAIHhtbFN0cmluZ0xlbkRlY29kZUVudGl0aWVzKHhtbFBhcnNlckN0eHRQdHIgY3R4dCwgY29uc3QgeG1sQ2hhciAqc3RyLCBpbnQgbGVuLAorICAgICBlbHNlCisgICAgICAgICBjID0gMDsKKyAgICAgd2hpbGUgKChjICE9IDApICYmIChjICE9IGVuZCkgJiYgLyogbm9uIGlucHV0IGNvbnN1bWluZyBsb29wICovCistCSAgIChjICE9IGVuZDIpICYmIChjICE9IGVuZDMpKSB7CisrICAgICAgICAgICAoYyAhPSBlbmQyKSAmJiAoYyAhPSBlbmQzKSAmJgorKyAgICAgICAgICAgKGN0eHQtPmluc3RhdGUgIT0gWE1MX1BBUlNFUl9FT0YpKSB7CisgCisgCWlmIChjID09IDApIGJyZWFrOworICAgICAgICAgaWYgKChjID09ICcmJykgJiYgKHN0clsxXSA9PSAnIycpKSB7CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5N2FjZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS4xMC5iYgpAQCAtMCwwICsxLDExMiBAQAorU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgorCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtzdWJkaXI9JHtCUH07bmFtZT10ZXN0dGFyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWV4ZWN1dGlvbi1vZi1wdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtNzU5NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0yMDM4OC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICIxMDk0MmExZGMyMzEzN2E4YWEwN2YwNjM5Y2JmZWNlNSIKK1NSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiYWFmZWUxOTNmZmI4ZmUwYzgyZDRhZmVmNmVmOTE5NzJjYmFmNWZlZWExMDBlZGMyZjI2Mjc1MDYxMWI0YmUxZiIKK1NSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgorU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdCBmZWF0dXJlc19jaGVjaworCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCAgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy11bml0dGVzdCAke1BOfS1weXRob24nLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pYm0xMTQxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pc284ODU5LTUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWV1Yy1qcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2V4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKKyMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQorRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0CisgICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgorICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgorUEFDS0FHRVMgKz0gIiR7UE59LXB5dGhvbiIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBleGVjdXRhYmxlcyB0YWtlIGxvbmdlciB0byBwYWNrYWdlOiB0aGVzZSBzaG91bGQgbm90IGJlIGV4ZWN1dGFibGUKKwlmaW5kICR7U30veG1sY29uZi8gLXR5cGUgZiAtZXhlYyBjaG1vZCAteCB7fSBcKworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgY2hlY2stYW0KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgJHtTfS94bWxjb25mICR7RH0ke1BURVNUX1BBVEh9CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3N8XlwoUFlUSE9OID0gXCkuKnxcMSR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcgXAorCQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uL3Rlc3RzL01ha2VmaWxlCisJCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8CisJCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKKwlmaQorCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKKwlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJICAgIHNlZCAtaSBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXlJFTERBVEUvZCcgXAorCSAgICB7fSArCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJIyBEb2NzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBuYXRpdmUgY2FzZQorCXJtICR7RH0ke2RhdGFkaXJ9L2d0ay1kb2MgLXJmCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTdlMDk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKLURFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgotCi1ERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAotICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtzdWJkaXI9JHtCUH07bmFtZT10ZXN0dGFyIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWV4ZWN1dGlvbi1vZi1wdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbGlidGFyLm1kNXN1bV0gPSAiYzA0YTVhMGEwNDJlYWExNTdlOGU4YzllYWJlNzZiZDYiCi1TUkNfVVJJW2xpYnRhci5zaGEyNTZzdW1dID0gIjk0ZmI3MDg5MDE0M2UzYzY1NDlmMjY1Y2VlOTNlYzA2NGM4MGE4NGM0MmFkMGYyM2U4NWVlMWZkNjU0MGE4NzEiCi1TUkNfVVJJW3Rlc3R0YXIubWQ1c3VtXSA9ICJhZTNkMWViZTAwMGEzOTcyYWZhMTA0Y2E3ZjBlMWI0YSIKLVNSQ19VUklbdGVzdHRhci5zaGEyNTZzdW1dID0gIjk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzciCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0veG1sMi1jb25maWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uMyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QgZmVhdHVyZXNfY2hlY2sKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2xpYmdjYyBweXRob24zLWNvcmUgcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc2hlbGwgIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtdW5pdHRlc3QgJHtQTn0tcHl0aG9uJywgJycsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uMy1jb3JlJywgJycsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaWJtMTE0MSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS01IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1ldWMtanAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS1iYXNlLWVuLXVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1leHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi0jIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZWQgZm9yIFJQTSB1c2UKLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZGVidWcgLS13aXRob3V0LWxlZ2FjeSAtLXdpdGgtY2F0YWxvZyAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtZmV4Y2VwdGlvbnMiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi1FWFRSQV9PRUNPTkZfbGludXhzdGRiYXNlID0gIi0td2l0aC1kZWJ1ZyAtLXdpdGgtbGVnYWN5IC0td2l0aC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgIyBhdXRvbmFtZXIgd291bGQgY2FsbCB0aGlzIGxpYnhtbDItMiwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdAotICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKLSAgICAgICAgZC5zZXRWYXIoJ1BLR19saWJ4bWwyJywgJyR7TUxQUkVGSVh9bGlieG1sMicpCi19Ci0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sMkNvbmYuc2ggJHtsaWJkaXJ9L2NtYWtlLyoiCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgZXhlY3V0YWJsZXMgdGFrZSBsb25nZXIgdG8gcGFja2FnZTogdGhlc2Ugc2hvdWxkIG5vdCBiZSBleGVjdXRhYmxlCi0JZmluZCAke1N9L3htbGNvbmYvIC10eXBlIGYgLWV4ZWMgY2htb2QgLXgge30gXCsKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIGNoZWNrLWFtCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCWNwIC1yICR7U30veG1sY29uZiAke0R9JHtQVEVTVF9QQVRIfQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzfF5cKFBZVEhPTiA9IFwpLip8XDEke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnIFwKLQkJICAgICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbi90ZXN0cy9NYWtlZmlsZQotCQlncmVwIC1sclogJyMhL3Vzci9iaW4vcHl0aG9uJyAke0R9JHtQVEVTVF9QQVRIfS9weXRob24gfAotCQkJeGFyZ3MgLTAgc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnCi0JZmkKLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHZhcmlvdXMgTWFrZWZpbGVzCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAotCSAgICBzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtZSAnL15SRUxEQVRFL2QnIFwKLQkgICAge30gKwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCSMgRG9jcyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgbmF0aXZlIGNhc2UKLQlybSAke0R9JHtkYXRhZGlyfS9ndGstZG9jIC1yZgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzJkMDEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbC5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHJlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgorCitERVNDUklQVElPTiA9ICJTREsgdHlwZSB0YXJnZXQgZm9yIGJ1aWxkaW5nIGEgc3RhbmRhbG9uZSB0YXJiYWxsIGNvbnRhaW5pbmcgYnVpbGQtZXNzZW50aWFscywgcHl0aG9uMywgY2hycGF0aCwgXAorICAgICAgICAgICAgICAgbWFrZSwgZ2l0IGFuZCB0YXIuIFRoZSB0YXJiYWxsIGNhbiBiZSB1c2VkIHRvIHJ1biBiaXRiYWtlIGJ1aWxkcyBvbiBzeXN0ZW1zIHdoaWNoIGRvbid0IG1lZXQgdGhlIFwKKyAgICAgICAgICAgICAgIHVzdWFsIHZlcnNpb24gcmVxdWlyZW1lbnRzIGFuZCBoYXZlIGFuY2llbnQgY29tcGlsZXJzLiIKK1NVTU1BUlkgPSAiU3RhbmRhbG9uZSB0YXJiYWxsIGZvciBydW5uaW5nIGJ1aWxkcyBvbiBzeXN0ZW1zIHdpdGggaW5hZGVxdWF0ZSBzb2Z0d2FyZSBhbmQgYW5jaWVudCBjb21waWxlcnMiCitMSUNFTlNFID0gIk1JVCIKKworIyBBZGQgbmF0aXZlc2RrIGVxdWl2YWxlbnQgb2YgYnVpbGQtZXNzZW50aWFscworVE9PTENIQUlOX0hPU1RfVEFTSyArPSAiXAorICAgIG5hdGl2ZXNkay1hdXRvbWFrZSBcCisgICAgbmF0aXZlc2RrLWF1dG9jb25mIFwKKyAgICBuYXRpdmVzZGstYmludXRpbHMgXAorICAgIG5hdGl2ZXNkay1iaW51dGlscy1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWNwcCBcCisgICAgbmF0aXZlc2RrLWNwcC1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWdjYyBcCisgICAgbmF0aXZlc2RrLWdjYy1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWcrKyBcCisgICAgbmF0aXZlc2RrLWcrKy1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWdldHRleHQgXAorICAgIG5hdGl2ZXNkay1saWJhdG9taWMgXAorICAgIG5hdGl2ZXNkay1saWJnY2MgXAorICAgIG5hdGl2ZXNkay1saWJnb21wLWRldiBcCisgICAgbmF0aXZlc2RrLWxpYnN0ZGMrKyBcCisgICAgbmF0aXZlc2RrLWxpYnN0ZGMrKy1kZXYgXAorICAgIG5hdGl2ZXNkay1saWJzdGRjKystc3RhdGljZGV2IFwKKyAgICBuYXRpdmVzZGstbGlidG9vbCBcCisgICAgbmF0aXZlc2RrLXBrZ2NvbmZpZyBcCisgICAgbmF0aXZlc2RrLWdsaWJjLXV0aWxzIFwKKyAgICBuYXRpdmVzZGstbGlieGNyeXB0LWRldiBcCisgICAgIgorCitUT09MQ0hBSU5fT1VUUFVUTkFNRSA9ICIke1NES19BUkNIfS1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLSR7RElTVFJPX1ZFUlNJT059IgorCitTREtfVElUTEUgPSAiRXh0ZW5kZWQgQnVpbGQgdG9vbHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgppbmRleCA5YzVjMmNjLi5jNDk4MDJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKQEAgLTI1LDYgKzI1LDggQEAKICAgICBuYXRpdmVzZGstdGV4aW5mbyBcCiAgICAgbmF0aXZlc2RrLWxpYm5zcy1uaXMgXAogICAgIG5hdGl2ZXNkay1ycGNzdmMtcHJvdG8gXAorICAgIG5hdGl2ZXNkay1wYXRjaCBcCisgICAgbmF0aXZlc2RrLW10b29scyBcCiAgICAgIgogCiBNVUxUSU1BQ0hfVEFSR0VUX1NZUyA9ICIke1NES19BUkNIfS1uYXRpdmVzZGske1NES19WRU5ET1J9LSR7U0RLX09TfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9jdmUtdXBkYXRlLWRiLW5hdGl2ZS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9jdmUtdXBkYXRlLWRiLW5hdGl2ZS5iYgppbmRleCBkYjFkNjlhLi5mMjdhZGU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvY3ZlLXVwZGF0ZS1kYi1uYXRpdmUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2N2ZS11cGRhdGUtZGItbmF0aXZlLmJiCkBAIC0xMyw4ICsxMywxNSBAQAogZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiAKIHB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIpOgorICAgIGN2ZV9jaGVja19kYl9maWxlID0gZC5nZXRWYXIoIkNWRV9DSEVDS19EQl9GSUxFIikKKyAgICBpZiBub3QgY3ZlX2NoZWNrX2RiX2ZpbGU6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNraXAgcmVjaXBlIHdoZW4gY3ZlLWNoZWNrIGNsYXNzIGlzIG5vdCBsb2FkZWQuIikKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKCIlcy1qb3VybmFsIiAlIGN2ZV9jaGVja19kYl9maWxlICk6CisgICAgICAgIG9zLnJlbW92ZSgiJXMtam91cm5hbCIgJSBjdmVfY2hlY2tfZGJfZmlsZSkKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjdmVfY2hlY2tfZGJfZmlsZSk6CisgICAgICAgICAgICBvcy5yZW1vdmUoY3ZlX2NoZWNrX2RiX2ZpbGUpCiB9CiAKIHB5dGhvbiBkb19wb3B1bGF0ZV9jdmVfZGIoKSB7CkBAIC0yNyw3ICszNCw3IEBACiAKICAgICBiYi51dGlscy5leHBvcnRfcHJveGllcyhkKQogCi0gICAgQkFTRV9VUkwgPSAiaHR0cHM6Ly9udmQubmlzdC5nb3YvZmVlZHMvanNvbi9jdmUvMS4wL252ZGN2ZS0xLjAtIgorICAgIEJBU0VfVVJMID0gImh0dHBzOi8vbnZkLm5pc3QuZ292L2ZlZWRzL2pzb24vY3ZlLzEuMS9udmRjdmUtMS4xLSIKICAgICBZRUFSX1NUQVJUID0gMjAwMgogCiAgICAgZGJfZmlsZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIpCkBAIC01OSw3ICs2NiwxMyBAQAogICAgICAgICBqc29uX3VybCA9IHllYXJfdXJsICsgIi5qc29uLmd6IgogCiAgICAgICAgICMgUmV0cmlldmUgbWV0YSBsYXN0IG1vZGlmaWVkIGRhdGUKLSAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKG1ldGFfdXJsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4obWV0YV91cmwpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuVVJMRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN2ZV9mLndyaXRlKCdXYXJuaW5nOiBDVkUgZGIgdXBkYXRlIGVycm9yLCBVbmFibGUgdG8gZmV0Y2ggQ1ZFIGRhdGEuXG5cbicpCisgICAgICAgICAgICBiYi53YXJuKCJGYWlsZWQgdG8gZmV0Y2ggQ1ZFIGRhdGEgKCVzKSIgJSBlLnJlYXNvbikKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGlmIHJlc3BvbnNlOgogICAgICAgICAgICAgZm9yIGwgaW4gcmVzcG9uc2UucmVhZCgpLmRlY29kZSgidXRmLTgiKS5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICAgICAga2V5LCB2YWx1ZSA9IGwuc3BsaXQoIjoiLCAxKQpAQCAtMTIyLDkgKzEzNSwxMiBAQAogICAgICAgICAgICAgcHJvZHVjdCA9IGNwZTIzWzRdCiAgICAgICAgICAgICB2ZXJzaW9uID0gY3BlMjNbNV0KIAotICAgICAgICAgICAgaWYgdmVyc2lvbiAhPSAnKic6CisgICAgICAgICAgICBpZiB2ZXJzaW9uICE9ICcqJyBhbmQgdmVyc2lvbiAhPSAnLSc6CiAgICAgICAgICAgICAgICAgIyBWZXJzaW9uIGlzIGRlZmluZWQsIHRoaXMgaXMgYSAnPScgbWF0Y2gKICAgICAgICAgICAgICAgICB5aWVsZCBbY3ZlSWQsIHZlbmRvciwgcHJvZHVjdCwgdmVyc2lvbiwgJz0nLCAnJywgJyddCisgICAgICAgICAgICBlbGlmIHZlcnNpb24gPT0gJy0nOgorICAgICAgICAgICAgICAgICMgbm8gdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICB5aWVsZCBbY3ZlSWQsIHZlbmRvciwgcHJvZHVjdCwgdmVyc2lvbiwgJycsICcnLCAnJ10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBQYXJzZSBzdGFydCB2ZXJzaW9uLCBlbmQgdmVyc2lvbiBhbmQgb3BlcmF0b3JzCiAgICAgICAgICAgICAgICAgb3Bfc3RhcnQgPSAnJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMKaW5kZXggNGQ2NTM3MC4uYmVkZGUyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCkBAIC0xNiwxMSArMTYsMTYgQEAKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCiAKIFBSW3ZhcmRlcHNdICs9ICJEVU1NWVBST1ZJREVTIgorUFJbdmFyZGVwc10gKz0gIkRVTU1ZUFJPVklERVNfUEFDS0FHRVMiCisKK0RVTU1ZUFJPVklERVNfUEFDS0FHRVMgPz89ICIiCitEVU1NWVBST1ZJREVTX1BBQ0tBR0VTX01VTFRJTElCID0gIiR7QCcgJy5qb2luKFttdWx0aWxpYl9wa2dfZXh0ZW5kKGQsIHBrZykgZm9yIHBrZyBpbiBkLmdldFZhcignRFVNTVlQUk9WSURFU19QQUNLQUdFUycpLnNwbGl0KCldKX0iCitEVU1NWVBST1ZJREVTICs9ICIke0RVTU1ZUFJPVklERVNfUEFDS0FHRVNfTVVMVElMSUJ9IgogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKICAgICBwID0gZC5nZXRWYXIoIlBOIikKICAgICBkLmFwcGVuZFZhcigiUlBST1ZJREVTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKICAgICBkLmFwcGVuZFZhcigiUkNPTkZMSUNUU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTfSIpCi0gICAgZC5hcHBlbmRWYXIoIlJSRVBMQUNFU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTfSIpCisgICAgZC5hcHBlbmRWYXIoIlJSRVBMQUNFU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTX1BBQ0tBR0VTX01VTFRJTElCfSIpCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1leHRzZGstdG9vbGNoYWluLmJiCmluZGV4IDIzNWQ2ZWMuLjBkZjY4MWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZXh0c2RrLXRvb2xjaGFpbi5iYgpAQCAtMTYsNiArMTYsOSBAQAogU1NUQVRFVEFTS1MgKz0gImRvX2xvY2tlZF9zaWdzIgogZG9fbG9ja2VkX3NpZ3Nbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtMT0NLRURfU0lHU19JTkRJUn0iCiBkb19sb2NrZWRfc2lnc1tzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtTVEFHSU5HX0RJUn0vJHtQQUNLQUdFX0FSQ0h9LyR7UE59L2xvY2tlZC1zaWdzIgorIyBJZiBhIHRhc2toYXNoIGNoYW5nZXMgd2UgbmVlZCB0byB1c2UgdGhlIGxhdGVzdCBoYXNoIGNoYW5nZXMuIFdpdGggdW5paGFzaCB3ZSBtYXkgbm90IHJlYnVpbGQuCisjIGVTREsgd2hpY2ggdXNlcyB0aGlzIGlzIG5vc3RhbXAgYW55d2F5Citkb19sb2NrZWRfc2lnc1tub3N0YW1wXSA9ICIxIgogCiBweXRob24gZG9fbG9ja2VkX3NpZ3MoKSB7CiAgICAgaW1wb3J0IG9lLmNvcHlfYnVpbGRzeXN0ZW0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKaW5kZXggNmE4NzQ4YS4uY2ZhNDFjNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKQEAgLTEsNiArMSw2IEBACiBEVU1NWUFSQ0ggPSAiYnVpbGR0b29scy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCiAKLURVTU1ZUFJPVklERVMgPSAiXAorRFVNTVlQUk9WSURFU19QQUNLQUdFUyA9ICJcCiAgICAgbmF0aXZlc2RrLXBlcmwgXAogICAgIG5hdGl2ZXNkay1saWJ4bWwtcGFyc2VyLXBlcmwgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1ieXRlcyBcCkBAIC0xNSwxMiArMTUsMTggQEAKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1zdGF0IFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1pby1maWxlIFwKKyAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1wb3NpeCBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXRocmVhZC1xdWV1ZSBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXRocmVhZHMgXAorICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS13YXJuaW5ncyBcCisiCisKK0RVTU1ZUFJPVklERVMgPSAiXAogICAgIC91c3IvYmluL3BlcmwgXAogICAgICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgppbmRleCBiODkxZWZhLi4yOWY0ZGQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgpAQCAtMSwxMCArMSwxMyBAQAogRFVNTVlBUkNIID0gInNkay1wcm92aWRlcy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCiAKK0RVTU1ZUFJPVklERVNfUEFDS0FHRVMgPSAiXAorICAgIHBrZ2NvbmZpZyBcCisiCisKICMgQWRkIC9iaW4vc2g/CiBEVU1NWVBST1ZJREVTID0gIlwKICAgICAvYmluL2Jhc2ggXAogICAgIC91c3IvYmluL2VudiBcCi0gICAgcGtnY29uZmlnIFwKICAgICBsaWJHTC5zbygpKDY0Yml0KSBcCiAgICAgbGliR0wuc28gXAogIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgppbmRleCBhNDEyM2I3Li45OGM1YmNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgpAQCAtMTIsNiArMTIsNyBAQAogZGVsdGFzayBkb19jb25maWd1cmUKIGRlbHRhc2sgZG9fY29tcGlsZQogZGVsdGFzayBkb19pbnN0YWxsCitkZWx0YXNrIGRvX3BvcHVsYXRlX2xpYwogZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiAKIGRvX3BhY2thZ2VfaW5kZXhbbm9zdGFtcF0gPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKaW5kZXggODdiOGJmYS4uZTNiZWViNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKQEAgLTQ4LDcgKzQ4LDYgQEAKICIKIAogRFVNTVlQUk9WSURFUyA9ICJcCi0gICAgJHtAJyAnLmpvaW4oW211bHRpbGliX3BrZ19leHRlbmQoZCwgcGtnKSBmb3IgcGtnIGluIGQuZ2V0VmFyKCdEVU1NWVBST1ZJREVTX1BBQ0tBR0VTJykuc3BsaXQoKV0pfSBcCiAgICAgL2Jpbi9zaCBcCiAgICAgL2Jpbi9iYXNoIFwKICAgICAvdXNyL2Jpbi9lbnYgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIKaW5kZXggMDllYjQwOS4uOGFlYjk0MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiCkBAIC02LDcgKzYsNyBAQAogICAgICAgICAgICBwYXJ0ZWQtbmF0aXZlIHN5c2xpbnV4LW5hdGl2ZSBncHRmZGlzay1uYXRpdmUgZG9zZnN0b29scy1uYXRpdmUgXAogICAgICAgICAgICBtdG9vbHMtbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGdydWItZWZpLW5hdGl2ZSBjZHJ0b29scy1uYXRpdmUgXAogICAgICAgICAgICBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIHBzZXVkby1uYXRpdmUgXAotICAgICAgICAgICBlMmZzcHJvZ3MtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIFwKKyAgICAgICAgICAgZTJmc3Byb2dzLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSB0YXItbmF0aXZlXAogICAgICAgICAgICAiCiBERVBFTkRTX2FwcGVuZF94ODYgPSAiIHN5c2xpbnV4IGdydWItZWZpIHN5c3RlbWQtYm9vdCIKIERFUEVORFNfYXBwZW5kX3g4Ni02NCA9ICIgc3lzbGludXggZ3J1Yi1lZmkgc3lzdGVtZC1ib290IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsLzAwMDEtUmVtb3ZlLXVzaW5nLS5lbmQtZGlyZWN0aXZlLXdpdGgtY2xhbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvMDAwMS1SZW1vdmUtdXNpbmctLmVuZC1kaXJlY3RpdmUtd2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTc5Y2I1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsLzAwMDEtUmVtb3ZlLXVzaW5nLS5lbmQtZGlyZWN0aXZlLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBiNjczMmY2ODg0OGVjYzhmZjAxMDU0YmY3YWVhNzBhMjQxYzM3MTE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTAgQXByIDIwMjAgMTE6MjM6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHVzaW5nIC5lbmQgZGlyZWN0aXZlIHdpdGggY2xhbmcKKworQ2xhbmcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzbSBkaXJlY3RpdmUKK0ZpeGVzIElzc3VlICMxOQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2thbmlpbmkvbGlidWNvbnRleHQvcHVsbC8yMF0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBhcmNoL2NvbW1vbi9jb21tb24tZGVmcy5oIHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2FyY2gvY29tbW9uL2NvbW1vbi1kZWZzLmggYi9hcmNoL2NvbW1vbi9jb21tb24tZGVmcy5oCitpbmRleCBiZjJmYjhjLi42MTgxMTZiIDEwMDY0NAorLS0tIGEvYXJjaC9jb21tb24vY29tbW9uLWRlZnMuaAorKysrIGIvYXJjaC9jb21tb24vY29tbW9uLWRlZnMuaAorQEAgLTI4LDEwICsyOCwxMyBAQAorIAlFTlQoX19wcm9jKQkJCQkJXAorIF9fcHJvYzoJCQkJCQkJXAorIAlTRVRVUF9GUkFNRShfX3Byb2MpCistCisrI2lmZGVmIF9fY2xhbmdfXworKyNkZWZpbmUgRU5EKF9fcHJvYykKKysjZWxzZQorICNkZWZpbmUgRU5EKF9fcHJvYykJCQkJCVwKKyAJLmVuZAlfX3Byb2M7CQkJCQlcCisgCS5zaXplCV9fcHJvYywuLV9fcHJvYzsKKysjZW5kaWYKKyAKKyAjZGVmaW5lIEFMSUFTKF9fYWxpYXMsIF9fcmVhbCkJCQkJXAorIAkud2VhawlfX2FsaWFzOwkJCQlcCistLSAKKzIuMjYuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlidWNvbnRleHRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnVjb250ZXh0X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzk4OGYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnVjb250ZXh0X2dpdC5iYgpAQCAtMCwwICsxLDYzIEBACisjIENvcHlyaWdodCAoQykgMjAxOSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gInVjb250ZXh0IGltcGxlbWVudGF0aW9uIGZlYXR1cmluZyBnbGliYy1jb21wYXRpYmxlIEFCSSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rYW5paW5pL2xpYnVjb250ZXh0IgorTElDRU5TRSA9ICJJU0MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZWVkMDFmYTBlNjczYzc2ZjVhNTcxNTQzOGY2NWIxZCIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiIgorCitQViA9ICIwLjEwKyR7U1JDUFZ9IgorU1JDUkVWID0gIjE5ZmExYmJmYzI2ZWZiOTIxNDdiNWU4NWNjMGNhMDJhMGU4Mzc1NjEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2FuaWluaS9saWJ1Y29udGV4dCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIuKi1tdXNsLioiCisKK3ZhbGlkX2FyY2hzID0gIiBcCisgICAgeDg2IHg4Nl82NCAgXAorICAgIHBwYyBwcGM2NCAgIFwKKyAgICBtaXBzIG1pcHM2NCBcCisgICAgYXJtIGFhcmNoNjQgXAorICAgIHMzOTB4ICAgICAgIFwKKyIKKworZGVmIG1hcF9rZXJuZWxfYXJjaChhLCBkKToKKyAgICBpbXBvcnQgcmUKKworICAgIHZhbGlkX2FyY2hzID0gZC5nZXRWYXIoJ3ZhbGlkX2FyY2hzJykuc3BsaXQoKQorCisgICAgaWYgYSBpbiB2YWxpZF9hcmNoczogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKKyAgICBlbGlmIHJlLm1hdGNoKCcoaS44NnxhdGhsb24pJCcsIGEpOiAgICAgICAgICAgICByZXR1cm4gJ3g4NicKKyAgICBlbGlmIHJlLm1hdGNoKCd4ODYuNjQkJywgYSk6ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3g4Nl82NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhcm1lYiQnLCBhKTogICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FybScKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOiAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FhcmNoNjQnCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NF9iZSQnLCBhKTogICAgICAgICAgICAgICAgcmV0dXJuICdhYXJjaDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfaWxwMzIkJywgYSk6ICAgICAgICAgICAgIHJldHVybiAnYWFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlX2lscDMyJCcsIGEpOiAgICAgICAgICByZXR1cm4gJ2FhcmNoNjQnCisgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KSgzMnwpKHI2fCkoZWx8KSQnLCBhKTogcmV0dXJuICdtaXBzJworICAgIGVsaWYgcmUubWF0Y2goJ21pcHMoaXNhfCk2NChyNnwpKGVsfCkkJywgYSk6ICAgIHJldHVybiAnbWlwczY0JworICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKScsIGEpOiAgICAgICAgICAgICAgIHJldHVybiAncHBjJworICAgIGVsaWYgcmUubWF0Y2goJ3AocGM2NHxvd2VycGM2NCknLCBhKTogICAgICAgICAgIHJldHVybiAncHBjNjQnCisgICAgZWxpZiByZS5tYXRjaCgncmlzY3Y2NCQnLCBhKTogICAgICAgICAgICAgICAgICAgcmV0dXJuICdyaXNjdjY0JworICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBkLmdldFZhcigiVEFSR0VUX09TIikuc3RhcnRzd2l0aCgibGludXgiKToKKyAgICAgICAgICAgIHJldHVybiBhCisgICAgICAgIGJiLmVycm9yKCJjYW5ub3QgbWFwICclcycgdG8gYSBsaW51eCBrZXJuZWwgYXJjaGl0ZWN0dXJlIiAlIGEpCisKK2V4cG9ydCBBUkNIID0gIiR7QG1hcF9rZXJuZWxfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgorCitDRkxBR1MgKz0gIi1JYXJjaC8ke0FSQ0h9IC1JYXJjaC9jb21tb24iCisKK0VYVFJBX09FTUFLRSA9ICJDRkxBR1M9JyR7Q0ZMQUdTfScgTERGTEFHUz0nJHtMREZMQUdTfScgTElCRElSPScke2Jhc2VfbGliZGlyfSciCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSBBUkNIPSR7QVJDSH0KK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIEFSQ0g9IiR7QVJDSH0iIERFU1RESVI9IiR7RH0iIGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYwppbmRleCAwNjgzYmY4Li5iZGNlNDEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCkBAIC05LDcgKzksNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tdXNsLWxpYmMub3JnLyIKIExJQ0VOU0UgPSAiTUlUIgogU0VDVElPTiA9ICJsaWJzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kMGZlMmJlMTdiYzQ1ZmY0YTQyYWRlMWMxM2VkNjM0MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9Zjk1ZWU4NDhhMDhhZDI1M2MwNDcyM2RhMDBjZWRiMDEiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiAKQEAgLTI1LDMgKzI1LDcgQEAKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCiAKKyMgRW5hYmxlIG91dCBvZiB0cmVlIGJ1aWxkCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCisKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC8wMDAxLXJpc2N2LURlZmluZS1zaWdjb250ZXh0LWFnYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wvMDAwMS1yaXNjdi1EZWZpbmUtc2lnY29udGV4dC1hZ2Fpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNiMzI0ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC8wMDAxLXJpc2N2LURlZmluZS1zaWdjb250ZXh0LWFnYWluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotY29tbWl0IGEwOTkzZjhmMGYxNjE0MjNlY2RjYjc1NGYyODJmZmQyZmU0N2E3YjUKLUF1dGhvcjogUmljaCBGZWxrZXIgPGRhbGlhc0BhZXJpZmFsLmN4PgotRGF0ZTogICBXZWQgT2N0IDIgMDk6Mjg6MDMgMjAxOSAtMDQwMAotCi0gICAgcmVpbnRyb2R1Y2UgcmlzY3Y2NCBzdHJ1Y3Qgc2lnY29udGV4dAotICAgIAotICAgIGNvbW1pdCBhYjNlYjg5YThiODMzNTNjZGFhYjEyZWQwMTdhNjdhNzczMGY5MGU5IHJlbW92ZWQgaXQgYXMgcGFydCBvZgotICAgIGNvcnJlY3RpbmcgdGhlIG1jb250ZXh0X3QgZGVmaW5pdGlvbiwgYnV0IHRoZXJlIGlzIHN0aWxsIGNvZGUgdXNpbmcKLSAgICBzdHJ1Y3Qgc2lnY29udGV4dCBhbmQgZXhwZWN0aW5nIHRoZSBtZW1iZXIgbmFtZXMgcHJlc2VudCBpbiBpdCwgbW9zdAotICAgIG5vdGFibHkgbGliZ2NjX2VoLiBhbG1vc3QgYWxsIHN1Y2ggdXNhZ2UgaXMgaW5jb3JyZWN0LCBidXQgYnJpbmcgYmFjawotICAgIHN0cnVjdCBzaWdjb250ZXh0IGF0IGxlYXN0IGZvciBub3cgc28gYXMgbm90IHRvIGludHJvZHVjZSByZWdyZXNzaW9ucy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Y2NC9iaXRzL3NpZ25hbC5oIGIvYXJjaC9yaXNjdjY0L2JpdHMvc2lnbmFsLmgKLWluZGV4IDAzZmU0OGMxLi4yZmY0YmUzMCAxMDA2NDQKLS0tLSBhL2FyY2gvcmlzY3Y2NC9iaXRzL3NpZ25hbC5oCi0rKysgYi9hcmNoL3Jpc2N2NjQvYml0cy9zaWduYWwuaAotQEAgLTYsMTIgKzYsNiBAQAotICMgZGVmaW5lIFNJR1NUS1NaIDgxOTIKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgfHwgZGVmaW5lZChfQlNEX1NPVVJDRSkKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZ3JlZ190OwotLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnc2V0X3RbMzJdOwotLXR5cGVkZWYgdW5pb24gX19yaXNjdl9tY19mcF9zdGF0ZSBmcHJlZ3NldF90OwotLSNlbmRpZgotLQotIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3Jpc2N2X21jX2dwX3N0YXRlWzMyXTsKLSAKLSBzdHJ1Y3QgX19yaXNjdl9tY19mX2V4dF9zdGF0ZSB7Ci1AQCAtNDEsNiArMzUsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgbWNvbnRleHRfdCB7Ci0gCXVuaW9uIF9fcmlzY3ZfbWNfZnBfc3RhdGUgX19mcHJlZ3M7Ci0gfSBtY29udGV4dF90OwotIAotKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSB8fCBkZWZpbmVkKF9CU0RfU09VUkNFKQotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnX3Q7Ci0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIGdyZWdzZXRfdFszMl07Ci0rdHlwZWRlZiB1bmlvbiBfX3Jpc2N2X21jX2ZwX3N0YXRlIGZwcmVnc2V0X3Q7Ci0rc3RydWN0IHNpZ2NvbnRleHQgewotKwlncmVnc2V0X3QgZ3JlZ3M7Ci0rCWZwcmVnc2V0X3QgZnByZWdzOwotK307Ci0rI2VuZGlmCi0rCi0gc3RydWN0IHNpZ2FsdHN0YWNrIHsKLSAJdm9pZCAqc3Nfc3A7Ci0gCWludCBzc19mbGFnczsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgppbmRleCBhYWNmZjc5Li44MjM3OWZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCkBAIC00LDkgKzQsOSBAQAogcmVxdWlyZSBtdXNsLmluYwogaW5oZXJpdCBsaW51eGxvYWRlcgogCi1TUkNSRVYgPSAiMmMyNDc3ZGE5YTU1M2MwYjliMmZhMTgwNzNhNWRjZGJlNmQzOTVhZiIKK1NSQ1JFViA9ICIwNDBjMWQxNmI0NjhjNTBjMDRmYzk0ZWRmZjUyMWYxNjM3NzA4MzI4IgogCi1CQVNFVkVSID0gIjEuMS4yMyIKK0JBU0VWRVIgPSAiMS4yLjAiCiAKIFBWID0gIiR7QkFTRVZFUn0rZ2l0JHtTUkNQVn0iCiAKQEAgLTE1LDcgKzE1LDYgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lm11c2wtbGliYy5vcmcvbXVzbCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtZHluYW1pYy1saW5rZXItYS1yZWxhdGl2ZS1zeW1saW5rLXRvLWxpYmMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1sZHNvLVVzZS1zeXNsaWJkaXItYW5kLWxpYmRpci1hcy1kZWZhdWx0LXBhdGhlcy10by1sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmlzY3YtRGVmaW5lLXNpZ2NvbnRleHQtYWdhaW4ucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTMwLDYgKzI5LDcgQEAKICAgICAgICAgICAgbGlic3NwLW5vbnNoYXJlZCBcCiAgICAgICAgICAgIgogR0xJQkNfTERTTyA9ICIke0BnZXRfZ2xpYmNfbG9hZGVyKGQpfSIKK01VU0xfTERTT19BUkNIID0gIiR7QGdldF9tdXNsX2xvYWRlcl9hcmNoKGQpfSIKIAogZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCiAKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAtLWJpbmRpcj0ke2JpbmRpcn0gXAogICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCiAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0gXAotICAgIC0tc3lzbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAtLXN5c2xpYmRpcj0vbGliIFwKICIKIAogZG9fY29uZmlndXJlKCkgewpAQCAtNjIsMzIgKzYyLDI4IEBACiAKIGRvX2luc3RhbGwoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JyR7RH0nCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgIGVjaG8gIiR7YmFzZV9saWJkaXJ9IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xkLW11c2wtJHtNVVNMX0xEU09fQVJDSH0ucGF0aAorICAgICAgICBlY2hvICIke2xpYmRpcn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xkLW11c2wtJHtNVVNMX0xEU09fQVJDSH0ucGF0aAogCXJtIC1mICR7RH0ke2JpbmRpcn0vbGRkICR7RH0ke0dMSUJDX0xEU099CiAJbG5yICR7RH0ke2xpYmRpcn0vbGliYy5zbyAke0R9JHtiaW5kaXJ9L2xkZAogCWxuciAke0R9JHtsaWJkaXJ9L2xpYmMuc28gJHtEfSR7R0xJQkNfTERTT30KLQlmb3IgbCBpbiBjcnlwdCBkbCBtIHB0aHJlYWQgcmVzb2x2IHJ0IHV0aWwgeG5ldAotCWRvCi0JCWxuIC1zZiBsaWJjLnNvICR7RH0ke2xpYmRpcn0vbGliJGwuc28KLQlkb25lCi0JZm9yIGkgaW4gbGliYy5zby42IGxpYmNyeXB0LnNvLjEgbGliZGwuc28uMiBsaWJtLnNvLjYgbGlicHRocmVhZC5zby4wIGxpYnJlc29sdi5zby4yIGxpYnJ0LnNvLjEgbGlidXRpbC5zby4xOyBkbwotCQlsbiAtc2YgbGliYy5zbyAke0R9JHtsaWJkaXJ9LyRpCi0JZG9uZQogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tZ2xpYmMtY29tcGF0IgogCi1GSUxFU18ke1BOfS1nbGliYy1jb21wYXQgKz0gIlwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliYy5zby42ICR7bGliZGlyfS9saWJjcnlwdC5zby4xIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZGwuc28uMiAke2xpYmRpcn0vbGlibS5zby42IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHRocmVhZC5zby4wICR7bGliZGlyfS9saWJyZXNvbHYuc28uMiBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnJ0LnNvLjEgJHtsaWJkaXJ9L2xpYnV0aWwuc28uMSBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ19MRFNPfSBcCi0gICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0gKz0gIi9saWIvbGQtbXVzbC0ke01VU0xfTERTT19BUkNIfS5zby4xICR7c3lzY29uZmRpcn0vbGQtbXVzbC0ke01VU0xfTERTT19BUkNIfS5wYXRoIgorRklMRVNfJHtQTn0tZ2xpYmMtY29tcGF0ICs9ICIke0dMSUJDX0xEU099IgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJjLmEiCitGSUxFU18ke1BOfS1kZXYgPSsgIiR7bGliZGlyfS9saWJjcnlwdC5hICR7bGliZGlyfS9saWJkbC5hICR7bGliZGlyfS9saWJtLmEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHRocmVhZC5hICR7bGliZGlyfS9saWJyZXNvbHYuYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJydC5hICR7bGliZGlyfS9saWJ1dGlsLmEgJHtsaWJkaXJ9L2xpYnhuZXQuYSBcCisgICAgICAgICAgICAgICAgICAgIgogCiBSREVQRU5EU18ke1BOfS1kZXYgKz0gImxpbnV4LWxpYmMtaGVhZGVycy1kZXYgYnNkLWhlYWRlcnMtZGV2IGxpYnNzcC1ub25zaGFyZWQtc3RhdGljZGV2IgogUlBST1ZJREVTXyR7UE59LWRldiArPSAibGliYy1kZXYgdmlydHVhbC1saWJjLWRldiIKIFJQUk9WSURFU18ke1BOfSArPSAibGRkIGxpYnNlZ2ZhdWx0IHJ0bGQoR05VX0hBU0gpIgogCiBMRUFEX1NPTkFNRSA9ICJsaWJjLnNvIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ID0gInN0YXRpY2RldiIKK0lOU0FORV9TS0lQXyR7UE59ID0gImxpYmRpciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLW5jdXJzZXMtc2VsZWN0aXZlLWJhY2twb3J0LW9mLTIwMTkxMDEyLXBhdGNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtbmN1cnNlcy1zZWxlY3RpdmUtYmFja3BvcnQtb2YtMjAxOTEwMTItcGF0Y2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NzBjNGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtbmN1cnNlcy1zZWxlY3RpdmUtYmFja3BvcnQtb2YtMjAxOTEwMTItcGF0Y2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotRnJvbSAwNjRiNzdmMTczMzM3YWE3OTBmMWNlYzBkNzQxYmZiYzYxYTMzZDMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE4IE9jdCAyMDE5IDA5OjU3OjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5jdXJzZXM6IHNlbGVjdGl2ZSBiYWNrcG9ydCBvZiAyMDE5MTAxMiBwYXRjaAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL25jdXJzZXMvY29tbWl0LzI0MzkwOGIxZTNkODFdCi0KLUNvbnRlbnRzIG9mIHRoZSB1cHN0cmVhbSBwYXRjaCB0aGF0IGFyZSBub3QgYXBwbGllZCB0byBjb21wX2hhc2guYywgCi1wYXJzZV9lbnRyeS5jLCBvciBkdW1wX2VudHJ5LmMgaGF2ZSBiZWVuIG9taXR0ZWQuCi0KLUNWRTogQ1ZFLTIwMTktMTc1OTQKLUNWRTogQ1ZFLTIwMTktMTc1OTUKLQotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBuY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jICAgfCAxNCArKysrKysrKysrLS0tLQotIG5jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gcHJvZ3MvZHVtcF9lbnRyeS5jICAgICAgICAgIHwgIDcgKysrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jIGIvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYwotaW5kZXggMjFmMTY1Y2EuLmE2MmQzOGY5IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYwotKysrIGIvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYwotQEAgLTQ0LDcgKzQ0LDcgQEAKLSAjaW5jbHVkZSA8dGljLmg+Ci0gI2luY2x1ZGUgPGhhc2hzaXplLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IGNvbXBfaGFzaC5jLHYgMS40OSAyMDE5LzAzLzEwIDAwOjA2OjQ4IHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IGNvbXBfaGFzaC5jLHYgMS41MSAyMDE5LzEwLzEyIDE2OjMyOjEzIHRvbSBFeHAgJCIpCi0gCi0gLyoKLSAgKiBGaW5kcyB0aGUgZW50cnkgZm9yIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGhhc2ggdGFibGUgaWYgcHJlc2VudC4KLUBAIC02Myw3ICs2Myw5IEBAIF9uY19maW5kX2VudHJ5KGNvbnN0IGNoYXIgKnN0cmluZywKLSAKLSAgICAgaGFzaHZhbHVlID0gZGF0YS0+aGFzaF9vZihzdHJpbmcpOwotIAotLSAgICBpZiAoZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSsgICAgaWYgKGhhc2h2YWx1ZSA+PSAwCi0rCSYmICh1bnNpZ25lZCkgaGFzaHZhbHVlIDwgZGF0YS0+dGFibGVfc2l6ZQotKwkmJiBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotIAotIAlyZWFsX3RhYmxlID0gX25jX2dldF90YWJsZSh0ZXJtY2FwKTsKLSAJcHRyID0gcmVhbF90YWJsZSArIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXTsKLUBAIC05Niw3ICs5OCw5IEBAIF9uY19maW5kX3R5cGVfZW50cnkoY29uc3QgY2hhciAqc3RyaW5nLAotICAgICBjb25zdCBIYXNoRGF0YSAqZGF0YSA9IF9uY19nZXRfaGFzaF9pbmZvKHRlcm1jYXApOwotICAgICBpbnQgaGFzaHZhbHVlID0gZGF0YS0+aGFzaF9vZihzdHJpbmcpOwotIAotLSAgICBpZiAoZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSsgICAgaWYgKGhhc2h2YWx1ZSA+PSAwCi0rCSYmICh1bnNpZ25lZCkgaGFzaHZhbHVlIDwgZGF0YS0+dGFibGVfc2l6ZQotKwkmJiBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotIAljb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqY29uc3QgdGFibGUgPSBfbmNfZ2V0X3RhYmxlKHRlcm1jYXApOwotIAotIAlwdHIgPSB0YWJsZSArIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXTsKLUBAIC0xMjQsNyArMTI4LDkgQEAgX25jX2ZpbmRfdXNlcl9lbnRyeShjb25zdCBjaGFyICpzdHJpbmcpCi0gCi0gICAgIGhhc2h2YWx1ZSA9IGRhdGEtPmhhc2hfb2Yoc3RyaW5nKTsKLSAKLS0gICAgaWYgKGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7Ci0rICAgIGlmIChoYXNodmFsdWUgPj0gMAotKwkmJiAodW5zaWduZWQpIGhhc2h2YWx1ZSA8IGRhdGEtPnRhYmxlX3NpemUKLSsJJiYgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSAKLSAJcmVhbF90YWJsZSA9IF9uY19nZXRfdXNlcmRlZnNfdGFibGUoKTsKLSAJcHRyID0gcmVhbF90YWJsZSArIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXTsKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLWluZGV4IGY4Y2NhOGI1Li4wNjQzNzZjNSAxMDA2NDQKLS0tLSBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotKysrIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCi1AQCAtNDcsNyArNDcsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDx0aWMuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogcGFyc2VfZW50cnkuYyx2IDEuOTcgMjAxOS8wOC8wMyAyMzoxMDozOCB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS45OCAyMDE5LzEwLzEyIDAwOjUwOjMxIHRvbSBFeHAgJCIpCi0gCi0gI2lmZGVmIExJTlQKLSBzdGF0aWMgc2hvcnQgY29uc3QgcGFyYW1ldHJpemVkW10gPQotQEAgLTY1NCwxMiArNjU0LDEyIEBAIF9uY19jYXBjbXAoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqdCkKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1hcHBlbmRfYWNzMChzdHJpbmdfZGVzYyAqIGRzdCwgaW50IGNvZGUsIGludCBzcmMpCi0rYXBwZW5kX2FjczAoc3RyaW5nX2Rlc2MgKiBkc3QsIGludCBjb2RlLCBjaGFyICpzcmMsIHNpemVfdCBvZmYpCi0gewotLSAgICBpZiAoc3JjICE9IDApIHsKLSsgICAgaWYgKHNyYyAhPSAwICYmIG9mZiA8IHN0cmxlbihzcmMpKSB7Ci0gCWNoYXIgdGVtcFszXTsKLSAJdGVtcFswXSA9IChjaGFyKSBjb2RlOwotLQl0ZW1wWzFdID0gKGNoYXIpIHNyYzsKLSsJdGVtcFsxXSA9IHNyY1tvZmZdOwotIAl0ZW1wWzJdID0gMDsKLSAJX25jX3NhZmVfc3RyY2F0KGRzdCwgdGVtcCk7Ci0gICAgIH0KLUBAIC02NjksNyArNjY5LDcgQEAgc3RhdGljIHZvaWQKLSBhcHBlbmRfYWNzKHN0cmluZ19kZXNjICogZHN0LCBpbnQgY29kZSwgY2hhciAqc3JjKQotIHsKLSAgICAgaWYgKFZBTElEX1NUUklORyhzcmMpICYmIHN0cmxlbihzcmMpID09IDEpIHsKLS0JYXBwZW5kX2FjczAoZHN0LCBjb2RlLCAqc3JjKTsKLSsJYXBwZW5kX2FjczAoZHN0LCBjb2RlLCBzcmMsIDApOwotICAgICB9Ci0gfQotIAotQEAgLTEwMzgsMTcgKzEwMzgsMTcgQEAgcG9zdHByb2Nlc3NfdGVybWluZm8oVEVSTVRZUEUyICp0cCkKLSAJX25jX3N0cl9pbml0KCZyZXN1bHQsIGJ1ZjIsIHNpemVvZihidWYyKSk7Ci0gCV9uY19zYWZlX3N0cmNhdCgmcmVzdWx0LCBhY3NfY2hhcnMpOwotIAotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbCcsIGJveF9jaGFyc18xWzBdKTsJLyogQUNTX1VMQ09STkVSICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdxJywgYm94X2NoYXJzXzFbMV0pOwkvKiBBQ1NfSExJTkUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2snLCBib3hfY2hhcnNfMVsyXSk7CS8qIEFDU19VUkNPUk5FUiAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAneCcsIGJveF9jaGFyc18xWzNdKTsJLyogQUNTX1ZMSU5FICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdqJywgYm94X2NoYXJzXzFbNF0pOwkvKiBBQ1NfTFJDT1JORVIgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ20nLCBib3hfY2hhcnNfMVs1XSk7CS8qIEFDU19MTENPUk5FUiAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndycsIGJveF9jaGFyc18xWzZdKTsJLyogQUNTX1RURUUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3UnLCBib3hfY2hhcnNfMVs3XSk7CS8qIEFDU19SVEVFICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd2JywgYm94X2NoYXJzXzFbOF0pOwkvKiBBQ1NfQlRFRSAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndCcsIGJveF9jaGFyc18xWzldKTsJLyogQUNTX0xURUUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ24nLCBib3hfY2hhcnNfMVsxMF0pOwkvKiBBQ1NfUExVUyAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbCcsIGJveF9jaGFyc18xLCAwKTsJLyogQUNTX1VMQ09STkVSICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdxJywgYm94X2NoYXJzXzEsIDEpOwkvKiBBQ1NfSExJTkUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2snLCBib3hfY2hhcnNfMSwgMik7CS8qIEFDU19VUkNPUk5FUiAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAneCcsIGJveF9jaGFyc18xLCAzKTsJLyogQUNTX1ZMSU5FICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdqJywgYm94X2NoYXJzXzEsIDQpOwkvKiBBQ1NfTFJDT1JORVIgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ20nLCBib3hfY2hhcnNfMSwgNSk7CS8qIEFDU19MTENPUk5FUiAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndycsIGJveF9jaGFyc18xLCA2KTsJLyogQUNTX1RURUUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3UnLCBib3hfY2hhcnNfMSwgNyk7CS8qIEFDU19SVEVFICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd2JywgYm94X2NoYXJzXzEsIDgpOwkvKiBBQ1NfQlRFRSAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndCcsIGJveF9jaGFyc18xLCA5KTsJLyogQUNTX0xURUUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ24nLCBib3hfY2hhcnNfMSwgMTApOwkvKiBBQ1NfUExVUyAqLwotIAotIAlpZiAoYnVmMlswXSkgewotIAkgICAgYWNzX2NoYXJzID0gX25jX3NhdmVfc3RyKGJ1ZjIpOwotZGlmZiAtLWdpdCBhL3Byb2dzL2R1bXBfZW50cnkuYyBiL3Byb2dzL2R1bXBfZW50cnkuYwotaW5kZXggZDBlNDIwZWMuLjhhNDcwODRhIDEwMDY0NAotLS0tIGEvcHJvZ3MvZHVtcF9lbnRyeS5jCi0rKysgYi9wcm9ncy9kdW1wX2VudHJ5LmMKLUBAIC0zOSw3ICszOSw3IEBACi0gI2luY2x1ZGUgInRlcm1zb3J0LmMiCQkvKiB0aGlzIEMgZmlsZSBpcyBnZW5lcmF0ZWQgKi8KLSAjaW5jbHVkZSA8cGFyYW1ldHJpemVkLmg+CS8qIHNvIGlzIHRoaXMgKi8KLSAKLS1NT0RVTEVfSUQoIiRJZDogZHVtcF9lbnRyeS5jLHYgMS4xNzMgMjAxOS8wNS8xMSAyMTowMjoyNCB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBkdW1wX2VudHJ5LmMsdiAxLjE3NSAyMDE5LzEwLzEyIDE1OjU5OjA3IHRvbSBFeHAgJCIpCi0gCi0gI2RlZmluZSBESVNDQVJEKHN0cmluZykgc3RyaW5nID0gQUJTRU5UX1NUUklORwotICNkZWZpbmUgUFJJTlRGICh2b2lkKSBwcmludGYKLUBAIC0xMTM2LDcgKzExMzYsOCBAQCBmbXRfZW50cnkoVEVSTVRZUEUyICp0dGVybSwKLSAJCQkJKmQrKyA9ICdcXCc7Ci0gCQkJCSpkID0gJzonOwotIAkJCSAgICB9IGVsc2UgaWYgKCpkID09ICdcXCcpIHsKLS0JCQkJKisrZCA9ICpzKys7Ci0rCQkJCWlmICgoKisrZCA9ICpzKyspID09ICdcMCcpCi0rCQkJCSAgICBicmVhazsKLSAJCQkgICAgfQotIAkJCSAgICBkKys7Ci0gCQkJICAgICpkID0gJ1wwJzsKLUBAIC0xMzk2LDcgKzEzOTcsNyBAQCBvbmVfb25lX21hcHBpbmcoY29uc3QgY2hhciAqbWFwcGluZykKLSAKLSAgICAgaWYgKFZBTElEX1NUUklORyhtYXBwaW5nKSkgewotIAlpbnQgbiA9IDA7Ci0tCXdoaWxlIChtYXBwaW5nW25dICE9ICdcMCcpIHsKLSsJd2hpbGUgKG1hcHBpbmdbbl0gIT0gJ1wwJyAmJiBtYXBwaW5nW24gKyAxXSAhPSAnXDAnKSB7Ci0gCSAgICBpZiAoaXNMaW5lKG1hcHBpbmdbbl0pICYmCi0gCQltYXBwaW5nW25dICE9IG1hcHBpbmdbbiArIDFdKSB7Ci0gCQlyZXN1bHQgPSBGQUxTRTsKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYwppbmRleCA1ZjJjYzM1Li40MTU2YmY0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jCkBAIC0yLDcgKzIsNyBAQAogREVTQ1JJUFRJT04gPSAiU1ZyNCBhbmQgWFNJLUN1cnNlcyBjb21wYXRpYmxlIGN1cnNlcyBsaWJyYXJ5IGFuZCB0ZXJtaW5mbyB0b29scyBpbmNsdWRpbmcgdGljLCBpbmZvY21wLCBjYXB0b2luZm8uIFN1cHBvcnRzIGNvbG9yLCBtdWx0aXBsZSBoaWdobGlnaHRzLCBmb3Jtcy1kcmF3aW5nIGNoYXJhY3RlcnMsIGFuZCBhdXRvbWF0aWMgcmVjb2duaXRpb24gb2Yga2V5cGFkIGFuZCBmdW5jdGlvbi1rZXkgc2VxdWVuY2VzLiBFeHRlbnNpb25zIGluY2x1ZGUgcmVzaXphYmxlIHdpbmRvd3MgYW5kIG1vdXNlIHN1cHBvcnQgb24gYm90aCB4dGVybSBhbmQgTGludXggY29uc29sZSB1c2luZyB0aGUgZ3BtIGxpYnJhcnkuIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL25jdXJzZXMvbmN1cnNlcy5odG1sIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uY3Vyc2VzL2Jhc2UvdmVyc2lvbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWNiYzE4MGE4YzQ0Y2E2NDJlOTdjMzU0NTJmYWI1ZjY2IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbmN1cnNlcy9iYXNlL3ZlcnNpb24uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI3O21kNT01NTI2ZjJmM2EyOWVkYzk1NTM4YjM2OGE0NzcxZWRkYSIKIFNFQ1RJT04gPSAibGlicyIKIERFUEVORFMgPSAibmN1cnNlcy1uYXRpdmUiCiBERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCkBAIC04Nyw2ICs4Nyw3IEBACiAJICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCiAJCSR7RVhDT05GSUdfQVJHU30gXAogCSAgICAgICAgLS13aXRoLW1hbnBhZ2UtZm9ybWF0PW5vcm1hbCBcCisJICAgICAgICAtLXdpdGhvdXQtbWFucGFnZS1yZW5hbWVzIFwKIAkgICAgICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAogCSAgICAgICAgIiRAIiB8fCByZXR1cm4gMQogCWNkIC4uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjErMjAxOTA4MDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjErMjAxOTA4MDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MzhhMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4xKzIwMTkwODAzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBuY3Vyc2VzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10aWMtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbmN1cnNlcy1zZWxlY3RpdmUtYmFja3BvcnQtb2YtMjAxOTEwMTItcGF0Y2gucGF0Y2ggXAotIgotIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgotU1JDUkVWID0gIjNjOWIyNjc3Yzk2YzY0NTQ5Njk5NzMyMWJmMmZlNDY1YTVlN2UyMWYiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSAtLWNhY2hlLWZpbGU9JHtCfS9jb25maWcuY2FjaGUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjNlNjg1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgbmN1cnNlcy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCisgICAgICAgICAgICIKKyMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KK1NSQ1JFViA9ICJhNjY5MDEzY2Q1ZTlkNjQzNGU1MzAxMzQ4ZWE1MWJhZjMwNmM5M2M0IgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCisKKyMgVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2luZyBwYXRjaGxldmVsIHZlcnNpb25zIGxpa2UgNi4xKzIwMTgxMDEzCisjQ1ZFX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoIlBWIikuc3BsaXQoJysnKVswXX0uJHtAZC5nZXRWYXIoIlBWIikuc3BsaXQoJysnKVsxXX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZS9uZXRiYXNlLWFkZC1ycGNiaW5kLWFzLWFuLWFsaWFzLXRvLXN1bnJwYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlL25ldGJhc2UtYWRkLXJwY2JpbmQtYXMtYW4tYWxpYXMtdG8tc3VucnBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2JhMmY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlL25ldGJhc2UtYWRkLXJwY2JpbmQtYXMtYW4tYWxpYXMtdG8tc3VucnBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA1MmQ0NmM0ZDFmYmQ0Yzg4ZDY5YzJmY2Y3ODM3YjJmMmJhN2VmNmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLURhdGU6IFRodSwgMTIgSmFuIDIwMTcgMTY6NTA6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0YmFzZTogYWRkIHJwY2JpbmQgYXMgYW4gYWxpYXMgdG8gc3VucnBjCi0KLXRoZSBwYXRjaCBjb21lcyBmcm9tOgotaHR0cHM6Ly9idWdzLmFyY2hsaW51eC5vcmcvdGFzay8yMDI3MwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0KLS0tLQotIGV0Yy1ycGMgICAgICB8IDIgKy0KLSBldGMtc2VydmljZXMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V0Yy1ycGMgYi9ldGMtcnBjCi1pbmRleCAxYjMwNjI1Li45YTlhODFhIDEwMDY0NAotLS0tIGEvZXRjLXJwYwotKysrIGIvZXRjLXJwYwotQEAgLTEsNyArMSw3IEBACi0gIyBUaGlzIGZpbGUgY29udGFpbnMgdXNlciByZWFkYWJsZSBuYW1lcyB0aGF0IGNhbiBiZSB1c2VkIGluIHBsYWNlIG9mIHJwYwotICMgcHJvZ3JhbSBudW1iZXJzLgotIAotLXBvcnRtYXBwZXIJMTAwMDAwCXBvcnRtYXAgc3VucnBjCi0rcG9ydG1hcHBlcgkxMDAwMDAJcG9ydG1hcCBzdW5ycGMgcnBjYmluZAotIHJzdGF0ZAkJMTAwMDAxCXJzdGF0IHJzdGF0X3N2YyBydXAgcGVyZm1ldGVyCi0gcnVzZXJzZAkJMTAwMDAyCXJ1c2VycwotIG5mcwkJMTAwMDAzCW5mc3Byb2cKLWRpZmYgLS1naXQgYS9ldGMtc2VydmljZXMgYi9ldGMtc2VydmljZXMKLWluZGV4IGZhN2FlMjQuLjEwYmEyYmMgMTAwNjQ0Ci0tLS0gYS9ldGMtc2VydmljZXMKLSsrKyBiL2V0Yy1zZXJ2aWNlcwotQEAgLTUxLDggKzUxLDggQEAga2VyYmVyb3MJODgvdWRwCQlrZXJiZXJvczUga3JiNSBrZXJiZXJvcy1zZWMJIyBLZXJiZXJvcyB2NQotIGlzby10c2FwCTEwMi90Y3AJCXRzYXAJCSMgcGFydCBvZiBJU09ERQotIGFjci1uZW1hCTEwNC90Y3AJCWRpY29tCQkjIERpZ2l0YWwgSW1hZy4gJiBDb21tLiAzMDAKLSBwb3AzCQkxMTAvdGNwCQlwb3AtMwkJIyBQT1AgdmVyc2lvbiAzCi0tc3VucnBjCQkxMTEvdGNwCQlwb3J0bWFwcGVyCSMgUlBDIDQuMCBwb3J0bWFwcGVyCi0tc3VucnBjCQkxMTEvdWRwCQlwb3J0bWFwcGVyCi0rc3VucnBjCQkxMTEvdGNwCQlwb3J0bWFwcGVyIHJwY2JpbmQgIyBSUEMgNC4wIHBvcnRtYXBwZXIKLStzdW5ycGMJCTExMS91ZHAJCXBvcnRtYXBwZXIgcnBjYmluZAotIGF1dGgJCTExMy90Y3AJCWF1dGhlbnRpY2F0aW9uIHRhcCBpZGVudAotIHNmdHAJCTExNS90Y3AKLSBubnRwCQkxMTkvdGNwCQlyZWFkbmV3cyB1bnRwCSMgVVNFTkVUIE5ld3MgVHJhbnNmZXIgUHJvdG9jb2wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFhNDk3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV81LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkJhc2ljIFRDUC9JUCBuZXR3b3JraW5nIHN1cHBvcnQiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBpbmZyYXN0cnVjdHVyZSBmb3IgYmFzaWMgVENQL0lQIGJhc2VkIG5ldHdvcmtpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9uZXRiYXNlIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTNkZDYxOTJkMzA2ZjU4MmRlZTc2ODdkYTNkODc0OGFiIgotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXRiYXNlLWFkZC1ycGNiaW5kLWFzLWFuLWFsaWFzLXRvLXN1bnJwYy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdhZDE1NjI3MmM1YTQyZjQ5YzczMzg2ZmYzOWM4NjI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkOTNhMDk5ZGViMjg4NjliNzMwNmU5MTQ3MDBmYWZiZDI5M2I1NWJkYjVkZjA1YTVhYTZlZmZkMGFmNTkzMGMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi9uZXRiYXNlLyIKLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gMDY0NCBldGMtcnBjICR7RH0ke3N5c2NvbmZkaXJ9L3JwYwotCWluc3RhbGwgLW0gMDY0NCBldGMtcHJvdG9jb2xzICR7RH0ke3N5c2NvbmZkaXJ9L3Byb3RvY29scwotCWluc3RhbGwgLW0gMDY0NCBldGMtc2VydmljZXMgJHtEfSR7c3lzY29uZmRpcn0vc2VydmljZXMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzAwNDljCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2VfNi4xLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQmFzaWMgVENQL0lQIG5ldHdvcmtpbmcgc3VwcG9ydCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGZvciBiYXNpYyBUQ1AvSVAgYmFzZWQgbmV0d29ya2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL25ldGJhc2UiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9M2RkNjE5MmQzMDZmNTgyZGVlNzY4N2RhM2Q4NzQ4YWIiCitQRSA9ICIxIgorCitTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTU4NzFhM2E1YzgzOTA1NTdiODAzM2NmMTkzMTZhNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDg0ZDc0M2JkODRkNGQ5MzgwYmFjNGM3MWM1MWU1NzQwNmRjZTQ0ZjVhNjkyODliYjgyM2M5MDNlOWIwMzVkOCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGJhc2UvIgorZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXRjL3JwYyAke0R9JHtzeXNjb25mZGlyfS9ycGMKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9ldGMvcHJvdG9jb2xzICR7RH0ke3N5c2NvbmZkaXJ9L3Byb3RvY29scworCWluc3RhbGwgLW0gMDY0NCAke1N9L2V0Yy9zZXJ2aWNlcyAke0R9JHtzeXNjb25mZGlyfS9zZXJ2aWNlcworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zc18zLjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4xLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMy4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYwppbmRleCAyZjA1NTNiLi45NmUyMzBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMKQEAgLTMsMjEgKzMsMjAgQEAKIERFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBpbnRlbmRlZCBmb3IgdXNlIG9uIGVtYmVkZGVkIHN5c3RlbXMuIEl0IGlzIGEgY29uZ2xvbWVyYXRpb24gb2Ygc2V2ZXJhbCBsaWJyYXJ5IHBhcnRzLCBhbGwgdW5kZXIgZnJlZSBzb2Z0d2FyZSBsaWNlbnNlcyB0aGF0IG1ha2UgdGhlbSBlYXNpbHkgdXNhYmxlIG9uIGVtYmVkZGVkIHByb2R1Y3RzLiIKIFNFQ1RJT04gPSAibGlicyIKIAotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIEdQTHYzICYgTEdQTHYyICYgQlNELTItQ2xhdXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIEdQTHYzICYgTEdQTHYyICYgQlNELTItQ2xhdXNlICYgdGNsIgogTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAogCQlmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAogCQlmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCiAJCWZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotCQlmaWxlOi8vQ09QWUlORy5MSUJHTE9TUzttZDU9NzNmNWM5ODc3OWFlYTdkYmE0YTZjOTRhNzRhYjBhZTIgXAorCQlmaWxlOi8vQ09QWUlORy5MSUJHTE9TUzttZDU9NTRiNzc4ZDU4NTQ0M2NkN2ZiZmExYjQ3Y2JkNjNhODkgXAogCQlmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLQkJZmlsZTovL0NPUFlJTkcuTkVXTElCO21kNT0xMDBkNDcwYWY1NGUyZDFkNzlmYmQ4NDk4YTMyZmYyNiBcCisJCWZpbGU6Ly9DT1BZSU5HLk5FV0xJQjttZDU9YWMxN2M2ODc1MWFhZDdhNTI5OGNlM2YyNDkxMjEwNzAgXAogCQlmaWxlOi8vbmV3bGliL2xpYmMvcG9zaXgvQ09QWVJJR0hUO21kNT0xMDM0NjhmZjE5ODJiZTg0MGZkZjRlZTlmOGI1MWJiZiBcCiAJCWZpbGU6Ly9uZXdsaWIvbGliYy9zeXMvbGludXgvbGludXh0aHJlYWRzL0xJQ0VOU0U7bWQ1PTczNjQwMjA3ZmJjNzliMTk4YzdmZmQ0YWQ0ZDk3YWEwIFwKIAkJIgogCiBTUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvcHViL25ld2xpYi9uZXdsaWItJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImY4NDI2M2I3ZDUyNGRmOTJhOWM5ZmIzMGI3OWUwMTM0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiNGZhMWNjMjFlOTA2MDcxOTIwODMwMGE2MTQyMGU0MDg5ZDZkZTZlZjU5Y2Y1MzNiNTdmZTc0ODAxZDEwMmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThkZDllM2VhZWRmNTE5MzYwZDkyZDg0MjA1YzNkZWVmMGIzZmMyODY2ODVkMWM1NjJlMjQ1OTE0ZWY3MmM2NiIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIERFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIgpAQCAtNDIsNiArNDEsNyBAQAogCQktLXdpdGgtZ251LWFzIFwKIAkJLS13aXRoLWdudS1sZCBcCiAJCS0tZGlzYWJsZS1tdWx0aWxpYiBcCisJCS0tZGlzYWJsZS1uZXdsaWItc3VwcGxpZWQtc3lzY2FsbHMgXAogCQkiCiAKIGRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4zLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliXzMuMy4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlY2IyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDBhODM2MmNmYjlmMDA4NzBkNzA2ODc0NzU2NjViMTMxZGQ4MmM5NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDkgSnVuIDIwMTYgMDI6MjM6MDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIG92bWY6IHVwZGF0ZSBwYXRoIHRvIG5hdGl2ZSBCYXNlVG9vbHMKKworQmFzZVRvb2xzIGlzIGEgc2V0IG9mIHV0aWxpdGllcyB0byBidWlsZCBFREstYmFzZWQgZmlybXdhcmUuIFRoZXNlIHV0aWxpdGllcworYXJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBUaHVzLCB0aGV5IG5lZWQgdG8gYmUgYnVpbHQgbmF0aXZlbHkuCitXaGVuIGNyb3NzLWNvbXBpbGluZywgd2UgbmVlZCB0byBwcm92aWRlIGEgcGF0aCB0byB0aGUgbG9jYXRpb24gb2YgdGhlc2UKK3Rvb2xzLiBUaGUgQkJBS0VfRURLX1RPT0xTX1BBVEggc3RyaW5nIGlzIHVzZWQgYXMgYSBwYXR0ZXJuIHRvIGJlIHJlcGxhY2VkCit3aXRoIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBiZWZvcmUgYnVpbGRpbmcuCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBPdm1mUGtnL2J1aWxkLnNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9idWlsZC5zaCBiL092bWZQa2cvYnVpbGQuc2gKK2luZGV4IDkxYjE0NDJhZGUuLjE4NThkYWUzMWEgMTAwNzU1CistLS0gYS9Pdm1mUGtnL2J1aWxkLnNoCisrKysgYi9Pdm1mUGtnL2J1aWxkLnNoCitAQCAtMjQsNyArMjQsNyBAQCB0aGVuCisgIyB0aGlzIGFzc3VtZXMgc3ZuIHB1bGxzIGhhdmUgdGhlIHNhbWUgcm9vdCBkaXIKKyAjICBleHBvcnQgRURLX1RPT0xTX1BBVEg9YHB3ZGAvLi4vQmFzZVRvb2xzCisgIyBUaGlzIHZlcnNpb24gaXMgZm9yIHRoZSB0b29scyBzb3VyY2UgaW4gZWRrMgorLSAgZXhwb3J0IEVES19UT09MU19QQVRIPWBwd2RgL0Jhc2VUb29scworKyAgZXhwb3J0IEVES19UT09MU19QQVRIPUJCQUtFX0VES19UT09MU19QQVRIL0Jhc2VUb29scworICAgZWNobyAkRURLX1RPT0xTX1BBVEgKKyAgIHNvdXJjZSBlZGtzZXR1cC5zaCBCYXNlVG9vbHMKKyBlbHNlCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzN2VkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIGE4YmNlYWVjMWIxNmZmZmJmNjgxMGRmMDU1MDNkOGFlOTA5MmI3MzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBGcmksIDI2IEp1bCAyMDE5IDE3OjM0OjI2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBCYXNlVG9vbHM6IG1ha2VmaWxlOiBhZGp1c3QgdG8gYnVpbGQgaW4gdW5kZXIgYml0YmFrZQorCitQcmVwZW5kIHRoZSBidWlsZCBmbGFncyB3aXRoIHRob3NlIG9mIGJpdGJha2UuIFRoaXMgaXMgdG8gYnVpbGQKK3VzaW5nIHRoZSBiaXRiYWtlIG5hdGl2ZSBzeXNyb290IGluY2x1ZGUgYW5kIGxpYnJhcnkgZGlyZWN0b3JpZXMuCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpQGxpbnV4LmludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBCYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZSB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQoraW5kZXggNGU5YjM2ZDk4Yi4uZWIwM2VlMzNmYSAxMDA2NDQKKy0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCisrKysgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQorQEAgLTYyLDIzICs2MiwyMyBAQCAkKGVycm9yIEJhZCBIT1NUX0FSQ0gpCisgZW5kaWYNCisgDQorIElOQ0xVREUgPSAkKFRPT0xfSU5DTFVERSkgLUkgJChNQUtFUk9PVCkgLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9Db21tb24gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS8gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkIC1JICQoTUFLRVJPT1QpL0NvbW1vbi8gLUkgLi4gLUkgLiAkKEFSQ0hfSU5DTFVERSkNCistQlVJTERfQ1BQRkxBR1MgPSAkKElOQ0xVREUpDQorK0JVSUxEX0NQUEZMQUdTICs9ICQoSU5DTFVERSkNCisgDQorICMga2VlcCBFWFRSQV9PUFRGTEFHUyBsYXN0DQorIEJVSUxEX09QVEZMQUdTID0gLU8yICQoRVhUUkFfT1BURkxBR1MpDQorIA0KKyBpZmVxICgkKERBUldJTiksRGFyd2luKQ0KKyAjIGFzc3VtZSBjbGFuZyBvciBjbGFuZyBjb21wYXRpYmxlIGZsYWdzIG9uIE9TIFgNCistQlVJTERfQ0ZMQUdTID0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciBcDQorK0JVSUxEX0NGTEFHUyArPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIFwNCisgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXNlbGYtYXNzaWduIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWcNCisgZWxzZQ0KKy1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtZndyYXB2IFwNCisrQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1md3JhcHYgXA0KKyAtZm5vLWRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzIC1XYWxsIC1XZXJyb3IgXA0KKyAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc3RyaW5nb3AtdHJ1bmNhdGlvbiAtV25vLXJlc3RyaWN0IFwNCisgLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtZw0KKyBlbmRpZg0KKy1CVUlMRF9MRkxBR1MgPQ0KKy1CVUlMRF9DWFhGTEFHUyA9IC1Xbm8tdW51c2VkLXJlc3VsdA0KKytCVUlMRF9MRkxBR1MgPSAkKExERkxBR1MpDQorK0JVSUxEX0NYWEZMQUdTICs9IC1Xbm8tdW51c2VkLXJlc3VsdA0KKyANCisgaWZlcSAoJChIT1NUX0FSQ0gpLCBJQTMyKQ0KKyAjDQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRhZTVkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gOWU2MzJlM2Y5ZWRkMDk2MzJjYzg3N2RmZjZlYTU3NjA4Zjk3OWFhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IFRodSwgOSBKdW4gMjAxNiAwMjoyMzowMSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBvdm1mOiB1cGRhdGUgcGF0aCB0byBuYXRpdmUgQmFzZVRvb2xzCi0KLUJhc2VUb29scyBpcyBhIHNldCBvZiB1dGlsaXRpZXMgdG8gYnVpbGQgRURLLWJhc2VkIGZpcm13YXJlLiBUaGVzZSB1dGlsaXRpZXMKLWFyZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gVGh1cywgdGhleSBuZWVkIHRvIGJlIGJ1aWx0IG5hdGl2ZWx5LgotV2hlbiBjcm9zcy1jb21waWxpbmcsIHdlIG5lZWQgdG8gcHJvdmlkZSBhIHBhdGggdG8gdGhlIGxvY2F0aW9uIG9mIHRoZXNlCi10b29scy4gVGhlIEJCQUtFX0VES19UT09MU19QQVRIIHN0cmluZyBpcyB1c2VkIGFzIGEgcGF0dGVybiB0byBiZSByZXBsYWNlZAotd2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gYmVmb3JlIGJ1aWxkaW5nLgotCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIE92bWZQa2cvYnVpbGQuc2ggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9Pdm1mUGtnL2J1aWxkLnNoIGIvT3ZtZlBrZy9idWlsZC5zaAotaW5kZXggZWI1ZWI3My4uOTA1OGZjYSAxMDA3NTUKLS0tLSBhL092bWZQa2cvYnVpbGQuc2gKLSsrKyBiL092bWZQa2cvYnVpbGQuc2gKLUBAIC0zMCw3ICszMCw3IEBAIHRoZW4KLSAjIHRoaXMgYXNzdW1lcyBzdm4gcHVsbHMgaGF2ZSB0aGUgc2FtZSByb290IGRpcgotICMgIGV4cG9ydCBFREtfVE9PTFNfUEFUSD1gcHdkYC8uLi9CYXNlVG9vbHMKLSAjIFRoaXMgdmVyc2lvbiBpcyBmb3IgdGhlIHRvb2xzIHNvdXJjZSBpbiBlZGsyCi0tICBleHBvcnQgRURLX1RPT0xTX1BBVEg9YHB3ZGAvQmFzZVRvb2xzCi0rICBleHBvcnQgRURLX1RPT0xTX1BBVEg9QkJBS0VfRURLX1RPT0xTX1BBVEgvQmFzZVRvb2xzCi0gICBlY2hvICRFREtfVE9PTFNfUEFUSAotICAgc291cmNlIGVka3NldHVwLnNoIEJhc2VUb29scwotIGVsc2UKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcwYjBhYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gMjMyMDY1MGM2ZDM4MWI5MTRmZTkxYjJkZWRhYTU4NzAyNzlhOGJjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IEZyaSwgMjYgSnVsIDIwMTkgMTc6MzQ6MjYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gQmFzZVRvb2xzOiBtYWtlZmlsZTogYWRqdXN0IHRvIGJ1aWxkIGluIHVuZGVyIGJpdGJha2UKLQotUHJlcGVuZCB0aGUgYnVpbGQgZmxhZ3Mgd2l0aCB0aG9zZSBvZiBiaXRiYWtlLiBUaGlzIGlzIHRvIGJ1aWxkCi11c2luZyB0aGUgYml0YmFrZSBuYXRpdmUgc3lzcm9vdCBpbmNsdWRlIGFuZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLgotCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaUBsaW51eC5pbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIEJhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotKysrIGdpdC9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotQEAgLTYyLDIzICs2MiwyMyBAQCAkKGVycm9yIEJhZCBIT1NUX0FSQ0gpCi0gZW5kaWYNCi0gDQotIElOQ0xVREUgPSAkKFRPT0xfSU5DTFVERSkgLUkgJChNQUtFUk9PVCkgLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9Db21tb24gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS8gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkIC1JICQoTUFLRVJPT1QpL0NvbW1vbi8gLUkgLi4gLUkgLiAkKEFSQ0hfSU5DTFVERSkgDQotLUJVSUxEX0NQUEZMQUdTID0gJChJTkNMVURFKQ0KLStCVUlMRF9DUFBGTEFHUyArPSAkKElOQ0xVREUpDQotIA0KLSAjIGtlZXAgRVhUUkFfT1BURkxBR1MgbGFzdA0KLSBCVUlMRF9PUFRGTEFHUyA9IC1PMiAkKEVYVFJBX09QVEZMQUdTKQ0KLSANCi0gaWZlcSAoJChEQVJXSU4pLERhcndpbikNCi0gIyBhc3N1bWUgY2xhbmcgb3IgY2xhbmcgY29tcGF0aWJsZSBmbGFncyBvbiBPUyBYDQotLUJVSUxEX0NGTEFHUyA9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgXA0KLStCVUlMRF9DRkxBR1MgKz0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciBcDQotIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1zZWxmLWFzc2lnbiAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1nDQotIGVsc2UNCi0tQlVJTERfQ0ZMQUdTID0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZ3cmFwdiBcDQotK0JVSUxEX0NGTEFHUyArPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtZndyYXB2IFwNCi0gLWZuby1kZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyAtV2FsbCAtV2Vycm9yIFwNCi0gLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXN0cmluZ29wLXRydW5jYXRpb24gLVduby1yZXN0cmljdCBcDQotIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWcNCi0gZW5kaWYNCi0tQlVJTERfTEZMQUdTID0NCi0tQlVJTERfQ1hYRkxBR1MgPSAtV25vLXVudXNlZC1yZXN1bHQNCi0rQlVJTERfTEZMQUdTID0gJChMREZMQUdTKQ0KLStCVUlMRF9DWFhGTEFHUyArPSAtV25vLXVudXNlZC1yZXN1bHQNCi0gDQotIGlmZXEgKCQoSE9TVF9BUkNIKSwgSUEzMikNCi0gIw0KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMWU3ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNjBhNWY5NTNmNzQ3ZTFlOWUwNWE0MDE1N2I2NTFjYmE4ZWE1N2I5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDExIFNlcCAyMDE3IDAyOjIxOjU1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBvdm1mOiBlbmFibGUgbG9uZyBwYXRoIGZpbGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKK2luZGV4IGUxY2NlOTg1ZjcuLmQ2N2QwM2M3MGMgMTAwNjQ0CistLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCisrKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCitAQCAtMTQsNyArMTQsNyBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudAorICNpbmNsdWRlIDxhc3NlcnQuaD4NCisgI2RlZmluZSBQUklOVEVEX0dVSURfQlVGRkVSX1NJWkUgIDM3ICAvLyBpbmNsdWRpbmcgbnVsbC10ZXJtaW5hdGlvbg0KKyANCistI2RlZmluZSBNQVhfTE9OR19GSUxFX1BBVEggNTAwDQorKyNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDEwMjMNCisgDQorICNkZWZpbmUgTUFYX1VJTlQ2NCAoKFVJTlQ2NCkweEZGRkZGRkZGRkZGRkZGRkZVTEwpDQorICNkZWZpbmUgTUFYX1VJTlQzMiAoKFVJTlQzMikweEZGRkZGRkZGKQ0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1VcGRhdGUtdG8tbGF0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLVVwZGF0ZS10by1sYXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwYTM5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1VcGRhdGUtdG8tbGF0ZXN0LnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gOTRlZmYzMTZiMzFiNGQwMzQ4YWYyOGM3N2JlNWMwMGJjMDlmZThlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXZlIExhbmdhc2VrIDxzdGV2ZS5sYW5nYXNla0B1YnVudHUuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMTozOTozNiAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNV0gb3ZtZjogVXBkYXRlIHRvIGxhdGVzdAorCitEZXNjcmlwdGlvbjogcGFzcyAtZm5vLXN0YWNrLXByb3RlY3RvciB0byBhbGwgR0NDIHRvb2xjaGFpbnMKKyBUaGUgdXBzdHJlYW0gYnVpbGQgcnVsZXMgaW5leHBsaWNhYmx5IHBhc3MgLWZuby1zdGFjay1wcm90ZWN0b3Igb25seQorIHdoZW4gYnVpbGRpbmcgZm9yIGkzODYgYW5kIGFtZDY0LiAgQWRkIHRoaXMgZXNzZW50aWFsIGFyZ3VtZW50IHRvIHRoZQorIGdlbmVyaWMgcnVsZXMgZm9yIGdjYyA0LjQgYW5kIGxhdGVyLgorTGFzdC1VcGRhdGVkOiAyMDE2LTA0LTEyCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUgYi9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKK2luZGV4IGNhMGIxMjJkYmIuLmIwMDY2YzJhYjggMTAwNzU1CistLS0gYS9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKKysrKyBiL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorQEAgLTE5NDEsMTAgKzE5NDEsMTAgQEAgREVGSU5FIEdDQ19YNjRfUkNfRkxBR1MgICAgICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC14ODYtNjQgICAgICAgIC1CIGkzODYKKyBERUZJTkUgR0NDX0FSTV9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjMyLWxpdHRsZWFybSAgICAgLUIgYXJtICAgICAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCisgREVGSU5FIEdDQ19BQVJDSDY0X1JDX0ZMQUdTICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC1saXR0bGVhYXJjaDY0IC1CIGFhcmNoNjQgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQorIA0KKy1ERUZJTkUgR0NDNDhfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCisrREVGSU5FIEdDQzQ4X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtZm5vLXN0YWNrLXByb3RlY3RvciAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorIERFRklORSBHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjANCistREVGSU5FIEdDQzQ4X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtZm5vLXN0YWNrLXByb3RlY3RvciAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KKy1ERUZJTkUgR0NDNDhfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTY0IC1mbm8tc3RhY2stcHJvdGVjdG9yICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCisrREVGSU5FIEdDQzQ4X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KKytERUZJTkUgR0NDNDhfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTY0ICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCisgREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0FTTERMSU5LX0ZMQUdTID0gREVGKEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksUmVmZXJlbmNlQWNwaVRhYmxlIC11IFJlZmVyZW5jZUFjcGlUYWJsZQ0KKyBERUZJTkUgR0NDNDhfSUEzMl9YNjRfRExJTktfRkxBR1MgICAgPSBERUYoR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSwkKElNQUdFX0VOVFJZX1BPSU5UKSAtdSAkKElNQUdFX0VOVFJZX1BPSU5UKSAtV2wsLU1hcCwkKERFU1RfRElSX0RFQlVHKS8kKEJBU0VfTkFNRSkubWFwLC0td2hvbGUtYXJjaGl2ZQ0KKyBERUZJTkUgR0NDNDhfSUEzMl9ETElOSzJfRkxBR1MgICAgICAgPSAtV2wsLS1kZWZzeW09UEVDT0ZGX0hFQURFUl9TSVpFPTB4MjIwIERFRihHQ0NfRExJTksyX0ZMQUdTX0NPTU1PTikNCitAQCAtMTk1Myw3ICsxOTUzLDcgQEAgREVGSU5FIEdDQzQ4X1g2NF9ETElOSzJfRkxBR1MgICAgICAgID0gLVdsLC0tZGVmc3ltPVBFQ09GRl9IRUFERVJfU0laRT0weDIyOCBERUYKKyBERUZJTkUgR0NDNDhfQVNNX0ZMQUdTICAgICAgICAgICAgICAgPSBERUYoR0NDX0FTTV9GTEFHUykNCisgREVGSU5FIEdDQzQ4X0FSTV9BU01fRkxBR1MgICAgICAgICAgID0gJChBUkNIQVNNX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FTTV9GTEFHUykgLW1saXR0bGUtZW5kaWFuDQorIERFRklORSBHQ0M0OF9BQVJDSDY0X0FTTV9GTEFHUyAgICAgICA9ICQoQVJDSEFTTV9GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BU01fRkxBR1MpIC1tbGl0dGxlLWVuZGlhbg0KKy1ERUZJTkUgR0NDNDhfQVJNX0NDX0ZMQUdTICAgICAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BUk1fQ0NfRkxBR1MpIC1mc3RhY2stcHJvdGVjdG9yIC1td29yZC1yZWxvY2F0aW9ucw0KKytERUZJTkUgR0NDNDhfQVJNX0NDX0ZMQUdTICAgICAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BUk1fQ0NfRkxBR1MpIC1td29yZC1yZWxvY2F0aW9ucw0KKyBERUZJTkUgR0NDNDhfQVJNX0NDX1hJUEZMQUdTICAgICAgICAgPSBERUYoR0NDX0FSTV9DQ19YSVBGTEFHUykNCisgREVGSU5FIEdDQzQ4X0FBUkNINjRfQ0NfRkxBR1MgICAgICAgID0gJChBUkNIQ0NfRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIC1tY21vZGVsPWxhcmdlIERFRihHQ0NfQUFSQ0g2NF9DQ19GTEFHUykNCisgREVGSU5FIEdDQzQ4X0FBUkNINjRfQ0NfWElQRkxBR1MgICAgID0gREVGKEdDQ19BQVJDSDY0X0NDX1hJUEZMQUdTKQ0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTU0ZmJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1Gcm9tIDAzMmZjNmIxZjc2OTFiZDUzN2ZkMmE2YmQxMzgyMWZjZjNjNDVlNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMSBTZXAgMjAxNyAwMjoyMTo1NSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBvdm1mOiBlbmFibGUgbG9uZyBwYXRoIGZpbGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmggYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCi1pbmRleCAyMDQxYjg5ZTJkLi44MTE2YWEyZTM1IDEwMDY0NAotLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAotKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAotQEAgLTIyICsyMiBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELgotLSNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDUwMA0KLSsjZGVmaW5lIE1BWF9MT05HX0ZJTEVfUEFUSCAxMDIzDQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvVmZyQ29tcGlsZS1pbmNyZWFzZS1wYXRoLWxlbmd0aC1saW1pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL1ZmckNvbXBpbGUtaW5jcmVhc2UtcGF0aC1sZW5ndGgtbGltaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMTJkOGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvVmZyQ29tcGlsZS1pbmNyZWFzZS1wYXRoLWxlbmd0aC1saW1pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYzc3MjJkMTBjN2JjZjZiZTBhZGNmNTRhYmIxZDQwNjU5OWRkNzkxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLURhdGU6IEZyaSwgMjQgRmViIDIwMTcgMDE6NDA6MDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVmZyQ29tcGlsZTogaW5jcmVhc2UgcGF0aCBsZW5ndGggbGltaXQKLQotVGhlIFZmckNvbXBpbGUgdG9vbCBoYXMgYSBoYXJkLWNvZGVkIG1heGltdW0gbGVuZ3RoIGZvciBwYXRoIG5hbWVzCi13aGljaCB0dXJuZWQgb3V0IHRvIGJlIHRvbyBzbWFsbCBieSBhcm91bmQgMjAgY2hhcmFjdGVycyBpbiB0aGUgWW9jdG8KLWF1dG9idWlsZGVyIHNldHVwLiBJbmNyZWFzaW5nIHRoZSBtYXhpbXVtIGJ5IGEgZmFjdG9yIG9mIDQgaXMKLXJlbGF0aXZlbHkgZWFzeSBhbmQgbWFrZXMgdGhlIHByb2JsZW0gbGVzcyBsaWtlbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvRWZpVmZyLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9FZmlWZnIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL0VmaVZmci5oCi1pbmRleCBkMTg3OTAyLi45YWQ0YTdiIDEwMDY0NAotLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvRWZpVmZyLmgKLSsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL0VmaVZmci5oCi1AQCAtMTksNyArMTksNyBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELgotICNpbmNsdWRlICJDb21tb24vVWVmaUludGVybmFsRm9ybVJlcHJlc2VudGF0aW9uLmgiDQotICNpbmNsdWRlICJDb21tb24vTWRlTW9kdWxlSGlpLmgiDQotIA0KLS0jZGVmaW5lIE1BWF9QQVRIICAgICAgICAgICAgICAgICAyNTUNCi0rI2RlZmluZSBNQVhfUEFUSCAgICAgICAgICAgICAgICAgMTAyMw0KLSAjZGVmaW5lIE1BWF9WRlJfTElORV9MRU4gICAgICAgICA0MDk2DQotIA0KLSAjZGVmaW5lIEVGSV9JRlJfTUFYX0xFTkdUSCAgICAgICAweEZGDQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI2NTM0OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotQXV0aG9yOiBTdGV2ZSBMYW5nYXNlayA8c3RldmUubGFuZ2FzZWtAdWJ1bnR1LmNvbT4KLURlc2NyaXB0aW9uOiBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIHRvIGFsbCBHQ0MgdG9vbGNoYWlucwotIFRoZSB1cHN0cmVhbSBidWlsZCBydWxlcyBpbmV4cGxpY2FibHkgcGFzcyAtZm5vLXN0YWNrLXByb3RlY3RvciBvbmx5Ci0gd2hlbiBidWlsZGluZyBmb3IgaTM4NiBhbmQgYW1kNjQuICBBZGQgdGhpcyBlc3NlbnRpYWwgYXJndW1lbnQgdG8gdGhlCi0gZ2VuZXJpYyBydWxlcyBmb3IgZ2NjIDQuNCBhbmQgbGF0ZXIuCi1MYXN0LVVwZGF0ZWQ6IDIwMTYtMDQtMTIKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdpdC9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKLSsrKyBnaXQvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCi1AQCAtMTczNiwxMCArMTczNiwxMCBAQCBERUZJTkUgR0NDX1g2NF9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjY0LXg4Ni02NCAgICAgICAgLUIgaTM4NgotIERFRklORSBHQ0NfQVJNX1JDX0ZMQUdTICAgICAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmMzItbGl0dGxlYXJtICAgICAtQiBhcm0gICAgIC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KLSBERUZJTkUgR0NDX0FBUkNINjRfUkNfRkxBR1MgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjY0LWxpdHRsZWFhcmNoNjQgLUIgYWFyY2g2NCAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCi0gDQotLURFRklORSBHQ0M0OF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KLStERUZJTkUgR0NDNDhfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCi0gREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHgyMA0KLS1ERUZJTkUgR0NDNDhfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQotLURFRklORSBHQ0M0OF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tNjQgLWZuby1zdGFjay1wcm90ZWN0b3IgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KLStERUZJTkUgR0NDNDhfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQotK0RFRklORSBHQ0M0OF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tNjQgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KLSBERUZJTkUgR0NDNDhfSUEzMl9YNjRfQVNMRExJTktfRkxBR1MgPSBERUYoR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSxSZWZlcmVuY2VBY3BpVGFibGUgLXUgUmVmZXJlbmNlQWNwaVRhYmxlDQotIERFRklORSBHQ0M0OF9JQTMyX1g2NF9ETElOS19GTEFHUyAgICA9IERFRihHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LCQoSU1BR0VfRU5UUllfUE9JTlQpIC11ICQoSU1BR0VfRU5UUllfUE9JTlQpIC1XbCwtTWFwLCQoREVTVF9ESVJfREVCVUcpLyQoQkFTRV9OQU1FKS5tYXAsLS13aG9sZS1hcmNoaXZlDQotIERFRklORSBHQ0M0OF9JQTMyX0RMSU5LMl9GTEFHUyAgICAgICA9IC1XbCwtLWRlZnN5bT1QRUNPRkZfSEVBREVSX1NJWkU9MHgyMjAgREVGKEdDQ19ETElOSzJfRkxBR1NfQ09NTU9OKQ0KLUBAIC0xNzQ4LDcgKzE3NDgsNyBAQCBERUZJTkUgR0NDNDhfWDY0X0RMSU5LMl9GTEFHUyAgICAgICAgPSAtV2wsLS1kZWZzeW09UEVDT0ZGX0hFQURFUl9TSVpFPTB4MjI4IERFRgotIERFRklORSBHQ0M0OF9BU01fRkxBR1MgICAgICAgICAgICAgICA9IERFRihHQ0NfQVNNX0ZMQUdTKQ0KLSBERUZJTkUgR0NDNDhfQVJNX0FTTV9GTEFHUyAgICAgICAgICAgPSAkKEFSQ0hBU01fRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVNNX0ZMQUdTKSAtbWxpdHRsZS1lbmRpYW4NCi0gREVGSU5FIEdDQzQ4X0FBUkNINjRfQVNNX0ZMQUdTICAgICAgID0gJChBUkNIQVNNX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FTTV9GTEFHUykgLW1saXR0bGUtZW5kaWFuDQotLURFRklORSBHQ0M0OF9BUk1fQ0NfRkxBR1MgICAgICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FSTV9DQ19GTEFHUykgLWZzdGFjay1wcm90ZWN0b3IgLW13b3JkLXJlbG9jYXRpb25zDQotK0RFRklORSBHQ0M0OF9BUk1fQ0NfRkxBR1MgICAgICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FSTV9DQ19GTEFHUykgLW13b3JkLXJlbG9jYXRpb25zDQotIERFRklORSBHQ0M0OF9BUk1fQ0NfWElQRkxBR1MgICAgICAgICA9IERFRihHQ0NfQVJNX0NDX1hJUEZMQUdTKQ0KLSBERUZJTkUgR0NDNDhfQUFSQ0g2NF9DQ19GTEFHUyAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgLW1jbW9kZWw9bGFyZ2UgREVGKEdDQ19BQVJDSDY0X0NDX0ZMQUdTKQ0KLSBERUZJTkUgR0NDNDhfQUFSQ0g2NF9DQ19YSVBGTEFHUyAgICAgPSBERUYoR0NDX0FBUkNINjRfQ0NfWElQRkxBR1MpDQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCmluZGV4IGZmMmIyYTUuLjk2NjdmYTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKQEAgLTEzLDE0ICsxMywxNCBAQAogUEFDS0FHRUNPTkZJR1tzZWN1cmVib290XSA9ICIsLCwiCiAKIFNSQ19VUkkgPSAiZ2l0c206Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLmdpdDticmFuY2g9bWFzdGVyO3Byb3RvY29sPWdpdCBcCi0JZmlsZTovLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoIFwKLQlmaWxlOi8vMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggXAotCWZpbGU6Ly8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoIFwKLQlmaWxlOi8vbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtb3ZtZi1VcGRhdGUtdG8tbGF0ZXN0LnBhdGNoIFwKICAgICAgICAgIgogCi1QViA9ICJlZGsyLXN0YWJsZTIwMTkwNSIKLVNSQ1JFVj0iMjBkMmU1YTEyNWUzNGZjODUwMTAyNjYxM2E3MTU0OWIyYTFhM2U1NCIKK1BWID0gImVkazItc3RhYmxlMjAxOTExIgorU1JDUkVWID0gImJkODViZjU0YzI2ODIwNGM3YTY5OGE5NmYzY2NkOTZjZDc3OTUyY2QiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5lZGsyLXN0YWJsZS4qKSIKIAogaW5oZXJpdCBkZXBsb3kKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCmluZGV4IDg4NTRlYzQuLjAzZmE1MjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgpAQCAtMTYsNyArMTYsNiBAQAogICAgIGNvcmV1dGlscyBcCiAgICAgY2NhY2hlIFwKICAgICBkaWZmdXRpbHMgXAotICAgIGludGx0b29sIFwKICAgICBwZXJsLW1vZHVsZS1yZSBcCiAgICAgcGVybC1tb2R1bGUtdGV4dC13cmFwIFwKICAgICBmaW5kdXRpbHMgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgppbmRleCAzZmQ0MjNjLi5hYzE4MGI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgpAQCAtMTAsNyArMTAsNyBAQAogCiBpbmhlcml0IHBhY2thZ2Vncm91cAogCi1QUk9GSUxFX1RPT0xTX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnc3lzcHJvZicsICcnLCBkKX0iCitQUk9GSUxFX1RPT0xTX1ggPSAiIgogIyBzeXNwcm9mIGRvZXNuJ3Qgc3VwcG9ydCBhYXJjaDY0IGFuZCBuaW9zMgogUFJPRklMRV9UT09MU19YX2FhcmNoNjQgPSAiIgogUFJPRklMRV9UT09MU19YX25pb3MyID0gIiIKQEAgLTQ2LDYgKzQ2LDcgQEAKIExUVE5HTU9EVUxFU19hcmMgPSAiIgogCiBCQUJFTFRSQUNFID0gImJhYmVsdHJhY2UiCitCQUJFTFRSQUNFMiA9ICJiYWJlbHRyYWNlMiIKIAogIyB2YWxncmluZCBkb2VzIG5vdCB3b3JrIG9uIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMvYXJjaGl0ZWN0dXJlcwogCkBAIC02OSw2ICs3MCw3IEBACiAgICAgJHtMVFROR1RPT0xTfSBcCiAgICAgJHtMVFROR01PRFVMRVN9IFwKICAgICAke0JBQkVMVFJBQ0V9IFwKKyAgICAke0JBQkVMVFJBQ0UyfSBcCiAgICAgJHtTWVNURU1UQVB9IFwKICAgICAke1ZBTEdSSU5EfSBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiCmluZGV4IDVhZmI0OTAuLjlhNTJiMDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKQEAgLTMsOSArMywxMCBAQAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAgZ29hcmNoCiAKIFJERVBFTkRTXyR7UE59ID0gIiBcCisgICAgZ28gXAogICAgIGdvLXJ1bnRpbWUgXAogICAgIGdvLXJ1bnRpbWUtZGV2IFwKICAgICBnby1ydW50aW1lLXN0YXRpY2RldiBcCiAiCiAKLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hcmlzY3Y2NCkuKiIKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hcmlzY3YzMikuKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCmluZGV4IDBhYWIyM2UuLjlhNzBiMTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgpAQCAtNzUsNyArNzUsNiBAQAogICAgIGcrKy1zeW1saW5rcyBcCiAgICAgZ2NjIFwKICAgICBnY2Mtc3ltbGlua3MgXAotICAgIGludGx0b29sIFwKICAgICBsZGQgXAogICAgIGxlc3MgXAogICAgIGxpYnN0ZGMrKyBcCkBAIC0xMDksNyArMTA4LDYgQEAKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLWV4dGVuZGVkID0gIlwKICAgICBiemlwMiBcCi0gICAgY2hrY29uZmlnIFwKICAgICBjaHJwYXRoIFwKICAgICBjcGlvIFwKICAgICBjdXJsIFwKQEAgLTE1Myw4ICsxNTEsNiBAQAogICAgIHBlcmwtbWlzYyBcCiAgICAgcGVybC1tb2R1bGVzIFwKICAgICBwZXJsLXBvZCBcCi0gICAgcHl0aG9uIFwKLSAgICBweXRob24tbW9kdWxlcyBcCiAgICAgcHl0aG9uMyBcCiAgICAgcHl0aG9uMy1tb2R1bGVzIFwKICAgICBweXRob24zLWdpdCBcCkBAIC0xNjgsNyArMTY0LDYgQEAKICAgICBzeXNzdGF0IFwKICAgICB0YXIgXAogICAgIHRjbCBcCi0gICAgdGV4aTJodG1sIFwKICAgICB0ZXhpbmZvIFwKICAgICB1bnppcCBcCiAgICAgdXNidXRpbHMgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQKaW5kZXggNGJlZTg2Ni4uZjU4ZTA0MyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0CkBAIC0yMywxMCArMjMsMTAgQEAKICAgICAgICAgZXNhYwogZG9uZQogCi1leHBvcnQgVE1QRElSPS9tbnQvLnBzcGxhc2gKLVsgLWQgJFRNUERJUiBdIHx8IG1rZGlyIC1wICRUTVBESVIKLWlmICEgbW91bnRwb2ludCAtcSAkVE1QRElSOyB0aGVuCi0JbW91bnQgdG1wZnMgLXQgdG1wZnMgJFRNUERJUiAtbyxzaXplPTQwaworZXhwb3J0IFBTUExBU0hfRklGT19ESVI9L21udC8ucHNwbGFzaAorWyAtZCAkUFNQTEFTSF9GSUZPX0RJUiBdIHx8IG1rZGlyIC1wICRQU1BMQVNIX0ZJRk9fRElSCitpZiAhIG1vdW50cG9pbnQgLXEgJFBTUExBU0hfRklGT19ESVI7IHRoZW4KKwltb3VudCB0bXBmcyAtdCB0bXBmcyAkUFNQTEFTSF9GSUZPX0RJUiAtbyxzaXplPTQwawogZmkKIAogcm90YXRpb249MApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtc3RhcnQuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjMmJiMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UKQEAgLTAsMCArMSwxMiBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1TdGFydCBwc3BsYXNoIGJvb3Qgc3BsYXNoIHNjcmVlbgorRGVmYXVsdERlcGVuZGVuY2llcz1ubworUmVxdWlyZXNNb3VudHNGb3I9L3J1bgorCitbU2VydmljZV0KK1R5cGU9bm90aWZ5CitFeGVjU3RhcnQ9L3Vzci9iaW4vcHNwbGFzaAorUmVtYWluQWZ0ZXJFeGl0PXllcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyMjA3ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN5c3RlbWQuc2VydmljZQpAQCAtMCwwICsxLDEzIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVN0YXJ0IHBzcGxhc2gtc3lzdGVtZCBwcm9ncmVzcyBjb21tdW5pY2F0aW9uIGhlbHBlcgorRGVmYXVsdERlcGVuZGVuY2llcz1ubworQWZ0ZXI9cHNwbGFzaC1zdGFydC5zZXJ2aWNlCitSZXF1aXJlcz1wc3BsYXNoLXN0YXJ0LnNlcnZpY2UKK1JlcXVpcmVzTW91bnRzRm9yPS9ydW4KKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9L3Vzci9iaW4vcHNwbGFzaC1zeXN0ZW1kCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYgppbmRleCA1NjczNGMxLi4yMmM3MWYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCkBAIC0zLDE0ICszLDE3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wc3BsYXNoIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wc3BsYXNoLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNjttZDU9ODQwZmIyMzU2YjEwYTg1YmVkNzhkZDA5ZGM3NzQ1YzYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wc3BsYXNoLmg7YmVnaW5saW5lPTE7ZW5kbGluZT04O21kNT04ZjIzMmMxZTk1OTI5ZWFjYWIzN2YwMDkwMDU4MDIyNCIKK0RFUEVORFMgPSAiZ2RrLXBpeGJ1Zi1uYXRpdmUiCiAKLVNSQ1JFViA9ICIyMDE1ZjcwNzNlOThkZDk1NjJkYjA5MzZhMjU0YWY1ZWY1NjM1NmNmIgorU1JDUkVWID0gIjBhOTAyZjdjZDg3NWNjZjAxODQ1NjQ1MWJlMzY5ZjA1ZmE1NWY5NjIiCiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiBQUiA9ICJyMTUiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IFwKICAgICAgICAgICAgZmlsZTovL3BzcGxhc2gtaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UgXAogICAgICAgICAgICAke1NQTEFTSF9JTUFHRVN9IgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCkBAIC0yMSw3ICsyNCw2IEBACiAgICAgc3BsYXNoZmlsZXMgPSBkLmdldFZhcignU1BMQVNIX0lNQUdFUycpLnNwbGl0KCkKICAgICBwa2dzID0gW10KICAgICBsb2NhbHBhdGhzID0gW10KLSAgICBoYXNwbmcgPSBGYWxzZQogICAgIGZvciB1cmkgaW4gc3BsYXNoZmlsZXM6CiAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goW3VyaV0sIGQpCiAgICAgICAgIGZsb2NhbCA9IG9zLnBhdGguYmFzZW5hbWUoZmV0Y2hlci5sb2NhbHBhdGgodXJpKSkKQEAgLTM5LDE3ICs0MSwxMiBAQAogICAgICAgICAgICAgYmIuZmF0YWwoIlRoZSBvdXRwdXQgbmFtZSAnJXMnIGRlcml2ZWQgZnJvbSB0aGUgVVJJICVzIGlzIG5vdCB2YWxpZCwgcGxlYXNlIHNwZWNpZnkgdGhlIG91dHN1ZmZpeCBwYXJhbWV0ZXIiICUgKG91dG5hbWUsIHVyaSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwa2dzLmFwcGVuZChvdXRuYW1lKQotICAgICAgICBpZiBmbG9jYWwuZW5kc3dpdGgoIi5wbmciKToKLSAgICAgICAgICAgIGhhc3BuZyA9IFRydWUKICAgICAgICAgbG9jYWxwYXRocy5hcHBlbmQoZmxvY2FsKQogCiAgICAgIyBTZXQgdGhlc2Ugc28gdGhhdCB3ZSBoYXZlIGxlc3Mgd29yayB0byBkbyBpbiBkb19jb21waWxlIGFuZCBkb19pbnN0YWxsX2FwcGVuZAogICAgIGQuc2V0VmFyKCJTUExBU0hfSU5TVEFMTCIsICIgIi5qb2luKHBrZ3MpKQogICAgIGQuc2V0VmFyKCJTUExBU0hfTE9DQUxQQVRIUyIsICIgIi5qb2luKGxvY2FscGF0aHMpKQogCi0gICAgaWYgaGFzcG5nOgotICAgICAgICBkLmFwcGVuZFZhcigiREVQRU5EUyIsICIgZ2RrLXBpeGJ1Zi1uYXRpdmUiKQotCiAgICAgZC5wcmVwZW5kVmFyKCJQQUNLQUdFUyIsICIlcyAiICUgKCIgIi5qb2luKHBrZ3MpKSkKICAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpIG9yICcnCiAgICAgcG4gPSBkLmdldFZhcignUE4nKSBvciAnJwpAQCAtNjYsNyArNjMsMTEgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogQUxURVJOQVRJVkVfTElOS19OQU1FW3BzcGxhc2hdID0gIiR7YmluZGlyfS9wc3BsYXNoIgpAQCAtNzgsNyArNzksNyBAQAogICAgICMgQnVpbGQgYSBzZXBhcmF0ZSBleGVjdXRhYmxlIGZvciBlYWNoIHNwbGFzaCBpbWFnZQogICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCiAgICAgY29udmVydHNjcmlwdCA9ICIlcy9tYWtlLWltYWdlLWhlYWRlci5zaCIgJSBkLmdldFZhcignUycpCi0gICAgZGVzdGZpbGUgPSAiJXMvcHNwbGFzaC1wb2t5LWltZy5oIiAlIGQuZ2V0VmFyKCdTJykKKyAgICBkZXN0ZmlsZSA9ICIlcy9wc3BsYXNoLXBva3ktaW1nLmgiICUgZC5nZXRWYXIoJ0InKQogICAgIGxvY2FsZmlsZXMgPSBkLmdldFZhcignU1BMQVNIX0xPQ0FMUEFUSFMnKS5zcGxpdCgpCiAgICAgb3V0cHV0ZmlsZXMgPSBkLmdldFZhcignU1BMQVNIX0lOU1RBTEwnKS5zcGxpdCgpCiAgICAgZm9yIGxvY2FsZmlsZSwgb3V0cHV0ZmlsZSBpbiB6aXAobG9jYWxmaWxlcywgb3V0cHV0ZmlsZXMpOgpAQCAtOTcsOCArOTgsMTcgQEAKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcHNwbGFzaC1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wc3BsYXNoLnNoCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wc3BsYXNoLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3BzcGxhc2guc2gKKwlmaQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3BzcGxhc2gtc3RhcnQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9wc3BsYXNoLXN5c3RlbWQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlmaQorCiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJZm9yIGkgaW4gJHtTUExBU0hfSU5TVEFMTH0gOyBkbwogCQlpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmluZGlyfS8kaQpAQCAtMTA2LDE1ICsxMTYsOCBAQAogCXJtIC1mICR7RH0ke2JpbmRpcn0vcHNwbGFzaAogfQogCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtQTn0nLCcnLGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzdGVtZCcsICdwc3BsYXNoLXN0YXJ0LnNlcnZpY2UgcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UnLCAnJywgZCl9IgorCiBJTklUU0NSSVBUX05BTUUgPSAicHNwbGFzaC5zaCIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAgUyAuIHN0b3AgMjAgMCAxIDYgLiIKLQotUEFDS0FHRV9XUklURV9ERVBTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCQlpZiBbIC1uICIkRCIgXTsgdGhlbgotCQkJT1BUUz0iLS1yb290PSREIgotCQlmaQotCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBwc3BsYXNoLnNlcnZpY2UKLQlmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYwppbmRleCAwN2Y1NGE3Li4wNTJlMmQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYwpAQCAtNDQsNyArNDQsMTMgQEAKIAogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2lucHV0cmMiCiAKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiaGlzdG9yeS4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hpc3RvcnkuM10gPSAiJHttYW5kaXJ9L21hbjMvaGlzdG9yeS4zIgorCiAjIE9wZW5TdXNlIGluamVjdHMgdmVyc2lvbnMgaW50byBsaWJyZWFkbGluZSBsZWFkaW5nIHRvIGNvbmZpY2l0cyBiZXR3ZWVuIG91ciBuYXRpdmUgb25lIGFuZCB0aGVpcnMKICMgc2VlIHRoZWlyIHNwZWMgZmlsZSBmb3Igd2hlcmUgdGhpcyBpcyBpbmplY3RlZC4gRXh0cmEgdmVyc2lvbmluZyBpcyBoYXJtbGVzcyBzbyB3ZSBqdXN0IGRvIHRoZSBzYW1lLgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmwtbmF0aXZlLm1hcCIKLUxERkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JHtXT1JLRElSfS9ybC1uYXRpdmUubWFwIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0xERkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JHtXT1JLRElSfS9ybC1uYXRpdmUubWFwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yNDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1YWJjMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgotCi1yZXF1aXJlIGNvbmYvaW1hZ2UtdWVmaS5jb25mCi0KLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgotCi0jIE5PVEU6IFRoZXNlIHRocmVlIHBhdGNoZXMgYXJlIGluIHRoZW9yeSBub3QgbmVlZGVkLCBidXQgd2UgaGF2ZW4ndAotIyAgICAgICBmaWd1cmVkIG91dCBob3cgdG8gY29ycmVjdGx5IHBhc3MgZWZpLWNjIHBhcmFtZXRlciBpZiBpdCdzIGFuIGFycmF5LgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtUmV2ZXJ0LW1lc29uLXVzZS1hbi1hcnJheS1vcHRpb24tZm9yLWVmaS1jYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtbWVzb24tcHJpbnQtRUZJLUNDLWNvbmZpZ3VyYXRpb24tbmljZWx5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tQWRkLURlZmktb2JqY29weS1vcHRpb24tdG8tc3BlY2lmeS1vYmpjb3B5LnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ2V0dGV4dAotaW5oZXJpdCBkZXBsb3kKLQotRUZJX0NDID89ICIke0NDfSIKLUVYVFJBX09FTUVTT04gKz0gIi1EZWZpPXRydWUgXAotICAgICAgICAgICAgICAgICAgLURnbnUtZWZpPXRydWUgXAotICAgICAgICAgICAgICAgICAgLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmkgXAotICAgICAgICAgICAgICAgICAgLURlZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAtRG1hbj1mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1jYz0nJHtFRklfQ0N9JyBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1sZD0nJHtMRH0nIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLW9iamNvcHk9JyR7T0JKQ09QWX0nIFwKLSAgICAgICAgICAgICAgICAgICIKLQotIyBpbnN0YWxsIHRvIHRoZSBpbWFnZSBhcyBib290Ki5lZmkgaWYgaXRzIHRoZSBFRklfUFJPVklERVIsCi0jIG90aGVyd2lzZSBpbnN0YWxsIGFzIHRoZSBmdWxsIG5hbWUuCi0jIFRoaXMgYWxsb3dzIG11bHRpcGxlIGJvb3Rsb2FkZXJzIHRvIGNvZXhpc3QgaW4gYSBzaW5nbGUgaW1hZ2UuCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIGltcG9ydCByZQotICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCi0gICAgcHJlZml4ID0gIiIgaWYgZC5nZXRWYXIoJ0VGSV9QUk9WSURFUicpID09ICJzeXN0ZW1kLWJvb3QiIGVsc2UgInN5c3RlbWQtIgotICAgIHN5c3RlbWRpbWFnZSA9IHByZWZpeCArIGQuZ2V0VmFyKCJFRklfQk9PVF9JTUFHRSIpCi0gICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRSIsIHN5c3RlbWRpbWFnZSkKLSAgICBwcmVmaXggPSAic3lzdGVtZC0iIGlmIHByZWZpeCA9PSAiIiBlbHNlICIiCi0gICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVgiLCBwcmVmaXgpCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7RUZJX0ZJTEVTX1BBVEh9LyR7U1lTVEVNRF9CT09UX0lNQUdFfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInZpcnR1YWwvc3lzdGVtZC1ib290Y29uZiIKLQotIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKLUNPTVBBVElCTEVfSE9TVF94ODYteDMyID0gIm51bGwiCi0KLWRvX2NvbXBpbGUoKSB7Ci0JU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJpYTMyIgotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KLQkJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJ4NjQiCi0JZmkKLQotCW5pbmphIHNyYy9ib290L2VmaS8ke1NZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVh9JHtTWVNURU1EX0JPT1RfSU1BR0V9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtFRklfRklMRVNfUEFUSH0KLQlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7RH0ke0VGSV9GSUxFU19QQVRIfS8ke1NZU1RFTURfQk9PVF9JTUFHRX0KLX0KLQotZG9fZGVwbG95ICgpIHsKLQlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7REVQTE9ZRElSfQotfQotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjQ1LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0NS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MmM2MzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0NS41LmJiCkBAIC0wLDAgKzEsNzAgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgorCityZXF1aXJlIGNvbmYvaW1hZ2UtdWVmaS5jb25mCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0Citpbmhlcml0IGRlcGxveQorCitMREZMQUdTX3ByZXBlbmQgPSAiJHtAICIgIi5qb2luKGQuZ2V0VmFyKCdMRCcpLnNwbGl0KClbMTpdKX0gIgorCitkb193cml0ZV9jb25maWdbdmFyZGVwc10gKz0gIkNDIE9CSkNPUFkiCitkb193cml0ZV9jb25maWdfYXBwZW5kKCkgeworICAgIGNhdCA+JHtXT1JLRElSfS9tZXNvbi0ke1BOfS5jcm9zcyA8PEVPRgorW2JpbmFyaWVzXQorZWZpX2NjID0gJHtAbWVzb25fYXJyYXkoJ0NDJywgZCl9CitvYmpjb3B5ID0gJHtAbWVzb25fYXJyYXkoJ09CSkNPUFknLCBkKX0KK0VPRgorfQorCitFWFRSQV9PRU1FU09OICs9ICItRGVmaT10cnVlIFwKKyAgICAgICAgICAgICAgICAgIC1EZ251LWVmaT10cnVlIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1sZD0ke0AgZC5nZXRWYXIoJ0xEJykuc3BsaXQoKVswXX0gXAorICAgICAgICAgICAgICAgICAgLURtYW49ZmFsc2UgXAorICAgICAgICAgICAgICAgICAgLS1jcm9zcy1maWxlICR7V09SS0RJUn0vbWVzb24tJHtQTn0uY3Jvc3MgXAorICAgICAgICAgICAgICAgICAgIgorCisjIGluc3RhbGwgdG8gdGhlIGltYWdlIGFzIGJvb3QqLmVmaSBpZiBpdHMgdGhlIEVGSV9QUk9WSURFUiwKKyMgb3RoZXJ3aXNlIGluc3RhbGwgYXMgdGhlIGZ1bGwgbmFtZS4KKyMgVGhpcyBhbGxvd3MgbXVsdGlwbGUgYm9vdGxvYWRlcnMgdG8gY29leGlzdCBpbiBhIHNpbmdsZSBpbWFnZS4KK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgaW1wb3J0IHJlCisgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKKyAgICBwcmVmaXggPSAiIiBpZiBkLmdldFZhcignRUZJX1BST1ZJREVSJykgPT0gInN5c3RlbWQtYm9vdCIgZWxzZSAic3lzdGVtZC0iCisgICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgZC5nZXRWYXIoIkVGSV9CT09UX0lNQUdFIikKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFIiwgc3lzdGVtZGltYWdlKQorICAgIHByZWZpeCA9ICJzeXN0ZW1kLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWCIsIHByZWZpeCkKK30KKworRklMRVNfJHtQTn0gPSAiJHtFRklfRklMRVNfUEFUSH0vJHtTWVNURU1EX0JPT1RfSU1BR0V9IgorCitSREVQRU5EU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgorCisjIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX3g4Ni14MzIgPSAibnVsbCIKKworZG9fY29tcGlsZSgpIHsKKwlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKKwlmaQorCisJbmluamEgc3JjL2Jvb3QvZWZpLyR7U1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWH0ke1NZU1RFTURfQk9PVF9JTUFHRX0KK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke0VGSV9GSUxFU19QQVRIfQorCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtEfSR7RUZJX0ZJTEVTX1BBVEh9LyR7U1lTVEVNRF9CT09UX0lNQUdFfQorfQorCitkb19kZXBsb3kgKCkgeworCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Cit9CithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCmluZGV4IGZhYTQyOGIuLjM2MWRjMWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb21wYXQtdW5pdHMuYmIKQEAgLTEwLDYgKzEwLDggQEAKIAogaW5oZXJpdCBmZWF0dXJlc19jaGVjawogCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbmZfMjQzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZl8yNDUuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZl8yNDMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbmZfMjQ1LjUuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsCmluZGV4IGViYWM4NjMuLjk5MGRlMWEgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bApAQCAtMTcyLDcgKzE3Miw3IEBACiAgICAgZGVmIF9wYXRoX2Zvcl91bml0KHNlbGYsIHVuaXQpOgogICAgICAgICBmb3IgbG9jYXRpb24gaW4gbG9jYXRpb25zOgogICAgICAgICAgICAgcGF0aCA9IHNlbGYucm9vdCAvIGxvY2F0aW9uIC8gInN5c3RlbSIgLyB1bml0Ci0gICAgICAgICAgICBpZiBwYXRoLmV4aXN0cygpOgorICAgICAgICAgICAgaWYgcGF0aC5leGlzdHMoKSBvciBwYXRoLmlzX3N5bWxpbmsoKToKICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aAogCiAgICAgICAgIHJhaXNlIFN5c3RlbWRVbml0Tm90Rm91bmRFcnJvcihzZWxmLnJvb3QsIHVuaXQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKaW5kZXggN2YzYTU5Yy4uMGY4MjU4MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwpAQCAtMTQsMTAgKzE0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIAotU1JDUkVWID0gImVmYjUzNmQwY2JlMmU1OGY4MGU1MDFkMTk5OTk5MjhjNzVlMDhmNmEiCi1TUkNCUkFOQ0ggPSAidjI0My1zdGFibGUiCitTUkNSRVYgPSAiOWE1MDZiN2U5MjkxZDk5N2E5MjBhZjlhYzI5OWU3YjgzNDM2ODExOSIKK1NSQ0JSQU5DSCA9ICJ2MjQ1LXN0YWJsZSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQtc3RhYmxlLmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUFZfYXBwZW5kID0gIiske1NSQ1BWfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJlMTliYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDUyNzQxM2VjMjQzNTY0YTg5ZmZhYWQ2MzY4ZDQ0NmRlNDQ0MTU5NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDIxOjQyOjIzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0byBydW4gZWZpX2NjIGFuZCBlZmlfbGQgY29ycmVjdGx5IHdoZW4gY3Jvc3MtY29tcGlsaW5nCi0KLVdoZW4gY3Jvc3MtY29tcGlsaW5nLCBlZmlfY2MgYW5kIGVmaV9sZCBtYXkgdGFrZSB0aGUgZm9ybSBvZgotJ3h4eC1nY2MgLS1zeXNyb290PXh4eCcsIGFuZCB0aGlzIHdvdWxkIGNhdXNlIHJ1bl9jb21tYW5kIGFuZAotdGhlIGFsaWtlIGZhaWwuCi0KLUZpeCB0byBzcGxpdCB0aGVtIHRvIG1ha2UgY29tbWFuZHMgcnVuIGNvcnJlY3RseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9ib290L2VmaS9tZXNvbi5idWlsZCB8IDE2ICsrKysrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotaW5kZXggOTkyYTNiYTRjLi45ZjllYzQ5MTEgMTAwNjQ0Ci0tLS0gYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLSsrKyBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotQEAgLTE1Nyw3ICsxNTcsNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgb19maWxlID0gY3VzdG9tX3RhcmdldChmaWxlICsgJy5vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogZmlsZSArICcubycsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtlZmlfY2MsICctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2NjLnNwbGl0KCkgKyBbJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBpbGVfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRfZmlsZXMgOiBlZmlfaGVhZGVycykKLSAgICAgICAgICAgICAgICAgaWYgKGNvbW1vbl9zb3VyY2VzICsgc3lzdGVtZF9ib290X3NvdXJjZXMpLmNvbnRhaW5zKGZpbGUpCi1AQCAtMTY4LDcgKzE2OCwxNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgIGVuZGZvcmVhY2gKLSAKLS0gICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChlZmlfY2MsICctcHJpbnQtbGliZ2NjLWZpbGUtbmFtZScpLnN0ZG91dCgpLnN0cmlwKCkKLSsgICAgICAgIGZpbmRfbGliZ2NjX2NtZF9hbGwgPSBlZmlfY2MgKyAnIC1wcmludC1saWJnY2MtZmlsZS1uYW1lJwotKyAgICAgICAgZmluZF9saWJnY2NfY21kID0gZmluZF9saWJnY2NfY21kX2FsbC5zcGxpdCgpWzBdCi0rICAgICAgICBmaW5kX2xpYmdjY19hcmdzID0gW10KLSsgICAgICAgIGNtZF9hcmdzX2FsbCA9IGZpbmRfbGliZ2NjX2NtZF9hbGwuc3BsaXQoKQotKyAgICAgICAgZm9yZWFjaCBhcmcgOiBjbWRfYXJnc19hbGwKLSsgICAgICAgICAgICAgICAgaWYgYXJnICE9IGZpbmRfbGliZ2NjX2NtZAotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfbGliZ2NjX2FyZ3MgKz0gYXJnCi0rICAgICAgICAgICAgICAgIGVuZGlmCi0rICAgICAgICBlbmRmb3JlYWNoCi0rCi0rICAgICAgICBsaWJnY2NfZmlsZV9uYW1lID0gcnVuX2NvbW1hbmQoZmluZF9saWJnY2NfY21kLCBmaW5kX2xpYmdjY19hcmdzKS5zdGRvdXQoKS5zdHJpcCgpCi0gICAgICAgICBzeXN0ZW1kX2Jvb3RfZWZpX25hbWUgPSAnc3lzdGVtZC1ib290QDBALmVmaScuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKLSAgICAgICAgIHN0dWJfZWZpX25hbWUgPSAnbGludXhAMEAuZWZpLnN0dWInLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCi0gICAgICAgICBub191bmRlZmluZWRfc3ltYm9scyA9IGZpbmRfcHJvZ3JhbSgnbm8tdW5kZWZpbmVkLXN5bWJvbHMuc2gnKQotQEAgLTE3OSw3ICsxODksNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IHR1cGxlWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6IHR1cGxlWzBdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBbZWZpX2xkLCAnLW8nLCAnQE9VVFBVVEAnXSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IGVmaV9sZC5zcGxpdCgpICsgWyctbycsICdAT1VUUFVUQCddICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZpX2xkZmxhZ3MgKyB0dXBsZVsyXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLWxlZmknLCAnLWxnbnVlZmknLCBsaWJnY2NfZmlsZV9uYW1lXSkKLSAKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGFuZGxlLW1pc3NpbmctZ3NoYWRvdy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGFuZGxlLW1pc3NpbmctZ3NoYWRvdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmE1OTdkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IYW5kbGUtbWlzc2luZy1nc2hhZG93LnBhdGNoCkBAIC0wLDAgKzEsMTcxIEBACitGcm9tIGVmOTU4MGVhMWUyZjFlNTdhZjNjN2RjYjBlYzM5MmJhOGRiYjVjOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE1hciAyMDIwIDExOjA1OjIwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEhhbmRsZSBtaXNzaW5nIGdzaGFkb3cKKworZ3NoYWRvdyB1c2FnZSBpcyBub3cgcHJlc2VudCBpbiB0aGUgdXNlcmRiIGNvZGUuIE1hc2sgYWxsIHVzZXMgb2YgaXQgdG8KK2FsbG93IGNvbXBpbGF0aW9uIG9uIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorLS0tCisgc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmMgfCAyMCArKysrKysrKysrKysrKysrKysrKworIHNyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oIHwgIDQgKysrKworIHNyYy9zaGFyZWQvdXNlcmRiLmMgICAgICAgICAgIHwgIDYgKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuYyBiL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5jCitpbmRleCA3NzkyNGYxYzQwNjcuLmM2NDQ5MDI1M2ZmMyAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5jCisrKysgYi9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuYworQEAgLTE5LDggKzE5LDEwIEBAIGludCBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKAorICAgICAgICAgaWYgKGlzZW1wdHkoZ3JwLT5ncl9uYW1lKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBpZiAoc2dycCAmJiAhc3RyZXFfcHRyKHNncnAtPnNnX25hbXAsIGdycC0+Z3JfbmFtZSkpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworKyNlbmRpZgorIAorICAgICAgICAgZyA9IGdyb3VwX3JlY29yZF9uZXcoKTsKKyAgICAgICAgIGlmICghZykKK0BAIC0zNiw2ICszOCw3IEBAIGludCBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKAorIAorICAgICAgICAgZy0+Z2lkID0gZ3JwLT5ncl9naWQ7CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBpZiAoc2dycCkgeworICAgICAgICAgICAgICAgICBpZiAoaGFzaGVkX3Bhc3N3b3JkX3ZhbGlkKHNncnAtPnNnX3Bhc3N3ZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBnLT5oYXNoZWRfcGFzc3dvcmQgPSBzdHJ2X25ldyhzZ3JwLT5zZ19wYXNzd2QpOworQEAgLTUxLDYgKzU0LDcgQEAgaW50IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQoCisgICAgICAgICAgICAgICAgIGlmICghZy0+YWRtaW5pc3RyYXRvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgICB9CisrI2VuZGlmCisgCisgICAgICAgICByID0ganNvbl9idWlsZCgmZy0+anNvbiwgSlNPTl9CVUlMRF9PQkpFQ1QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTl9CVUlMRF9QQUlSKCJncm91cE5hbWUiLCBKU09OX0JVSUxEX1NUUklORyhnLT5ncm91cF9uYW1lKSksCitAQCAtNzYsNiArODAsNyBAQCBpbnQgbnNzX3NncnBfZm9yX2dyb3VwKGNvbnN0IHN0cnVjdCBncm91cCAqZ3JwLCBzdHJ1Y3Qgc2dycCAqcmV0X3NncnAsIGNoYXIgKipyZQorICAgICAgICAgYXNzZXJ0KHJldF9zZ3JwKTsKKyAgICAgICAgIGFzc2VydChyZXRfYnVmZmVyKTsKKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqYnVmID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgc3RydWN0IHNncnAgc2dycCwgKnJlc3VsdDsKK0BAIC0xMDQsNiArMTA5LDkgQEAgaW50IG5zc19zZ3JwX2Zvcl9ncm91cChjb25zdCBzdHJ1Y3QgZ3JvdXAgKmdycCwgc3RydWN0IHNncnAgKnJldF9zZ3JwLCBjaGFyICoqcmUKKyAgICAgICAgICAgICAgICAgYnVmbGVuICo9IDI7CisgICAgICAgICAgICAgICAgIGJ1ZiA9IG1mcmVlKGJ1Zik7CisgICAgICAgICB9CisrI2Vsc2UKKysgICAgICAgIHJldHVybiAtRVNSQ0g7CisrI2VuZGlmCisgfQorIAorIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgR3JvdXBSZWNvcmQgKipyZXQpIHsKK0BAIC0xMTEsNyArMTE5LDkgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgc3RydWN0IGdyb3VwIGdycCwgKnJlc3VsdDsKKyAgICAgICAgIGJvb2wgaW5jb21wbGV0ZSA9IGZhbHNlOworICAgICAgICAgc2l6ZV90IGJ1ZmxlbiA9IDQwOTY7CisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBzdHJ1Y3Qgc2dycCBzZ3JwOworKyNlbmRpZgorICAgICAgICAgaW50IHI7CisgCisgICAgICAgICBhc3NlcnQobmFtZSk7CitAQCAtMTQxLDYgKzE1MSw3IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgICAgICAgICAgYnVmID0gbWZyZWUoYnVmKTsKKyAgICAgICAgIH0KKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIHIgPSBuc3Nfc2dycF9mb3JfZ3JvdXAocmVzdWx0LCAmc2dycCwgJnNidWYpOworICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIGRvIHNoYWRvdyBsb29rdXAgZm9yIGdyb3VwICVzLCBpZ25vcmluZzogJW0iLCByZXN1bHQtPmdyX25hbWUpOworQEAgLTE0OCw2ICsxNTksOSBAQCBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICB9CisgCisgICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChyZXN1bHQsIHIgPj0gMCA/ICZzZ3JwIDogTlVMTCwgcmV0KTsKKysjZWxzZQorKyAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQocmVzdWx0LCBOVUxMLCByZXQpOworKyNlbmRpZgorICAgICAgICAgaWYgKHIgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAKK0BAIC0xNjAsNyArMTc0LDkgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfZ2lkKGdpZF90IGdpZCwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgIHN0cnVjdCBncm91cCBncnAsICpyZXN1bHQ7CisgICAgICAgICBib29sIGluY29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgIHNpemVfdCBidWZsZW4gPSA0MDk2OworKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgc3RydWN0IHNncnAgc2dycDsKKysjZW5kaWYKKyAgICAgICAgIGludCByOworIAorICAgICAgICAgYXNzZXJ0KHJldCk7CitAQCAtMTg4LDYgKzIwNCw3IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X2dpZChnaWRfdCBnaWQsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICAgICAgICAgIGJ1ZiA9IG1mcmVlKGJ1Zik7CisgICAgICAgICB9CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICByID0gbnNzX3NncnBfZm9yX2dyb3VwKHJlc3VsdCwgJnNncnAsICZzYnVmKTsKKyAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byBkbyBzaGFkb3cgbG9va3VwIGZvciBncm91cCAlcywgaWdub3Jpbmc6ICVtIiwgcmVzdWx0LT5ncl9uYW1lKTsKK0BAIC0xOTUsNiArMjEyLDkgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfZ2lkKGdpZF90IGdpZCwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKHJlc3VsdCwgciA+PSAwID8gJnNncnAgOiBOVUxMLCByZXQpOworKyNlbHNlCisrICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChyZXN1bHQsIE5VTEwsIHJldCk7CisrI2VuZGlmCisgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oIGIvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmgKK2luZGV4IDM4YjI5OTUxNzhmZi4uZDdkOTVjNDRjZjExIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmgKKysrKyBiL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oCitAQCAtMiw3ICsyLDExIEBACisgI3ByYWdtYSBvbmNlCisgCisgI2luY2x1ZGUgPGdycC5oPgorKyNpZiBFTkFCTEVfR1NIQURPVworICNpbmNsdWRlIDxnc2hhZG93Lmg+CisrI2Vsc2UKKytzdHJ1Y3Qgc2dycDsKKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAiZ3JvdXAtcmVjb3JkLmgiCisgCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91c2VyZGIuYyBiL3NyYy9zaGFyZWQvdXNlcmRiLmMKK2luZGV4IDkyZjg3OTY3NjhkNy4uNWQ5MTI4NjJmODVjIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC91c2VyZGIuYworKysrIGIvc3JjL3NoYXJlZC91c2VyZGIuYworQEAgLTkyNCwxMyArOTI0LDE2IEBAIGludCBncm91cGRiX2l0ZXJhdG9yX2dldChVc2VyREJJdGVyYXRvciAqaXRlcmF0b3IsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICAgICAgICAgIGlmIChncikgeworICAgICAgICAgICAgICAgICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNvbXBsZXRlID0gZmFsc2U7CisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNncnAgc2dycDsKKysjZW5kaWYKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyZXFfcHRyKGdyLT5ncl9uYW1lLCAicm9vdCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3ItPnN5bnRoZXNpemVfcm9vdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnci0+Z3JfZ2lkID09IEdJRF9OT0JPRFkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvci0+c3ludGhlc2l6ZV9ub2JvZHkgPSBmYWxzZTsKKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgICAgICAgICAgICAgICAgICByID0gbnNzX3NncnBfZm9yX2dyb3VwKGdyLCAmc2dycCwgJmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byBhY3F1aXJlIHNoYWRvdyBlbnRyeSBmb3IgZ3JvdXAgJXMsIGlnbm9yaW5nOiAlbSIsIGdyLT5ncl9uYW1lKTsKK0BAIC05MzgsNiArOTQxLDkgQEAgaW50IGdyb3VwZGJfaXRlcmF0b3JfZ2V0KFVzZXJEQkl0ZXJhdG9yICppdGVyYXRvciwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQoZ3IsIHIgPj0gMCA/ICZzZ3JwIDogTlVMTCwgcmV0KTsKKysjZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKGdyLCBOVUxMLCByZXQpOworKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tcHJpbnQtRUZJLUNDLWNvbmZpZ3VyYXRpb24tbmljZWx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tcHJpbnQtRUZJLUNDLWNvbmZpZ3VyYXRpb24tbmljZWx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDE0ZTI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXByaW50LUVGSS1DQy1jb25maWd1cmF0aW9uLW5pY2VseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMGJmNTMwYWFjMTUyNjMwNTAwOTM5ZGIzMWY5OGQ5MzMxNThmZGFiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjYgRmViIDIwMTkgMTQ6Mjc6NDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJtZXNvbjogcHJpbnQgRUZJIENDIGNvbmZpZ3VyYXRpb24gbmljZWx5IgotCi1UaGlzIHJldmVydHMgY29tbWl0IGM1MTJkZmI5YWM5NDhkZGIxY2VkMGRhYjA3YjlkYWM4OGIxOTgyOTMuCi0KLVRoaXMgcGF0Y2ggaXMgaGVyZSBiZWNhdXNlIHdlIGhhdmVuJ3QgZmlndXJlZCBvdXQgaG93IHRvIHBhc3MKLXBhcmFtZXRlciB0byBlZmktY2MgaWYgaXQncyBhbiBhcnJheSBpbiBzeXN0ZW1kLWJvb3QgcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtZXNvbi5idWlsZCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDcwZmIyMTguLjMwZGY4MzQgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0zMTM4LDcgKzMxMzgsNyBAQCBpZiBjb25mLmdldCgnRU5BQkxFX0VGSScpID09IDEKLSAgICAgICAgIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBzdGF0dXMgKz0gWwotICAgICAgICAgICAgICAgICAgICAgICAgICdFRkkgbWFjaGluZSB0eXBlOiAgICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBDQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoJyAnLmpvaW4oZWZpX2NjKSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBDQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoZWZpX2NjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIGxpYiBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChlZmlfbGliZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIGxkcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChlZmlfbGRzZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIGluY2x1ZGUgZGlyZWN0b3J5OiAgICAgICAgICAgICBAMEAnLmZvcm1hdChlZmlfaW5jZGlyKV0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tdXNlLWFuLWFycmF5LW9wdGlvbi1mb3ItZWZpLWNjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tdXNlLWFuLWFycmF5LW9wdGlvbi1mb3ItZWZpLWNjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDJlYmY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXVzZS1hbi1hcnJheS1vcHRpb24tZm9yLWVmaS1jYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLUZyb20gMDAzMGRjYmFjMWE5MTc3ZWY3YTI4YWYyMDlhYzY3MTQ5Yjg5OWY1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjYgRmViIDIwMTkgMTQ6MTc6MjUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJtZXNvbjogdXNlIGFuIGFycmF5IG9wdGlvbiBmb3IgZWZpLWNjIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDU5NTM0M2ZiNGM5OWMyNjc5ZDM0N2VmN2MxOWRlYmZiZmVkNjM0MmUuCi0KLVRoaXMgcGF0Y2ggaXMgaGVyZSBiZWNhdXNlIHdlIGhhdmVuJ3QgZmlndXJlZCBvdXQgaG93IHRvIHBhc3MKLXBhcmFtZXRlciB0byBlZmktY2MgaWYgaXQncyBhbiBhcnJheSBpbiBzeXN0ZW1kLWJvb3QgcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgfCAgMiArLQotIHNyYy9ib290L2VmaS9tZXNvbi5idWlsZCB8IDExICsrKysrKy0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCAwNDRiYjc5Li4zZDI4YmZkIDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMjkyLDcgKzI5Miw3IEBAIG9wdGlvbignZGJ1cycsIHR5cGUgOiAnY29tYm8nLCBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKLSAKLSBvcHRpb24oJ2dudS1lZmknLCB0eXBlIDogJ2NvbWJvJywgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ2dudS1lZmkgc3VwcG9ydCBmb3Igc2QtYm9vdCcpCi0tb3B0aW9uKCdlZmktY2MnLCB0eXBlIDogJ2FycmF5JywKLStvcHRpb24oJ2VmaS1jYycsIHR5cGUgOiAnc3RyaW5nJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAndGhlIGNvbXBpbGVyIHRvIHVzZSBmb3IgRUZJIG1vZHVsZXMnKQotIG9wdGlvbignZWZpLWxkJywgdHlwZSA6ICdzdHJpbmcnLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICd0aGUgbGlua2VyIHRvIHVzZSBmb3IgRUZJIG1vZHVsZXMnKQotZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotaW5kZXggMjE0MDE1MS4uZDhkYjNhMSAxMDA2NDQKLS0tLSBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotKysrIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1AQCAtMzQsOCArMzQsOCBAQCBzdHViX3NvdXJjZXMgPSAnJycKLSAKLSBpZiBjb25mLmdldCgnRU5BQkxFX0VGSScpID09IDEgYW5kIGdldF9vcHRpb24oJ2dudS1lZmknKSAhPSAnZmFsc2UnCi0gICAgICAgICBlZmlfY2MgPSBnZXRfb3B0aW9uKCdlZmktY2MnKQotLSAgICAgICAgaWYgZWZpX2NjLmxlbmd0aCgpID09IDAKLS0gICAgICAgICAgICAgICAgZWZpX2NjID0gY2MuY21kX2FycmF5KCkKLSsgICAgICAgIGlmIGVmaV9jYyA9PSAnJwotKyAgICAgICAgICAgICAgICBlZmlfY2MgPSAnICcuam9pbihjYy5jbWRfYXJyYXkoKSkKLSAgICAgICAgIGVuZGlmCi0gICAgICAgICBlZmlfbGQgPSBnZXRfb3B0aW9uKCdlZmktbGQnKQotICAgICAgICAgaWYgZWZpX2xkID09ICcnCi1AQCAtNTcsNyArNTcsOCBAQCBpZiBjb25mLmdldCgnRU5BQkxFX0VGSScpID09IDEgYW5kIGdldF9vcHRpb24oJ2dudS1lZmknKSAhPSAnZmFsc2UnCi0gCi0gICAgICAgICBlZmlfbGliZGlyID0gZ2V0X29wdGlvbignZWZpLWxpYmRpcicpCi0gICAgICAgICBpZiBlZmlfbGliZGlyID09ICcnCi0tICAgICAgICAgICAgICAgIHJldCA9IHJ1bl9jb21tYW5kKGVmaV9jYyArIFsnLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeSddKQotKyAgICAgICAgICAgICAgICBjbWQgPSAnY2QgL3Vzci9saWIvJChAMEAgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeSkgJiYgcHdkJy5mb3JtYXQoZWZpX2NjKQotKyAgICAgICAgICAgICAgICByZXQgPSBydW5fY29tbWFuZCgnc2gnLCAnLWMnLCBjbWQpCi0gICAgICAgICAgICAgICAgIGlmIHJldC5yZXR1cm5jb2RlKCkgPT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBqb2luX3BhdGhzKCcvdXNyL2xpYicsIHJldC5zdGRvdXQoKS5zdHJpcCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHJ1bl9jb21tYW5kKCdyZWFscGF0aCcsICctZScsIHBhdGgpCi1AQCAtMTUyLDcgKzE1Myw3IEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBvX2ZpbGUgPSBjdXN0b21fdGFyZ2V0KGZpbGUgKyAnLm8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgOiBmaWxlICsgJy5vJywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2NjICsgWyctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW2VmaV9jYywgJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBpbGVfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRfZmlsZXMgOiBlZmlfaGVhZGVycykKLSAgICAgICAgICAgICAgICAgaWYgKGNvbW1vbl9zb3VyY2VzICsgc3lzdGVtZF9ib290X3NvdXJjZXMpLmNvbnRhaW5zKGZpbGUpCi1AQCAtMTYzLDcgKzE2NCw3IEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBlbmRpZgotICAgICAgICAgZW5kZm9yZWFjaAotIAotLSAgICAgICAgbGliZ2NjX2ZpbGVfbmFtZSA9IHJ1bl9jb21tYW5kKGVmaV9jYyArIFsnLXByaW50LWxpYmdjYy1maWxlLW5hbWUnXSkuc3Rkb3V0KCkuc3RyaXAoKQotKyAgICAgICAgbGliZ2NjX2ZpbGVfbmFtZSA9IHJ1bl9jb21tYW5kKGVmaV9jYywgJy1wcmludC1saWJnY2MtZmlsZS1uYW1lJykuc3Rkb3V0KCkuc3RyaXAoKQotICAgICAgICAgc3lzdGVtZF9ib290X2VmaV9uYW1lID0gJ3N5c3RlbWQtYm9vdEAwQC5lZmknLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCi0gICAgICAgICBzdHViX2VmaV9uYW1lID0gJ2xpbnV4QDBALmVmaS5zdHViJy5mb3JtYXQoRUZJX01BQ0hJTkVfVFlQRV9OQU1FKQotICAgICAgICAgbm9fdW5kZWZpbmVkX3N5bWJvbHMgPSBmaW5kX3Byb2dyYW0oJ25vLXVuZGVmaW5lZC1zeW1ib2xzLnNoJykKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCmluZGV4IDczZTY1ZmYuLmQwOTgwODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1Gcm9tIDk4MjU0ZTQ3OThlNzlkNTJhYzZiNTYyNjE2Y2QyNDQxMjBmNmUyMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU5Yzk5MzgxNjA3N2MxYWU2N2QyNWQ0NjRmMmVjZTJhMDkwZjMwYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDIxIEZlYiAyMDE5IDE2OjIzOjI0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMS81XSBiaW5mbXQ6IERvbid0IGluc3RhbGwgZGVwZW5kZW5jeSBsaW5rcyBhdCBpbnN0YWxsIHRpbWUgCi0gZm9yIHRoZSBiaW5mbXQgc2VydmljZXMKK1N1YmplY3Q6IFtQQVRDSF0gYmluZm10OiBEb24ndCBpbnN0YWxsIGRlcGVuZGVuY3kgbGlua3MgYXQgaW5zdGFsbCB0aW1lIGZvcgorIHRoZSBiaW5mbXQgc2VydmljZXMKIAogdXNlIFtJbnN0YWxsXSBibG9ja3Mgc28gdGhhdCB0aGV5IGdldCBjcmVhdGVkIHdoZW4gdGhlIHNlcnZpY2UgaXMgZW5hYmxlZAogbGlrZSBhIHRyYWRpdGlvbmFsIHNlcnZpY2UuCkBAIC0xOCw2ICsxOCw3IEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHVuaXRzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8IDYgKystLS0tCiAgdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IHwgMyArKysKQEAgLTI1LDEwICsyNiwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdW5pdHMvbWVzb24uYnVpbGQgYi91bml0cy9tZXNvbi5idWlsZAotaW5kZXggZTFlZTlmODZjMy4uNmJiNzc3MWIzNiAxMDA2NDQKK2luZGV4IGVhOTFmMGNjOWVhNy4uMjUxODZmODhkZmViIDEwMDY0NAogLS0tIGEvdW5pdHMvbWVzb24uYnVpbGQKICsrKyBiL3VuaXRzL21lc29uLmJ1aWxkCi1AQCAtNDYsOCArNDYsNyBAQCB1bml0cyA9IFsKK0BAIC01Miw4ICs1Miw3IEBAIHVuaXRzID0gWwogICAgICAgICAgWydwb3dlcm9mZi50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICdydW5sZXZlbDAudGFyZ2V0J10sCiAgICAgICAgICBbJ3ByaW50ZXIudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgJyddLApAQCAtMzgsMTggKzM5LDE4IEBACiAgICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLm1vdW50JywgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKICAgICAgICAgIFsncmVib290LnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAncnVubGV2ZWw2LnRhcmdldCBjdHJsLWFsdC1kZWwudGFyZ2V0J10sCi1AQCAtMTMwLDggKzEyOSw3IEBAIGluX3VuaXRzID0gWwotICAgICAgICAgWydzeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UnLCAnJ10sCi0gICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZScsICAgICcnXSwKK0BAIC0xNjEsOCArMTYwLDcgQEAgaW5fdW5pdHMgPSBbCisgICAgICAgICBbJ3JjLWxvY2FsLnNlcnZpY2UnLCAgICAgICAgICAgICAgICAgICAgICdIQVZFX1NZU1ZfQ09NUEFUJ10sCisgICAgICAgICBbJ3Jlc2N1ZS5zZXJ2aWNlJywgICAgICAgICAgICAgICAgICAgICAgICcnXSwKICAgICAgICAgIFsnc3lzdGVtZC1iYWNrbGlnaHRALnNlcnZpY2UnLCAgICAgICAgICAgJ0VOQUJMRV9CQUNLTElHSFQnXSwKIC0gICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnLAogLSAgICAgICAgICdzeXNpbml0LnRhcmdldC53YW50cy8nXSwKICsgICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKICAgICAgICAgIFsnc3lzdGVtZC1ibGVzcy1ib290LnNlcnZpY2UnLCAgICAgICAgICAgJ0VOQUJMRV9FRkkgSEFWRV9CTEtJRCddLAogICAgICAgICAgWydzeXN0ZW1kLWJvb3QtY2hlY2stbm8tZmFpbHVyZXMuc2VydmljZScsICcnXSwKLSAgICAgICAgIFsnc3lzdGVtZC1ib290LXN5c3RlbS10b2tlbi5zZXJ2aWNlJywgICAgJ0VOQUJMRV9FRkknLAorICAgICAgICAgWydzeXN0ZW1kLWNvcmVkdW1wQC5zZXJ2aWNlJywgICAgICAgICAgICAnRU5BQkxFX0NPUkVEVU1QJ10sCiBkaWZmIC0tZ2l0IGEvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IGIvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci1pbmRleCAzMGE2YmM5OTE4Li40MjMxZjNiNzBmIDEwMDY0NAoraW5kZXggMzBhNmJjOTkxODQ0Li40MjMxZjNiNzBmZTkgMTAwNjQ0CiAtLS0gYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKICsrKyBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAogQEAgLTE4LDMgKzE4LDYgQEAgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KQEAgLTYwLDcgKzYxLDcgQEAKICtbSW5zdGFsbF0KICtXYW50ZWRCeT1zeXNpbml0LnRhcmdldAogZGlmZiAtLWdpdCBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi1pbmRleCBlOTQwYzdjOWFkLi42YmU3ZjVjYzliIDEwMDY0NAoraW5kZXggMGMwZjI2NDUxYjY3Li43NjNjNGM0NjZjMTYgMTAwNjQ0CiAtLS0gYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCiArKysgYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCiBAQCAtMTQsNiArMTQsNyBAQCBEb2N1bWVudGF0aW9uPWh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L2FkbWluLWd1aWRlL2JpbmZtdC1taXNjLmh0bQpAQCAtNjksOSArNzAsOSBAQAogIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKICtXYW50cz1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKICBBZnRlcj1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKyBBZnRlcj1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5tb3VudAogIEJlZm9yZT1zeXNpbml0LnRhcmdldCBzaHV0ZG93bi50YXJnZXQKLSBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwotQEAgLTI4LDMgKzI5LDYgQEAgVHlwZT1vbmVzaG90CitAQCAtMjksMyArMzAsNiBAQCBUeXBlPW9uZXNob3QKICBSZW1haW5BZnRlckV4aXQ9eWVzCiAgRXhlY1N0YXJ0PUByb290bGliZXhlY2RpckAvc3lzdGVtZC1iaW5mbXQKICBUaW1lb3V0U2VjPTkwcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2gKaW5kZXggMmY0ZGFmOC4uNGVlZWM3YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWRvLW5vdC1kaXNhYmxlLWJ1ZmZlci1pbi13cml0aW5nLWZpbGVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4NWUzYzMwNDY1NjJlYzI0ZmMyZjA5ZWJmZDA4YmY5ZjE2ODA5MWQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmOTJmZDdlNzdlZDVhYWIyZGRhMDFhMjBlNjg5MWMzN2YwOTQxNWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAxIE1hciAyMDE5IDE1OjIyOjE1ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRvIG5vdCBkaXNhYmxlIGJ1ZmZlciBpbiB3cml0aW5nIGZpbGVzCkBAIC0xOCw4ICsxOCw5IEBACiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCi0gc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KKyBzcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyAgICAgICAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCiAgc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgICAgICAgICAgICAgICAgIHwgIDQgKystLQogIHNyYy9iYXNpYy9zbWFjay11dGlsLmMgICAgICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL2Jhc2ljL3V0aWwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KQEAgLTMxLDI3ICszMiwxOSBAQAogIHNyYy9sb2dpbi9sb2dpbmQtZGJ1cy5jICAgICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL25zcGF3bi9uc3Bhd24tY2dyb3VwLmMgICAgICAgICAgICAgIHwgIDIgKy0KICBzcmMvbnNwYXduL25zcGF3bi5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KKyBzcmMvc2hhcmVkL2Nncm91cC1zZXR1cC5jICAgICAgICAgICAgICAgfCAgNCArKy0tCiAgc3JjL3NoYXJlZC9zeXNjdGwtdXRpbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc2xlZXAvc2xlZXAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCisgc3JjL3NsZWVwL3NsZWVwLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KICBzcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYyAgICAgICAgICAgICAgfCAgMiArLQogIHNyYy91ZGV2L3VkZXZkLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMgICAgICAgICAgIHwgIDIgKy0KLSAxNyBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKKyAxOCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jIGIvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKLWluZGV4IDdiNTgzOWNjZDYuLjE4ZjZlOGZmYzggMTAwNjQ0CitpbmRleCBhNTE0MWY0Y2JlZGQuLjA0YzA2ZTdhNTVjYiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYwotQEAgLTg2MCw3ICs4NjAsNyBAQCBpbnQgY2dfYXR0YWNoKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIHBpZF90IHBpZCkgewotIAotICAgICAgICAgeHNwcmludGYoYywgUElEX0ZNVCAiXG4iLCBwaWQpOwotIAotLSAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZzLCBjLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7Ci0rICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZnMsIGMsIDApOwotICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAKLUBAIC0xMTQyLDcgKzExNDIsNyBAQCBpbnQgY2dfaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKmFnZW50KSB7CitAQCAtNzM5LDcgKzczOSw3IEBAIGludCBjZ19pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqYWdlbnQpIHsKICAKICAgICAgICAgIHNjID0gc3Ryc3RyaXAoY29udGVudHMpOwogICAgICAgICAgaWYgKGlzZW1wdHkoc2MpKSB7CkBAIC02MCw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgIH0gZWxzZSBpZiAoIXBhdGhfZXF1YWwoc2MsIGFnZW50KSkKLUBAIC0xMTYwLDcgKzExNjAsNyBAQCBpbnQgY2dfaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKmFnZW50KSB7CitAQCAtNzU3LDcgKzc1Nyw3IEBAIGludCBjZ19pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqYWdlbnQpIHsKICAKICAgICAgICAgIHNjID0gc3Ryc3RyaXAoY29udGVudHMpOwogICAgICAgICAgaWYgKHN0cmVxKHNjLCAiMCIpKSB7CkBAIC02OSw3ICs2Miw3IEBACiAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKLUBAIC0xMTg3LDcgKzExODcsNyBAQCBpbnQgY2dfdW5pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlcikgeworQEAgLTc4NCw3ICs3ODQsNyBAQCBpbnQgY2dfdW5pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlcikgewogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKQEAgLTc4LDcgKzcxLDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCi1AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgaW50IGNnX3VuaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIpIHsKK0BAIC03OTQsNyArNzk0LDcgQEAgaW50IGNnX3VuaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIpIHsKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCkBAIC04Nyw3ICs4MCw3IEBACiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIAotQEAgLTIwNTMsNyArMjA1Myw3IEBAIGludCBjZ19zZXRfYXR0cmlidXRlKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmF0dHJpCitAQCAtMTY1MCw3ICsxNjUwLDcgQEAgaW50IGNnX3NldF9hdHRyaWJ1dGUoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqYXR0cmkKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCkBAIC05NiwxNyArODksOCBAQAogIH0KICAKICBpbnQgY2dfZ2V0X2F0dHJpYnV0ZShjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICphdHRyaWJ1dGUsIGNoYXIgKipyZXQpIHsKLUBAIC0yNjk3LDcgKzI2OTcsNyBAQCBpbnQgY2dfZW5hYmxlX2V2ZXJ5d2hlcmUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiBjZ3JvdXAuc3VidHJlZV9jb250cm9sIGZpbGUgb2YgJXM6ICVtIiwgcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfc3RyZWFtKGYsIHMsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX3N0cmVhbShmLCBzLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvICVzIGNvbnRyb2xsZXIgJXMgZm9yICVzICglcyk6ICVtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFHU19TRVQobWFzaywgYml0KSA/ICJlbmFibGUiIDogImRpc2FibGUiLCBuLCBwLCBmcyk7CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwotaW5kZXggNDJjZTUzZDVhYS4uNTc1MTI1MzJhNiAxMDA2NDQKK2luZGV4IGRhN2U4MzZmMTQzZS4uMjEzOGYyMGJjYzAzIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCiBAQCAtODYsMTMgKzg2LDEzIEBAIGludCBwcm9jZnNfdGFza3Nfc2V0X2xpbWl0KHVpbnQ2NF90IGxpbWl0KSB7CkBAIC0xMjYsMTAgKzExMCwxMCBAQAogICAgICAgICAgICAgICAgICB1aW50NjRfdCB0aHJlYWRzX21heDsKICAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc21hY2stdXRpbC5jIGIvc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYwotaW5kZXggMTIzZDAwZTEzZS4uZTdlYTc4ZjM0OSAxMDA2NDQKK2luZGV4IGRhOWEyMTM5ZDMxYS4uNWU5MWY1YjhmNWQ5IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYwotQEAgLTExNSw3ICsxMTUsNyBAQCBpbnQgbWFjX3NtYWNrX2FwcGx5X3BpZChwaWRfdCBwaWQsIGNvbnN0IGNoYXIgKmxhYmVsKSB7CitAQCAtMTE0LDcgKzExNCw3IEBAIGludCBtYWNfc21hY2tfYXBwbHlfcGlkKHBpZF90IHBpZCwgY29uc3QgY2hhciAqbGFiZWwpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgCiAgICAgICAgICBwID0gcHJvY2ZzX2ZpbGVfYWxsb2NhKHBpZCwgImF0dHIvY3VycmVudCIpOwpAQCAtMTM5LDEwICsxMjMsMTAgQEAKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuYyBiL3NyYy9iYXNpYy91dGlsLmMKLWluZGV4IDkzZDYxMGJjOTguLjk3ZGNhNjRmNzMgMTAwNjQ0CitpbmRleCAyYjNiMzkxOGEzMmYuLmFmZjhkMGZjZDQ3MyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy91dGlsLmMKICsrKyBiL3NyYy9iYXNpYy91dGlsLmMKLUBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBkaXNhYmxlX2NvcmVkdW1wcyh2b2lkKSB7CitAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgZGlzYWJsZV9jb3JlZHVtcHModm9pZCkgewogICAgICAgICAgaWYgKGRldGVjdF9jb250YWluZXIoKSA+IDApCiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAKQEAgLTE1MiwxMCArMTM2LDEwIEBACiAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIHR1cm4gb2ZmIGNvcmVkdW1wcywgaWdub3Jpbmc6ICVtIik7CiAgfQogZGlmZiAtLWdpdCBhL3NyYy9iaW5mbXQvYmluZm10LmMgYi9zcmMvYmluZm10L2JpbmZtdC5jCi1pbmRleCBhYTlkODExZjJlLi44YzdmMmRhZTdhIDEwMDY0NAoraW5kZXggN2ZmODQ0Yzc4YzNhLi41YzU3MjFkN2MyZjcgMTAwNjQ0CiAtLS0gYS9zcmMvYmluZm10L2JpbmZtdC5jCiArKysgYi9zcmMvYmluZm10L2JpbmZtdC5jCi1AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW50IGRlbGV0ZV9ydWxlKGNvbnN0IGNoYXIgKnJ1bGUpIHsKK0BAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBpbnQgZGVsZXRlX3J1bGUoY29uc3QgY2hhciAqcnVsZSkgewogICAgICAgICAgaWYgKCFmbikKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKICAKQEAgLTE2NCw3ICsxNDgsNyBAQAogIH0KICAKICBzdGF0aWMgaW50IGFwcGx5X3J1bGUoY29uc3QgY2hhciAqcnVsZSkgewotQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGludCBhcHBseV9ydWxlKGNvbnN0IGNoYXIgKnJ1bGUpIHsKK0BAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBpbnQgYXBwbHlfcnVsZShjb25zdCBjaGFyICpydWxlKSB7CiAgCiAgICAgICAgICAodm9pZCkgZGVsZXRlX3J1bGUocnVsZSk7CiAgCkBAIC0xNzMsNyArMTU3LDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIGFkZCBiaW5hcnkgZm9ybWF0OiAlbSIpOwogIAotQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgaW50IHJ1bihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CitAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbnQgcnVuKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgICAgICAgICAgICAgICAgfQogIAogICAgICAgICAgICAgICAgICAvKiBGbHVzaCBvdXQgYWxsIHJ1bGVzICovCkBAIC0xODMsMTAgKzE2NywxMCBAQAogICAgICAgICAgICAgICAgICBTVFJWX0ZPUkVBQ0goZiwgZmlsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gYXBwbHlfZmlsZSgqZiwgdHJ1ZSk7CiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCi1pbmRleCBiY2NlNzE3OGE4Li40MTk5Y2VkYWI5IDEwMDY0NAoraW5kZXggM2M2YjY2ZTg5YzhlLi5jMzllYmU1NmE1YjMgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9tYWluLmMKICsrKyBiL3NyYy9jb3JlL21haW4uYwotQEAgLTEyODUsNyArMTI4NSw3IEBAIHN0YXRpYyBpbnQgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKHZvaWQpIHsKK0BAIC0xMzEyLDcgKzEzMTIsNyBAQCBzdGF0aWMgaW50IGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbih2b2lkKSB7CiAgICAgICAgICBpZiAodiA+PSBERUZBVUxUX1VOSVhfTUFYX0RHUkFNX1FMRU4pCiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogIApAQCAtMTk1LDcgKzE3OSw3IEBACiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZnVsbF9lcnJubyhJTl9TRVQociwgLUVST0ZTLCAtRVBFUk0sIC1FQUNDRVMpID8gTE9HX0RFQlVHIDogTE9HX1dBUk5JTkcsIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGJ1bXAgQUZfVU5JWCBkYXRhZ3JhbSBxdWV1ZSBsZW5ndGgsIGlnbm9yaW5nOiAlbSIpOwotQEAgLTE1MDksNyArMTUwOSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfY29yZV9wYXR0ZXJuKGJvb2wgc2tpcF9zZXR1cCkgeworQEAgLTE1MzYsNyArMTUzNiw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfY29yZV9wYXR0ZXJuKGJvb2wgc2tpcF9zZXR1cCkgewogICAgICAgICAgaWYgKGdldHBpZF9jYWNoZWQoKSAhPSAxKQogICAgICAgICAgICAgICAgICByZXR1cm47CiAgCkBAIC0yMDUsNyArMTg5LDcgQEAKICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuLCBpZ25vcmluZzogJW0iLCBhcmdfZWFybHlfY29yZV9wYXR0ZXJuKTsKICB9CiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvc21hY2stc2V0dXAuYyBiL3NyYy9jb3JlL3NtYWNrLXNldHVwLmMKLWluZGV4IGI5NWU2MjM5ZDQuLmZkYmRhYWFjY2IgMTAwNjQ0CitpbmRleCA0NDI3Mzk3ZjI3MTUuLjhhZWI1YzgyOTUxMyAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL3NtYWNrLXNldHVwLmMKICsrKyBiL3NyYy9jb3JlL3NtYWNrLXNldHVwLmMKIEBAIC0zMjUsMTcgKzMyNSwxNyBAQCBpbnQgbWFjX3NtYWNrX3NldHVwKGJvb2wgKmxvYWRlZF9wb2xpY3kpIHsKQEAgLTIzMSw3ICsyMTUsNyBAQAogICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhyLCAiRmFpbGVkIHRvIHNldCBTTUFDSyBuZXRsYWJlbCBydWxlIFwiMTI3LjAuMC4xIC1DSVBTT1wiOiAlbSIpOwogICNlbmRpZgogZGlmZiAtLWdpdCBhL3NyYy9oaWJlcm5hdGUtcmVzdW1lL2hpYmVybmF0ZS1yZXN1bWUuYyBiL3NyYy9oaWJlcm5hdGUtcmVzdW1lL2hpYmVybmF0ZS1yZXN1bWUuYwotaW5kZXggMTdlN2NkMWEwMC4uODdhNzY2NzcxNiAxMDA2NDQKK2luZGV4IDE3ZTdjZDFhMDA5Yi4uODdhNzY2NzcxNjYzIDEwMDY0NAogLS0tIGEvc3JjL2hpYmVybmF0ZS1yZXN1bWUvaGliZXJuYXRlLXJlc3VtZS5jCiArKysgYi9zcmMvaGliZXJuYXRlLXJlc3VtZS9oaWJlcm5hdGUtcmVzdW1lLmMKIEBAIC00NSw3ICs0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKQEAgLTI0NCw3ICsyMjgsNyBAQAogICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIC9zeXMvcG93ZXIvcmVzdW1lOiAlbSIsIG1ham9yX21pbm9yKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1kZXZpY2Uvc2QtZGV2aWNlLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1kZXZpY2Uvc2QtZGV2aWNlLmMKLWluZGV4IGM0YTdmMmYzZDMuLmJjYWM3NTgyODQgMTAwNjQ0CitpbmRleCAxZjI0NTFmOGUxYjQuLjNmNjc2ZWMyODQxYSAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWRldmljZS9zZC1kZXZpY2UuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtZGV2aWNlL3NkLWRldmljZS5jCiBAQCAtMTg0OSw3ICsxODQ5LDcgQEAgX3B1YmxpY18gaW50IHNkX2RldmljZV9zZXRfc3lzYXR0cl92YWx1ZShzZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqc3lzYXR0ciwKQEAgLTI1NywxMCArMjQxLDEwIEBACiAgICAgICAgICAgICAgICAgIGlmIChyID09IC1FTE9PUCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKIGRpZmYgLS1naXQgYS9zcmMvbG9naW4vbG9naW5kLWRidXMuYyBiL3NyYy9sb2dpbi9sb2dpbmQtZGJ1cy5jCi1pbmRleCAzMGI5YTY2MzM0Li5jYzFkNTc3OTMzIDEwMDY0NAoraW5kZXggNTJhN2VhM2M3N2U5Li45NzAzZGUwZGFiZWUgMTAwNjQ0CiAtLS0gYS9zcmMvbG9naW4vbG9naW5kLWRidXMuYwogKysrIGIvc3JjL2xvZ2luL2xvZ2luZC1kYnVzLmMKLUBAIC0xMzI1LDcgKzEzMjUsNyBAQCBzdGF0aWMgaW50IHRyaWdnZXJfZGV2aWNlKE1hbmFnZXIgKm0sIHNkX2RldmljZSAqZCkgeworQEAgLTEzMzksNyArMTMzOSw3IEBAIHN0YXRpYyBpbnQgdHJpZ2dlcl9kZXZpY2UoTWFuYWdlciAqbSwgc2RfZGV2aWNlICpkKSB7CiAgICAgICAgICAgICAgICAgIGlmICghdCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAKQEAgLTI3MCwxMCArMjU0LDEwIEBACiAgCiAgICAgICAgICByZXR1cm4gMDsKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi1jZ3JvdXAuYyBiL3NyYy9uc3Bhd24vbnNwYXduLWNncm91cC5jCi1pbmRleCAwNDYyYjQ2NDEzLi43YzUzZDQxNDgzIDEwMDY0NAoraW5kZXggZjUwNDhkOTQ3M2NiLi5iNjM4M2FiNWM5N2UgMTAwNjQ0CiAtLS0gYS9zcmMvbnNwYXduL25zcGF3bi1jZ3JvdXAuYwogKysrIGIvc3JjL25zcGF3bi9uc3Bhd24tY2dyb3VwLmMKLUBAIC0xMjMsNyArMTIzLDcgQEAgaW50IHN5bmNfY2dyb3VwKHBpZF90IHBpZCwgQ0dyb3VwVW5pZmllZCB1bmlmaWVkX3JlcXVlc3RlZCwgdWlkX3QgdWlkX3NoaWZ0KSB7CitAQCAtMTI0LDcgKzEyNCw3IEBAIGludCBzeW5jX2Nncm91cChwaWRfdCBwaWQsIENHcm91cFVuaWZpZWQgdW5pZmllZF9yZXF1ZXN0ZWQsIHVpZF90IHVpZF9zaGlmdCkgewogICAgICAgICAgZm4gPSBzdHJqb2luYSh0cmVlLCBjZ3JvdXAsICIvY2dyb3VwLnByb2NzIik7CiAgCiAgICAgICAgICBzcHJpbnRmKHBpZF9zdHJpbmcsIFBJRF9GTVQsIHBpZCk7CkBAIC0yODMsMTAgKzI2NywxMCBAQAogICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8ociwgIkZhaWxlZCB0byBtb3ZlIHByb2Nlc3M6ICVtIik7CiAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwogZGlmZiAtLWdpdCBhL3NyYy9uc3Bhd24vbnNwYXduLmMgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1pbmRleCAyYWVjODA0MWYwLi44NDE1NDJmMmYzIDEwMDY0NAoraW5kZXggNzM0ZGVlMTEzMGUwLi43MWFkZDlhMDU1ZDIgMTAwNjQ0CiAtLS0gYS9zcmMvbnNwYXduL25zcGF3bi5jCiArKysgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1AQCAtMjM1Nyw3ICsyMzU3LDcgQEAgc3RhdGljIGludCByZXNldF9hdWRpdF9sb2dpbnVpZCh2b2lkKSB7CitAQCAtMjQ0MCw3ICsyNDQwLDcgQEAgc3RhdGljIGludCByZXNldF9hdWRpdF9sb2dpbnVpZCh2b2lkKSB7CiAgICAgICAgICBpZiAoc3RyZXEocCwgIjQyOTQ5NjcyOTUiKSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgCkBAIC0yOTUsNyArMjc5LDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkgewogICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8ociwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVzZXQgYXVkaXQgbG9naW4gVUlELiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgeW91ciBrZXJuZWwgaXMgdG9vXG4iCi1AQCAtMzU2NiwxMyArMzU2NiwxMyBAQCBzdGF0aWMgaW50IHNldHVwX3VpZF9tYXAocGlkX3QgcGlkKSB7CitAQCAtMzY2NSwxMyArMzY2NSwxMyBAQCBzdGF0aWMgaW50IHNldHVwX3VpZF9tYXAocGlkX3QgcGlkKSB7CiAgCiAgICAgICAgICB4c3ByaW50Zih1aWRfbWFwLCAiL3Byb2MvIiBQSURfRk1UICIvdWlkX21hcCIsIHBpZCk7CiAgICAgICAgICB4c3ByaW50ZihsaW5lLCBVSURfRk1UICIgIiBVSURfRk1UICIgIiBVSURfRk1UICJcbiIsIDAsIGFyZ191aWRfc2hpZnQsIGFyZ191aWRfcmFuZ2UpOwpAQCAtMzExLDExICsyOTUsMzMgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlIEdJRCBtYXA6ICVtIik7CiAgCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYyBiL3NyYy9zaGFyZWQvY2dyb3VwLXNldHVwLmMKK2luZGV4IGU4Mzk4Y2JkZTViYS4uYmE2ODJlYzBjOWU3IDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYworKysrIGIvc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYworQEAgLTI2Nyw3ICsyNjcsNyBAQCBpbnQgY2dfYXR0YWNoKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIHBpZF90IHBpZCkgeworIAorICAgICAgICAgeHNwcmludGYoYywgUElEX0ZNVCAiXG4iLCBwaWQpOworIAorLSAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZzLCBjLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CisrICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZnMsIGMsIDApOworICAgICAgICAgaWYgKHIgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAKK0BAIC04MTcsNyArODE3LDcgQEAgaW50IGNnX2VuYWJsZV9ldmVyeXdoZXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gY2dyb3VwLnN1YnRyZWVfY29udHJvbCBmaWxlIG9mICVzOiAlbSIsIHApOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX3N0cmVhbShmLCBzLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19zdHJlYW0oZiwgcywgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byAlcyBjb250cm9sbGVyICVzIGZvciAlcyAoJXMpOiAlbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR1NfU0VUKG1hc2ssIGJpdCkgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIiwgbiwgcCwgZnMpOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvc3lzY3RsLXV0aWwuYyBiL3NyYy9zaGFyZWQvc3lzY3RsLXV0aWwuYwotaW5kZXggOTNiZGNmMTFiZi4uNjhjZGRiN2E5ZiAxMDA2NDQKK2luZGV4IDg1NDNkYmQyZDA1Zi4uNzYxNjI1OTk4MTdlIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9zeXNjdGwtdXRpbC5jCiArKysgYi9zcmMvc2hhcmVkL3N5c2N0bC11dGlsLmMKLUBAIC04OCw3ICs4OCw3IEBAIGludCBzeXNjdGxfd3JpdGVfaXBfcHJvcGVydHkoaW50IGFmLCBjb25zdCBjaGFyICppZm5hbWUsIGNvbnN0IGNoYXIgKnByb3BlcnR5LCBjCitAQCAtOTMsNyArOTMsNyBAQCBpbnQgc3lzY3RsX3dyaXRlX2lwX3Byb3BlcnR5KGludCBhZiwgY29uc3QgY2hhciAqaWZuYW1lLCBjb25zdCBjaGFyICpwcm9wZXJ0eSwgYwogIAogICAgICAgICAgbG9nX2RlYnVnKCJTZXR0aW5nICclcycgdG8gJyVzJyIsIHAsIHZhbHVlKTsKICAKQEAgLTMyNSwzNiArMzMxLDI4IEBACiAgCiAgaW50IHN5c2N0bF9yZWFkKGNvbnN0IGNoYXIgKnByb3BlcnR5LCBjaGFyICoqY29udGVudCkgewogZGlmZiAtLWdpdCBhL3NyYy9zbGVlcC9zbGVlcC5jIGIvc3JjL3NsZWVwL3NsZWVwLmMKLWluZGV4IGI5ZmU5NjYzNWQuLmYxNjhkN2Y4OTAgMTAwNjQ0CitpbmRleCBmYmZkZGMwMjYyZmMuLjdjYzI5MDIxNTRlOSAxMDA2NDQKIC0tLSBhL3NyYy9zbGVlcC9zbGVlcC5jCiArKysgYi9zcmMvc2xlZXAvc2xlZXAuYwotQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIGludCB3cml0ZV9oaWJlcm5hdGVfbG9jYXRpb25faW5mbyh2b2lkKSB7CitAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2hpYmVybmF0ZV9sb2NhdGlvbl9pbmZvKGNvbnN0IEhpYmVybmF0ZUxvY2F0aW9uICpoaWJlcm5hdGVfbG9jYQorICAgICAgICAgYXNzZXJ0KGhpYmVybmF0ZV9sb2NhdGlvbi0+c3dhcCk7CiAgCi0gICAgICAgICAvKiBpZiBpdCdzIGEgc3dhcCBwYXJ0aXRpb24sIHdlIGp1c3Qgd3JpdGUgdGhlIGRpc2sgdG8gL3N5cy9wb3dlci9yZXN1bWUgKi8KLSAgICAgICAgIGlmIChzdHJlcSh0eXBlLCAicGFydGl0aW9uIikpIHsKLS0gICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZSIsIGRldmljZSwgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwotKyAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgZGV2aWNlLCAwKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBwYXJ0aXRpb24gZGV2aWNlIHRvIC9zeXMvcG93ZXIvcmVzdW1lOiAlbSIpOworICAgICAgICAgeHNwcmludGYocmVzdW1lX3N0ciwgIiV1OiV1IiwgbWFqb3IoaGliZXJuYXRlX2xvY2F0aW9uLT5kZXZubyksIG1pbm9yKGhpYmVybmF0ZV9sb2NhdGlvbi0+ZGV2bm8pKTsKKy0gICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCByZXN1bWVfc3RyLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CisrICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgcmVzdW1lX3N0ciwgMCk7CisgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBwYXJ0aXRpb24gZGV2aWNlIHRvIC9zeXMvcG93ZXIvcmVzdW1lIGZvciAnJXMnOiAnJXMnOiAlbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGliZXJuYXRlX2xvY2F0aW9uLT5zd2FwLT5kZXZpY2UsIHJlc3VtZV9zdHIpOworQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIGludCB3cml0ZV9oaWJlcm5hdGVfbG9jYXRpb25faW5mbyhjb25zdCBIaWJlcm5hdGVMb2NhdGlvbiAqaGliZXJuYXRlX2xvY2EKKyAgICAgICAgIH0KICAKLUBAIC05OCwxNCArOTgsMTQgQEAgc3RhdGljIGludCB3cml0ZV9oaWJlcm5hdGVfbG9jYXRpb25faW5mbyh2b2lkKSB7Ci0gCi0gICAgICAgICBvZmZzZXQgPSBmaWVtYXAtPmZtX2V4dGVudHNbMF0uZmVfcGh5c2ljYWwgLyBwYWdlX3NpemUoKTsKLSAgICAgICAgIHhzcHJpbnRmKG9mZnNldF9zdHIsICIlIiBQUkl1NjQsIG9mZnNldCk7CisgICAgICAgICB4c3ByaW50ZihvZmZzZXRfc3RyLCAiJSIgUFJJdTY0LCBoaWJlcm5hdGVfbG9jYXRpb24tPm9mZnNldCk7CiAtICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lX29mZnNldCIsIG9mZnNldF9zdHIsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKICsgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWVfb2Zmc2V0Iiwgb2Zmc2V0X3N0ciwgMCk7CiAgICAgICAgICBpZiAociA8IDApCi0gICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBvZmZzZXQgJyVzJzogJW0iLCBvZmZzZXRfc3RyKTsKLSAKLSAgICAgICAgIGxvZ19kZWJ1ZygiV3JvdGUgY2FsY3VsYXRlZCByZXN1bWVfb2Zmc2V0IHZhbHVlIHRvIC9zeXMvcG93ZXIvcmVzdW1lX29mZnNldDogJXMiLCBvZmZzZXRfc3RyKTsKLSAKLSAgICAgICAgIHhzcHJpbnRmKGRldmljZV9zdHIsICIlbHgiLCAodW5zaWduZWQgbG9uZylzdGIuc3RfZGV2KTsKLS0gICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCBkZXZpY2Vfc3RyLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7Ci0rICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgZGV2aWNlX3N0ciwgMCk7Ci0gICAgICAgICBpZiAociA8IDApCi0gICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBkZXZpY2UgJyVzJzogJW0iLCBkZXZpY2Vfc3RyKTsKLSAKLUBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIGludCB3cml0ZV9tb2RlKGNoYXIgKiptb2RlcykgeworICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgc3dhcCBmaWxlIG9mZnNldCB0byAvc3lzL3Bvd2VyL3Jlc3VtZV9vZmZzZXQgZm9yICclcyc6ICclcyc6ICVtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWJlcm5hdGVfbG9jYXRpb24tPnN3YXAtPmRldmljZSwgb2Zmc2V0X3N0cik7CitAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW50IHdyaXRlX21vZGUoY2hhciAqKm1vZGVzKSB7CiAgICAgICAgICBTVFJWX0ZPUkVBQ0gobW9kZSwgbW9kZXMpIHsKICAgICAgICAgICAgICAgICAgaW50IGs7CiAgCkBAIC0zNjMsNyArMzYxLDcgQEAKICAgICAgICAgICAgICAgICAgaWYgKGsgPj0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAKLUBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIGludCB3cml0ZV9zdGF0ZShGSUxFICoqZiwgY2hhciAqKnN0YXRlcykgeworQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgaW50IHdyaXRlX3N0YXRlKEZJTEUgKipmLCBjaGFyICoqc3RhdGVzKSB7CiAgICAgICAgICBTVFJWX0ZPUkVBQ0goc3RhdGUsIHN0YXRlcykgewogICAgICAgICAgICAgICAgICBpbnQgazsKICAKQEAgLTM3Myw3ICszNzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8oaywgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIC9zeXMvcG93ZXIvc3RhdGU6ICVtIiwgKnN0YXRlKTsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYyBiL3NyYy91ZGV2L3VkZXZhZG0tdHJpZ2dlci5jCi1pbmRleCA3N2Q5NWU1MTNmLi4yNWNlNGFiZmIxIDEwMDY0NAoraW5kZXggNjBjNjhiNTAyOWNmLi5mZGNhMDNkM2Q0MmMgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYwogKysrIGIvc3JjL3VkZXYvdWRldmFkbS10cmlnZ2VyLmMKIEBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBpbnQgZXhlY19saXN0KHNkX2RldmljZV9lbnVtZXJhdG9yICplLCBjb25zdCBjaGFyICphY3Rpb24sIFNldCAqc2V0dGxlX3NlCkBAIC0zODMsMTMgKzM4MSwxMyBAQAogLSAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZmlsZW5hbWUsIGFjdGlvbiwgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwogKyAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZmlsZW5hbWUsIGFjdGlvbiwgMCk7CiAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19mdWxsX2Vycm5vKHIgPT0gLUVOT0VOVCA/IExPR19ERUJVRyA6IExPR19FUlIsIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvICclcyc6ICVtIiwgYWN0aW9uLCBmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmUgPSBJTl9TRVQociwgLUVOT0VOVCwgLUVBQ0NFUywgLUVOT0RFViwgLUVST0ZTKTsKKyAKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2ZC5jIGIvc3JjL3VkZXYvdWRldmQuYwotaW5kZXggY2I1MTIzMDQyYS4uZWEzMDlhOWU3ZiAxMDA2NDQKK2luZGV4IGNhNjU0NzRmMjc2My4uMzg3ODA2ODE0MzFhIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldmQuYwogKysrIGIvc3JjL3VkZXYvdWRldmQuYwotQEAgLTExMTMsNyArMTExMyw3IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZV9jaGFuZ2Vfb25lKHNkX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpzeXNwYXRoKSB7CitAQCAtMTA4OSw3ICsxMDg5LDcgQEAgc3RhdGljIGludCBzeW50aGVzaXplX2NoYW5nZV9vbmUoc2RfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnN5c3BhdGgpIHsKICAKICAgICAgICAgIGZpbGVuYW1lID0gc3Ryam9pbmEoc3lzcGF0aCwgIi91ZXZlbnQiKTsKICAgICAgICAgIGxvZ19kZXZpY2VfZGVidWcoZGV2LCAiZGV2aWNlIGlzIGNsb3NlZCwgc3ludGhlc2lzaW5nICdjaGFuZ2UnIG9uICVzIiwgc3lzcGF0aCk7CkBAIC0zOTksMTAgKzM5NywxMCBAQAogICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RldmljZV9kZWJ1Z19lcnJubyhkZXYsIHIsICJGYWlsZWQgdG8gd3JpdGUgJ2NoYW5nZScgdG8gJXM6ICVtIiwgZmlsZW5hbWUpOwogICAgICAgICAgcmV0dXJuIDA7CiBkaWZmIC0tZ2l0IGEvc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMgYi9zcmMvdmNvbnNvbGUvdmNvbnNvbGUtc2V0dXAuYwotaW5kZXggNzVkMDUyYWU3MC4uNWExNWM5MzlkOCAxMDA2NDQKK2luZGV4IDlkNzA2MDg1ZmI0Ny4uMzBkY2ZhODZmNGQwIDEwMDY0NAogLS0tIGEvc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMKICsrKyBiL3NyYy92Y29uc29sZS92Y29uc29sZS1zZXR1cC5jCi1AQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbnQgdG9nZ2xlX3V0ZjhfdmMoY29uc3QgY2hhciAqbmFtZSwgaW50IGZkLCBib29sIHV0ZjgpIHsKK0BAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGludCB0b2dnbGVfdXRmOF92Yyhjb25zdCBjaGFyICpuYW1lLCBpbnQgZmQsIGJvb2wgdXRmOCkgewogIHN0YXRpYyBpbnQgdG9nZ2xlX3V0Zjhfc3lzZnMoYm9vbCB1dGY4KSB7CiAgICAgICAgICBpbnQgcjsKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWVzb24tQWRkLURlZmktb2JqY29weS1vcHRpb24tdG8tc3BlY2lmeS1vYmpjb3B5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tZXNvbi1BZGQtRGVmaS1vYmpjb3B5LW9wdGlvbi10by1zcGVjaWZ5LW9iamNvcHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNzY0YjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tZXNvbi1BZGQtRGVmaS1vYmpjb3B5LW9wdGlvbi10by1zcGVjaWZ5LW9iamNvcHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDNmMzdhZDVlMDgzZGNhZDUxYzIxYzEwNTBiMjgyOWI3MGQyNDBiNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA2IEF1ZyAyMDE5IDAzOjEwOjIwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgLURlZmktb2JqY29weSBvcHRpb24gdG8gc3BlY2lmeSBvYmpjb3B5Ci0KLVRoaXMgaGVscHMgaW4gY3Jvc3MgY29tcGlsaW5nIGZvciB4ODYgdGFyZ2V0IG9uIGEgYWFyY2g2NCBob3N0IGUuZy4KLUZpeGVzCi1UT1BESVIvYnVpbGQvdG1wL2hvc3R0b29scy9vYmpjb3B5OnNyYy9ib290L2VmaS9zeXN0ZW1kX2Jvb3Quc286IEludmFsaWQgYmZkIHRhcmdldAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgfCAyICsrCi0gc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIHwgNSArKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCBkNGVjMzdkZGEyLi5kYzFjOTZlMTEyIDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMjk2LDYgKzI5Niw4IEBAIG9wdGlvbignZWZpLWNjJywgdHlwZSA6ICdhcnJheScsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3RoZSBjb21waWxlciB0byB1c2UgZm9yIEVGSSBtb2R1bGVzJykKLSBvcHRpb24oJ2VmaS1sZCcsIHR5cGUgOiAnc3RyaW5nJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAndGhlIGxpbmtlciB0byB1c2UgZm9yIEVGSSBtb2R1bGVzJykKLStvcHRpb24oJ2VmaS1vYmpjb3B5JywgdHlwZSA6ICdzdHJpbmcnLAotKyAgICAgICBkZXNjcmlwdGlvbiA6ICd0aGUgb2JqY29weSB0byB1c2UgZm9yIEVGSScpCi0gb3B0aW9uKCdlZmktbGliZGlyJywgdHlwZSA6ICdzdHJpbmcnLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICdwYXRoIHRvIHRoZSBFRkkgbGliIGRpcmVjdG9yeScpCi0gb3B0aW9uKCdlZmktbGRzZGlyJywgdHlwZSA6ICdzdHJpbmcnLAotZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotaW5kZXggMGFlMzE5MTYzNS4uNWE3MTM3YmM4NCAxMDA2NDQKLS0tLSBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotKysrIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1AQCAtODgsNyArODgsMTAgQEAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgIG91dHB1dCA6ICdlZmlfY29uZmlnLmgnLAotICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIDogZWZpX2NvbmYpCi0gCi0tICAgICAgICBvYmpjb3B5ID0gZmluZF9wcm9ncmFtKCdvYmpjb3B5JykKLSsgICAgICAgIG9iamNvcHkgPSBnZXRfb3B0aW9uKCdlZmktb2JqY29weScpCi0rICAgICAgICBpZiBvYmpjb3B5ID09ICcnCi0rICAgICAgICAgICAgICAgIG9iamNvcHkgPSBmaW5kX3Byb2dyYW0oJ29iamNvcHknLCByZXF1aXJlZDogdHJ1ZSkKLSsgICAgICAgIGVuZGlmCi0gCi0gICAgICAgICBlZmlfbGRzZGlyID0gZ2V0X29wdGlvbignZWZpLWxkc2RpcicpCi0gICAgICAgICBhcmNoX2xkcyA9ICdlbGZfQDBAX2VmaS5sZHMnLmZvcm1hdChnbnVfZWZpX3BhdGhfYXJjaCkKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcHN0b3JlLWZpeC11c2UtYWZ0ZXItZnJlZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcHN0b3JlLWZpeC11c2UtYWZ0ZXItZnJlZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQxNDdhMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXBzdG9yZS1maXgtdXNlLWFmdGVyLWZyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDFiMzE1NmVkZDI5MWUwODgyZDgwYTY5NWQwMzVkZDMwNTIxMzQ1ZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IEZyaSwgNiBTZXAgMjAxOSAxNTowNDowMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBwc3RvcmU6IGZpeCB1c2UgYWZ0ZXIgZnJlZQotCi1UaGUgbWVtb3J5IGlzIHN0aWxsIG5lZWRlZCBpbiB0aGUgc2Rfam91cm5hbF9zZW5kdigpIGFmdGVyIHRoZSAnaWYnIGJsb2NrLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAxZTE5ZjVhYzBkNjgwYTYzZWNjYWU3ZWYxZmM2Y2UyMjVkY2EwYmJmKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFlvbmd4aW4gTGl1IDx5b25neGluLmxpdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3BzdG9yZS9wc3RvcmUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wc3RvcmUvcHN0b3JlLmMgYi9zcmMvcHN0b3JlL3BzdG9yZS5jCi1pbmRleCBjNzYwYjNlODk5Li44ZmZlNTIzODMwIDEwMDY0NAotLS0tIGEvc3JjL3BzdG9yZS9wc3RvcmUuYwotKysrIGIvc3JjL3BzdG9yZS9wc3RvcmUuYwotQEAgLTExNyw2ICsxMTcsNyBAQCBzdGF0aWMgaW50IGNvbXBhcmVfcHN0b3JlX2VudHJpZXMoY29uc3Qgdm9pZCAqX2EsIGNvbnN0IHZvaWQgKl9iKSB7Ci0gCi0gc3RhdGljIGludCBtb3ZlX2ZpbGUoUFN0b3JlRW50cnkgKnBlLCBjb25zdCBjaGFyICpzdWJkaXIpIHsKLSAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmlmZF9wYXRoID0gTlVMTCwgKm9mZF9wYXRoID0gTlVMTDsKLSsgICAgICAgIF9jbGVhbnVwX2ZyZWVfIHZvaWQgKmZpZWxkID0gTlVMTDsKLSAgICAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCwgKm1lc3NhZ2U7Ci0gICAgICAgICBzdHJ1Y3QgaW92ZWMgaW92ZWNbMl07Ci0gICAgICAgICBpbnQgbl9pb3ZlYyA9IDAsIHI7Ci1AQCAtMTM4LDcgKzEzOSw2IEBAIHN0YXRpYyBpbnQgbW92ZV9maWxlKFBTdG9yZUVudHJ5ICpwZSwgY29uc3QgY2hhciAqc3ViZGlyKSB7Ci0gICAgICAgICBpb3ZlY1tuX2lvdmVjKytdID0gSU9WRUNfTUFLRV9TVFJJTkcobWVzc2FnZSk7Ci0gCi0gICAgICAgICBpZiAocGUtPmNvbnRlbnRfc2l6ZSA+IDApIHsKLS0gICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gdm9pZCAqZmllbGQgPSBOVUxMOwotICAgICAgICAgICAgICAgICBzaXplX3QgZmllbGRfc2l6ZTsKLSAKLSAgICAgICAgICAgICAgICAgZmllbGRfc2l6ZSA9IHN0cmxlbigiRklMRT0iKSArIHBlLT5jb250ZW50X3NpemU7Ci0tLSAKLTIuMTQuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXVuaXQtZmlsZS5jLWNvbnNpZGVyLXN5bWxpbmstb24tZmlsZXN5c3RlbXMtbGlrZS1ORlMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXVuaXQtZmlsZS5jLWNvbnNpZGVyLXN5bWxpbmstb24tZmlsZXN5c3RlbXMtbGlrZS1ORlMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMjBhMGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS11bml0LWZpbGUuYy1jb25zaWRlci1zeW1saW5rLW9uLWZpbGVzeXN0ZW1zLWxpa2UtTkZTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBkMDEyMmMwNzdkMmQ4ZmQwZmQyOWI0NjNjNTAxZTdkZGY5MTc3ZmYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNCBTZXAgMjAxOSAxNzowNDo1MCArMDgwMAotU3ViamVjdDogW1BBVENIXSB1bml0LWZpbGUuYzogY29uc2lkZXIgc3ltbGluayBvbiBmaWxlc3lzdGVtcyBsaWtlIE5GUwotCi1Tb21lIGZpbGVzeXN0ZW1zIGRvIG5vdCBmdWxseSBzdXBwb3J0IHJlYWRkaXIsIGFjY29yZGluZyB0byB0aGUgbWFudWFsLAotc28gd2Ugc2hvdWxkIGFsc28gY29uc2lkZXIgRFRfVU5LTk9XTiB0byBjb3JyZWN0bHkgaGFuZGxlIHN5bWxpbmtzLgotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTM2MzddCi0tLS0KLSBzcmMvc2hhcmVkL3VuaXQtZmlsZS5jIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3VuaXQtZmlsZS5jIGIvc3JjL3NoYXJlZC91bml0LWZpbGUuYwotaW5kZXggNGE1ZjIzZTZjMS4uODM3MzEwMzAwMCAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvdW5pdC1maWxlLmMKLSsrKyBiL3NyYy9zaGFyZWQvdW5pdC1maWxlLmMKLUBAIC0yNDcsNiArMjQ3LDcgQEAgaW50IHVuaXRfZmlsZV9idWlsZF9uYW1lX21hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpfZmlsZW5hbWVfZnJlZSA9IE5VTEwsICpzaW1wbGlmaWVkID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdWZmaXgsICpkc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmFsaWRfdW5pdF9uYW1lOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IHNiOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX3VuaXRfbmFtZSA9IHVuaXRfbmFtZV9pc192YWxpZChkZS0+ZF9uYW1lLCBVTklUX05BTUVfQU5ZKTsKLSAKLUBAIC0yNzksNyArMjgwLDEwIEBAIGludCB1bml0X2ZpbGVfYnVpbGRfbmFtZV9tYXAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2htYXBfY29udGFpbnMoaWRzLCBkZS0+ZF9uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotIAotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZS0+ZF90eXBlID09IERUX0xOSykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZS0+ZF90eXBlID09IERUX0xOSyB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGUtPmRfdHlwZSA9PSBEVF9VTktOT1dOICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RhdChmaWxlbmFtZSwgJnNiKSA9PSAwICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Iuc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkxOSykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIGRvbid0IGV4cGxpY2l0bHkgY2hlY2sgZm9yIGFsaWFzIGxvb3BzIGhlcmUuIHVuaXRfaWRzX21hcF9nZXQoKSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbGltaXRzIHRoZSBudW1iZXIgb2YgaG9wcyBzaG91bGQgYmUgdXNlZCB0byBhY2Nlc3MgdGhlIG1hcC4gKi8KLSAKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCmluZGV4IGM2MjEzYWIuLmE1ZTQxYmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMWViODQ1MzRkZWEwNWQ0MWFmZWQxZDg5OGNiYTIxMmFkN2QzMTBkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2ViMTJhNmJhMGJjZTE0OTcxN2VhYWJlYjE1MDVkMzc5YjNkNzA1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTM6NDE6NDEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yNF0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKK1N1YmplY3Q6IFtQQVRDSF0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCkBAIC0xMCwxNCArMTAsMTUgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtSZWJhc2VkIGZvciB2MjQyXQogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKIC0tLQotIHNyYy9iYXNpYy9zb3J0LXV0aWwuaCAgICAgICAgICAgICAgfCAxNCAtLS0tLS0tLS0tLS0tLQotIHNyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMgfCAxOSArKysrKysrKysrKysrKy0tLS0tCi0gc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYyAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHNyYy9iYXNpYy9zb3J0LXV0aWwuaCAgICAgICAgICAgICAgfCAxNCAtLS0tLS0tLS0tLS0KKyBzcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jIHwgMTkgKysrKysrKysrKystLS0tLQorIHNyYy9zaGFyZWQvZm9ybWF0LXRhYmxlLmMgICAgICAgICAgfCAzNiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KICAzIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oIGIvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCi1pbmRleCBlMDI5Zjg2NDZlLi4yN2Q2OGIzNDFjIDEwMDY0NAoraW5kZXggZTAyOWY4NjQ2ZWIwLi4yN2Q2OGIzNDFjZjMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvc29ydC11dGlsLmgKICsrKyBiL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAogQEAgLTU0LDE3ICs1NCwzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIF9fY29tcGFyX2ZuCkBAIC0zOSw3ICs0MCw3IEBACiAtICAgICAgICAgICAgICAgIHFzb3J0X3Jfc2FmZSgocCksIChuKSwgc2l6ZW9mKChwKVswXSksIChfX2NvbXBhcl9kX2ZuX3QpIF9mdW5jXywgdXNlcmRhdGEpOyBcCiAtICAgICAgICB9KQogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jCi1pbmRleCBjODM1NzVjN2M4Li43MmY4ZjNhMDUwIDEwMDY0NAoraW5kZXggZDc5MGU4ZmQwYjE5Li40MmUwZmQ3YzliM2MgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jCiBAQCAtMTI4LDkgKzEyOCwxMyBAQCBzdGF0aWMgdm9pZCB0cmllX2ZyZWUoc3RydWN0IHRyaWUgKnRyaWUpIHsKQEAgLTgzLDEwICs4NCwxMCBAQAogIH0KICAKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Zvcm1hdC10YWJsZS5jIGIvc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYwotaW5kZXggYTVjMGE5OWIwOC4uZDU5NWNiZTM3MiAxMDA2NDQKK2luZGV4IDQyNTAxMzA0NjQ5MS4uMzNjMWM1YTEyZDQzIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYwogKysrIGIvc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYwotQEAgLTg1MCwzMSArODUwLDMzIEBAIHN0YXRpYyBpbnQgY2VsbF9kYXRhX2NvbXBhcmUoVGFibGVEYXRhICphLCBzaXplX3QgaW5kZXhfYSwgVGFibGVEYXRhICpiLCBzaXplX3QKK0BAIC0xMTY0LDMxICsxMTY0LDMzIEBAIHN0YXRpYyBpbnQgY2VsbF9kYXRhX2NvbXBhcmUoVGFibGVEYXRhICphLCBzaXplX3QgaW5kZXhfYSwgVGFibGVEYXRhICpiLCBzaXplX3QKICAgICAgICAgIHJldHVybiBDTVAoaW5kZXhfYSwgaW5kZXhfYik7CiAgfQogIApAQCAtMTMwLDcgKzEzMSw3IEBACiAgICAgICAgICB9CiAgCiAgICAgICAgICAvKiBPcmRlciBpZGVudGljYWwgbGluZXMgYnkgdGhlIG9yZGVyIHRoZXJlIHdlcmUgb3JpZ2luYWxseSBhZGRlZCBpbiAqLwotQEAgLTExMDcsNyArMTEwOSwxMiBAQCBpbnQgdGFibGVfcHJpbnQoVGFibGUgKnQsIEZJTEUgKmYpIHsKK0BAIC0xNjkwLDcgKzE2OTIsMTIgQEAgaW50IHRhYmxlX3ByaW50KFRhYmxlICp0LCBGSUxFICpmKSB7CiAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3Jvd3M7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRbaV0gPSBpICogdC0+bl9jb2x1bW5zOwogIApAQCAtMTQ0LDcgKzE0NSw3IEBACiAgICAgICAgICB9CiAgCiAgICAgICAgICBpZiAodC0+ZGlzcGxheV9tYXApCi1AQCAtMTUzNCw3ICsxNTQxLDEyIEBAIGludCB0YWJsZV90b19qc29uKFRhYmxlICp0LCBKc29uVmFyaWFudCAqKnJldCkgeworQEAgLTIyMzYsNyArMjI0MywxMiBAQCBpbnQgdGFibGVfdG9fanNvbihUYWJsZSAqdCwgSnNvblZhcmlhbnQgKipyZXQpIHsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fcm93czsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZFtpXSA9IGkgKiB0LT5uX2NvbHVtbnM7CiAgCkBAIC0xNTgsNiArMTU5LDMgQEAKICAgICAgICAgIH0KICAKICAgICAgICAgIGlmICh0LT5kaXNwbGF5X21hcCkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1sb2dpbi1icmlnaHRuZXNzLmMtaW5jbHVkZS1zeXMtd2FpdC5oLnBhdGNoCmluZGV4IGRjYWU2NjguLmJhNzQyNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtbG9naW4tYnJpZ2h0bmVzcy5jLWluY2x1ZGUtc3lzLXdhaXQuaC5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLUluY2x1ZGUgc3lzL3dhaXQuaAorRnJvbSAxMDY5MjIzMzVlYzUwMmJjYjQ0NTFjNTRhODliZTQ5Zjg4ZmE1NGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorRGF0ZTogRnJpLCAxMyBTZXAgMjAxOSAxOToyNjoyNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIHN5cy93YWl0LmgKIAogRml4ZXM6CiBzcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYzoxNTg6ODU6IGVycm9yOiAnV0VYSVRFRCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1dJRkVYSVRFRCc/CkBAIC04LDEyICsxMSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmMgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL3NyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jIGIvc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmMKLWluZGV4IDhkZmE5N2Q3YWUuLmJkZGQ0YTI3MjcgMTAwNjQ0CitpbmRleCAzZjRiNjVlMWZkZjEuLjVhZjdlM2Q1Y2UzZiAxMDA2NDQKIC0tLSBhL3NyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jCiArKysgYi9zcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYwogQEAgLTEsNSArMSw2IEBACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YTMzNGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSBiZGJhZmUxOGMzYmY5OWIzYjY5MWNkNTJiOWNjZmY2MGYzMTM4OTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyNyBKdW4gMjAxOCAxNjowOToyNCArMDgwMAotU3ViamVjdDogW1BBVENIIDIvNV0gdXNlIGxuciB3cmFwcGVyIGluc3RlYWQgb2YgbG9va2luZyBmb3IgLS1yZWxhdGl2ZSBvcHRpb24KLSBmb3IgbG4KLQotUmVtb3ZlIGZpbGUgbWFudWFsbHkgdG8gYXZvaWQgdGhlICdGaWxlIEV4aXN0cycgZXJyb3Igd2hlbiBjcmVhdGluZwotc3ltbGluay4gVGhpcyBpcyBiZWNhdXNlIHRoZSBvcmlnaW5hbCAnbG4nIGNvbW1hbmQgdXNlcyAnLWYnIG9wdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLVtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8IDQgLS0tLQotIHRvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCB8IDMgKystCi0gdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoICAgIHwgNyArKysrKystCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCBlNWNlYjFlMTY5Li43OWI3NjJmYWViIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNTc5LDEwICs1NzksNiBAQCBlbmRmb3JlYWNoCi0gCi0gY29uZi5zZXRfcXVvdGVkKCdURUxJTklUJywgZ2V0X29wdGlvbigndGVsaW5pdC1wYXRoJykpCi0gCi0taWYgcnVuX2NvbW1hbmQoJ2xuJywgJy0tcmVsYXRpdmUnLCAnLS1oZWxwJykucmV0dXJuY29kZSgpICE9IDAKLS0gICAgICAgIGVycm9yKCdsbiBkb2VzIG5vdCBzdXBwb3J0IC0tcmVsYXRpdmUgKGFkZGVkIGluIGNvcmV1dGlscyA4LjE2KScpCi0tZW5kaWYKLS0KLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKLSBncGVyZiA9IGZpbmRfcHJvZ3JhbSgnZ3BlcmYnKQotZGlmZiAtLWdpdCBhL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCBiL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAotaW5kZXggZGEwZDEzYTM0MS4uOTBiYzBhOTNjMiAxMDA3NTUKLS0tLSBhL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAotKysrIGIvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCi1AQCAtOCw1ICs4LDYgQEAgbWtkaXIgLXZwICIkKGRpcm5hbWUgIiR7REVTVERJUjotfSQyIikiCi0gaWYgWyAiJChkaXJuYW1lICQxKSIgPSAuIF07IHRoZW4KLSAgICAgbG4gLXZmcyAtVCAiJDEiICIke0RFU1RESVI6LX0kMiIKLSBlbHNlCi0tICAgIGxuIC12ZnMgLVQgLS1yZWxhdGl2ZSAiJHtERVNURElSOi19JDEiICIke0RFU1RESVI6LX0kMiIKLSsgICAgcm0gLWYgIiR7REVTVERJUjotfSQyIgotKyAgICBsbnIgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCi0gZmkKLWRpZmYgLS1naXQgYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKLWluZGV4IGE0ODNkNzViODYuLjNjMDFjNTIzZjEgMTAwNzU1Ci0tLS0gYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKLSsrKyBiL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAotQEAgLTI1LDQgKzI1LDkgQEAgY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgICAgIDs7Ci0gZXNhYwotIAotLWxuIC12ZnMgLS1yZWxhdGl2ZSAiJHVuaXRwYXRoIiAiJGRpciIKLStpZiBbIC1kICIkZGlyIiBdOyB0aGVuCi0rICAgICAgICBybSAtZiAiJGRpci8kdW5pdCIKLSsgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpci8kdW5pdCIKLStlbHNlCi0rICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIiCi0rZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKaW5kZXggNjY5NWQ1Ni4uYzYyMDQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDQ3ODY0OTg5Mzg4YmNkMDRkNjQ3ZWNmNjE4YWQ3ZTI2MDM5OWRiYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY5MDc4NTAxYTE0OTVjOTk5MTQzMWQxNDM1ZDA4MWNkMmU4MzAzMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCA1IFNlcCAyMDE1IDA2OjMxOjQ3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy81XSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKK1N1YmplY3Q6IFtQQVRDSF0gaW1wbG1lbnQgc3lzdGVtZC1zeXN2LWluc3RhbGwgZm9yIE9FCiAKIFVzZSB1cGRhdGUtcmMuZCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBzdGF0dXMgY29tbWFuZAogdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3lzdiBzZXJ2aWNlCkBAIC05LDEyICs5LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIHwgNiArKystLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLWluZGV4IDhjMTZjZjkuLjlmMDc4YTEgMTAwNzU1CitpbmRleCA4YzE2Y2Y5OTkxM2YuLjlmMDc4YTEyMTQ2OSAxMDA3NTUKIC0tLSBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KICsrKyBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KIEBAIC0zMiwxNyArMzIsMTcgQEAgY2FzZSAiJDEiIGluCkBAIC0zOCw2ICszOSwzIEBACiAgICAgICAgICA7OwogICAgICAqKQogICAgICAgICAgdXNhZ2UgOzsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoCmluZGV4IDJlMzlmN2EuLjE0MDQ4OTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyZV9mbl90LWFuZC1jb21wYXJpc29uX2ZuXy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2gKQEAgLTEsMjQgKzEsMjggQEAKLUZyb20gYTk0MjFkNTUxMDJmYzg0Zjc3ZjdjMjFhMjQ3OWZjZDAwNjUyYjg5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjMzZGU4NzJiOWIwMzNlYzg0MmMyMTM1MTUyZDJlMDA2YWM0NGMxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTM6NTU6MTIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8yNF0gbWlzc2luZ190eXBlLmg6IGFkZCBfX2NvbXBhcmVfZm5fdCBhbmQgY29tcGFyaXNvbl9mbl90CitTdWJqZWN0OiBbUEFUQ0hdIG1pc3NpbmdfdHlwZS5oOiBhZGQgX19jb21wYXJlX2ZuX3QgYW5kIGNvbXBhcmlzb25fZm5fdAogCiBNYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBhbmQgX19jb21wYXJlX2ZuX3QKIGlzIG5vdCBwcm92aWRlZC4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCitTaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitbUmViYXNlZCBmb3IgdjI0NF0KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtSZWJhc2VkIGZvciB2MjQyXQogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCB8IDkgKysrKysrKysrCiAgc3JjL2Jhc2ljL3NvcnQtdXRpbC5oICAgIHwgMSArCisgc3JjL2NvcmUva21vZC1zZXR1cC5jICAgIHwgMSArCiAgc3JjL2pvdXJuYWwvY2F0YWxvZy5jICAgIHwgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCisgNCBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmggYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKLWluZGV4IGJmOGE2Y2FhMWIuLjIxMzRmZTUwOTUgMTAwNjQ0CitpbmRleCBiZjhhNmNhYTFiNDYuLmM0ODdlNjVlN2JkZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiBAQCAtMTAsMyArMTAsMTIgQEAKQEAgLTM1LDI5ICszOSwzOCBAQAogK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwogKyNlbmRpZgogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb3J0LXV0aWwuaCBiL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAotaW5kZXggZTAyOWY4Ni4uNzI0N2Q0MCAxMDA2NDQKK2luZGV4IDI3ZDY4YjM0MWNmMy4uMzA3ZWE0YWMwZThlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCiArKysgYi9zcmMvYmFzaWMvc29ydC11dGlsLmgKIEBAIC00LDYgKzQsNyBAQAogICNpbmNsdWRlIDxzdGRsaWIuaD4KICAKICAjaW5jbHVkZSAibWFjcm8uaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3R5cGUuaCIKICAKICB2b2lkICp4YnNlYXJjaF9yKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9fY29tcGFyX2RfZm5fdCBjb21wYXIsIHZvaWQgKmFyZyk7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUva21vZC1zZXR1cC5jIGIvc3JjL2NvcmUva21vZC1zZXR1cC5jCitpbmRleCAxMjg2NzQzMjczNjIuLjA5Y2NkNjEzZTMyYyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYworKysrIGIvc3JjL2NvcmUva21vZC1zZXR1cC5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJrbW9kLXNldHVwLmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmdfdHlwZS5oIgorIAorICNpZiBIQVZFX0tNT0QKKyAjaW5jbHVkZSAibW9kdWxlLXV0aWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvam91cm5hbC9jYXRhbG9nLmMgYi9zcmMvam91cm5hbC9jYXRhbG9nLmMKLWluZGV4IDdiZWZmYzFlMWEuLjQ4MThhMmU1Y2MgMTAwNjQ0CitpbmRleCA3MGIyYzhiNDZjNGUuLmQ1NzRhNjQ1ODZmMSAxMDA2NDQKIC0tLSBhL3NyYy9qb3VybmFsL2NhdGFsb2cuYwogKysrIGIvc3JjL2pvdXJuYWwvY2F0YWxvZy5jCi1AQCAtMjksNiArMjksNyBAQAorQEAgLTI4LDYgKzI4LDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3R5cGUuaCIKICAKICBjb25zdCBjaGFyICogY29uc3QgY2F0YWxvZ19maWxlX2RpcnNbXSA9IHsKICAgICAgICAgICIvdXNyL2xvY2FsL2xpYi9zeXN0ZW1kL2NhdGFsb2cvIiwKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKaW5kZXggN2VlMGQ0OC4uNTM4YTk5YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1JbmNsdWRlIHNpZ25hbC5oCitGcm9tIDA4MmQyZWIyYTY1NTI1ODkwYTkxMzcyMzc2NGU2N2EzNmVlNzUzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CitEYXRlOiBGcmksIDEzIFNlcCAyMDE5IDE5OjI2OjI3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgc2lnbmFsLmgKIAogRml4ZXMgc2V2ZXJhbCBzaWduYWwgc2V0IHJlbGF0ZWQgZXJyb3JzOgogc3JjL2Jhc2ljL2NvcHkuYzo5MjoxOTogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdzaWdlbXB0eXNldCcgWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCkBAIC05LDE3ICsxMiwxOCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL2NvcHkuYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2NvcHkuYyBiL3NyYy9iYXNpYy9jb3B5LmMKLWluZGV4IGNhMzExZTAyMWUuLjNjZjdmYzE2OTcgMTAwNjQ0CitpbmRleCA5MDI4ODY4ZjY5NmQuLjUxNjg1ODZmYTUyMiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9jb3B5LmMKICsrKyBiL3NyYy9iYXNpYy9jb3B5LmMKLUBAIC0xMiw2ICsxMiw3IEBACitAQCAtOCw2ICs4LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+CiAgI2luY2x1ZGUgPHN5cy94YXR0ci5oPgotICNpbmNsdWRlIDx0aW1lLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgogKyNpbmNsdWRlIDxzaWduYWwuaD4KICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IGEyYWFkNDAuLjBkZWE5MzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gN2JjZjNiMTY2Njk0MDkwNDk3YTBhY2QyYzUyOTllNGUwNGZjYzliNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGFmMTY4Y2VmY2EwMWY4ZjJkYTMzNmYxYzgyNjIwYzI4NGRjNzRmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTQ6MDQ6MjEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8yNF0gYWRkIGZhbGxiYWNrIHBhcnNlX3ByaW50Zl9mb3JtYXQgaW1wbGVtZW50YXRpb24KK1N1YmplY3Q6IFtQQVRDSF0gYWRkIGZhbGxiYWNrIHBhcnNlX3ByaW50Zl9mb3JtYXQgaW1wbGVtZW50YXRpb24KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCkBAIC0xMCwxMSArMTAsMTIgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAgc3JjL2Jhc2ljL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgNSArCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrCiAgc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCAgICAgICAgICB8ICAgMiArLQogIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgfCAgIDIgKy0KICA2IGZpbGVzIGNoYW5nZWQsIDMzOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpAQCAtMjIsMTAgKzIzLDEwIEBACiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDc5Yjc2MmZhZWIuLjdmOGM2Nzk0MTEgMTAwNjQ0CitpbmRleCBmYzIxNmQyMmRhMjQuLmEyNTk5NjgwM2Q2NCAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTYxMyw2ICs2MTMsNyBAQCBlbmRpZgorQEAgLTY0MCw2ICs2NDAsNyBAQCBlbmRpZgogIGZvcmVhY2ggaGVhZGVyIDogWydjcnlwdC5oJywKICAgICAgICAgICAgICAgICAgICAnbGludXgvbWVtZmQuaCcsCiAgICAgICAgICAgICAgICAgICAgJ2xpbnV4L3ZtX3NvY2tldHMuaCcsCkBAIC0zNCwxMCArMzUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvbWVtY2hlY2suaCcsCiAgICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnLAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZCBiL3NyYy9iYXNpYy9tZXNvbi5idWlsZAotaW5kZXggZDZjYWYyOGYxNC4uMzJjMWFjZjM0OSAxMDA2NDQKK2luZGV4IGNjYjIyZTE1OTUwNS4uMjVjNzdlYTZiYzBlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCiArKysgYi9zcmMvYmFzaWMvbWVzb24uYnVpbGQKLUBAIC0zMTIsNiArMzEyLDExIEBAIGZvcmVhY2ggaXRlbSA6IFtbJ2FmJywgICAgIGFmX2xpc3RfdHh0LCAgICAgJ2FmJywgICAgICAgICAnJ10sCitAQCAtMzEzLDYgKzMxMywxMSBAQCBmb3JlYWNoIGl0ZW0gOiBbWydhZicsICAgICBhZl9saXN0X3R4dCwgICAgICdhZicsICAgICAgICAgJyddLAogIGVuZGZvcmVhY2gKICAKICBiYXNpY19zb3VyY2VzICs9IGdlbmVyYXRlZF9ncGVyZl9oZWFkZXJzCkBAIC01MSw3ICs1Miw3IEBACiAgICAgICAgICAnZ2NyeXB0LXV0aWwuaCcpCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi40OTQzN2U1NDQ1CitpbmRleCAwMDAwMDAwMDAwMDAuLjQ5NDM3ZTU0NDU0MAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwogQEAgLTAsMCArMSwyNzMgQEAKQEAgLTMzMCw3ICszMzEsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjQ3YmU3NTIyZDcKK2luZGV4IDAwMDAwMDAwMDAwMC4uNDdiZTc1MjJkN2ZhCiAtLS0gL2Rldi9udWxsCiArKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCiBAQCAtMCwwICsxLDU3IEBACkBAIC0zOTIsNyArMzkzLDcgQEAKICsKICsjZW5kaWYgLyogSEFWRV9QUklOVEZfSCAqLwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdGRpby11dGlsLmggYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCi1pbmRleCBjM2I5NDQ4ZDRmLi4yOTM3YWExM2IxIDEwMDY0NAoraW5kZXggYzNiOTQ0OGQ0ZjRmLi4yOTM3YWExM2IxNzggMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCiArKysgYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCiBAQCAtMSwxMyArMSwxMyBAQApAQCAtNDExLDcgKzQxMiw3IEBACiAgI2RlZmluZSBzbnByaW50Zl9vayhidWYsIGxlbiwgZm10LCAuLi4pIFwKICAgICAgICAgICgoc2l6ZV90KSBzbnByaW50ZihidWYsIGxlbiwgZm10LCBfX1ZBX0FSR1NfXykgPCAobGVuKSkKIGRpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1pbmRleCA1ZWYxMWZhMWE0Li42Mzg0YWI2MjBjIDEwMDY0NAoraW5kZXggOTEyZWNlZjczY2NlLi40M2VkNzU2YmRhNTMgMTAwNjQ0CiAtLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwogKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKIEBAIC0yLDcgKzIsNiBAQApAQCAtNDIwLDkgKzQyMSw5IEBACiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAtI2luY2x1ZGUgPHByaW50Zi5oPgogICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogICNpbmNsdWRlIDxzeXMvdW4uaD4KLUBAIC0yMSw2ICsyMCw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorQEAgLTIwLDYgKzE5LDcgQEAKICAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWM1OTk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGRjMGE2YTlmZTRkYTk3MzhlZmFiYTk0MjIzM2FkMzlkYTYyNWE5MTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDIxIEZlYiAyMDE5IDE2OjI4OjIxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBydWxlczogd2hpdGVsaXN0IGhkKiBkZXZpY2VzCi0KLXFlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCi1DT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcwotL2Rldi9oZCouIFBhdGNoIHJlamVjdGVkIHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERSBpcyBkZXByZWNhdGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzEyNzZdCi0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1bcmViYXNlZCBmb3Igc3lzdGVtZCAyNDFdCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1bcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+Ci0tLS0KLSBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLWluZGV4IDc4MDJiMWM5NGYuLmMwNTM0YWUyNmEgMTAwNjQ0Ci0tLS0gYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLSsrKyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotQEAgLTcsNyArNyw3IEBAIEFDVElPTj09InJlbW92ZSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gRU5We1VERVZfRElTQUJMRV9QRVJTSVNURU5UX1NUT1JBR0VfUlVMRVNfRkxBR309PSIxIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSAKLSBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0tS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8dWJpKnxzY20qfHBtZW0qfG5iZCp8emQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLStLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnx1YmkqfHNjbSp8cG1lbSp8bmJkKnx6ZCp8aGQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSAKLSAjIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgc3BhbiB0aGUgZW50aXJlIGRpc2sKLSBURVNUPT0id2hvbGVfZGlzayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDBmNzVlOGMuLmQzOTQ0NDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotSGFuZGxlIF9fY3B1X21hc2sgdXNhZ2UKK0Zyb20gZGJlOGIzZWU0NTU4MGRlZmVlZmNhYzkyOWI4OTdjNTQzN2ZmYzUwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KK0RhdGU6IEZyaSwgMTMgU2VwIDIwMTkgMTk6MjY6MjcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gSGFuZGxlIF9fY3B1X21hc2sgdXNhZ2UKIAogRml4ZXMgZXJyb3JzOgogCkBAIC0xNSwxMyArMTgsMTQgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oIHwgMiArKwogIHNyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgICAgfCAyICstCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvY3B1LXNldC11dGlsLmggYi9zcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oCi1pbmRleCAyNzgxMmRmZDU5Li5mNjk4ZjlkZjgzIDEwMDY0NAoraW5kZXggMjc4MTJkZmQ1OTIzLi4wYWI0MDczMWVhOTMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oCiArKysgYi9zcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oCiBAQCAtNiw2ICs2LDggQEAKQEAgLTM0LDcgKzM4LDcgQEAKICB0eXBlZGVmIHN0cnVjdCBDUFVTZXQgewogICAgICAgICAgY3B1X3NldF90ICpzZXQ7CiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLWluZGV4IGE3MTBkYjUzNzAuLmQxNjAxYWQ5MjkgMTAwNjQ0CitpbmRleCBjNjUwNjJkMjU2MmMuLjhiNmVlZmE5Y2RhZSAxMDA2NDQKIC0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKICsrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKIEBAIC0xLDYgKzEsNSBAQApAQCAtNDMsOCArNDcsOCBAQAogLSNpbmNsdWRlIDxzY2hlZC5oPgogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLUBAIC04LDYgKzcsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK0BAIC0xMCw2ICs5LDcgQEAKICAjaW5jbHVkZSA8ZmxvYXQuaD4KICAKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MTc1YjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBkMWJjY2M3MjFkZDhmNDNmZWUyOWM1ZGYwZTliNzgzNDVlNjlmNGI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyMSBGZWIgMjAxOSAxNjozODozOCArMDgwMAotU3ViamVjdDogW1BBVENIIDUvNV0gcnVsZXM6IHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMgaW4gaWRlIGRldmljZXMKLQotRm9ybWF0dGluZyBJREUgc3RvcmFnZSBkb2VzIG5vdCB0cmlnZ2VyICJjaGFuZ2UiIHVldmVudHMuIEFzIGEgcmVzdWx0Ci1jbGllbnRzIHVzaW5nIHVkZXYgQVBJIGRvbid0IGdldCBhbnkgdXBkYXRlcyBhZnRlcndhcmRzIGFuZCBnZXQgb3V0ZGF0ZWQKLWluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UuCi0uLi4KLXJvb3RAcWVtdXg4Ni02NDp+IyBta2ZzLmV4dDQgLUYgL2Rldi9oZGExCi1DcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjYyMTQ0IDRrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCi1GaWxlc3lzdGVtIFVVSUQ6IDk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgotCi1yb290QHFlbXV4ODYtNjQ6fiMgbHMgL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCi1sczogY2Fubm90IGFjY2VzcyAnL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotLi4uCi1JbmNsdWRlIGhkKiBpbiBhIG1hdGNoIGZvciB3YXRjaCBvcHRpb24gYXNzaWdubWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLQotcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKLUNPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCi0vZGV2L2hkKi4gQSBzaW1pbGFyIHBhdGNoIHJlamVjdGVkIGJ5IHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERQotaXMgZGVwcmVjYXRlZC4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQxXQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQotU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgotLS0tCi0gcnVsZXMvNjAtYmxvY2sucnVsZXMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ydWxlcy82MC1ibG9jay5ydWxlcyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCi1pbmRleCAzMTM0YWI5OTVlLi5jZDcyYTQ5NGExIDEwMDY0NAotLS0tIGEvcnVsZXMvNjAtYmxvY2sucnVsZXMKLSsrKyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCi1AQCAtOSw1ICs5LDUgQEAgQUNUSU9OPT0iY2hhbmdlIiwgU1VCU1lTVEVNPT0ic2NzaSIsIEVOVntERVZUWVBFfT09InNjc2lfZGV2aWNlIiwgVEVTVD09ImJsb2NrIiwKLSAKLSAjIHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMsIGNhdXNlZCBieSB0b29scyBjbG9zaW5nIHRoZSBkZXZpY2Ugbm9kZSB3aGljaCB3YXMgb3BlbmVkIGZvciB3cml0aW5nCi0gQUNUSU9OIT0icmVtb3ZlIiwgU1VCU1lTVEVNPT0iYmxvY2siLCBcCi0tICBLRVJORUw9PSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHViaSp8c2NtKnxwbWVtKnxuYmQqfHpkKiIsIFwKLSsgIEtFUk5FTD09Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8dWJpKnxzY20qfHBtZW0qfG5iZCp8emQqfGhkKiIsIFwKLSAgIE9QVElPTlMrPSJ3YXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaAppbmRleCBhZGZjM2I3Li5jYTRmMGQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzOTlmZDNlZGEzMDQ1NjM2YTcwZGE0MzhhMGZkMTQwNmNjMzMyZWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4NWRjYWFkOGYzODUyMWVjM2RjNTgwNzk0MDcyYjYwMTkwMGVlZDg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNDoxODoyMSArMDgwMAotU3ViamVjdDogW1BBVENIIDA1LzI0XSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQorU3ViamVjdDogW1BBVENIXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQogCiBpbmNsdWRlIG1pc3NpbmcuaCAgZm9yIGRlZmluaXRpb24gb2Ygc3RybmR1cGEKIApAQCAtMTMsMjggKzEzLDQ4IEBACiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK1tyZWJhc2VkIGZvciBzeXN0ZW1kIDI0NF0KKwogLS0tCiAgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL2Vudi11dGlsLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9sb2cuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvbWlzc2luZ19zdGRsaWIuaCAgICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrKysKICBzcmMvYmFzaWMvbWtkaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYyAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL3NlbGludXgtdXRpbC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy90aW1lLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYm9vdC9ibGVzcy1ib290LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2NvcmUvZGJ1cy1jZ3JvdXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9jb3JlL2RidXMtZXhlY3V0ZS5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvY29yZS9kYnVzLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2NvcmUvZXhlY3V0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9jb3JlL2ttb2Qtc2V0dXAuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvY29yZS9zZXJ2aWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2NvcmVkdW1wL2NvcmVkdW1wLXZhY3V1bS5jICAgICAgICAgICAgIHwgIDEgKworIHNyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMgICB8ICAxICsKICBzcmMvam91cm5hbC9qb3VybmFsY3RsLmMgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2pvdXJuYWwvc2Qtam91cm5hbC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jICAgICAgICB8ICAxICsKICBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYyAgICAgICAgfCAgMSArCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYyAgICAgICAgIHwgIDEgKworIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9zZC1idXMuYyAgICAgICAgICAgICB8ICAxICsKICBzcmMvbGlic3lzdGVtZC9zZC1idXMvdGVzdC1idXMtYmVuY2htYXJrLmMgfCAgMSArCiAgc3JjL2xvY2FsZS9rZXltYXAtdXRpbC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9sb2dpbi9wYW1fc3lzdGVtZC5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvbmV0d29yay9nZW5lcmF0b3IvbmV0d29yay1nZW5lcmF0b3IuYyAgfCAgMSArCiAgc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYyAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jICAgICAgICB8ICAxICsKKyBzcmMvcG9ydGFibGUvcG9ydGFibGUuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9zaGFyZWQvYnVzLXVuaXQtcHJvY3MuYyAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvc2hhcmVkL2J1cy11bml0LXV0aWwuYyAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL3NoYXJlZC9idXMtdXRpbC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9zaGFyZWQvZG5zLWRvbWFpbi5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYyAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL3NoYXJlZC9sb2dzLXNob3cuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwpAQCAtNDYsNDYgKzY2LDcwIEBACiAgc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYyAgICAgICAgICAgIHwgIDEgKwogIHNyYy91ZGV2L3VkZXYtZXZlbnQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvdWRldi91ZGV2LXJ1bGVzLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gMzIgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKQorIDQ5IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDdmOGM2Nzk0MTEuLjgxYzA2MWI3NjggMTAwNjQ0CitpbmRleCBhMjU5OTY4MDNkNjQuLjcyYjMwNWI1YWI1OCAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTUwNiw2ICs1MDYsNyBAQCBmb3JlYWNoIGlkZW50IDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4nJyddLAotICAgICAgICAgWydnZXRfbWVtcG9saWN5JywgICAgICcnJyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+JycnXSwKK0BAIC01MjksNiArNTI5LDcgQEAgZm9yZWFjaCBpZGVudCA6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHNpZ25hbC5oPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzeXMvd2FpdC5oPicnJ10sCiArICAgICAgICBbJ3N0cm5kdXBhJyAsICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCiAgXQogIAogICAgICAgICAgaGF2ZSA9IGNjLmhhc19mdW5jdGlvbihpZGVudFswXSwgcHJlZml4IDogaWRlbnRbMV0sIGFyZ3MgOiAnLURfR05VX1NPVVJDRScpCiBkaWZmIC0tZ2l0IGEvc3JjL2JhY2tsaWdodC9iYWNrbGlnaHQuYyBiL3NyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMKLWluZGV4IGRmZDY4MDUzOTguLmMyYjJhY2U2ZWMgMTAwNjQ0CitpbmRleCAwNDg0NDE0MjkwMjUuLjAxZDc0ZWEwZWQ0ZSAxMDA2NDQKIC0tLSBhL3NyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMKICsrKyBiL3NyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMKIEBAIC0xNyw2ICsxNyw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGludCBmaW5kX3BjaV9vcl9wbGF0Zm9ybV9wYXJlbnQoc2RfZGV2aWNlICpkZXZpY2UsIHNkX2RldmljZSAqKnJldCkgewogICAgICAgICAgY29uc3QgY2hhciAqc3Vic3lzdGVtLCAqc3lzbmFtZSwgKnZhbHVlOworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jIGIvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKK2luZGV4IDU0ZmM2ZWNmOGIyMC4uYTUxNDFmNGNiZWRkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCitAQCAtMzcsNiArMzcsNyBAQAorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInVuaXQtbmFtZS5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdGF0aWMgaW50IGNnX2VudW1lcmF0ZV9pdGVtcyhjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBGSUxFICoqX2YsIGNvbnN0IGNoYXIgKml0ZW0pIHsKKyAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmZzID0gTlVMTDsKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZW52LXV0aWwuYyBiL3NyYy9iYXNpYy9lbnYtdXRpbC5jCi1pbmRleCBhNjUwM2NmMmI2Li5jZWVmOWE2MmM4IDEwMDY0NAoraW5kZXggYjhkYzk4OTE1ZjgxLi41MDQ5YjM3NTk0YmMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvZW52LXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL2Vudi11dGlsLmMKLUBAIC0xNiw2ICsxNiw3IEBACitAQCAtMTUsNiArMTUsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInV0ZjguaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgVkFMSURfQ0hBUlNfRU5WX05BTUUgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIERJR0lUUyBMRVRURVJTICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2xvZy5jIGIvc3JjL2Jhc2ljL2xvZy5jCitpbmRleCAxNzU1N2UxODQ0YjIuLjZjZWM0ZDMyNGFhYiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9sb2cuYworKysrIGIvc3JjL2Jhc2ljL2xvZy5jCitAQCAtMzQsNiArMzQsNyBAQAorICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCisgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgorICNpbmNsdWRlICJ1dGY4LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBTTkRCVUZfU0laRSAoOCoxMDI0KjEwMjQpCisgCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3Npbmdfc3RkbGliLmggYi9zcmMvYmFzaWMvbWlzc2luZ19zdGRsaWIuaAotaW5kZXggMTg4YThkNDQwNi4uMWUxNmVjMjg3YSAxMDA2NDQKK2luZGV4IDE4OGE4ZDQ0MDY2YS4uMWUxNmVjMjg3YWFkIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3Npbmdfc3RkbGliLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3N0ZGxpYi5oCiBAQCAtMTEsMyArMTEsMTUgQEAKQEAgLTEwNSwzMzggKzE0OSw1MTggQEAKICsgIH0pCiArI2VuZGlmCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYwotaW5kZXggNmI4MmVhYjY0MC4uNTFjNmI3ODYxNSAxMDA2NDQKK2luZGV4IGZhNjgyZDRjNDM4ZS4uMzc5MDI1NTE0OTBhIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21rZGlyLmMKICsrKyBiL3NyYy9iYXNpYy9ta2Rpci5jCi1AQCAtMTQsNiArMTQsNyBAQAorQEAgLTEzLDYgKzEzLDcgQEAKICAjaW5jbHVkZSAic3RhdC11dGlsLmgiCiAgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIE1rZGlyRmxhZ3MgZmxhZ3MsIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKICAgICAgICAgIHN0cnVjdCBzdGF0IHN0OwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1pbmRleCAxMTVhMTQ5NGEyLi4wN2EzNGJmZDUzIDEwMDY0NAoraW5kZXggZTAwOTRiMGYzNzBhLi4wMGRhNjUxODEyNGIgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1AQCAtMjAsNiArMjAsNyBAQAorQEAgLTE4LDYgKzE4LDcgQEAKICAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCiAgI2luY2x1ZGUgInN0YXQtdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IHBhcnNlX2Jvb2xlYW4oY29uc3QgY2hhciAqdikgewogICAgICAgICAgaWYgKCF2KQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYyBiL3NyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYwotaW5kZXggMDkxNjljZjk2My4uZjQxMWJhODk3ZiAxMDA2NDQKK2luZGV4IDFhZjU4NzE3YzY4Ni4uYzEwMjBmNDYxMWQ0IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3Byb2MtY21kbGluZS5jCiArKysgYi9zcmMvYmFzaWMvcHJvYy1jbWRsaW5lLmMKIEBAIC0xNSw2ICsxNSw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKICAjaW5jbHVkZSAidmlydC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IHByb2NfY21kbGluZShjaGFyICoqcmV0KSB7CiAgICAgICAgICBjb25zdCBjaGFyICplOwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKLWluZGV4IDdhYWY5NWJmY2UuLjQyY2U1M2Q1YWEgMTAwNjQ0CitpbmRleCA3YWFmOTViZmNlZDIuLmRhN2U4MzZmMTQzZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwogQEAgLTExLDYgKzExLDcgQEAKICAjaW5jbHVkZSAicHJvY2ZzLXV0aWwuaCIKICAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IHByb2Nmc190YXNrc19nZXRfbGltaXQodWludDY0X3QgKnJldCkgewogICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqdmFsdWUgPSBOVUxMOworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYyBiL3NyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYworaW5kZXggMTA5NWNiNDI2Y2NlLi44MDZlZjRiZDk3YTkgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc2VsaW51eC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSAic2VsaW51eC11dGlsLmgiCisgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKKyAjaW5jbHVkZSAidGltZS11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2lmIEhBVkVfU0VMSU5VWAorIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhjb250ZXh0X3QsIGNvbnRleHRfZnJlZSk7CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3RpbWUtdXRpbC5jIGIvc3JjL2Jhc2ljL3RpbWUtdXRpbC5jCi1pbmRleCAzMDE4ZTgxYWNiLi40ZTJiM2I2NmMxIDEwMDY0NAoraW5kZXggMTA1NTg0ZTJlNzJmLi5lYjBiZWQ0N2RhYzMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvdGltZS11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy90aW1lLXV0aWwuYwotQEAgLTI4LDYgKzI4LDcgQEAKK0BAIC0yNiw2ICsyNiw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgY2xvY2tpZF90IG1hcF9jbG9ja19pZChjbG9ja2lkX3QgYykgewogIAorZGlmZiAtLWdpdCBhL3NyYy9ib290L2JsZXNzLWJvb3QuYyBiL3NyYy9ib290L2JsZXNzLWJvb3QuYworaW5kZXggYjk2ZTFmOTI3ZmZmLi5jYmE5NzliYWNhM2UgMTAwNjQ0CistLS0gYS9zcmMvYm9vdC9ibGVzcy1ib290LmMKKysrKyBiL3NyYy9ib290L2JsZXNzLWJvb3QuYworQEAgLTE4LDYgKzE4LDcgQEAKKyAjaW5jbHVkZSAidXRpbC5oIgorICNpbmNsdWRlICJ2ZXJicy5oIgorICNpbmNsdWRlICJ2aXJ0LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RhdGljIGNoYXIgKiphcmdfcGF0aCA9IE5VTEw7CisgCiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZGJ1cy1jZ3JvdXAuYyBiL3NyYy9jb3JlL2RidXMtY2dyb3VwLmMKLWluZGV4IDJmMjMxM2M1OTkuLmM5OTM3ZjlkNjIgMTAwNjQ0CitpbmRleCAyN2RjOWU0M2MzZTIuLmIxYTgzMDIzNjAwYiAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL2RidXMtY2dyb3VwLmMKICsrKyBiL3NyYy9jb3JlL2RidXMtY2dyb3VwLmMKIEBAIC0xNSw2ICsxNSw3IEBACiAgI2luY2x1ZGUgImZpbGVpby5oIgogICNpbmNsdWRlICJsaW1pdHMtdXRpbC5oIgogICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAotIHN0YXRpYyBCVVNfREVGSU5FX1BST1BFUlRZX0dFVF9FTlVNKHByb3BlcnR5X2dldF9jZ3JvdXBfZGV2aWNlX3BvbGljeSwgY2dyb3VwX2RldmljZV9wb2xpY3ksIENHcm91cERldmljZVBvbGljeSk7CisgQlVTX0RFRklORV9QUk9QRVJUWV9HRVQoYnVzX3Byb3BlcnR5X2dldF90YXNrc19tYXgsICJ0IiwgVGFza3NNYXgsIHRhc2tzX21heF9yZXNvbHZlKTsKICAKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYyBiL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCitpbmRleCBkOGJhM2U1ZDkyNDEuLjcyOWUxM2ZkYTY0YyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCisrKysgYi9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYworQEAgLTQxLDYgKzQxLDcgQEAKKyAjaW5jbHVkZSAidW5pdC1wcmludGYuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisgI2luY2x1ZGUgInV0ZjguaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBCVVNfREVGSU5FX1BST1BFUlRZX0dFVF9FTlVNKGJ1c19wcm9wZXJ0eV9nZXRfZXhlY19vdXRwdXQsIGV4ZWNfb3V0cHV0LCBFeGVjT3V0cHV0KTsKKyBzdGF0aWMgQlVTX0RFRklORV9QUk9QRVJUWV9HRVRfRU5VTShwcm9wZXJ0eV9nZXRfZXhlY19pbnB1dCwgZXhlY19pbnB1dCwgRXhlY0lucHV0KTsKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9kYnVzLXV0aWwuYyBiL3NyYy9jb3JlL2RidXMtdXRpbC5jCi1pbmRleCA3ODYyYmVhYWNiLi4xOWY2OTY4Y2ZlIDEwMDY0NAoraW5kZXggNzg2MmJlYWFjYjZkLi4zYjFlYTUzYTVmMGQgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9kYnVzLXV0aWwuYwogKysrIGIvc3JjL2NvcmUvZGJ1cy11dGlsLmMKIEBAIC03LDYgKzcsNyBAQAogICNpbmNsdWRlICJ1bml0LXByaW50Zi5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAjaW5jbHVkZSAidW5pdC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IGJ1c19wcm9wZXJ0eV9nZXRfdHJpZ2dlcmVkX3VuaXQoCiAgICAgICAgICAgICAgICAgIHNkX2J1cyAqYnVzLAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworaW5kZXggODlkYmY2ZmJkMmMxLi45NzYyZGM1NzQ0M2MgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKKysrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworQEAgLTg4LDYgKzg4LDcgQEAKKyAjaW5jbHVkZSAidW5pdC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRtcC13dG1wLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBJRExFX1RJTUVPVVRfVVNFQyAoNSpVU0VDX1BFUl9TRUMpCisgI2RlZmluZSBJRExFX1RJTUVPVVQyX1VTRUMgKDEqVVNFQ19QRVJfU0VDKQogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYyBiL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYwotaW5kZXggYTkxY2ZlYmM2Ny4uYTQ1OTYxMDEzZiAxMDA2NDQKK2luZGV4IDA5Y2NkNjEzZTMyYy4uZjRlNjRmYTI4M2U5IDEwMDY0NAogLS0tIGEvc3JjL2NvcmUva21vZC1zZXR1cC5jCiArKysgYi9zcmMvY29yZS9rbW9kLXNldHVwLmMKIEBAIC0xMSw2ICsxMSw3IEBACi0gI2luY2x1ZGUgImttb2Qtc2V0dXAuaCIKICAjaW5jbHVkZSAibWFjcm8uaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorICNpbmNsdWRlICJtaXNzaW5nX3R5cGUuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAjaWYgSEFWRV9LTU9ECi0gI2luY2x1ZGUgPGxpYmttb2QuaD4KKyAjaW5jbHVkZSAibW9kdWxlLXV0aWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9zZXJ2aWNlLmMgYi9zcmMvY29yZS9zZXJ2aWNlLmMKLWluZGV4IDczYjNjOWMzMTYuLmVmNzRmMDBhMDggMTAwNjQ0CitpbmRleCAxN2YyN2E0YWJjZTMuLmU1ZGNjNTMyZDBjZSAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL3NlcnZpY2UuYwogKysrIGIvc3JjL2NvcmUvc2VydmljZS5jCi1AQCAtNDMsNiArNDMsNyBAQAorQEAgLTQxLDYgKzQxLDcgQEAKICAjaW5jbHVkZSAidW5pdC5oIgogICNpbmNsdWRlICJ1dGY4LmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBjb25zdCBVbml0QWN0aXZlU3RhdGUgc3RhdGVfdHJhbnNsYXRpb25fdGFibGVbX1NFUlZJQ0VfU1RBVEVfTUFYXSA9IHsKICAgICAgICAgIFtTRVJWSUNFX0RFQURdID0gVU5JVF9JTkFDVElWRSwKK2RpZmYgLS1naXQgYS9zcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMgYi9zcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMKK2luZGV4IDM1ODg1ZGZiNDdjNC4uYmI5ZjA2NjBhNmEwIDEwMDY0NAorLS0tIGEvc3JjL2NvcmVkdW1wL2NvcmVkdW1wLXZhY3V1bS5jCisrKysgYi9zcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMKK0BAIC0xNiw2ICsxNiw3IEBACisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIERFRkFVTFRfTUFYX1VTRV9MT1dFUiAodWludDY0X3QpICgxVUxMKjEwMjRVTEwqMTAyNFVMTCkgICAgICAgICAgIC8qIDEgTWlCICovCisgI2RlZmluZSBERUZBVUxUX01BWF9VU0VfVVBQRVIgKHVpbnQ2NF90KSAoNFVMTCoxMDI0VUxMKjEwMjRVTEwqMTAyNFVMTCkgICAvKiA0IEdpQiAqLworZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMgYi9zcmMvam91cm5hbC1yZW1vdGUvam91cm5hbC1yZW1vdGUtbWFpbi5jCitpbmRleCA4OGU0MmQzYTk4NGIuLjBmMDgzNzZlNTM5OSAxMDA2NDQKKy0tLSBhL3NyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMKKysrKyBiL3NyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMKK0BAIC0yMiw2ICsyMiw3IEBACisgI2luY2x1ZGUgInN0YXQtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdGFibGUuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgUFJJVl9LRVlfRklMRSBDRVJUSUZJQ0FURV9ST09UICIvcHJpdmF0ZS9qb3VybmFsLXJlbW90ZS5wZW0iCisgI2RlZmluZSBDRVJUX0ZJTEUgICAgIENFUlRJRklDQVRFX1JPT1QgIi9jZXJ0cy9qb3VybmFsLXJlbW90ZS5wZW0iCiBkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbGN0bC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbGN0bC5jCi1pbmRleCA2ZDZiYjFjZjYzLi42NjY2MzQ5YTM1IDEwMDY0NAoraW5kZXggZTVmZWVjODNiY2U2Li5jM2FlYzFlMjE5ZDcgMTAwNjQ0CiAtLS0gYS9zcmMvam91cm5hbC9qb3VybmFsY3RsLmMKICsrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWxjdGwuYwotQEAgLTcwLDYgKzcwLDcgQEAKK0BAIC02OSw2ICs2OSw3IEBACiAgI2luY2x1ZGUgInVuaXQtbmFtZS5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAjaW5jbHVkZSAidmFybGluay5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2RlZmluZSBERUZBVUxUX0ZTU19JTlRFUlZBTF9VU0VDICgxNSpVU0VDX1BFUl9NSU5VVEUpCisgI2RlZmluZSBQUk9DRVNTX0lOT1RJRllfSU5URVJWQUwgMTAyNCAgIC8qIEV2ZXJ5IDEsMDI0IG1lc3NhZ2VzIHByb2Nlc3NlZCAqLworZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL3NkLWpvdXJuYWwuYyBiL3NyYy9qb3VybmFsL3NkLWpvdXJuYWwuYworaW5kZXggM2ZhOThkZmRhMjM3Li5lNjU1ZDc3ZTcxNGEgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC9zZC1qb3VybmFsLmMKKysrKyBiL3NyYy9qb3VybmFsL3NkLWpvdXJuYWwuYworQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJzeXNsb2ctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgSk9VUk5BTF9GSUxFU19NQVggNzE2OAogIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMKLWluZGV4IGViMDI5ZTQ0NTMuLmYzMWZlOWQ1YTggMTAwNjQ0CitpbmRleCA3MzEyN2RmZTAyNTMuLmNjODYzNWRlYTU5MSAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYwogQEAgLTIxLDYgKzIxLDcgQEAKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKICAjaW5jbHVkZSAidXRmOC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGludCBtZXNzYWdlX2FwcGVuZF9iYXNpYyhzZF9idXNfbWVzc2FnZSAqbSwgY2hhciB0eXBlLCBjb25zdCB2b2lkICpwLCBjb25zdCB2b2lkICoqc3RvcmVkKTsKICAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtb2JqZWN0cy5jCi1pbmRleCBhZTY0M2NhY2M3Li4xYjc1MjI3MWE1IDEwMDY0NAoraW5kZXggNmQxNDAzNDhlYzRjLi45MTI2Yjg4MDFiYzUgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1vYmplY3RzLmMKIEBAIC0xMyw2ICsxMyw3IEBACiAgI2luY2x1ZGUgInNldC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgaW50IG5vZGVfdnRhYmxlX2dldF91c2VyZGF0YSgKICAgICAgICAgICAgICAgICAgc2RfYnVzICpidXMsCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtc29ja2V0LmMKK2luZGV4IDE4ZDMwZDAxMGEyMC4uYmUyYWI3MDNmOGVkIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisgI2luY2x1ZGUgInV0ZjguaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIFNOREJVRl9TSVpFICg4KjEwMjQqMTAyNCkKKyAKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKK2luZGV4IDdhZDAzNjgwZjQ4ZC4uYjlkMjE4MWU0OTEwIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKK0BAIC00MSw2ICs0MSw3IEBACisgI2luY2x1ZGUgInByb2Nlc3MtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBsb2dfZGVidWdfYnVzX21lc3NhZ2UobSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy90ZXN0LWJ1cy1iZW5jaG1hcmsuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy90ZXN0LWJ1cy1iZW5jaG1hcmsuYwotaW5kZXggOGRlMGE4NTllZS4uNGZkMGEyZTY5MiAxMDA2NDQKK2luZGV4IDhkZTBhODU5ZWU5NC4uNTgwNDRiNmJhOTA4IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3Rlc3QtYnVzLWJlbmNobWFyay5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvdGVzdC1idXMtYmVuY2htYXJrLmMKIEBAIC0xNCw2ICsxNCw3IEBACiAgI2luY2x1ZGUgIm1pc3NpbmdfcmVzb3VyY2UuaCIKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgTUFYX1NJWkUgKDIqMTAyNCoxMDI0KQogIAogZGlmZiAtLWdpdCBhL3NyYy9sb2NhbGUva2V5bWFwLXV0aWwuYyBiL3NyYy9sb2NhbGUva2V5bWFwLXV0aWwuYwotaW5kZXggZjhjMzZjOTRmNS4uNDFmNTYwNmFlYSAxMDA2NDQKK2luZGV4IDMwNjY5YTkzNTllNS4uNjU0NGIzNzIyMDk5IDEwMDY0NAogLS0tIGEvc3JjL2xvY2FsZS9rZXltYXAtdXRpbC5jCiArKysgYi9zcmMvbG9jYWxlL2tleW1hcC11dGlsLmMKLUBAIC0yMiw2ICsyMiw3IEBACitAQCAtMjEsNiArMjEsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInRtcGZpbGUtdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGJvb2wgc3RhcnRzd2l0aF9jb21tYShjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKICAgICAgICAgIHMgPSBzdGFydHN3aXRoKHMsIHByZWZpeCk7CiBkaWZmIC0tZ2l0IGEvc3JjL2xvZ2luL3BhbV9zeXN0ZW1kLmMgYi9zcmMvbG9naW4vcGFtX3N5c3RlbWQuYwotaW5kZXggM2Y3NjJjYmJjMy4uMDA1Y2ZlYTY1OCAxMDA2NDQKK2luZGV4IDg0YmVhMjFhYjdiZS4uNDk3MjBjN2Y3NDJlIDEwMDY0NAogLS0tIGEvc3JjL2xvZ2luL3BhbV9zeXN0ZW1kLmMKICsrKyBiL3NyYy9sb2dpbi9wYW1fc3lzdGVtZC5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJob3N0bmFtZS11dGlsLmgiCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlICJsb2NhbGUtdXRpbC5oIgogICNpbmNsdWRlICJsb2dpbi11dGlsLmgiCiAgI2luY2x1ZGUgIm1hY3JvLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAjaW5jbHVkZSAicGFtLXV0aWwuaCIKICAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgogICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKLSAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvZ2VuZXJhdG9yL25ldHdvcmstZ2VuZXJhdG9yLmMgYi9zcmMvbmV0d29yay9nZW5lcmF0b3IvbmV0d29yay1nZW5lcmF0b3IuYwotaW5kZXggMGI1YWYzMzU2Ni4uOWM4MDhjZDAxNCAxMDA2NDQKK2luZGV4IGJlZDFlNDI2OTdjNC4uZTQ4NDdjMmJlZWEyIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvZ2VuZXJhdG9yL25ldHdvcmstZ2VuZXJhdG9yLmMKICsrKyBiL3NyYy9uZXR3b3JrL2dlbmVyYXRvci9uZXR3b3JrLWdlbmVyYXRvci5jCiBAQCAtMTMsNiArMTMsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdGFibGUuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgLyoKICAgICMgLm5ldHdvcmsKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi1zZXR0aW5ncy5jIGIvc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYwotaW5kZXggM2E5OTczNjgxMy4uMjc5ZmVhNGQ4OCAxMDA2NDQKK2luZGV4IDVmYjViNDliYmNjMy4uNzg1Y2NjMmRhMzA3IDEwMDY0NAogLS0tIGEvc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYwogKysrIGIvc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYwogQEAgLTE2LDYgKzE2LDcgQEAKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgU2V0dGluZ3MgKnNldHRpbmdzX25ldyh2b2lkKSB7CiAgICAgICAgICBTZXR0aW5ncyAqczsKK2RpZmYgLS1naXQgYS9zcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYyBiL3NyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jCitpbmRleCAzNjQzNTZkYTU2MjIuLjQ3ZDRlYTQ0ZTQwZiAxMDA2NDQKKy0tLSBhL3NyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jCisrKysgYi9zcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYworQEAgLTE5LDYgKzE5LDcgQEAKKyAjaW5jbHVkZSAic2lnbmFsLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgTlNTX0dFVEhPU1RCWU5BTUVfUFJPVE9UWVBFUyhteW1hY2hpbmVzKTsKKyBOU1NfR0VUUFdfUFJPVE9UWVBFUyhteW1hY2hpbmVzKTsKK2RpZmYgLS1naXQgYS9zcmMvcG9ydGFibGUvcG9ydGFibGUuYyBiL3NyYy9wb3J0YWJsZS9wb3J0YWJsZS5jCitpbmRleCBlMTg4MjZhYjI2ODUuLmQ5ZjRiODFkODkzNyAxMDA2NDQKKy0tLSBhL3NyYy9wb3J0YWJsZS9wb3J0YWJsZS5jCisrKysgYi9zcmMvcG9ydGFibGUvcG9ydGFibGUuYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RhdGljIGNvbnN0IGNoYXIgcHJvZmlsZV9kaXJzW10gPSBDT05GX1BBVEhTX05VTFNUUigic3lzdGVtZC9wb3J0YWJsZS9wcm9maWxlIik7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jIGIvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jCitpbmRleCBmMjBlOGM0NGI4YmMuLjlmNmM0ZThmNDlhNyAxMDA2NDQKKy0tLSBhL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYworKysrIGIvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jCitAQCAtMzMsNiArMzMsNyBAQAorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKyAjaW5jbHVkZSAidmVyYnMuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdGF0aWMgaW50IGFyZ19mYW1pbHkgPSBBRl9VTlNQRUM7Cisgc3RhdGljIGludCBhcmdfaWZpbmRleCA9IDA7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jIGIvc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jCitpbmRleCBiMjFmZTM5MzI2NWYuLmFmMjY0MDAwNWMxZCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYnVzLXVuaXQtcHJvY3MuYworKysrIGIvc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJzb3J0LXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0cnVjdCBDR3JvdXBJbmZvIHsKKyAgICAgICAgIGNoYXIgKmNncm91cF9wYXRoOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYnVzLXVuaXQtdXRpbC5jIGIvc3JjL3NoYXJlZC9idXMtdW5pdC11dGlsLmMKK2luZGV4IDI4ZDg1OTQ0YThhNy4uNDc0M2E4NGE0MTdlIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9idXMtdW5pdC11dGlsLmMKKysrKyBiL3NyYy9zaGFyZWQvYnVzLXVuaXQtdXRpbC5jCitAQCAtMzQsNiArMzQsNyBAQAorICNpbmNsdWRlICJ1bml0LWRlZi5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRmOC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIGludCBidXNfcGFyc2VfdW5pdF9pbmZvKHNkX2J1c19tZXNzYWdlICptZXNzYWdlLCBVbml0SW5mbyAqdSkgeworICAgICAgICAgYXNzZXJ0KG1lc3NhZ2UpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYnVzLXV0aWwuYyBiL3NyYy9zaGFyZWQvYnVzLXV0aWwuYworaW5kZXggOGU2YTZlMmNlMmRlLi4wY2JmNGIxOTk3ZGYgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2J1cy11dGlsLmMKKysrKyBiL3NyYy9zaGFyZWQvYnVzLXV0aWwuYworQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0YXRpYyBpbnQgbmFtZV9vd25lcl9jaGFuZ2VfY2FsbGJhY2soc2RfYnVzX21lc3NhZ2UgKm0sIHZvaWQgKnVzZXJkYXRhLCBzZF9idXNfZXJyb3IgKnJldF9lcnJvcikgeworICAgICAgICAgc2RfZXZlbnQgKmUgPSB1c2VyZGF0YTsKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Rucy1kb21haW4uYyBiL3NyYy9zaGFyZWQvZG5zLWRvbWFpbi5jCi1pbmRleCBmNjJhZDBhMGY1Li5mMWEyN2UxNThkIDEwMDY0NAoraW5kZXggYjgxMjY2NTMxNWY2Li44ZTY4ZjdmOGZjNmMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2Rucy1kb21haW4uYwogKysrIGIvc3JjL3NoYXJlZC9kbnMtZG9tYWluLmMKLUBAIC0yNCw2ICsyNCw3IEBACitAQCAtMjMsNiArMjMsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInV0ZjguaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCBkbnNfbGFiZWxfdW5lc2NhcGUoY29uc3QgY2hhciAqKm5hbWUsIGNoYXIgKmRlc3QsIHNpemVfdCBzeiwgRE5TTGFiZWxGbGFncyBmbGFncykgewogICAgICAgICAgY29uc3QgY2hhciAqbjsKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYyBiL3NyYy9zaGFyZWQvam91cm5hbC1pbXBvcnRlci5jCi1pbmRleCA3YzRmYzcwMjFkLi5hNmZmMjIxNGRmIDEwMDY0NAoraW5kZXggN2M0ZmM3MDIxZGVjLi4zZmJhZjVhNjM5NjkgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYwogKysrIGIvc3JjL3NoYXJlZC9qb3VybmFsLWltcG9ydGVyLmMKIEBAIC0xNCw2ICsxNCw3IEBACiAgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAidW5hbGlnbmVkLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBlbnVtIHsKICAgICAgICAgIElNUE9SVEVSX1NUQVRFX0xJTkUgPSAwLCAgICAvKiB3YWl0aW5nIHRvIHJlYWQsIG9yIHJlYWRpbmcgbGluZSAqLwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvbG9ncy1zaG93LmMgYi9zcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jCi1pbmRleCBiNjE1YzcwZGZmLi43NWIyNmU5YzIxIDEwMDY0NAoraW5kZXggMmJmZDBiNjBjMjZiLi42YTFiYjNhMDc2MGYgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jCiArKysgYi9zcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jCiBAQCAtMzksNiArMzksNyBAQAogICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKICAjaW5jbHVkZSAidXRmOC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAvKiB1cCB0byB0aHJlZSBsaW5lcyAoZWFjaCB1cCB0byAxMDAgY2hhcmFjdGVycykgb3IgMzAwIGNoYXJhY3RlcnMsIHdoaWNoZXZlciBpcyBsZXNzICovCiAgI2RlZmluZSBQUklOVF9MSU5FX1RIUkVTSE9MRCAzCiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1pbmRleCA3YzIwYjEwMGI0Li5lNDIwOWQzYTk1IDEwMDY0NAoraW5kZXggMWZlOWRiMTc5MTc2Li42Nzk1NGI1Y2FiOTMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL3BhZ2VyLmMKICsrKyBiL3NyYy9zaGFyZWQvcGFnZXIuYwotQEAgLTI1LDYgKzI1LDcgQEAKK0BAIC0yMyw2ICsyMyw3IEBACiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgcGlkX3QgcGFnZXJfcGlkID0gMDsKICAKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhdGgtbG9va3VwLmMgYi9zcmMvc2hhcmVkL3BhdGgtbG9va3VwLmMKLWluZGV4IDZiZjBmZjAzMTYuLmY2YzgwMDljZDIgMTAwNjQ0CitpbmRleCA1YjE2MjA5NzQ1MzYuLjBlN2NkMWMyYWYxMiAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvcGF0aC1sb29rdXAuYwogKysrIGIvc3JjL3NoYXJlZC9wYXRoLWxvb2t1cC5jCi1AQCAtMjAsNiArMjAsNyBAQAorQEAgLTE5LDYgKzE5LDcgQEAKICAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgeGRnX3VzZXJfcnVudGltZV9kaXIoY2hhciAqKnJldCwgY29uc3QgY2hhciAqc3VmZml4KSB7CiAgICAgICAgICBjb25zdCBjaGFyICplOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCi1pbmRleCA3Y2I3ZDhhNDc3Li44YjEyYjkxMDg0IDEwMDY0NAoraW5kZXggN2NiN2Q4YTQ3N2U5Li44ZTdkN2Y5ZTdjYTYgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCiArKysgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCiBAQCAtOSw2ICs5LDcgQEAKICAjaW5jbHVkZSAic29ydC11dGlsLmgiCiAgI2luY2x1ZGUgInVpZC1yYW5nZS5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKICAgICAgICAgIGFzc2VydChyYW5nZSk7CiBkaWZmIC0tZ2l0IGEvc3JjL3NvY2tldC1wcm94eS9zb2NrZXQtcHJveHlkLmMgYi9zcmMvc29ja2V0LXByb3h5L3NvY2tldC1wcm94eWQuYwotaW5kZXggYWJiYmM5ZjJkNi4uNjE3OWI1ODUxZSAxMDA2NDQKK2luZGV4IDJlZTZmYzJmMGE2YS4uNGE5OTM0ZjljMTRkIDEwMDY0NAogLS0tIGEvc3JjL3NvY2tldC1wcm94eS9zb2NrZXQtcHJveHlkLmMKICsrKyBiL3NyYy9zb2NrZXQtcHJveHkvc29ja2V0LXByb3h5ZC5jCi1AQCAtMjgsNiArMjgsNyBAQAorQEAgLTI2LDYgKzI2LDcgQEAKICAjaW5jbHVkZSAic29ja2V0LXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2RlZmluZSBCVUZGRVJfU0laRSAoMjU2ICogMTAyNCkKICAKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwotaW5kZXggNTIyMTc0MjliMS4uYTA1ZTc3ODJmNiAxMDA2NDQKK2luZGV4IDUyMjE3NDI5YjE1NC4uNzA3MDhkZWRmMzE4IDEwMDY0NAogLS0tIGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwogQEAgLTYsNiArNiw3IEBACiAgI2luY2x1ZGUgImhleGRlY29jdC5oIgogICNpbmNsdWRlICJtYWNyby5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIHZvaWQgdGVzdF9oZXhjaGFyKHZvaWQpIHsKICAgICAgICAgIGFzc2VydF9zZShoZXhjaGFyKDB4YSkgPT0gJ2EnKTsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tcGF0aF9pZC5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYwotaW5kZXggZThmMWNlMTM1NC4uODY5M2NiMDJhNCAxMDA2NDQKK2luZGV4IGNhMzhmNTYwODc5MS4uOWQ4Y2Y0ZDI4MDdiIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYwogKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYwotQEAgLTIzLDYgKzIzLDcgQEAKK0BAIC0yMiw2ICsyMiw3IEBACiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAic3lzZXhpdHMuaCIKICAjaW5jbHVkZSAidWRldi1idWlsdGluLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBfcHJpbnRmXygyLDMpCiAgc3RhdGljIHZvaWQgcGF0aF9wcmVwZW5kKGNoYXIgKipwYXRoLCBjb25zdCBjaGFyICpmbXQsIC4uLikgewogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtZXZlbnQuYyBiL3NyYy91ZGV2L3VkZXYtZXZlbnQuYwotaW5kZXggOGNmYTJjZGYyMy4uYjA2NzBjNzdlYyAxMDA2NDQKK2luZGV4IGViNTExMzllNTE5Yy4uOTc3Y2MxNmU5ZDdjIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1ldmVudC5jCiArKysgYi9zcmMvdWRldi91ZGV2LWV2ZW50LmMKLUBAIC0zNSw2ICszNSw3IEBACitAQCAtMzQsNiArMzQsNyBAQAogICNpbmNsdWRlICJ1ZGV2LXV0aWwuaCIKICAjaW5jbHVkZSAidWRldi13YXRjaC5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHR5cGVkZWYgc3RydWN0IFNwYXduIHsKICAgICAgICAgIHNkX2RldmljZSAqZGV2aWNlOwogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtcnVsZXMuYyBiL3NyYy91ZGV2L3VkZXYtcnVsZXMuYwotaW5kZXggMTY0MmYxMDUzNS4uZmUyYWE3NTQ3OCAxMDA2NDQKK2luZGV4IGI5YjM1MGQxZWY3YS4uMmMxMTRjYzc3NTcyIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1ydWxlcy5jCiArKysgYi9zcmMvdWRldi91ZGV2LXJ1bGVzLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgInVkZXYtZXZlbnQuaCIKK0BAIC0zMCw2ICszMCw3IEBACiAgI2luY2x1ZGUgInVkZXYtcnVsZXMuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAjaW5jbHVkZSAidmlydC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgUlVMRVNfRElSUyAoY29uc3QgY2hhciogY29uc3QqKSBDT05GX1BBVEhTX1NUUlYoInVkZXYvcnVsZXMuZCIpCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaAppbmRleCA2ZDczZDcxLi45MTQyZDdiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1JbmNsdWRlIG5ldGluZXQvaWZfZXRoZXIuaAorRnJvbSA0NzgxODA1MjEyMWQxMzU2MzJmNWU0NmMzNjllM2U0NzA2YTBmOWUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjYgT2N0IDIwMTcgMjI6MTA6NDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBuZXRpbmV0L2lmX2V0aGVyLmgKIAogRml4ZXMKIC9wYXRoL3RvL3N5c3RlbWQvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvbmV0aW5ldC9pZl9ldGhlci5oOjEwMTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJwpAQCAtMjYsMTEgKzI5LDE1IEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHNyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMgIHwgMSAtCiAgc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgfCAxICsKICBzcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyAgICAgICAgICAgICAgICB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi9ib25kLmMgICAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L2JyaWRnZS5jICAgICAgICAgICAgICAgfCAxICsKICBzcmMvbmV0d29yay9uZXRkZXYvbWFjc2VjLmMgICAgICAgICAgICAgICB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYtZ3BlcmYuZ3BlcmYgICAgIHwgMSArCiAgc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi5jICAgICAgICAgICAgICAgfCAxICsKICBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKwogIHNyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3AtY29tbW9uLmMgICAgICAgIHwgMSArCkBAIC0zOCwyNiArNDUsMjcgQEAKICBzcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNi5jICAgICAgICAgICAgICB8IDIgKy0KICBzcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMgICAgICAgICAgICAgICB8IDIgKy0KICBzcmMvbmV0d29yay9uZXR3b3JrZC1uZXR3b3JrLmMgICAgICAgICAgICB8IDEgKworIHNyYy9uZXR3b3JrL3Rlc3QtbmV0d29yay10YWJsZXMuYyAgICAgICAgIHwgMSArCiAgc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgICAgfCAxICsKICBzcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oICAgICAgICAgICAgICAgICB8IDEgKwogIHNyYy91ZGV2L25ldC9saW5rLWNvbmZpZy5jICAgICAgICAgICAgICAgIHwgMSArCiAgc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgICAgfCAxICsKLSAxNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIDE5IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jIGIvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYwotaW5kZXggZDdhNTM0OWM3MC4uNjhiNDFkZmI2YyAxMDA2NDQKK2luZGV4IGVhYzJlNzI1Y2NlNy4uMWJlYWU3YmE5MWNjIDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYwotQEAgLTYsNyArNiw2IEBACitAQCAtNSw3ICs1LDYgQEAKKyAKICAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogLSNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfaW5maW5pYmFuZC5oPgogIAogICNpbmNsdWRlICJzZC1kaGNwNi1jbGllbnQuaCIKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCi1pbmRleCBkZTliOGIyMWFiLi5mNjRmNjUwMGY3IDEwMDY0NAoraW5kZXggZTM1MTI3YTRjZDJlLi40ZjZhZDllZjU4ODYgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKIEBAIC0zLDYgKzMsNyBAQApAQCAtNjksMTkgKzc3LDQxIEBACiAgI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KICAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotaW5kZXggMGQ1OGI1ZWI4Yi4uMDEwOTNjMWY2MiAxMDA2NDQKK2luZGV4IGEyOTkwNDUyYWYxNy4uNWFmMzUwODgzYzI4IDEwMDY0NAogLS0tIGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKICsrKyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCi1AQCAtNCw2ICs0LDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+CitAQCAtMyw2ICszLDcgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8c3lzL21vdW50Lmg+CiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiArI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KICAKICAvKiBXaGVuIHdlIGluY2x1ZGUgbGliZ2VuLmggYmVjYXVzZSB3ZSBuZWVkIGRpcm5hbWUoKSB3ZSBpbW1lZGlhdGVseQogICAqIHVuZGVmaW5lIGJhc2VuYW1lKCkgc2luY2UgbGliZ2VuLmggZGVmaW5lcyBpdCBhcyBhIG1hY3JvIHRvIHRoZSBQT1NJWAorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi9ib25kLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvYm9uZC5jCitpbmRleCA4ZGYzOWUzNTg0M2YuLjhkNjk3ODk0Zjk3MCAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi9ib25kLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldGRldi9ib25kLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImJvbmQuaCIKKyAjaW5jbHVkZSAiY29uZi1wYXJzZXIuaCIKK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMKK2luZGV4IDZiOGY5OTQ0NjEyZS4uN2Y4MWVjMjVjNDA3IDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L2JyaWRnZS5jCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAKKyAjaW5jbHVkZSAiYnJpZGdlLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L21hY3NlYy5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L21hY3NlYy5jCi1pbmRleCBjZjI4MWU3NWE2Li4yNjlkYzYxOGZmIDEwMDY0NAoraW5kZXggN2QxZmVjM2FmZTZkLi5lOTQ4YTMzNTMzNmQgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvbWFjc2VjLmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldGRldi9tYWNzZWMuYwogQEAgLTEsNSArMSw2IEBACkBAIC05MSw4ICsxMjEsMjAgQEAKICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9tYWNzZWMuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmIGIvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi1ncGVyZi5ncGVyZgoraW5kZXggMDlhNWY0ODIyZTAzLi44NzMyOTliMWY5OGEgMTAwNjQ0CistLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmCitAQCAtMiw2ICsyLDcgQEAKKyAjaWYgX19HTlVDX18gPj0gNworIF9QcmFnbWEoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2ltcGxpY2l0LWZhbGx0aHJvdWdoXCIiKQorICNlbmRpZgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlICJib25kLmgiCisgI2luY2x1ZGUgImJyaWRnZS5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYuYyBiL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYuYwotaW5kZXggNzczNWI0NTViNy4uZWQ0ZWRhNGE0NCAxMDA2NDQKK2luZGV4IGY4MTIxYTQ4ZWQ5Mi4uNDM3ZjQxMWM2MWU4IDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi5jCiArKysgYi9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LmMKIEBAIC0xLDUgKzEsNiBAQApAQCAtMTAzLDcgKzE0NSw3IEBACiAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICAKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCi1pbmRleCBjM2M1ZDUzNWFjLi5lYmVhNDA4Yzg5IDEwMDY0NAoraW5kZXggNDFmMDkyODdmMmI3Li5iNjdjZTRmYzg4NDQgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKIEBAIC00LDYgKzQsNyBAQApAQCAtMTE1LDMzICsxNTcsMzQgQEAKICAjaW5jbHVkZSA8c3RkYm9vbC5oPgogIAogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3AtY29tbW9uLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jCi1pbmRleCA2MjZiOTc1ODM5Li40MmZlOTJmMzIwIDEwMDY0NAoraW5kZXggODY2NGQ4Y2RjMGQ0Li5lOWY5MWY3NGMxYTEgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jCi1AQCAtMSw2ICsxLDcgQEAKLSAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCi0gCitAQCAtNCw2ICs0LDcgQEAKKyAjaW5jbHVkZSAiZXNjYXBlLmgiCisgI2luY2x1ZGUgImluLWFkZHItdXRpbC5oIgogICNpbmNsdWRlICJuZXR3b3JrZC1kaGNwLWNvbW1vbi5oIgogKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CiAgI2luY2x1ZGUgIm5ldHdvcmtkLW5ldHdvcmsuaCIKICAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdGFibGUuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNC5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDQuYwotaW5kZXggNjYyNzcwYjUwZS4uYzZhYjYyYTk0ZCAxMDA2NDQKK2luZGV4IDEzZTNlMzJmNDBlOC4uNTM5NDM5OWM5MTUwIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDQuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDQuYwotQEAgLTEsOCArMSw4IEBACitAQCAtMSw5ICsxLDkgQEAKICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCiAgCiArI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmLmg+CiAtI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgogIAogICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgImhvc3RuYW1lLXV0aWwuaCIKKyAjaW5jbHVkZSAiZGhjcC1jbGllbnQtaW50ZXJuYWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYwotaW5kZXggOGFkNzM2YTgyYi4uZjQxYjRkODM0ZSAxMDA2NDQKK2luZGV4IDczMDQyNzBjNjBiMS4uMDk5MDY0ZjY0NzE1IDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYwogQEAgLTMsOSArMyw5IEBACkBAIC0xNTYsNyArMTk5LDcgQEAKICAKICAjaW5jbHVkZSAic2QtZGhjcDYtY2xpZW50LmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCi1pbmRleCBmNWJiNzg4OTBhLi5mMTNhMzZiNzkxIDEwMDY0NAoraW5kZXggOTlkNGIyOWMzMWVjLi5lOGI0NjdkNmFjMDkgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwogQEAgLTEsOCArMSw4IEBACkBAIC0xNzAsNyArMjEzLDcgQEAKICAKICAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLW5ldHdvcmsuYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLW5ldHdvcmsuYwotaW5kZXggMmI4ZDBlYjJmYi4uMmY3OWVmMjVjZCAxMDA2NDQKK2luZGV4IDJlNzE2YjI5MWU5Ny4uNTZmMThjZWE1N2ZlIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbmV0d29yay5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1uZXR3b3JrLmMKIEBAIC0xLDUgKzEsNiBAQApAQCAtMTgwLDggKzIyMywxNyBAQAogICNpbmNsdWRlIDxuZXQvaWYuaD4KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogICNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMgYi9zcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMKK2luZGV4IDI1YjkzOTYzOTc3NS4uNTMwZTQ5Mjg4MzVjIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvdGVzdC1uZXR3b3JrLXRhYmxlcy5jCisrKysgYi9zcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMKK0BAIC0xLDMgKzEsNCBAQAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgImJvbmQuaCIKKyAjaW5jbHVkZSAiZGhjcDYtaW50ZXJuYWwuaCIKKyAjaW5jbHVkZSAiZGhjcDYtcHJvdG9jb2wuaCIKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5jIGIvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYwotaW5kZXggYjA5NjFkZjcyZS4uNTNmY2JiZDg0YiAxMDA2NDQKK2luZGV4IDAwYTcxZDY0YTYzOC4uNDU5M2U4OTEyMGI4IDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYwogKysrIGIvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYwogQEAgLTEsNSArMSw2IEBACkBAIC0xOTIsMTkgKzI0NCwxOSBAQAogICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmggYi9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oCi1pbmRleCA4YjMyYjI0M2YzLi4yNjJiODE5OTc2IDEwMDY0NAoraW5kZXggYzFkNWQ3NTkwZWY5Li5iM2UwMThiZjc2ZTkgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oCiArKysgYi9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oCi1AQCAtMiw2ICsyLDcgQEAKLSAjcHJhZ21hIG9uY2UKK0BAIC0zLDYgKzMsNyBAQAogIAogICNpbmNsdWRlIDxtYWNyby5oPgorICNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KICsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgogICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CiAgCiAgI2luY2x1ZGUgImNvbmYtcGFyc2VyLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2xpbmstY29uZmlnLmMgYi9zcmMvdWRldi9uZXQvbGluay1jb25maWcuYwotaW5kZXggZDQ0YWY2NGQ1ZS4uZmQwNTJmMTU5MSAxMDA2NDQKK2luZGV4IDAzMzJlOTkyNjljOS4uZmYzYWVhZDRhNzc5IDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvbmV0L2xpbmstY29uZmlnLmMKICsrKyBiL3NyYy91ZGV2L25ldC9saW5rLWNvbmZpZy5jCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTIxNSw3ICsyNjcsNyBAQAogICNpbmNsdWRlIDxuZXRpbmV0L2V0aGVyLmg+CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotaW5kZXggZWUzY2E5ZmEzOC4uOWFhNGU4Mjg3NCAxMDA2NDQKK2luZGV4IGVlM2NhOWZhMzg0Ni4uOWFhNGU4Mjg3NDFmIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKICsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCiBAQCAtMSw1ICsxLDYgQEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2gKaW5kZXggMzRmN2Y1Zi4uNTgwYzQ5ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIGY4YTIzOWIxODIxNThjYTBhNTM3YmEwNTNjYjBlNmJhZDljM2EyZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc3Zjk4NzI3ZjFkMTlhOGZiMzI3YjU1YzkyZjFhOWVlN2I4NTllOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE0OjU2OjIxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjRdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdCAKLSBkZWZpbmVkCitTdWJqZWN0OiBbUEFUQ0hdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdCBkZWZpbmVkCiAKIElmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXNuJ3QgcHJvdmlkZSBicmFjZQogZXhwYW5zaW9uIHVzZXJzIGp1c3Qgd29uJ3QgZ2V0IGl0LgpAQCAtMTcsNiArMTYsNyBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvYmFzaWMvZ2xvYi11dGlsLmMgICAgIHwgMTIgKysrKysrKysrKysrCiAgc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyB8IDE2ICsrKysrKysrKysrKysrKysKQEAgLTI0LDEwICsyNCwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCi1pbmRleCBiMzM1YWY4ZDk3Li4yY2RmYzExZjE2IDEwMDY0NAoraW5kZXggZTNhYTZjMmUxNTJiLi4zODA3MGI3OWM4M2EgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotQEAgLTE0LDYgKzE0LDEyIEBACitAQCAtMTIsNiArMTIsMTIgQEAKICAjaW5jbHVkZSAicGF0aC11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAKQEAgLTQwLDcgKzQwLDcgQEAKICBzdGF0aWMgdm9pZCBjbG9zZWRpcl93cmFwcGVyKHZvaWQqIHYpIHsKICAgICAgICAgICh2b2lkKSBjbG9zZWRpcih2KTsKICB9Ci1AQCAtMjEsNiArMjcsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZWRpcl93cmFwcGVyKHZvaWQqIHYpIHsKK0BAIC0xOSw2ICsyNSw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlZGlyX3dyYXBwZXIodm9pZCogdikgewogIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CiAgICAgICAgICBpbnQgazsKICAKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IEdMT0JfQUxURElSRlVOQyBvdXJzZWx2ZXMsIGRvbid0IGFsbG93IGl0IHRvIGJlIHNldC4gKi8KICAgICAgICAgIGFzc2VydCghKGZsYWdzICYgR0xPQl9BTFRESVJGVU5DKSk7CiAgCi1AQCAtMzQsOSArNDEsMTQgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKK0BAIC0zMiw5ICszOSwxNCBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewogICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKICAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCiAgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKQEAgLTY0LDEwICs2NCwxMCBAQAogICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKICAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotaW5kZXggYjRmNDE0NDVmZS4uZjBkNDc0ZWQxNCAxMDA2NDQKK2luZGV4IDY2N2QxNTMzNWZiZi4uNzZhODQ0NDNhYWNmIDEwMDY0NAogLS0tIGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotQEAgLTEzLDYgKzEzLDEyIEBACitAQCAtMTIsNiArMTIsMTIgQEAKICAjaW5jbHVkZSAicm0tcmYuaCIKICAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCiAgCkBAIC04MCw3ICs4MCw3IEBACiAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX2V4aXN0cyh2b2lkKSB7CiAgICAgICAgICBjaGFyIG5hbWVbXSA9ICIvdG1wL3Rlc3QtZ2xvYl9leGlzdHMuWFhYWFhYIjsKICAgICAgICAgIGludCBmZCA9IC0xOwotQEAgLTQwLDExICs0NiwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKK0BAIC0zOSwxMSArNDUsMTMgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CiAgICAgICAgICBjb25zdCBjaGFyICpmbjsKICAKICAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgIH07CiAgCiAgICAgICAgICBpbnQgcjsKLUBAIC01MiwxMSArNjAsMTkgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CitAQCAtNTEsMTEgKzU5LDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgewogICAgICAgICAgYXNzZXJ0X3NlKG1rZHRlbXAodGVtcGxhdGUpKTsKICAKICAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvKiIpOwpAQCAtMTE1LDEwICsxMTUsMTAgQEAKICAKICAgICAgICAgICh2b2lkKSBybV9yZih0ZW1wbGF0ZSwgUkVNT1ZFX1JPT1R8UkVNT1ZFX1BIWVNJQ0FMKTsKIGRpZmYgLS1naXQgYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi1pbmRleCAzYzMwNjEyYWYxLi4xNGJjNDI4MDg1IDEwMDY0NAoraW5kZXggMTkzZWQwYmM3ODFiLi4yZjk0ZmQyZWZkOGYgMTAwNjQ0CiAtLS0gYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwogKysrIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLUBAIC02Myw2ICs2MywxMiBAQAorQEAgLTU4LDYgKzU4LDEyIEBACiAgI2luY2x1ZGUgInVtYXNrLXV0aWwuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCiAgCkBAIC0xMzEsNyArMTMxLDcgQEAKICAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKICAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQogICAqIHByb3Blcmx5IG93bmVkIGRpcmVjdG9yaWVzIGJlbmVhdGggL3RtcCwgL3Zhci90bXAsIC9ydW4sIHdoaWNoIGFyZQotQEAgLTE4NTMsNyArMTg1OSw5IEBAIGZpbmlzaDoKK0BAIC0xODUwLDcgKzE4NTYsOSBAQCBmaW5pc2g6CiAgCiAgc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uKSB7CiAgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgICAgIH07CiAgICAgICAgICBpbnQgciA9IDAsIGs7CiAgICAgICAgICBjaGFyICoqZm47Ci1AQCAtMTg3Myw3ICsxODgxLDkgQEAgc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uKSB7CitAQCAtMTg3MCw3ICsxODc4LDkgQEAgc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uKSB7CiAgCiAgc3RhdGljIGludCBnbG9iX2l0ZW1fcmVjdXJzaXZlbHkoSXRlbSAqaSwgZmRhY3Rpb25fdCBhY3Rpb24pIHsKICAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCmluZGV4IGQ1ZjIzNDkuLjFmNjE4OTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNmNkMTdjNzUzZDJjMGE5MGZjNzkxZjY5YmJjNjk0Y2JjODU1NmE0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2M0NDBjZmM1M2FhNTJjOWRjOTFjM2E4YzEwNWJjZjMxNGM1M2FmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6MDA6MDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8yNF0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKIAogVGhpcyBpcyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBsaWtlIGJlbG93IGZvciBtdXNsLgogCkBAIC0xMCwxMiArMTAsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvbWlzc2luZ190eXBlLmggfCAyMCArKysrKysrKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmggYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKLWluZGV4IGM0ODdlNjUuLjIzNjAyZWIgMTAwNjQ0CitpbmRleCBjNDg3ZTY1ZTdiZGUuLjIzNjAyZWJiZDUzMyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiBAQCAtMTksMyArMTksMjMgQEAgdHlwZWRlZiBpbnQgKCpjb21wYXJpc29uX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKQEAgLTQyLDYgKzQzLDMgQEAKICsjaWZuZGVmIEZUV19TS0lQX1NJQkxJTkdTCiArI2RlZmluZSBGVFdfU0tJUF9TSUJMSU5HUyAzCiArI2VuZGlmCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaAppbmRleCA4YmFjZDAyLi41ZWU1MDFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCkBAIC0xLDIwICsxLDIxIEBACi1Gcm9tIGYxZjRiNGY5Njg0ZmVkMTg1YmZhOGI5ZWQ0MDljZGYyNDE2NTdlOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVlZDc0MjdkYjk4Y2MwMWRiN2U5YjM0Nzk2NTVkNjhiMDQ0YmM4NWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE1OjAzOjQ3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMjRdIGZpeCBtaXNzaW5nIG9mIF9fcmVnaXN0ZXJfYXRmb3JrIGZvciBub24tZ2xpYmMgYnVpbGRzCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBtaXNzaW5nIG9mIF9fcmVnaXN0ZXJfYXRmb3JrIGZvciBub24tZ2xpYmMgYnVpbGRzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgfCA3ICsrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLWluZGV4IDc4Y2U0M2IuLmFlYzJkYWYgMTAwNjQ0CitpbmRleCA1ZGUzNjZmODMwZTguLjY0NGY1M2FlZTAwNSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1AQCAtMjIsNiArMjIsOSBAQAorQEAgLTE4LDYgKzE4LDkgQEAKICAjaWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICiAgI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CiAgI2VuZGlmCkBAIC0yNCw3ICsyNSw3IEBACiAgCiAgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKICAjaW5jbHVkZSAiYXJjaGl0ZWN0dXJlLmgiCi1AQCAtMTE2MCwxMSArMTE2MywxNSBAQCB2b2lkIHJlc2V0X2NhY2hlZF9waWQodm9pZCkgeworQEAgLTExMTYsMTEgKzExMTksMTUgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKICAgICAgICAgIGNhY2hlZF9waWQgPSBDQUNIRURfUElEX1VOU0VUOwogIH0KICAKQEAgLTQwLDYgKzQxLDMgQEAKICAKICBwaWRfdCBnZXRwaWRfY2FjaGVkKHZvaWQpIHsKICAgICAgICAgIHN0YXRpYyBib29sIGluc3RhbGxlZCA9IGZhbHNlOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCmluZGV4IGQ2ZWRhOWMuLmU1ZDk1MTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlM2Y4NDdiZDAzMzhkMjdhZmYzMzM1YjQyNjYxZDhhNGI2NmI5NjVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0YWE5MTM0N2FlOTc1MDUxZGJlNGRkMmY5OGExZjRmNDU5ZjI2MDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNToxMjo0MSArMDgwMAotU3ViamVjdDogW1BBVENIIDExLzI0XSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90CiAKIFBSSXV7MzIsNjR9IGlzIG5vdCByaWdodCBmb3JtYXQgdG8gcmVwcmVzZW50IHJsaW1fdCB0eXBlCiB0aGVyZWZvcmUgdXNlICVqdSBhbmQgdHlwZWNhc3QgdGhlIHJsaW1fdCB2YXJpYWJsZXMgdG8KQEAgLTIwLDYgKzIwLDcgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBbUmViYXNlZCBmb3IgdjI0MV0KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggfCAgOCArLS0tLS0tLQogIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgMTAgKysrKystLS0tLQpAQCAtMjcsMTAgKzI4LDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotaW5kZXggZGVjZTVkMy4uZGJiODdiYyAxMDA2NDQKK2luZGV4IGM0N2ZhNzZlYThmZi4uMTRhNzhkOWY1ZmQwIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKICsrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCi1AQCAtNDIsMTMgKzQyLDcgQEAKK0BAIC0zMiwxMyArMzIsNyBAQCBhc3NlcnRfY2Moc2l6ZW9mKGdpZF90KSA9PSBzaXplb2YodWludDMyX3QpKTsKICAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKICAjZW5kaWYKICAKQEAgLTQ2LDEwICs0NywxMCBAQAogICNpZiBTSVpFT0ZfREVWX1QgPT0gOAogICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCi1pbmRleCA3NGIzYTAyLi5iMDJjMDNjIDEwMDY0NAoraW5kZXggMmRjMTNlYWJjMzBkLi4wNjMzY2M2N2Y0MTcgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLUBAIC0zMDcsMTMgKzMwNywxMyBAQCBpbnQgcmxpbWl0X2Zvcm1hdChjb25zdCBzdHJ1Y3QgcmxpbWl0ICpybCwgY2hhciAqKnJldCkgeworQEAgLTMwNiwxMyArMzA2LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7CiAgICAgICAgICBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkgJiYgcmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCiAgICAgICAgICAgICAgICAgIHMgPSBzdHJkdXAoImluZmluaXR5Iik7CiAgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSkKQEAgLTY3LDcgKzY4LDcgQEAKICAKICAgICAgICAgIGlmICghcykKICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci1AQCAtNDA0LDcgKzQwNCw3IEBAIGludCBybGltaXRfbm9maWxlX3NhZmUodm9pZCkgeworQEAgLTQwMyw3ICs0MDMsNyBAQCBpbnQgcmxpbWl0X25vZmlsZV9zYWZlKHZvaWQpIHsKICAKICAgICAgICAgIHJsLnJsaW1fY3VyID0gRkRfU0VUU0laRTsKICAgICAgICAgIGlmIChzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSA8IDApCkBAIC03NywxMCArNzgsMTAgQEAKICAgICAgICAgIHJldHVybiAxOwogIH0KIGRpZmYgLS1naXQgYS9zcmMvY29yZS9leGVjdXRlLmMgYi9zcmMvY29yZS9leGVjdXRlLmMKLWluZGV4IGE3MDgyMzEuLmUyYjg3NDggMTAwNjQ0CitpbmRleCA5NzYyZGM1NzQ0M2MuLjRhMzQyMWJiM2VlNiAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYwogKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCi1AQCAtNDIyMCw5ICs0MjIwLDkgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChjb25zdCBFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CitAQCAtNDU2Nyw5ICs0NTY3LDkgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChjb25zdCBFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkxJTV9OTElNSVRTOyBpKyspCiAgICAgICAgICAgICAgICAgIGlmIChjLT5ybGltaXRbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlc0xpbWl0JXM6ICIgUkxJTV9GTVQgIlxuIiwKQEAgLTkyLDYgKzkzLDMgQEAKICAgICAgICAgICAgICAgICAgfQogIAogICAgICAgICAgaWYgKGMtPmlvcHJpb19zZXQpIHsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCmluZGV4IDkxNDU4OWQuLjA0OTA5NmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKQEAgLTEsMjIgKzEsMjIgQEAKLUZyb20gZDNkNjVkNDAzNjY3MGNiZDUxMjlmZTU1YzA5Y2EzOTEyODZlZjRiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjJmYWM1ZTNmZjBmY2NkMzI5Y2RjNDk2MDUyNThiNmQwZTU3M2EzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MjU6MjIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8yNF0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbgotIG11c2wKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbiBtdXNsCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1pbmRleCAzNWIwODc2Li5lNzhlN2NhIDEwMDY0NAoraW5kZXggMTAyMGUwY2IzMTUzLi5jNjUwNjJkMjU2MmMgMTAwNjQ0CiAtLS0gYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCiArKysgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1AQCAtNDEsOCArNDEsMTAgQEAgaW50IG1haW4odm9pZCkgeworQEAgLTQ0LDggKzQ0LDEwIEBAIGludCBtYWluKHZvaWQpIHsKICAgICAgICAgIGluZm8odW5zaWduZWQpOwogICAgICAgICAgaW5mbyhsb25nIHVuc2lnbmVkKTsKICAgICAgICAgIGluZm8obG9uZyBsb25nIHVuc2lnbmVkKTsKQEAgLTI3LDcgKzI3LDcgQEAKICAKICAgICAgICAgIGluZm8oZmxvYXQpOwogICAgICAgICAgaW5mbyhkb3VibGUpOwotQEAgLTYwLDcgKzYyLDkgQEAgaW50IG1haW4odm9pZCkgeworQEAgLTYzLDcgKzY1LDkgQEAgaW50IG1haW4odm9pZCkgewogICAgICAgICAgaW5mbyhzc2l6ZV90KTsKICAgICAgICAgIGluZm8odGltZV90KTsKICAgICAgICAgIGluZm8odXNlY190KTsKQEAgLTM3LDYgKzM3LDMgQEAKICAgICAgICAgIGluZm8ocGlkX3QpOwogICAgICAgICAgaW5mbyh1aWRfdCk7CiAgICAgICAgICBpbmZvKGdpZF90KTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaAppbmRleCBmZDQwN2Y2Li5lZmVlZjA3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDhjNjI4ZjUzMmY2MDI1YzJkMTY0NmI2ODE5Y2Q4MWViNzg5ZDdmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTZmODcxMDc4ZDhkNmYwNzZjODRmOTA4ZmE1N2FmMTU0MTdhYjg3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMjRdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCitTdWJqZWN0OiBbUEFUQ0hdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCiAKIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0CiB0aGluZyB0byBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKQEAgLTI1LDE2ICsyNSwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvZnMtdXRpbC5oICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQogIHNyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgfCAgNiArKystLS0KICAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZnMtdXRpbC5oIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotaW5kZXggN2FkMDMwYi4uZDRjYjFlOSAxMDA2NDQKK2luZGV4IDc4ZDY4YmU5ZmQ4NS4uYzVkYzg0ZDQxODY4IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAogKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotQEAgLTMyLDcgKzMyLDI3IEBAIGludCBmY2htb2Rfb3BhdGgoaW50IGZkLCBtb2RlX3QgbSk7CitAQCAtNDAsNyArNDAsMjcgQEAgaW50IGZjaG1vZF9vcGF0aChpbnQgZmQsIG1vZGVfdCBtKTsKICAKICBpbnQgZmRfd2Fybl9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpOwogIApAQCAtNjQsMTAgKzY1LDEwIEBACiAgaW50IHRvdWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBwYXJlbnRzLCB1c2VjX3Qgc3RhbXAsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSk7CiAgaW50IHRvdWNoKGNvbnN0IGNoYXIgKnBhdGgpOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1pbmRleCA4OWQ3YTdkLi4zNGI0YWQ1IDEwMDY0NAoraW5kZXggNjU3NDA3ZGEyZDM3Li5mYmQ1NzgyZDg0ZmMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCiArKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1AQCAtNTMsNyArNTMsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworQEAgLTU0LDcgKzU0LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhlcnJubywgIkZhaWxlZCB0byBvcGVuIHJvb3QgZmlsZSBzeXN0ZW06ICVtIik7CiAgCiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUxFTUVOVFNPRih0YWJsZSk7IGkgKyspIHsKQEAgLTc2LDcgKzc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAKICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgewotQEAgLTYxLDcgKzYxLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKK0BAIC02Miw3ICs2Miw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgb25lIG9mIHRoZSB0YXJnZXRzIGV4aXN0cyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgIE5VTFNUUl9GT1JFQUNIKHMsIHRhYmxlW2ldLnRhcmdldCkgewpAQCAtODUsNyArODYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIGEgc3BlY2lmaWMgZmlsZSBleGlzdHMgYXQgdGhlIHRhcmdldCBwYXRoICovCi1AQCAtNzIsNyArNzIsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworQEAgLTczLDcgKzczLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CiAgCkBAIC05NCw2ICs5NSwzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaAppbmRleCBkNTU2NTY5Li4xOWEzZWVmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSBhZjc2Yzk3M2U0MTkyOTM2MGE2ZTAyMWYyZmY5YTdmYzFkNzk5NGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlYzMzNWVmM2JiOTAzYTdlYWYwNTQxMDNjYzUxNDExZTcxZTY0NDhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMjcgTWF5IDIwMTggMDg6MzY6NDQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yNF0gRGVmaW5lIGdsaWJjIGNvbXBhdGlibGUgYmFzZW5hbWUoKSBmb3Igbm9uLWdsaWJjCi0gc3lzdGVtcworU3ViamVjdDogW1BBVENIXSBEZWZpbmUgZ2xpYmMgY29tcGF0aWJsZSBiYXNlbmFtZSgpIGZvciBub24tZ2xpYmMgc3lzdGVtcwogCiBGaXhlcyBidWlsZHMgd2l0aCBtdXNsLCBldmVuIHRob3VnaCBzeXN0ZW1kIGlzIGFkYW1hbnQgYWJvdXQKIHVzaW5nIG5vbi1wb3NpeCBiYXNlbmFtZSBpbXBsZW1lbnRhdGlvbiwgd2UgaGF2ZSBhIHdheSBvdXQKQEAgLTEwLDI1ICs5LDI0IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQotIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKLWluZGV4IDdhNTU4ZGYuLmVjYTdkNGIgMTAwNjQ0CitpbmRleCA3NjBjY2I0NDVjZDAuLjBkZjIwZjM4NjRiMyAxMDA2NDQKIC0tLSBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCiArKysgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotQEAgLTExLDYgKzExLDEwIEBACitAQCAtMTEsNiArMTEsMTEgQEAKICAjaW5jbHVkZSA8bGliZ2VuLmg+CiAgI3VuZGVmIGJhc2VuYW1lCiAgCiArI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjaW5jbHVkZSA8c3RyaW5nLmg+CiArI2RlZmluZSBiYXNlbmFtZShzcmMpIChzdHJyY2hyKHNyYywnLycpID8gc3RycmNocihzcmMsJy8nKSsxIDogc3JjKQogKyNlbmRpZgogKwogICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCiAgI2luY2x1ZGUgImJ1cy1jb21tb24tZXJyb3JzLmgiCiAgI2luY2x1ZGUgImJ1cy1pbnRlcm5hbC5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2gKaW5kZXggMjRlMjRlOC4uMTkzNGI3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYzdhNGVmYjhiY2NiNTJlMTcxNGMxNTE5MjljMjNlMTJiZGU1OWI4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmIyOGE5Yzg3MGJiNDdkY2RiMWNjZWJhYThlM2E1YTg2NzMwYTI0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgNCBKdWwgMjAxOCAxNTowMDo0NCArMDgwMAotU3ViamVjdDogW1BBVENIIDE3LzI0XSBEbyBub3QgZGlzYWJsZSBidWZmZXJpbmcgd2hlbiB3cml0aW5nIHRvIG9vbV9zY29yZV9hZGoKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGRpc2FibGUgYnVmZmVyaW5nIHdoZW4gd3JpdGluZyB0byBvb21fc2NvcmVfYWRqCiAKIE9uIG11c2wsIGRpc2FibGluZyBidWZmZXJpbmcgd2hlbiB3cml0aW5nIHRvIG9vbV9zY29yZV9hZGogd2lsbAogY2F1c2UgdGhlIGZvbGxvd2luZyBlcnJvci4KQEAgLTE5LDE1ICsxOSwxNiBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLWluZGV4IGIxYzA4ZmNhZGUuLjBhN2ExZjdkODkgMTAwNjQ0CitpbmRleCA2NDRmNTNhZWUwMDUuLmFjYWYxMzU5MTM5NiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1AQCAtMTQ3NCw3ICsxNDc0LDcgQEAgaW50IHNldF9vb21fc2NvcmVfYWRqdXN0KGludCB2YWx1ZSkgeworQEAgLTE1MDAsNyArMTUwMCw3IEBAIGludCBzZXRfb29tX3Njb3JlX2FkanVzdChpbnQgdmFsdWUpIHsKICAgICAgICAgIHNwcmludGYodCwgIiVpIiwgdmFsdWUpOwogIAogICAgICAgICAgcmV0dXJuIHdyaXRlX3N0cmluZ19maWxlKCIvcHJvYy9zZWxmL29vbV9zY29yZV9hZGoiLCB0LApAQCAtMzUsNCArMzYsNCBAQAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX1NUUklOR19GSUxFX1ZFUklGWV9PTl9GQUlMVVJFKTsKICB9CiAgCi0gc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGlvcHJpb19jbGFzc190YWJsZVtdID0geworIGludCBwaWRmZF9nZXRfcGlkKGludCBmZCwgcGlkX3QgKnJldCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoCmluZGV4IDU5MDE3NzIuLjg0YTQ5MmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGZmZmIyODEwNjExYjRhMjZmNWM2YzA5NTgwOTNiNWIzYjdkNGNkOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ5Mzg3MDU0NTRjZjQ2Y2ZlOGRlYWM4Y2U0NTdkNWQyNDMyY2JlYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDEwIEp1bCAyMDE4IDE1OjQwOjE3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvMjRdIGRpc3Rpbmd1aXNoIFhTSS1jb21wbGlhbnQgc3RyZXJyb3JfciBmcm9tIEdOVS1zcGVjaWZpCitTdWJqZWN0OiBbUEFUQ0hdIGRpc3Rpbmd1aXNoIFhTSS1jb21wbGlhbnQgc3RyZXJyb3JfciBmcm9tIEdOVS1zcGVjaWZpCiAgc3RyZXJyb3JfcgogCiBYU0ktY29tcGxpYW50IHN0cmVycm9yX3IgYW5kIEdOVS1zcGVjaWZpIHN0cmVycm9yX3IgYXJlIGRpZmZlcmVudC4KQEAgLTE4LDE2ICsxOCwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgICB8IDUgKysrKysKICBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgfCA1ICsrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1pbmRleCAzZmVhOTEyLi40ZjFlNTkyIDEwMDY0NAoraW5kZXggNDNlZDc1NmJkYTUzLi4yMjdlYTY0ZGJiNDggMTAwNjQ0CiAtLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwogKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLUBAIC0zMzcsNyArMzM3LDEyIEBAIHN0YXRpYyBpbnQgZmlsbF9pb3ZlY19wZXJyb3JfYW5kX3NlbmQoY29uc3QgY2hhciAqbWVzc2FnZSwgaW50IHNraXAsIHN0cnVjdCBpb3ZlCitAQCAtMzM2LDcgKzMzNiwxMiBAQCBzdGF0aWMgaW50IGZpbGxfaW92ZWNfcGVycm9yX2FuZF9zZW5kKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGludCBza2lwLCBzdHJ1Y3QgaW92ZQogICAgICAgICAgICAgICAgICBjaGFyKiBqOwogIAogICAgICAgICAgICAgICAgICBlcnJubyA9IDA7CkBAIC00MSw3ICs0Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBlcnJvcltTVFJMRU4oIkVSUk5PPSIpICsgREVDSU1BTF9TVFJfTUFYKGludCkgKyAxXTsKICAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKLWluZGV4IGRjOTUyMzcuLmJkZGEzMGYgMTAwNjQ0CitpbmRleCBmNzYwZjBmZGQyMWMuLjI4YTUxNTljNDQ4MCAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCiBAQCAtMzc5LDcgKzM3OSwxMiBAQCBzdGF0aWMgdm9pZCBidXNfZXJyb3Jfc3RyZXJyb3Ioc2RfYnVzX2Vycm9yICplLCBpbnQgZXJyb3IpIHsKQEAgLTU3LDYgKzU4LDMgQEAKICAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSB8fCBzdHJsZW4oeCkgPj0gayAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgIGsgKj0gMjsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaAppbmRleCAzNWNjNjZmLi4zYjgwNjQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOTY5YWI5ZTY4MjQ5ZmQzODNmNGI1MTNiMWM5MzA2YmRhYzRhZTliMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMWM0YzczYTdjYzBmYjU5ZWI2OGFiNzA2OTlmN2Y1MWFmNWMxNjNiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6MTg6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8yNF0gSGlkZSBfX3N0YXJ0X0JVU19FUlJPUl9NQVAgYW5kIF9fc3RvcF9CVVNfRVJST1JfTUFQCitTdWJqZWN0OiBbUEFUQ0hdIEhpZGUgX19zdGFydF9CVVNfRVJST1JfTUFQIGFuZCBfX3N0b3BfQlVTX0VSUk9SX01BUAogCiBmb3IgY3VycmVudGx5IHVua25vd24gcmVhc29ucyB0aGV5IGdldCBleHBvcnRlZCB0byB0aGUgc2hhcmVkIGxpYnJpZXMKIGV2ZW4gd2l0aG91dCBiZWluZyBsaXN0ZWQgaW4gdGhlIHN5bSBmaWxlCkBAIC0xMSwxMiArMTEsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBbUmViYXNlZCBmb3IgdjI0MV0KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwotaW5kZXggYmRkYTMwZi4uZTIxODUzYyAxMDA2NDQKK2luZGV4IDI4YTUxNTljNDQ4MC4uOTYyYTRkZTEwYzU2IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKIEBAIC01NCw4ICs1NCw4IEBAIEJVU19FUlJPUl9NQVBfRUxGX1JFR0lTVEVSIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgYnVzX3N0YW5kYXJkX2Vycm9yc1tdID0gewpAQCAtMzAsNiArMzEsMyBAQAogIAogIC8qIEFkZGl0aW9uYWwgbWFwcyByZWdpc3RlcmVkIHdpdGggc2RfYnVzX2Vycm9yX2FkZF9tYXAoKSBhcmUgaW4gdGhpcwogICAqIE5VTEwgdGVybWluYXRlZCBhcnJheSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDc1M2Q1MTEuLmRiNDA0MWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3NWMwNmUzZTJhNDc2MGIzNmZmZmQ5NWNkZjU1MzViOGFkNzNjNDgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MzAzZDQ5Y2FiYWYzYWI4ODkwYmExZDI2Njk3MmM3MjFkZmU2ZWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNToyNzo1NCArMDgwMAotU3ViamVjdDogW1BBVENIIDIwLzI0XSBtaXNzaW5nX3R5cGUuaDogYWRkIF9fY29tcGFyX2RfZm5fdCBkZWZpbml0aW9uCitTdWJqZWN0OiBbUEFUQ0hdIG1pc3NpbmdfdHlwZS5oOiBhZGQgX19jb21wYXJfZF9mbl90IGRlZmluaXRpb24KIAogRml4IHRoZSBmb2xsb3dpbmcgY29tcGlsZSBmYWlsdXJlOgogc3JjL2Jhc2ljL3V0aWwuaDo3MToxODogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdfX2NvbXBhcl9kX2ZuX3QnOyBkaWQgeW91IG1lYW4gJ19fY29tcGFyX2ZuX3QnPwpAQCAtOSwxMiArOSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCi1pbmRleCA3ZDdjMWU0Li44NTkwMmFiIDEwMDY0NAoraW5kZXggMjM2MDJlYmJkNTMzLi45MTdkMzE0YTgxYmYgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogQEAgLTEzLDYgKzEzLDcgQEAKQEAgLTI1LDYgKzI2LDMgQEAKICAjZW5kaWYKICAKICAjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtYXZvaWQtcmVkZWZpbml0aW9uLW9mLXByY3RsX21tX21hcC1zdHJ1Y3R1cmUucGF0Y2gKaW5kZXggY2RkZGY4My4uN2RhY2MzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLWF2b2lkLXJlZGVmaW5pdGlvbi1vZi1wcmN0bF9tbV9tYXAtc3RydWN0dXJlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzZmJmNjFkNTRiODJmYzliZjIxZDgwMzliZmQ4OWRjOWVmYzViYmNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MzY0ZmY1NTM0Njc4YzE1OGE3ZmI4ZDRlNTBkMGE2Y2U3MmMxYWQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNTo0NDo1NCArMDgwMAotU3ViamVjdDogW1BBVENIIDIxLzI0XSBhdm9pZCByZWRlZmluaXRpb24gb2YgcHJjdGxfbW1fbWFwIHN0cnVjdHVyZQorU3ViamVjdDogW1BBVENIXSBhdm9pZCByZWRlZmluaXRpb24gb2YgcHJjdGxfbW1fbWFwIHN0cnVjdHVyZQogCiBGaXggdGhlIGZvbGxvd2luZyBjb21waWxlIGZhaWx1cmU6CiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgcHJjdGxfbW1fbWFwJwpAQCAtOSwxMiArOSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmggfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmdfcHJjdGwuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmgKLWluZGV4IGY4MGNkMTcuLjQ3ZTQ4OTMgMTAwNjQ0CitpbmRleCBmODBjZDE3ZjM0NmIuLjQ3ZTQ4OTM1NDA1MyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmgKIEBAIC0xLDcgKzEsOSBAQApAQCAtMjcsNiArMjgsMyBAQAogIAogIC8qIDU4MzE5MDU3Yjc4NDc2NjdmMGM5NTg1YjlkZTBlODkzMmIwZmRiMDggKDQuMykgKi8KICAjaWZuZGVmIFBSX0NBUF9BTUJJRU5UCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LXRlc3QtanNvbi5jLWRlZmluZS1NX1BJbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoCmluZGV4IDBlNTYyOWQuLjgwYmVhZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5MDI0MTJjMjcxZTBjNWQ5Y2I5M2IxMGVjMGZiNWIxMTliMzkzNDc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMDVjYzVmYjNkYzBlNTE2ODJjNDAxOTYyODVjZGRhMzRlYzkwNzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNjo1MzowNiArMDgwMAotU3ViamVjdDogW1BBVENIIDI0LzI0XSB0ZXN0LWpzb24uYzogZGVmaW5lIE1fUElsCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3QtanNvbi5jOiBkZWZpbmUgTV9QSWwKIAogRml4IHRoZSBmb2xsb3dpbmcgY29tcGlsZSBmYWlsdXJlOgogc3JjL3Rlc3QvdGVzdC1qc29uLmM6MzA1OjUwOiBlcnJvcjogJ01fUElsJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnTV9QSSc/CkBAIC05LDE1ICs5LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL3Rlc3QvdGVzdC1qc29uLmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWpzb24uYyBiL3NyYy90ZXN0L3Rlc3QtanNvbi5jCi1pbmRleCA5YjhhMmE5Li5lZmM3NDZjIDEwMDY0NAoraW5kZXggYTY2MTMwNDNiOTI0Li5jYTgyM2VhNzlmMDUgMTAwNjQ0CiAtLS0gYS9zcmMvdGVzdC90ZXN0LWpzb24uYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1qc29uLmMKLUBAIC0xMSw2ICsxMSwxMCBAQAorQEAgLTEyLDYgKzEyLDEwIEBACiAgI2luY2x1ZGUgInRlc3RzLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKICAKQEAgLTI4LDYgKzI5LDMgQEAKICBzdGF0aWMgdm9pZCB0ZXN0X3Rva2VuaXplcihjb25zdCBjaGFyICpkYXRhLCAuLi4pIHsKICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1bW4gPSAwOwogICAgICAgICAgdm9pZCAqc3RhdGUgPSBOVUxMOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzFkMGI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY4MyArMCwwIEBACi1yZXF1aXJlIHN5c3RlbWQuaW5jCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVBFID0gIjEiCi0KLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCIKLQotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1pbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZmVhdHVyZXNfY2hlY2sKLQotIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbwotIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKLQotU1JDX1VSSSArPSAiZmlsZTovL3RvdWNoc2NyZWVuLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovLzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuaXQtZmlsZS5jLWNvbnNpZGVyLXN5bWxpbmstb24tZmlsZXN5c3RlbXMtbGlrZS1ORlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vOTktZGVmYXVsdC5wcmVzZXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wc3RvcmUtZml4LXVzZS1hZnRlci1mcmVlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi0jIHBhdGNoZXMgbmVlZGVkIGJ5IG11c2wKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtTUkNfVVJJX01VU0x9IgotU1JDX1VSSV9NVVNMID0gIlwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAiCi0KLVBBTV9QTFVHSU5TID0gIiBcCi0gICAgcGFtLXBsdWdpbi11bml4IFwKLSAgICBwYW0tcGx1Z2luLWxvZ2ludWlkIFwKLSAgICBwYW0tcGx1Z2luLWtleWluaXQgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdlZmkgbGRjb25maWcgcGFtIHNlbGludXggdXNybWVyZ2UgcG9sa2l0JywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCi0gICAgYWNsIFwKLSAgICBiYWNrbGlnaHQgXAotICAgIGJpbmZtdCBcCi0gICAgZ3NoYWRvdyBcCi0gICAgaGliZXJuYXRlIFwKLSAgICBob3N0bmFtZWQgXAotICAgIGlkbiBcCi0gICAgaW1hIFwKLSAgICBrbW9kIFwKLSAgICBsb2NhbGVkIFwKLSAgICBsb2dpbmQgXAotICAgIG1hY2hpbmVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuZXR3b3JrZCBcCi0gICAgbnNzIFwKLSAgICBuc3MtbXltYWNoaW5lcyBcCi0gICAgbnNzLXJlc29sdmUgXAotICAgIHF1b3RhY2hlY2sgXAotICAgIHJhbmRvbXNlZWQgXAotICAgIHJlc29sdmVkIFwKLSAgICBzZXQtdGltZS1lcG9jaCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB0aW1lZGF0ZWQgXAotICAgIHRpbWVzeW5jZCBcCi0gICAgdXRtcCBcCi0gICAgdmNvbnNvbGUgXAotICAgIHh6IFwKLSIKLQotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCi0gICAgZ3NoYWRvdyBcCi0gICAgaWRuIFwKLSAgICBsb2NhbGVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuc3MgXAotICAgIG5zcy1teW1hY2hpbmVzIFwKLSAgICBuc3MtcmVzb2x2ZSBcCi0gICAgcmVzb2x2ZWQgXAotICAgIHNtYWNrIFwKLSAgICBzeXN1c2VycyBcCi0gICAgdXRtcCBcCi0iCi0KLSMgVXNlIHRoZSB1cHN0cmVhbSBzeXN0ZW1kIHNlcmlhbC1nZXR0eUAuc2VydmljZSBhbmQgcmVseSBvbgotIyBzeXN0ZW1kLWdldHR5LWdlbmVyYXRvciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBPRS1jb3JlIHNwZWNpZmljCi0jIHN5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgotUEFDS0FHRUNPTkZJR1tzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yXSA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItRGFjbD10cnVlLC1EYWNsPWZhbHNlLGFjbCIKLVBBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi1EYXVkaXQ9dHJ1ZSwtRGF1ZGl0PWZhbHNlLGF1ZGl0IgotUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi1EYmFja2xpZ2h0PXRydWUsLURiYWNrbGlnaHQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2JpbmZtdF0gPSAiLURiaW5mbXQ9dHJ1ZSwtRGJpbmZtdD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi1EYnppcDI9dHJ1ZSwtRGJ6aXAyPWZhbHNlLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tjZ3JvdXB2Ml0gPSAiLURkZWZhdWx0LWhpZXJhcmNoeT11bmlmaWVkLC1EZGVmYXVsdC1oaWVyYXJjaHk9aHlicmlkIgotUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLURjb3JlZHVtcD10cnVlLC1EY29yZWR1bXA9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi1EbGliY3J5cHRzZXR1cD10cnVlLC1EbGliY3J5cHRzZXR1cD1mYWxzZSxjcnlwdHNldHVwIgotUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItRGRidXM9dHJ1ZSwtRGRidXM9ZmFsc2UsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbZWZpXSA9ICItRGVmaT10cnVlLC1EZWZpPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tnbnUtZWZpXSA9ICItRGdudS1lZmk9dHJ1ZSAtRGVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmksLURnbnUtZWZpPWZhbHNlLGdudS1lZmkiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItRGVsZnV0aWxzPXRydWUsLURlbGZ1dGlscz1mYWxzZSxlbGZ1dGlscyIKLVBBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItRGZpcnN0Ym9vdD10cnVlLC1EZmlyc3Rib290PWZhbHNlIgotIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZwotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi1EZ2NyeXB0PXRydWUsLURnY3J5cHQ9ZmFsc2UsbGliZ2NyeXB0IgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPXRydWUsLURnbnV0bHM9ZmFsc2UsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnc2hhZG93XSA9ICItRGdzaGFkb3c9dHJ1ZSwtRGdzaGFkb3c9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLURoaWJlcm5hdGU9dHJ1ZSwtRGhpYmVybmF0ZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItRGhvc3RuYW1lZD10cnVlLC1EaG9zdG5hbWVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tpZG5dID0gIi1EaWRuPXRydWUsLURpZG49ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ltYV0gPSAiLURpbWE9dHJ1ZSwtRGltYT1mYWxzZSIKLSMgaW1wb3J0ZCByZXF1aXJlcyBjdXJsL3h6L3psaWIvYnppcDIvZ2NyeXB0Ci1QQUNLQUdFQ09ORklHW2ltcG9ydGRdID0gIi1EaW1wb3J0ZD10cnVlLC1EaW1wb3J0ZD1mYWxzZSIKLSMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcwotUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItRGxpYmlwdGM9dHJ1ZSwtRGxpYmlwdGM9ZmFsc2UsaXB0YWJsZXMiCi1QQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItRGxpYmN1cmw9dHJ1ZSwtRGxpYmN1cmw9ZmFsc2UsY3VybCIKLVBBQ0tBR0VDT05GSUdba21vZF0gPSAiLURrbW9kPXRydWUsLURrbW9kPWZhbHNlLGttb2QiCi1QQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItRGxkY29uZmlnPXRydWUsLURsZGNvbmZpZz1mYWxzZSwsbGRjb25maWciCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURsaWJpZG49dHJ1ZSwtRGxpYmlkbj1mYWxzZSxsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi1EbG9jYWxlZD10cnVlLC1EbG9jYWxlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbG9naW5kXSA9ICItRGxvZ2luZD10cnVlLC1EbG9naW5kPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi1EbHo0PXRydWUsLURsejQ9ZmFsc2UsbHo0IgotUEFDS0FHRUNPTkZJR1ttYWNoaW5lZF0gPSAiLURtYWNoaW5lZD10cnVlLC1EbWFjaGluZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbj10cnVlLC1EbWFuPWZhbHNlLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW21pY3JvaHR0cGRdID0gIi1EbWljcm9odHRwZD10cnVlLC1EbWljcm9odHRwZD1mYWxzZSxsaWJtaWNyb2h0dHBkIgotUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItRG5zcy1teWhvc3RuYW1lPXRydWUsLURuc3MtbXlob3N0bmFtZT1mYWxzZSwsbGlibnNzLW15aG9zdG5hbWUiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItRG5ldHdvcmtkPXRydWUsLURuZXR3b3JrZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItRG5zcy1zeXN0ZW1kPXRydWUsLURuc3Mtc3lzdGVtZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbnNzLW15bWFjaGluZXNdID0gIi1EbnNzLW15bWFjaGluZXM9dHJ1ZSwtRG5zcy1teW1hY2hpbmVzPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tuc3MtcmVzb2x2ZV0gPSAiLURuc3MtcmVzb2x2ZT10cnVlLC1EbnNzLXJlc29sdmU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi1Eb3BlbnNzbD10cnVlLC1Eb3BlbnNzbD1mYWxzZSxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtLCR7UEFNX1BMVUdJTlN9IgotUEFDS0FHRUNPTkZJR1twY3JlMl0gPSAiLURwY3JlMj10cnVlLC1EcGNyZTI9ZmFsc2UsbGlicGNyZTIiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLURwb2xraXQ9dHJ1ZSwtRHBvbGtpdD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcG9ydGFibGVkXSA9ICItRHBvcnRhYmxlZD10cnVlLC1EcG9ydGFibGVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLURxcmVuY29kZT10cnVlLC1EcXJlbmNvZGU9ZmFsc2UscXJlbmNvZGUiCi1QQUNLQUdFQ09ORklHW3F1b3RhY2hlY2tdID0gIi1EcXVvdGFjaGVjaz10cnVlLC1EcXVvdGFjaGVjaz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLURyYW5kb21zZWVkPXRydWUsLURyYW5kb21zZWVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyZXNvbHZlZF0gPSAiLURyZXNvbHZlPXRydWUsLURyZXNvbHZlPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyZmtpbGxdID0gIi1EcmZraWxsPXRydWUsLURyZmtpbGw9ZmFsc2UiCi0jIGxpYnNlY2NvbXAgaXMgZm91bmQgaW4gbWV0YS1zZWN1cml0eQotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItRHNlY2NvbXA9dHJ1ZSwtRHNlY2NvbXA9ZmFsc2UsbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLURzZWxpbnV4PXRydWUsLURzZWxpbnV4PWZhbHNlLGxpYnNlbGludXgsaW5pdHNjcmlwdHMtc3VzaGVsbCIKLVBBQ0tBR0VDT05GSUdbc21hY2tdID0gIi1Ec21hY2s9dHJ1ZSwtRHNtYWNrPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLURzeXN1c2Vycz10cnVlLC1Ec3lzdXNlcnM9ZmFsc2UiCi0jIFdoZW4gZW5hYmxlZCB1c2UgcmVwcm9kdWNibGUgYnVpbGQgdGltZXN0YW1wIGlmIHNldCBhcyB0aW1lIGVwb2NoLAotIyBvciBidWlsZCB0aW1lIGlmIG5vdC4gV2hlbiBkaXNhYmxlZCwgdGltZSBlcG9jaCBpcyB1bnNldC4KLWRlZiBidWlsZF9lcG9jaChkKToKLSAgICBlcG9jaCA9IGQuZ2V0VmFyKCdTT1VSQ0VfREFURV9FUE9DSCcpIG9yICItMSIKLSAgICByZXR1cm4gJy1EdGltZS1lcG9jaD0lZCcgJSBpbnQoZXBvY2gpCi1QQUNLQUdFQ09ORklHW3NldC10aW1lLWVwb2NoXSA9ICIke0BidWlsZF9lcG9jaChkKX0sLUR0aW1lLWVwb2NoPTAiCi1QQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLUR0aW1lZGF0ZWQ9dHJ1ZSwtRHRpbWVkYXRlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGltZXN5bmNkXSA9ICItRHRpbWVzeW5jZD10cnVlLC1EdGltZXN5bmNkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t1c3JtZXJnZV0gPSAiLURzcGxpdC11c3I9ZmFsc2UsLURzcGxpdC11c3I9dHJ1ZSIKLVBBQ0tBR0VDT05GSUdbc2Jpbm1lcmdlXSA9ICItRHNwbGl0LWJpbj1mYWxzZSwtRHNwbGl0LWJpbj10cnVlIgotUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItRHV0bXA9dHJ1ZSwtRHV0bXA9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRFZBTEdSSU5EPTEsLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLUR2Y29uc29sZT10cnVlLC1EdmNvbnNvbGU9ZmFsc2UsLCR7UE59LXZjb25zb2xlLXNldHVwIgotIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCi1QQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLUR4a2Jjb21tb249dHJ1ZSwtRHhrYmNvbW1vbj1mYWxzZSxsaWJ4a2Jjb21tb24iCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItRHh6PXRydWUsLUR4ej1mYWxzZSx4eiIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLUR6bGliPXRydWUsLUR6bGliPWZhbHNlLHpsaWIiCi0KLSMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCi0jIGJ1aWxkIHN5c3RlbS4KLXJvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igotcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCi1yb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKLQotIyBUaGlzIGxpbmtzIHVkZXYgc3RhdGljYWxseSB3aXRoIHN5c3RlbWQgaGVscGVyIGxpYnJhcnkuCi0jIE90aGVyd2lzZSB1ZGV2IHBhY2thZ2Ugd291bGQgZGVwZW5kIG9uIHN5c3RlbWQgcGFja2FnZSAod2hpY2ggaGFzIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkpLAotIyBhbmQgYWx3YXlzIHB1bGwgaXQgaW50byBpbWFnZXMuCi1FWFRSQV9PRU1FU09OICs9ICItRGxpbmstdWRldi1zaGFyZWQ9ZmFsc2UiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1Ebm9ib2R5LXVzZXI9bm9ib2R5IFwKLSAgICAgICAgICAgICAgICAgIC1Ebm9ib2R5LWdyb3VwPW5vYm9keSBcCi0gICAgICAgICAgICAgICAgICAtRHJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRHJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgICAtRHN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRGRlZmF1bHQtbG9jYWxlPUMgXAotICAgICAgICAgICAgICAgICAgIgotCi0jIEhhcmRjb2RlIHRhcmdldCBiaW5hcnkgcGF0aHMgdG8gYXZvaWQgdXNpbmcgcGF0aHMgZnJvbSBzeXNyb290Ci1FWFRSQV9PRU1FU09OICs9ICItRGtleGVjLXBhdGg9JHtzYmluZGlyfS9rZXhlYyBcCi0gICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKLSAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCi0gICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAotICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKLSAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKLSAgICAgICAgICAgICAgICAgIC1Ebm9sb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9ub2xvZ2luIFwKLSAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgotCi1kb19pbnN0YWxsKCkgewotCW1lc29uX2RvX2luc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKLQkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgotCWZpCi0KLQkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCi0JWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKLQlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCi0JZmkKLQotCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAotCi0JIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KLQlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQotCi0JIyBqb3VybmFsLXJlbW90ZSBjcmVhdGVzIHRoaXMgYXQgc3RhcnQKLQlybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsL3JlbW90ZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCi0KLQkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWZpCi0KLQkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAotCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCi0JaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KLQlmaQotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAotCWVsc2UKLQkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQlmaQotCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKLQotCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgotCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKLQkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCWZpCi0JZmkKLQotCSMgY3JlYXRlIGxpbmsgZm9yIGV4aXN0aW5nIHVkZXYgcnVsZXMKLQlsbiAtcyAke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdWRldmFkbQotCi0JIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQotCWxuICR7RH0ke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbQotCi0JIyBpbnN0YWxsIGRlZmF1bHQgcG9saWN5IGZvciBwcmVzZXRzCi0JIyBodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kL1ByZXNldC8jaG93dG8KLQlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vOTktZGVmYXVsdC5wcmVzZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tcHJlc2V0Lzk5LWRlZmF1bHQucHJlc2V0Ci0KLSAgICAjIFdlIHVzZSBwYWNrYWdlIHBvc3RpbnN0cyBmb3IgdGhlIGh3ZGIgdXBkYXRlLCBhcyB0aGUgdXBkYXRlIHNlcnZpY2UgaXMKLSAgICAjIGVhc2lseSB0cmlnZ2VyZWQgZm9yIG5vIHJlYXNvbiBhbmQgd2lsbCBzbG93IGRvd24gYm9vdHMuCi0gICAgZmluZCAke0R9IC1uYW1lIHN5c3RlbWQtaHdkYi11cGRhdGUuc2VydmljZSAtZGVsZXRlCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpewotICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LWd1aSBcCi0gICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAotICAgICR7UE59LWluaXRyYW1mcyBcCi0gICAgJHtQTn0tYW5hbHl6ZSBcCi0gICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAotICAgICR7UE59LXJwbS1tYWNyb3MgXAotICAgICR7UE59LWJpbmZtdCBcCi0gICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAotICAgICR7UE59LWNvbnRhaW5lciBcCi0gICAgJHtQTn0tam91cm5hbC1nYXRld2F5ZCBcCi0gICAgJHtQTn0tam91cm5hbC11cGxvYWQgXAotICAgICR7UE59LWpvdXJuYWwtcmVtb3RlIFwKLSAgICAke1BOfS1leHRyYS11dGlscyBcCi0iCi0KLVNVTU1BUllfJHtQTn0tY29udGFpbmVyID0gIlRvb2xzIGZvciBjb250YWluZXJzIGFuZCBWTXMiCi1ERVNDUklQVElPTl8ke1BOfS1jb250YWluZXIgPSAiU3lzdGVtZCB0b29scyB0byBzcGF3biBhbmQgbWFuYWdlIGNvbnRhaW5lcnMgYW5kIHZpcnR1YWwgbWFjaGluZXMuIgotCi1TVU1NQVJZXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAiSFRUUCBzZXJ2ZXIgZm9yIGpvdXJuYWwgZXZlbnRzIgotREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICJzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgc2VydmVzIGpvdXJuYWwgZXZlbnRzIG92ZXIgdGhlIG5ldHdvcmsuIENsaWVudHMgbXVzdCBjb25uZWN0IHVzaW5nIEhUVFAuIFRoZSBzZXJ2ZXIgbGlzdGVucyBvbiBwb3J0IDE5NTMxIGJ5IGRlZmF1bHQuIgotCi1TVU1NQVJZXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIlNlbmQgam91cm5hbCBtZXNzYWdlcyBvdmVyIHRoZSBuZXR3b3JrIgotREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC11cGxvYWQgPSAic3lzdGVtZC1qb3VybmFsLXVwbG9hZCB1cGxvYWRzIGpvdXJuYWwgZW50cmllcyB0byBhIHNwZWNpZmllZCBVUkwuIgotCi1TVU1NQVJZXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIlJlY2VpdmUgam91cm5hbCBtZXNzYWdlcyBvdmVyIHRoZSBuZXR3b3JrIgotREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC1yZW1vdGUgPSAic3lzdGVtZC1qb3VybmFsLXJlbW90ZSBpcyBhIGNvbW1hbmQgdG8gcmVjZWl2ZSBzZXJpYWxpemVkIGpvdXJuYWwgZXZlbnRzIGFuZCBzdG9yZSB0aGVtIHRvIGpvdXJuYWwgZmlsZXMuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLWdhdGV3YXlkJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1yZW1vdGUnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnJHtQTn0tam91cm5hbC11cGxvYWQnLCAnJywgZCl9IFwKLSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1nYXRld2F5JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1yZW1vdGUnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnJHtQTn0tam91cm5hbC11cGxvYWQnLCAnJywgZCl9IFwKLSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHN5c3RlbWQtam91cm5hbCIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0tZXh0cmEtdXRpbHMgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eSIKLVVTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC1nYXRld2F5ID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXkiCi1VU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXJlbW90ZSIKLVVTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC11cGxvYWQgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIgotCi1GSUxFU18ke1BOfS1hbmFseXplID0gIiR7YmluZGlyfS9zeXN0ZW1kLWFuYWx5emUiCi0KLUZJTEVTXyR7UE59LWluaXRyYW1mcyA9ICIvaW5pdCIKLVJERVBFTkRTXyR7UE59LWluaXRyYW1mcyA9ICIke1BOfSIKLQotRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCi0KLUZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCi1GSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCi0KLUZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLVJSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgotCi1SUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKLQotCi1GSUxFU18ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vc3lzdGVtZC9nYXRld2F5ZC9icm93c2UuaHRtbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAic3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCIKLQotRklMRVNfJHtQTn0tam91cm5hbC11cGxvYWQgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXVwbG9hZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsLXVwbG9hZC5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gInN5c3RlbWQtam91cm5hbC11cGxvYWQuc2VydmljZSIKLQotRklMRVNfJHtQTn0tam91cm5hbC1yZW1vdGUgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsLXJlbW90ZS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tcmVtb3RlID0gInN5c3RlbWQtam91cm5hbC1yZW1vdGUuc29ja2V0IgotCi0KLUZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9tYWNoaW5lcy50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JlbW90ZS1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotUlJFQ09NTUVORFNfJHtQTn0tY29udGFpbmVyICs9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC11cGxvYWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtcmVtb3RlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLWdhdGV3YXlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKLSIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9yZXNvbHZlZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdGltZXN5bmNkLmNvbmYgXAotIgotCi1GSUxFU18ke1BOfSA9ICIgJHtiYXNlX2JpbmRpcn0vKiBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vaGFsdCBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwgXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS90ZWxpbml0IFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcmVzb2x2Y29uZiBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2luaXQgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyogXAotICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAotICAgICAgICAgICAgICAgIC9jZ3JvdXAgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kKiBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2J1c2N0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2NvcmVkdW1wY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9jYWxlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vaG9zdG5hbWVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZXNvbHZlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAotICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2Rwcm9iZS5kL3N5c3RlbWQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVzeW5jMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucG9ydGFibGUxLmNvbmYgXAotICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXVtb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIHV0aWwtbGludXgtYWdldHR5IHV0aWwtbGludXgtZnNjayIKLVJERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IgotUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIHVwZGF0ZS1yYy5kIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAic3lzdGVtZC1leHRyYS11dGlscyBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb21wYXQtdW5pdHMgdWRldi1od2RiIFwKLSAgICAgICAgICAgICAgICAgICAgICBlMmZzcHJvZ3MtZTJmc2NrIFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBcCi0gICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb25mIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKLQotUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgotCi1SUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgotCi1SREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCi0KLUZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL25ldHdvcmsvOTktZGVmYXVsdC5saW5rIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2FjY2VsZXJvbWV0ZXIgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hdGFfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jZHJvbV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2NvbGxlY3QgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9maW5ka2V5Ym9hcmRzIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5Ym9hcmQtZm9yY2UtcmVsZWFzZS5zaCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L210ZF9wcm9iZSBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Njc2lfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi92NGxfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXBzIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC8qLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdWRldiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi53YW50cy8qdWRldiogXAotICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vdWRldmFkbSBcCi0gICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vdWRldmFkbSBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbSBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgIgotCi1GSUxFU191ZGV2LWh3ZGIgPSAiJHtyb290bGliZXhlY2Rpcn0vdWRldi9od2RiLmQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAidGlueS1pbml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3Jlc29sdmNvbmYnLCAnJywgZCl9IgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCi1JTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLXB5dGhvbiBkb193YXJuX211c2woKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpID09ICJtdXNsIjoKLSAgICAgICAgYmIud2FybigiVXNpbmcgc3lzdGVtZCB3aXRoIG11c2wgaXMgbm90IHJlY29tbWVuZGVkIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgdXBzdHJlYW0gYW5kIHNvbWUgcGF0Y2hlcyBhcmUga25vd24gdG8gYmUgcHJvYmxlbWF0aWMuIikKLX0KLWFkZHRhc2sgd2Fybl9tdXNsIGJlZm9yZSBkb19jb25maWd1cmUKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaGFsdCByZWJvb3Qgc2h1dGRvd24gcG93ZXJvZmYgcnVubGV2ZWwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAncmVzb2x2LWNvbmYnLCAnJywgZCl9IgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Jlc29sdi1jb25mXSA/PSAiNTAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgotCi1wa2dfcG9zdGluc3RfJHtQTn1fbGliYy1nbGliYyAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG15aG9zdG5hbWUgXDNcNFw1LycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn1fbGliYy1nbGliYyAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKLQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLQkJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV91ZGV2X2h3ZGIgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfQotCWVsc2UKLQkJdWRldmFkbSBod2RiIC0tdXBkYXRlCi0JZmkKLX0KLQotcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7Ci0Jcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0NS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQ1LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlNDIyMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0NS41LmJiCkBAIC0wLDAgKzEsNzE1IEBACityZXF1aXJlIHN5c3RlbWQuaW5jCisKK1BST1ZJREVTID0gInVkZXYiCisKK1BFID0gIjEiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCIKKworU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitpbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZmVhdHVyZXNfY2hlY2sKKworIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbworIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKworU1JDX1VSSSArPSAiZmlsZTovL3RvdWNoc2NyZWVuLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovLzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vOTktZGVmYXVsdC5wcmVzZXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKKyAgICAgICAgICAgIgorCisjIHBhdGNoZXMgbmVlZGVkIGJ5IG11c2wKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtTUkNfVVJJX01VU0x9IgorU1JDX1VSSV9NVVNMID0gIlwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1IYW5kbGUtbWlzc2luZy1nc2hhZG93LnBhdGNoIFwKKyAgICAgICAgICAgICAgICIKKworUEFNX1BMVUdJTlMgPSAiIFwKKyAgICBwYW0tcGx1Z2luLXVuaXggXAorICAgIHBhbS1wbHVnaW4tbG9naW51aWQgXAorICAgIHBhbS1wbHVnaW4ta2V5aW5pdCBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCBhdWRpdCBlZmkgbGRjb25maWcgcGFtIHNlbGludXggc21hY2sgdXNybWVyZ2UgcG9sa2l0JywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCisgICAgYmFja2xpZ2h0IFwKKyAgICBiaW5mbXQgXAorICAgIGdzaGFkb3cgXAorICAgIGhpYmVybmF0ZSBcCisgICAgaG9zdG5hbWVkIFwKKyAgICBpZG4gXAorICAgIGltYSBcCisgICAga21vZCBcCisgICAgbG9jYWxlZCBcCisgICAgbG9naW5kIFwKKyAgICBtYWNoaW5lZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbmV0d29ya2QgXAorICAgIG5zcyBcCisgICAgbnNzLW15bWFjaGluZXMgXAorICAgIG5zcy1yZXNvbHZlIFwKKyAgICBxdW90YWNoZWNrIFwKKyAgICByYW5kb21zZWVkIFwKKyAgICByZXNvbHZlZCBcCisgICAgc2V0LXRpbWUtZXBvY2ggXAorICAgIHN5c3VzZXJzIFwKKyAgICBzeXN2aW5pdCBcCisgICAgdGltZWRhdGVkIFwKKyAgICB0aW1lc3luY2QgXAorICAgIHVzZXJkYiBcCisgICAgdXRtcCBcCisgICAgdmNvbnNvbGUgXAorICAgIHh6IFwKKyIKKworUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCisgICAgZ3NoYWRvdyBcCisgICAgaWRuIFwKKyAgICBsb2NhbGVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuc3MgXAorICAgIG5zcy1teW1hY2hpbmVzIFwKKyAgICBuc3MtcmVzb2x2ZSBcCisgICAgc3lzdXNlcnMgXAorICAgIHVzZXJkYiBcCisgICAgdXRtcCBcCisiCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9fVUFQSV9ERUZfRVRISERSPTAgIgorCisjIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KKyMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYworIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KK1BBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLURhY2w9dHJ1ZSwtRGFjbD1mYWxzZSxhY2wiCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItRGF1ZGl0PXRydWUsLURhdWRpdD1mYWxzZSxhdWRpdCIKK1BBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItRGJhY2tsaWdodD10cnVlLC1EYmFja2xpZ2h0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi1EYmluZm10PXRydWUsLURiaW5mbXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRGJ6aXAyPXRydWUsLURiemlwMj1mYWxzZSxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY2dyb3VwdjJdID0gIi1EZGVmYXVsdC1oaWVyYXJjaHk9dW5pZmllZCwtRGRlZmF1bHQtaGllcmFyY2h5PWh5YnJpZCIKK1BBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi1EY29yZWR1bXA9dHJ1ZSwtRGNvcmVkdW1wPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItRGxpYmNyeXB0c2V0dXA9dHJ1ZSwtRGxpYmNyeXB0c2V0dXA9ZmFsc2UsY3J5cHRzZXR1cCIKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLURkYnVzPXRydWUsLURkYnVzPWZhbHNlLGRidXMiCitQQUNLQUdFQ09ORklHW2VmaV0gPSAiLURlZmk9dHJ1ZSwtRGVmaT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZ251LWVmaV0gPSAiLURnbnUtZWZpPXRydWUgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpLC1EZ251LWVmaT1mYWxzZSxnbnUtZWZpIgorUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLURlbGZ1dGlscz10cnVlLC1EZWxmdXRpbHM9ZmFsc2UsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2ZpcnN0Ym9vdF0gPSAiLURmaXJzdGJvb3Q9dHJ1ZSwtRGZpcnN0Ym9vdD1mYWxzZSIKKyMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItRGdjcnlwdD10cnVlLC1EZ2NyeXB0PWZhbHNlLGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItRGdudXRscz10cnVlLC1EZ251dGxzPWZhbHNlLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ3NoYWRvd10gPSAiLURnc2hhZG93PXRydWUsLURnc2hhZG93PWZhbHNlIgorUEFDS0FHRUNPTkZJR1toaWJlcm5hdGVdID0gIi1EaGliZXJuYXRlPXRydWUsLURoaWJlcm5hdGU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLURob3N0bmFtZWQ9dHJ1ZSwtRGhvc3RuYW1lZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaWRuXSA9ICItRGlkbj10cnVlLC1EaWRuPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tpbWFdID0gIi1EaW1hPXRydWUsLURpbWE9ZmFsc2UiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItRGltcG9ydGQ9dHJ1ZSwtRGltcG9ydGQ9ZmFsc2UiCisjIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKK1BBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLURsaWJpcHRjPXRydWUsLURsaWJpcHRjPWZhbHNlLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLURsaWJjdXJsPXRydWUsLURsaWJjdXJsPWZhbHNlLGN1cmwiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi1Ea21vZD10cnVlLC1Ea21vZD1mYWxzZSxrbW9kIgorUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLURsZGNvbmZpZz10cnVlLC1EbGRjb25maWc9ZmFsc2UsLGxkY29uZmlnIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi1EbGliaWRuPXRydWUsLURsaWJpZG49ZmFsc2UsbGliaWRuIgorUEFDS0FHRUNPTkZJR1tsaWJpZG4yXSA9ICItRGxpYmlkbjI9dHJ1ZSwtRGxpYmlkbjI9ZmFsc2UsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLURsb2NhbGVkPXRydWUsLURsb2NhbGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi1EbG9naW5kPXRydWUsLURsb2dpbmQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLURsejQ9dHJ1ZSwtRGx6ND1mYWxzZSxsejQiCitQQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItRG1hY2hpbmVkPXRydWUsLURtYWNoaW5lZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLURtaWNyb2h0dHBkPXRydWUsLURtaWNyb2h0dHBkPWZhbHNlLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi1EbnNzLW15aG9zdG5hbWU9dHJ1ZSwtRG5zcy1teWhvc3RuYW1lPWZhbHNlLCxsaWJuc3MtbXlob3N0bmFtZSIKK1BBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi1EbmV0d29ya2Q9dHJ1ZSwtRG5ldHdvcmtkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EbnNzLXN5c3RlbWQ9dHJ1ZSwtRG5zcy1zeXN0ZW1kPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3MtbXltYWNoaW5lc10gPSAiLURuc3MtbXltYWNoaW5lcz10cnVlLC1EbnNzLW15bWFjaGluZXM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25zcy1yZXNvbHZlXSA9ICItRG5zcy1yZXNvbHZlPXRydWUsLURuc3MtcmVzb2x2ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLURvcGVuc3NsPXRydWUsLURvcGVuc3NsPWZhbHNlLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLURwYW09dHJ1ZSwtRHBhbT1mYWxzZSxsaWJwYW0sJHtQQU1fUExVR0lOU30iCitQQUNLQUdFQ09ORklHW3BjcmUyXSA9ICItRHBjcmUyPXRydWUsLURwY3JlMj1mYWxzZSxsaWJwY3JlMiIKK1BBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItRHBvbGtpdD10cnVlLC1EcG9sa2l0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1twb3J0YWJsZWRdID0gIi1EcG9ydGFibGVkPXRydWUsLURwb3J0YWJsZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItRHFyZW5jb2RlPXRydWUsLURxcmVuY29kZT1mYWxzZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLURxdW90YWNoZWNrPXRydWUsLURxdW90YWNoZWNrPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItRHJhbmRvbXNlZWQ9dHJ1ZSwtRHJhbmRvbXNlZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItRHJlc29sdmU9dHJ1ZSwtRHJlc29sdmU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLURyZmtpbGw9dHJ1ZSwtRHJma2lsbD1mYWxzZSIKKyMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi1Ec2VjY29tcD10cnVlLC1Ec2VjY29tcD1mYWxzZSxsaWJzZWNjb21wIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgorUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbc3lzdmluaXRdID0gIi1Ec3lzdmluaXQtcGF0aD0ke3N5c2NvbmZkaXJ9L2luaXQuZCAtRHN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSwtRHN5c3Zpbml0LXBhdGg9IC1Ec3lzdnJjbmQtcGF0aD0sLHN5c3RlbWQtY29tcGF0LXVuaXRzIHVwZGF0ZS1yYy5kIgorIyBXaGVuIGVuYWJsZWQgdXNlIHJlcHJvZHVjYmxlIGJ1aWxkIHRpbWVzdGFtcCBpZiBzZXQgYXMgdGltZSBlcG9jaCwKKyMgb3IgYnVpbGQgdGltZSBpZiBub3QuIFdoZW4gZGlzYWJsZWQsIHRpbWUgZXBvY2ggaXMgdW5zZXQuCitkZWYgYnVpbGRfZXBvY2goZCk6CisgICAgZXBvY2ggPSBkLmdldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnKSBvciAiLTEiCisgICAgcmV0dXJuICctRHRpbWUtZXBvY2g9JWQnICUgaW50KGVwb2NoKQorUEFDS0FHRUNPTkZJR1tzZXQtdGltZS1lcG9jaF0gPSAiJHtAYnVpbGRfZXBvY2goZCl9LC1EdGltZS1lcG9jaD0wIgorUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi1EdGltZWRhdGVkPXRydWUsLUR0aW1lZGF0ZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLUR0aW1lc3luY2Q9dHJ1ZSwtRHRpbWVzeW5jZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdXNybWVyZ2VdID0gIi1Ec3BsaXQtdXNyPWZhbHNlLC1Ec3BsaXQtdXNyPXRydWUiCitQQUNLQUdFQ09ORklHW3NiaW5tZXJnZV0gPSAiLURzcGxpdC1iaW49ZmFsc2UsLURzcGxpdC1iaW49dHJ1ZSIKK1BBQ0tBR0VDT05GSUdbdXNlcmRiXSA9ICItRHVzZXJkYj10cnVlLC1EdXNlcmRiPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItRHV0bXA9dHJ1ZSwtRHV0bXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRFZBTEdSSU5EPTEsLHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLUR2Y29uc29sZT10cnVlLC1EdmNvbnNvbGU9ZmFsc2UsLCR7UE59LXZjb25zb2xlLXNldHVwIgorIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCitQQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLUR4a2Jjb21tb249dHJ1ZSwtRHhrYmNvbW1vbj1mYWxzZSxsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3h6XSA9ICItRHh6PXRydWUsLUR4ej1mYWxzZSx4eiIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLUR6bGliPXRydWUsLUR6bGliPWZhbHNlLHpsaWIiCisKKyMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCisjIGJ1aWxkIHN5c3RlbS4KK3Jvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igorcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCityb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKKworIyBUaGlzIGxpbmtzIHVkZXYgc3RhdGljYWxseSB3aXRoIHN5c3RlbWQgaGVscGVyIGxpYnJhcnkuCisjIE90aGVyd2lzZSB1ZGV2IHBhY2thZ2Ugd291bGQgZGVwZW5kIG9uIHN5c3RlbWQgcGFja2FnZSAod2hpY2ggaGFzIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkpLAorIyBhbmQgYWx3YXlzIHB1bGwgaXQgaW50byBpbWFnZXMuCitFWFRSQV9PRU1FU09OICs9ICItRGxpbmstdWRldi1zaGFyZWQ9ZmFsc2UiCisKK0VYVFJBX09FTUVTT04gKz0gIi1Ebm9ib2R5LXVzZXI9bm9ib2R5IFwKKyAgICAgICAgICAgICAgICAgIC1Ebm9ib2R5LWdyb3VwPW5vYm9keSBcCisgICAgICAgICAgICAgICAgICAtRHJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRHJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCisgICAgICAgICAgICAgICAgICAtRGRlZmF1bHQtbG9jYWxlPUMgXAorICAgICAgICAgICAgICAgICAgIgorCisjIEhhcmRjb2RlIHRhcmdldCBiaW5hcnkgcGF0aHMgdG8gYXZvaWQgdXNpbmcgcGF0aHMgZnJvbSBzeXNyb290CitFWFRSQV9PRU1FU09OICs9ICItRGtleGVjLXBhdGg9JHtzYmluZGlyfS9rZXhlYyBcCisgICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKKyAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCisgICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAorICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKKyAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1Ebm9sb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9ub2xvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgorCitkb19pbnN0YWxsKCkgeworCW1lc29uX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKKwkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgorCWZpCisKKwkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCisJWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKKwlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKKwlmaQorCisJY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCisKKwkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgorCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCisKKwkjIGpvdXJuYWwtcmVtb3RlIGNyZWF0ZXMgdGhpcyBhdCBzdGFydAorCXJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL2pvdXJuYWwvcmVtb3RlCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKKworCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJZmkKKworCSMgdGhpcyBmaWxlIGlzIG5lZWRlZCB0byBleGlzdCBpZiBuZXR3b3JrZCBpcyBkaXNhYmxlZCBidXQgdGltZXN5bmNkIGlzIHN0aWxsIGluIHVzZSBzaW5jZSB0aW1lc3luY2QgY2hlY2tzIGl0CisJIyBmb3IgZXhpc3RlbmNlIGVsc2UgaXQgZmFpbHMKKwlpZiBbIC1zICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYgXTsgdGhlbgorCQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICc6JywgJ3NlZCAtaSAtZSAiXCRhZCAvcnVuL3N5c3RlbWQvbmV0aWYvbGlua3MgMDc1NSByb290IHJvb3QgLSIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZicsIGQpfQorCWZpCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWVjaG8gJ0whICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQllY2hvICdkIC9ydW4vc3lzdGVtZC9yZXNvbHZlIDA3NTUgcm9vdCByb290IC0nID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQllY2hvICdmIC9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZWxzZQorCQlzZWQgLWkgLWUgInMlXkwhIC9ldGMvcmVzb2x2LmNvbmYuKiQlTCEgL2V0Yy9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYlZyIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWZpCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgorCQlybSAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQveDExLmNvbmYKKwkJcm0gLXIgJHtEfSR7c3lzY29uZmRpcn0vWDExCisJZmkKKworCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgorCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCWZpCisJZmkKKworCSMgY3JlYXRlIGxpbmsgZm9yIGV4aXN0aW5nIHVkZXYgcnVsZXMKKwlsbiAtcyAke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdWRldmFkbQorCisJIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0CisJaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorCWxuICR7RH0ke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbQorCisJIyBpbnN0YWxsIGRlZmF1bHQgcG9saWN5IGZvciBwcmVzZXRzCisJIyBodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kL1ByZXNldC8jaG93dG8KKwlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vOTktZGVmYXVsdC5wcmVzZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tcHJlc2V0Lzk5LWRlZmF1bHQucHJlc2V0Cit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpeworICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorfQorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICJcCisgICAgJHtQTn0tZ3VpIFwKKyAgICAke1BOfS12Y29uc29sZS1zZXR1cCBcCisgICAgJHtQTn0taW5pdHJhbWZzIFwKKyAgICAke1BOfS1hbmFseXplIFwKKyAgICAke1BOfS1rZXJuZWwtaW5zdGFsbCBcCisgICAgJHtQTn0tcnBtLW1hY3JvcyBcCisgICAgJHtQTn0tYmluZm10IFwKKyAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCisgICAgJHtQTn0tY29udGFpbmVyIFwKKyAgICAke1BOfS1qb3VybmFsLWdhdGV3YXlkIFwKKyAgICAke1BOfS1qb3VybmFsLXVwbG9hZCBcCisgICAgJHtQTn0tam91cm5hbC1yZW1vdGUgXAorICAgICR7UE59LWV4dHJhLXV0aWxzIFwKKyAgICB1ZGV2IFwKKyAgICB1ZGV2LWh3ZGIgXAorIgorCitTVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgorREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKKworU1VNTUFSWV8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gIkhUVFAgc2VydmVyIGZvciBqb3VybmFsIGV2ZW50cyIKK0RFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAic3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIHNlcnZlcyBqb3VybmFsIGV2ZW50cyBvdmVyIHRoZSBuZXR3b3JrLiBDbGllbnRzIG11c3QgY29ubmVjdCB1c2luZyBIVFRQLiBUaGUgc2VydmVyIGxpc3RlbnMgb24gcG9ydCAxOTUzMSBieSBkZWZhdWx0LiIKKworU1VNTUFSWV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJTZW5kIGpvdXJuYWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yayIKK0RFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gInN5c3RlbWQtam91cm5hbC11cGxvYWQgdXBsb2FkcyBqb3VybmFsIGVudHJpZXMgdG8gYSBzcGVjaWZpZWQgVVJMLiIKKworU1VNTUFSWV8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICJSZWNlaXZlIGpvdXJuYWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yayIKK0RFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gInN5c3RlbWQtam91cm5hbC1yZW1vdGUgaXMgYSBjb21tYW5kIHRvIHJlY2VpdmUgc2VyaWFsaXplZCBqb3VybmFsIGV2ZW50cyBhbmQgc3RvcmUgdGhlbSB0byBqb3VybmFsIGZpbGVzLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1nYXRld2F5ZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtcmVtb3RlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJyR7UE59LWpvdXJuYWwtdXBsb2FkJywgJycsIGQpfSBcCisiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMgXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtZ2F0ZXdheScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtcmVtb3RlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJyR7UE59LWpvdXJuYWwtdXBsb2FkJywgJycsIGQpfSBcCisiCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBzeXN0ZW1kLWpvdXJuYWwiCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgLS1ob21lLWRpciAke3N5c2NvbmZkaXJ9L3BvbGtpdC0xIHBvbGtpdGQ7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1idXMtcHJveHkiCitVU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtZ2F0ZXdheSA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5IgorVVNFUkFERF9QQVJBTV8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGUiCitVU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZCIKKworRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgorCitGSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCitSREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCisKK0ZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgorCitGSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCisKK1JERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgorRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgorCitGSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAorICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCitSUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKKworUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCisKKworRklMRVNfJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3N5c3RlbWQvZ2F0ZXdheWQvYnJvd3NlLmh0bWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gInN5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQiCisKK0ZJTEVTXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXVwbG9hZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC11cGxvYWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbC11cGxvYWQuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbC1yZW1vdGUuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1yZW1vdGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1yZW1vdGUuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gInN5c3RlbWQtam91cm5hbC1yZW1vdGUuc29ja2V0IgorCisKK0ZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9tYWNoaW5lcy50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JlbW90ZS1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworUlJFQ09NTUVORFNfJHtQTn0tY29udGFpbmVyICs9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC11cGxvYWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtcmVtb3RlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLWdhdGV3YXlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKKyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbmV0d29ya2QuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3BzdG9yZS5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvcmVzb2x2ZWQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3NsZWVwLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3RpbWVzeW5jZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdXNlci5jb25mIFwKKyIKKworRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2hhbHQgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vdGVsaW5pdCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3Jlc29sdmNvbmYgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9yZWJvb3QgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9pbml0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3BhbS5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjdGwuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0veGRnLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvUkVBRE1FIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKKyAgICAgICAgICAgICAgICAvY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVzb2x2ZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9lbnZpcm9ubWVudC5kIFwKKyAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzAtdWFjY2Vzcy5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC85OS1zeXN0ZW1kLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9tb2Rwcm9iZS5kL3N5c3RlbWQuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVzeW5jMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucG9ydGFibGUxLmNvbmYgXAorICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXVtb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIHV0aWwtbGludXgtYWdldHR5IHV0aWwtbGludXgtZnNjayIKK1JERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAic3lzdGVtZC1leHRyYS11dGlscyBcCisgICAgICAgICAgICAgICAgICAgICAgdWRldi1od2RiIFwKKyAgICAgICAgICAgICAgICAgICAgICBlMmZzcHJvZ3MtZTJmc2NrIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBrZXJuZWwtbW9kdWxlLXNjaC1mcS1jb2RlbCBcCisgICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCisgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb25mIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKKworUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKKworUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgorCitGSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9uZXR3b3JrLzk5LWRlZmF1bHQubGluayBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmlkb19pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzUwLXVkZXYtZGVmYXVsdC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtYXV0b3N1c3BlbmQtY2hyb21pdW1vcy5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtYmxvY2sucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWNkcm9tX2lkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1kcm0ucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWV2ZGV2LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1maWRvLWlkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1pbnB1dC1pZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtcGVyc2lzdGVudC1hbHNhLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LWlucHV0LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS10YXBlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LXY0bC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtc2Vuc29yLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1zZXJpYWwucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYxLWF1dG9zdXNwZW5kLW1hbnVhbC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjQtYnRyZnMucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcwLWpveXN0aWNrLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MC1tb3VzZS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzAtcG93ZXItc3dpdGNoLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MC10b3VjaHBhZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzUtbmV0LWRlc2NyaXB0aW9uLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83NS1wcm9iZV9tdGQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzc4LXNvdW5kLWNhcmQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzgwLWRyaXZlcnMucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1zZXR1cC1saW5rLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC85MC12Y29uc29sZS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaHdkYiBcCisgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh3ZGItdXBkYXRlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAiCisKK0ZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCBcCisgICAgICAgICAgICAgICAgICAgIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbnktaW5pdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICdyZXNvbHZjb25mJywgJycsIGQpfSIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgorSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQorfQorCitweXRob24gZG9fd2Fybl9tdXNsKCkgeworICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSA9PSAibXVzbCI6CisgICAgICAgIGJiLndhcm4oIlVzaW5nIHN5c3RlbWQgd2l0aCBtdXNsIGlzIG5vdCByZWNvbW1lbmRlZCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIHVwc3RyZWFtIGFuZCBzb21lIHBhdGNoZXMgYXJlIGtub3duIHRvIGJlIHByb2JsZW1hdGljLiIpCit9CithZGR0YXNrIHdhcm5fbXVzbCBiZWZvcmUgZG9fY29uZmlndXJlCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3Jlc29sdi1jb25mJywgJycsIGQpfSIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZXNvbHYtY29uZl0gPz0gIjUwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaGFsdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaGFsdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3JlYm9vdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3JlYm9vdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3NodXRkb3duXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3NodXRkb3duXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcG93ZXJvZmZdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcG93ZXJvZmZdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtydW5sZXZlbF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCitBTFRFUk5BVElWRV9QUklPUklUWVtydW5sZXZlbF0gPz0gIjMwMCIKKworcGtnX3Bvc3RpbnN0XyR7UE59X2xpYmMtZ2xpYmMgKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworcGtnX3ByZXJtXyR7UE59X2xpYmMtZ2xpYmMgKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICcvXmhvc3RzOi9zL1xzKm15aG9zdG5hbWUvLycgXAorCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorfQorCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgorcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7CisJaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisJCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfdWRldl9od2RiICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gcm9vdGxpYmV4ZWNkaXI9IiR7cm9vdGxpYmV4ZWNkaXJ9IiBQUkVGRVJSRURfUFJPVklERVJfdWRldj0iJHtQUkVGRVJSRURfUFJPVklERVJfdWRldn0iCisJZWxzZQorCQl1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKwlmaQorfQorCitwa2dfcHJlcm1fdWRldi1od2RiICgpIHsKKwlybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLVRoaXMtZml4ZXMtYW4taXNzdWUtdGhhdC1jbGFuZy1yZXBvcnRzLWFib3V0LW11dGxpcGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM1YzE1Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMzZhYzk3YmZlNTE3OTc0NTg0NDJhNjAzNTIxOWE1MDRhNDJlNzAzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIxIEF1ZyAyMDE1IDEwOjU2OjQwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRoaXMgZml4ZXMgYW4gaXNzdWUgdGhhdCBjbGFuZyByZXBvcnRzIGFib3V0IG11dGxpcGxlIG91dHB1dAotIGZpbGVzCi0KLUlzc3VlIGlzIHRoYXQgd2UgYXJlIHBhc3NpbmcgLmggZmlsZSB0byBsaW5rIHN0ZXAgYXMgc2VlbiBiZWxvdy4KLQotfCBhcm0tb2UtbGludXgtZ251ZWFiaS1jbGFuZyAgLW1hcmNoPWFybXY3LWEgLW10aHVtYiAgLW1mbG9hdC1hYmk9aGFyZAotLW1mcHU9bmVvbi12ZnB2NCAtbXR1bmU9Y29ydGV4LWE3IC1EX19leHRlcm5fYWx3YXlzX2lubGluZT1pbmxpbmUKLS1uby1pbnRlZ3JhdGVkLWFzCi0tLXN5c3Jvb3Q9L21udC9ob21lL2tyYWovd29yay9hbmdzdHJvbS9zb3VyY2VzL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9yYXNwYmVycnlwaTIKLS1XbCwtTzEgLVdsLC0taGFzaC1zdHlsZT1nbnUgLVdsLC0tYXMtbmVlZGVkICBoYWx0Lm8gaWZkb3duLm8gaGRkb3duLm8KLXV0bXAubyByZWJvb3QuaCAgIC1vIGhhbHQKLXwgY2xhbmctMy43OiBlcnJvcjogY2Fubm90IHNwZWNpZnkgLW8gd2hlbiBnZW5lcmF0aW5nIG11bHRpcGxlIG91dHB1dAotZmlsZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUgfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKLWluZGV4IGU3N2VkNWYuLmE2ZjlmNDAgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUKLSsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTEwMyw5ICsxMDMsOSBAQCBhbGw6CQkkKEJJTikgJChTQklOKSAkKFVTUkJJTikKLSBpbml0OgkJTERMSUJTICs9ICQoSU5JVExJQlMpICQoU1RBVElDKQotIGluaXQ6CQlpbml0Lm8gaW5pdF91dG1wLm8KLSAKLS1oYWx0OgkJaGFsdC5vIGlmZG93bi5vIGhkZG93bi5vIHV0bXAubyByZWJvb3QuaAotK2hhbHQ6CQloYWx0Lm8gaWZkb3duLm8gaGRkb3duLm8gdXRtcC5vCi0gCi0tbGFzdDoJCWxhc3QubyBvbGR1dG1wLmgKLStsYXN0OgkJbGFzdC5vCi0gCi0gbWVzZzoJCW1lc2cubwotIAotQEAgLTEyMCw3ICsxMjAsNyBAQCBzdWxvZ2luOglzdWxvZ2luLm8KLSAKLSB3YWxsOgkJZG93YWxsLm8gd2FsbC5vCi0gCi0tc2h1dGRvd246CWRvd2FsbC5vIHNodXRkb3duLm8gdXRtcC5vIHJlYm9vdC5oCi0rc2h1dGRvd246CWRvd2FsbC5vIHNodXRkb3duLm8gdXRtcC5vCi0gCi0gYm9vdGxvZ2Q6CUxETElCUyArPSAtbHV0aWwKLSBib290bG9nZDoJYm9vdGxvZ2QubwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCmluZGV4IGUxM2FjOWQuLjYwZmJkODcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYzI5YTg2ZjM1MWVhNDgyN2RjNDQ1YmI4ZTZjYjc3NDU0M2M5YmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNzEwYTNhY2NkMWZhYmRiNjcxMjc0ZTFhNDU4NDA1MjgyZDUxZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNiBBdWcgMjAxOCAxNTozODo1OCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IgZGVmaW5pdGlvbnMKQEAgLTEzLDEwICsxMywxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYm9vdGxvZ2QuYyBiL3NyYy9ib290bG9nZC5jCi1pbmRleCA1NzBkMzgyLi42OGQ2MmYzIDEwMDY0NAoraW5kZXggNzg3ZGI4Ny4uOGIwNzkwMyAxMDA2NDQKIC0tLSBhL3NyYy9ib290bG9nZC5jCiArKysgYi9zcmMvYm9vdGxvZ2QuYwotQEAgLTM1LDYgKzM1LDcgQEAKK0BAIC0yOSw2ICsyOSw3IEBACiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICNpbmNsdWRlIDxzeXMvdGltZS5oPgogICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpAQCAtMjUsNyArMjUsNyBAQAogICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgogICNpbmNsdWRlIDx0aW1lLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL21vdW50cG9pbnQuYyBiL3NyYy9tb3VudHBvaW50LmMKLWluZGV4IDllM2RkOWMuLjkxZjc0ZWQgMTAwNjQ0CitpbmRleCA1ZjIwNTIyLi45NGRmN2ExIDEwMDY0NAogLS0tIGEvc3JjL21vdW50cG9pbnQuYwogKysrIGIvc3JjL21vdW50cG9pbnQuYwogQEAgLTI1LDYgKzI1LDcgQEAKQEAgLTM3LDcgKzM3LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogZGlmZiAtLWdpdCBhL3NyYy9zaHV0ZG93bi5jIGIvc3JjL3NodXRkb3duLmMKLWluZGV4IDdlOTk3ZGEuLjE3ZGU1OGQgMTAwNjQ0CitpbmRleCBiNzQ0YTJjLi40MGI3ZmFmIDEwMDY0NAogLS0tIGEvc3JjL3NodXRkb3duLmMKICsrKyBiL3NyYy9zaHV0ZG93bi5jCiBAQCAtNDAsNiArNDAsNyBAQApAQCAtNDYsNSArNDYsNSBAQAogICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2lmZGVmIF9fbGludXhfXworICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+ICAgLyogYnJvdWdodCBpbiBteSBMRlMgcGF0Y2ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvY3J5cHQtbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9jcnlwdC1saWIucGF0Y2gKaW5kZXggN2IzNDI5MC4uYmQ0NDQ0YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9jcnlwdC1saWIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9jcnlwdC1saWIucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDcyNzYyNzVkOWEwOGQ1YWUyNjhmYjI2MzAyN2JiYzYwYmMwYWIyZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZWZmIERpa2UgPGpkaWtlQHg4Nl82NC51c2VyLW1vZGUtbGludXgub3JnPgorRGF0ZTogV2VkLCAxNCBKdWwgMjAxMCAxNDozNTo1MiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBzeXN2aW5pdCAtIFJlbW92ZSBzdWxvZ2luIGRlcGVuZGVuY3kgb24gL3Vzci9saWIqL2xpYmNyeXB0LmEKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiAjIFRoZSBzcmMgTWFrZWZpbGUgd2FzIGNoZWNraW5nIGZvciBsaWJjcnlwdC5hIG9uIHRoZSBob3N0LCBub3QgaW4gdGhlCkBAIC01LDIxICsxMCwyNyBAQAogIyBhbmQgdXNlcyBpdCBpZiBpdCdzIHRoZXJlLgogIyAtIGpkaWtlQGxpbnV4LmludGVsLmNvbQogCi1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL01ha2VmaWxlCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMvTWFrZWZpbGUKLUBAIC04NSw5ICs4NSwxMyBAQCBlbHNlCistLS0KKyBzcmMvTWFrZWZpbGUgfCA5ICsrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKK2luZGV4IDEzODBkN2YuLjYyOGU3N2YgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUKKysrKyBiL3NyYy9NYWtlZmlsZQorQEAgLTk3LDEzICs5Nyw4IEBAIGVsc2UKICBlbmRpZgogIAogICMgQWRkaXRpb25hbCBsaWJzIGZvciBHTlUgbGliYy4KKy1pZm5lcSAoJCh3aWxkY2FyZCAvdXNyL2xpYiovbGliY3J5cHQuKiksKQorLSAgU1VMT0dJTkxJQlMJKz0gLWxjcnlwdAorLWVuZGlmCistCistIyBBZGRpdGlvbmFsIGxpYnMgZm9yIEdOVSBsaWJjIC8gbXVsdGlhcmNoIG9uIERlYmlhbiBiYXNlZCBzeXN0ZW1zLgorLWlmbmVxICgkKHdpbGRjYXJkIC91c3IvbGliLyovbGliY3J5cHQuKiksKQorLSAgU1VMT0dJTkxJQlMJKz0gLWxjcnlwdAogK2lmbmVxICgkKExDUllQVCksKQogKyAgU1VMT0dJTkxJQlMJKz0gJChMQ1JZUFQpCi0rZWxzZQotIGlmbmVxICgkKHdpbGRjYXJkIC91c3IvbGliKi9saWJjcnlwdC5hKSwpCi0gICBTVUxPR0lOTElCUwkrPSAtbGNyeXB0CiAgZW5kaWYKLStlbmRpZgogIAogIGFsbDoJCSQoQklOKSAkKFNCSU4pICQoVVNSQklOKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9pbnN0YWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9pbnN0YWxsLnBhdGNoCmluZGV4IDZjNDIyNWEuLjI5MzBmYjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvaW5zdGFsbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2luc3RhbGwucGF0Y2gKQEAgLTEsMTAgKzEsMTkgQEAKK0Zyb20gYjZjYzY2YWIyNDVjZWI2YmNhMDExNmRmZjdhNDFmNmQ3Njc3Yjk2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgorRGF0ZTogRnJpLCAxOCBKdW4gMjAxMCAwOTo0MDozMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzeXN2aW5pdDogdXBncmFkZSB0byB2ZXJzaW9uIDIuODhkc2YKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKKy0tLQorIHNyYy9NYWtlZmlsZSB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKIGRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKLWluZGV4IGUyYjgwMjguLjNlMTFlOTIgMTAwNjQ0CitpbmRleCA5ZjlmMDllLi4xMzgwZDdmIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlCiArKysgYi9zcmMvTWFrZWZpbGUKLUBAIC02NSw3ICs2NSwxNCBAQCBlbHNlCitAQCAtNzcsNyArNzcsMTQgQEAgZWxzZQogICAgSU5TVEFMTF9EQVRBCT0gaW5zdGFsbCAtbSA2NDQKICBlbmRpZgogIElOU1RBTExfRElSCT0gaW5zdGFsbCAtbSA3NTUgLWQKQEAgLTIwLDEwICsyOSwxMCBAQAogIAogIGlmZXEgKCQoV0lUSF9TRUxJTlVYKSx5ZXMpCiAgICBTRUxJTlVYX0RFRgk9ICAtRFdJVEhfU0VMSU5VWAotQEAgLTEzOCwzOSArMTQ1LDM5IEBAIGNsb2JiZXI6CWNsZWFub2JqcworQEAgLTE4OSw0MiArMTk2LDQyIEBAIGNsb2JiZXI6CWNsZWFub2JqcwogIGRpc3RjbGVhbjoJY2xvYmJlcgogIAotIGluc3RhbGw6CisgaW5zdGFsbDoJYWxsCiAtCQkkKElOU1RBTExfRElSKSAkKFJPT1QpL2Jpbi8gJChST09UKS9zYmluLwogLQkJJChJTlNUQUxMX0RJUikgJChST09UKS91c3IvYmluLwogKwkJJChJTlNUQUxMX0RJUikgJChST09UKSQoYmFzZV9iaW5kaXIpLyAkKFJPT1QpJChiYXNlX3NiaW5kaXIpLwpAQCAtNDAsMTYgKzQ5LDE0IEBACiAtCQkJJChJTlNUQUxMX0VYRUMpICQkaSAkKFJPT1QpL3Vzci9iaW4vIDsgXAogKwkJCSQoSU5TVEFMTF9FWEVDKSAkJGkgJChST09UKSQoYmluZGlyKS8gOyBcCiAgCQlkb25lCi0tCQkjICQoSU5TVEFMTF9ESVIpICQoUk9PVCkvZXRjLwotLQkJIyAkKElOU1RBTExfRVhFQykgaW5pdHNjcmlwdC5zYW1wbGUgJChST09UKS9ldGMvCisgCQkjICQoSU5TVEFMTF9ESVIpICQoUk9PVCkvZXRjLworIAkJIyAkKElOU1RBTExfRVhFQykgLi4vZG9jL2luaXRzY3JpcHQuc2FtcGxlICQoUk9PVCkvZXRjLwogLQkJbG4gLXNmIGhhbHQgJChST09UKS9zYmluL3JlYm9vdAogLQkJbG4gLXNmIGhhbHQgJChST09UKS9zYmluL3Bvd2Vyb2ZmCiAtCQlsbiAtc2YgaW5pdCAkKFJPT1QpL3NiaW4vdGVsaW5pdAogLQkJbG4gLXNmIC9zYmluL2tpbGxhbGw1ICQoUk9PVCkvYmluL3BpZG9mCiAtCQlpZiBbICEgLWYgJChST09UKS91c3IvYmluL2xhc3RiIF07IHRoZW4gXAogLQkJCWxuIC1zZiBsYXN0ICQoUk9PVCkvdXNyL2Jpbi9sYXN0YjsgXAotKwkJIyAkKElOU1RBTExfRElSKSAkKFJPT1QpJChzeXNjb25mZGlyKS8KLSsJCSMgJChJTlNUQUxMX0VYRUMpIGluaXRzY3JpcHQuc2FtcGxlICQoUk9PVCkkKHN5c2NvbmZkaXIpLwogKwkJbG4gLXNmIGhhbHQgJChST09UKSQoYmFzZV9zYmluZGlyKS9yZWJvb3QKICsJCWxuIC1zZiBoYWx0ICQoUk9PVCkkKGJhc2Vfc2JpbmRpcikvcG93ZXJvZmYKICsJCWxuIC1zZiBpbml0ICQoUk9PVCkkKGJhc2Vfc2JpbmRpcikvdGVsaW5pdApAQCAtNjcsMTcgKzc0LDIzIEBACiArCQkkKElOU1RBTExfRElSKSAkKFJPT1QpJChtYW5kaXIpL21hbjEvCiArCQkkKElOU1RBTExfRElSKSAkKFJPT1QpJChtYW5kaXIpL21hbjUvCiArCQkkKElOU1RBTExfRElSKSAkKFJPT1QpJChtYW5kaXIpL21hbjgvCi0gCQlmb3IgaSBpbiAkKE1BTjEpOyBkbyBcCi0tCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQoTUFORElSKS9tYW4xLzsgXAotKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKG1hbmRpcikvbWFuMS87IFwKKyAJCWZvciBtYW4gaW4gJChNQU4xKTsgZG8gXAorLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQoTUFORElSKS9tYW4xLzsgXAorLQkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKE1BTkRJUikvbWFuMS8kJG1hbiA7IFwKKysJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKG1hbmRpcikvbWFuMS87IFwKKysJCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChtYW5kaXIpL21hbjEvJCRtYW4gOyBcCiAgCQlkb25lCi0gCQlmb3IgaSBpbiAkKE1BTjUpOyBkbyBcCi0tCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQoTUFORElSKS9tYW41LzsgXAotKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKG1hbmRpcikvbWFuNS87IFwKKyAJCWZvciBtYW4gaW4gJChNQU41KTsgZG8gXAorLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQoTUFORElSKS9tYW41LzsgXAorLQkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKE1BTkRJUikvbWFuNS8kJG1hbiA7IFwKKysJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKG1hbmRpcikvbWFuNS87IFwKKysJCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChtYW5kaXIpL21hbjUvJCRtYW4gOyBcCiAgCQlkb25lCi0gCQlmb3IgaSBpbiAkKE1BTjgpOyBkbyBcCi0tCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQoTUFORElSKS9tYW44LzsgXAotKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKG1hbmRpcikvbWFuOC87IFwKKyAJCWZvciBtYW4gaW4gJChNQU44KTsgZG8gXAorLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQoTUFORElSKS9tYW44LzsgXAorLQkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKE1BTkRJUikvbWFuOC8kJG1hbiA7IFwKKysJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKG1hbmRpcikvbWFuOC87IFwKKysJCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChtYW5kaXIpL21hbjgvJCRtYW4gOyBcCiAgCQlkb25lCiAgaWZlcSAoJChST09UKSwpCiAgCQkjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoCmluZGV4IDViNWRmZGMuLjQ5NGFhMGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotcGlkb2Y6IGFkZCAtbSBvcHRpb24KK0Zyb20gNmM0OTBlYTY1NzlhMTMyZmFiYjdkYmQyNTM4N2JiNTIxZjgyMDM3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjQgSnVsIDIwMTMgMTc6MDc6MjIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcGlkb2Y6IGFkZCAtbSBvcHRpb24KIAogV2hlbiB1c2VkIHdpdGggLW8sIHdpbGwgYWxzbyBvbWl0IGFueSBwcm9jZXNzZXMgdGhhdCBoYXZlIHRoZSBzYW1lCiBhcmd2WzBdIGFuZCBhcmd2WzFdIGFzIGFueSBleHBsaWNpdGx5IG9taXR0ZWQgcHJvY2VzcyBpZHMuIFRoaXMgY2FuIGJlCkBAIC0xMSwyMyArMTQsMjUgQEAKIEltcG9ydGVkIHBhdGNoIGZyb206IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9hdHRhY2htZW50LmNnaT9pZD02NTgxNjYKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBtYW4vcGlkb2YuOCAgICB8ICA2ICsrKysrKwotIHNyYy9raWxsYWxsNS5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIG1hbi9waWRvZi44ICAgIHwgIDYgKysrKysKKyBzcmMva2lsbGFsbDUuYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAgMiBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWFuL3BpZG9mLjggYi9tYW4vcGlkb2YuOAoraW5kZXggZWJlNWY1NS4uMmZkYzRkMyAxMDA2NDQKIC0tLSBhL21hbi9waWRvZi44CiArKysgYi9tYW4vcGlkb2YuOAotQEAgLTI0LDYgKzI0LDcgQEAgcGlkb2YgLS0gZmluZCB0aGUgcHJvY2VzcyBJRCBvZiBhIHJ1bm5pbmcgcHJvZ3JhbS4KLSAuUkIgWyBcLWMgXQorQEAgLTI1LDYgKzI1LDcgQEAgcGlkb2YgLS0gZmluZCB0aGUgcHJvY2VzcyBJRCBvZiBhIHJ1bm5pbmcgcHJvZ3JhbS4KICAuUkIgWyBcLW4gXQogIC5SQiBbIFwteCBdCisgLlJCIFsgXC16IF0KICsuUkIgWyBcLW0gXQogIC5SQiBbIFwtbwotIC5JUiBvbWl0cGlkWyxvbWl0cGlkLi5dIF0KKyAuSVIgb21pdHBpZFssb21pdHBpZC4uLl0gXQogIC5SQiBbIFwtbwotQEAgLTYzLDYgKzY0LDExIEBAIHNoZWxscyBydW5uaW5nIHRoZSBuYW1lZCBzY3JpcHRzLgorQEAgLTc2LDYgKzc3LDExIEBAIGlzIHNob3duLiBUaGUgZGVmYXVsdCBzZXBhcmF0b3IgaXMgYSBzcGFjZS4KICBUZWxscyBcZklwaWRvZlxmUCB0byBvbWl0IHByb2Nlc3NlcyB3aXRoIHRoYXQgcHJvY2VzcyBpZC4gVGhlIHNwZWNpYWwKICBwaWQgXGZCJVBQSURcZlAgY2FuIGJlIHVzZWQgdG8gbmFtZSB0aGUgcGFyZW50IHByb2Nlc3Mgb2YgdGhlIFxmSXBpZG9mXGZQCiAgcHJvZ3JhbSwgaW4gb3RoZXIgd29yZHMgdGhlIGNhbGxpbmcgc2hlbGwgb3Igc2hlbGwgc2NyaXB0LgpAQCAtNDAsMTAgKzQ1LDEwIEBACiAgLlRQCiAgLkIgMAogZGlmZiAtLWdpdCBhL3NyYy9raWxsYWxsNS5jIGIvc3JjL2tpbGxhbGw1LmMKLWluZGV4IDU5MzdkOTguLmU3Mzg4NWUgMTAwNjQ0CitpbmRleCA4YjVjYjM4Li5hNjY0OTU0IDEwMDY0NAogLS0tIGEvc3JjL2tpbGxhbGw1LmMKICsrKyBiL3NyYy9raWxsYWxsNS5jCi1AQCAtMTE4LDYgKzExOCw3IEBAIHR5cGVkZWYgc3RydWN0IF9zX25mcworQEAgLTEyNiw2ICsxMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfc19uZnMKICAKICAvKiBMaXN0IG9mIHByb2Nlc3Nlcy4gKi8KICBQUk9DICpwbGlzdDsKQEAgLTUxLDcgKzU2LDcgQEAKICAKICAvKiBMaXN0IG9mIHByb2Nlc3NlcyB0byBvbWl0LiAqLwogIE9NSVQgKm9taXQ7Ci1AQCAtMzQ1LDYgKzM0NiwyMCBAQCBzdGF0aWMgdm9pZCBjbGVhcl9tbnQodm9pZCkKK0BAIC0zNjEsNiArMzYyLDIwIEBAIHN0YXRpYyB2b2lkIGNsZWFyX21udCh2b2lkKQogIAl9CiAgfQogIApAQCAtNzAsOSArNzUsOSBAQAogK30KICsKICAvKgotICAqICAgICBDaGVjayBpZiBwYXRoIGlzIGlhIHNoYWRvdyBvZmYgYSBORlMgcGFydGl0aW9uLgorICAqICAgICBDaGVjayBpZiBwYXRoIGlzIGEgc2hhZG93IG9mZiBhIE5GUyBwYXJ0aXRpb24uCiAgICovCi1AQCAtNDUyLDYgKzQ2Nyw3IEBAIGludCByZWFkcHJvYyhpbnQgZG9fc3RhdCkKK0BAIC00ODYsNiArNTAxLDcgQEAgaW50IHJlYWRwcm9jKGludCBkb19zdGF0KQogIAlESVIJCSpkaXI7CiAgCUZJTEUJCSpmcDsKICAJUFJPQwkJKnAsICpuOwpAQCAtODAsNyArODUsNyBAQAogIAlzdHJ1Y3QgZGlyZW50CSpkOwogIAlzdHJ1Y3Qgc3RhdAlzdDsKICAJY2hhcgkJcGF0aFtQQVRIX01BWCsxXTsKLUBAIC02MjQsNiArNjQwLDE3IEBAIGludCByZWFkcHJvYyhpbnQgZG9fc3RhdCkKK0BAIC03MzMsNiArNzQ5LDE3IEBAIGludCByZWFkcHJvYyhpbnQgZG9fc3RhdCkKICAJCXAtPm5leHQgPSBwbGlzdDsKICAJCXBsaXN0ID0gcDsKICAJCXAtPnBpZCA9IHBpZDsKQEAgLTk4LDcgKzEwMyw3IEBACiAgCX0KICAJY2xvc2VkaXIoZGlyKTsKICAKLUBAIC04MTMsNiArODQwLDI2IEBAIFBJRFFfSEVBRCAqcGlkb2YoY2hhciAqcHJvZykKK0BAIC05NDQsNiArOTcxLDI2IEBAIFBJRFFfSEVBRCAqcGlkb2YoY2hhciAqcHJvZykKICAJcmV0dXJuIHE7CiAgfQogIApAQCAtMTI1LDQyICsxMzAsNDIgQEAKICAvKiBHaXZlIHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXQuICovCiAgdm9pZCB1c2FnZSh2b2lkKQogIHsKLUBAIC04NDUsNiArODkyLDcgQEAgdm9pZCBuc3lzbG9nKGludCBwcmksIGNoYXIgKmZtdCwgLi4uKQotICNkZWZpbmUgUElET0ZfU0lOR0xFCTB4MDEKK0BAIC05OTQsNiArMTA0MSw3IEBAIHZvaWQgbnN5c2xvZyhpbnQgcHJpLCBjaGFyICpmbXQsIC4uLikKICAjZGVmaW5lIFBJRE9GX09NSVQJMHgwMgogICNkZWZpbmUgUElET0ZfTkVURlMJMHgwNAorICNkZWZpbmUgUElET0ZfUVVJRVQgICAgIDB4MDgKICsjZGVmaW5lIFBJRE9GX09NSVRfT01JVF9NQVRDSEVTCTB4MDgKICAKICAvKgogICAqCVBpZG9mIGZ1bmN0aW9uYWxpdHkuCi1AQCAtODYxLDYgKzkwOSw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJc3RydWN0IHN0YXQJc3Q7CitAQCAtMTAxMSw2ICsxMDU5LDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAljaGFyCQl0bXBbNTEyXTsKKyAgICAgICAgIGNoYXIgICAgICAgICAgICBzZXAgPSAnICc7CiAgCiArCW9saXN0ID0gKFBST0MqKTA7CiAgCW9taXQgPSAoT01JVCopMDsKICAJbmxpc3QgPSAoTkZTKikwOwogIAlvcHRlcnIgPSAwOwotQEAgLTg2OCw3ICs5MTcsNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTAxOCw3ICsxMDY3LDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAlpZiAoKHRva2VuID0gZ2V0ZW52KCJQSURPRl9ORVRGUyIpKSAmJiAoc3RyY21wKHRva2VuLCJubyIpICE9IDApKQogIAkJZmxhZ3MgfD0gUElET0ZfTkVURlM7CiAgCi0tCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsYXJndiwiaGNvOnN4biIpKSAhPSBFT0YpIHN3aXRjaCAob3B0KSB7Ci0rCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsYXJndiwiaGNtbzpzeG4iKSkgIT0gRU9GKSBzd2l0Y2ggKG9wdCkgeworLQl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLGFyZ3YsInFoY286ZDpzeHpuIikpICE9IEVPRikgc3dpdGNoIChvcHQpIHsKKysJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYyxhcmd2LCJxaGNtbzpkOnN4em4iKSkgIT0gRU9GKSBzd2l0Y2ggKG9wdCkgewogIAkJY2FzZSAnPyc6CiAgCQkJbnN5c2xvZyhMT0dfRVJSLCJpbnZhbGlkIG9wdGlvbnMgb24gY29tbWFuZCBsaW5lIVxuIik7CiAgCQkJY2xvc2Vsb2coKTsKLUBAIC05MDcsNiArOTU2LDkgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJY2FzZSAneCc6Ci0gCQkJc2NyaXB0c190b28rKzsKLSAJCQlicmVhazsKK0BAIC0xMDY5LDYgKzExMTgsOSBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgIGNhc2UgJ3onOgorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZHpfcHJvY2Vzc2VzID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICsJCWNhc2UgJ20nOgogKwkJCWZsYWdzIHw9IFBJRE9GX09NSVRfT01JVF9NQVRDSEVTOwogKwkJCWJyZWFrOwogIAkJY2FzZSAnbic6CiAgCQkJZmxhZ3MgfD0gUElET0ZfTkVURlM7CiAgCQkJYnJlYWs7Ci1AQCAtOTM4LDEwICs5OTAsMTMgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTExMDAsMTAgKzExNTIsMTMgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCXBpZF90IHNwaWQgPSAwOwogIAkJCXdoaWxlICgocCA9IGdldF9uZXh0X2Zyb21fcGlkX3EocSkpKSB7CiAgCQkJCWlmICgoZmxhZ3MgJiBQSURPRl9PTUlUKSAmJiBvbWl0KSB7CkBAIC0xNzYsMTQgKzE4MSwxMSBAQAogIAkJCQkJfQogIAogIAkJCQkJLyoKLUBAIC05NzcsNiArMTAzMiw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJaWYgKCFmaXJzdCkKK0BAIC0xMTQ1LDYgKzEyMDAsNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQlwcmludGYoIlxuIik7CisgICAgICAgICB9CiAgCiArCWNsZWFyX29taXQoKTsKICAJY2xlYXJfbW50KCk7CiAgCiAgCWNsb3NlbG9nKCk7Ci0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9yZWFscGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcmVhbHBhdGgucGF0Y2gKaW5kZXggNWUwZGNhMy4uODU5ZmQ4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9yZWFscGF0aC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3JlYWxwYXRoLnBhdGNoCkBAIC0xLDQgKzEsOCBAQAotRml4IGJ1aWxkIG9uIG11c2wgdXNlIHJlYWxwYXRoKCkgQVBJIGl0cyBhdmFpbGFibGUgb24gYWxsIGxpYmNzCitGcm9tIGViMTU4Yzk3ZjE5ZDQ3M2QwMWJlZmU5NjM1OWE3ZjkzYWU4MzQ1MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxOSBOb3YgMjAxNSAwMDoxMDowMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24gbXVzbCB1c2UgcmVhbHBhdGgoKSBBUEkgaXRzIGF2YWlsYWJsZSBvbiBhbGwKKyBsaWJjcwogCiByZWFscGF0aCgpIEFQSSBkb2VzbnQgd29yayBvbiBzeXN0ZW1zIHdpdGggUEFUSF9NQVggc2V0IHRvIGJlIHVubGltaXRlZCBlLmcuIEdOVS9IdXJkCiBIb3dldmVyIGZvciBMaW51eCBpdCBzaG91bGQgYWx3YXlzIHdvcmsKQEAgLTcsNTIgKzExLDE3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9pZmRvd24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvaWZkb3duLmMJMjAxMC0wMy0yMyAwNzozNzowMS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9pZmRvd24uYwkyMDE0LTA0LTAyIDAwOjQzOjQzLjY3NTQzNzAyOSAtMDcwMAotQEAgLTI2LDExICsyNiwxMSBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLS0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+Ci0gCi0gI2luY2x1ZGUgPG5ldC9pZi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvaW5pdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9pbml0LmMJMjAxNC0wNC0wMiAwMDo0MjoxMC40ODg3NzAxNjIgLTA3MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9pbml0LmMJMjAxNC0wNC0wMiAwMDo0Mjo1OS40MzIxMDM4MjMgLTA3MDAKLUBAIC00OSw2ICs0OSw3IEBACi0gI2luY2x1ZGUgPHV0bXAuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rI2luY2x1ZGUgPHN5cy90dHlkZWZhdWx0cy5oPgotICNpbmNsdWRlIDxzeXMvc3lzbG9nLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gCi1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvbW91bnRwb2ludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9tb3VudHBvaW50LmMJMjAwOS0wOS0xMCAwMToyODo0OS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9tb3VudHBvaW50LmMJMjAxNC0wNC0wMiAwMDo0NDoxOC4yNDg3NzA5NDIgLTA3MDAKLUBAIC0yMyw2ICsyMyw3IEBACi0gICoJCUZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAgKi8KLSAKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9raWxsYWxsNS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9raWxsYWxsNS5jCTIwMTQtMDMtMjYgMDA6NDk6NTIuOTgyNjY4MDc0IC0wNzAwCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMva2lsbGFsbDUuYwkyMDE0LTA0LTAyIDAwOjQ2OjQ1LjgzODc3MTY1MyAtMDcwMAotQEAgLTg0Niw5ICs4NDYsOSBAQAorLS0tCisgc3JjL2tpbGxhbGw1LmMgICB8IDQgKystLQorIHNyYy9tb3VudHBvaW50LmMgfCAxICsKKyBzcmMvd2FsbC5jICAgICAgIHwgMSArCisgMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMva2lsbGFsbDUuYyBiL3NyYy9raWxsYWxsNS5jCitpbmRleCBhNjY0OTU0Li45Nzk4NDIzIDEwMDY0NAorLS0tIGEvc3JjL2tpbGxhbGw1LmMKKysrKyBiL3NyYy9raWxsYWxsNS5jCitAQCAtOTc3LDkgKzk3Nyw5IEBAIGludCBtYXRjaGVzKFBST0MgKm8sIFBST0MgKnApCiAgCWNoYXIgKm9hcmd2MSwgKnBhcmd2MTsKICAJaWYgKChvLT5hcmd2MCAmJiBwLT5hcmd2MCAmJiAhc3RyY21wKG8tPmFyZ3YwLHAtPmFyZ3YwKSkpIHsKICAJCWlmIChvLT5hcmd2MSAmJiBwLT5hcmd2MSkgewpAQCAtNjQsMTQgKzMzLDI2IEBACiAgCQkJCXBhcmd2MSA9IHN0cmR1cChwLT5hcmd2MSk7CiAgCQkJaWYgKCEgc3RyY21wKG9hcmd2MSwgcGFyZ3YxKSkgewogIAkJCQlyZXQgPSAxOwotSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL3dhbGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvd2FsbC5jCTIwMDktMTEtMjIgMTQ6MDU6NTMuMDAwMDAwMDAwIC0wODAwCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMvd2FsbC5jCTIwMTQtMDQtMDIgMDA6NDk6MTUuMjU4NzcyMjE3IC0wNzAwCi1AQCAtMjksNiArMjksNyBAQAorZGlmZiAtLWdpdCBhL3NyYy9tb3VudHBvaW50LmMgYi9zcmMvbW91bnRwb2ludC5jCitpbmRleCBiMjQzMzVlLi41ZjIwNTIyIDEwMDY0NAorLS0tIGEvc3JjL21vdW50cG9pbnQuYworKysrIGIvc3JjL21vdW50cG9pbnQuYworQEAgLTIzLDYgKzIzLDcgQEAKKyAgKgkJRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICAqLworIAorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorZGlmZiAtLWdpdCBhL3NyYy93YWxsLmMgYi9zcmMvd2FsbC5jCitpbmRleCBkM2EyYzcwLi4wMDgyNmU5IDEwMDY0NAorLS0tIGEvc3JjL3dhbGwuYworKysrIGIvc3JjL3dhbGwuYworQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5jbHVkZSA8cHdkLmg+CiAgI2luY2x1ZGUgPHN5c2xvZy5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICsjaW5jbHVkZSA8dGltZS5oPgogICNpbmNsdWRlICJpbml0LmgiCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZDZkZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtLVYgbGlrZSBpbml0IgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGlzIHJlcXVpcmVkIHRvIGJvb3QgaW4gbW9zdCBjb25maWd1cmF0aW9ucy4gIEl0IHByb3ZpZGVzIHRoZSAvc2Jpbi9pbml0IHByb2dyYW0uICBUaGlzIGlzIHRoZSBmaXJzdCBwcm9jZXNzIHN0YXJ0ZWQgb24gYm9vdCwgYW5kIHRoZSBsYXN0IHByb2Nlc3MgdGVybWluYXRlZCBiZWZvcmUgdGhlIHN5c3RlbSBoYWx0cy4iCi1IT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9zeXN2aW5pdC8iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlSSUdIVDtlbmRsaW5lPTE1O21kNT0zNDljODcyZTAwNjYxNTVlMTgxOGI3ODY5Mzg4NzZhNCIKLVBSID0gInIxNCIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0taW5pdHRhYiIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L3N5c3Zpbml0L3N5c3Zpbml0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcnlwdC1saWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWFscGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmNTLWRlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vcmMgXAotICAgICAgICAgICBmaWxlOi8vcmNTIFwKLSAgICAgICAgICAgZmlsZTovL2Jvb3Rsb2dkLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vMDFfYm9vdGxvZ2QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmVkYThhOTdiODZlMGE2ZjU5ZGFiYmYyNTIwMmFhNmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjBiYmM4YzFlMTc5MjA1NmUyMzc2MWQyMjk2MGIzMGJiMTNlY2NjMmNhYmZmOGM3MzEwYTAxZjRkNWRmMTUxOSIKLQotUyA9ICIke1dPUktESVJ9L3N5c3Zpbml0LSR7UFZ9IgotQiA9ICIke1N9L3NyYyIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZlYXR1cmVzX2NoZWNrCi1ERVBFTkRTX2FwcGVuZCA9ICIgdXBkYXRlLXJjLmQtbmF0aXZlIGJhc2UtcGFzc3dkIHZpcnR1YWwvY3J5cHQiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN2aW5pdCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBtb3VudHBvaW50IGhhbHQgcmVib290IHJ1bmxldmVsIHNodXRkb3duIHBvd2Vyb2ZmIGxhc3QgbGFzdGIgbWVzZyB1dG1wZHVtcCB3YWxsIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID0gIjUwIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludF0gPSAiJHtiYXNlX2JpbmRpcn0vbW91bnRwb2ludCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW21vdW50cG9pbnRdID0gIjIwIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgotCi1BTFRFUk5BVElWRV8ke1BOfS1waWRvZiA9ICJwaWRvZiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwaWRvZl0gPSAiJHtiYXNlX2JpbmRpcn0vcGlkb2YiCi0KLUFMVEVSTkFUSVZFXyR7UE59LXN1bG9naW4gPSAic3Vsb2dpbiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdWxvZ2luXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIHN1bG9naW4uOCB1dG1wZHVtcC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYXN0LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdGIuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdGIuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVttZXNnLjFdID0gIiR7bWFuZGlyfS9tYW4xL21lc2cuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVttb3VudHBvaW50LjFdID0gIiR7bWFuZGlyfS9tYW4xL21vdW50cG9pbnQuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdWxvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L3N1bG9naW4uOCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1dG1wZHVtcC4xXSA9ICIke21hbmRpcn0vbWFuMS91dG1wZHVtcC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3dhbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEvd2FsbC4xIgotCi1QQUNLQUdFUyA9KyAic3lzdmluaXQtcGlkb2Ygc3lzdmluaXQtc3Vsb2dpbiIKLUZJTEVTXyR7UE59ICs9ICIke2Jhc2Vfc2JpbmRpcn0vKiAke2Jhc2VfYmluZGlyfS8qIgotRklMRVNfc3lzdmluaXQtcGlkb2YgPSAiJHtiYXNlX2JpbmRpcn0vcGlkb2Yuc3lzdmluaXQgJHtiYXNlX3NiaW5kaXJ9L2tpbGxhbGw1IgotRklMRVNfc3lzdmluaXQtc3Vsb2dpbiA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbi5zeXN2aW5pdCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInN5c3Zpbml0LXBpZG9mIGluaXRkLWZ1bmN0aW9ucyIKLQotQ0ZMQUdTX3ByZXBlbmQgPSAiLURfR05VX1NPVVJDRSAiCi1leHBvcnQgTENSWVBUID0gIi1sY3J5cHQiCi1FWFRSQV9PRU1BS0UgKz0gIidiYXNlX2JpbmRpcj0ke2Jhc2VfYmluZGlyfScgXAotCQkgJ2Jhc2Vfc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIFwKLQkJICdiaW5kaXI9JHtiaW5kaXJ9JyBcCi0JCSAnc2JpbmRpcj0ke3NiaW5kaXJ9JyBcCi0JCSAnc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCi0JCSAnaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9JyBcCi0JCSAnbWFuZGlyPSR7bWFuZGlyfSciCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ1JPT1Q9JHtEfScgaW5zdGFsbAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSBcCi0JCSAgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAotCQkgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlmb3IgbGV2ZWwgaW4gUyAwIDEgMiAzIDQgNSA2OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3JjJGxldmVsLmQKLQlkb25lCi0KLQlpbnN0YWxsIC1tIDA2NDQgICAgJHtXT1JLRElSfS9yY1MtZGVmYXVsdAkke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JjUwotCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JjCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9yY1MJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L2Jvb3Rsb2dkLmluaXQgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ib290bG9nZAotCWxuIC1zZiBib290bG9nZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3RvcC1ib290bG9nZAotCi0JdXBkYXRlLXJjLmQgLXIgJHtEfSBib290bG9nZCBzdGFydCAwNyBTIC4KLQl1cGRhdGUtcmMuZCAtciAke0R9IHN0b3AtYm9vdGxvZ2Qgc3RhcnQgOTkgMiAzIDQgNSAuCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDFfYm9vdGxvZ2QgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQotCWNob3duIHJvb3Q6c2h1dGRvd24gJHtEfSR7YmFzZV9zYmluZGlyfS9oYWx0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24KLQljaG1vZCBvLXgsdStzICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuOTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuOTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJiODVlZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi45Ni5iYgpAQCAtMCwwICsxLDExNCBAQAorU1VNTUFSWSA9ICJTeXN0ZW0tViBsaWtlIGluaXQiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gYm9vdCBpbiBtb3N0IGNvbmZpZ3VyYXRpb25zLiAgSXQgcHJvdmlkZXMgdGhlIC9zYmluL2luaXQgcHJvZ3JhbS4gIFRoaXMgaXMgdGhlIGZpcnN0IHByb2Nlc3Mgc3RhcnRlZCBvbiBib290LCBhbmQgdGhlIGxhc3QgcHJvY2VzcyB0ZXJtaW5hdGVkIGJlZm9yZSB0aGUgc3lzdGVtIGhhbHRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3N5c3Zpbml0LyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWVJJR0hUO2VuZGxpbmU9MTU7bWQ1PWExZDNiMzUyNjUwMWQzNTQ2ZDUzMGJiZTZhYjZjZGJlIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitSREVQRU5EU18ke1BOfSA9ICIke1BOfS1pbml0dGFiIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vc3lzdmluaXQvc3lzdmluaXQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3J5cHQtbGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZWFscGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmNTLWRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vcmMgXAorICAgICAgICAgICBmaWxlOi8vcmNTIFwKKyAgICAgICAgICAgZmlsZTovL2Jvb3Rsb2dkLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vMDFfYm9vdGxvZ2QgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDhjZWJmZmViZjJhOTZhYjA5YmVjMTRiZjk5NzYwMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmEyZTI2YjcyYWEyMzVhMjNhYjFjODQ3MTAwNWY4OTAzMDljZTExOTZjODNmYmM5NDEzYzU3YjlhYjYyYjU4NyIKKworUyA9ICIke1dPUktESVJ9L3N5c3Zpbml0LSR7UFZ9IgorQiA9ICIke1N9L3NyYyIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZlYXR1cmVzX2NoZWNrCitERVBFTkRTX2FwcGVuZCA9ICIgdXBkYXRlLXJjLmQtbmF0aXZlIGJhc2UtcGFzc3dkIHZpcnR1YWwvY3J5cHQiCitkb19wYWNrYWdlX3NldHNjZW5lW2RlcGVuZHNdID0gIiR7TUxQUkVGSVh9YmFzZS1wYXNzd2Q6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3Zpbml0IgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IG1vdW50cG9pbnQgaGFsdCByZWJvb3QgcnVubGV2ZWwgc2h1dGRvd24gcG93ZXJvZmYgbGFzdCBsYXN0YiBtZXNnIHV0bXBkdW1wIHdhbGwiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPSAiNTAiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVttb3VudHBvaW50XSA9ICIke2Jhc2VfYmluZGlyfS9tb3VudHBvaW50IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbbW91bnRwb2ludF0gPSAiMjAiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCisKK0FMVEVSTkFUSVZFXyR7UE59LXBpZG9mID0gInBpZG9mIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpZG9mXSA9ICIke2Jhc2VfYmluZGlyfS9waWRvZiIKKworQUxURVJOQVRJVkVfJHtQTn0tc3Vsb2dpbiA9ICJzdWxvZ2luIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3N1bG9naW5dID0gIiR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAibW91bnRwb2ludC4xIGxhc3QuMSBsYXN0Yi4xIG1lc2cuMSB3YWxsLjEgc3Vsb2dpbi44IHV0bXBkdW1wLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsYXN0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2xhc3QuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsYXN0Yi4xXSA9ICIke21hbmRpcn0vbWFuMS9sYXN0Yi4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21lc2cuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWVzZy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21vdW50cG9pbnQuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW91bnRwb2ludC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3N1bG9naW4uOF0gPSAiJHttYW5kaXJ9L21hbjgvc3Vsb2dpbi44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3V0bXBkdW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL3V0bXBkdW1wLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2FsbC4xXSA9ICIke21hbmRpcn0vbWFuMS93YWxsLjEiCisKK1BBQ0tBR0VTID0rICJzeXN2aW5pdC1waWRvZiBzeXN2aW5pdC1zdWxvZ2luIgorRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9zYmluZGlyfS8qICR7YmFzZV9iaW5kaXJ9LyoiCitGSUxFU19zeXN2aW5pdC1waWRvZiA9ICIke2Jhc2VfYmluZGlyfS9waWRvZi5zeXN2aW5pdCAke2Jhc2Vfc2JpbmRpcn0va2lsbGFsbDUiCitGSUxFU19zeXN2aW5pdC1zdWxvZ2luID0gIiR7YmFzZV9zYmluZGlyfS9zdWxvZ2luLnN5c3Zpbml0IgorCitSREVQRU5EU18ke1BOfSArPSAic3lzdmluaXQtcGlkb2YgaW5pdGQtZnVuY3Rpb25zIGJhc2UtcGFzc3dkIgorCitDRkxBR1NfcHJlcGVuZCA9ICItRF9HTlVfU09VUkNFICIKK2V4cG9ydCBMQ1JZUFQgPSAiLWxjcnlwdCIKK0VYVFJBX09FTUFLRSArPSAiJ2Jhc2VfYmluZGlyPSR7YmFzZV9iaW5kaXJ9JyBcCisJCSAnYmFzZV9zYmluZGlyPSR7YmFzZV9zYmluZGlyfScgXAorCQkgJ2JpbmRpcj0ke2JpbmRpcn0nIFwKKwkJICdzYmluZGlyPSR7c2JpbmRpcn0nIFwKKwkJICdzeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKKwkJICdpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0nIFwKKwkJICdtYW5kaXI9JHttYW5kaXJ9JyBcCisgICAgICAgICAgICAgICAgIE1OVFBPSU5UPXllcyIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnUk9PVD0ke0R9JyBpbnN0YWxsCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9IFwKKwkJICAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdCBcCisJCSAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWZvciBsZXZlbCBpbiBTIDAgMSAyIDMgNCA1IDY7IGRvCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcmMkbGV2ZWwuZAorCWRvbmUKKworCWluc3RhbGwgLW0gMDY0NCAgICAke1dPUktESVJ9L3JjUy1kZWZhdWx0CSR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvcmNTCisJaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vcmMJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JjUwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vYm9vdGxvZ2QuaW5pdCAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Jvb3Rsb2dkCisJbG4gLXNmIGJvb3Rsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zdG9wLWJvb3Rsb2dkCisKKwl1cGRhdGUtcmMuZCAtciAke0R9IGJvb3Rsb2dkIHN0YXJ0IDA3IFMgLgorCXVwZGF0ZS1yYy5kIC1yICR7RH0gc3RvcC1ib290bG9nZCBzdGFydCA5OSAyIDMgNCA1IC4KKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMV9ib290bG9nZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCisJY2hvd24gcm9vdDpzaHV0ZG93biAke0R9JHtiYXNlX3NiaW5kaXJ9L2hhbHQgJHtEfSR7YmFzZV9zYmluZGlyfS9zaHV0ZG93bgorCWNobW9kIG8teCx1K3MgJHtEfSR7YmFzZV9zYmluZGlyfS9oYWx0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24KKworICAgICAgICAjIEFscmVhZHkgcHJvdmlkZWQgYnkgZTJmc3Byb2dzOyBzeXN2aW5pdCdzIHZlcnNpb24gaXMgYSBjb3B5IGZyb20gdGhlcmUKKyAgICAgICAgcm0gJHtEfSR7YmFzZV9zYmluZGlyfS9sb2dzYXZlCisgICAgICAgIHJtICR7RH0ke21hbmRpcn0vbWFuOC9sb2dzYXZlLjgKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg3MjllMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1TVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCi1MSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgotTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImNlMTY2YjNmZGQ5MTBjMmE0YTg0MDM3OGY0OGZlZGFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxZTQ5NDhlOWU1MTI3MWMzY2NlMmJiNTMxMWEzMGIyMDZkZDAzZWYwMTEwNjJlNmM2MjdmYjAwN2U0M2Y2YjgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHFlbXUgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLUNPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJleGVjZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBcCi0gICAgLS13aXRoLXJvb3RwcmVmaXg9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImh3ZGIiCi1QQUNLQUdFQ09ORklHW2h3ZGJdID0gIi0tZW5hYmxlLWh3ZGIsLS1kaXNhYmxlLWh3ZGIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKLQotCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCi0KLQkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5Ci0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQotCi0JIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQotCWxuICR7RH0ke2JpbmRpcn0vdWRldmFkbSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0KLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKLQlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAotfQotCi1JTklUU0NSSVBUX05BTUUgPSAidWRldiIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKLQotUEFDS0FHRVMgPSsgImxpYnVkZXYiCi1QQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgJHtiaW5kaXJ9L3VkZXZhZG0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9wa2djb25maWcvdWRldi5wYyBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJ1ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYuc28gXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LmxhIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidWRldi5hICR7bGliZGlyfS9wa2djb25maWcvbGlidWRldi5wYyIKLUZJTEVTX2xpYnVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vbGlidWRldi5zby4qIgotRklMRVNfZXVkZXYtaHdkYiA9ICIke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5kIgotCi1SREVQRU5EU19ldWRldi1od2RiICs9ICJldWRldiIKLQotUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKLVJQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCi0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7Ci0gICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0gICAgICAgICRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfdWRldl9od2RiICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0KLSAgICBlbHNlCi0gICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotICAgIGZpCi19Ci0KLXBrZ19wcmVybV9ldWRldi1od2RiICgpIHsKLSAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTZmOGNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi45LmJiCkBAIC0wLDAgKzEsOTYgQEAKK1NVTU1BUlkgPSAiZXVkZXYgaXMgYSBmb3JrIG9mIHN5c3RlbWQncyB1ZGV2IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9FdWRldiIKK0xJQ0VOU0UgPSAiR1BMdjIuMCsgJiBMR1BMLTIuMSsiCitMSUNFTlNFX2xpYnVkZXYgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdwZXJmLW5hdGl2ZSBrbW9kIGxpYnhzbHQtbmF0aXZlIHV0aWwtbGludXgiCisKK1BST1ZJREVTID0gInVkZXYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImRlZGZiMTk2NGY2MDk4ZmU5MzIwZGU4Mjc5NTczMzFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5NjE4NjE5MDg0YTE5ZTE0NTFkMzczYzQzZjE0MWI0NjljOWZkMDk3Njc5NzNkNzNkZDI2OGI5MjA3NGQ0ZmMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHFlbXUgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKK0NPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgLS13aXRoLXJvb3RsaWJleGVjZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBcCisgICAgLS13aXRoLXJvb3RwcmVmaXg9IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImh3ZGIiCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIi0tZW5hYmxlLWh3ZGIsLS1kaXNhYmxlLWh3ZGIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKKworCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCisKKwkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5CisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQorCisJIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0CisJaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorCWxuICR7RH0ke2JpbmRpcn0vdWRldmFkbSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0KK30KKworZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKKwlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAorfQorCitJTklUU0NSSVBUX05BTUUgPSAidWRldiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKKworUEFDS0FHRVMgPSsgImxpYnVkZXYiCitQQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKKworCitGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgJHtiaW5kaXJ9L3VkZXZhZG0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9wa2djb25maWcvdWRldi5wYyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJ1ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYuc28gXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LmxhIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidWRldi5hICR7bGliZGlyfS9wa2djb25maWcvbGlidWRldi5wYyIKK0ZJTEVTX2xpYnVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vbGlidWRldi5zby4qIgorRklMRVNfZXVkZXYtaHdkYiA9ICIke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5kIgorCitSREVQRU5EU19ldWRldi1od2RiICs9ICJldWRldiIKKworUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKK1JQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7CisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfdWRldl9od2RiICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0KKyAgICBlbHNlCisgICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorICAgIGZpCit9CisKK3BrZ19wcmVybV9ldWRldi1od2RiICgpIHsKKyAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwppbmRleCAxZmE4MjM2Li4wNTY2NTY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCkBAIC04LDcgKzgsNyBAQAogCiBMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0zLUNsYXVzZSAmIEJTRC00LUNsYXVzZSIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLmxpY2Vuc2luZzttZDU9OTcyYTEzNGYxZTE0YjJiMDYwZTM2NWRmMmZhYjAwOTkgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLmxpY2Vuc2luZzttZDU9MGZkNWMwNTBjNjE4N2QyYmYwYTQ0OTJiN2Y0ZTMzZGEgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vRG9jdW1lbnRhdGlvbi9saWNlbnNlcy9DT1BZSU5HLkdQTC0yLjAtb3ItbGF0ZXI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0RvY3VtZW50YXRpb24vbGljZW5zZXMvQ09QWUlORy5MR1BMLTIuMS1vci1sYXRlcjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXApAQCAtMTA1LDcgKzEwNSwxMyBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0tZW5hYmxlLXNldHByaXYiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LWNhcC1uZyAtLWRpc2FibGUtc2V0cHJpdiIKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtLXdpdGhvdXQtY2FwLW5nIC0tZGlzYWJsZS1zZXRwcml2IgorRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1kaXNhYmxlLWh3Y2xvY2stZ3BsdjMiCiAKKyMgZW5hYmxlIHBjcmUyIGZvciBuYXRpdmUvbmF0aXZlc2RrIHRvIG1hdGNoIGhvc3QgZGlzdHJvcworIyB0aGlzIGhlbHBzIHRvIGtlZXAgc2FtZSBleHBlY3RhdGlvbnMgd2hlbiB1c2luZyB0aGUgU0RLIG9yCisjIGJ1aWxkIGhvc3QgdmVyc2lvbnMgZHVyaW5nIGRldmVsb3BtZW50CisjCitQQUNLQUdFQ09ORklHID89ICJwY3JlMiIKIFBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCiAjIGluaGVyaXQgbWFucGFnZXMgcmVxdWlyZXMgdGhpcyB0byBiZSBwcmVzZW50LCBob3dldmVyIHV0aWwtbGludXggZG9lcyBub3QgaGF2ZSAKICMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgaW5zdGFsbHMgbWFucGFnZXMgYWx3YXlzCkBAIC0xMTcsNiArMTIzLDggQEAKIFBBQ0tBR0VDT05GSUdbcHlsaWJtb3VudF0gPSAiLS13aXRoLXB5dGhvbj0zIC0tZW5hYmxlLXB5bGlibW91bnQsLS13aXRob3V0LXB5dGhvbiAtLWRpc2FibGUtcHlsaWJtb3VudCxweXRob24zIgogIyBSZWFkbGluZSBzdXBwb3J0CiBQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgorIyBQQ1JFIHN1cHBvcnQgaW4gaGFyZGxpbmsKK1BBQ0tBR0VDT05GSUdbcGNyZTJdID0gIiwsbGlicGNyZTIiCiAKIEVYVFJBX09FTUFLRSA9ICJBUkNIPSR7VEFSR0VUX0FSQ0h9IENQVT0gQ1BVT1BUPSAnT1BUPSR7Q0ZMQUdTfSciCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtaHdjbG9jay1maXgtZm9yLWdsaWJjLTIuMzEtc2V0dGltZW9mZGF5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1od2Nsb2NrLWZpeC1mb3ItZ2xpYmMtMi4zMS1zZXR0aW1lb2ZkYXkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY3MmMzNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtaHdjbG9jay1maXgtZm9yLWdsaWJjLTIuMzEtc2V0dGltZW9mZGF5LnBhdGNoCkBAIC0wLDAgKzEsMTEyIEBACitGcm9tIGVlODVkMzk2N2VhMDliMjE1ZmNlYTVlZmRkOTBiYmJmNWU3NGE2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTkgRmViIDIwMjAgMTU6NTA6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaHdjbG9jazogZml4IGZvciBnbGliYyAyLjMxIHNldHRpbWVvZmRheSgpCisKK2dsaWJjIGFubm91bmNlOgorICAuLi4gc2V0dGltZW9mZGF5IGNhbiBubyBsb25nZXIgYmUgdXNlZCB0byBzZXQgdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQKKyAgc2ltdWx0YW5lb3VzbHkuIElmIGJvdGggb2YgaXRzIHR3byBhcmd1bWVudHMgYXJlIG5vbi1udWxsLCB0aGUgY2FsbAorICB3aWxsIGZhaWwgKHNldHRpbmcgZXJybm8gdG8gRUlOVkFMKS4KKworSXQgbWVhbnMgd2UgbmVlZCB0byBjYWxsIHNldHRpbWVvZmRheShOVUxMLCB0eikgYW5kIHNldHRpbWVvZmRheSh0diwgTlVMTCkuCisKK1VuZm9ydHVuYXRlbHksIHNldHRpbWVvZmRheShOVUxMLCB0eikgaGFzIHZlcnkgc3BlY2lhbCB3YXJwLWNsb2NrCitzZW1hbnRpYyBpZiB1c2VkIGFzIHRoZSB2ZXJ5IGZpcnN0IHNldHRpbWVvZmRheSgpIGNhbGwuIEl0IG1lYW5zIHdlCitoYXZlIHRvIGJlIHN1cmUgdGhhdCB3ZSBkbyBub3QgdG91Y2ggd2FycC1jbG9jayBpZiB3ZSBuZWVkIG9ubHkgbmVlZAordG8gbW9kaWZ5IHN5c3RlbSBUWi4gU28sIGxldCdzIGFsd2F5cyBjYWxsIHNldHRpbWVvZmRheShOVUxMLCAwKQorYmVmb3JlIHNldHRpbWVvZmRheShOVUxMLCB0eikgZm9yIFVUQyBydGMgbW9kZSB3aGVuIG1vZGlmeSBzeXN0ZW0gVFouCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbHphay91dGlsLWxpbnV4L2NvbW1pdC9lZTg1ZDM5NjdlYTA5YjIxNWZjZWE1ZWZkZDkwYmJiZjVlNzRhNjgxXQorCitDQzogSiBXaWxsaWFtIFBpZ2dvdHQgPGVsc2VpZnRoZW5AZ214LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgorQWRkcmVzc2VzOiBodHRwczovL2dpdGh1Yi5jb20va2FyZWx6YWsvdXRpbC1saW51eC9pc3N1ZXMvOTU3CitTaWduZWQtb2ZmLWJ5OiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyBzeXMtdXRpbHMvaHdjbG9jay5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzLXV0aWxzL2h3Y2xvY2suYyBiL3N5cy11dGlscy9od2Nsb2NrLmMKK2luZGV4IGU3MzZkYTcxNzlmOC4uMTY1NzZiYzE4NmZmIDEwMDY0NAorLS0tIGEvc3lzLXV0aWxzL2h3Y2xvY2suYworKysrIGIvc3lzLXV0aWxzL2h3Y2xvY2suYworQEAgLTY1OCw2ICs2NTgsOSBAQCBkaXNwbGF5X3RpbWUoc3RydWN0IHRpbWV2YWwgaHdjdGltZSkKKyAgKiBQQ0lMOiBwZXJzaXN0ZW50X2Nsb2NrX2lzX2xvY2FsLCBzZXRzIHRoZSAiMTEgbWludXRlIG1vZGUiIHRpbWVzY2FsZS4KKyAgKiBmaXJzdHRpbWU6IGxvY2tzIHRoZSB3YXJwX2Nsb2NrIGZ1bmN0aW9uIChpbml0aWFsaXplZCB0byAxIGF0IGJvb3QpLgorICAqCisrICogTm90ZSB0aGF0IHZlcnkgZmlyc3Qgc2V0dGltZW9mZGF5KE5VTEwsIHR6KSBtb2RpZmllcyB3YXJwLWNsb2NrIGFzIHdlbGwgYXMKKysgKiBzeXN0ZW0gVFouCisrICoKKyAgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAqIHwgIG9wICAgICB8IFJUQyBzY2FsZSB8IHNldHRpbWVvZmRheSBjYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICogfC0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK0BAIC02NzUsNDEgKzY3OCw0NSBAQCBzZXRfc3lzdGVtX2Nsb2NrKGNvbnN0IHN0cnVjdCBod2Nsb2NrX2NvbnRyb2wgKmN0bCwKKyAJc3RydWN0IHRtIGJyb2tlbjsKKyAJaW50IG1pbnV0ZXN3ZXN0OworIAlpbnQgcmMgPSAwOworLQljb25zdCBzdHJ1Y3QgdGltZXpvbmUgdHpfdXRjID0geyAwIH07CisgCisgCWxvY2FsdGltZV9yKCZuZXd0aW1lLnR2X3NlYywgJmJyb2tlbik7CisgCW1pbnV0ZXN3ZXN0ID0gLWdldF9nbXRvZmYoJmJyb2tlbikgLyA2MDsKKyAKKyAJaWYgKGN0bC0+dmVyYm9zZSkgeworLQkJaWYgKGN0bC0+aGN0b3N5cyAmJiAhY3RsLT51bml2ZXJzYWwpCistCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KE5VTEwsICVkKSB0byBzZXQgIgorLQkJCQkgInBlcnNpc3RlbnRfY2xvY2tfaXNfbG9jYWwuXG4iKSwgbWludXRlc3dlc3QpOworLQkJaWYgKGN0bC0+c3lzdHogJiYgY3RsLT51bml2ZXJzYWwpCisrCQlpZiAoY3RsLT51bml2ZXJzYWwpCisgCQkJcHV0cyhfKCJDYWxsaW5nIHNldHRpbWVvZmRheShOVUxMLCAwKSAiCistCQkJCSJ0byBsb2NrIHRoZSB3YXJwIGZ1bmN0aW9uLiIpKTsKKysJCQkgICAgICAgInRvIGxvY2sgdGhlIHdhcnAgZnVuY3Rpb24uIikpOworKwkJZWxzZQorKwkJCXByaW50ZihfKCJDYWxsaW5nIHNldHRpbWVvZmRheShOVUxMLCAlZCkgdG8gc2V0ICIKKysJCQkJICJwZXJzaXN0ZW50X2Nsb2NrX2lzX2xvY2FsIGFuZCAiCisrCQkJCSAidGhlIGtlcm5lbCB0aW1lem9uZS5cbiIpLCBtaW51dGVzd2VzdCk7CisrCisrCQlpZiAoY3RsLT51bml2ZXJzYWwgJiYgbWludXRlc3dlc3QpCisrCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KE5VTEwsICVkKSB0byBzZXQgIgorKwkJCQkgInRoZSBrZXJuZWwgdGltZXpvbmUuXG4iKSwgbWludXRlc3dlc3QpOworKworIAkJaWYgKGN0bC0+aGN0b3N5cykKKy0JCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoJWxkLiUwNmxkLCAlZClcbiIpLAorLQkJCSAgICAgICBuZXd0aW1lLnR2X3NlYywgbmV3dGltZS50dl91c2VjLCBtaW51dGVzd2VzdCk7CistCQllbHNlIHsKKy0JCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoTlVMTCwgJWQpICIpLCBtaW51dGVzd2VzdCk7CistCQkJaWYgKGN0bC0+dW5pdmVyc2FsKQorLQkJCQkgcHV0cyhfKCJ0byBzZXQgdGhlIGtlcm5lbCB0aW1lem9uZS4iKSk7CistCQkJZWxzZQorLQkJCQkgcHV0cyhfKCJ0byB3YXJwIFN5c3RlbSB0aW1lLiIpKTsKKy0JCX0KKysJCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoJWxkLiUwNmxkLCAwKSB0byBzZXQgIgorKwkJCSAgICAgICAgICJ0aGUga2VybmVsIHRpbWUuXG4iKSwgbmV3dGltZS50dl9zZWMsIG5ld3RpbWUudHZfdXNlYyk7CisgCX0KKyAKKyAJaWYgKCFjdGwtPnRlc3RpbmcpIHsKKysJCWNvbnN0IHN0cnVjdCB0aW1lem9uZSB0el91dGMgPSB7IDAgfTsKKyAJCWNvbnN0IHN0cnVjdCB0aW1lem9uZSB0eiA9IHsgbWludXRlc3dlc3QgfTsKKyAKKy0JCWlmIChjdGwtPmhjdG9zeXMgJiYgIWN0bC0+dW5pdmVyc2FsKQkvKiBzZXQgUENJTCAqLworKwkJLyogd2FycC1jbG9jayAqLworKwkJaWYgKGN0bC0+dW5pdmVyc2FsKQorKwkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0el91dGMpOyAvKiBsb2NrIHRvIFVUQyAqLworKwkJZWxzZQorKwkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0eik7ICAgICAvKiBzZXQgUENJTCBhbmQgVFogKi8KKysKKysJCS8qIHNldCB0aW1lem9uZSAqLworKwkJaWYgKCFyYyAmJiBjdGwtPnVuaXZlcnNhbCAmJiBtaW51dGVzd2VzdCkKKyAJCQlyYyA9IHNldHRpbWVvZmRheShOVUxMLCAmdHopOworLQkJaWYgKGN0bC0+c3lzdHogJiYgY3RsLT51bml2ZXJzYWwpCS8qIGxvY2sgd2FycF9jbG9jayAqLworLQkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0el91dGMpOworKworKwkJLyogc2V0IHRpbWUgKi8KKyAJCWlmICghcmMgJiYgY3RsLT5oY3Rvc3lzKQorLQkJCXJjID0gc2V0dGltZW9mZGF5KCZuZXd0aW1lLCAmdHopOworLQkJZWxzZSBpZiAoIXJjKQorLQkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0eik7CisrCQkJcmMgPSBzZXR0aW1lb2ZkYXkoJm5ld3RpbWUsIE5VTEwpOworIAorIAkJaWYgKHJjKSB7CisgCQkJd2FybihfKCJzZXR0aW1lb2ZkYXkoKSBmYWlsZWQiKSk7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxpYmZkaXNrLXNjcmlwdC1hY2NlcHQtc2VjdG9yLXNpemUtaWdub3JlLXVua25vd24taGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxpYmZkaXNrLXNjcmlwdC1hY2NlcHQtc2VjdG9yLXNpemUtaWdub3JlLXVua25vd24taGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTExZjcwYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbGliZmRpc2stc2NyaXB0LWFjY2VwdC1zZWN0b3Itc2l6ZS1pZ25vcmUtdW5rbm93bi1oZS5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorRnJvbSAwMGU1M2YxN2M4NDYyY2IzNGVjZTA4Y2MxMGRiNjBhN2RhMjlhMzA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDQgRmViIDIwMjAgMTU6MTE6MTkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliZmRpc2s6IChzY3JpcHQpIGFjY2VwdCBzZWN0b3Itc2l6ZSwgaWdub3JlIHVua25vd24gaGVhZGVycworCistIGFkZCBzZWN0b3Itc2l6ZSBiZXR3ZWVuIHN1cHBvcnRlZCBoZWFkZXJzIChhbHJlYWR5IGluIC0tZHVtcCBvdXRwdXQpCisKKy0gcmVwb3J0IHVua25vd24gaGVhZGVycyBieSAtRU5PVFNVUAorCistIGlnbm9yZSBFTk9UU1VQIGluIHNmZGlzayAoYnV0IHByaW50IHdhcm5pbmcpIGFuZCBpbiBmZGlza19zY3JpcHRfcmVhZF9maWxlKCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvY29tbWl0LzAwZTUzZjE3Yzg0NjJjYjM0ZWNlMDhjYzEwZGI2MGE3ZGEyOWEzMDVdCisKK0FkZHJlc3NlczogaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvaXNzdWVzLzk0OQorU2lnbmVkLW9mZi1ieTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQaWVycmUtSmVhbiBUZXhpZXIgPHBqdGV4aWVyQGtvbmNlcHRvLmlvPgorLS0tCisgZGlzay11dGlscy9zZmRpc2suYyAgIHwgIDYgKysrKystCisgbGliZmRpc2svc3JjL3NjcmlwdC5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaXNrLXV0aWxzL3NmZGlzay5jIGIvZGlzay11dGlscy9zZmRpc2suYworaW5kZXggYmI2ZTFjNi4uYzBiZWE3MCAxMDA2NDQKKy0tLSBhL2Rpc2stdXRpbHMvc2ZkaXNrLmMKKysrKyBiL2Rpc2stdXRpbHMvc2ZkaXNrLmMKK0BAIC0xNzgyLDcgKzE3ODIsMTEgQEAgc3RhdGljIGludCBjb21tYW5kX2ZkaXNrKHN0cnVjdCBzZmRpc2sgKnNmLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9CisgCisgCQlyYyA9IGZkaXNrX3NjcmlwdF9yZWFkX2xpbmUoZHAsIHN0ZGluLCBidWYsIHNpemVvZihidWYpKTsKKy0JCWlmIChyYyA8IDApIHsKKysJCWlmIChyYyA9PSAtRU5PVFNVUCkgeworKwkJCWJ1ZltzaXplb2YoYnVmKSAtIDFdID0gJ1wwJzsKKysJCQlmZGlza193YXJueChzZi0+Y3h0LCBfKCJVbmtub3duIHNjcmlwdCBoZWFkZXIgJyVzJyAtLSBpZ25vcmUuIiksIGJ1Zik7CisrCQkJY29udGludWU7CisrCQl9IGVsc2UgaWYgKHJjIDwgMCkgeworIAkJCURCRyhQQVJTRSwgdWxfZGVidWcoInNjcmlwdCBwYXJzaW5nIGZhaWxlZCwgdHJ5aW5nIHNmZGlzayBzcGVjaWZpYyBjb21tYW5kcyIpKTsKKyAJCQlidWZbc2l6ZW9mKGJ1ZikgLSAxXSA9ICdcMCc7CisgCQkJcmMgPSBsb29wX2NvbnRyb2xfY29tbWFuZHMoc2YsIGRwLCBidWYpOworZGlmZiAtLWdpdCBhL2xpYmZkaXNrL3NyYy9zY3JpcHQuYyBiL2xpYmZkaXNrL3NyYy9zY3JpcHQuYworaW5kZXggYTIxNzcxYi4uZDNlNjdmYSAxMDA2NDQKKy0tLSBhL2xpYmZkaXNrL3NyYy9zY3JpcHQuYworKysrIGIvbGliZmRpc2svc3JjL3NjcmlwdC5jCitAQCAtODA1LDggKzgwNSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBpc19oZWFkZXJfbGluZShjb25zdCBjaGFyICpzKQorIC8qIHBhcnNlcyAiPG5hbWU+OiB2YWx1ZSIsIG5vdGUgbW9kaWZpZXMgQHMqLworIHN0YXRpYyBpbnQgcGFyc2VfbGluZV9oZWFkZXIoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsIGNoYXIgKnMpCisgeworLQlpbnQgcmMgPSAtRUlOVkFMOworKwlzaXplX3QgaTsKKyAJY2hhciAqbmFtZSwgKnZhbHVlOworKwlzdGF0aWMgY29uc3QgY2hhciAqc3VwcG9ydGVkW10gPSB7CisrCQkibGFiZWwiLCAidW5pdCIsICJsYWJlbC1pZCIsICJkZXZpY2UiLCAiZ3JhaW4iLAorKwkJImZpcnN0LWxiYSIsICJsYXN0LWxiYSIsICJ0YWJsZS1sZW5ndGgiLCAic2VjdG9yLXNpemUiCisrCX07CisgCisgCURCRyhTQ1JJUFQsIHVsX2RlYnVnb2JqKGRwLCAiICAgcGFyc2UgaGVhZGVyICclcyciLCBzKSk7CisgCitAQCAtODE2LDcgKzgyMCw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfbGluZV9oZWFkZXIoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsIGNoYXIgKnMpCisgCW5hbWUgPSBzOworIAl2YWx1ZSA9IHN0cmNocihzLCAnOicpOworIAlpZiAoIXZhbHVlKQorLQkJZ290byBkb25lOworKwkJcmV0dXJuIC1FSU5WQUw7CisgCSp2YWx1ZSA9ICdcMCc7CisgCXZhbHVlKys7CisgCitAQCAtODI1LDMyICs4MjksMzAgQEAgc3RhdGljIGludCBwYXJzZV9saW5lX2hlYWRlcihzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwgY2hhciAqcykKKyAJbHRyaW1fd2hpdGVzcGFjZSgodW5zaWduZWQgY2hhciAqKSB2YWx1ZSk7CisgCXJ0cmltX3doaXRlc3BhY2UoKHVuc2lnbmVkIGNoYXIgKikgdmFsdWUpOworIAorKwlpZiAoISpuYW1lIHx8ICEqdmFsdWUpCisrCQlyZXR1cm4gLUVJTlZBTDsKKysKKysJLyogY2hlY2sgaGVhZGVyIG5hbWUgKi8KKysJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3VwcG9ydGVkKTsgaSsrKSB7CisrCQlpZiAoc3RyY21wKG5hbWUsIHN1cHBvcnRlZFtpXSkgPT0gMCkKKysJCQlicmVhazsKKysJfQorKwlpZiAoaSA9PSBBUlJBWV9TSVpFKHN1cHBvcnRlZCkpCisrCQlyZXR1cm4gLUVOT1RTVVA7CisrCisrCS8qIGhlYWRlciBzcGVjaWZpYyBhY3Rpb25zICovCisgCWlmIChzdHJjbXAobmFtZSwgImxhYmVsIikgPT0gMCkgeworIAkJaWYgKGRwLT5jeHQgJiYgIWZkaXNrX2dldF9sYWJlbChkcC0+Y3h0LCB2YWx1ZSkpCistCQkJZ290byBkb25lOwkJCS8qIHVua25vd24gbGFiZWwgbmFtZSAqLworKwkJCXJldHVybiAtRUlOVkFMOwkJCS8qIHVua25vd24gbGFiZWwgbmFtZSAqLworIAkJZHAtPmZvcmNlX2xhYmVsID0gMTsKKysKKyAJfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInVuaXQiKSA9PSAwKSB7CisgCQlpZiAoc3RyY21wKHZhbHVlLCAic2VjdG9ycyIpICE9IDApCistCQkJZ290byBkb25lOwkJCS8qIG9ubHkgInNlY3RvcnMiIHN1cHBvcnRlZCAqLworLQl9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibGFiZWwtaWQiKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgImRldmljZSIpID09IDAKKy0JCSAgIHx8IHN0cmNtcChuYW1lLCAiZ3JhaW4iKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgImZpcnN0LWxiYSIpID09IDAKKy0JCSAgIHx8IHN0cmNtcChuYW1lLCAibGFzdC1sYmEiKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgInRhYmxlLWxlbmd0aCIpID09IDApIHsKKy0JCTsJCQkJCS8qIHdoYXRldmVyIGlzIHBvc3NpYmxlICovCistCX0gZWxzZQorLQkJZ290byBkb25lOwkJCQkvKiB1bmtub3duIGhlYWRlciAqLworKwkJCXJldHVybiAtRUlOVkFMOwkJCS8qIG9ubHkgInNlY3RvcnMiIHN1cHBvcnRlZCAqLworIAorLQlpZiAoKm5hbWUgJiYgKnZhbHVlKQorLQkJcmMgPSBmZGlza19zY3JpcHRfc2V0X2hlYWRlcihkcCwgbmFtZSwgdmFsdWUpOworLWRvbmU6CistCWlmIChyYykKKy0JCURCRyhTQ1JJUFQsIHVsX2RlYnVnb2JqKGRwLCAiaGVhZGVyIHBhcnNlIGVycm9yOiAiCistCQkJCSJbcmM9JWQsIG5hbWU9JyVzJywgdmFsdWU9JyVzJ10iLAorLQkJCQlyYywgbmFtZSwgdmFsdWUpKTsKKy0JcmV0dXJuIHJjOworKwl9CisgCisrCXJldHVybiBmZGlza19zY3JpcHRfc2V0X2hlYWRlcihkcCwgbmFtZSwgdmFsdWUpOworIH0KKyAKKyAvKiByZXR1cm5zIHplcm8gdGVybWluYXRlZCBzdHJpbmcgd2l0aCBuZXh0IHRva2VuIGFuZCBAc3RyIGlzIHVwZGF0ZWQgKi8KK0BAIC0xMzYzLDcgKzEzNjUsOCBAQCBpbnQgZmRpc2tfc2NyaXB0X3NldF9mZ2V0cyhzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwKKyAgKgorICAqIFJlYWRzIG5leHQgbGluZSBpbnRvIGR1bXAuCisgICoKKy0gKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIDwwIG9uIGVycm9yLCAxIHdoZW4gbm90aGluZyB0byByZWFkLgorKyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgPDAgb24gZXJyb3IsIDEgd2hlbiBub3RoaW5nIHRvIHJlYWQuIEZvciB1bmtub3duIGhlYWRlcnMKKysgKiAgICAgICAgICByZXR1cm5zIC1FTk9UU1VQLCBpdCdzIHVzdWFsbHkgc2FmZSB0byBpZ25vcmUgdGhpcyBlcnJvci4KKyAgKi8KKyBpbnQgZmRpc2tfc2NyaXB0X3JlYWRfbGluZShzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwgRklMRSAqZiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCisgeworQEAgLTE0MjgsNyArMTQzMSw3IEBAIGludCBmZGlza19zY3JpcHRfcmVhZF9maWxlKHN0cnVjdCBmZGlza19zY3JpcHQgKmRwLCBGSUxFICpmKQorIAorIAl3aGlsZSAoIWZlb2YoZikpIHsKKyAJCXJjID0gZmRpc2tfc2NyaXB0X3JlYWRfbGluZShkcCwgZiwgYnVmLCBzaXplb2YoYnVmKSk7CistCQlpZiAocmMpCisrCQlpZiAocmMgJiYgcmMgIT0gLUVOT1RTVVApCisgCQkJYnJlYWs7CisgCX0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1sc2Jsay1mb3JjZS10by1wcmludC1QS05BTUUtZm9yLXBhcnRpdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbHNibGstZm9yY2UtdG8tcHJpbnQtUEtOQU1FLWZvci1wYXJ0aXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNGMxNDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1sc2Jsay1mb3JjZS10by1wcmludC1QS05BTUUtZm9yLXBhcnRpdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gZTNiYjliZmI3NmMxN2IxZDA1ODE0NDM2Y2VkNjJjMDVjNDAxMWY0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAyNyBKdW4gMjAxOSAwOToyMjoxOCArMDIwMAotU3ViamVjdDogW1BBVENIXSBsc2JsazogZm9yY2UgdG8gcHJpbnQgUEtOQU1FIGZvciBwYXJ0aXRpb24KLQotUEtOQU1FIChwYXJlbnQga2VybmVsIGRldmljZSBuYW1lKSBpcyBiYXNlZCBvbiBwcmludGVkIHRyZWUgYWNjb3JkaW5nCi10byBwYXJlbnQgLT4gY2hpbGQgcmVsYXRpb25zaGlwLiBUaGUgdHJlZSBpcyBvcHRpb25hbCBhbmQgbm90IHByaW50ZWQKLWlmIHBhcnRpdGlvbiBzcGVjaWZpZWQgKC5lLmcgImxzYmxrIC1vK1BLTkFNRSAvZGV2L3NkYTEiKSwgYnV0IG9sZAotdmVyc2lvbnMgcHJpbnQgdGhlIFBLTkFNRSBhbHNvIGluIHRoaXMgY2FzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvY29tbWl0L2UzYmI5YmZiNzZjMTdiMWQwNTgxNDQzNmNlZDYyYzA1YzQwMTFmNDhdCi0KLUFkZHJlc3NlczogaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvaXNzdWVzLzgxMwotU2lnbmVkLW9mZi1ieTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtaXNjLXV0aWxzL2xzYmxrLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL21pc2MtdXRpbHMvbHNibGsuYyBiL21pc2MtdXRpbHMvbHNibGsuYwotaW5kZXggZTk1YWY3YWYwMjU2Li4zY2U2ZGE3MzAyNjQgMTAwNjQ0Ci0tLS0gYS9taXNjLXV0aWxzL2xzYmxrLmMKLSsrKyBiL21pc2MtdXRpbHMvbHNibGsuYwotQEAgLTEwMTksNiArMTAxOSw5IEBAIHN0YXRpYyB2b2lkIGRldmljZV90b19zY29scygKLSAJREJHKERFViwgdWxfZGVidWdvYmooZGV2LCAiYWRkICclcycgdG8gc2NvbHMiLCBkZXYtPm5hbWUpKTsKLSAJT05fREJHKERFViwgaWYgKHVsX3BhdGhfaXNvcGVuX2RpcmZkKGRldi0+c3lzZnMpKSB1bF9kZWJ1Z29iaihkZXYsICIgJXMgLS0tPiBpcyBvcGVuISIsIGRldi0+bmFtZSkpOwotIAotKwlpZiAoIXBhcmVudCAmJiBkZXYtPndob2xlZGlzaykKLSsJCXBhcmVudCA9IGRldi0+d2hvbGVkaXNrOwotKwotIAkvKiBEbyBub3QgcHJpbnQgZGV2aWNlIG1vcmUgdGhhbiBvbmUgaW4gLS1saXN0IG1vZGUgKi8KLSAJaWYgKCEobHNibGstPmZsYWdzICYgTFNCTEtfVFJFRSkgJiYgZGV2LT5pc19wcmludGVkKQotIAkJcmV0dXJuOwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YzJkODAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgdXRpbC1saW51eC5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1sc2Jsay1mb3JjZS10by1wcmludC1QS05BTUUtZm9yLXBhcnRpdGlvbi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYTc4Y2JlYWVkOWMzOTA5NGI5NmE0OGJhOGY4OTFkNTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzQzZjlkMGM3MjUyYjZkYjI0NmI2NTljMWUxY2UwYmQ0NWQ4ZDQ1MDhiNGRmYTQyN2JiYjRhM2U5YjlmNjJiNSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTk2NGM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNS4xLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgdXRpbC1saW51eC5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1od2Nsb2NrLWZpeC1mb3ItZ2xpYmMtMi4zMS1zZXR0aW1lb2ZkYXkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZmRpc2stc2NyaXB0LWFjY2VwdC1zZWN0b3Itc2l6ZS1pZ25vcmUtdW5rbm93bi1oZS5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiN2Y2NDg4MmY2MzEyMjVmMDI5NWNhMDUwODBjZWUxYmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDlkZTNlZGQyODczNjZjZDkwOGU3NzY3NzUxNGI5Mzg3YjIyYmM3Yjg4ZjQ1YjgzZTE5MjJjMzU5N2YxZDdmOSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKaW5kZXggNTBjNGQ4NC4uMTNmNTk2OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKQEAgLTI2LDcgKzI2LDcgQEAKICMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2FwdC8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXNlcmFkZAoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1c2VyYWRkIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgogCiBFWFRSQV9BVVRPUkVDT05GID0gIi0tZXhjbHVkZT1hdXRvcG9pbnQsYXV0b2hlYWRlciIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL2FwdC5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL2FwdC5jb25mCmluZGV4IDAzMzUxMzUuLmM5NWE1YjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9maWxlcy9hcHQuY29uZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvZmlsZXMvYXB0LmNvbmYKQEAgLTM5LDQgKzM5LDQgQEAKICAgfTsKIH07CiAKLURQa2c6Ok9wdGlvbnMgeyItLXJvb3Q9I1JPT1RGUyMiOyItLWFkbWluZGlyPSNST09URlMjL3Zhci9saWIvZHBrZyI7Ii0tZm9yY2UtYWxsIjsiLS1uby1kZWJzaWcifTsKK0RQa2c6Ok9wdGlvbnMgeyItLXJvb3Q9I1JPT1RGUyMiOyItLWFkbWluZGlyPSNST09URlMjL3Zhci9saWIvZHBrZyI7Ii0tZm9yY2UtYWxsIjsiLS1uby1mb3JjZS1vdmVyd3JpdGUiOyItLW5vLWRlYnNpZyJ9OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTkuMDEuMDYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxOS4wMS4wNi5iYgppbmRleCA5ODVhMjU0Li4xMzU5M2Q3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxOS4wMS4wNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxOS4wMS4wNi5iYgpAQCAtOSw3ICs5LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkNDY0MTNjOGIwMGExMjViMTUyOWJhZTM4NWJiZWM1NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzE5NWM4MzMwOThkYTc5ZGU1Nzc4ZWU5MDk0OGY0YzVkOTBlZDFhMGNmODM5MWI0YWIzNDhlMmVjNTExZTNmIgogCi1pbmhlcml0IGF1dG90b29scyBhbGxhcmNoCitpbmhlcml0IGF1dG90b29scyBhbGxhcmNoIHRleGluZm8KIAogUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZG9jIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDljM2UxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotTElDX0ZJTEVTX0NIS1NVTT0iXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0XAotICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCi0gICAgZmlsZTovL2dhcy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKLSAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2xpYmliZXJ0eS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzdcCi0gICAgZmlsZTovL2JmZC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICAiCi0KLWRlZiBiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi0jIFdoZW4gdXBncmFkaW5nIHRvIDIuMzMsIHBsZWFzZSBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gdHJhaWxpbmcgLjAsIHNvCi0jIHRoYXQgdXBzdHJlYW0gdmVyc2lvbiBjaGVjayBjYW4gd29yayBjb3JyZWN0bHkuCi1QViA9ICIyLjMyLjAiCi1DVkVfVkVSU0lPTiA9ICIyLjMyIgotQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKLSNCUkFOQ0ggPSAiYmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaCIKLUJSQU5DSCA/PSAiYmludXRpbHMtMl8zMi1icmFuY2giCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKLQotU1JDUkVWID89ICJiOGMxZjYwOGRiOWVmM2VkZDQ4M2QyMWE5MjFkMWZiZWRjNzFkZjZmIgotQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPSR7QlJBTkNIfTtwcm90b2NvbD1naXQiCi1TUkNfVVJJID0gIlwKLSAgICAgJHtCSU5VVElMU19HSVRfVVJJfSBcCi0gICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDctZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA4LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOS1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTEtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEyLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTMtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNC1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTUtYmludXRpbHMtZW5hYmxlLXg4Nl82NC1wZXAtZm9yLXByb2R1Y2luZy1FRkktYmluYXJpZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS05MDc0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTkwNzUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktOTA3Ni5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS05MDc3LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTkwNzEucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTI5NzIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQyNTAucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQ0NDQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTc0NTAucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTc0NTEucGF0Y2ggXAotIgotUyAgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAgICAgcm0gLXJmICR7U30vZ2RiICR7U30vbGliZGVjbnVtYmVyICR7U30vcmVhZGxpbmUgJHtTfS9zaW0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zNC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhMzg1MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzQuaW5jCkBAIC0wLDAgKzEsNDYgQEAKK0xJQ19GSUxFU19DSEtTVU09IlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKKyAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAorICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCisgICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAorICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgIgorCitkZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworIyBXaGVuIHVwZ3JhZGluZyB0byAyLjM1LCBwbGVhc2UgbWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRyYWlsaW5nIC4wLCBzbworIyB0aGF0IHVwc3RyZWFtIHZlcnNpb24gY2hlY2sgY2FuIHdvcmsgY29ycmVjdGx5LgorUFYgPSAiMi4zNCIKK0NWRV9WRVJTSU9OID0gIjIuMzQiCitCSU5VUFYgPSAiJHtAYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCl9IgorI0JSQU5DSCA9ICJiaW51dGlscy0ke0JJTlVQVn0tYnJhbmNoIgorQlJBTkNIID89ICJiaW51dGlscy0yXzM0LWJyYW5jaCIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgorCitTUkNSRVYgPz0gImQ0YjUwOTk5YjNiMjg3YjVmOTg0YWRlMmY4NzM0YWE4YzkzNTk0NDAiCitCSU5VVElMU19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9JHtCUkFOQ0h9O3Byb3RvY29sPWdpdCIKK1NSQ19VUkkgPSAiXAorICAgICAke0JJTlVUSUxTX0dJVF9VUkl9IFwKKyAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNS1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA2LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNi1DaGVjay1mb3ItY2xhbmctYmVmb3JlLWNoZWNraW5nLWdjYy12ZXJzaW9uLnBhdGNoIFwKKyAgICAgZmlsZTovL0NWRS0yMDIwLTA1NTEucGF0Y2ggXAorIgorUyAgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLXRlc3RzdWl0ZV8yLjM0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYwppbmRleCAwZmI2Y2FlLi5lOTNjZDUwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jCkBAIC0xMywxNyArMTMsMTIgQEAKIAogREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgemxpYi1uYXRpdmUgZ251LWNvbmZpZy1uYXRpdmUgYXV0b2NvbmYtbmF0aXZlIgogCi0jCi0jIHdlIG5lZWQgY2hycGF0aCA+IDAuMTQgYW5kIHNvbWUgZGlzdHJvcyBsaWtlIGNlbnRvcyA3IHN0aWxsIGhhdmUgb2xkZXIgY2hycGF0aAotIwotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSIKLUVYVFJBTkFUSVZFUEFUSF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBjaHJwYXRoLW5hdGl2ZSIKLQogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIgdGV4aW5mbwogCiBGSUxFU18ke1BOfSA9ICIgXAogCSR7YmluZGlyfS8ke1RBUkdFVF9QUkVGSVh9KiBcCi0JJHtsaWJkaXJ9L2xpYiotKi5zbyBcCisJJHtsaWJkaXJ9L2xpYiouc28uKiBcCisJJHtsaWJkaXJ9L2xpYiotJHtQVn0qLnNvIFwKIAkke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9iaW4vKiBcCiAgICAgICAgICR7YmluZGlyfS9lbWJlZHNwdSIKIApAQCAtMzMsNiArMjgsOCBAQAogCSR7aW5jbHVkZWRpcn0gXAogCSR7bGliZGlyfS8qLmxhIFwKIAkke2xpYmRpcn0vbGliYmZkLnNvIFwKKwkke2xpYmRpcn0vbGliY3RmLnNvIFwKKwkke2xpYmRpcn0vbGliY3RmLW5vYmZkLnNvIFwKIAkke2xpYmRpcn0vbGlib3Bjb2Rlcy5zbyIKIAogIyBSYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBtdWx0aXBsZSBlbnRyaWVzIGZvciB0aGVzZSwgbWFrZSBvbmUKQEAgLTQwLDYgKzM3LDggQEAKIAogTERHT0xEX0FMVFMgPz0gImxkLmdvbGQgZHdwIgogTERHT0xEX0FMVFNfcmlzY3Y2NCA9ICIiCitMREdPTERfQUxUU19yaXNjdjMyID0gIiIKK0xER09MRF9BTFRTX2xpYmMtZ2xpYmNfbWlwc2FyY2ggPSAiIgogCiBVU0VfQUxURVJOQVRJVkVTX0ZPUiA9ICIgXAogCWFkZHIybGluZSBcCkBAIC03NiwxMyArNzUsMjUgQEAKICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2Vycm9yIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1kZXRlcm1pbmlzdGljLWFyY2hpdmVzIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wbHVnaW5zIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2RiIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2Ric2VydmVyIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliZGVjbnVtYmVyIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmVhZGxpbmUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zaW0gXAogICAgICAgICAgICAgICAgICR7TERHT0xEfSBcCisgICAgICAgICAgICAgICAgJHtFWFRSQV9UQVJHRVRTfSBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdtdWx0aWFyY2gnLCAnLS1lbmFibGUtNjQtYml0LWJmZCcsICcnLCBkKX0iCiAKK0VYVFJBX1RBUkdFVFMgPSAiIgorRVhUUkFfVEFSR0VUU194ODYtNjQgPSAiIC0tZW5hYmxlLXRhcmdldHM9eDg2XzY0LXBlLHg4Nl82NC1wZXAgIgorRVhUUkFfVEFSR0VUU19jbGFzcy1uYXRpdmUgPSAiIgorCiBMREdPTERfY2xhc3MtbmF0aXZlID0gIiIKIExER09MRF9jbGFzcy1jcm9zc3NkayA9ICIiCitMREdPTERfbGliYy1nbGliY19taXBzYXJjaCA9ICIiCiBMREdPTEQgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICctLWVuYWJsZS1nb2xkPWRlZmF1bHQgLS1lbmFibGUtdGhyZWFkcycsICctLWVuYWJsZS1nb2xkIC0tZW5hYmxlLWxkPWRlZmF1bHQgLS1lbmFibGUtdGhyZWFkcycsIGQpfSIKIAorCiAjIFRoaXMgaXMgbmVjZXNzYXJ5IGR1ZSB0byBhIGJ1ZyBpbiB0aGUgYmludXRpbHMgTWFrZWZpbGVzCiAjIEVYVFJBX09FTUFLRSA9ICJjb25maWd1cmUtYnVpbGQtbGliaWJlcnR5IGFsbCIKIApAQCAtMTEwLDcgKzEyMSw4IEBACiBNVUxUSUFSQ0ggOj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAibXVsdGlhcmNoIiwgInllcyIsICJubyIsIGQpfSIKIGRvX2NvbmZpZ3VyZVt2YXJkZXBzXSArPSAiTVVMVElBUkNIIgogZG9fY29uZmlndXJlICgpIHsKLQkoY2QgJHtTfTsgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJGYWlsZWQgdG8gcnVuIGdudS1jb25maWdpemUiCisJKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkKKwogCW9lX3J1bmNvbmYKICMKICMgbXVzdCBwcmltZSBjb25maWcuY2FjaGUgdG8gZW5zdXJlIHRoZSBidWlsZCBvZiBsaWJpYmVydHkKQEAgLTEyMSwxMCArMTMzLDYgQEAKIAlkb25lCiB9CiAKLWRvX2NvbXBpbGVfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQljaHJwYXRoIC1kICR7Qn0vYmludXRpbHMvZWxmZWRpdAotCWNocnBhdGggLWQgJHtCfS9iaW51dGlscy9yZWFkZWxmCi19CiBkb19pbnN0YWxsICgpIHsKIAlhdXRvdG9vbHNfZG9faW5zdGFsbAogCkBAIC0xNDQsNiArMTUyLDExIEBACiAJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KIAlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KIAorCSMgaW5zYWxsIHBpYyB2ZXJzaW9uIG9mIGxpYmliZXJ0eSBpZiBhdmFpbGFibGUKKyAgICAgICAgaWYgWyAtZSAke0J9L2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEgXTsgdGhlbgorCQlpbnN0YWxsIC1EbSAwNjQ0ICR7Qn0vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSAke0R9JHtsaWJkaXJ9L2xpYmliZXJ0eS5hCisJZmkKKwogCWNkICR7RH0ke2JpbmRpcn0KIAogCSMgU3ltbGlua3MgZm9yIGVhc2Ugb2YgcnVubmluZyB0aGVzZSBvbiB0aGUgbmF0aXZlIHRhcmdldApAQCAtMTU2LDYgKzE2OSw4IEBACiAJZG9uZQogCiAJb2VfbXVsdGlsaWJfaGVhZGVyIGJmZC5oCisgICAgICAgICMgYmZkX3N0ZGludC5oIGVuY29kZXMgdGhlIGNvbXBpbGVyIG5hbWUgaW4gdGhlIGhlYWRlcgorICAgICAgICBzZWQgLWkgJHtEfSR7aW5jbHVkZWRpcn0vYmZkX3N0ZGludC5oIC1lICJzLCR7VEFSR0VUX1BSRUZJWH0sLCIKIH0KIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCkBAIC0xNjMsMyArMTc4LDggQEAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAogQUxURVJOQVRJVkVfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiR7VVNFX0FMVEVSTkFUSVZFU19GT1J9IgorCitweXRob24gKCkgeworICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsIFRydWUsIEZhbHNlLCBkKSBhbmQgYmIudXRpbHMuY29udGFpbnNfYW55KCdUQVJHRVRfQVJDSCcsICdyaXNjdjMyIHJpc2N2NjQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGJiLmZhdGFsKCJHb2xkIGxpbmtlciBkb2VzIG5vdCBfeWV0XyBzdXBwb3J0IFJJU0MtViBhcmNoaXRlY3R1cmUgcGxlYXNlIHJlbW92ZSBsZC1pcy1nb2xkIGZyb20gRElTVFJPX0ZFQVRVUkVTIikKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAppbmRleCA2NTgxYmFkLi4xNGU4NDIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1YmNkODg0ZjhhZjUxMDZkMGZhMzgwYzQyY2ZmZTA3ZjNjOTkzZWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiMDVmMGJlMTNhYWRmMGIyNmEwYjM5ZGZlN2RhZjJjNDdhMzAwMzM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo1ODo1NCArMDAwMAotU3ViamVjdDogW1BBVENIIDAxLzE1XSBiaW51dGlscy1jcm9zc3NkazogR2VuZXJhdGUgcmVsb2NhdGFibGUgU0RLcworU3ViamVjdDogW1BBVENIXSBiaW51dGlscy1jcm9zc3NkazogR2VuZXJhdGUgcmVsb2NhdGFibGUgU0RLcwogCiBUaGlzIHBhdGNoIHdpbGwgbW9kaWZ5IHRoZSBFTEYgbGlua2VyIHNjcmlwdHMgc28gdGhhdCB0aGUgY3Jvc3NzZGsKIGxpbmtlciB3aWxsIGdlbmVyYXRlIGJpbmFyaWVzIHdpdGggYSA0MDk2IGJ5dGVzIFBUX0lOVEVSUCBzZWN0aW9uLiBXaGVuIHRoZSBiaW5hcmllcwpAQCAtMTgsMzUgKzE4LDM1IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggNzdkZGJiYzhmOC4uZDc4OWU3Nzk0MyAxMDA3NTUKK2luZGV4IDAzMzkyZDI2NWMuLjQzNTY4OWVhMTQgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCi1AQCAtMzEwLDYgKzMxMCw3IEBAIERBVEFfQUxJR05NRU5UX3U9IiR7REFUQV9BTElHTk1FTlRfdS0ke0RBVEFfQUxJR05NRU5UX3J9fSIKK0BAIC0zMDQsNiArMzA0LDcgQEAgREFUQV9BTElHTk1FTlRfdT0iJHtEQVRBX0FMSUdOTUVOVF91LSR7REFUQV9BTElHTk1FTlRfcn19IgogIExEX0ZMQUc9cgogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRfcn0KICBERUZBVUxUX0RBVEFfQUxJR05NRU5UPSJBTElHTigke1NFR01FTlRfU0laRX0pIgogK1BBUlRJQUxfTElOS0lORz0iICIKLSAoIGVjaG8gIi8qIFNjcmlwdCBmb3IgbGQgLXI6IGxpbmsgd2l0aG91dCByZWxvY2F0aW9uICovIgotICAgLiAke0NVU1RPTUlaRVJfU0NSSVBUfQotICAgLiAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKLUBAIC0zMTgsMTAgKzMxOSwxMiBAQCBERUZBVUxUX0RBVEFfQUxJR05NRU5UPSJBTElHTigke1NFR01FTlRfU0laRX0pIgorICggZWNobyAiLyogU2NyaXB0IGZvciAtciAqLyIKKyAgIHNvdXJjZV9zaCAke0NVU1RPTUlaRVJfU0NSSVBUfQorICAgc291cmNlX3NoICR7c3JjZGlyfS9zY3JpcHR0ZW1wbC8ke1NDUklQVF9OQU1FfS5zYworQEAgLTMxMiwxMCArMzEzLDEyIEBAIERFRkFVTFRfREFUQV9BTElHTk1FTlQ9IkFMSUdOKCR7U0VHTUVOVF9TSVpFfSkiCiAgTERfRkxBRz11CiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF91fQogIENPTlNUUlVDVElORz0iICIKICtQQVJUSUFMX0xJTktJTkc9IiAiCi0gKCBlY2hvICIvKiBTY3JpcHQgZm9yIGxkIC1VcjogbGluayB3L291dCByZWxvY2F0aW9uLCBkbyBjcmVhdGUgY29uc3RydWN0b3JzICovIgotICAgLiAke0NVU1RPTUlaRVJfU0NSSVBUfQotICAgLiAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKKyAoIGVjaG8gIi8qIFNjcmlwdCBmb3IgLVVyICovIgorICAgc291cmNlX3NoICR7Q1VTVE9NSVpFUl9TQ1JJUFR9CisgICBzb3VyY2Vfc2ggJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCiAgKSB8IHNlZCAtZSAnL14gKiQvZDtzL1sJIF0qJC8vJyA+IGxkc2NyaXB0cy8ke0VNVUxBVElPTl9OQU1FfS54dQogK3Vuc2V0IFBBUlRJQUxfTElOS0lORwogIAogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRffQogIFJFTE9DQVRJTkc9IiAiCiBkaWZmIC0tZ2l0IGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1pbmRleCBiZDc1ODQxMjBlLi44YmJlMDUyZDRiIDEwMDY0NAoraW5kZXggMGI4YjMyYTQ0MC4uZWU2YjcxMDc1ZCAxMDA2NDQKIC0tLSBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogKysrIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1AQCAtMTM5LDggKzEzOSw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCitAQCAtMTQwLDggKzE0MCw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCiAgICAgIERBVEFfU0VHTUVOVF9SRUxST19FTkQ9Ii4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgke1NFUEFSQVRFX0dPVFBMVC0wfSwgLik7IgogICAgZmkKICBmaQpAQCAtNTcsNiArNTcsMyBAQAogIGZpCiAgaWYgdGVzdCAteiAiJFBMVCI7IHRoZW4KICAgIElQTFQ9Ii5pcGx0ICAgICAgICAgJHtSRUxPQ0FUSU5HLTB9IDogeyAqKC5pcGx0KSB9IgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCmluZGV4IDMyNTM3ZDQuLjkxZGU5NGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIDExOTI3OTEzNTYwZmM1YTVkNTFhZjNiYzVlYjhhZDYyYTg2Yzk4NDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZkNzlmODEzMzZlN2NiZTcyN2I1YTUxMTM0ZjVkMzE0YTQ1NTM3OWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjM3OjA1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTVdIGJpbnV0aWxzLWNyb3NzOiBEbyBub3QgZ2VuZXJhdGUgbGlua2VyIHNjcmlwdAotIGRpcmVjdG9yaWVzCitTdWJqZWN0OiBbUEFUQ0hdIGJpbnV0aWxzLWNyb3NzOiBEbyBub3QgZ2VuZXJhdGUgbGlua2VyIHNjcmlwdCBkaXJlY3RvcmllcwogCiBXZSBkb24ndCBwbGFjZSB0YXJnZXQgbGlicmFyaWVzIHdpdGhpbiAke2V4ZWNfcHJlZml4fSwgd2UnZCBhbHdheXMgcGxhY2UgdGhlc2UKIHdpdGhpbiB0aGUgdGFyZ2V0IHN5c3Jvb3Qgd2l0aGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLiBXb3JzZSwgdGhlCkBAIC0yMywxMCArMjIsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggZDc4OWU3Nzk0My4uMTQ0ZTJlODczNiAxMDA3NTUKK2luZGV4IDQzNTY4OWVhMTQuLmNmZjhhMTQ2N2YgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCi1AQCAtMjIwLDMxICsyMjAsNiBAQCBhcHBlbmRfdG9fbGliX3BhdGgoKQorQEAgLTIzNSwzMSArMjM1LDYgQEAgYXBwZW5kX3RvX2xpYl9wYXRoKCkKICAgIGZpCiAgfQogIApAQCAtNTgsNiArNTcsMyBAQAogIGlmIFsgIngke0xJQl9QQVRIfSIgPSAieCIgXSAmJiBbICJ4JHtVU0VfTElCUEFUSH0iID0geHllcyBdIDsgdGhlbgogICAgbGlicz0ke05BVElWRV9MSUJfRElSU30KICAgIGlmIFsgIngke05BVElWRX0iID0gInh5ZXMiIF0gOyB0aGVuCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWJpbnV0aWxzLW5hdGl2ZXNkay1TZWFyY2gtZm9yLWFsdGVybmF0aXZlLWxkLnNvLmNvbmYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWJpbnV0aWxzLW5hdGl2ZXNkay1TZWFyY2gtZm9yLWFsdGVybmF0aXZlLWxkLnNvLmNvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI0ZDczZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtYmludXRpbHMtbmF0aXZlc2RrLVNlYXJjaC1mb3ItYWx0ZXJuYXRpdmUtbGQuc28uY29uZi5wYXRjaApAQCAtMCwwICsxLDk1IEBACitGcm9tIGQwNTdiMjE1ZjExNGY2MTU4YjQwMTBhYjQ0YTE5Y2FlOWRjYzgzODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMTkgRmViIDIwMjAgMDk6NTE6MTYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYmludXRpbHMtbmF0aXZlc2RrOiBTZWFyY2ggZm9yIGFsdGVybmF0aXZlIGxkLnNvLmNvbmYgaW4gU0RLCisgaW5zdGFsbGF0aW9uCisKK1dlIG5lZWQgYmludXRpbHMgdG8gbG9vayBhdCBvdXIgbGQuc28uY29uZiBmaWxlIHdpdGhpbiB0aGUgU0RLIHRvIGVuc3VyZQord2Ugc2VhcmNoIHRoZSBTREsncyBsaWJkaXJzIGFzIHdlbGwgYXMgdGhvc2UgZnJvbSB0aGUgaG9zdCBzeXN0ZW0uCisKK1dlIHRoZXJlZm9yZSBwYXNzIGluIHRoZSBkaXJlY3RvcnkgdG8gdGhlIGNvZGUgdXNpbmcgYSBkZWZpbmUsIHRoZW4gYWRkCitpdCB0byBhIHNlY3Rpb24gd2UgcmVsb2NhdGUgaW4gYSBzaW1pbGFyIHdheSB0byB0aGUgd2F5IHdlIHJlbG9jYXRlIHRoZQorZ2NjIGludGVybmFsIHBhdGhzLiBUaGlzIGVuc3VyZXMgdGhhdCBsZCB3b3JrcyBjb3JyZWN0bHkgaW4gb3VyIGJ1aWxkdG9vbHMKK3RhcmJhbGwuCisKK1N0YW5kYXJkIHN5c3Jvb3QgcmVsb2NhdGlvbiBkb2Vzbid0IHdvcmsgc2luY2Ugd2UncmUgbm90IGluIGEgc3lzcm9vdCwKK3dlIHdhbnQgdG8gdXNlIGJvdGggdGhlIGhvc3Qgc3lzdGVtIGFuZCBTREsgbGlicy4KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisyMDIwLzEvMTcKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWMgdHdlYWtdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsZC9NYWtlZmlsZS5hbSB8IDMgKystCisgbGQvTWFrZWZpbGUuaW4gfCAzICsrLQorIGxkL2xkZWxmLmMgICAgIHwgMiArLQorIGxkL2xkbWFpbi5jICAgIHwgMSArCisgbGQvbGRtYWluLmggICAgfCAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KK2luZGV4IDRhOWI4NDA0YjcuLjFjMTMyZDNjZTQgMTAwNjQ0CistLS0gYS9sZC9NYWtlZmlsZS5hbQorKysrIGIvbGQvTWFrZWZpbGUuYW0KK0BAIC00Miw3ICs0Miw4IEBAIFpMSUJJTkMgPSBAemxpYmluY0AKKyAKKyBFTEZfQ0xGQUdTPS1ERUxGX0xJU1RfT1BUSU9OUz1AZWxmX2xpc3Rfb3B0aW9uc0AgXAorIAkgICAtREVMRl9TSExJQl9MSVNUX09QVElPTlM9QGVsZl9zaGxpYl9saXN0X29wdGlvbnNAIFwKKy0JICAgLURFTEZfUExUX1VOV0lORF9MSVNUX09QVElPTlM9QGVsZl9wbHRfdW53aW5kX2xpc3Rfb3B0aW9uc0AKKysJICAgLURFTEZfUExUX1VOV0lORF9MSVNUX09QVElPTlM9QGVsZl9wbHRfdW53aW5kX2xpc3Rfb3B0aW9uc0AgXAorKyAgICAgICAgICAgLURTWVNDT05GRElSPSJcIiQoc3lzY29uZmRpcilcIiIKKyBXQVJOX0NGTEFHUyA9IEBXQVJOX0NGTEFHU0AKKyBOT19XRVJST1IgPSBATk9fV0VSUk9SQAorIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKK2RpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5pbiBiL2xkL01ha2VmaWxlLmluCitpbmRleCA0NmQ5YjE0MDc3Li5lNDUzYmMxYjMzIDEwMDY0NAorLS0tIGEvbGQvTWFrZWZpbGUuaW4KKysrKyBiL2xkL01ha2VmaWxlLmluCitAQCAtNTU1LDcgKzU1NSw4IEBAIFpMSUIgPSBAemxpYmRpckAgLWx6CisgWkxJQklOQyA9IEB6bGliaW5jQAorIEVMRl9DTEZBR1MgPSAtREVMRl9MSVNUX09QVElPTlM9QGVsZl9saXN0X29wdGlvbnNAIFwKKyAJICAgLURFTEZfU0hMSUJfTElTVF9PUFRJT05TPUBlbGZfc2hsaWJfbGlzdF9vcHRpb25zQCBcCistCSAgIC1ERUxGX1BMVF9VTldJTkRfTElTVF9PUFRJT05TPUBlbGZfcGx0X3Vud2luZF9saXN0X29wdGlvbnNACisrCSAgIC1ERUxGX1BMVF9VTldJTkRfTElTVF9PUFRJT05TPUBlbGZfcGx0X3Vud2luZF9saXN0X29wdGlvbnNAIFwKKysgICAgICAgICAgIC1EU1lTQ09ORkRJUj0iXCIkKHN5c2NvbmZkaXIpXCIiCisgCisgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQorIEBFTkFCTEVfUExVR0lOU19GQUxTRUBQTFVHSU5fQyA9IAorZGlmZiAtLWdpdCBhL2xkL2xkZWxmLmMgYi9sZC9sZGVsZi5jCitpbmRleCAyZTI3Y2Y0OGE4Li5hMDk1ZDZhYWM1IDEwMDY0NAorLS0tIGEvbGQvbGRlbGYuYworKysrIGIvbGQvbGRlbGYuYworQEAgLTkwNyw3ICs5MDcsNyBAQCBsZGVsZl9jaGVja19sZF9zb19jb25mIChjb25zdCBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKmwsIGludCBmb3JjZSwKKyAKKyAgICAgICBpbmZvLnBhdGggPSBOVUxMOworICAgICAgIGluZm8ubGVuID0gaW5mby5hbGxvYyA9IDA7CistICAgICAgdG1wcGF0aCA9IGNvbmNhdCAobGRfc3lzcm9vdCwgcHJlZml4LCAiL2V0Yy9sZC5zby5jb25mIiwKKysgICAgICB0bXBwYXRoID0gY29uY2F0IChsZF9zeXNjb25mZGlyLCAiL2xkLnNvLmNvbmYiLAorIAkJCShjb25zdCBjaGFyICopIE5VTEwpOworICAgICAgIGlmICghbGRlbGZfcGFyc2VfbGRfc29fY29uZiAoJmluZm8sIHRtcHBhdGgpKQorIAl7CitkaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYworaW5kZXggYzRhZjEwZjRlOS4uZGExYWQxNzc2MyAxMDA2NDQKKy0tLSBhL2xkL2xkbWFpbi5jCisrKysgYi9sZC9sZG1haW4uYworQEAgLTY5LDYgKzY5LDcgQEAgY2hhciAqcHJvZ3JhbV9uYW1lOworIAorIC8qIFRoZSBwcmVmaXggZm9yIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzLiAgKi8KKyBjb25zdCBjaGFyICpsZF9zeXNyb290OworK2NoYXIgbGRfc3lzY29uZmRpcls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTWVNDT05GRElSOworIAorIC8qIFRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgbGRfc3lzcm9vdC4gICovCisgY2hhciAqbGRfY2Fub25fc3lzcm9vdDsKK2RpZmYgLS1naXQgYS9sZC9sZG1haW4uaCBiL2xkL2xkbWFpbi5oCitpbmRleCAwZjA1ODIxZDFlLi41NGMzNmE5NGNlIDEwMDY0NAorLS0tIGEvbGQvbGRtYWluLmgKKysrKyBiL2xkL2xkbWFpbi5oCitAQCAtMjMsNiArMjMsNyBAQAorIAorIGV4dGVybiBjaGFyICpwcm9ncmFtX25hbWU7CisgZXh0ZXJuIGNvbnN0IGNoYXIgKmxkX3N5c3Jvb3Q7CisrZXh0ZXJuIGNoYXIgbGRfc3lzY29uZmRpcls0MDk2XTsKKyBleHRlcm4gY2hhciAqbGRfY2Fub25fc3lzcm9vdDsKKyBleHRlcm4gaW50IGxkX2Nhbm9uX3N5c3Jvb3RfbGVuOworIGV4dGVybiBGSUxFICpzYXZlZF9zY3JpcHRfaGFuZGxlOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDEzODIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZGEzOTM5ZGU2ZmIzNmRhMmM2NDg0ZjE0ZjA4YTM3YmUxOTVkOWRjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xNV0gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCi0KLWdwcm9mIG5lZWRzIHRvIGtub3cgYWJvdXQgdWNsaWJjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlICAgICAgIHwgMiArLQotIGdwcm9mL2NvbmZpZ3VyZSB8IDUgKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAzNzQ3NjQ1OTYxLi43OGI1MjQwMTAxIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0zODYxLDcgKzM4NjEsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICBudnB0eCotKi0qKQotICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYnNzcCB0YXJnZXQtbGlic3RkYysrLXYzIHRhcmdldC1saWJvYmpjIgotICAgICA7OwotLSAgc2gtKi0qKQotKyAgc2gqLSotKiB8IHNoNjQtKi0qKQotICAgICBjYXNlICIke3RhcmdldH0iIGluCi0gICAgICAgc2gqLSotZWxmKQotICAgICAgICAgIDs7Ci1kaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCBmODRlZmFiYTIwLi5hYjMyYmFiMmI2IDEwMDc1NQotLS0tIGEvZ3Byb2YvY29uZmlndXJlCi0rKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC02MTYyLDYgKzYxNjIsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgIDs7Ci0gCi0rbGludXgtdWNsaWJjKikKLSsgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0rICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAotKyAgOzsKLSsKLSBuZXRic2QqKQotICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhlMzUyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBmYzFmZjg2MGZkODhmYTJkMDU4NGJkMTkxODFjODgwYTc2MzMxYThkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowOTo1OCArMDAwMAotU3ViamVjdDogW1BBVENIIDA0LzE1XSBQb2ludCBzY3JpcHRzIGxvY2F0aW9uIHRvIGxpYmRpcgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxkL01ha2VmaWxlLmFtIHwgMiArLQotIGxkL01ha2VmaWxlLmluIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQotaW5kZXggYzJjNzk4YjRmZS4uZDdmYWYxOTI3MSAxMDA2NDQKLS0tLSBhL2xkL01ha2VmaWxlLmFtCi0rKysgYi9sZC9NYWtlZmlsZS5hbQotQEAgLTU3LDcgKzU3LDcgQEAgZW5kaWYKLSAjIFdlIHB1dCB0aGUgc2NyaXB0cyBpbiB0aGUgZGlyZWN0b3J5ICQoc2NyaXB0ZGlyKS9sZHNjcmlwdHMuCi0gIyBXZSBjYW4ndCBwdXQgdGhlIHNjcmlwdHMgaW4gJChkYXRhZGlyKSBiZWNhdXNlIHRoZSBTRUFSQ0hfRElSCi0gIyBkaXJlY3RpdmVzIG5lZWQgdG8gYmUgZGlmZmVyZW50IGZvciBuYXRpdmUgYW5kIGNyb3NzIGxpbmtlcnMuCi0tc2NyaXB0ZGlyID0gJCh0b29sZGlyKS9saWIKLStzY3JpcHRkaXIgPSAkKGxpYmRpcikKLSAKLSBFTVVMID0gQEVNVUxACi0gRU1VTEFUSU9OX09GSUxFUyA9IEBFTVVMQVRJT05fT0ZJTEVTQAotZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmluIGIvbGQvTWFrZWZpbGUuaW4KLWluZGV4IGZjNjg3ZmM1MTYuLjhiMTRmNTIzNmMgMTAwNjQ0Ci0tLS0gYS9sZC9NYWtlZmlsZS5pbgotKysrIGIvbGQvTWFrZWZpbGUuaW4KLUBAIC01NjMsNyArNTYzLDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQotICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KLSAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKLSAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KLS1zY3JpcHRkaXIgPSAkKHRvb2xkaXIpL2xpYgotK3NjcmlwdGRpciA9ICQobGliZGlyKQotIEJBU0VESVIgPSAkKHNyY2RpcikvLi4KLSBCRkRESVIgPSAkKEJBU0VESVIpL2JmZAotIElOQ0RJUiA9ICQoQkFTRURJUikvaW5jbHVkZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEwYTE0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBmN2FkOGE0NGMxMGYwMWUwMzY4MGYwOTNmZDdhZjcxYzlmNWU4NjA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowNzozMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IHdpZGVuIHRoZSByZWdleHAgZm9yIFNIIGFyY2hpdGVjdHVyZXMKKworZ3Byb2YgbmVlZHMgdG8ga25vdyBhYm91dCB1Y2xpYmMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA5MWRjNDJmNmM3Li43YzFiNzQ3ZTdjIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC0zOTE1LDcgKzM5MTUsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCisgICBudnB0eCotKi0qKQorICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYnNzcCB0YXJnZXQtbGlic3RkYysrLXYzIHRhcmdldC1saWJvYmpjIgorICAgICA7OworLSAgc2gtKi0qKQorKyAgc2gqLSotKiB8IHNoNjQtKi0qKQorICAgICBjYXNlICIke3RhcmdldH0iIGluCisgICAgICAgc2gqLSotZWxmKQorICAgICAgICAgIDs7CitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0YmQ4NjlhNjNhLi43MTg3YjM0ZGZjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMTU5LDcgKzExNTksNyBAQCBjYXNlICIke3RhcmdldH0iIGluCisgICBudnB0eCotKi0qKQorICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYnNzcCB0YXJnZXQtbGlic3RkYysrLXYzIHRhcmdldC1saWJvYmpjIgorICAgICA7OworLSAgc2gtKi0qKQorKyAgc2gqLSotKiB8IHNoNjQtKi0qKQorICAgICBjYXNlICIke3RhcmdldH0iIGluCisgICAgICAgc2gqLSotZWxmKQorICAgICAgICAgIDs7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYWQ1MzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA2Njg2MWJmZjM4OTQzNGUzNDU0Yzc2NTBlZTI5ZmFkZTdhMWNjNWVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMToyNzoxNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA1LzE1XSBPbmx5IGdlbmVyYXRlIGFuIFJQQVRIIGVudHJ5IGlmIExEX1JVTl9QQVRIIGlzIG5vdAotIGVtcHR5Ci0KLWZvciBjYXNlcyB3aGVyZSAtcnBhdGggaXNuJ3Qgc3BlY2lmaWVkLiBkZWJpYW4gKCMxNTEwMjQpCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpcyBDaGltZWxpcyA8Y2hyaXNAZGViaWFuLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsZC9lbXVsdGVtcGwvZWxmMzIuZW0gfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0gYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLWluZGV4IGY0ZjdhZDZiNGUuLmNmZDc4N2ZmMjggMTAwNjQ0Ci0tLS0gYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLSsrKyBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotQEAgLTE0NzEsNiArMTQ3MSw4IEBAIGZyYWdtZW50IDw8RU9GCi0gCSAgICAgICYmIGNvbW1hbmRfbGluZS5ycGF0aCA9PSBOVUxMKQotIAkgICAgewotIAkgICAgICBwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKLSsJICAgICAgaWYgKChwYXRoKSAmJiAoc3RybGVuIChwYXRoKSA9PSAwKSkKLSsJCSAgcGF0aCA9IE5VTEw7Ci0gCSAgICAgIGlmIChwYXRoCi0gCQkgICYmIGdsZCR7RU1VTEFUSU9OX05BTUV9X3NlYXJjaF9uZWVkZWQgKHBhdGgsICZuLCBmb3JjZSkpCi0gCQlicmVhazsKLUBAIC0xNzQ2LDYgKzE3NDgsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKLSAgIHJwYXRoID0gY29tbWFuZF9saW5lLnJwYXRoOwotICAgaWYgKHJwYXRoID09IE5VTEwpCi0gICAgIHJwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKLSsgIGlmICgocnBhdGgpICYmIChzdHJsZW4gKHJwYXRoKSA9PSAwKSkKLSsgICAgcnBhdGggPSBOVUxMOwotIAotICAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCi0gICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmEwYmE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDA4YjA4OGI3ZGQzZDk3MDdlZDY2OTQ4YTcyNzFmZmI0MzhlZWRkZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA5OjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFBvaW50IHNjcmlwdHMgbG9jYXRpb24gdG8gbGliZGlyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuIHBhdGNoXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvTWFrZWZpbGUuYW0gfCAyICstCisgbGQvTWFrZWZpbGUuaW4gfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5hbSBiL2xkL01ha2VmaWxlLmFtCitpbmRleCAxYzEzMmQzY2U0Li44ZDgyY2YyZTE2IDEwMDY0NAorLS0tIGEvbGQvTWFrZWZpbGUuYW0KKysrKyBiL2xkL01ha2VmaWxlLmFtCitAQCAtNjQsNyArNjQsNyBAQCBlbmRpZgorICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KKyAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKKyAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KKy1zY3JpcHRkaXIgPSAkKHRvb2xkaXIpL2xpYgorK3NjcmlwdGRpciA9ICQobGliZGlyKQorIAorIEVNVUwgPSBARU1VTEAKKyBFTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNACitkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgoraW5kZXggZTQ1M2JjMWIzMy4uMmRjZDcyZjgwOSAxMDA2NDQKKy0tLSBhL2xkL01ha2VmaWxlLmluCisrKysgYi9sZC9NYWtlZmlsZS5pbgorQEAgLTU3Myw3ICs1NzMsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCisgIyBXZSBwdXQgdGhlIHNjcmlwdHMgaW4gdGhlIGRpcmVjdG9yeSAkKHNjcmlwdGRpcikvbGRzY3JpcHRzLgorICMgV2UgY2FuJ3QgcHV0IHRoZSBzY3JpcHRzIGluICQoZGF0YWRpcikgYmVjYXVzZSB0aGUgU0VBUkNIX0RJUgorICMgZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGRpZmZlcmVudCBmb3IgbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgorLXNjcmlwdGRpciA9ICQodG9vbGRpcikvbGliCisrc2NyaXB0ZGlyID0gJChsaWJkaXIpCisgQkFTRURJUiA9ICQoc3JjZGlyKS8uLgorIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCisgSU5DRElSID0gJChCQVNFRElSKS9pbmNsdWRlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyMDcyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDEzNzkxNjM2YWJmNTE4ZjBkYjIwOWRjNTFjMjk0NDVkODA0MjFmMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjI3OjE3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE9ubHkgZ2VuZXJhdGUgYW4gUlBBVEggZW50cnkgaWYgTERfUlVOX1BBVEggaXMgbm90IGVtcHR5CisKK2ZvciBjYXNlcyB3aGVyZSAtcnBhdGggaXNuJ3Qgc3BlY2lmaWVkLiBkZWJpYW4gKCMxNTEwMjQpCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpcyBDaGltZWxpcyA8Y2hyaXNAZGViaWFuLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsZC9sZGVsZi5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGQvbGRlbGYuYyBiL2xkL2xkZWxmLmMKK2luZGV4IGEwOTVkNmFhYzUuLmEyNDU1YTg3OTMgMTAwNjQ0CistLS0gYS9sZC9sZGVsZi5jCisrKysgYi9sZC9sZGVsZi5jCitAQCAtMTIyOSw2ICsxMjI5LDggQEAgbGRlbGZfYWZ0ZXJfb3BlbiAoaW50IHVzZV9saWJwYXRoLCBpbnQgbmF0aXZlLCBpbnQgaXNfbGludXgsIGludCBpc19mcmVlYnNkLAorIAkJICAmJiBjb21tYW5kX2xpbmUucnBhdGggPT0gTlVMTCkKKyAJCXsKKyAJCSAgcGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CisrCQkgIGlmICgocGF0aCkgJiYgKHN0cmxlbiAocGF0aCkgPT0gMCkpCisrCQkgICAgICBwYXRoID0gTlVMTDsKKyAJCSAgaWYgKHBhdGgKKyAJCSAgICAgICYmIGxkZWxmX3NlYXJjaF9uZWVkZWQgKHBhdGgsICZuLCBmb3JjZSwKKyAJCQkJCSAgICAgIGlzX2xpbnV4LCBlbGZzaXplKSkKK0BAIC0xNTczLDYgKzE1NzUsOCBAQCBsZGVsZl9iZWZvcmVfYWxsb2NhdGlvbiAoY2hhciAqYXVkaXQsIGNoYXIgKmRlcGF1ZGl0LAorICAgcnBhdGggPSBjb21tYW5kX2xpbmUucnBhdGg7CisgICBpZiAocnBhdGggPT0gTlVMTCkKKyAgICAgcnBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOworKyAgaWYgKChycGF0aCkgJiYgKHN0cmxlbiAocnBhdGgpID09IDApKQorKyAgICBycGF0aCA9IE5VTEw7CisgCisgICBmb3IgKGFiZmQgPSBsaW5rX2luZm8uaW5wdXRfYmZkczsgYWJmZDsgYWJmZCA9IGFiZmQtPmxpbmsubmV4dCkKKyAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYzRkMjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTI1MiArMCwwIEBACi1Gcm9tIDQxODUyN2EyOTcxZDRlNzdhODcwODU0MDAzOTcwOTBkODlmYzVjOTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNDowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzE1XSBVc2UgbGlidG9vbCAyLjQKLQotZ2V0IGxpYnRvb2wgc3lzcm9vdCBzdXBwb3J0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzIyICsrKysrKysrKysrKysrLS0tLS0KLSBiZmQvY29uZmlndXJlLmFjICAgICB8ICAgIDIgKy0KLSBiaW51dGlscy9jb25maWd1cmUgICB8IDEzMjAgKysrKysrKysrKysrKystLS0tLQotIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMyMCArKysrKysrKysrKysrKy0tLS0tCi0gZ3Byb2YvY29uZmlndXJlICAgICAgfCAxMzIxICsrKysrKysrKysrKysrLS0tLS0KLSBsZC9jb25maWd1cmUgICAgICAgICB8IDE2OTUgKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gbGlidG9vbC5tNCAgICAgICAgICAgfCAxMDgwICsrKysrKysrKysrLS0tLS0KLSBsdG1haW4uc2ggICAgICAgICAgICB8IDI5MjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gbHRvcHRpb25zLm00ICAgICAgICAgfCAgICAyICstCi0gbHR2ZXJzaW9uLm00ICAgICAgICAgfCAgIDEyICstCi0gbHR+b2Jzb2xldGUubTQgICAgICAgfCAgICAyICstCi0gb3Bjb2Rlcy9jb25maWd1cmUgICAgfCAxMzIyICsrKysrKysrKysrKysrLS0tLS0KLSBvcGNvZGVzL2NvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KLSB6bGliL2NvbmZpZ3VyZSAgICAgICB8IDEzMjAgKysrKysrKysrKysrKystLS0tLQotIDE0IGZpbGVzIGNoYW5nZWQsIDk5NDAgaW5zZXJ0aW9ucygrKSwgMzcwNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUgYi9iZmQvY29uZmlndXJlCi1pbmRleCAxNzk2MDY4NGY4Li45MjVmYjQwMWYyIDEwMDc1NQotLS0tIGEvYmZkL2NvbmZpZ3VyZQotKysrIGIvYmZkL2NvbmZpZ3VyZQotQEAgLTcwNCw2ICs3MDQsOSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSthY19jdF9BUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtODIyLDYgKzgyNSw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE1MDQsNiArMTUwOCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAgIC0td2l0aC1tbWFwICAgICAgICAgICAgIHRyeSB1c2luZyBtbWFwIGZvciBCRkQgaW5wdXQgZmlsZXMgaWYgYXZhaWxhYmxlCi0gICAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPURJUgotICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gRElSCi1AQCAtNTY5Myw4ICs1Njk5LDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTU3MzQsNyArNTc0MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTY0MjAsOCArNjQyNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02NDcwLDYgKzY0NzYsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY0ODYsNiArNjU2NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjY1NCw3ICs2NzM5LDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTY4MDgsNiArNjg5NCwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY4MjEsMTEgKzY5MjIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY4NDEsNyArNzA5NSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY4NjEsMTEgKzcxMTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjg4MSw3ICs3MTM5LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY5MDAsNiArNzE1OCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjkxMSwxNiArNzE3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTcyNjIsOCArNzU4MCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNzI5OSw2ICs3NjE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTczNDAsNiArNzY1OSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03MzUxLDcgKzc2ODIsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03Mzc3LDggKzc3MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03Mzg4LDggKzc3MTksOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03NDI2LDYgKzc3NTcsMTYgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03NDQyLDYgKzc3ODMsNDUgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03NjUzLDYgKzgwMzMsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTgyMTYsNiArODcxMyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MzgwLDcgKzg4NzksOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODQ2OSw3ICs4OTY5LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NzY3LDggKzkyNjcsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg5MzQsNiArOTQzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg5OTYsNyArOTUwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC05MDUzLDEzICs5NTU3LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTkxMjAsNiArOTYyOCwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTk0NzAsNyArOTk4Myw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTk1NjksMTIgKzEwMDgzLDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTk1ODgsOCArMTAxMDIsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTYwNyw4ICsxMDEyMSw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NjU0LDggKzEwMTY4LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk3ODUsNyArMTAyOTksMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTc5OCwyMiArMTAzMTgsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk4MjUsNyArMTAzNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk4MzgsMjIgKzEwMzcxLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTg5OCwyMCArMTA0MzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05OTcyLDcgKzEwNTU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTk4MCw3ICsxMDU2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk5OTYsNyArMTA1NzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtMTAwMjAsMTAgKzEwNjAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtMTAxMDIsMjMgKzEwNjg1LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC0xMDIwMyw3ICsxMDc5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTEwMjIyLDkgKzEwODE4LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwODAwLDggKzExMzk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwODM0LDEzICsxMTQzMSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA5MzIsNyArMTE1ODcsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE3MjgsNyArMTIzODMsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTczMSAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE3NzIsMTAgKzEyNDI3LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE4MzQsNyArMTI0ODksNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTgzNyAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE4NzgsMTAgKzEyNTMzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTQ1MjUsNyArMTUxODAsNyBAQCBTSEFSRURfTERGTEFHUz0KLSBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCi1AQCAtMTcxNDIsMTMgKzE3Nzk3LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTcxNjMsMTQgKzE3ODI1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE3MjAzLDEyICsxNzg2OCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNzI2Myw4ICsxNzkyOCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTcyNzQsMTIgKzE3OTQ0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xNzI5NSw3ICsxNzk2Nyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE3MzMxLDYgKzE4MDAyLDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xODExOSw3ICsxODc5MSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTgyMjIsMTkgKzE4ODk1LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE4MjY0LDYgKzE4OTYwLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE4MjczLDYgKzE4OTc1LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xODM4NywxMiArMTkwOTIsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTg0NzksOSArMTkxODQsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xODQ5Nyw2ICsxOTE5OSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTg1MjksMjEwICsxOTIzNCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZS5hYyBiL2JmZC9jb25maWd1cmUuYWMKLWluZGV4IGVkYTM4ZWEwODYuLjdjZGY5YzgxNDYgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlndXJlLmFjCi0rKysgYi9iZmQvY29uZmlndXJlLmFjCi1AQCAtMjkzLDcgKzI5Myw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotIGNoYW5nZXF1b3RlKFssXSlkbmwKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvY29uZmlndXJlIGIvYmludXRpbHMvY29uZmlndXJlCi1pbmRleCAzODEyOGUxNDZkLi5jNzRmNzk3OTk2IDEwMDc1NQotLS0tIGEvYmludXRpbHMvY29uZmlndXJlCi0rKysgYi9iaW51dGlscy9jb25maWd1cmUKLUBAIC02ODksOCArNjg5LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTgwNyw2ICs4MTAsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDgzLDYgKzE0ODcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBkZWZhdWx0PW5vCi0gICAtLXdpdGgtbGliaWNvbnYtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYmljb252IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi1AQCAtNTQ1Nyw4ICs1NDYzLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTU0OTgsNyArNTUwNCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTYxODQsOCArNjE5MCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02MjM0LDYgKzYyNDAsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTYyNTAsNiArNjMzMCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjQxOCw3ICs2NTAzLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTY1NzIsNiArNjY1OCwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY1ODcsOSArNjY4OCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjYwNSw3ICs2ODU5LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjYyNSwxMSArNjg3OSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NjQ1LDcgKzY5MDMsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjY2NCw2ICs2OTIyLDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02Njc1LDEyICs2OTM3LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotIAotIAotIAotQEAgLTY2OTIsNiArNjk1Miw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0rCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTcwMjYsOCArNzM0NCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNzA2Myw2ICs3MzgxLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTcxMDQsNiArNzQyMywxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03MTE1LDcgKzc0NDYsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03MTQxLDggKzc0NzIsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03MTUyLDggKzc0ODMsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03MTkwLDYgKzc1MjEsMjEgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03MjA2LDYgKzc1NTIsNDAgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03NDE3LDYgKzc3OTcsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc5ODAsNiArODQ3Nyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MTc1LDcgKzg2NzQsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODI2NCw3ICs4NzY0LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NTYyLDggKzkwNjIsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg3MjksNiArOTIyNywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg3OTEsNyArOTI5NSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04ODQ4LDEzICs5MzUyLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg5MTUsNiArOTQyMywxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTkyNjUsNyArOTc3OCw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkzNjQsMTIgKzk4NzgsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTM4Myw4ICs5ODk3LDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTk0MDIsOCArOTkxNiw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NDQ5LDggKzk5NjMsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTU4MCw3ICsxMDA5NCwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NTkzLDIyICsxMDExMywyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTYyMCw3ICsxMDE0NywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTYzMywyMiArMTAxNjYsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05NjkzLDIwICsxMDIzMyw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk3NjcsNyArMTAzNTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05Nzc1LDcgKzEwMzU4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTc5MSw3ICsxMDM3NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05ODE1LDEwICsxMDM5OCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk4OTcsMjMgKzEwNDgwLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05OTk4LDcgKzEwNTk0LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtMTAwMTcsOSArMTA2MTMsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA1OTUsOCArMTExOTEsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA2MjksMTMgKzExMjI2LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDcyNyw3ICsxMTM4Miw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTUyMyw3ICsxMjE3OCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNTI2ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTU2NywxMCArMTIyMjIsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTYyOSw3ICsxMjI4NCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNjMyICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTY3MywxMCArMTIzMjgsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTkzNiwxMyArMTY1OTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTk1NywxNCArMTY2MTksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU5OTcsMTIgKzE2NjYyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2MDU3LDggKzE2NzIyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNjA2OCwxMiArMTY3MzgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE2MDg5LDcgKzE2NzYxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTYxMjUsNiArMTY3OTYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE2ODkxLDcgKzE3NTYzLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjk5NCwxOSArMTc2NjcsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTcwMzYsNiArMTc3MzIsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTcwNDUsNiArMTc3NDcsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE3MTU5LDEyICsxNzg2NCwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNzI1MSw5ICsxNzk1Niw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE3MjY5LDYgKzE3OTcxLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNzMwMSwyMTAgKzE4MDA2LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggNjRkZTlmMTlkYS4uYTgyZmRlN2ZhOCAxMDA3NTUKLS0tLSBhL2dhcy9jb25maWd1cmUKLSsrKyBiL2dhcy9jb25maWd1cmUKLUBAIC02ODEsOCArNjgxLDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc5OSw2ICs4MDIsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDg3LDYgKzE0OTEsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtY3B1PUNQVSAgICAgICAgICBkZWZhdWx0IGNwdSB2YXJpYW50IGlzIENQVSAoY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBBUkMpCi0gICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKLUBAIC01Mjc0LDggKzUyODAsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTMxNSw3ICs1MzIxLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjAwMSw4ICs2MDA3LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTYwNTEsNiArNjA1Nyw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjA2Nyw2ICs2MTQ3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MjM1LDcgKzYzMjAsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjM4OSw2ICs2NDc1LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjQwNCw5ICs2NTA1LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NDIyLDcgKzY2NzYsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NDQyLDExICs2Njk2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY0NjIsNyArNjcyMCw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NDgxLDYgKzY3MzksMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTY0OTIsMTIgKzY3NTQsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjUwOSw2ICs2NzY5LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjg0Myw4ICs3MTYxLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02ODgwLDYgKzcxOTgsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjkyMSw2ICs3MjQwLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY5MzIsNyArNzI2Myw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY5NTgsOCArNzI4OSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY5NjksOCArNzMwMCw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTcwMDcsNiArNzMzOCwyMSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTcwMjMsNiArNzM2OSw0MCBAQCBmaQotIAotIAotIAotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTcyMzQsNiArNzYxNCwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzc5Nyw2ICs4Mjk0LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTc5OTIsNyArODQ5MSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04MDgxLDcgKzg1ODEsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgzNzksOCArODg3OSw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODU0Niw2ICs5MDQ0LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODYwOCw3ICs5MTEyLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg2NjUsMTMgKzkxNjksMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODczMiw2ICs5MjQwLDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTA4Miw3ICs5NTk1LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTE4MSwxMiArOTY5NSwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05MjAwLDggKzk3MTQsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTIxOSw4ICs5NzMzLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkyNjYsOCArOTc4MCw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05Mzk3LDcgKzk5MTEsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTQxMCwyMiArOTkzMCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTQzNyw3ICs5OTY0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NDUwLDIyICs5OTgzLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTUxMCwyMCArMTAwNTAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NTg0LDcgKzEwMTY3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTU5Miw3ICsxMDE3NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk2MDgsNyArMTAxOTEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTYzMiwxMCArMTAyMTUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05NzE0LDIzICsxMDI5NywzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTgxNSw3ICsxMDQxMSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk4MzQsOSArMTA0MzAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA0MTIsOCArMTEwMDgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA0NDYsMTMgKzExMDQzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDU0NCw3ICsxMTE5OSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTM0MCw3ICsxMTk5NSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExMzQzICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTM4NCwxMCArMTIwMzksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTQ0Niw3ICsxMjEwMSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNDQ5ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTQ5MCwxMCArMTIxNDUsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTg5NiwxMyArMTY1NTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTkxNywxNCArMTY1NzksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU5NTcsMTIgKzE2NjIyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2MDE3LDggKzE2NjgyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNjAyOCwxMiArMTY2OTgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE2MDQ5LDcgKzE2NzIxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTYwODUsNiArMTY3NTYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE2ODU4LDcgKzE3NTMwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjk2MSwxOSArMTc2MzQsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTcwMDMsNiArMTc2OTksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTcwMTIsNiArMTc3MTQsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE3MTI2LDEyICsxNzgzMSwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNzIxOCw5ICsxNzkyMyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE3MjM2LDYgKzE3OTM4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNzI2OCwyMTAgKzE3OTczLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IGFiMzJiYWIyYjYuLjUxMTljNjAxOWYgMTAwNzU1Ci0tLS0gYS9ncHJvZi9jb25maWd1cmUKLSsrKyBiL2dwcm9mL2NvbmZpZ3VyZQotQEAgLTY2Miw4ICs2NjIsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzgwLDYgKzc4Myw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0NDIsNiArMTQ0Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTUxMjQsOCArNTEzMCw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01MTY1LDcgKzUxNzEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01ODUxLDggKzU4NTcsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTkwMSw2ICs1OTA3LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC01OTE3LDYgKzU5OTcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYwODUsNyArNjE3MCw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02MTYyLDExICs2MjQ4LDYgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgIDs7Ci0gCi0tbGludXgtdWNsaWJjKikKLS0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0tICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAotLSAgOzsKLS0KLSBuZXRic2QqKQotICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi1AQCAtNjI0NCw2ICs2MzI1LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjI1NywxMSArNjM1MywxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjI3Niw4ICs2NTI1LDggQEAgZG8KLSAgIElGUz0kYXNfc2F2ZV9JRlMKLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjI5NywxMSArNjU0NiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02MzM2LDYgKzY1ODksMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTYzNDcsMTYgKzY2MDQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC02Njk4LDggKzcwMTEsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY3MzUsNiArNzA0OCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC02Nzc2LDYgKzcwOTAsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNjc4Nyw3ICs3MTEzLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNjgxMyw4ICs3MTM5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjgyNCw4ICs3MTUwLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjg2Miw2ICs3MTg4LDE4IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjg3OCw2ICs3MjE2LDQzIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzA4OSw2ICs3NDY0LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NjUyLDYgKzgxNDQsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzg0Nyw3ICs4MzQxLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTc5MzYsNyArODQzMSw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODIzNCw4ICs4NzI5LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04NDAxLDYgKzg4OTQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDYzLDcgKzg5NjIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODUyMCwxMyArOTAxOSwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NTg3LDYgKzkwOTAsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04OTM3LDcgKzk0NDUsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05MDM2LDEyICs5NTQ1LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTkwNTUsOCArOTU2NCw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05MDc0LDggKzk1ODMsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTEyMSw4ICs5NjMwLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkyNTIsNyArOTc2MSwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MjY1LDIyICs5NzgwLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MjkyLDcgKzk4MTQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkzMDUsMjIgKzk4MzMsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MzY1LDIwICs5OTAwLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTQzOSw3ICsxMDAxNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk0NDcsNyArMTAwMjUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05NDYzLDcgKzEwMDQxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTk0ODcsMTAgKzEwMDY1LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTU2OSwyMyArMTAxNDcsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk2NzAsNyArMTAyNjEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05Njg5LDkgKzEwMjgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwMjY3LDggKzEwODU4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwMzAxLDEzICsxMDg5Myw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTAzOTksNyArMTEwNDksNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTEyMzksMTAgKzExODg5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEzNDUsMTAgKzExOTk1LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTMzMTQsMTMgKzEzOTY0LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMzMzUsMTQgKzEzOTkyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzMzc1LDEyICsxNDAzNSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzQzNSw4ICsxNDA5NSwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTM0NDYsMTIgKzE0MTExLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMzQ2Nyw3ICsxNDEzNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzNTAzLDYgKzE0MTY5LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNDI2OCw3ICsxNDkzNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQzNzEsMTkgKzE1MDM5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE0NDEzLDYgKzE1MTA0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE0NDIyLDYgKzE1MTE5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNDUzNiwxMiArMTUyMzYsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTQ2MjgsOSArMTUzMjgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNDY0Niw2ICsxNTM0Myw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTQ2NzgsMjEwICsxNTM3OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCBiYzA5ZTdlZjgxLi40M2MzOTFjMmIzIDEwMDc1NQotLS0tIGEvbGQvY29uZmlndXJlCi0rKysgYi9sZC9jb25maWd1cmUKLUBAIC02ODcsOCArNjg3LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTgxNSw2ICs4MTgsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNTA3LDYgKzE1MTEsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtbGliLXBhdGg9ZGlyMTpkaXIyLi4uICBzZXQgZGVmYXVsdCBMSUJfUEFUSAotICAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgdXNyL2xpYiBldCBhbCB3aXRoaW4gRElSLgotIAotQEAgLTU5NTksOCArNTk2NSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC02MDAwLDcgKzYwMDYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02Njg2LDggKzY2OTIsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjczNiw2ICs2NzQyLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NzUyLDYgKzY4MzIsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTY5MjAsNyArNzAwNSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC03MDc0LDYgKzcxNjAsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC03MDg5LDkgKzcxOTAsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTcxMDcsNyArNzM2MSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTcxMjcsMTEgKzczODEsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNzE0Nyw3ICs3NDA1LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTcxNjYsNiArNzQyNCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNzE3NywxMiArNzQzOSwxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSAKLSAKLSAKLUBAIC03MTkyLDYgKzc0NTQsNjIgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLUBAIC03NTI4LDggKzc4NDYsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTc1NjUsNiArNzg4Myw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03NjA2LDYgKzc5MjUsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzYxNyw3ICs3OTQ4LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzY0Myw4ICs3OTc0LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzY1NCw4ICs3OTg1LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzY5Miw2ICs4MDIzLDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzcwOCw2ICs4MDUyLDQyIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzkxOSw2ICs4Mjk5LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC04NDgyLDYgKzg5NzksOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtODU1MCw2ICs5MDQ5LDE2IEBAIGRvbmUKLSAKLSAKLSAKLStmdW5jX3N0cmlwbmFtZV9jbmYgKCkKLSt7Ci0rICBjYXNlICR7Mn0gaW4KLSsgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgotKwotKwotKwotIAotIAotICMgU2V0IG9wdGlvbnMKLUBAIC04Njc4LDcgKzkxODcsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODc2Nyw3ICs5Mjc3LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC05MDY1LDggKzk1NzUsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTkyMzIsNiArOTc0MCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTkyOTQsNyArOTgwOCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC05MzUxLDEzICs5ODY1LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTk0MTgsNiArOTkzNiwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTk3NjgsNyArMTAyOTEsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05ODY3LDEyICsxMDM5MSwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05ODg2LDggKzEwNDEwLDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTk5MDUsOCArMTA0MjksOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTk1Miw4ICsxMDQ3Niw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC0xMDA4Myw3ICsxMDYwNywxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMDA5NiwyMiArMTA2MjYsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTEwMTIzLDcgKzEwNjYwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMDEzNiwyMiArMTA2NzksMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC0xMDE5NSwyMSArMTA3NDUsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLS0gICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtMTAyNzAsNyArMTA4NjMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC0xMDI3OCw3ICsxMDg3MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTEwMjk0LDcgKzEwODg3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTEwMzE4LDEwICsxMDkxMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTEwNDAwLDIzICsxMDk5MywzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtMTA1MDEsNyArMTExMDcsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC0xMDUyMCw5ICsxMTEyNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMTA5OCw4ICsxMTcwNCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMTEzMiwxMyArMTE3MzksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTExMjMwLDcgKzExODk1LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTEyMDI2LDcgKzEyNjkxLDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTIwMjkgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTEyMDcwLDEwICsxMjczNSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyMTMyLDcgKzEyNzk3LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTIxMzUgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTEyMTc2LDEwICsxMjg0MSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyNTcxLDYgKzEzMjM2LDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgotIAotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9JENDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBsdF9zYXZlX0xEPSRMRAotICAgbHRfc2F2ZV9HQ0M9JEdDQwotICAgR0NDPSRHWFgKLUBAIC0xMjU4OCw2ICsxMzI1NCw3IEBAICRSTSAtciBjb25mdGVzdCoKLSAgIGZpCi0gICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAotICAgQ0M9JHtDWFgtImMrKyJ9Ci0rICBDRkxBR1M9JENYWEZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIGNvbXBpbGVyX0NYWD0kQ0MKLSAgIGZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbwotQEAgLTEyODcwLDcgKzEzNTM3LDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCi0gICAgICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm9rJwotICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKLSAgICAgICAgICAgIyBleGVjdXRhYmxlLgotLSAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtMTI4ODMsMjIgKzEzNTU2LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCi0rZmkKLSAKLSAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCi1AQCAtMTI5MTEsNyArMTM1OTEsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgIGVsc2UKLSAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMjkyNCwyMiArMTM2MTAsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKLStmaQotIAotIAkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTEyOTgyLDI5ICsxMzY3NSw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgIDs7Ci0gCi0gICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0tICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLS0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0tICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKLS0gICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KLS0gICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotLQotLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotLSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLS0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLS0gICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0tCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGVsc2UKLS0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZml+Ci0tICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0rCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KLSsJLGNsKiB8IG5vLGNsKikKLSsJICAjIE5hdGl2ZSBNU1ZDCi0rCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyAnCi0rCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCi0rCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD15ZXMKLSsJICBmaWxlX2xpc3Rfc3BlY19DWFg9J0AnCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJICBsaWJleHQ9bGliCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGVsc2UKLSsJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICAgIGxpbmtuYW1lcz0nCi0rCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCBDWFgpPSd0cnVlJwotKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgotKwkgIG9sZF9wb3N0aW5zdGFsbF9jbWRzX0NYWD0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCSAgcG9zdGxpbmtfY21kc19DWFg9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgICAqKQotKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJCTs7Ci0rCSAgICBlc2FjfgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KLSsJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgICAgZmknCi0rCSAgOzsKLSsJKikKLSsJICAjIGcrKwotKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLSsJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAotKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KLSsJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKLSsKLSsJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0rCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0rCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGVsc2UKLSsJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICBlbHNlCi0rCSAgICBsZF9zaGxpYnNfQ1hYPW5vCi0rCSAgZmkKLSsJICA7OwotKwllc2FjCi0rCTs7Ci0gICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAKLSAKLUBAIC0xMzExMCw3ICsxMzg0OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICopCi0gICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKyAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwotQEAgLTEzMTgxLDEwICsxMzkyMCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgaWE2NCopCi0tCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgICopCi0tCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgZXNhYwotIAkgICAgICBmaQotQEAgLTEzMjI1LDkgKzEzOTY0LDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgICopCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJICAgICAgZWxzZQotLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotIAkgICAgICBmaQotIAkgICAgZmkKLSAJICAgIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPXllcwotQEAgLTEzMjk3LDIwICsxNDAzNiwyMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgcHJlbGlua19jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJwotKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKLSAJICAgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0tCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgotKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+Ci0gCQkkUkFOTElCICRvbGRsaWInCi0gCSAgICAgIGFyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotIAkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotIAkgICAgICA7OwotIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKLSAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi1AQCAtMTM1MDUsNyArMTQyNDQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgICAqKQotLQkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgIGVzYWMKLSAKLUBAIC0xMzU1MSw3ICsxNDI5MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAgIHNvbGFyaXMqKQotICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICAgICAgQ0MqKQotKyAgICAgICAgICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwotIAkgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgLXpkZWZzJwotQEAgLTEzNTkyLDkgKzE0MzMxLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAJICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCi0gCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0tCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gCi0gCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotQEAgLTEzNzI5LDYgKzE0NDY4LDEzIEBAIHByaXZhdGU6Ci0gfTsKLSBfTFRfRU9GCi0gCi0rCi0rX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUwotK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKLSsqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKLSsqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7Ci0rZXNhYwotKwotIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgIGFjX3N0YXR1cz0kPwotQEAgLTEzNzQyLDcgKzE0NDg4LDcgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCi0gCi0gICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0tICAgIGNhc2UgJHAgaW4KLSsgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgotIAotICAgICAtTCogfCAtUiogfCAtbCopCi0gICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCi1AQCAtMTM3NTEsMTMgKzE0NDk3LDIyIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgotIAkgcHJldj0kcAotIAkgY29udGludWUKLS0gICAgICAgZWxzZQotLQkgcHJldj0KLSAgICAgICAgZmkKLSAKLSsgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KLSsgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCi0rICAgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIGVzYWMKLSsgICAgICAgZmkKLSsgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0tCSBjYXNlICRwIGluCi0tCSAtTCogfCAtUiopCi0rCSBjYXNlICR7cHJldn0gaW4KLSsJIC1MIHwgLVIpCi0gCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQotIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKLSAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi1AQCAtMTM3NzcsOCArMTQ1MzIsMTAgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gCSAgIHBvc3RkZXBzX0NYWD0iJHtwb3N0ZGVwc19DWFh9ICR7cHJldn0ke3B9IgotIAkgZmkKLSAgICAgICAgZmkKLSsgICAgICAgcHJldj0KLSAgICAgICAgOzsKLSAKLSsgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCi0gICAgICouJG9iamV4dCkKLSAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCi0gICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgotQEAgLTEzODE0LDYgKzE0NTcxLDcgQEAgZWxzZQotIGZpCi0gCi0gJFJNIC1mIGNvbmZlc3QuJG9iamV4dAotK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKLSAKLSAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgotIGNhc2UgJGhvc3Rfb3MgaW4KLUBAIC0xMzg0OSw3ICsxNDYwNyw3IEBAIGxpbnV4KikKLSAKLSBzb2xhcmlzKikKLSAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICBDQyopCi0rICBDQyogfCBzdW5DQyopCi0gICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotQEAgLTEzOTE0LDggKzE0NjcyLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCi0gICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotQEAgLTE0MDIwLDYgKzE0Nzc2LDExIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCSAgOzsKLSAJZXNhYwotIAk7OwotKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCi0rCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSsJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSsJbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctRERMTF9FWFBPUlQnCi0rCTs7Ci0gICAgICAgZGd1eCopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gCSAgZWMrKyopCi1AQCAtMTQxNzIsNyArMTQ5MzMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAk7OwotICAgICAgIHNvbGFyaXMqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotLQkgIENDKikKLSsJICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gCSAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1LUElDJwotIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctQnN0YXRpYycKLUBAIC0xNDIzNywxMCArMTQ5OTgsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9Ci0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC0xNDI5OCw2ICsxNTA2Niw4IEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtMTQ0NzUsNiArMTUyNDUsNyBAQCBmaQotICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcy4uLiAiID4mNjsgfQotIAotICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIGFpeFs0LTldKikKLSAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi1AQCAtMTQ0ODksMTUgKzE1MjYwLDIwIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCi0gICAgIDs7Ci0gICBwdzMyKikKLSAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9IiRsdGRsbF9jbWRzIgotLSAgOzsKLSsgICAgOzsKLSAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0tICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLzsvXi4qWyBdX19ubV9fL3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgIGNsKikgOzsKLSsgICAgKikKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICAqKQotICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgOzsKLSAgIGVzYWMKLS0gIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKLSAKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxkX3NobGlic19DWFgiID4mNQotICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci1AQCAtMTQ3NjAsOCArMTU1MzYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTQ3OTMsMTMgKzE1NTcwLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xNDg5MCw3ICsxNTcyNSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xNTM0OSw2ICsxNjE4NCw3IEBAIGZpCi0gICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKLSAKLSAgIENDPSRsdF9zYXZlX0NDCi0rICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gICBMRENYWD0kTEQKLSAgIExEPSRsdF9zYXZlX0xECi0gICBHQ0M9JGx0X3NhdmVfR0NDCi1AQCAtMTg0NDQsMTMgKzE5MjgwLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTg0NjUsMTQgKzE5MzA4LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4NTA1LDEyICsxOTM1MSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODU0OSw4ICsxOTM5NSw4IEBAIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlCi0gY29tcGlsZXJfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEdDQ19DWFg9J2AkRUNITyAiJEdDQ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFg9J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4NTc3LDEyICsxOTQyMywxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFgiIHwgJFNFRCAiJGRlbGF5XwotIGhhcmRjb2RlX2F1dG9tYXRpY19DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGhfQ1hYPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlic19DWFg9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoX0NYWD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcHJlbGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kc19DWFg9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlY19DWFg9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaGFyZGNvZGVfYWN0aW9uX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTg2MjAsOCArMTk0NjYsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE4NjMxLDEyICsxOTQ4MiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTg2NTIsNyArMTk1MDUsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xODY3NCw4ICsxOTUyNiw4IEBAIExEX0NYWCBcCi0gcmVsb2FkX2ZsYWdfQ1hYIFwKLSBjb21waWxlcl9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCBcCi0tbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCBcCi0rbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIFwKLSBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYIFwKLUBAIC0xODY4Nyw3ICsxOTUzOSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnX0NYWCBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFggXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRfQ1hYIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWCBcCi0tZml4X3NyY2ZpbGVfcGF0aF9DWFggXAotIGV4Y2x1ZGVfZXhwc3ltc19DWFggXAotIGluY2x1ZGVfZXhwc3ltc19DWFggXAotIGZpbGVfbGlzdF9zcGVjX0NYWCBcCi1AQCAtMTg3MjEsNiArMTk1NzIsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE4NzM1LDcgKzE5NTg3LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAotIG1vZHVsZV9jbWRzX0NYWCBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzX0NYWCBcCi0gZXhwb3J0X3N5bWJvbHNfY21kc19DWFggXAotLXByZWxpbmtfY21kc19DWFg7IGRvCi0rcHJlbGlua19jbWRzX0NYWCBcCi0rcG9zdGxpbmtfY21kc19DWFg7IGRvCi0gICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgotICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCi1AQCAtMTk1MzksNyArMjAzOTIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE5NjQyLDE5ICsyMDQ5Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xOTY4NCw2ICsyMDU2MSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xOTY5Myw2ICsyMDU3Niw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTk4MDcsMTIgKzIwNjkzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE5ODk5LDkgKzIwNzg1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTk5MTcsNiArMjA4MDAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE5OTYzLDIxMCArMjA4NDksMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotQEAgLTIwMTk0LDEyICsyMTAzOSwxMiBAQCB3aXRoX2djYz0kR0NDX0NYWAotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWAotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgKLSAKLUBAIC0yMDI4Niw5ICsyMTEzMSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGhfQ1hYCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlic19DWFgKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aF9DWFgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgKLSAKLUBAIC0yMDMwNCw2ICsyMTE0Niw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zX0NYWAotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHNfQ1hYCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHNfQ1hYCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjX0NYWAotIAotZGlmZiAtLWdpdCBhL2xpYnRvb2wubTQgYi9saWJ0b29sLm00Ci1pbmRleCA0MzQ1MzAwNTlmLi5lNDVmZGM2OTk4IDEwMDY0NAotLS0tIGEvbGlidG9vbC5tNAotKysrIGIvbGlidG9vbC5tNAotQEAgLTEsNyArMSw4IEBACi0gIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCi1AQCAtMTAsNyArMTEsOCBAQAotIAotIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMzcsNyArMzksNyBAQCBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAotICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gXSkKLSAKLS0jIHNlcmlhbCA1NiBMVF9JTklUCi0rIyBzZXJpYWwgNTcgTFRfSU5JVAotIAotIAotICMgTFRfUFJFUkVRKFZFUlNJT04pCi1AQCAtOTIsNyArOTQsOCBAQCBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIEFDX1NVQlNUKExJQlRPT0wpZG5sCi0gCi0gX0xUX1NFVFVQCi1AQCAtMTY2LDEwICsxNjksMTMgQEAgX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAotIGRubAotIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAotIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCi0gCi0gX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwotICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKLUBAIC0xOTksNyArMjA1LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAotIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCi0gY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCi0gCi0tQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKLSAKLUBAIC03NDYsMTUgKzc1MiwxMiBAQCBfTFRfRU9GCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotIAotLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCi0rICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0gCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSBdLAotQEAgLTk4MCw2ICs5ODMsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC0xMDY5LDMwICsxMDc0LDQxIEBAIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCi0gICBmaQotIF0pCi0gCi0tIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKLSAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKLSAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKLSAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KLSAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCi0gIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KLSsjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KLSsjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCi0gbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKLSBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLS1BQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW0FDX0xBTkdfUFJPR1JBTV0pXSxbCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpXSxbXSkKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLStpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKLSsgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfV0nCi0rICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KLSsgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaV0sW10pCi0rICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCi0rICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsgIF0pCi0rICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKLStmaQotIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotIAotIAotQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCi0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQotIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAotIAotIAotKyMgX0xUX1dJVEhfU1lTUk9PVAotKyMgLS0tLS0tLS0tLS0tLS0tLQotK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKLStbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCi0rQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCi0rWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCi0rW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCi0rCi0rZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQotK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKLSsgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQotKyAgIDs7Ci0rZXNhYwotKwotKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCi0rX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCi0rW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQotKwotICMgX0xUX0VOQUJMRV9MT0NLCi0gIyAtLS0tLS0tLS0tLS0tLS0KLSBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKLUBAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIF0pIyBfTFRfRU5BQkxFX0xPQ0sKLSAKLSAKLSsjIF9MVF9QUk9HX0FSCi0rIyAtLS0tLS0tLS0tLQotK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCi0rW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLStfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLStfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQotKwotK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKLSsgIFtsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCi0rICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJwotKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rICAgICBdKQotKyAgXSkKLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLStfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKLSsgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQotK10pIyBfTFRfUFJPR19BUgotKwotKwotICMgX0xUX0NNRF9PTERfQVJDSElWRQotICMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKLS1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCi0rW19MVF9QUk9HX0FSCi0gCi0gQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCi0gdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06Ci1AQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgotK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKLSAgIDs7Ci0gZXNhYwotIF0pCi0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCi0gICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCi0gX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKLS0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKLSsgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAotKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAotKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLSBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAotIAotIAotQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci0gZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCi0gZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCi0gCi0rIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCi0rIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcwotK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCi0rW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKLStBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCi0rbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCi0rW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotK10pCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCi0rICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKLStdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKLSsKLSsKLSsjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAotK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKLStbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKLSsgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0Kl0pCi0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCi0rXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsKLSAKLSAjIExUX0xJQl9NCi0gIyAtLS0tLS0tLQotQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCi0gCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAJZmkKLUBAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQotICAgQUNfTVNHX1JFU1VMVChvaykKLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAotICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCi1AQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAotICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKLSAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKLStfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAotKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQotIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUwotIAotIAotQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQotIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLSBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Ci0gCi0tQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCSAgOzsKLSAJZXNhYwotIAk7OwotKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCi0rCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSsJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSsJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotKwk7OwotICAgICAgIGRndXgqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotIAkgIGVjKysqKQotQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCTs7Ci0gICAgICAgc29sYXJpcyopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tCSAgQ0MqKQotKwkgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0gCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJwotKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKLUBAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKLSAgICAgOzsKLSBlc2FjCi0tQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi0tX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0tCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSsKLStBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAotKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCi0rICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQotIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKLSAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCi0gCi0rX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0rCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKLSBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAotIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKLSBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLUBAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIGFpeFtbNC05XV0qKQotICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAgIDs7Ci0gICBwdzMyKikKLSAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotLSAgOzsKLSsgICAgOzsKLSAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0tICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgIGNsKikgOzsKLSsgICAgKikKLSsgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICAqKQotICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgOzsKLSAgIGVzYWMKLS0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQotIF0sIFsKLSAgIHJ1bnBhdGhfdmFyPQotICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQotQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKLSAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0tICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0tCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotICAgICAgIGVsc2UKLUBAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLUBAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0gICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtpbnQgZm9vKHZvaWQpIHt9XSldLAotLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLSAgICAgICAgKQotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2xdLAotKwkgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbF0sCi0rCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgQUNfTElOS19JRkVMU0UoCi0rCSAgICAgW0FDX0xBTkdfU09VUkNFKAotKwkgICAgICAgIFtBQ19MQU5HX0NBU0UoW0NdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKLSsJCQkgICAgICBbQysrXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCi0rCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWwotKyAgICAgIHN1YnJvdXRpbmUgZm9vCi0rICAgICAgZW5kXV0sCi0rCQkJICAgICAgW0ZvcnRyYW5dLCBbWwotKyAgICAgIHN1YnJvdXRpbmUgZm9vCi0rICAgICAgZW5kXV0pXSldLAotKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKLSsJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vXSkKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiXSkKLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtNTAyMCw3ICs1MzUwLDcgQEAgX0xUX0VPRgotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtNTAzOSw5ICs1MzY5LDkgQEAgX0xUX0VPRgotICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtNTMxMyw4ICs1NjQzLDYgQEAgX0xUX1RBR0RFQ0woW10sIFtpbmhlcml0X3JwYXRoXSwgWzBdLAotICAgICB0byBydW50aW1lIHBhdGggbGlzdF0pCi0gX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAotICAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKLS1fTFRfVEFHREVDTChbXSwgW2ZpeF9zcmNmaWxlX3BhdGhdLCBbMV0sCi0tICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQotIF9MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAotICAgICBbU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkXSkKLSBfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCi1AQCAtNTMyNSw2ICs1NjUzLDggQEAgX0xUX1RBR0RFQ0woW10sIFtpbmNsdWRlX2V4cHN5bXNdLCBbMV0sCi0gICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQotIF9MVF9UQUdERUNMKFtdLCBbcHJlbGlua19jbWRzXSwgWzJdLAotICAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQotK19MVF9UQUdERUNMKFtdLCBbcG9zdGxpbmtfY21kc10sIFsyXSwKLSsgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXNdKQotIF9MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCi0gICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXNdKQotIGRubCBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAotQEAgLTU0MjYsNiArNTc1Niw3IEBAIENDPSIkbHRfc2F2ZV9DQyIKLSBtNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCi0gW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKLSBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgotICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKLSAgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCi1AQCAtNTQ4Nyw2ICs1ODE4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAKLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSRDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgbHRfc2F2ZV9MRD0kTEQKLSAgIGx0X3NhdmVfR0NDPSRHQ0MKLSAgIEdDQz0kR1hYCi1AQCAtNTUwNCw2ICs1ODM2LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgIGZpCi0gICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAotICAgQ0M9JHtDWFgtImMrKyJ9Ci0rICBDRkxBR1M9JENYWEZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC01NjY3LDcgKzYwMDAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5Ci0gICAgICAgICAgICMgZXhlY3V0YWJsZS4KLS0gICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCi0gICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTU2NzksNyArNjAxMiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgIGVsc2UKLSAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi0gCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi1AQCAtNTcyMSwyOSArNjA1NCw3NSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgOzsKLSAKLSAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0tICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0tICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0tICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0tICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLS0KLS0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLS0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0tICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0tICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBlbHNlCi0tCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGZpfgotLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICBlbHNlCi0tICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLS0gICAgICAgIGZpCi0tICAgICAgICA7OwotKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCi0rCSxjbCogfCBubyxjbCopCi0rCSAgIyBOYXRpdmUgTVNWQwotKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSsJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCi0rCSAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJwotKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCSAgbGliZXh0PWxpYgotKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwkgIHNocmV4dF9jbWRzPSIuZGxsIgotKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBlbHNlCi0rCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZml+Ci0rCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgICBsaW5rbmFtZXM9JwotKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgotKwkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCSAgX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgICAqKQotKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJCTs7Ci0rCSAgICBlc2FjfgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KLSsJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgICAgZmknCi0rCSAgOzsKLSsJKikKLSsJICAjIGcrKwotKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0rCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0rCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0rCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwotKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSsJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSsJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0rCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZWxzZQotKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGZpfgotKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgIGVsc2UKLSsJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSsJICBmaQotKwkgIDs7Ci0rCWVzYWMKLSsJOzsKLSAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCi0gCTs7Ci1AQCAtNTgxOCw3ICs2MTk3LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgICA7OwotICAgICAgICAgICAqKQotICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0tICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLSAgICAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLUBAIC01ODg5LDEwICs2MjY4LDEwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgIGlhNjQqKQotLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICAqKQotLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgIGVzYWMKLSAJICAgICAgZmkKLUBAIC01OTMzLDkgKzYzMTIsOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICAqKQotIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSAgICAgIGVsc2UKLS0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0rCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSAJICAgICAgZmkKLSAJICAgIGZpCi0gCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLUBAIC02MDA1LDIwICs2Mzg0LDIwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KLS0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKLSsJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCi0gCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KLSsJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgotIAkJJFJBTkxJQiAkb2xkbGliJwotIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAJICAgICAgOzsKLSAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCi0gCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotQEAgLTYyMTMsNyArNjU5Miw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgICAgKikKLS0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICBlc2FjCi0gCi1AQCAtNjI1OSw3ICs2NjM4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAKLSAgICAgICBzb2xhcmlzKikKLSAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgICAgIENDKikKLSsgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQotIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwotICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcwotIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwotQEAgLTYzMDAsOSArNjY3OSw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCi0gCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0tCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSsJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gCi0gCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotQEAgLTY0MzEsNiArNjgxMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKLSAKLSAgIENDPSRsdF9zYXZlX0NDCi0rICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gICBMRENYWD0kTEQKLSAgIExEPSRsdF9zYXZlX0xECi0gICBHQ0M9JGx0X3NhdmVfR0NDCi1AQCAtNjQ0NSw2ICs2ODI1LDI5IEBAIEFDX0xBTkdfUE9QCi0gXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKLSAKLSAKLSsjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGZ1bmNfc3RyaXBuYW1lX2NuZiBwcmVmaXggc3VmZml4IG5hbWUKLSsjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0rIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0rIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotKyMKLSsjIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSAobm9uLVhTSSkgdmVyc2lvbiBvZiBmdW5jX3N0cmlwbmFtZSwKLSsjIGV4Y2VwdCB0aGlzIG9uZSBjYW4gYmUgdXNlZCBieSBtNCBjb2RlIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGJ5IGNvbmZpZ3VyZSwKLSsjIHJhdGhlciB0aGFuIHRoZSBsaWJ0b29sIHNjcmlwdC4KLSttNF9kZWZ1bihbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0sW2RubAotK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pCi0rQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKQotK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQotK3sKLSsgIGNhc2UgJHsyfSBpbgotKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLSsgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWVfY25mCi0rXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKLSsKLSAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQotQEAgLTY0NTMsNiArNjg1Niw3IEBAIEFDX0xBTkdfUE9QCi0gIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCi0gbTRfZGVmdW4oW19MVF9TWVNfSElEREVOX0xJQkRFUFNdLAotIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLStBQ19SRVFVSVJFKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSlkbmwKLSAjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgotIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KLSBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQotQEAgLTY1MDMsNiArNjkwNywxMyBAQCBwdWJsaWMgY2xhc3MgZm9vIHsKLSB9OwotIF9MVF9FT0YKLSBdKQotKwotK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLStjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCi0rKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7Ci0rKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OwotK2VzYWMKLSsKLSBkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5Ci0gZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KLSBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotQEAgLTY1MTQsNyArNjkyNSw3IEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCi0gCi0gICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0tICAgIGNhc2UgJHAgaW4KLSsgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgotIAotICAgICAtTCogfCAtUiogfCAtbCopCi0gICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCi1AQCAtNjUyMywxMyArNjkzNCwyMiBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgotIAkgcHJldj0kcAotIAkgY29udGludWUKLS0gICAgICAgZWxzZQotLQkgcHJldj0KLSAgICAgICAgZmkKLSAKLSsgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KLSsgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCi0rICAgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIGVzYWMKLSsgICAgICAgZmkKLSsgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0tCSBjYXNlICRwIGluCi0tCSAtTCogfCAtUiopCi0rCSBjYXNlICR7cHJldn0gaW4KLSsJIC1MIHwgLVIpCi0gCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQotIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKLSAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi1AQCAtNjU0OSw4ICs2OTY5LDEwIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgotIAkgZmkKLSAgICAgICAgZmkKLSsgICAgICAgcHJldj0KLSAgICAgICAgOzsKLSAKLSsgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCi0gICAgICouJG9iamV4dCkKLSAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCi0gICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgotQEAgLTY1ODYsNiArNzAwOCw3IEBAIGVsc2UKLSBmaQotIAotICRSTSAtZiBjb25mZXN0LiRvYmpleHQKLStDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCi0gCi0gIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KLSBtNF9pZihbJDFdLCBbQ1hYXSwKLUBAIC02NjIyLDcgKzcwNDUsNyBAQCBsaW51eCopCi0gCi0gc29sYXJpcyopCi0gICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgQ0MqKQotKyAgQ0MqIHwgc3VuQ0MqKQotICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCi0gICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLUBAIC02NzM1LDcgKzcxNTgsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSIkQ0MiCi0gICBsdF9zYXZlX0dDQz0kR0NDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBDQz0ke0Y3Ny0iZjc3In0KLSsgIENGTEFHUz0kRkZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC02Nzg5LDYgKzcyMTQsNyBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KLSAKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLSAgIENDPSIkbHRfc2F2ZV9DQyIKLSsgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCi0gCi0gQUNfTEFOR19QT1AKLUBAIC02ODY1LDcgKzcyOTEsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9IiRDQyIKLSAgIGx0X3NhdmVfR0NDPSRHQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIENDPSR7RkMtImY5NSJ9Ci0rICBDRkxBR1M9JEZDRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKLSAKLUBAIC02OTIxLDcgKzczNDksOCBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgotICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCi0gCi0gICBHQ0M9JGx0X3NhdmVfR0NDCi0tICBDQz0iJGx0X3NhdmVfQ0MiCi0rICBDQz0kbHRfc2F2ZV9DQwotKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKLSAKLSBBQ19MQU5HX1BPUAotQEAgLTY5NTgsMTAgKzczODcsMTIgQEAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCi0gX0xUX0xJTktFUl9CT0lMRVJQTEFURQotIAotICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0tbHRfc2F2ZV9DQz0iJENDIgotK2x0X3NhdmVfQ0M9JENDCi0rbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotIGx0X3NhdmVfR0NDPSRHQ0MKLSBHQ0M9eWVzCi0gQ0M9JHtHQ0otImdjaiJ9Ci0rQ0ZMQUdTPSRHQ0pGTEFHUwotIGNvbXBpbGVyPSRDQwotIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKLUBAIC02OTkyLDcgKzc0MjMsOCBAQCBmaQotIEFDX0xBTkdfUkVTVE9SRQotIAotIEdDQz0kbHRfc2F2ZV9HQ0MKLS1DQz0iJGx0X3NhdmVfQ0MiCi0rQ0M9JGx0X3NhdmVfQ0MKLStDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKLSAKLSAKLUBAIC03MDI3LDkgKzc0NTksMTEgQEAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQotIAotICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gbHRfc2F2ZV9DQz0iJENDIgotK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSBsdF9zYXZlX0dDQz0kR0NDCi0gR0NDPQotIENDPSR7UkMtIndpbmRyZXMifQotK0NGTEFHUz0KLSBjb21waWxlcj0kQ0MKLSBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotQEAgLTcwNDIsNyArNzQ3Niw4IEBAIGZpCi0gCi0gR0NDPSRsdF9zYXZlX0dDQwotIEFDX0xBTkdfUkVTVE9SRQotLUNDPSIkbHRfc2F2ZV9DQyIKLStDQz0kbHRfc2F2ZV9DQwotK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCi0gCi0gCi1AQCAtNzEwMSw2ICs3NTM2LDE1IEBAIF9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW0FuIG9iamVjdCBzeW1ib2wgZHVtcGVyXSkKLSBBQ19TVUJTVChbT0JKRFVNUF0pCi0gXSkKLSAKLSsjIF9MVF9ERUNMX0RMTFRPT0wKLSsjIC0tLS0tLS0tLS0tLS0tLS0KLSsjIEVuc3VyZSBETExUT09MIHZhcmlhYmxlIGlzIHNldC4KLSttNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCi0rW0FDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKLStBQ19TVUJTVChbRExMVE9PTF0pCi0rXSkKLSAKLSAjIF9MVF9ERUNMX1NFRAotICMgLS0tLS0tLS0tLS0tCi1AQCAtNzE5NCw4ICs3NjM4LDggQEAgbTRfZGVmdW4oW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10sCi0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC03MjM0LDIwNiArNzY3OCwxNjIgQEAgX0xUX0RFQ0woW05MMlNQXSwgW2x0X05MMlNQXSwgWzFdLCBbdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlc10pZG5sCi0gXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUwotIAotIAotLSMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEJvdXJuZSBhbmQgWFNJIGNvbXBhdGlibGUgdmFyaWFudHMgb2Ygc29tZSB1c2VmdWwgc2hlbGwgZnVuY3Rpb25zLgotLW00X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAotLVtjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCi0rIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgotK200X2RlZnVuKFtfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFXSwKLStbZG5sIHsKLStzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKLSskMSAoKVwKLSt7XAotK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQotK30gIyBFeHRlbmRlZC1zaGVsbCAkMSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK10pCi0gCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0gCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLSsjIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKLSsjIGVxdWl2YWxlbnQgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRob3NlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuLgotK200X2RlZnVuKFtfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TXSwKLStbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSsgICAgZXNhY10pCi0rCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Jhc2VuYW1lXSwgW2RubAotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKLSsKLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWVdLCBbZG5sCi0rICAgIGNhc2UgJHsxfSBpbgotKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0rICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotKyAgICBlc2FjCi0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQotIAotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAotKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0rICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQotIAotLWRubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCi0tZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKLS1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCi0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XSkKLSAKLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X3Nob3J0X29wdF0sIFtkbmwKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCi0gCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCi0rICAgIGNhc2UgJHsxfSBpbgotKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0rICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0rICAgIGVzYWNdKQotIAotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQotIAotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FyaXRoXSwgWyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKV0pCi0gCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKLStmaQotIAotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRbQF0iYAotLX0KLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF0sIFsgICAgZXZhbCAiJHsxfSs9XFwkezJ9Il0pCi0gCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF9xdW90ZWRdLCBbZG5sCi0rICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCi0rZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCi0rICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXSkKLSAKLS1fTFRfRU9GCi0tZXNhYwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSAKLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGVdKQotK2ZpCi0rXSkKLSAKLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJFsxXSs9XCRbMl0iCi0tfQotLV9MVF9FT0YKLSsjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgRGV0ZXJtaW5lIHdoaWNoIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCBieQotKyMgZnVuY190b19ob3N0X2ZpbGUgKGFuZCwgaW1wbGljaXRseSwgYnkgZnVuY190b19ob3N0X3BhdGgpLiAgVGhlc2UgYXJlIG5lZWRlZAotKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgotK200X2RlZnVuKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10sCi0rW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKLStBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAotK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSkKLStBQ19DQUNIRV9WQUwobHRfY3ZfdG9faG9zdF9maWxlX2NtZCwKLStbY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0gICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgotLX0KLS0KLS1fTFRfRU9GCi0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0gICAgIDs7Ci0tICBlc2FjCi0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rXSkKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQotK19MVF9ERUNMKFt0b19ob3N0X2ZpbGVfY21kXSwgW2x0X2N2X3RvX2hvc3RfZmlsZV9jbWRdLAotKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSlkbmwKLSsKLStBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKQotK0FDX0NBQ0hFX1ZBTChsdF9jdl90b190b29sX2ZpbGVfY21kLAotK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSBdKQotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLStBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0pCi0rX0xUX0RFQ0woW3RvX3Rvb2xfZmlsZV9jbWRdLCBbbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0sCi0rICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCi0rXSkjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA5NTAzZWM4NWQ3Li43MGU4NTZlMDY1IDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC0xLDEwICsxLDkgQEAKLS0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgotIAotLSMgbGlidG9vbCAoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQotKyMgbGlidG9vbCAoR05VIGxpYnRvb2wpIDIuNAotICMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSAKLSAjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKLS0jIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KLSAjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotIAotQEAgLTM4LDcgKzM3LDYgQEAKLSAjICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0gIyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSAjICAgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCi0tIyAgICAgICAtLW5vLWZpbmlzaCAgICAgICAgICBsZXQgaW5zdGFsbCBtb2RlIGF2b2lkIGZpbmlzaCBjb21tYW5kcwotICMgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcwotICMgICAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcwotICMgICAgICAgLS1uby1xdWlldCwgLS1uby1zaWxlbnQKLUBAIC03MSwxNyArNjksMTkgQEAKLSAjICAgICAgICAgY29tcGlsZXI6CQkkTFRDQwotICMgICAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUwotICMgICAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQotLSMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCi0rIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sKSAyLjQKLSAjICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCi0gIyAgICAgICAgIGF1dG9jb25mOgkkYXV0b2NvbmZfdmVyc2lvbgotICMKLSAjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KLSsjIEdOVSBsaWJ0b29sIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0b29sLz4uCi0rIyBHZW5lcmFsIGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cDovL3d3dy5nbnUub3JnL2dldGhlbHAvPi4KLSAKLSBQUk9HUkFNPWxpYnRvb2wKLSBQQUNLQUdFPWxpYnRvb2wKLS1WRVJTSU9OPTIuMi43YQotLVRJTUVTVEFNUD0iIDEuMzEzNCAyMDA5LTExLTI5IgotLXBhY2thZ2VfcmV2aXNpb249MS4zMTM0Ci0rVkVSU0lPTj0yLjQKLStUSU1FU1RBTVA9IiIKLStwYWNrYWdlX3JldmlzaW9uPTEuMzI5MwotIAotICMgQmUgQm91cm5lIGNvbXBhdGlibGUKLSBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLUBAIC0xMDYsOSArMTA2LDYgQEAgX0xURUNIT19FT0YnCi0gfQotIAotICMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCi0tIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KLS0jIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAotLSMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KLSBsdF91c2VyX2xvY2FsZT0KLSBsdF9zYWZlX2xvY2FsZT0KLSBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKLUBAIC0xMjEsMTUgKzExOCwxMyBAQCBkbwotIAkgIGx0X3NhZmVfbG9jYWxlPVwiJGx0X3Zhcj1DOyBcJGx0X3NhZmVfbG9jYWxlXCIKLSAJZmkiCi0gZG9uZQotK0xDX0FMTD1DCi0rTEFOR1VBR0U9QwotK2V4cG9ydCBMQU5HVUFHRSBMQ19BTEwKLSAKLSAkbHRfdW5zZXQgQ0RQQVRICi0gCi0gCi0tCi0tCi0tCi0tCi0tCi0gIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCi0gIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKLSAjIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAotQEAgLTE0MCw3ICsxMzUsNyBAQCBwcm9ncGF0aD0iJDAiCi0gCi0gCi0gOiAke0NQPSJjcCAtZiJ9Ci0tOiAke0VDSE89JGFzX2VjaG99Ci0rdGVzdCAiJHtFQ0hPK3NldH0iID0gc2V0IHx8IEVDSE89JHthc19lY2hvLSdwcmludGYgJXNcbid9Ci0gOiAke0VHUkVQPSIvYmluL2dyZXAgLUUifQotIDogJHtGR1JFUD0iL2Jpbi9ncmVwIC1GIn0KLSA6ICR7R1JFUD0iL2Jpbi9ncmVwIn0KLUBAIC0xNDksNyArMTQ0LDcgQEAgcHJvZ3BhdGg9IiQwIgotIDogJHtNS0RJUj0ibWtkaXIifQotIDogJHtNVj0ibXYgLWYifQotIDogJHtSTT0icm0gLWYifQotLTogJHtTRUQ9Ii9tb3VudC9lbmRvci93aWxkZW5odS9sb2NhbC14ODZfNjQvYmluL3NlZCJ9Ci0rOiAke1NFRD0iL2Jpbi9zZWQifQotIDogJHtTSEVMTD0iJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0ifQotIDogJHtYc2VkPSIkU0VEIC1lIDFzL15YLy8ifQotIAotQEAgLTE2OSw2ICsxNjQsMjcgQEAgSUZTPSIgCSRsdF9ubCIKLSBkaXJuYW1lPSJzLC9bXi9dKiQsLCIKLSBiYXNlbmFtZT0icyxeLiovLCwiCi0gCi0rIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0rIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotKyMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotK2Z1bmNfZGlybmFtZSAoKQotK3sKLSsgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0rICAgIGZpCi0rfSAjIGZ1bmNfZGlybmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfYmFzZW5hbWUgZmlsZQotK2Z1bmNfYmFzZW5hbWUgKCkKLSt7Ci0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotK30gIyBmdW5jX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSAjIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0gIyBjYWxsOgotQEAgLTE4MywxNyArMTk5LDMxIEBAIGJhc2VuYW1lPSJzLF4uKi8sLCIKLSAjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLSBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0gewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKLS19Ci0rICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0rICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKLSsgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotKyAgICBlbHNlCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotKyAgICBmaQotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKLSt9ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0rIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSsjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSsjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0rIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotK2Z1bmNfc3RyaXBuYW1lICgpCi0rewotKyAgICBjYXNlICR7Mn0gaW4KLSsgICAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLSsgICAgZXNhYwotK30gIyBmdW5jX3N0cmlwbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSAKLS0jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS4KLSAKLSAjIFRoZXNlIFNFRCBzY3JpcHRzIHByZXN1cHBvc2UgYW4gYWJzb2x1dGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCi0gcGF0aGNhcj0ncyxeL1woW14vXSpcKS4qJCxcMSwnCi1AQCAtMzc2LDYgKzQwNiwxNSBAQCBzZWRfcXVvdGVfc3Vic3Q9J3MvXChbYCIkXFxdXCkvXFxcMS9nJwotICMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotIGRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKLSAKLSsjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQotKyMgc3RyaW5nIGxpdGVyYWxseS4KLStzZWRfbWFrZV9saXRlcmFsX3JlZ2V4PSdzLFtdLlteJFxcKlwvXSxcXCYsZycKLSsKLSsjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAotKyMgd2hpY2ggY29udGFpbnMgZm9yd2FyZCBzbGFzaGVzLCBpbnRvIG9uZSB0aGF0IGNvbnRhaW5zCi0rIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCi0rbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotKwotICMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCi0gIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJwotICMgaW4gaW5wdXQgdG8gZG91YmxlX3F1b3RlX3N1YnN0LCB0aGF0ICckJyB3YXMgcHJvdGVjdGVkIGZyb20gZXhwYW5zaW9uLgotQEAgLTQwNCw3ICs0NDMsNyBAQCBvcHRfd2FybmluZz06Ci0gIyBuYW1lIGlmIGl0IGhhcyBiZWVuIHNldCB5ZXQuCi0gZnVuY19lY2hvICgpCi0gewotLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAkKiIKLSsgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0kKiIKLSB9Ci0gCi0gIyBmdW5jX3ZlcmJvc2UgYXJnLi4uCi1AQCAtNDMwLDE0ICs0NjksMTQgQEAgZnVuY19lY2hvX2FsbCAoKQotICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KLSBmdW5jX2Vycm9yICgpCi0gewotLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAiJHsxKyIkQCJ9IDE+JjIKLSsgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0iJHsxKyIkQCJ9IDE+JjIKLSB9Ci0gCi0gIyBmdW5jX3dhcm5pbmcgYXJnLi4uCi0gIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCi0gZnVuY193YXJuaW5nICgpCi0gewotLSAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogd2FybmluZzogIiR7MSsiJEAifSAxPiYyCi0rICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfXdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgotIAotICAgICAjIGJhc2ggYnVnIGFnYWluOgotICAgICA6Ci1AQCAtNjU2LDE5ICs2OTUsMzUgQEAgZnVuY19zaG93X2V2YWxfbG9jYWxlICgpCi0gICAgIGZpCi0gfQotIAotLQotLQotKyMgZnVuY190cl9zaAotKyMgVHVybiAkMSBpbnRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHNoZWxsIHZhcmlhYmxlIG5hbWUuCi0rIyBSZXN1bHQgaXMgc3RvcmVkIGluICRmdW5jX3RyX3NoX3Jlc3VsdC4gIEFsbCBjaGFyYWN0ZXJzCi0rIyBub3QgaW4gdGhlIHNldCBhLXpBLVowLTlfIGFyZSByZXBsYWNlZCB3aXRoICdfJy4gRnVydGhlciwKLSsjIGlmICQxIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGEgJ18nIGlzIHByZXBlbmRlZCBhcyB3ZWxsLgotK2Z1bmNfdHJfc2ggKCkKLSt7Ci0rICBjYXNlICQxIGluCi0rICBbMC05XSogfCAqWyFhLXpBLVowLTlfXSopCi0rICAgIGZ1bmNfdHJfc2hfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAncy9eXChbMC05XVwpL19cMS87IHMvW15hLXpBLVowLTlfXS9fL2cnYAotKyAgICA7OwotKyAgKiApCi0rICAgIGZ1bmNfdHJfc2hfcmVzdWx0PSQxCi0rICAgIDs7Ci0rICBlc2FjCi0rfQotIAotIAotICMgZnVuY192ZXJzaW9uCi0gIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCi0gZnVuY192ZXJzaW9uICgpCi0gewotKyAgICAkb3B0X2RlYnVnCi0rCi0gICAgICRTRUQgLW4gJy8oQykvIWIgZ28KLSAJOm1vcmUKLSAJL1wuLyF7Ci0gCSAgTgotLQkgIHMvXG4jIC8vCi0rCSAgcy9cbiMgLyAvCi0gCSAgYiBtb3JlCi0gCX0KLSAJOmdvCi1AQCAtNjg1LDcgKzc0MCw5IEBAIGZ1bmNfdmVyc2lvbiAoKQotICMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgotIGZ1bmNfdXNhZ2UgKCkKLSB7Ci0tICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi1oLyB7Ci0rICAgICRvcHRfZGVidWcKLSsKLSsgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLiotLWhlbHAvIHsKLSAgICAgICAgIHMvXiMgLy8KLSAJcy9eIyAqJC8vCi0gCXMvXCRwcm9nbmFtZS8nJHByb2duYW1lJy8KLUBAIC03MDEsNyArNzU4LDEwIEBAIGZ1bmNfdXNhZ2UgKCkKLSAjIHVubGVzcyAnbm9leGl0JyBpcyBwYXNzZWQgYXMgYXJndW1lbnQuCi0gZnVuY19oZWxwICgpCi0gewotKyAgICAkb3B0X2RlYnVnCi0rCi0gICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7Ci0rCTpwcmludAotICAgICAgICAgcy9eIyAvLwotIAlzL14jICokLy8KLSAJcypcJHByb2duYW1lKickcHJvZ25hbWUnKgotQEAgLTcxNCw3ICs3NzQsMTEgQEAgZnVuY19oZWxwICgpCi0gCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotIAlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoYXV0b2NvbmYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLSAJcAotLSAgICAgfScgPCAiJHByb2dwYXRoIgotKwlkCi0rICAgICB9Ci0rICAgICAvXiMgLiogaG9tZSBwYWdlOi9iIHByaW50Ci0rICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKLSsgICAgICcgPCAiJHByb2dwYXRoIgotICAgICByZXQ9JD8KLSAgICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCi0gICAgICAgZXhpdCAkcmV0Ci1AQCAtNzI2LDEyICs3OTAsMzkgQEAgZnVuY19oZWxwICgpCi0gIyBleGl0X2NtZC4KLSBmdW5jX21pc3NpbmdfYXJnICgpCi0gewotLSAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMSIKLSsgICAgJG9wdF9kZWJ1ZwotKwotKyAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMS4iCi0gICAgIGV4aXRfY21kPWV4aXQKLSB9Ci0gCi0tZXhpdF9jbWQ9OgotIAotKyMgZnVuY19zcGxpdF9zaG9ydF9vcHQgc2hvcnRvcHQKLSsjIFNldCBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcgc2hlbGwKLSsjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkKLSt7Ci0rICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCi0rICAgIG15X3NlZF9zaG9ydF9yZXN0PScxcy9eLi5cKC4qXCkkL1wxLztxJwotKwotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9vcHQiYAotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X3Jlc3QiYAotK30gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbG9uZ29wdAotKyMgU2V0IGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9sb25nX29wdF9hcmcgc2hlbGwKLSsjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgTE9OR09QVCBhdCB0aGUgYD0nIHNpZ24uCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKQotK3sKLSsgICAgbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtLVtePV0qXCk9LiovXDEvO3EnCi0rICAgIG15X3NlZF9sb25nX2FyZz0nMXMvXi0tW149XSo9Ly8nCi0rCi0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotK30gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotK2V4aXRfY21kPToKLSAKLSAKLSAKLUBAIC03NDEsMjYgKzgzMiw2NCBAQCBtYWdpYz0iJSUlTUFHSUMgdmFyaWFibGUlJSUiCi0gbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzLgotLSMgJG1vZGUgaXMgdW5zZXQKLSBub25vcHQ9Ci0tZXhlY3V0ZV9kbGZpbGVzPQotIHByZXNlcnZlX2FyZ3M9Ci0gbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgotIG8ybG89InMvXFwuJHtvYmpleHR9XCQvLmxvLyIKLSBleHRyYWN0ZWRfYXJjaGl2ZXM9Ci0gZXh0cmFjdGVkX3NlcmlhbD0wCi0gCi0tb3B0X2RyeV9ydW49ZmFsc2UKLS1vcHRfZmluaXNoPToKLS1vcHRfZHVwbGljYXRlX2RlcHM9ZmFsc2UKLS1vcHRfc2lsZW50PWZhbHNlCi0tb3B0X2RlYnVnPToKLS0KLSAjIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IGluIGFueSBvZiB0aGUgYWN0aW9ucywgdGhlIGNvbW1hbmQgaW4gaXQKLSAjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKLSAjIGxlZnQgb3ZlciBieSBzaGVsbHMuCi0gZXhlY19jbWQ9Ci0gCi0rIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSsjIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLStmdW5jX2FwcGVuZCAoKQotK3sKLSsgICAgZXZhbCAiJHsxfT1cJCR7MX1cJHsyfSIKLSt9ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rIyBmdW5jX2FwcGVuZF9xdW90ZWQgdmFyIHZhbHVlCi0rIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKLSsjIGJ5IGEgc3BhY2UuCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpCi0rewotKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgotKyAgICBldmFsICIkezF9PVwkJHsxfVxcIFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0rZnVuY19hcml0aCAoKQotK3sKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiR7QH0iYAotK30gIyBmdW5jX2FyaXRoIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19sZW4gc3RyaW5nCi0rIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotK2Z1bmNfbGVuICgpCi0rewotKyAgICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiR7MX0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLSt9ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2xvMm8gb2JqZWN0Ci0rZnVuY19sbzJvICgpCi0rewotKyAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0rfSAjIGZ1bmNfbG8ybyBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotK2Z1bmNfeGZvcm0gKCkKLSt7Ci0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotK30gIyBmdW5jX3hmb3JtIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotICMgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uIGFyZy4uLgotICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKLSAjIGEgY29uZmlndXJhdGlvbiBmYWlsdXJlIGhpbnQsIGFuZCBleGl0LgotQEAgLTg1MCwxMzAgKzk3OSwyMDQgQEAgZnVuY19lbmFibGVfdGFnICgpCi0gICBlc2FjCi0gfQotIAotLSMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluCi0tIyB0aGUgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYGxpYnRvb2wgLS12ZXJzaW9uJyBoYXBwZW4gcXVpY2tseS4KLSsjIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotKyMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKLSsjIHJlbGVhc2Ugb2YgbGlidG9vbC4KLStmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKLSB7Ci0rICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KLSsgICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLSsgICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLSsgICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0rJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgotKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLSskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0rX0xUX0VPRgotKyAgICAgIGVsc2UKLSsgICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0rJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KLSskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0rJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotK19MVF9FT0YKLSsgICAgICBmaQotKyAgICBlbHNlCi0rICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLSskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKLSskcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCi0rJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgotKyRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLStfTFRfRU9GCi0rICAgIGZpCi0gCi0tICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLS0gIGNhc2UgJDEgaW4KLS0gIGNsZWFufGNsZWF8Y2xlfGNsKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGxpbmt8bGlufGxpfGwpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBlc2FjCi0rICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKLSsgIGZpCi0rfQotKwotKwotKyMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAotK2Nhc2UgJDEgaW4KLStjbGVhbnxjbGVhfGNsZXxjbCkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2ZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0raW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStsaW5rfGxpbnxsaXxsKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK3VuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rZXNhYwotIAotLSAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6Ci0tICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0rCi0rCi0rIyBPcHRpb24gZGVmYXVsdHM6Ci0rb3B0X2RlYnVnPToKLStvcHRfZHJ5X3J1bj1mYWxzZQotK29wdF9jb25maWc9ZmFsc2UKLStvcHRfcHJlc2VydmVfZHVwX2RlcHM9ZmFsc2UKLStvcHRfZmVhdHVyZXM9ZmFsc2UKLStvcHRfZmluaXNoPWZhbHNlCi0rb3B0X2hlbHA9ZmFsc2UKLStvcHRfaGVscF9hbGw9ZmFsc2UKLStvcHRfc2lsZW50PToKLStvcHRfdmVyYm9zZT06Ci0rb3B0X3NpbGVudD1mYWxzZQotK29wdF92ZXJib3NlPWZhbHNlCi0rCi0rCi0rIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4gdGhlCi0rIyBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgLS12ZXJzaW9uJyBoYXBwZW4gYXMgcXVpY2tseSBhcyB3ZSBjYW4uCi0rewotKyAgIyB0aGlzIGp1c3QgZWFzZXMgZXhpdCBoYW5kbGluZwotKyAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KLSAgICAgb3B0PSIkMSIKLSAgICAgc2hpZnQKLS0KLSAgICAgY2FzZSAkb3B0IGluCi0tICAgICAgLS1jb25maWcpCQlmdW5jX2NvbmZpZwkJCQkJOzsKLS0KLS0gICAgICAtLWRlYnVnKQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLSsgICAgICAtLWRlYnVnfC14KQlvcHRfZGVidWc9J3NldCAteCcKLSAJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCi0tCQkJb3B0X2RlYnVnPSdzZXQgLXgnCi0gCQkJJG9wdF9kZWJ1ZwotIAkJCTs7Ci0tCi0tICAgICAgLWRsb3BlbikJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotLQkJCWV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkMSIKLS0JCQlzaGlmdAotKyAgICAgIC0tZHJ5LXJ1bnwtLWRyeXJ1bnwtbikKLSsJCQlvcHRfZHJ5X3J1bj06Ci0gCQkJOzsKLS0KLS0gICAgICAtLWRyeS1ydW4gfCAtbikJb3B0X2RyeV9ydW49OgkJCQkJOzsKLS0gICAgICAtLWZlYXR1cmVzKSAgICAgICBmdW5jX2ZlYXR1cmVzCQkJCQk7OwotLSAgICAgIC0tZmluaXNoKQkJbW9kZT0iZmluaXNoIgkJCQkJOzsKLS0gICAgICAtLW5vLWZpbmlzaCkJb3B0X2ZpbmlzaD1mYWxzZQkJCQk7OwotLQotLSAgICAgIC0tbW9kZSkJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotLQkJCWNhc2UgJDEgaW4KLS0JCQkgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0tCQkJICBjbGVhbikJOzsKLS0JCQkgIGNvbXBpbGUpCTs7Ci0tCQkJICBleGVjdXRlKQk7OwotLQkJCSAgZmluaXNoKQk7OwotLQkJCSAgaW5zdGFsbCkJOzsKLS0JCQkgIGxpbmspCQk7OwotLQkJCSAgcmVsaW5rKQk7OwotLQkJCSAgdW5pbnN0YWxsKQk7OwotLQotLQkJCSAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCi0tCQkJICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgotLQkJCSAgICAgZXhpdF9jbWQ9ZXhpdAotLQkJCSAgICAgYnJlYWsKLS0JCQkgICAgIDs7Ci0tCQkgICAgICAgIGVzYWMKLS0KLS0JCQltb2RlPSIkMSIKLSsgICAgICAtLWNvbmZpZykKLSsJCQlvcHRfY29uZmlnPToKLStmdW5jX2NvbmZpZwotKwkJCTs7Ci0rICAgICAgLS1kbG9wZW58LWRsb3BlbikKLSsJCQlvcHRhcmc9IiQxIgotKwkJCW9wdF9kbG9wZW49IiR7b3B0X2Rsb3Blbiskb3B0X2Rsb3BlbgotK30kb3B0YXJnIgotIAkJCXNoaWZ0Ci0gCQkJOzsKLS0KLSAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQotLQkJCW9wdF9kdXBsaWNhdGVfZGVwcz06CQkJCTs7Ci0tCi0tICAgICAgLS1xdWlldHwtLXNpbGVudCkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLS0JCQlvcHRfc2lsZW50PToKLS0JCQlvcHRfdmVyYm9zZT1mYWxzZQotKwkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06Ci0gCQkJOzsKLS0KLS0gICAgICAtLW5vLXF1aWV0fC0tbm8tc2lsZW50KQotLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0tCQkJb3B0X3NpbGVudD1mYWxzZQotKyAgICAgIC0tZmVhdHVyZXMpCi0rCQkJb3B0X2ZlYXR1cmVzPToKLStmdW5jX2ZlYXR1cmVzCi0gCQkJOzsKLS0KLS0gICAgICAtLXZlcmJvc2V8IC12KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotKyAgICAgIC0tZmluaXNoKQotKwkJCW9wdF9maW5pc2g9OgotK3NldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLSsJCQk7OwotKyAgICAgIC0taGVscCkKLSsJCQlvcHRfaGVscD06Ci0rCQkJOzsKLSsgICAgICAtLWhlbHAtYWxsKQotKwkJCW9wdF9oZWxwX2FsbD06Ci0rb3B0X2hlbHA9JzogaGVscC1hbGwnCi0rCQkJOzsKLSsgICAgICAtLW1vZGUpCi0rCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCi0rCQkJb3B0YXJnPSIkMSIKLSsJCQlvcHRfbW9kZT0iJG9wdGFyZyIKLStjYXNlICRvcHRhcmcgaW4KLSsgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0rICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OwotKwotKyAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCi0rICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgotKyAgICAgZXhpdF9jbWQ9ZXhpdAotKyAgICAgYnJlYWsKLSsgICAgIDs7Ci0rZXNhYwotKwkJCXNoaWZ0Ci0rCQkJOzsKLSsgICAgICAtLW5vLXNpbGVudHwtLW5vLXF1aWV0KQotIAkJCW9wdF9zaWxlbnQ9ZmFsc2UKLS0JCQlvcHRfdmVyYm9zZT06Ci0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0gCQkJOzsKLS0KLS0gICAgICAtLW5vLXZlcmJvc2UpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0rICAgICAgLS1uby12ZXJib3NlKQotIAkJCW9wdF92ZXJib3NlPWZhbHNlCi0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0gCQkJOzsKLS0KLS0gICAgICAtLXRhZykJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQgJDEiCi0tCQkJZnVuY19lbmFibGVfdGFnICIkMSIJIyB0YWduYW1lIGlzIHNldCBoZXJlCi0rICAgICAgLS1zaWxlbnR8LS1xdWlldCkKLSsJCQlvcHRfc2lsZW50PToKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLSsgICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCi0rCQkJOzsKLSsgICAgICAtLXZlcmJvc2V8LXYpCi0rCQkJb3B0X3ZlcmJvc2U9OgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotK29wdF9zaWxlbnQ9ZmFsc2UKLSsJCQk7OwotKyAgICAgIC0tdGFnKQotKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhawotKwkJCW9wdGFyZz0iJDEiCi0rCQkJb3B0X3RhZz0iJG9wdGFyZyIKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCAkb3B0YXJnIgotK2Z1bmNfZW5hYmxlX3RhZyAiJG9wdGFyZyIKLSAJCQlzaGlmdAotIAkJCTs7Ci0gCi0rICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQk7OwotKyAgICAgIC0taGVscCkJCWZ1bmNfaGVscAkJCQk7OwotKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCTs7Ci0rCi0gICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKLS0gICAgICAtZGxvcGVuPSp8LS1tb2RlPSp8LS10YWc9KikKLS0JCQlmdW5jX29wdF9zcGxpdCAiJG9wdCIKLS0JCQlzZXQgZHVtbXkgIiRmdW5jX29wdF9zcGxpdF9vcHQiICIkZnVuY19vcHRfc3BsaXRfYXJnIiAkezErIiRAIn0KLSsgICAgICAtLSo9KikKLSsJCQlmdW5jX3NwbGl0X2xvbmdfb3B0ICIkb3B0IgotKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSIgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyIgJHsxKyIkQCJ9Ci0gCQkJc2hpZnQKLSAJCQk7OwotIAotLSAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJCTs7Ci0tICAgICAgLS1oZWxwKQkJb3B0X2hlbHA9OgkJCQkJOzsKLS0gICAgICAtLWhlbHAtYWxsKQlvcHRfaGVscD0nOiBoZWxwLWFsbCcJCQkJOzsKLS0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQkJOzsKLS0KLS0gICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIgk7OwotLQotLSAgICAgICopCQlub25vcHQ9IiRvcHQiCi0tCQkJYnJlYWsKLSsgICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgotKyAgICAgIC1cPyp8LWgqfC1uKnwtdiopCi0rCQkJZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRvcHQiCi0rCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KLSsJCQlzaGlmdAotIAkJCTs7Ci0rCi0rICAgICAgLS0pCQlicmVhawkJCQkJOzsKLSsgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIiA7OwotKyAgICAgICopCQlzZXQgZHVtbXkgIiRvcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OwotICAgICBlc2FjCi0gICBkb25lCi0gCi0rICAjIFZhbGlkYXRlIG9wdGlvbnM6Ci0rCi0rICAjIHNhdmUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudAotKyAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCi0rICAgIG5vbm9wdD0iJG9wdCIKLSsgICAgc2hpZnQKLSsgIGZpCi0rCi0rICAjIHByZXNlcnZlIC0tZGVidWcKLSsgIHRlc3QgIiRvcHRfZGVidWciID0gOiB8fCBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgLS1kZWJ1ZyIKLSAKLSAgIGNhc2UgJGhvc3QgaW4KLSAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKiB8ICpzb2xhcmlzMiogKQotQEAgLTk4MSw4MiArMTE4NCw0NCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKLSAgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKLSAgICAgICA7OwotICAgICAqKQotLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9kdXBsaWNhdGVfZGVwcwotKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcwotICAgICAgIDs7Ci0gICBlc2FjCi0gCi0tICAjIEhhdmluZyB3YXJuZWQgYWJvdXQgYWxsIG1pcy1zcGVjaWZpZWQgb3B0aW9ucywgYmFpbCBvdXQgaWYKLS0gICMgYW55dGhpbmcgd2FzIHdyb25nLgotLSAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKLS19Ci0rICAkb3B0X2hlbHAgfHwgewotKyAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6Ci0rICAgIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotIAotLSMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0tIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQotLSMgcmVsZWFzZSBvZiBsaWJ0b29sLgotLWZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQotLXsKLS0gIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgotLSAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotLSAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotLSAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLS0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0tJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCi0tJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLS1fTFRfRU9GCi0tICAgICAgZWxzZQotLSAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLS0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0tJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgotLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLS0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0tX0xUX0VPRgotLSAgICAgIGZpCi0tICAgIGVsc2UKLS0gICAgICBjYXQgPiYyIDw8X0xUX0VPRgotLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAotLSRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KLS0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCi0tJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotLV9MVF9FT0YKLSsgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0rICAgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotICAgICBmaQotIAotLSAgICBleGl0ICRFWElUX01JU01BVENICi0tICBmaQotLX0KLS0KLSsgICAgIyBEYXJ3aW4gc3Vja3MKLSsgICAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKLSAKLS0jIyAtLS0tLS0tLS0tLSAjIwotLSMjICAgIE1haW4uICAgICMjCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0KLS0kb3B0X2hlbHAgfHwgewotLSAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotLSAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0tCi0tICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLS0gICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotLSAgZmkKLSsgICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLSsgICAgaWYgdGVzdCAtbiAiJG9wdF9kbG9wZW4iICYmIHRlc3QgIiRvcHRfbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgotKyAgICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKLSsgICAgICAkRUNITyAiJGhlbHAiIDE+JjIKLSsgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSsgICAgZmkKLSAKLS0gIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgotKyAgICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0rICAgIGdlbmVyaWNfaGVscD0iJGhlbHAiCi0rICAgIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotKyAgfQotIAotIAotLSAgIyBEYXJ3aW4gc3Vja3MKLS0gIGV2YWwgInN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIiIKLSsgICMgQmFpbCBpZiB0aGUgb3B0aW9ucyB3ZXJlIHNjcmV3ZWQKLSsgICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi0rfQotIAotIAotLSAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLS0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0tICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKLS0gICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0tICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotLSAgZmkKLSAKLS0gICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLS0gIGdlbmVyaWNfaGVscD0iJGhlbHAiCi0tICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotLX0KLSAKLSsjIyAtLS0tLS0tLS0tLSAjIwotKyMjICAgIE1haW4uICAgICMjCi0rIyMgLS0tLS0tLS0tLS0gIyMKLSAKLSAjIGZ1bmNfbGFsaWJfcCBmaWxlCi0gIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgotQEAgLTExMjEsMTIgKzEyODYsOSBAQCBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgKCkKLSAjIHRlbXBvcmFyeSBsdHdyYXBwZXJfc2NyaXB0LgotIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgKCkKLSB7Ci0tICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIiCi0tICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJDEiOyB0aGVuCi0tCWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKLS0JZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCWZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLS0gICAgZmkKLSsgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgotKyAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSsgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgotIH0KLSAKLSAjIGZ1bmNfbHR3cmFwcGVyX3AgZmlsZQotQEAgLTExNDksNyArMTMxMSw3IEBAIGZ1bmNfZXhlY3V0ZV9jbWRzICgpCi0gICAgIHNhdmVfaWZzPSRJRlM7IElGUz0nficKLSAgICAgZm9yIGNtZCBpbiAkMTsgZG8KLSAgICAgICBJRlM9JHNhdmVfaWZzCi0tICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgotKyAgICAgIGV2YWwgY21kPVwiJGNtZFwiCi0gICAgICAgZnVuY19zaG93X2V2YWwgIiRjbWQiICIkezItOn0iCi0gICAgIGRvbmUKLSAgICAgSUZTPSRzYXZlX2lmcwotQEAgLTExNzIsNiArMTMzNCwzNyBAQCBmdW5jX3NvdXJjZSAoKQotIH0KLSAKLSAKLSsjIGZ1bmNfcmVzb2x2ZV9zeXNyb290IFBBVEgKLSsjIFJlcGxhY2UgYSBsZWFkaW5nID0gaW4gUEFUSCB3aXRoIGEgc3lzcm9vdC4gIFN0b3JlIHRoZSByZXN1bHQgaW50bwotKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rZnVuY19yZXNvbHZlX3N5c3Jvb3QgKCkKLSt7Ci0rICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JDEKLSsgIGNhc2UgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCBpbgotKyAgPSopCi0rICAgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSsgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICA7OwotKyAgZXNhYwotK30KLSsKLSsjIGZ1bmNfcmVwbGFjZV9zeXNyb290IFBBVEgKLSsjIElmIFBBVEggYmVnaW5zIHdpdGggdGhlIHN5c3Jvb3QsIHJlcGxhY2UgaXQgd2l0aCA9IGFuZAotKyMgc3RvcmUgdGhlIHJlc3VsdCBpbnRvIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdC4KLStmdW5jX3JlcGxhY2Vfc3lzcm9vdCAoKQotK3sKLSsgIGNhc2UgIiRsdF9zeXNyb290OiQxIiBpbgotKyAgPyo6IiRsdF9zeXNyb290IiopCi0rICAgIGZ1bmNfc3RyaXBuYW1lICIkbHRfc3lzcm9vdCIgJycgIiQxIgotKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9Ij0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKyAgICA7OwotKyAgKikKLSsgICAgIyBJbmNsdWRpbmcgbm8gc3lzcm9vdC4KLSsgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSQxCi0rICAgIDs7Ci0rICBlc2FjCi0rfQotKwotICMgZnVuY19pbmZlcl90YWcgYXJnCi0gIyBJbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiB0byB1c2UgaWYgYW55IGFyZSBhdmFpbGFibGUgYW5kCi0gIyBpZiBvbmUgd2Fzbid0IGNob3NlbiB2aWEgdGhlICItLXRhZyIgY29tbWFuZCBsaW5lIG9wdGlvbi4KLUBAIC0xMTg0LDggKzEzNzcsNyBAQCBmdW5jX2luZmVyX3RhZyAoKQotICAgICBpZiB0ZXN0IC1uICIkYXZhaWxhYmxlX3RhZ3MiICYmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgotICAgICAgIENDX3F1b3RlZD0KLSAgICAgICBmb3IgYXJnIGluICRDQzsgZG8KLS0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tCUNDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCWZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCi0gICAgICAgZG9uZQotICAgICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKLSAgICAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKLUBAIC0xMjA0LDggKzEzOTYsNyBAQCBmdW5jX2luZmVyX3RhZyAoKQotIAkgICAgQ0NfcXVvdGVkPQotIAkgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0gCSAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVycy4KLS0JICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0JICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKLSAJICAgIGRvbmUKLSAJICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKLSAJICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAotQEAgLTEyNzQsNiArMTQ2NSw0ODYgQEAgRU9GCi0gICAgIH0KLSB9Ci0gCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIEZJTEUgTkFNRSBBTkQgUEFUSCBDT05WRVJTSU9OIEhFTFBFUiBGVU5DVElPTlMgIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rCi0rIyBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyIEFSRwotKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsCi0rIyBhbmQgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhCi0rIyBjb3JyZWN0bHkgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbQotKyMgaW4gJGJ1aWxkJ3MgJFBBVEguCi0rIwotKyMgQVJHIGlzIHRoZSAkYnVpbGQgZmlsZSBuYW1lIHRvIGJlIGNvbnZlcnRlZCB0byB3MzIgZm9ybWF0LgotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQsIGFuZCB3aWxsCi0rIyBiZSBlbXB0eSBvbiBlcnJvciAob3Igd2hlbiBBUkcgaXMgZW1wdHkpCi0rZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvIGVycm9yIGNvZGUsIHNvIHdlCi0rICAgICMgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2Ygc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlCi0rICAgICMgY29tbWFuZCBpcyBub3QgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAotKyAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGggZXJyb3IgY29kZSBvZgotKyAgICAjIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zIHRoZSBvZGQgY29uc3RydWN0aW9uOgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcD1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLSsgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXB9IjsgdGhlbgotKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PWAkRUNITyAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIiB8Ci0rICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0KLSsgICAgZmkKLSsgIGZpCi0rfQotKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyIEFSRwotKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LCBhbmQKLSsjICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYSBjb3JyZWN0bHkKLSsjIGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0gaW4gJGJ1aWxkJ3MKLSsjICRQQVRILiBBc3N1bWVzIEFSRyBoYXMgbm8gbGVhZGluZyBvciB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzLgotKyMKLSsjIEFSRyBpcyBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gd2luMzIuCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdC4KLSsjIFVuY29udmVydGlibGUgZmlsZSAoZGlyZWN0b3J5KSBuYW1lcyBpbiBBUkcgYXJlIHNraXBwZWQ7IGlmIG5vIGRpcmVjdG9yeSBuYW1lcwotKyMgYXJlIGNvbnZlcnRpYmxlLCB0aGVuIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5LgotK2Z1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRocywgb25seSBmaWxlIG5hbWVzCi0rICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIG9sZElGUz0kSUZTCi0rICAgIElGUz06Ci0rICAgIGZvciBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YgaW4gJDE7IGRvCi0rICAgICAgSUZTPSRvbGRJRlMKLSsgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIgotKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIgOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiOyB0aGVuCi0rICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0ICI7JGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBkb25lCi0rICAgIElGUz0kb2xkSUZTCi0rICBmaQotK30KLSsjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMgotKwotKwotKyMgZnVuY19jeWdwYXRoIEFSR1MuLi4KLSsjIFdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgdGhlIGN5Z3BhdGggcHJvZ3JhbSB2aWEgTFRfQ1lHUEFUSC4gVGhpcyBpcyB1c2VkIHdoZW4KLSsjIHdoZW4gKDEpICRidWlsZCBpcyAqbml4IGFuZCBDeWd3aW4gaXMgaG9zdGVkIHZpYSBhIHdpbmUgZW52aXJvbm1lbnQ7IG9yICgyKQotKyMgJGJ1aWxkIGlzIE1TWVMgYW5kICRob3N0IGlzIEN5Z3dpbiwgb3IgKDMpICRidWlsZCBpcyBDeWd3aW4uIEluIGNhc2UgKDEpIG9yCi0rIyAoMiksIHJldHVybnMgdGhlIEN5Z3dpbiBmaWxlIG5hbWUgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dAotKyMgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbiB3MzIgZm9ybWF0LCBhcyBwcmV2aW91c2x5IGNvbnZlcnRlZAotKyMgZnJvbSAkYnVpbGQncyAqbml4IG9yIE1TWVMgZm9ybWF0KS4gSW4gY2FzZSAoMyksIHJldHVybnMgdGhlIHczMiBmaWxlIG5hbWUKLSsjIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbgotKyMgQ3lnd2luIGZvcm1hdCkuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9uIGVycm9yLgotKyMKLSsjIEFSR1MgYXJlIHBhc3NlZCB0byBjeWdwYXRoLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyB0aGUgZmlsZSBuYW1lIG9yIHBhdGggdG8KLSsjIGJlIGNvbnZlcnRlZC4KLSsjCi0rIyBTcGVjaWZ5IHRoZSBhYnNvbHV0ZSAqbml4IChvciB3MzIpIG5hbWUgdG8gY3lncGF0aCBpbiB0aGUgTFRfQ1lHUEFUSAotKyMgZW52aXJvbm1lbnQgdmFyaWFibGU7IGRvIG5vdCBwdXQgaXQgaW4gJFBBVEguCi0rZnVuY19jeWdwYXRoICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAtbiAiJExUX0NZR1BBVEgiICYmIHRlc3QgLWYgIiRMVF9DWUdQQVRIIjsgdGhlbgotKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PWAkTFRfQ1lHUEFUSCAiJEAiIDI+L2Rldi9udWxsYAotKyAgICBpZiB0ZXN0ICIkPyIgLW5lIDA7IHRoZW4KLSsgICAgICAjIG9uIGZhaWx1cmUsIGVuc3VyZSByZXN1bHQgaXMgZW1wdHkKLSsgICAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQotKyAgICBmaQotKyAgZWxzZQotKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQotKyAgICBmdW5jX2Vycm9yICJMVF9DWUdQQVRIIGlzIGVtcHR5IG9yIHNwZWNpZmllcyBub24tZXhpc3RlbnQgZmlsZTogXGAkTFRfQ1lHUEFUSCciCi0rICBmaQotK30KLSsjZW5kOiBmdW5jX2N5Z3BhdGgKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgb3IgcGF0aCBBUkcgZnJvbSBNU1lTIGZvcm1hdCB0byB3MzIgZm9ybWF0LiAgUmV0dXJuCi0rIyByZXN1bHQgaW4gZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0LgotK2Z1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0Ci0rICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8Ci0rICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSt9Ci0rI2VuZDogZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX2NoZWNrIEFSRzEgQVJHMgotKyMgVmVyaWZ5IHRoYXQgQVJHMSAoYSBmaWxlIG5hbWUgaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAotKyMgZm9ybWF0IGluIEFSRzIuIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUgKHJlc2V0dGluZwotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIEFSRzEpLgotK2Z1bmNfY29udmVydF9maWxlX2NoZWNrICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSsgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IGZpbGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIgotKyAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgotKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSsgICAgIyBGYWxsYmFjazoKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2NoZWNrCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayBGUk9NX1BBVEhTRVAgVE9fUEFUSFNFUCBGUk9NX1BBVEggVE9fUEFUSAotKyMgVmVyaWZ5IHRoYXQgRlJPTV9QQVRIIChhIHBhdGggaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAotKyMgZm9ybWF0IGluIFRPX1BBVEguIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUsIHJlc2V0dGluZwotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIGEgc2ltcGxpc3RpYyBmYWxsYmFjayB2YWx1ZSAoc2VlIGJlbG93KS4KLStmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLXogIiQ0IiAmJiB0ZXN0IC1uICIkMyI7IHRoZW4KLSsgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCi0rICAgIGZ1bmNfZXJyb3IgIiAgXGAkMyciCi0rICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotKyAgICAjIEZhbGxiYWNrLiAgVGhpcyBpcyBhIGRlbGliZXJhdGVseSBzaW1wbGlzdGljICJjb252ZXJzaW9uIiBhbmQKLSsgICAgIyBzaG91bGQgbm90IGJlICJpbXByb3ZlZCIuICBTZWUgbGlidG9vbC5pbmZvLgotKyAgICBpZiB0ZXN0ICJ4JDEiICE9ICJ4JDIiOyB0aGVuCi0rICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzPSJzfCQxfCQyfGciCi0rICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkMyIgfAotKyAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycyJgCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzIgotKyAgICBmaQotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCBGUk9OVFBBVCBCQUNLUEFUIFJFUEwgT1JJRwotKyMgTW9kaWZpZXMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IGJ5IHByZXBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgRlJPTlRQQVQKLSsjIGFuZCBhcHBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgQkFDS1BBVC4KLStmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBjYXNlICQ0IGluCi0rICAkMSApIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICA7OwotKyAgZXNhYwotKyAgY2FzZSAkNCBpbgotKyAgJDIgKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgIiQzIgotKyAgICA7OwotKyAgZXNhYwotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAKLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgJGJ1aWxkIHRvICRob3N0IEZJTEUgTkFNRSBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIGludm9rZWQgdmlhIGAkdG9faG9zdF9maWxlX2NtZCBBUkcnCi0rIwotKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KLSsjIFJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotKwotKwotKyMgZnVuY190b19ob3N0X2ZpbGUgQVJHCi0rIyBDb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0Ci0rIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY190b19ob3N0X2ZpbGUgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICAkdG9faG9zdF9maWxlX2NtZCAiJDEiCi0rfQotKyMgZW5kIGZ1bmNfdG9faG9zdF9maWxlCi0rCi0rCi0rIyBmdW5jX3RvX3Rvb2xfZmlsZSBBUkcgTEFaWQotKyMgY29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHRvb2xjaGFpbiBmb3JtYXQuIFJldHVybgotKyMgcmVzdWx0IGluIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdC4gIElmIHRoZSBjb252ZXJzaW9uIGluIHVzZSBpcyBsaXN0ZWQKLSsjIGluICh0aGUgY29tbWEgc2VwYXJhdGVkKSBMQVpZLCBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlLgotK2Z1bmNfdG9fdG9vbF9maWxlICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgY2FzZSAsJDIsIGluCi0rICAgICosIiR0b190b29sX2ZpbGVfY21kIiwqKQotKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kMQotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgJHRvX3Rvb2xfZmlsZV9jbWQgIiQxIgotKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0Ci0rICAgICAgOzsKLSsgIGVzYWMKLSt9Ci0rIyBlbmQgZnVuY190b190b29sX2ZpbGUKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX25vb3AgQVJHCi0rIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCAoKQotK3sKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25vb3AKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCi0rIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIGJlY2F1c2UgJGJ1aWxkIGlzIGN5Z3dpbiwgd2UgY2FsbCAidGhlIiBjeWdwYXRoIGluICRQQVRIOyBubyBuZWVkIHRvIHVzZQotKyAgICAjIExUX0NZR1BBVEggaW4gdGhpcyBjYXNlLgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9YGN5Z3BhdGggLW0gIiQxImAKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50Ci0rIyBhbmQgYSB3b3JraW5nIHdpbmVwYXRoLiBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCi0rIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKLSsgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZAotKyMgaW4gYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdAotKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgY29udmVydCBmcm9tICpuaXggdG8gdzMyLCB0aGVuIHVzZSBjeWdwYXRoIHRvIGNvbnZlcnQgZnJvbSB3MzIgdG8gY3lnd2luLgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKLSsgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgJGJ1aWxkIHRvICRob3N0IFBBVEggQ09OVkVSU0lPTiBGVU5DVElPTlMgIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X3BhdGhfY21kIEFSRycKLSsjCi0rIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgotKyMgVGhlIHJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotKyMKLSsjIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gIElmCi0rIyBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQKLSsjIGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpIG9uIG91dHB1dC4KLSsjCi0rIyBBbGwgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgbmFtZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uOgotKyMgICBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbiAgICA6IGZ1bmNfY29udmVydF9maWxlX1hfdG9fWSAoKQotKyMgICBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgICAgICA6IGZ1bmNfY29udmVydF9wYXRoX1hfdG9fWSAoKQotKyMgd2hlcmUsIGZvciBhbnkgZ2l2ZW4gJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9uIHRoZSAnWF90b19ZJyB2YWx1ZSBpcyB0aGUKLSsjIHNhbWUuICBJZiBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgYWRkZWQgZm9yIG5ldyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zLAotKyMgdGhlIHR3byBuZXcgZnVuY3Rpb25zIG11c3QgZm9sbG93IHRoaXMgcGF0dGVybiwgb3IgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKLSsjIHdpbGwgYnJlYWsuCi0rCi0rCi0rIyBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAotKyMgRW5zdXJlcyB0aGF0IGZ1bmN0aW9uICJwb2ludGVyIiB2YXJpYWJsZSAkdG9faG9zdF9wYXRoX2NtZCBpcyBzZXQgdG8gdGhlCi0rIyBhcHByb3ByaWF0ZSB2YWx1ZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mICR0b19ob3N0X2ZpbGVfY21kLgotK3RvX2hvc3RfcGF0aF9jbWQ9Ci0rZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC16ICIkdG9faG9zdF9wYXRoX2NtZCI7IHRoZW4KLSsgICAgZnVuY19zdHJpcG5hbWUgJ2Z1bmNfY29udmVydF9maWxlXycgJycgIiR0b19ob3N0X2ZpbGVfY21kIgotKyAgICB0b19ob3N0X3BhdGhfY21kPSJmdW5jX2NvbnZlcnRfcGF0aF8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0iCi0rICBmaQotK30KLSsKLSsKLSsjIGZ1bmNfdG9faG9zdF9wYXRoIEFSRwotKyMgQ29udmVydHMgdGhlIHBhdGggQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKLSsjIGluIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLStmdW5jX3RvX2hvc3RfcGF0aCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCi0rICAkdG9faG9zdF9wYXRoX2NtZCAiJDEiCi0rfQotKyMgZW5kIGZ1bmNfdG9faG9zdF9wYXRoCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9ub29wIEFSRwotKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX25vb3AgKCkKLSt7Ci0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9ub29wCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKLSsjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbSBBUkcuICBNU1lTCi0rICAgICMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmU7IGN5Z3BhdGggdHVybnMgdGhlbSBpbnRvICcuOycgYW5kICc7Lic7Ci0rICAgICMgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6Ci0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLW0gLXAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxImAKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50IGFuZAotKyMgYSB3b3JraW5nIHdpbmVwYXRoLiAgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX25peF90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCi0rIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQgaW4gYQotKyMgYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotKyAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0rICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4KLSsKLSsKLSAjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgotIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gewotQEAgLTEzMTQsMTIgKzE5ODUsMTIgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKLSAJICA7OwotIAotIAktcGllIHwgLWZwaWUgfCAtZlBJRSkKLS0gICAgICAgICAgcGllX2ZsYWc9IiRwaWVfZmxhZyAkYXJnIgotKyAgICAgICAgICBmdW5jX2FwcGVuZCBwaWVfZmxhZyAiICRhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAotIAktc2hhcmVkIHwgLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQotLQkgIGxhdGVyPSIkbGF0ZXIgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBsYXRlciAiICRhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAotQEAgLTEzNDAsMTUgKzIwMTEsMTQgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKLSAJICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKLSAJICBmb3IgYXJnIGluICRhcmdzOyBkbwotIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0tCSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmRfcXVvdGVkIGxhc3RhcmcgIiRhcmciCi0gCSAgZG9uZQotIAkgIElGUz0iJHNhdmVfaWZzIgotIAkgIGZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGxhc3RhcmciCi0gCSAgbGFzdGFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCi0gCSAgIyBBZGQgdGhlIGFyZ3VtZW50cyB0byBiYXNlX2NvbXBpbGUuCi0tCSAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgotKwkgIGZ1bmNfYXBwZW5kIGJhc2VfY29tcGlsZSAiICRsYXN0YXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLUBAIC0xMzY0LDggKzIwMzQsNyBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQotICAgICAgIGVzYWMgICAgIyAgY2FzZSAkYXJnX21vZGUKLSAKLSAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIHByZXZpb3VzIGFyZ3VtZW50LgotLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRsYXN0YXJnIgotLSAgICAgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGJhc2VfY29tcGlsZSAiJGxhc3RhcmciCi0gICAgIGRvbmUgIyBmb3IgYXJnCi0gCi0gICAgIGNhc2UgJGFyZ19tb2RlIGluCi1AQCAtMTQ5NiwxNyArMjE2NSwxNiBAQCBjb21waWxlci4iCi0gCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKLSAJZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgICAgZmkKLS0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKLSsgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJG91dHB1dF9vYmoiCi0gICAgICAgJEVDSE8gIiRzcmNmaWxlIiA+ICIkbG9ja2ZpbGUiCi0gICAgIGZpCi0gCi0gICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKLS0gICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgotKyAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJGxvY2tmaWxlIgotICAgICB0cmFwICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnIDEgMiAxNQotIAotLSAgICBpZiB0ZXN0IC1uICIkZml4X3NyY2ZpbGVfcGF0aCI7IHRoZW4KLS0gICAgICBldmFsICJzcmNmaWxlPVwiJGZpeF9zcmNmaWxlX3BhdGhcIiIKLS0gICAgZmkKLSsgICAgZnVuY190b190b29sX2ZpbGUgIiRzcmNmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICBzcmNmaWxlPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHNyY2ZpbGUiCi0gICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAotIAotQEAgLTE1MjYsNyArMjE5NCw3IEBAIGNvbXBpbGVyLiIKLSAKLSAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KLSAJIyBQbGFjZSBQSUMgb2JqZWN0cyBpbiAkb2JqZGlyCi0tCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRsb2JqIgotKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJGxvYmoiCi0gICAgICAgZmkKLSAKLSAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCi1AQCAtMTU3MywxMSArMjI0MSwxMSBAQCBjb21waWxlci4iCi0gCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlICRwaWNfZmxhZyIKLSAgICAgICBmaQotICAgICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0geWVzOyB0aGVuCi0tCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRvYmoiCi0rCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkb2JqIgotICAgICAgIGZpCi0gCi0gICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCi0tICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0cHV0IgotKyAgICAgIGZ1bmNfYXBwZW5kIGNvbW1hbmQgIiRzdXBwcmVzc19vdXRwdXQiCi0gICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIgXAotICAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKLSAKLUBAIC0xNjIyLDEzICsyMjkwLDEzIEBAIGNvbXBpbGVyLiIKLSB9Ci0gCi0gJG9wdF9oZWxwIHx8IHsKLS0gIHRlc3QgIiRtb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9Ci0rICB0ZXN0ICIkb3B0X21vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KLSB9Ci0gCi0gZnVuY19tb2RlX2hlbHAgKCkKLSB7Ci0gICAgICMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgotLSAgICBjYXNlICRtb2RlIGluCi0rICAgIGNhc2UgJG9wdF9tb2RlIGluCi0gICAgICAgIiIpCi0gICAgICAgICAjIEdlbmVyaWMgaGVscCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgdXNhZ2UgY29tbWVudHMKLSAgICAgICAgICMgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZS4KLUBAIC0xNjU5LDggKzIzMjcsOCBAQCBUaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKLSAKLSAgIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQotICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCi0tICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQotLSAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkaW5nIG5vbi1QSUMgb2JqZWN0cyBvbmx5Ci0rICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGQgUElDIG9iamVjdHMgb25seQotKyAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkIG5vbi1QSUMgb2JqZWN0cyBvbmx5Ci0gICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwotICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCi0gICAtV2MsRkxBRyAgICAgICAgICBwYXNzIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCi1AQCAtMTgwNCw3ICsyNDcyLDcgQEAgT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgotICAgICAgICAgOzsKLSAKLSAgICAgICAqKQotLSAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgotKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKLSAgICAgICAgIDs7Ci0gICAgIGVzYWMKLSAKLUBAIC0xODE5LDEzICsyNDg3LDEzIEBAIGlmICRvcHRfaGVscDsgdGhlbgotICAgZWxzZQotICAgICB7Ci0gICAgICAgZnVuY19oZWxwIG5vZXhpdAotLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSsgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotIAlmdW5jX21vZGVfaGVscAotICAgICAgIGRvbmUKLSAgICAgfSB8IHNlZCAtbiAnMXA7IDIsJHMvXlVzYWdlOi8gIG9yOiAvcCcKLSAgICAgewotICAgICAgIGZ1bmNfaGVscCBub2V4aXQKLS0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0rICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSAJZWNobwotIAlmdW5jX21vZGVfaGVscAotICAgICAgIGRvbmUKLUBAIC0xODU0LDEzICsyNTIyLDE2IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKLSAKLSAgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KLS0gICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KLSsgICAgZm9yIGZpbGUgaW4gJG9wdF9kbG9wZW47IGRvCi0gICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKLSAJfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSBmaWxlIgotIAotICAgICAgIGRpcj0KLSAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAgKi5sYSkKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgotKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSsKLSAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLSAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKLSAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotQEAgLTE4ODIsNyArMjU1Myw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0gCi0gCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotLQkgIGRpcj0iJGRpci8kb2JqZGlyIgotKwkgIGZ1bmNfYXBwZW5kIGRpciAiLyRvYmpkaXIiCi0gCWVsc2UKLSAJICBpZiB0ZXN0ICEgLWYgIiRkaXIvJGRsbmFtZSI7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciCi1AQCAtMTkwNywxMCArMjU3OCwxMCBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICAgIHRlc3QgLW4gIiRhYnNkaXIiICYmIGRpcj0iJGFic2RpciIKLSAKLSAgICAgICAjIE5vdyBhZGQgdGhlIGRpcmVjdG9yeSB0byBzaGxpYnBhdGhfdmFyLgotLSAgICAgIGlmIGV2YWwgdGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIjsgdGhlbgotLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyCi0rICAgICAgaWYgZXZhbCAidGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIiI7IHRoZW4KLSsJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpclwiIgotICAgICAgIGVsc2UKLS0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcjpcJCRzaGxpYnBhdGhfdmFyCi0rCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXI6XCQkc2hsaWJwYXRoX3ZhclwiIgotICAgICAgIGZpCi0gICAgIGRvbmUKLSAKLUBAIC0xOTM5LDggKzI2MTAsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotIAk7OwotICAgICAgIGVzYWMKLSAgICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgotLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmaWxlIgotLSAgICAgIGFyZ3M9IiRhcmdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYXJncyAiJGZpbGUiCi0gICAgIGRvbmUKLSAKLSAgICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KLUBAIC0xOTcyLDIyICsyNjQyLDU5IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gICAgIGZpCi0gfQotIAotLXRlc3QgIiRtb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9Ci0gCi0gCi0gIyBmdW5jX21vZGVfZmluaXNoIGFyZy4uLgotIGZ1bmNfbW9kZV9maW5pc2ggKCkKLSB7Ci0gICAgICRvcHRfZGVidWcKLS0gICAgbGliZGlycz0iJG5vbm9wdCIKLSsgICAgbGlicz0KLSsgICAgbGliZGlycz0KLSAgICAgYWRtaW5jbWRzPQotIAotLSAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotLSAgICAgIGZvciBkaXIKLS0gICAgICBkbwotLQlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgotLSAgICAgIGRvbmUKLSsgICAgZm9yIG9wdCBpbiAiJG5vbm9wdCIgJHsxKyIkQCJ9Ci0rICAgIGRvCi0rICAgICAgaWYgdGVzdCAtZCAiJG9wdCI7IHRoZW4KLSsJZnVuY19hcHBlbmQgbGliZGlycyAiICRvcHQiCi0gCi0rICAgICAgZWxpZiB0ZXN0IC1mICIkb3B0IjsgdGhlbgotKwlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkb3B0IjsgdGhlbgotKwkgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkb3B0IgotKwllbHNlCi0rCSAgZnVuY193YXJuaW5nICJcYCRvcHQnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLSsJZmkKLSsKLSsgICAgICBlbHNlCi0rCWZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgYXJndW1lbnQgXGAkb3B0JyIKLSsgICAgICBmaQotKyAgICBkb25lCi0rCi0rICAgIGlmIHRlc3QgLW4gIiRsaWJzIjsgdGhlbgotKyAgICAgIGlmIHRlc3QgLW4gIiRsdF9zeXNyb290IjsgdGhlbgotKyAgICAgICAgc3lzcm9vdF9yZWdleD1gJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKLSsgICAgICAgIHN5c3Jvb3RfY21kPSJzL1woWyAnXVwpJHN5c3Jvb3RfcmVnZXgvXDEvZzsiCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzcm9vdF9jbWQ9Ci0rICAgICAgZmkKLSsKLSsgICAgICAjIFJlbW92ZSBzeXNyb290IHJlZmVyZW5jZXMKLSsgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KLSsgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCi0rICAgICAgICAgIGVjaG8gInJlbW92aW5nIHJlZmVyZW5jZXMgdG8gJGx0X3N5c3Jvb3QgYW5kIFxgPScgcHJlZml4ZXMgZnJvbSAkbGliIgotKyAgICAgICAgZG9uZQotKyAgICAgIGVsc2UKLSsgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCi0rICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbwotKwkgIHNlZCAtZSAiJHtzeXNyb290X2NtZH0gcy9cKFsgJ10tW0xSXVwpPS9cMS9nOyBzL1woWyAnXVwpPS9cMS9nIiAkbGliIFwKLSsJICAgID4gJHRtcGRpci90bXAtbGEKLSsJICBtdiAtZiAkdG1wZGlyL3RtcC1sYSAkbGliCi0rCWRvbmUKLSsgICAgICAgICR7Uk19ciAiJHRtcGRpciIKLSsgICAgICBmaQotKyAgICBmaQotKwotKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotICAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0gCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KLSAJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgotQEAgLTE5OTcsNyArMjcwNCw3IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKLSAJaWYgdGVzdCAtbiAiJGZpbmlzaF9ldmFsIjsgdGhlbgotIAkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KLSAJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgotLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgYWRtaW5jbWRzPSIkYWRtaW5jbWRzCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBmdW5jX2FwcGVuZCBhZG1pbmNtZHMgIgotICAgICAgICAkY21kcyIKLSAJZmkKLSAgICAgICBkb25lCi1AQCAtMjAwNiw1MyArMjcxMyw1NSBAQCBmdW5jX21vZGVfZmluaXNoICgpCi0gICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgotICAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKLSAKLS0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLS0gICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgotLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotLSAgICAgICRFQ0hPICIgICAkbGliZGlyIgotLSAgICBkb25lCi0tICAgIGVjaG8KLS0gICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCi0tICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotLSAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgotLSAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCi0tICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0tICAgICAgZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0tICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0tICAgICAgZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0tICAgICAgbGliZGlyPUxJQkRJUgotLSAgICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0rICAgICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgotKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0rCSRFQ0hPICIgICAkbGliZGlyIgotKyAgICAgIGRvbmUKLSsgICAgICBlY2hvCi0rICAgICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCi0rICAgICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCi0rICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSsgICAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCi0rICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0rCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0rCWVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSsJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0rCWVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSsJbGliZGlyPUxJQkRJUgotKwlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gCi0tICAgICAgJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KLS0gICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0tICAgICAgZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCi0tICAgIGZpCi0tICAgIGVjaG8KLSsJJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0rCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0rCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotKyAgICAgIGZpCi0rICAgICAgZWNobwotIAotLSAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLS0gICAgY2FzZSAkaG9zdCBpbgotLSAgICAgIHNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCi0tICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgotLQllY2hvICJwYWdlcy4iCi0tCTs7Ci0tICAgICAgKikKLS0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotLSAgICAgICAgOzsKLS0gICAgZXNhYwotLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgotKyAgICAgIGNhc2UgJGhvc3QgaW4KLSsJc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKLSsJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgotKwkgIGVjaG8gInBhZ2VzLiIKLSsJICA7OwotKwkqKQotKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotKwkgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0rICAgIGZpCi0gICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotIH0KLSAKLS10ZXN0ICIkbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KLSt0ZXN0ICIkb3B0X21vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9Ci0gCi0gCi0gIyBmdW5jX21vZGVfaW5zdGFsbCBhcmcuLi4KLUBAIC0yMDc3LDcgKzI3ODYsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCi0gICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KLSAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0gICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0kaW5zdGFsbF9wcm9nCi0gICAgIGNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KLSAgICAgICAqW1xcXCAvXWNwXCAqKSBpbnN0YWxsX2NwPTogOzsKLUBAIC0yMDk3LDcgKzI4MDYsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICBkbwotICAgICAgIGFyZzI9Ci0gICAgICAgaWYgdGVzdCAtbiAiJGRlc3QiOyB0aGVuCi0tCWZpbGVzPSIkZmlsZXMgJGRlc3QiCi0rCWZ1bmNfYXBwZW5kIGZpbGVzICIgJGRlc3QiCi0gCWRlc3Q9JGFyZwotIAljb250aW51ZQotICAgICAgIGZpCi1AQCAtMjEzNSwxMSArMjg0NCwxMSBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotIAotICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCi0gICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0gICAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgICBpZiB0ZXN0IC1uICIkYXJnMiI7IHRoZW4KLSAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZzIiCi0gICAgICAgZmkKLS0gICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgZG9uZQotIAotICAgICB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIiAmJiBcCi1AQCAtMjE1MSw3ICsyODYwLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgJiYgJG5vX21vZGU7IHRoZW4KLSAgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCi0gCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiCi0tCWluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgICBmaQotICAgICBmaQotIAotQEAgLTIyMDksMTAgKzI5MTgsMTMgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAgKi4kbGliZXh0KQotIAkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgotLQlzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZmlsZSIKLSsJZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRmaWxlIgotIAk7OwotIAotICAgICAgICoubGEpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKLSsJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rCi0gCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCi0gCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCi0gCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi1AQCAtMjIyNiwyMyArMjkzOCwzMCBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotIAlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgotIAkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMgIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgY3VycmVudF9saWJkaXJzICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWVsc2UKLSAJICAjIE5vdGUgdGhlIGxpYmRpciBhcyBhIGZ1dHVyZSBsaWJkaXIuCi0gCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZ1dHVyZV9saWJkaXJzPSIkZnV0dXJlX2xpYmRpcnMgJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmdXR1cmVfbGliZGlycyAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlmaQotIAotIAlmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiLyIgIiIKLSAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0JZGlyPSIkZGlyJG9iamRpciIKLSsJZnVuY19hcHBlbmQgZGlyICIkb2JqZGlyIgotIAotIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0rICAgICAgIyBTdHJpcCBhbnkgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgZGVzdGluYXRpb24uCi0rICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkbGliZGlyIgotKyAgICAgIGRlc3RsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwotKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGRlc3RkaXIiCi0rICAgICAgc19kZXN0ZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsKLSAJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgotLQkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIiRkZXN0ZGlyIiB8ICRTRUQgLWUgInMlJGxpYmRpclwkJSUiYAotKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIlgkc19kZXN0ZGlyIiB8ICRYc2VkIC1lICJzJSRkZXN0bGliZGlyXCQlJSJgCi0gCi0gCSAgIyBEb24ndCBhbGxvdyB0aGUgdXNlciB0byBwbGFjZSB1cyBvdXRzaWRlIG9mIG91ciBleHBlY3RlZAotIAkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKLUBAIC0yMzE1LDcgKzMwMzQsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotIAlmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiICdleGl0ICQ/JwotIAotIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCi0tCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0rCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgotIAk7OwotIAotICAgICAgICoubG8pCi1AQCAtMjUwMyw3ICszMjIyLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJzIiAmJiBcCi0gICAgICAgZnVuY193YXJuaW5nICJyZW1lbWJlciB0byBydW4gXGAkcHJvZ25hbWUgLS1maW5pc2gkZnV0dXJlX2xpYmRpcnMnIgotIAotLSAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIiAmJiAkb3B0X2ZpbmlzaDsgdGhlbgotKyAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgotICAgICAgICMgTWF5YmUganVzdCBkbyBhIGRyeSBydW4uCi0gICAgICAgJG9wdF9kcnlfcnVuICYmIGN1cnJlbnRfbGliZGlycz0iIC1uJGN1cnJlbnRfbGliZGlycyIKLSAgICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCi1AQCAtMjUxMiw3ICszMjMxLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgZmkKLSB9Ci0gCi0tdGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KLSt0ZXN0ICIkb3B0X21vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KLSAKLSAKLSAjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcAotQEAgLTI1NTksNiArMzI3OCwxOCBAQCBleHRlcm4gXCJDXCIgewotICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIgotICNlbmRpZgotIAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotIC8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCi0gIgotIAotQEAgLTI1NzAsMjEgKzMzMDEsMjIgQEAgZXh0ZXJuIFwiQ1wiIHsKLSAJICAjIEFkZCBvdXIgb3duIHByb2dyYW0gb2JqZWN0cyB0byB0aGUgc3ltYm9sIGxpc3QuCi0gCSAgcHJvZ2ZpbGVzPWAkRUNITyAiJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAotIAkgIGZvciBwcm9nZmlsZSBpbiAkcHJvZ2ZpbGVzOyBkbwotLQkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRwcm9nZmlsZSciCi0tCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHByb2dmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQnIgotKwkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSAJICBkb25lCi0gCi0gCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAgICRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUCi0tCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKLSsJICAgICAgZXZhbCAnJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0rCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCi0gCSAgICB9Ci0gCSAgZmkKLSAKLSAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAkRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQKLS0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgotKwkgICAgICBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0rCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCi0gCSAgICB9Ci0gCSAgZmkKLSAKLUBAIC0yNTkzLDIzICszMzI1LDIzIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSAJICAgICAgJFJNICRleHBvcnRfc3ltYm9scwotLQkgICAgICAke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyA8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyIKLSsJICAgICAgZXZhbCAiJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgIic8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyInCi0gCSAgICAgIGNhc2UgJGhvc3QgaW4KLSAJICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0tICAgICAgICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0tICAgICAgICAgICAgICAgIGNhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotKyAgICAgICAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotKyAgICAgICAgICAgICAgICBldmFsICdjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0gCSAgICAgICAgOzsKLSAJICAgICAgZXNhYwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAgICR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKLS0JICAgICAgJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVAotLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCi0rCSAgICAgIGV2YWwgIiR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiJwotKwkgICAgICBldmFsICckR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgICBjYXNlICRob3N0IGluCi0gCSAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0tCSAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotLQkgICAgICAgICAgY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0rCSAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotKwkgICAgICAgICAgZXZhbCAnY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotIAkgICAgICAgICAgOzsKLSAJICAgICAgZXNhYwotIAkgICAgfQotQEAgLTI2MjAsMTAgKzMzNTIsNTIgQEAgZXh0ZXJuIFwiQ1wiIHsKLSAJICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGRscHJlZmlsZSciCi0gCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKLSAJICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCSAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCIKLS0JICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLS0JICB9Ci0rICAgICAgICAgIGNhc2UgJGhvc3QgaW4KLSsJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotKwkgICAgICAjIGlmIGFuIGltcG9ydCBsaWJyYXJ5LCB3ZSBuZWVkIHRvIG9idGFpbiBkbG5hbWUKLSsJICAgICAgaWYgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgIiRkbHByZWZpbGUiOyB0aGVuCi0rCSAgICAgICAgZnVuY190cl9zaCAiJGRscHJlZmlsZSIKLSsJICAgICAgICBldmFsICJjdXJyX2xhZmlsZT1cJGxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0IgotKwkgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIiCi0rCSAgICAgICAgaWYgdGVzdCAtbiAiJGN1cnJfbGFmaWxlIiAmJiBmdW5jX2xhbGliX3AgIiRjdXJyX2xhZmlsZSI7IHRoZW4KLSsJICAgICAgICAgICMgVXNlIHN1YnNoZWxsLCB0byBhdm9pZCBjbG9iYmVyaW5nIGN1cnJlbnQgdmFyaWFibGUgdmFsdWVzCi0rCSAgICAgICAgICBkbHByZWZpbGVfZGxuYW1lPWBzb3VyY2UgIiRjdXJyX2xhZmlsZSIgJiYgZWNobyAiJGRsbmFtZSJgCi0rCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsbmFtZSIgOyB0aGVuCi0rCSAgICAgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGVfZGxuYW1lIgotKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotKwkgICAgICAgICAgZWxzZQotKwkgICAgICAgICAgICAjIG5vIGxhZmlsZS4gdXNlciBleHBsaWNpdGx5IHJlcXVlc3RlZCAtZGxwcmVvcGVuIDxpbXBvcnQgbGlicmFyeT4uCi0rCSAgICAgICAgICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCAiJGRscHJlZmlsZSIKLSsJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9JHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0Ci0rCSAgICAgICAgICBmaQotKwkgICAgICAgIGZpCi0rCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSsJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSIgOyB0aGVuCi0rCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRkbHByZWZpbGVfZGxiYXNlbmFtZSIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgICBlbHNlCi0rCSAgICAgICAgICAgIGZ1bmNfd2FybmluZyAiQ291bGQgbm90IGNvbXB1dGUgRExMIG5hbWUgZnJvbSAkbmFtZSIKLSsJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLSsJICAgICAgICAgIGZpCi0rCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfAotKwkgICAgICAgICAgICAkU0VEIC1lICcvSSBfX2ltcC9kJyAtZSAncy9JIF9fbm1fL0QgLztzL19ubV9fLy8nID4+ICckbmxpc3QnIgotKwkgICAgICAgIH0KLSsJICAgICAgZWxzZSAjIG5vdCBhbiBpbXBvcnQgbGliCi0rCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSsJICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0rCSAgICAgICAgfQotKwkgICAgICBmaQotKwkgICAgOzsKLSsJICAgICopCi0rCSAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLSsJICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgICB9Ci0rCSAgICA7OwotKyAgICAgICAgICBlc2FjCi0gCWRvbmUKLSAKLSAJJG9wdF9kcnlfcnVuIHx8IHsKLUBAIC0yNjYxLDI2ICszNDM1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgKmFkZHJlc3M7Ci0gfSBsdF9kbHN5bWxpc3Q7Ci0tIgotLQkgIGNhc2UgJGhvc3QgaW4KLS0JICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLS0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0tLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZQotLSAgIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uCi0tICAgb24gcHNldWRvLXJlbG9jcy4gICovIgotLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0tCSAgKm9zZjUqKQotLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS0vKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhICovIgotLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0tCSAgKikKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PWNvbnN0IDs7Ci0tCSAgZXNhYwotLQotLQkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0tZXh0ZXJuICRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKLStleHRlcm4gTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0Ci0gbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOwotLSRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKLStMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKLSBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQotIHtcCi0gICB7IFwiJG15X29yaWdpbmF0b3JcIiwgKHZvaWQgKikgMCB9LCIKLUBAIC0yNzM2LDcgKzM0OTMsNyBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIAlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KLSAJICBjYXNlICRhcmcgaW4KLSAJICAtcGllIHwgLWZwaWUgfCAtZlBJRSkgOzsKLS0JICAqKSBzeW10YWJfY2ZsYWdzPSIkc3ltdGFiX2NmbGFncyAkYXJnIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIHN5bXRhYl9jZmxhZ3MgIiAkYXJnIiA7OwotIAkgIGVzYWMKLSAJZG9uZQotIAotQEAgLTI3OTYsOSArMzU1MywxMSBAQCBmdW5jX3dpbjMyX2xpYmlkICgpCi0gICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKLSAgICAgOzsKLSAgICphclwgYXJjaGl2ZSopICMgY291bGQgYmUgYW4gaW1wb3J0LCBvciBzdGF0aWMKLS0gICAgaWYgJE9CSkRVTVAgLWYgIiQxIiB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAotLSAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KLS0gICAgICB3aW4zMl9ubXJlcz1gJE5NIC1mIHBvc2l4IC1BICIkMSIgfAotKyAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KLSsgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAotKyAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAotIAkkU0VEIC1uIC1lICcKLSAJICAgIDEsMTAwewotIAkJLyBJIC97Ci1AQCAtMjgyNyw2ICszNTg2LDEzMSBAQCBmdW5jX3dpbjMyX2xpYmlkICgpCi0gICAkRUNITyAiJHdpbjMyX2xpYmlkX3R5cGUiCi0gfQotIAotKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliIEFSRwotKyMKLSsjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCi0rIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKLSsjIGltcG9ydCBsaWJyYXJ5IEFSRy4KLSsjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAotK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWAkRExMVE9PTCAtLWlkZW50aWZ5LXN0cmljdCAtLWlkZW50aWZ5ICIkMSJgCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgU0VDVElPTl9OQU1FIExJQk5BTUVzCi0rIwotKyMgVGhlIGlzIHRoZSBjb3JlIG9mIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYQotKyMgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgbmFtZSBvZiB0aGUKLSsjIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeSBMSUJOQU1FLgotKyMKLSsjIFNFQ1RJT05fTkFNRSBpcyBlaXRoZXIgLmlkYXRhJDYgb3IgLmlkYXRhJDcsIGRlcGVuZGluZwotKyMgb24gdGhlIHBsYXRmb3JtIGFuZCBjb21waWxlciB0aGF0IGNyZWF0ZWQgdGhlIGltcGxpYi4KLSsjCi0rIyBFY2hvcyB0aGUgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSsjIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeS4KLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCi0rICAkT0JKRFVNUCAtcyAtLXNlY3Rpb24gIiQxIiAiJDIiIDI+L2Rldi9udWxsIHwKLSsgICAgJFNFRCAnL15Db250ZW50cyBvZiBzZWN0aW9uICciJG1hdGNoX2xpdGVyYWwiJzovewotKyAgICAgICMgUGxhY2UgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBhcmNoaXZlIG1lbWJlciBkbGxuYW1lIHNlY3Rpb24KLSsgICAgICBzLy4qLz09PT1NQVJLPT09PS8KLSsgICAgICBwCi0rICAgICAgZAotKyAgICB9Ci0rICAgICMgVGhlc2UgbGluZXMgY2FuIHNvbWV0aW1lcyBiZSBsb25nZXIgdGhhbiA0MyBjaGFyYWN0ZXJzLCBidXQKLSsgICAgIyBhcmUgYWx3YXlzIHVuaW50ZXJlc3RpbmcKLSsgICAgLzpbCSBdKmZpbGUgZm9ybWF0IHBlW2ldXHssMVx9LS9kCi0rICAgIC9eSW4gYXJjaGl2ZSBbXjpdKjovZAotKyAgICAjIEVuc3VyZSBtYXJrZXIgaXMgcHJpbnRlZAotKyAgICAvXj09PT1NQVJLPT09PS9wCi0rICAgICMgUmVtb3ZlIGFsbCBsaW5lcyB3aXRoIGxlc3MgdGhhbiA0MyBjaGFyYWN0ZXJzCi0rICAgIC9eLlx7NDNcfS8hZAotKyAgICAjIEZyb20gcmVtYWluaW5nIGxpbmVzLCByZW1vdmUgZmlyc3QgNDMgY2hhcmFjdGVycwotKyAgICBzL14uXHs0M1x9Ly8nIHwKLSsgICAgJFNFRCAtbiAnCi0rICAgICAgIyBKb2luIG1hcmtlciBhbmQgYWxsIGxpbmVzIHVudGlsIG5leHQgbWFya2VyIGludG8gYSBzaW5nbGUgbGluZQotKyAgICAgIC9ePT09PU1BUks9PT09LyBiIHBhcmEKLSsgICAgICBICi0rICAgICAgJCBiIHBhcmEKLSsgICAgICBiCi0rICAgICAgOnBhcmEKLSsgICAgICB4Ci0rICAgICAgcy9cbi8vZwotKyAgICAgICMgUmVtb3ZlIHRoZSBtYXJrZXIKLSsgICAgICBzL149PT09TUFSSz09PT0vLwotKyAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIGRvdHMgYW5kIHdoaXRlc3BhY2UKLSsgICAgICBzL1tcLiBcdF0qJC8vCi0rICAgICAgIyBQcmludAotKyAgICAgIC8uL3AnIHwKLSsgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCi0rICAgICMgY29udGVudHMgb2YgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgYWxsIG1lbWJlcnMgb2YgdGhlCi0rICAgICMgYXJjaGl2ZSB3aGljaCBwb3NzZXNzIHRoYXQgc2VjdGlvbi4gSGV1cmlzdGljOiBlbGltaW5hdGUKLSsgICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcwotKyAgICAjIGEgJy4nICh0aGF0IGlzLCBvYmpkdW1wJ3MgcmVwcmVzZW50YXRpb24gb2YgYW4gdW5wcmludGFibGUKLSsgICAgIyBjaGFyYWN0ZXIuKSBUaGlzIHNob3VsZCB3b3JrIGZvciBhbGwgYXJjaGl2ZXMgd2l0aCBsZXNzIHRoYW4KLSsgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKLSsgICAgIyBiZWdpbnMgd2l0aCBhIGxpdGVyYWwgJy4nIG9yIGEgc2luZ2xlIGNoYXJhY3RlciBmb2xsb3dlZCBieQotKyAgICAjIGEgJy4nLgotKyAgICAjCi0rICAgICMgT2YgdGhvc2UgdGhhdCByZW1haW4sIHByaW50IHRoZSBmaXJzdCBvbmUuCi0rICAgICRTRUQgLWUgJy9eXC4vZDsvXi5cLi9kO3EnCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCBBUkcKLSsjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKLSsjIEFSRyBpcyBhIEdOVS9iaW51dGlscy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucwotKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KLStmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkRUdSRVAgJyAoX2hlYWRfW0EtWmEtejAtOV9dK19bYWRdbCp8W0EtWmEtejAtOV9dK19bYWRdbCpfaW5hbWUpJCdgCi0rICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wIgotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCBBUkcKLSsjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKLSsjIEFSRyBpcyBhbiBNUy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucwotKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KLStmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEdSRVAgJ19OVUxMX0lNUE9SVF9ERVNDUklQVE9SJ2AKLSsgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcCIKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgQVJHCi0rIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQotKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi0rIyBpbXBvcnQgbGlicmFyeSBBUkcuCi0rIwotKyMgVGhpcyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBpcyBmb3IgdXNlIHdoZW4gJERMTFRPT0wKLSsjIGRvZXMgbm90IHN1cHBvcnQgdGhlIC0taWRlbnRpZnktc3RyaWN0IG9wdGlvbi4KLSsjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAotK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIiA7IHRoZW4KLSsgICAgIyBiaW51dGlscyBpbXBvcnQgbGlicmFyeQotKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAotKyAgZWxpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIiA7IHRoZW4KLSsgICAgIyBtcy1nZW5lcmF0ZWQgaW1wb3J0IGxpYnJhcnkKLSsgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKLSsgIGVsc2UKLSsgICAgIyB1bmtub3duCi0rICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCi0rICBmaQotK30KLSAKLSAKLSAjIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlIGRpciBvbGRsaWIKLUBAIC0yOTE3LDcgKzM4MDEsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKLSAJICAgIGRhcndpbl9maWxlPQotIAkgICAgZGFyd2luX2ZpbGVzPQotIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCi0tCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgJE5MMlNQYAotKwkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCi0gCSAgICAgICRMSVBPIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCi0gCSAgICBkb25lICMgJGRhcndpbl9maWxlbGlzdAotIAkgICAgJFJNIC1yZiB1bmZhdC0kJAotQEAgLTI5MzIsNyArMzgxNiw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQotICAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCi0gCTs7Ci0gICAgICAgZXNhYwotLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCi0rICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCi0gICAgIGRvbmUKLSAKLSAgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdD0iJG15X29sZG9ianMiCi1AQCAtMzAxNCw3ICszODk4LDExMCBAQCBmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKLSBfTFRFQ0hPX0VPRicKLSB9Ci0gICAgIEVDSE89XCIkcUVDSE9cIgotLSAgZmlcCi0rICBmaQotKwotKyMgVmVyeSBiYXNpYyBvcHRpb24gcGFyc2luZy4gVGhlc2Ugb3B0aW9ucyBhcmUgKGEpIHNwZWNpZmljIHRvCi0rIyB0aGUgbGlidG9vbCB3cmFwcGVyLCAoYikgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIHRoZSB3cmFwcGVyCi0rIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgotKyMgd2luZG93cyBwbGF0Zm9ybXMsIGFuZCAoYykgYWxsIGJlZ2luIHdpdGggdGhlIHN0cmluZyAiLS1sdC0iCi0rIyAoYXBwbGljYXRpb24gcHJvZ3JhbXMgYXJlIHVubGlrZWx5IHRvIGhhdmUgb3B0aW9ucyB3aGljaCBtYXRjaAotKyMgdGhpcyBwYXR0ZXJuKS4KLSsjCi0rIyBUaGVyZSBhcmUgb25seSB0d28gc3VwcG9ydGVkIG9wdGlvbnM6IC0tbHQtZGVidWcgYW5kCi0rIyAtLWx0LWR1bXAtc2NyaXB0LiBUaGVyZSBpcywgZGVsaWJlcmF0ZWx5LCBubyAtLWx0LWhlbHAuCi0rIwotKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoaXMgcGFyc2luZyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlCi0rIyBzY3JpcHQncyAkMCB2YWx1ZSwgZm9sbG93ZWQgYnkgIiRAIi4KLStsdF9vcHRpb25fZGVidWc9Ci0rZnVuY19wYXJzZV9sdF9vcHRpb25zICgpCi0rewotKyAgbHRfc2NyaXB0X2FyZzA9XCQwCi0rICBzaGlmdAotKyAgZm9yIGx0X29wdAotKyAgZG8KLSsgICAgY2FzZSBcIlwkbHRfb3B0XCIgaW4KLSsgICAgLS1sdC1kZWJ1ZykgbHRfb3B0aW9uX2RlYnVnPTEgOzsKLSsgICAgLS1sdC1kdW1wLXNjcmlwdCkKLSsgICAgICAgIGx0X2R1bXBfRD1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJS9bXi9dKiQlJSdcYAotKyAgICAgICAgdGVzdCBcIlhcJGx0X2R1bXBfRFwiID0gXCJYXCRsdF9zY3JpcHRfYXJnMFwiICYmIGx0X2R1bXBfRD0uCi0rICAgICAgICBsdF9kdW1wX0Y9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyVeLiovJSUnXGAKLSsgICAgICAgIGNhdCBcIlwkbHRfZHVtcF9EL1wkbHRfZHVtcF9GXCIKLSsgICAgICAgIGV4aXQgMAotKyAgICAgIDs7Ci0rICAgIC0tbHQtKikKLSsgICAgICAgIFwkRUNITyBcIlVucmVjb2duaXplZCAtLWx0LSBvcHRpb246ICdcJGx0X29wdCdcIiAxPiYyCi0rICAgICAgICBleGl0IDEKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICBkb25lCi0rCi0rICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6Ci0rICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICBlY2hvIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlwiIDE+JjIKLSsgIGZpCi0rfQotKwotKyMgVXNlZCB3aGVuIC0tbHQtZGVidWcuIFByaW50cyBpdHMgYXJndW1lbnRzIHRvIHN0ZG91dAotKyMgKHJlZGlyZWN0aW9uIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyKQotK2Z1bmNfbHRfZHVtcF9hcmdzICgpCi0rewotKyAgbHRfZHVtcF9hcmdzX049MTsKLSsgIGZvciBsdF9hcmcKLSsgIGRvCi0rICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbXCRsdF9kdW1wX2FyZ3NfTl06IFwkbHRfYXJnXCIKLSsgICAgbHRfZHVtcF9hcmdzX049XGBleHByIFwkbHRfZHVtcF9hcmdzX04gKyAxXGAKLSsgIGRvbmUKLSt9Ci0rCi0rIyBDb3JlIGZ1bmN0aW9uIGZvciBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgotK2Z1bmNfZXhlY19wcm9ncmFtX2NvcmUgKCkKLSt7Ci0rIgotKyAgY2FzZSAkaG9zdCBpbgotKyAgIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCi0rICAqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQotKyAgICAkRUNITyAiXAotKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0rICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgMT4mMgotKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCi0rICAgICAgZmkKLSsgICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSsiCi0rICAgIDs7Ci0rCi0rICAqKQotKyAgICAkRUNITyAiXAotKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0rICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXIvXCRwcm9ncmFtXCIgMT4mMgotKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCi0rICAgICAgZmkKLSsgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSsiCi0rICAgIDs7Ci0rICBlc2FjCi0rICAkRUNITyAiXAotKyAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKLSsgICAgICBleGl0IDEKLSt9Ci0rCi0rIyBBIGZ1bmN0aW9uIHRvIGVuY2Fwc3VsYXRlIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCi0rIyBTdHJpcHMgb3B0aW9ucyBpbiB0aGUgLS1sdC0qIG5hbWVzcGFjZSBmcm9tIFwkQCBhbmQKLSsjIGxhdW5jaGVzIHRhcmdldCBhcHBsaWNhdGlvbiB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLgotK2Z1bmNfZXhlY19wcm9ncmFtICgpCi0rewotKyAgZm9yIGx0X3dyX2FyZwotKyAgZG8KLSsgICAgY2FzZSBcJGx0X3dyX2FyZyBpbgotKyAgICAtLWx0LSopIDs7Ci0rICAgICopIHNldCB4IFwiXCRAXCIgXCJcJGx0X3dyX2FyZ1wiOyBzaGlmdDs7Ci0rICAgIGVzYWMKLSsgICAgc2hpZnQKLSsgIGRvbmUKLSsgIGZ1bmNfZXhlY19wcm9ncmFtX2NvcmUgXCR7MStcIlwkQFwifQotK30KLSsKLSsgICMgUGFyc2Ugb3B0aW9ucwotKyAgZnVuY19wYXJzZV9sdF9vcHRpb25zIFwiXCQwXCIgXCR7MStcIlwkQFwifQotIAotICAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KLSAgIHRoaXNkaXI9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlL1teL10qJCUlJ1xgCi1AQCAtMzA3OCw3ICs0MDY1LDcgQEAgX0xURUNIT19FT0YnCi0gCi0gICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5Ci0gICAgIGlmIHRlc3QgLW4gXCJcJHJlbGlua19jb21tYW5kXCI7IHRoZW4KLS0gICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwiXCRyZWxpbmtfY29tbWFuZFwiIDI+JjFcYDsgdGhlbiA6Ci0rICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6Ci0gICAgICAgZWxzZQotIAkkRUNITyBcIlwkcmVsaW5rX2NvbW1hbmRfb3V0cHV0XCIgPiYyCi0gCSRSTSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgotQEAgLTMxMDIsNiArNDA4OSwxOCBAQCBfTFRFQ0hPX0VPRicKLSAKLSAgIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCi0gCi0rCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCi0rCSMKLSsJIyBGaXggdGhlIERMTCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uICBEbyB0aGlzIGJlZm9yZSBwcmVwZW5kaW5nCi0rCSMgdG8gc2hsaWJwYXRoLCBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggYXJlIFBBVEggYW5kIHVuaW5zdGFsbGVkCi0rCSMgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4KLSsJaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0rCSAgJEVDSE8gIlwKLSsgICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLSsgICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKLSsiCi0rCWZpCi0rCi0gCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgotIAlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0gCSAgJEVDSE8gIlwKLUBAIC0zMTE2LDM1ICs0MTE1LDEwIEBAIF9MVEVDSE9fRU9GJwotICIKLSAJZmkKLSAKLS0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLS0JaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0tCSAgJEVDSE8gIlwKLS0gICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLS0gICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKLS0iCi0tCWZpCi0tCi0gCSRFQ0hPICJcCi0gICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KLSAgICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgotLSIKLS0JY2FzZSAkaG9zdCBpbgotLQkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLS0JKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLS0JICAkRUNITyAiXAotLSAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotLSIKLS0JICA7OwotLQotLQkqKQotLQkgICRFQ0hPICJcCi0tICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0tIgotLQkgIDs7Ci0tCWVzYWMKLS0JJEVDSE8gIlwKLS0gICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0tICAgICAgZXhpdCAxCi0rICAgICAgZnVuY19leGVjX3Byb2dyYW0gXCR7MStcIlwkQFwifQotICAgICBmaQotICAgZWxzZQotICAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCi1AQCAtMzE1OCwxNjYgKzQxMzIsNiBAQCBmaVwKLSB9Ci0gCi0gCi0tIyBmdW5jX3RvX2hvc3RfcGF0aCBhcmcKLS0jCi0tIyBDb252ZXJ0IHBhdGhzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotLSMgSW50ZW5kZWQgZm9yIHVzZSB3aXRoICJuYXRpdmUiIG1pbmd3ICh3aGVyZSBsaWJ0b29sIGl0c2VsZgotLSMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCi0tIyBidWlsZCBlbnZpcm9ubWVudHM6Ci0tIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLS0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0tIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLS0jIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgotLSMgSW4gdGhlIG5hdGl2ZSBtaW5ndyBjYXNlLCB0aGUgKG1zeXMpIHNoZWxsIGF1dG9tYXRpY2FsbHkKLS0jIGNvbnZlcnRzIHBhdGhzIGZvciBhbnkgbm9uLW1zeXMgYXBwbGljYXRpb25zIGl0IGxhdW5jaGVzLAotLSMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KLS0jIFNpbWlsYXIgYWNjb21tb2RhdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgJGhvc3QgbWluZ3cgYW5kCi0tIyAkYnVpbGQgY3lnd2luLiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm8gaGFybSBmb3Igb3RoZXIKLS0jICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KLS0jCi0tIyBBUkcgaXMgdGhlIHBhdGggKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0tIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLS0jIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0tZnVuY190b19ob3N0X3BhdGggKCkKLS17Ci0tICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotLSAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0tICAgIGNhc2UgJGhvc3QgaW4KLS0gICAgICAqbWluZ3cqICkKLS0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLS0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0tICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCi0tICAgICAgICAgICAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0Ci0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAotLSAgICAgICAgICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICpjeWd3aW4qICkKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLXcgIiQxIiB8Ci0tCSAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqICkKLS0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCi0tICAgICAgICAgICAgIyBlcnJvciBjb2RlLCBzbyB3ZSBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZgotLSAgICAgICAgICAgICMgc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGNvbW1hbmQgaXMgbm90Ci0tICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0tICAgICAgICAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoCi0tICAgICAgICAgICAgIyBlcnJvciBjb2RlIG9mIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zCi0tICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAotLSAgICAgICAgICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfdG9faG9zdF9wYXRoX3RtcDF9IjsgdGhlbgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWAkRUNITyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHwKLS0gICAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0KLS0gICAgICAgICAgICBmaQotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLS0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKLS0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKLS0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0tICAgICAgICAgICMgRmFsbGJhY2s6Ci0tICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLS0gICAgZXNhYwotLSAgZmkKLS19Ci0tIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCi0tCi0tIyBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgYXJnCi0tIwotLSMgQ29udmVydCBwYXRobGlzdHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0tIyBTZWUgZnVuY190b19ob3N0X3BhdGgoKSwgYWJvdmUuIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlCi0tIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKLS0jIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGhlcmUpOgotLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0tIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLS0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0tIwotLSMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8KLS0jICRob3N0IGZvcm1hdC4gSWYgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvcgotLSMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQotLSMgb24gb3V0cHV0LgotLSMKLS0jIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBvbiAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLS0jIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0LgotLWZ1bmNfdG9faG9zdF9wYXRobGlzdCAoKQotLXsKLS0gIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiQxIgotLSAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0tICAgIGNhc2UgJGhvc3QgaW4KLS0gICAgICAqbWluZ3cqICkKLS0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLS0gICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotLSAgICAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQotLSAgICAgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLS0JZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLS0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0tICAgICAgICAgICptaW5ndyogKSAjIEFjdHVhbGx5LCBtc3lzLgotLSAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWAKLS0JICAgICAgKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgKSAyPi9kZXYvbnVsbCB8Ci0tCSAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqY3lnd2luKiApCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8Ci0tICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKiApCi0tICAgICAgICAgICAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aGxpc3RzCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlM9JElGUwotLSAgICAgICAgICAgIElGUz06Ci0tICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCi0tICAgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLS0gICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIgOyB0aGVuCi0tICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCi0tICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotLSAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0tICAgICAgICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0tICAgICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgZG9uZQotLSAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7IHRoZW4KLS0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoKHMpIGNvcnJlc3BvbmRpbmcgdG8iCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotLSAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKLS0gICAgICAgICAgIyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpeCBpcyBub3QgdG8gY29tcGxpY2F0ZSB0aGUgZXhwcmVzc2lvbgotLSAgICAgICAgICAjIGJlbG93LCBidXQgZm9yIHRoZSB1c2VyIHRvIHByb3ZpZGUgYSB3b3JraW5nIHdpbmUgaW5zdGFsbGF0aW9uCi0tICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3Ci0tICAgICAgICAgICMgY2FzZSB3b3JrcyBwcm9wZXJseS4KLS0gICAgICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3M9InN8Onw7fGciCi0tICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLS0gICAgICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3MiYAotLSAgICAgICAgZmkKLS0gICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCi0tICAgICAgICBjYXNlICIkMSIgaW4KLS0gICAgICAgICAgOiogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSI7JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIGNhc2UgIiQxIiBpbgotLSAgICAgICAgICAqOiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjsiCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gIGZpCi0tfQotLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aGxpc3QKLS0KLSAjIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKLSAjIGVtaXQgdGhlIHNvdXJjZSBjb2RlIGZvciBhIHdyYXBwZXIgZXhlY3V0YWJsZSBvbiBzdGRvdXQKLSAjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQotQEAgLTMzMzQsMTAgKzQxNDgsNiBAQCBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjICgpCi0gCi0gICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgotICAgIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KLS0KLS0gICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiJFNIRUxMICRvdXRwdXQiLAotLSAgIGJ1dCBjb3VsZCBldmVudHVhbGx5IGFic29yYiBhbGwgb2YgdGhlIHNjcmlwdHMgZnVuY3Rpb25hbGl0eSBhbmQKLS0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCi0gKi8KLSBFT0YKLSAJICAgIGNhdCA8PCJFT0YiCi1AQCAtMzQ2MiwyMiArNDI3MiwxMyBAQCBpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSAgIGlmIChzdGFsZSkgeyBmcmVlICgodm9pZCAqKSBzdGFsZSk7IHN0YWxlID0gMDsgfSBcCi0gfSB3aGlsZSAoMCkKLSAKLS0jdW5kZWYgTFRXUkFQUEVSX0RFQlVHUFJJTlRGCi0tI2lmIGRlZmluZWQgTFRfREVCVUdXUkFQUEVSCi0tIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpIGx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiBhcmdzCi0tc3RhdGljIHZvaWQKLS1sdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotLXsKLS0gICAgdmFfbGlzdCBhcmdzOwotLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLS0gICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7Ci0tICAgIHZhX2VuZCAoYXJncyk7Ci0tfQotKyNpZiBkZWZpbmVkKExUX0RFQlVHV1JBUFBFUikKLStzdGF0aWMgaW50IGx0X2RlYnVnID0gMTsKLSAjZWxzZQotLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKQotK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAwOwotICNlbmRpZgotIAotLWNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7Ci0rY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gImxpYnRvb2wtd3JhcHBlciI7IC8qIGluIGNhc2UgeHN0cmR1cCBmYWlscyAqLwotIAotIHZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOwotIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7Ci1AQCAtMzQ4Nyw3ICs0Mjg4LDEwIEBAIGNoYXIgKmNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYyk7Ci0gaW50IG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7Ci0gaW50IGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwotIGNoYXIgKnN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOwotLXZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Ci0rdm9pZCBsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLSt2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKLStzdGF0aWMgY29uc3QgY2hhciAqbm9ubnVsbCAoY29uc3QgY2hhciAqcyk7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKm5vbmVtcHR5IChjb25zdCBjaGFyICpzKTsKLSB2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotIGNoYXIgKmx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCk7Ci0gdm9pZCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLUBAIC0zNDk3LDE0ICs0MzAxLDE0IEBAIHZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUgKmYpOwotIEVPRgotIAotIAkgICAgY2F0IDw8RU9GCi0tY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKLSt2b2xhdGlsZSBjb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwotIGNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQVJOQU1FID0gIiRzaGxpYnBhdGhfdmFyIjsKLSBFT0YKLSAKLSAJICAgIGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCi0rICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJHRlbXBfcnBhdGgiCi0gCSAgICAgIGNhdCA8PEVPRgotLWNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKLStjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKLSBFT0YKLSAJICAgIGVsc2UKLSAJICAgICAgY2F0IDw8IkVPRiIKLUBAIC0zNTEzLDEwICs0MzE3LDEwIEBAIEVPRgotIAkgICAgZmkKLSAKLSAJICAgIGlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkZGxsc2VhcmNocGF0aDoiCi0rICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGRsbHNlYXJjaHBhdGg6IgotIAkgICAgICBjYXQgPDxFT0YKLSBjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICJQQVRIIjsKLS1jb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Ci0rY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7Ci0gRU9GCi0gCSAgICBlbHNlCi0gCSAgICAgIGNhdCA8PCJFT0YiCi1AQCAtMzUzOSwxMiArNDM0MywxMCBAQCBFT0YKLSAJICAgIGNhdCA8PCJFT0YiCi0gCi0gI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAgICAgICAgICItLWx0LSIKLS0jZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQotIAotLXN0YXRpYyBjb25zdCBzaXplX3Qgb3B0X3ByZWZpeF9sZW4gICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKLS0KLSBzdGF0aWMgY29uc3QgY2hhciAqZHVtcHNjcmlwdF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZHVtcC1zY3JpcHQiOwotK3N0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19vcHQgICAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkZWJ1ZyI7Ci0gCi0gaW50Ci0gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLUBAIC0zNTYxLDEwICs0MzYzLDEzIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICBpbnQgaTsKLSAKLSAgIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIiwgYXJndlswXSkpOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKSk7Ci0rICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7Ci0gCi0tICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLwotKyAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQKLSsgICAqIGFsc28sIGNvcHkgYWxsIG5vbiBjd3JhcHBlciBvcHRpb25zIHRvIG5ld2FyZ3osIGV4Y2VwdAotKyAgICogYXJnelswXSwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseQotKyAgICovCi0rICBuZXdhcmdjPTA7Ci0gICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQotICAgICB7Ci0gICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZHVtcHNjcmlwdF9vcHQpID09IDApCi1AQCAtMzU4MSwyMSArNDM4Niw1NCBAQCBFT0YKLSAJICBsdF9kdW1wX3NjcmlwdCAoc3Rkb3V0KTsKLSAJICByZXR1cm4gMDsKLSAJfQotKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGRlYnVnX29wdCkgPT0gMCkKLSsJewotKyAgICAgICAgICBsdF9kZWJ1ZyA9IDE7Ci0rICAgICAgICAgIGNvbnRpbnVlOwotKwl9Ci0rICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCi0rICAgICAgICB7Ci0rICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSsgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotKyAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgotKyAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCi0rICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0rICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCi0rICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgotKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLSsgICAgICAgICAgICovCi0rICAgICAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgInVucmVjb2duaXplZCAlcyBvcHRpb246ICclcyciLAotKyAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotKyAgICAgICAgfQotKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KLSsgICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLSAgICAgfQotKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKLSsKLStFT0YKLSsJICAgIGNhdCA8PEVPRgotKyAgLyogVGhlIEdOVSBiYW5uZXIgbXVzdCBiZSB0aGUgZmlyc3Qgbm9uLWVycm9yIGRlYnVnIG1lc3NhZ2UgKi8KLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKLStFT0YKLSsJICAgIGNhdCA8PCJFT0YiCi0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGFyZ3ZbMF06ICVzXG4iLCBhcmd2WzBdKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgcHJvZ3JhbV9uYW1lOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKTsKLSAKLS0gIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKLSAgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7Ci0gICBpZiAodG1wX3BhdGhzcGVjID09IE5VTEwpCi0tICAgIGx0X2ZhdGFsICgiQ291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotLQkJCSAgdG1wX3BhdGhzcGVjKSk7Ci0rICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJjb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAotKwkJICB0bXBfcGF0aHNwZWMpOwotIAotICAgYWN0dWFsX2N3cmFwcGVyX3BhdGggPSBjaGFzZV9zeW1saW5rcyAodG1wX3BhdGhzcGVjKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotLQkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKLSsJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOwotICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7Ci0gCi0tICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKLSsgIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCAoYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwotICAgc3RyZW5kemFwIChhY3R1YWxfY3dyYXBwZXJfcGF0aCwgYWN0dWFsX2N3cmFwcGVyX25hbWUpOwotIAotICAgLyogd3JhcHBlciBuYW1lIHRyYW5zZm9ybXMgKi8KLUBAIC0zNjEzLDggKzQ0NTEsOSBAQCBFT0YKLSAgIHRhcmdldF9uYW1lID0gdG1wX3BhdGhzcGVjOwotICAgdG1wX3BhdGhzcGVjID0gMDsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCi0tCQkJICB0YXJnZXRfbmFtZSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLSsJCSAgdGFyZ2V0X25hbWUpOwotIEVPRgotIAotIAkgICAgY2F0IDw8RU9GCi1AQCAtMzY2NCwzNSArNDUwMywxOSBAQCBFT0YKLSAKLSAgIGx0X3NldGVudiAoIkJJTl9TSCIsICJ4cGc0Iik7IC8qIGZvciBUcnU2NCAqLwotICAgbHRfc2V0ZW52ICgiRFVBTENBU0UiLCAiMSIpOyAgLyogZm9yIE1TSyBzaCAqLwotLSAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7Ci0rICAvKiBVcGRhdGUgdGhlIERMTCBzZWFyY2hwYXRoLiAgRVhFX1BBVEhfVkFMVUUgKCRkbGxzZWFyY2hwYXRoKSBtdXN0Ci0rICAgICBiZSBwcmVwZW5kZWQgYmVmb3JlICh0aGF0IGlzLCBhcHBlYXIgYWZ0ZXIpIExJQl9QQVRIX1ZBTFVFICgkdGVtcF9ycGF0aCkKLSsgICAgIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCAqX1ZBUk5BTUVzIGFyZSBQQVRIIGJ1dCB1bmluc3RhbGxlZAotKyAgICAgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4gKi8KLSAgIGx0X3VwZGF0ZV9leGVfcGF0aCAoRVhFX1BBVEhfVkFSTkFNRSwgRVhFX1BBVEhfVkFMVUUpOwotKyAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7Ci0gCi0tICBuZXdhcmdjPTA7Ci0tICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQotLSAgICB7Ci0tICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBvcHRfcHJlZml4X2xlbikgPT0gMCkKLS0gICAgICAgIHsKLS0gICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotLSAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCi0tICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0tICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKLS0gICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLS0gICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLS0gICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCi0tICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgotLSAgICAgICAgICAgKi8KLS0gICAgICAgICAgbHRfZmF0YWwgKCJVbnJlY29nbml6ZWQgb3B0aW9uIGluICVzIG5hbWVzcGFjZTogJyVzJyIsCi0tICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7Ci0tICAgICAgICB9Ci0tICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLwotLSAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwotLSAgICB9Ci0tICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwotLQotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbHRfYXJndl96ZXJvOiAlc1xuIiwKLSsJCSAgbm9ubnVsbCAobHRfYXJndl96ZXJvKSk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQotICAgICB7Ci0tICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBuZXdhcmd6WyVkXSAgIDogJXNcbiIsIGksIChuZXdhcmd6W2ldID8gbmV3YXJneltpXSA6ICI8TlVMTD4iKSkpOwotKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbmV3YXJnelslZF06ICVzXG4iLAotKwkJICAgICAgaSwgbm9ubnVsbCAobmV3YXJneltpXSkpOwotICAgICB9Ci0gCi0gRU9GCi1AQCAtMzcwNiw3ICs0NTI5LDkgQEAgRU9GCi0gICBpZiAocnZhbCA9PSAtMSkKLSAgICAgewotICAgICAgIC8qIGZhaWxlZCB0byBzdGFydCBwcm9jZXNzICovCi0tICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6IGVycm5vID0gJWRcbiIsIGx0X2FyZ3ZfemVybywgZXJybm8pKTsKLSsgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICAgIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6ICVzXG4iLAotKwkJICAgICAgbHRfYXJndl96ZXJvLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gICAgICAgcmV0dXJuIDEyNzsKLSAgICAgfQotICAgcmV0dXJuIHJ2YWw7Ci1AQCAtMzcyOCw3ICs0NTUzLDcgQEAgeG1hbGxvYyAoc2l6ZV90IG51bSkKLSB7Ci0gICB2b2lkICpwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOwotICAgaWYgKCFwKQotLSAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKLSsgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgIm1lbW9yeSBleGhhdXN0ZWQiKTsKLSAKLSAgIHJldHVybiBwOwotIH0KLUBAIC0zNzYyLDggKzQ1ODcsOCBAQCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQotIHsKLSAgIHN0cnVjdCBzdGF0IHN0OwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihjaGVja19leGVjdXRhYmxlKSAgOiAlc1xuIiwKLS0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihjaGVja19leGVjdXRhYmxlKTogJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKLSAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQotICAgICByZXR1cm4gMDsKLSAKLUBAIC0zNzgwLDggKzQ2MDUsOCBAQCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCi0gICBpbnQgcnZhbCA9IDA7Ci0gICBzdHJ1Y3Qgc3RhdCBzdDsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFrZV9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0tCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFrZV9leGVjdXRhYmxlKTogJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKLSAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQotICAgICByZXR1cm4gMDsKLSAKLUBAIC0zODA3LDggKzQ2MzIsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCi0gICBpbnQgdG1wX2xlbjsKLSAgIGNoYXIgKmNvbmNhdF9uYW1lOwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLS0JCQkgIHdyYXBwZXIgPyAoKndyYXBwZXIgPyB3cmFwcGVyIDogIkVNUFRZISIpIDogIk5VTEwhIikpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihmaW5kX2V4ZWN1dGFibGUpOiAlc1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25lbXB0eSAod3JhcHBlcikpOwotIAotICAgaWYgKCh3cmFwcGVyID09IE5VTEwpIHx8ICgqd3JhcHBlciA9PSAnXDAnKSkKLSAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzg2MSw3ICs0Njg2LDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotIAkJewotIAkJICAvKiBlbXB0eSBwYXRoOiBjdXJyZW50IGRpcmVjdG9yeSAqLwotIAkJICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0tCQkgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0rCQkgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gCQkgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7Ci0gCQkgIGNvbmNhdF9uYW1lID0KLSAJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKLUBAIC0zODg2LDcgKzQ3MTIsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCi0gICAgIH0KLSAgIC8qIFJlbGF0aXZlIHBhdGggfCBub3QgZm91bmQgaW4gcGF0aDogcHJlcGVuZCBjd2QgKi8KLSAgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLS0gICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0rICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gICB0bXBfbGVuID0gc3RybGVuICh0bXApOwotICAgY29uY2F0X25hbWUgPSBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKLSAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7Ci1AQCAtMzkxMiw4ICs0NzM5LDkgQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQotICAgaW50IGhhc19zeW1saW5rcyA9IDA7Ci0gICB3aGlsZSAoc3RybGVuICh0bXBfcGF0aHNwZWMpICYmICFoYXNfc3ltbGlua3MpCi0gICAgIHsKLS0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKLS0JCQkgICAgICB0bXBfcGF0aHNwZWMpKTsKLSsgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICAgImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCi0rCQkgICAgICB0bXBfcGF0aHNwZWMpOwotICAgICAgIGlmIChsc3RhdCAodG1wX3BhdGhzcGVjLCAmcykgPT0gMCkKLSAJewotIAkgIGlmIChTX0lTTE5LIChzLnN0X21vZGUpICE9IDApCi1AQCAtMzkzNSw4ICs0NzYzLDkgQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0tCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKLS0JICBsdF9mYXRhbCAoIkVycm9yIGFjY2Vzc2luZyBmaWxlICVzICglcykiLCB0bXBfcGF0aHNwZWMsIGVycnN0cik7Ci0rCSAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAiZXJyb3IgYWNjZXNzaW5nIGZpbGUgXCIlc1wiOiAlcyIsCi0rCQkgICAgdG1wX3BhdGhzcGVjLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gCX0KLSAgICAgfQotICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7Ci1AQCAtMzk0OSw3ICs0Nzc4LDggQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQotICAgdG1wX3BhdGhzcGVjID0gcmVhbHBhdGggKHBhdGhzcGVjLCBidWYpOwotICAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQotICAgICB7Ci0tICAgICAgbHRfZmF0YWwgKCJDb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKLSsgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAotKwkJImNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOwotICAgICB9Ci0gICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKLSAjZW5kaWYKLUBAIC0zOTc1LDExICs0ODA1LDI1IEBAIHN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpCi0gICByZXR1cm4gc3RyOwotIH0KLSAKLSt2b2lkCi0rbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpZiAobHRfZGVidWcpCi0rICAgIHsKLSsgICAgICAodm9pZCkgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSk7Ci0rICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0rICAgICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7Ci0rICAgICAgdmFfZW5kIChhcmdzKTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZAotLWx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKLStsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKmZpbGUsCi0rCSAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqbW9kZSwKLSAJICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXApCi0gewotLSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOwotKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICVzOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUsIG1vZGUpOwotICAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOwotICAgZnByaW50ZiAoc3RkZXJyLCAiLlxuIik7Ci0gCi1AQCAtMzk4OCwyMCArNDgzMiwzMiBAQCBsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCi0gfQotIAotIHZvaWQKLS1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQotK2x0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQotIHsKLSAgIHZhX2xpc3QgYXA7Ci0gICB2YV9zdGFydCAoYXAsIG1lc3NhZ2UpOwotLSAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7Ci0rICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsIGZpbGUsIGxpbmUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKLSAgIHZhX2VuZCAoYXApOwotIH0KLSAKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rbm9ubnVsbCAoY29uc3QgY2hhciAqcykKLSt7Ci0rICByZXR1cm4gcyA/IHMgOiAiKG51bGwpIjsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK25vbmVtcHR5IChjb25zdCBjaGFyICpzKQotK3sKLSsgIHJldHVybiAocyAmJiAhKnMpID8gIihlbXB0eSkiIDogbm9ubnVsbCAocyk7Ci0rfQotKwotIHZvaWQKLSBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7Ci0gICB7Ci0gI2lmZGVmIEhBVkVfU0VURU5WCi0gICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCi1AQCAtNDA0OSw5ICs0OTA1LDkgQEAgbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKQotIHZvaWQKLSBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKLSAKLSAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKLSAgICAgewotQEAgLTQwNzAsOSArNDkyNiw5IEBAIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gdm9pZAotIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gewotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwotIAotICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQotICAgICB7Ci1AQCAtNDIyMiw3ICs1MDc4LDcgQEAgRU9GCi0gZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKLSB7Ci0gICAgICRvcHRfZGVidWcKLS0gICAgY2FzZSBgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwiIHwgJFNFRCAtZSAxMHFgIGluCi0rICAgIGNhc2UgYGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwgfCAkU0VEIC1lIDEwcWAgaW4KLSAgICAgKmltcG9ydCopIDogOzsKLSAgICAgKikgZmFsc2UgOzsKLSAgICAgZXNhYwotQEAgLTQ0MDEsOSArNTI1Nyw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICA7OwotIAkgICopCi0gCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0tCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgotIAkgICAgZWxzZQotLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgotKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGFyZyIKLSAJICAgIGZpCi0gCSAgICBwcmV2PQotIAkgICAgY29udGludWUKLUBAIC00NDI3LDcgKzUyODMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKi0qLWRhcndpbiopCi0gCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KLSAJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OwotLQkJKikgZGVwbGlicz0iJGRlcGxpYnMgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgotKwkJKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKLSAJCSAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLUBAIC00NDQ2LDcgKzUzMDIsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgbW9yZWFyZ3M9Ci0gCSAgICBmb3IgZmlsIGluIGBjYXQgIiRzYXZlX2FyZyJgCi0gCSAgICBkbwotLSMJICAgICAgbW9yZWFyZ3M9IiRtb3JlYXJncyAkZmlsIgotKyMJICAgICAgZnVuY19hcHBlbmQgbW9yZWFyZ3MgIiAkZmlsIgotIAkgICAgICBhcmc9JGZpbAotIAkgICAgICAjIEEgbGlidG9vbC1jb250cm9sbGVkIG9iamVjdC4KLSAKLUBAIC00NDc1LDcgKzUzMzEsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0gCQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotLQkJICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCi0gCQkgICAgICBwcmV2PQotIAkJICAgICAgY29udGludWUKLSAJCSAgICBlbHNlCi1AQCAtNDQ4Nyw3ICs1MzQzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKLSAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgotIAkJICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLS0JCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKLSsJCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCi0gCQkgICAgcHJldj0KLSAJCSAgZmkKLSAKLUBAIC00NTU3LDEyICs1NDEzLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgaWYgdGVzdCAiJHByZXYiID0gcnBhdGg7IHRoZW4KLSAJICAgIGNhc2UgIiRycGF0aCAiIGluCi0gCSAgICAqIiAkYXJnICIqKSA7OwotLQkgICAgKikgcnBhdGg9IiRycGF0aCAkYXJnIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OwotIAkgICAgZXNhYwotIAkgIGVsc2UKLSAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgotIAkgICAgKiIgJGFyZyAiKikgOzsKLS0JICAgICopIHhycGF0aD0iJHhycGF0aCAkYXJnIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGFyZyIgOzsKLSAJICAgIGVzYWMKLSAJICBmaQotIAkgIHByZXY9Ci1AQCAtNDU3NCwyOCArNTQzMCwyOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJd2VhaykKLS0JICB3ZWFrX2xpYnM9IiR3ZWFrX2xpYnMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCB3ZWFrX2xpYnMgIiAkYXJnIgotIAkgIHByZXY9Ci0gCSAgY29udGludWUKLSAJICA7OwotIAl4Y2NsaW5rZXIpCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKLSAJICBwcmV2PQotIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgotIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXhjb21waWxlcikKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCi0gCSAgcHJldj0KLSAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAl4bGlua2VyKQotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJHFhcmciCi0gCSAgcHJldj0KLSAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKLSAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHdsJHFhcmciCi1AQCAtNDY4NiwxNSArNTU0MiwxNiBAQCBmdW5jX21vZGVfbGluayAoKQotIAk7OwotIAotICAgICAgIC1MKikKLS0JZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGFyZyIKLS0JZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0JaWYgdGVzdCAteiAiJGRpciI7IHRoZW4KLSsJZnVuY19zdHJpcG5hbWUgIi1MIiAnJyAiJGFyZyIKLSsJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KLSAJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgInJlcXVpcmUgbm8gc3BhY2UgYmV0d2VlbiBcYC1MJyBhbmQgXGAkMSciCi0gCSAgZWxzZQotIAkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCi0gCSAgZmkKLSAJZmkKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCWRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0gCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAljYXNlICRkaXIgaW4KLSAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwotQEAgLTQ3MDYsMTAgKzU1NjMsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICA7OwotIAllc2FjCi0gCWNhc2UgIiRkZXBsaWJzICIgaW4KLS0JKiIgLUwkZGlyICIqKSA7OwotKwkqIiAtTCRkaXIgIiogfCAqIiAkYXJnICIqKQotKwkgICMgV2lsbCBvbmx5IGhhcHBlbiBmb3IgYWJzb2x1dGUgb3Igc3lzcm9vdCBhcmd1bWVudHMKLSsJICA7OwotIAkqKQotLQkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKLS0JICBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIKLSsJICAjIFByZXNlcnZlIHN5c3Jvb3QsIGJ1dCBuZXZlciBpbmNsdWRlIHJlbGF0aXZlIGRpcmVjdG9yaWVzCi0rCSAgY2FzZSAkZGlyIGluCi0rCSAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSogfCA9KikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLUwkZGlyIiA7OwotKwkgIGVzYWMKLSsJICBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIgotIAkgIDs7Ci0gCWVzYWMKLSAJY2FzZSAkaG9zdCBpbgotQEAgLTQ3MTgsMTIgKzU1ODEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRkaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGRpciI7OwotIAkgIGVzYWMKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTQ3NDcsNyArNTYxMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICA7OwotIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKLSAJICAgICMgUmhhcHNvZHkgQyBhbmQgbWF0aCBsaWJyYXJpZXMgYXJlIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0tCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0rCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgotIAkgICAgY29udGludWUKLSAJICAgIDs7Ci0gCSAgKi0qLXNjbzMuMnY1KiB8ICotKi1zY281djYqKQotQEAgLTQ3NTgsOSArNTYyMSw2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAjIENvbXBpbGVyIGluc2VydHMgbGliYyBpbiB0aGUgY29ycmVjdCBwbGFjZSBmb3IgdGhyZWFkcyB0byB3b3JrCi0gCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKLSAJICAgIDs7Ci0tCSAgKi0qLWxpbnV4KikKLS0JICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQotLQkgICAgOzsKLSAJICBlc2FjCi0gCWVsaWYgdGVzdCAiWCRhcmciID0gIlgtbGNfciI7IHRoZW4KLSAJIGNhc2UgJGhvc3QgaW4KLUBAIC00NzcwLDcgKzU2MzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICA7OwotIAkgZXNhYwotIAlmaQotLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKLSAJY29udGludWUKLSAJOzsKLSAKLUBAIC00NzgyLDggKzU2NDIsOCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICMgVHJ1NjQgVU5JWCB1c2VzIC1tb2RlbCBbYXJnXSB0byBkZXRlcm1pbmUgdGhlIGxheW91dCBvZiBDKysKLSAgICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCi0gICAgICAgIyBEYXJ3aW4gdXNlcyB0aGUgLWFyY2ggZmxhZyB0byBkZXRlcm1pbmUgb3V0cHV0IGFyY2hpdGVjdHVyZS4KLS0gICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290KQotLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdHwtLXN5c3Jvb3QpCi0rCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gCXByZXY9eGNvbXBpbGVyCi1AQCAtNDc5MSwxMiArNTY1MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAk7OwotIAotICAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCi0tCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLSsJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJICAgICoiICRhcmcgIiopIDs7Ci0tCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkYXJnIiA7OwotKwkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGFyZyIgOzsKLSAJZXNhYwotIAljb250aW51ZQotIAk7OwotQEAgLTQ4NjMsMTMgKzU3MjMsMTcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCi0gCWNhc2UgJGRpciBpbgotIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7Ci0rCT0qKQotKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGRpciIKLSsJICBkaXI9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCSAgOzsKLSAJKikKLSAJICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKLSAJICA7OwotIAllc2FjCi0gCWNhc2UgIiR4cnBhdGggIiBpbgotIAkqIiAkZGlyICIqKSA7OwotLQkqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKLSsJKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKLSAJZXNhYwotIAljb250aW51ZQotIAk7OwotQEAgLTQ5MjIsOCArNTc4Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZvciBmbGFnIGluICRhcmdzOyBkbwotIAkgIElGUz0iJHNhdmVfaWZzIgotICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLS0JICBhcmc9IiRhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAJZG9uZQotIAlJRlM9IiRzYXZlX2lmcyIKLSAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgotQEAgLTQ5MzgsOSArNTgwMiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZvciBmbGFnIGluICRhcmdzOyBkbwotIAkgIElGUz0iJHNhdmVfaWZzIgotICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLS0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgYXJnICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAJZG9uZQotIAlJRlM9IiRzYXZlX2lmcyIKLSAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgotQEAgLTQ5NjgsMjQgKzU4MzIsMjcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCTs7Ci0gCi0tICAgICAgIyAtNjQsIC1taXBzWzAtOV0gZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTR0kgY29tcGlsZXIKLS0gICAgICAjIC1yWzAtOV1bMC05XSogc3BlY2lmaWVzIHRoZSBwcm9jZXNzb3Igb24gdGhlIFNHSSBjb21waWxlcgotLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKLS0gICAgICAjICtEQSosICtERCogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBIUCBjb21waWxlcgotLSAgICAgICMgLXEqIHBhc3MgdGhyb3VnaCBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCi0tICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCi0tICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKLS0gICAgICAjIC1GL3BhdGggZ2l2ZXMgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCi0tICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQwotLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCi0tICAgICAgIyAtdHA9KiBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCi0rICAgICAgIyBGbGFncyB0byBiZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQsIHdpdGggcmF0aW9uYWxlOgotKyAgICAgICMgLTY0LCAtbWlwc1swLTldICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU0dJIGNvbXBpbGVyCi0rICAgICAgIyAtclswLTldWzAtOV0qICAgICAgICBzcGVjaWZ5IHByb2Nlc3NvciBmb3IgdGhlIFNHSSBjb21waWxlcgotKyAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU3VuIGNvbXBpbGVyCi0rICAgICAgIyArREEqLCArREQqICAgICAgICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBIUCBjb21waWxlcgotKyAgICAgICMgLXEqICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotKyAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZsYWdzIGZvciBHQ0MKLSsgICAgICAjIC1GL3BhdGggICAgICAgICAgICAgIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotKyAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogIHByb2ZpbGluZyBmbGFncyBmb3IgR0NDCi0rICAgICAgIyBAZmlsZSAgICAgICAgICAgICAgICBHQ0MgcmVzcG9uc2UgZmlsZXMKLSsgICAgICAjIC10cD0qICAgICAgICAgICAgICAgIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KLSsgICAgICAjIC0tc3lzcm9vdD0qICAgICAgICAgIGZvciBzeXNyb290IHN1cHBvcnQKLSsgICAgICAjIC1PKiwgLWZsdG8qLCAtZndob3ByKiwgLWZ1c2UtbGlua2VyLXBsdWdpbiBHQ0MgbGluay10aW1lIG9wdGltaXphdGlvbgotICAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAotLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KikKLSsgICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSp8LS1zeXNyb290PSp8IFwKLSsgICAgICAtTyp8LWZsdG8qfC1md2hvcHIqfC1mdXNlLWxpbmtlci1wbHVnaW4pCi0gICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLS0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLSsgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKLSAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICA7OwotIAotQEAgLTQ5OTcsNyArNTg2NCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gICAgICAgKi4kb2JqZXh0KQotIAkjIEEgc3RhbmRhcmQgb2JqZWN0LgotLQlvYmpzPSIkb2JqcyAkYXJnIgotKwlmdW5jX2FwcGVuZCBvYmpzICIgJGFyZyIKLSAJOzsKLSAKLSAgICAgICAqLmxvKQotQEAgLTUwMjgsNyArNTg5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLS0JCWRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgotKwkJZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJcHJldj0KLSAJCWNvbnRpbnVlCi0gCSAgICAgIGVsc2UKLUBAIC01MDQwLDcgKzU5MDcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKLSAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KLSAJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKLSsJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkgICAgICBwcmV2PQotIAkgICAgZmkKLSAKLUBAIC01MDg1LDI0ICs1OTUyLDI1IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gICAgICAgKi4kbGliZXh0KQotIAkjIEFuIGFyY2hpdmUuCi0tCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0tCW9sZF9kZXBsaWJzPSIkb2xkX2RlcGxpYnMgJGFyZyIKLSsJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCi0rCWZ1bmNfYXBwZW5kIG9sZF9kZXBsaWJzICIgJGFyZyIKLSAJY29udGludWUKLSAJOzsKLSAKLSAgICAgICAqLmxhKQotIAkjIEEgbGlidG9vbC1jb250cm9sbGVkIGxpYnJhcnkuCi0gCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkYXJnIgotIAlpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0gCSAgIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbG9wZW4uCi0tCSAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICBwcmV2PQotIAllbGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KLSAJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgotLQkgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgcHJldj0KLSAJZWxzZQotLQkgIGRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCWZpCi0gCWNvbnRpbnVlCi0gCTs7Ci1AQCAtNTEyNyw3ICs1OTk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2YXJnJyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCi0gCi0gICAgIGlmIHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXMgJiYgdGVzdCAtbiAiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyI7IHRoZW4KLS0gICAgICBldmFsICJhcmc9XCIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIiCi0rICAgICAgZXZhbCBhcmc9XCIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKLSAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotICAgICBmaQotQEAgLTUxNDQsMTEgKzYwMTIsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgZWxzZQotICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQotICAgICBmaQotLSAgICBldmFsICJzeXNfbGliX3NlYXJjaF9wYXRoPVwiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlY1wiIgotLSAgICBldmFsICJzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIiIKLSsgICAgZXZhbCBzeXNfbGliX3NlYXJjaF9wYXRoPVwiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlY1wiCi0rICAgIGV2YWwgc3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIKLSAKLSAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKLSAgICAgb3V0cHV0X29iamRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkb2JqZGlyIgotKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvIgotKyAgICB0b29sX291dHB1dF9vYmpkaXI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KLSAgICAgZnVuY19ta2Rpcl9wICIkb3V0cHV0X29iamRpciIKLSAKLUBAIC01MTY5LDEyICs2MDM5LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICMgRmluZCBhbGwgaW50ZXJkZXBlbmRlbnQgZGVwbGlicyBieSBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcwotICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKLSAgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KLS0gICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKyAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCWNhc2UgIiRsaWJzICIgaW4KLS0JKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBmaQotLSAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCi0rICAgICAgZnVuY19hcHBlbmQgbGlicyAiICRkZXBsaWIiCi0gICAgIGRvbmUKLSAKLSAgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgotQEAgLTUxODcsOSArNjA1Nyw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KLSAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCi0gCSAgY2FzZSAiJHByZV9wb3N0X2RlcHMgIiBpbgotLQkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7Ci0rCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkcHJlX3Bvc3RfZGVwcyIgOzsKLSAJICBlc2FjCi0tCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKLSsJICBmdW5jX2FwcGVuZCBwcmVfcG9zdF9kZXBzICIgJHByZV9wb3N0X2RlcCIKLSAJZG9uZQotICAgICAgIGZpCi0gICAgICAgcHJlX3Bvc3RfZGVwcz0KLUBAIC01MjU2LDggKzYxMjYsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwotIAkgICMgSWdub3JlIG5vbi1saWJ0b29sLWxpYnMKLSAJICBkZXBlbmRlbmN5X2xpYnM9Ci0rCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCi0gCSAgY2FzZSAkbGliIGluCi0tCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRsaWIiIDs7Ci0rCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7Ci0gCSAgZXNhYwotIAotIAkgICMgQ29sbGVjdCBwcmVvcGVuZWQgbGlidG9vbCBkZXBsaWJzLCBleGNlcHQgYW55IHRoaXMgbGlicmFyeQotQEAgLTUyNjcsNyArNjEzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgICAgICAgZGVwbGliX2Jhc2U9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0Ci0gCSAgICBjYXNlICIgJHdlYWtfbGlicyAiIGluCi0gCSAgICAqIiAkZGVwbGliX2Jhc2UgIiopIDs7Ci0tCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlkb25lCi1AQCAtNTI4OCwxMSArNjE1OSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCi0gCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgotIAkgIGVsc2UKLS0JICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGRlcGxpYiIKLSAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCi0gCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0tCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKLSsJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwotIAkJZXNhYwotIAkgICAgZmkKLSAJICBmaQotQEAgLTUzNzcsNyArNjI0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgotIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7Ci0rCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKLSAJCWVzYWMKLSAJICAgIGZpCi0gCSAgZmkKLUBAIC01MzkwLDcgKzYyNjEsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQotIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgICA7OwotIAkgIHByb2cpCi0gCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCi1AQCAtNTQwNCw3ICs2Mjc2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICAgIGZpCi0gCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgICA7OwotIAkgICopCi0gCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCi1AQCAtNTQxNSwxNyArNjI4OCwyMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAktUiopCi0gCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGRlcGxpYiIKLS0JICAgIGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0gCSAgICAjIE1ha2Ugc3VyZSB0aGUgeHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgotIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCi0gCSAgICAqIiAkZGlyICIqKSA7OwotLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwotIAkgICAgZXNhYwotIAkgIGZpCi0gCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0tCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKLSsJKi5sYSkKLSsJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLSsJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotKwkgIDs7Ci0gCSouJGxpYmV4dCkKLSAJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCi0gCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotQEAgLTU0ODgsMTEgKzYzNjUsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbiB8fCB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVuCi0gCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAotIAkgICAgICAjIHdlIG5lZWQgdG8gcHJlbG9hZC4KLS0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCi0gCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgotIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgotIAkgICAgZWxzZQotLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGRlcGxpYiIKLSAJICAgIGZpCi0gCSAgZmkKLSAJICBjb250aW51ZQotQEAgLTU1MzgsNyArNjQxNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbwotIAkgICAgY2FzZSAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCSAgICAgICoiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnICIqKSA7OwotLQkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCWZpCi1AQCAtNTU0Niw4ICs2NDIzLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayIgfHwKLSAJICAgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLHNjYW4iIHx8Ci0gCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCi0tCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZGxmaWxlcz0iJGRsZmlsZXMgJGRsb3BlbiIKLS0JICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkZGxwcmVvcGVuIgotKwkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZGxvcGVuIgotKwkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZGxwcmVvcGVuIgotIAlmaQotIAotIAlpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCi1AQCAtNTU1OCwyMCArNjQzNSwyMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKLSAJICAgIGZpCi0gCSAgICAjIEl0IGlzIGEgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5LCBzbyBhZGQgaW4gaXRzIG9iamVjdHMuCi0tCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLS0JICAgIG9sZF9jb252ZW5pZW5jZT0iJG9sZF9jb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICBmdW5jX2FwcGVuZCBjb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgIGZ1bmNfYXBwZW5kIG9sZF9jb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLSAJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IgotIAkgIGZpCi0gCSAgdG1wX2xpYnM9Ci0gCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLS0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLS0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKLSAJICBkb25lCi0gCSAgY29udGludWUKLSAJZmkgIyAkcGFzcyA9IGNvbnYKLUBAIC01NTc5LDkgKzY0NTYsMTUgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgotIAlsaW5rbGliPQotLQlmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCi0tCSAgbGlua2xpYj0iJGwiCi0tCWRvbmUKLSsJaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJgotKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8Ci0rCSAgICAgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIiA9ICJidWlsdCxubyI7IH07IHRoZW4KLSsJICBsaW5rbGliPSRvbGRfbGlicmFyeQotKwllbHNlCi0rCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotKwkgICAgbGlua2xpYj0iJGwiCi0rCSAgZG9uZQotKwlmaQotIAlpZiB0ZXN0IC16ICIkbGlua2xpYiI7IHRoZW4KLSAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKLSAJZmkKLUBAIC01NTk4LDkgKzY0ODEsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKLSAJICAgICMgZGVwZW5kZW50IGxpYnJhcmllcyBzbyBsaWJsdGRsJ3MgZGVwbGliIHByZWxvYWRlciBkb2Vzbid0Ci0gCSAgICAjIGJvbWIgb3V0IGluIHRoZSBsb2FkIGRlcGxpYnMgcGhhc2UuCi0tCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliICRkZXBlbmRlbmN5X2xpYnMiCi0rCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgotIAkgIGVsc2UKLS0JICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIKLSAJICBmaQotIAkgIGNvbnRpbnVlCi0gCWZpICMgJHBhc3MgPSBkbG9wZW4KLUBAIC01NjIyLDE0ICs2NTA1LDE0IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgotIAlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCi0tCSAgaWYgdGVzdCAhIC1mICIkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgotKwkgIGlmIHRlc3QgISAtZiAiJGx0X3N5c3Jvb3QkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgotIAkgICAgZnVuY193YXJuaW5nICJsaWJyYXJ5IFxgJGxpYicgd2FzIG1vdmVkLiIKLSAJICAgIGRpcj0iJGxhZGlyIgotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgIGVsc2UKLS0JICAgIGRpcj0iJGxpYmRpciIKLS0JICAgIGFic2Rpcj0iJGxpYmRpciIKLSsJICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgotKwkgICAgYWJzZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCi0gCSAgZmkKLSAJICB0ZXN0ICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSBYeWVzICYmIGF2b2lkdGVtcHJwYXRoPXllcwotIAllbHNlCi1AQCAtNTYzNywxMiArNjUyMCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgZGlyPSIkbGFkaXIiCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0tCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKLSsJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCi0gCSAgZWxzZQotIAkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpci8kb2JqZGlyIgotIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCi0rCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgotIAkgIGZpCi0gCWZpICMgJGluc3RhbGxlZCA9IHllcwotIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJGxhbmFtZSIKLUBAIC01NjUzLDIwICs2NTM2LDQ2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKLSAJICBmaQotLQkgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotLQkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotLQkgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KLS0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJG9sZF9saWJyYXJ5IgotLQkgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0tCSAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KLS0JICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLS0JCWRscHJlY29udmVuaWVuY2VsaWJzPSIkZGxwcmVjb252ZW5pZW5jZWxpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0tCSAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KLS0JICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0tCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCi0tCSAgZWxzZQotLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kbGlua2xpYiIKLS0JICBmaQotKwkgIGNhc2UgIiRob3N0IiBpbgotKwkgICAgIyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwbGF0Zm9ybXMgd2l0aCBQRS1ETExzLgotKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0rCSAgICAgICMgTGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcnkgaWYgYm90aAotKwkgICAgICAjIHN0YXRpYyBhbmQgc2hhcmVkIGFyZSBwcmVzZW50LiAgVGhlcmVmb3JlLCBlbnN1cmUgd2UgZXh0cmFjdAotKwkgICAgICAjIHN5bWJvbHMgZnJvbSB0aGUgaW1wb3J0IGxpYnJhcnkgaWYgYSBzaGFyZWQgbGlicmFyeSBpcyBwcmVzZW50Ci0rCSAgICAgICMgKG90aGVyd2lzZSwgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSB3aWxsIGJlIGluY29ycmVjdCkuICBXZSBkbwotKwkgICAgICAjIHRoaXMgYnkgcHV0dGluZyB0aGUgaW1wb3J0IGxpYnJhcnkgbmFtZSBpbnRvICRuZXdkbHByZWZpbGVzLgotKwkgICAgICAjIFdlIHJlY292ZXIgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSBieSAnc2F2aW5nJyB0aGUgbGEgZmlsZQotKwkgICAgICAjIG5hbWUgaW4gYSBzcGVjaWFsIHB1cnBvc2UgdmFyaWFibGUsIGFuZCAobGF0ZXIpIGV4dHJhY3RpbmcgdGhlCi0rCSAgICAgICMgZGxuYW1lIGZyb20gdGhlIGxhIGZpbGUuCi0rCSAgICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0rCSAgICAgICAgZnVuY190cl9zaCAiJGRpci8kbGlua2xpYiIKLSsJICAgICAgICBldmFsICJsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdD1cJGFic19sYWRpci9cJGxhbmFtZSIKLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKLSsJICAgICAgZWxzZQotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLSsJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KLSsJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0rCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICBmaQotKwkgICAgOzsKLSsJICAgICogKQotKwkgICAgICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLSsJICAgICAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0rCSAgICAgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0rCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0rCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KLSsJICAgICAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRkbG5hbWUiCi0rCSAgICAgIGVsc2UKLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgZXNhYwotIAlmaSAjICRwYXNzID0gZGxwcmVvcGVuCi0gCi0gCWlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCi1AQCAtNTY4NCw3ICs2NTkzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAKLSAJaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KLS0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxhZGlyIgotKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRsYWRpciIKLSAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgotIAotIAkgIGxpbmthbGxkZXBsaWJzPW5vCi1AQCAtNTY5Nyw3ICs2NjA2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgICBjYXNlICRkZXBsaWIgaW4KLSAJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgICAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkJIDs7Ci0gCSAgICBlc2FjCi0gCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/Ci1AQCAtNTcwOCwxMiArNjYxOCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICAjIG9yL2FuZCBsaW5rIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcwotIAkgICAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLSAJICAgIGZpCi0tCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLS0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0tCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCi0gCSAgZG9uZSAjIGZvciBkZXBsaWIKLSAJICBjb250aW51ZQotIAlmaSAjICRsaW5rbW9kZSA9IHByb2cuLi4KLUBAIC01NzI4LDcgKzY2MzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCi0gCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KLSAJICAgICAgKiIkYWJzZGlyOiIqKSA7OwotLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX3JwYXRoICIkYWJzZGlyOiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAKLUBAIC01NzQwLDcgKzY2NTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU3NDksNyArNjY1OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU3NzQsMTIgKzY2ODQsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBjYXNlICRob3N0IGluCi0gCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKLSAJICAgICAgIyBObyBwb2ludCBpbiByZWxpbmtpbmcgRExMcyBiZWNhdXNlIHBhdGhzIGFyZSBub3QgZW5jb2RlZAotLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKLSAJICAgICAgbmVlZF9yZWxpbms9bm8KLSAJICAgIDs7Ci0gCSAgKikKLSAJICAgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm87IHRoZW4KLS0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCi0gCSAgICAgIG5lZWRfcmVsaW5rPXllcwotIAkgICAgZmkKLSAJICAgIDs7Ci1AQCAtNTgxNCw3ICs2NzI0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01ODIzLDcgKzY3MzMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01ODM1LDcgKzY3NDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgc2hpZnQKLSAJICAgIHJlYWxuYW1lPSIkMSIKLSAJICAgIHNoaWZ0Ci0tCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0gCSAgICAjIHVzZSBkbG5hbWUgaWYgd2UgZ290IGl0LiBpdCdzIHBlcmZlY3RseSBnb29kLCBubz8KLSAJICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0gCSAgICAgIHNvbmFtZT0iJGRsbmFtZSIKLUBAIC01ODQ4LDcgKzY3NTgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJdmVyc3VmZml4PSItJG1ham9yIgotIAkJOzsKLSAJICAgICAgZXNhYwotLQkgICAgICBldmFsICJzb25hbWU9XCIkc29uYW1lX3NwZWNcIiIKLSsJICAgICAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgotIAkgICAgZWxzZQotIAkgICAgICBzb25hbWU9IiRyZWFsbmFtZSIKLSAJICAgIGZpCi1AQCAtNTg3Nyw3ICs2Nzg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGxpbmtsaWI9JG5ld2xpYgotIAkgIGZpICMgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIgotIAotLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KLSsJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgotIAkgICAgYWRkX3NobGlicGF0aD0KLSAJICAgIGFkZF9kaXI9Ci0gCSAgICBhZGQ9Ci1AQCAtNTkzMyw3ICs2ODQzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQkgIGNhc2UgJGxpYmRpciBpbgotIAkJICAgIFtcXC9dKikKLS0JCSAgICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICAgIDs7Ci0gCQkgIGVzYWMKLSAJCWZpCi1AQCAtNTk1NSw3ICs2ODY1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGlmIHRlc3QgLW4gIiRhZGRfc2hsaWJwYXRoIjsgdGhlbgotIAkgICAgICBjYXNlIDokY29tcGlsZV9zaGxpYnBhdGg6IGluCi0gCSAgICAgICoiOiRhZGRfc2hsaWJwYXRoOiIqKSA7OwotLQkgICAgICAqKSBjb21waWxlX3NobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJGFkZF9zaGxpYnBhdGg6IiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3NobGlicGF0aCAiJGFkZF9zaGxpYnBhdGg6IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KLUBAIC01OTY5LDEzICs2ODc5LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCi0gCQljYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgotIAkJKiI6JGxpYmRpcjoiKikgOzsKLS0JCSopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OwotKwkJKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLSAJICAgIGZpCi0gCSAgZmkKLSAKLS0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0gCSAgICBhZGRfc2hsaWJwYXRoPQotIAkgICAgYWRkX2Rpcj0KLSAJICAgIGFkZD0KLUBAIC01OTg5LDcgKzY4OTksNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KLSAJICAgICAgY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KLSAJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKLS0JICAgICAgKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgYWRkPSItbCRuYW1lIgotIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgotQEAgLTYwMDEsMTIgKzY5MTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmkKLSAJICAgIGVsc2UKLSAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KLS0JICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgotKwkgICAgICBhZGRfZGlyPSItTCRsdF9zeXNyb290JGxpYmRpciIKLSAJICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgotIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJY2FzZSAkbGliZGlyIGluCi0gCQkgIFtcXC9dKikKLS0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi1AQCAtNjA4MywyNyArNjk5MywzMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJCSAgIGNhc2UgIiAkeHJwYXRoICIgaW4KLSAJCSAgICoiICR0ZW1wX3hycGF0aCAiKikgOzsKLS0JCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKLSsJCSAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICR0ZW1wX3hycGF0aCI7OwotIAkJICAgZXNhYzs7Ci0tCSAgICAgICopIHRlbXBfZGVwbGlicz0iJHRlbXBfZGVwbGlicyAkbGliZGlyIjs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfZGVwbGlicyAiICRsaWJkaXIiOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF9kZXBsaWJzIgotIAkgIGZpCi0gCi0tCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRhYnNkaXIiCi0rCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGFic2RpciIKLSAJICAjIExpbmsgYWdhaW5zdCB0aGlzIGxpYnJhcnkKLSAJICB0ZXN0ICIkbGlua19zdGF0aWMiID0gbm8gJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkYWJzX2xhZGlyLyRsYW5hbWUgJG5ld2RlcGVuZGVuY3lfbGlicyIKLSAJICAjIC4uLiBhbmQgaXRzIGRlcGVuZGVuY3lfbGlicwotIAkgIHRtcF9saWJzPQotIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsJICAgIGNhc2UgJGRlcGxpYiBpbgotKyAgICAgICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotKyAgICAgICAgICAgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7OwotKyAgICAgICAgICAgICAgKikgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiIDs7Ci0rICAgICAgICAgICAgZXNhYwotKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLS0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0ICIqKQotKyAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0tCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgZG9uZQotIAotIAkgIGlmIHRlc3QgIiRsaW5rX2FsbF9kZXBsaWJzIiAhPSBubzsgdGhlbgotQEAgLTYxMTMsOCArNzAyOSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBjYXNlICRkZXBsaWIgaW4KLSAJICAgICAgLUwqKSBwYXRoPSIkZGVwbGliIiA7OwotIAkgICAgICAqLmxhKQotKwkgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgotKwkgICAgICAgIGRlcGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0gCSAgICAgICAgZnVuY19kaXJuYW1lICIkZGVwbGliIiAiIiAiLiIKLS0JCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0rCQlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKLSAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAkJY2FzZSAkZGlyIGluCi0gCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic2Rpcj0iJGRpciIgOzsKLUBAIC02MTMwLDcgKzcwNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJY2FzZSAkaG9zdCBpbgotIAkJKi0qLWRhcndpbiopCi0gCQkgIGRlcGRlcGw9Ci0tCQkgIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0rCQkgIGV2YWwgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSAJCSAgaWYgdGVzdCAtbiAiJGRlcGxpYnJhcnlfbmFtZXMiIDsgdGhlbgotIAkJICAgIGZvciB0bXAgaW4gJGRlcGxpYnJhcnlfbmFtZXMgOyBkbwotIAkJICAgICAgZGVwZGVwbD0kdG1wCi1AQCAtNjE0MSw4ICs3MDU5LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MNjR9IC1MICRkZXBkZXBsICB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKLSAgICAgICAgICAgICAgICAgICAgICAgZmkKLS0JCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLS0JCSAgICAgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0rCQkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0rCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0gCQkgICAgICBwYXRoPQotIAkJICAgIGZpCi0gCQkgIGZpCi1AQCAtNjE1Miw3ICs3MDcwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSAgOzsKLSAJCWVzYWMKLSAJCWVsc2UKLS0JCSAgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0rCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0gCQkgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLSAJCSAgdGVzdCAiJGFic2RpciIgIT0gIiRsaWJkaXIiICYmIFwKLUBAIC02MTkyLDcgKzcxMTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGZvciBkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aDsgZG8KLSAJICAgIGNhc2UgIiRsaWJfc2VhcmNoX3BhdGggIiBpbgotIAkgICAgKiIgJGRpciAiKikgOzsKLS0JICAgICopIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCSAgbmV3bGliX3NlYXJjaF9wYXRoPQotQEAgLTYyMDUsNyArNzEyMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZpCi0gCWZvciB2YXIgaW4gJHZhcnMgZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICMgQWRkIGxpYnJhcmllcyB0byAkdmFyIGluIHJldmVyc2Ugb3JkZXIKLS0JICBldmFsIHRtcF9saWJzPVwkJHZhcgotKwkgIGV2YWwgdG1wX2xpYnM9XCJcJCR2YXJcIgotIAkgIG5ld19saWJzPQotIAkgIGZvciBkZXBsaWIgaW4gJHRtcF9saWJzOyBkbwotIAkgICAgIyBGSVhNRTogUGVkYW50aWNhbGx5LCB0aGlzIGlzIHRoZSByaWdodCB0aGluZyB0byBkbywgc28KLUBAIC02MjUwLDEzICs3MTY4LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAtTCopCi0gCSAgICAgIGNhc2UgIiAkdG1wX2xpYnMgIiBpbgotIAkgICAgICAqIiAkZGVwbGliICIqKSA7OwotLQkgICAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotLQkgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLS0JICBldmFsICR2YXI9XCR0bXBfbGlicwotKwkgIGV2YWwgJHZhcj1cIiR0bXBfbGlic1wiCi0gCWRvbmUgIyBmb3IgdmFyCi0gICAgICAgZmkKLSAgICAgICAjIExhc3Qgc3RlcDogcmVtb3ZlIHJ1bnRpbWUgbGlicyBmcm9tIGRlcGVuZGVuY3lfbGlicwotQEAgLTYyNjksNyArNzE4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgOzsKLSAJZXNhYwotIAlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0tCSAgdG1wX2xpYnM9IiR0bXBfbGlicyAkaSIKLSsJICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRpIgotIAlmaQotICAgICAgIGRvbmUKLSAgICAgICBkZXBlbmRlbmN5X2xpYnM9JHRtcF9saWJzCi1AQCAtNjMxMCw3ICs3MjI4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KLSAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KLSAgICAgICBvbGRsaWJzPSIkb3V0cHV0IgotLSAgICAgIG9ianM9IiRvYmpzJG9sZF9kZXBsaWJzIgotKyAgICAgIGZ1bmNfYXBwZW5kIG9ianMgIiRvbGRfZGVwbGlicyIKLSAgICAgICA7OwotIAotICAgICBsaWIpCi1AQCAtNjMxOSw4ICs3MjM3LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBsaWIqKQotIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJG91dHB1dG5hbWUiCi0gCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0tCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCi0rCWV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgotIAk7OwotICAgICAgICopCi0gCXRlc3QgIiRtb2R1bGUiID0gbm8gJiYgXAotQEAgLTYzMzAsOCArNzI0OCw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgIyBBZGQgdGhlICJsaWIiIHByZWZpeCBmb3IgbW9kdWxlcyBpZiByZXF1aXJlZAotIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKLSAJICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0JICBldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0tCSAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJICBldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgotKwkgIGV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgotIAllbHNlCi0gCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgotIAkgIGxpYm5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotQEAgLTYzNDYsNyArNzI2NCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZWNobwotIAkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKLSAJICAkRUNITyAiKioqIG9iamVjdHMgJG9ianMgaXMgbm90IHBvcnRhYmxlISIKLS0JICBsaWJvYmpzPSIkbGlib2JqcyAkb2JqcyIKLSsJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJG9ianMiCi0gCWZpCi0gICAgICAgZmkKLSAKLUBAIC02NTQ0LDcgKzc0NjIsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGRvbmUKLSAKLSAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCi0tCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKLSsJICBmdW5jX2FwcGVuZCB2ZXJzdHJpbmcgIjoke2N1cnJlbnR9LjAiCi0gCSAgOzsKLSAKLSAJcW54KQotQEAgLTY2MTIsMTAgKzc1MzAsMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmaQotIAotICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgotLSAgICAgIGxpYm9ianM9IiRsaWJvYmpzICRzeW1maWxlb2JqIgotKyAgICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkc3ltZmlsZW9iaiIKLSAgICAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAotLSAgICAgIGlmIHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgotIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQotIAkjIG1heSBoYXZlIGJlZW4gY3JlYXRlZCB3aGVuIGNvbXBpbGluZyBQSUMgb2JqZWN0cy4KLSAJcmVtb3ZlbGlzdD0KLUBAIC02NjMxLDcgKzc1NDksNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJICAgY29udGludWUKLSAJCSBmaQotIAkgICAgICAgZmkKLS0JICAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRwIgotKwkgICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRwIgotIAkgICAgICAgOzsKLSAJICAgICopIDs7Ci0gCSAgZXNhYwotQEAgLTY2NDIsNyArNzU2MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCi0gICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSBjb252ZW5pZW5jZSA7IHRoZW4KLS0Jb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKLSsJZnVuY19hcHBlbmQgb2xkbGlicyAiICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCi0gCi0gCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KLSAJb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAkbG8ybyIgfCAkTkwyU1BgCi1AQCAtNjY1OSwxMCArNzU3NywxMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCi0gCXRlbXBfeHJwYXRoPQotIAlmb3IgbGliZGlyIGluICR4cnBhdGg7IGRvCi0tCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRsaWJkaXIiCi0rCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCSAgZnVuY19hcHBlbmQgdGVtcF94cnBhdGggIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCi0gCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlkb25lCi0gCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi1AQCAtNjY3Niw3ICs3NTk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmb3IgbGliIGluICRvbGRfZGxmaWxlczsgZG8KLSAJY2FzZSAiICRkbHByZWZpbGVzICRkbGZpbGVzICIgaW4KLSAJKiIgJGxpYiAiKikgOzsKLS0JKikgZGxmaWxlcz0iJGRsZmlsZXMgJGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gCi1AQCAtNjY4Niw3ICs3NjA1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KLSAJY2FzZSAiJGRscHJlZmlsZXMgIiBpbgotIAkqIiAkbGliICIqKSA7OwotLQkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAKLUBAIC02Njk4LDcgKzc2MTcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCi0gCSAgICAjIFJoYXBzb2R5IEMgbGlicmFyeSBpcyBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgotKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKLSAJICAgIDs7Ci0gCSAgKi0qLW5ldGJzZCopCi0gCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KLUBAIC02NzE1LDcgKzc2MzQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICopCi0gCSAgICAjIEFkZCBsaWJjIHRvIGRlcGxpYnMgb24gYWxsIG90aGVyIHN5c3RlbXMgaWYgbmVjZXNzYXJ5LgotIAkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbmVlZF9sYyIgPSAieWVzIjsgdGhlbgotLQkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtbGMiCi0gCSAgICBmaQotIAkgICAgOzsKLSAJICBlc2FjCi1AQCAtNjc2NCwxOCArNzY4MywxOCBAQCBFT0YKLSAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkgICoiICRpICIqKQotLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgICBpPSIiCi0gCQkgICAgOzsKLSAJCSAgZXNhYwotIAkJZmkKLSAJCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLS0JCSAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLS0JCSAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCQkgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotKwkJICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCi0gCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0Ci0gCQkgIGRlcGxpYl9tYXRjaD0kMQotIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0tCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICBlbHNlCi0gCQkgICAgZHJvcHBlZGRlcHM9eWVzCi0gCQkgICAgZWNobwotQEAgLTY3ODksNyArNzcwOCw3IEBAIEVPRgotIAkJZmkKLSAJCTs7Ci0gCSAgICAgICopCi0tCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLUBAIC02ODA3LDE4ICs3NzI2LDE4IEBAIEVPRgotIAkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQkgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkgICAgKiIgJGkgIiopCi0tCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgICAgIGk9IiIKLSAJCSAgICAgIDs7Ci0gCQkgICAgZXNhYwotIAkJICBmaQotIAkJICBpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0tCQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLS0JCSAgICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKLSsJCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSsJCSAgICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCi0gCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKLSAJCSAgICBkZXBsaWJfbWF0Y2g9JDEKLSAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0tCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgICBlbHNlCi0gCQkgICAgICBkcm9wcGVkZGVwcz15ZXMKLSAJCSAgICAgIGVjaG8KLUBAIC02ODQwLDcgKzc3NTksNyBAQCBFT0YKLSAJCWZpCi0gCQk7OwotIAkgICAgICAqKQotLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi1AQCAtNjg1NywxNSArNzc3NiwyNyBAQCBFT0YKLSAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkqIiAkYV9kZXBsaWIgIiopCi0tCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCSAgYV9kZXBsaWI9IiIKLSAJCSAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLSAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KLS0JCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSsJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCi0rCQkgIGxpYm5hbWVnbG9iPWBmdW5jX2VjaG9fYWxsICIkbGlibmFtZSIgfCAkU0VEIC1lICRmaWxlX21hZ2ljX2dsb2JgCi0rCQllbHNlCi0rCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCi0rCQlmaQotKwkJdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXMgJiYgbm9jYXNlZ2xvYj1gc2hvcHQgLXAgbm9jYXNlZ2xvYmAKLSAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotLQkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKLSsJCSAgaWYgdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXM7IHRoZW4KLSsJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCi0rCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAotKwkJICAgICRub2Nhc2VnbG9iCi0rCQkgIGVsc2UKLSsJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCi0rCQkgIGZpCi0gCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KLSAJCSAgICAgICMgRm9sbG93IHNvZnQgbGlua3MuCi0gCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIgMj4vZGV2L251bGwgfAotQEAgLTY4ODUsMTAgKzc4MTYsMTAgQEAgRU9GCi0gCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKLSAJCQllc2FjCi0gCQkgICAgICBkb25lCi0tCQkgICAgICBpZiBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIiAyPi9kZXYvbnVsbCB8Ci0rCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAotIAkJCSAkU0VEIC1lIDEwcSB8Ci0gCQkJICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0tCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkJYV9kZXBsaWI9IiIKLSAJCQlicmVhayAyCi0gCQkgICAgICBmaQotQEAgLTY5MTMsNyArNzg0NCw3IEBAIEVPRgotIAkgICAgICA7OwotIAkgICAgKikKLSAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLS0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkgICAgICA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCi1AQCAtNjkyOSwyMCArNzg2MCwyMCBAQCBFT0YKLSAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkqIiAkYV9kZXBsaWIgIiopCi0tCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCSAgYV9kZXBsaWI9IiIKLSAJCSAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLSAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KLS0JCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKLSAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwotIAkJICAgIHBvdGxpYj0iJHBvdGVudF9saWIiICMgc2VlIHN5bWxpbmstY2hlY2sgYWJvdmUgaW4gZmlsZV9tYWdpYyB0ZXN0Ci0gCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKLSAJCSAgICAgICAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCSAgICAgIGFfZGVwbGliPSIiCi0gCQkgICAgICBicmVhayAyCi0gCQkgICAgZmkKLUBAIC02OTY3LDcgKzc4OTgsNyBAQCBFT0YKLSAJICAgICAgOzsKLSAJICAgICopCi0gCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0tCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgotQEAgLTcwNzEsNyArODAwMiw3IEBAIEVPRgotIAkqKQotIAkgIGNhc2UgIiAkZGVwbGlicyAiIGluCi0gCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0rCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTcwODEsMTAgKzgwMTIsMTAgQEAgRU9GCi0gCS1MKikKLSAJICBjYXNlICIgJG5ld19saWJzICIgaW4KLSAJICAqIiAkZGVwbGliICIqKSA7OwotLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0tCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotICAgICAgIGRlcGxpYnM9IiRuZXdfbGlicyIKLUBAIC03MTAxLDEwICs4MDMyLDEyIEBAIEVPRgotIAkgIGhhcmRjb2RlX2xpYmRpcnM9Ci0gCSAgZGVwX3JwYXRoPQotIAkgIHJwYXRoPSIkZmluYWxpemVfcnBhdGgiCi0tCSAgdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCi0rCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgotIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwotIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCi0gCQllbHNlCi1AQCAtNzExMywxOCArODA0NiwxOCBAQCBFT0YKLSAJCSAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQotIAkJICAgIDs7Ci0gCQkgICopCi0tCQkgICAgaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0rCQkgICAgZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotIAkJICAgIDs7Ci0gCQkgIGVzYWMKLSAJCWZpCi0gCSAgICAgIGVsc2UKLS0JCWV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotLQkJZGVwX3JwYXRoPSIkZGVwX3JwYXRoICRmbGFnIgotKwkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKwkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCi0gCSAgICAgIGZpCi0gCSAgICBlbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgotIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotLQkgICAgICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVkIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGRvbmUKLUBAIC03MTMzLDQwICs4MDY2LDM4IEBAIEVPRgotIAkgICAgIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLSAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIjsgdGhlbgotLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiIgotKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIKLSAJICAgIGVsc2UKLS0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gCSAgICBmaQotIAkgIGZpCi0gCSAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkcGVybV9ycGF0aCI7IHRoZW4KLSAJICAgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCi0gCSAgICBycGF0aD0KLSAJICAgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0tCSAgICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKLSsJICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgotIAkgICAgZG9uZQotLQkgICAgZXZhbCAkcnVucGF0aF92YXI9XCRycGF0aFwkJHJ1bnBhdGhfdmFyCi0tCSAgICBleHBvcnQgJHJ1bnBhdGhfdmFyCi0rCSAgICBldmFsICIkcnVucGF0aF92YXI9JyRycGF0aFwkJHJ1bnBhdGhfdmFyJzsgZXhwb3J0ICRydW5wYXRoX3ZhciIKLSAJICBmaQotIAkgIHRlc3QgLW4gIiRkZXBfcnBhdGgiICYmIGRlcGxpYnM9IiRkZXBfcnBhdGggJGRlcGxpYnMiCi0gCWZpCi0gCi0gCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKLS0JdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCi0rCXRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKLSAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KLS0JICBldmFsICRzaGxpYnBhdGhfdmFyPVwkc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3ZhcgotLQkgIGV4cG9ydCAkc2hsaWJwYXRoX3ZhcgotKwkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKLSAJZmkKLSAKLSAJIyBHZXQgdGhlIHJlYWwgYW5kIGxpbmsgbmFtZXMgb2YgdGhlIGxpYnJhcnkuCi0tCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKLS0JZXZhbCAibGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKLSsJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKLSsJZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiCi0gCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcwotIAlzaGlmdAotIAlyZWFsbmFtZT0iJDEiCi0gCXNoaWZ0Ci0gCi0gCWlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KLS0JICBldmFsICJzb25hbWU9XCIkc29uYW1lX3NwZWNcIiIKLSsJICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCi0gCWVsc2UKLSAJICBzb25hbWU9IiRyZWFsbmFtZSIKLSAJZmkKLUBAIC03MTc4LDcgKzgxMDksNyBAQCBFT0YKLSAJbGlua25hbWVzPQotIAlmb3IgbGluawotIAlkbwotLQkgIGxpbmtuYW1lcz0iJGxpbmtuYW1lcyAkbGluayIKLSsJICBmdW5jX2FwcGVuZCBsaW5rbmFtZXMgIiAkbGluayIKLSAJZG9uZQotIAotIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotQEAgLTcxODksNyArODEyMCw3IEBAIEVPRgotIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgotIAkgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgotLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzIgotKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzIgotIAlmaQotIAotIAlvcmlnX2V4cG9ydF9zeW1ib2xzPQotQEAgLTcyMjAsMTMgKzgxNTEsNDUgQEAgRU9GCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwotIAkgICAgY21kcz0kZXhwb3J0X3N5bWJvbHNfY21kcwotIAkgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0tCSAgICBmb3IgY21kIGluICRjbWRzOyBkbwotKwkgICAgZm9yIGNtZDEgaW4gJGNtZHM7IGRvCi0gCSAgICAgIElGUz0iJHNhdmVfaWZzIgotLQkgICAgICBldmFsICJjbWQ9XCIkY21kXCIiCi0tCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKLS0JICAgICAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKLS0JICAgICAgaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCi0rCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCi0rCSAgICAgICMgZG9lc24ndCB3b3JrIG9yIGlmIHRvb2wgY29udmVyc2lvbiBpcyBub3QgbmVlZGVkLgotKwkgICAgICBjYXNlICRubV9maWxlX2xpc3Rfc3BlY34kdG9fdG9vbF9maWxlX2NtZCBpbgotKwkJKn5mdW5jX2NvbnZlcnRfZmlsZV9ub29wIHwgKn5mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiB8IH4qKQotKwkJICB0cnlfbm9ybWFsX2JyYW5jaD15ZXMKLSsJCSAgZXZhbCBjbWQ9XCIkY21kMVwiCi0rCQkgIGZ1bmNfbGVuICIgJGNtZCIKLSsJCSAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKLSsJCSAgOzsKLSsJCSopCi0rCQkgIHRyeV9ub3JtYWxfYnJhbmNoPW5vCi0rCQkgIDs7Ci0rCSAgICAgIGVzYWMKLSsJICAgICAgaWYgdGVzdCAiJHRyeV9ub3JtYWxfYnJhbmNoIiA9IHllcyBcCi0rCQkgJiYgeyB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgXAotKwkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KLSsJICAgICAgdGhlbgotKwkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JwotKwkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKLSsJICAgICAgZWxpZiB0ZXN0IC1uICIkbm1fZmlsZV9saXN0X3NwZWMiOyB0aGVuCi0rCQlmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgotKwkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAotKwkJc2F2ZV9saWJvYmpzPSRsaWJvYmpzCi0rCQlzYXZlX291dHB1dD0kb3V0cHV0Ci0rCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KLSsJCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkJbGlib2Jqcz0kbm1fZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0rCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0rCQlmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICROTSBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCi0rCQlmb3Igb2JqIGluICRzYXZlX2xpYm9ianM7IGRvCi0rCQkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkJICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKLSsJCWRvbmUgPiAiJG91dHB1dCIKLSsJCWV2YWwgY21kPVwiJGNtZDFcIgotIAkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JwotKwkJb3V0cHV0PSRzYXZlX291dHB1dAotKwkJbGlib2Jqcz0kc2F2ZV9saWJvYmpzCi0gCQlza2lwcGVkX2V4cG9ydD1mYWxzZQotIAkgICAgICBlbHNlCi0gCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KLUBAIC03MjQ4LDcgKzgyMTEsNyBAQCBFT0YKLSAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgotIAkgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotLQkgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCi0gCWZpCi0gCi0gCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCi1AQCAtNzI2MCw3ICs4MjIzLDcgQEAgRU9GCi0gCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKLSAJICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgotIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSsJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0gCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCi0gCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKLSAJZmkKLUBAIC03MjcwLDcgKzgyMzMsNyBAQCBFT0YKLSAJICBjYXNlICIgJGNvbnZlbmllbmNlICIgaW4KLSAJICAqIiAkdGVzdF9kZXBsaWIgIiopIDs7Ci0gCSAgKikKLS0JICAgIHRtcF9kZXBsaWJzPSIkdG1wX2RlcGxpYnMgJHRlc3RfZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2RlcGxpYnMgIiAkdGVzdF9kZXBsaWIiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJZG9uZQotQEAgLTcyODYsNDMgKzgyNDksNDMgQEAgRU9GCi0gCSAgZmkKLSAJICBpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0gCSAgICBzYXZlX2xpYm9ianM9JGxpYm9ianMKLS0JICAgIGV2YWwgImxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCi0rCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLSAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCSAgZWxzZQotIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICAgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgICAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQotLQkgICAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGZpCi0gCWZpCi0gCi0gCWlmIHRlc3QgIiR0aHJlYWRfc2FmZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJHRocmVhZF9zYWZlX2ZsYWdfc3BlYyI7IHRoZW4KLS0JICBldmFsICJmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiIgotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKLSsJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZmxhZyIKLSAJZmkKLSAKLSAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCi0tCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSkgfHwgZXhpdCAkPwotKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPwotIAlmaQotIAotIAkjIERvIGVhY2ggb2YgdGhlIGFyY2hpdmUgY29tbWFuZHMuCi0gCWlmIHRlc3QgIiRtb2R1bGUiID0geWVzICYmIHRlc3QgLW4gIiRtb2R1bGVfY21kcyIgOyB0aGVuCi0gCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkbW9kdWxlX2V4cHN5bV9jbWRzIjsgdGhlbgotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIKLSAJICAgIGNtZHM9JG1vZHVsZV9leHBzeW1fY21kcwotIAkgIGVsc2UKLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIgotIAkgICAgY21kcz0kbW9kdWxlX2NtZHMKLSAJICBmaQotIAllbHNlCi0gCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkYXJjaGl2ZV9leHBzeW1fY21kcyI7IHRoZW4KLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIKLSAJICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKLSAJICBlbHNlCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIgotIAkgICAgY21kcz0kYXJjaGl2ZV9jbWRzCi0gCSAgZmkKLSAJZmkKLUBAIC03MzY2LDEwICs4MzI5LDEzIEBAIEVPRgotIAkgICAgZWNobyAnSU5QVVQgKCcgPiAkb3V0cHV0Ci0gCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKLSAJICAgIGRvCi0tCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0Ci0rCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAotIAkgICAgZG9uZQotIAkgICAgZWNobyAnKScgPj4gJG91dHB1dAotLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgICBvdXRwdXQ9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotIAkgIGVsaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICJYJGZpbGVfbGlzdF9zcGVjIiAhPSBYOyB0aGVuCi0gCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCi0gCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGxpbmtlciBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCi1AQCAtNzM4MywxNSArODM0OSwxNyBAQCBFT0YKLSAJICAgIGZpCi0gCSAgICBmb3Igb2JqCi0gCSAgICBkbwotLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAotKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKLSAJICAgIGRvbmUKLS0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLS0JICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgotKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIKLSAJICBlbHNlCi0gCSAgICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIjsgdGhlbgotIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgotIAkgICAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLS0JICAgICAgZXZhbCAidGVzdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCi0rCSAgICAgIGV2YWwgdGVzdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKLSAJICAgICAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgotIAkgICAgICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKLSAJICAgICAgbGVuPSRsZW4wCi1AQCAtNzQxMSwxMiArODM3OSwxMiBAQCBFT0YKLSAJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgotIAkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCi0gCQkgICAgcmVsb2FkX29ianM9JG9iamxpc3QKLS0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiIgotKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgotIAkJICBlbHNlCi0gCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KLSAJCSAgICAjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotIAkJICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgotLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCi0rCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCi0gCQkgIGZpCi0gCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotIAkJICBmdW5jX2FyaXRoICRrICsgMQotQEAgLTc0MzMsMTEgKzg0MDEsMTEgQEAgRU9GCi0gCSAgICAgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLSAJICAgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCi0tCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIiCi0rCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgotIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgotLQkgICAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiIgotKwkgICAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIKLSAJICAgICAgZmkKLS0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0gCi0gCSAgICBlbHNlCi0gCSAgICAgIG91dHB1dD0KLUBAIC03NDUwLDkgKzg0MTgsOSBAQCBFT0YKLSAJICAgICAgbGlib2Jqcz0kb3V0cHV0Ci0gCSAgICAgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgZXhwb3J0IGZpbGUuCi0gCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiIgotKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIKLSAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KLS0JCWV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKLSsJCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAotQEAgLTc0NzEsNyArODQzOSw3IEBAIEVPRgotIAkJbHRfZXhpdD0kPwotIAotIAkJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0tCQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKLSAJCSAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAotIAkJICAgICRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCi1AQCAtNzQ5Miw3ICs4NDYwLDcgQEAgRU9GCi0gCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgotIAkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLS0JICAgICAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKLSsJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCi0gCSAgICBmaQotIAotIAkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCi1AQCAtNzUwNCw3ICs4NDcyLDcgQEAgRU9GCi0gCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5Ci0gCSAgICAgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCi0gCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSAJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCi0gCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCi0gCSAgICBmaQotQEAgLTc1MTUsNyArODQ4Myw3IEBAIEVPRgotIAkgIG91dHB1dD0kc2F2ZV9vdXRwdXQKLSAKLSAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiICYmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLS0JICAgIGV2YWwgImxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCi0rCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLSAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCSAgZmkKLSAJICAjIEV4cGFuZCB0aGUgbGlicmFyeSBsaW5raW5nIGNvbW1hbmRzIGFnYWluIHRvIHJlc2V0IHRoZQotQEAgLTc1MzksMjMgKzg1MDcsMjMgQEAgRU9GCi0gCi0gCWlmIHRlc3QgLW4gIiRkZWxmaWxlcyI7IHRoZW4KLSAJICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzIHRvICRjbWRzLgotLQkgIGV2YWwgImNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIiIKLSsJICBldmFsIGNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIgotIAlmaQotIAotIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKLSAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0tCSAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAkgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCWZpCi0gCi0gCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotIAlmb3IgY21kIGluICRjbWRzOyBkbwotIAkgIElGUz0iJHNhdmVfaWZzIgotLQkgIGV2YWwgImNtZD1cIiRjbWRcIiIKLSsJICBldmFsIGNtZD1cIiRjbWRcIgotIAkgICRvcHRfc2lsZW50IHx8IHsKLSAJICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKLSAJICAgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKLUBAIC03NTY0LDcgKzg1MzIsNyBAQCBFT0YKLSAJICAgIGx0X2V4aXQ9JD8KLSAKLSAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotLQkgICAgaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0gCSAgICAgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCi0gCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKLSAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCi1AQCAtNzU3Niw4ICs4NTQ0LDggQEAgRU9GCi0gCUlGUz0iJHNhdmVfaWZzIgotIAotIAkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLS0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0tCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKSB8fCBleGl0ICQ/Ci0rCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/Ci0gCi0gCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgotIAkgICAgaWYgdGVzdCAteiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotQEAgLTc2NTYsMTcgKzg2MjQsMjAgQEAgRU9GCi0gCi0gICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgotIAlpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAidG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKLSsJICBldmFsIHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLSAJICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICIkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFNFRCAnc3wsfCB8ZydgCi0gCWVsc2UKLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKLSAJICByZWxvYWRfY29udl9vYmpzPSIkcmVsb2FkX29ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCWZpCi0gICAgICAgZmkKLSAKLSsgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcwotKyAgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBsaWJvYmpzPSIkbm9uX3BpY19vYmplY3RzIgotKwotICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7IC9cLmxpYiQvZDsgJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAotIAotQEAgLTc2OTAsNyArODY2MSw3IEBAIEVPRgotIAkjIENyZWF0ZSBhbiBpbnZhbGlkIGxpYnRvb2wgb2JqZWN0IGlmIG5vIFBJQywgc28gdGhhdCB3ZSBkb24ndAotIAkjIGFjY2lkZW50YWxseSBsaW5rIGl0IGludG8gYSBwcm9ncmFtLgotIAkjICRzaG93ICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiCi0tCSMgJG9wdF9kcnlfcnVuIHx8IGVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiB8fCBleGl0ICQ/Ci0rCSMgJG9wdF9kcnlfcnVuIHx8IGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPwotIAlleGl0ICRFWElUX1NVQ0NFU1MKLSAgICAgICBmaQotIAotQEAgLTc3NDAsOCArODcxMSw4IEBAIEVPRgotIAlpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCi0gCSAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSBpbgotIAkgICAgMTAuWzAxMjNdKQotLQkgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotLQkgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKLSsJICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKLSAJICAgIDs7Ci0gCSAgZXNhYwotIAlmaQotQEAgLTc3NjEsNyArODczMiw3IEBAIEVPRgotIAkqKQotIAkgIGNhc2UgIiAkY29tcGlsZV9kZXBsaWJzICIgaW4KLSAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0tCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNzc3MSwxNyArODc0MiwxNyBAQCBFT0YKLSAJLUwqKQotIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgotIAkgICoiICRkZXBsaWIgIiopIDs7Ci0tCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLS0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gICAgICAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2xpYnMiCi0gCi0gCi0tICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRjb21waWxlX2RlcGxpYnMiCi0tICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGZpbmFsaXplX2RlcGxpYnMiCi0rICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKLSsgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCi0gICAgICAgaWYgdGVzdCAtbiAiJHJwYXRoJHhycGF0aCI7IHRoZW4KLSAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgotQEAgLTc3ODksNyArODc2MCw3IEBAIEVPRgotIAkgICMgVGhpcyBpcyB0aGUgbWFnaWMgdG8gdXNlIC1ycGF0aC4KLSAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLSAgICAgICBmaQotQEAgLTc4MDgsMTggKzg3NzksMTggQEAgRU9GCi0gCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKLSAJCTs7Ci0gCSAgICAgICopCi0tCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSsJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZWxzZQotLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0tCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgotKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSAJICBmaQotIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZmkKLSAJY2FzZSAkaG9zdCBpbgotQEAgLTc4MjgsMTIgKzg3OTksMTIgQEAgRU9GCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JGxpYmRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kbGliZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRsaWJkaXIiOzsKLSAJICBlc2FjCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC03ODQyLDcgKzg4MTMsNyBAQCBFT0YKLSAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKLSAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAgICAgICBmaQotICAgICAgIGNvbXBpbGVfcnBhdGg9IiRycGF0aCIKLSAKLUBAIC03ODU5LDE4ICs4ODMwLDE4IEBAIEVPRgotIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCi0gCQk7OwotIAkgICAgICAqKQotLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0rCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKLSsJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0gCSAgZmkKLSAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZmluYWxpemVfcGVybV9ycGF0aD0iJGZpbmFsaXplX3Blcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9wZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWZpCi0gICAgICAgZG9uZQotQEAgLTc4NzgsNyArODg0OSw3IEBAIEVPRgotICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgotIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0tCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotICAgICAgIGZpCi0gICAgICAgZmluYWxpemVfcnBhdGg9IiRycGF0aCIKLSAKLUBAIC03OTIxLDYgKzg4OTIsMTIgQEAgRU9GCi0gCWV4aXRfc3RhdHVzPTAKLSAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0X3N0YXR1cz0kPycKLSAKLSsJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCi0rCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCi0rCWZpCi0rCi0gCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCi0gCWlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSI7IHRoZW4KLSAJICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iJwotQEAgLTc5NDMsNyArODkyMCw3IEBAIEVPRgotIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCi0gCSAgcnBhdGg9Ci0gCSAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLS0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKLSAJICBkb25lCi0gCSAgY29tcGlsZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgotIAlmaQotQEAgLTc5NTEsNyArODkyOCw3IEBAIEVPRgotIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCi0gCSAgcnBhdGg9Ci0gCSAgZm9yIGRpciBpbiAkZmluYWxpemVfcGVybV9ycGF0aDsgZG8KLS0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKLSAJICBkb25lCi0gCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKLSAJZmkKLUBAIC03OTY2LDYgKzg5NDMsMTMgQEAgRU9GCi0gCSRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dAotIAkjIExpbmsgdGhlIGV4ZWN1dGFibGUgYW5kIGV4aXQKLSAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwotKwotKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KLSsJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCi0rCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKLSsJZmkKLSsKLSAJZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgICAgZmkKLSAKLUBAIC03OTk5LDYgKzg5ODMsMTIgQEAgRU9GCi0gCi0gICAgICAgZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwotIAotKyAgICAgIGlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgotKwlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiCi0rCXBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCi0rCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCi0rICAgICAgZmkKLSsKLSAgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgotICAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJG91dHB1dCIKLSAKLUBAIC04MDk2LDcgKzkwODYsNyBAQCBFT0YKLSAJZWxzZQotIAkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgotIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KLS0JICAgIG9sZG9ianM9IiRvbGRvYmpzICRzeW1maWxlb2JqIgotKwkgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRzeW1maWxlb2JqIgotIAkgIGZpCi0gCWZpCi0gCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCi1AQCAtODEwNCwxMCArOTA5NCwxMCBAQCBFT0YKLSAKLSAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KLSAJZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCWZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRhZGRsaWJzCi0tCW9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwlmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gICAgICAgZmkKLSAKLSAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KLUBAIC04MTE4LDEwICs5MTA4LDEwIEBAIEVPRgotIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKLSAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0tCSAgb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAlmaQotIAotIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKLUBAIC04MTM5LDcgKzkxMjksNyBAQCBFT0YKLSAJZWxzZQotIAkgIGVjaG8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgotIAkgIHNhdmVfb2xkb2Jqcz0kb2xkb2JqcwotIAkgIG9sZG9ianM9Ci1AQCAtODE2MywxOCArOTE1MywyOCBAQCBFT0YKLSAJCWVzYWMKLSAJICAgICAgZG9uZQotIAkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCi0tCSAgICAgIG9sZG9ianM9IiRvbGRvYmpzICRnZW50b3AvJG5ld29iaiIKLSsJICAgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRnZW50b3AvJG5ld29iaiIKLSAJICAgICAgOzsKLS0JICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJG9iaiIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCWZpCi0tCWV2YWwgImNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgotKwlldmFsIGNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCi0gCi0gCWZ1bmNfbGVuICIgJGNtZHMiCi0gCWxlbj0kZnVuY19sZW5fcmVzdWx0Ci0gCWlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgotIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKLSsJZWxpZiB0ZXN0IC1uICIkYXJjaGl2ZXJfbGlzdF9zcGVjIjsgdGhlbgotKwkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgY29tbWFuZCBmaWxlIGFyY2hpdmUgbGlua2luZy4uLiIKLSsJICBmb3Igb2JqIGluICRvbGRvYmpzCi0rCSAgZG8KLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCi0rCSAgZG9uZSA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZAotKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQiCi0rCSAgb2xkb2Jqcz0iICRhcmNoaXZlcl9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgotKwkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKLSAJZWxzZQotIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCi0gCSAgZnVuY192ZXJib3NlICJ1c2luZyBwaWVjZXdpc2UgYXJjaGl2ZSBsaW5raW5nLi4uIgotQEAgLTgxODksNyArOTE4OSw3IEBAIEVPRgotIAkgIGRvCi0gCSAgICBsYXN0X29sZG9iaj0kb2JqCi0gCSAgZG9uZQotLQkgIGV2YWwgInRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCSAgZXZhbCB0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCi0gCSAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgotIAkgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAotIAkgIGxlbj0kbGVuMAotQEAgLTgyMDgsNyArOTIwOCw3IEBAIEVPRgotIAkJUkFOTElCPSRzYXZlX1JBTkxJQgotIAkgICAgICBmaQotIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLS0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiIgotKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIgotIAkgICAgICBvYmpsaXN0PQotIAkgICAgICBsZW49JGxlbjAKLSAJICAgIGZpCi1AQCAtODIxNiw5ICs5MjE2LDkgQEAgRU9GCi0gCSAgUkFOTElCPSRzYXZlX1JBTkxJQgotIAkgIG9sZG9ianM9JG9iamxpc3QKLSAJICBpZiB0ZXN0ICJYJG9sZG9ianMiID0gIlgiIDsgdGhlbgotLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHNcIiIKLSsJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHNcIgotIAkgIGVsc2UKLS0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiIgotKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIgotIAkgIGZpCi0gCWZpCi0gICAgICAgZmkKLUBAIC04MjY4LDEyICs5MjY4LDIzIEBAIEVPRgotIAkgICAgICAqLmxhKQotIAkJZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKLSAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0rCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAotIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLS0JCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCi0rCQk7OwotKwkgICAgICAtTCopCi0rCQlmdW5jX3N0cmlwbmFtZSAtTCAnJyAiJGRlcGxpYiIKLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLUwkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotIAkJOzsKLS0JICAgICAgKikgbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgIC1SKikKLSsJCWZ1bmNfc3RyaXBuYW1lIC1SICcnICIkZGVwbGliIgotKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCi0rCQk7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi0gCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCi1AQCAtODI4NCwxMiArOTI5NSwxNCBAQCBFT0YKLSAJICAgICAgKi5sYSkKLSAJICAgICAgICBmdW5jX2Jhc2VuYW1lICIkbGliIgotIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCi0rCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKLSsJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCi0rCi0gCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotLQkJbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKLSAJCTs7Ci0tCSAgICAgICopIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi0gCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKLUBAIC04MzAzLDEwICs5MzE2LDExIEBAIEVPRgotIAkJIyB0aGUgbGlicmFyeToKLSAJCWZ1bmNfYmFzZW5hbWUgIiRsaWIiCi0gCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKLSsJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgotKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKLSAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0tCQluZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkbGliZGlyLyRuYW1lIgotKwkJZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotQEAgLTgzMTgsNyArOTMzMiw3IEBAIEVPRgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7Ci0gCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGFicyIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCi0gCSAgICBkb25lCi0gCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKLSAJICAgIG5ld2RscHJlZmlsZXM9Ci1AQCAtODMyNyw3ICs5MzQxLDcgQEAgRU9GCi0gCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKLSAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKLSAJICAgICAgZXNhYwotLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkYWJzIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGFicyIKLSAJICAgIGRvbmUKLSAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgotIAkgIGZpCi1AQCAtODQxMiw3ICs5NDI2LDcgQEAgcmVsaW5rX2NvbW1hbmQ9XCIkcmVsaW5rX2NvbW1hbmRcIiIKLSAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gfQotIAotLXsgdGVzdCAiJG1vZGUiID0gbGluayB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IH0gJiYKLSt7IHRlc3QgIiRvcHRfbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IH0gJiYKLSAgICAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9Ci0gCi0gCi1AQCAtODQzMiw5ICs5NDQ2LDkgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotICAgICBmb3IgYXJnCi0gICAgIGRvCi0gICAgICAgY2FzZSAkYXJnIGluCi0tICAgICAgLWYpIFJNPSIkUk0gJGFyZyI7IHJtZm9yY2U9eWVzIDs7Ci0tICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKLS0gICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7Ci0rICAgICAgLWYpIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyI7IHJtZm9yY2U9eWVzIDs7Ci0rICAgICAgLSopIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyIgOzsKLSsgICAgICAqKSBmdW5jX2FwcGVuZCBmaWxlcyAiICRhcmciIDs7Ci0gICAgICAgZXNhYwotICAgICBkb25lCi0gCi1AQCAtODQ0MywyNCArOTQ1NywyMyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCi0gICAgIHJtZGlycz0KLSAKLS0gICAgb3JpZ29iamRpcj0iJG9iamRpciIKLSAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotICAgICAgIGZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgotICAgICAgIGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0gICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KLS0Jb2JqZGlyPSIkb3JpZ29iamRpciIKLSsJb2Rpcj0iJG9iamRpciIKLSAgICAgICBlbHNlCi0tCW9iamRpcj0iJGRpci8kb3JpZ29iamRpciIKLSsJb2Rpcj0iJGRpci8kb2JqZGlyIgotICAgICAgIGZpCi0gICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCi0gICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSAgICAgIHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCAmJiBvYmpkaXI9IiRkaXIiCi0rICAgICAgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCAmJiBvZGlyPSIkZGlyIgotIAotLSAgICAgICMgUmVtZW1iZXIgb2JqZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLS0gICAgICBpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgdGhlbgotKyAgICAgICMgUmVtZW1iZXIgb2RpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCi0rICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCi0gCWNhc2UgIiAkcm1kaXJzICIgaW4KLS0JICAqIiAkb2JqZGlyICIqKSA7OwotLQkgICopIHJtZGlycz0iJHJtZGlycyAkb2JqZGlyIiA7OwotKwkgICoiICRvZGlyICIqKSA7OwotKwkgICopIGZ1bmNfYXBwZW5kIHJtZGlycyAiICRvZGlyIiA7OwotIAllc2FjCi0gICAgICAgZmkKLSAKLUBAIC04NDg2LDE4ICs5NDk5LDE3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAKLSAJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgotIAkgIGZvciBuIGluICRsaWJyYXJ5X25hbWVzOyBkbwotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbiIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbiIKLSAJICBkb25lCi0tCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKLSsJICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kb2xkX2xpYnJhcnkiCi0gCi0tCSAgY2FzZSAiJG1vZGUiIGluCi0rCSAgY2FzZSAiJG9wdF9tb2RlIiBpbgotIAkgIGNsZWFuKQotLQkgICAgY2FzZSAiICAkbGlicmFyeV9uYW1lcyAiIGluCi0tCSAgICAjICIgICIgaW4gdGhlIGJlZ2lubmluZyBjYXRjaGVzIGVtcHR5ICRkbG5hbWUKLSsJICAgIGNhc2UgIiAkbGlicmFyeV9uYW1lcyAiIGluCi0gCSAgICAqIiAkZGxuYW1lICIqKSA7OwotLQkgICAgKikgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kZGxuYW1lIiA7OwotKwkgICAgKikgdGVzdCAtbiAiJGRsbmFtZSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUiIDs7Ci0gCSAgICBlc2FjCi0tCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCi0rCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfWkiCi0gCSAgICA7OwotIAkgIHVuaW5zdGFsbCkKLSAJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgotQEAgLTg1MjUsMTkgKzk1MzcsMTkgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotIAkgIGlmIHRlc3QgLW4gIiRwaWNfb2JqZWN0IiAmJgotIAkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJHBpY19vYmplY3QiCi0gCSAgZmkKLSAKLSAJICAjIEFkZCBub24tUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCi0gCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiAmJgotIAkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kbm9uX3BpY19vYmplY3QiCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kbm9uX3BpY19vYmplY3QiCi0gCSAgZmkKLSAJZmkKLSAJOzsKLSAKLSAgICAgICAqKQotLQlpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbiA7IHRoZW4KLSsJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuIDsgdGhlbgotIAkgIG5vZXhlbmFtZT0kbmFtZQotIAkgIGNhc2UgJGZpbGUgaW4KLSAJICAqLmV4ZSkKLUBAIC04NTQ3LDcgKzk1NTksNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCSAgICBub2V4ZW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkgICAgIyAkZmlsZSB3aXRoIC5leGUgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBybWZpbGVzLAotIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZmlsZSIKLSAJICAgIDs7Ci0gCSAgZXNhYwotIAkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgotQEAgLTg1NTYsNyArOTU2OCw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCi0gCSAgICAgIHJlbGlua19jb21tYW5kPQotIAkgICAgICBmdW5jX3NvdXJjZSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgotKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgotIAkgICAgZWxzZQotIAkgICAgICByZWxpbmtfY29tbWFuZD0KLSAJICAgICAgZnVuY19zb3VyY2UgJGRpci8kbm9leGVuYW1lCi1AQCAtODU2NCwxMiArOTU3NiwxMiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCi0gCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQotIAkgICAgIyBhcyBkb2VzIHRoZSB2ZXJzaW9uIG9mICRmaWxlIHRoYXQgd2FzIGFkZGVkIGludG8gJHJtZmlsZXMKLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9Uy4ke29iamV4dH0iCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgotIAkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSRuYW1lIgotKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCi0gCSAgICBmaQotIAkgICAgaWYgdGVzdCAiWCRub2V4ZW5hbWUiICE9ICJYJG5hbWUiIDsgdGhlbgotLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgotKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJHtub2V4ZW5hbWV9LmMiCi0gCSAgICBmaQotIAkgIGZpCi0gCWZpCi1AQCAtODU3Nyw3ICs5NTg5LDYgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotICAgICAgIGVzYWMKLSAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKLSAgICAgZG9uZQotLSAgICBvYmpkaXI9IiRvcmlnb2JqZGlyIgotIAotICAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKLSAgICAgZm9yIGRpciBpbiAkcm1kaXJzOyBkbwotQEAgLTg1ODksMTYgKzk2MDAsMTYgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotICAgICBleGl0ICRleGl0X3N0YXR1cwotIH0KLSAKLS17IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgotK3sgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IH0gJiYKLSAgICAgZnVuY19tb2RlX3VuaW5zdGFsbCAkezErIiRAIn0KLSAKLS10ZXN0IC16ICIkbW9kZSIgJiYgewotK3Rlc3QgLXogIiRvcHRfbW9kZSIgJiYgewotICAgaGVscD0iJGdlbmVyaWNfaGVscCIKLSAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCi0gfQotIAotIHRlc3QgLXogIiRleGVjX2NtZCIgJiYgXAotLSAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgotKyAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKLSAKLSBpZiB0ZXN0IC1uICIkZXhlY19jbWQiOyB0aGVuCi0gICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKLWRpZmYgLS1naXQgYS9sdG9wdGlvbnMubTQgYi9sdG9wdGlvbnMubTQKLWluZGV4IDVlZjEyY2VkMmEuLjE3Y2ZkNTFjMGIgMTAwNjQ0Ci0tLS0gYS9sdG9wdGlvbnMubTQKLSsrKyBiL2x0b3B0aW9ucy5tNAotQEAgLTgsNyArOCw3IEBACi0gIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIAotLSMgc2VyaWFsIDYgbHRvcHRpb25zLm00Ci0rIyBzZXJpYWwgNyBsdG9wdGlvbnMubTQKLSAKLSAjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgotIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKLWRpZmYgLS1naXQgYS9sdHZlcnNpb24ubTQgYi9sdHZlcnNpb24ubTQKLWluZGV4IGJmODdmNzcxMzIuLjljN2I1ZDQxMTggMTAwNjQ0Ci0tLS0gYS9sdHZlcnNpb24ubTQKLSsrKyBiL2x0dmVyc2lvbi5tNAotQEAgLTcsMTcgKzcsMTcgQEAKLSAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0tIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCi0rIyBAY29uZmlndXJlX2lucHV0QAotIAotLSMgc2VyaWFsIDMxMzQgbHR2ZXJzaW9uLm00Ci0rIyBzZXJpYWwgMzI5MyBsdHZlcnNpb24ubTQKLSAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCi0gCi0tbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi4yLjdhXSkKLS1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMTM0XSkKLSttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjRdKQotK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMyOTNdKQotIAotIEFDX0RFRlVOKFtMVFZFUlNJT05fVkVSU0lPTl0sCi0tW21hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK1ttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSBfTFRfREVDTCgsIG1hY3JvX3ZlcnNpb24sIDAsIFtXaGljaCByZWxlYXNlIG9mIGxpYnRvb2wubTQgd2FzIHVzZWQ/XSkKLSBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQotIF0pCi1kaWZmIC0tZ2l0IGEvbHR+b2Jzb2xldGUubTQgYi9sdH5vYnNvbGV0ZS5tNAotaW5kZXggYmY5MmI1ZTA3OS4uYzU3M2RhOTBjNSAxMDA2NDQKLS0tLSBhL2x0fm9ic29sZXRlLm00Ci0rKysgYi9sdH5vYnNvbGV0ZS5tNAotQEAgLTcsNyArNyw3IEBACi0gIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIAotLSMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKLSsjIHNlcmlhbCA1IGx0fm9ic29sZXRlLm00Ci0gCi0gIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCi0gIwotZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlIGIvb3Bjb2Rlcy9jb25maWd1cmUKLWluZGV4IDg1Mzg0OWVlNTguLjVmNzRlY2Y3ZGEgMTAwNzU1Ci0tLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZQotKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUKLUBAIC02ODAsNiArNjgwLDkgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0rYWNfY3RfQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc5OCw2ICs4MDEsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV93ZXJyb3IKLUBAIC0xNDYyLDYgKzE0NjYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gCi0gU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC01NDAzLDggKzU0MDksOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTQ0NCw3ICs1NDUwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjEzMCw4ICs2MTM2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTYxODAsNiArNjE4Niw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjE5Niw2ICs2Mjc2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MzY0LDcgKzY0NDksOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjUxOCw2ICs2NjA0LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjUzMSwxMSArNjYzMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjU1MSw3ICs2ODA1LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjU3MSwxMSArNjgyNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NTkxLDcgKzY4NDksNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjYxMCw2ICs2ODY4LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02NjIxLDE2ICs2ODgzLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNjk3Miw4ICs3MjkwLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC03MDA5LDYgKzczMjcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNzA1MCw2ICs3MzY5LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTcwNjEsNyArNzM5Miw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTcwODcsOCArNzQxOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTcwOTgsOCArNzQyOSw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTcxMzYsNiArNzQ2NywxNiBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotIAotIAotIAotQEAgLTcxNTIsNiArNzQ5Myw0NSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTczNjMsNiArNzc0MywxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzkyNiw2ICs4NDIzLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTgwOTEsNyArODU5MCw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04MTgwLDcgKzg2ODAsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg0NzgsOCArODk3OCw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODY0NSw2ICs5MTQzLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODcwNyw3ICs5MjExLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg3NjQsMTMgKzkyNjgsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODgzMSw2ICs5MzM5LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTE4MSw3ICs5Njk0LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTI4MCwxMiArOTc5NCwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05Mjk5LDggKzk4MTMsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTMxOCw4ICs5ODMyLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkzNjUsOCArOTg3OSw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NDk2LDcgKzEwMDEwLDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk1MDksMjIgKzEwMDI5LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05NTM2LDcgKzEwMDYzLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NTQ5LDIyICsxMDA4MiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTk2MDksMjAgKzEwMTQ5LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTY4Myw3ICsxMDI2Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk2OTEsNyArMTAyNzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05NzA3LDcgKzEwMjkwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTk3MzEsMTAgKzEwMzE0LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTgxMywyMyArMTAzOTYsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk5MTQsNyArMTA1MTAsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05OTMzLDkgKzEwNTI5LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNTExLDggKzExMTA3LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwNTQ1LDEzICsxMTE0Miw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA2NDMsNyArMTEyOTgsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE0MzksNyArMTIwOTQsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTQ0MiAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE0ODMsMTAgKzEyMTM4LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE1NDUsNyArMTIyMDAsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTU0OCAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE1ODksMTAgKzEyMjQ0LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTI3NzksNyArMTM0MzQsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICMgc2luY2UgbGliYmZkIG1heSBub3QgcHVsbCBpbiB0aGUgZW50aXJldHkgb2YgbGliaWJlcnR5LgotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICAgY2FzZSAiJHtob3N0fSIgaW4KLUBAIC0xMzc1NiwxMyArMTQ0MTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzc3NywxNCArMTQ0MzksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM4MTcsMTIgKzE0NDgyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzODc3LDggKzE0NTQyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xMzg4OCwxMiArMTQ1NTgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTEzOTA5LDcgKzE0NTgxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTM5NDUsNiArMTQ2MTYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE0NzEwLDcgKzE1MzgyLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNDgxMywxOSArMTU0ODYsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTQ4NTUsNiArMTU1NTEsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTQ4NjQsNiArMTU1NjYsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE0OTc4LDEyICsxNTY4MywxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNTA3MCw5ICsxNTc3NSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE1MDg4LDYgKzE1NzkwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNTEyMCwyMTAgKzE1ODI1LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYyBiL29wY29kZXMvY29uZmlndXJlLmFjCi1pbmRleCA0ZWIxOTAwNWU4Li4xOWE1NzYwOGI5IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLSsrKyBiL29wY29kZXMvY29uZmlndXJlLmFjCi1AQCAtMTcwLDcgKzE3MCw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotIGNoYW5nZXF1b3RlKFssXSlkbmwKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICAgY2FzZSAiJHtob3N0fSIgaW4KLWRpZmYgLS1naXQgYS96bGliL2NvbmZpZ3VyZSBiL3psaWIvY29uZmlndXJlCi1pbmRleCAwNDFjYmRiZjcxLi4xOWQ2MDVmYzg1IDEwMDc1NQotLS0tIGEvemxpYi9jb25maWd1cmUKLSsrKyBiL3psaWIvY29uZmlndXJlCi1AQCAtNjQ2LDggKzY0NiwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03NzQsNiArNzc3LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX2hvc3Rfc2hhcmVkCi0gJwotQEAgLTE0MjgsNiArMTQzMiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTQxNDcsOCArNDE1Myw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC00MTg4LDcgKzQxOTQsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01MDA0LDggKzUwMTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTA1NCw2ICs1MDYwLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC01MDcwLDYgKzUxNTAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTUyMzgsNyArNTMyMyw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC01MzkyLDYgKzU0NzgsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC01NDA1LDExICs1NTA2LDE2NSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC01NDI1LDcgKzU2ODAsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01NDQ1LDExICs1NzAwLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTU0NjUsNyArNTcyNCw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01NDg0LDYgKzU3NDMsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTU0OTUsMTYgKzU3NTgsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC01ODQ2LDggKzYxNjUsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTU4ODMsNiArNjIwMiw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC01OTI0LDYgKzYyNDQsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNTkzNSw3ICs2MjY3LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNTk2MSw4ICs2MjkzLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNTk3Miw4ICs2MzA0LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjAxMCw2ICs2MzQyLDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjAyNyw2ICs2MzcyLDQxIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNjI0MSw2ICs2NjIxLDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC02ODA3LDYgKzczMDQsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzI2OSw3ICs3NzY4LDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTczNTgsNyArNzg1OCw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzY1Niw4ICs4MTU2LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC03ODIzLDYgKzgzMjEsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC03ODg1LDcgKzgzODksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtNzk0MiwxMyArODQ0NiwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04MDA5LDYgKzg1MTcsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04MzU5LDcgKzg4NzIsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04NDU4LDEyICs4OTcyLDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTg0NzcsOCArODk5MSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC04NDk2LDggKzkwMTAsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODU0Myw4ICs5MDU3LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTg2NzQsNyArOTE4OCwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODY5MCwyMiArOTIxMCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtODcxNyw3ICs5MjQ0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODczMywyMiArOTI2NiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTg3OTMsMjAgKzkzMzMsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC04ODY3LDcgKzk0NTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC04ODc1LDcgKzk0NTgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC04ODkxLDcgKzk0NzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtODkxNSwxMCArOTQ5OCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTg5OTcsMjYgKzk1ODAsMzkgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTEwMSw3ICs5Njk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTEyMCw5ICs5NzE2LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTk2OTgsOCArMTAyOTQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtOTczMiwxMyArMTAzMjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTk4MzAsNyArMTA0ODUsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTA2NDQsNyArMTEyOTksNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMDY0NyAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTA2ODgsMTAgKzExMzQzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTA3NTAsNyArMTE0MDUsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMDc1MyAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTA3OTQsMTAgKzExNDQ5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTIyNjcsMTMgKzEyOTIyLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIyODgsMTQgKzEyOTUwLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMzI4LDEyICsxMjk5MywxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjM4OCw4ICsxMzA1MywxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTIzOTksMTIgKzEzMDY5LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMjQyMCw3ICsxMzA5Miw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEyNDU2LDYgKzEzMTI3LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xMzA1NCw3ICsxMzcyNiw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTMxNTcsMTkgKzEzODMwLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTEzMTk5LDYgKzEzODk1LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTEzMjA4LDYgKzEzOTEwLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xMzMyMiwxMiArMTQwMjcsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTM0MTQsOSArMTQxMTksNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xMzQzMiw2ICsxNDEzNCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTM0NjQsMjEwICsxNDE2OSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctVXNlLWxpYnRvb2wtMi40LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZGE2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaApAQCAtMCwwICsxLDIxMjM0IEBACitGcm9tIGI4ZmFmZDhjZTZjNDdjOWE1NTFlZDc5NjE3NmQ4ODRhMzQ5MzAwODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNDowNyArMDAwMAorU3ViamVjdDogW1BBVENIIDA3LzE1XSBVc2UgbGlidG9vbCAyLjQKKworZ2V0IGxpYnRvb2wgc3lzcm9vdCBzdXBwb3J0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYmZkL2NvbmZpZ3VyZSAgICAgIHwgMTMyMiArKysrKysrKysrKysrKystLS0tLQorIGJmZC9jb25maWd1cmUuYWMgICB8ICAgIDIgKy0KKyBiaW51dGlscy9jb25maWd1cmUgfCAxMzIwICsrKysrKysrKysrKysrKy0tLS0tCisgZ2FzL2NvbmZpZ3VyZSAgICAgIHwgMTMyMCArKysrKysrKysrKysrKystLS0tLQorIGdwcm9mL2NvbmZpZ3VyZSAgICB8IDEzMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBsZC9jb25maWd1cmUgICAgICAgfCAxNjk1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyBsaWJjdGYvY29uZmlndXJlICAgfCAxMzE5ICsrKysrKysrKysrKysrKy0tLS0tCisgbGlidG9vbC5tNCAgICAgICAgIHwgMTA4MCArKysrKysrKysrKy0tLS0tCisgbHRtYWluLnNoICAgICAgICAgIHwgMjkyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIGx0b3B0aW9ucy5tNCAgICAgICB8ICAgIDIgKy0KKyBsdHZlcnNpb24ubTQgICAgICAgfCAgIDEyICstCisgbHR+b2Jzb2xldGUubTQgICAgIHwgICAgMiArLQorIG9wY29kZXMvY29uZmlndXJlICB8IDEzMjAgKysrKysrKysrKysrKysrLS0tLS0KKyAxMyBmaWxlcyBjaGFuZ2VkLCA5OTM5IGluc2VydGlvbnMoKyksIDM3MDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlIGIvYmZkL2NvbmZpZ3VyZQoraW5kZXggYmM1NzZiNzg5NGEuLmNkMDM2NjM4MDgxIDEwMDc1NQorLS0tIGEvYmZkL2NvbmZpZ3VyZQorKysrIGIvYmZkL2NvbmZpZ3VyZQorQEAgLTcwNCw2ICs3MDQsOSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKythY19jdF9BUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtODIyLDYgKzgyNSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE1MDQsNiArMTUwOCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1tbWFwICAgICAgICAgICAgIHRyeSB1c2luZyBtbWFwIGZvciBCRkQgaW5wdXQgZmlsZXMgaWYgYXZhaWxhYmxlCisgICAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPURJUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gRElSCitAQCAtNTY5Myw4ICs1Njk5LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU3MzQsNyArNTc0MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTY0MjAsOCArNjQyNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02NDcwLDYgKzY0NzYsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY0ODYsNiArNjU2NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjY1NCw3ICs2NzM5LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY4MDgsNiArNjg5NCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY4MjEsMTEgKzY5MjIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY4NDEsNyArNzA5NSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY4NjEsMTEgKzcxMTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjg4MSw3ICs3MTM5LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY5MDAsNiArNzE1OCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjkxMSwxNiArNzE3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTcyNjIsOCArNzU4MCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzI5OSw2ICs3NjE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTczNDAsNiArNzY1OSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MzUxLDcgKzc2ODIsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03Mzc3LDggKzc3MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03Mzg4LDggKzc3MTksOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03NDI2LDYgKzc3NTcsMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03NDQyLDYgKzc3ODMsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03NjUzLDYgKzgwMzMsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTgyMTYsNiArODcxMyw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MzgwLDcgKzg4NzksOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODQ2OSw3ICs4OTY5LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NzY3LDggKzkyNjcsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg5MzQsNiArOTQzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg5OTYsNyArOTUwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC05MDUzLDEzICs5NTU3LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTkxMjAsNiArOTYyOCwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTk0NzAsNyArOTk4Myw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTk1NjksMTIgKzEwMDgzLDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTk1ODgsOCArMTAxMDIsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTYwNyw4ICsxMDEyMSw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NjU0LDggKzEwMTY4LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk3ODUsNyArMTAyOTksMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTc5OCwyMiArMTAzMTgsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk4MjUsNyArMTAzNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk4MzgsMjIgKzEwMzcxLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTg5OCwyMCArMTA0MzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05OTcyLDcgKzEwNTU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTk4MCw3ICsxMDU2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk5OTYsNyArMTA1NzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtMTAwMjAsMTAgKzEwNjAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtMTAxMDIsMjMgKzEwNjg1LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC0xMDIwMyw3ICsxMDc5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTEwMjIyLDkgKzEwODE4LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwODAwLDggKzExMzk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwODM0LDEzICsxMTQzMSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA5MzIsNyArMTE1ODcsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE3MjgsNyArMTIzODMsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTczMSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE3NzIsMTAgKzEyNDI3LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE4MzQsNyArMTI0ODksNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTgzNyAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE4NzgsMTAgKzEyNTMzLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTQ1NTQsNyArMTUyMDksNyBAQCBTSEFSRURfTERGTEFHUz0KKyBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICAgY2FzZSAiJHtob3N0fSIgaW4KK0BAIC0xNzE3NiwxMyArMTc4MzEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNzE5NywxNCArMTc4NTksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTcyMzcsMTIgKzE3OTAyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE3Mjk3LDggKzE3OTYyLDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNzMwOCwxMiArMTc5NzgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE3MzI5LDcgKzE4MDAxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTczNjUsNiArMTgwMzYsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE4MTUzLDcgKzE4ODI1LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xODI1NiwxOSArMTg5MjksNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTgyOTgsNiArMTg5OTQsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTgzMDcsNiArMTkwMDksOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE4NDIxLDEyICsxOTEyNiwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xODUxMyw5ICsxOTIxOCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE4NTMxLDYgKzE5MjMzLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xODU2MywyMTAgKzE5MjY4LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmFjIGIvYmZkL2NvbmZpZ3VyZS5hYworaW5kZXggYzViZmJkNWQxMjkuLmU2NjZiMWNjMTA2IDEwMDY0NAorLS0tIGEvYmZkL2NvbmZpZ3VyZS5hYworKysrIGIvYmZkL2NvbmZpZ3VyZS5hYworQEAgLTI5MCw3ICsyOTAsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyBjaGFuZ2VxdW90ZShbLF0pZG5sCisgICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KKy0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgorKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgorICAgZmkKKyAKKyAgIGNhc2UgIiR7aG9zdH0iIGluCitkaWZmIC0tZ2l0IGEvYmludXRpbHMvY29uZmlndXJlIGIvYmludXRpbHMvY29uZmlndXJlCitpbmRleCBhOGRmZDRiZDY4Yy4uODIzMTY0OTY5NTMgMTAwNzU1CistLS0gYS9iaW51dGlscy9jb25maWd1cmUKKysrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQorQEAgLTY5MCw4ICs2OTAsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtODA4LDYgKzgxMSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0ODUsNiArMTQ4OSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1kZWJ1Z2luZm9kICAgICAgIEVuYWJsZSBkZWJ1Z2luZm8gbG9va3VwcyB3aXRoIGRlYnVnaW5mb2QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdXRvL3llcy9ubykKKyAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegorQEAgLTU0NjEsOCArNTQ2Nyw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01NTAyLDcgKzU1MDgsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02MTg4LDggKzYxOTQsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjIzOCw2ICs2MjQ0LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MjU0LDYgKzYzMzQsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTY0MjIsNyArNjUwNyw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02NTc2LDYgKzY2NjIsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02NTkxLDkgKzY2OTIsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY2MDksNyArNjg2Myw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2MjksMTEgKzY4ODMsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjY0OSw3ICs2OTA3LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2NjgsNiArNjkyNiwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjY3OSwxMiArNjk0MSwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKyAKKyAKKyAKK0BAIC02Njk2LDYgKzY5NTYsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisrCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKysKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorKworK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKK0BAIC03MDMwLDggKzczNDgsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTcwNjcsNiArNzM4NSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03MTA4LDYgKzc0MjcsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzExOSw3ICs3NDUwLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzE0NSw4ICs3NDc2LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzE1Niw4ICs3NDg3LDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzE5NCw2ICs3NTI1LDIxIEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzIxMCw2ICs3NTU2LDQwIEBAIGZpCisgCisgCisgCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzQyMSw2ICs3ODAxLDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03OTg0LDYgKzg0ODEsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODE3OSw3ICs4Njc4LDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTgyNjgsNyArODc2OCw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODU2Niw4ICs5MDY2LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04NzMzLDYgKzkyMzEsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04Nzk1LDcgKzkyOTksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODg1MiwxMyArOTM1NiwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04OTE5LDYgKzk0MjcsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05MjY5LDcgKzk3ODIsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MzY4LDEyICs5ODgyLDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkzODcsOCArOTkwMSw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05NDA2LDggKzk5MjAsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQ1Myw4ICs5OTY3LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk1ODQsNyArMTAwOTgsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTU5NywyMiArMTAxMTcsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk2MjQsNyArMTAxNTEsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk2MzcsMjIgKzEwMTcwLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTY5NywyMCArMTAyMzcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NzcxLDcgKzEwMzU0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTc3OSw3ICsxMDM2Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk3OTUsNyArMTAzNzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTgxOSwxMCArMTA0MDIsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05OTAxLDIzICsxMDQ4NCwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtMTAwMDIsNyArMTA1OTgsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC0xMDAyMSw5ICsxMDYxNyw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDU5OSw4ICsxMTE5NSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDYzMywxMyArMTEyMzAsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNzMxLDcgKzExMzg2LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExNTI3LDcgKzEyMTgyLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE1MzAgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNTcxLDEwICsxMjIyNiwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExNjMzLDcgKzEyMjg4LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE2MzYgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNjc3LDEwICsxMjMzMiwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTE2MDI0LDEzICsxNjY3OSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE2MDQ1LDE0ICsxNjcwNywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjA4NSwxMiArMTY3NTAsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTYxNDUsOCArMTY4MTAsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE2MTU2LDEyICsxNjgyNiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTYxNzcsNyArMTY4NDksNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xNjIxMyw2ICsxNjg4NCw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTY5NzksNyArMTc2NTEsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE3MDgyLDE5ICsxNzc1NSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNzEyNCw2ICsxNzgyMCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNzEzMyw2ICsxNzgzNSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTcyNDcsMTIgKzE3OTUyLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE3MzM5LDkgKzE4MDQ0LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTczNTcsNiArMTgwNTksOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE3Mzg5LDIxMCArMTgwOTQsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCitpbmRleCA2MGMxYTA1NWFlMi4uMGUwY2U0YzBlMjMgMTAwNzU1CistLS0gYS9nYXMvY29uZmlndXJlCisrKysgYi9nYXMvY29uZmlndXJlCitAQCAtNjgxLDggKzY4MSwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03OTksNiArODAyLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTQ5MCw2ICsxNDk0LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLWNwdT1DUFUgICAgICAgICAgZGVmYXVsdCBjcHUgdmFyaWFudCBpcyBDUFUgKGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gQVJDKQorICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6CitAQCAtNTI3Nyw4ICs1MjgzLDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTUzMTgsNyArNTMyNCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYwMDQsOCArNjAxMCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02MDU0LDYgKzYwNjAsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYwNzAsNiArNjE1MCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjIzOCw3ICs2MzIzLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTYzOTIsNiArNjQ3OCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY0MDcsOSArNjUwOCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjQyNSw3ICs2Njc5LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjQ0NSwxMSArNjY5OSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NDY1LDcgKzY3MjMsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjQ4NCw2ICs2NzQyLDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02NDk1LDEyICs2NzU3LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorIAorIAorIAorQEAgLTY1MTIsNiArNjc3Miw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgorQEAgLTY4NDYsOCArNzE2NCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjg4Myw2ICs3MjAxLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY5MjQsNiArNzI0MywxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02OTM1LDcgKzcyNjYsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02OTYxLDggKzcyOTIsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02OTcyLDggKzczMDMsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MDEwLDYgKzczNDEsMjEgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03MDI2LDYgKzczNzIsNDAgQEAgZmkKKyAKKyAKKyAKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MjM3LDYgKzc2MTcsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc4MDAsNiArODI5Nyw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03OTk1LDcgKzg0OTQsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODA4NCw3ICs4NTg0LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04MzgyLDggKzg4ODIsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg1NDksNiArOTA0NywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg2MTEsNyArOTExNSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NjY4LDEzICs5MTcyLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg3MzUsNiArOTI0MywxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTkwODUsNyArOTU5OCw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkxODQsMTIgKzk2OTgsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTIwMyw4ICs5NzE3LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkyMjIsOCArOTczNiw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MjY5LDggKzk3ODMsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQwMCw3ICs5OTE0LDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk0MTMsMjIgKzk5MzMsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk0NDAsNyArOTk2NywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTQ1MywyMiArOTk4NiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTk1MTMsMjAgKzEwMDUzLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTU4Nyw3ICsxMDE3MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk1OTUsNyArMTAxNzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05NjExLDcgKzEwMTk0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk2MzUsMTAgKzEwMjE4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTcxNywyMyArMTAzMDAsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk4MTgsNyArMTA0MTQsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05ODM3LDkgKzEwNDMzLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNDE1LDggKzExMDExLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwNDQ5LDEzICsxMTA0Niw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA1NDcsNyArMTEyMDIsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTEzNDMsNyArMTE5OTgsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTM0NiAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTEzODcsMTAgKzEyMDQyLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE0NDksNyArMTIxMDQsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTQ1MiAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE0OTMsMTAgKzEyMTQ4LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTU5MjgsMTMgKzE2NTgzLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU5NDksMTQgKzE2NjExLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1OTg5LDEyICsxNjY1NCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjA0OSw4ICsxNjcxNCwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTYwNjAsMTIgKzE2NzMwLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xNjA4MSw3ICsxNjc1Myw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE2MTE3LDYgKzE2Nzg4LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNjg5MCw3ICsxNzU2Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTY5OTMsMTkgKzE3NjY2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE3MDM1LDYgKzE3NzMxLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE3MDQ0LDYgKzE3NzQ2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNzE1OCwxMiArMTc4NjMsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTcyNTAsOSArMTc5NTUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNzI2OCw2ICsxNzk3MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTczMDAsMjEwICsxODAwNSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCitpbmRleCBjMjM2OTJlNWMzZC4uOWY5MzZhNWIwM2QgMTAwNzU1CistLS0gYS9ncHJvZi9jb25maWd1cmUKKysrKyBiL2dwcm9mL2NvbmZpZ3VyZQorQEAgLTY2Miw4ICs2NjIsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzgwLDYgKzc4Myw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0NDIsNiArMTQ0Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTUxMjQsOCArNTEzMCw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01MTY1LDcgKzUxNzEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC01ODUxLDggKzU4NTcsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNTkwMSw2ICs1OTA3LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC01OTE3LDYgKzU5OTcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTYwODUsNyArNjE3MCw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02MjM5LDYgKzYzMjUsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02MjUyLDExICs2MzUzLDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MjcyLDcgKzY1MjYsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MjkyLDExICs2NTQ2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYzMTIsNyArNjU3MCw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MzMxLDYgKzY1ODksMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYzNDIsMTYgKzY2MDQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC02NjkzLDggKzcwMTEsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTY3MzAsNiArNzA0OCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC02NzcxLDYgKzcwOTAsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNjc4Miw3ICs3MTEzLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNjgwOCw4ICs3MTM5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNjgxOSw4ICs3MTUwLDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNjg1Nyw2ICs3MTg4LDIwIEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNjg3Myw2ICs3MjE4LDQxIEBAIGZpCisgCisgCisgCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzA4NCw2ICs3NDY0LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03NjQ3LDYgKzgxNDQsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtNzg0Miw3ICs4MzQxLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTc5MzEsNyArODQzMSw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODIyOSw4ICs4NzI5LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04Mzk2LDYgKzg4OTQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04NDU4LDcgKzg5NjIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODUxNSwxMyArOTAxOSwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04NTgyLDYgKzkwOTAsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC04OTMyLDcgKzk0NDUsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MDMxLDEyICs5NTQ1LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkwNTAsOCArOTU2NCw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05MDY5LDggKzk1ODMsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTExNiw4ICs5NjMwLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkyNDcsNyArOTc2MSwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MjYwLDIyICs5NzgwLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05Mjg3LDcgKzk4MTQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkzMDAsMjIgKzk4MzMsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05MzYwLDIwICs5OTAwLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTQzNCw3ICsxMDAxNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk0NDIsNyArMTAwMjUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05NDU4LDcgKzEwMDQxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk0ODIsMTAgKzEwMDY1LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTU2NCwyMyArMTAxNDcsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk2NjUsNyArMTAyNjEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05Njg0LDkgKzEwMjgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwMjYyLDggKzEwODU4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwMjk2LDEzICsxMDg5Myw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTAzOTQsNyArMTEwNDksNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTExOTAsNyArMTE4NDUsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTE5MyAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTEyMzQsMTAgKzExODg5LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTEyOTYsNyArMTE5NTEsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTI5OSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTEzNDAsMTAgKzExOTk1LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTMzMDksMTMgKzEzOTY0LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTMzMzAsMTQgKzEzOTkyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzMzcwLDEyICsxNDAzNSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzQzMCw4ICsxNDA5NSwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTM0NDEsMTIgKzE0MTExLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xMzQ2Miw3ICsxNDEzNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTEzNDk4LDYgKzE0MTY5LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNDI2Myw3ICsxNDkzNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTQzNjYsMTkgKzE1MDM5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE0NDA4LDYgKzE1MTA0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE0NDE3LDYgKzE1MTE5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNDUzMSwxMiArMTUyMzYsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTQ2MjMsOSArMTUzMjgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNDY0MSw2ICsxNTM0Myw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTQ2NzMsMjEwICsxNTM3OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCitpbmRleCA4MTExMzRhNTAzYi4uZjQzMmY0NjM3ZDAgMTAwNzU1CistLS0gYS9sZC9jb25maWd1cmUKKysrKyBiL2xkL2NvbmZpZ3VyZQorQEAgLTY5MSw4ICs2OTEsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtODE5LDYgKzgyMiw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE1MTIsNiArMTUxNiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1saWItcGF0aD1kaXIxOmRpcjIuLi4gIHNldCBkZWZhdWx0IExJQl9QQVRICisgICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIuCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKK0BAIC01OTY1LDggKzU5NzEsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNjAwNiw3ICs2MDEyLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjY5Miw4ICs2Njk4LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTY3NDIsNiArNjc0OCw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjc1OCw2ICs2ODM4LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02OTI2LDcgKzcwMTEsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNzA4MCw2ICs3MTY2LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNzA5NSw5ICs3MTk2LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC03MTEzLDcgKzczNjcsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC03MTMzLDExICs3Mzg3LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTcxNTMsNyArNzQxMSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC03MTcyLDYgKzc0MzAsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTcxODMsMTIgKzc0NDUsMTIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisgCisgCisgCitAQCAtNzE5OCw2ICs3NDYwLDYyIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCitAQCAtNzUzNCw4ICs3ODUyLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC03NTcxLDYgKzc4ODksNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzYxMiw2ICs3OTMxLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTc2MjMsNyArNzk1NCw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTc2NDksOCArNzk4MCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTc2NjAsOCArNzk5MSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTc2OTgsNiArODAyOSwxOSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworIAorIAorIAorQEAgLTc3MTQsNiArODA1OCw0MiBAQCBmaQorIAorIAorIAorKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTc5MjUsNiArODMwNSwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtODQ4OCw2ICs4OTg1LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTg1NTYsNiArOTA1NSwxNiBAQCBkb25lCisgCisgCisgCisrZnVuY19zdHJpcG5hbWVfY25mICgpCisreworKyAgY2FzZSAkezJ9IGluCisrICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworKyAgZXNhYworK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKKysKKysKKysKKyAKKyAKKyAjIFNldCBvcHRpb25zCitAQCAtODY4NCw3ICs5MTkzLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTg3NzMsNyArOTI4Myw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtOTA3MSw4ICs5NTgxLDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC05MjM4LDYgKzk3NDYsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC05MzAwLDcgKzk4MTQsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtOTM1NywxMyArOTg3MSwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC05NDI0LDYgKzk5NDIsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05Nzc0LDcgKzEwMjk3LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTg3MywxMiArMTAzOTcsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTg5Miw4ICsxMDQxNiw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05OTExLDggKzEwNDM1LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk5NTgsOCArMTA0ODIsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtMTAwODksNyArMTA2MTMsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTAxMDIsMjIgKzEwNjMyLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC0xMDEyOSw3ICsxMDY2NiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTAxNDIsMjIgKzEwNjg1LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtMTAyMDEsMjEgKzEwNzUxLDY0IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCistICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTEwMjc2LDcgKzEwODY5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtMTAyODQsNyArMTA4NzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC0xMDMwMCw3ICsxMDg5Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC0xMDMyNCwxMCArMTA5MTcsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC0xMDQwNiwyMyArMTA5OTksMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTEwNTA3LDcgKzExMTEzLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtMTA1MjYsOSArMTExMzIsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTExMDQsOCArMTE3MTAsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTExMzgsMTMgKzExNzQ1LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMTIzNiw3ICsxMTkwMSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMjAzMiw3ICsxMjY5Nyw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDEyMDM1ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMjA3NiwxMCArMTI3NDEsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMjEzOCw3ICsxMjgwMyw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDEyMTQxICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMjE4MiwxMCArMTI4NDcsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMjU3Nyw2ICsxMzI0Miw3IEBAICRSTSAtciBjb25mdGVzdCoKKyAKKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSRDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgbHRfc2F2ZV9MRD0kTEQKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgIEdDQz0kR1hYCitAQCAtMTI1OTQsNiArMTMyNjAsNyBAQCAkUk0gLXIgY29uZnRlc3QqCisgICBmaQorICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKKyAgIENDPSR7Q1hYLSJjKysifQorKyAgQ0ZMQUdTPSRDWFhGTEFHUworICAgY29tcGlsZXI9JENDCisgICBjb21waWxlcl9DWFg9JENDCisgICBmb3IgY2NfdGVtcCBpbiAkY29tcGlsZXIiIjsgZG8KK0BAIC0xMjg3Niw3ICsxMzU0MywxMyBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQorICAgICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9Jy1iZXJvaycKKyAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CisgICAgICAgICAgICMgZXhlY3V0YWJsZS4KKy0gICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTEyODg5LDIyICsxMzU2MiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAorK2ZpCisgCisgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAorQEAgLTEyOTE3LDcgKzEzNTk3LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgICBlbHNlCisgCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTI5MzAsMjIgKzEzNjE2LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCisrZmkKKyAKKyAJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC0xMjk4OCwyOSArMTM2ODEsNzUgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICA7OworIAorICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKy0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctTCRsaWJkaXInCistICAgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworLSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCistICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPW5vCistICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKKy0KKy0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKy0gICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCistICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCistICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBlbHNlCistCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGZpfgorLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICBlbHNlCistICAgICAgICAgIGxkX3NobGlic19DWFg9bm8KKy0gICAgICAgIGZpCistICAgICAgICA7OworKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCisrCSxjbCogfCBubyxjbCopCisrCSAgIyBOYXRpdmUgTVNWQworKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKysJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScgJworKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAorKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9eWVzCisrCSAgZmlsZV9saXN0X3NwZWNfQ1hYPSdAJworKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCSAgbGliZXh0PWxpYgorKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwkgIHNocmV4dF9jbWRzPSIuZGxsIgorKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBlbHNlCisrCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZml+CisrCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgICBsaW5rbmFtZXM9JworKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgQ1hYKT0ndHJ1ZScKKysJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKKysJICAjIERvbid0IHVzZSByYW5saWIKKysJICBvbGRfcG9zdGluc3RhbGxfY21kc19DWFg9J2NobW9kIDY0NCAkb2xkbGliJworKwkgIHBvc3RsaW5rX2NtZHNfQ1hYPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICAgKikKKysJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCQk7OworKwkgICAgZXNhY34KKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisrCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICAgIGZpJworKwkgIDs7CisrCSopCisrCSAgIyBnKysKKysJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKysJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctTCRsaWJkaXInCisrCSAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKysJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKysJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPW5vCisrCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCisrCisrCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorKwkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKysJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBlbHNlCisrCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZml+CisrCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgZWxzZQorKwkgICAgbGRfc2hsaWJzX0NYWD1ubworKwkgIGZpCisrCSAgOzsKKysJZXNhYworKwk7OworICAgICAgIGRhcndpbiogfCByaGFwc29keSopCisgCisgCitAQCAtMTMxMTYsNyArMTM4NTUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgICA7OworICAgICAgICAgICAqKQorICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCistICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysgICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgICAgIGxkX3NobGlic19DWFg9bm8KK0BAIC0xMzE4NywxMCArMTM5MjYsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgIGlhNjQqKQorLQkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICAqKQorLQkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgIGVzYWMKKyAJICAgICAgZmkKK0BAIC0xMzIzMSw5ICsxMzk3MCw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgICAqKQorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSAgICAgIGVsc2UKKy0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisrCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCSAgICBsaW5rX2FsbF9kZXBsaWJzX0NYWD15ZXMKK0BAIC0xMzMwMywyMCArMTQwNDIsMjAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICAgIHByZWxpbmtfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KKy0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKysJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCisgCSAgICAgIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgorLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KKysJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgorIAkJJFJBTkxJQiAkb2xkbGliJworIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAJICAgICAgOzsKKyAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCisgCSAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworQEAgLTEzNTExLDcgKzE0MjUwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgICAgKikKKy0JICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICBlc2FjCisgCitAQCAtMTM1NTcsNyArMTQyOTYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgICBzb2xhcmlzKikKKyAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgICAgIENDKikKKysgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQorIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworICAgICAgICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD15ZXMKKyAJICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nIC16ZGVmcycKK0BAIC0xMzU5OCw5ICsxNDMzNyw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR7d2x9LXogJHt3bH1kZWZzJworIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgorLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisrCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisgCSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworIAorIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKyAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KK0BAIC0xMzczNSw2ICsxNDQ3NCwxMyBAQCBwcml2YXRlOgorIH07CisgX0xUX0VPRgorIAorKworK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKytjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisrKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7CisrKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OworK2VzYWMKKysKKyBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgICBhY19zdGF0dXM9JD8KK0BAIC0xMzc0OCw3ICsxNDQ5NCw3IEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubworIAorICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbworLSAgICBjYXNlICRwIGluCisrICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KKyAKKyAgICAgLUwqIHwgLVIqIHwgLWwqKQorICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgorQEAgLTEzNzU3LDEzICsxNDUwMywyMiBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KKyAJIHByZXY9JHAKKyAJIGNvbnRpbnVlCistICAgICAgIGVsc2UKKy0JIHByZXY9CisgICAgICAgIGZpCisgCisrICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCisrICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorKyAgICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICBlc2FjCisrICAgICAgIGZpCisrICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgZXNhYworICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorLQkgY2FzZSAkcCBpbgorLQkgLUwqIHwgLVIqKQorKwkgY2FzZSAke3ByZXZ9IGluCisrCSAtTCB8IC1SKQorIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKKyAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCisgCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgorQEAgLTEzNzgzLDggKzE0NTM4LDEwIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorIAkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAke3ByZXZ9JHtwfSIKKyAJIGZpCisgICAgICAgIGZpCisrICAgICAgIHByZXY9CisgICAgICAgIDs7CisgCisrICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cworICAgICAqLiRvYmpleHQpCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAorICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KK0BAIC0xMzgyMCw2ICsxNDU3Nyw3IEBAIGVsc2UKKyBmaQorIAorICRSTSAtZiBjb25mZXN0LiRvYmpleHQKKytDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCisgCisgIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KKyBjYXNlICRob3N0X29zIGluCitAQCAtMTM4NTUsNyArMTQ2MTMsNyBAQCBsaW51eCopCisgCisgc29sYXJpcyopCisgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgQ0MqKQorKyAgQ0MqIHwgc3VuQ0MqKQorICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKKyAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCisgICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKK0BAIC0xMzkyMCw4ICsxNDY3OCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgorICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KK0BAIC0xNDAyNiw2ICsxNDc4MiwxMSBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAkgIDs7CisgCWVzYWMKKyAJOzsKKysgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQorKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisrCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisrCWx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLURETExfRVhQT1JUJworKwk7OworICAgICAgIGRndXgqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorIAkgIGVjKysqKQorQEAgLTE0MTc4LDcgKzE0OTM5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJOzsKKyAgICAgICBzb2xhcmlzKikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0JICBDQyopCisrCSAgQ0MqIHwgc3VuQ0MqKQorIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctS1BJQycKKyAJICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nLUJzdGF0aWMnCitAQCAtMTQyNDMsMTAgKzE1MDA0LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFg9JGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWAorIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtMTQzMDQsNiArMTUwNzIsOCBAQCBmaQorIAorIAorIAorKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTE0NDgxLDYgKzE1MjUxLDcgQEAgZmkKKyAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKyAKKyAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionCisgICBjYXNlICRob3N0X29zIGluCisgICBhaXhbNC05XSopCisgICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgorQEAgLTE0NDk1LDE1ICsxNTI2NiwyMCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQorICAgICA7OworICAgcHczMiopCisgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSIkbHRkbGxfY21kcyIKKy0gIDs7CisrICAgIDs7CisgICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorLSAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87L14uKlsgXV9fbm1fXy9zL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICBjbCopIDs7CisrICAgICopCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisrICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworICAgKikKKyAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIDs7CisgICBlc2FjCistICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionCisgCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKKyAkYXNfZWNobyAiJGxkX3NobGlic19DWFgiID4mNjsgfQorQEAgLTE0NzY2LDggKzE1NTQyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTE0Nzk5LDEzICsxNTU3Niw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTQ4OTYsNyArMTU3MzEsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTUzNTUsNiArMTYxOTAsNyBAQCBmaQorICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisgCisgICBDQz0kbHRfc2F2ZV9DQworKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworICAgTERDWFg9JExECisgICBMRD0kbHRfc2F2ZV9MRAorICAgR0NDPSRsdF9zYXZlX0dDQworQEAgLTE4NDc3LDEzICsxOTMxMywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4NDk4LDE0ICsxOTM0MSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODUzOCwxMiArMTkzODQsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTg1ODIsOCArMTk0MjgsOCBAQCBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZQorIGNvbXBpbGVyX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBHQ0NfQ1hYPSdgJEVDSE8gIiRHQ0NfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bF9DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bF9DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD0nYCRFQ0hPICIkYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODYxMCwxMiArMTk0NTYsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYIiB8ICRTRUQgIiRkZWxheV8KKyBoYXJkY29kZV9hdXRvbWF0aWNfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoX0NYWD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aF9DWFg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltc19DWFg9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kc19DWFg9J2AkRUNITyAiJHByZWxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWNfQ1hYPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGhhcmRjb2RlX2FjdGlvbl9DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2FjdGlvbl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFg9J2AkRUNITyAiJGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4NjUzLDggKzE5NDk5LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xODY2NCwxMiArMTk1MTUsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE4Njg1LDcgKzE5NTM4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTg3MDcsOCArMTk1NTksOCBAQCBMRF9DWFggXAorIHJlbG9hZF9mbGFnX0NYWCBcCisgY29tcGlsZXJfQ1hYIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFggXAorLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggXAorK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFggXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCBcCisgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWCBcCitAQCAtMTg3MjAsNyArMTk1NzIsNiBAQCBub191bmRlZmluZWRfZmxhZ19DWFggXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkX0NYWCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl9DWFggXAorLWZpeF9zcmNmaWxlX3BhdGhfQ1hYIFwKKyBleGNsdWRlX2V4cHN5bXNfQ1hYIFwKKyBpbmNsdWRlX2V4cHN5bXNfQ1hYIFwKKyBmaWxlX2xpc3Rfc3BlY19DWFggXAorQEAgLTE4NzU0LDYgKzE5NjA1LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xODc2OCw3ICsxOTYyMCw4IEBAIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYIFwKKyBtb2R1bGVfY21kc19DWFggXAorIG1vZHVsZV9leHBzeW1fY21kc19DWFggXAorIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIFwKKy1wcmVsaW5rX2NtZHNfQ1hYOyBkbworK3ByZWxpbmtfY21kc19DWFggXAorK3Bvc3RsaW5rX2NtZHNfQ1hYOyBkbworICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KKyAgICAgKltcXFxcXFxcYFxcIlxcXCRdKikKKyAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorQEAgLTE5NTMzLDcgKzIwMzg2LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xOTYzNiwxOSArMjA0OTAsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTk2NzgsNiArMjA1NTUsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTk2ODcsNiArMjA1NzAsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE5ODAxLDEyICsyMDY4NywxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xOTg5Myw5ICsyMDc3OSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE5OTExLDYgKzIwNzk0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xOTk1NywyMTAgKzIwODQzLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK0BAIC0yMDE4OCwxMiArMjEwMzMsMTIgQEAgd2l0aF9nY2M9JEdDQ19DWFgKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWAorIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYCisgCitAQCAtMjAyODAsOSArMjExMjUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoX0NYWAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnNfQ1hYCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGhfQ1hYCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYCisgCitAQCAtMjAyOTgsNiArMjExNDAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltc19DWFgKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzX0NYWAorIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzX0NYWAorKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlY19DWFgKKyAKK2RpZmYgLS1naXQgYS9saWJjdGYvY29uZmlndXJlIGIvbGliY3RmL2NvbmZpZ3VyZQoraW5kZXggZTU0OTNiMzE2OTEuLjk5NzdlNGY3YTQyIDEwMDc1NQorLS0tIGEvbGliY3RmL2NvbmZpZ3VyZQorKysrIGIvbGliY3RmL2NvbmZpZ3VyZQorQEAgLTY2Myw2ICs2NjMsOCBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc3OCw2ICs3ODAsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfbGFyZ2VmaWxlCisgZW5hYmxlX3dlcnJvcl9hbHdheXMKK0BAIC0xNDM2LDYgKzE0MzksOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC01MzI0LDggKzUzMjksOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTQzNiw3ICs1NDQxLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjEyMiw4ICs2MTI3LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTYxNzIsNiArNjE3Nyw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjE4OCw2ICs2MjY3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MzU2LDcgKzY0NDAsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjUxMCw2ICs2NTk1LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjUyNSw5ICs2NjI1LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NTQzLDcgKzY3OTYsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NTYzLDExICs2ODE2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY1ODMsNyArNjg0MCw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NjAyLDYgKzY4NTksMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTY2MTMsMTYgKzY4NzQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC02OTY0LDggKzcyODEsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTcwMDEsNiArNzMxOCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03MDQyLDYgKzczNjAsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzA1Myw3ICs3MzgzLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzA3OSw4ICs3NDA5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzA5MCw4ICs3NDIwLDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzEyOCw2ICs3NDU4LDE2IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzE0NCw2ICs3NDg0LDQ1IEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzM1NSw2ICs3NzM0LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03OTE4LDYgKzg0MTQsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODA4Myw3ICs4NTgxLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTgxNzIsNyArODY3MSw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODQ3MCw4ICs4OTY5LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04NjM3LDYgKzkxMzQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04Njk5LDcgKzkyMDIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODc1NiwxMyArOTI1OSwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04ODIzLDYgKzkzMzAsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05MTczLDcgKzk2ODUsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MjcyLDEyICs5Nzg1LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkyOTEsOCArOTgwNCw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05MzEwLDggKzk4MjMsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTM1Nyw4ICs5ODcwLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk0ODgsNyArMTAwMDEsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTUwMSwyMiArMTAwMjAsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk1MjgsNyArMTAwNTQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1NDEsMjIgKzEwMDczLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTYwMSwyMCArMTAxNDAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05Njc1LDcgKzEwMjU3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTY4Myw3ICsxMDI2NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk2OTksNyArMTAyODEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTcyMywxMCArMTAzMDUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05ODA1LDIzICsxMDM4NywzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTkwNiw3ICsxMDUwMSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk5MjUsOSArMTA1MjAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA1MDMsOCArMTEwOTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA1MzcsMTMgKzExMTMzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDYzNSw3ICsxMTI4OSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTQzMSw3ICsxMjA4NSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNDM0ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTQ3NSwxMCArMTIxMjksMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTUzNyw3ICsxMjE5MSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNTQwICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTU4MSwxMCArMTIyMzUsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMzk5NCwxMyArMTQ2NDgsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNDAxNSwxNCArMTQ2NzYsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTQwNTUsMTIgKzE0NzE5LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE0MTE1LDggKzE0Nzc5LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNDEyNiwxMiArMTQ3OTUsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE0MTQ3LDcgKzE0ODE4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTQxODMsNiArMTQ4NTMsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE0OTM5LDcgKzE1NjEwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNTA0MiwxOSArMTU3MTQsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTUwODQsNiArMTU3NzksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTUwOTMsNiArMTU3OTQsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE1MjA3LDEyICsxNTkxMSwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNTI5OSw5ICsxNjAwMyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE1MzE3LDYgKzE2MDE4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNTM0OSwyMTAgKzE2MDUzLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9saWJ0b29sLm00IGIvbGlidG9vbC5tNAoraW5kZXggNDM0NTMwMDU5ZmEuLmU0NWZkYzY5OThjIDEwMDY0NAorLS0tIGEvbGlidG9vbC5tNAorKysrIGIvbGlidG9vbC5tNAorQEAgLTEsNyArMSw4IEBACisgIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCitAQCAtMTAsNyArMTEsOCBAQAorIAorIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMzcsNyArMzksNyBAQCBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAorICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgXSkKKyAKKy0jIHNlcmlhbCA1NiBMVF9JTklUCisrIyBzZXJpYWwgNTcgTFRfSU5JVAorIAorIAorICMgTFRfUFJFUkVRKFZFUlNJT04pCitAQCAtOTIsNyArOTQsOCBAQCBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIEFDX1NVQlNUKExJQlRPT0wpZG5sCisgCisgX0xUX1NFVFVQCitAQCAtMTY2LDEwICsxNjksMTMgQEAgX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAorIGRubAorIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAorIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCisrbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCisgCisgX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWworICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKK0BAIC0xOTksNyArMjA1LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAorIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCisgY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCisgCistQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKKyAKK0BAIC03NDYsMTUgKzc1MiwxMiBAQCBfTFRfRU9GCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorIAorLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisrICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyBdLAorQEAgLTk4MCw2ICs5ODMsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC0xMDY5LDMwICsxMDc0LDQxIEBAIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCisgICBmaQorIF0pCisgCistIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKKyAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKKyAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKKyAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KKyAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCisgIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KKysjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KKysjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCisgbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKKyBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKKy1BQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW0FDX0xBTkdfUFJPR1JBTV0pXSxbCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpXSxbXSkKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKytpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKKysgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCisrICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfV0nCisrICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKysgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaV0sW10pCisrICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisrICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysgIF0pCisrICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKKytmaQorIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorIAorIAorQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgCisgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQorIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorIAorIAorKyMgX0xUX1dJVEhfU1lTUk9PVAorKyMgLS0tLS0tLS0tLS0tLS0tLQorK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKKytbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCisrQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCisrWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCisrW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCisrCisrZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQorK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgorK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKKysgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQorKyAgIDs7CisrZXNhYworKworKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCisrX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCisrW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQorKworICMgX0xUX0VOQUJMRV9MT0NLCisgIyAtLS0tLS0tLS0tLS0tLS0KKyBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKK0BAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIF0pIyBfTFRfRU5BQkxFX0xPQ0sKKyAKKyAKKysjIF9MVF9QUk9HX0FSCisrIyAtLS0tLS0tLS0tLQorK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCisrW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKytfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKKytfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorKworK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKKysgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCisrICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrICAgICBdKQorKyAgXSkKKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKytfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKKysgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQorK10pIyBfTFRfUFJPR19BUgorKworKworICMgX0xUX0NNRF9PTERfQVJDSElWRQorICMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKKy1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCisrW19MVF9QUk9HX0FSCisgCisgQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCisgdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CitAQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKKyAgIDs7CisgZXNhYworIF0pCisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCisgICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCisgX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKKy0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKKysgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAorKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAorKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKyBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAorIAorIAorQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CisgZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCisgZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCisgCisrIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5CisrIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCisrIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcworK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCisrW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKKytBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCisrbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCisrW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworK10pCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCisrICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKKytdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKysKKysKKysjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAorK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKKytbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKKysgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0Kl0pCisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCisrXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysKKyAKKyAjIExUX0xJQl9NCisgIyAtLS0tLS0tLQorQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCisgCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAJZmkKK0BAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQorICAgQUNfTVNHX1JFU1VMVChvaykKKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAorICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCitAQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAorIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAorICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKKyAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKKytfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQorIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUworIAorIAorQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQorIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgCistQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCitAQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCSAgOzsKKyAJZXNhYworIAk7OworKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisrCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKysJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKysJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorKwk7OworICAgICAgIGRndXgqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorIAkgIGVjKysqKQorQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCTs7CisgICAgICAgc29sYXJpcyopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCistCSAgQ0MqKQorKwkgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKK0BAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKKyAgICAgOzsKKyBlc2FjCistQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCistX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCistCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKysKKytBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAorKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCisrICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQorIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKKyAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCisgCisrX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisrCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKKyBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAorIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKKyBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0BAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKyBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgIGFpeFtbNC05XV0qKQorICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KK0BAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAgIDs7CisgICBwdzMyKikKKyAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgorLSAgOzsKKysgICAgOzsKKyAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCistICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgIGNsKikgOzsKKysgICAgKikKKysgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKysgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisgICAqKQorICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgOzsKKyAgIGVzYWMKKy0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorIF0sIFsKKyAgIHJ1bnBhdGhfdmFyPQorICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKKyAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCistICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCistCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgIGVsc2UKK0BAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KK0BAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtpbnQgZm9vKHZvaWQpIHt9XSldLAorLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLSAgICAgICAgKQorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2xdLAorKwkgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbF0sCisrCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgQUNfTElOS19JRkVMU0UoCisrCSAgICAgW0FDX0xBTkdfU09VUkNFKAorKwkgICAgICAgIFtBQ19MQU5HX0NBU0UoW0NdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKysJCQkgICAgICBbQysrXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisrCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWworKyAgICAgIHN1YnJvdXRpbmUgZm9vCisrICAgICAgZW5kXV0sCisrCQkJICAgICAgW0ZvcnRyYW5dLCBbWworKyAgICAgIHN1YnJvdXRpbmUgZm9vCisrICAgICAgZW5kXV0pXSldLAorKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKKysJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vXSkKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiXSkKKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtNTAyMCw3ICs1MzUwLDcgQEAgX0xUX0VPRgorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtNTAzOSw5ICs1MzY5LDkgQEAgX0xUX0VPRgorICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtNTMxMyw4ICs1NjQzLDYgQEAgX0xUX1RBR0RFQ0woW10sIFtpbmhlcml0X3JwYXRoXSwgWzBdLAorICAgICB0byBydW50aW1lIHBhdGggbGlzdF0pCisgX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAorICAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKKy1fTFRfVEFHREVDTChbXSwgW2ZpeF9zcmNmaWxlX3BhdGhdLCBbMV0sCistICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQorIF9MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAorICAgICBbU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkXSkKKyBfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCitAQCAtNTMyNSw2ICs1NjUzLDggQEAgX0xUX1RBR0RFQ0woW10sIFtpbmNsdWRlX2V4cHN5bXNdLCBbMV0sCisgICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQorIF9MVF9UQUdERUNMKFtdLCBbcHJlbGlua19jbWRzXSwgWzJdLAorICAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQorK19MVF9UQUdERUNMKFtdLCBbcG9zdGxpbmtfY21kc10sIFsyXSwKKysgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXNdKQorIF9MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCisgICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXNdKQorIGRubCBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorQEAgLTU0MjYsNiArNTc1Niw3IEBAIENDPSIkbHRfc2F2ZV9DQyIKKyBtNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCisgW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKKyBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgorICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKKyAgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCitAQCAtNTQ4Nyw2ICs1ODE4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAKKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSRDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgbHRfc2F2ZV9MRD0kTEQKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgIEdDQz0kR1hYCitAQCAtNTUwNCw2ICs1ODM2LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgIGZpCisgICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAorICAgQ0M9JHtDWFgtImMrKyJ9CisrICBDRkxBR1M9JENYWEZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK0BAIC01NjY3LDcgKzYwMDAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CisgICAgICAgICAgICMgZXhlY3V0YWJsZS4KKy0gICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKKyAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCisgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTU2NzksNyArNjAxMiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgIGVsc2UKKyAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCisgCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCitAQCAtNTcyMSwyOSArNjA1NCw3NSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgOzsKKyAKKyAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCistICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCistICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCistICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCistICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKy0KKy0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKy0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCistICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCistICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBlbHNlCistCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGZpfgorLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICBlbHNlCistICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKy0gICAgICAgIGZpCistICAgICAgICA7OworKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCisrCSxjbCogfCBubyxjbCopCisrCSAgIyBOYXRpdmUgTVNWQworKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKysJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisrCSAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCSAgbGliZXh0PWxpYgorKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwkgIHNocmV4dF9jbWRzPSIuZGxsIgorKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBlbHNlCisrCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZml+CisrCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgICBsaW5rbmFtZXM9JworKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgorKwkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisrCSAgX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAgICouZXhlfCouRVhFKSA7OworKwkgICAgICAqKQorKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJCTs7CisrCSAgICBlc2FjfgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKysJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgICAgZmknCisrCSAgOzsKKysJKikKKysJICAjIGcrKworKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisrCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisrCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisrCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKworKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKysJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKysJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisrCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZWxzZQorKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGZpfgorKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgIGVsc2UKKysJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKysJICBmaQorKwkgIDs7CisrCWVzYWMKKysJOzsKKyAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCisgCTs7CitAQCAtNTgxOCw3ICs2MTk3LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICA7OworICAgICAgICAgICAqKQorICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCistICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KK0BAIC01ODg5LDEwICs2MjY4LDEwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgIGlhNjQqKQorLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICAqKQorLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgIGVzYWMKKyAJICAgICAgZmkKK0BAIC01OTMzLDkgKzYzMTIsOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICAqKQorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSAgICAgIGVsc2UKKy0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisrCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKK0BAIC02MDA1LDIwICs2Mzg0LDIwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KKy0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKysJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCisgCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgorLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KKysJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgorIAkJJFJBTkxJQiAkb2xkbGliJworIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAJICAgICAgOzsKKyAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCisgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworQEAgLTYyMTMsNyArNjU5Miw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgICAgKikKKy0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICBlc2FjCisgCitAQCAtNjI1OSw3ICs2NjM4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAKKyAgICAgICBzb2xhcmlzKikKKyAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgICAgIENDKikKKysgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQorIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcworIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJworQEAgLTYzMDAsOSArNjY3OSw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCisgCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCistCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKysJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgCisgCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorQEAgLTY0MzEsNiArNjgxMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKyAKKyAgIENDPSRsdF9zYXZlX0NDCisrICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgICBMRENYWD0kTEQKKyAgIExEPSRsdF9zYXZlX0xECisgICBHQ0M9JGx0X3NhdmVfR0NDCitAQCAtNjQ0NSw2ICs2ODI1LDI5IEBAIEFDX0xBTkdfUE9QCisgXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKKyAKKyAKKysjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGZ1bmNfc3RyaXBuYW1lX2NuZiBwcmVmaXggc3VmZml4IG5hbWUKKysjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisrIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisrIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorKyMKKysjIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSAobm9uLVhTSSkgdmVyc2lvbiBvZiBmdW5jX3N0cmlwbmFtZSwKKysjIGV4Y2VwdCB0aGlzIG9uZSBjYW4gYmUgdXNlZCBieSBtNCBjb2RlIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGJ5IGNvbmZpZ3VyZSwKKysjIHJhdGhlciB0aGFuIHRoZSBsaWJ0b29sIHNjcmlwdC4KKyttNF9kZWZ1bihbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0sW2RubAorK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pCisrQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKQorK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQorK3sKKysgIGNhc2UgJHsyfSBpbgorKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKysgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWVfY25mCisrXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKysKKyAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQorICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQorQEAgLTY0NTMsNiArNjg1Niw3IEBAIEFDX0xBTkdfUE9QCisgIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCisgbTRfZGVmdW4oW19MVF9TWVNfSElEREVOX0xJQkRFUFNdLAorIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKytBQ19SRVFVSVJFKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSlkbmwKKyAjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgorIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KKyBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQorQEAgLTY1MDMsNiArNjkwNywxMyBAQCBwdWJsaWMgY2xhc3MgZm9vIHsKKyB9OworIF9MVF9FT0YKKyBdKQorKworK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKytjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisrKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7CisrKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OworK2VzYWMKKysKKyBkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5CisgZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KKyBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorQEAgLTY1MTQsNyArNjkyNSw3IEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCisgCisgICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCistICAgIGNhc2UgJHAgaW4KKysgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgorIAorICAgICAtTCogfCAtUiogfCAtbCopCisgICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCitAQCAtNjUyMywxMyArNjkzNCwyMiBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgorIAkgcHJldj0kcAorIAkgY29udGludWUKKy0gICAgICAgZWxzZQorLQkgcHJldj0KKyAgICAgICAgZmkKKyAKKysgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KKysgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCisrICAgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIGVzYWMKKysgICAgICAgZmkKKysgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICBlc2FjCisgICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCistCSBjYXNlICRwIGluCistCSAtTCogfCAtUiopCisrCSBjYXNlICR7cHJldn0gaW4KKysJIC1MIHwgLVIpCisgCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQorIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKKyAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCitAQCAtNjU0OSw4ICs2OTY5LDEwIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgorIAkgZmkKKyAgICAgICAgZmkKKysgICAgICAgcHJldj0KKyAgICAgICAgOzsKKyAKKysgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCisgICAgICouJG9iamV4dCkKKyAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCisgICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgorQEAgLTY1ODYsNiArNzAwOCw3IEBAIGVsc2UKKyBmaQorIAorICRSTSAtZiBjb25mZXN0LiRvYmpleHQKKytDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCisgCisgIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KKyBtNF9pZihbJDFdLCBbQ1hYXSwKK0BAIC02NjIyLDcgKzcwNDUsNyBAQCBsaW51eCopCisgCisgc29sYXJpcyopCisgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgQ0MqKQorKyAgQ0MqIHwgc3VuQ0MqKQorICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKKyAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCisgICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKK0BAIC02NzM1LDcgKzcxNTgsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSIkQ0MiCisgICBsdF9zYXZlX0dDQz0kR0NDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBDQz0ke0Y3Ny0iZjc3In0KKysgIENGTEFHUz0kRkZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK0BAIC02Nzg5LDYgKzcyMTQsNyBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KKyAKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKKyAgIENDPSIkbHRfc2F2ZV9DQyIKKysgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCisgCisgQUNfTEFOR19QT1AKK0BAIC02ODY1LDcgKzcyOTEsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9IiRDQyIKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIENDPSR7RkMtImY5NSJ9CisrICBDRkxBR1M9JEZDRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKKyAKK0BAIC02OTIxLDcgKzczNDksOCBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgorICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisgCisgICBHQ0M9JGx0X3NhdmVfR0NDCistICBDQz0iJGx0X3NhdmVfQ0MiCisrICBDQz0kbHRfc2F2ZV9DQworKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKKyAKKyBBQ19MQU5HX1BPUAorQEAgLTY5NTgsMTAgKzczODcsMTIgQEAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorIAorICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCistbHRfc2F2ZV9DQz0iJENDIgorK2x0X3NhdmVfQ0M9JENDCisrbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworIGx0X3NhdmVfR0NDPSRHQ0MKKyBHQ0M9eWVzCisgQ0M9JHtHQ0otImdjaiJ9CisrQ0ZMQUdTPSRHQ0pGTEFHUworIGNvbXBpbGVyPSRDQworIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKK0BAIC02OTkyLDcgKzc0MjMsOCBAQCBmaQorIEFDX0xBTkdfUkVTVE9SRQorIAorIEdDQz0kbHRfc2F2ZV9HQ0MKKy1DQz0iJGx0X3NhdmVfQ0MiCisrQ0M9JGx0X3NhdmVfQ0MKKytDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKKyAKKyAKK0BAIC03MDI3LDkgKzc0NTksMTEgQEAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorIAorICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgbHRfc2F2ZV9DQz0iJENDIgorK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyBsdF9zYXZlX0dDQz0kR0NDCisgR0NDPQorIENDPSR7UkMtIndpbmRyZXMifQorK0NGTEFHUz0KKyBjb21waWxlcj0kQ0MKKyBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorQEAgLTcwNDIsNyArNzQ3Niw4IEBAIGZpCisgCisgR0NDPSRsdF9zYXZlX0dDQworIEFDX0xBTkdfUkVTVE9SRQorLUNDPSIkbHRfc2F2ZV9DQyIKKytDQz0kbHRfc2F2ZV9DQworK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCisgCisgCitAQCAtNzEwMSw2ICs3NTM2LDE1IEBAIF9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW0FuIG9iamVjdCBzeW1ib2wgZHVtcGVyXSkKKyBBQ19TVUJTVChbT0JKRFVNUF0pCisgXSkKKyAKKysjIF9MVF9ERUNMX0RMTFRPT0wKKysjIC0tLS0tLS0tLS0tLS0tLS0KKysjIEVuc3VyZSBETExUT09MIHZhcmlhYmxlIGlzIHNldC4KKyttNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCisrW0FDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKKytBQ19TVUJTVChbRExMVE9PTF0pCisrXSkKKyAKKyAjIF9MVF9ERUNMX1NFRAorICMgLS0tLS0tLS0tLS0tCitAQCAtNzE5NCw4ICs3NjM4LDggQEAgbTRfZGVmdW4oW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10sCisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC03MjM0LDIwNiArNzY3OCwxNjIgQEAgX0xUX0RFQ0woW05MMlNQXSwgW2x0X05MMlNQXSwgWzFdLCBbdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlc10pZG5sCisgXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUworIAorIAorLSMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIEJvdXJuZSBhbmQgWFNJIGNvbXBhdGlibGUgdmFyaWFudHMgb2Ygc29tZSB1c2VmdWwgc2hlbGwgZnVuY3Rpb25zLgorLW00X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAorLVtjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCisrIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgorK200X2RlZnVuKFtfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFXSwKKytbZG5sIHsKKytzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKKyskMSAoKVwKKyt7XAorK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQorK30gIyBFeHRlbmRlZC1zaGVsbCAkMSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK10pCisgCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisgCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKysjIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKKysjIGVxdWl2YWxlbnQgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRob3NlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuLgorK200X2RlZnVuKFtfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TXSwKKytbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKysgICAgZXNhY10pCisrCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Jhc2VuYW1lXSwgW2RubAorKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKysKKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWVdLCBbZG5sCisrICAgIGNhc2UgJHsxfSBpbgorKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisrICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworKyAgICBlc2FjCisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorIAorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAorKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCisrICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKysgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKysgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKysgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQorIAorLWRubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCistZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKKy1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQorKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XSkKKyAKKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X3Nob3J0X29wdF0sIFtkbmwKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCisgCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCisrICAgIGNhc2UgJHsxfSBpbgorKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CisrICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CisrICAgIGVzYWNdKQorIAorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQorIAorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FyaXRoXSwgWyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKV0pCisgCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKKytmaQorIAorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRbQF0iYAorLX0KKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF0sIFsgICAgZXZhbCAiJHsxfSs9XFwkezJ9Il0pCisgCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF9xdW90ZWRdLCBbZG5sCisrICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisrZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCisrICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXSkKKyAKKy1fTFRfRU9GCistZXNhYworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKyAKKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGVdKQorK2ZpCisrXSkKKyAKKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJFsxXSs9XCRbMl0iCistfQorLV9MVF9FT0YKKysjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgRGV0ZXJtaW5lIHdoaWNoIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCBieQorKyMgZnVuY190b19ob3N0X2ZpbGUgKGFuZCwgaW1wbGljaXRseSwgYnkgZnVuY190b19ob3N0X3BhdGgpLiAgVGhlc2UgYXJlIG5lZWRlZAorKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgorK200X2RlZnVuKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10sCisrW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKKytBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSkKKytBQ19DQUNIRV9WQUwobHRfY3ZfdG9faG9zdF9maWxlX2NtZCwKKytbY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisgICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgorLX0KKy0KKy1fTFRfRU9GCisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisgICAgIDs7CistICBlc2FjCisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrXSkKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQorK19MVF9ERUNMKFt0b19ob3N0X2ZpbGVfY21kXSwgW2x0X2N2X3RvX2hvc3RfZmlsZV9jbWRdLAorKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSlkbmwKKysKKytBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKQorK0FDX0NBQ0hFX1ZBTChsdF9jdl90b190b29sX2ZpbGVfY21kLAorK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKyBdKQorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKytBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0pCisrX0xUX0RFQ0woW3RvX3Rvb2xfZmlsZV9jbWRdLCBbbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0sCisrICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCisrXSkjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA5NTAzZWM4NWQ3MC4uNzBlODU2ZTA2NTkgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTEsMTAgKzEsOSBAQAorLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCisgCistIyBsaWJ0b29sIChHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCisrIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40CisgIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorIAorICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorLSMgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTworICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgCitAQCAtMzgsNyArMzcsNiBAQAorICMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyAjICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorICMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKy0jICAgICAgIC0tbm8tZmluaXNoICAgICAgICAgIGxldCBpbnN0YWxsIG1vZGUgYXZvaWQgZmluaXNoIGNvbW1hbmRzCisgIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCisgIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisgIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAorQEAgLTcxLDE3ICs2OSwxOSBAQAorICMgICAgICAgICBjb21waWxlcjoJCSRMVENDCisgIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisgIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCistIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKKysjICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNAorICMgICAgICAgICBhdXRvbWFrZToJJGF1dG9tYWtlX3ZlcnNpb24KKyAjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCisgIworICMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgorKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KKysjIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgorIAorIFBST0dSQU09bGlidG9vbAorIFBBQ0tBR0U9bGlidG9vbAorLVZFUlNJT049Mi4yLjdhCistVElNRVNUQU1QPSIgMS4zMTM0IDIwMDktMTEtMjkiCistcGFja2FnZV9yZXZpc2lvbj0xLjMxMzQKKytWRVJTSU9OPTIuNAorK1RJTUVTVEFNUD0iIgorK3BhY2thZ2VfcmV2aXNpb249MS4zMjkzCisgCisgIyBCZSBCb3VybmUgY29tcGF0aWJsZQorIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgorQEAgLTEwNiw5ICsxMDYsNiBAQCBfTFRFQ0hPX0VPRicKKyB9CisgCisgIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KKy0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgorLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCistIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgorIGx0X3VzZXJfbG9jYWxlPQorIGx0X3NhZmVfbG9jYWxlPQorIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUworQEAgLTEyMSwxNSArMTE4LDEzIEBAIGRvCisgCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgorIAlmaSIKKyBkb25lCisrTENfQUxMPUMKKytMQU5HVUFHRT1DCisrZXhwb3J0IExBTkdVQUdFIExDX0FMTAorIAorICRsdF91bnNldCBDRFBBVEgKKyAKKyAKKy0KKy0KKy0KKy0KKy0KKyAjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKKyAjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgorICMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCitAQCAtMTQwLDcgKzEzNSw3IEBAIHByb2dwYXRoPSIkMCIKKyAKKyAKKyA6ICR7Q1A9ImNwIC1mIn0KKy06ICR7RUNITz0kYXNfZWNob30KKyt0ZXN0ICIke0VDSE8rc2V0fSIgPSBzZXQgfHwgRUNITz0ke2FzX2VjaG8tJ3ByaW50ZiAlc1xuJ30KKyA6ICR7RUdSRVA9Ii9iaW4vZ3JlcCAtRSJ9CisgOiAke0ZHUkVQPSIvYmluL2dyZXAgLUYifQorIDogJHtHUkVQPSIvYmluL2dyZXAifQorQEAgLTE0OSw3ICsxNDQsNyBAQCBwcm9ncGF0aD0iJDAiCisgOiAke01LRElSPSJta2RpciJ9CisgOiAke01WPSJtdiAtZiJ9CisgOiAke1JNPSJybSAtZiJ9CistOiAke1NFRD0iL21vdW50L2VuZG9yL3dpbGRlbmh1L2xvY2FsLXg4Nl82NC9iaW4vc2VkIn0KKys6ICR7U0VEPSIvYmluL3NlZCJ9CisgOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CisgOiAke1hzZWQ9IiRTRUQgLWUgMXMvXlgvLyJ9CisgCitAQCAtMTY5LDYgKzE2NCwyNyBAQCBJRlM9IiAJJGx0X25sIgorIGRpcm5hbWU9InMsL1teL10qJCwsIgorIGJhc2VuYW1lPSJzLF4uKi8sLCIKKyAKKysjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKysjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisrIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCisrZnVuY19kaXJuYW1lICgpCisreworKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCisrICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKysgICAgZmkKKyt9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19iYXNlbmFtZSBmaWxlCisrZnVuY19iYXNlbmFtZSAoKQorK3sKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCisrfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisgIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorICMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyAjIGNhbGw6CitAQCAtMTgzLDE3ICsxOTksMzEgQEAgYmFzZW5hbWU9InMsXi4qLywsIgorICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKyB7CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorLX0KKysgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKysgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisrICAgIGVsc2UKKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisrICAgIGZpCisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorK30gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCisrIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKysjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKysjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCisrZnVuY19zdHJpcG5hbWUgKCkKKyt7CisrICAgIGNhc2UgJHsyfSBpbgorKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworKyAgICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorIAorLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgorIAorICMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KKyBwYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKK0BAIC0zNzYsNiArNDA2LDE1IEBAIHNlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCisgIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCisgZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworIAorKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IHR1cm5zIGEgc3RyaW5nIGludG8gYSByZWdleCBtYXRjaGluZyBmb3IgdGhlCisrIyBzdHJpbmcgbGl0ZXJhbGx5LgorK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJworKworKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCisrIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKKysjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KKytsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisrCisgIyBSZS1gXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIGRvdWJsZV9xdW90ZV9zdWJzdCB0aGF0IHdlcmUKKyAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCisgIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCitAQCAtNDA0LDcgKzQ0Myw3IEBAIG9wdF93YXJuaW5nPToKKyAjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KKyBmdW5jX2VjaG8gKCkKKyB7CistICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgorKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgorIH0KKyAKKyAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KK0BAIC00MzAsMTQgKzQ2OSwxNCBAQCBmdW5jX2VjaG9fYWxsICgpCisgIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorIGZ1bmNfZXJyb3IgKCkKKyB7CistICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgorKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgorIH0KKyAKKyAjIGZ1bmNfd2FybmluZyBhcmcuLi4KKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KKyBmdW5jX3dhcm5pbmcgKCkKKyB7CistICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKysgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCisgCisgICAgICMgYmFzaCBidWcgYWdhaW46CisgICAgIDoKK0BAIC02NTYsMTkgKzY5NSwzNSBAQCBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgKCkKKyAgICAgZmkKKyB9CisgCistCistCisrIyBmdW5jX3RyX3NoCisrIyBUdXJuICQxIGludG8gYSBzdHJpbmcgc3VpdGFibGUgZm9yIGEgc2hlbGwgdmFyaWFibGUgbmFtZS4KKysjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKKysjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAorKyMgaWYgJDEgYmVnaW5zIHdpdGggYSBkaWdpdCwgYSAnXycgaXMgcHJlcGVuZGVkIGFzIHdlbGwuCisrZnVuY190cl9zaCAoKQorK3sKKysgIGNhc2UgJDEgaW4KKysgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKKysgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCisrICAgIDs7CisrICAqICkKKysgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKKysgICAgOzsKKysgIGVzYWMKKyt9CisgCisgCisgIyBmdW5jX3ZlcnNpb24KKyAjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyBmdW5jX3ZlcnNpb24gKCkKKyB7CisrICAgICRvcHRfZGVidWcKKysKKyAgICAgJFNFRCAtbiAnLyhDKS8hYiBnbworIAk6bW9yZQorIAkvXC4vIXsKKyAJICBOCistCSAgcy9cbiMgLy8KKysJICBzL1xuIyAvIC8KKyAJICBiIG1vcmUKKyAJfQorIAk6Z28KK0BAIC02ODUsNyArNzQwLDkgQEAgZnVuY192ZXJzaW9uICgpCisgIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCisgZnVuY191c2FnZSAoKQorIHsKKy0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLWgvIHsKKysgICAgJG9wdF9kZWJ1ZworKworKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8geworICAgICAgICAgcy9eIyAvLworIAlzL14jICokLy8KKyAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLworQEAgLTcwMSw3ICs3NTgsMTAgQEAgZnVuY191c2FnZSAoKQorICMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KKyBmdW5jX2hlbHAgKCkKKyB7CisrICAgICRvcHRfZGVidWcKKysKKyAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKKysJOnByaW50CisgICAgICAgICBzL14jIC8vCisgCXMvXiMgKiQvLworIAlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCitAQCAtNzE0LDcgKzc3NCwxMSBAQCBmdW5jX2hlbHAgKCkKKyAJcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKGF1dG9tYWtlIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisgCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworIAlwCistICAgICB9JyA8ICIkcHJvZ3BhdGgiCisrCWQKKysgICAgIH0KKysgICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKKysgICAgIC9eIyBHZW5lcmFsIGhlbHAgdXNpbmcvYiBwcmludAorKyAgICAgJyA8ICIkcHJvZ3BhdGgiCisgICAgIHJldD0kPworICAgICBpZiB0ZXN0IC16ICIkMSI7IHRoZW4KKyAgICAgICBleGl0ICRyZXQKK0BAIC03MjYsMTIgKzc5MCwzOSBAQCBmdW5jX2hlbHAgKCkKKyAjIGV4aXRfY21kLgorIGZ1bmNfbWlzc2luZ19hcmcgKCkKKyB7CistICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgorKyAgICAkb3B0X2RlYnVnCisrCisrICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKKyAgICAgZXhpdF9jbWQ9ZXhpdAorIH0KKyAKKy1leGl0X2NtZD06CisgCisrIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAorKyMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAorKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBTSE9SVE9QVCBhZnRlciB0aGUgMm5kIGNoYXJhY3Rlci4KKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQorK3sKKysgICAgbXlfc2VkX3Nob3J0X29wdD0nMXMvXlwoLi5cKS4qJC9cMS87cScKKysgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisrCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCisrfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0CisrIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAorKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpCisreworKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKKysgICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKKysKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCisrfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrZXhpdF9jbWQ9OgorIAorIAorIAorQEAgLTc0MSwyNiArODMyLDY0IEBAIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKKyBtYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXMuCistIyAkbW9kZSBpcyB1bnNldAorIG5vbm9wdD0KKy1leGVjdXRlX2RsZmlsZXM9CisgcHJlc2VydmVfYXJncz0KKyBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCisgbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgorIGV4dHJhY3RlZF9hcmNoaXZlcz0KKyBleHRyYWN0ZWRfc2VyaWFsPTAKKyAKKy1vcHRfZHJ5X3J1bj1mYWxzZQorLW9wdF9maW5pc2g9OgorLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQorLW9wdF9zaWxlbnQ9ZmFsc2UKKy1vcHRfZGVidWc9OgorLQorICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAorICMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZworICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KKyBleGVjX2NtZD0KKyAKKysjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorK2Z1bmNfYXBwZW5kICgpCisreworKyAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgorK30gIyBmdW5jX2FwcGVuZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysjIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKKysjIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAorKyMgYnkgYSBzcGFjZS4KKytmdW5jX2FwcGVuZF9xdW90ZWQgKCkKKyt7CisrICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisrICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyt9ICMgZnVuY19hcHBlbmRfcXVvdGVkIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKytmdW5jX2FyaXRoICgpCisreworKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCisrfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2xlbiBzdHJpbmcKKysjIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCisrZnVuY19sZW4gKCkKKyt7CisrICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorK30gIyBmdW5jX2xlbiBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfbG8ybyBvYmplY3QKKytmdW5jX2xvMm8gKCkKKyt7CisrICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKyt9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCisrZnVuY194Zm9ybSAoKQorK3sKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCisrfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisgIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCisgIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQorICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCitAQCAtODUwLDEzMCArOTc5LDIwNCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKKyAgIGVzYWMKKyB9CisgCistIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KKy0jIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgorKyMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisrIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQorKyMgcmVsZWFzZSBvZiBsaWJ0b29sLgorK2Z1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQorIHsKKysgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgorKyAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorKyAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCisrJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCisrJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKytfTFRfRU9GCisrICAgICAgZWxzZQorKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCisrJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgorKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKyskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCisrX0xUX0VPRgorKyAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAorKyRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KKyskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCisrJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorK19MVF9FT0YKKysgICAgZmkKKyAKKy0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorLSAgY2FzZSAkMSBpbgorLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgbGlua3xsaW58bGl8bCkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGVzYWMKKysgICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorKyAgZmkKKyt9CisrCisrCisrIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CisrY2FzZSAkMSBpbgorK2NsZWFufGNsZWF8Y2xlfGNsKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2xpbmt8bGlufGxpfGwpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytlc2FjCisgCistICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKKy0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KKysKKysKKysjIE9wdGlvbiBkZWZhdWx0czoKKytvcHRfZGVidWc9OgorK29wdF9kcnlfcnVuPWZhbHNlCisrb3B0X2NvbmZpZz1mYWxzZQorK29wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQorK29wdF9mZWF0dXJlcz1mYWxzZQorK29wdF9maW5pc2g9ZmFsc2UKKytvcHRfaGVscD1mYWxzZQorK29wdF9oZWxwX2FsbD1mYWxzZQorK29wdF9zaWxlbnQ9OgorK29wdF92ZXJib3NlPToKKytvcHRfc2lsZW50PWZhbHNlCisrb3B0X3ZlcmJvc2U9ZmFsc2UKKysKKysKKysjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKKysjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KKyt7CisrICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisrICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworICAgICBvcHQ9IiQxIgorICAgICBzaGlmdAorLQorICAgICBjYXNlICRvcHQgaW4KKy0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OworLQorLSAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorKyAgICAgIC0tZGVidWd8LXgpCW9wdF9kZWJ1Zz0nc2V0IC14JworIAkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKKy0JCQlvcHRfZGVidWc9J3NldCAteCcKKyAJCQkkb3B0X2RlYnVnCisgCQkJOzsKKy0KKy0gICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgorLQkJCXNoaWZ0CisrICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorKwkJCW9wdF9kcnlfcnVuPToKKyAJCQk7OworLQorLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OworLSAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7CistICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OworLSAgICAgIC0tbm8tZmluaXNoKQlvcHRfZmluaXNoPWZhbHNlCQkJCTs7CistCistICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJY2FzZSAkMSBpbgorLQkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKy0JCQkgIGNsZWFuKQk7OworLQkJCSAgY29tcGlsZSkJOzsKKy0JCQkgIGV4ZWN1dGUpCTs7CistCQkJICBmaW5pc2gpCTs7CistCQkJICBpbnN0YWxsKQk7OworLQkJCSAgbGluaykJCTs7CistCQkJICByZWxpbmspCTs7CistCQkJICB1bmluc3RhbGwpCTs7CistCistCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKy0JCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCistCQkJICAgICBleGl0X2NtZD1leGl0CistCQkJICAgICBicmVhaworLQkJCSAgICAgOzsKKy0JCSAgICAgICAgZXNhYworLQorLQkJCW1vZGU9IiQxIgorKyAgICAgIC0tY29uZmlnKQorKwkJCW9wdF9jb25maWc9OgorK2Z1bmNfY29uZmlnCisrCQkJOzsKKysgICAgICAtLWRsb3BlbnwtZGxvcGVuKQorKwkJCW9wdGFyZz0iJDEiCisrCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCisrfSRvcHRhcmciCisgCQkJc2hpZnQKKyAJCQk7OworLQorICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCistCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKKy0KKy0gICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorLQkJCW9wdF9zaWxlbnQ9OgorLQkJCW9wdF92ZXJib3NlPWZhbHNlCisrCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKKyAJCQk7OworLQorLSAgICAgIC0tbm8tcXVpZXR8LS1uby1zaWxlbnQpCistCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKy0JCQlvcHRfc2lsZW50PWZhbHNlCisrICAgICAgLS1mZWF0dXJlcykKKysJCQlvcHRfZmVhdHVyZXM9OgorK2Z1bmNfZmVhdHVyZXMKKyAJCQk7OworLQorLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisrICAgICAgLS1maW5pc2gpCisrCQkJb3B0X2ZpbmlzaD06Cisrc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorKwkJCTs7CisrICAgICAgLS1oZWxwKQorKwkJCW9wdF9oZWxwPToKKysJCQk7OworKyAgICAgIC0taGVscC1hbGwpCisrCQkJb3B0X2hlbHBfYWxsPToKKytvcHRfaGVscD0nOiBoZWxwLWFsbCcKKysJCQk7OworKyAgICAgIC0tbW9kZSkKKysJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKysJCQlvcHRhcmc9IiQxIgorKwkJCW9wdF9tb2RlPSIkb3B0YXJnIgorK2Nhc2UgJG9wdGFyZyBpbgorKyAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKysgIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7CisrCisrICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKysgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCisrICAgICBleGl0X2NtZD1leGl0CisrICAgICBicmVhaworKyAgICAgOzsKKytlc2FjCisrCQkJc2hpZnQKKysJCQk7OworKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCisgCQkJb3B0X3NpbGVudD1mYWxzZQorLQkJCW9wdF92ZXJib3NlPToKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAJCQk7OworLQorLSAgICAgIC0tbm8tdmVyYm9zZSkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKysgICAgICAtLW5vLXZlcmJvc2UpCisgCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAJCQk7OworLQorLSAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKKy0JCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKKysgICAgICAtLXNpbGVudHwtLXF1aWV0KQorKwkJCW9wdF9zaWxlbnQ9OgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorKyAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKysJCQk7OworKyAgICAgIC0tdmVyYm9zZXwtdikKKysJCQlvcHRfdmVyYm9zZT06CisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisrb3B0X3NpbGVudD1mYWxzZQorKwkJCTs7CisrICAgICAgLS10YWcpCisrCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisrCQkJb3B0YXJnPSIkMSIKKysJCQlvcHRfdGFnPSIkb3B0YXJnIgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCisrZnVuY19lbmFibGVfdGFnICIkb3B0YXJnIgorIAkJCXNoaWZ0CisgCQkJOzsKKyAKKysgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7CisrICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7CisrICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKKysKKyAgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgorLSAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQorLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgorLQkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQorKyAgICAgIC0tKj0qKQorKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCisrCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KKyAJCQlzaGlmdAorIAkJCTs7CisgCistICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKKy0gICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OworLSAgICAgIC0taGVscC1hbGwpCW9wdF9oZWxwPSc6IGhlbHAtYWxsJwkJCQk7OworLSAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OworLQorLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7CistCistICAgICAgKikJCW5vbm9wdD0iJG9wdCIKKy0JCQlicmVhaworKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisrICAgICAgLVw/KnwtaCp8LW4qfC12KikKKysJCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKKysJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorKwkJCXNoaWZ0CisgCQkJOzsKKysKKysgICAgICAtLSkJCWJyZWFrCQkJCQk7OworKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7CisrICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7CisgICAgIGVzYWMKKyAgIGRvbmUKKyAKKysgICMgVmFsaWRhdGUgb3B0aW9uczoKKysKKysgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CisrICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKysgICAgbm9ub3B0PSIkb3B0IgorKyAgICBzaGlmdAorKyAgZmkKKysKKysgICMgcHJlc2VydmUgLS1kZWJ1ZworKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgorIAorICAgY2FzZSAkaG9zdCBpbgorICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqIHwgKnNvbGFyaXMyKiApCitAQCAtOTgxLDgyICsxMTg0LDQ0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQorICAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgorICAgICAgIDs7CisgICAgICopCistICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCisrICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCisgICAgICAgOzsKKyAgIGVzYWMKKyAKKy0gICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgorLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCistICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorLX0KKysgICRvcHRfaGVscCB8fCB7CisrICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKysgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisgCistIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKy0jIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCistIyByZWxlYXNlIG9mIGxpYnRvb2wuCistZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCisteworLSAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCistICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCistICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCistICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKy0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KKy0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCistJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorLV9MVF9FT0YKKy0gICAgICBlbHNlCistICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKy0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCistJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKy1fTFRfRU9GCistICAgICAgZmkKKy0gICAgZWxzZQorLSAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCistJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgorLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KKy0kcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCistX0xUX0VPRgorKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKysgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCisgICAgIGZpCisgCistICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKKy0gIGZpCistfQorLQorKyAgICAjIERhcndpbiBzdWNrcworKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorIAorLSMjIC0tLS0tLS0tLS0tICMjCistIyMgICAgTWFpbi4gICAgIyMKKy0jIyAtLS0tLS0tLS0tLSAjIworLQorLSRvcHRfaGVscCB8fCB7CistICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CistICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKy0KKy0gIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCistICBmaQorKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCisrICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgorKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorKyAgICBmaQorIAorLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCisrICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKysgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKysgICAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG9wdF9tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisrICB9CisgCisgCistICAjIERhcndpbiBzdWNrcworLSAgZXZhbCAic3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiIgorKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAorKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKKyt9CisgCisgCistICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKy0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorLSAgICAkRUNITyAiJGhlbHAiIDE+JjIKKy0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCistICBmaQorIAorLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKy0gIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCistfQorIAorKyMjIC0tLS0tLS0tLS0tICMjCisrIyMgICAgTWFpbi4gICAgIyMKKysjIyAtLS0tLS0tLS0tLSAjIworIAorICMgZnVuY19sYWxpYl9wIGZpbGUKKyAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCitAQCAtMTEyMSwxMiArMTI4Niw5IEBAIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAoKQorICMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCisgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQorIHsKKy0gICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKKy0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KKy0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorLQlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgorLSAgICBmaQorKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCisrICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCisgfQorIAorICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCitAQCAtMTE0OSw3ICsxMzExLDcgQEAgZnVuY19leGVjdXRlX2NtZHMgKCkKKyAgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JworICAgICBmb3IgY21kIGluICQxOyBkbworICAgICAgIElGUz0kc2F2ZV9pZnMKKy0gICAgICBldmFsICJjbWQ9XCIkY21kXCIiCisrICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKKyAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGNtZCIgIiR7Mi06fSIKKyAgICAgZG9uZQorICAgICBJRlM9JHNhdmVfaWZzCitAQCAtMTE3Miw2ICsxMzM0LDM3IEBAIGZ1bmNfc291cmNlICgpCisgfQorIAorIAorKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAorKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCisrIyBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKytmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQorK3sKKysgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kMQorKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCisrICA9KikKKysgICAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIDs7CisrICBlc2FjCisrfQorKworKyMgZnVuY19yZXBsYWNlX3N5c3Jvb3QgUEFUSAorKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCisrIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgorK2Z1bmNfcmVwbGFjZV9zeXNyb290ICgpCisreworKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCisrICA/KjoiJGx0X3N5c3Jvb3QiKikKKysgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCisrICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrICAgIDs7CisrICAqKQorKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgorKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9JDEKKysgICAgOzsKKysgIGVzYWMKKyt9CisrCisgIyBmdW5jX2luZmVyX3RhZyBhcmcKKyAjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKKyAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgorQEAgLTExODQsOCArMTM3Nyw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCisgICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCisgICAgICAgQ0NfcXVvdGVkPQorICAgICAgIGZvciBhcmcgaW4gJENDOyBkbworLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKKyAgICAgICBkb25lCisgICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorICAgICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAorQEAgLTEyMDQsOCArMTM5Niw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCisgCSAgICBDQ19xdW90ZWQ9CisgCSAgICBmb3IgYXJnIGluICRDQzsgZG8KKyAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLQkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgorIAkgICAgZG9uZQorIAkgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorIAkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCitAQCAtMTI3NCw2ICsxNDY1LDQ4NiBAQCBFT0YKKyAgICAgfQorIH0KKyAKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgRklMRSBOQU1FIEFORCBQQVRIIENPTlZFUlNJT04gSEVMUEVSIEZVTkNUSU9OUyAjCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysKKysjIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgQVJHCisrIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKKysjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKKysjIGNvcnJlY3RseSBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtCisrIyBpbiAkYnVpbGQncyAkUEFUSC4KKysjCisrIyBBUkcgaXMgdGhlICRidWlsZCBmaWxlIG5hbWUgdG8gYmUgY29udmVydGVkIHRvIHczMiBmb3JtYXQuCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKKysjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKKytmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKKysgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKKysgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CisrICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCisrICAgICMgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKKysgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQorKyAgICBmaQorKyAgZmkKKyt9CisrIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCisrIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAorKyMgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhIGNvcnJlY3RseQorKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncworKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisrIworKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgorKyMgVW5jb252ZXJ0aWJsZSBmaWxlIChkaXJlY3RvcnkpIG5hbWVzIGluIEFSRyBhcmUgc2tpcHBlZDsgaWYgbm8gZGlyZWN0b3J5IG5hbWVzCisrIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCisrZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKKysgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgb2xkSUZTPSRJRlMKKysgICAgSUZTPToKKysgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KKysgICAgICBJRlM9JG9sZElGUworKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YiCisrICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KKysgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KKysgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgIGRvbmUKKysgICAgSUZTPSRvbGRJRlMKKysgIGZpCisrfQorKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyCisrCisrCisrIyBmdW5jX2N5Z3BhdGggQVJHUy4uLgorKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgorKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCisrIyAkYnVpbGQgaXMgTVNZUyBhbmQgJGhvc3QgaXMgQ3lnd2luLCBvciAoMykgJGJ1aWxkIGlzIEN5Z3dpbi4gSW4gY2FzZSAoMSkgb3IKKysjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0CisrIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCisrIyBmcm9tICRidWlsZCdzICpuaXggb3IgTVNZUyBmb3JtYXQpLiBJbiBjYXNlICgzKSwgcmV0dXJucyB0aGUgdzMyIGZpbGUgbmFtZQorKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCisrIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCisrIworKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bworKyMgYmUgY29udmVydGVkLgorKyMKKysjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICisrIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KKytmdW5jX2N5Z3BhdGggKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCisrICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCisrICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgorKyAgICAgICMgb24gZmFpbHVyZSwgZW5zdXJlIHJlc3VsdCBpcyBlbXB0eQorKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisrICAgIGZpCisrICBlbHNlCisrICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisrICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKKysgIGZpCisrfQorKyNlbmQ6IGZ1bmNfY3lncGF0aAorKworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBvciBwYXRoIEFSRyBmcm9tIE1TWVMgZm9ybWF0IHRvIHczMiBmb3JtYXQuICBSZXR1cm4KKysjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKysgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKysgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorK30KKysjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgQVJHMSBBUkcyCisrIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisrIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gQVJHMSkuCisrZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgorKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCisrICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCisrICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorKyAgICAjIEZhbGxiYWNrOgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIEZST01fUEFUSFNFUCBUT19QQVRIU0VQIEZST01fUEFUSCBUT19QQVRICisrIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisrIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgorK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgorKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKysgICAgZnVuY19lcnJvciAiICBcYCQzJyIKKysgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisrICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAorKyAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCisrICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KKysgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKKysgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8CisrICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCisrICAgIGZpCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjaworKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCisrIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAorKyMgYW5kIGFwcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBCQUNLUEFULgorK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGNhc2UgJDQgaW4KKysgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIDs7CisrICBlc2FjCisrICBjYXNlICQ0IGluCisrICAkMiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCAiJDMiCisrICAgIDs7CisrICBlc2FjCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAorKworKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKKysjCisrIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrCisrCisrIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKKysjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKysjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX3RvX2hvc3RfZmlsZSAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKKyt9CisrIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKKysKKysKKysjIGZ1bmNfdG9fdG9vbF9maWxlIEFSRyBMQVpZCisrIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCisrIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAorKyMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCisrZnVuY190b190b29sX2ZpbGUgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBjYXNlICwkMiwgaW4KKysgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCisrICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSQxCisrICAgICAgOzsKKysgICAgKikKKysgICAgICAkdG9fdG9vbF9maWxlX2NtZCAiJDEiCisrICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKKysgICAgICA7OworKyAgZXNhYworK30KKysjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKKysjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCisreworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKysjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCisrICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKKysjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKysjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCisrIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0CisrIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBjb252ZXJ0IGZyb20gKm5peCB0byB3MzIsIHRoZW4gdXNlIGN5Z3BhdGggdG8gY29udmVydCBmcm9tIHczMiB0byBjeWd3aW4uCisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJworKyMKKysjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisrIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrIworKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiAgSWYKKysjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAorKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgorKyMKKysjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246CisrIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCisrIyAgIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbiAgICAgICAgIDogZnVuY19jb252ZXJ0X3BhdGhfWF90b19ZICgpCisrIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQorKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCisrIyB0aGUgdHdvIG5ldyBmdW5jdGlvbnMgbXVzdCBmb2xsb3cgdGhpcyBwYXR0ZXJuLCBvciBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorKyMgd2lsbCBicmVhay4KKysKKysKKysjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisrIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKKysjIGFwcHJvcHJpYXRlIHZhbHVlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHRvX2hvc3RfZmlsZV9jbWQuCisrdG9faG9zdF9wYXRoX2NtZD0KKytmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgorKyAgICBmdW5jX3N0cmlwbmFtZSAnZnVuY19jb252ZXJ0X2ZpbGVfJyAnJyAiJHRvX2hvc3RfZmlsZV9jbWQiCisrICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKKysgIGZpCisrfQorKworKworKyMgZnVuY190b19ob3N0X3BhdGggQVJHCisrIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorK2Z1bmNfdG9faG9zdF9wYXRoICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKysgICR0b19ob3N0X3BhdGhfY21kICIkMSIKKyt9CisrIyBlbmQgZnVuY190b19ob3N0X3BhdGgKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX25vb3AgQVJHCisrIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQorK3sKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tIEFSRy4gIE1TWVMKKysgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKKysgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQgYW5kCisrIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKysjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4KKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCisrIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCisrICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKysgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgorKworKworICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCisgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyB7CitAQCAtMTMxNCwxMiArMTk4NSwxMiBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQorIAkgIDs7CisgCisgCS1waWUgfCAtZnBpZSB8IC1mUElFKQorLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCisrICAgICAgICAgIGZ1bmNfYXBwZW5kIHBpZV9mbGFnICIgJGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCisgCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCistCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGxhdGVyICIgJGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCitAQCAtMTM0MCwxNSArMjAxMSwxNCBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQorIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJworIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCisgCSAgICBJRlM9IiRzYXZlX2lmcyIKKy0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKKyAJICBkb25lCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKKyAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAKKyAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KKy0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisrCSAgZnVuY19hcHBlbmQgYmFzZV9jb21waWxlICIgJGxhc3RhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAorQEAgLTEzNjQsOCArMjAzNCw3IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQorIAorICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCistICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCistICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKKyAgICAgZG9uZSAjIGZvciBhcmcKKyAKKyAgICAgY2FzZSAkYXJnX21vZGUgaW4KK0BAIC0xNDk2LDE3ICsyMTY1LDE2IEBAIGNvbXBpbGVyLiIKKyAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorIAlleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgICBmaQorLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqIgorKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKKyAgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKKyAgICAgZmkKKyAKKyAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorLSAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkbG9ja2ZpbGUiCisrICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCisgICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1CisgCistICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgorLSAgICAgIGV2YWwgInNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiIgorLSAgICBmaQorKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHNyY2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKKyAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CisgCitAQCAtMTUyNiw3ICsyMTk0LDcgQEAgY29tcGlsZXIuIgorIAorICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgorIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKKy0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJGxvYmoiCisrCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkbG9iaiIKKyAgICAgICBmaQorIAorICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKK0BAIC0xNTczLDExICsyMjQxLDExIEBAIGNvbXBpbGVyLiIKKyAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgorICAgICAgIGZpCisgICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KKy0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKKysJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCisgICAgICAgZmkKKyAKKyAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KKy0gICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCisrICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKKyAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCisgICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJworIAorQEAgLTE2MjIsMTMgKzIyOTAsMTMgQEAgY29tcGlsZXIuIgorIH0KKyAKKyAkb3B0X2hlbHAgfHwgeworLSAgdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKysgIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorIH0KKyAKKyBmdW5jX21vZGVfaGVscCAoKQorIHsKKyAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCistICAgIGNhc2UgJG1vZGUgaW4KKysgICAgY2FzZSAkb3B0X21vZGUgaW4KKyAgICAgICAiIikKKyAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cworICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgorQEAgLTE2NTksOCArMjMyNyw4IEBAIFRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgorIAorICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCisgICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKKy0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5CistICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKysgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5CisrICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKK0BAIC0xODA0LDcgKzI0NzIsNyBAQCBPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCisgICAgICAgICA7OworIAorICAgICAgICopCistICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisrICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorICAgICAgICAgOzsKKyAgICAgZXNhYworIAorQEAgLTE4MTksMTMgKzI0ODcsMTMgQEAgaWYgJG9wdF9oZWxwOyB0aGVuCisgICBlbHNlCisgICAgIHsKKyAgICAgICBmdW5jX2hlbHAgbm9leGl0CistICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisgCWZ1bmNfbW9kZV9oZWxwCisgICAgICAgZG9uZQorICAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgICB7CisgICAgICAgZnVuY19oZWxwIG5vZXhpdAorLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKysgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworIAllY2hvCisgCWZ1bmNfbW9kZV9oZWxwCisgICAgICAgZG9uZQorQEAgLTE4NTQsMTMgKzI1MjIsMTYgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgorIAorICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgorLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworKyAgICBmb3IgZmlsZSBpbiAkb3B0X2Rsb3BlbjsgZG8KKyAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAorIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCisgCisgICAgICAgZGlyPQorICAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICAqLmxhKQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisrCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorKworIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCitAQCAtMTg4Miw3ICsyNTUzLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyAKKyAJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCistCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisrCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKKyAJZWxzZQorIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKK0BAIC0xOTA3LDEwICsyNTc4LDEwIEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgorIAorICAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCistICAgICAgaWYgZXZhbCB0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiOyB0aGVuCistCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXIKKysgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgorKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCisgICAgICAgZWxzZQorLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyOlwkJHNobGlicGF0aF92YXIKKysJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCisgICAgICAgZmkKKyAgICAgZG9uZQorIAorQEAgLTE5MzksOCArMjYxMCw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgCTs7CisgICAgICAgZXNhYworICAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCistICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCistICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBhcmdzICIkZmlsZSIKKyAgICAgZG9uZQorIAorICAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgorQEAgLTE5NzIsMjIgKzI2NDIsNTkgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgZmkKKyB9CisgCistdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KKyt0ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KKyAKKyAKKyAjIGZ1bmNfbW9kZV9maW5pc2ggYXJnLi4uCisgZnVuY19tb2RlX2ZpbmlzaCAoKQorIHsKKyAgICAgJG9wdF9kZWJ1ZworLSAgICBsaWJkaXJzPSIkbm9ub3B0IgorKyAgICBsaWJzPQorKyAgICBsaWJkaXJzPQorICAgICBhZG1pbmNtZHM9CisgCistICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCistICAgICAgZm9yIGRpcgorLSAgICAgIGRvCistCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCistICAgICAgZG9uZQorKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KKysgICAgZG8KKysgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgorKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKKyAKKysgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCisrCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCisrCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCisrCWVsc2UKKysJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorKwlmaQorKworKyAgICAgIGVsc2UKKysJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgorKyAgICAgIGZpCisrICAgIGRvbmUKKysKKysgICAgaWYgdGVzdCAtbiAiJGxpYnMiOyB0aGVuCisrICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCisrICAgICAgICBzeXNyb290X3JlZ2V4PWAkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorKyAgICAgICAgc3lzcm9vdF9jbWQ9InMvXChbICddXCkkc3lzcm9vdF9yZWdleC9cMS9nOyIKKysgICAgICBlbHNlCisrICAgICAgICBzeXNyb290X2NtZD0KKysgICAgICBmaQorKworKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcworKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgorKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKysgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCisrICAgICAgICBkb25lCisrICAgICAgZWxzZQorKyAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKKysgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisrCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorKwkgICAgPiAkdG1wZGlyL3RtcC1sYQorKwkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKKysJZG9uZQorKyAgICAgICAgJHtSTX1yICIkdG1wZGlyIgorKyAgICAgIGZpCisrICAgIGZpCisrCisrICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisgICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKyAJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgorIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCitAQCAtMTk5Nyw3ICsyNzA0LDcgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQorIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCisgCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgorIAkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCistCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGZ1bmNfYXBwZW5kIGFkbWluY21kcyAiCisgICAgICAgICRjbWRzIgorIAlmaQorICAgICAgIGRvbmUKK0BAIC0yMDA2LDUzICsyNzEzLDU1IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKKyAgICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCisgICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUworIAorLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorLSAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCistICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCistICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCistICAgIGRvbmUKKy0gICAgZWNobworLSAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKy0gICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCistICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCistICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKy0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCistICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKy0gICAgICBlY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKy0gICAgICBlY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKy0gICAgICBsaWJkaXI9TElCRElSCistICAgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisrICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCisrICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKysJJEVDSE8gIiAgICRsaWJkaXIiCisrICAgICAgZG9uZQorKyAgICAgIGVjaG8KKysgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKysgICAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKysgICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKysgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKysJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKysJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKysJZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKKysgICAgICBmaQorKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwlsaWJkaXI9TElCRElSCisrCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAKKy0gICAgICAkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKy0gICAgZmkKKy0gICAgZWNobworKwkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KKysJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKysJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCisrICAgICAgZmkKKysgICAgICBlY2hvCisgCistICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKy0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCistCWVjaG8gInBhZ2VzLiIKKy0JOzsKKy0gICAgICAqKQorLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCistICAgICAgICA7OworLSAgICBlc2FjCistICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisrICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCisrICAgICAgY2FzZSAkaG9zdCBpbgorKwlzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisrCSAgZWNobyAicGFnZXMuIgorKwkgIDs7CisrCSopCisrCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCisrCSAgOzsKKysgICAgICBlc2FjCisrICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgZmkKKyAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgfQorIAorLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KKyAKKyAKKyAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgorQEAgLTIwNzcsNyArMjc4Niw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KKyAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgorICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKKyAgICAgY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgorICAgICAgICpbXFxcIC9dY3BcICopIGluc3RhbGxfY3A9OiA7OworQEAgLTIwOTcsNyArMjgwNiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGRvCisgICAgICAgYXJnMj0KKyAgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KKy0JZmlsZXM9IiRmaWxlcyAkZGVzdCIKKysJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKKyAJZGVzdD0kYXJnCisgCWNvbnRpbnVlCisgICAgICAgZmkKK0BAIC0yMTM1LDExICsyODQ0LDExIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCisgICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBhcmd1bWVudC4KKyAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgorIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnMiIKKyAgICAgICBmaQorLSAgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICBkb25lCisgCisgICAgIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciICYmIFwKK0BAIC0yMTUxLDcgKzI4NjAsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiAmJiAkbm9fbW9kZTsgdGhlbgorICAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKKyAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKKy0JaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgIGZpCisgICAgIGZpCisgCitAQCAtMjIwOSwxMCArMjkxOCwxMyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICAqLiRsaWJleHQpCisgCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCistCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorKwlmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGZpbGUiCisgCTs7CisgCisgICAgICAgKi5sYSkKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKysKKyAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKyAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKKyAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKK0BAIC0yMjI2LDIzICsyOTM4LDMwIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCisgCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBjdXJyZW50X2xpYmRpcnMgIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZWxzZQorIAkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KKyAJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZ1dHVyZV9saWJkaXJzICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWZpCisgCisgCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgorIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLQlkaXI9IiRkaXIkb2JqZGlyIgorKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCisgCisgCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKysgICAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KKysgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRsaWJkaXIiCisrICAgICAgZGVzdGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCisrICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZGVzdGRpciIKKysgICAgICBzX2Rlc3RkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKworIAkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCistCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiJGRlc3RkaXIiIHwgJFNFRCAtZSAicyUkbGliZGlyXCQlJSJgCisrCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRzX2Rlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGRlc3RsaWJkaXJcJCUlImAKKyAKKyAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCisgCSAgIyBsb2NhdGlvbiBiL2MgdGhpcyBwcmV2ZW50cyBmaW5kaW5nIGRlcGVuZGVudCBsaWJyYXJpZXMgdGhhdAorQEAgLTIzMTUsNyArMzAzNCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCisgCisgCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KKy0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKysJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisgCTs7CisgCisgICAgICAgKi5sbykKK0BAIC0yNTAzLDcgKzMyMjIsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICB0ZXN0IC1uICIkZnV0dXJlX2xpYmRpcnMiICYmIFwKKyAgICAgICBmdW5jX3dhcm5pbmcgInJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCisgCistICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiICYmICRvcHRfZmluaXNoOyB0aGVuCisrICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiOyB0aGVuCisgICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KKyAgICAgICAkb3B0X2RyeV9ydW4gJiYgY3VycmVudF9saWJkaXJzPSIgLW4kY3VycmVudF9saWJkaXJzIgorICAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKK0BAIC0yNTEyLDcgKzMyMzEsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICBmaQorIH0KKyAKKy10ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQorIAorIAorICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCitAQCAtMjU1OSw2ICszMjc4LDE4IEBAIGV4dGVybiBcIkNcIiB7CisgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCisgI2VuZGlmCisgCisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKKyAiCisgCitAQCAtMjU3MCwyMSArMzMwMSwyMiBAQCBleHRlcm4gXCJDXCIgeworIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KKyAJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCisgCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCistCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKKy0JICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCisrCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorIAkgIGRvbmUKKyAKKyAJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKKy0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorKwkgICAgICBldmFsICckRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgIH0KKyAJICBmaQorIAorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAgICRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVAorLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisrCSAgICAgIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgIH0KKyAJICBmaQorIAorQEAgLTI1OTMsMjMgKzMzMjUsMjMgQEAgZXh0ZXJuIFwiQ1wiIHsKKyAJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworIAkgICAgICAkUk0gJGV4cG9ydF9zeW1ib2xzCistCSAgICAgICR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnIDwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIgorKwkgICAgICBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKKyAJICAgICAgY2FzZSAkaG9zdCBpbgorIAkgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKy0gICAgICAgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKy0gICAgICAgICAgICAgICAgY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCisrICAgICAgICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisrICAgICAgICAgICAgICAgIGV2YWwgJ2NhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAJICAgICAgICA7OworIAkgICAgICBlc2FjCisgCSAgICB9CisgCSAgZWxzZQorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgorLQkgICAgICAkR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUCistCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKKysJICAgICAgZXZhbCAiJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFxcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCInCisrCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCisrCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCisgCSAgICAgIGNhc2UgJGhvc3QgaW4KKyAJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKy0JICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCistCSAgICAgICAgICBjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKysJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisrCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisgCSAgICAgICAgICA7OworIAkgICAgICBlc2FjCisgCSAgICB9CitAQCAtMjYyMCwxMCArMzM1Miw1MiBAQCBleHRlcm4gXCJDXCIgeworIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKKyAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgorIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IgorLQkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorLQkgIH0KKysgICAgICAgICAgY2FzZSAkaG9zdCBpbgorKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisrCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQorKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KKysJICAgICAgICBmdW5jX3RyX3NoICIkZGxwcmVmaWxlIgorKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCisrCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKKysJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgorKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKKysJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKKysJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KKysJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCisrCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisrCSAgICAgICAgICBlbHNlCisrCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KKysJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgorKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKysJICAgICAgICAgIGZpCisrCSAgICAgICAgZmkKKysJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KKysJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKKysJICAgICAgICAgIGVsc2UKKysJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgorKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZmkKKysJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8CisrCSAgICAgICAgICAgICRTRUQgLWUgJy9JIF9faW1wL2QnIC1lICdzL0kgX19ubV8vRCAvO3MvX25tX18vLycgPj4gJyRubGlzdCciCisrCSAgICAgICAgfQorKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKKysJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKysJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgICAgICB9CisrCSAgICAgIGZpCisrCSAgICA7OworKwkgICAgKikKKysJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKysJICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisrCSAgICAgIH0KKysJICAgIDs7CisrICAgICAgICAgIGVzYWMKKyAJZG9uZQorIAorIAkkb3B0X2RyeV9ydW4gfHwgeworQEAgLTI2NjEsMjYgKzM0MzUsOSBAQCB0eXBlZGVmIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAqYWRkcmVzczsKKyB9IGx0X2Rsc3ltbGlzdDsKKy0iCistCSAgY2FzZSAkaG9zdCBpbgorLQkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCistICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KKy0gICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCistCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKy0JICAqb3NmNSopCistCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCistCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKy0JICAqKQorLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKKy0JICBlc2FjCistCistCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKKyBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107CistJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAorIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXSA9Cisge1wKKyAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgorQEAgLTI3MzYsNyArMzQ5Myw3IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbworIAkgIGNhc2UgJGFyZyBpbgorIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OworLQkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7CisrCSAgKikgZnVuY19hcHBlbmQgc3ltdGFiX2NmbGFncyAiICRhcmciIDs7CisgCSAgZXNhYworIAlkb25lCisgCitAQCAtMjc5Niw5ICszNTUzLDExIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKKyAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgorICAgICA7OworICAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYworLSAgICBpZiAkT0JKRFVNUCAtZiAiJDEiIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8CistICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgorLSAgICAgIHdpbjMyX25tcmVzPWAkTk0gLWYgcG9zaXggLUEgIiQxIiB8CisrICAgICMgS2VlcCB0aGUgZWdyZXAgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ELgorKyAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8CisrICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8CisgCSRTRUQgLW4gLWUgJworIAkgICAgMSwxMDB7CisgCQkvIEkgL3sKK0BAIC0yODI3LDYgKzM1ODYsMTMxIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKKyAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKKyB9CisgCisrIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCisrIworKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKysjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKKysjCisrIyBUaGUgaXMgdGhlIGNvcmUgb2YgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBhCisrIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQorKyMgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5IExJQk5BTUUuCisrIworKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCisrIyBvbiB0aGUgcGxhdGZvcm0gYW5kIGNvbXBpbGVyIHRoYXQgY3JlYXRlZCB0aGUgaW1wbGliLgorKyMKKysjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQorKyMgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5LgorK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgbWF0Y2hfbGl0ZXJhbD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKysgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAorKyAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97CisrICAgICAgIyBQbGFjZSBtYXJrZXIgYXQgYmVnaW5uaW5nIG9mIGFyY2hpdmUgbWVtYmVyIGRsbG5hbWUgc2VjdGlvbgorKyAgICAgIHMvLiovPT09PU1BUks9PT09LworKyAgICAgIHAKKysgICAgICBkCisrICAgIH0KKysgICAgIyBUaGVzZSBsaW5lcyBjYW4gc29tZXRpbWVzIGJlIGxvbmdlciB0aGFuIDQzIGNoYXJhY3RlcnMsIGJ1dAorKyAgICAjIGFyZSBhbHdheXMgdW5pbnRlcmVzdGluZworKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKKysgICAgL15JbiBhcmNoaXZlIFteOl0qOi9kCisrICAgICMgRW5zdXJlIG1hcmtlciBpcyBwcmludGVkCisrICAgIC9ePT09PU1BUks9PT09L3AKKysgICAgIyBSZW1vdmUgYWxsIGxpbmVzIHdpdGggbGVzcyB0aGFuIDQzIGNoYXJhY3RlcnMKKysgICAgL14uXHs0M1x9LyFkCisrICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCisrICAgIHMvXi5cezQzXH0vLycgfAorKyAgICAkU0VEIC1uICcKKysgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCisrICAgICAgL149PT09TUFSSz09PT0vIGIgcGFyYQorKyAgICAgIEgKKysgICAgICAkIGIgcGFyYQorKyAgICAgIGIKKysgICAgICA6cGFyYQorKyAgICAgIHgKKysgICAgICBzL1xuLy9nCisrICAgICAgIyBSZW1vdmUgdGhlIG1hcmtlcgorKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCisrICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgZG90cyBhbmQgd2hpdGVzcGFjZQorKyAgICAgIHMvW1wuIFx0XSokLy8KKysgICAgICAjIFByaW50CisrICAgICAgLy4vcCcgfAorKyAgICAjIHdlIG5vdyBoYXZlIGEgbGlzdCwgb25lIGVudHJ5IHBlciBsaW5lLCBvZiB0aGUgc3RyaW5naWZpZWQKKysgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKKysgICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQorKyAgICAjIGFsbCB0aG9zZSB3aGljaCBoYXZlIGEgZmlyc3Qgb3Igc2Vjb25kIGNoYXJhY3RlciB0aGF0IGlzCisrICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQorKyAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgorKyAgICAjIDB4MzAyZiBleHBvcnRzIC0tIGJ1dCB3aWxsIGZhaWwgZm9yIERMTHMgd2hvc2UgbmFtZSBhY3R1YWxseQorKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5CisrICAgICMgYSAnLicuCisrICAgICMKKysgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KKysgICAgJFNFRCAtZSAnL15cLi9kOy9eLlwuL2Q7cScKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wIEFSRworKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisrIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKKysgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCisrfQorKworKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRworKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisrIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgorK30KKysKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayBBUkcKKysjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisrIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKysjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKysjCisrIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAorKyMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgLS1pZGVudGlmeS1zdHJpY3Qgb3B0aW9uLgorKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgorKyAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5CisrICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDcnICIkMSJgCisrICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorKyAgICAjIG1zLWdlbmVyYXRlZCBpbXBvcnQgbGlicmFyeQorKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAorKyAgZWxzZQorKyAgICAjIHVua25vd24KKysgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKKysgIGZpCisrfQorIAorIAorICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgorQEAgLTI5MTcsNyArMzgwMSw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQorIAkgICAgZGFyd2luX2ZpbGU9CisgCSAgICBkYXJ3aW5fZmlsZXM9CisgCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KKy0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisrCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgc29ydCB8ICROTDJTUGAKKyAJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKKyAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0CisgCSAgICAkUk0gLXJmIHVuZmF0LSQkCitAQCAtMjkzMiw3ICszODE2LDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCisgICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKKyAJOzsKKyAgICAgICBlc2FjCistICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKysgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKKyAgICAgZG9uZQorIAorICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKK0BAIC0zMDE0LDcgKzM4OTgsMTEwIEBAIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorIF9MVEVDSE9fRU9GJworIH0KKyAgICAgRUNITz1cIiRxRUNIT1wiCistICBmaVwKKysgIGZpCisrCisrIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KKysjIHRoZSBsaWJ0b29sIHdyYXBwZXIsIChiKSBhcmUgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHdyYXBwZXIKKysjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCisrIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKKysjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCisrIyB0aGlzIHBhdHRlcm4pLgorKyMKKysjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKKysjIC0tbHQtZHVtcC1zY3JpcHQuIFRoZXJlIGlzLCBkZWxpYmVyYXRlbHksIG5vIC0tbHQtaGVscC4KKysjCisrIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUKKysjIHNjcmlwdCdzICQwIHZhbHVlLCBmb2xsb3dlZCBieSAiJEAiLgorK2x0X29wdGlvbl9kZWJ1Zz0KKytmdW5jX3BhcnNlX2x0X29wdGlvbnMgKCkKKyt7CisrICBsdF9zY3JpcHRfYXJnMD1cJDAKKysgIHNoaWZ0CisrICBmb3IgbHRfb3B0CisrICBkbworKyAgICBjYXNlIFwiXCRsdF9vcHRcIiBpbgorKyAgICAtLWx0LWRlYnVnKSBsdF9vcHRpb25fZGVidWc9MSA7OworKyAgICAtLWx0LWR1bXAtc2NyaXB0KQorKyAgICAgICAgbHRfZHVtcF9EPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlL1teL10qJCUlJ1xgCisrICAgICAgICB0ZXN0IFwiWFwkbHRfZHVtcF9EXCIgPSBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgJiYgbHRfZHVtcF9EPS4KKysgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAorKyAgICAgICAgY2F0IFwiXCRsdF9kdW1wX0QvXCRsdF9kdW1wX0ZcIgorKyAgICAgICAgZXhpdCAwCisrICAgICAgOzsKKysgICAgLS1sdC0qKQorKyAgICAgICAgXCRFQ0hPIFwiVW5yZWNvZ25pemVkIC0tbHQtIG9wdGlvbjogJ1wkbHRfb3B0J1wiIDE+JjIKKysgICAgICAgIGV4aXQgMQorKyAgICAgIDs7CisrICAgIGVzYWMKKysgIGRvbmUKKysKKysgICMgUHJpbnQgdGhlIGRlYnVnIGJhbm5lciBpbW1lZGlhdGVseToKKysgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisrICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgorKyAgZmkKKyt9CisrCisrIyBVc2VkIHdoZW4gLS1sdC1kZWJ1Zy4gUHJpbnRzIGl0cyBhcmd1bWVudHMgdG8gc3Rkb3V0CisrIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCisrZnVuY19sdF9kdW1wX2FyZ3MgKCkKKyt7CisrICBsdF9kdW1wX2FyZ3NfTj0xOworKyAgZm9yIGx0X2FyZworKyAgZG8KKysgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgorKyAgICBsdF9kdW1wX2FyZ3NfTj1cYGV4cHIgXCRsdF9kdW1wX2FyZ3NfTiArIDFcYAorKyAgZG9uZQorK30KKysKKysjIENvcmUgZnVuY3Rpb24gZm9yIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCisrZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQorK3sKKysiCisrICBjYXNlICRob3N0IGluCisrICAjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKKysgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisrICAgICRFQ0hPICJcCisrICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisrICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKysgICAgICBmaQorKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorKyIKKysgICAgOzsKKysKKysgICopCisrICAgICRFQ0hPICJcCisrICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2Rpci9cJHByb2dyYW1cIiAxPiYyCisrICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKysgICAgICBmaQorKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorKyIKKysgICAgOzsKKysgIGVzYWMKKysgICRFQ0hPICJcCisrICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorKyAgICAgIGV4aXQgMQorK30KKysKKysjIEEgZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKysjIFN0cmlwcyBvcHRpb25zIGluIHRoZSAtLWx0LSogbmFtZXNwYWNlIGZyb20gXCRAIGFuZAorKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCisrZnVuY19leGVjX3Byb2dyYW0gKCkKKyt7CisrICBmb3IgbHRfd3JfYXJnCisrICBkbworKyAgICBjYXNlIFwkbHRfd3JfYXJnIGluCisrICAgIC0tbHQtKikgOzsKKysgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKKysgICAgZXNhYworKyAgICBzaGlmdAorKyAgZG9uZQorKyAgZnVuY19leGVjX3Byb2dyYW1fY29yZSBcJHsxK1wiXCRAXCJ9CisrfQorKworKyAgIyBQYXJzZSBvcHRpb25zCisrICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9CisgCisgICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgorICAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKK0BAIC0zMDc4LDcgKzQwNjUsNyBAQCBfTFRFQ0hPX0VPRicKKyAKKyAgICAgIyByZWxpbmsgZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkKKyAgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgorLSAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCJcJHJlbGlua19jb21tYW5kXCIgMj4mMVxgOyB0aGVuIDoKKysgICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKKyAgICAgICBlbHNlCisgCSRFQ0hPIFwiXCRyZWxpbmtfY29tbWFuZF9vdXRwdXRcIiA+JjIKKyAJJFJNIFwiXCRwcm9nZGlyL1wkZmlsZVwiCitAQCAtMzEwMiw2ICs0MDg5LDE4IEBAIF9MVEVDSE9fRU9GJworIAorICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKKyAKKysJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKysJIworKwkjIEZpeCB0aGUgRExMIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4gIERvIHRoaXMgYmVmb3JlIHByZXBlbmRpbmcKKysJIyB0byBzaGxpYnBhdGgsIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCBhcmUgUEFUSCBhbmQgdW5pbnN0YWxsZWQKKysJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgorKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKysJICAkRUNITyAiXAorKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorKyIKKysJZmkKKysKKyAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCisgCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KKyAJICAkRUNITyAiXAorQEAgLTMxMTYsMzUgKzQxMTUsMTAgQEAgX0xURUNIT19FT0YnCisgIgorIAlmaQorIAorLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKy0JICAkRUNITyAiXAorLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorLSIKKy0JZmkKKy0KKyAJJEVDSE8gIlwKKyAgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgorICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCistIgorLQljYXNlICRob3N0IGluCistCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworLQkqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQorLQkgICRFQ0hPICJcCistICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CistIgorLQkgIDs7CistCistCSopCistCSAgJEVDSE8gIlwKKy0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKy0iCistCSAgOzsKKy0JZXNhYworLQkkRUNITyAiXAorLSAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKKy0gICAgICBleGl0IDEKKysgICAgICBmdW5jX2V4ZWNfcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9CisgICAgIGZpCisgICBlbHNlCisgICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KK0BAIC0zMTU4LDE2NiArNDEzMiw2IEBAIGZpXAorIH0KKyAKKyAKKy0jIGZ1bmNfdG9faG9zdF9wYXRoIGFyZworLSMKKy0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCistIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCistIyBpcyBydW5uaW5nIHVuZGVyIHRoZSBtc3lzIHNoZWxsKSwgb3IgaW4gdGhlIGZvbGxvd2luZyBjcm9zcy0KKy0jIGJ1aWxkIGVudmlyb25tZW50czoKKy0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAorLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCistIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKKy0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndworLSMgd2hlcmUgd2luZSBpcyBlcXVpcHBlZCB3aXRoIHRoZSBgd2luZXBhdGgnIGV4ZWN1dGFibGUuCistIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQorLSMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCistIyBidXQgdGhhdCBmYWNpbGl0eSBpc24ndCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIGN3cmFwcGVyLgorLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKKy0jICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgorLSMgJGhvc3QvJGJ1aWxkIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGFib3ZlLgorLSMKKy0jIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKy0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gZm9yICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAorLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKy1mdW5jX3RvX2hvc3RfcGF0aCAoKQorLXsKKy0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCistICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgICptaW5ndyogKQorLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KKy0gICAgICAgICAgKm1pbmd3KiApICMgYWN0dWFsbHksIG1zeXMKKy0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8CistICAgICAgICAgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKmN5Z3dpbiogKQorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtdyAiJDEiIHwKKy0JICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICogKQorLSAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8KKy0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCistICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKKy0gICAgICAgICAgICAjIGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKy0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKKy0gICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKKy0gICAgICAgICAgICAjIHRoZSBvZGQgY29uc3RydWN0aW9uOgorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCistICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCRFQ0hPICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfAorLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgIyBBbGxvdyB3YXJuaW5nIGJlbG93LgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKy0gICAgICAgICAgIyBGYWxsYmFjazoKKy0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKy0gICAgICAgIGZpCistICAgICAgICA7OworLSAgICBlc2FjCistICBmaQorLX0KKy0jIGVuZDogZnVuY190b19ob3N0X3BhdGgKKy0KKy0jIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKKy0jCistIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KKy0jIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKKy0jIGZvbGxvd2luZyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zIChidXQgZG9lcyBubyBoYXJtIGZvcgorLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6CistIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKKy0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQorLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3CistIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKKy0jCistIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bworLSMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCistIyBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0IGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpCistIyBvbiBvdXRwdXQuCistIworLSMgQVJHIGlzIGEgcGF0aGxpc3QgKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCistIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAorLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCistZnVuY190b19ob3N0X3BhdGhsaXN0ICgpCisteworLSAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCistICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgICptaW5ndyogKQorLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworLSAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCistICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCistICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorLQlmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KKy0gICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCistICAgICAgICAgICAgIyBBd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0LgorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YAorLQkgICAgICAoIGNtZCAvL2MgZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiApIDI+L2Rldi9udWxsIHwKKy0JICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICpjeWd3aW4qICkKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBjeWdwYXRoIC13IC1wICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHwKKy0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqICkKKy0gICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIiCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCistICAgICAgICAgICAgSUZTPToKKy0gICAgICAgICAgICBmb3IgZnVuY190b19ob3N0X3BhdGhsaXN0X2YgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIDsgZG8KKy0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUworLSAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KKy0gICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIKKy0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKy0gICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7JGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKy0gICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBkb25lCistICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsgdGhlbgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKKy0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKy0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCistICAgICAgICAgICMgRmFsbGJhY2suIFRoaXMgbWF5IGJyZWFrIGlmICQxIGNvbnRhaW5zIERPUy1zdHlsZSBkcml2ZQorLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCistICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KKy0gICAgICAgICAgIyB3aXRoIHdpbmVwYXRoIHNvIHRoYXQgcGF0aCB0cmFuc2xhdGlvbiBpbiB0aGUgY3Jvc3MtdG8tbWluZ3cKKy0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgorLSAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKKy0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAorLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCistICAgICAgICBmaQorLSAgICAgICAgIyBOb3csIGFkZCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzIGJhY2sKKy0gICAgICAgIGNhc2UgIiQxIiBpbgorLSAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgY2FzZSAiJDEiIGluCistICAgICAgICAgICo6ICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgOzsKKy0gICAgZXNhYworLSAgZmkKKy19CistIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAorLQorICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYworICMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAorICMgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBmdW5jX21vZGVfbGluayBiZWNhdXNlCitAQCAtMzMzNCwxMCArNDE0OCw2IEBAIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgKCkKKyAKKyAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCisgICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgorLQorLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCistICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAorLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KKyAqLworIEVPRgorIAkgICAgY2F0IDw8IkVPRiIKK0BAIC0zNDYyLDIyICs0MjcyLDEzIEBAIGludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKKyB9IHdoaWxlICgwKQorIAorLSN1bmRlZiBMVFdSQVBQRVJfREVCVUdQUklOVEYKKy0jaWYgZGVmaW5lZCBMVF9ERUJVR1dSQVBQRVIKKy0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKKy1zdGF0aWMgdm9pZAorLWx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCisteworLSAgICB2YV9saXN0IGFyZ3M7CistICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKy0gICAgdmFfZW5kIChhcmdzKTsKKy19CisrI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAxOworICNlbHNlCistIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCisrc3RhdGljIGludCBsdF9kZWJ1ZyA9IDA7CisgI2VuZGlmCisgCistY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKKytjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSAibGlidG9vbC13cmFwcGVyIjsgLyogaW4gY2FzZSB4c3RyZHVwIGZhaWxzICovCisgCisgdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7CisgY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKK0BAIC0zNDg3LDcgKzQyODgsMTAgQEAgY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKKyBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKKyBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CisgY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Cistdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKKyt2b2lkIGx0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOworK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKKytzdGF0aWMgY29uc3QgY2hhciAqbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpOworIHZvaWQgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CisgY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKKyB2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOworQEAgLTM0OTcsMTQgKzQzMDEsMTQgQEAgdm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSAqZik7CisgRU9GCisgCisgCSAgICBjYXQgPDxFT0YKKy1jb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOworK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CisgY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOworIEVPRgorIAorIAkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKKysgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKKyAJICAgICAgY2F0IDw8RU9GCistY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOworIEVPRgorIAkgICAgZWxzZQorIAkgICAgICBjYXQgPDwiRU9GIgorQEAgLTM1MTMsMTAgKzQzMTcsMTAgQEAgRU9GCisgCSAgICBmaQorIAorIAkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKKysgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZGxsc2VhcmNocGF0aDoiCisgCSAgICAgIGNhdCA8PEVPRgorIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOworLWNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKKytjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKKyBFT0YKKyAJICAgIGVsc2UKKyAJICAgICAgY2F0IDw8IkVPRiIKK0BAIC0zNTM5LDEyICs0MzQzLDEwIEBAIEVPRgorIAkgICAgY2F0IDw8IkVPRiIKKyAKKyAjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYICAgICAgICAgIi0tbHQtIgorLSNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1CisgCistc3RhdGljIGNvbnN0IHNpemVfdCBvcHRfcHJlZml4X2xlbiAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIOworIHN0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOworLQorIHN0YXRpYyBjb25zdCBjaGFyICpkdW1wc2NyaXB0X29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkdW1wLXNjcmlwdCI7Cisrc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX29wdCAgICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImRlYnVnIjsKKyAKKyBpbnQKKyBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTM1NjEsMTAgKzQzNjMsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgIGludCBpOworIAorICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKKysgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKyAKKy0gIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCisrICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAorKyAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0CisrICAgKiBhcmd6WzBdLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5CisrICAgKi8KKysgIG5ld2FyZ2M9MDsKKyAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKK0BAIC0zNTgxLDIxICs0Mzg2LDU0IEBAIEVPRgorIAkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOworIAkgIHJldHVybiAwOworIAl9CisrICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorKwl7CisrICAgICAgICAgIGx0X2RlYnVnID0gMTsKKysgICAgICAgICAgY29udGludWU7CisrCX0KKysgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCisrICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisrICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKKysgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKysgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKysgICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCisrICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgorKyAgICAgICAgICAgKi8KKysgICAgICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAidW5yZWNvZ25pemVkICVzIG9wdGlvbjogJyVzJyIsCisrICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisrICAgICAgICB9CisrICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLworKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOworICAgICB9CisrICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOworKworK0VPRgorKwkgICAgY2F0IDw8RU9GCisrICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cbiIpOworK0VPRgorKwkgICAgY2F0IDw8IkVPRiIKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOworIAorLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworICAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKKyAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKKy0gICAgbHRfZmF0YWwgKCJDb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCistCQkJICB0bXBfcGF0aHNwZWMpKTsKKysgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisrCQkgIHRtcF9wYXRoc3BlYyk7CisgCisgICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCistCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorKwkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCk7CisgICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKyAKKy0gIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCggYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9wYXRoLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CisgCisgICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLworQEAgLTM2MTMsOCArNDQ1MSw5IEBAIEVPRgorICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CisgICB0bXBfcGF0aHNwZWMgPSAwOworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKy0JCQkgIHRhcmdldF9uYW1lKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorKwkJICB0YXJnZXRfbmFtZSk7CisgRU9GCisgCisgCSAgICBjYXQgPDxFT0YKK0BAIC0zNjY0LDM1ICs0NTAzLDE5IEBAIEVPRgorIAorICAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCisgICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCistICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKysgIC8qIFVwZGF0ZSB0aGUgRExMIHNlYXJjaHBhdGguICBFWEVfUEFUSF9WQUxVRSAoJGRsbHNlYXJjaHBhdGgpIG11c3QKKysgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQorKyAgICAgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoICpfVkFSTkFNRXMgYXJlIFBBVEggYnV0IHVuaW5zdGFsbGVkCisrICAgICBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LiAqLworICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisrICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKyAKKy0gIG5ld2FyZ2M9MDsKKy0gIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCistICAgIHsKKy0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIG9wdF9wcmVmaXhfbGVuKSA9PSAwKQorLSAgICAgICAgeworLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCistICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKy0gICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKy0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorLSAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorLSAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKy0gICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCistICAgICAgICAgICAqLworLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKKy0gICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKy0gICAgICAgIH0KKy0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCistICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CistICAgIH0KKy0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CistCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAorKwkJICBub25udWxsIChsdF9hcmd2X3plcm8pKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBuZXdhcmdjOyBpKyspCisgICAgIHsKKy0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBuZXdhcmd6WyVkXTogJXNcbiIsCisrCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7CisgICAgIH0KKyAKKyBFT0YKK0BAIC0zNzA2LDcgKzQ1MjksOSBAQCBFT0YKKyAgIGlmIChydmFsID09IC0xKQorICAgICB7CisgICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KKy0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOworKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCisrCQkgICAgICBsdF9hcmd2X3plcm8sIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAgICAgICByZXR1cm4gMTI3OworICAgICB9CisgICByZXR1cm4gcnZhbDsKK0BAIC0zNzI4LDcgKzQ1NTMsNyBAQCB4bWFsbG9jIChzaXplX3QgbnVtKQorIHsKKyAgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7CisgICBpZiAoIXApCistICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAibWVtb3J5IGV4aGF1c3RlZCIpOworIAorICAgcmV0dXJuIHA7CisgfQorQEAgLTM3NjIsOCArNDU4Nyw4IEBAIGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCisgeworICAgc3RydWN0IHN0YXQgc3Q7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAorLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGNoZWNrX2V4ZWN1dGFibGUpOiAlc1xuIiwKKysgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOworICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgIHJldHVybiAwOworIAorQEAgLTM3ODAsOCArNDYwNSw4IEBAIG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKKyAgIGludCBydmFsID0gMDsKKyAgIHN0cnVjdCBzdGF0IHN0OworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKKy0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKKysgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOworICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgIHJldHVybiAwOworIAorQEAgLTM4MDcsOCArNDYzMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAgIGludCB0bXBfbGVuOworICAgY2hhciAqY29uY2F0X25hbWU7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGZpbmRfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAorLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5ICh3cmFwcGVyKSk7CisgCisgICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQorICAgICByZXR1cm4gTlVMTDsKK0BAIC0zODYxLDcgKzQ2ODYsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCisgCQl7CisgCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCisgCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKy0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKysJCSAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAJCSAgY29uY2F0X25hbWUgPQorIAkJICAgIFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworQEAgLTM4ODYsNyArNDcxMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAgICAgfQorICAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLworICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKysgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CisgICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKK0BAIC0zOTEyLDggKzQ3MzksOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKKyAgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKKyAgICAgeworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorLQkJCSAgICAgIHRtcF9wYXRoc3BlYykpOworKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKysJCSAgICAgIHRtcF9wYXRoc3BlYyk7CisgICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQorIAl7CisgCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKK0BAIC0zOTM1LDggKzQ3NjMsOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgCX0KKyAgICAgICBlbHNlCisgCXsKKy0JICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOworLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKysJICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICJlcnJvciBhY2Nlc3NpbmcgZmlsZSBcIiVzXCI6ICVzIiwKKysJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAJfQorICAgICB9CisgICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKK0BAIC0zOTQ5LDcgKzQ3NzgsOCBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7CisgICBpZiAodG1wX3BhdGhzcGVjID09IDApCisgICAgIHsKKy0gICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworKyAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgIH0KKyAgIHJldHVybiB4c3RyZHVwICh0bXBfcGF0aHNwZWMpOworICNlbmRpZgorQEAgLTM5NzUsMTEgKzQ4MDUsMjUgQEAgc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCkKKyAgIHJldHVybiBzdHI7CisgfQorIAorK3ZvaWQKKytsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorK3sKKysgIHZhX2xpc3QgYXJnczsKKysgIGlmIChsdF9kZWJ1ZykKKysgICAgeworKyAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lKTsKKysgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKysgICAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKysgICAgICB2YV9lbmQgKGFyZ3MpOworKyAgICB9CisrfQorKworIHN0YXRpYyB2b2lkCistbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqZmlsZSwKKysJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAorIAkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKKyB7CistICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7CisrICBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogJXM6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSwgbW9kZSk7CisgICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7CisgICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKKyAKK0BAIC0zOTg4LDIwICs0ODMyLDMyIEBAIGx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKKyB9CisgCisgdm9pZAorLWx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCisrbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCisgeworICAgdmFfbGlzdCBhcDsKKyAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7CistICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKKysgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgZmlsZSwgbGluZSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICAgdmFfZW5kIChhcCk7CisgfQorIAorK3N0YXRpYyBjb25zdCBjaGFyICoKKytub25udWxsIChjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqCisrbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpCisreworKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKKyt9CisrCisgdm9pZAorIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKKysgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKKyAgIHsKKyAjaWZkZWYgSEFWRV9TRVRFTlYKKyAgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KK0BAIC00MDQ5LDkgKzQ5MDUsOSBAQCBsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpCisgdm9pZAorIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOworIAorICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQorICAgICB7CitAQCAtNDA3MCw5ICs0OTI2LDkgQEAgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB2b2lkCisgbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisrICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CisgCisgICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCisgICAgIHsKK0BAIC00MjIyLDcgKzUwNzgsNyBAQCBFT0YKKyBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAoKQorIHsKKyAgICAgJG9wdF9kZWJ1ZworLSAgICBjYXNlIGBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCIgfCAkU0VEIC1lIDEwcWAgaW4KKysgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgorICAgICAqaW1wb3J0KikgOiA7OworICAgICAqKSBmYWxzZSA7OworICAgICBlc2FjCitAQCAtNDQwMSw5ICs1MjU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKikKKyAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKy0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKysJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRhcmciCisgCSAgICBlbHNlCistCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkYXJnIgorIAkgICAgZmkKKyAJICAgIHByZXY9CisgCSAgICBjb250aW51ZQorQEAgLTQ0MjcsNyArNTI4Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqLSotZGFyd2luKikKKyAJICAgICAgY2FzZSAiJGRlcGxpYnMgIiBpbgorIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7CistCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisrCQkqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgorIAkJICAgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworQEAgLTQ0NDYsNyArNTMwMiw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBtb3JlYXJncz0KKyAJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKKyAJICAgIGRvCistIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCisrIwkgICAgICBmdW5jX2FwcGVuZCBtb3JlYXJncyAiICRmaWwiCisgCSAgICAgIGFyZz0kZmlsCisgCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgorIAorQEAgLTQ0NzUsNyArNTMzMSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCistCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCSAgICAgIHByZXY9CisgCQkgICAgICBjb250aW51ZQorIAkJICAgIGVsc2UKK0BAIC00NDg3LDcgKzUzNDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQorIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgorLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorKwkJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCSAgICBwcmV2PQorIAkJICBmaQorIAorQEAgLTQ1NTcsMTIgKzU0MTMsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgorIAkgICAgY2FzZSAiJHJwYXRoICIgaW4KKyAJICAgICoiICRhcmcgIiopIDs7CistCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBycGF0aCAiICRhcmciIDs7CisgCSAgICBlc2FjCisgCSAgZWxzZQorIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCisgCSAgICAqIiAkYXJnICIqKSA7OworLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkYXJnIiA7OworIAkgICAgZXNhYworIAkgIGZpCisgCSAgcHJldj0KK0BAIC00NTc0LDI4ICs1NDMwLDI4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY29udGludWUKKyAJICA7OworIAl3ZWFrKQorLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIHdlYWtfbGlicyAiICRhcmciCisgCSAgcHJldj0KKyAJICBjb250aW51ZQorIAkgIDs7CisgCXhjY2xpbmtlcikKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGNvbXBpbGVyKQorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKKyAJICBwcmV2PQorIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgorIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCXhsaW5rZXIpCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJHFhcmciCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKKyAJICBwcmV2PQorIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgorIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKK0BAIC00Njg2LDE1ICs1NTQyLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCTs7CisgCisgICAgICAgLUwqKQorLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgorLQlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgorKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgorKwlpZiB0ZXN0IC16ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IjsgdGhlbgorIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKKyAJICBlbHNlCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKKyAJICBmaQorIAlmaQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisgCWNhc2UgJGRpciBpbgorIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CitAQCAtNDcwNiwxMCArNTU2MywxNiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIDs7CisgCWVzYWMKKyAJY2FzZSAiJGRlcGxpYnMgIiBpbgorLQkqIiAtTCRkaXIgIiopIDs7CisrCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCisrCSAgIyBXaWxsIG9ubHkgaGFwcGVuIGZvciBhYnNvbHV0ZSBvciBzeXNyb290IGFyZ3VtZW50cworKwkgIDs7CisgCSopCistCSAgZGVwbGlicz0iJGRlcGxpYnMgLUwkZGlyIgorLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKKysJICBjYXNlICRkaXIgaW4KKysJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7CisrCSAgZXNhYworKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCisgCSAgOzsKKyAJZXNhYworIAljYXNlICRob3N0IGluCitAQCAtNDcxOCwxMiArNTU4MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiRkaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JGRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7CisgCSAgZXNhYworIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNDc0Nyw3ICs1NjEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKKy0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKysJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCisgCSAgICBjb250aW51ZQorIAkgICAgOzsKKyAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCitAQCAtNDc1OCw5ICs1NjIxLDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgQ29tcGlsZXIgaW5zZXJ0cyBsaWJjIGluIHRoZSBjb3JyZWN0IHBsYWNlIGZvciB0aHJlYWRzIHRvIHdvcmsKKyAJICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorIAkgICAgOzsKKy0JICAqLSotbGludXgqKQorLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCistCSAgICA7OworIAkgIGVzYWMKKyAJZWxpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sY19yIjsgdGhlbgorIAkgY2FzZSAkaG9zdCBpbgorQEAgLTQ3NzAsNyArNTYzMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgIDs7CisgCSBlc2FjCisgCWZpCistCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisrCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorIAljb250aW51ZQorIAk7OworIAorQEAgLTQ3ODIsOCArNTY0Miw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKworICAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgorLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCistCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKysgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKKysJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAJcHJldj14Y29tcGlsZXIKK0BAIC00NzkxLDEyICs1NjUxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCTs7CisgCisgICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKy0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkgICAgKiIgJGFyZyAiKikgOzsKKy0JICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRhcmciIDs7CisrCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OworIAllc2FjCisgCWNvbnRpbnVlCisgCTs7CitAQCAtNDg2MywxMyArNTcyMywxNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJY2FzZSAkZGlyIGluCisgCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKKysJPSopCisrCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgorKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysJICA7OworIAkqKQorIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgorIAkgIDs7CisgCWVzYWMKKyAJY2FzZSAiJHhycGF0aCAiIGluCisgCSoiICRkaXIgIiopIDs7CistCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OworIAllc2FjCisgCWNvbnRpbnVlCisgCTs7CitAQCAtNDkyMiw4ICs1Nzg2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgorLQkgIGFyZz0iJGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAlkb25lCisgCUlGUz0iJHNhdmVfaWZzIgorIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCitAQCAtNDkzOCw5ICs1ODAyLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgorLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBhcmcgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAlkb25lCisgCUlGUz0iJHNhdmVfaWZzIgorIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCitAQCAtNDk2OCwyNCArNTgzMiwyNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAJOzsKKyAKKy0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgorLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCistICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgorLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCistICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKy0gICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKKy0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQworLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKy0gICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCistICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKy0gICAgICAjIC10cD0qIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KKysgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6CisrICAgICAgIyAtNjQsIC1taXBzWzAtOV0gICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTR0kgY29tcGlsZXIKKysgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCisrICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKKysgICAgICAjICtEQSosICtERCogICAgICAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIEhQIGNvbXBpbGVyCisrICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCisrICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQworKyAgICAgICMgLUYvcGF0aCAgICAgICAgICAgICAgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCisrICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKKysgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcworKyAgICAgICMgLXRwPSogICAgICAgICAgICAgICAgUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAorKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCisgICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCistICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qKQorKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAorKyAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKKyAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisgCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgorICAgICAgICAgY29udGludWUKKyAgICAgICAgIDs7CisgCitAQCAtNDk5Nyw3ICs1ODY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAqLiRvYmpleHQpCisgCSMgQSBzdGFuZGFyZCBvYmplY3QuCistCW9ianM9IiRvYmpzICRhcmciCisrCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgorIAk7OworIAorICAgICAgICoubG8pCitAQCAtNTAyOCw3ICs1ODk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgorLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisrCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCisgCQlwcmV2PQorIAkJY29udGludWUKKyAJICAgICAgZWxzZQorQEAgLTUwNDAsNyArNTkwNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorIAkgICAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCistCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCisgCSAgICAgIHByZXY9CisgCSAgICBmaQorIAorQEAgLTUwODUsMjQgKzU5NTIsMjUgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAqLiRsaWJleHQpCisgCSMgQW4gYXJjaGl2ZS4KKy0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKy0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgorKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKKysJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgorIAljb250aW51ZQorIAk7OworIAorICAgICAgICoubGEpCisgCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KKyAKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCisgCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KKy0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIHByZXY9CisgCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorIAkgICMgVGhlIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCistCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICBwcmV2PQorIAllbHNlCistCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJZmkKKyAJY29udGludWUKKyAJOzsKK0BAIC01MTI3LDcgKzU5OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKKyAKKyAgICAgaWYgdGVzdCAiJGV4cG9ydF9keW5hbWljIiA9IHllcyAmJiB0ZXN0IC1uICIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIjsgdGhlbgorLSAgICAgIGV2YWwgImFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIiIKKysgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgorICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisgICAgIGZpCitAQCAtNTE0NCwxMSArNjAxMiwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICBlbHNlCisgICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9CisgICAgIGZpCistICAgIGV2YWwgInN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIiCistICAgIGV2YWwgInN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiIgorKyAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKKysgICAgZXZhbCBzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIgorIAorICAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgorICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisrICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCisrICAgIHRvb2xfb3V0cHV0X29iamRpcj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgorICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgorIAorQEAgLTUxNjksMTIgKzYwMzksMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCisgICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQorICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbworLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJY2FzZSAiJGxpYnMgIiBpbgorLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGZpCistICAgICAgbGlicz0iJGxpYnMgJGRlcGxpYiIKKysgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKKyAgICAgZG9uZQorIAorICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCitAQCAtNTE4Nyw5ICs2MDU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwczsgdGhlbgorIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KKyAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCistCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkcHJlX3Bvc3RfZGVwcyIgOzsKKysJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OworIAkgIGVzYWMKKy0JICBwcmVfcG9zdF9kZXBzPSIkcHJlX3Bvc3RfZGVwcyAkcHJlX3Bvc3RfZGVwIgorKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgorIAlkb25lCisgICAgICAgZmkKKyAgICAgICBwcmVfcG9zdF9kZXBzPQorQEAgLTUyNTYsOCArNjEyNiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCisgCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicworIAkgIGRlcGVuZGVuY3lfbGlicz0KKysJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKKyAJICBjYXNlICRsaWIgaW4KKy0JICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKKysJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKKyAJICBlc2FjCisgCisgCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CitAQCAtNTI2Nyw3ICs2MTM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKyAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KKyAJICAgICoiICRkZXBsaWJfYmFzZSAiKikgOzsKKy0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCisgCWRvbmUKK0BAIC01Mjg4LDExICs2MTU5LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKyAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgZWxzZQorLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZGVwbGliIgorIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKyAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CisgCQllc2FjCisgCSAgICBmaQorIAkgIGZpCitAQCAtNTM3Nyw3ICs2MjQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisgCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkJICAgICoiICRkZXBsaWIgIiopIDs7CistCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKysJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OworIAkJZXNhYworIAkgICAgZmkKKyAJICBmaQorQEAgLTUzOTAsNyArNjI2MSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCisgCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICAgIDs7CisgCSAgcHJvZykKKyAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KK0BAIC01NDA0LDcgKzYyNzYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgorIAkgICAgZmkKKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICAgIDs7CisgCSAgKikKKyAJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKK0BAIC01NDE1LDE3ICs2Mjg4LDIxIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCS1SKikKKyAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCisgCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgorLQkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCisgCSAgICBjYXNlICIkeHJwYXRoICIgaW4KKyAJICAgICoiICRkaXIgIiopIDs7CistCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CisgCSAgICBlc2FjCisgCSAgZmkKKyAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKy0JKi5sYSkgbGliPSIkZGVwbGliIiA7OworKwkqLmxhKQorKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorKwkgIGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrCSAgOzsKKyAJKi4kbGliZXh0KQorIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KKyAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCitAQCAtNTQ4OCwxMSArNjM2NSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KKyAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCisgCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgorLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKKyAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisgCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgICBlbHNlCistCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkZGVwbGliIgorIAkgICAgZmkKKyAJICBmaQorIAkgIGNvbnRpbnVlCitAQCAtNTUzOCw3ICs2NDE1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCisgCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJICAgICAgKiIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgIiopIDs7CistCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZmkKK0BAIC01NTQ2LDggKzY0MjMsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAorIAkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKKyAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KKy0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgorLQkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRkbHByZW9wZW4iCisrCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCisrCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCisgCWZpCisgCisgCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KK0BAIC01NTU4LDIwICs2NDM1LDIwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorIAkgICAgZmkKKyAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KKy0JICAgIGNvbnZlbmllbmNlPSIkY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKysJICAgIGZ1bmNfYXBwZW5kIGNvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgZnVuY19hcHBlbmQgb2xkX2NvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCisgCSAgZmkKKyAJICB0bXBfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorIAkgIGRvbmUKKyAJICBjb250aW51ZQorIAlmaSAjICRwYXNzID0gY29udgorQEAgLTU1NzksOSArNjQ1NiwxNSBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCisgCWxpbmtsaWI9CistCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KKy0JICBsaW5rbGliPSIkbCIKKy0JZG9uZQorKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCisrCSAgIHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSB5ZXMgfHwKKysJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5CisrCWVsc2UKKysJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisrCSAgICBsaW5rbGliPSIkbCIKKysJICBkb25lCisrCWZpCisgCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgorIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorIAlmaQorQEAgLTU1OTgsOSArNjQ4MSw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAjIHN0YXRpY2FsbHksIHdlIG5lZWQgdG8gcHJlbG9hZC4gIFdlIGFsc28gbmVlZCB0byBwcmVsb2FkIGFueQorIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKKyAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KKy0JICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKysJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisgCSAgZWxzZQorLQkgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgorIAkgIGZpCisgCSAgY29udGludWUKKyAJZmkgIyAkcGFzcyA9IGRsb3BlbgorQEAgLTU2MjIsMTQgKzY1MDUsMTQgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCisgCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KKy0JICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisrCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisgCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgorIAkgICAgZGlyPSIkbGFkaXIiCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgZWxzZQorLQkgICAgZGlyPSIkbGliZGlyIgorLQkgICAgYWJzZGlyPSIkbGliZGlyIgorKwkgICAgZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCisrCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKyAJICBmaQorIAkgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9IFh5ZXMgJiYgYXZvaWR0ZW1wcnBhdGg9eWVzCisgCWVsc2UKK0BAIC01NjM3LDEyICs2NTIwLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBkaXI9IiRsYWRpciIKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKKy0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKKyAJICBlbHNlCisgCSAgICBkaXI9IiRsYWRpci8kb2JqZGlyIgorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCisgCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCistCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKysJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCisgCSAgZmkKKyAJZmkgIyAkaW5zdGFsbGVkID0geWVzCisgCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgorQEAgLTU2NTMsMjAgKzY1MzYsNDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgorIAkgIGZpCistCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCistCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCistCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCistCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKy0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorLQkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKy0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorLQkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKy0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKKy0JICBlbHNlCistCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRsaW5rbGliIgorLQkgIGZpCisrCSAgY2FzZSAiJGhvc3QiIGluCisrCSAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHBsYXRmb3JtcyB3aXRoIFBFLURMTHMuCisrCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKysJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCisrCSAgICAgICMgc3RhdGljIGFuZCBzaGFyZWQgYXJlIHByZXNlbnQuICBUaGVyZWZvcmUsIGVuc3VyZSB3ZSBleHRyYWN0CisrCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKKysJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCisrCSAgICAgICMgdGhpcyBieSBwdXR0aW5nIHRoZSBpbXBvcnQgbGlicmFyeSBuYW1lIGludG8gJG5ld2RscHJlZmlsZXMuCisrCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCisrCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKKysJICAgICAgIyBkbG5hbWUgZnJvbSB0aGUgbGEgZmlsZS4KKysJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKysJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgorKwkgICAgICAgIGV2YWwgImxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0PVwkYWJzX2xhZGlyL1wkbGFuYW1lIgorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorKwkgICAgICBlbHNlCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKysJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgIGZpCisrCSAgICA7OworKwkgICAgKiApCisrCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scworKwkgICAgICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKysJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKysJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKysJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisrCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGRsbmFtZSIKKysJICAgICAgZWxzZQorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorKwkgICAgICBmaQorKwkgICAgOzsKKysJICBlc2FjCisgCWZpICMgJHBhc3MgPSBkbHByZW9wZW4KKyAKKyAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KK0BAIC01Njg0LDcgKzY1OTMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAorIAlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgorLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCisrCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgorIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCisgCisgCSAgbGlua2FsbGRlcGxpYnM9bm8KK0BAIC01Njk3LDcgKzY2MDYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAgIGNhc2UgJGRlcGxpYiBpbgorIAkgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCQkgOzsKKyAJICAgIGVzYWMKKyAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KK0BAIC01NzA4LDEyICs2NjE4LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCisgCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICAgZmkKKy0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKy0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKKyAJICBkb25lICMgZm9yIGRlcGxpYgorIAkgIGNvbnRpbnVlCisgCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgorQEAgLTU3MjgsNyArNjYzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KKyAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgorIAkgICAgICAqIiRhYnNkaXI6IiopIDs7CistCSAgICAgICopIHRlbXBfcnBhdGg9IiR0ZW1wX3JwYXRoJGFic2RpcjoiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAorQEAgLTU3NDAsNyArNjY1MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRhYnNkaXIgIiopIDs7CistCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTc0OSw3ICs2NjU5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTc3NCwxMiArNjY4NCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGNhc2UgJGhvc3QgaW4KKyAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQorIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCistCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgorIAkgICAgICBuZWVkX3JlbGluaz1ubworIAkgICAgOzsKKyAJICAqKQorIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgorLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKKyAJICAgICAgbmVlZF9yZWxpbms9eWVzCisgCSAgICBmaQorIAkgICAgOzsKK0BAIC01ODE0LDcgKzY3MjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OworLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU4MjMsNyArNjczMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkbGliZGlyICIqKSA7OworLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU4MzUsNyArNjc0NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBzaGlmdAorIAkgICAgcmVhbG5hbWU9IiQxIgorIAkgICAgc2hpZnQKKy0JICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKyAJICAgICMgdXNlIGRsbmFtZSBpZiB3ZSBnb3QgaXQuIGl0J3MgcGVyZmVjdGx5IGdvb2QsIG5vPworIAkgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKyAJICAgICAgc29uYW1lPSIkZGxuYW1lIgorQEAgLTU4NDgsNyArNjc1OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCisgCQk7OworIAkgICAgICBlc2FjCistCSAgICAgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgorKwkgICAgICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCisgCSAgICBlbHNlCisgCSAgICAgIHNvbmFtZT0iJHJlYWxuYW1lIgorIAkgICAgZmkKK0BAIC01ODc3LDcgKzY3ODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgbGlua2xpYj0kbmV3bGliCisgCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCisgCistCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgCSAgICBhZGRfc2hsaWJwYXRoPQorIAkgICAgYWRkX2Rpcj0KKyAJICAgIGFkZD0KK0BAIC01OTMzLDcgKzY4NDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCSAgY2FzZSAkbGliZGlyIGluCisgCQkgICAgW1xcL10qKQorLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgICAgOzsKKyAJCSAgZXNhYworIAkJZmkKK0BAIC01OTU1LDcgKzY4NjUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCisgCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KKyAJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7CistCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorQEAgLTU5NjksMTMgKzY4NzksMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KKyAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCisgCQkqIjokbGliZGlyOiIqKSA7OworLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisrCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgZmkKKyAJICBmaQorIAorLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKyAJICAgIGFkZF9zaGxpYnBhdGg9CisgCSAgICBhZGRfZGlyPQorIAkgICAgYWRkPQorQEAgLTU5ODksNyArNjg5OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorIAkgICAgICBjYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgorIAkgICAgICAqIjokbGliZGlyOiIqKSA7OworLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICBhZGQ9Ii1sJG5hbWUiCisgCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCitAQCAtNjAwMSwxMiArNjkxMSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaQorIAkgICAgZWxzZQorIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgorLQkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCisrCSAgICAgIGFkZF9kaXI9Ii1MJGx0X3N5c3Jvb3QkbGliZGlyIgorIAkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCisgCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisgCQljYXNlICRsaWJkaXIgaW4KKyAJCSAgW1xcL10qKQorLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisrCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKK0BAIC02MDgzLDI3ICs2OTkzLDMzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgorIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OworLQkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OworKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7CisgCQkgICBlc2FjOzsKKy0JICAgICAgKikgdGVtcF9kZXBsaWJzPSIkdGVtcF9kZXBsaWJzICRsaWJkaXIiOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCisgCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCisgCSAgZmkKKyAKKy0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKKysJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgorIAkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQorIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCisgCSAgdG1wX2xpYnM9CisgCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCistCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKwkgICAgY2FzZSAkZGVwbGliIGluCisrICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisrICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7CisrICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKKysgICAgICAgICAgICBlc2FjCisrCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAgICoiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgIiopCisrICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKy0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICBkb25lCisgCisgCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCitAQCAtNjExMyw4ICs3MDI5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGNhc2UgJGRlcGxpYiBpbgorIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CisgCSAgICAgICoubGEpCisrCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisrCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgorLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKysJCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAorIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisgCQljYXNlICRkaXIgaW4KKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OworQEAgLTYxMzAsNyArNzA0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQljYXNlICRob3N0IGluCisgCQkqLSotZGFyd2luKikKKyAJCSAgZGVwZGVwbD0KKy0JCSAgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCSAgZXZhbCBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorIAkJICBpZiB0ZXN0IC1uICIkZGVwbGlicmFyeV9uYW1lcyIgOyB0aGVuCisgCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCisgCQkgICAgICBkZXBkZXBsPSR0bXAKK0BAIC02MTQxLDggKzcwNTksOCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAorICAgICAgICAgICAgICAgICAgICAgICBmaQorLQkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKyAJCSAgICAgIHBhdGg9CisgCQkgICAgZmkKKyAJCSAgZmkKK0BAIC02MTUyLDcgKzcwNzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJICA7OworIAkJZXNhYworIAkJZWxzZQorLQkJICBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCSAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKyAJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorIAkJICB0ZXN0ICIkYWJzZGlyIiAhPSAiJGxpYmRpciIgJiYgXAorQEAgLTYxOTIsNyArNzExMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbworIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCisgCSAgICAqIiAkZGlyICIqKSA7OworLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJICBuZXdsaWJfc2VhcmNoX3BhdGg9CitAQCAtNjIwNSw3ICs3MTIzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZmkKKyAJZm9yIHZhciBpbiAkdmFycyBkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgIyBBZGQgbGlicmFyaWVzIHRvICR2YXIgaW4gcmV2ZXJzZSBvcmRlcgorLQkgIGV2YWwgdG1wX2xpYnM9XCQkdmFyCisrCSAgZXZhbCB0bXBfbGlicz1cIlwkJHZhclwiCisgCSAgbmV3X2xpYnM9CisgCSAgZm9yIGRlcGxpYiBpbiAkdG1wX2xpYnM7IGRvCisgCSAgICAjIEZJWE1FOiBQZWRhbnRpY2FsbHksIHRoaXMgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLCBzbworQEAgLTYyNTAsMTMgKzcxNjgsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIC1MKikKKyAJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCisgCSAgICAgICoiICRkZXBsaWIgIiopIDs7CistCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CistCSAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorLQkgIGV2YWwgJHZhcj1cJHRtcF9saWJzCisrCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKKyAJZG9uZSAjIGZvciB2YXIKKyAgICAgICBmaQorICAgICAgICMgTGFzdCBzdGVwOiByZW1vdmUgcnVudGltZSBsaWJzIGZyb20gZGVwZW5kZW5jeV9saWJzCitAQCAtNjI2OSw3ICs3MTg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICA7OworIAllc2FjCisgCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKy0JICB0bXBfbGlicz0iJHRtcF9saWJzICRpIgorKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCisgCWZpCisgICAgICAgZG9uZQorICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKK0BAIC02MzEwLDcgKzcyMjgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgorICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubworICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCistICAgICAgb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMiCisrICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgorICAgICAgIDs7CisgCisgICAgIGxpYikKK0BAIC02MzE5LDggKzcyMzcsOCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGxpYiopCisgCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKKyAJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKKy0JZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKKysJZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCisgCTs7CisgICAgICAgKikKKyAJdGVzdCAiJG1vZHVsZSIgPSBubyAmJiBcCitAQCAtNjMzMCw4ICs3MjQ4LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCisgCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgorIAkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLQkgIGV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKKy0JICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkgIGV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisrCSAgZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCisgCWVsc2UKKyAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCisgCSAgbGlibmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CitAQCAtNjM0Niw3ICs3MjY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBlY2hvCisgCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgorIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgorLQkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgorKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKKyAJZmkKKyAgICAgICBmaQorIAorQEAgLTY1NDQsNyArNzQ2Miw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZG9uZQorIAorIAkgICMgTWFrZSBleGVjdXRhYmxlcyBkZXBlbmQgb24gb3VyIGN1cnJlbnQgdmVyc2lvbi4KKy0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgorKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKKyAJICA7OworIAorIAlxbngpCitAQCAtNjYxMiwxMCArNzUzMCwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZpCisgCisgICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCistICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCisrICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgorICAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCistICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CisgCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgorIAlyZW1vdmVsaXN0PQorQEAgLTY2MzEsNyArNzU0OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgICBjb250aW51ZQorIAkJIGZpCisgCSAgICAgICBmaQorLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCisrCSAgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJHAiCisgCSAgICAgICA7OworIAkgICAgKikgOzsKKyAJICBlc2FjCitAQCAtNjY0Miw3ICs3NTYwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KKyAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgorLQlvbGRsaWJzPSIkb2xkbGlicyAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKyAKKyAJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgorIAlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKK0BAIC02NjU5LDEwICs3NTc3LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KKyAJdGVtcF94cnBhdGg9CisgCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KKy0JICB0ZW1wX3hycGF0aD0iJHRlbXBfeHJwYXRoIC1SJGxpYmRpciIKKysJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKyAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWRvbmUKKyAJaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KK0BAIC02Njc2LDcgKzc1OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbworIAljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgorIAkqIiAkbGliICIqKSA7OworLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAKK0BAIC02Njg2LDcgKzc2MDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbHByZWZpbGVzOyBkbworIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCisgCSoiICRsaWIgIiopIDs7CistCSopIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorIAorQEAgLTY2OTgsNyArNzYxNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICA7OworIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKKyAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCistCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisrCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgorIAkgICAgOzsKKyAJICAqLSotbmV0YnNkKikKKyAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgorQEAgLTY3MTUsNyArNzYzNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgKikKKyAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCisgCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCistCSAgICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1sYyIKKysJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKKyAJICAgIGZpCisgCSAgICA7OworIAkgIGVzYWMKK0BAIC02NzY0LDE4ICs3NjgzLDE4IEBAIEVPRgorIAkJaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSAgKiIgJGkgIiopCistCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgIGk9IiIKKyAJCSAgICA7OworIAkJICBlc2FjCisgCQlmaQorIAkJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkJICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorLQkJICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKKysJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQkgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKKyAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKKyAJCSAgZGVwbGliX21hdGNoPSQxCisgCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKy0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgIGVsc2UKKyAJCSAgICBkcm9wcGVkZGVwcz15ZXMKKyAJCSAgICBlY2hvCitAQCAtNjc4OSw3ICs3NzA4LDcgQEAgRU9GCisgCQlmaQorIAkJOzsKKyAJICAgICAgKikKKy0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorQEAgLTY4MDcsMTggKzc3MjYsMTggQEAgRU9GCisgCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSAgICAqIiAkaSAiKikKKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgICAgaT0iIgorIAkJICAgICAgOzsKKyAJCSAgICBlc2FjCisgCQkgIGZpCisgCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKy0JCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorLQkJICAgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorKwkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKKyAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAorIAkJICAgIGRlcGxpYl9tYXRjaD0kMQorIAkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgIGVsc2UKKyAJCSAgICAgIGRyb3BwZWRkZXBzPXllcworIAkJICAgICAgZWNobworQEAgLTY4NDAsNyArNzc1OSw3IEBAIEVPRgorIAkJZmkKKyAJCTs7CisgCSAgICAgICopCistCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKK0BAIC02ODU3LDE1ICs3Nzc2LDI3IEBAIEVPRgorIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSoiICRhX2RlcGxpYiAiKikKKy0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICBhX2RlcGxpYj0iIgorIAkJICA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorKwkJaWYgdGVzdCAtbiAiJGZpbGVfbWFnaWNfZ2xvYiI7IHRoZW4KKysJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKKysJCWVsc2UKKysJCSAgbGlibmFtZWdsb2I9JGxpYm5hbWUKKysJCWZpCisrCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAorIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCistCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgorKwkJICAgIHNob3B0IC1zIG5vY2FzZWdsb2IKKysJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisrCQkgICAgJG5vY2FzZWdsb2IKKysJCSAgZWxzZQorKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKysJCSAgZmkKKyAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbworIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KKyAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8CitAQCAtNjg4NSwxMCArNzgxNiwxMCBAQCBFT0YKKyAJCQkqKSBwb3RsaWI9YCRFQ0hPICIkcG90bGliIiB8ICRTRUQgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworIAkJCWVzYWMKKyAJCSAgICAgIGRvbmUKKy0JCSAgICAgIGlmIGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIiIDI+L2Rldi9udWxsIHwKKysJCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCB8CisgCQkJICRTRUQgLWUgMTBxIHwKKyAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKy0JCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJCQlhX2RlcGxpYj0iIgorIAkJCWJyZWFrIDIKKyAJCSAgICAgIGZpCitAQCAtNjkxMyw3ICs3ODQ0LDcgQEAgRU9GCisgCSAgICAgIDs7CisgCSAgICAqKQorIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgorLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCSAgICAgIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KK0BAIC02OTI5LDIwICs3ODYwLDIwIEBAIEVPRgorIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSoiICRhX2RlcGxpYiAiKikKKy0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICBhX2RlcGxpYj0iIgorIAkJICA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCisgCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCisgCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKKyAJCSAgICBpZiBldmFsICJcJEVDSE8gXCIkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIHwgXAorIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCistCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICAgICAgYV9kZXBsaWI9IiIKKyAJCSAgICAgIGJyZWFrIDIKKyAJCSAgICBmaQorQEAgLTY5NjcsNyArNzg5OCw3IEBAIEVPRgorIAkgICAgICA7OworIAkgICAgKikKKyAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KKy0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkgICAgICA7OworIAkgICAgZXNhYworIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCitAQCAtNzA3MSw3ICs4MDAyLDcgQEAgRU9GCisgCSopCisgCSAgY2FzZSAiICRkZXBsaWJzICIgaW4KKyAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCistCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKysJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNzA4MSwxMCArODAxMiwxMCBAQCBFT0YKKyAJLUwqKQorIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgorIAkgICoiICRkZXBsaWIgIiopIDs7CistCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJICBlc2FjCisgCSAgOzsKKy0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgICAgICAgZGVwbGlicz0iJG5ld19saWJzIgorQEAgLTcxMDEsMTAgKzgwMzIsMTIgQEAgRU9GCisgCSAgaGFyZGNvZGVfbGliZGlycz0KKyAJICBkZXBfcnBhdGg9CisgCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKKy0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKysJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCisgCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCisgCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisgCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKyAJCWVsc2UKK0BAIC03MTEzLDE4ICs4MDQ2LDE4IEBAIEVPRgorIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCisgCQkgICAgOzsKKyAJCSAgKikKKy0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKysJCSAgICBmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCSAgZXNhYworIAkJZmkKKyAJICAgICAgZWxzZQorLQkJZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCistCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCisrCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKKyAJICAgICAgZmkKKyAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZWQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZG9uZQorQEAgLTcxMzMsNDAgKzgwNjYsMzggQEAgRU9GCisgCSAgICAgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCistCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIiCisrCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgorIAkgICAgZWxzZQorLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAJICAgIGZpCisgCSAgZmkKKyAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgorIAkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICAgIHJwYXRoPQorIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KKy0JICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgICBkb25lCistCSAgICBldmFsICRydW5wYXRoX3Zhcj1cJHJwYXRoXCQkcnVucGF0aF92YXIKKy0JICAgIGV4cG9ydCAkcnVucGF0aF92YXIKKysJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgorIAkgIGZpCisgCSAgdGVzdCAtbiAiJGRlcF9ycGF0aCIgJiYgZGVwbGlicz0iJGRlcF9ycGF0aCAkZGVwbGlicyIKKyAJZmkKKyAKKyAJc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoIgorLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKysJdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorIAlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgorLQkgIGV2YWwgJHNobGlicGF0aF92YXI9XCRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyCistCSAgZXhwb3J0ICRzaGxpYnBhdGhfdmFyCisrCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorIAlmaQorIAorIAkjIEdldCB0aGUgcmVhbCBhbmQgbGluayBuYW1lcyBvZiB0aGUgbGlicmFyeS4KKy0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQlldmFsICJsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorKwlldmFsIGxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIKKyAJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCisgCXNoaWZ0CisgCXJlYWxuYW1lPSIkMSIKKyAJc2hpZnQKKyAKKyAJaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgorLQkgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgorKwkgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKKyAJZWxzZQorIAkgIHNvbmFtZT0iJHJlYWxuYW1lIgorIAlmaQorQEAgLTcxNzgsNyArODEwOSw3IEBAIEVPRgorIAlsaW5rbmFtZXM9CisgCWZvciBsaW5rCisgCWRvCistCSAgbGlua25hbWVzPSIkbGlua25hbWVzICRsaW5rIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtuYW1lcyAiICRsaW5rIgorIAlkb25lCisgCisgCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCitAQCAtNzE4OSw3ICs4MTIwLDcgQEAgRU9GCisgCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCisgCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCistCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCisrCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCisgCWZpCisgCisgCW9yaWdfZXhwb3J0X3N5bWJvbHM9CitAQCAtNzIyMCwxMyArODE1MSw0NSBAQCBFT0YKKyAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCisgCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCisgCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKy0JICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCisrCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KKyAJICAgICAgSUZTPSIkc2F2ZV9pZnMiCistCSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKKy0JICAgICAgZnVuY19sZW4gIiAkY21kIgorLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorLQkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKysJICAgICAgIyBUYWtlIHRoZSBub3JtYWwgYnJhbmNoIGlmIHRoZSBubV9maWxlX2xpc3Rfc3BlYyBicmFuY2gKKysJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCisrCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCisrCQkqfmZ1bmNfY29udmVydF9maWxlX25vb3AgfCAqfmZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIHwgfiopCisrCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcworKwkJICBldmFsIGNtZD1cIiRjbWQxXCIKKysJCSAgZnVuY19sZW4gIiAkY21kIgorKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorKwkJICA7OworKwkJKikKKysJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KKysJCSAgOzsKKysJICAgICAgZXNhYworKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKysJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCisrCQkgICAgICB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgfQorKwkgICAgICB0aGVuCisrCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisrCQlza2lwcGVkX2V4cG9ydD1mYWxzZQorKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KKysJCWZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisrCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisrCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKKysJCXNhdmVfb3V0cHV0PSRvdXRwdXQKKysJCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQorKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCQlsaWJvYmpzPSRubV9maWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKysJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKKysJCWZvciBvYmogaW4gJHNhdmVfbGlib2JqczsgZG8KKysJCSAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorKwkJZG9uZSA+ICIkb3V0cHV0IgorKwkJZXZhbCBjbWQ9XCIkY21kMVwiCisgCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisrCQlvdXRwdXQ9JHNhdmVfb3V0cHV0CisrCQlsaWJvYmpzPSRzYXZlX2xpYm9ianMKKyAJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisgCSAgICAgIGVsc2UKKyAJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgorQEAgLTcyNDgsNyArODIxMSw3IEBAIEVPRgorIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisgCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCistCSAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKyAJZmkKKyAKKyAJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KK0BAIC03MjYwLDcgKzgyMjMsNyBAQCBFT0YKKyAJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCisgCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCistCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKyAJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKyAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scworIAlmaQorQEAgLTcyNzAsNyArODIzMyw3IEBAIEVPRgorIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgorIAkgICoiICR0ZXN0X2RlcGxpYiAiKikgOzsKKyAJICAqKQorLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfZGVwbGlicyAiICR0ZXN0X2RlcGxpYiIKKyAJICAgIDs7CisgCSAgZXNhYworIAlkb25lCitAQCAtNzI4Niw0MyArODI0OSw0MyBAQCBFT0YKKyAJICBmaQorIAkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKyAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcworLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKKysJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBlbHNlCisgCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCistCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCSAgZmkKKyAJZmkKKyAKKyAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgIGV2YWwgImZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIiCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgorKwkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgorIAlmaQorIAorIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKKy0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCistCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKSB8fCBleGl0ICQ/CisrCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CisgCWZpCisgCisgCSMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KKyAJaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJG1vZHVsZV9jbWRzIiA7IHRoZW4KKyAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIgorIAkgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCisgCSAgZWxzZQorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiCisgCSAgICBjbWRzPSRtb2R1bGVfY21kcworIAkgIGZpCisgCWVsc2UKKyAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIgorIAkgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcworIAkgIGVsc2UKKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiCisgCSAgICBjbWRzPSRhcmNoaXZlX2NtZHMKKyAJICBmaQorIAlmaQorQEAgLTczNjYsMTAgKzgzMjksMTMgQEAgRU9GCisgCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKKyAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcworIAkgICAgZG8KKy0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKysJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CisgCSAgICBkb25lCisgCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0CistCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisrCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KKyAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKKyAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKK0BAIC03MzgzLDE1ICs4MzQ5LDE3IEBAIEVPRgorIAkgICAgZmkKKyAJICAgIGZvciBvYmoKKyAJICAgIGRvCistCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisrCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAorIAkgICAgZG9uZQorLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorLQkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCisrCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIgorIAkgIGVsc2UKKyAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCisgCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCisgCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorLQkgICAgICBldmFsICJ0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKKysJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgorIAkgICAgICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisgCSAgICAgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAorIAkgICAgICBsZW49JGxlbjAKK0BAIC03NDExLDEyICs4Mzc5LDEyIEBAIEVPRgorIAkJICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCisgCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KKyAJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAorLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCisrCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCisgCQkgIGVsc2UKKyAJCSAgICAjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgorIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisgCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCistCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKKysJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKKyAJCSAgZmkKKyAJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CisgCQkgIGZ1bmNfYXJpdGggJGsgKyAxCitAQCAtNzQzMywxMSArODQwMSwxMSBAQCBFT0YKKyAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisgCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorIAkgICAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKy0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCisgCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCistCSAgICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIiCisrCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgorIAkgICAgICBmaQorLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKyAKKyAJICAgIGVsc2UKKyAJICAgICAgb3V0cHV0PQorQEAgLTc0NTAsOSArODQxOCw5IEBAIEVPRgorIAkgICAgICBsaWJvYmpzPSRvdXRwdXQKKyAJICAgICAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBleHBvcnQgZmlsZS4KKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CistCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIiCisrCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIgorIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgorLQkJZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgorKwkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCitAQCAtNzQ3MSw3ICs4NDM5LDcgQEAgRU9GCisgCQlsdF9leGl0PSQ/CisgCisgCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKy0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisgCQkgICAgJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKK0BAIC03NDkyLDcgKzg0NjAsNyBAQCBFT0YKKyAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisgCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgorLQkgICAgICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgorKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKyAJICAgIGZpCisgCisgCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KK0BAIC03NTA0LDcgKzg0NzIsNyBAQCBFT0YKKyAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKKyAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKyAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCistCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKysJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKyAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKKyAJICAgIGZpCitAQCAtNzUxNSw3ICs4NDgzLDcgQEAgRU9GCisgCSAgb3V0cHV0PSRzYXZlX291dHB1dAorIAorIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSIgJiYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKKysJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBmaQorIAkgICMgRXhwYW5kIHRoZSBsaWJyYXJ5IGxpbmtpbmcgY29tbWFuZHMgYWdhaW4gdG8gcmVzZXQgdGhlCitAQCAtNzUzOSwyMyArODUwNywyMyBAQCBFT0YKKyAKKyAJaWYgdGVzdCAtbiAiJGRlbGZpbGVzIjsgdGhlbgorIAkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMgdG8gJGNtZHMuCistCSAgZXZhbCAiY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiIgorKwkgIGV2YWwgY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiCisgCWZpCisgCisgCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKy0JICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJZmkKKyAKKyAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisgCWZvciBjbWQgaW4gJGNtZHM7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCistCSAgZXZhbCAiY21kPVwiJGNtZFwiIgorKwkgIGV2YWwgY21kPVwiJGNtZFwiCisgCSAgJG9wdF9zaWxlbnQgfHwgeworIAkgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgorIAkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorQEAgLTc1NjQsNyArODUzMiw3IEBAIEVPRgorIAkgICAgbHRfZXhpdD0kPworIAorIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CistCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKyAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKKyAJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAorIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKK0BAIC03NTc2LDggKzg1NDQsOCBAQCBFT0YKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCisgCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKy0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpIHx8IGV4aXQgJD8KKysJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KKyAKKyAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCisgCSAgICBpZiB0ZXN0IC16ICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCitAQCAtNzY1NiwxNyArODYyNCwyMCBAQCBFT0YKKyAKKyAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCisgCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKy0JICBldmFsICJ0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKKyAJZWxzZQorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQorIAkgIHJlbG9hZF9jb252X29ianM9IiRyZWxvYWRfb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJZmkKKyAgICAgICBmaQorIAorKyAgICAgICMgSWYgd2UncmUgbm90IGJ1aWxkaW5nIHNoYXJlZCwgd2UgbmVlZCB0byB1c2Ugbm9uX3BpY19vYmpzCisrICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisrCisgICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCisgICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgCitAQCAtNzY5MCw3ICs4NjYxLDcgQEAgRU9GCisgCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0CisgCSMgYWNjaWRlbnRhbGx5IGxpbmsgaXQgaW50byBhIHByb2dyYW0uCisgCSMgJHNob3cgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIKKy0JIyAkb3B0X2RyeV9ydW4gfHwgZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIHx8IGV4aXQgJD8KKysJIyAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIiB8fCBleGl0ICQ/CisgCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgIGZpCisgCitAQCAtNzc0MCw4ICs4NzExLDggQEAgRU9GCisgCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KKyAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCisgCSAgICAxMC5bMDEyM10pCistCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCistCSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKysJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorIAkgICAgOzsKKyAJICBlc2FjCisgCWZpCitAQCAtNzc2MSw3ICs4NzMyLDcgQEAgRU9GCisgCSopCisgCSAgY2FzZSAiICRjb21waWxlX2RlcGxpYnMgIiBpbgorIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKKy0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC03NzcxLDE3ICs4NzQyLDE3IEBAIEVPRgorIAktTCopCisgCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCisgCSAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAkgIGVzYWMKKyAJICA7OworLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKKyAKKyAKKy0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKKy0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZmluYWxpemVfZGVwbGlicyIKKysgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgorKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKKyAKKyAgICAgICBpZiB0ZXN0IC1uICIkcnBhdGgkeHJwYXRoIjsgdGhlbgorIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCitAQCAtNzc4OSw3ICs4NzYwLDcgQEAgRU9GCisgCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZG9uZQorICAgICAgIGZpCitAQCAtNzgwOCwxOCArODc3OSwxOCBAQCBFT0YKKyAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorIAkJOzsKKyAJICAgICAgKikKKy0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisrCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlmaQorIAljYXNlICRob3N0IGluCitAQCAtNzgyOCwxMiArODc5OSwxMiBAQCBFT0YKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokbGliZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OworIAkgIGVzYWMKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTc4NDIsNyArODgxMyw3IEBAIEVPRgorICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgorIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCistCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgIGZpCisgICAgICAgY29tcGlsZV9ycGF0aD0iJHJwYXRoIgorIAorQEAgLTc4NTksMTggKzg4MzAsMTggQEAgRU9GCisgCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKyAJCTs7CisgCSAgICAgICopCistCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKysJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZWxzZQorLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCistCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3Blcm1fcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZmkKKyAgICAgICBkb25lCitAQCAtNzg3OCw3ICs4ODQ5LDcgQEAgRU9GCisgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCisgCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKy0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgZmkKKyAgICAgICBmaW5hbGl6ZV9ycGF0aD0iJHJwYXRoIgorIAorQEAgLTc5MjEsNiArODg5MiwxMiBAQCBFT0YKKyAJZXhpdF9zdGF0dXM9MAorIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JworIAorKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKysJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisrCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKysJZmkKKysKKyAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KKyAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgorIAkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCitAQCAtNzk0Myw3ICs4OTIwLDcgQEAgRU9GCisgCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICBycGF0aD0KKyAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbworLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgorIAkgIGRvbmUKKyAJICBjb21waWxlX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCisgCWZpCitAQCAtNzk1MSw3ICs4OTI4LDcgQEAgRU9GCisgCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICBycGF0aD0KKyAJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbworLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgorIAkgIGRvbmUKKyAJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgorIAlmaQorQEAgLTc5NjYsNiArODk0MywxMyBAQCBFT0YKKyAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0CisgCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAorIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisrCisrCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKwlmaQorKworIAlleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAgICBmaQorIAorQEAgLTc5OTksNiArODk4MywxMiBAQCBFT0YKKyAKKyAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisgCisrICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisrCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSIKKysJcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKysgICAgICBmaQorKworICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCisgICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgorIAorQEAgLTgwOTYsNyArOTA4Niw3IEBAIEVPRgorIAllbHNlCisgCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCisgCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgorLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCisrCSAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJHN5bWZpbGVvYmoiCisgCSAgZmkKKyAJZmkKKyAJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKK0BAIC04MTA0LDEwICs5MDk0LDEwIEBAIEVPRgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgorIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQlnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKKy0Jb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisrCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAgICAgICBmaQorIAorICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgorQEAgLTgxMTgsMTAgKzkxMDgsMTAgQEAgRU9GCisgCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKy0JICBvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCWZpCisgCisgCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQorQEAgLTgxMzksNyArOTEyOSw3IEBAIEVPRgorIAllbHNlCisgCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCisgCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCisgCSAgb2xkb2Jqcz0KK0BAIC04MTYzLDE4ICs5MTUzLDI4IEBAIEVPRgorIAkJZXNhYworIAkgICAgICBkb25lCisgCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKKy0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgorKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgorIAkgICAgICA7OworLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZmkKKy0JZXZhbCAiY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCWV2YWwgY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAKKyAJZnVuY19sZW4gIiAkY21kcyIKKyAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKKyAJaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisgCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCisrCSAgZnVuY192ZXJib3NlICJ1c2luZyBjb21tYW5kIGZpbGUgYXJjaGl2ZSBsaW5raW5nLi4uIgorKwkgIGZvciBvYmogaW4gJG9sZG9ianMKKysJICBkbworKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKysJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCisrCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZCIKKysJICBvbGRvYmpzPSIgJGFyY2hpdmVyX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisrCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworIAllbHNlCisgCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKKyAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCitAQCAtODE4OSw3ICs5MTg5LDcgQEAgRU9GCisgCSAgZG8KKyAJICAgIGxhc3Rfb2xkb2JqPSRvYmoKKyAJICBkb25lCistCSAgZXZhbCAidGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisgCSAgbGVuMD0kZnVuY19sZW5fcmVzdWx0CisgCSAgbGVuPSRsZW4wCitAQCAtODIwOCw3ICs5MjA4LDcgQEAgRU9GCisgCQlSQU5MSUI9JHNhdmVfUkFOTElCCisgCSAgICAgIGZpCisgCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiCisgCSAgICAgIG9iamxpc3Q9CisgCSAgICAgIGxlbj0kbGVuMAorIAkgICAgZmkKK0BAIC04MjE2LDkgKzkyMTYsOSBAQCBFT0YKKyAJICBSQU5MSUI9JHNhdmVfUkFOTElCCisgCSAgb2xkb2Jqcz0kb2JqbGlzdAorIAkgIGlmIHRlc3QgIlgkb2xkb2JqcyIgPSAiWCIgOyB0aGVuCistCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc1wiIgorKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc1wiCisgCSAgZWxzZQorLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiCisgCSAgZmkKKyAJZmkKKyAgICAgICBmaQorQEAgLTgyNjgsMTIgKzkyNjgsMjMgQEAgRU9GCisgCSAgICAgICoubGEpCisgCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgorIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisrCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKysJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisgCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorLQkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKKysJCTs7CisrCSAgICAgIC1MKikKKysJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgorKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtTCRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisgCQk7OworLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgLVIqKQorKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKysJCTs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKK0BAIC04Mjg0LDEyICs5Mjk1LDE0IEBAIEVPRgorIAkgICAgICAqLmxhKQorIAkgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRsaWIiCisgCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKysJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgorKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKysKKyAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCistCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorKwkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgorIAkJOzsKKy0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorQEAgLTgzMDMsMTAgKzkzMTYsMTEgQEAgRU9GCisgCQkjIHRoZSBsaWJyYXJ5OgorIAkJZnVuY19iYXNlbmFtZSAiJGxpYiIKKyAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCisrCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAorIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKy0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCitAQCAtODMxOCw3ICs5MzMyLDcgQEAgRU9GCisgCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKKyAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKKyAJICAgICAgZXNhYworLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkYWJzIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGFicyIKKyAJICAgIGRvbmUKKyAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorIAkgICAgbmV3ZGxwcmVmaWxlcz0KK0BAIC04MzI3LDcgKzkzNDEsNyBAQCBFT0YKKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OworIAkgICAgICBlc2FjCistCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkYWJzIgorIAkgICAgZG9uZQorIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCisgCSAgZmkKK0BAIC04NDEyLDcgKzk0MjYsNyBAQCByZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgorICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyB9CisgCisteyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgorK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgorICAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KKyAKKyAKK0BAIC04NDMyLDkgKzk0NDYsOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgIGZvciBhcmcKKyAgICAgZG8KKyAgICAgICBjYXNlICRhcmcgaW4KKy0gICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKy0gICAgICAtKikgUk09IiRSTSAkYXJnIiA7OworLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKysgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKysgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OworKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKKyAgICAgICBlc2FjCisgICAgIGRvbmUKKyAKK0BAIC04NDQzLDI0ICs5NDU3LDIzIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAKKyAgICAgcm1kaXJzPQorIAorLSAgICBvcmlnb2JqZGlyPSIkb2JqZGlyIgorICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCisgICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCisgICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyAgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgorLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgorKwlvZGlyPSIkb2JqZGlyIgorICAgICAgIGVsc2UKKy0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgorKwlvZGlyPSIkZGlyLyRvYmpkaXIiCisgICAgICAgZmkKKyAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKyAgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKKysgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCisgCistICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCisrICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKKysgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IHRoZW4KKyAJY2FzZSAiICRybWRpcnMgIiBpbgorLQkgICoiICRvYmpkaXIgIiopIDs7CistCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7CisrCSAgKiIgJG9kaXIgIiopIDs7CisrCSAgKikgZnVuY19hcHBlbmQgcm1kaXJzICIgJG9kaXIiIDs7CisgCWVzYWMKKyAgICAgICBmaQorIAorQEAgLTg0ODYsMTggKzk0OTksMTcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCisgCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgorIAkgIGRvbmUKKy0JICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKKyAKKy0JICBjYXNlICIkbW9kZSIgaW4KKysJICBjYXNlICIkb3B0X21vZGUiIGluCisgCSAgY2xlYW4pCistCSAgICBjYXNlICIgICRsaWJyYXJ5X25hbWVzICIgaW4KKy0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQorKwkgICAgY2FzZSAiICRsaWJyYXJ5X25hbWVzICIgaW4KKyAJICAgICoiICRkbG5hbWUgIiopIDs7CistCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7CisrCSAgICAqKSB0ZXN0IC1uICIkZGxuYW1lIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGRsbmFtZSIgOzsKKyAJICAgIGVzYWMKKy0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKysJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9aSIKKyAJICAgIDs7CisgCSAgdW5pbnN0YWxsKQorIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCitAQCAtODUyNSwxOSArOTUzNywxOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCisgCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCisgCSAgICAgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKKyAJICBmaQorIAorIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KKyAJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCisgCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKKyAJICBmaQorIAlmaQorIAk7OworIAorICAgICAgICopCistCWlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuIDsgdGhlbgorKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCisgCSAgbm9leGVuYW1lPSRuYW1lCisgCSAgY2FzZSAkZmlsZSBpbgorIAkgICouZXhlKQorQEAgLTg1NDcsNyArOTU1OSw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCisgCSAgICAjIGFkZCAkZmlsZSB3aXRob3V0IC5leGUKKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmaWxlIgorIAkgICAgOzsKKyAJICBlc2FjCisgCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCitAQCAtODU1Niw3ICs5NTY4LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKKyAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CisgCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAorLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisgCSAgICBlbHNlCisgCSAgICAgIHJlbGlua19jb21tYW5kPQorIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKK0BAIC04NTY0LDEyICs5NTc2LDEyIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAKKyAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5CisgCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcworLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCisgCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbmFtZSIKKyAJICAgIGZpCisgCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJHtub2V4ZW5hbWV9LmMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKKyAJICAgIGZpCisgCSAgZmkKKyAJZmkKK0BAIC04NTc3LDcgKzk1ODksNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgICAgZXNhYworICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJworICAgICBkb25lCistICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCisgCisgICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcworICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCitAQCAtODU4OSwxNiArOTYwMCwxNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorLXsgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB9ICYmCisreyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgorICAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQorIAorLXRlc3QgLXogIiRtb2RlIiAmJiB7CisrdGVzdCAteiAiJG9wdF9tb2RlIiAmJiB7CisgICBoZWxwPSIkZ2VuZXJpY19oZWxwIgorICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKKyB9CisgCisgdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCistICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisrICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorIAorIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KKyAgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgorZGlmZiAtLWdpdCBhL2x0b3B0aW9ucy5tNCBiL2x0b3B0aW9ucy5tNAoraW5kZXggNWVmMTJjZWQyYTguLjE3Y2ZkNTFjMGIzIDEwMDY0NAorLS0tIGEvbHRvcHRpb25zLm00CisrKysgYi9sdG9wdGlvbnMubTQKK0BAIC04LDcgKzgsNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00CisgCisgIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KKyBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCitkaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00CitpbmRleCBiZjg3Zjc3MTMyZC4uOWM3YjVkNDExODUgMTAwNjQ0CistLS0gYS9sdHZlcnNpb24ubTQKKysrKyBiL2x0dmVyc2lvbi5tNAorQEAgLTcsMTcgKzcsMTcgQEAKKyAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCistIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCisrIyBAY29uZmlndXJlX2lucHV0QAorIAorLSMgc2VyaWFsIDMxMzQgbHR2ZXJzaW9uLm00CisrIyBzZXJpYWwgMzI5MyBsdHZlcnNpb24ubTQKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCisgCistbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi4yLjdhXSkKKy1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMTM0XSkKKyttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjRdKQorK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMyOTNdKQorIAorIEFDX0RFRlVOKFtMVFZFUlNJT05fVkVSU0lPTl0sCistW21hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK1ttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyBfTFRfREVDTCgsIG1hY3JvX3ZlcnNpb24sIDAsIFtXaGljaCByZWxlYXNlIG9mIGxpYnRvb2wubTQgd2FzIHVzZWQ/XSkKKyBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQorIF0pCitkaWZmIC0tZ2l0IGEvbHR+b2Jzb2xldGUubTQgYi9sdH5vYnNvbGV0ZS5tNAoraW5kZXggYmY5MmI1ZTA3OTAuLmM1NzNkYTkwYzVjIDEwMDY0NAorLS0tIGEvbHR+b2Jzb2xldGUubTQKKysrKyBiL2x0fm9ic29sZXRlLm00CitAQCAtNyw3ICs3LDcgQEAKKyAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCistIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAorKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKKyAKKyAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KKyAjCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUgYi9vcGNvZGVzL2NvbmZpZ3VyZQoraW5kZXggNDcyM2RjZGMxZTguLjAwNmNjZGFhNDU4IDEwMDc1NQorLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKKysrKyBiL29wY29kZXMvY29uZmlndXJlCitAQCAtNjgwLDYgKzY4MCw5IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK2FjX2N0X0FSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03OTgsNiArODAxLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfd2Vycm9yCitAQCAtMTQ2Miw2ICsxNDY2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorIAorIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCitAQCAtNTQwMyw4ICs1NDA5LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU0NDQsNyArNTQ1MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYxMzAsOCArNjEzNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02MTgwLDYgKzYxODYsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYxOTYsNiArNjI3NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjM2NCw3ICs2NDQ5LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY1MTgsNiArNjYwNCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY1MzEsMTEgKzY2MzIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY1NTEsNyArNjgwNSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY1NzEsMTEgKzY4MjUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjU5MSw3ICs2ODQ5LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2MTAsNiArNjg2OCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjYyMSwxNiArNjg4Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTY5NzIsOCArNzI5MCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzAwOSw2ICs3MzI3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTcwNTAsNiArNzM2OSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MDYxLDcgKzczOTIsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03MDg3LDggKzc0MTgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03MDk4LDggKzc0MjksOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MTM2LDYgKzc0NjcsMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03MTUyLDYgKzc0OTMsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MzYzLDYgKzc3NDMsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc5MjYsNiArODQyMyw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MDkxLDcgKzg1OTAsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODE4MCw3ICs4NjgwLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NDc4LDggKzg5NzgsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg2NDUsNiArOTE0MywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg3MDcsNyArOTIxMSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NzY0LDEzICs5MjY4LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg4MzEsNiArOTMzOSwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTkxODEsNyArOTY5NCw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkyODAsMTIgKzk3OTQsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTI5OSw4ICs5ODEzLDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkzMTgsOCArOTgzMiw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MzY1LDggKzk4NzksOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQ5Niw3ICsxMDAxMCwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NTA5LDIyICsxMDAyOSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTUzNiw3ICsxMDA2MywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTU0OSwyMiArMTAwODIsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05NjA5LDIwICsxMDE0OSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk2ODMsNyArMTAyNjYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NjkxLDcgKzEwMjc0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTcwNyw3ICsxMDI5MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NzMxLDEwICsxMDMxNCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk4MTMsMjMgKzEwMzk2LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05OTE0LDcgKzEwNTEwLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTkzMyw5ICsxMDUyOSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDUxMSw4ICsxMTEwNyw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDU0NSwxMyArMTExNDIsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNjQzLDcgKzExMjk4LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExNDM5LDcgKzEyMDk0LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE0NDIgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNDgzLDEwICsxMjEzOCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExNTQ1LDcgKzEyMjAwLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE1NDggImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNTg5LDEwICsxMjI0NCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEzNzU2LDEzICsxNDQxMSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzNzc3LDE0ICsxNDQzOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzgxNywxMiArMTQ0ODIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM4NzcsOCArMTQ1NDIsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTEzODg4LDEyICsxNDU1OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTM5MDksNyArMTQ1ODEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xMzk0NSw2ICsxNDYxNiw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTQ3MTAsNyArMTUzODIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE0ODEzLDE5ICsxNTQ4Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNDg1NSw2ICsxNTU1MSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNDg2NCw2ICsxNTU2Niw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTQ5NzgsMTIgKzE1NjgzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE1MDcwLDkgKzE1Nzc1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTUwODgsNiArMTU3OTAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE1MTIwLDIxMCArMTU4MjUsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmM2MzEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOGNiMDEzMTA2YzM3OWU4MWZlNDBjZmRmNDg2ZDk4MDVjOWUyNzZhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xNV0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nCi0gaW5zdGFsbGF0aW9uIGxvY2F0aW9uCi0KLVRoYW5rcyB0byBSUCBmb3IgaGVscGluZyBmaW5kIHRoZSBzb3VyY2UgY29kZSBjYXVzaW5nIHRoZSBpc3N1ZS4KLQotMjAxMC8wOC8xMwotTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmliZXJ0eS9NYWtlZmlsZS5pbiB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCi1pbmRleCAwYmU0NWI0YWU4Li40ODE3NjE2YmIyIDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCi0rKysgYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KLUBAIC0zNjQsNyArMzY0LDggQEAgaW5zdGFsbC1zdHJpcDogaW5zdGFsbAotICMgbXVsdGlsaWItc3BlY2lmaWMgZmxhZ3MsIGl0J3Mgb3ZlcnJpZGRlbiBieSBGTEFHU19UT19QQVNTIGZyb20gdGhlCi0gIyBkZWZhdWx0IG11bHRpbGliLCBzbyB3ZSBoYXZlIHRvIHRha2UgQ0ZMQUdTIGludG8gYWNjb3VudCBhcyB3ZWxsLAotICMgc2luY2UgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIG11bHRpbGliIGZsYWdzLgotLU1VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi0rI01VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi0rTVVMVElPU0RJUiA9ICIiCi0gaW5zdGFsbF90b19saWJkaXI6IGFsbAotIAlpZiB0ZXN0IC1uICIke3RhcmdldF9oZWFkZXJfZGlyfSI7IHRoZW4gXAotIAkJJHtta2luc3RhbGxkaXJzfSAkKERFU1RESVIpJChsaWJkaXIpLyQoTVVMVElPU0RJUik7IFwKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGU5NGFiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gZTM2YTRlMDVmOTAwYmJlNmE4ZDc0NGE5M2YzYTQwN2JjNTVjOTZmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nIGluc3RhbGxhdGlvbgorIGxvY2F0aW9uCisKK1RoYW5rcyB0byBSUCBmb3IgaGVscGluZyBmaW5kIHRoZSBzb3VyY2UgY29kZSBjYXVzaW5nIHRoZSBpc3N1ZS4KKworMjAxMC8wOC8xMworTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmliZXJ0eS9NYWtlZmlsZS5pbiB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCitpbmRleCBmZTczOGQwZGI0Li4yN2Q4MThmMjUzIDEwMDY0NAorLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCisrKysgYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KK0BAIC0zNjUsNyArMzY1LDggQEAgaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorICMgbXVsdGlsaWItc3BlY2lmaWMgZmxhZ3MsIGl0J3Mgb3ZlcnJpZGRlbiBieSBGTEFHU19UT19QQVNTIGZyb20gdGhlCisgIyBkZWZhdWx0IG11bHRpbGliLCBzbyB3ZSBoYXZlIHRvIHRha2UgQ0ZMQUdTIGludG8gYWNjb3VudCBhcyB3ZWxsLAorICMgc2luY2UgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIG11bHRpbGliIGZsYWdzLgorLU1VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrI01VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrTVVMVElPU0RJUiA9ICIiCisgaW5zdGFsbF90b19saWJkaXI6IGFsbAorIAlpZiB0ZXN0IC1uICIke3RhcmdldF9oZWFkZXJfZGlyfSI7IHRoZW4gXAorIAkJJHtta2luc3RhbGxkaXJzfSAkKERFU1RESVIpJChsaWJkaXIpLyQoTVVMVElPU0RJUik7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyNzgyMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzMgKzAsMCBAQAotRnJvbSA5OGY2OGMwODkyYmE0YmJkNTNiMGEwYTRjYmJkZjBiNzE5N2UwMzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xNV0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCi0KLTIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgbGQvCi0gICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgotICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKLSAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQotICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAotICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgotICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KLSAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgotCi0yMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgIGxkLwotICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCi0gICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKLSAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKLSAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KLSAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCi0gICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KLQotMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgotCi0gICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KLSAgICBsZC8KLSAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCi0gICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCi0gICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCi0gICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGQvY29uZmlnLmluICAgIHwgIDMgKysrCi0gbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKLSBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKwotIGxkL2xkLnRleGkgICAgICB8IDEyICsrKysrKysrKysrKwotIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCi0gbGQvbGRsZXguaCAgICAgIHwgIDIgKysKLSBsZC9sZG1haW4uYyAgICAgfCAgMiArKwotIGxkL2xleHN1cC5jICAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSA5IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZy5pbiBiL2xkL2NvbmZpZy5pbgotaW5kZXggZDkzYzliMDgzMC4uNWRhMjc0MmJlYSAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZy5pbgotKysrIGIvbGQvY29uZmlnLmluCi1AQCAtMzEsNiArMzEsOSBAQAotICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KLSAjdW5kZWYgRU5BQkxFX05MUwotIAotKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzICovCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rCi0gLyogQWRkaXRpb25hbCBleHRlbnNpb24gYSBzaGFyZWQgb2JqZWN0IG1pZ2h0IGhhdmUuICovCi0gI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgotIAotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQotaW5kZXggNDNjMzkxYzJiMy4uZmY5ZjZiM2MwMiAxMDA3NTUKLS0tLSBhL2xkL2NvbmZpZ3VyZQotKysrIGIvbGQvY29uZmlndXJlCi1AQCAtODI2LDYgKzgyNiw3IEBAIHdpdGhfbGliX3BhdGgKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZkCi0gd2l0aF9zeXNyb290Ci0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfZ29sZAotIGVuYWJsZV9nb3QKLSBlbmFibGVfY29tcHJlc3NlZF9kZWJ1Z19zZWN0aW9ucwotQEAgLTE0OTAsNiArMTQ5MSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlcwotICAgLS1lbmFibGUtdGFyZ2V0cyAgICAgICAgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi0gICAtLWVuYWJsZS02NC1iaXQtYmZkICAgICA2NC1iaXQgc3VwcG9ydCAob24gaG9zdHMgd2l0aCBuYXJyb3dlciB3b3JkIHNpemVzKQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtZ29sZFs9QVJHXSAgICAgYnVpbGQgZ29sZCBbQVJHPXtkZWZhdWx0LHllcyxub31dCi0gICAtLWVuYWJsZS1nb3Q9PHR5cGU+ICAgICBHT1QgaGFuZGxpbmcgc2NoZW1lICh0YXJnZXQsIHNpbmdsZSwgbmVnYXRpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWdvdCkKLUBAIC0xNjYxOCw2ICsxNjYyMSwxOSBAQCBmaQotIAotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nb2xkIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKLWluZGV4IGQzMzVmMjEwOTEuLjdmNjkyZDkzODcgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUuYWMKLSsrKyBiL2xkL2NvbmZpZ3VyZS5hYwotQEAgLTk0LDYgKzk0LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQotIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVCkKLSBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgWzFdLAotKyAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gZG5sIFVzZSAtLWVuYWJsZS1nb2xkIHRvIGRlY2lkZSBpZiB0aGlzIGxpbmtlciBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCi0gZG5sICJpbnN0YWxsX2FzX2RlZmF1bHQiIGlzIHNldCB0byBmYWxzZSBpZiBnb2xkIGlzIHRoZSBkZWZhdWx0IGxpbmtlci4KLSBkbmwgImluc3RhbGxlZF9saW5rZXIiIGlzIHRoZSBpbnN0YWxsZWQgQkZEIGxpbmtlciBuYW1lLgotZGlmZiAtLWdpdCBhL2xkL2xkLmggYi9sZC9sZC5oCi1pbmRleCBiOTdkOTc3ZjM3Li5mM2JiZDJkNTVkIDEwMDY0NAotLS0tIGEvbGQvbGQuaAotKysrIGIvbGQvbGQuaAotQEAgLTE4MCw2ICsxODAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgICAgIGluIHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KLSAgIGJmZF9ib29sZWFuIGZvcmNlX2dyb3VwX2FsbG9jYXRpb247Ci0gCi0rICAvKiBJZiBUUlVFICh0aGUgZGVmYXVsdCkgd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbgotKyAgICAgY3Jvc3MgbGlua2luZy4gICovCi0rICBiZmRfYm9vbGVhbiBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotKwotKyAgLyogSWYgVFJVRSAoZGVmYXVsdCBGQUxTRSkgZ2l2ZSBhbiBlcnJvciBmb3IgdXNlcyBvZiBzeXN0ZW0KLSsgICAgIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZyBpbnN0ZWFkIG9mIGEgd2FybmluZy4gICovCi0rICBiZmRfYm9vbGVhbiBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotKwotICAgLyogQmlnIG9yIGxpdHRsZSBlbmRpYW4gYXMgc2V0IG9uIGNvbW1hbmQgbGluZS4gICovCi0gICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKLSAKLWRpZmYgLS1naXQgYS9sZC9sZC50ZXhpIGIvbGQvbGQudGV4aQotaW5kZXggNTE3OWFmM2UwZS4uZjc4YmY3NDY4MiAxMDA2NDQKLS0tLSBhL2xkL2xkLnRleGkKLSsrKyBiL2xkL2xkLnRleGkKLUBAIC0yNTI0LDYgKzI1MjQsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCi0gCi0gUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKLSBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KLSsKLStAa2luZGV4IC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BpdGVtIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBzdWNoIGFzCi0rQGZpbGV7L3Vzci9saWJ9IHdoZW4gY3Jvc3MgbGlua2luZy4gIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UKLStpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0Ci0rbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLStAa2luZGV4IC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BpdGVtIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0dpdmUgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcgZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcKLStzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nLgotIEBlbmQgdGFibGUKLSAKLSBAYyBtYW4gZW5kCi1kaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYwotaW5kZXggZmNhZGMwOGM3My4uNjNlMjk1Y2U4YSAxMDA2NDQKLS0tLSBhL2xkL2xkZmlsZS5jCi0rKysgYi9sZC9sZGZpbGUuYwotQEAgLTExNiw2ICsxMTYsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCi0gICAgIG5ld19kaXJzLT5uYW1lID0gY29uY2F0IChsZF9zeXNyb290LCBuYW1lICsgc3RybGVuICgiJFNZU1JPT1QiKSwgKGNvbnN0IGNoYXIgKikgTlVMTCk7Ci0gICBlbHNlCi0gICAgIG5ld19kaXJzLT5uYW1lID0geHN0cmR1cCAobmFtZSk7Ci0rCi0rI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rICBpZiAoY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSsgICYmICgoIXN0cm5jbXAgKG5hbWUsICIvbGliIiwgNCkpCi0rICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9saWIiLCA4KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xvY2FsL2xpYiIsIDE0KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL1gxMVI2L2xpYiIsIDE0KSkpKQotKyAgIHsKLSsgICAgIGlmIChjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKLSsgICAgICAgZWluZm8gKF8oIiVYJVA6IGVycm9yOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKLSsgICAgIGVsc2UKLSsgICAgICAgZWluZm8gKF8oIiVQOiB3YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKLSsgICB9Ci0rI2VuZGlmCi0rCi0gfQotIAotIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KLWRpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAotaW5kZXggMzI4NTNkZWJlNC4uODEzNTM2MWM0OSAxMDA2NDQKLS0tLSBhL2xkL2xkbGV4LmgKLSsrKyBiL2xkL2xkbGV4LmgKLUBAIC0xNDgsNiArMTQ4LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCi0gICBPUFRJT05fUkVRVUlSRV9ERUZJTkVEX1NZTUJPTCwKLSAgIE9QVElPTl9PUlBIQU5fSEFORExJTkcsCi0gICBPUFRJT05fRk9SQ0VfR1JPVVBfQUxMT0NBVElPTiwKLSsgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAotKyAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCi0gfTsKLSAKLSAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KLWRpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCi1pbmRleCA3N2NkYmQwZGQyLi43MjU1MTJmMTI2IDEwMDY0NAotLS0tIGEvbGQvbGRtYWluLmMKLSsrKyBiL2xkL2xkbWFpbi5jCi1AQCAtMjY5LDYgKzI2OSw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgIGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoID0gVFJVRTsKLSAgIGNvbW1hbmRfbGluZS53YXJuX3NlYXJjaF9taXNtYXRjaCA9IFRSVUU7Ci0gICBjb21tYW5kX2xpbmUuY2hlY2tfc2VjdGlvbl9hZGRyZXNzZXMgPSAtMTsKLSsgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKLSsgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7Ci0gCi0gICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0gICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCi1kaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYwotaW5kZXggODhlODVjNzNmNC4uZWVkMWI3MTQ1NiAxMDA2NDQKLS0tLSBhL2xkL2xleHN1cC5jCi0rKysgYi9sZC9sZXhzdXAuYwotQEAgLTU0Myw2ICs1NDMsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KLSAgIHsgeyJvcnBoYW4taGFuZGxpbmciLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX09SUEhBTl9IQU5ETElOR30sCi0gICAgICdcMCcsIE5fKCI9TU9ERSIpLCBOXygiQ29udHJvbCBob3cgb3JwaGFuIHNlY3Rpb25zIGFyZSBoYW5kbGVkLiIpLAotICAgICBUV09fREFTSEVTIH0sCi0rICB7IHsibm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAotKyAgICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAotKyAgICAnXDAnLCBOVUxMLCBOXygiRG8gbm90IHdhcm4gZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCi0rICAgIFRXT19EQVNIRVMgfSwKLSsgIHsgeyJlcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCi0rICAgICsgICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKLSsgICAgJ1wwJywgTlVMTCwgTl8oIkdpdmUgYW4gZXJyb3IgZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCi0rICAgIFRXT19EQVNIRVMgfSwKLSB9OwotIAotICNkZWZpbmUgT1BUSU9OX0NPVU5UIEFSUkFZX1NJWkUgKGxkX29wdGlvbnMpCi1AQCAtMTU3Nyw2ICsxNTg1LDE0IEBAIHBhcnNlX2FyZ3MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKiphcmd2KQotIAkgICAgZWluZm8gKF8oIiVGJVA6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIgotIAkJICAgICAiIFwiLS1vcnBoYW4taGFuZGxpbmdcIlxuIikpOwotIAkgIGJyZWFrOwotKwotKwljYXNlIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgotKwkgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6Ci0rCSAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOwotKwkgIGJyZWFrOwotIAl9Ci0gICAgIH0KLSAKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmIxZTdhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDJjZDU2MTNhODZmODc3MmY5ZDdmMTg4NTMyNzE4MzYzNjY4ZWQ5OWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQyOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIEZpeCBycGF0aCBpbiBsaWJ0b29sIHdoZW4gc3lzcm9vdCBpcyBlbmFibGVkCi0KLUVuYWJsaW5nIHN5c3Jvb3Qgc3VwcG9ydCBpbiBsaWJ0b29sIGV4cG9zZWQgYSBidWcgd2hlcmUgdGhlIGZpbmFsCi1saWJyYXJ5IGhhZCBhbiBSUEFUSCBlbmNvZGVkIGludG8gaXQgd2hpY2ggc3RpbGwgcG9pbnRlZCB0byB0aGUKLXN5c3Jvb3QuIFRoaXMgd29ya3MgYXJvdW5kIHRoZSBpc3N1ZSB1bnRpbCBpdCBnZXRzIHNvcnRlZCBvdXQKLXVwc3RyZWFtLgotCi1GaXggc3VnZ2VzdGVkIGJ5IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggNzBlODU2ZTA2NS4uMTFlZTY4NGNjYyAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtODAzNSw5ICs4MDM1LDExIEBAIEVPRgotIAkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKLSAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KLSAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotKwkJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSsJCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgotKwkJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLS0JCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotLQkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotIAkJZWxzZQotQEAgLTg3NzAsNiArODc3MiwxMCBAQCBFT0YKLSAgICAgICBoYXJkY29kZV9saWJkaXJzPQotICAgICAgIGZvciBsaWJkaXIgaW4gJGNvbXBpbGVfcnBhdGggJGZpbmFsaXplX3JwYXRoOyBkbwotIAlpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSsJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKLSsJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFhODExMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApAQCAtMCwwICsxLDI2OSBAQAorRnJvbSA3YjI0ZjgxZTA0YzlkMDBkOTZkZTdkYmQyNTBiZWFkZTZkMmM2ZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCisKKzIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgbGQvCisgICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgorICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKKyAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQorICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAorICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgorICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KKyAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgorCisyMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgIGxkLworICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCisgICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKKyAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKKyAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KKyAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCisgICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KKworMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgorCisgICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisgICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KKyAgICBsZC8KKyAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCisgICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCisgICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCisgICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvY29uZmlnLmluICAgIHwgIDMgKysrCisgbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKworIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKKyBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKworIGxkL2xkLnRleGkgICAgICB8IDEyICsrKysrKysrKysrKworIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCisgbGQvbGRsZXguaCAgICAgIHwgIDIgKysKKyBsZC9sZG1haW4uYyAgICAgfCAgMiArKworIGxkL2xleHN1cC5jICAgICB8IDE1ICsrKysrKysrKysrKysrKworIDkgZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlnLmluIGIvbGQvY29uZmlnLmluCitpbmRleCBkOTNjOWIwODMwLi41ZGEyNzQyYmVhIDEwMDY0NAorLS0tIGEvbGQvY29uZmlnLmluCisrKysgYi9sZC9jb25maWcuaW4KK0BAIC0zMSw2ICszMSw5IEBACisgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLworICN1bmRlZiBFTkFCTEVfTkxTCisgCisrLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMgKi8KKysjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysKKyAvKiBBZGRpdGlvbmFsIGV4dGVuc2lvbiBhIHNoYXJlZCBvYmplY3QgbWlnaHQgaGF2ZS4gKi8KKyAjdW5kZWYgRVhUUkFfU0hMSUJfRVhURU5TSU9OCisgCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCitpbmRleCA4MTExMzRhNTAzLi5mOGMxN2MxOWFlIDEwMDc1NQorLS0tIGEvbGQvY29uZmlndXJlCisrKysgYi9sZC9jb25maWd1cmUKK0BAIC04MjYsNiArODI2LDcgQEAgd2l0aF9saWJfcGF0aAorIGVuYWJsZV90YXJnZXRzCisgZW5hYmxlXzY0X2JpdF9iZmQKKyB3aXRoX3N5c3Jvb3QKKytlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcworIGVuYWJsZV9nb2xkCisgZW5hYmxlX2dvdAorIGVuYWJsZV9jb21wcmVzc2VkX2RlYnVnX3NlY3Rpb25zCitAQCAtMTQ5MSw2ICsxNDkyLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCisgICAtLWVuYWJsZS10YXJnZXRzICAgICAgICBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKKyAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgICAgIDY0LWJpdCBzdXBwb3J0IChvbiBob3N0cyB3aXRoIG5hcnJvd2VyIHdvcmQgc2l6ZXMpCisrICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzCisgICAtLWVuYWJsZS1nb2xkWz1BUkddICAgICBidWlsZCBnb2xkIFtBUkc9e2RlZmF1bHQseWVzLG5vfV0KKyAgIC0tZW5hYmxlLWdvdD08dHlwZT4gICAgIEdPVCBoYW5kbGluZyBzY2hlbWUgKHRhcmdldCwgc2luZ2xlLCBuZWdhdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpZ290KQorQEAgLTE1Nzg4LDYgKzE1NzkxLDE5IEBAIGZpCisgCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKytlbHNlCisrICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubworK2ZpCisrCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdvbGQgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7ZW5hYmxlX2dvbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgZW5hYmxldmFsPSRlbmFibGVfZ29sZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS5hYyBiL2xkL2NvbmZpZ3VyZS5hYworaW5kZXggYjVlODQ5ZDg0YS4uMjJlMDIyZWMwMyAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS5hYworKysrIGIvbGQvY29uZmlndXJlLmFjCitAQCAtOTQsNiArOTQsMTYgQEAgQUNfU1VCU1QodXNlX3N5c3Jvb3QpCisgQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UKQorIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUpCisgCisrQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3Rvcmllc10pLCwKKysgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQorK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAorKyAgICAgICBbMV0sCisrICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3Rvcmllc10pCisrZmkKKysKKyBkbmwgVXNlIC0tZW5hYmxlLWdvbGQgdG8gZGVjaWRlIGlmIHRoaXMgbGlua2VyIHNob3VsZCBiZSB0aGUgZGVmYXVsdC4KKyBkbmwgImluc3RhbGxfYXNfZGVmYXVsdCIgaXMgc2V0IHRvIGZhbHNlIGlmIGdvbGQgaXMgdGhlIGRlZmF1bHQgbGlua2VyLgorIGRubCAiaW5zdGFsbGVkX2xpbmtlciIgaXMgdGhlIGluc3RhbGxlZCBCRkQgbGlua2VyIG5hbWUuCitkaWZmIC0tZ2l0IGEvbGQvbGQuaCBiL2xkL2xkLmgKK2luZGV4IDcxZmQ3ODEyNjcuLjVjNzg0MzEwMGIgMTAwNjQ0CistLS0gYS9sZC9sZC5oCisrKysgYi9sZC9sZC5oCitAQCAtMTY2LDYgKzE2NiwxNCBAQCB0eXBlZGVmIHN0cnVjdAorICAgICAgaW4gdGhlIGxpbmtlciBzY3JpcHQuICAqLworICAgYmZkX2Jvb2xlYW4gZm9yY2VfZ3JvdXBfYWxsb2NhdGlvbjsKKyAKKysgIC8qIElmIFRSVUUgKHRoZSBkZWZhdWx0KSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuCisrICAgICBjcm9zcyBsaW5raW5nLiAgKi8KKysgIGJmZF9ib29sZWFuIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrCisrICAvKiBJZiBUUlVFIChkZWZhdWx0IEZBTFNFKSBnaXZlIGFuIGVycm9yIGZvciB1c2VzIG9mIHN5c3RlbQorKyAgICAgZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nIGluc3RlYWQgb2YgYSB3YXJuaW5nLiAgKi8KKysgIGJmZF9ib29sZWFuIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrCisgICAvKiBCaWcgb3IgbGl0dGxlIGVuZGlhbiBhcyBzZXQgb24gY29tbWFuZCBsaW5lLiAgKi8KKyAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOworIAorZGlmZiAtLWdpdCBhL2xkL2xkLnRleGkgYi9sZC9sZC50ZXhpCitpbmRleCBlYjdiY2I5OTMzLi4zYzczZDQ0NWEwIDEwMDY0NAorLS0tIGEvbGQvbGQudGV4aQorKysrIGIvbGQvbGQudGV4aQorQEAgLTI1NTEsNiArMjU1MSwxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KKyAKKyBQYXNzaW5nIEBjb2Rle25vbmV9IGZvciBAdmFye3N0eWxlfSBkaXNhYmxlcyB0aGUgc2V0dGluZyBmcm9tIGFueQorIEBjb2Rley0tYnVpbGQtaWR9IG9wdGlvbnMgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lLgorKworK0BraW5kZXggLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQGl0ZW0gLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIHN1Y2ggYXMKKytAZmlsZXsvdXNyL2xpYn0gd2hlbiBjcm9zcyBsaW5raW5nLiAgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZQorK2luIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoIGRpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QKKytsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgorKworK0BraW5kZXggLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQGl0ZW0gLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrR2l2ZSBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZyBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZworK3N5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcuCisgQGVuZCB0YWJsZQorIAorIEBjIG1hbiBlbmQKK2RpZmYgLS1naXQgYS9sZC9sZGZpbGUuYyBiL2xkL2xkZmlsZS5jCitpbmRleCA0MTFmN2RkZjk3Li4xN2RiMTZjMmNjIDEwMDY0NAorLS0tIGEvbGQvbGRmaWxlLmMKKysrKyBiL2xkL2xkZmlsZS5jCitAQCAtMTE3LDYgKzExNywyMyBAQCBsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgYmZkX2Jvb2xlYW4gY21kbGluZSkKKyAgICAgbmV3X2RpcnMtPm5hbWUgPSBjb25jYXQgKGxkX3N5c3Jvb3QsIG5hbWUgKyBzdHJsZW4gKCIkU1lTUk9PVCIpLCAoY29uc3QgY2hhciAqKSBOVUxMKTsKKyAgIGVsc2UKKyAgICAgbmV3X2RpcnMtPm5hbWUgPSB4c3RyZHVwIChuYW1lKTsKKysKKysjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysgIGlmIChjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcworKyAgJiYgKCghc3RybmNtcCAobmFtZSwgIi9saWIiLCA0KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xpYiIsIDgpKQorKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbG9jYWwvbGliIiwgMTQpKQorKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvWDExUjYvbGliIiwgMTQpKSkpCisrICAgeworKyAgICAgaWYgKGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQorKyAgICAgICBlaW5mbyAoXygiJVglUDogZXJyb3I6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOworKyAgICAgZWxzZQorKyAgICAgICBlaW5mbyAoXygiJVA6IHdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOworKyAgIH0KKysjZW5kaWYKKysKKyB9CisgCisgLyogVHJ5IHRvIG9wZW4gYSBCRkQgZm9yIGEgbGFuZ19pbnB1dF9zdGF0ZW1lbnQuICAqLworZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCitpbmRleCA1Mjg3ZjE5YTdmLi41NTA5NmU0ZmM5IDEwMDY0NAorLS0tIGEvbGQvbGRsZXguaAorKysrIGIvbGQvbGRsZXguaAorQEAgLTE1MCw2ICsxNTAsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKKyAgIE9QVElPTl9GT1JDRV9HUk9VUF9BTExPQ0FUSU9OLAorICAgT1BUSU9OX1BSSU5UX01BUF9ESVNDQVJERUQsCisgICBPUFRJT05fTk9fUFJJTlRfTUFQX0RJU0NBUkRFRCwKKysgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAorKyAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCisgfTsKKyAKKyAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KK2RpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCitpbmRleCBkYTFhZDE3NzYzLi4xMmQwYjA3ZDhhIDEwMDY0NAorLS0tIGEvbGQvbGRtYWluLmMKKysrKyBiL2xkL2xkbWFpbi5jCitAQCAtMjc0LDYgKzI3NCw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgIGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoID0gVFJVRTsKKyAgIGNvbW1hbmRfbGluZS53YXJuX3NlYXJjaF9taXNtYXRjaCA9IFRSVUU7CisgICBjb21tYW5kX2xpbmUuY2hlY2tfc2VjdGlvbl9hZGRyZXNzZXMgPSAtMTsKKysgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKKysgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7CisgCisgICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCitkaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYworaW5kZXggM2QxNWNjNDkxZC4uMGU4YjRmMmI3YSAxMDA2NDQKKy0tLSBhL2xkL2xleHN1cC5jCisrKysgYi9sZC9sZXhzdXAuYworQEAgLTU1MCw2ICs1NTAsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KKyAgIHsgeyJuby1wcmludC1tYXAtZGlzY2FyZGVkIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9OT19QUklOVF9NQVBfRElTQ0FSREVEfSwKKyAgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCBzaG93IGRpc2NhcmRlZCBzZWN0aW9ucyBpbiBtYXAgZmlsZSBvdXRwdXQiKSwKKyAgICAgVFdPX0RBU0hFUyB9LAorKyAgeyB7Im5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKKysgICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKKysgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCB3YXJuIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAorKyAgICBUV09fREFTSEVTIH0sCisrICB7IHsiZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAorKyAgICArICAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCisrICAgICdcMCcsIE5VTEwsIE5fKCJHaXZlIGFuIGVycm9yIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAorKyAgICBUV09fREFTSEVTIH0sCisgfTsKKyAKKyAjZGVmaW5lIE9QVElPTl9DT1VOVCBBUlJBWV9TSVpFIChsZF9vcHRpb25zKQorQEAgLTE2MDMsNiArMTYxMSwxMyBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAJY2FzZSBPUFRJT05fUFJJTlRfTUFQX0RJU0NBUkRFRDoKKyAJICBjb25maWcucHJpbnRfbWFwX2Rpc2NhcmRlZCA9IFRSVUU7CisrCisrCWNhc2UgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6CisrCSAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBGQUxTRTsKKysJICBicmVhazsKKysKKysJY2FzZSBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKKysJICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7CisgCSAgYnJlYWs7CisgCX0KKyAgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNGFjNzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gOTU4YTQ5NzQ5Yjc3MjY2MGQzYmFmYjgwNzQ4ODI5Y2JhNmJlZDA2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDQ6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xNV0gQ2hhbmdlIGRlZmF1bHQgZW11bGF0aW9uIGZvciBtaXBzNjQqLSotbGludXgKLQotd2UgY2hhbmdlIHRoZSBkZWZhdWx0IGVtdWxhdGlvbnMgdG8gYmUgTjY0IGluc3RlYWQgb2YgTjMyCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIE9FIGNvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBiZmQvY29uZmlnLmJmZCAgIHwgOCArKysrLS0tLQotIGxkL2NvbmZpZ3VyZS50Z3QgfCA4ICsrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCAwZTFkZGI2NTljLi5kNGY1MGYwYThkIDEwMDY0NAotLS0tIGEvYmZkL2NvbmZpZy5iZmQKLSsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtOTE5LDEyICs5MTksMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKLSAgICAgOzsKLSAgIG1pcHM2NCplbC0qLWxpbnV4KikKLS0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9sZV92ZWMKLS0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgotKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfbGVfdmVjCi0rICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzNjQqLSotbGludXgqKQotLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2JlX3ZlYwotLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0rICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9iZV92ZWMKLSsgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKLSAgICAgOzsKLSAgIG1pcHMqZWwtKi1saW51eCopCi0gICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggYmViYTE3ZWY1MS4uOTE3YmU2ZjhlYiAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC00NjgsMTEgKzQ2OCwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcwotIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcwotIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyZWxtaXB2eHdvcmtzIiA7OwotIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MgOzsKLS1taXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXBuMzIKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGx0c21pcCBlbGY2NGJ0c21pcCIKLSttaXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRsdHNtaXAKLSsJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGJ0c21pcCIKLSAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKLS1taXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwbjMyCi0tCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiCi0rbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGJ0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0bHRzbWlwIgotIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwotIG1pcHMqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXAKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZjFhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gNzBmM2YyZDllOTEyZWE3NzdmYTExM2UwMmNkYmMzNDY1YTY2ZTQwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDI6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHJwYXRoIGluIGxpYnRvb2wgd2hlbiBzeXNyb290IGlzIGVuYWJsZWQKKworRW5hYmxpbmcgc3lzcm9vdCBzdXBwb3J0IGluIGxpYnRvb2wgZXhwb3NlZCBhIGJ1ZyB3aGVyZSB0aGUgZmluYWwKK2xpYnJhcnkgaGFkIGFuIFJQQVRIIGVuY29kZWQgaW50byBpdCB3aGljaCBzdGlsbCBwb2ludGVkIHRvIHRoZQorc3lzcm9vdC4gVGhpcyB3b3JrcyBhcm91bmQgdGhlIGlzc3VlIHVudGlsIGl0IGdldHMgc29ydGVkIG91dAordXBzdHJlYW0uCisKK0ZpeCBzdWdnZXN0ZWQgYnkgUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA3MGU4NTZlMDY1Li4xMWVlNjg0Y2NjIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC04MDM1LDkgKzgwMzUsMTEgQEAgRU9GCisgCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbworIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCQkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorKwkJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCisrCQkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorLQkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCistCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisgCQllbHNlCitAQCAtODc3MCw2ICs4NzcyLDEwIEBAIEVPRgorICAgICAgIGhhcmRjb2RlX2xpYmRpcnM9CisgICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCisgCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisrCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBjNWVkNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOTMgKzAsMCBAQAotRnJvbSBlNGEwY2QzMGM3ZTkzMzRlZDUwN2M5MzAxNGE4YjJkMTMxNWZmOTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xNV0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUAotCi1QYXRjaCBGcm9tOiBOZWJ1IFBoaWxpcHMgPG5waGlsaXBzQG5ldGxvZ2ljbWljcm8uY29tPgotCi1Vc2luZyB0aGUgbWlwc2lzYTY0cjJubG0gdGFyZ2V0LCBhZGQgc3VwcG9ydCBmb3IgWExQIGZyb20KLU5ldGxvZ2ljLiBBbHNvLCB1cGRhdGUgdmVuZG9yIG5hbWUgdG8gTkxNIHdoZXJldmVyIGFwcGxpY2FibGUuCi0KLVVzZSAweDAwMDAwMDgwIGZvciBJTlNOX1hMUCwgdGhlIHZhbHVlIDB4MDAwMDAwNDAgaGFzIGFscmVhZHkgYmVlbgotYXNzaWduZWQgdG8gSU5TTl9PQ1RFT04zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxiYW9zaGFuLnBhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJmZC9hb3V0eC5oICAgICAgICAgICB8ICAxICsKLSBiZmQvYXJjaHVyZXMuYyAgICAgICAgfCAgMSArCi0gYmZkL2JmZC1pbjIuaCAgICAgICAgIHwgIDEgKwotIGJmZC9jb25maWcuYmZkICAgICAgICB8ICA1ICsrKysrCi0gYmZkL2NwdS1taXBzLmMgICAgICAgIHwgIDYgKysrKy0tCi0gYmZkL2VsZnh4LW1pcHMuYyAgICAgIHwgIDggKysrKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgICAgfCAgMSArCi0gZ2FzL2NvbmZpZy90Yy1taXBzLmMgIHwgIDQgKysrLQotIGdhcy9jb25maWd1cmUgICAgICAgICB8ICAzICsrKwotIGluY2x1ZGUvZWxmL21pcHMuaCAgICB8ICAxICsKLSBpbmNsdWRlL29wY29kZS9taXBzLmggfCAgNiArKysrKysKLSBsZC9jb25maWd1cmUudGd0ICAgICAgfCAgMiArKwotIG9wY29kZXMvbWlwcy1kaXMuYyAgICB8IDEyICsrKysrLS0tLS0tLQotIG9wY29kZXMvbWlwcy1vcGMuYyAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxNCBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9hb3V0eC5oIGIvYmZkL2FvdXR4LmgKLWluZGV4IGU1ZDhkY2YzOTAuLjJjYzc0YTJkNjEgMTAwNjQ0Ci0tLS0gYS9iZmQvYW91dHguaAotKysrIGIvYmZkL2FvdXR4LmgKLUBAIC03OTksNiArNzk5LDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCi0gCWNhc2UgYmZkX21hY2hfbWlwc2lzYTY0cjY6Ci0gCWNhc2UgYmZkX21hY2hfbWlwc19zYjE6Ci0gCWNhc2UgYmZkX21hY2hfbWlwc194bHI6Ci0rCWNhc2UgYmZkX21hY2hfbWlwc194bHA6Ci0gCSAgLyogRklYTUU6IFRoZXNlIHNob3VsZCBiZSBNSVBTMywgTUlQUzQsIE1JUFMxNiwgTUlQUzMyLCBldGMuICAqLwotIAkgIGFyY2hfZmxhZ3MgPSBNX01JUFMyOwotIAkgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKLWluZGV4IDY0N2NmMGQ4ZDQuLjdlMWQwYzgxMGYgMTAwNjQ0Ci0tLS0gYS9iZmQvYXJjaHVyZXMuYwotKysrIGIvYmZkL2FyY2h1cmVzLmMKLUBAIC0xODUsNiArMTg1LDcgQEAgREVTQ1JJUFRJT04KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMJCTY1MDMKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscgkJODg3NjgyCSB7KiBkZWNpbWFsICdYTFInLiAgKn0KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyCTczNjU1MAkgeyogZGVjaW1hbCAnSUEyJy4gICp9Ci0rLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcuICAqfQotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMgkJMzIKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMgkJMzMKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMwkJMzQKLWRpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAotaW5kZXggZTI1ZGE1MGFhZi4uZTI1MWQ3ZTdhYSAxMDA2NDQKLS0tLSBhL2JmZC9iZmQtaW4yLmgKLSsrKyBiL2JmZC9iZmQtaW4yLmgKLUBAIC0yMDg0LDYgKzIwODQsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJy4gICovCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgLyogZGVjaW1hbCAnSUEyJy4gICovCi0rI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgLyogZGVjaW1hbCAnWExQJy4gICovCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMwotICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0Ci1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggY2M2NTU0NzU4OC4uMzYxNGZmNzlkNCAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWcuYmZkCi0rKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTkwMiw2ICs5MDIsMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9sZV92ZWMKLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2JlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKLSAgICAgOzsKLSsgIG1pcHNpc2E2NCotKi1lbGYqKQotKwl0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfYmVfdmVjCi0rCXRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0rCXdhbnQ2ND10cnVlCi0rCTs7Ci0gICBtaXBzKi0qLWVsZiogfCBtaXBzKi0qLXJ0ZW1zKiB8IG1pcHMqLSotd2luZGlzcyB8IG1pcHMqLSotbm9uZSkKLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9iZV92ZWMKLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKLWRpZmYgLS1naXQgYS9iZmQvY3B1LW1pcHMuYyBiL2JmZC9jcHUtbWlwcy5jCi1pbmRleCBiMzU5NDkxMzA1Li42MWEzZTdhYWNhIDEwMDY0NAotLS0tIGEvYmZkL2NwdS1taXBzLmMKLSsrKyBiL2JmZC9jcHUtbWlwcy5jCi1AQCAtMTA3LDcgKzEwNyw4IEBAIGVudW0KLSAgIElfbWlwc29jdGVvbjMsCi0gICBJX3hsciwKLSAgIElfaW50ZXJhcHRpdl9tcjIsCi0tICBJX21pY3JvbWlwcwotKyAgSV9taWNyb21pcHMsCi0rICBJX3hscAotIH07Ci0gCi0gI2RlZmluZSBOTihpbmRleCkgKCZhcmNoX2luZm9fc3RydWN0WyhpbmRleCkgKyAxXSkKLUBAIC0xNjIsNyArMTYzLDggQEAgc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQotICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwJICBGQUxTRSwgTk4oSV94bHIpKSwKLSAgIE4gKDMyLCAzMiwgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiwgIm1pcHM6aW50ZXJhcHRpdi1tcjIiLCBGQUxTRSwKLSAgICAgIE5OKElfaW50ZXJhcHRpdl9tcjIpKSwKLS0gIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSwwKQotKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywibWlwczptaWNyb21pcHMiLEZBTFNFLE5OKElfbWljcm9taXBzKSksCi0rICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxwLCAibWlwczp4bHAiLCAgICAgIEZBTFNFLCAwKQotIH07Ci0gCi0gLyogVGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlIGlzIG1pcHM6MzAwMCwgYnV0IHdpdGggYSBtYWNoaW5lIG51bWJlciBvZgotZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1taXBzLmMgYi9iZmQvZWxmeHgtbWlwcy5jCi1pbmRleCA1OTk4YmM0M2E4Li4wZDU3OTUyMjJiIDEwMDY0NAotLS0tIGEvYmZkL2VsZnh4LW1pcHMuYwotKysrIGIvYmZkL2VsZnh4LW1pcHMuYwotQEAgLTY5MTksNiArNjkxOSw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCi0gICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6Ci0gICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjI7Ci0gCi0rICAgIGNhc2UgRV9NSVBTX01BQ0hfWExQOgotKyAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscDsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQotIAl7Ci1AQCAtMTIxOTksNiArMTIyMDIsMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCi0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7Ci0gICAgICAgYnJlYWs7Ci0gCi0rCWNhc2UgYmZkX21hY2hfbWlwc194bHA6Ci0rCSAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX1hMUDsKLSsJICBicmVhazsKLSsKLSAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6Ci0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTQyMTQsNiArMTQyMjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9Ci0gICB7IGJmZF9tYWNoX21pcHNfZ3MyNjRlLCBiZmRfbWFjaF9taXBzX2dzNDY0ZSB9LAotICAgeyBiZmRfbWFjaF9taXBzX2dzNDY0ZSwgYmZkX21hY2hfbWlwc19nczQ2NCB9LAotICAgeyBiZmRfbWFjaF9taXBzX2dzNDY0LCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAotKyAgeyBiZmRfbWFjaF9taXBzX3hscCwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKLSAKLSAgIC8qIE1JUFM2NCBleHRlbnNpb25zLiAgKi8KLSAgIHsgYmZkX21hY2hfbWlwc2lzYTY0cjIsIGJmZF9tYWNoX21pcHNpc2E2NCB9LAotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggYjEzZWI2YTQzYi4uOWRmMzc0MjY4MiAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMzQxMiw2ICszNDEyLDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKEZpbGVkYXRhICogZmlsZWRhdGEsIHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKLSAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOiAgc3RyY2F0IChidWYsICIsIGludGVyYXB0aXYtbXIyIik7IGJyZWFrOwotKwkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFA6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxwIik7IGJyZWFrOwotIAkgICAgY2FzZSAwOgotIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKLSAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQotZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLWluZGV4IGFlNTU5MDQyMjkuLmQ2ODgyNzEyZjUgMTAwNjQ0Ci0tLS0gYS9nYXMvY29uZmlnL3RjLW1pcHMuYwotKysrIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLUBAIC01NTQsNiArNTU0LDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7Ci0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1JNNzAwMCAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9WUjU1MDAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICkKLSAKLSAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKLUBAIC01ODMsNiArNTg0LDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7Ci0gICAgICYmIG1pcHNfb3B0cy5pc2EgIT0gSVNBX01JUFMzKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9SNDMwMCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICkKLSAKLSAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKLUBAIC0xOTg2Nyw3ICsxOTg2OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQotICAgLyogQnJvYWRjb20gWExQLgotICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCi0gICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLwotLSAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFIgfSwKLSsgIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExQIH0sCi0gCi0gICAvKiBNSVBTIDY0IFJlbGVhc2UgNiAqLwotICAgeyAiaTY0MDAiLAkgICAgICAwLCBBU0VfTVNBLAkJSVNBX01JUFM2NFI2LCBDUFVfTUlQUzY0UjZ9LAotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCBhODJmZGU3ZmE4Li5hZmM3N2MzNDdhIDEwMDc1NQotLS0tIGEvZ2FzL2NvbmZpZ3VyZQotKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTEzMzY0LDYgKzEzMzY0LDkgQEAgX0FDRU9GCi0gCSAgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsKQotIAkgICAgbWlwc19jcHU9bWlwczY0cjYKLSAJICAgIDs7Ci0rCSAgbWlwc2lzYTY0cjJubG0gfCBtaXBzaXNhNjRyMm5sbWVsKQotKwkJbWlwc19jcHU9eGxwCi0rCQk7OwotIAkgIG1pcHN0eDM5IHwgbWlwc3R4MzllbCkKLSAJICAgIG1pcHNfY3B1PXIzOTAwCi0gCSAgICA7OwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL21pcHMuaCBiL2luY2x1ZGUvZWxmL21pcHMuaAotaW5kZXggYjc2ZDQ1MGFlMi4uN2NkZGIzNjVhZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAotKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1AQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQotICNkZWZpbmUgRV9NSVBTX01BQ0hfU0IxICAgICAgICAgMHgwMDhhMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OCTB4MDA4YjAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX1hMUiAgICAgCTB4MDA4YzAwMDAKLSsjZGVmaW5lIEVfTUlQU19NQUNIX1hMUCAgICAgICAgIDB4MDA4ZjAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjIJMHgwMDhkMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMwkweDAwOGUwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF81NDAwCTB4MDA5MTAwMDAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL29wY29kZS9taXBzLmggYi9pbmNsdWRlL29wY29kZS9taXBzLmgKLWluZGV4IGFiZDUyYzg5ODAuLjUzYjY3NTJhMWMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL29wY29kZS9taXBzLmgKLSsrKyBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotQEAgLTEyNjAsNiArMTI2MCw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKLSAjZGVmaW5lIElOU05fWExSICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCi0gLyogSW1hZ2luYXRpb24gaW50ZXJBcHRpdiBNUjIuICAqLwotICNkZWZpbmUgSU5TTl9JTlRFUkFQVElWX01SMgkgIDB4MDQwMDAwMDAKLSsvKiBOZXRsb2dpYyBYbFAgaW5zdHJ1Y3Rpb24gKi8KLSsjZGVmaW5lIElOU05fWExQCQkweDAwMDAwMDgwCi0gCi0gLyogRFNQIEFTRSAqLwotICNkZWZpbmUgQVNFX0RTUAkJCTB4MDAwMDAwMDEKLUBAIC0xMzgxLDYgKzEzODMsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7Ci0gI2RlZmluZSBDUFVfT0NURU9OMwk2NTAzCi0gI2RlZmluZSBDUFVfWExSICAgICAJODg3NjgyICAgCS8qIGRlY2ltYWwgJ1hMUicgICAqLwotICNkZWZpbmUgQ1BVX0lOVEVSQVBUSVZfTVIyIDczNjU1MAkvKiBkZWNpbWFsICdJQTInICAqLwotKyNkZWZpbmUgQ1BVX1hMUCAgICAgICAgIDg4NzY4MCAgICAgIC8qIGRlY2ltYWwgJ1hMUCcgICAqLwotIAotIC8qIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBDUFUgaXMgaW5jbHVkZWQgaW4gSU5TTl8qIG1hc2sgTUFTSy4gICovCi0gCi1AQCAtMTQ1OCw2ICsxNDYxLDkgQEAgY3B1X2lzX21lbWJlciAoaW50IGNwdSwgdW5zaWduZWQgaW50IG1hc2spCi0gICAgICAgcmV0dXJuICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBMzJSNikKLSAJICAgICB8fCAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTY0UjYpOwotIAotKyAgICBjYXNlIENQVV9YTFA6Ci0rICAgICAgcmV0dXJuIChtYXNrICYgSU5TTl9YTFApICE9IDA7Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDkxN2JlNmY4ZWIuLjM0N2RmNmMzZjYgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUudGd0Ci0rKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNDU0LDYgKzQ1NCw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKLSBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCi0gCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7Ci0rbWlwc2lzYTY0Ki0qLWVsZiopCXRhcmdfZW11bD1lbGYzMmJ0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIiA7OwotIG1pcHM2NCplbC1wczItZWxmKikJdGFyZ19lbXVsPWVsZjMybHI1OTAwbjMyCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJscjU5MDAiCi0gCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7Ci1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLWRpcy5jIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCi1pbmRleCAwZGQ4NWUzNzc5Li4xZWE3MDhkZGU3IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCi0rKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKLUBAIC02NzMsMTMgKzY3MywxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KLSAgICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAotICAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAotIAotLSAgLyogWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiBpdCBpcyBiZWluZwotLSAgICAgTUlQUzY0UjIuICAqLwotLSAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHIsIENQVV9YTFIsCi0tICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExSLCAwLAotLSAgICBtaXBzX2NwMF9uYW1lc194bHIsCi0tICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKLS0gICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKLSsgIHsgInhscCIsIDEsIGJmZF9tYWNoX21pcHNfeGxwLCBDUFVfWExQLAotKyAgICBJU0FfTUlQUzY0UjIgfCBJTlNOX1hMUCwgMCwKLSsgICAgbWlwc19jcDBfbmFtZXNfbWlwczMyNjRyMiwKLSsgICAgbWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiksCi0rICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19taXBzMzI2NHIyIH0sCi0gCi0gICAvKiBUaGlzIGVudHJ5LCBtaXBzMTYsIGlzIGhlcmUgb25seSBmb3IgSVNBL3Byb2Nlc3NvciBzZWxlY3Rpb247IGRvCi0gICAgICBub3QgcHJpbnQgaXRzIG5hbWUuICAqLwotZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1vcGMuYyBiL29wY29kZXMvbWlwcy1vcGMuYwotaW5kZXggODM3ZGE2YmQ5OS4uZDNlYTViODg3NyAxMDA2NDQKLS0tLSBhL29wY29kZXMvbWlwcy1vcGMuYwotKysrIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCi1AQCAtMzI4LDYgKzMyOCw3IEBAIGRlY29kZV9taXBzX29wZXJhbmQgKGNvbnN0IGNoYXIgKnApCi0gI2RlZmluZSBJT0NUMwlJTlNOX09DVEVPTjMKLSAjZGVmaW5lIFhMUiAgICAgSU5TTl9YTFIKLSAjZGVmaW5lIElBTVIyCUlOU05fSU5URVJBUFRJVl9NUjIKLSsjZGVmaW5lIFhMUAlJTlNOX1hMUAotICNkZWZpbmUgSVZJUlQJQVNFX1ZJUlQKLSAjZGVmaW5lIElWSVJUNjQJQVNFX1ZJUlQ2NAotIAotQEAgLTk4OSw2ICs5OTAsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJjbG8iLAkJCSJVLHMiLAkJMHg3MDAwMDAyMSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotIHsiY2x6IiwJCQkiZCxzIiwJCTB4MDAwMDAwNTAsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzcsCQkwLAkwIH0sCi0geyJjbHoiLAkJCSJVLHMiLAkJMHg3MDAwMDAyMCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotK3siY3JjIiwJCQkiZCxzLHQiLAkweDcwMDAwMDFjLCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCi0gLyogY3RjMCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0geyJjdGMxIiwJCSJ0LEciLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKLSB7ImN0YzEiLAkJInQsUyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAotQEAgLTEwMjEsMTIgKzEwMjMsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsiZGFkZGl1IiwJCSJ0LHIsaiIsCTB4NjQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfMiwJCTAsCQlJMywJCTAsCTAgfSwKLSB7ImRhZGR1IiwJCSJkLHYsdCIsCTB4MDAwMDAwMmQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUkzLAkJMCwJMCB9LAotIHsiZGFkZHUiLAkJInQscixJIiwJMCwgICAgKGludCkgTV9EQUREVV9JLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJMCB9LAotLXsiZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUiwJCTAsCTAgfSwKLSt7ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJkYnJlYWsiLAkJIiIsCQkweDcwMDAwMDNmLCAweGZmZmZmZmZmLAkwLAkJCTAsCQlONSwJCTAsCTAgfSwKLSB7ImRjbG8iLAkJImQscyIsCQkweDAwMDAwMDUzLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAotIHsiZGNsbyIsCQkiVSxzIiwJIAkweDcwMDAwMDI1LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCi0geyJkY2x6IiwJCSJkLHMiLAkJMHgwMDAwMDA1MiwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSB7ImRjbHoiLAkJIlUscyIsCSAJMHg3MDAwMDAyNCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAotK3siZGNyYyIsCQkiZCxzLHQiLAkweDcwMDAwMDFkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCi0gLyogZGN0ciBhbmQgZGN0dyBhcmUgdXNlZCBvbiB0aGUgcjUwMDAuICAqLwotIHsiZGN0ciIsCQkibyhiKSIsCSAJMHhiYzA1MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCi0geyJkY3R3IiwJCSJvKGIpIiwJCTB4YmMwOTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAotQEAgLTEwOTgsNiArMTEwMSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImRtZmMwIiwJCSJ0LEcsSCIsCTB4NDAyMDAwMDAsIDB4ZmZlMDA3ZjgsCVdSXzF8UkRfQzB8TEMsCQkwLAkJSTY0LAkJMCwJMCB9LAotIHsiZG1mZ2MwIiwJCSJ0LEciLAkJMHg0MDYwMDEwMCwgMHhmZmUwMDdmZiwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAotIHsiZG1mZ2MwIiwJCSJ0LEcsSCIsCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZjgsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKLSt7ImRtZnVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZSwgMHhmZmUwMDdmZiwgV1JfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAotIHsiZG10IiwJCQkiIiwJCTB4NDE2MDBiYzEsIDB4ZmZmZmZmZmYsIFRSQVAsCQkJMCwJCTAsCQlNVDMyLAkwIH0sCi0geyJkbXQiLAkJCSJ0IiwJCTB4NDE2MDBiYzEsIDB4ZmZlMGZmZmYsIFdSXzF8VFJBUCwJCTAsCQkwLAkJTVQzMiwJMCB9LAotIHsiZG10YzAiLAkJInQsRyIsCQkweDQwYTAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0MwfFdSX0NDfENNLAkwLAkJSTMsCQkwLAlFRSB9LAotQEAgLTExMTMsNiArMTExNyw4IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSAvKiBkbWZjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0gLyogZG10YzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwotIHsiZG11aCIsCQkiZCxzLHQiLAkweDAwMDAwMGRjLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCi0reyJkbXR1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWYsIDB4ZmZlMDA3ZmYsCVJEXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKLSt7ImRtdWwiLAkJImQscyx0IiwJMHg3MDAwMDAwNiwgMHhmYzAwMDdmZiwJV1JfMXxSRF8yfFJEXzMsCQkwLAkJWExQLAkJMCwJMCB9LAotIHsiZG11bCIsCQkiZCxzLHQiLAkweDAwMDAwMDljLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCi0geyJkbXVsIiwJCSJkLHYsdCIsCTB4NzAwMDAwMDMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0hJTE8sCTAsCQlJT0NULAkJMCwJMCB9LAotIHsiZG11bCIsCQkiZCx2LHQiLAkwLCAgICAoaW50KSBNX0RNVUwsCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAlNMzJ8STY5IH0sCi1AQCAtMTI2Niw5ICsxMjcyLDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsibGQiLAkJCSJzLC1iKCtSKSIsCTB4ZWMxODAwMDAsIDB4ZmMxYzAwMDAsIFdSXzEsCQkJUkRfcGMsCQlJNjksCQkwLAkwIH0sCi0geyJsZCIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fTERfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCi0geyJsZCIsCQkJInQsbyhiKSIsCTB4ZGMwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xMTSwJCTAsCQlJMywJCTAsCTAgfSwKLS17ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17ImxkYWRkZCIsCQkidCxiIiwJCTB4NzAwMDAwMTIsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7ImxkYWRkZCIsCQkidCxiIiwJCTB4NzAwMDAwMTIsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsibGRjMSIsCQkiVCxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAotIHsibGRjMSIsCQkiRSxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAotIHsibGRjMSIsCQkiVCxBKGIpIiwJMCwgICAgKGludCkgTV9MREMxX0FCLAlJTlNOX01BQ1JPLAkJSU5TTjJfTV9GUF9ELAlJMiwJCTAsCVNGIH0sCi1AQCAtMTQzMyw3ICsxNDM5LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsibWZsbyIsCQkiZCw5IiwJCTB4MDAwMDAwMTIsIDB4ZmY5ZjA3ZmYsIFdSXzF8UkRfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAotIHsibWZsbzEiLAkJImQiLAkJMHg3MDAwMDAxMiwgMHhmZmZmMDdmZiwJV1JfMXxSRF9MTywJCTAsCQlFRSwJCTAsCTAgfSwKLSB7Im1mbGh4dSIsCQkiZCIsCQkweDAwMDAwMDUyLCAweGZmZmYwN2ZmLAlXUl8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKLS17Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7Im1mc2EiLAkJImQiLAkJMHgwMDAwMDAyOCwgMHhmZmZmMDdmZiwJV1JfMSwJCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtaW4ub2IiLAkJIlgsWSxRIiwJMHg3ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCVNCMSwJCU1YLAkwIH0sCi0geyJtaW4ub2IiLAkJIkQsUyxRIiwJMHg0ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCU41NCwJCTAsCTAgfSwKLUBAIC0xNDc4LDEwICsxNDg0LDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSAvKiBtb3ZlIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHRhYmxlLiAgKi8KLSB7Im1zZ24ucWgiLAkJIlgsWSxRIiwJMHg3ODIwMDAwMCwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCTAsCQlNWCwJMCB9LAotIHsibXNnc25kIiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHU05ELAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1zZ3NuZHMiLAkJImQsdCIsCQkweDRhMDAwMDAxLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJtc2dsZCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR0xELAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSB7Im1zZ2xkIiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHTERfVCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJtc2d3YWl0IiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHV0FJVCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibXNnbGRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMiwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAotK3sibXNnd2FpdCIsCQkiIiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVCwgIElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7Im1zZ3N5bmMiLAkJIiIsCQkweDRhMDAwMDA0LCAweGZmZmZmZmZmLDAsCQkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7Im1zdWIuZCIsCQkiRCxSLFMsVCIsCTB4NGMwMDAwMjksIDB4ZmMwMDAwM2YsIFdSXzF8UkRfMnxSRF8zfFJEXzR8RlBfRCwgMCwJCUk0XzMzLAkJMCwJSTM3IH0sCi0geyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg0NjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkUsCQkwLAkwIH0sCi0geyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg3MjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkYsCQkwLAkwIH0sCi1AQCAtMTUzMSw3ICsxNTQwLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsibXRsbyIsCQkicyw3IiwJCTB4MDAwMDAwMTMsIDB4ZmMxZmU3ZmYsIFJEXzF8V1JfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAotIHsibXRsbzEiLAkJInMiLAkJMHg3MDAwMDAxMywgMHhmYzFmZmZmZiwJUkRfMXxXUl9MTywJCTAsCQlFRSwJCTAsCTAgfSwKLSB7Im10bGh4IiwJCSJzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZmZmZmYsCVJEXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAotLXsibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsibXRtMCIsCQkicyIsCQkweDcwMDAwMDA4LCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAotIHsibXRtMCIsICAgIAkJInMsdCIsCQkweDcwMDAwMDA4LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJSU9DVDMsCQkwLAkwIH0sCi0geyJtdG0xIiwJCSJzIiwJCTB4NzAwMDAwMGMsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCi1AQCAtMTk2OCw5ICsxOTc3LDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsic3V4YzEiLAkJIlMsdChiKSIsCTB4NGMwMDAwMGQsIDB4ZmMwMDA3ZmYsIFJEXzF8UkRfMnxSRF8zfFNNfEZQX0QsCTAsCQlJNV8zM3xONTUsCTAsCUkzN30sCi0geyJzdyIsCQkJInQsbyhiKSIsCTB4YWMwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTSwJCTAsCQlJMSwJCTAsCTAgfSwKLSB7InN3IiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9TV19BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKLS17InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJzd2FwZCIsCQkidCxiIiwJCTB4NzAwMDAwMTYsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJzd2FwZCIsCQkidCxiIiwJCTB4NzAwMDAwMTYsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsic3djMCIsCQkiRSxvKGIpIiwJMHhlMDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfM3xSRF9DMHxTTSwJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCi0geyJzd2MwIiwJCSJFLEEoYikiLAkwLCAgICAoaW50KSBNX1NXQzBfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAotIHsic3djMSIsCQkiVCxvKGIpIiwJMHhlNDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNfEZQX1MsCTAsCQlJMSwJCTAsCTAgfSwKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0OWI4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gMjE4Mjc5MWE0NTNmMzRiZWU2OTY4YjNlNzI4NDg2MDhjZjdkN2FiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDQ6MTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hhbmdlIGRlZmF1bHQgZW11bGF0aW9uIGZvciBtaXBzNjQqLSotbGludXgKKword2UgY2hhbmdlIHRoZSBkZWZhdWx0IGVtdWxhdGlvbnMgdG8gYmUgTjY0IGluc3RlYWQgb2YgTjMyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIE9FIGNvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBiZmQvY29uZmlnLmJmZCAgIHwgOCArKysrLS0tLQorIGxkL2NvbmZpZ3VyZS50Z3QgfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCitpbmRleCBiOTY5MzFmNTJlLi44NDdmOWYwYmE5IDEwMDY0NAorLS0tIGEvYmZkL2NvbmZpZy5iZmQKKysrKyBiL2JmZC9jb25maWcuYmZkCitAQCAtOTExLDEyICs5MTEsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHM2NCplbC0qLWxpbnV4KikKKy0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9sZV92ZWMKKy0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgorKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfbGVfdmVjCisrICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCisgICAgIDs7CisgICBtaXBzNjQqLSotbGludXgqKQorLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2JlX3ZlYworLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisrICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9iZV92ZWMKKysgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHMqZWwtKi1saW51eCopCisgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggMjMxOTRlMzU3Zi4uZjRmMGVhZjliMiAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01NDEsMTIgKzU0MSwxMiBAQCBtaXBzKi0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlYm1pcHZ4d29ya3MKKyAJCQk7OworIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MKKyAJCQk7OworLW1pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcG4zMgorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0bHRzbWlwIGVsZjY0YnRzbWlwIgorK21pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGx0c21pcAorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0YnRzbWlwIgorIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscworIAkJCTs7CistbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmJ0c21pcG4zMgorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIgorK21pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRidHNtaXAKKysJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGx0c21pcCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMKKyAJCQk7OworIG1pcHMqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzI4NjdhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCkBAIC0wLDAgKzEsNDA2IEBACitGcm9tIGEwMjM3ZWMyZDFlNThiZDM1YzIzNmRmMzlkZDVhMDY1MDRjNmQyZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCisKK1BhdGNoIEZyb206IE5lYnUgUGhpbGlwcyA8bnBoaWxpcHNAbmV0bG9naWNtaWNyby5jb20+CisKK1VzaW5nIHRoZSBtaXBzaXNhNjRyMm5sbSB0YXJnZXQsIGFkZCBzdXBwb3J0IGZvciBYTFAgZnJvbQorTmV0bG9naWMuIEFsc28sIHVwZGF0ZSB2ZW5kb3IgbmFtZSB0byBOTE0gd2hlcmV2ZXIgYXBwbGljYWJsZS4KKworVXNlIDB4MDAwMDAwODAgZm9yIElOU05fWExQLCB0aGUgdmFsdWUgMHgwMDAwMDA0MCBoYXMgYWxyZWFkeSBiZWVuCithc3NpZ25lZCB0byBJTlNOX09DVEVPTjMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBCYW9zaGFuIFBhbmcgPGJhb3NoYW4ucGFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmZkL2FvdXR4LmggICAgICAgICAgIHwgIDEgKworIGJmZC9hcmNodXJlcy5jICAgICAgICB8ICAxICsKKyBiZmQvYmZkLWluMi5oICAgICAgICAgfCAgMSArCisgYmZkL2NvbmZpZy5iZmQgICAgICAgIHwgIDUgKysrKysKKyBiZmQvY3B1LW1pcHMuYyAgICAgICAgfCAgNiArKysrLS0KKyBiZmQvZWxmeHgtbWlwcy5jICAgICAgfCAgOCArKysrKysrKworIGJpbnV0aWxzL3JlYWRlbGYuYyAgICB8ICAxICsKKyBnYXMvY29uZmlnL3RjLW1pcHMuYyAgfCAgNCArKystCisgZ2FzL2NvbmZpZ3VyZSAgICAgICAgIHwgIDMgKysrCisgZ2FzL2NvbmZpZ3VyZS5hYyAgICAgIHwgIDMgKysrCisgaW5jbHVkZS9lbGYvbWlwcy5oICAgIHwgIDEgKworIGluY2x1ZGUvb3Bjb2RlL21pcHMuaCB8ICA2ICsrKysrKworIGxkL2NvbmZpZ3VyZS50Z3QgICAgICB8ICAzICsrKworIG9wY29kZXMvbWlwcy1kaXMuYyAgICB8IDEyICsrKysrLS0tLS0tLQorIG9wY29kZXMvbWlwcy1vcGMuYyAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyAxNSBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9hb3V0eC5oIGIvYmZkL2FvdXR4LmgKK2luZGV4IGZhM2E5NzQ2YjYuLjUwNzgwMjRmZDUgMTAwNjQ0CistLS0gYS9iZmQvYW91dHguaAorKysrIGIvYmZkL2FvdXR4LmgKK0BAIC03OTksNiArNzk5LDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCisgCWNhc2UgYmZkX21hY2hfbWlwc2lzYTY0cjY6CisgCWNhc2UgYmZkX21hY2hfbWlwc19zYjE6CisgCWNhc2UgYmZkX21hY2hfbWlwc194bHI6CisrCWNhc2UgYmZkX21hY2hfbWlwc194bHA6CisgCSAgLyogRklYTUU6IFRoZXNlIHNob3VsZCBiZSBNSVBTMywgTUlQUzQsIE1JUFMxNiwgTUlQUzMyLCBldGMuICAqLworIAkgIGFyY2hfZmxhZ3MgPSBNX01JUFMyOworIAkgIGJyZWFrOworZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKK2luZGV4IDIzMjEwMzgxN2MuLmIyYjNiOGMxMjQgMTAwNjQ0CistLS0gYS9iZmQvYXJjaHVyZXMuYworKysrIGIvYmZkL2FyY2h1cmVzLmMKK0BAIC0xODUsNiArMTg1LDcgQEAgREVTQ1JJUFRJT04KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMJCTY1MDMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscgkJODg3NjgyCSB7KiBkZWNpbWFsICdYTFInLiAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyCTczNjU1MAkgeyogZGVjaW1hbCAnSUEyJy4gICp9CisrLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcuICAqfQorIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMgkJMzIKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMgkJMzMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMwkJMzQKK2RpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAoraW5kZXggN2MxM2JjOGM5MS4uMmU0NTNjNTBjMSAxMDA2NDQKKy0tLSBhL2JmZC9iZmQtaW4yLmgKKysrKyBiL2JmZC9iZmQtaW4yLmgKK0BAIC0xNTY4LDYgKzE1NjgsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJy4gICovCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgLyogZGVjaW1hbCAnSUEyJy4gICovCisrI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgLyogZGVjaW1hbCAnWExQJy4gICovCisgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMworICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggODQ3ZjlmMGJhOS4uYTEyNzA3ZjgyNyAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTg5NCw2ICs4OTQsMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9sZV92ZWMKKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2JlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKKyAgICAgOzsKKysgIG1pcHNpc2E2NCotKi1lbGYqKQorKwl0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfYmVfdmVjCisrCXRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisrCXdhbnQ2ND10cnVlCisrCTs7CisgICBtaXBzKi0qLWVsZiogfCBtaXBzKi0qLXJ0ZW1zKiB8IG1pcHMqLSotd2luZGlzcyB8IG1pcHMqLSotbm9uZSkKKyAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9iZV92ZWMKKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKK2RpZmYgLS1naXQgYS9iZmQvY3B1LW1pcHMuYyBiL2JmZC9jcHUtbWlwcy5jCitpbmRleCA4MDJhY2I0NWYxLi5mZDllYzRjMGFkIDEwMDY0NAorLS0tIGEvYmZkL2NwdS1taXBzLmMKKysrKyBiL2JmZC9jcHUtbWlwcy5jCitAQCAtMTA4LDcgKzEwOCw4IEBAIGVudW0KKyAgIElfbWlwc29jdGVvbjMsCisgICBJX3hsciwKKyAgIElfaW50ZXJhcHRpdl9tcjIsCistICBJX21pY3JvbWlwcworKyAgSV9taWNyb21pcHMsCisrICBJX3hscAorIH07CisgCisgI2RlZmluZSBOTihpbmRleCkgKCZhcmNoX2luZm9fc3RydWN0WyhpbmRleCkgKyAxXSkKK0BAIC0xNjMsNyArMTY0LDggQEAgc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQorICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwJICAgRkFMU0UsIE5OKElfeGxyKSksCisgICBOICgzMiwgMzIsIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIsICJtaXBzOmludGVyYXB0aXYtbXIyIiwgRkFMU0UsCisgICAgICBOTihJX2ludGVyYXB0aXZfbXIyKSksCistICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCAibWlwczptaWNyb21pcHMiLCBGQUxTRSwgTlVMTCkKKysgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsICJtaXBzOm1pY3JvbWlwcyIsIEZBTFNFLCBOTihJX21pY3JvbWlwcykpLAorKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hscCwgIm1pcHM6eGxwIiwgRkFMU0UsIE5VTEwpCisgfTsKKyAKKyAvKiBUaGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUgaXMgbWlwczozMDAwLCBidXQgd2l0aCBhIG1hY2hpbmUgbnVtYmVyIG9mCitkaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuYyBiL2JmZC9lbGZ4eC1taXBzLmMKK2luZGV4IGQ3ZTNhZWQzYjYuLjdiYWVlZTllZTMgMTAwNjQ0CistLS0gYS9iZmQvZWxmeHgtbWlwcy5jCisrKysgYi9iZmQvZWxmeHgtbWlwcy5jCitAQCAtNjk5OSw2ICs2OTk5LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKKyAgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjoKKyAgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMjsKKyAKKysgICAgY2FzZSBFX01JUFNfTUFDSF9YTFA6CisrICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfeGxwOworKworICAgICBkZWZhdWx0OgorICAgICAgIHN3aXRjaCAoZmxhZ3MgJiBFRl9NSVBTX0FSQ0gpCisgCXsKK0BAIC0xMjM1NSw2ICsxMjM1OCwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKKyAgICAgICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfT0NURU9OMjsKKyAgICAgICBicmVhazsKKyAKKysJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKKysJICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfWExQOworKwkgIGJyZWFrOworKworICAgICBjYXNlIGJmZF9tYWNoX21pcHNpc2EzMjoKKyAgICAgICB2YWwgPSBFX01JUFNfQVJDSF8zMjsKKyAgICAgICBicmVhazsKK0BAIC0xNDM3OSw2ICsxNDM4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KKyAgIHsgYmZkX21hY2hfbWlwc19nczI2NGUsIGJmZF9tYWNoX21pcHNfZ3M0NjRlIH0sCisgICB7IGJmZF9tYWNoX21pcHNfZ3M0NjRlLCBiZmRfbWFjaF9taXBzX2dzNDY0IH0sCisgICB7IGJmZF9tYWNoX21pcHNfZ3M0NjQsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCisrICB7IGJmZF9tYWNoX21pcHNfeGxwLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAorIAorICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLworICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCitkaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCitpbmRleCA2YjViZWJlNzQzLi5kMTVhNzgyOGRiIDEwMDY0NAorLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCisrKysgYi9iaW51dGlscy9yZWFkZWxmLmMKK0BAIC0zNDQwLDYgKzM0NDAsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAoRmlsZWRhdGEgKiBmaWxlZGF0YSwgdW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQorIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04zOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMyIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOiAgc3RyY2F0IChidWYsICIsIHhsciIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6ICBzdHJjYXQgKGJ1ZiwgIiwgaW50ZXJhcHRpdi1tcjIiKTsgYnJlYWs7CisrCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDogIHN0cmNhdCAoYnVmLCAiLCB4bHAiKTsgYnJlYWs7CisgCSAgICBjYXNlIDA6CisgCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgorIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworaW5kZXggZmM2ODk4ODM0ZS4uMmM3MTUxY2NkYiAxMDA2NDQKKy0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCisrKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworQEAgLTU2OCw2ICs1NjgsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUk03MDAwICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1ZSNTUwMCAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTU5Nyw2ICs1OTgsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICAgJiYgbWlwc19vcHRzLmlzYSAhPSBJU0FfTUlQUzMpICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1I0MzAwICAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTIwMTM1LDcgKzIwMTM3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9CisgICAvKiBCcm9hZGNvbSBYTFAuCisgICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKKyAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCistICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUiB9LAorKyAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFAgfSwKKyAKKyAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2LiAgKi8KKyAgIHsgImk2NDAwIiwJICAgICAgMCwgQVNFX1ZJUlQgfCBBU0VfTVNBLAlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKK2luZGV4IDYwYzFhMDU1YWUuLjU5ZDZkMTEyMTUgMTAwNzU1CistLS0gYS9nYXMvY29uZmlndXJlCisrKysgYi9nYXMvY29uZmlndXJlCitAQCAtMTI3MjIsNiArMTI3MjIsOSBAQCBfQUNFT0YKKyAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCisgCSAgICBtaXBzX2NwdT1taXBzNjRyNgorIAkgICAgOzsKKysJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCisrCSAgICBtaXBzX2NwdT14bHAKKysJICAgIDs7CisgCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQorIAkgICAgbWlwc19jcHU9cjM5MDAKKyAJICAgIDs7CitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZS5hYyBiL2dhcy9jb25maWd1cmUuYWMKK2luZGV4IDZmMzJlNTVhMWEuLjExYzJlMGQyNzMgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlndXJlLmFjCisrKysgYi9nYXMvY29uZmlndXJlLmFjCitAQCAtMzI1LDYgKzMyNSw5IEBAIGNoYW5nZXF1b3RlKFssXSlkbmwKKyAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCisgCSAgICBtaXBzX2NwdT1taXBzNjRyNgorIAkgICAgOzsKKysJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCisrCSAgICBtaXBzX2NwdT14bHAKKysJICAgIDs7CisgCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQorIAkgICAgbWlwc19jcHU9cjM5MDAKKyAJICAgIDs7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCitpbmRleCBkMTE2YjAzNmI2Li5kY2VlYjNmMTU2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCisrKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKK0BAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCisgI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMAorKyNkZWZpbmUgRV9NSVBTX01BQ0hfWExQICAgICAgICAgMHgwMDhmMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMgkweDAwOGQwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAoraW5kZXggZmQwMzFmMzc1OC4uYTk2YTQ0ZGY4NCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAorKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCitAQCAtMTI2MCw2ICsxMjYwLDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0geworICNkZWZpbmUgSU5TTl9YTFIgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKyAvKiBJbWFnaW5hdGlvbiBpbnRlckFwdGl2IE1SMi4gICovCisgI2RlZmluZSBJTlNOX0lOVEVSQVBUSVZfTVIyCSAgMHgwNDAwMDAwMAorKy8qIE5ldGxvZ2ljIFhsUCBpbnN0cnVjdGlvbiAqLworKyNkZWZpbmUgSU5TTl9YTFAJCTB4MDAwMDAwODAKKyAKKyAvKiBEU1AgQVNFICovCisgI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQorQEAgLTEzODQsNiArMTM4Niw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKKyAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKKyAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCisgI2RlZmluZSBDUFVfSU5URVJBUFRJVl9NUjIgNzM2NTUwCS8qIGRlY2ltYWwgJ0lBMicgICovCisrI2RlZmluZSBDUFVfWExQICAgICAgICAgODg3NjgwICAgICAgLyogZGVjaW1hbCAnWExQJyAgICovCisgCisgLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KKyAKK0BAIC0xNDYxLDYgKzE0NjQsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKKyAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQorIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7CisgCisrICAgIGNhc2UgQ1BVX1hMUDoKKysgICAgICByZXR1cm4gKG1hc2sgJiBJTlNOX1hMUCkgIT0gMDsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gRkFMU0U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggZjRmMGVhZjliMi4uMGRhM2VjYTE5YyAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01MjAsNiArNTIwLDkgQEAgbWlwcyotc2RlLWVsZiogfCBtaXBzKi1tdGktZWxmKiB8IG1pcHMqLWltZy1lbGYqKQorIAkJCXRhcmdfZW11bD1lbGYzMmJ0c21pcAorIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIgorIAkJCTs7CisrbWlwc2lzYTY0Ki0qLWVsZiopCXRhcmdfZW11bD1lbGYzMmJ0c21pcAorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIgorKwkJCTs7CisgbWlwczY0KmVsLXBzMi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJscjU5MDBuMzIKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMKK2RpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKK2luZGV4IDc1NWJiZTI5NGIuLmNlMjJlZjY4M2EgMTAwNjQ0CistLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKKysrKyBiL29wY29kZXMvbWlwcy1kaXMuYworQEAgLTY3NCwxMyArNjc0LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQorICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCisgICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCisgCistICAvKiBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIGl0IGlzIGJlaW5nCistICAgICBNSVBTNjRSMi4gICovCistICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hsciwgQ1BVX1hMUiwKKy0gICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFIsIDAsCistICAgIG1pcHNfY3AwX25hbWVzX3hsciwKKy0gICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAorLSAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAorKyAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHAsIENQVV9YTFAsCisrICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExQLCAwLAorKyAgICBtaXBzX2NwMF9uYW1lc19taXBzMzI2NHIyLAorKyAgICBtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyKSwKKysgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX21pcHMzMjY0cjIgfSwKKyAKKyAgIC8qIFRoaXMgZW50cnksIG1pcHMxNiwgaXMgaGVyZSBvbmx5IGZvciBJU0EvcHJvY2Vzc29yIHNlbGVjdGlvbjsgZG8KKyAgICAgIG5vdCBwcmludCBpdHMgbmFtZS4gICovCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLW9wYy5jIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCitpbmRleCA1MjcwYWVlZmE4Li5kMTdkYzc4Y2Q3IDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCisrKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKK0BAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKKyAjZGVmaW5lIElPQ1QzCUlOU05fT0NURU9OMworICNkZWZpbmUgWExSICAgICBJTlNOX1hMUgorICNkZWZpbmUgSUFNUjIJSU5TTl9JTlRFUkFQVElWX01SMgorKyNkZWZpbmUgWExQCUlOU05fWExQCisgI2RlZmluZSBJVklSVAlBU0VfVklSVAorICNkZWZpbmUgSVZJUlQ2NAlBU0VfVklSVDY0CisgCitAQCAtOTkwLDYgKzk5MSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImNsbyIsCQkJIlUscyIsCQkweDcwMDAwMDIxLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisgeyJjbHoiLAkJCSJkLHMiLAkJMHgwMDAwMDA1MCwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzNywJCTAsCTAgfSwKKyB7ImNseiIsCQkJIlUscyIsCQkweDcwMDAwMDIwLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisreyJjcmMiLAkJCSJkLHMsdCIsCTB4NzAwMDAwMWMsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKKyAvKiBjdGMwIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyB7ImN0YzEiLAkJInQsRyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsiY3RjMSIsCQkidCxTIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCitAQCAtMTAyMiwxMiArMTAyNCwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJkYWRkaXUiLAkJInQscixqIiwJMHg2NDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8yLAkJMCwJCUkzLAkJMCwJMCB9LAorIHsiZGFkZHUiLAkJImQsdix0IiwJMHgwMDAwMDAyZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTMsCQkwLAkwIH0sCisgeyJkYWRkdSIsCQkidCxyLEkiLAkwLCAgICAoaW50KSBNX0RBRERVX0ksCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAkwIH0sCisteyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSLAkJMCwJMCB9LAorK3siZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7ImRicmVhayIsCQkiIiwJCTB4NzAwMDAwM2YsIDB4ZmZmZmZmZmYsCTAsCQkJMCwJCU41LAkJMCwJMCB9LAorIHsiZGNsbyIsCQkiZCxzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCisgeyJkY2xvIiwJCSJVLHMiLAkgCTB4NzAwMDAwMjUsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKKyB7ImRjbHoiLAkJImQscyIsCQkweDAwMDAwMDUyLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAorIHsiZGNseiIsCQkiVSxzIiwJIAkweDcwMDAwMDI0LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCisreyJkY3JjIiwJCSJkLHMsdCIsCTB4NzAwMDAwMWQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKKyAvKiBkY3RyIGFuZCBkY3R3IGFyZSB1c2VkIG9uIHRoZSByNTAwMC4gICovCisgeyJkY3RyIiwJCSJvKGIpIiwJIAkweGJjMDUwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKKyB7ImRjdHciLAkJIm8oYikiLAkJMHhiYzA5MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCitAQCAtMTA5OSw2ICsxMTAyLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsiZG1mYzAiLAkJInQsRyxIIiwJMHg0MDIwMDAwMCwgMHhmZmUwMDdmOCwJV1JfMXxSRF9DMHxMQywJCTAsCQlJNjQsCQkwLAkwIH0sCisgeyJkbWZnYzAiLAkJInQsRyIsCQkweDQwNjAwMTAwLCAweGZmZTAwN2ZmLCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCisgeyJkbWZnYzAiLAkJInQsRyxIIiwJMHg0MDYwMDEwMCwgMHhmZmUwMDdmOCwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAorK3siZG1mdXIiLAkJInQsZCIsCQkweDcwMDAwMDFlLCAweGZmZTAwN2ZmLCBXUl8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJkbXQiLAkJCSIiLAkJMHg0MTYwMGJjMSwgMHhmZmZmZmZmZiwgVFJBUCwJCQkwLAkJMCwJCU1UMzIsCTAgfSwKKyB7ImRtdCIsCQkJInQiLAkJMHg0MTYwMGJjMSwgMHhmZmUwZmZmZiwgV1JfMXxUUkFQLAkJMCwJCTAsCQlNVDMyLAkwIH0sCisgeyJkbXRjMCIsCQkidCxHIiwJCTB4NDBhMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQzB8V1JfQ0N8Q00sCTAsCQlJMywJCTAsCUVFIH0sCitAQCAtMTExNCw2ICsxMTE4LDggQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIC8qIGRtZmMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyAvKiBkbXRjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCisgeyJkbXVoIiwJCSJkLHMsdCIsCTB4MDAwMDAwZGMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyt7ImRtdHVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZiwgMHhmZmUwMDdmZiwJUkRfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAorK3siZG11bCIsCQkiZCxzLHQiLAkweDcwMDAwMDA2LCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJkbXVsIiwJCSJkLHMsdCIsCTB4MDAwMDAwOWMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQsdix0IiwJMHg3MDAwMDAwMywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfSElMTywJMCwJCUlPQ1QsCQkwLAkwIH0sCisgeyJkbXVsIiwJCSJkLHYsdCIsCTAsICAgIChpbnQpIE1fRE1VTCwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCU0zMnxJNjkgfSwKK0BAIC0xMjY3LDkgKzEyNzMsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJsZCIsCQkJInMsLWIoK1IpIiwJMHhlYzE4MDAwMCwgMHhmYzFjMDAwMCwgV1JfMSwJCQlSRF9wYywJCUk2OSwJCTAsCTAgfSwKKyB7ImxkIiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9MRF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKKyB7ImxkIiwJCQkidCxvKGIpIiwJMHhkYzAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfExNLAkJMCwJCUkzLAkJMCwJMCB9LAorLXsibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKyt7ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJsZGMxIiwJCSJULG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCisgeyJsZGMxIiwJCSJFLG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCisgeyJsZGMxIiwJCSJULEEoYikiLAkwLCAgICAoaW50KSBNX0xEQzFfQUIsCUlOU05fTUFDUk8sCQlJTlNOMl9NX0ZQX0QsCUkyLAkJMCwJU0YgfSwKK0BAIC0xNDM4LDcgKzE0NDQsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJtZmxvIiwJCSJkLDkiLAkJMHgwMDAwMDAxMiwgMHhmZjlmMDdmZiwgV1JfMXxSRF9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCisgeyJtZmxvMSIsCQkiZCIsCQkweDcwMDAwMDEyLCAweGZmZmYwN2ZmLAlXUl8xfFJEX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAorIHsibWZsaHh1IiwJCSJkIiwJCTB4MDAwMDAwNTIsIDB4ZmZmZjA3ZmYsCVdSXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAorLXsibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsibWZzYSIsCQkiZCIsCQkweDAwMDAwMDI4LCAweGZmZmYwN2ZmLAlXUl8xLAkJCTAsCQlFRSwJCTAsCTAgfSwKKyB7Im1pbi5vYiIsCQkiWCxZLFEiLAkweDc4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJU0IxLAkJTVgsCTAgfSwKKyB7Im1pbi5vYiIsCQkiRCxTLFEiLAkweDQ4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJTjU0LAkJMCwJMCB9LAorQEAgLTE0ODMsMTAgKzE0ODksMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIC8qIG1vdmUgaXMgYXQgdGhlIHRvcCBvZiB0aGUgdGFibGUuICAqLworIHsibXNnbi5xaCIsCQkiWCxZLFEiLAkweDc4MjAwMDAwLCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJMCwJCU1YLAkwIH0sCisgeyJtc2dzbmQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dTTkQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibXNnc25kcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDEsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKKyB7Im1zZ2xkIiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHTEQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorIHsibXNnbGQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dMRF9ULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKy17Im1zZ3dhaXQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dXQUlULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKy17Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtc2dsZHMiLAkJImQsdCIsCQkweDRhMDAwMDAyLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCisreyJtc2d3YWl0IiwJCSIiLAkJMCwgICAgKGludCkgTV9NU0dXQUlULCAgSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibXNnc3luYyIsCQkiIiwJCTB4NGEwMDAwMDQsIDB4ZmZmZmZmZmYsMCwJCQkwLAkJWExQLAkJMCwJMCB9LAorIHsibXN1Yi5kIiwJCSJELFIsUyxUIiwJMHg0YzAwMDAyOSwgMHhmYzAwMDAzZiwgV1JfMXxSRF8yfFJEXzN8UkRfNHxGUF9ELCAwLAkJSTRfMzMsCQkwLAlJMzcgfSwKKyB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDQ2MjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRSwJCTAsCTAgfSwKKyB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDcyMjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRiwJCTAsCTAgfSwKK0BAIC0xNTM2LDcgKzE1NDUsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJtdGxvIiwJCSJzLDciLAkJMHgwMDAwMDAxMywgMHhmYzFmZTdmZiwgUkRfMXxXUl9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCisgeyJtdGxvMSIsCQkicyIsCQkweDcwMDAwMDEzLCAweGZjMWZmZmZmLAlSRF8xfFdSX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAorIHsibXRsaHgiLAkJInMiLAkJMHgwMDAwMDA1MywgMHhmYzFmZmZmZiwJUkRfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCisteyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJtdG0wIiwJCSJzIiwJCTB4NzAwMDAwMDgsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCisgeyJtdG0wIiwgICAgCQkicyx0IiwJCTB4NzAwMDAwMDgsIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlJT0NUMywJCTAsCTAgfSwKKyB7Im10bTEiLAkJInMiLAkJMHg3MDAwMDAwYywgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKK0BAIC0xOTc4LDkgKzE5ODcsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJzdXhjMSIsCQkiUyx0KGIpIiwJMHg0YzAwMDAwZCwgMHhmYzAwMDdmZiwgUkRfMXxSRF8yfFJEXzN8U018RlBfRCwJMCwJCUk1XzMzfE41NSwJMCwJSTM3fSwKKyB7InN3IiwJCQkidCxvKGIpIiwJMHhhYzAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsic3ciLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX1NXX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAorLXsic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKyt7InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJzd2MwIiwJCSJFLG8oYikiLAkweGUwMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8zfFJEX0MwfFNNLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKKyB7InN3YzAiLAkJIkUsQShiKSIsCTAsICAgIChpbnQpIE1fU1dDMF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCisgeyJzd2MxIiwJCSJULG8oYikiLAkweGU0MDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U018RlBfUywJMCwJCUkxLAkJMCwJMCB9LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhM2I3OGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gZTQ4NzY3YTAyOThlNmNjZjUzZDgzZmVjYzkzYmI2ZDI2YjU5NTg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgotRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjowODoyOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDEyLzE1XSBmaXggdGhlIGluY29ycmVjdCBhc3NlbWJsaW5nIGZvciBwcGMgd2FpdCBtbmVtb25pYwotCi1TaWduZWQtb2ZmLWJ5OiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBvcGNvZGVzL3BwYy1vcGMuYyB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9wcGMtb3BjLmMgYi9vcGNvZGVzL3BwYy1vcGMuYwotaW5kZXggMzAzMjYzMWQ0ZS4uMTQyZjA5NmVmNCAxMDA2NDQKLS0tLSBhL29wY29kZXMvcHBjLW9wYy5jCi0rKysgYi9vcGNvZGVzL3BwYy1vcGMuYwotQEAgLTUzMjUsNyArNTMyNSw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKLSB7ImxkZXB4IiwJWCgzMSwyOSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLSB7IndhaXRhc2VjIiwJWCgzMSwzMCksICAgICAgWFJUUkFSQl9NQVNLLCBQT1dFUjgsCVBPV0VSOSwJCXswfX0sCi0teyJ3YWl0IiwJWCgzMSwzMCksCVhXQ19NQVNLLCAgICBQT1dFUjksCTAsCQl7V0N9fSwKLSAKLSB7Imx3ZXB4IiwJWCgzMSwzMSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLUBAIC01Mzc5LDcgKzUzNzgsNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7Ci0gCi0geyJ3YWl0cnN2IiwJWCgzMSw2Mil8KDE8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLSB7IndhaXRpbXBsIiwJWCgzMSw2Mil8KDI8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLS17IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtXQ319LAotK3sid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyfFBPV0VSOSwgMCwJe1dDfX0sCi0gCi0geyJkY2JzdGVwIiwJWFJUKDMxLDYzLDApLAlYUlRfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1JBMCwgUkJ9fSwKLSAKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTI5MTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDY1ODdlN2I4ZTc3MzBkZGEyMGQ4YzQ3Y2FiZTlmN2Y4Mzk3ZWZhM2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxMTo0MjowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDEzLzE1XSBEZXRlY3QgNjQtYml0IE1JUFMgdGFyZ2V0cwotCi1BZGQgbWlwczY0IHRhcmdldCB0cmlwbGV0cyBhbmQgZGVmYXVsdCB0byBONjQKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxNi0wOC9tc2cwMDA0OC5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnb2xkL2NvbmZpZ3VyZS50Z3QgfCAxNCArKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nb2xkL2NvbmZpZ3VyZS50Z3QgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDNlMDY2ZWRhYTguLmNhZjEzMGNlZGEgMTAwNjQ0Ci0tLS0gYS9nb2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2dvbGQvY29uZmlndXJlLnRndAotQEAgLTE1Myw2ICsxNTMsMTMgQEAgYWFyY2g2NCotKikKLSAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCi0gIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCi0gIDs7Ci0rbWlwcyo2NCplbCotKi0qfG1pcHMqNjQqbGUqLSotKikKLSsgdGFyZ19vYmo9bWlwcwotKyB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKLSsgdGFyZ19zaXplPTY0Ci0rIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQotKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQotKyA7OwotIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCi0gIHRhcmdfb2JqPW1pcHMKLSAgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCi1AQCAtMTYwLDYgKzE2NywxMyBAQCBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQotICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKLSAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKLSAgOzsKLSttaXBzKjY0Ki0qLSopCi0rIHRhcmdfb2JqPW1pcHMKLSsgdGFyZ19tYWNoaW5lPUVNX01JUFMKLSsgdGFyZ19zaXplPTY0Ci0rIHRhcmdfYmlnX2VuZGlhbj10cnVlCi0rIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj1mYWxzZQotKyA7OwotIG1pcHMqLSotKikKLSAgdGFyZ19vYmo9bWlwcwotICB0YXJnX21hY2hpbmU9RU1fTUlQUwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzZGU4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBlZjRhZDFjYjlmZjFiNWE4NzFmZmE3OTJhNzFiM2FkNmQxNGViM2RjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CitEYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjA4OjI5IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCB0aGUgaW5jb3JyZWN0IGFzc2VtYmxpbmcgZm9yIHBwYyB3YWl0IG1uZW1vbmljCisKK1NpZ25lZC1vZmYtYnk6IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIG9wY29kZXMvcHBjLW9wYy5jIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9vcGNvZGVzL3BwYy1vcGMuYyBiL29wY29kZXMvcHBjLW9wYy5jCitpbmRleCA3ZWY5MWQ4MTliLi4xNDU5NTNkM2M0IDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9wcGMtb3BjLmMKKysrKyBiL29wY29kZXMvcHBjLW9wYy5jCitAQCAtNTcwOSw3ICs1NzA5LDYgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworIHsibGRlcHgiLAlYKDMxLDI5KSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAorIAorIHsid2FpdGFzZWMiLAlYKDMxLDMwKSwgICAgICBYUlRSQVJCX01BU0ssIFBPV0VSOCwJUE9XRVI5LAkJezB9fSwKKy17IndhaXQiLAlYKDMxLDMwKSwJWFdDX01BU0ssICAgIFBPV0VSOSwJMCwJCXtXQ319LAorIAorIHsibHdlcHgiLAlYKDMxLDMxKSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAorIAorQEAgLTU3NjMsNyArNTc2Miw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKKyAKKyB7IndhaXRyc3YiLAlYKDMxLDYyKXwoMTw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAorIHsid2FpdGltcGwiLAlYKDMxLDYyKXwoMjw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAorLXsid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1dDfX0sCisreyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTJ8UE9XRVI5LCAwLAl7V0N9fSwKKyAKKyB7ImRjYnN0ZXAiLAlYUlQoMzEsNjMsMCksCVhSVF9NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7UkEwLCBSQn19LAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFjZGUxZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSAyZjdmMjM4OTc2NGVmMWQ2OTlmNmFkMzIwNTczMTQwMjRiN2U4NGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKKworQWRkIG1pcHM2NCB0YXJnZXQgdHJpcGxldHMgYW5kIGRlZmF1bHQgdG8gTjY0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTYtMDgvbXNnMDAwNDguaHRtbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ29sZC9jb25maWd1cmUudGd0IHwgMTQgKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ29sZC9jb25maWd1cmUudGd0IGIvZ29sZC9jb25maWd1cmUudGd0CitpbmRleCBhYTdlYzU1MmFlLi40NzA1MTUwNjJlIDEwMDY0NAorLS0tIGEvZ29sZC9jb25maWd1cmUudGd0CisrKysgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC0xNTMsNiArMTUzLDEzIEBAIGFhcmNoNjQqLSopCisgIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQorICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQorICA7OworK21pcHMqNjQqZWwqLSotKnxtaXBzKjY0KmxlKi0qLSopCisrIHRhcmdfb2JqPW1pcHMKKysgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCisrIHRhcmdfc2l6ZT02NAorKyB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKKysgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKKysgOzsKKyBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQorICB0YXJnX29iaj1taXBzCisgIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQorQEAgLTE2MCw2ICsxNjcsMTMgQEAgbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKKyAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCisgIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCisgIDs7CisrbWlwcyo2NCotKi0qKQorKyB0YXJnX29iaj1taXBzCisrIHRhcmdfbWFjaGluZT1FTV9NSVBTCisrIHRhcmdfc2l6ZT02NAorKyB0YXJnX2JpZ19lbmRpYW49dHJ1ZQorKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49ZmFsc2UKKysgOzsKKyBtaXBzKi0qLSopCisgIHRhcmdfb2JqPW1pcHMKKyAgdGFyZ19tYWNoaW5lPUVNX01JUFMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjViYTEwYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1Gcm9tIGI3NzI5MzQzMjA2ZmExOTZiOWExMTc0N2E5MmIzY2Y1NjMyNzcwNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjMzOjI3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTVdIHN5bmMgd2l0aCBPRSBsaWJ0b29sIGNoYW5nZXMKLQotQXBwbHkgdGhlc2UgcGF0Y2hlcyBmcm9tIG91ciBsaWJ0b29sIHBhdGNoZXMgYXMgbm90IG9ubHkgYXJlIHJlZHVuZGFudCBSUEFUSHMgYQotd2FzdGUgb2Ygc3BhY2UgYnV0IHRoZXkgY2FuIGNhdXNlIGluY29ycmVjdCBsaW5raW5nIHdoZW4gbmF0aXZlIHBhY2thZ2VzIGFyZQotcmVzdG9yZWQgZnJvbSBzc3RhdGUuCi0KLWZpeC1ycGF0aC5wYXRjaDoKLVdlIGRvbid0IHdhbnQgdG8gYWRkIFJQQVRIUyB3aGljaCBtYXRjaCBkZWZhdWx0IGxpbmtlcgotc2VhcmNoIHBhdGhzLCB0aGV5J3JlIGEgd2FzdGUgb2Ygc3BhY2UuIFRoaXMgcGF0Y2gKLWZpbHRlcnMgbGlidG9vbHMgbGlzdCBhbmQgcmVtb3ZlcyB0aGUgb25lcyB3ZSBkb24ndCBuZWVkLgotCi1ub3JtLXJwYXRoLnBhdGNoOgotTGlidG9vbCBtYXkgYmUgcGFzc2VkIGxpbmsgcGF0aHMgb2YgdGhlIGZvcm0gIi91c3IvbGliLy4uL2xpYiIsIHdoaWNoCi1mb29sIGl0cyBkZXRlY3Rpb24gY29kZSBpbnRvIHRoaW5raW5nIGl0IHNob3VsZCBiZSBpbmNsdWRlZCBhcyBhbgotUlBBVEggaW4gdGhlIGdlbmVyYXRlZCBiaW5hcnkuICBOb3JtYWxpemUgYmVmb3JlIGNvbXBhcmlzaW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDExZWU2ODRjY2MuLjNiMTlhYzE1MzIgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTgwNTMsOCArODA1MywxNiBAQCBFT0YKLSAJCSAgZXNhYwotIAkJZmkKLSAJICAgICAgZWxzZQotLQkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotLQkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCi0rICAgICAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQotKyAgICAgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KLSsgICAgICAgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJGxpYmRpciIKLSsgICAgICAgICAgICAgICAgbGliZGlyX25vcm09JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0rCSAgICAgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgotKwkgICAgICAgICoiICRsaWJkaXJfbm9ybSAiKikgOzsKLSsJICAgICAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgotKyAgICAgICAgICAgICAgICAgICA7OwotKwkgICAgICAgIGVzYWMKLSAJICAgICAgZmkKLSAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCi1AQCAtODc5MCw4ICs4Nzk4LDE2IEBAIEVPRgotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLS0JICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0rICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCi0rICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCi0rICAgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJGxpYmRpciIKLSsgICAgICAgICAgICBsaWJkaXJfbm9ybT0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKLSsJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KLSsJICAgICoiICRsaWJkaXJfbm9ybSAiKikgOzsKLSsJICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsgICAgICAgICAgICAgICBycGF0aCs9IiAkZmxhZyIKLSsgICAgICAgICAgICAgICA7OwotKwkgICAgZXNhYwotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLUBAIC04ODQxLDggKzg4NTcsMTQgQEAgRU9GCi0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZWxzZQotLQkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotLQkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSsgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKLSsgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KLSsJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KLSsJICAgICoiICRsaWJkaXIgIiopIDs7Ci0rCSAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSsgICAgICAgICAgICAgICA7OwotKwkgICAgZXNhYwotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtYmludXRpbHMtZW5hYmxlLXg4Nl82NC1wZXAtZm9yLXByb2R1Y2luZy1FRkktYmluYXJpZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtYmludXRpbHMtZW5hYmxlLXg4Nl82NC1wZXAtZm9yLXByb2R1Y2luZy1FRkktYmluYXJpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZTU2MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LWJpbnV0aWxzLWVuYWJsZS14ODZfNjQtcGVwLWZvci1wcm9kdWNpbmctRUZJLWJpbmFyaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIGQ1ZDc4MzkwM2UzMzUzMDJlNTYyYmFjOGRhMWEwODMzMzhkNzViMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyOSBOb3YgMjAxOCAxNzo0Njo0MCAtMDgwMAotU3ViamVjdDogW1BBVENIIDE1LzE1XSBiaW51dGlscyA6IGVuYWJsZSB4ODZfNjQtcGVwIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzCi0gb24geDg2LTY0Ci0KLUFkZCB4ODZfNjQtcGVwIGVtdWxhdGlvbiBzdXBwb3J0IHRvIHRoZSBzZXQgZW5hYmxlZCBmb3IgeDg2XzY0IHRhcmdldHMKLXRvIGVuYWJsZSB0aGUgbGlua2VyIHRvIHByb2R1Y2UgUG9ydGFibGUgRXhlY3V0YWJsZXMgZm9yIEVGSSBiaW5hcmllcy4KLQotRW5hYmxlcyBidWlsZGluZyB0aGUgeDg2LTY0IEVGSSB2YXJpYW50IG9mIHRoZSBYZW4gaHlwZXJ2aXNvciBmb3IKLXRoZSBPcGVuWFQgUHJvamVjdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBDbGFyayA8Y2hyaXN0b3BoZXIuY2xhcms2QGJhZXN5c3RlbXMuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJmZC9jb25maWcuYmZkICAgfCAyICstCi0gbGQvY29uZmlndXJlLnRndCB8IDUgKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IDM2MTRmZjc5ZDQuLmFlZjE0NDgwM2EgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlnLmJmZAotKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC02OTQsNyArNjk0LDcgQEAgY2FzZSAiJHt0YXJnfSIgaW4KLSAgICAgOzsKLSAgIHg4Nl82NC0qLWxpbnV4LSopCi0gICAgIHRhcmdfZGVmdmVjPXg4Nl82NF9lbGY2NF92ZWMKLS0gICAgdGFyZ19zZWx2ZWNzPSJpMzg2X2VsZjMyX3ZlYyBpYW1jdV9lbGYzMl92ZWMgeDg2XzY0X2VsZjMyX3ZlYyBpMzg2X3BlaV92ZWMgeDg2XzY0X3BlaV92ZWMgbDFvbV9lbGY2NF92ZWMgazFvbV9lbGY2NF92ZWMiCi0rICAgIHRhcmdfc2VsdmVjcz0iaTM4Nl9lbGYzMl92ZWMgaWFtY3VfZWxmMzJfdmVjIHg4Nl82NF9lbGYzMl92ZWMgaTM4Nl9wZWlfdmVjIHg4Nl82NF9wZWlfdmVjIGwxb21fZWxmNjRfdmVjIGsxb21fZWxmNjRfdmVjIHg4Nl82NF9wZV92ZWMgeDg2XzY0X3BlX2JlX3ZlYyBpMzg2X3BlX3ZlYyIKLSAgICAgd2FudDY0PXRydWUKLSAgICAgOzsKLSAgIHg4Nl82NC0qLW5hY2wqKQotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCAzNDdkZjZjM2Y2Li4xZTM3ZDc0N2E5IDEwMDY0NAotLS0tIGEvbGQvY29uZmlndXJlLnRndAotKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTI1Nyw4ICsyNTcsOSBAQCB4ODZfNjQtKi1saW51eC1nbnV4MzIpCXRhcmdfZW11bD1lbGYzMl94ODZfNjQKLSAJCQl0ZGlyX2VsZl9pYW1jdT1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LycgLWUgJ3MvLWxpbnV4LWdudXgzMi8tbGludXgtZ251LydgCi0gCQkJdGRpcl9lbGZfaTM4Nj1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LycgLWUgJ3MvLWxpbnV4LWdudXgzMi8tbGludXgtZ251LydgIDs7Ci0geDg2XzY0LSotbGludXgtKikJdGFyZ19lbXVsPWVsZl94ODZfNjQKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMl94ODZfNjQgZWxmX2kzODYgZWxmX2lhbWN1IGVsZl9sMW9tIGVsZl9rMW9tIgotLQkJCXRhcmdfZXh0cmFfbGlicGF0aD0iZWxmX2kzODYgZWxmMzJfeDg2XzY0IGVsZl9sMW9tIGVsZl9rMW9tIgotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyX3g4Nl82NCBlbGZfaTM4NiBlbGZfaWFtY3UgZWxmX2wxb20gZWxmX2sxb20gaTM4NnBlIGkzODZwZXAiCi0rCQkJdGFyZ19leHRyYV9saWJwYXRoPSJlbGZfaTM4NiBlbGYzMl94ODZfNjQgZWxmX2wxb20gZWxmX2sxb20gaTM4NnBlcCIKLSsJCQl0YXJnX2V4dHJhX29maWxlcz0iZGVmZmlsZXAubyBwZXAtZGxsLm8gcGUtZGxsLm8iCi0gCQkJdGRpcl9lbGZfaTM4Nj1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LydgIDs7Ci0gaVszLTddODYtKi1yZWRveCopCXRhcmdfZW11bD1lbGZfaTM4NgotIAkJCXRhcmdfZXh0cmFfZW11bHM9ZWxmX3g4Nl82NCA7OwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OTQ3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorRnJvbSAzOTJkNDc0YTcyZDM3YjY2OWY1M2FiOWYwZmE5MTNiOTU4YWY5M2Y2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozMzoyNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBzeW5jIHdpdGggT0UgbGlidG9vbCBjaGFuZ2VzCisKK0FwcGx5IHRoZXNlIHBhdGNoZXMgZnJvbSBvdXIgbGlidG9vbCBwYXRjaGVzIGFzIG5vdCBvbmx5IGFyZSByZWR1bmRhbnQgUlBBVEhzIGEKK3dhc3RlIG9mIHNwYWNlIGJ1dCB0aGV5IGNhbiBjYXVzZSBpbmNvcnJlY3QgbGlua2luZyB3aGVuIG5hdGl2ZSBwYWNrYWdlcyBhcmUKK3Jlc3RvcmVkIGZyb20gc3N0YXRlLgorCitmaXgtcnBhdGgucGF0Y2g6CitXZSBkb24ndCB3YW50IHRvIGFkZCBSUEFUSFMgd2hpY2ggbWF0Y2ggZGVmYXVsdCBsaW5rZXIKK3NlYXJjaCBwYXRocywgdGhleSdyZSBhIHdhc3RlIG9mIHNwYWNlLiBUaGlzIHBhdGNoCitmaWx0ZXJzIGxpYnRvb2xzIGxpc3QgYW5kIHJlbW92ZXMgdGhlIG9uZXMgd2UgZG9uJ3QgbmVlZC4KKworbm9ybS1ycGF0aC5wYXRjaDoKK0xpYnRvb2wgbWF5IGJlIHBhc3NlZCBsaW5rIHBhdGhzIG9mIHRoZSBmb3JtICIvdXNyL2xpYi8uLi9saWIiLCB3aGljaAorZm9vbCBpdHMgZGV0ZWN0aW9uIGNvZGUgaW50byB0aGlua2luZyBpdCBzaG91bGQgYmUgaW5jbHVkZWQgYXMgYW4KK1JQQVRIIGluIHRoZSBnZW5lcmF0ZWQgYmluYXJ5LiAgTm9ybWFsaXplIGJlZm9yZSBjb21wYXJpc2lvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCAxMWVlNjg0Y2NjLi4zYjE5YWMxNTMyIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC04MDUzLDggKzgwNTMsMTYgQEAgRU9GCisgCQkgIGVzYWMKKyAJCWZpCisgCSAgICAgIGVsc2UKKy0JCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0JCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKKysgICAgICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCisrICAgICAgICAgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiRsaWJkaXIiCisrICAgICAgICAgICAgICAgIGxpYmRpcl9ub3JtPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorKwkgICAgICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KKysJICAgICAgICAqIiAkbGliZGlyX25vcm0gIiopIDs7CisrCSAgICAgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKyAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKKysgICAgICAgICAgICAgICAgICAgOzsKKysJICAgICAgICBlc2FjCisgCSAgICAgIGZpCisgCSAgICBlbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorQEAgLTg3OTAsOCArODc5OCwxNiBAQCBFT0YKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCistCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQorKyAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgorKyAgICAgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiRsaWJkaXIiCisrICAgICAgICAgICAgbGliZGlyX25vcm09JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisrCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisrCSAgICAqIiAkbGliZGlyX25vcm0gIiopIDs7CisrCSAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrICAgICAgICAgICAgICAgcnBhdGgrPSIgJGZsYWciCisrICAgICAgICAgICAgICAgOzsKKysJICAgIGVzYWMKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCitAQCAtODg0MSw4ICs4ODU3LDE0IEBAIEVPRgorIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0JICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCisrICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCisrCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisrCSAgICAqIiAkbGliZGlyICIqKSA7OworKwkgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKyAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgICAgOzsKKysJICAgIGVzYWMKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LUNoZWNrLWZvci1jbGFuZy1iZWZvcmUtY2hlY2tpbmctZ2NjLXZlcnNpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LUNoZWNrLWZvci1jbGFuZy1iZWZvcmUtY2hlY2tpbmctZ2NjLXZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY5NGI0MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtQ2hlY2stZm9yLWNsYW5nLWJlZm9yZS1jaGVja2luZy1nY2MtdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDY3NTkwYTQ0YzEyNTY0OTFmYTY3NDQyNmYwMTcwZDVkMDUzNzdkMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNSBBcHIgMjAyMCAxNDoxNzoyMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDE2LzE2XSBDaGVjayBmb3IgY2xhbmcgYmVmb3JlIGNoZWNraW5nIGdjYyB2ZXJzaW9uCisKK0NsYW5nIGFkdmVydGlzZXMgaXRzZWxmIHRvIGJlIGdjYyA0LjIuMSwgc28gd2hlbiBjb21waWxpbmcgdGhpcyB0ZXN0CitoZXJlIGZhaWxzIHNpbmNlIGdjYyA8IDQuNC41IGRpZCBub3Qgc3VwcG9ydCAtc3RhdGljLWxpYnN0ZGMrKyBidXQgdGhhdHMKK25vdCB0cnVlIGZvciBjbGFuZywgc28gaXRzIGJldHRlciB0byBtYWtlIGFuIGFkZGl0aW9uYWwgY2hlY2sgZm9yIGNsYW5nCitiZWZvcmUgcmVzb3J0aW5nIHRvIGdjYyB2ZXJzaW9uIGNoZWNrLiBUaGlzIHNob3VsZCBsZXQgY2xhbmcgZW5hYmxlCitzdGF0aWMgbGlic3RkYysrIGxpbmtpbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA1OTBiMDNjMmRhMC4uNDZmMTE2ZmRiNTQgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTUxNDAsNyArNTE0MCw3IEBAIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudQorIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCistI2lmIChfX0dOVUNfXyA8IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkKKysjaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiAoKF9fR05VQ19fIDwgNCkgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KSkKKyAjZXJyb3IgLXN0YXRpYy1saWJzdGRjKysgbm90IGltcGxlbWVudGVkCisgI2VuZGlmCisgaW50IG1haW4oKSB7fQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZDNmODVlNmY1ZDUuLmMwZWIxMzQzMTIxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMzA5LDcgKzEzMDksNyBAQCBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGcrKyBhY2NlcHRzIC1zdGF0aWMtbGlic3RkYysrIC1zdGF0aWMtbGliZ2NjXSkKKyAgIEFDX0xBTkdfUFVTSChDKyspCisgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWworLSNpZiAoX19HTlVDX18gPCA0KSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpCisrI2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyA8IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkpCisgI2Vycm9yIC1zdGF0aWMtbGlic3RkYysrIG5vdCBpbXBsZW1lbnRlZAorICNlbmRpZgorIGludCBtYWluKCkge31dKV0sCistLSAKKzIuMjYuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xMjk3Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTEyOTcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2QxZDY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTEyOTcyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzMGJjYzAxNDc4NDMzYTFjYjA1YjM2ZGM1YzRiZWVmN2QyYzg5YjViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjEgSnVuIDIwMTkgMTE6NTE6MzggKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNDY4OSwgc3RyaW5nIHRhYmxlIGNvcnJ1cHRpb24KLQotVGhlIHRlc3RjYXNlIGluIHRoZSBQUiBoYWQgYSBlX3Noc3RybmR4IHNlY3Rpb24gb2YgdHlwZSBTSFRfR1JPVVAuCi1oZHItPmNvbnRlbnRzIHdlcmUgaW5pdGlhbGl6ZWQgYnkgc2V0dXBfZ3JvdXAgcmF0aGVyIHRoYW4gYmVpbmcgcmVhZAotZnJvbSB0aGUgZmlsZSwgdGh1cyBsYXN0IGJ5dGUgd2FzIG5vdCB6ZXJvIGFuZCBzdHJpbmcgZGVyZWZlcmVuY2UgcmFuCi1vZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgotCi0JUFIgMjQ2ODkKLQkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogQ2hlY2sgdHlwZSBvZiBlX3Noc3RybmR4IHNlY3Rpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTktMTI5NzIKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNSArKysrKwotIGJmZC9lbGZjb2RlLmggfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZwotaW5kZXggOTFmMDllNjM0Ni4uZTY2ZmI0MGEyYyAxMDA2NDQKLS0tLSBhL2JmZC9DaGFuZ2VMb2cKLSsrKyBiL2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTktMDYtMjEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDY4OQotKwkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogQ2hlY2sgdHlwZSBvZiBlX3Noc3RybmR4IHNlY3Rpb24uCi0rCi0gMjAxOS0wMi0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gCVBSIDI0MjM2Ci1kaWZmIC0tZ2l0IGEvYmZkL2VsZmNvZGUuaCBiL2JmZC9lbGZjb2RlLmgKLWluZGV4IGVjNWVhNzY2ZGUuLmEzNWE2MjkwODcgMTAwNjQ0Ci0tLS0gYS9iZmQvZWxmY29kZS5oCi0rKysgYi9iZmQvZWxmY29kZS5oCi1AQCAtNzU1LDcgKzc1NSw4IEBAIGVsZl9vYmplY3RfcCAoYmZkICphYmZkKQotICAgLyogQSBmdXJ0aGVyIHNhbml0eSBjaGVjay4gICovCi0gICBpZiAoaV9laGRycC0+ZV9zaG51bSAhPSAwKQotICAgICB7Ci0tICAgICAgaWYgKGlfZWhkcnAtPmVfc2hzdHJuZHggPj0gZWxmX251bXNlY3Rpb25zIChhYmZkKSkKLSsgICAgICBpZiAoaV9laGRycC0+ZV9zaHN0cm5keCA+PSBlbGZfbnVtc2VjdGlvbnMgKGFiZmQpCi0rCSAgfHwgaV9zaGRycFtpX2VoZHJwLT5lX3Noc3RybmR4XS5zaF90eXBlICE9IFNIVF9TVFJUQUIpCi0gCXsKLSAJICAvKiBQUiAyMjU3OgotIAkgICAgIFdlIHVzZWQgdG8ganVzdCBnb3RvIGdvdF93cm9uZ19mb3JtYXRfZXJyb3IgaGVyZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQyNTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDI1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxNWE4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDI1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gZGY3OGJlMDVkYWY0ZWIwN2Y2MGY1MGVjMTA4MGNiOTc5YWYzMmVjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1hcnhpbiA8bWFyeGluQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFR1ZSwgMjMgSnVsIDIwMTkgMDc6MzM6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliaWJlcnR5OiBDaGVjayB6ZXJvIHZhbHVlIHNoc3RybmR4IGluIHNpbXBsZS1vYmplY3QtZWxmLmMKLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjczNzE4IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1DVkU6IENWRS0yMDE5LTE0MjUwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGdjYzogaHR0cHM6Ly9nY2MuZ251Lm9yZy92aWV3Y3ZzL2djYz92aWV3PXJldmlzaW9uJnJldmlzaW9uPTI3MzcxOF0KLVtSZW1vdmVkIENoYW5nZWxvZyBlbnRyeV0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYyBiL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi1pbmRleCA1MDIzODg5OTFhMDguLmJkZWU5NjM2MzRkNiAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi0rKysgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwotQEAgLTU0OCw3ICs1NDgsMTUgQEAgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2ggKHVuc2lnbmVkIGNoYXIgaGVhZGVyW1NJTVBMRV9PQkpFQ1RfTUFUQ0hfSEVBREVSX0xFTl0sCi0gICAgICAgWERFTEVURSAoZW9yKTsKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotLQotKyAgCi0rICBpZiAoZW9yLT5zaHN0cm5keCA9PSAwKQotKyAgICB7Ci0rICAgICAgKmVycm1zZyA9ICJpbnZhbGlkIEVMRiBzaHN0cm5keCA9PSAwIjsKLSsgICAgICAqZXJyID0gMDsKLSsgICAgICBYREVMRVRFIChlb3IpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rICAKLSAgIHJldHVybiAodm9pZCAqKSBlb3I7Ci0gfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQ0NDQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDQ0NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViOWE5Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDQ0NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZTE3ODY5ZGI5OTE5NTg0OTgyNmVhYWY1ZDJkMGViMmNmZGQ3YTJhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgNSBBdWcgMjAxOSAxMDo0MDozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBDYXRjaCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiByZWFkZWxmIHdoZW4gcHJvY2Vzc2luZwotIGNvcnJ1cHQgYmluYXJpZXMuCi0KLQlQUiAyNDgyOQotCSogcmVhZGVsZi5jIChhcHBseV9yZWxvY2F0aW9ucyk6IENhdGNoIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93Ci0Jd2hpbHN0IGNoZWNraW5nIHJlbG9jIGxvY2F0aW9uIGFnYWluc3Qgc2VjdGlvbiBzaXplLgotCi1DVkU6IENWRS0yMDE5LTE0NDQ0Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDtoPWUxNzg2OWRiOTkxOTU4NDk4MjZlYWFmNWQyZDBlYjJjZmRkN2EyYTddCi1bUmVtb3ZlZCBDaGFuZ2Vsb2cgZW50cnldCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCBiODk2YWQ5ZjQwNi4uZTc4NWZkZTQzZTcgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTEzMzY2LDcgKzEzMzY2LDcgQEAgYXBwbHlfcmVsb2NhdGlvbnMgKEZpbGVkYXRhICogICAgICAgICAgICAgICAgIGZpbGVkYXRhLAotIAkgICAgfQotIAotIAkgIHJsb2MgPSBzdGFydCArIHJwLT5yX29mZnNldDsKLS0JICBpZiAoKHJsb2MgKyByZWxvY19zaXplKSA+IGVuZCB8fCAocmxvYyA8IHN0YXJ0KSkKLSsJICBpZiAocmxvYyA+PSBlbmQgfHwgKHJsb2MgKyByZWxvY19zaXplKSA+IGVuZCB8fCAocmxvYyA8IHN0YXJ0KSkKLSAJICAgIHsKLSAJICAgICAgd2FybiAoXygic2tpcHBpbmcgaW52YWxpZCByZWxvY2F0aW9uIG9mZnNldCAweCVseCBpbiBzZWN0aW9uICVzXG4iKSwKLSAJCSAgICAodW5zaWduZWQgbG9uZykgcnAtPnJfb2Zmc2V0LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjZTBiOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUZyb20gMDlkZDEzNWRmOWViYzdhNGI2NDA1MzdlMjNlMjZhMDNhMjg4YTc4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgT2N0IDIwMTkgMDA6MDc6MjkgKzEwMzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNTA3OCwgc3RhY2sgb3ZlcmZsb3cgaW4gZnVuY3Rpb24gZmluZF9hYnN0cmFjdF9pbnN0YW5jZQotCi1TZWxlY3RpdmVseSBiYWNrcG9ydGluZyBmaXggZm9yIGJmZC9kd2FyZjIuYywgYnV0IG5vdCB0aGUgQ2hhbmdlTG9nCi1maWxlLiBUaGVyZSBhcmUgbmV3ZXIgdmVyc2lvbnMgb2YgYmludXRpbHMsIGJ1dCBub25lIG9mIHRoZW0gY29udGFpbiB0aGUKLWNvbW1pdCBmaXhpbmcgQ1ZFLTIwMTktMTc0NTAsIHNvIGJhY2twb3J0IGl0IHRvIG1hc3RlciBhbmQgemV1cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWJpbnV0aWxzLWdkYi5naXQ7aD0wNjNjNTExYmQ3OV0KLUNWRTogQ1ZFLTIwMTktMTc0NTAKLVNpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgotCi0JUFIgMjUwNzgKLQkqIGR3YXJmMi5jIChmaW5kX2Fic3RyYWN0X2luc3RhbmNlKTogRGVsZXRlIG9yaWdfaW5mb19wdHIsIGFkZAotCXJlY3VyX2NvdW50LiAgRXJyb3Igb24gcmVjdXJfY291bnQgcmVhY2hpbmcgMTAwIHJhdGhlciB0aGFuCi0JaW5mb19wdHIgbWF0Y2hpbmcgb3JpZ19pbmZvX3B0ci4gIEFkanVzdCBjYWxscy4KLQotLS0tCi0gYmZkL2R3YXJmMi5jIHwgMzUgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvZHdhcmYyLmMgYi9iZmQvZHdhcmYyLmMKLWluZGV4IDBiNGU0ODU1ODIuLjIwZWM5ZTJlNTYgMTAwNjQ0Ci0tLS0gYS9iZmQvZHdhcmYyLmMKLSsrKyBiL2JmZC9kd2FyZjIuYwotQEAgLTI4MDMsMTMgKzI4MDMsMTMgQEAgbG9va3VwX3N5bWJvbF9pbl92YXJpYWJsZV90YWJsZSAoc3RydWN0IGNvbXBfdW5pdCAqdW5pdCwKLSB9Ci0gCi0gc3RhdGljIGJmZF9ib29sZWFuCi0tZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAoc3RydWN0IGNvbXBfdW5pdCAqICAgdW5pdCwKLS0JCQliZmRfYnl0ZSAqICAgICAgICAgICBvcmlnX2luZm9fcHRyLAotLQkJCXN0cnVjdCBhdHRyaWJ1dGUgKiAgIGF0dHJfcHRyLAotLQkJCWNvbnN0IGNoYXIgKiogICAgICAgIHBuYW1lLAotLQkJCWJmZF9ib29sZWFuICogICAgICAgIGlzX2xpbmthZ2UsCi0tCQkJY2hhciAqKiAgICAgICAgICAgICAgZmlsZW5hbWVfcHRyLAotLQkJCWludCAqICAgICAgICAgICAgICAgIGxpbmVudW1iZXJfcHRyKQotK2ZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHN0cnVjdCBjb21wX3VuaXQgKnVuaXQsCi0rCQkJc3RydWN0IGF0dHJpYnV0ZSAqYXR0cl9wdHIsCi0rCQkJdW5zaWduZWQgaW50IHJlY3VyX2NvdW50LAotKwkJCWNvbnN0IGNoYXIgKipwbmFtZSwKLSsJCQliZmRfYm9vbGVhbiAqaXNfbGlua2FnZSwKLSsJCQljaGFyICoqZmlsZW5hbWVfcHRyLAotKwkJCWludCAqbGluZW51bWJlcl9wdHIpCi0gewotICAgYmZkICphYmZkID0gdW5pdC0+YWJmZDsKLSAgIGJmZF9ieXRlICppbmZvX3B0cjsKLUBAIC0yODIwLDYgKzI4MjAsMTQgQEAgZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAoc3RydWN0IGNvbXBfdW5pdCAqICAgdW5pdCwKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKLSAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwotIAotKyAgaWYgKHJlY3VyX2NvdW50ID09IDEwMCkKLSsgICAgewotKyAgICAgIF9iZmRfZXJyb3JfaGFuZGxlcgotKwkoXygiRFdBUkYgZXJyb3I6IGFic3RyYWN0IGluc3RhbmNlIHJlY3Vyc2lvbiBkZXRlY3RlZCIpKTsKLSsgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLSsgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSsKLSAgIC8qIERXX0ZPUk1fcmVmX2FkZHIgY2FuIHJlZmVyZW5jZSBhbiBlbnRyeSBpbiBhIGRpZmZlcmVudCBDVS4gSXQKLSAgICAgIGlzIGFuIG9mZnNldCBmcm9tIHRoZSAuZGVidWdfaW5mbyBzZWN0aW9uLCBub3QgdGhlIGN1cnJlbnQgQ1UuICAqLwotICAgaWYgKGF0dHJfcHRyLT5mb3JtID09IERXX0ZPUk1fcmVmX2FkZHIpCi1AQCAtMjkzOSwxNSArMjk0Nyw2IEBAIGZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHN0cnVjdCBjb21wX3VuaXQgKiAgIHVuaXQsCi0gCQkJCQkgaW5mb19wdHIsIGluZm9fcHRyX2VuZCk7Ci0gCSAgICAgIGlmIChpbmZvX3B0ciA9PSBOVUxMKQotIAkJYnJlYWs7Ci0tCSAgICAgIC8qIEl0IGRvZXNuJ3QgZXZlciBtYWtlIHNlbnNlIGZvciBEV19BVF9zcGVjaWZpY2F0aW9uIHRvCi0tCQkgcmVmZXIgdG8gdGhlIHNhbWUgRElFLiAgU3RvcCBzaW1wbGUgcmVjdXJzaW9uLiAgKi8KLS0JICAgICAgaWYgKGluZm9fcHRyID09IG9yaWdfaW5mb19wdHIpCi0tCQl7Ci0tCQkgIF9iZmRfZXJyb3JfaGFuZGxlcgotLQkJICAgIChfKCJEV0FSRiBlcnJvcjogYWJzdHJhY3QgaW5zdGFuY2UgcmVjdXJzaW9uIGRldGVjdGVkIikpOwotLQkJICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLS0JCSAgcmV0dXJuIEZBTFNFOwotLQkJfQotIAkgICAgICBzd2l0Y2ggKGF0dHIubmFtZSkKLSAJCXsKLSAJCWNhc2UgRFdfQVRfbmFtZToKLUBAIC0yOTYxLDcgKzI5NjAsNyBAQCBmaW5kX2Fic3RyYWN0X2luc3RhbmNlIChzdHJ1Y3QgY29tcF91bml0ICogICB1bml0LAotIAkJICAgIH0KLSAJCSAgYnJlYWs7Ci0gCQljYXNlIERXX0FUX3NwZWNpZmljYXRpb246Ci0tCQkgIGlmICghZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAodW5pdCwgaW5mb19wdHIsICZhdHRyLAotKwkJICBpZiAoIWZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHVuaXQsICZhdHRyLCByZWN1cl9jb3VudCArIDEsCi0gCQkJCQkgICAgICAgJm5hbWUsIGlzX2xpbmthZ2UsCi0gCQkJCQkgICAgICAgZmlsZW5hbWVfcHRyLCBsaW5lbnVtYmVyX3B0cikpCi0gCQkgICAgcmV0dXJuIEZBTFNFOwotQEAgLTMxNzUsNyArMzE3NCw3IEBAIHNjYW5fdW5pdF9mb3Jfc3ltYm9scyAoc3RydWN0IGNvbXBfdW5pdCAqdW5pdCkKLSAKLSAJCWNhc2UgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luOgotIAkJY2FzZSBEV19BVF9zcGVjaWZpY2F0aW9uOgotLQkJICBpZiAoIWZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHVuaXQsIGluZm9fcHRyLCAmYXR0ciwKLSsJCSAgaWYgKCFmaW5kX2Fic3RyYWN0X2luc3RhbmNlICh1bml0LCAmYXR0ciwgMCwKLSAJCQkJCSAgICAgICAmZnVuYy0+bmFtZSwKLSAJCQkJCSAgICAgICAmZnVuYy0+aXNfbGlua2FnZSwKLSAJCQkJCSAgICAgICAmZnVuYy0+ZmlsZSwKLS0tIAotMi4yMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE3NDUxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNmE1MzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDAxOTI0MzgwNTFhN2U3ODE1ODU2NDdkNTU4MWEyYTZmNjJmZGEzNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE9jdCAyMDE5IDEwOjQ3OjEzICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjUwNzAsIFNFR1YgaW4gZnVuY3Rpb24gX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUKLQotU2VsZWN0aXZlbHkgYmFja3BvcnRpbmcgZml4IGZvciBiZmQvZHdhcmYyLmMsIGJ1dCBub3QgdGhlIENoYW5nZUxvZwotZmlsZS4gVGhlcmUgYXJlIG5ld2VyIHZlcnNpb25zIG9mIGJpbnV0aWxzLCBidXQgbm9uZSBvZiB0aGVtIGNvbnRhaW4gdGhlCi1jb21taXQgZml4aW5nIENWRS0yMDE5LTE3NDUxLCBzbyBiYWNrcG9ydCBpdCB0byBtYXN0ZXIgYW5kIHpldXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDtoPTMzNmJmYmViMTg0OF0KLUNWRTogQ1ZFLTIwMTktMTc0NTEKLVNpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgotCi0KLUV2aWwgdGVzdGNhc2Ugd2l0aCB0d28gZGVidWcgaW5mbyBzZWN0aW9ucywgd2l0aCBzaXplcyBvZiAyYWFhYWJhYzRlYzEKLWFuZCBmZmZmZDU1NTU0NTNiMTQwIHJlc3VsdCBpbiBhIHRvdGFsIHNpemUgb2YgMS4gIFJlYWRpbmcgdGhlIGZpcnN0Ci1zZWN0aW9uIG9mIGNvdXJzZSBvdmVyZmxvd3MgdGhlIGJ1ZmZlciBhbmQgdHJhbXBsZXMgb24gb3RoZXIgbWVtb3J5LgotCi0JUFIgMjUwNzAKLQkqIGR3YXJmMi5jIChfYmZkX2R3YXJmMl9zbHVycF9kZWJ1Z19pbmZvKTogQ2F0Y2ggb3ZlcmZsb3cgb2YKLQl0b3RhbF9zaXplIGNhbGN1bGF0aW9uLgotLS0tCi0gYmZkL2R3YXJmMi5jIHwgMTEgKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2R3YXJmMi5jIGIvYmZkL2R3YXJmMi5jCi1pbmRleCAwYjRlNDg1NTgyLi5hOTE1OTdiMWQwIDEwMDY0NAotLS0tIGEvYmZkL2R3YXJmMi5jCi0rKysgYi9iZmQvZHdhcmYyLmMKLUBAIC00NDI2LDcgKzQ0MjYsMTYgQEAgX2JmZF9kd2FyZjJfc2x1cnBfZGVidWdfaW5mbyAoYmZkICphYmZkLCBiZmQgKmRlYnVnX2JmZCwKLSAgICAgICBmb3IgKHRvdGFsX3NpemUgPSAwOwotIAkgICBtc2VjOwotIAkgICBtc2VjID0gZmluZF9kZWJ1Z19pbmZvIChkZWJ1Z19iZmQsIGRlYnVnX3NlY3Rpb25zLCBtc2VjKSkKLS0JdG90YWxfc2l6ZSArPSBtc2VjLT5zaXplOwotKwl7Ci0rCSAgLyogQ2F0Y2ggUFIyNTA3MCB0ZXN0Y2FzZSBvdmVyZmxvd2luZyBzaXplIGNhbGN1bGF0aW9uIGhlcmUuICAqLwotKwkgIGlmICh0b3RhbF9zaXplICsgbXNlYy0+c2l6ZSA8IHRvdGFsX3NpemUKLSsJICAgICAgfHwgdG90YWxfc2l6ZSArIG1zZWMtPnNpemUgPCBtc2VjLT5zaXplKQotKwkgICAgewotKwkgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3Jfbm9fbWVtb3J5KTsKLSsJICAgICAgcmV0dXJuIEZBTFNFOwotKwkgICAgfQotKwkgIHRvdGFsX3NpemUgKz0gbXNlYy0+c2l6ZTsKLSsJfQotIAotICAgICAgIHN0YXNoLT5pbmZvX3B0cl9tZW1vcnkgPSAoYmZkX2J5dGUgKikgYmZkX21hbGxvYyAodG90YWxfc2l6ZSk7Ci0gICAgICAgaWYgKHN0YXNoLT5pbmZvX3B0cl9tZW1vcnkgPT0gTlVMTCkKLS0tIAotMi4yMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDI1Mzk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotRnJvbSBjMTIwMjA1N2ViOTE2MWE4NmFmMjdkODY3NzAzMjM1ZmVlN2I3NTU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxMCBBcHIgMjAxOSAxNTo0OTozNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBQdWxsIGluIHBhdGNoIGZvciBsaWJpYmVydHkgdGhhdCBmaXhlcyBhIHN0YWNrIGV4aGF1c3Rpb24gYnVnCi0gd2hlbiBkZW1hbmdsaW5nIGEgcGF0aGFsb2dpY2FsbHkgY29uc3RydWN0ZWQgbWFuZ2xlZCBuYW1lLgotCi0JUFIgODkzOTQKLQkqIGNwLWRlbWFuZ2xlLmMgKGNwbHVzX2RlbWFuZ2xlX2ZpbGxfbmFtZSk6IFJlamVjdCBuZWdhdGl2ZQotCWxlbmd0aHMuCi0JKGRfY291bnRfdGVtcGxhdGVzX3Njb3Blcyk6IFJlcGxhY2UgbnVtX3RlbXBsYXRlcyBhbmQgbnVtX3Njb3BlcwotCXBhcmFtZXRlcnMgd2l0aCBhIHN0cnVjdCBkX3ByaW50X2luZm8gcG9pbnRlciBwYXJhbWV0ZXIuICBBZGp1c3QKLQlib2R5IG9mIHRoZSBmdW5jdGlvbiBhY2NvcmRpbmdseS4gIEFkZCByZWN1cnNpb24gY291bnRlciBhbmQgY2hlY2sKLQl0aGF0IHRoZSByZWN1cnNpb24gbGltaXQgaXMgbm90IHJlYWNoZWQuCi0JKGRfcHJpbnRfaW5pdCk6IFBhc3MgZHBpIHBhcmFtZXRlciB0byBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMuCi0JUmVzZXQgcmVjdXJzaW9uIGNvdW50ZXIgYWZ0ZXJ3YXJkcywgdW5sZXNzIHRoZSByZWN1cnNpb24gbGltaXQgd2FzCi0JcmVhY2hlZC4KLQotQ1ZFOiBDVkUtMjAxOS05MDcxCi1DVkU6IENWRS0yMDE5LTkwNzAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKysrKysrCi0gbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMgfCA0OCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IGNkNjMxYTE1YjYuLjRkZjNhYWE2MmMgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxOSBAQAotKzIwMTktMDQtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCSogbGliaWJlcnR5OiBTeW5jIHdpdGggZ2NjLiAgQnJpbmcgaW46Ci0rCTIwMTktMDQtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIDg5Mzk0Ci0rCSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfZmlsbF9uYW1lKTogUmVqZWN0IG5lZ2F0aXZlCi0rCWxlbmd0aHMuCi0rCShkX2NvdW50X3RlbXBsYXRlc19zY29wZXMpOiBSZXBsYWNlIG51bV90ZW1wbGF0ZXMgYW5kIG51bV9zY29wZXMKLSsJcGFyYW1ldGVycyB3aXRoIGEgc3RydWN0IGRfcHJpbnRfaW5mbyBwb2ludGVyIHBhcmFtZXRlci4gIEFkanVzdAotKwlib2R5IG9mIHRoZSBmdW5jdGlvbiBhY2NvcmRpbmdseS4gIEFkZCByZWN1cnNpb24gY291bnRlciBhbmQgY2hlY2sKLSsJdGhhdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIG5vdCByZWFjaGVkLgotKwkoZF9wcmludF9pbml0KTogUGFzcyBkcGkgcGFyYW1ldGVyIHRvIGRfY291bnRfdGVtcGxhdGVzX3Njb3Blcy4KLSsJUmVzZXQgcmVjdXJzaW9uIGNvdW50ZXIgYWZ0ZXJ3YXJkcywgdW5sZXNzIHRoZSByZWN1cnNpb24gbGltaXQgd2FzCi0rCXJlYWNoZWQuCi0rCi0gMjAxOC0wNi0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJMi4zMiBicmFuY2ggY3JlYXRlZC4KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvY3AtZGVtYW5nbGUuYyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi1pbmRleCBiMzRiNDg1NjkyLi43NzliNGU3NjNhIDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKLSsrKyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi1AQCAtODYxLDcgKzg2MSw3IEBAIENQX1NUQVRJQ19JRl9HTElCQ1BQX1YzCi0gaW50Ci0gY3BsdXNfZGVtYW5nbGVfZmlsbF9uYW1lIChzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpwLCBjb25zdCBjaGFyICpzLCBpbnQgbGVuKQotIHsKLS0gIGlmIChwID09IE5VTEwgfHwgcyA9PSBOVUxMIHx8IGxlbiA9PSAwKQotKyAgaWYgKHAgPT0gTlVMTCB8fCBzID09IE5VTEwgfHwgbGVuIDw9IDApCi0gICAgIHJldHVybiAwOwotICAgcC0+ZF9wcmludGluZyA9IDA7Ci0gICBwLT50eXBlID0gREVNQU5HTEVfQ09NUE9ORU5UX05BTUU7Ci1AQCAtNDA2MSw3ICs0MDYxLDcgQEAgZF9ncm93YWJsZV9zdHJpbmdfY2FsbGJhY2tfYWRhcHRlciAoY29uc3QgY2hhciAqcywgc2l6ZV90IGwsIHZvaWQgKm9wYXF1ZSkKLSAgICBhcmUgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBudW1iZXJzIGVuY291bnRlcmVkLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoaW50ICpudW1fdGVtcGxhdGVzLCBpbnQgKm51bV9zY29wZXMsCi0rZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChzdHJ1Y3QgZF9wcmludF9pbmZvICpkcGksCi0gCQkJICBjb25zdCBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpkYykKLSB7Ci0gICBpZiAoZGMgPT0gTlVMTCkKLUBAIC00MDgxLDEzICs0MDgxLDEzIEBAIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoaW50ICpudW1fdGVtcGxhdGVzLCBpbnQgKm51bV9zY29wZXMsCi0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1RFTVBMQVRFOgotLSAgICAgICgqbnVtX3RlbXBsYXRlcykrKzsKLSsgICAgICBkcGktPm51bV9jb3B5X3RlbXBsYXRlcysrOwotICAgICAgIGdvdG8gcmVjdXJzZV9sZWZ0X3JpZ2h0OwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9SRUZFUkVOQ0U6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1JWQUxVRV9SRUZFUkVOQ0U6Ci0gICAgICAgaWYgKGRfbGVmdCAoZGMpLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9URU1QTEFURV9QQVJBTSkKLS0JKCpudW1fc2NvcGVzKSsrOwotKwlkcGktPm51bV9zYXZlZF9zY29wZXMrKzsKLSAgICAgICBnb3RvIHJlY3Vyc2VfbGVmdF9yaWdodDsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUVVBTF9OQU1FOgotQEAgLTQxNTIsNDIgKzQxNTIsNDIgQEAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChpbnQgKm51bV90ZW1wbGF0ZXMsIGludCAqbnVtX3Njb3BlcywKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfVEFHR0VEX05BTUU6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0NMT05FOgotICAgICByZWN1cnNlX2xlZnRfcmlnaHQ6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkX2xlZnQgKGRjKSk7Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkX3JpZ2h0IChkYykpOwotKyAgICAgIC8qIFBSIDg5Mzk0IC0gQ2hlY2sgZm9yIHRvbyBtdWNoIHJlY3Vyc2lvbi4gICovCi0rICAgICAgaWYgKGRwaS0+cmVjdXJzaW9uID4gREVNQU5HTEVfUkVDVVJTSU9OX0xJTUlUKQotKwkvKiBGSVhNRTogVGhlcmUgb3VnaHQgdG8gYmUgYSB3YXkgdG8gcmVwb3J0IHRvIHRoZQotKwkgICB1c2VyIHRoYXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLiAgKi8KLSsJcmV0dXJuOwotKwotKyAgICAgICsrIGRwaS0+cmVjdXJzaW9uOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkX2xlZnQgKGRjKSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRfcmlnaHQgKGRjKSk7Ci0rICAgICAgLS0gZHBpLT5yZWN1cnNpb247Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0NUT1I6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkYy0+dS5zX2N0b3IubmFtZSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjLT51LnNfY3Rvci5uYW1lKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfRFRPUjoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRjLT51LnNfZHRvci5uYW1lKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMtPnUuc19kdG9yLm5hbWUpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9FWFRFTkRFRF9PUEVSQVRPUjoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRjLT51LnNfZXh0ZW5kZWRfb3BlcmF0b3IubmFtZSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjLT51LnNfZXh0ZW5kZWRfb3BlcmF0b3IubmFtZSk7Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0ZJWEVEX1RZUEU6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGMtPnUuc19maXhlZC5sZW5ndGgpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYy0+dS5zX2ZpeGVkLmxlbmd0aCk7Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0dMT0JBTF9DT05TVFJVQ1RPUlM6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0dMT0JBTF9ERVNUUlVDVE9SUzoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRfbGVmdCAoZGMpKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZF9sZWZ0IChkYykpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9MQU1CREE6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0RFRkFVTFRfQVJHOgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZGMtPnUuc191bmFyeV9udW0uc3ViKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMtPnUuc191bmFyeV9udW0uc3ViKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotIH0KLUBAIC00MjIyLDggKzQyMjIsMTIgQEAgZF9wcmludF9pbml0IChzdHJ1Y3QgZF9wcmludF9pbmZvICpkcGksIGRlbWFuZ2xlX2NhbGxiYWNrcmVmIGNhbGxiYWNrLAotICAgZHBpLT5uZXh0X2NvcHlfdGVtcGxhdGUgPSAwOwotICAgZHBpLT5udW1fY29weV90ZW1wbGF0ZXMgPSAwOwotIAotLSAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzICgmZHBpLT5udW1fY29weV90ZW1wbGF0ZXMsCi0tCQkJICAgICZkcGktPm51bV9zYXZlZF9zY29wZXMsIGRjKTsKLSsgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYyk7Ci0rICAvKiBJZiB3ZSBkaWQgbm90IHJlYWNoIHRoZSByZWN1cnNpb24gbGltaXQsIHRoZW4gcmVzZXQgdGhlCi0rICAgICBjdXJyZW50IHJlY3Vyc2lvbiB2YWx1ZSBiYWNrIHRvIDAsIHNvIHRoYXQgd2UgY2FuIHByaW50Ci0rICAgICB0aGUgdGVtcGxhdGVzLiAgKi8KLSsgIGlmIChkcGktPnJlY3Vyc2lvbiA8IERFTUFOR0xFX1JFQ1VSU0lPTl9MSU1JVCkKLSsgICAgZHBpLT5yZWN1cnNpb24gPSAwOwotICAgZHBpLT5udW1fY29weV90ZW1wbGF0ZXMgKj0gZHBpLT5udW1fc2F2ZWRfc2NvcGVzOwotIAotICAgZHBpLT5jdXJyZW50X3RlbXBsYXRlID0gTlVMTDsKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTFhNTEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGUyZWJiMzkwNjQzMmRjY2EyNzI3MTg2YWQ3OTQxNWY5MjA3MzBmYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxOSBGZWIgMjAxOSAyMjo0ODo0NCArMTAzMAotU3ViamVjdDogW1BBVENIXSBQUjI0MjM1LCBSZWFkIG1lbW9yeSB2aW9sYXRpb24gaW4gcGVpLXg4Nl82NC5jCi0KLQlQUiAyNDIzNQotCSogcGVpLXg4Nl82NC5jIChwZXg2NF9iZmRfcHJpbnRfcGRhdGFfc2VjdGlvbik6IENvcnJlY3QgY2hlY2tzCi0JYXR0ZW1wdGluZyB0byBwcmV2ZW50IHJlYWQgcGFzdCBlbmQgb2Ygc2VjdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2JtaW5vci9iaW51dGlscy1nZGIvY29tbWl0LzE3OWYyZGIwZDljMzk3ZDdkZDhhNTk5MDdiODQyMDhiNzlmN2Y0OGNdCi1DVkU6IENWRS0yMDE5LTkwNzQKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgIHwgNiArKysrKysKLSBiZmQvcGVpLXg4Nl82NC5jIHwgOSArKysrLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZwotaW5kZXggZGQyYzc0MS4uY2JmMzBkZSAxMDA2NDQKLS0tLSBhL2JmZC9DaGFuZ2VMb2cKLSsrKyBiL2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTktMDItMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDIzNQotKwkqIHBlaS14ODZfNjQuYyAocGV4NjRfYmZkX3ByaW50X3BkYXRhX3NlY3Rpb24pOiBDb3JyZWN0IGNoZWNrcwotKwlhdHRlbXB0aW5nIHRvIHByZXZlbnQgcmVhZCBwYXN0IGVuZCBvZiBzZWN0aW9uLgotKwotIDIwMTktMDItMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCSogZGV2ZWxvcG1lbnQuc2ggKGV4cGVyaW1lbnRhbCkgU2V0IHRvIGZhbHNlLgotZGlmZiAtLWdpdCBhL2JmZC9wZWkteDg2XzY0LmMgYi9iZmQvcGVpLXg4Nl82NC5jCi1pbmRleCBmZjEwOTNjLi43ZTc1MTA0IDEwMDY0NAotLS0tIGEvYmZkL3BlaS14ODZfNjQuYwotKysrIGIvYmZkL3BlaS14ODZfNjQuYwotQEAgLTU0MSw3ICs1NDEsNyBAQCBwZXg2NF9iZmRfcHJpbnRfcGRhdGFfc2VjdGlvbiAoYmZkICphYmZkLCB2b2lkICp2ZmlsZSwgYXNlY3Rpb24gKnBkYXRhX3NlY3Rpb24pCi0gICAvKiB2aXJ0X3NpemUgbWlnaHQgYmUgemVybyBmb3Igb2JqZWN0cy4gICovCi0gICBpZiAoc3RvcCA9PSAwICYmIHN0cmNtcCAoYWJmZC0+eHZlYy0+bmFtZSwgInBlLXg4Ni02NCIpID09IDApCi0gICAgIHsKLS0gICAgICBzdG9wID0gKGRhdGFzaXplIC8gb25hbGluZSkgKiBvbmFsaW5lOwotKyAgICAgIHN0b3AgPSBkYXRhc2l6ZTsKLSAgICAgICB2aXJ0X3NpemVfaXNfemVybyA9IFRSVUU7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKGRhdGFzaXplIDwgc3RvcCkKLUBAIC01NTEsOCArNTUxLDggQEAgcGV4NjRfYmZkX3ByaW50X3BkYXRhX3NlY3Rpb24gKGJmZCAqYWJmZCwgdm9pZCAqdmZpbGUsIGFzZWN0aW9uICpwZGF0YV9zZWN0aW9uKQotIAkJIF8oIldhcm5pbmc6ICVzIHNlY3Rpb24gc2l6ZSAoJWxkKSBpcyBzbWFsbGVyIHRoYW4gdmlydHVhbCBzaXplICglbGQpXG4iKSwKLSAJCSBwZGF0YV9zZWN0aW9uLT5uYW1lLCAodW5zaWduZWQgbG9uZykgZGF0YXNpemUsCi0gCQkgKHVuc2lnbmVkIGxvbmcpIHN0b3ApOwotLQkvKiBCZSBzdXJlIG5vdCB0byByZWFkIHBhc3NlZCBkYXRhc2l6ZS4gICovCi0tCXN0b3AgPSBkYXRhc2l6ZSAvIG9uYWxpbmU7Ci0rCS8qIEJlIHN1cmUgbm90IHRvIHJlYWQgcGFzdCBkYXRhc2l6ZS4gICovCi0rCXN0b3AgPSBkYXRhc2l6ZTsKLSAgICAgICB9Ci0gCi0gICAvKiBEaXNwbGF5IGZ1bmN0aW9ucyB0YWJsZS4gICovCi1AQCAtNzI0LDggKzcyNCw3IEBAIHBleDY0X2JmZF9wcmludF9wZGF0YV9zZWN0aW9uIChiZmQgKmFiZmQsIHZvaWQgKnZmaWxlLCBhc2VjdGlvbiAqcGRhdGFfc2VjdGlvbikKLSAJICAgICAgYWx0ZW50ICs9IGltYWdlYmFzZTsKLSAKLSAJICAgICAgaWYgKGFsdGVudCA+PSBwZGF0YV92bWEKLS0JCSAgJiYgKGFsdGVudCArIFBEQVRBX1JPV19TSVpFIDw9IHBkYXRhX3ZtYQotLQkJICAgICAgKyBwZWlfc2VjdGlvbl9kYXRhIChhYmZkLCBwZGF0YV9zZWN0aW9uKS0+dmlydF9zaXplKSkKLSsJCSAgJiYgYWx0ZW50IC0gcGRhdGFfdm1hICsgUERBVEFfUk9XX1NJWkUgPD0gc3RvcCkKLSAJCXsKLSAJCSAgcGV4NjRfZ2V0X3J1bnRpbWVfZnVuY3Rpb24KLSAJCSAgICAoYWJmZCwgJmFyZiwgJnBkYXRhW2FsdGVudCAtIHBkYXRhX3ZtYV0pOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNiMTMxMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb20gOGFiYWM4MDMxZWQzNjlhMjczNGIxY2RiN2RmMjhhMzlhNTRiNGI0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEZlYiAyMDE5IDA4OjIxOjI0ICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjQyMzYsIEhlYXAgYnVmZmVyIG92ZXJmbG93IGluCi0gX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcAotCi0JUFIgMjQyMzYKLQkqIGFyY2hpdmU2NC5jIChfYmZkX2FyY2hpdmVfNjRfYml0X3NsdXJwX2FybWFwKTogTW92ZSBjb2RlIGFkZGluZwotCXNlbnRpbmVsIE5VTCB0byBzdHJpbmcgYnVmZmVyIG5lYXJlciB0byBsb29wIHdoZXJlIGl0IGlzIHVzZWQuCi0JRG9uJ3QgZ28gcGFzdCBzZW50aW5lbCB3aGVuIHNjYW5uaW5nIHN0cmluZ3MsIGFuZCBkb24ndCB3cml0ZQotCU5VTCBhZ2Fpbi4KLQkqIGFyY2hpdmUuYyAoZG9fc2x1cnBfY29mZl9hcm1hcCk6IFNpbXBsaWZ5IHN0cmluZyBoYW5kbGluZyB0bwotCWFyY2hpdmU2NC5jIHN0eWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYm1pbm9yL2JpbnV0aWxzLWdkYi9jb21taXQvOGFiYWM4MDMxZWQzNjlhMjczNGIxY2RiN2RmMjhhMzlhNTRiNGI0OV0KLUNWRTogQ1ZFLTIwMTktOTA3NQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4gCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgfCAxMCArKysrKysrKysrCi0gYmZkL2FyY2hpdmUuYyAgIHwgMTcgKysrKysrKy0tLS0tLS0tLS0KLSBiZmQvYXJjaGl2ZTY0LmMgfCAxMCArKysrKy0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCi1pbmRleCA3MmM4N2M3Li5lMzliYjEyIDEwMDY0NAotLS0tIGEvYmZkL0NoYW5nZUxvZwotKysrIGIvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMyBAQAotKzIwMTktMDItMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDIzNgotKwkqIGFyY2hpdmU2NC5jIChfYmZkX2FyY2hpdmVfNjRfYml0X3NsdXJwX2FybWFwKTogTW92ZSBjb2RlIGFkZGluZwotKwlzZW50aW5lbCBOVUwgdG8gc3RyaW5nIGJ1ZmZlciBuZWFyZXIgdG8gbG9vcCB3aGVyZSBpdCBpcyB1c2VkLgotKwlEb24ndCBnbyBwYXN0IHNlbnRpbmVsIHdoZW4gc2Nhbm5pbmcgc3RyaW5ncywgYW5kIGRvbid0IHdyaXRlCi0rCU5VTCBhZ2Fpbi4KLSsJKiBhcmNoaXZlLmMgKGRvX3NsdXJwX2NvZmZfYXJtYXApOiBTaW1wbGlmeSBzdHJpbmcgaGFuZGxpbmcgdG8KLSsJYXJjaGl2ZTY0LmMgc3R5bGUuCi0rCi0gMjAxOS0wMi0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gCVBSIDI0MjM1Ci1kaWZmIC0tZ2l0IGEvYmZkL2FyY2hpdmUuYyBiL2JmZC9hcmNoaXZlLmMKLWluZGV4IGQyZDliNzIuLjY4YTkyYTMgMTAwNjQ0Ci0tLS0gYS9iZmQvYXJjaGl2ZS5jCi0rKysgYi9iZmQvYXJjaGl2ZS5jCi1AQCAtMTAxMiw2ICsxMDEyLDcgQEAgZG9fc2x1cnBfY29mZl9hcm1hcCAoYmZkICphYmZkKQotICAgaW50ICpyYXdfYXJtYXAsICpyYXdwdHI7Ci0gICBzdHJ1Y3QgYXJ0ZGF0YSAqYXJkYXRhID0gYmZkX2FyZGF0YSAoYWJmZCk7Ci0gICBjaGFyICpzdHJpbmdiYXNlOwotKyAgY2hhciAqc3RyaW5nZW5kOwotICAgYmZkX3NpemVfdHlwZSBzdHJpbmdzaXplOwotICAgYmZkX3NpemVfdHlwZSBwYXJzZWRfc2l6ZTsKLSAgIGNhcnN5bSAqY2Fyc3ltczsKLUBAIC0xMDcxLDIyICsxMDcyLDE4IEBAIGRvX3NsdXJwX2NvZmZfYXJtYXAgKGJmZCAqYWJmZCkKLSAgICAgfQotIAotICAgLyogT0ssIGJ1aWxkIHRoZSBjYXJzeW1zLiAgKi8KLS0gIGZvciAoaSA9IDA7IGkgPCBuc3lteiAmJiBzdHJpbmdzaXplID4gMDsgaSsrKQotKyAgc3RyaW5nZW5kID0gc3RyaW5nYmFzZSArIHN0cmluZ3NpemU7Ci0rICAqc3RyaW5nZW5kID0gMDsKLSsgIGZvciAoaSA9IDA7IGkgPCBuc3ltejsgaSsrKQotICAgICB7Ci0tICAgICAgYmZkX3NpemVfdHlwZSBsZW47Ci0tCi0gICAgICAgcmF3cHRyID0gcmF3X2FybWFwICsgaTsKLSAgICAgICBjYXJzeW1zLT5maWxlX29mZnNldCA9IHN3YXAgKChiZmRfYnl0ZSAqKSByYXdwdHIpOwotICAgICAgIGNhcnN5bXMtPm5hbWUgPSBzdHJpbmdiYXNlOwotLSAgICAgIC8qIFBSIDE3NTEyOiBmaWxlOiA0YTFkNTBjMS4gICovCi0tICAgICAgbGVuID0gc3RybmxlbiAoc3RyaW5nYmFzZSwgc3RyaW5nc2l6ZSk7Ci0tICAgICAgaWYgKGxlbiA8IHN0cmluZ3NpemUpCi0tCWxlbiArKzsKLS0gICAgICBzdHJpbmdiYXNlICs9IGxlbjsKLS0gICAgICBzdHJpbmdzaXplIC09IGxlbjsKLSsgICAgICBzdHJpbmdiYXNlICs9IHN0cmxlbiAoc3RyaW5nYmFzZSk7Ci0rICAgICAgaWYgKHN0cmluZ2Jhc2UgIT0gc3RyaW5nZW5kKQotKwkrK3N0cmluZ2Jhc2U7Ci0gICAgICAgY2Fyc3ltcysrOwotICAgICB9Ci0tICAqc3RyaW5nYmFzZSA9IDA7Ci0gCi0gICBhcmRhdGEtPnN5bWRlZl9jb3VudCA9IG5zeW16OwotICAgYXJkYXRhLT5maXJzdF9maWxlX2ZpbGVwb3MgPSBiZmRfdGVsbCAoYWJmZCk7Ci1kaWZmIC0tZ2l0IGEvYmZkL2FyY2hpdmU2NC5jIGIvYmZkL2FyY2hpdmU2NC5jCi1pbmRleCAzMTJiZjgyLi40MmY2ZWQ5IDEwMDY0NAotLS0tIGEvYmZkL2FyY2hpdmU2NC5jCi0rKysgYi9iZmQvYXJjaGl2ZTY0LmMKLUBAIC0xMDAsOCArMTAwLDYgQEAgX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcCAoYmZkICphYmZkKQotICAgICByZXR1cm4gRkFMU0U7Ci0gICBjYXJzeW1zID0gYXJkYXRhLT5zeW1kZWZzOwotICAgc3RyaW5nYmFzZSA9ICgoY2hhciAqKSBhcmRhdGEtPnN5bWRlZnMpICsgY2Fyc3ltX3NpemU7Ci0tICBzdHJpbmdiYXNlW3N0cmluZ3NpemVdID0gMDsKLS0gIHN0cmluZ2VuZCA9IHN0cmluZ2Jhc2UgKyBzdHJpbmdzaXplOwotIAotICAgcmF3X2FybWFwID0gKGJmZF9ieXRlICopIGJmZF9hbGxvYyAoYWJmZCwgcHRyc2l6ZSk7Ci0gICBpZiAocmF3X2FybWFwID09IE5VTEwpCi1AQCAtMTE1LDE1ICsxMTMsMTcgQEAgX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcCAoYmZkICphYmZkKQotICAgICAgIGdvdG8gcmVsZWFzZV9yYXdfYXJtYXA7Ci0gICAgIH0KLSAKLSsgIHN0cmluZ2VuZCA9IHN0cmluZ2Jhc2UgKyBzdHJpbmdzaXplOwotKyAgKnN0cmluZ2VuZCA9IDA7Ci0gICBmb3IgKGkgPSAwOyBpIDwgbnN5bXo7IGkrKykKLSAgICAgewotICAgICAgIGNhcnN5bXMtPmZpbGVfb2Zmc2V0ID0gYmZkX2dldGI2NCAocmF3X2FybWFwICsgaSAqIDgpOwotICAgICAgIGNhcnN5bXMtPm5hbWUgPSBzdHJpbmdiYXNlOwotLSAgICAgIGlmIChzdHJpbmdiYXNlIDwgc3RyaW5nZW5kKQotLQlzdHJpbmdiYXNlICs9IHN0cmxlbiAoc3RyaW5nYmFzZSkgKyAxOwotKyAgICAgIHN0cmluZ2Jhc2UgKz0gc3RybGVuIChzdHJpbmdiYXNlKTsKLSsgICAgICBpZiAoc3RyaW5nYmFzZSAhPSBzdHJpbmdlbmQpCi0rCSsrc3RyaW5nYmFzZTsKLSAgICAgICArK2NhcnN5bXM7Ci0gICAgIH0KLS0gICpzdHJpbmdiYXNlID0gJ1wwJzsKLSAKLSAgIGFyZGF0YS0+c3ltZGVmX2NvdW50ID0gbnN5bXo7Ci0gICBhcmRhdGEtPmZpcnN0X2ZpbGVfZmlsZXBvcyA9IGJmZF90ZWxsIChhYmZkKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOGNkZTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gOWY4NDFjNTgzODgwZWI2ZDAxOTQ0NTVjMTU4M2E3NjZmODUzZTYyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEZlYiAyMDE5IDEyOjA2OjMxICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjQyMzMsIE91dCBvZiBtZW1vcnkKLQotCVBSIDI0MjMzCi0JKiBvYmpkdW1wLmMgKGR1bXBfYmZkX3ByaXZhdGVfaGVhZGVyKTogUHJpbnQgd2FybmluZyBpZgotCWJmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhIHJldHVybnMgZmFsc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ibWlub3IvYmludXRpbHMtZ2RiL2NvbW1pdC83ZDI3MmE1NWNhZWJmYzI2YWIyZTE1ZDFlOTQzOWJhYzk3OGI5YmI3XQotQ1ZFOiBDVkUtMjAxOS05MDc2Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgNiArKysrKysKLSBiaW51dGlscy9vYmpkdW1wLmMgfCA0ICsrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCBmODM3YzM3Li5kNWRkN2NiIDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTktMDItMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDIzMwotKwkqIG9iamR1bXAuYyAoZHVtcF9iZmRfcHJpdmF0ZV9oZWFkZXIpOiBQcmludCB3YXJuaW5nIGlmCi0rCWJmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhIHJldHVybnMgZmFsc2UuCi0rCi0gMjAxOS0wMi0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvb2JqZHVtcC5jIGIvYmludXRpbHMvb2JqZHVtcC5jCi1pbmRleCA4NzI1MzkwLi43ZDBjNmE0IDEwMDY0NAotLS0tIGEvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgYi9iaW51dGlscy9vYmpkdW1wLmMKLUBAIC0zMTc4LDcgKzMxNzgsOSBAQCBkdW1wX2JmZF9oZWFkZXIgKGJmZCAqYWJmZCkKLSBzdGF0aWMgdm9pZAotIGR1bXBfYmZkX3ByaXZhdGVfaGVhZGVyIChiZmQgKmFiZmQpCi0gewotLSAgYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEgKGFiZmQsIHN0ZG91dCk7Ci0rICBpZiAoIWJmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhIChhYmZkLCBzdGRvdXQpKQotKyAgICBub25fZmF0YWwgKF8oIndhcm5pbmc6IHByaXZhdGUgaGVhZGVycyBpbmNvbXBsZXRlOiAlcyIpLAotKwkgICAgICAgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFlY2I3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBmN2JiYzg4OTBkZTQ1ZGY2ZWRhMGRkZWY1ZGQwNGY4MzVmNTRlZWNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyMCBGZWIgMjAxOSAxNzowMzo0NyArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggYSBpbGxlZ2FsIG1lbW9yeSBhY2Nlc3MgZmF1bHQgd2hlbiBwYXJzaW5nIGEgY29ycnVwdCBNSVBTCi0gb3B0aW9uIHNlY3Rpb24gdXNpbmcgcmVhZGVsZi4KLQotCVBSIDI0MjQzCi0JKiByZWFkZWxmLmMgKHByb2Nlc3NfbWlwc19zcGVjaWZpYyk6IENoZWNrIGZvciBhbiBvcHRpb25zIHNlY3Rpb24KLQl0aGF0IGlzIHRvbyBzbWFsbCB0byBldmVuIGNvbnRhaW4gYSBzaW5nbGUgb3B0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYm1pbm9yL2JpbnV0aWxzLWdkYi9jb21taXQvN2ZjMGM2NjhmMmFjZWI4NTgyZDc0ZGIxYWQyNTI4ZTJiYmE4YTkyMV0KLUNWRTogQ1ZFLTIwMTktOTA3NwotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIGJpbnV0aWxzL3JlYWRlbGYuYyB8IDYgKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCA5ZGYzNzQyLi4xOGFiODA2IDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0xNjE3OSw2ICsxNjE3OSwxMiBAQCBwcm9jZXNzX21pcHNfc3BlY2lmaWMgKEZpbGVkYXRhICogZmlsZWRhdGEpCi0gCSAgZXJyb3IgKF8oIk5vIE1JUFNfT1BUSU9OUyBoZWFkZXIgZm91bmRcbiIpKTsKLSAJICByZXR1cm4gRkFMU0U7Ci0gCX0KLSsgICAgICAvKiBQUiAyNDI0MyAgKi8KLSsgICAgICBpZiAoc2VjdC0+c2hfc2l6ZSA8IHNpemVvZiAoKiBlb3B0KSkKLSsJewotKwkgIGVycm9yIChfKCJUaGUgTUlQUyBvcHRpb25zIHNlY3Rpb24gaXMgdG9vIHNtYWxsLlxuIikpOwotKwkgIHJldHVybiBGQUxTRTsKLSsJfQotIAotICAgICAgIGVvcHQgPSAoRWxmX0V4dGVybmFsX09wdGlvbnMgKikgZ2V0X2RhdGEgKE5VTEwsIGZpbGVkYXRhLCBvcHRpb25zX29mZnNldCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0LT5zaF9zaXplLCBfKCJvcHRpb25zIikpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAyMC0wNTUxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMjAtMDU1MS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2UzY2FmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMjAtMDU1MS5wYXRjaApAQCAtMCwwICsxLDU0OSBAQAorRnJvbSBhZTUzMTA0MWM3YzU5NTY2NzIzNDJmODljNDg2YTAxMWM4NGYwMjdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAwOTo0NjoxOSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMV0gaTM4NjogR2VuZXJhdGUgbGZlbmNlIHdpdGggbG9hZC9pbmRpcmVjdCBicmFuY2gvcmV0CisgW0NWRS0yMDIwLTA1NTFdCisKK0FkZCAzIGNvbW1hbmQtbGluZSBvcHRpb25zIHRvIGdlbmVyYXRlIGxmZW5jZSBmb3IgbG9hZCwgaW5kaXJlY3QgbmVhcgorYnJhbmNoIGFuZCByZXQgdG8gaGVscCBtaXRpZ2F0ZToKKworaHR0cHM6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3NlY3VyaXR5LWNlbnRlci9hZHZpc29yeS9pbnRlbC1zYS0wMDMzNC5odG1sCitodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMjAtMDU1MQorCisxLiAtbWxmZW5jZS1hZnRlci1sb2FkPVtub3x5ZXNdOgorICAtbWxmZW5jZS1hZnRlci1sb2FkPXllcyBnZW5lcmF0ZXMgbGZlbmNlIGFmdGVyIGxvYWQgaW5zdHJ1Y3Rpb25zLgorMi4gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1bbm9uZXxhbGx8bWVtb3J5fHJlZ2lzdGVyXToKKyAgYS4gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1hbGwgZ2VuZXJhdGVzIGxmZW5jZSBiZWZvcmUgaW5kaXJlY3QKKyAgbmVhciBicmFuY2hlcyB2aWEgcmVnaXN0ZXIgYW5kIGEgd2FybmluZyBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2hlcworICB2aWEgbWVtb3J5LgorICBiLiAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPW1lbW9yeSBpc3N1ZSBhIHdhcm5pbmcgYmVmb3JlCisgIGluZGlyZWN0IG5lYXIgYnJhbmNoZXMgdmlhIG1lbW9yeS4KKyAgYy4gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1yZWdpc3RlciBnZW5lcmF0ZXMgbGZlbmNlIGJlZm9yZQorICBpbmRpcmVjdCBuZWFyIGJyYW5jaGVzIHZpYSByZWdpc3Rlci4KK05vdGUgdGhhdCBsZmVuY2Ugd29uJ3QgYmUgZ2VuZXJhdGVkIGJlZm9yZSBpbmRpcmVjdCBuZWFyIGJyYW5jaGVzIHZpYQorcmVnaXN0ZXIgd2l0aCAtbWxmZW5jZS1hZnRlci1sb2FkPXllcyBzaW5jZSBsZmVuY2Ugd2lsbCBiZSBnZW5lcmF0ZWQKK2FmdGVyIGxvYWRpbmcgYnJhbmNoIHRhcmdldCByZWdpc3Rlci4KKzMuIC1tbGZlbmNlLWJlZm9yZS1yZXQ9W25vbmV8b3J8bm90XQorICBhLiAtbWxmZW5jZS1iZWZvcmUtcmV0PW9yIGdlbmVyYXRlcyBvciB3aXRoIGxmZW5jZSBiZWZvcmUgcmV0LgorICBiLiAtbWxmZW5jZS1iZWZvcmUtcmV0PW5vdCBnZW5lcmF0ZXMgbm90IHdpdGggbGZlbmNlIGJlZm9yZSByZXQuCisKK0Egd2FybmluZyB3aWxsIGJlIGlzc3VlZCBhbmQgbGZlbmNlIHdvbid0IGJlIGdlbmVyYXRlZCBiZWZvcmUgaW5kaXJlY3QKK25lYXIgYnJhbmNoIGFuZCByZXQgaWYgdGhlIHByZXZpb3VzIGl0ZW0gaXMgYSBwcmVmaXggb3IgYSBjb25zdGFudAorZGlyZWN0aXZlLCB3aGljaCBtYXkgYmUgdXNlZCB0byBoYXJkY29kZSBhbiBpbnN0cnVjdGlvbiwgc2luY2UgdGhlcmUKK2lzIG5vIGNsZWFyIGluc3RydWN0aW9uIGJvdW5kYXJ5LgorCisJKiBjb25maWcvdGMtaTM4Ni5jIChsZmVuY2VfYWZ0ZXJfbG9hZCk6IE5ldy4KKwkobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2hfa2luZCk6IE5ldy4KKwkobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2gpOiBOZXcuCisJKGxmZW5jZV9iZWZvcmVfcmV0X2tpbmQpOiBOZXcuCisJKGxmZW5jZV9iZWZvcmVfcmV0KTogTmV3LgorCShsYXN0X2luc24pOiBOZXcuCisJKGxvYWRfaW5zbl9wKTogTmV3LgorCShpbnNlcnRfbGZlbmNlX2FmdGVyKTogTmV3LgorCShpbnNlcnRfbGZlbmNlX2JlZm9yZSk6IE5ldy4KKwkobWRfYXNzZW1ibGUpOiBDYWxsIGluc2VydF9sZmVuY2VfYmVmb3JlIGFuZCBpbnNlcnRfbGZlbmNlX2FmdGVyLgorCVNldCBsYXN0X2luc24uCisJKE9QVElPTl9NTEZFTkNFX0FGVEVSX0xPQUQpOiBOZXcuCisJKE9QVElPTl9NTEZFTkNFX0JFRk9SRV9JTkRJUkVDVF9CUkFOQ0gpOiBOZXcuCisJKE9QVElPTl9NTEZFTkNFX0JFRk9SRV9SRVQpOiBOZXcuCisJKG1kX2xvbmdvcHRzKTogQWRkIC1tbGZlbmNlLWFmdGVyLWxvYWQ9LAorCS1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IGFuZCAtbWxmZW5jZS1iZWZvcmUtcmV0PS4KKwkobWRfcGFyc2Vfb3B0aW9uKTogSGFuZGxlIC1tbGZlbmNlLWFmdGVyLWxvYWQ9LAorCS1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IGFuZCAtbWxmZW5jZS1iZWZvcmUtcmV0PS4KKwkobWRfc2hvd191c2FnZSk6IERpc3BsYXkgLW1sZmVuY2UtYWZ0ZXItbG9hZD0sCisJLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD0gYW5kIC1tbGZlbmNlLWJlZm9yZS1yZXQ9LgorCShpMzg2X2NvbnNfYWxpZ24pOiBOZXcuCisJKiBjb25maWcvdGMtaTM4Ni5oIChpMzg2X2NvbnNfYWxpZ24pOiBOZXcuCisJKG1kX2NvbnNfYWxpZ24pOiBOZXcuCisJKiBkb2MvYy1pMzg2LnRleGk6IERvY3VtZW50IC1tbGZlbmNlLWFmdGVyLWxvYWQ9LAorCS1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IGFuZCAtbWxmZW5jZS1iZWZvcmUtcmV0PS4KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWJpbnV0aWxzLWdkYi5naXQ7YT1jb21taXQ7aD1hZTUzMTA0MWM3YzU5NTY2NzIzNDJmODljNDg2YTAxMWM4NGYwMjdmXQorQ1ZFOiBDVkUtMjAyMC0wNTUxCistLS0KK2RpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWkzODYuYyBiL2dhcy9jb25maWcvdGMtaTM4Ni5jCitpbmRleCBiMDIwZjM5Yzg2My4uMDkwNjNmNzg0YjcgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlnL3RjLWkzODYuYworKysrIGIvZ2FzL2NvbmZpZy90Yy1pMzg2LmMKK0BAIC02MjksNyArNjI5LDI5IEBAIHN0YXRpYyBpbnQgb21pdF9sb2NrX3ByZWZpeCA9IDA7CisgICAgImxvY2sgYWRkbCAkMCwgKCV7cmV9c3ApIi4gICovCisgc3RhdGljIGludCBhdm9pZF9mZW5jZSA9IDA7CisgCistLyogVHlwZSBvZiB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rpb24uICAqLworKy8qIDEgaWYgbGZlbmNlIHNob3VsZCBiZSBpbnNlcnRlZCBhZnRlciBldmVyeSBsb2FkLiAgKi8KKytzdGF0aWMgaW50IGxmZW5jZV9hZnRlcl9sb2FkID0gMDsKKysKKysvKiBOb24temVybyBpZiBsZmVuY2Ugc2hvdWxkIGJlIGluc2VydGVkIGJlZm9yZSBpbmRpcmVjdCBicmFuY2guICAqLworK3N0YXRpYyBlbnVtIGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoX2tpbmQKKysgIHsKKysgICAgbGZlbmNlX2JyYW5jaF9ub25lID0gMCwKKysgICAgbGZlbmNlX2JyYW5jaF9yZWdpc3RlciwKKysgICAgbGZlbmNlX2JyYW5jaF9tZW1vcnksCisrICAgIGxmZW5jZV9icmFuY2hfYWxsCisrICB9CisrbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2g7CisrCisrLyogTm9uLXplcm8gaWYgbGZlbmNlIHNob3VsZCBiZSBpbnNlcnRlZCBiZWZvcmUgcmV0LiAgKi8KKytzdGF0aWMgZW51bSBsZmVuY2VfYmVmb3JlX3JldF9raW5kCisrICB7CisrICAgIGxmZW5jZV9iZWZvcmVfcmV0X25vbmUgPSAwLAorKyAgICBsZmVuY2VfYmVmb3JlX3JldF9ub3QsCisrICAgIGxmZW5jZV9iZWZvcmVfcmV0X29yCisrICB9CisrbGZlbmNlX2JlZm9yZV9yZXQ7CisrCisrLyogVHlwZXMgb2YgcHJldmlvdXMgaW5zdHJ1Y3Rpb24gaXMgLmJ5dGUgb3IgcHJlZml4LiAgKi8KKyBzdGF0aWMgc3RydWN0CisgICB7CisgICAgIHNlZ1Qgc2VnOworQEAgLTQzMTEsNiArNDMzMywyODMgQEAgb3B0aW1pemVfZW5jb2RpbmcgKHZvaWQpCisgICAgIH0KKyB9CisgCisrLyogUmV0dXJuIG5vbi16ZXJvIGZvciBsb2FkIGluc3RydWN0aW9uLiAgKi8KKysKKytzdGF0aWMgaW50CisrbG9hZF9pbnNuX3AgKHZvaWQpCisreworKyAgdW5zaWduZWQgaW50IGRlc3Q7CisrICBpbnQgYW55X3ZleF9wID0gaXNfYW55X3ZleF9lbmNvZGluZyAoJmkudG0pOworKyAgdW5zaWduZWQgaW50IGJhc2Vfb3Bjb2RlID0gaS50bS5iYXNlX29wY29kZSB8IDE7CisrCisrICBpZiAoIWFueV92ZXhfcCkKKysgICAgeworKyAgICAgIC8qIGxlYSAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweDhkKQorKwlyZXR1cm4gMDsKKysKKysgICAgICAvKiBwb3AgICovCisrICAgICAgaWYgKChpLnRtLmJhc2Vfb3Bjb2RlICYgfjcpID09IDB4NTgKKysJICB8fCAoaS50bS5iYXNlX29wY29kZSA9PSAweDhmICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAwKSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogbW92cywgY21wcywgbG9kcywgc2Nhcy4gICovCisrICAgICAgaWYgKChpLnRtLmJhc2Vfb3Bjb2RlIHwgMHhiKSA9PSAweGFmKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBvdXRzICovCisrICAgICAgaWYgKGJhc2Vfb3Bjb2RlID09IDB4NmYpCisrCXJldHVybiAxOworKyAgICB9CisrCisrICAvKiBObyBtZW1vcnkgb3BlcmFuZC4gICovCisrICBpZiAoIWkubWVtX29wZXJhbmRzKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmIChhbnlfdmV4X3ApCisrICAgIHsKKysgICAgICAvKiB2bGRteGNzci4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhhZQorKwkgICYmIGkudG0ub3Bjb2RlX21vZGlmaWVyLnZleAorKwkgICYmIGkudG0ub3Bjb2RlX21vZGlmaWVyLnZleG9wY29kZSA9PSBWRVgwRgorKwkgICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyKQorKwlyZXR1cm4gMTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgLyogdGVzdCwgbm90LCBuZWcsIG11bCwgaW11bCwgZGl2LCBpZGl2LiAgKi8KKysgICAgICBpZiAoKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmNiB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZjcpCisrCSAgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlICE9IDEpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGluYywgZGVjLiAgKi8KKysgICAgICBpZiAoYmFzZV9vcGNvZGUgPT0gMHhmZiAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPD0gMSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogYWRkLCBvciwgYWRjLCBzYmIsIGFuZCwgc3ViLCB4b3IsIGNtcC4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPj0gMHg4MCAmJiBpLnRtLmJhc2Vfb3Bjb2RlIDw9IDB4ODMpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGJ0LCBidHMsIGJ0ciwgYnRjLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZiYQorKwkgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPj0gNCAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPD0gNykpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIHJvbCwgcm9yLCByY2wsIHJjciwgc2hsL3NhbCwgc2hyLCBzYXIuICovCisrICAgICAgaWYgKChiYXNlX29wY29kZSA9PSAweGMxCisrCSAgIHx8IChpLnRtLmJhc2Vfb3Bjb2RlID49IDB4ZDAgJiYgaS50bS5iYXNlX29wY29kZSA8PSAweGQzKSkKKysJICAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgIT0gNikKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogY21weGNoZzhiLCBjbXB4Y2hnMTZiLCB4cnN0b3JzLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZjNworKwkgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMSB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMykpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGZ4cnN0b3IsIGxkbXhjc3IsIHhyc3Rvci4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmYWUKKysJICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDEKKysJICAgICAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJICAgICAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDUpKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBsZ2R0LCBsaWR0LCBsbXN3LiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGYwMQorKwkgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkgICAgICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkgICAgICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNikpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIHZtcHRybGQgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZjNworKwkgICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA2KQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBDaGVjayBmb3IgeDg3IGluc3RydWN0aW9ucy4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPj0gMHhkOCAmJiBpLnRtLmJhc2Vfb3Bjb2RlIDw9IDB4ZGYpCisrCXsKKysJICAvKiBTa2lwIGZzdCwgZnN0cCwgZnN0ZW52LCBmc3Rjdy4gICovCisrCSAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhkOQorKwkgICAgICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDMKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDYKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDcpKQorKwkgICAgcmV0dXJuIDA7CisrCisrCSAgLyogU2tpcCBmaXN0dHAsIGZpc3QsIGZpc3RwLCBmc3RwLiAgKi8KKysJICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGRiCisrCSAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMQorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNykpCisrCSAgICByZXR1cm4gMDsKKysKKysJICAvKiBTa2lwIGZpc3R0cCwgZnN0LCBmc3RwLCBmc2F2ZSwgZnN0c3cuICAqLworKwkgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZGQKKysJICAgICAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAxCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAzCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA2CisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA3KSkKKysJICAgIHJldHVybiAwOworKworKwkgIC8qIFNraXAgZmlzdHRwLCBmaXN0LCBmaXN0cCwgZmJzdHAsIGZpc3RwLiAgKi8KKysJICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGRmCisrCSAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMQorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNykpCisrCSAgICByZXR1cm4gMDsKKysKKysJICByZXR1cm4gMTsKKysJfQorKyAgICB9CisrCisrICBkZXN0ID0gaS5vcGVyYW5kcyAtIDE7CisrCisrICAvKiBDaGVjayBmYWtlIGltbTggb3BlcmFuZCBhbmQgMyBzb3VyY2Ugb3BlcmFuZHMuICAqLworKyAgaWYgKChpLnRtLm9wY29kZV9tb2RpZmllci5pbW1leHQKKysgICAgICAgfHwgaS50bS5vcGNvZGVfbW9kaWZpZXIudmV4c291cmNlcyA9PSBWRVgzU09VUkNFUykKKysgICAgICAmJiBpLnR5cGVzW2Rlc3RdLmJpdGZpZWxkLmltbTgpCisrICAgIGRlc3QtLTsKKysKKysgIC8qIGFkZCwgb3IsIGFkYywgc2JiLCBhbmQsIHN1YiwgeG9yLCBjbXAsIHRlc3QsIHhjaGcsIHhhZGQgICovCisrICBpZiAoIWFueV92ZXhfcAorKyAgICAgICYmIChiYXNlX29wY29kZSA9PSAweDEKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDkKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDExCisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgxOQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MjEKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDI5CisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgzMQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MzkKKysJICB8fCAoaS50bS5iYXNlX29wY29kZSA+PSAweDg0ICYmIGkudG0uYmFzZV9vcGNvZGUgPD0gMHg4NykKKysJICB8fCBiYXNlX29wY29kZSA9PSAweGZjMSkpCisrICAgIHJldHVybiAxOworKworKyAgLyogQ2hlY2sgZm9yIGxvYWQgaW5zdHJ1Y3Rpb24uICAqLworKyAgcmV0dXJuIChpLnR5cGVzW2Rlc3RdLmJpdGZpZWxkLmNsYXNzICE9IENsYXNzTm9uZQorKwkgIHx8IGkudHlwZXNbZGVzdF0uYml0ZmllbGQuaW5zdGFuY2UgPT0gQWNjdW0pOworK30KKysKKysvKiBPdXRwdXQgbGZlbmNlLCAweGZhZWU4LCBhZnRlciBpbnN0cnVjdGlvbi4gICovCisrCisrc3RhdGljIHZvaWQKKytpbnNlcnRfbGZlbmNlX2FmdGVyICh2b2lkKQorK3sKKysgIGlmIChsZmVuY2VfYWZ0ZXJfbG9hZCAmJiBsb2FkX2luc25fcCAoKSkKKysgICAgeworKyAgICAgIGNoYXIgKnAgPSBmcmFnX21vcmUgKDMpOworKyAgICAgICpwKysgPSAweGY7CisrICAgICAgKnArKyA9IDB4YWU7CisrICAgICAgKnAgPSAweGU4OworKyAgICB9CisrfQorKworKy8qIE91dHB1dCBsZmVuY2UsIDB4ZmFlZTgsIGJlZm9yZSBpbnN0cnVjdGlvbi4gICovCisrCisrc3RhdGljIHZvaWQKKytpbnNlcnRfbGZlbmNlX2JlZm9yZSAodm9pZCkKKyt7CisrICBjaGFyICpwOworKworKyAgaWYgKGlzX2FueV92ZXhfZW5jb2RpbmcgKCZpLnRtKSkKKysgICAgcmV0dXJuOworKworKyAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmZgorKyAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMiB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNCkpCisrICAgIHsKKysgICAgICAvKiBJbnNlcnQgbGZlbmNlIGJlZm9yZSBpbmRpcmVjdCBicmFuY2ggaWYgbmVlZGVkLiAgKi8KKysKKysgICAgICBpZiAobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPT0gbGZlbmNlX2JyYW5jaF9ub25lKQorKwlyZXR1cm47CisrCisrICAgICAgaWYgKGkub3BlcmFuZHMgIT0gMSkKKysJYWJvcnQgKCk7CisrCisrICAgICAgaWYgKGkucmVnX29wZXJhbmRzID09IDEpCisrCXsKKysJICAvKiBJbmRpcmVjdCBicmFuY2ggdmlhIHJlZ2lzdGVyLiAgRG9uJ3QgaW5zZXJ0IGxmZW5jZSB3aXRoCisrCSAgICAgLW1sZmVuY2UtYWZ0ZXItbG9hZD15ZXMuICAqLworKwkgIGlmIChsZmVuY2VfYWZ0ZXJfbG9hZAorKwkgICAgICB8fCBsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9PSBsZmVuY2VfYnJhbmNoX21lbW9yeSkKKysJICAgIHJldHVybjsKKysJfQorKyAgICAgIGVsc2UgaWYgKGkubWVtX29wZXJhbmRzID09IDEKKysJICAgICAgICYmIGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoICE9IGxmZW5jZV9icmFuY2hfcmVnaXN0ZXIpCisrCXsKKysJICBhc193YXJuIChfKCJpbmRpcmVjdCBgJXNgIHdpdGggbWVtb3J5IG9wZXJhbmQgc2hvdWxkIGJlIGF2b2lkZWQiKSwKKysJCSAgIGkudG0ubmFtZSk7CisrCSAgcmV0dXJuOworKwl9CisrICAgICAgZWxzZQorKwlyZXR1cm47CisrCisrICAgICAgaWYgKGxhc3RfaW5zbi5raW5kICE9IGxhc3RfaW5zbl9vdGhlcgorKwkgICYmIGxhc3RfaW5zbi5zZWcgPT0gbm93X3NlZykKKysJeworKwkgIGFzX3dhcm5fd2hlcmUgKGxhc3RfaW5zbi5maWxlLCBsYXN0X2luc24ubGluZSwKKysJCQkgXygiYCVzYCBza2lwcyAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoIG9uIGAlc2AiKSwKKysJCQkgbGFzdF9pbnNuLm5hbWUsIGkudG0ubmFtZSk7CisrCSAgcmV0dXJuOworKwl9CisrCisrICAgICAgcCA9IGZyYWdfbW9yZSAoMyk7CisrICAgICAgKnArKyA9IDB4ZjsKKysgICAgICAqcCsrID0gMHhhZTsKKysgICAgICAqcCA9IDB4ZTg7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAvKiBPdXRwdXQgb3Ivbm90IGFuZCBsZmVuY2UgYmVmb3JlIHJldC4gICovCisrICBpZiAobGZlbmNlX2JlZm9yZV9yZXQgIT0gbGZlbmNlX2JlZm9yZV9yZXRfbm9uZQorKyAgICAgICYmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4YzIKKysJICB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4YzMKKysJICB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4Y2EKKysJICB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4Y2IpKQorKyAgICB7CisrICAgICAgaWYgKGxhc3RfaW5zbi5raW5kICE9IGxhc3RfaW5zbl9vdGhlcgorKwkgICYmIGxhc3RfaW5zbi5zZWcgPT0gbm93X3NlZykKKysJeworKwkgIGFzX3dhcm5fd2hlcmUgKGxhc3RfaW5zbi5maWxlLCBsYXN0X2luc24ubGluZSwKKysJCQkgXygiYCVzYCBza2lwcyAtbWxmZW5jZS1iZWZvcmUtcmV0IG9uIGAlc2AiKSwKKysJCQkgbGFzdF9pbnNuLm5hbWUsIGkudG0ubmFtZSk7CisrCSAgcmV0dXJuOworKwl9CisrICAgICAgaWYgKGxmZW5jZV9iZWZvcmVfcmV0ID09IGxmZW5jZV9iZWZvcmVfcmV0X29yKQorKwl7CisrCSAgLyogb3JsOiAweDgzMGMyNDAwLiAgKi8KKysJICBwID0gZnJhZ19tb3JlICgoZmxhZ19jb2RlID09IENPREVfNjRCSVQgPyAxIDogMCkgKyA0ICsgMyk7CisrCSAgaWYgKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUKQorKwkgICAgKnArKyA9IDB4NDg7CisrCSAgKnArKyA9IDB4ODM7CisrCSAgKnArKyA9IDB4YzsKKysJICAqcCsrID0gMHgyNDsKKysJICAqcCsrID0gMHgwOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgcCA9IGZyYWdfbW9yZSAoKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUID8gMiA6IDApICsgNiArIDMpOworKwkgIC8qIG5vdGw6IDB4ZjcxNDI0LiAgKi8KKysJICBpZiAoZmxhZ19jb2RlID09IENPREVfNjRCSVQpCisrCSAgICAqcCsrID0gMHg0ODsKKysJICAqcCsrID0gMHhmNzsKKysJICAqcCsrID0gMHgxNDsKKysJICAqcCsrID0gMHgyNDsKKysJICAvKiBub3RsOiAweGY3MTQyNC4gICovCisrCSAgaWYgKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUKQorKwkgICAgKnArKyA9IDB4NDg7CisrCSAgKnArKyA9IDB4Zjc7CisrCSAgKnArKyA9IDB4MTQ7CisrCSAgKnArKyA9IDB4MjQ7CisrCX0KKysgICAgICAqcCsrID0gMHhmOworKyAgICAgICpwKysgPSAweGFlOworKyAgICAgICpwID0gMHhlODsKKysgICAgfQorK30KKysKKyAvKiBUaGlzIGlzIHRoZSBndXRzIG9mIHRoZSBtYWNoaW5lLWRlcGVuZGVudCBhc3NlbWJsZXIuICBMSU5FIHBvaW50cyB0byBhCisgICAgbWFjaGluZSBkZXBlbmRlbnQgaW5zdHJ1Y3Rpb24uICBUaGlzIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGVtaXQKKyAgICB0aGUgZnJhZ3MvYnl0ZXMgaXQgYXNzZW1ibGVzIHRvLiAgKi8KK0BAIC00NjI4LDkgKzQ5MjcsMTMgQEAgbWRfYXNzZW1ibGUgKGNoYXIgKmxpbmUpCisgICBpZiAoaS5yZXggIT0gMCkKKyAgICAgYWRkX3ByZWZpeCAoUkVYX09QQ09ERSB8IGkucmV4KTsKKyAKKysgIGluc2VydF9sZmVuY2VfYmVmb3JlICgpOworKworICAgLyogV2UgYXJlIHJlYWR5IHRvIG91dHB1dCB0aGUgaW5zbi4gICovCisgICBvdXRwdXRfaW5zbiAoKTsKKyAKKysgIGluc2VydF9sZmVuY2VfYWZ0ZXIgKCk7CisrCisgICBsYXN0X2luc24uc2VnID0gbm93X3NlZzsKKyAKKyAgIGlmIChpLnRtLm9wY29kZV9tb2RpZmllci5pc3ByZWZpeCkKK0BAIC0xMjI1MCw2ICsxMjU1Myw5IEBAIGNvbnN0IGNoYXIgKm1kX3Nob3J0b3B0cyA9ICJxbk86OiI7CisgI2RlZmluZSBPUFRJT05fTUFMSUdOX0JSQU5DSF9QUkVGSVhfU0laRSAoT1BUSU9OX01EX0JBU0UgKyAyOCkKKyAjZGVmaW5lIE9QVElPTl9NQUxJR05fQlJBTkNIIChPUFRJT05fTURfQkFTRSArIDI5KQorICNkZWZpbmUgT1BUSU9OX01CUkFOQ0hFU19XSVRIXzMyQl9CT1VOREFSSUVTIChPUFRJT05fTURfQkFTRSArIDMwKQorKyNkZWZpbmUgT1BUSU9OX01MRkVOQ0VfQUZURVJfTE9BRCAoT1BUSU9OX01EX0JBU0UgKyAzMSkKKysjZGVmaW5lIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9JTkRJUkVDVF9CUkFOQ0ggKE9QVElPTl9NRF9CQVNFICsgMzIpCisrI2RlZmluZSBPUFRJT05fTUxGRU5DRV9CRUZPUkVfUkVUIChPUFRJT05fTURfQkFTRSArIDMzKQorIAorIHN0cnVjdCBvcHRpb24gbWRfbG9uZ29wdHNbXSA9CisgeworQEAgLTEyMjg5LDYgKzEyNTk1LDEwIEBAIHN0cnVjdCBvcHRpb24gbWRfbG9uZ29wdHNbXSA9CisgICB7Im1hbGlnbi1icmFuY2gtcHJlZml4LXNpemUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01BTElHTl9CUkFOQ0hfUFJFRklYX1NJWkV9LAorICAgeyJtYWxpZ24tYnJhbmNoIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NQUxJR05fQlJBTkNIfSwKKyAgIHsibWJyYW5jaGVzLXdpdGhpbi0zMkItYm91bmRhcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUJSQU5DSEVTX1dJVEhfMzJCX0JPVU5EQVJJRVN9LAorKyAgeyJtbGZlbmNlLWFmdGVyLWxvYWQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01MRkVOQ0VfQUZURVJfTE9BRH0sCisrICB7Im1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLAorKyAgIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9JTkRJUkVDVF9CUkFOQ0h9LAorKyAgeyJtbGZlbmNlLWJlZm9yZS1yZXQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX1JFVH0sCisgICB7Im1hbWQ2NCIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUFNRDY0fSwKKyAgIHsibWludGVsNjQiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01JTlRFTDY0fSwKKyAgIHtOVUxMLCBub19hcmd1bWVudCwgTlVMTCwgMH0KK0BAIC0xMjY2OCw2ICsxMjk3OCw0MSBAQCBtZF9wYXJzZV9vcHRpb24gKGludCBjLCBjb25zdCBjaGFyICphcmcpCisgICAgICAgICBhc19mYXRhbCAoXygiaW52YWxpZCAtbWZlbmNlLWFzLWxvY2stYWRkPSBvcHRpb246IGAlcyciKSwgYXJnKTsKKyAgICAgICBicmVhazsKKyAKKysgICAgY2FzZSBPUFRJT05fTUxGRU5DRV9BRlRFUl9MT0FEOgorKyAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJ5ZXMiKSA9PSAwKQorKwlsZmVuY2VfYWZ0ZXJfbG9hZCA9IDE7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibm8iKSA9PSAwKQorKwlsZmVuY2VfYWZ0ZXJfbG9hZCA9IDA7CisrICAgICAgZWxzZQorKyAgICAgICAgYXNfZmF0YWwgKF8oImludmFsaWQgLW1sZmVuY2UtYWZ0ZXItbG9hZD0gb3B0aW9uOiBgJXMnIiksIGFyZyk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX0lORElSRUNUX0JSQU5DSDoKKysgICAgICBpZiAoc3RyY2FzZWNtcCAoYXJnLCAiYWxsIikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPSBsZmVuY2VfYnJhbmNoX2FsbDsKKysgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJtZW1vcnkiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9IGxmZW5jZV9icmFuY2hfbWVtb3J5OworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgInJlZ2lzdGVyIikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPSBsZmVuY2VfYnJhbmNoX3JlZ2lzdGVyOworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgIm5vbmUiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9IGxmZW5jZV9icmFuY2hfbm9uZTsKKysgICAgICBlbHNlCisrICAgICAgICBhc19mYXRhbCAoXygiaW52YWxpZCAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPSBvcHRpb246IGAlcyciKSwKKysJCSAgYXJnKTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBPUFRJT05fTUxGRU5DRV9CRUZPUkVfUkVUOgorKyAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJvciIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfcmV0ID0gbGZlbmNlX2JlZm9yZV9yZXRfb3I7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibm90IikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9yZXQgPSBsZmVuY2VfYmVmb3JlX3JldF9ub3Q7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibm9uZSIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfcmV0ID0gbGZlbmNlX2JlZm9yZV9yZXRfbm9uZTsKKysgICAgICBlbHNlCisrICAgICAgICBhc19mYXRhbCAoXygiaW52YWxpZCAtbWxmZW5jZS1iZWZvcmUtcmV0PSBvcHRpb246IGAlcyciKSwKKysJCSAgYXJnKTsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBPUFRJT05fTVJFTEFYX1JFTE9DQVRJT05TOgorICAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJ5ZXMiKSA9PSAwKQorICAgICAgICAgZ2VuZXJhdGVfcmVsYXhfcmVsb2NhdGlvbnMgPSAxOworQEAgLTEzMDI1LDYgKzEzMzcwLDE1IEBAIG1kX3Nob3dfdXNhZ2UgKEZJTEUgKnN0cmVhbSkKKyAgIC1tYnJhbmNoZXMtd2l0aGluLTMyQi1ib3VuZGFyaWVzXG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiBicmFuY2hlcyB3aXRoaW4gMzIgYnl0ZSBib3VuZGFyeVxuIikpOworICAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisrICAtbWxmZW5jZS1hZnRlci1sb2FkPVtub3x5ZXNdIChkZWZhdWx0OiBubylcblwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGxmZW5jZSBhZnRlciBsb2FkXG4iKSk7CisrICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKysgIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9W25vbmV8YWxsfHJlZ2lzdGVyfG1lbW9yeV0gKGRlZmF1bHQ6IG5vbmUpXG5cCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBsZmVuY2UgYmVmb3JlIGluZGlyZWN0IG5lYXIgYnJhbmNoXG4iKSk7CisrICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKysgIC1tbGZlbmNlLWJlZm9yZS1yZXQ9W25vbmV8b3J8bm90XSAoZGVmYXVsdDogbm9uZSlcblwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGxmZW5jZSBiZWZvcmUgcmV0XG4iKSk7CisrICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKyAgIC1tYW1kNjQgICAgICAgICAgICAgICAgIGFjY2VwdCBvbmx5IEFNRDY0IElTQSBbZGVmYXVsdF1cbiIpKTsKKyAgIGZwcmludGYgKHN0cmVhbSwgXygiXAorICAgLW1pbnRlbDY0ICAgICAgICAgICAgICAgYWNjZXB0IG9ubHkgSW50ZWw2NCBJU0FcbiIpKTsKK0BAIC0xMzI1NCw2ICsxMzYwOCwxNiBAQCBpMzg2X2NvbnNfYWxpZ24gKGludCBpZ25vcmUgQVRUUklCVVRFX1VOVVNFRCkKKyAgICAgICBsYXN0X2luc24ua2luZCA9IGxhc3RfaW5zbl9kaXJlY3RpdmU7CisgICAgICAgbGFzdF9pbnNuLm5hbWUgPSAiY29uc3RhbnQgZGlyZWN0aXZlIjsKKyAgICAgICBsYXN0X2luc24uZmlsZSA9IGFzX3doZXJlICgmbGFzdF9pbnNuLmxpbmUpOworKyAgICAgIGlmIChsZmVuY2VfYmVmb3JlX3JldCAhPSBsZmVuY2VfYmVmb3JlX3JldF9ub25lKQorKwl7CisrCSAgaWYgKGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoICE9IGxmZW5jZV9icmFuY2hfbm9uZSkKKysJICAgIGFzX3dhcm4gKF8oImNvbnN0YW50IGRpcmVjdGl2ZSBza2lwcyAtbWxmZW5jZS1iZWZvcmUtcmV0ICIKKysJCSAgICAgICAiYW5kIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2giKSk7CisrCSAgZWxzZQorKwkgICAgYXNfd2FybiAoXygiY29uc3RhbnQgZGlyZWN0aXZlIHNraXBzIC1tbGZlbmNlLWJlZm9yZS1yZXQiKSk7CisrCX0KKysgICAgICBlbHNlIGlmIChsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCAhPSBsZmVuY2VfYnJhbmNoX25vbmUpCisrCWFzX3dhcm4gKF8oImNvbnN0YW50IGRpcmVjdGl2ZSBza2lwcyAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoIikpOworICAgICB9CisgfQorIAorZGlmZiAtLWdpdCBhL2dhcy9kb2MvYy1pMzg2LnRleGkgYi9nYXMvZG9jL2MtaTM4Ni50ZXhpCitpbmRleCBjNTM2NzU5Y2IzOC4uMWRkOTlmOTFiYjAgMTAwNjQ0CistLS0gYS9nYXMvZG9jL2MtaTM4Ni50ZXhpCisrKysgYi9nYXMvZG9jL2MtaTM4Ni50ZXhpCitAQCAtNDY0LDYgKzQ2NCw0OSBAQCBvbiBhbiBpbnN0cnVjdGlvbi4gIEl0IGlzIGVxdWl2YWxlbnQgdG8KKyBAb3B0aW9uey1tYWxpZ24tYnJhbmNoLXByZWZpeC1zaXplPTV9LgorIFRoZSBkZWZhdWx0IGRvZXNuJ3QgYWxpZ24gYnJhbmNoZXMuCisgCisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1hZnRlci1sb2FkPX0gb3B0aW9uLCBpMzg2CisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1hZnRlci1sb2FkPX0gb3B0aW9uLCB4ODYtNjQKKytAaXRlbSAtbWxmZW5jZS1hZnRlci1sb2FkPUB2YXJ7bm99CisrQGl0ZW14IC1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcnt5ZXN9CisrVGhlc2Ugb3B0aW9ucyBjb250cm9sIHdoZXRoZXIgdGhlIGFzc2VtYmxlciBzaG91bGQgZ2VuZXJhdGUgbGZlbmNlCisrYWZ0ZXIgbG9hZCBpbnN0cnVjdGlvbnMuICBAb3B0aW9uey1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcnt5ZXN9fSB3aWxsCisrZ2VuZXJhdGUgbGZlbmNlLiAgQG9wdGlvbnstbWxmZW5jZS1hZnRlci1sb2FkPUB2YXJ7bm99fSB3aWxsIG5vdCBnZW5lcmF0ZQorK2xmZW5jZSwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuCisrCisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPX0gb3B0aW9uLCBpMzg2CisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPX0gb3B0aW9uLCB4ODYtNjQKKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7bm9uZX0KKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7YWxsfQorK0BpdGVtIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcntyZWdpc3Rlcn0KKytAaXRlbXggLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye21lbW9yeX0KKytUaGVzZSBvcHRpb25zIGNvbnRyb2wgd2hldGhlciB0aGUgYXNzZW1ibGVyIHNob3VsZCBnZW5lcmF0ZSBsZmVuY2UKKythZnRlciBpbmRpcmVjdCBuZWFyIGJyYW5jaCBpbnN0cnVjdGlvbnMuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7YWxsfX0gd2lsbCBnZW5lcmF0ZSBsZmVuY2UKKythZnRlciBpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgcmVnaXN0ZXIgYW5kIGlzc3VlIGEgd2FybmluZyBiZWZvcmUKKytpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgbWVtb3J5LgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye3JlZ2lzdGVyfX0gd2lsbCBnZW5lcmF0ZQorK2xmZW5jZSBhZnRlciBpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgcmVnaXN0ZXIuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7bWVtb3J5fX0gd2lsbCBpc3N1ZSBhCisrd2FybmluZyBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2ggdmlhIG1lbW9yeS4KKytAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcntub25lfX0gd2lsbCBub3QgZ2VuZXJhdGUKKytsZmVuY2Ugbm9yIGlzc3VlIHdhcm5pbmcsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LiAgTm90ZSB0aGF0IGxmZW5jZSB3b24ndAorK2JlIGdlbmVyYXRlZCBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2ggdmlhIHJlZ2lzdGVyIHdpdGgKKytAb3B0aW9uey1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcnt5ZXN9fSBzaW5jZSBsZmVuY2Ugd2lsbCBiZSBnZW5lcmF0ZWQKKythZnRlciBsb2FkaW5nIGJyYW5jaCB0YXJnZXQgcmVnaXN0ZXIuCisrCisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtcmV0PX0gb3B0aW9uLCBpMzg2CisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtcmV0PX0gb3B0aW9uLCB4ODYtNjQKKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7bm9uZX0KKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7b3J9CisrQGl0ZW14IC1tbGZlbmNlLWJlZm9yZS1yZXQ9QHZhcntub3R9CisrVGhlc2Ugb3B0aW9ucyBjb250cm9sIHdoZXRoZXIgdGhlIGFzc2VtYmxlciBzaG91bGQgZ2VuZXJhdGUgbGZlbmNlCisrYmVmb3JlIHJldC4gIEBvcHRpb257LW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye29yfX0gd2lsbCBnZW5lcmF0ZQorK2dlbmVyYXRlIG9yIGluc3RydWN0aW9uIHdpdGggbGZlbmNlLgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye25vdH19IHdpbGwgZ2VuZXJhdGUgbm90IGluc3RydWN0aW9uCisrd2l0aCBsZmVuY2UuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7bm9uZX19IHdpbGwgbm90IGdlbmVyYXRlIGxmZW5jZSwKKyt3aGljaCBpcyB0aGUgZGVmYXVsdC4KKysKKyBAY2luZGV4IEBzYW1wey1teDg2LXVzZWQtbm90ZT19IG9wdGlvbiwgaTM4NgorIEBjaW5kZXggQHNhbXB7LW14ODYtdXNlZC1ub3RlPX0gb3B0aW9uLCB4ODYtNjQKKyBAaXRlbSAtbXg4Ni11c2VkLW5vdGU9QHZhcntub30KKy0tIAorMi4xOC4yCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODkzMTU5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotcmVxdWlyZSBiaW51dGlscy5pbmMKLXJlcXVpcmUgYmludXRpbHMtJHtQVn0uaW5jCi0KLURFUEVORFMgKz0gImZsZXggYmlzb24gemxpYiIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtc3lzcm9vdD0vIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDFfbGliYz15ZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0Ml9saWJjPXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1lbmFibGUtdGFyZ2V0cz1hbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS02NC1iaXQtYmZkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13ZXJyb3IiCi0KLSMgZ2NjOS4wIGVuZCB1cCBtaXMtY29tcGlsaW5nIGxpYmJmZC5zbyB3aXRoIE8yIHdoaWNoIHRoZW4gY3Jhc2hlcyBvbiB0YXJnZXQKLSMgU28gcmVtb3ZlIC1PMiBhbmQgdXNlIC1PcyBhcyB3b3JrYXJvdW5kCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT05fcmVtb3ZlX21pcHNhcmNoID0gIi1PMiIKLVNFTEVDVEVEX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2FyY2ggPSAiIC1PcyIKLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKLQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0JaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KLQotCSMgV2Ugb25seSB3YW50IGxpYmliZXJ0eSwgbGliYmZkIGFuZCBsaWJvcGNvZGVzCi0Jcm0gLXJmICR7RH0ke2JpbmRpcn0KLQlybSAtcmYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9Ci0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vbGliL2xkc2NyaXB0cwotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2luZm8KLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9tYW4KLQlybWRpciAke0R9JHtwcmVmaXh9L3NoYXJlIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfS9nY2MtbGliIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfTY0L2djYy1saWIgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9IHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfTY0IHx8IDoKLX0KLQotIyBTcGxpdCBvdXQgbGliYmZkLSouc28gc28gaW5jbHVkaW5nIHBlcmYgZG9lc24ndCBpbmNsdWRlIGV4dHJhIHN0dWZmCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAibGliYmZkIgotRklMRVNfbGliYmZkID0gIiR7bGliZGlyfS9saWJiZmQtKi5zbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjM0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTY0NWUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zNC5iYgpAQCAtMCwwICsxLDY1IEBACityZXF1aXJlIGJpbnV0aWxzLmluYworcmVxdWlyZSBiaW51dGlscy0ke1BWfS5pbmMKKworREVQRU5EUyArPSAiZmxleCBiaXNvbiB6bGliIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zeXNyb290PS8gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWVuYWJsZS10YXJnZXRzPWFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdkYiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nZGJzZXJ2ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliZGVjbnVtYmVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJlYWRsaW5lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNpbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13ZXJyb3IiCisKKyMgZ2NjOS4wIGVuZCB1cCBtaXMtY29tcGlsaW5nIGxpYmJmZC5zbyB3aXRoIE8yIHdoaWNoIHRoZW4gY3Jhc2hlcyBvbiB0YXJnZXQKKyMgU28gcmVtb3ZlIC1PMiBhbmQgdXNlIC1PcyBhcyB3b3JrYXJvdW5kCitTRUxFQ1RFRF9PUFRJTUlaQVRJT05fcmVtb3ZlX21pcHNhcmNoID0gIi1PMiIKK1NFTEVDVEVEX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2FyY2ggPSAiIC1PcyIKKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KKwlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KKworCSMgV2Ugb25seSB3YW50IGxpYmliZXJ0eSwgbGliYmZkIGFuZCBsaWJvcGNvZGVzCisJcm0gLXJmICR7RH0ke2JpbmRpcn0KKwlybSAtcmYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9CisJcm0gLXJmICR7RH0ke3ByZWZpeH0vbGliL2xkc2NyaXB0cworCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2luZm8KKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9tYW4KKwlybWRpciAke0R9JHtwcmVmaXh9L3NoYXJlIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfS9nY2MtbGliIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0L2djYy1saWIgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9IHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0IHx8IDoKK30KKworIyBTcGxpdCBvdXQgbGliYmZkLSouc28gc28gaW5jbHVkaW5nIHBlcmYgZG9lc24ndCBpbmNsdWRlIGV4dHJhIHN0dWZmCitQQUNLQUdFX0JFRk9SRV9QTiArPSAibGliYmZkIgorRklMRVNfbGliYmZkID0gIiR7bGliZGlyfS9saWJiZmQtKi5zby4qICR7bGliZGlyfS9saWJiZmQtKi5zbyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gICIgZmlsZTovLzAwMDMtYmludXRpbHMtbmF0aXZlc2RrLVNlYXJjaC1mb3ItYWx0ZXJuYXRpdmUtbGQuc28uY29uZi5wYXRjaCAiCisKK1VTRV9BTFRFUk5BVElWRVNfRk9SX2NsYXNzLW5hdGl2ZXNkayA9ICIiCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke2JpbmRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZmMGY5MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIFByb2plY3QgcGFyc2VyIGdlbmVyYXRvciAoeWFjYyByZXBsYWNlbWVudCkiCi1ERVNDUklQVElPTiA9ICJCaXNvbiBpcyBhIGdlbmVyYWwtcHVycG9zZSBwYXJzZXIgZ2VuZXJhdG9yIHRoYXQgY29udmVydHMgYW4gYW5ub3RhdGVkIGNvbnRleHQtZnJlZSBncmFtbWFyIGludG8gXAotYW4gTEFMUigxKSBvciBHTFIgcGFyc2VyIGZvciB0aGF0IGdyYW1tYXIuICBCaXNvbiBpcyB1cHdhcmQgY29tcGF0aWJsZSB3aXRoIFlhY2M6IGFsbCBwcm9wZXJseS13cml0dGVuIFlhY2MgXAotZ3JhbW1hcnMgb3VnaHQgdG8gd29yayB3aXRoIEJpc29uIHdpdGggbm8gY2hhbmdlLiBBbnlvbmUgZmFtaWxpYXIgd2l0aCBZYWNjIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBCaXNvbiB3aXRoIFwKLWxpdHRsZSB0cm91YmxlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iaXNvbi8iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1TRUNUSU9OID0gImRldmVsIgotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9iaXNvbi9iaXNvbi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2ggXAotIgotCi0jIE5vIHBvaW50IGluIGhhcmRjb2RpbmcgcGF0aCB0byBtNCwganVzdCB1c2UgUEFUSAotRVhUUkFfT0VDT05GICs9ICJNND1tNCIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxY2ViOWRmZGUyZDAzYjI0YTRjMTEzN2Y3ZjFiNTcyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3ZDA1NTM0Njk5NzM1ZGM2OWU4NmFkZDViODA4ZDZjYjM1OTAwYWQzZmQ2M2ZhODJlM2ViNjQ0MzM2YWJmYTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi0jIFRoZSBhdXRvbWF0aWMgbTQgcGF0aCBkZXRlY3Rpb24gZ2V0cyBjb25mdXNlZCwgc28gZm9yY2UgdGhlIHJpZ2h0IHZhbHVlCi1hY3BhdGhzID0gIi1JICR7U30vbTQiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlmb3IgaSBpbiBtZmNhbGMgY2FsYysrIHJwY2FsYzsgZG8gbWtkaXIgLXAgJHtCfS9leGFtcGxlcy8kaTsgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYmlzb24gXAotCQlCSVNPTl9QS0dEQVRBRElSPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYmlzb24KLX0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9iaXNvbiBcCi0JCUJJU09OX1BLR0RBVEFESVI9JHtkYXRhZGlyfS9iaXNvbgotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWMzNGY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy41LjQuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJHTlUgUHJvamVjdCBwYXJzZXIgZ2VuZXJhdG9yICh5YWNjIHJlcGxhY2VtZW50KSIKK0RFU0NSSVBUSU9OID0gIkJpc29uIGlzIGEgZ2VuZXJhbC1wdXJwb3NlIHBhcnNlciBnZW5lcmF0b3IgdGhhdCBjb252ZXJ0cyBhbiBhbm5vdGF0ZWQgY29udGV4dC1mcmVlIGdyYW1tYXIgaW50byBcCithbiBMQUxSKDEpIG9yIEdMUiBwYXJzZXIgZm9yIHRoYXQgZ3JhbW1hci4gIEJpc29uIGlzIHVwd2FyZCBjb21wYXRpYmxlIHdpdGggWWFjYzogYWxsIHByb3Blcmx5LXdyaXR0ZW4gWWFjYyBcCitncmFtbWFycyBvdWdodCB0byB3b3JrIHdpdGggQmlzb24gd2l0aCBubyBjaGFuZ2UuIEFueW9uZSBmYW1pbGlhciB3aXRoIFlhY2Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIEJpc29uIHdpdGggXAorbGl0dGxlIHRyb3VibGUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jpc29uLyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK1NFQ1RJT04gPSAiZGV2ZWwiCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jpc29uL2Jpc29uLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCisiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGMxN2U5OTg4MTk3OGZhMzJjMDU5MzNjNTI2MjQ1N2ZhNWIyYjYxMTY2ODQ1NGY4ZGMyYTY5NWNkNmIzNzIwYyIKKworIyBObyBwb2ludCBpbiBoYXJkY29kaW5nIHBhdGggdG8gbTQsIGp1c3QgdXNlIFBBVEgKK0VYVFJBX09FQ09ORiArPSAiTTQ9bTQiCisKKyMgUmVzZXQgYW55IGxvYWRhdmcgc2V0IHZpYSBlbnZpcm9ubWVudCwgaXQgYnJlYWtzIHBhcmFsbGVsIGJ1aWxkCisjIHwgLi4vYmlzb24tMy41LjIvbGliL3VuaXdpZHRoL3dpZHRoLmM6MjE6MTA6IGZhdGFsIGVycm9yOiB1bml3aWR0aC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisjIHwgICNpbmNsdWRlICJ1bml3aWR0aC5oIgorIyB8ICAgICAgICAgICBefn5+fn5+fn5+fn4KK0VYVFJBX09FTUFLRV9hcHBlbmQgPSAiIC1sIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworIyBUaGUgYXV0b21hdGljIG00IHBhdGggZGV0ZWN0aW9uIGdldHMgY29uZnVzZWQsIHNvIGZvcmNlIHRoZSByaWdodCB2YWx1ZQorYWNwYXRocyA9ICItSSAke1N9L200IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZm9yIGkgaW4gbWZjYWxjIGNhbGMrKyBycGNhbGM7IGRvIG1rZGlyIC1wICR7Qn0vZXhhbXBsZXMvJGk7IGRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2Jpc29uIFwKKwkJQklTT05fUEtHREFUQURJUj0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Jpc29uCit9Citkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYmlzb24gXAorCQlCSVNPTl9QS0dEQVRBRElSPSR7ZGF0YWRpcn0vYmlzb24KK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NGMwYmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCi1pbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKLWVhc3kgYWRtaW5pc3RyYXRpb24uIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCi1idHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKLVNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgotUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgotCi1TUkNSRVYgPSAiZjgyZTU2OWIzM2MzYzFjZmQ0ZjhmNDA1MDg1ZmY4ZDQzOWEwYTkxNSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLXBvc3NpYmlsaXR5LXRvLXNwZWNpZnktd2hlcmUtcHl0aG9uLW1vZHVsZXMtYXIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24iCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sLS1kaXNhYmxlLXB5dGhvbixweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1t6c3RkXSA9ICItLWVuYWJsZS16c3RkLC0tZGlzYWJsZS16c3RkLHpzdGQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2Rpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgotRVhUUkFfUFlUSE9OX0NGTEFHUyA9ICIke0RFQlVHX1BSRUZJWF9NQVB9IgotRVhUUkFfUFlUSE9OX0NGTEFHU19jbGFzcy1uYXRpdmUgPSAiIgotRVhUUkFfUFlUSE9OX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKLUVYVFJBX09FTUFLRSA9ICJWPTEgJ0VYVFJBX1BZVEhPTl9DRkxBR1M9JHtFWFRSQV9QWVRIT05fQ0ZMQUdTfScgJ0VYVFJBX1BZVEhPTl9MREZMQUdTPSR7RVhUUkFfUFlUSE9OX0xERkxBR1N9JyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCi0JbWtkaXIgLXAgJHtTfS9jb25maWcKLQljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLwotfQotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCi0gICAgICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBpbnN0YWxsX3B5dGhvbgotICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGM5NzFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS40LjEuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAoraW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCitlYXN5IGFkbWluaXN0cmF0aW9uLiBcCitUaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAorYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKK1JERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKKworU1JDUkVWID0gIjNmYzIzMjZkMzQ3NGE1ZTRkZjI0NDlmNWUzMDQzZjcyOTg1MDEzMzQiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1wb3NzaWJpbGl0eS10by1zcGVjaWZ5LXdoZXJlLXB5dGhvbi1tb2R1bGVzLWFyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLC0tZGlzYWJsZS1weXRob24scHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbenN0ZF0gPSAiLS1lbmFibGUtenN0ZCwtLWRpc2FibGUtenN0ZCx6c3RkIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9CisKK0NMRUFOQlJPS0VOID0gIjEiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKK0VYVFJBX1BZVEhPTl9DRkxBR1MgPSAiJHtERUJVR19QUkVGSVhfTUFQfSIKK0VYVFJBX1BZVEhPTl9DRkxBR1NfY2xhc3MtbmF0aXZlID0gIiIKK0VYVFJBX1BZVEhPTl9MREZMQUdTID0gIiR7TERGTEFHU30iCitFWFRSQV9PRU1BS0UgPSAiVj0xICdFWFRSQV9QWVRIT05fQ0ZMQUdTPSR7RVhUUkFfUFlUSE9OX0NGTEFHU30nICdFWFRSQV9QWVRIT05fTERGTEFHUz0ke0VYVFJBX1BZVEhPTl9MREZMQUdTfSciCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgVXBzdHJlYW0gZG9lc24ndCBzaGlwIHRoaXMgYW5kIGF1dG9yZWNvbmYgd29uJ3QgaW5zdGFsbCBpdCBhcyBhdXRvbWFrZSBpc24ndCB1c2VkLgorCW1rZGlyIC1wICR7U30vY29uZmlnCisJY3AgLWYgJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikvaW5zdGFsbC1zaCAke1N9L2NvbmZpZy8KK30KKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdQWVRIT05fU0lURVBBQ0tBR0VTX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgaW5zdGFsbF9weXRob24KKyAgICBmaQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmE2ODJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgY2NhY2hlLmluYwotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuYWRvYzttZDU9MDA5NGM1OTAzOWNlYzY2YjhhNGM5MDUyMDQzMzM1MTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YmU2MmVhNmUxOTA5NDFhOGMxMmEzZDUzOTRmZDkyNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNTU5NTVhNjE1NjJjNTNjNGVjNDY2OWUxYzkyNzA4YjAwMDhmNTBkMjE0YjI3ZjA3YTg3Y2Y0YTFmYTZiMDFlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U3MzYyYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjcuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGNjYWNoZS5pbmMKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLmFkb2M7bWQ1PTIyZDUxNGRiYzAxZmRmOWE5Nzg0MzM0YjZiNTk0MTdhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTAwZDdiZDllYmM2ZWUzMTA1ZDdmYzMzMmMxZWYzOTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWI2MWY3ZmFiMmVjMTUzMDVlZTgzODJiMDMzNjU1MDMyMzJkZmIwNGI1NzQxNGU3YjA0MzM3NjhkNTMwZmE4YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKaW5kZXggMWM2MDJlNy4uYjU2OGJiMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKQEAgLTgsNyArOCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMmY2ODE3MGJlNDI0YzJjZDY0ODA0MzM3NzI2YjMxMiIKIAogU1JDX1VSSSA9ICIgXAotCSR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2NkcnRvb2xzL2NkcnRvb2xzLSR7UkVBTFBWfS50YXIuYnoyIFwKKwkke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9jZHJ0b29scy9jZHJ0b29scy0ke1BWfS50YXIuYnoyIFwKIAlmaWxlOi8vMDAwMS1Eb24tdC1zZXQtdWlkLWdpZC1kdXJpbmctaW5zdGFsbC5wYXRjaCBcCiAJIgogVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCkBAIC0yMywxMSArMjMsNiBAQAogCiBpbmhlcml0IG5hdGl2ZQogCi1QViA9ICIzLjAxYTMxK3JlYWxseTMuMDEiCi1SRUFMUFYgPSAiMy4wMSIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1JFQUxQVn0iCi0KIGRvX2luc3RhbGwoKSB7CiAJbWFrZSBpbnN0YWxsIEdNQUtFX05PV0FSTj10cnVlIElOU19CQVNFPSR7cHJlZml4fSBERVNURElSPSR7RH0KIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjE1LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xNi41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xNS4zLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xNi41LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKaW5kZXggZDhhOWUyZC4uMDk5NDliNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwpAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gImJmNjllODM3ZWVkYTNkZDRlOWY1MmNmZmNmNTQ2YTExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzOTU4MjQzYTAxMzY1YjA1NjUyZmEwMWIyMWQ0MGZhODM0ZjcwYTllMzBlZmE2OWMwMjYwNGU2NGY1OGI4ZjUiCitTUkNfVVJJW21kNXN1bV0gPSAiZDg2Y2NhZjNkMjQ2MmI2YjU5NDc5MTlhYmU1YjlmMTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWY3NjBiNTBiOGVjYzljMGMzNzEzNWZhZTVmYmYwMGEyZmVmNjE3MDU5YWE5ZDYxYzFiYjkxNjUzZTVhOGJmYyIKIAogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiY21ha2UtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2gKaW5kZXggMzcyMDgzMy4uZTJhNThkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMWU2N2MzZmU1MmM2YzUxYzAwY2YxZWJiMGJmYzMwYzdhNWVmOWZkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYWIyNzJkNzAzY2U3N2YzMjNhYTEyODU1MjY1NTljOWVmYmY4NTgzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENvZHkgUCBTY2hhZmVyIDxkZXZAY29keXBzLmNvbT4KIERhdGU6IFRodSwgMjcgQXByIDIwMTcgMTE6MzU6MDUgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gQ01ha2VEZXRlcm1pbmVTeXN0ZW06IHVzZSBvZSBlbnZpcm9ubWVudCB2YXJzIHRvIGxvYWQgZGVmYXVsdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCmluZGV4IGRiMjI5ZTYuLjYxYzhmMjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDVjYjZjODY2OTZmODQyMjc0MDQzZTdkNDA2Zjg0YjNlYWQxYzM2ZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDVhODZjN2ZhOTg3YmQ0MDdmMjI4MTc2ZGYyYWJlZmZkMDE1YmU5ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgogRGF0ZTogV2VkLCAxNyBKYW4gMjAxOCAxMDowMjoxNCAtMDIwMAogU3ViamVjdDogW1BBVENIXSBjbWFrZTogUHJldmVudCB0aGUgZGV0ZWN0aW9uIG9mIFF0NQpAQCAtMzgsMTAgKzM4LDEwIEBACiAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UXQ1V2lkZ2V0c19JTkNMVURFX0RJUlN9KQogICAgYWRkX2RlZmluaXRpb25zKCR7UXQ1V2lkZ2V0c19ERUZJTklUT05TfSkKIGRpZmYgLS1naXQgYS9UZXN0cy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBlNzNiMjc3Li45MWI4YjY3IDEwMDY0NAoraW5kZXggNTdmYTdmYy4uZDUwYzE0NiAxMDA2NDQKIC0tLSBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0CiArKysgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAotQEAgLTEzNDgsNyArMTM0OCw3IEBAICR7Q01ha2VfU09VUkNFX0RJUn0vVXRpbGl0aWVzL1JlbGVhc2UvcHVzaC5iYXNoIC0tZGlyIGRldiAtLSAnJHtDTWFrZV9CVUlMRF9OSUdICitAQCAtMTMyOSw3ICsxMzI5LDcgQEAgJHtDTWFrZV9TT1VSQ0VfRElSfS9VdGlsaXRpZXMvUmVsZWFzZS9wdXNoLmJhc2ggLS1kaXIgZGV2IC0tICcke0NNYWtlX0JVSUxEX05JR0gKICAgICAgc2V0KENNYWtlX1RFU1RfUXQ1IDEpCiAgICBlbmRpZigpCiAgICBpZihDTWFrZV9URVNUX1F0NSkKQEAgLTk2LDExICs5NiwxMSBAQAogIHNldChDTUFLRV9DWFhfU1RBTkRBUkQgMTEpCiAgc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L291dHB1dC9iaW4pCiBkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAotaW5kZXggNjlmODE2Mi4uZjM4OTUyMyAxMDA2NDQKK2luZGV4IDZiMmYxMTcuLjEwMDIwMDUgMTAwNjQ0CiAtLS0gYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAogKysrIGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKLUBAIC0zMzQsNyArMzM0LDcgQEAgYWRkX1J1bkNNYWtlX3Rlc3QoY29uZmlndXJlX2ZpbGUpCi0gYWRkX1J1bkNNYWtlX3Rlc3QoQ1Rlc3RUaW1lb3V0QWZ0ZXJNYXRjaCkKK0BAIC0zNzYsNyArMzc2LDcgQEAgZWxzZSgpCisgZW5kaWYoKQogIAogIGZpbmRfcGFja2FnZShRdDQgUVVJRVQpCiAtZmluZF9wYWNrYWdlKFF0NUNvcmUgUVVJRVQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCmluZGV4IGQ3ZDg3YTUuLmUzMGRjNTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiMDAzODU3ZDM0ODExMDVjNDczZTJlNzViYWQ0ZTllMmM2ZTcwMDA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNTI4ODYxMDIzYmY2OWRmMGFkMDYxYTU5ZmQ0ZTUyN2M5ZGRlMWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KIERhdGU6IFRodSwgMTIgTWF5IDIwMTEgMTU6MzY6MDMgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gY21ha2U6IHN1cHBvcnQgT3BlbkVtYmVkZGVkIFF0NCB0b29sIGJpbmFyeSBuYW1lcwpAQCAtMjUsNyArMjUsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLWluZGV4IGExNDViNDYuLjdlMTgyNDMgMTAwNjQ0CitpbmRleCAzOTkzOTY4Li5iMmE4NTg1IDEwMDY0NAogLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCiArKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKIEBAIC01MTgsNyArNTE4LDcgQEAgZW5kZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoCmluZGV4IDY3NmUyODUuLjQ4ZjQzYmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ0YTc4ZTg3MzllODQ1YzI5NjM2NjZmN2VmNmE2YzdhODk4Mjc5ODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIwYWVjYTM1MTg3OTgzZTIyZWMyNTZhNDM5Y2ZmNDcwMmRiZGUzMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgogRGF0ZTogVGh1LCA1IEp1bCAyMDE4IDEwOjI2OjQ4IC0wMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZhaWwgc2lsZW50bHkgaWYgc3lzdGVtIFF0IGluc3RhbGxhdGlvbiBpcyBicm9rZW4KQEAgLTI4LDcgKzI4LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLWluZGV4IDdlMTgyNDMuLjQ5N2Q1YzMgMTAwNjQ0CitpbmRleCBiMmE4NTg1Li43N2M4OWFhIDEwMDY0NAogLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCiArKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKIEBAIC05ODgsMjUgKzk4OCwyNiBAQCBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTYuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xNS4zLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjE2LjUuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5N2RiNzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJDIGltcGxlbWVudGF0aW9uIG9mIGNyZWF0ZXJlcG8uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2NyZWF0ZXJlcG9fYy93aWtpIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9jcmVhdGVyZXBvX2MgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDUkVWID0gImJjNjdmMTllZDA5NTkzZTM4ODZlYmVlZTIzOTFlOWQ1MWNjMzQzOWYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAiZXhwYXQgY3VybCBnbGliLTIuMCBsaWJ4bWwyIG9wZW5zc2wgYnppcDIgemxpYiBmaWxlIHNxbGl0ZTMgeHogcnBtIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uIGRpc3R1dGlsczMtYmFzZQotCi1FWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMgLURXSVRIX1pDSFVOSz1PRkYgLURFTkFCTEVfRFJQTT1PRkYgLURXSVRIX0xJQk1PRFVMRU1EPU9GRiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIERpcmVjdCBjcmVhdGVyZXBvIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2NyZWF0ZXJlcG9fYyBcCi0gICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vY3JlYXRlcmVwb19jIFwKLSAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U0RLUEFUSE5BVElWRX0ke2xpYmRpcl9uYXRpdmVzZGt9L3JwbQotICAgICAgICBybSAtcmYgJHtEfS9ldGMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNTNmZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS43LmJiCkBAIC0wLDAgKzEsMzQgQEAKK0RFU0NSSVBUSU9OID0gIkMgaW1wbGVtZW50YXRpb24gb2YgY3JlYXRlcmVwby4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvY3JlYXRlcmVwb19jL3dpa2kiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2NyZWF0ZXJlcG9fYyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNGFiNmI1NmI4YjcxODM5NjM4Njk4MmFmYmE0YWRlMjk3YzE0ZDkxYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJleHBhdCBjdXJsIGdsaWItMi4wIGxpYnhtbDIgb3BlbnNzbCBiemlwMiB6bGliIGZpbGUgc3FsaXRlMyB4eiBycG0iCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24gZGlzdHV0aWxzMy1iYXNlCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyAtRFdJVEhfWkNIVU5LPU9GRiAtREVOQUJMRV9EUlBNPU9GRiAtRFdJVEhfTElCTU9EVUxFTUQ9T0ZGIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgRGlyZWN0IGNyZWF0ZXJlcG8gdG8gcmVhZCBycG0gY29uZmlndXJhdGlvbiBmcm9tIG91ciBzeXNyb290LCBub3QgdGhlIG9uZSBpdCB3YXMgY29tcGlsZWQgaW4KK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vY3JlYXRlcmVwb19jIFwKKyAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9jcmVhdGVyZXBvX2MgXAorICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTREtQQVRITkFUSVZFfSR7bGliZGlyX25hdGl2ZXNka30vcnBtCisgICAgICAgIHJtIC1yZiAke0R9L2V0YworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXQvMDAwMS1hY2xvY2FsLm00LWFkZC1taXNzaW5nLWhlYWRlci1kZWZpbmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXQvMDAwMS1hY2xvY2FsLm00LWFkZC1taXNzaW5nLWhlYWRlci1kZWZpbmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZDk0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdC8wMDAxLWFjbG9jYWwubTQtYWRkLW1pc3NpbmctaGVhZGVyLWRlZmluZXMucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSAwMDRiZDgwZDI1MjNmNTM4NDY3YjVhZGEyNjIzZWIyMDdiNTVkYWQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE1OjQ0OjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFjbG9jYWwubTQ6IGFkZCBtaXNzaW5nIGhlYWRlciBkZWZpbmVzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBhY2xvY2FsLm00IHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00CitpbmRleCAzYjE5ZTgyLi5jMGM0YWNiIDEwMDY0NAorLS0tIGEvYWNsb2NhbC5tNAorKysrIGIvYWNsb2NhbC5tNAorQEAgLTE5MjcsMyArMTkyNyw4IEBAIG1ha2UgYW4gZXJyb3IKKyBmaQorIGZpICMgY2ZfY3ZfcG9zaXhfdmlzaWJsZQorIF0pCisrCisrQUNfREVGSU5FKFtIQVZFX1RDR0VUQVRUUl0sIFtdLCBbRGVzY3JpcHRpb25dKQorK0FDX0RFRklORShbSEFWRV9UQ1NFVEFUVFJdLCBbXSwgW0Rlc2NyaXB0aW9uXSkKKytBQ19ERUZJTkUoW0hBVkVfVEVSTUlPU19IXSwgW10sIFtEZXNjcmlwdGlvbl0pCisrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNkNzc3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIHRvIHByb2R1Y2UgYSBzdGF0aXN0aWNzIGJhc2VkIG9uIGEgZGlmZiIKLURFU0NSSVBUSU9OID0gImRpZmZzdGF0IHJlYWRzIHRoZSBvdXRwdXQgb2YgZGlmZiBhbmQgZGlzcGxheXMgYSBoaXN0b2dyYW0gb2YgXAotdGhlIGluc2VydGlvbnMsIGRlbGV0aW9ucywgYW5kIG1vZGlmaWNhdGlvbnMgcGVyLWZpbGUuIEl0IGlzIHVzZWZ1bCBmb3IgXAotcmV2aWV3aW5nIGxhcmdlLCBjb21wbGV4IHBhdGNoIGZpbGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWZmc3RhdC8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbnN0YWxsLXNoO2VuZGxpbmU9NDI7bWQ1PWIzNTQ5NzI2YzEwMjJiZWUwOWMxNzRjNzJhMGNhNGE1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9pbnZpc2libGUtbWlycm9yLm5ldC9hcmNoaXZlcy8ke0JQTn0vJHtCUH0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1jaGVjay11c2VyLWJyZWFrLWNjLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxZTEwNmJiMzRjYjA5Nzc1MGRiN2RkYzBiYTFkOGZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmMDkxODM2NDRlZDc3YTE1NmIxNTM0NmJiYWQ0ZTg5YzkzNTQzZTE0MGFkZDlkYWIxODc0N2UzMDUyMjU5MWYiCi0KLVMgPSAiJHtXT1JLRElSfS9kaWZmc3RhdC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXIgJHtTfS90ZXN0aW5nICR7RH0ke1BURVNUX1BBVEh9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTBhN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42My5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlRvb2wgdG8gcHJvZHVjZSBhIHN0YXRpc3RpY3MgYmFzZWQgb24gYSBkaWZmIgorREVTQ1JJUFRJT04gPSAiZGlmZnN0YXQgcmVhZHMgdGhlIG91dHB1dCBvZiBkaWZmIGFuZCBkaXNwbGF5cyBhIGhpc3RvZ3JhbSBvZiBcCit0aGUgaW5zZXJ0aW9ucywgZGVsZXRpb25zLCBhbmQgbW9kaWZpY2F0aW9ucyBwZXItZmlsZS4gSXQgaXMgdXNlZnVsIGZvciBcCityZXZpZXdpbmcgbGFyZ2UsIGNvbXBsZXggcGF0Y2ggZmlsZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpZmZzdGF0LyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2luc3RhbGwtc2g7ZW5kbGluZT00MjttZDU9YjM1NDk3MjZjMTAyMmJlZTA5YzE3NGM3MmEwY2E0YTUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkLWNoZWNrLXVzZXItYnJlYWstY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2xvY2FsLm00LWFkZC1taXNzaW5nLWhlYWRlci1kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjkyNzJlYzhhZjYyNTcxMDMyNjFlYzM2MjI2OTI5OTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2VkZGQ1MzQwMWI5OWI5MGJhYzNmN2ViZjIzZGQ1ODNkN2Q5OWM2MTA2ZTY3YTRmMTE2MWI3YTIwMTEwZGM2ZiIKKworUyA9ICIke1dPUktESVJ9L2RpZmZzdGF0LSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0CisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgorCitMREZMQUdTICs9ICIke1RPT0xDSEFJTl9PUFRJT05TfSIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtciAke1N9L3Rlc3RpbmcgJHtEfSR7UFRFU1RfUEFUSH0KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1zZXQtcHl0aG9uLXBhdGgtZm9yLWNvbXBsZXRpb25faGVscGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLXNldC1weXRob24tcGF0aC1mb3ItY29tcGxldGlvbl9oZWxwZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ4ZjY0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1zZXQtcHl0aG9uLXBhdGgtZm9yLWNvbXBsZXRpb25faGVscGVyLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gN2U3OWIzYjY3ZmQ1Y2VjZDczODBlN2UzNjVmZDg4ZWNhNjNiNWJmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAyMjoxMDowMiArMDAwMAorU3ViamVjdDogW1BBVENIXSBzZXQgcHl0aG9uIHBhdGggZm9yIGNvbXBsZXRpb25faGVscGVyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgZG5mL2NsaS9jb21wbGV0aW9uX2hlbHBlci5weS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4gYi9kbmYvY2xpL2NvbXBsZXRpb25faGVscGVyLnB5LmluCitpbmRleCAzNTEyMjY3NTkuLjI4MzVjZDNiNiAxMDA2NDQKKy0tLSBhL2RuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4KKysrKyBiL2RuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBZVEhPTl9FWEVDVVRBQkxFQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBkbmYuCisgIworLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi9GaXgtU3ludGF4V2FybmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvRml4LVN5bnRheFdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJkOGIwOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvRml4LVN5bnRheFdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAyM2M1YjE1ZWZlNDJlNWU2ZWU2OTVlNTQ3OThiYWMyNDg1MzJkOGQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorCitEYXRlOiBUdWUsIDI4IE1heSAyMDE5IDEzOjE0OjUxICswMjAwCitTdWJqZWN0OiBbb2UtY29yZV1bUEFUQ0ggMS8xXSBGaXggU3ludGF4V2FybmluZzogImlzIiB3aXRoIGEgbGl0ZXJhbC4gRGlkIHlvdQorIG1lYW4gIj09Ij8KKworLS0tCisgZG5mL2NsaS9jb21tYW5kcy9yZXBvcXVlcnkucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCistLS0KKworVW5jaGFuZ2VkLiAgQXBwZWFycyBpbiB2ZXJzaW9uIDQuMi43LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2RuZi5naXRdCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCitkaWZmIC0tZ2l0IGEvZG5mL2NsaS9jb21tYW5kcy9yZXBvcXVlcnkucHkgYi9kbmYvY2xpL2NvbW1hbmRzL3JlcG9xdWVyeS5weQoraW5kZXggOTQxYTQ3MC4uNjNmYzY2OCAxMDA2NDQKKy0tLSBhL2RuZi9jbGkvY29tbWFuZHMvcmVwb3F1ZXJ5LnB5CisrKysgYi9kbmYvY2xpL2NvbW1hbmRzL3JlcG9xdWVyeS5weQorQEAgLTYxMSw3ICs2MTEsNyBAQCBjbGFzcyBSZXBvUXVlcnlDb21tYW5kKGNvbW1hbmRzLkNvbW1hbmQpOgorIAorICAgICBkZWYgdHJlZV9zZWVkKHNlbGYsIHF1ZXJ5LCBhcXVlcnksIG9wdHMsIGxldmVsPS0xLCB1c2VkcGtncz1Ob25lKToKKyAgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHNldChxdWVyeS5ydW4oKSksIGtleT1sYW1iZGEgcDogcC5uYW1lKToKKy0gICAgICAgICAgICB1c2VkcGtncyA9IHNldCgpIGlmIHVzZWRwa2dzIGlzIE5vbmUgb3IgbGV2ZWwgaXMgLTEgZWxzZSB1c2VkcGtncworKyAgICAgICAgICAgIHVzZWRwa2dzID0gc2V0KCkgaWYgdXNlZHBrZ3MgaXMgTm9uZSBvciBsZXZlbCA9PSAtMSBlbHNlIHVzZWRwa2dzCisgICAgICAgICAgICAgaWYgcGtnLm5hbWUuc3RhcnRzd2l0aCgicnBtbGliIikgb3IgcGtnLm5hbWUuc3RhcnRzd2l0aCgic29sdmFibGUiKToKKyAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgc2VsZi5ncm93X3RyZWUobGV2ZWwsIHBrZywgb3B0cykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl80LjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfNC4yLjIuYmIKaW5kZXggZjM4MTY3Zi4uYTA0NmZmYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl80LjIuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzQuMi4yLmJiCkBAIC0xMyw2ICsxMyw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9GaXgtU3ludGF4V2FybmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNldC1weXRob24tcGF0aC1mb3ItY29tcGxldGlvbl9oZWxwZXIucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ1JFViA9ICI5OTQ3MzA2YTU1MjcxYjhiN2M5ZTJiNmUzYjdkNTgyODg1YjYwNDVkIgpAQCAtODQsMyArODYsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS50aW1lciBcCiAiCiBTWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgorCitQTkJMQUNLTElTVFtkbmZdID89ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRV9DTEFTU0VTJywgJ3BhY2thZ2VfcnBtJywgJycsICdkb2VzIG5vdCBidWlsZCB3aXRob3V0IHBhY2thZ2VfcnBtIGluIFBBQ0tBR0VfQ0xBU1NFUyBkdWUgZGlzYWJsZWQgcnBtIHN1cHBvcnQgaW4gbGlic29sdicsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29sc180LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHNfNC4xLmJiCmluZGV4IDY5YWE4MWEuLjIzYjg4MzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29sc180LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzQuMS5iYgpAQCAtMjMsMyArMjMsNiBAQAogQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgQWRkIGNvZGVwYWdlNDM3IHRvIGF2b2lkIGVycm9yIGZyb20gYGRvc2ZzY2sgLWxgCitSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaWJtNDM3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYwppbmRleCBhNTRhMTFjLi4wMDlmNWVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYwpAQCAtNCw5ICs0LDkgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LyIKIAogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiAmIEJTRCAmIE1JVCIKK0xJQ0VOU0VfZTJmc3Byb2dzLWR1bXBlMmZzID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtZTJmc2NrID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtbWtlMmZzID0gIkdQTHYyIgotTElDRU5TRV9lMmZzcHJvZ3MtZnNjayA9ICJHUEx2MiIKIExJQ0VOU0VfZTJmc3Byb2dzLXR1bmUyZnMgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy1iYWRibG9ja3MgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PWQ1MGJlMDU4MGMwYjBhN2ZiYzdhNDgzMGJiZTZjMTJiIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1jb25maWd1cmUuYWMtY29ycmVjdC1BTV9HTlVfR0VUVEVYVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1jb25maWd1cmUuYWMtY29ycmVjdC1BTV9HTlVfR0VUVEVYVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE5NTk0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWNvbmZpZ3VyZS5hYy1jb3JyZWN0LUFNX0dOVV9HRVRURVhULnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gZjkwN2ZlYTllYTA1M2Q1NDMzYjUxOTljZTc0MDA4NjY0MTQxZjc1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxNzozMjozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGNvcnJlY3QgQU1fR05VX0dFVFRFWFQKKworTmV3IHZlcnNpb24gb2YgZ2V0dGV4dCByZXF1aXJlIHRoZSAnZXh0ZXJuYWwnIGFyZ3VtZW50LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA2NTRmZjQzZC4uNDc3MmI5N2IgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTg3Myw3ICs4NzMsNyBAQCBBQ19TVUJTVChHRVRURVhUX1BBQ0tBR0UpCisgQUNfU1VCU1QoUEFDS0FHRSkKKyBBQ19TVUJTVChWRVJTSU9OKQorIAorLUFNX0dOVV9HRVRURVhUCisrQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSkKKyBkbmwgQE1LRElSX1BAIGlzIGV4cGFuZGVkIGluIEFNX0dOVV9HRVRURVhUCisgQUNfU1VCU1QoW21rZGlyX3BdLFsnJChNS0RJUl9QKSddKQorIGRubApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1kb24tdC10cnktdG8tcmVoYXNoLWEtZGVsZXRlZC1kaXJlY3RvcnkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtZTJmc2NrLWRvbi10LXRyeS10by1yZWhhc2gtYS1kZWxldGVkLWRpcmVjdG9yeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTRlM2EzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1kb24tdC10cnktdG8tcmVoYXNoLWEtZGVsZXRlZC1kaXJlY3RvcnkucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSA3MWJhMTM3NTUzMzdlMTljOWE4MjZkZmM4NzQ1NjJhMzZlMWIyNGQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KK0RhdGU6IFRodSwgMTkgRGVjIDIwMTkgMTk6NDU6MDYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZTJmc2NrOiBkb24ndCB0cnkgdG8gcmVoYXNoIGEgZGVsZXRlZCBkaXJlY3RvcnkKKworSWYgZGlyZWN0b3J5IGhhcyBiZWVuIGRlbGV0ZWQgaW4gcGFzczFbYmNkXSBwcm9jZXNzaW5nLCB0aGVuIHdlCitzaG91bGRuJ3QgdHJ5IHRvIHJlaGFzaCB0aGUgZGlyZWN0b3J5IGluIHBhc3MgM2Egd2hlbiB3ZSB0cnkgdG8KK3JlaGFzaC9yZW9wdGltaXplIGRpcmVjdG9yaWVzLgorCitTaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZnMvZXh0Mi9lMmZzcHJvZ3MuZ2l0L2NvbW1pdC8/aWQ9NzFiYTEzNzU1MzM3ZTE5YzlhODI2ZGZjODc0NTYyYTM2ZTFiMjRkM10KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBlMmZzY2svcGFzczFiLmMgfCA0ICsrKysKKyBlMmZzY2svcmVoYXNoLmMgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2UyZnNjay9wYXNzMWIuYyBiL2UyZnNjay9wYXNzMWIuYworaW5kZXggNTY5M2I5Y2YuLmJjYTcwMWNhIDEwMDY0NAorLS0tIGEvZTJmc2NrL3Bhc3MxYi5jCisrKysgYi9lMmZzY2svcGFzczFiLmMKK0BAIC03MDUsNiArNzA1LDEwIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZV9maWxlKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisgCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFCX0JMT0NLX0lURVJBVEUsICZwY3R4KTsKKyAJaWYgKGN0eC0+aW5vZGVfYmFkX21hcCkKKyAJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2JhZF9tYXAsIGlubyk7CisrCWlmIChjdHgtPmlub2RlX3JlZ19tYXApCisrCQlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9yZWdfbWFwLCBpbm8pOworKwlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9kaXJfbWFwLCBpbm8pOworKwlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV91c2VkX21hcCwgaW5vKTsKKyAJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgaW5vLCAtMSwgTElOVVhfU19JU0RJUihkcC0+aW5vZGUuaV9tb2RlKSk7CisgCXF1b3RhX2RhdGFfc3ViKGN0eC0+cWN0eCwgJmRwLT5pbm9kZSwgaW5vLAorIAkJICAgICAgIHBiLmR1cF9ibG9ja3MgKiBmcy0+YmxvY2tzaXplKTsKK2RpZmYgLS1naXQgYS9lMmZzY2svcmVoYXNoLmMgYi9lMmZzY2svcmVoYXNoLmMKK2luZGV4IDNkZDFlOTQxLi4yYzkwOGJlMCAxMDA2NDQKKy0tLSBhL2UyZnNjay9yZWhhc2guYworKysrIGIvZTJmc2NrL3JlaGFzaC5jCitAQCAtMTAyOCw2ICsxMDI4LDggQEAgdm9pZCBlMmZzY2tfcmVoYXNoX2RpcmVjdG9yaWVzKGUyZnNja190IGN0eCkKKyAJCQlpZiAoIWV4dDJmc191MzJfbGlzdF9pdGVyYXRlKGl0ZXIsICZpbm8pKQorIAkJCQlicmVhazsKKyAJCX0KKysJCWlmICghZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGlubykpCisrCQkJY29udGludWU7CisgCisgCQlwY3R4LmRpciA9IGlubzsKKyAJCWlmIChmaXJzdCkgeworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWludGwtZG8tbm90LXRyeS10by11c2UtZ2V0dGV4dC1kZWZpbmVzLXRoYXQtbm8tbG9uZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtaW50bC1kby1ub3QtdHJ5LXRvLXVzZS1nZXR0ZXh0LWRlZmluZXMtdGhhdC1uby1sb25nZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWI1ODVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWludGwtZG8tbm90LXRyeS10by11c2UtZ2V0dGV4dC1kZWZpbmVzLXRoYXQtbm8tbG9uZ2UucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBkMDM0MjM5ZjA1Y2ZiYTg0OWY2YWQxNmViM2YxZWEzN2VmYmU0Zjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDE4OjM0OjAwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGludGw6IGRvIG5vdCB0cnkgdG8gdXNlIGdldHRleHQgZGVmaW5lcyB0aGF0IG5vIGxvbmdlciBleGlzdAorCitOZXdlciB2ZXJzaW9uIG9mIGdldHRleHQgbm8gbG9uZ2VyIGRlZmluZSB0aGlzIGluIG00IGZpbGVzLAorc28gcGF0Y2ggaXQgb3V0IHVudGlsIGUyZnNwcm9ncyB1cHN0cmVhbSBzb3J0cyB0aGUgc2l0dWF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhcmRjb2RlcyBhIGNob2ljZV0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgaW50bC9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ludGwvTWFrZWZpbGUuaW4gYi9pbnRsL01ha2VmaWxlLmluCitpbmRleCBlMDM3ZTIzYy4uODlhODc2YjggMTAwNjQ0CistLS0gYS9pbnRsL01ha2VmaWxlLmluCisrKysgYi9pbnRsL01ha2VmaWxlLmluCitAQCAtMTc1LDcgKzE3NSw3IEBAIGxpYmdudWludGwuaC5tc3ZjLXN0YXRpYyBsaWJnbnVpbnRsLmgubXN2Yy1zaGFyZWQgUkVBRE1FLndvZTMyIE1ha2VmaWxlLm1zdmMKKyBESVNURklMRVMub2Jzb2xldGUgPSB4b3Blbi1tc2cuc2VkIGxpbnV4LW1zZy5zZWQgcG8ydGJsLnNlZC5pbiBjYXQtY29tcGF0LmMgXAorIENPUFlJTkcuTElCLTIgZ2V0dGV4dC5oIGxpYmdldHRleHQuaCBwbHVyYWwtZXZhbC5jIGxpYmdudWludGwuaAorIAorLWFsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKKythbGw6CisgYWxsLXllczogbGliaW50bC4kbGEgbGliaW50bC5oIGNoYXJzZXQuYWxpYXMgcmVmLWFkZC5zZWQgcmVmLWRlbC5zZWQKKyBhbGwtbm86IGFsbC1uby1AQlVJTERfSU5DTFVERURfTElCSU5UTEAKKyBhbGwtbm8teWVzOiBsaWJnbnVpbnRsLiRsYQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9DVkUtMjAxOS01MTg4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9DVkUtMjAxOS01MTg4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNGJjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL0NWRS0yMDE5LTUxODgucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSA4ZGQ3M2MxNDlmNDE4MjM4ZjE5NzkxZjlkNjY2MDg5ZWY5NzM0ZGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KK0RhdGU6IFRodSwgMTkgRGVjIDIwMTkgMTk6Mzc6MzQgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZTJmc2NrOiBhYm9ydCBpZiB0aGVyZSBpcyBhIGNvcnJ1cHRlZCBkaXJlY3RvcnkgYmxvY2sgd2hlbgorIHJlaGFzaGluZworCitJbiBlMmZzY2sgcGFzcyAzYSwgd2hlbiB3ZSBhcmUgcmVoYXNoaW5nIGRpcmVjdG9yaWVzLCBhdCBsZWFzdCBpbgordGhlb3J5LCBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIHNob3VsZCBoYXZlIGhhZCBjb3JydXB0aW9ucyB3aXRoCityZXNwZWN0IHRvIGRpcmVjdG9yeSBlbnRyeSBzdHJ1Y3R1cmUgZml4ZWQuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlCisoZm9yIGV4YW1wbGUsIGlmIHRoZSB1c2VyIGRlY2xpbmVkIGEgZml4KSB0aGF0IHdlIGNhbiByZWFjaCB0aGlzIHN0YWdlCitvZiBwcm9jZXNzaW5nIHdpdGggYSBjb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJpZXMuCisKK1NvIGNoZWNrIGZvciB0aGF0IGNhc2UgYW5kIGRvbid0IHRyeSB0byBwcm9jZXNzIGEgY29ycnVwdGVkIGRpcmVjdG9yeQorYmxvY2sgc28gd2UgZG9uJ3QgcnVuIGludG8gdHJvdWJsZSBpbiBtdXRhdGVfbmFtZSgpIGlmIHRoZXJlIGlzIGEKK3plcm8tbGVuZ3RoIGZpbGUgbmFtZS4KKworQWRkcmVzc2VzOiBUQUxPUy0yMDE5LTA5NzMKK0FkZHJlc3NlczogQ1ZFLTIwMTktNTE4OAorU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKworQ1ZFOiBDVkUtMjAxOS01MTg4CitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2ZzL2V4dDIvZTJmc3Byb2dzLmdpdC9jb21taXQvP2lkPThkZDczYzE0OWY0MTgyMzhmMTk3OTFmOWQ2NjYwODllZjk3MzRkZmZdCistLS0KKyBlMmZzY2svcmVoYXNoLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2UyZnNjay9yZWhhc2guYyBiL2UyZnNjay9yZWhhc2guYworaW5kZXggYTVmYzFiZTEuLjNkZDFlOTQxIDEwMDY0NAorLS0tIGEvZTJmc2NrL3JlaGFzaC5jCisrKysgYi9lMmZzY2svcmVoYXNoLmMKK0BAIC0xNjAsNiArMTYwLDEwIEBAIHN0YXRpYyBpbnQgZmlsbF9kaXJfYmxvY2soZXh0Ml9maWxzeXMgZnMsCisgCQlkaXJfb2Zmc2V0ICs9IHJlY19sZW47CisgCQlpZiAoZGlyZW50LT5pbm9kZSA9PSAwKQorIAkJCWNvbnRpbnVlOworKwkJaWYgKChuYW1lX2xlbikgPT0gMCkgeworKwkJCWZkLT5lcnIgPSBFWFQyX0VUX0RJUl9DT1JSVVBURUQ7CisrCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworKwkJfQorIAkJaWYgKCFmZC0+Y29tcHJlc3MgJiYgKG5hbWVfbGVuID09IDEpICYmCisgCQkgICAgKGRpcmVudC0+bmFtZVswXSA9PSAnLicpKQorIAkJCWNvbnRpbnVlOworQEAgLTQwMSw2ICs0MDUsMTEgQEAgc3RhdGljIGludCBkdXBsaWNhdGVfc2VhcmNoX2FuZF9maXgoZTJmc2NrX3QgY3R4LCBleHQyX2ZpbHN5cyBmcywKKyAJCQljb250aW51ZTsKKyAJCX0KKyAJCW5ld19sZW4gPSBleHQyZnNfZGlyZW50X25hbWVfbGVuKGVudC0+ZGlyKTsKKysJCWlmIChuZXdfbGVuID09IDApIHsKKysJCQkgLyogc2hvdWxkIG5ldmVyIGhhcHBlbiAqLworKwkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworKwkJCWNvbnRpbnVlOworKwkJfQorIAkJbWVtY3B5KG5ld19uYW1lLCBlbnQtPmRpci0+bmFtZSwgbmV3X2xlbik7CisgCQltdXRhdGVfbmFtZShuZXdfbmFtZSwgJm5ld19sZW4pOworIAkJZm9yIChqPTA7IGogPCBmZC0+bnVtX2FycmF5OyBqKyspIHsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc2NrLWZpeC11c2UtYWZ0ZXItZnJlZS1pbi1jYWxjdWxhdGVfdHJlZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc2NrLWZpeC11c2UtYWZ0ZXItZnJlZS1pbi1jYWxjdWxhdGVfdHJlZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDJhMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzY2stZml4LXVzZS1hZnRlci1mcmVlLWluLWNhbGN1bGF0ZV90cmVlLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Zyb206IFdhbmcgU2hpbG9uZyA8d3NoaWxvbmdAZGRuLmNvbT4KK0RhdGU6IE1vbiwgMzAgRGVjIDIwMTkgMTk6NTI6MzkgLTA1MDAKK1N1YmplY3Q6IGUyZnNjazogZml4IHVzZSBhZnRlciBmcmVlIGluIGNhbGN1bGF0ZV90cmVlKCkKKworVGhlIHByb2JsZW0gaXMgYWxsb2NfYmxvY2tzKCkgd2lsbCBjYWxsIGdldF9uZXh0X2Jsb2NrKCkgd2hpY2ggbWlnaHQKK3JlYWxsb2NhdGUgb3V0ZGlyLT5idWYsIGFuZCBtZW1vcnkgYWRkcmVzcyBjb3VsZCBiZSBjaGFuZ2VkIGFmdGVyCit0aGlzLiAgVG8gZml4IHRoaXMsIHBvaW50ZXJzIHRoYXQgcG9pbnQgaW50byBvdXRkaXItPmJ1Ziwgc3VjaCBhcworaW50X2xpbWl0IGFuZCByb290IG5lZWQgdG8gYmUgcmVjYXVsYXRlZCBiYXNlZCBvbiB0aGUgbmV3IHN0YXJ0aW5nCithZGRyZXNzIG9mIG91dGRpci0+YnVmLgorCitbIENoYW5nZWQgdG8gY29ycmVjdGx5IHJlY2FsY3VsYXRlIGludF9saW1pdCwgYW5kIHRvIG9wdGltaXplIGhvdyB3ZQorICByZWFsbG9jYXRlIG91dGRpci0+YnVmLiAgLVRZVCBdCisKK0FkZHJlc3Nlcy1EZWJpYW4tQnVnOiA5NDg1MTcKK1NpZ25lZC1vZmYtYnk6IFdhbmcgU2hpbG9uZyA8d3NoaWxvbmdAZGRuLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAxMDFlNzNlOTljY2FmYTA0MDNmY2IyN2RkNzQxMzAzM2I1ODdjYTAxKQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2ZzL2V4dDIvZTJmc3Byb2dzLmdpdC9jb21taXQvP2lkPTEwMWU3M2U5OWNjYWZhMDQwM2ZjYjI3ZGQ3NDEzMDMzYjU4N2NhMDFdCistLS0KKyBlMmZzY2svcmVoYXNoLmMgfCAxNyArKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9lMmZzY2svcmVoYXNoLmMgYi9lMmZzY2svcmVoYXNoLmMKK2luZGV4IDBhNTg4OGE5Li4yNTc0ZTE1MSAxMDA2NDQKKy0tLSBhL2UyZnNjay9yZWhhc2guYworKysrIGIvZTJmc2NrL3JlaGFzaC5jCitAQCAtMjk1LDcgKzI5NSwxMSBAQCBzdGF0aWMgZXJyY29kZV90IGdldF9uZXh0X2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3Qgb3V0X2RpciAqb3V0ZGlyLAorIAllcnJjb2RlX3QJcmV0dmFsOworIAorIAlpZiAob3V0ZGlyLT5udW0gPj0gb3V0ZGlyLT5tYXgpIHsKKy0JCXJldHZhbCA9IGFsbG9jX3NpemVfZGlyKGZzLCBvdXRkaXIsIG91dGRpci0+bWF4ICsgNTApOworKwkJaW50IGluY3JlbWVudCA9IG91dGRpci0+bWF4IC8gMTA7CisrCisrCQlpZiAoaW5jcmVtZW50IDwgNTApCisrCQkJaW5jcmVtZW50ID0gNTA7CisrCQlyZXR2YWwgPSBhbGxvY19zaXplX2Rpcihmcywgb3V0ZGlyLCBvdXRkaXItPm1heCArIGluY3JlbWVudCk7CisgCQlpZiAocmV0dmFsKQorIAkJCXJldHVybiByZXR2YWw7CisgCX0KK0BAIC02MzcsNiArNjQxLDkgQEAgc3RhdGljIGludCBhbGxvY19ibG9ja3MoZXh0Ml9maWxzeXMgZnMsCisgCWlmIChyZXR2YWwpCisgCQlyZXR1cm4gcmV0dmFsOworIAorKwkvKiBvdXRkaXItPmJ1ZiBtaWdodCBiZSByZWFsbG9jYXRlZCAqLworKwkqcHJldl9lbnQgPSAoc3RydWN0IGV4dDJfZHhfZW50cnkgKikgKG91dGRpci0+YnVmICsgKnByZXZfb2Zmc2V0KTsKKysKKyAJKm5leHRfZW50ID0gc2V0X2ludF9ub2RlKGZzLCBibG9ja19zdGFydCk7CisgCSpsaW1pdCA9IChzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0ICopKCpuZXh0X2VudCk7CisgCWlmIChuZXh0X29mZnNldCkKK0BAIC03MjYsNiArNzMzLDkgQEAgc3RhdGljIGVycmNvZGVfdCBjYWxjdWxhdGVfdHJlZShleHQyX2ZpbHN5cyBmcywKKyAJCQkJCXJldHVybiByZXR2YWw7CisgCQkJfQorIAkJCWlmIChjMyA9PSAwKSB7CisrCQkJCWludCBkZWx0YTEgPSAoY2hhciAqKWludF9saW1pdCAtIG91dGRpci0+YnVmOworKwkJCQlpbnQgZGVsdGEyID0gKGNoYXIgKilyb290IC0gb3V0ZGlyLT5idWY7CisrCisgCQkJCXJldHZhbCA9IGFsbG9jX2Jsb2NrcyhmcywgJmxpbWl0LCAmaW50X2VudCwKKyAJCQkJCQkgICAgICAmZHhfZW50LCAmaW50X29mZnNldCwKKyAJCQkJCQkgICAgICBOVUxMLCBvdXRkaXIsIGksICZjMiwKK0BAIC03MzMsNiArNzQzLDExIEBAIHN0YXRpYyBlcnJjb2RlX3QgY2FsY3VsYXRlX3RyZWUoZXh0Ml9maWxzeXMgZnMsCisgCQkJCWlmIChyZXR2YWwpCisgCQkJCQlyZXR1cm4gcmV0dmFsOworIAorKwkJCQkvKiBvdXRkaXItPmJ1ZiBtaWdodCBiZSByZWFsbG9jYXRlZCAqLworKwkJCQlpbnRfbGltaXQgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKQorKwkJCQkJKG91dGRpci0+YnVmICsgZGVsdGExKTsKKysJCQkJcm9vdCA9IChzdHJ1Y3QgZXh0Ml9keF9lbnRyeSAqKQorKwkJCQkJKG91dGRpci0+YnVmICsgZGVsdGEyKTsKKyAJCQl9CisgCQkJZHhfZW50LT5ibG9jayA9IGV4dDJmc19jcHVfdG9fbGUzMihpKTsKKyAJCQlpZiAoYzMgIT0gbGltaXQtPmxpbWl0KQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoCmluZGV4IDY5YzA5YmMuLjRkMzM1YWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGM3OTE0MzA5YWVlZTYyMDlkZGI2OTk1YzA4NDgwNWE5MTFkOWNjODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU4MzMxYTc2OTgzZTgzOWEzZDE5MzQ0NmFiOGFlOWMxYjA5ZGFhMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxMToxOTo0NCArMDgwMAogU3ViamVjdDogW1BBVENIXSBGaXggbWlzc2luZyBjaGVjayBmb3IgcGVybWlzc2lvbiBkZW5pZWQuCkBAIC0xOSw3ICsxOSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvc3VwcG9ydC9wcm9maWxlLmMgYi9saWIvc3VwcG9ydC9wcm9maWxlLmMKLWluZGV4IDllOTY2NzNiLi4zMmQ4MzAwMiAxMDA2NDQKK2luZGV4IDU4NWVkNTk1Li44MTBkZDY2YiAxMDA2NDQKIC0tLSBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwogKysrIGIvbGliL3N1cHBvcnQvcHJvZmlsZS5jCiBAQCAtMzM1LDcgKzMzNSw3IEBAIHByb2ZpbGVfaW5pdChjb25zdCBjaGFyICogY29uc3QgKmZpbGVzLCBwcm9maWxlX3QgKnJldF9wcm9maWxlKQpAQCAtMzEsNiArMzEsMyBAQAogIAkJCSAgIHN0cmNtcCgqZnMsIGRlZmF1bHRfZmlsZW5hbWUpKQogIAkJCWdvdG8gZXJyb3V0OwogIAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9xdWlldC1kZWJ1Z2ZzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9xdWlldC1kZWJ1Z2ZzLnBhdGNoCmluZGV4IDgzMGU5ZDUuLjk1ZTZhN2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcXVpZXQtZGVidWdmcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3F1aWV0LWRlYnVnZnMucGF0Y2gKQEAgLTEsMTQgKzEsMjMgQEAKK0Zyb20gZGU2ZDZmMGRkMDEwZjViOWQ5MTc1NTNhY2I5NDMwMjc4ZjQ0OGYyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDIzIERlYyAyMDEzIDEzOjM4OjM0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGUyZnNwcm9nczogc2lsZW5jZSBkZWJ1Z2ZzCisKIFdoZW4gZXhlY3V0aW5nIGEgc2NyaXB0IGRvbid0IGVjaG8gZXZlcnkgY29tbWFuZCwgYXMgd2UgZG8gdGhpcyBmb3IgZW50aXJlCiBmaWxlc3lzdGVtcyBhdCByb290ZnMgdGltZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBkZWJ1Z2ZzL2RlYnVnZnMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKwogZGlmZiAtLWdpdCBhL2RlYnVnZnMvZGVidWdmcy5jIGIvZGVidWdmcy9kZWJ1Z2ZzLmMKLWluZGV4IDU1OTAyOTUuLmFjNTcyOTIgMTAwNjQ0CitpbmRleCAxNWIwMTIxNC4uMTUxNjRkZjIgMTAwNjQ0CiAtLS0gYS9kZWJ1Z2ZzL2RlYnVnZnMuYwogKysrIGIvZGVidWdmcy9kZWJ1Z2ZzLmMKLUBAIC0yMzc4LDcgKzIzNzgsNyBAQCBzdGF0aWMgaW50IHNvdXJjZV9maWxlKGNvbnN0IGNoYXIgKmNtZF9maWxlLCBpbnQgc3NfaWR4KQorQEAgLTI0OTIsNyArMjQ5Miw3IEBAIHN0YXRpYyBpbnQgc291cmNlX2ZpbGUoY29uc3QgY2hhciAqY21kX2ZpbGUsIGludCBzc19pZHgpCiAgCQljcCA9IHN0cmNocihidWYsICdccicpOwogIAkJaWYgKGNwKQogIAkJCSpjcCA9IDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NS40LmJiCmluZGV4IDkwZGI3MWQuLjRmN2NhZmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NS40LmJiCkBAIC0xLDExICsxLDE2IEBACiByZXF1aXJlIGUyZnNwcm9ncy5pbmMKIAogU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ta2Rpcl9wLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pc2MtY3JlYXRlX2lub2RlLmMtc2V0LWRpci1zLW1vZGUtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ta2Rpcl9wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtY29ycmVjdC1BTV9HTlVfR0VUVEVYVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludGwtZG8tbm90LXRyeS10by11c2UtZ2V0dGV4dC1kZWZpbmVzLXRoYXQtbm8tbG9uZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktNTE4OC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWUyZnNjay1kb24tdC10cnktdG8tcmVoYXNoLWEtZGVsZXRlZC1kaXJlY3RvcnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZTJmc2NrLWZpeC11c2UtYWZ0ZXItZnJlZS1pbi1jYWxjdWxhdGVfdHJlZS5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9xdWlldC1kZWJ1Z2ZzLnBhdGNoIFwKQEAgLTgwLDEyICs4NSwxMyBAQAogCW12ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdHVuZTJmcyAke0R9JHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMuZTJmc3Byb2dzCiB9CiAKLVJERVBFTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIgorUkRFUEVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLWR1bXBlMmZzIgogUlJFQ09NTUVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLWUyZnNjayIKIAotUEFDS0FHRVMgPSsgImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLWUyc2NydWIgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCitQQUNLQUdFUyA9KyAiZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtZHVtcGUyZnMgZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtZTJzY3J1YiBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1yZXNpemUyZnMgZTJmc3Byb2dzLXR1bmUyZnMiCiBQQUNLQUdFUyA9KyAibGliY29tZXJyIGxpYnNzIGxpYmUycCBsaWJleHQyZnMiCiAKK0ZJTEVTX2UyZnNwcm9ncy1kdW1wZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vZHVtcGUyZnMiCiBGSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgogRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCiBGSUxFU19lMmZzcHJvZ3MtZTJzY3J1YiA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJzY3J1YioiCkBAIC0xMTUsNyArMTIxLDcgQEAKIAogUkRFUEVORFNfZTJmc3Byb2dzLWUyc2NydWIgPSAiYmFzaCIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJjb3JldXRpbHMgcHJvY3BzIGJhc2ggYnppcDIgZGlmZnV0aWxzIHBlcmwgc2VkIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtZHVtcGUyZnMgZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1yZXNpemUyZnMgZTJmc3Byb2dzLXR1bmUyZnMiCiAKIGRvX2NvbXBpbGVfcHRlc3QoKSB7CiAJb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3Ny5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzc0MGM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzKyAmIEdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaW50bCIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyBtdXNsLW9ic3RhY2sgIgotIyBUaGUgRGViaWFuIHBhdGNoZXMgYmVsb3cgYXJlIGZyb206Ci0jIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzYtMS5kZWJpYW4udGFyLnh6Ci1TUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZWxmLWVsZl9lbmQuYy1jaGVjay1kYXRhX2xpc3QuZGF0YS5kLmRfYnVmLWJlZm9yZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2h1cmRfcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2Rpc2FibGVfd2Vycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19jZmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWRlYmlhbi1wYXRjaGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2tpcC10aGUtdGVzdC13aGVuLWdjYy1ub3QtZGVwbG95ZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGNfaW5pdHJlZy5jLUluY2xpdWRlLWFzbS1wdHJhY2UuaC1mb3ItcHRfcmVncy1kZWZpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLWxpYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXVzbC11dGlscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjBiNTgzNzIyZjkxMWUxNjMyNTQ0NzE4ZDUwMmFhYjg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZhNDg5ZGVjY2JjYWU3ZDhjOTIwZjYwZDg1OTA2MTI0YzE5ODljNTkxMTk2ZDkwZTBmZDY2OGUzZGMwNTA0MmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIgotCi1ERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6bGliLC0td2l0aG91dC1iemxpYiwke0RFUEVORFNfQlpJUDJ9IgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHoiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJhc20gbGliZWxmIGJhc2ggbWFrZSBjb3JldXRpbHMgJHtQTn0tYmludXRpbHMiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ICs9ICItLWRpc2FibGUtdGVzdHMtcnBhdGgiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiAhPSAieDg2XzY0IiBdICYmIFsgLXogYGVjaG8gIiR7VEFSR0VUX0FSQ0h9InxncmVwICdpLjg2J2AgXTt0aGVuCi0JCXJtIC1mICR7RH0ke2JpbmRpcn0vZXUtb2JqZHVtcAotCWZpCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JY2QgJHtCfS90ZXN0cwotCW9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTIG9lY2hlY2sKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpZiBbICR7UFRFU1RfRU5BQkxFRH0gPSAiMSIgXTsgdGhlbgotCQkjIGNvcHkgdGhlIGZpbGVzIHdoaWNoIG5lZWRlZCBieSB0aGUgY2FzZXMKLQkJVEVTVF9GSUxFUz0ic3RyaXAgc3RyaXAubyBhZGRyMmxpbmUgZWxmY21wIG9iamR1bXAgcmVhZGVsZiBzaXplLm8gbm0ubyBubSBlbGZsaW50IgotCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0JCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJlbGYKLQkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2xpYmR3Ci0JCWZvciB0ZXN0X2ZpbGUgaW4gJHtURVNUX0ZJTEVTfTsgZG8KLQkJCWlmIFsgLWYgJHtCfS9zcmMvJHt0ZXN0X2ZpbGV9IF07IHRoZW4KLQkJCQljcCAtciAke0J9L3NyYy8ke3Rlc3RfZmlsZX0gJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0JCQlmaQotCQlkb25lCi0JCWNwICR7RH0ke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmVsZi9saWJlbGYuc28KLQkJY3AgJHtEfSR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJkdy9saWJkdy5zbwotCQljcCAtciAke1N9L3Rlc3RzLyAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLQkJY3AgLXIgJHtCfS90ZXN0cy8qICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0JCWNwIC1yICR7Qn0vY29uZmlnLmggICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotCQljcCAtciAke0J9L2JhY2tlbmRzICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLQkJc2VkIC1pICcvXk1ha2VmaWxlOi9jIE1ha2VmaWxlOicgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi0JCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLXR5cGUgZiAtbmFtZSAqLltob2NdIHwgeGFyZ3MgLWkgcm0ge30KLQlmaQotfQotCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIiIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgUGFja2FnZSB1dGlsaXRpZXMgc2VwYXJhdGVseQotUEFDS0FHRVMgPSsgIiR7UE59LWJpbnV0aWxzIGxpYmVsZiBsaWJhc20gbGliZHciCi0KLSMgc2hhcmVkIGxpYnJhcmllcyBhcmUgbGljZW5zZWQgR1BMdjIgb3IgR1BMdjMrLCBiaW5hcmllcyBHUEx2MysKLSMgYWNjb3JkaW5nIHRvIE5FV1MgZmlsZToKLSMgIlRoZSBsaWNlbnNlIGlzIG5vdyBHUEx2Mi9MR1BMdjMrIGZvciB0aGUgbGlicmFyaWVzIGFuZCBHUEx2MysgZm9yIHN0YW5kLWFsb25lCi0jIHByb2dyYW1zLiBUaGVyZSBpcyBub3cgYWxzbyBhIGZvcm1hbCBDT05UUklCVVRJTkcgZG9jdW1lbnQgZGVzY3JpYmluZyBob3cgdG8KLSMgc3VibWl0IHBhdGNoZXMuIgotTElDRU5TRV8ke1BOfS1iaW51dGlscyA9ICJHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYzKyIKLUxJQ0VOU0VfbGliZWxmID0gIkdQTHYyIHwgTEdQTHYzKyIKLUxJQ0VOU0VfbGliYXNtID0gIkdQTHYyIHwgTEdQTHYzKyIKLUxJQ0VOU0VfbGliZHcgPSAiR1BMdjIgfCBMR1BMdjMrIgotCi1GSUxFU18ke1BOfS1iaW51dGlscyA9ICJcCi0gICAgJHtiaW5kaXJ9L2V1LWFkZHIybGluZSBcCi0gICAgJHtiaW5kaXJ9L2V1LWxkIFwKLSAgICAke2JpbmRpcn0vZXUtbm0gXAotICAgICR7YmluZGlyfS9ldS1yZWFkZWxmIFwKLSAgICAke2JpbmRpcn0vZXUtc2l6ZSBcCi0gICAgJHtiaW5kaXJ9L2V1LXN0cmlwIgotCi1GSUxFU19saWJlbGYgPSAiJHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke2xpYmRpcn0vbGliZWxmLnNvLioiCi1GSUxFU19saWJhc20gPSAiJHtsaWJkaXJ9L2xpYmFzbS0ke1BWfS5zbyAke2xpYmRpcn0vbGliYXNtLnNvLioiCi1GSUxFU19saWJkdyAgPSAiJHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7bGliZGlyfS9saWJkdy5zby4qICR7bGliZGlyfS9lbGZ1dGlscy9saWIqIgotIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKLSMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgotI0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi0ke1BWfS5zbyAke2Jhc2VfbGliZGlyfS8qLSR7UFZ9LnNvIgotI0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliYXNtLnNvICR7bGliZGlyfS9saWJkdy5zbyAke2xpYmRpcn0vbGliZWxmLnNvIgotCi0jIFRoZSBwYWNrYWdlIGNvbnRhaW5zIHN5bWxpbmtzIHRoYXQgdHJpcCB1cCBpbnNhbmUKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliZHcgPSAiZGV2LXNvIgotCi0jIGF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgdGVzdHMgc3VjaCBhcyB0ZXN0LW5saXN0LAotIyBydW4tc3RyaXAtcmVsb2Muc2gsIHJ1bi1zdHJpcC1zdHJtZXJnZS5zaCBhbmQgc28gb24gd2lsbCBmYWlsCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVBfRklMRVMgPSAiXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3Qtbmxpc3QgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2VsZnN0cm1lcmdlIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9iYWNrdHJhY2UtY2hpbGQgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2JhY2t0cmFjZS1kYXRhIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kZWxldGVkIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvc3RyaXAgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9hZGRyMmxpbmUgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9lbGZjbXAgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9vYmpkdW1wIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvcmVhZGVsZiBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL25tIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvZWxmbGludCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliZWxmL2xpYmVsZi5zbyBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliZHcvbGliZHcuc28gXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2JhY2tlbmRzL2xpYmVibF9pMzg2LnNvIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9iYWNrZW5kcy9saWJlYmxfeDg2XzY0LnNvIFwKLSIKLQotUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmR3LnNvLjEgbGliZWxmLnNvLjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3OS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYTk1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3OS5iYgpAQCAtMCwwICsxLDE1NyBAQAorU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgaGFuZGxpbmcgY29tcGlsZWQgb2JqZWN0IGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMrICYgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpbnRsIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUgZnRzIG11c2wtb2JzdGFjayAiCisjIFRoZSBEZWJpYW4gcGF0Y2hlcyBiZWxvdyBhcmUgZnJvbToKKyMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3Ni0xLmRlYmlhbi50YXIueHoKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscy9mdHAvJHtQVn0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmVsZi1lbGZfZW5kLmMtY2hlY2stZGF0YV9saXN0LmRhdGEuZC5kX2J1Zi1iZWZvcmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2tmcmVlYnNkX3BhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9odXJkX3BhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kaXNhYmxlX3dlcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfY2ZpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1kZWJpYW4tcGF0Y2hlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNraXAtdGhlLXRlc3Qtd2hlbi1nY2Mtbm90LWRlcGxveWVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjX2luaXRyZWcuYy1JbmNsaXVkZS1hc20tcHRyYWNlLmgtZm9yLXB0X3JlZ3MtZGVmaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW11c2wtbGlicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW11c2wtdXRpbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtZXJyb3Itb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZWU1NmIzNzFiNWE3ZWEwODEyODRjNDRlNTE2NDYwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWE1NDU1NjZjYmFjYWEzN2FlNjIyMmU1OGYxYzQ4ZWE0NTcwZjUzYmE5OTE4ODZlMmY1Y2U5NmUyMmEyM2EyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0IHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD1ldS0gLS1kaXNhYmxlLWRlYnVnaW5mb2QiCisKK0RFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnpsaWIsLS13aXRob3V0LWJ6bGliLCR7REVQRU5EU19CWklQMn0iCitQQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmFzbSBsaWJlbGYgYmFzaCBtYWtlIGNvcmV1dGlscyAke1BOfS1iaW51dGlscyIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0tZGlzYWJsZS10ZXN0cy1ycGF0aCIKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7Qn0vdGVzdHMKKwlvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUyBvZWNoZWNrCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaWYgWyAke1BURVNUX0VOQUJMRUR9ID0gIjEiIF07IHRoZW4KKwkJIyBjb3B5IHRoZSBmaWxlcyB3aGljaCBuZWVkZWQgYnkgdGhlIGNhc2VzCisJCVRFU1RfRklMRVM9InN0cmlwIHN0cmlwLm8gYWRkcjJsaW5lIGVsZmNtcCBvYmpkdW1wIHJlYWRlbGYgc2l6ZS5vIG5tLm8gbm0gZWxmbGludCBlbGZjb21wcmVzcyBlbGZjbGFzc2lmeSBzdGFjayB1bnN0cmlwIgorCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisJCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJlbGYKKwkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2xpYmR3CisJCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJhc20KKwkJZm9yIHRlc3RfZmlsZSBpbiAke1RFU1RfRklMRVN9OyBkbworCQkJaWYgWyAtZiAke0J9L3NyYy8ke3Rlc3RfZmlsZX0gXTsgdGhlbgorCQkJCWNwIC1yICR7Qn0vc3JjLyR7dGVzdF9maWxlfSAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKwkJCWZpCisJCWRvbmUKKwkJY3AgJHtEfSR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliZWxmL2xpYmVsZi5zbworCQljcCAke0R9JHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmR3L2xpYmR3LnNvCisJCWNwICR7RH0ke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmFzbS9saWJhc20uc28KKwkJY3AgLXIgJHtTfS90ZXN0cy8gICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisJCWNwIC1yICR7Qn0vdGVzdHMvKiAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCQljcCAtciAke0J9L2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKwkJY3AgLXIgJHtCfS9iYWNrZW5kcyAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisJCXNlZCAtaSAnL15NYWtlZmlsZTovYyBNYWtlZmlsZTonICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorCQlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC10eXBlIGYgLW5hbWUgKi5baG9jXSB8IHhhcmdzIC1pIHJtIHt9CisJZmkKK30KKworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIFBhY2thZ2UgdXRpbGl0aWVzIHNlcGFyYXRlbHkKK1BBQ0tBR0VTID0rICIke1BOfS1iaW51dGlscyBsaWJlbGYgbGliYXNtIGxpYmR3IgorCisjIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGxpY2Vuc2VkIEdQTHYyIG9yIEdQTHYzKywgYmluYXJpZXMgR1BMdjMrCisjIGFjY29yZGluZyB0byBORVdTIGZpbGU6CisjICJUaGUgbGljZW5zZSBpcyBub3cgR1BMdjIvTEdQTHYzKyBmb3IgdGhlIGxpYnJhcmllcyBhbmQgR1BMdjMrIGZvciBzdGFuZC1hbG9uZQorIyBwcm9ncmFtcy4gVGhlcmUgaXMgbm93IGFsc28gYSBmb3JtYWwgQ09OVFJJQlVUSU5HIGRvY3VtZW50IGRlc2NyaWJpbmcgaG93IHRvCisjIHN1Ym1pdCBwYXRjaGVzLiIKK0xJQ0VOU0VfJHtQTn0tYmludXRpbHMgPSAiR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MysiCitMSUNFTlNFX2xpYmVsZiA9ICJHUEx2MiB8IExHUEx2MysiCitMSUNFTlNFX2xpYmFzbSA9ICJHUEx2MiB8IExHUEx2MysiCitMSUNFTlNFX2xpYmR3ID0gIkdQTHYyIHwgTEdQTHYzKyIKKworRklMRVNfJHtQTn0tYmludXRpbHMgPSAiXAorICAgICR7YmluZGlyfS9ldS1hZGRyMmxpbmUgXAorICAgICR7YmluZGlyfS9ldS1sZCBcCisgICAgJHtiaW5kaXJ9L2V1LW5tIFwKKyAgICAke2JpbmRpcn0vZXUtcmVhZGVsZiBcCisgICAgJHtiaW5kaXJ9L2V1LXNpemUgXAorICAgICR7YmluZGlyfS9ldS1zdHJpcCIKKworRklMRVNfbGliZWxmID0gIiR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmVsZi5zby4qIgorRklMRVNfbGliYXNtID0gIiR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmFzbS5zby4qIgorRklMRVNfbGliZHcgID0gIiR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke2xpYmRpcn0vbGliZHcuc28uKiAke2xpYmRpcn0vZWxmdXRpbHMvbGliKiIKKyMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5CisjIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KKyNGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyotJHtQVn0uc28gJHtiYXNlX2xpYmRpcn0vKi0ke1BWfS5zbyIKKyNGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmFzbS5zbyAke2xpYmRpcn0vbGliZHcuc28gJHtsaWJkaXJ9L2xpYmVsZi5zbyIKKworIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmR3ID0gImRldi1zbyIKKworIyBhdm9pZCBzdHJpcHBpbmcgc29tZSBnZW5lcmF0ZWQgYmluYXJpZXMgb3RoZXJ3aXNlIHNvbWUgb2YgdGhlIHRlc3RzIHN1Y2ggYXMgdGVzdC1ubGlzdCwKKyMgcnVuLXN0cmlwLXJlbG9jLnNoLCBydW4tc3RyaXAtc3RybWVyZ2Uuc2ggYW5kIHNvIG9uIHdpbGwgZmFpbAorSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIlwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0LW5saXN0IFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9lbGZzdHJtZXJnZSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYmFja3RyYWNlLWNoaWxkIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9iYWNrdHJhY2UtZGF0YSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYmFja3RyYWNlLWR3YXJmIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kZWxldGVkIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvc3RyaXAgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9hZGRyMmxpbmUgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9lbGZjbXAgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9vYmpkdW1wIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvcmVhZGVsZiBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL25tIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvZWxmbGludCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2VsZmNsYXNzaWZ5IFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvc3RhY2sgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy91bnN0cmlwIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9saWJlbGYvbGliZWxmLnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9saWJkdy9saWJkdy5zbyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliYXNtL2xpYmFzbS5zbyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vYmFja2VuZHMvbGliZWJsX2kzODYuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2JhY2tlbmRzL2xpYmVibF94ODZfNjQuc28gXAorIgorCitQUklWQVRFX0xJQlNfJHtQTn0tcHRlc3QgPSAibGliZHcuc28uMSBsaWJlbGYuc28uMSBsaWJhc20uc28uMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKaW5kZXggYWY3OWVmNC4uNjIwMzEwNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGI5OWFhMTJjZjg3OWNlMjAwZTAzZDc1ZTU0M2M3YWIyZGZhNTUwM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVjOWE3NzQyNzM0YWFlNTQxN2MwZWJiZmZjZTY2YWMzNTNlNmNhZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEwOjU3ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRzbyBsaW5rIGNoYW5nZQpAQCAtMjMsMTAgKzIzLDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDJiMWMwZGMuLjkzMDViODQgMTAwNjQ0CitpbmRleCBlNDYyZTdkLi5lYTEyMTViIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCiArKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC00NCw3ICs0NCw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCitAQCAtNDUsNyArNDUsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAtbGRsIC1scHRocmVhZAogIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKICBlbHNlCiAgbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbwpAQCAtMzQsMTIgKzM0LDEyIEBACiArbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbyAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKICBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLnNvCiAgZW5kaWYKLSBsaWJlYmwgPSAuLi9saWJlYmwvbGliZWJsLmEKKyBsaWJlYmwgPSAuLi9saWJlYmwvbGliZWJsLmEgLi4vYmFja2VuZHMvbGliZWJsX2JhY2tlbmRzLmEgLi4vbGliY3B1L2xpYmNwdS5hCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMWIwYzdkMy4uYmNlZDE5YiAxMDA2NDQKK2luZGV4IGVhYjRhZTYuLmY1OWEwMWYgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC00NzYsNyArNDc2LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKK0BAIC01MTYsNyArNTE2LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwgLWxwdGhyZWFkCiAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segogIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYQogIGVsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2gKaW5kZXggMGQ1MzNjOC4uNzNlYWQ2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ3YmU2ODdjMzVmYTQyOTU0ODc0MDM0YzgyY2E5MDU5ZDI4MTk2ZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhlNWZmZjhiMWQ4MTllMDg3MGZiMjJiMjc5NTBiYjVmMTBjN2EyNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCA0IE9jdCAyMDE3IDIyOjMwOjQ2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGxpYmFzbSBtYXkgbGluayB3aXRoIGxpYmJ6MiBpZiBmb3VuZApAQCAtMTcsMTYgKzE3LDE2IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggOTMwNWI4NC4uOWI3ZTg1MyAxMDA2NDQKK2luZGV4IGVhMTIxNWIuLjEzZDliZGEgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTM5LDExICszOSwxMSBAQCBFWFRSQV9ESVNUICs9IG1ha2UtZGVidWctYXJjaGl2ZS5pbgorQEAgLTQwLDExICs0MCwxMSBAQCBFWFRSQV9ESVNUICs9IG1ha2UtZGVidWctYXJjaGl2ZS5pbgogIENMRUFORklMRVMgKz0gbWFrZS1kZWJ1Zy1hcmNoaXZlCiAgCiAgaWYgQlVJTERfU1RBVElDCiAtbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hCiArbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hICQoemlwX0xJQlMpCi0gbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKKyBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAtbGRsIC1scHRocmVhZAogIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKICBlbHNlCiAtbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1tdXNsLW9ic3RhY2stZnRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1tdXNsLW9ic3RhY2stZnRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NTFhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLW11c2wtb2JzdGFjay1mdHMucGF0Y2gKQEAgLTAsMCArMSwxMjcgQEAKK0Zyb20gOGNjZjNkOTJiODc2NmI1M2YyMDNkZjdlMDFiNDg5NjA0ZWY4NTFmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTc6MjUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIG11c2wtb2JzdGFjay1mdHMKKworTG9vayBmb3IgbGliZnRzIGFuZCBsaWJvYnN0YWNrIGR1cmluZyBjb25maWd1cmUsIHRoZXNlCitsaWJyYXJpZXMgYXJlIGV4dGVybmFsIHRvIGxpYmMgd2hlbiB1c2luZyBtdXNsLCB3aGVyZWFzCitvbiBnbGliYyB0aGVzZSBsaWJyYXJpZXMgYXJlIHByb3ZpZGVkIGluIGxpYmMgaXRzZWxmLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQorCitSZWJhc2UgdG8gMC4xNzcKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYmR3L01ha2VmaWxlLmFtIHwgIDIgKy0KKyBzcmMvTWFrZWZpbGUuYW0gICB8ICA2ICsrKy0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggY2FkN2IyYi4uNmQ0MjI5YiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTI5LDYgKzUyOSw2MCBAQCBlbHNlCisgZmkKKyBBQ19TVUJTVChbYXJncF9MREFERF0pCisgCisrZG5sIENoZWNrIGlmIHdlIGhhdmUgZnRzIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCisrQUNfTElOS19JRkVMU0UoCisrCVtBQ19MQU5HX1BST0dSQU0oCisrCQlbI2lmICFkZWZpbmVkKF9feDg2XzY0X18pCisrCQkjdW5kZWYgIF9GSUxFX09GRlNFVF9CSVRTCisrCQkjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDMyCisrCQkjZW5kaWYKKysJCSNpbmNsdWRlIDxmdHMuaD5dLAorKwkJW0ZUUyogZnRzID0gMDsgcmV0dXJuIGZ0c19jbG9zZShmdHMpOyByZXR1cm4gMDtdCisrCQkpXSwKKysJW2xpYmNfaGFzX2Z0cz0idHJ1ZSJdLAorKwlbbGliY19oYXNfZnRzPSJmYWxzZSJdCisrKQorKworK2RubCBJZiBvdXIgbGliYyBkb2Vzbid0IHByb3ZpZGUgZnRzLCB0aGVuIHRlc3QgZm9yIGxpYmZ0cworK2lmIHRlc3QgIiRsaWJjX2hhc19mdHMiID0gImZhbHNlIiA7IHRoZW4KKysJQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBmdHMiKQorKwlBQ19DSEVDS19MSUIoW2Z0c10sIFtmdHNfY2xvc2VdLCBbaGF2ZV9mdHM9InRydWUiXSwgW2hhdmVfZnRzPSJmYWxzZSJdKQorKworKwlpZiB0ZXN0ICIkaGF2ZV9mdHMiID0gImZhbHNlIjsgdGhlbgorKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJmdHMgZm91bmQiKQorKwllbHNlCisrCQlmdHNfTERBREQ9Ii1sZnRzIgorKwlmaQorK2Vsc2UKKysJZnRzX0xEQUREPSIiCisrZmkKKytBQ19TVUJTVChbZnRzX0xEQUREXSkKKysKKytkbmwgQ2hlY2sgaWYgd2UgaGF2ZSBvYnN0YWNrIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCisrQUNfTElOS19JRkVMU0UoCisrCVtBQ19MQU5HX1BST0dSQU0oCisrCQlbI2luY2x1ZGUgPG9ic3RhY2suaD5dLAorKwkJW19vYnN0YWNrX2JlZ2luKDAsIDAsIDAsIE5VTEwsIE5VTEwpOyByZXR1cm4gMDtdCisrCQkpXSwKKysJW2xpYmNfaGFzX29ic3RhY2s9InRydWUiXSwKKysJW2xpYmNfaGFzX29ic3RhY2s9ImZhbHNlIl0KKyspCisrCisrZG5sIElmIG91ciBsaWJjIGRvZXNuJ3QgcHJvdmlkZSBvYnN0YWNrLCB0aGVuIHRlc3QgZm9yIGxpYm9ic3RhY2sKKytpZiB0ZXN0ICIkbGliY19oYXNfb2JzdGFjayIgPSAiZmFsc2UiIDsgdGhlbgorKwlBQ19NU0dfV0FSTigibGliYyBkb2VzIG5vdCBoYXZlIG9ic3RhY2siKQorKwlBQ19DSEVDS19MSUIoW29ic3RhY2tdLCBbX29ic3RhY2tfYmVnaW5dLCBbaGF2ZV9vYnN0YWNrPSJ0cnVlIl0sIFtoYXZlX29ic3RhY2s9ImZhbHNlIl0pCisrCisrCWlmIHRlc3QgIiRoYXZlX29ic3RhY2siID0gImZhbHNlIjsgdGhlbgorKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJvYnN0YWNrIGZvdW5kIikKKysJZWxzZQorKwkJb2JzdGFja19MREFERD0iLWxvYnN0YWNrIgorKwlmaQorK2Vsc2UKKysJb2JzdGFja19MREFERD0iIgorK2ZpCisrQUNfU1VCU1QoW29ic3RhY2tfTERBRERdKQorKworIGRubCBUaGUgZGlyZWN0b3JpZXMgd2l0aCBjb250ZW50LgorIAorIGRubCBEb2N1bWVudGF0aW9uLgorZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KK2luZGV4IDMzYjU4MzguLmZmOTJlMDIgMTAwNjQ0CistLS0gYS9saWJkdy9NYWtlZmlsZS5hbQorKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KK0BAIC0xMDksNyArMTA5LDcgQEAgbGliZHdfc29fTElCUyA9IC4uL2xpYmVibC9saWJlYmxfcGljLmEgLi4vYmFja2VuZHMvbGliZWJsX2JhY2tlbmRzX3BpYy5hIFwKKyAJCS4uL2xpYmNwdS9saWJjcHVfcGljLmEgbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAorIAkJLi4vbGliZHdmbC9saWJkd2ZsX3BpYy5hCisgbGliZHdfc29fREVQUyA9IC4uL2xpYi9saWJldS5hIC4uL2xpYmVsZi9saWJlbGYuc28KKy1saWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJCh6aXBfTElCUykgLXB0aHJlYWQKKytsaWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJChmdHNfTERBREQpICQoemlwX0xJQlMpIC1wdGhyZWFkCisgbGliZHdfc29fU09VUkNFUyA9CisgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgJChsaWJkd19zb19MSUJTKSAkKGxpYmR3X3NvX0RFUFMpCisgCSQoQU1fVl9DQ0xEKSQoTElOSykgJChkc29fTERGTEFHUykgLW8gJEAgXAorZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMTNkOWJkYS4uZDVhNGY3ZCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNjksNyArNjksNyBAQCBhcl9ub19Xc3RhY2tfdXNhZ2UgPSB5ZXMKKyB1bnN0cmlwX25vX1dzdGFja191c2FnZSA9IHllcworIAorIHJlYWRlbGZfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKy1ubV9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSBcCisrbm1fTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKSBcCisgCSAgICQoZGVtYW5nbGVsaWIpCisgc2l6ZV9MREFERCA9ICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCisgc3RyaXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkKK0BAIC03OCw5ICs3OCw5IEBAIGZpbmR0ZXh0cmVsX0xEQUREID0gJChsaWJkdykgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKyBhZGRyMmxpbmVfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKGRlbWFuZ2xlbGliKQorIGVsZmNtcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorIG9iamR1bXBfTERBREQgID0gJChsaWJhc20pICQobGliZWJsKSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorLXJhbmxpYl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKytyYW5saWJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQob2JzdGFja19MREFERCkKKyBzdHJpbmdzX0xEQUREID0gJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKy1hcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKythcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKQorIHVuc3RyaXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkKKyBzdGFja19MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKGRlbWFuZ2xlbGliKQorIGVsZmNvbXByZXNzX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLW11c2wtbGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItbXVzbC1saWJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMTQ2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLW11c2wtbGlicy5wYXRjaApAQCAtMCwwICsxLDE0NSBAQAorRnJvbSBlYTkwOGM3MDA5ZGU1YTIwODM4M2FiZjRiZWM0YzZiM2Q5NTE5Y2EzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxODo0NyArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNF0gbXVzbC1saWJzCisKK0NvbGxlY3Rpb24gb2YgZml4ZXMgbmVlZGVkIHRvIGNvbXBpbGUgbGliZWxmIGFuZCBvdGhlciBsaWJyYXJpZXMKK3Byb3ZpZGVkIGJ5IGVsZnV0aWxzIGZvciBtdXNsIHRhcmdldHMKKworZXJyb3IgaXMgZ2xpYmMgc3BlY2lmaWMgQVBJLCBzbyB0aGlzIHBhdGNoIHdpbGwgbW9zdGx5IG5vdCBhY2NlcHRlZAordXBzdHJlYW0gZ2l2ZW4gdGhhdCBlbGZ1dGlscyBoYXMgYmVlbiBjbG9zZWx5IHRpZWQgdG8gZ2xpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KKworUmViYXNlIHRvIDAuMTc3CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGxpYi9lcnJvci5oICAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYi9maXhlZHNpemVoYXNoLmggICAgICAgICAgICB8ICAxIC0KKyBsaWIvbGliZXUuaCAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgbGliZHdmbC9kd2ZsX2Vycm9yLmMgICAgICAgICAgIHwgIDkgKysrKysrKysrCisgbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIHwgIDEgKworIGxpYmVsZi9lbGYuaCAgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKy0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2Vycm9yLmgKKworZGlmZiAtLWdpdCBhL2xpYi9lcnJvci5oIGIvbGliL2Vycm9yLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZjA2ODI3CistLS0gL2Rldi9udWxsCisrKysgYi9saWIvZXJyb3IuaAorQEAgLTAsMCArMSwyNyBAQAorKyNpZm5kZWYgX0VSUk9SX0hfCisrI2RlZmluZSBfRVJST1JfSF8KKysKKysjaW5jbHVkZSA8c3RkYXJnLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysKKytzdGF0aWMgdW5zaWduZWQgaW50IGVycm9yX21lc3NhZ2VfY291bnQgPSAwOworKworK3N0YXRpYyBpbmxpbmUgdm9pZCBlcnJvcihpbnQgc3RhdHVzLCBpbnQgZXJybnVtLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKKyt7CisrCXZhX2xpc3QgYXA7CisrCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIHByb2dyYW1faW52b2NhdGlvbl9uYW1lKTsKKysJdmFfc3RhcnQoYXAsIGZvcm1hdCk7CisrCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcCk7CisrCXZhX2VuZChhcCk7CisrCWlmIChlcnJudW0pCisrCQlmcHJpbnRmKHN0ZGVyciwgIjogJXMiLCBzdHJlcnJvcihlcnJudW0pKTsKKysJZnByaW50ZihzdGRlcnIsICJcbiIpOworKwllcnJvcl9tZXNzYWdlX2NvdW50Kys7CisrCWlmIChzdGF0dXMpCisrCQlleGl0KHN0YXR1cyk7CisrfQorKworKyNlbmRpZgkvKiBfRVJST1JfSF8gKi8KK2RpZmYgLS1naXQgYS9saWIvZml4ZWRzaXplaGFzaC5oIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAoraW5kZXggZGFjMmE1Zi4uNDMwMTZmYyAxMDA2NDQKKy0tLSBhL2xpYi9maXhlZHNpemVoYXNoLmgKKysrKyBiL2xpYi9maXhlZHNpemVoYXNoLmgKK0BAIC0zMCw3ICszMCw2IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgCisgI2luY2x1ZGUgPHN5c3RlbS5oPgorIAorZGlmZiAtLWdpdCBhL2xpYi9saWJldS5oIGIvbGliL2xpYmV1LmgKK2luZGV4IGVjYjRkMDEuLmVkYzg1ZTMgMTAwNjQ0CistLS0gYS9saWIvbGliZXUuaAorKysrIGIvbGliL2xpYmV1LmgKK0BAIC0yOSw2ICsyOSw3IEBACisgI2lmbmRlZiBMSUJFVV9ICisgI2RlZmluZSBMSUJFVV9ICisgCisrI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCitkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYworaW5kZXggN2JjZjYxYy4uMTFkY2M4YiAxMDA2NDQKKy0tLSBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jCisrKysgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYworQEAgLTE1NCw3ICsxNTQsMTYgQEAgZHdmbF9lcnJtc2cgKGludCBlcnJvcikKKyAgIHN3aXRjaCAoZXJyb3IgJn4gMHhmZmZmKQorICAgICB7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKEVSUk5PKToKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgICAgcmV0dXJuIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCAiYmFkIiwgMCk7CisrI2Vsc2UKKysgICAgICB7CisrICAgICAgICBzdGF0aWMgX190aHJlYWQgY2hhciBidWZbMTI4XSA9ICIiOworKyAgICAgICAgaWYgKHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCBidWYsIHNpemVvZihidWYpKSA9PSAwKQorKyAgICAgICAgICByZXR1cm4gYnVmOworKyAgICAgIH0KKysgICAgICByZXR1cm4gInN0cmVycm9yX3IoKSBmYWlsZWQiOworKyNlbmRpZgorICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJFTEYpOgorICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKK2luZGV4IGQ0NmFiNWEuLjFjM2ZhZWUgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKKysrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworQEAgLTUwLDYgKzUwLDcgQEAKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgInN5c3RlbS5oIgorIAorIC8qIElmIGZ0cy5oIGlzIGluY2x1ZGVkIGJlZm9yZSBjb25maWcuaCwgaXRzIGluZGlyZWN0IGluY2x1c2lvbnMgbWF5IG5vdAorICAgIGdpdmUgdXMgdGhlIHJpZ2h0IExGUyBhbGlhc2VzIG9mIHRoZXNlIGZ1bmN0aW9ucywgc28gbWFwIHRoZW0gbWFudWFsbHkuICAqLworZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYuaCBiL2xpYmVsZi9lbGYuaAoraW5kZXggYmVkMjczZC4uYmUyMjhlNiAxMDA2NDQKKy0tLSBhL2xpYmVsZi9lbGYuaAorKysrIGIvbGliZWxmL2VsZi5oCitAQCAtMjEsNyArMjEsOSBAQAorIAorICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorIAorLV9fQkVHSU5fREVDTFMKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5kaWYKKyAKKyAvKiBTdGFuZGFyZCBFTEYgdHlwZXMuICAqLworIAorQEAgLTQwMjksNiArNDAzMSw3IEBAIGVudW0KKyAjZGVmaW5lIFJfTkRTMzJfVExTX1RQT0ZGCTEwMgorICNkZWZpbmUgUl9ORFMzMl9UTFNfREVTQwkxMTkKKyAKKy1fX0VORF9ERUNMUworLQorKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKyAjZW5kaWYJLyogZWxmLmggKi8KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtbXVzbC11dGlscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtbXVzbC11dGlscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWM5ZDlhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1tdXNsLXV0aWxzLnBhdGNoCkBAIC0wLDAgKzEsMTY2IEBACitGcm9tIDk0MDI4YjE2ZTU2YzhlZWYxYWEwMmRjYzRkYTI2OGEwZTQ3MWI0ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDEwOjE5OjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBtdXNsLXV0aWxzCisKK1Byb3ZpZGUgbWlzc2luZyBkZWZpbmVzIHdoaWNoIG90aGVyd2lzZSBhcmUgYXZhaWxhYmxlIG9uIGdsaWJjIHN5c3RlbSBoZWFkZXJzCisKK0FsdGVyIHRoZSBlcnJvciBBUEkgdG8gbWF0Y2ggcG9zaXggdmVyc2lvbgordXNlIHFzb3J0IGluc3RlYWQgb2YgcXNvcnRfciB3aGljaCBpcyBnbGliYyBzcGVjaWZpYyBBUEkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KKworUmViYXNlIHRvIDAuMTc3CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9hcmxpYi5oICAgICAgIHwgIDYgKysrKysrCisgc3JjL2VsZmNvbXByZXNzLmMgfCAgNyArKysrKysrCisgc3JjL3JlYWRlbGYuYyAgICAgfCAyMCArKysrKysrKysrKystLS0tLS0tLQorIHNyYy9zdHJpcC5jICAgICAgIHwgIDcgKysrKysrKworIHNyYy91bnN0cmlwLmMgICAgIHwgIDkgKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2FybGliLmggYi9zcmMvYXJsaWIuaAoraW5kZXggZTExNzE2Ni4uODMyNmY2YyAxMDA2NDQKKy0tLSBhL3NyYy9hcmxpYi5oCisrKysgYi9zcmMvYXJsaWIuaAorQEAgLTI5LDYgKzI5LDEyIEBACisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKysjaWYgIWRlZmluZWQoQUxMUEVSTVMpCisrIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLworKyNlbmRpZgorKyNpZiAhZGVmaW5lZChERUZGSUxFTU9ERSkKKysjIGRlZmluZSBERUZGSUxFTU9ERSAoU19JUlVTUnxTX0lXVVNSfFNfSVJHUlB8U19JV0dSUHxTX0lST1RIfFNfSVdPVEgpLyogMDY2NiovCisrI2VuZGlmCisgCisgLyogU3RhdGUgb2YgLUQvLVUgZmxhZ3MuICAqLworIGV4dGVybiBib29sIGFybGliX2RldGVybWluaXN0aWNfb3V0cHV0OworZGlmZiAtLWdpdCBhL3NyYy9lbGZjb21wcmVzcy5jIGIvc3JjL2VsZmNvbXByZXNzLmMKK2luZGV4IDZiYTZhZjQuLjBjNzY3NGIgMTAwNjQ0CistLS0gYS9zcmMvZWxmY29tcHJlc3MuYworKysrIGIvc3JjL2VsZmNvbXByZXNzLmMKK0BAIC0zNyw2ICszNywxMyBAQAorICNpbmNsdWRlICJsaWJldS5oIgorICNpbmNsdWRlICJwcmludHZlcnNpb24uaCIKKyAKKysjaWYgIWRlZmluZWQoQUxMUEVSTVMpCisrIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLworKyNlbmRpZgorKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCisrIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQorKyNlbmRpZgorKworIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCisgQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOworIAorZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCitpbmRleCA1OTk0NjE1Li5mM2NjMDcxIDEwMDY0NAorLS0tIGEvc3JjL3JlYWRlbGYuYworKysrIGIvc3JjL3JlYWRlbGYuYworQEAgLTQ4MjksMTAgKzQ4MjksMTEgQEAgbGlzdHB0cl9iYXNlIChzdHJ1Y3QgbGlzdHB0ciAqcCkKKyAgIHJldHVybiBjdWRpZV9iYXNlICgmY3UpOworIH0KKyAKKytzdGF0aWMgY29uc3QgY2hhciAqbGlzdHB0cl9uYW1lOworKworIHN0YXRpYyBpbnQKKy1jb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKKytjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisgeworLSAgY29uc3QgY2hhciAqbmFtZSA9IGFyZzsKKyAgIHN0cnVjdCBsaXN0cHRyICpwMSA9ICh2b2lkICopIGE7CisgICBzdHJ1Y3QgbGlzdHB0ciAqcDIgPSAodm9pZCAqKSBiOworIAorQEAgLTQ4NDgsMjEgKzQ4NDksMjEgQEAgY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCisgCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOworIAkgIGVycm9yICgwLCAwLAorIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBhZGRyZXNzIHNpemVzIiksCistCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKKysJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisgCX0KKyAgICAgICBpZiAocDEtPmR3YXJmNjQgIT0gcDItPmR3YXJmNjQpCisgCXsKKyAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7CisgCSAgZXJyb3IgKDAsIDAsCisgCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IG9mZnNldCBzaXplcyIpLAorLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisrCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworIAl9CisgICAgICAgaWYgKGxpc3RwdHJfYmFzZSAocDEpICE9IGxpc3RwdHJfYmFzZSAocDIpKQorIAl7CisgCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOworIAkgIGVycm9yICgwLCAwLAorIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBiYXNlIGFkZHJlc3NlcyIpLAorLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisrCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworIAl9CisgICAgICAgaWYgKHAxLT5hdHRyICE9IHAyIC0+YXR0cikKKyAJeworQEAgLTQ4NzAsNyArNDg3MSw3IEBAIGNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQorIAkgIGVycm9yICgwLCAwLAorIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0CisgCQkJICAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYXR0cmlidXRlICVzIGFuZCAlcyIpLAorLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCwgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0ciksCisrCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQsIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpLAorIAkJIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpKTsKKyAJfQorICAgICB9CitAQCAtNDk0Miw4ICs0OTQzLDExIEBAIHN0YXRpYyB2b2lkCisgc29ydF9saXN0cHRyIChzdHJ1Y3QgbGlzdHB0cl90YWJsZSAqdGFibGUsIGNvbnN0IGNoYXIgKm5hbWUpCisgeworICAgaWYgKHRhYmxlLT5uID4gMCkKKy0gICAgcXNvcnRfciAodGFibGUtPnRhYmxlLCB0YWJsZS0+biwgc2l6ZW9mIHRhYmxlLT50YWJsZVswXSwKKy0JICAgICAmY29tcGFyZV9saXN0cHRyLCAodm9pZCAqKSBuYW1lKTsKKysgICAgeworKyAgICAgIGxpc3RwdHJfbmFtZSA9IG5hbWU7CisrICAgICAgcXNvcnQgKHRhYmxlLT50YWJsZSwgdGFibGUtPm4sIHNpemVvZiB0YWJsZS0+dGFibGVbMF0sCisrCSAgICAmY29tcGFyZV9saXN0cHRyKTsKKysgICAgfQorIH0KKyAKKyBzdGF0aWMgYm9vbAorZGlmZiAtLWdpdCBhL3NyYy9zdHJpcC5jIGIvc3JjL3N0cmlwLmMKK2luZGV4IDQwNTRjMmEuLmQyZDIxNzYgMTAwNjQ0CistLS0gYS9zcmMvc3RyaXAuYworKysrIGIvc3JjL3N0cmlwLmMKK0BAIC00Niw2ICs0NiwxMyBAQAorICNpbmNsdWRlIDxzeXN0ZW0uaD4KKyAjaW5jbHVkZSA8cHJpbnR2ZXJzaW9uLmg+CisgCisrI2lmICFkZWZpbmVkKEFDQ0VTU1BFUk1TKQorKyMgZGVmaW5lIEFDQ0VTU1BFUk1TIChTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NyAqLworKyNlbmRpZgorKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCisrIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQorKyNlbmRpZgorKworIHR5cGVkZWYgdWludDhfdCBHRWxmX0J5dGU7CisgCisgLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KK2RpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYworaW5kZXggOWI4YzA5YS4uMWZiNTA2MyAxMDA2NDQKKy0tLSBhL3NyYy91bnN0cmlwLmMKKysrKyBiL3NyYy91bnN0cmlwLmMKK0BAIC01Niw2ICs1NiwxNSBAQAorICMgZGVmaW5lIF8oc3RyKSBnZXR0ZXh0IChzdHIpCisgI2VuZGlmCisgCisrI2lmbmRlZiBzdHJuZHVwYQorKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAorKyAgICAgICAoe2NvbnN0IGNoYXIgKl9faW4gPSAocyk7IFwKKysgICAgICAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuIChfX2luLCAobikpICsgMTsgXAorKyAgICAgICAgIGNoYXIgKl9fb3V0ID0gKGNoYXIgKikgYWxsb2NhIChfX2xlbik7IFwKKysgICAgICAgICBfX291dFtfX2xlbi0xXSA9ICdcMCc7IFwKKysgICAgICAgICAoY2hhciAqKSBtZW1jcHkgKF9fb3V0LCBfX2luLCBfX2xlbi0xKTt9KQorKyNlbmRpZgorKworIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCisgQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOworIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1GaXgtZXJyb3Itb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRml4LWVycm9yLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIyZjllZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRml4LWVycm9yLW9uLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3ZmY4Y2JlY2RlNzQ1NWI1MzBmYTc4OTRhNzhkMjMyNjc5OWYyNTU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBXZWQsIDEgTWF5IDIwMTkgMjI6MTU6MDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIEZpeCBlcnJvciBvbiBtdXNsOgorCit8IC4uLy4uL2VsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKK3wgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzozNzA6NjA6IGVycm9yOiAnQUxMUEVSTVMnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdFUEVSTSc/Cit8ICAgICAgICBmZG5ldyA9IG9wZW4gKGZuZXcsIE9fV1JPTkxZIHwgT19DUkVBVCwgc3Quc3RfbW9kZSAmIEFMTFBFUk1TKTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVBFUk0KK3wgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzozNzA6NjA6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBpbiBtdXNsXQorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworLS0tCisgdGVzdHMvZWxmc3RybWVyZ2UuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90ZXN0cy9lbGZzdHJtZXJnZS5jIGIvdGVzdHMvZWxmc3RybWVyZ2UuYworaW5kZXggYmEwZDY4ZC4uMWQyNDQ3ZiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMKKysrKyBiL3Rlc3RzL2VsZnN0cm1lcmdlLmMKK0BAIC0zMyw2ICszMywxMSBAQAorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKKyAjaW5jbHVkZSAiZWxmLWtub3dsZWRnZS5oIgorIAorKy8qIGZvciBtdXNsICovCisrI2lmbmRlZiBBTExQRVJNUworKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykvKiAwNzc3NyAqLworKyNlbmRpZgorKworIC8qIFRoZSBvcmlnaW5hbCBFTEYgZmlsZS4gICovCisgc3RhdGljIGludCBmZCA9IC0xOworIHN0YXRpYyBFbGYgKmVsZiA9IE5VTEw7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMWEyNGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSAxMTJkMTY0NWJhYjc5MjJjNzc5NmZlMzJkZGVhOGZhNmUxYmJkZWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNToxNDoyOCArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggY29udHJvbCBwYXRoIHdoZXJlIHdlIGhhdmUgc3RyIGFzIHVuaW5pdGlhbGl6ZWQgc3RyaW5nCi0KLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOgotSW4gZnVuY3Rpb24gJ2kzODZfZGlzYXNtJzoKLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOjMxMDo1OgotZXJyb3I6ICdzdHInIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KLXwgICAgICBtZW1jcHkgKGJ1ZiArIGJ1ZmNudCwgX3N0ciwgX2xlbik7ICAgICAgICAgICBcCi18ICAgICAgXgotfAotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6NzA5OjE3Ogotbm90ZTogJ3N0cicgd2FzIGRlY2xhcmVkIGhlcmUKLXwgICAgICBjb25zdCBjaGFyICpzdHI7Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUmViYXNlIHRvIDAuMTcyCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliY3B1L2kzODZfZGlzYXNtLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKLWluZGV4IGE3ZTAzZjkuLjgzN2EzYTggMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9kaXNhc20uYwotKysrIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKLUBAIC04MjEsNiArODIxLDcgQEAgaTM4Nl9kaXNhc20gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotIAkJCSAgICB9Ci0gCQkJICBGQUxMVEhST1VHSDsKLSAJCQlkZWZhdWx0OgotKwkJCSAgc3RyID0gIiI7Ci0gCQkJICBhc3NlcnQgKCEgIklOVkFMSUQgbm90IGhhbmRsZWQiKTsKLSAJCQl9Ci0gCQkgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCmluZGV4IDQ0NjBkNTguLjUzZmEyZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDhlZmFkOTEwNWIzODk4NWJlYTM3MzQxNmFlOGZjYWNmMjFkMWQxMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZmYjgxMWUxOGQ3MDQ2ZDViYmU1NGVkZTViMWI3ZTE0ZWFhYzAxNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDE1OjQ0OjE4ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGhwcGEgYmFja2VuZApAQCAtNiwxNSArNiwxNiBAQAogUmViYXNlIHRvIDAuMTc3CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICAgIHwgICA3ICstCiAgYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oICB8ICAgOSArKwotIGJhY2tlbmRzL3BhcmlzY19pbml0LmMgICAgfCAgNzMgKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19yZWdzLmMgICAgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyAgfCAyMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19zeW1ib2wuYyAgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGliZWxmL2VsZi5oICAgICAgICAgICAgICB8ICAxMSArKysKKyBiYWNrZW5kcy9wYXJpc2NfaW5pdC5jICAgIHwgIDczICsrKysrKysrKysrKysKKyBiYWNrZW5kcy9wYXJpc2NfcmVncy5jICAgIHwgMTU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jICB8IDIxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19zeW1ib2wuYyAgfCAxMTMgKysrKysrKysrKysrKysrKysrKysKKyBsaWJlbGYvZWxmLmggICAgICAgICAgICAgIHwgIDExICsrCiAgOCBmaWxlcyBjaGFuZ2VkLCA3MTEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL3BhcmlzY19pbml0LmMKQEAgLTI0LDMxICsyNSwzMCBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9wYXJpc2Nfc3ltYm9sLmMKIAogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL01ha2VmaWxlLmFtIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLWluZGV4IDE3NTQ2OGYuLjkxYTM4ZTIgMTAwNjQ0CitpbmRleCBmNDA1MjEyLi40NzU1ZjYxIDEwMDY0NAogLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KICsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1AQCAtMzMsMTYgKzMzLDE5IEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCi0gCitAQCAtMzcsNyArMzcsOSBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAorIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJlYmxfYmFja2VuZHMuYSBsaWJlYmxfYmFja2VuZHNfcGljLmEKICAKICBtb2R1bGVzID0gaTM4NiBzaCB4ODZfNjQgaWE2NCBhbHBoYSBhcm0gYWFyY2g2NCBzcGFyYyBwcGMgcHBjNjQgczM5MCBcCiAtCSAgdGlsZWd4IG02OGsgYnBmIHJpc2N2IGNza3kKICsJICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgY3NreSBwYXJpc2MKLSBsaWJlYmxfcGljID0gbGliZWJsX2kzODZfcGljLmEgbGliZWJsX3NoX3BpYy5hIGxpYmVibF94ODZfNjRfcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9pYTY0X3BpYy5hIGxpYmVibF9hbHBoYV9waWMuYSBsaWJlYmxfYXJtX3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfYWFyY2g2NF9waWMuYSBsaWJlYmxfc3BhcmNfcGljLmEgbGliZWJsX3BwY19waWMuYSBcCi0gCSAgICAgbGliZWJsX3BwYzY0X3BpYy5hIGxpYmVibF9zMzkwX3BpYy5hIGxpYmVibF90aWxlZ3hfcGljLmEgXAotIAkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3Jpc2N2X3BpYy5hICAgIFwKLS0JICAgICBsaWJlYmxfY3NreV9waWMuYQotKwkgICAgIGxpYmVibF9jc2t5X3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKLSBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQotIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCi0gCisrCiArcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYwotK2xpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCi0rYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCiAgCi0gbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwotIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28KKyBpMzg2X1NSQ1MgPSBpMzg2X2luaXQuYyBpMzg2X3N5bWJvbC5jIGkzODZfY29yZW5vdGUuYyBpMzg2X2NmaS5jIFwKKyAJICAgIGkzODZfcmV0dmFsLmMgaTM4Nl9yZWdzLmMgaTM4Nl9hdXh2LmMgaTM4Nl9zeXNjYWxsLmMgXAorQEAgLTEwMiw3ICsxMDQsOCBAQCBsaWJlYmxfYmFja2VuZHNfYV9TT1VSQ0VTID0gJChpMzg2X1NSQ1MpICQoc2hfU1JDUykgJCh4ODZfNjRfU1JDUykgXAorIAkJCSAgICAkKGlhNjRfU1JDUykgJChhbHBoYV9TUkNTKSAkKGFybV9TUkNTKSBcCisgCQkJICAgICQoYWFyY2g2NF9TUkNTKSAkKHNwYXJjX1NSQ1MpICQocHBjX1NSQ1MpIFwKKyAJCQkgICAgJChwcGM2NF9TUkNTKSAkKHMzOTBfU1JDUykgJCh0aWxlZ3hfU1JDUykgXAorLQkJCSAgICAkKG02OGtfU1JDUykgJChicGZfU1JDUykgJChyaXNjdl9TUkNTKSAkKGNza3lfU1JDUykKKysJCQkgICAgJChtNjhrX1NSQ1MpICQoYnBmX1NSQ1MpICQocmlzY3ZfU1JDUykgJChjc2t5X1NSQ1MpIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChwYXJpc2NfU1JDUykKKyAKKyBsaWJlYmxfYmFja2VuZHNfcGljX2FfU09VUkNFUyA9CisgYW1fbGliZWJsX2JhY2tlbmRzX3BpY19hX09CSkVDVFMgPSAkKGxpYmVibF9iYWNrZW5kc19hX1NPVVJDRVM6LmM9Lm9zKQogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaCBiL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmY0NzNiNzkKQEAgLTgyNiw2ICs4MjYsMyBAQAogICNkZWZpbmUgUl9QQVJJU0NfU0VHUkVMNjQJMTEyCS8qIDY0IGJpdHMgc2VnbWVudCByZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTRXUgkxMTUJLyogUExULXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19QTFRPRkYxNERSCTExNgkvKiBQTFQtcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5kaWZmCmluZGV4IDEwOTdiMGUuLjc0OWZhYTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY4YjQ5NzY2OGNkZTUxNzE4ODBkMDczYTdlYTUwZDExYzNiZGRiZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdlMGIwMzZkMDg3ZGZmZjdmNWUzMDZmNTJmYzc4NzQ1Zjk5NDU0YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDE1OjQ5OjUyICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1pcHMgYmFja2VuZApAQCAtNywxNSArNywxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICB8ICAgOCArLQotIGJhY2tlbmRzL21pcHNfaW5pdC5jICAgIHwgIDU5ICsrKysrKysrKwotIGJhY2tlbmRzL21pcHNfcmVncy5jICAgIHwgMTA0ICsrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZiB8ICA3OSArKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3JldHZhbC5jICB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3N5bWJvbC5jICB8ICA1MyArKysrKysrKwotIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jIHwgICAyICsKLSA3IGZpbGVzIGNoYW5nZWQsIDYyNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgIHwgICA2ICstCisgYmFja2VuZHMvbWlwc19pbml0LmMgICAgfCAgNTkgKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3JlZ3MuYyAgICB8IDEwNCArKysrKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZWxvYy5kZWYgfCAgNzkgKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3N5bWJvbC5jICB8ICA1MyArKysrKysrCisgbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgfCAgIDMgKworIDcgZmlsZXMgY2hhbmdlZCwgNjIzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfaW5pdC5jCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVncy5jCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmCkBAIC0yMywzNiArMjQsMzQgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19zeW1ib2wuYwogCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotaW5kZXggOTFhMzhlMi4uYWJhOGE0YSAxMDA2NDQKK2luZGV4IDQ3NTVmNjEuLjA3ZDQ1ZDcgMTAwNjQ0CiAtLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQogKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLUBAIC0zMywxMyArMzMsMTMgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSSQodG9wX3NyY2RpcikvbGliYXNtIFwKLSAKK0BAIC0zNyw3ICszNyw3IEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmVibF9iYWNrZW5kcy5hIGxpYmVibF9iYWNrZW5kc19waWMuYQogIAogIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKIC0JICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgY3NreSBwYXJpc2MKICsJICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgY3NreSBwYXJpc2MgbWlwcwotIGxpYmVibF9waWMgPSBsaWJlYmxfaTM4Nl9waWMuYSBsaWJlYmxfc2hfcGljLmEgbGliZWJsX3g4Nl82NF9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2lhNjRfcGljLmEgbGliZWJsX2FscGhhX3BpYy5hIGxpYmVibF9hcm1fcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9hYXJjaDY0X3BpYy5hIGxpYmVibF9zcGFyY19waWMuYSBsaWJlYmxfcHBjX3BpYy5hIFwKLSAJICAgICBsaWJlYmxfcHBjNjRfcGljLmEgbGliZWJsX3MzOTBfcGljLmEgbGliZWJsX3RpbGVneF9waWMuYSBcCi0gCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcmlzY3ZfcGljLmEgICAgXAotLQkgICAgIGxpYmVibF9jc2t5X3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKLSsJICAgICBsaWJlYmxfY3NreV9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hIGxpYmVibF9taXBzX3BpYy5hCi0gbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKLSBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQogIAotQEAgLTE0NSw2ICsxNDUsMTAgQEAgY3NreV9TUkNTID0gY3NreV9hdHRycy5jIGNza3lfaW5pdC5jIGNza3lfc3ltYm9sLmMgY3NreV9jZmkuYyBcCi0gbGliZWJsX2Nza3lfcGljX2FfU09VUkNFUyA9ICQoY3NreV9TUkNTKQotIGFtX2xpYmVibF9jc2t5X3BpY19hX09CSkVDVFMgPSAkKGNza3lfU1JDUzouYz0ub3MpCisgcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYworIAorQEAgLTEwMCwxMiArMTAwLDE0IEBAIHJpc2N2X1NSQ1MgPSByaXNjdl9pbml0LmMgcmlzY3Zfc3ltYm9sLmMgcmlzY3ZfY2ZpLmMgcmlzY3ZfcmVncy5jIFwKKyBjc2t5X1NSQ1MgPSBjc2t5X2F0dHJzLmMgY3NreV9pbml0LmMgY3NreV9zeW1ib2wuYyBjc2t5X2NmaS5jIFwKKyAJICAgIGNza3lfcmVncy5jIGNza3lfaW5pdHJlZy5jIGNza3lfY29yZW5vdGUuYwogIAogK21pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYwotK2xpYmVibF9taXBzX3BpY19hX1NPVVJDRVMgPSAkKG1pcHNfU1JDUykKLSthbV9saWJlYmxfbWlwc19waWNfYV9PQkpFQ1RTID0gJChtaXBzX1NSQ1M6LmM9Lm9zKQogKwotIGxpYmVibF8lLnNvIGxpYmVibF8lLm1hcDogbGliZWJsXyVfcGljLmEgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpCi0gCUBybSAtZiAkKEA6LnNvPS5tYXApCi0gCSQoQU1fVl9hdCllY2hvICdFTEZVVElMU18kKFBBQ0tBR0VfVkVSU0lPTikgeyBnbG9iYWw6ICQqX2luaXQ7IGxvY2FsOiAqOyB9OycgXAorIGxpYmVibF9iYWNrZW5kc19hX1NPVVJDRVMgPSAkKGkzODZfU1JDUykgJChzaF9TUkNTKSAkKHg4Nl82NF9TUkNTKSBcCisgCQkJICAgICQoaWE2NF9TUkNTKSAkKGFscGhhX1NSQ1MpICQoYXJtX1NSQ1MpIFwKKyAJCQkgICAgJChhYXJjaDY0X1NSQ1MpICQoc3BhcmNfU1JDUykgJChwcGNfU1JDUykgXAorIAkJCSAgICAkKHBwYzY0X1NSQ1MpICQoczM5MF9TUkNTKSAkKHRpbGVneF9TUkNTKSBcCisgCQkJICAgICQobTY4a19TUkNTKSAkKGJwZl9TUkNTKSAkKHJpc2N2X1NSQ1MpICQoY3NreV9TUkNTKSBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocGFyaXNjX1NSQ1MpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocGFyaXNjX1NSQ1MpICQobWlwc19TUkNTKQorIAorIGxpYmVibF9iYWNrZW5kc19waWNfYV9TT1VSQ0VTID0KKyBhbV9saWJlYmxfYmFja2VuZHNfcGljX2FfT0JKRUNUUyA9ICQobGliZWJsX2JhY2tlbmRzX2FfU09VUkNFUzouYz0ub3MpCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19pbml0LmMgYi9iYWNrZW5kcy9taXBzX2luaXQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjk3NWMwNGUKQEAgLTcwMCwxOCArNjk5LDI2IEBACiArICAgIH0KICt9CiBkaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotaW5kZXggMDE3MTFmNS4uZDBjMzU4OSAxMDA2NDQKK2luZGV4IDIxMGI0N2UuLjFmZWFjMTMgMTAwNjQ0CiAtLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwogKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLUBAIC03MSw2ICs3MSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKLSAgIHsgInNwYXJjIiwgImVsZl9zcGFyYyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDLCAwLCAwIH0sCi0gICB7ICJzcGFyYyIsICJlbGZfc3BhcmN2OHBsdXMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQzMyUExVUywgMCwgMCB9LAotICAgeyAiczM5MCIsICJlYmxfczM5MCIsICJzMzkwIiwgNCwgRU1fUzM5MCwgMCwgMCB9LAotKyAgeyAibWlwcyIsICJlbGZfbWlwcyIsICJtaXBzIiwgNCwgRU1fTUlQUywgMCwgMCB9LAotKyAgeyAibWlwcyIsICJlbGZfbWlwc2VsIiwgIm1pcHNlbCIsIDQsIEVNX01JUFNfUlMzX0xFLCAwLCAwIH0sCitAQCAtNTcsNiArNTcsNyBAQCBjb25zdCBjaGFyICptNjhrX2luaXQgKEVsZiAqLCBHRWxmX0hhbGYsIEVibCAqLCBzaXplX3QpOworIGNvbnN0IGNoYXIgKmJwZl9pbml0IChFbGYgKiwgR0VsZl9IYWxmLCBFYmwgKiwgc2l6ZV90KTsKKyBjb25zdCBjaGFyICpyaXNjdl9pbml0IChFbGYgKiwgR0VsZl9IYWxmLCBFYmwgKiwgc2l6ZV90KTsKKyBjb25zdCBjaGFyICpjc2t5X2luaXQgKEVsZiAqLCBHRWxmX0hhbGYsIEVibCAqLCBzaXplX3QpOworK2NvbnN0IGNoYXIgKm1pcHNfaW5pdCAoRWxmICosIEdFbGZfSGFsZiwgRWJsICosIHNpemVfdCk7CiAgCi0gICB7ICJtMzIiLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKLSAgIHsgIm02OGsiLCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKKyAvKiBUaGlzIHRhYmxlIHNob3VsZCBjb250YWluIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgYXMgZmFyCisgICAgYXMgdGhlIEVMRiBzcGVjaWZpY2F0aW9uIGlzIGNvbmNlcm5lZC4gICovCitAQCAtODcsNiArODgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CisgICB7IHNwYXJjX2luaXQsICJlbGZfc3BhcmMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQywgMCwgMCB9LAorICAgeyBzcGFyY19pbml0LCAiZWxmX3NwYXJjdjhwbHVzIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMzMlBMVVMsIDAsIDAgfSwKKyAgIHsgczM5MF9pbml0LCAiZWJsX3MzOTAiLCAiczM5MCIsIDQsIEVNX1MzOTAsIDAsIDAgfSwKKysgIHsgbWlwc19pbml0LCAiZWxmX21pcHMiLCAibWlwcyIsIDQsIEVNX01JUFMsIDAsIDAgfSwKKysgIHsgbWlwc19pbml0LCAiZWxmX21pcHNlbCIsICJtaXBzZWwiLCA0LCBFTV9NSVBTX1JTM19MRSwgMCwgMCB9LAorIAorICAgeyBOVUxMLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKKyAgIHsgbTY4a19pbml0LCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKIC0tIAotMi43LjQKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19jZmkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19jZmkucGF0Y2gKaW5kZXggZmRhNGY2OC4uZGQ4Zjg4YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfY2ZpLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2NmaS5wYXRjaApAQCAtMSwzMyArMSwzNCBAQAotRnJvbSA5NmUzODI4OWYyODg3ZGRiOGU2ZDJmYjkxZWEwNGJkYmRmMDM0YWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YmY2MTE3YTZlYWY5MDA3Y2U4MGFkYmI4YjY2YTk1Y2E5ODA0N2E0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyMSBBdWcgMjAxOSAxNzowMDozMCArMDgwMAotU3ViamVjdDogW1BBVENIIDIvMl0gbWlwc19jZmkKK1N1YmplY3Q6IFtQQVRDSF0gbWlwc19jZmkKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KIAogUmViYXNlIHRvIDAuMTc3CiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgYmFja2VuZHMvTWFrZWZpbGUuYW0gfCAgMiArLQotIGJhY2tlbmRzL21pcHNfY2ZpLmMgIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfY2ZpLmMgIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKICBiYWNrZW5kcy9taXBzX2luaXQuYyB8ICAxICsKICAzIGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19jZmkuYwogCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotaW5kZXggYWJhOGE0YS4uNmFjMGVlYyAxMDA2NDQKK2luZGV4IDA3ZDQ1ZDcuLmRlYzMwODAgMTAwNjQ0CiAtLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQogKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLUBAIC0xNDUsNyArMTQ1LDcgQEAgY3NreV9TUkNTID0gY3NreV9hdHRycy5jIGNza3lfaW5pdC5jIGNza3lfc3ltYm9sLmMgY3NreV9jZmkuYyBcCi0gbGliZWJsX2Nza3lfcGljX2FfU09VUkNFUyA9ICQoY3NreV9TUkNTKQotIGFtX2xpYmVibF9jc2t5X3BpY19hX09CSkVDVFMgPSAkKGNza3lfU1JDUzouYz0ub3MpCitAQCAtMTAwLDcgKzEwMCw3IEBAIHJpc2N2X1NSQ1MgPSByaXNjdl9pbml0LmMgcmlzY3Zfc3ltYm9sLmMgcmlzY3ZfY2ZpLmMgcmlzY3ZfcmVncy5jIFwKKyBjc2t5X1NSQ1MgPSBjc2t5X2F0dHJzLmMgY3NreV9pbml0LmMgY3NreV9zeW1ib2wuYyBjc2t5X2NmaS5jIFwKKyAJICAgIGNza3lfcmVncy5jIGNza3lfaW5pdHJlZy5jIGNza3lfY29yZW5vdGUuYwogIAogLW1pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYwogK21pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYyBtaXBzX2NmaS5jCi0gbGliZWJsX21pcHNfcGljX2FfU09VUkNFUyA9ICQobWlwc19TUkNTKQotIGFtX2xpYmVibF9taXBzX3BpY19hX09CSkVDVFMgPSAkKG1pcHNfU1JDUzouYz0ub3MpCiAgCisgbGliZWJsX2JhY2tlbmRzX2FfU09VUkNFUyA9ICQoaTM4Nl9TUkNTKSAkKHNoX1NSQ1MpICQoeDg2XzY0X1NSQ1MpIFwKKyAJCQkgICAgJChpYTY0X1NSQ1MpICQoYWxwaGFfU1JDUykgJChhcm1fU1JDUykgXAogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfY2ZpLmMgYi9iYWNrZW5kcy9taXBzX2NmaS5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uOWZmZGFiNQpAQCAtMTI2LDYgKzEyNywzIEBACiAgCiAgICByZXR1cm4gTU9EVkVSU0lPTjsKICB9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtbGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtbGlicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliOWYxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLWxpYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotRnJvbSBkNWExNjUxZGY5ODg0ZmNmNTdlZDMyMGJjMmY4NjY1MzhhZjJmNDIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxODo0NyArMDgwMAotU3ViamVjdDogW1BBVENIIDIvM10gbXVzbC1saWJzCi0KLUNvbGxlY3Rpb24gb2YgZml4ZXMgbmVlZGVkIHRvIGNvbXBpbGUgbGliZWxmIGFuZCBvdGhlciBsaWJyYXJpZXMKLXByb3ZpZGVkIGJ5IGVsZnV0aWxzIGZvciBtdXNsIHRhcmdldHMKLQotZXJyb3IgaXMgZ2xpYmMgc3BlY2lmaWMgQVBJLCBzbyB0aGlzIHBhdGNoIHdpbGwgbW9zdGx5IG5vdCBhY2NlcHRlZAotdXBzdHJlYW0gZ2l2ZW4gdGhhdCBlbGZ1dGlscyBoYXMgYmVlbiBjbG9zZWx5IHRpZWQgdG8gZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KLQotUmViYXNlIHRvIDAuMTc3Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZXJyb3IuaCAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWIvZml4ZWRzaXplaGFzaC5oICAgICAgICAgICAgfCAgMSAtCi0gbGliL2xpYmV1LmggICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGxpYmR3ZmwvZHdmbF9lcnJvci5jICAgICAgICAgICB8ICA5ICsrKysrKysrKwotIGxpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyB8ICAxICsKLSBsaWJlbGYvZWxmLmggICAgICAgICAgICAgICAgICAgfCAgOSArKysrKystLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9lcnJvci5oCi0KLWRpZmYgLS1naXQgYS9saWIvZXJyb3IuaCBiL2xpYi9lcnJvci5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWYwNjgyNwotLS0tIC9kZXYvbnVsbAotKysrIGIvbGliL2Vycm9yLmgKLUBAIC0wLDAgKzEsMjcgQEAKLSsjaWZuZGVmIF9FUlJPUl9IXwotKyNkZWZpbmUgX0VSUk9SX0hfCi0rCi0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rCi0rc3RhdGljIHVuc2lnbmVkIGludCBlcnJvcl9tZXNzYWdlX2NvdW50ID0gMDsKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgZXJyb3IoaW50IHN0YXR1cywgaW50IGVycm51bSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCi0rewotKwl2YV9saXN0IGFwOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBwcm9ncmFtX2ludm9jYXRpb25fbmFtZSk7Ci0rCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotKwl2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXApOwotKwl2YV9lbmQoYXApOwotKwlpZiAoZXJybnVtKQotKwkJZnByaW50ZihzdGRlcnIsICI6ICVzIiwgc3RyZXJyb3IoZXJybnVtKSk7Ci0rCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKLSsJZXJyb3JfbWVzc2FnZV9jb3VudCsrOwotKwlpZiAoc3RhdHVzKQotKwkJZXhpdChzdGF0dXMpOwotK30KLSsKLSsjZW5kaWYJLyogX0VSUk9SX0hfICovCi1kaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKLWluZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0Ci0tLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCi0rKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCi1AQCAtMzAsNyArMzAsNiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotIAotICNpbmNsdWRlIDxzeXN0ZW0uaD4KLSAKLWRpZmYgLS1naXQgYS9saWIvbGliZXUuaCBiL2xpYi9saWJldS5oCi1pbmRleCBlY2I0ZDAxLi5lZGM4NWUzIDEwMDY0NAotLS0tIGEvbGliL2xpYmV1LmgKLSsrKyBiL2xpYi9saWJldS5oCi1AQCAtMjksNiArMjksNyBAQAotICNpZm5kZWYgTElCRVVfSAotICNkZWZpbmUgTElCRVVfSAotIAotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLWluZGV4IDdiY2Y2MWMuLjExZGNjOGIgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLUBAIC0xNTQsNyArMTU0LDE2IEBAIGR3ZmxfZXJybXNnIChpbnQgZXJyb3IpCi0gICBzd2l0Y2ggKGVycm9yICZ+IDB4ZmZmZikKLSAgICAgewotICAgICBjYXNlIE9USEVSX0VSUk9SIChFUlJOTyk6Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICAgIHJldHVybiBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgImJhZCIsIDApOwotKyNlbHNlCi0rICAgICAgewotKyAgICAgICAgc3RhdGljIF9fdGhyZWFkIGNoYXIgYnVmWzEyOF0gPSAiIjsKLSsgICAgICAgIGlmIChzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgYnVmLCBzaXplb2YoYnVmKSkgPT0gMCkKLSsgICAgICAgICAgcmV0dXJuIGJ1ZjsKLSsgICAgICB9Ci0rICAgICAgcmV0dXJuICJzdHJlcnJvcl9yKCkgZmFpbGVkIjsKLSsjZW5kaWYKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRUxGKToKLSAgICAgICByZXR1cm4gZWxmX2Vycm1zZyAoZXJyb3IgJiAweGZmZmYpOwotICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJEVyk6Ci1kaWZmIC0tZ2l0IGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi1pbmRleCBkNDZhYjVhLi4xYzNmYWVlIDEwMDY0NAotLS0tIGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi0rKysgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLUBAIC01MCw2ICs1MCw3IEBACi0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAKLSAvKiBJZiBmdHMuaCBpcyBpbmNsdWRlZCBiZWZvcmUgY29uZmlnLmgsIGl0cyBpbmRpcmVjdCBpbmNsdXNpb25zIG1heSBub3QKLSAgICBnaXZlIHVzIHRoZSByaWdodCBMRlMgYWxpYXNlcyBvZiB0aGVzZSBmdW5jdGlvbnMsIHNvIG1hcCB0aGVtIG1hbnVhbGx5LiAgKi8KLWRpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKLWluZGV4IGJlZDI3M2QuLmJlMjI4ZTYgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZWxmLmgKLSsrKyBiL2xpYmVsZi9lbGYuaAotQEAgLTIxLDcgKzIxLDkgQEAKLSAKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KLSAKLUBAIC00MDI5LDYgKzQwMzEsNyBAQCBlbnVtCi0gI2RlZmluZSBSX05EUzMyX1RMU19UUE9GRgkxMDIKLSAjZGVmaW5lIFJfTkRTMzJfVExTX0RFU0MJMTE5Ci0gCi0tX19FTkRfREVDTFMKLS0KLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0gI2VuZGlmCS8qIGVsZi5oICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtb2JzdGFjay1mdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLW9ic3RhY2stZnRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGYyYjY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtb2JzdGFjay1mdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotRnJvbSA3N2I4OWRiYzlmOWY5NjVhZDBlZjJlMzQxZDdkNDZiY2U1ZjA3NTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxNzoyNSArMDgwMAotU3ViamVjdDogW1BBVENIIDEvM10gbXVzbC1vYnN0YWNrLWZ0cwotCi1Mb29rIGZvciBsaWJmdHMgYW5kIGxpYm9ic3RhY2sgZHVyaW5nIGNvbmZpZ3VyZSwgdGhlc2UKLWxpYnJhcmllcyBhcmUgZXh0ZXJuYWwgdG8gbGliYyB3aGVuIHVzaW5nIG11c2wsIHdoZXJlYXMKLW9uIGdsaWJjIHRoZXNlIGxpYnJhcmllcyBhcmUgcHJvdmlkZWQgaW4gbGliYyBpdHNlbGYuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgZm9yIG11c2xdCi0KLVJlYmFzZSB0byAwLjE3NwotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWJkdy9NYWtlZmlsZS5hbSB8ICAyICstCi0gc3JjL01ha2VmaWxlLmFtICAgfCAgOCArKysrLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZjkzOTY0Yy4uYjg3Yjc2MiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDk0LDYgKzQ5NCw2MCBAQCBlbHNlCi0gZmkKLSBBQ19TVUJTVChbYXJncF9MREFERF0pCi0gCi0rZG5sIENoZWNrIGlmIHdlIGhhdmUgZnRzIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCi0rQUNfTElOS19JRkVMU0UoCi0rCVtBQ19MQU5HX1BST0dSQU0oCi0rCQlbI2lmICFkZWZpbmVkKF9feDg2XzY0X18pCi0rCQkjdW5kZWYgIF9GSUxFX09GRlNFVF9CSVRTCi0rCQkjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDMyCi0rCQkjZW5kaWYKLSsJCSNpbmNsdWRlIDxmdHMuaD5dLAotKwkJW0ZUUyogZnRzID0gMDsgcmV0dXJuIGZ0c19jbG9zZShmdHMpOyByZXR1cm4gMDtdCi0rCQkpXSwKLSsJW2xpYmNfaGFzX2Z0cz0idHJ1ZSJdLAotKwlbbGliY19oYXNfZnRzPSJmYWxzZSJdCi0rKQotKwotK2RubCBJZiBvdXIgbGliYyBkb2Vzbid0IHByb3ZpZGUgZnRzLCB0aGVuIHRlc3QgZm9yIGxpYmZ0cwotK2lmIHRlc3QgIiRsaWJjX2hhc19mdHMiID0gImZhbHNlIiA7IHRoZW4KLSsJQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBmdHMiKQotKwlBQ19DSEVDS19MSUIoW2Z0c10sIFtmdHNfY2xvc2VdLCBbaGF2ZV9mdHM9InRydWUiXSwgW2hhdmVfZnRzPSJmYWxzZSJdKQotKwotKwlpZiB0ZXN0ICIkaGF2ZV9mdHMiID0gImZhbHNlIjsgdGhlbgotKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJmdHMgZm91bmQiKQotKwllbHNlCi0rCQlmdHNfTERBREQ9Ii1sZnRzIgotKwlmaQotK2Vsc2UKLSsJZnRzX0xEQUREPSIiCi0rZmkKLStBQ19TVUJTVChbZnRzX0xEQUREXSkKLSsKLStkbmwgQ2hlY2sgaWYgd2UgaGF2ZSBvYnN0YWNrIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCi0rQUNfTElOS19JRkVMU0UoCi0rCVtBQ19MQU5HX1BST0dSQU0oCi0rCQlbI2luY2x1ZGUgPG9ic3RhY2suaD5dLAotKwkJW19vYnN0YWNrX2JlZ2luKDAsIDAsIDAsIE5VTEwsIE5VTEwpOyByZXR1cm4gMDtdCi0rCQkpXSwKLSsJW2xpYmNfaGFzX29ic3RhY2s9InRydWUiXSwKLSsJW2xpYmNfaGFzX29ic3RhY2s9ImZhbHNlIl0KLSspCi0rCi0rZG5sIElmIG91ciBsaWJjIGRvZXNuJ3QgcHJvdmlkZSBvYnN0YWNrLCB0aGVuIHRlc3QgZm9yIGxpYm9ic3RhY2sKLStpZiB0ZXN0ICIkbGliY19oYXNfb2JzdGFjayIgPSAiZmFsc2UiIDsgdGhlbgotKwlBQ19NU0dfV0FSTigibGliYyBkb2VzIG5vdCBoYXZlIG9ic3RhY2siKQotKwlBQ19DSEVDS19MSUIoW29ic3RhY2tdLCBbX29ic3RhY2tfYmVnaW5dLCBbaGF2ZV9vYnN0YWNrPSJ0cnVlIl0sIFtoYXZlX29ic3RhY2s9ImZhbHNlIl0pCi0rCi0rCWlmIHRlc3QgIiRoYXZlX29ic3RhY2siID0gImZhbHNlIjsgdGhlbgotKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJvYnN0YWNrIGZvdW5kIikKLSsJZWxzZQotKwkJb2JzdGFja19MREFERD0iLWxvYnN0YWNrIgotKwlmaQotK2Vsc2UKLSsJb2JzdGFja19MREFERD0iIgotK2ZpCi0rQUNfU1VCU1QoW29ic3RhY2tfTERBRERdKQotKwotIGRubCBUaGUgZGlyZWN0b3JpZXMgd2l0aCBjb250ZW50LgotIAotIGRubCBEb2N1bWVudGF0aW9uLgotZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KLWluZGV4IDdhM2Q1MzIuLmE1NDFmYTMgMTAwNjQ0Ci0tLS0gYS9saWJkdy9NYWtlZmlsZS5hbQotKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KLUBAIC0xMDgsNyArMTA4LDcgQEAgYW1fbGliZHdfcGljX2FfT0JKRUNUUyA9ICQobGliZHdfYV9TT1VSQ0VTOi5jPS5vcykKLSBsaWJkd19zb19MSUJTID0gbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAotIAkgIC4uL2xpYmR3ZmwvbGliZHdmbF9waWMuYSAuLi9saWJlYmwvbGliZWJsLmEKLSBsaWJkd19zb19ERVBTID0gLi4vbGliL2xpYmV1LmEgLi4vbGliZWxmL2xpYmVsZi5zbwotLWxpYmR3X3NvX0xETElCUyA9ICQobGliZHdfc29fREVQUykgLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKQotK2xpYmR3X3NvX0xETElCUyA9ICQobGliZHdfc29fREVQUykgLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKGZ0c19MREFERCkgJCh6aXBfTElCUykKLSBsaWJkd19zb19TT1VSQ0VTID0KLSBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCAkKGxpYmR3X3NvX0xJQlMpICQobGliZHdfc29fREVQUykKLSAjIFRoZSBycGF0aCBpcyBuZWNlc3NhcnkgZm9yIGxpYmVibCBiZWNhdXNlIGl0cyAkT1JJR0lOIHVzZSB3aWxsCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCBiNzJmODUzLi4yZjNkZmNlIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC02OSw4ICs2OSw4IEBAIGFyX25vX1dzdGFja191c2FnZSA9IHllcwotIHVuc3RyaXBfbm9fV3N0YWNrX3VzYWdlID0geWVzCi0gCi0gcmVhZGVsZl9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi0tbm1fTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbCBcCi0tCSAgICQoZGVtYW5nbGVsaWIpCi0rbm1fTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgXAotKwkgICAkKG9ic3RhY2tfTERBREQpIC1sZGwgJChkZW1hbmdsZWxpYikKLSBzaXplX0xEQUREID0gJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLSBzdHJpcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi0gZWxmbGludF9MREFERCAgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotQEAgLTc4LDkgKzc4LDkgQEAgZmluZHRleHRyZWxfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQotIGFkZHIybGluZV9MREFERCA9ICQobGliZHcpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQoZGVtYW5nbGVsaWIpCi0gZWxmY21wX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwKLSBvYmpkdW1wX0xEQUREICA9ICQobGliYXNtKSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotLXJhbmxpYl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLStyYW5saWJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQob2JzdGFja19MREFERCkKLSBzdHJpbmdzX0xEQUREID0gJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLS1hcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLSthcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKQotIHVuc3RyaXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotIHN0YWNrX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwgJChkZW1hbmdsZWxpYikKLSBlbGZjb21wcmVzc19MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUzNTc5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRml4IGVycm9yIG9uIG11c2w6Ci0KLXwgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzogSW4gZnVuY3Rpb24gJ21haW4nOgotfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOjM3MDo2MDogZXJyb3I6ICdBTExQRVJNUycgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ0VQRVJNJz8KLXwgICAgICAgIGZkbmV3ID0gb3BlbiAoZm5ldywgT19XUk9OTFkgfCBPX0NSRUFULCBzdC5zdF9tb2RlICYgQUxMUEVSTVMpOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUEVSTQotfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOjM3MDo2MDogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlIGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGluIG11c2xdCi0KLVNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotCi1JbmRleDogZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTc2Lm9yaWcvdGVzdHMvZWxmc3RybWVyZ2UuYwotKysrIGVsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmMKLUBAIC0zMyw2ICszMywxMSBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKLSAjaW5jbHVkZSAiZWxmLWtub3dsZWRnZS5oIgotIAotKy8qIGZvciBtdXNsICovCi0rI2lmbmRlZiBBTExQRVJNUwotKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykvKiAwNzc3NyAqLwotKyNlbmRpZgotKwotIC8qIFRoZSBvcmlnaW5hbCBFTEYgZmlsZS4gICovCi0gc3RhdGljIGludCBmZCA9IC0xOwotIHN0YXRpYyBFbGYgKmVsZiA9IE5VTEw7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXV0aWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC11dGlscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThhZDkzMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXV0aWxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLUZyb20gN2Y1ZTJmZDg2ZDU0ZTBhNGQxOTVlYzY1YWZiOWI0MTE4MjlkZmY5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTk6NDggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wtdXRpbHMKLQotUHJvdmlkZSBtaXNzaW5nIGRlZmluZXMgd2hpY2ggb3RoZXJ3aXNlIGFyZSBhdmFpbGFibGUgb24gZ2xpYmMgc3lzdGVtIGhlYWRlcnMKLQotQWx0ZXIgdGhlIGVycm9yIEFQSSB0byBtYXRjaCBwb3NpeCB2ZXJzaW9uCi11c2UgcXNvcnQgaW5zdGVhZCBvZiBxc29ydF9yIHdoaWNoIGlzIGdsaWJjIHNwZWNpZmljIEFQSQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQotCi1SZWJhc2UgdG8gMC4xNzcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9hcmxpYi5oICAgICAgIHwgIDYgKysrKysrCi0gc3JjL2VsZmNvbXByZXNzLmMgfCAgNyArKysrKysrCi0gc3JjL3JlYWRlbGYuYyAgICAgfCAyMCArKysrKysrKysrKystLS0tLS0tLQotIHNyYy9zdHJpcC5jICAgICAgIHwgIDcgKysrKysrKwotIHNyYy91bnN0cmlwLmMgICAgIHwgIDkgKysrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FybGliLmggYi9zcmMvYXJsaWIuaAotaW5kZXggZTExNzE2Ni4uODMyNmY2YyAxMDA2NDQKLS0tLSBhL3NyYy9hcmxpYi5oCi0rKysgYi9zcmMvYXJsaWIuaAotQEAgLTI5LDYgKzI5LDEyIEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSsjaWYgIWRlZmluZWQoQUxMUEVSTVMpCi0rIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLwotKyNlbmRpZgotKyNpZiAhZGVmaW5lZChERUZGSUxFTU9ERSkKLSsjIGRlZmluZSBERUZGSUxFTU9ERSAoU19JUlVTUnxTX0lXVVNSfFNfSVJHUlB8U19JV0dSUHxTX0lST1RIfFNfSVdPVEgpLyogMDY2NiovCi0rI2VuZGlmCi0gCi0gLyogU3RhdGUgb2YgLUQvLVUgZmxhZ3MuICAqLwotIGV4dGVybiBib29sIGFybGliX2RldGVybWluaXN0aWNfb3V0cHV0OwotZGlmZiAtLWdpdCBhL3NyYy9lbGZjb21wcmVzcy5jIGIvc3JjL2VsZmNvbXByZXNzLmMKLWluZGV4IDZiYTZhZjQuLjBjNzY3NGIgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmY29tcHJlc3MuYwotKysrIGIvc3JjL2VsZmNvbXByZXNzLmMKLUBAIC0zNyw2ICszNywxMyBAQAotICNpbmNsdWRlICJsaWJldS5oIgotICNpbmNsdWRlICJwcmludHZlcnNpb24uaCIKLSAKLSsjaWYgIWRlZmluZWQoQUxMUEVSTVMpCi0rIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLwotKyNlbmRpZgotKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCi0rIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQotKyNlbmRpZgotKwotIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCi0gQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOwotIAotZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCi1pbmRleCA1YzAyYTliLi44MTc1NjJkIDEwMDY0NAotLS0tIGEvc3JjL3JlYWRlbGYuYwotKysrIGIvc3JjL3JlYWRlbGYuYwotQEAgLTQ4MTMsMTAgKzQ4MTMsMTEgQEAgbGlzdHB0cl9iYXNlIChzdHJ1Y3QgbGlzdHB0ciAqcCkKLSAgIHJldHVybiBjdWRpZV9iYXNlICgmY3UpOwotIH0KLSAKLStzdGF0aWMgY29uc3QgY2hhciAqbGlzdHB0cl9uYW1lOwotKwotIHN0YXRpYyBpbnQKLS1jb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKLStjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0gewotLSAgY29uc3QgY2hhciAqbmFtZSA9IGFyZzsKLSAgIHN0cnVjdCBsaXN0cHRyICpwMSA9ICh2b2lkICopIGE7Ci0gICBzdHJ1Y3QgbGlzdHB0ciAqcDIgPSAodm9pZCAqKSBiOwotIAotQEAgLTQ4MzIsMjEgKzQ4MzMsMjEgQEAgY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCi0gCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOwotIAkgIGVycm9yICgwLCAwLAotIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBhZGRyZXNzIHNpemVzIiksCi0tCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKLSsJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0gCX0KLSAgICAgICBpZiAocDEtPmR3YXJmNjQgIT0gcDItPmR3YXJmNjQpCi0gCXsKLSAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7Ci0gCSAgZXJyb3IgKDAsIDAsCi0gCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IG9mZnNldCBzaXplcyIpLAotLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0rCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotIAl9Ci0gICAgICAgaWYgKGxpc3RwdHJfYmFzZSAocDEpICE9IGxpc3RwdHJfYmFzZSAocDIpKQotIAl7Ci0gCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOwotIAkgIGVycm9yICgwLCAwLAotIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBiYXNlIGFkZHJlc3NlcyIpLAotLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0rCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotIAl9Ci0gICAgICAgaWYgKHAxLT5hdHRyICE9IHAyIC0+YXR0cikKLSAJewotQEAgLTQ4NTQsNyArNDg1NSw3IEBAIGNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQotIAkgIGVycm9yICgwLCAwLAotIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0Ci0gCQkJICAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYXR0cmlidXRlICVzIGFuZCAlcyIpLAotLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCwgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0ciksCi0rCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQsIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpLAotIAkJIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpKTsKLSAJfQotICAgICB9Ci1AQCAtNDkyNiw4ICs0OTI3LDExIEBAIHN0YXRpYyB2b2lkCi0gc29ydF9saXN0cHRyIChzdHJ1Y3QgbGlzdHB0cl90YWJsZSAqdGFibGUsIGNvbnN0IGNoYXIgKm5hbWUpCi0gewotICAgaWYgKHRhYmxlLT5uID4gMCkKLS0gICAgcXNvcnRfciAodGFibGUtPnRhYmxlLCB0YWJsZS0+biwgc2l6ZW9mIHRhYmxlLT50YWJsZVswXSwKLS0JICAgICAmY29tcGFyZV9saXN0cHRyLCAodm9pZCAqKSBuYW1lKTsKLSsgICAgewotKyAgICAgIGxpc3RwdHJfbmFtZSA9IG5hbWU7Ci0rICAgICAgcXNvcnQgKHRhYmxlLT50YWJsZSwgdGFibGUtPm4sIHNpemVvZiB0YWJsZS0+dGFibGVbMF0sCi0rCSAgICAmY29tcGFyZV9saXN0cHRyKTsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgYm9vbAotZGlmZiAtLWdpdCBhL3NyYy9zdHJpcC5jIGIvc3JjL3N0cmlwLmMKLWluZGV4IDQwNTRjMmEuLmQyZDIxNzYgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RyaXAuYwotKysrIGIvc3JjL3N0cmlwLmMKLUBAIC00Niw2ICs0NiwxMyBAQAotICNpbmNsdWRlIDxzeXN0ZW0uaD4KLSAjaW5jbHVkZSA8cHJpbnR2ZXJzaW9uLmg+Ci0gCi0rI2lmICFkZWZpbmVkKEFDQ0VTU1BFUk1TKQotKyMgZGVmaW5lIEFDQ0VTU1BFUk1TIChTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NyAqLwotKyNlbmRpZgotKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCi0rIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQotKyNlbmRpZgotKwotIHR5cGVkZWYgdWludDhfdCBHRWxmX0J5dGU7Ci0gCi0gLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KLWRpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYwotaW5kZXggZmM4NzgzMi4uMjFlYTZiMyAxMDA2NDQKLS0tLSBhL3NyYy91bnN0cmlwLmMKLSsrKyBiL3NyYy91bnN0cmlwLmMKLUBAIC01Niw2ICs1NiwxNSBAQAotICMgZGVmaW5lIF8oc3RyKSBnZXR0ZXh0IChzdHIpCi0gI2VuZGlmCi0gCi0rI2lmbmRlZiBzdHJuZHVwYQotKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAotKyAgICAgICAoe2NvbnN0IGNoYXIgKl9faW4gPSAocyk7IFwKLSsgICAgICAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuIChfX2luLCAobikpICsgMTsgXAotKyAgICAgICAgIGNoYXIgKl9fb3V0ID0gKGNoYXIgKikgYWxsb2NhIChfX2xlbik7IFwKLSsgICAgICAgICBfX291dFtfX2xlbi0xXSA9ICdcMCc7IFwKLSsgICAgICAgICAoY2hhciAqKSBtZW1jcHkgKF9fb3V0LCBfX2luLCBfX2xlbi0xKTt9KQotKyNlbmRpZgotKwotIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCi0gQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvQ1ZFLTIwMTktMTgyMTgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvQ1ZFLTIwMTktMTgyMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMDJjNWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL0NWRS0yMDE5LTE4MjE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotY2RmX3JlYWRfcHJvcGVydHlfaW5mbyBpbiBjZGYuYyBpbiBmaWxlIHRocm91Z2ggNS4zNyBkb2VzIG5vdCByZXN0cmljdCB0aGUKLW51bWJlciBvZiBDREZfVkVDVE9SIGVsZW1lbnRzLCB3aGljaCBhbGxvd3MgYSBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyAoNC1ieXRlCi1vdXQtb2YtYm91bmRzIHdyaXRlKS4KLQotQ1ZFOiBDVkUtMjAxOS0xODIxOAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA0NmE4NDQzZjc2Y2VjNGI0MWVjNzM2ZWNhMzk2OTg0Yzc0NjY0Zjg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXN0b3MgWm91bGFzIDxjaHJpc3Rvc0B6b3VsYXMuY29tPgotRGF0ZTogTW9uLCAyNiBBdWcgMjAxOSAxNDozMTozOSArMDAwMAotU3ViamVjdDogW1BBVENIXSBMaW1pdCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdmVjdG9yIChmb3VuZCBieSBvc3MtZnV6eikKLQotLS0tCi0gc3JjL2NkZi5jIHwgOSArKysrLS0tLS0KLSBzcmMvY2RmLmggfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jZGYuYyBiL3NyYy9jZGYuYwotaW5kZXggOWQ2Mzk2NzQyLi5iYjgxZDYzNzQgMTAwNjQ0Ci0tLS0gYS9zcmMvY2RmLmMKLSsrKyBiL3NyYy9jZGYuYwotQEAgLTEwMTYsOCArMTAxNiw5IEBAIGNkZl9yZWFkX3Byb3BlcnR5X2luZm8oY29uc3QgY2RmX3N0cmVhbV90ICpzc3QsIGNvbnN0IGNkZl9oZWFkZXJfdCAqaCwKLSAJCQkJZ290byBvdXQ7Ci0gCQkJfQotIAkJCW5lbGVtZW50cyA9IENERl9HRVRVSU5UMzIocSwgMSk7Ci0tCQkJaWYgKG5lbGVtZW50cyA9PSAwKSB7Ci0tCQkJCURQUklOVEYoKCJDREZfVkVDVE9SIHdpdGggbmVsZW1lbnRzID09IDBcbiIpKTsKLSsJCQlpZiAobmVsZW1lbnRzID4gQ0RGX0VMRU1FTlRfTElNSVQgfHwgbmVsZW1lbnRzID09IDApIHsKLSsJCQkJRFBSSU5URigoIkNERl9WRUNUT1Igd2l0aCBuZWxlbWVudHMgPT0gJSIKLSsJCQkJICAgIFNJWkVfVF9GT1JNQVQgInVcbiIsIG5lbGVtZW50cykpOwotIAkJCQlnb3RvIG91dDsKLSAJCQl9Ci0gCQkJc2xlbiA9IDI7Ci1AQCAtMTA2MCw4ICsxMDYxLDYgQEAgY2RmX3JlYWRfcHJvcGVydHlfaW5mbyhjb25zdCBjZGZfc3RyZWFtX3QgKnNzdCwgY29uc3QgY2RmX2hlYWRlcl90ICpoLAotIAkJCQkJZ290byBvdXQ7Ci0gCQkJCWlucCArPSBuZWxlbTsKLSAJCQl9Ci0tCQkJRFBSSU5URigoIm5lbGVtZW50cyA9ICUiIFNJWkVfVF9GT1JNQVQgInVcbiIsCi0tCQkJICAgIG5lbGVtZW50cykpOwotIAkJCWZvciAoaiA9IDA7IGogPCBuZWxlbWVudHMgJiYgaSA8IHNoLnNoX3Byb3BlcnRpZXM7Ci0gCQkJICAgIGorKywgaSsrKQotIAkJCXsKLWRpZmYgLS1naXQgYS9zcmMvY2RmLmggYi9zcmMvY2RmLmgKLWluZGV4IDJmN2U1NTRiNy4uMDUwNTY2NjhmIDEwMDY0NAotLS0tIGEvc3JjL2NkZi5oCi0rKysgYi9zcmMvY2RmLmgKLUBAIC00OCw2ICs0OCw3IEBACi0gdHlwZWRlZiBpbnQzMl90IGNkZl9zZWNpZF90OwotIAotICNkZWZpbmUgQ0RGX0xPT1BfTElNSVQJCQkJCTEwMDAwCi0rI2RlZmluZSBDREZfRUxFTUVOVF9MSU1JVAkJCQkxMDAwMDAKLSAKLSAjZGVmaW5lIENERl9TRUNJRF9OVUxMCQkJCQkwCi0gI2RlZmluZSBDREZfU0VDSURfRlJFRQkJCQkJLTEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NmNjYzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKLW9uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyB0d28gY2xhdXNlIEJTRAotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT0wMjUxZWFlYzExODhiMjBkOWE3MmM1MDJlY2ZkZGExYiIKLQotREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE4MjE4LnBhdGNoIgotCi1TUkNSRVYgPSAiYTBkNWIwZTRlOWY5N2Q3NGE5OTExZTk1Y2VkZDU3OTg1MmUyNTM5OCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbGlic2VjY29tcCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmaWxlXSA9ICIke2JpbmRpcn0vZmlsZSIKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgotCi1kb19jb21waWxlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0Jb2VfcnVubWFrZSBjaGVjawotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCi0JCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KLSMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KLWJpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhmMDkxMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM4LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRmlsZSBjbGFzc2lmaWNhdGlvbiB0b29sIgorREVTQ1JJUFRJT04gPSAiRmlsZSBhdHRlbXB0cyB0byBjbGFzc2lmeSBmaWxlcyBkZXBlbmRpbmcgXAorb24gdGhlaXIgY29udGVudHMgYW5kIHByaW50cyBhIGRlc2NyaXB0aW9uIGlmIGEgbWF0Y2ggaXMgZm91bmQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kYXJ3aW5zeXMuY29tL2ZpbGUvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCisjIHR3byBjbGF1c2UgQlNECitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTI7bWQ1PTAyNTFlYWVjMTE4OGIyMGQ5YTcyYzUwMmVjZmRkYTFiIgorCitERVBFTkRTID0gInpsaWIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpbGUvZmlsZS5naXQiCisKK1NSQ1JFViA9ICJlYzQxMDgzNjQ1Njg5YTc4N2NkZDAwY2IzYjViZjU3OGFhNzllNDZjIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1saWJzZWNjb21wIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmaWxlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZpbGVdID0gIiR7YmluZGlyfS9maWxlIgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKKworZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCW9lX3J1bm1ha2UgY2hlY2sKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAorCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKyMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCisjIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCitiaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMS1idWlsZC1BQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMtaW4tY29uZmlndXJlLmFjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDEtYnVpbGQtQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TLWluLWNvbmZpZ3VyZS5hYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGJmN2NlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDEtYnVpbGQtQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TLWluLWNvbmZpZ3VyZS5hYy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGVkMWY3ZTlkZTBkNmExZDVhOWU1ODFlMDJhNjM1OTNkMjJjZjFlNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFeHBsb3JlcjA5IDxleHBsb3JlcjA5QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNCBTZXAgMjAxNyAxMDo0NzozMyArMDgwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TIGluIGNvbmZpZ3VyZS5hYy4KKworVGhpcyB3b3VsZCwgZS5nLiBkZWZpbmUgX0dOVV9TT1VSQ0UgaW4gY29uZmlnLmgsIGVuYWJsaW5nIHRoZQorcmVhbGxvY2FycmF5KCkgcHJvdG90eXBlIGluIGdsaWJjIDIuMjYrIG9uIExpbnV4IHN5c3RlbXMgd2l0aCB0aGF0Cit2ZXJzaW9uIG9mIGdsaWJjLgorCitGaXhlcyAjMjQxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDU1ZTc3NGIuLmM4NzlmZTEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI1LDggKzI1LDEwIEBACisgIyBhdXRvY29uZiByZXF1aXJlbWVudHMgYW5kIGluaXRpYWxpemF0aW9uCisgCisgQUNfSU5JVChbdGhlIGZhc3QgbGV4aWNhbCBhbmFseXNlciBnZW5lcmF0b3JdLFsyLjYuNF0sW2ZsZXgtaGVscEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdLFtmbGV4XSkKKytBQ19QUkVSRVEoWzIuNjBdKQorIEFDX0NPTkZJR19TUkNESVIoW3NyYy9zY2FuLmxdKQorIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQorK0FDX1VTRV9TWVNURU1fRVhURU5TSU9OUworIExUX0lOSVQKKyBBTV9JTklUX0FVVE9NQUtFKFsxLjExLjMgLVduby1wb3J0YWJpbGl0eSBmb3JlaWduIGNoZWNrLW5ld3Mgc3RkLW9wdGlvbnMgZGlzdC1semlwIHBhcmFsbGVsLXRlc3RzIHN1YmRpci1vYmplY3RzXSkKKyBBQ19DT05GSUdfSEVBREVSKFtzcmMvY29uZmlnLmhdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC8wMDAyLWF2b2lkLWMtY29tbWVudHMtaW4tYy1jb2RlLWZhaWxzLXdpdGgtZ2NjLTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOGNhNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gNzA3MmJlZmUxMzk3YWY0ZWIwMWMzZmY3ZWRmOTlmMGNkNTA3NjA4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMzAgQXVnIDIwMTYgMTQ6MjU6MzIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZvaWQgYysrIGNvbW1lbnRzIGluIGMtY29kZSAtIGZhaWxzIHdpdGggZ2NjLTYKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotZml4ZXM6Ci0KLXwgZXJyb3I6IEMrKyBzdHlsZSBjb21tZW50cyBhcmUgbm90IGFsbG93ZWQgaW4gSVNPIEM5MAotfCBudW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBzcmMvZmxleC5za2wgfCAyICstCi0gc3JjL3NjYW4uYyAgIHwgMiArLQotIHNyYy9za2VsLmMgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9mbGV4LnNrbCBiL3NyYy9mbGV4LnNrbAotaW5kZXggNzNhMGI5ZS4uZWQ3MTYyNyAxMDA2NDQKLS0tLSBhL3NyYy9mbGV4LnNrbAotKysrIGIvc3JjL2ZsZXguc2tsCi1AQCAtMjM1MCw3ICsyMzUwLDcgQEAgdm9pZCB5eUZsZXhMZXhlcjo6eXllbnN1cmVfYnVmZmVyX3N0YWNrKHZvaWQpCi0gCQkgKiBzY2FubmVyIHdpbGwgZXZlbiBuZWVkIGEgc3RhY2suIFdlIHVzZSAyIGluc3RlYWQgb2YgMSB0byBhdm9pZCBhbgotIAkJICogaW1tZWRpYXRlIHJlYWxsb2Mgb24gdGhlIG5leHQgY2FsbC4KLSAgICAgICAgICAqLwotLQkJbnVtX3RvX2FsbG9jID0gMTsgLy8gQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLgotKwkJbnVtX3RvX2FsbG9jID0gMTsgLyogQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLiAqLwotIAkJWVlfRyh5eV9idWZmZXJfc3RhY2spID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eWFsbG9jCi0gCQkJCQkJCQkobnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKQotIAkJCQkJCQkJTTRfWVlfQ0FMTF9MQVNUX0FSRyk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3NjYW4uYyBiL3NyYy9zY2FuLmMKLWluZGV4IGI1NWRmMmQuLmYxZGNlNzUgMTAwNjQ0Ci0tLS0gYS9zcmMvc2Nhbi5jCi0rKysgYi9zcmMvc2Nhbi5jCi1AQCAtNDY3Miw3ICs0NjcyLDcgQEAgc3RhdGljIHZvaWQgeXllbnN1cmVfYnVmZmVyX3N0YWNrICh2b2lkKQotIAkJICogc2Nhbm5lciB3aWxsIGV2ZW4gbmVlZCBhIHN0YWNrLiBXZSB1c2UgMiBpbnN0ZWFkIG9mIDEgdG8gYXZvaWQgYW4KLSAJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuCi0gICAgICAgICAgKi8KLS0JCW51bV90b19hbGxvYyA9IDE7IC8vIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4KLSsJCW51bV90b19hbGxvYyA9IDE7IC8qIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4qLwotIAkJKHl5X2J1ZmZlcl9zdGFjaykgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5YWxsb2MKLSAJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopCi0gCQkJCQkJCQkpOwotZGlmZiAtLWdpdCBhL3NyYy9za2VsLmMgYi9zcmMvc2tlbC5jCi1pbmRleCBlZjY1N2QzLi4yNmNjODg5IDEwMDY0NAotLS0tIGEvc3JjL3NrZWwuYwotKysrIGIvc3JjL3NrZWwuYwotQEAgLTI1NjEsNyArMjU2MSw3IEBAIGNvbnN0IGNoYXIgKnNrZWxbXSA9IHsKLSAgICIJCSAqIHNjYW5uZXIgd2lsbCBldmVuIG5lZWQgYSBzdGFjay4gV2UgdXNlIDIgaW5zdGVhZCBvZiAxIHRvIGF2b2lkIGFuIiwKLSAgICIJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuIiwKLSAgICIgICAgICAgICAqLyIsCi0tICAiCQludW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uIiwKLSsgICIJCW51bV90b19hbGxvYyA9IDE7IC8qIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4gKi8iLAotICAgIgkJWVlfRyh5eV9idWZmZXJfc3RhY2spID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eWFsbG9jIiwKLSAgICIJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopIiwKLSAgICIJCQkJCQkJCU00X1lZX0NBTExfTEFTVF9BUkcpOyIsCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9DVkUtMjAxNi02MzU0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L0NWRS0yMDE2LTYzNTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNmFjN2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L0NWRS0yMDE2LTYzNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDM5MzllY2NkZmY1OThmNDdlNWIzN2IwNWQ1OGJmMWI0NGQzNzk2ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogRnJpLCA3IE9jdCAyMDE2IDE0OjE1OjM4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgYnVmZmVyIG92ZXJmbG93IGluIHl5X2dldF9uZXh0X2J1ZmZlcgotCi1UaGlzIGlzIHVwc3RyZWFtIGNvbW1pdCBhNWNiZTkyOWFjMzI1NWQzNzFlNjk4ZjYyZGMyNTZhZmU3MDA2NDY2Ci13aXRoIHNvbWUgYWRkaXRpb25hbCBiYWNrcG9ydGluZyB0byBtYWtlIGJpbnV0aWxzIGJ1aWxkIGFnYWluLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTYzNTQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvZmxleC5za2wgfCAyICstCi0gc3JjL3NjYW4uYyAgIHwgMiArLQotIHNyYy9za2VsLmMgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9mbGV4LnNrbCBiL3NyYy9mbGV4LnNrbAotaW5kZXggZWQ3MTYyNy4uODE0ZDU2MiAxMDA2NDQKLS0tLSBhL3NyYy9mbGV4LnNrbAotKysrIGIvc3JjL2ZsZXguc2tsCi1AQCAtMTcxOCw3ICsxNzE4LDcgQEAgaW50IHl5RmxleExleGVyOjp5eV9nZXRfbmV4dF9idWZmZXIoKQotIAotIAllbHNlCi0gCQl7Ci0tCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0KLSsJCQlpbnQgbnVtX3RvX3JlYWQgPQotIAkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7Ci0gCi0gCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKQotZGlmZiAtLWdpdCBhL3NyYy9zY2FuLmMgYi9zcmMvc2Nhbi5jCi1pbmRleCBmMWRjZTc1Li4xOTQ5ODcyIDEwMDY0NAotLS0tIGEvc3JjL3NjYW4uYwotKysrIGIvc3JjL3NjYW4uYwotQEAgLTQxODEsNyArNDE4MSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh2b2lkKQotIAotIAllbHNlCi0gCQl7Ci0tCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0KLSsJCQlpbnQgbnVtX3RvX3JlYWQgPQotIAkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7Ci0gCi0gCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKQotZGlmZiAtLWdpdCBhL3NyYy9za2VsLmMgYi9zcmMvc2tlbC5jCi1pbmRleCAyNmNjODg5Li4wMzQ0ZDE4IDEwMDY0NAotLS0tIGEvc3JjL3NrZWwuYwotKysrIGIvc3JjL3NrZWwuYwotQEAgLTE5MjksNyArMTkyOSw3IEBAIGNvbnN0IGNoYXIgKnNrZWxbXSA9IHsKLSAgICIiLAotICAgIgllbHNlIiwKLSAgICIJCXsiLAotLSAgIgkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9IiwKLSsgICIJCQlpbnQgbnVtX3RvX3JlYWQgPSIsCi0gICAiCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsiLAotICAgIiIsCi0gICAiCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKSIsCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTc5MmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKGVtYmVkZGVkIHNwZWNpZmljKQotCi1TaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+Ci0KLUluZGV4OiBmbGV4LTIuNi4wL2RvYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsZXgtMi42LjAub3JpZy9kb2MvTWFrZWZpbGUuYW0KLSsrKyBmbGV4LTIuNi4wL2RvYy9NYWtlZmlsZS5hbQotQEAgLTIsNyArMiw3IEBAIGhlbHAybWFuID0gQEhFTFAyTUFOQAotIAotIGluZm9fVEVYSU5GT1MgPQlmbGV4LnRleGkKLSBkaXN0X21hbl9NQU5TID0gZmxleC4xCi0tZGlzdF9kb2NfREFUQT0gZmxleC5wZGYKLStFWFRSQV9ESVNUPSBmbGV4LnBkZgotIAotIENMRUFORklMRVMgPSBcCi0gCWZsZXguYXV4IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvcnVuLXB0ZXN0CmluZGV4IDE5ZGIzMzcuLjAzNzMwMWMgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L3J1bi1wdGVzdApAQCAtMiw0ICsyLDQgQEAKIAogIyBtYWtlIHdvdWxkIHdhbnQgdG8gcmVidWlsZCBzb21lIGZpbGVzIHdpdGggYSBjb21waWxlciBvdGhlcndpc2UgOi0vCiBtYWtlIEZMRVg9L3Vzci9iaW4vZmxleCAtdCBjaGVjay1URVNUUyB8fCB0cnVlCi1tYWtlIEZMRVg9L3Vzci9iaW4vZmxleCBjaGVjay1URVNUUworbWFrZSBGTEVYPS91c3IvYmluL2ZsZXggYWJzX2J1aWxkZGlyPS4vIGNoZWNrLVRFU1RTCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZGQ5OWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJGbGV4IChUaGUgRmFzdCBMZXhpY2FsIEFuYWx5emVyKSIKLURFU0NSSVBUSU9OID0gIkZsZXggaXMgYSBmYXN0IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yLiAgRmxleCBpcyBhIHRvb2wgZm9yIGdlbmVyYXRpbmcgcHJvZ3JhbXMgdGhhdCByZWNvZ25pemUgXAotbGV4aWNhbCBwYXR0ZXJucyBpbiB0ZXh0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZmxleC8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi0KLURFUEVORFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUnLCAnJywgZCl9IgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNDc0MmNmOTJlODkwNDBiMzk0ODZhNjIxOWI2ODA2NyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZmxleC9mbGV4LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1hdm9pZC1jLWNvbW1lbnRzLWluLWMtY29kZS1mYWlscy13aXRoLWdjYy02LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTYzNTQucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJycsICdmaWxlOi8vZGlzYWJsZS10ZXN0cy5wYXRjaCcsIGQpfSBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI2NjI3MGYxM2M0OGVkMDQzZDk1NjQ4MDc1MDg0ZDU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0ZTYxMWVmNWE0NzAzYTE5MTAxMmY4MGMxMDI3ZGM5ZDEyNTU1MTgzY2UwZWNkNDZmMzYzNmU1ODdlOWI4ZTkiCi0KLSMgRmxleCBoYXMgbW92ZWQgdG8gZ2l0aHViIGZyb20gMi42LjEgb253YXJkcwotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS93ZXN0ZXMvZmxleC9yZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZsZXgtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwdGVzdAotCi1NNCA9ICIke2JpbmRpcn0vbTQiCi1NNF9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L200IgotRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX000PSR7TTR9IgotRVhUUkFfT0VNQUtFICs9ICJtND0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbTQiCi0KLUVYVFJBX09FTUFLRSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdGTEVYPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9mbGV4JywgJycsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYmZsIgotCi1GSUxFU18ke1BOfS1saWJmbCA9ICIke2xpYmRpcn0vbGliZmwuc28uKiAke2xpYmRpcn0vbGliZmxfcGljLnNvLioiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJtNCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGdhd2sgbWFrZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMgLWYgJHtCfS90ZXN0cy9NYWtlZmlsZSB0b3BfYnVpbGRkaXI9JHtCfSBJTkNMVURFUz0tSSR7U30vc3JjIGJ1aWxkdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCi0JY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LwotCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7Qn0vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXC1lICdzL15NYWtlZmlsZTovX01ha2VmaWxlOi8nIFwKLQkgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCi0JICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyAtZSAncy9edG9wX2J1aWxkZGlyID0gXCguKlwpL3RvcF9idWlsZGRpciA9IC4vJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19Ci0KLSMgTm90IEFwYWNoZSBGbGV4LCBvciBBZG9iZSBGbGV4LCBvciBJQk0gRmxleC4KLUNWRV9QUk9EVUNUID0gImZsZXhfcHJvamVjdDpmbGV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYjI1NDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjQuYmIKQEAgLTAsMCArMSw3NiBAQAorU1VNTUFSWSA9ICJGbGV4IChUaGUgRmFzdCBMZXhpY2FsIEFuYWx5emVyKSIKK0RFU0NSSVBUSU9OID0gIkZsZXggaXMgYSBmYXN0IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yLiAgRmxleCBpcyBhIHRvb2wgZm9yIGdlbmVyYXRpbmcgcHJvZ3JhbXMgdGhhdCByZWNvZ25pemUgXAorbGV4aWNhbCBwYXR0ZXJucyBpbiB0ZXh0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZmxleC8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCisKK0RFUEVORFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUnLCAnJywgZCl9IgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNDc0MmNmOTJlODkwNDBiMzk0ODZhNjIxOWI2ODA2NyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2VzdGVzL2ZsZXgvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2ZsZXgtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJycsICdmaWxlOi8vZGlzYWJsZS10ZXN0cy5wYXRjaCcsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFDX1VTRV9TWVNURU1fRVhURU5TSU9OUy1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyODgyZTMxNzk3NDhjYzlmOWMyM2VjNTkzZDZhZGM4ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODdhYWUwMzJiZjA3YzI2Zjg1YWMwZWQzMjUwOTk4YzM3NjIxZDk1ZjhiZDc0OGIzMWYxNWIzM2M0NWVlOTk1IgorCisjIEZsZXggaGFzIG1vdmVkIHRvIGdpdGh1YiBmcm9tIDIuNi4xIG9ud2FyZHMKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2VzdGVzL2ZsZXgvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmbGV4LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKKworTTQgPSAiJHtiaW5kaXJ9L200IgorTTRfY2xhc3MtbmF0aXZlID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9tNCIKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9NND0ke000fSBhY19jdl9mdW5jX3JlYWxsb2NhcnJheT1ubyIKK0VYVFJBX09FTUFLRSArPSAibTQ9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L200IgorCitFWFRSQV9PRU1BS0UgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnRkxFWD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmxleCcsICcnLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9mbGV4IE00PSR7TTR9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9mbGV4IE00PSR7TTR9Cit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1saWJmbCIKKworRklMRVNfJHtQTn0tbGliZmwgPSAiJHtsaWJkaXJ9L2xpYmZsLnNvLiogJHtsaWJkaXJ9L2xpYmZsX3BpYy5zby4qIgorCitSREVQRU5EU18ke1BOfSArPSAibTQiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCBnYXdrIG1ha2UiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzIC1mICR7Qn0vdGVzdHMvTWFrZWZpbGUgdG9wX2J1aWxkZGlyPSR7Qn0gSU5DTFVERVM9LUkke1N9L3NyYyBidWlsZHRlc3RzCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LworCWNwICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L2J1aWxkLWF1eC8KKwljcCAtciAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke0J9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KKwlzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyBcCisJICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIC1lICdzL150b3Bfc3JjZGlyID0gXCguKlwpL3RvcF9zcmNkaXIgPSAuLycgXAorCSAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAorCSAgICAtZSAnczoke1VOSU5BVElWRV9MT0FERVJ9OiR7YmFzZV9iaW5kaXJ9L2ZhbHNlOmcnIFwKKwkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KKyMgVGhlIHVuaW5hdGl2ZSBsb2FkZXIgaXMgZGlmZmVyZW50IG9uIGkzODYgJiB4ODZfNjQgaG9zdHMuIFNpbmNlIGl0IGlzIG9ubHkKKyMgYmVpbmcgcmVwbGFjZWQgd2l0aCAvYmluL2ZhbHNlIGFueXdheSwgaXQgZG9lc24ndCBuZWVkIHRvIGJlIHBhcnQgb2YgdGhlIHRhc2sKKyMgaGFzaAorZG9faW5zdGFsbF9wdGVzdFt2YXJkZXBzZXhjbHVkZV0gKz0gIlVOSU5BVElWRV9MT0FERVIiCisKKyMgTm90IEFwYWNoZSBGbGV4LCBvciBBZG9iZSBGbGV4LCBvciBJQk0gRmxleC4KK0NWRV9QUk9EVUNUID0gImZsZXhfcHJvamVjdDpmbGV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjM5NTk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi1yZXF1aXJlIGdjYy1jb21tb24uaW5jCi0KLSMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQotCi1QViA9ICI5LjIuMCIKLQotIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKLQotQklOViA9ICI5LjIuMCIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTkuMjoke0ZJTEVfRElSTkFNRX0vZ2NjLTkuMi9iYWNrcG9ydDoiCi0KLURFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIGZsZXgtbmF0aXZlIgotTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAotIgotCi1CQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKLSNSRUxFQVNFID89ICI1YTVjYTJkIgotI0JBU0VVUkkgPz0gImh0dHBzOi8vcmVwby5vci5jei9vZmZpY2lhbC1nY2MuZ2l0L3NuYXBzaG90LyR7UkVMRUFTRX0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9Z2NjLSR7UkVMRUFTRX0udGFyLmd6IgotU1JDX1VSSSA9ICJcCi0gICAgICAgICAgICR7QkFTRVVSSX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLURpc2FibGUtc2R0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWV4cG9ydC1DUFAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDI1MC5wYXRjaCBcCi0JICAgZmlsZTovL0NWRS0yMDE5LTE1ODQ3XzEucGF0Y2ggXAotCSAgIGZpbGU6Ly9DVkUtMjAxOS0xNTg0N18yLnBhdGNoIFwKLQkgICBmaWxlOi8vQ1ZFLTIwMTktMTU4NDdfMy5wYXRjaCBcCi0iCi1TID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgotU1JDX1VSSVttZDVzdW1dID0gIjM4MThhZDg2MDA0NDdmMDUzNDkwOTgyMzJjMmRkYzc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhNmVmMDhmMTIxMjM5ZGE1Njk1Zjc2YzliMzM2MzdhMTE4ZGNmNjNlMjQxNjQ0MjIyMzE5MTdmYTYxZmIyMDYiCi0KLSMgRm9yIGRldiByZWxlYXNlIHNuYXBzaG90dGluZwotI1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9vZmZpY2lhbC1nY2MtJHtSRUxFQVNFfSIKLSNCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCi0KLSMgTGFuZ3VhZ2UgT3ZlcnJpZGVzCi1GT1JUUkFOID0gIiIKLUpBVkEgPSAiIgotCi1MVE8gPSAiLS1lbmFibGUtbHRvIgotU1NQID89ICItLWRpc2FibGUtbGlic3NwIgotU1NQX21pbmd3MzIgPSAiLS1lbmFibGUtbGlic3NwIgotCi1FWFRSQV9PRUNPTkZfQkFTRSA9ICJcCi0gICAgJHtMVE99IFwKLSAgICAke1NTUH0gXAotICAgIC0tZW5hYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCi0gICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCi0gICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKLSAgICAtLXdpdGgtcHBsPW5vIFwKLSAgICAtLXdpdGgtY2xvb2c9bm8gXAotICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAotICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSIKLQotRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLWRpc2FibGUtbGliZ29tcCBcCi0gICAgLS1kaXNhYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0tZGlzYWJsZS1sdG8gXAotICAgIC0tZGlzYWJsZS1wbHVnaW4gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS1lbmFibGUtZGVjaW1hbC1mbG9hdD1ubyBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0gICAgLS1kaXNhYmxlLWxpYnNzcCBcCi0iCi0KLUVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCi0gICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCi0gICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCi0gICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKLSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA2NWMzMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDg2MzMyNWVjM2M2ZWI0OTg3YmU2MzUwOWFjNDA3YjJkMTM2MTczNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODozNzoxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDAxLzM2XSBnY2MtNC4zLjE6IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gY29uZmlndXJlICAgIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggYWJkOTNhOTkwYTkuLmIxMjEwODhkNzc4IDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC03NjAzLDcgKzc2MDMsNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5ZGI0ZmQxNGFhMi4uYWFkOTNjNGQxODMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMxMTksNyArMzExOSw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTExNmU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotRnJvbSA2OGU3OGJjMTVkZTIxNWZhMTVjN2Q4YjU2YmQyZTJiMDUzOWIzNGZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8zNl0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0KLUFkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotemVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgotL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCi1hYm9ydGVkLgotCi1JbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgotd2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKwotIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKLSBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKwotIGdjYy9pbmNwYXRoLmMgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKLWluZGV4IGQzNDJjNGYzNzQ5Li5jNjRmZDRhNmM1MCAxMDA2NDQKLS0tLSBhL2djYy9jb21tb24ub3B0Ci0rKysgYi9nY2MvY29tbW9uLm9wdAotQEAgLTY4NCw2ICs2ODQsMTAgQEAgV3JldHVybi1sb2NhbC1hZGRyCi0gQ29tbW9uIFZhcih3YXJuX3JldHVybl9sb2NhbF9hZGRyKSBJbml0KDEpIFdhcm5pbmcKLSBXYXJuIGFib3V0IHJldHVybmluZyBhIHBvaW50ZXIvcmVmZXJlbmNlIHRvIGEgbG9jYWwgb3IgdGVtcG9yYXJ5IHZhcmlhYmxlLgotIAotK1dwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQ29tbW9uIFZhcihmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpIEluaXQoMSkgV2FybmluZwotK1dhcm4gZm9yIC1JIGFuZCAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBpZiBjcm9zcyBjb21waWxpbmcKLSsKLSBXc2hhZG93Ci0gQ29tbW9uIFZhcih3YXJuX3NoYWRvdykgV2FybmluZwotIFdhcm4gd2hlbiBvbmUgdmFyaWFibGUgc2hhZG93cyBhbm90aGVyLiAgU2FtZSBhcyAtV3NoYWRvdz1nbG9iYWwuCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KLWluZGV4IGE3MThjZWFmM2RhLi41NzEzMzQyZWZiMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuaW4KLSsrKyBiL2djYy9jb25maWcuaW4KLUBAIC0yMDAsNiArMjAwLDEyIEBACi0gI2VuZGlmCi0gCi0gCi0rLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLwotKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rI2VuZGlmCi0rCi0rCi0gLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQotICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KLSAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggNDgxMDcxYjQyNjUuLmE2ZWEzYThhODRjIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTk5NSw2ICs5OTUsNyBAQCB3aXRoX3N5c3RlbV96bGliCi0gZW5hYmxlX21haW50YWluZXJfbW9kZQotIGVuYWJsZV9saW5rX211dGV4Ci0gZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCi0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfcGx1Z2luCi0gZW5hYmxlX2hvc3Rfc2hhcmVkCi0gZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKLUBAIC0xNzQ4LDYgKzE3NDksOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKLSAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKLSsgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0Ci0gICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcwotICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKLUBAIC0yOTc1MCw2ICsyOTc1MywxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gZmkKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotK2Vsc2UKLSsgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggY2UyODI1NTgwYzYuLmQ0MmJiZDRmZDFjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTYzNzgsNiArNjM3OCwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAotICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCi0rICAgICAgICAgICBbMV0sCi0rICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSBBQ19TVUJTVChzdWJkaXJzKQotIEFDX1NVQlNUKHNyY2RpcikKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggNmVmMzZjZTAyYWEuLjA5NDE0ZDhjYzA1IDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTMzMiw2ICszMzIsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAtV3BhY2tlZC1ub3QtYWxpZ25lZCAgLVdwYWRkZWQgQGdvbAotIC1XcGFyZW50aGVzZXMgIC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wKLSAtV3BsYWNlbWVudC1uZXcgIC1XcGxhY2VtZW50LW5ldz1AdmFye259IEBnb2wKLSstV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgQGdvbAotIC1XcG9pbnRlci1hcml0aCAgLVdwb2ludGVyLWNvbXBhcmUgIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCi0gLVduby1wcmFnbWFzICAtV25vLXByaW8tY3Rvci1kdG9yICAtV3JlZHVuZGFudC1kZWNscyBAZ29sCi0gLVdyZXN0cmljdCAgLVduby1yZXR1cm4tbG9jYWwtYWRkciBAZ29sCi1AQCAtNjI4OSw2ICs2MjkwLDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKLSBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKLSBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCi0gCi0rQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KLStkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCi0rb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKLStkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAotK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLSBAaXRlbSAtV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA0ZjU3NzY1YjAxMi4uYTI2MDFhNmJiMDYgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEwNDIsNiArMTA0Miw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAiJXtmdXNlLWxkPSo6LWZ1c2UtbGQ9JSp9ICIgTElOS19DT01QUkVTU19ERUJVR19TUEVDIFwKLSAgICAiJVggJXtvKn0gJXtlKn0gJXtOfSAle259ICV7cn1cCi0gICAgICV7c30gJXt0fSAle3UqfSAle3p9ICV7Wn0gJXshbm9zdGRsaWI6JXshcjoleyFub3N0YXJ0ZmlsZXM6JVN9fX0gXAotKyAgICAle1duby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAotKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAotICAgICAle3N0YXRpY3xuby1waWV8c3RhdGljLXBpZTp9ICVAe0wqfSAlKG1md3JhcCkgJShsaW5rX2xpYmdjYykgIiBcCi0gICAgIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlbyAiIiBcCi0gICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHwlOmd0KCV7ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolKn0gMSk6XAotZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCi1pbmRleCBiY2JlMjA4MjkwNS4uNTc1MjI5OGJiZjIgMTAwNjQ0Ci0tLS0gYS9nY2MvaW5jcGF0aC5jCi0rKysgYi9nY2MvaW5jcGF0aC5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlICJpbnRsLmgiCi0gI2luY2x1ZGUgImluY3BhdGguaCIKLSAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgotKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKLSAKLSAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KLSAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCi1AQCAtMzkzLDYgKzM5NCwyNiBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQotIAl9Ci0gICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7Ci0gICAgIH0KLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCi0rICAgIHsKLSsgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7Ci0rCi0rICAgICAgIGZvciAocCA9IGhlYWRzW0lOQ19RVU9URV07IHA7IHAgPSBwLT5uZXh0KQotKyAgICAgICAgIHsKLSsgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKLSsgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCi0rICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCi0rICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7Ci0rICAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0gfQotIAotIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMwMzlkMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSBmOGQ2MGM0MTE0YWNiOTIzNjFjN2IyZjRhNDU2MWQ0NjYxZThkYTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8zNl0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCi0KLUJlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCi0KLVRoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KLQotT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgotCi0tIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCi0KLS0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcwotCi1JIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KLQotQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/Ci0KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggYjEyMTA4OGQ3NzguLjkzYWFlNWJiMjZmIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC02ODY0LDYgKzY4NjQsMzggQEAgZmkKLSAKLSAKLSAKLSsjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUwotKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCi0rIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KLSsjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAotKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZwotKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCi0raWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLStpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgotICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCi0gaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc5YzQwYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb20gYzIwODFjNTFkYjU4OTQ3MWVhNzEzODcwYzcyZjEzOTk5YWJkYTgxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMzZdIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgotCi1HQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQotbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cwotY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KLQotVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKLWFuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAotZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Ci1rbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCi1wZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgotCi1UaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAotdGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCi1hbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQotZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbwotYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCi0KLURvIHNhbWUgZm9yIHJpc2N2NjQgYW5kIGFhcmNoNjQKLQotUlAgMTUvOC8xMQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBFbHZpcyBEb3dzb24gPGVsdmlzLmRvd3NvbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgIDggKysrKy0tLS0KLSBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgICAgICAgIHwgIDYgKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgICAgICAgICB8IDEwICsrKy0tLS0tLS0KLSBnY2MvY29uZmlnL3Jpc2N2L3QtbGludXggICAgICAgICAgIHwgIDYgKysrKy0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0ICAgICAgICB8ICA1ICsrLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci1pbmRleCA1YWQ2NzBiYTJjZS4uZTI2MDE5ZTcxNTcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci1AQCAtMjEsOCArMjEsOCBAQAotIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQotIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKLSAKLS1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyJChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudV9pbHAzMikKLSsjTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyJChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudV9pbHAzMikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotaW5kZXggYzY4NmFiMmYwZDIuLmM4MmI2MGRhZGNkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotQEAgLTMyLDcgKzMyLDUgQEAKLSAjCi0gY29tbWE9LAotIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQotLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotaW5kZXggM2EyZmY3MDBkN2QuLjEzZWYxOTU3NmI1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotQEAgLTE3LDEwICsxNyw2IEBACi0gIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAotLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0Ci0tTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCi0tTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKLS0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXggYi9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKLWluZGV4IDIxNmQyNzc2YTE4Li5lNGQ4MTc2MjFmYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcmlzY3YvdC1saW51eAotKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4Ci1AQCAtMSwzICsxLDUgQEAKLSAjIE9ubHkgWExFTiBhbmQgQUJJIGFmZmVjdCBMaW51eCBtdWx0aWxpYiBkaXIgbmFtZXMsIGUuZy4gL2xpYjMyL2lscDMyZC8KLS1NVUxUSUxJQl9ESVJOQU1FUyA6PSAkKHBhdHN1YnN0IHJ2MzIlLGxpYjMyLCQocGF0c3Vic3QgcnY2NCUsbGliNjQsJChNVUxUSUxJQl9ESVJOQU1FUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCi0rI01VTFRJTElCX0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgcnYzMiUsbGliMzIsJChwYXRzdWJzdCBydjY0JSxsaWI2NCwkKE1VTFRJTElCX0RJUk5BTUVTKSkpCi0rTVVMVElMSUJfRElSTkFNRVMgOj0gLiAuCi0rI01VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCi0rTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotaW5kZXggZjNjNmUyYmUxZDkuLmJkMDM5MzE1NWZhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLUBAIC0yNiwxMCArMjYsOSBAQAotICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgotIAotIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgotLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKLStNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgotIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQotK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSAKLSByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKLSAJJChDT01QSUxFKSAkPAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGZhYzkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi1Gcm9tIGU3ZTUwNGY0YTkwY2ZhMzk1ZTdmOGVlNzc5ZjhjM2VkNjg3ODAyY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAotU3ViamVjdDogW1BBVENIIDA1LzM2XSBvcHRpb25hbCBsaWJzdGRjCi0KLWdjYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKwotd2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKwotd2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKwotb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKLWRyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgotCi1BICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCi1kbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgotCi1SUCAyOS82LzEwCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKwotIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAotaW5kZXggOTE2Y2M2N2I0NTMuLjQxNjE5ZmE1OTFjIDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0Ci0rKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLUBAIC0xOTUyLDYgKzE5NTIsMTAgQEAgbm9zdGRpbmMrKwotIEMrKyBPYmpDKysKLSBEbyBub3Qgc2VhcmNoIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBDKysuCi0gCi0rbm9zdGRsaWIrKwotK0RyaXZlcgotK0RvIG5vdCBsaW5rIHN0YW5kYXJkIEMrKyBydW50aW1lIGxpYnJhcnkKLSsKLSBvCi0gQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFNlcGFyYXRlCi0gOyBEb2N1bWVudGVkIGluIGNvbW1vbi5vcHQKLWRpZmYgLS1naXQgYS9nY2MvY3AvZysrc3BlYy5jIGIvZ2NjL2NwL2crK3NwZWMuYwotaW5kZXggNmM0NTc0YTgzN2QuLjBlMjY1N2YwMGVlIDEwMDY0NAotLS0tIGEvZ2NjL2NwL2crK3NwZWMuYwotKysrIGIvZ2NjL2NwL2crK3NwZWMuYwotQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAotICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKLSAJewotIAljYXNlIE9QVF9ub3N0ZGxpYjoKLSsJY2FzZSBPUFRfbm9zdGRsaWJfXzoKLSAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKLSAJICBsaWJyYXJ5ID0gLTE7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IDA5NDE0ZDhjYzA1Li5hNDM5NjliYzlmMCAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yMjgsNiArMjI4LDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKLSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAotIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAotKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKLSstZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAotKy1ub3N0ZGxpYisrIEBnb2wKLSAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKLSAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKLSAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yICAtV2RlcHJlY2F0ZWQtY29weSAgLVdkZXByZWNhdGVkLWNvcHktZHRvciBAZ29sCi1AQCAtNTM4LDcgKzU0MSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtcGllICAtcHRocmVhZCAgLXIgIC1yZHluYW1pYyBAZ29sCi0gLXMgIC1zdGF0aWMgIC1zdGF0aWMtcGllICAtc3RhdGljLWxpYmdjYyAgLXN0YXRpYy1saWJzdGRjKysgQGdvbAotIC1zdGF0aWMtbGliYXNhbiAgLXN0YXRpYy1saWJ0c2FuICAtc3RhdGljLWxpYmxzYW4gIC1zdGF0aWMtbGlidWJzYW4gQGdvbAotLS1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAotKy1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAotIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKLSAtdSBAdmFye3N5bWJvbH0gIC16IEB2YXJ7a2V5d29yZH19Ci0gCi1AQCAtMTMzMTIsNiArMTMzMTUsMzMgQEAgU3BlY2lmeSB0aGF0IHRoZSBwcm9ncmFtIGVudHJ5IHBvaW50IGlzIEB2YXJ7ZW50cnl9LiAgVGhlIGFyZ3VtZW50IGlzCi0gaW50ZXJwcmV0ZWQgYnkgdGhlIGxpbmtlcjsgdGhlIEdOVSBsaW5rZXIgYWNjZXB0cyBlaXRoZXIgYSBzeW1ib2wgbmFtZQotIG9yIGFuIGFkZHJlc3MuCi0gCi0rQGl0ZW0gLW5vc3RkbGliKysKLStAb3BpbmRleCBub3N0ZGxpYisrCi0rRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCi0rT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCi0rCi0rQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9Ci0rQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KLStAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQotK0BjaW5kZXggQG9wdGlvbnstbm9kZWZhdWx0bGlic30gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQotK09uZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyaWVzIGJ5cGFzc2VkIGJ5IEBvcHRpb257LW5vc3RkbGlifSBhbmQKLStAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBpcyBAZmlsZXtsaWJnY2MuYX0sIGEgbGlicmFyeSBvZiBpbnRlcm5hbCBzdWJyb3V0aW5lcwotK3doaWNoIEdDQyB1c2VzIHRvIG92ZXJjb21lIHNob3J0Y29taW5ncyBvZiBwYXJ0aWN1bGFyIG1hY2hpbmVzLCBvciBzcGVjaWFsCi0rbmVlZHMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgotKyhAeHJlZntJbnRlcmZhY2UsLEludGVyZmFjaW5nIHRvIEdDQyBPdXRwdXQsZ2NjaW50LEdOVSBDb21waWxlcgotK0NvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfSwKLStmb3IgbW9yZSBkaXNjdXNzaW9uIG9mIEBmaWxle2xpYmdjYy5hfS4pCi0rSW4gbW9zdCBjYXNlcywgeW91IG5lZWQgQGZpbGV7bGliZ2NjLmF9IGV2ZW4gd2hlbiB5b3Ugd2FudCB0byBhdm9pZAotK290aGVyIHN0YW5kYXJkIGxpYnJhcmllcy4gIEluIG90aGVyIHdvcmRzLCB3aGVuIHlvdSBzcGVjaWZ5IEBvcHRpb257LW5vc3RkbGlifQotK29yIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IHlvdSBzaG91bGQgdXN1YWxseSBzcGVjaWZ5IEBvcHRpb257LWxnY2N9IGFzIHdlbGwuCi0rVGhpcyBlbnN1cmVzIHRoYXQgeW91IGhhdmUgbm8gdW5yZXNvbHZlZCByZWZlcmVuY2VzIHRvIGludGVybmFsIEdDQwotK2xpYnJhcnkgc3Vicm91dGluZXMuCi0rKEFuIGV4YW1wbGUgb2Ygc3VjaCBhbiBpbnRlcm5hbCBzdWJyb3V0aW5lIGlzIEBjb2Rle19fbWFpbn0sIHVzZWQgdG8gZW5zdXJlIEMrKwotK2NvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAotK0dOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQotKwotIEBpdGVtIC1waWUKLSBAb3BpbmRleCBwaWUKLSBQcm9kdWNlIGEgZHluYW1pY2FsbHkgbGlua2VkIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgb24gdGFyZ2V0cwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggYTI2MDFhNmJiMDYuLmNkNmM2ZmM5NWRiIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMDUyLDYgKzEwNTIsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAotICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKLSAgICAgJXshbm9zdGRsaWI6JXshcjoleyFub2RlZmF1bHRsaWJzOiUobGlua19zc3ApICUobGlua19nY2NfY19zZXF1ZW5jZSl9fX1cCi0rICAgICV7IW5vc3RkbGliKys6fVwKLSAgICAgJXshbm9zdGRsaWI6JXshcjoleyFub3N0YXJ0ZmlsZXM6JUV9fX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKLSAjZW5kaWYKLSAKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3ZTYwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGI5MjYwY2QzYWMyNmIwMzAyODI0ZWQ0NjZhNTQ4NDY0Yzg2NGQ5NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNjoyOCArMDQwMAotU3ViamVjdDogW1BBVENIIDA2LzM2XSBDT0xMRUNUX0dDQ19PUFRJT05TCi0KLVRoaXMgcGF0Y2ggYWRkcyAtLXN5c3Jvb3QgaW50byBDT0xMRUNUX0dDQ19PUFRJT05TIHdoaWNoIGlzIHVzZWQgdG8KLWludm9rZSBjb2xsZWN0Mi4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvZ2NjLmMgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggY2Q2YzZmYzk1ZGIuLjdkYTljNWQ0NTdiIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC00ODA0LDYgKzQ4MDQsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCi0gCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7Ci0gCi0gICBmaXJzdF90aW1lID0gVFJVRTsKLSsjaWZkZWYgSEFWRV9MRF9TWVNST09UCi0rICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQotKyAgICB7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKLSsgICAgICBmaXJzdF90aW1lID0gRkFMU0U7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGY4ZmMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIDg4ZTcyOGRhZDUzZDQ4YzRhMTlmMTVlMTlmNjZmZDIzZjQ4MjBiNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNzoyNSArMDQwMAotU3ViamVjdDogW1BBVENIIDA3LzM2XSBVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluCi0gJHtCfQotCi1Vc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluICR7Qn0sIHNvIHRoYXQKLXRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVdoaWxlIGNvbXBpbGluZyBnY2MtY3Jvc3NzZGstaW5pdGlhbC14ODZfNjQgb24gc29tZSBob3N0LCB0aGVyZSBpcwotb2NjYXNpb25hbGx5IGZhaWx1cmUgdGhhdCB0ZXN0IHRoZSBleGlzdGFuY2Ugb2YgZGVmYXVsdC5oIGRvZXNuJ3QKLXdvcmssIHRoZSByZWFzb24gaXMgdG1faW5jbHVkZV9saXN0PScqKiBkZWZhdWx0cy5oJyByYXRoZXIgdGhhbgotdG1faW5jbHVkZV9saXN0PScqKiAuL2RlZmF1bHRzLmgnCi0KLVNvIHdlIGFkZCB0aGUgdGVzdCBjb25kaXRpb24gZm9yIHRoaXMgc2l0dWF0aW9uLgotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgNCArKy0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKystLQotIGdjYy9ta2NvbmZpZy5zaCAgfCA0ICsrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggNWY0M2Q5ZGUwMGUuLjQxZjBmNTkyZmY0IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC01NDAsNyArNTQwLDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0gCi0geG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKLS10bWFrZV9maWxlPUB0bWFrZV9maWxlQAotK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQotIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACi0gVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACi0gVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCBhNmVhM2E4YTg0Yy4uZTNiY2Y4YWJlOWEgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTIzNDEsOCArMTIzNDEsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBkNDJiYmQ0ZmQxYy4uMmViYzM3N2E3NGQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTk2OCw4ICsxOTY4LDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvbWtjb25maWcuc2ggYi9nY2MvbWtjb25maWcuc2gKLWluZGV4IDMwOGI4N2QwY2MxLi4xOTA2OGNiYzI0YSAxMDA2NDQKLS0tLSBhL2djYy9ta2NvbmZpZy5zaAotKysrIGIvZ2NjL21rY29uZmlnLnNoCi1AQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgotICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KLSAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAotIAlmb3IgZmlsZSBpbiAiJEAiOyBkbwotLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSsJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0gCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCi0gCSAgICBlbHNlCi0gCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCi1AQCAtMTA2LDcgKzEwNiw3IEBAIGVzYWMKLSAKLSAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCi0gaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgotLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSsgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSBmaQotIAotICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGUzYWJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDAxMGYwOWYyOTYzZWRlMjRlODUxMzRlNWZhYjJmYTYyN2E5YWZhMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzM2XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KLQotKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKLXVzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKLWRpcmVjdG9yeS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLWluZGV4IDYwODY3YjkzZDBlLi4zZmM5ZmNhNWI3YiAxMDA3NTUKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1AQCAtMTMwNzEsNyArMTMwNzEsNyBAQCBlc2FjCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQotIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1pbmRleCA3Y2ZjZTI4YWI2OS4uNmNkNTE1ZWUxYTQgMTAwNjQ0Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotQEAgLTI1MCw3ICsyNTAsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQotIAotICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5Ci0gI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCi0tRkM9IiRHRk9SVFJBTiIKLSsjRkM9IiRHRk9SVFJBTiIKLSBBQ19QUk9HX0ZDKGdmb3J0cmFuKQotIAotICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFmMGEwMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA0NWU5Y2QzOWQ5YzYyNDU0ZDQ2YjllOTQ3M2EwYzEwMzRjZWNhMTVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8zNl0gY3BwOiBob25vciBzeXNyb290LgotCi1DdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKLXByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KLXJhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcwotcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KLQotVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgotCi1UaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKLS1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCi0KLVtZT0NUTyAjMjA3NF0KLQotUlAgMjAxMi8wNC8xMwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCi0gZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1pbmRleCBjNmU0MmVkYTI4My4uZTFkZGYwNjY0NjcgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCi0rKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1AQCAtNjYsNSArNjYsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjKystY3BwLW91dHB1dCIsCi0gICAgICAgIiV7IUU6JXshTToleyFNTToiCi0tICAgICAgIiAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMiIKLSsgICAgICAiICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyIgotICAgICAgICIgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA3ZGE5YzVkNDU3Yi4uNGU3YzQ1YjI2OGMgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9Ci0gCQkJCQkgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19fSIsIDAsIDAsIDB9LAotICAgeyIuaSIsICJAY3BwLW91dHB1dCIsIDAsIDAsIDB9LAotICAgeyJAY3BwLW91dHB1dCIsCi0tICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLSsgICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotICAgeyIucyIsICJAYXNzZW1ibGVyIiwgMCwgMCwgMH0sCi0gICB7IkBhc3NlbWJsZXIiLAotICAgICIleyFNOiV7IU1NOiV7IUU6JXshUzphcyAlKGFzbV9kZWJ1ZykgJShhc21fb3B0aW9ucykgJWkgJUEgfX19fSIsIDAsIDAsIDB9LAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzBjNmQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gMWZmNDEwOGQ3MDdiMzRlMzk5ZTlkYzQxOGFkMWVjYzQyZjcyNjc2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIzOjA4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMzZdIE1JUFM2NDogRGVmYXVsdCB0byBONjQgQUJJCi0KLU1JUFM2NCBkZWZhdWx0cyB0byBuMzIgQUJJLCB0aGlzIHBhdGNoIG1ha2VzIGl0Ci1zbyB0aGF0IGl0IGRlZmF1bHRzIHRvIE42NCBBQkkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCi0tLS0KLSBnY2MvY29uZmlnLmdjYyB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYwotaW5kZXggZGRkM2I4ZjRkOWQuLmZkZmMwYmQzZTgyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5nY2MKLSsrKyBiL2djYy9jb25maWcuZ2NjCi1AQCAtMjI4MiwyOSArMjI4MiwyOSBAQCBtaXBzKi0qLWxpbnV4KikJCQkJIyBMaW51eCBNSVBTLCBlaXRoZXIgZW5kaWFuLgotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHMzMgotIAkJCTs7Ci0gCQltaXBzNjRlbC1zdC1saW51eC1nbnUpCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBtaXBzL3N0LmgiCi0gCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBtaXBzL3Qtc3QiCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NG9jdGVvbiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBNSVBTX0NQVV9TVFJJTkdfREVGQVVMVD1cXFwib2N0ZW9uXFxcIiIKLSAJCQl0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19TT0ZUX0ZMT0FUX0FCSQotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyNiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjYKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwc2lzYTY0cjIqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHIyCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NCotKi1saW51eCogfCBtaXBzaXNhNjQqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCWVzYWMKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZmYjI0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotRnJvbSA3MmZjMzk3NWJjZDcyMGIyZjgwNDBmYTg3Y2QyM2QzZGI0YzU5NzVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLSByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgotCi1UaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycwotVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYwotQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKLVNILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCi0KLVJlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCi0gZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWcvcmlzY3YvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNSArKysrKy0tLS0tLS0tLS0KLSBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQotIDEyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLWluZGV4IDgyNDg2MWJlZmVjLi42YWZhY2NlMzI5MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLUBAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBFWFRSQV9TUEVDUyBcCi0geyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IDY2ZWMwZWEzOTgwLi5lNGFkZTJlMmFiMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1AQCAtNjUsOCArNjUsOCBAQAotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgYW5kIFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSS4gICovCi0gCi0gI3VuZGVmICBHTElCQ19EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAiL2xpYi9sZC1saW51eC5zby4zIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFybWhmLnNvLjMiCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi1pbmRleCA5YTM2MGRlZmQyMS4uOThmNmU5NjBiNjQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLUBAIC02MCw3ICs2MCw3IEBACi0gCi0gI2RlZmluZSBMSUJHQ0NfU1BFQyAiJXttZmxvYXQtYWJpPXNvZnQqOi1sZmxvYXR9IC1sZ2NjIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNkZWZpbmUgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAgIiV7aCp9IFwKLSAgICAle3N0YXRpYzotQnN0YXRpY30gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLWluZGV4IDlhNmUyZDk5ODk2Li4zMWVmYmI3MzAxNiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIwLDcgKzIwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1pbmRleCBjMDgyMjFjNDIxMC4uZGJiNDc0ZDc5MmIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1AQCAtMjcsOSArMjcsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9ONjQgImVsZl94ODZfNjQiCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAiZWxmMzJfeDg2XzY0IgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDg2LTY0LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDMyLnNvLjIiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggYzNjNGEyMTllNjcuLjRiMDVkOGU5M2QxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC05NCwxMCArOTQsMTAgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHRhcmdldCB1c2luZyB0aGVtLCBvcgotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgYW5kIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgZm9yIHRhcmdldHMKLSAgICBzdXBwb3J0aW5nIGJvdGggMzItYml0IGFuZCA2NC1iaXQgY29tcGlsYXRpb24uICAqLwotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGliL2xkeDMyLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZHgzMi11Q2xpYmMuc28uMCIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSMzIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0ICIvc3lzdGVtL2Jpbi9saW5rZXI2NCIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvbGludXguaCBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCi1pbmRleCA2Zjc5YWM5YzAxYS4uMjVkZTk2Zjk1NjEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLUBAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCi1pbmRleCA1OGRkMThiODlmMy4uMTEyYmE5Y2Q3NjQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAotQEAgLTIyLDcgKzIyLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICAgR05VX1VTRVJfVEFSR0VUX09TX0NQUF9CVUlMVElOUygpOwkJCQlcCi0gICB9IHdoaWxlICgwKQotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKLSAKLSAjZGVmaW5lIE1VU0xfQUJJX1NVRkZJWCBcCi0gICAiJXttYWJpPWlscDMyOi1zZn0iIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDk5NDZkM2ZlZDk0Li40NWE5YTdjYWU1OSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDIzLDI0ICs0MjMsMTkgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgotLQotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAotLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgotICNlbHNlCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCi0tIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCi0gI2VuZGlmCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIvbGliL2xkLW11c2wtcG93ZXJwYyIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGMiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKLS0gICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotKyAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotIAotICN1bmRlZiAgREVGQVVMVF9BU01fRU5ESUFOCi0gI2lmIChUQVJHRVRfREVGQVVMVCAmIE1BU0tfTElUVExFX0VORElBTikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLWluZGV4IGM5ODk3YjdhY2E1Li44MmYyNzUzMTljYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1AQCAtNjQsNyArNjQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgIi9saWIvbGQtbXVzbC1zaCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FIE1VU0xfRFlOQU1JQ19MSU5LRVJfRlAgXAotICAgIiV7bWZkcGljOi1mZHBpY30uc28uMSIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVgKLSAjZGVmaW5lIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYICIle21mZHBpYzpfZmQ7Ol9saW51eH0iCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1pbmRleCAwODQ3NmYxZDk0ZC4uODA0NDBlNzEyYWQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotQEAgLTg0LDcgKzg0LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKLSAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZwotICAgIGRvbmUuICAqLwotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiAgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi1pbmRleCA3ODlkMWRmNGJkNS4uYjkyMGM2ODBmYjEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2lmZGVmIFNQQVJDX0JJX0FSQ0gKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNTM5NzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDJjYjIyN2NkODA2OWM3MzI0MjI4NmY2NDE4M2ZiMjAzZjhkMjYxOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNjozNyArMDQwMAotU3ViamVjdDogW1BBVENIIDEyLzM2XSBnY2M6IEZpeCBhcmd1bWVudCBsaXN0IHRvbyBsb25nIGVycm9yLgotCi1UaGVyZSB3b3VsZCBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiB0aGUKLWJ1aWxkIGRpcmVjdG9yeSBpcyBsb25nZXIgdGhhbiAyMDAsIHRoaXMgaXMgY2F1c2VkIGJ5OgotCi1oZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgCi0KLVRoZSBQTFVHSU5fSEVBREVSUyBpcyB0b28gbG9uZyBiZWZvcmUgc29ydCwgc28gdGhlICJlY2hvIiBjYW4ndCBoYW5kbGUKLWl0LCB1c2UgdGhlICQoc29ydCBsaXN0KSBvZiBHTlUgbWFrZSB3aGljaCBjYW4gaGFuZGxlIHRoZSB0b28gbG9uZyBsaXN0Ci13b3VsZCBmaXggdGhlIHByb2JsZW0sIHRoZSBoZWFkZXIgd291bGQgYmUgc2hvcnQgZW5vdWdoIGFmdGVyIHNvcnRlZC4KLVRoZSAidHIgJyAnICdcMDEyJyIgd2FzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBzcGFjZSB0byAiXG4iLCB0aGUKLSQoc29ydCBsaXN0KSBkb2Vzbid0IG5lZWQgdGhpcy4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9NYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggNDFmMGY1OTJmZjQuLjAwNjRhMjgyNDg4IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC0zNTM3LDcgKzM1MzcsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEzLURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjFhNjNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotRnJvbSBhZWE1ZmZhOWQ3MDRmNGViOGZhOTMzNjY4ODRkM2MyNmExZGJlYzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8zNl0gRGlzYWJsZSBzZHQuCi0KLVdlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KLUl0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCi1zZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKLWJ1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgotCi1SUCAyMDEyLzgvNwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1EaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCBlM2JjZjhhYmU5YS4uMWYxZDIyY2E2NjYgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjkzMzIsMTIgKzI5MzMyLDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggMmViYzM3N2E3NGQuLmRkYzg1MTk3NTg4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTU5OTUsMTUgKzU5OTUsMTUgQEAgZmkKLSBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKLSAKLSAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCi0tR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0taGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0tZmkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSsjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotKyNoYXZlX3N5c19zZHRfaD1ubwotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0rIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0rI2ZpCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotIAotICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgotICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotaW5kZXggNWFjZjc5Y2JhNTQuLjE5MWJjNmM1Nzk2IDEwMDc1NQotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotQEAgLTIyMDg1LDExICsyMjA4NSwxMSBAQCBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLSBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0gCi0tICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotKyMgIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCi0gCi0tJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotIAotLSAgZmkKLSsjICBmaQotICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY1Ci0gJGFzX2VjaG8gIiRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLWluZGV4IGRhZGQ4ODI3YjQ5Li42YjFjZTk5NTdkMyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLUBAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCi0gR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCi0gR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAotIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKLS1HTElCQ1hYX0NIRUNLX1NEVF9ICi0rI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKLSAKLSAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KLSBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTQtbGlidG9vbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTQtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E4ZjNhZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE0LWxpYnRvb2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDZjNGQwYzMwM2ViYzNlMWM3ZTU1NGQ1NGE4YmI4MDdkNzdlZDQxZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDE0LzM2XSBsaWJ0b29sCi0KLWxpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKLXdoZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KLQotVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCi1Bcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAotZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KLQotZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAotdG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCi0KLVJQIDIwMTIvOC8yNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGx0bWFpbi5zaCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggNzlmOWJhODlhZjUuLjhlMjIyZjdjMTZiIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKLSAKLSAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCi0rICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgotKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCi0rCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKyAgICAgIGZpCi0gCi0gICAgICAgb2xkbGlicz0KLSAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNmFlMjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBjNTY2MmZmMWU3ZGVhMjI5MWI5Y2I3YTgzY2ZmZjMwMDFkZDMxZjUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzA6MzIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8zNl0gZ2NjOiBhcm12NDogcGFzcyBmaXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJLgotCi1UaGUgTElOS19TUEVDIGZvciBsaW51eCBnZXRzIG92ZXJ3cml0dGVuIGJ5IGxpbnV4LWVhYmkuaCB3aGljaAotbWVhbnMgdGhlIHZhbHVlIG9mIFRBUkdFVF9GSVhfVjRCWF9TUEVDIGdldHMgbG9zdCBhbmQgYXMgYSByZXN1bHQKLXRoZSBvcHRpb24gaXMgbm90IHBhc3NlZCB0byBsaW5rZXIgd2hlbiBjaG9zaW5nIG1hcmNoPWFybXY0Ci1UaGlzIHBhdGNoIHJlZGVmaW5lcyB0aGlzIGluIGxpbnV4LWVhYmkuaCBhbmQgcmVpbnNlcnRzIGl0Ci1mb3IgZWFiaSBkZWZhdWx0aW5nIHRvb2xjaGFpbnMuCi0KLVdlIG1pZ2h0IHdhbnQgdG8gc2VuZCBpdCB1cHN0cmVhbS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggfCA2ICsrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotaW5kZXggZTRhZGUyZTJhYjAuLjEwODg2M2Y2OWQyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC05MSwxMCArOTEsMTQgQEAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAotICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCi0gCi0rLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCi0rI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0rI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSsKLSAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bwotICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KLSAjdW5kZWYgIExJTktfU1BFQwotLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCi0rI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCi0gICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCi0gCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCi0gCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMGNhZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gZTNiNjkzYjlkNmRjOTQ5NmY3Yzk4YTEzYjI4MTgyZDIzMDg0MjE1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMzOjA0ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMzZdIFVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mCi0gdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci0KLVVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotc28gdGhhdCB0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKLWdjYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggMWYxZDIyY2E2NjYuLjkxMWRlMmNmMDE3IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMzIxLDEwICsxMjMyMSwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTEyMzM1LDYgKzEyMzQ1LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGRkYzg1MTk3NTg4Li5iNDEzYWU5YmYyNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xOTQ4LDEwICsxOTQ4LDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTk2Miw2ICsxOTcyLDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMWQxZDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAwOWQ5Y2NjMWQ0NzEwMjA5NDlkMTI4NWE1Mjc2ZjE3NTA0ZmQ2MGRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8zNl0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKLSBob3N0IHBhdGgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA4ZTIyMmY3YzE2Yi4uMGE5M2I0ZTVjM2IgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKLSsJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgotKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgZGlyPSIkbGliZGlyIgotIAkgICAgYWJzZGlyPSIkbGliZGlyIgotIAkgIGZpCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE4LWV4cG9ydC1DUFAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE4LWV4cG9ydC1DUFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNzI4ZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOC1leHBvcnQtQ1BQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA5ODczMzhjZDg0N2E3MjNkZTUzM2JiMzE3ZTQ1MmE2MGIxZTUyMTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8zNl0gZXhwb3J0IENQUAotCi1UaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KLWJ1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAotaW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgotCi1jb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKLWNvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQotY29uZmlndXJlOjM2NjY6ICQ/ID0gMAotY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KLWNvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgotY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYwotY29uZmlndXJlOjM4NzY6ICQ/ID0gMAotCi1Ob3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKLXVzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCi1oZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZwotaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKLWZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgotCi1UaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAotZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQotdGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KLWF2b2lkIHRoZSBwcm9ibGVtLgotCi1SUCAyMi8wOC8yMDEzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDY0ZTA5MWJhNzFkLi4yNTU4MjJlM2YyNyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCi0gCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNmOWU5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSBkMjdiYTQ5ZTJlNWM2MDhjNDMyNjU0NjJkNjgzMTM2M2NjN2Y1NjViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8zNl0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKLQotVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAotZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCi1idWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAotc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQotZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCi1waWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYwotY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKwotIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNjE4LDYgKzYxOCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKLSAKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KLSBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotK2xpYnN1YmRpcl90YXJnZXQgPSAkKHRhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgZXhlY3V0YWJsZXMKLSBsaWJleGVjc3ViZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggYWxsIHBsdWdpbiByZXNvdXJjZXMgYXJlIGluc3RhbGxlZAotQEAgLTI4NjYsNiArMjg2Nyw3IEBAIENGTEFHUy1pbnRsLm8gKz0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWQKLSAKLSBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKLSAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCi0rICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCi0gICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLSAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0rI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSsgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLSAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGY5NmQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gODNiY2Q0Y2M0N2FlNjM5NzFjODg4YzExN2FiZDAwZGZkNTA2NTMyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDExOjE3OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMzZdIGdjYyA0LjgrIHdvbid0IGJ1aWxkIHdpdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKLQotc2luY2UgdGhlICouUHBvIGZpbGVzIGRvbid0IGdldCBjcmVhdGVkIHVubGVzcyAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIGlzIHRydWUuCi0KLVRoaXMgcGF0Y2ggZW5zdXJlcyB3ZSBvbmx5IHVzZSB0aG9zZSBjb21waWxlciBvcHRpb25zIHdoZW4gaXRzIGVuYWJsZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLShQcm9ibGVtIHdhcyBhbHJlYWR5IHJlcG9ydGVkIHVwc3RyZWFtLCBhdHRhY2hlZCB0aGlzIHBhdGNoIHRoZXJlCi1odHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU1OTMwKQotCi1SUAotMjAxMi8wOS8yMgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliYXRvbWljL01ha2VmaWxlLmFtIHwgMyArKy0KLSBsaWJhdG9taWMvTWFrZWZpbGUuaW4gfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmFtIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1pbmRleCBjMWI3YzczOTM0YS4uZWY0M2Q2MmMwN2EgMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotQEAgLTEwMSw3ICsxMDEsOCBAQCBQQVRfUwkJPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGCT0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQJPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLSAKLS1NX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTCQk9Ci0gTV9TSVpFCQk9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMJCT0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRQkJPSAkKFBBVF9CQVNFKV9uLmMKLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuaW4gYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLWluZGV4IDI5MzI0ZTNlMGFjLi5kNWNkYjQyNTllZiAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1AQCAtNDE0LDcgKzQxNCw4IEBAIFBBVF9OID0gJCh3b3JkIDIsJChQQVRfU1BMSVQpKQotIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0tTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMgPQotIE1fU0laRSA9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMgPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFID0gJChQQVRfQkFTRSlfbi5jCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNmNhMjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA2NjdjYzhkNDNlOGZiNGFjMDk2NTRlZTQwOGRhNDgyZjk2YjA5NTgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDIxLzM2XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCi0gJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCi0KLWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggMGE5M2I0ZTVjM2IuLjZkZTZlZDJmOWEwIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpCi0gCSAgICBlbHNlCi0gCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCi0rCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgotIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCi0tCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KLSsKLSAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCWNhc2UgJGxpYmRpciBpbgotIAkJICBbXFwvXSopCi0tCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YjkxNTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSAyNzljNGRlNDhlM2ZkNjFlMmYyNjg3ODdlZDNmMWQ2OWVkOTIyNGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8zNl0gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZwotIGJhc2VfbGliZGlyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCA1ZThiMzRkZWQwMy4uN2U2MjhiZjY2MWUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpZm5kZWYgR0NDX0FBUkNINjRfTElOVVhfSAotICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODExMzA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSAxMjc3ZDEyMDU4MzM0MDg3NDQzODI4ZGZkNTdkNDRlM2IxZGZjYzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8zNl0gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggN2U2MjhiZjY2MWUuLjE3MTdjYmU1NDcxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTI0LDcgKzI0LDcgQEAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiAgQVNBTl9DQzFfU1BFQwotICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOThiMDk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA0YTA0ODdhZDc1YWNjZDc4MGRkMTU1YWE1OTA4NmNjNGIxMWNmYzQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDUgSnVsIDIwMTUgMjA6MjU6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8zNl0gbGliY2MxOiBmaXggbGliY2MxJ3MgaW5zdGFsbCBwYXRoIGFuZCBycGF0aAotCi0qIEluc3RhbGwgbGliY2MxLnNvIGFuZCBsaWJjYzFwbHVnaW4uc28gaW50bwotICAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pLCBhcyB3aGF0IHdlCi0gIGhhZCBkb25lIHRvIGx0by1wbHVnaW4uCi0qIEZpeCBiYWQgUlBBVEggaXVzc3VlOgotICBnY2MtNS4yLjA6IHBhY2thZ2UgZ2NjLXBsdWdpbnMgY29udGFpbnMgYmFkIFJQQVRIIC9wYXRodC90by90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvbGliNjQvLi4vbGliNjQgaW4gZmlsZQotIC9wYXRoL3RvL2djYy81LjIuMC1yMC9wYWNrYWdlcy1zcGxpdC9nY2MtcGx1Z2lucy91c3IvbGliNjQvZ2NjL3g4Nl82NC1wb2t5LWxpbnV4LzUuMi4wL3BsdWdpbi9saWJjYzFwbHVnaW4uc28uMC4wLjAKLSBbcnBhdGhzXQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliY2MxL01ha2VmaWxlLmFtIHwgNCArKy0tCi0gbGliY2MxL01ha2VmaWxlLmluIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuYW0gYi9saWJjYzEvTWFrZWZpbGUuYW0KLWluZGV4IDcyYzZhZWFkNDc1Li40MmE4Nzc0MGIzMSAxMDA2NDQKLS0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQotKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCi1AQCAtMzcsOCArMzcsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLSAKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSAKLSBpZiBFTkFCTEVfUExVR0lOCi0gcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5pbiBiL2xpYmNjMS9NYWtlZmlsZS5pbgotaW5kZXggNzEwNGI2NDkwMjYuLjIxMDNjNDc3NDY4IDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KLUBAIC0zOTMsOCArMzkzLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAotIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKLSAKLSBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCi0tcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgotLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKLStjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCi0rcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBjYzFsaWJfTFRMSUJSQVJJRVMgPSBsaWJjYzEubGEKLSBzaGFyZWRfc291cmNlID0gY2FsbGJhY2tzLmNjIGNhbGxiYWNrcy5oaCBjb25uZWN0aW9uLmNjIGNvbm5lY3Rpb24uaGggXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTYyYmMxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1Gcm9tIGExODNjODJlYTJhZjkzNGE4ZDMwMDU1YTc5MWRjMWQ4MGM5MDY3YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMzZdIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKLQotQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKLXdoZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgotYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCi0KLVNhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCi1uYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cwotbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAotaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0Ci1iYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCi0KLUluIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6Ci0KLWEpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCi0gICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgotYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KLSAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTUvNy8yOAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIGdjYy9jcHBkZWZhdWx0LmggfCAgMyArKy0KLSBnY2MvZ2NjLmMgICAgICAgIHwgMjAgKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggOTgwZTJiZDQ3YTcuLjM5YjYwNTllZmRjIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTM1LDYgKzM1LDMwIEBACi0gIyB1bmRlZiBDUk9TU19JTkNMVURFX0RJUgotICNlbmRpZgotIAotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKLSsjZW5kaWYKLSsKLSBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUwotID0gSU5DTFVERV9ERUZBVUxUUzsKLUBAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gPSB7Ci0gI2lmZGVmIEdQTFVTUExVU19JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgZ2VuZXJpYyBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyB0YXJnZXQtZGVwZW5kZW50IGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgYmFja3dhcmQgYW5kIGRlcHJlY2F0ZWQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotLSAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLS0gICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVIsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMCB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAyIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0tICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZml4aW5jbHVkZXMuICAqLwotLSAgICB7IEZJWEVEX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwKLSsgICAgeyBGSVhFRF9JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsCi0gICAgICAgLyogQSBtdWx0aWxpYiBzdWZmaXggbmVlZHMgYWRkaW5nIGlmIGRpZmZlcmVudCBtdWx0aWxpYnMgdXNlCi0gCSBkaWZmZXJlbnQgaGVhZGVycy4gICovCi0gI2lmZGVmIFNZU1JPT1RfSEVBREVSU19TVUZGSVhfU1BFQwotQEAgLTg1LDE2ICsxMDksMTYgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2VuZGlmCi0gI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0gICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KLSAgIH07Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuaCBiL2djYy9jcHBkZWZhdWx0LmgKLWluZGV4IGUyZDk2ZjFlNzYwLi4yOWZhNWY4MTVjOCAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmgKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmgKLUBAIC0zMyw3ICszMyw4IEBACi0gCi0gc3RydWN0IGRlZmF1bHRfaW5jbHVkZQotIHsKLS0gIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsgIGNvbnN0IGNoYXIgKmZuYW1lOyAgICAgLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCi0rCi0gICBjb25zdCBjaGFyICpjb25zdCBjb21wb25lbnQ7CS8qIFRoZSBjb21wb25lbnQgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5Ci0gCQkJCSAgIChzZWUgdXBkYXRlX3BhdGggaW4gcHJlZml4LmMpICovCi0gICBjb25zdCBjaGFyIGNwbHVzcGx1czsJCS8qIE9ubHkgbG9vayBoZXJlIGlmIHdlJ3JlIGNvbXBpbGluZyBDKysuICAqLwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMWEzNzA0YjI3NjMuLmRiMGUyOTM0MDM4IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNTMsNiArMjUzLDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOwotICNlbmRpZgotIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKLSAKLStzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOwotKwotIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAKLSBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOwotQEAgLTUyNyw2ICs1MjksNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCi0gICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KLSAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCi0gICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCi0rICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4Ci0gICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgotQEAgLTE0OTMsMTAgKzE0OTYsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKLSAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAotICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSAKLSAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZwotICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcwotQEAgLTE1MDQsOSArMTUwNyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOwotIAotIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCi1AQCAtNTkxNSw2ICs1OTE4LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKLSAJICAgICAgfQotIAkgICAgYnJlYWs7Ci0gCi0rICAgICAgICAgIGNhc2UgJ3InOgotKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKLSsJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOwotKyAgICAgICAgICAgIGJyZWFrOwotKwotIAkgIGNhc2UgJ1MnOgotIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKLSAJICAgIGlmICh2YWx1ZSAhPSAwKQotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGUyMDZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjYtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGRhYjRkYjE0ZTMxOWYzMjM5YTJiNGM3ZDFmYmYyOTcxOTM2ZTI3YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQxOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMzZdIFNlYXJjaCB0YXJnZXQgc3lzcm9vdCBnY2MgdmVyc2lvbiBzcGVjaWZpYyBkaXJzIHdpdGgKLSBtdWx0aWxpYi4KLQotV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCi08c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCi13aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUKLWNvZGUgYmVsb3cpLiA8dGFyZ2V0LXN5cz4gaXMgJ21hY2hpbmUnIGluIGdjYydzIHRlcm1pbm9sb2d5LiBXZSB1c2UKLXRoZXNlIGRpcmVjdG9yaWVzIHNvIHRoYXQgbXVsdGlwbGUgZ2NjIHZlcnNpb25zIGNvdWxkIGluIHRoZW9yeQotY28tZXhpc3Qgb24gdGFyZ2V0LgotCi1XZSBvbmx5IHdhbnQgdG8gYnVpbGQgb25lIGdjYy1jcm9zcy1jYW5hZGlhbiBwZXIgYXJjaCBhbmQgaGF2ZSB0aGlzIHdvcmsKLWZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKLTx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuCi1taXBzNjQtcG9sa21sbGliMzItbGludXgKLWlzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KLQotVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliCi1pczoKLQotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vbGliMzIvCi08c3lzcm9vdD4vdXNyL2xpYjMyLwotCi13aGljaCBtZWFucyB0aGF0IHRoZSBsaWIzMiBjcnRiZWdpbi5vIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBsaWI2NCBvbmVzCi13aWxsIG5vdCB3aGljaCBsZWFkcyB0byBjb21waWxlciBmYWlsdXJlcy4KLQotVGhpcyBwYXRjaCBpbmplY3RzIGEgbXVsdGlsaWIgdmVyc2lvbiBvZiB0aGF0IHBhdGggZmlyc3Qgc28gdGhlIGxpYjY0Ci1iaW5hcmllcyBjYW4gYmUgZm91bmQgZmlyc3QuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIHNlYXJjaCBwYXRoIGJlY29tZXM6Ci0KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotUlAgMjAxNS83LzMxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvZ2NjLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGRiMGUyOTM0MDM4Li4xYzIxZDFiMDhlYiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjYxMCw3ICsyNjEwLDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAgICAgICBpZiAocGF0aCA9PSBOVUxMKQotIAl7Ci0gCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7Ci0tCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0rCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0gCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7Ci0gCX0KLSAKLUBAIC0yNjIyLDYgKzI2MjIsMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLwotIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCi0gCSAgICB7Ci0rCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7Ci0rCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47Ci0rCi0rCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47Ci0rCQkgICAgfQotKwkgICAgICAgICAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47Ci0rCQkgICAgfQotKwotKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCi0rCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCi0rCSAgICAgICAgICAgIHsKLSsJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKLSsJCSAgICAgICAgICBicmVhazsKLSsJICAgICAgICAgICAgfQotKwkgICAgICAgIH0KLSsKLSAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotIAkgICAgICBpZiAocmV0KQotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkODllOGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1Gcm9tIDhlODRiYjA5ZDJiN2E2MDQ4N2EzMGU0MzhiYjEwOWYzMWMyYzI1NGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjcvMzZdIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCi0KLVdoZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCi1DRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKLUNYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgotV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCi10aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgotCi1UaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKLUNQUCwgYW5kIEdNUElOQy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKLSBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKwotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBnY2MvY29uZmlndXJlLmFjIHwgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDI1NTgyMmUzZjI3Li45ZGMwZGZmMDQ3NCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCi1AQCAtMTcxLDYgKzE3Miw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg4LDYgKzE5Miw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03NzUsNiArNzgwLDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCA0MWNhZTU4YTI2Ny4uZDNmNmI3OWFjZGMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS50cGwKLSsrKyBiL01ha2VmaWxlLnRwbAotQEAgLTE1NCw2ICsxNTQsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0gCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKLSAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAotQEAgLTE3Myw2ICsxNzQsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAotICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgotIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCi0gCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgotIAotICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgotQEAgLTE5MCw2ICsxOTQsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKLSBIT1NUX0VYUE9SVFMgPSBcCi0gCSQoQkFTRV9FWFBPUlRTKSBcCi0gCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCAyMTQ3Mjc0NWMyYy4uOGM5M2YwM2ZmZGMgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTgwNSw3ICs4MDUsNyBAQCBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAotIEJVSUxEX05PX1BJRV9GTEFHID0gQEJVSUxEX05PX1BJRV9GTEFHQAotIEJVSUxEX0xERkxBR1MgKz0gJChCVUlMRF9OT19QSUVfRkxBRykKLSBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAotLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCi0rCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCi0gCi0gIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgotIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA5MTFkZTJjZjAxNy4uMzI1YWNlMzRjZGYgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE5NjUsNyArMTE5NjUsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBiNDEzYWU5YmYyNS4uNzJhNmM5NTEyMWIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTc0Myw3ICsxNzQzLDcgQEAgZWxzZQotIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCi0gCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCi0tCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAotKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0gCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKLSAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCi0gCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGQ5MmEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDU2NDdmNzczZTI4YjUyOGE2NzgwMGVmMDZjYTQ0NzMwZjlmNWRjN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjgvMzZdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLWluZGV4IDY5ODczNGFkZDM1Li5lZWVlNjBlY2ZlYSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi1AQCAtMzAsNiArMzAsNyBAQAotICNkZWZpbmUgQ1BQX1NQRUMgIiV7cG9zaXg6LURfUE9TSVhfU09VUkNFfSAle3B0aHJlYWQ6LURfUkVFTlRSQU5UfSIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LW5pb3MyLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICAiL2xpYi9sZC1tdXNsLW5pb3MyLnNvLjEiCi0gCi0gI3VuZGVmIExJTktfU1BFQwotICNkZWZpbmUgTElOS19TUEVDIExJTktfU1BFQ19FTkRJQU4gXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTllNWEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gNDc0MDQzY2E3YTA2NGNhN2IwYTMyMzA4YTBlZDZmN2M1NDZmMTdiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjkvMzZdIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cwotCi13aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bwotbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCi10aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCi1saWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCi1UQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECi0gd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scwotYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQotd2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKLWJ1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKwotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggNGIwNWQ4ZTkzZDEuLjBjYTExN2UyZWQ0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC0xOTUsNiArMTk1LDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAotICAgfQotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKwotICNlbmRpZgotIAotICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1pbmRleCBmZmNlYjMyYmY2NS4uYzgyY2IyYWQwNWIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1AQCAtOTQsNiArOTQsMTYgQEAKLSAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAleyFzdGF0aWMtcGllOiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCA0NWE5YTdjYWU1OS4uZDFlODhhNDBlODIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTQ1Niw2ICs0NTYsMTYgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAJCQkJCSAgICIgLW0gZWxmNjRwcGMiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMzMiBMSU5LX09TX0xJTlVYX0VNVUwzMiAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAleyFzdGF0aWMtcGllOiBcCi0gICAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhlYWI1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotRnJvbSA0NzQ2N2YzYWIwZmIyZjJmY2VkZTgxMDYwZmU4YmIzMzlkMDkwOWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+Ci1EYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDAwOjU0OjA1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTJdIGxkYmwxMjggY29uZmlnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDEzICsrKysrKysrKysrKysKLSBnY2MvY29uZmlndXJlLmFjIHwgMTYgKysrKysrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA2MTIxZTE2MzI1OS4uMDdmZjg1OTdkNDggMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjkzMDksNiArMjkzMDksMTUgQEAgaWYgdGVzdCAiJHt3aXRoX2xvbmdfZG91YmxlXzEyOCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICB3aXRodmFsPSR3aXRoX2xvbmdfZG91YmxlXzEyODsgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiCi0gZWxzZQotIAotKyAgICAgIGNhc2UgIiR0YXJnZXQiIGluCi0rCXMzOTAqLSotbGludXgtbXVzbCopCi0rCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwotKwkgIDs7Ci0rCXBvd2VycGMqLSotbGludXgtbXVzbCopCi0rCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCi0rCSAgOzsKLSsJKikKLSsKLSBpZiB0ZXN0ICRnbGliY192ZXJzaW9uX21ham9yIC1ndCAyIFwKLSAgIHx8ICggdGVzdCAkZ2xpYmNfdmVyc2lvbl9tYWpvciAtZXEgMiAmJiB0ZXN0ICRnbGliY192ZXJzaW9uX21pbm9yIC1nZSA0ICk7IHRoZW4gOgotICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwotQEAgLTI5MzIwLDYgKzI5MzI5LDEwIEBAIGVsc2UKLSAgICAgICAmJiBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCi0gCi0gZmkKLSsKLSsJICA7OwotKyAgICAgIGVzYWMKLSsKLSBmaQotIAotICAgICA7OwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBiMDY2Y2M2MDllMS4uNmMxNWVkODk4YzAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNTk3MSwxMyArNTk3MSwyNSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICBBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCi0gICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKLSAJCSAgICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAotLSAgICAgIGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKLSsgICAgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsIFsKLSsgICAgICBjYXNlICIkdGFyZ2V0IiBpbgotKwlzMzkwKi0qLWxpbnV4LW11c2wqKQotKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKLSsJICA7OwotKwlwb3dlcnBjKi0qLWxpbnV4LW11c2wqKQotKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD1ubwotKwkgIDs7Ci0rCSopXQotICAgICAgIFtHQ0NfR0xJQkNfVkVSU0lPTl9HVEVfSUZFTFNFKFsyXSwgWzRdLCBbZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllc10sIFsKLSAgICAgICBbZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCi0gICAgICAgZ3JlcCAnXlsgCV0qI1sgCV0qZGVmaW5lWyAJXVsgCV0qX19MT05HX0RPVUJMRV9NQVRIX09QVElPTkFMJyBcCi0gICAgICAgICAkdGFyZ2V0X2hlYWRlcl9kaXIvYml0cy93b3Jkc2l6ZS5oID4gL2Rldi9udWxsIDI+JjEgXAotICAgICAgICYmIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKLS0gICAgICBdXSldKQotKyAgICAgIF1dKV0KLSsgICAgICBbCi0rCSAgOzsKLSsgICAgICBlc2FjCi0rICAgICAgXSkKLSAgICAgOzsKLSBlc2FjCi0gaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfbGRibDEyOCA9IHh5ZXM7IHRoZW4KLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjE0MWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDI2NmRjYzc4ZTRkOWQzOGRlMjgwOTExODk3N2Q5N2RjOTI3MGNmMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzEvMzZdIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1pbmRleCAwOTliZjIzZTYyZi4uNDM2YjI3N2E3OWYgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKLUBAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAotIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKLSAKLSBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCi0tCSQoU0hMSUJfTERGTEFHUykgXAotKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAotIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKLSAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCi0gCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRlMDE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gOTk3NWI2ZWQzNTcwYmJmN2M3ZDJkODJmNGQ1ZjczM2QyNGNjYWNmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgotRGF0ZTogU2F0LCAyNCBPY3QgMjAxNSAyMDowOTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIIDMyLzM2XSBsaWJnY2NfczogVXNlIGFsaWFzIGZvciBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbnN0ZWFkIG9mCi0gc3ltdmVyCi0KLUFkYXB0ZXIgZnJvbQotCi1odHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTUtMDUvbXNnMDA4OTkuaHRtbAotCi1UaGlzIGZpeCB3YXMgZGViYXRlZCBidXQgaGFzbnQgYmVlbiBhcHBsaWVkIGdjYyB1cHN0cmVhbSBzaW5jZQotdGhleSBleHBlY3QgbXVzbCB0byBzdXBwb3J0ICdAJyBpbiBzeW1ib2wgdmVyc2lvbmluZyB3aGljaCBpcwotYSBzdW4vZ251IHZlcnNpb25pbmcgZXh0ZW50aW9uLiBUaGlzIHBhdGNoIGhvd2V2ZXIgYXZvaWRzIHRoZQotbmVlZCBmb3IgdGhlICdAJyBzeW1ib2xzIGF0IGFsbAotCi1saWJnY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9jcHVpbmZvLmMgKF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsKTogQWRkLgotCShfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAsIF9fY3B1X21vZGVsQEdDQ180LjguMCk6IFJlbW92ZS4KLQotCSogY29uZmlnL2kzODYvdC1saW51eCAoSE9TVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRFVTRV9FTEZfU1lNVkVSLgotCi1nY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBNYWtlIF9fYnVpbHRpbl9jcHVfaW5pdAotCWNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW5zdGVhZCBvZiBfX2NwdV9pbmRpY2F0b3JfaW5pdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCAyYjM3Mjk2ZTUzNy4uZGQzODBkZGJhODggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMzY2NTgsMTAgKzM2NjU4LDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAotICAgICB7Ci0gICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgotICAgICAgIHsKLS0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KLSsJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLwotIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOwotICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAotLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKLSsJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7Ci0gCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCi0gCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOwotICAgICAgIH0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotaW5kZXggZDZjYjJkZTYyNjUuLmNlMDRlZjc4MjA1IDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotQEAgLTUwNCw3ICs1MDQsNyBAQCBfX2NwdV9pbmRpY2F0b3JfaW5pdCAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0jaWYgZGVmaW5lZCBTSEFSRUQgJiYgZGVmaW5lZCBVU0VfRUxGX1NZTVZFUgotLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X2luZGljYXRvcl9pbml0LCBfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAiKTsKLS1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9tb2RlbCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wIik7Ci0rI2lmbmRlZiBTSEFSRUQKLStpbnQgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgKHZvaWQpCi0rICBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIpKSk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggYi9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAotaW5kZXggODUwNmE2MzU3OTAuLjU2NDI5NmY3ODhlIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1AQCAtMyw1ICszLDUgQEAKLSAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4Ci0gU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgotIAotLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSICQoQ0VUX0ZMQUdTKQotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAkKENFVF9GTEFHUykKLSBDUlRTVFVGRl9UX0NGTEFHUyArPSAkKENFVF9GTEFHUykKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5OWFjNDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDM5ZTJmNjFkMjYyZjlmNmM3YTkxMDY4OTk4ZGVhODA3OTFlZjY2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEZlYiAyMDE3IDEyOjU2OjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzMvMzZdIHN5bmMgZ2NjIHN0ZGRlZi5oIHdpdGggbXVzbAotCi1tdXNsIGRlZmluZXMgcHRyZGlmZl90IHNpemVfdCBhbmQgd2NoYXJfdAotc28gZG9udCBkZWZpbmUgdGhlbSBoZXJlIGlmIG11c2wgaXMgZGVmaW5pbmluZyB0aGVtCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmggYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLWluZGV4IGRhNjkyZTFjMDFhLi45YTAwYzI2MWFkYiAxMDA2NDQKLS0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAotKysrIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi1AQCAtMTI4LDYgKzEyOCw3IEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2lmbmRlZiBfX19pbnRfcHRyZGlmZl90X2gKLSAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCi0gI2lmbmRlZiBfUFRSRElGRl9UX0RFQ0xBUkVEIC8qIERyYWdvbkZseSAqLwotKyNpZm5kZWYgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfUFRSRElGRl9UCi0gI2RlZmluZSBfVF9QVFJESUZGXwotICNkZWZpbmUgX1RfUFRSRElGRgotQEAgLTEzNywxMCArMTM4LDEyIEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2gKLSAjZGVmaW5lIF9HQ0NfUFRSRElGRl9UCi0gI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVECi0rI2RlZmluZSBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjaWZuZGVmIF9fUFRSRElGRl9UWVBFX18KLSAjZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKLSAjZW5kaWYKLSB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotKyNlbmRpZiAvKiBfX0RFRklORURfcHRyZGlmZl90ICovCi0gI2VuZGlmIC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KLSAjZW5kaWYgLyogX0dDQ19QVFJESUZGX1QgKi8KLSAjZW5kaWYgLyogX19faW50X3B0cmRpZmZfdF9oICovCi1AQCAtMTc4LDYgKzE4MSw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2lmbmRlZiBfR0NDX1NJWkVfVAotICNpZm5kZWYgX1NJWkVUXwotICNpZm5kZWYgX19zaXplX3QKLSsjaWZuZGVmIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNkZWZpbmUgX19zaXplX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1NJWkVfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfU0laRV9UCi1AQCAtMTk0LDYgKzE5OCw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2RlZmluZSBfX19pbnRfc2l6ZV90X2gKLSAjZGVmaW5lIF9HQ0NfU0laRV9UCi0gI2RlZmluZSBfU0laRVRfCi0rI2RlZmluZSBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjaWYgZGVmaW5lZCAoX19GcmVlQlNEX18pIFwKLSAgIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAotICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIFwKLUBAIC0yMjgsNiArMjMzLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2VuZGlmIC8qIF9TSVpFX1QgKi8KLSAjZW5kaWYgLyogX19TSVpFX1RfXyAqLwotICNlbmRpZiAvKiBfX3NpemVfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF9zaXplX3QgKi8KLSAjdW5kZWYJX19uZWVkX3NpemVfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3NpemVfdC4gICovCi0gCi1AQCAtMjU3LDYgKzI2Myw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNpZm5kZWYgX19faW50X3djaGFyX3RfaAotICNpZm5kZWYgX19JTlRfV0NIQVJfVF9ICi0gI2lmbmRlZiBfR0NDX1dDSEFSX1QKLSsjaWZuZGVmIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9fd2NoYXJfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fV0NIQVJfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfV0NIQVJfVAotQEAgLTI3Miw2ICsyNzksNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjZGVmaW5lIF9fSU5UX1dDSEFSX1RfSAotICNkZWZpbmUgX0dDQ19XQ0hBUl9UCi0gI2RlZmluZSBfV0NIQVJfVF9ERUNMQVJFRAotKyNkZWZpbmUgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLwotIAotIC8qIE9uIEJTRC8zODYgMS4xLCBhdCBsZWFzdCwgbWFjaGluZS9hbnNpLmggZGVmaW5lcyBfQlNEX1dDSEFSX1RfCi0gICAgaW5zdGVhZCBvZiBfV0NIQVJfVF8sIGFuZCBfQlNEX1JVTkVfVF8gKHdoaWNoLCB1bmxpa2UgdGhlIG90aGVyCi1AQCAtMzM3LDYgKzM0NSw3IEBAIHR5cGVkZWYgX19XQ0hBUl9UWVBFX18gd2NoYXJfdDsKLSAjZW5kaWYKLSAjZW5kaWYgLyogX19XQ0hBUl9UX18gKi8KLSAjZW5kaWYgLyogX193Y2hhcl90X18gKi8KLSsjZW5kaWYgLyogX19ERUZJTkVEX3djaGFyX3QgbXVzbCAqLwotICN1bmRlZglfX25lZWRfd2NoYXJfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3djaGFyX3QuICAqLwotIAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmEzYzlmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gYWFhODk2YTU3YjAwMDRhNzRjMWQ0NzRlNzRiMjFmNDExNDdhNjVjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDE5IE1hciAyMDE4IDIyOjMxOjIwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzQvMzZdIGZpeCBzZWdtZW50YXRpb24gZmF1bHQgaW4gcHJlY29tcGlsZWQgaGVhZGVyIGdlbmVyYXRpb24KLQotUHJldmVudCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGljaCBvY2N1cnMgd2hlbiB1c2luZyBpbmNvcnJlY3QKLXN0cnVjdHVyZSB0cnlpbmcgdG8gYWNjZXNzIG5hbWUgb2Ygc29tZSBuYW1lZCBvcGVyYXRvcnMsIHN1Y2ggYXMKLUNQUF9OT1QsIENQUF9BTkQgZXRjLiAidG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nIiBjYW5ub3QgYmUgdXNlZCBpbgotdGhvc2UgY2FzZXMsIGFzIGlzIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYXQgYWxsLgotCi1bWU9DVE8gIzExNzM4XQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJjcHAvbGV4LmMgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCi1pbmRleCBlZWRmY2JiMzE0Ni4uMTUwNDBhMWIxZjAgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvbGV4LmMKLSsrKyBiL2xpYmNwcC9sZXguYwotQEAgLTMyODAsMTEgKzMyODAsMjcgQEAgY3BwX3NwZWxsX3Rva2VuIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgY3BwX3Rva2VuICp0b2tlbiwKLSAgICAgc3BlbGxfaWRlbnQ6Ci0gICAgIGNhc2UgU1BFTExfSURFTlQ6Ci0gICAgICAgaWYgKGZvcnN0cmluZykKLS0JewotLQkgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCi0tCQkgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKLS0JICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7Ci0tCX0KLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCi0rICAgICAgICAgICAgICAgICAgICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7Ci0rICAgICAgICAgICAgICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIC8qIE5BTUVEX09QLCBjYW5ub3QgdXNlIG5vZGUuc3BlbGxpbmcgKi8KLSsgICAgICAgICAgaWYgKHRva2VuLT5mbGFncyAmIE5BTUVEX09QKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGNwcF9uYW1lZF9vcGVyYXRvcjJuYW1lICh0b2tlbi0+dHlwZSk7Ci0rICAgICAgICAgICAgICBpZiAoc3RyKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzdHIpOwotKyAgICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHN0ciwgbGVuKTsKLSsgICAgICAgICAgICAgICAgICBidWZmZXIgKz0gbGVuOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0gICAgICAgZWxzZQotIAlidWZmZXIgPSBfY3BwX3NwZWxsX2lkZW50X3VjbnMgKGJ1ZmZlciwgdG9rZW4tPnZhbC5ub2RlLm5vZGUpOwotICAgICAgIGJyZWFrOwotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDcwY2JmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi1Gcm9tIDBmOWQ0NDljNzM5ZGYwMzc4MmNlOWQyOWY2YjY4ZDlhZjk3NmE2MDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSQUdIVU5BVEggTE9MVVIgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KLURhdGU6IFdlZCwgNiBEZWMgMjAxNyAyMjo1MjoyNiAtMDgwMAotU3ViamVjdDogW1BBVENIIDM1LzM2XSBGaXggZm9yIHRlc3RzdWl0ZSBmYWlsdXJlCi0KLTIwMTctMTEtMTYgIFJhZ2h1bmF0aCBMb2x1ciAgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KLQotCSogZ2NjLmRnL3ByNTYyNzUuYzogSWYgU1NFIGlzIGRpc2FibGVkLCBlbnN1cmUgdGhhdAotCSItbWZwbWF0aCIgaXMgbm90IHNldCB0byB1c2UgU1NFLiBTZXQgIi1tZnBtYXRoPTM4NyIuCi0JKiBnY2MuZGcvcHI2ODMwNi5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjgzMDYtMi5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjgzMDYtMy5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjk2MzQuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvaXNhLTE0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmM6IExpa2V3aXNlCi0KLUlmIC1XYWxsLCAtV2Vycm9yIGFyZSB1c2VkIGR1cmluZyBjb21waWxhdGlvbiB2YXJpb3VzIHRlc3QgY2FzZXMgZmFpbAotdG8gY29tcGlsZS4KLQotSWYgU1NFIGlzIGRpc2FibGVkLCBiZSBzdXJlIHRvIC1tZnBtYXRoPTM4NyB0byByZXNvbHZlIHRoaXMuCi0KLVRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCi1UaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgICAgICAgICAgfCAxICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jICAgICAgfCAyICstCi0gMTcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKLWluZGV4IGI5MDFiYjJiMTk5Li5hNGY2Yzk1ZTFhMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KLSAKLSB0eXBlZGVmIGxvbmcgbG9uZyB2MnR3IF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMiAqIHNpemVvZiAobG9uZyBsb25nKSkpKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCi1pbmRleCA0NjcyZWJlNzk4Ny4uMmEzNjhjNDg0YjYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAKLSBzdHJ1Y3QgewotICAgICBpbnQgdHpfbWludXRlc3dlc3Q7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYwotaW5kZXggZjVhOGMxMDJjZjguLmRmMzM5MGM2NGMyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tYWx0aXZlYyAtbW5vLXZzeCIgeyB0YXJnZXQgcG93ZXJwYyotKi0qIH0gfSAqLwotIAotIGV4dGVybiB2b2lkIGZuMigpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYwotaW5kZXggNTRlNWI0MGYyMjEuLjA4MTMzODllMmMxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAKLSBlbnVtIHBvd2VycGNfcG1jX3R5cGUgeyBQUENfUE1DX0lCTSB9OwotIHN0cnVjdCB7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCi1pbmRleCA2MGE1NjE0OTQ2My4uYmNjMjNmOWNjZDYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLWRjZSAtZnNjaGVkdWxlLWluc25zIC1mbm8tdHJlZS12cnAgLWZjb21wYXJlLWRlYnVnIC1Xbm8tcHNhYmkiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBzY2hlZHVsaW5nIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotaW5kZXggNjlmZGU1N2JmMDYuLjdmMWYxYzAzZWRmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYWJpPXN5c3YiIHsgdGFyZ2V0ICotKi1taW5ndyogfSB9ICovCi0gCi0gZG91YmxlIGZvbyh2b2lkKSB7IHJldHVybiAwOyB9CS8qIHsgZGctZXJyb3IgIlNTRSBkaXNhYmxlZCIgfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYwotaW5kZXggZWE4OTZiN2ViZmQuLmJmMTU1NjliODI2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKLUBAIC0xLDYgKzEsNyBAQAotIC8qIFRlc3Qgd2hldGhlciBhbGwgb2YgdGhlIDY0LWJpdCBmdW5jdGlvbiBzcGVjaWZpYyBvcHRpb25zIGFyZSBhY2NlcHRlZAotICAgIHdpdGhvdXQgZXJyb3IuICAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWZwbWF0aD0zODciIH0gKi8KLSAKLSAjaW5jbHVkZSAiZnVuY3NwZWMtNTYuaW5jIgotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYwotaW5kZXggODU2MWEzYzI2ZDYuLjYzNzdmODE0NjQ1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODciIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCi1pbmRleCA1ZDQ5ZTZlNzdmZS4uMWRlMmRiOTJiZGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gcnVuIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYwotaW5kZXggZmExNzY5YjYyZmIuLmY3OWZiMTI3MjZmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHN0cnVjdCBBCi0geyAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCi1pbmRleCAyZTg5ZmY3ZDgxZC4uNjMzOWJmNmI3MzYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBSIHRhcmdldC81MzQyNSAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KLSAKLSB0eXBlZGVmIGRvdWJsZSBfX3YyZGYgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYwotaW5kZXggNjFmNjI4M2RiZTkuLjJjNWE1NWYwYWMzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCi0gCi0gdHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKLWluZGV4IDIzMzY2ZDA5MDlkLi45ODEwZTNhYmI3NiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBtYXliZV94MzIgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmciIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwotIHR5cGVkZWYgdWludDMyX3QgRWxmMzJfV29yZDsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKLWluZGV4IDk2MDA2YjNlMzM4Li40Mjg3ZTQ1MzhiZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTk2NDQgKi8KLSAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBscDY0IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSAvKiBUaGlzIHRlc3QgdXNlcyBfX2J1aWx0aW5fdHJhcCAoKSBpbnN0ZWFkIG9mIGUuZy4gYWJvcnQsCi0gICAgYmVjYXVzZSBkdWUgdG8gLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyBpdCBzaG91bGQgbm90IGNhbGwKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKLWluZGV4IGJmYjhjNDcwM2ViLi5lZDA0Y2YxODFmMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHZvaWQgZm9vICgpCi0gewotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKLWluZGV4IDRlMTEyYzg4ZDA3Li5iY2ZiMzk2YTY4ZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgcnRsLW9wdGltaXphdGlvbi83MDQ2NyAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB2b2lkIGZvbyAodW5zaWduZWQgbG9uZyBsb25nICopOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi1pbmRleCA2Y2RhMTUzNDMxMS4uMjZlMzdmNWI4YmEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gICovCi0tLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UiIH0gICovCi0rLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UgLW1mcG1hdGg9Mzg3IiB9ICAqLwotICNkZWZpbmUgdmVjdG9yKGVsY291bnQsIHR5cGUpICBcCi0gX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoKGVsY291bnQpKnNpemVvZih0eXBlKSkpKSB0eXBlCi0gCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGJjZDk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA3MWU5OWMyYjU4YTllYjAwY2RkNjVhMDRhZWI2ZmI3ODIyN2UzMjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBKdW4gMjAxOCAxMjoxMDoyMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDM2LzM2XSBSZS1pbnRyb2R1Y2Ugc3BlIGNvbW1hbmRsaW5lIG9wdGlvbnMKLQotVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQgd2Uga2VlcCBhY2NlcHRpbmcKLXNwZSBvcHRpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU1BFIHBvcnQgaXMgcmVtb3ZlZCBmcm9tIHJzNjAwIHBvcnRdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IHwgMTIgKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci1pbmRleCBmNGI1YzkxZTExZi4uNjk4NjkzNTBmY2UgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci1AQCAtMzQ1LDYgKzM0NSwxOCBAQCBtZGVidWc9Ci0gVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZAotIC1tZGVidWc9CUVuYWJsZSBkZWJ1ZyBvdXRwdXQuCi0gCi0rbXNwZQotK1RhcmdldCBWYXIocnM2MDAwX3NwZSkgU2F2ZQotK0dlbmVyYXRlIFNQRSBTSU1EIGluc3RydWN0aW9ucyBvbiBFNTAwLgotKwotK21hYmk9c3BlCi0rVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSkgU2F2ZQotK1VzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgotKwotK21hYmk9bm8tc3BlCi0rVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSwgMCkKLStEbyBub3QgdXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCi0rCi0gbWFiaT1hbHRpdmVjCi0gVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfYWx0aXZlY19hYmkpIFNhdmUKLSBVc2UgdGhlIEFsdGlWZWMgQUJJIGV4dGVuc2lvbnMuCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNDI1MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE0MjUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWVhMzQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE0MjUwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA1MTdiMjExYTNkNzgzNjZjYThkNTkyOWY1ODBlOGNhNzJmZDJjMDA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcmd1ZW50aCA8cmd1ZW50aEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUaHUsIDI1IEp1bCAyMDE5IDEwOjQ2OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIDIwMTktMDctMjUgIFJpY2hhcmQgQmllbmVyICA8cmd1ZW50aGVyQHN1c2UuZGU+Ci0KLQlQUiBsdG8vOTA5MjQKLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOS0wNy0xMiAgUmVuIEtpbXVyYSAgPHJreDEyMDlkZXZAZ21haWwuY29tPgotCi0JKiBzaW1wbGUtb2JqZWN0LWVsZi5jIChzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCk6IENoZWNrIHplcm8gdmFsdWUKLQlzaHN0cm5keC4KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtOS1icmFuY2hAMjczNzkzIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RlczogPCAgOS4yCi1DVkU6IENWRS0yMDE5LTE0MjUwCi1Ecm9wcGVkIGNoYW5nZWxvZwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxBa3VzdHJlQG12aXN0YS5jb20+Ci0KLS0tLQotIGxpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIHwgOCArKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2NjLTkuMi4wL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTkuMi4wLm9yaWcvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLSsrKyBnY2MtOS4yLjAvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLUBAIC01NTcsNiArNTU3LDE0IEBAIHNpbXBsZV9vYmplY3RfZWxmX21hdGNoICh1bnNpZ25lZCBjaGFyIGgKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotKyAgaWYgKGVvci0+c2hzdHJuZHggPT0gMCkKLSsgICAgewotKyAgICAgICplcnJtc2cgPSAiaW52YWxpZCBFTEYgc2hzdHJuZHggPT0gMCI7Ci0rICAgICAgKmVyciA9IDA7Ci0rICAgICAgWERFTEVURSAoZW9yKTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotICAgcmV0dXJuICh2b2lkICopIGVvcjsKLSB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18xLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI3ZmQ0Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLUZyb20gOGM2MTU2NjExNmQyMzA2M2ZmNTk3MjcxODg0ZjhlMDBkOTRhYjFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHNlZ2hlciA8c2VnaGVyQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IEZyaSwgMzAgQXVnIDIwMTkgMTM6NDg6NDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gCUJhY2twb3J0IGZyb20gdHJ1bmsgCTIwMTktMDgtMjIgIFNlZ2hlciBCb2Vzc2Vua29vbAotICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLQkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAodW5zcGVjKTogRGVsZXRlIFVOU1BFQ19EQVJOLCBVTlNQRUNfREFSTl8zMiwKLQlVTlNQRUNfREFSTl9SQVcsIFVOU1BFQ19DTVBSQiwgVU5TUEVDX0NNUFJCMiwgVU5TUEVDX0NNUEVRQjsgbW92ZSB0by4uLgotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKHVuc3BlYyk6IC4uLiBoZXJlLgotCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChkYXJuXzMyLCBkYXJuX3JhdywgZGFybiwgY21wcmIsCi0JKmNtcHJiX2ludGVybmFsLCBzZXRiX3NpZ25lZCwgc2V0Yl91bnNpZ25lZCwgY21wcmIyLCAqY21wcmIyX2ludGVybmFsLAotCWNtcGVxYiwgKmNtcGVxYl9pbnRlcm5hbCk6IERlbGV0ZSwgbW92ZSB0by4uLgotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRhcm5fMzIsIGRhcm5fcmF3LCBkYXJuLCBjbXByYiwKLQkqY21wcmJfaW50ZXJuYWwsIHNldGJfc2lnbmVkLCBzZXRiX3Vuc2lnbmVkLCBjbXByYjIsICpjbXByYjJfaW50ZXJuYWwsCi0JY21wZXFiLCAqY21wZXFiX2ludGVybmFsKTogLi4uIGhlcmUuCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3NTE3MCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOS0xNTg0NyBwMQotQWZmZWN0cyA8PSA5LjIuMAotRHJvcHBlZCBDaGFuZ2Vsb2cgY2hhbmdlcwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgfCAyMjMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZCAgfCAyMjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIzOSBpbnNlcnRpb25zKCspLCAyMjMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvYWx0aXZlYy5tZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy05LjIuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQKLSsrKyBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvYWx0aXZlYy5tZAotQEAgLTgwLDkgKzgwLDYgQEAKLSAgICBVTlNQRUNfVlVQS0hQWAotICAgIFVOU1BFQ19WVVBLTFBYCi0gICAgVU5TUEVDX0NPTlZFUlRfNEYzMl84STE2Ci0tICAgVU5TUEVDX0RBUk4KLS0gICBVTlNQRUNfREFSTl8zMgotLSAgIFVOU1BFQ19EQVJOX1JBVwotICAgIFVOU1BFQ19EU1QKLSAgICBVTlNQRUNfRFNUVAotICAgIFVOU1BFQ19EU1RTVAotQEAgLTE2MSw5ICsxNTgsNiBAQAotICAgIFVOU1BFQ19CQ0RBREQKLSAgICBVTlNQRUNfQkNEU1VCCi0gICAgVU5TUEVDX0JDRF9PVkVSRkxPVwotLSAgIFVOU1BFQ19DTVBSQgotLSAgIFVOU1BFQ19DTVBSQjIKLS0gICBVTlNQRUNfQ01QRVFCCi0gICAgVU5TUEVDX1ZSTE1JCi0gICAgVU5TUEVDX1ZSTE5NCi0gXSkKLUBAIC00MTAxLDIyMyArNDA5NSw2IEBACi0gICAiYmNkPGJjZF9hZGRfc3ViPi4gJTAsJTEsJTIsJTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotIAotLShkZWZpbmVfaW5zbiAiZGFybl8zMiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOlNJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl8zMikpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgImRhcm4gJTAsMCIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotLQotLShkZWZpbmVfaW5zbiAiZGFybl9yYXciCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotLSAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fUkFXKSldCi0tICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotLSAgImRhcm4gJTAsMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotLQotLShkZWZpbmVfaW5zbiAiZGFybiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTikpXQotLSAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLS0gICJkYXJuICUwLDEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLS0KLS07OyBUZXN0IGJ5dGUgd2l0aGluIHJhbmdlLgotLTs7Ci0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIHh4Onh4OmhpOmxvLgotLTs7Ci0tOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIGxvIDw9IHZ2IGFuZAotLTs7IHZ2IDw9IGhpLiAgT3RoZXJ3aXNlLCBzZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuCi0tOzsKLS07OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLS07OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IG9wZXJhdGVzIG9uCi0tOzsgU0ktbW9kZSBvcGVyYW5kcyBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLS07OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLS07OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLS07OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotLShkZWZpbmVfZXhwYW5kICJjbXByYiIKLS0gIFsoc2V0IChtYXRjaF9kdXAgMykKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUFJCKSkKLS0gICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLS0JKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotLQkJCSAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgKGNvbnN0X2ludCAtMSkKLS0JCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotLQkJCQkJICAgKGNvbnN0X2ludCAwKSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tewotLSAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLS19KQotLQotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDpoaTpsby4KLS07OwotLTs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotLTs7IGxvIDw9IHZ2IGFuZCB2diA8PSBoaS4gIE90aGVyd2lzZSwgc2V0IHRoZSBHVCBiaXQgdG8gMC4gIFRoZSBvdGhlcgotLTs7IDMgYml0cyBvZiB0aGUgdGFyZ2V0IENSIHJlZ2lzdGVyIGFyZSBhbGwgc2V0IHRvIDAuCi0tKGRlZmluZV9pbnNuICIqY21wcmJfaW50ZXJuYWwiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUFJCKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tICAiY21wcmIgJTAsMCwlMSwlMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotLQotLTs7IFNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gLTEgaWYgdGhlIExUIGJpdCAoMHg4KSBvZiBjb25kaXRpb24KLS07OyByZWdpc3RlciBvcGVyYW5kIDEgaXMgb24uICBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gMQotLTs7IGlmIHRoZSBHVCBiaXQgKDB4NCkgb2YgY29uZGl0aW9uIHJlZ2lzdGVyIG9wZXJhbmQgMSBpcyBvbi4KLS07OyBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgdG8gMC4gIE5vdGUgdGhhdCB0aGUgcmVzdWx0IHN0b3JlZCBpbnRvCi0tOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIGlzIG5vbi16ZXJvIGlmZiBlaXRoZXIgdGhlIExUIG9yIEdUIGJpdHMgYXJlIG9uCi0tOzsgd2l0aGluIGNvbmRpdGlvbiByZWdpc3RlciBvcGVyYW5kIDEuCi0tKGRlZmluZV9pbnNuICJzZXRiX3NpZ25lZCIKLS0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCSAoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfb3BlcmFuZDpDQyAxICJjY19yZWdfb3BlcmFuZCIgInkiKQotLQkJCSAgICAgIChjb25zdF9pbnQgMCkpCi0tCQkJICAoY29uc3RfaW50IC0xKQotLQkJCSAgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAxKQotLQkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0tCQkJCQkoY29uc3RfaW50IDEpCi0tCQkJCQkoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgInNldGIgJTAsJTEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLS0oZGVmaW5lX2luc24gInNldGJfdW5zaWduZWQiCi0tICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkgKGlmX3RoZW5fZWxzZTpTSSAobHR1IChtYXRjaF9vcGVyYW5kOkNDVU5TIDEgImNjX3JlZ19vcGVyYW5kIiAieSIpCi0tCQkJICAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgIChjb25zdF9pbnQgLTEpCi0tCQkJICAoaWZfdGhlbl9lbHNlIChndHUgKG1hdGNoX2R1cCAxKQotLQkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0tCQkJCQkoY29uc3RfaW50IDEpCi0tCQkJCQkoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgInNldGIgJTAsJTEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLS07OyBUZXN0IGJ5dGUgd2l0aGluIHR3byByYW5nZXMuCi0tOzsKLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLS07OwotLTs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiAobG9fMSA8PSB2diBhbmQKLS07OyB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuICBPdGhlcndpc2UsIHNldCByZWdpc3RlcgotLTs7IG9wZXJhbmQgMCB0byAwLgotLTs7Ci0tOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0tOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBvcGVyYXRlcyBvbgotLTs7IFNJLW1vZGUgb3BlcmFuZHMgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0tOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0tOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0tOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLS0oZGVmaW5lX2V4cGFuZCAiY21wcmIyIgotLSAgWyhzZXQgKG1hdGNoX2R1cCAzKQotLQkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0tCSBVTlNQRUNfQ01QUkIyKSkKLS0gICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLS0JKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotLQkJCSAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgKGNvbnN0X2ludCAtMSkKLS0JCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotLQkJCQkJICAgKGNvbnN0X2ludCAwKSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tewotLSAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLS19KQotLQotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZXMgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLS07OwotLTs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotLTs7IChsb18xIDw9IHZ2IGFuZCB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuCi0tOzsgT3RoZXJ3aXNlLCBzZXQgdGhlIEdUIGJpdCB0byAwLiAgVGhlIG90aGVyIDMgYml0cyBvZiB0aGUgdGFyZ2V0Ci0tOzsgQ1IgcmVnaXN0ZXIgYXJlIGFsbCBzZXQgdG8gMC4KLS0oZGVmaW5lX2luc24gIipjbXByYjJfaW50ZXJuYWwiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUFJCMikpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgImNtcHJiICUwLDEsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLS07OyBUZXN0IGJ5dGUgbWVtYmVyc2hpcCB3aXRoaW4gc2V0IG9mIDggYnl0ZXMuCi0tOzsKLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgc2V0IHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGUwOmUxOmUyOmUzOmU0OmU1OmU2OmU3LgotLTs7Ci0tOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIHZ2IGVxdWFscyBvbmUKLS07OyBvZiB0aGUgdmFsdWVzIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBvciBlNy4gIE90aGVyd2lzZSwgc2V0Ci0tOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuICBOb3RlIHRoYXQgdGhlIDggYnl0ZSB2YWx1ZXMgaGVsZCB3aXRoaW4KLS07OyBvcGVyYW5kIDIgbmVlZCBub3QgYmUgdW5pcXVlLgotLTs7Ci0tOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0tOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdGhhdCBvcGVyYW5kcwotLTs7IDAgYW5kIDEgaGF2ZSBtb2RlIFNJIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotLTs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotLTs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotLTs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0tKGRlZmluZV9leHBhbmQgImNtcGVxYiIKLS0gIFsoc2V0IChtYXRjaF9kdXAgMykKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUEVRQikpCi0tICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLS0JCQkgICAgIChjb25zdF9pbnQgMCkpCi0tCQkJIChjb25zdF9pbnQgLTEpCi0tCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLS0JCQkJCSAgIChjb25zdF9pbnQgMCkpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLS17Ci0tICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotLX0pCi0tCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHNldCBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBlMDplMTplMjplMzplNDplNTplNjplNy4KLS07OwotLTs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZiB2dgotLTs7IGVxdWFscyBvbmUgb2YgdGhlIHZhbHVlcyBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgb3IgZTcuICBPdGhlcndpc2UsCi0tOzsgc2V0IHRoZSBHVCBiaXQgdG8gemVyby4gIFRoZSBvdGhlciAzIGJpdHMgb2YgdGhlIHRhcmdldCBDUiByZWdpc3RlcgotLTs7IGFyZSBhbGwgc2V0IHRvIDAuCi0tKGRlZmluZV9pbnNuICIqY21wZXFiX2ludGVybmFsIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0tCSAodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgIFVOU1BFQ19DTVBFUUIpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0tICAiY21wZXFiICUwLCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0tCi0gKGRlZmluZV9leHBhbmQgImJjZDxiY2RfYWRkX3N1Yj5fPGNvZGU+IgotICAgWyhwYXJhbGxlbCBbKHNldCAocmVnOkNDRlAgQ1I2X1JFR05PKQotIAkJICAgKGNvbXBhcmU6Q0NGUAotSW5kZXg6IGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtOS4yLjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLSsrKyBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi1AQCAtMTM3LDYgKzEzNywxMiBAQAotICAgIFVOU1BFQ19MU1EKLSAgICBVTlNQRUNfRlVTSU9OX0dQUgotICAgIFVOU1BFQ19TVEFDS19DSEVDSwotKyAgIFVOU1BFQ19EQVJOCi0rICAgVU5TUEVDX0RBUk5fMzIKLSsgICBVTlNQRUNfREFSTl9SQVcKLSsgICBVTlNQRUNfQ01QUkIKLSsgICBVTlNQRUNfQ01QUkIyCi0rICAgVU5TUEVDX0NNUEVRQgotICAgIFVOU1BFQ19BRERfUk9VTkRfVE9fT0RECi0gICAgVU5TUEVDX1NVQl9ST1VORF9UT19PREQKLSAgICBVTlNQRUNfTVVMX1JPVU5EX1RPX09ERAotQEAgLTE0MzIyLDcgKzE0MzI4LDIyNSBAQAotICAgICJ4c2NtcHVxcCAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKQotICAgIChzZXRfYXR0ciAic2l6ZSIgIjEyOCIpXSkKLSsMCi0rOzsgTWlzY2VsbGFuZW91cyBJU0EgMy4wIChwb3dlcjkpIGluc3RydWN0aW9ucwotKwotKyhkZWZpbmVfaW5zbiAiZGFybl8zMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0rICAgICAgICAodW5zcGVjOlNJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl8zMikpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgImRhcm4gJTAsMCIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotKwotKyhkZWZpbmVfaW5zbiAiZGFybl9yYXciCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotKyAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fUkFXKSldCi0rICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotKyAgImRhcm4gJTAsMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotKwotKyhkZWZpbmVfaW5zbiAiZGFybiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0rICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTikpXQotKyAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSsgICJkYXJuICUwLDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLSsKLSs7OyBUZXN0IGJ5dGUgd2l0aGluIHJhbmdlLgotKzs7Ci0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIHh4Onh4OmhpOmxvLgotKzs7Ci0rOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIGxvIDw9IHZ2IGFuZAotKzs7IHZ2IDw9IGhpLiAgT3RoZXJ3aXNlLCBzZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuCi0rOzsKLSs7OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLSs7OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IG9wZXJhdGVzIG9uCi0rOzsgU0ktbW9kZSBvcGVyYW5kcyBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLSs7OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLSs7OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLSs7OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotKyhkZWZpbmVfZXhwYW5kICJjbXByYiIKLSsgIFsoc2V0IChtYXRjaF9kdXAgMykKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUFJCKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotKwkJCSAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgKGNvbnN0X2ludCAtMSkKLSsJCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotKwkJCQkJICAgKGNvbnN0X2ludCAwKSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rewotKyAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLSt9KQotKwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDpoaTpsby4KLSs7OwotKzs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotKzs7IGxvIDw9IHZ2IGFuZCB2diA8PSBoaS4gIE90aGVyd2lzZSwgc2V0IHRoZSBHVCBiaXQgdG8gMC4gIFRoZSBvdGhlcgotKzs7IDMgYml0cyBvZiB0aGUgdGFyZ2V0IENSIHJlZ2lzdGVyIGFyZSBhbGwgc2V0IHRvIDAuCi0rKGRlZmluZV9pbnNuICIqY21wcmJfaW50ZXJuYWwiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUFJCKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rICAiY21wcmIgJTAsMCwlMSwlMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotKwotKzs7IFNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gLTEgaWYgdGhlIExUIGJpdCAoMHg4KSBvZiBjb25kaXRpb24KLSs7OyByZWdpc3RlciBvcGVyYW5kIDEgaXMgb24uICBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gMQotKzs7IGlmIHRoZSBHVCBiaXQgKDB4NCkgb2YgY29uZGl0aW9uIHJlZ2lzdGVyIG9wZXJhbmQgMSBpcyBvbi4KLSs7OyBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgdG8gMC4gIE5vdGUgdGhhdCB0aGUgcmVzdWx0IHN0b3JlZCBpbnRvCi0rOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIGlzIG5vbi16ZXJvIGlmZiBlaXRoZXIgdGhlIExUIG9yIEdUIGJpdHMgYXJlIG9uCi0rOzsgd2l0aGluIGNvbmRpdGlvbiByZWdpc3RlciBvcGVyYW5kIDEuCi0rKGRlZmluZV9pbnNuICJzZXRiX3NpZ25lZCIKLSsgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCSAoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfb3BlcmFuZDpDQyAxICJjY19yZWdfb3BlcmFuZCIgInkiKQotKwkJCSAgICAgIChjb25zdF9pbnQgMCkpCi0rCQkJICAoY29uc3RfaW50IC0xKQotKwkJCSAgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAxKQotKwkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0rCQkJCQkoY29uc3RfaW50IDEpCi0rCQkJCQkoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgInNldGIgJTAsJTEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSAKLSsoZGVmaW5lX2luc24gInNldGJfdW5zaWduZWQiCi0rICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkgKGlmX3RoZW5fZWxzZTpTSSAobHR1IChtYXRjaF9vcGVyYW5kOkNDVU5TIDEgImNjX3JlZ19vcGVyYW5kIiAieSIpCi0rCQkJICAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgIChjb25zdF9pbnQgLTEpCi0rCQkJICAoaWZfdGhlbl9lbHNlIChndHUgKG1hdGNoX2R1cCAxKQotKwkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0rCQkJCQkoY29uc3RfaW50IDEpCi0rCQkJCQkoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgInNldGIgJTAsJTEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSsKLSs7OyBUZXN0IGJ5dGUgd2l0aGluIHR3byByYW5nZXMuCi0rOzsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLSs7OwotKzs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiAobG9fMSA8PSB2diBhbmQKLSs7OyB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuICBPdGhlcndpc2UsIHNldCByZWdpc3RlcgotKzs7IG9wZXJhbmQgMCB0byAwLgotKzs7Ci0rOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0rOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBvcGVyYXRlcyBvbgotKzs7IFNJLW1vZGUgb3BlcmFuZHMgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0rOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0rOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0rOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLSsoZGVmaW5lX2V4cGFuZCAiY21wcmIyIgotKyAgWyhzZXQgKG1hdGNoX2R1cCAzKQotKwkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0rCSBVTlNQRUNfQ01QUkIyKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotKwkJCSAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgKGNvbnN0X2ludCAtMSkKLSsJCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotKwkJCQkJICAgKGNvbnN0X2ludCAwKSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rewotKyAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLSt9KQotKwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZXMgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLSs7OwotKzs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotKzs7IChsb18xIDw9IHZ2IGFuZCB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuCi0rOzsgT3RoZXJ3aXNlLCBzZXQgdGhlIEdUIGJpdCB0byAwLiAgVGhlIG90aGVyIDMgYml0cyBvZiB0aGUgdGFyZ2V0Ci0rOzsgQ1IgcmVnaXN0ZXIgYXJlIGFsbCBzZXQgdG8gMC4KLSsoZGVmaW5lX2luc24gIipjbXByYjJfaW50ZXJuYWwiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUFJCMikpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgImNtcHJiICUwLDEsJTEsJTIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSsKLSs7OyBUZXN0IGJ5dGUgbWVtYmVyc2hpcCB3aXRoaW4gc2V0IG9mIDggYnl0ZXMuCi0rOzsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgc2V0IHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGUwOmUxOmUyOmUzOmU0OmU1OmU2OmU3LgotKzs7Ci0rOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIHZ2IGVxdWFscyBvbmUKLSs7OyBvZiB0aGUgdmFsdWVzIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBvciBlNy4gIE90aGVyd2lzZSwgc2V0Ci0rOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuICBOb3RlIHRoYXQgdGhlIDggYnl0ZSB2YWx1ZXMgaGVsZCB3aXRoaW4KLSs7OyBvcGVyYW5kIDIgbmVlZCBub3QgYmUgdW5pcXVlLgotKzs7Ci0rOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0rOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdGhhdCBvcGVyYW5kcwotKzs7IDAgYW5kIDEgaGF2ZSBtb2RlIFNJIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotKzs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotKzs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotKzs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0rKGRlZmluZV9leHBhbmQgImNtcGVxYiIKLSsgIFsoc2V0IChtYXRjaF9kdXAgMykKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUEVRQikpCi0rICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLSsJCQkgICAgIChjb25zdF9pbnQgMCkpCi0rCQkJIChjb25zdF9pbnQgLTEpCi0rCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLSsJCQkJCSAgIChjb25zdF9pbnQgMCkpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSt7Ci0rICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotK30pCi0rCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHNldCBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBlMDplMTplMjplMzplNDplNTplNjplNy4KLSs7OwotKzs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZiB2dgotKzs7IGVxdWFscyBvbmUgb2YgdGhlIHZhbHVlcyBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgb3IgZTcuICBPdGhlcndpc2UsCi0rOzsgc2V0IHRoZSBHVCBiaXQgdG8gemVyby4gIFRoZSBvdGhlciAzIGJpdHMgb2YgdGhlIHRhcmdldCBDUiByZWdpc3RlcgotKzs7IGFyZSBhbGwgc2V0IHRvIDAuCi0rKGRlZmluZV9pbnNuICIqY21wZXFiX2ludGVybmFsIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0rCSAodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgIFVOU1BFQ19DTVBFUUIpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0rICAiY21wZXFiICUwLCUxLCUyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0gDAotIAotIChpbmNsdWRlICJzeW5jLm1kIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTdhODNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1Gcm9tIDg3YmM3ODRhN2NhM2E0MzE4MmY3MjcyMjQxNTk3YTUwZDc0OTEzNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBzZWdoZXIgPHNlZ2hlckAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBGcmksIDMwIEF1ZyAyMDE5IDEzOjUxOjI2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIAlCYWNrcG9ydCBmcm9tIHRydW5rIAkyMDE5LTA4LTIyICBTZWdoZXIgQm9lc3Nlbmtvb2wKLSAgPHNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi0JUFIgdGFyZ2V0LzkxNDgxCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAodW5zcGVjKTogRGVsZXRlIFVOU1BFQ19EQVJOLCBVTlNQRUNfREFSTl8zMiwKLQlhbmQgVU5TUEVDX0RBUk5fUkFXLgotCSh1bnNwZWN2KTogTmV3IGVudW1lcmF0b3IgdmFsdWVzIFVOU1BFQ1ZfREFSTiwgVU5TUEVDVl9EQVJOXzMyLCBhbmQKLQlVTlNQRUNWX0RBUk5fUkFXLgotCShkYXJuXzMyKTogVXNlIGFuIHVuc3BlY192b2xhdGlsZSwgYW5kIFVOU1BFQ1ZfREFSTl8zMi4KLQkoZGFybl9yYXcpOiBVc2UgYW4gdW5zcGVjX3ZvbGF0aWxlLCBhbmQgVU5TUEVDVl9EQVJOX1JBVy4KLQkoZGFybik6IFVzZSBhbiB1bnNwZWNfdm9sYXRpbGUsIGFuZCBVTlNQRUNWX0RBUk4uCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3NTE3NSAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOS0xNTg0NyBwMgotQWZmZWN0cyA8PSA5LjIuMAotRHJvcHBlZCBDaGFuZ2Vsb2cgY2hhbmdlcwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZCB8IDEyICsrKysrKy0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtOS4yLjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLSsrKyBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi1AQCAtMTM3LDkgKzEzNyw2IEBACi0gICAgVU5TUEVDX0xTUQotICAgIFVOU1BFQ19GVVNJT05fR1BSCi0gICAgVU5TUEVDX1NUQUNLX0NIRUNLCi0tICAgVU5TUEVDX0RBUk4KLS0gICBVTlNQRUNfREFSTl8zMgotLSAgIFVOU1BFQ19EQVJOX1JBVwotICAgIFVOU1BFQ19DTVBSQgotICAgIFVOU1BFQ19DTVBSQjIKLSAgICBVTlNQRUNfQ01QRVFCCi1AQCAtMTcwLDYgKzE2Nyw5IEBACi0gICAgVU5TUEVDVl9FSF9SUgkJOyBlaF9yZWdfcmVzdG9yZQotICAgIFVOU1BFQ1ZfSVNZTkMJCTsgaXN5bmMgaW5zdHJ1Y3Rpb24KLSAgICBVTlNQRUNWX01GVEIJCQk7IG1vdmUgZnJvbSB0aW1lIGJhc2UKLSsgICBVTlNQRUNWX0RBUk4JCQk7IGRhcm4gMSAoZGVsaXZlciBhIHJhbmRvbSBudW1iZXIpCi0rICAgVU5TUEVDVl9EQVJOXzMyCQk7IGRhcm4gMgotKyAgIFVOU1BFQ1ZfREFSTl9SQVcJCTsgZGFybiAwCi0gICAgVU5TUEVDVl9OTEdSCQkJOyBub24tbG9jYWwgZ290byByZWNlaXZlcgotICAgIFVOU1BFQ1ZfTUZGUwkJCTsgTW92ZSBmcm9tIEZQU0NSCi0gICAgVU5TUEVDVl9NRkZTTAkJOyBNb3ZlIGZyb20gRlBTQ1IgbGlnaHQgaW5zdHJ1Y3Rpb24gdmVyc2lvbgotQEAgLTE0MzMzLDIxICsxNDMzMywyMSBAQAotIAotIChkZWZpbmVfaW5zbiAiZGFybl8zMiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOlNJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl8zMikpXQotKyAgICAgICAgKHVuc3BlY192b2xhdGlsZTpTSSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDVl9EQVJOXzMyKSldCi0gICAiVEFSR0VUX1A5X01JU0MiCi0gICAiZGFybiAlMCwwIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0gCi0gKGRlZmluZV9pbnNuICJkYXJuX3JhdyIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl9SQVcpKV0KLSsgICAgICAgICh1bnNwZWNfdm9sYXRpbGU6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ1ZfREFSTl9SQVcpKV0KLSAgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0gICAiZGFybiAlMCwyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0gCi0gKGRlZmluZV9pbnNuICJkYXJuIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLS0gICAgICAgICh1bnNwZWM6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOKSldCi0rICAgICAgICAodW5zcGVjX3ZvbGF0aWxlOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNWX0RBUk4pKV0KLSAgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0gICAiZGFybiAlMCwxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3MTMwYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSBkYzRjOGRkOWRiZTcwNzQwZWM3YTY4NGIwZjM1NjIwMjQ5ZmIwMzZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogc2VnaGVyIDxzZWdoZXJAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogRnJpLCAzMCBBdWcgMjAxOSAxMzo1MzoxMSArMDAwMAotU3ViamVjdDogW1BBVENIXSAJQmFja3BvcnQgZnJvbSB0cnVuayAJMjAxOS0wOC0yMyAgU2VnaGVyIEJvZXNzZW5rb29sCi0gIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQlQUiB0YXJnZXQvOTE0ODEKLQkqIGdjYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYzogTmV3IHRlc3RjYXNlLgotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy05LWJyYW5jaEAyNzUxNzYgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTktMTU4NDcgcDMKLUFmZmVjdHMgPD0gOS4yLjAKLURyb3BwZWQgQ2hhbmdlbG9nIGNoYW5nZXMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jIHwgMTYgKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYwotCi1JbmRleDogZ2NjLTkuMi4wL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZ2NjLTkuMi4wL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jCi1AQCAtMCwwICsxLDE2IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgcG93ZXJwYyotKi0qIH0gfSB9ICovCi0rLyogeyBkZy1za2lwLWlmICIiIHsgcG93ZXJwYyotKi1haXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZGVqYWdudS1jcHU9cG93ZXI5IiB9ICovCi0rCi0rc3RhdGljIGludCBkYXJuMzIodm9pZCkgeyByZXR1cm4gX19idWlsdGluX2Rhcm5fMzIoKTsgfQotKwotK2ludCBmb3VyKHZvaWQpCi0rewotKwlpbnQgc3VtID0gMDsKLSsJaW50IGk7Ci0rCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCi0rCQlzdW0gKz0gZGFybjMyKCk7Ci0rCXJldHVybiBzdW07Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7KD9uKVxtZGFybiAuKiwwXE19IDQgfSB9ICovCi1JbmRleDogZ2NjLTkuMi4wL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTkuMi4wLm9yaWcvZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSsrKyBnY2MtOS4yLjAvZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE5LTA4LTMwICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSsKLSsJQmFja3BvcnQgZnJvbSB0cnVuawotKwkyMDE5LTA4LTIzICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSsKLSsJUFIgdGFyZ2V0LzkxNDgxCi0rCSogZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jOiBOZXcgdGVzdGNhc2UuCi0rCi0gMjAxOS0wOC0xMiAgUmVsZWFzZSBNYW5hZ2VyCi0gCi0gCSogR0NDIDkuMi4wIHJlbGVhc2VkLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNDExMDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy5pbmMKQEAgLTAsMCArMSwxMTkgQEAKK3JlcXVpcmUgZ2NjLWNvbW1vbi5pbmMKKworIyBUaGlyZCBkaWdpdCBpbiBQViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYSBtaW5vciByZWxlYXNlCisKK1BWID0gIjkuMy4wIgorCisjIEJJTlYgc2hvdWxkIGJlIGluY3JlbWVudGVkIHRvIGEgcmV2aXNpb24gYWZ0ZXIgYSBtaW5vciBnY2MgcmVsZWFzZQorCitCSU5WID0gIjkuMy4wIgorCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtOS4zOiR7RklMRV9ESVJOQU1FfS9nY2MtOS4zL2JhY2twb3J0OiIKKworREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIgZmxleC1uYXRpdmUiCitOQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIEdQTHYzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICBmaWxlOi8vQ09QWUlORy5SVU5USU1FO21kNT1mZTYwZDg3MDQ4NTY3ZDRmZThjOGEwZWQyNDQ4YmNjOCBcCisiCisKK0JBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgorI1JFTEVBU0UgPz0gIjVhNWNhMmQiCisjQkFTRVVSSSA/PSAiaHR0cHM6Ly9yZXBvLm9yLmN6L29mZmljaWFsLWdjYy5naXQvc25hcHNob3QvJHtSRUxFQVNFfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT1nY2MtJHtSRUxFQVNFfS50YXIuZ3oiCitTUkNfVVJJID0gIlwKKyAgICAgICAgICAgJHtCQVNFVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZXhwb3J0LUNQUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzctQ1ZFLTIwMTktMTQyNTAtQ2hlY2stemVyby12YWx1ZS1pbi1zaW1wbGVfb2JqZWN0X2VsZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOS1wcm9jZXNzX2FsdF9vcGVyYW5kcy1Eb24tdC1tYXRjaC11c2VyLWRlZmluZWQtcmVncy1vLnBhdGNoIFwKKyIKK1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFlMTk3ODY3NjExZjYwNTRhYTExMTliMTNhMGMwYWJhYzEyODM0NzY1ZmUyZDgxZjM1YWM1N2Y4NGY3NDJkMSIKKyMgRm9yIGRldiByZWxlYXNlIHNuYXBzaG90dGluZworI1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9vZmZpY2lhbC1nY2MtJHtSRUxFQVNFfSIKKyNCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCisKKyMgTGFuZ3VhZ2UgT3ZlcnJpZGVzCitGT1JUUkFOID0gIiIKK0pBVkEgPSAiIgorCitMVE8gPSAiLS1lbmFibGUtbHRvIgorU1NQID89ICItLWRpc2FibGUtbGlic3NwIgorU1NQX21pbmd3MzIgPSAiLS1lbmFibGUtbGlic3NwIgorCitFWFRSQV9PRUNPTkZfQkFTRSA9ICJcCisgICAgJHtMVE99IFwKKyAgICAke1NTUH0gXAorICAgIC0tZW5hYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCisgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCisgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKKyAgICAtLXdpdGgtcHBsPW5vIFwKKyAgICAtLXdpdGgtY2xvb2c9bm8gXAorICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAorICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyIKKworRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLWRpc2FibGUtbGliZ29tcCBcCisgICAgLS1kaXNhYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgIC0tZGlzYWJsZS1sdG8gXAorICAgIC0tZGlzYWJsZS1wbHVnaW4gXAorICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCisgICAgLS1lbmFibGUtZGVjaW1hbC1mbG9hdD1ubyBcCisgICAgLS13aXRob3V0LWlzbCBcCisgICAgLS1kaXNhYmxlLWxpYnNzcCBcCisiCisKK0VYVFJBX09FQ09ORl9QQVRIUyA9ICJcCisgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCisgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCisgICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDkyMjJkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMDJiMTc4OWRiYmIxODQ3MjY3ODJiNTAzOGE0ZGQ5NjUxNWVjNzkwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMzldIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBhYmQ5M2E5OTBhOS4uYjEyMTA4OGQ3NzggMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTc2MDMsNyArNzYwMyw3IEBAIGZpCisgIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgorIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCisgCistRkxBR1NfRk9SX1RBUkdFVD0KKytGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgorIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgorICAqIiBuZXdsaWIgIiopCisgICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDlkYjRmZDE0YWEyLi5hYWQ5M2M0ZDE4MyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzExOSw3ICszMTE5LDcgQEAgZmkKKyAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCisgdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKKyAKKy1GTEFHU19GT1JfVEFSR0VUPQorK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCisgY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCisgICoiIG5ld2xpYiAiKikKKyAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyN2VlNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTAsMCArMSwyMDMgQEAKK0Zyb20gNTM2OGNkMDI5M2NlNTBhNjljZWQ2ZTRiMjViYTZjOGQ4ZTAxNDI1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjU5OjAwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMzldIGdjYzogcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworCitBZGQgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKK3plY2tlLW5vLWhvc3QtaW5jbHVkZXMucGF0Y2ggcGF0Y2guICBUaGUgb3JpZ2luYWwgcGF0Y2ggY2hlY2tlZCBmb3IKKy91c3IvaW5jbHVkZSwgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBhbmQgdGhlbiB0cmlnZ2VyZWQgYSBmYWlsdXJlIGFuZAorYWJvcnRlZC4KKworSW5zdGVhZCwgd2UgYWRkIHRoZSB0d28gbWlzc2luZyBpdGVtcyB0byB0aGUgY3VycmVudCBzY2FuLiAgSWYgdGhlIHVzZXIKK3dhbnRzIHRoaXMgdG8gYmUgYSBmYWlsdXJlLCB0aGV5IGNhbiBhZGQgIi1XZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIuCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbW1vbi5vcHQgICAgICB8ICA0ICsrKysKKyBnY2MvY29uZmlnLmluICAgICAgIHwgIDYgKysrKysrCisgZ2NjL2NvbmZpZ3VyZSAgICAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyBnY2MvY29uZmlndXJlLmFjICAgIHwgMTAgKysrKysrKysrKworIGdjYy9kb2MvaW52b2tlLnRleGkgfCAgOSArKysrKysrKysKKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDIgKysKKyBnY2MvaW5jcGF0aC5jICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgNyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0CitpbmRleCBkMzQyYzRmMzc0OS4uYzY0ZmQ0YTZjNTAgMTAwNjQ0CistLS0gYS9nY2MvY29tbW9uLm9wdAorKysrIGIvZ2NjL2NvbW1vbi5vcHQKK0BAIC02ODQsNiArNjg0LDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgorIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCisgV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KKyAKKytXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKKytXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCisrCisgV3NoYWRvdworIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKKyBXYXJuIHdoZW4gb25lIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlci4gIFNhbWUgYXMgLVdzaGFkb3c9Z2xvYmFsLgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcuaW4gYi9nY2MvY29uZmlnLmluCitpbmRleCBhNzE4Y2VhZjNkYS4uNTcxMzM0MmVmYjEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnLmluCisrKysgYi9nY2MvY29uZmlnLmluCitAQCAtMjAwLDYgKzIwMCwxMiBAQAorICNlbmRpZgorIAorIAorKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMgKi8KKysjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAorKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKyNlbmRpZgorKworKworIC8qIERlZmluZSBpZiB5b3Ugd2FudCBhbGwgb3BlcmF0aW9ucyBvbiBSVEwgKHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZSBvZiB0aGUKKyAgICBvcHRpbWl6ZXIgYW5kIGJhY2sgZW5kKSB0byBiZSBjaGVja2VkIGZvciBkeW5hbWljIHR5cGUgc2FmZXR5IGF0IHJ1bnRpbWUuCisgICAgVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUuICovCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGEwNjViYTIzNzI4Li4yZTI2ZGQzMzMxMCAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC05OTYsNiArOTk2LDcgQEAgd2l0aF9zeXN0ZW1femxpYgorIGVuYWJsZV9tYWludGFpbmVyX21vZGUKKyBlbmFibGVfbGlua19tdXRleAorIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicworK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisgZW5hYmxlX3BsdWdpbgorIGVuYWJsZV9ob3N0X3NoYXJlZAorIGVuYWJsZV9saWJxdWFkbWF0aF9zdXBwb3J0CitAQCAtMTc0OSw2ICsxNzUwLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAtLWVuYWJsZS12ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5CisrICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMKKyAgIC0tZW5hYmxlLXBsdWdpbiAgICAgICAgIGVuYWJsZSBwbHVnaW4gc3VwcG9ydAorICAgLS1lbmFibGUtaG9zdC1zaGFyZWQgICAgYnVpbGQgaG9zdCBjb2RlIGFzIHNoYXJlZCBsaWJyYXJpZXMKKyAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0CitAQCAtMjk3NTMsNiArMjk3NTYsMTkgQEAgaWYgdGVzdCAiJHtlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorIGZpCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKytlbHNlCisrICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubworK2ZpCisrCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisgIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgCisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDNhNzI1MTEwMmVmLi4xMmQxZDA0ZTY0NSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC02MzgwLDYgKzYzODAsMTYgQEAgQUNfQVJHX0VOQUJMRSh2ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicywKKyAgICAgICAgICAgICAgICAgW3NwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeV0pXSkKKyAKKytBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSksLAorKyAgICAgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQorK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAorKyAgICAgICAgICAgWzFdLAorKyAgICAgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKQorK2ZpCisrCisgIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgQUNfU1VCU1Qoc3ViZGlycykKKyBBQ19TVUJTVChzcmNkaXIpCitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKK2luZGV4IDBhYjZjOWM2NDQ5Li5jM2QzZDUxYTI4ZiAxMDA2NDQKKy0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKK0BAIC0zMzMsNiArMzMzLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgorIC1XcGFja2VkICAtV3BhY2tlZC1iaXRmaWVsZC1jb21wYXQgLVdwYWNrZWQtbm90LWFsaWduZWQgIC1XcGFkZGVkIEBnb2wKKyAtV3BhcmVudGhlc2VzICAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCisgLVdwbGFjZW1lbnQtbmV3ICAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCisrLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKKyAtV3BvaW50ZXItYXJpdGggIC1XcG9pbnRlci1jb21wYXJlICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAorIC1Xbm8tcHJhZ21hcyAgLVduby1wcmlvLWN0b3ItZHRvciAgLVdyZWR1bmRhbnQtZGVjbHMgQGdvbAorIC1XcmVzdHJpY3QgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAorQEAgLTYyOTAsNiArNjI5MSwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCisgbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCisgbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgorIAorK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCisrZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcworK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCisrZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKKytzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCisrCisgQGl0ZW0gLVdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggNGY1Nzc2NWIwMTIuLmEyNjAxYTZiYjA2IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDQyLDYgKzEwNDIsOCBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgIiV7ZnVzZS1sZD0qOi1mdXNlLWxkPSUqfSAiIExJTktfQ09NUFJFU1NfREVCVUdfU1BFQyBcCisgICAgIiVYICV7byp9ICV7ZSp9ICV7Tn0gJXtufSAle3J9XAorICAgICAle3N9ICV7dH0gJXt1Kn0gJXt6fSAle1p9ICV7IW5vc3RkbGliOiV7IXI6JXshbm9zdGFydGZpbGVzOiVTfX19IFwKKysgICAgJXtXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKKysgICAgJXtXZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKKyAgICAgJXtzdGF0aWN8bm8tcGllfHN0YXRpYy1waWU6fSAlQHtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgXAorICAgICBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW8gIiIgXAorICAgICAle2ZvcGVuYWNjfGZvcGVubXB8JTpndCgle2Z0cmVlLXBhcmFsbGVsaXplLWxvb3BzPSo6JSp9IDEpOlwKK2RpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYworaW5kZXggYmNiZTIwODI5MDUuLjU3NTIyOThiYmYyIDEwMDY0NAorLS0tIGEvZ2NjL2luY3BhdGguYworKysrIGIvZ2NjL2luY3BhdGguYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSAiaW50bC5oIgorICNpbmNsdWRlICJpbmNwYXRoLmgiCisgI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKKysjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCisgCisgLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCisgICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLworQEAgLTM5Myw2ICszOTQsMjYgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAJfQorICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOworICAgICB9CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQorKyAgICB7CisrICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOworKworKyAgICAgICBmb3IgKHAgPSBoZWFkc1tJTkNfUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKKysgICAgICAgICB7CisrICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvc3cvaW5jbHVkZSIsIDExKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9vcHQvaW5jbHVkZSIsIDEyKSkpCisrICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAorKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAorKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOworKyAgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNlYzViYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBkZjkwZGJkYmE3YTg1YzIwYmFkOTVkZTcxNTI1ZjBmNDAwYTg0OWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8zOV0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCisKK0JlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCisKK1RoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KKworT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgorCistIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCisKKy0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcworCitJIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KKworQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/CisKK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggYjEyMTA4OGQ3NzguLjkzYWFlNWJiMjZmIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC02ODY0LDYgKzY4NjQsMzggQEAgZmkKKyAKKyAKKyAKKysjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUworKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCisrIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KKysjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAorKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZworKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCisraWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCisrICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCisrICBjYXNlICIgJENGTEFHUyAiIGluCisrICAgICoiIC1PMiAiKikgOzsKKysgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OworKyAgZXNhYworKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKKysgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7CisrICBlc2FjCisrZmkKKysKKysKKytpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgorKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKKysgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgorKyAgICAqIiAtTzIgIiopIDs7CisrICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7CisrICBlc2FjCisrICBjYXNlICIgJENYWEZMQUdTICIgaW4KKysgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7CisrICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKKysgIGVzYWMKKytmaQorKworKworICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgorICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCisgaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2VjODk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApAQCAtMCwwICsxLDExOSBAQAorRnJvbSAyZTAwZDBhOWE4MDkxNTNmNjkzNjU5ZTk3N2MxZTA1NTA2NjVlNjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8zOV0gNjQtYml0IG11bHRpbGliIGhhY2suCisKK0dDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5CitsYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCitjb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgorCitUaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYworYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50CitkaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKK2tub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKK3BlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCisKK1RoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Cit0aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKK2FuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCitkb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCithbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KKworRG8gc2FtZSBmb3IgcmlzY3Y2NCBhbmQgYWFyY2g2NAorCitSUCAxNS84LzExCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggfCAgOCArKysrLS0tLQorIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICAgICAgICAgfCAgNiArKy0tLS0KKyBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgICAgICAgIHwgMTAgKysrLS0tLS0tLQorIGdjYy9jb25maWcvcmlzY3YvdC1saW51eCAgICAgICAgICAgfCAgNiArKysrLS0KKyBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgICAgICAgIHwgIDUgKystLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKK2luZGV4IDVhZDY3MGJhMmNlLi5lMjYwMTllNzE1NyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKK0BAIC0yMSw4ICsyMSw4IEBACisgTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCisgTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQorIAorLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCistTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisrI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCisrI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKyAKKy1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQorKyNNVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitpbmRleCBjNjg2YWIyZjBkMi4uYzgyYjYwZGFkY2QgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitAQCAtMzIsNyArMzIsNSBAQAorICMKKyBjb21tYT0sCisgTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCistTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKKytNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitpbmRleCAzYTJmZjcwMGQ3ZC4uMTNlZjE5NTc2YjUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitAQCAtMTcsMTAgKzE3LDYgQEAKKyAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0CistTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKKy1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKKy1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAorLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCistCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCisrTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvdC1saW51eCBiL2djYy9jb25maWcvcmlzY3YvdC1saW51eAoraW5kZXggMjE2ZDI3NzZhMTguLmU0ZDgxNzYyMWZjIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4CisrKysgYi9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKK0BAIC0xLDMgKzEsNSBAQAorICMgT25seSBYTEVOIGFuZCBBQkkgYWZmZWN0IExpbnV4IG11bHRpbGliIGRpciBuYW1lcywgZS5nLiAvbGliMzIvaWxwMzJkLworLU1VTFRJTElCX0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgcnYzMiUsbGliMzIsJChwYXRzdWJzdCBydjY0JSxsaWI2NCwkKE1VTFRJTElCX0RJUk5BTUVTKSkpCistTVVMVElMSUJfT1NESVJOQU1FUyA6PSAkKHBhdHN1YnN0IGxpYiUsLi4vbGliJSwkKE1VTFRJTElCX0RJUk5BTUVTKSkKKysjTVVMVElMSUJfRElSTkFNRVMgOj0gJChwYXRzdWJzdCBydjMyJSxsaWIzMiwkKHBhdHN1YnN0IHJ2NjQlLGxpYjY0LCQoTVVMVElMSUJfRElSTkFNRVMpKSkKKytNVUxUSUxJQl9ESVJOQU1FUyA6PSAuIC4KKysjTVVMVElMSUJfT1NESVJOQU1FUyA6PSAkKHBhdHN1YnN0IGxpYiUsLi4vbGliJSwkKE1VTFRJTElCX0RJUk5BTUVTKSkKKytNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CitpbmRleCBmM2M2ZTJiZTFkOS4uYmQwMzkzMTU1ZmEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAorQEAgLTI2LDEwICsyNiw5IEBACisgIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlzIGZvdW5kIG9uIHRoZSB0YXJnZXQuCisgCisgTVVMVElMSUJfT1BUSU9OUyAgICA6PSBtNjQvbTMyCistTVVMVElMSUJfRElSTkFNRVMgICA6PSA2NCAzMgorK01VTFRJTElCX0RJUk5BTUVTICAgOj0gLiAuCisgTVVMVElMSUJfRVhUUkFfT1BUUyA6PSAKKy1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGM2NC1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUyArPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYy1saW51eC1nbnUpCisrTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorIAorIHJzNjAwMC1saW51eC5vOiAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yczYwMDAtbGludXguYworIAkkKENPTVBJTEUpICQ8CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MyOGFlYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApAQCAtMCwwICsxLDEyNSBAQAorRnJvbSA0MzVlNDU1OTJlOTQ0MDE4ZjMzYmZmMzJmMTIwMmIwODcyYTIzMTQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTI6NTYgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNS8zOV0gb3B0aW9uYWwgbGlic3RkYworCitnY2MtcnVudGltZSBidWlsZHMgbGlic3RkYysrIHNlcGFyYXRlbHkgZnJvbSBnY2MtY3Jvc3MtKi4gSXRzIGNvbmZpZ3VyZSB0ZXN0cyB1c2luZyBnKysKK3dpbGwgbm90IHJ1biBjb3JyZWN0bHkgc2luY2UgYnkgZGVmYXVsdCB0aGUgbGlua2VyIHdpbGwgdHJ5IHRvIGxpbmsgYWdhaW5zdCBsaWJzdGRjKysKK3doaWNoIHNob3VsZG4ndCBleGlzdCB5ZXQuIFdlIG5lZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgLWxzdGRjKysKK29wdGlvbiB3aGlsc3QgbGVhdmluZyAtbGMsIC1sZ2NjIGFuZCBvdGhlciBhdXRvbWF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMgYWRkZWQgYnkgZ2NjCitkcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIGFuIG9wdGlvbiB3aGljaCBvbmx5IGRpc2FibGVzIHRoZSAtbHN0ZGMrKy4KKworQSAic3RhbmRhcmQiIGdjYyBidWlsZCB1c2VzIHhnY2MgYW5kIGhlbmNlIGF2b2lkcyB0aGlzLiBXZSBzaG91bGQgYXNrIHVwc3RyZWFtIGhvdyB0bworZG8gdGhpcyBvZmZpY2lhbGx5LCB0aGUgbGlrZWx5IGFuc3dlciBpcyBkb24ndCBidWlsZCBsaWJzdGRjKysgc2VwYXJhdGVseS4KKworUlAgMjkvNi8xMAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgZ2NjL2MtZmFtaWx5L2Mub3B0ICB8ICA0ICsrKysKKyBnY2MvY3AvZysrc3BlYy5jICAgIHwgIDEgKworIGdjYy9kb2MvaW52b2tlLnRleGkgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMSArCisgNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK2luZGV4IDkxNmNjNjdiNDUzLi40MTYxOWZhNTkxYyAxMDA2NDQKKy0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAorKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitAQCAtMTk1Miw2ICsxOTUyLDEwIEBAIG5vc3RkaW5jKysKKyBDKysgT2JqQysrCisgRG8gbm90IHNlYXJjaCBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgQysrLgorIAorK25vc3RkbGliKysKKytEcml2ZXIKKytEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5CisrCisgbworIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQorIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0CitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKK2luZGV4IDZjNDU3NGE4MzdkLi4wZTI2NTdmMDBlZSAxMDA2NDQKKy0tLSBhL2djYy9jcC9nKytzcGVjLmMKKysrKyBiL2djYy9jcC9nKytzcGVjLmMKK0BAIC0xMzcsNiArMTM3LDcgQEAgbGFuZ19zcGVjaWZpY19kcml2ZXIgKHN0cnVjdCBjbF9kZWNvZGVkX29wdGlvbiAqKmluX2RlY29kZWRfb3B0aW9ucywKKyAgICAgICBzd2l0Y2ggKGRlY29kZWRfb3B0aW9uc1tpXS5vcHRfaW5kZXgpCisgCXsKKyAJY2FzZSBPUFRfbm9zdGRsaWI6CisrCWNhc2UgT1BUX25vc3RkbGliX186CisgCWNhc2UgT1BUX25vZGVmYXVsdGxpYnM6CisgCSAgbGlicmFyeSA9IC0xOworIAkgIGJyZWFrOworZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitpbmRleCBjM2QzZDUxYTI4Zi4uMmY3ZmZlNDU2YzMgMTAwNjQ0CistLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitAQCAtMjI4LDYgKzIyOCw5IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCisgLWZuby13ZWFrICAtbm9zdGRpbmMrKyBAZ29sCisgLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKKyAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKKystZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCisrLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKKystbm9zdGRsaWIrKyBAZ29sCisgLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCisgLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCisgLVdkZWxldGUtbm9uLXZpcnR1YWwtZHRvciAgLVdkZXByZWNhdGVkLWNvcHkgIC1XZGVwcmVjYXRlZC1jb3B5LWR0b3IgQGdvbAorQEAgLTUzOSw3ICs1NDIsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLXBpZSAgLXB0aHJlYWQgIC1yICAtcmR5bmFtaWMgQGdvbAorIC1zICAtc3RhdGljICAtc3RhdGljLXBpZSAgLXN0YXRpYy1saWJnY2MgIC1zdGF0aWMtbGlic3RkYysrIEBnb2wKKyAtc3RhdGljLWxpYmFzYW4gIC1zdGF0aWMtbGlidHNhbiAgLXN0YXRpYy1saWJsc2FuICAtc3RhdGljLWxpYnVic2FuIEBnb2wKKy0tc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKKystc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKKyAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCisgLXUgQHZhcntzeW1ib2x9ICAteiBAdmFye2tleXdvcmR9fQorIAorQEAgLTEzMzIxLDYgKzEzMzI0LDMzIEBAIFNwZWNpZnkgdGhhdCB0aGUgcHJvZ3JhbSBlbnRyeSBwb2ludCBpcyBAdmFye2VudHJ5fS4gIFRoZSBhcmd1bWVudCBpcworIGludGVycHJldGVkIGJ5IHRoZSBsaW5rZXI7IHRoZSBHTlUgbGlua2VyIGFjY2VwdHMgZWl0aGVyIGEgc3ltYm9sIG5hbWUKKyBvciBhbiBhZGRyZXNzLgorIAorK0BpdGVtIC1ub3N0ZGxpYisrCisrQG9waW5kZXggbm9zdGRsaWIrKworK0RvIG5vdCB1c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBDKysgcnVudGltZSBsaWJyYXJpZXMgd2hlbiBsaW5raW5nLgorK09ubHkgdGhlIGxpYnJhcmllcyB5b3Ugc3BlY2lmeSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgbGlua2VyLgorKworK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vc3RkbGlifQorK0BjaW5kZXggQG9wdGlvbnstbm9zdGRsaWJ9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKKytAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9zdGRsaWJ9CisrQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9kZWZhdWx0bGlic30KKytAY2luZGV4IEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKKytAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9kZWZhdWx0bGlic30KKytPbmUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcmllcyBieXBhc3NlZCBieSBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kCisrQG9wdGlvbnstbm9kZWZhdWx0bGlic30gaXMgQGZpbGV7bGliZ2NjLmF9LCBhIGxpYnJhcnkgb2YgaW50ZXJuYWwgc3Vicm91dGluZXMKKyt3aGljaCBHQ0MgdXNlcyB0byBvdmVyY29tZSBzaG9ydGNvbWluZ3Mgb2YgcGFydGljdWxhciBtYWNoaW5lcywgb3Igc3BlY2lhbAorK25lZWRzIGZvciBzb21lIGxhbmd1YWdlcy4KKysoQHhyZWZ7SW50ZXJmYWNlLCxJbnRlcmZhY2luZyB0byBHQ0MgT3V0cHV0LGdjY2ludCxHTlUgQ29tcGlsZXIKKytDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30sCisrZm9yIG1vcmUgZGlzY3Vzc2lvbiBvZiBAZmlsZXtsaWJnY2MuYX0uKQorK0luIG1vc3QgY2FzZXMsIHlvdSBuZWVkIEBmaWxle2xpYmdjYy5hfSBldmVuIHdoZW4geW91IHdhbnQgdG8gYXZvaWQKKytvdGhlciBzdGFuZGFyZCBsaWJyYXJpZXMuICBJbiBvdGhlciB3b3Jkcywgd2hlbiB5b3Ugc3BlY2lmeSBAb3B0aW9uey1ub3N0ZGxpYn0KKytvciBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSB5b3Ugc2hvdWxkIHVzdWFsbHkgc3BlY2lmeSBAb3B0aW9uey1sZ2NjfSBhcyB3ZWxsLgorK1RoaXMgZW5zdXJlcyB0aGF0IHlvdSBoYXZlIG5vIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyB0byBpbnRlcm5hbCBHQ0MKKytsaWJyYXJ5IHN1YnJvdXRpbmVzLgorKyhBbiBleGFtcGxlIG9mIHN1Y2ggYW4gaW50ZXJuYWwgc3Vicm91dGluZSBpcyBAY29kZXtfX21haW59LCB1c2VkIHRvIGVuc3VyZSBDKysKKytjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKKytHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKKysKKyBAaXRlbSAtcGllCisgQG9waW5kZXggcGllCisgUHJvZHVjZSBhIGR5bmFtaWNhbGx5IGxpbmtlZCBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIG9uIHRhcmdldHMKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGEyNjAxYTZiYjA2Li5jZDZjNmZjOTVkYiAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTA1Miw2ICsxMDUyLDcgQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICAgICAlKG1mbGliKSAiIFNUQUNLX1NQTElUX1NQRUMgIlwKKyAgICAgJXtmcHJvZmlsZS1hcmNzfGZwcm9maWxlLWdlbmVyYXRlKnxjb3ZlcmFnZTotbGdjb3Z9ICIgU0FOSVRJWkVSX1NQRUMgIiBcCisgICAgICV7IW5vc3RkbGliOiV7IXI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX19XAorKyAgICAleyFub3N0ZGxpYisrOn1cCisgICAgICV7IW5vc3RkbGliOiV7IXI6JXshbm9zdGFydGZpbGVzOiVFfX19ICV7VCp9ICBcbiUocG9zdF9saW5rKSB9fX19fX0iCisgI2VuZGlmCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2ZjNhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGM5OTY4NDQ3N2VjNjZmMjkwZWM3NGVmZTczMmFjZDNjMjRkYjdkY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNjoyOCArMDQwMAorU3ViamVjdDogW1BBVENIIDA2LzM5XSBDT0xMRUNUX0dDQ19PUFRJT05TCisKK1RoaXMgcGF0Y2ggYWRkcyAtLXN5c3Jvb3QgaW50byBDT0xMRUNUX0dDQ19PUFRJT05TIHdoaWNoIGlzIHVzZWQgdG8KK2ludm9rZSBjb2xsZWN0Mi4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvZ2NjLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggY2Q2YzZmYzk1ZGIuLjdkYTljNWQ0NTdiIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC00ODA0LDYgKzQ4MDQsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCisgCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7CisgCisgICBmaXJzdF90aW1lID0gVFJVRTsKKysjaWZkZWYgSEFWRV9MRF9TWVNST09UCisrICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQorKyAgICB7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKKysgICAgICBmaXJzdF90aW1lID0gRkFMU0U7CisrICAgIH0KKysjZW5kaWYKKyAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCisgICAgIHsKKyAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YTg3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK0Zyb20gZDZmNGVkYWFiMGFkMGU3NDJmYjFlM2E2Zjc2OTA4YTJhYzk5MjdkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMzldIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KKyAke0J9CisKK1VzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAordGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCitnY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCitvY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAord29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCit0bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKKworU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQorIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KKyBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCisgZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQorIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCBhYmFlODcyY2Q2My4uZmVmNmM0YzYxZTMgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTU0MCw3ICs1NDAsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAorIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKKyAKKyB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAorLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACisrdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCisgVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDJlMjZkZDMzMzEwLi5lZDc5MzFkYWVkMyAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMjM0Miw4ICsxMjM0Miw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDEyZDFkMDRlNjQ1Li5lMDUwMGUzMGQ1MCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xOTY4LDggKzE5NjgsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisgICAgICAgIDs7CisgICAgIGRlZmF1bHRzLmggKQorLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgorLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKKyAgICAgICAgOzsKKyAgICAgKiApCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgorZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAoraW5kZXggMzA4Yjg3ZDBjYzEuLjE5MDY4Y2JjMjRhIDEwMDY0NAorLS0tIGEvZ2NjL21rY29uZmlnLnNoCisrKysgYi9nY2MvbWtjb25maWcuc2gKK0BAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCisgICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgorIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCisgCWZvciBmaWxlIGluICIkQCI7IGRvCistCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KKyAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKKyAJICAgIGVsc2UKKyAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKK0BAIC0xMDYsNyArMTA2LDcgQEAgZXNhYworIAorICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KKyBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCistICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorIGZpCisgCisgIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFjZDJiMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAyYzUxNGFkYTM2ZmZiZjcwMTc3OTA5ZjYzM2U5ZjY4ODExZGU2MWUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6MDEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8zOV0gZm9ydHJhbiBjcm9zcy1jb21waWxlIGhhY2suCisKKyogRm9ydHJhbiB3b3VsZCBoYXZlIHNlYXJjaGVkIGZvciBhcm0tYW5nc3Ryb20tZ251ZWFiaS1nZm9ydHJhbiBidXQgd291bGQgaGF2ZSB1c2VkCit1c2VkIGdmb3J0YW4uIEZvciBnY2NfNC4yLjIuYmIgd2Ugd2FudCB0byB1c2UgdGhlIGdmb3J0cmFuIGNvbXBpbGVyIGZyb20gb3VyIGNyb3NzCitkaXJlY3RvcnkuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgfCAyICstCisgbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCitpbmRleCA2MDg2N2I5M2QwZS4uM2ZjOWZjYTViN2IgMTAwNzU1CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorQEAgLTEzMDcxLDcgKzEzMDcxLDcgQEAgZXNhYworIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBhY19leHQ9JHthY19mY19zcmNleHQtZn0KKyBhY19jb21waWxlPSckRkMgLWMgJEZDRkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRGQyAtbyBjb25mdGVzdCRhY19leGVleHQgJEZDRkxBR1MgJExERkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworaW5kZXggN2NmY2UyOGFiNjkuLjZjZDUxNWVlMWE0IDEwMDY0NAorLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCisrKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKK0BAIC0yNTAsNyArMjUwLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKKyAKKyAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQorICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQorLUZDPSIkR0ZPUlRSQU4iCisrI0ZDPSIkR0ZPUlRSQU4iCisgQUNfUFJPR19GQyhnZm9ydHJhbikKKyAKKyAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5ZTUyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSAwYTdjMDNhOWNmOTI1YmEwOWE1MTBhMzJlNjg0ZjAxZWM1YTUwNjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8zOV0gY3BwOiBob25vciBzeXNyb290LgorCitDdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKK3ByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KK3JhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcworcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KKworVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgorCitUaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKKy1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCisKK1tZT0NUTyAjMjA3NF0KKworUlAgMjAxMi8wNC8xMworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCisgZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCitpbmRleCBjNmU0MmVkYTI4My4uZTFkZGYwNjY0NjcgMTAwNjQ0CistLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCisrKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCitAQCAtNjYsNSArNjYsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjKystY3BwLW91dHB1dCIsCisgICAgICAgIiV7IUU6JXshTToleyFNTToiCistICAgICAgIiAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMiIKKysgICAgICAiICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyIgorICAgICAgICIgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCA3ZGE5YzVkNDU3Yi4uNGU3YzQ1YjI2OGMgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9CisgCQkJCQkgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19fSIsIDAsIDAsIDB9LAorICAgeyIuaSIsICJAY3BwLW91dHB1dCIsIDAsIDAsIDB9LAorICAgeyJAY3BwLW91dHB1dCIsCistICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKKysgICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorICAgeyIucyIsICJAYXNzZW1ibGVyIiwgMCwgMCwgMH0sCisgICB7IkBhc3NlbWJsZXIiLAorICAgICIleyFNOiV7IU1NOiV7IUU6JXshUzphcyAlKGFzbV9kZWJ1ZykgJShhc21fb3B0aW9ucykgJWkgJUEgfX19fSIsIDAsIDAsIDB9LAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MTAzYjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSAzNzRhYWI2YTg4MjAwZmJkNzM0MzQ2N2Q5N2Y3ZWU2NDU1YmJjZTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjM6MDggKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8zOV0gTUlQUzY0OiBEZWZhdWx0IHRvIE42NCBBQkkKKworTUlQUzY0IGRlZmF1bHRzIHRvIG4zMiBBQkksIHRoaXMgcGF0Y2ggbWFrZXMgaXQKK3NvIHRoYXQgaXQgZGVmYXVsdHMgdG8gTjY0IEFCSQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KKy0tLQorIGdjYy9jb25maWcuZ2NjIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCitpbmRleCBiMjI4MmVjZGYwYi4uNjljMGU0YTAwNWIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnLmdjYworKysrIGIvZ2NjL2NvbmZpZy5nY2MKK0BAIC0yMjgyLDI5ICsyMjgyLDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCisgCQkJOzsKKyAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKKyAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgorIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzaXNhNjRyMiotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJZXNhYworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZDU2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKQEAgLTAsMCArMSwyNDYgQEAKK0Zyb20gZGNkNzg5MWQ2YWVhNTMyNzk2OTEzMmZlYTZjYTRjMTk5ZjE0ZTk4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMzldIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCisgcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKKworVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKK3JlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKK1RoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKK0NoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCitTSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQorCitSZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCisgZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQorIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQorIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KKyBnY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmggICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTUgKysrKystLS0tLS0tLS0tCisgZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitpbmRleCA4MjQ4NjFiZWZlYy4uNmFmYWNjZTMyOTIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitAQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAorIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgorICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCA2NmVjMGVhMzk4MC4uZTRhZGUyZTJhYjAgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTY1LDggKzY1LDggQEAKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLworIAorICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAoraW5kZXggOWEzNjBkZWZkMjEuLjk4ZjZlOTYwYjY0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCitAQCAtNjAsNyArNjAsNyBAQAorIAorICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCisgICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCitpbmRleCA5YTZlMmQ5OTg5Ni4uMzFlZmJiNzMwMTYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK0BAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAoraW5kZXggYzA4MjIxYzQyMTAuLmRiYjQ3NGQ3OTJiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKK2luZGV4IGMzYzRhMjE5ZTY3Li40YjA1ZDhlOTNkMSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCitAQCAtOTQsMTAgKzk0LDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCisgICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAoraW5kZXggNmY3OWFjOWMwMWEuLjI1ZGU5NmY5NTYxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitAQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorIAorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvbGludXguaCBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAoraW5kZXggNThkZDE4Yjg5ZjMuLjExMmJhOWNkNzY0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKK0BAIC0yMiw3ICsyMiw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAgIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKTsJCQkJXAorICAgfSB3aGlsZSAoMCkKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCisgCisgI2RlZmluZSBNVVNMX0FCSV9TVUZGSVggXAorICAgIiV7bWFiaT1pbHAzMjotc2Z9IiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitpbmRleCA5OTQ2ZDNmZWQ5NC4uNDVhOWE3Y2FlNTkgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorQEAgLTQyMywyNCArNDIzLDE5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7CisgI3VuZGVmCUxJTktfT1NfREVGQVVMVF9TUEVDCisgI2RlZmluZSBMSU5LX09TX0RFRkFVTFRfU1BFQyAiJShsaW5rX29zX2xpbnV4KSIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWIvbGQuc28uMSIKKy0KKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLnNvLjEiCisgI2lmZGVmIExJTlVYNjRfREVGQVVMVF9BQklfRUxGdjIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSIle21hYmk9ZWxmdjE6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMTsiIFwKKy0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjJ9IgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKKyAjZWxzZQorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistIiV7bWFiaT1lbGZ2MjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yOyIgXAorLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMX0iCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjI6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjF9IgorICNlbmRpZgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiL2xpYi9sZC1tdXNsLXBvd2VycGMiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisrICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBcCistICAiL2xpYi9sZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKKysgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKKyAKKyAjdW5kZWYgIERFRkFVTFRfQVNNX0VORElBTgorICNpZiAoVEFSR0VUX0RFRkFVTFQgJiBNQVNLX0xJVFRMRV9FTkRJQU4pCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCitpbmRleCBjOTg5N2I3YWNhNS4uODJmMjc1MzE5Y2MgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NoL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvc2gvbGludXguaAorQEAgLTY0LDcgKzY0LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICIvbGliL2xkLW11c2wtc2giIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSBNVVNMX0RZTkFNSUNfTElOS0VSX0ZQIFwKKyAgICIle21mZHBpYzotZmRwaWN9LnNvLjEiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCisgI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiJXttZmRwaWM6X2ZkOzpfbGludXh9IgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAoraW5kZXggMDg0NzZmMWQ5NGQuLjgwNDQwZTcxMmFkIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKK0BAIC04NCw3ICs4NCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUgKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndik7CisgICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKKyAgICBkb25lLiAgKi8KKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgIExJTktfU1BFQworICNkZWZpbmUgTElOS19TUEVDICItbSBlbGYzMl9zcGFyYyAle3NoYXJlZDotc2hhcmVkfSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAoraW5kZXggNzg5ZDFkZjRiZDUuLmI5MjBjNjgwZmIxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCitAQCAtODQsOCArODQsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCisgICAgZG9uZS4gICovCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICNpZmRlZiBTUEFSQ19CSV9BUkNICisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkOTg4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGZhYTBmNzEyYTY3MDA1ZWYwMjYwZjk1ZWViZTdjN2M1N2E2ZjgzNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNjozNyArMDQwMAorU3ViamVjdDogW1BBVENIIDEyLzM5XSBnY2M6IEZpeCBhcmd1bWVudCBsaXN0IHRvbyBsb25nIGVycm9yLgorCitUaGVyZSB3b3VsZCBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiB0aGUKK2J1aWxkIGRpcmVjdG9yeSBpcyBsb25nZXIgdGhhbiAyMDAsIHRoaXMgaXMgY2F1c2VkIGJ5OgorCitoZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgCisKK1RoZSBQTFVHSU5fSEVBREVSUyBpcyB0b28gbG9uZyBiZWZvcmUgc29ydCwgc28gdGhlICJlY2hvIiBjYW4ndCBoYW5kbGUKK2l0LCB1c2UgdGhlICQoc29ydCBsaXN0KSBvZiBHTlUgbWFrZSB3aGljaCBjYW4gaGFuZGxlIHRoZSB0b28gbG9uZyBsaXN0Cit3b3VsZCBmaXggdGhlIHByb2JsZW0sIHRoZSBoZWFkZXIgd291bGQgYmUgc2hvcnQgZW5vdWdoIGFmdGVyIHNvcnRlZC4KK1RoZSAidHIgJyAnICdcMDEyJyIgd2FzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBzcGFjZSB0byAiXG4iLCB0aGUKKyQoc29ydCBsaXN0KSBkb2Vzbid0IG5lZWQgdGhpcy4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggZmVmNmM0YzYxZTMuLjU3Y2Y3ODA0ZjBhIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC0zNTM4LDcgKzM1MzgsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKKyAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgorICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KKyAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKKy0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAorKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAorIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCisgCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAorIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEzLURpc2FibGUtc2R0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NTg1ODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEzLURpc2FibGUtc2R0LnBhdGNoCkBAIC0wLDAgKzEsMTEzIEBACitGcm9tIDRkZjVhNzQ3MjY1OTgzMDkyYWZkNmZiYzUzMjlkZDgwOGNjMWRhM2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAorU3ViamVjdDogW1BBVENIIDEzLzM5XSBEaXNhYmxlIHNkdC4KKworV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgorSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKK3NkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQorYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCisKK1JQIDIwMTIvOC83CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0Rpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCistLS0KKyBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQorIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KKyBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGVkNzkzMWRhZWQzLi41MmY1MmIwZWM4NiAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yOTMzMywxMiArMjkzMzMsMTIgQEAgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5Li4uICIgPiY2OyB9CisgaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLQorLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCisrI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorKyMgIGhhdmVfc3lzX3NkdF9oPXllcworKyMKKysjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisrIworKyNmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9zeXNfc2R0X2giID4mNQorICRhc19lY2hvICIkaGF2ZV9zeXNfc2R0X2giID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCBlMDUwMGUzMGQ1MC4uMjQyYWQyOGVjODMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNTk5NSwxNSArNTk5NSwxNSBAQCBmaQorIEFDX1NVQlNUKFtlbmFibGVfZGVmYXVsdF9zc3BdKQorIAorICMgVGVzdCBmb3IgPHN5cy9zZHQuaD4gb24gdGhlIHRhcmdldC4KKy1HQ0NfVEFSR0VUX1RFTVBMQVRFKFtIQVZFX1NZU19TRFRfSF0pCistQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKKy1oYXZlX3N5c19zZHRfaD1ubworLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCistICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCistICAgICAgICAgICAgW0RlZmluZSBpZiB5b3VyIHRhcmdldCBDIGxpYnJhcnkgcHJvdmlkZXMgc3lzL3NkdC5oXSkKKy1maQorLUFDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorKyNHQ0NfVEFSR0VUX1RFTVBMQVRFKFtIQVZFX1NZU19TRFRfSF0pCisrI0FDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCisrI2hhdmVfc3lzX3NkdF9oPW5vCisrI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorKyMgIGhhdmVfc3lzX3NkdF9oPXllcworKyMgIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKKysjICAgICAgICAgICAgW0RlZmluZSBpZiB5b3VyIHRhcmdldCBDIGxpYnJhcnkgcHJvdmlkZXMgc3lzL3NkdC5oXSkKKysjZmkKKysjQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCisgCisgIyBDaGVjayBpZiBURm1vZGUgbG9uZyBkb3VibGUgc2hvdWxkIGJlIHVzZWQgYnkgZGVmYXVsdCBvciBub3QuCisgIyBTb21lIGdsaWJjIHRhcmdldHMgdXNlZCBERm1vZGUgbG9uZyBkb3VibGUsIGJ1dCB3aXRoIGdsaWJjIDIuNAorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCitpbmRleCAxMjI1ZWRjNTk2Yi4uM2I4OWI4ODBmYzggMTAwNzU1CistLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCisrKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCitAQCAtMjIzMjUsMTEgKzIyMzI1LDExIEBAIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKKyBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKyAKKy0gIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCisrIyAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KKyAKKy0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKysjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisgCistICBmaQorKyMgIGZpCisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjUKKyAkYXNfZWNobyAiJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjY7IH0KKyAKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworaW5kZXggZDg0NTVlNDE1NzQuLjg0NGNmMWFjYmNlIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworQEAgLTIzMiw3ICsyMzIsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KKyBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KKyBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCisgR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQorLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKKysjR0xJQkNYWF9DSEVDS19TRFRfSAorIAorICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgorIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNC1saWJ0b29sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNC1saWJ0b29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NTM4NTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE0LWxpYnRvb2wucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAzNDk3N2Q5OTQ2NjZhOTA5ODNjOTZhOTI0MGRmYTM1NDA1NjJkYTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjk6MTEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8zOV0gbGlidG9vbAorCitsaWJzdGRjKysgZnJvbSBnY2MtcnVudGltZSBnZXRzIGNyZWF0ZWQgd2l0aCAtcnBhdGg9L3Vzci9saWIvLi4vbGliIGZvciBxZW11eDg2LTY0Cit3aGVuIHJ1bm5pbmcgb24gYW0geDg2XzY0IGJ1aWxkIGhvc3QuCisKK1RoaXMgcGF0Y2ggc3RvcHMgdGhpcyBzcGVhZGluZyB0byBsaWJkaXIgaW4gdGhlIGxpYnN0ZGMrKy5sYSBmaWxlIHdpdGhpbiBsaWJ0b29sLgorQXJndWFibHksIGl0IHNob3VsZG4ndCBiZSBwYXNzaW5nIHRoaXMgaW50byBsaWJ0b29sIGluIHRoZSBmaXJzdCBwbGFjZSBidXQKK2ZvciBub3cgdGhpcyByZXNvbHZlcyB0aGUgbmFzdGllc3QgcHJvYmxlbXMgdGhpcyBjYXVzZXMuCisKK2Z1bmNfbm9ybWFsX2Fic3BhdGggd291bGQgcmVzb2x2ZSBhbiBlbXB0eSBwYXRoIHRvIGBwd2RgIHNvIHdlIG5lZWQKK3RvIGZpbHRlciB0aGUgemVybyBjYXNlLgorCitSUCAyMDEyLzgvMjQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBsdG1haW4uc2ggfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDc5ZjliYTg5YWY1Li44ZTIyMmY3YzE2YiAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNjM1OSw2ICs2MzU5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCisgCisgICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgorKyAgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KKysJZnVuY19ub3JtYWxfYWJzcGF0aCAiJGluc3RhbGxfbGliZGlyIgorKwlpbnN0YWxsX2xpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKysgICAgICBmaQorIAorICAgICAgIG9sZGxpYnM9CisgICAgICAgaWYgdGVzdCAteiAiJHJwYXRoIjsgdGhlbgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NDQ1MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA0NTU4YmE3ZmEwMjBjMTExZjlhMjA0MDIxYTQxOGMwY2U1NWQ3N2Y5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzA6MzIgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNS8zOV0gZ2NjOiBhcm12NDogcGFzcyBmaXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJLgorCitUaGUgTElOS19TUEVDIGZvciBsaW51eCBnZXRzIG92ZXJ3cml0dGVuIGJ5IGxpbnV4LWVhYmkuaCB3aGljaAorbWVhbnMgdGhlIHZhbHVlIG9mIFRBUkdFVF9GSVhfVjRCWF9TUEVDIGdldHMgbG9zdCBhbmQgYXMgYSByZXN1bHQKK3RoZSBvcHRpb24gaXMgbm90IHBhc3NlZCB0byBsaW5rZXIgd2hlbiBjaG9zaW5nIG1hcmNoPWFybXY0CitUaGlzIHBhdGNoIHJlZGVmaW5lcyB0aGlzIGluIGxpbnV4LWVhYmkuaCBhbmQgcmVpbnNlcnRzIGl0Citmb3IgZWFiaSBkZWZhdWx0aW5nIHRvb2xjaGFpbnMuCisKK1dlIG1pZ2h0IHdhbnQgdG8gc2VuZCBpdCB1cHN0cmVhbS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggfCA2ICsrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAoraW5kZXggZTRhZGUyZTJhYjAuLjEwODg2M2Y2OWQyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK0BAIC05MSwxMCArOTEsMTQgQEAKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAorICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCisgCisrLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCisrI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCisrI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKKysKKyAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bworICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KKyAjdW5kZWYgIExJTktfU1BFQworLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCisrI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCisgICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCisgCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwODMzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSA3ZWZmYzYzMmQ2NWMyZDcyYmY2ZmEzMmEyMTllYzJmODJmZWY5NDA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzM6MDQgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8zOV0gVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YKKyB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KKworVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9CitzbyB0aGF0IHRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAorZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KKyBnY2MvY29uZmlndXJlLmFjIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCA1MmY1MmIwZWM4Ni4uYTVmMjA4YWY3Y2YgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTIzMjIsMTAgKzEyMzIyLDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTIzMzYsNiArMTIzNDYsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCisgdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKKyBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgIGNhc2UgJGYgaW4KKysgICAgKi9saW51eDY0LmggKQorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIDs7CisgICAgIC4vKiApCisgICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggMjQyYWQyOGVjODMuLmI3YTdlYWQxYzAyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE5NDgsMTAgKzE5NDgsMjAgQEAgZG9uZQorIHRtYWtlX2ZpbGVfPQorIGZvciBmIGluICR7dG1ha2VfZmlsZX0KKyBkbworLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKy0JdGhlbgorLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorLQlmaQorKyAgY2FzZSAkZiBpbgorKyAgICAqL3QtbGludXg2NCApCisrICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgICAgKiApCisrICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgZXNhYworIGRvbmUKKyB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKKyAKK0BAIC0xOTYyLDYgKzE5NzIsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCisgdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKKyBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgIGNhc2UgJGYgaW4KKysgICAgKi9saW51eDY0LmggKQorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIDs7CisgICAgIC4vKiApCisgICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmRhMDEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTJiMmJmNzc2MjFmMzQ0YTg0OWU1NWFiMTc5ZWNlODU4N2QxOTIzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjM5OjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTcvMzldIEF2b2lkIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhCisgaG9zdCBwYXRoCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOGUyMjJmN2MxNmIuLjBhOTNiNGU1YzNiIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC01NjI4LDYgKzU2MjgsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgorIAkgIGVsc2UKKysJICAgICMgSW5zdGVhZCBvZiB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYSBob3N0IHBhdGgsCisrCSAgICAjIHVzZSB0aGUgcGF0aCB0aGUgLmxhIGlzIGNvbnRhaW5lZCBpbi4KKysJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICAgIGRpcj0iJGxpYmRpciIKKyAJICAgIGFic2Rpcj0iJGxpYmRpciIKKyAJICBmaQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOC1leHBvcnQtQ1BQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOC1leHBvcnQtQ1BQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzODUwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE4LWV4cG9ydC1DUFAucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBjYWZiNmE2MjFjMDVjMWYyMzg2NzlkNTJmYzAyNjQ0NmYzOGM4YWY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxOC8zOV0gZXhwb3J0IENQUAorCitUaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KK2J1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAoraW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgorCitjb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKK2NvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQorY29uZmlndXJlOjM2NjY6ICQ/ID0gMAorY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KK2NvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgorY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgorY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYworY29uZmlndXJlOjM4NzY6ICQ/ID0gMAorCitOb3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKK3VzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCitoZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZworaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKK2ZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgorCitUaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAorZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQordGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KK2F2b2lkIHRoZSBwcm9ibGVtLgorCitSUCAyMi8wOC8yMDEzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDY0ZTA5MWJhNzFkLi4yNTU4MjJlM2YyNyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCisgCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKKyAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDEyOWQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDE4MjA1N2I4MDg5MWVkYzBlOGQ0NjgzNWUyZDhiZmQyODMzMGE1NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyNToxMSArMDAwMAorU3ViamVjdDogW1BBVENIIDE5LzM5XSBFbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAorCitUaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCitnY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKK2J1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0CitzeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCitmb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKK3BpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCitjb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKysKKyBnY2MvY3BwZGVmYXVsdC5jIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggNTdjZjc4MDRmMGEuLjc3NzIzNDJhZDVlIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC02MTgsNiArNjE4LDcgQEAgbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAorIAorICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBsaWJyYXJpZXMgZXRjLgorIGxpYnN1YmRpciA9ICQobGliZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCisrbGlic3ViZGlyX3RhcmdldCA9ICQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQorICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcworIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKKyAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCitAQCAtMjg2Nyw2ICsyODY4LDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiCisgCisgUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCisgICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAorKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAorICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKK2luZGV4IGM0Nzk2Mzg1NjQzLi45ODBlMmJkNDdhNyAxMDA2NDQKKy0tLSBhL2djYy9jcHBkZWZhdWx0LmMKKysrKyBiL2djYy9jcHBkZWZhdWx0LmMKK0BAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLworICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKysjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorKyAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyNlbmRpZgorICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLworICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyMTgyMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGE0NzQwZjEyOTBlNmE2MDJmYmJmYTI3Yjg2M2JlMmUzYjI2NzU2ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDIwLzM5XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCisKK3NpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgorCitUaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisoUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQoraHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKKworUlAKKzIwMTIvMDkvMjIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCisgbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQoraW5kZXggYzFiN2M3MzkzNGEuLmVmNDNkNjJjMDdhIDEwMDY0NAorLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCisrKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KK0BAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCisgCistTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX0ZBTFNFQE1fREVQUwkJPQorIE1fU0laRQkJPSAtRE49JChQQVRfTikKKyBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKKyBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCitkaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitpbmRleCAyOTMyNGUzZTBhYy4uZDVjZGI0MjU5ZWYgMTAwNjQ0CistLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorQEAgLTQxNCw3ICs0MTQsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKKyBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfRkFMU0VATV9ERVBTID0KKyBNX1NJWkUgPSAtRE49JChQQVRfTikKKyBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQorIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNjNjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBmM2VkYWQ4MWQ4MGRkZTVkNjRiZjc3ZTZhYmFmZGE1NGRiMTBiODI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDIxLzM5XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCisgJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCisKK2h0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggMGE5M2I0ZTVjM2IuLjZkZTZlZDJmOWEwIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCisrCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgorIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCistCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKysKKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ2YzBkZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGI4ZWEyYzJjN2QzMzM3NmY1ZGQ2NTE2NDZjN2U4MjIwMDBlNDc3NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIyLzM5XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCisgYmFzZV9saWJkaXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IDVlOGIzNGRlZDAzLi43ZTYyOGJmNjYxZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyZDZmYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gODY0NWI1N2U3YzBkZmQ5M2FmZWU1Y2FlYWE1MzRjNzE0ZjQ0OWJhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvMzldIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IDdlNjI4YmY2NjFlLi4xNzE3Y2JlNTQ3MSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yNCw3ICsyNCw3IEBACisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCistI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisrI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgIEFTQU5fQ0MxX1NQRUMKKyAjZGVmaW5lIEFTQU5fQ0MxX1NQRUMgIiV7JTpzYW5pdGl6ZShhZGRyZXNzKTotZnVud2luZC10YWJsZXN9IgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDNlMGEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBiMTY2NjU2NWU0ZTEzM2VlNDFmMzJmYTgwMzIxNjViY2IwNmFmZTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDUgSnVsIDIwMTUgMjA6MjU6MTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNC8zOV0gbGliY2MxOiBmaXggbGliY2MxJ3MgaW5zdGFsbCBwYXRoIGFuZCBycGF0aAorCisqIEluc3RhbGwgbGliY2MxLnNvIGFuZCBsaWJjYzFwbHVnaW4uc28gaW50bworICAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pLCBhcyB3aGF0IHdlCisgIGhhZCBkb25lIHRvIGx0by1wbHVnaW4uCisqIEZpeCBiYWQgUlBBVEggaXVzc3VlOgorICBnY2MtNS4yLjA6IHBhY2thZ2UgZ2NjLXBsdWdpbnMgY29udGFpbnMgYmFkIFJQQVRIIC9wYXRodC90by90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvbGliNjQvLi4vbGliNjQgaW4gZmlsZQorIC9wYXRoL3RvL2djYy81LjIuMC1yMC9wYWNrYWdlcy1zcGxpdC9nY2MtcGx1Z2lucy91c3IvbGliNjQvZ2NjL3g4Nl82NC1wb2t5LWxpbnV4LzUuMi4wL3BsdWdpbi9saWJjYzFwbHVnaW4uc28uMC4wLjAKKyBbcnBhdGhzXQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGliY2MxL01ha2VmaWxlLmFtIHwgNCArKy0tCisgbGliY2MxL01ha2VmaWxlLmluIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuYW0gYi9saWJjYzEvTWFrZWZpbGUuYW0KK2luZGV4IDcyYzZhZWFkNDc1Li40MmE4Nzc0MGIzMSAxMDA2NDQKKy0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQorKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCitAQCAtMzcsOCArMzcsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCisgCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQorIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKKyAKKy1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCistY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQorK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKKytwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKKyAKKyBpZiBFTkFCTEVfUExVR0lOCisgcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQorZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5pbiBiL2xpYmNjMS9NYWtlZmlsZS5pbgoraW5kZXggNzEwNGI2NDkwMjYuLjIxMDNjNDc3NDY4IDEwMDY0NAorLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCisrKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KK0BAIC0zOTMsOCArMzkzLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAorIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKKyAKKyBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCistcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgorLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKKytjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCisrcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCisgQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCisgQEVOQUJMRV9QTFVHSU5fVFJVRUBjYzFsaWJfTFRMSUJSQVJJRVMgPSBsaWJjYzEubGEKKyBzaGFyZWRfc291cmNlID0gY2FsbGJhY2tzLmNjIGNhbGxiYWNrcy5oaCBjb25uZWN0aW9uLmNjIGNvbm5lY3Rpb24uaGggXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YWM5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKQEAgLTAsMCArMSwzNDYgQEAKK0Zyb20gN2Q2MTRhODQ3MDlkN2RjNGEyNTI5YzNkNTI5ZTJkYTg1NDFmOWZkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNS8zOV0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYworCitCZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcword2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCitiaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KKworU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKK25hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCitsaWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCitpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKK2Jhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KKworSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKKworYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKKyAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCitiKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgorICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorUlAgMjAxNS83LzI4CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0FkZGVkIFBSRUZJWFZBUiBhbmQgRVhFQ19QUkVGSVhWQVIgdG8gc3VwcG9ydCBydW50aW1lIHJlbG9jYXRpb24uICBXaXRob3V0Cit0aGVzZSBhcyBwYXJ0IG9mIHRoZSBnY2NyZWxvY3ByZWZpeCB0aGUgc3lzdGVtIGNhbid0IGRvIHJ1bnRpbWUgcmVsb2NhdGlvbgoraWYgdGhlIGV4ZWN1dGFibGUgaXMgbW92ZWQuICAoVGhlc2UgcGF0aHMgd2VyZSBtaXNzZWQgaW4gdGhlIG9yaWdpbmFsCitpbXBsZW1lbnRhdGlvbi4pCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAa2VybmVsLmNyYXNoaW5nLm9yZz4KKy0tLQorIGMtZmFtaWx5L2Mtb3B0cy5jIHwgICAgNCArLS0KKyBjcHBkZWZhdWx0LmMgICAgICB8ICAgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY3BwZGVmYXVsdC5oICAgICAgfCAgIDEzICsrKystLS0tLS0tCisgZ2NjLmMgICAgICAgICAgICAgfCAgIDIwICsrKysrKysrKysrKy0tLS0tCisgaW5jcGF0aC5jICAgICAgICAgfCAgIDEyICsrKysrLS0tLS0KKyBwcmVmaXguYyAgICAgICAgICB8ICAgIDQgKy0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2NwcGRlZmF1bHQuYworKysrIGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5jCitAQCAtMzUsNiArMzUsMzAgQEAKKyAjIHVuZGVmIENST1NTX0lOQ0xVREVfRElSCisgI2VuZGlmCisgCisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19JTkNMVURFX0RJUjsKKytjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7CisrI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7CisrI2VuZGlmCisrCisgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKKyA9IElOQ0xVREVfREVGQVVMVFM7CitAQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGUKKyA9IHsKKyAjaWZkZWYgR1BMVVNQTFVTX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBnZW5lcmljIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIHRhcmdldC1kZXBlbmRlbnQgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDEgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBiYWNrd2FyZCBhbmQgZGVwcmVjYXRlZCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCisgICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEdDQ19JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCistICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IEdDQ19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworLSAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUiwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKy0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCisrICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDIgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKy0gICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBQUkVGSVhfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBmaXhpbmNsdWRlcy4gICovCistICAgIHsgRklYRURfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLAorKyAgICB7IEZJWEVEX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwKKyAgICAgICAvKiBBIG11bHRpbGliIHN1ZmZpeCBuZWVkcyBhZGRpbmcgaWYgZGlmZmVyZW50IG11bHRpbGlicyB1c2UKKyAJIGRpZmZlcmVudCBoZWFkZXJzLiAgKi8KKyAjaWZkZWYgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDCitAQCAtODUsMzMgKzEwOSwyNCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlCisgI2VuZGlmCisgI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCisgICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCisgICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KKy0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisrICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKKyAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCistICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KKyAgIH07CisgI2VuZGlmIC8qIG5vIElOQ0xVREVfREVGQVVMVFMgKi8KKyAKKy0jaWZkZWYgR0NDX0lOQ0xVREVfRElSCistY29uc3QgY2hhciBjcHBfR0NDX0lOQ0xVREVfRElSW10gPSBHQ0NfSU5DTFVERV9ESVI7CistY29uc3Qgc2l6ZV90IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuID0gc2l6ZW9mIEdDQ19JTkNMVURFX0RJUiAtIDg7CistI2Vsc2UKKy1jb25zdCBjaGFyIGNwcF9HQ0NfSU5DTFVERV9ESVJbXSA9ICIiOworLWNvbnN0IHNpemVfdCBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbiA9IDA7CistI2VuZGlmCistCisgLyogVGhlIGNvbmZpZ3VyZWQgcHJlZml4LiAgKi8KKy1jb25zdCBjaGFyIGNwcF9QUkVGSVhbXSA9IFBSRUZJWDsKKy1jb25zdCBzaXplX3QgY3BwX1BSRUZJWF9sZW4gPSBzaXplb2YgUFJFRklYIC0gMTsKKy1jb25zdCBjaGFyIGNwcF9FWEVDX1BSRUZJWFtdID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7CisrY2hhciBQUkVGSVhWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYOworK2NoYXIgRVhFQ19QUkVGSVhWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7CisgCisgLyogVGhpcyB2YWx1ZSBpcyBzZXQgYnkgY3BwX3JlbG9jYXRlZCBhdCBydW50aW1lICovCisgY29uc3QgY2hhciAqZ2NjX2V4ZWNfcHJlZml4OworSW5kZXg6IGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2NwcGRlZmF1bHQuaAorKysrIGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5oCitAQCAtMzMsNyArMzMsOCBAQAorIAorIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUKKyB7CistICBjb25zdCBjaGFyICpjb25zdCBmbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCisrICBjb25zdCBjaGFyICpmbmFtZTsgICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLworKworICAgY29uc3QgY2hhciAqY29uc3QgY29tcG9uZW50OwkvKiBUaGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQorIAkJCQkgICAoc2VlIHVwZGF0ZV9wYXRoIGluIHByZWZpeC5jKSAqLworICAgY29uc3QgY2hhciBjcGx1c3BsdXM7CQkvKiBPbmx5IGxvb2sgaGVyZSBpZiB3ZSdyZSBjb21waWxpbmcgQysrLiAgKi8KK0BAIC01MCwxNyArNTEsMTMgQEAgc3RydWN0IGRlZmF1bHRfaW5jbHVkZQorIH07CisgCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXTsKKy1leHRlcm4gY29uc3QgY2hhciBjcHBfR0NDX0lOQ0xVREVfRElSW107CistZXh0ZXJuIGNvbnN0IHNpemVfdCBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbjsKKytleHRlcm4gY2hhciBHQ0NfSU5DTFVERV9ESVJWQVJbXSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSk7CisgCisgLyogVGhlIGNvbmZpZ3VyZS10aW1lIHByZWZpeCwgaS5lLiwgdGhlIHZhbHVlIHN1cHBsaWVkIGFzIHRoZSBhcmd1bWVudAorICAgIHRvIC0tcHJlZml4PS4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgY3BwX1BSRUZJWFtdOworK2V4dGVybiBjaGFyIFBSRUZJWFZBUltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKTsKKyAvKiBUaGUgbGVuZ3RoIG9mIHRoZSBjb25maWd1cmUtdGltZSBwcmVmaXguICAqLworLWV4dGVybiBjb25zdCBzaXplX3QgY3BwX1BSRUZJWF9sZW47CistLyogVGhlIGNvbmZpZ3VyZS10aW1lIGV4ZWN1dGlvbiBwcmVmaXguICBUaGlzIGlzIHR5cGljYWxseSB0aGUgbGliL2djYworLSAgIHN1YmRpcmVjdG9yeSBvZiBjcHBfUFJFRklYLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBjcHBfRVhFQ19QUkVGSVhbXTsKKytleHRlcm4gY2hhciBFWEVDX1BSRUZJWFZBUltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKTsKKyAvKiBUaGUgcnVuLXRpbWUgZXhlY3V0aW9uIHByZWZpeC4gIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBsaWIvZ2NjCisgICAgc3ViZGlyZWN0b3J5IG9mIHRoZSBhY3R1YWwgaW5zdGFsbGF0aW9uLiAgKi8KKyBleHRlcm4gY29uc3QgY2hhciAqZ2NjX2V4ZWNfcHJlZml4OworSW5kZXg6IGdjYy05LjMuMC9nY2MvZ2NjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvZ2NjLmMKKysrKyBnY2MtOS4zLjAvZ2NjL2djYy5jCitAQCAtMjUzLDYgKzI1Myw4IEBAIEZJTEUgKnJlcG9ydF90aW1lc190b19maWxlID0gTlVMTDsKKyAjZW5kaWYKKyBzdGF0aWMgY29uc3QgY2hhciAqdGFyZ2V0X3N5c3RlbV9yb290ID0gREVGQVVMVF9UQVJHRVRfU1lTVEVNX1JPT1Q7CisgCisrc3RhdGljIGNoYXIgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTWVNURU1MSUJTX0RJUjsKKysKKyAvKiBOb256ZXJvIG1lYW5zIHBhc3MgdGhlIHVwZGF0ZWQgdGFyZ2V0X3N5c3RlbV9yb290IHRvIHRoZSBjb21waWxlci4gICovCisgCisgc3RhdGljIGludCB0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZDsKK0BAIC01MjcsNiArNTI5LDcgQEAgb3Igd2l0aCBjb25zdGFudCB0ZXh0IGluIGEgc2luZ2xlIGFyZ3VtZQorICAlRyAgICAgcHJvY2VzcyBMSUJHQ0NfU1BFQyBhcyBhIHNwZWMuCisgICVSICAgICBPdXRwdXQgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGFyZ2V0X3N5c3RlbV9yb290IGFuZAorICAgICAgICAgdGFyZ2V0X3N5c3Jvb3Rfc3VmZml4LgorKyAlciAgICAgT3V0cHV0IHRoZSBiYXNlIHBhdGggdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeAorICAlUyAgICAgcHJvY2VzcyBTVEFSVEZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgUyBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCisgICVFICAgICBwcm9jZXNzIEVOREZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgRSBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCisgICVDICAgICBwcm9jZXNzIENQUF9TUEVDIGFzIGEgc3BlYy4KK0BAIC0xNTAwLDEwICsxNTAzLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7CisgICAgZ2NjX2V4ZWNfcHJlZml4IGlzIHNldCBiZWNhdXNlLCBpbiB0aGF0IGNhc2UsIHdlIGtub3cgd2hlcmUgdGhlCisgICAgY29tcGlsZXIgaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdXNlIHBhdGhzIHJlbGF0aXZlIHRvIHRoYXQKKyAgICBsb2NhdGlvbiBpbnN0ZWFkLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfZXhlY19wcmVmaXggPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfbGliZXhlY19wcmVmaXggPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfYmluZGlyX3ByZWZpeCA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2V4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2JpbmRpcl9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKKytzdGF0aWMgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7CisgCisgLyogRm9yIG5hdGl2ZSBjb21waWxlcnMsIHRoZXNlIGFyZSB3ZWxsLWtub3duIHBhdGhzIGNvbnRhaW5pbmcKKyAgICBjb21wb25lbnRzIHRoYXQgbWF5IGJlIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0uICBGb3IgY3Jvc3MKK0BAIC0xNTExLDkgKzE1MTQsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmCisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX2V4ZWNfcHJlZml4ID0gTURfRVhFQ19QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXggPSBNRF9TVEFSVEZJTEVfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4XzEgPSBNRF9TVEFSVEZJTEVfUFJFRklYXzE7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMQorK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKKyAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzIKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCisgICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMjsKKyAKKyAvKiBBIHJlbGF0aXZlIHBhdGggdG8gYmUgdXNlZCBpbiBmaW5kaW5nIHRoZSBsb2NhdGlvbiBvZiB0b29scworQEAgLTU5MjIsNiArNTkyNSwxMSBAQCBkb19zcGVjXzEgKGNvbnN0IGNoYXIgKnNwZWMsIGludCBpbnN3aXRjCisgCSAgICAgIH0KKyAJICAgIGJyZWFrOworIAorKyAgICAgICAgICBjYXNlICdyJzoKKysgICAgICAgICAgICAgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgsCisrCQkgICAgICBzdHJsZW4gKHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgpKTsKKysgICAgICAgICAgICBicmVhazsKKysKKyAJICBjYXNlICdTJzoKKyAJICAgIHZhbHVlID0gZG9fc3BlY18xIChzdGFydGZpbGVfc3BlYywgMCwgTlVMTCk7CisgCSAgICBpZiAodmFsdWUgIT0gMCkKK0luZGV4OiBnY2MtOS4zLjAvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCisrKysgZ2NjLTkuMy4wL2djYy9jLWZhbWlseS9jLW9wdHMuYworQEAgLTEzODIsOCArMTM4Miw4IEBAIGFkZF9wcmVmaXhlZF9wYXRoIChjb25zdCBjaGFyICpzdWZmaXgsIGkKKyAgIHNpemVfdCBwcmVmaXhfbGVuLCBzdWZmaXhfbGVuOworIAorICAgc3VmZml4X2xlbiA9IHN0cmxlbiAoc3VmZml4KTsKKy0gIHByZWZpeCAgICAgPSBpcHJlZml4ID8gaXByZWZpeCA6IGNwcF9HQ0NfSU5DTFVERV9ESVI7CistICBwcmVmaXhfbGVuID0gaXByZWZpeCA/IHN0cmxlbiAoaXByZWZpeCkgOiBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbjsKKysgIHByZWZpeCAgICAgPSBpcHJlZml4ID8gaXByZWZpeCA6IEdDQ19JTkNMVURFX0RJUlZBUjsKKysgIHByZWZpeF9sZW4gPSBpcHJlZml4ID8gc3RybGVuIChpcHJlZml4KSA6IHN0cmxlbihHQ0NfSU5DTFVERV9ESVJWQVIpIC0gNzsKKyAKKyAgIHBhdGggPSAoY2hhciAqKSB4bWFsbG9jIChwcmVmaXhfbGVuICsgc3VmZml4X2xlbiArIDEpOworICAgbWVtY3B5IChwYXRoLCBwcmVmaXgsIHByZWZpeF9sZW4pOworSW5kZXg6IGdjYy05LjMuMC9nY2MvaW5jcGF0aC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2luY3BhdGguYworKysrIGdjYy05LjMuMC9nY2MvaW5jcGF0aC5jCitAQCAtMTMxLDcgKzEzMSw3IEBAIGFkZF9zdGFuZGFyZF9wYXRocyAoY29uc3QgY2hhciAqc3lzcm9vdCwKKyAgIGludCByZWxvY2F0ZWQgPSBjcHBfcmVsb2NhdGVkICgpOworICAgc2l6ZV90IGxlbjsKKyAKKy0gIGlmIChpcHJlZml4ICYmIChsZW4gPSBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbikgIT0gMCkKKysgIGlmIChpcHJlZml4ICYmIChsZW4gPSBzdHJsZW4oR0NDX0lOQ0xVREVfRElSVkFSKSAtIDcpICE9IDApCisgICAgIHsKKyAgICAgICAvKiBMb29rIGZvciBkaXJlY3RvcmllcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIHByZWZpeC4KKyAJICJUcmFuc2xhdGUiIHRoZW0sIGkuZS4gcmVwbGFjZSAvdXNyL2xvY2FsL2xpYi9nY2MuLi4gd2l0aAorQEAgLTE0NSw3ICsxNDUsNyBAQCBhZGRfc3RhbmRhcmRfcGF0aHMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsCisgCQkgbm93LiAgKi8KKyAJICAgICAgaWYgKHN5c3Jvb3QgJiYgcC0+YWRkX3N5c3Jvb3QpCisgCQljb250aW51ZTsKKy0JICAgICAgaWYgKCFmaWxlbmFtZV9uY21wIChwLT5mbmFtZSwgY3BwX0dDQ19JTkNMVURFX0RJUiwgbGVuKSkKKysJICAgICAgaWYgKCFmaWxlbmFtZV9uY21wIChwLT5mbmFtZSwgR0NDX0lOQ0xVREVfRElSVkFSLCBsZW4pKQorIAkJeworIAkJICBjaGFyICpzdHIgPSBjb25jYXQgKGlwcmVmaXgsIHAtPmZuYW1lICsgbGVuLCBOVUxMKTsKKyAJCSAgaWYgKHAtPm11bHRpbGliID09IDEgJiYgaW11bHRpbGliKQorQEAgLTE4NSw3ICsxODUsNyBAQCBhZGRfc3RhbmRhcmRfcGF0aHMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsCisgCSAgICAgIGZyZWUgKHN5c3Jvb3Rfbm9fdHJhaWxpbmdfZGlyX3NlcGFyYXRvcik7CisgCSAgICB9CisgCSAgZWxzZSBpZiAoIXAtPmFkZF9zeXNyb290ICYmIHJlbG9jYXRlZAorLQkJICAgJiYgIWZpbGVuYW1lX25jbXAgKHAtPmZuYW1lLCBjcHBfUFJFRklYLCBjcHBfUFJFRklYX2xlbikpCisrCQkgICAmJiAhZmlsZW5hbWVfbmNtcCAocC0+Zm5hbWUsIFBSRUZJWFZBUiwgc3RybGVuKFBSRUZJWFZBUikpKQorIAkgICAgeworICAJICAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnJlbG9jYXRlZF9wcmVmaXg7CisgCSAgICAgIGNoYXIgKm9zdHI7CitAQCAtMjAyLDEyICsyMDIsMTIgQEAgYWRkX3N0YW5kYXJkX3BhdGhzIChjb25zdCBjaGFyICpzeXNyb290LAorIAkJICBkdW1teSA9IGNvbmNhdCAoZ2NjX2V4ZWNfcHJlZml4LCAiZHVtbXkiLCBOVUxMKTsKKyAJCSAgcmVsb2NhdGVkX3ByZWZpeAorIAkJICAgID0gbWFrZV9yZWxhdGl2ZV9wcmVmaXggKGR1bW15LAorLQkJCQkJICAgIGNwcF9FWEVDX1BSRUZJWCwKKy0JCQkJCSAgICBjcHBfUFJFRklYKTsKKysJCQkJCSAgICBFWEVDX1BSRUZJWFZBUiwKKysJCQkJCSAgICBQUkVGSVhWQVIpOworIAkJICBmcmVlIChkdW1teSk7CisgCQl9CisgCSAgICAgIG9zdHIgPSBjb25jYXQgKHJlbG9jYXRlZF9wcmVmaXgsCistCQkJICAgICBwLT5mbmFtZSArIGNwcF9QUkVGSVhfbGVuLAorKwkJCSAgICAgcC0+Zm5hbWUgKyBzdHJsZW4oUFJFRklYVkFSKSwKKyAJCQkgICAgIE5VTEwpOworIAkgICAgICBzdHIgPSB1cGRhdGVfcGF0aCAob3N0ciwgcC0+Y29tcG9uZW50KTsKKyAJICAgICAgZnJlZSAob3N0cik7CitJbmRleDogZ2NjLTkuMy4wL2djYy9wcmVmaXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy05LjMuMC5vcmlnL2djYy9wcmVmaXguYworKysrIGdjYy05LjMuMC9nY2MvcHJlZml4LmMKK0BAIC03Miw3ICs3Miw5IEBAIExpY2Vuc2UgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1AKKyAjaW5jbHVkZSAicHJlZml4LmgiCisgI2luY2x1ZGUgImNvbW1vbi9jb21tb24tdGFyZ2V0LmgiCisgCistc3RhdGljIGNvbnN0IGNoYXIgKnN0ZF9wcmVmaXggPSBQUkVGSVg7Cisrc3RhdGljIGNvbnN0IGNoYXIgUFJFRklYVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWDsKKysKKytzdGF0aWMgY29uc3QgY2hhciAqc3RkX3ByZWZpeCA9IFBSRUZJWFZBUjsKKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2tleV92YWx1ZSAoY2hhciAqKTsKKyBzdGF0aWMgY2hhciAqdHJhbnNsYXRlX25hbWUgKGNoYXIgKik7CitAQCAtMjEyLDcgKzIxNCw3IEBAIHRyYW5zbGF0ZV9uYW1lIChjaGFyICpuYW1lKQorIAlwcmVmaXggPSBnZXRlbnYgKGtleSk7CisgCisgICAgICAgaWYgKHByZWZpeCA9PSAwKQorLQlwcmVmaXggPSBQUkVGSVg7CisrCXByZWZpeCA9IFBSRUZJWFZBUjsKKyAKKyAgICAgICAvKiBXZSB1c2VkIHRvIHN0cmlwIHRyYWlsaW5nIERJUl9TRVBBUkFUT1JzIGhlcmUsIGJ1dCB0aGF0IGNhbgorIAkgc29tZXRpbWVzIHlpZWxkIGEgcmVzdWx0IHdpdGggbm8gc2VwYXJhdG9yIHdoZW4gb25lIHdhcyBjb2RlZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZmE3NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDZjMzlhMjJjM2U4NWQyMGRlZTllMmZjMjI3NGU5NWRhOTgwZGU0ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQxOjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMzldIFNlYXJjaCB0YXJnZXQgc3lzcm9vdCBnY2MgdmVyc2lvbiBzcGVjaWZpYyBkaXJzIHdpdGgKKyBtdWx0aWxpYi4KKworV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCis8c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCit3aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUKK2NvZGUgYmVsb3cpLiA8dGFyZ2V0LXN5cz4gaXMgJ21hY2hpbmUnIGluIGdjYydzIHRlcm1pbm9sb2d5LiBXZSB1c2UKK3RoZXNlIGRpcmVjdG9yaWVzIHNvIHRoYXQgbXVsdGlwbGUgZ2NjIHZlcnNpb25zIGNvdWxkIGluIHRoZW9yeQorY28tZXhpc3Qgb24gdGFyZ2V0LgorCitXZSBvbmx5IHdhbnQgdG8gYnVpbGQgb25lIGdjYy1jcm9zcy1jYW5hZGlhbiBwZXIgYXJjaCBhbmQgaGF2ZSB0aGlzIHdvcmsKK2ZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKKzx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuCittaXBzNjQtcG9sa21sbGliMzItbGludXgKK2lzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KKworVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliCitpczoKKworPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vbGliMzIvCis8c3lzcm9vdD4vdXNyL2xpYjMyLworCit3aGljaCBtZWFucyB0aGF0IHRoZSBsaWIzMiBjcnRiZWdpbi5vIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBsaWI2NCBvbmVzCit3aWxsIG5vdCB3aGljaCBsZWFkcyB0byBjb21waWxlciBmYWlsdXJlcy4KKworVGhpcyBwYXRjaCBpbmplY3RzIGEgbXVsdGlsaWIgdmVyc2lvbiBvZiB0aGF0IHBhdGggZmlyc3Qgc28gdGhlIGxpYjY0CitiaW5hcmllcyBjYW4gYmUgZm91bmQgZmlyc3QuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIHNlYXJjaCBwYXRoIGJlY29tZXM6CisKKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi9saWIzMi8KKzxzeXNyb290Pi91c3IvbGliMzIvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworUlAgMjAxNS83LzMxCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvZ2NjLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDU5ZmI2NGY1ZmQ1Li4zZTc5ZGE0MjM4YyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMjYxNyw3ICsyNjE3LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKKyAgICAgICBpZiAocGF0aCA9PSBOVUxMKQorIAl7CisgCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7CistCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7CisrCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7CisgCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7CisgCX0KKyAKK0BAIC0yNjI5LDYgKzI2MjksMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKKyAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLworIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCisgCSAgICB7CisrCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQorKwkgICAgICAgIHsKKysJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7CisrCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47CisrCisrCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQorKwkJICAgIHsKKysJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7CisrCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47CisrCQkgICAgfQorKwkgICAgICAgICAgZWxzZQorKwkJICAgIHsKKysJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7CisrCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47CisrCQkgICAgfQorKworKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCisrCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCisrCSAgICAgICAgICAgIHsKKysJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKKysJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7CisrCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOworKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKKysJCSAgICAgICAgICBicmVhazsKKysJICAgICAgICAgICAgfQorKwkgICAgICAgIH0KKysKKyAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKKyAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOworIAkgICAgICBpZiAocmV0KQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU4YWNjNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gMDdkYjM0YjE2YjZjOGUzZDk0OGI0MTdmMmZjMDUyNTAwZmZiNzdkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNy8zOV0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKKworV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKK0NGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQorQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCitXaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKK3RoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCisKK1RoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAorQ1BQLCBhbmQgR01QSU5DLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKworIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KKyBnY2MvY29uZmlndXJlICAgIHwgMiArLQorIGdjYy9jb25maWd1cmUuYWMgfCAyICstCisgNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMjU1ODIyZTNmMjcuLjlkYzBkZmYwNDc0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTUyLDYgKzE1Miw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisgCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKK0BAIC0xNzEsNiArMTcyLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KKyBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAorIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKKyAKKyAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KK0BAIC0xODgsNiArMTkyLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACisgSE9TVF9FWFBPUlRTID0gXAorIAkkKEJBU0VfRVhQT1JUUykgXAorIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCisgCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorQEAgLTc3NSw2ICs3ODAsNyBAQCBCQVNFX0ZMQUdTX1RPX1BBU1MgPSBcCisgCSJDQ19GT1JfQlVJTEQ9JChDQ19GT1JfQlVJTEQpIiBcCisgCSJDRkxBR1NfRk9SX0JVSUxEPSQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJIkNYWF9GT1JfQlVJTEQ9JChDWFhfRk9SX0JVSUxEKSIgXAorKwkiQ1hYRkxBR1NfRk9SX0JVSUxEPSQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorIAkiRVhQRUNUPSQoRVhQRUNUKSIgXAorIAkiRkxFWD0kKEZMRVgpIiBcCisgCSJJTlNUQUxMPSQoSU5TVEFMTCkiIFwKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS50cGwgYi9NYWtlZmlsZS50cGwKK2luZGV4IDQxY2FlNThhMjY3Li5kM2Y2Yjc5YWNkYyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnRwbAorKysrIGIvTWFrZWZpbGUudHBsCitAQCAtMTU0LDYgKzE1NCw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKyAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCitAQCAtMTczLDYgKzE3NCw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCisgRVhUUkFfQlVJTERfRkxBR1MgPSBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCisgCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCitAQCAtMTkwLDYgKzE5NCw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAorIEhPU1RfRVhQT1JUUyA9IFwKKyAJJChCQVNFX0VYUE9SVFMpIFwKKyAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDc3NzIzNDJhZDVlLi4wMmZlYzg4MWI2ZCAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtODA1LDcgKzgwNSw3IEBAIEJVSUxEX0xERkxBR1M9QEJVSUxEX0xERkxBR1NACisgQlVJTERfTk9fUElFX0ZMQUcgPSBAQlVJTERfTk9fUElFX0ZMQUdACisgQlVJTERfTERGTEFHUyArPSAkKEJVSUxEX05PX1BJRV9GTEFHKQorIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCistCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKKysJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKKyAKKyAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCisgR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGE1ZjIwOGFmN2NmLi4wNzg4YjdiZjBiNSAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMTk2Niw3ICsxMTk2Niw3IEBAIGVsc2UKKyAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCisgCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAorLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKysJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAorIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCisgCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAorIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IGI3YTdlYWQxYzAyLi41YWI1MGZhZTBmMyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xNzQzLDcgKzE3NDMsNyBAQCBlbHNlCisgCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKKy0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCisrCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKyAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAorIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKKyAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJhNWQ5NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1OTU0M2U4OTdlYjM1MTk0ZmI0NzI4OGY3NzYyZTQwYTE4ZmZmNjExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMiBGZWIgMjAxNiAxMDoyNjoxMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDI4LzM5XSBuaW9zMjogRGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvbmlvczIvbGludXguaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCitpbmRleCA2OTg3MzRhZGQzNS4uZWVlZTYwZWNmZWEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgorIAorICN1bmRlZiBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmE3ZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gOGRmOTlhZjBhNjVlZjc0MGJjZjJiN2RjOWExMDljYzU3ZjE1YzNhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjkvMzldIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cworCit3aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bworbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCit0aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCitsaWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCitUQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECisgd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scworYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQord2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKK2J1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKworIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAoraW5kZXggNGIwNWQ4ZTkzZDEuLjBjYTExN2UyZWQ0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKK0BAIC0xOTUsNiArMTk1LDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKKyAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAorICAgfQorKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKKysjdW5kZWYgTElOS19TU1BfU1BFQworKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCisrCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCisrCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgorKyNlbmRpZgorKworICNlbmRpZgorIAorICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCitpbmRleCBmZmNlYjMyYmY2NS4uYzgyY2IyYWQwNWIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCitAQCAtOTQsNiArOTQsMTYgQEAKKyAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQorICNlbmRpZgorIAorKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLworKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrI2VuZGlmCisrCisgI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQworICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCisgICAleyFzdGF0aWMtcGllOiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitpbmRleCA0NWE5YTdjYWU1OS4uZDFlODhhNDBlODIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorQEAgLTQ1Niw2ICs0NTYsMTYgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKKyAJCQkJCSAgICIgLW0gZWxmNjRwcGMiKQorICNlbmRpZgorIAorKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLworKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrI2VuZGlmCisrCisgI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMzMiBMSU5LX09TX0xJTlVYX0VNVUwzMiAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCisgICAleyFzdGF0aWMtcGllOiBcCisgICAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMC1sZGJsMTI4LWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGU4YzA3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMC1sZGJsMTI4LWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDc5IEBACitGcm9tIDFiZmFlNjI0YjI3ZWE0YTFmNWM1YTkyMDUwZDc0MWI1MTFlN2IzZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMDA6NTQ6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMC8zOV0gbGRibDEyOCBjb25maWcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgMTMgKysrKysrKysrKysrKworIGdjYy9jb25maWd1cmUuYWMgfCAxNiArKysrKysrKysrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDA3ODhiN2JmMGI1Li5lYjFhNDViYjI2MyAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yOTM3MCw2ICsyOTM3MCwxNSBAQCBpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKKyBlbHNlCisgCisrICAgICAgY2FzZSAiJHRhcmdldCIgaW4KKysJczM5MCotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCisrCSAgOzsKKysJcG93ZXJwYyotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKysJICA7OworKwkqKQorKworIGlmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWd0IDIgXAorICAgfHwgKCB0ZXN0ICRnbGliY192ZXJzaW9uX21ham9yIC1lcSAyICYmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWlub3IgLWdlIDQgKTsgdGhlbiA6CisgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCitAQCAtMjkzODEsNiArMjkzOTAsMTAgQEAgZWxzZQorICAgICAgICYmIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKKyAKKyBmaQorKworKwkgIDs7CisrICAgICAgZXNhYworKworIGZpCisgCisgICAgIDs7CitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDVhYjUwZmFlMGYzLi43ZmZlMzVlZTFjMyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC02MDMwLDEzICs2MDMwLDI1IEBAIGNhc2UgIiR0YXJnZXQiIGluCisgICAgIEFDX0FSR19XSVRIKGxvbmctZG91YmxlLTEyOCwKKyAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sb25nLWRvdWJsZS0xMjhdLAorIAkJICAgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCistICAgICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAorKyAgICAgIGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwgWworKyAgICAgIGNhc2UgIiR0YXJnZXQiIGluCisrCXMzOTAqLSotbGludXgtbXVzbCopCisrCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcworKwkgIDs7CisrCXBvd2VycGMqLSotbGludXgtbXVzbCopCisrCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCisrCSAgOzsKKysJKildCisgICAgICAgW0dDQ19HTElCQ19WRVJTSU9OX0dURV9JRkVMU0UoWzJdLCBbNF0sIFtnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzXSwgWworICAgICAgIFtnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKyAgICAgICBncmVwICdeWyAJXSojWyAJXSpkZWZpbmVbIAldWyAJXSpfX0xPTkdfRE9VQkxFX01BVEhfT1BUSU9OQUwnIFwKKyAgICAgICAgICR0YXJnZXRfaGVhZGVyX2Rpci9iaXRzL3dvcmRzaXplLmggPiAvZGV2L251bGwgMj4mMSBcCisgICAgICAgJiYgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcworLSAgICAgIF1dKV0pCisrICAgICAgXV0pXQorKyAgICAgIFsKKysJICA7OworKyAgICAgIGVzYWMKKysgICAgICBdKQorICAgICA7OworIGVzYWMKKyBpZiB0ZXN0IHgkZ2NjX2N2X3RhcmdldF9sZGJsMTI4ID0geHllczsgdGhlbgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGEyOWZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAzMWQwMDhmNTU3MzYyN2M2MTkyY2U5ZmNmNzI5ZjBiZTQ2NGE3Y2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAorU3ViamVjdDogW1BBVENIIDMxLzM5XSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworaW5kZXggMDk5YmYyM2U2MmYuLjQzNmIyNzdhNzlmIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKKysrKyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitAQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TT05BTUUpIFwKKyAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCisgCisgU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAorLQkkKFNITElCX0xERkxBR1MpIFwKKysJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKKyAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCisgCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAorIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjA0OGRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gNzYxZmE2ZTNlMzc2MDhjZmQxYjI4OGU3MjFhMmZmODkyODhjZDZhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgorRGF0ZTogU2F0LCAyNCBPY3QgMjAxNSAyMDowOTo1MyArMDAwMAorU3ViamVjdDogW1BBVENIIDMyLzM5XSBsaWJnY2NfczogVXNlIGFsaWFzIGZvciBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbnN0ZWFkIG9mCisgc3ltdmVyCisKK0FkYXB0ZXIgZnJvbQorCitodHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTUtMDUvbXNnMDA4OTkuaHRtbAorCitUaGlzIGZpeCB3YXMgZGViYXRlZCBidXQgaGFzbnQgYmVlbiBhcHBsaWVkIGdjYyB1cHN0cmVhbSBzaW5jZQordGhleSBleHBlY3QgbXVzbCB0byBzdXBwb3J0ICdAJyBpbiBzeW1ib2wgdmVyc2lvbmluZyB3aGljaCBpcworYSBzdW4vZ251IHZlcnNpb25pbmcgZXh0ZW50aW9uLiBUaGlzIHBhdGNoIGhvd2V2ZXIgYXZvaWRzIHRoZQorbmVlZCBmb3IgdGhlICdAJyBzeW1ib2xzIGF0IGFsbAorCitsaWJnY2MvQ2hhbmdlbG9nOgorCisyMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgorCisJKiBjb25maWcvaTM4Ni9jcHVpbmZvLmMgKF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsKTogQWRkLgorCShfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAsIF9fY3B1X21vZGVsQEdDQ180LjguMCk6IFJlbW92ZS4KKworCSogY29uZmlnL2kzODYvdC1saW51eCAoSE9TVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRFVTRV9FTEZfU1lNVkVSLgorCitnY2MvQ2hhbmdlbG9nOgorCisyMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgorCisJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBNYWtlIF9fYnVpbHRpbl9jcHVfaW5pdAorCWNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW5zdGVhZCBvZiBfX2NwdV9pbmRpY2F0b3JfaW5pdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCisgbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCisgbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCitpbmRleCAxYmNhNWE3ZWVhNi4uMDk2YzRiYzhlMjUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCisrKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCitAQCAtMzY2ODUsMTAgKzM2Njg1LDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAorICAgICB7CisgICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgorICAgICAgIHsKKy0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KKysJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLworIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOworICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAorLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKKysJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7CisgCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCisgCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOworICAgICAgIH0KK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworaW5kZXggZDZjYjJkZTYyNjUuLmNlMDRlZjc4MjA1IDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworQEAgLTUwNCw3ICs1MDQsNyBAQCBfX2NwdV9pbmRpY2F0b3JfaW5pdCAodm9pZCkKKyAgIHJldHVybiAwOworIH0KKyAKKy0jaWYgZGVmaW5lZCBTSEFSRUQgJiYgZGVmaW5lZCBVU0VfRUxGX1NZTVZFUgorLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X2luZGljYXRvcl9pbml0LCBfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAiKTsKKy1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9tb2RlbCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wIik7CisrI2lmbmRlZiBTSEFSRUQKKytpbnQgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgKHZvaWQpCisrICBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIpKSk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggYi9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAoraW5kZXggODUwNmE2MzU3OTAuLjU2NDI5NmY3ODhlIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKKysrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4CitAQCAtMyw1ICszLDUgQEAKKyAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4CisgU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgorIAorLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSICQoQ0VUX0ZMQUdTKQorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAkKENFVF9GTEFHUykKKyBDUlRTVFVGRl9UX0NGTEFHUyArPSAkKENFVF9GTEFHUykKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA4MGIwNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsOTEgQEAKK0Zyb20gMTI2ZTM0MmZiMzlkN2FmNzBjMWU1YTZkZjhmZmFmYzhkZmMzYmYwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgRmViIDIwMTcgMTI6NTY6MDAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzMy8zOV0gc3luYyBnY2Mgc3RkZGVmLmggd2l0aCBtdXNsCisKK211c2wgZGVmaW5lcyBwdHJkaWZmX3Qgc2l6ZV90IGFuZCB3Y2hhcl90CitzbyBkb250IGRlZmluZSB0aGVtIGhlcmUgaWYgbXVzbCBpcyBkZWZpbmluaW5nIHRoZW0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9naW5jbHVkZS9zdGRkZWYuaCBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAoraW5kZXggZGE2OTJlMWMwMWEuLjlhMDBjMjYxYWRiIDEwMDY0NAorLS0tIGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCisrKysgYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKK0BAIC0xMjgsNiArMTI4LDcgQEAgX1RZUEVfd2NoYXJfdDsKKyAjaWZuZGVmIF9fX2ludF9wdHJkaWZmX3RfaAorICNpZm5kZWYgX0dDQ19QVFJESUZGX1QKKyAjaWZuZGVmIF9QVFJESUZGX1RfREVDTEFSRUQgLyogRHJhZ29uRmx5ICovCisrI2lmbmRlZiBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9QVFJESUZGX1QKKyAjZGVmaW5lIF9UX1BUUkRJRkZfCisgI2RlZmluZSBfVF9QVFJESUZGCitAQCAtMTM3LDEwICsxMzgsMTIgQEAgX1RZUEVfd2NoYXJfdDsKKyAjZGVmaW5lIF9fX2ludF9wdHJkaWZmX3RfaAorICNkZWZpbmUgX0dDQ19QVFJESUZGX1QKKyAjZGVmaW5lIF9QVFJESUZGX1RfREVDTEFSRUQKKysjZGVmaW5lIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLworICNpZm5kZWYgX19QVFJESUZGX1RZUEVfXworICNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAorICNlbmRpZgorIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CisrI2VuZGlmIC8qIF9fREVGSU5FRF9wdHJkaWZmX3QgKi8KKyAjZW5kaWYgLyogX1BUUkRJRkZfVF9ERUNMQVJFRCAqLworICNlbmRpZiAvKiBfR0NDX1BUUkRJRkZfVCAqLworICNlbmRpZiAvKiBfX19pbnRfcHRyZGlmZl90X2ggKi8KK0BAIC0xNzgsNiArMTgxLDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjaWZuZGVmIF9HQ0NfU0laRV9UCisgI2lmbmRlZiBfU0laRVRfCisgI2lmbmRlZiBfX3NpemVfdAorKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KKyAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9TSVpFX1QKK0BAIC0xOTQsNiArMTk4LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAorICNkZWZpbmUgX0dDQ19TSVpFX1QKKyAjZGVmaW5lIF9TSVpFVF8KKysjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLworICNpZiBkZWZpbmVkIChfX0ZyZWVCU0RfXykgXAorICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCisgICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykgXAorQEAgLTIyOCw2ICsyMzMsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjZW5kaWYgLyogX1NJWkVfVCAqLworICNlbmRpZiAvKiBfX1NJWkVfVF9fICovCisgI2VuZGlmIC8qIF9fc2l6ZV90X18gKi8KKysjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLworICN1bmRlZglfX25lZWRfc2l6ZV90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfc2l6ZV90LiAgKi8KKyAKK0BAIC0yNTcsNiArMjYzLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2lmbmRlZiBfX19pbnRfd2NoYXJfdF9oCisgI2lmbmRlZiBfX0lOVF9XQ0hBUl9UX0gKKyAjaWZuZGVmIF9HQ0NfV0NIQVJfVAorKyNpZm5kZWYgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLworICNkZWZpbmUgX193Y2hhcl90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19XQ0hBUl9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9XQ0hBUl9UCitAQCAtMjcyLDYgKzI3OSw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNkZWZpbmUgX19JTlRfV0NIQVJfVF9ICisgI2RlZmluZSBfR0NDX1dDSEFSX1QKKyAjZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVECisrI2RlZmluZSBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgCisgLyogT24gQlNELzM4NiAxLjEsIGF0IGxlYXN0LCBtYWNoaW5lL2Fuc2kuaCBkZWZpbmVzIF9CU0RfV0NIQVJfVF8KKyAgICBpbnN0ZWFkIG9mIF9XQ0hBUl9UXywgYW5kIF9CU0RfUlVORV9UXyAod2hpY2gsIHVubGlrZSB0aGUgb3RoZXIKK0BAIC0zMzcsNiArMzQ1LDcgQEAgdHlwZWRlZiBfX1dDSEFSX1RZUEVfXyB3Y2hhcl90OworICNlbmRpZgorICNlbmRpZiAvKiBfX1dDSEFSX1RfXyAqLworICNlbmRpZiAvKiBfX3djaGFyX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfd2NoYXJfdCBtdXNsICovCisgI3VuZGVmCV9fbmVlZF93Y2hhcl90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfd2NoYXJfdC4gICovCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3Y2NiMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIGQyNmZhOWVkZWRjY2M3ZTFlYzQ3ZWFkN2YxOGFmYzgwOTcxNDgzYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxOSBNYXIgMjAxOCAyMjozMToyMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDM0LzM5XSBmaXggc2VnbWVudGF0aW9uIGZhdWx0IGluIHByZWNvbXBpbGVkIGhlYWRlciBnZW5lcmF0aW9uCisKK1ByZXZlbnQgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hpY2ggb2NjdXJzIHdoZW4gdXNpbmcgaW5jb3JyZWN0CitzdHJ1Y3R1cmUgdHJ5aW5nIHRvIGFjY2VzcyBuYW1lIG9mIHNvbWUgbmFtZWQgb3BlcmF0b3JzLCBzdWNoIGFzCitDUFBfTk9ULCBDUFBfQU5EIGV0Yy4gInRva2VuLT52YWwubm9kZS5zcGVsbGluZyIgY2Fubm90IGJlIHVzZWQgaW4KK3Rob3NlIGNhc2VzLCBhcyBpcyBtYXkgbm90IGJlIGluaXRpYWxpemVkIGF0IGFsbC4KKworW1lPQ1RPICMxMTczOF0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliY3BwL2xleC5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYworaW5kZXggZWVkZmNiYjMxNDYuLjE1MDQwYTFiMWYwIDEwMDY0NAorLS0tIGEvbGliY3BwL2xleC5jCisrKysgYi9saWJjcHAvbGV4LmMKK0BAIC0zMjgwLDExICszMjgwLDI3IEBAIGNwcF9zcGVsbF90b2tlbiAoY3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0IGNwcF90b2tlbiAqdG9rZW4sCisgICAgIHNwZWxsX2lkZW50OgorICAgICBjYXNlIFNQRUxMX0lERU5UOgorICAgICAgIGlmIChmb3JzdHJpbmcpCistCXsKKy0JICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorLQkJICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CistCSAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworLQl9CisrICAgICAgICB7CisrICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSA9PSBDUFBfTkFNRSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorKyAgICAgICAgICAgICAgICAgICAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOworKyAgICAgICAgICAgICAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAvKiBOQU1FRF9PUCwgY2Fubm90IHVzZSBub2RlLnNwZWxsaW5nICovCisrICAgICAgICAgIGlmICh0b2tlbi0+ZmxhZ3MgJiBOQU1FRF9PUCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBjcHBfbmFtZWRfb3BlcmF0b3IybmFtZSAodG9rZW4tPnR5cGUpOworKyAgICAgICAgICAgICAgaWYgKHN0cikKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oc3RyKTsKKysgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdHIsIGxlbik7CisrICAgICAgICAgICAgICAgICAgYnVmZmVyICs9IGxlbjsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorICAgICAgIGVsc2UKKyAJYnVmZmVyID0gX2NwcF9zcGVsbF9pZGVudF91Y25zIChidWZmZXIsIHRva2VuLT52YWwubm9kZS5ub2RlKTsKKyAgICAgICBicmVhazsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTE5OWZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCkBAIC0wLDAgKzEsMjU4IEBACitGcm9tIGZiNWJkZjhmODUyNzIyOGQ1ODdlOGFmOWZjNzAwZTUxNjRiM2MxOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSQUdIVU5BVEggTE9MVVIgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KK0RhdGU6IFdlZCwgNiBEZWMgMjAxNyAyMjo1MjoyNiAtMDgwMAorU3ViamVjdDogW1BBVENIIDM1LzM5XSBGaXggZm9yIHRlc3RzdWl0ZSBmYWlsdXJlCisKKzIwMTctMTEtMTYgIFJhZ2h1bmF0aCBMb2x1ciAgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KKworCSogZ2NjLmRnL3ByNTYyNzUuYzogSWYgU1NFIGlzIGRpc2FibGVkLCBlbnN1cmUgdGhhdAorCSItbWZwbWF0aCIgaXMgbm90IHNldCB0byB1c2UgU1NFLiBTZXQgIi1tZnBtYXRoPTM4NyIuCisJKiBnY2MuZGcvcHI2ODMwNi5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjgzMDYtMi5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjgzMDYtMy5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjk2MzQuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvaXNhLTE0LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmM6IExpa2V3aXNlCisKK0lmIC1XYWxsLCAtV2Vycm9yIGFyZSB1c2VkIGR1cmluZyBjb21waWxhdGlvbiB2YXJpb3VzIHRlc3QgY2FzZXMgZmFpbAordG8gY29tcGlsZS4KKworSWYgU1NFIGlzIGRpc2FibGVkLCBiZSBzdXJlIHRvIC1tZnBtYXRoPTM4NyB0byByZXNvbHZlIHRoaXMuCisKK1RoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCitUaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgICAgICAgICAgfCAxICsKKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jICAgICAgfCAyICstCisgMTcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKK2luZGV4IGI5MDFiYjJiMTk5Li5hNGY2Yzk1ZTFhMSAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KKyAKKyB0eXBlZGVmIGxvbmcgbG9uZyB2MnR3IF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMiAqIHNpemVvZiAobG9uZyBsb25nKSkpKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCitpbmRleCA0NjcyZWJlNzk4Ny4uMmEzNjhjNDg0YjYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAKKyBzdHJ1Y3QgeworICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYworaW5kZXggZjVhOGMxMDJjZjguLmRmMzM5MGM2NGMyIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisgLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tYWx0aXZlYyAtbW5vLXZzeCIgeyB0YXJnZXQgcG93ZXJwYyotKi0qIH0gfSAqLworIAorIGV4dGVybiB2b2lkIGZuMigpOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYworaW5kZXggNTRlNWI0MGYyMjEuLjA4MTMzODllMmMxIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAKKyBlbnVtIHBvd2VycGNfcG1jX3R5cGUgeyBQUENfUE1DX0lCTSB9OworIHN0cnVjdCB7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCitpbmRleCA2MGE1NjE0OTQ2My4uYmNjMjNmOWNjZDYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLWRjZSAtZnNjaGVkdWxlLWluc25zIC1mbm8tdHJlZS12cnAgLWZjb21wYXJlLWRlYnVnIC1Xbm8tcHNhYmkiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBzY2hlZHVsaW5nIH0gKi8KKyAKKyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworaW5kZXggNjlmZGU1N2JmMDYuLjdmMWYxYzAzZWRmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYWJpPXN5c3YiIHsgdGFyZ2V0ICotKi1taW5ndyogfSB9ICovCisgCisgZG91YmxlIGZvbyh2b2lkKSB7IHJldHVybiAwOyB9CS8qIHsgZGctZXJyb3IgIlNTRSBkaXNhYmxlZCIgfSAqLworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYworaW5kZXggZWE4OTZiN2ViZmQuLmJmMTU1NjliODI2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKK0BAIC0xLDYgKzEsNyBAQAorIC8qIFRlc3Qgd2hldGhlciBhbGwgb2YgdGhlIDY0LWJpdCBmdW5jdGlvbiBzcGVjaWZpYyBvcHRpb25zIGFyZSBhY2NlcHRlZAorICAgIHdpdGhvdXQgZXJyb3IuICAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWZwbWF0aD0zODciIH0gKi8KKyAKKyAjaW5jbHVkZSAiZnVuY3NwZWMtNTYuaW5jIgorIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYworaW5kZXggODU2MWEzYzI2ZDYuLjYzNzdmODE0NjQ1IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODciIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCitpbmRleCA1ZDQ5ZTZlNzdmZS4uMWRlMmRiOTJiZGQgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gcnVuIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYworaW5kZXggZmExNzY5YjYyZmIuLmY3OWZiMTI3MjZmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHN0cnVjdCBBCisgeyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCitpbmRleCAyZTg5ZmY3ZDgxZC4uNjMzOWJmNmI3MzYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHRhcmdldC81MzQyNSAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KKyAKKyB0eXBlZGVmIGRvdWJsZSBfX3YyZGYgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYworaW5kZXggNjFmNjI4M2RiZTkuLjJjNWE1NWYwYWMzIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCisgCisgdHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKK2luZGV4IDIzMzY2ZDA5MDlkLi45ODEwZTNhYmI3NiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKyAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBtYXliZV94MzIgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmciIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OworIHR5cGVkZWYgdWludDMyX3QgRWxmMzJfV29yZDsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKK2luZGV4IDk2MDA2YjNlMzM4Li40Mjg3ZTQ1MzhiZiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiB0YXJnZXQvNTk2NDQgKi8KKyAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBscDY0IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyAvKiBUaGlzIHRlc3QgdXNlcyBfX2J1aWx0aW5fdHJhcCAoKSBpbnN0ZWFkIG9mIGUuZy4gYWJvcnQsCisgICAgYmVjYXVzZSBkdWUgdG8gLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyBpdCBzaG91bGQgbm90IGNhbGwKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKK2luZGV4IGJmYjhjNDcwM2ViLi5lZDA0Y2YxODFmMyAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHZvaWQgZm9vICgpCisgeworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKK2luZGV4IDRlMTEyYzg4ZDA3Li5iY2ZiMzk2YTY4ZCAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYworQEAgLTEsNiArMSw2IEBACisgLyogUFIgcnRsLW9wdGltaXphdGlvbi83MDQ2NyAqLworIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB2b2lkIGZvbyAodW5zaWduZWQgbG9uZyBsb25nICopOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCitpbmRleCA2Y2RhMTUzNDMxMS4uMjZlMzdmNWI4YmEgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UiIH0gICovCisrLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UgLW1mcG1hdGg9Mzg3IiB9ICAqLworICNkZWZpbmUgdmVjdG9yKGVsY291bnQsIHR5cGUpICBcCisgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoKGVsY291bnQpKnNpemVvZih0eXBlKSkpKSB0eXBlCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNWUwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGRjMjNjYWJhYzZhN2IyY2E4NWIwMmQyYTU4YTg5MTZjOThmMzgyZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA2IEp1biAyMDE4IDEyOjEwOjIyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzYvMzldIFJlLWludHJvZHVjZSBzcGUgY29tbWFuZGxpbmUgb3B0aW9ucworCitUaGlzIHNob3VsZCBlbnN1cmUgdGhhdCB3ZSBrZWVwIGFjY2VwdGluZworc3BlIG9wdGlvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTUEUgcG9ydCBpcyByZW1vdmVkIGZyb20gcnM2MDAgcG9ydF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKK2luZGV4IGY0YjVjOTFlMTFmLi42OTg2OTM1MGZjZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKK0BAIC0zNDUsNiArMzQ1LDE4IEBAIG1kZWJ1Zz0KKyBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkCisgLW1kZWJ1Zz0JRW5hYmxlIGRlYnVnIG91dHB1dC4KKyAKKyttc3BlCisrVGFyZ2V0IFZhcihyczYwMDBfc3BlKSBTYXZlCisrR2VuZXJhdGUgU1BFIFNJTUQgaW5zdHJ1Y3Rpb25zIG9uIEU1MDAuCisrCisrbWFiaT1zcGUKKytUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpKSBTYXZlCisrVXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCisrCisrbWFiaT1uby1zcGUKKytUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpLCAwKQorK0RvIG5vdCB1c2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KKysKKyBtYWJpPWFsdGl2ZWMKKyBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9hbHRpdmVjX2FiaSkgU2F2ZQorIFVzZSB0aGUgQWx0aVZlYyBBQkkgZXh0ZW5zaW9ucy4KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzctQ1ZFLTIwMTktMTQyNTAtQ2hlY2stemVyby12YWx1ZS1pbi1zaW1wbGVfb2JqZWN0X2VsZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzctQ1ZFLTIwMTktMTQyNTAtQ2hlY2stemVyby12YWx1ZS1pbi1zaW1wbGVfb2JqZWN0X2VsZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjY4YTRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNy1DVkUtMjAxOS0xNDI1MC1DaGVjay16ZXJvLXZhbHVlLWluLXNpbXBsZV9vYmplY3RfZWxmLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gYWM0YWY1ODNiZDU5ZjY2MzE2NzFhZDRhYmY5ODU3OTljZTRhNTNkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHJndWVudGggPHJndWVudGhAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgorRGF0ZTogVGh1LCAyNSBKdWwgMjAxOSAxMDo0Njo1NCArMDAwMAorU3ViamVjdDogW1BBVENIIDM3LzM5XSBDVkUtMjAxOS0xNDI1MDogQ2hlY2sgemVybyB2YWx1ZSBpbgorIHNpbXBsZV9vYmplY3RfZWxmX21hdGNoCisKKzIwMTktMDctMjUgUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPgorCisJUFIgbHRvLzkwOTI0CisJQmFja3BvcnQgZnJvbSBtYWlubGluZQorCTIwMTktMDctMTIgIFJlbiBLaW11cmEgIDxya3gxMjA5ZGV2QGdtYWlsLmNvbT4KKworCSogc2ltcGxlLW9iamVjdC1lbGYuYyAoc2ltcGxlX29iamVjdF9lbGZfbWF0Y2gpOiBDaGVjayB6ZXJvIHZhbHVlCisJc2hzdHJuZHguCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy05LWJyYW5jaEAyNzM3OTMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0FmZmVjdGVzOiA8ICA5LjIKK0NWRTogQ1ZFLTIwMTktMTQyNTAKK0Ryb3BwZWQgY2hhbmdlbG9nCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPEFrdXN0cmVAbXZpc3RhLmNvbT4KKy0tLQorIGxpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIGIvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKK2luZGV4IDNkNDlmMzM5NjMxLi5jMDBjZWJkYjZjNyAxMDA2NDQKKy0tLSBhL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCisrKysgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYworQEAgLTU1Nyw2ICs1NTcsMTQgQEAgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2ggKHVuc2lnbmVkIGNoYXIgaGVhZGVyW1NJTVBMRV9PQkpFQ1RfTUFUQ0hfSEVBREVSX0xFTl0sCisgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAKKysgIGlmIChlb3ItPnNoc3RybmR4ID09IDApCisrICAgIHsKKysgICAgICAqZXJybXNnID0gImludmFsaWQgRUxGIHNoc3RybmR4ID09IDAiOworKyAgICAgICplcnIgPSAwOworKyAgICAgIFhERUxFVEUgKGVvcik7CisrICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKyAgIHJldHVybiAodm9pZCAqKSBlb3I7CisgfQorIAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOC1nZW50eXBlcy1nZW5tb2Rlcy1Eby1ub3QtdXNlLV9fTElORV9fLWZvci1tYWludGFpbmluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOC1nZW50eXBlcy1nZW5tb2Rlcy1Eby1ub3QtdXNlLV9fTElORV9fLWZvci1tYWludGFpbmluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OWZjMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2gKQEAgLTAsMCArMSwxODUgQEAKK0Zyb20gMDc1ZTA5MjllMDQ5MTM1MzgzOTEwNTJjMzIxNzhiNmExNGVmMGFlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIE1hciAyMDIwIDE0OjQxOjQwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzgvMzldIGdlbnR5cGVzL2dlbm1vZGVzOiBEbyBub3QgdXNlIF9fTElORV9fIGZvciBtYWludGFpbmluZworIHJlcHJvZHVjaWJpbGl0eQorCitJbnNlcnRpbmcgbGluZSBudW1iZXJzIGludG8gZ2VuZXJhdGVkIGNvZGUgbWVhbnMgaXRzIG5vdCBhbHdheXMgcmVwcm9kdWNpYmxlIHd0aAorZGlmZmVyaW5nIHZlcnNpb25zIG9mIGhvc3QgZ2NjLiBWb2lkIHRoZSBpc3N1ZSBieSBub3QgYWRkaW5nIHRoZXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFJlcHJvZHVjaWJpbGl0eSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2dlbmd0eXBlLmMgfCAgNiArKystLS0KKyBnY2MvZ2VubW9kZXMuYyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9nZW5ndHlwZS5jIGIvZ2NjL2dlbmd0eXBlLmMKK2luZGV4IDUzMzE3MzM3Y2Y4Li5iYmIyNjE1MTY3MSAxMDA2NDQKKy0tLSBhL2djYy9nZW5ndHlwZS5jCisrKysgYi9nY2MvZ2VuZ3R5cGUuYworQEAgLTk5MSw3ICs5OTEsNyBAQCBjcmVhdGVfZmllbGRfYXQgKHBhaXJfcCBuZXh0LCB0eXBlX3AgdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgb3B0aW9uc19wIG9wdCwKKyAvKiBDcmVhdGUgYSBmYWtlIGZpZWxkIHdpdGggdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuICBORVhUIGlzIHRoZSBuZXh0CisgICAgZmllbGQgaW4gdGhlIGNoYWluLiAgKi8KKyAjZGVmaW5lIGNyZWF0ZV9maWVsZChuZXh0LHR5cGUsbmFtZSkgXAorLSAgICBjcmVhdGVfZmllbGRfYWxsIChuZXh0LHR5cGUsbmFtZSwgMCwgdGhpc19maWxlLCBfX0xJTkVfXykKKysgICAgY3JlYXRlX2ZpZWxkX2FsbCAobmV4dCx0eXBlLG5hbWUsIDAsIHRoaXNfZmlsZSwgMCkKKyAKKyAvKiBMaWtlIGNyZWF0ZV9maWVsZCwgYnV0IHRoZSBmaWVsZCBpcyBvbmx5IHZhbGlkIHdoZW4gY29uZGl0aW9uIENPTkQKKyAgICBpcyB0cnVlLiAgKi8KK0BAIC0xMDI0LDcgKzEwMjQsNyBAQCBjcmVhdGVfb3B0aW9uYWxfZmllbGRfIChwYWlyX3AgbmV4dCwgdHlwZV9wIHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsCisgfQorIAorICNkZWZpbmUgY3JlYXRlX29wdGlvbmFsX2ZpZWxkKG5leHQsdHlwZSxuYW1lLGNvbmQpCVwKKy0gICAgICAgY3JlYXRlX29wdGlvbmFsX2ZpZWxkXyhuZXh0LHR5cGUsbmFtZSxjb25kLF9fTElORV9fKQorKyAgICAgICBjcmVhdGVfb3B0aW9uYWxfZmllbGRfKG5leHQsdHlwZSxuYW1lLGNvbmQsMCkKKyAKKyAvKiBSZXZlcnNlIGEgbGlua2VkIGxpc3Qgb2YgJ3N0cnVjdCBwYWlyJ3MgaW4gcGxhY2UuICAqLworIHBhaXJfcAorQEAgLTUxODYsNyArNTE4Niw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAvKiBUaGVzZSB0eXBlcyBhcmUgc2V0IHVwIHdpdGggI2RlZmluZSBvciBlbHNlIG91dHNpZGUgb2Ygd2hlcmUKKyAgICAgICAgICB3ZSBjYW4gc2VlIHRoZW0uICBXZSBzaG91bGQgaW5pdGlhbGl6ZSB0aGVtIGJlZm9yZSBjYWxsaW5nCisgICAgICAgICAgcmVhZF9pbnB1dF9saXN0LiAgKi8KKy0jZGVmaW5lIFBPU19IRVJFKENhbGwpIGRvIHsgcG9zLmZpbGUgPSB0aGlzX2ZpbGU7IHBvcy5saW5lID0gX19MSU5FX187IFwKKysjZGVmaW5lIFBPU19IRVJFKENhbGwpIGRvIHsgcG9zLmZpbGUgPSB0aGlzX2ZpbGU7IHBvcy5saW5lID0gMDsgXAorIAlDYWxsO30gd2hpbGUgKDApCisgICAgICAgUE9TX0hFUkUgKGRvX3NjYWxhcl90eXBlZGVmICgiQ1VNVUxBVElWRV9BUkdTIiwgJnBvcykpOworICAgICAgIFBPU19IRVJFIChkb19zY2FsYXJfdHlwZWRlZiAoIlJFQUxfVkFMVUVfVFlQRSIsICZwb3MpKTsKK2RpZmYgLS1naXQgYS9nY2MvZ2VubW9kZXMuYyBiL2djYy9nZW5tb2Rlcy5jCitpbmRleCBmMzNlZWZhMjQ5NC4uMDdiZWY5ZWViZTIgMTAwNjQ0CistLS0gYS9nY2MvZ2VubW9kZXMuYworKysrIGIvZ2NjL2dlbm1vZGVzLmMKK0BAIC00MjksNyArNDI5LDcgQEAgY29tcGxldGVfYWxsX21vZGVzICh2b2lkKQorIH0KKyAKKyAvKiBGb3IgZWFjaCBtb2RlIGluIGNsYXNzIENMQVNTLCBjb25zdHJ1Y3QgYSBjb3JyZXNwb25kaW5nIGNvbXBsZXggbW9kZS4gICovCistI2RlZmluZSBDT01QTEVYX01PREVTKEMpIG1ha2VfY29tcGxleF9tb2RlcyAoTU9ERV8jI0MsIF9fRklMRV9fLCBfX0xJTkVfXykKKysjZGVmaW5lIENPTVBMRVhfTU9ERVMoQykgbWFrZV9jb21wbGV4X21vZGVzIChNT0RFXyMjQywgX19GSUxFX18sIDApCisgc3RhdGljIHZvaWQKKyBtYWtlX2NvbXBsZXhfbW9kZXMgKGVudW0gbW9kZV9jbGFzcyBjbCwKKyAJCSAgICBjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKK0BAIC00ODcsNyArNDg3LDcgQEAgbWFrZV9jb21wbGV4X21vZGVzIChlbnVtIG1vZGVfY2xhc3MgY2wsCisgLyogRm9yIGFsbCBtb2RlcyBpbiBjbGFzcyBDTCwgY29uc3RydWN0IHZlY3RvciBtb2RlcyBvZiB3aWR0aAorICAgIFdJRFRILCBoYXZpbmcgYXMgbWFueSBjb21wb25lbnRzIGFzIG5lY2Vzc2FyeS4gICovCisgI2RlZmluZSBWRUNUT1JfTU9ERVNfV0lUSF9QUkVGSVgoUFJFRklYLCBDLCBXKSBcCistICBtYWtlX3ZlY3Rvcl9tb2RlcyAoTU9ERV8jI0MsICNQUkVGSVgsIFcsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfdmVjdG9yX21vZGVzIChNT0RFXyMjQywgI1BSRUZJWCwgVywgX19GSUxFX18sIDApCisgI2RlZmluZSBWRUNUT1JfTU9ERVMoQywgVykgVkVDVE9SX01PREVTX1dJVEhfUFJFRklYIChWLCBDLCBXKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX3ZlY3Rvcl9tb2RlcyAoZW51bSBtb2RlX2NsYXNzIGNsLCBjb25zdCBjaGFyICpwcmVmaXgsIHVuc2lnbmVkIGludCB3aWR0aCwKK0BAIC01MzgsNyArNTM4LDcgQEAgbWFrZV92ZWN0b3JfbW9kZXMgKGVudW0gbW9kZV9jbGFzcyBjbCwgY29uc3QgY2hhciAqcHJlZml4LCB1bnNpZ25lZCBpbnQgd2lkdGgsCisgLyogQ3JlYXRlIGEgdmVjdG9yIG9mIGJvb2xlYW5zIGNhbGxlZCBOQU1FIHdpdGggQ09VTlQgZWxlbWVudHMgYW5kCisgICAgQllURVNJWkUgYnl0ZXMgaW4gdG90YWwuICAqLworICNkZWZpbmUgVkVDVE9SX0JPT0xfTU9ERShOQU1FLCBDT1VOVCwgQllURVNJWkUpIFwKKy0gIG1ha2VfdmVjdG9yX2Jvb2xfbW9kZSAoI05BTUUsIENPVU5ULCBCWVRFU0laRSwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV92ZWN0b3JfYm9vbF9tb2RlICgjTkFNRSwgQ09VTlQsIEJZVEVTSVpFLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgbWFrZV92ZWN0b3JfYm9vbF9tb2RlIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgY291bnQsCisgCQkgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzaXplLCBjb25zdCBjaGFyICpmaWxlLAorQEAgLTU2MCw3ICs1NjAsNyBAQCBtYWtlX3ZlY3Rvcl9ib29sX21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBjb3VudCwKKyAvKiBJbnB1dC4gICovCisgCisgI2RlZmluZSBfU1BFQ0lBTF9NT0RFKEMsIE4pIFwKKy0gIG1ha2Vfc3BlY2lhbF9tb2RlIChNT0RFXyMjQywgI04sIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2Vfc3BlY2lhbF9tb2RlIChNT0RFXyMjQywgI04sIF9fRklMRV9fLCAwKQorICNkZWZpbmUgUkFORE9NX01PREUoTikgX1NQRUNJQUxfTU9ERSAoUkFORE9NLCBOKQorICNkZWZpbmUgQ0NfTU9ERShOKSBfU1BFQ0lBTF9NT0RFIChDQywgTikKKyAKK0BAIC01NzMsNyArNTczLDcgQEAgbWFrZV9zcGVjaWFsX21vZGUgKGVudW0gbW9kZV9jbGFzcyBjbCwgY29uc3QgY2hhciAqbmFtZSwKKyAKKyAjZGVmaW5lIElOVF9NT0RFKE4sIFkpIEZSQUNUSU9OQUxfSU5UX01PREUgKE4sIC0xVSwgWSkKKyAjZGVmaW5lIEZSQUNUSU9OQUxfSU5UX01PREUoTiwgQiwgWSkgXAorLSAgbWFrZV9pbnRfbW9kZSAoI04sIEIsIFksIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfaW50X21vZGUgKCNOLCBCLCBZLCBfX0ZJTEVfXywgMCkKKyAKKyBzdGF0aWMgdm9pZAorIG1ha2VfaW50X21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNTg2LDE2ICs1ODYsMTYgQEAgbWFrZV9pbnRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKKyB9CisgCisgI2RlZmluZSBGUkFDVF9NT0RFKE4sIFksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX0ZSQUNULCAjTiwgWSwgMCwgRiwgX19GSUxFX18sIF9fTElORV9fKQorKwltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfRlJBQ1QsICNOLCBZLCAwLCBGLCBfX0ZJTEVfXywgMCkKKyAKKyAjZGVmaW5lIFVGUkFDVF9NT0RFKE4sIFksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VGUkFDVCwgI04sIFksIDAsIEYsIF9fRklMRV9fLCBfX0xJTkVfXykKKysJbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VGUkFDVCwgI04sIFksIDAsIEYsIF9fRklMRV9fLCAwKQorIAorICNkZWZpbmUgQUNDVU1fTU9ERShOLCBZLCBJLCBGKSBcCistCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9BQ0NVTSwgI04sIFksIEksIEYsIF9fRklMRV9fLCBfX0xJTkVfXykKKysJbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX0FDQ1VNLCAjTiwgWSwgSSwgRiwgX19GSUxFX18sIDApCisgCisgI2RlZmluZSBVQUNDVU1fTU9ERShOLCBZLCBJLCBGKSBcCistCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9VQUNDVU0sICNOLCBZLCBJLCBGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9VQUNDVU0sICNOLCBZLCBJLCBGLCBfX0ZJTEVfXywgMCkKKyAKKyAvKiBDcmVhdGUgYSBmaXhlZC1wb2ludCBtb2RlIGJ5IHNldHRpbmcgQ0wsIE5BTUUsIEJZVEVTSVpFLCBJQklULCBGQklULAorICAgIEZJTEUsIGFuZCBMSU5FLiAgKi8KK0BAIC02MTYsNyArNjE2LDcgQEAgbWFrZV9maXhlZF9wb2ludF9tb2RlIChlbnVtIG1vZGVfY2xhc3MgY2wsCisgCisgI2RlZmluZSBGTE9BVF9NT0RFKE4sIFksIEYpICAgICAgICAgICAgIEZSQUNUSU9OQUxfRkxPQVRfTU9ERSAoTiwgLTFVLCBZLCBGKQorICNkZWZpbmUgRlJBQ1RJT05BTF9GTE9BVF9NT0RFKE4sIEIsIFksIEYpIFwKKy0gIG1ha2VfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrICBtYWtlX2Zsb2F0X21vZGUgKCNOLCBCLCBZLCAjRiwgX19GSUxFX18sIDApCisgCisgc3RhdGljIHZvaWQKKyBtYWtlX2Zsb2F0X21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNjMzLDcgKzYzMyw3IEBAIG1ha2VfZmxvYXRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKKyAjZGVmaW5lIERFQ0lNQUxfRkxPQVRfTU9ERShOLCBZLCBGKQlcCisgCUZSQUNUSU9OQUxfREVDSU1BTF9GTE9BVF9NT0RFIChOLCAtMVUsIFksIEYpCisgI2RlZmluZSBGUkFDVElPTkFMX0RFQ0lNQUxfRkxPQVRfTU9ERShOLCBCLCBZLCBGKQlcCistICBtYWtlX2RlY2ltYWxfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrICBtYWtlX2RlY2ltYWxfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgMCkKKyAKKyBzdGF0aWMgdm9pZAorIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTY0OCw3ICs2NDgsNyBAQCBtYWtlX2RlY2ltYWxfZmxvYXRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKKyB9CisgCisgI2RlZmluZSBSRVNFVF9GTE9BVF9GT1JNQVQoTiwgRikgXAorLSAgcmVzZXRfZmxvYXRfZm9ybWF0ICgjTiwgI0YsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIHJlc2V0X2Zsb2F0X2Zvcm1hdCAoI04sICNGLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgcmVzZXRfZmxvYXRfZm9ybWF0IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmb3JtYXQsCisgCQkgICAgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUpCitAQCAtNjY5LDcgKzY2OSw3IEBAIHJlc2V0X2Zsb2F0X2Zvcm1hdCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZm9ybWF0LAorIAorIC8qIF9faW50TiBzdXBwb3J0LiAgKi8KKyAjZGVmaW5lIElOVF9OKE0sUFJFQykJCQkJXAorLSAgbWFrZV9pbnRfbiAoI00sIFBSRUMsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfaW50X24gKCNNLCBQUkVDLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgbWFrZV9pbnRfbiAoY29uc3QgY2hhciAqbSwgaW50IGJpdHNpemUsCisgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUpCitAQCAtNjk4LDcgKzY5OCw3IEBAIG1ha2VfaW50X24gKGNvbnN0IGNoYXIgKm0sIGludCBiaXRzaXplLAorIC8qIFBhcnRpYWwgaW50ZWdlciBtb2RlcyBhcmUgc3BlY2lmaWVkIGJ5IHJlbGF0aW9uIHRvIGEgZnVsbCBpbnRlZ2VyCisgICAgbW9kZS4gICovCisgI2RlZmluZSBQQVJUSUFMX0lOVF9NT0RFKE0sUFJFQyxOQU1FKQkJCQlcCistICBtYWtlX3BhcnRpYWxfaW50ZWdlcl9tb2RlICgjTSwgI05BTUUsIFBSRUMsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfcGFydGlhbF9pbnRlZ2VyX21vZGUgKCNNLCAjTkFNRSwgUFJFQywgX19GSUxFX18sIDApCisgc3RhdGljIHZvaWQgQVRUUklCVVRFX1VOVVNFRAorIG1ha2VfcGFydGlhbF9pbnRlZ2VyX21vZGUgKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5hbWUsCisgCQkJICAgdW5zaWduZWQgaW50IHByZWNpc2lvbiwKK0BAIC03MjUsNyArNzI1LDcgQEAgbWFrZV9wYXJ0aWFsX2ludGVnZXJfbW9kZSAoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbmFtZSwKKyAvKiBBIHNpbmdsZSB2ZWN0b3IgbW9kZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IG5hbWluZyBpdHMgY29tcG9uZW50CisgICAgbW9kZSBhbmQgdGhlIG51bWJlciBvZiBjb21wb25lbnRzLiAgKi8KKyAjZGVmaW5lIFZFQ1RPUl9NT0RFKEMsIE0sIE4pIFwKKy0gIG1ha2VfdmVjdG9yX21vZGUgKE1PREVfIyNDLCAjTSwgTiwgX19GSUxFX18sIF9fTElORV9fKTsKKysgIG1ha2VfdmVjdG9yX21vZGUgKE1PREVfIyNDLCAjTSwgTiwgX19GSUxFX18sIDApOworIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX3ZlY3Rvcl9tb2RlIChlbnVtIG1vZGVfY2xhc3MgYmNsYXNzLAorIAkJICBjb25zdCBjaGFyICpiYXNlLAorQEAgLTc2OCw3ICs3NjgsNyBAQCBtYWtlX3ZlY3Rvcl9tb2RlIChlbnVtIG1vZGVfY2xhc3MgYmNsYXNzLAorIAorIC8qIEFkanVzdGFiaWxpdHkuICAqLworICNkZWZpbmUgX0FERF9BREpVU1QoQSwgTSwgWCwgQzEsIEMyKSBcCistICBuZXdfYWRqdXN0ICgjTSwgJmFkal8jI0EsICNBLCAjWCwgTU9ERV8jI0MxLCBNT0RFXyMjQzIsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG5ld19hZGp1c3QgKCNNLCAmYWRqXyMjQSwgI0EsICNYLCBNT0RFXyMjQzEsIE1PREVfIyNDMiwgX19GSUxFX18sIDApCisgCisgI2RlZmluZSBBREpVU1RfTlVOSVRTKE0sIFgpICAgIF9BRERfQURKVVNUIChudW5pdHMsIE0sIFgsIFJBTkRPTSwgUkFORE9NKQorICNkZWZpbmUgQURKVVNUX0JZVEVTSVpFKE0sIFgpICBfQUREX0FESlVTVCAoYnl0ZXNpemUsIE0sIFgsIFJBTkRPTSwgUkFORE9NKQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOS1wcm9jZXNzX2FsdF9vcGVyYW5kcy1Eb24tdC1tYXRjaC11c2VyLWRlZmluZWQtcmVncy1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOS1wcm9jZXNzX2FsdF9vcGVyYW5kcy1Eb24tdC1tYXRjaC11c2VyLWRlZmluZWQtcmVncy1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2OTExNGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM5LXByb2Nlc3NfYWx0X29wZXJhbmRzLURvbi10LW1hdGNoLXVzZXItZGVmaW5lZC1yZWdzLW8ucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gZTc1YmNjMmVjNGYxZTdlMDgxY2UxODcxM2YwYTI1OTEzYmExNTM0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZsYWRpbWlyIE1ha2Fyb3YgPHZtYWthcm92QHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDEwIEp1bCAyMDE5IDE2OjA3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzkvMzldIHByb2Nlc3NfYWx0X29wZXJhbmRzOiBEb24ndCBtYXRjaCB1c2VyIGRlZmluZWQgcmVncworIG9ubHkgaWYgdGhleSBhcmUgZWFybHkgY2xvYmJlcnMKKworUFIgdGFyZ2V0LzkxMTAyIChhYXJjaDY0IElDRSBvbiBMaW51eCBrZXJuZWwgd2l0aCAtT3Mgc3RhcnRpbmcgd2l0aCByMjcwMjY2KQorCisyMDE5LTA3LTEwICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KKworCVBSIHRhcmdldC85MTEwMgorCSogbHJhLWNvbnN0cmFpbnRzLmMgKHByb2Nlc3NfYWx0X29wZXJhbmRzKTogRG9uJ3QgbWF0Y2ggdXNlcgorCWRlZmluZWQgcmVncyBvbmx5IGlmIHRoZXkgYXJlIGVhcmx5IGNsb2JiZXJzLgorCisyMDE5LTA3LTEwICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KKworCVBSIHRhcmdldC85MTEwMgorCSogZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYzogTmV3IHRlc3QuCisKK0Zyb20tU1ZOOiByMjczMzU3CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2MvY29tbWl0LzYxM2NhZWQyZmViOWNmYzgxNTgzMDg2NzBiNTlkZjNkMDMxZWM2MjldCitbdGFrb25kcmE6IGRyb3BwZWQgY29uZmxpY3RpbmcgQ2hhbmdlTG9nIGNoYW5nZXNdCitTaWduZWQtb2ZmLWJ5OiBUYXJhcyBLb25kcmF0aXVrIDx0YWtvbmRyYUBjaXNjby5jb20+CistLS0KKyBnY2MvbHJhLWNvbnN0cmFpbnRzLmMgICAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrLS0tLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYworCitkaWZmIC0tZ2l0IGEvZ2NjL2xyYS1jb25zdHJhaW50cy5jIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5jCitpbmRleCBjZjMzZGE4MDEzZS4uNjM4MmRiZjg1MmIgMTAwNjQ0CistLS0gYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKKysrKyBiL2djYy9scmEtY29uc3RyYWludHMuYworQEAgLTIxNzIsOCArMjE3Miw5IEBAIHByb2Nlc3NfYWx0X29wZXJhbmRzIChpbnQgb25seV9hbHRlcm5hdGl2ZSkKKyAJCSAgICBlbHNlCisgCQkgICAgICB7CisgCQkJLyogT3BlcmFuZHMgZG9uJ3QgbWF0Y2guICBJZiB0aGUgb3BlcmFuZHMgYXJlCistCQkJICAgZGlmZmVyZW50IHVzZXIgZGVmaW5lZCBleHBsaWNpdCBoYXJkIHJlZ2lzdGVycywKKy0JCQkgICB0aGVuIHdlIGNhbm5vdCBtYWtlIHRoZW0gbWF0Y2guICAqLworKwkJCSAgIGRpZmZlcmVudCB1c2VyIGRlZmluZWQgZXhwbGljaXQgaGFyZAorKwkJCSAgIHJlZ2lzdGVycywgdGhlbiB3ZSBjYW5ub3QgbWFrZSB0aGVtIG1hdGNoCisrCQkJICAgd2hlbiBvbmUgaXMgZWFybHkgY2xvYmJlciBvcGVyYW5kLiAgKi8KKyAJCQlpZiAoKFJFR19QICgqY3Vycl9pZC0+b3BlcmFuZF9sb2Nbbm9wXSkKKyAJCQkgICAgIHx8IFNVQlJFR19QICgqY3Vycl9pZC0+b3BlcmFuZF9sb2Nbbm9wXSkpCisgCQkJICAgICYmIChSRUdfUCAoKmN1cnJfaWQtPm9wZXJhbmRfbG9jW21dKQorQEAgLTIxOTIsOSArMjE5MywxNyBAQCBwcm9jZXNzX2FsdF9vcGVyYW5kcyAoaW50IG9ubHlfYWx0ZXJuYXRpdmUpCisgCQkJCSYmIFJFR19QIChtX3JlZykKKyAJCQkJJiYgSEFSRF9SRUdJU1RFUl9QIChtX3JlZykKKyAJCQkJJiYgUkVHX1VTRVJWQVJfUCAobV9yZWcpKQorLQkJCSAgICAgIGJyZWFrOworKwkJCSAgICAgIHsKKysJCQkJaW50IGk7CisrCQkJCQorKwkJCQlmb3IgKGkgPSAwOyBpIDwgZWFybHlfY2xvYmJlcmVkX3JlZ3NfbnVtOyBpKyspCisrCQkJCSAgaWYgKG0gPT0gZWFybHlfY2xvYmJlcmVkX25vcHNbaV0pCisrCQkJCSAgICBicmVhazsKKysJCQkJaWYgKGkgPCBlYXJseV9jbG9iYmVyZWRfcmVnc19udW0KKysJCQkJICAgIHx8IGVhcmx5X2Nsb2JiZXJfcCkKKysJCQkJICBicmVhazsKKysJCQkgICAgICB9CisgCQkJICB9CistCisgCQkJLyogQm90aCBvcGVyYW5kcyBtdXN0IGFsbG93IGEgcmVsb2FkIHJlZ2lzdGVyLAorIAkJCSAgIG90aGVyd2lzZSB3ZSBjYW5ub3QgbWFrZSB0aGVtIG1hdGNoLiAgKi8KKyAJCQlpZiAoY3Vycl9hbHRbbV0gPT0gTk9fUkVHUykKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9wcjkxMTAyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9wcjkxMTAyLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNzBiOTkwNDVhNDgKKy0tLSAvZGV2L251bGwKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYworQEAgLTAsMCArMSwyNiBAQAorKy8qIFBSIHRhcmdldC85MTEwMiAqLworKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKysKKytpbnQKKytmb28gKGxvbmcgZCwgbG9uZyBsKQorK3sKKysgIHJlZ2lzdGVyIGxvbmcgZSBhc20gKCJ4MSIpID0gZDsKKysgIHJlZ2lzdGVyIGxvbmcgZiBhc20oIngyIikgPSBsOworKyAgYXNtICgiIiA6IDogInIiIChlKSwgInIiIChmKSk7CisrICByZXR1cm4gMzsKKyt9CisrCisrc3RydWN0IFQgeyBpbnQgaTsgaW50IGo7IH07CisrdW5pb24gUyB7IGxvbmcgaDsgc3RydWN0IFQgdDsgfTsKKysKKyt2b2lkCisrYmFyICh1bmlvbiBTIGIpCisreworKyAgd2hpbGUgKDEpCisrICAgIHsKKysgICAgICB1bmlvbiBTIGMgPSBiOworKyAgICAgIGMudC5qKys7CisrICAgICAgYi5oID0gZm9vIChiLmgsIGMuaCk7CisrICAgIH0KKyt9CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKaW5kZXggNDRjYmEyOC4uM2RjZmRmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwpAQCAtNDcsNiArNDcsNyBAQAogICAgICAgICAiaTU4NiI6ICAgICItLWVuYWJsZS10YXJnZXRzPWFsbCIsCiAgICAgICAgICJpNjg2IjogICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICAgICAgInBvd2VycGMiOiAiLS1lbmFibGUtdGFyZ2V0cz1wb3dlcnBjNjQiLAorICAgICAgICAicG93ZXJwYzY0bGUiOiAiLS1lbmFibGUtdGFyZ2V0cz1wb3dlcnBjbGUiLAogICAgICAgICAibWlwcyI6ICAgICItLWVuYWJsZS10YXJnZXRzPWFsbCIsCiAgICAgICAgICJzcGFyYyI6ICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwppbmRleCAyNGJhOGNlLi5hNjRjNGNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKQEAgLTE3LDYgKzE3LDggQEAKIAogR0NDUElFID8/PSAiIgogCitTWU1WRVJTX0NPTkYgPz0gIi0tZW5hYmxlLXN5bXZlcnM9Z251IgorCiBFWFRSQV9PRUNPTkYgPSAiXAogICAgICR7QFsnLS1lbmFibGUtY2xvY2FsZT1nZW5lcmljJywgJyddW2QuZ2V0VmFyKCdVU0VfTkxTJykgIT0gJ25vJ119IFwKICAgICAtLXdpdGgtZ251LWxkIFwKQEAgLTI3LDEwICsyOSwxMSBAQAogICAgICR7R0NDUElFfSBcCiAgICAgLS1lbmFibGUtYzk5IFwKICAgICAtLWVuYWJsZS1sb25nLWxvbmcgXAotICAgIC0tZW5hYmxlLXN5bXZlcnM9Z251IFwKKyAgICAke1NZTVZFUlNfQ09ORn0gXAogICAgIC0tZW5hYmxlLWxpYnN0ZGN4eC1wY2ggXAogICAgIC0tcHJvZ3JhbS1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCiAgICAgLS13aXRob3V0LWxvY2FsLXByZWZpeCBcCisgICAgLS1kaXNhYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKICAgICAke0VYVFJBX09FQ09ORl9CQVNFfSBcCiAgICAgJHtFWFRSQV9PRUNPTkZfR0NDX0ZMT0FUfSBcCiAgICAgJHtFWFRSQV9PRUNPTkZfUEFUSFN9IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKaW5kZXggZjE0Y2JmNy4uNTUzZWY3ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTEwOCwxMiArMTA4LDYgQEAKIAkjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGdjYy08dmVyc2lvbj4gY29waWVzCiAJcm0gLWYgJHtEfSR7YmluZGlyfS8qZ2NjLT8uPyoKIAotCSMgV2UgdXNlIGxpYmliZXJ0eSBmcm9tIGJpbnV0aWxzCi0Jcm0gLWYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2xpYi9saWJpYmVydHkuYQotCSMgTm90IHN1cmUgd2hlcmUgdGhlIHN0cmFuZ2UgcGF0aHMgY29tZSBmcm9tCi0Jcm0gLWYgJHtEfSR7bGliZGlyfS8uLi9saWIvbGliaWJlcnR5LmEKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmliZXJ0eS5hCi0KIAkjIENsZWFudXAgZW1wdHkgZGlyZWN0b3JpZXMgd2hpY2ggYXJlIG5vdCBzaGlwcGVkCiAJIyB3ZSB1c2Ugcm1kaXIgaW5zdGVhZCBvZiAncm0gLWYnIHRvIGVuc3VyZSB0aGUgbm9uIGVtcHR5IGRpcmVjdG9yaWVzIGFyZSBub3QgZGVsZXRlZAogCSMgJHtEfSR7bGliZGlyfS8uLi9saWIgb25seSBzZWVtcyB0byBhcHBlYXIgd2l0aCBTREtNQUNISU5FPWk2ODYKQEAgLTE1OCw3ICsxNTIsNyBAQAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIgogRVhUUkFfT0VDT05GX3JlbW92ZV9lbGYgPSAiLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCIKIEVYVFJBX09FQ09ORl9yZW1vdmVfZWFiaSA9ICItLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IgotRVhUUkFfT0VDT05GX2FwcGVuZF9lbGYgPSAiLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiIKLUVYVFJBX09FQ09ORl9hcHBlbmRfZWFiaSA9ICItLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIgorRVhUUkFfT0VDT05GX2FwcGVuZF9lbGYgPSAiIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2VhYmkgPSAiIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIiCiAjIGdjYyA0LjcgbmVlZHMgLWlzeXN0ZW0KIGV4cG9ydCBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQgPSAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAtaXN5c3RlbT0ke3RhcmdldF9pbmNsdWRlZGlyfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwppbmRleCA4ODU1YmIxLi42ZmE4YzI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwpAQCAtNjEsOTggKzYxLDIyIEBACiAJZXhwb3J0IENYWEZMQUdTX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX0NYWEZMQUdTfSIKIAlleHBvcnQgTERGTEFHU19GT1JfVEFSR0VUPSIke1RBUkdFVF9MREZMQUdTfSIKIAorCSMgUHJldmVudCBuYXRpdmUvaG9zdCBzeXNyb290IHBhdGggZnJvbSBiZWluZyB1c2VkIGluIGNvbmZpZ2FyZ3MuaCBoZWFkZXIsCisJIyBhcyBpdCB3aWxsIGJlIHJld3JpdHRlbiB3aGVuIHVzZWQgYnkgb3RoZXIgc3lzcm9vdHMgcHJldmVudGluZyBzdXBwb3J0CisJIyBmb3IgZ2NjIHBsdWdpbnMKKwlvZV9ydW5tYWtlIGNvbmZpZ3VyZS1nY2MKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9UQVJHRVR9QC9ob3N0QGcnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX0hPU1R9QC9ob3N0QGcnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorCisJIyBQcmV2ZW50IHN5c3Jvb3Qvd29ya2RpciBwYXRocyBmcm9tIGJlaW5nIHVzZWQgaW4gY2hlY2tzdW0tb3B0aW9ucy4KKwkjIGNoZWNrc3VtLW9wdGlvbnMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGNoZWNrc3VtIHdoaWNoIGlzIGVtYmVkZGVkIGludG8KKwkjIHRoZSBvdXRwdXQgYmluYXJ5LgorCW9lX3J1bm1ha2UgVEFSR0VULWdjYz1jaGVja3N1bS1vcHRpb25zIGFsbC1nY2MKKwlzZWQgLWkgJ3NAJHtERUJVR19QUkVGSVhfTUFQfUBAZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX0hPU1R9QC9ob3N0QGcnICR7Qn0vZ2NjL2NoZWNrc3VtLW9wdGlvbnMKKwogCW9lX3J1bm1ha2UgYWxsLWhvc3QgY29uZmlndXJlLXRhcmdldC1saWJnY2MKIAkoY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSBlbmFibGUtZXhlY3V0ZS1zdGFjay5jIHVud2luZC5oIG1kLXVud2luZC1zdXBwb3J0Lmggc2ZwLW1hY2hpbmUuaCBndGhyLWRlZmF1bHQuaCkKLQkjIG5vdyBnZW5lcmF0ZSBzY3JpcHQgdG8gZHJpdmUgdGVzdGluZwotCWVjaG8gIiMhL3Vzci9iaW4vZW52IHNoIiA+JHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNldCA+PiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0JIyBwcnVuZSBvdXQgdGhlIHVubmVlZGVkIHZhcnMKLQlzZWQgLWkgLWUgIi9eQkFTSC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlVTRVIvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15PUFQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15ESVJTVEFDSy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkVVSUQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15GVU5DTkFNRS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkdST1VQUy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkhPU1QvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15IT01FL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eSUZTL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTENfQUxML2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTE9HTkFNRS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXk1BQ0hUWVBFL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eT1NUWVBFL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUElQRS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlNIRUxML2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eJy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlVJRC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlRFUk0vZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QS0dfL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUE9TSVhMWV8vZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QUElEL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUFM0L2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlNITFZML2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eU1RBR0lORy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkxEX0xJQlJBUllfUEFUSC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlBTRVVETy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0KLQkjIGFwcGVuZCBleGVjdXRpb24gcGFydCBvZiB0aGUgc2NyaXB0Ci1jYXQgPj4gJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYyA8PCBTVE9QCi10YXJnZXQ9IlwkMSIKLXVzYWdlICgpIHsKLQllY2hvICJVc2FnZToiCi0JZWNobyAiXCQwIHVzZXJAdGFyZ2V0ICdleHRyYSBvcHRpb25zIHRvIGRlamFnbnUnIgotCWVjaG8gIlwkMCB0YXJnZXQgJ2V4dHJhIG9wdGlvbnMgdG8gZGVqYWdudSciCi0JZWNobyAiXCQwIHRhcmdldCIKLQllY2hvICJlLmcuIFwkMCAxOTIuMTY4LjcuMiAnIGRnLmV4cD12aXNpYmlsaXR5LWQuYyciCi0JZWNobyAid2lsbCBvbmx5IHJ1biB2aXNpYmlsaXR5LWQuYyB0ZXN0IGNhc2UiCi0JZWNobyAiZS5nLiBcJDAgMTkyLjE2OC43LjIgJy8tbXRodW1iIGRnLmV4cD12aXNpYmlsaXR5LWQuYyciCi0JZWNobyAid2lsbCBvbmx5IHJ1biB2aXNpYmlsaXR5LWQuYyB0ZXN0IGNhc2UgaW4gdGh1bWIgbW9kZSIKLQllY2hvICJZb3UgbmVlZCB0byBoYXZlIGRlamFnbnUgYXV0b2dlbiBleHBlY3QgaW5zdGFsbGVkIgotCWVjaG8gIm9uIHRoZSBidWlsZCBob3N0IgotICAgIH0KLWlmIFsgInhcJHRhcmdldCIgPSAieCIgXQotdGhlbgotCWVjaG8gIlBsZWFzZSBzcGVjaWZ5IHRoZSB0YXJnZXQgbWFjaGluZSBhbmQgcmVtb3RlIHVzZXIgaW4gZm9ybSBvZiB1c2VyQHRhcmdldFxuIgotCXVzYWdlCi0JZXhpdCAxOwotZmkKLQotc2hpZnQKLQotZWNobyAiXCR0YXJnZXQiIHwgZ3JlcCAiQCIgMj4mMSA+IC9kZXYvbnVsbAotaWYgWyAieFwkPyIgPSAieDAiIF0KLXRoZW4KLSAgIHVzZXI9XCQoZWNobyBcJHRhcmdldCB8IGN1dCAtZCAnQCcgLWYgMSkKLSAgIHRhcmdldD1cJChlY2hvIFwkdGFyZ2V0IHwgY3V0IC1kICdAJyAtZiAyKQotZWxzZQotICAgdXNlcj1cJFVTRVIKLWZpCi1zc2ggXCR1c2VyQFwkdGFyZ2V0IGRhdGUgMj4mMSA+IC9kZXYvbnVsbAotaWYgWyAieFwkPyIgIT0gIngwIiBdCi10aGVuCi0JZWNobyAiRmFpbGVkIGNvbm5lY3RpbmcgdG8gXCR1c2VyQFwkdGFyZ2V0IGl0IGNvdWxkIGJlIGJlY2F1c2UiCi0JZWNobyAieW91IGRvbid0IGhhdmUgcGFzc3dvcmRsZXNzIHNzaCBzZXR1cCB0byBhY2Nlc3MgXCR0YXJnZXQiCi0JZWNobyAib3Igc29tZXRpbWVzIGhvc3Qga2V5IGhhcyBiZWVuIGNoYW5nZWQiCi0JZWNobyAiaW4gc3VjaCBjYXNlIGRvIHNvbWV0aGluZyBsaWtlIGJlbG93IG9uIGJ1aWxkIGhvc3QiCi0JZWNobyAic3NoLWtleWdlbiAtZiAifi8uc3NoL2tub3duX2hvc3RzIiAtUiBcJHRhcmdldCIKLQllY2hvICJhbmQgdGhlbiB0cnkgc3NoIFwkdXNlckBcJHRhcmdldCIKLQotCXVzYWdlCi0JZXhpdCAxCi1maQotCWVjaG8gImxhcHBlbmQgYm9hcmRzX2RpciBbcHdkXS8uLi8uLi8uLiIgPiAke0J9L3NpdGUuZXhwCi0JZWNobyAibG9hZF9nZW5lcmljX2NvbmZpZyBcInVuaXhcIiIgPiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQllY2hvICJzZXRfYm9hcmRfaW5mbyB1c2VybmFtZSBcJHVzZXIiID4+ICR7Qn0vJHtQQUNLQUdFX0FSQ0h9LmV4cAotCWVjaG8gInNldF9ib2FyZF9pbmZvIHJzaF9wcm9nIHNzaCIgPj4gJHtCfS8ke1BBQ0tBR0VfQVJDSH0uZXhwCi0JZWNobyAic2V0X2JvYXJkX2luZm8gcmNwX3Byb2cgc2NwIiA+PiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQllY2hvICJzZXRfYm9hcmRfaW5mbyBob3N0bmFtZSBcJHRhcmdldCIgPj4gJHtCfS8ke1BBQ0tBR0VfQVJDSH0uZXhwCi0JREVKQUdOVT0ke0J9L3NpdGUuZXhwIG1ha2UgLWsgY2hlY2sgUlVOVEVTVEZMQUdTPSItLXRhcmdldF9ib2FyZD0ke1BBQ0tBR0VfQVJDSH1cJEAiCi0KLVNUT1AKLQotCWNobW9kICt4ICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQogfQogCiBJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKQEAgLTE5MywxMCArMTE3LDYgQEAKIAljcCAke1N9L2xpYnF1YWRtYXRoL3F1YWRtYXRoLmggJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUvCiAJY3AgJHtTfS9saWJxdWFkbWF0aC9xdWFkbWF0aF93ZWFrLmggJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUvCiAKLQkjIFdlIHVzZSBsaWJpYmVydHkgZnJvbSBiaW51dGlscwotCWZpbmQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYiAtbmFtZSBsaWJpYmVydHkuYSB8IHhhcmdzIHJtIC1mCi0JZmluZCAke0R9JHtleGVjX3ByZWZpeH0vbGliIC1uYW1lIGxpYmliZXJ0eS5oIHwgeGFyZ3Mgcm0gLWYKLQogCWZpbmQgJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUtZml4ZWQgLXR5cGUgZiAtbm90IC1uYW1lICJSRUFETUUiIC1ub3QgLW5hbWUgbGltaXRzLmggLW5vdCAtbmFtZSBzeXNsaW1pdHMuaCB8IHhhcmdzIHJtIC1mCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwppbmRleCAyZGEzYzAyLi5hY2U3MDZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTE2LDkgKzE2LDE2IEBACiAKIEVYVFJBX09FQ09ORl9hcHBlbmRfbGludXhzdGRiYXNlID0gIiAtLWVuYWJsZS1jbG9jYWxlPWdudSIKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tY2FjaGUtZmlsZT0ke0J9L2NvbmZpZy5jYWNoZSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1uZXdsaWIgPSAiIC0td2l0aC1uZXdsaWIiCiAKICMgRGlzYWJsZSBpZnVuY3MgZm9yIGxpYmF0b21pYyBvbiBhcm0gY29uZmxpY3RzIC1tYXJjaC8tbWNwdQogRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIGxpYmF0X2N2X2hhdmVfaWZ1bmM9bm8gIgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgbGliYXRfY3ZfaGF2ZV9pZnVuYz1ubyAiCisKK0RJU0FCTEVfU1RBVElDX2NsYXNzLW5hdGl2ZXNkayA/PSAiIgorCisjIE5ld2xpYiBkb2VzIG5vdCBzdXBwb3J0IHN5bWJvbCB2ZXJzaW9uaW5nIG9uIGxpYnNkdGNjKysKK1NZTVZFUlNfQ09ORl9saWJjLW5ld2xpYiA9ICIiCiAKICMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY2dCBmYWlscwogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCkBAIC0zNiw2ICs0Myw4IEBACiBSVU5USU1FVEFSR0VUID0gIiR7UlVOVElNRUxJQlNTUH0gbGlic3RkYysrLXYzIGxpYmdvbXAgbGliYXRvbWljICR7UlVOVElNRUxJQklUTX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRk9SVFJBTicsIFsnLGZvcnRyYW4nLCcsZjc3J10sICdsaWJxdWFkbWF0aCcsICcnLCBkKX0gXAogIgorIyBPbmx5IGJ1aWxkIGxpYnN0ZGMrKyBmb3IgbmV3bGliCitSVU5USU1FVEFSR0VUX2xpYmMtbmV3bGliID0gImxpYnN0ZGMrKy12MyIKIAogIyBsaWJpYmVydHkKICMgbGlibXVkZmxhcApAQCAtMTc5LDcgKzE4OCw3IEBACiAKICMgaW5jbHVkZSBweXRob24gZGVidWdnaW5nIHNjcmlwdHMKIEZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS9saWJzdGRjKysuc28uKi1nZGIucHkgXAorICAgICR7bGliZGlyfS9saWJzdGRjKysuKi1nZGIucHkgXAogICAgICR7ZGF0YWRpcn0vZ2NjLSR7QklOVn0vcHl0aG9uL2xpYnN0ZGN4eCBcCiAiCiAKQEAgLTMwMiwxMCArMzExLDYgQEAKIAogICAgICMgSEFDSzogdGhpcyB3b3JrcyBhcm91bmQgdGhlIGNvbmZpZ3VyZSBzZXR0aW5nIENYWCB3aXRoIC1ub3N0ZCogYXJncwogICAgIHNlZCAtaSAncy8tbm9zdGRpbmMrKyAtbm9zdGRsaWIrKy8vZycgJChmaW5kICR7Qn0gLW5hbWUgdGVzdHN1aXRlX2ZsYWdzIHwgaGVhZCAtMSkKLSAgICAjIEhBQ0s6IHRoaXMgd29ya3MgYXJvdW5kIHRoZSBkZS1zdGFzaGluZyBjaGFuZ2VzIHRvIGNvbmZpZ2FyZ3MuaCwgYXMgd2VsbCBhcyByZWNpcGUtc3lzcm9vdCBjaGFuZ2luZyB0aGUgY29udGVudAotICAgIHNlZCAtaSAnL3N0YXRpYyBjb25zdCBjaGFyIGNvbmZpZ3VyYXRpb25fYXJndW1lbnRzL2QnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAotICAgICR7Q0N9IC12IDI+JjEgfCBncmVwICJeQ29uZmlndXJlZCB3aXRoOiIgfCBcCi0gICAgICAgIHNlZCAncy9Db25maWd1cmVkIHdpdGg6IFwoLipcKS9zdGF0aWMgY29uc3QgY2hhciBjb25maWd1cmF0aW9uX2FyZ3VtZW50c1tdID0gIlwxIjsvZycgPj4gJHtCfS9nY2MvY29uZmlnYXJncy5oCiAKICAgICBpZiBbICIke1RPT0xDSEFJTl9URVNUX1RBUkdFVH0iID0gInVzZXIiIF07IHRoZW4KICAgICAgICAgIyBxZW11IHVzZXIgaGFzIGlzc3VlcyBhbGxvY2F0aW5nIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKaW5kZXggOGIxZDFjOS4uNjY4ZTE0YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCkBAIC00Myw3ICs0Myw3IEBACiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgotREVQRU5EUyA9ICJnY2MtcnVudGltZSB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiCitERVBFTkRTID0gInZpcnR1YWwvY3J5cHQgZ2NjLXJ1bnRpbWUgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIgogCiAjIHVzZWQgdG8gZml4IC4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmstc2hhcmVkL2djYy04LjMuMC1yMC9nY2MtOC4zLjAvbGlic2FuaXRpemVyL2xpYmJhY2t0cmFjZS8uLi8uLi9saWJiYWNrdHJhY2UvZWxmLmM6NzcyOjIxOiBlcnJvcjogJ3N0LnN0X21vZGUnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQogREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZCA9ICIgLVduby1lcnJvciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKaW5kZXggYmRjNmZmNi4uOGNiNDMyNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYwpAQCAtMTksNiArMTksNyBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N2EgPSAiIC0td2l0aC1hcmNoPWFybXY3LWEke0FSTUZQQVJDSEVYVH0iCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3dmUgPSAiIC0td2l0aC1hcmNoPWFybXY3dmUke0FSTUZQQVJDSEVYVH0iCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FyYyA9ICIgLS13aXRoLWNwdT0ke1RVTkVfUEtHQVJDSH0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX3g4Ni02NCA9ICIgLS13aXRoLWFyY2g9bmF0aXZlIgogCiAjIGxpYmNjMSByZXF1cmVzIGdjY19jdl9vYmpkdW1wIHdoZW4gY3Jvc3MgYnVpbGQsIGJ1dCBnY2NfY3Zfb2JqZHVtcCBpcwogIyBzZXQgaW4gc3ViZGlyIGdjYywgc28gc3ViZGlyIGxpYmNjMSBjYW4ndCB1c2UgaXQsIGV4cG9ydCBpdCBoZXJlIHRvCkBAIC0xMzcsNiArMTM4LDIxIEBACiAiCiAKIGRvX2NvbXBpbGUgKCkgeworCSMgUHJldmVudCBmdWxsIHRhcmdldCBzeXNyb290IHBhdGggZnJvbSBiZWluZyB1c2VkIGluIGNvbmZpZ2FyZ3MuaCBoZWFkZXIsCisJIyBhcyBpdCB3aWxsIGJlIHJld3JpdHRlbiB3aGVuIHVzZWQgYnkgb3RoZXIgc3lzcm9vdHMgcHJldmVudGluZyBzdXBwb3J0CisJIyBmb3IgZ2NjIHBsdWdpbnMuIEFkZGl0aW9uYWxseSB0aGUgcGF0aCBpcyBlbWJlZGRlZGVkIGludG8gdGhlIG91dHB1dAorCSMgYmluYXJ5LCB0aGlzIHByZXZlbnRzIGJ1aWxkaW5nIGEgcmVwcm9kdWNpYmxlIGJpbmFyeS4KKwlvZV9ydW5tYWtlIGNvbmZpZ3VyZS1nY2MKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9UQVJHRVR9QC9AZycgJHtCfS9nY2MvY29uZmlnYXJncy5oCisJc2VkIC1pICdzQCR7U1RBR0lOR19ESVJfSE9TVH1AL0BnJyAke0J9L2djYy9jb25maWdhcmdzLmgKKworCSMgUHJldmVudCBzeXNyb290L3dvcmtkaXIgcGF0aHMgZnJvbSBiZWluZyB1c2VkIGluIGNoZWNrc3VtLW9wdGlvbnMuCisJIyBjaGVja3N1bS1vcHRpb25zIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBjaGVja3N1bSB3aGljaCBpcyBlbWJlZGRlZCBpbnRvCisJIyB0aGUgb3V0cHV0IGJpbmFyeS4KKwlvZV9ydW5tYWtlIFRBUkdFVC1nY2M9Y2hlY2tzdW0tb3B0aW9ucyBhbGwtZ2NjCisJc2VkIC1pICdzQCR7REVCVUdfUFJFRklYX01BUH1AQGcnICR7Qn0vZ2NjL2NoZWNrc3VtLW9wdGlvbnMKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9UQVJHRVR9QC9AZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCiAJb2VfcnVubWFrZSBhbGwtaG9zdAogfQogCkBAIC0xNjQsNiArMTgwLDEwIEBACiAJIyBDbGVhbnVwIG1hbnBhZ2VzLi4KIAlybSAtcmYgJHtEfSR7bWFuZGlyfS9tYW43CiAKKwkjIERvbid0IHBhY2thZ2UgZGV0YWlscyBhYm91dCB0aGUgYnVpbGQgaG9zdAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9wbHVnaW4vaW5jbHVkZS9hdXRvLWJ1aWxkLmgKKwlybSAtZiAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vcGx1Z2luL2luY2x1ZGUvYmNvbmZpZy5oCisKIAljZCAke0R9JHtiaW5kaXJ9CiAKIAkjIFdlIGNhcmUgYWJvdXQgZysrIG5vdCBjKysKQEAgLTE3MiwxMCArMTkyLDYgQEAKIAkjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGdjYy08dmVyc2lvbj4gb25lcyBmb3IgdGhpcwogCXJtIC1mICpnY2MtPy4/KgogCi0JIyBXZSB1c2UgbGliaWJlcnR5IGZyb20gYmludXRpbHMKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgbGliaWJlcnR5LmEgfCB4YXJncyBybSAtZgotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSBsaWJpYmVydHkuaCB8IHhhcmdzIHJtIC1mCi0KIAkjIE5vdCBzdXJlIHdoeSB3ZSBlbmQgdXAgd2l0aCB0aGVzZSBidXQgd2UgZG9uJ3Qgd2FudCB0aGVtLi4uCiAJcm0gLWYgJHtUQVJHRVRfUFJFRklYfSR7VEFSR0VUX1BSRUZJWH0qCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF85LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF85LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKaW5kZXggZTAwOGQxNC4uNmQ0OGVjOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKQEAgLTksMTQgKzksMTggQEAKIAkJCSJsaW51eC1tdXNsZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaSI7OwogCQkJKikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwogCQllc2FjCi0JCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlpZiBbICEgLWUgJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcyBdOyB0aGVuCisJCQlsbiAtcyAke1RBUkdFVF9TWVN9ICR7RH0ke2xpYmRpcn0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSRleHRyYV90YXJnZXRfb3MKKwkJZmkKIAlmaQogCWlmIFsgLW4gIiR7QCBiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1NfTUZMT0FUJywgJ2hhcmQnLCAnaGYnLCAnJywgZCl9IiBdOyB0aGVuCiAJCWNhc2UgIiR7VEFSR0VUX09TfSIgaW4KIAkJCSJsaW51eC1tdXNsZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtbXVzbGVhYmloZiI7OwogCQkJImxpbnV4LWdudWVhYmkiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4LWdudWVhYmloZiI7OwogCQllc2FjCi0JCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlpZiBbICEgLWUgJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcyBdOyB0aGVuCisJCQlsbiAtcyAke1RBUkdFVF9TWVN9ICR7RH0ke2xpYmRpcn0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSRleHRyYV90YXJnZXRfb3MKKwkJZmkKIAlmaQogfQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY185LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMy4xLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4zLjEuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWYxYzQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4zLjEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RiL2dkYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzNiNmE1ZDgxNDE2NzJjNjJiZjg1MWNkMzRjNGFhODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU1NWI0ZDdjZGNhN2IzNGJlMTJmNGNlYWU2NTE2MjNhYTczYjJmZDY0MDE1MjMxM2Y5ZjY2YTcxNDk3NTdjNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOS4xLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOS4xLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDE5ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi05LjEuaW5jCkBAIC0wLDAgKzEsMjEgQEAKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MyAmIExHUEx2MiAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorCQkgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorCQkgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYi9nZGItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImY3ZTlmNjIzNmM0MjUwOTdkOWU1ZjE4YTZhYzQwNjU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5OWUwZWM4MzJmZGQyZjIxYzgyNjYxNzFlYTViZjQ0MDI0YmQwNTE2NGZkZjA2NGU0ZDEwY2M0Y2YwZDE3MzciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzguMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl85LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4zLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOS4xLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc185LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4zLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOS4xLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWZlN2Y4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhpcyBwcm9ibGVtIHdhcyBjcmVhdGVkIGJ5IHRoZSB1cHN0cmVhbSBjb21taXQgNzg3MDhiN2M4YwotQWZ0ZXIgYXBwbHlpbmcgdGhlIGNvbW1pdCwgaXQgd2lsbCBzZW5kIFNJR0lOVCB0byB0aGUgcHJvY2VzcyBncm91cCgtc2lnbmFsX3BpZCkuCi1CdXQgaWYgd2UgdXNlIGdkYnNlcnZlciBzZW5kIFNJR0lOVCwgYW5kIHRoZSBhdHRhY2hlZCBwcm9jZXNzIGlzIG5vdCBhIHByb2Nlc3MKLWdyb3VwIGxlYWRlciwgdGhlbiB0aGUgImtpbGwgKC1zaWduYWxfcGlkLCBTSUdJTlQpIiByZXR1cm5zIGVycm9yIGFuZCBmYWlscyAgdG8KLWludGVycnVwdCB0aGUgYXR0YWNoZWQgcHJvY2Vzcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4OTQ1XQotCi1BdXRob3I6IEpvc2ggR2FvCi1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogZ2RiLTguMi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTguMi5vcmlnL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLSsrKyBnZGItOC4yL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLUBAIC01OTQwLDkgKzU5NDAsNyBAQCBsaW51eF9sb29rX3VwX3N5bWJvbHMgKHZvaWQpCi0gc3RhdGljIHZvaWQKLSBsaW51eF9yZXF1ZXN0X2ludGVycnVwdCAodm9pZCkKLSB7Ci0tICAvKiBTZW5kIGEgU0lHSU5UIHRvIHRoZSBwcm9jZXNzIGdyb3VwLiAgVGhpcyBhY3RzIGp1c3QgbGlrZSB0aGUgdXNlcgotLSAgICAgdHlwZWQgYSBeQyBvbiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwuICAqLwotLSAga2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCk7Ci0rICBraWxsIChzaWduYWxfcGlkLCBTSUdJTlQpOwotIH0KLSAKLSAvKiBDb3B5IExFTiBieXRlcyBmcm9tIGluZmVyaW9yJ3MgYXV4aWxpYXJ5IHZlY3RvciBzdGFydGluZyBhdCBPRkZTRVQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMjg3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gMDM2ZjhlMWQzODdmNjVlNTJjYjAyMWRiYjFiZDI4ZThiNzVjZjAxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6Mjc6NTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZSBtYW4gaW5zdGFsbCByZWxhdGl2ZSB0byBERVNURElSCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4gYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCitpbmRleCBjNmRlMTQxMjJjLi5jNGIxMjE0OTQ2IDEwMDY0NAorLS0tIGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgorKysrIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgorQEAgLTM1LDcgKzM1LDcgQEAgdG9vbGRpciA9ICQobGliZGlyKS8kKHRhcmdldF9hbGlhcykKKyBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKKyBkYXRhZGlyID0gQGRhdGFkaXJACisgbWFuZGlyID0gQG1hbmRpckAKKy1tYW4xZGlyID0gJChtYW5kaXIpL21hbjEKKyttYW4xZGlyID0gJChERVNURElSKSQobWFuZGlyKS9tYW4xCisgaW5mb2RpciA9IEBpbmZvZGlyQAorIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDQ3OWU1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGIwMjA5ZjI4MjcxNmJlZDJjMjMwYzdiNDk2ZmJjYzdhZjUwM2QwY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjI3OjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIG1ha2UgbWFuIGluc3RhbGwgcmVsYXRpdmUgdG8gREVTVERJUgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNpbS9jb21tb24vTWFrZWZpbGUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zaW0vY29tbW9uL01ha2VmaWxlLmluIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgotaW5kZXggMjI3ZTRjZmJjMi4uOGMzNDU3ZTBiZCAxMDA2NDQKLS0tLSBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KLSsrKyBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KLUBAIC0zNSw3ICszNSw3IEBAIHRvb2xkaXIgPSAkKGxpYmRpcikvJCh0YXJnZXRfYWxpYXMpCi0gZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACi0gZGF0YWRpciA9IEBkYXRhZGlyQAotIG1hbmRpciA9IEBtYW5kaXJACi0tbWFuMWRpciA9ICQobWFuZGlyKS9tYW4xCi0rbWFuMWRpciA9ICQoREVTVERJUikkKG1hbmRpcikvbWFuMQotIGluZm9kaXIgPSBAaW5mb2RpckAKLSBpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACi0gCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2N2NhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDZiZmYyODYyZjk1OTdmMzI0YTkzODVlYjJmODI4ZTgzOGU1MWE4YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAwNjozMDowOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBtaXBzLWxpbnV4LW5hdDogRGVmaW5lIF9BQklPMzIgaWYgbm90IGRlZmluZWQKKworVGhpcyBoZWxwcyBidWlsZGluZyBnZGIgb24gbWlwczY0IG9uIG11c2wsIHNpbmNlCittdXNsIGRvZXMgbm90IHByb3ZpZGUgc2dpZGVmcy5oIHRoaXMgZGVmaW5lIGlzCitvbmx5IGRlZmluZWQgd2hlbiBHQ0MgaXMgdXNpbmcgbzMyIEFCSSwgaW4gdGhhdAorY2FzZSBnY2MgZW1pdHMgaXQgYXMgYnVpbHQtaW4gZGVmaW5lIGFuZCBoZW5jZQoraXQgd29ya3Mgb2sgZm9yIG1pcHMzMgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK2luZGV4IDEwNGM5NzJmMjQuLjdmNTc1YjMzNjMgMTAwNjQ0CistLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYworKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK0BAIC00MSw2ICs0MSwxMCBAQAorICNpZm5kZWYgUFRSQUNFX0dFVF9USFJFQURfQVJFQQorICNkZWZpbmUgUFRSQUNFX0dFVF9USFJFQURfQVJFQSAyNQorICNlbmRpZgorKy8qIG11c2wgZG9lcyBub3QgZGVmaW5lIGFuZCByZWxpZXMgb24gY29tcGlsZXIgYnVpbHQtaW4gbWFjcm9zIGZvciBpdCAgICovCisrI2lmbmRlZiBfQUJJTzMyCisrI2RlZmluZSBfQUJJTzMyIDEKKysjZW5kaWYKKyAKKyBjbGFzcyBtaXBzX2xpbnV4X25hdF90YXJnZXQgZmluYWwgOiBwdWJsaWMgbGludXhfbmF0X3RyYWRfdGFyZ2V0CisgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjU0Yzc0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gYjE0YTU3ZDkwZTFjZGQ4MTQ0Y2RhNGM4ODgyYmQxZGI0NGQyNmRhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE1hciAyMDE2IDA2OjMwOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTFdIG1pcHMtbGludXgtbmF0OiBEZWZpbmUgX0FCSU8zMiBpZiBub3QgZGVmaW5lZAotCi1UaGlzIGhlbHBzIGJ1aWxkaW5nIGdkYiBvbiBtaXBzNjQgb24gbXVzbCwgc2luY2UKLW11c2wgZG9lcyBub3QgcHJvdmlkZSBzZ2lkZWZzLmggdGhpcyBkZWZpbmUgaXMKLW9ubHkgZGVmaW5lZCB3aGVuIEdDQyBpcyB1c2luZyBvMzIgQUJJLCBpbiB0aGF0Ci1jYXNlIGdjYyBlbWl0cyBpdCBhcyBidWlsdC1pbiBkZWZpbmUgYW5kIGhlbmNlCi1pdCB3b3JrcyBvayBmb3IgbWlwczMyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9taXBzLWxpbnV4LW5hdC5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL21pcHMtbGludXgtbmF0LmMgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotaW5kZXggMzI4MzVjMTZiMi4uNjhhNzU4N2FmMiAxMDA2NDQKLS0tLSBhL2dkYi9taXBzLWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotQEAgLTQxLDYgKzQxLDEwIEBACi0gI2lmbmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBCi0gI2RlZmluZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIDI1Ci0gI2VuZGlmCi0rLyogbXVzbCBkb2VzIG5vdCBkZWZpbmUgYW5kIHJlbGllcyBvbiBjb21waWxlciBidWlsdC1pbiBtYWNyb3MgZm9yIGl0ICAgKi8KLSsjaWZuZGVmIF9BQklPMzIKLSsjZGVmaW5lIF9BQklPMzIgMQotKyNlbmRpZgotIAotIGNsYXNzIG1pcHNfbGludXhfbmF0X3RhcmdldCBmaW5hbCA6IHB1YmxpYyBsaW51eF9uYXRfdHJhZF90YXJnZXQKLSB7Ci0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0YmFiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGQ1ODE3YmNmMmY3MzEzNjk5YmZhODViNDEyMjBkODYyZGIzMjc2NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxODozMjoxNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBwcGMvcHRyYWNlOiBEZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3Mgb24gIUdMSUJDIHN5c3RlbXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyB8IDYgKysrKysrCisgZ2RiL25hdC9wcGMtbGludXguaCAgICAgICAgICAgfCA2ICsrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYworaW5kZXggNWQ4ZDY3YmVjMi4uZmZjZjY1YWI1OCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYworQEAgLTIzLDcgKzIzLDEzIEBACisgI2luY2x1ZGUgImVsZi9jb21tb24uaCIKKyAjaW5jbHVkZSA8c3lzL3Vpby5oPgorICNpbmNsdWRlIDxlbGYuaD4KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgZGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgdW5kZWYgcHRfcmVncworKyNlbmRpZgorIAorICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC1jb21tb24uaCIKKyAjaW5jbHVkZSAiYXJjaC9wcGMtbGludXgtdGRlc2MuaCIKK2RpZmYgLS1naXQgYS9nZGIvbmF0L3BwYy1saW51eC5oIGIvZ2RiL25hdC9wcGMtbGludXguaAoraW5kZXggZDkzN2E2NWI2OS4uMWZkNTRiNGEwZSAxMDA2NDQKKy0tLSBhL2dkYi9uYXQvcHBjLWxpbnV4LmgKKysrKyBiL2dkYi9uYXQvcHBjLWxpbnV4LmgKK0BAIC0xOCw3ICsxOCwxMyBAQAorICNpZm5kZWYgTkFUX1BQQ19MSU5VWF9ICisgI2RlZmluZSBOQVRfUFBDX0xJTlVYX0gKKyAKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgZGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgdW5kZWYgcHRfcmVncworKyNlbmRpZgorICNpbmNsdWRlIDxhc20vY3B1dGFibGUuaD4KKyAKKyAvKiBUaGlzIHNvbWV0aW1lcyBpc24ndCBkZWZpbmVkLiAgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxNjVkNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCkBAIC0wLDAgKzEsOTExIEBACitGcm9tIDUwNWYxMGEwZWExYThiYmEwNTg0ODU5ZDlhMzQ4YmI3Nzk1OTNlYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjMxOjEyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBSZW5lc2FzIFNIIChzaDQpIGFyY2hpdGVjdHVyZS4KKworZ2RiICg3LjQtMX5jdnMyMDExMTExNy4yKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93CisgLgorICAgKiBBZGQgUmVuZXNhcyBTSCAoc2g0KSBzdXBwb3J0IChDbG9zZXM6ICM1NzYyNDIpCisgICAgIC0gVGhhbmtzIE5vYnVoaXJvIEl3YW1hdHN1LCBUYWthc2hpIFlvc2hpaS4KK0F1dGhvcjogSGVjdG9yIE9yb24gPHp1bWJpQGRlYmlhbi5vcmc+CitCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzU3NjI0MgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKworIGdkYi9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCisgZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIGdkYi9zaC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MyArKy0KKyBnZGIvc2gtdGRlcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIHwgICA1ICsKKyBnZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jICAgICAgICAgfCAgIDMgKy0KKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyAgICAgfCAgIDMgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKworIDExIGZpbGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgoraW5kZXggYzNlMDc0YjIxZi4uNDJkZDdhZjU5YyAxMDA2NDQKKy0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL01ha2VmaWxlLmluCitAQCAtMjMxNyw2ICsyMzE3LDggQEAgQUxMREVQRklMRVMgPSBcCisgCXNoLW5ic2QtbmF0LmMgXAorIAlzaC1uYnNkLXRkZXAuYyBcCisgCXNoLXRkZXAuYyBcCisrCXNoLWxpbnV4LXRkZXAuYyBcCisrCXNoLWxpbnV4LW5hdC5jIFwKKyAJc29sMi10ZGVwLmMgXAorIAlzb2xpYi1haXguYyBcCisgCXNvbGliLXN2cjQuYyBcCitkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0CitpbmRleCBjZTUyODIzNzI5Li41YjUxNzNhNzFhIDEwMDY0NAorLS0tIGEvZ2RiL2NvbmZpZ3VyZS5ob3N0CisrKysgYi9nZGIvY29uZmlndXJlLmhvc3QKK0BAIC0xNDgsNiArMTQ4LDcgQEAgcmlzY3YqLSotbGludXgqKQlnZGJfaG9zdD1saW51eCA7OworIAorIHMzOTAqLSotbGludXgqKQkJZ2RiX2hvc3Q9bGludXggOzsKKyAKKytzaCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OworIHNoKi0qLW5ldGJzZGVsZiogfCBzaCotKi1rbmV0YnNkKi1nbnUpCisgCQkJZ2RiX2hvc3Q9bmJzZCA7OworIHNoKi0qLW9wZW5ic2QqKQkJZ2RiX2hvc3Q9bmJzZCA7OworZGlmZiAtLWdpdCBhL2dkYi9zaC1saW51eC10ZGVwLmMgYi9nZGIvc2gtbGludXgtdGRlcC5jCitpbmRleCAxM2MxMGVlZWRhLi4xZDBkNTgzYTY0IDEwMDY0NAorLS0tIGEvZ2RiL3NoLWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYworQEAgLTE4LDE0ICsxOCwzNyBAQAorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJnZGJjb3JlLmgiCisrI2luY2x1ZGUgImZyYW1lLmgiCisrI2luY2x1ZGUgImZyYW1lLWJhc2UuaCIKKysjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCisrI2luY2x1ZGUgImR3YXJmMi1mcmFtZS5oIgorKyNpbmNsdWRlICJ2YWx1ZS5oIgorKyNpbmNsdWRlICJyZWdjYWNoZS5oIgorKyNpbmNsdWRlICJpbmZlcmlvci5oIgorICNpbmNsdWRlICJvc2FiaS5oIgorIAorKyNpbmNsdWRlICJyZWdncm91cHMuaCIKKysjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorKyNpbmNsdWRlICJmbG9hdGZvcm1hdC5oIgorICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCisgI2luY2x1ZGUgInN5bXRhYi5oIgorKyNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorIAorICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCisgCisrI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorKyNpbmNsdWRlIDxzeXMvdXNlci5oPgorKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorKworKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrCisrI2luY2x1ZGUgInJlZ3NldC5oIgorICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCisgI2luY2x1ZGUgInNoLXRkZXAuaCIKKyAjaW5jbHVkZSAibGludXgtdGRlcC5oIgorQEAgLTE4MSw5ICsyMDQsNTA1IEBAIHN0YXRpYyBzdHJ1Y3QgdHJhbXBfZnJhbWUgc2hfbGludXhfcnRfc2lncmV0dXJuX3RyYW1wX2ZyYW1lID0geworICAgc2hfbGludXhfcnRfc2lncmV0dXJuX2luaXQKKyB9OworIAorKy8qIFJlY29nbml6aW5nIHNpZ25hbCBoYW5kbGVyIGZyYW1lcy4gICovCisrCisrLyogR05VL0xpbnV4IGhhcyB0d28gZmxhdm9ycyBvZiBzaWduYWxzLiAgTm9ybWFsIHNpZ25hbCBoYW5kbGVycywgYW5kCisrICAgInJlYWx0aW1lIiAoUlQpIHNpZ25hbHMuICBUaGUgUlQgc2lnbmFscyBjYW4gcHJvdmlkZSBhZGRpdGlvbmFsCisrICAgaW5mb3JtYXRpb24gdG8gdGhlIHNpZ25hbCBoYW5kbGVyIGlmIHRoZSBTQV9TSUdJTkZPIGZsYWcgaXMgc2V0CisrICAgd2hlbiBlc3RhYmxpc2hpbmcgYSBzaWduYWwgaGFuZGxlciB1c2luZyBgc2lnYWN0aW9uJy4gIEl0IGlzIG5vdAorKyAgIHVubGlrZWx5IHRoYXQgZnV0dXJlIHZlcnNpb25zIG9mIEdOVS9MaW51eCB3aWxsIHN1cHBvcnQgU0FfU0lHSU5GTworKyAgIGZvciBub3JtYWwgc2lnbmFscyB0b28uICAqLworKworKy8qIFdoZW4gdGhlIFNIIExpbnV4IGtlcm5lbCBjYWxscyBhIHNpZ25hbCBoYW5kbGVyIGFuZCB0aGUKKysgICBTQV9SRVNUT1JFUiBmbGFnIGlzbid0IHNldCwgdGhlIHJldHVybiBhZGRyZXNzIHBvaW50cyB0byBhIGJpdCBvZgorKyAgIGNvZGUgb24gdGhlIHN0YWNrLiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHdoZXRoZXIgdGhlIFBDIGFwcGVhcnMgdG8KKysgICBiZSB3aXRoaW4gdGhpcyBiaXQgb2YgY29kZS4KKysKKysgICBUaGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UgZm9yIG5vcm1hbCBzaWduYWxzIGlzCisrICAgICAgIG1vdi53ICAxZixyMworKyAgICAgICB0cmFwYSAgIzE2CisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAxOiAud29yZCAgX19OUl9zaWdyZXR1cm4KKysgICBvciAweDkzMDUgMHhjMzEwIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgwMDc3LgorKworKyAgIENoZWNraW5nIGZvciB0aGUgY29kZSBzZXF1ZW5jZSBzaG91bGQgYmUgc29tZXdoYXQgcmVsaWFibGUsIGJlY2F1c2UKKysgICB0aGUgZWZmZWN0IGlzIHRvIGNhbGwgdGhlIHN5c3RlbSBjYWxsIHNpZ3JldHVybi4gIFRoaXMgaXMgdW5saWtlbHkKKysgICB0byBvY2N1ciBhbnl3aGVyZSBvdGhlciB0aGFuIGEgc2lnbmFsIHRyYW1wb2xpbmUuCisrCisrICAgSXQga2luZCBvZiBzdWNrcyB0aGF0IHdlIGhhdmUgdG8gcmVhZCBtZW1vcnkgZnJvbSB0aGUgcHJvY2VzcyBpbgorKyAgIG9yZGVyIHRvIGlkZW50aWZ5IGEgc2lnbmFsIHRyYW1wb2xpbmUsIGJ1dCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUKKysgICBhbnkgb3RoZXIgd2F5LiAgVGhlIFBDX0lOX1NJR1RSQU1QIG1hY3JvIGluIHRtLWxpbnV4LmggYXJyYW5nZXMgdG8KKysgICBvbmx5IGNhbGwgdXMgaWYgbm8gZnVuY3Rpb24gbmFtZSBjb3VsZCBiZSBpZGVudGlmaWVkLCB3aGljaCBzaG91bGQKKysgICBiZSB0aGUgY2FzZSBzaW5jZSB0aGUgY29kZSBpcyBvbiB0aGUgc3RhY2suCisrCisrICAgRGV0ZWN0aW9uIG9mIHNpZ25hbCB0cmFtcG9saW5lcyBmb3IgaGFuZGxlcnMgdGhhdCBzZXQgdGhlCisrICAgU0FfUkVTVE9SRVIgZmxhZyBpcyBpbiBnZW5lcmFsIG5vdCBwb3NzaWJsZS4gIFVuZm9ydHVuYXRlbHkgdGhpcyBpcworKyAgIHdoYXQgdGhlIEdOVSBDIExpYnJhcnkgaGFzIGJlZW4gZG9pbmcgZm9yIHF1aXRlIHNvbWUgdGltZSBub3cuCisrICAgSG93ZXZlciwgYXMgb2YgdmVyc2lvbiAyLjEuMiwgdGhlIEdOVSBDIExpYnJhcnkgdXNlcyBzaWduYWwKKysgICB0cmFtcG9saW5lcyAobmFtZWQgX19yZXN0b3JlIGFuZCBfX3Jlc3RvcmVfcnQpIHRoYXQgYXJlIGlkZW50aWNhbAorKyAgIHRvIHRoZSBvbmVzIHVzZWQgYnkgdGhlIGtlcm5lbC4gIFRoZXJlZm9yZSwgdGhlc2UgdHJhbXBvbGluZXMgYXJlCisrICAgc3VwcG9ydGVkIHRvby4gICovCisrCisrI2RlZmluZSBNT1ZXKG4pCSAoMHg5MzAwfCgobiktMikpCS8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrbiB0byBSMyAqLworKyNkZWZpbmUgVFJBUDE2CSAweGMzMTAJCQkvKiBTeXNjYWxsIHcvbm8gYXJncyAoTlIgaW4gUjMpICovCisrI2RlZmluZSBPUl9SMF9SMCAweDIwMGIJCQkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KKysKKysjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04wCU1PVlcoNykJCS8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrNyB0byBSMyAqLworKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjEJVFJBUDE2CQkvKiBTeXNjYWxsIHcvbm8gYXJncyAoTlIgaW4gUjMpICovCisrI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMglPUl9SMF9SMAkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGludXhfc2lndHJhbXBfY29kZVtdID0KKyt7CisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMCwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04xLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIF9fTlJfc2lncmV0dXJuCisrfTsKKysKKysjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0xFTiAoc2l6ZW9mIGxpbnV4X3NpZ3RyYW1wX2NvZGUpCisrCisrLyogSWYgUEMgaXMgaW4gYSBzaWd0cmFtcCByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0IG9mCisrICAgdGhlIHJvdXRpbmUuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAobmV4dF9mcmFtZSk7CisrICBnZGJfYnl0ZSBidWZbTElOVVhfU0lHVFJBTVBfTEVOXTsKKysKKysgIC8qIFdlIG9ubHkgcmVjb2duaXplIGEgc2lnbmFsIHRyYW1wb2xpbmUgaWYgUEMgaXMgYXQgdGhlIHN0YXJ0IG9mCisrICAgICBvbmUgb2YgdGhlIHRocmVlIGluc3RydWN0aW9ucy4gIFdlIG9wdGltaXplIGZvciBmaW5kaW5nIHRoZSBQQyBhdAorKyAgICAgdGhlIHN0YXJ0LCBhcyB3aWxsIGJlIHRoZSBjYXNlIHdoZW4gdGhlIHRyYW1wb2xpbmUgaXMgbm90IHRoZQorKyAgICAgZmlyc3QgZnJhbWUgb24gdGhlIHN0YWNrLiAgV2UgYXNzdW1lIHRoYXQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlCisrICAgICBQQyBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgdGhlcmUgd2lsbCBiZQorKyAgICAgYSBmZXcgdHJhaWxpbmcgcmVhZGFibGUgYnl0ZXMgb24gdGhlIHN0YWNrLiAgKi8KKysKKysgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9TSUdUUkFNUF9MRU4pKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmIChidWZbMF0gIT0gTElOVVhfU0lHVFJBTVBfSU5TTjApCisrICAgIHsKKysgICAgICBpZiAoYnVmWzBdICE9IExJTlVYX1NJR1RSQU1QX0lOU04xKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgICAgcGMgLT0gMjsKKysKKysgICAgICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfU0lHVFJBTVBfTEVOKSkKKysJcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGlmIChtZW1jbXAgKGJ1ZiwgbGludXhfc2lndHJhbXBfY29kZSwgTElOVVhfU0lHVFJBTVBfTEVOKSAhPSAwKQorKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisrLyogVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBzYW1lIGZvciBSVCBzaWduYWxzLiAgSGVyZSB0aGUgaW5zdHJ1Y3Rpb24KKysgICBzZXF1ZW5jZSBpcworKyAgICAgICBtb3YudyAgMWYscjMKKysgICAgICAgdHJhcGEgICMxNgorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgMTogLndvcmQgIF9fTlJfcnRfc2lncmV0dXJuCisrICAgb3IgMHg5MzA1IDB4YzMxMCAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MDBhZC4KKysKKysgICBUaGUgZWZmZWN0IGlzIHRvIGNhbGwgdGhlIHN5c3RlbSBjYWxsIHJ0X3NpZ3JldHVybi4gICovCisrCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMAkJTU9WVyg3KQkJLyogTW92ZSBtZW0gd29yZCBhdCBQQys3IHRvIFIzICovCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMQkJVFJBUDE2CQkvKiBTeXNjYWxsIHcvbm8gYXJncyAoTlIgaW4gUjMpICovCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMgkJT1JfUjBfUjAJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGVbXSA9CisreworKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjAsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMSwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBfX05SX3J0X3NpZ3JldHVybgorK307CisrCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9MRU4gKHNpemVvZiBsaW51eF9ydF9zaWd0cmFtcF9jb2RlKQorKworKy8qIElmIFBDIGlzIGluIGEgUlQgc2lndHJhbXAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdGFydAorKyAgIG9mIHRoZSByb3V0aW5lLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCisrCisrc3RhdGljIENPUkVfQUREUgorK3NoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSkKKyt7CisrICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKG5leHRfZnJhbWUpOworKyAgZ2RiX2J5dGUgYnVmW0xJTlVYX1JUX1NJR1RSQU1QX0xFTl07CisrCisrICAvKiBXZSBvbmx5IHJlY29nbml6ZSBhIHNpZ25hbCB0cmFtcG9saW5lIGlmIFBDIGlzIGF0IHRoZSBzdGFydCBvZgorKyAgICAgb25lIG9mIHRoZSB0d28gaW5zdHJ1Y3Rpb25zLiAgV2Ugb3B0aW1pemUgZm9yIGZpbmRpbmcgdGhlIFBDIGF0CisrICAgICB0aGUgc3RhcnQsIGFzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiB0aGUgdHJhbXBvbGluZSBpcyBub3QgdGhlCisrICAgICBmaXJzdCBmcmFtZSBvbiB0aGUgc3RhY2suICBXZSBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKKysgICAgIFBDIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGluc3RydWN0aW9uIHNlcXVlbmNlLCB0aGVyZSB3aWxsIGJlCisrICAgICBhIGZldyB0cmFpbGluZyByZWFkYWJsZSBieXRlcyBvbiB0aGUgc3RhY2suICAqLworKworKyAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1JUX1NJR1RSQU1QX0xFTikpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMCkKKysgICAgeworKyAgICAgIGlmIChidWZbMF0gIT0gTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEpCisrCXJldHVybiAwOworKworKyAgICAgIHBjIC09IDI7CisrCisrICAgICAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsCisrCQkJCSAgICAgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSkKKysJcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGlmIChtZW1jbXAgKGJ1ZiwgbGludXhfcnRfc2lndHJhbXBfY29kZSwgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSAhPSAwKQorKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisrLyogUmV0dXJuIHdoZXRoZXIgUEMgaXMgaW4gYSBHTlUvTGludXggc2lndHJhbXAgcm91dGluZS4gICovCisrCisrc3RhdGljIGludAorK3NoX2xpbnV4X3NpZ3RyYW1wX3AgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7CisrICBjaGFyICpuYW1lOworKworKyAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsIE5VTEwsIE5VTEwpOworKworKyAgLyogSWYgd2UgaGF2ZSBOQU1FLCB3ZSBjYW4gb3B0aW1pemUgdGhlIHNlYXJjaC4gIFRoZSB0cmFtcG9saW5lcyBhcmUKKysgICAgIG5hbWVkIF9fcmVzdG9yZSBhbmQgX19yZXN0b3JlX3J0LiAgSG93ZXZlciwgdGhleSBhcmVuJ3QgZHluYW1pY2FsbHkKKysgICAgIGV4cG9ydGVkIGZyb20gdGhlIHNoYXJlZCBDIGxpYnJhcnksIHNvIHRoZSB0cmFtcG9saW5lIG1heSBhcHBlYXIgdG8KKysgICAgIGJlIHBhcnQgb2YgdGhlIHByZWNlZGluZyBmdW5jdGlvbi4gIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBzaWdhY3Rpb24sCisrICAgICBfX3NpZ2FjdGlvbiwgb3IgX19saWJjX3NpZ2FjdGlvbiAoYWxsIGFsaWFzZXMgdG8gdGhlIHNhbWUgZnVuY3Rpb24pLiAgKi8KKysgIGlmIChuYW1lID09IE5VTEwgfHwgc3Ryc3RyIChuYW1lLCAic2lnYWN0aW9uIikgIT0gTlVMTCkKKysgICAgcmV0dXJuIChzaF9saW51eF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSkgIT0gMAorKwkgICAgfHwgc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpICE9IDApOworKworKyAgcmV0dXJuIChzdHJjbXAgKCJfX3Jlc3RvcmUiLCBuYW1lKSA9PSAwCisrCSAgfHwgc3RyY21wICgiX19yZXN0b3JlX3J0IiwgbmFtZSkgPT0gMCk7CisrfQorKworKy8qIE9mZnNldCB0byBzdHJ1Y3Qgc2lnY29udGV4dCBpbiB1Y29udGV4dCwgZnJvbSA8YXNtL3Vjb250ZXh0Lmg+LiAgKi8KKysjZGVmaW5lIFNIX0xJTlVYX1VDT05URVhUX1NJR0NPTlRFWFRfT0ZGU0VUIDEyCisrCisrCisrLyogQXNzdW1pbmcgTkVYVF9GUkFNRSBpcyBhIGZyYW1lIGZvbGxvd2luZyBhIEdOVS9MaW51eCBzaWd0cmFtcAorKyAgIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCBzaWdjb250ZXh0IHN0cnVjdHVyZS4gICovCisrCisrc3RhdGljIENPUkVfQUREUgorK3NoX2xpbnV4X3NpZ2NvbnRleHRfYWRkciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCisreworKyAgQ09SRV9BRERSIHBjOworKyAgQ09SRV9BRERSIHNwOworKworKyAgc3AgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIFNQX1JFR05VTSk7CisrCisrICBwYyA9IHNoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKTsKKysgIGlmIChwYykKKysgICAgeworKyAgICAgIHJldHVybiBzcDsKKysgICAgfQorKworKyAgcGMgPSBzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSk7CisrICBpZiAocGMpCisrICAgIHsKKysgICAgICBDT1JFX0FERFIgdWNvbnRleHRfYWRkcjsKKysKKysgICAgICAvKiBUaGUgc2lnY29udGV4dCBzdHJ1Y3R1cmUgaXMgcGFydCBvZiB0aGUgdXNlciBjb250ZXh0LiAgQQorKwkgcG9pbnRlciB0byB0aGUgdXNlciBjb250ZXh0IGlzIHBhc3NlZCBhcyB0aGUgdGhpcmQgYXJndW1lbnQKKysJIHRvIHRoZSBzaWduYWwgaGFuZGxlci4gICovCisrICAgICAgdWNvbnRleHRfYWRkciA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgQVJHMF9SRUdOVU0rMik7CisrICAgICAgcmV0dXJuIHVjb250ZXh0X2FkZHIgKyBTSF9MSU5VWF9VQ09OVEVYVF9TSUdDT05URVhUX09GRlNFVDsKKysgICAgfQorKworKyAgZXJyb3IgKCJDb3VsZG4ndCByZWNvZ25pemUgc2lnbmFsIHRyYW1wb2xpbmUuIik7CisrICByZXR1cm4gMDsKKyt9CisrCisrLyogU2lnbmFsIHRyYW1wb2xpbmVzLiAgKi8KKytleHRlcm4gc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCk7CisrCisrc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCisrc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKKyt7CisrICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlOworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2V0X2N1cnJlbnRfYXJjaCAoKSk7CisrICBDT1JFX0FERFIgc2lnY29udGV4dF9hZGRyOworKworKyAgaWYgKCp0aGlzX2NhY2hlKQorKyAgICByZXR1cm4gKnRoaXNfY2FjaGU7CisrCisrICBjYWNoZSA9IHNoX2FsbG9jX2ZyYW1lX2NhY2hlICgpOworKworKyAgY2FjaGUtPmJhc2UgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIFNQX1JFR05VTSk7CisrICBzaWdjb250ZXh0X2FkZHIgPSB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgKHRoaXNfZnJhbWUpOworKyAgaWYgKHRkZXAtPnNjX3JlZ19vZmZzZXQpCisrICAgIHsKKysgICAgICBpbnQgaTsKKysKKysgICAgICBnZGJfYXNzZXJ0ICh0ZGVwLT5zY19udW1fcmVncyA8PSBTSF9OVU1fUkVHUyk7CisrCisrICAgICAgZm9yIChpID0gMDsgaSA8IHRkZXAtPnNjX251bV9yZWdzOyBpKyspCisrCWlmICh0ZGVwLT5zY19yZWdfb2Zmc2V0W2ldICE9IC0xKQorKwkgIGNhY2hlLT5zYXZlZF9yZWdzW2ldID0gc2lnY29udGV4dF9hZGRyICsgdGRlcC0+c2NfcmVnX29mZnNldFtpXTsKKysgICAgfQorKworKyAgKnRoaXNfY2FjaGUgPSBjYWNoZTsKKysgIHJldHVybiBjYWNoZTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV90aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCisrCQkJICAgICBzdHJ1Y3QgZnJhbWVfaWQgKnRoaXNfaWQpCisreworKyAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZSA9CisrICAgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKKysKKysgICgqdGhpc19pZCkgPSBmcmFtZV9pZF9idWlsZCAoY2FjaGUtPmJhc2UgKyA2NCwgY2FjaGUtPnBjKTsKKyt9CisrCisrZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKCk7Cisrc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisrc2hfbGludXhfc2lndHJhbXBfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCisrICAgICAgICAgICAgICAgICAgIHZvaWQgKip0aGlzX2NhY2hlLCBpbnQgcmVnbnVtKQorK3sKKysgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKKysKKysgIHJldHVybiBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlLCByZWdudW0pOworK30KKysKKytzdGF0aWMgaW50Cisrc2hfbGludXhfc2lndHJhbXBfZnJhbWVfc25pZmZlciAoY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCAqc2VsZiwKKysgICAgICAgICAgICAgICAgIHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAorKyAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfcHJvbG9ndWVfY2FjaGUpCisreworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpKTsKKysKKysgIC8qIFdlIHNob3VsZG4ndCBldmVuIGJvdGhlciBpZiB3ZSBkb24ndCBoYXZlIGEgc2lnY29udGV4dF9hZGRyCisrICAgICBoYW5kbGVyLiAgKi8KKysgIGlmICh0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAodGRlcC0+c2lndHJhbXBfcCAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaWYgKHRkZXAtPnNpZ3RyYW1wX3AgKHRoaXNfZnJhbWUpKQorKyAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCA9CisreworKyAgU0lHVFJBTVBfRlJBTUUsCisrICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV90aGlzX2lkLAorKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfcHJldl9yZWdpc3RlciwKKysgIE5VTEwsCisrICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9zbmlmZmVyCisrfTsKKysKKysvKiBTdXBwbHkgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgR1JFR1MgYW5kIExFTgorKyAgIGluIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0IFJFR1NFVCB0byByZWdpc3RlciBjYWNoZQorKyAgIFJFR0NBQ0hFLiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvciBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCisrCisrdm9pZAorK3NoX3N1cHBseV9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisrICAgICAgICAgICAgIGludCByZWdudW0sIGNvbnN0IHZvaWQgKmdyZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjb25zdCBjaGFyICpyZWdzID0gZ3JlZ3M7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+Z3JlZ3NldF9udW1fcmVnczsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKChyZWdudW0gPT0gaSB8fCByZWdudW0gPT0gLTEpCisrICAgICAgJiYgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldICE9IC0xKQorKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSwgcmVncyArIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSk7CisrICAgIH0KKyt9CisrCisrLyogQ29sbGVjdCByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgcmVnaXN0ZXIgY2FjaGUgUkVHQ0FDSEUgYW5kIHN0b3JlCisrICAgaXQgaW4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgR1JFR1MgYW5kIExFTiBhcyBkZXNjcmliZWQgYnkgdGhlCisrICAgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIHNldCBSRUdTRVQuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCisrICAgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLworKworK3ZvaWQKKytzaF9jb2xsZWN0X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKKysgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisrICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2b2lkICpncmVncywgc2l6ZV90IGxlbikKKyt7CisrICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOworKyAgY2hhciAqcmVncyA9IGdyZWdzOworKyAgaW50IGk7CisrCisrICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpOworKworKyAgZm9yIChpID0gMDsgaSA8IHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3M7IGkrKykKKysgICAgeworKyAgICAgIGlmICgocmVnbnVtID09IGkgfHwgcmVnbnVtID09IC0xKQorKyAgICAgICYmIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSAhPSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpLCByZWdzICsgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldKTsKKysgICAgfQorK30KKysKKysvKiBTdXBwbHkgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgRlBSRUdTIGFuZCBMRU4KKysgICBpbiB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIgc2V0IFJFR1NFVCB0byByZWdpc3RlciBjYWNoZQorKyAgIFJFR0NBQ0hFLiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvciBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCisrCisrc3RhdGljIHZvaWQKKytzaF9zdXBwbHlfZnByZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysgICAgICAgICAgICAgIGludCByZWdudW0sIGNvbnN0IHZvaWQgKmZwcmVncywgc2l6ZV90IGxlbikKKyt7CisrICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOworKyAgY29uc3QgY2hhciAqcmVncyA9IGZwcmVnczsKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9mcHJlZ3NldCk7CisrICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKysgICAgeworKyAgICAgIGlmIChyZWdudW0gPT0gaSsyNSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpKzI1LCByZWdzICsgaSo0KTsKKysgICAgfQorKyAgaWYgKHJlZ251bSA9PSBGUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgRlBTQ1JfUkVHTlVNLCByZWdzICsgMzIqNCk7CisrICBpZiAocmVnbnVtID09IEZQVUxfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIEZQVUxfUkVHTlVNLCByZWdzICsgMzMqNCk7CisrfQorKworKy8qIENvbGxlY3QgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIHJlZ2lzdGVyIGNhY2hlIFJFR0NBQ0hFIGFuZCBzdG9yZQorKyAgIGl0IGluIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEZQUkVHUyBhbmQgTEVOIGFzIGRlc2NyaWJlZCBieSB0aGUKKysgICBmbG9hdGluZy1wb2ludCByZWdpc3RlciBzZXQgUkVHU0VULiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvcgorKyAgIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NoX2NvbGxlY3RfZnByZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKKysgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorKyAgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKmZwcmVncywgc2l6ZV90IGxlbikKKyt7CisrICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOworKyAgY2hhciAqcmVncyA9IGZwcmVnczsKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9mcHJlZ3NldCk7CisrICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKysgICAgeworKyAgICAgIGlmIChyZWdudW0gPT0gaSsyNSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgaSsyNSwgcmVncyArIGkqNCk7CisrICAgIH0KKysgIGlmIChyZWdudW0gPT0gRlBTQ1JfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBGUFNDUl9SRUdOVU0sIHJlZ3MgKyAzMio0KTsKKysgIGlmIChyZWdudW0gPT0gRlBVTF9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIEZQVUxfUkVHTlVNLCByZWdzICsgMzMqNCk7CisrfQorKworKy8qIFJldHVybiB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgY29yZSBzZWN0aW9uIGlkZW50aWZpZWQKKysgICBieSBTRUNUX05BTUUgYW5kIFNFQ1RfU0laRS4gICovCisrCisrY29uc3Qgc3RydWN0IHJlZ3NldCAqCisrc2hfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VjdF9uYW1lLCBzaXplX3Qgc2VjdF9zaXplKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworKworKyAgaWYgKHN0cmNtcCAoc2VjdF9uYW1lLCAiLnJlZyIpID09IDAgJiYgc2VjdF9zaXplID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KQorKyAgICB7CisrICAgICAgaWYgKHRkZXAtPmdyZWdzZXQgPT0gTlVMTCkKKysgICAgdGRlcC0+Z3JlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwgc2hfc3VwcGx5X2dyZWdzZXQsCisrICAgICAgICAgICAgICAgICAgICAgIHNoX2NvbGxlY3RfZ3JlZ3NldCk7CisrICAgICAgcmV0dXJuIHRkZXAtPmdyZWdzZXQ7CisrICAgIH0KKysKKysgIGlmICgoc3RyY21wIChzZWN0X25hbWUsICIucmVnMiIpID09IDAgJiYgc2VjdF9zaXplID09IHRkZXAtPnNpemVvZl9mcHJlZ3NldCkpCisrICAgIHsKKysgICAgICBpZiAodGRlcC0+ZnByZWdzZXQgPT0gTlVMTCkKKysgICAgdGRlcC0+ZnByZWdzZXQgPSByZWdzZXRfYWxsb2MgKGdkYmFyY2gsIHNoX3N1cHBseV9mcHJlZ3NldCwKKysgICAgICAgICAgICAgICAgICAgICAgIHNoX2NvbGxlY3RfZnByZWdzZXQpOworKyAgICAgIHJldHVybiB0ZGVwLT5mcHJlZ3NldDsKKysgICAgfQorKworKyAgcmV0dXJuIE5VTEw7CisrfQorKworKy8qIFRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gR05VL0xpbnV4IEVMRiBjb3JlLWR1bXBzIGFyZSBpZGVudGljYWwgdG8KKysgICB0aGUgcmVnaXN0ZXIgc2V0cyBpbiBgc3RydWN0IHVzZXInIHRoYXQgYXJlIHVzZWQgZm9yIGEub3V0CisrICAgY29yZS1kdW1wcy4gIFRoZXNlIGFyZSBhbHNvIHVzZWQgYnkgcHRyYWNlKDIpLiAgVGhlIGNvcnJlc3BvbmRpbmcKKysgICB0eXBlcyBhcmUgYGVsZl9ncmVnc2V0X3QnIGZvciB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyAod2l0aAorKyAgIGBlbGZfZ3JlZ190JyB0aGUgdHlwZSBvZiBhIHNpbmdsZSBHUCByZWdpc3RlcikgYW5kIGBlbGZfZnByZWdzZXRfdCcKKysgICBmb3IgdGhlIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KKysKKysgICBUaG9zZSB0eXBlcyB1c2VkIHRvIGJlIGF2YWlsYWJsZSB1bmRlciB0aGUgbmFtZXMgYGdyZWdzZXRfdCcgYW5kCisrICAgYGZwcmVnc2V0X3QnIHRvbywgYW5kIEdEQiB1c2VkIHRob3NlIG5hbWVzIGluIHRoZSBwYXN0LiAgQnV0IHRob3NlCisrICAgbmFtZXMgYXJlIG5vdyB1c2VkIGZvciB0aGUgcmVnaXN0ZXIgc2V0cyB1c2VkIGluIHRoZSBgbWNvbnRleHRfdCcKKysgICB0eXBlLCB3aGljaCBoYXZlIGEgZGlmZmVyZW50IHNpemUgYW5kIGxheW91dC4gICovCisrCisrLyogTWFwcGluZyBiZXR3ZWVuIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzIGluIGBzdHJ1Y3QgdXNlcicKKysgICBmb3JtYXQgYW5kIEdEQidzIHJlZ2lzdGVyIGNhY2hlIGxheW91dC4gICovCisrCisrLyogRnJvbSA8c3lzL3JlZy5oPi4gICovCisrc3RhdGljIGludCBzaF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXRbXSA9CisreworKyAwLAk0LAk4LAkxMiwJMTYsCTIwLAkyNCwJMjgsCisrIDMyLAkzNiwJNDAsCTQ0LAk0OCwJNTIsCTU2LAk2MCwKKysKKysgUkVHX1BDKjQsICAgUkVHX1BSKjQsICAgUkVHX0dCUio0LCAgLTEsCisrIFJFR19NQUNIKjQsIFJFR19NQUNMKjQsIFJFR19TUio0LAorK307CisrCisrLyogTWFwcGluZyBiZXR3ZWVuIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzIGluIGBzdHJ1Y3QKKysgICBzaWdjb250ZXh0JyBmb3JtYXQgYW5kIEdEQidzIHJlZ2lzdGVyIGNhY2hlIGxheW91dC4gICovCisrCisrLyogRnJvbSA8YXNtL3NpZ2NvbnRleHQuaD4uICAqLworK3N0YXRpYyBpbnQgc2hfbGludXhfc2NfcmVnX29mZnNldFtdID0KKyt7CisrIDQsCTgsCTEyLAkxNiwJMjAsCTI0LAkyOCwJMzIsCisrIDM2LAk0MCwJNDQsCTQ4LAk1MiwJNTYsCTYwLAk2NCwKKysgNjgsCTcyLAk4MCwJLTEsCisrIDg0LAk4OCwJNzYKKyt9OworKworIHN0YXRpYyB2b2lkCisgc2hfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgeworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisrICBiZmQgYWJmZDsKKysKKysgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldDsKKysgIHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChzaF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXQpOworKyAgdGRlcC0+c2l6ZW9mX2dyZWdzZXQgPSAyMyAqIDQ7CisrCisrICB0ZGVwLT5qYl9wY19vZmZzZXQgPSAzMjsgICAgIC8qIEZyb20gPGJpdHMvc2V0am1wLmg+LiAgKi8KKysKKysgIHRkZXAtPnNpZ3RyYW1wX3AgPSBzaF9saW51eF9zaWd0cmFtcF9wOworKyAgdGRlcC0+c2lnY29udGV4dF9hZGRyID0gc2hfbGludXhfc2lnY29udGV4dF9hZGRyOworKyAgdGRlcC0+c2NfcmVnX29mZnNldCA9IHNoX2xpbnV4X3NjX3JlZ19vZmZzZXQ7CisrICB0ZGVwLT5zY19udW1fcmVncyA9IEFSUkFZX1NJWkUgKHNoX2xpbnV4X3NjX3JlZ19vZmZzZXQpOworKworKyAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlcihnZGJhcmNoLCAmc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdW53aW5kKTsKKysKKysgIC8qIElmIHdlIGhhdmUgYSByZWdpc3RlciBtYXBwaW5nLCBlbmFibGUgdGhlIGdlbmVyaWMgY29yZSBmaWxlCisrICAgICBzdXBwb3J0LCB1bmxlc3MgaXQgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLiAgKi8KKysgIGlmICh0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQKKysgICAgICAmJiAhZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb25fcCAoZ2RiYXJjaCkpCisrICAgIHNldF9nZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoZ2RiYXJjaCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoX2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbik7CisrCisgICBsaW51eF9pbml0X2FiaSAoaW5mbywgZ2RiYXJjaCk7CisgCisgICAvKiBHTlUvTGludXggdXNlcyBTVlI0LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmMgYi9nZGIvc2gtdGRlcC5jCitpbmRleCBlM2FlZTBhYzI4Li41OTU4Y2YzNjg4IDEwMDY0NAorLS0tIGEvZ2RiL3NoLXRkZXAuYworKysrIGIvZ2RiL3NoLXRkZXAuYworQEAgLTIxLDYgKzIxLDkgQEAKKyAgICBzYWNAY3lnbnVzLmNvbS4gICovCisgCisgI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorKyNpbmNsdWRlICJjb21tYW5kLmgiCisrI2luY2x1ZGUgImR1bW15LWZyYW1lLmgiCisgI2luY2x1ZGUgImZyYW1lLmgiCisgI2luY2x1ZGUgImZyYW1lLWJhc2UuaCIKKyAjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCitAQCAtNjYsMjMgKzY5LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNoX2NjX2VudW1bXSA9IHsKKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqc2hfYWN0aXZlX2NhbGxpbmdfY29udmVudGlvbiA9IHNoX2NjX2djYzsKKyAKKy0jZGVmaW5lIFNIX05VTV9SRUdTIDY3CistCistc3RydWN0IHNoX2ZyYW1lX2NhY2hlCisteworLSAgLyogQmFzZSBhZGRyZXNzLiAgKi8KKy0gIENPUkVfQUREUiBiYXNlOworLSAgTE9OR0VTVCBzcF9vZmZzZXQ7CistICBDT1JFX0FERFIgcGM7CistCistICAvKiBGbGFnIHNob3dpbmcgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIHByb2xvZ3VlIGNvZGUuICAqLworLSAgaW50IHVzZXNfZnA7CistCistICAvKiBTYXZlZCByZWdpc3RlcnMuICAqLworLSAgQ09SRV9BRERSIHNhdmVkX3JlZ3NbU0hfTlVNX1JFR1NdOworLSAgQ09SRV9BRERSIHNhdmVkX3NwOworLX07CistCisgc3RhdGljIGludAorIHNoX2lzX3JlbmVzYXNfY2FsbGluZ19jb252ZW50aW9uIChzdHJ1Y3QgdHlwZSAqZnVuY190eXBlKQorIHsKK0BAIC0xMDUwLDcgKzEwMzYsNyBAQCBzaF90cmVhdF9hc19mbHRfcCAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgIHJldHVybiAwOworICAgLyogT3RoZXJ3aXNlIGlmIHRoZSB0eXBlIG9mIHRoYXQgbWVtYmVyIGlzIGZsb2F0LCB0aGUgd2hvbGUgdHlwZSBpcworICAgICAgdHJlYXRlZCBhcyBmbG9hdC4gICovCistICBpZiAoVFlQRV9DT0RFIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSA9PSBUWVBFX0NPREVfRkxUKQorKyAgaWYgKFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRlZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKSkpID09IFRZUEVfQ09ERV9GTFQpCisgICAgIHJldHVybiAxOworICAgLyogT3RoZXJ3aXNlIGl0J3Mgbm90IHRyZWF0ZWQgYXMgZmxvYXQuICAqLworICAgcmV0dXJuIDA7CitAQCAtMTEwMCw3ICsxMDg2LDcgQEAgc2hfcHVzaF9kdW1teV9jYWxsX2ZwdSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICBpbiBmb3VyIHJlZ2lzdGVycyBhdmFpbGFibGUuICBMb29wIHRocnUgYXJncyBmcm9tIGZpcnN0IHRvIGxhc3QuICAqLworICAgZm9yIChhcmdudW0gPSAwOyBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspCisgICAgIHsKKy0gICAgICB0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKTsKKysgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKSk7CisgICAgICAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOworICAgICAgIHZhbCA9IHNoX2p1c3RpZnlfdmFsdWVfaW5fcmVnIChnZGJhcmNoLCBhcmdzW2FyZ251bV0sIGxlbik7CisgCitAQCAtMTgzNSw3ICsxODIxLDcgQEAgc2hfZHdhcmYyX2ZyYW1lX2luaXRfcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKKyAgICAgcmVnLT5ob3cgPSBEV0FSRjJfRlJBTUVfUkVHX1VOREVGSU5FRDsKKyB9CisgCistc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCisrc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKyBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKKyB7CisgICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlOworQEAgLTE4NjIsNyArMTg0OCw3IEBAIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQorICAgcmV0dXJuIGNhY2hlOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCisgeworICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7CitAQCAtMTkyOSw5ICsxOTE1LDkgQEAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKKyAgIHJldHVybiBjYWNoZTsKKyB9CisgCistc3RhdGljIHN0cnVjdCB2YWx1ZSAqCistc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCistCQkJdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCisrc3RydWN0IHZhbHVlICoKKytzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCisrCQkJaW50IHJlZ251bSkKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKKyAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPSBzaF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7CitAQCAtMTk0NSw3ICsxOTMxLDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCisgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIEZyb2IgcmVnbnVtIHNvIHRoYXQgd2UgcHVsbCB0aGUgdmFsdWUgZnJvbQorICAgICAgdGhlIGNvcnJlY3QgcGxhY2UuICAqLworICAgaWYgKHJlZ251bSA9PSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpCistICAgIHJlZ251bSA9IFBSX1JFR05VTTsKKysgICAgcmVnbnVtID0gUFJfUkVHTlVNOyAvKiBYWFg6IHJlYWxseT8gKi8KKyAKKyAgIGlmIChyZWdudW0gPCBTSF9OVU1fUkVHUyAmJiBjYWNoZS0+c2F2ZWRfcmVnc1tyZWdudW1dICE9IC0xKQorICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJhbWUsIHJlZ251bSwKK0BAIC0yMjM0LDggKzIyMjAsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCisgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKKyB7CistICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXA7CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAKKyAgIC8qIElmIHRoZXJlIGlzIGFscmVhZHkgYSBjYW5kaWRhdGUsIHVzZSBpdC4gICovCisgICBhcmNoZXMgPSBnZGJhcmNoX2xpc3RfbG9va3VwX2J5X2luZm8gKGFyY2hlcywgJmluZm8pOworQEAgLTIyNDcsNiArMjIzMywxOCBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorICAgdGRlcCA9IFhDTkVXIChzdHJ1Y3QgZ2RiYXJjaF90ZGVwKTsKKyAgIGdkYmFyY2ggPSBnZGJhcmNoX2FsbG9jICgmaW5mbywgdGRlcCk7CisgCisrICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KKysgIHRkZXAtPmdyZWdzZXQgPSBOVUxMOworKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gTlVMTDsKKysgIHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3MgPSAyMzsKKysgIHRkZXAtPnNpemVvZl9ncmVnc2V0ID0gMDsKKysKKysgIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCisrICB0ZGVwLT5mcHJlZ3NldCA9IE5VTEw7CisrICB0ZGVwLT5zaXplb2ZfZnByZWdzZXQgPSAzNCo0OworKworKyAgdGRlcC0+amJfcGNfb2Zmc2V0ID0gLTE7CisrCisgICBzZXRfZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gsIDIgKiBUQVJHRVRfQ0hBUl9CSVQpOworICAgc2V0X2dkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7CisgICBzZXRfZ2RiYXJjaF9sb25nX2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7CitAQCAtMjM5OCwxMCArMjM5NiwxMSBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorICAgICAgIGJyZWFrOworICAgICB9CisgCisrICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7CisrCisgICAvKiBIb29rIGluIEFCSS1zcGVjaWZpYyBvdmVycmlkZXMsIGlmIHRoZXkgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQuICAqLworICAgZ2RiYXJjaF9pbml0X29zYWJpIChpbmZvLCBnZGJhcmNoKTsKKyAKKy0gIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKKyAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9zdHViX3Vud2luZCk7CisgICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmc2hfZnJhbWVfdW53aW5kKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5oIGIvZ2RiL3NoLXRkZXAuaAoraW5kZXggNzZlMmU3NmUzOS4uMjcxMGY2MzAxMCAxMDA2NDQKKy0tLSBhL2dkYi9zaC10ZGVwLmgKKysrKyBiL2dkYi9zaC10ZGVwLmgKK0BAIC0yMSw2ICsyMSwxMiBAQAorIAorIC8qIENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIENoYW1iZXJsYWluIHNhY0BjeWdudXMuY29tLiAgKi8KKyAKKytzdHJ1Y3QgZnJhbWVfaW5mbzsKKytzdHJ1Y3QgZ2RiYXJjaDsKKytzdHJ1Y3QgcmVnZ3JvdXA7Cisrc3RydWN0IHJlZ3NldDsKKytzdHJ1Y3QgcmVnY2FjaGU7CisrCisgLyogUmVnaXN0ZXJzIGZvciBhbGwgU0ggdmFyaWFudHMuICBVc2VkIGFsc28gYnkgc2gzLXJvbS5jLiAgKi8KKyBlbnVtCisgICB7CitAQCAtMjksNiArMzUsNyBAQCBlbnVtCisgICAgIEFSRzBfUkVHTlVNID0gNCwKKyAgICAgQVJHTEFTVF9SRUdOVU0gPSA3LAorICAgICBGUF9SRUdOVU0gPSAxNCwKKysgICAgU1BfUkVHTlVNID0gMTUsCisgICAgIFBDX1JFR05VTSA9IDE2LAorICAgICBQUl9SRUdOVU0gPSAxNywKKyAgICAgR0JSX1JFR05VTSA9IDE4LAorQEAgLTgxLDYgKzg4LDI0IEBAIGVudW0KKyAgICAgRlYwX1JFR05VTSA9IDc2LAorICAgICBGVl9MQVNUX1JFR05VTSA9IDc5CisgICB9OworKyNkZWZpbmUgU0hfTlVNX1JFR1MgNjcKKysKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUKKyt7CisrICAvKiBCYXNlIGFkZHJlc3MuICAqLworKyAgQ09SRV9BRERSIGJhc2U7CisrICBMT05HRVNUIHNwX29mZnNldDsKKysgIENPUkVfQUREUiBwYzsKKysKKysgIC8qIEZsYWcgc2hvd2luZyB0aGF0IGEgZnJhbWUgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgcHJvbG9ndWUgY29kZS4gKi8KKysgIGludCB1c2VzX2ZwOworKworKyAgLyogU2F2ZWQgcmVnaXN0ZXJzLiAgKi8KKysgIENPUkVfQUREUiBzYXZlZF9yZWdzW1NIX05VTV9SRUdTXTsKKysgIENPUkVfQUREUiBzYXZlZF9zcDsKKyt9OworKworK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpOworIAorIC8qIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhIHJlZ2lzdGVyIGluIGEgY29yZS1maWxlLiAgKi8KKyBzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwCitAQCAtODksOCArMTE0LDMyIEBAIHN0cnVjdCBzaF9jb3JlZmlsZV9yZWdtYXAKKyAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgfTsKKyAKKysvKiBzaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaW5mb3JtYXRpb24uICAqLworIHN0cnVjdCBnZGJhcmNoX3RkZXAKKyB7CisrICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KKysgIHN0cnVjdCByZWdzZXQgKmdyZWdzZXQ7CisrICBpbnQgKmdyZWdzZXRfcmVnX29mZnNldDsKKysgIGludCBncmVnc2V0X251bV9yZWdzOworKyAgc2l6ZV90IHNpemVvZl9ncmVnc2V0OworKworKyAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KKysgIHN0cnVjdCByZWdzZXQgKmZwcmVnc2V0OworKyAgc2l6ZV90IHNpemVvZl9mcHJlZ3NldDsKKysKKysgIC8qIE9mZnNldCBvZiBzYXZlZCBQQyBpbiBqbXBfYnVmLiAgKi8KKysgIGludCBqYl9wY19vZmZzZXQ7CisrCisrICAvKiBEZXRlY3Qgc2lndHJhbXAuICAqLworKyAgaW50ICgqc2lndHJhbXBfcCkgKHN0cnVjdCBmcmFtZV9pbmZvICopOworKworKyAgLyogR2V0IGFkZHJlc3Mgb2Ygc2lnY29udGV4dCBmb3Igc2lndHJhbXAuICAqLworKyAgQ09SRV9BRERSICgqc2lnY29udGV4dF9hZGRyKSAoc3RydWN0IGZyYW1lX2luZm8gKik7CisrCisrICAvKiBPZmZzZXQgb2YgcmVnaXN0ZXJzIGluIGBzdHJ1Y3Qgc2lnY29udGV4dCcuICAqLworKyAgaW50ICpzY19yZWdfb2Zmc2V0OworKyAgaW50IHNjX251bV9yZWdzOworKworICAgLyogTm9uLU5VTEwgd2hlbiBkZWJ1Z2dpbmcgZnJvbSBhIGNvcmUgZmlsZS4gIFByb3ZpZGVzIHRoZSBvZmZzZXQKKyAgICAgIHdoZXJlIGVhY2ggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGlzIHN0b3JlZCBpbnNpZGUgdGhlIGFzc29jaWF0ZWQKKyAgICAgIGNvcmUgZmlsZSBzZWN0aW9uLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKK2luZGV4IDQ5MTQ0OThmOTguLjZlMjVjYmVkMTggMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAorQEAgLTExNiw2ICsxMTYsMTEgQEAgc3dpdGNoIC1nbG9iIC0tIFtpc3RhcmdldF0geworICAgICAgICAgICAgIGFwcGVuZCBsaW5rLWZsYWdzICIgLW0gZWxmMzJwcGMiCisgICAgICAgICB9CisgICAgIH0KKysgICAgInNoKi1saW51eCoiIHsKKysgICAgICAgIHNldCBhc20tYXJjaCBzaC1saW51eAorKyAgICAgICAgc2V0IGFzbS1mbGFncyAiLUkke3NyY2Rpcn0vJHtzdWJkaXJ9IC1JJHtvYmpkaXJ9LyR7c3ViZGlyfSIKKysJc2V0IGRlYnVnLWZsYWdzICItZ2R3YXJmLTIiCisrICAgIH0KKyAgICAgInNoKi0qLSoiIHsKKyAgICAgICAgIHNldCBhc20tYXJjaCBzaAorIAlzZXQgZGVidWctZmxhZ3MgIi1nZHdhcmYtMiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYworaW5kZXggYTRhNWZjNTQ1ZS4uODllZmVkNzc5NSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKK0BAIC00MCw5ICs0MCw4IEBACisgCW1vdi5sICAgLkxjb25zdFxALHIxCisgCWJyYQkuTGFmdGVyY29uc3RcQAorIAlub3AKKy0Jbm9wCistLkxjb25zdFxAOgorIAkuYWxpZ24JMgorKy5MY29uc3RcQDoKKyAJLmxvbmcJXHN1YnIKKyAJLmFsaWduCTEKKyAuTGFmdGVyY29uc3RcQDoKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCitpbmRleCA0MjRlMWI4MzI3Li4wZGUyZTdiNjMzIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCitAQCAtMSw2ICsxLDkgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZW5kaWYKKyAKKyB2b2lkCisgaGFuZGxlX1VTUjEgKGludCBzaWcpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYworaW5kZXggNDI0ZTFiODMyNy4uOTUyYWFmMjE4YSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYworQEAgLTEsNiArMSwxMCBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAKKysjaWZkZWYgX19zaF9fCisrI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLworKyNlbmRpZgorKworIAorIHZvaWQKKyBoYW5kbGVfVVNSMSAoaW50IHNpZykKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYworaW5kZXggODFmM2IwOGQ2Yi4uMTU3NGIyZDZjYiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKK0BAIC0xLDYgKzEsOSBAQAorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZW5kaWYKKyAKKyAvKiBTaWduYWwgaGFuZGxlcnMsIHdlIHNldCBicmVha3BvaW50cyBpbiB0aGVtIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQorICAgIHNpZ25hbHMgcmVhbGx5IGdldCBkZWxpdmVyZWQuICAqLworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKK2luZGV4IDc1NjYwNjg4MGYuLjEyMDVhOWJjOWMgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKK0BAIC0zLDYgKzMsMTAgQEAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorKyNpZmRlZiBfX3NoX18KKysjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCisrI2RlZmluZSBhbGFybShhKSAgICAgICAvKiBEaXR0byBmb3IgYWxhcm0oKSAqLworKyNlbmRpZgorIAorIHN0YXRpYyBpbnQgY291bnQgPSAwOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcwZDUxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gZGEzMDM3MGMxZTNmZjc3MjhhODU3ZTExOWUwNTI5YTlmMDk3MDg2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE4OjMyOjE0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwYy9wdHJhY2U6IERlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncyBvbiAhR0xJQkMgc3lzdGVtcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgfCA2ICsrKysrKwotIGdkYi9uYXQvcHBjLWxpbnV4LmggICAgICAgICAgIHwgNiArKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKLWluZGV4IDFiNjk1ZTUzLi4xOTc4MzQ3YyAxMDA2NDQKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwotQEAgLTIzLDcgKzIzLDEzIEBACi0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxlbGYuaD4KLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyMgZGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzCi0rI2VuZGlmCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyMgdW5kZWYgcHRfcmVncwotKyNlbmRpZgotIAotICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC1jb21tb24uaCIKLSAjaW5jbHVkZSAiYXJjaC9wcGMtbGludXgtdGRlc2MuaCIKLWRpZmYgLS1naXQgYS9nZGIvbmF0L3BwYy1saW51eC5oIGIvZ2RiL25hdC9wcGMtbGludXguaAotaW5kZXggZjE1NjFiM2IuLjQwMzk5MzYxIDEwMDY0NAotLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAotKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAotQEAgLTE4LDcgKzE4LDEzIEBACi0gI2lmbmRlZiBOQVRfUFBDX0xJTlVYX0gKLSAjZGVmaW5lIE5BVF9QUENfTElOVVhfSAotIAotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyB1bmRlZiBwdF9yZWdzCi0rI2VuZGlmCi0gI2luY2x1ZGUgPGFzbS9jcHV0YWJsZS5oPgotIAotIC8qIFRoaXMgc29tZXRpbWVzIGlzbid0IGRlZmluZWQuICAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg0MGNhZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxNCArMCwwIEBACi1Gcm9tIDIxNTQ4NmI1M2E3YTZkZmNhMDY0Y2QyZTkxOTZhOWRlNmVkNmYwYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjMxOjEyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIEFkZCBzdXBwb3J0IGZvciBSZW5lc2FzIFNIIChzaDQpIGFyY2hpdGVjdHVyZS4KLQotZ2RiICg3LjQtMX5jdnMyMDExMTExNy4yKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93Ci0gLgotICAgKiBBZGQgUmVuZXNhcyBTSCAoc2g0KSBzdXBwb3J0IChDbG9zZXM6ICM1NzYyNDIpCi0gICAgIC0gVGhhbmtzIE5vYnVoaXJvIEl3YW1hdHN1LCBUYWthc2hpIFlvc2hpaS4KLUF1dGhvcjogSGVjdG9yIE9yb24gPHp1bWJpQGRlYmlhbi5vcmc+Ci1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzU3NjI0MgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIGdkYi9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi9zaC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MyArKy0KLSBnZGIvc2gtdGRlcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIHwgICA1ICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jICAgICAgICAgfCAgIDMgKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyAgICAgfCAgIDMgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKwotIDExIGZpbGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggYzc2YTRlNDM5NC4uOTIxZmRhZGI0OSAxMDA2NDQKLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtMjMyNiw2ICsyMzI2LDggQEAgQUxMREVQRklMRVMgPSBcCi0gCXNoLW5ic2QtbmF0LmMgXAotIAlzaC1uYnNkLXRkZXAuYyBcCi0gCXNoLXRkZXAuYyBcCi0rCXNoLWxpbnV4LXRkZXAuYyBcCi0rCXNoLWxpbnV4LW5hdC5jIFwKLSAJc29sMi10ZGVwLmMgXAotIAlzb2xpYi1haXguYyBcCi0gCXNvbGliLXNwdS5jIFwKLWRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmhvc3QgYi9nZGIvY29uZmlndXJlLmhvc3QKLWluZGV4IDIzYTJmMTYzOTkuLjM5YTg4NmVjNTMgMTAwNjQ0Ci0tLS0gYS9nZGIvY29uZmlndXJlLmhvc3QKLSsrKyBiL2dkYi9jb25maWd1cmUuaG9zdAotQEAgLTE1Myw2ICsxNTMsNyBAQCByaXNjdiotKi1saW51eCopCWdkYl9ob3N0PWxpbnV4IDs7Ci0gCi0gczM5MCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OwotIAotK3NoKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7Ci0gc2gqLSotbmV0YnNkZWxmKiB8IHNoKi0qLWtuZXRic2QqLWdudSkKLSAJCQlnZGJfaG9zdD1uYnNkIDs7Ci0gc2gqLSotb3BlbmJzZCopCQlnZGJfaG9zdD1uYnNkIDs7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NoLWxpbnV4LXRkZXAuYyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLWluZGV4IGRiOTM5Njc5MTAuLjQxMDljNTQ5ZTggMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvc2gtbGludXgtdGRlcC5jCi1AQCAtMTgsMTQgKzE4LDM3IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImdkYmNvcmUuaCIKLSsjaW5jbHVkZSAiZnJhbWUuaCIKLSsjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgotKyNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKLSsjaW5jbHVkZSAiZHdhcmYyLWZyYW1lLmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0rI2luY2x1ZGUgInJlZ2NhY2hlLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0gI2luY2x1ZGUgIm9zYWJpLmgiCi0gCi0rI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCi0gI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0rI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi0gI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKLSAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKLSAKLSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rI2luY2x1ZGUgPHN5cy91c2VyLmg+Ci0rI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rCi0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSsjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKLSAjaW5jbHVkZSAic2gtdGRlcC5oIgotICNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi1AQCAtMTgwLDkgKzIwMyw1MDUgQEAgc3RhdGljIHN0cnVjdCB0cmFtcF9mcmFtZSBzaF9saW51eF9ydF9zaWdyZXR1cm5fdHJhbXBfZnJhbWUgPSB7Ci0gICBzaF9saW51eF9ydF9zaWdyZXR1cm5faW5pdAotIH07Ci0gCi0rLyogUmVjb2duaXppbmcgc2lnbmFsIGhhbmRsZXIgZnJhbWVzLiAgKi8KLSsKLSsvKiBHTlUvTGludXggaGFzIHR3byBmbGF2b3JzIG9mIHNpZ25hbHMuICBOb3JtYWwgc2lnbmFsIGhhbmRsZXJzLCBhbmQKLSsgICAicmVhbHRpbWUiIChSVCkgc2lnbmFscy4gIFRoZSBSVCBzaWduYWxzIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwKLSsgICBpbmZvcm1hdGlvbiB0byB0aGUgc2lnbmFsIGhhbmRsZXIgaWYgdGhlIFNBX1NJR0lORk8gZmxhZyBpcyBzZXQKLSsgICB3aGVuIGVzdGFibGlzaGluZyBhIHNpZ25hbCBoYW5kbGVyIHVzaW5nIGBzaWdhY3Rpb24nLiAgSXQgaXMgbm90Ci0rICAgdW5saWtlbHkgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgR05VL0xpbnV4IHdpbGwgc3VwcG9ydCBTQV9TSUdJTkZPCi0rICAgZm9yIG5vcm1hbCBzaWduYWxzIHRvby4gICovCi0rCi0rLyogV2hlbiB0aGUgU0ggTGludXgga2VybmVsIGNhbGxzIGEgc2lnbmFsIGhhbmRsZXIgYW5kIHRoZQotKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXNuJ3Qgc2V0LCB0aGUgcmV0dXJuIGFkZHJlc3MgcG9pbnRzIHRvIGEgYml0IG9mCi0rICAgY29kZSBvbiB0aGUgc3RhY2suICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgUEMgYXBwZWFycyB0bwotKyAgIGJlIHdpdGhpbiB0aGlzIGJpdCBvZiBjb2RlLgotKwotKyAgIFRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSBmb3Igbm9ybWFsIHNpZ25hbHMgaXMKLSsgICAgICAgbW92LncgIDFmLHIzCi0rICAgICAgIHRyYXBhICAjMTYKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgIDE6IC53b3JkICBfX05SX3NpZ3JldHVybgotKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwNzcuCi0rCi0rICAgQ2hlY2tpbmcgZm9yIHRoZSBjb2RlIHNlcXVlbmNlIHNob3VsZCBiZSBzb21ld2hhdCByZWxpYWJsZSwgYmVjYXVzZQotKyAgIHRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgc2lncmV0dXJuLiAgVGhpcyBpcyB1bmxpa2VseQotKyAgIHRvIG9jY3VyIGFueXdoZXJlIG90aGVyIHRoYW4gYSBzaWduYWwgdHJhbXBvbGluZS4KLSsKLSsgICBJdCBraW5kIG9mIHN1Y2tzIHRoYXQgd2UgaGF2ZSB0byByZWFkIG1lbW9yeSBmcm9tIHRoZSBwcm9jZXNzIGluCi0rICAgb3JkZXIgdG8gaWRlbnRpZnkgYSBzaWduYWwgdHJhbXBvbGluZSwgYnV0IHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZQotKyAgIGFueSBvdGhlciB3YXkuICBUaGUgUENfSU5fU0lHVFJBTVAgbWFjcm8gaW4gdG0tbGludXguaCBhcnJhbmdlcyB0bwotKyAgIG9ubHkgY2FsbCB1cyBpZiBubyBmdW5jdGlvbiBuYW1lIGNvdWxkIGJlIGlkZW50aWZpZWQsIHdoaWNoIHNob3VsZAotKyAgIGJlIHRoZSBjYXNlIHNpbmNlIHRoZSBjb2RlIGlzIG9uIHRoZSBzdGFjay4KLSsKLSsgICBEZXRlY3Rpb24gb2Ygc2lnbmFsIHRyYW1wb2xpbmVzIGZvciBoYW5kbGVycyB0aGF0IHNldCB0aGUKLSsgICBTQV9SRVNUT1JFUiBmbGFnIGlzIGluIGdlbmVyYWwgbm90IHBvc3NpYmxlLiAgVW5mb3J0dW5hdGVseSB0aGlzIGlzCi0rICAgd2hhdCB0aGUgR05VIEMgTGlicmFyeSBoYXMgYmVlbiBkb2luZyBmb3IgcXVpdGUgc29tZSB0aW1lIG5vdy4KLSsgICBIb3dldmVyLCBhcyBvZiB2ZXJzaW9uIDIuMS4yLCB0aGUgR05VIEMgTGlicmFyeSB1c2VzIHNpZ25hbAotKyAgIHRyYW1wb2xpbmVzIChuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydCkgdGhhdCBhcmUgaWRlbnRpY2FsCi0rICAgdG8gdGhlIG9uZXMgdXNlZCBieSB0aGUga2VybmVsLiAgVGhlcmVmb3JlLCB0aGVzZSB0cmFtcG9saW5lcyBhcmUKLSsgICBzdXBwb3J0ZWQgdG9vLiAgKi8KLSsKLSsjZGVmaW5lIE1PVlcobikJICgweDkzMDB8KChuKS0yKSkJLyogTW92ZSBtZW0gd29yZCBhdCBQQytuIHRvIFIzICovCi0rI2RlZmluZSBUUkFQMTYJIDB4YzMxMAkJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIE9SX1IwX1IwIDB4MjAwYgkJCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjAJTU9WVyg3KQkJLyogTW92ZSBtZW0gd29yZCBhdCBQQys3IHRvIFIzICovCi0rI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04yCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9zaWd0cmFtcF9jb2RlW10gPQotK3sKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04wLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjEsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgX19OUl9zaWdyZXR1cm4KLSt9OwotKwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfc2lndHJhbXBfY29kZSkKLSsKLSsvKiBJZiBQQyBpcyBpbiBhIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YKLSsgICB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStzaF9saW51eF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKLSsgIGdkYl9ieXRlIGJ1ZltMSU5VWF9TSUdUUkFNUF9MRU5dOwotKwotKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKLSsgICAgIG9uZSBvZiB0aGUgdGhyZWUgaW5zdHJ1Y3Rpb25zLiAgV2Ugb3B0aW1pemUgZm9yIGZpbmRpbmcgdGhlIFBDIGF0Ci0rICAgICB0aGUgc3RhcnQsIGFzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiB0aGUgdHJhbXBvbGluZSBpcyBub3QgdGhlCi0rICAgICBmaXJzdCBmcmFtZSBvbiB0aGUgc3RhY2suICBXZSBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKLSsgICAgIFBDIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGluc3RydWN0aW9uIHNlcXVlbmNlLCB0aGVyZSB3aWxsIGJlCi0rICAgICBhIGZldyB0cmFpbGluZyByZWFkYWJsZSBieXRlcyBvbiB0aGUgc3RhY2suICAqLwotKwotKyAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMCkKLSsgICAgewotKyAgICAgIGlmIChidWZbMF0gIT0gTElOVVhfU0lHVFJBTVBfSU5TTjEpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgICBwYyAtPSAyOwotKwotKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9TSUdUUkFNUF9MRU4pKQotKwlyZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9TSUdUUkFNUF9MRU4pICE9IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmV0dXJuIHBjOwotK30KLSsKLSsvKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIHNhbWUgZm9yIFJUIHNpZ25hbHMuICBIZXJlIHRoZSBpbnN0cnVjdGlvbgotKyAgIHNlcXVlbmNlIGlzCi0rICAgICAgIG1vdi53ICAxZixyMwotKyAgICAgICB0cmFwYSAgIzE2Ci0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAxOiAud29yZCAgX19OUl9ydF9zaWdyZXR1cm4KLSsgICBvciAweDkzMDUgMHhjMzEwIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgwMGFkLgotKwotKyAgIFRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgcnRfc2lncmV0dXJuLiAgKi8KLSsKLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wCQlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xCQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yCQlPUl9SMF9SMAkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGludXhfcnRfc2lndHJhbXBfY29kZVtdID0KLSt7Ci0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMCwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIF9fTlJfcnRfc2lncmV0dXJuCi0rfTsKLSsKLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0xFTiAoc2l6ZW9mIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUpCi0rCi0rLyogSWYgUEMgaXMgaW4gYSBSVCBzaWd0cmFtcCByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0Ci0rICAgb2YgdGhlIHJvdXRpbmUuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQotK3sKLSsgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAobmV4dF9mcmFtZSk7Ci0rICBnZGJfYnl0ZSBidWZbTElOVVhfUlRfU0lHVFJBTVBfTEVOXTsKLSsKLSsgIC8qIFdlIG9ubHkgcmVjb2duaXplIGEgc2lnbmFsIHRyYW1wb2xpbmUgaWYgUEMgaXMgYXQgdGhlIHN0YXJ0IG9mCi0rICAgICBvbmUgb2YgdGhlIHR3byBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKLSsgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKLSsgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQotKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKLSsgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCi0rCi0rICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04wKQotKyAgICB7Ci0rICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMSkKLSsJcmV0dXJuIDA7Ci0rCi0rICAgICAgcGMgLT0gMjsKLSsKLSsgICAgICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwKLSsJCQkJICAgICBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQotKwlyZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pICE9IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmV0dXJuIHBjOwotK30KLSsKLSsvKiBSZXR1cm4gd2hldGhlciBQQyBpcyBpbiBhIEdOVS9MaW51eCBzaWd0cmFtcCByb3V0aW5lLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc2hfbGludXhfc2lndHJhbXBfcCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgTlVMTCwgTlVMTCk7Ci0rCi0rICAvKiBJZiB3ZSBoYXZlIE5BTUUsIHdlIGNhbiBvcHRpbWl6ZSB0aGUgc2VhcmNoLiAgVGhlIHRyYW1wb2xpbmVzIGFyZQotKyAgICAgbmFtZWQgX19yZXN0b3JlIGFuZCBfX3Jlc3RvcmVfcnQuICBIb3dldmVyLCB0aGV5IGFyZW4ndCBkeW5hbWljYWxseQotKyAgICAgZXhwb3J0ZWQgZnJvbSB0aGUgc2hhcmVkIEMgbGlicmFyeSwgc28gdGhlIHRyYW1wb2xpbmUgbWF5IGFwcGVhciB0bwotKyAgICAgYmUgcGFydCBvZiB0aGUgcHJlY2VkaW5nIGZ1bmN0aW9uLiAgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHNpZ2FjdGlvbiwKLSsgICAgIF9fc2lnYWN0aW9uLCBvciBfX2xpYmNfc2lnYWN0aW9uIChhbGwgYWxpYXNlcyB0byB0aGUgc2FtZSBmdW5jdGlvbikuICAqLwotKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzdHJzdHIgKG5hbWUsICJzaWdhY3Rpb24iKSAhPSBOVUxMKQotKyAgICByZXR1cm4gKHNoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwCi0rCSAgICB8fCBzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSkgIT0gMCk7Ci0rCi0rICByZXR1cm4gKHN0cmNtcCAoIl9fcmVzdG9yZSIsIG5hbWUpID09IDAKLSsJICB8fCBzdHJjbXAgKCJfX3Jlc3RvcmVfcnQiLCBuYW1lKSA9PSAwKTsKLSt9Ci0rCi0rLyogT2Zmc2V0IHRvIHN0cnVjdCBzaWdjb250ZXh0IGluIHVjb250ZXh0LCBmcm9tIDxhc20vdWNvbnRleHQuaD4uICAqLwotKyNkZWZpbmUgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQgMTIKLSsKLSsKLSsvKiBBc3N1bWluZyBORVhUX0ZSQU1FIGlzIGEgZnJhbWUgZm9sbG93aW5nIGEgR05VL0xpbnV4IHNpZ3RyYW1wCi0rICAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHNpZ2NvbnRleHQgc3RydWN0dXJlLiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rc2hfbGludXhfc2lnY29udGV4dF9hZGRyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIgcGM7Ci0rICBDT1JFX0FERFIgc3A7Ci0rCi0rICBzcCA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKLSsKLSsgIHBjID0gc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOwotKyAgaWYgKHBjKQotKyAgICB7Ci0rICAgICAgcmV0dXJuIHNwOwotKyAgICB9Ci0rCi0rICBwYyA9IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKTsKLSsgIGlmIChwYykKLSsgICAgewotKyAgICAgIENPUkVfQUREUiB1Y29udGV4dF9hZGRyOwotKwotKyAgICAgIC8qIFRoZSBzaWdjb250ZXh0IHN0cnVjdHVyZSBpcyBwYXJ0IG9mIHRoZSB1c2VyIGNvbnRleHQuICBBCi0rCSBwb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRleHQgaXMgcGFzc2VkIGFzIHRoZSB0aGlyZCBhcmd1bWVudAotKwkgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLiAgKi8KLSsgICAgICB1Y29udGV4dF9hZGRyID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBBUkcwX1JFR05VTSsyKTsKLSsgICAgICByZXR1cm4gdWNvbnRleHRfYWRkciArIFNIX0xJTlVYX1VDT05URVhUX1NJR0NPTlRFWFRfT0ZGU0VUOwotKyAgICB9Ci0rCi0rICBlcnJvciAoIkNvdWxkbid0IHJlY29nbml6ZSBzaWduYWwgdHJhbXBvbGluZS4iKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBTaWduYWwgdHJhbXBvbGluZXMuICAqLwotK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKTsKLSsKLStzdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotK3sKLSsgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfY3VycmVudF9hcmNoICgpKTsKLSsgIENPUkVfQUREUiBzaWdjb250ZXh0X2FkZHI7Ci0rCi0rICBpZiAoKnRoaXNfY2FjaGUpCi0rICAgIHJldHVybiAqdGhpc19jYWNoZTsKLSsKLSsgIGNhY2hlID0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKCk7Ci0rCi0rICBjYWNoZS0+YmFzZSA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKLSsgIHNpZ2NvbnRleHRfYWRkciA9IHRkZXAtPnNpZ2NvbnRleHRfYWRkciAodGhpc19mcmFtZSk7Ci0rICBpZiAodGRlcC0+c2NfcmVnX29mZnNldCkKLSsgICAgewotKyAgICAgIGludCBpOwotKwotKyAgICAgIGdkYl9hc3NlcnQgKHRkZXAtPnNjX251bV9yZWdzIDw9IFNIX05VTV9SRUdTKTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+c2NfbnVtX3JlZ3M7IGkrKykKLSsJaWYgKHRkZXAtPnNjX3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rCSAgY2FjaGUtPnNhdmVkX3JlZ3NbaV0gPSBzaWdjb250ZXh0X2FkZHIgKyB0ZGVwLT5zY19yZWdfb2Zmc2V0W2ldOwotKyAgICB9Ci0rCi0rICAqdGhpc19jYWNoZSA9IGNhY2hlOwotKyAgcmV0dXJuIGNhY2hlOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKLSsJCQkgICAgIHN0cnVjdCBmcmFtZV9pZCAqdGhpc19pZCkKLSt7Ci0rICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0KLSsgICAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotKwotKyAgKCp0aGlzX2lkKSA9IGZyYW1lX2lkX2J1aWxkIChjYWNoZS0+YmFzZSArIDY0LCBjYWNoZS0+cGMpOwotK30KLSsKLStleHRlcm4gc3RydWN0IHZhbHVlICogc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoKTsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLSsgICAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCi0rewotKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotKwotKyAgcmV0dXJuIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUsIHJlZ251bSk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kICpzZWxmLAotKyAgICAgICAgICAgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCi0rICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19wcm9sb2d1ZV9jYWNoZSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSkpOwotKwotKyAgLyogV2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyIGlmIHdlIGRvbid0IGhhdmUgYSBzaWdjb250ZXh0X2FkZHIKLSsgICAgIGhhbmRsZXIuICAqLwotKyAgaWYgKHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9PSBOVUxMKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+c2lndHJhbXBfcCAodGhpc19mcmFtZSkpCi0rICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdW53aW5kID0KLSt7Ci0rICBTSUdUUkFNUF9GUkFNRSwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQsCi0rICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyLAotKyAgTlVMTCwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIKLSt9OwotKwotKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOCi0rICAgaW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCi0rICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLSt2b2lkCi0rc2hfc3VwcGx5X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ3MgPSBncmVnczsKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCByZWdzICsgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldKTsKLSsgICAgfQotK30KLSsKLSsvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKLSsgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOIGFzIGRlc2NyaWJlZCBieSB0aGUKLSsgICBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSsgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCi0rCi0rdm9pZAotK3NoX2NvbGxlY3RfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAotKyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKmdyZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjaGFyICpyZWdzID0gZ3JlZ3M7Ci0rICBpbnQgaTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+Z3JlZ3NldF9udW1fcmVnczsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKChyZWdudW0gPT0gaSB8fCByZWdudW0gPT0gLTEpCi0rICAgICAgJiYgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldICE9IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOwotKyAgICB9Ci0rfQotKwotKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTgotKyAgIGluIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCi0rICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NoX3N1cHBseV9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjb25zdCBjaGFyICpyZWdzID0gZnByZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOwotKyAgICB9Ci0rICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFNDUl9SRUdOVU0sIHJlZ3MgKyAzMio0KTsKLSsgIGlmIChyZWdudW0gPT0gRlBVTF9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKLSt9Ci0rCi0rLyogQ29sbGVjdCByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgcmVnaXN0ZXIgY2FjaGUgUkVHQ0FDSEUgYW5kIHN0b3JlCi0rICAgaXQgaW4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgRlBSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQotKyAgIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCi0rICAgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hfY29sbGVjdF9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAotKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rICAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjaGFyICpyZWdzID0gZnByZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpKzI1LCByZWdzICsgaSo0KTsKLSsgICAgfQotKyAgaWYgKHJlZ251bSA9PSBGUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOwotKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKLSt9Ci0rCi0rLyogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlciBzZXQgZm9yIHRoZSBjb3JlIHNlY3Rpb24gaWRlbnRpZmllZAotKyAgIGJ5IFNFQ1RfTkFNRSBhbmQgU0VDVF9TSVpFLiAgKi8KLSsKLStjb25zdCBzdHJ1Y3QgcmVnc2V0ICoKLStzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUsIHNpemVfdCBzZWN0X3NpemUpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICBpZiAoc3RyY21wIChzZWN0X25hbWUsICIucmVnIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+Z3JlZ3NldCA9PSBOVUxMKQotKyAgICB0ZGVwLT5ncmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZ3JlZ3NldCwKLSsgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9ncmVnc2V0KTsKLSsgICAgICByZXR1cm4gdGRlcC0+Z3JlZ3NldDsKLSsgICAgfQotKwotKyAgaWYgKChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWcyIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KSkKLSsgICAgewotKyAgICAgIGlmICh0ZGVwLT5mcHJlZ3NldCA9PSBOVUxMKQotKyAgICB0ZGVwLT5mcHJlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwgc2hfc3VwcGx5X2ZwcmVnc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9mcHJlZ3NldCk7Ci0rICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0OwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rLyogVGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiBHTlUvTGludXggRUxGIGNvcmUtZHVtcHMgYXJlIGlkZW50aWNhbCB0bwotKyAgIHRoZSByZWdpc3RlciBzZXRzIGluIGBzdHJ1Y3QgdXNlcicgdGhhdCBhcmUgdXNlZCBmb3IgYS5vdXQKLSsgICBjb3JlLWR1bXBzLiAgVGhlc2UgYXJlIGFsc28gdXNlZCBieSBwdHJhY2UoMikuICBUaGUgY29ycmVzcG9uZGluZwotKyAgIHR5cGVzIGFyZSBgZWxmX2dyZWdzZXRfdCcgZm9yIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzICh3aXRoCi0rICAgYGVsZl9ncmVnX3QnIHRoZSB0eXBlIG9mIGEgc2luZ2xlIEdQIHJlZ2lzdGVyKSBhbmQgYGVsZl9mcHJlZ3NldF90JwotKyAgIGZvciB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgotKwotKyAgIFRob3NlIHR5cGVzIHVzZWQgdG8gYmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBuYW1lcyBgZ3JlZ3NldF90JyBhbmQKLSsgICBgZnByZWdzZXRfdCcgdG9vLCBhbmQgR0RCIHVzZWQgdGhvc2UgbmFtZXMgaW4gdGhlIHBhc3QuICBCdXQgdGhvc2UKLSsgICBuYW1lcyBhcmUgbm93IHVzZWQgZm9yIHRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gdGhlIGBtY29udGV4dF90JwotKyAgIHR5cGUsIHdoaWNoIGhhdmUgYSBkaWZmZXJlbnQgc2l6ZSBhbmQgbGF5b3V0LiAgKi8KLSsKLSsvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2VyJwotKyAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLSsKLSsvKiBGcm9tIDxzeXMvcmVnLmg+LiAgKi8KLStzdGF0aWMgaW50IHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldFtdID0KLSt7Ci0rIDAsCTQsCTgsCTEyLAkxNiwJMjAsCTI0LAkyOCwKLSsgMzIsCTM2LAk0MCwJNDQsCTQ4LAk1MiwJNTYsCTYwLAotKwotKyBSRUdfUEMqNCwgICBSRUdfUFIqNCwgICBSRUdfR0JSKjQsICAtMSwKLSsgUkVHX01BQ0gqNCwgUkVHX01BQ0wqNCwgUkVHX1NSKjQsCi0rfTsKLSsKLSsvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdAotKyAgIHNpZ2NvbnRleHQnIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLSsKLSsvKiBGcm9tIDxhc20vc2lnY29udGV4dC5oPi4gICovCi0rc3RhdGljIGludCBzaF9saW51eF9zY19yZWdfb2Zmc2V0W10gPQotK3sKLSsgNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAkzMiwKLSsgMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCTY0LAotKyA2OCwJNzIsCTgwLAktMSwKLSsgODQsCTg4LAk3NgotK307Ci0rCi0gc3RhdGljIHZvaWQKLSBzaF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSB7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLSsgIGJmZCBhYmZkOwotKwotKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0OwotKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IEFSUkFZX1NJWkUgKHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldCk7Ci0rICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDIzICogNDsKLSsKLSsgIHRkZXAtPmpiX3BjX29mZnNldCA9IDMyOyAgICAgLyogRnJvbSA8Yml0cy9zZXRqbXAuaD4uICAqLwotKwotKyAgdGRlcC0+c2lndHJhbXBfcCA9IHNoX2xpbnV4X3NpZ3RyYW1wX3A7Ci0rICB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPSBzaF9saW51eF9zaWdjb250ZXh0X2FkZHI7Ci0rICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gc2hfbGludXhfc2NfcmVnX29mZnNldDsKLSsgIHRkZXAtPnNjX251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfc2NfcmVnX29mZnNldCk7Ci0rCi0rICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyKGdkYmFyY2gsICZzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOwotKwotKyAgLyogSWYgd2UgaGF2ZSBhIHJlZ2lzdGVyIG1hcHBpbmcsIGVuYWJsZSB0aGUgZ2VuZXJpYyBjb3JlIGZpbGUKLSsgICAgIHN1cHBvcnQsIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuICAqLwotKyAgaWYgKHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldAotKyAgICAgICYmICFnZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbl9wIChnZGJhcmNoKSkKLSsgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKLSsKLSAgIGxpbnV4X2luaXRfYWJpIChpbmZvLCBnZGJhcmNoKTsKLSAKLSAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmllcy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuYyBiL2dkYi9zaC10ZGVwLmMKLWluZGV4IGZlNjRjZjk3OWEuLjQ0MTcxMTRjZDAgMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtdGRlcC5jCi0rKysgYi9nZGIvc2gtdGRlcC5jCi1AQCAtMjEsNiArMjEsOSBAQAotICAgIHNhY0BjeWdudXMuY29tLiAgKi8KLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImNvbW1hbmQuaCIKLSsjaW5jbHVkZSAiZHVtbXktZnJhbWUuaCIKLSAjaW5jbHVkZSAiZnJhbWUuaCIKLSAjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgotICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKLUBAIC02NiwyMyArNjksNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2hfY2NfZW51bVtdID0gewotIAotIHN0YXRpYyBjb25zdCBjaGFyICpzaF9hY3RpdmVfY2FsbGluZ19jb252ZW50aW9uID0gc2hfY2NfZ2NjOwotIAotLSNkZWZpbmUgU0hfTlVNX1JFR1MgNjcKLS0KLS1zdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUKLS17Ci0tICAvKiBCYXNlIGFkZHJlc3MuICAqLwotLSAgQ09SRV9BRERSIGJhc2U7Ci0tICBMT05HRVNUIHNwX29mZnNldDsKLS0gIENPUkVfQUREUiBwYzsKLS0KLS0gIC8qIEZsYWcgc2hvd2luZyB0aGF0IGEgZnJhbWUgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgcHJvbG9ndWUgY29kZS4gICovCi0tICBpbnQgdXNlc19mcDsKLS0KLS0gIC8qIFNhdmVkIHJlZ2lzdGVycy4gICovCi0tICBDT1JFX0FERFIgc2F2ZWRfcmVnc1tTSF9OVU1fUkVHU107Ci0tICBDT1JFX0FERFIgc2F2ZWRfc3A7Ci0tfTsKLS0KLSBzdGF0aWMgaW50Ci0gc2hfaXNfcmVuZXNhc19jYWxsaW5nX2NvbnZlbnRpb24gKHN0cnVjdCB0eXBlICpmdW5jX3R5cGUpCi0gewotQEAgLTEwNTAsNyArMTAzNiw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgcmV0dXJuIDA7Ci0gICAvKiBPdGhlcndpc2UgaWYgdGhlIHR5cGUgb2YgdGhhdCBtZW1iZXIgaXMgZmxvYXQsIHRoZSB3aG9sZSB0eXBlIGlzCi0gICAgICB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpID09IFRZUEVfQ09ERV9GTFQpCi0rICBpZiAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSkgPT0gVFlQRV9DT0RFX0ZMVCkKLSAgICAgcmV0dXJuIDE7Ci0gICAvKiBPdGhlcndpc2UgaXQncyBub3QgdHJlYXRlZCBhcyBmbG9hdC4gICovCi0gICByZXR1cm4gMDsKLUBAIC0xMTAwLDcgKzEwODYsNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgIGluIGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZyb20gZmlyc3QgdG8gbGFzdC4gICovCi0gICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKLSAgICAgewotLSAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pOwotKyAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pKTsKLSAgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICAgICAgdmFsID0gc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKGdkYmFyY2gsIGFyZ3NbYXJnbnVtXSwgbGVuKTsKLSAKLUBAIC0xODM0LDcgKzE4MjAsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAotICAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfVU5ERUZJTkVEOwotIH0KLSAKLS1zdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLStzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQotIHsKLSAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci1AQCAtMTg2MSw3ICsxODQ3LDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCi0gICByZXR1cm4gY2FjaGU7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotK3N0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0gc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKLUBAIC0xOTI4LDkgKzE5MTQsOSBAQCBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotICAgcmV0dXJuIGNhY2hlOwotIH0KLSAKLS1zdGF0aWMgc3RydWN0IHZhbHVlICoKLS1zaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLS0JCQl2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKLStzdHJ1Y3QgdmFsdWUgKgotK3NoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKLSsJCQlpbnQgcmVnbnVtKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZSA9IHNoX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKLUBAIC0xOTQ0LDcgKzE5MzAsNyBAQCBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLSAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgRnJvYiByZWdudW0gc28gdGhhdCB3ZSBwdWxsIHRoZSB2YWx1ZSBmcm9tCi0gICAgICB0aGUgY29ycmVjdCBwbGFjZS4gICovCi0gICBpZiAocmVnbnVtID09IGdkYmFyY2hfcGNfcmVnbnVtIChnZGJhcmNoKSkKLS0gICAgcmVnbnVtID0gUFJfUkVHTlVNOwotKyAgICByZWdudW0gPSBQUl9SRUdOVU07IC8qIFhYWDogcmVhbGx5PyAqLwotIAotICAgaWYgKHJlZ251bSA8IFNIX05VTV9SRUdTICYmIGNhY2hlLT5zYXZlZF9yZWdzW3JlZ251bV0gIT0gLTEpCi0gICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X21lbW9yeSAodGhpc19mcmFtZSwgcmVnbnVtLAotQEAgLTIyNTUsOCArMjI0MSw4IEBAIHNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKLSBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQotIHsKLS0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwotICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcDsKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwotIAotICAgLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZSwgdXNlIGl0LiAgKi8KLSAgIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVzLCAmaW5mbyk7Ci1AQCAtMjI2OCw2ICsyMjU0LDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCi0gICB0ZGVwID0gWENORVcgKHN0cnVjdCBnZGJhcmNoX3RkZXApOwotICAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKLSAKLSsgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwotKyAgdGRlcC0+Z3JlZ3NldCA9IE5VTEw7Ci0rICB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQgPSBOVUxMOwotKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IDIzOwotKyAgdGRlcC0+c2l6ZW9mX2dyZWdzZXQgPSAwOwotKwotKyAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSsgIHRkZXAtPmZwcmVnc2V0ID0gTlVMTDsKLSsgIHRkZXAtPnNpemVvZl9mcHJlZ3NldCA9IDM0KjQ7Ci0rCi0rICB0ZGVwLT5qYl9wY19vZmZzZXQgPSAtMTsKLSsKLSAgIHNldF9nZGJhcmNoX3Nob3J0X2JpdCAoZ2RiYXJjaCwgMiAqIFRBUkdFVF9DSEFSX0JJVCk7Ci0gICBzZXRfZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKLSAgIHNldF9nZGJhcmNoX2xvbmdfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKLUBAIC0yNDIyLDEwICsyNDIwLDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCi0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSsgIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKLSsKLSAgIC8qIEhvb2sgaW4gQUJJLXNwZWNpZmljIG92ZXJyaWRlcywgaWYgdGhleSBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4gICovCi0gICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdkYmFyY2gpOwotIAotLSAgZHdhcmYyX2FwcGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOwotICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX3N0dWJfdW53aW5kKTsKLSAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9mcmFtZV91bndpbmQpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmggYi9nZGIvc2gtdGRlcC5oCi1pbmRleCA1OWFjZDM1Yjg4Li5iZTNmOTk4ZDg0IDEwMDY0NAotLS0tIGEvZ2RiL3NoLXRkZXAuaAotKysrIGIvZ2RiL3NoLXRkZXAuaAotQEAgLTIxLDYgKzIxLDEyIEBACi0gCi0gLyogQ29udHJpYnV0ZWQgYnkgU3RldmUgQ2hhbWJlcmxhaW4gc2FjQGN5Z251cy5jb20uICAqLwotIAotK3N0cnVjdCBmcmFtZV9pbmZvOwotK3N0cnVjdCBnZGJhcmNoOwotK3N0cnVjdCByZWdncm91cDsKLStzdHJ1Y3QgcmVnc2V0OwotK3N0cnVjdCByZWdjYWNoZTsKLSsKLSAvKiBSZWdpc3RlcnMgZm9yIGFsbCBTSCB2YXJpYW50cy4gIFVzZWQgYWxzbyBieSBzaDMtcm9tLmMuICAqLwotIGVudW0KLSAgIHsKLUBAIC0yOSw2ICszNSw3IEBAIGVudW0KLSAgICAgQVJHMF9SRUdOVU0gPSA0LAotICAgICBBUkdMQVNUX1JFR05VTSA9IDcsCi0gICAgIEZQX1JFR05VTSA9IDE0LAotKyAgICBTUF9SRUdOVU0gPSAxNSwKLSAgICAgUENfUkVHTlVNID0gMTYsCi0gICAgIFBSX1JFR05VTSA9IDE3LAotICAgICBHQlJfUkVHTlVNID0gMTgsCi1AQCAtODEsNiArODgsMjQgQEAgZW51bQotICAgICBGVjBfUkVHTlVNID0gNzYsCi0gICAgIEZWX0xBU1RfUkVHTlVNID0gNzkKLSAgIH07Ci0rI2RlZmluZSBTSF9OVU1fUkVHUyA2NwotKwotK3N0cnVjdCBzaF9mcmFtZV9jYWNoZQotK3sKLSsgIC8qIEJhc2UgYWRkcmVzcy4gICovCi0rICBDT1JFX0FERFIgYmFzZTsKLSsgIExPTkdFU1Qgc3Bfb2Zmc2V0OwotKyAgQ09SRV9BRERSIHBjOwotKwotKyAgLyogRmxhZyBzaG93aW5nIHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBwcm9sb2d1ZSBjb2RlLiAqLwotKyAgaW50IHVzZXNfZnA7Ci0rCi0rICAvKiBTYXZlZCByZWdpc3RlcnMuICAqLwotKyAgQ09SRV9BRERSIHNhdmVkX3JlZ3NbU0hfTlVNX1JFR1NdOwotKyAgQ09SRV9BRERSIHNhdmVkX3NwOwotK307Ci0rCi0rZXh0ZXJuIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSk7Ci0gCi0gLyogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgcmVnaXN0ZXIgaW4gYSBjb3JlLWZpbGUuICAqLwotIHN0cnVjdCBzaF9jb3JlZmlsZV9yZWdtYXAKLUBAIC04OSw4ICsxMTQsMzIgQEAgc3RydWN0IHNoX2NvcmVmaWxlX3JlZ21hcAotICAgdW5zaWduZWQgaW50IG9mZnNldDsKLSB9OwotIAotKy8qIHNoIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gICovCi0gc3RydWN0IGdkYmFyY2hfdGRlcAotIHsKLSsgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwotKyAgc3RydWN0IHJlZ3NldCAqZ3JlZ3NldDsKLSsgIGludCAqZ3JlZ3NldF9yZWdfb2Zmc2V0OwotKyAgaW50IGdyZWdzZXRfbnVtX3JlZ3M7Ci0rICBzaXplX3Qgc2l6ZW9mX2dyZWdzZXQ7Ci0rCi0rICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwotKyAgc3RydWN0IHJlZ3NldCAqZnByZWdzZXQ7Ci0rICBzaXplX3Qgc2l6ZW9mX2ZwcmVnc2V0OwotKwotKyAgLyogT2Zmc2V0IG9mIHNhdmVkIFBDIGluIGptcF9idWYuICAqLwotKyAgaW50IGpiX3BjX29mZnNldDsKLSsKLSsgIC8qIERldGVjdCBzaWd0cmFtcC4gICovCi0rICBpbnQgKCpzaWd0cmFtcF9wKSAoc3RydWN0IGZyYW1lX2luZm8gKik7Ci0rCi0rICAvKiBHZXQgYWRkcmVzcyBvZiBzaWdjb250ZXh0IGZvciBzaWd0cmFtcC4gICovCi0rICBDT1JFX0FERFIgKCpzaWdjb250ZXh0X2FkZHIpIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLSsKLSsgIC8qIE9mZnNldCBvZiByZWdpc3RlcnMgaW4gYHN0cnVjdCBzaWdjb250ZXh0Jy4gICovCi0rICBpbnQgKnNjX3JlZ19vZmZzZXQ7Ci0rICBpbnQgc2NfbnVtX3JlZ3M7Ci0rCi0gICAvKiBOb24tTlVMTCB3aGVuIGRlYnVnZ2luZyBmcm9tIGEgY29yZSBmaWxlLiAgUHJvdmlkZXMgdGhlIG9mZnNldAotICAgICAgd2hlcmUgZWFjaCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgaXMgc3RvcmVkIGluc2lkZSB0aGUgYXNzb2NpYXRlZAotICAgICAgY29yZSBmaWxlIHNlY3Rpb24uICAqLwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAotaW5kZXggOTg3OWYwY2E0Ny4uY2JjMGU0ZDVmNyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi1AQCAtMTE2LDYgKzExNiwxMSBAQCBzd2l0Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0XSB7Ci0gICAgICAgICAgICAgYXBwZW5kIGxpbmstZmxhZ3MgIiAtbSBlbGYzMnBwYyIKLSAgICAgICAgIH0KLSAgICAgfQotKyAgICAic2gqLWxpbnV4KiIgewotKyAgICAgICAgc2V0IGFzbS1hcmNoIHNoLWxpbnV4Ci0rICAgICAgICBzZXQgYXNtLWZsYWdzICItSSR7c3JjZGlyfS8ke3N1YmRpcn0gLUkke29iamRpcn0vJHtzdWJkaXJ9IgotKwlzZXQgZGVidWctZmxhZ3MgIi1nZHdhcmYtMiIKLSsgICAgfQotICAgICAic2gqLSotKiIgewotICAgICAgICAgc2V0IGFzbS1hcmNoIHNoCi0gCXNldCBkZWJ1Zy1mbGFncyAiLWdkd2FyZi0yIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi1pbmRleCBhNGE1ZmM1NDVlLi44OWVmZWQ3Nzk1IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYwotQEAgLTQwLDkgKzQwLDggQEAKLSAJbW92LmwgICAuTGNvbnN0XEAscjEKLSAJYnJhCS5MYWZ0ZXJjb25zdFxACi0gCW5vcAotLQlub3AKLS0uTGNvbnN0XEA6Ci0gCS5hbGlnbgkyCi0rLkxjb25zdFxAOgotIAkubG9uZwlcc3VicgotIAkuYWxpZ24JMQotIC5MYWZ0ZXJjb25zdFxAOgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKLWluZGV4IDQyNGUxYjgzMjcuLjBkZTJlN2I2MzMgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKLUBAIC0xLDYgKzEsOSBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAKLSsjaWZkZWYgX19zaF9fCi0rI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLwotKyNlbmRpZgotIAotIHZvaWQKLSBoYW5kbGVfVVNSMSAoaW50IHNpZykKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCi1pbmRleCA0MjRlMWI4MzI3Li45NTJhYWYyMThhIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCi1AQCAtMSw2ICsxLDEwIEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0rCi0gCi0gdm9pZAotIGhhbmRsZV9VU1IxIChpbnQgc2lnKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi1pbmRleCA4MWYzYjA4ZDZiLi4xNTc0YjJkNmNiIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSsjaWZkZWYgX19zaF9fCi0rI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLwotKyNlbmRpZgotIAotIC8qIFNpZ25hbCBoYW5kbGVycywgd2Ugc2V0IGJyZWFrcG9pbnRzIGluIHRoZW0gdG8gbWFrZSBzdXJlIHRoYXQgdGhlCi0gICAgc2lnbmFscyByZWFsbHkgZ2V0IGRlbGl2ZXJlZC4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYwotaW5kZXggNzU2NjA2ODgwZi4uMTIwNWE5YmM5YyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYwotQEAgLTMsNiArMywxMCBAQAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0rI2lmZGVmIF9fc2hfXwotKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KLSsjZGVmaW5lIGFsYXJtKGEpICAgICAgIC8qIERpdHRvIGZvciBhbGFybSgpICovCi0rI2VuZGlmCi0gCi0gc3RhdGljIGludCBjb3VudCA9IDA7Ci0gCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMzYwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGQxMzJmMjFkODkxNTdlOTgwNTc0ZGE3ZDBjOTQ5ZjZkZDE3ZGY4YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyNTowMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEb250IGRpc2FibGUgbGlicmVhZGxpbmUuYSB3aGVuIHVzaW5nIC0tZGlzYWJsZS1zdGF0aWMKKworSWYgZ2RiIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc3RhdGljIHRoZW4gdGhpcyBpcyBkdXRpZnVsbHkgcGFzc2VkIHRvCityZWFkbGluZSB3aGljaCB0aGVuIGRpc2FibGVzIGxpYnJlYWRsaW5lLmEsIHdoaWNoIGNhdXNlcyBhIHByb2JsZW0gd2hlbiBnZGIKK3RyaWVzIHRvIGxpbmsgYWdhaW5zdCB0aGF0LgorCitUbyBlbnN1cmUgdGhhdCByZWFkbGluZSBhbHdheXMgYnVpbGRzIHN0YXRpYyBsaWJyYXJpZXMsIHBhc3MgLS1lbmFibGUtc3RhdGljIHRvCit0aGUgc3ViLWNvbmZpZ3VyZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmRlZiB8IDMgKystCisgTWFrZWZpbGUuaW4gIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCitpbmRleCAzMTFmZWI5ZGUzLi4yNGMwNjg1ZDQ4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuZGVmCisrKysgYi9NYWtlZmlsZS5kZWYKK0BAIC0xMDUsNyArMTA1LDggQEAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbGliaWNvbnY7CisgCQltaXNzaW5nPSBpbnN0YWxsLWh0bWw7CisgCQltaXNzaW5nPSBpbnN0YWxsLWluZm87IH07CisgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbTQ7IH07CistaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7IH07CisraG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7CisrICAgICAgICAgICAgICAgIGV4dHJhX2NvbmZpZ3VyZV9mbGFncz0nLS1lbmFibGUtc3RhdGljJzt9OworIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpZDsgfTsKKyBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaW07IH07CisgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gdGV4aW5mbzsgbm9faW5zdGFsbD0gdHJ1ZTsgfTsKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAxYWFiZjZlZGU0Li5kOTU3ZWZkZTgxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMjU1MTAsNyArMjU1MTAsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6CisgCSAgJCRzLyQkbW9kdWxlX3NyY2Rpci9jb25maWd1cmUgXAorIAkgIC0tc3JjZGlyPSQke3RvcGRpcn0vJCRtb2R1bGVfc3JjZGlyIFwKKyAJICAkKEhPU1RfQ09ORklHQVJHUykgLS1idWlsZD0ke2J1aWxkX2FsaWFzfSAtLWhvc3Q9JHtob3N0X2FsaWFzfSBcCistCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9ICBcCisrCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9IC0tZW5hYmxlLXN0YXRpYyBcCisgCSAgfHwgZXhpdCAxCisgQGVuZGlmIHJlYWRsaW5lCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWUzZWU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA1ZmRkNDJhY2FhOTY1YmU3YzQyMGEzZjJiYTEyYjc3ZWE1MDNjNTliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MjU6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xMV0gRG9udCBkaXNhYmxlIGxpYnJlYWRsaW5lLmEgd2hlbiB1c2luZyAtLWRpc2FibGUtc3RhdGljCi0KLUlmIGdkYiBpcyBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXN0YXRpYyB0aGVuIHRoaXMgaXMgZHV0aWZ1bGx5IHBhc3NlZCB0bwotcmVhZGxpbmUgd2hpY2ggdGhlbiBkaXNhYmxlcyBsaWJyZWFkbGluZS5hLCB3aGljaCBjYXVzZXMgYSBwcm9ibGVtIHdoZW4gZ2RiCi10cmllcyB0byBsaW5rIGFnYWluc3QgdGhhdC4KLQotVG8gZW5zdXJlIHRoYXQgcmVhZGxpbmUgYWx3YXlzIGJ1aWxkcyBzdGF0aWMgbGlicmFyaWVzLCBwYXNzIC0tZW5hYmxlLXN0YXRpYyB0bwotdGhlIHN1Yi1jb25maWd1cmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5kZWYgfCAzICsrLQotIE1ha2VmaWxlLmluICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmRlZiBiL01ha2VmaWxlLmRlZgotaW5kZXggNzUwNjNiNmQxMi4uYzI3YmJlNGQyOCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmRlZgotKysrIGIvTWFrZWZpbGUuZGVmCi1AQCAtMTA1LDcgKzEwNSw4IEBAIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IGxpYmljb252OwotIAkJbWlzc2luZz0gaW5zdGFsbC1odG1sOwotIAkJbWlzc2luZz0gaW5zdGFsbC1pbmZvOyB9OwotIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IG00OyB9OwotLWhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHJlYWRsaW5lOyB9OwotK2hvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHJlYWRsaW5lOwotKyAgICAgICAgICAgICAgICBleHRyYV9jb25maWd1cmVfZmxhZ3M9Jy0tZW5hYmxlLXN0YXRpYyc7fTsKLSBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaWQ7IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gc2ltOyB9OwotIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHRleGluZm87IG5vX2luc3RhbGw9IHRydWU7IH07Ci1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggNzgxNGZlNzQ1Zi4uM2IwZGM3Y2JiMCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTI1NDcwLDcgKzI1NDcwLDcgQEAgY29uZmlndXJlLXJlYWRsaW5lOgotIAkgICQkcy8kJG1vZHVsZV9zcmNkaXIvY29uZmlndXJlIFwKLSAJICAtLXNyY2Rpcj0kJHt0b3BkaXJ9LyQkbW9kdWxlX3NyY2RpciBcCi0gCSAgJChIT1NUX0NPTkZJR0FSR1MpIC0tYnVpbGQ9JHtidWlsZF9hbGlhc30gLS1ob3N0PSR7aG9zdF9hbGlhc30gXAotLQkgIC0tdGFyZ2V0PSR7dGFyZ2V0X2FsaWFzfSAgXAotKwkgIC0tdGFyZ2V0PSR7dGFyZ2V0X2FsaWFzfSAtLWVuYWJsZS1zdGF0aWMgXAotIAkgIHx8IGV4aXQgMQotIEBlbmRpZiByZWFkbGluZQotIAotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMjJkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAzMjllNWJmMjllOTM0YmE5OTYyMjM3MmE5NjYwODY1ODY0YmIwMjk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmUgTWNDdXJkeSA8YW1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyOTowNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1c2UgPGFzbS9zZ2lkZWZzLmg+CisKK0J1aWxkIGZpeCBmb3IgTUlQUyB3aXRoIG11c2wgbGliYworCitUaGUgTUlQUyBzcGVjaWZpYyBoZWFkZXIgPHNnaWRlZnMuaD4gaXMgcHJvdmlkZWQgYnkgZ2xpYmMgYW5kIHVjbGliYworYnV0IG5vdCBieSBtdXNsLiBSZWdhcmRsZXNzIG9mIHRoZSBsaWJjLCB0aGUga2VybmVsIGhlYWRlcnMgcHJvdmlkZQorPGFzbS9zZ2lkZWZzLmg+IHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGRlZmluaXRpb25zLCBzbyB1c2UgdGhhdAoraW5zdGVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL21pcHMtbGludXgtbmF0LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCitpbmRleCA3ZjU3NWIzMzYzLi5kYzkzYTY0YTkzIDEwMDY0NAorLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKKysrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCitAQCAtMzEsNyArMzEsNyBAQAorICNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNlLmgiCisgI2luY2x1ZGUgImdyZWdzZXQuaCIKKyAKKy0jaW5jbHVkZSA8c2dpZGVmcy5oPgorKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgorICNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisgI2luY2x1ZGUgImluZi1wdHJhY2UuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTg5NjYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNzgyYmIyYWI5YjEwNGRhZDRiYmFlZDFkOWFjNzY5Y2U3ZTViOWY0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjMxOjQwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBleG9ydGVkIGRlZmluaXRpb25zIG9mIFNJR1JUTUlOCisKK0RlZmluZSBXX1NUT1BDT0RFIGlmIG5vdCBkZWZpbmVkIGFscmVhZHkKKworX19TSUdSVE1JTiBpcyBpbnRlcm5hbCB0byBnbGliYyBhbmQgb3RoZXIgbGliY3MgZS5nLiBtdXNsCittYXkgbm90IHByb3ZpZGUgdGhlbQorCitGaXhlcworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTMwMTIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9saW51eC1uYXQuYyAgICAgfCA0ICsrLS0KKyBnZGIvbmF0L2xpbnV4LW5hdC5oIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKK2luZGV4IDQ0ODRmYTVjODcuLjNiYjBlZTdhNDkgMTAwNjQ0CistLS0gYS9nZGIvbGludXgtbmF0LmMKKysrKyBiL2dkYi9saW51eC1uYXQuYworQEAgLTQ1ODgsNiArNDU4OCw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQorICAgLyogTlBUTCByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIFJUIHNpZ25hbHMsIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueQorICAgICAgd2F5IGZvciB0aGUgZGVidWdnZXIgdG8gcXVlcnkgdGhlIHNpZ25hbCBudW1iZXJzIC0gZm9ydHVuYXRlbHkKKyAgICAgIHRoZXkgZG9uJ3QgY2hhbmdlLiAgKi8KKy0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOKTsKKy0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOICsgMSk7CisrICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4pOworKyAgc2lnYWRkc2V0IChzZXQsIFNJR1JUTUlOICsgMSk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCitpbmRleCA0NGRjYmI3NzU4Li45NzVkNzI3NmY2IDEwMDY0NAorLS0tIGEvZ2RiL25hdC9saW51eC1uYXQuaAorKysrIGIvZ2RiL25hdC9saW51eC1uYXQuaAorQEAgLTkxLDQgKzkxLDggQEAgZXh0ZXJuIHZvaWQgbGludXhfc3RvcF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKKyAKKyBleHRlcm4gaW50IGx3cF9pc19zdGVwcGluZyAoc3RydWN0IGx3cF9pbmZvICpsd3ApOworIAorKyNpZm5kZWYgV19TVE9QQ09ERQorKyNkZWZpbmUgV19TVE9QQ09ERShzaWcpICgoc2lnKSA8PCA4IHwgMHg3ZikKKysjZW5kaWYKKysKKyAjZW5kaWYgLyogTkFUX0xJTlVYX05BVF9IICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOGY0YmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBkNmUxMmQ1MmY5Y2VmN2Y1ZTYzMTUwMDNjZWFhMjM2ZjZjYzc3MjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YW1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyOTowNiAtMDcwMAotU3ViamVjdDogW1BBVENIIDA3LzExXSB1c2UgPGFzbS9zZ2lkZWZzLmg+Ci0KLUJ1aWxkIGZpeCBmb3IgTUlQUyB3aXRoIG11c2wgbGliYwotCi1UaGUgTUlQUyBzcGVjaWZpYyBoZWFkZXIgPHNnaWRlZnMuaD4gaXMgcHJvdmlkZWQgYnkgZ2xpYmMgYW5kIHVjbGliYwotYnV0IG5vdCBieSBtdXNsLiBSZWdhcmRsZXNzIG9mIHRoZSBsaWJjLCB0aGUga2VybmVsIGhlYWRlcnMgcHJvdmlkZQotPGFzbS9zZ2lkZWZzLmg+IHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGRlZmluaXRpb25zLCBzbyB1c2UgdGhhdAotaW5zdGVhZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL21pcHMtbGludXgtbmF0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCA2OGE3NTg3YWYyLi4yYjc3MjIxMzcyIDEwMDY0NAotLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNlLmgiCi0gI2luY2x1ZGUgImdyZWdzZXQuaCIKLSAKLS0jaW5jbHVkZSA8c2dpZGVmcy5oPgotKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgotICNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgotICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gI2luY2x1ZGUgImluZi1wdHJhY2UuaCIKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgxNjhjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNDBjOWMxNzQ1OTBjZTZmZGM4NzNiNDUzMjg1MjQ5ZmU5NTdmMzc2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjM1OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKKworTGV0cyB1cyBvdmVycmlkZSBXZXJyb3IgaWYgbmVlZCBiZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgoraW5kZXggMTZhOWYyZmQzOC4uYjljOGNkOWM0MSAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KK0BAIC0xNDYsNyArMTQ2LDcgQEAgUFRIUkVBRF9MSUJTID0gQFBUSFJFQURfTElCU0AKKyBJTlRFUk5BTF9DRkxBR1NfQkFTRSA9ICR7Q1hYRkxBR1N9ICR7R0xPQkFMX0NGTEFHU30gXAorIAkke1BST0ZJTEVfQ0ZMQUdTfSAke0lOQ0xVREVfQ0ZMQUdTfSAke0NQUEZMQUdTfSAkKFBUSFJFQURfQ0ZMQUdTKQorIElOVEVSTkFMX1dBUk5fQ0ZMQUdTID0gJHtJTlRFUk5BTF9DRkxBR1NfQkFTRX0gJChXQVJOX0NGTEFHUykKKy1JTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpIC1ER0RCU0VSVkVSCisrSU5URVJOQUxfQ0ZMQUdTID0gJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAke0NPTVBJTEVSX0NGTEFHU30gLURHREJTRVJWRVIKKyAKKyAjIExERkxBR1MgaXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciBzZXR0aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZQorICMgd2hlbiBydW5uaW5nIG1ha2UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YmVjNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBiYWIwYjM0NjcyNzI3YzUwMzEzZWI5OGI4NTIyMzU1Y2JlMWJkZTM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzE6NDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGV4b3J0ZWQgZGVmaW5pdGlvbnMgb2YgU0lHUlRNSU4KLQotRGVmaW5lIFdfU1RPUENPREUgaWYgbm90IGRlZmluZWQgYWxyZWFkeQotCi1fX1NJR1JUTUlOIGlzIGludGVybmFsIHRvIGdsaWJjIGFuZCBvdGhlciBsaWJjcyBlLmcuIG11c2wKLW1heSBub3QgcHJvdmlkZSB0aGVtCi0KLUZpeGVzCi1odHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMzAxMgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBnZGIvbGludXgtbmF0LmMgICAgIHwgNCArKy0tCi0gZ2RiL25hdC9saW51eC1uYXQuaCB8IDQgKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCAwNjNhZmUyNi4uZmIxZDJkNWQgMTAwNjQ0Ci0tLS0gYS9nZGIvbGludXgtbmF0LmMKLSsrKyBiL2dkYi9saW51eC1uYXQuYwotQEAgLTQ3MTMsNiArNDcxMyw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQotICAgLyogTlBUTCByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIFJUIHNpZ25hbHMsIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueQotICAgICAgd2F5IGZvciB0aGUgZGVidWdnZXIgdG8gcXVlcnkgdGhlIHNpZ25hbCBudW1iZXJzIC0gZm9ydHVuYXRlbHkKLSAgICAgIHRoZXkgZG9uJ3QgY2hhbmdlLiAgKi8KLS0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOKTsKLS0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOICsgMSk7Ci0rICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4pOwotKyAgc2lnYWRkc2V0IChzZXQsIFNJR1JUTUlOICsgMSk7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1pbmRleCAxZTMyZGQ5ZS4uYjg4NjMwNWQgMTAwNjQ0Ci0tLS0gYS9nZGIvbmF0L2xpbnV4LW5hdC5oCi0rKysgYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1AQCAtOTAsNCArOTAsOCBAQCBleHRlcm4gdm9pZCBsaW51eF9zdG9wX2x3cCAoc3RydWN0IGx3cF9pbmZvICpsd3ApOwotIAotIGV4dGVybiBpbnQgbHdwX2lzX3N0ZXBwaW5nIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7Ci0gCi0rI2lmbmRlZiBXX1NUT1BDT0RFCi0rI2RlZmluZSBXX1NUT1BDT0RFKHNpZykgKChzaWcpIDw8IDggfCAweDdmKQotKyNlbmRpZgotKwotICNlbmRpZiAvKiBOQVRfTElOVVhfTkFUX0ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNGJjMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGJhNmZmYTQ2MWZlNzgxZDQ0ZDZkY2JjMGZiZDU2OTIzN2I0NTBmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNTozNTozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDA5LzExXSBDaGFuZ2Ugb3JkZXIgb2YgQ0ZMQUdTCi0KLUxldHMgdXMgb3ZlcnJpZGUgV2Vycm9yIGlmIG5lZWQgYmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLWluZGV4IGYyZjhhMDg0YmQuLjk1MjhkYjEzNjQgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi0rKysgYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi1AQCAtMTQzLDcgKzE0Myw3IEBAIENQUEZMQUdTID0gQENQUEZMQUdTQAotIElOVEVSTkFMX0NGTEFHU19CQVNFID0gJHtDWFhGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCi0gCSR7UFJPRklMRV9DRkxBR1N9ICR7SU5DTFVERV9DRkxBR1N9ICR7Q1BQRkxBR1N9Ci0gSU5URVJOQUxfV0FSTl9DRkxBR1MgPSAke0lOVEVSTkFMX0NGTEFHU19CQVNFfSAkKFdBUk5fQ0ZMQUdTKQotLUlOVEVSTkFMX0NGTEFHUyA9ICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgLURHREJTRVJWRVIKLStJTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpICR7Q09NUElMRVJfQ0ZMQUdTfSAtREdEQlNFUlZFUgotIAotICMgTERGTEFHUyBpcyBzcGVjaWZpY2FsbHkgcmVzZXJ2ZWQgZm9yIHNldHRpbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lCi0gIyB3aGVuIHJ1bm5pbmcgbWFrZS4KLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMTVjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNWI2OWE5OGY2YmI3MzYzYTFmNzlmMjliYWMyYjI1YjdkZjZkMmZkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE1heSAyMDE2IDA4OjQ3OjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlc29sdmUgcmVzdHJpY3Qga2V5d29yZCBjb25mbGljdAorCitHQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCitzaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCit0aGVyZWZvcmUgd2UgdXNlIF9fcmVzdHJpY3QgdG8gZGVub3RlIHRoZSBDOTkga2V5d29yaworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaCB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oIGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCitpbmRleCBkNTM1YTZhNDhiLi43YzM0ZDVhMWFhIDEwMDY0NAorLS0tIGEvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCisrKysgYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKK0BAIC05MywyMCArOTMsMjAgQEAgc3RydWN0IHRpbWV2YWwKKyAjICAgZGVmaW5lIGdldHRpbWVvZmRheSBycGxfZ2V0dGltZW9mZGF5CisgIyAgZW5kaWYKKyBfR0xfRlVOQ0RFQ0xfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKKysgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCisgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKKyBfR0xfQ1hYQUxJQVNfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOworKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOworICMgZWxzZQorICMgIGlmICFASEFWRV9HRVRUSU1FT0ZEQVlACisgX0dMX0ZVTkNERUNMX1NZUyAoZ2V0dGltZW9mZGF5LCBpbnQsCistICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpCisrICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KQorICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7CisgIyAgZW5kaWYKKyAvKiBOZWVkIHRvIGNhc3QsIGJlY2F1c2Ugb24gZ2xpYmMgc3lzdGVtcywgYnkgZGVmYXVsdCwgdGhlIHNlY29uZCBhcmd1bWVudCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV6b25lICouICAqLworIF9HTF9DWFhBTElBU19TWVNfQ0FTVCAoZ2V0dGltZW9mZGF5LCBpbnQsCistICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7CisgIyBlbmRpZgorIF9HTF9DWFhBTElBU1dBUk4gKGdldHRpbWVvZmRheSk7CisgIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA5YzAwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBiYzFmMDFmZjVlNTI0Zjc3NzcwODMwMjRiY2UzNDhhOWIwMDE3YTdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWW91c29uZyBaaG91IDx5c3pob3U0dGVjaEBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI0IE1hciAyMDE3IDEwOjM2OjAzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhlIFBPU0lYIGRvY3VtZW50IHNheXMKKworICAgIFRoZSBwdGhyZWFkX3NpZ21hc2soKSBhbmQgc2lncHJvY21hc2soKSBmdW5jdGlvbnMgc2hhbGwgZmFpbCBpZjoKKworICAgIFtFSU5WQUxdCisgICAgVGhlIHZhbHVlIG9mIHRoZSBob3cgYXJndW1lbnQgaXMgbm90IGVxdWFsIHRvIG9uZSBvZiB0aGUgZGVmaW5lZCB2YWx1ZXMuCisKK2FuZCB0aGlzIGlzIGhvdyBtdXNsLWxpYmMgaXMgY3VycmVudGx5IGRvaW5nLiAgRml4IHRoZSBjYWxsIHRvIGJlIHNhZmUKK2FuZCBjb3JyZWN0CisKKyBbMV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL3B0aHJlYWRfc2lnbWFzay5odG1sCisKK2dkYi9DaGFuZ2VMb2c6CisyMDE3LTAzLTI0ICBZb3Vzb25nIFpob3UgIDx5c3pob3U0dGVjaEBnbWFpbC5jb20+CisKKyAgICAqIGNvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIChzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUpOgorICAgIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbm90IGF1dGhvciwgY2hlcnJ5LXBpY2tlZCBmcm9tIExFREUgaHR0cHM6Ly9idWdzLmxlZGUtcHJvamVjdC5vcmcvaW5kZXgucGhwP2RvPWRldGFpbHMmdGFza19pZD02Mzcmb3BlbmVkZnJvbT0tMSUyQndlZWtdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dkYi9nZGJzdXBwb3J0L3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgYi9nZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCitpbmRleCBjMjkyZDQ5OGRhLi5hZjlkY2FlYjA4IDEwMDY0NAorLS0tIGEvZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYworKysrIGIvZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYworQEAgLTM4LDcgKzM4LDcgQEAgc2F2ZV9vcmlnaW5hbF9zaWduYWxzX3N0YXRlIChib29sIHF1aWV0KQorICAgaW50IGk7CisgICBpbnQgcmVzOworIAorLSAgcmVzID0gZ2RiX3NpZ21hc2sgKDAsICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOworKyAgcmVzID0gZ2RiX3NpZ21hc2sgKFNJR19CTE9DSywgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7CisgICBpZiAocmVzID09IC0xKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lICgoInNpZ3Byb2NtYXNrIikpOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOWQ1MmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gMTliNTgxMDU2YzE3MDlmN2QyODcyY2Q3NmI5Nzc1NDJhMGZlNjE0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDEwIE1heSAyMDE2IDA4OjQ3OjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIHJlc29sdmUgcmVzdHJpY3Qga2V5d29yZCBjb25mbGljdAotCi1HQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCi1zaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCi10aGVyZWZvcmUgd2UgdXNlIF9fcmVzdHJpY3QgdG8gZGVub3RlIHRoZSBDOTkga2V5d29yawotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi1pbmRleCBiNGEwZTQ5YzUwLi5kMjJjZWE5YWFmIDEwMDY0NAotLS0tIGEvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAotKysrIGIvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAotQEAgLTkzLDIwICs5MywyMCBAQCBzdHJ1Y3QgdGltZXZhbAotICMgICBkZWZpbmUgZ2V0dGltZW9mZGF5IHJwbF9nZXR0aW1lb2ZkYXkKLSAjICBlbmRpZgotIF9HTF9GVU5DREVDTF9SUEwgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQotKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKLSAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotIF9HTF9DWFhBTElBU19SUEwgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7Ci0rICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7Ci0gIyBlbHNlCi0gIyAgaWYgIUBIQVZFX0dFVFRJTUVPRkRBWUAKLSBfR0xfRlVOQ0RFQ0xfU1lTIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKLSsgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLSAjICBlbmRpZgotIC8qIE5lZWQgdG8gY2FzdCwgYmVjYXVzZSBvbiBnbGliYyBzeXN0ZW1zLCBieSBkZWZhdWx0LCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXpvbmUgKi4gICovCi0gX0dMX0NYWEFMSUFTX1NZU19DQVNUIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKLSAjIGVuZGlmCi0gX0dMX0NYWEFMSUFTV0FSTiAoZ2V0dGltZW9mZGF5KTsKLSAjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2UwMjVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSBiMTk4NTU5NWU0NjcyMWJiMTY4YWMzOGY0Yzg0MWE5MTVjYzJmNzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWW91c29uZyBaaG91IDx5c3pob3U0dGVjaEBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI0IE1hciAyMDE3IDEwOjM2OjAzICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTFdIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhlIFBPU0lYIGRvY3VtZW50IHNheXMKLQotICAgIFRoZSBwdGhyZWFkX3NpZ21hc2soKSBhbmQgc2lncHJvY21hc2soKSBmdW5jdGlvbnMgc2hhbGwgZmFpbCBpZjoKLQotICAgIFtFSU5WQUxdCi0gICAgVGhlIHZhbHVlIG9mIHRoZSBob3cgYXJndW1lbnQgaXMgbm90IGVxdWFsIHRvIG9uZSBvZiB0aGUgZGVmaW5lZCB2YWx1ZXMuCi0KLWFuZCB0aGlzIGlzIGhvdyBtdXNsLWxpYmMgaXMgY3VycmVudGx5IGRvaW5nLiAgRml4IHRoZSBjYWxsIHRvIGJlIHNhZmUKLWFuZCBjb3JyZWN0Ci0KLSBbMV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL3B0aHJlYWRfc2lnbWFzay5odG1sCi0KLWdkYi9DaGFuZ2VMb2c6Ci0yMDE3LTAzLTI0ICBZb3Vzb25nIFpob3UgIDx5c3pob3U0dGVjaEBnbWFpbC5jb20+Ci0KLSAgICAqIGNvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIChzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUpOgotICAgIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbm90IGF1dGhvciwgY2hlcnJ5LXBpY2tlZCBmcm9tIExFREUgaHR0cHM6Ly9idWdzLmxlZGUtcHJvamVjdC5vcmcvaW5kZXgucGhwP2RvPWRldGFpbHMmdGFza19pZD02Mzcmb3BlbmVkZnJvbT0tMSUyQndlZWtdCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIGIvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCi1pbmRleCA1YmI2NjMyMWJiLi42NTk3ZGVjYmM2IDEwMDY0NAotLS0tIGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCi0rKysgYi9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKLUBAIC00MSw3ICs0MSw3IEBAIHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSAoYm9vbCBxdWlldCkKLSAgIGludCBpOwotICAgaW50IHJlczsKLSAKLS0gIHJlcyA9IHNpZ3Byb2NtYXNrICgwLCAgTlVMTCwgJm9yaWdpbmFsX3NpZ25hbF9tYXNrKTsKLSsgIHJlcyA9IHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOwotICAgaWYgKHJlcyA9PSAtMSkKLSAgICAgcGVycm9yX3dpdGhfbmFtZSAoKCJzaWdwcm9jbWFzayIpKTsKLSAKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVkZDk0YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gM2Q2NzAwZDM4MTUzYTBlYzhlMDgwMGRlNzAzYTUwODlhOGNkM2QyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI5IE5vdiAyMDE4IDE4OjAwOjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGdkYnNlcnZlciBjdHJsLWMgaGFuZGxpbmcKKworVGhpcyBwcm9ibGVtIHdhcyBjcmVhdGVkIGJ5IHRoZSB1cHN0cmVhbSBjb21taXQgNzg3MDhiN2M4YworQWZ0ZXIgYXBwbHlpbmcgdGhlIGNvbW1pdCwgaXQgd2lsbCBzZW5kIFNJR0lOVCB0byB0aGUgcHJvY2VzcworZ3JvdXAoLXNpZ25hbF9waWQpLgorQnV0IGlmIHdlIHVzZSBnZGJzZXJ2ZXIgc2VuZCBTSUdJTlQsIGFuZCB0aGUgYXR0YWNoZWQgcHJvY2VzcyBpcyBub3QgYQorcHJvY2VzcworZ3JvdXAgbGVhZGVyLCB0aGVuIHRoZSAia2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCkiIHJldHVybnMgZXJyb3IgYW5kCitmYWlscyAgdG8KK2ludGVycnVwdCB0aGUgYXR0YWNoZWQgcHJvY2Vzcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1todHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODk0NV0KKworQXV0aG9yOiBKb3NoIEdhbworU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKK2luZGV4IDQyNTU3OTVlYTYuLjc2MmY4YmFmYjYgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCitAQCAtNTkwNCw5ICs1OTA0LDcgQEAgbGludXhfbG9va191cF9zeW1ib2xzICh2b2lkKQorIHN0YXRpYyB2b2lkCisgbGludXhfcmVxdWVzdF9pbnRlcnJ1cHQgKHZvaWQpCisgeworLSAgLyogU2VuZCBhIFNJR0lOVCB0byB0aGUgcHJvY2VzcyBncm91cC4gIFRoaXMgYWN0cyBqdXN0IGxpa2UgdGhlIHVzZXIKKy0gICAgIHR5cGVkIGEgXkMgb24gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsLiAgKi8KKy0gIGtpbGwgKC1zaWduYWxfcGlkLCBTSUdJTlQpOworKyAga2lsbCAoc2lnbmFsX3BpZCwgU0lHSU5UKTsKKyB9CisgCisgLyogQ29weSBMRU4gYnl0ZXMgZnJvbSBpbmZlcmlvcidzIGF1eGlsaWFyeSB2ZWN0b3Igc3RhcnRpbmcgYXQgT0ZGU0VUCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl85LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4zLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOS4xLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCmluZGV4IDk1YWIzOTcuLjQxMzFjOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCkBAIC0yMiw2ICsyMiw3IEBACiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBlcmw9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwgXAogCQktLXdpdGhvdXQtdGNsdGsgXAogIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC0td2l0aC1naXRjb25maWc9L2V0Yy9naXRjb25maWcgIgogCiAjIE5lZWRzIGJyb2tlbnNlcCBhcyB0aGlzIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGVybG5hdGl2ZSBiYXNoLWNvbXBsZXRpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4yNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5Y2IzODIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIGdpdC5pbmMKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKLSAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKLSAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImVkMzkzNjFhM2FlMzYyYzhhZjg1MmQxYTA2OTkyYmMyIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYWQxMTAzMGQyZWFjNjU2ZWU5ZTg4NjJmNTZkMTYxMDU1MGY3ODY3MTgxYmVmZjgxNGM3NzEyYTk5MTkyZTk5ZCIKLVNSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICI1NzQ2NWU4M2YxM2JhOTEwYTE3OGI3MTdkOTM5NThjMCIKLVNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJjZTk5NWY4NmY0NDFiNTZhYjFmZDA3ODhhOTQ3ODY5MDRhZTJlMjk4OWU3MTkxZmQ2ODA2MDAwMzAxMTM2NmQ3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWVhMzFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjEuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBnaXQuaW5jCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3Zfc25wcmludGZfcmV0dXJuc19ib2d1cz1ubyBcCisgICAgICAgICAgICAgICAgIGFjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPSR7YWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9eWVzfSBcCisgICAgICAgICAgICAgICAgICIKK0VYVFJBX09FTUFLRSArPSAiTk9fR0VUVEVYVD0xIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNjZiZGU5NmFkYmJjMTFjODg0M2Q0ZjhmNGY5ODExYiIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImFkNTMzNDk1NjMwMWM4Njg0MWViMWU1YjFiYjIwODg0YTZiYWQ4OWExMGE2NzYyYzk1ODIyMGM3Y2Y2NGRhMDIiCitTUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMzFjMjI3MmE4OTc5MDIyNDk3YmEzZDQyMDJkZjE0NWQiCitTUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiOWE3YWUzYTA5M2JlYTM5NzcwZWI5NmNhM2U1YjQwYmZmN2FmMGI5ZjYxMjNmMDg5ZDc4MjFkMGU1YjhlMTIzMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZhYWY0YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIlZlbmRvciBQYWNrYWdlIE1hbmFnZW1lbnQgZm9yIEdvbGFuZyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2xpZGUuc2giCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9NTQ5MDVjZjg5NGY4Y2M0MTZhOTJmNGZjMzUwYzM1YjIiCi0KLUdPX0lNUE9SVCA9ICJnaXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlIgotU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCi1TUkNSRVYgPSAiOWVmNmNhMzEzYjMyMDAwNzk4NjFmMmRlNGU1NjdiMWQyMjA4MWQxOSIKLQotaW5oZXJpdCBnbwotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIGZvciB4ODYgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMS8KLSMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9pNTg2LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS91c3IvYmluL2dsaWRlJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAidGV4dHJlbCIKLQotIyBmb3IgYWFyY2g2NCBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfS1wdGVzdAotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMzLwotIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nbGlkZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2RlcGVuZGVuY3kvZGVwZW5kZW5jeS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3JlcG8vcmVwby50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL21pcnJvcnMvbWlycm9ycy50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2NmZy9jZmcudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0Ci0jIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nb2RlcC9zdHJpcC9zdHJpcC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3BhdGgvcGF0aC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3RyZWUvdHJlZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3V0aWwvdXRpbC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2FjdGlvbi9hY3Rpb24udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0Ci0jIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jYWNoZS9jYWNoZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAidGV4dHJlbCIKLQotIyBmYWlscyB0byBydW4gdGFzayBjb21waWxlX3B0ZXN0X2Jhc2Ugb24gbWlwcwotUFRFU1RfRU5BQkxFRF9taXBzYXJjaCA9ICIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYWQwZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjMuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJWZW5kb3IgUGFja2FnZSBNYW5hZ2VtZW50IGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dsaWRlLnNoIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTU0OTA1Y2Y4OTRmOGNjNDE2YTkyZjRmYzM1MGMzNWIyIgorCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgorU1JDUkVWID0gIjhlZDViOTI5MjM3OWQ4NmMzOTU5MmE3ZTZhNThlYjljOTAzODc3Y2YiCisKK2luaGVyaXQgZ28KKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBmb3IgeDg2IGVuZHMgd2l0aCB0ZXh0cmVsIGluICR7UE59CisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODU2MzEvCisjIEVSUk9SOiBRQSBJc3N1ZTogRUxGIGJpbmFyeSAnL3dvcmsvaTU4Ni1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUvdXNyL2Jpbi9nbGlkZScgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorSU5TQU5FX1NLSVBfJHtQTn0gKz0gInRleHRyZWwiCisKKyMgZm9yIGFhcmNoNjQgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0tcHRlc3QKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMy8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZ2xpZGUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9kZXBlbmRlbmN5L2RlcGVuZGVuY3kudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9yZXBvL3JlcG8udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9taXJyb3JzL21pcnJvcnMudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jZmcvY2ZnLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZ29kZXAvc3RyaXAvc3RyaXAudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9wYXRoL3BhdGgudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS90cmVlL3RyZWUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS91dGlsL3V0aWwudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9hY3Rpb24vYWN0aW9uLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvY2FjaGUvY2FjaGUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gInRleHRyZWwiCisKKyMgZmFpbHMgdG8gcnVuIHRhc2sgY29tcGlsZV9wdGVzdF9iYXNlIG9uIG1pcHMKK1BURVNUX0VOQUJMRURfbWlwc2FyY2ggPSAiMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCmluZGV4IDE2MzBjMTIuLjQ4YjdlNmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgpAQCAtOCw4ICs4LDggQEAKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIAotU1JDUkVWID0gImI5ODQyNGMyNDkxMTliNzlkM2Y3MDllMjZlYjg2ZjJmZDRkNWU1ZjMiCi1QViA9ICIyMDE5MDUwMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI1MjU2ODE3YWNlODQ5MzUwMmVjODg1MDFhMTllNDA1MWMyZTIyMGIwIgorUFYgPSAiMjAyMDAxMTcrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY29uZmlnLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQxNGIxNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgZ28tY29tbW9uLmluYwotCi1HT19CQVNFVkVSU0lPTiA9ICIxLjEyIgotR09fTUlOT1IgPSAiLjkiCi1QViAuPSAiJHtHT19NSU5PUn0iCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQ0OTUwZWNiN2IyNmQyYzVlNGU3YjRlMGRkNzQ3MDciCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2giCi0KLVNSQ19VUklbbWFpbi5tZDVzdW1dID0gIjYxMzIxMDlkNDA1MGRhMzQ5ZWFkYzlmN2IwMzA0ZWY0IgotU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiYWIwZTU2ZWQ5YzQ3MzJhNjUzZWQyMmUyMzI2NTI3MDlhZmJmNTczZTcxMGY1NmEwN2Y3ZmRlY2E1NzhkNjJmYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDQyODU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDdjYzUxOWFhNWY4NGNmOGZjN2FjOGMxMGZjNjlhYTgwNDAzMzBlYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogTW9uLCAxOSBGZWIgMjAxOCAwODo0OTozMyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhbGxvdyBDQyBhbmQgQ1hYIHRvIGhhdmUgbXVsdGlwbGUgd29yZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotaW5kZXggYWZhZGJhZC4uY2VkYmZiZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1AQCAtODUsMTEgKzg1LDExIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgewotIAotIAljYyA6PSBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKQotIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMob3MuR2V0ZW52KCJDQyIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWNjID0gZW52WzBdCi0rCQljYyA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKLSAJfQotIAljeHggOj0gY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNYWCIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWN4eCA9IGVudlswXQotKwkJY3h4ID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQotIAl9Ci0gCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNjfSkKLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ1hYIiwgVmFsdWU6IGN4eH0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDEtcmVsZWFzZS1icmFuY2guZ28xLjEyLXNlY3VyaXR5LW5ldC10ZXh0cHJvdG8tZG9uLXQtbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjM5ZGJkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLUZyb20gMjY1YjY5MWFjNDQwYmZiNzExZDhkZTMyMzM0NmY3ZDcyZTYyMGVmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZpbGlwcG8gVmFsc29yZGEgPGZpbGlwcG9AZ29sYW5nLm9yZz4KLURhdGU6IFRodSwgMTIgU2VwIDIwMTkgMTI6Mzc6MzYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gW3JlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eV0gbmV0L3RleHRwcm90bzogZG9uJ3QKLSBub3JtYWxpemUgaGVhZGVycyB3aXRoIHNwYWNlcyBiZWZvcmUgdGhlIGNvbG9uCi0KLVJGQyA3MjMwIGlzIGNsZWFyIGFib3V0IGhlYWRlcnMgd2l0aCBhIHNwYWNlIGJlZm9yZSB0aGUgY29sb24sIGxpa2UKLQotWC1BbnN3ZXIgOiA0MgotCi1iZWluZyBpbnZhbGlkLCBidXQgd2UndmUgYmVlbiBhY2NlcHRpbmcgYW5kIG5vcm1hbGl6aW5nIHRoZW0gZm9yIGNvbXBhdGliaWxpdHkKLXB1cnBvc2VzIHNpbmNlIENMIDU2OTAwNTkgaW4gMjAxMi4KLQotT24gdGhlIGNsaWVudCBzaWRlLCB0aGlzIGlzIGhhcm1sZXNzIGFuZCBpbmRlZWQgbW9zdCBicm93c2VycyBiZWhhdmUgdGhlIHNhbWUKLXRvIHRoaXMgZGF5LiBPbiB0aGUgc2VydmVyIHNpZGUsIHRoaXMgYmVjb21lcyBhIHNlY3VyaXR5IGlzc3VlIHdoZW4gdGhlCi1iZWhhdmlvciBkb2Vzbid0IG1hdGNoIHRoYXQgb2YgYSByZXZlcnNlIHByb3h5IHNpdHRpbmcgaW4gZnJvbnQgb2YgdGhlIHNlcnZlci4KLQotRm9yIGV4YW1wbGUsIGlmIGEgV0FGIGFjY2VwdHMgdGhlbSB3aXRob3V0IG5vcm1hbGl6aW5nIHRoZW0sIGl0IG1pZ2h0IGJlCi1wb3NzaWJsZSB0byBieXBhc3MgaXRzIGZpbHRlcnMsIGJlY2F1c2UgdGhlIEdvIHNlcnZlciB3b3VsZCBpbnRlcnByZXQgdGhlCi1oZWFkZXIgZGlmZmVyZW50bHkuIFdvcnNlLCBpZiB0aGUgcmV2ZXJzZSBwcm94eSBjb2FsZXNjZXMgcmVxdWVzdHMgb250byBhCi1zaW5nbGUgSFRUUC8xLjEgY29ubmVjdGlvbiB0byBhIEdvIHNlcnZlciwgdGhlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlcXVlc3QKLWJvdW5kYXJpZXMgY2FuIGdldCBvdXQgb2Ygc3luYyBiZXR3ZWVuIHRoZW0sIGFsbG93aW5nIGFuIGF0dGFja2VyIHRvIHRhY2sgYW4KLWFyYml0cmFyeSBtZXRob2QgYW5kIHBhdGggb250byBhIHJlcXVlc3QgYnkgb3RoZXIgY2xpZW50cywgaW5jbHVkaW5nCi1hdXRoZW50aWNhdGlvbiBoZWFkZXJzIHVua25vd24gdG8gdGhlIGF0dGFja2VyLgotCi1UaGlzIHdhcyByZWNlbnRseSBwcmVzZW50ZWQgYXQgbXVsdGlwbGUgc2VjdXJpdHkgY29uZmVyZW5jZXM6Ci1odHRwczovL3BvcnRzd2lnZ2VyLm5ldC9ibG9nL2h0dHAtZGVzeW5jLWF0dGFja3MtcmVxdWVzdC1zbXVnZ2xpbmctcmVib3JuCi0KLW5ldC9odHRwIHNlcnZlcnMgYWxyZWFkeSByZWplY3QgaGVhZGVyIGtleXMgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMuCi1TaW1wbHkgc3RvcCBub3JtYWxpemluZyBleHRyYSBzcGFjZXMgaW4gbmV0L3RleHRwcm90bywgbGV0IGl0IHJldHVybiB0aGVtCi11bmNoYW5nZWQgbGlrZSBpdCBkb2VzIGZvciBvdGhlciBpbnZhbGlkIGhlYWRlcnMsIGFuZCBsZXQgbmV0L2h0dHAgZW5mb3JjZQotUkZDIDcyMzAsIHdoaWNoIGlzIEhUVFAgc3BlY2lmaWMuIFRoaXMgbG9zZXMgdXMgbm9ybWFsaXphdGlvbiBvbiB0aGUgY2xpZW50Ci1zaWRlLCBidXQgdGhlcmUncyBubyByaWdodCBhbnN3ZXIgb24gdGhlIGNsaWVudCBzaWRlIGFueXdheSwgYW5kIGhpZGluZyB0aGUKLWlzc3VlIHNvdW5kcyB3b3JzZSB0aGFuIGxldHRpbmcgdGhlIGFwcGxpY2F0aW9uIGRlY2lkZS4KLQotRml4ZXMgQ1ZFLTIwMTktMTYyNzYKLQotQ2hhbmdlLUlkOiBJNmQyNzJkZTgyN2UwODcwZGE4NWQ5M2RmNzcwZDZhMGUxNjFiYmNmMQotUmV2aWV3ZWQtb246IGh0dHBzOi8vdGVhbS1yZXZpZXcuZ2l0LmNvcnAuZ29vZ2xlLmNvbS9jL2dvbGFuZy9nby1wcml2YXRlLysvNTQ5NzE5Ci1SZXZpZXdlZC1ieTogQnJhZCBGaXR6cGF0cmljayA8YnJhZGZpdHpAZ29vZ2xlLmNvbT4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDEyODBiODY4ZTgyYmYxNzNlYTNlOTg4YmUzMDkyZDE2MGVlNjYwODIpCi1SZXZpZXdlZC1vbjogaHR0cHM6Ly90ZWFtLXJldmlldy5naXQuY29ycC5nb29nbGUuY29tL2MvZ29sYW5nL2dvLXByaXZhdGUvKy81NTg3NzYKLVJldmlld2VkLWJ5OiBEbWl0cmkgU2h1cmFseW92IDxkbWl0c2h1ckBnb29nbGUuY29tPgotCi1DVkU6IENWRS0yMDE5LTE2Mjc2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vY29tbWl0LzZlNmY0YWFmNzBjOGIxY2M4MWU2NWEyNjMzMmFhOTQwOWRlMDNhZDhdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9uZXQvaHR0cC9zZXJ2ZV90ZXN0LmdvICAgICAgIHwgIDQgKysrKwotIHNyYy9uZXQvaHR0cC90cmFuc3BvcnRfdGVzdC5nbyAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvICAgICAgfCAxMCArKy0tLS0tLS0tCi0gc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28gfCAxMyArKysrKystLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9uZXQvaHR0cC9zZXJ2ZV90ZXN0LmdvIGIvc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28KLWluZGV4IDZlYjAwODhhOTYuLjg5YmZkZmJiODIgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0L2h0dHAvc2VydmVfdGVzdC5nbwotKysrIGIvc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28KLUBAIC00NzQ4LDYgKzQ3NDgsMTAgQEAgZnVuYyBUZXN0U2VydmVyVmFsaWRhdGVzSGVhZGVycyh0ICp0ZXN0aW5nLlQpIHsKLSAJCXsiZm9vXHhmZmJhcjogZm9vXHJcbiIsIDQwMH0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpbmFyeSBpbiBoZWFkZXIKLSAJCXsiZm9vXHgwMGJhcjogZm9vXHJcbiIsIDQwMH0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpbmFyeSBpbiBoZWFkZXIKLSAJCXsiRm9vOiAiICsgc3RyaW5ncy5SZXBlYXQoIngiLCAxPDwyMSkgKyAiXHJcbiIsIDQzMX0sIC8vIGhlYWRlciB0b28gbGFyZ2UKLSsJCS8vIFNwYWNlcyBiZXR3ZWVuIHRoZSBoZWFkZXIga2V5IGFuZCBjb2xvbiBhcmUgbm90IGFsbG93ZWQuCi0rCQkvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjQuCi0rCQl7IkZvbyA6IGJhclxyXG4iLCA0MDB9LAotKwkJeyJGb29cdDogYmFyXHJcbiIsIDQwMH0sCi0gCi0gCQl7ImZvbzogZm9vIGZvb1xyXG4iLCAyMDB9LCAgICAvLyBMV1Mgc3BhY2UgaXMgb2theQotIAkJeyJmb286IGZvb1x0Zm9vXHJcbiIsIDIwMH0sICAgLy8gTFdTIHRhYiBpcyBva2F5Ci1kaWZmIC0tZ2l0IGEvc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvIGIvc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvCi1pbmRleCA1YzMyOTU0M2UyLi41ZTU0MzhhNzA4IDEwMDY0NAotLS0tIGEvc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvCi0rKysgYi9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28KLUBAIC01MTMzLDMgKzUxMzMsMzAgQEAgZnVuYyBUZXN0VHJhbnNwb3J0SWdub3JlczQwOCh0ICp0ZXN0aW5nLlQpIHsKLSAJfQotIAl0LkZhdGFsZigidGltZW91dCBhZnRlciAldiB3YWl0aW5nIGZvciBUcmFuc3BvcnQgY29ubmVjdGlvbnMgdG8gZGllIG9mZiIsIHRpbWUuU2luY2UodDApKQotIH0KLSsKLStmdW5jIFRlc3RJbnZhbGlkSGVhZGVyUmVzcG9uc2UodCAqdGVzdGluZy5UKSB7Ci0rCXNldFBhcmFsbGVsKHQpCi0rCWRlZmVyIGFmdGVyVGVzdCh0KQotKwljc3QgOj0gbmV3Q2xpZW50U2VydmVyVGVzdCh0LCBoMU1vZGUsIEhhbmRsZXJGdW5jKGZ1bmModyBSZXNwb25zZVdyaXRlciwgciAqUmVxdWVzdCkgewotKwkJY29ubiwgYnVmLCBfIDo9IHcuKEhpamFja2VyKS5IaWphY2soKQotKwkJYnVmLldyaXRlKFtdYnl0ZSgiSFRUUC8xLjEgMjAwIE9LXHJcbiIgKwotKwkJCSJEYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDE5OjA5OjI3IEdNVFxyXG4iICsKLSsJCQkiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcclxuIiArCi0rCQkJIkNvbnRlbnQtTGVuZ3RoOiAwXHJcbiIgKwotKwkJCSJGb28gOiBiYXJcclxuXHJcbiIpKQotKwkJYnVmLkZsdXNoKCkKLSsJCWNvbm4uQ2xvc2UoKQotKwl9KSkKLSsJZGVmZXIgY3N0LmNsb3NlKCkKLSsJcmVzLCBlcnIgOj0gY3N0LmMuR2V0KGNzdC50cy5VUkwpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRhbChlcnIpCi0rCX0KLSsJZGVmZXIgcmVzLkJvZHkuQ2xvc2UoKQotKwlpZiB2IDo9IHJlcy5IZWFkZXIuR2V0KCJGb28iKTsgdiAhPSAiIiB7Ci0rCQl0LkVycm9yZihgdW5leHBlY3RlZCAiRm9vIiBoZWFkZXI6ICVxYCwgdikKLSsJfQotKwlpZiB2IDo9IHJlcy5IZWFkZXIuR2V0KCJGb28gIik7IHYgIT0gImJhciIgewotKwkJdC5FcnJvcmYoYGJhZCAiRm9vICIgaGVhZGVyIHZhbHVlOiAlcSwgd2FudCAlcWAsIHYsICJiYXIiKQotKwl9Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlci5nbyBiL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlci5nbwotaW5kZXggMmM0ZjI1ZDVhZS4uMWE1ZTM2NGNmNyAxMDA2NDQKLS0tLSBhL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlci5nbwotKysrIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvCi1AQCAtNDkzLDE4ICs0OTMsMTIgQEAgZnVuYyAociAqUmVhZGVyKSBSZWFkTUlNRUhlYWRlcigpIChNSU1FSGVhZGVyLCBlcnJvcikgewotIAkJCXJldHVybiBtLCBlcnIKLSAJCX0KLSAKLS0JCS8vIEtleSBlbmRzIGF0IGZpcnN0IGNvbG9uOyBzaG91bGQgbm90IGhhdmUgdHJhaWxpbmcgc3BhY2VzCi0tCQkvLyBidXQgdGhleSBhcHBlYXIgaW4gdGhlIHdpbGQsIHZpb2xhdGluZyBzcGVjcywgc28gd2UgcmVtb3ZlCi0tCQkvLyB0aGVtIGlmIHByZXNlbnQuCi0rCQkvLyBLZXkgZW5kcyBhdCBmaXJzdCBjb2xvbi4KLSAJCWkgOj0gYnl0ZXMuSW5kZXhCeXRlKGt2LCAnOicpCi0gCQlpZiBpIDwgMCB7Ci0gCQkJcmV0dXJuIG0sIFByb3RvY29sRXJyb3IoIm1hbGZvcm1lZCBNSU1FIGhlYWRlciBsaW5lOiAiICsgc3RyaW5nKGt2KSkKLSAJCX0KLS0JCWVuZEtleSA6PSBpCi0tCQlmb3IgZW5kS2V5ID4gMCAmJiBrdltlbmRLZXktMV0gPT0gJyAnIHsKLS0JCQllbmRLZXktLQotLQkJfQotLQkJa2V5IDo9IGNhbm9uaWNhbE1JTUVIZWFkZXJLZXkoa3ZbOmVuZEtleV0pCi0rCQlrZXkgOj0gY2Fub25pY2FsTUlNRUhlYWRlcktleShrdls6aV0pCi0gCi0gCQkvLyBBcyBwZXIgUkZDIDcyMzAgZmllbGQtbmFtZSBpcyBhIHRva2VuLCB0b2tlbnMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBjaGFycy4KLSAJCS8vIFdlIGNvdWxkIHJldHVybiBhIFByb3RvY29sRXJyb3IgaGVyZSwgYnV0IGJldHRlciB0byBiZSBsaWJlcmFsIGluIHdoYXQgd2UKLWRpZmYgLS1naXQgYS9zcmMvbmV0L3RleHRwcm90by9yZWFkZXJfdGVzdC5nbyBiL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlcl90ZXN0LmdvCi1pbmRleCBmODVmYmRjMzZkLi5iOTJmZGNkM2M3IDEwMDY0NAotLS0tIGEvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28KLSsrKyBiL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlcl90ZXN0LmdvCi1AQCAtMTg4LDExICsxODgsMTAgQEAgZnVuYyBUZXN0TGFyZ2VSZWFkTUlNRUhlYWRlcih0ICp0ZXN0aW5nLlQpIHsKLSAJfQotIH0KLSAKLS0vLyBUZXN0IHRoYXQgd2UgcmVhZCBzbGlnaHRseS1ib2d1cyBNSU1FIGhlYWRlcnMgc2VlbiBpbiB0aGUgd2lsZCwKLS0vLyB3aXRoIHNwYWNlcyBiZWZvcmUgY29sb25zLCBhbmQgc3BhY2VzIGluIGtleXMuCi0rLy8gVGVzdFJlYWRNSU1FSGVhZGVyTm9uQ29tcGxpYW50IGNoZWNrcyB0aGF0IHdlIGRvbid0IG5vcm1hbGl6ZSBoZWFkZXJzCi0rLy8gd2l0aCBzcGFjZXMgYmVmb3JlIGNvbG9ucywgYW5kIGFjY2VwdCBzcGFjZXMgaW4ga2V5cy4KLSBmdW5jIFRlc3RSZWFkTUlNRUhlYWRlck5vbkNvbXBsaWFudCh0ICp0ZXN0aW5nLlQpIHsKLS0JLy8gSW52YWxpZCBIVFRQIHJlc3BvbnNlIGhlYWRlciBhcyBzZW50IGJ5IGFuIEF4aXMgc2VjdXJpdHkKLS0JLy8gY2FtZXJhOiAodGhpcyBpcyBoYW5kbGVkIGJ5IElFLCBGaXJlZm94LCBDaHJvbWUsIGN1cmwsIGV0Yy4pCi0rCS8vIFRoZXNlIGludmFsaWQgaGVhZGVycyB3aWxsIGJlIHJlamVjdGVkIGJ5IG5ldC9odHRwIGFjY29yZGluZyB0byBSRkMgNzIzMC4KLSAJciA6PSByZWFkZXIoIkZvbzogYmFyXHJcbiIgKwotIAkJIkNvbnRlbnQtTGFuZ3VhZ2U6IGVuXHJcbiIgKwotIAkJIlNJRCA6IDBcclxuIiArCi1AQCAtMjAyLDkgKzIwMSw5IEBAIGZ1bmMgVGVzdFJlYWRNSU1FSGVhZGVyTm9uQ29tcGxpYW50KHQgKnRlc3RpbmcuVCkgewotIAl3YW50IDo9IE1JTUVIZWFkZXJ7Ci0gCQkiRm9vIjogICAgICAgICAgICAgIHsiYmFyIn0sCi0gCQkiQ29udGVudC1MYW5ndWFnZSI6IHsiZW4ifSwKLS0JCSJTaWQiOiAgICAgICAgICAgICAgeyIwIn0sCi0tCQkiQXVkaW8gTW9kZSI6ICAgICAgIHsiTm9uZSJ9LAotLQkJIlByaXZpbGVnZSI6ICAgICAgICB7IjEyNyJ9LAotKwkJIlNJRCAiOiAgICAgICAgICAgICB7IjAifSwKLSsJCSJBdWRpbyBNb2RlICI6ICAgICAgeyJOb25lIn0sCi0rCQkiUHJpdmlsZWdlICI6ICAgICAgIHsiMTI3In0sCi0gCX0KLSAJaWYgIXJlZmxlY3QuRGVlcEVxdWFsKG0sIHdhbnQpIHx8IGVyciAhPSBuaWwgewotIAkJdC5GYXRhbGYoIlJlYWRNSU1FSGVhZGVyID1cbiV2LCAldjsgd2FudDpcbiV2IiwgbSwgZXJyLCB3YW50KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiODU2MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi1Gcm9tIDQ3ZGI2OWUyMGVkNjZmYjYyYjAxYWZmZDgzZDgyOTY1NGI4Mjk4OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogTW9uLCAxOSBGZWIgMjAxOCAwODo1MDo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYwotCi1HbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bwotZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KLVRoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0Ci1jYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgotCi1Ib3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKLWRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKLWxpYnJhcnkuCi0KLUZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcwotYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCi1vZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgotCi1UaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi1HT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQotZW1iZWRkaW5nIGlzIGRpc2FibGVkLgotCi1TZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCi1wYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Ci12YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAotYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKLWR1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAotdGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCi1jZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCi1kZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgotCi1UaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKLXNpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAotYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCi1ydW50aW1lL2NnbykuCi0KLVRoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQotYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAotYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCAgMiArLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICB8IDYzICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCBjZWRiZmJmLi41NzYzYTBkIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC0xMjgsNyArMTI4LDcgQEAgZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgewotIGZ1bmMgRXh0cmFFbnZWYXJzQ29zdGx5KCkgW11jZmcuRW52VmFyIHsKLSAJdmFyIGIgd29yay5CdWlsZGVyCi0gCWIuSW5pdCgpCi0tCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCi0rCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCi0gCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggMTJlMTUyNy4uZTQxYmZhYyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTE3NCw2ICsxNzQsOCBAQCBmdW5jIChiICpCdWlsZGVyKSBEbyhyb290ICpBY3Rpb24pIHsKLSAJd2cuV2FpdCgpCi0gfQotIAotK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCi0rCi0gLy8gYnVpbGRBY3Rpb25JRCBjb21wdXRlcyB0aGUgYWN0aW9uIElEIGZvciBhIGJ1aWxkIGFjdGlvbi4KLSBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAlwIDo9IGEuUGFja2FnZQotQEAgLTE5MCw3ICsxOTIsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAkvLyBidXQgaXQgZG9lcyBub3QgaGlkZSB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUEFUSC4KLSAJLy8gSW5jbHVkZSB0aGUgZnVsbCBkaXIgaW4gdGhhdCBjYXNlLgotIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCi0tCWlmICFwLkdvcm9vdCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKLSAJCWZtdC5GcHJpbnRmKGgsICJkaXIgJXNcbiIsIHAuRGlyKQotIAl9Ci0gCWZtdC5GcHJpbnRmKGgsICJnb29zICVzIGdvYXJjaCAlc1xuIiwgY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi1AQCAtMjAxLDEzICsyMDMsMTMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGRBY3Rpb25JRChhICpBY3Rpb24pIGNhY2hlLkFjdGlvbklEIHsKLSAJfQotIAlpZiBsZW4ocC5DZ29GaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgewotIAkJZm10LkZwcmludGYoaCwgImNnbyAlcVxuIiwgYi50b29sSUQoImNnbyIpKQotLQkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwKQotLQkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKCksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCi0rCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHAsIHRydWUpCi0rCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUodHJ1ZSksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCi0gCQlpZiBsZW4ocC5DWFhGaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKCksIGN4eGZsYWdzKQotKwkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKHRydWUpLCBjeHhmbGFncykKLSAJCX0KLSAJCWlmIGxlbihwLkZGaWxlcykgPiAwIHsKLS0JCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUoKSwgZmZsYWdzKQotKwkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSh0cnVlKSwgZmZsYWdzKQotIAkJfQotIAkJLy8gVE9ETyhyc2MpOiBTaG91bGQgd2UgaW5jbHVkZSB0aGUgU1dJRyB2ZXJzaW9uIG9yIEZvcnRyYW4vR0NDL0crKy9PYmplY3RpdmUtQyBjb21waWxlciB2ZXJzaW9ucz8KLSAJfQotQEAgLTIwOTYsMzMgKzIwOTgsMzMgQEAgdmFyICgKLSAvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEd4eENtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCi0rCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGNjRXhlIHJldHVybnMgdGhlIENDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGN4eEV4ZSByZXR1cm5zIHRoZSBDWFggY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gZmNFeGUgcmV0dXJucyB0aGUgRkMgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKLStmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgotQEAgLTIxMzEsMTEgKzIxMzMsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0gLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5Ci0gLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KLSAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KLS1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLStmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCi0gCWlmIGxlbihjb21waWxlcikgPT0gMCB7Ci0gCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KLSAJfQotKwlpZiBmaWx0ZXJlZCB7Ci0rCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKLSsJfQotIAlyZXR1cm4gY29tcGlsZXIKLSB9Ci0gCi1AQCAtMjI4NSw4ICsyMjkwLDIzIEBAIGZ1bmMgZW52TGlzdChrZXksIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLSAJcmV0dXJuIHN0cmluZ3MuRmllbGRzKHYpCi0gfQotIAotK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKLSsKLStmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKLSsJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCi0rCWlmICFmaWx0ZXJGbGFncyB7Ci0rCQlyZXR1cm4gZmxhZ3MKLSsJfQotKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7Ci0rCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7Ci0rCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCi0rCQl9Ci0rCX0KLSsJcmV0dXJuIG5ld2ZsYWdzCi0rfQotKwotIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCi0tZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKLSAKLSAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgewotQEAgLTIzMDQsNiArMjMyNCwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAotIAlpZiBsZGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJMREZMQUdTIiwgZGVmYXVsdHMsIHAuQ2dvTERGTEFHUywgY2hlY2tMaW5rZXJGbGFncyk7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuCi0gCX0KLSsJaWYgZmlsdGVyZWQgewotKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQotKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCi0rCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCi0rCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKLSsJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCi0rCX0KLSAKLSAJcmV0dXJuCi0gfQotQEAgLTIzMTksNyArMjM0Niw3IEBAIHZhciBjZ29SZSA9IHJlZ2V4cC5NdXN0Q29tcGlsZShgWy9cXDpdYCkKLSAKLSBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0gCXAgOj0gYS5QYWNrYWdlCi0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQotKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKLSAJfQotQEAgLTI2NzksNyArMjcwNiw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7Ci0gCi0gLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KLSBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgewotLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuICIiLCAiIiwgZXJyCi0gCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmNhNDBlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDVjMzJjMzhiZjE5YjI0ZjBhYWRkNzgwMTJkMTdmZjVjYWE4MjE1MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNToyNDoyMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgZW52aXJvbm1lbnQKLQotdG8gYWxsb3cgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGJ1aWxkIHJvb3RzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyAgICAgICAgICB8IDQgKysrLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyB8IDcgKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ28vc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLUBAIC0yMjgsNyArMjI4LDkgQEAgZnVuYyB4aW5pdCgpIHsKLSAJd29ya2RpciA9IHh3b3JrZGlyKCkKLSAJeGF0ZXhpdChybXdvcmtkaXIpCi0gCi0tCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotKwlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7Ci0rCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSsJfQotIH0KLSAKLSAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKLUluZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotQEAgLTExNiw3ICsxMTYsMTEgQEAgZnVuYyBpbml0KCkgewotIAkJLy8gdmFyaWFibGVzLiBUaGlzIG1hdGNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFRvb2xEaXIgaW4KLSAJCS8vIGdvL2J1aWxkLCBleGNlcHQgZm9yIHVzaW5nIEdPUk9PVCByYXRoZXIgdGhhbgotIAkJLy8gcnVudGltZS5HT1JPT1QuCi0tCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgewotKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQotKwkJfSBlbHNlIHsKLSsJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQl9Ci0gCX0KLSB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDRhMzNhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA1NWViOGM5NWE4OWYzMmFlYzE2Yjc3NjRlNzhlOGNmNzUxNjlkYzgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MjY6MTAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGQ6IGFkZCBzb25hbWUgdG8gc2hhcmVhYmxlIG9iamVjdHMKLQotc28gdGhhdCBPRSdzIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgaGFuZGxpbmcKLWNhbiBmaW5kIHRoZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotaW5kZXggMjIwYWFiMy4uNzAzOTI1ZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLUBAIC0xMTM1LDYgKzExMzUsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKLSAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcwotIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgotQEAgLTExNDYsNiArMTE0Nyw4IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQl9Ci0gCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSsKLSAJY2FzZSBCdWlsZE1vZGVQbHVnaW46Ci0gCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCi1AQCAtMTE1NCw2ICsxMTU3LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQkJfQotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSAJCX0KLSAJfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNlOGRlOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gMWJmMTVhYThmYjc3MzYwNGIyNTI0Y2ZkYWI0OTNmYTRkOGZhOTI4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA2OjMyOjQ1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZCBnb19ib290c3RyYXAKLQotZm9yIGhhbmRsaW5nIE9FIGNyb3NzLWNhbmFkaWFuIGJ1aWxkcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL21ha2UuYmFzaCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAotaW5kZXggNzg4ODJkOS4uMjU5NDNkMCAxMDA3NTUKLS0tLSBhL3NyYy9tYWtlLmJhc2gKLSsrKyBiL3NyYy9tYWtlLmJhc2gKLUBAIC0xNjMsNyArMTYzLDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KLSAJZXhpdCAxCi0gZmkKLSBybSAtZiBjbWQvZGlzdC9kaXN0Ci0tR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0gCi0gIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgotIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQotQEAgLTE5NCw3ICsxOTQsNyBAQCBmaQotICMgUnVuIGRpc3QgYm9vdHN0cmFwIHRvIGNvbXBsZXRlIG1ha2UuYmFzaC4KLSAjIEJvb3RzdHJhcCBpbnN0YWxscyBhIHByb3BlciBjbWQvZGlzdCwgYnVpbHQgd2l0aCB0aGUgbmV3IHRvb2xjaGFpbi4KLSAjIFRocm93IG91cnMsIGJ1aWx0IHdpdGggR28gMS40LCBhd2F5IGFmdGVyIGJvb3RzdHJhcC4KLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgotIHJtIC1mIC4vY21kL2Rpc3QvZGlzdAotIAotICMgRE8gTk9UIEFERCBBTlkgTkVXIENPREUgSEVSRS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMGQ1ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODIgKzAsMCBAQAotRnJvbSBmZTBmY2FmNDNlZjNhYWI4MTU0MWRhZDJhNzFiNDYyNTRkYzRjZjZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMTA6MDM6NDggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKLQotQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQotYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKLQotIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7Ci0gICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93Ci0gICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KLSAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCi0gICBidWlsdC4KLQotIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKLSAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZwotICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCi0gICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgotCi0gLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCi0gICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKLSAgIHNoYXJlZCBydW50aW1lKS4KLQotTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQotanVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKLXRoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgotbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bwotYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLW1vcmUgZGlzdCBjbGVhbnVwCi0KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ28vc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLUBAIC0zOSw2ICszOSw3IEBAIHZhciAoCi0gCWdvbGRmbGFncyAgICAgICAgc3RyaW5nCi0gCXdvcmtkaXIgICAgICAgICAgc3RyaW5nCi0gCXRvb2xkaXIgICAgICAgICAgc3RyaW5nCi0rCWJ1aWxkX3Rvb2xkaXIJIHN0cmluZwotIAlvbGRnb29zICAgICAgICAgIHN0cmluZwotIAlvbGRnb2FyY2ggICAgICAgIHN0cmluZwotIAlleGUgICAgICAgICAgICAgIHN0cmluZwotQEAgLTUwLDYgKzUxLDcgQEAgdmFyICgKLSAKLSAJcmVidWlsZGFsbCAgIGJvb2wKLSAJZGVmYXVsdGNsYW5nIGJvb2wKLSsJY3Jvc3NCdWlsZCAgIGJvb2wKLSAKLSAJdmZsYWcgaW50IC8vIHZlcmJvc2l0eQotICkKLUBAIC0yMzEsNiArMjMzLDggQEAgZnVuYyB4aW5pdCgpIHsKLSAJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgewotIAkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0gCX0KLSsJYnVpbGRfdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIiwgZ29yb290KQotKwotIH0KLSAKLSAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKLUBAIC0yNjAsNyArMjY0LDYgQEAgZnVuYyBjb21waWxlckVudihlbnZOYW1lLCBkZWYgc3RyaW5nKSBtYQotIAkJaWYgZ29ob3N0b3MgIT0gZ29vcyB8fCBnb2hvc3RhcmNoICE9IGdvYXJjaCB7Ci0gCQkJbVtnb2hvc3RvcysiLyIrZ29ob3N0YXJjaF0gPSBtWyIiXQotIAkJfQotLQkJbVsiIl0gPSBlbnYKLSAJfQotIAotIAlmb3IgXywgZ29vcyA6PSByYW5nZSBva2dvb3MgewotQEAgLTQ4Nyw4ICs0OTAsMTAgQEAgZnVuYyBzZXR1cCgpIHsKLSAJLy8gV2Uga2VlcCBpdCBpbiBwa2cvLCBqdXN0IGxpa2UgdGhlIG9iamVjdCBkaXJlY3RvcnkgYWJvdmUuCi0gCWlmIHJlYnVpbGRhbGwgewotIAkJeHJlbW92ZWFsbCh0b29sZGlyKQotKwkJeHJlbW92ZWFsbChidWlsZF90b29sZGlyKQotIAl9Ci0gCXhta2RpcmFsbCh0b29sZGlyKQotKwl4bWtkaXJhbGwoYnVpbGRfdG9vbGRpcikKLSAKLSAJLy8gUmVtb3ZlIHRvb2wgYmluYXJpZXMgZnJvbSBiZWZvcmUgdGhlIHRvb2wvZ29ob3N0b3NfZ29ob3N0YXJjaAotIAl4cmVtb3ZlYWxsKHBhdGhmKCIlcy9iaW4vdG9vbCIsIGdvcm9vdCkpCi1AQCAtMTE1NSwxMSArMTE2MCwyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAKLSAJdmFyIG5vQmFubmVyIGJvb2wKLSAJdmFyIGRlYnVnIGJvb2wKLSsJdmFyIGhvc3RPbmx5IGJvb2wKLSsJdmFyIHRhcmdldE9ubHkgYm9vbAotKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5nIHsgInN0ZCIsICJjbWQiIH0KLSsKLSAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCi0gCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKLSAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCi0rCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCi0rCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCi0gCi0tCXhmbGFncGFyc2UoMCkKLSsJeGZsYWdwYXJzZSgtMSkKLSsKLSsJaWYgKGhvc3RPbmx5ICYmIHRhcmdldE9ubHkpIHsKLSsJCWZhdGFsZigic3BlY2lmeSBvbmx5IG9uZSBvZiAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQotKwl9Ci0rCWNyb3NzQnVpbGQgPSBob3N0T25seSB8fCB0YXJnZXRPbmx5Ci0rCWlmIGZsYWcuTkFyZygpID4gMCB7Ci0rCQlpZiBjcm9zc0J1aWxkIHsKLSsJCQl0b0J1aWxkID0gZmxhZy5BcmdzKCkKLSsJCX0gZWxzZSB7Ci0rCQkJZmF0YWxmKCJwYWNrYWdlIG5hbWVzIG5vdCBwZXJtaXR0ZWQgd2l0aG91dCAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQotKwkJfQotKwl9Ci0gCi0gCWlmIGRlYnVnIHsKLSAJCS8vIGNtZC9idWlsZGlkIGlzIHVzZWQgaW4gZGVidWcgbW9kZS4KLUBAIC0xMjA3LDggKzEyMzAsMTMgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAKLS0JZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotLQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAotKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAotKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KLSsJaWYgISBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKLSsJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCX0KLSAJZ29Cb290c3RyYXAgOj0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpCi0gCWNtZEdvIDo9IHBhdGhmKCIlcy9nbyIsIGdvYmluKQotIAlpZiBkZWJ1ZyB7Ci1AQCAtMTIzNyw3ICsxMjY1LDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAkJeHByaW50ZigiXG4iKQotIAl9Ci0gCXhwcmludGYoIkJ1aWxkaW5nIEdvIHRvb2xjaGFpbjIgdXNpbmcgZ29fYm9vdHN0cmFwIGFuZCBHbyB0b29sY2hhaW4xLlxuIikKLS0Jb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJaWYgY3Jvc3NCdWlsZCB7Ci0rCQlvcy5TZXRlbnYoIkNDIiwgZGVmYXVsdGNjWyIiXSkKLSsJfSBlbHNlIHsKLSsJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCX0KLSAJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCBhcHBlbmQoW11zdHJpbmd7Ii1pIn0sIHRvb2xjaGFpbi4uLikuLi4pCi0gCWlmIGRlYnVnIHsKLSAJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLUBAIC0xMjc0LDUwICsxMzA2LDg0IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAl9Ci0gCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotIAotLQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0tCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KLS0JCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLSsJaWYgY3Jvc3NCdWlsZCB7Ci0rCQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKQotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKLSsJCXRvb2xfZmlsZXMsIF8gOj0gZmlsZXBhdGguR2xvYihwYXRoZigiJXMvKiIsIHRvb2xkaXIpKQotKwkJZm9yIF8sIGYgOj0gcmFuZ2UgdG9vbF9maWxlcyB7Ci0rCQkJY29weWZpbGUocGF0aGYoIiVzLyVzIiwgYnVpbGRfdG9vbGRpciwgZmlsZXBhdGguQmFzZShmKSksIGYsIHdyaXRlRXhlYykKLSsJCQl4cmVtb3ZlKGYpCi0rCQl9Ci0rCQlvcy5TZXRlbnYoIkdPVE9PTERJUiIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlnb0Jvb3RzdHJhcCA9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCBidWlsZF90b29sZGlyKQotKwkJaWYgaG9zdE9ubHkgewotKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciBob3N0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCi0rCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJ1biB0aGUgY21kR28gYmluYXJ5Ci0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCX0gZWxzZSBpZiB0YXJnZXRPbmx5IHsKLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCi0rCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IHJ1biB0aGUgdGFyZ2V0J3MgY21kR28gYmluYXJ5Ci0gCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAl9IGVsc2UgewotLQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KLS0JCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotLQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLS0JCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwotKwkJaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggewotKwkJCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJfSBlbHNlIHsKLSsJCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotKwkJCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotKwkJCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0rCQkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotKwotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJZ29vcyA9IG9sZGdvb3MKLSsJCQlnb2FyY2ggPSBvbGRnb2FyY2gKLSsJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAkJfQotLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSAJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotIAkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotIAkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotIAotLQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLS0JCX0KLS0JCWdvb3MgPSBvbGRnb29zCi0tCQlnb2FyY2ggPSBvbGRnb2FyY2gKLS0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0tCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLS0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0tCX0KLS0JdGFyZ2V0cyA6PSBbXXN0cmluZ3sic3RkIiwgImNtZCJ9Ci0tCWlmIGdvb3MgPT0gImpzIiAmJiBnb2FyY2ggPT0gIndhc20iIHsKLS0JCS8vIFNraXAgdGhlIGNtZCB0b29scyBmb3IganMvd2FzbS4gVGhleSdyZSBub3QgdXNhYmxlLgotLQkJdGFyZ2V0cyA9IHRhcmdldHNbOjFdCi0tCX0KLS0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGNtZEdvLCB0YXJnZXRzLi4uKQotLQlpZiBkZWJ1ZyB7Ci0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0tCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLS0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0rCQlpZiBkZWJ1ZyB7Ci0rCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQotKwkJfQotIAl9Ci0gCi0gCS8vIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuCi1AQCAtMTMzNSw3ICsxNDAxLDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAl9Ci0gCi0gCS8vIFJlbW92ZSBnb19ib290c3RyYXAgbm93IHRoYXQgd2UncmUgZG9uZS4KLS0JeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCi0rCS8vIEV4Y2VwdCB0aGF0IGZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy1idWlsZHMsIHdlIG5lZWQgdG8KLSsJLy8ga2VlcCBpdC4KLSsJaWYgISBjcm9zc0J1aWxkIHsKLSsJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQotKwl9Ci0gCi0gCS8vIFByaW50IHRyYWlsaW5nIGJhbm5lciB1bmxlc3MgaW5zdHJ1Y3RlZCBvdGhlcndpc2UuCi0gCWlmICFub0Jhbm5lciB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZWY5NDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLUZyb20gN2NjNjBiMzg4N2JlMmQ1Njc0YjlmNWQ0MjJkMDIyOTc2Y2YyMDVlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBGcmksIDIgTWFyIDIwMTggMDY6MDA6MjAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0Ci0KLVRoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKLXN0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCi1iZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCi1saWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKLXRoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKLXNldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgotCi1UaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQotaW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCi1lbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbyB8ICAzICsrKwotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyAgfCAgNSArKysrKwotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotQEAgLTYwMCw2ICs2MDAsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoCi0gCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gewotIAkJCQljb250aW51ZQotIAkJCX0KLSsJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7Ci0rCQkJCWNvbnRpbnVlCi0rCQkJfQotIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCi0gCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAotIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMTQ3LDYgKzE0Nyw3IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgotIH0KLSAKLSBjb25zdCBjb25jdXJyZW50R0NCYWNrZW5kQ29tcGlsYXRpb25FbmFibGVkQnlEZWZhdWx0ID0gdHJ1ZQotK3ZhciBnb1Jvb3RQcmVjaW91cyBib29sID0gdHJ1ZQotIAotIGZ1bmMgaW5pdCgpIHsKLSAJLy8gYnJlYWsgaW5pdCBjeWNsZQotQEAgLTE2MCw2ICsxNjEsMTAgQEAgZnVuYyBpbml0KCkgewotIAotIAlBZGRCdWlsZEZsYWdzKENtZEJ1aWxkKQotIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwpCi0rCi0rCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7Ci0rCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCi0rCX0KLSB9Ci0gCi0gLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1AQCAtNDM2LDYgKzQzNiwyMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZChhICpBY3Rpb24pIChlcnIKLSAJCXJldHVybiBmbXQuRXJyb3JmKCJtaXNzaW5nIG9yIGludmFsaWQgYmluYXJ5LW9ubHkgcGFja2FnZTsgZXhwZWN0ZWQgZmlsZSAlcSIsIGEuUGFja2FnZS5UYXJnZXQpCi0gCX0KLSAKLSsJaWYgZ29Sb290UHJlY2lvdXMgJiYgKGEuUGFja2FnZS5TdGFuZGFyZCB8fCBhLlBhY2thZ2UuR29yb290KSB7Ci0rCQlfLCBlcnIgOj0gb3MuU3RhdChhLlBhY2thZ2UuVGFyZ2V0KQotKwkJaWYgZXJyID09IG5pbCB7Ci0rCQkJYS5idWlsdCA9IGEuUGFja2FnZS5UYXJnZXQKLSsJCQlhLlRhcmdldCA9IGEuUGFja2FnZS5UYXJnZXQKLSsJCQlhLmJ1aWxkSUQgPSBiLmZpbGVIYXNoKGEuUGFja2FnZS5UYXJnZXQpCi0rCQkJYS5QYWNrYWdlLlN0YWxlID0gZmFsc2UKLSsJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAiR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCi0rCQkJcmV0dXJuIG5pbAotKwkJfQotKwkJYS5QYWNrYWdlLlN0YWxlID0gdHJ1ZQotKwkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIm1pc3Npbmcgb3IgaW52YWxpZCBHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKLSsJCWlmIGIuSXNDbWRMaXN0IHsKLSsJCQlyZXR1cm4gbmlsCi0rCQl9Ci0rCX0KLSsKLSAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiBlcnIKLSAJfQotQEAgLTE0MzgsNiArMTQ1NSwxNCBAQCBmdW5jIEJ1aWxkSW5zdGFsbEZ1bmMoYiAqQnVpbGRlciwgYSAqQWN0Ci0gCQlyZXR1cm4gbmlsCi0gCX0KLSAKLSsJaWYgZ29Sb290UHJlY2lvdXMgJiYgYS5QYWNrYWdlICE9IG5pbCB7Ci0rCQlwIDo9IGEuUGFja2FnZQotKwkJaWYgcC5TdGFuZGFyZCB8fCBwLkdvcm9vdCB7Ci0rCQkJZXJyIDo9IGZtdC5FcnJvcmYoImF0dGVtcHRpbmcgdG8gaW5zdGFsbCBwYWNrYWdlICVzIGludG8gcmVhZC1vbmx5IEdPUk9PVCIsIHAuSW1wb3J0UGF0aCkKLSsJCQlyZXR1cm4gZXJyCi0rCQl9Ci0rCX0KLSsKLSAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiBlcnIKLSAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjVjZjQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gMGUwYzI0N2YwY2FlYzIzNTI4ODg5ZmYwOWQ5ODM0OGNiYTkwMjhmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjYgT2N0IDIwMTggMTU6MDI6MzIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdXNlIEdPQlVJTERNT0RFIHRvIHNldCBidWlsZG1vZGUKLQotV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKLXRvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCi0KLUFkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0Ci1idWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCi0KLVJlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKLWNtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotQEAgLTIyMyw3ICsyMjMsMTEgQEAgZnVuYyBBZGRCdWlsZEZsYWdzKGNtZCAqYmFzZS5Db21tYW5kKSB7Ci0gCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEFzbWZsYWdzLCAiYXNtZmxhZ3MiLCAiIikKLSAJY21kLkZsYWcuVmFyKGJ1aWxkQ29tcGlsZXJ7fSwgImNvbXBpbGVyIiwgIiIpCi0tCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgImRlZmF1bHQiLCAiIikKLSsJaWYgYm0gOj0gb3MuR2V0ZW52KCJHT0JVSUxETU9ERSIpOyBibSAhPSAiIiB7Ci0rCQljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZEJ1aWxkbW9kZSwgImJ1aWxkbW9kZSIsIGJtLCAiIikKLSsJfSBlbHNlIHsKLSsJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgImRlZmF1bHQiLCAiIikKLSsJfQotIAljbWQuRmxhZy5WYXIoJmxvYWQuQnVpbGRHY2ZsYWdzLCAiZ2NmbGFncyIsICIiKQotIAljbWQuRmxhZy5WYXIoJmxvYWQuQnVpbGRHY2Nnb2ZsYWdzLCAiZ2NjZ29mbGFncyIsICIiKQotIAljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZE1vZCwgIm1vZCIsICIiLCAiIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQwY2Y0Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSAzNWVhNGJlMzRlOTQ5MTJiMDA4MzdlMGY3YzczODVmMmU5OGZlNzY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFN1biwgMTggRmViIDIwMTggMDg6MjQ6MDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGQ6IHJlcGxhY2UgZ2xpYmMgZHluYW1pYyBsaW5rZXIgd2l0aCBtdXNsCi0KLVJld29yayBvZiBwYXRjaCBieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotZm9yIGdvIDEuMTAuICBTaG91bGQgYmUgYXBwbGllZCBjb25kaXRpb25hbGx5IG9uCi1tdXNsIGJlaW5nIHRoZSBzeXN0ZW0gQyBsaWJyYXJ5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgZml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi1AQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbGludXguc28uMyIsIC8vIDIgZm9yIE9BQkksIDMgZm9yIEVBQkkKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAotIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbwotQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIiwKLSAKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi1AQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCi1AQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiWFhYIiwKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KLUBAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotIAkJLy8gVE9ETyhhdXN0aW4pOiBBQkkgdjEgdXNlcyAvdXNyL2xpYi9sZC5zby4xLAotLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXBvd2VycGM2NGxlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbwotQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXMzOTB4LnNvLjEiLAotIAotIAkJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi1AQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogICAiL2xpYi9sZC1saW51eC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGZkNWU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDllM2RjNDRjZGZhNThkOTY1MDRkMGE3ODlkYzgyNjE3ZGQ1YmVmNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMTowMToxMyArMDQzMAotU3ViamVjdDogW1BBVENIIDEvOV0gY21kL2dvOiBBbGxvdyBDQyBhbmQgQ1hYIHRvIGhhdmUgbXVsdGlwbGUgd29yZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLWluZGV4IDE3ODUyZGUuLjdiNWVjNWUgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotQEAgLTEwMCwxMSArMTAwLDExIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgewotIAotIAljYyA6PSBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKQotIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMoY2ZnLkdldGVudigiQ0MiKSk7IGxlbihlbnYpID4gMCB7Ci0tCQljYyA9IGVudlswXQotKwkJY2MgPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCi0gCX0KLSAJY3h4IDo9IGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKQotIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMoY2ZnLkdldGVudigiQ1hYIikpOyBsZW4oZW52KSA+IDAgewotLQkJY3h4ID0gZW52WzBdCi0rCQljeHggPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCi0gCX0KLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQVIiLCBWYWx1ZTogZW52T3IoIkFSIiwgImFyIil9KQotIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBjY30pCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVkZGQzOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi1Gcm9tIGExM2FlNDg0ZTQxMTM5MDk0NTA1ZDI4MzQ0MzdlOTI2MmE1MzE1ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxNDoyMiArMDQzMAotU3ViamVjdDogW1BBVENIIDIvOV0gY21kL2dvOiBtYWtlIGNvbnRlbnQtYmFzZWQgaGFzaCBnZW5lcmF0aW9uIGxlc3MgcGVkYW50aWMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotR28gMS4xMCdzIGJ1aWxkIHRvb2wgbm93IHVzZXMgY29udGVudC1iYXNlZCBoYXNoZXMgdG8KLWRldGVybWluZSB3aGVuIHNvbWV0aGluZyBzaG91bGQgYmUgYnVpbHQgb3IgcmUtYnVpbHQuCi1UaGlzIHNhbWUgbWVjaGFuaXNtIGlzIHVzZWQgdG8gbWFpbnRhaW4gYSBidWlsdC1hcnRpZmFjdAotY2FjaGUgZm9yIHNwZWVkaW5nIHVwIGJ1aWxkcy4KLQotSG93ZXZlciwgdGhlIGhhc2hlcyBpdCBnZW5lcmF0ZXMgaW5jbHVkZSBpbmZvcm1hdGlvbiB0aGF0Ci1kb2Vzbid0IHdvcmsgd2VsbCB3aXRoIE9FLCBub3Igd2l0aCB1c2luZyBhIHNoYXJlZCBydW50aW1lCi1saWJyYXJ5LgotCi1GaXJzdCwgaXQgZW1iZWRzIHBhdGggbmFtZXMgdG8gc291cmNlIGZpbGVzLCB1bmxlc3MKLWJ1aWxkaW5nIHdpdGhpbiBHT1JPT1QuICBUaGlzIHByZXZlbnRzIHRoZSBidWlsZGluZwotb2YgYSBwYWNrYWdlIGluIEdPUEFUSCBmb3IgbGF0ZXIgc3RhZ2luZyBpbnRvIEdPUk9PVC4KLQotVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotR09QQVRIX09NSVRfSU5fQUNUSU9OSUQuICBJZiBwcmVzZW50LCBwYXRoIG5hbWUKLWVtYmVkZGluZyBpcyBkaXNhYmxlZC4KLQotU2Vjb25kLCBpZiBjZ28gaXMgZW5hYmxlZCwgdGhlIGJ1aWxkIElEIGZvciBjZ28tcmVsYXRlZAotcGFja2FnZXMgd2lsbCBpbmNsdWRlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudAotdmFyaWFibGVzIGZvciBpbnZva2luZyB0aGUgY29tcGlsZXIgKENDLCBDWFgsIEZDKSBhbmQKLWFueSBDR09feHhGTEFHUyB2YXJpYWJsZXMuICBPbmx5IGlmIHRoZSBzZXR0aW5ncyB1c2VkCi1kdXJpbmcgYSBjb21waWxhdGlvbiBleGFjdGx5IG1hdGNoLCBjaGFyYWN0ZXIgZm9yIGNoYXJhY3RlciwKLXRoZSB2YWx1ZXMgdXNlZCBmb3IgY29tcGlsaW5nIHJ1bnRpbWUvY2dvIG9yIGFueSBvdGhlcgotY2dvLWVuYWJsZWQgcGFja2FnZSBiZWluZyBpbXBvcnRlZCwgd2lsbCB0aGUgdG9vbAotZGVjaWRlIHRoYXQgdGhlIGltcG9ydGVkIHBhY2thZ2UgaXMgdXAtdG8tZGF0ZS4KLQotVGhpcyBpcyBkb25lIHRvIGhlbHAgZW5zdXJlIGNvcnJlY3RuZXNzLCBidXQgaXMgb3Zlcmx5Ci1zaW1wbGlzdGljIGFuZCBlZmZlY3RpdmVseSBwcmV2ZW50cyB0aGUgcmV1c2Ugb2YgYnVpbHQKLWFydGlmYWN0cyB0aGF0IHVzZSBjZ28gKG9yIHNoYXJlZCBydW50aW1lLCB3aGljaCBpbmNsdWRlcwotcnVudGltZS9jZ28pLgotCi1UaGlzIHBhdGNoIGZpbHRlcnMgb3V0IGFsbCBjb21waWxlciBmbGFncyBleGNlcHQgdGhvc2UKLWJlZ2lubmluZyB3aXRoICctbScuICBUaGUgZGVmYXVsdCBiZWhhdmlvciBjYW4gYmUgcmVzdG9yZWQKLWJ5IHNldHRpbmcgdGhlIENHT19QRURBTlRJQyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCAgMiArLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICB8IDY2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCA3YjVlYzVlLi4yOTJmMTE3IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC0xNTQsNyArMTU0LDcgQEAgZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgewotIGZ1bmMgRXh0cmFFbnZWYXJzQ29zdGx5KCkgW11jZmcuRW52VmFyIHsKLSAJdmFyIGIgd29yay5CdWlsZGVyCi0gCWIuSW5pdCgpCi0tCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCi0rCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCi0gCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggN2RkOWE5MC4uY2NlYmFmOCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTMyLDYgKzMyLDggQEAgaW1wb3J0ICgKLSAJInRpbWUiCi0gKQotIAotK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCi0rCi0gLy8gYWN0aW9uTGlzdCByZXR1cm5zIHRoZSBsaXN0IG9mIGFjdGlvbnMgaW4gdGhlIGRhZyByb290ZWQgYXQgcm9vdAotIC8vIGFzIHZpc2l0ZWQgaW4gYSBkZXB0aC1maXJzdCBwb3N0LW9yZGVyIHRyYXZlcnNhbC4KLSBmdW5jIGFjdGlvbkxpc3Qocm9vdCAqQWN0aW9uKSBbXSpBY3Rpb24gewotQEAgLTIwNSw3ICsyMDcsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAkvLyBUaGUgY29tcGlsZXIgaGlkZXMgdGhlIGV4YWN0IHZhbHVlIG9mICRHT1JPT1QKLSAJLy8gd2hlbiBidWlsZGluZyB0aGluZ3MgaW4gR09ST09ULgotIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCi0tCWlmICFwLkdvcm9vdCAmJiAhY2ZnLkJ1aWxkVHJpbXBhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKLSsJaWYgIXAuR29yb290ICYmICFvbWl0R29wYXRoICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCi0gCX0KLSAJZm10LkZwcmludGYoaCwgImdvb3MgJXMgZ29hcmNoICVzXG4iLCBjZmcuR29vcywgY2ZnLkdvYXJjaCkKLUBAIC0yMTksMTMgKzIyMSwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAl9Ci0gCWlmIGxlbihwLkNnb0ZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0gCQlmbXQuRnByaW50ZihoLCAiY2dvICVxXG4iLCBiLnRvb2xJRCgiY2dvIikpCi0tCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHApCi0tCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUoKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSsJCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCwgdHJ1ZSkKLSsJCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSh0cnVlKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSAJCWlmIGxlbihwLkNYWEZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0tCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUoKSwgY3h4ZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUodHJ1ZSksIGN4eGZsYWdzKQotIAkJfQotIAkJaWYgbGVuKHAuRkZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSgpLCBmZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKHRydWUpLCBmZmxhZ3MpCi0gCQl9Ci0gCQkvLyBUT0RPKHJzYyk6IFNob3VsZCB3ZSBpbmNsdWRlIHRoZSBTV0lHIHZlcnNpb24gb3IgRm9ydHJhbi9HQ0MvRysrL09iamVjdGl2ZS1DIGNvbXBpbGVyIHZlcnNpb25zPwotIAl9Ci1AQCAtMjIyOSwzMyArMjIzMSw0OCBAQCB2YXIgKAotIC8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0gZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ2ZvcnRyYW5DbWQgcmV0dXJucyBhIGdmb3J0cmFuIGNvbW1hbmQgbGluZSBwcmVmaXguCi0gZnVuYyAoYiAqQnVpbGRlcikgZ2ZvcnRyYW5DbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gY2NFeGUgcmV0dXJucyB0aGUgQ0MgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY3h4RXhlIHJldHVybnMgdGhlIENYWCBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKLStmdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQotIH0KLSAKLSAvLyBmY0V4ZSByZXR1cm5zIHRoZSBGQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUoY2ZnLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKLStmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCi0rfQotKwotK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKLSsKLStmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKLSsJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCi0rCWlmICFmaWx0ZXJGbGFncyB7Ci0rCQlyZXR1cm4gZmxhZ3MKLSsJfQotKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7Ci0rCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7Ci0rCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCi0rCQl9Ci0rCX0KLSsJcmV0dXJuIG5ld2ZsYWdzCi0gfQotIAotIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgotQEAgLTIyNjQsMTEgKzIyODEsMTYgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0gLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5Ci0gLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KLSAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KLS1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLStmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCi0gCWlmIGxlbihjb21waWxlcikgPT0gMCB7Ci0gCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KLSAJfQotKwotKwlpZiBmaWx0ZXJlZCB7Ci0rCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKLSsJfQotKwotIAlyZXR1cm4gY29tcGlsZXIKLSB9Ci0gCi1AQCAtMjQyOSw3ICsyNDUxLDcgQEAgZnVuYyBlbnZMaXN0KGtleSwgZGVmIHN0cmluZykgW11zdHJpbmcgewotIH0KLSAKLSAvLyBDRmxhZ3MgcmV0dXJucyB0aGUgZmxhZ3MgdG8gdXNlIHdoZW4gaW52b2tpbmcgdGhlIEMsIEMrKyBvciBGb3J0cmFuIGNvbXBpbGVycywgb3IgY2dvLgotLWZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLStmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlLCBmaWx0ZXJlZCBib29sKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0gCWRlZmF1bHRzIDo9ICItZyAtTzIiCi0gCi0gCWlmIGNwcGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJDUFBGTEFHUyIsICIiLCBwLkNnb0NQUEZMQUdTLCBjaGVja0NvbXBpbGVyRmxhZ3MpOyBlcnIgIT0gbmlsIHsKLUBAIC0yNDQ4LDYgKzI0NzAsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGwKLSAJCXJldHVybgotIAl9Ci0gCi0rCWlmIGZpbHRlcmVkIHsKLSsJCWNwcGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjcHBmbGFncykKLSsJCWNmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY2ZsYWdzKQotKwkJY3h4ZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGN4eGZsYWdzKQotKwkJZmZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhmZmxhZ3MpCi0rCQlsZGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhsZGZsYWdzKQotKwl9Ci0rCi0gCXJldHVybgotIH0KLSAKLUBAIC0yNDYyLDcgKzI0OTIsNyBAQCB2YXIgY2dvUmUgPSBsYXp5cmVnZXhwLk5ldyhgWy9cXDpdYCkKLSAKLSBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0gCXAgOj0gYS5QYWNrYWdlCi0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQotKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKLSAJfQotQEAgLTI4MjEsNyArMjg1MSw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7Ci0gCi0gLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KLSBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgewotLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuICIiLCAiIiwgZXJyCi0gCX0KLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFhMDExOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAyOGFkYTg4OTZiNzZkNjIwMjQwYmFmYzIyYWEzOTUwNzFkNjAxNDgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTU6MzcgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCAzLzldIGNtZC9nbzogQWxsb3cgR09UT09MRElSIHRvIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGVudmlyb25tZW50Ci0KLXRvIGFsbG93IGZvciBzcGxpdCBob3N0L3RhcmdldCBidWlsZCByb290cwotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyAgICAgICAgICB8IDQgKysrLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyB8IDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28gYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLWluZGV4IDllNTAzMTEuLjY4M2NhNmYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTI0NCw3ICsyNDQsOSBAQCBmdW5jIHhpbml0KCkgewotIAl3b3JrZGlyID0geHdvcmtkaXIoKQotIAl4YXRleGl0KHJtd29ya2RpcikKLSAKLS0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSsJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotKwl9Ci0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotaW5kZXggYTMyNzdhNi4uZGI5NjM1MCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1AQCAtNjAsNyArNjAsMTEgQEAgZnVuYyBkZWZhdWx0Q29udGV4dCgpIGJ1aWxkLkNvbnRleHQgewotIAkJLy8gdmFyaWFibGVzLiBUaGlzIG1hdGNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFRvb2xEaXIgaW4KLSAJCS8vIGdvL2J1aWxkLCBleGNlcHQgZm9yIHVzaW5nIGN0eHQuR09ST09UIHJhdGhlciB0aGFuCi0gCQkvLyBydW50aW1lLkdPUk9PVC4KLS0JCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKGN0eHQuR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQotKwkJaWYgcyA6PSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyBzICE9ICIiIHsKLSsJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguQ2xlYW4ocykKLSsJCX0gZWxzZSB7Ci0rCQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oY3R4dC5HT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQl9Ci0gCX0KLSAKLSAJY3R4dC5HT1BBVEggPSBlbnZPcigiR09QQVRIIiwgY3R4dC5HT1BBVEgpCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3NjNhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gYmY1Y2Y1MzAxYWU1OTE0NDk4NDU0Yzg3MjkzZDFkZjJlMWQ4NDg5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE2OjMyICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggNC85XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cwotCi1zbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZwotY2FuIGZpbmQgdGhlbS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotaW5kZXggM2ZhMjU4ZC4uZjk2ZmIwMiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLUBAIC0xMjE1LDYgKzEyMTUsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKLSAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcwotIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgotQEAgLTEyMjYsNiArMTIyNyw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQl9Ci0gCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSAJY2FzZSBCdWlsZE1vZGVQbHVnaW46Ci0gCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCi1AQCAtMTIzNCw2ICsxMjM2LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQkJfQotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSAJCX0KLSAJfQotIAotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMmE0NmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGYwNWVmM2RlZDUyYjk4NTM3YzEwZWZkMGIxNWNkOTYxMjQ3MTUyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxNzoxNiArMDQzMAotU3ViamVjdDogW1BBVENIIDUvOV0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kCi0gZ29fYm9vdHN0cmFwCi0KLWZvciBoYW5kbGluZyBPRSBjcm9zcy1jYW5hZGlhbiBidWlsZHMuCi0KLUFkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KLXRoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQotTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL21ha2UuYmFzaCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAotaW5kZXggOTJkMTQ4MS4uMGMyODIyZiAxMDA3NTUKLS0tLSBhL3NyYy9tYWtlLmJhc2gKLSsrKyBiL3NyYy9tYWtlLmJhc2gKLUBAIC0xNzcsNyArMTc3LDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KLSAJZXhpdCAxCi0gZmkKLSBybSAtZiBjbWQvZGlzdC9kaXN0Ci0tR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgR08xMTFNT0RVTEU9b2ZmICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAotK0NDPSIke0JVSUxEX0NDOi0ke0NDfX0iIEdPUk9PVD0iJEdPUk9PVF9CT09UU1RSQVAiIEdPT1M9IiIgR09BUkNIPSIiIEdPMTExTU9EVUxFPW9mZiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLSAKLSAjIC1lIGRvZXNuJ3QgcHJvcGFnYXRlIG91dCBvZiBldmFsLCBzbyBjaGVjayBzdWNjZXNzIGJ5IGhhbmQuCi0gZXZhbCAkKC4vY21kL2Rpc3QvZGlzdCBlbnYgLXAgfHwgZWNobyBGQUlMPXRydWUpCi1AQCAtMjA4LDcgKzIwOCw3IEBAIGZpCi0gIyBSdW4gZGlzdCBib290c3RyYXAgdG8gY29tcGxldGUgbWFrZS5iYXNoLgotICMgQm9vdHN0cmFwIGluc3RhbGxzIGEgcHJvcGVyIGNtZC9kaXN0LCBidWlsdCB3aXRoIHRoZSBuZXcgdG9vbGNoYWluLgotICMgVGhyb3cgb3VycywgYnVpbHQgd2l0aCBHbyAxLjQsIGF3YXkgYWZ0ZXIgYm9vdHN0cmFwLgotLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiAuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0gcm0gLWYgLi9jbWQvZGlzdC9kaXN0Ci0gCi0gIyBETyBOT1QgQUREIEFOWSBORVcgQ09ERSBIRVJFLgotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NGFhY2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotRnJvbSAxMDczNWJiODRkZjE3YmE2NTdmNzY4MzVmNDgzY2Q4NTQzYTg3OWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTg6MTIgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA2LzldIGNtZC9kaXN0OiBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLUNoYW5nZSB0aGUgZGlzdCB0b29sIHRvIGFsbG93IGZvciBPRS1zdHlsZSBjcm9zcy0KLWFuZCBjcm9zcy1jYW5hZGlhbiBidWlsZHM6Ci0KLSAtIGNvbW1hbmQgZmxhZ3MgLS1ob3N0LW9ubHkgYW5kIC0tdGFyZ2V0IG9ubHkgYXJlIGFkZGVkOwotICAgaWYgb25lIGlzIHByZXNlbnQsIHRoZSBvdGhlciBjaGFuZ2VzIG1lbnRpb25lZCBiZWxvdwotICAgdGFrZSBlZmZlY3QsIGFuZCBhcmd1bWVudHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkIG9uCi0gICB0aGUgY29tbWFuZCBsaW5lIHRvIGVudW1lcmF0ZSB0aGUgcGFja2FnZShzKSB0byBiZQotICAgYnVpbHQuCi0KLSAtIGZvciBPRSBjcm9zcyBidWlsZHMsIGdvX2Jvb3RzdHJhcCBpcyBhbHdheXMgYnVpbHQgZm9yCi0gICB0aGUgY3VycmVudCBidWlsZCBob3N0LCBhbmQgaXMgbW92ZWQsIGFsb25nIHdpdGggdGhlIHN1cHBvcnRpbmcKLSAgIHRvb2xjaGFpbiAoYXNtLCBjb21waWxlLCBldGMuKSB0byBhIHNlcGFyYXRlICduYXRpdmVfbmF0aXZlJwotICAgZGlyZWN0b3J5IHVuZGVyIEdPUk9PVC9wa2cvdG9vbC4KLQotIC0gZ29fYm9vdHN0cmFwIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYWZ0ZXIgdGhlIGJ1aWxkLAotICAgc28gaXQgY2FuIGJlIHJldXNlZCBsYXRlciAoZS5nLiwgYnVpbGRpbmcgYm90aCBzdGF0aWMgYW5kCi0gICBzaGFyZWQgcnVudGltZSkuCi0KLU5vdGUgdGhhdCBmb3IgLS1ob3N0LW9ubHkgYnVpbGRzLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNwZWNpZnkKLWp1c3QgdGhlICJjbWQiIHBhY2thZ2UgdG8gYnVpbGQgb25seSB0aGUgZ28gY29tbWFuZHMvdG9vbHMsCi10aGUgc3RhbGVuZXNzIGNoZWNrcyBpbiB0aGUgZGlzdCB0b29sIHdpbGwgZmFpbCBpZiB0aGUgInN0ZCIKLWxpYnJhcnkgaGFzIG5vdCBhbHNvIGJlZW4gYnVpbHQuICBTbyBob3N0LW9ubHkgYnVpbGRzIGhhdmUgdG8KLWJ1aWxkIGV2ZXJ5dGhpbmcgYW55d2F5LgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi1pbmRleCA2ODNjYTZmLi4wYWQwODJiIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi0rKysgYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLUBAIC00MSw2ICs0MSw3IEBAIHZhciAoCi0gCWdvbGRmbGFncyAgICAgICAgc3RyaW5nCi0gCXdvcmtkaXIgICAgICAgICAgc3RyaW5nCi0gCXRvb2xkaXIgICAgICAgICAgc3RyaW5nCi0rCWJ1aWxkX3Rvb2xkaXIgICAgc3RyaW5nCi0gCW9sZGdvb3MgICAgICAgICAgc3RyaW5nCi0gCW9sZGdvYXJjaCAgICAgICAgc3RyaW5nCi0gCWV4ZSAgICAgICAgICAgICAgc3RyaW5nCi1AQCAtNTMsNiArNTQsNyBAQCB2YXIgKAotIAotIAlyZWJ1aWxkYWxsICAgYm9vbAotIAlkZWZhdWx0Y2xhbmcgYm9vbAotKwljcm9zc0J1aWxkICAgYm9vbAotIAotIAl2ZmxhZyBpbnQgLy8gdmVyYm9zaXR5Ci0gKQotQEAgLTI0Nyw2ICsyNDksOCBAQCBmdW5jIHhpbml0KCkgewotIAlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7Ci0gCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSAJfQotKwotKwlidWlsZF90b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sL25hdGl2ZV9uYXRpdmUiLCBnb3Jvb3QpCi0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotQEAgLTQ3OCw4ICs0ODIsMTAgQEAgZnVuYyBzZXR1cCgpIHsKLSAJcCA6PSBwYXRoZigiJXMvcGtnLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSAJaWYgcmVidWlsZGFsbCB7Ci0gCQl4cmVtb3ZlYWxsKHApCi0rCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCi0gCX0KLSAJeG1rZGlyYWxsKHApCi0rCXhta2RpcmFsbChidWlsZF90b29sZGlyKQotIAotIAlpZiBnb29zICE9IGdvaG9zdG9zIHx8IGdvYXJjaCAhPSBnb2hvc3RhcmNoIHsKLSAJCXAgOj0gcGF0aGYoIiVzL3BrZy8lc18lcyIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKQotQEAgLTEyMDcsMTIgKzEyMTMsMjkgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCi0gCXZhciBub0Jhbm5lciBib29sCi0gCXZhciBkZWJ1ZyBib29sCi0rCXZhciBob3N0T25seSBib29sCi0rCXZhciB0YXJnZXRPbmx5IGJvb2wKLSsJdmFyIHRvQnVpbGQgPSBbXXN0cmluZ3sic3RkIiwgImNtZCJ9Ci0rCi0gCWZsYWcuQm9vbFZhcigmcmVidWlsZGFsbCwgImEiLCByZWJ1aWxkYWxsLCAicmVidWlsZCBhbGwiKQotIAlmbGFnLkJvb2xWYXIoJmRlYnVnLCAiZCIsIGRlYnVnLCAiZW5hYmxlIGRlYnVnZ2luZyBvZiBib290c3RyYXAgcHJvY2VzcyIpCi0gCWZsYWcuQm9vbFZhcigmbm9CYW5uZXIsICJuby1iYW5uZXIiLCBub0Jhbm5lciwgImRvIG5vdCBwcmludCBiYW5uZXIiKQotKwlmbGFnLkJvb2xWYXIoJmhvc3RPbmx5LCAiaG9zdC1vbmx5IiwgaG9zdE9ubHksICJidWlsZCBvbmx5IGhvc3QgYmluYXJpZXMsIG5vdCB0YXJnZXQiKQotKwlmbGFnLkJvb2xWYXIoJnRhcmdldE9ubHksICJ0YXJnZXQtb25seSIsIHRhcmdldE9ubHksICJidWlsZCBvbmx5IHRhcmdldCBiaW5hcmllcywgbm90IGhvc3QiKQotIAotLQl4ZmxhZ3BhcnNlKDApCi0rCXhmbGFncGFyc2UoLTEpCi0gCi0rCWlmIGhvc3RPbmx5ICYmIHRhcmdldE9ubHkgewotKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCX0KLSsJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKLSsJaWYgZmxhZy5OQXJnKCkgPiAwIHsKLSsJCWlmIGNyb3NzQnVpbGQgewotKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQotKwkJfSBlbHNlIHsKLSsJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCQl9Ci0rCX0KLSAJLy8gU2V0IEdPUEFUSCB0byBhbiBpbnRlcm5hbCBkaXJlY3RvcnkuIFdlIHNob3VsZG4ndCBhY3R1YWxseQotIAkvLyBuZWVkIHRvIHN0b3JlIGZpbGVzIGhlcmUsIHNpbmNlIHRoZSB0b29sY2hhaW4gd29uJ3QKLSAJLy8gZGVwZW5kIG9uIG1vZHVsZXMgb3V0c2lkZSBvZiB2ZW5kb3IgZGlyZWN0b3JpZXMsIGJ1dCBpZgotQEAgLTEyNjYsOCArMTI4OSwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCXhwcmludGYoIlxuIikKLSAJfQotIAotLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93Ci0tCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fTERGTEFHUyB1bnRpbCBub3cKLSsJLy8gRm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzL2Nyb3NzLWNhbmFkaWFuIGJ1aWxkcywgd2UgZG9uJ3QKLSsJLy8gd2FudCB0byBiZSBzZXR0aW5nIHRoZXNlIGZsYWdzIHVudGlsIGFmdGVyIHdlIGhhdmUgY29tcGlsZWQKLSsJLy8gdGhlIHRvb2xjaGFpbiB0aGF0IHJ1bnMgb24gdGhlIGJ1aWxkIGhvc3QuCi0rCWlmICFjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKLSsJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fTERGTEFHUyB1bnRpbCBub3cKLSsJfQotIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKLSAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCi0gCWlmIGRlYnVnIHsKLUBAIC0xMjk2LDcgKzEzMjQsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQotLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQotKwl9IGVsc2UgewotKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJfQotIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKLSAJaWYgZGVidWcgewotIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotQEAgLTEzMzMsNTAgKzEzNjUsODQgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0gCi0tCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKLS0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCi0rCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCi0rCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQotKwkJCXhyZW1vdmUoZikKLSsJCX0KLSsJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKLSsJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlpZiBob3N0T25seSB7Ci0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKLSsKLSsJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgewotKwkJCWdvb3MgPSBvbGRnb29zCi0rCQkJZ29hcmNoID0gb2xkZ29hcmNoCi0rCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLSsJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLSsJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKLSAJCX0KLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCX0gZWxzZSB7Ci0tCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0tCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0tCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwotKwkJaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggewotKwkJCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJfSBlbHNlIHsKLSsJCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotKwkJCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotKwkJCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0rCQkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotKwotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJZ29vcyA9IG9sZGdvb3MKLSsJCQlnb2FyY2ggPSBvbGRnb2FyY2gKLSsJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJfQotIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0gCi0tCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwkJaWYgZGVidWcgewotKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLSsJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0rCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKLSAJCX0KLS0JCWdvb3MgPSBvbGRnb29zCi0tCQlnb2FyY2ggPSBvbGRnb2FyY2gKLS0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0tCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLS0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0tCX0KLS0JdGFyZ2V0cyA6PSBbXXN0cmluZ3sic3RkIiwgImNtZCJ9Ci0tCWlmIGdvb3MgPT0gImpzIiAmJiBnb2FyY2ggPT0gIndhc20iIHsKLS0JCS8vIFNraXAgdGhlIGNtZCB0b29scyBmb3IganMvd2FzbS4gVGhleSdyZSBub3QgdXNhYmxlLgotLQkJdGFyZ2V0cyA9IHRhcmdldHNbOjFdCi0tCX0KLS0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGNtZEdvLCB0YXJnZXRzLi4uKQotLQlpZiBkZWJ1ZyB7Ci0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0tCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLS0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0gCX0KLSAKLSAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KLUBAIC0xMzkzLDggKzE0NTksMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl9Ci0gCX0KLSAKLS0JLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgotLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKLSsJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bwotKwkvLyBrZWVwIGl0LgotKwlpZiAhY3Jvc3NCdWlsZCB7Ci0rCQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKLSsJfQotIAotIAlpZiBnb29zID09ICJhbmRyb2lkIiB7Ci0gCQkvLyBNYWtlIHN1cmUgdGhlIGV4ZWMgd3JhcHBlciB3aWxsIHN5bmMgYSBmcmVzaCAkR09ST09UIHRvIHRoZSBkZXZpY2UuCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjMyYzc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIDliYTUwN2UwNzZjNzQ0ZjRkMzk0NDE4ZTRhODQ5ZTY4Y2Q0MjZhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODo1NiArMDQzMAotU3ViamVjdDogW1BBVENIIDcvOV0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVRoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKLXN0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCi1iZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCi1saWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKLXRoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKLXNldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgotCi1UaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQotaW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCi1lbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA2ICsrKysrKwotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotaW5kZXggMzNiNzgxOC4uNzYxN2I0YyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLUBAIC02NjIsNiArNjYyLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKGEsIGExICpBY3Rpb24sIHNobGliIHN0cmluZykgewotIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKLSAJCQkJY29udGludWUKLSAJCQl9Ci0rCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgewotKwkJCQljb250aW51ZQotKwkJCX0KLSAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQotIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKLSAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLWluZGV4IDkzMDViMmQuLjY1NjAzMTcgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotQEAgLTE1NSw2ICsxNTUsOCBAQCBTZWUgYWxzbzogZ28gaW5zdGFsbCwgZ28gZ2V0LCBnbyBjbGVhbi4KLSAKLSBjb25zdCBjb25jdXJyZW50R0NCYWNrZW5kQ29tcGlsYXRpb25FbmFibGVkQnlEZWZhdWx0ID0gdHJ1ZQotIAotK3ZhciBnb1Jvb3RQcmVjaW91cyBib29sID0gdHJ1ZQotKwotIGZ1bmMgaW5pdCgpIHsKLSAJLy8gYnJlYWsgaW5pdCBjeWNsZQotIAlDbWRCdWlsZC5SdW4gPSBydW5CdWlsZAotQEAgLTE2Nyw2ICsxNjksMTAgQEAgZnVuYyBpbml0KCkgewotIAotIAlBZGRCdWlsZEZsYWdzKENtZEJ1aWxkKQotIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwpCi0rCi0rCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7Ci0rCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCi0rCX0KLSB9Ci0gCi0gLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLWluZGV4IGNjZWJhZjguLjU5NDUwZDcgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLUBAIC00NTUsNiArNDU1LDIzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkKGEgKkFjdGlvbikgKGVyciBlcnJvcikgewotIAkJcmV0dXJuIGVycm9ycy5OZXcoImJpbmFyeS1vbmx5IHBhY2thZ2VzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIikKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiAoYS5QYWNrYWdlLlN0YW5kYXJkIHx8IGEuUGFja2FnZS5Hb3Jvb3QpIHsKLSsJCV8sIGVyciA6PSBvcy5TdGF0KGEuUGFja2FnZS5UYXJnZXQpCi0rCQlpZiBlcnIgPT0gbmlsIHsKLSsJCQlhLmJ1aWx0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuVGFyZ2V0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuYnVpbGRJRCA9IGIuZmlsZUhhc2goYS5QYWNrYWdlLlRhcmdldCkKLSsJCQlhLlBhY2thZ2UuU3RhbGUgPSBmYWxzZQotKwkJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKLSsJCQlyZXR1cm4gbmlsCi0rCQl9Ci0rCQlhLlBhY2thZ2UuU3RhbGUgPSB0cnVlCi0rCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAibWlzc2luZyBvciBpbnZhbGlkIEdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJaWYgYi5Jc0NtZExpc3QgewotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci1AQCAtMTQ5OSw2ICsxNTE2LDE0IEBAIGZ1bmMgQnVpbGRJbnN0YWxsRnVuYyhiICpCdWlsZGVyLCBhICpBY3Rpb24pIChlcnIgZXJyb3IpIHsKLSAJCXJldHVybiBuaWwKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiBhLlBhY2thZ2UgIT0gbmlsIHsKLSsJCXAgOj0gYS5QYWNrYWdlCi0rCQlpZiBwLlN0YW5kYXJkIHx8IHAuR29yb290IHsKLSsJCQllcnIgOj0gZm10LkVycm9yZigiYXR0ZW1wdGluZyB0byBpbnN0YWxsIHBhY2thZ2UgJXMgaW50byByZWFkLW9ubHkgR09ST09UIiwgcC5JbXBvcnRQYXRoKQotKwkJCXJldHVybiBlcnIKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGUxMzJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gOTcxYjU2MjYzMzljZTBjNGQ1N2Y5NzIxYzlhODFhZjU2NmM1YTA0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE5OjI2ICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvZ286IFVzZSBHT0JVSUxETU9ERSB0byBzZXQgYnVpbGRtb2RlCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKLWNtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KLQotV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKLXRvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCi0KLUFkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0Ci1idWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCi0KLVJlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1Ib25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgOCArKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotaW5kZXggNjU2MDMxNy4uNWYzYTk4OCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMjMxLDcgKzIzMSwxMyBAQCBmdW5jIEFkZEJ1aWxkRmxhZ3MoY21kICpiYXNlLkNvbW1hbmQpIHsKLSAKLSAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQotIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKLS0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwotKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKLSsJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQotKwl9IGVsc2UgewotKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwl9Ci0rCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkTW9kLCAibW9kIiwgIiIsICIiKQotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJiMTEwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotRnJvbSA5NzMyNTFhZTBjNjlhMzU3MjFmNjExNTM0NWQzZjU3YjI4NDc5NzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MjA6MTMgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA5LzldIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAotCi1SZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLWZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgotbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLWluZGV4IDIzNzQxZWIuLjhlNzQ1NzYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi1AQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotaW5kZXggNDVhNDA2ZS4uNzI0ZDNlMyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQotKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KLWluZGV4IDdjNjY2MjMuLmQ4YjFkYjEgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotaW5kZXggMjMxZTFmZi4uNjMxZGQ3YSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi1AQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLWluZGV4IDk2MDQyMDguLjVlZjNmZmMgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCi1pbmRleCA1MWQxNzkxLi5iMTVkYTg1IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotQEAgLTYzLDcgKzYzLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJWGNvZmZyZWxvYzE6ICAgICAgeGNvZmZyZWxvYzEsCi0gCi0gCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KLWluZGV4IDM0NTQ0NzYuLjQyY2MzNDYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCi0gCi0gCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4Ci0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotaW5kZXggZjFmYWQyMC4uZDJjYTEwYyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbGludXguc28uMiIsCi0rCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIsCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI1OTNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC5pbmMKQEAgLTAsMCArMSwyMiBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuMTQiCitHT19NSU5PUiA9ICIuMSIKK1BWIC49ICIke0dPX01JTk9SfSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCIKKworU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiMmFkMjU3MjExNWIwZDFiNGNiNGMxMzhlNmIzYTMxY2VlNjI5NGNiNDhhZjc1ZWU4NmJlYzNkY2EwNDUwNzY3NiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NzY2NGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gOWUzZGM0NGNkZmE1OGQ5NjUwNGQwYTc4OWRjODI2MTdkZDViZWY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjAxOjEzICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMS85XSBjbWQvZ286IEFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKworLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC0xMDIsMTEgKzEwMiwxMSBAQCBmdW5jIE1rRW52KCkgW11jZmcuRW52VmFyIHsKKyAKKyAJY2MgOj0gY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKGNmZy5HZXRlbnYoIkNDIikpOyBsZW4oZW52KSA+IDAgeworLQkJY2MgPSBlbnZbMF0KKysJCWNjID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWN4eCA6PSBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKGNmZy5HZXRlbnYoIkNYWCIpKTsgbGVuKGVudikgPiAwIHsKKy0JCWN4eCA9IGVudlswXQorKwkJY3h4ID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkFSIiwgVmFsdWU6IGVudk9yKCJBUiIsICJhciIpfSkKKyAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ0MiLCBWYWx1ZTogY2N9KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTg4NTY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKQEAgLTAsMCArMSwyMTkgQEAKK0Zyb20gYTEzYWU0ODRlNDExMzkwOTQ1MDVkMjgzNDQzN2U5MjYyYTUzMTVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE0OjIyICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitHbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bworZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KK1RoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0CitjYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgorCitIb3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKK2RvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKK2xpYnJhcnkuCisKK0ZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcworYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCitvZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgorCitUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitHT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQorZW1iZWRkaW5nIGlzIGRpc2FibGVkLgorCitTZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCitwYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAorYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKK2R1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAordGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCitjZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCitkZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgorCitUaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKK3NpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAorYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCitydW50aW1lL2NnbykuCisKK1RoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQorYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAorYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitAQCAtMTU2LDcgKzE1Niw3IEBAIGZ1bmMgRXh0cmFFbnZWYXJzKCkgW11jZmcuRW52VmFyIHsKKyBmdW5jIEV4dHJhRW52VmFyc0Nvc3RseSgpIFtdY2ZnLkVudlZhciB7CisgCXZhciBiIHdvcmsuQnVpbGRlcgorIAliLkluaXQoKQorLQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBlcnIgOj0gYi5DRmxhZ3MoJmxvYWQuUGFja2FnZXt9KQorKwljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBlcnIgOj0gYi5DRmxhZ3MoJmxvYWQuUGFja2FnZXt9LCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQkvLyBTaG91bGQgbm90IGhhcHBlbiAtIGIuQ0ZsYWdzIHdhcyBnaXZlbiBhbiBlbXB0eSBwYWNrYWdlLgorIAkJZm10LkZwcmludGYob3MuU3RkZXJyLCAiZ286IGludmFsaWQgY2ZsYWdzOiAldlxuIiwgZXJyKQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtMzIsNiArMzIsOCBAQCBpbXBvcnQgKAorIAkidGltZSIKKyApCisgCisrdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKKysKKyAvLyBhY3Rpb25MaXN0IHJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aW9ucyBpbiB0aGUgZGFnIHJvb3RlZCBhdCByb290CisgLy8gYXMgdmlzaXRlZCBpbiBhIGRlcHRoLWZpcnN0IHBvc3Qtb3JkZXIgdHJhdmVyc2FsLgorIGZ1bmMgYWN0aW9uTGlzdChyb290ICpBY3Rpb24pIFtdKkFjdGlvbiB7CitAQCAtMjA4LDcgKzIxMCw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW8KKyAJLy8gQXNzdW1lIGIuV29ya0RpciBpcyBiZWluZyB0cmltbWVkIHByb3Blcmx5LgorIAkvLyBXaGVuIC10cmltcGF0aCBpcyB1c2VkIHdpdGggYSBwYWNrYWdlIGJ1aWx0IGZyb20gdGhlIG1vZHVsZSBjYWNoZSwKKyAJLy8gdXNlIHRoZSBtb2R1bGUgcGF0aCBhbmQgdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkuCistCWlmICFwLkdvcm9vdCAmJiAhY2ZnLkJ1aWxkVHJpbXBhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKKysJaWYgIXAuR29yb290ICYmICFvbWl0R29wYXRoICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCisgCX0gZWxzZSBpZiBjZmcuQnVpbGRUcmltcGF0aCAmJiBwLk1vZHVsZSAhPSBuaWwgeworIAkJZm10LkZwcmludGYoaCwgIm1vZHVsZSAlc0Alc1xuIiwgcC5Nb2R1bGUuUGF0aCwgcC5Nb2R1bGUuVmVyc2lvbikKK0BAIC0yMjQsMTMgKzIyNiwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvCisgCX0KKyAJaWYgbGVuKHAuQ2dvRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKKyAJCWZtdC5GcHJpbnRmKGgsICJjZ28gJXFcbiIsIGIudG9vbElEKCJjZ28iKSkKKy0JCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCkKKy0JCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSgpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQorKwkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwLCB0cnVlKQorKwkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKHRydWUpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQorIAkJaWYgbGVuKHAuQ1hYRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKKy0JCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSgpLCBjeHhmbGFncykKKysJCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSh0cnVlKSwgY3h4ZmxhZ3MpCisgCQl9CisgCQlpZiBsZW4ocC5GRmlsZXMpID4gMCB7CistCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKCksIGZmbGFncykKKysJCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUodHJ1ZSksIGZmbGFncykKKyAJCX0KKyAJCS8vIFRPRE8ocnNjKTogU2hvdWxkIHdlIGluY2x1ZGUgdGhlIFNXSUcgdmVyc2lvbiBvciBGb3J0cmFuL0dDQy9HKysvT2JqZWN0aXZlLUMgY29tcGlsZXIgdmVyc2lvbnM/CisgCX0KK0BAIC0yMjI4LDMzICsyMjMwLDQ4IEBAIHZhciAoCisgLy8gZ2NjQ21kIHJldHVybnMgYSBnY2MgY29tbWFuZCBsaW5lIHByZWZpeAorIC8vIGRlZmF1bHRDQyBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCisgZnVuYyAoYiAqQnVpbGRlcikgR2NjQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKKyAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHeHhDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KKyBmdW5jIChiICpCdWlsZGVyKSBnZm9ydHJhbkNtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQorKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBjY0V4ZSByZXR1cm5zIHRoZSBDQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KKy1mdW5jIChiICpCdWlsZGVyKSBjY0V4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKKytmdW5jIChiICpCdWlsZGVyKSBjY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQorIH0KKyAKKyAvLyBjeHhFeGUgcmV0dXJucyB0aGUgQ1hYIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCisgfQorIAorIC8vIGZjRXhlIHJldHVybnMgdGhlIEZDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShjZmcuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKKyt9CisrCisrdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgorKworK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgeworKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKKysJaWYgIWZpbHRlckZsYWdzIHsKKysJCXJldHVybiBmbGFncworKwl9CisrCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKKysJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKKysJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKKysJCX0KKysJfQorKwlyZXR1cm4gbmV3ZmxhZ3MKKyB9CisgCisgLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCitAQCAtMjI2MywxMSArMjI4MCwxNiBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKKyAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKKyAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgorIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKKyAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKKyAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQorIAl9CisrCisrCWlmIGZpbHRlcmVkIHsKKysJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQorKwl9CisrCisgCXJldHVybiBjb21waWxlcgorIH0KKyAKK0BAIC0yNDI4LDcgKzI0NTAsNyBAQCBmdW5jIGVudkxpc3Qoa2V5LCBkZWYgc3RyaW5nKSBbXXN0cmluZyB7CisgfQorIAorIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCistZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKKyAKKyAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgeworQEAgLTI0NDcsNiArMjQ2OSwxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlCisgCQlyZXR1cm4KKyAJfQorIAorKwlpZiBmaWx0ZXJlZCB7CisrCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCisrCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKKysJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKKysJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQorKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKKysJfQorKworIAlyZXR1cm4KKyB9CisgCitAQCAtMjQ2MSw3ICsyNDkxLDcgQEAgdmFyIGNnb1JlID0gbGF6eXJlZ2V4cC5OZXcoYFsvXFw6XWApCisgCisgZnVuYyAoYiAqQnVpbGRlcikgY2dvKGEgKkFjdGlvbiwgY2dvRXhlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUywgcGNMREZMQUdTLCBjZ29maWxlcywgZ2NjZmlsZXMsIGd4eGZpbGVzLCBtZmlsZXMsIGZmaWxlcyBbXXN0cmluZykgKG91dEdvLCBvdXRPYmogW11zdHJpbmcsIGVyciBlcnJvcikgeworIAlwIDo9IGEuUGFja2FnZQorLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCkKKysJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHAsIGZhbHNlKQorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBuaWwsIG5pbCwgZXJyCisgCX0KK0BAIC0yODIwLDcgKzI4NTAsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBzd2lnSW50U2l6ZShvYmpkaXIgc3RyCisgCisgLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KKyBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgeworLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuICIiLCAiIiwgZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MmM3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gMjhhZGE4ODk2Yjc2ZDYyMDI0MGJhZmMyMmFhMzk1MDcxZDYwMTQ4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE1OjM3ICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMy85XSBjbWQvZ286IEFsbG93IEdPVE9PTERJUiB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBlbnZpcm9ubWVudAorCit0byBhbGxvdyBmb3Igc3BsaXQgaG9zdC90YXJnZXQgYnVpbGQgcm9vdHMKKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gICAgICAgICAgfCA0ICsrKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gfCA2ICsrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTI0Niw3ICsyNDYsOSBAQCBmdW5jIHhpbml0KCkgeworIAl3b3JrZGlyID0geHdvcmtkaXIoKQorIAl4YXRleGl0KHJtd29ya2RpcikKKyAKKy0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKysJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorKwl9CisgfQorIAorIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK0BAIC02NCw3ICs2NCwxMSBAQCBmdW5jIGRlZmF1bHRDb250ZXh0KCkgYnVpbGQuQ29udGV4dCB7CisgCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgorIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgY3R4dC5HT1JPT1QgcmF0aGVyIHRoYW4KKyAJCS8vIHJ1bnRpbWUuR09ST09ULgorLQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oY3R4dC5HT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCisrCQlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgeworKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQorKwkJfSBlbHNlIHsKKysJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihjdHh0LkdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJCX0KKyAJfQorIAorIAljdHh0LkdPUEFUSCA9IGVudk9yKCJHT1BBVEgiLCBjdHh0LkdPUEFUSCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjOWM3NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYmY1Y2Y1MzAxYWU1OTE0NDk4NDU0Yzg3MjkzZDFkZjJlMWQ4NDg5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE2OjMyICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggNC85XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cworCitzbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZworY2FuIGZpbmQgdGhlbS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMjgwLDYgKzEyODAsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKKyAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcworIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorQEAgLTEyOTEsNiArMTI5Miw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQl9CisgCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJY2FzZSBCdWlsZE1vZGVQbHVnaW46CisgCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTI5OSw2ICsxMzAxLDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWMxMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBmMDVlZjNkZWQ1MmI5ODUzN2MxMGVmZDBiMTVjZDk2MTI0NzE1MjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTc6MTYgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA1LzldIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAorIGdvX2Jvb3RzdHJhcAorCitmb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTc4LDcgKzE3OCw3IEBAIGlmIFsgIiRHT1JPT1RfQk9PVFNUUkFQIiA9ICIkR09ST09UIiBdOworIAlleGl0IDEKKyBmaQorIHJtIC1mIGNtZC9kaXN0L2Rpc3QKKy1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiBHTzExMU1PRFVMRT1vZmYgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgR08xMTFNT0RVTEU9b2ZmICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAorIAorICMgLWUgZG9lc24ndCBwcm9wYWdhdGUgb3V0IG9mIGV2YWwsIHNvIGNoZWNrIHN1Y2Nlc3MgYnkgaGFuZC4KKyBldmFsICQoLi9jbWQvZGlzdC9kaXN0IGVudiAtcCB8fCBlY2hvIEZBSUw9dHJ1ZSkKK0BAIC0yMDksNyArMjA5LDcgQEAgZmkKKyAjIFJ1biBkaXN0IGJvb3RzdHJhcCB0byBjb21wbGV0ZSBtYWtlLmJhc2guCisgIyBCb290c3RyYXAgaW5zdGFsbHMgYSBwcm9wZXIgY21kL2Rpc3QsIGJ1aWx0IHdpdGggdGhlIG5ldyB0b29sY2hhaW4uCisgIyBUaHJvdyBvdXJzLCBidWlsdCB3aXRoIEdvIDEuNCwgYXdheSBhZnRlciBib290c3RyYXAuCistLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgorK0NDPSIke0JVSUxEX0NDOi0ke0NDfX0iIC4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKKyBybSAtZiAuL2NtZC9kaXN0L2Rpc3QKKyAKKyAjIERPIE5PVCBBREQgQU5ZIE5FVyBDT0RFIEhFUkUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZWUwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDI3NCBAQAorRnJvbSAxMDczNWJiODRkZjE3YmE2NTdmNzY4MzVmNDgzY2Q4NTQzYTg3OWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTg6MTIgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA2LzldIGNtZC9kaXN0OiBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK0NoYW5nZSB0aGUgZGlzdCB0b29sIHRvIGFsbG93IGZvciBPRS1zdHlsZSBjcm9zcy0KK2FuZCBjcm9zcy1jYW5hZGlhbiBidWlsZHM6CisKKyAtIGNvbW1hbmQgZmxhZ3MgLS1ob3N0LW9ubHkgYW5kIC0tdGFyZ2V0IG9ubHkgYXJlIGFkZGVkOworICAgaWYgb25lIGlzIHByZXNlbnQsIHRoZSBvdGhlciBjaGFuZ2VzIG1lbnRpb25lZCBiZWxvdworICAgdGFrZSBlZmZlY3QsIGFuZCBhcmd1bWVudHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkIG9uCisgICB0aGUgY29tbWFuZCBsaW5lIHRvIGVudW1lcmF0ZSB0aGUgcGFja2FnZShzKSB0byBiZQorICAgYnVpbHQuCisKKyAtIGZvciBPRSBjcm9zcyBidWlsZHMsIGdvX2Jvb3RzdHJhcCBpcyBhbHdheXMgYnVpbHQgZm9yCisgICB0aGUgY3VycmVudCBidWlsZCBob3N0LCBhbmQgaXMgbW92ZWQsIGFsb25nIHdpdGggdGhlIHN1cHBvcnRpbmcKKyAgIHRvb2xjaGFpbiAoYXNtLCBjb21waWxlLCBldGMuKSB0byBhIHNlcGFyYXRlICduYXRpdmVfbmF0aXZlJworICAgZGlyZWN0b3J5IHVuZGVyIEdPUk9PVC9wa2cvdG9vbC4KKworIC0gZ29fYm9vdHN0cmFwIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYWZ0ZXIgdGhlIGJ1aWxkLAorICAgc28gaXQgY2FuIGJlIHJldXNlZCBsYXRlciAoZS5nLiwgYnVpbGRpbmcgYm90aCBzdGF0aWMgYW5kCisgICBzaGFyZWQgcnVudGltZSkuCisKK05vdGUgdGhhdCBmb3IgLS1ob3N0LW9ubHkgYnVpbGRzLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNwZWNpZnkKK2p1c3QgdGhlICJjbWQiIHBhY2thZ2UgdG8gYnVpbGQgb25seSB0aGUgZ28gY29tbWFuZHMvdG9vbHMsCit0aGUgc3RhbGVuZXNzIGNoZWNrcyBpbiB0aGUgZGlzdCB0b29sIHdpbGwgZmFpbCBpZiB0aGUgInN0ZCIKK2xpYnJhcnkgaGFzIG5vdCBhbHNvIGJlZW4gYnVpbHQuICBTbyBob3N0LW9ubHkgYnVpbGRzIGhhdmUgdG8KK2J1aWxkIGV2ZXJ5dGhpbmcgYW55d2F5LgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTQxLDYgKzQxLDcgQEAgdmFyICgKKyAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKKyAJd29ya2RpciAgICAgICAgICBzdHJpbmcKKyAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKKysJYnVpbGRfdG9vbGRpciAgICBzdHJpbmcKKyAJb2xkZ29vcyAgICAgICAgICBzdHJpbmcKKyAJb2xkZ29hcmNoICAgICAgICBzdHJpbmcKKyAJZXhlICAgICAgICAgICAgICBzdHJpbmcKK0BAIC01Myw2ICs1NCw3IEBAIHZhciAoCisgCisgCXJlYnVpbGRhbGwgICBib29sCisgCWRlZmF1bHRjbGFuZyBib29sCisrCWNyb3NzQnVpbGQgICBib29sCisgCisgCXZmbGFnIGludCAvLyB2ZXJib3NpdHkKKyApCitAQCAtMjQ5LDYgKzI1MSw4IEBAIGZ1bmMgeGluaXQoKSB7CisgCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKyAJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorIAl9CisrCisrCWJ1aWxkX3Rvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIsIGdvcm9vdCkKKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCitAQCAtNDgwLDggKzQ4NCwxMCBAQCBmdW5jIHNldHVwKCkgeworIAlwIDo9IHBhdGhmKCIlcy9wa2cvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorIAlpZiByZWJ1aWxkYWxsIHsKKyAJCXhyZW1vdmVhbGwocCkKKysJCXhyZW1vdmVhbGwoYnVpbGRfdG9vbGRpcikKKyAJfQorIAl4bWtkaXJhbGwocCkKKysJeG1rZGlyYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCisgCWlmIGdvb3MgIT0gZ29ob3N0b3MgfHwgZ29hcmNoICE9IGdvaG9zdGFyY2ggeworIAkJcCA6PSBwYXRoZigiJXMvcGtnLyVzXyVzIiwgZ29yb290LCBnb29zLCBnb2FyY2gpCitAQCAtMTI0NCwxMiArMTI1MCwyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAKKyAJdmFyIG5vQmFubmVyIGJvb2wKKyAJdmFyIGRlYnVnIGJvb2wKKysJdmFyIGhvc3RPbmx5IGJvb2wKKysJdmFyIHRhcmdldE9ubHkgYm9vbAorKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KKysKKyAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCisgCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKKyAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCisrCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCisrCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCisgCistCXhmbGFncGFyc2UoMCkKKysJeGZsYWdwYXJzZSgtMSkKKyAKKysJaWYgaG9zdE9ubHkgJiYgdGFyZ2V0T25seSB7CisrCQlmYXRhbGYoInNwZWNpZnkgb25seSBvbmUgb2YgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJfQorKwljcm9zc0J1aWxkID0gaG9zdE9ubHkgfHwgdGFyZ2V0T25seQorKwlpZiBmbGFnLk5BcmcoKSA+IDAgeworKwkJaWYgY3Jvc3NCdWlsZCB7CisrCQkJdG9CdWlsZCA9IGZsYWcuQXJncygpCisrCQl9IGVsc2UgeworKwkJCWZhdGFsZigicGFja2FnZSBuYW1lcyBub3QgcGVybWl0dGVkIHdpdGhvdXQgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJCX0KKysJfQorIAkvLyBTZXQgR09QQVRIIHRvIGFuIGludGVybmFsIGRpcmVjdG9yeS4gV2Ugc2hvdWxkbid0IGFjdHVhbGx5CisgCS8vIG5lZWQgdG8gc3RvcmUgZmlsZXMgaGVyZSwgc2luY2UgdGhlIHRvb2xjaGFpbiB3b24ndAorIAkvLyBkZXBlbmQgb24gbW9kdWxlcyBvdXRzaWRlIG9mIHZlbmRvciBkaXJlY3RvcmllcywgYnV0IGlmCitAQCAtMTMwMyw4ICsxMzI2LDEzIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAkJeHByaW50ZigiXG4iKQorIAl9CisgCistCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKKy0JZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdworKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAorKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAorKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KKysJaWYgIWNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdworKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdworKwl9CisgCWdvQm9vdHN0cmFwIDo9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKQorIAljbWRHbyA6PSBwYXRoZigiJXMvZ28iLCBnb2JpbikKKyAJaWYgZGVidWcgeworQEAgLTEzMzMsNyArMTM2MSwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAl4cHJpbnRmKCJCdWlsZGluZyBHbyB0b29sY2hhaW4yIHVzaW5nIGdvX2Jvb3RzdHJhcCBhbmQgR28gdG9vbGNoYWluMS5cbiIpCistCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJb3MuU2V0ZW52KCJDQyIsIGRlZmF1bHRjY1siIl0pCisrCX0gZWxzZSB7CisrCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwl9CisgCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgYXBwZW5kKFtdc3RyaW5neyItaSJ9LCB0b29sY2hhaW4uLi4pLi4uKQorIAlpZiBkZWJ1ZyB7CisgCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCitAQCAtMTM3MCw1MCArMTQwMiw4NCBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJfQorIAljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKyAKKy0JaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggeworLQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikKKysJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCQl0b29sX2ZpbGVzLCBfIDo9IGZpbGVwYXRoLkdsb2IocGF0aGYoIiVzLyoiLCB0b29sZGlyKSkKKysJCWZvciBfLCBmIDo9IHJhbmdlIHRvb2xfZmlsZXMgeworKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy8lcyIsIGJ1aWxkX3Rvb2xkaXIsIGZpbGVwYXRoLkJhc2UoZikpLCBmLCB3cml0ZUV4ZWMpCisrCQkJeHJlbW92ZShmKQorKwkJfQorKwkJb3MuU2V0ZW52KCJHT1RPT0xESVIiLCBidWlsZF90b29sZGlyKQorKwkJZ29Cb290c3RyYXAgPSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgYnVpbGRfdG9vbGRpcikKKysJCWlmIGhvc3RPbmx5IHsKKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBuZWNlc3NhcmlseSBydW4gdGhlIGNtZEdvIGJpbmFyeQorKworKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQl9IGVsc2UgaWYgdGFyZ2V0T25seSB7CisrCQkJZ29vcyA9IG9sZGdvb3MKKysJCQlnb2FyY2ggPSBvbGRnb2FyY2gKKysJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBydW4gdGhlIHRhcmdldCdzIGNtZEdvIGJpbmFyeQorIAkJfQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJfSBlbHNlIHsKKy0JCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCistCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKy0JCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCistCQlpZiB2ZmxhZyA+IDAgeworLQkJCXhwcmludGYoIlxuIikKKysKKysJCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKysJCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKysJCX0gZWxzZSB7CisrCQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KKysJCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKysJCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKyAKKy0JCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCistCQl9CistCQlnb29zID0gb2xkZ29vcworLQkJZ29hcmNoID0gb2xkZ29hcmNoCistCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorLQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCistCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorLQl9CistCXRhcmdldHMgOj0gW11zdHJpbmd7InN0ZCIsICJjbWQifQorLQlpZiBnb29zID09ICJqcyIgJiYgZ29hcmNoID09ICJ3YXNtIiB7CistCQkvLyBTa2lwIHRoZSBjbWQgdG9vbHMgZm9yIGpzL3dhc20uIFRoZXkncmUgbm90IHVzYWJsZS4KKy0JCXRhcmdldHMgPSB0YXJnZXRzWzoxXQorLQl9CistCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShjbWRHbywgdGFyZ2V0cy4uLikKKy0JaWYgZGVidWcgeworLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQorLQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCistCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQorKwkJaWYgZGVidWcgeworKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKysJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisrCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKysJCX0KKyAJfQorIAorIAkvLyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbgorQEAgLTE0MzAsOCArMTQ5NiwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCX0KKyAJfQorIAorLQkvLyBSZW1vdmUgZ29fYm9vdHN0cmFwIG5vdyB0aGF0IHdlJ3JlIGRvbmUuCistCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwkvLyBFeGNlcHQgdGhhdCBmb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MtYnVpbGRzLCB3ZSBuZWVkIHRvCisrCS8vIGtlZXAgaXQuCisrCWlmICFjcm9zc0J1aWxkIHsKKysJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwl9CisgCisgCWlmIGdvb3MgPT0gImFuZHJvaWQiIHsKKyAJCS8vIE1ha2Ugc3VyZSB0aGUgZXhlYyB3cmFwcGVyIHdpbGwgc3luYyBhIGZyZXNoICRHT1JPT1QgdG8gdGhlIGRldmljZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTNmODNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCkBAIC0wLDAgKzEsMTA0IEBACitGcm9tIDliYTUwN2UwNzZjNzQ0ZjRkMzk0NDE4ZTRhODQ5ZTY4Y2Q0MjZhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODo1NiArMDQzMAorU3ViamVjdDogW1BBVENIIDcvOV0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1RoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKK3N0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCitiZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCitsaWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKK3RoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKK3NldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgorCitUaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQoraW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCitlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA2ICsrKysrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KK0BAIC02NzAsNiArNjcwLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKAorIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKKyAJCQkJY29udGludWUKKyAJCQl9CisrCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgeworKwkJCQljb250aW51ZQorKwkJCX0KKyAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQorIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKKyAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMTY3LDYgKzE2Nyw4IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgorIAorIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCisgCisrdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCisrCisgZnVuYyBpbml0KCkgeworIAkvLyBicmVhayBpbml0IGN5Y2xlCisgCUNtZEJ1aWxkLlJ1biA9IHJ1bkJ1aWxkCitAQCAtMTc5LDYgKzE4MSwxMCBAQCBmdW5jIGluaXQoKSB7CisgCisgCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQsIERlZmF1bHRCdWlsZEZsYWdzKQorIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwsIERlZmF1bHRCdWlsZEZsYWdzKQorKworKwlpZiB4IDo9IG9zLkdldGVudigiR09ST09UX09WRVJSSURFIik7IHggIT0gIiIgeworKwkJZ29Sb290UHJlY2lvdXMgPSBmYWxzZQorKwl9CisgfQorIAorIC8vIE5vdGUgdGhhdCBmbGFncyBjb25zdWx0ZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworQEAgLTQ2NCw2ICs0NjQsMjMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyCisgCQlyZXR1cm4gZXJyb3JzLk5ldygiYmluYXJ5LW9ubHkgcGFja2FnZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQiKQorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIChhLlBhY2thZ2UuU3RhbmRhcmQgfHwgYS5QYWNrYWdlLkdvcm9vdCkgeworKwkJXywgZXJyIDo9IG9zLlN0YXQoYS5QYWNrYWdlLlRhcmdldCkKKysJCWlmIGVyciA9PSBuaWwgeworKwkJCWEuYnVpbHQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5UYXJnZXQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5idWlsZElEID0gYi5maWxlSGFzaChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJCWEuUGFja2FnZS5TdGFsZSA9IGZhbHNlCisrCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgorKwkJCXJldHVybiBuaWwKKysJCX0KKysJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKKysJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJtaXNzaW5nIG9yIGludmFsaWQgR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQlpZiBiLklzQ21kTGlzdCB7CisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KK0BAIC0xNDkzLDYgKzE1MTAsMTQgQEAgZnVuYyBCdWlsZEluc3RhbGxGdW5jKGIgKkJ1aWxkZXIsIGEgKkFjdAorIAkJcmV0dXJuIG5pbAorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIGEuUGFja2FnZSAhPSBuaWwgeworKwkJcCA6PSBhLlBhY2thZ2UKKysJCWlmIHAuU3RhbmRhcmQgfHwgcC5Hb3Jvb3QgeworKwkJCWVyciA6PSBmbXQuRXJyb3JmKCJhdHRlbXB0aW5nIHRvIGluc3RhbGwgcGFja2FnZSAlcyBpbnRvIHJlYWQtb25seSBHT1JPT1QiLCBwLkltcG9ydFBhdGgpCisrCQkJcmV0dXJuIGVycgorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTVkOTgxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gOTcxYjU2MjYzMzljZTBjNGQ1N2Y5NzIxYzlhODFhZjU2NmM1YTA0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE5OjI2ICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvZ286IFVzZSBHT0JVSUxETU9ERSB0byBzZXQgYnVpbGRtb2RlCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKK2NtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KKworV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKK3RvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCisKK0FkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0CitidWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCisKK1JlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgOCArKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK0BAIC0yNTEsNyArMjUxLDEzIEBAIGZ1bmMgQWRkQnVpbGRGbGFncyhjbWQgKmJhc2UuQ29tbWFuZCwgbWEKKyAKKyAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQorIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKKy0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQorKworKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKKysJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQorKwl9IGVsc2UgeworKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQorKwl9CisrCisgCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCisgCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCisgCWlmIG1hc2smT21pdE1vZEZsYWcgPT0gMCB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3Y2ZiMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDExNSBAQAorRnJvbSA5NzMyNTFhZTBjNjlhMzU3MjFmNjExNTM0NWQzZjU3YjI4NDc5NzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MjA6MTMgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA5LzldIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAorCitSZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK2ZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgorbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQorIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCitAQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbGludXguc28uMyIsIC8vIDIgZm9yIE9BQkksIDMgZm9yIEVBQkkKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIiwKKyAKKyAJCUZyZWVic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCitAQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCitAQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKKyAJCU5ldGJzZGR5bmxkOiAgICAiWFhYIiwKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KK0BAIC02Myw3ICs2Myw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCVhjb2ZmcmVsb2MxOiAgICAgIHhjb2ZmcmVsb2MxLAorIAorIAkJLy8gVE9ETyhhdXN0aW4pOiBBQkkgdjEgdXNlcyAvdXNyL2xpYi9sZC5zby4xLAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXBvd2VycGM2NGxlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXMzOTB4LnNvLjEiLAorIAorIAkJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCitAQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogICAiL2xpYi9sZC1saW51eC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCmluZGV4IDkzYTNkM2IuLmYxOGQ5MjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwpAQCAtMjcsNiArMjcsMTYgQEAKIEdPVE1QRElSW3ZhcmRlcHZhbHVlXSA9ICIiCiBleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKIAorZXhwb3J0IEdPSE9TVE9TID89ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPz0gIiR7QlVJTERfR09BUkNIfSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID89ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCitleHBvcnQgR09PUyA/PSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID89ICIke1RBUkdFVF9HT0FSQ0h9IgorZXhwb3J0IEdPQVJNID89ICIke1RBUkdFVF9HT0FSTX0iCitleHBvcnQgR08zODYgPz0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT01JUFMgPz0gIiR7VEFSR0VUX0dPTUlQU30iCitleHBvcnQgR09ST09UX0ZJTkFMID89ICIke2xpYmRpcn0vZ28iCisKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlCVUlMRF9DQz0ke0JVSUxEX0NDfQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCmluZGV4IDk0NWQwZjkuLmQ0OTI1MGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTEzLDExICsxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX05BVElWRX09IFwKICAgICAgICAgICAgICAgICAgICAgIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1RPT0xESVJfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke0hPU1RfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiBleHBvcnQgQ0dPX0NGTEFHUyA9ICIke0NGTEFHU30iCiBleHBvcnQgQ0dPX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKIGV4cG9ydCBHT19MREZMQUdTID0gJy1saW5rbW9kZSBleHRlcm5hbCAtZXh0bGQgJHtIT1NUX1BSRUZJWH1nY2MgLWV4dGxkZmxhZ3MgIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0gJHtMREZMQUdTfSInCkBAIC0yNSw4ICsyMSw4IEBACiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBDQ19GT1JfJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9PSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgotCWV4cG9ydCBDWFhfRk9SXyR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfT0iJHtIT1NUX1BSRUZJWH1neHggLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKKwlleHBvcnQgQ0NfRk9SXyR7SE9TVF9HT1RVUExFfT0iJHtIT1NUX1BSRUZJWH1nY2MgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke0hPU1RfR09UVVBMRX09IiR7SE9TVF9QUkVGSVh9Z3h4IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDNkMzQ0YTcuLjNkNTgwM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKQEAgLTUsMjMgKzUsMTQgQEAKIAogUE4gPSAiZ28tY3Jvc3MtJHtUVU5FX1BLR0FSQ0h9IgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCi1leHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCi1leHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBHT0NBQ0hFID0gIiR7Qn0vLmNhY2hlIgogQ0MgPSAiJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCiAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke0dPT1N9XyR7R09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgotCWV4cG9ydCBDWFhfRk9SXyR7R09PU31fJHtHT0FSQ2h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPVFVQTEV9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCmluZGV4IDk0ZjZmYjguLmYwYmVjNzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMKQEAgLTQsMTggKzQsMTEgQEAKIFBOID0gImdvLWNyb3Nzc2RrLSR7U0RLX1NZU30iCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayIKIAotZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCi1leHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKLWV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBDQ19GT1JfJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKLQlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgorCWV4cG9ydCBDQ19GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTdkNDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXAvMDAwMS1ib2x0X3Jpc2N2NjQtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1ZTA1MTY2OWQxMTdkN2NkOWIyNGNlYTM0OTQ5NTllZWMzOTZlYzFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjUgSmFuIDIwMjAgMjI6Mzc6MjUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gL2JvbHRfcmlzY3Y2NDogQWRkIHN1cHBvcnQgZm9yIHJpc2N2NjQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9yaXNjdjY0LmdvIHwgMTIgKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9yaXNjdjY0LmdvCisKK2RpZmYgLS1naXQgYS92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uM2Q2Yjg4ZDQKKy0tLSAvZGV2L251bGwKKysrKyBiL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfcmlzY3Y2NC5nbworQEAgLTAsMCArMSwxMiBAQAorKy8vICtidWlsZCByaXNjdjY0CisrCisrcGFja2FnZSBib2x0CisrCisrLy8gbWF4TWFwU2l6ZSByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1tYXAgc2l6ZSBzdXBwb3J0ZWQgYnkgQm9sdC4KKytjb25zdCBtYXhNYXBTaXplID0gMHhGRkZGRkZGRkZGRkYgLy8gMjU2VEIKKysKKysvLyBtYXhBbGxvY1NpemUgaXMgdGhlIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIGFycmF5IHBvaW50ZXJzLgorK2NvbnN0IG1heEFsbG9jU2l6ZSA9IDB4N0ZGRkZGRkYKKysKKysvLyBBcmUgdW5hbGlnbmVkIGxvYWQvc3RvcmVzIGJyb2tlbiBvbiB0aGlzIGFyY2g/CisrdmFyIGJyb2tlblVuYWxpZ25lZCA9IGZhbHNlCistLSAKKzIuMjUuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIKaW5kZXggZWFkODc4Ny4uNjE1Y2IyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYgpAQCAtNiw2ICs2LDcgQEAKIEdPX0lNUE9SVCA9ICJnaXRodWIuY29tL2dvbGFuZy9kZXAiCiBTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaDtwYXRjaGRpcj1zcmMvZ2l0aHViLmNvbS9nb2xhbmcvZGVwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoO3BhdGNoZGlyPXNyYy9naXRodWIuY29tL2dvbGFuZy9kZXAgXAogICAgICAgICAgICIKIAogU1JDUkVWID0gIjFmN2MxOWU1ZjUyZjQ5ZmZiOWY5NTZmNjRjMDEwYmUxNDY4MzQ2OGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKaW5kZXggOTczMWUxNi4uMjExNzlhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKQEAgLTIsMTUgKzIsNiBAQAogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCi1leHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCi1leHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKIGV4cG9ydCBDR09fQ1BQRkxBR1MgPSAiJHtDUFBGTEFHU30iCiBleHBvcnQgQ0dPX0NYWEZMQUdTID0gIiR7Q1hYRkxBR1N9IgpAQCAtMjksMTQgKzIwLDE0IEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NDfSIKLQlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NYWH0iCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtDQ30iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7Q1hYfSIKIAogCWNkIHNyYwogCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkgLS1uby1iYW5uZXIgc3RkCiAJaWYgWyAtbiAiJHtHT19EWU5MSU5LfSIgXTsgdGhlbgogCQlleHBvcnQgR09UT09MRElSPSIke0J9L3BrZy90b29sL25hdGl2ZV9uYXRpdmUiCi0JCUNDPSIkQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH0iIEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIgR09PUz0iJHtUQVJHRVRfR09PU30iIEdPUk9PVD0ke0J9IFwKKwkJQ0M9IiRDQ19GT1JfJHtUQVJHRVRfR09UVVBMRX0iIEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIgR09PUz0iJHtUQVJHRVRfR09PU30iIEdPUk9PVD0ke0J9IFwKIAkJCSRHT1RPT0xESVIvZ29fYm9vdHN0cmFwIGluc3RhbGwgLWxpbmtzaGFyZWQgLWJ1aWxkbW9kZT1zaGFyZWQgJHtHT19TSExJQl9MREZMQUdTfSBzdGQKIAlmaQogCWNkICR7Qn0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCmluZGV4IDkxZWZkM2UuLjhlNDQyNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwpAQCAtMSwxNSArMSw2IEBACiBERVBFTkRTID0gInZpcnR1YWwvJHtUVU5FX1BLR0FSQ0h9LWdvIGdvLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIGdvLW5hdGl2ZSIKIAotZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCi1leHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKLWV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKLWV4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCi1leHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgotZXhwb3J0IEdPTUlQUyA9ICIke1RBUkdFVF9HT01JUFN9IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiBleHBvcnQgR09DQUNIRSA9ICIke0J9Ly5jYWNoZSIKIEdPX0xERkxBR1MgPSAiIgogR09fTERGTEFHU19jbGFzcy1uYXRpdmVzZGsgPSAiLWxpbmttb2RlIGV4dGVybmFsIgpAQCAtNDMsMTIgKzM0LDEyIEBACiAJCWluc3RhbGwgLW0gMDc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2Jpbi8KIAkJbG4gLXNmIC4uLyR7YmFzZWxpYn0vZ28vYmluLyRuYW1lICR7RH0ke2JpbmRpcn0vCiAJZG9uZQorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3NyYwogfQogCiBQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYiCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZ28vYmluICR7bGliZGlyfS9nby9wa2cvdG9vbC8ke1RBUkdFVF9HT1RVUExFfSAke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwgYmFzaCIKK1JERVBFTkRTXyR7UE59ID0gImdvLXJ1bnRpbWUiCiBJTlNBTkVfU0tJUF8ke1BOfSA9ICJsZGZsYWdzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmNkYjA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotcmVxdWlyZSBnby10YXJnZXQuaW5jCi0KLWV4cG9ydCBHT0JVSUxETU9ERT0iIgotCi0jIEFkZCBwaWUgdG8gR09CVUlMRE1PREUgdG8gc2F0aXNmeSAidGV4dHJlbCIgUUEgY2hlY2tpbmcsIGJ1dCBtaXBzCi0jIGRvZXNuJ3Qgc3VwcG9ydCAtYnVpbGRtb2RlPXBpZSwgc28gc2tpcCB0aGUgUUEgY2hlY2tpbmcgZm9yIG1pcHMgYW5kIGl0cwotIyB2YXJpYW50cy4KLXB5dGhvbigpIHsKLSAgICBpZiAnbWlwcycgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyk6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCdJTlNBTkVfU0tJUF8lcycgJSBkLmdldFZhcignUE4nKSwgIiB0ZXh0cmVsIikKLSAgICBlbHNlOgotICAgICAgICBkLnNldFZhcignR09CVUlMRE1PREUnLCAncGllJykKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNDBjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjE0LmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXRhcmdldC5pbmMKKworZXhwb3J0IEdPQlVJTERNT0RFPSIiCisKKyMgQWRkIHBpZSB0byBHT0JVSUxETU9ERSB0byBzYXRpc2Z5ICJ0ZXh0cmVsIiBRQSBjaGVja2luZywgYnV0IG1pcHMvcmlzY3YKKyMgZG9lc24ndCBzdXBwb3J0IC1idWlsZG1vZGU9cGllLCBzbyBza2lwIHRoZSBRQSBjaGVja2luZyBmb3IgbWlwcy9yaXNjdiBhbmQgaXRzCisjIHZhcmlhbnRzLgorcHl0aG9uKCkgeworICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnLFRydWUpIG9yICdyaXNjdicgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyxUcnVlKToKKyAgICAgICAgZC5hcHBlbmRWYXIoJ0lOU0FORV9TS0lQXyVzJyAlIGQuZ2V0VmFyKCdQTicsVHJ1ZSksICIgdGV4dHJlbCIpCisgICAgZWxzZToKKyAgICAgICAgZC5zZXRWYXIoJ0dPQlVJTERNT0RFJywgJ3BpZScpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qcXVlcnkvanF1ZXJ5XzMuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanF1ZXJ5L2pxdWVyeV8zLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmY2ZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanF1ZXJ5L2pxdWVyeV8zLjQuMS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gImpRdWVyeSBpcyBhIGZhc3QsIHNtYWxsLCBhbmQgZmVhdHVyZS1yaWNoIEphdmFTY3JpcHQgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vanF1ZXJ5LmNvbS8iCitMSUNFTlNFID0gIk1JVCIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7QlB9LmpzO3N0YXJ0bGluZT04O2VuZGxpbmU9MTA7bWQ1PWNkYjg2ZjViZGE5MGNhZWMwMjM1OTJkMmU3NjgzNTdjIgorCitTUkNfVVJJID0gIlwKKyAgICBodHRwczovL2NvZGUuanF1ZXJ5LmNvbS8ke0JQfS5qcztuYW1lPWpzIFwKKyAgICBodHRwczovL2NvZGUuanF1ZXJ5LmNvbS8ke0JQfS5taW4uanM7bmFtZT1taW4gXAorICAgIGh0dHBzOi8vY29kZS5qcXVlcnkuY29tLyR7QlB9Lm1pbi5tYXA7bmFtZT1tYXAgXAorICAgICIKKworU1JDX1VSSVtqcy5zaGEyNTZzdW1dID0gIjVhOTNhODg0OTNhYTMyYWFiMjI4YmY0NTcxYzAxMjA3ZDNiNDJiMDAwMjQwOWE0NTRkNDA0YjRkODM5NWJkNTUiCitTUkNfVVJJW21pbi5zaGEyNTZzdW1dID0gIjA5MjVlOGFkN2JkOTcxMzkxYThiMWU5OGJlOGU4N2E2OTcxOTE5ZWI1YjYwYzE5NjQ4NTk0MWMzYzFkZjA4OWEiCitTUkNfVVJJW21hcC5zaGEyNTZzdW1dID0gIjhkYTc0YWVjMGZjZGQ3Njc4YTI2NjNiM2NjOWJhZmJhZjAwOWU2ZDY5MjliMjhiYjNkZDk1YmNlZDE4MjA2ZjYiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImpxdWVyeS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLmpzIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2phdmFzY3JpcHQvJHtCUE59LworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtCUH0uanMgJHtEfSR7ZGF0YWRpcn0vamF2YXNjcmlwdC8ke0JQTn0vJHtCUE59LmpzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8ke0JQfS5taW4uanMgJHtEfSR7ZGF0YWRpcn0vamF2YXNjcmlwdC8ke0JQTn0vJHtCUE59Lm1pbi5qcworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtCUH0ubWluLm1hcCAke0R9JHtkYXRhZGlyfS9qYXZhc2NyaXB0LyR7QlBOfS8ke0JQTn0ubWluLm1hcAorfQorCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaAppbmRleCAyNmU4YjA2Li41OWMwOWFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKQEAgLTEsNDEgKzEsMjUgQEAKLUZyb20gZmY0YWFlNGM4YmVhZjE3Y2I4ZTdhMzQzMWY2YzU0MWVjY2ZhZTI0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjI4ODU5ZWE5MzExMGQ1MmQ4YTg3ZDdiNWE2Yzg3OTZkMGQ1MjNlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyMjowOSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IHNldCBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZyBweXRob24uCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBzZXQgUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcgcHl0aG9uLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCi0gbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KLSBsaWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0IHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDNhZDllMTguLjBlN2RkNGIgMTAwNjQ0Ci0tLS0gYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw3ICsxLDcgQEAKLSBmaW5kX3BhY2thZ2UgKFB5dGhvbkxpYnMgMi42KQotIGZpbmRfcGFja2FnZSAoUHl0aG9uSW50ZXJwIDIuNiBSRVFVSVJFRCkKK2RpZmYgLS1naXQgYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9DTWFrZUxpc3RzLnR4dCBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0CitpbmRleCBmYTU5MGFlLi42OTEzMjE0IDEwMDY0NAorLS0tIGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtMTE3LDcgKzExNyw3IEBAIElGIChTS0JVSUxEKQorICAgICBJTlNUQUxMKEZJTEVTIGxpYmNvbXBzL19faW5pdF9fLnB5IERFU1RJTkFUSU9OIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL2xpYmNvbXBzKQorICAgICBJTlNUQUxMKFRBUkdFVFMgcHljb21wcyBMSUJSQVJZIERFU1RJTkFUSU9OIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL2xpYmNvbXBzKQorIEVMU0UgKCkKKy0gICAgRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorKyAgICAjRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQogIAotLWV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0rI2V4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0gCi0gaW5jbHVkZV9kaXJlY3Rvcmllcygke1BZVEhPTl9JTkNMVURFX1BBVEh9KQotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtMSUJDT01QU19JTkNMVURFX1BBVEh9KQotZGlmZiAtLWdpdCBhL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgYi9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA3ZmFmYTlmLi5lZDgyZDNkIDEwMDY0NAotLS0tIGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAotQEAgLTIsNyArMiw3IEBAIGZpbmRfcGFja2FnZSAoUHl0aG9uTGlicyAzLjApCi0gZmluZF9wYWNrYWdlIChQeXRob25JbnRlcnAgMy4wKQotICNhZGRfY3VzdG9tX3RhcmdldChweTMtY29weSkKLSAKLS1leGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotKyNleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotIAotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtQWVRIT05fSU5DTFVERV9QQVRIfSkKLSBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TElCQ09NUFNfSU5DTFVERV9QQVRIfSkKLS0tIAotMi4xMS4wCi0KKyAgICAgSU5TVEFMTChGSUxFUyAke3B5Y29tcHNfU1JDRElSfS9saWJjb21wcy9fX2luaXRfXy5weSBERVNUSU5BVElPTiAke1BZVEhPTl9JTlNUQUxMX0RJUn0vbGliY29tcHMpCisgICAgICNJTlNUQUxMKEZJTEVTICR7cHljb21wc19TUkNESVJ9L3Rlc3RzL19fdGVzdC5weSBERVNUSU5BVElPTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHNfZ2l0LmJiCmluZGV4IDM3MmMzYzMuLjQwYjYwMTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wc19naXQuYmIKQEAgLTgsOCArOCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jcmMzMi5jLXRvLXNvdXJjZXMtbGlzdC5wYXRjaCBcCiAgICAgICAgICAgICIKIAotUFYgPSAiMC4xLjExIgotU1JDUkVWID0gImQ4NjhhNzliNzZmYjk4MGQxMzcxYzI4MTI0YWUwN2YwMGQyYjYzYTkiCitQViA9ICIwLjEuMTQiCitTUkNSRVYgPSAiNWEwZTA0Mjg2ZjM0NjJlMzMwOGYyYTMzMmViMGY5MGE2NjkyMDIxOCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZGY1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtaW5jbHVkZS1zdGRleGNlcHQtZm9yLXJ1bnRpbWVfZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSA1ZjhlZWU1MDQwZDcwNzQ3MTBjZDU0MmZjNTBmN2E0MDkxODMyMWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjMgRGVjIDIwMTkgMTQ6MzA6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSA8c3RkZXhjZXB0PiBmb3IgcnVudGltZV9lcnJvcgorCitGaXhlcworCitlcnJvcjogY2xhc3MgJ2xpYmRuZjo6TW9kdWxlUGFja2FnZUNvbnRhaW5lcjo6RXhjZXB0aW9uJyBkb2VzIG5vdCBoYXZlIGFueSBmaWVsZCBuYW1lZCAncnVudGltZV9lcnJvcicKKyAgICAgICAgIGV4cGxpY2l0IEV4Y2VwdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmd2hhdCkgOiBydW50aW1lX2Vycm9yKHdoYXQpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzg2N10KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJkbmYvZ29hbC9Hb2FsLmhwcCAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgbGliZG5mL21vZHVsZS9Nb2R1bGVQYWNrYWdlQ29udGFpbmVyLmhwcCB8IDEgKworIGxpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwICAgICAgfCAzICsrLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJkbmYvZ29hbC9Hb2FsLmhwcCBiL2xpYmRuZi9nb2FsL0dvYWwuaHBwCitpbmRleCBmMzNkZmEyNC4uN2I4ZDgyMmMgMTAwNjQ0CistLS0gYS9saWJkbmYvZ29hbC9Hb2FsLmhwcAorKysrIGIvbGliZG5mL2dvYWwvR29hbC5ocHAKK0BAIC0yMiw2ICsyMiw3IEBACisgI2RlZmluZSBfX0dPQUxfSFBQCisgCisgI2luY2x1ZGUgPG1lbW9yeT4KKysjaW5jbHVkZSA8c3RkZXhjZXB0PgorIAorICNpbmNsdWRlICIuLi9kbmYtdHlwZXMuaCIKKyAjaW5jbHVkZSAiLi4vaHktZ29hbC5oIgorZGlmZiAtLWdpdCBhL2xpYmRuZi9tb2R1bGUvTW9kdWxlUGFja2FnZUNvbnRhaW5lci5ocHAgYi9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCitpbmRleCAxZjgxNWZkYS4uMzdhODgzMmQgMTAwNjQ0CistLS0gYS9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCisrKysgYi9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAjaW5jbHVkZSA8c2V0PgorKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisgCisgLy9jbGFzcyBNb2R1bGVQYWNrYWdlQ29udGFpbmVyOworIC8vdHlwZWRlZiBzdGQ6OnNoYXJlZF9wdHI8TW9kdWxlUGFja2FnZUNvbnRhaW5lcj4gTW9kdWxlUGFja2FnZUNvbnRhaW5lclB0cjsKK2RpZmYgLS1naXQgYS9saWJkbmYvcmVwby9zb2x2YWJsZS9EZXBlbmRlbmN5LmNwcCBiL2xpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwCitpbmRleCA2NjgyYjcyOS4uMGZjOGI1Y2QgMTAwNjQ0CistLS0gYS9saWJkbmYvcmVwby9zb2x2YWJsZS9EZXBlbmRlbmN5LmNwcAorKysrIGIvbGliZG5mL3JlcG8vc29sdmFibGUvRGVwZW5kZW5jeS5jcHAKK0BAIC0xOCw2ICsxOCw3IEBACisgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICAqLworIAorKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisgI2luY2x1ZGUgIkRlcGVuZGVuY3kuaHBwIgorICNpbmNsdWRlICJsaWJkbmYvdXRpbHMvdXRpbHMuaHBwIgorICNpbmNsdWRlICJsaWJkbmYvcmVwby9EZXBlbmRlbmN5U3BsaXR0ZXIuaHBwIgorQEAgLTEwNiw0ICsxMDcsNCBAQCBEZXBlbmRlbmN5OjpnZXRSZWxkZXBJZChEbmZTYWNrICpzYWNrLCBjb25zdCBjaGFyICogcmVsZGVwU3RyKQorICAgICB9CisgfQorIAorLX0KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK30KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvZml4LWRlcHJlY2F0aW9uLXdhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhM2UwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gNjZkOWIyYmEzZmJjN2IwNGYyYjVhZDlkMGU1MzcxMzQwYzAzN2I1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmVrIEJsYWhhIDxtYmxhaGFAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTAgSnVsIDIwMTkgMTA6MTE6MDEgKzAyMDAKK1N1YmplY3Q6IFtvZS1jb3JlXVtQQVRDSCAxLzFdIEZpeCBQeXRob24gMy44IGRlcHJlY2F0aW9uIHdhcm5pbmcKKyAoUmhCdWc6MTcyNDI0NCkKKworVGhpcyBkZXByZWNhdGlvbiB3YXJuaW5nIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjggYnkKK2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzYzODE6CisKKy91c3IvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2RuZi9wYWNrYWdlLnB5OjU3OiBEZXByZWNhdGlvbldhcm5pbmc6IFBZX1NTSVpFX1RfQ0xFQU4gd2lsbCBiZSByZXF1aXJlZCBmb3IgJyMnIGZvcm1hdHMKKyAgcmV0dXJuIHN1cGVyKFBhY2thZ2UsIHNlbGYpLmNoa3N1bQorCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE3MjQyNDQKKy0tLQorIHB5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAgICAgICB8IDMgKystCisgcHl0aG9uL2hhd2tleS9wYWNrYWdlZGVsdGEtcHkuY3BwIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKy0tLQorCitVbmNoYW5nZWQuICBBcHBlYXJzIGluIHZlcnNpb24gMC4zNS4yLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi5naXRdCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2hhd2tleS9wYWNrYWdlLXB5LmNwcCBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAKK2luZGV4IDUxMDJiYmEuLjY4ZTAzY2IgMTAwNjQ0CistLS0gYS9weXRob24vaGF3a2V5L3BhY2thZ2UtcHkuY3BwCisrKysgYi9weXRob24vaGF3a2V5L3BhY2thZ2UtcHkuY3BwCitAQCAtMTgsNiArMTgsNyBAQAorICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKysjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyAjaW5jbHVkZSA8UHl0aG9uLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCitAQCAtMjUxLDcgKzI1Miw3IEBAIGdldF9jaGtzdW0oX1BhY2thZ2VPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisgI2lmIFBZX01BSk9SX1ZFUlNJT04gPCAzCisgICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoImlzIyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworICNlbHNlCistICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoIml5IyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworKyAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpeSMiLCB0eXBlLCBjcywgKFB5X3NzaXplX3QpY2hlY2tzdW1fbGVuZ3RoKTsKKyAjZW5kaWYKKyAKKyAgICAgcmV0dXJuIHJlczsKK2RpZmYgLS1naXQgYS9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAgYi9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAKK2luZGV4IGNhMWNiN2QuLjFhNjQ4MzYgMTAwNjQ0CistLS0gYS9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAKKysrKyBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZWRlbHRhLXB5LmNwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCisrI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisgI2luY2x1ZGUgPFB5dGhvbi5oPgorIAorIC8vIGhhd2tleQorQEAgLTkyLDcgKzkzLDcgQEAgZ2V0X2Noa3N1bShfUGFja2FnZURlbHRhT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorICNpZiBQWV9NQUpPUl9WRVJTSU9OIDwgMworICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpcyMiLCB0eXBlLCBjcywgY2hlY2tzdW1fbGVuZ3RoKTsKKyAjZWxzZQorLSAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpeSMiLCB0eXBlLCBjcywgY2hlY2tzdW1fbGVuZ3RoKTsKKysgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiaXkjIiwgdHlwZSwgY3MsIChQeV9zc2l6ZV90KWNoZWNrc3VtX2xlbmd0aCk7CisgI2VuZGlmCisgCisgICAgIHJldHVybiByZXM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC4yOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKaW5kZXggM2YxMWUwMi4uY2MyY2ViOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKQEAgLTcsOSArNywxMiBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1XSVRIX1RFU1RTLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiNzUxZjg5MDQ1YjgwZDU4YzBkMDU4MDBmNzQzNTdjZjc4Y2RmN2U3NyIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtMjUsNCArMjgsNSBAQAogRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfR0lSPU9GRiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorUE5CTEFDS0xJU1RbbGliZG5mXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VfQ0xBU1NFUycsICdwYWNrYWdlX3JwbScsICcnLCAnRG9lcyBub3QgYnVpbGQgd2l0aG91dCBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMgZHVlIGRpc2FibGVkIHJwbSBzdXBwb3J0IGluIGxpYnNvbHYnLCBkKX0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTAyNS0zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxOTEwMjUtMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODEwMDEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTAyNS0zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkJTRCByZXBsYWNlbWVudCBmb3IgbGlicmVhZGxpbmUiCi1ERVNDUklQVElPTiA9ICJDb21tYW5kIGxpbmUgZWRpdG9yIGxpYnJhcnkgcHJvdmlkaW5nIGdlbmVyaWMgbGluZSBlZGl0aW5nLCBcCi1oaXN0b3J5LCBhbmQgdG9rZW5pemF0aW9uIGZ1bmN0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTQyMjhkMGM1YTkwOTNiMDFhZWFhZWFlNjY0MTUzMyIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3N0ZGMtcHJlZGVmLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQ2NTY4NDY3MDgwY2ZkNzVlNzE1ZDA0NTEwMmI1NDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmRmZjAzNjY2MGQ0NzhiZmFhMTRlNDA3ZmM1ZGUyNmQyMmRhMTA4NzExOGM4OTdiMWEzYWQyZTkwY2I3YmYzOSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkxMjMxLTMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTIzMS0zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyZDU3YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTIzMS0zLjEuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJCU0QgcmVwbGFjZW1lbnQgZm9yIGxpYnJlYWRsaW5lIgorREVTQ1JJUFRJT04gPSAiQ29tbWFuZCBsaW5lIGVkaXRvciBsaWJyYXJ5IHByb3ZpZGluZyBnZW5lcmljIGxpbmUgZWRpdGluZywgXAoraGlzdG9yeSwgYW5kIHRva2VuaXphdGlvbiBmdW5jdGlvbnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnRocnlzb2VlLmRrL2VkaXRsaW5lLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWU0MjI4ZDBjNWE5MDkzYjAxYWVhYWVhZTY2NDE1MzMiCisKK0RFUEVORFMgPSAibmN1cnNlcyIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnRocnlzb2VlLmRrL2VkaXRsaW5lLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zdGRjLXByZWRlZi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjJlMjJhNTExMzFkZTk0ZmYyZGYyNDkwMWY3Y2ZlNDE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiYjgyY2I3ZTExNmE1ZjgwMjVkMzVlZjViNGY3ZDRhM2NkZDBhMzkwOWExNDZhMzkxMTIwOTVhMmQyMjkwNzEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImhpc3RvcnkuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoaXN0b3J5LjNdID0gIiR7bWFuZGlyfS9tYW4zL2hpc3RvcnkuMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGM4YTVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBwcm92aWRpbmcgQyBhbmQgUHl0aG9uIChsaWJjVVJMIGxpa2UpIEFQSSBcCi0gICAgICAgICAgIGZvciBkb3dubG9hZGluZyBsaW51eCByZXBvc2l0b3J5IG1ldGFkYXRhIGFuZCBwYWNrYWdlcy4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiNDk3ZjVlYjIyOTM2NjI4MzViZWQ2YmRiMGY0MzUyMTc4OGIyY2ViZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJjdXJsIGdsaWItMi4wIG9wZW5zc2wgYXR0ciBncGdtZSBsaWJ4bWwyIgotCi1pbmhlcml0IGNtYWtlIGRpc3R1dGlsczMtYmFzZSBwa2djb25maWcKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotICAgIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAtRFBZVEhPTl9ERVNJUkVEPTMgXAotICAgIC1ERU5BQkxFX1RFU1RTPU9GRiBcCi0gICAgLURFTkFCTEVfRE9DUz1PRkYgXAotICAgIC1EV0lUSF9aQ0hVTks9T0ZGIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuMTEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEwYTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjIuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgcHJvdmlkaW5nIEMgYW5kIFB5dGhvbiAobGliY1VSTCBsaWtlKSBBUEkgXAorICAgICAgICAgICBmb3IgZG93bmxvYWRpbmcgbGludXggcmVwb3NpdG9yeSBtZXRhZGF0YSBhbmQgcGFja2FnZXMuIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWdwZ21lLXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctbm90LXdpdGgtY21ha2UtbS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjY3YzJkMWY4M2YxYmY4N2JlM2YyNmJhNzMwZmNlN2ZiZGYwYzlmYmEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiY3VybCBnbGliLTIuMCBvcGVuc3NsIGF0dHIgZ3BnbWUgbGlieG1sMiIKKworaW5oZXJpdCBjbWFrZSBkaXN0dXRpbHMzLWJhc2UgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgLURQWVRIT05fREVTSVJFRD0zIFwKKyAgICAtREVOQUJMRV9URVNUUz1PRkYgXAorICAgIC1ERU5BQkxFX0RPQ1M9T0ZGIFwKKyAgICAtRFdJVEhfWkNIVU5LPU9GRiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCmluZGV4IDVmOTI3N2YuLmE4NjA3ZjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgpAQCAtMTAsNiArMTAsOSBAQAogCiBERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyIHpsaWIgbGliZWRpdCBuaW5qYS1uYXRpdmUgbGx2bS1uYXRpdmUiCiAKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgorCiBSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBuY3Vyc2VzLXRlcm1pbmZvIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwpAQCAtMTgsNyArMjEsNyBAQAogCiBNQUpPUl9WRVJTSU9OID0gIjkiCiBNSU5PUl9WRVJTSU9OID0gIjAiCi1QQVRDSF9WRVJTSU9OID0gIjAiCitQQVRDSF9WRVJTSU9OID0gIjEiCiAKIFBWID0gIiR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfS4ke1BBVENIX1ZFUlNJT059IgogCkBAIC0yNiwxMiArMjksMTQgQEAKIExMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCiAKIEJSQU5DSCA9ICJyZWxlYXNlLyR7TUFKT1JfVkVSU0lPTn0ueCIKLVNSQ1JFViA9ICIwMzk5ZDVhOTY4MmIzY2VmNzFjNjUzMzczZTM4ODkwYzYzYzRjMzY1IgorU1JDUkVWID0gImMxYTBhMjEzMzc4YTQ1OGZiZWExYTVjNzdiMzE1YzdkY2UwOGZkMDUiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QuZ2l0O2JyYW5jaD0ke0JSQU5DSH0gXAogICAgICAgICAgICBmaWxlOi8vMDAwNi1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIgogCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJsbHZtb3JnLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdC9sbHZtIgogCiBMTFZNX0lOU1RBTExfRElSID0gIiR7V09SS0RJUn0vbGx2bS1pbnN0YWxsIgpAQCAtODcsNiArOTIsOCBAQAogICAgICAgICAgICAgICAgICAgLURMTFZNX0NPTkZJR19QQVRIPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLWNvbmZpZyR7UFZ9IFwKICAgICAgICAgICAgICAgICAgIgogCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICMgRml4IHBhdGhzIGluIGxsdm0tY29uZmlnCiAJc2VkIC1pICJzfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoQ3VycmVudFBhdGgpKVwuc3RyKCl8c3lzOjpwYXRoOjpwYXJlbnRfcGF0aChzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSkpLnN0cigpfGciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLmluYwppbmRleCBiODkwNWJjLi5hMGE3MmI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMKQEAgLTUsOSArNSw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbWFrZS8iCiBTRUNUSU9OID0gImRldmVsIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbWFrZS9tYWtlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L21ha2UvbWFrZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHRleGluZm8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2ZTRkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGM5MGE3ZGRhNmM1NzJmNzliOGU3OGRhNDRiNmViZjg3MDRlZGVmNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotRGF0ZTogU3VuLCAyNCBTZXAgMjAxNyAwOToxMjo1OCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZ2xvYjogRG8gbm90IGFzc3VtZSBnbGliYyBnbG9iIGludGVybmFscy4KLQotSXQgaGFzIGJlZW4gcHJvcG9zZWQgdGhhdCBnbGliYyBnbG9iIHN0YXJ0IHVzaW5nIGdsX2xzdGF0LAotd2hpY2ggdGhlIEFQSSBhbGxvd3MgaXQgdG8gZG8uICBHTlUgJ21ha2UnIHNob3VsZCBub3QgZ2V0IGluCi10aGUgd2F5IG9mIHRoaXMuICBTZWU6Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOS9tc2cwMDQwOS5odG1sCi0KLSogZGlyLmMgKGxvY2FsX2xzdGF0KTogTmV3IGZ1bmN0aW9uLCBsaWtlIGxvY2FsX3N0YXQuCi0oZGlyX3NldHVwX2dsb2IpOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBnbF9sc3RhdCB0b28sIGFzIHRoZSBBUEkKLXJlcXVpcmVzLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZGlyLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlyLmMgYi9kaXIuYwotaW5kZXggZjM0YmJmNS4uMTJlZWYzMCAxMDA2NDQKLS0tLSBhL2Rpci5jCi0rKysgYi9kaXIuYwotQEAgLTEyOTksMTUgKzEyOTksNDAgQEAgbG9jYWxfc3RhdCAoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKLSB9Ci0gI2VuZGlmCi0gCi0rLyogU2ltaWxhcmx5IGZvciBsc3RhdC4gICovCi0rI2lmICFkZWZpbmVkKGxzdGF0KSAmJiAhZGVmaW5lZChXSU5ET1dTMzIpIHx8IGRlZmluZWQoVk1TKQotKyMgaWZuZGVmIFZNUwotKyMgIGlmbmRlZiBIQVZFX1NZU19TVEFUX0gKLStpbnQgbHN0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzYnVmKTsKLSsjICBlbmRpZgotKyMgZWxzZQotKyAgICAvKiBXZSBhcmUgZG9uZSB3aXRoIHRoZSBmYWtlIGxzdGF0LiAgR28gYmFjayB0byB0aGUgcmVhbCBsc3RhdCAqLwotKyMgICBpZmRlZiBsc3RhdAotKyMgICAgIHVuZGVmIGxzdGF0Ci0rIyAgIGVuZGlmCi0rIyBlbmRpZgotKyMgZGVmaW5lIGxvY2FsX2xzdGF0IGxzdGF0Ci0rI2VsaWYgZGVmaW5lZChXSU5ET1dTMzIpCi0rLyogV2luZG93cyBkb2Vzbid0IHN1cHBvcnQgbHN0YXQoKS4gICovCi0rIyBkZWZpbmUgbG9jYWxfbHN0YXQgbG9jYWxfc3RhdAotKyNlbHNlCi0rc3RhdGljIGludAotK2xvY2FsX2xzdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQotK3sKLSsgIGludCBlOwotKyAgRUlOVFJMT09QIChlLCBsc3RhdCAocGF0aCwgYnVmKSk7Ci0rICByZXR1cm4gZTsKLSt9Ci0rI2VuZGlmCi0rCi0gdm9pZAotIGRpcl9zZXR1cF9nbG9iIChnbG9iX3QgKmdsKQotIHsKLSAgIGdsLT5nbF9vcGVuZGlyID0gb3Blbl9kaXJzdHJlYW07Ci0gICBnbC0+Z2xfcmVhZGRpciA9IHJlYWRfZGlyc3RyZWFtOwotICAgZ2wtPmdsX2Nsb3NlZGlyID0gZnJlZTsKLSsgIGdsLT5nbF9sc3RhdCA9IGxvY2FsX2xzdGF0OwotICAgZ2wtPmdsX3N0YXQgPSBsb2NhbF9zdGF0OwotLSAgLyogV2UgZG9uJ3QgYm90aGVyIHNldHRpbmcgZ2xfbHN0YXQsIHNpbmNlIGdsb2IgbmV2ZXIgY2FsbHMgaXQuCi0tICAgICBUaGUgc2xvdCBpcyBvbmx5IHRoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggNC40IEJTRC4gICovCi0gfQotIAotIHZvaWQKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbTQtZ2V0bG9hZGF2Zy5tNC1yZXN0cmljdC1BSVgtc3BlY2lmaWMtdGVzdC1vbi1BSVgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk2YmNmZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gODMwOTYwMTc3NWQ5NDQyNDE2MzI5YTc3ZjdkY2ZkOGFhNzk5ZTlhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CitEYXRlOiBGcmksIDIxIEZlYiAyMDIwIDE3OjM5OjU2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBtNC9nZXRsb2FkYXZnLm00OiByZXN0cmljdCBBSVggc3BlY2lmaWMgdGVzdCBvbiBBSVgKKworV2hlbiBjcm9zcyBjb21waWxpbmcgZm9yIGEgc3lzdGVtIHdpdGhvdXQgZ2V0bG9hZGF2ZywgZG8gbm90IHRyeSBhZGQKK2FkZGl0aW9uYWwgbGlua2VyIHBhdGhzIHVubGVzcyBpdCdzIGFic29sdXRlbHkgbmVjZXNzYXJ5LgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyBtNC9nZXRsb2FkYXZnLm00IHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tNC9nZXRsb2FkYXZnLm00IGIvbTQvZ2V0bG9hZGF2Zy5tNAoraW5kZXggM2JkMmExNC4uNjk2YzVkZSAxMDA2NDQKKy0tLSBhL200L2dldGxvYWRhdmcubTQKKysrKyBiL200L2dldGxvYWRhdmcubTQKK0BAIC00Miw2ICs0Miw4IEBAIEFDX0NIRUNLX0ZVTkMoW2dldGxvYWRhdmddLCBbXSwKKyAgICBmaQorIAorICAgIGlmIHRlc3QgJGdsX2Z1bmNfZ2V0bG9hZGF2Z19kb25lID0gbm87IHRoZW4KKysgICAgIEFTX0NBU0UoWyRob3N0X29zXSwKKysgICAgICAgICAgICAgW2FpeCpdLCBbCisgICAgICAjIFRoZXJlIGlzIGEgY29tbW9ubHkgYXZhaWxhYmxlIGxpYnJhcnkgZm9yIFJTLzYwMDAgQUlYLgorICAgICAgIyBTaW5jZSBpdCBpcyBub3QgYSBzdGFuZGFyZCBwYXJ0IG9mIEFJWCwgaXQgbWlnaHQgYmUgaW5zdGFsbGVkIGxvY2FsbHkuCisgICAgICBnbF9nZXRsb2FkYXZnX0xJQlM9JExJQlMKK0BAIC00OSw2ICs1MSw3IEBAIEFDX0NIRUNLX0ZVTkMoW2dldGxvYWRhdmddLCBbXSwKKyAgICAgIEFDX0NIRUNLX0xJQihbZ2V0bG9hZGF2Z10sIFtnZXRsb2FkYXZnXSwKKyAgICAgICAgICAgICAgICAgICBbTElCUz0iLWxnZXRsb2FkYXZnICRMSUJTIiBnbF9mdW5jX2dldGxvYWRhdmdfZG9uZT15ZXNdLAorICAgICAgICAgICAgICAgICAgIFtMSUJTPSRnbF9nZXRsb2FkYXZnX0xJQlNdKQorKyAgICAgICBdLCBbOl0pCisgICAgZmkKKyAKKyAgICAjIFNldCB1cCB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gaWYgbmVjZXNzYXJ5LgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbWFrZWluc3QtRG8tbm90LXVuZGVmLVBPU0lYLW9uLWNsYW5nLWFybS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW1ha2VpbnN0LURvLW5vdC11bmRlZi1QT1NJWC1vbi1jbGFuZy1hcm0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhN2M5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW1ha2VpbnN0LURvLW5vdC11bmRlZi1QT1NJWC1vbi1jbGFuZy1hcm0ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA4NmI3OTQ3MTU2YTBjMzNlNzY4ZDBhMjY1ZTM4ZjI4ODFhNzBhN2UyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMzoxOTozNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBtYWtlaW5zdDogRG8gbm90IHVuZGVmIFBPU0lYIG9uIGNsYW5nL2FybQorCitpZiBfX2FybSBpbnRlcm5hbCBjb21waWxlciBtYWNybyBpcyBkZWZpbmVkIHRoZW4gbWFrZSBhc3N1bWVzIHRoYXQgdGhlCitzeXN0ZW0gaXMgbm90IHBvc2l4IGFuZCBnb2VzIGFoZWFkIGFuZCB1bmRlZnMgUE9TSVgsIHdoaWNoIHJlc3VsdHMgaW4KK21pc2NvbXBpbGluZyBtYWtlIHdpdGggY2xhbmcsIHNpbmNlIGNsYW5nIGRvZXMgZGVmaW5lIF9fYXJtIHVubGlrZSBnY2MKK3doaWNoIGRvZXMgbm90LCBidXQgdGhleSBib3RoIHN1cHBvcnQgcG9zaXgganVzdCBmaW5lLCBzbyBoZXJlIGNoZWNrIGZvcgorY29tcGlsZXIgbm90IGJlaW5nIGNsYW5nIHdoZW4gX19hcm0gaXMgZGVmaW5lZCBiZWZvcmUgdW5kZWZpbmluZyBwb3NpeAorCitGaXhlcyBlcnJvciBsaWtlCisuLi9tYWtlLTQuMy9zcmMvam9iLmM6NTA3OjI3OiBlcnJvcjogdG9vIG1hbnkgYXJndW1lbnRzIHRvIGZ1bmN0aW9uIGNhbGwsIGV4cGVjdGVkIDAsIGhhdmUgMQorICBzaWdzZXRtYXNrIChzaWdnZXRtYXNrICgwKSAmIH5mYXRhbF9zaWduYWxfbWFzaykKKyAgICAgICAgICAgICAgfn5+fn5+fn5+fiAgXgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbWFrZWludC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2VpbnQuaCBiL3NyYy9tYWtlaW50LmgKK2luZGV4IGM0MjhhMzYuLmZhZGY5NjMgMTAwNjQ0CistLS0gYS9zcmMvbWFrZWludC5oCisrKysgYi9zcmMvbWFrZWludC5oCitAQCAtMTE1LDcgKzExNSw3IEBAIGV4dGVybiBpbnQgZXJybm87CisgI2VuZGlmCisgCisgLyogU29tZSBzeXN0ZW1zIGRlZmluZSBfUE9TSVhfVkVSU0lPTiBidXQgYXJlIG5vdCByZWFsbHkgUE9TSVguMS4gICovCistI2lmIChkZWZpbmVkIChidXR0ZXJmbHkpIHx8IGRlZmluZWQgKF9fYXJtKSB8fCAoZGVmaW5lZCAoX19taXBzKSAmJiBkZWZpbmVkIChfU1lTVFlQRV9TVlIzKSkgfHwgKGRlZmluZWQgKHNlcXVlbnQpICYmIGRlZmluZWQgKGkzODYpKSkKKysjaWYgKGRlZmluZWQgKGJ1dHRlcmZseSkgfHwgKGRlZmluZWQgKF9fYXJtKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKSB8fCAoZGVmaW5lZCAoX19taXBzKSAmJiBkZWZpbmVkIChfU1lTVFlQRV9TVlIzKSkgfHwgKGRlZmluZWQgKHNlcXVlbnQpICYmIGRlZmluZWQgKGkzODYpKSkKKyAjIHVuZGVmIFBPU0lYCisgI2VuZGlmCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtc3JjLWRpci5jLWZpeC1idWZmZXItb3ZlcmZsb3ctd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzk3MDgyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtc3JjLWRpci5jLWZpeC1idWZmZXItb3ZlcmZsb3ctd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGNkNzA5MWE3ZDg4MzA2MDA0Y2E5OGM1ZGFmY2M0MGY0NDU4OWIxMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorRGF0ZTogTW9uLCAyNCBGZWIgMjAyMCAxMDo1MjoyMSArMDEwMAorU3ViamVjdDogW1BBVENIIDEvM10gc3JjL2Rpci5jOiBmaXggYnVmZmVyLW92ZXJmbG93IHdhcm5pbmcKKworRml4IGNvbXBpbGVyIHdhcm5pbmc6CisJc3JjL2Rpci5jOjEyOTQ6Nzogd2FybmluZzogJ3N0cm5jcHknIHNwZWNpZmllZCBib3VuZCBkZXBlbmRzIG9uIHRoZQorCQkJICBsZW5ndGggb2YgdGhlIHNvdXJjZSBhcmd1bWVudCBbLVdzdHJpbmdvcC1vdmVyZmxvdz1dCisKK1RoZSBleGlzdGluZyBjb2RlIGFzc3VtZXMgYHBhdGhgIHdpbGwgbmV2ZXIgZXhjZWVkIGBNQVhQQVRITEVOYC4gQWxzbyB0aGUKK3NpemUgb2YgdGhlIGJ1ZmZlciBpcyBpbmNyZWFzZWQgYnkgMSB0byBob2xkIGEgcGF0aCB3aXRoIHRoZSBsZW5ndGggb2YKK2BNQVhQQVRITEVOYCBhbmQgdHJhaWxpbmcgYDBgLgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgKGh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Nzg4OCkKKworIHNyYy9kaXIuYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9kaXIuYyBiL3NyYy9kaXIuYworaW5kZXggODYyYTE4ZS4uY2FkNGM0YSAxMDA2NDQKKy0tLSBhL3NyYy9kaXIuYworKysrIGIvc3JjL2Rpci5jCitAQCAtMTI4OSwxMCArMTI4OSwxMCBAQCBsb2NhbF9zdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQorICAgaWYgKHBsZW4gPiAxICYmIHBhdGhbcGxlbiAtIDFdID09ICcuJworICAgICAgICYmIChwYXRoW3BsZW4gLSAyXSA9PSAnLycgfHwgcGF0aFtwbGVuIC0gMl0gPT0gJ1xcJykpCisgICAgIHsKKy0gICAgICBjaGFyIHBhcmVudFtNQVhQQVRITEVOXTsKKysgICAgICBjaGFyIHBhcmVudFtNQVhQQVRITEVOKzFdOworIAorLSAgICAgIHN0cm5jcHkgKHBhcmVudCwgcGF0aCwgcGxlbiAtIDIpOworLSAgICAgIHBhcmVudFtwbGVuIC0gMl0gPSAnXDAnOworKyAgICAgIHN0cm5jcHkgKHBhcmVudCwgcGF0aCwgTUFYUEFUSExFTik7CisrICAgICAgcGFyZW50W01JTihwbGVuIC0gMiwgTUFYUEFUSExFTildID0gJ1wwJzsKKyAgICAgICBpZiAoc3RhdCAocGFyZW50LCBidWYpIDwgMCB8fCAhX1NfSVNESVIgKGJ1Zi0+c3RfbW9kZSkpCisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5YWNkOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDk4NTg3MDJkYmQxZTEzNzI2MmMwNjc2NTkxOTkzNzY2MDg3OWY2M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotRGF0ZTogU3VuLCAyNCBTZXAgMjAxNyAwOToxMjo1OCAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZ2xvYjogRG8gbm90IGFzc3VtZSBnbGliYyBnbG9iIGludGVybmFscy4KLQotSXQgaGFzIGJlZW4gcHJvcG9zZWQgdGhhdCBnbGliYyBnbG9iIHN0YXJ0IHVzaW5nIGdsX2xzdGF0LAotd2hpY2ggdGhlIEFQSSBhbGxvd3MgaXQgdG8gZG8uICBHTlUgJ21ha2UnIHNob3VsZCBub3QgZ2V0IGluCi10aGUgd2F5IG9mIHRoaXMuICBTZWU6Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOS9tc2cwMDQwOS5odG1sCi0KLSogZGlyLmMgKGxvY2FsX2xzdGF0KTogTmV3IGZ1bmN0aW9uLCBsaWtlIGxvY2FsX3N0YXQuCi0oZGlyX3NldHVwX2dsb2IpOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBnbF9sc3RhdCB0b28sIGFzIHRoZSBBUEkKLXJlcXVpcmVzLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjRlYzg3MC4uZTg3OTAxYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzk5LDEwICszOTksOSBAQCBBQ19DQUNIRV9DSEVDSyhbaWYgc3lzdGVtIGxpYmMgaGFzIEdOVSBnbG9iXSwgW21ha2VfY3Zfc3lzX2dudV9nbG9iXSwKLSAjaW5jbHVkZSA8Z2xvYi5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi0tI2RlZmluZSBHTE9CX0lOVEVSRkFDRV9WRVJTSU9OIDEKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgZGVmaW5lZCBfX0dOVV9MSUJSQVJZX18gJiYgX19HTlVfTElCUkFSWV9fID4gMQotICMgaW5jbHVkZSA8Z251LXZlcnNpb25zLmg+Ci0tIyBpZiBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTgotK2lmIF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAxIHx8IF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAyCi0gICAgZ251IGdsb2IKLSAjIGVuZGlmCi0gI2VuZGlmXSwKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLW1vZHVsZXMtZmNudGwtYWxsb3ctYmVpbmctZGV0ZWN0ZWQtYnktaW1wb3J0aW5nLXByb2oucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDk3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZmI4YWFlZDNiMDQwZTU4OWNkODgwZmQ3MTRkZGE1ZWMwMDY4NzIxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CitEYXRlOiBNb24sIDI0IEZlYiAyMDIwIDEyOjEwOjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBtb2R1bGVzOiBmY250bDogYWxsb3cgYmVpbmcgZGV0ZWN0ZWQgYnkgaW1wb3J0aW5nCisgcHJvamVjdHMKKworR05VIHByb2plY3QgYG1ha2VgIHJlbGllcyBvbiBnbnVsaWIgYnV0IHByb3ZpZGVzIHNvbWUgb3duIGNvbXBhdGliaWxpdHkKK2Z1bmN0aW9ucyAtIGluY2x1ZGluZyBhbiBgZmNudGxgLCB3aGljaCBmYWlscyBvbiBtaW5ndy4KK1RoZSBpbnRlbnNpb24gb2YgZ251bGliIGlzIHByb3ZpZGluZyB0aGVzZSBmdW5jdGlvbnMgYW5kIGJlaW5nIHdpZGVyIHRlc3RlZCwKK2J1dCBzaWxlbnRseSBpbmplY3RpbmcgYSBmdW5jdGlvbiBvcGVucyBiYXR0bGUgb2YgY29tcGF0aWJpbGl0eSBsYXllcnMuCisKK1NvIGFkZGluZyBhIGhpbnQgaW50byB0YXJnZXQgYGNvbmZpZy5oYCB0byBhbGxvdyBkZWNpZGluZyB3aGV0aGVyIHVzaW5nCithbiBvd24gY29tcGF0aWJpbGl0eSBpbXBsZW1lbnRhdGlvbiBvciBub3QuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgbTQvZ251bGliLWNvbXAubTQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL200L2dudWxpYi1jb21wLm00IGIvbTQvZ251bGliLWNvbXAubTQKK2luZGV4IDNlZTA4MTEuLmNmNzU1NDEgMTAwNjQ0CistLS0gYS9tNC9nbnVsaWItY29tcC5tNAorKysrIGIvbTQvZ251bGliLWNvbXAubTQKK0BAIC0xNDcsNiArMTQ3LDcgQEAKKyAgIGdsX0ZVTkNfRkNOVEwKKyAgIGlmIHRlc3QgJEhBVkVfRkNOVEwgPSAwIHx8IHRlc3QgJFJFUExBQ0VfRkNOVEwgPSAxOyB0aGVuCisgICAgIEFDX0xJQk9CSihbZmNudGxdKQorKyAgICBBQ19ERUZJTkUoSEFWRV9HTlVMSUJfRkNOVEwsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjbnRsJyBmdW5jdGlvbiB2aWEgZ251bGliLl0pCisgICBmaQorICAgZ2xfRkNOVExfTU9EVUxFX0lORElDQVRPUihbZmNudGxdKQorICAgZ2xfRkNOVExfSApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItdzMyLWNvbXBhdC1kaXJlbnQuYy1mb2xsb3ctaGVhZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItdzMyLWNvbXBhdC1kaXJlbnQuYy1mb2xsb3ctaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllY2M0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA0ZGQ4YjRmNDNhYTAwNzg3MDdhZDlhNzkzMmY0ZTEzN2JjNDM4M2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IE1vbiwgMjQgRmViIDIwMjAgMTE6MTI6NDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIHczMjogY29tcGF0OiBkaXJlbnQuYzogZm9sbG93IGhlYWRlcgorCitzcmMvdzMyL2luY2x1ZGUvZGlyZW50LmggY29tcGxldGVseSBkZWxlZ2F0ZXMgdG8gbWluZ3cgZGlyZW50IGltcGxlbWVudGF0aW9uLAorZ251bGliIGRldGVjdHMgaXQgYXMgZmluZSBhbmQgY29tcGxldGVseSB1c2FibGUgLSB0cnVzdCBpbiB0aGF0LgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgKGh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Nzg4OCkKKworIHNyYy93MzIvY29tcGF0L2RpcmVudC5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdzMyL2NvbXBhdC9kaXJlbnQuYyBiL3NyYy93MzIvY29tcGF0L2RpcmVudC5jCitpbmRleCBiOGVjNjE1Li5kZTgwZjcyIDEwMDY0NAorLS0tIGEvc3JjL3czMi9jb21wYXQvZGlyZW50LmMKKysrKyBiL3NyYy93MzIvY29tcGF0L2RpcmVudC5jCitAQCAtMjMsNyArMjMsNyBAQCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSAiZGlyZW50LmgiCisgCistCisrI2lmbmRlZiBfX01JTkdXMzJfXworIERJUioKKyBvcGVuZGlyKGNvbnN0IGNoYXIqIHBEaXJOYW1lKQorIHsKK0BAIC0xOTMsMyArMTkzLDQgQEAgc2Vla2RpcihESVIqIHBEaXIsIGxvbmcgblBvc2l0aW9uKQorIAorICAgICAgICAgcmV0dXJuOworIH0KKysjZW5kaWYgIC8qICFfX01JTkdXMzJfXyAqLworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDMtcG9zaXhmY24tZmNudGwtZ251bGliLW1ha2UtZW11bGF0ZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMy1wb3NpeGZjbi1mY250bC1nbnVsaWItbWFrZS1lbXVsYXRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDQxNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDMtcG9zaXhmY24tZmNudGwtZ251bGliLW1ha2UtZW11bGF0ZWQucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSAzZDA3NGM4ZmNhNWZjZjNlNmI4M2QzMzc4OGYzNWE4ZjFiM2E0NGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IEZyaSwgMjEgRmViIDIwMjAgMTk6Mjk6NDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHBvc2l4ZmNuOiBmY250bDogZ251bGliID4gbWFrZS1lbXVsYXRlZAorCitSYXRlIHRoZSBmY250bCBlbXVsYXRpb24gZnJvbSBnbnVsaWIgaGlnaGVyIHRoYW4gdGhlIG93biBvbmUuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyAoaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzU3ODg4KQorCisgc3JjL291dHB1dC5oICAgICAgICAgICAgICB8IDE5ICsrKysrKysrKysrKysrLS0tLS0KKyBzcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jIHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvb3V0cHV0LmggYi9zcmMvb3V0cHV0LmgKK2luZGV4IGE1MDY1MDUuLmQzY2U2YjcgMTAwNjQ0CistLS0gYS9zcmMvb3V0cHV0LmgKKysrKyBiL3NyYy9vdXRwdXQuaAorQEAgLTY3LDE0ICs2NywyMSBAQCB2b2lkIG91dHB1dF9kdW1wIChzdHJ1Y3Qgb3V0cHV0ICpvdXQpOworIAorICMgaWZkZWYgV0lORE9XUzMyCisgLyogRm9yIGVtdWxhdGlvbnMgaW4gdzMyL2NvbXBhdC9wb3NpeGZjbi5jLiAgKi8KKy0jICBkZWZpbmUgRl9HRVRGRCAxCistIyAgZGVmaW5lIEZfU0VUTEtXIDIKKysjICBpZm5kZWYgRl9HRVRGRAorKyMgICBkZWZpbmUgRl9HRVRGRCAxCisrIyAgZW5kaWYKKysjICBpZm5kZWYgRl9TRVRMS1cKKysjICAgZGVmaW5lIEZfU0VUTEtXIDIKKysjICBlbmRpZgorIC8qIEltcGxlbWVudGF0aW9uIG5vdGU6IE5vbmUgb2YgdGhlIHZhbHVlcyBvZiBsX3R5cGUgYmVsb3cgY2FuIGJlIHplcm8KKyAgICAtLSB0aGV5IGFyZSBjb21wYXJlZCB3aXRoIGEgc3RhdGljIGluc3RhbmNlIG9mIHRoZSBzdHJ1Y3QsIHNvIHplcm8KKyAgICBtZWFucyB1bmtub3duL2ludmFsaWQsIHNlZSB3MzIvY29tcGF0L3Bvc2l4ZmNuLmMuICovCistIyAgZGVmaW5lIEZfV1JMQ0sgMQorLSMgIGRlZmluZSBGX1VOTENLIDIKKy0KKysjICBpZm5kZWYgRl9XUkxDSworKyMgICBkZWZpbmUgRl9XUkxDSyAxCisrIyAgZW5kaWYKKysjICBpZm5kZWYgRl9VTkxDSworKyMgICBkZWZpbmUgRl9VTkxDSyAyCisrIyAgZW5kaWYKKyBzdHJ1Y3QgZmxvY2sKKyAgIHsKKyAgICAgc2hvcnQgbF90eXBlOworQEAgLTg5LDcgKzk2LDkgQEAgc3RydWN0IGZsb2NrCisgdHlwZWRlZiBpbnRwdHJfdCBzeW5jX2hhbmRsZV90OworIAorIC8qIFB1YmxpYyBmdW5jdGlvbnMgZW11bGF0ZWQvcHJvdmlkZWQgaW4gcG9zaXhmY24uYy4gICovCisrIyAgaWZuZGVmIEhBVkVfR05VTElCX0ZDTlRMCisgaW50IGZjbnRsIChpbnRwdHJfdCBmZCwgaW50IGNtZCwgLi4uKTsKKysjICBlbmRpZgorIGludHB0cl90IGNyZWF0ZV9tdXRleCAodm9pZCk7CisgaW50IHNhbWVfc3RyZWFtIChGSUxFICpmMSwgRklMRSAqZjIpOworIAorZGlmZiAtLWdpdCBhL3NyYy93MzIvY29tcGF0L3Bvc2l4ZmNuLmMgYi9zcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jCitpbmRleCA5NzVkZmI3Li5kMzM3YjljIDEwMDY0NAorLS0tIGEvc3JjL3czMi9jb21wYXQvcG9zaXhmY24uYworKysrIGIvc3JjL3czMi9jb21wYXQvcG9zaXhmY24uYworQEAgLTI5LDYgKzI5LDcgQEAgdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAjaWZuZGVmIE5PX09VVFBVVF9TWU5DCisgLyogU3VwcG9ydCBmb3IgT1VUUFVUX1NZTkMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gICovCisgCisrI2lmbmRlZiBIQVZFX0dOVUxJQl9GQ05UTAorIC8qIEVtdWxhdGlvbiBvZiBmY250bCB0aGF0IHN1cHBvcnRzIG9ubHkgRl9HRVRGRCBhbmQgRl9TRVRMS1cuICAqLworIGludAorIGZjbnRsIChpbnRwdHJfdCBmZCwgaW50IGNtZCwgLi4uKQorQEAgLTE0Miw2ICsxNDMsNyBAQCBmY250bCAoaW50cHRyX3QgZmQsIGludCBjbWQsIC4uLikKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIH0KKysjZW5kaWYgLyogR05VTElCX1RFU1RfRkNOVEwgKi8KKyAKKyBzdGF0aWMgaW50cHRyX3QgbXV0ZXhfaGFuZGxlID0gLTE7CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTZhMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlXzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsb2IvQ09QWUlORy5MSUI7bWQ1PTRhNzcwYjY3ZTZiZTBmNjBkYTI0NGJlYjJkZTBmY2U0IgotcmVxdWlyZSBtYWtlLmluYwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1ndWlsZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1YjAxMjYxN2U3YzQ0YzBlZDQ4MjcyMTYyOTU3N2FjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2ZTI2MmJmMzYwMWI0MmQyYjFlNGVmODMxMDAyOWUxZGNmMjAwODNjNTQ0NmI0YjdhYTY3MDgxZmRmZmM1ODkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMGViNTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK3JlcXVpcmUgbWFrZS5pbmMKKworU1JDX1VSSSArPSAiXAorCWZpbGU6Ly8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoIFwKKwlmaWxlOi8vMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoIFwKKwlmaWxlOi8vMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoIFwKKwlmaWxlOi8vMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2ggXAorCWZpbGU6Ly8wMDAzLXBvc2l4ZmNuLWZjbnRsLWdudWxpYi1tYWtlLWVtdWxhdGVkLnBhdGNoIFwKKwlmaWxlOi8vMDAwMS1tYWtlaW5zdC1Eby1ub3QtdW5kZWYtUE9TSVgtb24tY2xhbmctYXJtLnBhdGNoIFwKKyIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtZ3VpbGUiCisKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDVmZGRlNDdjNWY3Y2E0NWNiNjk3ZTk3Mzg5NGZmNGY1ZDc5ZTEzYjc1MGVkNTdkN2I2NmQ4ZGVmYzc4ZTE5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCmluZGV4IDljZTMxZTUuLmU2NDQ4OGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCkBAIC0xNiwxMiArMTYsMTIgQEAKIC0tLSBhL21lc29uYnVpbGQvZW52Y29uZmlnLnB5CiArKysgYi9tZXNvbmJ1aWxkL2VudmNvbmZpZy5weQogQEAgLTE5Miw3ICsxOTIsNyBAQCBjbGFzcyBNYWNoaW5lSW5mbzoKLSAKKwogICAgICAgICAgY3B1X2ZhbWlseSA9IGxpdGVyYWxbJ2NwdV9mYW1pbHknXQogICAgICAgICAgaWYgY3B1X2ZhbWlseSBub3QgaW4ga25vd25fY3B1X2ZhbWlsaWVzOgogLSAgICAgICAgICAgIG1sb2cud2FybmluZygnVW5rbm93biBDUFUgZmFtaWx5ICVzLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzL25ldycgJSBjcHVfZmFtaWx5KQogKyAgICAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXhjZXB0aW9uKCdVbmtub3duIENQVSBmYW1pbHkgJXMsIHNlZSBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL01lc29uL1Vua25vd25DUFUgZm9yIGRpcmVjdGlvbnMuJyAlIGNwdV9mYW1pbHkpCi0gCisKICAgICAgICAgIGVuZGlhbiA9IGxpdGVyYWxbJ2VuZGlhbiddCiAgICAgICAgICBpZiBlbmRpYW4gbm90IGluICgnbGl0dGxlJywgJ2JpZycpOgogZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkgYi9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5CkBAIC0zMCwxMiArMzAsMTIgQEAKICsrKyBiL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkKIEBAIC0zNTQsOSArMzU0LDcgQEAgZGVmIGRldGVjdF9jcHVfZmFtaWx5KGNvbXBpbGVyczogQ29tcGlsZXJzRGljdCkgLT4gc3RyOgogICAgICAgICAgdHJpYWwgPSAncGFyaXNjJwotIAorCiAgICAgIGlmIHRyaWFsIG5vdCBpbiBrbm93bl9jcHVfZmFtaWxpZXM6CiAtICAgICAgICBtbG9nLndhcm5pbmcoJ1Vua25vd24gQ1BVIGZhbWlseSB7IXJ9LCBwbGVhc2UgcmVwb3J0IHRoaXMgYXQgJwogLSAgICAgICAgICAgICAgICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9pc3N1ZXMvbmV3IHdpdGggdGhlICcKIC0gICAgICAgICAgICAgICAgICAgICAnb3V0cHV0IG9mIGB1bmFtZSAtYWAgYW5kIGBjYXQgL3Byb2MvY3B1aW5mb2AnLmZvcm1hdCh0cmlhbCkpCiArICAgICAgICByYWlzZSBFbnZpcm9ubWVudEV4Y2VwdGlvbignVW5rbm93biBDUFUgZmFtaWx5ICVzLCBzZWUgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9NZXNvbi9Vbmtub3duQ1BVIGZvciBkaXJlY3Rpb25zLicgJSB0cmlhbCkKLSAKKwogICAgICByZXR1cm4gdHJpYWwKLSAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1TdXBwb3J0LWJ1aWxkaW5nLWFsbGFyY2gtcmVjaXBlcy1hZ2Fpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2gKaW5kZXggY2UxODY2MC4uZDJjM2Y4YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1TdXBwb3J0LWJ1aWxkaW5nLWFsbGFyY2gtcmVjaXBlcy1hZ2Fpbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoCkBAIC0xNyw4ICsxNyw4IEBACiAtLS0gYS9tZXNvbmJ1aWxkL2VudmNvbmZpZy5weQogKysrIGIvbWVzb25idWlsZC9lbnZjb25maWcucHkKIEBAIC0zNiw2ICszNiw3IEBAIF9UID0gdHlwaW5nLlR5cGVWYXIoJ19UJykKLSAKLSAKKworCiAga25vd25fY3B1X2ZhbWlsaWVzID0gKAogKyAgICAnYWxsYXJjaCcsCiAgICAgICdhYXJjaDY0JywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaAppbmRleCBkYzgyMmZiLi5hNWJhY2EwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoCkBAIC0yOCwyNSArMjgsMjUgQEAKIEBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgRGVwZW5kZW5jeToKICAgICAgZGVmIGdldF9leGVfYXJncyhzZWxmLCBjb21waWxlcik6CiAgICAgICAgICByZXR1cm4gW10KLSAKKwogLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgogKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgcmFpc2UgRGVwZW5kZW5jeUV4Y2VwdGlvbigneyFyfSBpcyBub3QgYSBwa2djb25maWcgZGVwZW5kZW5jeScuZm9ybWF0KHNlbGYubmFtZSkpCi0gCisKICAgICAgZGVmIGdldF9jb25maWd0b29sX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUpOgogQEAgLTI0Nyw3ICsyNDcsNyBAQCBjbGFzcyBJbnRlcm5hbERlcGVuZGVuY3koRGVwZW5kZW5jeSk6CiAgICAgICAgICBzZWxmLnNvdXJjZXMgPSBzb3VyY2VzCiAgICAgICAgICBzZWxmLmV4dF9kZXBzID0gZXh0X2RlcHMKLSAKKwogLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgogKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgcmFpc2UgRGVwZW5kZW5jeUV4Y2VwdGlvbignTWV0aG9kICJnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCkiIGlzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9yIGFuIGludGVybmFsIGRlcGVuZGVuY3knKQotIAorCiBAQCAtNjczLDE1ICs2NzMsMTggQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgogICAgICAgICAgcmV0dXJuIHMuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIHNlbGYuaXNfZm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uX3JlcXMpCi0gCisKIC0gICAgZGVmIF9jYWxsX3BrZ2Jpbl9yZWFsKHNlbGYsIGFyZ3MsIGVudik6CiAtICAgICAgICBjbWQgPSBzZWxmLnBrZ2Jpbi5nZXRfY29tbWFuZCgpICsgYXJncwogKyAgICBkZWYgX2NhbGxfcGtnYmluX3JlYWwoc2VsZiwgYXJncywgZW52LCB1c2VfbmF0aXZlPUZhbHNlKToKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgIGNhbGwgPSAnICcuam9pbihjbWQpCiAgICAgICAgICBtbG9nLmRlYnVnKCJDYWxsZWQgYHt9YCAtPiB7fVxue30iLmZvcm1hdChjYWxsLCByYywgb3V0KSkKICAgICAgICAgIHJldHVybiByYywgb3V0LCBlcnIKLSAKKwogLSAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lKToKICsgICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgdXNlX25hdGl2ZT1GYWxzZSk6CiAgICAgICAgICAjIEFsd2F5cyBjb3B5IHRoZSBlbnZpcm9ubWVudCBzaW5jZSB3ZSdyZSBnb2luZyB0byBtb2RpZnkgaXQKQEAgLTcyLDIxICs3MiwyMSBAQAogLSAgICAgICAgICAgIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXSA9IHNlbGYuX2NhbGxfcGtnYmluX3JlYWwoYXJncywgZW52KQogKyAgICAgICAgICAgIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXSA9IHNlbGYuX2NhbGxfcGtnYmluX3JlYWwoYXJncywgZW52LCB1c2VfbmF0aXZlKQogICAgICAgICAgcmV0dXJuIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXQotIAorCiAgICAgIGRlZiBfY29udmVydF9taW5nd19wYXRocyhzZWxmLCBhcmdzOiBULkxpc3Rbc3RyXSkgLT4gVC5MaXN0W3N0cl06CiBAQCAtOTA3LDcgKzkxMCw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm5hbWUsIG91dF9yYXcpKQogICAgICAgICAgc2VsZi5saW5rX2FyZ3MsIHNlbGYucmF3X2xpbmtfYXJncyA9IHNlbGYuX3NlYXJjaF9saWJzKG91dCwgb3V0X3JhdykKLSAKKwogLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgogKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgb3B0aW9ucyA9IFsnLS12YXJpYWJsZT0nICsgdmFyaWFibGVfbmFtZSwgc2VsZi5uYW1lXQotIAorCiAgICAgICAgICBpZiAnZGVmaW5lX3ZhcmlhYmxlJyBpbiBrd2FyZ3M6CiBAQCAtOTIwLDcgKzkyMyw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKLSAKKwogICAgICAgICAgICAgIG9wdGlvbnMgPSBbJy0tZGVmaW5lLXZhcmlhYmxlPScgKyAnPScuam9pbihkZWZpbml0aW9uKV0gKyBvcHRpb25zCi0gCisKIC0gICAgICAgIHJldCwgb3V0LCBlcnIgPSBzZWxmLl9jYWxsX3BrZ2JpbihvcHRpb25zKQogKyAgICAgICAgcmV0LCBvdXQsIGVyciA9IHNlbGYuX2NhbGxfcGtnYmluKG9wdGlvbnMsIHVzZV9uYXRpdmU9dXNlX25hdGl2ZSkKICAgICAgICAgIHZhcmlhYmxlID0gJycKQEAgLTEwNCw3ICsxMDQsNyBAQAogKyAgICAgICAgICAgIHByZWZpeCA9IGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZXhlY19wcmVmaXgnLCB7fSwgdXNlX25hdGl2ZT1UcnVlKQogICAgICAgICAgICAgIGlmIHByZWZpeDoKICAgICAgICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSBvcy5wYXRoLmpvaW4ocHJlZml4LCAnYmluJykKLSAKKwogQEAgLTUwOCw3ICs1MDgsNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgogICAgICAgICAgYXBwbGljYXRpb25zID0gWydtb2MnLCAndWljJywgJ3JjYycsICdsdXBkYXRlJywgJ2xyZWxlYXNlJ10KICAgICAgICAgIGZvciBhcHBsaWNhdGlvbiBpbiBhcHBsaWNhdGlvbnM6CkBAIC0xMTMsMTMgKzExMywxMyBAQAogKyAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24sIHt9LCB1c2VfbmF0aXZlPVRydWUpKQogICAgICAgICAgICAgIGV4Y2VwdCBNZXNvbkV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgcGFzcwotIAorCiBAQCAtNTE4LDcgKzUxOCw3IEBAIGNsYXNzIFF0NURlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CiAgICAgICAgICBRdEJhc2VEZXBlbmRlbmN5Ll9faW5pdF9fKHNlbGYsICdxdDUnLCBlbnYsIGt3YXJncykKLSAKKwogICAgICBkZWYgZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoc2VsZiwgY29yZSk6CiAtICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB7fSkKICsgICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9LCB1c2VfbmF0aXZlPVRydWUpCi0gCisKICAgICAgZGVmIGdldF9wcml2YXRlX2luY2x1ZGVzKHNlbGYsIG1vZF9pbmNfZGlyLCBtb2R1bGUpOgogICAgICAgICAgcmV0dXJuIF9xdF9nZXRfcHJpdmF0ZV9pbmNsdWRlcyhtb2RfaW5jX2RpciwgbW9kdWxlLCBzZWxmLnZlcnNpb24pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCmluZGV4IDBjNDAxYzguLjVmZDFjNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCkBAIC00LDcgKzQsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbW1jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmFlMzI3OTJlMjBmNGQyN2FkZTFjNWE3NjJkMTZiN2QiCiAKIFNSQ0JSQU5DSCA/PSAibWFzdGVyIgotU1JDUkVWID0gImFlZjkxM2UzMWI2NTk0NjJmZTZiOTMyMGQyNDE2NzZjYmE5N2Y2N2IiCitTUkNSRVYgPSAiNzNkNmM1OWFmOGQxYmNlZGY1ZGU0YWExZjVkNWI3Zjc2NWY1NDVmNSIKIAogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1zdGRsaWItQWRkLXN0cmxjYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1zdGRsaWItQWRkLXN0cmxjYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0ZmQzMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLXN0ZGxpYi1BZGQtc3RybGNhdC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSA4YTIwNDE3MTAwNGZhMGQ3ZDIxMzg5NTMwYzc0NGQyMTVlOTllZmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxMjo0NzozMCAtMDYwMAorU3ViamVjdDogW1BBVENIIDEvMl0gc3RkbGliOiBBZGQgc3RybGNhdAorCitBZGRzIHN0cmxjYXQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2FmZWx5IGNvbmNhdGVuYXRlIHN0cmluZ3MKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEubmFzbS51cy9zaG93X2J1Zy5jZ2k/aWQ9MzM5MjYzNV0KK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgICB8ICAyICstCisgY29uZmlndXJlLmFjICAgICAgIHwgIDIgKysKKyBpbmNsdWRlL2NvbXBpbGVyLmggfCAgNCArKysrCisgc3RkbGliL3N0cmxjYXQuYyAgIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzdGRsaWIvc3RybGNhdC5jCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAzMmVmM2Q5MS4uZmY3ZWI0NDcgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC05Myw3ICs5Myw3IEBAIE5BU00gPQlhc20vbmFzbS4kKE8pCisgTkRJU0FTTSA9IGRpc2FzbS9uZGlzYXNtLiQoTykKKyAKKyBMSUJPQkogPSBzdGRsaWIvc25wcmludGYuJChPKSBzdGRsaWIvdnNucHJpbnRmLiQoTykgc3RkbGliL3N0cmxjcHkuJChPKSBcCistCXN0ZGxpYi9zdHJubGVuLiQoTykgc3RkbGliL3N0cnJjaHJudWwuJChPKSBcCisrCXN0ZGxpYi9zdHJubGVuLiQoTykgc3RkbGliL3N0cnJjaHJudWwuJChPKSBzdGRsaWIvc3RybGNhdC4kKE8pIFwKKyAJXAorIAluYXNtbGliL3Zlci4kKE8pIFwKKyAJbmFzbWxpYi9jcmM2NC4kKE8pIG5hc21saWIvbWFsbG9jLiQoTykgbmFzbWxpYi9lcnJmaWxlLiQoTykgXAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzhiM2I1OTYuLmI0ZTg4Nzc4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNTIsNiArMTUyLDcgQEAgQUNfQ0hFQ0tfRlVOQ1MoW3ZzbnByaW50ZiBfdnNucHJpbnRmXSkKKyBBQ19DSEVDS19GVU5DUyhbc25wcmludGYgX3NucHJpbnRmXSkKKyBBQ19DSEVDS19GVU5DUyhbc3RybGNweV0pCisgQUNfQ0hFQ0tfRlVOQ1MoW3N0cnJjaHJudWxdKQorK0FDX0NIRUNLX0ZVTkNTKFtzdHJsY2F0XSkKKyAKKyBkbmwgVGhlc2UgdHlwZXMgYXJlIFBPU0lYLXNwZWNpZmljLCBhbmQgV2luZG93cyBkb2VzIGl0IGRpZmZlcmVudGx5Li4uCisgQUNfQ0hFQ0tfVFlQRVMoW3N0cnVjdCBfc3RhdGk2NF0pCitAQCAtMTcwLDYgKzE3MSw3IEBAIEFDX0NIRUNLX0RFQ0xTKHN0cnNlcCkKKyBBQ19DSEVDS19ERUNMUyhzdHJsY3B5KQorIEFDX0NIRUNLX0RFQ0xTKHN0cm5sZW4pCisgQUNfQ0hFQ0tfREVDTFMoc3RycmNocm51bCkKKytBQ19DSEVDS19ERUNMUyhzdHJsY2F0KQorIAorIGRubCBDaGVjayBmb3IgbWlzc2luZyB0eXBlcworIEFDX1RZUEVfVUlOVFBUUl9UCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21waWxlci5oIGIvaW5jbHVkZS9jb21waWxlci5oCitpbmRleCA0MTc4Yzk4ZS4uODE1M2QyOTcgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2NvbXBpbGVyLmgKKysrKyBiL2luY2x1ZGUvY29tcGlsZXIuaAorQEAgLTE1OSw2ICsxNTksMTAgQEAgc2l6ZV90IHN0cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CisgY2hhciAqc3RycmNocm51bChjb25zdCBjaGFyICosIGludCk7CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKEhBVkVfU1RSTENBVCkgfHwgIUhBVkVfREVDTF9TVFJMQ0FUCisrc2l6ZV90IHN0cmxjYXQoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CisrI2VuZGlmCisrCisgI2lmbmRlZiBfX2NwbHVzcGx1cwkJLyogQysrIGhhcyBmYWxzZSwgdHJ1ZSwgYm9vbCBhcyBrZXl3b3JkcyAqLworICMgaWZkZWYgSEFWRV9TVERCT09MX0gKKyAjICBpbmNsdWRlIDxzdGRib29sLmg+CitkaWZmIC0tZ2l0IGEvc3RkbGliL3N0cmxjYXQuYyBiL3N0ZGxpYi9zdHJsY2F0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uNzA4NGQ0NjAKKy0tLSAvZGV2L251bGwKKysrKyBiL3N0ZGxpYi9zdHJsY2F0LmMKK0BAIC0wLDAgKzEsNDMgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMjAxOSBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCisrICoKKysgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKysgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisrICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUworKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKysgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUgorKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKysgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KKysgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRgorKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisrICovCisrCisrI2luY2x1ZGUgImNvbXBpbGVyLmgiCisrCisrLyoKKysgKiBDb25jYXRlbmF0ZSBzcmMgc3RyaW5nIHRvIGRlc3Qgb2Ygc2l6ZSBzaXplLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIHdpbGwKKysgKiBoYXZlIG5vIG1vcmUgdGhhbiBzaXplLTEgY2hhcmFjdGVyIHdoZW4gdGhlIG9wZXJhdGlvbiBmaW5pc2hlcy4gQWx3YXlzIE5VTAorKyAqIHRlcm1pbmF0ZXMsIHVubGVzcyBzaXplID09IDAgb3IgZGVzdCBoYXMgbm8gTlVMIHRlcm1pbmF0b3IuIFJldHVybnMKKysgKiBzdHJsZW4oaW5pdGlhbCBkZXN0KSArIHN0cmxlbihzcmMpOyBpZiByZXR2YWwgPj0gc2l6ZSwgdHJ1bmNhdGlvbiBvY2N1cnJlZC4KKysgKi8KKysjaWZuZGVmIEhBVkVfU1RSTENBVAorKworK3NpemVfdCBzdHJsY2F0KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCisreworKyAgICBzaXplX3QgbjsKKysKKysgICAgLyogZmluZCB0aGUgTlVMTCB0ZXJtaW5hdG9yIGluIGRlc3QgKi8KKysgICAgZm9yIChuID0gMDsgaSA8IHNpemUgJiYgZGVzdFtuXSAhPSAnXDAnOyBuKyspCisrICAgICAgICA7CisrCisrICAgIC8qIGRlc3RpbmF0aW9uIHdhcyBub3QgTlVMTCB0ZXJtaW5hdGVkLiBSZXR1cm4gdGhlIGluaXRpYWwgc2l6ZSAqLworKyAgICBpZiAobiA9PSBzaXplKQorKyAgICAgICAgcmV0dXJuIHNpemU7CisrCisrICAgIHJldHVybiBzdHJsY3B5KCZkZXN0W25dLCBzcmMsIHNpemUgLSBuKSArIG47CisrfQorKworKyNlbmRpZgorKworLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDItQWRkLWRlYnVnLXByZWZpeC1tYXAtb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDItQWRkLWRlYnVnLXByZWZpeC1tYXAtb3B0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZmFlMmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMi1BZGQtZGVidWctcHJlZml4LW1hcC1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMjUgQEAKK0Zyb20gZmE2NzdjMWNhZjZiODE5Mjk3MTkyMGNmNWMxYWE4Y2IzM2M3NDYwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMTM6MTI6MTcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEFkZCAtLWRlYnVnLXByZWZpeC1tYXAgb3B0aW9uCisKK0FkZHMgYW4gb3B0aW9uIHRvIHJlbWFwIGZpbGUgcHJlZml4ZXMgaW4gb3V0cHV0IG9iamVjdCBmaWxlcy4gVGhpcyBpcworYW5hbG9nb3VzIHRvIHRoZSAiLWZkZWJ1Zy1wcmVmaXgtbWFwIiBvcHRpb24gaW4gR0NDLCBhbmQgYWxsb3dzIGZpbGVzIHRvCitiZSBidWlsdCBpbiBhIHJlcHJvZHVjaWJsZSBtYW5uZXIgcmVnYXJkbGVzcyBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5uYXNtLnVzL3Nob3dfYnVnLmNnaT9pZD0zMzkyNjM1XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgYXNtL25hc20uYyAgICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgaW5jbHVkZS9uYXNtbGliLmggICAgICAgfCAgOSArKysrKysrKysKKyBuYXNtLnR4dCAgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBuYXNtbGliL2ZpbGVuYW1lLmMgICAgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgb3V0cHV0L291dGFzODYuYyAgICAgICAgfCAgNCArKystCisgb3V0cHV0L291dGNvZmYuYyAgICAgICAgfCAgNCArKy0tCisgb3V0cHV0L291dGVsZi5jICAgICAgICAgfCAgOCArKysrLS0tLQorIG91dHB1dC9vdXRpZWVlLmMgICAgICAgIHwgIDIgKy0KKyBvdXRwdXQvb3V0b2JqLmMgICAgICAgICB8ICAyICstCisgc3RkbGliL3N0cmxjYXQuYyAgICAgICAgfCAgMiArLQorIHRlc3QvZWxmZGVidWdwcmVmaXguYXNtIHwgIDYgKysrKysrCisgdGVzdC9wZXJmb3JtdGVzdC5wbCAgICAgfCAxMiArKysrKysrKysrLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20KKworZGlmZiAtLWdpdCBhL2FzbS9uYXNtLmMgYi9hc20vbmFzbS5jCitpbmRleCAxYzVhNWZjNS4uNWQ0NTEwM2MgMTAwNjQ0CistLS0gYS9hc20vbmFzbS5jCisrKysgYi9hc20vbmFzbS5jCitAQCAtODQxLDcgKzg0MSw4IEBAIGVudW0gdGV4dF9vcHRpb25zIHsKKyAgICAgT1BUX0JFRk9SRSwKKyAgICAgT1BUX0xJTUlULAorICAgICBPUFRfS0VFUF9BTEwsCistICAgIE9QVF9OT19MSU5FCisrICAgIE9QVF9OT19MSU5FLAorKyAgICBPUFRfREVCVUdfUFJFRklYX01BUAorIH07Cisgc3RydWN0IHRleHRhcmdzIHsKKyAgICAgY29uc3QgY2hhciAqbGFiZWw7CitAQCAtODY2LDYgKzg2Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGV4dGFyZ3MgdGV4dG9wdHNbXSA9IHsKKyAgICAgeyJsaW1pdC0iLCAgIE9QVF9MSU1JVCwgICB0cnVlLCAwfSwKKyAgICAgeyJrZWVwLWFsbCIsIE9QVF9LRUVQX0FMTCwgZmFsc2UsIDB9LAorICAgICB7Im5vLWxpbmUiLCAgT1BUX05PX0xJTkUsIGZhbHNlLCAwfSwKKysgICAgeyJkZWJ1Zy1wcmVmaXgtbWFwIiwgT1BUX0RFQlVHX1BSRUZJWF9NQVAsIHRydWUsIDB9LAorICAgICB7TlVMTCwgT1BUX0JPR1VTLCBmYWxzZSwgMH0KKyB9OworIAorQEAgLTEyMTcsNiArMTIxOSwyNiBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzX2FyZyhjaGFyICpwLCBjaGFyICpxLCBpbnQgcGFzcykKKyAgICAgICAgICAgICAgICAgY2FzZSBPUFRfTk9fTElORToKKyAgICAgICAgICAgICAgICAgICAgIHBwX25vbGluZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgY2FzZSBPUFRfREVCVUdfUFJFRklYX01BUDogeworKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpkOworKyAgICAgICAgICAgICAgICAgICAgY2hhciAqYzsKKysgICAgICAgICAgICAgICAgICAgIGMgPSBzdHJjaHIocGFyYW0sICc9Jyk7CisrCisrICAgICAgICAgICAgICAgICAgICBpZiAoIWMpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBuYXNtX2Vycm9yKEVSUl9OT05GQVRBTCB8IEVSUl9OT0ZJTEUgfCBFUlJfVVNBR0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uIGAtLSVzJyBtdXN0IGJlIG9mIHRoZSBmb3JtIGBCQVNFPURFU1QnIiwgcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgICAgICAqYyA9ICdcMCc7CisrICAgICAgICAgICAgICAgICAgICBkID0gbmFzbV9tYWxsb2Moc2l6ZW9mKCpkKSk7CisrICAgICAgICAgICAgICAgICAgICBkLT5uZXh0ID0gZGVidWdfcHJlZml4ZXM7CisrICAgICAgICAgICAgICAgICAgICBkLT5iYXNlID0gbmFzbV9zdHJkdXAocGFyYW0pOworKyAgICAgICAgICAgICAgICAgICAgZC0+ZGVzdCA9IG5hc21fc3RyZHVwKGMgKyAxKTsKKysgICAgICAgICAgICAgICAgICAgIGRlYnVnX3ByZWZpeGVzID0gZDsKKysgICAgICAgICAgICAgICAgICAgICpjID0gJz0nOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIGNhc2UgT1BUX0hFTFA6CisgICAgICAgICAgICAgICAgICAgICBoZWxwKDApOworICAgICAgICAgICAgICAgICAgICAgZXhpdCgwKTsKK0BAIC0yMDEwLDcgKzIwMzIsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNvbnN0IGNoYXIgeG9wdCkKKyAgICAgICAgICAiICAgLS1scG9zdGZpeCBzdHIgYXBwZW5kIHRoZSBnaXZlbiBzdHJpbmcgdG8gYWxsIG90aGVyIHN5bWJvbHNcbiIKKyAgICAgICAgICAiICAgLS1rZWVwLWFsbCAgICAgb3V0cHV0IGZpbGVzIHdpbGwgbm90IGJlIHJlbW92ZWQgZXZlbiBpZiBhbiBlcnJvciBoYXBwZW5zXG4iCisgICAgICAgICAgIiAgIC0tbm8tbGluZSAgICAgIGlnbm9yZSAlJWxpbmUgZGlyZWN0aXZlcyBpbiBpbnB1dFxuIgorLSAgICAgICAgICIgICAtLWxpbWl0LVggdmFsICBzZXQgZXhlY3V0aW9uIGxpbWl0IFhcbiIpOworKyAgICAgICAgICIgICAtLWxpbWl0LVggdmFsICBzZXQgZXhlY3V0aW9uIGxpbWl0IFhcbiIKKysgICAgICAgICAiICAgLS1kZWJ1Zy1wcmVmaXgtbWFwIGJhc2U9ZGVzdFxuIgorKyAgICAgICAgICIgICAgICAgICAgICAgICAgICByZW1hcCBwYXRocyBzdGFydGluZyB3aXRoICdiYXNlJyB0byAnZGVzdCcgaW4gb3V0cHV0IGZpbGVzXG4iKTsKKyAKKyAgICAgZm9yIChpID0gMDsgaSA8PSBMSU1JVF9NQVg7IGkrKykgeworICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgICAgICAgICAgICAlLTE1cyAlcyAoZGVmYXVsdCAiLAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmFzbWxpYi5oIGIvaW5jbHVkZS9uYXNtbGliLmgKK2luZGV4IGU1N2QwZTZkLi5jZjkyMTU0NyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbmFzbWxpYi5oCisrKysgYi9pbmNsdWRlL25hc21saWIuaAorQEAgLTE5NSwxMCArMTk1LDE5IEBAIGludDY0X3QgcmVhZHN0cm51bShjaGFyICpzdHIsIGludCBsZW5ndGgsIGJvb2wgKndhcm4pOworICAqLworIGludDMyX3Qgc2VnX2FsbG9jKHZvaWQpOworIAorK3N0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCB7CisrICAgIHN0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCAqbmV4dDsKKysgICAgY2hhciAqYmFzZTsKKysgICAgY2hhciAqZGVzdDsKKyt9OworKworK2V4dGVybiBzdHJ1Y3QgZGVidWdfcHJlZml4X2xpc3QgKmRlYnVnX3ByZWZpeGVzOworKworIC8qCisgICogQWRkL3JlcGxhY2Ugb3IgcmVtb3ZlIGFuIGV4dGVuc2lvbiB0byB0aGUgZW5kIG9mIGEgZmlsZW5hbWUKKyAgKi8KKyBjb25zdCBjaGFyICpmaWxlbmFtZV9zZXRfZXh0ZW5zaW9uKGNvbnN0IGNoYXIgKmlubmFtZSwgY29uc3QgY2hhciAqZXh0ZW5zaW9uKTsKKytjaGFyICpmaWxlbmFtZV9kZWJ1Z19yZW1hcChjaGFyICpkZXN0LCBjaGFyIGNvbnN0ICppbm5hbWUsIHNpemVfdCBsZW4pOworIAorIC8qCisgICogVXRpbGl0eSBtYWNyb3MuLi4KK2RpZmYgLS1naXQgYS9uYXNtLnR4dCBiL25hc20udHh0CitpbmRleCBhMjgyMDJmOS4uNDQzYzA2YjIgMTAwNjQ0CistLS0gYS9uYXNtLnR4dAorKysrIGIvbmFzbS50eHQKK0BAIC0xNDcsNiArMTQ3LDEwIEBAIE9QVElPTlMKKyAJUHJlcGVuZCBvciBhcHBlbmQgKHJlc3BlY3RpdmVseSkgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFsbCBnbG9iYWwgb3IKKyAJZXh0ZXJuIHZhcmlhYmxlcy4KKyAKKystLWRlYnVnLXByZWZpeC1tYXAgJ0JBU0U9REVTVCc6OgorKyAgICBNYXAgZmlsZSBuYW1lcyBiZWdpbm5pbmcgd2l0aCAnQkFTRScgdG8gJ0RFU1QnIHdoZW4gZW5jb2RpbmcgdGhlbSBpbgorKyAgICBvdXRwdXQgb2JqZWN0IGZpbGVzLgorKworIFNZTlRBWAorIC0tLS0tLQorIFRoaXMgbWFuIHBhZ2UgZG9lcyBub3QgZnVsbHkgZGVzY3JpYmUgdGhlIHN5bnRheCBvZiAqbmFzbSoncyBhc3NlbWJseSBsYW5ndWFnZSwKK2RpZmYgLS1naXQgYS9uYXNtbGliL2ZpbGVuYW1lLmMgYi9uYXNtbGliL2ZpbGVuYW1lLmMKK2luZGV4IDE3MmFlMGJjLi5mZGEyYmU0MSAxMDA2NDQKKy0tLSBhL25hc21saWIvZmlsZW5hbWUuYworKysrIGIvbmFzbWxpYi9maWxlbmFtZS5jCitAQCAtMzksNiArMzksOCBAQAorICNpbmNsdWRlICJuYXNtbGliLmgiCisgI2luY2x1ZGUgImVycm9yLmgiCisgCisrc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpkZWJ1Z19wcmVmaXhlcyA9IE5VTEw7CisrCisgLyoKKyAgKiBBZGQvbW9kaWZ5IGEgZmlsZW5hbWUgZXh0ZW5zaW9uLCBhc3N1bWVkIHRvIGJlIGEgcGVyaW9kLWRlbGltaXRlZAorICAqIGZpZWxkIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgZmlsZW5hbWUuICBSZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkCitAQCAtNjEsMyArNjMsMjEgQEAgY29uc3QgY2hhciAqZmlsZW5hbWVfc2V0X2V4dGVuc2lvbihjb25zdCBjaGFyICppbm5hbWUsIGNvbnN0IGNoYXIgKmV4dGVuc2lvbikKKyAKKyAgICAgcmV0dXJuIHA7CisgfQorKworK2NoYXIgKmZpbGVuYW1lX2RlYnVnX3JlbWFwKGNoYXIgKmRlc3QsIGNoYXIgY29uc3QgKmluLCBzaXplX3QgbGVuKQorK3sKKysgICAgc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpkOworKyAgICBzaXplX3QgbjsKKysKKysgICAgZm9yIChkID0gZGVidWdfcHJlZml4ZXM7IGQgIT0gTlVMTDsgZCA9IGQtPm5leHQpIHsKKysgICAgICAgIG4gPSBzdHJsZW4oZC0+YmFzZSk7CisrICAgICAgICBpZiAoc3RybmNtcChpbiwgZC0+YmFzZSwgbikgPT0gMCkgeworKyAgICAgICAgICAgIHN0cmxjcHkoZGVzdCwgZC0+ZGVzdCwgbGVuKTsKKysgICAgICAgICAgICBzdHJsY2F0KGRlc3QsICZpbltuXSwgbGVuKTsKKysgICAgICAgICAgICByZXR1cm4gZGVzdDsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBzdHJsY3B5KGRlc3QsIGluLCBsZW4pOworKyAgICByZXR1cm4gZGVzdDsKKyt9CitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dGFzODYuYyBiL291dHB1dC9vdXRhczg2LmMKK2luZGV4IDNmOTg2N2I5Li5kNWY0Zjk2NiAxMDA2NDQKKy0tLSBhL291dHB1dC9vdXRhczg2LmMKKysrKyBiL291dHB1dC9vdXRhczg2LmMKK0BAIC0xMTMsNiArMTEzLDggQEAgc3RhdGljIHZvaWQgYXM4Nl9zZWN0X3dyaXRlKHN0cnVjdCBTZWN0aW9uICosIGNvbnN0IHVpbnQ4X3QgKiwKKyAKKyBzdGF0aWMgdm9pZCBhczg2X2luaXQodm9pZCkKKyB7CisrICAgIGNoYXIgZmlsZW5hbWVbRklMRU5BTUVfTUFYXTsKKysKKyAgICAgc3RleHQuZGF0YSA9IHNhYV9pbml0KDFMKTsKKyAgICAgc3RleHQuZGF0YWxlbiA9IDBMOworICAgICBzdGV4dC5oZWFkID0gc3RleHQubGFzdCA9IE5VTEw7CitAQCAtMTM0LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIGFzODZfaW5pdCh2b2lkKQorICAgICBzdHJzbGVuID0gMDsKKyAKKyAgICAgLyogYXM4NiBtb2R1bGUgbmFtZSA9IGlucHV0IGZpbGUgbWludXMgZXh0ZW5zaW9uICovCistICAgIGFzODZfYWRkX3N0cmluZyhmaWxlbmFtZV9zZXRfZXh0ZW5zaW9uKGlubmFtZSwgIiIpKTsKKysgICAgYXM4Nl9hZGRfc3RyaW5nKGZpbGVuYW1lX2RlYnVnX3JlbWFwKGZpbGVuYW1lLCBmaWxlbmFtZV9zZXRfZXh0ZW5zaW9uKGlubmFtZSwgIiIpLCBzaXplb2YoZmlsZW5hbWUpKSk7CisgfQorIAorIHN0YXRpYyB2b2lkIGFzODZfY2xlYW51cCh2b2lkKQorZGlmZiAtLWdpdCBhL291dHB1dC9vdXRjb2ZmLmMgYi9vdXRwdXQvb3V0Y29mZi5jCitpbmRleCBhMmZkMzAyYy4uYmNmNTc2ZmIgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0Y29mZi5jCisrKysgYi9vdXRwdXQvb3V0Y29mZi5jCitAQCAtMTA3MCwxNCArMTA3MCwxNCBAQCBzdGF0aWMgdm9pZCBjb2ZmX3N5bWJvbChjaGFyICpuYW1lLCBpbnQzMl90IHN0cnBvcywgaW50MzJfdCB2YWx1ZSwKKyAKKyBzdGF0aWMgdm9pZCBjb2ZmX3dyaXRlX3N5bWJvbHModm9pZCkKKyB7CistICAgIGNoYXIgZmlsZW5hbWVbMThdOworKyAgICBjaGFyIGZpbGVuYW1lWzE5XTsKKyAgICAgdWludDMyX3QgaTsKKyAKKyAgICAgLyoKKyAgICAgICogVGhlIGAuZmlsZScgcmVjb3JkLCBhbmQgdGhlIGZpbGUgbmFtZSBhdXhpbGlhcnkgcmVjb3JkLgorICAgICAgKi8KKyAgICAgY29mZl9zeW1ib2woIi5maWxlIiwgMEwsIDBMLCAtMiwgMCwgMHg2NywgMSk7CistICAgIHN0cm5jcHkoZmlsZW5hbWUsIGlubmFtZSwgMTgpOworKyAgICBmaWxlbmFtZV9kZWJ1Z19yZW1hcChmaWxlbmFtZSwgaW5uYW1lLCAxOSk7CisgICAgIG5hc21fd3JpdGUoZmlsZW5hbWUsIDE4LCBvZmlsZSk7CisgCisgICAgIC8qCitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dGVsZi5jIGIvb3V0cHV0L291dGVsZi5jCitpbmRleCBkZTk5ZDA3Ni4uMjAzYjVkYzAgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0ZWxmLmMKKysrKyBiL291dHB1dC9vdXRlbGYuYworQEAgLTEsNSArMSw1IEBACisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgorLSAqICAgCisrICoKKyAgKiAgIENvcHlyaWdodCAxOTk2LTIwMTcgVGhlIE5BU00gQXV0aG9ycyAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAgKiAgIFNlZSB0aGUgZmlsZSBBVVRIT1JTIGluY2x1ZGVkIHdpdGggdGhlIE5BU00gZGlzdHJpYnV0aW9uIGZvcgorICAqICAgdGhlIHNwZWNpZmljIGNvcHlyaWdodCBob2xkZXJzLgorQEAgLTE0LDcgKzE0LDcgQEAKKyAgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAgKiAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgICogICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy0gKiAgICAgCisrICoKKyAgKiAgICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5ECisgICogICAgIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgICogICAgIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitAQCAtMzE1LDcgKzMxNSw3IEBAIGVsZl9kaXJlY3RpdmUoZW51bSBkaXJlY3RpdmUgZGlyZWN0aXZlLCBjaGFyICp2YWx1ZSwgaW50IHBhc3MpCisgCisgc3RhdGljIHZvaWQgZWxmX2luaXQodm9pZCkKKyB7CistICAgIHN0cmxjcHkoZWxmX21vZHVsZSwgaW5uYW1lLCBzaXplb2YoZWxmX21vZHVsZSkpOworKyAgICBmaWxlbmFtZV9kZWJ1Z19yZW1hcChlbGZfbW9kdWxlLCBpbm5hbWUsIHNpemVvZihlbGZfbW9kdWxlKSk7CisgICAgIHNlY3RzID0gTlVMTDsKKyAgICAgbnNlY3RzID0gc2VjdGxlbiA9IDA7CisgICAgIHN5bXMgPSBzYWFfaW5pdCgoaW50MzJfdClzaXplb2Yoc3RydWN0IGVsZl9zeW1ib2wpKTsKK0BAIC04NjgsNyArODY4LDcgQEAgc3RhdGljIHZvaWQgZWxmMzJfb3V0KGludDMyX3Qgc2VndG8sIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICIgc2VnbWVudCBiYXNlIHJlZmVyZW5jZXMiKTsKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBpZiAod3J0ID09IE5PX1NFRykgeworLSAgICAgICAgICAgICAgICAgICAgLyogCisrICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICogVGhlIGlmKCkgaXMgYSBoYWNrIHRvIGRlYWwgd2l0aCBjb21waWxlcnMgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAqIGRvbid0IGhhbmRsZSBzd2l0Y2goKSBzdGF0ZW1lbnRzIHdpdGggNjQtYml0CisgICAgICAgICAgICAgICAgICAgICAgKiBleHByZXNzaW9ucy4KK2RpZmYgLS1naXQgYS9vdXRwdXQvb3V0aWVlZS5jIGIvb3V0cHV0L291dGllZWUuYworaW5kZXggM2EyODk0MmQuLmY2MTgyNGU0IDEwMDY0NAorLS0tIGEvb3V0cHV0L291dGllZWUuYworKysrIGIvb3V0cHV0L291dGllZWUuYworQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgdm9pZCBpZWVlX3VucXVhbGlmaWVkX25hbWUoY2hhciAqLCBjaGFyICopOworICAqLworIHN0YXRpYyB2b2lkIGllZWVfaW5pdCh2b2lkKQorIHsKKy0gICAgc3RybGNweShpZWVlX2luZmlsZSwgaW5uYW1lLCBzaXplb2YoaWVlZV9pbmZpbGUpKTsKKysgICAgZmlsZW5hbWVfZGVidWdfcmVtYXAoaWVlZV9pbmZpbGUsIGlubmFtZSwgc2l6ZW9mKGllZWVfaW5maWxlKSk7CisgICAgIGFueV9zZWdzID0gZmFsc2U7CisgICAgIGZwdWJoZWFkID0gTlVMTDsKKyAgICAgZnB1YnRhaWwgPSAmZnB1YmhlYWQ7CitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dG9iai5jIGIvb3V0cHV0L291dG9iai5jCitpbmRleCBiNGYyYzQ5OS4uNTViYmE0YTEgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0b2JqLmMKKysrKyBiL291dHB1dC9vdXRvYmouYworQEAgLTY0MCw3ICs2NDAsNyBAQCBzdGF0aWMgZW51bSBkaXJlY3RpdmVfcmVzdWx0IG9ial9kaXJlY3RpdmUoZW51bSBkaXJlY3RpdmUsIGNoYXIgKiwgaW50KTsKKyAKKyBzdGF0aWMgdm9pZCBvYmpfaW5pdCh2b2lkKQorIHsKKy0gICAgc3RybGNweShvYmpfaW5maWxlLCBpbm5hbWUsIHNpemVvZihvYmpfaW5maWxlKSk7CisrICAgIGZpbGVuYW1lX2RlYnVnX3JlbWFwKG9ial9pbmZpbGUsIGlubmFtZSwgc2l6ZW9mKG9ial9pbmZpbGUpKTsKKyAgICAgZmlyc3Rfc2VnID0gc2VnX2FsbG9jKCk7CisgICAgIGFueV9zZWdzID0gZmFsc2U7CisgICAgIGZwdWJoZWFkID0gTlVMTDsKK2RpZmYgLS1naXQgYS9zdGRsaWIvc3RybGNhdC5jIGIvc3RkbGliL3N0cmxjYXQuYworaW5kZXggNzA4NGQ0NjAuLmVlOTNkZWEzIDEwMDY0NAorLS0tIGEvc3RkbGliL3N0cmxjYXQuYworKysrIGIvc3RkbGliL3N0cmxjYXQuYworQEAgLTI5LDcgKzI5LDcgQEAgc2l6ZV90IHN0cmxjYXQoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSkKKyAgICAgc2l6ZV90IG47CisgCisgICAgIC8qIGZpbmQgdGhlIE5VTEwgdGVybWluYXRvciBpbiBkZXN0ICovCistICAgIGZvciAobiA9IDA7IGkgPCBzaXplICYmIGRlc3Rbbl0gIT0gJ1wwJzsgbisrKQorKyAgICBmb3IgKG4gPSAwOyBuIDwgc2l6ZSAmJiBkZXN0W25dICE9ICdcMCc7IG4rKykKKyAgICAgICAgIDsKKyAKKyAgICAgLyogZGVzdGluYXRpb24gd2FzIG5vdCBOVUxMIHRlcm1pbmF0ZWQuIFJldHVybiB0aGUgaW5pdGlhbCBzaXplICovCitkaWZmIC0tZ2l0IGEvdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20gYi90ZXN0L2VsZmRlYnVncHJlZml4LmFzbQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5hNjdiYTI5YworLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20KK0BAIC0wLDAgKzEsNiBAQAorKztUZXN0bmFtZT11bm9wdGltaXplZDsgQXJndW1lbnRzPS1PMCAtLWRlYnVnLXByZWZpeC1tYXAgZWxmPUVMRiAtZmVsZiAtb2VsZmRlYnVncHJlZml4Lm87IEZpbGVzPXN0ZG91dCBzdGRlcnIgZWxmZGVidWdwcmVmaXgubzsgVmFsaWRhdGU9cmVhZGVsZiAtLXdpZGUgLS1zeW1ib2xzIGVsZmRlYnVncHJlZml4Lm8gfCBncmVwICdGSUxFLipFTEZkZWJ1Z3ByZWZpeC5hc20nCisrCisrCSAgU0VDVElPTiAudGV4dAorK3Rlc3Q6CQkJOyBbMV0KKysJICByZXQKKysKK2RpZmYgLS1naXQgYS90ZXN0L3BlcmZvcm10ZXN0LnBsIGIvdGVzdC9wZXJmb3JtdGVzdC5wbAoraW5kZXggZjc4NjViMzkuLjA5NmY5NjA0IDEwMDc1NQorLS0tIGEvdGVzdC9wZXJmb3JtdGVzdC5wbAorKysrIGIvdGVzdC9wZXJmb3JtdGVzdC5wbAorQEAgLTQyLDE0ICs0MiwyMiBAQCBzdWIgcGVyZm9ybSB7CisgICAgIFRFU1Q6CisgICAgIHdoaWxlKDxURVNURklMRT4pIHsKKyAgICAgICAgICNTZWUgaWYgdGhlcmUgaXMgYSB0ZXN0IGNhc2UKKy0gICAgICAgIGxhc3QgdW5sZXNzIC9UZXN0bmFtZT0oLiopO1xzKkFyZ3VtZW50cz0oLiopO1xzKkZpbGVzPSguKikvOworLSAgICAgICAgbXkgKCRzdWJuYW1lLCAkYXJndW1lbnRzLCAkZmlsZXMpID0gKCQxLCAkMiwgJDMpOworKyAgICAgICAgbGFzdCB1bmxlc3MgL1Rlc3RuYW1lPSguKik7XHMqQXJndW1lbnRzPSguKik7XHMqRmlsZXM9KFteO10qKSg/OjtccypWYWxpZGF0ZT0oLiopKT8vOworKyAgICAgICAgbXkgKCRzdWJuYW1lLCAkYXJndW1lbnRzLCAkZmlsZXMsICR2YWxpZGF0ZSkgPSAoJDEsICQyLCAkMywgJDQpOworKyAgICAgICAgY2hvbXAgJGZpbGVzOworICAgICAgICAgZGVidWdwcmludCgiJHN1Ym5hbWUgfCAkYXJndW1lbnRzIHwgJGZpbGVzIik7CisgCisgICAgICAgICAjQ2FsbCBuYXNtIHdpdGggdGhpcyB0ZXN0IGNhc2UKKyAgICAgICAgIHN5c3RlbSgiJG5hc20gJGFyZ3VtZW50cyAkdGVzdHBhdGggPiAkc3Rkb3V0ZmlsZSAyPiAkc3RkZXJyZmlsZSIpOworICAgICAgICAgZGVidWdwcmludCgiJG5hc20gJGFyZ3VtZW50cyAkdGVzdHBhdGggPiAkc3Rkb3V0ZmlsZSAyPiAkc3RkZXJyZmlsZSAtLS0tPiAkPyIpOworIAorKyAgICAgICAgaWYoJHZhbGlkYXRlKSB7CisrICAgICAgICAgICAgaWYoc3lzdGVtKCIkdmFsaWRhdGUgPj4gJHN0ZG91dGZpbGUgMj4+ICRzdGRlcnJmaWxlIikgIT0gMCkgeworKyAgICAgICAgICAgICAgICBwcmludCAiVGVzdCAkdGVzdG5hbWUvJHN1Ym5hbWUgdmFsaWRhdGlvbiBmYWlsZWRcbiI7CisrICAgICAgICAgICAgICAgICRnbG9iYWxyZXN1bHQgPSAxOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKyAgICAgICAgICNNb3ZlIHRoZSBvdXRwdXQgdG8gdGhlIHRlc3QgZGlyCisgICAgICAgICBta3BhdGgoIiRvdXRwdXRkaXIvJHRlc3RuYW1lLyRzdWJuYW1lIik7CisgICAgICAgICBmb3JlYWNoKHNwbGl0IC8gLywkZmlsZXMpIHsKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS9DVkUtMjAxOS0xNDI0OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS9DVkUtMjAxOS0xNDI0OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDVkMmNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtL0NWRS0yMDE5LTE0MjQ4LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gOTNkNDFkODI5NjNiMmNmZDBiMjRjOTA2ZjVhOGRhZjUzMjgxYjU1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJILiBQZXRlciBBbnZpbiAoSW50ZWwpIiA8aHBhQHp5dG9yLmNvbT4KK0RhdGU6IEZyaSwgMTYgQXVnIDIwMTkgMDE6MTI6NTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQlIgMzM5MjU3NjogZG9uJ3Qgc2VnZmF1bHQgb24gYSBiYWQgJXByYWdtYSBsaW1pdAorCitEb24ndCBzZWdmYXVsdCBvbiBhIGJhZCAlcHJhZ21hIGxpbWl0LiBJbnN0ZWFkIHRyZWF0IGEgTlVMTCBwb2ludGVyIGFzCithbiBlbXB0eSBzdHJpbmcuCisKK1JlcG9ydGVkLWJ5OiBSZW4gS2ltdXJhIDxya3gxMjA5ZGV2QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEguIFBldGVyIEFudmluIChJbnRlbCkgPGhwYUB6eXRvci5jb20+CisKK0NWRTogQ1ZFLTIwMTktMTQyNDgKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcmVwby5vci5jei9uYXNtLmdpdC9jb21taXQvOTNkNDFkODI5NjNiMmNmZDBiMjRjOTA2ZjVhOGRhZjUzMjgxYjU1OV0KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBhc20vbmFzbS5jIHwgNyArKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXNtL25hc20uYyBiL2FzbS9uYXNtLmMKK2luZGV4IGM4NGQ2NzUuLjY1MTE2YWIgMTAwNjQ0CistLS0gYS9hc20vbmFzbS5jCisrKysgYi9hc20vbmFzbS5jCitAQCAtMjEyLDYgKzIxMiwxMSBAQCBuYXNtX3NldF9saW1pdChjb25zdCBjaGFyICpsaW1pdCwgY29uc3QgY2hhciAqdmFsc3RyKQorICAgICBib29sIHJuX2Vycm9yOworICAgICBpbnQgZXJybGV2ZWw7CisgCisrICAgIGlmICghbGltaXQpCisrICAgICAgICBsaW1pdCA9ICIiOworKyAgICBpZiAoIXZhbHN0cikKKysgICAgICAgIHZhbHN0ciA9ICIiOworKworICAgICBmb3IgKGkgPSAwOyBpIDw9IExJTUlUX01BWDsgaSsrKSB7CisgICAgICAgICBpZiAoIW5hc21fc3RyaWNtcChsaW1pdCwgbGltaXRfaW5mb1tpXS5uYW1lKSkKKyAgICAgICAgICAgICBicmVhazsKK0BAIC0yMDQsNyArMjA5LDcgQEAgbmFzbV9zZXRfbGltaXQoY29uc3QgY2hhciAqbGltaXQsIGNvbnN0IGNoYXIgKnZhbHN0cikKKyAgICAgICAgICAgICBlcnJsZXZlbCA9IEVSUl9XQVJOSU5HfEVSUl9OT0ZJTEV8RVJSX1VTQUdFOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgIGVycmxldmVsID0gRVJSX1dBUk5JTkd8RVJSX1BBU1MxfFdBUk5fVU5LTk9XTl9QUkFHTUE7CistICAgICAgICBuYXNtX2Vycm9yKGVycmxldmVsLCAidW5rbm93biBsaW1pdDogYCVzJyIsIGxpbWl0KTsKKysgICAgICAgIG5hc21fZXJyb3IoZXJybGV2ZWwsICJpbnZhbGlkIGxpbWl0IHZhbHVlOiBgJXMnIiwgdmFsc3RyKTsKKyAgICAgICAgIHJldHVybiBESVJSX0VSUk9SOworICAgICB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xNC4wMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjE0LjAyLmJiCmluZGV4IGU0Zjk2NGMuLmY4YThkNzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjE0LjAyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjE0LjAyLmJiCkBAIC01LDYgKzUsOSBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cubmFzbS51cy9wdWIvbmFzbS9yZWxlYXNlYnVpbGRzLyR7UFZ9L25hc20tJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xOTc1NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDI0OC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0ZGxpYi1BZGQtc3RybGNhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1kZWJ1Zy1wcmVmaXgtbWFwLW9wdGlvbi5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjNmNDg5YWE0OGFkMmFhMWY5NjdkYzVlMjkzYmJkMDZmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamEvZml4LW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYS9maXgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZkNzc5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYS9maXgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZTkyYTkxNTE4M2Y4YmZmMjY4Zjc0YzhjZDAwZDk4NjMwMWEyYmJmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1ha2Vwb3N0IDxtYWtlcG9zdEBmaXJlbWFpbC5jYz4KLURhdGU6IE1vbiwgMjQgRGVjIDIwMTggMDM6MTM6MTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIHN0X210aW0gaWYgc3RfbXRpbWUgaXMgbWFjcm8sIGZpeCAjMTUxMAotCi1JbiBQT1NJWC4xLTIwMDgsIHN5c19zdGF0IGhhcyBhIHN0X210aW0gbWVtYmVyIGFuZCBhIHN0X210aW1lIGJhY2t3YXJkCi1jb21wYXRpYmlsaXR5IG1hY3JvLiBTaG91bGQgaGVscCBhdm9pZCBoYXJkY29kaW5nIHBsYXRmb3JtIGRldGVjdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHNyYy9kaXNrX2ludGVyZmFjZS5jYyB8IDE0ICsrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZGlza19pbnRlcmZhY2UuY2MgYi9zcmMvZGlza19pbnRlcmZhY2UuY2MKLWluZGV4IGQ0YzJmYjAuLmRjMjk3YzQgMTAwNjQ0Ci0tLS0gYS9zcmMvZGlza19pbnRlcmZhY2UuY2MKLSsrKyBiL3NyYy9kaXNrX2ludGVyZmFjZS5jYwotQEAgLTIwMiwxOSArMjAyLDEzIEBAIFRpbWVTdGFtcCBSZWFsRGlza0ludGVyZmFjZTo6U3RhdChjb25zdCBzdHJpbmcmIHBhdGgsIHN0cmluZyogZXJyKSBjb25zdCB7Ci0gICAvLyB0aGF0IGl0IGRvZXNuJ3QgZXhpc3QuCi0gICBpZiAoc3Quc3RfbXRpbWUgPT0gMCkKLSAgICAgcmV0dXJuIDE7Ci0tI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfUE9TSVhfQ19TT1VSQ0UpCi0rI2lmIGRlZmluZWQoX0FJWCkKLSsgIHJldHVybiAoaW50NjRfdClzdC5zdF9tdGltZSAqIDEwMDAwMDAwMDBMTCArIHN0LnN0X210aW1lX247Ci0rI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICByZXR1cm4gKChpbnQ2NF90KXN0LnN0X210aW1lc3BlYy50dl9zZWMgKiAxMDAwMDAwMDAwTEwgKwotICAgICAgICAgICBzdC5zdF9tdGltZXNwZWMudHZfbnNlYyk7Ci0tI2VsaWYgKF9QT1NJWF9DX1NPVVJDRSA+PSAyMDA4MDlMIHx8IF9YT1BFTl9TT1VSQ0UgPj0gNzAwIHx8IGRlZmluZWQoX0JTRF9TT1VSQ0UpIHx8IGRlZmluZWQoX1NWSURfU09VUkNFKSB8fCBcCi0tICAgICAgIGRlZmluZWQoX19CSU9OSUNfXykgfHwgKGRlZmluZWQgKF9fU1ZSNCkgJiYgZGVmaW5lZCAoX19zdW4pKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkKLS0gIC8vIEZvciBnbGliYywgc2VlICJUaW1lc3RhbXAgZmlsZXMiIGluIHRoZSBOb3RlcyBvZiBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL21hbi1wYWdlcy9vbmxpbmUvcGFnZXMvbWFuMi9zdGF0LjIuaHRtbAotLSAgLy8gbmV3bGliLCB1Q2xpYmMgYW5kIG11c2wgZm9sbG93IHRoZSBrZXJuZWwgKG9yIEN5Z3dpbikgaGVhZGVycyBhbmQgZGVmaW5lIHRoZSByaWdodCBtYWNybyB2YWx1ZXMgYWJvdmUuCi0tICAvLyBGb3IgYnNkLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZyZWVic2QvZnJlZWJzZC9ibG9iL21hc3Rlci9zeXMvc3lzL3N0YXQuaCBhbmQgc2ltaWxhcgotLSAgLy8gRm9yIGJpb25pYywgQyBhbmQgUE9TSVggQVBJIGlzIGFsd2F5cyBlbmFibGVkLgotLSAgLy8gRm9yIHNvbGFyaXMsIHNlZSBodHRwczovL2RvY3Mub3JhY2xlLmNvbS9jZC9FODgzNTNfMDEvaHRtbC9FMzc4NDEvc3RhdC0yLmh0bWwuCi0rI2VsaWYgZGVmaW5lZChzdF9tdGltZSkgLy8gQSBtYWNybywgc28gd2UncmUgbGlrZWx5IG9uIG1vZGVybiBQT1NJWC4KLSAgIHJldHVybiAoaW50NjRfdClzdC5zdF9tdGltLnR2X3NlYyAqIDEwMDAwMDAwMDBMTCArIHN0LnN0X210aW0udHZfbnNlYzsKLS0jZWxpZiBkZWZpbmVkKF9BSVgpCi0tICByZXR1cm4gKGludDY0X3Qpc3Quc3RfbXRpbWUgKiAxMDAwMDAwMDAwTEwgKyBzdC5zdF9tdGltZV9uOwotICNlbHNlCi0gICByZXR1cm4gKGludDY0X3Qpc3Quc3RfbXRpbWUgKiAxMDAwMDAwMDAwTEwgKyBzdC5zdF9tdGltZW5zZWM7Ci0gI2VuZGlmCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjEwLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRjNjM2NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuMTAuMC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIk5pbmphIGlzIGEgc21hbGwgYnVpbGQgc3lzdGVtIHdpdGggYSBmb2N1cyBvbiBzcGVlZC4iCitIT01FUEFHRSA9ICJodHRwOi8vbWFydGluZS5naXRodWIuY29tL25pbmphLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE4MTU4NmE2NGFkNGU0NzZjNzkxY2RhN2UyZjJjNTJlIgorCitERVBFTkRTID0gInJlMmMtbmF0aXZlIG5pbmphLW5hdGl2ZSIKKworU1JDUkVWID0gImVkN2Y2NzA0MGIzNzAxODlkOTg5YWRiZDYwZmY4ZWEyOTk1NzIzMWYiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uaW5qYS1idWlsZC9uaW5qYS5naXQ7YnJhbmNoPXJlbGVhc2UiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwlweXRob24zIC4vY29uZmlndXJlLnB5IC0tYm9vdHN0cmFwCit9CisKK2RvX2NvbXBpbGUoKSB7CisJcHl0aG9uMyAuL2NvbmZpZ3VyZS5weQorCW5pbmphCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS45LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEyMzZlOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiTmluamEgaXMgYSBzbWFsbCBidWlsZCBzeXN0ZW0gd2l0aCBhIGZvY3VzIG9uIHNwZWVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXJ0aW5lLmdpdGh1Yi5jb20vbmluamEvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTgxNTg2YTY0YWQ0ZTQ3NmM3OTFjZGE3ZTJmMmM1MmUiCi0KLURFUEVORFMgPSAicmUyYy1uYXRpdmUgbmluamEtbmF0aXZlIgotCi1TUkNSRVYgPSAiYjI1YzA4YmRhNDk0OTE5MmM2OWNlYTRjZWUwNTc4ODczNDFhMmZmYyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25pbmphLWJ1aWxkL25pbmphLmdpdDticmFuY2g9cmVsZWFzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbXVzbC5wYXRjaCBcCi0iCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKLQlweXRob24zIC4vY29uZmlndXJlLnB5IC0tYm9vdHN0cmFwCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JcHl0aG9uMyAuL2NvbmZpZ3VyZS5weQotCW5pbmphCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTFlZDUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIGQ0MmIyM2Y0ZmI1ZDZiZDU4ZTkyZTk5NWZlNWJlZmM3NmVmYmFlMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjcgQXByIDIwMTcgMTU6NDc6NTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3dpdGNoIGFsbCBzY3JpcHRzIHRvIHVzZSBQeXRob24gMy54Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBtYWtlUGFja2FnZSAgICAgICAgICB8IDIgKy0KLSBvcGtnLWNvbXBhcmUtaW5kZXhlcyB8IDIgKy0KLSBvcGtnLWdyYXBoLWRlcHMgICAgICB8IDIgKy0KLSBvcGtnLWxpc3QtZmllbGRzICAgICB8IDIgKy0KLSBvcGtnLW1ha2UtaW5kZXggICAgICB8IDIgKy0KLSBvcGtnLXNob3ctZGVwcyAgICAgICB8IDIgKy0KLSBvcGtnLXVuYnVpbGQgICAgICAgICB8IDIgKy0KLSBvcGtnLXVwZGF0ZS1pbmRleCAgICB8IDIgKy0KLSBvcGtnLnB5ICAgICAgICAgICAgICB8IDIgKy0KLSA5IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21ha2VQYWNrYWdlIGIvbWFrZVBhY2thZ2UKLWluZGV4IDRiZGZjNTYuLjAyMTI0ZGQgMTAwNzU1Ci0tLS0gYS9tYWtlUGFja2FnZQotKysrIGIvbWFrZVBhY2thZ2UKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIAotICMgVGhlIGdlbmVyYWwgYWxnb3JpdGhtIHRoaXMgcHJvZ3JhbSBmb2xsb3dzIGdvZXMgbGlrZSB0aGlzOgotICMgICBSdW4gdGFyIHRvIGV4dHJhY3QgY29udHJvbCBmcm9tIGNvbnRyb2wudGFyLmd6IGZyb20gdGhlIHBhY2thZ2UuCi1kaWZmIC0tZ2l0IGEvb3BrZy1jb21wYXJlLWluZGV4ZXMgYi9vcGtnLWNvbXBhcmUtaW5kZXhlcwotaW5kZXggYjYwZDIwYS4uODBjMTI2MyAxMDA3NTUKLS0tLSBhL29wa2ctY29tcGFyZS1pbmRleGVzCi0rKysgYi9vcGtnLWNvbXBhcmUtaW5kZXhlcwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotZGlmZiAtLWdpdCBhL29wa2ctZ3JhcGgtZGVwcyBiL29wa2ctZ3JhcGgtZGVwcwotaW5kZXggNjY1M2ZkNS4uZjFlMzc2YSAxMDA3NTUKLS0tLSBhL29wa2ctZ3JhcGgtZGVwcwotKysrIGIvb3BrZy1ncmFwaC1kZXBzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy1saXN0LWZpZWxkcyBiL29wa2ctbGlzdC1maWVsZHMKLWluZGV4IGMxNGE5MGYuLjI0Zjc5NTUgMTAwNzU1Ci0tLS0gYS9vcGtnLWxpc3QtZmllbGRzCi0rKysgYi9vcGtnLWxpc3QtZmllbGRzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy1tYWtlLWluZGV4IGIvb3BrZy1tYWtlLWluZGV4Ci1pbmRleCAzZjc1N2Y2Li4yOTg4ZjlmIDEwMDc1NQotLS0tIGEvb3BrZy1tYWtlLWluZGV4Ci0rKysgYi9vcGtnLW1ha2UtaW5kZXgKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSAiIiIKLSAgICBVdGlsaXR5IHRvIGNyZWF0ZSBvcGtnIGNvbXBhdGlibGUgaW5kZXhlcwotICIiIgotIAotZGlmZiAtLWdpdCBhL29wa2ctc2hvdy1kZXBzIGIvb3BrZy1zaG93LWRlcHMKLWluZGV4IDE1M2YyMWUuLjRlMThiNGYgMTAwNzU1Ci0tLS0gYS9vcGtnLXNob3ctZGVwcwotKysrIGIvb3BrZy1zaG93LWRlcHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLSAKLWRpZmYgLS1naXQgYS9vcGtnLXVuYnVpbGQgYi9vcGtnLXVuYnVpbGQKLWluZGV4IDRmMzZiZWMuLjU3NjQyYzkgMTAwNzU1Ci0tLS0gYS9vcGtnLXVuYnVpbGQKLSsrKyBiL29wa2ctdW5idWlsZAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotZGlmZiAtLWdpdCBhL29wa2ctdXBkYXRlLWluZGV4IGIvb3BrZy11cGRhdGUtaW5kZXgKLWluZGV4IDM0MWMxYzIuLjdiZmY4YTEgMTAwNzU1Ci0tLS0gYS9vcGtnLXVwZGF0ZS1pbmRleAotKysrIGIvb3BrZy11cGRhdGUtaW5kZXgKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIAotIGltcG9ydCBzeXMsIG9zCi1kaWZmIC0tZ2l0IGEvb3BrZy5weSBiL29wa2cucHkKLWluZGV4IDJlY2FjOGEuLjdlNjRkZTQgMTAwNjQ0Ci0tLS0gYS9vcGtnLnB5Ci0rKysgYi9vcGtnLnB5Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gIyAgIENvcHlyaWdodCAoQykgMjAwMSBBbGV4YW5kZXIgUy4gR3V5IDxhN3JAYW5kZXJuLm9yZz4KLSAjICAgICAgICAgICAgICAgICAgICAgIEFuZGVybiBSZXNlYXJjaCBMYWJzCi0gIwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtb3BrZy1idWlsZC1jbGFtcC1tdGltZXMtdG8tU09VUkNFX0RBVEVfRVBPQ0gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1vcGtnLWJ1aWxkLWNsYW1wLW10aW1lcy10by1TT1VSQ0VfREFURV9FUE9DSC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE4MTE2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1vcGtnLWJ1aWxkLWNsYW1wLW10aW1lcy10by1TT1VSQ0VfREFURV9FUE9DSC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gNTlkYTU1NzdiZjhkZjQ0MWM2Y2E5NThlNTBmY2I4MzIyODcwMjc2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1EYXRlOiBUaHUsIDEyIFNlcCAyMDE5IDEwOjI0OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9wa2ctYnVpbGQ6IGNsYW1wIG10aW1lcyB0byBTT1VSQ0VfREFURV9FUE9DSAotCi1Gb3IgcmVwcm9kdWNpYmxlIGJ1aWxkcywgY2xhbXAgbXRpbWVzIGJpZ2dlciB0aGFuIFNPVVJDRV9EQVRFX0VQT0NIIHRvCi1TT1VSQ0VfREFURV9FUE9DSCAoYnVpbGQgZ2VuZXJhdGVkIGZpbGVzLCB1c3VhbGx5KS4KLQotRml4ZXMgYnVnemlsbGEgMTM0NTAKLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBvcGtnLWJ1aWxkIHwgOSArKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9vcGtnLWJ1aWxkIGIvb3BrZy1idWlsZAotaW5kZXggZGNkMmQ2OC4uMjUxN2EyYiAxMDA3NTUKLS0tLSBhL29wa2ctYnVpbGQKLSsrKyBiL29wa2ctYnVpbGQKLUBAIC0yOTcsOSArMjk3LDE2IEBAIG1rZGlyICR0bXBfZGlyCi0gCi0gYnVpbGRfZGF0ZT0iJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IgotIAotK210aW1lX2FyZ3M9IiIKLSsjIC0tY2xhbXAtbXRpbWUgcmVxdWlyZXMgdGFyID4gMS4yOC4gT25seSB1c2UgaXQgaWYgU09VUkNFX0RBVEVfRVBPQ0ggaXMgc2V0LCB0byBhdm9pZCBoYXZpbmcgYSBnZW5lcmljIGNhc2UgZGVwZW5kZW5jeSBvbiB0YXIgPiAxLjI4LgotKyMgdGhpcyBzZXR0aW5nIHdpbGwgbWFrZSBzdXJlIGZpbGVzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lIGhhdmUgY29uc2lzdGVudCBtdGltZXMsIGZvciByZXByb2R1Y2libGUgYnVpbGRzLgotK2lmIFsgISAteiAiJFNPVVJDRV9EQVRFX0VQT0NIIiAgXTsgdGhlbgotKyAgICBtdGltZV9hcmdzPSItLW10aW1lPUAkYnVpbGRfZGF0ZSAtLWNsYW1wLW10aW1lIgotK2ZpCi0rCi0gKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiBmaW5kIC4gLXR5cGUgZiA+ICR0bXBfZGlyL2NvbnRyb2xfbGlzdCApCi0gKCBjZCAkcGtnX2RpciAmJiBmaW5kIC4gLXBhdGggLi8kQ09OVFJPTCAtcHJ1bmUgLW8gLXByaW50ID4gJHRtcF9kaXIvZmlsZV9saXN0ICkKLS0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1uby1yZWN1cnNpb24gLWMgJHRhcmZvcm1hdCAtVCAkdG1wX2Rpci9maWxlX2xpc3QgfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCi0rKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbm8tcmVjdXJzaW9uICRtdGltZV9hcmdzIC1jICR0YXJmb3JtYXQgLVQgJHRtcF9kaXIvZmlsZV9saXN0IHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQotICggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW5vLXJlY3Vyc2lvbiAtLW10aW1lPUAkYnVpbGRfZGF0ZSAtYyAkdGFyZm9ybWF0IC1UICR0bXBfZGlyL2NvbnRyb2xfbGlzdCB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCi0gcm0gJHRtcF9kaXIvZmlsZV9saXN0Ci0gcm0gJHRtcF9kaXIvY29udHJvbF9saXN0Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvZml4LXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9maXgtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NTk3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvZml4LXJlcHJvZHVjaWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGaXggcmVwcm9kdWNpYmlsaXR5IGlzc3VlcyBpbiBvcGtnLWJ1aWxkCisKK1RoZXJlIGlzIGEgc29ydGluZyBwcm9ibGVtIHdpdGggb3BrZy1idWlsZCB3aGVyZSB0aGUgaXBrIGdlbmVyYXRlZCBpcyBkZXBlbmRpbmcKK3Vwb24gdGhlIG9yZGVyIG9mIGZpbGVzIG9uIGRpc2suIFRoZSByZWFzb24gaXMgdGhlIC0tc29ydCBvcHRpb24gdG8gdGFyIG9ubHkKK2luZmx1ZW5jZXMgdGhlIG9yZGVycyBvZiBmaWxlcyB0YXIgcmVhZHMsIG5vdCB0aG9zZSBwYXNzZWQgYnkgdGhlIC1UIG9wdGlvbi4KKworQWRkIGluIGEgc29ydCBjYWxsIHRvIHJlc29sdmUgdGhpcyBpc3N1ZS4gVG8gZW5zdXJlIGNvbnNpc3RlbnQgc29ydGluZyB3ZQorYWxzbyBuZWVkIHRvIGZvcmNlIHRvIGEgc3BlY2lmaWMgbG9jYWxlIChDKSBlbHNlIHRoZSByZXN1bHRzIGFyZSBzdGlsbCBub3QKK2RldGVybWluaXN0aWMuCisKK1JQIDIwMjAvMi81CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvb3BrZy1kZXZlbC9ZdHRaNzNOTHJZUV0KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogb3BrZy11dGlscy0wLjQuMi9vcGtnLWJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BrZy11dGlscy0wLjQuMi5vcmlnL29wa2ctYnVpbGQKKysrKyBvcGtnLXV0aWxzLTAuNC4yL29wa2ctYnVpbGQKK0BAIC0zMDUsOCArMzA1LDEwIEBAIGlmIFsgISAteiAiJFNPVVJDRV9EQVRFX0VQT0NIIiAgXTsgdGhlbgorICAgICBtdGltZV9hcmdzPSItLW10aW1lPUAkYnVpbGRfZGF0ZSAtLWNsYW1wLW10aW1lIgorIGZpCisgCistKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiBmaW5kIC4gLXR5cGUgZiA+ICR0bXBfZGlyL2NvbnRyb2xfbGlzdCApCistKCBjZCAkcGtnX2RpciAmJiBmaW5kIC4gLXBhdGggLi8kQ09OVFJPTCAtcHJ1bmUgLW8gLXBhdGggLiAtbyAtcHJpbnQgID4gJHRtcF9kaXIvZmlsZV9saXN0ICkKKytleHBvcnQgTEFORz1DCisrZXhwb3J0IExDX0FMTD1DCisrKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiBmaW5kIC4gLXR5cGUgZiB8IHNvcnQgPiAkdG1wX2Rpci9jb250cm9sX2xpc3QgKQorKyggY2QgJHBrZ19kaXIgJiYgZmluZCAuIC1wYXRoIC4vJENPTlRST0wgLXBydW5lIC1vIC1wYXRoIC4gLW8gLXByaW50ICB8IHNvcnQgPiAkdG1wX2Rpci9maWxlX2xpc3QgKQorICggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW5vLXJlY3Vyc2lvbiAkbXRpbWVfYXJncyAtYyAkdGFyZm9ybWF0IC1UICR0bXBfZGlyL2ZpbGVfbGlzdCB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKKyAoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1uby1yZWN1cnNpb24gLS1tdGltZT1AJGJ1aWxkX2RhdGUgLWMgJHRhcmZvcm1hdCAtVCAkdG1wX2Rpci9jb250cm9sX2xpc3QgfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorIHJtICR0bXBfZGlyL2ZpbGVfbGlzdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpcGVmYWlsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpcGVmYWlsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWRkY2MxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9waXBlZmFpbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVdlIG5lZWQgb3BrZy1idWlsZCB0byBmYWlsIGlmIGZvciBleGFtcGxlIHRoZSB0YXIgY29tbWFuZCBpcyBwYXNzZWQgaW52YWxpZCAKLW9wdGlvbnMuIFdpdGhvdXQgdGhpcywgd2Ugc2VlIHNpbGVudGx5IGNyZWF0ZWQgZW1wdHkgcGFja2FnZWQgd2hlcmUgZGF0YS50YXIKLWlzIHplcm8gYnl0ZXMgaW4gc2l6ZS4gVGhpcyBjcmVhdGVzIGhhcmQgdG8gZGVidWcgcHJvYmxlbXMuCi0KLUFuIGV4YW1wbGUgaXMgd2hlbiByZXByb2R1Y2libGUgYnVpbGRzIGFyZSBlbmFibGVkIGFuZCBydW4gb24gb2xkIGhvc3RzIGxpa2UKLWNlbnRvczcgd2hpY2ggaGFzIHRhciA8IDEuMjg6Ci0KLVN1YnByb2Nlc3Mgb3V0cHV0OnRhcjogdW5yZWNvZ25pemVkIG9wdGlvbiAnLS1jbGFtcC1tdGltZScKLVRyeSBgdGFyIC0taGVscCcgb3IgYHRhciAtLXVzYWdlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLQotSW5kZXg6IG9wa2ctdXRpbHMtMC40LjEvb3BrZy1idWlsZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wa2ctdXRpbHMtMC40LjEub3JpZy9vcGtnLWJ1aWxkCi0rKysgb3BrZy11dGlscy0wLjQuMS9vcGtnLWJ1aWxkCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vc2gKLSsjIS9iaW4vYmFzaAotIAotIDogPDw9Y3V0Ci0gPWhlYWQxIE5BTUUKLUBAIC0xMiw2ICsxMiw3IEBAIG9wa2ctYnVpbGQgLSBjb25zdHJ1Y3QgYW4gLm9wayBmcm9tIGEgZGkKLSAjICAgVXBkYXRlZCB0byB3b3JrIG9uIEZhbWlsaWFyIFByZTAuN3JjMSwgd2l0aCBidXN5Ym94IHRhci4KLSAjICAgTm90ZSBpdCBSZXF1aXJlczogYmludXRpbHMtYXIgKHNpbmNlIHRoZSBidXN5Ym94IGFyIGNhbid0IGNyZWF0ZSkKLSBzZXQgLWUKLStzZXQgLW8gcGlwZWZhaWwKLSAKLSB2ZXJzaW9uPTEuMAotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjZjN2EzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAiQWRkaXRpb25hbCB1dGlsaXRpZXMgZm9yIHRoZSBvcGtnIHBhY2thZ2UgbWFuYWdlciIKLVNVTU1BUllfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIlV0aWxpdHkgZm9yIG1hbmFnaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb3BrZy5weTtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT02M2NlOWU2YmNjNDQ1MTgxY2Q5ZTRiYWY0YjRjY2MzNSIKLVBST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3ZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcycsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvJHtCUE59L3NuYXBzaG90LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnLWJ1aWxkLWNsYW1wLW10aW1lcy10by1TT1VSQ0VfREFURV9FUE9DSC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9waXBlZmFpbC5wYXRjaCBcCi0iCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscy9yZWZzLyIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGMxNDBmODM1YjY5NGEwYzI3Y2ZiMjNkMjQyNmEwMmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWVhOWVmZGQ5ZmUxMzY2MWFkMjUxZTNhMjg2MGMxYzkzMDQ1YWRjZmFhNjY1OWMzZTg2ZDk3NDhlY2RhM2I2ZSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgotCi0jIEZvciBuYXRpdmUgYnVpbGRzIHdlIHVzZSB0aGUgaG9zdCBQeXRob24KLVBZVEhPTlJERVBTID0gInB5dGhvbjMgcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtbWF0aCBweXRob24zLWNyeXB0IHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWZjbnRsIHB5dGhvbjMtcGlja2xlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1zdHJpbmdvbGQiCi1QWVRIT05SREVQU19jbGFzcy1uYXRpdmUgPSAiIgotCi1QQUNLQUdFQ09ORklHID0gInB5dGhvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsLCR7UFlUSE9OUkRFUFN9IgotUEFDS0FHRUNPTkZJR1t1cGRhdGUtYWx0ZXJuYXRpdmVzXSA9ICIsLCwiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCi0JaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJcm0gLWYgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKLQlmaQotCi0gICAgaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBncmVwIC1sWiAiL3Vzci9iaW4vZW52LipweXRob24iICR7RH0ke2JpbmRpcn0vKiB8IHhhcmdzIC0wIHJtCi0gICAgZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCWlmIFsgLWUgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIgXTsgdGhlbgotCQlzZWQgLWkgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIC1lICdzLC91c3IvYmluLCR7YmluZGlyfSxnOyBzLC91c3IvbGliLCR7bm9uYXJjaF9saWJkaXJ9LGcnCi0JZmkKLX0KLQotIyBUaGVzZSBhcmUgZW1wdHkgYW5kIHdpbGwgcHVsbCBweXRob24zLWRldiBpbnRvIGltYWdlcyB3aGVyZSBpdCB3b3VsZG4ndAotIyBoYXZlIGJlZW4gb3RoZXJ3aXNlLCBzbyBkb24ndCBnZW5lcmF0ZSB0aGVtLgotUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCi0KLVBBQ0tBR0VTID0rICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2ciCi1GSUxFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiJHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1SUFJPVklERVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi1SUkVQTEFDRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotUkNPTkZMSUNUU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi0KLXBrZ19wb3N0cm1fdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnKCkgewotCXJtIC1yZiAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cvYWx0ZXJuYXRpdmVzCi0Jcm1kaXIgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnIHx8IHRydWUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTUyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC40LjIuYmIKQEAgLTAsMCArMSw2NiBAQAorU1VNTUFSWSA9ICJBZGRpdGlvbmFsIHV0aWxpdGllcyBmb3IgdGhlIG9wa2cgcGFja2FnZSBtYW5hZ2VyIgorU1VNTUFSWV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiVXRpbGl0eSBmb3IgbWFuYWdpbmcgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0iCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vcGtnLnB5O2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PWZmYTExZmYzYzE1ZWIzMWM2YTdjZWFhMDBjYzlmOTg2IgorUFJPVklERVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzJywgJycsIGQpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS8ke0JQTn0vc25hcHNob3QvJHtCUE59LSR7UFZ9LnRhci5neiBcIAorICAgICAgICAgICBmaWxlOi8vZml4LXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBcCisiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscy9yZWZzLyIKKworU1JDX1VSSVttZDVzdW1dID0gImNjMjEwNjUwNjQ0ZmNiOWJiYTA2YWQ1ZWM5NWE2M2VjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5MjlhZDg3ZDU0MTc4OWUwYjgyZDYyNmRiMDFhMTIwMWFjNDhkZjZmNDlmMjI2MmZjZmI4NmNmODE1ZTVkNmMiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKKworaW5oZXJpdCBwZXJsbmF0aXZlCisKKyMgRm9yIG5hdGl2ZSBidWlsZHMgd2UgdXNlIHRoZSBob3N0IFB5dGhvbgorUFlUSE9OUkRFUFMgPSAicHl0aG9uMyBweXRob24zLXNoZWxsIHB5dGhvbjMtaW8gcHl0aG9uMy1tYXRoIHB5dGhvbjMtY3J5cHQgcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtZmNudGwgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXN0cmluZ29sZCIKK1BZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCitQQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWdyZXAgLWxaICIvdXNyL2Jpbi9lbnYuKnB5dGhvbiIgJHtEfSR7YmluZGlyfS8qIHwgeGFyZ3MgLTAgcm0KKwlmaQorCisJaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCisJCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKKwlmaQorfQorCisjIFRoZXNlIGFyZSBlbXB0eSBhbmQgd2lsbCBwdWxsIHB5dGhvbjMtZGV2IGludG8gaW1hZ2VzIHdoZXJlIGl0IHdvdWxkbid0CisjIGhhdmUgYmVlbiBvdGhlcndpc2UsIHNvIGRvbid0IGdlbmVyYXRlIHRoZW0uCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKKworUEFDS0FHRVMgPSsgInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyIKK0ZJTEVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICIke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKK1JQUk9WSURFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKK1JSRVBMQUNFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCitSQ09ORkxJQ1RTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKKworcGtnX3Bvc3RybV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2coKSB7CisJcm0gLXJmICREJHtub25hcmNoX2xpYmRpcn0vb3BrZy9hbHRlcm5hdGl2ZXMKKwlybWRpciAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cgfHwgdHJ1ZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3Blbl9pbm5lci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGVuX2lubmVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzhlMDk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGVuX2lubmVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tIFdlZCBOb3YgMjAgMjI6MzU6MDIgMjAxOQotRnJvbTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVRvOiA8b3BrZy1kZXZlbEBnb29nbGVncm91cHMuY29tPiwgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1DQzogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVN1YmplY3Q6IFtvcGtnXVtQQVRDSCAyLzJdIG9wZW5faW5uZXI6IGFkZCBzdXBwb3J0IGZvciBlbXB0eSBwYXlsb2FkcwotRGF0ZTogV2VkLCAyMCBOb3YgMjAxOSAxNjozNDo0OCAtMDYwMAotTWVzc2FnZS1JRDogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTMtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjIyLjAKLUluLVJlcGx5LVRvOiA8MjAxOTExMjAyMjM0NDguMjY1MjItMS1hbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotUmVmZXJlbmNlczogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTEtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW4KLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotU3VwcG9ydCBmb3IgZW1wdHkgY29tcHJlc3NlZCBwYXlsb2FkcyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCBvbg0KLWxpYmFyY2hpdmUuDQotDQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4NCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQ0KLSBsaWJvcGtnL29wa2dfYXJjaGl2ZS5jIHwgNyArKysrKysrDQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykNCi0NCi1kaWZmIC0tZ2l0IGEvbGlib3BrZy9vcGtnX2FyY2hpdmUuYyBiL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi1pbmRleCAwZTljY2VhLi5mMTljZWNlIDEwMDY0NA0KLS0tLSBhL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi0rKysgYi9saWJvcGtnL29wa2dfYXJjaGl2ZS5jDQotQEAgLTYxOCw2ICs2MTgsMTMgQEAgc3RhdGljIHN0cnVjdCBhcmNoaXZlICpvcGVuX2lubmVyKHN0cnVjdCBhcmNoaXZlICpvdXRlcikNCi0gICAgICAgICBnb3RvIGVycl9jbGVhbnVwOw0KLSAgICAgfQ0KLSANCi0rICAgIHIgPSBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfZW1wdHkoaW5uZXIpOw0KLSsgICAgaWYgKHIgIT0gQVJDSElWRV9PSykgew0KLSsgICAgICAgIG9wa2dfbXNnKEVSUk9SLCAiRW1wdHkgZm9ybWF0IG5vdCBzdXBwb3J0ZWQ6ICVzXG4iLA0KLSsgICAgICAgICAgICAgICAgIGFyY2hpdmVfZXJyb3Jfc3RyaW5nKGlubmVyKSk7DQotKyAgICAgICAgZ290byBlcnJfY2xlYW51cDsNCi0rICAgIH0NCi0rDQotICAgICByID0gYXJjaGl2ZV9yZWFkX29wZW4oaW5uZXIsIGRhdGEsIE5VTEwsIGlubmVyX3JlYWQsIGlubmVyX2Nsb3NlKTsNCi0gICAgIGlmIChyICE9IEFSQ0hJVkVfT0spIHsNCi0gICAgICAgICBvcGtnX21zZyhFUlJPUiwgIkZhaWxlZCB0byBvcGVuIGlubmVyIGFyY2hpdmU6ICVzXG4iLA0KLS0tIA0KLTIuMjIuMA0KLQ0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2dfYXJjaGl2ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnX2FyY2hpdmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMWViYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2dfYXJjaGl2ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbSBXZWQgTm92IDIwIDIyOjM1OjAxIDIwMTkKLVJldHVybi1QYXRoOiA8cmljaGFyZC5wdXJkaWUrY2FmXz1ycHVyZGllPXJwc3lzLm5ldEBsaW51eGZvdW5kYXRpb24ub3JnPgotRnJvbTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVRvOiA8b3BrZy1kZXZlbEBnb29nbGVncm91cHMuY29tPiwgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1DQzogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVN1YmplY3Q6IFtvcGtnXVtQQVRDSCAxLzJdIG9wa2dfYXJjaGl2ZS5jOiBhdm9pZCBkb3VibGUgZnJlZSBvbiB1bmNvbXByZXNzCi0gZXJyb3IKLURhdGU6IFdlZCwgMjAgTm92IDIwMTkgMTY6MzQ6NDcgLTA2MDAKLU1lc3NhZ2UtSUQ6IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0yLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1YLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi4yMi4wCi1Jbi1SZXBseS1UbzogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTEtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVJlZmVyZW5jZXM6IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0xLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCi1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBvcGVuLWlubmVyIGZ1bmN0aW9uIGNhbGxzIGFyY2hpdmVfcmVhZF9vcGVuLiBPbiBlcnJvciwNCi1hcmNoaXZlX3JlYWRfb3BlbiBjYWxscyBpbm5lcl9jbG9zZSwgd2hpY2ggYWxzbyBjbG9zZXMgdGhlIG91dHRlcg0KLWFyY2hpdmUuIE9uIGVycm9yLCByZXR1cm4gTlVMTCBkaXJlY3RseSB0byBhdm9pZCBkb3VibGUgZnJlZS4NCi0NCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4NCi0tLS0NCi0gbGlib3BrZy9vcGtnX2FyY2hpdmUuYyB8IDQgKystLQ0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KLQ0KLWRpZmYgLS1naXQgYS9saWJvcGtnL29wa2dfYXJjaGl2ZS5jIGIvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLWluZGV4IDNkODdkYjEuLjBlOWNjZWEgMTAwNjQ0DQotLS0tIGEvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLSsrKyBiL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi1AQCAtNjIyLDcgKzYyMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXJjaGl2ZSAqb3Blbl9pbm5lcihzdHJ1Y3QgYXJjaGl2ZSAqb3V0ZXIpDQotICAgICBpZiAociAhPSBBUkNISVZFX09LKSB7DQotICAgICAgICAgb3BrZ19tc2coRVJST1IsICJGYWlsZWQgdG8gb3BlbiBpbm5lciBhcmNoaXZlOiAlc1xuIiwNCi0gICAgICAgICAgICAgICAgICBhcmNoaXZlX2Vycm9yX3N0cmluZyhpbm5lcikpOw0KLS0gICAgICAgIGdvdG8gZXJyX2NsZWFudXA7DQotKyAgICAgICAgcmV0dXJuIE5VTEw7DQotICAgICB9DQotIA0KLSAgICAgcmV0dXJuIGlubmVyOw0KLUBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIHN0cnVjdCBhcmNoaXZlICpleHRyYWN0X291dGVyKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICphcm5hbWUpDQotIA0KLSAgICAgaW5uZXIgPSBvcGVuX2lubmVyKG91dGVyKTsNCi0gICAgIGlmICghaW5uZXIpDQotLSAgICAgICAgZ290byBlcnJfY2xlYW51cDsNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0gDQotICAgICByZXR1cm4gaW5uZXI7DQotIA0KLS0tIA0KLTIuMjIuMA0KLQ0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGFlOGIzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCi1TVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yMTttZDU9OTA0MzVhNTE5YzZlYTY5ZWYyMmU0YTg4YmNjNTJmYTAiCi0KLURFUEVORFMgPSAibGliYXJjaGl2ZSIKLQotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnX2FyY2hpdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3Blbl9pbm5lci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmEwYzIxMzA1ZmM5M2IyNmU4NDQ5ODFlZjEwMGRjODUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDVhYzFlMDM3ZDM4NzdmNjM1ZDg4M2Y4YTU1NWUxNzI4ODNhMjVkM2VlYjc5ODZjNzU4OTBmZGQzMTI1MGE0MyIKLQotIyBUaGlzIG5lZWRzIHRvIGJlIGJlZm9yZSBwdGVzdCBpbmhlcml0LCBvdGhlcndpc2UgYWxsIHB0ZXN0IGZpbGVzIGVuZCBwYWNrYWdlZAotIyBpbiBsaWJvcGtnIHBhY2thZ2UgaWYgT1BLR0xJQkRJUiA9PSBsaWJkaXIsIGJlY2F1c2UgZGVmYXVsdAotIyBQVEVTVF9QQVRIID89ICIke2xpYmRpcn0vJHtCUE59L3B0ZXN0IgotUEFDS0FHRVMgPSsgImxpYm9wa2ciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAotCi10YXJnZXRfbG9jYWxzdGF0ZWRpciA6PSAiJHtsb2NhbHN0YXRlZGlyfSIKLU9QS0dMSUJESVIgPz89ICIke3RhcmdldF9sb2NhbHN0YXRlZGlyfS9saWIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJzb2x2IgotCi1QQUNLQUdFQ09ORklHW2dwZ10gPSAiLS1lbmFibGUtZ3BnLC0tZGlzYWJsZS1ncGcsXAotICAgIGdudXBnIGdwZ21lIGxpYmdwZy1lcnJvcixcCi0gICAgJHtAICJnbnVwZyIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlICJnbnVwZy1ncGcifVwKLSAgICAiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKLVBBQ0tBR0VDT05GSUdbbGlic29sdl0gPSAiLS13aXRoLWxpYnNvbHYsLS13aXRob3V0LWxpYnNvbHYsbGlic29sdiIKLQotRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXBhdGhmaW5kZXIiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCi0KLSMgUmVsZWFzZSB0YXJiYWxsIGhhcyB1bnVzZWQgYmluYXJpZXMgb24gdGhlIHRlc3RzIGZvbGRlciwgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IGF1dG9tYWtlLgotIyBGb3Igbm93LCBkZWxldGUgdGhlbSB0byBhdm9pZCBwYWNrYWdpbmcgZXJyb3JzICh3cm9uZyBhcmNoaXRlY3R1cmUpCi1kb191bnBhY2tfYXBwZW5kICgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ3JlbW92ZV90ZXN0X2JpbmFyaWVzJywgZCkKLX0KLQotcmVtb3ZlX3Rlc3RfYmluYXJpZXMgKCkgewotCXJtICR7V09SS0RJUn0vb3BrZy0ke1BWfS90ZXN0cy9saWJvcGtnX3Rlc3QqCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCi0JIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKLQlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICcvQGVjaG8gJF4vZCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLQlzZWQgLWkgLWUgJy9AUFlUSE9OUEFUSD0uICQoUFlUSE9OKSAkXi9hXFx0QGlmIFsgIiQkPyIgIT0gIjAiIF07dGhlbiBlY2hvICJGQUlMOiIkXjtlbHNlIGVjaG8gIlBBU1M6IiReO2ZpJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotfQotCi1SREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIGxpYmFyY2hpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGJpbnV0aWxzIHB5dGhvbjMtY29yZSBweXRob24zLWNvbXByZXNzaW9uIgotUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgotUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi1SUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotCi1GSUxFU19saWJvcGtnID0gIiR7bGliZGlyfS8qLnNvLiogJHtPUEtHTElCRElSfS9vcGtnLyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmE3NGRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4yLmJiCkBAIC0wLDAgKzEsNzQgQEAKK1NVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCitTVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xODttZDU9ZDYyMDBiMGYyYjQxZGVlMjc4YWE1ZmFkMzMzZWVjYWUiCisKK0RFUEVORFMgPSAibGliYXJjaGl2ZSIKKworUEUgPSAiMSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQxM2U1ZGZjMWMyNTM2ZjBjN2IyZTE1Zjc5NTI3OGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODY4ODc4NTJjNDM0NTdlZGZmZjlkOGI2ZDk1MjBmM2YxY2RkNTVmMjVlYjYwMGE2ZWIzMWUxYzRlMTUxZTEwNiIKKworIyBUaGlzIG5lZWRzIHRvIGJlIGJlZm9yZSBwdGVzdCBpbmhlcml0LCBvdGhlcndpc2UgYWxsIHB0ZXN0IGZpbGVzIGVuZCBwYWNrYWdlZAorIyBpbiBsaWJvcGtnIHBhY2thZ2UgaWYgT1BLR0xJQkRJUiA9PSBsaWJkaXIsIGJlY2F1c2UgZGVmYXVsdAorIyBQVEVTVF9QQVRIID89ICIke2xpYmRpcn0vJHtCUE59L3B0ZXN0IgorUEFDS0FHRVMgPSsgImxpYm9wa2ciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCit0YXJnZXRfbG9jYWxzdGF0ZWRpciA6PSAiJHtsb2NhbHN0YXRlZGlyfSIKK09QS0dMSUJESVIgPz89ICIke3RhcmdldF9sb2NhbHN0YXRlZGlyfS9saWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJzb2x2IgorCitQQUNLQUdFQ09ORklHW2dwZ10gPSAiLS1lbmFibGUtZ3BnLC0tZGlzYWJsZS1ncGcsXAorICAgIGdudXBnIGdwZ21lIGxpYmdwZy1lcnJvcixcCisgICAgJHtAICJnbnVwZyIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlICJnbnVwZy1ncGcifVwKKyAgICAiCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKK1BBQ0tBR0VDT05GSUdbbGlic29sdl0gPSAiLS13aXRoLWxpYnNvbHYsLS13aXRob3V0LWxpYnNvbHYsbGlic29sdiIKKworRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXBhdGhmaW5kZXIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKwllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCisJIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKKwlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICcvQGVjaG8gJF4vZCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKKwlzZWQgLWkgLWUgJy9AUFlUSE9OUEFUSD0uICQoUFlUSE9OKSAkXi9hXFx0QGlmIFsgIiQkPyIgIT0gIjAiIF07dGhlbiBlY2hvICJGQUlMOiIkXjtlbHNlIGVjaG8gIlBBU1M6IiReO2ZpJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorfQorCitSREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIGxpYmFyY2hpdmUiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGJpbnV0aWxzIHB5dGhvbjMtY29yZSBweXRob24zLWNvbXByZXNzaW9uIgorUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCitSUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorCitGSUxFU19saWJvcGtnID0gIiR7bGliZGlyfS8qLnNvLiogJHtPUEtHTElCRElSfS9vcGtnLyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMTM1NzYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjU3OTk5MTdjN2QzMWE4OTFkNWUzMmI4M2FkMDhmNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGY4OTAxZjkxNDRiNWVjMTdkZmZkYjMzNTQ4YjVmNGM3ZjgwNDliMGQxMDIzYmUzNDYyY2RkNjRlYzVhM2FiMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKLUZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT1JDICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBzZWQgLWkgLWUgJ3MjL3RtcCMuI2cnICR7U30vb3JjL29yY2NvZGVtZW0uYwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDRkYzMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMzEuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImI2Yjk1YTQ3ZWZmNzEzZTkxODczZTJjMmIxYTViM2FkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwYWI1ZjEwYTZhOWFlN2MzYTZiNDIxODI0NjU2NGMzYmYwMGQ2NTdjYmRmNTg3ZTZkMzRlYzNlZjA2MTYwNzUiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR1RLRE9DX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHVEtET0NfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgorRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCmluZGV4IDVkN2Y1NWYuLmI1ODk3YjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCkBAIC0yMiwzICsyMiw2IEBACiBQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsIGQpfSIKIFBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKIAorUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGF0Y2gtcmVwbGFjZW1lbnQtbmF0aXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGZfMC4xMC5iYgppbmRleCA1ODAxMDhlLi5jYzk4M2UwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuMTAuYmIKQEAgLTEsNCArMSw0IEBACi1TUkNfVVJJID0gImh0dHA6Ly9uaXhvcy5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCitTUkNfVVJJID0gImh0dHBzOi8vbml4b3Mub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vaGFuZGxlLXJlYWQtb25seS1maWxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtYWRqdXN0aW5nLXN0YXJ0UGFnZS5wYXRjaCBcCiAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1DaGVja0xpYi5wbS1kby1ub3QtYXR0ZW1wdC10by1ydW4tYS1jcm9zcy1leGVjdXRhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLUNoZWNrTGliLnBtLWRvLW5vdC1hdHRlbXB0LXRvLXJ1bi1hLWNyb3NzLWV4ZWN1dGFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViYmU3OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1DaGVja0xpYi5wbS1kby1ub3QtYXR0ZW1wdC10by1ydW4tYS1jcm9zcy1leGVjdXRhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gYTAzM2M5ZWNlMTJiNmVlYWQ0OGVlZDYzZjEwNmNjZGVjNjE1OWIwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNjoyNjo1NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBDaGVja0xpYi5wbTogZG8gbm90IGF0dGVtcHQgdG8gcnVuIGEgY3Jvc3MgZXhlY3V0YWJsZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGluYy9EZXZlbC9DaGVja0xpYi5wbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luYy9EZXZlbC9DaGVja0xpYi5wbSBiL2luYy9EZXZlbC9DaGVja0xpYi5wbQoraW5kZXggMzZhNDUxYS4uYjA0YWNjMSAxMDA2NDQKKy0tLSBhL2luYy9EZXZlbC9DaGVja0xpYi5wbQorKysrIGIvaW5jL0RldmVsL0NoZWNrTGliLnBtCitAQCAtMzMwLDcgKzMzMCw3IEBAIHN1YiBhc3NlcnRfbGliIHsKKyAgICAgICAgIHB1c2ggQG1pc3NpbmcsICRsaWIgaWYgJHJ2ICE9IDAgfHwgIS14ICRleGVmaWxlOworICAgICAgICAgbXkgJGFic2V4ZWZpbGUgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCRleGVmaWxlKTsKKyAgICAgICAgICRhYnNleGVmaWxlID0gJyInIC4gJGFic2V4ZWZpbGUgLiAnIicgaWYgJGFic2V4ZWZpbGUgPX4gbS9ccy87CistICAgICAgICBwdXNoIEB3cm9uZ3Jlc3VsdCwgJGxpYiBpZiAkcnYgPT0gMCAmJiAteCAkZXhlZmlsZSAmJiBzeXN0ZW0oJGFic2V4ZWZpbGUpICE9IDA7CisrICAgICAgICBwdXNoIEB3cm9uZ3Jlc3VsdCwgJGxpYiBpZiAkcnYgPT0gMCAmJiAteCAkZXhlZmlsZSAmJiAwICE9IDA7CisgICAgICAgICB1bmxpbmsgJG9maWxlIGlmIC1lICRvZmlsZTsKKyAgICAgICAgIF9jbGVhbnVwX2V4ZSgkZXhlZmlsZSk7CisgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1QQVRDSC1wZXJsLTEzNDExNy1DbG9zZS1EQVRBLWluLWxvY190b29scy5wbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1QQVRDSC1wZXJsLTEzNDExNy1DbG9zZS1EQVRBLWluLWxvY190b29scy5wbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWNhZTBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLVBBVENILXBlcmwtMTM0MTE3LUNsb3NlLURBVEEtaW4tbG9jX3Rvb2xzLnBsLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYTA0YTc1ZjIwZjAzYWEwOGNlODExOGIzYjBiM2Y5M2ViM2U5OTdjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgTGVhY2ggPHJpY2grcGVybEBoeXBoZW4tZGFzaC1oeXBoZW4uaW5mbz4KK0RhdGU6IFN1biwgMTkgTWF5IDIwMTkgMjA6MTY6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUEFUQ0g6IFtwZXJsICMxMzQxMTddIENsb3NlIERBVEEgaW4gbG9jX3Rvb2xzLnBsCisKK1RoaXMgcHJldmVudHMgdW5leHBlY3RlZCB0ZXh0IGFuZCBmaXhlcyB0ZXN0IGxpYi93YXJuaW5ncy50CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2EwNGE3NWYyMGYwM2FhMDhjZTgxMThiM2IwYjNmOTNlYjNlOTk3YzVdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoZXcgWmVuZyA8bWF0dGhldy56ZW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHQvbG9jX3Rvb2xzLnBsIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdC9sb2NfdG9vbHMucGwgYi90L2xvY190b29scy5wbAoraW5kZXggYzc2ZTI5Mzg4YS4uYmVlYmQ5OGQ4OCAxMDA2NDQKKy0tLSBhL3QvbG9jX3Rvb2xzLnBsCisrKysgYi90L2xvY190b29scy5wbAorQEAgLTQyMSw3ICs0MjEsNyBAQCBzdWIgZmluZF9sb2NhbGVzICgkOyQpIHsKKyAgICAgICAgIH0KKworICAgICAgICAgIyBUaGUgcmVzdCBvZiB0aGUgbG9jYWxlcyBhcmUgaW4gdGhpcyBmaWxlLgorLSAgICAgICAgcHVzaCBARGF0YSwgPERBVEE+OworKyAgICAgICAgcHVzaCBARGF0YSwgPERBVEE+OyBjbG9zZSBEQVRBOworCisgICAgICAgICBmb3JlYWNoIG15ICRsaW5lIChARGF0YSkgeworICAgICAgICAgICAgIG15ICgkbG9jYWxlX25hbWUsICRsYW5ndWFnZV9jb2RlcywgJGNvdW50cnlfY29kZXMsICRlbmNvZGluZ3MpID0KKy0tCisyLjI1LjAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZGV0ZXJtaW5pc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2RldGVybWluaXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZGQ1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2RldGVybWluaXNtLnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0ZpeGVzIHRvIG1ha2UgdGhlIHBlcmwgYnVpbGQgcmVwcm9kdWNpYmxlOgorCithKSBSZW1vdmUgdGhlIFxuIGZyb20gY29uZmlndXJlX2F0dHIuc2ggc2luY2UgaXQgZ2V0cyBxdW90ZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uCisgICB3aGV0aGVyIHRoZSBzaGVsbCBpcyBiYXNoIG9yIGRhc2ggd2hpY2ggY2FuIGNhdXNlIHRoZSB0ZXN0IHJlc3VsdCB0byBiZSBpbmNvcnJlY3QuCisgICBSZXBvcnRlZCB1cHN0cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc3YvcGVybC1jcm9zcy9pc3N1ZXMvODcKKworYikgU29ydCB0aGUgb3JkZXIgb2YgdGhlIG1vZHVsZSBsaXN0cyBmcm9tIGNvbmZpZ3VyZV9tb2RzLnNoIHNpbmNlIG90aGVyd2lzZQorICAgdGhlIHJlc3VsdCBpc24ndCB0aGUgc2FtZSBsZWFkaW5nIHRvIG1ha2VmaWxlIGRpZmZlcmVuY2VzLgorICAgUmVwb3J0ZWQgdXBzdHJlYW06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvaXNzdWVzLzg4CisKK2MpIFNvcnQgdGhlIEVuY29kZTo6Qnl0ZSBieXRlX3QuZm5tIGZpbGUgb3V0cHV0IChhbmQgdGhlIG1ha2VmaWxlIGRlcGVuZHMgd2hpbHN0IAorICAgdGhlcmUgZm9yIGdvb2QgbWVhc3VyZSkKKyAgIFRoaXMgbmVlZHMgdG8gZ28gdG8gdXBzdHJlYW0gcGVybCAobm90IGRvbmUpCisKK2QpIFVzZSBiYXNoIGZvciBwZXJsLWNyb3NzIGNvbmZpZ3VyZSBzaW5jZSBvdGhlcndpc2UgdHJubCBnZXRzIHNldCB0byAiXG4iIHdpdGggYmFzaAorICAgYW5kICIiIHdpdGggZGFzaAorICAgUmVwb3J0ZWQgdXBzdHJlYW06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvaXNzdWVzLzg3CisKK1JQIDIwMjAvMi83CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbNzUlIHN1Ym1pdHRlZF0KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnCisKK0luZGV4OiBwZXJsLTUuMzAuMS9jbmYvY29uZmlndXJlX21vZHMuc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMzAuMS5vcmlnL2NuZi9jb25maWd1cmVfbW9kcy5zaAorKysrIHBlcmwtNS4zMC4xL2NuZi9jb25maWd1cmVfbW9kcy5zaAorQEAgLTgyLDcgKzgyLDcgQEAgZXh0b25seWlmKCkgeworIH0KKyAKKyBkZWZpbmV0cmltc3BhY2VzKCkgeworLQl2PWBlY2hvICIkMiIgfCBzZWQgLXIgLWUgJ3MvXHMrLyAvZycgLWUgJ3MvXlxzKy8vJyAtZSAncy9ccyskLy8nYAorKwl2PWBlY2hvICIkMiIgfCBzZWQgLXIgLWUgJ3MvXHMrLyAvZycgLWUgJ3MvXlxzKy8vJyAtZSAncy9ccyskLy8nIHwgeGFyZ3MgLW4xIHwgTEFORz1DIHNvcnQgfCB4YXJnc2AKKyAJZGVmaW5lICQxICIkdiIKKyB9CisgCitJbmRleDogcGVybC01LjMwLjEvY3Bhbi9FbmNvZGUvQnl0ZS9NYWtlZmlsZS5QTAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4zMC4xLm9yaWcvY3Bhbi9FbmNvZGUvQnl0ZS9NYWtlZmlsZS5QTAorKysrIHBlcmwtNS4zMC4xL2NwYW4vRW5jb2RlL0J5dGUvTWFrZWZpbGUuUEwKK0BAIC0xNzEsNyArMTcxLDcgQEAgc3ViIHBvc3RhbWJsZQorICAgICBteSAkbGVuZ3Roc29mYXIgPSBsZW5ndGgoJHN0cik7CisgICAgIG15ICRjb250aW51YXRvciA9ICcnOworICAgICAkc3RyIC49ICIkdGFibGUuYyA6ICRlbmMyeHMgTWFrZWZpbGUuUEwiOworLSAgICBmb3JlYWNoIG15ICRmaWxlIChAeyR0YWJsZXN7JHRhYmxlfX0pCisrICAgIGZvcmVhY2ggbXkgJGZpbGUgKHNvcnQgKEB7JHRhYmxlc3skdGFibGV9fSkpCisgICAgIHsKKyAgICAgICAgICRzdHIgLj0gJGNvbnRpbnVhdG9yLicgJy4kc2VsZi0+Y2F0ZmlsZSgkZGlyLCRmaWxlKTsKKyAgICAgICAgIGlmICggbGVuZ3RoKCRzdHIpLSRsZW5ndGhzb2ZhciA+IDEyOCokbnVtbGluZXMgKQorQEAgLTE4OSw3ICsxODksNyBAQCBzdWIgcG9zdGFtYmxlCisgICAgICAgICBxcXtcblx0XCQoUEVSTCkgJHBsaWIgJGVuYzJ4cyAkdWNvcHRzIC1vIFwkXEAgLWYgJHRhYmxlLmZubVxuXG59OworICAgICBvcGVuIChGSUxFTElTVCwgIj4kdGFibGUuZm5tIikKKyAgICAgICAgIHx8IGRpZSAiQ291bGQgbm90IG9wZW4gJHRhYmxlLmZubTogJCEiOworLSAgICBmb3JlYWNoIG15ICRmaWxlIChAeyR0YWJsZXN7JHRhYmxlfX0pCisrICAgIGZvcmVhY2ggbXkgJGZpbGUgKHNvcnQgKEB7JHRhYmxlc3skdGFibGV9fSkpCisgICAgIHsKKyAgICAgICAgIHByaW50IEZJTEVMSVNUICRzZWxmLT5jYXRmaWxlKCRkaXIsJGZpbGUpIC4gIlxuIjsKKyAgICAgfQorSW5kZXg6IHBlcmwtNS4zMC4xL2NuZi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMzAuMS5vcmlnL2NuZi9jb25maWd1cmUKKysrKyBwZXJsLTUuMzAuMS9jbmYvY29uZmlndXJlCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vc2gKKysjIS9iaW4vYmFzaAorIAorIGJhc2U9JHswJS8qfTsgdGVzdCAteiAiJGJhc2UiICYmIGJhc2U9LgorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9lbmNvZGVmaXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2VuY29kZWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTZlZDBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9lbmNvZGVmaXgucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorVGhlIGNvZGUgaXMgZW5jb2RpbmcgaG9zdCBjb21waWxlciBwYXJhbWV0ZXJzIGludG8gdGFyZ2V0IGJ1aWxkcy4gQXZvaWQKK3RoaXMgZm9yIG91ciB0YXJnZXQgYnVpbGRzIChwYXRjaCBpcyB0YXJnZXQgc3BlY2lmaWMsIG5vdCBuYXRpdmUpCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ3Jvc3MgY29tcGlsZSBoYWNrXQorUlAgMjAyMC8yLzE4CitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworSW5kZXg6IHBlcmwtNS4zMC4xL2NwYW4vRW5jb2RlL2Jpbi9lbmMyeHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMzAuMS5vcmlnL2NwYW4vRW5jb2RlL2Jpbi9lbmMyeHMKKysrKyBwZXJsLTUuMzAuMS9jcGFuL0VuY29kZS9iaW4vZW5jMnhzCitAQCAtMTk1LDcgKzE5NSw3IEBAIHN1YiBjb21waWxlcl9pbmZvIHsKKyAgICAgIyBhYm92ZSBiZWNvbWVzIGZhbHNlLgorICAgICBteSAkc2l6ZWQgID0gJGRlY2xhcmF0aW9uICYmICEoJGNvbXBhdCAmJiAhJHBlZGFudGljKTsKKyAKKy0gICAgcmV0dXJuICgkY3BwLCAkc3RhdGljLCAkc2l6ZWQpOworKyAgICByZXR1cm4gKDAsIDEsIDEpOworIH0KKyAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZml4LXNldGdyb3VwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9maXgtc2V0Z3JvdXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDkwZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9maXgtc2V0Z3JvdXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1UZXN0IHNjcmlwdCB0byByZXByb2R1Y2UgdGhlIHByb2JsZW06Ci0KLSMhL3Vzci9iaW4vZW52IHBlcmwKLSQpID0gIjIgMiI7Ci1wcmludCAkITsKLQotUmVzdWx0IGZyb20gcGVybCA1LjI4IHVuZGVyIHN0cmFjZToKLQotc2V0Z3JvdXBzKDEsIFsyXSkgICAgICAgICAgICAgICAgICAgICAgID0gMAotc2V0cmVzZ2lkKC0xLCAyLCAtMSkgICAgICAgICAgICAgICAgICAgID0gMAotCi1SZXN1bHQgZnJvbSBwZXJsIDUuMzAgdW5kZXIgc3RyYWNlOgotCi1zZXRncm91cHMoMSwgWy0xXSkgICAgICAgICAgICAgICAgICAgICAgPSAtMSBFSU5WQUwgKEludmFsaWQgYXJndW1lbnQpCi1zZXRyZXNnaWQoLTEsIDIsIC0xKSAgICAgICAgICAgICAgICAgICAgPSAwCi0KLVBhdGNoIHdoaWNoIGJyb2tlIHRoaXMgdXBzdHJlYW06Ci1odHRwczovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXRkaWZmLzVkNGE1MmI1YzY4YTExYmZjOTdjMmUyNDgwNjk5M2I4NGE2MWVhZGUKLQotSXNzdWUgaXMgdGhhdCB0aGUgbmV3IGZ1bmN0aW9uIGNoYW5nZXMgdGhlIGVuZHB0ciB0byB0aGUgZW5kIG9mIHRoZQotc2Nhbm5lZCBudW1iZXIgYW5kIG5lZWRzIHRvIGJlIHJlc2V0IHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBmb3IgCi1lYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC4KLQotW1lPQ1RPICMxMzM5MV0KLQotUlAKLTIwMTkvNi8xNAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBwZXJsLTUuMzAuMC9tZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjMwLjAub3JpZy9tZy5jCi0rKysgcGVybC01LjMwLjAvbWcuYwotQEAgLTMxNzksNiArMzI1Niw3IEBAIFBlcmxfbWFnaWNfc2V0KHBUSFhfIFNWICpzdiwgTUFHSUMgKm1nKQotIAkgICAgY29uc3QgY2hhciAqcCA9IFN2UFZfY29uc3Qoc3YsIGxlbik7Ci0gICAgICAgICAgICAgR3JvdXBzX3QgKmdhcnkgPSBOVUxMOwotICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVuZHB0ciA9IHAgKyBsZW47Ci0rICAgICAgICAgICAgY29uc3QgY2hhciogcmVhbGVuZCA9IHAgKyBsZW47Ci0gICAgICAgICAgICAgVVYgdXY7Ci0gI2lmZGVmIF9TQ19OR1JPVVBTX01BWAotICAgICAgICAgICAgaW50IG1heGdycCA9IHN5c2NvbmYoX1NDX05HUk9VUFNfTUFYKTsKLUBAIC0zMjA5LDYgKzMyODcsNyBAQCBQZXJsX21hZ2ljX3NldChwVEhYXyBTViAqc3YsIE1BR0lDICptZykKLSAgICAgICAgICAgICAgICAgICAgIE5ld3goZ2FyeSwgaSArIDEsIEdyb3Vwc190KTsKLSAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgUmVuZXcoZ2FyeSwgaSArIDEsIEdyb3Vwc190KTsKLSsgICAgICAgICAgICAgICAgZW5kcHRyID0gcmVhbGVuZDsKLSAgICAgICAgICAgICAgICAgaWYgKGdyb2tfYXRvVVYocCwgJnV2LCAmZW5kcHRyKSkKLSAgICAgICAgICAgICAgICAgICAgIGdhcnlbaV0gPSAoR3JvdXBzX3QpdXY7Ci0gICAgICAgICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKaW5kZXggM2MyY2VjYi4uODBjZTRhNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ZjMxM2NhYzMxYzU1Y2JlNjJhNGQwY2RmYTgzMjFjYzA1YThlYjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MTIwYWNhYTJiZTU3ODdkOTY1N2Y2YjkxYmM4ZWUzYzJkNjY0ZmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDI3IE1heSAyMDA3IDIxOjA0OjExICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHBlcmw6IDUuOC43IC0+IDUuOC44IChmcm9tIE9FKQpAQCAtMjAsNyArMjAsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlncG0gYi9jb25maWdwbQotaW5kZXggMDljNGEzYi4uNmEwYTY4MCAxMDA3NTUKK2luZGV4IGM4ZGU4YmYuLjIwNDYxM2MgMTAwNzU1CiAtLS0gYS9jb25maWdwbQogKysrIGIvY29uZmlncG0KIEBAIC02ODcsNyArNjg3LDcgQEAgc3ViIEZFVENIIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1yZGVwZW5kcy50eHQgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtcmRlcGVuZHMudHh0CmluZGV4IDMzMWE0NGQuLjllY2ZjZTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1yZGVwZW5kcy50eHQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dApAQCAtMjIxOCw2ICsyMjE4LDcgQEAKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1oYXNoLW5hbWVkY2FwdHVyZSArPSAicGVybC1tb2R1bGUtc3RyaWN0IgogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLWhhc2gtbmFtZWRjYXB0dXJlICs9ICJwZXJsLW1vZHVsZS14c2xvYWRlciIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1oYXNoICs9ICJwZXJsLW1vZHVsZS13YXJuaW5ncy1yZWdpc3RlciIKK1JERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1oYXNoICs9ICJwZXJsLW1vZHVsZS1jYXJwIgogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLW1lbW9pemUgKz0gInBlcmwtbW9kdWxlLXN0cmljdCIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1tZW1vaXplICs9ICJwZXJsLW1vZHVsZS10aWUtaGFzaCIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1yZWZoYXNoICs9ICJwZXJsLW1vZHVsZS1jb25maWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjFmNmQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAotRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKLVNlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAotZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3NobG9taWYvcGVybC1lcnJvci5wbSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMzQ5OWQwOWVlNzRhMDUwYzAzMTkzOTFmZjlkMTAwIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKLSAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgIHBlcmwtbW9kdWxlLXZhcnMgXAotICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtYmFzZSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKLSAgICBwZXJsLW1vZHVsZS1pby1oYW5kbGUgXAotICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCi0gICAgcGVybC1tb2R1bGUtbGliIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9FcnJvci0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZWY5YjI4OTBmYjE0NGQ4MDQ1MjdiYTMyNTczZGQ1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2IyYWM4Mjc1ZGZhMDQxNDQ3NDVhNmMxOTAwYTU5NjI4MGY4NjJiOTdkMjJiYWIwYzVjZTAyNjgyZWJkM2JlIgotCi1TID0gIiR7V09SS0RJUn0vRXJyb3ItJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KLQlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzg4MDhmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjkuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgorREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAorRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKK1NlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAorZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NobG9taWYvcGVybC1lcnJvci5wbSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMzQ5OWQwOWVlNzRhMDUwYzAzMTkzOTFmZjlkMTAwIgorCitERVBFTkRTICs9ICJwZXJsIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKKyAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAorICAgIHBlcmwtbW9kdWxlLXZhcnMgXAorICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgcGVybC1tb2R1bGUtYmFzZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICBwZXJsLW1vZHVsZS1pby1oYW5kbGUgXAorICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCisgICAgcGVybC1tb2R1bGUtbGliIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9FcnJvci0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NzMyYjFjNjIwN2U0YTlhM2UyOTg3Yzg4MzY4MDM5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYTIzZjc5MTMwMzJhZWQ2ZDRiNjgzMjEzNzNhMzg5OWNhNjY1OTBmNDcyNzM5MWEwOTFlYzE5Yzk1YmY3YWRjIgorCitTID0gIiR7V09SS0RJUn0vRXJyb3ItJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsL3J1bi1wdGVzdAppbmRleCAwZDYzZDE1Li5kODAyNzgxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsL3J1bi1wdGVzdApAQCAtNiw4ICs2LDYgQEAKICAgICBjYXQgJGNhc2Uub3V0cHV0CiAgICAgaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KICAgICAgICAgZWNobyAiRkFJTDogJHtjYXNlJS50fSIKLSAgICBlbGlmIGdyZXAgLWkgJ1NLSVAnICRjYXNlLm91dHB1dDsgdGhlbgotICAgICAgICBlY2hvICJTS0lQOiAke2Nhc2UlLnR9IgogICAgIGVsc2UKICAgICAgICAgZWNobyAiUEFTUzogJHtjYXNlJS50fSIKICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIyOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1OWY4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIyOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1TVU1NQVJZID0gIk1vZHVsZTo6QnVpbGQgLSBCdWlsZCBhbmQgaW5zdGFsbCBQZXJsIG1vZHVsZXMiCi1ERVNDUklQVElPTiA9ICJNYW55IFBlcmwgZGlzdHJpYnV0aW9ucyB1c2UgYSBCdWlsZC5QTCBmaWxlIGluc3RlYWQgb2YgYSBcCi1NYWtlZmlsZS5QTCBmaWxlIHRvIGRyaXZlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBidWlsZCwgdGVzdCBhbmQgXAotaW5zdGFsbGF0aW9uLiBUcmFkaXRpb25hbGx5LCBCdWlsZC5QTCB1c2VzIE1vZHVsZTo6QnVpbGQgYXMgdGhlIHVuZGVybHlpbmcgXAotYnVpbGQgc3lzdGVtLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSwgbGlnaHR3ZWlnaHQsIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFwKLVdoZXJlYXMgTW9kdWxlOjpCdWlsZCBoYXMgb3ZlciA2LDcwMCBsaW5lcyBvZiBjb2RlOyB0aGlzIG1vZHVsZSBoYXMgbGVzcyB0aGFuIFwKLTEyMCwgeWV0IHN1cHBvcnRzIHRoZSBmZWF0dXJlcyBuZWVkZWQgYnkgbW9zdCBkaXN0cmlidXRpb25zLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL01vZHVsZS1CdWlsZCIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9OTQ5O2VuZGxpbmU9OTU0O21kNT02MjRjMDZkYjU2YTJhZjRkNzBjZjllZGMyOWZjYWUxYiIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvTW9kdWxlLUJ1aWxkLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxNDQ3ZDllMDJlNjNmN2ExNjQzOTg2Nzg5YThmMWJhOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmU0OTFhNmNkYTkxNGIwMWJjOGU1OTJmYWEyYjU0MDRlOWYzNTkxNWNhMTUzMjJmOGYyYThkOGY5MDA4YzE4IgotCi1TID0gIiR7V09SS0RJUn0vTW9kdWxlLUJ1aWxkLSR7UFZ9IgotCi1pbmhlcml0IGNwYW5fYnVpbGQgcHRlc3QtcGVybAotCi0jIEZyb206Ci0jIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWhzYWNrL21ldGEtY3Bhbi9ibG9iL21hc3Rlci9yZWNpcGVzLWRldmVsL21vZHVsZS1idWlsZC1wZXJsL21vZHVsZS1idWlsZC1wZXJsXzAuNDIxNi5iYgotIwotZG9fcGF0Y2hfbW9kdWxlX2J1aWxkICgpIHsKLSAgICBjZCAke1N9Ci0gICAgc2VkIC1pIC1lICdzLG15ICRpbnRlcnByZXRlciA9ICRzZWxmLT57cHJvcGVydGllc317cGVybH07LG15ICRpbnRlcnByZXRlciA9ICIke2JpbmRpcn0vcGVybCI7LGcnIGxpYi9Nb2R1bGUvQnVpbGQvQmFzZS5wbQotfQotCi1kb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJkb19wYXRjaF9tb2R1bGVfYnVpbGQiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXIgJHtCfS9pbmMgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke0J9L2JsaWIgJHtEfSR7UFRFU1RfUEFUSH0KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgcGVybC1tb2R1bGUtY3BhbiBcCi0gICAgcGVybC1tb2R1bGUtY29uZmlnIFwKLSAgICBwZXJsLW1vZHVsZS1jd2QgXAotICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNidWlsZGVyIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jb21tYW5kIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1pbnN0YWxsIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1pbnN0YWxsZWQgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1rYm9vdHN0cmFwIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYWNrbGlzdCBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtcGFyc2V4cyBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1jb21wYXJlIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWNvcHkgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBcCi0gICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAotICAgIHBlcmwtbW9kdWxlLW1ldGFkYXRhIFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsLW9zdHlwZSBcCi0gICAgcGVybC1tb2R1bGUtcG9kLW1hbiBcCi0gICAgcGVybC1tb2R1bGUtdGFwLWhhcm5lc3MgXAotICAgIHBlcmwtbW9kdWxlLXRleHQtYWJicmV2IFwKLSAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAotICAgIHBlcmwtbW9kdWxlLXV0ZjggXAotIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKLSAgICBnY2MgXAotICAgIG1ha2UgXAotICAgIHBlcmwtbW9kdWxlLWJsaWIgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCi0gICAgcGVybC1tb2R1bGUtbGliIFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsaW8gXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpby1lbmNvZGluZyBcCi0gICAgcGVybC1tb2R1bGUtcG9kLXRleHQgXAotICAgIHBlcmwtbW9kdWxlLXRhcC1oYXJuZXNzLWVudiBcCi0gICAgcGVybC1tb2R1bGUtdGFwLXBhcnNlciBcCi0gICAgcGVybC1tb2R1bGUtdGFwLXBhcnNlci1zY2hlZHVsZXIgXAotICAgIHBlcmwtbW9kdWxlLXRlc3QtaGFybmVzcyBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJcCi0gICAgbGlibW9kdWxlLWJ1aWxkLWJhc2UtcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLWNvbXBhdC1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtY29uZmlnLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1jb29rYm9vay1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtZHVtcGVyLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1ub3Rlcy1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcHBtYWtlci1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcGxhdGZvcm0tZGVmYXVsdC1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcGxhdGZvcm0tdW5peC1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcG9kcGFyc2VyLXBlcmwgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZmZDdiMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjMxLmJiCkBAIC0wLDAgKzEsMTIzIEBACitTVU1NQVJZID0gIk1vZHVsZTo6QnVpbGQgLSBCdWlsZCBhbmQgaW5zdGFsbCBQZXJsIG1vZHVsZXMiCitERVNDUklQVElPTiA9ICJNYW55IFBlcmwgZGlzdHJpYnV0aW9ucyB1c2UgYSBCdWlsZC5QTCBmaWxlIGluc3RlYWQgb2YgYSBcCitNYWtlZmlsZS5QTCBmaWxlIHRvIGRyaXZlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBidWlsZCwgdGVzdCBhbmQgXAoraW5zdGFsbGF0aW9uLiBUcmFkaXRpb25hbGx5LCBCdWlsZC5QTCB1c2VzIE1vZHVsZTo6QnVpbGQgYXMgdGhlIHVuZGVybHlpbmcgXAorYnVpbGQgc3lzdGVtLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSwgbGlnaHR3ZWlnaHQsIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFwKK1doZXJlYXMgTW9kdWxlOjpCdWlsZCBoYXMgb3ZlciA2LDcwMCBsaW5lcyBvZiBjb2RlOyB0aGlzIG1vZHVsZSBoYXMgbGVzcyB0aGFuIFwKKzEyMCwgeWV0IHN1cHBvcnRzIHRoZSBmZWF0dXJlcyBuZWVkZWQgYnkgbW9zdCBkaXN0cmlidXRpb25zLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL01vZHVsZS1CdWlsZCIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9OTQ5O2VuZGxpbmU9OTU0O21kNT02MjRjMDZkYjU2YTJhZjRkNzBjZjllZGMyOWZjYWUxYiIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvTW9kdWxlLUJ1aWxkLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDY2YjE5M2U0NjFkN2RmZTFlY2ExN2ExMzkzNTMwMDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2UwZjRjNjkyYzE3NDBjMWFjODRlYTE0ZDdlYTNkOGJjNzk4YjJmYjI2YzA5ODc3MjI5ZTA0ZjQzMGIyYjcxNyIKKworUyA9ICIke1dPUktESVJ9L01vZHVsZS1CdWlsZC0ke1BWfSIKKworaW5oZXJpdCBjcGFuX2J1aWxkIHB0ZXN0LXBlcmwKKworIyBGcm9tOgorIyBodHRwczovL2dpdGh1Yi5jb20vcmVoc2Fjay9tZXRhLWNwYW4vYmxvYi9tYXN0ZXIvcmVjaXBlcy1kZXZlbC9tb2R1bGUtYnVpbGQtcGVybC9tb2R1bGUtYnVpbGQtcGVybF8wLjQyMTYuYmIKKyMKK2RvX3BhdGNoX21vZHVsZV9idWlsZCAoKSB7CisgICAgY2QgJHtTfQorICAgIHNlZCAtaSAtZSAncyxteSAkaW50ZXJwcmV0ZXIgPSAkc2VsZi0+e3Byb3BlcnRpZXN9e3Blcmx9OyxteSAkaW50ZXJwcmV0ZXIgPSAiJHtiaW5kaXJ9L3BlcmwiOyxnJyBsaWIvTW9kdWxlL0J1aWxkL0Jhc2UucG0KK30KKworZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiZG9fcGF0Y2hfbW9kdWxlX2J1aWxkIgorCitFWFRSQV9DUEFOX0JVSUxEX0ZMQUdTID0gIi0tY3JlYXRlX3BhY2tsaXN0PTAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAgICAgcm0gLXJmICR7RH0ke2RvY2Rpcn0vcGVybC9odG1sCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXIgJHtCfS9pbmMgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke0J9L2JsaWIgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke0J9L19idWlsZCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7Qn0vbGliICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9CisJc2VkIC1pIC1lICJzLCdwZXJsJyA9PiAuKiwncGVybCcgPT4gJy91c3IvYmluL3BlcmwnXCwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL1wuXC4sJHtiaW5kaXJ9LyxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1N9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke0R9LCxnIiBcCisgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9fYnVpbGQvYnVpbGRfcGFyYW1zIFwKKyAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L19idWlsZC9ydW50aW1lX3BhcmFtcworICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0vYmxpYi9saWJodG1sL3NpdGUvbGliL01vZHVsZS8KKyAgICAgICAgcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L19idWlsZC9tYWdpY251bQorfQorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICBwZXJsLW1vZHVsZS1jcGFuIFwKKyAgICBwZXJsLW1vZHVsZS1jb25maWcgXAorICAgIHBlcmwtbW9kdWxlLWN3ZCBcCisgICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAorICAgIHBlcmwtbW9kdWxlLWVuY29kZSBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY2J1aWxkZXIgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNvbW1hbmQgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWluc3RhbGwgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWluc3RhbGxlZCBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWtib290c3RyYXAgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLXBhY2tsaXN0IFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYXJzZXhzIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWNvbXBhcmUgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIFwKKyAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisgICAgcGVybC1tb2R1bGUtbWV0YWRhdGEgXAorICAgIHBlcmwtbW9kdWxlLXBlcmwtb3N0eXBlIFwKKyAgICBwZXJsLW1vZHVsZS1wb2QtbWFuIFwKKyAgICBwZXJsLW1vZHVsZS10YXAtaGFybmVzcyBcCisgICAgcGVybC1tb2R1bGUtdGV4dC1hYmJyZXYgXAorICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCisgICAgcGVybC1tb2R1bGUtdXRmOCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsIFwKKyAgICBwZXJsLWRldiBcCisgICAgcGVybC1tb2R1bGUtYmxpYiBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY29tbWFuZC1tbSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLWVuY29kaW5nIFwKKyAgICBwZXJsLW1vZHVsZS1wb2QtdGV4dCBcCisgICAgcGVybC1tb2R1bGUtdGFwLWhhcm5lc3MtZW52IFwKKyAgICBwZXJsLW1vZHVsZS10YXAtcGFyc2VyIFwKKyAgICBwZXJsLW1vZHVsZS10YXAtcGFyc2VyLXNjaGVkdWxlciBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1oYXJuZXNzIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorIgorCitSUFJPVklERVNfJHtQTn0gKz0gIlwKKyAgICBsaWJtb2R1bGUtYnVpbGQtYmFzZS1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtY29tcGF0LXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1jb25maWctcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLWNvb2tib29rLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1kdW1wZXItcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLW5vdGVzLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wcG1ha2VyLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wbGF0Zm9ybS1kZWZhdWx0LXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wbGF0Zm9ybS11bml4LXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wb2RwYXJzZXItcGVybCBcCisiCisKKyMgdC94cy50IFJERVBFTkRTIG9uICJFWFRFUk4uaCIgcHJvdmlkZWQgYnkgcGVybC1kZXYKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ID0gImRldi1kZXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzliNzY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIlhNTDo6UGFyc2VyIC0gQSBwZXJsIG1vZHVsZSBmb3IgcGFyc2luZyBYTUwgZG9jdW1lbnRzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJleHBhdC5naXRodWIuaW8vIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjtlbmRsaW5lPTY7bWQ1PWM4NzY3ZDc1MTYyMjlmMDdiMjZlNDJkMWNmOGI1MWYxIgotCi1ERVBFTkRTICs9ICJleHBhdCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL1hNTC9YTUwtUGFyc2VyLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjQ4MTNmZTM5NTIzNjI0NTEyMDFjZWQ2ZmJjZTM3OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYWU5ZDA3ZWU5YzM1MzI2YjNkOWFhZDU2ZWFlNzFhNjczMGE3M2ExMTZiOWZlOWU4YTQ3NThiN2NjMDMzMjE2IgotCi1TID0gIiR7V09SS0RJUn0vWE1MLVBhcnNlci0ke1BWfSIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0gQ0M9JyR7Q0N9JyBMRD0nJHtDQ0xEfScgRlVMTF9BUj0nJHtBUn0nIgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi0jIGZpeCB1cCBzdWIgTWFrZU1ha2VyIHByb2plY3QgYXMgYXJndW1lbnRzIGRvbid0IGdldCBwcm9wYWdhdGVkIHRob3VnaAotIyBzZWUgaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD0yODYzMgotZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1FIFwKLQkgICAgLWUgJ3M6LUwke1NUQUdJTkdfTElCRElSfTo6ZycgLWUgJ3M6LUkke1NUQUdJTkdfSU5DRElSfTo6ZycgXAotCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtZSAnczotLXN5c3Jvb3Q9LipcKFxzXHwkXCk6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSA6ZycgXAotCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQotCXNlZCAnczpeRlVMTF9BUiA9IC4qOkZVTExfQVIgPSAke0FSfTpnJyAtaSBFeHBhdC9NYWtlZmlsZQotCSMgbWFrZSBzdXJlIHRoZXNlIHR3byBkbyBub3QgYnVpbGQgaW4gcGFyYWxsZWwKLQlzZWQgJ3MhXiQoSU5TVF9EWU5BTUlDKTohJChJTlNUX0RZTkFNSUMpOiAkKEJPT1RTVFJBUCkhJyAtaSBFeHBhdC9NYWtlZmlsZQotfQotCi1kb19jb21waWxlKCkgewotCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCi0JY3Bhbl9kb19jb21waWxlCi19Ci0KLWRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgewotCWNwYW5fZG9fY29tcGlsZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbHN0YXRzCi0Jc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sZmlsdGVyCi0Jc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sY29tbWVudHMKLQlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy9jYW5vbmljYWwKLQljcCAtciAke0J9L3NhbXBsZXMgJHtEfSR7UFRFU1RfUEFUSH0KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0vc2FtcGxlcwotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1pZiBwZXJsLW1vZHVsZS10ZXN0IHBlcmwtbW9kdWxlLXRlc3QtbW9yZSIKLQotQkJDTEFTU0VYVEVORD0ibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMTU0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ2LmJiCkBAIC0wLDAgKzEsNTggQEAKK1NVTU1BUlkgPSAiWE1MOjpQYXJzZXIgLSBBIHBlcmwgbW9kdWxlIGZvciBwYXJzaW5nIFhNTCBkb2N1bWVudHMiCitIT01FUEFHRSA9ICJodHRwczovL2xpYmV4cGF0LmdpdGh1Yi5pby8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUGFyc2VyLnBtO2JlZ2lubGluZT0xO2VuZGxpbmU9NzttZDU9ZDEyY2M3NzhjODBmYzRjNTE4ZjBlNWRlZTI5ZmQ1ZmIiCisKK0RFUEVORFMgKz0gImV4cGF0IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvWE1ML1hNTC1QYXJzZXItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LXBlcmwvcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2tMaWIucG0tZG8tbm90LWF0dGVtcHQtdG8tcnVuLWEtY3Jvc3MtZXhlY3V0YWJsZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MGJiMThhOGU2MjQwZmNmN2VjMmY3YjU3NjAxYzE3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzMxMzMyNDkxYzUxY2NjZmI0Y2I5NGZmYzQ0ZjljZDczMzc4ZTYxODQ5OGQ0YTM3ZGY5ZTA0MzY2MWM1MTVkIgorCitTID0gIiR7V09SS0RJUn0vWE1MLVBhcnNlci0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0gQ0M9JyR7Q0N9JyBMRD0nJHtDQ0xEfScgRlVMTF9BUj0nJHtBUn0nIgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCisjIGZpeCB1cCBzdWIgTWFrZU1ha2VyIHByb2plY3QgYXMgYXJndW1lbnRzIGRvbid0IGdldCBwcm9wYWdhdGVkIHRob3VnaAorIyBzZWUgaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD0yODYzMgorZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1FIFwKKwkgICAgLWUgJ3M6LUwke1NUQUdJTkdfTElCRElSfTo6ZycgLWUgJ3M6LUkke1NUQUdJTkdfSU5DRElSfTo6ZycgXAorCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQorfQorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCXNlZCAtZSAnczotLXN5c3Jvb3Q9LipcKFxzXHwkXCk6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSA6ZycgXAorCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQorCXNlZCAnczpeRlVMTF9BUiA9IC4qOkZVTExfQVIgPSAke0FSfTpnJyAtaSBFeHBhdC9NYWtlZmlsZQorCSMgbWFrZSBzdXJlIHRoZXNlIHR3byBkbyBub3QgYnVpbGQgaW4gcGFyYWxsZWwKKwlzZWQgJ3MhXiQoSU5TVF9EWU5BTUlDKTohJChJTlNUX0RZTkFNSUMpOiAkKEJPT1RTVFJBUCkhJyAtaSBFeHBhdC9NYWtlZmlsZQorfQorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK2RvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgeworCWNwYW5fZG9fY29tcGlsZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbHN0YXRzCisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sZmlsdGVyCisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sY29tbWVudHMKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy9jYW5vbmljYWwKKwljcCAtciAke0J9L3NhbXBsZXMgJHtEfSR7UFRFU1RfUEFUSH0KKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0vc2FtcGxlcworfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1pZiBwZXJsLW1vZHVsZS10ZXN0IHBlcmwtbW9kdWxlLXRlc3QtbW9yZSIKKworQkJDTEFTU0VYVEVORD0ibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCmluZGV4IDcxNTIwNTcuLjk4ZTMzNjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYwpAQCAtNDIsNiArNDIsOSBAQAogCiAJICMgUmVtb3ZlIGEgdXNlbGVzcyB0aW1lc3RhbXAuLi4KIAkgc2VkIC1pIC1lICcvQXV0b2dlbmVyYXRlZCBzdGFydGluZyBvbi9kJyAke0R9JHtQVEVTVF9QQVRIfS9saWIvdW5pY29yZS9ta3RhYmxlcy5sc3QKKworCSAjIFJlbW92ZSBmaWxlcyB3aXRoIGhvc3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYnVpbGRpbmcgbmF0aXZlIGJpbmFyaWVzCisJIHJtICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlLmNvbmZpZyAke0R9JHtQVEVTVF9QQVRIfS94Y29uZmlnLmggJHtEfSR7UFRFU1RfUEFUSH0veGNvbmZpZy5zaAogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4zMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDkwNmE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIHNjcmlwdGluZyBsYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGVybC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5aW5nO21kNT01YjEyMmEzNmQwZjZkYzU1Mjc5YTBlYmM2OWYzYzYwYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9BcnRpc3RpYzttZDU9NzFhNGQ1ZDlhY2MxOGMwOTUyYTZkZjIyMThiYjY4ZGEgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5jcGFuLm9yZy9zcmMvNS4wL3BlcmwtJHtQVn0udGFyLmd6O25hbWU9cGVybCBcCi0gICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvcmVsZWFzZXMvZG93bmxvYWQvMS4zL3BlcmwtY3Jvc3MtMS4zLnRhci5nejtuYW1lPXBlcmwtY3Jvc3MgXAotICAgICAgICAgICBmaWxlOi8vcGVybC1yZGVwZW5kcy50eHQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmVfdG9vbC5zaC1kby1ub3QtcXVvdGUtdGhlLWFyZ3VtZW50LXRvLWNvbW1hLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRXh0VXRpbHMtTWFrZU1ha2VyLWFkZC1MREZMQUdTLXdoZW4tbGlua2luZy1iaW5hcnktbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVNvbWVob3ctdGhpcy1tb2R1bGUtYnJlYWtzLXRocm91Z2gtdGhlLXBlcmwtd3JhcHBlci0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXJybm9fdmVyLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vbmF0aXZlLXBlcmxpbmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wZXJsLWNyb3NzLWFkZC1MREZMQUdTLXdoZW4tbGlua2luZy1saWJwZXJsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BlcmwtZHlubG9hZGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlX3BhdGguc2gtZG8tbm90LWhhcmRjb2RlLXByZWZpeC1saWItYXMtbGlici5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2V0Z3JvdXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lbmMyeHMtQWRkLWVudmlyb25tZW50LXZhcmlhYmxlLXRvLXN1cHByZXNzLWNvbW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQ29uc3RhbnQtRml4LXVwLXNoZWJhbmcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoIFwKLSIKLQotU1JDX1VSSVtwZXJsLm1kNXN1bV0gPSAiOTc3MDU4NGNkZjliNTYzMWMzODA5NzY0NWNlMzM1NDkiCi1TUkNfVVJJW3Blcmwuc2hhMjU2c3VtXSA9ICI4NTEyMTNjNzU0ZDk4Y2NmZjA0MmNhYTQwYmE3YTc5NmIyY2VlODhjNTMyNWYxMjFiZTVjYmI2MWJiZjk3NWYyIgotU1JDX1VSSVtwZXJsLWNyb3NzLm1kNXN1bV0gPSAiNGRkYTNkYWY5YzRmZTQyYjNkNmE1ZGQwNTI4NTJhNDgiCi1TUkNfVVJJW3BlcmwtY3Jvc3Muc2hhMjU2c3VtXSA9ICI0OWVkZWExZWEyY2Q2YzVjNDczODZjYTcxYmVkYThkMTUwYzc0ODgzNTc4MTM1NGRiZTdmNzViMWRmMjdlNzAzIgotCi1TID0gIiR7V09SS0RJUn0vcGVybC0ke1BWfSIKLQotaW5oZXJpdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotREVQRU5EUyArPSAiemxpYiB2aXJ0dWFsL2NyeXB0IgotCi1QRVJMX0xJQl9WRVIgPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjJdKX0uMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiBnZGJtIgotUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwtVWlfZGIsZGIiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIiwtVWlfZ2RibSxnZGJtIgotCi0jIERvbid0IGdlbmVyYXRlIGNvbW1lbnRzIGluIGVuYzJ4cyBvdXRwdXQgZmlsZXMuIFRoZXkgYXJlIG5vdCByZXByb2R1Y2libGUKLWV4cG9ydCBFTkMyWFNfTk9fQ09NTUVOVFMgPSAiMSIKLQotZG9fdW5wYWNrX2FwcGVuZCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2NvcHlfcGVybGNyb3NzJywgZCkKLX0KLQotZG9fY29weV9wZXJsY3Jvc3MoKSB7Ci0gICAgY3AgLXJmcCAke1dPUktESVJ9L3BlcmwtY3Jvc3MqLyogJHtTfQotfQotCi1kb19jb25maWd1cmVfY2xhc3MtdGFyZ2V0KCkgewotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAotICAgIC1EdXNlc2hycGxpYiBcCi0gICAgLURzb25hbWU9bGlicGVybC5zby41IFwKLSAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAotICAgIC1EYXJjaGxpYmV4cD0ke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eCBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotCi0gICAgI3BlcmwuYyB1c2VzIGFuIEFSQ0hMSUJfRVhQIGRlZmluZSB0byBnZW5lcmF0ZSBjb21waWxlLXRpbWUgY29kZSB0aGF0Ci0gICAgI2FkZHMgdGhlIGFyY2hsaWJleHAgcGF0aCB0byBASU5DIGR1cmluZyBydW4tdGltZSBpbml0aWFsaXphdGlvbiBvZiBhCi0gICAgI25ldyBwZXJsIGludGVycHJldGVyLgotCi0gICAgI0JlY2F1c2Ugd2UndmUgY2hhbmdlZCB0aGlzIHZhbHVlIGluIGEgdGVtcG9yYXJ5IHdheSB0byBtYWtlIGl0Ci0gICAgI3Bvc3NpYmxlIHRvIHVzZSBFeHRVdGlsczo6RW1iZWQgaW4gdGhlIHRhcmdldCBidWlsZCAodGhlIHRlbXBvcmFyeQotICAgICN2YWx1ZSBpbiBjb25maWcuc2ggZ2V0cyByZS1zdHJpcHBlZCBvdXQgZHVyaW5nIHBhY2thZ2luZyksIHRoZQotICAgICNBUkNITElCX0VYUCB2YWx1ZSB0aGF0IGdldHMgZ2VuZXJhdGVkIHN0aWxsIHVzZXMgdGhlIHRlbXBvcmFyeSB2ZXJzaW9uCi0gICAgI2luc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGV4cGVjdGVkIHZlcnNpb24gKGkuZS4gYmVjYXVzZXMgaXQncyBpbiB0aGUKLSAgICAjZ2VuZXJhdGVkIGNvbmZpZy5oLCBpdCBkb2Vzbid0IGdldCBzdHJpcHBlZCBvdXQgZHVyaW5nIHBhY2thZ2luZyBsaWtlCi0gICAgI3RoZSBvdGhlcnMgaW4gY29uZmlnLnNoKS4KLQotICAgIHNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgY29uZmlnLmgKLX0KLQotZG9fY29uZmlndXJlX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAotICAgIC1EdXNlc2hycGxpYiBcCi0gICAgLURzb25hbWU9bGlicGVybC5zby41IFwKLSAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAotICAgIC1EYXJjaGxpYmV4cD0ke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eCBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotCi0gICAgIyBTZWUgdGhlIGNvbW1lbnQgYWJvdmUKLSAgICBzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIGNvbmZpZy5oCi19Ci0KLWRvX2NvbmZpZ3VyZV9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtRGJpbj0ke2JpbmRpcn0vcGVybC1uYXRpdmUgXAotICAgIC1EdXNlc2hycGxpYiBcCi0gICAgLURzb25hbWU9bGlicGVybC5zby41IFwKLSAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAotICAgIC1VaV94bG9jYWxlIFwKLSAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9Ci19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgaWYgWyAtbiAiJFNPVVJDRV9EQVRFX0VQT0NIIiBdOyB0aGVuCi0gICAgICAgIFBFUkxfQlVJTERfREFURT0iJCgke1BZVEhPTn0gLWMgIlwKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZTsgXAotcHJpbnQoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgkU09VUkNFX0RBVEVfRVBPQ0gsIHRpbWV6b25lLnV0Yykuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZJykpIFwKLSAgICAgICAgICAgICIpIgotICAgICAgICBlY2hvICIjZGVmaW5lIFBFUkxfQlVJTERfREFURSBcIiRQRVJMX0JVSUxEX0RBVEVcIiIgPj4gY29uZmlnLmgKLSAgICBmaQotfQotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvCi0KLSAgICAjIFNhdmUgbmF0aXZlIGNvbmZpZwotICAgIGluc3RhbGwgY29uZmlnLnNoICR7RH0ke2xpYmRpcn0vcGVybDUKLSAgICBpbnN0YWxsIGxpYi9Db25maWcucG0gJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8KLSAgICBpbnN0YWxsIGxpYi9FeHRVdGlscy90eXBlbWFwICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvCi0KLSAgICAjIEZpeCB1cCBzaGFyZWQgbGlicmFyeQotICAgIHJtICR7RH0vJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRS9saWJwZXJsLnNvCi0gICAgbG4gLXNmIC4uLy4uLy4uLy4uL2xpYnBlcmwuc28uJHtQRVJMX0xJQl9WRVJ9ICQoZWNobyAke0R9LyR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUpL2xpYnBlcmwuc28KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICMgVGhpcyBpcyB1c2VkIHRvIHN1YnN0aXR1dGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIG5hdGl2ZSBwZXJsIHZpYSBwZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAotICAgIGxuIC1zIENvbmZpZ19oZWF2eS5wbCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19oZWF2eS10YXJnZXQucGwKLQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgIyBUaGlzIGlzIHVzZWQgdG8gc3Vic3RpdHV0ZSB0YXJnZXQgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgbmF0aXZlIHBlcmwgdmlhIHBlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCi0gICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LXRhcmdldC5wbAotCi0gICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsIFwKLSAgICAgICAgUEVSTDVMSUI9JyRQRVJMNUxJQjokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvc2l0ZV9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS92ZW5kb3JfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvJHtQVn0nCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgIyBUaG9zZSB3cmFwcGVycyBtZWFuIHRoYXQgcGVybCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUgKHdoaWNoIG1heSBjaGFuZ2UKLSAgICAjIHBhdGggbG9jYXRpb24pIHdvcmtzIGFuZCB0aGF0IGluIHRoZSBuYXRpdmVzZGsgY2FzZSwgdGhlIFNESyBjYW4gYmUKLSAgICAjIGluc3RhbGxlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiBmcm9tIHRoZSBvbmUgaXQgd2FzIGJ1aWx0IGZvci4KLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwtbmF0aXZlL3BlcmwgUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsNS9zaXRlX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvdmVuZG9yX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0nCi0KLSAgICAjIFVzZSAvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybCBmb3IgdGhlIHBlcmwgc2NyaXB0LgotICAgIGZvciBmIGluIGBncmVwIC1JbCAnIyEgKiR7YmluZGlyfS9wZXJsJyAke0R9LyR7YmluZGlyfS8qYDsgZG8KLSAgICAgICAgICAgIHNlZCAtaSAtZSAnc3wke2JpbmRpcn0vcGVybHwvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybHwnICRmCi0gICAgZG9uZQotfQotCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1wZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0gICAgICAgICMgRml4IHVwIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIHNlZCAtaSAtZSAicywke0R9LCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke0RFQlVHX1BSRUZJWF9NQVB9LCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSfSwke2JpbmRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gyeHMgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnBoIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMm1hbiBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ0ZXh0IFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMnVzYWdlIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kY2hlY2tlciBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZHNlbGVjdCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvY29uZmlnLmggXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL3BlcmwuaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvcHAuaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wb2QgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfZ2l0LnBsIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LnBsIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvTGlibGlzdC9LaWQucG0gXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9GaWxlQ2FjaGUucG0gXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9wb2QvKi5wb2QgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS9jb25maWcuc2gKLX0KLQotcmVxdWlyZSBwZXJsLXB0ZXN0LmluYwotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcGVybCAke2JpbmRpcn0vcGVybC5yZWFsICR7YmluZGlyfS9wZXJsJHtQVn0gJHtsaWJkaXJ9L2xpYnBlcmwuc28qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS9zaXRlX3BlcmwgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9Db25maWdfZ2l0LnBsIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NvbmZpZ19oZWF2eS10YXJnZXQucGwgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L2NvbmZpZy5zaCBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vc3RyaWN0LnBtIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS93YXJuaW5ncy5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vd2FybmluZ3MgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3ZhcnMucG0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L3NpdGVfcGVybCBcCi0gICAgICAgICAgICAgICAiCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLXN0cmljdCBwZXJsLW1vZHVsZS12YXJzIHBlcmwtbW9kdWxlLWNvbmZpZyBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCi0gICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzLXJlZ2lzdGVyIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFL2xpYnBlcmwuYSIKLQotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRSIKLQotRklMRVNfJHtQTn0tZG9jX2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L1VuaWNvZGUvQ29sbGF0ZS8qLnR4dCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8ucGFja2xpc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL01BTklGRVNULlNLSVAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL3hzdWJwcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvdHlwZW1hcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRW5jb2RlL2VuY29kZS5oIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLQotRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vKiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBvZCIKLQotRklMRVNfJHtQTn0tcG9kID0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS9wb2QgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLnBvZCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi5wb2QgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyovKi5wb2QgXCAKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLyovKi5wb2QgXCAKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZS1jcGFuICR7UE59LW1vZHVsZS11bmljb3JlIgotCi1GSUxFU18ke1BOfS1tb2R1bGUtY3BhbiArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NQQU4gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1tb2R1bGUtdW5pY29yZSArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3VuaWNvcmUiCi0KLSMgQ3JlYXRlIGEgcGVybC1tb2R1bGVzIHBhY2thZ2UgcmVjb21tZW5kaW5nIGFsbCB0aGUgb3RoZXIgcGVybAotIyBwYWNrYWdlcyAoYWN0dWFsbHkgdGhlIG5vbiBtb2R1bGVzIHBhY2thZ2VzIGFuZCBub3QgY3JlYXRlZCB0b28pCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi1QQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyAiCi0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfcGVybF9wYWNrYWdlcyAiCi0KLXB5dGhvbiBzcGxpdF9wZXJsX3BhY2thZ2VzICgpIHsKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLiovYXV0by8oW14uXSopL1teL10qXC4oc298bGR8aXh8YWwpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qbGludXgvKFteXC9dKilcLnBtJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ01vZHVsZS8oW15cL10qKVwucG0nLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInTW9kdWxlLyhbXlwvXSopLy4qJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qbGludXgvKFteXC9dLiopXC4ocG18cGx8ZTJ4KScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicoXig/IShDUEFOXC98Q1BBTlBMVVNcL3xNb2R1bGVcL3x1bmljb3JlXC8pW15cL10pLiopXC4ocG18cGx8ZTJ4KScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotCi0gICAgIyBwZXJsLW1vZHVsZXMgc2hvdWxkIHJlY29tbWVuZCBldmVyeSBwZXJsIG1vZHVsZSwgYW5kIG9ubHkgdGhlCi0gICAgIyBtb2R1bGVzLiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aGUgcmVzdWx0IG9mIGRvX3NwbGl0X3BhY2thZ2VzKCkgYXMgc29tZQotICAgICMgbW9kdWxlcyBhcmUgbWFudWFsbHkgc3BsaXQgKGVnLiBwZXJsLW1vZHVsZS11bmljb3JlKS4KLSAgICBwYWNrYWdlcyA9IGZpbHRlcihsYW1iZGEgcDogJ3BlcmwtbW9kdWxlLScgaW4gcCwgZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKSkKLSAgICBkLnNldFZhcihkLmV4cGFuZCgiUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlcyIpLCAnICcuam9pbihwYWNrYWdlcykpCi0KLSAgICAjIFJlYWQgdGhlIHByZS1nZW5lcmF0ZWQgZGVwZW5kZW5jeSBmaWxlLCBhbmQgdXNlIGl0IHRvIHNldCBtb2R1bGUgZGVwZW5kZWNpZXMKLSAgICBmb3IgbGluZSBpbiBvcGVuKGQuZXhwYW5kKCIke1dPUktESVJ9IikgKyAnL3BlcmwtcmRlcGVuZHMudHh0JykucmVhZGxpbmVzKCk6Ci0gICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoKQotICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNwbGl0bGluZVswXSArICctbmF0aXZlJwotICAgICAgICAgICAgZGVwZW5kcyA9ICJwZXJsLW5hdGl2ZSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNwbGl0bGluZVswXS5yZXBsYWNlKCJSREVQRU5EU19wZXJsIiwgIlJERVBFTkRTXyR7UE59IikKLSAgICAgICAgICAgIGRlcGVuZHMgPSBzcGxpdGxpbmVbMl0uc3RyaXAoJyInKS5yZXBsYWNlKCJwZXJsLW1vZHVsZSIsICIke1BOfS1tb2R1bGUiKQotICAgICAgICBkLmFwcGVuZFZhcihkLmV4cGFuZChtb2R1bGUpLCAiICIgKyBkZXBlbmRzKQotfQotCi1weXRob24oKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtdGFyZ2V0IjoKLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXnBlcmwtbW9kdWxlLS4qKD88IW5hdGl2ZSkkIikKLSAgICBlbGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLW5hdGl2ZSI6Ci0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5wZXJsLW1vZHVsZS0uKi1uYXRpdmUkIikKLSAgICBlbGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLW5hdGl2ZXNkayI6Ci0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5uYXRpdmVzZGstcGVybC1tb2R1bGUtLioiKQotfQotCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICJwZXJsIHBlcmwtbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LXBvZCArPSAicGVybCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiKi5wbSAqLnBvZCAqLmggKi5wbCAqLnNoIgotCi1kb19jcmVhdGVfcmRlcGVuZHNfaW5jKCkgewotICAgIGNkICR7V09SS0RJUn0KLSAgICBjYXQgPDwnRU9QUkVBTUJMRScgPiAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuaW5jCi0KLSMgU29tZSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBhYm92ZSBkb2Vzbid0IG1hbmFnZSB0byBmaWd1cmUgb3V0Ci1SREVQRU5EU18ke1BOfS1tb2R1bGUtZmlsZS1zcGVjICs9ICIke1BOfS1tb2R1bGUtZmlsZS1zcGVjLXVuaXgiCi1SREVQRU5EU18ke1BOfS1tb2R1bGUtbWF0aC1iaWdpbnQgKz0gIiR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludC1jYWxjIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlLXRocmVhZC1xdWV1ZSArPSAiJHtQTn0tbW9kdWxlLWF0dHJpYnV0ZXMiCi1SREVQRU5EU18ke1BOfS1tb2R1bGUtb3ZlcmxvYWQgKz0gIiR7UE59LW1vZHVsZS1vdmVybG9hZGluZyIKLQotIyBHZW5lcmF0ZWQgZGVwZW5kcyBsaXN0IGJleW9uZCB0aGlzIGxpbmUKLUVPUFJFQU1CTEUKLSAgICB0ZXN0IC1lIHBhY2thZ2VzLXNwbGl0Lm5ldyAmJiBybSAtcmYgcGFja2FnZXMtc3BsaXQubmV3Ci0gICAgY3AgLXIgcGFja2FnZXMtc3BsaXQgcGFja2FnZXMtc3BsaXQubmV3ICYmIGNkIHBhY2thZ2VzLXNwbGl0Lm5ldwotICAgIGZpbmQgLiAtbmFtZSBcKi5wbSB8IHhhcmdzIHNlZCAtaSAnL149aGVhZC8sL149Y3V0L2QnCi0gICAgZWdyZXAgLXIgIl5ccyooXDx1c2UgLip8XDxyZXF1aXJlIC4qKTs/IiBwZXJsLW1vZHVsZS0qIC0taW5jbHVkZT0iKi5wbSIgfCBcCi0gICAgc2VkICJzL1wvLipcLnBtOiAqLyArPSAvZztzL1tcIlwnXS8vZztzLzsuKi9cIi9nO3MvKz0gLipcKHJlcXVpcmVcfHVzZVwpXD4gKi8rPSBcInBlcmwtbW9kdWxlLS9nO3MvQ1BBTlBMVVM6Oi4qL2NwYW5wbHVzL2c7cy9DUEFOOjouKi9jcGFuL2c7cy86Oi8tL2c7cy8gW14rXCJdLiovL2c7cy9fLy0vZztzL1wucGxcIiQvXCIvO3MvXCJcP1wkL1wiLztzLygvLzsiIHwgdHIgWzp1cHBlcjpdIFs6bG93ZXI6XSB8IFwKLSAgICBhd2sgJ3tpZiAoJDMgIT0gIlx4MjIiJDEiXHgyMiIpeyBwcmludCAkMH19J3wgXAotICAgIGdyZXAgLXYgLWUgIlwtdm1zXC0iIC1lIG1vZHVsZS01IC1lICJeJCIgLWUgIlxcJCIgLWUgeW91ciAtZSB0ayAtZSBhdXRvcGVybCAtZSBodG1sIC1lIGh0dHAgLWUgcGFyc2UtY3BhbiAtZSBwZXJsLW9zdHlwZSAtZSBuZGJtLWZpbGUgLWUgbW9kdWxlLW1hYyAtZSBmY2dpIC1lIGx3cCAtZSBkYmQgLWUgZGJpeCB8IFwKLSAgICBzb3J0IC11IHwgXAotICAgIHNlZCAncy9eL1JERVBFTkRTXy87cy9wZXJsLW1vZHVsZS0vJHtQTn0tbW9kdWxlLS9nO3MvbW9kdWxlLVwobW9kdWxlLVwpL1wxL2c7cy9cKG1vZHVsZS1sb2FkXCktY29uZGl0aW9uYWwvXDEvZztzL2VuY29kZS1jb25maWdsb2NhbC8mLXBtLzsnIHwgXAotICAgIGVncmVwIC13diAnPT58bW9kdWxlLWF8bW9kdWxlLWFwYWNoZS4/fG1vZHVsZS1hcHJ8bW9kdWxlLWF1dGhlbi1zYXNsfG1vZHVsZS1iLWFzbWRhdGF8bW9kdWxlLWNvbnZlcnQtZWJjZGljfG1vZHVsZS1kZXZlbC1zaXplfG1vZHVsZS1kaWdlc3QtcGVybC1tZDV8bW9kdWxlLWR1bXB2YWx1ZXxtb2R1bGUtZXh0dXRpbHMtY29uc3RhbnQtYWFhcmdoNTZoYXNofG1vZHVsZS1leHR1dGlscy14c3N5bXNldHxtb2R1bGUtZmlsZS1ic2RnbG9ifG1vZHVsZS1mb3J8bW9kdWxlLWl0fG1vZHVsZS1pby1zb2NrZXQtaW5ldDZ8bW9kdWxlLWlvLXNvY2tldC1zc2x8bW9kdWxlLWlvLXN0cmluZ3xtb2R1bGUtaXBjLXN5c3RlbS1zaW1wbGV8bW9kdWxlLWxleGljYWx8bW9kdWxlLWxvY2FsLWxpYnxtZXRhZGF0YXxtb2R1bGUtbW9kcGVybC11dGlsfG1vZHVsZS1wbHVnZ2FibGUtb2JqZWN0fG1vZHVsZS10ZXN0LWJ1aWxkZXItaW8tc2NhbGFyfG1vZHVsZS10ZXN0Mnxtb2R1bGUtdGV4dC11bmlkZWNvZGV8bW9kdWxlLXVuaWNvcmV8bW9kdWxlLXdpbjMyfG9iamVjdHNcc2xvYWR8c3lzY2FsbC5waHxzeXN0ZW1pbmZvLnBofCVzJyB8IFwKLSAgICBlZ3JlcCAtd3YgJz0+fG1vZHVsZS1hbGdvcml0aG0tZGlmZnxtb2R1bGUtY2FycHxtb2R1bGUtYzxleHR1dGlscy1tbS11bml4Pnxtb2R1bGUtZW5jb2RlLWhhbmV4dHJhfG1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXItdmVyc2lvbi1yZWdleHxtb2R1bGUtZmlsZS1zcGVjfG1vZHVsZS1pby1jb21wcmVzcy1sem1hfG1vZHVsZS1sb2NhbGUtbWFrZXRleHQtbGV4aWNvbnxtb2R1bGUtbG9nLWFnZW50fG1vZHVsZS1tZXRhLW5vdGF0aW9ufG1vZHVsZS1uZXQtbG9jYWxjZmd8bW9kdWxlLW5ldC1waW5nLWV4dGVybmFsfG1vZHVsZS1iLWRlcGFyc2V8bW9kdWxlLXNjYWxhci11dGlsfG1vZHVsZS1zb21lLW1vZHVsZXxtb2R1bGUtc3ltYm9sfG1vZHVsZS11cml8bW9kdWxlLXdpbjMyYXBpLWZpbGUnID4+ICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5nZW5lcmF0ZWQKLSAgICBjcCAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuZ2VuZXJhdGVkICR7VEhJU0RJUn0vZmlsZXMvcGVybC1yZGVwZW5kcy50eHQKLX0KLQotIyBiaXRiYWtlIHBlcmwgLWMgY3JlYXRlX3JkZXBlbmRzX2luYwotYWRkdGFzayBkb19jcmVhdGVfcmRlcGVuZHNfaW5jCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAicGVybF9zeXNyb290X2NyZWF0ZV93cmFwcGVyIgotCi1wZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIgKCkgewotICAgICAgIG1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotICAgICAgICMgQ3JlYXRlIGEgd3JhcHBlciB0aGF0IC91c3IvYmluL2VudiBwZXJsIHdpbGwgdXNlIHRvIGdldCBwZXJsLW5hdGl2ZS4KLSAgICAgICAjIFRoaXMgTVVTVCBsaXZlIGluIHRoZSBub3JtYWwgYmluZGlyLgotICAgICAgIGNhdCA+ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9uYXRpdmVwZXJsIDw8IEVPRgotIyEvYmluL3NoCi1yZWFscGF0aD1cYHJlYWRsaW5rIC1mbiBcJDBcYAotZXhlYyBcYGRpcm5hbWUgXCRyZWFscGF0aFxgL3BlcmwtbmF0aXZlL3BlcmwgIlwkQCIKLUVPRgotICAgICAgIGNobW9kIDA3NTUgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwKLSAgICAgICBjYXQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwKLX0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMzAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc4YzQyMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjIuYmIKQEAgLTAsMCArMSwzODcgQEAKK1NVTU1BUlkgPSAiUGVybCBzY3JpcHRpbmcgbGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBlcmwub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weWluZzttZDU9NWIxMjJhMzZkMGY2ZGM1NTI3OWEwZWJjNjlmM2M2MGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQXJ0aXN0aWM7bWQ1PTcxYTRkNWQ5YWNjMThjMDk1MmE2ZGYyMjE4YmI2OGRhIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuY3Bhbi5vcmcvc3JjLzUuMC9wZXJsLSR7UFZ9LnRhci5nejtuYW1lPXBlcmwgXAorICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYXJzdi9wZXJsLWNyb3NzL3JlbGVhc2VzL2Rvd25sb2FkLzEuMy4yL3BlcmwtY3Jvc3MtMS4zLjIudGFyLmd6O25hbWU9cGVybC1jcm9zcyBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLXJkZXBlbmRzLnR4dCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZV90b29sLnNoLWRvLW5vdC1xdW90ZS10aGUtYXJndW1lbnQtdG8tY29tbWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FeHRVdGlscy1NYWtlTWFrZXItYWRkLUxERkxBR1Mtd2hlbi1saW5raW5nLWJpbmFyeS1tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU29tZWhvdy10aGlzLW1vZHVsZS1icmVha3MtdGhyb3VnaC10aGUtcGVybC13cmFwcGVyLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9lcnJub192ZXIuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9uYXRpdmUtcGVybGluYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtY3Jvc3MtYWRkLUxERkxBR1Mtd2hlbi1saW5raW5nLWxpYnBlcmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGVybC1keW5sb2FkZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmVfcGF0aC5zaC1kby1ub3QtaGFyZGNvZGUtcHJlZml4LWxpYi1hcy1saWJyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZW5jMnhzLUFkZC1lbnZpcm9ubWVudC12YXJpYWJsZS10by1zdXBwcmVzcy1jb21tZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUNvbnN0YW50LUZpeC11cC1zaGViYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUEFUQ0gtcGVybC0xMzQxMTctQ2xvc2UtREFUQS1pbi1sb2NfdG9vbHMucGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2ggIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2VuY29kZWZpeC5wYXRjaCBcCisiCisKK1NSQ19VUklbcGVybC5zaGEyNTZzdW1dID0gIjY2ZGI3ZGY4YTkxOTc5ZWI1NzZmYWM5MTc0MzY0NGRhODc4MjQ0Y2Y4ZWUxNTJmMDJjZDZmNWNkN2E3MzE2ODkiCitTUkNfVVJJW3BlcmwtY3Jvc3Muc2hhMjU2c3VtXSA9ICJkZWZhMTJmMGFkN2JlMGI2YzQ4YjRmNzZlMmZiNWIzN2MxYjM3ZmJlYjZlOWViZTkzODI3OWNkNTM5YTBjMjBjIgorCitTID0gIiR7V09SS0RJUn0vcGVybC0ke1BWfSIKKworaW5oZXJpdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdXBkYXRlLWFsdGVybmF0aXZlcworCitERVBFTkRTICs9ICJ6bGliIHZpcnR1YWwvY3J5cHQiCisKK1BFUkxfTElCX1ZFUiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfS4wIgorCitQQUNLQUdFQ09ORklHID8/PSAiYmRiIGdkYm0iCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1VaV9kYixkYiIKK1BBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLC1VaV9nZGJtLGdkYm0iCisKKyMgRG9uJ3QgZ2VuZXJhdGUgY29tbWVudHMgaW4gZW5jMnhzIG91dHB1dCBmaWxlcy4gVGhleSBhcmUgbm90IHJlcHJvZHVjaWJsZQorZXhwb3J0IEVOQzJYU19OT19DT01NRU5UUyA9ICIxIgorCitkb191bnBhY2tfYXBwZW5kKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fY29weV9wZXJsY3Jvc3MnLCBkKQorfQorCitkb19jb3B5X3Blcmxjcm9zcygpIHsKKyAgICBjcCAtcmZwICR7V09SS0RJUn0vcGVybC1jcm9zcyovKiAke1N9Cit9CisKK2RvX2NvbmZpZ3VyZV9jbGFzcy10YXJnZXQoKSB7CisgICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLUR1c2VzaHJwbGliIFwKKyAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAorICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCisgICAgLURhcmNobGliZXhwPSR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4IFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9CisKKyAgICAjcGVybC5jIHVzZXMgYW4gQVJDSExJQl9FWFAgZGVmaW5lIHRvIGdlbmVyYXRlIGNvbXBpbGUtdGltZSBjb2RlIHRoYXQKKyAgICAjYWRkcyB0aGUgYXJjaGxpYmV4cCBwYXRoIHRvIEBJTkMgZHVyaW5nIHJ1bi10aW1lIGluaXRpYWxpemF0aW9uIG9mIGEKKyAgICAjbmV3IHBlcmwgaW50ZXJwcmV0ZXIuCisKKyAgICAjQmVjYXVzZSB3ZSd2ZSBjaGFuZ2VkIHRoaXMgdmFsdWUgaW4gYSB0ZW1wb3Jhcnkgd2F5IHRvIG1ha2UgaXQKKyAgICAjcG9zc2libGUgdG8gdXNlIEV4dFV0aWxzOjpFbWJlZCBpbiB0aGUgdGFyZ2V0IGJ1aWxkICh0aGUgdGVtcG9yYXJ5CisgICAgI3ZhbHVlIGluIGNvbmZpZy5zaCBnZXRzIHJlLXN0cmlwcGVkIG91dCBkdXJpbmcgcGFja2FnaW5nKSwgdGhlCisgICAgI0FSQ0hMSUJfRVhQIHZhbHVlIHRoYXQgZ2V0cyBnZW5lcmF0ZWQgc3RpbGwgdXNlcyB0aGUgdGVtcG9yYXJ5IHZlcnNpb24KKyAgICAjaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgZXhwZWN0ZWQgdmVyc2lvbiAoaS5lLiBiZWNhdXNlcyBpdCdzIGluIHRoZQorICAgICNnZW5lcmF0ZWQgY29uZmlnLmgsIGl0IGRvZXNuJ3QgZ2V0IHN0cmlwcGVkIG91dCBkdXJpbmcgcGFja2FnaW5nIGxpa2UKKyAgICAjdGhlIG90aGVycyBpbiBjb25maWcuc2gpLgorCisgICAgc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBjb25maWcuaAorfQorCitkb19jb25maWd1cmVfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLUR1c2VzaHJwbGliIFwKKyAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAorICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCisgICAgLURhcmNobGliZXhwPSR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4IFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9CisKKyAgICAjIFNlZSB0aGUgY29tbWVudCBhYm92ZQorICAgIHNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgY29uZmlnLmgKK30KKworZG9fY29uZmlndXJlX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC1EYmluPSR7YmluZGlyfS9wZXJsLW5hdGl2ZSBcCisgICAgLUR1c2VzaHJwbGliIFwKKyAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAorICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCisgICAgLVVpX3hsb2NhbGUgXAorICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KK30KKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICBpZiBbIC1uICIkU09VUkNFX0RBVEVfRVBPQ0giIF07IHRoZW4KKyAgICAgICAgUEVSTF9CVUlMRF9EQVRFPSIkKCR7UFlUSE9OfSAtYyAiXAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lOyBcCitwcmludChkYXRldGltZS5mcm9tdGltZXN0YW1wKCRTT1VSQ0VfREFURV9FUE9DSCwgdGltZXpvbmUudXRjKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSkgXAorICAgICAgICAgICAgIikiCisgICAgICAgIGVjaG8gIiNkZWZpbmUgUEVSTF9CVUlMRF9EQVRFIFwiJFBFUkxfQlVJTERfREFURVwiIiA+PiBjb25maWcuaAorICAgIGZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorICAgICMgVGhpcyBpc24ndCBnZW5lcmF0ZWQgcmVsaWFibHkgc28gZGVsZXRlIGFuZCByZS1nZW5lcmF0ZS4KKyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvaXNzdWVzLzg2CisKKyAgICBpZiBbIC1lIHBvZC9wZXJsdG9jLnBvZCBdOyB0aGVuCisgICAgICAgIGJibm90ZSBSZWJ1aWxkaW5nIHBlcmx0b2MucG9kCisgICAgICAgIHJtIC1mIHBvZC9wZXJsdG9jLnBvZAorICAgICAgICBvZV9ydW5tYWtlIHBvZC9wZXJsdG9jLnBvZAorICAgIGZpCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzLworCisgICAgIyBTYXZlIG5hdGl2ZSBjb25maWcKKyAgICBpbnN0YWxsIGNvbmZpZy5zaCAke0R9JHtsaWJkaXJ9L3Blcmw1CisgICAgaW5zdGFsbCBsaWIvQ29uZmlnLnBtICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vCisgICAgaW5zdGFsbCBsaWIvRXh0VXRpbHMvdHlwZW1hcCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzLworCisgICAgIyBGaXggdXAgc2hhcmVkIGxpYnJhcnkKKyAgICBybSAke0R9LyR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUvbGlicGVybC5zbworICAgIGxuIC1zZiAuLi8uLi8uLi8uLi9saWJwZXJsLnNvLiR7UEVSTF9MSUJfVkVSfSAkKGVjaG8gJHtEfS8ke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFKS9saWJwZXJsLnNvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIFRoaXMgaXMgdXNlZCB0byBzdWJzdGl0dXRlIHRhcmdldCBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBuYXRpdmUgcGVybCB2aWEgcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKKyAgICBsbiAtcyBDb25maWdfaGVhdnkucGwgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnktdGFyZ2V0LnBsCisKKyAgICAjIFRoaXMgY29udGFpbnMgaG9zdC1zcGVjaWZpYyBpbmZvcm1hdGlvbiB1c2VkIGZvciBidWlsZGluZyBtaW5pcGVybCAoYSBoZWxwZXIgZXhlY3V0YWJsZSBidWlsdCB3aXRoIGhvc3QgY29tcGlsZXIpCisgICAgIyBhbmQgdGhlcmVmb3JlIGlzbid0IHJlcHJvZHVjaWJsZS4gSSBiZWxpZXZlIHRoZSBmaWxlIGlzbid0IGFjdHVhbGx5IG5lZWRlZCBvbiB0YXJnZXQuCisgICAgcm0gJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL3hjb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgIyBUaGlzIGlzIHVzZWQgdG8gc3Vic3RpdHV0ZSB0YXJnZXQgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgbmF0aXZlIHBlcmwgdmlhIHBlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCisgICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LXRhcmdldC5wbAorCisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsIFwKKyAgICAgICAgUEVSTDVMSUI9JyRQRVJMNUxJQjokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvc2l0ZV9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS92ZW5kb3JfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvJHtQVn0nCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgIyBUaG9zZSB3cmFwcGVycyBtZWFuIHRoYXQgcGVybCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUgKHdoaWNoIG1heSBjaGFuZ2UKKyAgICAjIHBhdGggbG9jYXRpb24pIHdvcmtzIGFuZCB0aGF0IGluIHRoZSBuYXRpdmVzZGsgY2FzZSwgdGhlIFNESyBjYW4gYmUKKyAgICAjIGluc3RhbGxlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiBmcm9tIHRoZSBvbmUgaXQgd2FzIGJ1aWx0IGZvci4KKyAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwtbmF0aXZlL3BlcmwgUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsNS9zaXRlX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvdmVuZG9yX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0nCisKKyAgICAjIFVzZSAvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybCBmb3IgdGhlIHBlcmwgc2NyaXB0LgorICAgIGZvciBmIGluIGBncmVwIC1JbCAnIyEgKiR7YmluZGlyfS9wZXJsJyAke0R9LyR7YmluZGlyfS8qYDsgZG8KKyAgICAgICAgICAgIHNlZCAtaSAtZSAnc3wke2JpbmRpcn0vcGVybHwvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybHwnICRmCisgICAgZG9uZQorfQorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfcGFja2FnZV9wcmVwcm9jZXNzIgorCitwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisgICAgICAgICMgRml4IHVwIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCisgICAgICAgIHNlZCAtaSAtZSAicywke0R9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke0RFQlVHX1BSRUZJWF9NQVB9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSfSwke2JpbmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gyeHMucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gycGgucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJtYW4ucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ0ZXh0LnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydXNhZ2UucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZGNoZWNrZXIucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZHNlbGVjdC5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9jb25maWcuaCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvcGVybC5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9wcC5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vQ29uZmlnLnBtIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnLnBtIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnLnBvZCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19naXQucGwgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnkucGwgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0ZpbGVDYWNoZS5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3BvZC8qLnBvZCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1L2NvbmZpZy5zaAorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfS1taXNjID0gImNvcmVsaXN0IGNwYW4gZW5jMnhzIGVuY2d1ZXNzIGgycGggaDJ4cyBpbnN0bW9kc2gganNvbl9wcCBsaWJuZXRjZmcgXAorICAgICAgICAgICAgICAgICAgICAgcGljb252IHBsMnBtIHBvZDJodG1sIHBvZDJtYW4gcG9kMnRleHQgcG9kMnVzYWdlIHBvZGNoZWNrZXIgcG9kc2VsZWN0IFwKKyAgICAgICAgICAgICAgICAgICAgIHByb3ZlIHB0YXIgcHRhcmRpZmYgcHRhcmdyZXAgc2hhc3VtIHNwbGFpbiB4c3VicHAgemlwZGV0YWlscyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjb3JlbGlzdF0gPSAiJHtiaW5kaXJ9L2NvcmVsaXN0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NwYW5dID0gIiR7YmluZGlyfS9jcGFuIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VuYzJ4c10gPSAiJHtiaW5kaXJ9L2VuYzJ4cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtlbmNndWVzc10gPSAiJHtiaW5kaXJ9L2VuY2d1ZXNzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2gycGhdID0gIiR7YmluZGlyfS9oMnBoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2gyeHNdID0gIiR7YmluZGlyfS9oMnhzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3Rtb2RzaF0gPSAiJHtiaW5kaXJ9L2luc3Rtb2RzaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtqc29uX3BwXSA9ICIke2JpbmRpcn0vanNvbl9wcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsaWJuZXRjZmddID0gIiR7YmluZGlyfS9saWJuZXRjZmciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGljb252XSA9ICIke2JpbmRpcn0vcGljb252IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BsMnBtXSA9ICIke2JpbmRpcn0vcGwycG0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG9kMmh0bWxdID0gIiR7YmluZGlyfS9wb2QyaHRtbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2QybWFuXSA9ICIke2JpbmRpcn0vcG9kMm1hbiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2QydGV4dF0gPSAiJHtiaW5kaXJ9L3BvZDJ0ZXh0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BvZDJ1c2FnZV0gPSAiJHtiaW5kaXJ9L3BvZDJ1c2FnZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2RjaGVja2VyXSA9ICIke2JpbmRpcn0vcG9kY2hlY2tlciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2RzZWxlY3RdID0gIiR7YmluZGlyfS9wb2RzZWxlY3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHJvdmVdID0gIiR7YmluZGlyfS9wcm92ZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwdGFyXSA9ICIke2JpbmRpcn0vcHRhciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwdGFyZGlmZl0gPSAiJHtiaW5kaXJ9L3B0YXJkaWZmIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3B0YXJncmVwXSA9ICIke2JpbmRpcn0vcHRhcmdyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2hhc3VtXSA9ICIke2JpbmRpcn0vc2hhc3VtIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NwbGFpbl0gPSAiJHtiaW5kaXJ9L3NwbGFpbiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt4c3VicHBdID0gIiR7YmluZGlyfS94c3VicHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbemlwZGV0YWlsc10gPSAiJHtiaW5kaXJ9L3ppcGRldGFpbHMiCisKK3JlcXVpcmUgcGVybC1wdGVzdC5pbmMKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3BlcmwgJHtiaW5kaXJ9L3BlcmwucmVhbCAke2JpbmRpcn0vcGVybCR7UFZ9ICR7bGliZGlyfS9saWJwZXJsLnNvKiBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvc2l0ZV9wZXJsIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9Db25maWcucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9Db25maWdfZ2l0LnBsIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NvbmZpZ19oZWF2eS10YXJnZXQucGwgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L2NvbmZpZy5zaCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vc3RyaWN0LnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS93YXJuaW5ncy5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vd2FybmluZ3MgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3ZhcnMucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L3NpdGVfcGVybCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvTUFOSUZFU1QuU0tJUCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMveHN1YnBwIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy90eXBlbWFwIFwKKyAgICAgICAgICAgICAgICIKK1JQUk9WSURFU18ke1BOfSArPSAicGVybC1tb2R1bGUtc3RyaWN0IHBlcmwtbW9kdWxlLXZhcnMgcGVybC1tb2R1bGUtY29uZmlnIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKKyAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtd2FybmluZ3MtcmVnaXN0ZXIiCisKK0ZJTEVTXyR7UE59LXN0YXRpY2Rldl9hcHBlbmQgPSAiICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUvbGlicGVybC5hIgorCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFIgorCitGSUxFU18ke1BOfS1kb2NfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vVW5pY29kZS9Db2xsYXRlLyoudHh0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLy5wYWNrbGlzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRW5jb2RlL2VuY29kZS5oIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiCitQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKKworRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vKiIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBvZCIKKworRklMRVNfJHtQTn0tcG9kID0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS9wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLnBvZCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi5wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyovKi5wb2QgXCAKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLyovKi5wb2QgXCAKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZS1jcGFuICR7UE59LW1vZHVsZS11bmljb3JlIgorCitGSUxFU18ke1BOfS1tb2R1bGUtY3BhbiArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NQQU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1tb2R1bGUtdW5pY29yZSArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3VuaWNvcmUiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjQwIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIlRocmVhZC4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW1RocmVhZC4zXSA9ICIke21hbmRpcn0vbWFuMy9UaHJlYWQuMyIKKworIyBDcmVhdGUgYSBwZXJsLW1vZHVsZXMgcGFja2FnZSByZWNvbW1lbmRpbmcgYWxsIHRoZSBvdGhlciBwZXJsCisjIHBhY2thZ2VzIChhY3R1YWxseSB0aGUgbm9uIG1vZHVsZXMgcGFja2FnZXMgYW5kIG5vdCBjcmVhdGVkIHRvbykKK0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKK1BBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGVzICIKKworUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9wZXJsX3BhY2thZ2VzICIKKworcHl0aG9uIHNwbGl0X3BlcmxfcGFja2FnZXMgKCkgeworICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcGVybDUvJHtQVn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicuKi9hdXRvLyhbXi5dKikvW14vXSpcLihzb3xsZHxpeHxhbCknLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLipsaW51eC8oW15cL10qKVwucG0nLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInTW9kdWxlLyhbXlwvXSopXC5wbScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidNb2R1bGUvKFteXC9dKikvLionLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLipsaW51eC8oW15cL10uKilcLihwbXxwbHxlMngpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJyheKD8hKENQQU5cL3xDUEFOUExVU1wvfE1vZHVsZVwvfHVuaWNvcmVcLylbXlwvXSkuKilcLihwbXxwbHxlMngpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisKKyAgICAjIHBlcmwtbW9kdWxlcyBzaG91bGQgcmVjb21tZW5kIGV2ZXJ5IHBlcmwgbW9kdWxlLCBhbmQgb25seSB0aGUKKyAgICAjIG1vZHVsZXMuIERvbid0IGF0dGVtcHQgdG8gdXNlIHRoZSByZXN1bHQgb2YgZG9fc3BsaXRfcGFja2FnZXMoKSBhcyBzb21lCisgICAgIyBtb2R1bGVzIGFyZSBtYW51YWxseSBzcGxpdCAoZWcuIHBlcmwtbW9kdWxlLXVuaWNvcmUpLgorICAgIHBhY2thZ2VzID0gZmlsdGVyKGxhbWJkYSBwOiAncGVybC1tb2R1bGUtJyBpbiBwLCBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpKQorICAgIGQuc2V0VmFyKGQuZXhwYW5kKCJSUkVDT01NRU5EU18ke1BOfS1tb2R1bGVzIiksICcgJy5qb2luKHBhY2thZ2VzKSkKKworICAgICMgUmVhZCB0aGUgcHJlLWdlbmVyYXRlZCBkZXBlbmRlbmN5IGZpbGUsIGFuZCB1c2UgaXQgdG8gc2V0IG1vZHVsZSBkZXBlbmRlY2llcworICAgIGZvciBsaW5lIGluIG9wZW4oZC5leHBhbmQoIiR7V09SS0RJUn0iKSArICcvcGVybC1yZGVwZW5kcy50eHQnKS5yZWFkbGluZXMoKToKKyAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgpCisgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpOgorICAgICAgICAgICAgbW9kdWxlID0gc3BsaXRsaW5lWzBdICsgJy1uYXRpdmUnCisgICAgICAgICAgICBkZXBlbmRzID0gInBlcmwtbmF0aXZlIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbW9kdWxlID0gc3BsaXRsaW5lWzBdLnJlcGxhY2UoIlJERVBFTkRTX3BlcmwiLCAiUkRFUEVORFNfJHtQTn0iKQorICAgICAgICAgICAgZGVwZW5kcyA9IHNwbGl0bGluZVsyXS5zdHJpcCgnIicpLnJlcGxhY2UoInBlcmwtbW9kdWxlIiwgIiR7UE59LW1vZHVsZSIpCisgICAgICAgIGQuYXBwZW5kVmFyKGQuZXhwYW5kKG1vZHVsZSksICIgIiArIGRlcGVuZHMpCit9CisKK3B5dGhvbigpIHsKKyAgICBpZiBkLmdldFZhcignQ0xBU1NPVkVSUklERScpID09ICJjbGFzcy10YXJnZXQiOgorICAgICAgICBkLnNldFZhcigiUEFDS0FHRVNfRFlOQU1JQyIsICJecGVybC1tb2R1bGUtLiooPzwhbmF0aXZlKSQiKQorICAgIGVsaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtbmF0aXZlIjoKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXnBlcmwtbW9kdWxlLS4qLW5hdGl2ZSQiKQorICAgIGVsaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtbmF0aXZlc2RrIjoKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXm5hdGl2ZXNkay1wZXJsLW1vZHVsZS0uKiIpCit9CisKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gInBlcmwgcGVybC1tb2R1bGVzIgorUkRFUEVORFNfJHtQTn0tcG9kICs9ICJwZXJsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqLnBtICoucG9kICouaCAqLnBsICouc2giCisKK2RvX2NyZWF0ZV9yZGVwZW5kc19pbmMoKSB7CisgICAgY2QgJHtXT1JLRElSfQorICAgIGNhdCA8PCdFT1BSRUFNQkxFJyA+ICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5pbmMKKworIyBTb21lIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgdGhlIGFib3ZlIGRvZXNuJ3QgbWFuYWdlIHRvIGZpZ3VyZSBvdXQKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1maWxlLXNwZWMgKz0gIiR7UE59LW1vZHVsZS1maWxlLXNwZWMtdW5peCIKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludCArPSAiJHtQTn0tbW9kdWxlLW1hdGgtYmlnaW50LWNhbGMiCitSREVQRU5EU18ke1BOfS1tb2R1bGUtdGhyZWFkLXF1ZXVlICs9ICIke1BOfS1tb2R1bGUtYXR0cmlidXRlcyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1vdmVybG9hZCArPSAiJHtQTn0tbW9kdWxlLW92ZXJsb2FkaW5nIgorCisjIEdlbmVyYXRlZCBkZXBlbmRzIGxpc3QgYmV5b25kIHRoaXMgbGluZQorRU9QUkVBTUJMRQorICAgIHRlc3QgLWUgcGFja2FnZXMtc3BsaXQubmV3ICYmIHJtIC1yZiBwYWNrYWdlcy1zcGxpdC5uZXcKKyAgICBjcCAtciBwYWNrYWdlcy1zcGxpdCBwYWNrYWdlcy1zcGxpdC5uZXcgJiYgY2QgcGFja2FnZXMtc3BsaXQubmV3CisgICAgZmluZCAuIC1uYW1lIFwqLnBtIHwgeGFyZ3Mgc2VkIC1pICcvXj1oZWFkLywvXj1jdXQvZCcKKyAgICBlZ3JlcCAtciAiXlxzKihcPHVzZSAuKnxcPHJlcXVpcmUgLiopOz8iIHBlcmwtbW9kdWxlLSogLS1pbmNsdWRlPSIqLnBtIiB8IFwKKyAgICBzZWQgInMvXC8uKlwucG06ICovICs9IC9nO3MvW1wiXCddLy9nO3MvOy4qL1wiL2c7cy8rPSAuKlwocmVxdWlyZVx8dXNlXClcPiAqLys9IFwicGVybC1tb2R1bGUtL2c7cy9DUEFOUExVUzo6LiovY3BhbnBsdXMvZztzL0NQQU46Oi4qL2NwYW4vZztzLzo6Ly0vZztzLyBbXitcIl0uKi8vZztzL18vLS9nO3MvXC5wbFwiJC9cIi87cy9cIlw/XCQvXCIvO3MvKC8vOyIgfCB0ciBbOnVwcGVyOl0gWzpsb3dlcjpdIHwgXAorICAgIGF3ayAne2lmICgkMyAhPSAiXHgyMiIkMSJceDIyIil7IHByaW50ICQwfX0nfCBcCisgICAgZ3JlcCAtdiAtZSAiXC12bXNcLSIgLWUgbW9kdWxlLTUgLWUgIl4kIiAtZSAiXFwkIiAtZSB5b3VyIC1lIHRrIC1lIGF1dG9wZXJsIC1lIGh0bWwgLWUgaHR0cCAtZSBwYXJzZS1jcGFuIC1lIHBlcmwtb3N0eXBlIC1lIG5kYm0tZmlsZSAtZSBtb2R1bGUtbWFjIC1lIGZjZ2kgLWUgbHdwIC1lIGRiZCAtZSBkYml4IHwgXAorICAgIHNvcnQgLXUgfCBcCisgICAgc2VkICdzL14vUkRFUEVORFNfLztzL3BlcmwtbW9kdWxlLS8ke1BOfS1tb2R1bGUtL2c7cy9tb2R1bGUtXChtb2R1bGUtXCkvXDEvZztzL1wobW9kdWxlLWxvYWRcKS1jb25kaXRpb25hbC9cMS9nO3MvZW5jb2RlLWNvbmZpZ2xvY2FsLyYtcG0vOycgfCBcCisgICAgZWdyZXAgLXd2ICc9Pnxtb2R1bGUtYXxtb2R1bGUtYXBhY2hlLj98bW9kdWxlLWFwcnxtb2R1bGUtYXV0aGVuLXNhc2x8bW9kdWxlLWItYXNtZGF0YXxtb2R1bGUtY29udmVydC1lYmNkaWN8bW9kdWxlLWRldmVsLXNpemV8bW9kdWxlLWRpZ2VzdC1wZXJsLW1kNXxtb2R1bGUtZHVtcHZhbHVlfG1vZHVsZS1leHR1dGlscy1jb25zdGFudC1hYWFyZ2g1Nmhhc2h8bW9kdWxlLWV4dHV0aWxzLXhzc3ltc2V0fG1vZHVsZS1maWxlLWJzZGdsb2J8bW9kdWxlLWZvcnxtb2R1bGUtaXR8bW9kdWxlLWlvLXNvY2tldC1pbmV0Nnxtb2R1bGUtaW8tc29ja2V0LXNzbHxtb2R1bGUtaW8tc3RyaW5nfG1vZHVsZS1pcGMtc3lzdGVtLXNpbXBsZXxtb2R1bGUtbGV4aWNhbHxtb2R1bGUtbG9jYWwtbGlifG1ldGFkYXRhfG1vZHVsZS1tb2RwZXJsLXV0aWx8bW9kdWxlLXBsdWdnYWJsZS1vYmplY3R8bW9kdWxlLXRlc3QtYnVpbGRlci1pby1zY2FsYXJ8bW9kdWxlLXRlc3QyfG1vZHVsZS10ZXh0LXVuaWRlY29kZXxtb2R1bGUtdW5pY29yZXxtb2R1bGUtd2luMzJ8b2JqZWN0c1xzbG9hZHxzeXNjYWxsLnBofHN5c3RlbWluZm8ucGh8JXMnIHwgXAorICAgIGVncmVwIC13diAnPT58bW9kdWxlLWFsZ29yaXRobS1kaWZmfG1vZHVsZS1jYXJwfG1vZHVsZS1jPGV4dHV0aWxzLW1tLXVuaXg+fG1vZHVsZS1lbmNvZGUtaGFuZXh0cmF8bW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlci12ZXJzaW9uLXJlZ2V4fG1vZHVsZS1maWxlLXNwZWN8bW9kdWxlLWlvLWNvbXByZXNzLWx6bWF8bW9kdWxlLWxvY2FsZS1tYWtldGV4dC1sZXhpY29ufG1vZHVsZS1sb2ctYWdlbnR8bW9kdWxlLW1ldGEtbm90YXRpb258bW9kdWxlLW5ldC1sb2NhbGNmZ3xtb2R1bGUtbmV0LXBpbmctZXh0ZXJuYWx8bW9kdWxlLWItZGVwYXJzZXxtb2R1bGUtc2NhbGFyLXV0aWx8bW9kdWxlLXNvbWUtbW9kdWxlfG1vZHVsZS1zeW1ib2x8bW9kdWxlLXVyaXxtb2R1bGUtd2luMzJhcGktZmlsZScgPj4gJHtXT1JLRElSfS9wZXJsLXJkZXBlbmRzLmdlbmVyYXRlZAorICAgIGNwICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5nZW5lcmF0ZWQgJHtUSElTRElSfS9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dAorfQorCisjIGJpdGJha2UgcGVybCAtYyBjcmVhdGVfcmRlcGVuZHNfaW5jCithZGR0YXNrIGRvX2NyZWF0ZV9yZGVwZW5kc19pbmMKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIiCisKK3Blcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciAoKSB7CisgICAgICAgbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9CisgICAgICAgIyBDcmVhdGUgYSB3cmFwcGVyIHRoYXQgL3Vzci9iaW4vZW52IHBlcmwgd2lsbCB1c2UgdG8gZ2V0IHBlcmwtbmF0aXZlLgorICAgICAgICMgVGhpcyBNVVNUIGxpdmUgaW4gdGhlIG5vcm1hbCBiaW5kaXIuCisgICAgICAgY2F0ID4gJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwgPDwgRU9GCisjIS9iaW4vc2gKK3JlYWxwYXRoPVxgcmVhZGxpbmsgLWZuIFwkMFxgCitleGVjIFxgZGlybmFtZSBcJHJlYWxwYXRoXGAvcGVybC1uYXRpdmUvcGVybCAiXCRAIgorRU9GCisgICAgICAgY2htb2QgMDc1NSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybAorICAgICAgIGNhdCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNi4zLmJiCmluZGV4IDk0YmMxMTIuLjczMmNhMmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjYuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS42LjMuYmIKQEAgLTgsNyArOCw2IEBACiBTRUNUSU9OID0gImRldmVsIgogUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKIFJQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgogCiAjIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCiAjIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtQWRkLU1JUFMtZ251LWhhc2gtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLUFkZC1NSVBTLWdudS1oYXNoLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwMjc1YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLUFkZC1NSVBTLWdudS1oYXNoLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKK0Zyb20gMDUyNDBlMTM2Njg0MjJjNGY5MTE4ZjJjZGU5NTNlYzg3NWQwZDY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE0IEphbiAyMDIwIDAxOjM3OjIyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBNSVBTIGdudSBoYXNoIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2FyY2gtbWlwcy5jIHwgMSArCisgc3JjL3ByZWxpbmsuYyAgIHwgMSArCisgc3JjL3ByZWxpbmsuaCAgIHwgNSArKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9hcmNoLW1pcHMuYworKysrIGIvc3JjL2FyY2gtbWlwcy5jCitAQCAtMzI0LDYgKzMyNCw3IEBAIG1pcHNfYWRqdXN0X2R5biAoRFNPICpkc28sIGludCBuLCBHRWxmX0QKKyAgICAgY2FzZSBEVF9NSVBTX0JBU0VfQUREUkVTUzoKKyAgICAgY2FzZSBEVF9NSVBTX1JMRF9NQVA6CisgICAgIGNhc2UgRFRfTUlQU19PUFRJT05TOgorKyAgICBjYXNlIERUX01JUFNfWEhBU0g6CisgICAgICAgaWYgKGR5bi0+ZF91bi5kX3B0ciA+PSBzdGFydCkKKyAJZHluLT5kX3VuLmRfcHRyICs9IGFkanVzdDsKKyAgICAgICByZXR1cm4gMTsKKy0tLSBhL3NyYy9wcmVsaW5rLmMKKysrKyBiL3NyYy9wcmVsaW5rLmMKK0BAIC00MjUsNiArNDI1LDcgQEAgcHJlbGlua19wcmVwYXJlIChEU08gKmRzbykKKyAJICB7CisgCSAgY2FzZSBTSFRfSEFTSDoKKyAJICBjYXNlIFNIVF9HTlVfSEFTSDoKKysJICBjYXNlIFNIVF9NSVBTX1hIQVNIOgorIAkgIGNhc2UgU0hUX0RZTlNZTToKKyAJICBjYXNlIFNIVF9SRUw6CisgCSAgY2FzZSBTSFRfUkVMQToKKy0tLSBhL3NyYy9wcmVsaW5rLmgKKysrKyBiL3NyYy9wcmVsaW5rLmgKK0BAIC0xMTQsNiArMTE0LDExIEBAIHR5cGVkZWYgdWludDhfdCBFbGY2NF9CeXRlOworICNkZWZpbmUgU0hUX01JUFNfQUJJRkxBR1MgICAgICAgMHg3MDAwMDAyYQorICNlbmRpZgorIAorKyNpZm5kZWYgU0hUX01JUFNfWEhBU0gKKysjZGVmaW5lIERUX01JUFNfWEhBU0gJICAgIDB4NzAwMDAwMzYKKysjZGVmaW5lIFNIVF9NSVBTX1hIQVNIICAgICAgIDB4NzAwMDAwMmIKKysjZW5kaWYKKysKKyAjaWZuZGVmIFJTU19VTkRFRgorICNkZWZpbmUgUlNTX1VOREVGICAgICAgICAgICAgICAwCisgI2VuZGlmCistLS0gYS9zcmMvZHNvLmMKKysrKyBiL3NyYy9kc28uYworQEAgLTEwOSw2ICsxMDksMTEgQEAgcmVhZF9keW5hbWljIChEU08gKmRzbykKKyAJCSAgICBkc28tPmluZm9fRFRfR05VX0hBU0ggPSBkeW4uZF91bi5kX3ZhbDsKKyAJCSAgICBkc28tPmluZm9fc2V0X21hc2sgfD0gKDFVTEwgPDwgRFRfR05VX0hBU0hfQklUKTsKKyAJCSAgfQorKwkJZWxzZSBpZiAoZHluLmRfdGFnID09IERUX01JUFNfWEhBU0gpCisrCQkgIHsKKysJCSAgICBkc28tPmluZm9fRFRfR05VX0hBU0ggPSBkeW4uZF91bi5kX3ZhbDsKKysJCSAgICBkc28tPmluZm9fc2V0X21hc2sgfD0gKDFVTEwgPDwgRFRfR05VX0hBU0hfQklUKTsKKysJCSAgfQorIAkJZWxzZSBpZiAoZHluLmRfdGFnID09IERUX1RMU0RFU0NfUExUKQorIAkJICB7CisgCQkgICAgZHNvLT5pbmZvX0RUX1RMU0RFU0NfUExUID0gZHluLmRfdW4uZF92YWw7CitAQCAtMTQ2Myw2ICsxNDY4LDcgQEAgYWRqdXN0X2RzbyAoRFNPICpkc28sIEdFbGZfQWRkciBzdGFydCwgRworIAkgIGJyZWFrOworIAljYXNlIFNIVF9IQVNIOgorIAljYXNlIFNIVF9HTlVfSEFTSDoKKysJY2FzZSBTSFRfTUlQU19YSEFTSDoKKyAJY2FzZSBTSFRfTk9CSVRTOgorIAljYXNlIFNIVF9TVFJUQUI6CisgCSAgYnJlYWs7CistLS0gYS9zcmMvc3BhY2UuYworKysrIGIvc3JjL3NwYWNlLmMKK0BAIC02MSw2ICs2MSw3IEBAIHByaW50X3NlY3Rpb25zIChEU08gKmRzbywgR0VsZl9FaGRyICplaGQKKyAgICAgICB7IFNIVF9HTlVfdmVyc3ltLCAiVkVSU1lNIiB9LAorICAgICAgIHsgU0hUX0dOVV9MSUJMSVNULCAiTElCTElTVCIgfSwKKyAgICAgICB7IFNIVF9HTlVfSEFTSCwgIkdOVV9IQVNIIiB9LAorKyAgICAgIHsgU0hUX01JUFNfWEhBU0gsICJNSVBTX1hIQVNIIiB9LAorICAgICAgIHsgMCwgTlVMTCB9CisgICAgIH07CisgCitAQCAtMTgzLDYgKzE4NCw3IEBAIHJlYWRvbmx5X2lzX21vdmFibGUgKERTTyAqZHNvLCBHRWxmX0VoZHIKKyAgICAgeworICAgICBjYXNlIFNIVF9IQVNIOgorICAgICBjYXNlIFNIVF9HTlVfSEFTSDoKKysgICAgY2FzZSBTSFRfTUlQU19YSEFTSDoKKyAgICAgY2FzZSBTSFRfRFlOU1lNOgorICAgICBjYXNlIFNIVF9SRUw6CisgICAgIGNhc2UgU0hUX1JFTEE6CitAQCAtNTU4LDYgKzU2MCw3IEBAIGZpbmRfcmVhZG9ubHlfc3BhY2UgKERTTyAqZHNvLCBHRWxmX1NoZHIKKyAJCSAgICB7CisgCQkgICAgY2FzZSBTSFRfSEFTSDoKKyAJCSAgICBjYXNlIFNIVF9HTlVfSEFTSDoKKysJCSAgICBjYXNlIFNIVF9NSVBTX1hIQVNIOgorIAkJICAgIGNhc2UgU0hUX0RZTlNZTToKKyAJCSAgICBjYXNlIFNIVF9TVFJUQUI6CisgCQkgICAgY2FzZSBTSFRfR05VX3ZlcmRlZjoKKy0tLSBhL3NyYy9leGVjLmMKKysrKyBiL3NyYy9leGVjLmMKK0BAIC02NSw3ICs2NSwxMSBAQCB1cGRhdGVfZHluYW1pY190YWdzIChEU08gKmRzbywgR0VsZl9TaGRyCisgCSAgfHwgKGR5bmFtaWNfaW5mb19pc19zZXQgKGRzbywgRFRfR05VX0hBU0hfQklUKQorIAkgICAgICAmJiBkc28tPmluZm9fRFRfR05VX0hBU0ggPT0gb2xkX3NoZHJbal0uc2hfYWRkcgorIAkgICAgICAmJiBvbGRfc2hkcltqXS5zaF90eXBlID09IFNIVF9HTlVfSEFTSAorLQkgICAgICAmJiBzZXRfZHluYW1pYyAoZHNvLCBEVF9HTlVfSEFTSCwgc2hkcltpXS5zaF9hZGRyLCAxKSkpCisrCSAgICAgICYmIHNldF9keW5hbWljIChkc28sIERUX0dOVV9IQVNILCBzaGRyW2ldLnNoX2FkZHIsIDEpKQorKwkgIHx8IChkeW5hbWljX2luZm9faXNfc2V0IChkc28sIERUX0dOVV9IQVNIX0JJVCkKKysJICAgICAgJiYgZHNvLT5pbmZvX0RUX0dOVV9IQVNIID09IG9sZF9zaGRyW2pdLnNoX2FkZHIKKysJICAgICAgJiYgb2xkX3NoZHJbal0uc2hfdHlwZSA9PSBTSFRfTUlQU19YSEFTSAorKwkgICAgICAmJiBzZXRfZHluYW1pYyAoZHNvLCBEVF9NSVBTX1hIQVNILCBzaGRyW2ldLnNoX2FkZHIsIDEpKSkKKyAJcmV0dXJuIDE7CisgICAgIH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLXNyYy1hcmNoLW1pcHMuYy1jaGVjay1pbmZvLXJlc29sdmV0bHMtYmVmb3JlLXVzZS1pdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTY4ODI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLXNyYy1hcmNoLW1pcHMuYy1jaGVjay1pbmZvLXJlc29sdmV0bHMtYmVmb3JlLXVzZS1pdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDIxMzY5NjllM2UxOTZiOWNmN2Y0Nzg4MzQwZWZhNGIxZDliMzk1NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTEgT2N0IDIwMTggMTA6MDU6NTIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL2FyY2gtbWlwcy5jOiBjaGVjayBpbmZvLT5yZXNvbHZldGxzIGJlZm9yZSB1c2UgaXRzIG1lbWJlcgotCi1UaGUgaW5mby0+cmVzb2x2ZXRscyBtaWdodCBiZSBOVUxMIGFjY29yZGluZyB0byBzcmMvcHJlbGluay5jOgotW3NuaXBdCi0gLyogRHluYW1pYyBsaW5rZXIgZG9lcyBub3QgZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LAotICAgIGFsbCBzeW1ib2xzIHJlc29sdmUgdG8gdGhlbXNlbHZlcyB3aXRoIHRoZSBleGNlcHRpb24KLSAgICBvZiBTSE5fVU5ERUYgc3ltYm9scyB3aGljaCByZXNvbHZlIHRvIDAuICAqLwotaWYgKGluZm8tPnN5bXRhYltyX3N5bV0uc3Rfc2huZHggPT0gU0hOX1VOREVGKQotICB7Ci0gICAgaW5mby0+cmVzb2x2ZWVudCA9IE5VTEw7Ci0gICAgaW5mby0+cmVzb2x2ZXRscyA9IE5VTEw7Ci1bc25pcF0KLQotU28gd2UgbXVzdCBjaGVjayBpdCBiZWZvcmUgdXNlIGl0cyBtZW1iZXJzLCBvdGhlcndpc2UsIHRoZXJlIG1pZ2h0IGJlCi1TZWdtZW50YXRpb24gZmF1bHQgZXJyb3IuCi0KLUZpeGVkOgotTUFDSElORSA9ICJxZW11bWlwcyIKLUlNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBxZW11IgotJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAotW3NuaXBdCi18IC9wYXRoL3RvL3FlbXVtaXBzLXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC90ZW1wL3J1bi5wcmVsaW5rX2ltYWdlLjEwMDA6IGxpbmUgMTExOiAgMTAxMCBTZWdtZW50YXRpb24gZmF1bHQgICAgICAoY29yZSBkdW1wZWQpCi1bc25pcF0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9waXBlcm1haWwveW9jdG8vMjAxOC1PY3RvYmVyLzA0MjgxMi5odG1sXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9hcmNoLW1pcHMuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FyY2gtbWlwcy5jIGIvc3JjL2FyY2gtbWlwcy5jCi1pbmRleCBjY2IxODM0Li4wMmM2MDhmIDEwMDY0NAotLS0tIGEvc3JjL2FyY2gtbWlwcy5jCi0rKysgYi9zcmMvYXJjaC1taXBzLmMKLUBAIC01NjcsNyArNTY3LDggQEAgbWlwc19wcmVsaW5rX3JlbG9jIChzdHJ1Y3QgcHJlbGlua19pbmZvICppbmZvLCBHRWxmX0FkZHIgcl9vZmZzZXQsCi0gICAgICAgaWYgKGRzby0+ZWhkci5lX3R5cGUgPT0gRVRfRVhFQykKLSAJewotIAkgIHZhbHVlID0gaW5mby0+cmVzb2x2ZSAoaW5mbywgcl9zeW0sIHJfdHlwZSk7Ci0tCSAgdmFsdWUgKz0gaW5mby0+cmVzb2x2ZXRscy0+b2Zmc2V0IC0gVExTX1RQX09GRlNFVDsKLSsJICBpZiAoaW5mby0+cmVzb2x2ZXRscyAhPSBOVUxMKQotKwkgICAgdmFsdWUgKz0gaW5mby0+cmVzb2x2ZXRscy0+b2Zmc2V0IC0gVExTX1RQX09GRlNFVDsKLSAJICBpZiAocl90eXBlID09IFJfTUlQU19UTFNfVFBSRUwzMikKLSAJICAgIG1pcHNfcHJlbGlua18zMmJpdF9yZWxvYyAoZHNvLCByZWxhLCB2YWx1ZSk7Ci0gCSAgZWxzZQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgppbmRleCBmMDk0NmRlLi5lMTk3YWY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKQEAgLTksNyArOSw3IEBACiBydW50aW1lIGFuZCB0aHVzIHByb2dyYW1zIGNvbWUgdXAgZmFzdGVyLiIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKLVNSQ1JFViA9ICJhODUzYTVkNzE1ZDg0ZWVjOTNhYTY4ZThmMmRmMjZiN2Q4NjBmNWIyIgorU1JDUkVWID0gImY5OTc1NTM3ZGJmZDlhZGUwZmM4MTNiZDVjZjVmY2JlNDE3NTNhMzciCiBQViA9ICIxLjArZ2l0JHtTUkNQVn0iCiAKICMKQEAgLTI4LDEyICsyOCwxMiBAQAogUEFDS0FHRVMgPSsgIiR7UE59LWNyb24iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHJlbGluay1jcm9zcy5naXQ7YnJhbmNoPWNyb3NzX3ByZWxpbmtfc3RhZ2luZyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1NSVBTLWdudS1oYXNoLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5jb25mIFwKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuY3Jvbi5kYWlseSBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmRlZmF1bHQgXAogICAgICAgICAgICBmaWxlOi8vbWFjcm9zLnByZWxpbmsgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoIFwKLSIKKyAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiAjIGVycm9yOiBlcnJvci5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1wc2V1ZG8tT24tYS1EQi1maXh1cC1yZW1vdmUtZmlsZXMtdGhhdC1kby1ub3QtZXhpc3QtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcHNldWRvLU9uLWEtREItZml4dXAtcmVtb3ZlLWZpbGVzLXRoYXQtZG8tbm90LWV4aXN0LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzQ5ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcHNldWRvLU9uLWEtREItZml4dXAtcmVtb3ZlLWZpbGVzLXRoYXQtZG8tbm90LWV4aXN0LS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGIwOTAyZTM2MTA4YjQ5ZTZiYzg4ZDZiMjUxY2MyZjhjZmZjZDVhMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG9AcmliYWxkYS5jb20+CitEYXRlOiBTdW4sIDUgQXByIDIwMjAgMTE6NDA6MzAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHNldWRvOiBPbiBhIERCIGZpeHVwIHJlbW92ZSBmaWxlcyB0aGF0IGRvIG5vdCBleGlzdCBhbnltb3JlCisKK0lmIHRoZSB1c2VyIGRlY2lkZXMgdG8gZml4IGEgZGF0YWJhc2UsIHJlbW92ZSB0aGUgZmlsZXMgdGhhdCBkbyBub3QKK2V4aXN0IGFueW1vcmUuCitJZiBvbmx5IERCIHRlc3QgaXMgc2VsZWN0ZWQgZG8gbm90IGNoYW5nZSB0aGUgYmVoYXZpb3VyIChyZXR1cm4gZXJyb3IpLgorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG9AcmliYWxkYS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL2cvb3BlbmVtYmVkZGVkLWNvcmUvbWVzc2FnZS8xMzcwNDVdCistLS0KKyBwc2V1ZG8uYyB8IDEzICsrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BzZXVkby5jIGIvcHNldWRvLmMKK2luZGV4IDBmNTg1MGUuLjk4ZTViMGMgMTAwNjQ0CistLS0gYS9wc2V1ZG8uYworKysrIGIvcHNldWRvLmMKK0BAIC0xMDg3LDkgKzEwODcsMTUgQEAgcHNldWRvX2RiX2NoZWNrKGludCBmaXgpIHsKKyAJCQlpbnQgZml4dXBfbmVlZGVkID0gMDsKKyAJCQlwc2V1ZG9fZGVidWcoUERCR0ZfREIsICJDaGVja2luZyA8JXM+XG4iLCBtLT5wYXRoKTsKKyAJCQlpZiAobHN0YXQobS0+cGF0aCwgJmJ1ZikpIHsKKy0JCQkJZXJyb3JzID0gRVhJVF9GQUlMVVJFOworLQkJCQlwc2V1ZG9fZGlhZygiY2FuJ3Qgc3RhdCA8JXM+XG4iLCBtLT5wYXRoKTsKKy0JCQkJY29udGludWU7CisrCQkJCWlmICghZml4KSB7CisrCQkJCQlwc2V1ZG9fZGlhZygiY2FuJ3Qgc3RhdCA8JXM+XG4iLCBtLT5wYXRoKTsKKysJCQkJCWVycm9ycyA9IEVYSVRfRkFJTFVSRTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQl9IGVsc2UgeworKwkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0RCLCAiY2FuJ3Qgc3RhdCA8JXM+XG4iLCBtLT5wYXRoKTsKKysJCQkJCWZpeHVwX25lZWRlZCA9IDI7CisrCQkJCQlnb3RvIGRvX2ZpeHVwOworKwkJCQl9CisgCQkJfQorIAkJCS8qIGNhbid0IGNoZWNrIGZvciBkZXZpY2UgdHlwZSBtaXNtYXRjaGVzLCB1aWQvZ2lkLCBvcgorIAkJCSAqIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgdmVyeSB0aGluZ3Mgd2UKK0BAIC0xMTI1LDYgKzExMzEsNyBAQCBwc2V1ZG9fZGJfY2hlY2soaW50IGZpeCkgeworIAkJCQkJU19JU0RJUihtLT5tb2RlKSk7CisgCQkJCWZpeHVwX25lZWRlZCA9IDI7CisgCQkJfQorKwkJCWRvX2ZpeHVwOgorIAkJCWlmIChmaXh1cF9uZWVkZWQpIHsKKyAJCQkJLyogaW4gZml4dXAgbW9kZSwgZWl0aGVyIGRlbGV0ZSAobWlzbWF0Y2hlcykgb3IKKyAJCQkJICogY29ycmVjdCAoZGV2L2lubykuCistLSAKKzIuMjEuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1yZWFscGF0aC5jLVJlbW92ZS10cmFpbGluZy1zbGFzaGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcmVhbHBhdGguYy1SZW1vdmUtdHJhaWxpbmctc2xhc2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzgyOWVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcmVhbHBhdGguYy1SZW1vdmUtdHJhaWxpbmctc2xhc2hlcy5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDg2YzlhNTYxMGUzMzMzYWQ2YWFhZGIxYWMxZThiNWEyYzk0OGQxMTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjUgTm92IDIwMTkgMTg6NDY6NDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVhbHBhdGguYzogUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMKKworTGludXggc3lzdGVtJ3MgcmVhbHBhdGgoKSByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcywgYnV0IHBzZXVkbydzIGRvZXNuJ3QsIG5lZWQKK21ha2UgdGhlbSBpZGVudGljYWwuCisKK0UuZy4sIHRoZSBmb2xsb3dpbmcgY29kZSAocmVsLmMpIHByaW50cyAnL3RtcCcgd2l0aCBzeXN0ZW0ncyByZWFscGF0aCwgYnV0Citwc2V1ZG8ncyByZWFscGF0aCBwcmludHMgJy90bXAvJzoKKworICAgICNpbmNsdWRlIDxzdGRpby5oPgorICAgICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgY2hhciBvdXRbUEFUSF9NQVhdOworICAgICAgICBwcmludGYoIiVzXG4iLCByZWFscGF0aCgiL3RtcC8iLCBvdXQpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiskIGJpdGJha2UgYmFzZS1wYXNzd2QgLWNkZXZzaGVsbCAjIEZvciBwc2V1ZG8gZW52CiskIGdjYyByZWwuYworJCAuL2Eub3V0CisvdG1wLyAoYnV0IHNob3VsZCBiZSAvdG1wKQorCitUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL2cvcG9reS9tZXNzYWdlLzExODc5XQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBvcnRzL3VuaXgvZ3V0cy9yZWFscGF0aC5jIHwgICAgOSArKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wb3J0cy91bml4L2d1dHMvcmVhbHBhdGguYyBiL3BvcnRzL3VuaXgvZ3V0cy9yZWFscGF0aC5jCistLS0gYS9wb3J0cy91bml4L2d1dHMvcmVhbHBhdGguYworKysrIGIvcG9ydHMvdW5peC9ndXRzL3JlYWxwYXRoLmMKK0BAIC0xNCw3ICsxNCwxNCBAQAorIAkJZXJybm8gPSBFTkFNRVRPT0xPTkc7CisgCQlyZXR1cm4gTlVMTDsKKyAJfQorLQlpZiAoKGxlbiA9IHN0cmxlbihybmFtZSkpID49IHBzZXVkb19zeXNfcGF0aF9tYXgoKSkgeworKwkJbGVuID0gc3RybGVuKHJuYW1lKTsKKysJCWNoYXIgKmVwID0gcm5hbWUgKyBsZW4gLSAxOworKwkJd2hpbGUgKGVwID4gcm5hbWUgJiYgKmVwID09ICcvJykgeworKwkJCS0tbGVuOworKwkJCSooZXAtLSkgPSAnXDAnOworKwkJfQorKworKwkJaWYgKGxlbiA+PSBwc2V1ZG9fc3lzX3BhdGhfbWF4KCkpIHsKKyAJCWVycm5vID0gRU5BTUVUT09MT05HOworIAkJcmV0dXJuIE5VTEw7CisgCX0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDYteGF0dHItYWRqdXN0LWZvci1hdHRyLTIuNC40OC1yZWxlYXNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDYteGF0dHItYWRqdXN0LWZvci1hdHRyLTIuNC40OC1yZWxlYXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTM1N2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwNi14YXR0ci1hZGp1c3QtZm9yLWF0dHItMi40LjQ4LXJlbGVhc2UucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSA5M2Q5NWVkMmVhZWRjY2ExMTBjMjE0ZTFmZTNmODg5NmIxZjZmODUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE3IERlYyAyMDE5IDIwOjI0OjI3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHhhdHRyOiBhZGp1c3QgZm9yIGF0dHIgMi40LjQ4IHJlbGVhc2UKKworTGF0ZXN0IHZlcnNpb25zIG9mIGF0dHIgaGF2ZSByZW1vdmVkIHRoZSB4YXR0ci5oIGhlYWRlciwKK3dpdGggdGhlIHJhdGlvbmFsZSB0aGF0IGxpYmMgaXMgcHJvdmlkaW5nIHRoZSBzYW1lIHdyYXBwZXJzLgorCithdHRyL2F0dHJpYnV0ZXMuaCBpcyBwcm92aWRpbmcgdGhlIEVOT0FUVFIgZGVmaW5pdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHBvcnRzL2xpbnV4L3N1YnBvcnRzICAgICAgICAgfCA1ICsrKy0tCisgcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaCB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wb3J0cy9saW51eC9zdWJwb3J0cyBiL3BvcnRzL2xpbnV4L3N1YnBvcnRzCitpbmRleCAyYzQzYWM5Li43NDBlYzgzIDEwMDc1NQorLS0tIGEvcG9ydHMvbGludXgvc3VicG9ydHMKKysrKyBiL3BvcnRzL2xpbnV4L3N1YnBvcnRzCitAQCAtMjksMTEgKzI5LDEyIEBAIGZpCisgaWYJJHBvcnRfeGF0dHI7IHRoZW4KKyAJY2F0ID4gZHVtbXkuYyA8PEVPRgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorKyNpbmNsdWRlIDxzeXMveGF0dHIuaD4KKysjaW5jbHVkZSA8YXR0ci9hdHRyaWJ1dGVzLmg+CisgaW50IGk7CisgRU9GCisgCWlmICEgJHtDQ30gLWMgLW8gZHVtbXkubyBkdW1teS5jID4vZGV2L251bGwgMj4mMTsgdGhlbgorLQkJZWNobyA+JjIgIldhcm5pbmc6IENhbid0IGNvbXBpbGUgdHJpdmlhbCBwcm9ncmFtIHVzaW5nIDxhdHRyL3hhdHRyLmg+Ii4KKysJCWVjaG8gPiYyICJXYXJuaW5nOiBDYW4ndCBjb21waWxlIHRyaXZpYWwgcHJvZ3JhbSB1c2luZyA8YXR0ci9hdHRyaWJ1dGVzLmg+Ii4KKyAJCWVjaG8gPiYyICIgICAgICAgICB4YXR0ciBzdXBwb3J0IHdpbGwgcmVxdWlyZSB0aGF0IGhlYWRlci4iCisgCWZpCisgCWVjaG8gImxpbnV4L3hhdHRyIgorZGlmZiAtLWdpdCBhL3BvcnRzL2xpbnV4L3hhdHRyL3BvcnRkZWZzLmggYi9wb3J0cy9saW51eC94YXR0ci9wb3J0ZGVmcy5oCitpbmRleCA1NmNkM2NhLi4wNjhkMzlhIDEwMDY0NAorLS0tIGEvcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaAorKysrIGIvcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaAorQEAgLTIsNSArMiw2IEBACisgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9ubHkKKyAgKgorICAqLworLSNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+CisrI2luY2x1ZGUgPHN5cy94YXR0ci5oPgorKyNpbmNsdWRlIDxhdHRyL2F0dHJpYnV0ZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvc2VjY29tcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9zZWNjb21wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4M2Y5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvc2VjY29tcC5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorUHNldWRvIGNoYW5nZXMgdGhlIHN5c2NhbGwgYWNjZXNzIHBhdHRlcm5zIHdoaWNoIG1ha2VzIGl0IGluY29tcGF0aWJsZSB3aXRoCitzZWNjb21wLiBUaGVyZWZvcmUgaW50ZXJjZXB0IHRoZSBzZWNjb21wIHN5c2NhbGwgYW5kIGFsdGVyIGl0LCBwcmV0ZW5kaW5nIHRoYXQKK3NlY2NvbXAgd2FzIHNldHVwIHdoZW4gaW4gZmFjdCB3ZSBkbyBub3RoaW5nLiBJZiB3ZSBlcnJvciBhcyB1bnN1cHBvcnRlZCwgCit1dGlsaXRpZXMgbGlrZSBmaWxlIHdpbGwgZXhpdCB3aXRoIGVycm9ycyBzbyB3ZSBjYW4ndCBqdXN0IGRpc2FibGUgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworUlAgMjAyMC80LzMKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJdCBmYWlscyB0byBjb21waWxlIHBzZXVkby1uYXRpdmUgb24gY2VudG9zIDc6CisKK3wgcG9ydHMvbGludXgvcHNldWRvX3dyYXBwZXJzLmM6IEluIGZ1bmN0aW9uIOKAmHByY3Rs4oCZOgorfCBwb3J0cy9saW51eC9wc2V1ZG9fd3JhcHBlcnMuYzoxMjk6MTQ6IGVycm9yOiDigJhTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUuKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKK3wgICAgaWYgKGNtZCA9PSBTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUikgeworfCAgICAgICAgICAgICAgIF4KKworQWRkIG1hY3JvIGd1YXJkIGZvciBzZWNjb21wIHRvIGF2b2lkIHRoZSBmYWlsdXJlLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IGdpdC9wb3J0cy9saW51eC9wc2V1ZG9fd3JhcHBlcnMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3BvcnRzL2xpbnV4L3BzZXVkb193cmFwcGVycy5jCisrKysgZ2l0L3BvcnRzL2xpbnV4L3BzZXVkb193cmFwcGVycy5jCitAQCAtNTcsNiArNTcsNyBAQCBpbnQgcHNldWRvX2NhcHNldChjYXBfdXNlcl9oZWFkZXJfdCBoZHJwCisgbG9uZworIHN5c2NhbGwobG9uZyBudW1iZXIsIC4uLikgeworIAlsb25nIHJjID0gLTE7CisrCXZhX2xpc3QgYXA7CisgCisgCWlmICghcHNldWRvX2NoZWNrX3dyYXBwZXJzKCkgfHwgIXJlYWxfc3lzY2FsbCkgeworIAkJLyogcmMgd2FzIGluaXRpYWxpemVkIHRvIHRoZSAiZmFpbHVyZSIgdmFsdWUgKi8KK0BAIC03Nyw2ICs3OCwyMCBAQCBzeXNjYWxsKGxvbmcgbnVtYmVyLCAuLi4pIHsKKyAJKHZvaWQpIG51bWJlcjsKKyAjZW5kaWYKKyAKKysjaWZkZWYgU1lTX3NlY2NvbXAKKysJLyogcHNldWRvIGFuZCBzZWNjb21wIGFyZSBpbmNvbXBhdGlibGUgYXMgcHNldWRvIHVzZXMgZGlmZmVyZW50IHN5c2NhbGxzCisrCSAqIHNvIHByZXRlbmQgdG8gZW5hYmxlIHNlY2NvbXAgYnV0IHJlYWxseSBkbyBub3RoaW5nICovCisrCWlmIChudW1iZXIgPT0gU1lTX3NlY2NvbXApIHsKKysJCXVuc2lnbmVkIGxvbmcgY21kOworKwkJdmFfc3RhcnQoYXAsIG51bWJlcik7CisrCQljbWQgPSB2YV9hcmcoYXAsIHVuc2lnbmVkIGxvbmcpOworKwkJdmFfZW5kKGFwKTsKKysJCWlmIChjbWQgPT0gU0VDQ09NUF9TRVRfTU9ERV9GSUxURVIpIHsKKysJCSAgICByZXR1cm4gMDsKKysJCX0KKysJfQorKyNlbmRpZgorKworIAkvKiBnY2MgbWFnaWMgdG8gYXR0ZW1wdCB0byBqdXN0IHBhc3MgdGhlc2UgYXJncyB0byBzeXNjYWxsLiB3ZSBoYXZlIHRvCisgCSAqIGd1ZXNzIGFib3V0IHRoZSBudW1iZXIgb2YgYXJnczsgdGhlIGRvY3MgZGlzY3VzcyBjYWxsaW5nIGNvbnZlbnRpb25zCisgCSAqIHVwIHRvIDcsIHNvIGxldCdzIHRyeSB0aGF0PworQEAgLTkyLDMgKzEwOCw0NCBAQCBzdGF0aWMgbG9uZyB3cmFwX3N5c2NhbGwobG9uZyBuciwgdmFfbGlzCisgCSh2b2lkKSBhcDsKKyAJcmV0dXJuIC0xOworIH0KKysKKytpbnQKKytwcmN0bChpbnQgb3B0aW9uLCAuLi4pIHsKKysJaW50IHJjID0gLTE7CisrCXZhX2xpc3QgYXA7CisrCisrCWlmICghcHNldWRvX2NoZWNrX3dyYXBwZXJzKCkgfHwgIXJlYWxfcHJjdGwpIHsKKysJCS8qIHJjIHdhcyBpbml0aWFsaXplZCB0byB0aGUgImZhaWx1cmUiIHZhbHVlICovCisrCQlwc2V1ZG9fZW5vc3lzKCJwcmN0bCIpOworKwkJcmV0dXJuIHJjOworKwl9CisrCisrI2lmZGVmIFNFQ0NPTVBfU0VUX01PREVfRklMVEVSCisrCS8qIHBzZXVkbyBhbmQgc2VjY29tcCBhcmUgaW5jb21wYXRpYmxlIGFzIHBzZXVkbyB1c2VzIGRpZmZlcmVudCBzeXNjYWxscworKwkgKiBzbyBwcmV0ZW5kIHRvIGVuYWJsZSBzZWNjb21wIGJ1dCByZWFsbHkgZG8gbm90aGluZyAqLworKwlpZiAob3B0aW9uID09IFBSX1NFVF9TRUNDT01QKSB7CisrCQl1bnNpZ25lZCBsb25nIGNtZDsKKysJCXZhX3N0YXJ0KGFwLCBvcHRpb24pOworKwkJY21kID0gdmFfYXJnKGFwLCB1bnNpZ25lZCBsb25nKTsKKysJCXZhX2VuZChhcCk7CisrCQlpZiAoY21kID09IFNFQ0NPTVBfU0VUX01PREVfRklMVEVSKSB7CisrCQkgICAgcmV0dXJuIDA7CisrCQl9CisrCX0KKysjZW5kaWYKKysKKysJLyogZ2NjIG1hZ2ljIHRvIGF0dGVtcHQgdG8ganVzdCBwYXNzIHRoZXNlIGFyZ3MgdG8gcHJjdGwuIHdlIGhhdmUgdG8KKysJICogZ3Vlc3MgYWJvdXQgdGhlIG51bWJlciBvZiBhcmdzOyB0aGUgZG9jcyBkaXNjdXNzIGNhbGxpbmcgY29udmVudGlvbnMKKysJICogdXAgdG8gNSwgc28gbGV0J3MgdHJ5IHRoYXQ/CisrCSAqLworKwl2b2lkICpyZXMgPSBfX2J1aWx0aW5fYXBwbHkoKHZvaWQgKCopKCkpIHJlYWxfcHJjdGwsIF9fYnVpbHRpbl9hcHBseV9hcmdzKCksIHNpemVvZihsb25nKSAqIDUpOworKwlfX2J1aWx0aW5fcmV0dXJuKHJlcyk7CisrfQorKworKy8qIHVudXNlZC4KKysgKi8KKytzdGF0aWMgaW50IHdyYXBfcHJjdGwoaW50IG9wdGlvbiwgdmFfbGlzdCBhcCkgeworKwkodm9pZCkgb3B0aW9uOworKwkodm9pZCkgYXA7CisrCXJldHVybiAtMTsKKyt9CitJbmRleDogZ2l0L3BvcnRzL2xpbnV4L2d1dHMvcHJjdGwuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGdpdC9wb3J0cy9saW51eC9ndXRzL3ByY3RsLmMKK0BAIC0wLDAgKzEsMTUgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMjAyMCBSaWNoYXJkIFB1cmRpZQorKyAqCisrICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9ubHkKKysgKgorKyAqIGludCBwcmN0bChpbnQgb3B0aW9uLCAuLi4pCisrICoJaW50IHJjID0gLTE7CisrICovCisrCisrCS8qIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgcHJjdGwgaXMgaGFuZC13cmFwcGVkICovCisrCXJjID0gLTE7CisrCisrLyoJcmV0dXJuIHJjOworKyAqIH0KKysgKi8KK0luZGV4OiBnaXQvcG9ydHMvbGludXgvcG9ydGRlZnMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3BvcnRzL2xpbnV4L3BvcnRkZWZzLmgKKysrKyBnaXQvcG9ydHMvbGludXgvcG9ydGRlZnMuaAorQEAgLTMyLDMgKzMyLDUgQEAgR0xJQkNfQ09NUEFUX1NZTUJPTChtZW1jcHksMi4wKTsKKyAKKyAjaW5jbHVkZSA8bGludXgvY2FwYWJpbGl0eS5oPgorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorKyNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKysjaW5jbHVkZSA8bGludXgvc2VjY29tcC5oPgorSW5kZXg6IGdpdC9wb3J0cy9saW51eC93cmFwZnVuY3MuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wb3J0cy9saW51eC93cmFwZnVuY3MuaW4KKysrKyBnaXQvcG9ydHMvbGludXgvd3JhcGZ1bmNzLmluCitAQCAtNTYsMyArNTYsNCBAQCBpbnQgZ2V0Z3JlbnRfcihzdHJ1Y3QgZ3JvdXAgKmdidWYsIGNoYXIKKyBpbnQgY2Fwc2V0KGNhcF91c2VyX2hlYWRlcl90IGhkcnAsIGNvbnN0IGNhcF91c2VyX2RhdGFfdCBkYXRhcCk7IC8qIHJlYWxfZnVuYz1wc2V1ZG9fY2Fwc2V0ICovCisgbG9uZyBzeXNjYWxsKGxvbmcgbnIsIC4uLik7IC8qIGhhbmRfd3JhcHBlZD0xICovCisgaW50IHJlbmFtZWF0MihpbnQgb2xkZGlyZmQsIGNvbnN0IGNoYXIgKm9sZHBhdGgsIGludCBuZXdkaXJmZCwgY29uc3QgY2hhciAqbmV3cGF0aCwgdW5zaWduZWQgaW50IGZsYWdzKTsgLyogZmxhZ3M9QVRfU1lNTElOS19OT0ZPTExPVyAqLworK2ludCBwcmN0bChpbnQgb3B0aW9uLCAuLi4pOyAvKiBoYW5kX3dyYXBwZWQ9MSAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwppbmRleCA3ZmY4ZTQ0Li41MGUzMDA2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwpAQCAtMTYsNiArMTYsNyBAQAogUFJPVklERVMgKz0gInZpcnR1YWwvZmFrZXJvb3QiCiAKIE1BS0VPUFRTID0gIiIKK01BS0VPUFRTX2NsYXNzLW5hdGl2ZSA9ICInUlBBVEg9LVdsLC0tcnBhdGg9WE9SSUdJTi8uLi8uLi8uLi9zcWxpdGUzLW5hdGl2ZS91c3IvbGliLyciCiAKIGluaGVyaXQgc2l0ZWluZm8gcGtnY29uZmlnCiAKQEAgLTExNSw2ICsxMTYsNyBAQAogfQogCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworCWNocnBhdGggJHtEfSR7YmluZGlyfS9wc2V1ZG8gLXIgYGNocnBhdGggJHtEfSR7YmluZGlyfS9wc2V1ZG8gfCBjdXQgLWQgPSAtZiAyIHwgc2VkIHMvWE9SSUdJTi9cXCRPUklHSU4vYAogCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KIAkjIFRoZSBmYWxsYmFjayBmaWxlcyBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQKIAlpbnN0YWxsIC1tIDQ0NCAke1dPUktESVJ9L2ZhbGxiYWNrLXBhc3N3ZCAke0R9JHtzeXNjb25mZGlyfS9wYXNzd2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKaW5kZXggMWYyZGY0YS4uYTMwNDljNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKQEAgLTgsNiArOCwxMCBAQAogICAgICAgICAgICBmaWxlOi8vdG9vbWFueWZpbGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZXRhYmxlcy13cmFwcGVycy11c2UtUHl0aG9uLTMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3RhdHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZWFscGF0aC5jLVJlbW92ZS10cmFpbGluZy1zbGFzaGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYteGF0dHItYWRqdXN0LWZvci1hdHRyLTIuNC40OC1yZWxlYXNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlY2NvbXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wc2V1ZG8tT24tYS1EQi1maXh1cC1yZW1vdmUtZmlsZXMtdGhhdC1kby1ub3QtZXhpc3QtLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiMDYwMDU4YmIyOWY3MGIyNDRlNjg1YjNjNzA0ZWIwNjQxYjczNmY3MyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLWNvbnZlcnQtc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtY29udmVydC1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQxNjI0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLWNvbnZlcnQtc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsNTU1IEBACitGcm9tIDAwODQ4ZDc2MGZhMzk5OWUyYmVkNzU5YjU4NTQ1MmIzNWQ2NWQ2ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA1IE1hciAyMDIwIDEyOjAyOjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbnZlcnQgc2hlYmFuZyBmcm9tIHB5dGhvbiB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvY29tbWl0LzU4MzkwMWEwNzRkYzY1MTQ1ZDNkNjEzNmJhN2RjZDAyNjM0ZDY4MGJdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGRvYy9ESVNUVVRJTFMucnN0LnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBkb2MvY2RvYy9udW1weWZpbHRlci5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZG9jL3Bvc3Rwcm9jZXNzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGRvYy9zdW1tYXJpemUucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9kaXN0dXRpbHMvY29udl90ZW1wbGF0ZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZGlzdHV0aWxzL2NwdWluZm8ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9kaXN0dXRpbHMvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvX19pbml0X18ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2F1eGZ1bmNzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9jYXBpX21hcHMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvY2JfcnVsZXMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2NmdW5jcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9jb21tb25fcnVsZXMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2RpYWdub3NlLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9mMnB5MmUucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2Z1bmMyc3Vici5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9ydWxlcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L3VzZV9ydWxlcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvbGluYWxnL2xhcGFja19saXRlL2NsYXBhY2tfc2NydWIucHkgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9tYWtlX2xpdGUucHkgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9tYS9iZW5jaC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvbWEvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L21hdHJpeGxpYi9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmcucHl4ICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4IHwgMiArLQorIG51bXB5L3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS90ZXN0aW5nL3ByaW50X2NvZXJjaW9uX3RhYmxlcy5weSAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvdGVzdGluZy9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHJ1bnRlc3RzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBzZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weSAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL2NoYW5nZWxvZy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvZmluZF9kZXByZWNhdGVkX2VzY2FwZWRfY2hhcmFjdGVycy5weSAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3JlZmd1aWRlX2NoZWNrLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3Qvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0RmFycmF5LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RGb3J0cmFuLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0TWF0cml4LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdFN1cGVyVGVuc29yLnB5ICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RUZW5zb3IucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0VmVjdG9yLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyA0OSBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RvYy9ESVNUVVRJTFMucnN0LnR4dCBiL2RvYy9ESVNUVVRJTFMucnN0LnR4dAoraW5kZXggYmNlZjgyNS4uYmMxNzAwZiAxMDA2NDQKKy0tLSBhL2RvYy9ESVNUVVRJTFMucnN0LnR4dAorKysrIGIvZG9jL0RJU1RVVElMUy5yc3QudHh0CitAQCAtNTksNyArNTksNyBAQCBTY2lQeSBwdXJlIFB5dGhvbiBwYWNrYWdlIGV4YW1wbGUKKyAKKyBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGEgbWluaW1hbCBgYHNldHVwLnB5YGAgZmlsZSBmb3IgYSBwdXJlIFNjaVB5IHBhY2thZ2U6OgorIAorLSAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrICAjIS91c3IvYmluL2VudiBweXRob24zCisgICBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJyx0b3BfcGF0aD1Ob25lKToKKyAgICAgICBmcm9tIG51bXB5LmRpc3R1dGlscy5taXNjX3V0aWwgaW1wb3J0IENvbmZpZ3VyYXRpb24KKyAgICAgICBjb25maWcgPSBDb25maWd1cmF0aW9uKCdteXBhY2thZ2UnLHBhcmVudF9wYWNrYWdlLHRvcF9wYXRoKQorZGlmZiAtLWdpdCBhL2RvYy9jZG9jL251bXB5ZmlsdGVyLnB5IGIvZG9jL2Nkb2MvbnVtcHlmaWx0ZXIucHkKK2luZGV4IDBlYzUwNjkuLjA2N2JkMzYgMTAwNzU1CistLS0gYS9kb2MvY2RvYy9udW1weWZpbHRlci5weQorKysrIGIvZG9jL2Nkb2MvbnVtcHlmaWx0ZXIucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBudW1weWZpbHRlci5weSBJTlBVVEZJTEUKKyAKK2RpZmYgLS1naXQgYS9kb2MvcG9zdHByb2Nlc3MucHkgYi9kb2MvcG9zdHByb2Nlc3MucHkKK2luZGV4IDJlNTBjMTEuLjFiZTZmMzkgMTAwNzU1CistLS0gYS9kb2MvcG9zdHByb2Nlc3MucHkKKysrKyBiL2RvYy9wb3N0cHJvY2Vzcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorICVwcm9nIE1PREUgRklMRVMuLi4KKyAKK2RpZmYgLS1naXQgYS9kb2Mvc3VtbWFyaXplLnB5IGIvZG9jL3N1bW1hcml6ZS5weQoraW5kZXggY2ZjZTI3MS4uNTYzYWYwMiAxMDA3NTUKKy0tLSBhL2RvYy9zdW1tYXJpemUucHkKKysrKyBiL2RvYy9zdW1tYXJpemUucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBzdW1tYXJpemUucHkKKyAKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvY29udl90ZW1wbGF0ZS5weSBiL251bXB5L2Rpc3R1dGlscy9jb252X3RlbXBsYXRlLnB5CitpbmRleCAzYmNiN2I4Li44ODQzMmM4IDEwMDY0NAorLS0tIGEvbnVtcHkvZGlzdHV0aWxzL2NvbnZfdGVtcGxhdGUucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9jb252X3RlbXBsYXRlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgdGFrZXMgdGVtcGxhdGVkIGZpbGUgLnh4eC5zcmMgYW5kIHByb2R1Y2VzIC54eHggZmlsZSAgd2hlcmUgLnh4eCBpcworIC5pIG9yIC5jIG9yIC5oLCB1c2luZyB0aGUgZm9sbG93aW5nIHRlbXBsYXRlIHJ1bGVzCitkaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL2NwdWluZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvY3B1aW5mby5weQoraW5kZXggYmM5NzI4My4uODc1MDJhOSAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9jcHVpbmZvLnB5CisrKysgYi9udW1weS9kaXN0dXRpbHMvY3B1aW5mby5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIGNwdWluZm8KKyAKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvZnJvbV90ZW1wbGF0ZS5weSBiL251bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5CitpbmRleCBjNWMxMTYzLi5hZjc1OTcxIDEwMDY0NAorLS0tIGEvbnVtcHkvZGlzdHV0aWxzL2Zyb21fdGVtcGxhdGUucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgcHJvY2Vzc19maWxlKGZpbGVuYW1lKQorZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9zZXR1cC5weSBiL251bXB5L2Rpc3R1dGlscy9zZXR1cC5weQoraW5kZXggODJhNTNiZC4uNjQ2OTIxYiAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9zZXR1cC5weQorKysrIGIvbnVtcHkvZGlzdHV0aWxzL3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJyx0b3BfcGF0aD1Ob25lKToKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKK2luZGV4IDRmMzQwYjYuLjE4OTA4MWQgMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIFRoaXMgZmlsZSBkZWZpbmVzIGEgc2V0IG9mIHN5c3RlbV9pbmZvIGNsYXNzZXMgZm9yIGdldHRpbmcKKyBpbmZvcm1hdGlvbiBhYm91dCB2YXJpb3VzIHJlc291cmNlcyAobGlicmFyaWVzLCBsaWJyYXJ5IGRpcmVjdG9yaWVzLAorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvX19pbml0X18ucHkgYi9udW1weS9mMnB5L19faW5pdF9fLnB5CitpbmRleCA0MmUzNjMyLi4wOWEzNjU3IDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9fX2luaXRfXy5weQorKysrIGIvbnVtcHkvZjJweS9fX2luaXRfXy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIkZvcnRyYW4gdG8gUHl0aG9uIEludGVyZmFjZSBHZW5lcmF0b3IuCisgCisgIiIiCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9hdXhmdW5jcy5weSBiL251bXB5L2YycHkvYXV4ZnVuY3MucHkKK2luZGV4IDQwNGJkYmQuLmQyM2Q5NTkgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2F1eGZ1bmNzLnB5CisrKysgYi9udW1weS9mMnB5L2F1eGZ1bmNzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQXV4aWxpYXJ5IGZ1bmN0aW9ucyBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvY2FwaV9tYXBzLnB5IGIvbnVtcHkvZjJweS9jYXBpX21hcHMucHkKK2luZGV4IGNlNzlmNjguLmU1ZDNmZDIgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2NhcGlfbWFwcy5weQorKysrIGIvbnVtcHkvZjJweS9jYXBpX21hcHMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBDb3B5cmlnaHQgMTk5OSwyMDAwIFBlYXJ1IFBldGVyc29uIGFsbCByaWdodHMgcmVzZXJ2ZWQsCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9jYl9ydWxlcy5weSBiL251bXB5L2YycHkvY2JfcnVsZXMucHkKK2luZGV4IDE4M2Q3YzIuLjkzZTkzZmUgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2NiX3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L2NiX3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQnVpbGQgY2FsbC1iYWNrIG1lY2hhbmlzbSBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvY2Z1bmNzLnB5IGIvbnVtcHkvZjJweS9jZnVuY3MucHkKK2luZGV4IGNjYjdiM2EuLmNkYjc4M2QgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2NmdW5jcy5weQorKysrIGIvbnVtcHkvZjJweS9jZnVuY3MucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBDIGRlY2xhcmF0aW9ucywgQ1BQIG1hY3JvcywgYW5kIEMgZnVuY3Rpb25zIGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9jb21tb25fcnVsZXMucHkgYi9udW1weS9mMnB5L2NvbW1vbl9ydWxlcy5weQoraW5kZXggZjYxZDg4MS4uZmU1MTBiZiAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvY29tbW9uX3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L2NvbW1vbl9ydWxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEJ1aWxkIGNvbW1vbiBibG9jayBtZWNoYW5pc20gZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2NyYWNrZm9ydHJhbi5weSBiL251bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5CitpbmRleCAyYWFmNWQ3Li5mYjVlZjJmIDEwMDc1NQorLS0tIGEvbnVtcHkvZjJweS9jcmFja2ZvcnRyYW4ucHkKKysrKyBiL251bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgY3JhY2tmb3J0cmFuIC0tLSByZWFkIGZvcnRyYW4gKDc3LDkwKSBjb2RlIGFuZCBleHRyYWN0IGRlY2xhcmF0aW9uIGluZm9ybWF0aW9uLgorIAorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvZGlhZ25vc2UucHkgYi9udW1weS9mMnB5L2RpYWdub3NlLnB5CitpbmRleCAwMjQxZmVkLi42YzAzMDRjIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9kaWFnbm9zZS5weQorKysrIGIvbnVtcHkvZjJweS9kaWFnbm9zZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyBpbXBvcnQgb3MKK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2YycHkyZS5weSBiL251bXB5L2YycHkvZjJweTJlLnB5CitpbmRleCBkMDNlZmY5Li5jMTdiZmQ5IDEwMDc1NQorLS0tIGEvbnVtcHkvZjJweS9mMnB5MmUucHkKKysrKyBiL251bXB5L2YycHkvZjJweTJlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgZjJweTJlIC0gRm9ydHJhbiB0byBQeXRob24gQy9BUEkgZ2VuZXJhdG9yLiAybmQgRWRpdGlvbi4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2Y5MG1vZF9ydWxlcy5weSBiL251bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5CitpbmRleCA4NWVhZTgwLi43MGJlMTI4IDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9mOTBtb2RfcnVsZXMucHkKKysrKyBiL251bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQnVpbGQgRjkwIG1vZHVsZSBzdXBwb3J0IGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9mdW5jMnN1YnIucHkgYi9udW1weS9mMnB5L2Z1bmMyc3Vici5weQoraW5kZXggNjAxMGQ1YS4uZmRlYTBjMiAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvZnVuYzJzdWJyLnB5CisrKysgYi9udW1weS9mMnB5L2Z1bmMyc3Vici5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIFJ1bGVzIGZvciBidWlsZGluZyBDL0FQSSBtb2R1bGUgd2l0aCBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9ydWxlcy5weSBiL251bXB5L2YycHkvcnVsZXMucHkKK2luZGV4IGYyZjcxM2IuLmY4N2IwM2MgMTAwNzU1CistLS0gYS9udW1weS9mMnB5L3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgUnVsZXMgZm9yIGJ1aWxkaW5nIEMvQVBJIG1vZHVsZSB3aXRoIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L3NldHVwLnB5IGIvbnVtcHkvZjJweS9zZXR1cC5weQoraW5kZXggYThjMTQwMS4uMmU3YTUxNyAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvc2V0dXAucHkKKysrKyBiL251bXB5L2YycHkvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBzZXR1cC5weSBmb3IgaW5zdGFsbGluZyBGMlBZCisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS91c2VfcnVsZXMucHkgYi9udW1weS9mMnB5L3VzZV9ydWxlcy5weQoraW5kZXggNmY0NGYxNi4uODIxNGY0MiAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvdXNlX3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L3VzZV9ydWxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEJ1aWxkICd1c2Ugb3RoZXJzIG1vZHVsZSBkYXRhJyBtZWNoYW5pc20gZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvY2xhcGFja19zY3J1Yi5weSBiL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9jbGFwYWNrX3NjcnViLnB5CitpbmRleCA0MzQ1ODYxLi45MWU2NmU3IDEwMDY0NAorLS0tIGEvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL2NsYXBhY2tfc2NydWIucHkKKysrKyBiL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9jbGFwYWNrX3NjcnViLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorIGltcG9ydCBzeXMsIG9zCitkaWZmIC0tZ2l0IGEvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL21ha2VfbGl0ZS5weSBiL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9tYWtlX2xpdGUucHkKK2luZGV4IDYxMTAyZDYuLjAyMTFmNGUgMTAwNzU1CistLS0gYS9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvbWFrZV9saXRlLnB5CisrKysgYi9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvbWFrZV9saXRlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgVXNhZ2U6IG1ha2VfbGl0ZS5weSA8d3JhcHBlZF9yb3V0aW5lc19maWxlPiA8bGFwYWNrX2Rpcj4gPG91dHB1dF9kaXI+CisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvbWEvYmVuY2gucHkgYi9udW1weS9tYS9iZW5jaC5weQoraW5kZXggYTliYTQyZC4uYTM3NzQzNiAxMDA2NDQKKy0tLSBhL251bXB5L21hL2JlbmNoLnB5CisrKysgYi9udW1weS9tYS9iZW5jaC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIAorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitkaWZmIC0tZ2l0IGEvbnVtcHkvbWEvc2V0dXAucHkgYi9udW1weS9tYS9zZXR1cC5weQoraW5kZXggZDFkNmM4OS4uYTA0Yjc5YiAxMDA2NDQKKy0tLSBhL251bXB5L21hL3NldHVwLnB5CisrKysgYi9udW1weS9tYS9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgZGVmIGNvbmZpZ3VyYXRpb24ocGFyZW50X3BhY2thZ2U9JycsdG9wX3BhdGg9Tm9uZSk6CitkaWZmIC0tZ2l0IGEvbnVtcHkvbWF0cml4bGliL3NldHVwLnB5IGIvbnVtcHkvbWF0cml4bGliL3NldHVwLnB5CitpbmRleCBkMDk4MWQ2Li41NzUzNGQxIDEwMDY0NAorLS0tIGEvbnVtcHkvbWF0cml4bGliL3NldHVwLnB5CisrKysgYi9udW1weS9tYXRyaXhsaWIvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLCB0b3BfcGF0aD1Ob25lKToKK2RpZmYgLS1naXQgYS9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmcucHl4IGIvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nLnB5eAoraW5kZXggN2EwZGZlMC4uM2E3ZjgxYSAxMDA2NDQKKy0tLSBhL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZy5weXgKKysrKyBiL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZy5weXgKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjY3l0aG9uOiBsYW5ndWFnZV9sZXZlbD0zCisgCisgZnJvbSBsaWJjLnN0ZGludCBjaW1wb3J0IHVpbnQzMl90CitkaWZmIC0tZ2l0IGEvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4IGIvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4CitpbmRleCAxYmVmNTA2Li40ZGE2YTRiIDEwMDY0NAorLS0tIGEvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4CisrKysgYi9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmdfZGlzdHJpYnV0aW9ucy5weXgKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjY3l0aG9uOiBsYW5ndWFnZV9sZXZlbD0zCisgIiIiCisgVGhpcyBmaWxlIHNob3dzIGhvdyB0aGUgdG8gdXNlIGEgQml0R2VuZXJhdG9yIHRvIGNyZWF0ZSBhIGRpc3RyaWJ1dGlvbi4KK2RpZmYgLS1naXQgYS9udW1weS9zZXR1cC5weSBiL251bXB5L3NldHVwLnB5CitpbmRleCA0Y2NkYWVlLi5kYjA2YzgyIDEwMDY0NAorLS0tIGEvbnVtcHkvc2V0dXAucHkKKysrKyBiL251bXB5L3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyAKK2RpZmYgLS1naXQgYS9udW1weS90ZXN0aW5nL3ByaW50X2NvZXJjaW9uX3RhYmxlcy5weSBiL251bXB5L3Rlc3RpbmcvcHJpbnRfY29lcmNpb25fdGFibGVzLnB5CitpbmRleCA3MmIyMmNlLi4xZTlhMzAxIDEwMDc1NQorLS0tIGEvbnVtcHkvdGVzdGluZy9wcmludF9jb2VyY2lvbl90YWJsZXMucHkKKysrKyBiL251bXB5L3Rlc3RpbmcvcHJpbnRfY29lcmNpb25fdGFibGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiUHJpbnRzIHR5cGUtY29lcmNpb24gdGFibGVzIGZvciB0aGUgYnVpbHQtaW4gTnVtUHkgdHlwZXMKKyAKKyAiIiIKK2RpZmYgLS1naXQgYS9udW1weS90ZXN0aW5nL3NldHVwLnB5IGIvbnVtcHkvdGVzdGluZy9zZXR1cC5weQoraW5kZXggN2MzZjJmYi4uYmQzMTVlZSAxMDA3NTUKKy0tLSBhL251bXB5L3Rlc3Rpbmcvc2V0dXAucHkKKysrKyBiL251bXB5L3Rlc3Rpbmcvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorIAorZGlmZiAtLWdpdCBhL3J1bnRlc3RzLnB5IGIvcnVudGVzdHMucHkKK2luZGV4IGEzODA1NGYuLjM4M2RkYWEgMTAwNzU1CistLS0gYS9ydW50ZXN0cy5weQorKysrIGIvcnVudGVzdHMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBydW50ZXN0cy5weSBbT1BUSU9OU10gWy0tIEFSR1NdCisgCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggZDdmODA3Yi4uNzA1ZWE1ZCAxMDA3NTUKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIiBOdW1QeSBpcyB0aGUgZnVuZGFtZW50YWwgcGFja2FnZSBmb3IgYXJyYXkgY29tcHV0aW5nIHdpdGggUHl0aG9uLgorIAorIEl0IHByb3ZpZGVzOgorZGlmZiAtLWdpdCBhL3Rvb2xzL2NfY292ZXJhZ2UvY19jb3ZlcmFnZV9yZXBvcnQucHkgYi90b29scy9jX2NvdmVyYWdlL2NfY292ZXJhZ2VfcmVwb3J0LnB5CitpbmRleCAzMjdmNmRjLi44ODM3Njg0IDEwMDc1NQorLS0tIGEvdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weQorKysrIGIvdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIEEgc2NyaXB0IHRvIGNyZWF0ZSBDIGNvZGUtY292ZXJhZ2UgcmVwb3J0cyBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mCisgdmFsZ3JpbmQncyBjYWxsZ3JpbmQgdG9vbC4KK2RpZmYgLS1naXQgYS90b29scy9jaGFuZ2Vsb2cucHkgYi90b29scy9jaGFuZ2Vsb2cucHkKK2luZGV4IGIxMzViMTQuLjVkOGIzM2MgMTAwNzU1CistLS0gYS90b29scy9jaGFuZ2Vsb2cucHkKKysrKyBiL3Rvb2xzL2NoYW5nZWxvZy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIGVuY29kaW5nOnV0Zi04IC0qLQorICIiIgorIFNjcmlwdCB0byBnZW5lcmF0ZSBjb250cmlidXRvciBhbmQgcHVsbCByZXF1ZXN0IGxpc3RzCitkaWZmIC0tZ2l0IGEvdG9vbHMvY2kvcHVzaF9kb2NzX3RvX3JlcG8ucHkgYi90b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weQoraW5kZXggYTk4OTY2OC4uYWU1MzA1NCAxMDA3NTUKKy0tLSBhL3Rvb2xzL2NpL3B1c2hfZG9jc190b19yZXBvLnB5CisrKysgYi90b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorIGltcG9ydCBhcmdwYXJzZQorIGltcG9ydCBzdWJwcm9jZXNzCitkaWZmIC0tZ2l0IGEvdG9vbHMvZmluZF9kZXByZWNhdGVkX2VzY2FwZWRfY2hhcmFjdGVycy5weSBiL3Rvb2xzL2ZpbmRfZGVwcmVjYXRlZF9lc2NhcGVkX2NoYXJhY3RlcnMucHkKK2luZGV4IDZmOTAwMDEuLjEwZTAzNzggMTAwNjQ0CistLS0gYS90b29scy9maW5kX2RlcHJlY2F0ZWRfZXNjYXBlZF9jaGFyYWN0ZXJzLnB5CisrKysgYi90b29scy9maW5kX2RlcHJlY2F0ZWRfZXNjYXBlZF9jaGFyYWN0ZXJzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIHIiIiIKKyBMb29rIGZvciBlc2NhcGUgc2VxdWVuY2VzIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNi4KKyAKK2RpZmYgLS1naXQgYS90b29scy9yZWZndWlkZV9jaGVjay5weSBiL3Rvb2xzL3JlZmd1aWRlX2NoZWNrLnB5CitpbmRleCAyYzYyODA5Li5hMTlhMjllIDEwMDY0NAorLS0tIGEvdG9vbHMvcmVmZ3VpZGVfY2hlY2sucHkKKysrKyBiL3Rvb2xzL3JlZmd1aWRlX2NoZWNrLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgcmVmZ3VpZGVfY2hlY2sucHkgW09QVElPTlNdIFstLSBBUkdTXQorIAorZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC9zZXR1cC5weSBiL3Rvb2xzL3N3aWcvdGVzdC9zZXR1cC5weQoraW5kZXggNGZmODcwZS4uZjhmMDVlNiAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC9zZXR1cC5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0QXJyYXkucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdEFycmF5LnB5CitpbmRleCA4ZDljNzk3Li41NGZmZTcxIDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmFycmF5LnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGYXJyYXkucHkKK2luZGV4IGU4YmY3MTEuLmIzNzdmN2MgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdEZhcnJheS5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGYXJyYXkucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkKK2luZGV4IDcxYmUyNzcuLjU1MDM0YmYgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmxhdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weQoraW5kZXggNDI2ZTg5NC4uMGY3ZDBlNiAxMDA2NDQKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGb3J0cmFuLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RNYXRyaXgucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdE1hdHJpeC5weQoraW5kZXggMDY1YmUwZC4uODU0YTIzYyAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0TWF0cml4LnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdE1hdHJpeC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0U3VwZXJUZW5zb3IucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdFN1cGVyVGVuc29yLnB5CitpbmRleCA5N2ZlODBjLi4zMWI2M2QwIDEwMDY0NAorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RTdXBlclRlbnNvci5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RTdXBlclRlbnNvci5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdFRlbnNvci5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VGVuc29yLnB5CitpbmRleCBhYzFiNzQ5Li5mNDdkOWU4IDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RUZW5zb3IucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VGVuc29yLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RWZWN0b3IucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdFZlY3Rvci5weQoraW5kZXggNDVlNzYzYi4uMDY3YjkyMiAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VmVjdG9yLnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdFZlY3Rvci5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZWNmZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gNjI5ODkxZjY3NjAxMjc1YzljNGRlMGJiMDFhZmNmMWE4YzQ0ZmEzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE2IE1hciAyMDE4IDE5OjU1OjIxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5weV9jcHU6IEFkZCByaXNjdiBzdXBwb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L3B1bGwvMTA3NjFdCi0tLS0KLSBudW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmggYi9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCi1pbmRleCA1ZWRkOGY0Li5lMWU0Nzk2IDEwMDY0NAotLS0tIGEvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaAotKysrIGIvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaAotQEAgLTk2LDYgKzk2LDggQEAKLSAgICAgI2RlZmluZSBOUFlfQ1BVX09SMUsKLSAjZWxpZiBkZWZpbmVkKF9fbWM2ODAwMF9fKQotICAgICAjZGVmaW5lIE5QWV9DUFVfTTY4SwotKyNlbGlmIGRlZmluZWQoX19yaXNjdikKLSsgICAgI2RlZmluZSBOUFlfQ1BVX1JJU0NWCi0gI2VsaWYgZGVmaW5lZChfX2FyY19fKSAmJiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9fKQotICAgICAjZGVmaW5lIE5QWV9DUFVfQVJDRUwKLSAjZWxpZiBkZWZpbmVkKF9fYXJjX18pICYmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnVtcHktcmFuZG9tLXNldHVwLnB5LXJlbW92ZS10aGUtZGV0ZWN0aW9uLW9mLXg4Ni10YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJiMmE2Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBiODgxZTBiMmJhOWNmMWE0YWEzNTFhMWMxZWE5MGIxZTE3NzZjZTIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEyIEF1ZyAyMDE5IDE1OjM3OjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG51bXB5L3JhbmRvbS9zZXR1cC5weTogcmVtb3ZlIHRoZSBkZXRlY3Rpb24gb2YgeDg2IHRhcmdldHMKLSB2aWEgdW5hbWUoKQotCi1UaGlzIHdhcyBiYWRseSBicmVha2luZyBjb21waWxhdGlvbiBmb3IgQVJNIHRhcmdldHMgKGFuZCBwb3NzaWJseQotb3RoZXIgbm9uLXg4NiB0YXJnZXRzKTsgaWYgLW1zc2UyIGlzIGRlc2lyYWJsZSBmb3IgeDg2IGJ1aWxkcyBpdCBoYXMKLXRvIGJlIHBhc3NlZCB0aHJvdWdoIGFub3RoZXIgY2hhbm5lbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBudW1weS9yYW5kb20vc2V0dXAucHkgfCA1IC0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9udW1weS9yYW5kb20vc2V0dXAucHkgYi9udW1weS9yYW5kb20vc2V0dXAucHkKLWluZGV4IGExYmYzYjguLjYwZmI1MzQgMTAwNjQ0Ci0tLS0gYS9udW1weS9yYW5kb20vc2V0dXAucHkKLSsrKyBiL251bXB5L3JhbmRvbS9zZXR1cC5weQotQEAgLTQ5LDExICs0OSw2IEBAIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLCB0b3BfcGF0aD1Ob25lKToKLSAgICAgZWxpZiBub3QgaXNfbXN2YzoKLSAgICAgICAgICMgU29tZSBiaXQgZ2VuZXJhdG9ycyByZXF1aXJlIGM5OQotICAgICAgICAgRVhUUkFfQ09NUElMRV9BUkdTICs9IFsnLXN0ZD1jOTknXQotLSAgICAgICAgSU5URUxfTElLRSA9IGFueShbdmFsIGluIGsubG93ZXIoKSBmb3IgayBpbiBwbGF0Zm9ybS51bmFtZSgpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdmFsIGluICgneDg2JywgJ2k2ODYnLCAnaTM4NicsICdhbWQ2NCcpXSkKLS0gICAgICAgIGlmIElOVEVMX0xJS0U6Ci0tICAgICAgICAgICAgIyBBc3N1bWVzIEdDQyBvciBHQ0MtbGlrZSBjb21waWxlcgotLSAgICAgICAgICAgIEVYVFJBX0NPTVBJTEVfQVJHUyArPSBbJy1tc3NlMiddCi0gCi0gICAgICMgVXNlIGxlZ2FjeSBpbnRlZ2VyIHZhcmlhYmxlIHNpemVzCi0gICAgIExFR0FDWV9ERUZTID0gWygnTlBfUkFORE9NX0xFR0FDWScsICcxJyldCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCmluZGV4IGY2OGI5MGUuLjcyNzc1NTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCkBAIC03LDExICs3LDEwIEBACiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb252ZXJ0LXNoZWJhbmctZnJvbS1weXRob24tdG8tcHl0aG9uMy5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNDhiMmFkNzg1ZjgyY2RmZTI4YzkwN2NlMzVlMmE3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2I3YjYxNDVlN2JhNTkxOGNlMjZiZTI1OTk5YjZkNGIzNWNmOWZiZmRmNDZiN2RhNTAwOTBmZmRiMDIwNDQ1IgorU1JDX1VSSVttZDVzdW1dID0gImNkNjMxYzc2MWYxNDFkMzgyYjRlMWIzMWM4MjMyZmMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzZWU1OWVjMzhmM2JmOGY5YTQyZDVmNDMwMWY2MGU2ODI1YTRhNjM4NWExNDVmNzBiYWRjZDJiZjJhMTExMzQiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKQEAgLTE5LDYgKzE4LDggQEAKICMgTmVlZGVkIGZvciBidWlsZGluZyB3aXRoIGdjYyA0LnggZnJvbSBjZW50b3MgNwogQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1zdGQ9Yzk5IgogCitERVBFTkRTICs9ICJweXRob24zLWN5dGhvbi1uYXRpdmUiCisKIFMgPSAiJHtXT1JLRElSfS9udW1weS0ke1BWfSIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTguMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNy4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE4LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWJwby0zOTUwMy1DVkUtMjAyMC04NDkyLUZpeC1BYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1icG8tMzk1MDMtQ1ZFLTIwMjAtODQ5Mi1GaXgtQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNmI5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1icG8tMzk1MDMtQ1ZFLTIwMjAtODQ5Mi1GaXgtQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnBhdGNoCkBAIC0wLDAgKzEsMjQ4IEBACitGcm9tIDBiMjk3ZDRmZjFjMGU0NDgwYWQzM2FjYWU3OTNmYmFmNGJmMDE1YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgU3Rpbm5lciA8dnN0aW5uZXJAcHl0aG9uLm9yZz4KK0RhdGU6IFRodSwgMiBBcHIgMjAyMCAwMjo1MjoyMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBicG8tMzk1MDM6IENWRS0yMDIwLTg0OTI6IEZpeCBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIKKyAoR0gtMTgyODQpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyhodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzBiMjk3ZDRmZjFjMGU0NDgwYWQzM2FjYWU3OTNmYmFmNGJmMDE1YjQpCisKK0NWRTogQ1ZFLTIwMjAtODQ5MgorCitUaGUgQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIGNsYXNzIG9mIHRoZSB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcworYW4gaW5lZmZpY2llbnQgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIGNhbiBiZSBleHBsb2l0ZWQgYnkgYW4KK2F0dGFja2VyIHRvIGNhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UuIEZpeCB0aGUgcmVnZXggdG8gcHJldmVudCB0aGUKK2NhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcuIFZ1bG5lcmFiaWxpdHkgcmVwb3J0ZWQgYnkgQmVuIENhbGxlcgorYW5kIE1hdHQgU2Nod2FnZXIuCisKK0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBvZiB1cmxsaWIucmVxdWVzdCBub3cgcGFyc2VzIGFsbAorV1dXLUF1dGhlbnRpY2F0ZSBIVFRQIGhlYWRlcnMgYW5kIGFjY2VwdHMgbXVsdGlwbGUgY2hhbGxlbmdlcyBwZXIKK2hlYWRlcjogdXNlIHRoZSByZWFsbSBvZiB0aGUgZmlyc3QgQmFzaWMgY2hhbGxlbmdlLgorCitDby1BdXRob3JlZC1CeTogU2VyaGl5IFN0b3JjaGFrYSA8c3RvcmNoYWthQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5ICAgICAgICAgICAgICAgICAgICAgIHwgOTAgKysrKysrKysrKysrLS0tLS0tLQorIExpYi91cmxsaWIvcmVxdWVzdC5weSAgICAgICAgICAgICAgICAgICAgICAgICB8IDY5ICsrKysrKysrKystLS0tCisgLi4uLzIwMjAtMDMtMjUtMTYtMDItMTYuYnBvLTM5NTAzLlltTWJZbi5yc3QgIHwgIDMgKworIC4uLi8yMDIwLTAxLTMwLTE2LTE1LTI5LmJwby0zOTUwMy5CMjk5WXEucnN0ICB8ICA1ICsrCisgNCBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDIwLTAzLTI1LTE2LTAyLTE2LmJwby0zOTUwMy5ZbU1iWW4ucnN0CisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAyMC0wMS0zMC0xNi0xNS0yOS5icG8tMzk1MDMuQjI5OVlxLnJzdAorCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CitpbmRleCA4YWJlZGFhYzk4Li5lNjlhYzNlMjEzIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKK0BAIC0xNDQ2LDQwICsxNDQ2LDY0IEBAIGNsYXNzIEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBieXBhc3MgPSB7J2V4Y2x1ZGVfc2ltcGxlJzogVHJ1ZSwgJ2V4Y2VwdGlvbnMnOiBbXX0KKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfcHJveHlfYnlwYXNzX21hY29zeF9zeXNjb25mKCd0ZXN0JywgYnlwYXNzKSkKKyAKKy0gICAgZGVmIHRlc3RfYmFzaWNfYXV0aChzZWxmLCBxdW90ZV9jaGFyPSciJyk6CistICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCistICAgICAgICBwYXNzd29yZF9tYW5hZ2VyID0gTW9ja1Bhc3N3b3JkTWFuYWdlcigpCistICAgICAgICBhdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tYW5hZ2VyKQorLSAgICAgICAgcmVhbG0gPSAiQUNNRSBXaWRnZXQgU3RvcmUiCistICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCistICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09JXMlcyVzXHJcblxyXG4nICUKKy0gICAgICAgICAgICAocXVvdGVfY2hhciwgcmVhbG0sIHF1b3RlX2NoYXIpKQorLSAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfaGFuZGxlcikKKy0gICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCistICAgICAgICBzZWxmLl90ZXN0X2Jhc2ljX2F1dGgob3BlbmVyLCBhdXRoX2hhbmRsZXIsICJBdXRob3JpemF0aW9uIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKy0KKy0gICAgZGVmIHRlc3RfYmFzaWNfYXV0aF93aXRoX3NpbmdsZV9xdW90ZWRfcmVhbG0oc2VsZik6CistICAgICAgICBzZWxmLnRlc3RfYmFzaWNfYXV0aChxdW90ZV9jaGFyPSInIikKKy0KKy0gICAgZGVmIHRlc3RfYmFzaWNfYXV0aF93aXRoX3VucXVvdGVkX3JlYWxtKHNlbGYpOgorLSAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorLSAgICAgICAgcGFzc3dvcmRfbWFuYWdlciA9IE1vY2tQYXNzd29yZE1hbmFnZXIoKQorLSAgICAgICAgYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWFuYWdlcikKKy0gICAgICAgIHJlYWxtID0gIkFDTUUgV2lkZ2V0IFN0b3JlIgorLSAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorLSAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSVzXHJcblxyXG4nICUgcmVhbG0pCistICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9oYW5kbGVyKQorLSAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKy0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CisrICAgIGRlZiBjaGVja19iYXNpY19hdXRoKHNlbGYsIGhlYWRlcnMsIHJlYWxtKToKKysgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHJlYWxtPXJlYWxtLCBoZWFkZXJzPWhlYWRlcnMpOgorKyAgICAgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKysgICAgICAgICAgICBwYXNzd29yZF9tYW5hZ2VyID0gTW9ja1Bhc3N3b3JkTWFuYWdlcigpCisrICAgICAgICAgICAgYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWFuYWdlcikKKysgICAgICAgICAgICBib2R5ID0gJ1xyXG4nLmpvaW4oaGVhZGVycykgKyAnXHJcblxyXG4nCisrICAgICAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKDQwMSwgYm9keSkKKysgICAgICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9oYW5kbGVyKQorKyAgICAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisgICAgICAgICAgICAgc2VsZi5fdGVzdF9iYXNpY19hdXRoKG9wZW5lciwgYXV0aF9oYW5kbGVyLCAiQXV0aG9yaXphdGlvbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIGh0dHBfaGFuZGxlciwgcGFzc3dvcmRfbWFuYWdlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiKQorKworKyAgICBkZWYgdGVzdF9iYXNpY19hdXRoKHNlbGYpOgorKyAgICAgICAgcmVhbG0gPSAicmVhbG0yQGV4YW1wbGUuY29tIgorKyAgICAgICAgcmVhbG0yID0gInJlYWxtMkBleGFtcGxlLmNvbSIKKysgICAgICAgIGJhc2ljID0gZidCYXNpYyByZWFsbT0ie3JlYWxtfSInCisrICAgICAgICBiYXNpYzIgPSBmJ0Jhc2ljIHJlYWxtPSJ7cmVhbG0yfSInCisrICAgICAgICBvdGhlcl9ub19yZWFsbSA9ICdPdGhlcnNjaGVtZSB4eHgnCisrICAgICAgICBkaWdlc3QgPSAoZidEaWdlc3QgcmVhbG09IntyZWFsbTJ9IiwgJworKyAgICAgICAgICAgICAgICAgIGYncW9wPSJhdXRoLCBhdXRoLWludCIsICcKKysgICAgICAgICAgICAgICAgICBmJ25vbmNlPSJkY2Q5OGI3MTAyZGQyZjBlOGIxMWQwZjYwMGJmYjBjMDkzIiwgJworKyAgICAgICAgICAgICAgICAgIGYnb3BhcXVlPSI1Y2NjMDY5YzQwM2ViYWY5ZjAxNzFlOTUxN2Y0MGU0MSInKQorKyAgICAgICAgZm9yIHJlYWxtX3N0ciBpbiAoCisrICAgICAgICAgICAgIyB0ZXN0ICJxdW90ZSIgYW5kICdxdW90ZScKKysgICAgICAgICAgICBmJ0Jhc2ljIHJlYWxtPSJ7cmVhbG19IicsCisrICAgICAgICAgICAgZiJCYXNpYyByZWFsbT0ne3JlYWxtfSciLAorKworKyAgICAgICAgICAgICMgY2hhcnNldCBpcyBpZ25vcmVkCisrICAgICAgICAgICAgZidCYXNpYyByZWFsbT0ie3JlYWxtfSIsIGNoYXJzZXQ9IlVURi04IicsCisrCisrICAgICAgICAgICAgIyBNdWx0aXBsZSBjaGFsbGVuZ2VzIHBlciBoZWFkZXIKKysgICAgICAgICAgICBmJ3tiYXNpY30sIHtiYXNpYzJ9JywKKysgICAgICAgICAgICBmJ3tiYXNpY30sIHtvdGhlcl9ub19yZWFsbX0nLAorKyAgICAgICAgICAgIGYne290aGVyX25vX3JlYWxtfSwge2Jhc2ljfScsCisrICAgICAgICAgICAgZid7YmFzaWN9LCB7ZGlnZXN0fScsCisrICAgICAgICAgICAgZid7ZGlnZXN0fSwge2Jhc2ljfScsCisrICAgICAgICApOgorKyAgICAgICAgICAgIGhlYWRlcnMgPSBbZidXV1ctQXV0aGVudGljYXRlOiB7cmVhbG1fc3RyfSddCisrICAgICAgICAgICAgc2VsZi5jaGVja19iYXNpY19hdXRoKGhlYWRlcnMsIHJlYWxtKQorKworKyAgICAgICAgIyBubyBxdW90ZTogZXhwZWN0IGEgd2FybmluZworKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZykpOgorKyAgICAgICAgICAgIGhlYWRlcnMgPSBbZidXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT17cmVhbG19J10KKysgICAgICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX2F1dGgoaGVhZGVycywgcmVhbG0pCisrCisrICAgICAgICAjIE11bHRpcGxlIGhlYWRlcnM6IG9uZSBjaGFsbGVuZ2UgcGVyIGhlYWRlci4KKysgICAgICAgICMgVXNlIHRoZSBmaXJzdCBCYXNpYyByZWFsbS4KKysgICAgICAgIGZvciBjaGFsbGVuZ2VzIGluICgKKysgICAgICAgICAgICBbYmFzaWMsICBiYXNpYzJdLAorKyAgICAgICAgICAgIFtiYXNpYywgIGRpZ2VzdF0sCisrICAgICAgICAgICAgW2RpZ2VzdCwgYmFzaWNdLAorKyAgICAgICAgKToKKysgICAgICAgICAgICBoZWFkZXJzID0gW2YnV1dXLUF1dGhlbnRpY2F0ZToge2NoYWxsZW5nZX0nCisrICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2hhbGxlbmdlIGluIGNoYWxsZW5nZXNdCisrICAgICAgICAgICAgc2VsZi5jaGVja19iYXNpY19hdXRoKGhlYWRlcnMsIHJlYWxtKQorIAorICAgICBkZWYgdGVzdF9wcm94eV9iYXNpY19hdXRoKHNlbGYpOgorICAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQoraW5kZXggN2ZlNTA1MzVkYS4uMmEzZDcxNTU0ZiAxMDA2NDQKKy0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CitAQCAtOTM3LDggKzkzNywxNSBAQCBjbGFzcyBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXI6CisgCisgICAgICMgYWxsb3cgZm9yIGRvdWJsZS0gYW5kIHNpbmdsZS1xdW90ZWQgcmVhbG0gdmFsdWVzCisgICAgICMgKHNpbmdsZSBxdW90ZXMgYXJlIGEgdmlvbGF0aW9uIG9mIHRoZSBSRkMsIGJ1dCBhcHBlYXIgaW4gdGhlIHdpbGQpCistICAgIHJ4ID0gcmUuY29tcGlsZSgnKD86LiosKSpbIFx0XSooW14gXHRdKylbIFx0XSsnCistICAgICAgICAgICAgICAgICAgICAncmVhbG09KFsiXCddPykoW14iXCddKilcXDInLCByZS5JKQorKyAgICByeCA9IHJlLmNvbXBpbGUoJyg/Ol58LCknICAgIyBzdGFydCBvZiB0aGUgc3RyaW5nIG9yICcsJworKyAgICAgICAgICAgICAgICAgICAgJ1sgXHRdKicgICAgIyBvcHRpb25hbCB3aGl0ZXNwYWNlcworKyAgICAgICAgICAgICAgICAgICAgJyhbXiBcdF0rKScgIyBzY2hlbWUgbGlrZSAiQmFzaWMiCisrICAgICAgICAgICAgICAgICAgICAnWyBcdF0rJyAgICAjIG1hbmRhdG9yeSB3aGl0ZXNwYWNlcworKyAgICAgICAgICAgICAgICAgICAgIyByZWFsbT14eHgKKysgICAgICAgICAgICAgICAgICAgICMgcmVhbG09J3h4eCcKKysgICAgICAgICAgICAgICAgICAgICMgcmVhbG09Inh4eCIKKysgICAgICAgICAgICAgICAgICAgICdyZWFsbT0oWyJcJ10/KShbXiJcJ10qKVxcMicsCisrICAgICAgICAgICAgICAgICAgICByZS5JKQorIAorICAgICAjIFhYWCBjb3VsZCBwcmUtZW1wdGl2ZWx5IHNlbmQgYXV0aCBpbmZvIGFscmVhZHkgYWNjZXB0ZWQgKFJGQyAyNjE3LAorICAgICAjIGVuZCBvZiBzZWN0aW9uIDIsIGFuZCBzZWN0aW9uIDEuMiBpbW1lZGlhdGVseSBhZnRlciAiY3JlZGVudGlhbHMiCitAQCAtOTUwLDI3ICs5NTcsNTEgQEAgY2xhc3MgQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyOgorICAgICAgICAgc2VsZi5wYXNzd2QgPSBwYXNzd29yZF9tZ3IKKyAgICAgICAgIHNlbGYuYWRkX3Bhc3N3b3JkID0gc2VsZi5wYXNzd2QuYWRkX3Bhc3N3b3JkCisgCisrICAgIGRlZiBfcGFyc2VfcmVhbG0oc2VsZiwgaGVhZGVyKToKKysgICAgICAgICMgcGFyc2UgV1dXLUF1dGhlbnRpY2F0ZSBoZWFkZXI6IGFjY2VwdCBtdWx0aXBsZSBjaGFsbGVuZ2VzIHBlciBoZWFkZXIKKysgICAgICAgIGZvdW5kX2NoYWxsZW5nZSA9IEZhbHNlCisrICAgICAgICBmb3IgbW8gaW4gQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnJ4LmZpbmRpdGVyKGhlYWRlcik6CisrICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQorKyAgICAgICAgICAgIGlmIHF1b3RlIG5vdCBpbiBbJyInLCAiJyJdOgorKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDMpCisrCisrICAgICAgICAgICAgeWllbGQgKHNjaGVtZSwgcmVhbG0pCisrCisrICAgICAgICAgICAgZm91bmRfY2hhbGxlbmdlID0gVHJ1ZQorKworKyAgICAgICAgaWYgbm90IGZvdW5kX2NoYWxsZW5nZToKKysgICAgICAgICAgICBpZiBoZWFkZXI6CisrICAgICAgICAgICAgICAgIHNjaGVtZSA9IGhlYWRlci5zcGxpdCgpWzBdCisrICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgc2NoZW1lID0gJycKKysgICAgICAgICAgICB5aWVsZCAoc2NoZW1lLCBOb25lKQorKworICAgICBkZWYgaHR0cF9lcnJvcl9hdXRoX3JlcWVkKHNlbGYsIGF1dGhyZXEsIGhvc3QsIHJlcSwgaGVhZGVycyk6CisgICAgICAgICAjIGhvc3QgbWF5IGJlIGFuIGF1dGhvcml0eSAod2l0aG91dCB1c2VyaW5mbykgb3IgYSBVUkwgd2l0aCBhbgorICAgICAgICAgIyBhdXRob3JpdHkKKy0gICAgICAgICMgWFhYIGNvdWxkIGJlIG11bHRpcGxlIGhlYWRlcnMKKy0gICAgICAgIGF1dGhyZXEgPSBoZWFkZXJzLmdldChhdXRocmVxLCBOb25lKQorKyAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuZ2V0X2FsbChhdXRocmVxKQorKyAgICAgICAgaWYgbm90IGhlYWRlcnM6CisrICAgICAgICAgICAgIyBubyBoZWFkZXIgZm91bmQKKysgICAgICAgICAgICByZXR1cm4KKyAKKy0gICAgICAgIGlmIGF1dGhyZXE6CistICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCistICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKy0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIGRvZXMgbm90IgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZSkKKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKKy0gICAgICAgICAgICAgICAgaWYgbW86CistICAgICAgICAgICAgICAgICAgICBzY2hlbWUsIHF1b3RlLCByZWFsbSA9IG1vLmdyb3VwcygpCistICAgICAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywiJyJdOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkJhc2ljIEF1dGggUmVhbG0gd2FzIHVucXVvdGVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nLCAyKQorLSAgICAgICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKKysgICAgICAgIHVuc3VwcG9ydGVkID0gTm9uZQorKyAgICAgICAgZm9yIGhlYWRlciBpbiBoZWFkZXJzOgorKyAgICAgICAgICAgIGZvciBzY2hlbWUsIHJlYWxtIGluIHNlbGYuX3BhcnNlX3JlYWxtKGhlYWRlcik6CisrICAgICAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpICE9ICdiYXNpYyc6CisrICAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZCA9IHNjaGVtZQorKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKysKKysgICAgICAgICAgICAgICAgaWYgcmVhbG0gaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgZmlyc3QgbWF0Y2hpbmcgQmFzaWMgY2hhbGxlbmdlLgorKyAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgZm9sbG93aW5nIGNoYWxsZW5nZXMgZXZlbiBpZiB0aGV5IHVzZSB0aGUgQmFzaWMKKysgICAgICAgICAgICAgICAgICAgICMgc2NoZW1lLgorKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfaHR0cF9iYXNpY19hdXRoKGhvc3QsIHJlcSwgcmVhbG0pCisrCisrICAgICAgICBpZiB1bnN1cHBvcnRlZCBpcyBub3QgTm9uZToKKysgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgZG9lcyBub3QgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQgdGhlIGZvbGxvd2luZyBzY2hlbWU6ICVyIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2NoZW1lLCkpCisgCisgICAgIGRlZiByZXRyeV9odHRwX2Jhc2ljX2F1dGgoc2VsZiwgaG9zdCwgcmVxLCByZWFsbSk6CisgICAgICAgICB1c2VyLCBwdyA9IHNlbGYucGFzc3dkLmZpbmRfdXNlcl9wYXNzd29yZChyZWFsbSwgaG9zdCkKK2RpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAyMC0wMy0yNS0xNi0wMi0xNi5icG8tMzk1MDMuWW1NYlluLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDIwLTAzLTI1LTE2LTAyLTE2LmJwby0zOTUwMy5ZbU1iWW4ucnN0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYmU4MGNlNzlkOQorLS0tIC9kZXYvbnVsbAorKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMjAtMDMtMjUtMTYtMDItMTYuYnBvLTM5NTAzLlltTWJZbi5yc3QKK0BAIC0wLDAgKzEsMyBAQAorKzpjbGFzczpgfnVybGxpYi5yZXF1ZXN0LkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcmAgb2YgOm1vZDpgdXJsbGliLnJlcXVlc3RgCisrbm93IHBhcnNlcyBhbGwgV1dXLUF1dGhlbnRpY2F0ZSBIVFRQIGhlYWRlcnMgYW5kIGFjY2VwdHMgbXVsdGlwbGUgY2hhbGxlbmdlcworK3BlciBoZWFkZXI6IHVzZSB0aGUgcmVhbG0gb2YgdGhlIGZpcnN0IEJhc2ljIGNoYWxsZW5nZS4KK2RpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi45ZjI4MDA1ODFjCistLS0gL2Rldi9udWxsCisrKysgYi9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QKK0BAIC0wLDAgKzEsNSBAQAorK0NWRS0yMDIwLTg0OTI6IFRoZSA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXJgIGNsYXNzIG9mIHRoZQorKzptb2Q6YHVybGxpYi5yZXF1ZXN0YCBtb2R1bGUgdXNlcyBhbiBpbmVmZmljaWVudCByZWd1bGFyIGV4cHJlc3Npb24gd2hpY2ggY2FuCisrYmUgZXhwbG9pdGVkIGJ5IGFuIGF0dGFja2VyIHRvIGNhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UuIEZpeCB0aGUgcmVnZXggdG8KKytwcmV2ZW50IHRoZSBjYXRhc3Ryb3BoaWMgYmFja3RyYWNraW5nLiBWdWxuZXJhYmlsaXR5IHJlcG9ydGVkIGJ5IEJlbiBDYWxsZXIKKythbmQgTWF0dCBTY2h3YWdlci4KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2gKaW5kZXggMTY5ZDFiMS4uNWY5OWNkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDViYmE0ZjU3ZjA0ODAxNmFhOTJjZTU5MDllOWUzNzJkYjYxOTU1NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE4Zjg3MWM5ZWJjNGZjYjk5ZDQxNjNiMjI2YWFiZWVmMjY1NjcwOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE3IEp1bCAyMDE4IDEwOjEzOjM4ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmRpdGlvbmFsbHkgZG8gbm90IGZldGNoIGNvZGUgYnkgZWFzeV9pbnN0YWxsCkBAIC0xNSwxMCArMTUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5IGIvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQotaW5kZXggMDU1MDhjZS4uOTQ1ZTExOCAxMDA3NTUKK2luZGV4IDQyNjMwMWQuLjU1YzgwNjIgMTAwNjQ0CiAtLS0gYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CiArKysgYi9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5Ci1AQCAtNjQwLDYgKzY0MCwxMSBAQCBjbGFzcyBlYXN5X2luc3RhbGwoQ29tbWFuZCk6CitAQCAtNjQ5LDYgKzY0OSwxMSBAQCBjbGFzcyBlYXN5X2luc3RhbGwoQ29tbWFuZCk6CiAgICAgICAgICAgICAgb3MucGF0aC5leGlzdHModG1wZGlyKSBhbmQgcm10cmVlKHJtdHJlZV9zYWZlKHRtcGRpcikpCiAgCiAgICAgIGRlZiBlYXN5X2luc3RhbGwoc2VsZiwgc3BlYywgZGVwcz1GYWxzZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM3ZTc5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYwpAQCAtMCwwICsxLDQxIEBACitERVNDUklQVElPTiA9ICJDeXRob24gaXMgYSBsYW5ndWFnZSBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIHdyaXRpbmcgUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGVzLiBcCitJdCdzIGRlc2lnbmVkIHRvIGJyaWRnZSB0aGUgZ2FwIGJldHdlZW4gdGhlIG5pY2UsIGhpZ2gtbGV2ZWwsIGVhc3ktdG8tdXNlIHdvcmxkIG9mIFB5dGhvbiBcCithbmQgdGhlIG1lc3N5LCBsb3ctbGV2ZWwgd29ybGQgb2YgQy4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lMjNmYWRkNmNlZWY4YzYxOGZjMWM2NTE5MWQ4NDZmYSIKK1BZUElfUEFDS0FHRSA9ICJDeXRob24iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODk5YWJhYTQ4YjY4YmI2NzlhZWY0NWNlYjRiODlkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzI3NTUyODRmOTQyY2JiM2I0M2EwNmNkODU5NzRlZjNjOTcwYTAyMWFlZjE5YjUyNDNjMDNlZTJiMDhmYTA1IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiQ3l0aG9uLSg/UDxwdmVyPi4qKVwudGFyIgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0teG1sIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrICs9ICJcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1taXNjIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXhtbCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCisJZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAnXiMhLipweXRob24nICR7RH1gOyBkbworCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52ICR7UFlUSE9OX1BOfXwnICRQWVRIU0NSSVBUCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYwppbmRleCA2MzM3NTJmLi4yM2VjMjk4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYwpAQCAtOCw4ICs4LDggQEAKIAogUFlQSV9QQUNLQUdFID0gImdpdGRiMiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjk0ZTU5ZTVmYjAwOTYwNTQxZjZlMTM3YjE0NTZhYjBhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMzYxMTMxYTE4MzY2NjFhMTU1MTcyOTMyYTEzYzA4YmRhMmRiMzY3NGU0Y2FhMzIzNjhhYTZlYjAyZjM4YzIiCitTUkNfVVJJW21kNXN1bV0gPSAiMWE3ZWEzMzYyZTQwNWY4YTU2MzRmN2VlNTM2MzYwOTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI2ZGYxNDMzNTY3YTUxYTRhOWMxYTVhMGRlOTc3YWEzNTFhNDA1Y2M1NmQ3ZDM1ZjMzODhiYWQxZjYzMDM1MCIKIAogREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tYXN5bmMgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtbmF0aXZlICR7UFlUSE9OX1BOfS1zbW1hcCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMDAwMS1weXRob24tbmF0aXZlLWZpeC1vbmUtZG9fcG9wdWxhdGVfc3lzcm9vdC13YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMDAwMS1weXRob24tbmF0aXZlLWZpeC1vbmUtZG9fcG9wdWxhdGVfc3lzcm9vdC13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDdlZTU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzAwMDEtcHl0aG9uLW5hdGl2ZS1maXgtb25lLWRvX3BvcHVsYXRlX3N5c3Jvb3Qtd2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNmNiYjc1MjljZjdmZjBkYTNjYTY0OWZiMzQ4NmZhY2Q5NjIwZDYyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI1IE9jdCAyMDE4IDA3OjMyOjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbi1uYXRpdmU6IGZpeCBvbmUgZG9fcG9wdWxhdGVfc3lzcm9vdCB3YXJuaW5nCi0KLUZpeCBiZWxvdyB3YXJuaW5nOgotV0FSTklORzogU2tpcHBpbmcgUlBBVEggL3Vzci9saWI2NCBhcyBpcyBhIHN0YW5kYXJkIHNlYXJjaCBwYXRoIGZvcgotd29yay94ODZfNjQtbGludXgvcHl0aG9uLW5hdGl2ZS8yLjcuMTUtcjEuMS9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvCi11c3IvbGliL3B5dGhvbjIuNy9saWItZHlubG9hZC9fYnNkZGIuc28KLQotc2V0dXAucHkgd2lsbCBjaGVjayBkYi5oIHVuZGVyIGluY2x1ZGVfZGlycywgZm9yIG5hdGl2ZSBidWlsZCwKLS91c3IvbGliNjQgd2lsbCBiZSBpbnNlcnQgdG8gcG9zdGlvbiAwIG9mIGluY2x1ZGVfZGlycywgc28KLWl0J3MgcHJpb3JpdHkgaXMgaGlnaGVyIHRoZW4gb3VyIHN5c3Jvb3QsIGNhdXNlIGRiLmggc3lzcm9vdAotaXMgaWdub3JlZCwgYW5kIHJwYXRoIHNldCB0byAvdXNyL2xpYjY0LiBhbmQgdGhpcyBjYXVzZSB3YXJuaW5nCi13aGVuIGRvX3BvcHVsYXRlX3N5c3Jvb3QuIHVzZSBhcHBlbmQgdG8gZml4IGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBzZXR1cC5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGEyYzgxMjcuLjIyZjllMjMgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC00Nyw3ICs0Nyw3IEBAIGRlZiBhZGRfZGlyX3RvX2xpc3QoZGlybGlzdCwgZGlyKToKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgZGlyX2V4aXN0cyA9IG9zLnBhdGguaXNkaXIoZGlyKQotICAgICAgICAgaWYgZGlyX2V4aXN0czoKLS0gICAgICAgICAgICBkaXJsaXN0Lmluc2VydCgwLCBkaXIpCi0rICAgICAgICAgICAgZGlybGlzdC5hcHBlbmQoZGlyKQotIAotIE1BQ09TX1NES19ST09UID0gTm9uZQotIAotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOTI0N2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0jIFNvbWUgdmVyc2lvbnMgb2YgU1dJRyBkbyBub3QgdXNlIHRoZSBleHRlbnNpb24gcGFyYW1ldGVyLgotIyBNYWtlIGl0IG9wdGlvbmFsLgotIyBTaWduZWQtT2ZmOiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS1tZWRpYS5kZT4KLUluZGV4OiBQeXRob24tMi42LjEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjYuMS5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKLSsrKyBQeXRob24tMi42LjEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQotQEAgLTU2Niw3ICs1NjYsNyBAQCBjbGFzcyBidWlsZF9leHQgKENvbW1hbmQpOgotICAgICAgICAgICAgIHRhcmdldF9sYW5nPWxhbmd1YWdlKQotIAotIAotLSAgICBkZWYgc3dpZ19zb3VyY2VzIChzZWxmLCBzb3VyY2VzLCBleHRlbnNpb24pOgotKyAgICBkZWYgc3dpZ19zb3VyY2VzIChzZWxmLCBzb3VyY2VzLCBleHRlbnNpb249Tm9uZSk6Ci0gCi0gICAgICAgICAiIiJXYWxrIHRoZSBsaXN0IG9mIHNvdXJjZSBmaWxlcyBpbiAnc291cmNlcycsIGxvb2tpbmcgZm9yIFNXSUcKLSAgICAgICAgIGludGVyZmFjZSAoLmkpIGZpbGVzLiAgUnVuIFNXSUcgb24gYWxsIHRoYXQgYXJlIGZvdW5kLCBhbmQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MjQ2OWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIyBEb24ndCBtb2RpZnkgdGhlIHNoZS1iYW5nIGxpbmUgZm9yIGEgY3Jvc3MtYnVpbGQuCi0jIE90aGVyd2lzZSBpdCBwb2ludHMgdG8gb3VyIGhvc3RweXRob24gKHdoaWNoIHdlIGRvIG5vdCB3YW50KQotIwotIyBTaWduZWQtT2ZmOiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS1tZWRpYS5kZT4KLQotSW5kZXg6IFB5dGhvbi0yLjYuMS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjYuMS5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5Ci0rKysgUHl0aG9uLTIuNi4xL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5Ci1AQCAtODcsNyArODcsNyBAQCBjbGFzcyBidWlsZF9zY3JpcHRzIChDb21tYW5kKToKLSAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gCi0gICAgICAgICAgICAgICAgIG1hdGNoID0gZmlyc3RfbGluZV9yZS5tYXRjaChmaXJzdF9saW5lKQotLSAgICAgICAgICAgICAgICBpZiBtYXRjaDoKLSsgICAgICAgICAgICAgICAgaWYgRmFsc2U6ICNtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgIGFkanVzdCA9IDEKLSAgICAgICAgICAgICAgICAgICAgIHBvc3RfaW50ZXJwID0gbWF0Y2guZ3JvdXAoMSkgb3IgJycKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMGYxNzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotUmViYXNlZCBmb3IgUHl0aG9uIDIuNy45Ci0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi0yMDExLzA5LzI5Ci1UaGUgcHl0aG9uIHJlY2lwZSBidWlsZGluZyB3YXMgZmFpbGluZyBiZWNhdXNlIHB5dGhvbi1uYXRpdmUgCi1jb3VsZCBub3QgaGFuZGxlIHN5cy5saWIgdmFyLiBzeXMubGliIHZhciBpcyBkZWZpbmVkIGluIHRoZSAKLW11bHRpbGliIHBhdGNoIGhlbmNlIGFkZGVkIHRoaXMgbXVsdGlsaWIucGF0Y2ggZm9yIHB5dGhvbi1uYXRpdmUgCi1yZWNpcGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAotKysrIFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAotQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKLSAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0UGxhdGZvcm0odm9pZCk7Ci0rUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldExpYih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci1AQCAtMjIsNiArMjIsOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQotIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCi0gCi0gCi0rbGlibmFtZSA9IHN5cy5saWIKLSsKLSBpZiBzeXMudmVyc2lvbiA8ICIyLjIiOgotICAgICBXSU5ET1dTX1NDSEVNRSA9IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlJywKLUBAIC00Miw3ICs0NCw3IEBAIGVsc2U6Ci0gSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAndW5peF9wcmVmaXgnOiB7Ci0gICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydC8kZGlzdF9uYW1lJywKLSAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCi0gICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLUBAIC0zNzUsNyArMzc1LDcgQEAgY2xhc3MgRG9jOgotICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKLSAKLSAgICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsCi0tICAgICAgICAgICAgICAgICAgYmFzZWRpcj1vcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICBiYXNlZGlyPW9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJzeXMubGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIitzeXMudmVyc2lvblswOjNdKSk6Ci0gICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKLSAKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQotQEAgLTI4OCwxMyArMjg4LDE5IEBAIGRlZiBnZXRzaXRlcGFja2FnZXMoKToKLSAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMmVteCcsICdyaXNjb3MnKToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1weXRob24iKSkKLSsgICAgICAgICAgICBpZiBzeXMubGliICE9ICJsaWIiOgotKyAgICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsICJzaXRlLXB5dGhvbiIpKQotKyAgICAgICAgICAgIGlmIHN5cy5saWIgIT0gImxpYiI6Ci0rICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwotIAotIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5Ci1AQCAtNCwxMCArNCwxMSBAQAotIGltcG9ydCB1bml0dGVzdAotIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUKLSBkbCA9IGltcG9ydF9tb2R1bGUoJ2RsJywgZGVwcmVjYXRlZD1UcnVlKQotK2ltcG9ydCBzeXMKLSAKLSBzaGFyZWRsaWJzID0gWwotLSAgICAoJy91c3IvbGliL2xpYmMuc28nLCAnZ2V0cGlkJyksCi0tICAgICgnL2xpYi9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0rICAgICgnL3Vzci8nK3N5cy5saWIrJy9saWJjLnNvJywgJ2dldHBpZCcpLAotKyAgICAoJy8nK3N5cy5saWIrJy9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9iaW4vY3lnd2luMS5kbGwnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9saWIvbGliYy5keWxpYicsICdnZXRwaWQnKSwKLSAgICAgXQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90cmFjZS5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5Ci1AQCAtNzU0LDEwICs3NTQsMTAgQEAgZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQotIAotICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkcHJlZml4IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJGV4ZWNfcHJlZml4IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCi0gICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCi1AQCAtOTEsNiArOTEsNyBAQCBQWV9DRkxBR1M9CSQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKENGTEFHCi0gCi0gIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwotIE1BQ0hERVA9CUBNQUNIREVQQAotK0xJQj0JCUBMSUJACi0gCi0gIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCi0gTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTExMCw3ICsxMTEsNyBAQCBMSUJESVI9CQlAbGliZGlyQAotIE1BTkRJUj0JCUBtYW5kaXJACi0gSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACi0gQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKLS1TQ1JJUFRESVI9CSQocHJlZml4KS9saWIKLStTQ1JJUFRESVI9CSQocHJlZml4KS9ATElCQAotIAotICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKLSBCSU5MSUJERVNUPQkkKExJQkRJUikvcHl0aG9uJChWRVJTSU9OKQotQEAgLTY0NCw2ICs2NDUsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0Ci0gCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCi0gCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAotIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXAotKwkJLURMSUI9JyIkKExJQikiJyBcCi0gCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKLSAKLSBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTY5Miw3ICs2OTQsNyBAQCByZWdlbi1hc3Q6Ci0gUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggJChzcmNkaXIpL0luY2x1ZGUvUHl0aG9uLWFzdC5oCi0gCi0gUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotLQkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLURQTEFURk9STT0nIiQoTUFDSERFUCkiJyAtRExJQj0nIiQoTElCKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotIAotIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLSAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCi0rKysgUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwotQEAgLTEwMCw2ICsxMDAsMTMgQEAKLSAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCi0gI2VuZGlmCi0gCi0rI2RlZmluZSBMSUJfUFlUSE9OIExJQiAiL3B5dGhvbiIgVkVSU0lPTgotKwotKyNpZm5kZWYgUFlUSE9OUEFUSAotKyNkZWZpbmUgUFlUSE9OUEFUSCBQUkVGSVggIi8iIExJQl9QWVRIT04gIjoiIFwKLSsgICAgICAgIEVYRUNfUFJFRklYICIvIiBMSUJfUFlUSE9OICIvbGliLWR5bmxvYWQiCi0rI2VuZGlmCi0rCi0gI2lmbmRlZiBMQU5ETUFSSwotICNkZWZpbmUgTEFORE1BUksgIm9zLnB5IgotICNlbmRpZgotQEAgLTEwOCw3ICsxMTUsNyBAQCBzdGF0aWMgY2hhciBwcmVmaXhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciBleGVjX3ByZWZpeFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyIHByb2dwYXRoW01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgKm1vZHVsZV9zZWFyY2hfcGF0aCA9IE5VTEw7Ci0tc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gImxpYi9weXRob24iIFZFUlNJT047Ci0rc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gTElCX1BZVEhPTjsKLSAKLSBzdGF0aWMgdm9pZAotIHJlZHVjZShjaGFyICpkaXIpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL2dldHBsYXRmb3JtLmMKLUBAIC0xMCwzICsxMCwxMyBAQCBQeV9HZXRQbGF0Zm9ybSh2b2lkKQotIHsKLSAJcmV0dXJuIFBMQVRGT1JNOwotIH0KLSsKLSsjaWZuZGVmIExJQgotKyNkZWZpbmUgTElCICJsaWIiCi0rI2VuZGlmCi0rCi0rY29uc3QgY2hhciAqCi0rUHlfR2V0TGliKHZvaWQpCi0rewotKwlyZXR1cm4gTElCOwotK30KLUluZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9zeXNtb2R1bGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKLSsrKyBQeXRob24tMi43LjE0L1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTE0MzcsNiArMTQzNyw4IEBAIF9QeVN5c19Jbml0KHZvaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRDb3B5cmlnaHQoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwbGF0Zm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQbGF0Zm9ybSgpKSk7Ci0rICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImxpYiIsCi0rICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0TGliKCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQcm9ncmFtRnVsbFBhdGgoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwcmVmaXgiLAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi1AQCAtNzU4LDYgKzc1OCwxMSBAQCBTdW5PUyopCi0gICAgIDs7Ci0gZXNhYwotIAotK0FDX1NVQlNUKExJQikKLStBQ19NU0dfQ0hFQ0tJTkcoTElCKQotK0xJQj1gYmFzZW5hbWUgJHtsaWJkaXJ9YAotK0FDX01TR19SRVNVTFQoJExJQikKLSsKLSAKLSBBQ19TVUJTVChMSUJSQVJZKQotIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbm9ob3N0bGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL25vaG9zdGxpYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ODA2MGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbm9ob3N0bGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLTIwMTQvMTIvMTUKLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy45L3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43Ljkvc2V0dXAucHkKLUBAIC00MzksOSArNDM5LDkgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotIAotICAgICBkZWYgZGV0ZWN0X21vZHVsZXMoc2VsZik6Ci0gICAgICAgICAjIEVuc3VyZSB0aGF0IC91c3IvbG9jYWwgaXMgYWx3YXlzIHVzZWQKLS0gICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6Ci0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLCAnL3Vzci9sb2NhbC9saWInKQotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCi0rICAgICAgICAjIGlmIG5vdCBjcm9zc19jb21waWxpbmc6Ci0rICAgICAgICAgICAgIyBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsICcvdXNyL2xvY2FsL2xpYicpCi0rICAgICAgICAgICAgIyBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQotICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgotICAgICAgICAgICAgIHNlbGYuYWRkX2djY19wYXRocygpCi0gICAgICAgICBzZWxmLmFkZF9tdWx0aWFyY2hfcGF0aHMoKQotQEAgLTQ4MCwxNSArNDgwLDE1IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gcmV2ZXJzZWQob3B0aW9ucy5kaXJzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3QoZGlyX2xpc3QsIGRpcmVjdG9yeSkKLSAKLS0gICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKLS0gICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgotKyAgICAgICAgI2lmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKLSsgICAgICAgICAgICAgICAgI2FuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKLSAgICAgICAgICAgICAjIE9TWCBub3RlOiBEb24ndCBhZGQgTElCRElSIGFuZCBJTkNMVURFRElSIHRvIGJ1aWxkaW5nIGEgZnJhbWV3b3JrCi0gICAgICAgICAgICAgIyAoUFlUSE9ORlJBTUVXT1JLIGlzIHNldCkgdG8gYXZvaWQgIyBsaW5raW5nIHByb2JsZW1zIHdoZW4KLSAgICAgICAgICAgICAjIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgdGhhbgotICAgICAgICAgICAgICMgdGhlIG9uZSB0aGF0IGlzIGN1cnJlbnRseSBpbnN0YWxsZWQgKGlzc3VlICM3NDczKQotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywKLSsgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJMSUJESVIiKSkKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCi0rICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiSU5DTFVERURJUiIpKQotIAotICAgICAgICAgdHJ5OgotQEAgLTc2MSw4ICs3NjEsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgIHBhc3MgIyBJc3N1ZSA3Mzg0OiBBbHJlYWR5IGxpbmtlZCBhZ2FpbnN0IGN1cnNlcyBvciB0aW5mby4KLSAgICAgICAgICAgICBlbGlmIGN1cnNlc19saWJyYXJ5OgotICAgICAgICAgICAgICAgICByZWFkbGluZV9saWJzLmFwcGVuZChjdXJzZXNfbGlicmFyeSkKLS0gICAgICAgICAgICBlbGlmIHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvdXNyL2xpYi90ZXJtY2FwJ10sCi0rICAgICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1jYXAnKToKLSAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoJ3Rlcm1jYXAnKQotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmFhZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotT24gb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uLCBzeXNjb25maWcgcmVhZCB0aGUgZGF0YSBmcm9tIGJvdGggdGhlIE1ha2VmaWxlIGFuZAotdGhlIFB5dGhvbi5oIGZpbGUgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIGNyZWF0ZWQgZGljdGlvbmFyaWVzIHdpdGggdGhlaXIgdmFyaWFibGVzCi1hbmQgdXNlZCB0aG9zZSB3aGVuIHVzaW5nIGdldF9jb25maWdfdmFyKCksIG5vdyBpdCB1c2VzIF9zeXNjb25maWdkYXRhLmJ1aWxkX3RpbWVfdmFyc1tdCi13aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBIT1NULCBlcnJvbmVvdXMgaW4gb3VyIGNhc2UsIHRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGlzCi1iZWhhdmlvciBhbmQgdXNlcyBQeXRob24uaCBhbmQgTWFrZWZpbGUgdG8gZ2V0IGluZm9ybWF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1AQCAtNDAxLDEyICs0MDEsNjYgQEAgX2NvbmZpZ192YXJzID0gTm9uZQotIAotIGRlZiBfaW5pdF9wb3NpeCgpOgotICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCi0tICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSB0aGUgc3lzY29uZmlnIG1vZHVsZQotLSAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKLS0gICAgZ2xvYmFsIF9jb25maWdfdmFycwotLSAgICBfY29uZmlnX3ZhcnMgPSB7fQotLSAgICBfY29uZmlnX3ZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKLSsgICAgZyA9IHt9Ci0rICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgotKyAgICB0cnk6Ci0rICAgICAgICBmaWxlbmFtZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCi0rICAgICAgICBwYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgZykKLSsgICAgZXhjZXB0IElPRXJyb3IsIG1zZzoKLSsgICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0rICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0rICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotKwotKyAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0rCi0rICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIHB5Y29uZmlnLmg6Ci0rICAgIHRyeToKLSsgICAgICAgIGZpbGVuYW1lID0gZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkKLSsgICAgICAgIHBhcnNlX2NvbmZpZ19oKGZpbGUoZmlsZW5hbWUpLCBnKQotKyAgICBleGNlcHQgSU9FcnJvciwgbXNnOgotKyAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSsgICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSsgICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0rCi0rICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLSsKLSsgICAgIyBPbiBBSVgsIHRoZXJlIGFyZSB3cm9uZyBwYXRocyB0byB0aGUgbGlua2VyIHNjcmlwdHMgaW4gdGhlIE1ha2VmaWxlCi0rICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKLSsgICAgIyB0aGUgc2NyaXB0cyBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnkuCi0rICAgIGlmIHB5dGhvbl9idWlsZDoKLSsgICAgICAgIGdbJ0xEU0hBUkVEJ10gPSBnWydCTERTSEFSRUQnXQotIAotKyAgICBlbGlmIGdldF9weXRob25fdmVyc2lvbigpIDwgJzIuMSc6Ci0rICAgICAgICAjIFRoZSBmb2xsb3dpbmcgdHdvIGJyYW5jaGVzIGFyZSBmb3IgMS41LjIgY29tcGF0aWJpbGl0eS4KLSsgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnYWl4NCc6ICAgICAgICAgICMgd2hhdCBhYm91dCBBSVggMy54ID8KLSsgICAgICAgICAgICAjIExpbmtlciBzY3JpcHQgaXMgaW4gdGhlIGNvbmZpZyBkaXJlY3RvcnksIG5vdCBpbiBNb2R1bGVzIGFzIHRoZQotKyAgICAgICAgICAgICMgTWFrZWZpbGUgc2F5cy4KLSsgICAgICAgICAgICBweXRob25fbGliID0gZ2V0X3B5dGhvbl9saWIoc3RhbmRhcmRfbGliPTEpCi0rICAgICAgICAgICAgbGRfc29fYWl4ID0gb3MucGF0aC5qb2luKHB5dGhvbl9saWIsICdjb25maWcnLCAnbGRfc29fYWl4JykKLSsgICAgICAgICAgICBweXRob25fZXhwID0gb3MucGF0aC5qb2luKHB5dGhvbl9saWIsICdjb25maWcnLCAncHl0aG9uLmV4cCcpCi0rCi0rICAgICAgICAgICAgZ1snTERTSEFSRUQnXSA9ICIlcyAlcyAtYkk6JXMiICUgKGxkX3NvX2FpeCwgZ1snQ0MnXSwgcHl0aG9uX2V4cCkKLSsKLSsgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdiZW9zJzoKLSsgICAgICAgICAgICAjIExpbmtlciBzY3JpcHQgaXMgaW4gdGhlIGNvbmZpZyBkaXJlY3RvcnkuICBJbiB0aGUgTWFrZWZpbGUgaXQgaXMKLSsgICAgICAgICAgICAjIHJlbGF0aXZlIHRvIHRoZSBzcmNkaXIsIHdoaWNoIGFmdGVyIGluc3RhbGxhdGlvbiBubyBsb25nZXIgbWFrZXMKLSsgICAgICAgICAgICAjIHNlbnNlLgotKyAgICAgICAgICAgIHB5dGhvbl9saWIgPSBnZXRfcHl0aG9uX2xpYihzdGFuZGFyZF9saWI9MSkKLSsgICAgICAgICAgICBsaW5rZXJzY3JpcHRfcGF0aCA9IHN0cmluZy5zcGxpdChnWydMRFNIQVJFRCddKVswXQotKyAgICAgICAgICAgIGxpbmtlcnNjcmlwdF9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShsaW5rZXJzY3JpcHRfcGF0aCkKLSsgICAgICAgICAgICBsaW5rZXJzY3JpcHQgPSBvcy5wYXRoLmpvaW4ocHl0aG9uX2xpYiwgJ2NvbmZpZycsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtlcnNjcmlwdF9uYW1lKQotKwotKyAgICAgICAgICAgICMgWFhYIHRoaXMgaXNuJ3QgdGhlIHJpZ2h0IHBsYWNlIHRvIGRvIHRoaXM6IGFkZGluZyB0aGUgUHl0aG9uCi0rICAgICAgICAgICAgIyBsaWJyYXJ5IHRvIHRoZSBsaW5rLCBpZiBuZWVkZWQsIHNob3VsZCBiZSBpbiB0aGUgImJ1aWxkX2V4dCIKLSsgICAgICAgICAgICAjIGNvbW1hbmQuICAoSXQncyBhbHNvIG5lZWRlZCBmb3Igbm9uLU1TIGNvbXBpbGVycyBvbiBXaW5kb3dzLCBhbmQKLSsgICAgICAgICAgICAjIGl0J3MgdGFrZW4gY2FyZSBvZiBmb3IgdGhlbSBieSB0aGUgJ2J1aWxkX2V4dC5nZXRfbGlicmFyaWVzKCknCi0rICAgICAgICAgICAgIyBtZXRob2QuKQotKyAgICAgICAgICAgIGdbJ0xEU0hBUkVEJ10gPSAoIiVzIC1MJXMvbGliIC1scHl0aG9uJXMiICUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rZXJzY3JpcHQsIFBSRUZJWCwgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpKQotKwotKyAgICBnbG9iYWwgX2NvbmZpZ192YXJzCi0rICAgIF9jb25maWdfdmFycyA9IGcKLSAKLSBkZWYgX2luaXRfbnQoKToKLSAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBOVCIiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvdW5peGNjb21waWxlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL3VuaXhjY29tcGlsZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MDI4MjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvdW5peGNjb21waWxlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1UaGUgQ0MgdmFyaWFibGUsc29tZXRpbWVzIGxpa2U6Ing4Nl82NC1wb2t5LWxpbnV4LWdjYyAgIC1tNjQgLS1zeXNyb290PS8ke1RNUERJUn0vc3lzcm9vdHMvcWVtdXg4Ni02NCIsIGNvbnRhaW5zIG9wdGlvbiBpbmZvcm1hdGlvbi4gCi1UaGlzIHdpbGwgbGVhZCB0byB3cm9uZyBjb21waWxlciBuYW1lICJxZW11eDg2LTY0IiByYXRoZXIgdGhhbiAieDg2XzY0LXBva3ktbGludXgtZ2NjIiB3aGVuIHB5dGhvbiBmaW5kaW5nIHRoZSBjb21waWxlciBuYW1lLgotCi1TaWduZWQtb2ZmLWJ5OiBNZWkgTGVpIDxsZWkubWVpQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1JbmRleDogUHl0aG9uLTIuNy4yL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQkyMDExLTExLTI0IDEzOjUxOjEwLjUzOTk5ODcyMiAtMDgwMAotKysrIFB5dGhvbi0yLjcuMi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkJMjAxMS0xMS0yNCAxNTo1NDozNi44NzIxMzc3NjYgLTA4MDAKLUBAIC0yODIsNyArMjgyLDcgQEAKLSAgICAgICAgICMgdGhpcyB0aW1lLCB0aGVyZSdzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhpcyBpbmZvcm1hdGlvbiBmcm9tCi0gICAgICAgICAjIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgc3RvcmVkIGluIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uLCBzbwotICAgICAgICAgIyB3ZSB1c2UgdGhpcyBoYWNrLgotLSAgICAgICAgY29tcGlsZXIgPSBvcy5wYXRoLmJhc2VuYW1lKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ0MiKSkKLSsgICAgICAgIGNvbXBpbGVyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDQyIpCi0gICAgICAgICBpZiBzeXMucGxhdGZvcm1bOjZdID09ICJkYXJ3aW4iOgotICAgICAgICAgICAgICMgTWFjT1NYJ3MgbGlua2VyIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgLVIgZmxhZyBhdCBhbGwKLSAgICAgICAgICAgICByZXR1cm4gIi1MIiArIGRpcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzY4MTBkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCi1ERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUgZXhwYXQtbmF0aXZlIGdkYm0tbmF0aXZlIGRiLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL25vaG9zdGxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLVJlc29sdmUtaW50ZXJtZWRpYXRlLXN0YWdpbmctaXNzdWVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLW5hdGl2ZS1maXgtb25lLWRvX3BvcHVsYXRlX3N5c3Jvb3Qtd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRoLXN5c3RlbS1leHBhdD0ke1NUQUdJTkdfRElSX0hPU1R9IgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBMSUJDPSIiIFwKLSAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKLScKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLSMgUmVnZW5lcmF0ZSBhbGwgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcwotIyBUaGlzIGVuc3VyZXMgdGhhdCBwZ2VuIGFuZCBmcmllbmRzIGdldCBjcmVhdGVkIGR1cmluZyB0aGUgY29tcGlsZSBwaGFzZQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgcmVnZW4tYWxsCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbnwnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0JIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKLQkjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKLQkjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLQkjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCi0JbG4gLXMgcHl0aG9uLW5hdGl2ZS9weXRob24gJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24KLQotCSMgV2UgZG9uJ3Qgd2FudCBtb2R1bGVzIGluIH4vLmxvY2FsIGJlaW5nIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZQotCSMgaW5zdGFsbGVkIGluIHRoZSBuYXRpdmUgc3lzcm9vdCwgc28gZGlzYWJsZSB1c2VyIHNpdGUgc3VwcG9ydC4KLQlzZWQgLWkgLWUgJ3MsXlwoRU5BQkxFX1VTRVJfU0lURSA9IFwpLiosXDFGYWxzZSwnICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5Ci19Ci0KLXB5dGhvbigpewotCi0gICAgIyBSZWFkIEpTT04gbWFuaWZlc3QKLSAgICBpbXBvcnQganNvbgotICAgIHB5dGhvbmRpciA9IGQuZ2V0VmFyKCdUSElTRElSJykKLSAgICB3aXRoIG9wZW4ocHl0aG9uZGlyKycvcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0X2ZpbGU6Ci0gICAgICAgIG1hbmlmZXN0X3N0ciA9ICBtYW5pZmVzdF9maWxlLnJlYWQoKQotICAgICAgICBqc29uX3N0YXJ0ID0gbWFuaWZlc3Rfc3RyLmZpbmQoJyMgRU9DJykgKyA2Ci0gICAgICAgIG1hbmlmZXN0X2ZpbGUuc2Vlayhqc29uX3N0YXJ0KQotICAgICAgICBtYW5pZmVzdF9zdHIgPSBtYW5pZmVzdF9maWxlLnJlYWQoKQotICAgICAgICBweXRob25fbWFuaWZlc3QgPSBqc29uLmxvYWRzKG1hbmlmZXN0X3N0cikKLQotICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCi0KLSAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbi1uYXRpdmUtZm9vLCBzaG91bGQgYmUgcHl0aG9uLWZvby1uYXRpdmUKLSAgICBwbiA9ICdweXRob24nCi0KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKLSAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6Ci0gICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgZC5zZXRWYXIoJ1JQUk9WSURFUycsICcgJy5qb2luKHJwcm92aWRlcykpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMKaW5kZXggMGU2NDUwMS4uY2UzYzIyNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyLmluYwpAQCAtNSw2ICs1LDggQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkZWNlNzgyMWJmM2ZkNzBmZTEzMDllYWEzN2Q1MmEyIgogCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIgorCiBpbmhlcml0IHB5cGkKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1waXAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ4YjMyNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYwpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlB5dGhvbiBwYXJzaW5nIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXBhcnNpbmcud2lraXNwYWNlcy5jb20vIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NTdhNTY2MjMzODg4NTEzZTFmMDdiYTEzZTJmNDdmMSIKKworU1JDX1VSSVttZDVzdW1dID0gImYwOTUzZTQ3YTAxMTJmN2E2NWFlYzIzMDVmZmRmN2I0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyMDNlYzg3ODNiZjc3MWExNTViMjA3Mjc5YjliY2NiOGRlYTAyZDhmMGM5ZTVmOGVhZDUwN2JjMzI0NmVjYzEiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJweXBhcnNpbmctKD9QPHB2ZXI+LiopXC50YXIiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwppbmRleCAwMjdlMjU5Li4wN2MyZjhiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKQEAgLTEwLDggKzEwLDEwIEBACiAKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2giCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4OWE1OTJkNzMzYjMxZTE4MGE0YjZhZDc2MGMwNjg1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWFlNzgyY2NmMzZiNzkwYzIxYmRlN2Q4NmE0ZjMwM2E0NDFjZDc3MDM2YjI1YzU1OWE2MDJjZjUxODZjZTRkIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjBjOTU2ZWVhMTQyYWY5YzJiMDJkNzJlM2MwNDJhZjMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YzZlNjAxMWVjMmY2ZDU3ZDQzYTNmOTI5NmM0ZWYwMjJjMmNiZjQ5YmFiMjZiNDA3ZmU2Nzk5MmFlMzM5N2YiCiAKIERFUEVORFMgKz0gIiR7UFlUSE9OX1BOfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzQxLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc180MS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOTQ0MDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzQxLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotUFJPVklERVMgPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SUkVQTEFDRVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SUFJPVklERVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCmluZGV4IGMzODYwOTAuLjA1YjMyODEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKQEAgLTIsMTAgKzIsNyBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4MmViM2ExYTdmYWRlNjBiZGE1OTgwOTM1MDg0YjYyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTkyYzIzYzg4MmM3ZDU1NjRjZTU3NzNmZTMxYjI3NzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzBmNjEwMjc5ZThiMjU3OGNhYjZkYjIwNzQxMTMwMzMxNzM1Yzc4MWI1NjA1M2M1OWM0MDc2ZGEyN2YwNmI2NiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQzY2ZjOWU0YWMwZTM3N2FjZmI5Yjc2ZjU2Yjg0MTVkIgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYzMGMyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFB5dGhvbiBQcm9ncmFtbWluZyBMYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZyIKLUxJQ0VOU0UgPSAiUFNGdjIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLSMgYnVtcCB0aGlzIG9uIGV2ZXJ5IGNoYW5nZSBpbiBjb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkKLUlOQ19QUiA9ICJyMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTQ2NjI0Mjk4OWJkMzNjMWJkMmI2YTUyNmE3NDI0OTgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIzYjZkMmM5MmY0MmE2MDY2NzgxNDM1OGFiOWYwY2ZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRkNDNmMDMzY2RiZDBhYTdiNzAyM2M4MWIwZTk4NmZkMTFlNjUzYjUyNDhkYWM5MTQ0ZDUwOGYxMTgxMmJhNDEiCi0KLSMgcHl0aG9uIHJlY2lwZSBpcyBhY3R1YWxseSBweXRob24gMi54Ci0jIGFsc28sIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPjIoXC5cZCspKykudGFyIgotCi1DVkVfUFJPRFVDVCA9ICJweXRob24iCi0KLVBZVEhPTl9NQUpNSU4gPSAiMi43IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgLS13aXRoLXRocmVhZHMgXAotICAtLXdpdGgtcHltYWxsb2MgXAotICAtLXdpdGhvdXQtY3h4LW1haW4gXAotICAtLXdpdGgtc2lnbmFsLW1vZHVsZSBcCi0gIC0tZW5hYmxlLXNoYXJlZCBcCi0gIC0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSBcCi0gIGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8gYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9oPW5vIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JbGliZGlybGVhZj0iJChlY2hvICR7bGliZGlyfSB8IHNlZCAtZSAnczoke3ByZWZpeH0vOjonKSIKLQlzZWQgLWkgLWUgInM6U0VETUVMSUJMRUFGOiR7bGliZGlybGVhZn06ZyIgXAotCQkke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vaW5zdGFsbDppbnN0YWxsOmcnIFwKLQkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS9ta2Rpcjpta2RpcjpnJyBcCi0JCSR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1kaXN0dXRpbHMtc2V0LXRoZS1wcmVmaXgtdG8tYmUtaW5zaWRlLXN0YWdpbmctZGlyZWN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMmY4NDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDRjZGYyZTlkZjEzYzYzMjdmY2M5NGQ1M2U0OTUzMDA1NTQzYWVmM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBBcHIgMjAxNiAxNzo0MzowMiArMDMwMAotU3ViamVjdDogW1BBVENIIDAxLzEwXSBkaXN0dXRpbHM6IHNldCB0aGUgcHJlZml4IHRvIGJlIGluc2lkZSBzdGFnaW5nCi0gZGlyZWN0b3J5Ci0KLVRoZSBwcm9wZXIgcHJlZml4IGlzIGluc2lkZSBvdXIgc3RhZ2luZyBhcmVhLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QHZhbmlsbGUtbWVkaWEuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBQaGlsIEJsdW5kZWxsIDxwaGlsYkBnbnUub3JnPgotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBMaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSB8IDEwICsrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggZGU3ZGExZC4uZjNhYWNmNyAxMDA2NDQKLS0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTc1LDcgKzc1LDcgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgotICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KLSAgICAgIiIiCi0gICAgIGlmIHByZWZpeCBpcyBOb25lOgotLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCi0rICAgICAgICBwcmVmaXggPSBvcy5lbnZpcm9uWydTVEFHSU5HX0lOQ0RJUiddLnJzdHJpcCgnaW5jbHVkZScpCi0gCi0gICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKLSAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKLUBAIC0xMTUsMTIgKzExNSwxNiBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgotICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLnByZWZpeCBvcgotICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KLSAgICAgIiIiCi0rICAgIGxpYl9iYXNlbmFtZSA9IG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10uc3BsaXQoJy8nKVstMV0KLSAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0tICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKLSsgICAgICAgIGlmIHBsYXRfc3BlY2lmaWM6Ci0rICAgICAgICAgICAgcHJlZml4ID0gb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXS5yc3RyaXAobGliX2Jhc2VuYW1lKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBwcmVmaXggPSBQUkVGSVgKLSAKLSAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgotICAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGliIiwgInB5dGhvbiIgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfYmFzZW5hbWUsICJweXRob24iICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCi0gICAgICAgICBpZiBzdGFuZGFyZF9saWI6Ci0gICAgICAgICAgICAgcmV0dXJuIGxpYnB5dGhvbgotICAgICAgICAgZWxzZToKLS0tIAotMi44LjAucmMzCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24tUmVzb2x2ZS1pbnRlcm1lZGlhdGUtc3RhZ2luZy1pc3N1ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uLVJlc29sdmUtaW50ZXJtZWRpYXRlLXN0YWdpbmctaXNzdWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmYyY2NjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24tUmVzb2x2ZS1pbnRlcm1lZGlhdGUtc3RhZ2luZy1pc3N1ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDc3YmNiMzIzOGIyODUzZDUxMTcxNDU0NGUwZjg0YTM3YmU2Yzc5YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLURhdGU6IFdlZCwgMTQgTm92IDIwMTIgMTQ6MzE6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHl0aG9uOiBSZXNvbHZlIGludGVybWVkaWF0ZSBzdGFnaW5nIGlzc3VlcwotCi1XaGVuIGNyb3NzIGNvbXBpbGluZyBweXRob24sIHdlIHVzZWQgdG8gbmVlZCB0byBpbnN0YWxsIHRoZSBNYWtlZmlsZSwgcHljb25maWcuaAotYW5kIHRoZSBweXRob24gbGlicmFyeSB0byB0aGVpciBmaW5hbCBsb2NhdGlvbiBiZWZvcmUgYmVpbmcgYWJsZSB0byBjb21waWxlIHRoZQotcmVzdCBvZiBweXRob24uIFRoaXMgY2hhbmdlIGFsbG93cyB1cyB0byBwb2ludCBweXRob24gYXQgaXRzIG93biBzb3VyY2Ugd2hlbgotYnVpbGRpbmcsIGF2b2lkaW5nIGEgdmFyaWV0eSBvZiBzeXNyb290IHN0YWdpbmcgaXNzdWVzIGFuZCBzaW1wbGlmeWluZyB0aGUgbWFpbgotcHl0aG9uIHJlY2lwZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1SUCAyMDEyLzExLzEzCi0KLS0tLQotIExpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IHwgMyArKysKLSBMaWIvc3lzY29uZmlnLnB5ICAgICAgICAgICB8IDUgKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggMmY0YjhjYS4uMTViY2ViNSAxMDA2NDQKLS0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTMxLDYgKzMxLDkgQEAgZWxzZToKLSAgICAgIyBzeXMuZXhlY3V0YWJsZSBjYW4gYmUgZW1wdHkgaWYgYXJndlswXSBoYXMgYmVlbiBjaGFuZ2VkIGFuZCBQeXRob24gaXMKLSAgICAgIyB1bmFibGUgdG8gcmV0cmlldmUgdGhlIHJlYWwgcHJvZ3JhbSBuYW1lCi0gICAgIHByb2plY3RfYmFzZSA9IG9zLmdldGN3ZCgpCi0rX1BZVEhPTkJVSUxERElSID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTkJVSUxERElSIiwgTm9uZSkKLStpZiBfUFlUSE9OQlVJTERESVI6Ci0rICAgIHByb2plY3RfYmFzZSA9IF9QWVRIT05CVUlMRERJUgotIGlmIG9zLm5hbWUgPT0gIm50IiBhbmQgInBjYnVpbGQiIGluIHByb2plY3RfYmFzZVstODpdLmxvd2VyKCk6Ci0gICAgIHByb2plY3RfYmFzZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCBvcy5wYXRoLnBhcmRpcikpCi0gIyBQQy9WUzcuMQotZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5Ci1pbmRleCA5YzgzNTBkLi5iZGRiZTJlIDEwMDY0NAotLS0tIGEvTGliL3N5c2NvbmZpZy5weQotKysrIGIvTGliL3N5c2NvbmZpZy5weQotQEAgLTkzLDYgKzkzLDcgQEAgX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKLSBfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKLSBfQ09ORklHX1ZBUlMgPSBOb25lCi0gX1VTRVJfQkFTRSA9IE5vbmUKLStfUFlUSE9OQlVJTERESVIgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OQlVJTERESVIiLCBOb25lKQotIAotIGRlZiBfc2FmZV9yZWFscGF0aChwYXRoKToKLSAgICAgdHJ5OgotQEAgLTEwMCw3ICsxMDEsOSBAQCBkZWYgX3NhZmVfcmVhbHBhdGgocGF0aCk6Ci0gICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgcmV0dXJuIHBhdGgKLSAKLS1pZiBzeXMuZXhlY3V0YWJsZToKLStpZiBfUFlUSE9OQlVJTERESVI6Ci0rICAgIF9QUk9KRUNUX0JBU0UgPSBfUFlUSE9OQlVJTERESVIKLStlbGlmIHN5cy5leGVjdXRhYmxlOgotICAgICBfUFJPSkVDVF9CQVNFID0gb3MucGF0aC5kaXJuYW1lKF9zYWZlX3JlYWxwYXRoKHN5cy5leGVjdXRhYmxlKSkKLSBlbHNlOgotICAgICAjIHN5cy5leGVjdXRhYmxlIGNhbiBiZSBlbXB0eSBpZiBhcmd2WzBdIGhhcyBiZWVuIGNoYW5nZWQgYW5kIFB5dGhvbiBpcwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLXB5dGhvbjItdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uMi11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0ZjgyMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uMi11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1Gcm9tIDNmNDliZTgxZTMxYzE2NDY1NGFlYjEwYjY1ZWJhZGU5ODJjYTJlZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMiBPY3QgMjAxOCAxNToyNDo0OCArMDgwMAotU3ViamVjdDogW1BBVENIXSBweXRob24yOiB1c2UgY2NfYmFzZW5hbWUgdG8gcmVwbGFjZSBDQyBmb3IgY2hlY2tpbmcgY29tcGlsZXIKLQotV2hlbiB3b3JraW5nIHBhdGggY29udGFpbnMgImNsYW5nIi8iZ2NjIi8iaWNjIiwgaXQgbWlnaHQgYmUgcGFydCBvZiAkQ0MKLWJlY2F1c2Ugb2YgdGhlICItLXN5c3Jvb3QiIHBhcmFtZXRlci4gVGhhdCBjb3VsZCBjYXVzZSBqdWRnZW1lbnQgZXJyb3IKLWFib3V0IGNsYW5nL2djYy9pY2MgY29tcGlsZXJzLiBlLmcuCi1XaGVuICJpY2MiIGlzIGNvbnRhaW5kZWQgaW4gd29ya2luZyBwYXRoLCBiZWxvdyBlcnJvcnMgYXJlIHJlcG9ydGVkIHdoZW4KLWNvbXBpbGluZyBweXRob246Ci14ODZfNjQtd3JzLWxpbnV4LWdjYzogZXJyb3I6IHN0cmljdDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQoteDg2XzY0LXdycy1saW51eC1nY2M6IGVycm9yOiB1bnJlY29nbml6ZWQgY29tbWFuZCBsaW5lIG9wdGlvbiAnLWZwLW1vZGVsJwotCi1IZXJlIHVzZSBjY19iYXNlbmFtZSB0byByZXBsYWNlIENDIGZvciBjaGVja2luZyBjb21waWxlciB0byBhdm9pZCBzdWNoCi1raW5kIG9mIGlzc3VlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotCi1QYXRjaCBvcmlnbmFsbHkgZnJvbSBMaSBaaG91LCBJIGp1c3QgcmV3b3JrIGl0IHRvIG5ldyB2ZXJzaW9uCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkYjFjOTQwLi5kZmNkODlhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02ODQsNyArNjg0LDcgQEAgQUNfTVNHX1JFU1VMVCgkd2l0aF9jeHhfbWFpbikKLSBwcmVzZXRfY3h4PSIkQ1hYIgotIGlmIHRlc3QgLXogIiRDWFgiCi0gdGhlbgotLSAgICAgICAgY2FzZSAiJENDIiBpbgotKyAgICAgICAgY2FzZSAiJGNjX2Jhc2VuYW1lIiBpbgotICAgICAgICAgZ2NjKSAgICBBQ19QQVRIX1RPT0woQ1hYLCBbZysrXSwgW2crK10sIFtub3Rmb3VuZF0pIDs7Ci0gICAgICAgICBjYykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKLSAgICAgICAgIGVzYWMKLUBAIC03NTcsMTQgKzc1NywxNCBAQCBybWRpciBDYXNlU2Vuc2l0aXZlVGVzdERpcgotIAotIGNhc2UgJE1BQ0hERVAgaW4KLSBic2RvcyopCi0tICAgIGNhc2UgJENDIGluCi0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgIGdjYykgQ0M9IiRDQyAtRF9IQVZFX0JTREkiOzsKLSAgICAgZXNhYzs7Ci0gZXNhYwotIAotIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSBocCp8SFAqKQotLSAgICBjYXNlICRDQyBpbgotKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICBjY3wqL2NjKSBDQz0iJENDIC1BZSI7OwotICAgICBlc2FjOzsKLSBTdW5PUyopCi1AQCAtMTA4NCw3ICsxMDg0LDcgQEAgdGhlbgotICAgICAgICAgZmkKLSAKLSAgICAgICAgICMgQ2xhbmcgYWxzbyBuZWVkcyAtZndyYXB2Ci0tICAgICAgICBjYXNlICRDQyBpbgotKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgICAgICAqY2xhbmcqKSBXUkFQPSItZndyYXB2IgotICAgICAgICAgICAgIDs7Ci0gICAgICAgICBlc2FjCi1AQCAtMTMwNCw3ICsxMzA0LDcgQEAgeWVzKQotIGVzYWMKLSAKLSAjIElDQyBuZWVkcyAtZnAtbW9kZWwgc3RyaWN0IG9yIGZsb2F0cyBiZWhhdmUgYmFkbHkKLS1jYXNlICIkQ0MiIGluCi0rY2FzZSAiJGNjX2Jhc2VuYW1lIiBpbgotICppY2MqKQotICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZnAtbW9kZWwgc3RyaWN0IgotICAgICA7OwotQEAgLTE0NDMsNyArMTQ0Myw3IEBAIGVsc2UKLSBmaV0sCi0gW0FDX01TR19SRVNVTFQobm8pXSkKLSBpZiB0ZXN0ICIkUHlfTFRPIiA9ICd0cnVlJyA7IHRoZW4KLS0gIGNhc2UgJENDIGluCi0rICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAqY2xhbmcqKQotICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgIExUT0ZMQUdTPSItZmx0byIKLUBAIC0xNTA4LDcgKzE1MDgsNyBAQCB0aGVuCi0gICBmaQotIGZpCi0gTExWTV9QUk9GX0VSUj1ubwotLWNhc2UgJENDIGluCi0rY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICpjbGFuZyopCi0gICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgotQEAgLTIzMjIsNyArMjMyMiw3IEBAIHRoZW4KLSAJCXRoZW4gQ0NTSEFSRUQ9Ii1mUElDIgotIAkJZWxzZSBDQ1NIQVJFRD0iLUtwaWMgLWJlbGYiCi0gCQlmaTs7Ci0tCUlSSVgqLzYqKSAgY2FzZSAkQ0MgaW4KLSsJSVJJWCovNiopICBjYXNlICRjY19iYXNlbmFtZSBpbgotIAkJICAgKmdjYyopIENDU0hBUkVEPSItc2hhcmVkIjs7Ci0gCQkgICAqKSBDQ1NIQVJFRD0iIjs7Ci0gCQkgICBlc2FjOzsKLUBAIC0yMzY2LDcgKzIzNjYsNyBAQCB0aGVuCi0gCQl0aGVuCi0gCQkJTElOS0ZPUlNIQVJFRD0iLVdsLC0tZXhwb3J0LWR5bmFtaWMiCi0gCQlmaTs7Ci0tCVN1bk9TLzUqKSBjYXNlICRDQyBpbgotKwlTdW5PUy81KikgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJCSAgKmdjYyopCi0gCQkgICAgaWYgJENDIC1YbGlua2VyIC0taGVscCAyPiYxIHwgZ3JlcCBleHBvcnQtZHluYW1pYyA+L2Rldi9udWxsCi0gCQkgICAgdGhlbgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc5NWE3NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLVdlIG5lZWQgdG8gZW5zdXJlIG91ciBob3N0IHRvb2xzIGdldCBydW4gZHVyaW5nIGJ1aWxkLCBub3QgdGhlIGZyZXNobHkKLWJ1aWx0IGNyb3NzLXRvb2xzICh0aGlzIHdpbGwgbm90IHdvcmspLCBzbyB3ZSBpbnRyb2R1Y2UgSE9TVFBZVEhPTiBhbmQgSE9TVFBHRU4uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUB2YW5pbGxlLW1lZGlhLmRlPgotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0KLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci0KLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuMTQKLVNpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+Ci0KLUluZGV4OiBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotQEAgLTI0NSw2ICsyNDUsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBQYXJzZXIKLSBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKLStIT1NUUEdFTj0JJChQR0VOKSQoRVhFKQotIAotIFBTUkNTPQkJXAotIAkJUGFyc2VyL2FjY2VsZXIuYyBcCi1AQCAtNTEyLDcgKzUxMyw3IEBAICQoQlVJTERQWVRIT04pOglNb2R1bGVzL3B5dGhvbi5vICQoTElCUkEKLSAJCQkkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQotIAotIHBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAotLQkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludCBnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXScgPnBsYXRmb3JtCi0rCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQgZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10nID5wbGF0Zm9ybQotIAotICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCi0gIyBweWJ1aWxkZGlyLnR4dCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgYnVpbGQgZGlyIGFuZCBpcyB1c2VkIGZvcgotQEAgLTY2Myw3ICs2NjMsNyBAQAotIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYwotIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KLSAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAotKwkkKEhPU1RQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKLSAJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggXAotIAkJJChzcmNkaXIpL1B5dGhvbi9ncmFtaW5pdC5jCi0gCi1AQCAtMTEyMSwyNyArMTEyMiwyNyBAQCBsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMCi0gCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXAotIAlmaQotIAlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotKwkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKSAtZiBcCi0gCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKLSAJCSQoREVTVERJUikkKExJQkRFU1QpCi0gCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC10dCAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSsJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkgLWYgXAotIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCi0gCQkkKERFU1RESVIpJChMSUJERVNUKQotIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC10ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotKwkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKLSAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCi0gCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0tCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtdCAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSsJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCi0gCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwotIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL0dyYW1tYXIudHh0Ci0rCQkkKEhPU1RQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKLSAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKLSsJCSQoSE9TVFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKLSAKLSAjIENyZWF0ZSB0aGUgUExBVERJUiBzb3VyY2UgZGlyZWN0b3J5LCBpZiBvbmUgd2Fzbid0IGRpc3RyaWJ1dGVkLi4KLSAkKHNyY2RpcikvTGliLyQoUExBVERJUik6Ci1JbmRleDogUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLUBAIC0zNTAsNiArMzUwLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgIHNlbGYuZmFpbGVkLmFwcGVuZChleHQubmFtZSkKLSAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCcqKiogV0FSTklORzogcmVuYW1pbmcgIiVzIiBzaW5jZSBpbXBvcnRpbmcgaXQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZhaWxlZDogJXMnICUgKGV4dC5uYW1lLCB3aHkpLCBsZXZlbD0zKQotKyAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5pbnBsYWNlCi0gICAgICAgICAgICAgYmFzZW5hbWUsIHRhaWwgPSBvcy5wYXRoLnNwbGl0ZXh0KGV4dF9maWxlbmFtZSkKLSAgICAgICAgICAgICBuZXduYW1lID0gYmFzZW5hbWUgKyAiX2ZhaWxlZCIgKyB0YWlsCi1AQCAtNTc0LDYgKzU3NSw5IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgICAgICMgWFhYIE9taXR0ZWQgbW9kdWxlczogZ2wsIHB1cmUsIGRsLCBTR0ktc3BlY2lmaWMgbW9kdWxlcwotIAotKyAgICAgICAgbGliX2RpcnMgPSBbIG9zLmdldGVudigiU1RBR0lOR19MSUJESVIiKSwgIG9zLmdldGVudigiU1RBR0lOR19CQVNFTElCRElSIikgXQotKyAgICAgICAgaW5jX2RpcnMgPSBbIG9zLmdldGVudigiU1RBR0lOR19JTkNESVIiKSBdCi0rCi0gICAgICAgICAjCi0gICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgYWxsIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFuZCBjb21waWxlCi0gICAgICAgICAjIG9uIHByZXR0eSBtdWNoIGFueSBQT1NJWGlzaCBwbGF0Zm9ybS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGNlYjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1XZSBuZWVkIHRvIHN1cHBseSBTVEFHSU5HX0lOQ0RJUiBoZXJlLCBvdGhlcndpc2UgdGhlIFRrIGhlYWRlcnMKLXdpbGwgbm90IGJlIGZvdW5kLgotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS5kZT4KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotCi1SZWJhc2VkIGZvciBweXRob24tMi43LjkKLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDhmZTFmYjguLjY3ZWRhNzQgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xODkyLDcgKzE4OTIsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgIGRvdHZlcnNpb24gPSBkb3R2ZXJzaW9uWzotMV0gKyAnLicgKyBkb3R2ZXJzaW9uWy0xXQotICAgICAgICAgICAgIHRjbF9pbmNsdWRlX3N1YiA9IFtdCi0gICAgICAgICAgICAgdGtfaW5jbHVkZV9zdWIgPSBbXQotLSAgICAgICAgICAgIGZvciBkaXIgaW4gaW5jX2RpcnM6Ci0rICAgICAgICAgICAgZm9yIGRpciBpbiBbb3MuZ2V0ZW52KCJTVEFHSU5HX0lOQ0RJUiIpXToKLSAgICAgICAgICAgICAgICAgdGNsX2luY2x1ZGVfc3ViICs9IFtkaXIgKyBvcy5zZXAgKyAidGNsIiArIGRvdHZlcnNpb25dCi0gICAgICAgICAgICAgICAgIHRrX2luY2x1ZGVfc3ViICs9IFtkaXIgKyBvcy5zZXAgKyAidGsiICsgZG90dmVyc2lvbl0KLSAgICAgICAgICAgICB0a19pbmNsdWRlX3N1YiArPSB0Y2xfaW5jbHVkZV9zdWIKLUBAIC0xOTExLDIyICsxOTExLDYgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgIGlmIGRpciBub3QgaW4gaW5jbHVkZV9kaXJzOgotICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKGRpcikKLSAKLS0gICAgICAgICMgQ2hlY2sgZm9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMKLS0gICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3N1bm9zNSc6Ci0tICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2luY2x1ZGUnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2xpYicpCi0tICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKCcvdXNyL1gxMVI2L2luY2x1ZGUnKToKLS0gICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI2L2luY2x1ZGUnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTFSNi9saWI2NCcpCi0tICAgICAgICAgICAgYWRkZWRfbGliX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI2L2xpYicpCi0tICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKCcvdXNyL1gxMVI1L2luY2x1ZGUnKToKLS0gICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI1L2luY2x1ZGUnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTFSNS9saWInKQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAjIEFzc3VtZSBkZWZhdWx0IGxvY2F0aW9uIGZvciBYMTEKLS0gICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL1gxMS9pbmNsdWRlJykKLS0gICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3IvWDExL2xpYicpCi0tCi0gICAgICAgICAjIElmIEN5Z3dpbiwgdGhlbiB2ZXJpZnkgdGhhdCBYIGlzIGluc3RhbGxlZCBiZWZvcmUgcHJvY2VlZGluZwotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzoKLSAgICAgICAgICAgICB4MTFfaW5jID0gZmluZF9maWxlKCdYMTEvWGxpYi5oJywgW10sIGluY2x1ZGVfZGlycykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNjODc0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1SZWJhc2VkIGZvciBweXRob24gMi43LjkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotIyBDVHlwZXMgbmVlZCB0byBrbm93IHRoZSBhY3R1YWwgaG9zdCB3ZSBhcmUgYnVpbGRpbmcgb24uCi0jIFNpZ25lZC1PZmY6IE1pY2hhZWwgRGlldHJpY2ggPG1kdEBlbWRldGUuZGU+Ci0KLUluZGV4OiBQeXRob24tMi43Ljkvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuOS9zZXR1cC5weQotQEAgLTIwMjgsMTIgKzIwMjgsMTIgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotIAotICAgICAgICAgICAgICAgICAjIFBhc3MgZW1wdHkgQ0ZMQUdTIGJlY2F1c2Ugd2UnbGwganVzdCBhcHBlbmQgdGhlIHJlc3VsdGluZwotICAgICAgICAgICAgICAgICAjIENGTEFHUyB0byBQeXRob24nczsgLWcgb3IgLU8yIGlzIHRvIGJlIGF2b2lkZWQuCi0tICAgICAgICAgICAgICAgIGNtZCA9ICJjZCAlcyAmJiBlbnYgQ0ZMQUdTPScnICclcy9jb25maWd1cmUnICVzIiBcCi0tICAgICAgICAgICAgICAgICAgICAgICUgKGZmaV9idWlsZGRpciwgZmZpX3NyY2RpciwgIiAiLmpvaW4oY29uZmlnX2FyZ3MpKQotKyAgICAgICAgICAgICAgICBjbWQgPSAiKGNkICVzICYmIGF1dG9jb25mIC1XIGNyb3NzKSAmJiAoY2QgJXMgJiYgZW52IENGTEFHUz0nJyAnJXMvY29uZmlndXJlJyAlcykiIFwKLSsgICAgICAgICAgICAgICAgICAgICUgKGZmaV9zcmNkaXIsIGZmaV9idWlsZGRpciwgZmZpX3NyY2RpciwgIiAiLmpvaW4oY29uZmlnX2FyZ3MpKQotIAotICAgICAgICAgICAgICAgICByZXMgPSBvcy5zeXN0ZW0oY21kKQotICAgICAgICAgICAgICAgICBpZiByZXMgb3Igbm90IG9zLnBhdGguZXhpc3RzKGZmaV9jb25maWdmaWxlKToKLS0gICAgICAgICAgICAgICAgICAgIHByaW50ICJGYWlsZWQgdG8gY29uZmlndXJlIF9jdHlwZXMgbW9kdWxlIgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBjb25maWd1cmUgX2N0eXBlcyBtb2R1bGUgKHJlcz0lZCkgb3IgbWlzc2luZyBjb25mZmlsZT0lcyIgJSAoIHJlcywgZmZpX2NvbmZpZ2ZpbGUgKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gCi0gICAgICAgICAgICAgZmZpY29uZmlnID0ge30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM1YjMxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhlIHBvaXNvbiBkaXJlY3RvcmllcyBwYXRjaCBoYXMgZGV0ZWN0ZWQgbGlicmFyeSBwYXRoIGlzc3VlIHdoaWxlIAotY29tcGlsaW5nIHRoZSBweXRob24gaW4gY3Jvc3MgZW52aXJvbm1lbnQsIGFzIHNlZW4gYmVsbG93LgotCi13YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoICIvdXNyL2xpYi90ZXJtY2FwIiBpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uCi0KLVRoaXMgUGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSBpbiB0aGUgcHl0aG9uIGJ1aWxkIGVudmlyb25tZW50LgotMTEgT2N0IDIwMTAKLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLTIwMTEvMDkvMjkKLVJlYmFzZWQgZm9yIHB5dGhvbiAyLjcuMgotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA2N2VkYTc0Li41OWM1MzdlIDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtNzYxLDEyICs3NjEsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICBwYXNzICMgSXNzdWUgNzM4NDogQWxyZWFkeSBsaW5rZWQgYWdhaW5zdCBjdXJzZXMgb3IgdGluZm8uCi0gICAgICAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeToKLSAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoY3Vyc2VzX2xpYnJhcnkpCi0tICAgICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL3Vzci9saWIvdGVybWNhcCddLAotKyAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtY2FwJyk6Ci0gICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKCd0ZXJtY2FwJykKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdyZWFkbGluZScsIFsncmVhZGxpbmUuYyddLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzPVsnL3Vzci9saWIvdGVybWNhcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXJlYWRsaW5lX2V4dHJhX2xpbmtfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1yZWFkbGluZV9saWJzKSApCi0gICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjk3MzQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLWNvbmZpZ3VyZS5hYzogYWRkIENST1NTUFlUSE9OUEFUSCBpbnRvIFBZVEhPTlBBVEggZm9yIFBZVEhPTl9GT1JfQlVJTEQKLQotV2hlbiBidWlsZGluZyB4ODYtPng4NiB0aGUgc3lzdGVtIHdpbGwgdHJ5IHRvIGV4ZWN1dGUgLnNvIGFuZCByZWxhdGVkIGl0ZW1zCi1mcm9tIHRoZSBkZWZhdWx0IFBZVEhPTlBBVEguICBUaGlzIHdpbGwgZmFpbCBpZiB0aGUgdGFyZ2V0IENQVSBjb250YWlucwotaW5zdHJ1Y3Rpb25zIHRoYXQgdGhlIGhvc3QgQ1BVIGRvZXMgbm90IGhhdmUsIGFkZCBDUk9TU1BZVEhPTlBBVEgKLWludG8gUFlUSE9OUEFUSCBzbyB3ZSBjYW4gcHJlcGVuZCB0aGUgbGlzdCB0byBmaW5kIGNvcnJlY3QgbGlicy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1Db3JlIGludGVncmF0aW9uIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLUBAIC0zNiw3ICszNiw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0gCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKLSAJZmkKLSAgICAgICAgIEFDX01TR19SRVNVTFQoJGludGVycCkKLS0JUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCi0rCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChDUk9TU1BZVEhPTlBBVEgpOiQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliL3BsYXQtJChNQUNIREVQKSAnJGludGVycAotICAgICBmaQotIGVsaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgotICAgICBBQ19NU0dfRVJST1IoW0Nyb3NzIGNvbXBpbGluZyByZXF1aXJlZCAtLWhvc3Q9SE9TVC1UVVBMRSBhbmQgLS1idWlsZD1BUkNIXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZmVhNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy4yL01vZHVsZXMvU2V0dXAuZGlzdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL01vZHVsZXMvU2V0dXAuZGlzdAkyMDExLTA2LTExIDA4OjQ2OjI2LjAwMDAwMDAwMCAtMDcwMAotKysrIFB5dGhvbi0yLjcuMi9Nb2R1bGVzL1NldHVwLmRpc3QJMjAxMS0xMi0yNyAxNTo1MTo0MS4yNDQ2MjMyMTkgLTA4MDAKLUBAIC0yNDgsNyArMjQ4LDcgQEAKLSAjIE1lc3NhZ2UtRGlnZXN0IEFsZ29yaXRobSwgZGVzY3JpYmVkIGluIFJGQyAxMzIxLiAgVGhlIG5lY2Vzc2FyeSBmaWxlcwotICMgbWQ1LmMgYW5kIG1kNS5oIGFyZSBpbmNsdWRlZCBoZXJlLgotIAotLSNfbWQ1IG1kNW1vZHVsZS5jIG1kNS5jCi0rX21kNSBtZDVtb2R1bGUuYyBtZDUuYwotIAotIAotICMgVGhlIF9zaGEgbW9kdWxlIGltcGxlbWVudHMgdGhlIFNIQSBjaGVja3N1bSBhbGdvcml0aG1zLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg3MDk1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLV90a2ludGVyIG1vZHVsZSBuZWVkcyB0ayBtb2R1bGUgYWxvbmcgd2l0aCB0Y2wuIHRrIGlzIG5vdCB5ZXQgaW50ZWdyYXRlZAotaW4geW9jdG8gc28gd2Ugc2tpcCB0aGUgY2hlY2sgZm9yIHRoaXMgbW9kdWxlLgotQXZvaWQgYSB3YXJuaW5nIGJ5IG5vdCBhZGRpbmcgdGhpcyBtb2R1bGUgdG8gbWlzc2luZyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLUFsc28gc2ltcGx5IGRpc2FibGUgdGhlIHRrIG1vZHVsZSBzaW5jZSBpdHMgbm90IGluIERFUEVORFMuCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLUluZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotQEAgLTE3ODMsMTAgKzE3ODMsMTIgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgc2VsZi5leHRlbnNpb25zLmV4dGVuZChleHRzKQotIAotICAgICAgICAgIyBDYWxsIHRoZSBtZXRob2QgZm9yIGRldGVjdGluZyB3aGV0aGVyIF90a2ludGVyIGNhbiBiZSBjb21waWxlZAotLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0rICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotIAotLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgotLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCi0rICAgICAgICAjIHRraW50ZXIgbW9kdWxlIHdpbGwgbm90IGJlIGF2YWxhaWJsZSBhcyB5b2N0bwotKyAgICAgICAgIyBkb2Vzbid0IGhhdmUgdGsgaW50ZWdyYXRlZCAoeWV0KQotKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKLSsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKLSAKLSAjIyAgICAgICAgICMgVW5jb21tZW50IHRoZXNlIGxpbmVzIGlmIHlvdSB3YW50IHRvIHBsYXkgd2l0aCB4eG1vZHVsZS5jCi0gIyMgICAgICAgICBleHQgPSBFeHRlbnNpb24oJ3h4JywgWyd4eG1vZHVsZS5jJ10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmE1ODIzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotc3VuYXVkaW9kZXYgbW9kdWxlIGlzIHN1bm9zIHNwZWNpZmljIHNvIHdlIGF2b2lkIGEgd2FybmluZyBieSBub3QgCi1hZGRpbmcgdGhpcyBtb2R1bGUgdG8gbWlzc2luZyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43LjEzL3NldHVwLnB5Ci1AQCAtMTY3MSw4ICsxNjcxLDkgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKLSAgICAgICAgICAgICAjIFN1bk9TIHNwZWNpZmljIG1vZHVsZXMKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdzdW5hdWRpb2RldicsIFsnc3VuYXVkaW9kZXYuYyddKSApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdzdW5hdWRpb2RldicpCi0rICAgICAgICAjIElmIHBsYXRmb3JtIGlzIG5vdCBzdW5vcyB3YXJuaW5nIGlzIHVzZWxlc3MKLSsgICAgICAgICNlbHNlOgotKyAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnc3VuYXVkaW9kZXYnKQotIAotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgICAjIF9zY3Byb3h5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NnaV9weS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2dpX3B5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTUwNGY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2dpX3B5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotTGliL2NnaS5weTogVXBkYXRlIHRoZSBzY3JpcHQgYXMgbWVudGlvbmVkIGluIHRoZSBjb21tZW50Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBQeXRob24tMi42LjYvTGliL2NnaS5weS5vcmlnCTIwMTAtMDgtMDEgMjI6MTQ6MjcuMDAwMDAwMDAwIC0wNTAwCi0rKysgUHl0aG9uLTIuNi42L0xpYi9jZ2kucHkJMjAxMS0wOS0yMSAxNToyODo0MC40NzgyMDg2MzEgLTA1MDAKLUBAIC0xLDEzICsxLDQgQEAKLS0jISAvdXNyL2xvY2FsL2Jpbi9weXRob24KLS0KLS0jIE5PVEU6IHRoZSBhYm92ZSAiL3Vzci9sb2NhbC9iaW4vcHl0aG9uIiBpcyBOT1QgYSBtaXN0YWtlLiAgSXQgaXMKLS0jIGludGVudGlvbmFsbHkgTk9UICIvdXNyL2Jpbi9lbnYgcHl0aG9uIi4gIE9uIG1hbnkgc3lzdGVtcwotLSMgKGUuZy4gU29sYXJpcyksIC91c3IvbG9jYWwvYmluIGlzIG5vdCBpbiAkUEFUSCBhcyBwYXNzZWQgdG8gQ0dJCi0tIyBzY3JpcHRzLCBhbmQgL3Vzci9sb2NhbC9iaW4gaXMgdGhlIGRlZmF1bHQgZGlyZWN0b3J5IHdoZXJlIFB5dGhvbiBpcwotLSMgaW5zdGFsbGVkLCBzbyAvdXNyL2Jpbi9lbnYgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgcHl0aG9uLiAgR3JhbnRlZCwKLS0jIGJpbmFyeSBpbnN0YWxsYXRpb25zIGJ5IExpbnV4IHZlbmRvcnMgb2Z0ZW4gaW5zdGFsbCBQeXRob24gaW4KLS0jIC91c3IvYmluLiAgU28gbGV0IHRob3NlIHZlbmRvcnMgcGF0Y2ggY2dpLnB5IHRvIG1hdGNoIHRoZWlyIGNob2ljZQotLSMgb2YgaW5zdGFsbGF0aW9uLgotKyMhIC91c3IvYmluL2VudiBweXRob24KLSAKLSAiIiJTdXBwb3J0IG1vZHVsZSBmb3IgQ0dJIChDb21tb24gR2F0ZXdheSBJbnRlcmZhY2UpIHNjcmlwdHMuCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZDZjNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotQXV0aG9yOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci1EYXRlOiAgIFN1biBNYXIgMjUgMDI6MDI6MjcgMjAxMiArMDIwMAotCi1UaGlzIHBhdGNoIHdhcyBhZGRlZCBmb3IgNjRiaXQgaG9zdCBtYWNoaW5lcy4gSW4gdGhlIGNvbXBpbGUgcHJvY2VzcyBweXRob24KLWlzIGNoZWNraW5nIGlmIHBsYXRmb3JtIGlzIGEgNjRiaXQgcGxhdGZvcm0gdXNpbmcgc3lzLm1heGludCB3aGljaCBpcyB0aGUgaG9zdCdzCi12YWx1ZS4gVGhlIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUgc28gdGhhdCBweXRob24gd291bGQgY2hlY2sgaWYgVEFSR0VUIG1hY2hpbmUKLWlzIDY0Yml0IG5vdCB0aGUgSE9TVCBtYWNoaW5lLiBJbiB0aGlzIHdheSB3aWxsIGhhdmUgImRsIiBhbmQgImltYWdlb3AiIG1vZHVsZXMKLWJ1aWx0IGlmIEhPU1QgbWFjaGluZSBpcyA2NGJpdCBidXQgdGhlIHRhcmdldCBtYWNoaW5lIGlzIDMyYml0LgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogUHl0aG9uLTIuNy4xMS9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTEub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuMTEvc2V0dXAucHkKLUBAIC0zNSw2ICszNSwyMSBAQCBDT01QSUxFRF9XSVRIX1BZREVCVUcgPSAoJy0td2l0aC1weWRlYnVnCi0gIyBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIHRvIGhvbGQgdGhlIGxpc3Qgb2YgbW9kdWxlcyB0byBiZSBkaXNhYmxlZC4KLSBkaXNhYmxlZF9tb2R1bGVfbGlzdCA9IFtdCi0gCi0rZGVmIHRhcmdldF9pc182NGJpdF9wbGF0Zm9ybSAoKToKLSsgICAgIiIiCi0rICAgIEluIGNhc2Ugb2YgY3Jvc3MtY29tcGlsZSwgc29tZSBtb2R1bGVzIGFyZSBub3QgYnVpbGQgYXMgc2V0dXAgY2hlY2tzIGlmIEhPU1QKLSsgICAgaXMgNjRiaXQgYW5kIG5vdCBUQVJHRVQuCi0rICAgIEFzIHB5dGhvbiB3YXMgYnVpbHQgZm9yIFRBUkdFVCB3ZSBjYW4gY2hlY2sgdGhpcyBpbiBweWNvbmZpZy5oIGluIHRoaXMgd2F5OgotKwlTaXplb2YgTE9ORyBvbiBhIDMyIGJpdCBwbGF0Zm9ybSBpcyA0IGJ5dGVzCi0rCVNpemVvZiBMT05HIG9uIGEgNjQgYml0IHBsYXRmb3JtIGlzIDggYnl0ZXMKLSsgICAgIiIiCi0rICAgIHB5Y29uZiA9IG9wZW4oInB5Y29uZmlnLmgiKS5yZWFkKCkKLSsgICAgYXV4ID0gcmUuc2VhcmNoKHIiI3MqZGVmaW5lXHMrU0laRU9GX0xPTkdccys4XHMqIiwgcHljb25mKQotKyAgICBpZiBhdXggaXMgbm90IE5vbmU6Ci0rCXJldHVybiBUcnVlCi0rICAgIGVsc2U6Ci0rCXJldHVybiBGYWxzZQotKwotIGRlZiBhZGRfZGlyX3RvX2xpc3QoZGlybGlzdCwgZGlyKToKLSAgICAgIiIiQWRkIHRoZSBkaXJlY3RvcnkgJ2RpcicgdG8gdGhlIGxpc3QgJ2Rpcmxpc3QnIChhdCB0aGUgZnJvbnQpIGlmCi0gICAgIDEpICdkaXInIGlzIG5vdCBhbHJlYWR5IGluICdkaXJsaXN0JwotQEAgLTcxNiw3ICs3MzEsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdhdWRpb29wJywgWydhdWRpb29wLmMnXSkgKQotIAotICAgICAgICAgIyBEaXNhYmxlZCBvbiA2NC1iaXQgcGxhdGZvcm1zCi0tICAgICAgICBpZiBzeXMubWF4c2l6ZSAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3TDoKLSsgICAgICAgIGlmIG5vdCB0YXJnZXRfaXNfNjRiaXRfcGxhdGZvcm0oKToKLSAgICAgICAgICAgICAjIE9wZXJhdGlvbnMgb24gaW1hZ2VzCi0gICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignaW1hZ2VvcCcsIFsnaW1hZ2VvcC5jJ10pICkKLSAgICAgICAgIGVsc2U6Ci1AQCAtMTU0NSw3ICsxNTYwLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2NvZGVjc18lcycgJSBsb2MpCi0gCi0gICAgICAgICAjIER5bmFtaWMgbG9hZGluZyBtb2R1bGUKLS0gICAgICAgIGlmIHN5cy5tYXhpbnQgPT0gMHg3ZmZmZmZmZjoKLSsgICAgICAgIGlmIG5vdCB0YXJnZXRfaXNfNjRiaXRfcGxhdGZvcm0oKToKLSAgICAgICAgICAgICAjIFRoaXMgcmVxdWlyZXMgc2l6ZW9mKGludCkgPT0gc2l6ZW9mKGxvbmcpID09IHNpemVvZihjaGFyKikKLSAgICAgICAgICAgICBkbF9pbmMgPSBmaW5kX2ZpbGUoJ2RsZmNuLmgnLCBbXSwgaW5jX2RpcnMpCi0gICAgICAgICAgICAgaWYgKGRsX2luYyBpcyBub3QgTm9uZSkgYW5kIChob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2F0aGVvcyddKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ2NTk1MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTggKzAsMCBAQAotIyBUaGlzIHNjcmlwdCBpcyB1c2VkIGFzIGEgYml0YmFrZSB0YXNrIHRvIGNyZWF0ZSBhIG5ldyBweXRob24gbWFuaWZlc3QKLSMgJCBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKLSMKLSMgT3VyIGdvYWwgaXMgdG8ga2VlcCBweXRob24tY29yZSBhcyBzbWFsbCBhcyBwb3NpYmxlIGFuZCBhZGQgb3RoZXIgcHl0aG9uCi0jIHBhY2thZ2VzIG9ubHkgd2hlbiB0aGUgdXNlciBuZWVkcyB0aGVtLCBoZW5jZSB3aHkgd2Ugc3BsaXQgdXBzdHJlYW0gcHl0aG9uCi0jIGludG8gc2V2ZXJhbCBwYWNrYWdlcy4KLSMKLSMgSW4gYSB2ZXJ5IHNpbXBsaXN0aWMgd2F5IHdoYXQgdGhpcyBkb2VzIGlzOiAKLSMgTGF1bmNoIHB5dGhvbiBhbmQgc2VlIHNwZWNpZmljYWxseSB3aGF0IGlzIHJlcXVpcmVkIGZvciBpdCB0byBydW4gYXQgYSBtaW5pbXVtCi0jCi0jIEdvIHRocm91Z2ggdGhlIHB5dGhvbi1tYW5pZmVzdCBmaWxlIGFuZCBsYXVuY2ggYSBzZXBhcmF0ZSB0YXNrIGZvciBldmVyeSBzaW5nbGUKLSMgb25lIG9mIHRoZSBmaWxlcyBvbiBlYWNoIHBhY2thZ2UsIHRoaXMgdGFzayB3aWxsIGNoZWNrIHdoYXQgd2FzIHJlcXVpcmVkIGZvciB0aGF0Ci0jIHNwZWNpZmljIG1vZHVsZSB0byBydW4sIHRoZXNlIG1vZHVsZXMgd2lsbCBiZSBjYWxsZWQgZGVwZW5kZW5jaWVzLgotIyBUaGUgb3V0cHV0IG9mIHN1Y2ggdGFzayB3aWxsIGJlIGEgbGlzdCBvZiB0aGUgbW9kdWxlcyBvciBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlCi0jIGZvdW5kIGZvciB0aGF0IGZpbGUuCi0jCi0jIFN1Y2ggb3V0cHV0IHdpbGwgYmUgcGFyc2VkIGJ5IHRoaXMgc2NyaXB0LCB3ZSB3aWxsIGxvb2sgZm9yIGVhY2ggZGVwZW5kZW5jeSBvbiB0aGUKLSMgbWFuaWZlc3QgYW5kIGlmIHdlIGZpbmQgdGhhdCBhbm90aGVyIHBhY2thZ2UgYWxyZWFkeSBpbmNsdWRlcyBpdCwgdGhlbiB3ZSB3aWxsIGFkZAotIyB0aGF0IHBhY2thZ2UgYXMgYW4gUkRFUEVORFMgdG8gdGhlIHBhY2thZ2Ugd2UgYXJlIGN1cnJlbnRseSBjaGVja2luZzsgaW4gY2FzZSB3ZSBkb250Ci0jIGZpbmQgdGhlIGN1cnJlbnQgZGVwZW5kZW5jeSBvbiBhbnkgb3RoZXIgcGFja2FnZSB3ZSB3aWxsIGFkZCBpdCB0byB0aGUgY3VycmVudCBwYWNrYWdlCi0jIGFzIHBhcnQgb2YgRklMRVMuCi0jCi0jCi0jIFRoaXMgd2F5IHdlIHdpbGwgY3JlYXRlIGEgbmV3IG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0IGR1cmluZwotIyB0aGlzIHByb2Nlc3MsIG9uIHRoaXMgbmV3IG1hbmlmZXN0IGVhY2ggcGFja2FnZSB3aWxsIGNvbnRhaW4gc3BlY2lmaWNhbGx5IG9ubHkKLSMgd2hhdCBpdCBuZWVkcyB0byBydW4uCi0jCi0jIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgd2hpY2ggd2UgdHJ5IHRvIGRlYWwgd2l0aCwgc3VjaCBhcyByZXBlYXRlZCBmaWxlcyBvbiBkaWZmZXJlbnQKLSMgcGFja2FnZXMsIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSBmb2xkZXJzLCB3aWxkY2FyZHMsIGFuZCBzcGVjaWFsIHBhY2thZ2VzLgotIyBJdHMgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgbWV0aG9kIG9ubHkgd29ya3MgZm9yIHB5dGhvbiBmaWxlcywgYW5kIHNoYXJlZAotIyBsaWJyYXJpZXMuIFN0YXRpYyBsaWJyYXJpZXMsIGhlYWRlciBmaWxlcyBhbmQgYmluYXJpZXMgbmVlZCB0byBiZSBkZWFsdCB3aXRoIG1hbnVhbGx5LgotIwotIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOSBhdCBnbWFpbCBkb3QgY29tPgotCi0KLWltcG9ydCBzeXMKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgY29sbGVjdGlvbnMKLQotIyBIYWNrIHRvIGdldCBuYXRpdmUgcHl0aG9uIHNlYXJjaCBwYXRoIChmb3IgZm9sZGVycyksIG5vdCBmb25kIG9mIGl0IGJ1dCBpdCB3b3JrcyBmb3Igbm93Ci1waXZvdD0ncmVjaXBlLXN5c3Jvb3QtbmF0aXZlJwotZm9yIHAgaW4gc3lzLnBhdGg6Ci0gIGlmIHBpdm90IGluIHA6Ci0gICAgbmF0aXZlbGliZm9sZGVyPXBbOnAuZmluZChwaXZvdCkrbGVuKHBpdm90KV0KLQotIyBFbXB0eSBkaWN0IHRvIGhvbGQgdGhlIHdob2xlIG1hbmlmZXN0Ci1uZXdfbWFuaWZlc3QgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCi0KLSMgQ2hlY2sgZm9yIHJlcGVhdGVkIGZpbGVzLCBmb2xkZXJzIGFuZCB3aWxkY2FyZHMKLWFsbGZpbGVzPVtdCi1yZXBlYXRlZD1bXQotd2lsZGNhcmRzPVtdCi0KLWhhc2ZvbGRlcnM9W10KLWFsbGZvbGRlcnM9W10KLQotZGVmIGlzRm9sZGVyKHZhbHVlKToKLSAgaWYgb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWInKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWI2NCcpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjMyJykpOgotICAgIHJldHVybiBUcnVlCi0gIGVsc2U6Ci0gICAgcmV0dXJuIEZhbHNlCi0KLWRlZiBwcmVwZW5kX2NvbW1lbnRzKGNvbW1lbnRzLCBqc29uX21hbmlmZXN0KToKLSAgICB3aXRoIG9wZW4oanNvbl9tYW5pZmVzdCwgJ3IrJykgYXMgbWFuaWZlc3Q6Ci0gICAgICAgIGpzb25fY29udGVudHMgPSBtYW5pZmVzdC5yZWFkKCkKLSAgICAgICAgbWFuaWZlc3Quc2VlaygwLCAwKQotICAgICAgICBtYW5pZmVzdC53cml0ZShjb21tZW50cyArIGpzb25fY29udGVudHMpCi0KLSMgUmVhZCBleGlzdGluZyBKU09OIG1hbmlmZXN0Ci13aXRoIG9wZW4oJ3B5dGhvbjItbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0OgotICAgICMgVGhlIEpTT04gZm9ybWF0IGRvZXNuJ3QgYWxsb3cgY29tbWVudHMgc28gd2UgaGFjayB0aGUgY2FsbCB0byBrZWVwIHRoZSBjb21tZW50cyB1c2luZyBhIG1hcmtlcgotICAgIG1hbmlmZXN0X3N0ciA9ICBtYW5pZmVzdC5yZWFkKCkKLSAgICBqc29uX3N0YXJ0ID0gbWFuaWZlc3Rfc3RyLmZpbmQoJyMgRU9DJykgKyA2ICMgRU9DICsgXG4KLSAgICBtYW5pZmVzdC5zZWVrKDApCi0gICAgY29tbWVudHMgPSBtYW5pZmVzdC5yZWFkKGpzb25fc3RhcnQpCi0gICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3QucmVhZCgpCi0gICAgb2xkX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQotCi0jIEZpcnN0IHBhc3MgdG8gZ2V0IGNvcmUtcGFja2FnZSBmdW5jdGlvbmFsaXR5LCBiZWNhdXNlIHdlIGJhc2UgZXZlcnl0aGluZyBvbiB0aGUgZmFjdCB0aGF0IGNvcmUgaXMgYWN0dWFsbHkgd29ya2luZwotIyBOb3QgZXhhY3RseSB0aGUgc2FtZSBzbyBpdCBzaG91bGQgbm90IGJlIGEgZnVuY3Rpb24KLXByaW50ICgiR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIGNvcmUgcGFja2FnZToiKQotCi0jIFNwZWNpYWwgY2FsbCB0byBjaGVjayBmb3IgY29yZSBwYWNrYWdlCi1vdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJ3B5dGhvbi1jb3JlLXBhY2thZ2UnXSkKLWZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6Ci0gICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjawotICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKLSAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCi0KLWZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAjIFBhc3MgaXQgZGlyZWN0bHkKLSAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGFzc3VtZSBpdCB3YXMgYWRkZWQgY29ycmVjdGx5IChtYW51YWxseSkKLSAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6Ci0gICAgIyBQYXNzIGl0IGRpcmVjdGx5Ci0gICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgIGNvbnRpbnVlCi0gICMgSWdub3JlIGVtcHR5IHZhbHVlcwotICBpZiB2YWx1ZSA9PSAnJzoKLSAgICBjb250aW51ZQotICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6Ci0gICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgIGNvbnRpbnVlCi0gICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgotICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKHZhbHVlKSkpWzBdCi0KLQotICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgotICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKLSAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKLSAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCi0gIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6Ci0gICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKLQotIyBXZSBjaGVjayB3aGljaCBwYWNrYWdlcyBpbmNsdWRlIGZvbGRlcnMKLWZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgotICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAgICAgICAgIHByaW50ICgnJXMgaXMgYSBmb2xkZXInICUgdmFsdWUpCi0gICAgICAgICAgICBpZiBrZXkgbm90IGluIGhhc2ZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgaGFzZm9sZGVycy5hcHBlbmQoa2V5KQotICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGFsbGZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgYWxsZm9sZGVycy5hcHBlbmQodmFsdWUpCi0KLWZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgotICAgICMgVXNlIGFuIGVtcHR5IGRpY3QgYXMgZGF0YSBzdHJ1Y3R1cmUgdG8gaG9sZCBkYXRhIGZvciBlYWNoIHBhY2thZ2UgYW5kIGZpbGwgaXQgdXAKLSAgICBuZXdfbWFuaWZlc3Rba2V5XSA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddID0gb2xkX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXQotICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddPVtdCi0gICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10gPSBbXQotCi0gICAgIyBBbGwgcGFja2FnZXMgc2hvdWxkIGRlcGVuZCBvbiBjb3JlCi0gICAgaWYga2V5ICE9ICdjb3JlJzoKLSAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKCdjb3JlJykKLQotICAgICMgSGFuZGxlIHNwZWNpYWwgY2FzZXMsIHdlIGFzc3VtZSB0aGF0IHdoZW4gdGhleSB3ZXJlIG1hbnVhbGx5IGFkZGVkIAotICAgICMgdG8gdGhlIG1hbmlmZXN0IHdlIGtuZXcgd2hhdCB3ZSB3ZXJlIGRvaW5nLgotICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCi0gICAgc3BlY2lhbF9wYWNrYWdlcz1bJ21pc2MnLCAnbW9kdWxlcycsICd0ZXN0cycsICdkZXYnXQotICAgIGlmIGtleSBpbiBzcGVjaWFsX3BhY2thZ2VzIG9yICdzdGF0aWNkZXYnIGluIGtleToKLSAgICAgICAgcHJpbnQoJ1Bhc3NpbmcgJXMgcGFja2FnZSBkaXJlY3RseScgJSBrZXkpCi0gICAgICAgIG5ld19tYW5pZmVzdFtrZXldPW9sZF9tYW5pZmVzdFtrZXldCi0gICAgICAgIGNvbnRpbnVlCi0KLSAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICMgV2UgYWxyZWFkeSBoYW5kbGVkIGNvcmUgb24gdGhlIGZpcnN0IHBhc3MKLSAgICAgICAgaWYga2V5ID09ICdjb3JlJzoKLSAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgotICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6Ci0gICAgICAgICAgICAjIFBhc3MgZm9sZGVycyBkaXJlY3RseQotICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlCi0gICAgICAgIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgotICAgICAgICAgICAgIyBQYXNzIGl0IGRpcmVjdGx5IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKLSAgICAgICAgaWYgdmFsdWUgPT0gJyc6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCi0gICAgICAgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KLQotICAgICAgICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgotICAgICAgICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKLSAgICAgICAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKLSAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCi0KLSAgICAgICAgIyBXZSBjYW4gcHJpbnQgZGVwZW5kZW5jaWVzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMKLSAgICAgICAgI3ByaW50IChvdXRwdXQpCi0gICAgICAgICMgT3V0cHV0IHdpbGwgaGF2ZSBhbGwgZGVwZW5kZW5jaWVzCi0gICAgICAgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotCi0gICAgICAgICAgICAjIFdhcm5pbmc6IFRoaXMgZmlyc3QgcGFydCBpcyB1Z2x5Ci0gICAgICAgICAgICAjIE9uZSBvZiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2FzIGZvdW5kLCBjb3VsZCBiZSBpbnNpZGUgb2Ygb25lIG9mIHRoZSBmb2xkZXJzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcGFja2FnZQotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgaGFwcGVucyBzbyB3ZSBjYW4gYWRkIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcgdGhlIGZvbGRlciBhcyBhbiBSREVQRU5EUwotICAgICAgICAgICAgIyBlLmcuIEZvbGRlciBlbmNvZGluZ3MgY29udGFpbmVkIGluIGNvZGVjcwotICAgICAgICAgICAgIyBUaGlzIHdvdWxkIGJlIHNvbHZlZCBpZiBubyBwYWNrYWdlcyBpbmNsdWRlZCBhbnkgZm9sZGVycwotCi0gICAgICAgICAgICAjIFRoaXMgY2FuIGJlIGRvbmUgaW4gdHdvIHdheXM6Ci0gICAgICAgICAgICAjIDEgLSBXZSBhc3N1bWUgdGhhdCBpZiB3ZSB0YWtlIG91dCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aCB3ZSB3b3VsZCBnZXQKLSAgICAgICAgICAgICMgICB0aGUgZm9sZGVyIHN0cmluZywgdGhlbiB3ZSB3b3VsZCBjaGVjayBpZiBmb2xkZXIgc3RyaW5nIGlzIGluIHRoZSBsaXN0IG9mIGZvbGRlcnMKLSAgICAgICAgICAgICMgICBUaGlzIHdvdWxkIG5vdCB3b3JrIGlmIGEgcGFja2FnZSBjb250YWlucyBhIGZvbGRlciB3aGljaCBjb250YWlucyBhbm90aGVyIGZvbGRlcgotICAgICAgICAgICAgIyAgIGUuZy4gcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWUgIGZvbGRlcl9zdHJpbmc9IHBhdGgvZm9sZGVyMS9mb2xkZXIyCi0gICAgICAgICAgICAjICAgZm9sZGVyX3N0cmluZyB3b3VsZCBub3QgbWF0Y2ggYW55IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIDIgLSBXZSBkbyBpdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgY2hlY2tpbmcgaWYgdGhlIGZvbGRlciBpcyBjb250YWluZWQgaW4gdGhlIHBhdGgKLSAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgotICAgICAgICAgICAgIyAgIGlzIGZvbGRlcl9zdHJpbmcgaW5zaWRlIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lPywgCi0gICAgICAgICAgICAjICAgWWVzLCBpdCB3b3JrcywgYnV0IHdlIHdhc3RlIGEgY291cGxlIG9mIG1pbGxpc2Vjb25kcy4KLQotICAgICAgICAgICAgaW5Gb2xkZXJzPUZhbHNlCi0gICAgICAgICAgICBmb3IgZm9sZGVyIGluIGFsbGZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgIyBUaGUgbW9kdWxlIGNvdWxkIGhhdmUgYSBkaXJlY3RvcnkgbmFtZWQgYWZ0ZXIgaXQsIGUuZy4geG1sLCBpZiB3ZSB0YWtlIG91dCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aAotICAgICAgICAgICAgICAgICMgd2UnbGwgZW5kIHVwIHdpdGggJHtsaWJkaXJ9LCBhbmQgd2Ugd2FudCAke2xpYmRpcn0veG1sCi0gICAgICAgICAgICAgICAgaWYgaXNGb2xkZXIoaXRlbSk6Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrX3BhdGggPSBpdGVtCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tfcGF0aCA9IG9zLnBhdGguZGlybmFtZShpdGVtKQotICAgICAgICAgICAgICAgIGlmIGZvbGRlciBpbiBjaGVja19wYXRoIDoKLSAgICAgICAgICAgICAgICAgICAgaW5Gb2xkZXJzID0gVHJ1ZSAjIERpZCB3ZSBmaW5kIGEgZm9sZGVyPwotICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IEZhbHNlICMgU2Vjb25kIGZsYWcgdG8gYnJlYWsgaW5uZXIgZm9yCi0gICAgICAgICAgICAgICAgICAgICMgTG9vcCBvbmx5IHRocm91Z2ggcGFja2FnZXMgd2hpY2ggY29udGFpbiBmb2xkZXJzCi0gICAgICAgICAgICAgICAgICAgIGZvciBrZXlmb2xkZXIgaW4gaGFzZm9sZGVyczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkZXJGb3VuZCA9PSBGYWxzZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCJDaGVja2luZyBmb2xkZXIgJXMgb24gcGFja2FnZSAlcyIgJSAoaXRlbSxrZXlmb2xkZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlX2ZvbGRlciBpbiBvbGRfbWFuaWZlc3Rba2V5Zm9sZGVyXVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9mb2xkZXI9PWZvbGRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgnJXMgZm91bmQgaW4gJXMnICUgKGZvbGRlciwga2V5Zm9sZGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5Zm9sZGVyIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXSBhbmQga2V5Zm9sZGVyICE9IGtleToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQoa2V5Zm9sZGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICAjIEEgZm9sZGVyIHdhcyBmb3VuZCBzbyB3ZSdyZSBkb25lIHdpdGggdGhpcyBpdGVtLCB3ZSBjYW4gZ28gb24KLSAgICAgICAgICAgIGlmIGluRm9sZGVyczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAjIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBpdCBvbiB0aGUgZGljdGlvbmFyeSBzaW5jZSBpdCBjb3VsZCBkZXBlbmQgb24gYSAocHJldmlvdXNseSBjaGVja2VkKSBtb2R1bGUKLSAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAgICAgICAgICMgSGFuZGxlIGNvcmUgYXMgYSBzcGVjaWFsIHBhY2thZ2UsIHdlIGFscmVhZHkgZGlkIGl0IHNvIHdlIHBhc3MgaXQgdG8gTkVXIGRhdGEgc3RydWN0dXJlIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgaWYga2V5PT0nY29yZSc6Ci0gICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIEZJTEVTJyAlIChpdGVtLCBrZXkpKQotICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgotICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQotCi0gICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcwotICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQotCi0gICAgICAgICAgICAgICAgZWxzZToKLQotICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoaXMgZGVwZW5kZW5jeSBpcyBhbHJlYWR5IGNvbnRhaW5lZCBvbiBhbm90aGVyIHBhY2thZ2UsIHNvIHdlIGFkZCBpdAotICAgICAgICAgICAgICAgICAgICAjIGFzIGFuIFJERVBFTkRTLCBvciBpZiBpdHMgbm90LCBpdCBtZWFucyBpdCBzaG91bGQgYmUgY29udGFpbmVkIG9uIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgICMgcGFja2FnZSwgc28gd2Ugc2hvdWxkIGFkZCBpdCB0byBGSUxFUwotICAgICAgICAgICAgICAgICAgICBmb3IgbmV3a2V5IGluIG9sZF9tYW5pZmVzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgiQ2hlY2tpbmcgJXMgIiAlIGl0ZW0gKyAiIGluICVzIiAlIG5ld2tleSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gaW4gb2xkX21hbmlmZXN0W25ld2tleV1bJ2ZpbGVzJ106ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2VyZSBuZXN0aW5nLCB3ZSBuZWVkIHRvIGNoZWNrIGl0cyBub3QgdGhlIHNhbWUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld2tleSE9a2V5KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5ld2tleSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBpdCB0byB0aGUgbmV3IG1hbmlmZXN0IGRhdGEgc3RydWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzJyAlIChuZXdrZXksIGtleSwgaXRlbSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQobmV3a2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgRklMRVMnICUgKGl0ZW0sIGtleSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXRzIG5vdCBhbiBSREVQLCBzbyBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCcqJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQotCi1wcmludCAoJ1RoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIHJlcGVhdGVkIChjb250YWluZWQgaW4gbW9yZSB0aGFuIG9uZSBwYWNrYWdlKSwgcGxlYXNlIGNoZWNrIHdoaWNoIHBhY2thZ2Ugc2hvdWxkIGdldCBpdDonKQotcHJpbnQgKHJlcGVhdGVkKQotcHJpbnQoJ1RoZSBmb2xsb3dpbmcgZmlsZXMgY29udGFpbiB3aWxkY2FyZHMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQotcHJpbnQod2lsZGNhcmRzKQotcHJpbnQoJ1RoZSBmb2xsb3dpbmcgZmlsZXMgY29udGFpbiBmb2xkZXJzLCBwbGVhc2UgY2hlY2sgdGhleSBhcmUgbmVjZXNzYXJ5JykKLXByaW50KGhhc2ZvbGRlcnMpCi0KLSMgU29ydCBpdCBqdXN0IHNvIGl0IGxvb2tzIG5pY2UgCi1mb3Iga2V5IGluIG5ld19tYW5pZmVzdDoKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5zb3J0KCkKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5zb3J0KCkKLQotIyBDcmVhdGUgdGhlIG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0Ci13aXRoIG9wZW4oJ3B5dGhvbjItbWFuaWZlc3QuanNvbi5uZXcnLCd3JykgYXMgb3V0ZmlsZToKLSAgICBqc29uLmR1bXAobmV3X21hbmlmZXN0LG91dGZpbGUsIGluZGVudD00KQotCi1wcmVwZW5kX2NvbW1lbnRzKGNvbW1lbnRzLCdweXRob24yLW1hbmlmZXN0Lmpzb24ubmV3JykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNzMwOTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0VtYmVkZGVkIHNwZWNpZmljXQotCi1UaGlzIHBhdGNoIGZpeGVzIGlzc3Vpbmcgd2l0aCBkaWZmZXJlbnQgbGliZGlyIGxpa2UgbGliNjQuCi1UaGlzIHBhdGNoIG1ha2VzIHRoZSBuYXRpdmUgcHl0aG9uIGJpbmFyeSBtb2R1bGVzIGZpbmRhYmxlCi1pbiB0aGUgaW5zdGFsbCBwcm9jZXNzIG9mIHRoZSBob3N0IHB5dGhvbi4KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IDIwMTIvMDMvMTQKLQotVXBkYXRlZCBmb3IgcHl0aG9uIDIuNy4zCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotRGF0ZTogMjAxMi8wNS8wMQotCi1SZWJhc2VkIGZvciBweXRob24tMi43LjkKLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi0KLUluZGV4OiBQeXRob24tMi43LjkvTGliL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjkvTGliL3N5c2NvbmZpZy5weQotQEAgLTksNyArOSw3IEBAIF9JTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICdwb3NpeF9wcmVmaXgnOiB7Ci0gICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotLSAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3twbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotQEAgLTY3LDcgKzY3LDcgQEAgX0lOU1RBTExfU0NIRU1FUyA9IHsKLSAgICAgJ3Bvc2l4X3VzZXInOiB7Ci0gICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLS0gICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLUluZGV4OiBQeXRob24tMi43LjkvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgotQEAgLTEwNDYsMjcgKzEwNDYsMjcgQEAgbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTAotIAkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMgXAotIAkJCSQoREVTVERJUikkKExJQkRFU1QpL2Rpc3R1dGlscy90ZXN0cyA7IFwKLSAJZmkKLS0JUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLSsJUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKToke0NST1NTUFlUSE9OUEFUSH0gJChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkgLWYgXAotIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCi0gCQkkKERFU1RESVIpJChMSUJERVNUKQotLQlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0rCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9JChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkgLWYgXAotIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCi0gCQkkKERFU1RESVIpJChMSUJERVNUKQotLQktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAotIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKLS0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAotIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKLS0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKLS0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0Ci0gCi0gIyBDcmVhdGUgdGhlIFBMQVRESVIgc291cmNlIGRpcmVjdG9yeSwgaWYgb25lIHdhc24ndCBkaXN0cmlidXRlZC4uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2Zsb2F0LWVuZGlhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZmxvYXQtZW5kaWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTVjOTBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZmxvYXQtZW5kaWFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLVB5dGhvbiB1c2VzIEFDX1JVTl9JRkVMU0UgdG8gZGV0ZXJtaW5lIHRoZSBieXRlIG9yZGVyIGZvciBmbG9hdHMgYW5kIGRvdWJsZXMsCi1hbmQgZmFsbHMgYmFjayBvbnRvICJJIGRvbid0IGtub3ciIGlmIGl0IGNhbid0IHJ1biBjb2RlLiAgVGhpcyByZXN1bHRzIGluCi1jcmlwcGxlZCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluIFB5dGhvbiwgYW5kIHRoZSByZWdyZXNzaW9uIHRlc3RzIGZhaWwuCi0KLUluc3RlYWQgb2YgcnVubmluZyBjb2RlLCB0YWtlIGEgbWFjcm8gZnJvbSBhdXRvY29uZi1hcmNoaXZlIHdoaWNoIGNvbXBpbGVzIEMKLXdpdGggYSBzcGVjaWFsIGRvdWJsZSBpbiB3aGljaCBoYXMgYW4gQVNDSUkgcmVwcmVzZW50YXRpb24sIGFuZCB0aGVuIGdyZXBzIHRoZQotYmluYXJ5IHRvIGlkZW50aWZ5IHRoZSBmb3JtYXQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMjUzZjQ3YjI4MTIwYzQyY2ZlNTNhNGUyZjVlZDBhYjBlZDQ2OWRlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzQGJ1cnRvbmluaS5jb20+Ci1EYXRlOiBXZWQsIDE5IFNlcCAyMDE4IDA3OjI1OjQ4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNsb3NlcyBicG8tMzQ1ODU6IERvbid0IGRvIHJ1bnRpbWUgdGVzdCB0byBnZXQgZmxvYXQgYnl0ZQotIG9yZGVyLiAoR0gtOTA4NSkKLQotQ3VycmVudGx5IGNvbmZpZ3VyZS5hYyB1c2VzIEFDX1JVTl9JRkVMU0UgdG8gZGV0ZXJtaW5lIHRoZSBieXRlIG9yZGVyIG9mIGRvdWJsZXMsIGJ1dCB0aGlzIHNpbGVudGx5IGZhaWxzIHVuZGVyIGNyb3NzIGNvbXBpbGF0aW9uIGFuZCBQeXRob24gZG9lc24ndCBkbyBmbG9hdHMgcHJvcGVybHkuCi0KLUluc3RlYWQsIHN0ZWFsIGEgbWFjcm8gZnJvbSBhdXRvY29uZi1hcmNoaXZlIHdoaWNoIGNvbXBpbGVzIGNvZGUgdXNpbmcgbWFnaWMgZG91YmxlcyAod2hpY2ggZW5jb2RlIHRvIEFTQ0lJKSBhbmQgZ3JlcCBmb3IgdGhlIHJlcHJlc2VudGF0aW9uIGluIHRoZSBiaW5hcnkuCi0KLVJGQyBiZWNhdXNlIHRoaXMgZG9lc24ndCB5ZXQgaGFuZGxlIHRoZSB3ZWlyZCBhbmNpZW50IEFSTXY0IE9BQkkgJ21peGVkLWVuZGlhbicgZW5jb2RpbmcgcHJvcGVybHkuIFRoaXMgZW5jb2RpbmcgaXMgYW5jaWVudCBhbmQgSSBkb24ndCBiZWxpZXZlIHRoZSB1bmlvbiBvZiAiUHl0aG9uIDMuOCB1c2VycyIgYW5kICJPQUJJIHVzZXJzIiBoYXMgYW55dGhpbmcgaW4uIFNob3VsZCB0aGUgc3VwcG9ydCBmb3IgdGhpcyBqdXN0IGJlIGRyb3BwZWQgdG9vPyBBbHRlcm5hdGl2ZWx5LCBzb21lb25lIHdpbGwgbmVlZCB0byBmaW5kIGFuIE9BQkkgdG9vbGNoYWluIHRvIHZlcmlmeSB0aGUgZW5jb2Rpbmcgb2YgdGhlIG1hZ2ljIGRvdWJsZS4KLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIC4uLi9CdWlsZC8yMDE4LTA5LTE4LTE2LTI4LTMxLmJwby0zNDU4NS5DR011MGgucnN0IHwgIDMgKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNzYgKysrKy0tLS0tLS0tLS0tLS0tLS0KLSBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCAgICAgICAgICAgICAgICAgICB8IDgzICsrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L0J1aWxkLzIwMTgtMDktMTgtMTYtMjgtMzEuYnBvLTM0NTg1LkNHTXUwaC5yc3QKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTEzZDU0NjlkMC4uNzY3MjczNTM5NiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzgzNSw3NCArMzgzNSwyNCBAQCBmaV0sCi0gIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgotICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGxpdHRsZS1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlLCBbCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0taW50IG1haW4oKSB7Ci0tICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOwotLSAgICBpZiAobWVtY21wKCZ4LCAiXHgwNVx4MDRceDAzXHgwMlx4MDFceGZmXHgzZlx4NDMiLCA4KSA9PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybiAxOwotLX0KLS1dXSldLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlPW5vXSldKQotLUFDX01TR19SRVNVTFQoJGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLS10aGVuCi0tICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLS0gIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0tICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCi0tZmkKLS0KLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGJpZy1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlLCBbCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0taW50IG1haW4oKSB7Ci0tICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOwotLSAgICBpZiAobWVtY21wKCZ4LCAiXHg0M1x4M2ZceGZmXHgwMVx4MDJceDAzXHgwNFx4MDUiLCA4KSA9PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybiAxOwotLX0KLS1dXSldLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X2JpZ19lbmRpYW5fZG91YmxlPW5vXSldKQotLUFDX01TR19SRVNVTFQoJGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLStBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgotK2lmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAieWVzIgotIHRoZW4KLSAgIEFDX0RFRklORShET1VCTEVfSVNfQklHX0VORElBTl9JRUVFNzU0LCAxLAotICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLSAgICB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotLWZpCi0tCi0tIyBTb21lIEFSTSBwbGF0Zm9ybXMgdXNlIGEgbWl4ZWQtZW5kaWFuIHJlcHJlc2VudGF0aW9uIGZvciBkb3VibGVzLgotLSMgV2hpbGUgUHl0aG9uIGRvZXNuJ3QgY3VycmVudGx5IGhhdmUgZnVsbCBzdXBwb3J0IGZvciB0aGVzZSBwbGF0Zm9ybXMKLS0jIChzZWUgZS5nLiwgaXNzdWUgMTc2MjU2MSksIHdlIGNhbiBhdCBsZWFzdCBtYWtlIHN1cmUgdGhhdCBmbG9hdCA8LT4gc3RyaW5nCi0tIyBjb252ZXJzaW9ucyB3b3JrLgotLUFDX01TR19DSEVDS0lORyh3aGV0aGVyIEMgZG91YmxlcyBhcmUgQVJNIG1peGVkLWVuZGlhbiBJRUVFIDc1NCBiaW5hcnk2NCkKLS1BQ19DQUNIRV9WQUwoYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDFceGZmXHgzZlx4NDNceDA1XHgwNFx4MDNceDAyIiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9taXhlZF9lbmRpYW5fZG91YmxlPW5vXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlIiA9IHllcwotK2VsaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9ICJubyIKLSB0aGVuCi0rICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLSsgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0rICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCi0rZWxzZQotKyAgIyBTb21lIEFSTSBwbGF0Zm9ybXMgdXNlIGEgbWl4ZWQtZW5kaWFuIHJlcHJlc2VudGF0aW9uIGZvciBkb3VibGVzLgotKyAgIyBXaGlsZSBQeXRob24gZG9lc24ndCBjdXJyZW50bHkgaGF2ZSBmdWxsIHN1cHBvcnQgZm9yIHRoZXNlIHBsYXRmb3JtcwotKyAgIyAoc2VlIGUuZy4sIGlzc3VlIDE3NjI1NjEpLCB3ZSBjYW4gYXQgbGVhc3QgbWFrZSBzdXJlIHRoYXQgZmxvYXQgPC0+IHN0cmluZwotKyAgIyBjb252ZXJzaW9ucyB3b3JrLgotKyAgIyBGTE9BVF9XT1JEU19CSUdFTkRJQU4gZG9lc250IGFjdHVhbGx5IGRldGVjdCB0aGlzIGNhc2UsIGJ1dCBpZiBpdCdzIG5vdCBiaWcKLSsgICMgb3IgbGl0dGxlLCB0aGVuIGl0IG11c3QgYmUgdGhpcz8KLSAgIEFDX0RFRklORShET1VCTEVfSVNfQVJNX01JWEVEX0VORElBTl9JRUVFNzU0LCAxLAotICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLSAgICBpbiBBUk0gbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKV0pCi1kaWZmIC0tZ2l0IGEvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQgYi9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjIxNmI5MGQ4MDMKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci1AQCAtMCwwICsxLDgzIEBACi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLmh0bWwKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjCi0rIyBTWU5PUFNJUwotKyMKLSsjICAgQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4oW0FDVElPTi1JRi1UUlVFXSwgW0FDVElPTi1JRi1GQUxTRV0sIFtBQ1RJT04tSUYtVU5LTk9XTl0pCi0rIwotKyMgREVTQ1JJUFRJT04KLSsjCi0rIyAgIENoZWNrcyB0aGUgb3JkZXJpbmcgb2Ygd29yZHMgd2l0aGluIGEgbXVsdGktd29yZCBmbG9hdC4gVGhpcyBjaGVjayBpcwotKyMgICBuZWNlc3NhcnkgYmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gY2VydGFpbiBBUk0gc3lzdGVtcyksIHRoZSBmbG9hdAotKyMgICB3b3JkIG9yZGVyaW5nIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgYnl0ZSBvcmRlcmluZy4gSW4gYSBtdWx0aS13b3JkCi0rIyAgIGZsb2F0IGNvbnRleHQsICJiaWctZW5kaWFuIiBpbXBsaWVzIHRoYXQgdGhlIHdvcmQgY29udGFpbmluZyB0aGUgc2lnbgotKyMgICBiaXQgaXMgZm91bmQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHRoZSBsb3dlc3QgYWRkcmVzcy4gVGhpcwotKyMgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5zcGlyZWQgYnkgdGhlIEFDX0NfQklHRU5ESUFOIG1hY3JvIGluIGF1dG9jb25mLgotKyMKLSsjICAgVGhlIGVuZGlhbm5lc3MgaXMgZGV0ZWN0ZWQgYnkgZmlyc3QgY29tcGlsaW5nIEMgY29kZSB0aGF0IGNvbnRhaW5zIGEKLSsjICAgc3BlY2lhbCBkb3VibGUgZmxvYXQgdmFsdWUsIHRoZW4gZ3JlcHBpbmcgdGhlIHJlc3VsdGluZyBvYmplY3QgZmlsZSBmb3IKLSsjICAgY2VydGFpbiBzdHJpbmdzIG9mIEFTQ0lJIHZhbHVlcy4gVGhlIGRvdWJsZSBpcyBzcGVjaWFsbHkgY3JhZnRlZCB0byBoYXZlCi0rIyAgIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBhIHNpbXBsZSBzdHJpbmcuIEluIHRoaXMKLSsjICAgaW1wbGVtZW50YXRpb24sIHRoZSBzdHJpbmcgIm5vb25zZWVzIiB3YXMgc2VsZWN0ZWQgYmVjYXVzZSB0aGUKLSsjICAgaW5kaXZpZHVhbCB3b3JkIHZhbHVlcyAoIm5vb24iIGFuZCAic2VlcyIpIGFyZSBwYWxpbmRyb21lcywgdGh1cyBtYWtpbmcKLSsjICAgdGhpcyB0ZXN0IGJ5dGUtb3JkZXIgYWdub3N0aWMuIElmIGdyZXAgZmluZHMgdGhlIHN0cmluZyAibm9vbnNlZXMiIGluCi0rIyAgIHRoZSBvYmplY3QgZmlsZSwgdGhlIHRhcmdldCBwbGF0Zm9ybSBzdG9yZXMgZmxvYXQgd29yZHMgaW4gYmlnLWVuZGlhbgotKyMgICBvcmRlci4gSWYgZ3JlcCBmaW5kcyAic2Vlc25vb24iLCBmbG9hdCB3b3JkcyBhcmUgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KLSsjICAgSWYgbmVpdGhlciB2YWx1ZSBpcyBmb3VuZCwgdGhlIHVzZXIgaXMgaW5zdHJ1Y3RlZCB0byBzcGVjaWZ5IHRoZQotKyMgICBvcmRlcmluZy4KLSsjCi0rIyBMSUNFTlNFCi0rIwotKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggRGFuaWVsIEFtZWxhbmcgPGRhbkBhbWVsYW5nLm5ldD4KLSsjCi0rIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSsjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotKyMgICB3YXJyYW50eS4KLSsKLSsjc2VyaWFsIDExCi0rCi0rQUNfREVGVU4oW0FYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOXSwKLSsgIFtBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIGZsb2F0IHdvcmQgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLAotKyAgICAgICAgICAgICAgICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLCBbCi0rCi0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotKwotK2RvdWJsZSBkID0gOTA5MDQyMzQ5NjcwMzY4MTAzMzc0NzA0Nzg5MDU1MDUwMTE0NzYyMTE2OTI3MzU2MTU2MzIwMTQ3OTcxMjA4NDQwNTM0ODg4NjU4MTY2OTUyNzM3MjM0NjkwOTc4NTgwNTYyNTc1MTcwMjAxOTEyNDc0ODc0Mjk1MTY5MzIxMzA1MDM1NjA2NTAwMDIzMjc1NjQ1MTc1NzA3Nzg0ODAyMzY3MjQ1MjUxNDA1MjAxMjEzNzE3MzkyMDE0OTY1NDAxMzI2NDAxMDk5Nzc3Nzk0MjA1NjU3NzY1Njg5NDI1OTIuMDsKLSsKLStdXSldLCBbCi0rCi0raWYgZ3JlcCBub29uc2VlcyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0rICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj15ZXMKLStmaQotK2lmIGdyZXAgc2Vlc25vb24gY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotKyAgaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8KLSsgIGVsc2UKLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotKyAgZmkKLStmaQotKwotK10pXSkKLSsKLStjYXNlICRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiBpbgotKyAgeWVzKQotKyAgICBtNF9kZWZhdWx0KFskMV0sCi0rICAgICAgW0FDX0RFRklORShbRkxPQVRfV09SRFNfQklHRU5ESUFOXSwgMSwKLSsgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBzdG9yZXMgd29yZHMgd2l0aGluIGZsb2F0cwotKyAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBmaXJzdF0pXSkgOzsKLSsgIG5vKQotKyAgICAkMiA7OwotKyAgKikKLSsgICAgbTRfZGVmYXVsdChbJDNdLAotKyAgICAgIFtBQ19NU0dfRVJST1IoWwotKwotK1Vua25vd24gZmxvYXQgd29yZCBvcmRlcmluZy4gWW91IG5lZWQgdG8gbWFudWFsbHkgcHJlc2V0Ci0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8gKG9yIHllcykgYWNjb3JkaW5nIHRvIHlvdXIgc3lzdGVtLgotKwotKyAgICBdKV0pIDs7Ci0rZXNhYwotKwotK10pIyBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2U3YzZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZ2V0X21vZHVsZV9kZXBzMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0jIFRoaXMgc2NyaXB0IGlzIGxhdW5jaGVkIG9uIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggcHl0aG9uIG1vZHVsZQotIyBJdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHByaW50cyAKLSMgdGhlbSBvdXQsIHRoZSBvdXRwdXQgb2YgdGhpcyBleGVjdXRpb24gd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKLSMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLCB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbiBkZWFsdCBvbiBjcmVhdGVfbWFuaWZlc3QucHkKLSMKLSMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgotCi0KLSMgV2UgY2FuIGdldCBhIGxvZyBwZXIgbW9kdWxlLCBmb3IgYWxsIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlIGZvdW5kLCBidXQgaXRzIG1lc3N5LgotZGVidWc9RmFsc2UKLQotaW1wb3J0IHN5cwotCi0jIFdlIGNhbiBnZXQgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIHdoaWNoIGFyZSBjdXJyZW50bHkgcmVxdWlyZWQgdG8gcnVuIHB5dGhvbgotIyBzbyB3ZSBydW4gcHl0aG9uLWNvcmUgYW5kIGdldCBpdHMgbW9kdWxlcywgd2UgdGhlbiBpbXBvcnQgd2hhdCB3ZSBuZWVkCi0jIGFuZCBjaGVjayB3aGF0IG1vZHVsZXMgYXJlIGN1cnJlbnRseSBydW5uaW5nLCBpZiB3ZSBzdWJzdHJhY3QgdGhlbSBmcm9tIHRoZQotIyBtb2R1bGVzIHdlIGhhZCBpbml0aWFsbHksIHdlIGdldCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlIHdlIGltcG9ydGVkLgotCi0jIFdlIHVzZSBpbXBvcnRsaWIgdG8gYWNoaWV2ZSB0aGlzLCBzbyB3ZSBhbHNvIG5lZWQgdG8ga25vdyB3aGF0IG1vZHVsZXMgaW1wb3J0bGliIG5lZWRzCi1pbXBvcnQgaW1wb3J0bGliCi0KLWNvcmVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCi0KLWRlZiBmaXhfcGF0aChkZXBfcGF0aCk6Ci0gICAgaW1wb3J0IG9zCi0gICAgIyBXZSBET05UIHdhbnQgdGhlIHBhdGggb24gb3VyIEhPU1Qgc3lzdGVtCi0gICAgcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKLSAgICBkZXBfcGF0aD1kZXBfcGF0aFtkZXBfcGF0aC5maW5kKHBpdm90KStsZW4ocGl2b3QpOl0KLQotICAgIGlmICcvdXNyL2JpbicgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9iaW4nJyR7YmluZGlyfScpCi0KLSAgICAjIEhhbmRsZSBtdWx0aWxpYiwgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PwotICAgIGlmICcvdXNyL2xpYjMyJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYjMyJywnJHtsaWJkaXJ9JykKLSAgICBpZiAnL3Vzci9saWI2NCcgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWI2NCcsJyR7bGliZGlyfScpCi0gICAgaWYgJy91c3IvbGliJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYicsJyR7bGliZGlyfScpCi0gICAgaWYgJy91c3IvaW5jbHVkZScgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9pbmNsdWRlJywnJHtpbmNsdWRlZGlyfScpCi0gICAgaWYgJ19faW5pdF9fLicgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gIG9zLnBhdGguc3BsaXQoZGVwX3BhdGgpWzBdCi0KLSAgICAjIElmIGEgKi5weWMgZmlsZSB3YXMgaW1wb3J0ZWQsIHdlIHJlcGxhY2UgaXQgd2l0aCAqLnB5IChzaW5jZSB3ZSBkZWFsIHdpdGggUFlDcyBvbiBjcmVhdGVfbWFuaWZlc3QpCi0gICAgaWYgJy5weWMnIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy5weWMnLCcucHknKQotCi0gICAgcmV0dXJuIGRlcF9wYXRoCi0KLSMgTW9kdWxlIHRvIGltcG9ydCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50Ci1jdXJyZW50X21vZHVsZSA9ICBzdHIoc3lzLmFyZ3ZbMV0pLnJzdHJpcCgpCi1pZihkZWJ1Zz09VHJ1ZSk6Ci0JbG9nID0gb3BlbignbG9nXyVzJyAlIGN1cnJlbnRfbW9kdWxlLCd3JykKLSAgICAgICAgbG9nLndyaXRlKCdNb2R1bGUgJXMgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzOlxuJyAlIGN1cnJlbnRfbW9kdWxlKQotdHJ5OgotICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCclcycgJSBjdXJyZW50X21vZHVsZSkKLWV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgIGlmIChkZWJ1Zz09VHJ1ZSk6Ci0gICAgICAgIGxvZy53cml0ZSgnTW9kdWxlIHdhcyBub3QgZm91bmQnKQotICAgIHBhc3MKLQotCi0jIEdldCBjdXJyZW50IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGRpZiB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIHNwZWNpZmljIGRlcHMgZm9yIHRoaXMgbW9kdWxlCi1tb2R1bGVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCi0KLSMgV2UgaGFuZGxlIHRoZSBjb3JlIHBhY2thZ2UgKDFzdCBwYXNzIG9uIGNyZWF0ZV9tYW5pZmVzdC5weSkgYXMgYSBzcGVjaWFsIGNhc2UKLWlmIGN1cnJlbnRfbW9kdWxlID09ICdweXRob24tY29yZS1wYWNrYWdlJzoKLSAgICBkaWYgPSBjb3JlX2RlcHMKLWVsc2U6Ci0gICAgZGlmID0gbW9kdWxlX2RlcHMtY29yZV9kZXBzCi0KLQotIyBDaGVjayB3aGVyZSBlYWNoIGRlcGVuZGVuY3kgY2FtZSBmcm9tCi1mb3IgaXRlbSBpbiBkaWY6Ci0gICAgZGVwX3BhdGg9JycKLSAgICB0cnk6Ci0gICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6Ci0gICAgICAgICAgICBsb2cud3JpdGUoJ0NhbGxpbmc6IHN5cy5tb2R1bGVzWycgKyAnJXMnICUgaXRlbSArICddLl9fZmlsZV9fXG4nKQotICAgICAgICBkZXBfcGF0aCA9IHN5cy5tb2R1bGVzWyclcycgJSBpdGVtXS5fX2ZpbGVfXwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAjIERlYWxzIHdpdGggdGhyZWFkIChidWlsdGluIG1vZHVsZSkgbm90IGhhdmluZyBfX2ZpbGVfXyBhdHRyaWJ1dGUKLQlpZiBkZWJ1Zz09VHJ1ZToKLSAgICAgICAgICAgIGxvZy53cml0ZShpdGVtICsgJyAnKQotICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkKLQkgICAgbG9nLndyaXRlKCdcbicpCi0gICAgICAgICAgICBwYXNzCi0gICAgZXhjZXB0IE5hbWVFcnJvciBhcyBlOgotICAgICAgICAjIERlYWxzIHdpdGggTmFtZUVycm9yOiBuYW1lICdkZXBfcGF0aCcgaXMgbm90IGRlZmluZWQKLSAgICAgICAgIyBiZWNhdXNlIG1vZHVsZSBpcyBub3QgZm91bmQgKHdhc24ndCBjb21waWxlZD8pLCBlLmcuIGJkZHNtCi0gICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6Ci0gICAgICAgICAgICBsb2cud3JpdGUoaXRlbSsnICcpIAotICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIHBhc3MKLQotICAgICMgU2l0ZS1jdXN0b21pemUgaXMgYSBzcGVjaWFsIGNhc2Ugc2luY2Ugd2UgKE9wZW5FbWJlZGRlZCkgcHV0IGl0IHRoZXJlIG1hbnVhbGx5Ci0gICAgaWYgJ3NpdGVjdXN0b21pemUnIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9ICcke2xpYmRpcn0vcHl0aG9uMi43L3NpdGVjdXN0b21pemUucHknCi0gICAgICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAotICAgICAgICBwcmludCAoZGVwX3BhdGgpCi0gICAgICAgIGNvbnRpbnVlCi0KLSAgICBkZXBfcGF0aCA9IGZpeF9wYXRoKGRlcF9wYXRoKQotCi0gICAgaWYgKGRlYnVnPT1UcnVlKToKLSAgICAgICAgbG9nLndyaXRlKGRlcF9wYXRoKydcbicpCi0KLSAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKLSAgICBwcmludCAoZGVwX3BhdGgpCi0KLWlmIGRlYnVnPT1UcnVlOgotICAgIGxvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhYWZiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotd2hlbiBidWlsZGluZyBweXRob24gZm9yIHFlbXV4ODYtNjQgb24gdWJ1bnR1IDExLjEwLzY0Yml0Ci1pdCBncm9wZXMgaW50byBob3N0IGluY2x1ZGVzIGFuZCB0aGVuIG1peGVzIHRoZW0gd2l0aCBjcm9zcwotaW5jbHVkZXMgYW5kIGFzIGEgcmVzdWx0IHNvbWUgbW9kdWxlcyBmYWlsIHRvIGNvbXBpbGUgYW5kIGxpbmsKLW9uZSBvZiB0aGUgbW9kdWxlcyBpcyBweXRob24tZWxlbWVudHRyZWUgd2hpY2ggaXMgdGhlbiBub3QKLWZvdW5kIGR1cmluZyBpbWFnZSBjcmVhdGlvbgotCi1Qcm9ibGUgaXMgdGhhdCBzZXR1cC5weSB0cmllcyB0byBhZGQgbmF0aXZlIGluY2x1ZGVzIHRoYXQgbmV3ZXIKLXVidW50dSBoYXMgaW50cm9kdWNlZCBmb3IgbXVsdGlhcmNoIHN1cHBvcnQuIEJ1dCB0aGF0IHNob3VsZAotb25seSBoYXBwZW4gZm9yIG5hdGl2ZSBidWlsZHMgYW5kIG5vdCBjcm9zcyBidWlsZGluZyBweXRob24KLXNvIHdlIGFkZCBhIGNoZWNrIGhlcmUuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYmEyZDI0Mi4uYmY4NTliZSAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTM5Myw2ICszOTMsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gCi0gICAgICAgICBpZiBub3QgZmluZF9leGVjdXRhYmxlKCdkcGtnLWFyY2hpdGVjdHVyZScpOgotICAgICAgICAgICAgIHJldHVybgotKyAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoJ0NST1NTX0NPTVBJTEUnKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgIG9wdCA9ICcnCi0gICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgb3B0ID0gJy10JyArIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSE9TVF9HTlVfVFlQRScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI0YmMxNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotQEAgLTc1OCw2ICs3NTgsMTAgQEAgU3VuT1MqKQotICAgICA7OwotIGVzYWMKLSAKLStBQ19TVUJTVChMSUIpCi0rQUNfTVNHX0NIRUNLSU5HKExJQikKLStMSUI9IlNFRE1FTElCTEVBRiIKLStBQ19NU0dfUkVTVUxUKCRMSUIpCi0gCi0gQUNfU1VCU1QoTElCUkFSWSkKLSBBQ19NU0dfQ0hFQ0tJTkcoTElCUkFSWSkKLUluZGV4OiBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAotKysrIFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAotQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKLSAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0UGxhdGZvcm0odm9pZCk7Ci0rUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldExpYih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci1AQCAtMjIsNiArMjIsOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQotIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCi0gCi0gCi0rbGlibmFtZSA9IHN5cy5saWIKLSsKLSBpZiBzeXMudmVyc2lvbiA8ICIyLjIiOgotICAgICBXSU5ET1dTX1NDSEVNRSA9IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlJywKLUBAIC00MSw4ICs0Myw4IEBAIGVsc2U6Ci0gCi0gSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAndW5peF9wcmVmaXgnOiB7Ci0tICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3B1cmVsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydC8kZGlzdF9uYW1lJywKLSAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCi0gICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC0xMTksOCArMTE5LDExIEBAIGRlZiBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW4KLSAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAotIAotICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6Ci0tICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWIiLCAicHl0aG9uIiArIGdldF9weXRob25fdmVyc2lvbigpKQotKyAgICAgICAgaWYgcGxhdF9zcGVjaWZpYyBvciBzdGFuZGFyZF9saWI6Ci0rICAgICAgICAgICAgbGliID0gc3lzLmxpYgotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBsaWIgPSAibGliIgotKyAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwgbGliLCAicHl0aG9uIiArIGdldF9weXRob25fdmVyc2lvbigpKQotICAgICAgICAgaWYgc3RhbmRhcmRfbGliOgotICAgICAgICAgICAgIHJldHVybiBsaWJweXRob24KLSAgICAgICAgIGVsc2U6Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLUBAIC0zNzUsNyArMzc1LDcgQEAgY2xhc3MgRG9jOgotICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKLSAKLSAgICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsCi0tICAgICAgICAgICAgICAgICAgYmFzZWRpcj1vcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICBiYXNlZGlyPW9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJzeXMubGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIitzeXMudmVyc2lvblswOjNdKSk6Ci0gICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKLSAKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQotQEAgLTI4OCwxMyArMjg4LDE4IEBAIGRlZiBnZXRzaXRlcGFja2FnZXMoKToKLSAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMmVteCcsICdyaXNjb3MnKToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1weXRob24iKSkKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsICJzaXRlLXB5dGhvbiIpKQotKyAgICAgICAgICAgIGlmIHN5cy5saWIgIT0gImxpYiI6Ci0rICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCi0rICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwotIAotIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvc3lzY29uZmlnLnB5Ci1AQCAtNywxMCArNywxMCBAQCBmcm9tIG9zLnBhdGggaW1wb3J0IHBhcmRpciwgcmVhbHBhdGgKLSAKLSBfSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAncG9zaXhfcHJlZml4JzogewotLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0tICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotKyAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSsgICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotLSAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3twbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCi1AQCAtNjUsMTAgKzY1LDEwIEBAIF9JTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKLSAgICAgICAgIH0sCi0gICAgICdwb3NpeF91c2VyJzogewotLSAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotLSAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSsgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotLSAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5Ci1AQCAtNCwxMCArNCwxMSBAQAotIGltcG9ydCB1bml0dGVzdAotIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUKLSBkbCA9IGltcG9ydF9tb2R1bGUoJ2RsJywgZGVwcmVjYXRlZD1UcnVlKQotK2ltcG9ydCBzeXMKLSAKLSBzaGFyZWRsaWJzID0gWwotLSAgICAoJy91c3IvbGliL2xpYmMuc28nLCAnZ2V0cGlkJyksCi0tICAgICgnL2xpYi9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0rICAgICgnL3Vzci8nK3N5cy5saWIrJy9saWJjLnNvJywgJ2dldHBpZCcpLAotKyAgICAoJy8nK3N5cy5saWIrJy9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9iaW4vY3lnd2luMS5kbGwnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9saWIvbGliYy5keWxpYicsICdnZXRwaWQnKSwKLSAgICAgXQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci1AQCAtMjUyLDEyICsyNTIsMTYgQEAgY2xhc3MgSGVscGVyRnVuY3Rpb25zVGVzdHModW5pdHRlc3QuVGVzdAotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQotICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgotICAgICAgICAgICAgICMgT1MgWCwgTGludXgsIEZyZWVCU0QsIGV0YwotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQotICAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLCAncHl0aG9uJyArIHN5cy52ZXJzaW9uWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YW50ZWQgaW4gZGlycykKLSAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCAnbGliJywgJ3NpdGUtcHl0aG9uJykKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMV0sIHdhbnRlZCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FudGVkIGluIGRpcnMpCi0rICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgc3lzLmxpYiwgJ3B5dGhvbicgKyBzeXMudmVyc2lvbls6M10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FudGVkIGluIGRpcnMpCi0rICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgc3lzLmxpYiwgJ3NpdGUtcHl0aG9uJykKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FudGVkIGluIGRpcnMpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zCi0gICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdHJhY2UucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3RyYWNlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdHJhY2UucHkKLUBAIC03NTQsMTAgKzc1NCwxMCBAQCBkZWYgbWFpbihhcmd2PU5vbmUpOgotICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCi0gCi0gICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkZXhlY19wcmVmaXgiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKLSAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KLUBAIC05MSw2ICs5MSw3IEBAIFBZX0NGTEFHUz0JJChDRkxBR1MpICQoQ1BQRkxBR1MpICQoQ0ZMQUcKLSAKLSAjIE1hY2hpbmUtZGVwZW5kZW50IHN1YmRpcmVjdG9yaWVzCi0gTUFDSERFUD0JQE1BQ0hERVBACi0rTElCPQkJQExJQkAKLSAKLSAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKLSBNVUxUSUFSQ0g9CUBNVUxUSUFSQ0hACi1AQCAtMTEwLDcgKzExMSw3IEBAIExJQkRJUj0JCUBsaWJkaXJACi0gTUFORElSPQkJQG1hbmRpckAKLSBJTkNMVURFRElSPQlAaW5jbHVkZWRpckAKLSBDT05GSU5DTFVERURJUj0JJChleGVjX3ByZWZpeCkvaW5jbHVkZQotLVNDUklQVERJUj0JJChwcmVmaXgpL2xpYgotK1NDUklQVERJUj0JJChwcmVmaXgpL0BMSUJACi0gCi0gIyBEZXRhaWxlZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcwotIEJJTkxJQkRFU1Q9CSQoTElCRElSKS9weXRob24kKFZFUlNJT04pCi1AQCAtNjQ1LDYgKzY0Niw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKLSAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKLSAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCi0gCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCi0rCQktRExJQj0nIiQoTElCKSInIFwKLSAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwotIAotIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCi1AQCAtNjkzLDcgKzY5NSw3IEBAIHJlZ2VuLWFzdDoKLSBQeXRob24vY29tcGlsZS5vIFB5dGhvbi9zeW10YWJsZS5vIFB5dGhvbi9hc3QubzogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKHNyY2RpcikvSW5jbHVkZS9QeXRob24tYXN0LmgKLSAKLSBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0tCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLURQTEFURk9STT0nIiQoTUFDSERFUCkiJyAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSsJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1ETElCPSciJChMSUIpIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0gCi0gUHl0aG9uL2ltcG9ydGRsLm86ICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotIAkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1JJChETElOQ0xESVIpIC1vICRAICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCi1AQCAtMTAwLDYgKzEwMCwxMyBAQAotICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKLSAjZW5kaWYKLSAKLSsjZGVmaW5lIExJQl9QWVRIT04gTElCICIvcHl0aG9uIiBWRVJTSU9OCi0rCi0rI2lmbmRlZiBQWVRIT05QQVRICi0rI2RlZmluZSBQWVRIT05QQVRIIFBSRUZJWCAiLyIgTElCX1BZVEhPTiAiOiIgXAotKyAgICAgICAgICAgICAgRVhFQ19QUkVGSVggIi8iIExJQl9QWVRIT04gIi9saWItZHlubG9hZCIKLSsjZW5kaWYKLSsKLSAjaWZuZGVmIExBTkRNQVJLCi0gI2RlZmluZSBMQU5ETUFSSyAib3MucHkiCi0gI2VuZGlmCi1AQCAtMTA4LDcgKzExNSw3IEBAIHN0YXRpYyBjaGFyIHByZWZpeFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyIGV4ZWNfcHJlZml4W01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgcHJvZ3BhdGhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKLS1zdGF0aWMgY2hhciBsaWJfcHl0aG9uW10gPSAibGliL3B5dGhvbiIgVkVSU0lPTjsKLStzdGF0aWMgY2hhciBsaWJfcHl0aG9uW10gPSBMSUJfUFlUSE9OOwotIAotIHN0YXRpYyB2b2lkCi0gcmVkdWNlKGNoYXIgKmRpcikKLUluZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwotQEAgLTEwLDMgKzEwLDEzIEBAIFB5X0dldFBsYXRmb3JtKHZvaWQpCi0gewotIAlyZXR1cm4gUExBVEZPUk07Ci0gfQotKwotKyNpZm5kZWYgTElCCi0rI2RlZmluZSBMSUIgImxpYiIKLSsjZW5kaWYKLSsKLStjb25zdCBjaGFyICoKLStQeV9HZXRMaWIodm9pZCkKLSt7Ci0rCXJldHVybiBMSUI7Ci0rfQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCi1AQCAtMTQzNyw2ICsxNDM3LDggQEAgX1B5U3lzX0luaXQodm9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKLSsgICAgU0VUX1NZU19GUk9NX1NUUklORygibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldExpYigpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygicHJlZml4IiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJhYjQxZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1XaGVuIHVzaW5nIG1ha2UgLWogd2l0aCB0aGUgJ2luc3RhbGwnIHRhcmdldCwgaXQncyBwb3NzaWJsZSBmb3IgYWx0YmluaW5zdGFsbAotKHdoaWNoIG5vcm1hbGx5IGNyZWF0ZXMgQklORElSKSBhbmQgbGliYWluc3RhbGwgKHdoaWNoIGRvZXNuJ3QsIHRob3VnaCBpdAotaW5zdGFsbHMgcHl0aG9uLWNvbmZpZyB0aGVyZSkgdG8gcmFjZSwgcmVzdWx0aW5nIGluIGEgZmFpbHVyZSBkdWUgdG8KLWF0dGVtcHRpbmcgdG8gaW5zdGFsbCBweXRob24tY29uZmlnIGludG8gYSBub25leGlzdGVudCBCSU5ESVIuIEVuc3VyZSBpdCBhbHNvCi1leGlzdHMgaW4gdGhlIGxpYmFpbnN0YWxsIHRhcmdldC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBQeXRob24tMi43LjMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjMvTWFrZWZpbGUucHJlLmluCi1AQCAtMTE4Nyw3ICsxMTg3LDcgQEAKLSBMSUJQQz0JCSQoTElCRElSKS9wa2djb25maWcKLSAKLSBsaWJhaW5zdGFsbDoJQERFRl9NQUtFX1JVTEVAIHB5dGhvbi1jb25maWcKLS0JQGZvciBpIGluICQoTElCRElSKSAkKExJQlApICQoTElCUEwpICQoTElCUEMpOyBcCi0rCUBmb3IgaSBpbiAkKExJQkRJUikgJChMSUJQKSAkKExJQlBMKSAkKExJQlBDKSAkKEJJTkRJUik7IFwKLSAJZG8gXAotIAkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXAotIAkJCWVjaG8gIkNyZWF0aW5nIGRpcmVjdG9yeSAkJGkiOyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZmNhYWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSA3MTQ0N2YwNDk3OWIyNjdmODg2NjU3M2I2N2E0MzQwYjI3MTlkNzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE0OjEwOjQzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBwYXNzIG1pc3NpbmcgbGlicmFyaWVzIHRvIEV4dGVuc2lvbiBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotCi1JbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKLS4uLgotY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKLUF1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+Ci1EYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAotCi0gICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQotICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCi0uLi4KLShzZWUgZGlmZiBpbiBzZXR1cC5weSkKLUl0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKLXRoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgotCi1JbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCi1zZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKLShzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCi1gX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCi1hbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgotc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KLQotVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgotaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKLUlmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCi1sb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCi0KLVN1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgotb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKLW11bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCi0uLi4KLT4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLT4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCi1UcnVlCi0+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKLS4uLgotCi1BbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMjk5OV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNTQwNTRjMi4uOTY0NmJmYyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE1ODYsOCArMTU4NiwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6Ci0gICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0gICAgICAgICAgICAgbGlicmFyaWVzID0gW10KLS0KLS0gICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIExpbnV4IGFuZCBvdGhlciB1bmljZXMKLSsgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnKSk6Ci0rICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0rICAgICAgICAgICAgbGlicmFyaWVzID0gWydwdGhyZWFkJ10KLSsgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE90aGVyIHVuaWNlcwotICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQotICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncnQnXQotIAotQEAgLTE2MTAsNiArMTYxMiw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9USFJFQUQnKToKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCAoIEV4dGVuc2lvbignX211bHRpcHJvY2Vzc2luZycsIG11bHRpcHJvY2Vzc2luZ19zcmNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9bWFjcm9zLml0ZW1zKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9WyJNb2R1bGVzL19tdWx0aXByb2Nlc3NpbmciXSkpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfbXVsdGlwcm9jZXNzaW5nJykKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24tMi43LjMtcmVtb3ZlLWJzZGItcnBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE2YmUwYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVJlbW92ZSB0aGUgUlBBVEggdG8gYXZvaWQgUUEgaXNzdWUgd2FybmluZy4KLQotUlA6IEFkZGVkIHNlY29uZGFyeSB1bm5lY2Vzc2FyeSBycGF0aCB0byB0aGUgbGlzdCAyMDEyLzgvNwotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLQotCi1JbmRleDogUHl0aG9uLTIuNy4zL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4zLm9yaWcvc2V0dXAucHkJMjAxMi0wOC0wNyAxMDo0MTo1OC41NjAxMzI1MjkgKzAwMDAKLSsrKyBQeXRob24tMi43LjMvc2V0dXAucHkJMjAxMi0wOC0wNyAxMTowOTo0Ny44NTIwOTQ1MTUgKzAwMDAKLUBAIC0xMDQyLDcgKzEwNDIsNiBAQAotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX2JzZGRiJywgWydfYnNkZGIuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzID0gWydic2RkYi5oJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1kYmxpYl9kaXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPWRibGliX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWRiX2luY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1kYmxpYnMpKQotICAgICAgICAgZWxzZToKLUBAIC0xMjUyLDcgKzEyNTEsNiBAQAotICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJidWlsZGluZyBkYm0gdXNpbmcgYmRiIgotICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignZGJtJywgWydkYm1tb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1kYmxpYl9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1kYl9pbmNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSEFWRV9CRVJLREJfSCcsIE5vbmUpLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24gYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI1MmU4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDExMzggKzAsMCBAQAotIyBETyBOT1QgKGVudGlyZWx5KSBtb2RpZnkgdGhpcyBmaWxlIG1hbnVhbGx5LCBwbGVhc2UgcmVhZC4KLSMKLSMgSU1QT1JUQU5UIE5PVEU6Ci0jIFBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2sgcmVsaWVzIG9uIHRoZSBmYWN0IHRoZSB0aGUKLSMgdGFyZ2V0IGFuZCBuYXRpdmUgUHl0aG9uIHBhY2thZ2VzIGFyZSB0aGUgc2FtZSwgYW5kIGl0IGFsc28gbmVlZHMgdG8gYmUgZXhlY3V0ZWQKLSMgd2l0aCBhIGZ1bGx5IHdvcmtpbmcgbmF0aXZlIHBhY2thZ2UgKHdpdGggYWxsIHRoZSBQQUNLQUdFQ09ORklHcyBlbmFibGVkIGFuZCBhbGwKLSMgYW5kIGFsbCB0aGUgbW9kdWxlcyBzaG91bGQgYmUgd29ya2luZywgY2hlY2sgbG9nLmRvX2NvbXBpbGUpLCBvdGhlcndpc2UgdGhlIHNjcmlwdAotIyB3aWxsIGZhaWwgdG8gZmluZCBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LCB0aGlzIG5vdGUgaXMgdmFsaWQgZWl0aGVyIGlmIHlvdSBhcmUKLSMgdXBncmFkaW5nIHRvIGEgbmV3IFB5dGhvbiB2ZXJzaW9uIG9yIGFkZGluZyBhIG5ldyBwYWNrYWdlLgotIwotIwotIyBJZiB5b3UgYXJlIGFkZGluZyBhIG5ldyBwYWNrYWdlIHBsZWFzZSBmb2xsb3cgdGhlIG5leHQgc3RlcHM6Ci0jICAgICBIb3cgdG8gYWRkIGEgbmV3IHBhY2thZ2U6Ci0jICAgICAtIElmIGEgdXNlciB3YW50cyB0byBhZGQgYSBuZXcgcGFja2FnZSBhbGwgdGhhdCBoYXMgdG8gYmUgZG9uZSBpczoKLSMgICAgIE1vZGlmeSB0aGUgcHl0aG9uMi1tYW5pZmVzdC5qc29uIGZpbGUsIGFuZCBhZGQgdGhlIHJlcXVpcmVkIGZpbGUocykgdG8gdGhlIEZJTEVTIGxpc3QsCi0jICAgICBmaWxsIHVwIHRoZSBTVU1NQVJZIHNlY3Rpb24gYXMgd2VsbCwgdGhlIHNjcmlwdCBzaG91bGQgaGFuZGxlIGFsbCB0aGUgcmVzdC4KLSMKLSMgICAgIFJlYWwgZXhhbXBsZToKLSMgICAgIFdlIHdhbnQgdG8gYWRkIGEgd2ViIGJyb3dzZXIgcGFja2FnZSwgaW5jbHVkaW5nIHRoZSBmaWxlIHdlYmJyb3dzZXIucHkKLSMgICAgIHdoaWNoIGF0IHRoZSBtb21lbnQgaXMgb24gcHl0aG9uLW1pc2MuCi0jICAgICAid2ViYnJvd3NlciI6IHsKLSMgICAgICAgICAiZmlsZXMiOiBbIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvd2ViYnJvd3Nlci5weSJdLAotIyAgICAgICAgICJyZGVwZW5kcyI6IFtdLAotIyAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBXZWIgQnJvd3NlciBzdXBwb3J0In0KLSMKLSMgICAgICogTm90ZSB0aGF0IHRoZSByZGVwZW5kcyBmaWVsZCB3YXMgbGVmdCBlbXB0eQotIwotIyAgICAgV2UgcnVuICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0IGFuZCB0aGUgcmVzdWx0aW5nIG1hbmlmZXN0Ci0jICAgICBzaG91bGQgYmUgY29tcGxldGVkIGFmdGVyIGEgZmV3IHNlY29uZHMsIHNob3dpbmcgc29tZXRoaW5nIGxpa2U6Ci0jICAgICAid2ViYnJvd3NlciI6IHsKLSMgICAgICAgICAiZmlsZXMiOiBbIiR7bGliZGlyfS9weXRob24yLjcvd2ViYnJvd3Nlci5weSJdLAotIyAgICAgICAgICJyZGVwZW5kcyI6IFsiY29yZSIsImZjbnRsIiwiaW8iLCJwaWNrbGUiLCJzaGVsbCIsInN1YnByb2Nlc3MiXSwKLSMgICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gV2ViIEJyb3dzZXIgc3VwcG9ydCJ9Ci0jCi0jCi0jIElmIHlvdSBhcmUgdXBncmFkaW5nIFB5dGhvbiB0byBhIG5ldyB2ZXJzaW9uIHBsZWFzZSBmb2xsb3cgdGhlIG5leHQgc3RlcHM6Ci0jICAgICBBZnRlciBlYWNoIFB5dGhvbiB1cGdyYWRlLCB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2sgc2hvdWxkIGJlIGV4ZWN1dGVkLCBiZWNhdXNlIHdlCi0jICAgICBkb24ndCBjb250cm9sIHdoYXQgY2hhbmdlcyBvbiB1cHN0cmVhbSBQeXRob24sIHNvLCBzb21lIG1vZHVsZSBkZXBlbmRlbmN5Ci0jICAgICBtaWdodCBoYXZlIGNoYW5nZWQgd2l0aG91dCB1cyByZWFsaXppbmcgaXQsIGEgY2VydGFpbiBtb2R1bGUgY2FuIGVpdGhlciBoYXZlCi0jICAgICBtb3JlIG9yIGxlc3MgZGVwZW5kZW5jaWVzLCBvciBjb3VsZCBiZSBkZXBlbmRpbmcgb24gYSBuZXcgZmlsZSB0aGF0IHdhcyBqdXN0Ci0jICAgICBjcmVhdGVkIG9uIHRoZSBuZXcgcmVsZWFzZSBhbmQgZm9yIG9idmlvdXMgcmVhc29ucyB3ZSB3b3VsZG4ndCBoYXZlIGl0IG9uIG91cgotIyAgICAgb2xkIG1hbmlmZXN0LCBhbGwgb2YgdGhlc2UgaXNzdWVzIHdvdWxkIGNhdXNlIHJ1bnRpbWUgZXJyb3JzIG9uIG91ciBzeXN0ZW0uCi0jCi0jICAgICAtIFVwZ3JhZGUgYm90aCB0aGUgbmF0aXZlIGFuZCB0YXJnZXQgUHl0aG9uIHBhY2thZ2VzIHRvIGEgbmV3IHZlcnNpb24KLSMgICAgIC0gUnVuIHRoZSBjcmVhdGVfbWFuaWZlc3QgdGFzayBmb3IgdGhlIHRhcmdldCBQeXRob24gcGFja2FnZSBhcyBpdHMgc2hvd24gYmVsb3c6Ci0jCi0jICAgICAkIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAotIwotIyAgICAgVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVwbGFjZSB5b3VyIG1hbmlmZXN0IGZpbGUgbG9jYXRlZCB1bmRlciB0aGUgUHl0aG9uIGRpcmVjdG9yeQotIyAgICAgd2l0aCBhbiBuZXcgb25lLCB3aGljaCBjb250YWlucyB0aGUgbmV3IGRlcGVuZGVuY2llcyAoaWYgYW55KS4KLSMKLSMgICAgIFNldmVyYWwgdGhpbmdzIGNvdWxkIGhhdmUgZ29uZSB3cm9uZyBoZXJlLCBJIHdpbGwgdHJ5IHRvIGV4cGxhaW4gYSBmZXc6Ci0jCi0jICAgICBhKSBBIG5ldyBmaWxlIHdhcyBpbnRyb2R1Y2VkIG9uIHRoaXMgcmVsZWFzZSwgZS5nLiBzaGEzKi5zbzoKLSMgICAgICAgIFRoZSB0YXNrIHdpbGwgY2hlY2sgd2hhdCBpdHMgbmVlZGVkIHRvIGltcG9ydCBldmVyeSBtb2R1bGUsIG1vcmUgdGhhbiBvbmUgbW9kdWxlIHdvdWxkCi0jICAgICAgICB3b3VsZCBwcm9iYWJseSBkZXBlbmQgb24gc2hhMyouc28sIGFsdGhvdWdoIG9ubHkgb25lIG1vZHVsZSBzaG91bGQgY29udGFpbiBpdC4KLSMKLSMgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIHRhc2ssIHRoZSBuZXcgbWFuaWZlc3Qgd2lsbCBoYXZlIHRoZSBzaGEzKi5zbyBmaWxlIG9uIG1vcmUgdGhhbiBvbmUKLSMgICAgICAgIG1vZHVsZSwgeW91IG5lZWQgdG8gbWFudWFsbHkgZGVjaWRlIHdoaWNoIG9uZSBvZiB0aGVtIHNob3VsZCBnZXQgaXQgYW5kIGRlbGV0ZSBpdCBmcm9tCi0jICAgICAgICB0aGUgb3RoZXJzLCBmb3IgZXhhbXBsZSBzaGEzKi5zbyBzaG91bGQgbGlrZWx5IGJlIG9uICR7UE59LWNyeXB0LgotIyAgICAgICAgT25jZSB5b3UgaGF2ZSBkZWxldGVkIGZyb20gdGhlIG90aGVycyB5b3UgbmVlZCB0byBydW4gdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrIGFnYWluLAotIyAgICAgICAgdGhpcyB3aWxsIHBvcHVsYXRlIHRoZSBvdGhlciBtb2R1bGUncyByZGVwZW5kcyBmaWVsZHMsIHdpdGggJHtQTn0tY3J5cHQgYW5kIHlvdSBzaG91bGQgYmUKLSMgICAgICAgIGdvb2QgdG8gZ28uCi0jCi0jICAgICBiKSBUaGUgbmF0aXZlIHBhY2thZ2Ugd2Fzbid0IGJ1aWx0IGNvcnJlY3RseSBhbmQgaXRzIG1pc3NpbmcgYSBjZXJ0YWluIG1vZHVsZToKLSMgICAgICAgIEFzIG1lbnRpb25lZCBiZWZvcmUsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbmF0aXZlIHBhY2thZ2Ugd2FzIGJ1aWx0IHdpdGggYWxsIHRoZSBtb2R1bGVzCi0jICAgICAgICBiZWNhdXNlIGl0IGlzIHVzZWQgYXMgYmFzZSB0byBidWlsZCB0aGUgbWFuaWZlc3QgZmlsZSwgeW91IG5lZWQgdG8gbWFudWFsbHkgY2hlY2sgbG9nLmRvX2NvbXBpbGUKLSMgICAgICAgIHNpbmNlIGl0IHdvbid0IGVycm9yIG91dCB0aGUgY29tcGlsZSBmdW5jdGlvbiBpZiBpdHMgb25seSBtaXNzaW5nIGEgY291cGxlIG9mIG1vZHVsZXMuCi0jCi0jICAgICAgICBlLmcuIG1pc3NpbmcgdGhlIF91dWlkIG1vZHVsZSwgbG9nLmRvX2NvbXBpbGUgd291bGQgc2hvdyB0aGUgZm9sbG93aW5nOgotIyAgICAgICAgUHl0aG9uIGJ1aWxkIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSEKLSMgICAgICAgIFRoZSBuZWNlc3NhcnkgYml0cyB0byBidWlsZCB0aGVzZSBvcHRpb25hbCBtb2R1bGVzIHdlcmUgbm90IGZvdW5kOgotIyAgICAgICAgX3V1aWQKLSMKLSMgICAgICAgIFdoYXQgd2lsbCBoYXBwZW4gaGVyZSBpcyB0aGF0IHRoZSBuZXcgbWFuaWZlc3Qgd291bGQgbm90IGJlIGF3YXJlIHRoYXQgdGhlIF91dWlkIG1vZHVsZSBleGlzdHMsIHNvCi0jICAgICAgICBub3Qgb25seSB3ZSB3b24ndCBrbm93IG9mIGFueSBkZXBlbmRlbmNpZXMgdG8gaXQsIGJ1dCBhbHNvLCB0aGUgX3V1aWQqIGZpbGVzIHdpbGwgYmUgcGFja2FnZWQgb24KLSMgICAgICAgIHRoZSBtaXNjIHBhY2thZ2UgKHdoaWNoIGlzIHdoZXJlIGFueSBmaWxlIHRoYXQgZG9lc24ndCBiZWxvbmcgYW55d2hlcmUgZWxzZSBlbmRzIHVwKS4KLSMKLSMgICAgICAgIFRoaXMgd2lsbCBldmVudHVhbGx5IGNhdXNlIHJ1bnRpbWUgZXJyb3JzIG9uIG91ciBzeXN0ZW0gaWYgd2UgZG9uJ3QgaW5jbHVkZSB0aGUgbWlzYyBwYWNrYWdlIG9uCi0jICAgICAgICBvbiBvdXIgaW1hZ2UsIGJlY2F1c2UgdGhlIF91dWlkIGZpbGVzIHdpbGwgYmUgbWlzc2luZy4KLSMgICAgICAgIElmIHdlIGJ1aWxkIHRoZSBfdXVpZCBtb2R1bGUgY29ycmVjdGx5IGFuZCBydW4gdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrIHRoZSBfdXVpZCBmaWxlcyB3aWxsIGJlCi0jICAgICAgICBkZXRlY3RlZCBjb3JyZWN0bHkgYWxvbmcgd2l0aCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgd2Ugd2lsbCBnZXQgYSB3b3JraW5nIG1hbmlmZXN0LgotIwotIyAgICAgICAgVGhpcyBpcyB0aGUgcmVhc29uIHdoeSBpdCBpcyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBmdWxseSB3b3JraW5nIG5hdGl2ZSBidWlsZCwKLSMgICAgICAgIHNvIHdlIGNhbiBhdm9pZCB0aGVzZSBlcnJvcnMuCi0jCi0jCi0jCi0jIERPIE5PVCBNT0RJRlkgVEhFIE5FWFQgTElORSEsIElUIElTIFVTRUQgQVMgQSBNQVJLRVIgRk9SIFRIRSBBQ1RVQUwgSlNPTiBNQU5JRkVTVAotIyBFT0MKLXsKLSAgICAidGVzdHMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0IHN1aXRlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibW9kdWxlcyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43LyovdGVzdCIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvKi90ZXN0cyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaWRsZWxpYi9pZGxlX3Rlc3QvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXN0IgotICAgICAgICBdLCAKLSAgICAgICAgImNhY2hlZCI6IFtdCi0gICAgfSwgCi0gICAgIjJ0bzMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9LzJ0bzMqIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYjJ0bzMiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiYXJncGFyc2UiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FyZ3BhcnNlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImF1ZGlvIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXVkaW8gSGFuZGxpbmciLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJtYXRoIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXVkaW9kZXYucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NodW5rLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9hdWRpb29wLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vc3NhdWRpb2Rldi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc25kaGRyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VuYXVkaW8ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RvYWlmZi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2F2ZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJic2RkYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQmVya2VsZXkgRGF0YWJhc2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ic2RkYiIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2JzZGRiLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvZGVjcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0dGV4dC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19jbi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19oay5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19pc28yMDIyLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2pwLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2tyLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX3R3LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbXVsdGlieXRlY29kZWMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9sb2NhbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZ3ByZXAucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3hkcmxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb21waWxlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYnl0ZWNvZGUgY29tcGlsYXRpb24gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVhbGwucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3B5X2NvbXBpbGUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29tcGlsZXIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb21waWxlciBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29tcGlsZXIiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29tcHJlc3Npb24iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInNoZWxsIiwgCi0gICAgICAgICAgICAidW5peGFkbWluIiwgCi0gICAgICAgICAgICAiemxpYiIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2d6aXAucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2J6Mi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGFyZmlsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvemlwZmlsZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb250ZXh0bGliIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudGNvbnRleHRzLiIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb250ZXh0bGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvcmUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFtdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24qIiwgCi0gICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24yLjcvcHljb25maWcqLmgiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0NvbmZpZ1BhcnNlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvVXNlckRpY3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJMaXN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Vc2VyU3RyaW5nLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fX2Z1dHVyZV9fLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fYWJjb2xsLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3lzY29uZmlnZGF0YS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3dlYWtyZWZzZXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FiYy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hdGV4aXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVjcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29sbGVjdGlvbnMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvcHkucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvcHlfcmVnLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MvdXRmXzgucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2dlbmVyaWNwYXRoLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRvcHQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hlYXBxLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbXBvcnRsaWIiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2tleXdvcmQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2xsZWN0aW9ucy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hlYXBxLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbG9jYWxlLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3RydWN0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9iaW5hc2NpaS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvaXRlcnRvb2xzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vcGVyYXRvci5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcmVhZGxpbmUuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3N0cm9wLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90aW1lLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC94cmVhZGxpbmVzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saW5lY2FjaGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25ldy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvb3MucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BsYXRmb3JtLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3NpeHBhdGgucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ybGNvbXBsZXRlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZWN1c3RvbWl6ZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX2NvbXBpbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb25zdGFudHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9wYXJzZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RhdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJ1Y3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N5c2NvbmZpZy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHJhY2ViYWNrLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90eXBlcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2FybmluZ3MucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dlYWtyZWYucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY3J5cHQiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9oYXNobGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGFzaGxpYi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY3J5cHQuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21kNS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hhLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImN0eXBlcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2N0eXBlcyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N0eXBlcy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0LnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImN1cnNlcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGN1cnNlcyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY3Vyc2VzIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImRhdGV0aW1lIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3RycHRpbWUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NhbGVuZGFyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYXRldGltZS5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiYnNkZGIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZ2RibSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FueWRibS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGJoYXNoLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1iZGJtLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYm0uc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3doaWNoZGIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGVidWdnZXIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZWJ1Z2dlciIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInBwcmludCIsIAotICAgICAgICAgICAgInNoZWxsIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmRiLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wZGIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGV2IjogewotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5hIiwgCi0gICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5vIiwgCi0gICAgICAgICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsIiwgCi0gICAgICAgICAgICAiJHtkYXRhZGlyfS9wa2djb25maWciLCAKLSAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9LyouYSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS8qLmxhIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9LyoubyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnL01ha2VmaWxlIgotICAgICAgICBdLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKLSAgICB9LCAKLSAgICAiZGlmZmxpYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RpZmZsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGlzdHV0aWxzLXN0YXRpY2RldiI6IHsKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnL2xpYiouYSIKLSAgICAgICAgXSwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJkaXN0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiCi0gICAgfSwgCi0gICAgImRpc3R1dGlscyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIERpc3RyaWJ1dGlvbiBVdGlsaXRpZXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWciLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Rpc3R1dGlscyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkb2N0ZXN0IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImRlYnVnZ2VyIiwgCi0gICAgICAgICAgICAiZGlmZmxpYiIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgInBwcmludCIsIAotICAgICAgICAgICAgInNoZWxsIiwgCi0gICAgICAgICAgICAidW5pdHRlc3QiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kb2N0ZXN0LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImVtYWlsIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZW1haWwgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInBpY2tsZSIsIAotICAgICAgICAgICAgInN1YnByb2Nlc3MiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbWFpbCIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1hcGxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJmY250bCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZmNudGwuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZ2RibSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ2RibS5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJob3RzaG90IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaG90c2hvdCBwZXJmb3JtYW5jZSBwcm9maWxlciIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hvdHNob3QiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19ob3RzaG90LnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImh0bWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0hUTUxQYXJzZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Zvcm1hdHRlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHRtbGVudGl0eWRlZnMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2h0bWxsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21hcmt1cGJhc2UucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NnbWxsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiaWRsZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L2lkbGUiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiaW1hZ2UiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xvcnN5cy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1naGRyLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImlvIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIEkvTyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9TdHJpbmdJTy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3B5aW8ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lvLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faW8uc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zb2NrZXQuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zc2wuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NTdHJpbmdJTy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc2VsZWN0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90ZXJtaW9zLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waXBlcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc29ja2V0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zc2wucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RlbXBmaWxlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImpzb24iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBKU09OIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9qc29uIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fanNvbi5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJsYW5nIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9iaXNlY3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVvcC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mdW5jdG9vbHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2luc3BlY3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19iaXNlY3Quc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19mdW5jdG9vbHMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2FycmF5LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9wYXJzZXIuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29wY29kZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmVwci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3ltYm9sLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9rZW5pemUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibG9nZ2luZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbG9nZ2luZyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJtYWlsYm94IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWFpbGJveCBmb3JtYXQgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiZW1haWwiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWFpbGJveC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJtYXRoIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWF0aCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fcmFuZG9tLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jbWF0aC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbWF0aC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmFuZG9tLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zZXRzLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm1pbWUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9NaW1lV3JpdGVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldG9vbHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0eXBlcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcXVvcHJpLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZmM4MjIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3V1LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm1tYXAiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21tYXAuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibW9kdWxlcyI6IHsKLSAgICAgICAgImZpbGVzIjogW10sIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiMnRvMyIsIAotICAgICAgICAgICAgImFyZ3BhcnNlIiwgCi0gICAgICAgICAgICAiYXVkaW8iLCAKLSAgICAgICAgICAgICJic2RkYiIsIAotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvbXBpbGUiLCAKLSAgICAgICAgICAgICJjb21waWxlciIsIAotICAgICAgICAgICAgImNvbXByZXNzaW9uIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImN0eXBlcyIsIAotICAgICAgICAgICAgImN1cnNlcyIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiZGIiLCAKLSAgICAgICAgICAgICJkZWJ1Z2dlciIsIAotICAgICAgICAgICAgImRpZmZsaWIiLCAKLSAgICAgICAgICAgICJkaXN0dXRpbHMiLCAKLSAgICAgICAgICAgICJkb2N0ZXN0IiwgCi0gICAgICAgICAgICAiZW1haWwiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImdkYm0iLCAKLSAgICAgICAgICAgICJob3RzaG90IiwgCi0gICAgICAgICAgICAiaHRtbCIsIAotICAgICAgICAgICAgImlkbGUiLCAKLSAgICAgICAgICAgICJpbWFnZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAianNvbiIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJsb2dnaW5nIiwgCi0gICAgICAgICAgICAibWFpbGJveCIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAibW1hcCIsIAotICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgIm5ldHNlcnZlciIsIAotICAgICAgICAgICAgIm51bWJlcnMiLCAKLSAgICAgICAgICAgICJwaWNrbGUiLCAKLSAgICAgICAgICAgICJwa2d1dGlsIiwgCi0gICAgICAgICAgICAicGxpc3RsaWIiLCAKLSAgICAgICAgICAgICJwcHJpbnQiLCAKLSAgICAgICAgICAgICJwcm9maWxlIiwgCi0gICAgICAgICAgICAicHlkb2MiLCAKLSAgICAgICAgICAgICJyZSIsIAotICAgICAgICAgICAgInJlc291cmNlIiwgCi0gICAgICAgICAgICAicm9ib3RwYXJzZXIiLCAKLSAgICAgICAgICAgICJydW5weSIsIAotICAgICAgICAgICAgInNoZWxsIiwgCi0gICAgICAgICAgICAic210cGQiLCAKLSAgICAgICAgICAgICJzcWxpdGUzIiwgCi0gICAgICAgICAgICAic3FsaXRlMyIsIAotICAgICAgICAgICAgInN0cmluZ29sZCIsIAotICAgICAgICAgICAgInN1YnByb2Nlc3MiLCAKLSAgICAgICAgICAgICJzeXNsb2ciLCAKLSAgICAgICAgICAgICJ0ZXJtaW5hbCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIsIAotICAgICAgICAgICAgInRraW50ZXIiLCAKLSAgICAgICAgICAgICJ1bml0dGVzdCIsIAotICAgICAgICAgICAgInVuaXhhZG1pbiIsIAotICAgICAgICAgICAgInhtbCIsIAotICAgICAgICAgICAgInhtbHJwYyIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAic3VtbWFyeSI6ICJBbGwgUHl0aG9uIG1vZHVsZXMiCi0gICAgfSwgCi0gICAgIm11bHRpcHJvY2Vzc2luZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInBpY2tsZSIsIAotICAgICAgICAgICAgInN1YnByb2Nlc3MiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tdWx0aXByb2Nlc3NpbmciCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibmV0Y2xpZW50IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImN0eXBlcyIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiZW1haWwiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAicGlja2xlIiwgCi0gICAgICAgICAgICAic3VicHJvY2VzcyIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0Nvb2tpZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX0xXUENvb2tpZUphci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX01vemlsbGFDb29raWVKYXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Jhc2U2NC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29va2llbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mdHBsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2htYWMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2h0dHBsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25udHBsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BvcGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc210cGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVsbmV0bGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYjIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybHBhcnNlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91dWlkLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm5ldHNlcnZlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbXByZXNzaW9uIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm1pbWUiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJzaGVsbCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIsIAotICAgICAgICAgICAgInVuaXhhZG1pbiIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9CYXNlSFRUUFNlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ0dJSFRUUFNlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlSFRUUFNlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU29ja2V0U2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jZ2kucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibnVtYmVycyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kZWNpbWFsLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mcmFjdGlvbnMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L251bWJlcnMucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicGlja2xlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2VyaWFsaXNhdGlvbi9wZXJzaXN0ZW5jZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jUGlja2xlLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGVsdmUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicGtndXRpbCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BrZ3V0aWwucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicGxpc3RsaWIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJkYXRldGltZSIsIAotICAgICAgICAgICAgImlvIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGxpc3RsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicHByaW50IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BwcmludC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJwcm9maWxlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAicmVzb3VyY2UiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jUHJvZmlsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2xzcHJvZi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHJvZmlsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHN0YXRzLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInB5ZG9jIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInBrZ3V0aWwiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3B5ZG9jIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9weWRvYy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlkb2NfZGF0YSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJyZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInJlc291cmNlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZXNvdXJjZS5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJyb2JvdHBhcnNlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJvYm90cy50eHQgcGFyc2VyIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JvYm90cGFyc2VyLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInJ1bnB5IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVyIGZvciBsb2NhdGluZy9leGVjdXRpbmcgc2NyaXB0cyBpbiBtb2R1bGUgbmFtZXNwYWNlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAicGtndXRpbCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3J1bnB5LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInNoZWxsIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2hlbGwtbGlrZSBmdW5jdGlvbmFsaXR5IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb21wcmVzc2lvbiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInVuaXhhZG1pbiIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jbWQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbW1hbmRzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXJjYWNoZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZm5tYXRjaC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2xvYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcG9wZW4yLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGxleC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2h1dGlsLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInNtdHBkIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS9zbXRwZC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXN5bmNoYXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FzeW5jb3JlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwZC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzcWxpdGUzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3FsaXRlMy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3FsaXRlMyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzdHJpbmdvbGQiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzdHJpbmcgQVBJcyBbZGVwcmVjYXRlZF0iLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmdvbGQucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAic3VicHJvY2VzcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN1YnByb2Nlc3Mgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJwaWNrbGUiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInN5c2xvZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN5c2xvZyBpbnRlcmZhY2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zeXNsb2cuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidGVybWluYWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXJtaW5hbCBjb250cm9sbGluZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wdHkucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3R0eS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ0ZXh0dXRpbHMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBvcHRpb24gcGFyc2luIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY3N2LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3N2LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcHRwYXJzZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGV4dHdyYXAucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidGhyZWFkaW5nIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9RdWV1ZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3RocmVhZGluZ19sb2NhbC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZHVtbXlfdGhyZWFkLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1teV90aHJlYWRpbmcucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L211dGV4LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90aHJlYWRpbmcucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidGtpbnRlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fdGtpbnRlci5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItdGsiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidW5pdHRlc3QiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZGlmZmxpYiIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInBwcmludCIsIAotICAgICAgICAgICAgInNoZWxsIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdW5pdHRlc3QiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidW5peGFkbWluIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gVW5peCBhZG1pbmlzdHJhdGlvbiBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRwYXNzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9ncnAuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL25pcy5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ4bWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19lbGVtZW50dHJlZS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcHlleHBhdC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcveG1sIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInhtbHJwYyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29tcHJlc3Npb24iLCAKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAibmV0c2VydmVyIiwgCi0gICAgICAgICAgICAicGtndXRpbCIsIAotICAgICAgICAgICAgInB5ZG9jIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIiwgCi0gICAgICAgICAgICAieG1sIiwgCi0gICAgICAgICAgICAiemxpYiIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0RvY1hNTFJQQ1NlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlWE1MUlBDU2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWxycGNsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiemxpYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3psaWIuc28iCi0gICAgICAgIF0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzAwMmE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIS9iaW4vc2gKLQotcHl0aG9uIC1tdGVzdCAtVyB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtZSAnL1wuXC5cLiBbRVJST1J8RkFJTF0vIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWNiNTUyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1weXRob24gc2hvdWxkIHNlYXJjaCBmb3IgZGIuaCBpbiBpbmNfZGlycyBhbmQgbm90IGluIGEgaGFyZGNvZGVkIHBhdGguCi1JZiBkYi5oIGlzIGZvdW5kIGJ1dCBIQVNIVkVSU0lPTiBpcyBub3QgMiB3ZSBhdm9pZCBhIHdhcm5pbmcgYnkgbm90IAotYWRkaW5nIHRoaXMgbW9kdWxlIHRvIG1pc3NpbmcgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGI4ODc4MDguLmFlNTE2MDcgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xMjM3LDYgKzEyMzcsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAjIHRoZSBtb3JlIHJlY2VudCBiZXJrZWxleWRiJ3MgZGIuaCBmaWxlIGZpcnN0IGluIHRoZSBpbmNsdWRlIHBhdGgKLSAgICAgICAgICMgd2hlbiBhdHRlbXB0aW5nIHRvIGNvbXBpbGUgYW5kIGl0IHdpbGwgZmFpbC4KLSAgICAgICAgIGYgPSAiL3Vzci9pbmNsdWRlL2RiLmgiCi0rICAgICAgICBpZiBsZW4oaW5jX2RpcnMpICE9IDA6Ci0rICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihpbmNfZGlyc1swXSwgImRiLmgiKQotIAotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgICBpZiBpc19tYWNvc3hfc2RrX3BhdGgoZik6Ci1AQCAtMTI1Nyw4ICsxMjU5LDEwIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzKSkKLSAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignYnNkZGIxODUnLCBbJ2JzZGRibW9kdWxlLmMnXSkpCi0tICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ2JzZGRiMTg1JykKLSsgICAgICAgICAgICAjIElmIGEgbmV3ZXIgdmVyc2lvbiBpcyBkZXRlY3RlZCBkb24ndCByZXBvcnQgYW4gdXNlbGVzcwotKyAgICAgICAgICAgICMgd2FybmluZwotKyAgICAgICAgICAgICNlbHNlOgotKyAgICAgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ2JzZGRiMTg1JykKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ2JzZGRiMTg1JykKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2NkYjk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1UaGlzIHBhdGNoIHNraXBzIG92ZXIgdGhlICdpbXBvcnQgY2hlY2snIHNldHVwLnB5IGRvZXMgd2hlbiBidWlsZGluZwotZXh0ZW5zaW9ucy4gIFRoaXMgZ2VuZXJhbGx5IHdvbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQtc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43LjIvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjIub3JpZy9zZXR1cC5weQkyMDExLTExLTA0IDE2OjQ2OjM0LjU1Mzc5NjQxMCAtMDUwMAotKysrIFB5dGhvbi0yLjcuMi9zZXR1cC5weQkyMDExLTExLTA0IDE2OjU5OjQ5LjY5MjgwMjMxMyAtMDUwMAotQEAgLTI4Nyw2ICsyODcsMTUgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHQubmFtZSwgc3lzLmV4Y19pbmZvKClbMV0pKQotICAgICAgICAgICAgIHNlbGYuZmFpbGVkLmFwcGVuZChleHQubmFtZSkKLSAgICAgICAgICAgICByZXR1cm4KLSsKLSsgICAgICAgICMgSWYgd2UncmUgY3Jvc3MtY29tcGlsaW5nLCB3ZSB3YW50IHRvIHNraXAgdGhlIGltcG9ydCBjaGVjawotKyAgICAgICAgIyBpLmUuIHdlIHNob3VsZG4ndCBiZSBkeW5hbWljYWxseSBsb2FkaW5nIHRhcmdldCBzaGFyZWQgbGlicwotKyAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoJ0NST1NTX0NPTVBJTEUnKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICBzZWxmLmFubm91bmNlKAotKyAgICAgICAgICAgICAgICAnV0FSTklORzogc2tpcHBpbmcgaW1wb3J0IGNoZWNrIGZvciBjcm9zcy1jb21waWxlZCAiJXMiJyAlCi0rICAgICAgICAgICAgICAgIGV4dC5uYW1lKQotKyAgICAgICAgICAgIHJldHVybgotKwotICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBNYWMgT1MgWDogVGhlIENhcmJvbi1iYXNlZCBtb2R1bGVzIGNhbm5vdCBiZQotICAgICAgICAgIyByZWxpYWJseSBpbXBvcnRlZCBpbnRvIGEgY29tbWFuZC1saW5lIFB5dGhvbgotICAgICAgICAgaWYgJ0NhcmJvbicgaW4gZXh0LmV4dHJhX2xpbmtfYXJnczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXB0d2Vha3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwdHdlYWtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTkxYjE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXB0d2Vha3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1UaGlzIHBhdGNoIHJlbW92ZXMgdmFyaW91cyB3YXlzIG5hdGl2ZSBzeXN0ZW0gb3B0aW9ucyBjYW4gcGFzcyBpbnRvIHRoZSBweXRob24gCi1jb21waWxhdGlvbiBhbmQgc29tZWhvdyBicmVhayBDIG1vZHVsZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCi0KLVJQIDIwMTIvMDQvMjMKLQotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL3NldHVwLnB5CTIwMTItMDQtMjMgMjA6MDM6NDcuMjk1NTgyNTUzICswMDAwCi0rKysgUHl0aG9uLTIuNy4yL3NldHVwLnB5CTIwMTItMDQtMjMgMjA6MDM6MTUuMDAwMDAwMDAwICswMDAwCi1AQCAtMjMxLDcgKzIzMSwxMyBAQAotICAgICAgICAgIyBjb21waWxlcnMKLSAgICAgICAgIGlmIGNvbXBpbGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIChjY3NoYXJlZCxjZmxhZ3MpID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnQ0NTSEFSRUQnLCdDRkxBR1MnKQotLSAgICAgICAgICAgIGFyZ3NbJ2NvbXBpbGVyX3NvJ10gPSBjb21waWxlciArICcgJyArIGNjc2hhcmVkICsgJyAnICsgY2ZsYWdzCi0rICAgICAgICAgICAgIyBOZWVkIHRvIGZpbHRlciBvdXQgLWlzeXNyb290IGZyb20gdGhlIGZsYWdzLiBJZGVhbGx5IHNob3VsZCAKLSsgICAgICAgICAgICAjIGZpZ3VyZSBvdXQgdGFyZ2V0IGZsYWdzIGhlcmUuCi0rICAgICAgICAgICAgZmxhZ3MgPSBbXQotKyAgICAgICAgICAgIGZvciBmIGluIGNmbGFncy5zcGxpdCgpOgotKyAgICAgICAgICAgICAgICBpZiBub3QgZi5zdGFydHN3aXRoKCItaXN5c3RlbSIpOgotKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYXBwZW5kKGYpCi0rICAgICAgICAgICAgYXJnc1snY29tcGlsZXJfc28nXSA9IGNvbXBpbGVyICsgJyAnICsgY2NzaGFyZWQgKyAnICcgKyAnICcuam9pbihmbGFncykKLSAgICAgICAgIHNlbGYuY29tcGlsZXIuc2V0X2V4ZWN1dGFibGVzKCoqYXJncykKLSAKLSAgICAgICAgIGJ1aWxkX2V4dC5idWlsZF9leHRlbnNpb25zKHNlbGYpCi1AQCAtMzkzLDcgKzM5OSw2IEBACi0gICAgICAgICAjIGludG8gY29uZmlndXJlIGFuZCBzdG9yZWQgaW4gdGhlIE1ha2VmaWxlIChpc3N1ZSBmb3VuZCBvbiBPUyBYIDEwLjMpLgotICAgICAgICAgZm9yIGVudl92YXIsIGFyZ19uYW1lLCBkaXJfbGlzdCBpbiAoCi0gICAgICAgICAgICAgICAgICgnTERGTEFHUycsICctUicsIHNlbGYuY29tcGlsZXIucnVudGltZV9saWJyYXJ5X2RpcnMpLAotLSAgICAgICAgICAgICAgICAoJ0xERkxBR1MnLCAnLUwnLCBzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycyksCi0gICAgICAgICAgICAgICAgICgnQ1BQRkxBR1MnLCAnLUknLCBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycykpOgotICAgICAgICAgICAgIGVudl92YWwgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoZW52X3ZhcikKLSAgICAgICAgICAgICBpZiBlbnZfdmFsOgotQEAgLTQxOSwxNiArNDI0LDE2IEBACi0gICAgICAgICAgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHJldmVyc2VkKG9wdGlvbnMuZGlycyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KGRpcl9saXN0LCBkaXJlY3RvcnkpCi0gCi0tICAgICAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCi0tICAgICAgICAgICAgICAgIGFuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKLSsjICAgICAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCi0rIyAgICAgICAgICAgICAgICBhbmQgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlUSE9ORlJBTUVXT1JLJyk6Ci0gICAgICAgICAgICAgIyBPU1ggbm90ZTogRG9uJ3QgYWRkIExJQkRJUiBhbmQgSU5DTFVERURJUiB0byBidWlsZGluZyBhIGZyYW1ld29yawotICAgICAgICAgICAgICMgKFBZVEhPTkZSQU1FV09SSyBpcyBzZXQpIHRvIGF2b2lkICMgbGlua2luZyBwcm9ibGVtcyB3aGVuCi0gICAgICAgICAgICAgIyBidWlsZGluZyBhIGZyYW1ld29yayB3aXRoIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIHRoYW4KLSAgICAgICAgICAgICAjIHRoZSBvbmUgdGhhdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkIChpc3N1ZSAjNzQ3MykKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRElSIikpCi0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIklOQ0xVREVESVIiKSkKLSsjICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAotKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJMSUJESVIiKSkKLSsjICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAotKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJJTkNMVURFRElSIikpCi0gCi0gICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgaGF2ZV91bmljb2RlID0gdW5pY29kZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzhiNWUyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2l0ZWN1c3RvbWl6ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgT3BlbkVtYmVkZGVkIHNpdGVjdXN0b21pemUucHkgKEMpIDIwMDItMjAwOCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLSMgR1BMdjIgb3IgbGF0ZXIKLSMgVmVyc2lvbjogMjAwODExMjMKLSMgRmVhdHVyZXM6Ci0jICogc2V0IHByb3BlciBkZWZhdWx0IGVuY29kaW5nCi0jICogZW5hYmxlIHJlYWRsaW5lIGNvbXBsZXRpb24gaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyCi0jICogbG9hZCBjb21tYW5kIGxpbmUgaGlzdG9yeSBvbiBzdGFydHVwCi0jICogc2F2ZSBjb21tYW5kIGxpbmUgaGlzdG9yeSBvbiBleGl0IAotCi1pbXBvcnQgb3MKLQotZGVmIF9fZXhpdGhhbmRsZXIoKToKLSAgICB0cnk6Ci0gICAgICAgIHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZSggIiVzLy5weXRob24taGlzdG9yeSIgJSBvcy5nZXRlbnYoICJIT01FIiwgIi90bXAiICkgKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICBwYXNzCi0KLWRlZiBfX3JlZ2lzdGVyRXhpdEhhbmRsZXIoKToKLSAgICBpbXBvcnQgYXRleGl0Ci0gICAgYXRleGl0LnJlZ2lzdGVyKCBfX2V4aXRoYW5kbGVyICkKLQotZGVmIF9fZW5hYmxlUmVhZGxpbmVTdXBwb3J0KCk6Ci0gICAgcmVhZGxpbmUuc2V0X2hpc3RvcnlfbGVuZ3RoKCAxMDAwICkKLSAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCggInRhYjogY29tcGxldGUiICkKLSAgICB0cnk6Ci0gICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKCAiJXMvLnB5dGhvbi1oaXN0b3J5IiAlIG9zLmdldGVudiggIkhPTUUiLCAiL3RtcCIgKSApCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotaW1wb3J0IHN5cwotdHJ5OgotICAgIGltcG9ydCBybGNvbXBsZXRlciwgcmVhZGxpbmUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi1lbHNlOgotICAgIF9fcmVnaXN0ZXJFeGl0SGFuZGxlcigpCi0gICAgX19lbmFibGVSZWFkbGluZVN1cHBvcnQoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjY1MTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVRoZSBjb21waWxlZCAucHljIGZpbGVzIGNvbnRhaW4gdGltZSBzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb21waWxlIHRpbWUuCi1UaGlzIHByZXZlbnRzIGJpbmFyeSByZXByb2R1Y2liaWxpdHkuIFRoaXMgcGF0Y2ggYWxsb3dzIHRvIGFjaGlldmUgYmluYXJ5Ci1yZXByb2R1Y2liaWxpdHkgYnkgb3ZlcnJpZGluZyB0aGUgYnVpbGQgdGltZSBzdGFtcCBieSB0aGUgdmFsdWUgCi1leHBvcnRlZCB2aWEgU09VUkNFX0RBVEVfRVBPQ0guIAotCi1QYXRjaCBieSBCZXJuaGFyZCBNLiBXaWVkZW1hbm4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi1GcmkgRmViIDI0IDE3OjA4OjI1IFVUQyAyMDE3IC0gYndpZWRlbWFubkBzdXNlLmNvbQotCi0tIEFkZCByZXByb2R1Y2libGUucGF0Y2ggdG8gYWxsb3cgcmVwcm9kdWNpYmxlIGJ1aWxkcyBvZiB2YXJpb3VzCi0gIHB5dGhvbiBwYWNrYWdlcyBsaWtlIHB5dGhvbi1hbXFwCi0gIFVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTYKLQotCi1AQCAtMCwwICsxLDE1IEBACi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvcHlfY29tcGlsZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvcHlfY29tcGlsZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3B5X2NvbXBpbGUucHkKLUBAIC0xMDgsNiArMTA4LDEwIEBAIGRlZiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUKLSAgICAgICAgICAgICB0aW1lc3RhbXAgPSBsb25nKG9zLmZzdGF0KGYuZmlsZW5vKCkpLnN0X210aW1lKQotICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGxvbmcob3Muc3RhdChmaWxlKS5zdF9tdGltZSkKLSsgICAgICAgIHNkZSA9IG9zLmVudmlyb24uZ2V0KCdTT1VSQ0VfREFURV9FUE9DSCcpCi0rICAgICAgICBpZiBzZGUgYW5kIHRpbWVzdGFtcCA+IGludChzZGUpOgotKyAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChzZGUpCi0rICAgICAgICAgICAgb3MudXRpbWUoZmlsZSwgKHRpbWVzdGFtcCwgdGltZXN0YW1wKSkKLSAgICAgICAgIGNvZGVzdHJpbmcgPSBmLnJlYWQoKQotICAgICB0cnk6Ci0gICAgICAgICBjb2Rlb2JqZWN0ID0gX19idWlsdGluX18uY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCdleGVjJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjRhM2JjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1QeXRob24gdHJpZXMgdG8gdXNlIG5jdXJzZXN3IGZyb20gdGhlIGhvc3QsCi1pZiBpdCBpcyBub3QgZm91bmQgY2F1c2VzIGFuIGVycm9yIG9uIGNvbmZpZ3VyZSwKLXdlIHNob3VsZCB1c2UgbmN1cnNlc3cgZnJvbSBzeXNyb290IGluc3RlYWQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy45L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuOS9jb25maWd1cmUuYWMKLUBAIC00MzExLDcgKzQzMTEsNyBAQCBmaQotIAotICMgZmlyc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjawotIGFjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKLS1DUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgotK0NQUEZMQUdTPSIkQ1BQRkxBR1MgLUk9L3Vzci9pbmNsdWRlL25jdXJzZXN3IgotIAotIEFDX0NIRUNLX0hFQURFUlMoY3Vyc2VzLmggbmN1cnNlcy5oKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjkuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yOS4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2U2YmRiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjkuMTYuYmIKQEAgLTAsMCArMSwxOCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tY3l0aG9uLmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIHB5dGhvbjMtc2V0dXB0b29scyBcCisiCisKKyMgcnVubmluZyBidWlsZF9leHQgYSBzZWNvbmQgdGltZSBkdXJpbmcgaW5zdGFsbCBmYWlscywgYmVjYXVzZSBQeXRob24KKyMgd291bGQgdGhlbiBhdHRlbXB0IHRvIGltcG9ydCBjeXRob25pemVkIG1vZHVsZXMgYnVpbHQgZm9yIHRoZSB0YXJnZXQKKyMgYXJjaGl0ZWN0dXJlLgorRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1za2lwLWJ1aWxkIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIHJlbmFtZSBzY3JpcHRzIHRoYXQgd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgUHl0aG9uIDIgYnVpbGQgb2YgQ3l0aG9uCisgICAgbXYgJHtEfSR7YmluZGlyfS9jeXRob24gJHtEfSR7YmluZGlyfS9jeXRob24zCisgICAgbXYgJHtEfSR7YmluZGlyfS9jeXRob25pemUgJHtEfSR7YmluZGlyfS9jeXRob25pemUzCisgICAgbXYgJHtEfSR7YmluZGlyfS9jeWdkYiAke0R9JHtiaW5kaXJ9L2N5Z2RiMworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAwNWRjNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgREJ1cyBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gc3lzdGVtIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMDMyNDA1MTg5OTRkZjZkOGM5NzQ2NzU2NzVlNWNhNCIKLURFUEVORFMgPSAiZXhwYXQgZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYmludGwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQyOGI3YTllN2UyZDE1NGE3Y2ViM2UxMzUzNjI4M2U0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZDRkZTJjNGY1ZTU4ZjI4N2IxMjAxM2VkN2I0MWRlZTgxZDUwM2M4ZDBkMjM5N2M1YmQyZmIwMWJhZGYyNjAiCi0KLVMgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIGRvY3VtZW50YXRpb24gbmVlZHMgcHl0aG9uMy1zcGhpbngsIHdoaWNoIGlzIG5vdCBpbiBvZS1jb3JlIG9yIG1ldGEtcHl0aG9uIGZvciBub3cKLSMgY2hhbmdlIHRvIHVzZSBQQUNLQUdFQ09ORklHIHdoZW4gcHl0aG9uMy1zcGhpbnggaXMgYWRkZWQgdG8gb2UtY29yZQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiIKLQotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLWlvIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXhtbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzAwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xNi5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQiCitERVBFTkRTID0gImV4cGF0IGRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJpbnRsIgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLXB5dGhvbi9kYnVzLXB5dGhvbi0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MWE0NWM5NzNkODJiZWRmZjAzM2E0YjU3ZDY5ZDVkOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMTIzOGYxZDg2Yzk5NWQ4YWVkMmUyMmYwNGExZTM3NzlmMGQ3MGU1ODdjYWZmZWFiNDg1N2YzYzY2MmVkNWE0IgorCitTID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKKworIyBkb2N1bWVudGF0aW9uIG5lZWRzIHB5dGhvbjMtc3BoaW54LCB3aGljaCBpcyBub3QgaW4gb2UtY29yZSBvciBtZXRhLXB5dGhvbiBmb3Igbm93CisjIGNoYW5nZSB0byB1c2UgUEFDS0FHRUNPTkZJRyB3aGVuIHB5dGhvbjMtc3BoaW54IGlzIGFkZGVkIHRvIG9lLWNvcmUKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCisKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1pbyBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy14bWwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YzNmNWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBwcm9jZXNzaW5nIHN5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kb2N1dGlscy5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGICYgQlNELTItQ2xhdXNlICYgR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MzVhMjNkNDJiNjE1NDcwNTgzNTYzMTMyODcyYzk3ZDYiCi0KLURFUEVORFMgPSAicHl0aG9uMyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZG9jdXRpbHMvZG9jdXRpbHMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImY1MTcyOWYxOWU3MGE5ZGM0ODM3NDMzMTkzYTVlNzk4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMzNWU4N2U5ODVmNzAxMDZmNmY5N2UwNTBmM2JlZDk5MDY0MWUwZTEwNDU2NjEzNGI5Y2QyMzg0OWE0NjBlOTYiCi0KLVMgPSAiJHtXT1JLRElSfS9kb2N1dGlscy0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA1NDdhMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTYuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJUZXh0IHByb2Nlc3Npbmcgc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2RvY3V0aWxzLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQU0YgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT03YTQ2NDY5MDdhYjkwODNjODI2MjgwYjE5ZTEwMzEwNiIKKworREVQRU5EUyA9ICJweXRob24zIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9kb2N1dGlscy9kb2N1dGlscy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiOWNjYjZmMzMyZTIzMzYwZjk2NGRlNzJjOGVhNWYwZWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Q0ZTk5OWNjYTc0YTUyNjExNzczYTQyOTEyMDg4MDc4MzYzYTMwOTEyZTg4MjJmN2EzZDM4MDQzYjc2NzU3MyIKKworUyA9ICIke1dPUktESVJ9L2RvY3V0aWxzLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZDc1M2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gbGlicmFyeSB1c2VkIHRvIGludGVyYWN0IHdpdGggR2l0IHJlcG9zaXRvcmllcyIKLURFU0NSSVBUSU9OID0gIkdpdFB5dGhvbiBwcm92aWRlcyBvYmplY3QgbW9kZWwgcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIFwKLWEgZ2l0IHJlcG9zaXRvcnkuIEFjY2VzcyByZXBvc2l0b3J5IGluZm9ybWF0aW9uIGNvbnZlbmllbnRseSwgYWx0ZXIgdGhlIFwKLWluZGV4IGRpcmVjdGx5LCBoYW5kbGUgcmVtb3Rlcywgb3IgZ28gZG93biB0byBsb3ctbGV2ZWwgb2JqZWN0IGRhdGFiYXNlIFwKLWFjY2VzcyB3aXRoIGJpZy1maWxlcyBzdXBwb3J0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL0dpdFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjhkMjZjMzdjMWQ1YTA0ZjliMDE4NmVkYmViYzE4MyIKLQotUFlQSV9QQUNLQUdFID0gIkdpdFB5dGhvbiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjY2VjMTRhNWM5ZjE4NzAyNDA2MTIyOTgzZDgwMDMyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMmY0OTQ1ZjgyNjBmNjk4MWQ3MjRmNTk1N2JjMDc2Mzk4YWRhNTVjYjVkMjVhYWVlMTAxMDhiY2RjODk0MTAwIgotCi1ERVBFTkRTICs9ICIgJHtQWVRIT05fUE59LWdpdGRiIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1naXRkYiBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1hdGggXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCi0gICAgICAgICAgICAgICAgICAgZ2l0IFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MzEzZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjUuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJQeXRob24gbGlicmFyeSB1c2VkIHRvIGludGVyYWN0IHdpdGggR2l0IHJlcG9zaXRvcmllcyIKK0RFU0NSSVBUSU9OID0gIkdpdFB5dGhvbiBwcm92aWRlcyBvYmplY3QgbW9kZWwgcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIFwKK2EgZ2l0IHJlcG9zaXRvcnkuIEFjY2VzcyByZXBvc2l0b3J5IGluZm9ybWF0aW9uIGNvbnZlbmllbnRseSwgYWx0ZXIgdGhlIFwKK2luZGV4IGRpcmVjdGx5LCBoYW5kbGUgcmVtb3Rlcywgb3IgZ28gZG93biB0byBsb3ctbGV2ZWwgb2JqZWN0IGRhdGFiYXNlIFwKK2FjY2VzcyB3aXRoIGJpZy1maWxlcyBzdXBwb3J0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL0dpdFB5dGhvbiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjhkMjZjMzdjMWQ1YTA0ZjliMDE4NmVkYmViYzE4MyIKKworUFlQSV9QQUNLQUdFID0gIkdpdFB5dGhvbiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NTU1YWQ4OWEyMmY2NjNjMjVjY2VkNWY2MjNiZGVmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzIzOThmZmMzZGNiM2M0MGIyNzMyNGIzMTZmMDhhNGY5M2FkNjQ2ZDVhNjMyOGNhZmJiODcxYWE3OWY1ZTQyIgorCitERVBFTkRTICs9ICIgJHtQWVRIT05fUE59LWdpdGRiIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1naXRkYiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCisgICAgICAgICAgICAgICAgICAgZ2l0IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUxNTgzMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tZ2l0ZGIuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkY2Q5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNi5iYgpAQCAtMCwwICsxLDMgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWdpdGRiLmluYworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1saWJhcmNoaXZlLWNfMi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGliYXJjaGl2ZS1jXzIuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTgzYWU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGliYXJjaGl2ZS1jXzIuOS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlB5dGhvbiBpbnRlcmZhY2UgdG8gbGliYXJjaGl2ZSIKK0RFU0NSSVBUSU9OID0gIkEgUHl0aG9uIGludGVyZmFjZSB0byBsaWJhcmNoaXZlLiBJdCB1c2VzIHRoZSBzdGFuZGFyZCBjdHlwZXMgbW9kdWxlIHRvIFwKKyAgICBkeW5hbWljYWxseSBsb2FkIGFuZCBhY2Nlc3MgdGhlIEMgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vQ2hhbmdhY28vcHl0aG9uLWxpYmFyY2hpdmUtYyIKK0xJQ0VOU0UgPSAiQ0MwLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWJjYWIzODAyMjdhODNiYzE0NzM1MGI0MGE4MWU2ZmZjIgorCitQWVBJX1BBQ0tBR0UgPSAibGliYXJjaGl2ZS1jIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjA4M2JkMmNiMDA0M2MxZTIyYTUyY2I5YTA1ZTMxNTMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5MTkzNDRjZWMyMDNmNWRiNjU5NmEyOWI1YmMyNmIwN2JhOTY2MjkyNWEwNWUyNDk4MGI4NDcwOTIzMmVmNjAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJhcmNoaXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hZ2ljXzAuNC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hZ2ljXzAuNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTgwMTZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFnaWNfMC40LjE1LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiRmlsZSB0eXBlIGlkZW50aWZpY2F0aW9uIHVzaW5nIGxpYm1hZ2ljIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgdXNlcyBjdHlwZXMgdG8gYWNjZXNzIHRoZSBsaWJtYWdpYyBmaWxlIHR5cGUgXAorICAgIGlkZW50aWZpY2F0aW9uIGxpYnJhcnkuIEl0IG1ha2VzIHVzZSBvZiB0aGUgbG9jYWwgbWFnaWMgZGF0YWJhc2UgYW5kIHN1cHBvcnRzIFwKKyAgICBib3RoIHRleHR1YWwgYW5kIE1JTUUtdHlwZSBvdXRwdXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vYWh1cHAvcHl0aG9uLW1hZ2ljIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE2YTkzNGYxNjVlOGMzMjQ1ZjI0MWU3N2Q0MDFiYjg4IgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLW1hZ2ljIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImUzODRjOTVhNDcyMThmNjZjNjUwMWNkNmRkNDVmZjU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzNzY1YzBmNTgyZDJkZmM3MmMxNWYzYjVhODJhZWNmYWU5NDk4YmQyOWNhODQwZDcyZjM3ZDdiZDM4YmZjZDUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJmaWxlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTM5ZTVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlRlbXBsYXRpbmcgbGlicmFyeSBmb3IgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tYWtvdGVtcGxhdGVzLm9yZy8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGY3ZTZjN2M4Mjk5MGFjZjAyMjhhNTVlMDBkMjliYzkiCi0KLVBZUElfUEFDS0FHRSA9ICJNYWtvIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotU1JDX1VSSVttZDVzdW1dID0gIjZjM2YyZGEwYjc0YWY1MjlhNGM0YTUzN2QwODQ4YmYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzNjkxOTU5OWE5YjdkYzVkODZhN2E4OTg4ZjIzYTlhM2EzZDA4MzA3MDAyM2JhYjIzZDY0ZjdmMWQxZTBhNGIiCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1odG1sIFwKLSAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMzgwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiVGVtcGxhdGluZyBsaWJyYXJ5IGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1ha290ZW1wbGF0ZXMub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05NDNlYjY3NzE4MjIyZGIyMWQ0NGE0ZWYxODM2Njc1ZiIKKworUFlQSV9QQUNLQUdFID0gIk1ha28iCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiMjY2MGE0OTE2ZjJmNjM0NTZlNjg4NWM3MjdiN2NkMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk4NGE2NzMzZTFkNDcyNzk2Y2VlZjM3YWQ0OGMyNmY0YTk4NGJiMTgxMTliYjJkYmMzN2E0NGQ4ZjZlNzVhNCIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWh0bWwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBici8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg4ZGE2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBici8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAwOWJkODM2OGJmMGQ1Mzg1NjYzYTEwZWViODkwMTMxNDgxNjgxYmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjMgQXByIDIwMjAgMDk6Mjg6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hhbmdlIHNoZWJhbmcgdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBici90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5IHwgMiArLQorIHBici90ZXN0cy90ZXN0X3BhY2thZ2luZy5weSAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcGJyL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkgYi9wYnIvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weQoraW5kZXggOGU5NmYyMS4uYjA3Y2JlMyAxMDA2NDQKKy0tLSBhL3Bici90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5CisrKysgYi9wYnIvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weQorQEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBUZXN0SW5zdGFsbFdpdGhvdXRQYnIoYmFzZS5CYXNlVGVzdENhc2UpOgorICAgICAgICAgcGtncyA9IHsKKyAgICAgICAgICAgICAncGtnVGVzdCc6IHsKKyAgICAgICAgICAgICAgICAgJ3NldHVwLnB5JzogdGV4dHdyYXAuZGVkZW50KCIiIlwKKy0gICAgICAgICAgICAgICAgICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyAgICAgICAgICAgICAgICAgICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHNldHVwdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgIHNldHVwdG9vbHMuc2V0dXAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICdwa2dUZXN0JywKK2RpZmYgLS1naXQgYS9wYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkgYi9wYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkKK2luZGV4IDA3YmU1NDcuLmY2YTk0MTIgMTAwNjQ0CistLS0gYS9wYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkKKysrKyBiL3Bici90ZXN0cy90ZXN0X3BhY2thZ2luZy5weQorQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBDcmVhdGVQYWNrYWdlcyhmaXh0dXJlcy5GaXh0dXJlKToKKyAKKyAgICAgZGVmYXVsdHMgPSB7CisgICAgICAgICAnc2V0dXAucHknOiB0ZXh0d3JhcC5kZWRlbnQoc2l4LnUoIiIiXAorLSAgICAgICAgICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyAgICAgICAgICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAgICAgICAgICAgICBpbXBvcnQgc2V0dXB0b29scworICAgICAgICAgICAgIHNldHVwdG9vbHMuc2V0dXAoCisgICAgICAgICAgICAgICAgIHNldHVwX3JlcXVpcmVzPVsncGJyJ10sCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ODM1ZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1wYnIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NzdkMmFhMjg1YWQ5NzI1MGExNzJiMTk5ZjQwNjBiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzhlNDIwY2Q0ZWQ0Y2VjNGU3OTk5ZWU0NzQwOWU4NzZhZjU3NWQ0YzM1YTQ1ODQwZDU5ZThiNWYzMTU1YWI4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMzM1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjQuYmIKQEAgLTAsMCArMSw1IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1wYnIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NWNkYzMyZTFhMWZmNTZkNDgxZmMxNWFhOGNhZjk4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzlkMjYyNTU0N2RiZmE1ZmIwYjgxZGFlYmIzOTYwMWM0NzhjMjE5NTZkYzU3ZTJlMDdiNzQ0NTBhOGM1MDZiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcC8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjZmZlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcC8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorRnJvbSBlN2EwMGU5YjUxMDRhZTJmYmNlYTMyYTM1Yzg1NzYwYjc3ZmFlN2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjMgQXByIDIwMjAgMDk6NDI6MTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hhbmdlIHNoZWJhbmcgdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworcGlwIHdpbGwgZHJvcCBzdXBwb3J0IG9mIHB5dGhvbjIgZnJvbSAyMS4wCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weSAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvcGlwL192ZW5kb3IvYXBwZGlycy5weSAgICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvcGlwL192ZW5kb3IvY2hhcmRldC9jbGkvY2hhcmRldGVjdC5weSB8IDIgKy0KKyBzcmMvcGlwL192ZW5kb3IvcmVxdWVzdHMvY2VydHMucHkgICAgICAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9waXAvX2ludGVybmFsL19faW5pdF9fLnB5IGIvc3JjL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHkKK2luZGV4IDNhYThhNDYuLmUxYWQxNzkgMTAwNzU1CistLS0gYS9zcmMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weQorKysrIGIvc3JjL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBpbXBvcnQgcGlwLl9pbnRlcm5hbC51dGlscy5pbmplY3Rfc2VjdXJldHJhbnNwb3J0ICAjIG5vcWEKKyBmcm9tIHBpcC5faW50ZXJuYWwudXRpbHMudHlwaW5nIGltcG9ydCBNWVBZX0NIRUNLX1JVTk5JTkcKKyAKK2RpZmYgLS1naXQgYS9zcmMvcGlwL192ZW5kb3IvYXBwZGlycy5weSBiL3NyYy9waXAvX3ZlbmRvci9hcHBkaXJzLnB5CitpbmRleCAzYTUyYjc1Li5hZDNmODFkIDEwMDY0NAorLS0tIGEvc3JjL3BpcC9fdmVuZG9yL2FwcGRpcnMucHkKKysrKyBiL3NyYy9waXAvX3ZlbmRvci9hcHBkaXJzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAjIENvcHlyaWdodCAoYykgMjAwNS0yMDEwIEFjdGl2ZVN0YXRlIFNvZnR3YXJlIEluYy4KKyAjIENvcHlyaWdodCAoYykgMjAxMyBFZGR5IFBldHJpyJlvcgorZGlmZiAtLWdpdCBhL3NyYy9waXAvX3ZlbmRvci9jaGFyZGV0L2NsaS9jaGFyZGV0ZWN0LnB5IGIvc3JjL3BpcC9fdmVuZG9yL2NoYXJkZXQvY2xpL2NoYXJkZXRlY3QucHkKK2luZGV4IGM2MTEzNmIuLmE0OTdlOTggMTAwNjQ0CistLS0gYS9zcmMvcGlwL192ZW5kb3IvY2hhcmRldC9jbGkvY2hhcmRldGVjdC5weQorKysrIGIvc3JjL3BpcC9fdmVuZG9yL2NoYXJkZXQvY2xpL2NoYXJkZXRlY3QucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBTY3JpcHQgd2hpY2ggdGFrZXMgb25lIG9yIG1vcmUgZmlsZSBwYXRocyBhbmQgcmVwb3J0cyBvbiB0aGVpciBkZXRlY3RlZAorIGVuY29kaW5ncworZGlmZiAtLWdpdCBhL3NyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weSBiL3NyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weQoraW5kZXggMDZhNTk0ZS4uYmZhNzgzOSAxMDA2NDQKKy0tLSBhL3NyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weQorKysrIGIvc3JjL3BpcC9fdmVuZG9yL3JlcXVlc3RzL2NlcnRzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAKKyAiIiIKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjdlNmZjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBQeVBBIHJlY29tbWVuZGVkIHRvb2wgZm9yIGluc3RhbGxpbmcgUHl0aG9uIHBhY2thZ2VzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PThiYTA2ZDUyOWM5NTUwNDhlNWRkZDdjNDU0NTllYjJlIgotCi1ERVBFTkRTICs9ICJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYWFhZjkwZmJhZmM1MGU3YmExZTY2ZmZjZWIwMDk2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTIwN2Q3NmMxMDMxZTUxNzY2ODg5OGE2YjQ2YTlmYjE1MDFjN2E0NzEwZWY1ZGZkNmE0MGFkOWU2NzU3ZWE3IgotCi1pbmhlcml0IHB5cGkgZGlzdHV0aWxzMwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIEluc3RhbGwgYXMgcGlwMyBhbmQgbGVhdmUgcGlwMiBhcyBkZWZhdWx0Ci0gICAgcm0gJHtEfS8ke2JpbmRpcn0vcGlwCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uMy1jb21waWxlIFwKLSAgcHl0aG9uMy1pbyBcCi0gIHB5dGhvbjMtaHRtbCBcCi0gIHB5dGhvbjMtanNvbiBcCi0gIHB5dGhvbjMtbmV0c2VydmVyIFwKLSAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKLSAgcHl0aG9uMy11bml4YWRtaW4gXAotICBweXRob24zLXhtbHJwYyBcCi0gIHB5dGhvbjMtcGlja2xlIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzIwLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8yMC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5NzNkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8yMC4wLjIuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT04YmEwNmQ1MjljOTU1MDQ4ZTVkZGQ3YzQ1NDU5ZWIyZSIKKworREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2Q0MmJhNDliODA5NjA0ZjBkZjNkNTVkZjFjM2ZkODYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2RiMGM4ZWE0YzdlYTUxYzgwNDk2NDBlOGU2ZTdmZGU5NDlkZTY3MmJmYTQ5NDk5MjA2NzU1NjNhNWE2OTY3ZiIKKworaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBJbnN0YWxsIGFzIHBpcDMgYW5kIGxlYXZlIHBpcDIgYXMgZGVmYXVsdAorICAgIHJtICR7RH0vJHtiaW5kaXJ9L3BpcAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbjMtY29tcGlsZSBcCisgIHB5dGhvbjMtaW8gXAorICBweXRob24zLWh0bWwgXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLW5ldHNlcnZlciBcCisgIHB5dGhvbjMtc2V0dXB0b29scyBcCisgIHB5dGhvbjMtdW5peGFkbWluIFwKKyAgcHl0aG9uMy14bWxycGMgXAorICBweXRob24zLXBpY2tsZSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYWEwMWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIENhaXJvIGNhbnZhcyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3B5Y2Fpcm8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAicHl0aG9uLWRldmVsIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIE1QTHYxLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMmUwNzFhYjcyOTc4NDMxYjI5NGEwZDY5NjMyNzQyMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLUxHUEwtMi4xO21kNT1mYWQ5YjMzMzJiZTg5NGJhYjliYzUwMTU3Mjg2NGIyOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1QTC0xLjE7bWQ1PWJmZTFmNzVkNjA2OTEyYTQxMTFjOTA3NDNkNmM3MzI1IgotCi0jIGNhaXJvID49IDEuMTQKLURFUEVORFMgPSAiY2Fpcm8gcHl0aG9uMyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3B5Y2Fpcm8tJHtQVn0udGFyLmd6IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3NjEwZGE4YTQwYTdiZWQ1NDg5OTFhYTM0MTY0MzFkMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MDE3MmU1OGI2YmFkNzU3MmEzNTE4YzI2NzI5YjA3NGFjZGRlMTVlNmZlZTZjYmFiNmQzNTI4YWQ1NTJiNzg2IgotCi1TID0gIiR7V09SS0RJUn0vcHljYWlyby0ke1BWfSIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcKLQotQ0ZMQUdTICs9ICItZlBJQyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTkuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNjA4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTkuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIENhaXJvIGNhbnZhcyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3B5Y2Fpcm8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAicHl0aG9uLWRldmVsIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIE1QTHYxLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMzcxM2NhMmMyOGQ5MzEyYWQ3MTg1MjBiNmRjM2VlZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLUxHUEwtMi4xO21kNT1mYWQ5YjMzMzJiZTg5NGJhYjliYzUwMTU3Mjg2NGIyOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1QTC0xLjE7bWQ1PWJmZTFmNzVkNjA2OTEyYTQxMTFjOTA3NDNkNmM3MzI1IgorCisjIGNhaXJvID49IDEuMTQKK0RFUEVORFMgPSAiY2Fpcm8gcHl0aG9uMyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3B5Y2Fpcm8tJHtQVn0udGFyLmd6IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOGI4NDQxNjAyMTY0MGIwMTI1MGM4ZjhlYzRjNTJkNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZjViYTkzNzRhNDZjOTg3MjlkZDM3MjdkOTkzZjVlMTdlZDAyODZmZDY3MzhlZDQ2NGZlNGVmYTA2MTJkMTljIgorCitTID0gIiR7V09SS0RJUn0vcHljYWlyby0ke1BWfSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworQ0ZMQUdTICs9ICItZlBJQyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0ZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdtZW50c18yLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWMwYWM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQeWdtZW50cyBpcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgcGFja2FnZSB3cml0dGVuIGluIFB5dGhvbi4iCi1ERVNDUklQVElPTiA9ICJQeWdtZW50cyBpcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgcGFja2FnZSB3cml0dGVuIGluIFB5dGhvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vcHlnbWVudHMub3JnLyIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTFkN2I3YmZmYmZlYWExNDA4M2ZkMmJkMzIzNmFlYTgiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZWNjM2ZiYjJhNzgzZTkxN2IzNjkyNzFmYzBlNmNkMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ODFjNGMxNTdlNDVmMzBhZjE4NWMxZmZlOGQ1NDlkNDhhYzkxMjc0MzNmMmMzODBjMjRiODQ1NzJhZDY2Mjk3IgotCi1ERVBFTkRTICs9ICJcCi0gICAgICAgICAgICAke1BZVEhPTl9QTn0gXAotICAgICAgICAgICAgIgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlnbWVudHMiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnbWVudHNfMi41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc0Yjk1NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNS4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiUHlnbWVudHMgaXMgYSBzeW50YXggaGlnaGxpZ2h0aW5nIHBhY2thZ2Ugd3JpdHRlbiBpbiBQeXRob24uIgorREVTQ1JJUFRJT04gPSAiUHlnbWVudHMgaXMgYSBzeW50YXggaGlnaGxpZ2h0aW5nIHBhY2thZ2Ugd3JpdHRlbiBpbiBQeXRob24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5Z21lbnRzLm9yZy8iCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUxZDdiN2JmZmJmZWFhMTQwODNmZDJiZDMyMzZhZWE4IgorCitpbmhlcml0IHNldHVwdG9vbHMzCitTUkNfVVJJW21kNXN1bV0gPSAiNDY1YTM1NTU5ODYzMDg5ZDk1OWQ3ODNhNjlmNzliOWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOThjOGFhNWE5Zjc3OGZjZDEwMjZhMTczNjFkZGFmNzMzMGQxYjdjNjJhZTk3YzNiYjBhZTczZTBiOWI2YjBmZSIKKworREVQRU5EUyArPSAiXAorICAgICAgICAgICAgJHtQWVRIT05fUE59IFwKKyAgICAgICAgICAgICIKKworUFlQSV9QQUNLQUdFID0gIlB5Z21lbnRzIgorCitpbmhlcml0IHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjM2QwYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGFyc2luZ18yLjQuNy5iYgpAQCAtMCwwICsxLDMgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXB5cGFyc2luZy5pbmMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2Q1OTU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBweXRob24zLXNjb25zXyR7UFZ9LmJiCi1pbmhlcml0IG5hdGl2ZSBweXRob24zbmF0aXZlCi1ERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3Njb25zIFNDT05TX0xJQl9ESVI9JyR7U1RBR0lOR19ESVJfSE9TVH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFBZVEhPTk5PVVNFUlNJVEU9JzEnCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUxMjczMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMi5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcHl0aG9uMy1zY29uc18ke1BWfS5iYgoraW5oZXJpdCBuYXRpdmUgcHl0aG9uM25hdGl2ZQorREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3Njb25zIFNDT05TX0xJQl9ESVI9JyR7U1RBR0lOR19ESVJfSE9TVH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFBZVEhPTk5PVVNFUlNJVEU9JzEnCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29uc18zLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzdhYWVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zN2JiNTNhMDhlNmJlYWVhMGM5MGU3ODIxZDczMTI4NCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc2NvbnMvc2NvbnMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjM1YjJhMzk5MzMxM2JiZWRkMjIxZDRkNTc1OGZkMmZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjZWE0MTdmZGQ3NDk5YTM2ZjQwNzkyM2QwM2I0YjcwMDBiMGY5ZThmZDdiMzFiMzE2YjljZTdlYmE5MTQzYTUiCi0KLVMgPSAiJHtXT1JLRElSfS9zY29ucy0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zY29ucy5vcmcvcGFnZXMvZG93bmxvYWQuaHRtbCIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgIjFzLCMhLipweXRob24uKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsIiAke1N9L3NjcmlwdC8qCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uMy1jb3JlIFwKLSAgcHl0aG9uMy1mY250bCBcCi0gIHB5dGhvbjMtaW8gXAotICBweXRob24zLWpzb24gXAotICBweXRob24zLXNoZWxsIFwKLSAgcHl0aG9uMy1waWNrbGUgXAotICBweXRob24zLXBwcmludCBcCi0gICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnNfMy4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxMTdhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4yLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiU29mdHdhcmUgQ29uc3RydWN0aW9uIHRvb2wgKG1ha2UvYXV0b3Rvb2xzIHJlcGxhY2VtZW50KSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L0xJQ0VOU0UtcHl0aG9uMy1zY29ucy0ke1BWfTttZDU9ZTE0ZTFiMzM0MjhkZjI0YTQwYTc4MmFlMTQyNzg1ZDAiCisKKyMgcHlwaSBwYWNrYWdlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBsaWNlbnNlIGZpbGUKK1NSQ19VUkkgKz0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9TQ29ucy9zY29ucy8ke1BWfS9MSUNFTlNFO2Rvd25sb2FkZmlsZW5hbWU9TElDRU5TRS1weXRob24zLXNjb25zLSR7UFZ9O25hbWU9bGljZW5zZSIKKworU1JDX1VSSVttZDVzdW1dID0gImY5YzRhZDA2ZGNmMTQyN2JlOTU0NzJlYWYzODBjODFhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhYWE0ODNjMzAzZWZlYjY3OGU2ZjdjNzc2Yzg0NDRhNDgyZjhkZGMzYWQ4OTFmOGI2Y2RkMzUyNjRkYTlhMWYiCitTUkNfVVJJW2xpY2Vuc2UubWQ1c3VtXSA9ICJlMTRlMWIzMzQyOGRmMjRhNDBhNzgyYWUxNDI3ODVkMCIKK1NSQ19VUklbbGljZW5zZS5zaGEyNTZzdW1dID0gIjcyZWQ4ODkxNjVmYjI4Mzc4Y2FkYWMxNDU1MmJlNGE5NTlmMWViYWI2YjE0OGFiYjVkZDJiNDk3MTJjM2M2ZjYiCisKK1MgPSAiJHtXT1JLRElSfS9zY29ucy0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zY29ucy5vcmcvcGFnZXMvZG93bmxvYWQuaHRtbCIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAiMXMsIyEuKnB5dGhvbi4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywiICR7U30vc2NyaXB0LyoKK30KKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKKyAgcHl0aG9uMy1jb3JlIFwKKyAgcHl0aG9uMy1mY250bCBcCisgIHB5dGhvbjMtaW8gXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLXNoZWxsIFwKKyAgcHl0aG9uMy1waWNrbGUgXAorICBweXRob24zLXBwcmludCBcCisgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhZjhkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYzM5ZDA4OTY5MzBlMjVjMjI0Y2M4OTc2NjBmYzg1MTFjY2FlMzBjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIzIEFwciAyMDIwIDEwOjAxOjEyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNoYW5nZSBzaGViYW5nIHRvIHB5dGhvbjMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBwa2dfcmVzb3VyY2VzL192ZW5kb3IvYXBwZGlycy5weSAgIHwgMiArLQorIHNldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wa2dfcmVzb3VyY2VzL192ZW5kb3IvYXBwZGlycy5weSBiL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB5CitpbmRleCBhZTY3MDAxLi45MzNlMzk4IDEwMDY0NAorLS0tIGEvcGtnX3Jlc291cmNlcy9fdmVuZG9yL2FwcGRpcnMucHkKKysrKyBiL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAjIENvcHlyaWdodCAoYykgMjAwNS0yMDEwIEFjdGl2ZVN0YXRlIFNvZnR3YXJlIEluYy4KKyAjIENvcHlyaWdodCAoYykgMjAxMyBFZGR5IFBldHJpyJlvcgorZGlmZiAtLWdpdCBhL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkgYi9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CitpbmRleCBhYmNhMWFlLi42YmNkYzk4IDEwMDY0NAorLS0tIGEvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQorKysrIGIvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIEVhc3kgSW5zdGFsbAorIC0tLS0tLS0tLS0tLQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180MS40LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzQ1LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180MS40LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfNDUuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5NTMxMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zaXguaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTFjMzY2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTQuMC5iYgpAQCAtMCwwICsxLDUgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXNpeC5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjIxNjc0NTg4YTU3ZTY0OWQxYTZkOTc3ZWMzMTIyMTQwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzNmJkYmRjZTQ2ZTZlNmEzZDYxYTMzN2MwZjhiNzYzY2ExZTg3MTdjMDNiMzY5ZTg3YTdlYzdjZTEzMTljMGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHMvbm9fdHJhY2ViYWNrMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29scy9ub190cmFjZWJhY2syLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NDUxMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHMvbm9fdHJhY2ViYWNrMi5wYXRjaApAQCAtMCwwICsxLDIzIEBACit0cmFjZWJhY2syIGFkZHMgdHJhY2ViYWNrIGZvciBweXRob24yLiBSYXRoZXIgdGhhbiBkZXBlbmQgb24gdHJhY2ViYWNrMiwgd2UncmUKK3B5dGhvbjMgb25seSBzbyBqdXN0IHVzZSB0cmFjZWJhY2suCitUaGlzIGNhdXNlZCBicmVha2FnZSBpbiBvZS1zZWxmdGVzdCAtaiB3aGljaCB1c2VzIHRlc3R0b29scyBvbiB0aGUgYXV0b2J1aWxkZXIKK3VzaW5nIGJ1aWxkdG9vbHMtdGFyYmFsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPdXIgcmVjaXBlIGlzIHB5dGhvbjMgc3BlY2lmaWNdCisoT25jZSBweTIgaXMgRU9MIHVwc3RyZWFtIHByb2JhYmx5IGNvdWxkL3Nob3VsZCB0YWtlIHRoaXMpCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworSW5kZXg6IHRlc3R0b29scy0yLjMuMC90ZXN0dG9vbHMvY29udGVudC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRlc3R0b29scy0yLjMuMC5vcmlnL3Rlc3R0b29scy9jb250ZW50LnB5CisrKysgdGVzdHRvb2xzLTIuMy4wL3Rlc3R0b29scy9jb250ZW50LnB5CitAQCAtMTksOCArMTksNyBAQCBpbXBvcnQgb3MKKyBpbXBvcnQgc3lzCisgCisgZnJvbSBleHRyYXMgaW1wb3J0IHRyeV9pbXBvcnQKKy0jIFRvIGxldCBzZXR1cC5weSB3b3JrLCBtYWtlIHRoaXMgYSBjb25kaXRpb25hbCBpbXBvcnQuCistdHJhY2ViYWNrID0gdHJ5X2ltcG9ydCgndHJhY2ViYWNrMicpCisraW1wb3J0IHRyYWNlYmFjaworIAorIGZyb20gdGVzdHRvb2xzLmNvbXBhdCBpbXBvcnQgKAorICAgICBfYiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYgppbmRleCA4OTZlY2VlLi5hMjU0YjkwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHNfMi4zLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiCkBAIC0xLDIgKzEsNCBAQAogaW5oZXJpdCBzZXR1cHRvb2xzMwogcmVxdWlyZSBweXRob24tdGVzdHRvb2xzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vbm9fdHJhY2ViYWNrMi5wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaAppbmRleCAwOWYyNzliLi41OTU5MjgyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1hZGQtdXNyLWxpYi10ZXJtY2FwLXRvLWxpbmtlci1mbGFncy10by1hdm9pZC0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyMzI5NGM2YmE2ODk2MTE1ODI4MjkzZmRiN2U2N2I0N2IzOGJhNjc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMzljNTNkZDViYWRkZWMzMzU5YTA1YmUwYmZmNDZhM2IzMmJiYjg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDI1IEphbiAyMDE5IDE5OjA0OjEzICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBhZGQgL3Vzci9saWIvdGVybWNhcCB0byBsaW5rZXIgZmxhZ3MgdG8gYXZvaWQgaG9zdApAQCAtMTIsMTQgKzEyLDE0IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGI0MzU3ZTMuLmZiZWMwMGQgMTAwNjQ0CitpbmRleCAyMGQ3ZjM1Li5hYjE4ZmYwIDEwMDY0NAogLS0tIGEvc2V0dXAucHkKICsrKyBiL3NldHVwLnB5Ci1AQCAtODU2LDcgKzg1Niw2IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKK0BAIC05NTcsNyArOTU3LDYgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1jYXAnKToKICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoJ3Rlcm1jYXAnKQotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9WycvdXNyL2xpYi90ZXJtY2FwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3M9cmVhZGxpbmVfZXh0cmFfbGlua19hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPXJlYWRsaW5lX2xpYnMpICkKKyAgICAgICAgICAgICBzZWxmLmFkZChFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1bJy91c3IvbGliL3Rlcm1jYXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXJlYWRsaW5lX2V4dHJhX2xpbmtfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPXJlYWRsaW5lX2xpYnMpKQogICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaAppbmRleCBlYTc1MjYyLi4xMTJjOTc5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItYXMtbG9jYXRpb24tZm9yLXNpdGUtcGFja2FnZXMtYW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLWFzLWxvY2F0aW9uLWZvci1zaXRlLXBhY2thZ2VzLWFuLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwZmJkYWQxZWFmNTQxYThlOTJiZTgxZjM5NTE0Y2QyNDliM2IwODAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMDc4YjZmZjE0OTJlODQ4YWQxMDU1NzY0ZmI5YTQxNGFiYWYzZTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDUgRmViIDIwMTkgMTU6NTI6MDIgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRjb2RlICJsaWIiIGFzIGxvY2F0aW9uIGZvciBtb2R1bGVzLCBzaXRlLXBhY2thZ2VzCkBAIC0xMSwxMyArMTEsMTMgQEAKICBJbmNsdWRlL3B5dGhvbnJ1bi5oICB8ICAyICsrCiAgTGliL3NpdGUucHkgICAgICAgICAgfCAgNCArKy0tCiAgTWFrZWZpbGUucHJlLmluICAgICAgfCAgNSArKystLQotIE1vZHVsZXMvZ2V0cGF0aC5jICAgIHwgMTggKysrKysrKysrKysrLS0tLS0tCisgTW9kdWxlcy9nZXRwYXRoLmMgICAgfCAyMiArKysrKysrKysrKysrKy0tLS0tLS0tCiAgUHl0aG9uL2dldHBsYXRmb3JtLmMgfCAxMCArKysrKysrKysrCiAgUHl0aG9uL3N5c21vZHVsZS5jICAgfCAgMiArKwotIDYgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisgNiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1pbmRleCA2ZjBjNmZjLi4wYTE3ZWRkIDEwMDY0NAoraW5kZXggNDYwOTFlMC4uNjFiMmUxNSAxMDA2NDQKIC0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKICsrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKIEBAIC03LDYgKzcsOCBAQApAQCAtMjgsMTIgKzI4LDEyIEBACiArCiAgI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9TaW1wbGVTdHJpbmdGbGFncyhjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKLSBQeUFQSV9GVU5DKGludCkgUHlSdW5fQW55RmlsZUZsYWdzKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CisgUHlBUElfRlVOQyhpbnQpIFB5UnVuX0FueUZpbGVFeEZsYWdzKAogZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKLWluZGV4IGZmZDEzMmIuLmI1NWY2ZDggMTAwNjQ0CitpbmRleCBhMDY1YWIwLi4xZDcyMGVmIDEwMDY0NAogLS0tIGEvTGliL3NpdGUucHkKICsrKyBiL0xpYi9zaXRlLnB5Ci1AQCAtMzM0LDEyICszMzQsMTIgQEAgZGVmIGdldHNpdGVwYWNrYWdlcyhwcmVmaXhlcz1Ob25lKToKK0BAIC0zMzUsMTIgKzMzNSwxMiBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICAgICAgc2Vlbi5hZGQocHJlZml4KQogIAogICAgICAgICAgaWYgb3Muc2VwID09ICcvJzoKQEAgLTQ5LDEwICs0OSwxMCBAQAogIAogIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgogZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggNmU4MWIyZi4uNjcxYTIwZSAxMDA2NDQKK2luZGV4IDY1NjY1ZGYuLmJlNDkxNDAgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5wcmUuaW4KICsrKyBiL01ha2VmaWxlLnByZS5pbgotQEAgLTE0Miw3ICsxNDIsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTE0Myw3ICsxNDMsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTYxLDcgKzYxLDcgQEAKICBBQklGTEFHUz0JQEFCSUZMQUdTQAogIAogICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKLUBAIC03NjgsNiArNzY4LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYyBNYWtlZmlsZQorQEAgLTc1Myw2ICs3NTMsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtNjksNyArNjksNyBAQAogIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCiAgCiAgUHJvZ3JhbXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9weXRob24uYwotQEAgLTg1Niw3ICs4NTcsNyBAQCByZWdlbi1vcGNvZGU6CitAQCAtODY4LDcgKzg2OSw3IEBAIHJlZ2VuLXN5bWJvbDogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaAogIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdF91bnBhcnNlLm8gUHl0aG9uL2FzdC5vIFB5dGhvbi9mdXR1cmUubyBQYXJzZXIvcGFyc2V0b2subzogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKHNyY2RpcikvSW5jbHVkZS9QeXRob24tYXN0LmgKICAKICBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC03OSw3MiArNzksOTAgQEAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldHBhdGguYyBiL01vZHVsZXMvZ2V0cGF0aC5jCi1pbmRleCBlNmEzZThlLi4wYzYyYWY2IDEwMDY0NAoraW5kZXggYjcyN2Y2Ni4uYzAwM2U0NiAxMDA2NDQKIC0tLSBhL01vZHVsZXMvZ2V0cGF0aC5jCiArKysgYi9Nb2R1bGVzL2dldHBhdGguYwotQEAgLTEyMyw2ICsxMjMsNyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgIHdjaGFyX3QgKmV4ZWNfcHJlZml4OyAgICAgICAgICAgICAgLyogRVhFQ19QUkVGSVggZGVmaW5lICovCitAQCAtMTI4LDYgKzEyOCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgd2NoYXJfdCAqZXhlY19wcmVmaXg7ICAgICAgICAgICAgICAvKiBFWEVDX1BSRUZJWCBtYWNybyAqLwogIAogICAgICB3Y2hhcl90ICpsaWJfcHl0aG9uOyAgICAgICAgICAgICAgIC8qICJsaWIvcHl0aG9uWC5ZIiAqLwogKyAgICB3Y2hhcl90ICptdWx0aWxpYl9weXRob247ICAgICAgICAgICAgICAgLyogImxpYltzdWZmaXhdL3B5dGhvblguWSIgKi8KLSAgICAgd2NoYXJfdCBhcmd2MF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgIHdjaGFyX3QgemlwX3BhdGhbTUFYUEFUSExFTisxXTsgICAgLyogIi4uLi9saWIvcHl0aG9uWFkuemlwIiAqLwogIAotQEAgLTMxNCw3ICszMTUsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKKyAgICAgaW50IHByZWZpeF9mb3VuZDsgICAgICAgICAvKiBmb3VuZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBsaWJyYXJpZXM/ICovCisgICAgIGludCBleGVjX3ByZWZpeF9mb3VuZDsgICAgLyogZm91bmQgdGhlIHBsYXRmb3JtIGRlcGVuZGVudCBsaWJyYXJpZXM/ICovCitAQCAtMzg2LDcgKzM4Nyw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAogICAgICAgICAgaWYgKGRlbGltKSB7CiAgICAgICAgICAgICAgKmRlbGltID0gTCdcMCc7CiAgICAgICAgICB9Ci0tICAgICAgICBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbik7Ci0rICAgICAgICBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgICAgIGpvaW5wYXRoKHByZWZpeCwgTEFORE1BUkspOwotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLUBAIC0zNDMsNyArMzQ0LDcgQEAgc2VhcmNoX2Zvcl9wcmVmaXgoY29uc3QgX1B5Q29yZUNvbmZpZyAqY29yZV9jb25maWcsCi0gICAgIGNvcHlfYWJzb2x1dGUocHJlZml4LCBjYWxjdWxhdGUtPmFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgIGRvIHsKLSAgICAgICAgIG4gPSB3Y3NsZW4ocHJlZml4KTsKLS0gICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pOwotICAgICAgICAgam9pbnBhdGgocHJlZml4LCBMQU5ETUFSSyk7Ci0gICAgICAgICBpZiAoaXNtb2R1bGUocHJlZml4KSkgewotICAgICAgICAgICAgIHJldHVybiAxOwotQEAgLTM1NSw3ICszNTYsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgLyogTG9vayBhdCBjb25maWd1cmUncyBQUkVGSVggKi8KLSAgICAgd2NzbmNweShwcmVmaXgsIGNhbGN1bGF0ZS0+cHJlZml4LCBNQVhQQVRITEVOKTsKLSAgICAgcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7Ci0tICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgIGpvaW5wYXRoKHByZWZpeCwgTEFORE1BUkspOwotICAgICBpZiAoaXNtb2R1bGUocHJlZml4KSkgewotICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtNDI3LDcgKzQyOCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoY29uc3QgX1B5Q29yZUNvbmZpZyAqY29yZV9jb25maWcsCi0gICAgICAgICAgICAgd2NzbmNweShleGVjX3ByZWZpeCwgY29yZV9jb25maWctPmhvbWUsIE1BWFBBVEhMRU4pOworLSAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIHByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisgICAgICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAgICAgIH0KLSAgICAgICAgIGV4ZWNfcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7Ci0tICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgTCJsaWItZHlubG9hZCIpOwotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLUBAIC00NjQsNyArNDY1LDcgQEAgc2VhcmNoX2Zvcl9leGVjX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgY29weV9hYnNvbHV0ZShleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5hcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEpOworQEAgLTQ0NCw3ICs0NDUsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgX1B5UGF0aENvbmZpZyAqcGF0aGNvbmZpZywKICAgICAgZG8gewotICAgICAgICAgbiA9IHdjc2xlbihleGVjX3ByZWZpeCk7Ci0tICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgTCJsaWItZHlubG9hZCIpOwotICAgICAgICAgaWYgKGlzZGlyKGV4ZWNfcHJlZml4KSkgewotICAgICAgICAgICAgIHJldHVybiAxOwotQEAgLTQ3Niw3ICs0NzcsNyBAQCBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KGNvbnN0IF9QeUNvcmVDb25maWcgKmNvcmVfY29uZmlnLAotICAgICAvKiBMb29rIGF0IGNvbmZpZ3VyZSdzIEVYRUNfUFJFRklYICovCi0gICAgIHdjc25jcHkoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+ZXhlY19wcmVmaXgsIE1BWFBBVEhMRU4pOwotICAgICBleGVjX3ByZWZpeFtNQVhQQVRITEVOXSA9IEwnXDAnOwotLSAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIEwibGliLWR5bmxvYWQiKTsKLSAgICAgaWYgKGlzZGlyKGV4ZWNfcHJlZml4KSkgewotICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtODcxLDYgKzg3MiwxMCBAQCBjYWxjdWxhdGVfaW5pdChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwKKyAgICAgICAgIC8qIFBhdGg6IDxhcmd2MF9wYXRoIG9yIHN1YnN0cmluZz4gLyA8bGliX3B5dGhvbj4gLyBMQU5ETUFSSyAqLworICAgICAgICAgc2l6ZV90IG4gPSB3Y3NsZW4ocHJlZml4KTsKKy0gICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKysgICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIHByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNDY3LDcgKzQ2OCw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAorICAgICBpZiAoc2FmZV93Y3NjcHkocHJlZml4LCBjYWxjdWxhdGUtPnByZWZpeCwgcHJlZml4X2xlbikgPCAwKSB7CisgICAgICAgICByZXR1cm4gUEFUSExFTl9FUlIoKTsKKyAgICAgfQorLSAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisrICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIHByZWZpeF9sZW4pOworICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICB9CitAQCAtNTEwLDcgKzUxMSw3IEBAIGNhbGN1bGF0ZV9wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgICAgICBpZiAoc2FmZV93Y3NjcHkocHJlZml4LCBjYWxjdWxhdGUtPnByZWZpeCwgcHJlZml4X2xlbikgPCAwKSB7CisgICAgICAgICAgICAgcmV0dXJuIFBBVEhMRU5fRVJSKCk7CisgICAgICAgICB9CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKyAgICAgICAgIGlmIChfUHlTdGF0dXNfRVhDRVBUSU9OKHN0YXR1cykpIHsKKyAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgfQorQEAgLTYzNSw3ICs2MzYsNyBAQCBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAorICAgICAgICAgICAgICAgICByZXR1cm4gUEFUSExFTl9FUlIoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNjY3LDcgKzY2OCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgIGRvIHsKKyAgICAgICAgIC8qIFBhdGg6IDxhcmd2MF9wYXRoIG9yIHN1YnN0cmluZz4gLyA8bGliX3B5dGhvbj4gLyAibGliLWR5bmxvYWQiICovCisgICAgICAgICBzaXplX3QgbiA9IHdjc2xlbihleGVjX3ByZWZpeCk7CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNjg5LDcgKzY5MCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgIGlmIChzYWZlX3djc2NweShleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5leGVjX3ByZWZpeCwgZXhlY19wcmVmaXhfbGVuKSA8IDApIHsKKyAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICB9CistICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIGV4ZWNfcHJlZml4X2xlbik7CisrICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgZXhlY19wcmVmaXhfbGVuKTsKKyAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgfQorQEAgLTkyOCw3ICs5MjksNyBAQCBjYWxjdWxhdGVfYXJndjBfcGF0aChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgY29uc3Qgd2NoYXJfdCAqcHJvZ3JhbV9mdWxsX3BhdAorICAgICAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICAgICAgfQorICAgICAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOworLSAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoYXJndjBfcGF0aCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBhcmd2MF9wYXRoX2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChhcmd2MF9wYXRoLCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgYXJndjBfcGF0aF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKK0BAIC0xMjAxLDYgKzEyMDIsMTAgQEAgY2FsY3VsYXRlX2luaXQoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIGNvbnN0IFB5Q29uZmlnICpjb25maWcpCiAgICAgIGlmICghY2FsY3VsYXRlLT5saWJfcHl0aG9uKSB7CiAgICAgICAgICByZXR1cm4gREVDT0RFX0xPQ0FMRV9FUlIoIkVYRUNfUFJFRklYIGRlZmluZSIsIGxlbik7CiAgICAgIH0KQEAgLTE1MiwxMCArMTcwLDEwIEBACiArICAgIGlmICghY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pIHsKICsgICAgICAgIHJldHVybiBERUNPREVfTE9DQUxFX0VSUigiRVhFQ19QUkVGSVggZGVmaW5lIiwgbGVuKTsKICsgICAgfQotICAgICByZXR1cm4gX1B5X0lOSVRfT0soKTsKLSB9CiAgCi1AQCAtODgyLDYgKzg4Nyw3IEBAIGNhbGN1bGF0ZV9mcmVlKFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlKQorICAgICBjYWxjdWxhdGUtPndhcm5pbmdzID0gY29uZmlnLT5wYXRoY29uZmlnX3dhcm5pbmdzOworICAgICBjYWxjdWxhdGUtPnB5dGhvbnBhdGhfZW52ID0gY29uZmlnLT5weXRob25wYXRoX2VudjsKK0BAIC0xMjE2LDYgKzEyMjEsNyBAQCBjYWxjdWxhdGVfZnJlZShQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSkKICAgICAgUHlNZW1fUmF3RnJlZShjYWxjdWxhdGUtPnByZWZpeCk7CiAgICAgIFB5TWVtX1Jhd0ZyZWUoY2FsY3VsYXRlLT5leGVjX3ByZWZpeCk7CiAgICAgIFB5TWVtX1Jhd0ZyZWUoY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKQEAgLTE4MiwxMCArMjAwLDEwIEBACiArCXJldHVybiBMSUI7CiArfQogZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotaW5kZXggZWZlNWIyOS4uZGU3N2IxNyAxMDA2NDQKK2luZGV4IDViMGZiODEuLjBkY2U3NTQgMTAwNjQ0CiAtLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKICsrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTIzMTksNiArMjMxOSw4IEBAIF9QeVN5c19CZWdpbkluaXQoUHlPYmplY3QgKipzeXNtb2QpCitAQCAtMjY2OCw2ICsyNjY4LDggQEAgX1B5U3lzX0luaXRDb3JlKF9QeVJ1bnRpbWVTdGF0ZSAqcnVudGltZSwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvbi10LXNlYXJjaC1zeXN0ZW0tZm9yLWhlYWRlcnMtbGlicmFyaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZjhlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvbi10LXNlYXJjaC1zeXN0ZW0tZm9yLWhlYWRlcnMtbGlicmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gODVlOGY4NmFkMmI3ZGVjMDg0OGNkNTViOGU4MTBhNWUyNzIyYjIwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCA0IE1hciAyMDIwIDAwOjA2OjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHNlYXJjaCBzeXN0ZW0gZm9yIGhlYWRlcnMvbGlicmFyaWVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgc2V0dXAucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggOWRhMWIzYS4uNTk3ODJjMCAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTY3NCw4ICs2NzQsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIklOQ0xVREVESVIiKSkKKyAKKy0gICAgICAgIHN5c3RlbV9saWJfZGlycyA9IFsnL2xpYjY0JywgJy91c3IvbGliNjQnLCAnL2xpYicsICcvdXNyL2xpYiddCistICAgICAgICBzeXN0ZW1faW5jbHVkZV9kaXJzID0gWycvdXNyL2luY2x1ZGUnXQorKyAgICAgICAgc3lzdGVtX2xpYl9kaXJzID0gW10KKysgICAgICAgIHN5c3RlbV9pbmNsdWRlX2RpcnMgPSBbXQorICAgICAgICAgIyBsaWJfZGlycyBhbmQgaW5jX2RpcnMgYXJlIHVzZWQgdG8gc2VhcmNoIGZvciBmaWxlczsKKyAgICAgICAgICMgaWYgYSBmaWxlIGlzIGZvdW5kIGluIG9uZSBvZiB0aG9zZSBkaXJlY3RvcmllcywgaXQgY2FuCisgICAgICAgICAjIGJlIGFzc3VtZWQgdGhhdCBubyBhZGRpdGlvbmFsIC1JLC1MIGRpcmVjdGl2ZXMgYXJlIG5lZWRlZC4KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtTWFrZWZpbGUtZG8tbm90LWNvbXBpbGUtLnB5Yy1pbi1wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtTWFrZWZpbGUtZG8tbm90LWNvbXBpbGUtLnB5Yy1pbi1wYXJhbGxlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWJjZWFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1NYWtlZmlsZS1kby1ub3QtY29tcGlsZS0ucHljLWluLXBhcmFsbGVsLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gYzUwMWUxMjFhODcyY2JjZWY4ZmZlNjI2YzFkZTE3M2ExMjViZTlmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNiBKYW4gMjAyMCAxMjozNDoyMCArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogZG8gbm90IGNvbXBpbGUgLnB5YyBpbiBwYXJhbGxlbAorCitUaGlzIHdhcyBmb3VuZCB0byBicmVhayByZXByb2R1Y2liaWxpdHksIGFuZCBwcm9kdWNlIHN0cmFuZ2UgZmlsZSBvd25lcnNoaXAKK3JhY2VzLgorCitUaGUgdXBzdHJlYW0gY29tbWl0IGludHJvZHVjaW5nIHRoZSBjaGFuZ2Ugd2FzOgoraHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8xYTJkZDgyZjU2YmQ4MTNhYWNjNTcwZTE3MmNlZmU1NWE4YTQxNTA0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5wcmUuaW4gfCAxMiArKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCitpbmRleCAxMjQxMTEyLi41ZGZkZjQ0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xNDU3LDMwICsxNDU3LDMwIEBAIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCisgCWZpCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAorIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKSAtZiBcCisrCQktZCAkKExJQkRFU1QpIC1mIFwKKyAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorIAkJJChERVNURElSKSQoTElCREVTVCkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkgLWYgXAorKwkJLWQgJChMSUJERVNUKSAtZiBcCisgCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKKyAJCSQoREVTVERJUikkKExJQkRFU1QpCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisgCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtT08gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKSAtZiBcCisrCQktZCAkKExJQkRFU1QpIC1mIFwKKyAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorIAkJJChERVNURElSKSQoTElCREVTVCkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisrCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisrCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKy0JCS1qMCAtZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorKwkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKKyAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisgCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaAppbmRleCBlN2FmODg2Li5jNGZhZTA5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1icG8tMzY4NTItcHJvcGVyLWRldGVjdGlvbi1vZi1taXBzLWFyY2hpdGVjdHVyZS1mb3ItLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3NTM1YzM5OTUxYjlkMTVkZDY0YzQ2NjkwOTJhODU4MmJhNTU1NDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYWQ3NzFkODY3MjhlZTJlZDMwZTIwMmU5NzY4ZDhkODI1Zjk2NDY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWF0dGhpYXMgU2Nob2VwZmVyIDxtYXR0aGlhcy5zY2hvZXBmZXJAaXRoaW54LmlvPgogRGF0ZTogRnJpLCAzMSBNYXkgMjAxOSAxNTozNDozNCArMDIwMAogU3ViamVjdDogW1BBVENIXSBicG8tMzY4NTI6IHByb3BlciBkZXRlY3Rpb24gb2YgbWlwcyBhcmNoaXRlY3R1cmUgZm9yIHNvZnQKQEAgLTEyLDE1ICsxMiwxNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMTMxOTZdCiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBTY2hvZXBmZXIgPG1hdHRoaWFzLnNjaG9lcGZlckBpdGhpbnguaW8+CisKKyUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2gKIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDE2OSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDE3NSArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhN2RlOTAxZTA4Li5hNzNlMmRlNTFiIDEwMDY0NAoraW5kZXggZWRlNzEwZS4uYmM4MWIwYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzI3LDE1OCArNzI3LDIzIEBAIGZpCitAQCAtNzEwLDE2MCArNzEwLDI3IEBAIGZpCiAgTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQogIEFDX1NVQlNUKE1VTFRJQVJDSCkKICAKQEAgLTE2Myw2ICsxNjUsOCBAQAogLSAgICAgICAgaTM4Ni1nbnUKIC0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIC0gICAgICAgIGRhcndpbgorLSNlbGlmIGRlZmluZWQoX19WWFdPUktTX18pCistICAgICAgICB2eHdvcmtzCiAtI2Vsc2UKIC0jIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAogLSNlbmRpZgpAQCAtMTkwLDEyICsxOTQsMTYgQEAKICsgICAgIAlQTEFURk9STV9UUklQTEVUPXZ4d29ya3MKICsJOzsKICsgICAgICopCi0rCVBMQVRGT1JNX1RSSVBMRVQ9JHt0YXJnZXRfY3B1fS0ke3RhcmdldF9vc30KKysgICAgICAgIGlmIHRlc3QgIiR7dGFyZ2V0X2NwdX0iICE9ICJpNjg2IjsgdGhlbgorKwkJUExBVEZPUk1fVFJJUExFVD0ke3RhcmdldF9jcHV9LSR7dGFyZ2V0X29zfQorKwllbHNlCisrCQlQTEFURk9STV9UUklQTEVUPWkzODYtJHt0YXJnZXRfb3N9CisrCWZpCiArCTs7CiArZXNhYwkKICAKICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgogICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KIC0tIAotMi4yMS4wCisyLjI0LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyM2NlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhY2NlM2Q0NDFlN2VhZGFkZDJkM2NlMzg2NTQxNTVkYzQzZjFmNjA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNyBGZWIgMjAyMCAwOTozNjoyNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGZpeCBMSUJQTAorCitVc2UgTElCRElSIHJhdGhlciB0aGFuIHByZWZpeC9saWIsIHNvIHRoYXQgaXQgd291bGQgd29yayB3aGVuIGxpYjY0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuYz4KK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZTA0MjU4Li45MTVmNDc1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00NTMyLDkgKzQ1MzIsOSBAQCBmaQorIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgorIEFDX1NVQlNUKFBZX0VOQUJMRV9TSEFSRUQpCisgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCistICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKKysgIExJQlBMPSckKExJQkRJUiknIi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCisgZWxzZQorLSAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKKysgIExJQlBMPSckKExJQkRJUiknIi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKKyBmaQorIEFDX1NVQlNUKExJQlBMKQorCistLQorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoCmluZGV4IDE3MDkwMTEuLmU3YWYzYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGVmZjkwM2M2MDBmNGM0MGY1NzUzZTk1YWIxNTU3MTI2ZmM2ZTBjOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdhZGE5Yzc0OWY2YmViNTFjMTNhM2RlYmM4NTA3NTVlOTExNTQ4YTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgSmFuIDIwMTkgMTY6NDY6MzAgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gZGlzdHV0aWxzL3N5c2NvbmZpZzogYXBwZW5kCkBAIC0xNSwxMCArMTUsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggMGEwMzRlZS4uM2RmZDBhMyAxMDA2NDQKK2luZGV4IGI1MTYyOWUuLjJkZjM0OGMgMTAwNjQ0CiAtLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQogKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC00MzksNiArNDM5LDggQEAgZGVmIF9pbml0X3Bvc2l4KCk6CitAQCAtNDM4LDYgKzQzOCw4IEBAIGRlZiBfaW5pdF9wb3NpeCgpOgogICAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAogICAgICAgICAgbXVsdGlhcmNoPWdldGF0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcsICcnKSwKICAgICAgKSkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKIGRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQotaW5kZXggODdmYTVlNi4uNzU2YTQxYyAxMDA2NDQKK2luZGV4IGIyZDc5MGIuLjQwNTI3M2MgMTAwNjQ0CiAtLS0gYS9MaWIvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvc3lzY29uZmlnLnB5CiBAQCAtNDE5LDYgKzQxOSw4IEBAIGRlZiBfaW5pdF9wb3NpeCh2YXJzKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0NmM3NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLW1haW4uYy1pZi1PRVBZVEhPTjNIT01FLWlzLXNldC11c2UtaW5zdGVhZC1vZi1QWVRIT04ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDVjZTNhYzU5NTMxODI4ZmY2ODI2NDZmYmJhNTliMjEyNmIyOGE4YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWV3b24gTGVlIDxqYWV3b24ubGVlQHhpbGlueC5jb20+Ci1EYXRlOiBUaHUsIDI1IEFwciAyMDE5IDE1OjM0OjI2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1haW4uYzogaWYgT0VQWVRIT04zSE9NRSBpcyBzZXQgdXNlIGluc3RlYWQgb2YgUFlUSE9OSE9NRQotCi1UaGVyZSBpcyBvbmUgdmFyaWFibGUgUFlUSE9OSE9NRSB0byBkZXRlcm1pbmUgd2hlcmUgbGlicmFyaWVzIGFyZSBjb21pbmcKLWZyb20gZm9yIGJvdGggcHl0aG9uMiBhbmQgcHl0aG9uMy4gVGhpcyBiZWNvbWVzIGFuIGlzc3VlIGlmIG9ubHkgb25lIGhhcwotbGlicmFyaWVzIGluIHRoZSBzcGVjaWZpZWQgUFlUSE9OSE9NRSBwYXRoLCBidXQgdGhleSBhcmUgdXNpbmcgdGhlIHNhbWUKLVBZVEhPTkhPTUUuIENyZWF0aW5nIGFub3RoZXIgdmFyaWFibGUgT0VQWVRIT04zSE9NRSB0byBhbGxvdyBmb3IgYSB3YXkKLXRvIHNldCBhIGRpZmZlcmVudCBwYXRoIGZvciBweXRob24zCi0KLVNpZ25lZC1vZmYtYnk6IEphZXdvbiBMZWUgPGphZXdvbi5sZWVAeGlsaW54LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpYyBjb25maWd1cmF0aW9uXQotCi0tLS0KLSBNb2R1bGVzL21haW4uYyB8IDE3ICsrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9Nb2R1bGVzL21haW4uYyBiL01vZHVsZXMvbWFpbi5jCi1pbmRleCBhY2M1OWM2Li40MDcwODVhIDEwMDY0NAotLS0tIGEvTW9kdWxlcy9tYWluLmMKLSsrKyBiL01vZHVsZXMvbWFpbi5jCi1AQCAtMTgzNCwxMCArMTgzNCwxOSBAQCBjb25maWdfaW5pdF9ob21lKF9QeUNvcmVDb25maWcgKmNvbmZpZykKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBfUHlfSU5JVF9PSygpOwotICAgICB9Ci0tCi0tICAgIGludCByZXMgPSBjb25maWdfZ2V0X2Vudl92YXJfZHVwKCZob21lLCBMIlBZVEhPTkhPTUUiLCAiUFlUSE9OSE9NRSIpOwotLSAgICBpZiAocmVzIDwgMCkgewotLSAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJQWVRIT05IT01FIiwgcmVzKTsKLSsgICAgaW50IHJlczsKLSsgICAgY29uc3QgY2hhciAqb2VweXRob24zaG9tZSA9IGNvbmZpZ19nZXRfZW52X3ZhcigiT0VQWVRIT04zSE9NRSIpOwotKyAgICBpZiAob2VweXRob24zaG9tZSkgewotKyAgICAgICAgcmVzID0gY29uZmlnX2dldF9lbnZfdmFyX2R1cCgmaG9tZSwgTCJPRVBZVEhPTjNIT01FIiwgIk9FUFlUSE9OM0hPTUUiKTsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJPRVBZVEhPTjNIT01FIiwgcmVzKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBlbHNlIHsKLSsgICAgICAgIHJlcyA9IGNvbmZpZ19nZXRfZW52X3Zhcl9kdXAoJmhvbWUsIEwiUFlUSE9OSE9NRSIsICJQWVRIT05IT01FIik7Ci0rICAgICAgICBpZiAocmVzIDwgMCkgewotKyAgICAgICAgICAgIHJldHVybiBERUNPREVfTE9DQUxFX0VSUigiUFlUSE9OSE9NRSIsIHJlcyk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgY29uZmlnLT5ob21lID0gaG9tZTsKLSAgICAgcmV0dXJuIF9QeV9JTklUX09LKCk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtRG8tbm90LWhhcmRjb2RlLWxpYi1mb3ItZGlzdHV0aWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLURvLW5vdC1oYXJkY29kZS1saWItZm9yLWRpc3R1dGlscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTAzMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLURvLW5vdC1oYXJkY29kZS1saWItZm9yLWRpc3R1dGlscy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGJiNzExYjUzZjEwZDMyYTkwYTI3Y2NmNGIwZGM1MWU0YTcwMWQ4NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCA3IEZlYiAyMDIwIDA5OjQyOjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjM6IERvIG5vdCBoYXJkY29kZSAibGliIiBmb3IgZGlzdHV0aWxzCisKK0dldCB0aGUgc3lzLmxpYiBmcm9tIHB5dGhvbjMgaXRzZWxmIGFuZCBkbyBub3QgdXNlCitoYXJkY29kZWQgdmFsdWUgb2YgJ2xpYicgZm9yIGRpc3R1dGlscy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitpbmRleCBjNjI1Yzk1Li44ZTMyZjU0IDEwMDY0NAorLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitAQCAtMTksNiArMTksOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQorIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCisgSEFTX1VTRVJfU0lURSA9IFRydWUKKworK2xpYm5hbWUgPSBzeXMubGliCisrCisgV0lORE9XU19TQ0hFTUUgPSB7CisgICAgICdwdXJlbGliJzogJyRiYXNlL0xpYi9zaXRlLXBhY2thZ2VzJywKKyAgICAgJ3BsYXRsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAorQEAgLTI5LDggKzMxLDggQEAgV0lORE9XU19TQ0hFTUUgPSB7CisKKyBJTlNUQUxMX1NDSEVNRVMgPSB7CisgICAgICd1bml4X3ByZWZpeCc6IHsKKy0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICckYmFzZS8nICsgbGlibmFtZSArICcvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJyArIGxpYm5hbWUgKyAnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAorICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydCRhYmlmbGFncy8kZGlzdF9uYW1lJywKKyAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCisgICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCistLQorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoCmluZGV4IGEwZWE4OTcuLmZiMTBjYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtcHl0aG9uMy11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI2NDUzMTdmZWYwOWFmZTMxYjAxYmIyYzFkNGZlNWI5YWZkYmIxMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk5NDc4M2RhNWMyMWNhYjgxYjY1ODllZDJkNDI3NWU2NjVhOTQ2ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyMiBPY3QgMjAxOCAxNToxOTo1MSArMDgwMAogU3ViamVjdDogW1BBVENIXSBweXRob24zOiB1c2UgY2NfYmFzZW5hbWUgdG8gcmVwbGFjZSBDQyBmb3IgY2hlY2tpbmcgY29tcGlsZXIKQEAgLTIxLDEyICsyMSwxMyBAQAogcGF0Y2ggb3JpZ2luYWxseSBmcm9tIExpIFpob3UsIEkganVzdCByZXdvcmsgaXQgdG8gbmV3IHZlcnNpb24KIAogU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhN2RlOTAxLi40YTM2ODFmIDEwMDY0NAoraW5kZXggYTE4OWQ0Mi4uMGY4NTQ4NiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtNTQsNiArNTQsNyBAQCBBQ19DT05GSUdfSEVBREVSKHB5Y29uZmlnLmgpCkBAIC0zNyw3ICszOCw3IEBACiAgCiAgIyBweWJ1aWxkZGlyLnR4dCB3aWxsIGJlIGNyZWF0ZWQgYnkgLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHRoZSBNYWtlZmlsZQogIHJtIC1mIHB5YnVpbGRkaXIudHh0Ci1AQCAtNjk1LDcgKzY5Niw3IEBAIEFDX01TR19SRVNVTFQoJHdpdGhfY3h4X21haW4pCitAQCAtNjcxLDcgKzY3Miw3IEBAIEFDX01TR19SRVNVTFQoJHdpdGhfY3h4X21haW4pCiAgcHJlc2V0X2N4eD0iJENYWCIKICBpZiB0ZXN0IC16ICIkQ1hYIgogIHRoZW4KQEAgLTQ2LDcgKzQ3LDcgQEAKICAgICAgICAgIGdjYykgICAgQUNfUEFUSF9UT09MKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OwogICAgICAgICAgY2MpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CiAgICAgICAgICBjbGFuZ3wqL2NsYW5nKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2NsYW5nKytdLCBbY2xhbmcrK10sIFtub3Rmb3VuZF0pIDs7Ci1AQCAtOTc5LDcgKzk4MCw3IEBAIHJtZGlyIENhc2VTZW5zaXRpdmVUZXN0RGlyCitAQCAtOTU3LDcgKzk1OCw3IEBAIHJtZGlyIENhc2VTZW5zaXRpdmVUZXN0RGlyCiAgCiAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogIGhwKnxIUCopCkBAIC01NSw3ICs1Niw3IEBACiAgICAgIGNjfCovY2MpIENDPSIkQ0MgLUFlIjs7CiAgICAgIGVzYWM7OwogIGVzYWMKLUBAIC0xMzM2LDcgKzEzMzcsNyBAQCBlbHNlCitAQCAtMTMzNSw3ICsxMzM2LDcgQEAgZWxzZQogIGZpXSwKICBbQUNfTVNHX1JFU1VMVChubyldKQogIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgpAQCAtNjQsNyArNjUsNyBAQAogICAgICAqY2xhbmcqKQogICAgICAgIEFDX1NVQlNUKExMVk1fQVIpCiAgICAgICAgQUNfUEFUSF9UT09MKExMVk1fQVIsIGxsdm0tYXIsICcnLCAke2xsdm1fcGF0aH0pCi1AQCAtMTQyNiw3ICsxNDI3LDcgQEAgdGhlbgorQEAgLTE0MjUsNyArMTQyNiw3IEBAIHRoZW4KICAgIGZpCiAgZmkKICBMTFZNX1BST0ZfRVJSPW5vCkBAIC03MywxNiArNzQsMTYgQEAKICAgICpjbGFuZyopCiAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwogICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgotQEAgLTE1MDAsNyArMTUwMSw3IEBAIHRoZW4KLSAgICAgICAgICAgIFdSQVA9Ii1md3JhcHYiCi0gICAgICAgICBmaQorQEAgLTE0ODYsNyArMTQ4Nyw3IEBAIGVzYWMKKyAjIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybS4gIEJBU0VDRkxBR1MgdHdlYWtzIG5lZWQgdG8gYmUgbWFkZSBldmVuIGlmIHRoZQorICMgdXNlciBzZXQgT1BULgogIAotLSAgICAgICAgY2FzZSAkQ0MgaW4KLSsgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAgICAgICAgKmNsYW5nKikKLSAgICAgICAgICAgICAgICAgY2NfaXNfY2xhbmc9MQotICAgICAgICAgICAgICAgICA7OwotQEAgLTE2MjMsNyArMTYyNCw3IEBAIHllcykKKy1jYXNlICRDQyBpbgorK2Nhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICpjbGFuZyopCisgICAgICAgICBjY19pc19jbGFuZz0xCisgICAgICAgICA7OworQEAgLTE2MjIsNyArMTYyMyw3IEBAIHllcykKICAKICAgICAgIyBJQ0MgZG9lc24ndCByZWNvZ25pemUgdGhlIG9wdGlvbiwgYnV0IG9ubHkgZW1pdHMgYSB3YXJuaW5nCiAgICAgICMjIFhYWCBkb2VzIGl0IGVtaXQgYW4gdW51c2VkIHJlc3VsdCB3YXJuaW5nIGFuZCBjYW4gaXQgYmUgZGlzYWJsZWQ/CkBAIC05MSw3ICs5Miw3IEBACiAgICAgICppY2MqKQogICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz1ubwogICAgICA7OwotQEAgLTE5NjUsNyArMTk2Niw3IEBAIHllcykKK0BAIC0xOTQzLDcgKzE5NDQsNyBAQCB5ZXMpCiAgZXNhYwogIAogICMgSUNDIG5lZWRzIC1mcC1tb2RlbCBzdHJpY3Qgb3IgZmxvYXRzIGJlaGF2ZSBiYWRseQpAQCAtMTAwLDcgKzEwMSw3IEBACiAgKmljYyopCiAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1mcC1tb2RlbCBzdHJpY3QiCiAgICAgIDs7Ci1AQCAtMjcyNyw3ICsyNzI4LDcgQEAgdGhlbgorQEAgLTI3MTEsNyArMjcxMiw3IEBAIHRoZW4KICAJCXRoZW4KICAJCQlMSU5LRk9SU0hBUkVEPSItV2wsLS1leHBvcnQtZHluYW1pYyIKICAJCWZpOzsKQEAgLTEwOSw3ICsxMTAsNyBAQAogIAkJICAqZ2NjKikKICAJCSAgICBpZiAkQ0MgLVhsaW5rZXIgLS1oZWxwIDI+JjEgfCBncmVwIGV4cG9ydC1keW5hbWljID4vZGV2L251bGwKICAJCSAgICB0aGVuCi1AQCAtNTQyOSw3ICs1NDMwLDcgQEAgaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA9IHllczsgdGhlbgorQEAgLTUzNjIsNyArNTM2Myw3IEBAIGlmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KICAgICAgIyBTb21lIHZlcnNpb25zIG9mIGdjYyBtaXNjb21waWxlIGlubGluZSBhc206CiAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQogICAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4ZWQ2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDcwMTliYTE4NGI4MjhlZDcyNTM3NTBjZjQwOWZjNTc2MGVmOTBhNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOSBKYW4gMjAyMCAxNzo0NDowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yCisgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQorCitJbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKKy4uLgorY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+CitEYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAorCisgICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQorICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCisuLi4KKyhzZWUgZGlmZiBpbiBzZXR1cC5weSkKK0l0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKK3RoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgorCitJbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCitzZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KK2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKKyhzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCitgX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCithbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgorc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KKworVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgoraHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKK0lmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCitsb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCisKK1N1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgorb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKK211bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCisuLi4KKz4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCis+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKKz4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCitUcnVlCis+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKKy4uLgorCitBbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbnNpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzZXR1cC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IGVjM2YyYTQuLmIwZjE1NDEgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNjcxLDcgKzE2NzEsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKKyAKKy0gICAgICAgIHNlbGYuYWRkKEV4dGVuc2lvbignX211bHRpcHJvY2Vzc2luZycsIG11bHRpcHJvY2Vzc2luZ19zcmNzLAorKyAgICAgICAgc2VsZi5hZGQoRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsIGxpYnJhcmllcz1bJ3B0aHJlYWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9WyJNb2R1bGVzL19tdWx0aXByb2Nlc3NpbmciXSkpCisgCisgICAgIGRlZiBkZXRlY3RfdXVpZChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDItRG9uLXQtZG8tcnVudGltZS10ZXN0LXRvLWdldC1mbG9hdC1ieXRlLW9yZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MjFlN2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotRnJvbSBmYTk2YTdmZDE5ZTE3YjljNmI0ZGQwMWMzYzM3NzRmYjM4MmRkZGM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNSBTZXAgMjAxOCAxMTo0NTo1MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBkbyBydW50aW1lIHRlc3QgdG8gZ2V0IGZsb2F0IGJ5dGUgb3JkZXIKLQotUHl0aG9uIHVzZXMgQUNfUlVOX0lGRUxTRSB0byBkZXRlcm1pbmUgdGhlIGJ5dGUgb3JkZXIgZm9yIGZsb2F0cyBhbmQgZG91YmxlcywKLWFuZCBmYWxscyBiYWNrIG9udG8gIkkgZG9uJ3Qga25vdyIgaWYgaXQgY2FuJ3QgcnVuIGNvZGUuICBUaGlzIHJlc3VsdHMgaW4KLWNyaXBwbGVkIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW4gUHl0aG9uLCBhbmQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgZmFpbC4KLQotSW5zdGVhZCBvZiBydW5uaW5nIGNvZGUsIHRha2UgYSBtYWNybyBmcm9tIGF1dG9jb25mLWFyY2hpdmUgd2hpY2ggY29tcGlsZXMgQwotd2l0aCBhIHNwZWNpYWwgZG91YmxlIGluIHdoaWNoIGhhcyBhbiBBU0NJSSByZXByZXNlbnRhdGlvbiwgYW5kIHRoZW4gZ3JlcHMgdGhlCi1iaW5hcnkgdG8gaWRlbnRpZnkgdGhlIGZvcm1hdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ1ODVdCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgfCA3MiArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCB8IDgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGEzNjgxZi4uNGFiMTlhNiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDMyOCw3NyArNDMyOCwxOSBAQCBmaQotICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKLSAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBsaXR0bGUtZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDVceDA0XHgwM1x4MDJceDAxXHhmZlx4M2ZceDQzIiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGUiID0geWVzCi0tdGhlbgotLSAgQUNfREVGSU5FKERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQsIDEsCi0tICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAotLSAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotLWZpCi0tCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBiaWctZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4NDNceDNmXHhmZlx4MDFceDAyXHgwM1x4MDRceDA1IiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGUiID0geWVzCi0rQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4KLStpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gInllcyIKLSB0aGVuCi0gICBBQ19ERUZJTkUoRE9VQkxFX0lTX0JJR19FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0gICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlIGZpcnN0XSkKLS1maQotLQotLSMgU29tZSBBUk0gcGxhdGZvcm1zIHVzZSBhIG1peGVkLWVuZGlhbiByZXByZXNlbnRhdGlvbiBmb3IgZG91Ymxlcy4KLS0jIFdoaWxlIFB5dGhvbiBkb2Vzbid0IGN1cnJlbnRseSBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zCi0tIyAoc2VlIGUuZy4sIGlzc3VlIDE3NjI1NjEpLCB3ZSBjYW4gYXQgbGVhc3QgbWFrZSBzdXJlIHRoYXQgZmxvYXQgPC0+IHN0cmluZwotLSMgY29udmVyc2lvbnMgd29yay4KLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIEFSTSBtaXhlZC1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X21peGVkX2VuZGlhbl9kb3VibGUsIFsKLS1BQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS1pbnQgbWFpbigpIHsKLS0gICAgZG91YmxlIHggPSA5MDA2MTA0MDcxODMyNTgxLjA7Ci0tICAgIGlmIChtZW1jbXAoJngsICJceDAxXHhmZlx4M2ZceDQzXHgwNVx4MDRceDAzXHgwMiIsIDgpID09IDApCi0tICAgICAgICByZXR1cm4gMDsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJuIDE7Ci0tfQotLV1dKV0sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9bm9dKV0pCi0tQUNfTVNHX1JFU1VMVCgkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLStlbGlmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAibm8iCi0gdGhlbgotLSAgQUNfREVGSU5FKERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQsIDEsCi0rICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0tICAgaW4gQVJNIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMyldKQotKyAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotK2Vsc2UKLSsgIEFDX01TR19FUlJPUihbQ2Fubm90IGlkZW50aWZ5IGZsb2F0aW5nIHBvaW50IGJ5dGUgb3JkZXJdKQotIGZpCi0gCi0gIyBUaGUgc2hvcnQgZmxvYXQgcmVwciBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjEgcmVxdWlyZXMgdGhlCi1kaWZmIC0tZ2l0IGEvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQgYi9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIxNmI5MGQKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci1AQCAtMCwwICsxLDgzIEBACi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLmh0bWwKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjCi0rIyBTWU5PUFNJUwotKyMKLSsjICAgQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4oW0FDVElPTi1JRi1UUlVFXSwgW0FDVElPTi1JRi1GQUxTRV0sIFtBQ1RJT04tSUYtVU5LTk9XTl0pCi0rIwotKyMgREVTQ1JJUFRJT04KLSsjCi0rIyAgIENoZWNrcyB0aGUgb3JkZXJpbmcgb2Ygd29yZHMgd2l0aGluIGEgbXVsdGktd29yZCBmbG9hdC4gVGhpcyBjaGVjayBpcwotKyMgICBuZWNlc3NhcnkgYmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gY2VydGFpbiBBUk0gc3lzdGVtcyksIHRoZSBmbG9hdAotKyMgICB3b3JkIG9yZGVyaW5nIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgYnl0ZSBvcmRlcmluZy4gSW4gYSBtdWx0aS13b3JkCi0rIyAgIGZsb2F0IGNvbnRleHQsICJiaWctZW5kaWFuIiBpbXBsaWVzIHRoYXQgdGhlIHdvcmQgY29udGFpbmluZyB0aGUgc2lnbgotKyMgICBiaXQgaXMgZm91bmQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHRoZSBsb3dlc3QgYWRkcmVzcy4gVGhpcwotKyMgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5zcGlyZWQgYnkgdGhlIEFDX0NfQklHRU5ESUFOIG1hY3JvIGluIGF1dG9jb25mLgotKyMKLSsjICAgVGhlIGVuZGlhbm5lc3MgaXMgZGV0ZWN0ZWQgYnkgZmlyc3QgY29tcGlsaW5nIEMgY29kZSB0aGF0IGNvbnRhaW5zIGEKLSsjICAgc3BlY2lhbCBkb3VibGUgZmxvYXQgdmFsdWUsIHRoZW4gZ3JlcHBpbmcgdGhlIHJlc3VsdGluZyBvYmplY3QgZmlsZSBmb3IKLSsjICAgY2VydGFpbiBzdHJpbmdzIG9mIEFTQ0lJIHZhbHVlcy4gVGhlIGRvdWJsZSBpcyBzcGVjaWFsbHkgY3JhZnRlZCB0byBoYXZlCi0rIyAgIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBhIHNpbXBsZSBzdHJpbmcuIEluIHRoaXMKLSsjICAgaW1wbGVtZW50YXRpb24sIHRoZSBzdHJpbmcgIm5vb25zZWVzIiB3YXMgc2VsZWN0ZWQgYmVjYXVzZSB0aGUKLSsjICAgaW5kaXZpZHVhbCB3b3JkIHZhbHVlcyAoIm5vb24iIGFuZCAic2VlcyIpIGFyZSBwYWxpbmRyb21lcywgdGh1cyBtYWtpbmcKLSsjICAgdGhpcyB0ZXN0IGJ5dGUtb3JkZXIgYWdub3N0aWMuIElmIGdyZXAgZmluZHMgdGhlIHN0cmluZyAibm9vbnNlZXMiIGluCi0rIyAgIHRoZSBvYmplY3QgZmlsZSwgdGhlIHRhcmdldCBwbGF0Zm9ybSBzdG9yZXMgZmxvYXQgd29yZHMgaW4gYmlnLWVuZGlhbgotKyMgICBvcmRlci4gSWYgZ3JlcCBmaW5kcyAic2Vlc25vb24iLCBmbG9hdCB3b3JkcyBhcmUgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KLSsjICAgSWYgbmVpdGhlciB2YWx1ZSBpcyBmb3VuZCwgdGhlIHVzZXIgaXMgaW5zdHJ1Y3RlZCB0byBzcGVjaWZ5IHRoZQotKyMgICBvcmRlcmluZy4KLSsjCi0rIyBMSUNFTlNFCi0rIwotKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggRGFuaWVsIEFtZWxhbmcgPGRhbkBhbWVsYW5nLm5ldD4KLSsjCi0rIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSsjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotKyMgICB3YXJyYW50eS4KLSsKLSsjc2VyaWFsIDExCi0rCi0rQUNfREVGVU4oW0FYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOXSwKLSsgIFtBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIGZsb2F0IHdvcmQgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLAotKyAgICAgICAgICAgICAgICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLCBbCi0rCi0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotKwotK2RvdWJsZSBkID0gOTA5MDQyMzQ5NjcwMzY4MTAzMzc0NzA0Nzg5MDU1MDUwMTE0NzYyMTE2OTI3MzU2MTU2MzIwMTQ3OTcxMjA4NDQwNTM0ODg4NjU4MTY2OTUyNzM3MjM0NjkwOTc4NTgwNTYyNTc1MTcwMjAxOTEyNDc0ODc0Mjk1MTY5MzIxMzA1MDM1NjA2NTAwMDIzMjc1NjQ1MTc1NzA3Nzg0ODAyMzY3MjQ1MjUxNDA1MjAxMjEzNzE3MzkyMDE0OTY1NDAxMzI2NDAxMDk5Nzc3Nzk0MjA1NjU3NzY1Njg5NDI1OTIuMDsKLSsKLStdXSldLCBbCi0rCi0raWYgZ3JlcCBub29uc2VlcyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0rICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj15ZXMKLStmaQotK2lmIGdyZXAgc2Vlc25vb24gY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotKyAgaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8KLSsgIGVsc2UKLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotKyAgZmkKLStmaQotKwotK10pXSkKLSsKLStjYXNlICRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiBpbgotKyAgeWVzKQotKyAgICBtNF9kZWZhdWx0KFskMV0sCi0rICAgICAgW0FDX0RFRklORShbRkxPQVRfV09SRFNfQklHRU5ESUFOXSwgMSwKLSsgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBzdG9yZXMgd29yZHMgd2l0aGluIGZsb2F0cwotKyAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBmaXJzdF0pXSkgOzsKLSsgIG5vKQotKyAgICAkMiA7OwotKyAgKikKLSsgICAgbTRfZGVmYXVsdChbJDNdLAotKyAgICAgIFtBQ19NU0dfRVJST1IoWwotKwotK1Vua25vd24gZmxvYXQgd29yZCBvcmRlcmluZy4gWW91IG5lZWQgdG8gbWFudWFsbHkgcHJlc2V0Ci0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8gKG9yIHllcykgYWNjb3JkaW5nIHRvIHlvdXIgc3lzdGVtLgotKwotKyAgICBdKV0pIDs7Ci0rZXNhYwotKwotK10pIyBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWQ1YmM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDMtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUZyb20gYjg4MWE3OWFkY2Q0YWU1YWM4ZmU0ZjQ5ZDBmYzc3YzQ3Zjc3NzkxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNCBBdWcgMjAxNyAxMToxNjoxNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yCi0gbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotCi1JbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKLS4uLgotY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKLUF1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+Ci1EYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAotCi0gICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQotICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCi0uLi4KLShzZWUgZGlmZiBpbiBzZXR1cC5weSkKLUl0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKLXRoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgotCi1JbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCi1zZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKLShzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCi1gX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCi1hbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgotc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KLQotVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgotaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKLUlmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCi1sb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCi0KLVN1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgotb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKLW11bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCi0uLi4KLT4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLT4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCi1UcnVlCi0+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKLS4uLgotCi1BbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMjk5OV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYjdhMzZhNi4uNjU4ZWFkMyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE1ODQsOCArMTU4NCwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6Ci0gICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0gICAgICAgICAgICAgbGlicmFyaWVzID0gW10KLS0KLS0gICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIExpbnV4IGFuZCBvdGhlciB1bmljZXMKLSsgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnKSk6Ci0rICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0rICAgICAgICAgICAgbGlicmFyaWVzID0gWydwdGhyZWFkJ10KLSsgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE90aGVyIHVuaWNlcwotICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQotICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncnQnXQotIAotQEAgLTE2MDMsNiArMTYwNSw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgICAgIGV4dHMuYXBwZW5kICggRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWxpc3QobWFjcm9zLml0ZW1zKCkpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKLSAgICAgICAgICMgRW5kIG11bHRpcHJvY2Vzc2luZwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoCmluZGV4IGMxNTI5NWMuLjRiZDk4ZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMTctc2V0dXAucHktZG8tbm90LXJlcG9ydC1taXNzaW5nLWRlcGVuZGVuY2llcy1mb3ItZGlzYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDE3LXNldHVwLnB5LWRvLW5vdC1yZXBvcnQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLWRpc2EucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGUzYjU5Y2I5NjU4ZTFkM2VmYTM1MzU4NDA5MzlhMGZhOTJhNzBhNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGEyZGQxMjdiNDE2M2FmZjZjYzM1YWYwZDAyNTEzMjE5NjQyMzJhZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNyBPY3QgMjAxOSAxMzoyMjoxNCArMDIwMAogU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogZG8gbm90IHJlcG9ydCBtaXNzaW5nIGRlcGVuZGVuY2llcyBmb3IgZGlzYWJsZWQKQEAgLTEwLDIyICsxMCwyMyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgc2V0dXAucHkgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA0YjUzNjY4Li4wMDk3NjQzIDEwMDY0NAoraW5kZXggNzY5MTI1OC4uZWMzZjJhNCAxMDA2NDQKIC0tLSBhL3NldHVwLnB5CiArKysgYi9zZXR1cC5weQotQEAgLTM2NSw2ICszNjUsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorQEAgLTQwOCw2ICs0MDgsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgICAgICBwcmludCgiJS0qcyAgICUtKnMgICAlLSpzIiAlIChsb25nZXN0LCBlLCBsb25nZXN0LCBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nZXN0LCBnKSkKICAKICsgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0byByZXBvcnQgbWlzc2luZyBtb2R1bGUgZGVwZW5kZW5jaWVzLAogKyAgICAgICAgIyBpZiB0aGUgbW9kdWxlcyBoYXZlIGJlZW4gZGlzYWJsZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgotKyAgICAgICAgbWlzc2luZyA9IGxpc3Qoc2V0KG1pc3NpbmcpIC0gc2V0KHN5c2NvbmZfZGlzKSkKKysgICAgICAgIHNlbGYubWlzc2luZyA9IGxpc3Qoc2V0KHNlbGYubWlzc2luZykgLSBzZXQoc3lzY29uZl9kaXMpKQogKwotICAgICAgICAgaWYgbWlzc2luZzoKKyAgICAgICAgIGlmIHNlbGYubWlzc2luZzoKICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgcHJpbnQoIlB5dGhvbiBidWlsZCBmaW5pc2hlZCBzdWNjZXNzZnVsbHkhIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMjAtY29uZmlndXJlLmFjLXNldHVwLnB5LWRvLW5vdC1hZGQtYS1jdXJzZXMtaW5jbHVkZS1wYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMjAtY29uZmlndXJlLmFjLXNldHVwLnB5LWRvLW5vdC1hZGQtYS1jdXJzZXMtaW5jbHVkZS1wYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDRhOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gODYzYzA5ZjY0MGE1ZGZkMzNmZjIyOTE1YjBkNWZlZTdiYzVkZjcwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBGZWIgMjAyMCAxNzo1MDoyNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWMsIHNldHVwLnB5OiBkbyBub3QgYWRkIGEgY3Vyc2VzIGluY2x1ZGUgcGF0aCBmcm9tCisgdGhlIGhvc3QKKworVGhpcyBsZWFkcyB0byBob3N0IGNvbnRhbWluYXRpb24sIGFuZCBwYXJ0aWN1bGFybHkgY2FuIGNhdXNlCitjdXJzZXMgbW9kdWxlcyB0byBmYWlsIGF0IHJ1bnRpbWUgaWYgdGhlIGhvc3QgY3Vyc2VzIGlzIGNvbmZpZ3VyZWQKK2RpZmZlcmVudGx5IHRvIG5hdGl2ZSBjdXJzZXMgKG9ic2VydmVkIG9uIGN1cnJlbnQgT3BlblN1c2UgVHVtYmxld2VlZAorYXMgZG5mIGZhaWx1cmVzKS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA2IC0tLS0tLQorIHNldHVwLnB5ICAgICB8IDIgLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDkxNWY0NzUuLmM5MTEwMTEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ4MjgsMTIgKzQ4MjgsNiBAQCB0aGVuCisgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0X210aW1lbnNlY10pCisgZmkKKyAKKy0jIGZpcnN0IGN1cnNlcyBoZWFkZXIgY2hlY2sKKy1hY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCistaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKKy1maQorLQorIEFDX0NIRUNLX0hFQURFUlMoY3Vyc2VzLmggbmN1cnNlcy5oKQorIAorICMgT24gU29sYXJpcywgdGVybS5oIHJlcXVpcmVzIGN1cnNlcy5oCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggYjBmMTU0MS4uNzIwOGNkMCAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTk3Myw4ICs5NzMsNiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBwYW5lbF9saWJyYXJ5ID0gJ3BhbmVsJworICAgICAgICAgaWYgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXN3JzoKKyAgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKy0gICAgICAgICAgICBpZiBub3QgQ1JPU1NfQ09NUElMSU5HOgorLSAgICAgICAgICAgICAgICBjdXJzZXNfaW5jbHVkZXMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvbmN1cnNlc3cnKQorICAgICAgICAgICAgICMgQnVnIDE0NjQwNTY6IElmIF9jdXJzZXMuc28gbGlua3Mgd2l0aCBuY3Vyc2VzdywKKyAgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgorICAgICAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWx3JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoCmluZGV4IGQ0OTYwNGIuLjYxYWMzZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGEyNzRiYTc3ODgzODgyNGVmY2FjYWJhNTdjNDE1YjcyNjJmNzc5ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI1MTM0N2ZjOTcwYTM5N2E5Y2Q2M2VkM2Y4N2M1ZTZjNTJlMTUxODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxNCBNYXkgMjAxMyAxNTowMDoyNiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBweXRob24zOiBBZGQgdGFyZ2V0IGFuZCBuYXRpdmUgcmVjaXBlcwpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCAzZGZkMGEzLi42YzZiMDlhIDEwMDY0NAoraW5kZXggMmRmMzQ4Yy4uNGY4ZGI4NCAxMDA2NDQKIC0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTk3LDcgKzk3LDkgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgorQEAgLTk2LDcgKzk2LDkgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgogICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCiAgICAgIHN5cy5iYXNlX2V4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCiAgICAgICIiIgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgQkFTRV9FWEVDX1BSRUZJWCBvciBCQVNFX1BSRUZJWAogICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgICBpZiBweXRob25fYnVpbGQ6Ci1AQCAtMTQwLDcgKzE0MiwxMyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgorQEAgLTEzOSw3ICsxNDEsMTMgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTAsIHByZWZpeD1Ob25lKToKICAgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5iYXNlX3ByZWZpeCBvcgogICAgICBzeXMuYmFzZV9leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgogICAgICAiIiIKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKICAgICAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBCQVNFX0VYRUNfUFJFRklYIG9yIEJBU0VfUFJFRklYCiAgICAgICAgICBlbHNlOgotQEAgLTE0OCw3ICsxNTYsNyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgorQEAgLTE0Nyw3ICsxNTUsNyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgogIAogICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCmluZGV4IDI0ZTY3YjQuLjE4NDU0MGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGZlYWQ0OGM4YjUwMWE4ZDdjM2RiMjFkZjJlNTk5ZjkwZjM4ZjExZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJhNzIwMjcwMDU3OGQ0MzViMDdjZmRmYjdiNTdlODMxODU3NTI4MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiBEYXRlOiBNb24sIDI4IEphbiAyMDE5IDE1OjU3OjU0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIF90a2ludGVyIG1vZHVsZSBuZWVkcyB0ayBtb2R1bGUgYWxvbmcgd2l0aCB0Y2wuIHRrIGlzIG5vdCB5ZXQKQEAgLTExLDI2ICsxMSwyMSBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogCiAtLS0KLSBzZXR1cC5weSB8IDggKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIHNldHVwLnB5IHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGZiZWMwMGQuLmI3YTM2YTYgMTAwNjQ0CitpbmRleCBhYjE4ZmYwLi43NjkxMjU4IDEwMDY0NAogLS0tIGEvc2V0dXAucHkKICsrKyBiL3NldHVwLnB5Ci1AQCAtMTYyMywxMCArMTYyMywxMiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCitAQCAtMTcwNiw4ICsxNzA2LDggQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgc2VsZi5kZXRlY3RfZGVjaW1hbCgpCisgICAgICAgICBzZWxmLmRldGVjdF9jdHlwZXMoKQorICAgICAgICAgc2VsZi5kZXRlY3RfbXVsdGlwcm9jZXNzaW5nKCkKKy0gICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdF90a2ludGVyKCk6CistICAgICAgICAgICAgc2VsZi5taXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQorKyMgICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdF90a2ludGVyKCk6CisrIyAgICAgICAgICAgIHNlbGYubWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKKyAgICAgICAgIHNlbGYuZGV0ZWN0X3V1aWQoKQogIAotICAgICAgICAgIyBDYWxsIHRoZSBtZXRob2QgZm9yIGRldGVjdGluZyB3aGV0aGVyIF90a2ludGVyIGNhbiBiZSBjb21waWxlZAotLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0rICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotIAotLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgotLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCi0rICAgICAgICAjIHRraW50ZXIgbW9kdWxlIHdpbGwgbm90IGJlIGF2YWxhaWJsZSBhcyB5b2N0bwotKyAgICAgICAgIyBkb2Vzbid0IGhhdmUgdGsgaW50ZWdyYXRlZCAoeWV0KQotKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKLSsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKLSAKLSAgICAgICAgICMgQnVpbGQgdGhlIF91dWlkIG1vZHVsZSBpZiBwb3NzaWJsZQotICAgICAgICAgdXVpZF9pbmNzID0gZmluZF9maWxlKCJ1dWlkLmgiLCBpbmNfZGlycywgWyIvdXNyL2luY2x1ZGUvdXVpZCJdKQorICMjICAgICAgICAgIyBVbmNvbW1lbnQgdGhlc2UgbGluZXMgaWYgeW91IHdhbnQgdG8gcGxheSB3aXRoIHh4bW9kdWxlLmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tY29uZmlnLnBhdGNoCmluZGV4IGYyM2I4YjcuLmM4YThmM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi1jb25maWcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLWNvbmZpZy5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLXB5dGhvbi1jb25maWc6IFJldmVydCB0byB1c2luZyBkaXN0dXRpbHMuc3lzY29uZmlnCitGcm9tIDA3ZGYwYWUwZDcwY2JhNmQxODQ3ZmUxYzI0YTcxMDYzOTMwYmVjNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUeWxlciBIYWxsIDx0eWxlcndoYWxsQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNCBNYXkgMjAxNCAyMDowNjo0MyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBweXRob24tY29uZmlnOiBSZXZlcnQgdG8gdXNpbmcgZGlzdHV0aWxzLnN5c2NvbmZpZwogCiBUaGUgbmV3ZXIgc3lzY29uZmlnIG1vZHVsZSBzaGFyZXMgc29tZSBjb2RlIHdpdGggZGlzdHV0aWxzLnN5c2NvbmZpZywgYnV0IHRoZSBzYW1lIG1vZGlmaWNhdGlvbnMgYXMgaW4KIApAQCAtMTIsMTEgKzE1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IFR5bGVyIEhhbGwgPHR5bGVyd2hhbGxAZ21haWwuY29tPgogOgotSW5kZXg6IFB5dGhvbi0zLjMuMy9NaXNjL3B5dGhvbi1jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy4zLjMub3JpZy9NaXNjL3B5dGhvbi1jb25maWcuaW4KLSsrKyBQeXRob24tMy4zLjMvTWlzYy9weXRob24tY29uZmlnLmluCi1AQCAtNCw3ICs0LDcgQEAKKworLS0tCisgTWlzYy9weXRob24tY29uZmlnLmluIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NaXNjL3B5dGhvbi1jb25maWcuaW4gYi9NaXNjL3B5dGhvbi1jb25maWcuaW4KK2luZGV4IDcyN2M0YTguLmM3MDI4MjkgMTAwNjQ0CistLS0gYS9NaXNjL3B5dGhvbi1jb25maWcuaW4KKysrKyBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorQEAgLTYsNyArNiw3IEBACiAgaW1wb3J0IGdldG9wdAogIGltcG9ydCBvcwogIGltcG9ydCBzeXMKQEAgLTI0LDggKzMyLDggQEAKICtmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCiAgCiAgdmFsaWRfb3B0cyA9IFsncHJlZml4JywgJ2V4ZWMtcHJlZml4JywgJ2luY2x1ZGVzJywgJ2xpYnMnLCAnY2ZsYWdzJywKLSAgICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncycsICdjb25maWdkaXInXQotQEAgLTMyLDE0ICszMiwxNCBAQCBpZiAnLS1oZWxwJyBpbiBvcHRfZmxhZ3M6CisgICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnLCAnY29uZmlnZGlyJywKK0BAIC0zNSwxNCArMzUsMTQgQEAgaWYgJy0taGVscCcgaW4gb3B0X2ZsYWdzOgogIAogIGZvciBvcHQgaW4gb3B0X2ZsYWdzOgogICAgICBpZiBvcHQgPT0gJy0tcHJlZml4JzoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgppbmRleCBkYmE5MmIwLi4zYmNjOWI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCkBAIC0xMjIsNyArMTIyLDggQEAKICAgICAgICAgICAgICJsb2dnaW5nIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAogICAgICAgICAgICAgIm51bWJlcnMiLAotICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInR5cGluZyIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FzeW5jaW8iLApAQCAtMTgyLDI2ICsxODMsMTUgQEAKICAgICAiY29tcHJlc3Npb24iOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbXByZXNzaW9uLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9iejIucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2d6aXAucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19iejIuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvemxpYi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sem1hLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90YXJmaWxlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS96aXBmaWxlLnB5IgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19jb21wcmVzc2lvbi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYnoyLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9nemlwLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9sem1hLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90YXJmaWxlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy96aXBmaWxlLioucHljIgogICAgICAgICBdCkBAIC0yMTAsMTIgKzIwMCwxMCBAQAogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFtdLAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbjMiLAogICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IiwKICAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS5yZWFsIiwKLSAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfSIsCi0gICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oIiwKLSAgICAgICAgICAgICIke3ByZWZpeH0vbGliL3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnKi8qWyEuYV0iLAorICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24zIiwKKyAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcqLmgiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L1VzZXJEaWN0LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9Vc2VyTGlzdC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vVXNlclN0cmluZy5weSIsCkBAIC0yMjMsNiArMjExLDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYWJjb2xsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYm9vdGxvY2FsZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbXByZXNzaW9uLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fbWFya3VwYmFzZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3NpdGVidWlsdGlucy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5IiwKQEAgLTIzMSw2ICsyMjAsNyBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FyZ3BhcnNlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9hc3QucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Jpc2VjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYnoyLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlY3MucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGVvcC5weSIsCkBAIC0yNDcsNiArMjM3LDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvbGF0aW5fMS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzL3V0Zl84LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbnVtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mbm1hdGNoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mdW5jdG9vbHMucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2dlbmVyaWNwYXRoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZXRvcHQucHkiLApAQCAtMjY3LDEzICsyNTgsMTYgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy90aW1lLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fYnoyLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jc3YuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hlYXBxLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19sem1hLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3Bvc2l4c3VicHJvY2Vzcy4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc3RydWN0Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2dycC4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9tYXRoLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3BhcnNlci4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9yZWFkbGluZS4qLnNvIiwKQEAgLTI4MSwxNCArMjc1LDE4IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvdGltZS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC91bmljb2RlZGF0YS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3psaWIuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGluZWNhY2hlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2x6bWEucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L25ldy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbnRwYXRoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcGNvZGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L29wZXJhdG9yLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcHRwYXJzZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vb3MucHkiLAorCSAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGF0aGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGtndXRpbC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGxhdGZvcm0ucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Bvc2l4cGF0aC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmUucHkiLApAQCAtMjk2LDYgKzI5NCw3IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmxjb21wbGV0ZXIucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3J1bnB5LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zZWxlY3RvcnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NodXRpbC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2lnbmFsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlY3VzdG9taXplLnB5IiwKQEAgLTMxNSwxMiArMzE0LDE0IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdHJhY2ViYWNrLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90eXBlcy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2FybmluZ3MucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3dlYWtyZWYucHkiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2Vha3JlZi5weSIsCisgICAgICAgICAgICAiJHtwcmVmaXh9L2xpYi9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZyovKlshLmFdIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19fZnV0dXJlX18uKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnNfYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19tYXJrdXBiYXNlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fc2l0ZWJ1aWx0aW5zLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fc3lzY29uZmlnZGF0YS4qLnB5YyIsCkBAIC0zMjksNiArMzMwLDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hcmdwYXJzZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYXN0LioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9iaXNlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2J6Mi4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZWNzLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLApAQCAtMzM5LDYgKzM0MSw3IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY3N2LioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2VudW0uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Z1bmN0b29scy4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dldG9wdC4qLnB5YyIsCkBAIC0zNTAsMTAgKzM1MywxNCBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2tleXdvcmQuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2xpbmVjYWNoZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9sem1hLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9udHBhdGguKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29wY29kZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3BlcmF0b3IuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29wdHBhcnNlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9vcy4qLnB5YyIsCisJICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wYXRobGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wa2d1dGlsLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcG9zaXhwYXRoLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9yZS4qLnB5YyIsCkBAIC0zNjEsNiArMzY4LDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcnVucHkuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NlbGVjdG9ycy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2h1dGlsLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaWduYWwuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NyZV9jb21waWxlLioucHljIiwKQEAgLTQwNSwxMCArNDEzLDEwIEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2JsYWtlMi4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fY3J5cHQuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX21kNS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhMS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhMjU2Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGEzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGExLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19tZDUuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwpAQCAtNTE5LDE0ICs1MjcsMTIgQEAKICAgICAgICAgXQogICAgIH0sCiAgICAgImRpc3R1dGlscy13aW5kb3dzIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LSouZXhlIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoV2luZG93cyBpbnN0YWxsZXIgc3R1YnMpIiwKICAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImRpc3R1dGlscyIKKyAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoV2luZG93cyBpbnN0YWxsZXIgc3R1YnMpIgorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiZGlzdHV0aWxzIjogewogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsCkBAIC01NDEsMTMgKzU0NywxOSBAQAogICAgICJkb2N0ZXN0IjogewogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiLAogICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiYXN5bmNpbyIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImRlYnVnZ2VyIiwKICAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJpbyIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJudW1iZXJzIiwKICAgICAgICAgICAgICJwcHJpbnQiLAogICAgICAgICAgICAgInNoZWxsIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInR5cGluZyIsCiAgICAgICAgICAgICAidW5pdHRlc3QiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKQEAgLTY0MSw4ICs2NTMsNyBAQAogICAgICAgICAgICAgImNyeXB0IiwKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgICAgICAic2hlbGwiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fcHlpby5weSIsCkBAIC04NzUsOSArODg2LDcgQEAKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJtaW1lIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJzdHJpbmdvbGQiLAotICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jZ2kucHkiLApAQCAtOTM0LDEyICs5NDMsOCBAQAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BrZ3V0aWwucHkiCi0gICAgICAgIF0sCi0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKLSAgICAgICAgXQorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAicGxpc3RsaWIiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLApAQCAtOTg4LDggKzk5Myw3IEBACiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwKLSAgICAgICAgICAgICJwa2d1dGlsIgorICAgICAgICAgICAgIm5ldGNsaWVudCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7YmluZGlyfS9weWRvYyoiLApAQCAtMTAxNSwyMiArMTAxOSwxNyBAQAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAotICAgICAgICAgICAgInN0cmluZ29sZCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NtZC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZm5tYXRjaC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2xvYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2hsZXgucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NodXRpbC5weSIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaGxleC5weSIKICAgICAgICAgXSwKICAgICAgICAgImNhY2hlZCI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dsb2IuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaHV0aWwuKi5weWMiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2hsZXguKi5weWMiCiAgICAgICAgIF0KICAgICB9LAogICAgICJzbXRwZCI6IHsKQEAgLTExNTAsMTIgKzExNDksMTcgQEAKICAgICAidW5pdHRlc3QiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwKICAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJpbyIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJudW1iZXJzIiwKICAgICAgICAgICAgICJwcHJpbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ0eXBpbmciCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS91bml0dGVzdCIsCkBAIC0xMTcyLDcgKzExNzYsNiBAQAogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2V0cGFzcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvZ3JwLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL25pcy4qLnNvIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwpAQCAtMTE4NSw5ICsxMTg4LDcgQEAKICAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInN0cmluZ29sZCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7YmluZGlyfS9weXZlbnYqIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdAppbmRleCAzZTQ1ZDM5Li40MDViMDdmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsMyBAQAogIyEvYmluL3NoCiAKLXB5dGhvbjMgLW0gdGVzdCAtdiB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtZSAnL1wuXC5cLiBbRVJST1J8RkFJTF0vIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKK3B5dGhvbjMgLW0gdGVzdCAtdiB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtciAtZSAnL1wuXC5cLiAoRVJST1J8RkFJTCkvIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNy41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwOTE0ZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUHl0aG9uIFByb2dyYW1taW5nIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24ub3JnIgotTElDRU5TRSA9ICJQU0Z2MiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNDY2MjQyOTg5YmQzM2MxYmQyYjZhNTI2YTc0MjQ5OCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QzLnB5IFwKLSAgICAgICAgICAgZmlsZTovL2dldF9tb2R1bGVfZGVwczMucHkgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1tYW5pZmVzdC5qc29uIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrX2J1aWxkX2NvbXBsZXRlbmVzcy5weSBcCi0gICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGsnLCAnJywgJ2ZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5wcmUtdXNlLXFlbXUtd3JhcHBlci13aGVuLWdhdGhlcmluZy1wcm9maWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGliLXN5c2NvbmZpZy5weS1maXgtYW5vdGhlci1wbGFjZS13aGVyZS1saWItaXMtaGFyZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWZpeC1Jc3N1ZTM2NDY0LXBhcmFsbGVsLWJ1aWxkLXJhY2UtcHJvYmxlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3NweXRob25wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlZm9ybWF0X3N5c2NvbmZpZy5weSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1GTEFHX1JFRi1hbHdheXMtZm9yLWludGVybmVkLXN0cmluZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0X2xvY2FsZS5weS1jb3JyZWN0LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA4ZWQ4MDMwYjExODMxMDdjNDhmMjA5MmU3OWE4N2UyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NWE3NmVhOWYzZDZjNDg1ZWMxNzgwZmNhNGU1MDA3MjVhNGE3YmJjNjNjNzhlYmM0NDE3MGRlOWI2MTlkOTQiCi0KLSMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotQ1ZFX1BST0RVQ1QgPSAicHl0aG9uIgotCi1QWVRIT05fTUFKTUlOID0gIjMuNyIKLVBZVEhPTl9CSU5BQkkgPSAiJHtQWVRIT05fTUFKTUlOfW0iCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHFlbXUgcHRlc3QgbXVsdGlsaWJfaGVhZGVyIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotTVVMVElMSUJfU1VGRklYID0gIiR7QGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicsMSkuc3BsaXQoJy8nKVstMV19IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kZXYgPSAicHl0aG9uMy1jb25maWciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcHl0aG9uMy1jb25maWddID0gIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtweXRob24zLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfSIKLQotCi1ERVBFTkRTID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSBsaWJmZmkgYnppcDIgb3BlbnNzbCBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IHZpcnR1YWwvY3J5cHQgdXRpbC1saW51eCBsaWJ0aXJwYyBsaWJuc2wyIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgcHl0aG9uMy1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRob3V0LWVuc3VyZXBpcCAtLWVuYWJsZS1zaGFyZWQiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IgotCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8iCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAicHl0aG9uMy1uYXRpdmUiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gIiBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl93b3JraW5nX3R6c2V0PXllcyBcCi0iCi1weXRob24oKSB7Ci0gICAgIyBQR08gY3VycmVudGx5IGNhdXNlcyBidWlsZHMgdG8gbm90IGJlIHJlcHJvZHVjaWJsZSwgc28gZGlzYWJsZSBpdCBmb3IKLSAgICAjIG5vdy4gU2VlIFlPQ1RPICMxMzQwNwotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3FlbXUtdXNlcm1vZGUnLCBUcnVlLCBGYWxzZSwgZCkgYW5kIGQuZ2V0VmFyKCdCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMnKSAhPSAnMSc6Ci0gICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFQ09ORklHX1BHTycsICdwZ28nKQotICAgIGVsc2U6Ci0gICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFQ09ORklHX1BHTycsICcnKQotfQotCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInJlYWRsaW5lICR7UEFDS0FHRUNPTkZJR19QR099IGdkYm0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInJlYWRsaW5lIGdkYm0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA/Pz0gInJlYWRsaW5lIGdkYm0iCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICIsLHJlYWRsaW5lIgotIyBVc2UgcHJvZmlsZSBndWlkZWQgb3B0aW1pc2F0aW9uIGJ5IHJ1bm5pbmcgUHlCZW5jaCBpbnNpZGUgcWVtdS11c2VyCi1QQUNLQUdFQ09ORklHW3Bnb10gPSAiLS1lbmFibGUtb3B0aW1pemF0aW9ucywscWVtdS1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3RrXSA9ICIsLHRrIgotUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICIsLGdkYm0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0J9L01vZHVsZXMKLSAgICBjYXQgPiAke0J9L01vZHVsZXMvU2V0dXAubG9jYWwgPDwgRU9GCi0qZGlzYWJsZWQqCi0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnZGJtJywgJycsICdfZ2RibSBfZGJtJywgZCl9Ci0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZWFkbGluZScsICcnLCAncmVhZGxpbmUnLCBkKX0KLUVPRgotfQotCi1DUFBGTEFHU19hcHBlbmQgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vbmN1cnNlc3cgLUkke1NUQUdJTkdfSU5DRElSfS91dWlkIgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgTElCPSR7YmFzZWxpYn0gXAotJwotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BnbycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICcke1NUQUdJTkdfRElSX1RBUkdFVH0nLCBbJyR7Qn0nLCAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9J10pfSIKLSAgICAgICAgICAgICAgICBjYXQgPnBnby13cmFwcGVyIDw8RU9GCi0jIS9iaW4vc2gKLWNkICR7Qn0KLSRxZW11X2JpbmFyeSAiXCRAIgotRU9GCi0gICAgICAgICAgICAgICAgY2htb2QgK3ggcGdvLXdyYXBwZXIKLSAgICAgICAgZmkKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgICAgICAke1dPUktESVJ9L2NoZWNrX2J1aWxkX2NvbXBsZXRlbmVzcy5weSAke1R9L2xvZy5kb19jb21waWxlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgICMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0gICAgICAgIGZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotICAgICAgICBkb25lCi0gICAgICAgICMgQWRkIGEgc3ltbGluayB0byB0aGUgbmF0aXZlIFB5dGhvbiBzbyB0aGF0IHNjcmlwdHMgY2FuIGp1c3QgaW52b2tlCi0gICAgICAgICMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocwotICAgICAgICAjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLSAgICAgICAgIyBidWZmZXIgaXMgMTI4IGJ5dGVzIGxvbmcpLgotICAgICAgICBsbiAtcyBweXRob24zLW5hdGl2ZS9weXRob24zICR7RH0ke2JpbmRpcn0vbmF0aXZlcHl0aG9uMwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YQotICAgICAgICBzeXNjb25maWdmaWxlPWBmaW5kICR7RH0gLW5hbWUgX3N5c2NvbmZpZyoucHlgCi0gICAgICAgIGNwICRzeXNjb25maWdmaWxlICR7RH0ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEvX3N5c2NvbmZpZ2RhdGEucHkKLQotICAgICAgICBzZWQgLWkgIFwKLSAgICAgICAgICAgICAgICAtZSAicyxeICdMSUJESVInLiosICdMSUJESVInOiAnJHtTVEFHSU5HX0xJQkRJUn0nXCwsZyIgXAotICAgICAgICAgICAgICAgIC1lICJzLF4gJ0lOQ0xVREVESVInLiosICdJTkNMVURFRElSJzogJyR7U1RBR0lOR19JTkNESVJ9J1wsLGciIFwKLSAgICAgICAgICAgICAgICAtZSAicyxeICdDT05GSU5DTFVERURJUicuKiwgJ0NPTkZJTkNMVURFRElSJzogJyR7U1RBR0lOR19JTkNESVJ9J1wsLGciIFwKLSAgICAgICAgICAgICAgICAtZSAiL14gJ0lOQ0xESVJTVE9NQUtFJy97TjsgcywvdXNyL2luY2x1ZGUsJHtTVEFHSU5HX0lOQ0RJUn0sZ30iIFwKLSAgICAgICAgICAgICAgICAtZSAiL14gJ0lOQ0xVREVQWScvcywvdXNyL2luY2x1ZGUsJHtTVEFHSU5HX0lOQ0RJUn0sZyIgXAotICAgICAgICAgICAgICAgICR7RH0ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEvX3N5c2NvbmZpZ2RhdGEucHkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gT0VQWVRIT04zSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIF9zeXNjb25maWdkYXRhLnB5IgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0gICAgICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLSAgICAgICAgc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0gICAgICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotICAgICAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0gICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0gICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLSAgICAgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLSAgICAgICAgICAgICAgICAke1BLR0R9LyR7cHJlZml4fS9saWIvcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0qL01ha2VmaWxlIFwKLSAgICAgICAgICAgICAgICAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhKi5weSBcCi0gICAgICAgICAgICAgICAgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcKLQotICAgICAgICAjIFJlZm9ybWF0IF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdCBzbyB0aGF0IGl0IHJlbWFpbnMKLSAgICAgICAgIyByZXByb2R1Y2libGUKLSAgICAgICAgZm9yIGMgaW4gJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YSoucHk7IGRvCi0gICAgICAgICAgICBweXRob24zICR7V09SS0RJUn0vcmVmb3JtYXRfc3lzY29uZmlnLnB5ICRjCi0gICAgICAgIGRvbmUKLQotICAgICAgICAjIFJlY29tcGlsZSBfc3lzY29uZmlnZGF0YSBhZnRlciBtb2RpZnlpbmcgaXQKLSAgICAgICAgY2QgJHtQS0dEfQotICAgICAgICBzeXNjb25maWdmaWxlPWBmaW5kIC4gLW5hbWUgX3N5c2NvbmZpZ2RhdGFfKi5weWAKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJykiCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLSAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScsIG9wdGltaXplPTEpIgotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnLCBvcHRpbWl6ZT0yKSIKLSAgICAgICAgY2QgLQotCi0gICAgICAgIG12ICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfQotICAgICAgICAKLSAgICAgICAgI1JlbW92ZSB0aGUgdW5uZWVkZWQgY29weSBvZiB0YXJnZXQgc3lzY29uZmlnIGRhdGEKLSAgICAgICAgcm0gLXJmICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhCi19Ci0KLSMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAotIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgotSU5DTFVERV9QWUNTID89ICIxIgotCi1weXRob24oKXsKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMsIGpzb24KLQotICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24zJywgJ3B5dGhvbjMtbWFuaWZlc3QuanNvbicpCi0gICAgIyBUaGlzIHB5dGhvbiBjaGFuZ2VzIHRoZSBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSwgc28gbWFyawotICAgICMgdGhhdCBkZXBlbmRlbmN5LgotICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBmaWxlbmFtZSkKLQotICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbWFuaWZlc3RfZmlsZToKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gIG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIGpzb25fc3RhcnQgPSBtYW5pZmVzdF9zdHIuZmluZCgnIyBFT0MnKSArIDYKLSAgICAgICAgbWFuaWZlc3RfZmlsZS5zZWVrKGpzb25fc3RhcnQpCi0gICAgICAgIG1hbmlmZXN0X3N0ciA9IG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIHB5dGhvbl9tYW5pZmVzdCA9IGpzb24ubG9hZHMobWFuaWZlc3Rfc3RyLCBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKLQotICAgICMgRmlyc3Qgc2V0IFJQUk9WSURFUyBmb3IgLW5hdGl2ZSBjYXNlCi0gICAgIyBIYXJkY29kZWQgc2luY2UgaXQgY2FudCBiZSBweXRob24zLW5hdGl2ZS1mb28sIHNob3VsZCBiZSBweXRob24zLWZvby1uYXRpdmUKLSAgICBwbiA9ICdweXRob24zJwotICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCi0KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKLSAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6Ci0gICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgZC5zZXRWYXIoJ1JQUk9WSURFU19jbGFzcy1uYXRpdmUnLCAnICcuam9pbihycHJvdmlkZXMpKQotCi0gICAgIyBUaGVuIHdvcmsgb24gdGhlIHRhcmdldAotICAgIGluY2x1ZGVfcHljcyA9IGQuZ2V0VmFyKCdJTkNMVURFX1BZQ1MnKQotCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgcG4gPSBkLmdldFZhcignUE4nKQotCi0gICAgbmV3cGFja2FnZXM9W10KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkKLQotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCi0gICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAgICAgIyBBZGQgY2FjaGVkIGZpbGVzCi0gICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6Ci0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgotICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgotICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgotICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScsIDEpWzFdCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKLQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV0uZ2V0KCdycmVjb21tZW5kcycsICgpKToKLSAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nLCAxKVsxXQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCi0KLSAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKLQotICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKLSAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi0gICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCi19Ci0KLSMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotCi1kb19jcmVhdGVfbWFuaWZlc3QoKSB7Ci0gICAgIyBUaGlzIHRhc2sgc2hvdWxkIGJlIHJ1biB3aXRoIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIFB5dGhvbi4KLSAgICAjIFdlIG11c3QgZW5zdXJlIHRoYXQgUEFDS0FHRUNPTkZJRyBlbmFibGVzIGV2ZXJ5dGhpbmcgd2hlbiBjcmVhdGluZwotICAgICMgYSBuZXcgbWFuaWZlc3QsIHRoaXMgaXMgdG8gYmFzZSBvdXIgbmV3IG1hbmlmZXN0IG9uIGEgY29tcGxldGUKLSAgICAjIG5hdGl2ZSBweXRob24gYnVpbGQsIGNvbnRhaW5pbmcgYWxsIGRlcGVuZGVuY2llcywgb3RoZXJ3aXNlIHRoZSB0YXNrCi0gICAgIyB3b250IGJlIGFibGUgdG8gZmluZCB0aGUgcmVxdWlyZWQgZmlsZXMuCi0gICAgIyBlLmcuIEJlcmtlbGV5REIgaXMgYW4gb3B0aW9uYWwgYnVpbGQgZGVwZW5kZW5jeSBzbyBpdCBtYXkgb3IgbWF5IG5vdAotICAgICMgYmUgcHJlc2VudCwgd2UgbXVzdCBlbnN1cmUgaXQgaXMuCi0KLSAgICBjZCAke1dPUktESVJ9Ci0gICAgIyBUaGlzIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGJ5IHB5dGhvbi1uYXRpdmUgYW5kIE5PVCBieSBIT1NUJ3MgcHl0aG9uCi0gICAgbmF0aXZlcHl0aG9uMyBjcmVhdGVfbWFuaWZlc3QzLnB5ICR7UFlUSE9OX01BSk1JTn0KLSAgICBjcCBweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KLX0KLQotIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKLWFkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0Ci0KLSMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICIke1BOfTpkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IgotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICIke1BOfTpkb19wYXRjaCIKLQotIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG9wZW5zc2wgY2EtY2VydGlmaWNhdGVzIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgb3BlbnNzbCBjYS1jZXJ0aWZpY2F0ZXMiCi0KLSMgRm9yIGhpc3RvcmljYWwgcmVhc29ucyBQTiBpcyBlbXB0eSBhbmQgcHJvdmlkZWQgYnkgcHl0aG9uMy1tb2R1bGVzCi1GSUxFU18ke1BOfSA9ICIiCi1SUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKLQotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLSMgcHJvdmlkZSBweXRob24tcHl2ZW52IGZyb20gcHl0aG9uMy12ZW52Ci1SUFJPVklERVNfJHtQTn0tdmVudiArPSAicHl0aG9uMy1weXZlbnYiCi0KLSMgcGFja2FnZSBsaWJweXRob24zCi1QQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKLUZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLUZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke3ByZWZpeH0vbGliL3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0tKi9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtZW1haWwgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1weWRvYyBweXRob24zLXBpY2tsZSBweXRob24zLWF1ZGlvIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW1pc2MiCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIHB5dGhvbjMtbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQiCi0KLSMgY2F0Y2ggbWFucGFnZQotUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKLUZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCBiemlwMiBsaWJnY2MgdHpkYXRhLWV1cm9wZSBjb3JldXRpbHMgc2VkIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLXRyLXRyLmlzby04ODU5LTkiCi1SREVQRU5EU18ke1BOfS10a2ludGVyICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICd0ayB0ay1saWInLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy44LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGExNmZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy44LjIuYmIKQEAgLTAsMCArMSwzNTIgQEAKK1NVTU1BUlkgPSAiVGhlIFB5dGhvbiBQcm9ncmFtbWluZyBMYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZyIKK0xJQ0VOU0UgPSAiUFNGdjIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjAzYTZkYmM4MDJlZTg5NjAyMGE0NzE2MWU3NTk2NDIiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vY3JlYXRlX21hbmlmZXN0My5weSBcCisgICAgICAgICAgIGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMzLnB5IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtbWFuaWZlc3QuanNvbiBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVja19idWlsZF9jb21wbGV0ZW5lc3MucHkgXAorICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RrJywgJycsICdmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUucHJlLXVzZS1xZW11LXdyYXBwZXItd2hlbi1nYXRoZXJpbmctcHJvZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItYXMtbG9jYXRpb24tZm9yLXNpdGUtcGFja2FnZXMtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTGliLXN5c2NvbmZpZy5weS1maXgtYW5vdGhlci1wbGFjZS13aGVyZS1saWItaXMtaGFyZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWZpeC1Jc3N1ZTM2NDY0LXBhcmFsbGVsLWJ1aWxkLXJhY2UtcHJvYmxlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3NweXRob25wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlZm9ybWF0X3N5c2NvbmZpZy5weSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1GTEFHX1JFRi1hbHdheXMtZm9yLWludGVybmVkLXN0cmluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0X2xvY2FsZS5weS1jb3JyZWN0LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWRvLW5vdC1jb21waWxlLS5weWMtaW4tcGFyYWxsZWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uMy1Eby1ub3QtaGFyZGNvZGUtbGliLWZvci1kaXN0dXRpbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnBvLTM5NTAzLUNWRS0yMDIwLTg0OTItRml4LUFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOWQ2ZWJjOTIxODNhMTc3YjhlOGE1OGNhZDViOGQ2NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjQ2ZTdkYzIzMzM2MmY1OTcxNGM2MTkzMDE3YmIyZDZmN2IzOGQ2YWI0YTBjYjVmYmFjNWMzNmM0ZDg0NWRmIgorCisjIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK0NWRV9QUk9EVUNUID0gInB5dGhvbiIKKworIyBUaGlzIGlzIG5vdCBleHBsb2l0YWJsZSB3aGVuIGdsaWJjIGhhcyBDVkUtMjAxNi0xMDczOSBmaXhlZC4KK0NWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTE4MzQ4IgorCitQWVRIT05fTUFKTUlOID0gIjMuOCIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcWVtdSBwdGVzdCBtdWx0aWxpYl9oZWFkZXIgdXBkYXRlLWFsdGVybmF0aXZlcworCitNVUxUSUxJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJywxKS5zcGxpdCgnLycpWy0xXX0iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRldiA9ICJweXRob24zLWNvbmZpZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtweXRob24zLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0tY29uZmlnIgorQUxURVJOQVRJVkVfVEFSR0VUW3B5dGhvbjMtY29uZmlnXSA9ICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9IgorCisKK0RFUEVORFMgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGxpYmZmaSBiemlwMiBvcGVuc3NsIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHogdmlydHVhbC9jcnlwdCB1dGlsLWxpbnV4IGxpYnRpcnBjIGxpYm5zbDIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHB5dGhvbjMtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBweXRob24zLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGhvdXQtZW5zdXJlcGlwIC0tZW5hYmxlLXNoYXJlZCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0iCisKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEg9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24zLW5hdGl2ZSIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiIFwKKyAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X3dvcmtpbmdfdHpzZXQ9eWVzIFwKKyIKK3B5dGhvbigpIHsKKyAgICAjIFBHTyBjdXJyZW50bHkgY2F1c2VzIGJ1aWxkcyB0byBub3QgYmUgcmVwcm9kdWNpYmxlLCBzbyBkaXNhYmxlIGl0IGZvcgorICAgICMgbm93LiBTZWUgWU9DVE8gIzEzNDA3CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsIFRydWUsIEZhbHNlLCBkKSBhbmQgZC5nZXRWYXIoJ0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUycpICE9ICcxJzoKKyAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJ3BnbycpCisgICAgZWxzZToKKyAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJycpCit9CisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAicmVhZGxpbmUgJHtQQUNLQUdFQ09ORklHX1BHT30gZ2RibSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAicmVhZGxpbmUgZ2RibSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID8/PSAicmVhZGxpbmUgZ2RibSIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIiwscmVhZGxpbmUiCisjIFVzZSBwcm9maWxlIGd1aWRlZCBvcHRpbWlzYXRpb24gYnkgcnVubmluZyBQeUJlbmNoIGluc2lkZSBxZW11LXVzZXIKK1BBQ0tBR0VDT05GSUdbcGdvXSA9ICItLWVuYWJsZS1vcHRpbWl6YXRpb25zLCxxZW11LW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbdGtdID0gIiwsdGsiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIiwsZ2RibSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7Qn0vTW9kdWxlcworICAgIGNhdCA+ICR7Qn0vTW9kdWxlcy9TZXR1cC5sb2NhbCA8PCBFT0YKKypkaXNhYmxlZCoKKyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dkYm0nLCAnJywgJ19nZGJtIF9kYm0nLCBkKX0KKyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JlYWRsaW5lJywgJycsICdyZWFkbGluZScsIGQpfQorRU9GCit9CisKK0NQUEZMQUdTX2FwcGVuZCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS9uY3Vyc2VzdyAtSSR7U1RBR0lOR19JTkNESVJ9L3V1aWQiCisKK0VYVFJBX09FTUFLRSA9ICdcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICBMSUI9JHtiYXNlbGlifSBcCisnCisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGdvJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyR7U1RBR0lOR19ESVJfVEFSR0VUfScsIFsnJHtCfScsICcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICAgICAgICAgIGNhdCA+cGdvLXdyYXBwZXIgPDxFT0YKKyMhL2Jpbi9zaAorY2QgJHtCfQorJHFlbXVfYmluYXJ5ICJcJEAiCitFT0YKKyAgICAgICAgICAgICAgICBjaG1vZCAreCBwZ28td3JhcHBlcgorICAgICAgICBmaQorfQorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisgICAgICAgICR7V09SS0RJUn0vY2hlY2tfYnVpbGRfY29tcGxldGVuZXNzLnB5ICR7VH0vbG9nLmRvX2NvbXBpbGUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKyAgICAgICAgZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbworICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCisgICAgICAgIGRvbmUKKyAgICAgICAgIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKKyAgICAgICAgIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisgICAgICAgICMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorICAgICAgICAjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCisgICAgICAgIGxuIC1zIHB5dGhvbjMtbmF0aXZlL3B5dGhvbjMgJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24zCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhCisgICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgJHtEfSAtbmFtZSBfc3lzY29uZmlnKi5weWAKKyAgICAgICAgY3AgJHN5c2NvbmZpZ2ZpbGUgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQorCisgICAgICAgIHNlZCAtaSAgXAorICAgICAgICAgICAgICAgIC1lICJzLF4gJ0xJQkRJUicuKiwgJ0xJQkRJUic6ICcke1NUQUdJTkdfTElCRElSfSdcLCxnIiBcCisgICAgICAgICAgICAgICAgLWUgInMsXiAnSU5DTFVERURJUicuKiwgJ0lOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAorICAgICAgICAgICAgICAgIC1lICJzLF4gJ0NPTkZJTkNMVURFRElSJy4qLCAnQ09ORklOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAorICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTERJUlNUT01BS0UnL3tOOyBzLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnfSIgXAorICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTFVERVBZJy9zLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnIiBcCisgICAgICAgICAgICAgICAgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIF9zeXNjb25maWdkYXRhLnB5IgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisgICAgICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKyAgICAgICAgc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisgICAgICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKyAgICAgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgICAgICAgICAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfSovTWFrZWZpbGUgXAorICAgICAgICAgICAgICAgICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5IFwKKyAgICAgICAgICAgICAgICAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LWNvbmZpZworCisgICAgICAgICMgUmVmb3JtYXQgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0IHNvIHRoYXQgaXQgcmVtYWlucworICAgICAgICAjIHJlcHJvZHVjaWJsZQorICAgICAgICBmb3IgYyBpbiAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhKi5weTsgZG8KKyAgICAgICAgICAgIHB5dGhvbjMgJHtXT1JLRElSfS9yZWZvcm1hdF9zeXNjb25maWcucHkgJGMKKyAgICAgICAgZG9uZQorCisgICAgICAgICMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAorICAgICAgICBjZCAke1BLR0R9CisgICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgLiAtbmFtZSBfc3lzY29uZmlnZGF0YV8qLnB5YAorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisgICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnKSIKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJywgb3B0aW1pemU9MSkiCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScsIG9wdGltaXplPTIpIgorICAgICAgICBjZCAtCisKKyAgICAgICAgbXYgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWcgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9CisgICAgICAgIAorICAgICAgICAjUmVtb3ZlIHRoZSB1bm5lZWRlZCBjb3B5IG9mIHRhcmdldCBzeXNjb25maWcgZGF0YQorICAgICAgICBybSAtcmYgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEKK30KKworIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0CisjIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCitJTkNMVURFX1BZQ1MgPz0gIjEiCisKK3B5dGhvbigpeworICAgIGltcG9ydCBjb2xsZWN0aW9ucywganNvbgorCisgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbjMnLCAncHl0aG9uMy1tYW5pZmVzdC5qc29uJykKKyAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCisgICAgIyB0aGF0IGRlcGVuZGVuY3kuCisgICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKKyAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgorICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKKyAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQorCisgICAgIyBGaXJzdCBzZXQgUlBST1ZJREVTIGZvciAtbmF0aXZlIGNhc2UKKyAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbjMtbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbjMtZm9vLW5hdGl2ZQorICAgIHBuID0gJ3B5dGhvbjMnCisgICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKKworICAgICMgJHtQTn0tbWlzYy1uYXRpdmUgaXMgbm90IGluIHRoZSBtYW5pZmVzdAorICAgIHJwcm92aWRlcy5hcHBlbmQocG4gKyAnLW1pc2MtbmF0aXZlJykKKworICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJworICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKKyAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICBkLnNldFZhcignUlBST1ZJREVTX2NsYXNzLW5hdGl2ZScsICcgJy5qb2luKHJwcm92aWRlcykpCisKKyAgICAjIFRoZW4gd29yayBvbiB0aGUgdGFyZ2V0CisgICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCisKKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisKKyAgICBuZXdwYWNrYWdlcz1bXQorICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleQorCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZworICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKKyAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgICAgICAjIEFkZCBjYWNoZWQgZmlsZXMKKyAgICAgICAgaWYgaW5jbHVkZV9weWNzID09ICcxJzoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJywgMSlbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XS5nZXQoJ3JyZWNvbW1lbmRzJywgKCkpOgorICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScsIDEpWzFdCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKKworICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBQcmVwZW5kaW5nIHNvIHRvIGF2b2lkIHB5dGhvbi1taXNjIGdldHRpbmcgZXZlcnl0aGluZworICAgIHBhY2thZ2VzID0gbmV3cGFja2FnZXMgKyBwYWNrYWdlcworICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcycsICcxJykKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tcGtndXRpbCcsICcxJykKK30KKworIyBGaWxlcyBuZWVkZWQgdG8gY3JlYXRlIGEgbmV3IG1hbmlmZXN0CisKK2RvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKKyAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgorICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCisgICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQorICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKKyAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KKyAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90CisgICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KKworICAgIGNkICR7V09SS0RJUn0KKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KKyAgICBuYXRpdmVweXRob24zIGNyZWF0ZV9tYW5pZmVzdDMucHkgJHtQWVRIT05fTUFKTUlOfQorICAgIGNwIHB5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgorfQorCisjIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAorYWRkdGFzayBkb19jcmVhdGVfbWFuaWZlc3QKKworIyBNYWtlIHN1cmUgd2UgaGF2ZSBuYXRpdmUgcHl0aG9uIHJlYWR5IHdoZW4gd2UgY3JlYXRlIGEgbmV3IG1hbmlmZXN0Citkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCitkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3BhdGNoIgorCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uMy1tb2R1bGVzIgorUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbCBjYS1jZXJ0aWZpY2F0ZXMiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBvcGVuc3NsIGNhLWNlcnRpZmljYXRlcyIKKworIyBGb3IgaGlzdG9yaWNhbCByZWFzb25zIFBOIGlzIGVtcHR5IGFuZCBwcm92aWRlZCBieSBweXRob24zLW1vZHVsZXMKK0ZJTEVTXyR7UE59ID0gIiIKK1JQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgorCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworIyBwcm92aWRlIHB5dGhvbi1weXZlbnYgZnJvbSBweXRob24zLXZlbnYKK1JQUk9WSURFU18ke1BOfS12ZW52ICs9ICJweXRob24zLXB5dmVudiIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjMKK1BBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgorRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59LSovbGlicHl0aG9uJHtQWVRIT05fTUFKTUlOfS5hIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgorCisjIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCitQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gInB5dGhvbjMtY29yZSBweXRob24zLWVtYWlsIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtcHlkb2MgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1hdWRpbyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZXNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHl0aG9uMy1taXNjIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBweXRob24zLW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59ICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkIgorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKKyMgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTg3NDggYW5kIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzczOTUKK1JERVBFTkRTX2xpYnB5dGhvbjNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYmdjYyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMgdW56aXAgYnppcDIgbGliZ2NjIHR6ZGF0YS1ldXJvcGUgY29yZXV0aWxzIHNlZCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS10ci10ci5pc28tODg1OS05IgorUkRFUEVORFNfJHtQTn0tdGtpbnRlciArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGsnLCAndGsgdGstbGliJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1JERVBFTkRTXyR7UE59LXRlc3RzX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGJhc2giCitSREVQRU5EU18ke1BOfS10ZXN0c19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBiYXNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4NTZhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi5pbmMKLQotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgXAotICAgICAgICAgICByZWFkbGluZSBzcWxpdGUzIHpsaWIgdmlydHVhbC9jcnlwdCIKLQotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaCBcCi0gICAgICAgICAgICR7RElTVFJPX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXR1cF9weV9za2lwX2Nyb3NzX2ltcG9ydF9jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NldHVwdHdlYWtzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICcnLCAnZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCcsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Zsb2F0LWVuZGlhbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbjItdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUgcHRlc3QKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBhY19jdl93b3JraW5nX3R6c2V0PXllcyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiIKLVBBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLGRiIgotUEFDS0FHRUNPTkZJR1t0a10gPSAiLCx0ayIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKLSAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycwotICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4MgotICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICi0Jc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCi0KLQlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCi0JZmkKLQlzZWQgLWkgLWUgJ3MjXkxERkxBR1M9LiojTERGTEFHUz0ke0xERkxBR1N9IC1MLiAtTCR7U1RBR0lOR19MSUJESVJ9I2cnIFwKLQkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCi0JCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJTWFrZWZpbGUKLQkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCi0JIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290Ci0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKLQotCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgotCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKLQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAotCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKLQotCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgotCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKLQotCSMgQWZ0ZXIgc3dpenpsaW5nIHRoZSBtYWtlZmlsZSwgd2UgbmVlZCB0byBydW4gdGhlIGJ1aWxkIGFnYWluLgotCSMgaW5zdGFsbCBjYW4gcmFjZSB3aXRoIHRoZSBidWlsZCBzbyB3ZSBoYXZlIHRvIHJ1biB0aGlzIGZpcnN0LCB0aGVuIGluc3RhbGwKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9Ci0JCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCi0KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCi0JaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcuaAotCi0gICAgaWYgWyAteiAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsIGQpfSIgXTsgdGhlbgotICAgICAgICBybSAtcmYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ic2RkYgotICAgIGZpCi0KLSAgICAjIFB5dGhvbiAzLnggdmVyc2lvbiBvZiAydG8zIGlzIG5vdyB0aGUgZGVmYXVsdAotICAgIG12ICR7RH0vJHtiaW5kaXJ9LzJ0bzMgJHtEfS8ke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24yLjcgUFlUSE9OSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0JIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0KLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLQkoY2QgJHtQS0dEfTsgcHl0aG9uIC1tIHB5X2NvbXBpbGUgLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSkKLX0KLQotUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59IgotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24tbW9kdWxlcyIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCi0KLSMgcGFja2FnZSBsaWJweXRob24yCi1QQUNLQUdFUyA9KyAibGliJHtCUE59MiIKLUZJTEVTX2xpYiR7QlBOfTIgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLQotIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKLQotIyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCB0emRhdGEtZXVyb3BlIGNvcmV1dGlscyBzZWQiCi1SREVQRU5EU18ke1BOfS10a2ludGVyICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICd0ayB0ay1saWInLCAnJywgZCl9IgotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi0jIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKLVJERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgotCi0jIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKLSMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKLQotSU5DTFVERV9QWUNTID89ICIxIgotCi1weXRob24oKXsKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMsIGpzb24KLQotICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24nLCAncHl0aG9uMi1tYW5pZmVzdC5qc29uJykKLSAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCi0gICAgIyB0aGF0IGRlcGVuZGVuY3kuCi0gICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQotCi0gICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgotICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgotICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQotCi0gICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCi0KLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0KLSAgICBuZXdwYWNrYWdlcz1bXQotCi0gICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6Ci0gICAgICAgIHB5cGFja2FnZT0gcG4gKyAnLScgKyBrZXkKLQotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCi0gICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0gICAgICAgICAgICBpZiBpbmNsdWRlX3B5Y3MgPT0gJzEnOgotICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCcucHknKToKLSAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlICsgJ2MnKQotCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKLSAgICAgICAgICAgICMgTWFrZSBpdCB3b3JrIHdpdGggb3Igd2l0aG91dCAkUE4KLSAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nKVsxXQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCi0gICAgICAgIGQuc2V0VmFyKCdTVU1NQVJZXycgKyBweXBhY2thZ2UsIHB5dGhvbl9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10pCi0KLSAgICAjIFByZXBlbmRpbmcgc28gdG8gYXZvaWQgcHl0aG9uLW1pc2MgZ2V0dGluZyBldmVyeXRoaW5nCi0gICAgcGFja2FnZXMgPSBuZXdwYWNrYWdlcyArIHBhY2thZ2VzCi0gICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzJywgJzEnKQotfQotCi0jIEZpbGVzIG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKLVNSQ19VUkkgKz0gImZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QyLnB5IGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMyLnB5IGZpbGU6Ly9weXRob24yLW1hbmlmZXN0Lmpzb24iCi0KLWRvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKLSAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgotICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCi0gICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQotICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKLSAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KLSAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90Ci0gICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KLQotICAgIGNkICR7V09SS0RJUn0KLSAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KLSAgICBuYXRpdmVweXRob24gY3JlYXRlX21hbmlmZXN0Mi5weQotICAgIGNwIHB5dGhvbjItbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCi19Ci0KLSMgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0Ci1hZGR0YXNrIGRvX2NyZWF0ZV9tYW5pZmVzdAotCi0jIE1ha2Ugc3VyZSB3ZSBoYXZlIG5hdGl2ZSBweXRob24gcmVhZHkgd2hlbiB3ZSBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKLWRvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uOmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCi1kb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjpkb19wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgppbmRleCAzNzJlZWJkLi4yZmMwNzY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci1uYXRpdmVfMS4wLmJiCkBAIC01LDcgKzUsMTAgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS90dW5jdGwuYztlbmRsaW5lPTQ7bWQ1PWZmM2EwOTk5NmJjNWZmZjZiYzVkNGUwYjRjMjhmOTk5IgogCi1TUkNfVVJJID0gImZpbGU6Ly90dW5jdGwuYyIKK1NSQ19VUkkgPSAiXAorICAgIGZpbGU6Ly90dW5jdGwuYyBcCisgICAgZmlsZTovL3FlbXUtb2UtYnJpZGdlLWhlbHBlciBcCisgICAgIgogCiBTID0gIiR7V09SS0RJUn0iCiAKQEAgLTE4LDYgKzIxLDggQEAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJaW5zdGFsbCB0dW5jdGwgJHtEfSR7YmluZGlyfS8KKworICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vcWVtdS1vZS1icmlkZ2UtaGVscGVyICR7RH0ke2JpbmRpcn0vCiB9CiAKIERFUEVORFMgKz0gInFlbXUtc3lzdGVtLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXIvcWVtdS1vZS1icmlkZ2UtaGVscGVyIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci9xZW11LW9lLWJyaWRnZS1oZWxwZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjA1N2Q0ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXIvcWVtdS1vZS1icmlkZ2UtaGVscGVyCkBAIC0wLDAgKzEsMjUgQEAKKyMhIC9iaW4vc2gKKyMgQ29weXJpZ2h0IDIwMjAgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcworIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorIworIyBBdHRlbXB0cyB0byBmaW5kIGFuZCBleGVjIHRoZSBob3N0IHFlbXUtYnJpZGdlLWhlbHBlciBwcm9ncmFtCisKKyMgSWYgdGhlIFFFTVVfQlJJREdFX0hFTFBFUiB2YXJpYWJsZSBpcyBzZXQgYnkgdGhlIHVzZXIsIGV4ZWMgaXQuCitpZiBbIC1uICIkUUVNVV9CUklER0VfSEVMUEVSIiBdOyB0aGVuCisgICAgZXhlYyAiJFFFTVVfQlJJREdFX0hFTFBFUiIgIiRAIgorZmkKKworIyBTZWFyY2ggY29tbW9uIHBhdGhzIGZvciB0aGUgaGVscGVyIHByb2dyYW0KK0JOPSJxZW11LWJyaWRnZS1oZWxwZXIiCitQQVRIUz0iL3Vzci9saWJleGVjLyAvdXNyL2xpYi9xZW11LyIKKworZm9yIHAgaW4gJFBBVEhTOyBkbworICAgIGlmIFsgLWUgIiRwLyRCTiIgXTsgdGhlbgorICAgICAgICBleGVjICIkcC8kQk4iICIkQCIKKyAgICBmaQorZG9uZQorCitlY2hvICIkQk4gbm90IGZvdW5kISIgPiAvZGV2L3N0ZGVycgorZXhpdCAxCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1uYXRpdmUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKaW5kZXggNjljMmM0My4uMjhjZmQyYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKQEAgLTMsOCArMyw4IEBACiByZXF1aXJlIHFlbXUuaW5jCiAKIFNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMC1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEyLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2ggXAogICAgICAgICAgICAgIgogCiBFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBMRD0nJHtMRH0nIEFSPScke0FSfScgT0JKQ09QWT0nJHtPQkpDT1BZfScgTERGTEFHUz0nJHtMREZMQUdTfSciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlXzQuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjIuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXN5c3RlbS1uYXRpdmVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtc3lzdGVtLW5hdGl2ZV80LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXN5c3RlbS1uYXRpdmVfNC4xLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1zeXN0ZW0tbmF0aXZlXzQuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMKaW5kZXggODE4NGVmNS4uMjRmOWEwMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXRhcmdldHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYwpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgICAgc29mdG1tdW9ubHkgKz0gYXJjaCArICItc29mdG1tdSwiCiAgICAgICAgICAgICBhcmNocy5yZW1vdmUoYXJjaCkKICAgICBsaW51eHVzZXJvbmx5ID0gIiIKLSAgICBmb3IgYXJjaCBpbiBbJ2FybWViJywgJ2FscGhhJywgJ3BwYzY0YWJpMzInLCAnc3BhcmMzMnBsdXMnLCAnYWFyY2g2NF9iZSddOgorICAgIGZvciBhcmNoIGluIFsnYXJtZWInLCAnYWxwaGEnLCAncHBjNjRhYmkzMicsICdwcGM2NGxlJywgJ3NwYXJjMzJwbHVzJywgJ2FhcmNoNjRfYmUnXToKICAgICAgICAgaWYgYXJjaCBpbiBhcmNoczoKICAgICAgICAgICAgIGxpbnV4dXNlcm9ubHkgKz0gYXJjaCArICItbGludXgtdXNlciwiCiAgICAgICAgICAgICBhcmNocy5yZW1vdmUoYXJjaCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCmluZGV4IDYwMWZjMjIuLjdhMWNjZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjcsMTMgKzI3LDIxIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA5LUZpeC13ZWJraXRndGstYnVpbGRzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE1ODkwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTEyMDY4LnBhdGNoIFwKLSAgICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTcxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC03MDM5LTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtNzAzOS0yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDIwLTcwMzktMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1lbmFibGUtZGlzYWJsZS11ZGV2LnBhdGNoIFwKKwkgICBmaWxlOi8vQ1ZFLTIwMjAtNzIxMS5wYXRjaCBcCisJICAgZmlsZTovLzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTExMDIucGF0Y2ggXAorCSAgICIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjZGYyYjVjYTUyYjlhYmFjOWJhY2I1ODQyZmE0MjBmOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NTZlNjAyMTg2ODliZGVlYzY5OTAzMDg3ZmQ3NTgyZDVkM2U3MjIzOGQwMmY0NDgxZDhkYzZkNzlmZDkwOWM2IgorU1JDX1VSSVttZDVzdW1dID0gIjI3OGVlYjI5NGU0YjQ5N2U3OWFmN2E1N2U2NjBjYjlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzNDgxZDQxMDhjZTIxMWEwNTNlZjE1YmU2OWFmMWJkZDlkZGUxNTEwZmRhODBkOTJiZTBmNmMzZTk4NzY4ZjAiCiAKIENPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCkBAIC01NSwxMCArNjMsMTIgQEAKIAkjIERvbid0IGNoZWNrIHRoZSBmaWxlIGdlbnJlYXRlZCBieSBjb25maWd1cmUKIAlzZWQgLWkgLWUgJy93aWxkY2FyZCBjb25maWctaG9zdC5tYWsvZCcgXAogCSAgICAgICAtZSAnJCB7L2VuZGlmL2R9JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCisgICAgICAgIHNlZCAtaSAtZSAncywke0hPU1RUT09MU19ESVJ9L3B5dGhvbjMsJHtiaW5kaXJ9L3B5dGhvbjMsJyBcCisgICAgICAgICAgICAke0R9LyR7UFRFU1RfUEFUSH0vdGVzdHMvcWVtdS1pb3Rlc3RzL2NvbW1vbi5lbnYgCiB9CiAKICMgUUVNVV9UQVJHRVRTIGlzIG92ZXJyaWRhYmxlIHZhcmlhYmxlCi1RRU1VX1RBUkdFVFMgPz0gImFybSBhYXJjaDY0IGkzODYgbWlwcyBtaXBzZWwgbWlwczY0IG1pcHM2NGVsIHBwYyBwcGM2NCByaXNjdjMyIHJpc2N2NjQgc2g0IHg4Nl82NCIKK1FFTVVfVEFSR0VUUyA/PSAiYXJtIGFhcmNoNjQgaTM4NiBtaXBzIG1pcHNlbCBtaXBzNjQgbWlwczY0ZWwgcHBjIHBwYzY0IHBwYzY0bGUgcmlzY3YzMiByaXNjdjY0IHNoNCB4ODZfNjQiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCkBAIC03NSw2ICs4NSw4IEBACiAgICAgLS1kaXNhYmxlLXN0cmlwIFwKICAgICAtLWRpc2FibGUtd2Vycm9yIFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCisgICAgLS13aXRoLWdpdD0vYmluL2ZhbHNlIFwKKyAgICAtLWRpc2FibGUtZ2l0LXVwZGF0ZSBcCiAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCiAgICAgIgogCkBAIC0xMzUsNyArMTQ3LDcgQEAKIFBBQ0tBR0VDT05GSUdbdmlydGZzXSA9ICItLWVuYWJsZS12aXJ0ZnMgLS1lbmFibGUtYXR0ciwtLWRpc2FibGUtdmlydGZzLGxpYmNhcCBhdHRyLCIKIFBBQ0tBR0VDT05GSUdbYWlvXSA9ICItLWVuYWJsZS1saW51eC1haW8sLS1kaXNhYmxlLWxpbnV4LWFpbyxsaWJhaW8sIgogUEFDS0FHRUNPTkZJR1t4ZnNdID0gIi0tZW5hYmxlLXhmc2N0bCwtLWRpc2FibGUteGZzY3RsLHhmc3Byb2dzLCIKLVBBQ0tBR0VDT05GSUdbeGVuXSA9ICItLWVuYWJsZS14ZW4sLS1kaXNhYmxlLXhlbix4ZW4seGVuLWxpYnhlbnN0b3JlIHhlbi1saWJ4ZW5jdHJsIHhlbi1saWJ4ZW5ndWVzdCIKK1BBQ0tBR0VDT05GSUdbeGVuXSA9ICItLWVuYWJsZS14ZW4sLS1kaXNhYmxlLXhlbix4ZW4tdG9vbHMseGVuLXRvb2xzLWxpYnhlbnN0b3JlIHhlbi10b29scy1saWJ4ZW5jdHJsIHhlbi10b29scy1saWJ4ZW5ndWVzdCIKIFBBQ0tBR0VDT05GSUdbdm5jLXNhc2xdID0gIi0tZW5hYmxlLXZuYyAtLWVuYWJsZS12bmMtc2FzbCwtLWRpc2FibGUtdm5jLXNhc2wsY3lydXMtc2FzbCwiCiBQQUNLQUdFQ09ORklHW3ZuYy1qcGVnXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLWpwZWcsLS1kaXNhYmxlLXZuYy1qcGVnLGpwZWcsIgogUEFDS0FHRUNPTkZJR1t2bmMtcG5nXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLXBuZywtLWRpc2FibGUtdm5jLXBuZyxsaWJwbmcsIgpAQCAtMTY1LDYgKzE3NywxMCBAQAogIyB1c2JyZWRpciB3aWxsIGJlIGluIG1ldGEtbmV0d29ya2luZyBsYXllcgogUEFDS0FHRUNPTkZJR1t1c2ItcmVkaXJdID0gIi0tZW5hYmxlLXVzYi1yZWRpciwtLWRpc2FibGUtdXNiLXJlZGlyLHVzYnJlZGlyIgogUEFDS0FHRUNPTkZJR1tzbmFwcHldID0gIi0tZW5hYmxlLXNuYXBweSwtLWRpc2FibGUtc25hcHB5LHNuYXBweSIKK1BBQ0tBR0VDT05GSUdbZ2x1c3RlcmZzXSA9ICItLWVuYWJsZS1nbHVzdGVyZnMsLS1kaXNhYmxlLWdsdXN0ZXJmcyIKK1BBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItLWVuYWJsZS14a2Jjb21tb24sLS1kaXNhYmxlLXhrYmNvbW1vbixsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW2xpYnVkZXZdID0gIi0tZW5hYmxlLWxpYnVkZXYsLS1kaXNhYmxlLWxpYnVkZXYsZXVkZXYiCitQQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0tZW5hYmxlLWxpYnhtbDIsLS1kaXNhYmxlLWxpYnhtbDIsbGlieG1sMiIKIAogSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtQWRkLWVuYWJsZS1kaXNhYmxlLXVkZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1BZGQtZW5hYmxlLWRpc2FibGUtdWRldi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmM1ODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtQWRkLWVuYWJsZS1kaXNhYmxlLXVkZXYucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBhNDcxY2Y0ZTRjNzMzNTBlMDkwZWIyY2Q4N2VjOTU5ZDEzODAxMmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBUaHUsIDE5IE1hciAyMDIwIDExOjU0OjI2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBlbmFibGUvZGlzYWJsZSBsaWJ1ZGV2CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBjb25maWd1cmUgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGNhYzI3MWMuLmJkMTE2ZWIgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTE1MzksNiArMTUzOSwxMCBAQCBmb3Igb3B0IGRvCisgICA7OworICAgLS1kaXNhYmxlLXBsdWdpbnMpIHBsdWdpbnM9Im5vIgorICAgOzsKKysgIC0tZW5hYmxlLWxpYnVkZXYpIGxpYnVkZXY9InllcyIKKysgIDs7CisrICAtLWRpc2FibGUtbGlidWRldikgbGlidWRldj0ibm8iCisrICA7OworICAgKikKKyAgICAgICBlY2hvICJFUlJPUjogdW5rbm93biBvcHRpb24gJG9wdCIKKyAgICAgICBlY2hvICJUcnkgJyQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXFlbXUtQWRkLW1pc3Npbmctd2Fjb20tSElELWRlc2NyaXB0b3IucGF0Y2gKaW5kZXggOTQ3ODEwMi4uNjZmZjk5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0NjU1ZGMxODA3NGUwYmU5ZDIzOWY1MWRhYzMyYjYxNDM1ZGE4NTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MjZjYjdlMjZmNmRkOTZjOWVlMmZmYTA1Y2UwYTM1OGQzYmZiZmIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CiBEYXRlOiBUaHUsIDI3IE5vdiAyMDE0IDE0OjA0OjI5ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IEFkZCBtaXNzaW5nIHdhY29tIEhJRCBkZXNjcmlwdG9yCkBAIC0xOSw3ICsxOSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2h3L3VzYi9kZXYtd2Fjb20uYyBiL2h3L3VzYi9kZXYtd2Fjb20uYwotaW5kZXggOGM0M2RiOTMuLjNmZjhjYTI4IDEwMDY0NAoraW5kZXggOGVkNTdiM2IuLjE1MDI5MjhiIDEwMDY0NAogLS0tIGEvaHcvdXNiL2Rldi13YWNvbS5jCiArKysgYi9ody91c2IvZGV2LXdhY29tLmMKIEBAIC03NCw2ICs3NCw4OSBAQCBzdGF0aWMgY29uc3QgVVNCRGVzY1N0cmluZ3MgZGVzY19zdHJpbmdzID0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LURvLW5vdC1pbmNsdWRlLWZpbGUtaWYtbm90LWV4aXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2NhYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5OGMyZGExMjlkYjE5ZWU2M2Q3ZTIxYjc3YTBlZjcwODIyYzk1MDY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CitEYXRlOiBXZWQsIDI1IE1hciAyMDIwIDIxOjIxOjM1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IERvIG5vdCBpbmNsdWRlIGZpbGUgaWYgbm90IGV4aXN0cworCitTY3JpcHQgY29uZmlndXJlIGNoZWNrcyBmb3IgaWZfYWxnLmggYW5kIGNoZWNrIGZhaWxlZCBidXQKK2lmX2FsZy5oIHN0aWxsIGluY2x1ZGVkLgorCitVcHN0cmVhbS1zdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMjAtMDMvbXNnMDcxODguaHRtbF0KK1NpZ25lZC1vZmYtYnk6IE9sZWtzaXkgT2JpdG90c2t5eSA8b29iaXRvdHNAY2lzY28uY29tPgorLS0tCisgbGludXgtdXNlci9zeXNjYWxsLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9zeXNjYWxsLmMgYi9saW51eC11c2VyL3N5c2NhbGwuYworaW5kZXggZmMxOGYyNDQuLjY4ZDYyNjY2IDEwMDY0NAorLS0tIGEvbGludXgtdXNlci9zeXNjYWxsLmMKKysrKyBiL2xpbnV4LXVzZXIvc3lzY2FsbC5jCitAQCAtMTA2LDcgKzEwNiw5IEBACisgI2luY2x1ZGUgPGxpbnV4L2Jsa3BnLmg+CisgI2luY2x1ZGUgPG5ldHBhY2tldC9wYWNrZXQuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorKyNpZiBkZWZpbmVkKENPTkZJR19BRl9BTEcpCisgI2luY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgorKyNlbmRpZgorICNpbmNsdWRlICJsaW51eF9sb29wLmgiCisgI2luY2x1ZGUgInVuYW1lLmgiCisgCistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaAppbmRleCAyY2NkZGQ1Li43ZjdkYTUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY3NzUxZjNhMjNlM2RiMzAxMmYzOTFiM2IzYjczYTQ0ODQ0ODhjZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhlZTYyODE1MTZiZDkyMTBlNzVlOTFkNzA1ZGE4OTE2YmFiM2JmNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgogRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAxMTowNjo1NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBBZGQgc3VicGFja2FnZSAtcHRlc3Qgd2hpY2ggcnVucyBhbGwgdW5pdCB0ZXN0IGNhc2VzIGZvcgpAQCAtMTUsMTAgKzE1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLWluZGV4IGZkN2ZkYjg2Li44M2I3ZjQwOSAxMDA2NDQKK2luZGV4IDg1NjZmNWYxLi41MmQwMzIwYiAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKICsrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLUBAIC0xMTgzLDQgKzExODMsMTIgQEAgYWxsOiAkKFFFTVVfSU9URVNUU19IRUxQRVJTLXkpCitAQCAtMTIxMCw0ICsxMjEwLDEyIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoCmluZGV4IDVjNDJkNjguLjAxMmQ2MGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjM1Yjk0ZjExODg1OTc4NzNjODc3NmIwMTlmZWQ0OTk0Nzk4MzM5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2UxZWNlYWIyMzUwZDI3OTYwZWMyNTQ2NTA3MTcwODVmNmExMWM5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDI4IE1hciAyMDE0IDE3OjQyOjQzICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IEFkZCBhZGRpdGlvbiBlbnZpcm9ubWVudCBzcGFjZSB0byBib290IGxvYWRlcgpAQCAtMTksMTUgKzE5LDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody9taXBzL21pcHNfbWFsdGEuYyBiL2h3L21pcHMvbWlwc19tYWx0YS5jCi1pbmRleCAyMGUwMTliZi4uZDE1MGIwMWMgMTAwNjQ0CitpbmRleCA5MmU5Y2E1Yi4uM2E3ZjM5NTQgMTAwNjQ0CiAtLS0gYS9ody9taXBzL21pcHNfbWFsdGEuYwogKysrIGIvaHcvbWlwcy9taXBzX21hbHRhLmMKLUBAIC02MCw3ICs2MCw3IEBACitAQCAtNTksNyArNTksNyBAQAogIAotICNkZWZpbmUgRU5WUF9BRERSCQkweDgwMDAyMDAwbAotICNkZWZpbmUgRU5WUF9OQl9FTlRSSUVTCSAJMTYKLS0jZGVmaW5lIEVOVlBfRU5UUllfU0laRQkgCTI1NgotKyNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFCSAJMTAyNAorICNkZWZpbmUgRU5WUF9BRERSICAgICAgICAgICAweDgwMDAyMDAwbAorICNkZWZpbmUgRU5WUF9OQl9FTlRSSUVTICAgICAxNgorLSNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFICAgICAyNTYKKysjZGVmaW5lIEVOVlBfRU5UUllfU0laRSAgICAgMTAyNAogIAogIC8qIEhhcmR3YXJlIGFkZHJlc3NlcyAqLwotICNkZWZpbmUgRkxBU0hfQUREUkVTUyAweDFlMDAwMDAwVUxMCisgI2RlZmluZSBGTEFTSF9BRERSRVNTICAgICAgIDB4MWUwMDAwMDBVTEwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaAppbmRleCAwYWM0YWI0Li5iYzMwMzk3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1xZW11LWRpc2FibGUtVmFsZ3JpbmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYWQ3YTM3NTAxNWQ0N2ZkZjUwMTZlMDNlMTFmYTkzNDQwZDZkOGJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0MTI3Mjk2YmIxMDQ2Y2RmNzM5OTRiYTY5ZGM5MTNkOGMwMmZkNzRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjAgT2N0IDIwMTUgMjI6MTk6MDggKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogZGlzYWJsZSBWYWxncmluZApAQCAtMTMsMTAgKzEzLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDcxNGU3ZmI2Li5kYWQ0ZmM1OSAxMDA3NTUKK2luZGV4IDYwOTliZTFkLi5hNzY2MDE3YiAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNTMzNSwxNSArNTMzNSw2IEBAIGZpCitAQCAtNTM5MCwxNSArNTM5MCw2IEBAIGZpCiAgIyBjaGVjayBpZiB3ZSBoYXZlIHZhbGdyaW5kL3ZhbGdyaW5kLmgKICAKICB2YWxncmluZF9oPW5vCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDUtcWVtdS1uYXRpdmUtc2V0LWxkLmJmZC1maXgtY2ZsYWdzLWFuZC1zZXQtc29tZS1lbnZpci5wYXRjaAppbmRleCBhNzM2ODE1Li5lYzMwMzM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA1LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDgwZTYwNzBiY2RmZTYzNmIxMDNhMTM1OThlNmMzOGFkMGQwZTc2MjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZjZGY4MmFmMmViYTMxMmI5YjhkYTg2ZGRhMjhiOThkM2Q1MWY0ZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBTdGVwaGVuIEFybm9sZCA8c2Fybm9sZEB2Y3RsYWJzLmNvbT4KIERhdGU6IFN1biwgMTIgSnVuIDIwMTYgMTg6MDk6NTYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdS1uYXRpdmU6IHNldCBsZC5iZmQsIGZpeCBjZmxhZ3MsIGFuZCBzZXQgc29tZSBlbnZpcm9ubWVudApAQCAtMTAsMTAgKzEwLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGRhZDRmYzU5Li42ODViYmU1ZSAxMDA3NTUKK2luZGV4IGE3NjYwMTdiLi43MmYxMWFjYSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNTk3MSwxMCArNTk3MSw2IEBAIHdyaXRlX2Nfc2tlbGV0b24KK0BAIC02MDg1LDEwICs2MDg1LDYgQEAgd3JpdGVfY19za2VsZXRvbgogIGlmIHRlc3QgIiRnY292IiA9ICJ5ZXMiIDsgdGhlbgogICAgQ0ZMQUdTPSItZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UgLWcgJENGTEFHUyIKICAgIExERkxBR1M9Ii1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSAkTERGTEFHUyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNi1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCmluZGV4IGE0MjM4NTUuLjA4MTBhZTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYWQ4NTM2MDFlNzVmNmQwZGQwOTY3MmJjY2EwNWZiZTRmYWM3NjZhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmNjNjNmNzc1ZTI2NWRmNjk5NjNhNGFkNzgwNWI4Njc4YWNlNjhmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54LmNvbT4KIERhdGU6IFRodSwgMjEgRGVjIDIwMTcgMTE6MzU6MTYgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY2hhcmRldjogY29ubmVjdCBzb2NrZXQgdG8gYSBzcGF3bmVkIGNvbW1hbmQKQEAgLTUyLDEwICs1MiwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci1zb2NrZXQuYyBiL2NoYXJkZXYvY2hhci1zb2NrZXQuYwotaW5kZXggN2NhNWQ5N2EuLjIwN2ZhZTRhIDEwMDY0NAoraW5kZXggMTg1ZmUzOGQuLjU0ZmE0MjM0IDEwMDY0NAogLS0tIGEvY2hhcmRldi9jaGFyLXNvY2tldC5jCiArKysgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKLUBAIC0xMjc4LDYgKzEyNzgsNjcgQEAgc3RhdGljIGJvb2wgcW1wX2NoYXJkZXZfdmFsaWRhdGVfc29ja2V0KENoYXJkZXZTb2NrZXQgKnNvY2ssCitAQCAtMTI4OCw2ICsxMjg4LDY3IEBAIHN0YXRpYyBib29sIHFtcF9jaGFyZGV2X3ZhbGlkYXRlX3NvY2tldChDaGFyZGV2U29ja2V0ICpzb2NrLAogICAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCkBAIC0xMjMsNyArMTIzLDcgQEAKICAKICBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCi1AQCAtMTI4Niw2ICsxMzQ3LDkgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorQEAgLTEyOTYsNiArMTM1Nyw5IEBAIHN0YXRpYyB2b2lkIHFtcF9jaGFyZGV2X29wZW5fc29ja2V0KENoYXJkZXYgKmNociwKICB7CiAgICAgIFNvY2tldENoYXJkZXYgKnMgPSBTT0NLRVRfQ0hBUkRFVihjaHIpOwogICAgICBDaGFyZGV2U29ja2V0ICpzb2NrID0gYmFja2VuZC0+dS5zb2NrZXQuZGF0YTsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICBib29sIGRvX25vZGVsYXkgICAgID0gc29jay0+aGFzX25vZGVsYXkgPyBzb2NrLT5ub2RlbGF5IDogZmFsc2U7CiAgICAgIGJvb2wgaXNfbGlzdGVuICAgICAgPSBzb2NrLT5oYXNfc2VydmVyICA/IHNvY2stPnNlcnZlciAgOiB0cnVlOwogICAgICBib29sIGlzX3RlbG5ldCAgICAgID0gc29jay0+aGFzX3RlbG5ldCAgPyBzb2NrLT50ZWxuZXQgIDogZmFsc2U7Ci1AQCAtMTM1MSw2ICsxNDE1LDE0IEBAIHN0YXRpYyB2b2lkIHFtcF9jaGFyZGV2X29wZW5fc29ja2V0KENoYXJkZXYgKmNociwKK0BAIC0xMzYxLDYgKzE0MjUsMTQgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAogIAogICAgICB1cGRhdGVfZGlzY29ubmVjdGVkX2ZpbGVuYW1lKHMpOwogIApAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgIGlmIChzLT5pc19saXN0ZW4pIHsKICAgICAgICAgIGlmIChxbXBfY2hhcmRldl9vcGVuX3NvY2tldF9zZXJ2ZXIoY2hyLCBpc190ZWxuZXQgfHwgaXNfdG4zMjcwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc193YWl0Y29ubmVjdCwgZXJycCkgPCAwKSB7Ci1AQCAtMTM3MCw5ICsxNDQyLDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCitAQCAtMTM4MCw5ICsxNDUyLDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCiAgICAgIGNvbnN0IGNoYXIgKmhvc3QgPSBxZW11X29wdF9nZXQob3B0cywgImhvc3QiKTsKICAgICAgY29uc3QgY2hhciAqcG9ydCA9IHFlbXVfb3B0X2dldChvcHRzLCAicG9ydCIpOwogICAgICBjb25zdCBjaGFyICpmZCA9IHFlbXVfb3B0X2dldChvcHRzLCAiZmQiKTsKQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICBpZiAoKCEhcGF0aCArICEhZmQgKyAhIWhvc3QpICE9IDEpIHsKICAgICAgICAgIGVycm9yX3NldGcoZXJycCwKICAgICAgICAgICAgICAgICAgICAgIkV4YWN0bHkgb25lIG9mICdwYXRoJywgJ2ZkJyBvciAnaG9zdCcgcmVxdWlyZWQiKTsKLUBAIC0xNDE1LDEyICsxNTA0LDI0IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCitAQCAtMTQyNSwxMiArMTUxNCwyNCBAQCBzdGF0aWMgdm9pZCBxZW11X2Nocl9wYXJzZV9zb2NrZXQoUWVtdU9wdHMgKm9wdHMsIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAogICAgICBzb2NrLT5oYXNfdGxzX2F1dGh6ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtYXV0aHoiKTsKICAgICAgc29jay0+dGxzX2F1dGh6ID0gZ19zdHJkdXAocWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtYXV0aHoiKSk7CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNy1hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCmluZGV4IGI1MGU4YzIuLjg5YmFhZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmNTFlNDllN2Q3ZDg3YjcyNTQyNDJiNzM2MGY5OWMyZGY5NGE1YTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNTlhOThkMTAwMTIzMDMwYTQxNDVlN2VmZTNiOGEwMDE5MjBhOWYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMjYgRmViIDIwMTMgMTE6NDM6MjggLTA1MDAKIFN1YmplY3Q6IFtQQVRDSF0gYXBpYzogZml4dXAgZmFsbHRocm91Z2ggdG8gUElDCkBAIC0zMCw3ICszMCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody9pbnRjL2FwaWMuYyBiL2h3L2ludGMvYXBpYy5jCi1pbmRleCBiY2U4OTkxMS4uZGY0YjU4MmUgMTAwNjQ0CitpbmRleCAyYTc0ZjdiNC4uNGQ1ZGEzNjUgMTAwNjQ0CiAtLS0gYS9ody9pbnRjL2FwaWMuYwogKysrIGIvaHcvaW50Yy9hcGljLmMKIEBAIC02MDMsNyArNjAzLDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKaW5kZXggZTU2MmYyNS4uMzBiYjRkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDgtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjVhMDY0ZjkxZjczNjMwZTVkZmYyYTZhZWIyM2Q5NTNjNDY5Y2VhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2Y4YzlhYWM1MjQzZjUwNmExYTNlOGUyODQ0MTRmMzExY2RlMDRmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54LmNvbT4KIERhdGU6IFdlZCwgMTcgSmFuIDIwMTggMTA6NTE6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGludXgtdXNlcjogRml4IHdlYmtpdGd0ayBoYW5ncyBvbiAzMi1iaXQgeDg2IHRhcmdldApAQCAtMTksMTUgKzE5LDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCi1pbmRleCA4ZmZjNTI1MS4uNDA2N2U3MzkgMTAwNjQ0CitpbmRleCA2ZmY3ODUxZS4uZWJmZjA0ODUgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL21haW4uYwogKysrIGIvbGludXgtdXNlci9tYWluLmMKLUBAIC03Nyw3ICs3Nyw3IEBAIGludCBoYXZlX2d1ZXN0X2Jhc2U7CitAQCAtNzgsNyArNzgsNyBAQCBpbnQgaGF2ZV9ndWVzdF9iYXNlOwogICAgICAgIChUQVJHRVRfTE9OR19CSVRTID09IDMyIHx8IGRlZmluZWQoVEFSR0VUX0FCSTMyKSkKICAvKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIGFzc2lnbiByZXNlcnZlZF92YSB0byBhIHZhcmlhYmxlCiAgICAgb2YgdHlwZSBhYmlfdWxvbmcgYW5kIGV4cGVjdCBpdCB0byBmaXQuICBBdm9pZCB0aGUgbGFzdCBwYWdlLiAgKi8KLS0jICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDB4ZmZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCi0rIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEgICgweDdmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQorLSMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBKENQVSkgICgweGZmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQorKyMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBKENQVSkgICgweDdmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQogICMgIGVsc2UKLSAjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDF1bCA8PCBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMpCisgIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEoQ1BVKSAgKDF1bCA8PCBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMpCiAgIyAgZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA5LUZpeC13ZWJraXRndGstYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKaW5kZXggNDA3MmQ5NC4uN2UyNzNlZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGI2MzNiOWExODEzZmNkNzE1ZGNlNDQ2NTlhODkyOTNmMWM2NGFlOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYxMzE2NjAwN2UzYjg1MmM5OWNhZjJjZDM0YTk3MmUyYzg0NjA3MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBsZ2UuY29tPgogRGF0ZTogRnJpLCAxIEp1biAyMDE4IDA4OjQxOjA3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCB3ZWJraXRndGsgYnVpbGRzCkBAIC0xOCw2ICsxOCw3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorCiAtLS0KICBpbmNsdWRlL2V4ZWMvY3B1LWFsbC5oICB8ICA2ICstLS0tLQogIGluY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIHwgIDUgKysrKy0KQEAgLTI2LDcgKzI3LDcgQEAKICA0IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL2NwdS1hbGwuaCBiL2luY2x1ZGUvZXhlYy9jcHUtYWxsLmgKLWluZGV4IDUzNmVhNThmODEuLjRjNjNhNmEyZTQgMTAwNjQ0CitpbmRleCBlOTY3ODFhNC4uYTM2OWY4MWEgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCiArKysgYi9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCiBAQCAtMTYyLDEyICsxNjIsOCBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBndWVzdF9iYXNlOwpAQCAtNDQsNyArNDUsNyBAQAogIAogICNpbmNsdWRlICJleGVjL2h3YWRkci5oIgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKLWluZGV4IDkxNTFmZGIwNDIuLmNiMmI4ZjMyOWYgMTAwNjQ0CitpbmRleCBmZDQ5OWY3ZS4uMzA1NzVmNjAgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAogKysrIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKIEBAIC02NSw3ICs2NSwxMCBAQCB0eXBlZGVmIHVpbnQ2NF90IGFiaV9wdHI7CkBAIC02MCw3ICs2MSw3IEBACiAgI2RlZmluZSBoMmdfdmFsaWQoeCkgZ3Vlc3RfYWRkcl92YWxpZCgodW5zaWduZWQgbG9uZykoeCkgLSBndWVzdF9iYXNlKQogIAogZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbW1hcC5jIGIvbGludXgtdXNlci9tbWFwLmMKLWluZGV4IDQ2YTZlM2E3NjEuLjc3MzU0NjU0NjIgMTAwNjQ0CitpbmRleCA0NmE2ZTNhNy4uNzczNTQ2NTQgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL21tYXAuYwogKysrIGIvbGludXgtdXNlci9tbWFwLmMKIEBAIC03OCw3ICs3OCw3IEBAIGludCB0YXJnZXRfbXByb3RlY3QoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgcHJvdCkKQEAgLTExMCwxMCArMTExLDEwIEBACiAgCiAgICAgIGlmIChmbGFncyAmIE1SRU1BUF9GSVhFRCkgewogZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvc3lzY2FsbC5jIGIvbGludXgtdXNlci9zeXNjYWxsLmMKLWluZGV4IDhiNDFhMDM5MDEuLmJjNWQ4NWRlMDIgMTAwNjQ0CitpbmRleCAxNzFjMGNhZS4uZmMxOGYyNDQgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL3N5c2NhbGwuYwogKysrIGIvbGludXgtdXNlci9zeXNjYWxsLmMKLUBAIC00MDMxLDkgKzQwMzEsNiBAQCBzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBkb19zaG1hdChDUFVBcmNoU3RhdGUgKmNwdV9lbnYsCitAQCAtNDEzOCw5ICs0MTM4LDYgQEAgc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZG9fc2htYXQoQ1BVQXJjaFN0YXRlICpjcHVfZW52LAogICAgICAgICAgICAgIHJldHVybiAtVEFSR0VUX0VJTlZBTDsKICAgICAgICAgIH0KICAgICAgfQpAQCAtMTIzLDcgKzEyNCw3IEBACiAgCiAgICAgIG1tYXBfbG9jaygpOwogIAotQEAgLTY4ODEsNyArNjg3OCw3IEBAIHN0YXRpYyBpbnQgb3Blbl9zZWxmX21hcHModm9pZCAqY3B1X2VudiwgaW50IGZkKQorQEAgLTY5OTAsNyArNjk4Nyw3IEBAIHN0YXRpYyBpbnQgb3Blbl9zZWxmX21hcHModm9pZCAqY3B1X2VudiwgaW50IGZkKQogICAgICAgICAgfQogICAgICAgICAgaWYgKGgyZ192YWxpZChtaW4pKSB7CiAgICAgICAgICAgICAgaW50IGZsYWdzID0gcGFnZV9nZXRfZmxhZ3MoaDJnKG1pbikpOwpAQCAtMTMyLDYgKzEzMywzIEBACiAgICAgICAgICAgICAgaWYgKHBhZ2VfY2hlY2tfcmFuZ2UoaDJnKG1pbiksIG1heCAtIG1pbiwgZmxhZ3MpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWNvbmZpZ3VyZS1BZGQtcGtnLWNvbmZpZy1oYW5kbGluZy1mb3ItbGliZ2NyeXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKaW5kZXggYThhYjdkYS4uMzRkZjc4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDUyMTRkZDQ0NjFmMjA5MGVmMDk2NWI0ZDI1MThmNDk5MjdkNjFjYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGMyMDc2MDdjZGYzOTk2YWQ5NzgzYzNiZmZiY2QzZDY1ZTc0YzAxNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyOCBBdWcgMjAxOSAxOTo1NjoyOCArMDgwMAotU3ViamVjdDogW1FlbXUtZGV2ZWxdIFtQQVRDSF0gY29uZmlndXJlOiBBZGQgcGtnLWNvbmZpZyBoYW5kbGluZyBmb3IgbGliZ2NyeXB0CitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIHBrZy1jb25maWcgaGFuZGxpbmcgZm9yIGxpYmdjcnlwdAogCiBsaWJnY3J5cHQgbWF5IGFsc28gYmUgY29udHJvbGxlZCBieSBwa2ctY29uZmlnLCB0aGlzIHBhdGNoIGFkZHMgcGtnLWNvbmZpZwogaGFuZGxpbmcgZm9yIGxpYmdjcnlwdC4KQEAgLTksMTIgKzksMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxOS0wOC9tc2cwNjMzMy5odG1sXQogCiBTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggZTQ0ZTQ1NC4uMGYzNjJhNyAxMDA3NTUKK2luZGV4IDcyZjExYWNhLi5jYWMyNzFjZSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCiBAQCAtMjg3NSw2ICsyODc1LDMwIEBAIGhhc19saWJnY3J5cHQoKSB7CkBAIC00OCw3ICs0OSw3IEBACiAgCiAgaWYgdGVzdCAiJG5ldHRsZSIgIT0gIm5vIjsgdGhlbgogICAgICBwYXNzPSJubyIKLUBAIC0yOTAyLDcgKzI5MjYsMTQgQEAgZmkKK0BAIC0yOTE1LDcgKzI5MzksMTQgQEAgZmkKICAKICBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCiAgICAgIHBhc3M9Im5vIgpAQCAtNjQsNyArNjUsNyBAQAogICAgICAgICAgZ2NyeXB0X2NmbGFncz0kKGxpYmdjcnlwdC1jb25maWcgLS1jZmxhZ3MpCiAgICAgICAgICBnY3J5cHRfbGlicz0kKGxpYmdjcnlwdC1jb25maWcgLS1saWJzKQogICAgICAgICAgIyBEZWJpYW4gaGFzIHJlbW92ZWQgLWxncGctZXJyb3IgZnJvbSBsaWJnY3J5cHQtY29uZmlnCi1AQCAtMjkxMiwxNSArMjk0MywxNiBAQCBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCitAQCAtMjkyNSwxNSArMjk1NiwxNiBAQCBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCiAgICAgICAgICB0aGVuCiAgICAgICAgICAgICAgZ2NyeXB0X2xpYnM9IiRnY3J5cHRfbGlicyAtbGdwZy1lcnJvciIKICAgICAgICAgIGZpCkBAIC04OCw2ICs4OSwzIEBACiAgICAgIGlmIHRlc3QgIiRwYXNzIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICBnY3J5cHQ9InllcyIKICAgICAgICAgIGNhdCA+ICRUTVBDIDw8IEVPRgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtaHctaTM4Ni1wYy1maXgtcmVncmVzc2lvbi1pbi1wYXJzaW5nLXZnYS1jbWRsaW5lLXBhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmUwODUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtaHctaTM4Ni1wYy1maXgtcmVncmVzc2lvbi1pbi1wYXJzaW5nLXZnYS1jbWRsaW5lLXBhci5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGE4OGM0MGYwMmFjZTg4ZjA5YjJhODVhNjQ4MzFiMjc3YjJlYmM4OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBXdSA8cGV0ZXJAbGVrZW5zdGV5bi5ubD4KK0RhdGU6IFNhdCwgMjEgRGVjIDIwMTkgMTc6MjE6MjQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaHcvaTM4Ni9wYzogZml4IHJlZ3Jlc3Npb24gaW4gcGFyc2luZyB2Z2EgY21kbGluZSBwYXJhbWV0ZXIKKworV2hlbiB0aGUgJ3ZnYT0nIHBhcmFtZXRlciBpcyBzdWNjZWVkZWQgYnkgYW5vdGhlciBwYXJhbWV0ZXIsIFFFTVUgNC4yLjAKK3dvdWxkIHJlZnVzZSB0byBzdGFydCB3aXRoIGEgcmF0aGVyIGNyeXB0aWMgbWVzc2FnZToKKworICAgICQgcWVtdS1zeXN0ZW0teDg2XzY0IC1rZXJuZWwgL2Jvb3Qvdm1saW51ei1saW51eCAtYXBwZW5kICd2Z2E9NzkyIHF1aWV0JworICAgIHFlbXU6IGNhbid0IHBhcnNlICd2Z2EnIHBhcmFtZXRlcjogSW52YWxpZCBhcmd1bWVudAorCitJdCB3YXMgbm90IGNsZWFyIHdoZXRoZXIgdGhpcyBhcHBsaWVkIHRvIHRoZSAnLXZnYSBzdGQnIHBhcmFtZXRlciBvciB0aGUKKyctYXBwZW5kJyBvbmUuIEZpeCB0aGUgcGFyc2luZyByZWdyZXNzaW9uIGFuZCBjbGFyaWZ5IHRoZSBlcnJvci4KKworRml4ZXM6IDEzM2VmMDc0YmQgKCJody9pMzg2L3BjOiByZXBsYWNlIHVzZSBvZiBzdHJ0b2wgd2l0aCBxZW11X3N0cnRvdWkgaW4geDg2X2xvYWRfbGludXgoKSIpCitDYzogU2VyZ2lvIExvcGV6IDxzbHBAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldGVyIFd1IDxwZXRlckBsZWtlbnN0ZXluLm5sPgorTWVzc2FnZS1JZDogPDIwMTkxMjIxMTYyMTI0LjExNTkyOTEtMS1wZXRlckBsZWtlbnN0ZXluLm5sPgorQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdGRpZmY7aD1hODhjNDBmMDJhY2U4OGYwOWIyYTg1YTY0ODMxYjI3N2IyZWJjODhjXQorLS0tCisgaHcvaTM4Ni94ODYuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvaTM4Ni94ODYuYyBiL2h3L2kzODYveDg2LmMKK2luZGV4IGQ4YmI1YzJhOTYuLjliOWE0ZDU4MzcgMTAwNjQ0CistLS0gYS9ody9pMzg2L3g4Ni5jCisrKysgYi9ody9pMzg2L3g4Ni5jCitAQCAtNjEyLDYgKzYxMiw3IEBAIHZvaWQgeDg2X2xvYWRfbGludXgoWDg2TWFjaGluZVN0YXRlICp4ODZtcywKKyAgICAgdm1vZGUgPSBzdHJzdHIoa2VybmVsX2NtZGxpbmUsICJ2Z2E9Iik7CisgICAgIGlmICh2bW9kZSkgeworICAgICAgICAgdW5zaWduZWQgaW50IHZpZGVvX21vZGU7CisrICAgICAgICBjb25zdCBjaGFyICplbmQ7CisgICAgICAgICBpbnQgcmV0OworICAgICAgICAgLyogc2tpcCAidmdhPSIgKi8KKyAgICAgICAgIHZtb2RlICs9IDQ7CitAQCAtNjIyLDEwICs2MjMsOSBAQCB2b2lkIHg4Nl9sb2FkX2xpbnV4KFg4Nk1hY2hpbmVTdGF0ZSAqeDg2bXMsCisgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKHZtb2RlLCAiYXNrIiwgMykpIHsKKyAgICAgICAgICAgICB2aWRlb19tb2RlID0gMHhmZmZkOworICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICByZXQgPSBxZW11X3N0cnRvdWkodm1vZGUsIE5VTEwsIDAsICZ2aWRlb19tb2RlKTsKKy0gICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBjYW4ndCBwYXJzZSAndmdhJyBwYXJhbWV0ZXI6ICVzXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKC1yZXQpKTsKKysgICAgICAgICAgICByZXQgPSBxZW11X3N0cnRvdWkodm1vZGUsICZlbmQsIDAsICZ2aWRlb19tb2RlKTsKKysgICAgICAgICAgICBpZiAocmV0ICE9IDAgfHwgKCplbmQgJiYgKmVuZCAhPSAnICcpKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogaW52YWxpZCAndmdhPScga2VybmVsIHBhcmFtZXRlci5cbiIpOworICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTItZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDExLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOS0xMjA2OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOS0xMjA2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE2NTVlNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTktMTIwNjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSBkZTU5NGU0NzY1OTAyOTMxNmJiZjkzOTFlZmI3OWRhMGExYTA4ZTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgQXVnIDIwMTkgMTc6MzU6MjEgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gc2NzaTogbHNpOiBleGl0IGluZmluaXRlIGxvb3Agd2hpbGUgZXhlY3V0aW5nIHNjcmlwdAotIChDVkUtMjAxOS0xMjA2OCkKLQotV2hlbiBleGVjdXRpbmcgc2NyaXB0IGluIGxzaV9leGVjdXRlX3NjcmlwdCgpLCB0aGUgTFNJIHNjc2kgYWRhcHRlcgotZW11bGF0b3IgYWR2YW5jZXMgJ3MtPmRzcCcgaW5kZXggdG8gcmVhZCBuZXh0IG9wY29kZS4gVGhpcyBjYW4gbGVhZAotdG8gYW4gaW5maW5pdGUgbG9vcCBpZiB0aGUgbmV4dCBvcGNvZGUgaXMgZW1wdHkuIE1vdmUgdGhlIGV4aXN0aW5nCi1sb29wIGV4aXQgYWZ0ZXIgMTBrIGl0ZXJhdGlvbnMgc28gdGhhdCBpdCBjb3ZlcnMgbm8tb3Agb3Bjb2RlcyBhcwotd2VsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD1kZTU5NGU0NzY1OTAyOTMxNmJiZjkzOTFlZmI3OWRhMGExYTA4ZTA4XQotQ1ZFOiBDVkUtMjAxOS0xMjA2OAotCi1SZXBvcnRlZC1ieTogQnVncyBTeXNTZWMgPGJ1Z3Mtc3lzc2VjQHJ1Yi5kZT4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBody9zY3NpL2xzaTUzYzg5NWEuYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvc2NzaS9sc2k1M2M4OTVhLmMgYi9ody9zY3NpL2xzaTUzYzg5NWEuYwotaW5kZXggMjIyYTI4Ni4uZWM1M2IxNCAxMDA2NDQKLS0tLSBhL2h3L3Njc2kvbHNpNTNjODk1YS5jCi0rKysgYi9ody9zY3NpL2xzaTUzYzg5NWEuYwotQEAgLTE4Niw2ICsxODYsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsKLSAvKiBGbGFnIHNldCBpZiB0aGlzIGlzIGEgdGFnZ2VkIGNvbW1hbmQuICAqLwotICNkZWZpbmUgTFNJX1RBR19WQUxJRCAgICAgKDEgPDwgMTYpCi0gCi0rLyogTWF4aW11bSBpbnN0cnVjdGlvbnMgdG8gcHJvY2Vzcy4gKi8KLSsjZGVmaW5lIExTSV9NQVhfSU5TTiAgICAxMDAwMAotKwotIHR5cGVkZWYgc3RydWN0IGxzaV9yZXF1ZXN0IHsKLSAgICAgU0NTSVJlcXVlc3QgKnJlcTsKLSAgICAgdWludDMyX3QgdGFnOwotQEAgLTExMzMsNyArMTEzNiwyMSBAQCBzdGF0aWMgdm9pZCBsc2lfZXhlY3V0ZV9zY3JpcHQoTFNJU3RhdGUgKnMpCi0gCi0gICAgIHMtPmlzdGF0MSB8PSBMU0lfSVNUQVQxX1NSVU47Ci0gYWdhaW46Ci0tICAgIGluc25fcHJvY2Vzc2VkKys7Ci0rICAgIGlmICgrK2luc25fcHJvY2Vzc2VkID4gTFNJX01BWF9JTlNOKSB7Ci0rICAgICAgICAvKiBTb21lIHdpbmRvd3MgZHJpdmVycyBtYWtlIHRoZSBkZXZpY2Ugc3BpbiB3YWl0aW5nIGZvciBhIG1lbW9yeQotKyAgICAgICAgICAgbG9jYXRpb24gdG8gY2hhbmdlLiAgSWYgd2UgaGF2ZSBiZWVuIGV4ZWN1dGVkIGEgbG90IG9mIGNvZGUgdGhlbgotKyAgICAgICAgICAgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UgYW5kIGZvcmNlIGFuIHVuZXhwZWN0ZWQgZGV2aWNlIGRpc2Nvbm5lY3QuCi0rICAgICAgICAgICBUaGlzIGlzIGFwcGFyZW50bHkgc3VmZmljaWVudCB0byBiZWF0IHRoZSBkcml2ZXJzIGludG8gc3VibWlzc2lvbi4KLSsgICAgICAgICAqLwotKyAgICAgICAgaWYgKCEocy0+c2llbjAgJiBMU0lfU0lTVDBfVURDKSkgewotKyAgICAgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgImxzaV9zY3NpOiBpbmYuIGxvb3Agd2l0aCBVREMgbWFza2VkIik7Ci0rICAgICAgICB9Ci0rICAgICAgICBsc2lfc2NyaXB0X3Njc2lfaW50ZXJydXB0KHMsIExTSV9TSVNUMF9VREMsIDApOwotKyAgICAgICAgbHNpX2Rpc2Nvbm5lY3Qocyk7Ci0rICAgICAgICB0cmFjZV9sc2lfZXhlY3V0ZV9zY3JpcHRfc3RvcCgpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0gICAgIGluc24gPSByZWFkX2R3b3JkKHMsIHMtPmRzcCk7Ci0gICAgIGlmICghaW5zbikgewotICAgICAgICAgLyogSWYgd2UgcmVjZWl2ZSBhbiBlbXB0eSBvcGNvZGUgaW5jcmVtZW50IHRoZSBEU1AgYnkgNCBieXRlcwotQEAgLTE1NzAsMTkgKzE1ODcsNyBAQCBhZ2FpbjoKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0KLS0gICAgaWYgKGluc25fcHJvY2Vzc2VkID4gMTAwMDAgJiYgcy0+d2FpdGluZyA9PSBMU0lfTk9XQUlUKSB7Ci0tICAgICAgICAvKiBTb21lIHdpbmRvd3MgZHJpdmVycyBtYWtlIHRoZSBkZXZpY2Ugc3BpbiB3YWl0aW5nIGZvciBhIG1lbW9yeQotLSAgICAgICAgICAgbG9jYXRpb24gdG8gY2hhbmdlLiAgSWYgd2UgaGF2ZSBiZWVuIGV4ZWN1dGVkIGEgbG90IG9mIGNvZGUgdGhlbgotLSAgICAgICAgICAgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UgYW5kIGZvcmNlIGFuIHVuZXhwZWN0ZWQgZGV2aWNlIGRpc2Nvbm5lY3QuCi0tICAgICAgICAgICBUaGlzIGlzIGFwcGFyZW50bHkgc3VmZmljaWVudCB0byBiZWF0IHRoZSBkcml2ZXJzIGludG8gc3VibWlzc2lvbi4KLS0gICAgICAgICAqLwotLSAgICAgICAgaWYgKCEocy0+c2llbjAgJiBMU0lfU0lTVDBfVURDKSkgewotLSAgICAgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgImxzaV9zY3NpOiBpbmYuIGxvb3Agd2l0aCBVREMgbWFza2VkIik7Ci0tICAgICAgICB9Ci0tICAgICAgICBsc2lfc2NyaXB0X3Njc2lfaW50ZXJydXB0KHMsIExTSV9TSVNUMF9VREMsIDApOwotLSAgICAgICAgbHNpX2Rpc2Nvbm5lY3Qocyk7Ci0tICAgIH0gZWxzZSBpZiAocy0+aXN0YXQxICYgTFNJX0lTVEFUMV9TUlVOICYmIHMtPndhaXRpbmcgPT0gTFNJX05PV0FJVCkgewotKyAgICBpZiAocy0+aXN0YXQxICYgTFNJX0lTVEFUMV9TUlVOICYmIHMtPndhaXRpbmcgPT0gTFNJX05PV0FJVCkgewotICAgICAgICAgaWYgKHMtPmRjbnRsICYgTFNJX0RDTlRMX1NTTSkgewotICAgICAgICAgICAgIGxzaV9zY3JpcHRfZG1hX2ludGVycnVwdChzLCBMU0lfRFNUQVRfU1NJKTsKLSAgICAgICAgIH0gZWxzZSB7Ci1AQCAtMTk3MCw2ICsxOTc1LDEwIEBAIHN0YXRpYyB2b2lkIGxzaV9yZWdfd3JpdGViKExTSVN0YXRlICpzLCBpbnQgb2Zmc2V0LCB1aW50OF90IHZhbCkKLSAgICAgY2FzZSAweDJmOiAvKiBEU1BbMjQ6MzFdICovCi0gICAgICAgICBzLT5kc3AgJj0gMHgwMGZmZmZmZjsKLSAgICAgICAgIHMtPmRzcCB8PSB2YWwgPDwgMjQ7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogRklYTUU6IGlmIHMtPndhaXRpbmcgIT0gTFNJX05PV0FJVCwgdGhpcyB3aWxsIG9ubHkgZXhlY3V0ZSBvbmUKLSsgICAgICAgICAqIGluc3RydWN0aW9uLiAgSXMgdGhpcyBjb3JyZWN0PwotKyAgICAgICAgICovCi0gICAgICAgICBpZiAoKHMtPmRtb2RlICYgTFNJX0RNT0RFX01BTikgPT0gMAotICAgICAgICAgICAgICYmIChzLT5pc3RhdDEgJiBMU0lfSVNUQVQxX1NSVU4pID09IDApCi0gICAgICAgICAgICAgbHNpX2V4ZWN1dGVfc2NyaXB0KHMpOwotQEAgLTE5ODgsNiArMTk5NywxMCBAQCBzdGF0aWMgdm9pZCBsc2lfcmVnX3dyaXRlYihMU0lTdGF0ZSAqcywgaW50IG9mZnNldCwgdWludDhfdCB2YWwpCi0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSAweDNiOiAvKiBEQ05UTCAqLwotICAgICAgICAgcy0+ZGNudGwgPSB2YWwgJiB+KExTSV9EQ05UTF9QRkYgfCBMU0lfRENOVExfU1REKTsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBGSVhNRTogaWYgcy0+d2FpdGluZyAhPSBMU0lfTk9XQUlULCB0aGlzIHdpbGwgb25seSBleGVjdXRlIG9uZQotKyAgICAgICAgICogaW5zdHJ1Y3Rpb24uICBJcyB0aGlzIGNvcnJlY3Q/Ci0rICAgICAgICAgKi8KLSAgICAgICAgIGlmICgodmFsICYgTFNJX0RDTlRMX1NURCkgJiYgKHMtPmlzdGF0MSAmIExTSV9JU1RBVDFfU1JVTikgPT0gMCkKLSAgICAgICAgICAgICBsc2lfZXhlY3V0ZV9zY3JpcHQocyk7Ci0gICAgICAgICBicmVhazsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTExMTAyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTExMTAyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZjNlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtMTExMDIucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK0Zyb20gOGZmYjcyNjVhZjY0ZWM4MTc0ODMzNWVjOGYyMGU3YWI1NDJjMzg1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogVHVlLCAyNCBNYXIgMjAyMCAyMjo1NzoyMiArMDUzMAorU3ViamVjdDogW1BBVENIXSBuZXQ6IHR1bGlwOiBjaGVjayBmcmFtZSBzaXplIGFuZCByL3cgZGF0YSBsZW5ndGgKKworVHVsaXAgbmV0d29yayBkcml2ZXIgd2hpbGUgY29weWluZyB0eC9yeCBidWZmZXJzIGRvZXMgbm90IGNoZWNrCitmcmFtZSBzaXplIGFnYWluc3Qgci93IGRhdGEgbGVuZ3RoLiBUaGlzIG1heSBsZWFkIHRvIE9PQiBidWZmZXIKK2FjY2Vzcy4gQWRkIGNoZWNrIHRvIGF2b2lkIGl0LgorCitMaW1pdCBpdGVyYXRpb25zIG92ZXIgZGVzY3JpcHRvcnMgdG8gYXZvaWQgcG90ZW50aWFsIGluZmluaXRlCitsb29wIGlzc3VlIGluIHR1bGlwX3htaXRfbGlzdF91cGRhdGUuCisKK1JlcG9ydGVkLWJ5OiBMaSBRaWFuZyA8cGFuZ3BlaS5scUBhbnRmaW4uY29tPgorUmVwb3J0ZWQtYnk6IFppbWluZyBaaGFuZyA8ZXpyYWtpZXpAZ21haWwuY29tPgorUmVwb3J0ZWQtYnk6IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+CitUZXN0ZWQtYnk6IExpIFFpYW5nIDxsaXEzZWFAZ21haWwuY29tPgorUmV2aWV3ZWQtYnk6IExpIFFpYW5nIDxsaXEzZWFAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPThmZmI3MjY1YWY2NGVjODE3NDgzMzVlYzhmMjBlN2FiNTQyYzM4NTBdCitDVkU6IENWRS0yMDIwLTExMTAyCitTaWduZWQtb2ZmLWJ5OiBDaGVlIFlhbmcgTGVlIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIGh3L25ldC90dWxpcC5jIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ody9uZXQvdHVsaXAuYyBiL2h3L25ldC90dWxpcC5jCitpbmRleCBjZmFjMjcxLi4xMjk1ZjUxIDEwMDY0NAorLS0tIGEvaHcvbmV0L3R1bGlwLmMKKysrKyBiL2h3L25ldC90dWxpcC5jCitAQCAtMTcwLDYgKzE3MCwxMCBAQCBzdGF0aWMgdm9pZCB0dWxpcF9jb3B5X3J4X2J5dGVzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBsZW4gPSBzLT5yeF9mcmFtZV9sZW47CisgICAgICAgICB9CisrCisrICAgICAgICBpZiAocy0+cnhfZnJhbWVfbGVuICsgbGVuID4gc2l6ZW9mKHMtPnJ4X2ZyYW1lKSkgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgICAgIHBjaV9kbWFfd3JpdGUoJnMtPmRldiwgZGVzYy0+YnVmX2FkZHIxLCBzLT5yeF9mcmFtZSArCisgICAgICAgICAgICAgKHMtPnJ4X2ZyYW1lX3NpemUgLSBzLT5yeF9mcmFtZV9sZW4pLCBsZW4pOworICAgICAgICAgcy0+cnhfZnJhbWVfbGVuIC09IGxlbjsKK0BAIC0xODEsNiArMTg1LDEwIEBAIHN0YXRpYyB2b2lkIHR1bGlwX2NvcHlfcnhfYnl0ZXMoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGxlbiA9IHMtPnJ4X2ZyYW1lX2xlbjsKKyAgICAgICAgIH0KKysKKysgICAgICAgIGlmIChzLT5yeF9mcmFtZV9sZW4gKyBsZW4gPiBzaXplb2Yocy0+cnhfZnJhbWUpKSB7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICAgICAgcGNpX2RtYV93cml0ZSgmcy0+ZGV2LCBkZXNjLT5idWZfYWRkcjIsIHMtPnJ4X2ZyYW1lICsKKyAgICAgICAgICAgICAocy0+cnhfZnJhbWVfc2l6ZSAtIHMtPnJ4X2ZyYW1lX2xlbiksIGxlbik7CisgICAgICAgICBzLT5yeF9mcmFtZV9sZW4gLT0gbGVuOworQEAgLTIyNyw3ICsyMzUsOCBAQCBzdGF0aWMgc3NpemVfdCB0dWxpcF9yZWNlaXZlKFRVTElQU3RhdGUgKnMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemUpCisgCisgICAgIHRyYWNlX3R1bGlwX3JlY2VpdmUoYnVmLCBzaXplKTsKKyAKKy0gICAgaWYgKHNpemUgPCAxNCB8fCBzaXplID4gMjA0OCB8fCBzLT5yeF9mcmFtZV9sZW4gfHwgdHVsaXBfcnhfc3RvcHBlZChzKSkgeworKyAgICBpZiAoc2l6ZSA8IDE0IHx8IHNpemUgPiBzaXplb2Yocy0+cnhfZnJhbWUpIC0gNAorKyAgICAgICAgfHwgcy0+cnhfZnJhbWVfbGVuIHx8IHR1bGlwX3J4X3N0b3BwZWQocykpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgCitAQCAtMjc1LDcgKzI4NCw2IEBAIHN0YXRpYyBzc2l6ZV90IHR1bGlwX3JlY2VpdmVfbmMoTmV0Q2xpZW50U3RhdGUgKm5jLAorICAgICByZXR1cm4gdHVsaXBfcmVjZWl2ZShxZW11X2dldF9uaWNfb3BhcXVlKG5jKSwgYnVmLCBzaXplKTsKKyB9CisgCistCisgc3RhdGljIE5ldENsaWVudEluZm8gbmV0X3R1bGlwX2luZm8gPSB7CisgICAgIC50eXBlID0gTkVUX0NMSUVOVF9EUklWRVJfTklDLAorICAgICAuc2l6ZSA9IHNpemVvZihOSUNTdGF0ZSksCitAQCAtNTU4LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHR1bGlwX3R4KFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorICAgICAgICAgaWYgKChzLT5jc3JbNl0gPj4gQ1NSNl9PTV9TSElGVCkgJiBDU1I2X09NX01BU0spIHsKKyAgICAgICAgICAgICAvKiBJbnRlcm5hbCBvciBleHRlcm5hbCBMb29wYmFjayAqLworICAgICAgICAgICAgIHR1bGlwX3JlY2VpdmUocywgcy0+dHhfZnJhbWUsIHMtPnR4X2ZyYW1lX2xlbik7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChzLT50eF9mcmFtZV9sZW4gPD0gc2l6ZW9mKHMtPnR4X2ZyYW1lKSkgeworICAgICAgICAgICAgIHFlbXVfc2VuZF9wYWNrZXQocWVtdV9nZXRfcXVldWUocy0+bmljKSwKKyAgICAgICAgICAgICAgICAgcy0+dHhfZnJhbWUsIHMtPnR4X2ZyYW1lX2xlbik7CisgICAgICAgICB9CitAQCAtNTcwLDIzICs1NzgsMzEgQEAgc3RhdGljIHZvaWQgdHVsaXBfdHgoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgIH0KKyB9CisgCistc3RhdGljIHZvaWQgdHVsaXBfY29weV90eF9idWZmZXJzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorK3N0YXRpYyBpbnQgdHVsaXBfY29weV90eF9idWZmZXJzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorIHsKKyAgICAgaW50IGxlbjEgPSAoZGVzYy0+Y29udHJvbCA+PiBUREVTMV9CVUYxX1NJWkVfU0hJRlQpICYgVERFUzFfQlVGMV9TSVpFX01BU0s7CisgICAgIGludCBsZW4yID0gKGRlc2MtPmNvbnRyb2wgPj4gVERFUzFfQlVGMl9TSVpFX1NISUZUKSAmIFRERVMxX0JVRjJfU0laRV9NQVNLOworIAorKyAgICBpZiAocy0+dHhfZnJhbWVfbGVuICsgbGVuMSA+IHNpemVvZihzLT50eF9mcmFtZSkpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorICAgICBpZiAobGVuMSkgeworICAgICAgICAgcGNpX2RtYV9yZWFkKCZzLT5kZXYsIGRlc2MtPmJ1Zl9hZGRyMSwKKyAgICAgICAgICAgICBzLT50eF9mcmFtZSArIHMtPnR4X2ZyYW1lX2xlbiwgbGVuMSk7CisgICAgICAgICBzLT50eF9mcmFtZV9sZW4gKz0gbGVuMTsKKyAgICAgfQorIAorKyAgICBpZiAocy0+dHhfZnJhbWVfbGVuICsgbGVuMiA+IHNpemVvZihzLT50eF9mcmFtZSkpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorICAgICBpZiAobGVuMikgeworICAgICAgICAgcGNpX2RtYV9yZWFkKCZzLT5kZXYsIGRlc2MtPmJ1Zl9hZGRyMiwKKyAgICAgICAgICAgICBzLT50eF9mcmFtZSArIHMtPnR4X2ZyYW1lX2xlbiwgbGVuMik7CisgICAgICAgICBzLT50eF9mcmFtZV9sZW4gKz0gbGVuMjsKKyAgICAgfQorICAgICBkZXNjLT5zdGF0dXMgPSAobGVuMSArIGxlbjIpID8gMCA6IDB4N2ZmZmZmZmY7CisrCisrICAgIHJldHVybiAwOworIH0KKyAKKyBzdGF0aWMgdm9pZCB0dWxpcF9zZXR1cF9maWx0ZXJfYWRkcihUVUxJUFN0YXRlICpzLCB1aW50OF90ICpidWYsIGludCBuKQorQEAgLTY1MSwxMyArNjY3LDE1IEBAIHN0YXRpYyB1aW50MzJfdCB0dWxpcF90cyhUVUxJUFN0YXRlICpzKQorIAorIHN0YXRpYyB2b2lkIHR1bGlwX3htaXRfbGlzdF91cGRhdGUoVFVMSVBTdGF0ZSAqcykKKyB7CisrI2RlZmluZSBUVUxJUF9ERVNDX01BWCAxMjgKKysgICAgdWludDhfdCBpID0gMDsKKyAgICAgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgZGVzYzsKKyAKKyAgICAgaWYgKHR1bGlwX3RzKHMpICE9IENTUjVfVFNfU1VTUEVOREVEKSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gICAgZm9yICg7OykgeworKyAgICBmb3IgKGkgPSAwOyBpIDwgVFVMSVBfREVTQ19NQVg7IGkrKykgeworICAgICAgICAgdHVsaXBfZGVzY19yZWFkKHMsIHMtPmN1cnJlbnRfdHhfZGVzYywgJmRlc2MpOworICAgICAgICAgdHVsaXBfZHVtcF90eF9kZXNjcmlwdG9yKHMsICZkZXNjKTsKKyAKK0BAIC02NzUsMTAgKzY5MywxMCBAQCBzdGF0aWMgdm9pZCB0dWxpcF94bWl0X2xpc3RfdXBkYXRlKFRVTElQU3RhdGUgKnMpCisgICAgICAgICAgICAgICAgIHMtPnR4X2ZyYW1lX2xlbiA9IDA7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIHR1bGlwX2NvcHlfdHhfYnVmZmVycyhzLCAmZGVzYyk7CistCistICAgICAgICAgICAgaWYgKGRlc2MuY29udHJvbCAmIFRERVMxX0xTKSB7CistICAgICAgICAgICAgICAgIHR1bGlwX3R4KHMsICZkZXNjKTsKKysgICAgICAgICAgICBpZiAoIXR1bGlwX2NvcHlfdHhfYnVmZmVycyhzLCAmZGVzYykpIHsKKysgICAgICAgICAgICAgICAgaWYgKGRlc2MuY29udHJvbCAmIFRERVMxX0xTKSB7CisrICAgICAgICAgICAgICAgICAgICB0dWxpcF90eChzLCAmZGVzYyk7CisrICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICB0dWxpcF9kZXNjX3dyaXRlKHMsIHMtPmN1cnJlbnRfdHhfZGVzYywgJmRlc2MpOworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC0xNzExLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTE3MTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE3YmM4MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC0xNzExLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gNjkzZmQyYWNkZjE0ZGQ4NmMwYmY4NTI2MTBmMWMyY2NhODBhNzRkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGlwZSBGcmFuY2lvc2kgPGZlbGlwZUBudXRhbml4LmNvbT4KK0RhdGU6IFRodSwgMjMgSmFuIDIwMjAgMTI6NDQ6NTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gaXNjc2k6IENhcCBibG9jayBjb3VudCBmcm9tIEdFVCBMQkEgU1RBVFVTIChDVkUtMjAyMC0xNzExKQorCitXaGVuIHF1ZXJ5aW5nIGFuIGlTQ1NJIHNlcnZlciBmb3IgdGhlIHByb3Zpc2lvbmluZyBzdGF0dXMgb2YgYmxvY2tzICh2aWEKK0dFVCBMQkEgU1RBVFVTKSwgUWVtdSBvbmx5IHZhbGlkYXRlcyB0aGF0IHRoZSByZXNwb25zZSBkZXNjcmlwdG9yIHplcm8ncworTEJBIG1hdGNoZXMgdGhlIG9uZSByZXF1ZXN0ZWQuIEdpdmVuIHRoZSBTQ1NJIHNwZWMgYWxsb3dzIHNlcnZlcnMgdG8KK3Jlc3BvbmQgd2l0aCB0aGUgc3RhdHVzIG9mIGJsb2NrcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgTFVOLCBRZW11IG1heQoraGF2ZSBpdHMgaGVhcCBjb3JydXB0ZWQgYnkgY2xlYXJpbmcvc2V0dGluZyB0b28gbWFueSBiaXRzIGF0IHRoZSBlbmQgb2YKK2l0cyBhbGxvY21hcCBmb3IgdGhlIExVTi4KKworQSBtYWxpY2lvdXMgZ3Vlc3QgaW4gY29udHJvbCBvZiB0aGUgaVNDU0kgc2VydmVyIGNvdWxkIGNhcmVmdWxseSBwcm9ncmFtCitRZW11J3MgaGVhcCAoYnkgc2VsZWN0aXZlbHkgc2V0dGluZyB0aGUgYml0bWFwKSBhbmQgdGhlbiBzbWFzaCBpdC4KKworVGhpcyBsaW1pdHMgdGhlIG51bWJlciBvZiBiaXRzIHRoYXQgaXNjc2lfY29fYmxvY2tfc3RhdHVzKCkgd2lsbCB0cnkgdG8KK3VwZGF0ZSBpbiB0aGUgYWxsb2NtYXAgc28gaXQgY2FuJ3Qgb3ZlcmZsb3cgdGhlIGJpdG1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1wYXRjaDtoPTY5M2ZkMmFjZGYxNGRkODZjMGJmODUyNjEwZjFjMmNjYTgwYTc0ZGNdCitDVkU6IENWRS0yMDIwLTE3MTEKKworRml4ZXM6IENWRS0yMDIwLTE3MTEKK0NjOiBxZW11LXN0YWJsZUBub25nbnUub3JnCitTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgRnJhbmNpb3NpIDxmZWxpcGVAbnV0YW5peC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRlciBUdXJzY2htaWQgPHBldGVyLnR1cnNjaG1AbnV0YW5peC5jb20+CitTaWduZWQtb2ZmLWJ5OiBSYXBoYWVsIE5vcndpdHogPHJhcGhhZWwubm9yd2l0ekBudXRhbml4LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtldmluIFdvbGYgPGt3b2xmQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBMZWUgQ2hlZSBZYW5nIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIGJsb2NrL2lzY3NpLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Jsb2NrL2lzY3NpLmMgYi9ibG9jay9pc2NzaS5jCitpbmRleCAyYWVhN2UzLi5jYmQ1NzI5IDEwMDY0NAorLS0tIGEvYmxvY2svaXNjc2kuYworKysrIGIvYmxvY2svaXNjc2kuYworQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiBpc2NzaV9jb19ibG9ja19zdGF0dXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCisgICAgIHN0cnVjdCBzY3NpX2dldF9sYmFfc3RhdHVzICpsYmFzID0gTlVMTDsKKyAgICAgc3RydWN0IHNjc2lfbGJhX3N0YXR1c19kZXNjcmlwdG9yICpsYmFzZCA9IE5VTEw7CisgICAgIHN0cnVjdCBJc2NzaVRhc2sgaVRhc2s7CistICAgIHVpbnQ2NF90IGxiYTsKKysgICAgdWludDY0X3QgbGJhLCBtYXhfYnl0ZXM7CisgICAgIGludCByZXQ7CisgCisgICAgIGlzY3NpX2NvX2luaXRfaXNjc2l0YXNrKGlzY3NpbHVuLCAmaVRhc2spOworQEAgLTcyMSw2ICs3MjEsNyBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiBpc2NzaV9jb19ibG9ja19zdGF0dXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCisgICAgIH0KKyAKKyAgICAgbGJhID0gb2Zmc2V0IC8gaXNjc2lsdW4tPmJsb2NrX3NpemU7CisrICAgIG1heF9ieXRlcyA9IChpc2NzaWx1bi0+bnVtX2Jsb2NrcyAtIGxiYSkgKiBpc2NzaWx1bi0+YmxvY2tfc2l6ZTsKKyAKKyAgICAgcWVtdV9tdXRleF9sb2NrKCZpc2NzaWx1bi0+bXV0ZXgpOworIHJldHJ5OgorQEAgLTc2NCw3ICs3NjUsNyBAQCByZXRyeToKKyAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICAgfQorIAorLSAgICAqcG51bSA9IChpbnQ2NF90KSBsYmFzZC0+bnVtX2Jsb2NrcyAqIGlzY3NpbHVuLT5ibG9ja19zaXplOworKyAgICAqcG51bSA9IE1JTigoaW50NjRfdCkgbGJhc2QtPm51bV9ibG9ja3MgKiBpc2NzaWx1bi0+YmxvY2tfc2l6ZSwgbWF4X2J5dGVzKTsKKyAKKyAgICAgaWYgKGxiYXNkLT5wcm92aXNpb25pbmcgPT0gU0NTSV9QUk9WSVNJT05JTkdfVFlQRV9ERUFMTE9DQVRFRCB8fAorICAgICAgICAgbGJhc2QtPnByb3Zpc2lvbmluZyA9PSBTQ1NJX1BST1ZJU0lPTklOR19UWVBFX0FOQ0hPUkVEKSB7CistLSAKKzEuOC4zLjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNmJjYTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0xLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gYjI2NjNkNTI3YTE5OTJiYTk4YzAyNjY0NThiMjFhZGEzYjlkMGQyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI3IEZlYiAyMDIwIDEyOjA3OjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRjcF9lbXU6IEZpeCBvb2IgYWNjZXNzCisKK1RoZSBtYWluIGxvb3Agb25seSBjaGVja3MgZm9yIG9uZSBhdmFpbGFibGUgYnl0ZSwgd2hpbGUgd2Ugc29tZXRpbWVzCituZWVkIHR3byBieXRlcy4KKworQ1ZFOiBDVkUtMjAyMC03MDM5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3NsaXJwL2xpYnNsaXJwL2NvbW1pdC8yNjU1ZmZmZWQ3YTllNzY1YmNiNDcwMWRkODc2ZTlkYWI5NzVmMjg5XQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2xpcnAvc3JjL3RjcF9zdWJyLmMgfCA2ICsrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK2luZGV4IGQ2ZGQxMzMuLjRiZWEyZDQgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGNwX3N1YnIuYworKysrIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK0BAIC04ODYsNiArODg2LDggQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgICAgICBjYXNlIDU6CisrICAgICAgICAgICAgICAgIGlmIChicHRyID09IG0tPm1fZGF0YSArIG0tPm1fbGVuIC0gMSkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogV2UgbmVlZCB0d28gYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB2ZXJzaW9ucyAxLjAgYW5kCisgICAgICAgICAgICAgICAgICAqIDIuMCBpcyBoZXJlLiBGb3IgZnV0dXJlIHZlcnNpb25zIG9mCitAQCAtOTAxLDYgKzkwMywxMCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGZpZWxkIGNvbnRhaW5pbmcgdGhlIHBvcnQKKyAgICAgICAgICAgICAgICAgICogbnVtYmVyIHRoYXQgUkEtcGxheWVyIGlzIGxpc3RlbmluZyB0by4KKyAgICAgICAgICAgICAgICAgICovCisrCisrICAgICAgICAgICAgICAgIGlmIChicHRyID09IG0tPm1fZGF0YSArIG0tPm1fbGVuIC0gMSkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogV2UgbmVlZCB0d28gYnl0ZXMgKi8KKysKKyAgICAgICAgICAgICAgICAgbHBvcnQgPSAoKCh1aW50OF90ICopYnB0cilbMF0gPDwgOCkgKyAoKHVpbnQ4X3QgKilicHRyKVsxXTsKKyAgICAgICAgICAgICAgICAgaWYgKGxwb3J0IDwgNjk3MCkKKyAgICAgICAgICAgICAgICAgICAgIGxwb3J0ICs9IDI1NjsgLyogZG9uJ3Qga25vdyB3aHkgKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwMGZhMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTIucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSA4ZjY3ZTc2ZTQxNDhlMzdmM2Q4ZDJiY2JkZWU3NDE3ZmRlZGI3NjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgRmViIDIwMjAgMTI6MTA6MzQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHVzZSBjb3JyZWN0IHNpemUgd2hpbGUgZW11bGF0aW5nIGNvbW1hbmRzCisKK1doaWxlIGVtdWxhdGluZyBzZXJ2aWNlcyBpbiB0Y3BfZW11KCksIGl0IHVzZXMgJ21idWYnIHNpemUKKydtLT5tX3NpemUnIHRvIHdyaXRlIGNvbW1hbmRzIHZpYSBzbnByaW50ZigzKS4gVXNlIE1fRlJFRVJPT00obSkKK3NpemUgdG8gYXZvaWQgcG9zc2libGUgT09CIGFjY2Vzcy4KK1NpZ25lZC1vZmYtYnk6IGRlZmF1bHQgYXZhdGFyUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgVGhpYmF1bHQncyBhdmF0YXJTYW11ZWwgVGhpYmF1bHQKKzxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorTWVzc2FnZS1JZDogPDIwMjAwMTA5MDk0MjI4Ljc5NzY0LTMtcHBhbmRpdEByZWRoYXQuY29tPgorCitDVkU6IENWRS0yMDIwLTcwMzkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvc2xpcnAvbGlic2xpcnAvY29tbWl0LzgyZWJlOWMzNzBhMGUyOTcwZmI1Njk1YWExOWFhNTIxNGE2YTFjODBdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzbGlycC9zcmMvdGNwX3N1YnIuYyB8IDkgKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK2luZGV4IDRiZWEyZDQuLmU4ZWQ0ZWYgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGNwX3N1YnIuYworKysrIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK0BAIC02OTYsNyArNjk2LDcgQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgIG40ID0gKGxhZGRyICYgMHhmZik7CisgCisgICAgICAgICAgICAgbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCistICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgbS0+bV9zaXplIC0gbS0+bV9sZW4sCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT1JUICVkLCVkLCVkLCVkLCVkLCVkXHJcbiVzIiwgbjEsIG4yLCBuMywgbjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjUsIG42LCB4ID09IDcgPyBidWZmIDogIiIpOworICAgICAgICAgICAgIHJldHVybiAxOworQEAgLTczMSw4ICs3MzEsNyBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgbjQgPSAobGFkZHIgJiAweGZmKTsKKyAKKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihicHRyLCBtLT5tX3NpemUgLSBtLT5tX2xlbiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiMjcgRW50ZXJpbmcgUGFzc2l2ZSBNb2RlICglZCwlZCwlZCwlZCwlZCwlZClcclxuJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCB4ID09IDcgPyBidWZmIDogIiIpOworIAorQEAgLTc1OCw4ICs3NTcsOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICBpZiAobS0+bV9kYXRhW20tPm1fbGVuIC0gMV0gPT0gJ1wwJyAmJiBscG9ydCAhPSAwICYmCisgICAgICAgICAgICAgKHNvID0gdGNwX2xpc3RlbihzbGlycCwgSU5BRERSX0FOWSwgMCwgc28tPnNvX2xhZGRyLnNfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0b25zKGxwb3J0KSwgU1NfRkFDQ0VQVE9OQ0UpKSAhPSBOVUxMKQorLSAgICAgICAgICAgIG0tPm1fbGVuID0KKy0gICAgICAgICAgICAgICAgc25wcmludGYobS0+bV9kYXRhLCBtLT5tX3NpemUsICIlZCIsIG50b2hzKHNvLT5zb19mcG9ydCkpICsgMTsKKysgICAgICAgICAgICBtLT5tX2xlbiA9IHNucHJpbnRmKG0tPm1fZGF0YSwgTV9ST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVkIiwgbnRvaHMoc28tPnNvX2Zwb3J0KSkgKyAxOworICAgICAgICAgcmV0dXJuIDE7CisgCisgICAgIGNhc2UgRU1VX0lSQzoKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjZTQ4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTMucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSAwYjAzOTU5YjcyMDM2YWZjZTE1MTc4MzcyMGQ5ZTU0OTg4Y2Y3NmVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgRmViIDIwMjAgMTI6MTU6MDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHVzZSBjb3JyZWN0IHNpemUgd2hpbGUgZW11bGF0aW5nIElSQyBjb21tYW5kcworCitXaGlsZSBlbXVsYXRpbmcgSVJDIERDQyBjb21tYW5kcywgdGNwX2VtdSgpIHVzZXMgJ21idWYnIHNpemUKKydtLT5tX3NpemUnIHRvIHdyaXRlIERDQyBjb21tYW5kcyB2aWEgc25wcmludGYoMykuIFRoaXMgbWF5CitsZWFkIHRvIE9PQiB3cml0ZSBhY2Nlc3MsIGJlY2F1c2UgJ2JwdHInIHBvaW50cyBzb21ld2hlcmUgaW4KK3RoZSBtaWRkbGUgb2YgJ21idWYnIGJ1ZmZlciwgbm90IGF0IHRoZSBzdGFydC4gVXNlIE1fRlJFRVJPT00obSkKK3NpemUgdG8gYXZvaWQgT09CIGFjY2Vzcy4KK1JlcG9ydGVkLWJ5OiBkZWZhdWx0IGF2YXRhclZpc2hudSBEZXYgVEogPHZpc2hudWRldnRqQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IGRlZmF1bHQgYXZhdGFyUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitSZXZpZXdlZC1ieTogU2FtdWVsIFRoaWJhdWx0J3MgYXZhdGFyU2FtdWVsIFRoaWJhdWx0Cis8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDIwMDEwOTA5NDIyOC43OTc2NC0yLXBwYW5kaXRAcmVkaGF0LmNvbT4KKworQ1ZFOiBDVkUtMjAyMC03MDM5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3NsaXJwL2xpYnNsaXJwL2NvbW1pdC9jZTEzMTAyOWQ2ZDRhNDA1Y2I3ZDNhYzY3MTZkMDNlNThmYjRhNWQ5XQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2xpcnAvc3JjL3RjcF9zdWJyLmMgfCAxMSArKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zbGlycC9zcmMvdGNwX3N1YnIuYyBiL3NsaXJwL3NyYy90Y3Bfc3Vici5jCitpbmRleCBlOGVkNGVmLi4zYTRhOGVlIDEwMDY0NAorLS0tIGEvc2xpcnAvc3JjL3RjcF9zdWJyLmMKKysrKyBiL3NsaXJwL3NyYy90Y3Bfc3Vici5jCitAQCAtNzc3LDcgKzc3Nyw4IEBAIGludCB0Y3BfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG0tPm1fbGVuID0gYnB0ciAtIG0tPm1fZGF0YTsgLyogQWRqdXN0IGxlbmd0aCAqLworLSAgICAgICAgICAgIG0tPm1fbGVuICs9IHNucHJpbnRmKGJwdHIsIG0tPm1fc2l6ZSwgIkRDQyBDSEFUIGNoYXQgJWx1ICV1JWNcbiIsCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRENDIENIQVQgY2hhdCAlbHUgJXUlY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFkZHIuc19hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpLCAxKTsKKyAgICAgICAgIH0gZWxzZSBpZiAoc3NjYW5mKGJwdHIsICJEQ0MgU0VORCAlMjU2cyAldSAldSAldSIsIGJ1ZmYsICZsYWRkciwgJmxwb3J0LAorQEAgLTc4Nyw4ICs3ODgsOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihicHRyLCBtLT5tX3NpemUsICJEQ0MgU0VORCAlcyAlbHUgJXUgJXUlY1xuIiwgYnVmZiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiRENDIFNFTkQgJXMgJWx1ICV1ICV1JWNcbiIsIGJ1ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5zb19mYWRkci5zX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpLCBuMSwgMSk7CisgICAgICAgICB9IGVsc2UgaWYgKHNzY2FuZihicHRyLCAiRENDIE1PVkUgJTI1NnMgJXUgJXUgJXUiLCBidWZmLCAmbGFkZHIsICZscG9ydCwKK0BAIC03OTgsOCArNzk5LDggQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCistICAgICAgICAgICAgbS0+bV9sZW4gKz0KKy0gICAgICAgICAgICAgICAgc25wcmludGYoYnB0ciwgbS0+bV9zaXplLCAiRENDIE1PVkUgJXMgJWx1ICV1ICV1JWNcbiIsIGJ1ZmYsCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIkRDQyBNT1ZFICVzICVsdSAldSAldSVjXG4iLCBidWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFkZHIuc19hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgbjEsIDEpOworICAgICAgICAgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzIxMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MjExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYmU0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzIxMS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDE0ZWMzNmUxMDdhOGM5YWY3ZDBhODBjMzU3MWZlMzliMjkxZmYxZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTc6NDQ6MzEgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHRmdHA6IHJlc3RyaWN0IHJlbGF0aXZlIHBhdGggYWNjZXNzCisKK3RmdHAgcmVzdHJpY3RzIHJlbGF0aXZlIG9yIGRpcmVjdG9yeSBwYXRoIGFjY2VzcyBvbiBMaW51eCBzeXN0ZW1zLgorQXBwbHkgc2FtZSByZXN0cmljdGlvbnMgb24gV2luZG93cyBzeXN0ZW1zIHRvby4gSXQgaGVscHMgdG8gYXZvaWQKK2RpcmVjdG9yeSB0cmF2ZXJzYWwgaXNzdWUuCisKK0ZpeGVzOiBodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC9xZW11LytidWcvMTgxMjQ1MQorUmVwb3J0ZWQtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorUmV2aWV3ZWQtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDIwMDExMzEyMTQzMS4xNTY3MDgtMS1wcGFuZGl0QHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9zbGlycC9saWJzbGlycC8tL2NvbW1pdC8xNGVjMzZlMTA3YThjOWFmN2QwYTgwYzM1NzFmZTM5YjI5MWZmMWQ0LnBhdGNoXQorQ1ZFOiBDVkUtMjAyMC03MjExCitTaWduZWQtb2ZmLWJ5OiBDaGVlIFlhbmcgTGVlIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKworLS0tCisgc2xpcnAvc3JjL3RmdHAuYyB8IDkgKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90ZnRwLmMgYi9zbGlycC9zcmMvdGZ0cC5jCitpbmRleCAwOTNjMmUwLi5lNTJlNzFiIDEwMDY0NAorLS0tIGEvc2xpcnAvc3JjL3RmdHAuYworKysrIGIvc2xpcnAvc3JjL3RmdHAuYworQEAgLTM0NCw4ICszNDQsMTMgQEAgc3RhdGljIHZvaWQgdGZ0cF9oYW5kbGVfcnJxKFNsaXJwICpzbGlycCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNyY3NhcywKKyAgICAgayArPSA2OyAvKiBza2lwcGluZyBvY3RldCAqLworIAorICAgICAvKiBkbyBzYW5pdHkgY2hlY2tzIG9uIHRoZSBmaWxlbmFtZSAqLworLSAgICBpZiAoIXN0cm5jbXAocmVxX2ZuYW1lLCAiLi4vIiwgMykgfHwKKy0gICAgICAgIHJlcV9mbmFtZVtzdHJsZW4ocmVxX2ZuYW1lKSAtIDFdID09ICcvJyB8fCBzdHJzdHIocmVxX2ZuYW1lLCAiLy4uLyIpKSB7CisrICAgIGlmICgKKysjaWZkZWYgR19PU19XSU4zMgorKyAgICAgICAgc3Ryc3RyKHJlcV9mbmFtZSwgIi4uXFwiKSB8fAorKyAgICAgICAgcmVxX2ZuYW1lW3N0cmxlbihyZXFfZm5hbWUpIC0gMV0gPT0gJ1xcJyB8fAorKyNlbmRpZgorKyAgICAgICAgc3Ryc3RyKHJlcV9mbmFtZSwgIi4uLyIpIHx8CisrICAgICAgICByZXFfZm5hbWVbc3RybGVuKHJlcV9mbmFtZSkgLSAxXSA9PSAnLycpIHsKKyAgICAgICAgIHRmdHBfc2VuZF9lcnJvcihzcHQsIDIsICJBY2Nlc3MgdmlvbGF0aW9uIiwgdHApOworICAgICAgICAgcmV0dXJuOworICAgICB9CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3J1bi1wdGVzdAppbmRleCAyMjA2YjMxLi5iMjVhNzkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9ydW4tcHRlc3QKQEAgLTcsNCArNyw0IEBACiBleHBvcnQgU1JDX1BBVEg9JHB0ZXN0ZGlyCiAKIGNkICRwdGVzdGRpci90ZXN0cwotbWFrZSAtZiBNYWtlZmlsZS5pbmNsdWRlIC1rIHJ1bnRlc3QtVEVTVFMgfCBzZWQgJy86IE9LLyBzL14vUEFTUzogL2cnCittYWtlIC1mIE1ha2VmaWxlLmluY2x1ZGUgLWsgcnVudGVzdC1URVNUUyB8IHNlZCAnL15vayAvcy9vayAvUEFTUzogL2cnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4yLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzQuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1SaXAtb3V0LXBhcnRpYWwtc3VwcG9ydC1mb3ItdW51c2VkLU1EMi1hbmQtUklQRU1EMTYwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzRlMzhiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaApAQCAtMCwwICsxLDgxIEBACitGcm9tIDJkNTNkMWUzMDhhNWJkMTVhMTZjYzI4OWZhN2UxZjI2NGVhNzA2YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYW51IE1hdGlsYWluZW4gPHBtYXRpbGFpQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI2IEp1biAyMDE4IDEwOjQ2OjE0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJpcCBvdXQgcGFydGlhbCBzdXBwb3J0IGZvciB1bnVzZWQgTUQyIGFuZCBSSVBFTUQxNjAgZGlnZXN0cworCitJbnNwaXJlZCBieSAjNDUzLCBhZGRpbmcgY29uZmlndXJlLWNoZWNrcyBmb3IgdW51c2VkIGRpZ2VzdHMgYWxnb3JpdGhtcworc2VlbXMgbm9uc2Vuc2ljYWwsIGF0IG5vIHBvaW50IGluIHJwbSBoaXN0b3J5IGhhdmUgdGhlc2UgYWxnb3JpdGhtcyBiZWVuCit1c2VkIGZvciBhbnl0aGluZyBpbiBycG0gc28gdGhlcmUncyBub3QgZXZlbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvCitjYXJlIGFib3V0LiBTbyB0aGUgcXVlc3Rpb24gYmVjb21lcyB3aHkgZG8gd2UgYXBwZWFyIHRvIGhhdmUgKHNvbWUpCitzdXBwb3J0IGZvciB0aG9zZSB1bnVzZWQgYWxnb3JpdGhtcz8gU28gbGV0cyBkb24ndCwgcHJvYmxlbSBzb2x2ZWQuLi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9jb21taXQvZmY0YjkxMTFhZWJhMDFkZDAyNWRkMTMzY2U2MTdmYjgwZjczOThhMF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMgfCA3IC0tLS0tLS0KKyBycG1pby9kaWdlc3RfbnNzLmMgICAgICB8IDIgLS0KKyBycG1pby9kaWdlc3Rfb3BlbnNzbC5jICB8IDYgLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3JwbWlvL2RpZ2VzdF9iZWVjcnlwdC5jIGIvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMKK2luZGV4IDU5NzAyN2UyNS4uNjUzYTM5NDkxIDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMKKysrKyBiL3JwbWlvL2RpZ2VzdF9iZWVjcnlwdC5jCitAQCAtMTMyLDEwICsxMzIsNiBAQCBESUdFU1RfQ1RYIHJwbURpZ2VzdEluaXQoaW50IGhhc2hhbGdvLCBycG1EaWdlc3RGbGFncyBmbGFncykKKyAJY3R4LT5EaWdlc3QgPSAodm9pZCAqKSBzaGE1MTJEaWdlc3Q7CisgCWJyZWFrOworICNlbmRpZgorLSAgICBjYXNlIFBHUEhBU0hBTEdPX1JJUEVNRDE2MDoKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CistICAgIGNhc2UgUEdQSEFTSEFMR09fVElHRVIxOTI6CistICAgIGNhc2UgUEdQSEFTSEFMR09fSEFWQUxfNV8xNjA6CisgICAgIGRlZmF1bHQ6CisgCWZyZWUoY3R4KTsKKyAJcmV0dXJuIE5VTEw7CitAQCAtMjkyLDkgKzI4OCw2IEBAIHN0YXRpYyBpbnQgcGdwVmVyaWZ5U2lnUlNBKHBncERpZ0FsZyBwZ3BrZXksIHBncERpZ0FsZyBwZ3BzaWcsIHVpbnQ4X3QgKmhhc2gsIHNpCisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMToKKyAgICAgICAgIHByZWZpeCA9ICIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTQiOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUEdQSEFTSEFMR09fTUQyOgorLSAgICAgICAgcHJlZml4ID0gIjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDIwNTAwMDQxMCI7CistICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEEyNTY6CisgICAgICAgICBwcmVmaXggPSAiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAiOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcnBtaW8vZGlnZXN0X25zcy5jIGIvcnBtaW8vZGlnZXN0X25zcy5jCitpbmRleCBlMTE5MjBlM2UuLmIzZDJiNTU5NSAxMDA2NDQKKy0tLSBhL3JwbWlvL2RpZ2VzdF9uc3MuYworKysrIGIvcnBtaW8vZGlnZXN0X25zcy5jCitAQCAtMTE3LDcgKzExNyw2IEBAIHN0YXRpYyBIQVNIX0hhc2hUeXBlIGdldEhhc2hUeXBlKGludCBoYXNoYWxnbykKKyB7CisgICAgIHN3aXRjaCAoaGFzaGFsZ28pIHsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19NRDU6CXJldHVybiBIQVNIX0FsZ01ENTsKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CXJldHVybiBIQVNIX0FsZ01EMjsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOglyZXR1cm4gSEFTSF9BbGdTSEExOworICNpZmRlZiBTSEEyMjRfTEVOR1RICisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMjI0OglyZXR1cm4gSEFTSF9BbGdTSEEyMjQ7CitAQCAtMjE3LDcgKzIxNiw2IEBAIHN0YXRpYyBTRUNPaWRUYWcgZ2V0SGFzaEFsZyh1bnNpZ25lZCBpbnQgaGFzaGFsZ28pCisgeworICAgICBzd2l0Y2ggKGhhc2hhbGdvKSB7CisgICAgIGNhc2UgUEdQSEFTSEFMR09fTUQ1OglyZXR1cm4gU0VDX09JRF9NRDU7CistICAgIGNhc2UgUEdQSEFTSEFMR09fTUQyOglyZXR1cm4gU0VDX09JRF9NRDI7CisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMToJcmV0dXJuIFNFQ19PSURfU0hBMTsKKyAjaWZkZWYgU0hBMjI0X0xFTkdUSAorICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTIyNDoJcmV0dXJuIFNFQ19PSURfU0hBMjI0OworZGlmZiAtLWdpdCBhL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMgYi9ycG1pby9kaWdlc3Rfb3BlbnNzbC5jCitpbmRleCAxOGU1MmE3MjQuLjBhZTQ4ZGQxZCAxMDA2NDQKKy0tLSBhL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMKKysrKyBiL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMKK0BAIC0xNzIsMTIgKzE3Miw2IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgKmdldEVWUE1EKGludCBoYXNoYWxnbykKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOgorICAgICAgICAgcmV0dXJuIEVWUF9zaGExKCk7CisgCistICAgIGNhc2UgUEdQSEFTSEFMR09fUklQRU1EMTYwOgorLSAgICAgICAgcmV0dXJuIEVWUF9yaXBlbWQxNjAoKTsKKy0KKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CistICAgICAgICByZXR1cm4gRVZQX21kMigpOworLQorICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTI1NjoKKyAgICAgICAgIHJldHVybiBFVlBfc2hhMjU2KCk7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1ycG1wbHVnaW5zLmMtY2FsbC1kbGVycm9yLXByaW9yLXRvLWRsc3ltLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtcGx1Z2lucy5jLWNhbGwtZGxlcnJvci1wcmlvci10by1kbHN5bS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODQyZTNlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtcGx1Z2lucy5jLWNhbGwtZGxlcnJvci1wcmlvci10by1kbHN5bS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDY4NzhhODNmOWJhYzAxNWM2NGQ4M2NlZTQyNTMwYTIwYTI2NGNjNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNyBKYW4gMjAyMCAxMjowMjowNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBycG1wbHVnaW5zLmM6IGNhbGwgZGxlcnJvcigpIHByaW9yIHRvIGRsc3ltKCkKKworVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IGluIHRoZSBtYW5wYWdlOyBpZiB0aGVyZSBpcworYSBsaW5nZXJpbmcgZXJyb3IgZnJvbSBhbiB1bnJlbGF0ZWQgZGwqKCkgY2FsbCB0aGF0IHdhcworbmV2ZXIgb2J0YWluZWQgdmlhIGRsZXJyb3IoKSwgaXQgbmVlZHMgdG8gYmUgY2xlYXJlZAorcHJpb3IgdG8gY2FsbGluZyBkbHN5bSgpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzk5OF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbGliL3JwbXBsdWdpbnMuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWIvcnBtcGx1Z2lucy5jIGIvbGliL3JwbXBsdWdpbnMuYworaW5kZXggNjVlNjg0ZTg0Li5iOTUwZjg1Y2YgMTAwNjQ0CistLS0gYS9saWIvcnBtcGx1Z2lucy5jCisrKysgYi9saWIvcnBtcGx1Z2lucy5jCitAQCAtNjgsNiArNjgsOCBAQCBzdGF0aWMgcnBtUGx1Z2luIHJwbVBsdWdpbk5ldyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXRoLAorIAorICAgICAvKiBtYWtlIHN1cmUgdGhlIHBsdWdpbiBoYXMgdGhlIHN1cHBvcnRlZCBob29rcyBmbGFnICovCisgICAgIGhvb2tzX25hbWUgPSByc3Ryc2NhdChOVUxMLCBuYW1lLCAiX2hvb2tzIiwgTlVMTCk7CisrICAgIC8qIGNsZWFyIG91dCBhbnkgb2xkIGVycm9ycyB0aGF0IHdlcmVuJ3QgZmV0Y2hlZCAqLworKyAgICBkbGVycm9yKCk7CisgICAgIGhvb2tzID0gZGxzeW0oaGFuZGxlLCBob29rc19uYW1lKTsKKyAgICAgaWYgKChlcnJvciA9IGRsZXJyb3IoKSkgIT0gTlVMTCkgeworIAlycG1sb2coUlBNTE9HX0VSUiwgXygiRmFpbGVkIHRvIHJlc29sdmUgc3ltYm9sICVzOiAlc1xuIiksCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuMS5iYgppbmRleCBjMzczMzBlLi4xNzI1NWRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLjEuYmIKQEAgLTQyLDYgKzQyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcnBtLXJwbWlvLmMtcmVzdHJpY3QtdmlydHVhbC1tZW1vcnktdXNhZ2UtaWYtbGltaXQtcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDE2LXJwbXNjcmlwdC5jLWNoYW5nZS1sb2dnaW5nLWxldmVsLWFyb3VuZC1zY3JpcHRsZXRzLXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tb25vLWZpbmQtcHJvdmlkZXMtcmVxdWlyZXMtZG8tbm90LXVzZS1tb25vZGlzLWZyb20tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwbXBsdWdpbnMuYy1jYWxsLWRsZXJyb3ItcHJpb3ItdG8tZGxzeW0ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFBFID0gIjEiCkBAIC00OSw3ICs1MSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLURFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKK0RFUEVORFMgPSAib3BlbnNzbCBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQpAQCAtNTgsNyArNjAsNyBAQAogIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKIEVYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKIAotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLXdpdGhvdXQtbHVhIC0tZW5hYmxlLXB5dGhvbiAtLXdpdGgtY3J5cHRvPW9wZW5zc2wiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKIAogIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCmluZGV4IGZmYjFkMDYuLjE1MmZmMDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCkBAIC0yMCw2ICsyMCw5IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMTU4MWE1ODhmZGU5ZDg5ZjZiYzYyMDFlODEyOWFmYWYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVjYzU1NGVmZWM1ZmRhYWQ3MGRlOTIxY2Q1YTVlZWI2YzI5YTk1NTI0YzcxNWYzYmJmODQ5MjM1YjA4MDBjMCIKIAorIyAtMTY1NDggcmVxdWlyZWQgZm9yIHYzLjEuM3ByZTEuIEFscmVhZHkgaW4gdjMuMS4zLgorQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiIENWRS0yMDE3LTE2NTQ4ICIKKwogaW5oZXJpdCBhdXRvdG9vbHMKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImFjbCBhdHRyIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCmluZGV4IGNlMWIwMmYuLmEzOGIzZmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwpAQCAtOCwxMCArOCwxMCBAQAogU0VDVElPTiA9ICJkZXZlbC9ydWJ5IgogTElDRU5TRSA9ICJSdWJ5IHwgQlNELTItQ2xhdXNlIHwgQlNELTMtQ2xhdXNlIHwgR1BMdjIgfCBJU0MgfCBNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9MzQwOTQ4ZTE4ODJlNTc5NzMxODQxYmY0OWNkYzIyYzEgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01YjhjODc1NTk4Njg3OTY5Nzk4MDYxMDBkYjNmMzgwNSBcCiAgICAgZmlsZTovL0JTREw7bWQ1PTE5YWFmNjVjODhhNDBiNTA4ZDE3YWU0YmU1MzljNGI1XAogICAgIGZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgIGZpbGU6Ly9MRUdBTDttZDU9NGFjMGI4NGQxZjdmNDIwYmNhMjgyZTFhZGVmYzdmOTkgXAorICAgIGZpbGU6Ly9MRUdBTDttZDU9MmI2ZDYyZGMwZDYwOGYzNGQ1MTBjYTNmNDI4MTEwZWMgXAogIgogCiBERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBnZGJtIHJlYWRsaW5lIGxpYmZmaSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAxLU1vZGlmeS1zaGViYW5nLW9mLWxpYmV4ZWMteTJyYWNjLWFuZC1saWJleGVjLXJhY2MyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAxLU1vZGlmeS1zaGViYW5nLW9mLWxpYmV4ZWMteTJyYWNjLWFuZC1saWJleGVjLXJhY2MyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzE2YmVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDEtTW9kaWZ5LXNoZWJhbmctb2YtbGliZXhlYy15MnJhY2MtYW5kLWxpYmV4ZWMtcmFjYzJ5LnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZWVkN2JjODU1ZmQ4ZDIzMmQ0ZDIwM2NjOTAyN2RkMDdjZWU4ZWNhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CitEYXRlOiBTYXQsIDggRmViIDIwMjAgMTU6MTY6MTQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTW9kaWZ5IHNoZWJhbmcgb2YgbGliZXhlYy95MnJhY2MgYW5kIGxpYmV4ZWMvcmFjYzJ5LgorCitjaGFuZ2UgL3Vzci9sb2NhbC9iaW4vcnVieSB0byAvdXNyL2Jpbi9lbnYgcnVieS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CistLS0KKyBsaWJleGVjL3JhY2MyeSB8IDIgKy0KKyBsaWJleGVjL3kycmFjYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmV4ZWMvcmFjYzJ5IGIvbGliZXhlYy9yYWNjMnkKK2luZGV4IGY4OGQ3M2VkMmMuLjc0ZTQ5Y2ZhMjEgMTAwNzU1CistLS0gYS9saWJleGVjL3JhY2MyeQorKysrIGIvbGliZXhlYy9yYWNjMnkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9sb2NhbC9iaW4vcnVieQorKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyAjCisgIyAkSWQkCisgIworZGlmZiAtLWdpdCBhL2xpYmV4ZWMveTJyYWNjIGIvbGliZXhlYy95MnJhY2MKK2luZGV4IDc5MzNmOTQxNTMuLjM2ZGFmODY0ZTEgMTAwNzU1CistLS0gYS9saWJleGVjL3kycmFjYworKysrIGIvbGliZXhlYy95MnJhY2MKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9sb2NhbC9iaW4vcnVieQorKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyAjCisgIyAkSWQkCisgIworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoCmluZGV4IDU5NzlkOGIuLmIzMWRlZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2gKQEAgLTYsMTMgKzYsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQotIE1ha2VmaWxlLmluIHwgMiArLQorIHRlbXBsYXRlL01ha2VmaWxlLmluIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL3RlbXBsYXRlL01ha2VmaWxlLmluIGIvdGVtcGxhdGUvTWFrZWZpbGUuaW4KIGluZGV4IGZhMWUxOWVmMzcuLmJiZDA3ZmEzNGIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KKy0tLSBhL3RlbXBsYXRlL01ha2VmaWxlLmluCisrKysgYi90ZW1wbGF0ZS9NYWtlZmlsZS5pbgogQEAgLTEwOSw3ICsxMDksNyBAQCBNSVNTSU5HID0gQExJQk9CSlNAIEBBTExPQ0FACiAgRU5BQkxFX1NIQVJFRCA9IEBFTkFCTEVfU0hBUkVEQAogIExEU0hBUkVEID0gQExJQlJVQllfTERTSEFSRURACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDMtY29uZmlndXJlLmFjLWNoZWNrLWZpbml0ZS1pc2luZi1pc25hbi1hcy1tYWNyb3MtZmlycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE4Y2ZmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLUZyb20gYmQ3MWI2OThiZjczM2U2ZTkzMjgyY2QyYjFiOTNmNTFlMWEzM2M3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG5vYnUgPG5vYnVAYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlPgotRGF0ZTogRnJpLCA4IEZlYiAyMDE5IDA3OjIyOjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBjb25maWd1cmUuYWM6IGNoZWNrIGZpbml0ZSxpc2luZixpc25hbiBhcyBtYWNyb3MgZmlyc3QKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotW3J1YnktY29yZTo5MTQ4N10gW0J1ZyAjMTU1OTVdCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9jaS5ydWJ5LWxhbmcub3JnL3J1YnkvdHJ1bmtANjcwMzYgYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21taXQvNzRmOTRiM2U2ZWJmMTViNzZmM2IzNTdlNzU0MDk1NDEyYjAwNmU5NF0KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+Ci0tLS0KLSBhY2xvY2FsLm00ICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICB8IDEzICsrKystLS0tLS0tLS0KLSB0b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNCB8IDEzICsrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00Ci0KLWRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAotaW5kZXggYjBmZTNlYjk1OS4uZWQ3ZDE0ZWY2MyAxMDA2NDQKLS0tLSBhL2FjbG9jYWwubTQKLSsrKyBiL2FjbG9jYWwubTQKLUBAIC0zNSw2ICszNSw3IEBAIG00X2luY2x1ZGUoW3Rvb2wvbTQvcnVieV9mdW5jX2F0dHJpYnV0ZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X21pbmd3MzIubTRdKQotIG00X2luY2x1ZGUoW3Rvb2wvbTQvcnVieV9wcmVwZW5kX29wdGlvbi5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3Byb2dfZ251X2xkLm00XSkKLSttNF9pbmNsdWRlKFt0b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3JlcGxhY2VfdHlwZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3JtX3JlY3Vyc2l2ZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3NldGptcF90eXBlLm00XSkKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjNGQyODg4ZDIuLjI2OTFkYTZhM2MgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk0Niw5ICs5NDYsNiBAQCBtYWluKCkKLSAJCWFjX2N2X2Z1bmNfZnN5bmM9eWVzCi0gCQlhY19jdl9mdW5jX3NlZWtkaXI9eWVzCi0gCQlhY19jdl9mdW5jX3RlbGxkaXI9eWVzCi0tCQlhY19jdl9mdW5jX2lzaW5mPXllcwotLQkJYWNfY3ZfZnVuY19pc25hbj15ZXMKLS0JCWFjX2N2X2Z1bmNfZmluaXRlPXllcwotIAkJYWNfY3ZfZnVuY19sY2hvd249eWVzCi0gCQlhY19jdl9mdW5jX2xpbms9eWVzCi0gCQlhY19jdl9mdW5jX3JlYWRsaW5rPXllcwotQEAgLTk5OSw5ICs5OTYsNiBAQCBtYWluKCkKLSBbbmV0YnNkKl0sIFsJTElCUz0iLWxtICRMSUJTIgotIAkJXSwKLSBbZHJhZ29uZmx5Kl0sIFsJTElCUz0iLWxtICRMSUJTIgotLQkJIyBpc2luZigpIGFuZCBpc25hbigpIGFyZSBtYWNyb3Mgb24gRHJhZ29uRmx5LgotLQkJYWNfY3ZfZnVuY19pc2luZj15ZXMKLS0JCWFjX2N2X2Z1bmNfaXNuYW49eWVzCi0gCQldLAotIFthaXgqXSxbCUxJQlM9Ii1sbSAkTElCUyIKLSAJCWFjX2N2X2Z1bmNfcm91bmQ9bm8KLUBAIC0xNzI0LDExICsxNzE4LDggQEAgQUNfUkVQTEFDRV9GVU5DUyhkdXAyKQotIEFDX1JFUExBQ0VfRlVOQ1MoZXJmKQotIEFDX1JFUExBQ0VfRlVOQ1MoZXhwbGljaXRfYnplcm8pCi0gQUNfUkVQTEFDRV9GVU5DUyhmZnMpCi0tQUNfUkVQTEFDRV9GVU5DUyhmaW5pdGUpCi0gQUNfUkVQTEFDRV9GVU5DUyhmbG9jaykKLSBBQ19SRVBMQUNFX0ZVTkNTKGh5cG90KQotLUFDX1JFUExBQ0VfRlVOQ1MoaXNpbmYpCi0tQUNfUkVQTEFDRV9GVU5DUyhpc25hbikKLSBBQ19SRVBMQUNFX0ZVTkNTKGxnYW1tYV9yKQotIEFDX1JFUExBQ0VfRlVOQ1MobWVtbW92ZSkKLSBBQ19SRVBMQUNFX0ZVTkNTKG5hbikKLUBAIC0xNzQxLDYgKzE3MzIsMTAgQEAgQUNfUkVQTEFDRV9GVU5DUyhzdHJsY3B5KQotIEFDX1JFUExBQ0VfRlVOQ1Moc3Ryc3RyKQotIEFDX1JFUExBQ0VfRlVOQ1ModGdhbW1hKQotIAotK1JVQllfUkVQTEFDRV9GVU5DKFtmaW5pdGVdLCBbQCU6QGluY2x1ZGUgPG1hdGguaD5dKQotK1JVQllfUkVQTEFDRV9GVU5DKFtpc2luZl0sIFtAJTpAaW5jbHVkZSA8bWF0aC5oPl0pCi0rUlVCWV9SRVBMQUNFX0ZVTkMoW2lzbmFuXSwgW0AlOkBpbmNsdWRlIDxtYXRoLmg+XSkKLSsKLSAjIGZvciBtaXNzaW5nL3NldHByb2N0aXRsZS5jCi0gQVNfQ0FTRShbIiR0YXJnZXRfb3MiXSwKLSBbYWl4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSB8IGxpbnV4KiB8IGRhcndpbipdLCBbQUNfREVGSU5FKFNQVF9UWVBFLFNQVF9SRVVTRUFSR1YpXSwKLWRpZmYgLS1naXQgYS90b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNCBiL3Rvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uZDA2MTJlMjlhMAotLS0tIC9kZXYvbnVsbAotKysrIGIvdG9vbC9tNC9ydWJ5X3JlcGxhY2VfZnVuY3MubTQKLUBAIC0wLDAgKzEsMTMgQEAKLSsjIC0qLSBBdXRvY29uZiAtKi0KLStkbmwgUlVCWV9SRVBMQUNFX0ZVTkMgW2Z1bmNdIFtpbmNsdWRlZF0KLStBQ19ERUZVTihbUlVCWV9SRVBMQUNFX0ZVTkNdLCBbZG5sCi0rICAgIEFDX0NIRUNLX0RFQ0woWyQxXSxkbmwKLSsgICAgICAgIFtBQ19ERUZJTkUoQVNfVFJfQ1BQKEhBVkVfWyQxXSkpXSxkbmwKLSsgICAgICAgIFtBQ19SRVBMQUNFX0ZVTkNTKCQxKV0sZG5sCi0rICAgICAgICBbJDJdKWRubAotK10pCi0rCi0rZG5sIFJVQllfUkVQTEFDRV9GVU5DUyBbZnVuY3NdIFtpbmNsdWRlZF0KLStBQ19ERUZVTihbUlVCWV9SRVBMQUNFX0ZVTkNTXSBbZG5sCi0rICAgIG00X21hcF9hcmdzX3coWyQxXSwgW1JVQllfUkVQTEFDRV9GVU5DKF0sIFspLCBbJDJdXSlkbmwKLStdKQotLS0gCi0yLjIzLjAucmMxCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9yZW1vdmVfaGFzX2luY2x1ZGVfbWFjcm9zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3JlbW92ZV9oYXNfaW5jbHVkZV9tYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlNjMzMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9yZW1vdmVfaGFzX2luY2x1ZGVfbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0ZpbHRlciBvdXQgX19oYXNfaW5jbHVkZSogY29tcGlsZXIgZGVmaW5lcworCitUaGV5IGFyZSBpbnRlcm5hbCB0byBjb21waWxlciBhbmQgdGhpcyBoZWFkZXIgaXMgbGF0ZXIgb24gaW5jbHVkZXMgaW4gQworZmlsZXMsIGJ1dCBuZXdlciBnY2MgPj0gMTAgY29tcGxhaW5zIGFib3V0IGl0LgorCitlcnJvciBpbiBpbml0aWFsIGhlYWRlciBmaWxlOgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3RtcC8yMDIwMDEyNC04NjYyNS0xNGhpanU0LmM6MToKK3wgL3RtcC8yMDIwMDEyNC04NjYyNS0xMXk2bDZpLmg6MTM4NDk6OTogZXJyb3I6ICJfX2hhc19pbmNsdWRlIiBjYW5ub3QgYmUgdXNlZCBhcyBhIG1hY3JvIG5hbWUKK3wgMTM4NDkgfCAjZGVmaW5lIF9faGFzX2luY2x1ZGUgX19oYXNfaW5jbHVkZQorfCAgICAgICB8ICAgICAgICAgXn5+fn5+fn5+fn5+fgorfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkIGR1ZSB0byAtV2ZhdGFsLWVycm9ycy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9jb21tb24ubWsKKysrKyBiL2NvbW1vbi5taworQEAgLTIyMSw2ICsyMjEsOCBAQCAkKFRJTUVTVEFNUERJUikvJChNSklUX0hFQURFUjouaD0pJChNSklUCisgCQkkKFRJTUVTVEFNUERJUikvJChhcmNoKS8udGltZQorIAkkKEVDSE8pIGJ1aWxkaW5nICQoQEY6LnRpbWU9LmgpCisgCSQoUSkgJChDUFApIC1ETUpJVF9IRUFERVIgJChNSklUX0hFQURFUl9GTEFHUykgJChDRkxBR1MpICQoWENGTEFHUykgJChDUFBGTEFHUykgJChzcmNkaXIpL3ZtLmMgJChDUFBPVVRGTEFHKSQoQEY6LnRpbWU9LmgpLm5ldworKwkkKFEpc2VkIC1pIC1lICIvI2RlZmluZSBfX2hhc19pbmNsdWRlIF9faGFzX2luY2x1ZGUvZCIgJChARjoudGltZT0uaCkubmV3CisrCSQoUSlzZWQgLWkgLWUgIi8jZGVmaW5lIF9faGFzX2luY2x1ZGVfbmV4dCBfX2hhc19pbmNsdWRlX25leHQvZCIgJChARjoudGltZT0uaCkubmV3CisgCSQoUSkgJChJRkNIQU5HRSkgIi0tdGltZXN0YW1wPSRAIiAkKEBGOi50aW1lPS5oKSAkKEBGOi50aW1lPS5oKS5uZXcKKyAKKyAkKE1KSVRfSEVBREVSOi5oPSkkKE1KSVRfSEVBREVSX1NVRkZJWCkuaDogJChUSU1FU1RBTVBESVIpLyQoTUpJVF9IRUFERVI6Lmg9KSQoTUpJVF9IRUFERVJfU1VGRklYKS50aW1lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi42LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi42LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MjhmNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotcmVxdWlyZSBydWJ5LmluYwotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg3NTRiZmIzNmQ1MmMyYmYxZmIzZDNkZGM3MTAxNjA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2OTc2YjcxNmVjYzFmZDM0ZjliN2MzYzJiMDdiYmQzNzYzMTgxNTM3N2EyZTNlODVhNWIxOTRjZmRjYmVkN2QiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tnbXBdID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsIC0tZGlzYWJsZS1pcHY2LCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZGlzYWJsZS1kdHJhY2UgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCi0gICAgLS13aXRoLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgIyBGaW5kIG91dCByYmNvbmZpZy5yYiBmcm9tIC5pbnN0YWxsZWQubGlzdAotICAgIHJiY29uZmlnX3JiPWBncmVwIHJiY29uZmlnLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAotICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKLSAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAotICAgICAgICAgICAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0gICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0gICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLSAgICAgICAgJHtEfSRyYmNvbmZpZ19yYgotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBjcCAtcmYgJHtTfS90ZXN0ICR7RH0ke1BURVNUX1BBVEh9LwotICAgICMgaW5zdGFsbCB0ZXN0LWJpbmFyaWVzCi0gICAgZmluZCAkKGZpbmQgLi8uZXh0IC1wYXRoICcqLy10ZXN0LScpIC1uYW1lICcqLnNvJyAtcHJpbnQwIFwKLSAgICAgICAgfCB0YXIgLS1uby1yZWN1cnNpb24gLS1udWxsIC1UIC0gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLWNmIC0gXAotICAgICAgICB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLS1zdHJpcC1jb21wb25lbnRzPTIgLXhmIC0KLSAgICAjIGFkanVzdCBwYXRoIHRvIG5vdCBhc3N1bWUgYnVpbGQgZGlyZWN0b3J5IGxheW91dAotICAgIHNlZCAtZSAnc3xGaWxlLmV4cGFuZF9wYXRoKC4qXC5cLi9iaW4vZXJiW14pXSp8RmlsZS5leHBhbmRfcGF0aCgiJHtiaW5kaXJ9L2VyYiJ8ZycgXAotICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2VyYi90ZXN0X2VyYl9jb21tYW5kLnJiCi0KLSAgICBjcCAtciAke1N9L2luY2x1ZGUgJHtEfS8ke2xpYmRpcn0vcnVieS8KLSAgICB0ZXN0X2Nhc2VfcmI9YGdyZXAgcnVieWdlbXMvdGVzdF9jYXNlLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAotICAgIHNlZCAtaSAtZSAnczouLi8uLi8uLi90ZXN0LzouLi8uLi8uLi9wdGVzdC90ZXN0LzpnJyAke0R9LyR0ZXN0X2Nhc2VfcmIKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKLQotU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCi0KLVNVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCi1SREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKLQotRklMRVNfJHtQTn0tcHRlc3RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgJHtsaWJkaXJ9L3J1YnkvaW5jbHVkZSBcCi0gICAgJHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8qLy10ZXN0LSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMDcwODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi43LjAuYmIKQEAgLTAsMCArMSw5MiBAQAorcmVxdWlyZSBydWJ5LmluYworCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnVjb250ZXh0IgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2hhc19pbmNsdWRlX21hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb2RpZnktc2hlYmFuZy1vZi1saWJleGVjLXkycmFjYy1hbmQtbGliZXhlYy1yYWNjMnkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZjRhNTRlODIzMTE3NmUxMDlhNDJjNTQ2YjQ3MjVhOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4Yzk5YWE5M2I1ZTJmMWJjODQzN2QxYmJiZWZkMjdiMTNlNzY5NDAyNTMzMWY3NzI0NWQwYzA2OGVmMWY4Y2JlIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kPXllcywgLS13aXRoLXZhbGdyaW5kPW5vLCB2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbZ21wXSA9ICItLXdpdGgtZ21wPXllcywgLS13aXRoLWdtcD1ubywgZ21wIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LCAtLWRpc2FibGUtaXB2NiwiCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCisgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAtLWRpc2FibGUtZHRyYWNlIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAorICAgIC0td2l0aC1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgTElCUz0nLWx1Y29udGV4dCcgXAorICAgIGFjX2N2X2Z1bmNfaXNuYW49eWVzIFwKKyAgICBhY19jdl9mdW5jX2lzaW5mPXllcyBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgIyBGaW5kIG91dCByYmNvbmZpZy5yYiBmcm9tIC5pbnN0YWxsZWQubGlzdAorICAgIHJiY29uZmlnX3JiPWBncmVwIHJiY29uZmlnLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKKyAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorICAgICAgICAgICAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgJHtEfSRyYmNvbmZpZ19yYgorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBjcCAtcmYgJHtTfS90ZXN0ICR7RH0ke1BURVNUX1BBVEh9LworCisgICAgaW5zdGFsbCAtRCAke1N9L3Rvb2wvdGVzdC9ydW5uZXIucmIgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbC90ZXN0L3J1bm5lci5yYgorICAgIGNwIC1yICR7U30vdG9vbC9saWIgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbC8KKyAgICBta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9saWIKKyAgICBjcCAtciAke1N9L2xpYi9kaWRfeW91X21lYW4gJHtTfS9saWIvcmRvYyAke0R9JHtQVEVTVF9QQVRIfS9saWIKKworICAgICMgaW5zdGFsbCB0ZXN0LWJpbmFyaWVzCisgICAgZmluZCAkKGZpbmQgLi8uZXh0IC1wYXRoICcqLy10ZXN0LScpIC1uYW1lICcqLnNvJyAtcHJpbnQwIFwKKyAgICAgICAgfCB0YXIgLS1uby1yZWN1cnNpb24gLS1udWxsIC1UIC0gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLWNmIC0gXAorICAgICAgICB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLS1zdHJpcC1jb21wb25lbnRzPTIgLXhmIC0KKyAgICAjIGFkanVzdCBwYXRoIHRvIG5vdCBhc3N1bWUgYnVpbGQgZGlyZWN0b3J5IGxheW91dAorICAgIHNlZCAtZSAnc3xGaWxlLmV4cGFuZF9wYXRoKC4qXC5cLi9iaW4vZXJiW14pXSp8RmlsZS5leHBhbmRfcGF0aCgiJHtiaW5kaXJ9L2VyYiJ8ZycgXAorICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2VyYi90ZXN0X2VyYl9jb21tYW5kLnJiCisKKyAgICBjcCAtciAke1N9L2luY2x1ZGUgJHtEfS8ke2xpYmRpcn0vcnVieS8KKyAgICB0ZXN0X2Nhc2VfcmI9YGdyZXAgcnVieWdlbXMvdGVzdF9jYXNlLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgIHNlZCAtaSAtZSAnczouLi8uLi8uLi90ZXN0LzouLi8uLi8uLi9wdGVzdC90ZXN0LzpnJyAke0R9LyR0ZXN0X2Nhc2VfcmIKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKKworU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgorUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCisKK1NVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCitSREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgorRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKKworRklMRVNfJHtQTn0tcHRlc3RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgJHtsaWJkaXJ9L3J1YnkvaW5jbHVkZSBcCisgICAgJHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8qLy10ZXN0LSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKaW5kZXggZDQyYWRkZi4uN2Y3MmYzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCkBAIC04LDcgKzgsNyBAQAogVHlwZT1vbmVzaG90CiBFeGVjU3RhcnQ9I1NCSU5ESVIjL3J1bi1wb3N0aW5zdHMKIEV4ZWNTdGFydFBvc3Q9I0JBU0VfQklORElSIy9zeXN0ZW1jdGwgLS1uby1yZWxvYWQgZGlzYWJsZSBydW4tcG9zdGluc3RzLnNlcnZpY2UKLVJlbWFpbkFmdGVyRXhpdD1ObworUmVtYWluQWZ0ZXJFeGl0PXllcwogVGltZW91dFNlYz0wCiAKIFtJbnN0YWxsXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCmluZGV4IDRmZDMzZjguLjliY2YwMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIKQEAgLTEyLDkgKzEyLDYgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdC9zcXVhc2hmcy10b29scyIKIAotIyBuZWVkcyBGTk1fRVhUTUFUQ0gKLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKLQogRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJnemlwIHh6IGx6byBsejQgbHptYSB4YXR0ciByZXByb2R1Y2libGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCmluZGV4IDUyZDJjZGMuLjIzNWU4MDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkMjI1YWFhODg0MWY0N2JhOGFhN2IzNTNiMGFjMzAyOGQ1OTEzZWZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1OTdjYzIwNmQ5ODJlNzIzN2ViOTNmZGMzM2U4YzRiYjZiYjJkNzk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMDE6Mjc6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY2Fwcy1hYmJyZXYuYXdrOiBmaXggZ2F3aydzIHBhdGgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGMxNzZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXN0cmFjZS1maXgtcmVwcm9kdWNpYmlsdHktaXNzdWVzLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNjMwOTc5MmM0OWNhOTAwY2VjNmE3ZjFkYzViNTFiZjc1YjYyOWUxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAxOTo1Njo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IGZpeCByZXByb2R1Y2liaWx0eSBpc3N1ZXMKKworVGhlIGZ1bGwgcGF0aCB0byB0aGUgZ2VuX3Rlc3RzLnNoIHNjcmlwdCBpcyBlbmNvZGVkIGluIHRoZSB0ZXN0cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyB0ZXN0cy9nZW5fdGVzdHMuc2ggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VuX3Rlc3RzLnNoIGIvdGVzdHMvZ2VuX3Rlc3RzLnNoCitpbmRleCA1ZTFlN2M5Li4xZTY1ZWFjIDEwMDc1NQorLS0tIGEvdGVzdHMvZ2VuX3Rlc3RzLnNoCisrKysgYi90ZXN0cy9nZW5fdGVzdHMuc2gKK0BAIC00Niw3ICs0Niw3IEBAIHdoaWxlIHJlYWQgLXIgbmFtZSBhcmcwIGFyZ3M7IGRvIHsKKyAKKyAJaGRyPSJcCisgIyEvYmluL3NoIC1lZnUKKy0jIEdlbmVyYXRlZCBieSAkMCBmcm9tICRpbnB1dCAoJG5hbWUgJGFyZzAgJGFyZ3MpOyBkbyBub3QgZWRpdC4iCisrIyBHZW5lcmF0ZWQgYnkgJChiYXNlbmFtZSAkMCkgZnJvbSAkaW5wdXQgKCRuYW1lICRhcmcwICRhcmdzKTsgZG8gbm90IGVkaXQuIgorIAorIAljYXNlICIkYXJnMCIgaW4KKyAJCSsqKQorQEAgLTgwLDcgKzgwLDcgQEAgd2hpbGUgcmVhZCAtciBuYW1lIGFyZzAgYXJnczsgZG8geworIAorIGlmIFsgLW4gIiRuYW1lcyIgXTsgdGhlbgorIAl7CistCQlwcmludGYgJyMgR2VuZXJhdGVkIGJ5ICVzIGZyb20gJXM7IGRvIG5vdCBlZGl0LlxuJyAiJDAiICIkaW5wdXQiCisrCQlwcmludGYgJyMgR2VuZXJhdGVkIGJ5ICVzIGZyb20gJXM7IGRvIG5vdCBlZGl0LlxuJyAiJChiYXNlbmFtZSAkMCkiICIkaW5wdXQiCisgCQlwcmludGYgJ0dFTl9URVNUUyA9JworIAkJcHJpbnRmICcgJXMuZ2VuLnRlc3QnICRuYW1lcworIAkJZWNobworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVkODViZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gODc5YWU3MWM0NzJjZTUyMmYxYjM1MTRkMmFiZjZhZDQ5YjRhY2MwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE4IFNlcCAyMDE3IDIyOjUxOjMyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL3NpZ2FjdGlvbjogQ2hlY2sgZm9yIG1pcHMgYW5kIGFscGhhIGJlZm9yZSB1c2luZwotIHNhX3Jlc3RvcmVyCi0KLWxvY2FsIHN0cnVjdHVyZSBkb2VzIG5vdCBkZWZpbmUgcmVzdG9yZXIgbWVtYmVyIGZvciBtaXBzIGFuZCBhbHBoYQotaW4gZGVmaW5pdGlvbiwgd2UgbmVlZCB0byBtYXRjaCB0aGF0IGFzc3VtcHRpb24gaGVyZSB3aGVyZSB0aGV5IGFyZQotYmVpbmcgc2V0Ci0KLUZpeGVzCi18IC4uLy4uL3N0cmFjZS00LjE4L3Rlc3RzL3NpZ2FjdGlvbi5jOjE3NzozNjogZXJyb3I6ICdzdHJ1Y3Rfc2V0X3NhIHtha2Egc3RydWN0IHNldF9zYX0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3Jlc3RvcmVyJwotfCAgIyBkZWZpbmUgU0FfUkVTVE9SRVJfQVJHUyAsIG5ld19hY3QtPnJlc3RvcmVyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gdGVzdHMvc2lnYWN0aW9uLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBhL3Rlc3RzL3NpZ2FjdGlvbi5jCi0rKysgYi90ZXN0cy9zaWdhY3Rpb24uYwotQEAgLTE1Niw3ICsxNTYsNyBAQCBtYWluKHZvaWQpCi0gCXNpZ2RlbHNldChtYXNrLmxpYmMsIFNJR0hVUCk7Ci0gCi0gCW1lbWNweShuZXdfYWN0LT5tYXNrLCBtYXNrLm9sZCwgc2l6ZW9mKG1hc2sub2xkKSk7Ci0tIyBpZmRlZiBTQV9SRVNUT1JFUgotKyNpZiBkZWZpbmVkKFNBX1JFU1RPUkVSKSAmJiAhZGVmaW5lZChNSVBTKSAmJiAhZGVmaW5lZChBTFBIQSkKLSAJbmV3X2FjdC0+ZmxhZ3MgPSBTQV9SRVNUT1JFUjsKLSAJbmV3X2FjdC0+cmVzdG9yZXIgPSAodW5zaWduZWQgbG9uZykgMHhkZWFkZmFjZWNhZmVmMDBkVUxMOwotICMgIGRlZmluZSBTQV9SRVNUT1JFUl9GTVQgIiwgc2FfZmxhZ3M9U0FfUkVTVE9SRVIsIHNhX3Jlc3RvcmVyPSUjbHgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAppbmRleCAwOGZhNWM1Li40MmMxODkzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGVmNTA0MGI0ZjE1MDA2YTIyYWM2M2EzYmFjZmNlYWMzNmZmYzIwNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVlNDdlMjA1MjU1OTI4Njc5NzAxYTViNzY5YmQ3YWUwZjgxNTExOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBHYWJyaWVsIEJhcmJ1IDxnYWJyaWVsLmJhcmJ1QGVuZWEuY29tPgogRGF0ZTogVGh1LCAyNSBKdWwgMjAxMyAxNToyODozMyArMDIwMAogU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IEFkZCBwdGVzdApAQCAtMTQsMTAgKzE0LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDgyNWM5ODkuLjQ2MjNjNDggMTAwNjQ0CitpbmRleCA4Y2Y0YzM2Li42NjE2MmViIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTQsNiArMTQsNyBAQCBTSVpFT0ZfTE9ORyA9IEBTSVpFT0ZfTE9OR0AKK0BAIC0xNSw2ICsxNSw3IEBAIFNJWkVPRl9MT05HID0gQFNJWkVPRl9MT05HQAogIE1QRVJTX05BTUUgPQogIE1QRVJTX0NDX0ZMQUdTID0KICBBUkNIX01GTEFHUyA9CkBAIC0yNSw3ICsyNSw3IEBACiAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykKICBBTV9DUFBGTEFHUyA9ICQoQVJDSF9NRkxBR1MpIFwKICAJICAgICAgLUkkKGJ1aWxkZGlyKSBcCi1AQCAtNDc3LDMgKzQ3OCwyMSBAQCBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCitAQCAtNTM4LDMgKzUzOSwyMSBAQCBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCiAgQ0xFQU5GSUxFUyA9IGtzeXNlbnQuaAogIAogIGluY2x1ZGUgLi4vc2Nuby5hbQpAQCAtNDQsNiArNDQsNiBAQAogKwlkb25lCiArCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCk7IGRvIFwKICsJCWluc3RhbGwgJChzcmNkaXIpLyQkZmlsZSAkKERFU1RESVIpLyQoVEVTVERJUik7IFwKLSsJCXNlZCAtaSAtZSAncy8kJHtzcmNkaXI9Ln0vLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRmaWxlOyBcCisrCQkjc2VkIC1pIC1lICdzLyQke3NyY2Rpcj0ufS8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGZpbGU7IFwKICsJZG9uZQogKwlmb3IgaSBpbiBuZXQgc2NtX3JpZ2h0cy1mZCBydF9zaWdhY3Rpb247IGRvIHNlZCAtaSAtZSAncy8kJHNyY2Rpci8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGkudGVzdDsgZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2gKaW5kZXggNWZlZmZmMy4uZThkYmQ3ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYmM0NzUwMmFiMDExZWE4ZDdjOWNkNzI0YjI1MTc0ZWNkOTUwNmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkODdhN2ZlYjVlYTc1ZGE3MDYxYWZkZDQ3M2ZhYmEwNDRlYzhlYjBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTM6MzM6NTAgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiByZW1vdmUgbmVlZCBmb3Igc2NyaXB0cwpAQCAtMTYsNyArMTYsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk0OWIwNTguLjRiYTk4OWMgMTAwNjQ0CitpbmRleCBkZDRmMTNmLi42NWYwMDBiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC0xMiwxMiArMTIsMTIgQEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21pcHMtU0lHRU1ULnBhdGNoCmluZGV4IDBkMzE5MmIuLmU4NmRhOTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9taXBzLVNJR0VNVC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjBjMTg0YTdhYjNmYjdiZTY3ZmI3NjI2YzQxMWU3NTZlYTYxZDJmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzk0NjQ4ZDg0NjcyYmJkYTMwYTkyMGEwNTU0MGI1NmNkMTU1ZWQ5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDcgQXVnIDIwMTYgMjM6NDc6NTcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiBGaXggYnVpbGQgd2l0aCBtaXBzL21pcHM2NCBvbiBtdXNsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWJkOTAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBjYzk3MzA3ZThlMzlhODE5OTljNmEzNjVkMDU3NDg3YTAyZTYxMjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTE6MDA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbXBlcnMubTQ6IG1vcmUgcm9idXN0IHRlc3QgZm9yIC1tMzIvLW14MzIgY29tcGlsZSBzdXBwb3J0Ci0KLVdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgT0UgdG9vbGNoYWluIGZvciB4ODYtNjQsIHRoZSBiYXNpYyBjaGVja3MgZm9yCi0tbTMyIGFuZCAtbXgzMiBjb21waWxlIHN1cHBvcnQgaW4gbXBlcnMubTQgcGFzcyBidXQgbGF0ZXIgYXR0ZW1wdHMgdG8KLWFjdHVhbGx5IHVzZSB0aGUgdG9vbGNoYWluIHdpdGggLW0zMiBmYWlsLCBlLmcuCi0KLSB8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvaW5jbHVkZS9zeXMvc3lzY2FsbC5oOjMxOjAsCi0gfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vc3RyYWNlLTQuMTEvZGVmcy5oOjU1LAotIHwgICAgICAgICAgICAgICAgICBmcm9tIG1wZXJzLW0zMi9rZXJuZWxfZGlyZW50LmM6MzI6Ci0gfCAvaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvaW5jbHVkZS9iaXRzL3N5c2NhbGwuaDo0MToyOTogZmF0YWwgZXJyb3I6IGJpdHMvc3lzY2FsbC0zMi5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0KLU1ha2UgdGhlIG1wZXJzLm00IHRlc3RzIG1vcmUgcm9idXN0IHNvIHRoYXQgY29uZmlndXJlIGNvcnJlY3RseQotZGV0ZWN0cyB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIE9FIHRvb2xjaGFpbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLS0tLQotIG00L21wZXJzLm00IHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL200L21wZXJzLm00IGIvbTQvbXBlcnMubTQKLWluZGV4IDEzNzI1ZDcuLmQ4NTc4ZWEgMTAwNjQ0Ci0tLS0gYS9tNC9tcGVycy5tNAotKysrIGIvbTQvbXBlcnMubTQKLUBAIC04OCw2ICs4OCw3IEBAIGNhc2UgIiRhcmNoIiBpbgotIAlDRkxBR1M9IiRDRkxBR1MgTVBFUlNfQ0ZMQUdTICRJRkxBRyIKLSAJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtcGVyc19uYW1lIHBlcnNvbmFsaXR5IGNvbXBpbGUgc3VwcG9ydF0sIFtzdF9jdl9jY10sCi0gCQlbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHN0ZGludC5oPgotKwkJCQkJCSAgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gCQkJCQkJICAgICBpbnQgbWFpbigpe3JldHVybiAwO31dXSldLAotIAkJCQkgICBbc3RfY3ZfY2M9eWVzXSwKLSAJCQkJICAgW3N0X2N2X2NjPW5vXSldKQotQEAgLTk1LDYgKzk2LDcgQEAgY2FzZSAiJGFyY2giIGluCi0gCQlBQ19DQUNIRV9DSEVDSyhbZm9yIG1wZXJzX25hbWUgcGVyc29uYWxpdHkgcnVudGltZSBzdXBwb3J0XSwKLSAJCQlbc3RfY3ZfcnVudGltZV0sCi0gCQkJW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHN0ZGludC5oPgotKwkJCQkJCQkgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gCQkJCQkJCSBpbnQgbWFpbigpe3JldHVybiAwO31dXSldLAotIAkJCQkgICAgICAgW3N0X2N2X3J1bnRpbWU9eWVzXSwKLSAJCQkJICAgICAgIFtzdF9jdl9ydW50aW1lPW5vXSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcHRlc3Qtc3BhY2VzYXZlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKaW5kZXggM2UzMmNjMy4uYzVkOGZmOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDNmYWQ0ODIxZDkwY2QyNjRkMWI5NDI1M2I5Y2Y0ZmRmNWQ0MDM0YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMjkgTWF5IDIwMTkgMDA6MTA6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiBUd2VhayBwdGVzdCBkaXNrIHNwYWNlIG1hbmFnZW1lbnQKKwogSWYgdGhlIHRlc3QgaXMgc3VjY2Vzc2Z1bCwgcmVtb3ZlIHRoZSBsb2cgYW5kIGV4cCBmaWxlcy4gVGhpcyBzdG9wcyBzdHJhY2UKIHVzaW5nIGFyb3VuZCA2MDBNQiBvZiBkaXNrIHNwYWNlIGFuZCBydW5uaW5nIG91ciBwdGVzdCBpbWFnZXMgb3V0IG9mIHNwYWNlLgogCkBAIC01LDEwICsxMCwxNCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3NwZWNpZmljIHRvIE9FIGltYWdlIHNwYWNlIGlzc3Vlc10KIAotSW5kZXg6IHN0cmFjZS00LjI2L3Rlc3RzL2dlbl90ZXN0cy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN0cmFjZS00LjI2Lm9yaWcvdGVzdHMvZ2VuX3Rlc3RzLnNoCi0rKysgc3RyYWNlLTQuMjYvdGVzdHMvZ2VuX3Rlc3RzLnNoCistLS0KKyB0ZXN0cy9nZW5fdGVzdHMuc2ggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbl90ZXN0cy5zaCBiL3Rlc3RzL2dlbl90ZXN0cy5zaAoraW5kZXggMzU0MDIwNC4uNWUxZTdjOSAxMDA3NTUKKy0tLSBhL3Rlc3RzL2dlbl90ZXN0cy5zaAorKysrIGIvdGVzdHMvZ2VuX3Rlc3RzLnNoCiBAQCAtNjIsNiArNjIsNyBAQCB3aGlsZSByZWFkIC1yIG5hbWUgYXJnMCBhcmdzOyBkbyB7CiAgCQkkaGRyCiAgCQkuICJcJHtzcmNkaXI9Ln0vaW5pdC5zaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKaW5kZXggMmZlZDk4NC4uNDY2MDIwNyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKQEAgLTEsMyArMSw2IEBACiAjIS9iaW4vc2gKLWV4cG9ydCBUSU1FT1VUX0RVUkFUSU9OPTMwCi1tYWtlIC1CIC1DIHRlc3RzIC1rIHRlc3Qtc3VpdGUubG9nCitleHBvcnQgVElNRU9VVF9EVVJBVElPTj0xMjAKK2Nob3duIG5vYm9keSB0ZXN0cworY2hvd24gbm9ib2R5IHRlc3RzLyoKK2Nob3duIG5vYm9keSAuLi9wdGVzdAorc3Ugbm9ib2R5IC1jICJtYWtlIC1CIC1DIHRlc3RzIC1rIHRlc3Qtc3VpdGUubG9nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9zeXNfaGVhZGVycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2Uvc3lzX2hlYWRlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NmYyYzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9zeXNfaGVhZGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVJlbW92ZSBjb25maWd1cmUgY2hlY2tzIGZvciBmZXcgc3lzLyBoZWFkZXJzCi0KLXN5cy9pcGMuaCwgc3lzL3NlbS5oLCBzeXMvc2htLmgsIGFuZCBzeXMvbXNnLmggYXJlIGFjdHVhbGx5IHdyYXBwZXJzCi1mb3Iga2VybmVsIGhlYWRlcnMgaW4gbGliYyBpZiBhdmFpbGFibGUsIGhlcmUgc3RyYWNlIGlzIHRyeWluZyB0byBtYXRjaAotdHJhY2VkIHByb2Nlc3MncyBBUElzIHRvIHN5c2NhbGxzIGtlcm5lbCBzdHJ1Y3R1cmVzCi0KLVJlbW92aW5nIHRoZSBjaGVja3MgbWFrZXMgaXQgZGVmYXVsdCB0byByaWdodCBrZXJuZWwgVUFQSSBoZWFkZXJzIHVuZGVyIGxpbnV4LwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5zdHJhY2UuaW8vcGlwZXJtYWlsL3N0cmFjZS1kZXZlbC8yMDE5LU5vdmVtYmVyLzAwOTIyMi5odG1sXQotU3VnZ2VzdGVkLWJ5OiBSaWNoIEZlbGtlciA8ZGFsaWFzQGFlcmlmYWwuY3g+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00MzksMTEgKzQzOSw3IEBAIEFDX0NIRUNLX0hFQURFUlMobTRfbm9ybWFsaXplKFsKLSAJc3lzL2NvbmYuaAotIAlzeXMvZXZlbnRmZC5oCi0gCXN5cy9mYW5vdGlmeS5oCi0tCXN5cy9pcGMuaAotLQlzeXMvbXNnLmgKLSAJc3lzL3F1b3RhLmgKLS0Jc3lzL3NlbS5oCi0tCXN5cy9zaG0uaAotIAlzeXMvc2lnbmFsZmQuaAotIAlzeXMveGF0dHIuaAotIAl1c3RhdC5oCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VpbnRwdHJfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCmluZGV4IDZkM2RkNmYuLjA4OGQ2ODUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCkBAIC0xLDEwICsxLDIwIEBACi1pbmNsdWRlIHN0ZGludC5oIGZvciBnZXR0aW5nIHVpbnRwdHJfdCBkZWZpbml0aW9uCitGcm9tIGE2YzkzNjZiZmJjZWY2ZjNmNGJiMDY4YjFmMWE1NjIzOTM1YjUwMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDIwOjA1OjA4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIGdldHRpbmcgdWludHB0cl90IGRlZmluaXRpb24KIAogZml4ZXMgZG9fY29tcGlsZV9wdGVzdF9iYXNlCiB0ZXN0cy9mYW5vdGlmeV9tYXJrLmM6MTkxOjIzOiBlcnJvcjogJ3VpbnRwdHJfdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ2ludHB0cl90Jz8KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyB0ZXN0cy9mYW5vdGlmeV9tYXJrLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYyBiL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYworaW5kZXggYWFkZTY0My4uZGU1NzlmMyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYwogKysrIGIvdGVzdHMvZmFub3RpZnlfbWFyay5jCiBAQCAtMTgsNiArMTgsNyBAQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKaW5kZXggNzA3NzA0OC4uZDQ2YjE0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmMGQ3ZWJmNDg0NDFlMGIwOTBjM2U2MDUzYjhjODQ1ZDBhNGEzYjE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMmE3MjZiMjgwZWNhOTQ4ODNlZGNiNGRhMWVhYWY4ZTkzZDQxNzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTE6MDE6MDAgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gdXBkYXRlIGdhd2sgcGF0aHMsIC9iaW4vZ2F3ayAtPiAvdXNyL2Jpbi9nYXdrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDAwYWZiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLmlvIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJMR1BMLTIuMSsgJiBHUEwtMisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wMTY5YTA0ODEwODMwZTk0ZjRiMWNmYjgyM2M5ZjU5MiIKLQotU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC1zcGFjZXNhdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWludHB0cl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3N5c19oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg0ZjVlNzJkZTgxM2M5YjFiYjYwNTdlZThhYjQyOGQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMTMxMTk4NzQ5NjU2NDAxZmUzZWZkNmI0YjE2YTA3ZWE4NjdlOGY1MzA4NjdjZWFlODkzMGJiYzkzN2EwNDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sYmx1ZXo1IgotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbXBlcnM9bm8iCi0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRHNpZ2NvbnRleHRfc3RydWN0PXNpZ2NvbnRleHQiCi0KLVRFU1RESVIgPSAidGVzdHMiCi1QVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAiXihERUJfQ0hBTkdFTE9HVElNRXxSUE1fQ0hBTkdFTE9HVElNRXxXQVJOX0NGTEFHU19GT1JfQlVJTER8TERGTEFHU19GT1JfQlVJTEQpIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCi0Jcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0KLQlpbnN0YWxsIC1tIDY0NCAke0J9L2NvbmZpZy5oICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIHNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV81LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1NTJkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5pbyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjErICYgR1BMLTIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzc1NmQ5ZDVkYWJjMjc2NjNkZjY0ZjBiZjQ5MjE2NmMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zdHJhY2UuaW8vZmlsZXMvJHtQVn0vc3RyYWNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LXNwYWNlc2F2ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91aW50cHRyX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYmNlMmU4NDYzMmIzOWE0ZWQ4NmI5ZmM2MDQ0N2FmOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjU4OTU4YzhlNTllYTYyMjkzZDkwN2QxMDU3MmUzNTJiNTgyYmQ3OTQ4ZWQyMWFhMjhlYmI0N2U1YmYzMGZmIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLGJsdWV6NSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLW1wZXJzPW5vIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURzaWdjb250ZXh0X3N0cnVjdD1zaWdjb250ZXh0IgorCitURVNURElSID0gInRlc3RzIgorUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gIl4oREVCX0NIQU5HRUxPR1RJTUV8UlBNX0NIQU5HRUxPR1RJTUV8V0FSTl9DRkxBR1NfRk9SX0JVSUxEfExERkxBR1NfRk9SX0JVSUxEKSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAorCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9CisJaW5zdGFsbCAtbSA2NDQgJHtCfS9jb25maWcuaCAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nICR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1RPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZmYTFjNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJBcGFjaGUtMiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ODdhZTcwOTRkMzU5ZmE5MGZiOWM0MDk2ZTUyZTJiIgotCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIGx6NCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFmZjI0OWY4NDhmODM0ZGVkODg1MzY1NDNlMDMxOTc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiZDBiNWM4ZTRjNTE3NTI2M2RjOWE5MmZkOWFlZjk0Y2U5MTdlODBhZjAzNGYyNmZlNWM0NWZkZTdlMGY3NzEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLUNWRV9QUk9EVUNUID0gImFwYWNoZTpzdWJ2ZXJzaW9uIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi0KLVBBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdD0ke1JFQ0lQRV9TWVNST09UfSR7ZXhlY19wcmVmaXh9LC0td2l0aG91dC1ib29zdCxib29zdCIKLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAtLXdpdGhvdXQtYXB4cyBcCi0gICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIFwKLSAgICAtLXdpdGhvdXQtc3dpZyBcCi0gICAgLS1kaXNhYmxlLWtleWNoYWluIFwKLSAgICAtLXdpdGgtdXRmOHByb2M9aW50ZXJuYWwgXAotICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIFwKLSIKLQotYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKLQotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCi0KLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg3OWYxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEzLjAuYmIKQEAgLTAsMCArMSw2MyBAQAorU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJBcGFjaGUtMiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ODdhZTcwOTRkMzU5ZmE5MGZiOWM0MDk2ZTUyZTJiIgorCitERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIGx6NCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjMwMDRiNGRhZTE4YmY0NWEwYjZlYTRlZjg4MjAwNjRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjNTBjZTJjM2ZhYTdiMWFlOTEwM2M0MzIwMTdkZjk4ZGZkOTg5YzQyMzlmOWY4MjcwYmIzYTMxNGVkOWU1YmQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK0NWRV9QUk9EVUNUID0gImFwYWNoZTpzdWJ2ZXJzaW9uIgorCitQQUNLQUdFQ09ORklHID89ICIiCisKK1BBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdD0ke1JFQ0lQRV9TWVNST09UfSR7ZXhlY19wcmVmaXh9LC0td2l0aG91dC1ib29zdCxib29zdCIKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAtLXdpdGhvdXQtYXB4cyBcCisgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIFwKKyAgICAtLXdpdGhvdXQtc3dpZyBcCisgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKKyAgICAtLXdpdGgtdXRmOHByb2M9aW50ZXJuYWwgXAorICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIFwKKyIKKworRVhUUkFfT0VNQUtFICs9ICJwa2djb25maWdfZGlyPSR7bGliZGlyfS9wa2djb25maWciCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK0NQUEZMQUdTICs9ICItUCIKK0JVSUxEX0NQUEZMQUdTICs9ICItUCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vbGlidG9vbAorCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAorCXJtIC1mICR7U30vYWNsb2NhbC5tNAorCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAorfQorCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKKyN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQorUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgorCitSREVQRU5EU18ke1BOfSA9ICJzZXJmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzODEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMS1hcmNoaXRlY3R1cmUtUmVjb2duaXNlLVJJU0NWLTMyLVJJU0NWLTY0LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNGE2YWNlMGE5NjU5NjVlYTE1ZTg4YzM0MThjNzE1OGNhNWNjOWY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIE5vdiAyMDE5IDEwOjEyOjA1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFyY2hpdGVjdHVyZTogUmVjb2duaXNlIFJJU0NWLTMyL1JJU0NWLTY0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzE3MWI1MzM4MDA4NWIxMjg4YjAzYjE5YTJiOTc4ZjM2YTVjMDAzZDBdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2FyY2hpdGVjdHVyZS5oIHwgMTMgKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYXJjaGl0ZWN0dXJlLmggYi9zcmMvYXJjaGl0ZWN0dXJlLmgKK2luZGV4IDI2Njc5ZTIuLjg5YzdkMzIgMTAwNjQ0CistLS0gYS9zcmMvYXJjaGl0ZWN0dXJlLmgKKysrKyBiL3NyYy9hcmNoaXRlY3R1cmUuaAorQEAgLTU3LDYgKzU3LDggQEAgZW51bSB7CisgICAgICAgICBBUkNISVRFQ1RVUkVfTTY4SywKKyAgICAgICAgIEFSQ0hJVEVDVFVSRV9USUxFR1gsCisgICAgICAgICBBUkNISVRFQ1RVUkVfQ1JJUywKKysgICAgICAgQVJDSElURUNUVVJFX1JJU0NWMzIsCisrICAgICAgIEFSQ0hJVEVDVFVSRV9SSVNDVjY0LAorICAgICAgICAgX0FSQ0hJVEVDVFVSRV9NQVgsCisgICAgICAgICBfQVJDSElURUNUVVJFX0lOVkFMSUQgPSAtMQorIH07CitAQCAtMTk0LDYgKzE5NiwxNyBAQCBpbnQgdW5hbWVfYXJjaGl0ZWN0dXJlKHZvaWQpOworICNlbGlmIGRlZmluZWQoX19jcmlzX18pCisgIyAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfQ1JJUworICMgIGVycm9yICJNaXNzaW5nIExJQl9BUkNIX1RVUExFIGZvciBDUklTIgorKyNlbGlmIGRlZmluZWQoX19yaXNjdikKKysjICBpZiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gNAorKyMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfUklTQ1YzMgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJyaXNjdjMyLWxpbnV4LWdudSIKKysjICBlbGlmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA4CisrIyAgICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9SSVNDVjY0CisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgInJpc2N2NjQtbGludXgtZ251IgorKyMgIGVsc2UKKysjICAgIGVycm9yICJVbnJlY29nbml6ZWQgcmlzY3YgYXJjaGl0ZWN0dXJlIHZhcmlhbnQiCisrIyAgZW5kaWYKKysjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUgbW9kZWwiCisgI2Vsc2UKKyAjICBlcnJvciAiUGxlYXNlIHJlZ2lzdGVyIHlvdXIgYXJjaGl0ZWN0dXJlIGhlcmUhIgorICNlbmRpZgorLS0gCisyLjI0LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvbWlwczY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvbWlwczY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMDZiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC9taXBzNjQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorUmVjb2duaXNlIG1pcHM2NCBuMzIvbjY0CisKK1RoZXNlIGFyZSBzdXBwb3J0ZWQgaW4gc3lzdGVtZCBub3cgYSBkYXlzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0L2NhZjQ5Yjk1YjNhNmVmZTk0NTUwNzgwOThjNzI5ZDgzYjA4ZTUyMDZdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9zcmMvYXJjaGl0ZWN0dXJlLmgKKysrKyBiL3NyYy9hcmNoaXRlY3R1cmUuaAorQEAgLTEyNywxMyArMTI3LDIyIEBAIGludCB1bmFtZV9hcmNoaXRlY3R1cmUodm9pZCk7CisgIyAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfU1BBUkMKKyAjICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgInNwYXJjLWxpbnV4LWdudSIKKyAjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUiCistI2VsaWYgZGVmaW5lZChfX21pcHM2NF9fKQorKyNlbGlmIGRlZmluZWQoX19taXBzNjQpICYmIGRlZmluZWQoX19MUDY0X18pCisgIyAgaWYgX19CWVRFX09SREVSID09IF9fQklHX0VORElBTgorICMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0CistIyAgICBlcnJvciAiTWlzc2luZyBMSUJfQVJDSF9UVVBMRSBmb3IgTUlQUzY0IgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjQtbGludXgtZ251YWJpNjQiCisgIyAgZWxzZQorICMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0X0xFCistIyAgICBlcnJvciAiTWlzc2luZyBMSUJfQVJDSF9UVVBMRSBmb3IgTUlQUzY0X0xFIgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NCIKKysjICBlbmRpZgorKyMgIGRlZmluZSBQUk9DX0NQVUlORk9fTU9ERUwgImNwdSBtb2RlbCIKKysjZWxpZiBkZWZpbmVkKF9fbWlwczY0KQorKyMgIGlmIF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4KKysjICAgIGRlZmluZSBuYXRpdmVfYXJjaGl0ZWN0dXJlKCkgQVJDSElURUNUVVJFX01JUFM2NAorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjQtbGludXgtZ251YWJpbjMyIgorKyMgIGVsc2UKKysjICAgIGRlZmluZSBuYXRpdmVfYXJjaGl0ZWN0dXJlKCkgQVJDSElURUNUVVJFX01JUFM2NF9MRQorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjRlbC1saW51eC1nbnVhYmluMzIiCisgIyAgZW5kaWYKKyAjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUgbW9kZWwiCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgppbmRleCBhZWY4ODM5Li5hN2ExZjBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiCkBAIC0zLDYgKzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjQucGF0Y2ggXAogIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggYjRiZDRjYS4uZWQxNGZlNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKQEAgLTI5LDcgKzI5LDcgQEAKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDMgNSAuIHN0b3AgMjAgMCAxIDIgNiAuIgogCiAjIG1hbmdsaW5nIG5lZWRlZCBmb3IgbWFrZQotTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQuKixhNjQsYCIKK01BS0VfQVJDSCA9ICJgZWNobyAke1RBUkdFVF9BUkNIfSB8IHNlZCBzLGkuODYsaTY4NiwgfCBzZWQgcyxhYXJjaDY0LiosYTY0LCB8IHNlZCBzLGFybWViLGFybSxgIgogTUFLRV9PUyA9ICJgZWNobyAke1RBUkdFVF9PU30gfCBzZWQgcyxebGludXguKixHTlUvTGludXgsYCIKIAogRVhUUkFfT0VNQUtFID0gIk1BQ0hJTkU9JHtNQUtFX0FSQ0h9IE9QU1lTPSR7TUFLRV9PU30gJ0NDPSR7Q0N9JyAnQVI9JHtBUn0nIgpAQCAtNDYsNiArNDYsNyBAQAogQ0ZMQUdTX2FwcGVuZF9taXBzNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgorQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjRsZSA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiBDRkxBR1NfYXBwZW5kX3Jpc2N2NjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC8wMDAxLUZpeC1hYmQ0YWJlZGQyLUZhaWxlZC10by1idWlsZC10ay04LjYuMTAtd2l0aC1jcm9zcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NkMzQxNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC8wMDAxLUZpeC1hYmQ0YWJlZGQyLUZhaWxlZC10by1idWlsZC10ay04LjYuMTAtd2l0aC1jcm9zcy0ucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBmN2ZhNDhjNGM3NWExZTc0OGRjNTA3MWU3MDljMGI2MmZmNzM5ZWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogImphbi5uaWp0bWFucyIgPG5panRtYW5zQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6IE1vbiwgOSBEZWMgMjAxOSAxMDowMjoyMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggW2FiZDRhYmVkZDJdOiBGYWlsZWQgdG8gYnVpbGQgdGsgOC42LjEwIHdpdGggY3Jvc3MKKyBjb21waWxlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vdGNsdGsvdGNsL2NvbW1pdC9mN2ZhNDhjNGM3NWExZTc0OGRjNTA3MWU3MDljMGI2MmZmNzM5ZWFhXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBjb21wYXQvc3RydG9sLmMgIHwgMiArLQorIGNvbXBhdC9zdHJ0b3VsLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb21wYXQvc3RydG9sLmMgYi9jb21wYXQvc3RydG9sLmMKK2luZGV4IGI3ZjY5MTk2Yy4uODExMDA2YTY0IDEwMDY0NAorLS0tIGEvY29tcGF0L3N0cnRvbC5jCisrKysgYi9jb21wYXQvc3RydG9sLmMKK0BAIC01Myw3ICs1Myw3IEBAIHN0cnRvbCgKKyAgICAgICovCisgCisgICAgIHAgPSBzdHJpbmc7CistICAgIHdoaWxlIChUY2xJc1NwYWNlUHJvYygqcCkpIHsKKysgICAgd2hpbGUgKGlzc3BhY2UoVUNIQVIoKnApKSkgeworIAlwICs9IDE7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9jb21wYXQvc3RydG91bC5jIGIvY29tcGF0L3N0cnRvdWwuYworaW5kZXggZTM3ZWIwNWY4Li4xNTU4N2YxZGEgMTAwNjQ0CistLS0gYS9jb21wYXQvc3RydG91bC5jCisrKysgYi9jb21wYXQvc3RydG91bC5jCitAQCAtNzQsNyArNzQsNyBAQCBzdHJ0b3VsKAorICAgICAgKi8KKyAKKyAgICAgcCA9IHN0cmluZzsKKy0gICAgd2hpbGUgKFRjbElzU3BhY2VQcm9jKCpwKSkgeworKyAgICB3aGlsZSAoaXNzcGFjZShVQ0hBUigqcCkpKSB7CisgCXAgKz0gMTsKKyAgICAgfQorICAgICBpZiAoKnAgPT0gJy0nKSB7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCmluZGV4IGM4NTMwZTEuLjg2NjMyZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCkBAIC04LDYgKzgsNyBAQAogRml4ZWQgdGhlIFRDTF9JTkNMVURFX1NQRUMKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KICBNYWtlZmlsZS5pbiAgfCAgICAyICstCiAgY29uZmlndXJlICAgIHwgICAgNCArKy0tCkBAIC0zNCw3ICszNSw3IEBACiBAQCAtMTkxMzQsNyArMTkxMzQsNyBAQCBldmFsICJUQ0xfTElCX0ZJTEU9bGlidGNsJHtMSUJfU1VGRklYfSIKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKyB0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKIC1QUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogK1BSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpcikvdGNsJChWRVJTSU9OKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwpAQCAtNTYsNyArNTcsNyBAQAogQEAgLTc5MSw3ICs3OTEsNyBAQCBldmFsICJUQ0xfTElCX0ZJTEU9bGlidGNsJHtMSUJfU1VGRklYfSIKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKyB0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKIC1QUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogK1BSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpcikvdGNsJChWRVJTSU9OKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2gKaW5kZXggMTZmN2M4MC4uMTdkMjUxZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoCkBAIC0xNCwxMCArMTQsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogU29uZy5MaSA8U29uZy5MaUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIC0tLQotIGNvbmZpZ3VyZSB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBJbmRleDogdW5peC9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTI3LDggKzI4LDggQEAKICAKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotLVRDTF9MSUJSQVJZPSckKHByZWZpeCkvbGliL3RjbCQoVkVSU0lPTiknCi0rVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJworLXRlc3QgLXogIiRUQ0xfTElCUkFSWSIgJiYgVENMX0xJQlJBUlk9JyQocHJlZml4KS9saWIvdGNsJChWRVJTSU9OKScKKyt0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKICBQUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogIEhUTUxfRElSPSckKERJU1RESVIpL2h0bWwnCiAgCkBAIC00MCw4ICs0MSw4IEBACiAgCiAgZXZhbCAiVENMX0xJQl9GSUxFPSR7VENMX0xJQl9GSUxFfSIKICAKLS1UQ0xfTElCUkFSWT0nJChwcmVmaXgpL2xpYi90Y2wkKFZFUlNJT04pJwotK1RDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKy10ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKHByZWZpeCkvbGliL3RjbCQoVkVSU0lPTiknCisrdGVzdCAteiAiJFRDTF9MSUJSQVJZIiAmJiBUQ0xfTElCUkFSWT0nJChsaWJkaXIpL3RjbCQoVkVSU0lPTiknCiAgUFJJVkFURV9JTkNMVURFX0RJUj0nJChpbmNsdWRlZGlyKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkZDk2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuMTAuYmIKQEAgLTAsMCArMSwxMDUgQEAKK1NVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImRldmVsL3RjbHRrIgorCisjIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAorTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisiCisKK0RFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgorCitCQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjk3YzU1NTczZjg1MjBiY2FiNzRlMjFiZmQ4ZDBhYWRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxOTZkYmY2NjM4ZTNkZjhkNWM4N2I1ODE1YzhjMmI3NTg0OTZlYjZmMGU0MTQ0NjU5NmM5YTRlNjM4ZDg3ZWQiCisKK1NSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCisKK1ZFUiA9ICIke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYworfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycworCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKKwlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQorCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKKwlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9CisJZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbworCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCisJCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLworCWRvbmUKK30KKworU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgorCitQQUNLQUdFUyA9KyAidGNsLWxpYiIKK0ZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJUaHJlYWQuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtUaHJlYWQuM10gPSAiJHttYW5kaXJ9L21hbjMvVGhyZWFkLjMiCisKKyMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKK1JERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIHRjbHRlc3QKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKKyMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCitCSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgorCisjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgorCisjIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQorIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgordGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAorCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCisJICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAorCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAorCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMzc3ODEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3RjbHRrIgotCi0jIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAotTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0iCi0KLURFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgotCi1CQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYWEwYTEyMWQ5NWEwZTdiNzNhMDM2ZjI2MDI4NTM4ZDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQwY2QyZGUyYzg3YjliYTgwODZiNDM5NTdhMGRlM2ViMmViNTY1YzcxNTlkNWY1M2NjYmJhM2ZlYjkxNWY0ZSIKLQotU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKLQotVkVSID0gIiR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYwotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycwotCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKLQlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQotCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKLQlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9Ci0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgotCi0jIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQotIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgotdGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAotCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCi0JICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAotCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAotCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmZjMTFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWxlY3RpdmVseSByZW1vdmUgI2lmZGVmIHN0YXRlbWVudHMgZnJvbSBzb3VyY2VzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2RvdGF0LmF0L3Byb2cvdW5pZmRlZi8iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc4ZmM2YzJjMWRjNGYxOGM4OTFlZDViN2E0NjlmZTMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VuaWZkZWYuYztlbmRsaW5lPTMyO21kNT1hYWVjODRkOGI2OGQ4YjZkZWE3MWY0NWU5OTQ5ZWJmZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy8ke0JQTn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjMzNzA1M2ZkOGE3ZDlhYjNhZGY1ZTUwZjg4YWY5NWI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyOGZmYzI3MGFjMjYyYjg4ZmUwMTExMzZhY2VmMjc4MGMwNWIwZGMzYzU0MzVkMDA1NjUxNzQwNzg4ZDQ1MzciCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInVuaWZkZWYtKD9QPHB2ZXI+KChcZCtcLiopKykoPyFbYS1mMC05XXs2LH0pKS50YXIiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmIxMGJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTIuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJTZWxlY3RpdmVseSByZW1vdmUgI2lmZGVmIHN0YXRlbWVudHMgZnJvbSBzb3VyY2VzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2RvdGF0LmF0L3Byb2cvdW5pZmRlZi8iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0OThjYWYzNDZmNmI3NzkzNDg4MjEwMTc0OWFkYTIzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VuaWZkZWYuYztlbmRsaW5lPTMyO21kNT02ZjRlZTgwODVkNmU2YWIwZjdjYjQzOTBlMWE5YzQ5NyBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy8ke0JQTn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImFlOGMwYjNiNGM0M2MxZjZiYzVmMzI0MTJhODIwODE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzY2UwZjAyZWNkY2RjNzIzYjI0NzU1NzU1NjNkZGIxOTJlOTg4Yzg4NmQzNjgyNjBiYzBhNjNhZWUzYWM0MDAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInVuaWZkZWYtKD9QPHB2ZXI+KChcZCtcLiopKykoPyFbYS1mMC05XXs2LH0pKS50YXIiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2Q2ZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjc5YmJhZjg5MjllYzhlZDM1OTExYjM1NzFmNWEyNDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJiOWI2MGZjMDIzMGIwZGIyYzhhMGUyYTgwZWMyOWYxYzEwYjQzZGM3ODM1NWFiYmE3OGFkZWRiYzJlMDNhMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZjYyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni42LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDlhZjEyNTY0ODUwNTUwM2IxMzllYmMyZDJjOWVlZTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWYzMTY0OTkzMjg3MmYwOTQ5NzFkNDY0NTNiMjFjNjBhNDE2NjE2NzBmOThhZmEzMzQwNjI0MjViNGFlYzQ3YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1GaXgtdGltZXJmZC1zeXNjYWxsLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmYmJlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK0Zyb20gNWQ0MTFmZDE0N2Q2NTJlOWQ3YmIyNTlmNDA0ODY5M2M2ZTQ3NDJhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjAgMTY6MzA6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVtY2hlY2svdGVzdHM6IEZpeCB0aW1lcmZkIHN5c2NhbGwgdGVzdAorCittb2Rlcm4gbGliYyBwcm92aWRlcyB0aGVzZSBmdW5jdGlvbnMsIG1vcmVvdmVyIHRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgd2UKK2FyZSA2NGJpdCB0aW1lX3Qgc2FmZS4gRmFsbGJhY2sgdG8gZXhpc3RpbmcgZGVmaW5pdGlvbnMgaWYgbGliYyBkb2VzIG5vdAoraGF2ZSB0aGUgaW1wbGVtZW50YXRpb24gb3Igc3lzY2FsbCBpcyBub3QgZGVmaW5lZAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC92YWxncmluZC9tYWlsbWFuL21lc3NhZ2UvMzY5NDM4OTcvXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysrCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKysKKyBtZW1jaGVjay90ZXN0cy9saW51eC90aW1lcmZkLXN5c2NhbGwuYyB8IDEwICsrKysrKysrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvbmZpZy5oLmluCisrKysgYi9jb25maWcuaC5pbgorQEAgLTMwMSw2ICszMDEsOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c252bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFWRV9TWVNfU1lTTlZMX0gKKyAKKysvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lcmZkLmg+IGhlYWRlciBmaWxlLiAqLworKyN1bmRlZiBIQVZFX1NZU19USU1FUkZEX0gKKysKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lLmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZFX1NZU19USU1FX0gKKyAKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDA5OCw2ICs0MDk4LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbICAgICAgIFwKKyAgICAgICAgIHN5cy9zeXNjYWxsLmggICAgXAorICAgICAgICAgc3lzL3N5c252bC5oICAgICBcCisgICAgICAgICBzeXMvdGltZS5oICAgICAgIFwKKysgICAgICAgIHN5cy90aW1lcmZkLmggICAgXAorICAgICAgICAgc3lzL3R5cGVzLmggICAgICBcCisgICAgICAgICBdKQorIAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvdGltZXJmZC1zeXNjYWxsLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3RpbWVyZmQtc3lzY2FsbC5jCitAQCAtNDUsNiArNDUsOSBAQAorICNpZiBkZWZpbmVkKEhBVkVfU1lTX1RJTUVfSCkKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjZW5kaWYKKysjaWYgZGVmaW5lZChIQVZFX1NZU19USU1FUkZEX0gpCisrI2luY2x1ZGUgPHN5cy90aW1lcmZkLmg+CisrI2VuZGlmCisgI2lmIGRlZmluZWQoSEFWRV9TWVNfVFlQRVNfSCkKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2VuZGlmCitAQCAtNTQsNyArNTcsOCBAQAorICAqIHRpbWVyZmRfKiBzeXN0ZW0gY2FsbCBudW1iZXJzIGludHJvZHVjZWQgaW4gMi42LjIzLiBUaGVzZSBjb25zdGFudHMgYXJlCisgICogbm90IHlldCBpbiB0aGUgZ2xpYmMgMi43IGhlYWRlcnMsIHRoYXQgaXMgd2h5IHRoZXkgYXJlIGRlZmluZWQgaGVyZS4KKyAgKi8KKy0jaWZuZGVmIF9fTlJfdGltZXJmZF9jcmVhdGUKKysjaWYgIWRlZmluZWQoSEFWRV9TWVNfVElNRVJGRF9IKQorKyNpZiAhZGVmaW5lZChfX05SX3RpbWVyZmRfY3JlYXRlKQorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgI2RlZmluZSBfX05SX3RpbWVyZmRfY3JlYXRlICAyODMKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorQEAgLTY3LDggKzcxLDEwIEBACisgI2Vycm9yIENhbm5vdCBkZXRlY3QgeW91ciBhcmNoaXRlY3R1cmUhCisgI2VuZGlmCisgI2VuZGlmCisrI2VuZGlmCisgCistI2lmbmRlZiBfX05SX3RpbWVyZmRfc2V0dGltZQorKyNpZiAhZGVmaW5lZChIQVZFX1NZU19USU1FUkZEX0gpCisrI2lmICFkZWZpbmVkKF9fTlJfdGltZXJmZF9zZXR0aW1lKQorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgI2RlZmluZSBfX05SX3RpbWVyZmRfc2V0dGltZSAyODYKKyAjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lIDI4NworQEAgLTg1LDcgKzkxLDcgQEAKKyAjZXJyb3IgQ2Fubm90IGRldGVjdCB5b3VyIGFyY2hpdGVjdHVyZSEKKyAjZW5kaWYKKyAjZW5kaWYKKy0KKysjZW5kaWYKKyAKKyAKKyAvKiBEZWZpbml0aW9ucyBmcm9tIGluY2x1ZGUvbGludXgvdGltZXJmZC5oICovCitAQCAtMTI3LDYgKzEzMyw3IEBAIHZvaWQgc2V0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAqdG1yLAorICAgdG1yLT50dl9uc2VjID0gKGxvbmcpICgxMDAwVUxMICogKHVzdGltZSAlIDEwMDAwMDBVTEwpKTsKKyB9CisgCisrI2lmICFkZWZpbmVkKEhBVkVfU1lTX1RJTUVSRkRfSCkKKyBpbnQgdGltZXJmZF9jcmVhdGUoaW50IGNsb2NraWQsIGludCBmbGFncykKKyB7CisgICByZXR1cm4gc3lzY2FsbChfX05SX3RpbWVyZmRfY3JlYXRlLCBjbG9ja2lkLCBmbGFncyk7CitAQCAtMTQyLDYgKzE0OSw3IEBAIGludCB0aW1lcmZkX2dldHRpbWUoaW50IHVmYywgc3RydWN0IGl0aW0KKyB7CisgICByZXR1cm4gc3lzY2FsbChfX05SX3RpbWVyZmRfZ2V0dGltZSwgdWZjLCBvdG1yKTsKKyB9CisrI2VuZGlmCisgCisgbG9uZyB3YWl0dG1yKGludCB0ZmQsIGludCB0aW1lbykKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW5vbmUtdGVzdHMtZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cC1hZGp1c3QtdG1wLXBhdGhzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1ub25lLXRlc3RzLWZkbGVha19jbXNnLnN0ZGVyci5leHAtYWRqdXN0LXRtcC1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQxOTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1ub25lLXRlc3RzLWZkbGVha19jbXNnLnN0ZGVyci5leHAtYWRqdXN0LXRtcC1wYXRocy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGY0MDUyOTdkMzM4MmNkOTgzOTFkMDJmMzk3ZTIzODdkYTFmNDI4NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgSmFuIDIwMjAgMTc6NTU6MzkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwOiBhZGp1c3QgL3RtcCBwYXRocworCitJbiBvZS1jb3JlLCAvdG1wIGlzIGxpbmtlZCB0byAvdmFyL3ZvbGF0aWxlL3RtcCBhbmQKK3ZhbGdyaW5kIG91dHB1dCBjaGFuZ2VzIGFjY29yZGluZ2x5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cCBiL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cAoraW5kZXggNmU1YTc5N2I5Li4wZWRlMWFiMTggMTAwNjQ0CistLS0gYS9ub25lL3Rlc3RzL2ZkbGVha19jbXNnLnN0ZGVyci5leHAKKysrKyBiL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cAorQEAgLTI1LDEwICsyNSwxMCBAQCBPcGVuIGZpbGUgZGVzY3JpcHRvciAuLi46IC9kZXYvbnVsbAorIAorIAorIEZJTEUgREVTQ1JJUFRPUlM6IDYgb3BlbiBhdCBleGl0LgorLU9wZW4gZmlsZSBkZXNjcmlwdG9yIC4uLjogL3RtcC9kYXRhMgorK09wZW4gZmlsZSBkZXNjcmlwdG9yIC4uLjogLi4uCisgICAgLi4uCisgCistT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAvdG1wL2RhdGExCisrT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAuLi4KKyAgICAuLi4KKyAKKyBPcGVuIEFGX1VOSVggc29ja2V0IC4uLjogPHVua25vd24+CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXRlc3RzLU1ha2UtcHRocmVhZF9kZXRhdGNoLWNhbGwtcG9ydGFibGUtYWNyb3NzLXBsYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXRlc3RzLU1ha2UtcHRocmVhZF9kZXRhdGNoLWNhbGwtcG9ydGFibGUtYWNyb3NzLXBsYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwN2Q4MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtdGVzdHMtTWFrZS1wdGhyZWFkX2RldGF0Y2gtY2FsbC1wb3J0YWJsZS1hY3Jvc3MtcGxhdC5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDkyZmNmNzVkNmQzOTAzZTQ1NDkyYjA0MWJmNGFkMDc3ODdkMmU1OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxOTo1MDowNCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMzogTWFrZSBwdGhyZWFkX2RldGFjaCgpIGNhbGwgcG9ydGFibGUKKyBhY3Jvc3MgcGxhdGZvcm1zCisKK3B0aHJlYWRfdCBpcyBvcGFxdWUgdHlwZSB0aGVyZWZvcmUgd2UgY2FuIG5vdCBhcHBseSBzaW1wbGUgYXJpdGhtZXRpYyB0bwordmFyaWFibGVzIG9mIHB0aHJlYWRfdCB0eXBlIHRoaXMgdGVzdCBuZWVkcyB0byBwYXNzIGEgaW52YWxpZCBwdGhyZWFkX3QKK2hhbmRsZSwgdHlwY2FzdGluZyB0byB1aW50cHRyX3Qgd29ya3MgdG9vIGFuZCBpcyBwb3J0YWJsZSBhY3Jvc3MgZ2xpYmMgYW5kCittdXNsCisKK0ZpeGVzCit8IHB0aF9kZXRhY2hlZDMuYzoyNDoyNTogZXJyb3I6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlICdzdHJ1Y3QgX19wdGhyZWFkJworfCAgICAyNCB8ICAgcHRocmVhZF9kZXRhY2godGhyZWFkICsgOCk7Cit8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgXgorCitbIGJ2YW5hc3NjaGU6IHJlZm9ybWF0dGVkIHBhdGNoIGRlc2NyaXB0aW9uIGFuZCBmaXhlZCB1cCBsaW5lIG51bWJlcnMgXQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD12YWxncmluZC5naXQ7YT1jb21taXQ7aD05MmZjZjc1ZDZkMzkwM2U0NTQ5MmIwNDFiZjRhZDA3Nzg3ZDJlNThhXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgICAgICAgICAgIHwgMyArKy0KKyBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMSB8IDQgKystLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworaW5kZXggYzAyZWVmMS4uZWZlYjE1YiAxMDA2NDQKKy0tLSBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKKysrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKK0BAIC00LDYgKzQsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxwdGhyZWFkLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorIAorIHN0YXRpYyB2b2lkKiB0aHJlYWRfZnVuYyh2b2lkKiBhcmcpCisgeworQEAgLTIxLDcgKzIyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorICAgcHRocmVhZF9kZXRhY2godGhyZWFkKTsKKyAKKyAgIC8qIEludm9rZSBwdGhyZWFkX2RldGFjaCgpIHdpdGggYW4gaW52YWxpZCB0aHJlYWQgSUQuICovCistICBwdGhyZWFkX2RldGFjaCh0aHJlYWQgKyA4KTsKKysgIHB0aHJlYWRfZGV0YWNoKChwdGhyZWFkX3QpKCh1aW50cHRyX3QpdGhyZWFkICsgOCkpOworIAorICAgZnByaW50ZihzdGRlcnIsICJGaW5pc2hlZC5cbiIpOworIAorZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAxIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDEKK2luZGV4IDU4NDEyZWMuLjhkZDU4YmEgMTAwNjQ0CistLS0gYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMQorKysrIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDEKK0BAIC0xLDExICsxLDExIEBACisgCisgcHRocmVhZF9kZXRhY2goKTogaW52YWxpZCB0aHJlYWQgSUQgMHguLi4uLi4uLgorICAgIGF0IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjEpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjIyKQorIAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiBwdGhyZWFkX2RldGFjaCAoZHJkX3B0aHJlYWRfaW50ZXJjZXB0cy5jOj8pCistICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjI0KQorKyAgIGJ5IDB4Li4uLi4uLi46IG1haW4gKHB0aF9kZXRhY2hlZDMuYzoyNSkKKyAKKyBGaW5pc2hlZC4KKyAKK2RpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMiBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyCitpbmRleCBiZGM1Y2Y4Li5lODJkZWUxIDEwMDY0NAorLS0tIGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDIKKysrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyCitAQCAtMiwxMiArMiwxMiBAQAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiB2Z0RyZF9zZXRfam9pbmFibGUgKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorICAgIGJ5IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjEpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjIyKQorIAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiB2Z0RyZF9zZXRfam9pbmFibGUgKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorICAgIGJ5IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjQpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjI1KQorIAorIEZpbmlzaGVkLgorIAorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Mjk3MmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi12YWxncmluZC1hZGp1c3Qtc3RkX2xpc3QtZXhwZWN0ZWQtb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA2ZTFlOTI2NWIwM2NmNTFkMDljMDI4ZDY1N2ZlODI2ZDcxNTZhNzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMyBNYXkgMjAxOSAxNzoyNjoyNiAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gdmFsZ3JpbmQ6IGFkanVzdCBzdGRfbGlzdCBleHBlY3RlZCBvdXRwdXQKLQotVGhlIHJ1bi1wdGVzdCBzY3JpcHQgdXNlcyBhIGN1c3RvbSAtLXlvY3RvLXB0ZXN0IG9wdGlvbgotdG8gY2hhbmdlIHRoZSBzdW1tYXJ5IHN0YXRpc3RpY3MgdGhhdCB2YWxncmluZCBpc3N1ZXMKLXRvIGEgZm9ybWF0IHRoYXQgbWF0Y2hlcyB3aGF0IHB0ZXN0LXJ1bm5lciBleHBlY3RzLgotCi1Pbmx5IHRoaXMgc3RkX2xpc3QgdGVzdCB3aGljaCBjaGVja3MgdGhhdCBzdHJjcHkoKSB3b3JrcwotcHJvcGVybHkgb24gVWJ1bnR1LTEyLjA0IGFuZCBsYXRlciBpcyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4KLUl0J3Mgbm9ybWFsIG91dHB1dCB3aGVuIGNhbGxlZCB3aXRoIC0teW9jdG8tcHRlc3QgaXMgYSBibGFuawotbGluZSBzbyBhZGp1c3QgdGhlIGV4cGVjdGVkIG91dHB1dC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtZb2N0byBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgotLS0tCi0gZHJkL3Rlc3RzL3N0ZF9saXN0LnN0ZGVyci5leHAgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kcmQvdGVzdHMvc3RkX2xpc3Quc3RkZXJyLmV4cCBiL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwCi1pbmRleCBkMTg3ODZmODAuLjhiMTM3ODkxNyAxMDA2NDQKLS0tLSBhL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwCi0rKysgYi9kcmQvdGVzdHMvc3RkX2xpc3Quc3RkZXJyLmV4cAotQEAgLTEsMyArMSBAQAotIAotLQotLUVSUk9SIFNVTU1BUlk6IDAgZXJyb3JzIGZyb20gMCBjb250ZXh0cyAoc3VwcHJlc3NlZDogMCBmcm9tIDApCi0tLSAKLTIuMTcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ODg2YzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBhNjU0N2ZjMTdjMTIwZGJkOTViODUyZjUwYjBjNGJkZWU0ZmVkYjlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6MjA6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIHB0aF9kZXRhY2hlZDMuYzogRGVyZWZlcmVuY2UgcHRocmVhZF90IGJlZm9yZSBhZGRpbmcKLSBvZmZzZXQgdG8gaXQKLQotRml4ZXMKLWVycm9yOiBpbnZhbGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSAnc3RydWN0IF9fcHRocmVhZCcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKLWluZGV4IGMwMmVlZjEuLjM1ZDQzYTYgMTAwNjQ0Ci0tLS0gYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCi0rKysgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCi1AQCAtMjEsNyArMjEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi0gICBwdGhyZWFkX2RldGFjaCh0aHJlYWQpOwotIAotICAgLyogSW52b2tlIHB0aHJlYWRfZGV0YWNoKCkgd2l0aCBhbiBpbnZhbGlkIHRocmVhZCBJRC4gKi8KLS0gIHB0aHJlYWRfZGV0YWNoKHRocmVhZCArIDgpOwotKyAgcHRocmVhZF9kZXRhY2goKHB0aHJlYWRfdCopKCZ0aHJlYWQgKyA4KSk7Ci0gCi0gICBmcHJpbnRmKHN0ZGVyciwgIkZpbmlzaGVkLlxuIik7Ci0gCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9yZW1vdmUtZm9yLWFhcmNoNjQgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9yZW1vdmUtZm9yLWFhcmNoNjQKaW5kZXggYWNmNGZkMS4uYTNhMGM2ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcmVtb3ZlLWZvci1hYXJjaDY0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3JlbW92ZS1mb3ItYWFyY2g2NApAQCAtMSwzICsxLDQgQEAKK2dkYnNlcnZlcl90ZXN0cy9oZ3RscwogY2FjaGVncmluZC90ZXN0cy9hbm4xCiBjYWxsZ3JpbmQvdGVzdHMvc2ltd29yazEKIGNhbGxncmluZC90ZXN0cy9zaW13b3JrMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvczM5MHhfdmVjX29wX3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9zMzkweF92ZWNfb3BfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWE2NzFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvczM5MHhfdmVjX29wX3QucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorczM5MHhfdmVjX29wX3QgaXMgbm90IG5lZWRlZCBhbnl3aGVyZSwgb25seSBlbGVtZW50cyBvZiBlbnVtIGFyZSBhY2Nlc3NlZAorcmVtb3ZpbmcgaXQgZW5zdXJlcyB0aGF0IHZhbGdyaW5kIGNhbiBiZSBidWlsdCB3aXRoIC1mbm8tY29tbW9uIG9wdGlvbgorCitGaXhlcworbGQ6IC4uLy4uL1ZFWC9saWJ2ZXgtYW1kNjQtbGludXguYShsaWJ2ZXhfYW1kNjRfbGludXhfYS1ndWVzdF9zMzkwX2hlbHBlcnMubyk6L3Vzci9zcmMvZGVidWcvdmFsZ3JpbmQvMy4xNS4wLXIwL2J1aWxkL1ZFWC8uLi8uLi92YWxncmluZC0zLjE1LjAvVkVYL3ByaXYvZ3Vlc3RfczM5MF9kZWZzLmg6Mjg5OiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGBzMzkweF92ZWNfb3BfdCc7IC4uLy4uL1ZFWC9saWJ2ZXhtdWx0aWFyY2gtYW1kNjQtbGludXguYShsaWJ2ZXhtdWx0aWFyY2hfYW1kNjRfbGludXhfYS1tdWx0aWFyY2hfbWFpbl9tYWluLm8pOi91c3Ivc3JjL2RlYnVnL3ZhbGdyaW5kLzMuMTUuMC1yMC9idWlsZC9WRVgvLi4vLi4vdmFsZ3JpbmQtMy4xNS4wL1ZFWC9wcml2L2d1ZXN0X3MzOTBfZGVmcy5oOjI4OTogZmlyc3QgZGVmaW5lZCBoZXJlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL1ZFWC9wcml2L2d1ZXN0X3MzOTBfZGVmcy5oCisrKysgYi9WRVgvcHJpdi9ndWVzdF9zMzkwX2RlZnMuaAorQEAgLTI4Niw3ICsyODYsNyBAQCBlbnVtIHsKKyAgICBTMzkwX1ZFQ19PUF9WRkNIRSA9IDE4LAorICAgIFMzOTBfVkVDX09QX1ZGVENJID0gMTksCisgICAgUzM5MF9WRUNfT1BfTEFTVCA9IDIwIC8vIHN1cHBvc2VkIHRvIGJlIHRoZSBsYXN0IGVsZW1lbnQgaW4gZW51bQorLX0gczM5MHhfdmVjX29wX3Q7CisrfTsKKyAKKyAvKiBBcmd1bWVudHMgb2YgczM5MHhfZGlydHloZWxwZXJfdmVjX29wKC4uLikgd2hpY2ggYXJlIHBhY2tlZCBpbnRvIG9uZQorICAgIFVMb25nIHZhcmlhYmxlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNS4wLmJiCmluZGV4IDYzZjk3MjkuLjc5NTQ0MzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTUuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjE1LjAuYmIKQEAgLTI5LDcgKzI5LDYgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIFwKQEAgLTM4LDggKzM3LDExIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbG9jYWwtZnVuY3Rpb25zLXN0YXRpYy10by1hdm9pZC1hc3NlbWJsZXItZXJyb3IucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXR1cm4tYS12YWxpZC1leGl0X2NvZGUtZnJvbS12Z19yZWd0ZXN0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFsZ3JpbmQtZmlsdGVyX3htbF9mcmFtZXMtZG8tbm90LWZpbHRlci11c3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi12YWxncmluZC1hZGp1c3Qtc3RkX2xpc3QtZXhwZWN0ZWQtb3V0cHV0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYWRqdXN0LXBhdGgtZmlsdGVyLWZvci0yLW1lbWNoZWNrLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3MzOTB4X3ZlY19vcF90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbm9uZS10ZXN0cy1mZGxlYWtfY21zZy5zdGRlcnIuZXhwLWFkanVzdC10bXAtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1NYWtlLXB0aHJlYWRfZGV0YXRjaC1jYWxsLXBvcnRhYmxlLWFjcm9zcy1wbGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjQ2ZTVmYmRjYmMzNTAyYTU5NzZhMzE3YTA4NjBhOTc1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxN2M3YTlkYThmNjBkZDA1Njk4YjNhN2JjNjAwMmU0ZWY5OTZmMTRjMTNmMGZmOTY2NzlhMTY4NzNlNzhhYjEiCkBAIC02Myw3ICs2NSw4IEBACiAjIERpc2FibGUgZm9yIHBvd2VycGM2NCB3aXRoIG11c2wKIENPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfcG93ZXJwYzY0ID0gJ251bGwnCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IG11bHRpbGliX2hlYWRlcgorIyBicm9rZW5zZWlwIGlzIHVuZm9ydHVuYXRlbHkgcmVxdWlyZWQgYnkgcHRlc3RzIHRvIHBhc3MKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdCBtdWx0aWxpYl9oZWFkZXIKIAogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRscyAtLXdpdGhvdXQtbXBpY2MiCiBFWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS1lbmFibGUtb25seTMyYml0JywnLS1lbmFibGUtb25seTY0Yml0J11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0iCkBAIC0xMTUsNyArMTE4LDcgQEAKICAgIGdkYiBsaWJnb21wIFwKICAgIHBlcmwgXAogICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAotICAgcHJvY3BzIHNlZCAke1BOfS1kYmciCisgICBwcm9jcHMgc2VkICR7UE59LWRiZyAke1BOfS1zcmMiCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCiAKICMgT25lIG9mIHRoZSB0ZXN0cyBjb250YWlucyBhIGJvZ3VzIGludGVycHJldGVyIHBhdGggb24gcHVycG9zZS4KQEAgLTIwMyw0ICsyMDYsMjQgQEAKICAgICAjIGhhbmRsZSBtdWx0aWxpYgogICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAogICAgIHNlZCAtaSBzOkBiaW5kaXJAOiR7YmluZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCisgICAgIyBUaGlzIHRlc3QgZmFpbHMgb24gdGhlIGhvc3QgYXMgd2VsbCwgdXNpbmcgYm90aCAzLjE1IGFuZCBnaXQgbWFzdGVyIChhcyBvZiBKYW4gMjQgMjAyMCkKKyAgICAjIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI4MzMKKyAgICBybSAke0R9JHtQVEVTVF9QQVRIfS9tZW1jaGVjay90ZXN0cy9vdmVybGFwLnZndGVzdAorCisgICAgIyBBcyB0aGUgYmluYXJ5IGlzbid0IHN0cmlwcGVkIG9yIGRlYnVnLXNwbGl0dGVkLCB0aGUgc291cmNlIGZpbGUgaXNuJ3QgZmV0Y2hlZAorICAgICMgdmlhIGR3YXJmc3JjZmlsZXMgZWl0aGVyLCBzbyBpdCBuZWVkcyB0byBiZSBpbnN0YWxsZWQgbWFudWFsbHkuCisgICAgbWtkaXIgLXAgJHtEfS91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0vJHtCUH0vbm9uZS90ZXN0cy8KKyAgICBpbnN0YWxsICR7U30vbm9uZS90ZXN0cy90bHMuYyAke0R9L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfS8ke0JQfS9ub25lL3Rlc3RzLwogfQorCisjIGF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgdGVzdHMgd2lsbCBmYWlsCisjIHJ1bi1zdHJpcC1yZWxvYy5zaCwgcnVuLXN0cmlwLXN0cm1lcmdlLnNoIGFuZCBzbyBvbiB3aWxsIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICJcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbm9uZS90ZXN0cy90bHMgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L25vbmUvdGVzdHMvdGxzLnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9ub25lL3Rlc3RzL3RsczIuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2hlbGdyaW5kL3Rlc3RzL3RjMDlfYmFkX3VubG9jayBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbWVtY2hlY2svdGVzdHMvbWFudWVsMSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMgXAorIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiCmluZGV4IGRmNzk4ZGYuLjdkMjdjNDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3htbHRvL3htbHRvXzAuMC4yOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIKQEAgLTEzLDYgKzEzLDggQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAorQ0xFQU5CUk9LRU4gPSAiMSIKKwogREVQRU5EUyA9ICJsaWJ4bWwyLW5hdGl2ZSIKIAogUkRFUEVORFNfJHtQTn0gPSAiZG9jYm9vay14bWwtZHRkNCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTkxMDE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE5MTAxOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY5MjI3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTkxMDE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJBQ1BJQ0EgdG9vbHMgZm9yIHRoZSBkZXZlbG9wbWVudCBhbmQgZGVidWcgb2YgQUNQSSB0YWJsZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlIChBQ1BJQ0EpIHByb2plY3QgcHJvdmlkZXMgYW4gXAotT1MtaW5kZXBlbmRlbnQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZCBcCi1Qb3dlciBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiAoQUNQSSkuIEFDUElDQSBjb2RlIGNvbnRhaW5zIHRob3NlIHBvcnRpb25zIG9mIFwKLUFDUEkgbWVhbnQgdG8gYmUgZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBob3N0IE9TIGFzIGEga2VybmVsLXJlc2lkZW50IFwKLXN1YnN5c3RlbSwgYW5kIGEgc21hbGwgc2V0IG9mIHRvb2xzIHRvIGFzc2lzdCBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcgXAotQUNQSSB0YWJsZXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFjcGljYS5vcmcvIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotCi1MSUNFTlNFID0gIkludGVsIHwgQlNEIHwgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zb3VyY2UvY29tcGlsZXIvYXNsY29tcGlsZS5jO2JlZ2lubGluZT03O2VuZGxpbmU9MTUwO21kNT1iNTY5MGQ5ZWY4ZDU0YjJiMWUxY2M5OGFhZDY0Y2Q4NyIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKLQotREVQRU5EUyA9ICJiaXNvbiBmbGV4IGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MzlhMDI1MmJjYjQyYzM4M2NlZWFlYjEyYWU5YTYwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjlkYjQwMTQ2MDBlNGI3NzFiMTFhODQyNzZkMmQ3NmViNDBmYjI2ZWFiYzg1ODY0ODUyZWYxZjk2MmJlOTVmIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peC0ke1BWfSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFjcGl4dHJhY3QgYWNwaWR1bXAiCi0KLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIFwKLSAgICAgICAgICAgICAgICBPUFRfQ0ZMQUdTPS1XYWxsIFwKLSAgICAgICAgICAgICAgICBERVNURElSPSR7RH0gXAotICAgICAgICAgICAgICAgIFBSRUZJWD0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgIElOU1RBTExESVI9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICBJTlNUQUxMRkxBR1M9IFwKLSAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsCi19Ci0KLSMgaWFzbCouYmIgaXMgYSBzdWJzZXQgb2YgdGhpcyByZWNpcGUsIHNvIFJSRVBMQUNFIGl0Ci1QUk9WSURFUyA9ICJpYXNsIgotUlBST1ZJREVTXyR7UE59ICs9ICJpYXNsIgotUlJFUExBQ0VTXyR7UE59ICs9ICJpYXNsIgotUkNPTkZMSUNUU18ke1BOfSArPSAiaWFzbCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMjAwMjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDIwMDIxNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmE5ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDIwMDIxNC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCitPUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKK1Bvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAorQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAorc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCitBQ1BJIHRhYmxlcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCisKK0xJQ0VOU0UgPSAiSW50ZWwgfCBCU0QgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NvdXJjZS9jb21waWxlci9hc2xjb21waWxlLmM7YmVnaW5saW5lPTc7ZW5kbGluZT0xNTA7bWQ1PTZhZGJjYjgxZTllZTZhZTUwYzU2OWI5NGZlMTJmN2M1IgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitERVBFTkRTID0gIm00LW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMzUwNWJhNjE3MGI3N2RiMTM5OWVhZTBlMmE5NTkxMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTc3YWI5Zjg1NTdjYTEwNGY2ZThmNDllZmFhOGVlYWQyOWY3OGNhMTFjYWRmYzg5ODkwMTI0NjllY2MwNzM4ZSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvZG93bmxvYWRzIgorCitTID0gIiR7V09SS0RJUn0vYWNwaWNhLXVuaXgtJHtQVn0iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhY3BpeHRyYWN0IGFjcGlkdW1wIgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBcCisgICAgICAgICAgICAgICAgT1BUX0NGTEFHUz0tV2FsbCBcCisgICAgICAgICAgICAgICAgREVTVERJUj0ke0R9IFwKKyAgICAgICAgICAgICAgICBQUkVGSVg9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICBJTlNUQUxMRElSPSR7YmluZGlyfSBcCisgICAgICAgICAgICAgICAgSU5TVEFMTEZMQUdTPSBcCisgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorfQorCisjIGlhc2wqLmJiIGlzIGEgc3Vic2V0IG9mIHRoaXMgcmVjaXBlLCBzbyBSUkVQTEFDRSBpdAorUFJPVklERVMgPSAiaWFzbCIKK1JQUk9WSURFU18ke1BOfSArPSAiaWFzbCIKK1JSRVBMQUNFU18ke1BOfSArPSAiaWFzbCIKK1JDT05GTElDVFNfJHtQTn0gKz0gImlhc2wiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKaW5kZXggMDM5Yjg2OC4uMWViYjMzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC0yNSw3ICsyNSw2IEBACiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIHBlcmwgc2VkIHNoYWRvdyB1dGlsLWxpbnV4LXNldHByaXYiCiAKLURFUEVORFNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIHZpcnR1YWwvbGliYy1sb2NhbGUiCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgXAogCWdsaWJjLWdjb252LWJpZzVoa3NjcyBcCiAJZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNS4wLmJiCmluZGV4IGVhZGM4MjIuLjhmZjllNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF81LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzUuMC5iYgpAQCAtMTIsNiArMTIsMTUgQEAKICAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCiAgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAwNjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDYgXAogICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMDc7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA3IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAwOTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDkgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTA7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEwIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTIgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEzIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDE0O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxNCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxNTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTUgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDE2IFwKICAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYnVpbGQtdGVzdHMucGF0Y2ggXApAQCAtMzgsNiArNDcsMjQgQEAKIFNSQ19VUklbcGF0Y2gwMDYuc2hhMjU2c3VtXSA9ICJkNjg1MjlhNmZmMjAxYjZmZjU5MTUzMThhYjEyZmMxNmI4YTBlYmI3N2ZkYTMzMDgzMDNmY2MxZTEzMzk4NDIwIgogU1JDX1VSSVtwYXRjaDAwNy5tZDVzdW1dID0gIjQxMTU2MGQ4MWZkZTJkYzViMTdiODNjM2YzYjU4YzZmIgogU1JDX1VSSVtwYXRjaDAwNy5zaGEyNTZzdW1dID0gIjE3YjQxZTdlZTM2NzNkODg4N2RkMjU5OTI0MTdhMzk4Njc3NTMzYWI4ODI3OTM4YWE0MWZhZDcwZGYxOWFmOWIiCitTUkNfVVJJW3BhdGNoMDA4Lm1kNXN1bV0gPSAiZGQ3Y2Y3YTc4NGQxODM4ODIyY2FkOGQ0MTkzMTU5OTEiCitTUkNfVVJJW3BhdGNoMDA4LnNoYTI1NnN1bV0gPSAiZWVjNjQ1ODg2MjJhODJhNTAyOWIyNzc2ZTIxOGE3NWEzNjQwYmVmNDk1M2YwOWQ2ZWUxZjQxOTk2NzBhZDdlMyIKK1NSQ19VUklbcGF0Y2gwMDkubWQ1c3VtXSA9ICJjMWIzZTkzN2NkNmRjY2JiN2ZkNzcyZjMyODEyYTBkYSIKK1NSQ19VUklbcGF0Y2gwMDkuc2hhMjU2c3VtXSA9ICJlZDNjYTIxNzY3MzAzZmMzZGU5MzkzNGFhNTI0YzJlOTIwNzg3YzUwNmI2MDFjYzQwYTQ4OTdkNGIwOTRkOTAzIgorU1JDX1VSSVtwYXRjaDAxMC5tZDVzdW1dID0gIjE5YjQxZTczYjAzNjAyZDBlMjYxYzQ3MWI1M2U2NzBjIgorU1JDX1VSSVtwYXRjaDAxMC5zaGEyNTZzdW1dID0gImQ2ZmJjMzI1ZjBiNWRjNTRkZGJlOGVlNDMwMjBiY2VkOGJkNTg5ZGRmZmVhNTlkMTI4ZGIxNGIyZTUyYThhMTEiCitTUkNfVVJJW3BhdGNoMDExLm1kNXN1bV0gPSAiNDE0MzM5MzMwYTM2MzQxMzcwODFhOTdmMmM4NjE1YTgiCitTUkNfVVJJW3BhdGNoMDExLnNoYTI1NnN1bV0gPSAiMmM0ZGUzMzJiOTFlYWY3OTdhYmJiZDZjNzk3MDk2OTBiNWNiZDQ4YjEyZThkZmU3NDgwOTZkYmQ3YmY0NzRlYSIKK1NSQ19VUklbcGF0Y2gwMTIubWQ1c3VtXSA9ICIxODcwMjY4ZjYyYjkwNzIyMWIwNzhhZDEwOWUxZmE5NCIKK1NSQ19VUklbcGF0Y2gwMTIuc2hhMjU2c3VtXSA9ICIyOTQzZWUxOTY4ODAxODI5NmYyYTA0ZGJmZTMwYjcxMzhiODg5NzAwZWZhOGZmMWMwNTI0YWYyNzFlMGVlMjMzIgorU1JDX1VSSVtwYXRjaDAxMy5tZDVzdW1dID0gIjQwZDkyM2FmNGI5NTJiMDE5ODNlZDRjODg5YWUyNjUzIgorU1JDX1VSSVtwYXRjaDAxMy5zaGEyNTZzdW1dID0gImY1ZDcxNzhkOGRhMzA3OTllMDFiODNhMDgwMjAxOGQ5MTNkNmFhOTcyZGQyZGRhZDNiOTI3ZjNmM2ViNzA5OWEiCitTUkNfVVJJW3BhdGNoMDE0Lm1kNXN1bV0gPSAiNTc4NTdiMjIwNTNjODE2NzY3N2U1ZTVhYzVjNjY2OWIiCitTUkNfVVJJW3BhdGNoMDE0LnNoYTI1NnN1bV0gPSAiNWQ2ZWVlNjUxNGVlNmUyMmE4N2JiYThkMjJiZTBhODYyMWEwYWUxMTkyNDZmMWM1YTlhMzVkYjFmNzJhZjU4OSIKK1NSQ19VUklbcGF0Y2gwMTUubWQ1c3VtXSA9ICJjNGM2ZWEyM2QwOWE3NGVhYTkzODU0MzhlNDhmZGYwMiIKK1NSQ19VUklbcGF0Y2gwMTUuc2hhMjU2c3VtXSA9ICJhNTE3ZGYyZGRhOTNiMjZkNWNiZjAwZWZmZWZlYTkzZTNhNGNjZDY2NTJmMTUyZjQxMDkxNzA1NDRlYmZhMDVlIgorU1JDX1VSSVtwYXRjaDAxNi5tZDVzdW1dID0gImE2ODJlZDZmYTJjMmU3YTdjM2JhNmJkZWFkYTA3ZmI1IgorU1JDX1VSSVtwYXRjaDAxNi5zaGEyNTZzdW1dID0gImZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQiCiAKIERFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKIERFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKaW5kZXggOGU5Yjc3OS4uZDU4ZjU1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKQEAgLTQsNyArNCw3IEBACiBMWjc3L0xaNzgtYmFzZWQgY29tcHJlc3NvcnMsIGFuZCBhcHByb2FjaGVzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUFBNIGZhbWlseSBvZiBzdGF0aXN0aWNhbCBjb21wcmVzc29ycy4iCiBIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2J6aXAyLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiYnppcDIiCitMSUNFTlNFID0gImJ6aXAyLTEuMC42IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9NDtlbmRsaW5lPTM3O21kNT02MDBhZjQzYzUwZjFmY2I4MmUzMmYxOWIzMmRmNDY2NCIKIAogU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL3B1Yi8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmVfMS4zLjU5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlXzEuMy41OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdmYThlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmVfMS4zLjU5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCi0KLVNVTU1BUlkgPSAiJHtTVU1NQVJZX2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXN9IgotREVTQ1JJUFRJT04gPSAiJHtERVNDUklQVElPTl9jaGtjb25maWctYWx0ZXJuYXRpdmVzfSIKLURFUEVORFMgPSAiIgotUFJPVklERVMgKz0gInZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotIyBUaGUgc3lzcm9vdCBicmFuY2ggaXMgMS4zLjU5ICsgc29tZSBnaXQgY29tbWl0cyBmcm9tIG1hc3RlciArIC0tc3lzcm9vdAotIyBzdXBwb3J0IGZvciBhbHRlcm5hdGl2ZXMuCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2VyZ290aC9jaGtjb25maWc7YnJhbmNoPXN5c3Jvb3QiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiY2hrY29uZmlnLSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi1TUkNSRVYgPSAiY2Q0MzdlY2JkODk4NmM4OTQ0NDJmOGZjZTFlMDA2MWUyMGYwNGRlZSIKLVBWID0gIjEuMy41OSske1NSQ1BWfSIKLQotaW5oZXJpdCBuYXRpdmUKLQotIyBXZSB3YW50IG91ciBuYXRpdmUgcmVjaXBlcyB0byBidWlsZCB1c2luZyB0aGUgdGFyZ2V0IHBhdGhzIHJhdGhlciB0aGFuIHBhdGhzCi0jIGludG8gdGhlIHN5c3Jvb3QsIGFzIHdlIG1heSB1c2UgdGhlbSB0byBjb25zdHJ1Y3QgdGhlIHJvb3Rmcy4gQXMgc3VjaCwgd2UKLSMgb25seSBhZGp1c3QgdGhlIHBhdGhzIHRvIG1hdGNoIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHRhcmdldCwgbm90IG5hdGl2ZS4KLW9iZXlfdmFyaWFibGVzICgpIHsKLQlzZWQgLWkgJ3MsQUxURVJOQVRJVkVTX1JPT1QsT1BLR19PRkZMSU5FX1JPT1QsJyAke1N9L2FsdGVybmF0aXZlcy5jCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgYWx0ZXJuYXRpdmVzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzIFwKLQkgICAgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMKLQotCWluc3RhbGwgLUQgLW0gMDc1NSBhbHRlcm5hdGl2ZXMgJHtEfSR7YmluZGlyfS9hbHRlcm5hdGl2ZXMKLQlpbnN0YWxsIC1EIC1tIDA2NDQgYWx0ZXJuYXRpdmVzLjggJHtEfSR7bWFuZGlyfS9tYW44L2FsdGVybmF0aXZlcy44Ci0KLQlsbiAtcyBhbHRlcm5hdGl2ZXMgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzCi0JbG4gLXMgYWx0ZXJuYXRpdmVzLjggJHtEfSR7bWFuZGlyfS9tYW44L3VwZGF0ZS1hbHRlcm5hdGl2ZXMuOAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9saW51eHN0ZGJhc2UoKSB7Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vbHNiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnL3JlcGxhY2VfY2FkZHJfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWcvcmVwbGFjZV9jYWRkcl90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmQxOTM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWcvcmVwbGFjZV9jYWRkcl90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotY2FkZHJfdCBpcyBhIGxlZ2FjeSBCU0QgdHlwZSB3aGljaCB3YXMgcmVqZWN0ZWQgYnkgdGhlIFBPU0lYIHN0YW5kYXJkLgotVXNlIHZvaWQgKiBpbnN0ZWFkLgotCi1zeXMvdW5pdHN0ZC5oIGlzIG5vdCBuZWVkZWQgYW5kIG1vcmVvdmVyIGl0cyBub3QgYXZhaWxhYmxlIG9uIGFsbCBDIGxpYnJhcnkKLWltcGxlbWVudGF0aW9ucyBlLmcuIG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IGNoa2NvbmZpZy0xLjMuNTgvYWx0ZXJuYXRpdmVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaGtjb25maWctMS4zLjU4Lm9yaWcvYWx0ZXJuYXRpdmVzLmMKLSsrKyBjaGtjb25maWctMS4zLjU4L2FsdGVybmF0aXZlcy5jCi1AQCAtMjIsNyArMjIsNiBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8c3lzL3VuaXN0ZC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjZGVmaW5lCUZMQUdTX1RFU1QJKDEgPDwgMCkKLUluZGV4OiBjaGtjb25maWctMS4zLjU4L2xldmVsZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNoa2NvbmZpZy0xLjMuNTgub3JpZy9sZXZlbGRiLmMKLSsrKyBjaGtjb25maWctMS4zLjU4L2xldmVsZGIuYwotQEAgLTQ0Miw3ICs0NDIsNyBAQCBpbnQgcGFyc2VTZXJ2aWNlSW5mbyhpbnQgZmQsIGNoYXIgKiBuYW1lCi0gICAgIGZzdGF0KGZkLCAmc2IpOwotIAotICAgICBidWZzdGFydCA9IG1tYXAoTlVMTCwgc2Iuc3Rfc2l6ZSwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICAgIGlmIChidWZzdGFydCA9PSAoKGNhZGRyX3QpIC0xKSkgewotKyAgICBpZiAoYnVmc3RhcnQgPT0gKCh2b2lkKikgLTEpKSB7Ci0gCWNsb3NlKGZkKTsKLSAJcmV0dXJuIC0xOwotICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnXzEuMy41OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjFkZDY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN5c3RlbSB0b29sIGZvciBtYWludGFpbmluZyB0aGUgL2V0Yy9yYyouZCBoaWVyYXJjaHkiCi1ERVNDUklQVElPTiA9ICJDaGtjb25maWcgaXMgYSBiYXNpYyBzeXN0ZW0gdXRpbGl0eS4gIEl0IHVwZGF0ZXMgYW5kIHF1ZXJpZXMgcnVubGV2ZWwgXAotaW5mb3JtYXRpb24gZm9yIHN5c3RlbSBzZXJ2aWNlcy4gIENoa2NvbmZpZyBtYW5pcHVsYXRlcyB0aGUgbnVtZXJvdXMgXAotc3ltYm9saWMgbGlua3MgaW4gL2V0Yy9yYy5kLCB0byByZWxpZXZlIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBvZiBzb21lIFwKLW9mIHRoZSBkcnVkZ2VyeSBvZiBtYW51YWxseSBlZGl0aW5nIHRoZSBzeW1ib2xpYyBsaW5rcy4iCi0KLVJFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlZlcnNpb24gMS41IHJlcXVpcmVzIHNlbGludXgiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9mZWRvcmEtc3lzdiIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgotCi1ERVBFTkRTID0gImxpYm5ld3QgcG9wdCIKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi0KLVBSID0gInI3IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7QlBOfS0ke1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2Noa2NvbmZpZy5naXQgXAotICAgICAgICAgICBmaWxlOi8vcmVwbGFjZV9jYWRkcl90LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ1JFViA9ICIzZTBiMzkwOWZmNjMyOGQyMzJiMjdiOWMzMmYxYTkzMDljNmNkMGE0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGdldHRleHQKLQotIyBNYWtlZmlsZSB1c2VzIFJQTV9PUFRfRkxBR1MgdG8gY29uc3RydWN0IENGTEFHUwotIwotRVhUUkFfT0VNQUtFID0gIlwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJ0JJTkRJUj0ke2Jhc2Vfc2JpbmRpcn0nIFwKLSAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCi0gICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKLSAgICAnQUxURElSPSR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcycgXAotICAgICdBTFREQVRBRElSPSR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzJyBcCi0iCi0KLWRvX3VucGFja1twb3N0ZnVuY3NdICs9ICJvYmV5X3ZhcmlhYmxlcyIKLWRvX3VucGFja1t2YXJkZXBzXSArPSAib2JleV92YXJpYWJsZXMiCi1vYmV5X3ZhcmlhYmxlcyAoKSB7Ci0Jc2VkIC1pIC1lICdzLC9ldGMsJHtzeXNjb25mZGlyfSw7IHMsL2xpYi9zeXN0ZW1kLCR7YmFzZV9saWJkaXJ9L3N5c3RlbWQsJyAke1N9L2xldmVsZGIuaAotCXNlZCAtaSAtZSAncywvZXRjL2FsdGVybmF0aXZlcywke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcywnIFwKLQkgICAgICAgLWUgJ3MsL3Zhci9saWIvYWx0ZXJuYXRpdmVzLCR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcywnIFwKLQkgICAgICAgLWUgJ3MsL3Vzci9zaGFyZS9sb2NhbGUsJHtkYXRhZGlyfS9sb2NhbGUsJyAke1N9L2FsdGVybmF0aXZlcy5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnSU5TVEFMTE5MU0RJUj0ke0R9JHtkYXRhZGlyfS9sb2NhbGUnIFwKLQkJJ0JJTkRJUj0ke3NiaW5kaXJ9JyBpbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jaGtjb25maWcuZAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tYWx0ZXJuYXRpdmVzICR7UE59LWFsdGVybmF0aXZlcy1kb2MiCi1TVU1NQVJZXyR7UE59LWFsdGVybmF0aXZlcyA9ICJNYWludGFpbiBzeW1ib2xpYyBsaW5rcyBkZXRlcm1pbmluZyBkZWZhdWx0IGNvbW1hbmRzIgotREVTQ1JJUFRJT05fJHtQTn0tYWx0ZXJuYXRpdmVzID0gImFsdGVybmF0aXZlcyBjcmVhdGVzLCByZW1vdmVzLCBtYWludGFpbnMgYW5kIGRpc3BsYXlzIFwKLWluZm9ybWF0aW9uIGFib3V0IHRoZSBzeW1ib2xpYyBsaW5rcyBjb21wcmlzaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtLiIKLVNVTU1BUllfJHtQTn0tYWx0ZXJuYXRpdmVzLWRvYyA9ICIke1NVTU1BUllfJHtQTn0tYWx0ZXJuYXRpdmVzfSAtIERvY3VtZW50YXRpb24gZmlsZXMiCi1ERVNDUklQVElPTl8ke1BOfS1hbHRlcm5hdGl2ZXMtZG9jID0gIiR7REVTQ1JJUFRJT05fJHtQTn0tYWx0ZXJuYXRpdmVzfSAgXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24uIgotUlBST1ZJREVTXyR7UE59LWFsdGVybmF0aXZlcyArPSAidXBkYXRlLWFsdGVybmF0aXZlcyIKLVJDT05GTElDVFNfJHtQTn0tYWx0ZXJuYXRpdmVzID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWRwa2ciCi1GSUxFU18ke1BOfS1hbHRlcm5hdGl2ZXMgPSAiJHtzYmluZGlyfS9hbHRlcm5hdGl2ZXMgJHtzYmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIFwKLQkJCSAgICAke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcyAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMiCi1GSUxFU18ke1BOfS1hbHRlcm5hdGl2ZXMtZG9jID0gIiR7bWFuZGlyfS9tYW44L2FsdGVybmF0aXZlcy44IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjgvdXBkYXRlLWFsdGVybmF0aXZlcy44IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTMwNTQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtQ1ZFLTIwMTYtMjAzNy0xLWJ5dGUtb3V0LW9mLWJvdW5kcy13cml0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NiArMCwwIEBACi1Gcm9tIGViZjlhMmQ3NzY0NzQxODE5MzZhNzIwY2U4MTFkNzJiYmQxZGEzYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXZlbCBSYWlza3VwIDxwcmFpc2t1cEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyNiBKYW4gMjAxNiAyMzoxNzo1NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNi0yMDM3IC0gMSBieXRlIG91dC1vZi1ib3VuZHMgd3JpdGUKLQotRW5zdXJlIHRoYXQgY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCBhbHdheXMgd29ya3Mgd2l0aCBkeW5hbWljYWxseQotYWxsb2NhdGVkIGJ1ZmZlciwgYW5kIHRoYXQgaXQgaGFzIHNpemUgb2YgYXQgbGVhc3QgMzIgYnl0ZXMuCi1UaGVuLCBhbnkgY2FsbCB0byBjcGlvX3NhZmVyX25hbWVfc3VmZml4IGlzIHNhZmUgKGl0IHJlcXVpcmVzIGF0Ci1sZWFzdCAyIGJ5dGVzIGluIHRoZSBidWZmZXIpLgotCi1BbHNvIGVuc3VyZSB0aGF0IGNfbmFtZXNpemUgaXMgYWx3YXlzIGNvcnJlY3RseSBpbml0aWFsaXplZCAoYnkKLWNwaW9fc2V0X2NfbmFtZSkgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yIHdoZW4gcmVhZGluZwotZmlsZV9oZHIuY19uYW1lc2l6ZSAocHJldmlvdXNseSBoYXBwZW5lZCBmb3IgdGFyIGFyY2hpdmVzKS4KLQotUmVmZXJlbmNlczoKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9idWctY3Bpb0BnbnUub3JnL21zZzAwNTQ1Lmh0bWwKLQotKiBzcmMvY29weWluLmMgKHF1ZXJ5X3JlbmFtZSk6IERyb3AgdGhlIGhhY2ssIGFzIHdlIG5vdyB3b3JrIHdpdGgKLWR5bmFtaWNhbGx5IGFsbG9jYXRlZCBidWZmZXIuICBVc2UgY3Bpb19zZXRfY19uYW1lLgotKGNyZWF0ZV9kZWZlcmVkX2xpbmtzX3RvX3NraXBwZWQpOiBVc2UgY3Bpb19zZXRfY19uYW1lIHJhdGhlciB0aGFuCi1tYW51YWwgYXNzaWdubWVudC4KLShyZWFkX25hbWVfZnJvbV9maWxlKTogTmV3IGZ1bmN0aW9uIHRvIGF2b2lkIEMmUC4KLShyZWFkX2luX29sZF9hc2NpaSwgcmVhZF9pbl9uZXdfYXNjaWksIHJlYWRfaW5fYmluYXJ5KTogVXNlCi1yZWFkX25hbWVfZnJvbV9maWxlLgotKHByb2Nlc3NfY29weV9pbik6IEluaXRpYWxpemUgZmlsZV9oZHIuY19uYW1lc2l6ZS4KLSogc3JjL2NvcHlvdXQuYyAocHJvY2Vzc19jb3B5X291dCk6IFVzZSBjcGlvX3NldF9jX25hbWUuCi0qIHNyYy9jcGlvaGRyLmggKGNwaW9fc2V0X2NfbmFtZSk6IE5ldyBwcm90b3R5cGUuCi0qIHNyYy90YXIuYyAocmVhZF9pbl90YXJfaGVhZGVyKTogVXNlIGNwaW9fc2V0X2NfbmFtZS4KLSogc3JjL3V0aWwuYyAoY3Bpb19zZXRfY19uYW1lKTogTmV3IGZ1bmN0aW9uIHRvIHNldAotZmlsZV9oZHItPmNfbmFtZSBhbmQgY19uYW1lc2l6ZSBmcm9tIGFyYml0cmFyeSBzdHJpbmcuCi0oY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCk6IFNvbWUgZG9jcyBmaXhlcy4KLSogdGVzdHMvaW5vdXQuYXQ6IEFsc28gdGVzdCBjb3B5LWluLCBhbmQgdHJ5IHZhcmlvdXMgZm9ybWF0cy4KLQotQ1ZFOiBDVkUtMjAxNi0yMDM3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NwaW8uZ2l0L2NvbW1pdC8/aWQ9ZDM2ZWM1ZjRlOTMxMzBlZmIyNGZiOTY3OGFhZmQ4OGU4MDcwMDk1Yl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jb3B5aW4uYyAgIHwgNjggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9jb3B5b3V0LmMgIHwgMTMgKysrKystLS0tLS0KLSBzcmMvY3Bpb2hkci5oICB8ICAxICsKLSBzcmMvdGFyLmMgICAgICB8IDEwICsrKysrLS0tLQotIHNyYy91dGlsLmMgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gdGVzdHMvaW5vdXQuYXQgfCAxOSArKysrKysrKysrKysrKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3B5aW4uYyBiL3NyYy9jb3B5aW4uYwotaW5kZXggY2RlOTExZS4uOTcyZjhhNiAxMDA2NDQKLS0tLSBhL3NyYy9jb3B5aW4uYwotKysrIGIvc3JjL2NvcHlpbi5jCi1AQCAtNzYsMjggKzc2LDcgQEAgcXVlcnlfcmVuYW1lKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCogZmlsZV9oZHIsIEZJTEUgKnR0eV9pbiwgRklMRSAqdHR5X291dCwKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSAgIGVsc2UKLS0gIC8qIERlYmlhbiBoYWNrOiBmaWxlX2hyZC5jX25hbWUgaXMgc29tZXRpbWVzIHNldCB0bwotLSAgICAgcG9pbnQgdG8gc3RhdGljIG1lbW9yeSBieSBjb2RlIGluIHRhci5jLiAgVGhpcwotLSAgICAgY2F1c2VzIGEgc2VnZmF1bHQuICBUaGlzIGhhcyBiZWVuIGZpeGVkIGFuZCBhbgotLSAgICAgYWRkaXRpb25hbCBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgZmlsZSBuYW1lCi0tICAgICBpcyBub3QgdG9vIGxvbmcgaGFzIGJlZW4gYWRkZWQuICAoUmVwb3J0ZWQgYnkKLS0gICAgIEhvcnN0IEtub2Jsb2NoLikgIFRoaXMgYnVnIGhhcyBiZWVuIHJlcG9ydGVkIHRvCi0tICAgICAiYnVnLWdudS11dGlsc0BwcmVwLmFpLm1pdC5lZHUiLiAoOTkvMS82KSAtQkVNICovCi0tICAgIHsKLS0gICAgICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCi0tCXsKLS0JICBmcmVlIChmaWxlX2hkci0+Y19uYW1lKTsKLS0JICBmaWxlX2hkci0+Y19uYW1lID0geHN0cmR1cCAobmV3X25hbWUuZHNfc3RyaW5nKTsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIGlmIChpc190YXJfZmlsZW5hbWVfdG9vX2xvbmcgKG5ld19uYW1lLmRzX3N0cmluZykpCi0tCSAgICBlcnJvciAoMCwgMCwgXygiJXM6IGZpbGUgbmFtZSB0b28gbG9uZyIpLAotLQkJICAgbmV3X25hbWUuZHNfc3RyaW5nKTsKLS0JICBlbHNlCi0tCSAgICBzdHJjcHkgKGZpbGVfaGRyLT5jX25hbWUsIG5ld19uYW1lLmRzX3N0cmluZyk7Ci0tCX0KLS0gICAgfQotKyAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBuZXdfbmFtZS5kc19zdHJpbmcpOwotICAgcmV0dXJuIDA7Ci0gfQotIAwKLUBAIC0zNDQsOCArMzIzLDcgQEAgY3JlYXRlX2RlZmVyZWRfbGlua3NfdG9fc2tpcHBlZCAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwKLSAJICAgIGRfcHJldi0+bmV4dCA9IGQtPm5leHQ7Ci0gCSAgZWxzZQotIAkgICAgZGVmZXJtZW50cyA9IGQtPm5leHQ7Ci0tCSAgZnJlZSAoZmlsZV9oZHItPmNfbmFtZSk7Ci0tCSAgZmlsZV9oZHItPmNfbmFtZSA9IHhzdHJkdXAoZC0+aGVhZGVyLmNfbmFtZSk7Ci0rCSAgY3Bpb19zZXRfY19uYW1lIChmaWxlX2hkciwgZC0+aGVhZGVyLmNfbmFtZSk7Ci0gCSAgZnJlZV9kZWZlcm1lbnQgKGQpOwotIAkgIGNvcHlpbl9yZWd1bGFyX2ZpbGUoZmlsZV9oZHIsIGluX2ZpbGVfZGVzKTsKLSAJICByZXR1cm4gMDsKLUBAIC0xMDY0LDYgKzEwNDIsMjIgQEAgcmVhZF9pbl9oZWFkZXIgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gICAgIH0KLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStyZWFkX25hbWVfZnJvbV9maWxlIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgZmQsIHVpbnRtYXhfdCBsZW4pCi0rewotKyAgc3RhdGljIGNoYXIgKnRtcF9maWxlbmFtZTsKLSsgIHN0YXRpYyBzaXplX3QgYnVmbGVuOwotKwotKyAgaWYgKGJ1ZmxlbiA8IGxlbikKLSsgICAgewotKyAgICAgIGJ1ZmxlbiA9IGxlbjsKLSsgICAgICB0bXBfZmlsZW5hbWUgPSB4cmVhbGxvYyAodG1wX2ZpbGVuYW1lLCBidWZsZW4pOwotKyAgICB9Ci0rCi0rICB0YXBlX2J1ZmZlcmVkX3JlYWQgKHRtcF9maWxlbmFtZSwgZmQsIGxlbik7Ci0rICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCB0bXBfZmlsZW5hbWUpOwotK30KLSsKLSAvKiBGaWxsIGluIEZJTEVfSERSIGJ5IHJlYWRpbmcgYW4gb2xkLWZvcm1hdCBBU0NJSSBmb3JtYXQgY3BpbyBoZWFkZXIgZnJvbQotICAgIGZpbGUgZGVzY3JpcHRvciBJTl9ERVMsIGV4Y2VwdCBmb3IgdGhlIG1hZ2ljIG51bWJlciwgd2hpY2ggaXMKLSAgICBhbHJlYWR5IGZpbGxlZCBpbi4gICovCi1AQCAtMTA5MCwxNCArMTA4NCw4IEBAIHJlYWRfaW5fb2xkX2FzY2lpIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotICAgZmlsZV9oZHItPmNfcmRldl9taW4gPSBtaW5vciAoZGV2KTsKLSAKLSAgIGZpbGVfaGRyLT5jX210aW1lID0gRlJPTV9PQ1RBTCAoYXNjaWlfaGVhZGVyLmNfbXRpbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBGUk9NX09DVEFMIChhc2NpaV9oZWFkZXIuY19uYW1lc2l6ZSk7Ci0gICBmaWxlX2hkci0+Y19maWxlc2l6ZSA9IEZST01fT0NUQUwgKGFzY2lpX2hlYWRlci5jX2ZpbGVzaXplKTsKLS0gIAotLSAgLyogUmVhZCBmaWxlIG5hbWUgZnJvbSBpbnB1dC4gICovCi0tICBpZiAoZmlsZV9oZHItPmNfbmFtZSAhPSBOVUxMKQotLSAgICBmcmVlIChmaWxlX2hkci0+Y19uYW1lKTsKLS0gIGZpbGVfaGRyLT5jX25hbWUgPSAoY2hhciAqKSB4bWFsbG9jIChmaWxlX2hkci0+Y19uYW1lc2l6ZSArIDEpOwotLSAgdGFwZV9idWZmZXJlZF9yZWFkIChmaWxlX2hkci0+Y19uYW1lLCBpbl9kZXMsIChsb25nKSBmaWxlX2hkci0+Y19uYW1lc2l6ZSk7Ci0rICByZWFkX25hbWVfZnJvbV9maWxlIChmaWxlX2hkciwgaW5fZGVzLCBGUk9NX09DVEFMIChhc2NpaV9oZWFkZXIuY19uYW1lc2l6ZSkpOwotIAotICAgLyogSFAvVVggY3BpbyBjcmVhdGVzIGFyY2hpdmVzIHRoYXQgbG9vayBqdXN0IGxpa2Ugb3JkaW5hcnkgYXJjaGl2ZXMsCi0gICAgICBidXQgZm9yIGRldmljZXMgaXQgc2V0cyBtYWpvciA9IDAsIG1pbm9yID0gMSwgYW5kIHB1dHMgdGhlCi1AQCAtMTE1MiwxNCArMTE0MCw4IEBAIHJlYWRfaW5fbmV3X2FzY2lpIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotICAgZmlsZV9oZHItPmNfZGV2X21pbiA9IEZST01fSEVYIChhc2NpaV9oZWFkZXIuY19kZXZfbWluKTsKLSAgIGZpbGVfaGRyLT5jX3JkZXZfbWFqID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX3JkZXZfbWFqKTsKLSAgIGZpbGVfaGRyLT5jX3JkZXZfbWluID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX3JkZXZfbWluKTsKLS0gIGZpbGVfaGRyLT5jX25hbWVzaXplID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKTsKLSAgIGZpbGVfaGRyLT5jX2Noa3N1bSA9IEZST01fSEVYIChhc2NpaV9oZWFkZXIuY19jaGtzdW0pOwotLSAgCi0tICAvKiBSZWFkIGZpbGUgbmFtZSBmcm9tIGlucHV0LiAgKi8KLS0gIGlmIChmaWxlX2hkci0+Y19uYW1lICE9IE5VTEwpCi0tICAgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGZpbGVfaGRyLT5jX25hbWVzaXplKTsKLS0gIHRhcGVfYnVmZmVyZWRfcmVhZCAoZmlsZV9oZHItPmNfbmFtZSwgaW5fZGVzLCAobG9uZykgZmlsZV9oZHItPmNfbmFtZXNpemUpOwotKyAgcmVhZF9uYW1lX2Zyb21fZmlsZSAoZmlsZV9oZHIsIGluX2RlcywgRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKSk7Ci0gCi0gICAvKiBJbiBTVlI0IEFTQ0lJIGZvcm1hdCwgdGhlIGFtb3VudCBvZiBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRoZSBoZWFkZXIKLSAgICAgIGlzIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgbG9uZy13b3JkLCBzbyB3ZSBtaWdodCBuZWVkIHRvIGRyb3AKLUBAIC0xMjA3LDE2ICsxMTg5LDkgQEAgcmVhZF9pbl9iaW5hcnkgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsCi0gICBmaWxlX2hkci0+Y19yZGV2X21pbiA9IG1pbm9yIChzaG9ydF9oZHItPmNfcmRldik7Ci0gICBmaWxlX2hkci0+Y19tdGltZSA9ICh1bnNpZ25lZCBsb25nKSBzaG9ydF9oZHItPmNfbXRpbWVzWzBdIDw8IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgIHwgc2hvcnRfaGRyLT5jX210aW1lc1sxXTsKLS0KLS0gIGZpbGVfaGRyLT5jX25hbWVzaXplID0gc2hvcnRfaGRyLT5jX25hbWVzaXplOwotICAgZmlsZV9oZHItPmNfZmlsZXNpemUgPSAodW5zaWduZWQgbG9uZykgc2hvcnRfaGRyLT5jX2ZpbGVzaXplc1swXSA8PCAxNgotICAgICAgICAgICAgICAgICAgICAgICB8IHNob3J0X2hkci0+Y19maWxlc2l6ZXNbMV07Ci0tCi0tICAvKiBSZWFkIGZpbGUgbmFtZSBmcm9tIGlucHV0LiAgKi8KLS0gIGlmIChmaWxlX2hkci0+Y19uYW1lICE9IE5VTEwpCi0tICAgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGZpbGVfaGRyLT5jX25hbWVzaXplKTsKLS0gIHRhcGVfYnVmZmVyZWRfcmVhZCAoZmlsZV9oZHItPmNfbmFtZSwgaW5fZGVzLCAobG9uZykgZmlsZV9oZHItPmNfbmFtZXNpemUpOwotKyAgcmVhZF9uYW1lX2Zyb21fZmlsZSAoZmlsZV9oZHIsIGluX2Rlcywgc2hvcnRfaGRyLT5jX25hbWVzaXplKTsKLSAKLSAgIC8qIEluIGJpbmFyeSBtb2RlLCB0aGUgYW1vdW50IG9mIHNwYWNlIGFsbG9jYXRlZCBpbiB0aGUgaGVhZGVyIGZvcgotICAgICAgdGhlIGZpbGVuYW1lIGlzIGBjX25hbWVzaXplJyByb3VuZGVkIHVwIHRvIHRoZSBuZXh0IHNob3J0LXdvcmQsCi1AQCAtMTI5Nyw2ICsxMjcyLDcgQEAgcHJvY2Vzc19jb3B5X2luICgpCi0gICAgICAgcmVhZF9wYXR0ZXJuX2ZpbGUgKCk7Ci0gICAgIH0KLSAgIGZpbGVfaGRyLmNfbmFtZSA9IE5VTEw7Ci0rICBmaWxlX2hkci5jX25hbWVzaXplID0gMDsKLSAKLSAgIGlmIChyZW5hbWVfYmF0Y2hfZmlsZSkKLSAgICAgewotZGlmZiAtLWdpdCBhL3NyYy9jb3B5b3V0LmMgYi9zcmMvY29weW91dC5jCi1pbmRleCAxZjA5ODdhLi5iYjM5NTU5IDEwMDY0NAotLS0tIGEvc3JjL2NvcHlvdXQuYwotKysrIGIvc3JjL2NvcHlvdXQuYwotQEAgLTY2MCw4ICs2NjAsNyBAQCBwcm9jZXNzX2NvcHlfb3V0ICgpCi0gCSAgY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCAoaW5wdXRfbmFtZS5kc19zdHJpbmcsIGZhbHNlLAotIAkJCQkgICFub19hYnNfcGF0aHNfZmxhZywgdHJ1ZSk7Ci0gI2lmbmRlZiBIUFVYX0NERgotLQkgIGZpbGVfaGRyLmNfbmFtZSA9IGlucHV0X25hbWUuZHNfc3RyaW5nOwotLQkgIGZpbGVfaGRyLmNfbmFtZXNpemUgPSBzdHJsZW4gKGlucHV0X25hbWUuZHNfc3RyaW5nKSArIDE7Ci0rCSAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsIGlucHV0X25hbWUuZHNfc3RyaW5nKTsKLSAjZWxzZQotIAkgIGlmICggKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl90YXIpICYmIChhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpICkKLSAJICAgIHsKLUBAIC02NzAsMTYgKzY2OSwxNSBAQCBwcm9jZXNzX2NvcHlfb3V0ICgpCi0gCQkgcHJvcGVybHkgcmVjcmVhdGUgdGhlIGRpcmVjdG9yeSBhcyBoaWRkZW4gKGluIGNhc2UgdGhlCi0gCQkgZmlsZXMgb2YgYSBkaXJlY3RvcnkgZ28gaW50byB0aGUgYXJjaGl2ZSBiZWZvcmUgdGhlCi0gCQkgZGlyZWN0b3J5IGl0c2VsZiAoZS5nIGZyb20gImZpbmQgLi4uIC1kZXB0aCAuLi4gfCBjcGlvIikpLiAgKi8KLS0JICAgICAgZmlsZV9oZHIuY19uYW1lID0gYWRkX2NkZl9kb3VibGVfc2xhc2hlcyAoaW5wdXRfbmFtZS5kc19zdHJpbmcpOwotLQkgICAgICBmaWxlX2hkci5jX25hbWVzaXplID0gc3RybGVuIChmaWxlX2hkci5jX25hbWUpICsgMTsKLSsgICAgICAgICAgICAgIGNwaW9fc2V0X2NfbmFtZSAoJmZpbGVfaGRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfY2RmX2RvdWJsZV9zbGFzaGVzIChpbnB1dF9uYW1lLmRzX3N0cmluZykpOwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAgIHsKLSAJICAgICAgLyogV2UgZG9uJ3QgbWFyayBDREYncyBpbiB0YXIgZmlsZXMuICBXZSBhc3N1bWUgdGhlICJoaWRkZW4iCi0gCQkgZGlyZWN0b3J5IHdpbGwgYWx3YXlzIGdvIGludG8gdGhlIGFyY2hpdmUgYmVmb3JlIGFueSBvZgotIAkJIGl0cyBmaWxlcy4gICovCi0tCSAgICAgIGZpbGVfaGRyLmNfbmFtZSA9IGlucHV0X25hbWUuZHNfc3RyaW5nOwotLQkgICAgICBmaWxlX2hkci5jX25hbWVzaXplID0gc3RybGVuIChpbnB1dF9uYW1lLmRzX3N0cmluZykgKyAxOwotKyAgICAgICAgICAgICAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsIGlucHV0X25hbWUuZHNfc3RyaW5nKTsKLSAJICAgIH0KLSAjZW5kaWYKLSAKLUBAIC04NjYsOCArODY0LDcgQEAgcHJvY2Vzc19jb3B5X291dCAoKQotICAgZmlsZV9oZHIuY19jaGtzdW0gPSAwOwotIAotICAgZmlsZV9oZHIuY19maWxlc2l6ZSA9IDA7Ci0tICBmaWxlX2hkci5jX25hbWVzaXplID0gMTE7Ci0tICBmaWxlX2hkci5jX25hbWUgPSBDUElPX1RSQUlMRVJfTkFNRTsKLSsgIGNwaW9fc2V0X2NfbmFtZSAoJmZpbGVfaGRyLCBDUElPX1RSQUlMRVJfTkFNRSk7Ci0gICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCi0gICAgIHdyaXRlX291dF9oZWFkZXIgKCZmaWxlX2hkciwgb3V0X2ZpbGVfZGVzKTsKLSAgIGVsc2UKLWRpZmYgLS1naXQgYS9zcmMvY3Bpb2hkci5oIGIvc3JjL2NwaW9oZHIuaAotaW5kZXggYjI5ZTZmYi4uZjRjNjNiZSAxMDA2NDQKLS0tLSBhL3NyYy9jcGlvaGRyLmgKLSsrKyBiL3NyYy9jcGlvaGRyLmgKLUBAIC0xMjksNSArMTI5LDYgQEAgc3RydWN0IGNwaW9fZmlsZV9zdGF0IC8qIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgQ1BJTyBoZWFkZXIgKi8KLSAgIGNoYXIgKmNfdGFyX2xpbmtuYW1lOwotIH07Ci0gCi0rdm9pZCBjcGlvX3NldF9jX25hbWUoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgY2hhciAqbmFtZSk7Ci0gCi0gI2VuZGlmIC8qIGNwaW9oZHIuaCAqLwotZGlmZiAtLWdpdCBhL3NyYy90YXIuYyBiL3NyYy90YXIuYwotaW5kZXggYTJjZTE3MS4uZTQxZjg5ZCAxMDA2NDQKLS0tLSBhL3NyYy90YXIuYwotKysrIGIvc3JjL3Rhci5jCi1AQCAtMjgyLDcgKzI4Miw3IEBAIHJlYWRfaW5fdGFyX2hlYWRlciAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2RlcykKLSAgICAgICBpZiAobnVsbF9ibG9jayAoKGxvbmcgKikgJnRhcl9yZWMsIFRBUlJFQ09SRFNJWkUpKQotICNlbmRpZgotIAl7Ci0tCSAgZmlsZV9oZHItPmNfbmFtZSA9IENQSU9fVFJBSUxFUl9OQU1FOwotKwkgIGNwaW9fc2V0X2NfbmFtZSAoZmlsZV9oZHIsIENQSU9fVFJBSUxFUl9OQU1FKTsKLSAJICByZXR1cm47Ci0gCX0KLSAjaWYgMAotQEAgLTMxNiw5ICszMTYsMTEgQEAgcmVhZF9pbl90YXJfaGVhZGVyIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotIAl9Ci0gCi0gICAgICAgaWYgKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl91c3RhcikKLS0JZmlsZV9oZHItPmNfbmFtZSA9IHN0YXNoX3Rhcl9maWxlbmFtZSAoTlVMTCwgdGFyX2hkci0+bmFtZSk7Ci0rICAgICAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBzdGFzaF90YXJfZmlsZW5hbWUgKE5VTEwsIHRhcl9oZHItPm5hbWUpKTsKLSAgICAgICBlbHNlCi0tCWZpbGVfaGRyLT5jX25hbWUgPSBzdGFzaF90YXJfZmlsZW5hbWUgKHRhcl9oZHItPnByZWZpeCwgdGFyX2hkci0+bmFtZSk7Ci0rICAgICAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBzdGFzaF90YXJfZmlsZW5hbWUgKHRhcl9oZHItPnByZWZpeCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJfaGRyLT5uYW1lKSk7Ci0rCi0gICAgICAgZmlsZV9oZHItPmNfbmxpbmsgPSAxOwotICAgICAgIGZpbGVfaGRyLT5jX21vZGUgPSBGUk9NX09DVEFMICh0YXJfaGRyLT5tb2RlKTsKLSAgICAgICBmaWxlX2hkci0+Y19tb2RlID0gZmlsZV9oZHItPmNfbW9kZSAmIDA3Nzc3OwotQEAgLTM5OCw3ICs0MDAsNyBAQCByZWFkX2luX3Rhcl9oZWFkZXIgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gCWNhc2UgQVJFR1RZUEU6Ci0gCSAgLyogT2xkIHRhciBmb3JtYXQ7IGlmIHRoZSBsYXN0IGNoYXIgaW4gZmlsZW5hbWUgaXMgJy8nIHRoZW4gaXQgaXMKLSAJICAgICBhIGRpcmVjdG9yeSwgb3RoZXJ3aXNlIGl0J3MgYSByZWd1bGFyIGZpbGUuICAqLwotLQkgIGlmIChmaWxlX2hkci0+Y19uYW1lW3N0cmxlbiAoZmlsZV9oZHItPmNfbmFtZSkgLSAxXSA9PSAnLycpCi0rCSAgaWYgKGZpbGVfaGRyLT5jX25hbWVbZmlsZV9oZHItPmNfbmFtZXNpemUgLSAxXSA9PSAnLycpCi0gCSAgICBmaWxlX2hkci0+Y19tb2RlIHw9IENQX0lGRElSOwotIAkgIGVsc2UKLSAJICAgIGZpbGVfaGRyLT5jX21vZGUgfD0gQ1BfSUZSRUc7Ci1kaWZmIC0tZ2l0IGEvc3JjL3V0aWwuYyBiL3NyYy91dGlsLmMKLWluZGV4IDZmZjYwMzIuLjRmM2MwNzMgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC5jCi0rKysgYi9zcmMvdXRpbC5jCi1AQCAtMTQxMCw4ICsxNDEwLDM0IEBAIHNldF9maWxlX3RpbWVzIChpbnQgZmQsCi0gICAgIHV0aW1lX2Vycm9yIChuYW1lKTsKLSB9Ci0gCi0rCi0rdm9pZAotK2NwaW9fc2V0X2NfbmFtZSAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgY2hhciAqbmFtZSkKLSt7Ci0rICBzdGF0aWMgc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0rICBzaXplX3QgbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0rCi0rICBpZiAoYnVmbGVuID09IDApCi0rICAgIHsKLSsgICAgICBidWZsZW4gPSBsZW47Ci0rICAgICAgaWYgKGJ1ZmxlbiA8IDMyKQotKyAgICAgICAgYnVmbGVuID0gMzI7Ci0rICAgICAgZmlsZV9oZHItPmNfbmFtZSA9IHhtYWxsb2MgKGJ1Zmxlbik7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGJ1ZmxlbiA8IGxlbikKLSsgICAgewotKyAgICAgIGJ1ZmxlbiA9IGxlbjsKLSsgICAgICBmaWxlX2hkci0+Y19uYW1lID0geHJlYWxsb2MgKGZpbGVfaGRyLT5jX25hbWUsIGJ1Zmxlbik7Ci0rICAgIH0KLSsKLSsgIGZpbGVfaGRyLT5jX25hbWVzaXplID0gbGVuOwotKyAgbWVtbW92ZSAoZmlsZV9oZHItPmNfbmFtZSwgbmFtZSwgbGVuKTsKLSt9Ci0rCi0gLyogRG8gd2UgaGF2ZSB0byBpZ25vcmUgYWJzb2x1dGUgcGF0aHMsIGFuZCBpZiBzbywgZG9lcyB0aGUgZmlsZW5hbWUKLS0gICBoYXZlIGFuIGFic29sdXRlIHBhdGg/ICAqLwotKyAgIGhhdmUgYW4gYWJzb2x1dGUgcGF0aD8gIEJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gbWFrZSBzdXJlIHRoYXQgdGhlCi0rICAgYWxsb2NhdGVkIE5BTUUgYnVmZmVyIGhhcyBjYXBhY2l0eSBhdCBsZWFzdCAyIGJ5dGVzLiAqLwotKwotIHZvaWQKLSBjcGlvX3NhZmVyX25hbWVfc3VmZml4IChjaGFyICpuYW1lLCBib29sIGxpbmtfdGFyZ2V0LCBib29sIGFic29sdXRlX25hbWVzLAotIAkJCWJvb2wgc3RyaXBfbGVhZGluZ19kb3RzKQotQEAgLTE0MjYsNiArMTQ1MiwxMCBAQCBjcGlvX3NhZmVyX25hbWVfc3VmZml4IChjaGFyICpuYW1lLCBib29sIGxpbmtfdGFyZ2V0LCBib29sIGFic29sdXRlX25hbWVzLAotIAkgICsrcDsKLSAgICAgICB9Ci0gICBpZiAocCAhPSBuYW1lKQotKyAgICAvKiBUaGUgJ3AnIHN0cmluZyBpcyBzaG9ydGVuZWQgdmVyc2lvbiBvZiAnbmFtZScgd2l0aCBvbmUgZXhjZXB0aW9uOyAgd2hlbgotKyAgICAgICB0aGUgJ25hbWUnIHBvaW50cyB0byBhbiBlbXB0eSBzdHJpbmcgKGJ1ZmZlciB3aGVyZSBuYW1lWzBdID09ICdcMCcpIHRoZQotKyAgICAgICAncCcgdGhlbiBwb2ludHMgdG8gc3RhdGljIHN0cmluZyAiLiIuICBTbyBjYWxsZXIgbmVlZHMgdG8gZW5zdXJlIHRoZXJlCi0rICAgICAgIGFyZSBhdCBsZWFzdCB0d28gYnl0ZXMgYXZhaWxhYmxlIGluICduYW1lJyBidWZmZXIgc28gbWVtbW92ZSBzdWNjZWVkcy4gKi8KLSAgICAgbWVtbW92ZSAobmFtZSwgcCwgKHNpemVfdCkoc3RybGVuIChwKSArIDEpKTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvaW5vdXQuYXQgYi90ZXN0cy9pbm91dC5hdAotaW5kZXggNjBjMzcxNi4uNzMwY2JkMiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2lub3V0LmF0Ci0rKysgYi90ZXN0cy9pbm91dC5hdAotQEAgLTM1LDcgKzM1LDIyIEBAIHdoaWxlIHJlYWQgTkFNRSBMRU5HVEgKLSBkbwotIAlnZW5maWxlIC0tbGVuZ3RoICRMRU5HVEggPiAkTkFNRQotIAllY2hvICROQU1FCi0tZG9uZSA8IGZpbGVsaXN0IHwKLS0gY3BpbyAtLXF1aWV0IC1vID4gYXJjaGl2ZV0pCi0rZG9uZSA8IGZpbGVsaXN0ID4gZmlsZWxpc3RfcmF3Ci0rCi0rZm9yIGZvcm1hdCBpbiBiaW4gb2RjIG5ld2MgY3JjIHRhciB1c3RhciBocGJpbiBocG9kYwotK2RvCi0rICAgIGNwaW8gLS1mb3JtYXQ9JGZvcm1hdCAtLXF1aWV0IC1vIDwgZmlsZWxpc3RfcmF3ID4gYXJjaGl2ZS4kZm9ybWF0Ci0rICAgIHJtIC1yZiBvdXRwdXQKLSsgICAgbWtkaXIgb3V0cHV0ICYmIGNkIG91dHB1dAotKyAgICBjcGlvIC1pIC0tcXVpZXQgPCAuLi9hcmNoaXZlLiRmb3JtYXQKLSsKLSsgICAgd2hpbGUgcmVhZCBmaWxlCi0rICAgIGRvCi0rICAgICAgICB0ZXN0IC1mICRmaWxlIHx8IGVjaG8gIiRmaWxlIG5vdCBmb3VuZCIKLSsgICAgZG9uZSA8IC4uL2ZpbGVsaXN0X3JhdwotKwotKyAgICBjZCAuLgotK2RvbmUKLStdKQotIAotIEFUX0NMRUFOVVAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtQ1ZFLTIwMTUtMTE5Ny5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtRml4LUNWRS0yMDE1LTExOTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOTk5MTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtQ1ZFLTIwMTUtMTE5Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi1Gcm9tIGRjZWU0ODlmODIxYzEyNjBhMDEzNmZjZGZkYjZmZjRkZDExMDg2YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBEZWMgMjAxNSAxNzo1ODowMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggQ1ZFLTIwMTUtMTE5NwotCi1BcHBseSBwYXRjaCBieSBWaXRlenNsYXYgQ2l6ZWsgb2YgU3VTRSB0byBmaXggQ1ZFLTIwMTUtMTE5Ny4KLVVwc3RyZWFtIGlzIGRvcm1hbnQgb3Igbm8gbG9uZ2VyIGV4aXN0aW5nLiBUbyByZXN0b3JlIHRoZSBvbGQKLWJlaGF2aW91ciB1c2UgLS1leHRyYWN0LW92ZXItc3ltbGlua3MgKENsb3NlczogIzc3NDY2OSkKLVRoaXMgaXNzdWUgaGFzIGJlZW4gZGlzY292ZXJlZCBieSBBbGV4YW5kZXIgQ2hlcmVwYW5vdi4KLUF1dGhvcjogVml0ZXpzbGF2IENpemVrIDx2Y2l6ZWtAc3VzZS5jej4KLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc3NDY2OQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUNWRTogQ1ZFLTIwMTUtMTE5NwotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZG9jL2NwaW8uMSAgIHwgIDEgKwotIHNyYy9jb3B5aW4uYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9leHRlcm4uaCB8ICAxICsKLSBzcmMvZ2xvYmFsLmMgfCAgMyArKysKLSBzcmMvbWFpbi5jICAgfCAgNyArKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9kb2MvY3Bpby4xIGIvZG9jL2NwaW8uMQotaW5kZXggMmE2ODI0MS4uZGM0Njc2YyAxMDA2NDQKLS0tLSBhL2RvYy9jcGlvLjEKLSsrKyBiL2RvYy9jcGlvLjEKLUBAIC00OSw2ICs0OSw3IEBAIGNwaW8gXC0gY29weSBmaWxlcyB0byBhbmQgZnJvbSBhcmNoaXZlcwotIFtcZkJcLVwtbm9cLXByZXNlcnZlXC1vd25lclxmUl0gW1xmQlwtXC1tZXNzYWdlPVxmSU1FU1NBR0VcZlJdCi0gW1xmQlwtXC1mb3JjZVwtbG9jYWxcZlJdIFtcZkJcLVwtbm9cLWFic29sdXRlXC1maWxlbmFtZXNcZlJdIFtcZkJcLVwtc3BhcnNlXGZSXQotIFtcZkJcLVwtb25seVwtdmVyaWZ5XC1jcmNcZlJdIFtcZkJcLVwtdG9cLXN0ZG91dFxmUl0gW1xmQlwtXC1xdWlldFxmUl0KLStbXGZCXC1cLWV4dHJhY3RcLW92ZXJcLXN5bWxpbmtzXGZSXQotIFtcZkJcLVwtcnNoXC1jb21tYW5kPVxmSUNPTU1BTkRcZlJdCi0gW1xmSXBhdHRlcm5cZlIuLi5dIFtcZkI8XGZSIFxmSWFyY2hpdmVcZlJdCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcHlpbi5jIGIvc3JjL2NvcHlpbi5jCi1pbmRleCBjZGU5MTFlLi4wNTNhZmU3IDEwMDY0NAotLS0tIGEvc3JjL2NvcHlpbi5jCi0rKysgYi9zcmMvY29weWluLmMKLUBAIC02OTUsNiArNjk1LDUxIEBAIGNvcHlpbl9saW5rIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZmlsZV9kZXMpCi0gICBmcmVlIChsaW5rX25hbWUpOwotIH0KLSAMCi0rCi0rc3RhdGljIGludAotK3BhdGhfY29udGFpbnNfc3ltbGluayhjaGFyICpwYXRoKQotK3sKLSsgIHN0cnVjdCBzdGF0IHN0OwotKyAgY2hhciAqc2xhc2g7Ci0rICBjaGFyICpuZXh0c2xhc2g7Ci0rCi0rICAvKiB3ZSBnb3QgTlVMTCBwb2ludGVyIG9yIGVtcHR5IHN0cmluZyAqLwotKyAgaWYgKCFwYXRoIHx8ICEqcGF0aCkgewotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBzbGFzaCA9IHBhdGg7Ci0rCi0rICB3aGlsZSAoKG5leHRzbGFzaCA9IHN0cmNocihzbGFzaCArIDEsICcvJykpICE9IE5VTEwpIHsKLSsgICAgc2xhc2ggPSBuZXh0c2xhc2g7Ci0rICAgICpzbGFzaCA9ICdcMCc7Ci0rCi0rICAgIGlmIChsc3RhdChwYXRoLCAmc3QpICE9IDApIHsKLSsgICAgICBpZiAoZXJybm8gPT0gRUxPT1ApIHsKLSsgICAgICAgIC8qIEVMT09QIC0gdG9vIG1hbnkgc3ltbGlua3MgKi8KLSsgICAgICAgICpzbGFzaCA9ICcvJzsKLSsgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgIH0gZWxzZSBpZiAoZXJybm8gPT0gRU5PTUVNKSB7Ci0rICAgICAgICAvKiBObyBtZW1vcnkgZm9yIGxzdGF0IC0gdGVybWluYXRlICovCi0rICAgICAgICB4YWxsb2NfZGllKCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIGNhbm5vdCBsc3RhdCBwYXRoIC0gZ2l2ZSB1cCAqLwotKyAgICAgICAgKnNsYXNoID0gJy8nOwotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgICBpZiAoU19JU0xOSyhzdC5zdF9tb2RlKSkgewotKyAgICAgICpzbGFzaCA9ICcvJzsKLSsgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgfQotKwotKyAgICAqc2xhc2ggPSAnLyc7Ci0rICB9Ci0rCi0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gY29weWluX2ZpbGUgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9maWxlX2RlcykKLSB7Ci1AQCAtMTQ2OCw2ICsxNTEzLDIzIEBAIHByb2Nlc3NfY29weV9pbiAoKQotIAl7Ci0gCSAgLyogQ29weSB0aGUgaW5wdXQgZmlsZSBpbnRvIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLiAgKi8KLSAKLSsgICAgICAgICAgLyogQ2FuIHdlIHdyaXRlIGZpbGVzIG92ZXIgc3ltbGlua3M/ICovCi0rICAgICAgICAgIGlmICghZXh0cmFjdF9vdmVyX3N5bWxpbmtzKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIGlmIChwYXRoX2NvbnRhaW5zX3N5bWxpbmsoZmlsZV9oZHIuY19uYW1lKSkKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIC8qIHNraXAgdGhlIGZpbGUgKi8KLSsgICAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3Qgd3JpdGUgb3ZlciBzeW1saW5rcy4gU2tpcHBpbmcgJXNcbiIsIGZpbGVfaGRyLmNfbmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgdGFwZV90b3NzX2lucHV0IChpbl9maWxlX2RlcywgZmlsZV9oZHIuY19maWxlc2l6ZSk7Ci0rICAgICAgICAgICAgICAgICAgdGFwZV9za2lwX3BhZGRpbmcgKGluX2ZpbGVfZGVzLCBmaWxlX2hkci5jX2ZpbGVzaXplKTsKLSsgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICAgIC8qIHRlcm1pbmF0ZSAqLwotKwkgICAgICAgICAgZXJyb3IgKDEsIDAsIF8oIkNhbid0IHdyaXRlIG92ZXIgc3ltbGlua3M6ICVzXG4iKSwgZmlsZV9oZHIuY19uYW1lKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsKLSAJICAvKiBEbyB3ZSBuZWVkIHRvIHJlbmFtZSB0aGUgZmlsZT8gKi8KLSAJICBpZiAocmVuYW1lX2ZsYWcgfHwgcmVuYW1lX2JhdGNoX2ZpbGUpCi0gCSAgICB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4dGVybi5oIGIvc3JjL2V4dGVybi5oCi1pbmRleCBlMjdkNjYyLi5kODY0YmRlIDEwMDY0NAotLS0tIGEvc3JjL2V4dGVybi5oCi0rKysgYi9zcmMvZXh0ZXJuLmgKLUBAIC05Niw2ICs5Niw3IEBAIGV4dGVybiBjaGFyIGlucHV0X2lzX3NwZWNpYWw7Ci0gZXh0ZXJuIGNoYXIgb3V0cHV0X2lzX3NwZWNpYWw7Ci0gZXh0ZXJuIGNoYXIgaW5wdXRfaXNfc2Vla2FibGU7Ci0gZXh0ZXJuIGNoYXIgb3V0cHV0X2lzX3NlZWthYmxlOwotK2V4dGVybiBib29sIGV4dHJhY3Rfb3Zlcl9zeW1saW5rczsKLSBleHRlcm4gaW50ICgqeHN0YXQpICgpOwotIGV4dGVybiB2b2lkICgqY29weV9mdW5jdGlvbikgKCk7Ci0gZXh0ZXJuIGNoYXIgKmNoYW5nZV9kaXJlY3Rvcnlfb3B0aW9uOwotZGlmZiAtLWdpdCBhL3NyYy9nbG9iYWwuYyBiL3NyYy9nbG9iYWwuYwotaW5kZXggNTdlNTA1YS4uMzM2ZmNlNCAxMDA2NDQKLS0tLSBhL3NyYy9nbG9iYWwuYwotKysrIGIvc3JjL2dsb2JhbC5jCi1AQCAtMTg3LDYgKzE4Nyw5IEBAIGJvb2wgdG9fc3Rkb3V0X29wdGlvbiA9IGZhbHNlOwotIC8qIFRoZSBuYW1lIHRoaXMgcHJvZ3JhbSB3YXMgcnVuIHdpdGguICAqLwotIGNoYXIgKnByb2dyYW1fbmFtZTsKLSAKLSsvKiBFeHRyYWN0IGZpbGVzIG92ZXIgc3ltYm9saWMgbGlua3MgKi8KLStib29sIGV4dHJhY3Rfb3Zlcl9zeW1saW5rczsKLSsKLSAvKiBBIHBvaW50ZXIgdG8gZWl0aGVyIGxzdGF0IG9yIHN0YXQsIGRlcGVuZGluZyBvbiB3aGV0aGVyCi0gICAgZGVyZWZlcmVuY2luZyBvZiBzeW1saW5rcyBpcyBkb25lIGZvciBpbnB1dCBmaWxlcy4gICovCi0gaW50ICgqeHN0YXQpICgpOwotZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCi1pbmRleCBhMTM4NjFmLi44N2NiMzA5IDEwMDY0NAotLS0tIGEvc3JjL21haW4uYwotKysrIGIvc3JjL21haW4uYwotQEAgLTU5LDYgKzU5LDcgQEAgZW51bSBjcGlvX29wdGlvbnMgewotICAgREVCVUdfT1BUSU9OLCAgICAgICAgICAgICAgICAgIAotICAgQkxPQ0tfU0laRV9PUFRJT04sICAgICAgICAgICAgIAotICAgVE9fU1RET1VUX09QVElPTiwKLSsgIEVYVFJBQ1RfT1ZFUl9TWU1MSU5LUywKLSAgIFJFTlVNQkVSX0lOT0RFU19PUFRJT04sCi0gICBJR05PUkVfREVWTk9fT1BUSU9OLAotICAgREVWSUNFX0lOREVQRU5ERU5UX09QVElPTgotQEAgLTI0Myw2ICsyNDQsOCBAQCBzdGF0aWMgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICBOXygiQ3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgd2hlcmUgbmVlZGVkIiksIEdSSUQrMSB9LAotICAgeyJuby1wcmVzZXJ2ZS1vd25lciIsIE5PX1BSRVNFUlZFX09XTkVSX09QVElPTiwgMCwgMCwKLSAgICBOXygiRG8gbm90IGNoYW5nZSB0aGUgb3duZXJzaGlwIG9mIHRoZSBmaWxlcyIpLCBHUklEKzEgfSwKLSsgIHsiZXh0cmFjdC1vdmVyLXN5bWxpbmtzIiwgRVhUUkFDVF9PVkVSX1NZTUxJTktTLCAwLCAwLAotKyAgIE5fKCJGb3JjZSB3cml0aW5nIG92ZXIgc3ltYm9saWMgbGlua3MiKSwgR1JJRCsxIH0sCi0gICB7InVuY29uZGl0aW9uYWwiLCAndScsIE5VTEwsIDAsCi0gICAgTl8oIlJlcGxhY2UgYWxsIGZpbGVzIHVuY29uZGl0aW9uYWxseSIpLCBHUklEKzEgfSwKLSAgIHsic3BhcnNlIiwgU1BBUlNFX09QVElPTiwgTlVMTCwgMCwKLUBAIC00MzIsNiArNDM1LDEwIEBAIGNyYyBuZXdjIG9kYyBiaW4gdXN0YXIgdGFyIChhbGwtY2FwcyBhbHNvIHJlY29nbml6ZWQpIiksIGFyZykpOwotICAgICAgIG5vX2Nob3duX2ZsYWcgPSB0cnVlOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIEVYVFJBQ1RfT1ZFUl9TWU1MSU5LUzogICAgICAgICAgICAgICAgICAgICAgICAvKiAtLWV4dHJhY3Qtb3Zlci1zeW1saW5rcyAqLwotKyAgICAgIGV4dHJhY3Rfb3Zlcl9zeW1saW5rcyA9IHRydWU7Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgJ28nOgkJLyogQ29weS1vdXQgbW9kZS4gICovCi0gICAgICAgaWYgKGNvcHlfZnVuY3Rpb24gIT0gMCkKLSAJVVNBR0VfRVJST1IgKCgwLCAwLCBfKCJNb2RlIGFscmVhZHkgZGVmaW5lZCIpKSk7Ci0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtRml4LXNlZ2ZhdWx0LXdpdGgtYXBwZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtc2VnZmF1bHQtd2l0aC1hcHBlbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOGIzMDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtc2VnZmF1bHQtd2l0aC1hcHBlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDMyZDk1ZmUwYzkwYzU5MzUyYTBjZTMxMDJmYzk4NjZjYmZiMGY2MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTZXJnZXkgUG96bnlha29mZiA8Z3JheUBnbnUub3JnPgotRGF0ZTogU2F0LCAxIERlYyAyMDE4IDExOjQwOjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBzaWdmYXVsdCB3aGVuIGFwcGVuZGluZyB0byBhcmNoaXZlCi0KLUJ1ZyByZXBvcnRlZCBieSBSb3NzIEJ1cnRvbi4gU2VlCi08aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1jcGlvLzIwMTgtMTEvbXNnMDAwMDAuaHRtbD4KLQotKiBzcmMvdXRpbC5jOiBLZWVwIHN0YXRpYyBjb3B5IG9mIHRoZSBidWZmZXIgcG9pbnRlcjsgYWx3YXlzCi1hc3NpZ24gaXQgdG8gZmlsZV9oZHItPmNfbmFtZS4gVXNlIHgycmVhbGxvYyBmb3IgbWVtb3J5IG1hbmFnZW1lbnQuCi0tLS0KLSBzcmMvdXRpbC5jIHwgMTcgKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91dGlsLmMgYi9zcmMvdXRpbC5jCi1pbmRleCAxMDQ4NmRjLi40ZTQ5MTI0IDEwMDY0NAotLS0tIGEvc3JjL3V0aWwuYwotKysrIGIvc3JjL3V0aWwuYwotQEAgLTE0MTMsMjIgKzE0MTMsMTMgQEAgc2V0X2ZpbGVfdGltZXMgKGludCBmZCwKLSB2b2lkCi0gY3Bpb19zZXRfY19uYW1lIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBjaGFyICpuYW1lKQotIHsKLSsgIHN0YXRpYyBjaGFyICpidWYgPSBOVUxMOwotICAgc3RhdGljIHNpemVfdCBidWZsZW4gPSAwOwotICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmFtZSkgKyAxOwotIAotLSAgaWYgKGJ1ZmxlbiA9PSAwKQotLSAgICB7Ci0tICAgICAgYnVmbGVuID0gbGVuOwotLSAgICAgIGlmIChidWZsZW4gPCAzMikKLS0gICAgICAgIGJ1ZmxlbiA9IDMyOwotLSAgICAgIGZpbGVfaGRyLT5jX25hbWUgPSB4bWFsbG9jIChidWZsZW4pOwotLSAgICB9Ci0tICBlbHNlIGlmIChidWZsZW4gPCBsZW4pCi0tICAgIHsKLS0gICAgICBidWZsZW4gPSBsZW47Ci0tICAgICAgZmlsZV9oZHItPmNfbmFtZSA9IHhyZWFsbG9jIChmaWxlX2hkci0+Y19uYW1lLCBidWZsZW4pOwotLSAgICB9Ci0tCi0rICB3aGlsZSAoYnVmbGVuIDwgbGVuKQotKyAgICBidWYgPSB4MnJlYWxsb2MgKGJ1ZiwgJmJ1Zmxlbik7Ci0rICBmaWxlX2hkci0+Y19uYW1lID0gYnVmOwotICAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBsZW47Ci0gICBtZW1tb3ZlIChmaWxlX2hkci0+Y19uYW1lLCBuYW1lLCBsZW4pOwotIH0KLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW9fMi4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzEzYmYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgY3BpbyBpcyBhIHByb2dyYW0gdG8gbWFuYWdlIGFyY2hpdmVzIG9mIGZpbGVzIgotREVTQ1JJUFRJT04gPSAiR05VIGNwaW8gaXMgYSB0b29sIGZvciBjcmVhdGluZyBhbmQgZXh0cmFjdGluZyBhcmNoaXZlcywgb3IgY29weWluZyBmaWxlcyBmcm9tIG9uZSBwbGFjZSB0byBcCi1hbm90aGVyLiBJdCBoYW5kbGVzIGEgbnVtYmVyIG9mIGNwaW8gZm9ybWF0cyBhcyB3ZWxsIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyIGZpbGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jcGlvLyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NwaW8vY3Bpby0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1DVkUtMjAxNS0xMTk3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ1ZFLTIwMTYtMjAzNy0xLWJ5dGUtb3V0LW9mLWJvdW5kcy13cml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1zZWdmYXVsdC13aXRoLWFwcGVuZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjMjA3NTYxYTg2YjYzODYyZWVhNGI4MzAwMzEzZTg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4YTM1ZTkyZGViM2M4NWQyNjlhMDA1OWEyN2Q0MTQwYTk2NjdhNjM2OTQ1OTI5OWQwOGMxN2Y3MTNhOTJlNzMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1FWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke3NiaW5kaXJ9IgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAotICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9LwotICAgICAgICBtdiAiJHtEfSR7YmluZGlyfS9jcGlvIiAiJHtEfSR7YmFzZV9iaW5kaXJ9L2NwaW8iCi0gICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCi0gICAgZmkKLQotICAgICMgQXZvaWQgY29uZmxpY3RzIHdpdGggdGhlIHZlcnNpb24gZnJvbSB0YXIKLSAgICBtdiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC44IiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC1jcGlvLjgiCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1ybXQiCi0KLUZJTEVTXyR7UE59LXJtdCA9ICIke3NiaW5kaXJ9L3JtdCoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNwaW8iCi1BTFRFUk5BVElWRV8ke1BOfS1ybXQgPSAicm10IgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFlbcm10XSA9ICI1MCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtybXRdID0gIiR7c2JpbmRpcn0vcm10IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlYThjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEzLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiR05VIGNwaW8gaXMgYSBwcm9ncmFtIHRvIG1hbmFnZSBhcmNoaXZlcyBvZiBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIkdOVSBjcGlvIGlzIGEgdG9vbCBmb3IgY3JlYXRpbmcgYW5kIGV4dHJhY3RpbmcgYXJjaGl2ZXMsIG9yIGNvcHlpbmcgZmlsZXMgZnJvbSBvbmUgcGxhY2UgdG8gXAorYW5vdGhlci4gSXQgaGFuZGxlcyBhIG51bWJlciBvZiBjcGlvIGZvcm1hdHMgYXMgd2VsbCBhcyByZWFkaW5nIGFuZCB3cml0aW5nIHRhciBmaWxlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY3Bpby8iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jcGlvL2NwaW8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODljNTQ1MmQ2NjdjMjNiNWVjZWIyMDZmNTAwMDgxMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODc0NzBkOWM5ODQzMTdmNjU4NTY3YzAzYmZlZmI2YjBjODI5ZmYxN2RiZjZiMGRlNDhkNzFhNGM4ZjNkYjg4IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtzYmluZGlyfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKKyAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfS8KKyAgICAgICAgbXYgIiR7RH0ke2JpbmRpcn0vY3BpbyIgIiR7RH0ke2Jhc2VfYmluZGlyfS9jcGlvIgorICAgICAgICBybWRpciAke0R9JHtiaW5kaXJ9LworICAgIGZpCisKKyAgICAjIEF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSB2ZXJzaW9uIGZyb20gdGFyCisgICAgbXYgIiR7RH0ke21hbmRpcn0vbWFuOC9ybXQuOCIgIiR7RH0ke21hbmRpcn0vbWFuOC9ybXQtY3Bpby44IgorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcm10IgorCitGSUxFU18ke1BOfS1ybXQgPSAiJHtzYmluZGlyfS9ybXQqIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjcGlvIgorQUxURVJOQVRJVkVfJHtQTn0tcm10ID0gInJtdCIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3JtdF0gPSAiNTAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcm10XSA9ICIke3NiaW5kaXJ9L3JtdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM1YzY2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9uIGRhZW1vbiBmb3IgZXhlY3V0aW5nIHByb2dyYW1zIGF0IHNldCB0aW1lcyIKLURFU0NSSVBUSU9OID0gIkNyb25pZSBjb250YWlucyB0aGUgc3RhbmRhcmQgVU5JWCBkYWVtb24gY3JvbmQgdGhhdCBydW5zIFwKLXNwZWNpZmllZCBwcm9ncmFtcyBhdCBzY2hlZHVsZWQgdGltZXMgYW5kIHJlbGF0ZWQgdG9vbHMuIEl0IGlzIGJhc2VkIG9uIHRoZSBcCi1vcmlnaW5hbCBjcm9uIGFuZCBoYXMgc2VjdXJpdHkgYW5kIGNvbmZpZ3VyYXRpb24gZW5oYW5jZW1lbnRzIGxpa2UgdGhlIFwKLWFiaWxpdHkgdG8gdXNlIHBhbSBhbmQgU0VMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbSIKLQotIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQotTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgotCi1TRUNUSU9OID0gInV0aWxzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC8ke0JQTn0vcmVsZWFzZXMvIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvY3JvbmllL3JlbGVhc2VzL2Rvd25sb2FkL2Nyb25pZS0ke1BWfS1maW5hbC9jcm9uaWUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb25kLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vY3JvbnRhYiBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9uZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vY3JvbmRfcGFtX2NvbmZpZy5wYXRjaCIKLVBBTV9ERVBTID0gImxpYnBhbSBsaWJwYW0tcnVudGltZSBwYW0tcGx1Z2luLWFjY2VzcyBwYW0tcGx1Z2luLWxvZ2ludWlkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjAyMzNiOTY5OTdlMTdhMTQyZTFmYmUwZDdjZTgyMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWY4OTcwNTU5Y2FkNDI2MmY4ZmZkN2VjNzJhYmY2ODJkMmRjY2UwNGZkZmI4ZjIwNmE3MWQ5NjU2NmFiYTg4MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCi0KLQkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQotCi0JIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKLQlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LwotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5Ci0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55Ci0KLQkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKLQotCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQotCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKLQljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgotCi0JIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCi0JY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgotCi0JY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZWY0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS41LmJiCkBAIC0wLDAgKzEsODQgQEAKK1NVTU1BUlkgPSAiQ3JvbiBkYWVtb24gZm9yIGV4ZWN1dGluZyBwcm9ncmFtcyBhdCBzZXQgdGltZXMiCitERVNDUklQVElPTiA9ICJDcm9uaWUgY29udGFpbnMgdGhlIHN0YW5kYXJkIFVOSVggZGFlbW9uIGNyb25kIHRoYXQgcnVucyBcCitzcGVjaWZpZWQgcHJvZ3JhbXMgYXQgc2NoZWR1bGVkIHRpbWVzIGFuZCByZWxhdGVkIHRvb2xzLiBJdCBpcyBiYXNlZCBvbiB0aGUgXAorb3JpZ2luYWwgY3JvbiBhbmQgaGFzIHNlY3VyaXR5IGFuZCBjb25maWd1cmF0aW9uIGVuaGFuY2VtZW50cyBsaWtlIHRoZSBcCithYmlsaXR5IHRvIHVzZSBwYW0gYW5kIFNFTGludXguIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC9jcm9uaWUvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20iCisKKyMgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtIExpY2Vuc2UKK0xJQ0VOU0UgPSAiSVNDICYgQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQyYTU5MjE3MDc2MGUxMzg2Yzc2OWUxMDQzYjM3MjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Nyb24uYztlbmRsaW5lPTIwO21kNT1iNDI1YzMzNDI2NTAyNjE3NzEyODM1M2ExNDI2MzNiNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcG9wZW4uYztiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1lZGQ1MDc0MmQ4ZGVmNzEyZTk0NzJkYmEzNTM2NjhhOSIKKworU0VDVElPTiA9ICJ1dGlscyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvJHtCUE59L3JlbGVhc2VzLyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS9yZWxlYXNlcy9kb3dubG9hZC9jcm9uaWUtJHtQVn0vY3JvbmllLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9uZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2Nyb250YWIgXAorICAgICAgICAgICBmaWxlOi8vY3JvbmQuc2VydmljZSBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL2Nyb25kX3BhbV9jb25maWcucGF0Y2giCitQQU1fREVQUyA9ICJsaWJwYW0gbGlicGFtLXJ1bnRpbWUgcGFtLXBsdWdpbi1hY2Nlc3MgcGFtLXBsdWdpbi1sb2dpbnVpZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1MWEzN2QwYjViZDAxNDQ4MTY3MjRiNDQ4Mjc0N2FkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlMzRjNzk1MDVlNTU0NDMyMzI4MTg1NDc0NGI5OTU1ZmYxNmIxNjBlZTU2OWY5ZGY3YzBkZGRhZTU3MjBlYWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0td2l0aC1hdWRpdCwtLXdpdGhvdXQtYXVkaXQsYXVkaXQsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0sJHtQQU1fREVQU30iCitQQUNLQUdFQ09ORklHW2FuYWNyb25dID0gIi0tZW5hYmxlLWFuYWNyb24sLS1kaXNhYmxlLWFuYWNyb24sYW5hY3JvbiIKKworSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCisKKwkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQorCisJIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKKwlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LworCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5CisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55CisKKwkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKKworCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQorCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKKwljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgorCisJIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCisJY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCisJY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCmluZGV4IDIxNDljYmUuLmUzODlkOGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwpAQCAtNSwxNCArNSwxNiBAQAogZG9jdW1lbnQgdHlwZXMuIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuY3Vwcy5vcmcvIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIERFUEVORFMgPSAiZ251dGxzIGxpYnBuZyBqcGVnIGRidXMgemxpYiBsaWJ1c2IxIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS1zb3VyY2UudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHNfc2VydmVyYmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHMtYXZvaWQtaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1lY2hvLW9ubHktaW4taW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9jdXBzIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtdm9sYXRpbGVzLmNvbmYgXAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyIKQEAgLTIyLDcgKzI0LDcgQEAKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGJpbmNvbmZpZyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcgbXVsdGlsaWJfc2NyaXB0CiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCiBHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBscGFkbWluIgpAQCAtNDUsMTAgKzQ3LDYgQEAKICAgICAgICAgICAgICAgIC0tZW5hYmxlLWRlYnVnIFwKICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWxybyBcCiAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJ1c2IgXAotICAgICAgICAgICAgICAgLS13aXRob3V0LXBocCBcCi0gICAgICAgICAgICAgICAtLXdpdGhvdXQtcGVybCBcCi0gICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAgICAgICAgICAgIC0td2l0aG91dC1qYXZhIFwKICAgICAgICAgICAgICAgIERTT0ZMQUdTPScke0xERkxBR1N9JyBcCiAgICAgICAgICAgICAgICAiCiAKQEAgLTcxLDYgKzY5LDcgQEAKIAogCSMgUmVtb3ZlIC92YXIvcnVuIGZyb20gcGFja2FnZSBhcyBjdXBzZCB3aWxsIHBvcHVsYXRlIGl0IG9uIHN0YXJ0dXAKIAlybSAtZnIgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorCXJtIC1mciAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nCiAJcm1kaXIgJHtEfS8ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9kcml2ZXIKIAogCSMgRml4IHRoZSBwYW0gY29uZmlndXJhdGlvbiBmaWxlIHBlcm1pc3Npb25zCkBAIC04MiwxOCArODEsMjAgQEAKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCdmYWxzZScsJ3RydWUnLGQpfTsgdGhlbgogCSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwogCSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMqCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jdXBzLXZvbGF0aWxlcy5jb25mIFwKKwkJICAgICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY3Vwcy5jb25mCisJZWxzZQorCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9jdXBzIFwKKwkJICAgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2N1cHMKIAlmaQogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tbGliICR7UE59LWxpYmltYWdlIgogCiBSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdwcm9jcHMnLCAnJywgZCl9IgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9jdXBzL2JhY2tlbmQgXAotCQkke2xpYmRpcn0vY3Vwcy9jZ2ktYmluIFwKLQkJJHtsaWJkaXJ9L2N1cHMvZmlsdGVyIFwKLQkJJHtsaWJkaXJ9L2N1cHMvbW9uaXRvciBcCi0JCSR7bGliZGlyfS9jdXBzL25vdGlmaWVyIFwKLQkJJHtsaWJkaXJ9L2N1cHMvZGFlbW9uIFwKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9L2N1cHMvIFwKIAkgICAgICAgIgogCiBGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYmN1cHMuc28uKiIKQEAgLTEwOSw3ICsxMTAsOSBAQAogICAgICAgICAgICAgICAgIgogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2N1cHMvY3Vwc2QuY29uZiIKIAorTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2N1cHMtY29uZmlnIgorCiBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImN1cHNfc3lzcm9vdF9wcmVwcm9jZXNzIgogY3Vwc19zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCXNlZCAtaSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2N1cHMtY29uZmlnIC1lICdzOmN1cHNfZGF0YWRpcj0uKjpjdXBzX2RhdGFkaXI9JHtkYXRhZGlyfS9jdXBzOicgLWUgJ3M6Y3Vwc19zZXJ2ZXJiaW49Lio6Y3Vwc19zZXJ2ZXJiaW49JHtsaWJkaXJ9L2N1cHM6JworCXNlZCAtaSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2N1cHMtY29uZmlnIC1lICdzOmN1cHNfZGF0YWRpcj0uKjpjdXBzX2RhdGFkaXI9JHtkYXRhZGlyfS9jdXBzOicgLWUgJ3M6Y3Vwc19zZXJ2ZXJiaW49Lio6Y3Vwc19zZXJ2ZXJiaW49JHtsaWJleGVjZGlyfS9jdXBzOicKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2YTY5ZjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDFmYjA3MTYyYTllZDE4N2NjY2YwNmUzNGM5YmY4NDFkMTVjNmU2NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogU3VuLCAzMCBKYW4gMjAxMSAxNjozNzoyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBkb24ndCB0cnkgdG8gcnVuIGdlbmVyYXRlZCBiaW5hcmllcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi0tLS0KLSBwcGRjL01ha2VmaWxlIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcGRjL01ha2VmaWxlIGIvcHBkYy9NYWtlZmlsZQotaW5kZXggZTU2Mzk4OC4uOTczZGQzZiAxMDA2NDQKLS0tLSBhL3BwZGMvTWFrZWZpbGUKLSsrKyBiL3BwZGMvTWFrZWZpbGUKLUBAIC0xODksOCArMTg5LDggQEAgZ2Vuc3RyaW5nczoJCWdlbnN0cmluZ3MubyBsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSBcCi0gCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBnZW5zdHJpbmdzIGdlbnN0cmluZ3MubyBcCi0gCQlsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSBcCi0gCQkkKEROU1NETElCUykgJChDT01NT05MSUJTKSAkKExJQlopCi0tCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgotLQkuL2dlbnN0cmluZ3MgPnNhbXBsZS5jCi0rIwllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KLSsjCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKLSAKLSAKLSAjCi1AQCAtMjA5LDkgKzIwOSw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpIGZvby5kcnYgZm9vLWZyLnBvCi0gCQkuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgJChMSUJHU1NBUEkpICQoU1NMTElCUykgJChETlNTRExJQlMpIFwKLSAJCSQoQ09NTU9OTElCUykgJChMSUJaKQotIAkkKENPREVfU0lHTikgLXMgIiQoQ09ERV9TSUdOX0lERU5USVRZKSIgJEAKLS0JZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgotLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC1JIC4uL2RhdGEgZm9vLmRydgotLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC16IC1JIC4uL2RhdGEgZm9vLmRydgotKyMJZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgotKyMJLi9wcGRjLXN0YXRpYyAtbCBlbixmciAtSSAuLi9kYXRhIGZvby5kcnYKLSsjCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLXogLUkgLi4vZGF0YSBmb28uZHJ2Ci0gCi0gCi0gIwotQEAgLTI0MCwxNyArMjQwLDE3IEBAIHBwZGktc3RhdGljOgkJcHBkYy1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKQotIAkJLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpICQoRE5TU0RMSUJTKSBcCi0gCQkkKENPTU1PTkxJQlMpICQoTElCWikKLSAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACi0tCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KLS0JJChSTSkgLXIgcHBkIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKLS0JLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIHNhbXBsZS5kcnYKLS0JLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCi0tCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSAtZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2Ci0tCWlmIGRpZmYgLXIgcHBkIHBwZDIgPi9kZXYvbnVsbDsgdGhlbiBcCi0tCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKLS0JZWxzZSBcCi0tCQllY2hvIFBQRCBpbXBvcnQgRkFJTEVEOyBcCi0tCQlleGl0IDE7IFwKLS0JZmkKLSsjCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KLSsjCSQoUk0pIC1yIHBwZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2Ci0rIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgc2FtcGxlLmRydgotKyMJLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCi0rIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgLWQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgotKyMJaWYgZGlmZiAtciBwcGQgcHBkMiA+L2Rldi9udWxsOyB0aGVuIFwKLSsjCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKLSsjCWVsc2UgXAotKyMJCWVjaG8gUFBEIGltcG9ydCBGQUlMRUQ7IFwKLSsjCQlleGl0IDE7IFwKLSsjCWZpCi0gCi0gCi0gIwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtdXNlLWVjaG8tb25seS1pbi1pbml0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtdXNlLWVjaG8tb25seS1pbi1pbml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYmJhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS11c2UtZWNoby1vbmx5LWluLWluaXQucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBhM2Y0ZDhiYTk3ZjQ2NjlhOTU5NDNhN2U2NWViNjFhYTQ0Y2U3OTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAxMyBEZWMgMjAxMiAxOTowMzo1MiAtMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gdXNlIGVjaG8gb25seSBpbiBpbml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNjaGVkdWxlci9jdXBzLnNoLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NoZWR1bGVyL2N1cHMuc2guaW4gYi9zY2hlZHVsZXIvY3Vwcy5zaC5pbgoraW5kZXggODlhYzM2ZC4uNjYxOGEwZiAxMDA2NDQKKy0tLSBhL3NjaGVkdWxlci9jdXBzLnNoLmluCisrKysgYi9zY2hlZHVsZXIvY3Vwcy5zaC5pbgorQEAgLTUwLDcgKzUwLDcgQEAgY2FzZSAiYHVuYW1lYCIgaW4KKyAJCUVDSE9fRVJST1I9OgorIAkJOzsKKyAKKy0JTGludXgqKQorKwlEaXNhYmxlTGludXgqKQorIAkJSVNfT049L2Jpbi90cnVlCisgCQlpZiB0ZXN0IC1mIC9ldGMvaW5pdC5kL2Z1bmN0aW9uczsgdGhlbgorIAkJCS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMi1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMjQ4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMi1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIDNlOWE5NjVkY2Q2NWFiMmQ0MGI3NTNiNmY3OTJhMWE0NTU5MTgyYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogU3VuLCAzMCBKYW4gMjAxMSAxNjozNzoyNyArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gZG9uJ3QgdHJ5IHRvIHJ1biBnZW5lcmF0ZWQgYmluYXJpZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KKworLS0tCisgcHBkYy9NYWtlZmlsZSB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHBkYy9NYWtlZmlsZSBiL3BwZGMvTWFrZWZpbGUKK2luZGV4IDMyZTJlMGIuLmYxNDc4ZDQgMTAwNjQ0CistLS0gYS9wcGRjL01ha2VmaWxlCisrKysgYi9wcGRjL01ha2VmaWxlCitAQCAtMTg2LDggKzE4Niw4IEBAIGdlbnN0cmluZ3M6CQlnZW5zdHJpbmdzLm8gbGliY3Vwc3BwZGMuYSAuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgXAorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoQUxMX0xERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKKyAJCWxpYmN1cHNwcGRjLmEgJChMSU5LQ1VQU1NUQVRJQykKKyAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACistCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgorLQkuL2dlbnN0cmluZ3MgPnNhbXBsZS5jCisrIwllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KKysjCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKKyAKKyAKKyAjCitAQCAtMjA1LDkgKzIwNSw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpIGZvby5kcnYgZm9vLWZyLnBvCisgCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChBTExfTERGTEFHUykgLW8gcHBkYy1zdGF0aWMgcHBkYy5vIGxpYmN1cHNwcGRjLmEgXAorIAkJJChMSU5LQ1VQU1NUQVRJQykKKyAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACistCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KKy0JLi9wcGRjLXN0YXRpYyAtbCBlbixmciAtSSAuLi9kYXRhIGZvby5kcnYKKy0JLi9wcGRjLXN0YXRpYyAtbCBlbixmciAteiAtSSAuLi9kYXRhIGZvby5kcnYKKysjCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KKysjCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLUkgLi4vZGF0YSBmb28uZHJ2CisrIwkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC16IC1JIC4uL2RhdGEgZm9vLmRydgorIAorIAorICMKK0BAIC0yMzUsMTcgKzIzNSwxNyBAQCBwcGRpLXN0YXRpYzoJCXBwZGMtc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKQorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoQUxMX0xERkxBR1MpIC1vIHBwZGktc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIFwKKyAJCSQoTElOS0NVUFNTVEFUSUMpCisgCSQoQ09ERV9TSUdOKSAtcyAiJChDT0RFX1NJR05fSURFTlRJVFkpIiAkQAorLQllY2hvIFRlc3RpbmcgUFBEIGltcG9ydGVyLi4uCistCSQoUk0pIC1yIHBwZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2CistCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSBzYW1wbGUuZHJ2CistCS4vcHBkaS1zdGF0aWMgLUkgLi4vZGF0YSAtbyBzYW1wbGUtaW1wb3J0LmRydiBwcGQvKgorLQkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgLWQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorLQlpZiBkaWZmIC1yIHBwZCBwcGQyID4vZGV2L251bGw7IHRoZW4gXAorLQkJZWNobyBQUEQgaW1wb3J0IE9LOyBcCistCWVsc2UgXAorLQkJZWNobyBQUEQgaW1wb3J0IEZBSUxFRDsgXAorLQkJZXhpdCAxOyBcCistCWZpCisrIwllY2hvIFRlc3RpbmcgUFBEIGltcG9ydGVyLi4uCisrIwkkKFJNKSAtciBwcGQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIHNhbXBsZS5kcnYKKysjCS4vcHBkaS1zdGF0aWMgLUkgLi4vZGF0YSAtbyBzYW1wbGUtaW1wb3J0LmRydiBwcGQvKgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIC1kIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKKysjCWlmIGRpZmYgLXIgcHBkIHBwZDIgPi9kZXYvbnVsbDsgdGhlbiBcCisrIwkJZWNobyBQUEQgaW1wb3J0IE9LOyBcCisrIwllbHNlIFwKKysjCQllY2hvIFBQRCBpbXBvcnQgRkFJTEVEOyBcCisrIwkJZXhpdCAxOyBcCisrIwlmaQorIAorIAorICMKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAzLWN1cHNfMS40LjYuYmItRml4LWJ1aWxkLW9uLXBwYzY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4YzdhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAzLWN1cHNfMS40LjYuYmItRml4LWJ1aWxkLW9uLXBwYzY0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gNjZjMjA3OWFlOTEzODllZTBmOWQ3MDRiZjBkMmNjY2Q1M2IyYzYwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDIyIEp1bCAyMDEyIDE2OjU0OjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBjdXBzXzEuNC42LmJiOiBGaXggYnVpbGQgb24gcHBjNjQKKworTWFrZSBDVVBTX1NFUlZFUkJJTiByZWxhdGl2ZSB0byBsaWJkaXIgb3RoZXJ3aXNlIG9uIDY0Yml0IGFyY2hlcworZS5nLiBwcGM2NCB3aGVyZSBiYXNlIGxpYmRpciBpcyBsaWI2NCB0aGlzIGRvZXMgbm90IGdvIHdlbGwKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorCitVcGRhdGUgb24gMjAxOTA5MDQ6CitSZWRlZmluZSBDVVBTX1NFUlZFUkJJTiB0byAiJGxpYmV4ZWNkaXIvY3VwcyIgd2hpY2ggc29sdmVzIGZpbGUgY29uZmxpY3Rpb24KK3doZW4gbXVsdGlsaWIgaXMgZW5hYmxlZC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQgfCAyICstCisgY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQgYi9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CitpbmRleCBiNzQwODNhLi45YTVhYmIyIDEwMDY0NAorLS0tIGEvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAorKysrIGIvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAorQEAgLTI3MCw3ICsyNzAsNyBAQCBjYXNlICIkaG9zdF9vc19uYW1lIiBpbgorIAkqKQorIAkJIyBBbGwgb3RoZXJzCisgCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKKy0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCisrCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKKyAJCTs7CisgZXNhYworIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggZDNkZjE0NS4uYmM2OGE2YyAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjQyMCw3ICs2NDIwLDcgQEAgY2FzZSAiJGhvc3Rfb3NfbmFtZSIgaW4KKyAJKikKKyAJCSMgQWxsIG90aGVycworIAkJSU5TVEFMTF9TWVNWPSJpbnN0YWxsLXN5c3YiCistCQlDVVBTX1NFUlZFUkJJTj0iJGV4ZWNfcHJlZml4L2xpYi9jdXBzIgorKwkJQ1VQU19TRVJWRVJCSU49IiRsaWJleGVjZGlyL2N1cHMiCisgCQk7OworIGVzYWMKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDA0LWN1cHMtZml4LW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTI2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gN2RiZGExODg3YWExOWFiNzIwYWZmMjIzMTJmNGNhZmYyZDU3NWY2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAzIE9jdCAyMDE4IDAwOjI3OjExICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBjdXBzOiBmaXggbXVsdGlsaWIgaW5zdGFsbCBmaWxlIGNvbmZsaWN0cworCitAQ1VQU19TRVJWRVJCSU5AIGlzICR7bGliZGlyfSByZWxhdGVkIHRoYXQgY2F1c2VzIG11bHRpbGliIGluc3RhbGwgZmlsZQorY29uZmxpY3QuIFJlbW92ZSBAQ1VQU19TRVJWRVJCSU5AIGZyb20gdGhlIGNvbW1lbnQgbGluZSBvZiBjdXBzLWZpbGVzLmNvbmYgdG8KK2F2b2lkIHRoZSBjb25mbGljdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmYvY3Vwcy1maWxlcy5jb25mLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4gYi9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgoraW5kZXggNGE3OGJhNi4uMDNjNjU4MiAxMDA2NDQKKy0tLSBhL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCisrKysgYi9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgorQEAgLTczLDcgKzczLDcgQEAgUGFnZUxvZyBAQ1VQU19MT0dESVJAL3BhZ2VfbG9nCisgI1JlcXVlc3RSb290IEBDVVBTX1JFUVVFU1RTQAorIAorICMgTG9jYXRpb24gb2YgaGVscGVyIHByb2dyYW1zLi4uCistI1NlcnZlckJpbiBAQ1VQU19TRVJWRVJCSU5ACisrI1NlcnZlckJpbgorIAorICMgU1NML1RMUyBrZXljaGFpbiBmb3IgdGhlIHNjaGVkdWxlci4uLgorICNTZXJ2ZXJLZXljaGFpbiBAQ1VQU19TRVJWRVJLRVlDSEFJTkAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODg4NWZhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1AQ1VQU19TRVJWRVJCSU5AIGlzICR7bGliZGlyfSByZWxhdGVkIHRoYXQgY2F1c2VzIG11bHRpbGliIGluc3RhbGwgZmlsZQotY29uZmxpY3QuIFJlbW92ZSBAQ1VQU19TRVJWRVJCSU5AIGZyb20gdGhlIGNvbW1lbnQgbGluZSBvZiBjdXBzLWZpbGVzLmNvbmYgdG8KLWF2b2lkIHRoZSBjb25mbGljdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25mL2N1cHMtZmlsZXMuY29uZi5pbiBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCi1pbmRleCA0YTc4YmE2Li4wM2M2NTgyIDEwMDY0NAotLS0tIGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KLSsrKyBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCi1AQCAtNzMsNyArNzMsNyBAQCBQYWdlTG9nIEBDVVBTX0xPR0RJUkAvcGFnZV9sb2cKLSAjUmVxdWVzdFJvb3QgQENVUFNfUkVRVUVTVFNACi0gCi0gIyBMb2NhdGlvbiBvZiBoZWxwZXIgcHJvZ3JhbXMuLi4KLS0jU2VydmVyQmluIEBDVVBTX1NFUlZFUkJJTkAKLSsjU2VydmVyQmluCi0gCi0gIyBTU0wvVExTIGtleWNoYWluIGZvciB0aGUgc2NoZWR1bGVyLi4uCi0gI1NlcnZlcktleWNoYWluIEBDVVBTX1NFUlZFUktFWUNIQUlOQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtdm9sYXRpbGVzLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy12b2xhdGlsZXMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWRlNzhlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtdm9sYXRpbGVzLmNvbmYKQEAgLTAsMCArMSBAQAorZCAgL3Zhci9sb2cvY3VwcyAwNzU1IHJvb3Qgcm9vdCAtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YzZhZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotTWFrZSBDVVBTX1NFUlZFUkJJTiByZWxhdGl2ZSB0byBsaWJkaXIgb3RoZXJ3aXNlIG9uIDY0Yml0IGFyY2hlcwotZS5nLiBwcGM2NCB3aGVyZSBiYXNlIGxpYmRpciBpcyBsaWI2NCB0aGlzIGRvZXMgbm90IGdvIHdlbGwKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotCi1VcGRhdGUgb24gMjAxOTA5MDQ6Ci1SZWRlZmluZSBDVVBTX1NFUlZFUkJJTiB0byAiJGxpYmV4ZWNkaXIvY3VwcyIgd2hpY2ggc29sdmVzIGZpbGUgY29uZmxpY3Rpb24KLXdoZW4gbXVsdGlsaWIgaXMgZW5hYmxlZC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBjdXBzLTEuNC42L2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTEuNC42Lm9yaWcvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAkyMDA5LTA0LTEyIDE2OjA0OjUxLjAwMDAwMDAwMCAtMDcwMAotKysrIGN1cHMtMS40LjYvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAkyMDEyLTA3LTIxIDEyOjEyOjA1Ljg5NjQwNTkyMyAtMDcwMAotQEAgLTM5Nyw3ICszOTcsNyBAQAotIAkqKQotIAkJIyBBbGwgb3RoZXJzCi0gCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKLS0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCi0rCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKLSAJCTs7Ci0gZXNhYwotIAotSW5kZXg6IGN1cHMtMS40LjYvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3Vwcy0xLjQuNi5vcmlnL2NvbmZpZ3VyZQkyMDEyLTA3LTIxIDEyOjEzOjM0LjUxMjQwNTk1MCAtMDcwMAotKysrIGN1cHMtMS40LjYvY29uZmlndXJlCTIwMTItMDctMjEgMTI6MTQ6MDUuNzI0NDA2MDE3IC0wNzAwCi1AQCAtMTExODEsNyArMTExODEsNyBAQAotIAkqKQotIAkJIyBBbGwgb3RoZXJzCi0gCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKLS0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCi0rCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKLSAJCTs7Ci0gZXNhYwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy91c2VfZWNob19vbmx5X2luX2luaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NmYxMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLUluZGV4OiBjdXBzLTEuNi4xL3NjaGVkdWxlci9jdXBzLnNoLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3Vwcy0xLjYuMS5vcmlnL3NjaGVkdWxlci9jdXBzLnNoLmluCi0rKysgY3Vwcy0xLjYuMS9zY2hlZHVsZXIvY3Vwcy5zaC5pbgotQEAgLTY3LDcgKzY3LDcgQEAgY2FzZSAiYHVuYW1lYCIgaW4KLSAJCUVDSE9fRVJST1I9OgotIAkJOzsKLSAKLS0JTGludXgqKQotKwlEaXNhYmxlTGludXgqKQotIAkJSVNfT049L2Jpbi90cnVlCi0gCQlpZiB0ZXN0IC1mIC9ldGMvaW5pdC5kL2Z1bmN0aW9uczsgdGhlbgotIAkJCS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdm9sYXRpbGVzLjk5X2N1cHMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdm9sYXRpbGVzLjk5X2N1cHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwZTE5ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy92b2xhdGlsZXMuOTlfY3VwcwpAQCAtMCwwICsxLDIgQEAKKyMgPHR5cGU+IDxvd25lcj4gPGdyb3VwPiA8bW9kZT4gPHBhdGg+IDxsaW5rc291cmNlPgorZCByb290IHJvb3QgMDc1NSAvdmFyL2xvZy9jdXBzIG5vbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTU1MzRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc2MzY4OWY3NzM1ZDNmZTk1YTI5NDMzOTcxODllNDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGY2MWFiNDQ5ZTQ3NDhhMjRjNmFiMzU1YjQ4MWZmNzY5MTI0N2ExNDBkMzI3YjJiNzUyNmZjZTM0YjdmOWFhOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTIzMGZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMy4xLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhZDg4OTdjOTdjZjRkOTBmMjBkYWM0MzE4ZjQ3NDIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiY2E5ZDg5NTA3ZTNmNjhjYmM4NDQ4MmZlNDZhZThkNTMzM2FmNWJjMmI5MDYxMzQ3YjIwMDcxODJhYzc3Y2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg2YzNkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PThhZjhlN2RjNzI3NWRjYTA1Y2U2YzllN2VjZTdhZWM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1kNGRkNmE2MmM1MDI3MTIzNThjYTE4NTUxZjk3ODc4MSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU0VDVElPTiA9ICJiYXNlIgotCi1DVkVfUFJPRFVDVCA9ICJnbnU6ZWQiCi0KLSMgTFNCIHN0YXRlcyB0aGF0IGVkIHNob3VsZCBiZSBpbiAvYmluLwotYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgotCi0jIFVwc3RyZWFtIHJlZ3VsYXJseSByZW1vdmVzIHByZXZpb3VzIHJlbGVhc2VzIGZyb20gaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZWQvCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvJHtCUH0udGFyLmx6IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDNhYWViNWViMDMyMTQyOTQ4ZDdhMmY5OGEyNDg5OWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ0NDg5YzBhZDdhMTA4YzUxNDI2MmRhMjhlNmMyYTQyNjk0NmZiNDA4YTM5NzdlZjFlZDM0MzA4YmRmZDE3NCIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWluaGVyaXQgdGV4aW5mbwotCi1kb19jb25maWd1cmUoKSB7Ci0JJHtTfS9jb25maWd1cmUKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgotCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgotCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLQlmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4MzAwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTYuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PTAyMjZhOGRkODhjNzZhZmJhNzczZjJmMGY3YzgzZjVlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1lYmQ0YWZmODZkYzlmYTUwMjdkNTViYzUxOTE3NDZiOSBcCisgICAgICAgICAgICAgICAgICAgICIKKworU0VDVElPTiA9ICJiYXNlIgorCitDVkVfUFJPRFVDVCA9ICJnbnU6ZWQiCisKKyMgTFNCIHN0YXRlcyB0aGF0IGVkIHNob3VsZCBiZSBpbiAvYmluLworYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgorCisjIFVwc3RyZWFtIHJlZ3VsYXJseSByZW1vdmVzIHByZXZpb3VzIHJlbGVhc2VzIGZyb20gaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZWQvCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvJHtCUH0udGFyLmx6IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWI0ODBkOTgyMjg5MDY0Y2EwNDBiYzVjNzVmY2VmZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2ZjMDdhMTRhYjA0OGE3NTg0NzNjZTIyMmU3ODRmYmYwMzE0ODViY2Q1NGE3NmY3NGFjZmVlMWYzOTBkOGIyYyIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2luaGVyaXQgdGV4aW5mbworCitkb19jb25maWd1cmUoKSB7CisJJHtTfS9jb25maWd1cmUKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgorCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgorCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCmluZGV4IDE1M2VhNTUuLmQ1YzkzMjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKQEAgLTE5LDcgKzE5LDcgQEAKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMiw3ICsyLDcgQEAgZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gQUNfSU5JVChldGh0b29sLCA1LjMsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCisgQUNfSU5JVChldGh0b29sLCA1LjQsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCiAgQUNfUFJFUkVRKDIuNTIpCiAgQUNfQ09ORklHX1NSQ0RJUihbZXRodG9vbC5jXSkKIC1BTV9JTklUX0FVVE9NQUtFKFtnbnVdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMTMzMWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKLURFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjNkMWM4MzViODYxOTEyZWEwZGZkNTJjZjY2YTJkYTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2QyZDhlYTM2MDQzMWEyZWEzNWZmNjFjMjc2YmNmMmFmZWUxYWQ5MDE2NjhhMGI1MGFlOWYxYzU4MTQ3NTZiZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJhc2gtY29tcGxldGlvbgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAotICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZWFmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS40LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmJiMjRhYTQxNGFiOWExMWZmNjZkMzUxYjViODQ5M2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIyNWE0NmI2MWJjNmUyNmY1NmRjYjk3M2ZjMjhhY2VhMTU5ZTJjMzJjOWQ2ZGE0MmMwZmE4ZDFhNjMzOTgyOSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJhc2gtY29tcGxldGlvbgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKaW5kZXggYWQzNjQyOS4uOWFhNzIzOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKQEAgLTYsOSArNiw5IEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2dyb3VwPWZpbmR1dGlscyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIAotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci54eiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcwogCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJmaW5kIHhhcmdzIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDY0ZDE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gODZkYjJhNWYzYjdlZjgxMTNlNTM4NGI0ZTAyZDJiMjk5Yzg3YTA0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCi0KLWxvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKLXdoaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KLXByb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bwotY29yZXV0aWxzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBnbC9saWIvTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nbC9saWIvTWFrZWZpbGUuYW0gYi9nbC9saWIvTWFrZWZpbGUuYW0KLWluZGV4IGE5ZTJmZTQuLjFjNmVhOWMgMTAwNjQ0Ci0tLS0gYS9nbC9saWIvTWFrZWZpbGUuYW0KLSsrKyBiL2dsL2xpYi9NYWtlZmlsZS5hbQotQEAgLTEyMzQsNyArMTIzNCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAotIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKLSAJICAgIGRhcndpbls1Nl0qKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKLSsJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAotIAkgICAgKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtZmluZC1tYWtlLWRlbGV0ZS1ob25vdXItdGhlLWlnbm9yZV9yZWFkZGlyX3JhY2Utb3B0aS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTcwNDczLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLUZyb20gYTNmNDgyMWM0YTNmNzIzZDIxYzkyOThkNTRiZWU4YTY1NmJmZDdmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIFZvZWxrZXIgPG1haWxAYmVybmhhcmQtdm9lbGtlci5kZT4KLURhdGU6IFR1ZSwgMzAgSmFuIDIwMTggMjM6MzA6MDkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZmluZDogbWFrZSAtZGVsZXRlIGhvbm91ciB0aGUgLWlnbm9yZV9yZWFkZGlyX3JhY2Ugb3B0aW9uCi0KLSogZmluZC9wcmVkLmMgKHByZWRfZGVsZXRlKTogUmV0dXJuIHRydWUgd2hlbiB0aGUgLWlnbm9yZV9yZWFkZGlyX3JhY2UKLW9wdGlvbiBpcyBhY3RpdmUgYW5kIHVubGlua2F0KCkgY2FtZSBiYWNrIHdpdGggRU5PRU5ULgotKiBkb2MvZmluZC50ZXhpIChPcHRpb24gLWlnbm9yZV9yZWFkZGlyX3JhY2UpOiBEb2N1bWVudCB0aGUgY2hhbmdlLgotKEFjdGlvbiAtZGVsZXRlKTogTGlrZXdpc2UuCi0qIGZpbmQvZmluZC4xOiBMaWtld2lzZS4KLSogTkVXUyAoQnVnIEZpeGVzKTogTWVudGlvbiB0aGUgZml4LgotCi1Gb3Igbm93LCBpdCBzZWVtcyBhIGJpdCBoYXJkIHRvIGFkZCBhIHByb3BlciB0ZXN0IGZvciB0aGlzLAotc28gdGhlIGZvbGxvd2luZyBzaGVsbCBzbmlwcGV0IGRlbW9uc3RyYXRlcyB0aGUgcmFjZToKLQotICAkIHNlcSAxMCB8IHhhcmdzIHRvdWNoCi0gICQgZW52IHRpbWUgLWYgJ2ZpbmQgZXhpdCBzdGF0dXM6ICV4XG5maW5kIHRpbWU6ICVlJyBcCi0gICAgICBmaW5kIC1pZ25vcmVfcmVhZGRpcl9yYWNlIC10eXBlIGYgXAotICAgICAgICAtZGVsZXRlIFwKLSAgICAgICAgLWV4ZWMgc2ggLWMgJ3NsZWVwICQoYmFzZW5hbWUge30pJyBcOyBcCi0gICAgICAgIC1wcmludGYgJ2ZpbmQgZGVsZXRlZDogJXBcbicgXAotICAgICAgICAmIFwKLSAgICBzbGVlcCAyMDsgXAotICAgIHNlcSAxMCB8IHhhcmdzIHJtIC1mdjsgXAotICAgIHdhaXQgJCEKLQotUmVwb3J0ZWQgYnkgQWxleGFuZGVyIEdvbHViZXYgaW4KLWh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Mjk4MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBORVdTICAgICAgICAgIHwgIDQgKysrKwotIGRvYy9maW5kLnRleGkgfCAxNSArKysrKysrKysrKysrKy0KLSBmaW5kL2ZpbmQuMSAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwotIGZpbmQvcHJlZC5jICAgfCAgNiArKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCA2NjBjMjQxLi5iODZlYzFlIDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTQyLDYgKzQyLDEwIEBAIFVwZGF0ZWQgdGhlIERhbmlzaCB0cmFuc2xhdGlvbi4KLSAKLSAqKiBCdWcgRml4ZXM6Ci0gCi0rIzUyOTgxOiBmaW5kOiB0aGUgJy1kZWxldGUnIGFjdGlvbiBubyBsb25nZXIgY29tcGxhaW5zIGFib3V0IGRpc2FwcGVhcmVkIGZpbGVzCi0rICAgICAgICB3aGVuIHRoZSAnLWlnbm9yZV9yZWFkZGlyX3JhY2UnIG9wdGlvbiBpcyBnaXZlbiwgdG9vLiAgVGhhdCBhY3Rpb24gd2lsbAotKyAgICAgICAgYWxzbyByZXR1cm5zIHRydWUgaW4gc3VjaCBhIGNhc2Ugbm93LgotKwotIEFwcGxpZWQgcGF0Y2ggIzg2ODg6IFNwZWxsaW5nIGZpeGVzLgotIAotICogTWFqb3IgY2hhbmdlcyBpbiByZWxlYXNlIDQuNS4xOCwgMjAxNS0xMi0yNwotZGlmZiAtLWdpdCBhL2RvYy9maW5kLnRleGkgYi9kb2MvZmluZC50ZXhpCi1pbmRleCBmZGViODQxLi4yNDdjMTlhIDEwMDY0NAotLS0tIGEvZG9jL2ZpbmQudGV4aQotKysrIGIvZG9jL2ZpbmQudGV4aQotQEAgLTE0MTgsNyArMTQxOCwxNSBAQCBnaXZlcyBhIHNpZ25pZmljYW50IGluY3JlYXNlIGluIHNlYXJjaCBzcGVlZC4KLSBJZiBhIGZpbGUgZGlzYXBwZWFycyBhZnRlciBpdHMgbmFtZSBoYXMgYmVlbiByZWFkIGZyb20gYSBkaXJlY3RvcnkgYnV0Ci0gYmVmb3JlIEBjb2Rle2ZpbmR9IGdldHMgYXJvdW5kIHRvIGV4YW1pbmluZyB0aGUgZmlsZSB3aXRoIEBjb2Rle3N0YXR9LAotIGRvbid0IGlzc3VlIGFuIGVycm9yIG1lc3NhZ2UuICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGlzIG9wdGlvbiwgYW4KLS1lcnJvciBtZXNzYWdlIHdpbGwgYmUgaXNzdWVkLiAgVGhpcyBvcHRpb24gY2FuIGJlIHVzZWZ1bCBpbiBzeXN0ZW0KLStlcnJvciBtZXNzYWdlIHdpbGwgYmUgaXNzdWVkLgotKwotK0Z1cnRoZXJtb3JlLCBAY29kZXtmaW5kfSB3aXRoIHRoZSBAc2FtcHstaWdub3JlX3JlYWRkaXJfcmFjZX0gb3B0aW9uCi0rd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUKLStoYXMgZGlzYXBwZWFyZWQgc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6IGl0IHdpbGwgbm90IG91dHB1dAotK2FuIGVycm9yIGRpYWdub3N0aWMsIGFuZCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbgotK3dpbGwgYmUgdHJ1ZS4KLSsKLStUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZnVsIGluIHN5c3RlbQotIHNjcmlwdHMgKGNyb24gc2NyaXB0cywgZm9yIGV4YW1wbGUpIHRoYXQgZXhhbWluZSBhcmVhcyBvZiB0aGUKLSBmaWxlc3lzdGVtIHRoYXQgY2hhbmdlIGZyZXF1ZW50bHkgKG1haWwgcXVldWVzLCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMsCi0gYW5kIHNvIGZvcnRoKSwgYmVjYXVzZSB0aGlzIHNjZW5hcmlvIGlzIGNvbW1vbiBmb3IgdGhvc2Ugc29ydHMgb2YKLUBAIC0yNzc5LDYgKzI3ODcsMTEgQEAgZXhwbGljaXRseS4KLSAKLSBJZiBAc2FtcHstZGVsZXRlfSBmYWlscywgQGNvZGV7ZmluZH0ncyBleGl0IHN0YXR1cyB3aWxsIGJlIG5vbnplcm8KLSAod2hlbiBpdCBldmVudHVhbGx5IGV4aXRzKS4KLSsKLStUb2dldGhlciB3aXRoIHRoZSBAc2FtcHstaWdub3JlX3JlYWRkaXJfcmFjZX0gb3B0aW9uLCBAY29kZXtmaW5kfSB3aWxsCi0raWdub3JlIGVycm9ycyBvZiB0aGUgQHNhbXB7LWRlbGV0ZX0gYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZAotK3NpbmNlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHdhcyByZWFkOiBpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kCi0rdGhlIHJldHVybiBjb2RlIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gd2lsbCBiZSB0cnVlLgotIEBlbmQgZGVmZm4KLSAKLSBAbm9kZSBBZGRpbmcgVGVzdHMKLWRpZmYgLS1naXQgYS9maW5kL2ZpbmQuMSBiL2ZpbmQvZmluZC4xCi1pbmRleCA3YjE0MWI4Li4wZWVjNDFjIDEwMDY0NAotLS0tIGEvZmluZC9maW5kLjEKLSsrKyBiL2ZpbmQvZmluZC4xCi1AQCAtNDc5LDYgKzQ3OSwxNyBAQCBvbmUgcGFydCBvZiB0aGUgZmlsZXN5c3RlbSB3aXRoIHRoaXMgb3B0aW9uIG9uIGFuZCBwYXJ0IG9mIGl0IHdpdGggdGhpcyBvcHRpb24KLSBvZmYgKGlmIHlvdSBuZWVkIHRvIGRvIHRoYXQsIHlvdSB3aWxsIG5lZWQgdG8gaXNzdWUgdHdvIFxmQmZpbmRcZlIgY29tbWFuZHMKLSBpbnN0ZWFkLCBvbmUgd2l0aCB0aGUgb3B0aW9uIGFuZCBvbmUgd2l0aG91dCBpdCkuCi0gCi0rRnVydGhlcm1vcmUsCi0rLkIgZmluZAotK3dpdGggdGhlCi0rLkIgXC1pZ25vcmVfcmVhZGRpcl9yYWNlCi0rb3B0aW9uIHdpbGwgaWdub3JlIGVycm9ycyBvZiB0aGUKLSsuQiBcLWRlbGV0ZQotK2FjdGlvbiBpbiB0aGUgY2FzZSB0aGUgZmlsZSBoYXMgZGlzYXBwZWFyZWQgc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6Ci0raXQgd2lsbCBub3Qgb3V0cHV0IGFuIGVycm9yIGRpYWdub3N0aWMsIGFuZCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlCi0rLkIgXC1kZWxldGUKLSthY3Rpb24gd2lsbCBiZSB0cnVlLgotKwotIC5JUCAiXC1tYXhkZXB0aCBcZklsZXZlbHNcZlIiCi0gRGVzY2VuZCBhdCBtb3N0IFxmSWxldmVsc1xmUiAoYSBub24tbmVnYXRpdmUgaW50ZWdlcikgbGV2ZWxzIG9mCi0gZGlyZWN0b3JpZXMgYmVsb3cgdGhlIHN0YXJ0aW5nLXBvaW50cy4KLUBAIC0xMDMwLDYgKzEwNDEsMTcgQEAgYW5kCi0gLkIgXC1kZWxldGUKLSB0b2dldGhlci4KLSAKLStUb2dldGhlciB3aXRoIHRoZQotKy5CIFwtaWdub3JlX3JlYWRkaXJfcmFjZQotK29wdGlvbiwKLSsuQiBmaW5kCi0rd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZQotKy5CIFwtZGVsZXRlCi0rYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZCBzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMKLStyZWFkOiBpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kIHRoZSByZXR1cm4gY29kZSBvZiB0aGUKLSsuQiBcLWRlbGV0ZQotK2FjdGlvbiB3aWxsIGJlIHRydWUuCi0rCi0gLklQICJcLWV4ZWMgXGZJY29tbWFuZFxmUiA7IgotIEV4ZWN1dGUgXGZJY29tbWFuZFxmUjsgdHJ1ZSBpZiAwIHN0YXR1cyBpcyByZXR1cm5lZC4gIEFsbCBmb2xsb3dpbmcKLSBhcmd1bWVudHMgdG8KLWRpZmYgLS1naXQgYS9maW5kL3ByZWQuYyBiL2ZpbmQvcHJlZC5jCi1pbmRleCAzMjkzOGZiLi40MzFmMDY1IDEwMDY0NAotLS0tIGEvZmluZC9wcmVkLmMKLSsrKyBiL2ZpbmQvcHJlZC5jCi1AQCAtMzI0LDYgKzMyNCwxMiBAQCBwcmVkX2RlbGV0ZSAoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdGF0X2J1Ziwgc3RydWN0IHByZWRpY2F0ZSAqcHJlZAotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0rCSAgaWYgKEVOT0VOVCA9PSBlcnJubyAmJiBvcHRpb25zLmlnbm9yZV9yZWFkZGlyX3JhY2UpCi0rCSAgICB7Ci0rCSAgICAgIC8qIElnbm9yZSB1bmxpbmsoKSBlcnJvciBmb3IgdmFuaXNoZWQgZmlsZXMuICAqLwotKwkgICAgICBlcnJubyA9IDA7Ci0rCSAgICAgIHJldHVybiB0cnVlOwotKwkgICAgfQotIAkgIGlmIChFSVNESVIgPT0gZXJybm8pCi0gCSAgICB7Ci0gCSAgICAgIGlmICgoZmxhZ3MgJiBBVF9SRU1PVkVESVIpID09IDApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLWZmbHVzaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEzZThlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLUZyb20gODBjZGZiYTA3OTYyN2UxNTEyOWE5MjZhMTMzODI1Yjk2MWQ0MWUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBNb24sIDUgTWFyIDIwMTggMTA6NTY6MjkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZmZsdXNoOiBhZGp1c3QgdG8gZ2xpYmMgMi4yOCBsaWJpby5oIHJlbW92YWwKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotUHJvYmxlbSByZXBvcnRlZCBieSBEYW5pZWwgUC4gQmVycmFuZ8OpIGluOgotaHR0cHM6Ly9saXN0cy5nbnUub3JnL3IvYnVnLWdudWxpYi8yMDE4LTAzL21zZzAwMDAwLmh0bWwKLSogbGliL2ZmbHVzaC5jIChjbGVhcl91bmdldGNfYnVmZmVyX3ByZXNlcnZpbmdfcG9zaXRpb24pCi0oZGlzYWJsZV9zZWVrX29wdGltaXphdGlvbiwgcnBsX2ZmbHVzaCk6Ci0qIGxpYi9mcHVyZ2UuYyAoZnB1cmdlKToKLSogbGliL2ZyZWFkYWhlYWQuYyAoZnJlYWRhaGVhZCk6Ci0qIGxpYi9mcmVhZGluZy5jIChmcmVhZGluZyk6Ci0qIGxpYi9mc2Vla28uYyAoZnNlZWtvKToKLSogbGliL3N0ZGlvLWltcGwuaCAoX0lPX0lOX0JBQ0tVUCkgW19JT19FT0ZfU0VFTl06Ci1EZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KLQotVXBzdHJlYW0tY29tbWl0OiA0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlCi1TaWduZWQtb2ZmLWJ5OiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlXQotLS0tCi0gZ2wvbGliL2ZmbHVzaC5jICAgICB8IDYgKysrLS0tCi0gZ2wvbGliL2ZwdXJnZS5jICAgICB8IDIgKy0KLSBnbC9saWIvZnJlYWRhaGVhZC5jIHwgMiArLQotIGdsL2xpYi9mcmVhZGluZy5jICAgfCAyICstCi0gZ2wvbGliL2ZzZWVrby5jICAgICB8IDQgKystLQotIGdsL2xpYi9zdGRpby1pbXBsLmggfCA2ICsrKysrKwotIDYgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZmZsdXNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZmZsdXNoLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZmbHVzaC5jCi1AQCAtMzMsNyArMzMsNyBAQAotICN1bmRlZiBmZmx1c2gKLSAKLSAKLS0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotIAotIC8qIENsZWFyIHRoZSBzdHJlYW0ncyB1bmdldGMgYnVmZmVyLCBwcmVzZXJ2aW5nIHRoZSB2YWx1ZSBvZiBmdGVsbG8gKGZwKS4gICovCi0gc3RhdGljIHZvaWQKLUBAIC03Miw3ICs3Miw3IEBAIGNsZWFyX3VuZ2V0Y19idWZmZXIgKEZJTEUgKmZwKQotIAotICNlbmRpZgotIAotLSNpZiAhIChkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKLSsjaWYgISAoZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKLSAKLSAjIGlmIChkZWZpbmVkIF9fc2ZlcnJvciB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0FORFJPSURfXykgJiYgZGVmaW5lZCBfX1NOUFQKLSAvKiBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QsIERyYWdvbkZseSwgTWFjIE9TIFgsIEN5Z3dpbiwgQW5kcm9pZCAqLwotQEAgLTE0OCw3ICsxNDgsNyBAQCBycGxfZmZsdXNoIChGSUxFICpzdHJlYW0pCi0gICBpZiAoc3RyZWFtID09IE5VTEwgfHwgISBmcmVhZGluZyAoc3RyZWFtKSkKLSAgICAgcmV0dXJuIGZmbHVzaCAoc3RyZWFtKTsKLSAKLS0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotIAotICAgY2xlYXJfdW5nZXRjX2J1ZmZlcl9wcmVzZXJ2aW5nX3Bvc2l0aW9uIChzdHJlYW0pOwotIAotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnB1cmdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnB1cmdlLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZwdXJnZS5jCi1AQCAtNjIsNyArNjIsNyBAQCBmcHVyZ2UgKEZJTEUgKmZwKQotICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCi0gICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKLSAgICAgIGZhc3QgbWFjcm9zLiAgKi8KLS0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBmcC0+X0lPX3JlYWRfZW5kID0gZnAtPl9JT19yZWFkX3B0cjsKLSAgIGZwLT5fSU9fd3JpdGVfcHRyID0gZnAtPl9JT193cml0ZV9iYXNlOwotICAgLyogQXZvaWQgbWVtb3J5IGxlYWsgd2hlbiB0aGVyZSBpcyBhbiBhY3RpdmUgdW5nZXRjIGJ1ZmZlci4gICovCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRhaGVhZC5jCi0rKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gc2l6ZV90Ci0gZnJlYWRhaGVhZCAoRklMRSAqZnApCi0gewotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBpZiAoZnAtPl9JT193cml0ZV9wdHIgPiBmcC0+X0lPX3dyaXRlX2Jhc2UpCi0gICAgIHJldHVybiAwOwotICAgcmV0dXJuIChmcC0+X0lPX3JlYWRfZW5kIC0gZnAtPl9JT19yZWFkX3B0cikKLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZyZWFkaW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRpbmcuYwotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnJlYWRpbmcuYwotQEAgLTMxLDcgKzMxLDcgQEAgZnJlYWRpbmcgKEZJTEUgKmZwKQotICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCi0gICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKLSAgICAgIGZhc3QgbWFjcm9zLiAgKi8KLS0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICByZXR1cm4gKChmcC0+X2ZsYWdzICYgX0lPX05PX1dSSVRFUykgIT0gMAotICAgICAgICAgICB8fCAoKGZwLT5fZmxhZ3MgJiAoX0lPX05PX1JFQURTIHwgX0lPX0NVUlJFTlRMWV9QVVRUSU5HKSkgPT0gMAotICAgICAgICAgICAgICAgJiYgZnAtPl9JT19yZWFkX2Jhc2UgIT0gTlVMTCkpOwotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnNlZWtvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnNlZWtvLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZzZWVrby5jCi1AQCAtNDcsNyArNDcsNyBAQCBmc2Vla28gKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuCi0gI2VuZGlmCi0gCi0gICAvKiBUaGVzZSB0ZXN0cyBhcmUgYmFzZWQgb24gZnB1cmdlLmMuICAqLwotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBpZiAoZnAtPl9JT19yZWFkX2VuZCA9PSBmcC0+X0lPX3JlYWRfcHRyCi0gICAgICAgJiYgZnAtPl9JT193cml0ZV9wdHIgPT0gZnAtPl9JT193cml0ZV9iYXNlCi0gICAgICAgJiYgZnAtPl9JT19zYXZlX2Jhc2UgPT0gTlVMTCkKLUBAIC0xMjMsNyArMTIzLDcgQEAgZnNlZWtvIChGSUxFICpmcCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbgotICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gCi0tI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSAgICAgICBmcC0+X2ZsYWdzICY9IH5fSU9fRU9GX1NFRU47Ci0gICAgICAgZnAtPl9vZmZzZXQgPSBwb3M7Ci0gI2VsaWYgZGVmaW5lZCBfX3NmZXJyb3IgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19BTkRST0lEX18KLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9zdGRpby1pbXBsLmgKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAotQEAgLTE4LDYgKzE4LDEyIEBACi0gICAgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gb2Ygc3RkaW8gZXh0ZW5zaW9uIEFQSSwgZXhjZXB0IHRoYXQgc29tZSBmaWVsZHMKLSAgICBoYXZlIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbnMsIG9yIHRoZWlyIGFjY2VzcyByZXF1aXJlcyBzb21lIGNhc3RzLiAgKi8KLSAKLSsvKiBHbGliYyAyLjI4IG1hZGUgX0lPX0lOX0JBQ0tVUCBwcml2YXRlLiAgRm9yIG5vdywgd29yayBhcm91bmQgdGhpcwotKyAgIHByb2JsZW0gYnkgZGVmaW5pbmcgaXQgb3Vyc2VsdmVzLiAgRklYTUU6IERvIG5vdCByZWx5IG9uIGdsaWJjCi0rICAgaW50ZXJuYWxzLiAgKi8KLSsjaWYgIWRlZmluZWQgX0lPX0lOX0JBQ0tVUCAmJiBkZWZpbmVkIF9JT19FT0ZfU0VFTgotKyMgZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKLSsjZW5kaWYKLSAKLSAvKiBCU0Qgc3RkaW8gZGVyaXZlZCBpbXBsZW1lbnRhdGlvbnMuICAqLwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiMzk1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gODA2MjgwNDdhNmNjODNmODJlMGM0MTBhODJiOGY3ZmFjZDlkNTBmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxOToyMTo0MiAtMDUwMAotU3ViamVjdDogW1BBVENIXSBtb3VudGxpc3Q6IGluY2x1ZGUgc3lzbWFjcm9zLmggZm9yIGdsaWJjCi0KLU9uIEZlZG9yYSByYXdoaWRlIChnbGliYyAyLjI1KSwgJy4vZ251bGliLXRvb2wgLS10ZXN0IG1vdW50bGlzdCcKLXJlcG9ydHM6Ci0uLi8uLi9nbGxpYi9tb3VudGxpc3QuYzogSW4gZnVuY3Rpb24gJ3JlYWRfZmlsZV9zeXN0ZW1fbGlzdCc6Ci0uLi8uLi9nbGxpYi9tb3VudGxpc3QuYzo1MzQ6MTM6IHdhcm5pbmc6ICdfX21ha2VkZXZfZnJvbV9zeXNfdHlwZXMnIGlzIGRlcHJlY2F0ZWQ6Ci0gIEluIHRoZSBHTlUgQyBMaWJyYXJ5LCBgbWFrZWRldicgaXMgZGVmaW5lZCBieSA8c3lzL3N5c21hY3Jvcy5oPi4KLSAgRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMgY3VycmVudGx5IGRlZmluZWQgYnkKLSAgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0byByZW1vdmUgdGhpcyBzb29uLgotICBUbyB1c2UgYG1ha2VkZXYnLCBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+IGRpcmVjdGx5LgotICBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8gYG1ha2VkZXYnLAotICB5b3Ugc2hvdWxkICN1bmRlZiBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4KLSAgWy1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNdCi0gICAgICAgICAgICAgbWUtPm1lX2RldiA9IG1ha2VkZXYgKGRldm1haiwgZGV2bWluKTsKLSAgICAgICAgICAgICBefgotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oOjM5NzowLAotICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaDoyNSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuL3N5cy90eXBlcy5oOjI4LAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5oOjIzLAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5jOjIwOgotL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaDo4OToxOiBub3RlOiBkZWNsYXJlZCBoZXJlCi0gX19TWVNNQUNST1NfREVGSU5FX01BS0VERVYgKF9fU1lTTUFDUk9TX0ZTVF9JTVBMX1RFTVBMKQotIF4KLQotRml4IGl0IGJ5IGluY2x1ZGluZyB0aGUgcmlnaHQgaGVhZGVycy4gIFdlIGFsc28gbmVlZCBhIGZpeCB0bwotYXV0b2NvbmYncyBBQ19IRUFERVJfTUFKT1IsIGJ1dCB0aGF0J3MgYSBzZXBhcmF0ZSBwYXRjaC4KLQotKiBtNC9tb3VudGxpc3QubTQgKGdsX1BSRVJFUV9NT1VUTElTVF9FWFRSQSk6IEluY2x1ZGUKLUFDX0hFQURFUl9NQUpPUi4KLSogbGliL21vdW50bGlzdC5jIChpbmNsdWRlcyk6IFVzZSBjb3JyZWN0IGhlYWRlcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1jb21taXQ6IDRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjEKLVNpZ25lZC1vZmYtYnk6IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjFdCi0tLS0KLSBnbC9saWIvbW91bnRsaXN0LmMgfCA2ICsrKysrKwotIGdsL200L21vdW50bGlzdC5tNCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvbW91bnRsaXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvbW91bnRsaXN0LmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL21vdW50bGlzdC5jCi1AQCAtMzcsNiArMzcsMTIgQEAKLSAjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotICNlbmRpZgotIAotKyNpZiBNQUpPUl9JTl9NS0RFVgotKyMgaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VsaWYgTUFKT1JfSU5fU1lTTUFDUk9TCi0rIyBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQgTU9VTlRFRF9HRVRGU1NUQVQgICAvKiBPU0ZfMSBhbmQgRGFyd2luMS4zLnggKi8KLSAjIGlmIEhBVkVfU1lTX1VDUkVEX0gKLSAjICBpbmNsdWRlIDxncnAuaD4gLyogbmVlZGVkIG9uIE9TRiBWNC4wIGZvciBkZWZpbml0aW9uIG9mIE5HUk9VUFMsCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL200L21vdW50bGlzdC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL200L21vdW50bGlzdC5tNAotKysrIGZpbmR1dGlscy00LjYuMC9nbC9tNC9tb3VudGxpc3QubTQKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2VyaWFsIDExCi0rIyBzZXJpYWwgMTIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDYsIDIwMDktMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xNSw1ICsxNSw2IEBAIEFDX0RFRlVOKFtnbF9QUkVSRVFfTU9VTlRMSVNUX0VYVFJBXSwKLSBbCi0gICBkbmwgTm90ZSBnbF9MSVNUX01PVU5URURfRklMRV9TWVNURU1TIGNoZWNrcyBmb3IgbW50ZW50LmgsIG5vdCBzeXMvbW50ZW50LmguCi0gICBBQ19DSEVDS19IRUFERVJTKFtzeXMvbW50ZW50LmhdKQotKyAgQUNfSEVBREVSX01BSk9SKClkbmwgZm9yIHVzZSBvZiBtYWtlZGV2ICgpCi0gICBnbF9GU1RZUEVOQU1FCi0gXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzXzQuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjYyZWQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGZpbmR1dGlscy5pbmMKLQotIyBHUEx2MisgKDw8IDQuMi4zMiksIEdQTHYzKyAoPj0gNC4yLjMyKQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpbmQtbWFrZS1kZWxldGUtaG9ub3VyLXRoZS1pZ25vcmVfcmVhZGRpcl9yYWNlLW9wdGkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTkzNmFhODAwOTQzOGNlMTg1YmVhMjY5NGE5OTdmYzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGVkNGM5ZjczNzMxY2Q0OGZlYzNiNmJkYWNjY2U4OTY0NzNiNmQ4ZTMzN2U5NjEyZTE2Y2YxNDMxYmIxMTY5ZCIKLQotIyBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz8yNzI5OQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImdsX2N2X2Z1bmNfd2N3aWR0aF93b3Jrcz15ZXMiCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9TT1JUPSR7YmluZGlyfS9zb3J0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2ODhlNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC43LjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBmaW5kdXRpbHMuaW5jCisKKyMgR1BMdjIrICg8PCA0LjIuMzIpLCBHUEx2MysgKD49IDQuMi4zMikKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWViYmQzZTM0MjM3YWYyNmRhNWRjMDhhNGU0NDA0NjQiCisKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzMxMzU2ZGVjNGIxMTA5YjgxMmZlY2ZkZGZlYWQ2YjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzVmZWZiZGY5ODU4ZjdlNGZlYjg2ZjAzNmUxMjQ3YTU0Yzc5ZmMyZDhlNGI3MDY0ZDVhYWExZjQ3ZGZhNzg5YSIKKworIyBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz8yNzI5OQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImdsX2N2X2Z1bmNfd2N3aWR0aF93b3Jrcz15ZXMiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9TT1JUPSR7YmluZGlyfS9zb3J0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTgzMjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZWRjODguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotCi1odHRwOi8vYnpyLmxpbnV4Zm91bmRhdGlvbi5vcmcvbG9nZ2VyaGVhZC9vcGVucHJpbnRpbmcvY3Vwcy1maWx0ZXJzL3JldmlzaW9uLzc0MDYKLQotSGFuZCBhcHBsaWVkIGNoYW5nZSB0byB1dGlsLmMuIEZpeCB3YXMgZm9yIGN1cHMtZmlsdGVycyBidXQgYWxzbyBhcHBsaWVkIHRvIGZvb21hdGljLWZpbHRlcnMuCi0KLUNWRTogQ1ZFLTIwMTUtODMyNwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB1dGlsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3V0aWwuYwotKysrIGIvdXRpbC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAKLS1jb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDs8PiYhJFwnXCIjKj8oKVtde30iOwotK2NvbnN0IGNoYXIqIHNoZWxsZXNjYXBlcyA9ICJ8Ozw+JiEkXCdcImAjKj8oKVtde30iOwotIAotIGNvbnN0IGNoYXIgKiB0ZW1wX2RpcigpCi0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTg1NjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOTczYzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotCi1odHRwOi8vYnpyLmxpbnV4Zm91bmRhdGlvbi5vcmcvbG9nZ2VyaGVhZC9vcGVucHJpbnRpbmcvY3Vwcy1maWx0ZXJzL3JldmlzaW9uLzc0MTkKLQotSGFuZCBhcHBsaWVkIGNoYW5nZSB0byB1dGlsLmMuIEZpeCB3YXMgZm9yIGN1cHMtZmlsdGVycyBidXQgYWxzbyBhcHBsaWVkIHRvIGZvb21hdGljLWZpbHRlcnMuCi0KLUNWRTogQ1ZFLTIwMTUtODU2MAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB1dGlsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3V0aWwuYwotKysrIGIvdXRpbC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAKLS1jb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDw+JiEkXCdcIiMqPygpW117fSI7Ci0rY29uc3QgY2hhciogc2hlbGxlc2NhcGVzID0gInw7PD4mISRcJ1wiIyo/KClbXXt9IjsKLSAKLSBjb25zdCBjaGFyICogdGVtcF9kaXIoKQotIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MmM5YTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5QcmludGluZyBwcmludGVyIHN1cHBvcnQgLSBmaWx0ZXJzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvb3BlbnByaW50aW5nL3N0YXJ0IgotREVTQ1JJUFRJT04gPSAiRm9vbWF0aWMgaXMgYSBwcmludGVyIGRhdGFiYXNlIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNldCB1cCBcCi1jb21tb24gcHJpbnRlcnMgZm9yIHVzZSB3aXRoIFVOSVgtbGlrZSBvcGVyYXRpbmcgc3lzdGVtcy5cCi1JdCBwcm92aWRlcyB0aGUgImdsdWUiIGJldHdlZW4gYSBwcmludCBzcG9vbGVyIChsaWtlIENVUFMgb3IgbHByKSBhbmQgXAotdGhlIHByaW50ZXIsIGJ5IHByb2Nlc3NpbmcgZmlsZXMgc2VudCB0byB0aGUgcHJpbnRlci4gXAotIFwKLVRoaXMgcGFja2FnZSBjb25zaXN0cyBvZiBmaWx0ZXJzIHVzZWQgYnkgdGhlIHByaW50ZXIgc3Bvb2xlcnMgXAotdG8gY29udmVydCB0aGUgaW5jb21pbmcgUG9zdFNjcmlwdCBkYXRhIGludG8gdGhlIHByaW50ZXIncyBuYXRpdmUgXAotZm9ybWF0IHVzaW5nIGEgcHJpbnRlci1zcGVjaWZpYywgYnV0IHNwb29sZXItaW5kZXBlbmRlbnQgUFBEIGZpbGUuIFwKLSIKLQotREVQRU5EUyArPSAiY3VwcyBwZXJsIGxpYnhtbDIiCi1QUiA9ICJyMSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L2Zvb21hdGljLWZpbHRlcnMtJHtQVn0vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVucHJpbnRpbmcub3JnL2Rvd25sb2FkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vQ1ZFLTIwMTUtODU2MC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTUtODMyNy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIwNWY1ZGNiZmUzNTlmMTk4ZWVmM2RmNWIyODNkODk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyZTJlNTNlNTAyNTcxZTg4ZWViOTAxMGM0NWEwZDU0NjcxZjE1NzA3ZWUxMDRmNWM5YzIyYjU5ZWE3YTMzZTMiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZvb21hdGljLWZpbHRlcnMtKD9QPHB2ZXI+KChcZHxcZFxkKVwuKikrKVwudGFyXC5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWZpbGUtY29udmVydGVyLWNoZWNrIC0td2l0aC1maWxlLWNvbnZlcnRlcj10ZXh0dG9wcyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IFBFUkw9IiR7YmluZGlyfS9lbnYgcGVybCIKLSAgICBleHBvcnQgQ1VQU19TRVJWRVJCSU49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgICAgICAgIyAvdXNyL2xpYiBOT1QgbGliZGlyCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpbnV4c3RkYmFzZSgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy9maWx0ZXIKLSAgICBsbiAtc2YgJHtiaW5kaXJ9L2Zvb21hdGljLXJpcCAke0R9JHtleGVjX3ByZWZpeH0vbGliL2N1cHMvZmlsdGVyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy8gJHtleGVjX3ByZWZpeH0vbGliL3Bwci8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNS4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNS4wLjEuYmIKaW5kZXggZWFiYTZjNy4uZTc5Y2NmZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzUuMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a181LjAuMS5iYgpAQCAtNDYsNiArNDYsOCBAQAogCWRvbmUKIAlzZWQgLWkgLWUgJ3N8L3Vzci9sb2NhbC9iaW58JHtiaW5kaXJ9fGcnIFwKIAkgICAgLWUgJ3N8IyEke2Jhc2VfYmluZGlyfS9hd2t8IyEke2JpbmRpcn0vYXdrfGcnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi5hd2sKKworICAgICAgICBzZWQgLWkgLWUgInN8R0FXS0xPQ0FMRXxMQU5HfGciICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZXRlc3RzCiB9CiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODExLTAwMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMjg1NTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gODg1NDQ0ZmNiZTEwZGM0Mjc4N2VjYjc2Njg2YzhlZTRkZDMzYmYzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgotRGF0ZTogVHVlLCAyMCBBdWcgMjAxOSAxMDoxMDoyOCArMDEwMAotU3ViamVjdDogW1BBVENIXSBtYWtlIC5mb3JjZXB1dCBpbmFjY2Vzc2libGUKLQotQnVnICM3MDEzNDMsICM3MDEzNDQsICM3MDEzNDUKLQotTW9yZSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFdlIGRvbid0IHdhbnQgcGVvcGxlIHRvIGFjY2VzcyAuZm9yZWNwdXQKLWV2ZW4gdGhvdWdoIGl0IGlzIG5vIGxvbmdlciBzdWZmaWNpZW50IHRvIGJ5cGFzcyBTQUZFUi4gVGhlIGV4cGxvaXQKLWluICM3MDEzNDMgZGlkbid0IHdvcmsgYW55d2F5IGJlY2F1c2Ugb2YgZWFybGllciB3b3JrIHRvIHN0b3AgdGhlIGVycm9yCi1oYW5kbGVyIGJlaW5nIHVzZWQsIGJ1dCBuZXZlcnRoZWxlc3MsIHByZXZlbnQgYWNjZXNzIHRvIC5mb3JjZXB1dCBmcm9tCi0uc2V0dXNlcnBhcmFtczIuCi0KLUNWRTogQ1ZFLTIwMTktMTQ4MTEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBSZXNvdXJjZS9Jbml0L2dzX2xldjIucHMgIHwgNiArKystLS0KLSBSZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMKLWluZGV4IDk4ZDU1ZmUuLmYxYjc3MWYgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcwotQEAgLTE1OCw3ICsxNTgsNyBAQCBlbmQKLSAgICAgewotICAgICAgIHBvcCBwb3AKLSAgICAgfSBpZmVsc2UKLS0gIH0gZm9yYWxsCi0rICB9IGV4ZWN1dGVvbmx5IGZvcmFsbAotICAgICAgICAgJSBBIGNvbnRleHQgc3dpdGNoIG1pZ2h0IGhhdmUgb2NjdXJyZWQgZHVyaW5nIHRoZSBhYm92ZSBsb29wLAotICAgICAgICAgJSBjYXVzaW5nIHRoZSBpbnRlcnByZXRlci1sZXZlbCBwYXJhbWV0ZXJzIHRvIGJlIHJlc2V0LgotICAgICAgICAgJSBTZXQgdGhlbSBhZ2FpbiB0byB0aGUgbmV3IHZhbHVlcy4gIEZyb20gaGVyZSBvbiwgd2UgYXJlIHNhZmUsCi1AQCAtMjI5LDkgKzIyOSw5IEBAIGVuZAotICAgICAgICB7IHBvcCBwb3AKLSAgICAgICAgfQotICAgICAgIGlmZWxzZQotLSAgICB9Ci0rICAgIH0gZXhlY3V0ZW9ubHkKLSAgICBmb3JhbGwgcG9wCi0tfSAuYmluZCBvZGVmCi0rfSAuYmluZCBleGVjdXRlb25seSBvZGVmCi0gCi0gJSBJbml0aWFsaXplIHRoZSBwYXNzd29yZHMuCi0gJSBOT1RFOiB0aGUgbmFtZXMgU3RhcnRKb2JQYXNzd29yZCBhbmQgU3lzdGVtUGFyYW1zUGFzc3dvcmQgYXJlIGtub3duIHRvCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcyBiL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMKLWluZGV4IDAwYzE5ZmEuLmRmZTUwNGQgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzCi1AQCAtNjUyLDExICs2NTIsMTEgQEAgY3VycmVudGRpY3QgLy5wZGZtYXJrcGFyYW1zIC51bmRlZgotICAgICAgICAgICBzeXN0ZW1kaWN0IC8ucGRmX2hvb2tlZF9EU0NfQ3JlYXRvciAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0gICAgICAgICBwb3AKLS0gICAgICB9IGlmCi0rICAgICAgfSBleGVjdXRlb25seSBpZgotICAgICB9IHsKLSAgICAgICBwb3AKLSAgICAgfSBpZmVsc2UKLS0gIH0KLSsgIH0gZXhlY3V0ZW9ubHkKLSAgIHsKLSAgICAgcG9wCi0gICB9IGlmZWxzZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NmUyMWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi1Gcm9tIDBiYWZiZDljMTI3M2ZhYjBkYzc5ZmQyMGRiMGZmYzQ0NDM2ODNmOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IE1vbiwgMjkgQXByIDIwMTkgMTE6MTQ6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFBERiBpbnRlcnByZXRlciAtIERlY29kZSBUb1VuaWNvZGUgZW50cmllcyBvZiB0aGUgZm9ybQotIC9JZGVudGl0eS1IL1YKLQotQnVnICM3MDEwMDMgIlRleHQgc2VhcmNoYWJpbGl0eSBicm9rZW4gZHVlIHRvIG9taXNzaW9uIG9mIC9Ub1VuaWNvZGUgL0lkZW50aXR5LUgiCi0KLVRoZSBQREYgcmVmZXJlbmNlcyBmcm9tIDEuMiB0b28gMi4wIGFsbCBzdGF0ZSB0aGF0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkCi13aXRoIGEgVG9Vbmljb2RlIGtleSBpbiBhIEZvbnREZXNjcmlwdG9yIG11c3QgYmUgYSBzdHJlYW0gb2JqZWN0LiBIb3dldmVyCi10aGlzIGZpbGUgKGFuZCBvbmUgY2FzZSBzZWVuIHByZXZpb3VzbHksIGJ1ZyA2ODczNTEpIGhhdmUgRm9udERlc2NyaXB0b3IKLWRpY3Rpb25hcmllcyB3aGVyZSB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgL1RvVW5pY29kZSBrZXkgaXMgYQotbmFtZSBvYmplY3QsIGluIGJvdGggY2FzZXMgL0lkZW50aXR5LUguCi0KLUFsdGhvdWdoIHRoaXMgaXMgY2xlYXJseSBub3QgbGVnYWwsIEFjcm9iYXQgbm90IG9ubHkgdG9sZXJhdGVzIGl0LCBpdAotYWN0dWFsbHkgdXNlcyBpdCBmb3Igc2VhcmNoL2NvcHkvcGFzdGUgKHNlZSBidWcgNzAxMDAzIGZvciBkZXRhaWxzKS4KLVdpdGhvdXQgdGhlIGtleSBBY3JvYmF0IGlzIHVuYWJsZSB0byBzdWNjZXNzZnVsbHkgc2VhcmNoIHRoZSBvdXRwdXQgZmlsZS4KLQotV2UgY2FuJ3Qgc2ltcGx5IHByZXNlcnZlIHRoZSBuYW1lIG9iamVjdCBhcyBhIFRvVW5pY29kZSB2YWx1ZTsgd2hlbgotaGFuZGxpbmcgVG9Vbmljb2RlIHdlIGFjdHVhbGx5IGRlY29kZSB0aGUgQ01hcCBhbmQgYnVpbGQgYQotR2x5cGhOYW1lczJVbmljb2RlIG1hcCAoYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIEcyVSBkYXRhCi1wcm9kdWNlZCBieSB0aGUgTWljcm9zb2Z0IFBvc3RTY3JpcHQgcHJpbnRlciBkcml2ZXIpLiBXaGVuIHdyaXRpbmcgdGhlCi1vdXRwdXQgZmlsZSB3ZSB1c2UgdGhhdCBpbmZvcm1hdGlvbiB0byBnZXQgYSBVbmljb2RlIHZhbHVlIGZvciBlYWNoCi1jaGFyYWN0ZXIgd2Ugd3JpdGUsIGFuZCBidWlsZCBhIG5ldyBUb1VuaWNvZGUgQ01hcCB1c2luZyB0aGF0LgotCi1UaGlzIGNvbW1pdCB0YWNrbGVzIHRoZSBwcm9ibGVtIGJ5IHByZS1zY2FubmluZyBmb3IgYSBuYW1lIG9iamVjdCBhbmQKLXRoZW4gY2hlY2tpbmcgdG8gc2VlIGlmIGl0cyBJZGVudGl0eS1IIG9yIElkZW50aXR5LVYgKGFsdGhvdWdoIHdlIGhhdmUKLW5vdCBzZWVuIGFuIElkZW50aXR5LVYsIHRoZXJlIHNlZW1zIG5vIHJlYXNvbiB3aHkgaXQgd291bGRuJ3QgYmUKLWVxdWFsbHkgdmFsaWQpLiBJZiB3ZSBmaW5kIGVpdGhlciBvZiB0aGVzZSB0aGVuIHdlIGNvbnN0cnVjdCBhCi1HbHlwaE5hbWVzMlVuaWNvZGUgdGFibGUgZm9yIGFsbCBwb3NzaWJsZSB2YWx1ZXMgKDAgLSA2NTUzNSkgYW5kIHN0b3JlCi10aGF0IHdpdGggdGhlIGZvbnQgYXMgbm9ybWFsLiBXaGVuIHdlIHdyaXRlIHRoZSBvdXRwdXQgZmlsZSB3ZSBvbmx5Ci13cml0ZSB0aGUgcmVxdWlyZWQgZW50cmllcyBmb3IgdGhlIHN1YnNldCBmb250LCBzbyB3ZSB3cml0ZSBhIG5vdwotY29tcGxldGVseSBsZWdhbCBUb1VuaWNvZGUgQ01hcCwgYW5kIEFjcm9iYXQgaXMgZXF1YWxseSBoYXBweSB3aXRoIHRoYXQKLWFzIHRoZSBvcmlnaW5hbCBuYW1lLgotCi1JZiB0aGUgVG9Vbmljb2RlIHZhbHVlIGlzbid0IGEgbmFtZSBvYmplY3QsIG9yIGlzbid0IG9uZSBvZiB0aGUKLWlkZW50aXRpZXMgdGhlbiB3ZSBwcm9jZWVkIGFzIGJlZm9yZS4gVGhpcyBtZWFucyB3ZSB3aWxsIHByaW50IGEKLXdhcm5pbmcgZm9yIG5vbiBjb25mb3JtaW5nIFRvVW5pY29kZSBlbnRyaWVzIGFuZCBpZ25vcmUgdGhlbS4KLQotQ1ZFOiBDVkUtMjAxOS0xNDgxNwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBHaGluZWEgPHN0ZWZhbi5naGluZWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIFJlc291cmNlL0luaXQvcGRmX2ZvbnQucHMgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLWluZGV4IDlmYjg1ZjYuLjJkZjMzMDMgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCi1AQCAtNjIxLDg2ICs2MjEsMTQ0IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgIFBERkRFQlVHIHsKLSAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGJlZykgPQotICAgICAgICAgfSBpZgotLSAgICAgICAgMiBpbmRleCAvVG9Vbmljb2RlIGtub3dub2dldCB7Ci0tICAgICAgICAgIGR1cCB0eXBlIC9kaWN0dHlwZSBlcSB7IGR1cCAvRmlsZSBrbm93biBub3QgfSB7IC8vdHJ1ZSB9IGlmZWxzZSB7Ci0tICAgICAgICAgICAgJSBXZSB1bmRlZmluZSB3cm9uZyAvTGVuZ3RoIGFuZCBkZWZpbmUgL0ZpbGUgaW4gc3RyZWFtIGRpY3Rpb25hcmllcy4KLS0gICAgICAgICAgICAlIEJ1ZzY4NzM1MS5wZGYgZGVmaW5lcyAvVG9Vbmljb2RlIC9JZGVudGl0eS1ILCB3aGF0IGlzIGluY29ycmVjdC4KLS0gICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBJZ25vcmluZyBiYWQgVG9Vbmljb2RlIENNYXAuXG4pICBwZGZmb3JtYXR3YXJuaW5nCi0tICAgICAgICAgICAgcG9wCi0rCi0rICAgICAgICAyIGluZGV4IC9Ub1VuaWNvZGUga25vd25vZ2V0Ci0rICAgICAgICB7Ci0rICAgICAgICAgICAgZHVwIHR5cGUgL25hbWV0eXBlIGVxIHsKLSsgICAgICAgICAgICAgICUgVGhpcyBpcyBjb250cmFyeSB0byB0aGUgc3BlY2lmaWNhdGlvbiBidXQgaXQgc2VlbXMgdGhhdCBBY3JvYmF0IGF0IGxlYXN0IHdpbGwgYWNjZXB0Ci0rICAgICAgICAgICAgICAlIGEgVG9Vbmljb2RlIHdpdGggYSB2YWx1ZSBvZiBJZGVudGl0eS1IICphbmQqIHdpbGwgdXNlIHRoYXQgZm9yIHNlYXJjaCwgY29weS9wYXN0ZS4KLSsgICAgICAgICAgICAgICUgV2UgY2FuJ3QgcGFzcyB0aHJvdWdoIGEgbmFtZSwgc28gdGhlIGJlc3Qgd2UgY2FuIGRvIGlzIGJ1aWxkIGEgR2x5cGhOYW1lczJVbmljb2RlCi0rICAgICAgICAgICAgICAlIG1hcCBtYXRjaGluZyB0aGF0IHdoaWNoIHdvdWxkIGhhdmUgYmVlbiBnZW5lcmF0ZWQgYnkgYSBmdWxsIDE2LWJpdCBJZGVudGl0eSBDTWFwCi0rICAgICAgICAgICAgICAlCi0rICAgICAgICAgICAgICAlIFNlZSBidWcgbnVtYmVycyA3MDEwMDMgYW5kIDY4NzM1MQotKyAgICAgICAgICAgICAgJQotKyAgICAgICAgICAgICAgZHVwIC9JZGVudGl0eS1IIGVxIDEgaW5kZXggL0lkZW50aXR5LVYgZXEgb3J7Ci0rICAgICAgICAgICAgICAgIHBvcAotKyAgICAgICAgICAgICAgICAxIGluZGV4IC9Gb250SW5mbyAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIDIgaW5kZXggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICAvRm9udEluZm8gNSBkaWN0IGR1cCA1IDEgcm9sbCAuZm9yY2VwdXQKLSsgICAgICAgICAgICAgICAgICBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgfSBpZgotKyAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAlIE5vIGV4aXN0aW5nIEcyVSwgbWFrZSBvbmUKLSsgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgZHVwIHdjaGVjayB7Ci0rICAgICAgICAgICAgICAgICAgICAvL2ZhbHNlICAgICAgICAgICAgICAgICAgICAgJSBFeGlzdGluZywgd3JpdGVhYmxlIEcyVSwgZG9uJ3QgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgICBwb3AgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nIHJlYWQgb25seSBHMlUsIG1ha2UgbmV3IG9uZQotKyAgICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAxMDAgZGljdCBkdXAgNCAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgMyAyIHJvbGwgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLSsKLSsgICAgICAgICAgICAgICAgMCAxIDY1NTM1ewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgaW5kZXgKLSsgICAgICAgICAgICAgICAgICBkdXAgZHVwIDI1NiBtb2QgZXhjaCAyNTYgaWRpdiAgICAgICAgICUgZzJ1IGluZGV4IGxvLWJ5dGUgaGktYnl0ZQotKyAgICAgICAgICAgICAgICAgIDIgc3RyaW5nIGR1cCAwIDQgLTEgcm9sbCAgICAgICAgICAgICAgJSBnMnUgaW5kZXggbG8tYnl0ZSAoKSAoKSAwIGhpLWJ5dGUKLSsgICAgICAgICAgICAgICAgICBwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGluZGV4IGxvLWJ5dGUgKHgpCi0rICAgICAgICAgICAgICAgICAgZHVwIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleCBsby1ieXRlICh4KSAoeCkgMQotKyAgICAgICAgICAgICAgICAgIDQgLTEgcm9sbCBwdXQgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgaW5kZXggKHgpICh4KSAxIGxvLWJ5dGUgLT4gZGljdCBpbmRleCAoeHgpCi0rICAgICAgICAgICAgICAgICAgMiBpbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleCAoeHgpIGRpY3QKLSsgICAgICAgICAgICAgICAgICAzIDEgcm9sbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGcydSBpbmRleCAoeHgpCi0rICAgICAgICAgICAgICAgICAgcHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydQotKyAgICAgICAgICAgICAgICB9IGZvcgotKyAgICAgICAgICAgICAgICBwb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgZW5jb2Rpbmd8bnVsbCBmb250LWluZm8KLSsgICAgICAgICAgICAgICAgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwKLSsgICAgICAgICAgICAgICAgLy9mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgV2UgYnVpbHQgYSBHbHlwaE5hbWVzMlVuaWNvZGUgdGFibGUsIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBmdXJ0aGVyCi0rICAgICAgICAgICAgICB9ewotKyAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBuYW1lIGlzIG5vdCBJZGVudGl0eS1WIG9yIEgsIGZhaWwgYnkgZmFsbGluZyB0aHJvdWdoCi0rICAgICAgICAgICAgICB9aWZlbHNlCi0gICAgICAgICAgIH0gewotLSAgICAgICAgICAgIC9QREZTY2FuUnVsZXMgLmdldHVzZXJwYXJhbSBkdXAgLy9udWxsIGVxIHsKLS0gICAgICAgICAgICAgIHBvcCAvL1BERlNjYW5SdWxlc19udWxsCi0tICAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgICAxIGRpY3QgZHVwIC9QREZTY2FuUnVsZXMgNCAtMSByb2xsIHB1dAotLSAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgICAgLy9QREZTY2FuUnVsZXNfdHJ1ZSBzZXR1c2VycGFyYW1zCi0tICAgICAgICAgICAgUERGZmlsZSBmaWxlcG9zaXRpb24KLS0gICAgICAgICAgICAzIC0xIHJvbGwKLS0gICAgICAgICAgICBjb3VudCAxIHN1YgotLSAgICAgICAgICAgIGNvdW50ZGljdHN0YWNrCi0tICAgICAgICAgICAgeyAvL2ZhbHNlIHJlc29sdmVzdHJlYW0KLS0gICAgICAgICAgICAgICUgRm9sbG93aW5nIEFjcm9iYXQgd2UgaWdub3JlIGV2ZXJ5dGhpbmcgb3V0c2lkZQotLSAgICAgICAgICAgICAgJSAgIGJlZ2luY29kZXNwYWNlcmFuZ2UgLi4gZW5kY21hcC4KLS0gICAgICAgICAgICAgIGR1cCAwIChiZWdpbmNvZGVzcGFjZXJhbmdlKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgZmx1c2hmaWxlCi0tICAgICAgICAgICAgICAvQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW4KLS0gICAgICAgICAgICAgIC8vVG9Vbmljb2RlQ01hcFJlYWRlciBiZWdpbgotLSAgICAgICAgICAgICAgMTIgZGljdCBiZWdpbgotLSAgICAgICAgICAgICAgL0NNYXBUeXBlIDIgZGVmCi0tICAgICAgICAgICAgICBtYXJrIGV4Y2ggJSBlbXVsYXRlICdiZWdpbmNvZGVzcGFjZXJhbmdlJwotLSAgICAgICAgICAgICAgMCAoZW5kY21hcCkgL1N1YkZpbGVEZWNvZGUgZmlsdGVyIGN2eCAvYmVnaW5jbWFwIGN2eCBleGNoIDIgLmV4ZWNuCi0tICAgICAgICAgICAgICBlbmRjbWFwCi0tICAgICAgICAgICAgICB1c2VyZGljdCAvLmxhc3RUb1VuaWNvZGUgY3VycmVudGRpY3QgcHV0Ci0tICAgICAgICAgICAgICBlbmQgZW5kIGVuZAotLSAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAvL3RydWUKLSsgICAgICAgICAgfSBpZmVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbm90IGEgbmFtZSwgdHJ5IGFzIGEgZGljdGlvbmFyeSAoYXMgc3BlY2lmaWVkKQotIAotLSAgICAgICAgICAgIFBERlNUT1BPTkVSUk9SIHsKLS0gICAgICAgICAgICAgIHsgZXhlYyB9IDAgZ2V0Ci0tICAgICAgICAgICAgICAvL2ZhbHNlCi0tICAgICAgICAgICAgICA1IC0yIHJvbGwKLS0gICAgICAgICAgICAgIDUKLSsgICAgICAgICAgJSBJZiB0aGUgVG9Vbmljb2RlIGlzbid0IGEgbmFtZSwgb3IgdGhlIG5hbWUgaXNuJ3QgSWRlbnRpdHktViBvciAtSCB0aGVuIGZvbGxvdyB0aGUgc3BlY2lmaWNhdGlvbgotKyAgICAgICAgICAlIElmIGl0cyBub3QgYSBkaWN0aW9uYXJ5IHR5cGUgdGhyb3cgYW4gZXJyb3IsIG90aGVyd2lzZSBkZWNvZGUgaXQgYW5kIGJ1aWxkIGEgR2x5cGhOYW1lczJVbmljb2RlCi0rICAgICAgICAgICUKLSsgICAgICAgICAgewotKyAgICAgICAgICAgIGR1cCB0eXBlIC9kaWN0dHlwZSBlcSB7IGR1cCAvRmlsZSBrbm93biBub3QgfSB7IC8vdHJ1ZSB9IGlmZWxzZSB7Ci0rICAgICAgICAgICAgICAlIFdlIHVuZGVmaW5lIHdyb25nIC9MZW5ndGggYW5kIGRlZmluZSAvRmlsZSBpbiBzdHJlYW0gZGljdGlvbmFyaWVzLgotKyAgICAgICAgICAgICAgJSBCdWc2ODczNTEucGRmIGRlZmluZXMgL1RvVW5pY29kZSAvSWRlbnRpdHktSCwgd2hhdCBpcyBpbmNvcnJlY3QuCi0rICAgICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBJZ25vcmluZyBiYWQgVG9Vbmljb2RlIENNYXAuXG4pICBwZGZmb3JtYXR3YXJuaW5nCi0rICAgICAgICAgICAgICBwb3AKLSAgICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgIHsgc3RvcHBlZCB9IDAgZ2V0Ci0tICAgICAgICAgICAgICA0IDIgcm9sbAotLSAgICAgICAgICAgICAgNAotLSAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgICAgYXJyYXkgYXN0b3JlIGN2eCBleGVjCi0rICAgICAgICAgICAgICAvUERGU2NhblJ1bGVzIC5nZXR1c2VycGFyYW0gZHVwIC8vbnVsbCBlcSB7Ci0rICAgICAgICAgICAgICAgIHBvcCAvL1BERlNjYW5SdWxlc19udWxsCi0rICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgMSBkaWN0IGR1cCAvUERGU2NhblJ1bGVzIDQgLTEgcm9sbCBwdXQKLSsgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAvL1BERlNjYW5SdWxlc190cnVlIHNldHVzZXJwYXJhbXMKLSsgICAgICAgICAgICAgIFBERmZpbGUgZmlsZXBvc2l0aW9uCi0rICAgICAgICAgICAgICAzIC0xIHJvbGwKLSsgICAgICAgICAgICAgIGNvdW50IDEgc3ViCi0rICAgICAgICAgICAgICBjb3VudGRpY3RzdGFjawotKyAgICAgICAgICAgICAgeyAvL2ZhbHNlIHJlc29sdmVzdHJlYW0KLSsgICAgICAgICAgICAgICAgJSBGb2xsb3dpbmcgQWNyb2JhdCB3ZSBpZ25vcmUgZXZlcnl0aGluZyBvdXRzaWRlCi0rICAgICAgICAgICAgICAgICUgICBiZWdpbmNvZGVzcGFjZXJhbmdlIC4uIGVuZGNtYXAuCi0rICAgICAgICAgICAgICAgIGR1cCAwIChiZWdpbmNvZGVzcGFjZXJhbmdlKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgZmx1c2hmaWxlCi0rICAgICAgICAgICAgICAgIC9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbgotKyAgICAgICAgICAgICAgICAvL1RvVW5pY29kZUNNYXBSZWFkZXIgYmVnaW4KLSsgICAgICAgICAgICAgICAgMTIgZGljdCBiZWdpbgotKyAgICAgICAgICAgICAgICAvQ01hcFR5cGUgMiBkZWYKLSsgICAgICAgICAgICAgICAgbWFyayBleGNoICUgZW11bGF0ZSAnYmVnaW5jb2Rlc3BhY2VyYW5nZScKLSsgICAgICAgICAgICAgICAgMCAoZW5kY21hcCkgL1N1YkZpbGVEZWNvZGUgZmlsdGVyIGN2eCAvYmVnaW5jbWFwIGN2eCBleGNoIDIgLmV4ZWNuCi0rICAgICAgICAgICAgICAgIGVuZGNtYXAKLSsgICAgICAgICAgICAgICAgdXNlcmRpY3QgLy5sYXN0VG9Vbmljb2RlIGN1cnJlbnRkaWN0IHB1dAotKyAgICAgICAgICAgICAgICBlbmQgZW5kIGVuZAotKyAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgIGNvdW50ZGljdHN0YWNrIGV4Y2ggc3ViIDAgLm1heCB7IGVuZCB9IHJlcGVhdAotLSAgICAgICAgICAgIGNvdW50IGV4Y2ggc3ViIDIgc3ViIDAgLm1heCB7IGV4Y2ggcG9wIH0gcmVwZWF0Ci0tICAgICAgICAgICAgMyAxIHJvbGwgICAgICAgICAgICAgICAgICAgICAlIFN0YWNoIHRoZSBzdG9wIGZsYWcuCi0tICAgICAgICAgICAgUERGZmlsZSBleGNoIHNldGZpbGVwb3NpdGlvbgotLSAgICAgICAgICAgIHNldHVzZXJwYXJhbXMKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBGYWlsZWQgdG8gcmVhZCBUb1VuaWNvZGUgQ01hcC5cbikgIHBkZmZvcm1hdHdhcm5pbmcKLS0gICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgIDEgaW5kZXggL0ZvbnRJbmZvIC5rbm93bmdldCBub3QgewotLSAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIDIgaW5kZXggZHVwIGdjaGVjayBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgICAgL0ZvbnRJbmZvIDUgZGljdCBkdXAgNSAxIHJvbGwgLmZvcmNlcHV0Ci0tICAgICAgICAgICAgICAgIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgfSBpZgotLSAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0tICAgICAgICAgICAgICAgIC8vdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICUgTm8gZXhpc3RpbmcgRzJVLCBtYWtlIG9uZQotKyAgICAgICAgICAgICAgUERGU1RPUE9ORVJST1IgewotKyAgICAgICAgICAgICAgICB7IGV4ZWMgfSAwIGdldAotKyAgICAgICAgICAgICAgICAvL2ZhbHNlCi0rICAgICAgICAgICAgICAgIDUgLTIgcm9sbAotKyAgICAgICAgICAgICAgICA1Ci0rICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgeyBzdG9wcGVkIH0gMCBnZXQKLSsgICAgICAgICAgICAgICAgNCAyIHJvbGwKLSsgICAgICAgICAgICAgICAgNAotKyAgICAgICAgICAgICAgfSBpZmVsc2UKLSsgICAgICAgICAgICAgIGFycmF5IGFzdG9yZSBjdnggZXhlYwotKwotKyAgICAgICAgICAgICAgY291bnRkaWN0c3RhY2sgZXhjaCBzdWIgMCAubWF4IHsgZW5kIH0gcmVwZWF0Ci0rICAgICAgICAgICAgICBjb3VudCBleGNoIHN1YiAyIHN1YiAwIC5tYXggeyBleGNoIHBvcCB9IHJlcGVhdAotKyAgICAgICAgICAgICAgMyAxIHJvbGwgICAgICAgICAgICAgICAgICAgICAlIFN0YWNoIHRoZSBzdG9wIGZsYWcuCi0rICAgICAgICAgICAgICBQREZmaWxlIGV4Y2ggc2V0ZmlsZXBvc2l0aW9uCi0rICAgICAgICAgICAgICBzZXR1c2VycGFyYW1zCi0rICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICggICAqKioqIFdhcm5pbmc6IEZhaWxlZCB0byByZWFkIFRvVW5pY29kZSBDTWFwLlxuKSAgcGRmZm9ybWF0d2FybmluZwotICAgICAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgICAgIGR1cCB3Y2hlY2sgewotLSAgICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nLCB3cml0ZWFibGUgRzJVLCBkb24ndCBtYWtlIG5ldyBvbmUKLSsgICAgICAgICAgICAgICAgMSBpbmRleCAvRm9udEluZm8gLmtub3duZ2V0IG5vdCB7Ci0rICAgICAgICAgICAgICAgICAgY3VycmVudGdsb2JhbCAyIGluZGV4IGR1cCBnY2hlY2sgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgICAgL0ZvbnRJbmZvIDUgZGljdCBkdXAgNSAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYKLSsgICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0rICAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgJSBObyBleGlzdGluZyBHMlUsIG1ha2Ugb25lCi0gICAgICAgICAgICAgICAgIH0gewotLSAgICAgICAgICAgICAgICAgIHBvcCAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICUgRXhpc3RpbmcgcmVhZCBvbmx5IEcyVSwgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgZHVwIHdjaGVjayB7Ci0rICAgICAgICAgICAgICAgICAgICAvL2ZhbHNlICAgICAgICAgICAgICAgICAgICAgJSBFeGlzdGluZywgd3JpdGVhYmxlIEcyVSwgZG9uJ3QgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgICBwb3AgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nIHJlYWQgb25seSBHMlUsIG1ha2UgbmV3IG9uZQotKyAgICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0gICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAxMDAgZGljdCBkdXAgNCAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgMyAyIHJvbGwgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLSsgICAgICAgICAgICAgICAgZXhjaCBwb3AgZXhjaCAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBlbmNvZGluZ3xudWxsCi0rICAgICAgICAgICAgICAgIHVzZXJkaWN0IC8ubGFzdFRvVW5pY29kZSBnZXQgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBnMnUgRW5jb2Rpbmd8bnVsbCBDTWFwCi0rICAgICAgICAgICAgICAgIC5jb252ZXJ0X1RvVW5pY29kZS1pbnRvLWcydSAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdAotKyAgICAgICAgICAgICAgICAvL251bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgLy9udWxsCi0gICAgICAgICAgICAgICB9IGlmZWxzZQotLSAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgMTAwIGRpY3QgZHVwIDQgMSByb2xsIC5mb3JjZXB1dAotLSAgICAgICAgICAgICAgICAzIDIgcm9sbCBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLS0gICAgICAgICAgICAgIGV4Y2ggcG9wIGV4Y2ggICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBnMnUgZW5jb2Rpbmd8bnVsbAotLSAgICAgICAgICAgICAgdXNlcmRpY3QgLy5sYXN0VG9Vbmljb2RlIGdldCAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBFbmNvZGluZ3xudWxsIENNYXAKLS0gICAgICAgICAgICAgIC5jb252ZXJ0X1RvVW5pY29kZS1pbnRvLWcydSAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdAotLSAgICAgICAgICAgICAgLy9udWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IC8vbnVsbAotICAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICB9IGlmCi0tICAgICAgICBQREZERUJVRyB7Ci0tICAgICAgICAgICgucHJvY2Vzc1RvVW5pY29kZSBlbmQpID0KLSsgICAgICAgICAgfSBpZgotKyAgICAgICAgICBQREZERUJVRyB7Ci0rICAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGVuZCkgPQotKyAgICAgICAgICB9IGlmCi0gICAgICAgICB9IGlmCi0gICAgICAgfSBpZgotICAgICB9IHN0b3BwZWQKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDgxNy0wMDAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzQ4ZmZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotRnJvbSBjZDFiMWNhY2FkYWMyNDc5ZTI5MWVmZTYxMTk3OWJkYzFiM2JkYjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VuIFNoYXJwIDxrZW4uc2hhcnBAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDEwOjEwOjUxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBQREYgaW50ZXJwcmV0ZXIgLSByZXZpZXcgLmZvcmNlcHV0IHNlY3VyaXR5Ci0KLUJ1ZyAjNzAxNDUwICJTYWZlciBNb2RlIEJ5cGFzcyBieSAuZm9yY2VwdXQgRXhwb3N1cmUgaW4gLnBkZmV4ZWN0b2tlbiIKLQotQnkgYWJ1c2luZyB0aGUgZXJyb3IgaGFuZGxlciBpdCB3YXMgcG9zc2libGUgdG8gZ2V0IHRoZSBQREZERUJVRyBwb3J0aW9uCi1vZiAucGRmZXhlY3Rva2VuLCB3aGljaCB1c2VzIC5mb3JjZXB1dCBsZWZ0IHJlYWRhYmxlLgotCi1BZGQgYW4gZXhlY3V0ZW9ubHkgYXBwcm9wcmlhdGVseSB0byBtYWtlIHN1cmUgdGhhdCBjbGF1c2UgaXNuJ3QgcmVhZGFibGUKLW5vIG1zdHRlciB3aGF0LgotCi1SZXZpZXcgYWxsIHRoZSB1c2VzIG9mIC5mb3JjZXB1dCBzZWFyY2hpbmcgZm9yIHNpbWlsYXIgY2FzZXMsIGFkZAotZXhlY3V0ZW9ubHkgYXMgcmVxdWlyZWQgdG8gc2VjdXJlIHRob3NlLiBBbGwgY2FzZXMgaW4gdGhlIFBvc3RTY3JpcHQKLXN1cHBvcnQgZmlsZXMgc2VlbSB0byBiZSBjb3ZlcmVkIGFscmVhZHkuCi0KLUNWRTogQ1ZFLTIwMTktMTQ4MTcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzIHwgIDIgKy0KLSBSZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzIHwgMTQgKysrKysrKy0tLS0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzIHwgIDYgKysrLS0tCi0gUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzICB8IDExICsrKysrKy0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2Jhc2UucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzCi1pbmRleCAxYTIxOGY0Li5jZmZkZTVjIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcwotQEAgLTE1Nyw3ICsxNTcsNyBAQCBjdXJyZW50ZGljdCAvbnVtLWNoYXJzLWRpY3QgLnVuZGVmCi0gICAgIHsKLSAgICAgICBkdXAgPT1vbmx5ICgpID0gZmx1c2gKLSAgICAgfSBpZmVsc2UgJSBQREZTVEVQCi0tICB9IGlmICUgUERGREVCVUcKLSsgIH0gZXhlY3V0ZW9ubHkgaWYgJSBQREZERUJVRwotICAgMiBjb3B5IC5rbm93bmdldCB7Ci0gICAgIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4ZWMKLSAgIH0gewotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2RyYXcucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCi1pbmRleCBlMThhN2MyLi4wYTM5MjRjIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcwotQEAgLTUwMSw4ICs1MDEsOCBAQCBlbmQKLSAgICAgICAoICAgICAgICBPdXRwdXQgbWF5IGJlIGluY29ycmVjdC5cbikgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICAvL3BkZmRpY3QgLy5nc193YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgUERGU1RPUE9ORVJST1IgeyAvZ3MgL3VuZGVmaW5lZCBzaWduYWxlcnJvciB9IGlmCi0tICAgIH0gaWYKLS0gIH0KLSsgICAgfSBleGVjdXRlb25seSBpZgotKyAgfSBleGVjdXRlb25seQotICAgaWZlbHNlCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgotIAotQEAgLTExNDIsNyArMTE0Miw3IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gICAgICB9Ci0rICAgICAgfSBleGVjdXRlb25seQotICAgICAgIHsKLSAgICAgICAgIGN1cnJlbnRnbG9iYWwgLy9wZGZkaWN0IGdjaGVjayAuc2V0Z2xvYmFsCi0gICAgICAgICAvL3BkZmRpY3QgLy5RcXdhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLUBAIC0xMTUwLDggKzExNTAsOCBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0gICAgICAgZW5kCi0tICAgIH0gaWZlbHNlCi0tICB9IGxvb3AKLSsgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLSsgIH0gZXhlY3V0ZW9ubHkgbG9vcAotICAgewotICAgICAoXG4gICAqKioqIEVycm9yOiBGaWxlIGhhcyB1bmJhbGFuY2VkIHEvUSBvcGVyYXRvcnMgXCh0b28gbWFueSBxJ3NcKVxuICAgICAgICAgICAgICAgT3V0cHV0IG1heSBiZSBpbmNvcnJlY3QuXG4pCi0gICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLmtub3duZ2V0Ci1AQCAtMTE2NSwxNCArMTE2NSwxNCBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICAgIH0KLSsgICAgfSBleGVjdXRlb25seQotICAgICB7Ci0gICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAvL3BkZmRpY3QgLy5RcXdhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLSAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gIH0gaWYKLSsgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgIHBvcAotIAotICAgJSByZXN0b3JlIHBkZmVtcHR5Y291bnQKLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcwotaW5kZXggMmRmMzMwMy4uNmE2YTVmZSAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLUBAIC02MzgsNyArNjM4LDcgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgMiBpbmRleCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotICAgICAgICAgICAgICAgICAgIC9Gb250SW5mbyA1IGRpY3QgZHVwIDUgMSByb2xsIC5mb3JjZXB1dAotICAgICAgICAgICAgICAgICAgIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgICB9IGlmCi0rICAgICAgICAgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0gICAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgJSBObyBleGlzdGluZyBHMlUsIG1ha2Ugb25lCi0gICAgICAgICAgICAgICAgIH0gewotQEAgLTY2OCwxMCArNjY4LDEyIEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgICAgICAgICAgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwgZm9udC1pbmZvCi0gICAgICAgICAgICAgICAgIHBvcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsCi0gICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIFdlIGJ1aWx0IGEgR2x5cGhOYW1lczJVbmljb2RlIHRhYmxlLCBkb24ndCBuZWVkIHRvIHByb2Nlc3MgZnVydGhlcgotLSAgICAgICAgICAgICAgfXsKLSsgICAgICAgICAgICAgIH0gZXhlY3V0ZW9ubHkKLSsgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbmFtZSBpcyBub3QgSWRlbnRpdHktViBvciBILCBmYWlsIGJ5IGZhbGxpbmcgdGhyb3VnaAotICAgICAgICAgICAgICAgfWlmZWxzZQotLSAgICAgICAgICB9IHsKLSsgICAgICAgICAgfSBleGVjdXRlb25seQotKyAgICAgICAgICB7Ci0gICAgICAgICAgICAgLy90cnVlCi0gICAgICAgICAgIH0gaWZlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG5vdCBhIG5hbWUsIHRyeSBhcyBhIGRpY3Rpb25hcnkgKGFzIHNwZWNpZmllZCkKLSAKLUBAIC03NTksOSArNzYxLDkgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICBQREZERUJVRyB7Ci0gICAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGVuZCkgPQotICAgICAgICAgICB9IGlmCi0tICAgICAgICB9IGlmCi0tICAgICAgfSBpZgotLSAgICB9IHN0b3BwZWQKLSsgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSsgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0rICAgIH0gZXhlY3V0ZW9ubHkgc3RvcHBlZAotICAgICB7Ci0gICAgICAgLmRzdGFja2RlcHRoIDEgY291bnRkaWN0c3RhY2sgMSBzdWIKLSAgICAgICB7cG9wIGVuZH0gZm9yCi1AQCAtMTI5MSwxOSArMTI5MywyMCBAQCBjdXJyZW50ZGljdCAvZWV4ZWNfcGRmX3BhcmFtX2RpY3QgLnVuZGVmCi0gICAgICAgICAgICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotICAgICAgICAgICAgICAgfSBleGVjdXRlb25seSBpZgotICAgICAgICAgICAgICAgUQotLSAgICAgICAgICAgIH0gcmVwZWF0Ci0rICAgICAgICAgICAgfSBleGVjdXRlb25seSByZXBlYXQKLSAgICAgICAgICAgICBRCi0tICAgICAgICAgIH0gUERGZmlsZSBmaWxlcG9zaXRpb24gMiAuZXhlY24gJSBLZWVwIHBkZmNvdW50IHZhbGlkLgotKyAgICAgICAgICB9IGV4ZWN1dGVvbmx5IFBERmZpbGUgZmlsZXBvc2l0aW9uIDIgLmV4ZWNuICUgS2VlcCBwZGZjb3VudCB2YWxpZC4KLSAgICAgICAgICAgUERGZmlsZSBleGNoIHNldGZpbGVwb3NpdGlvbgotLSAgICAgICAgfSBpZmVsc2UKLS0gICAgICB9IHsKLSsgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0rICAgICAgfSBleGVjdXRlb25seQotKyAgICAgIHsKLSAgICAgICAgICUgUERGIFR5cGUgMyBmb250cyBkb24ndCB1c2UgLm5vdGRlZgotICAgICAgICAgJSBkMSBpbXBsZW1lbnRhdGlvbiBhZGp1c3RzIHRoZSB3aWR0aCBhcyBuZWVkZWQKLSAgICAgICAgIDAgMCAwIDAgMCAwCi0gICAgICAgICBwZGZvcGRpY3QgL2QxIGdldCBleGVjCi0gICAgICAgfSBpZmVsc2UKLSAgICAgICBlbmQgZW5kCi0tICAgIH0gYmRlZgotKyAgICB9IGV4ZWN1dGVvbmx5IGJkZWYKLSAgICAgZHVwIGN1cnJlbnRkaWN0IEVuY29kaW5nIC5wcm9jZXNzVG9Vbmljb2RlCi0gICAgIGN1cnJlbnRkaWN0IGVuZCAuY29tcGxldGVmb250IGV4Y2ggcG9wCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLUBAIC0yMTAzLDkgKzIxMDYsOSBAQCBjdXJyZW50ZGljdCAvQ01hcF9yZWFkX2RpY3QgdW5kZWYKLSAgICAgICAgICAgKFdpbGwgY29udGludWUsIGJ1dCBjb250ZW50IG1heSBiZSBtaXNzaW5nLikgPSBmbHVzaAotICAgICAgICAgfSBpZmVsc2UKLSAgICAgICB9IGlmCi0tICAgIH0gaWYKLSsgICAgfSBleGVjdXRlb25seSBpZgotICAgICAvZmluZHJlc291cmNlIGN2eCAvdW5kZWZpbmVkIHNpZ25hbGVycm9yCi0tICB9IGxvb3AKLSsgIH0gZXhlY3V0ZW9ubHkgbG9vcAotIH0gYmluZCBleGVjdXRlb25seSBvZGVmCi0gCi0gL2J1aWxkQ0lEVHlwZTAgewklIDxDSURGb250VHlwZTAtZm9udC1yZXNvdXJjZT4gYnVpbGRDSURUeXBlMCA8Zm9udD4KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcwotaW5kZXggNTMwNWVhNi4uYTU5ZTYzYyAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMKLUBAIC0yNzQ5LDE1ICsyNzQ5LDE1IEBAIGN1cnJlbnRkaWN0IC9QREYyUFNfbWF0cml4X2tleSB1bmRlZgotICAgICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICAgIH0KLSsgICAgICB9IGV4ZWN1dGVvbmx5Ci0gICAgICAgewotICAgICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICB9IGlmCi0tICB9IGlmCi0rICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSsgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgIHBvcAotICAgY291bnQgUERGZXhlY3N0YWNrY291bnQgc3ViIHsgcG9wIH0gcmVwZWF0Ci0gICAoYWZ0ZXIgZXhlYykgVk1ERUJVRwotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcyBiL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcwotaW5kZXggMjg1ZTU4Mi4uNmMxZjEwMCAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzCi1AQCAtMTg2LDE0ICsxODYsMTQgQEAgY3VycmVudGRpY3QgL2dwdXRfYWx3YXlzX2FsbG93IC51bmRlZgotICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICB9Ci0rICAgIH0gZXhlY3V0ZW9ubHkKLSAgICAgewotICAgICAgIGN1cnJlbnRnbG9iYWwgLy9wZGZkaWN0IGdjaGVjayAuc2V0Z2xvYmFsCi0gICAgICAgLy9wZGZkaWN0IC8uUXF3YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgLnNldGdsb2JhbAotICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICB9IGlmCi0rICB9IGV4ZWN1dGVvbmx5IGlmCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLSAKLSAlIFNhdmUgUERGIGdzdGF0ZQotQEAgLTQ0MCwxMSArNDQwLDEyIEBAIGN1cnJlbnRkaWN0IC9ncHV0X2Fsd2F5c19hbGxvdyAudW5kZWYKLSAgIGR1cCB0eXBlIC9ib29sZWFudHlwZSBlcSB7Ci0gICAgIC5jdXJyZW50U01hc2sgdHlwZSAvZGljdHR5cGUgZXEgewotICAgICAgIC5jdXJyZW50U01hc2sgL1Byb2Nlc3NlZCAyIGluZGV4IC5mb3JjZXB1dAotKyAgICB9IGV4ZWN1dGVvbmx5Ci0rICAgIHsKLSsgICAgICAuc2V0U01hc2sKLSsgICAgfWlmZWxzZQotICAgfSBleGVjdXRlb25seQotICAgewotLSAgICAgIC5zZXRTTWFzawotLSAgfWlmZWxzZQotLSAgfXsKLSAgIC5zZXRTTWFzawotICAgfWlmZWxzZQotIAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4NjktMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE1ZWMxYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA0ODU5MDQ3NzJjNWYwYWExMTQwMDMyNzQ2ZTVhMGFiZmM0MGY0Y2VmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFR1ZSwgNSBOb3YgMjAxOSAwOTo0NToyNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBCdWcgNzAxODQxOiByZW1vdmUgLmZvcmNlcHV0IGZyb20gLy5jaGFya2V5cworCitXaGVuIGxvYWRpbmcgVHlwZSAxIG9yIFRydWV0eXBlIGZvbnRzIGZyb20gZGlzaywgd2UgYXR0ZW1wdCB0byBleHRlbmQgdGhlIGdseXBoCituYW1lIHRhYmxlIHRvIGluY2x1ZGUgYWxsIGlkZW50aWZpYWJsZSBnbHlwaCBuYW1lcyBmcm9tIHRoZSBBZG9iZSBHbHlwaCBMaXN0LgorCitJbiB0aGUgY2FzZSBvZiBUeXBlIDEgZm9udHMsIHRoZSBmb250IGl0c2VsZiAoYWxtb3N0IGFsd2F5cykgbWFya3MgdGhlCitDaGFyU3RyaW5ncyBkaWN0aW9uYXJ5IGFzIHJlYWQtb25seSwgaGVuY2Ugd2UgaGF2ZSB0byB1c2UgLmZvcmNlcHV0IGZvciB0aGF0CitjYXNlLgorCitCdXQgZm9yIFRydWV0eXBlIGZvbnRzLCB0aGUgQ2hhclN0cmluZ3MgZGljdGlvbmFyeSBpcyBjcmVhdGVkIGludGVybmFsbHkgYW5kIGlzCitub3QgcmVhZC1vbmx5IHVudGlsICphZnRlciogd2UgaGF2ZSBmdWxseSBwb3B1bGF0ZWQgaXQgKGluY2x1ZGluZyB0aGUgZXh0ZW5kZWQKK2dseXBoIG5hbWVzIGZyb20gdGhlIEFHTCksIGhlbmNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yIC5mb3JjZXB1dCwgYW5kIG5vIG5lZWQgdG8KK2NhcnJ5IHRoZSBzZWN1cml0eSByaXNrIG9mIHVzaW5nIGl0LgorCitSZXBsYWNlIHdpdGggcmVndWxhciBwdXQuCisKK0NWRTogQ1ZFLTIwMTktMTQ4NjkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQorCitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc190dGYucHMgYi9SZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcworaW5kZXggZTM0OTY3ZC4uNTM1NGZmMCAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfdHRmLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcworQEAgLTEzMDEsNyArMTMwMSw3IEBAIGN1cnJlbnRkaWN0IC8ucGlja2NtYXBfd2l0aF9ub194bGF0bWFwIC51bmRlZgorICAgICAgICAgICBUVEZERUJVRyB7IChcbjEgc2V0dGluZyBhbGlhczogKSBwcmludCBkdXAgPT1vbmx5CisgICAgICAgICAgICAgICAgICggdG8gYmUgdGhlIHNhbWUgYXMgICkgcHJpbnQgMiBpbmRleCAvLz09IGV4ZWMgfSBpZgorIAorLSAgICAgICAgICA3IGluZGV4IDIgaW5kZXggMyAtMSByb2xsIGV4Y2ggLmZvcmNlcHV0CisrICAgICAgICAgIDcgaW5kZXggMiBpbmRleCAzIC0xIHJvbGwgZXhjaCBwdXQKKyAgICAgICAgIH0gZm9yYWxsCisgICAgICAgICBwb3AgcG9wIHBvcAorICAgICAgIH0KK0BAIC0xMzE5LDcgKzEzMTksNyBAQCBjdXJyZW50ZGljdCAvLnBpY2tjbWFwX3dpdGhfbm9feGxhdG1hcCAudW5kZWYKKyAgICAgICAgICAgZXhjaCBwb3AKKyAgICAgICAgICAgVFRGREVCVUcgeyAoXG4yIHNldHRpbmcgYWxpYXM6ICkgcHJpbnQgMSBpbmRleCA9PW9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAoIHRvIHVzZSBnbHlwaCBpbmRleDogKSBwcmludCBkdXAgLy89PSBleGVjIH0gaWYKKy0gICAgICAgICAgNSBpbmRleCAzIDEgcm9sbCAuZm9yY2VwdXQKKysgICAgICAgICAgNSBpbmRleCAzIDEgcm9sbCBwdXQKKyAgICAgICAgICAgLy9mYWxzZQorICAgICAgICAgfQorICAgICAgICAgeworQEAgLTEzMzYsNyArMTMzNiw3IEBAIGN1cnJlbnRkaWN0IC8ucGlja2NtYXBfd2l0aF9ub194bGF0bWFwIC51bmRlZgorICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICBDaGFyU3RyaW5ncyhkaWN0KSBpc3VuaWNvZGUoYm9vbGVhbikgY21hcChkaWN0KSBSQUdMKGRpY3QpIGduYW1lKG5hbWUpIGNvZGVwKGludGVnZXIpIGdpbmRleChpbnRlZ2VyKQorICAgICAgICAgICBUVEZERUJVRyB7IChcMyBuc2V0dGluZyBhbGlhczogKSBwcmludCAxIGluZGV4ID09b25seQorICAgICAgICAgICAgICAgICAoIHRvIGJlIGluZGV4OiApIHByaW50IGR1cCAvLz09IGV4ZWMgfSBpZgorLSAgICAgICAgICBleGNoIHBvcCA1IGluZGV4IDMgMSByb2xsIC5mb3JjZXB1dAorKyAgICAgICAgICBleGNoIHBvcCA1IGluZGV4IDMgMSByb2xsIHB1dAorICAgICAgICAgfQorICAgICAgICAgeworICAgICAgICAgICBwb3AgcG9wCitAQCAtMTM2Niw3ICsxMzY2LDcgQEAgY3VycmVudGRpY3QgLy5waWNrY21hcF93aXRoX25vX3hsYXRtYXAgLnVuZGVmCisgICAgICAgfSBpZmVsc2UKKyAgICAgXQorICAgVFRGREVCVUcgeyAoRW5jb2Rpbmc6ICkgcHJpbnQgZHVwID09PSBmbHVzaCB9IGlmCistfSAuYmluZCBleGVjdXRlb25seSBvZGVmCQklIGhpZGVzIC5mb3JjZXB1dAorK30gLmJpbmQgb2RlZgorIAorICUgLS0tLS0tLS0tLS0tLS0tLSBDSURGb250VHlwZSAyIGZvbnQgbG9hZGluZyAtLS0tLS0tLS0tLS0tLS0tICUKKyAKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pY3JvYmxhemVlYi9vYmphcmNoLmggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taWNyb2JsYXplL29iamFyY2guaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWViL29iamFyY2guaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZS9vYmphcmNoLmgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3Bvd2VycGM2NGxlL29iamFyY2guaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3Bvd2VycGM2NGxlL29iamFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDVkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYzY0bGUvb2JqYXJjaC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIFBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIG1hY2hpbmUgYW5kIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4gKi8KKy8qIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgbWVjaGFuaWNhbGx5IGJ5IGdlbmFyY2guYy4gKi8KKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFNjYWxhciBhbGlnbm1lbnRzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0FMSUdOX1NIT1JUX01PRCAyCisjZGVmaW5lIEFSQ0hfQUxJR05fSU5UX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fTE9OR19NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX1BUUl9NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX0ZMT0FUX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fRE9VQkxFX01PRCA4CisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgc2l6ZXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfQ0hBUiAwCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfU0hPUlQgMQorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0lOVCAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9ORyAzCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9OR19MT05HIDMKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfR1hfQ09MT1JfSU5ERVggOAorI2RlZmluZSBBUkNIX1NJWkVPRl9QVFIgOAorI2RlZmluZSBBUkNIX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIEFSQ0hfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIEFSQ0hfRkxPQVRfTUFOVElTU0FfQklUUyAyNAorI2RlZmluZSBBUkNIX0RPVUJMRV9NQU5USVNTQV9CSVRTIDUzCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBVbnNpZ25lZCBtYXggdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX01BWF9VQ0hBUiAoKHVuc2lnbmVkIGNoYXIpMHhmZiArICh1bnNpZ25lZCBjaGFyKTApCisjZGVmaW5lIEFSQ0hfTUFYX1VTSE9SVCAoKHVuc2lnbmVkIHNob3J0KTB4ZmZmZiArICh1bnNpZ25lZCBzaG9ydCkwKQorI2RlZmluZSBBUkNIX01BWF9VSU5UICgodW5zaWduZWQgaW50KX4wICsgKHVuc2lnbmVkIGludCkwKQorI2RlZmluZSBBUkNIX01BWF9VTE9ORyAoKHVuc2lnbmVkIGxvbmcpfjBMICsgKHVuc2lnbmVkIGxvbmcpMCkKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfSVNfQklHX0VORElBTiAwCisjZGVmaW5lIEFSQ0hfUFRSU19BUkVfU0lHTkVEIDAKKyNkZWZpbmUgQVJDSF9GTE9BVFNfQVJFX0lFRUUgMQorI2RlZmluZSBBUkNIX0FSSVRIX1JTSElGVCAyCisjZGVmaW5lIEFSQ0hfRElWX05FR19QT1NfVFJVTkNBVEVTIDEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTFmM2UyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgotREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKLWEgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAotZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAotXAotRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAotb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCi1kb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKLQotREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTI3LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0ODExLTAwMDEucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDgxNy0wMDAxLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQ4MTctMDAwMi5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKLSAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMzOTkwYTUwNGEzYTIzYjliYWJlOWRlMDBlZDY1OTdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3NjBlOGJkZDA3YTA4ZGJkNDQ1MTg4YTY1NTdjYjcwZTYwY2NiNmE1NjAxZjdkYmZiYTBkMjI1ZTI4Y2UyODUiCi0KLSMgUHV0IHNvbWV0aGluZyBsaWtlCi0jCi0jICAgUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tZ2hvc3RzY3JpcHQgPSAiIHgxMSIKLSMKLSMgaW4gbG9jYWwuY29uZiB0byBlbmFibGUgYnVpbGRpbmcgd2l0aCBYMTEuICBCZSBjYXJlZnVsLiAgVGhlIG9yZGVyCi0jIG9mIHRoZSBvdmVycmlkZXMgbWF0dGVycyEKLSMKLSNQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBcCi0gICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXgsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQgZ3RrKzNcCi0gICAgICAgICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWxpYnBhcGVyIC0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAotICAgICAgICAgICAgICAgIENVUFNDT05GSUc9IiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2N1cHMtY29uZmlnIiBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKLQotIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAotIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyAtLXdpdGhvdXQtbGlicGFwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS1kaXNhYmxlLWZvbnRjb25maWcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZnJlZXR5cGUgLS1kaXNhYmxlLWN1cHMiCi0KLSMgVGhpcyBoYXMgYmVlbiBmaXhlZCB1cHN0cmVhbSBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIHN1YnZlcnQgdGhlIGNoZWNrIGZvciB0aW1lLmgKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0NDMKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0MjYKLUNGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLUJVSUxEX0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wIG9iagotCW1rZGlyIC1wIHNvb2JqCi0JaWYgWyAtZSAke1dPUktESVJ9L29iamFyY2guaCBdOyB0aGVuCi0JCWNwICR7V09SS0RJUn0vb2JqYXJjaC5oIG9iai9hcmNoLmgKLQlmaQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLQkjIGNvcHkgdG9vbHMgZnJvbSB0aGUgbmF0aXZlIGdob3N0c2NyaXB0IGJ1aWxkCi0JaWYgWyAiJHtQTn0iICE9ICJnaG9zdHNjcmlwdC1uYXRpdmUiIF07IHRoZW4KLQkJbWtkaXIgLXAgb2JqL2F1eCBzb29iagotCQlmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KLQkJCWNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9naG9zdHNjcmlwdC0ke1BWfS8kaSBvYmovYXV4LyRpCi0JCWRvbmUKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi0gICAgY3AgLXIgJHtTfS9SZXNvdXJjZSAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L2ljY3Byb2ZpbGVzICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotfQotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgbWtkaXIgLXAgb2JqCi0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCi0gICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQotICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSBvYmovYXV4LyRpICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkKLSAgICBkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIGdob3N0c2NyaXB0IGRvZXMgbm90IHN1cHBvcnRzICJhcmMiCi1DT01QQVRJQkxFX0hPU1QgPSAiXig/IWFyYykuKiIKLQotIyBzb21lIGVudHJpZXMgaW4gTlZEIHVzZXMgZ3BsX2dob3N0c2NyaXB0Ci1DVkVfUFJPRFVDVCA9ICJnaG9zdHNjcmlwdCBncGxfZ2hvc3RzY3JpcHQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjUwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS41MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWMzMjY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS41MC5iYgpAQCAtMCwwICsxLDEyOSBAQAorU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgorREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKK2EgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAorZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAorXAorRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAorb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCitkb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKKworREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTUwLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2ggXAorIgorCitTUkNfVVJJID0gIiR7U1JDX1VSSV9CQVNFfSBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCisgICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMDk3MGNmNjIyYmQ1YjQ2ZjY4ZWVjOTM4Mzc1Mzg3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjUzZTg5ZmQ2NDc4MTU4MjhmYzUxNzE2MTNlODYwZTg1MzViNjhmN2FmYmM5MWJmODlhZWU4ODY3NjljZTg5IgorCisjIFB1dCBzb21ldGhpbmcgbGlrZQorIworIyAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLWdob3N0c2NyaXB0ID0gIiB4MTEiCisjCisjIGluIGxvY2FsLmNvbmYgdG8gZW5hYmxlIGJ1aWxkaW5nIHdpdGggWDExLiAgQmUgY2FyZWZ1bC4gIFRoZSBvcmRlcgorIyBvZiB0aGUgb3ZlcnJpZGVzIG1hdHRlcnMhCisjCisjUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgXAorICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14LCB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IGd0ayszXAorICAgICAgICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1saWJwYXBlciAtLXdpdGgtc3lzdGVtLWxpYnRpZmYgLS13aXRob3V0LWpiaWcyZGVjIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLXdpdGgtY3Vwcy1zZXJ2ZXJiaW49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1jdXBzLWRhdGFkaXI9JHtkYXRhZGlyfS9jdXBzIFwKKyAgICAgICAgICAgICAgICBDVVBTQ09ORklHPSIke1NUQUdJTkdfQklORElSX0NST1NTfS9jdXBzLWNvbmZpZyIgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzYXJjaG8zMiA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCisKKyMgRXhwbGljaXR5IGRpc2FibGUgbGlidGlmZiwgZm9udGNvbmZpZywKKyMgZnJlZXR5cGUsIGN1cHMgZm9yIGdob3N0c2NyaXB0LW5hdGl2ZQorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmY9bm8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtamJpZzJkZWMgLS13aXRob3V0LWxpYnBhcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0tZGlzYWJsZS1mb250Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZyZWV0eXBlIC0tZGlzYWJsZS1jdXBzIgorCisjIFRoaXMgaGFzIGJlZW4gZml4ZWQgdXBzdHJlYW0gYnV0IGZvciBub3cgd2UgbmVlZCB0byBzdWJ2ZXJ0IHRoZSBjaGVjayBmb3IgdGltZS5oCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDQzCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDI2CitDRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCitCVUlMRF9DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCBvYmoKKwlta2RpciAtcCBzb29iagorCWlmIFsgLWUgJHtXT1JLRElSfS9vYmphcmNoLmggXTsgdGhlbgorCQljcCAke1dPUktESVJ9L29iamFyY2guaCBvYmovYXJjaC5oCisJZmkKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJIyBjb3B5IHRvb2xzIGZyb20gdGhlIG5hdGl2ZSBnaG9zdHNjcmlwdCBidWlsZAorCWlmIFsgIiR7UE59IiAhPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIiBdOyB0aGVuCisJCW1rZGlyIC1wIG9iai9hdXggc29vYmoKKwkJZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCisJCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQorCQlkb25lCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgeworICAgIG1rZGlyIC1wIG9iagorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbworICAgICAgICBvZV9ydW5tYWtlIG9iai9hdXgvJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0KKyAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgb2JqL2F1eC8kaSAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9LyRpCisgICAgZG9uZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBnaG9zdHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0cyAiYXJjIgorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhcmMpLioiCisKKyMgc29tZSBlbnRyaWVzIGluIE5WRCB1c2VzIGdwbF9naG9zdHNjcmlwdAorQ1ZFX1BST0RVQ1QgPSAiZ2hvc3RzY3JpcHQgZ3BsX2dob3N0c2NyaXB0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNGEzZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIGdyZXAgdXRpbGl0eSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2dyZXAvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9ncm91cD1ncmVwIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JlcC9ncmVwLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA1ZDA3MThhMWI3Y2M3MDZhNGJkZjgxMTUzNjNmMWVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjA1NDFjNDk5NjE5ZWZkNmFmZTFmYTc5NTQwMmU0NzMzYzhlMTFlYmY5ZmFmY2NjMGJiNGJjY2RjNWI1MTQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vbTQvaW5pdC5tNAotfQotCi1kb19pbnN0YWxsICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JCW12ICR7RH0ke2JpbmRpcn0vZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3JlcAotCQltdiAke0R9JHtiaW5kaXJ9L2VncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9lZ3JlcAotCQltdiAke0R9JHtiaW5kaXJ9L2ZncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9mZ3JlcAotCQlybWRpciAke0R9JHtiaW5kaXJ9LwotCWZpCi19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGVybC1yZWdleHAsLS1kaXNhYmxlLXBlcmwtcmVnZXhwLGxpYnBjcmUiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTc2ZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuNC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZWJiZDNlMzQyMzdhZjI2ZGE1ZGMwOGE0ZTQ0MDQ2NCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMTFiMTE3ZDIyZDZhN2QwNDlkNmFlNzUwNWU5YzRkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGU2NzUxYzQxYTdjMjViZmM2ZTkzNjNhNDE3ODZjZmYzYmE1NzA5Y2YxMWQ1YWQ5MDNjZjdjY2UzMWNjM2ZiIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCisKKyMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhQFNIRUxMQCwjIS9iaW4vc2gsJyAke1N9L3NyYy9lZ3JlcC5zaAorCXJtIC1mICR7U30vbTQvaW5pdC5tNAorfQorCitkb19pbnN0YWxsICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJCW12ICR7RH0ke2JpbmRpcn0vZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3JlcAorCQltdiAke0R9JHtiaW5kaXJ9L2VncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9lZ3JlcAorCQltdiAke0R9JHtiaW5kaXJ9L2ZncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9mZ3JlcAorCQlybWRpciAke0R9JHtiaW5kaXJ9LworCWZpCit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitQQUNLQUdFQ09ORklHID8/PSAicGNyZSIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGVybC1yZWdleHAsLS1kaXNhYmxlLXBlcmwtcmVnZXhwLGxpYnBjcmUiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9maWxlcy8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZmlsZXMvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bGl0bGliLWlkZW50aWNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTA1ZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZmlsZXMvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bGl0bGliLWlkZW50aWNhbC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGU3MzhmOTE4NWJhOTBmMjA4M2M4NDZhZGUzNTUxMjM0YmI1YTdjYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IFNhdCwgNyBNYXIgMjAyMCAwMDo1OToxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIG1hbnBhZ2VzIG11bGl0bGliIGlkZW50aWNhbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBkMThjNDliLi42MTc1ZmU5IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtOTE3LDcgKzkxNyw3IEBAIFNVRkZJWEVTICs9IC5tYW4KKyAJICAgICAtZSAic3xbQF1NREFURVtAXXxgJChQRVJMKSAkKHRvcF9zcmNkaXIpL21kYXRlLnBsICQ8YHxnIiBcCisgCSAgICAgLWUgInN8W0BdT0xERk9OVERJUltAXXxgZWNobyAkKG9sZGZvbnRkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKyAJICAgICAtZSAic3xbQF1QREZET0NESVJbQF18YGVjaG8gJChwZGZkb2NkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKy0JICAgICAtZSAic3xbQF1TWVNURU1NQUNST0RJUltAXXxgZWNobyAkKHN5c3RlbXRtYWNkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKysJICAgICAtZSAic3xbQF1TWVNURU1NQUNST0RJUltAXXxgZWNobyAkKHN5c3RlbXRtYWNkaXIpIHwgc2VkIC1lICdzLCQobGliZGlyKSwkKHByZWZpeCkvbGliKiwnIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKyAJICAgICAtZSAic3xbQF1UTUFDX0FOX1BSRUZJWFtAXXwkKHRtYWNfYW5fcHJlZml4KXxnIiBcCisgCSAgICAgLWUgInN8W0BdVE1BQ19NX1BSRUZJWFtAXXwkKHRtYWNfbV9wcmVmaXgpfGciIFwKKyAJICAgICAtZSAic3xbQF1UTUFDX01ESVJbQF18JCh0bWFjZGlyKS9tbXxnIiBcCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjQuYmIKaW5kZXggMDgyNTk3Zi4uZTM5ODQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuNC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCWZpbGU6Ly9ncm9mZi1ub3Qtc2VhcmNoLWZvbnRzLW9uLWJ1aWxkLWhvc3QucGF0Y2ggXAogCWZpbGU6Ly8wMDAxLXN1cHBvcnQtbXVzbC5wYXRjaCBcCiAJZmlsZTovLzAwMDEtSW5jbHVkZS1jb25maWcuaC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjA4ZmIwNDMzNWUyZjVlNzNmMjNlYTRjM2FkYmYwYzVmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgppbmRleCA1MGRhZDdiLi45Nzc4ZTY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgpAQCAtMTIsNyArMTIsNyBAQAogCiBQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBwZXJsLXB0ZXN0IGdyZXAgZGlmZnV0aWxzIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBncmVwIGRpZmZ1dGlscyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtdGVzdG1hc3Rlci5iYgppbmRleCA3ODI5NWM1Li4wZmFmMThmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXIuYmIKQEAgLTgsNyArOCw3IEBACiAjIG5vcm1hbCBsaW51eCB1dGlsaXRpZXMgbm90IGJ1c3lib3ggb25lcwogSU1BR0VfSU5TVEFMTCArPSAiXAogICAgIGJhc2ggY29yZXV0aWxzIHV0aWwtbGludXggdGFyIGd6aXAgYnppcDIga21vZCBcCi0gICAgcHl0aG9uLW1vZHVsZXMgcHl0aG9uLW1pc2MgXAorICAgIHB5dGhvbjMtbW9kdWxlcyBweXRob24zLW1pc2MgXAogICAgIGUyZnNwcm9ncyBlMmZzcHJvZ3MtbWtlMmZzIHBhcnRlZCBcCiAgICAgIgogIyB3ZSBuZWVkIGEgcGFydGljdWxhciBpbml0cmFtZnMgZm9yIGxpdmUgaW1hZ2VzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMucnVsZXMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMucnVsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwNnRhYmxlcy5ydWxlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXA2dGFibGVzLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzA1OWZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXA2dGFibGVzLnNlcnZpY2UKQEAgLTAsMCArMSwxMyBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1JUHY2IFBhY2tldCBGaWx0ZXJpbmcgRnJhbWV3b3JrCitCZWZvcmU9bmV0d29yay1wcmUudGFyZ2V0CitXYW50cz1uZXR3b3JrLXByZS50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPW9uZXNob3QKK0V4ZWNTdGFydD1AU0JJTkRJUkAvaXA2dGFibGVzLXJlc3RvcmUgLXcgLS0gQFJVTEVTRElSQC9pcDZ0YWJsZXMucnVsZXMKK0V4ZWNSZWxvYWQ9QFNCSU5ESVJAL2lwNnRhYmxlcy1yZXN0b3JlIC13IC0tIEBSVUxFU0RJUkAvaXA2dGFibGVzLnJ1bGVzCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwdGFibGVzLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcHRhYmxlcy5zZXJ2aWNlCmluZGV4IDA0MTMxNmUuLjBlYjNjMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwdGFibGVzLnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXB0YWJsZXMuc2VydmljZQpAQCAtMSwxMiArMSwxMiBAQAogW1VuaXRdCi1EZXNjcmlwdGlvbj1QYWNrZXQgRmlsdGVyaW5nIEZyYW1ld29yaworRGVzY3JpcHRpb249SVB2NCBQYWNrZXQgRmlsdGVyaW5nIEZyYW1ld29yawogQmVmb3JlPW5ldHdvcmstcHJlLnRhcmdldAogV2FudHM9bmV0d29yay1wcmUudGFyZ2V0CiAKIFtTZXJ2aWNlXQogVHlwZT1vbmVzaG90Ci1FeGVjU3RhcnQ9QFNCSU5ESVJAL2lwdGFibGVzLXJlc3RvcmUgL2V0Yy9pcHRhYmxlcy9pcHRhYmxlcy5ydWxlcwotRXhlY1JlbG9hZD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAvZXRjL2lwdGFibGVzL2lwdGFibGVzLnJ1bGVzCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2lwdGFibGVzLXJlc3RvcmUgLXcgLS0gQFJVTEVTRElSQC9pcHRhYmxlcy5ydWxlcworRXhlY1JlbG9hZD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAtdyAtLSBAUlVMRVNESVJAL2lwdGFibGVzLnJ1bGVzCiBSZW1haW5BZnRlckV4aXQ9eWVzCiAKIFtJbnN0YWxsXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5ZmNiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIGtlcm5lbCBwYWNrZXQgZmlsdGVyaW5nIGNhcGFiaWxpdGllcyIKLURFU0NSSVBUSU9OID0gImlwdGFibGVzIGlzIHRoZSB1c2Vyc3BhY2UgY29tbWFuZCBsaW5lIHByb2dyYW0gdXNlZCB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgbmV0d29yayBwYWNrZXQgXAotZmlsdGVyaW5nIGNvZGUgaW4gTGludXguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLm5ldGZpbHRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2M1wKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2lwdGFibGVzL2lwdGFibGVzLmM7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjU7bWQ1PWM1Y2ZmZDA5OTc0NTU4Y2YyN2QwZjc2M2RmMmExMmRjIgotCi1TUkNfVVJJID0gImh0dHA6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2lwdGFibGVzL2ZpbGVzL2lwdGFibGVzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2lwdGFibGVzLnJ1bGVzIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI5ZGU3MTFkMTVjMDQwYzQwMmNmMzAzOGM2OWZmNTEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyM2NhYzAzNDE4MTIwNmI0NTQ1ZjRlN2U3MzBlNzZlMDhiNWYzZGQ3ODc3MWJhOTY0NWE2NzU2ZGU5Y2RkODAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi0jIGxpYm5mbmV0bGluayByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCi1QQUNLQUdFQ09ORklHW2xpYm5mbmV0bGlua10gPSAiLS1lbmFibGUtbGlibmZuZXRsaW5rLC0tZGlzYWJsZS1saWJuZm5ldGxpbmssbGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2siCi0KLSMgbGlibmZ0bmwgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcihwcmV2aW91c2x5IGtub3duIGFzIGxpYm5mdGFibGVzKQotUEFDS0FHRUNPTkZJR1tsaWJuZnRubF0gPSAiLS1lbmFibGUtbmZ0YWJsZXMsLS1kaXNhYmxlLW5mdGFibGVzLGxpYm5mdG5sIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFJlbW92ZSBzb21lIGxpYnRvb2wgbTQgZmlsZXMKLQkjIEtlZXAgYXhfY2hlY2tfbGlua2VyX2ZsYWdzLm00IHdoaWNoIGJlbG9uZ3MgdG8gYXV0b2NvbmYtYXJjaGl2ZS4KLQlybSAtZiBsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNAotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1tb2R1bGUtLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9L3h0YWJsZXMnLCByJ2xpYiguKilcLnNvJCcsICcke1BOfS1tb2R1bGUtJXMnLCAnJHtQTn0gbW9kdWxlICVzJywgZXh0cmFfZGVwZW5kcz0nJykKLSAgICBpZiBtb2R1bGVzOgotICAgICAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1vZHVsZXMnCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnICsgJyAnLmpvaW4obW9kdWxlcykpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3h0YWJsZXMiCi0KLSMgSW5jbHVkZSB0aGUgc3ltbGlua3MgYXMgd2VsbCBpbiByZXNwZWN0aXZlIHBhY2thZ2VzCi1GSUxFU18ke1BOfS1tb2R1bGUteHQtY29ubnRyYWNrICs9ICIke2xpYmRpcn0veHRhYmxlcy9saWJ4dF9zdGF0ZS5zbyIKLUZJTEVTXyR7UE59LW1vZHVsZS14dC1jdCArPSAiJHtsaWJkaXJ9L3h0YWJsZXMvbGlieHRfTk9UUkFDSy5zbyIKLQotSU5TQU5FX1NLSVBfJHtQTn0tbW9kdWxlLXh0LWNvbm50cmFjayA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1tb2R1bGUteHQtY3QgPSAiZGV2LXNvIgotCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaXB0YWJsZXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXB0YWJsZXMucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vaXB0YWJsZXMKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lwdGFibGVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9pcHRhYmxlcy5zZXJ2aWNlCi19Ci0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcHRhYmxlcy5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1tb2R1bGUteHQtc3RhbmRhcmQiCi1SUkVDT01NRU5EU18ke1BOfSA9ICIgXAotICAgICR7UE59LW1vZHVsZXMgXAotICAgIGtlcm5lbC1tb2R1bGUteC10YWJsZXMgXAotICAgIGtlcm5lbC1tb2R1bGUtaXAtdGFibGVzIFwKLSAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKLSAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbmF0IFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLWRlZnJhZy1pcHY0IFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCi0gICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2staXB2NCBcCi0gICAga2VybmVsLW1vZHVsZS1uZi1uYXQgXAotICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUgXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjEzODhjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjQuYmIKQEAgLTAsMCArMSwxMDggQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIGtlcm5lbCBwYWNrZXQgZmlsdGVyaW5nIGNhcGFiaWxpdGllcyIKK0RFU0NSSVBUSU9OID0gImlwdGFibGVzIGlzIHRoZSB1c2Vyc3BhY2UgY29tbWFuZCBsaW5lIHByb2dyYW0gdXNlZCB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgbmV0d29yayBwYWNrZXQgXAorZmlsdGVyaW5nIGNvZGUgaW4gTGludXguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLm5ldGZpbHRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvaXB0YWJsZXMvZmlsZXMvaXB0YWJsZXMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLWxpYm5mbmV0bGluay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1vbmx5LWNoZWNrLWNvbm50cmFjay13aGVuLWxpYm5mbmV0bGluay1lbmFibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2lwdGFibGVzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vaXA2dGFibGVzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXA2dGFibGVzLnJ1bGVzIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YjIwMTEwNzk1N2ZiZjYyNzA5YzNkODIyNjIzOWIwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTNhM2E1NDkwYTU0NGMyY2JmMmVmMTVjZjdlN2VkMjFhZjE4NDViYWYyMjgzMThkNWMzNmVmODgyN2UxNTdjIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAorICAgIGlwdGFibGVzLnNlcnZpY2UgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2lwdjYnLCAnaXA2dGFibGVzLnNlcnZpY2UnLCAnJywgZCl9IFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCisjIGxpYm5mbmV0bGluayByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCitQQUNLQUdFQ09ORklHW2xpYm5mbmV0bGlua10gPSAiLS1lbmFibGUtbGlibmZuZXRsaW5rLC0tZGlzYWJsZS1saWJuZm5ldGxpbmssbGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2siCisKKyMgbGlibmZ0bmwgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcihwcmV2aW91c2x5IGtub3duIGFzIGxpYm5mdGFibGVzKQorUEFDS0FHRUNPTkZJR1tsaWJuZnRubF0gPSAiLS1lbmFibGUtbmZ0YWJsZXMsLS1kaXNhYmxlLW5mdGFibGVzLGxpYm5mdG5sIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSBzb21lIGxpYnRvb2wgbTQgZmlsZXMKKyAgICAjIEtlZXAgYXhfY2hlY2tfbGlua2VyX2ZsYWdzLm00IHdoaWNoIGJlbG9uZ3MgdG8gYXV0b2NvbmYtYXJjaGl2ZS4KKyAgICBybSAtZiBsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNAorfQorCitJUFRBQkxFU19SVUxFU19ESVIgPz0gIiR7c3lzY29uZmRpcn0vJHtCUE59IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke0lQVEFCTEVTX1JVTEVTX0RJUn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pcHRhYmxlcy5ydWxlcyAke0R9JHtJUFRBQkxFU19SVUxFU19ESVJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXB0YWJsZXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCisgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxAUlVMRVNESVJALCR7SVBUQUJMRVNfUlVMRVNfRElSfSxnJyBcCisgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2lwdGFibGVzLnNlcnZpY2UKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2lwdjYnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXA2dGFibGVzLnJ1bGVzICR7RH0ke0lQVEFCTEVTX1JVTEVTX0RJUn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXA2dGFibGVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKworICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFJVTEVTRElSQCwke0lQVEFCTEVTX1JVTEVTX0RJUn0sZycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaXA2dGFibGVzLnNlcnZpY2UKKyAgICBmaQorfQorCitQQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9L3h0YWJsZXMnLCByJ2xpYiguKilcLnNvJCcsICcke1BOfS1tb2R1bGUtJXMnLCAnJHtQTn0gbW9kdWxlICVzJywgZXh0cmFfZGVwZW5kcz0nJykKKyAgICBpZiBtb2R1bGVzOgorICAgICAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1vZHVsZXMnCisgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnICsgJyAnLmpvaW4obW9kdWxlcykpCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LW1vZHVsZS14dC1zdGFuZGFyZCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiBcCisgICAgJHtQTn0tbW9kdWxlcyBcCisgICAga2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCisgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1maWx0ZXIgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrIFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCisgICAga2VybmVsLW1vZHVsZS1pcHQtbWFzcXVlcmFkZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnaXB2NicsICdcCisgICAgICAgIGtlcm5lbC1tb2R1bGUtaXA2dGFibGUtZmlsdGVyIFwKKyAgICAgICAga2VybmVsLW1vZHVsZS1pcDYtdGFibGVzIFwKKyAgICAnLCAnJywgZCl9IFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veHRhYmxlcyIKKworIyBJbmNsdWRlIHRoZSBzeW1saW5rcyBhcyB3ZWxsIGluIHJlc3BlY3RpdmUgcGFja2FnZXMKK0ZJTEVTXyR7UE59LW1vZHVsZS14dC1jb25udHJhY2sgKz0gIiR7bGliZGlyfS94dGFibGVzL2xpYnh0X3N0YXRlLnNvIgorRklMRVNfJHtQTn0tbW9kdWxlLXh0LWN0ICs9ICIke2xpYmRpcn0veHRhYmxlcy9saWJ4dF9OT1RSQUNLLnNvIgorCitBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCisKK0lOU0FORV9TS0lQXyR7UE59LW1vZHVsZS14dC1jb25udHJhY2sgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tbW9kdWxlLXh0LWN0ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtY2hhbmdlLXZhcmlhYmxlLW5hbWUtdG8tYXZvaWQtY29sbGlkaW5nLXdpdGgtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMDZhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtY2hhbmdlLXZhcmlhYmxlLW5hbWUtdG8tYXZvaWQtY29sbGlkaW5nLXdpdGgtLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gYWIxYWEyZWIwMDk3YTdlZjA1ZmZjY2FjMDU4YjA2ODEyZGViMjY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhbWkgS2Vyb2xhIDxrZXJvbGFzYUBpa2kuZmk+CitEYXRlOiBTYXQsIDI4IERlYyAyMDE5IDE3OjE2OjI3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pbmZvZDogY2hhbmdlIHZhcmlhYmxlIG5hbWUgdG8gYXZvaWQgY29sbGlkaW5nIHdpdGggZnVuY3Rpb24KKyBuYW1lCisKK1RoZSBzeXMvY2FwYWJpbGl0eS5oIGhlYWRlciBoYXMgJ2V4dGVybiBpbnQgY2FwX3NldHVpZCh1aWRfdCB1aWQpOycKK2Z1bmN0aW9uIHByb3RvdHlwZS4KKworQWRkcmVzc2VzOiBodHRwczovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzL2lzc3Vlcy8yNDYKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscy9jb21taXQvMThmOWE4NGUwZTcwMjg0MWQ2Y2M0ZDVmNTkzZGU0ZmJkMTM0OGU4M10KK1NpZ25lZC1vZmYtYnk6IFNhbWkgS2Vyb2xhIDxrZXJvbGFzYUBpa2kuZmk+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG5pbmZvZC9uaW5mb2QuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbmluZm9kL25pbmZvZC5jIGIvbmluZm9kL25pbmZvZC5jCitpbmRleCBiYWRiZjgwLi4yOGYwM2FmIDEwMDY0NAorLS0tIGEvbmluZm9kL25pbmZvZC5jCisrKysgYi9uaW5mb2QvbmluZm9kLmMKK0BAIC00NTQsNyArNDU0LDcgQEAgc3RhdGljIHZvaWQgZG9fZGFlbW9uaXplKHZvaWQpCisgLyogLS0tLS0tLS0tICovCisgI2lmZGVmIEhBVkVfTElCQ0FQCisgc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9uZXRfcmF3ID0gQ0FQX05FVF9SQVc7Cistc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9zZXR1aWQgPSAgQ0FQX1NFVFVJRDsgCisrc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9zZXR1c2VyaWQgPSBDQVBfU0VUVUlEOworIHN0YXRpYyBjYXBfZmxhZ192YWx1ZV90IGNhcF9vazsKKyAjZWxzZQorIHN0YXRpYyB1aWRfdCBldWlkOworQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgdm9pZCBsaW1pdF9jYXBhYmlsaXRpZXModm9pZCkKKyAKKyAJY2FwX2dldF9mbGFnKGNhcF9jdXJfcCwgQ0FQX1NFVFVJRCwgQ0FQX1BFUk1JVFRFRCwgJmNhcF9vayk7CisgCWlmIChjYXBfb2sgIT0gQ0FQX0NMRUFSKQorLQkJY2FwX3NldF9mbGFnKGNhcF9wLCBDQVBfUEVSTUlUVEVELCAxLCAmY2FwX3NldHVpZCwgQ0FQX1NFVCk7CisrCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dXNlcmlkLCBDQVBfU0VUKTsKKyAKKyAJaWYgKGNhcF9zZXRfcHJvYyhjYXBfcCkgPCAwKSB7CisgCQlERUJVRyhMT0dfRVJSLCAiY2FwX3NldF9wcm9jOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKK0BAIC01MTksOCArNTE5LDggQEAgc3RhdGljIHZvaWQgZHJvcF9jYXBhYmlsaXRpZXModm9pZCkKKyAKKyAJLyogc2V0dWlkIC8gc2V0dWlkICovCisgCWlmIChjYXBfb2sgIT0gQ0FQX0NMRUFSKSB7CistCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dWlkLCBDQVBfU0VUKTsKKy0JCWNhcF9zZXRfZmxhZyhjYXBfcCwgQ0FQX0VGRkVDVElWRSwgMSwgJmNhcF9zZXR1aWQsIENBUF9TRVQpOworKwkJY2FwX3NldF9mbGFnKGNhcF9wLCBDQVBfUEVSTUlUVEVELCAxLCAmY2FwX3NldHVzZXJpZCwgQ0FQX1NFVCk7CisrCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9FRkZFQ1RJVkUsIDEsICZjYXBfc2V0dXNlcmlkLCBDQVBfU0VUKTsKKyAKKyAJCWlmIChjYXBfc2V0X3Byb2MoY2FwX3ApIDwgMCkgeworIAkJCURFQlVHKExPR19FUlIsICJjYXBfc2V0X3Byb2M6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtbmluZm9kLWZpeC1zeXN0ZW1kLURvY3VtZW50YXRpb24tdXJsLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtbmluZm9kLWZpeC1zeXN0ZW1kLURvY3VtZW50YXRpb24tdXJsLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYTNmNTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBjMWYxNTI3ZWIzMGQ0YTVmZWViZjlhMDc1NzU4MmJiZjdmZTNlYWU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIFN0ZXZhbmF0byA8YW5kcmVhLnN0ZXZhbmF0by45NUBob3RtYWlsLml0PgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDE5OjA4OjMwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pbmZvZDogZml4IHN5c3RlbWQgRG9jdW1lbnRhdGlvbiB1cmwgZXJyb3IKKworc3lzdGVtZFsxXTogL3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0vbmluZm9kLnNlcnZpY2U6MzogSW52YWxpZCBVUkwsIGlnbm9yaW5nOiBuaW5mb2QoOCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscy9jb21taXQvYzFmMTUyN2ViMzBkNGE1ZmVlYmY5YTA3NTc1ODJiYmY3ZmUzZWFlOV0KK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KKy0tLQorIHN5c3RlbWQvbmluZm9kLnNlcnZpY2UuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluIGIvc3lzdGVtZC9uaW5mb2Quc2VydmljZS5pbgoraW5kZXggNWFiNjljYTAwZTk2Li44ZTc5ZmNkOTIzOGUgMTAwNjQ0CistLS0gYS9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluCisrKysgYi9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluCitAQCAtMSw2ICsxLDYgQEAKKyBbVW5pdF0KKyBEZXNjcmlwdGlvbj1SZXNwb25kIHRvIElQdjYgTm9kZSBJbmZvcm1hdGlvbiBRdWVyaWVzCistRG9jdW1lbnRhdGlvbj1uaW5mb2QoOCkKKytEb2N1bWVudGF0aW9uPW1hbjpuaW5mb2QoOCkKKyBSZXF1aXJlcz1uZXR3b3JrLnRhcmdldAorIEFmdGVyPW5ldHdvcmsudGFyZ2V0CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLXJhcnBkLXJkaXNjLURyb3AtUHJpdmF0ZVVzZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MzY3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDZlNTFkNTI5OTg4Y2ZjMGJiMzU3NzUxZmQ3NjdlOWYxNDc4ZTJiODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEzIEZlYiAyMDIwIDA2OjA4OjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHJhcnBkOiByZGlzYzogRHJvcCBQcml2YXRlVXNlcnMKKworTmVpdGhlciByYXJwZCBub3IgcmRpc2MgY2FuIGdhaW4gdGhlIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMgd2l0aAorUHJpdmF0ZVVzZXJzIGVuYWJsZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorLS0tCisgc3lzdGVtZC9yYXJwZC5zZXJ2aWNlLmluIHwgMSAtCisgc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbiBiL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbgoraW5kZXggZTYwMGMxMGM5M2U2Li5mNWQ3NjIxYTdjZTggMTAwNjQ0CistLS0gYS9zeXN0ZW1kL3JhcnBkLnNlcnZpY2UuaW4KKysrKyBiL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbgorQEAgLTEyLDcgKzEyLDYgQEAgQW1iaWVudENhcGFiaWxpdGllcz1DQVBfTkVUX1JBVworIER5bmFtaWNVc2VyPXllcworIFByaXZhdGVUbXA9eWVzCisgUHJpdmF0ZURldmljZXM9eWVzCistUHJpdmF0ZVVzZXJzPXllcworIFByb3RlY3RTeXN0ZW09c3RyaWN0CisgUHJvdGVjdEhvbWU9eWVzCisgUHJvdGVjdENvbnRyb2xHcm91cHM9eWVzCitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluIGIvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluCitpbmRleCA0ZTJhMWVjOWQwZTUuLmE3MWI4N2QzNmIzNyAxMDA2NDQKKy0tLSBhL3N5c3RlbWQvcmRpc2Muc2VydmljZS5pbgorKysrIGIvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluCitAQCAtOCw5ICs4LDEwIEBAIEFmdGVyPW5ldHdvcmsudGFyZ2V0CisgRW52aXJvbm1lbnRGaWxlPS0vZXRjL3N5c2NvbmZpZy9yZGlzYworIEV4ZWNTdGFydD1Ac2JpbmRpckAvcmRpc2MgLWYgLXQgJE9QVElPTlMgJFNFTkRfQUREUkVTUyAkUkVDRUlWRV9BRERSRVNTCisgCisrQ2FwYWJpbGl0eUJvdW5kaW5nU2V0PUNBUF9ORVRfUkFXCisgQW1iaWVudENhcGFiaWxpdGllcz1DQVBfTkVUX1JBVworIFByaXZhdGVUbXA9eWVzCistUHJpdmF0ZVVzZXJzPXllcworK0R5bmFtaWNVc2VyPXllcworIFByb3RlY3RTeXN0ZW09c3RyaWN0CisgUHJvdGVjdEhvbWU9eWVzCisgUHJvdGVjdENvbnRyb2xHcm91cHM9eWVzCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE5MDcwOS5iYgppbmRleCAzZjllOTkxLi4yYWVkNmI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxOTA3MDkuYmIKQEAgLTEwLDcgKzEwLDExIEBACiAKIERFUEVORFMgPSAiZ251dGxzIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaCBcCisgICAgICAgICAgICIKIFNSQ1JFViA9ICIxM2UwMDg0NzE3NmFhMjM2ODNkNjhmY2UxZDE3ZmZiNTIzNTEwOTQ2IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjEsMzAgKzI1LDM1IEBACiAjIGJyZWFrcyB0aGUgdmVyc2lvbiBvcmRlci4KIENWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDAwLTEyMTMgQ1ZFLTIwMDAtMTIxNCIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmNhcCBsaWJnY3J5cHQgcmFycGQgdHJhY2Vyb3V0ZTYiCitQQUNLQUdFQ09ORklHID8/PSAibGliY2FwIGxpYmdjcnlwdCByYXJwZCBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ25pbmZvZCB0cmFjZXJvdXRlNicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLURVU0VfQ0FQPXRydWUsIC1EVVNFX0NBUD1mYWxzZSwgbGliY2FwIgogUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi1EVVNFX0NSWVBUTz1nY3J5cHQsIC1EVVNFX0NSWVBUTz1ub25lLCBsaWJnY3J5cHQiCiBQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURVU0VfSUROPXRydWUsIC1EVVNFX0lETj1mYWxzZSwgbGliaWRuMiIKIFBBQ0tBR0VDT05GSUdbZ2V0dGV4dF0gPSAiLURVU0VfR0VUVEVYVD10cnVlLCAtRFVTRV9HRVRURVhUPWZhbHNlLCBnZXR0ZXh0IgorUEFDS0FHRUNPTkZJR1tuaW5mb2RdID0gIi1EQlVJTERfTklORk9EPXRydWUsLURCVUlMRF9OSU5GT0Q9ZmFsc2UsIgogUEFDS0FHRUNPTkZJR1tyYXJwZF0gPSAiLURCVUlMRF9SQVJQRD10cnVlLC1EQlVJTERfUkFSUEQ9ZmFsc2UsIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWR1bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0sLHN5c3RlbWQiCiBQQUNLQUdFQ09ORklHW3RyYWNlcm91dGU2XSA9ICItREJVSUxEX1RSQUNFUk9VVEU2PXRydWUsLURCVUlMRF9UUkFDRVJPVVRFNj1mYWxzZSwiCiBQQUNLQUdFQ09ORklHW2RvY3NdID0gIi1EQlVJTERfSFRNTF9NQU5TPXRydWUgLURCVUlMRF9NQU5TPXRydWUsLURCVUlMRF9IVE1MX01BTlM9ZmFsc2UgLURCVUlMRF9NQU5TPWZhbHNlLCBsaWJ4c2x0IgogCi1pbmhlcml0IG1lc29uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgbWVzb24gc3lzdGVtZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKLUVYVFJBX09FTUVTT04gKz0gIi0tcHJlZml4PSR7cm9vdF9wcmVmaXh9LyIKKyMgSGF2ZSB0byBkaXNhYmxlIHNldGNhcC9zdWlkIGFzIGl0cyBub3QgZGV0ZXJtaW5pc3RpYworRVhUUkFfT0VNRVNPTiArPSAiLS1wcmVmaXg9JHtyb290X3ByZWZpeH0vIC1ETk9fU0VUQ0FQX09SX1NVSUQ9dHJ1ZSIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCiBBTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKIAotU1BMSVRQS0dTID0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYgJHtQTn0tdGZ0cGQgJHtQTn0tcmFycGQgJHtQTn0tcmRpc2MgJHtQTn0tbmluZm9kIgorU1BMSVRQS0dTID0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS1jbG9ja2RpZmYgJHtQTn0tdGZ0cGQgJHtQTn0tcmRpc2MgXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JhcnBkJywgJyR7UE59LXJhcnBkJywgJycsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJyR7UE59LXRyYWNlcm91dGU2ICR7UE59LW5pbmZvZCcsICcnLCBkKX0iCiBQQUNLQUdFUyArPSAiJHtTUExJVFBLR1N9IgogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tcmFycGQgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LXRyYWNlcm91dGU2ID0gIjEiCiBSREVQRU5EU18ke1BOfSArPSAiJHtTUExJVFBLR1N9IgogCiBGSUxFU18ke1BOfSA9ICIiCkBAIC01NCw2ICs2MywxMSBAQAogRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCiBGSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgogRklMRVNfJHtQTn0tdGZ0cGQgPSAiJHtiYXNlX2JpbmRpcn0vdGZ0cGQiCi1GSUxFU18ke1BOfS1yYXJwZCA9ICIke2Jhc2Vfc2JpbmRpcn0vcmFycGQiCitGSUxFU18ke1BOfS1yYXJwZCA9ICIke2Jhc2Vfc2JpbmRpcn0vcmFycGQgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmFycGRALnNlcnZpY2UiCiBGSUxFU18ke1BOfS1yZGlzYyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmRpc2MiCiBGSUxFU18ke1BOfS1uaW5mb2QgPSAiJHtiYXNlX3NiaW5kaXJ9L25pbmZvZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9uaW5mb2Quc2giCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJyR7UE59LW5pbmZvZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1yZGlzYyIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1uaW5mb2QgPSAibmluZm9kLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tcmRpc2MgPSAicmRpc2Muc2VydmljZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMwZDVlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIlN1cHBvcnQgZm9yIHJlYWRpbmcgdmFyaW91cyBhcmNoaXZlIGZvcm1hdHMiCi1ERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgYW5kIGNvbW1hbmQtbGluZSB0b29scyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIsIGNwaW8sIHppcCwgSVNPLCBhbmQgb3RoZXIgYXJjaGl2ZSBmb3JtYXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZTAxZjVlMDJiMWYwY2M5MzRkNTkzYTdiMGRkY2ViNiIKLQotREVQRU5EUyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotCi1QQUNLQUdFQ09ORklHID89ICJ6bGliIGJ6MiB4eiBsem8iCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0JbGlieG1sMiBcCi0JJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKLSIKLQotREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYiwke0RFUEVORFNfQlpJUDJ9LCIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6LCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC14bWwyLC0td2l0aG91dC14bWwyLGxpYnhtbDIsIgotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCwiCi1QQUNLQUdFQ09ORklHW2x6b10gPSAiLS13aXRoLWx6bzIsLS13aXRob3V0LWx6bzIsbHpvLCIKLVBBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtbmV0dGxlLC0td2l0aG91dC1uZXR0bGUsbmV0dGxlLCIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MDQ2Mzk2MjU1YmQ3Y2Y2ZDBmNjYwM2E5YmRhMzlhYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjQzZDUwZWQ0MGM3NTlmNTQxMmEzYWY0ZTM1M2NmZmJjZTRmZGYzYjVjZjMyMWNiNzJjYWNmMDZiMmQ4MjVlIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZwotCi1DUFBGTEFHUyArPSAiLUkke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgotCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgV2UganVzdCBuZWVkIHRoZSBoZWFkZXJzIGZvciBzb21lIHR5cGUgY29uc3RhbnRzLCBzbyBubyBuZWVkIHRvCi0JIyBidWlsZCBhbGwgb2YgZTJmc3Byb2dzIGZvciB0aGUgdGFyZ2V0Ci0JY3AgLVIgJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9L2V4dDJmcyAke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKLQotUEFDS0FHRVMgPSsgImJzZHRhciIKLUZJTEVTX2JzZHRhciA9ICIke2JpbmRpcn0vYnNkdGFyIgotCi1BTFRFUk5BVElWRV9ic2R0YXIgPSAidGFyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgotQUxURVJOQVRJVkVfVEFSR0VUW3Rhcl0gPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotUEFDS0FHRVMgPSsgImJzZGNwaW8iCi1GSUxFU19ic2RjcGlvID0gIiR7YmluZGlyfS9ic2RjcGlvIgotCi1BTFRFUk5BVElWRV9ic2RjcGlvID0gImNwaW8iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjcGlvXSA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYjQwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjIuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgorREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmUwMWY1ZTAyYjFmMGNjOTM0ZDU5M2E3YjBkZGNlYjYiCisKK0RFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBiejIgeHogbHpvIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorCWxpYnhtbDIgXAorCSR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCisiCisKK0RFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliLCIKK1BBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtYnoybGliLC0td2l0aG91dC1iejJsaWIsJHtERVBFTkRTX0JaSVAyfSwiCitQQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiwiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wsIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgteG1sMiwtLXdpdGhvdXQteG1sMixsaWJ4bWwyLCIKK1BBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdCwtLXdpdGhvdXQtZXhwYXQsZXhwYXQsIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi0td2l0aC1sem8yLC0td2l0aG91dC1sem8yLGx6bywiCitQQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLW5ldHRsZSwtLXdpdGhvdXQtbmV0dGxlLG5ldHRsZSwiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6NCwtLXdpdGhvdXQtbHo0LGx6NCwiCitQQUNLQUdFQ09ORklHW21iZWR0bHNdID0gIi0td2l0aC1tYmVkdGxzLC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDk1M2VkNmI0NzY5NGRhZGYwZTYwNDJmOGY5ZmY0NTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjYwZDU4ZDEyNjMyZWNmMWU4ZmFkNzMxNmRjODJjNmI5NzM4YTM1NjI1NzQ2YjQ3ZWNkY2FmNGFlZDE3NjE3NiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKKworZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bworCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAorCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KK30KKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCisKK1BBQ0tBR0VTID0rICJic2R0YXIiCitGSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKKworQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKK0FMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCisKK1BBQ0tBR0VTID0rICJic2RjcGlvIgorRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKKworQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCitBTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhZGM3ZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotRnJvbSA4MmY5OGRjYmM0MjliYmU4OWE5ODM3YzUzM2NiY2JjMDJlNzdjNzkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFkcmFzemlrQHR5Y29pbnQuY29tPgotRGF0ZTogVHVlLCAyOCBKdW4gMjAxNiAxMjo0MzozMSArMDEwMAotU3ViamVjdDogW1BBVENIXSBpZG46IGZpeCBwcmludGYoKSBmb3JtYXQgc2VjdXJpdHkgd2FybmluZ3MKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjE3Mjo3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgIGVycm9yICgwLCAwLCBfKCJvbmx5IG9uZSBvZiAtcywgLWUsIC1kLCAtYSwgLXUgb3IgLW4gY2FuIGJlIHNwZWNpZmllZCIpKTsKLXwgICAgICAgIF5+fn5+Ci18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoxODc6NTogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJUeXBlIGVhY2ggaW5wdXQgc3RyaW5nIG9uIGEgbGluZSBieSBpdHNlbGYsICIKLXwgICAgICBefn5+fn5+Ci18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyMDI6NDogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiaW5wdXQgZXJyb3IiKSk7Ci18ICAgICBefn5+fgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MjIwOjg6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MjQ1Ojg6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MjgxOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzozNDA6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjM2NDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLXwgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NDQyOjg6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7Ci18ICAgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NDk4OjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo1Mjc6NTogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo1NDA6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsIF8oImNvdWxkIG5vdCBkbyBORktDIG5vcm1hbGl6YXRpb24iKSk7Ci18ICAgICAgIF5+fn5+Ci18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo1NTE6NTogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICBeCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvaWRuLmMgfCAyNyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaWRuLmMgYi9zcmMvaWRuLmMKLWluZGV4IGJlMWM3ZDEuLjY4ZTQyOTEgMTAwNjQ0Ci0tLS0gYS9zcmMvaWRuLmMKLSsrKyBiL3NyYy9pZG4uYwotQEAgLTE3MCw3ICsxNzAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgIChhcmdzX2luZm8uaWRuYV90b191bmljb2RlX2dpdmVuID8gMSA6IDApICsKLSAgICAgICAoYXJnc19pbmZvLm5ma2NfZ2l2ZW4gPyAxIDogMCkgIT0gMSkKLSAgICAgewotLSAgICAgIGVycm9yICgwLCAwLCBfKCJvbmx5IG9uZSBvZiAtcywgLWUsIC1kLCAtYSwgLXUgb3IgLW4gY2FuIGJlIHNwZWNpZmllZCIpKTsKLSsgICAgICBlcnJvciAoMCwgMCwgIiVzIiwgXygib25seSBvbmUgb2YgLXMsIC1lLCAtZCwgLWEsIC11IG9yIC1uIGNhbiBiZSBzcGVjaWZpZWQiKSk7Ci0gICAgICAgdXNhZ2UgKEVYSVRfRkFJTFVSRSk7Ci0gICAgIH0KLSAKLUBAIC0xODUsNyArMTg1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIGlmICghYXJnc19pbmZvLnF1aWV0X2dpdmVuCi0gICAgICAgJiYgYXJnc19pbmZvLmlucHV0c19udW0gPT0gMAotICAgICAgICYmIGlzYXR0eSAoZmlsZW5vIChzdGRpbikpKQotLSAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotKyAgICBmcHJpbnRmIChzdGRlcnIsICIlcyIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotIAkJICAgICAgICJ0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZSBjaGFyYWN0ZXIuXG4iKSk7Ci0gCi0gICBkbwotQEAgLTE5Nyw3ICsxOTcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIGlmIChmZW9mIChzdGRpbikpCi0gCSAgICBicmVhazsKLSAKLS0JICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiaW5wdXQgZXJyb3IiKSk7Ci0rCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIF8oImlucHV0IGVycm9yIikpOwotIAl9Ci0gCi0gICAgICAgaWYgKHN0cmxlbiAobGluZSkgPiAwKQotQEAgLTIxNSw3ICsyMTUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIGlmICghcSkKLSAJICAgIHsKLSAJICAgICAgZnJlZSAocCk7Ci0tCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci0gCSAgICB9Ci0gCi1AQCAtMjQwLDcgKzI0MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgaWYgKCFxKQotIAkgICAgewotIAkgICAgICBmcmVlIChyKTsKLS0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJICAgIH0KLSAKLUBAIC0yNzcsNyArMjc3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBxID0gc3RyaW5ncHJlcF91dGY4X3RvX3VjczQgKHAsIC0xLCAmbGVuKTsKLSAJICBmcmVlIChwKTsKLSAJICBpZiAoIXEpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci0gCi0gCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKLUBAIC0zMzYsNyArMzM2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHEsIC0xLCBOVUxMLCBOVUxMKTsKLSAJICBmcmVlIChxKTsKLSAJICBpZiAoIXIpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7Ci0gCi0gCSAgcCA9IHN0cmluZ3ByZXBfdXRmOF90b19sb2NhbGUgKHIpOwotQEAgLTM2MCw3ICszNjAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHEgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fdWNzNCAocCwgLTEsIE5VTEwpOwotIAkgIGZyZWUgKHApOwotIAkgIGlmICghcSkKLS0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLSAKLSAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQotQEAgLTQzOCw3ICs0MzgsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIGlmICghcSkKLSAJICAgIHsKLSAJICAgICAgZnJlZSAocCk7Ci0tCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7Ci0gCSAgICB9Ci0gCi1AQCAtNDk0LDcgKzQ5NCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgciA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4IChxLCAtMSwgTlVMTCwgTlVMTCk7Ci0gCSAgZnJlZSAocSk7Ci0gCSAgaWYgKCFyKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotIAotIAkgIHAgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fbG9jYWxlIChyKTsKLUBAIC01MjMsNyArNTIzLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgICAgaWYgKCFxKQotIAkJewotIAkJICBmcmVlIChwKTsKLS0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJCX0KLSAKLUBAIC01MzcsNyArNTM3LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91dGY4X25ma2Nfbm9ybWFsaXplIChwLCAtMSk7Ci0gCSAgZnJlZSAocCk7Ci0gCSAgaWYgKCFyKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0rCQkgICBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOwotIAotIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCi0gCSAgICB7Ci1AQCAtNTQ3LDcgKzU0OCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgICAgIGlmICghcSkKLSAJCXsKLSAJCSAgZnJlZSAocik7Ci0tCQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkJIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci0gCQl9Ci0gCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYmQyMzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGNkZDllMmU5NjBlZWI0ZWRhN2IwOGYwMTEzZDBjZDAzNTI0YzFkNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMCBKdWwgMjAxMiAwMjo0NDozMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWJpZG46IGZpeCBidWlsZCB3aXRoIGF1dG9tYWtlIDEuMTIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLWF1dG9tYWtlIDEuMTIueCBoYXMgZGVwcmVjYXRlZCBBTV9QUk9HX01LRElSX1AgLCBhbmQgdGhyb3dzIGEgd2FybmluZyBmb3IgdGhhdCwKLWFuZCB0aGUgd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzIGJlY2F1c2Ugb2YgdGhlIC1XZXJyb3IgcGFyYW1ldGVyLgotCi1UaGVzZSBBTV9QUk9HX01LRElSX1AgYXJlIGNvbWluZyBmcm9tIGdldHRleHQsIGFuZCB0aGUgbGF0ZXN0IGdldHRleHQgY29kZSBoYXMgbm90Ci1lbGltaW5hdGVkIHRoZXNlIGRlcHJlY2F0ZWQgbWFjcm9zIHlldC4gU28gZGlzYWJsZSB0aGUgdHJlYXRtZW50IG9mIHdhcm5pbmdzCi1hcyBlcnJvcnMgdW50aWwgZ2V0dGV4dCBpcyB1cGRhdGVkIHRvIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtYWNyb3MuCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA3LzEwCi0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMjYxZGFkMi4uYzRmOTM1ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtHTlUgTGliaWRuXSwgWzEuMzRdLCBbYnVnLWxpYmlkbkBnbnUub3JnXSkKLSBBQ19DT05GSUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMCAtV2FsbCAtV2Vycm9yIC1Xbm8tb3ZlcnJpZGVdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTAgLVdhbGwgLVduby1vdmVycmlkZV0pCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKLSAjIExpYnJhcnkgY29kZSBtb2RpZmllZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZJU0lPTisrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg2MzUzMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXNhYmxlIGZlYXR1cmVdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmtvIExpbmRxdmlzdCA8Y2F6Zmk3NEBnbWFpbC5jb20+Ci1kaWZmIC1OdXJkZCBsaWJpZG4tMS4yNi9kb2MvTWFrZWZpbGUuYW0gbGliaWRuLTEuMjYvZG9jL01ha2VmaWxlLmFtCi0tLS0gbGliaWRuLTEuMjYvZG9jL01ha2VmaWxlLmFtCTIwMTItMDktMTggMTE6MjU6NDUuMDAwMDAwMDAwICswMzAwCi0rKysgbGliaWRuLTEuMjYvZG9jL01ha2VmaWxlLmFtCTIwMTMtMDItMDggMDc6NDE6MjQuNTkxNDMxNDYyICswMjAwCi1AQCAtNDksMTUgKzQ5LDkgQEAKLQotICMgTWFuIHBhZ2VzLgotCi0tZGlzdF9tYW5fTUFOUyA9IGlkbi4xICQoZ2RvY19NQU5TKQotK2Rpc3RfbWFuX01BTlMgPSAkKGdkb2NfTUFOUykKLSBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQoZGlzdF9tYW5fTUFOUykKLQotLWlkbi4xOiAkKHRvcF9zcmNkaXIpL3NyYy9pZG4uYyAkKHRvcF9zcmNkaXIpL3NyYy9pZG4uZ2dvIFwKLS0JCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCi0tCSQoSEVMUDJNQU4pIFwKLS0JCS0tbmFtZT0iSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIGNvbW1hbmQgbGluZSB0b29sIiBcCi0tCQktLW91dHB1dD0kQCAkKHRvcF9idWlsZGRpcikvc3JjL2lkbiQoRVhFRVhUKQotLQotICMgR0RPQwotCi0gR0RPQ19CSU4gPSAkKHNyY2RpcikvZ2RvYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzA1NTllLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZDRmNjRiNzg0MTkxMzllZGEzYzBlMWM2ZWUxMTZiYjVmNzBlYTY3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDIgTWF5IDIwMTIgMTg6MDU6MTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlidGFzbjE6IGZpeCBidWlsZCB3aXRoIGF1dG9tYWtlIDEuMTIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoaXMgcGF0Y2ggZml4ZXMgZm9sbG93aW5nIGlzc3VlIHdpdGggYXV0b21ha2UgMS4xMgotCi18IGF1dG9tYWtlOiB3YXJuaW5ncyBhcmUgdHJlYXRlZCBhcyBlcnJvcnMKLXwgL3Nydi9ob21lL25pdGluL2J1aWxkcy9idWlsZC1nY2M0Ny90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZS9hdXRvbWFrZS0xLjEyL2FtL2x0bGlicmFyeS5hbTogd2FybmluZzogJ2xpYmlkbi5sYSc6IGxpbmtpbmcgbGlidG9vbCBsaWJyYXJpZXMgdXNpbmcgYSBub24tUE9TSVgKLXwgL3Nydi9ob21lL25pdGluL2J1aWxkcy9idWlsZC1nY2M0Ny90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZS9hdXRvbWFrZS0xLjEyL2FtL2x0bGlicmFyeS5hbTogYXJjaGl2ZXIgcmVxdWlyZXMgJ0FNX1BST0dfQVInIGluICdjb25maWd1cmUuYWMnCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA1LzAzCi0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODI5NzY0OS4uN2I5NjI2ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzMsNiArMzMsMTAgQEAgQUNfU1VCU1QoTFRfQ1VSUkVOVCwgMTgpCi0gQUNfU1VCU1QoTFRfUkVWSVNJT04sIDApCi0gQUNfU1VCU1QoTFRfQUdFLCA2KQotIAotKyMgYXV0b21ha2UgMS4xMiBzZWVtcyB0byByZXF1aXJlIHRoaXMsIGJ1dCBhdXRvbWFrZSAxLjExIGRvZXNuJ3QgcmVjb2duaXplIGl0Ci0rbTRfcGF0dGVybl9hbGxvdyhbQU1fUFJPR19BUl0pCi0rQU1fUFJPR19BUgotKwotIEFDX1BST0dfQ0MKLSBnbF9FQVJMWQotIGxnbF9FQVJMWQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjJfMi4yLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNiZmRkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIihHUEx2MisgfCBMR1BMdjMpICYgR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ4MzRlYTdkNDgwNDM4YWRhMDRlNWQ4NDYxNTIzOTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaWRuMi5jO2VuZGxpbmU9MTY7bWQ1PTQyNmI3NGQ2ZGViNjIwYWI2ZDM5YzhhNmVmZDRjMTNhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG4yLmguaW47ZW5kbGluZT0yNzttZDU9YzJjZDI4ZDNmODcyNjBmMTU3ZjAyMmVhYmI4MzcxNGYiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJpZG4vJHtCUE59LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiODQ2ZDRkMjBlMjJiOTlkNmY3Mzg3YmI2NmUwMGExZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzczNDczMmI1MDZkODc4NzUzZWM2NjA2OTgyYmY3YjkzNmU4NjhjMjVjMzBkZGIwZDgzZjdkNzA1NjM4MWZlIgotCi1ERVBFTkRTID0gInZpcnR1YWwvbGliaWNvbnYgbGlidW5pc3RyaW5nIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGd0ay1kb2MgbGliX3BhY2thZ2UKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGlidW5pc3RyaW5nLXByZWZpeD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotICAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXNlZCAtaSAtZSAnc3wtTCR7U1RBR0lOR19MSUJESVJ9fHwnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmlkbjIucGMKLX0KLQotTElDRU5TRV8ke1BOfSA9ICIoR1BMdjIrIHwgTEdQTHYzKSIKLUxJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjJfMi4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWRmOTI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjJfMi4zLjAuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiKEdQTHYyKyB8IExHUEx2MykgJiBHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDgzNGVhN2Q0ODA0MzhhZGEwNGU1ZDg0NjE1MjM5NSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pZG4yLmM7ZW5kbGluZT0xNjttZDU9NDI2Yjc0ZDZkZWI2MjBhYjZkMzljOGE2ZWZkNGMxM2EgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbjIuaC5pbjtlbmRsaW5lPTI3O21kNT1jMmNkMjhkM2Y4NzI2MGYxNTdmMDIyZWFiYjgzNzE0ZiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjAxYzUwODQ5OTUyOTVlNTE5Zjk1OTc4YWU5Nzg1ZWUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUxY2IxZGIzZDJlMjQ5YTZhM2ViNmYwOTQ2Nzc3YzJlODkyZDVjNWRjN2JkOTFjNzQzOTRmYzNhMDFjYWI4YjUiCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJpY29udiBsaWJ1bmlzdHJpbmciCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCisgICAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBOZWVkIHRvIHJlbW92ZSBhbnkgZHVwbGljYXRlIHdoaXRlc3BhY2UgdG9vIGZvciByZXByb2R1Y2liaWxpdHkKKwlzZWQgLWkgLWUgJ3N8LUwke1NUQUdJTkdfTElCRElSfXx8JyAtZSAncy8gICovIC9nJyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJpZG4yLnBjCit9CisKK0xJQ0VOU0VfJHtQTn0gPSAiKEdQTHYyKyB8IExHUEx2MykiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVjZTViNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIHN1cHBvcnQgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkltcGxlbWVudGF0aW9uIG9mIHRoZSBTdHJpbmdwcmVwLCBQdW55Y29kZSBhbmQgSUROQSBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGJ5IHRoZSBJRVRGIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSB3b3JraW5nIGdyb3VwLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICIoTEdQTHYyLjErIHwgTEdQTHYzKSAmIEdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRmNGJlNDc5NDBhOTFlZTY5NTU2ZjVmNzFlZWQ0YWVjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvaWRuYS5oO2VuZGxpbmU9MjE7bWQ1PTM3Y2ZmYWQyNDgwN2Y0NDZhMjRkZTNlNzM3MWYyMGI5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pZG4uYztlbmRsaW5lPTIwO21kNT0wOWU5NzAzNGE4ODc3YjM0NTFjYjY1MDY1ZmMyYzA2ZSIKLURFUEVORFMgPSAidmlydHVhbC9saWJpY29udiBhdXRvY29uZi1hcmNoaXZlIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGd0ay1kb2MKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaWRuLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImJlZjYzNDE0MWZlMzkzMjZjYjM1NGI3NWU4OTFmZWFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxMWFmMTAwNWI0NmI3YjE1ZDA1N2Q3ZjEwNzMxNWExYWQ0NjkzNWM3ZmNkZjI0M2MxNmU0NmVjMTRmMGZlMWUiCi0KLSMgY29tbWFuZCB0b29sIGlzIHVuZGVyIEdQTHYzKywgd2hpbGUgbGliaWRuIGl0c2VsZiBpcyB1bmRlciBMR1BMdjIuMSsgb3IgTEdQTHYzCi0jIHNvIHBhY2thZ2UgY29tbWFuZCBpbnRvIGEgc2VwYXJhdGUgcGFja2FnZQotUEFDS0FHRVMgPSsgImlkbiIKLUZJTEVTX2lkbiA9ICIke2JpbmRpcn0vKiIKLQotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsgfCBMR1BMdjMiCi1MSUNFTlNFX2lkbiA9ICJHUEx2MysiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtY3NoYXJwIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vZW1hY3MKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgppbmRleCAyMzI2MmU4Li5iNTViYjMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKQEAgLTEsMTIgKzEsMTIgQEAKIFNVTU1BUlkgPSAiTWluaW1hbGlzdGljIHVzZXItc3BhY2UgTmV0bGluayB1dGlsaXR5IGxpYnJhcnkiCiBERVNDUklQVElPTiA9ICJNaW5pbWFsaXN0aWMgdXNlci1zcGFjZSBsaWJyYXJ5IG9yaWVudGVkIHRvIE5ldGxpbmsgZGV2ZWxvcGVycywgcHJvdmlkaW5nIFwKICAgICBmdW5jdGlvbnMgZm9yIGNvbW1vbiB0YXNrcyBpbiBwYXJzaW5nLCB2YWxpZGF0aW5nLCBhbmQgY29uc3RydWN0aW5nIGJvdGggdGhlIE5ldGxpbmsgaGVhZGVyIGFuZCBUTFZzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJtbmwvaW5kZXguaHRtbCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbGlibW5sL2luZGV4Lmh0bWwiCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxHUEx2Mi4xKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJtbmwvZmlsZXMvbGlibW5sLSR7UFZ9LnRhci5iejI7bmFtZT10YXIiCitTUkNfVVJJID0gImh0dHBzOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJtbmwvZmlsZXMvbGlibW5sLSR7UFZ9LnRhci5iejI7bmFtZT10YXIiCiBTUkNfVVJJW3Rhci5tZDVzdW1dID0gImJlOWI0YjUzMjhjNmRhMWJkYTU2NWFjNWRmZmFkYjJkIgogU1JDX1VSSVt0YXIuc2hhMjU2c3VtXSA9ICIxNzFmODk2OTlmMjg2YTU4NTRiNzJiOTFkMDZlOGY4ZTM2ODMwNjRjNTkwMWZiMDlkOTU0YTlhYjZmNTUxZjgxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJwaXBlbGluZS9saWJwaXBlbGluZV8xLjUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTgwMjA3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJwaXBlbGluZSBtYW5pcHVsYXRpb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBDIGxpYnJhcnkgZm9yIHNldHRpbmcgdXAgYW5kIHJ1bm5pbmcgcGlwZWxpbmVzIG9mIHByb2Nlc3NlcywgXAotd2l0aG91dCBuZWVkaW5nIHRvIGludm9sdmUgc2hlbGwgY29tbWFuZC1saW5lIHBhcnNpbmcgd2hpY2ggaXMgb2Z0ZW4gXAotZXJyb3ItcHJvbmUgYW5kIGluc2VjdXJlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJwaXBlbGluZS5ub25nbnUub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0YzhmZTZjZDg1NDIyYmFhZmQ2ZTA2MGY4OTZjNjFiYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjMzNzA2YjdkODQ1ZjA4YjQyYmM2NmRkYmU4NDVkNTdlNzI2YmY4OTI5OGUyY2VlMjlmMDk1NzdlMmY5MDJmIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKLQotYWNwYXRocyA9ICItSSAke1N9L2dsL200IC1JICR7U30vbTQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJwaXBlbGluZS9saWJwaXBlbGluZV8xLjUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExODI0NjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJwaXBlbGluZS9saWJwaXBlbGluZV8xLjUuMi5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gInBpcGVsaW5lIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIEMgbGlicmFyeSBmb3Igc2V0dGluZyB1cCBhbmQgcnVubmluZyBwaXBlbGluZXMgb2YgcHJvY2Vzc2VzLCBcCit3aXRob3V0IG5lZWRpbmcgdG8gaW52b2x2ZSBzaGVsbCBjb21tYW5kLWxpbmUgcGFyc2luZyB3aGljaCBpcyBvZnRlbiBcCitlcnJvci1wcm9uZSBhbmQgaW5zZWN1cmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYnBpcGVsaW5lLm5vbmdudS5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vbGlicGlwZWxpbmUvbGlicGlwZWxpbmUtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjE2OWRlNGNjMWY2ZjdmN2Q0MzBhNWJlZDg1OGIyZmQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkNTljNjQ5YzFhZTlkNjc2MDRkMTY0NGYxMTZhZDRkMjk3ZWFhNjZmODM4ZTNkZmFiOTZiNDFlODViMDU5ZmIiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scworCithY3BhdGhzID0gIi1JICR7U30vZ2wvbTQgLUkgJHtTfS9tNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC43LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NWEyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC43LjEwLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgorCitERVBFTkRTID0gImV4cGF0IHpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCisiCisKK1NSQ1JFViA9ICI2MDVkZDI2NDVlZjg5OWUyYjdjOTU3MDk0NzZmYjUxZTI4ZDdlMzc4IgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFX0NMQVNTRVMnLCdwYWNrYWdlX3JwbScsJ3JwbScsJycsZCl9IgorUEFDS0FHRUNPTkZJR1tycG1dID0gIi1ERU5BQkxFX1JQTU1EPU9OIC1ERU5BQkxFX1JQTURCPU9OLCxycG0iCisKK0VYVFJBX09FQ01BS0UgPSAiLURNVUxUSV9TRU1BTlRJQ1M9T04gLURFTkFCTEVfQ09NUExFWF9ERVBTPU9OIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMgJHtQTn1leHQiCisKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZlOWFlMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC43LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKLQotREVQRU5EUyA9ICJleHBhdCB6bGliIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQgXAotIgotCi1TUkNSRVYgPSAiNTIwNWM1NjgzY2UyYzhiODI4ODUzNDA1OWJhNDBhMzE4YTJhMTYxZCIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJycG0iCi1QQUNLQUdFQ09ORklHW3JwbV0gPSAiLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04sLHJwbSIKLQotRVhUUkFfT0VDTUFLRSA9ICItRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxY2Q5ZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUNvbnNpZGVyIG11c2wgcHJvdmlkZWQgYnVpbHQtaW4gZGVmaW5lcwotCi1IZWxwcyBjb21waWxlIGxpYnRpcnBjIHdpdGggbXVzbAotYml0cy9lbmRpYW4uaCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0gYS90aXJwYy9ycGMvdHlwZXMuaAotKysrIGIvdGlycGMvcnBjL3R5cGVzLmgKLUBAIC02Niw3ICs2Niw3IEBAIHR5cGVkZWYgICBpbnQzMl90IHJwY19pbmxpbmVfdDsKLSAjZGVmaW5lIG1lbV9mcmVlKHB0ciwgYnNpemUpCWZyZWUocHRyKQotIAotIAotLSNpZiBkZWZpbmVkIF9fQVBQTEVfQ0NfXyB8fCBkZWZpbmVkIF9fRnJlZUJTRF9fCi0rI2lmIGRlZmluZWQgX19BUFBMRV9DQ19fIHx8IGRlZmluZWQgX19GcmVlQlNEX18gfHwgIWRlZmluZWQoX19HTElCQ19fKQotICMgZGVmaW5lIF9fdV9jaGFyX2RlZmluZWQKLSAjIGRlZmluZSBfX2RhZGRyX3RfZGVmaW5lZAotICNlbmRpZgotLS0tIGEvc3JjL3hkcl9mbG9hdC5jCi0rKysgYi9zcmMveGRyX2Zsb2F0LmMKLUBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2dsX2xpbWl0cyB7Ci0gfTsKLSAjZWxzZQotIAotLSNpbmNsdWRlIDxiaXRzL2VuZGlhbi5oPgotKyNpbmNsdWRlIDxlbmRpYW4uaD4KLSAjZGVmaW5lIElFRUVGUAotIAotICNlbmRpZiAvKiB2YXggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzM2NlY2UuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy9maWxlcy9saWJ0aXJwYy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotU1JDX1VSSVttZDVzdW1dID0gImY1ZDJhNjIzZTlkZmJkODE4ZDJmM2YzYTRhODc4ZTNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYTUyOWYwMjI5MmUxMGMxNTg1NjIyOTVhMWZmZDk1ZDJjZThhZjk3ODIwZTM1MzRmZTFiMGUzYWVjNzU2MWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdzc2FwaSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgIGNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9uZXRjb25maWcKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9ycGMKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9ycGNzdmMKLSAgICAgICAgZm9yIGxpbmtfaGVhZGVyIGluICR7RH0ke2luY2x1ZGVkaXJ9L3RpcnBjL3JwYy8qOyBkbwotICAgICAgICAgICAgaWYgWyAtZiAkbGlua19oZWFkZXIgLWEgISAtZSAke0R9LyR7aW5jbHVkZWRpcn0vcnBjLyQoYmFzZW5hbWUgJGxpbmtfaGVhZGVyKSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgbG4gLXNmIC4uL3RpcnBjL3JwYy8kKGJhc2VuYW1lICRsaW5rX2hlYWRlcikgJHtEfSR7aW5jbHVkZWRpcn0vcnBjLyQoYmFzZW5hbWUgJGxpbmtfaGVhZGVyKQotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgICAgICBmb3IgbGlua19oZWFkZXIgaW4gJHtEfSR7aW5jbHVkZWRpcn0vdGlycGMvcnBjc3ZjLyo7IGRvCi0gICAgICAgICAgICBpZiBbIC1mICRsaW5rX2hlYWRlciAtYSAhIC1lICR7RH0vJHtpbmNsdWRlZGlyfS9ycGNzdmMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpIF07IHRoZW4KLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vdGlycGMvcnBjLyQoYmFzZW5hbWUgJGxpbmtfaGVhZGVyKSAke0R9JHtpbmNsdWRlZGlyfS9ycGNzdmMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICAgIGxuIC1zZiAgdGlycGMvbmV0Y29uZmlnLmggJHtEfS8ke2luY2x1ZGVkaXJ9L25ldGNvbmZpZy5oCi0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4yLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjIuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTAwZDE1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4yLjYuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJUcmFuc3BvcnQtSW5kZXBlbmRlbnQgUlBDIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJMaWJ0aXJwYyBpcyBhIHBvcnQgb2YgU3VucyBUcmFuc3BvcnQtSW5kZXBlbmRlbnQgUlBDIGxpYnJhcnkgdG8gTGludXgiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlidGlycGMvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE4MzA3NSZhdGlkPTkwMzc4NCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjgzNWNjZTg4NTI0ODFlNGIyYmJiZGQyM2I1ZTQ3ZjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25ldG5hbWUuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI3O21kNT1mOGE4Y2QyY2IyNWFjNWFhMTY3NjczNjRmYjBlM2MyNCIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJycGMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuYnoyIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjL2ZpbGVzL2xpYnRpcnBjLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCitTUkNfVVJJW21kNXN1bV0gPSAiYjI1ZjljYzE4YmZhZDUwZjdjNDQ2Yzc3ZjRhZTAwYmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDI3OGU5YTUxODFkNWFmOWNkNzg4NTMyMmZkZWNlYmM0NDRmOWEzZGE4N2M1MjZlN2Q0N2Y3YTEyYTM3ZDFjYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwljaG93biByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vbmV0Y29uZmlnCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBjZTY5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKLQotU0VDVElPTiA9ICJuZXQiCi1SREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCi0gICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAotICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAotICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YWJjNzc2MjQzYzgxMWU5ODcyZjczYWIzOGI3ZjhiNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZjE0Y2NlMjI1NGE5NmQ4ZmNiNmQzMTgxZTFhM2MyOWE4ZjgzMjUzMWMzZTg2ZmY2ZjI1MjRlY2RhOWE4NzIxIgotCi1QQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCi1QQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCi1QQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgotUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKLVBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCi1QQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCi1QQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIC0td2l0aG91dC1mYW0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKLQotSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2Mvc3lzdGVtZC9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQotCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKLQlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkL2xpZ2h0dHBkLmNvbmYiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsIHInXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMjU1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTUuYmIKQEAgLTAsMCArMSw4MyBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBoaWdoLXBlcmZvcm1hbmNlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpZ2h0dHBkLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9wcm9qZWN0cy9saWdodHRwZC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTRkYWM1YzZhYjE2OWFhMjEyZmViNTAyODg1M2E1NzkiCisKK1NFQ1RJT04gPSAibmV0IgorUkRFUEVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWRpcmxpc3RpbmcgXAorICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWluZGV4ZmlsZSBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtc3RhdGljZmlsZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3MgXAorICAgICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWFjY2Vzc2xvZyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQubGlnaHR0cGQubmV0L2xpZ2h0dHBkL3JlbGVhc2VzLTEuNC54L2xpZ2h0dHBkLSR7UFZ9LnRhci54eiBcCisgICAgICAgIGZpbGU6Ly9pbmRleC5odG1sLmxpZ2h0dHBkIFwKKyAgICAgICAgZmlsZTovL2xpZ2h0dHBkLmNvbmYgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXBlbmRlbmN5LWluc3RlYWQtb2YtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmU0YmRhMmMyOGJjYmRhYzZlYjk0MTUyOGY2ZWRmMDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmEwYjUwZTljOWQ1Y2MzZDllNDg1OTIzMTVjMjVhMmQ2NDU4NThmODYzZTFjY2QxMjA1MDdhMzBjZTIxZTkyNyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wgcGNyZSB6bGliIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgorUEFDS0FHRUNPTkZJR1ttbWFwXSA9ICItLWVuYWJsZS1tbWFwLC0tZGlzYWJsZS1tbWFwIgorUEFDS0FHRUNPTkZJR1tsaWJldl0gPSAiLS13aXRoLWxpYmV2LC0td2l0aG91dC1saWJldixsaWJldiIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbCwtLXdpdGhvdXQtbXlzcWwsbWFyaWFkYiIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgta3JiNSwtLXdpdGhvdXQta3JiNSxrcmI1IgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZSwtLXdpdGhvdXQtcGNyZSxsaWJwY3JlIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6aXAyLC0td2l0aG91dC1iemlwMixiemlwMiIKK1BBQ0tBR0VDT05GSUdbd2ViZGF2LXByb3BzXSA9ICItLXdpdGgtd2ViZGF2LXByb3BzLC0td2l0aG91dC13ZWJkYXYtcHJvcHMsbGlieG1sMiBzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtbG9ja3NdID0gIi0td2l0aC13ZWJkYXYtbG9ja3MsLS13aXRob3V0LXdlYmRhdi1sb2Nrcyx1dGlsLWxpbnV4IgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICItLXdpdGgtZ2RibSwtLXdpdGhvdXQtZ2RibSxnZGJtIgorUEFDS0FHRUNPTkZJR1ttZW1jYWNoZV0gPSAiLS13aXRoLW1lbWNhY2hlZCwtLXdpdGhvdXQtbWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxmcyAtLXdpdGhvdXQtZmFtIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCBzeXN0ZW1kCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJsaWdodHRwZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGlnaHR0cGQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQuZCAke0R9L3d3dy9wYWdlcy9kYXYKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5kZXguaHRtbC5saWdodHRwZCAke0R9L3d3dy9wYWdlcy9pbmRleC5odG1sCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jL3N5c3RlbWQvbGlnaHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpZ2h0dHBkLnNlcnZpY2UKKwkjRm9yIEZIUyBjb21wbGlhbmNlLCBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gL3Zhci9sb2cgYW5kIC92YXIvdG1wIGZvciBsb2dzIGFuZCB0ZW1wb3JhcnkgZGF0YQorCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L2xvZyAke0R9L3d3dy9sb2dzCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vdG1wICR7RH0vd3d3L3ZhcgorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAvd3d3IgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9saWdodHRwZC9saWdodHRwZC5jb25mIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlnaHR0cGQtbW9kdWxlLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGlnaHR0cGRfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCByJ15tb2RfKC4qKVwuc28kJywgJ2xpZ2h0dHBkLW1vZHVsZS0lcycsICdMaWdodHRwZCBtb2R1bGUgZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZS8wMDAxLVJlbW92ZS10aW1lc3RhbXAtZnJvbS1tYW5wYWdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtUmVtb3ZlLXRpbWVzdGFtcC1mcm9tLW1hbnBhZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwOTVmZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZS8wMDAxLVJlbW92ZS10aW1lc3RhbXAtZnJvbS1tYW5wYWdlLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZmIwYjU4YmU5MzhiYWI1NTcxYWMwYmRlYzM3MjVmNmQ4OGIwN2U5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogU2F0LCAyMiBGZWIgMjAyMCAxOTowMToyOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdGltZXN0YW1wIGZyb20gbWFucGFnZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbHNiLWRpc2N1c3NAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmddCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgQS4gUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMDRmZGVjZC4uNWJlODA4MSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTE3LDcgKzE3LDcgQEAgbWFuOiBsc2JfcmVsZWFzZS4xLmd6CisgCisgbHNiX3JlbGVhc2UuMS5nejogbHNiX3JlbGVhc2UKKyAJQC4vaGVscDJtYW4gLU4gLS1pbmNsdWRlIC4vbHNiX3JlbGVhc2UuZXhhbXBsZXMgLS1hbHRfdmVyc2lvbl9rZXk9cHJvZ3JhbV92ZXJzaW9uIC4vbHNiX3JlbGVhc2UgPmxzYl9yZWxlYXNlLjEKKy0JQGd6aXAgLTlmIGxzYl9yZWxlYXNlLjEKKysJQGd6aXAgLTlmbiBsc2JfcmVsZWFzZS4xCisgCisgaW5zdGFsbDogYWxsCisgCWluc3RhbGwgLUQgLW0gNjQ0IGxzYl9yZWxlYXNlLjEuZ3ogJHttYW5kaXJ9L21hbjEvbHNiX3JlbGVhc2UuMS5negorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlXzEuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZV8xLjQuYmIKaW5kZXggNTJlMzAyNi4uYTA2Y2JjZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlXzEuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiCkBAIC0xMCw2ICsxMCw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbHNiL2xzYl9yZWxlYXNlLzEuNC9sc2ItcmVsZWFzZS0xLjQudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWxzYl9yZWxlYXNlLXRvLXdvcmstd2l0aC1idXN5Ym94LWhlYWQtYW5kLWZpbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGltZXN0YW1wLWZyb20tbWFucGFnZS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjMwNTM3ZWY1YTAxZTBjYTk0YjdiOGViNmEzNmJiMWU0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLUFkZC1jb25maWd1cmUtdGltZS1jaGVjay1mb3ItZ2V0ZGVudHMtZ2V0ZGVudHM2NC1BUEkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLWNvbmZpZ3VyZS10aW1lLWNoZWNrLWZvci1nZXRkZW50cy1nZXRkZW50czY0LUFQSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjZWFkYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLWNvbmZpZ3VyZS10aW1lLWNoZWNrLWZvci1nZXRkZW50cy1nZXRkZW50czY0LUFQSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gNDA0ZGZlYjRmYWVmMjEzYjA0NTBmMTczYjYwY2Q3MDgwZWRlYzM0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI2IEp1bCAyMDE5IDEwOjMyOjI5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBBZGQgY29uZmlndXJlIHRpbWUgY2hlY2sgZm9yIGdldGRlbnRzL2dldGRlbnRzNjQgQVBJcwotCi1nbGliYyAyLjMwIGhhcyBhZGRlZCB3cmFwcGVyIGZvciBnZXRkZW50czY0IHRoaXMgd2lsbCBoZWxwIGluIGRldGVjdGluZwotcmlnaHQgY29uZGl0aW9uIHRvIHVzZSBmYWxsYmFjawotCi1DaGVjayBmb3IgZ2V0ZGVudHMgQVBJIGFzIHdlbGwgd2hpbGUgaGVyZQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLmxpbnV4Lml0L3BpcGVybWFpbC9sdHAvMjAxOS1KdWx5LzAxMjk1NC5odG1sXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGRlbnRzL2dldGRlbnRzLmggfCA4ICsrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjUsNiArNjUsOCBAQCBBQ19DSEVDS19GVU5DUyhbIFwKLSAgICAgZmFsbG9jYXRlIFwKLSAgICAgZmNob3duYXQgXAotICAgICBmc3RhdGF0IFwKLSsgICAgZ2V0ZGVudHMgXAotKyAgICBnZXRkZW50czY0IFwKLSAgICAga2NtcCBcCi0gICAgIG1rZGlyYXQgXAotICAgICBta25vZGF0IFwKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0ZGVudHMvZ2V0ZGVudHMuaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRkZW50cy9nZXRkZW50cy5oCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSAidGVzdC5oIgotICNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCi0tCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotIC8qCi0gICogU2VlIGZzL2NvbXBhdC5jIHN0cnVjdCBjb21wYXRfbGludXhfZGlyZW50Ci0gICovCi1AQCAtMzQsMTIgKzM0LDE3IEBAIHN0cnVjdCBsaW51eF9kaXJlbnQgewotIAljaGFyICAgICAgICAgICAgZF9uYW1lW107Ci0gfTsKLSAKLSsjaWYgSEFWRV9HRVRERU5UUwotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZWxzZQotIHN0YXRpYyBpbmxpbmUgaW50Ci0gZ2V0ZGVudHModW5zaWduZWQgaW50IGZkLCBzdHJ1Y3QgbGludXhfZGlyZW50ICpkaXJwLCB1bnNpZ25lZCBpbnQgc2l6ZSkKLSB7Ci0gCXJldHVybiBsdHBfc3lzY2FsbChfX05SX2dldGRlbnRzLCBmZCwgZGlycCwgc2l6ZSk7Ci0gfQotIAotKyNlbmRpZiAvKiBIQVZFX0dFVERFTlRTICovCi0rCi0gc3RydWN0IGxpbnV4X2RpcmVudDY0IHsKLSAJdWludDY0X3QJZF9pbm87Ci0gCWludDY0X3QJCWRfb2ZmOwotQEAgLTQ4LDEwICs1MywxMyBAQCBzdHJ1Y3QgbGludXhfZGlyZW50NjQgewotIAljaGFyCQlkX25hbWVbXTsKLSB9OwotIAotKyNpZiBIQVZFX0dFVERFTlRTNjQKLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2Vsc2UKLSBzdGF0aWMgaW5saW5lIGludAotIGdldGRlbnRzNjQodW5zaWduZWQgaW50IGZkLCBzdHJ1Y3QgbGludXhfZGlyZW50NjQgKmRpcnA2NCwgdW5zaWduZWQgaW50IHNpemUpCi0gewotIAlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9nZXRkZW50czY0LCBmZCwgZGlycDY0LCBzaXplKTsKLSB9Ci0tCi0rI2VuZGlmIC8qIEhBVkVfR0VUREVOVFM2NCAqLwotICNlbmRpZiAvKiBHRVRERU5UU19IICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLW1vcmUtbXVzbC1leGNsdXNpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLUFkZC1tb3JlLW11c2wtZXhjbHVzaW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmMyZmVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLUFkZC1tb3JlLW11c2wtZXhjbHVzaW9ucy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDc4OGM0N2NlZWY3ZjExNWFiN2Y3YWExN2Y5MThlNTg3OTVmNGU2YzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTM6MDY6MDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIG1vcmUgbXVzbCBleGNsdXNpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitbIHB2b3JlbDogcmViYXNlIGZvciAyMDIwMDEyMDogZW5hYmxlIGZhbm90aWZ5MTMsIGZhbm90aWZ5MTUsIHNldHhhdHRyMDMgXQorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cGV0ci52b3JlbEBnbWFpbC5jb20+CistLS0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvTWFrZWZpbGUgICAgICB8IDQgKysrKworIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZQoraW5kZXggNTA0MDQyZTExLi45NGRiMDYyNjYgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZQorQEAgLTIwLDQgKzIwLDggQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KKyAKKyBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay90ZXN0Y2FzZXMubWsKKyAKKytpZmVxICgkKExJQkMpLG11c2wpCisrRklMVEVSX09VVF9NQUtFX1RBUkdFVFMgICAgICAgIDo9IGFjY2VwdDRfMDEKKytlbmRpZgorKworIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3RpbWVyX2NyZWF0ZS9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlCitpbmRleCA4ZGUyNDcwNzUuLmViMjQwZjQzMiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3RpbWVyX2NyZWF0ZS9NYWtlZmlsZQorQEAgLTIwLDYgKzIwLDEwIEBAIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCisgCisgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvdGVzdGNhc2VzLm1rCisgCisraWZlcSAoJChMSUJDKSxtdXNsKQorK0ZJTFRFUl9PVVRfTUFLRV9UQVJHRVRTICAgICAgICA6PSB0aW1lcl9jcmVhdGUwMSB0aW1lcl9jcmVhdGUwMworK2VuZGlmCisrCisgQ1BQRkxBR1MJCSs9IC1EX0dOVV9TT1VSQ0UgLUkkKGFic19zcmNkaXIpLy4uL2luY2x1ZGUKKyAKKyBMRExJQlMJCQkrPSAtbHB0aHJlYWQgLWxydAorLS0KKzIuMjUuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCBiNWMyNWM1Li5iMWE5OTk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZWMyODI5ODBlNmVlZTk2ZjViNzRhYmE0NjQxNDFmODYwNDkyNjNlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmU0NTNkMWJlODI2Yjg2MmQ0N2UwODY2M2ZkNjllZWE5ZGQ2MjczMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDcgSmFuIDIwMTYgMTg6MTk6MDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IEFkZCBvcHRpb24gdG8gc2VsZWN0IGxpYmMgaW1wbGVtZW50YXRpb24KK1N1YmplY3Q6IFtQQVRDSCAxLzZdIGJ1aWxkOiBBZGQgb3B0aW9uIHRvIHNlbGVjdCBsaWJjIGltcGxlbWVudGF0aW9uCiAKIFRoZXJlIGFyZSBtb3JlIHRoYW4gZ2xpYmMgZm9yIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgb24KIGxpbnV4IG5vdyBhIGRheXMsIHVjbGliYyBjbG9ha2VkIGxpa2UgZ2xpYmMgYnV0IG11c2wgZS5nLiBpcyB2ZXJ5CkBAIC0xMSwyMCArMTEsMjkgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKK3J0X3Rnc2lncXVldWVpbmZvIGZhaWxzIHdpdGg6CitydF90Z3NpZ3F1ZXVlaW5mbzAxLmM6IEluIGZ1bmN0aW9uICdzaWd1c3IxX2hhbmRsZXInOgorcnRfdGdzaWdxdWV1ZWluZm8wMS5jOjQyOjIyOiBlcnJvcjogJ3NpZ2luZm9fdCcge2FrYSAnc3RydWN0IDxhbm9ueW1vdXM+J30gaGFzIG5vIG1lbWJlciBuYW1lZCAnX3NpZmllbGRzJzsgZGlkIHlvdSBtZWFuICdfX3NpX2ZpZWxkcyc/CisgICA0MiB8ICBzaWd2YWxfcmN2ID0gdWluZm8tPl9zaWZpZWxkcy5fcnQuU0lfU0lHVkFMLnNpdmFsX3B0cjsKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF9fc2lfZmllbGRzCisKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitbIHB2b3JlbDogcmViYXNlIGZvciAyMDIwMDEyMDogZW5hYmxlIG1hbGxvcHQsIHByb2ZpbCwgcnBjMDE2LAorcnRfc2lnc3VzcGVuZCwgc2Jya19tdXRleCwgc2V0ZG9tYWlubmFtZSwgc2V0aG9zdG5hbWUsIHNpZ3N1c3BlbmQsCit0ZXN0cGktMywgdGVzdHBpLTUsIHRlc3RwaS02LCB1c3RhdDsgbW92ZSBydF90Z3NpZ3F1ZXVlaW5mbworZnJvbSAwMDA2LXJ0X3Rnc2lncXVldWVpbmZvLWRpc2FibGUtdGVzdC1vbi1tdXNsLnBhdGNoIF0KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHBldHIudm9yZWxAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CiAtLS0KLSBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSArKysrKwotIHRlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgfCA1ICsrKystCi0gdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZSAgICAgICAgICAgICB8IDQgKysrLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgICAgICAgICAgfCA1ICsrKysrCi0gdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlICAgICAgICB8IDQgKysrKwotIHRlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZSAgfCA1ICsrKysrCi0gdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUgICB8IDQgKysrKwotIHRlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUgfCA1ICsrKysrCi0gOCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKysrCisgdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSAgICAgICAgICB8IDUgKysrKy0KKyB0ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlICAgIHwgNCArKystCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSB8IDQgKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDc2OGNhNDYuLmU5ZDY3OWEgMTAwNjQ0CitpbmRleCA3NjhjYTQ2MDYuLmU5ZDY3OWE3MSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTQxLDYgKzQxLDExIEBAIHZwYXRoICUubWsJCSQodG9wX3NyY2RpcikvbWs6JCh0b3Bfc3JjZGlyKS9tay9pbmNsdWRlCkBAIC00MCwxOCArNDksMTkgQEAKICAjIENPTU1PTl9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IGluIGFsbCwgY2xlYW4sIGFuZCBpbnN0YWxsLgogICMgSU5TVEFMTF9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IGluIGNsZWFuIGFuZCBpbnN0YWxsIChjb250YWlucwogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCi1pbmRleCAzOWQ3OWM3Li4yNGE1N2Q5IDEwMDY0NAoraW5kZXggMzMxOWIzMTYzLi45NGVhMzYyYzggMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCi1AQCAtNDksMTIgKzQ5LDE1IEBAIFNVQkRJUlMJCQkrPSBjb25uZWN0b3JzIFwKK0BAIC00OSwxMyArNDksMTYgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAogIAkJCSAgIGxvZ2dpbmcgXAogIAkJCSAgIG1lbSBcCiAgCQkJICAgbnVtYSBcCiAtCQkJICAgcHR5IFwKICAJCQkgICBzY2hlZCBcCiAgCQkJICAgc2VjdXJpdHkgXAotIAkJCSAgIHRpbWVycyBcCisgCQkJICAgc291bmQgXAogIAkJCSAgIHRyYWNpbmcgXAorIAkJCSAgIHVldmVudHMgXAogIAogK2lmbmVxICgkKExJQkMpLG11c2wpCiArU1VCRElSUwkJCSs9IHB0eQpAQCAtNjEsNyArNzEsNyBAQAogIFNVQkRJUlMJCQkrPSBwb3dlcl9tYW5hZ2VtZW50CiAgZW5kaWYKIGRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQotaW5kZXggNmE1N2Q3OS4uNzRiYjkzMyAxMDA2NDQKK2luZGV4IDZhNTdkNzllZS4uNzRiYjkzMzcwIDEwMDY0NAogLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQogKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQogQEAgLTIzLDUgKzIzLDcgQEAKQEAgLTc0LDc2ICs4NCwxOSBAQAogK2VuZGlmCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKIGRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotaW5kZXggNDVhMDBjZi4uZDFiZWNkMCAxMDA2NDQKK2luZGV4IDQ1YTAwY2Y3ZC4uYWY1YTU5MWEwIDEwMDY0NAogLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQogKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotQEAgLTI4LDYgKzI4LDExIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKLSBGSUxURVJfT1VUX0RJUlMJKz0gY2FwZ2V0IGNhcHNldCBjaG1vZCBjaG93biBjbG9uZSBmb3JrIGdldGNvbnRleHQgbGxzZWVrIFwKK0BAIC0yOSw2ICsyOSwxMCBAQCBGSUxURVJfT1VUX0RJUlMJKz0gY2FwZ2V0IGNhcHNldCBjaG1vZCBjaG93biBjbG9uZSBmb3JrIGdldGNvbnRleHQgbGxzZWVrIFwKICAJCSAgIG1pbmNvcmUgbXByb3RlY3QgbmZ0dyBwcm9maWwgcmVtYXBfZmlsZV9wYWdlcyBzYnJrCiAgZW5kaWYKLStpZmVxICgkKExJQkMpLG11c2wpCi0rRklMVEVSX09VVF9ESVJTCSs9IGNvbmZzdHIgZm10bXNnIGdldGNvbnRleHQgaW9jdGwgbWFsbG9wdCBwcm9maWwgXAotKwkJICAgcnRfc2lnc3VzcGVuZCBzZXRkb21haW5uYW1lIHNldGhvc3RuYW1lIHNpZ3N1c3BlbmQgXAotKwkJICAgdXN0YXQKLStlbmRpZgogIAorK2lmZXEgKCQoTElCQyksbXVzbCkKKytGSUxURVJfT1VUX0RJUlMJKz0gY29uZnN0ciBmbXRtc2cgZ2V0Y29udGV4dCBpb2N0bCBydF90Z3NpZ3F1ZXVlaW5mbworK2VuZGlmCisrCiAgaWZlcSAoJChVQ0xJQkMpLDEpCiAgRklMVEVSX09VVF9ESVJTCSs9IHByb2ZpbAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQotaW5kZXggOGM1NWE2Yi4uZjdjZGE2MiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi1AQCAtMjYsNCArMjYsOCBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0gCi0gTERMSUJTCQkJKz0gJChBQ0xfTElCUykKLSAKLStpZmVxICgkKExJQkMpLG11c2wpCi0rRklMVEVSX09VVF9NQUtFX1RBUkdFVFMJOj0gYWNsMQotK2VuZGlmCi0rCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQotaW5kZXggNjZlOWQ1Ni4uZWE4ZWI4YSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCi1AQCAtMjMsNCArMjMsOSBAQAotIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCi0gCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZS5tawotKwotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX0RJUlMgKz0gcnBjMDEKLStlbmRpZgotKwotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfdHJ1bmtfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQotaW5kZXggNjg2MTZhNy4uNzQ4NzU0YiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQotQEAgLTI3LDUgKzI3LDkgQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZS5tawotIGluY2x1ZGUgJChhYnNfc3JjZGlyKS8uLi8uLi9jb25maWcubWsKLSAKLSBNQUtFX1RBUkdFVFMJCTo9IHRlc3RwaS0wIHRlc3RwaS0xIHRlc3RwaS0yIHRlc3RwaS00IHRlc3RwaS01IHRlc3RwaS02IHRlc3RwaS03IHNicmtfbXV0ZXgKLStpZmVxICgkKExJQkMpLG11c2wpCi0rRklMVEVSX09VVF9NQUtFX1RBUkdFVFMJOj0gdGVzdHBpLTUgdGVzdHBpLTYgc2Jya19tdXRleAotK2VuZGlmCi0rCi0gCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCAxODgxZjc1Li4yNjZlMGI4IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQotQEAgLTI0LDQgKzI0LDkgQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KLSAKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0gaW5jbHVkZSAkKGFic19zcmNkaXIpLy4uLy4uL2NvbmZpZy5tawotKwotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX01BS0VfVEFSR0VUUwk6PSB0ZXN0cGktMwotK2VuZGlmCi0rCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotLS0gCi0yLjcuNAotCisgZW5kaWYKKy0tCisyLjI1LjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M0MDA4MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY3ZlLTIwMTctMTcwNTItQXZvaWQtdW5zYWZlLWV4aXRzLWluLXRocmVhZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIGUzYTg1MDJkMGE0ZjhhNDRkZGQwMmNhNGIyZWZjMDk3MTMzZmI5ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXRoaWFzIEZpZWRsZXIgPG1hdGhpYXMuZmllZGxlckBhb3gtdGVjaC5kZT4KLURhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTI6NDY6NDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY3ZlLTIwMTctMTcwNTI6IEF2b2lkIHVuc2FmZSBleGl0cyBpbiB0aHJlYWRzCi0KLUFjY29yZGluZyB0byBtYW5wYWdlIGV4aXQoMykgY2FsbGluZyBleGl0IGlzIG5vdCB0aHJlYWQtc2FmZS4KLUFuZCB3aXRoIGdsaWJjIDIuMjggKGFuZCBwcm9iYWJseSBhbHNvIHdpdGggZ2xpYmMgPj0yLjI3KSBzb21ldGltZXMKLWNoaWxkIHByb2Nlc3NlcyBjcmVhdGVkIGluIGZvcmtfdGhyZWFkIGNhbiBnZXQgc3R1Y2sgb24gcHJvY2VzcyBleGl0IGluCi1nbGliYydzIF9fcnVuX2V4aXRfaGFuZGxlcnMgdHJ5aW5nIHRvIGFjcXVpcmUgc29tZSBsb2NrIHdoaWNoIHdhcyBpbgotbG9ja2VkIHN0YXRlIHdoaWxlIHRoZSBmb3JrIHdhcyBjcmVhdGVkLiBUaGlzIGNhbiBoYXBwZW4gd2hlbiBleGl0IGlzCi1jYWxsZWQgaW4gbW1hcF90aHJlYWQgY29uY3VycmVudGx5IHRvIHRoZSBmb3JrLgotV2hpbGUgdGhlIG1haW4gcHJvY2VzcyB3aWxsIHN0aWxsIHJldHVybiB3aXRoIFBBU1NFRCBzb21lIG9mIGl0cwotY2hpbGRyZW4gYXJlIGxlZnQgYmVoaW5kLgotCi1Db21wYXJpbmcgdGhlIHNvdXJjZSBjb2RlIHdpdGggdGhlIG9yaWdpbmFsIHByb2dyYW0gYXMgZGVzY3JpYmVkIGluIHRoZQotY29tbWl0IDJiN2U4NjY1YjRmZjUxYzAzNGM1NWRmM2NmZjc2NTE4ZDFhOWVlM2Egb2YgbGludXgga2VybmVsID49NC4xMwotdGhlIGV4aXRzIGluIG1tYXBfdGhyZWFkIGFuZCBmb3JrX3RocmVhZCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0bwotdHJpZ2dlciB0aGUgb3JpZ2luYWwgYnVnLgotCi1UaGVyZWZvcmUgdGhvc2UgZXhpdCBjYWxscyBhcmUgcmVtb3ZlZC4gVGhlIG1tYXBfdGhyZWFkIGFuZCBmb3JrX3RocmVhZAotc2hvdWxkIHN0aWxsIGV4aXQgd2hlbiB0aGVpciBjb3JyZXNwb25kaW5nIG1haW4gdGhyZWFkIGluIGRvX3Rlc3RfZm9yawotY2FsbHMgZXhpdF9ncm91cC4gVGhlIHJlbWFpbmluZyBleGl0IGluIGRvX3Rlc3RfZm9yayB3aWxsIGJlIGNhbGxlZCBpbgotdGhlIG1haW4gdGhyZWFkIHdpdGhvdXQgYW55IGNvbmN1cnJlbnQgdGhyZWFkIGluIHRoZSBzYW1lIHByb2Nlc3MuCi0KLVNpZ25lZC1vZmYtYnk6IE1hdGhpYXMgRmllZGxlciA8bWF0aGlhcy5maWVkbGVyQGFveC10ZWNoLmRlPgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotQWNrZWQtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0LzlmMGI0NTJjMWFmNGJjYjU0ZGEzNTcxMWViM2ZhNzczMzRhMzUwYjRdCi0KLUNWRTogQ1ZFLTIwMTctMTcwNTIKLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jdmUvY3ZlLTIwMTctMTcwNTIuYyB8IDUgLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctMTcwNTIuYyBiL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctMTcwNTIuYwotaW5kZXggZDdkYTdlOTE5Li4xOGNkMmE2ZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvY3ZlL2N2ZS0yMDE3LTE3MDUyLmMKLSsrKyBiL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctMTcwNTIuYwotQEAgLTU4LDggKzU4LDYgQEAgc3RhdGljIHZvaWQgKm1tYXBfdGhyZWFkKHZvaWQgKmFyZykKLSAJZm9yICg7OykgewotIAkJU0FGRV9NTUFQKE5VTEwsIDB4MTAwMDAwMCwgUFJPVF9SRUFELAotIAkJCQlNQVBfUE9QVUxBVEV8TUFQX0FOT05ZTU9VU3xNQVBfUFJJVkFURSwgLTEsIDApOwotLQkJaWYgKCpkb19leGl0KQotLQkJCWV4aXQoMCk7Ci0gCX0KLSAKLSAJcmV0dXJuIGFyZzsKLUBAIC02Nyw5ICs2NSw2IEBAIHN0YXRpYyB2b2lkICptbWFwX3RocmVhZCh2b2lkICphcmcpCi0gCi0gc3RhdGljIHZvaWQgKmZvcmtfdGhyZWFkKHZvaWQgKmFyZykKLSB7Ci0tCWlmICgqZG9fZXhpdCkKLS0JCWV4aXQoMCk7Ci0tCi0gCXVzbGVlcChyYW5kKCkgJSAxMDAwMCk7Ci0gCVNBRkVfRk9SSygpOwotIAotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS1tZWx0ZG93bi5jLUZpeC1rZXJuZWwtc3ltYm9sLWZpbmRpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY3ZlLW1lbHRkb3duLmMtRml4LWtlcm5lbC1zeW1ib2wtZmluZGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRmNmY1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY3ZlLW1lbHRkb3duLmMtRml4LWtlcm5lbC1zeW1ib2wtZmluZGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLUZyb20gZmJlZGE4MmY0NDBhMDA5OGJlNDJkZDY2OGNiYzQ3MjEyYTg2YWI0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDE2OjI3OjI0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGN2ZS9tZWx0ZG93bi5jOiBGaXgga2VybmVsIHN5bWJvbCBmaW5kaW5nCi0KLW1lbHRkb3duIGNhc2UgZmFpbHMgYXMgYmVsb3cuCi1zYWZlX2ZpbGVfb3BzLmM6MjE5OiBCUk9LOiBFeHBlY3RlZCAzIGNvbnZlcnNpb25zIGdvdCAyIGF0IG1lbHRkb3duLmM6MjcyCi0KLWZpbmRfa2VybmVsX3N5bWJvbCBpcyBkZWZpbmVkIHRvIHRyeSB0d2ljZSB3aXRoIGVhY2ggb2YgL3Byb2Mva2FsbHN5bXMgYW5kCi0vYm9vdC9TeXN0ZW0ubWFwLSVzLiBDdXJyZW50bHkgaWYgdGhlIHN5bWJvbCBpcyBub3QgZm91bmQgaW4gL3Byb2Mva2FsbHN5bXMsCi13aGVuIGtlcm5lbCBvcHRpb24gQ09ORklHX0tBTExTWU1TX0FMTCBpcyBkaXNhYmxlZCwgaXQgd291bGQgc3RvcCB0aGUgY2FzZQotaW1tZWRpYXRlbHkgZHVlIHRvIFNBRkVfRklMRV9MSU5FU19TQ0FORi4KLQotVGhpcyBwYXRjaCB0dXJucyB0byB1c2UgRklMRV9MSU5FU19TQ0FORiB0byBnaXZlIGZpbmRfa2VybmVsX3N5bWJvbCBzZWNvbmQKLWNoYW5jZS4KLQotW2pzdGFuY2VrXSBGaXggYWxzbyBjb25kaXRpb24gaW50cm9kdWNlZCBpbiA3NzA5ZDJhZTkyZWEsIGV2ZW4gaWYKLSAgICAgICAgICAgL3Byb2Mva2FsbHN5bXMgaXMgZGlzYWJsZWQsIHdlIHN0aWxsIHdhbnQgdG8gdHJ5IFN5c3RlbS5tYXAuCi0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC9jMjA0OWI1Yzg3NGJjMDcxZjgxODViZmZiNWZkN2RjYjA0MmQ5ZWM4XQotCi1SZW1vdmUgdGhlIGh1bmsgZm9yIHVwc3RyZWFtIDc3MDlkMmFlOTJlYSAoImN2ZS9tZWx0ZG93bi5jOiBhYm9ydCB0aGUgdGVzdCBpZiBrYWxsc3ltcyB3YXMgbm90IGVuYWJsZWQiKQotdGhhdCBoYXMgYmVlbiBjb3ZlcmVkIGJ5IHRoaXMgcGF0Y2guCi0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMgfCAxMyArKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMgYi90ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMKLWluZGV4IGE1M2VhOWIuLjIyNjUxYTYgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMKLSsrKyBiL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYwotQEAgLTI2Nyw5ICsyNjcsMTUgQEAgZmluZF9zeW1ib2xfaW5fZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqc3ltbmFtZSkKLSAJaW50IHJldCwgcmVhZDsKLSAJY2hhciBmbXRbc3RybGVuKHN5bW5hbWUpICsgNjRdOwotIAotKwl0c3RfcmVzKFRJTkZPLCAiTG9va2luZyBmb3IgJXMgaW4gJXMiLCBzeW1uYW1lLCBmaWxlbmFtZSk7Ci0rCWlmIChhY2Nlc3MoZmlsZW5hbWUsIEZfT0spID09IC0xKSB7Ci0rCQl0c3RfcmVzKFRJTkZPLCAiJXMgbm90IGF2YWlsYWJsZSIsIGZpbGVuYW1lKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0gCXNwcmludGYoZm10LCAiJSVseCAlJWMgJXMlJWMiLCBzeW1uYW1lKTsKLSAKLS0JcmV0ID0gU0FGRV9GSUxFX0xJTkVTX1NDQU5GKGZpbGVuYW1lLCBmbXQsICZhZGRyLCAmdHlwZSwgJnJlYWQpOwotKwlyZXQgPSBGSUxFX0xJTkVTX1NDQU5GKGZpbGVuYW1lLCBmbXQsICZhZGRyLCAmdHlwZSwgJnJlYWQpOwotIAlpZiAocmV0KQotIAkJcmV0dXJuIDA7Ci0gCi1AQCAtMjg3LDEzICsyOTMsMTEgQEAgZmluZF9rZXJuZWxfc3ltYm9sKGNvbnN0IGNoYXIgKm5hbWUpCi0gCWlmIChhZGRyKQotIAkJcmV0dXJuIGFkZHI7Ci0gCi0tCXRzdF9yZXMoVElORk8sICJub3QgZm91bmQgJyVzJyBpbiAvcHJvYy9rYWxsc3ltcyIsIG5hbWUpOwotIAlpZiAodW5hbWUoJnV0c25hbWUpIDwgMCkKLSAJCXRzdF9icmsoVEJST0sgfCBURVJSTk8sICJ1bmFtZSIpOwotIAotIAlzcHJpbnRmKHN5c3RlbW1hcCwgIi9ib290L1N5c3RlbS5tYXAtJXMiLCB1dHNuYW1lLnJlbGVhc2UpOwotIAotLQl0c3RfcmVzKFRJTkZPLCAibG9va2luZyBpbiAnJXMnXG4iLCBzeXN0ZW1tYXApOwotIAlhZGRyID0gZmluZF9zeW1ib2xfaW5fZmlsZShzeXN0ZW1tYXAsIG5hbWUpOwotIAlyZXR1cm4gYWRkcjsKLSB9Ci1AQCAtMzA4LDYgKzMxMiw5IEBAIHN0YXRpYyB2b2lkIHNldHVwKHZvaWQpCi0gCXNhdmVkX2NtZGxpbmVfYWRkciA9IGZpbmRfa2VybmVsX3N5bWJvbCgic2F2ZWRfY29tbWFuZF9saW5lIik7Ci0gCXRzdF9yZXMoVElORk8sICImc2F2ZWRfY29tbWFuZF9saW5lID09IDB4JWx4Iiwgc2F2ZWRfY21kbGluZV9hZGRyKTsKLSAKLSsJaWYgKCFzYXZlZF9jbWRsaW5lX2FkZHIpCi0rCQl0c3RfYnJrKFRDT05GLCAic2F2ZWRfY29tbWFuZF9saW5lIG5vdCBmb3VuZCIpOwotKwotIAlzcGVjX2ZkID0gU0FGRV9PUEVOKCIvcHJvYy9jbWRsaW5lIiwgT19SRE9OTFkpOwotIAotIAltZW1zZXQodGFyZ2V0X2FycmF5LCAxLCBzaXplb2YodGFyZ2V0X2FycmF5KSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1ta3N3YXAwMS5zaC1BZGQtdWRldmFkbS10cmlnZ2VyLWJlZm9yZS1zd2FwLXZlcmlmaWNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1rc3dhcDAxLnNoLUFkZC11ZGV2YWRtLXRyaWdnZXItYmVmb3JlLXN3YXAtdmVyaWZpY2EucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNDMzZDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1rc3dhcDAxLnNoLUFkZC11ZGV2YWRtLXRyaWdnZXItYmVmb3JlLXN3YXAtdmVyaWZpY2EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGZhZTg4NTJhNjNkOWZhNmU1NmZiOGIyNGVhZjEwNTYwYmQxMzc1N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZb25neGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTIgTm92IDIwMTkgMTE6MzM6NTAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWtzd2FwMDEuc2g6IEFkZCAidWRldmFkbSB0cmlnZ2VyIiBiZWZvcmUgc3dhcCB2ZXJpZmljYXRpb24KLQotRml4OiBodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9pc3N1ZXMvNDU4Ci0KLVNvbWV0aW1lcyB0aGUgc3dhcCBkZXZpY2UgY2Fubm90IHNob3cgdXAgaW4gL2Rldi9kaXNrL2J5LXV1aWQvCi1vciAvZGV2L2Rpc2svYnktbGFibGUvIGR1ZSB0byB0aGUgaXNzdWUgIzQ1OC4gV2hlbiB0aGlzIGlzc3VlCi1oYXBwZW5zLCAiYmxraWQgLWMgL2Rldi9udWxsIiBhbmQgImxzIC9kZXYvZGlzay9ieS11dWlkLyIgc2hvdwotZGlmZmVyZW50IFVVSUQgb2YgdGhlIGRldmljZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvMTE5MzQxNF0KLQotU2lnbmVkLW9mZi1ieTogWW9uZ3hpbiBMaXUgPHlvbmd4aW4ubGl1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY29tbWFuZHMvbWtzd2FwL21rc3dhcDAxLnNoIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2ggYi90ZXN0Y2FzZXMvY29tbWFuZHMvbWtzd2FwL21rc3dhcDAxLnNoCi1pbmRleCAzYTM0OGM2ZTYuLjk0MzdjNGE0ZSAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2gKLSsrKyBiL3Rlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2gKLUBAIC0xMjksNiArMTI5LDggQEAgbWtzd2FwX3Rlc3QoKQotIAkJcmV0dXJuCi0gCWZpCi0gCi0rCXVkZXZhZG0gdHJpZ2dlciAtLW5hbWUtbWF0Y2g9JFRTVF9ERVZJQ0UKLSsKLSAJaWYgWyAtbiAiJGRldmljZSIgXTsgdGhlbgotIAkJbWtzd2FwX3ZlcmlmeSAiJG1rc3dhcF9vcCIgIiRvcF9hcmciICIkZGV2aWNlIiAiJHNpemUiICIkZGV2X2ZpbGUiCi0gCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLS0tIAotMi4xNC40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1vdmVyY29tbWl0X21lbW9yeS11cGRhdGUtZm9yLW1tLWZpeC1mYWxzZS1wb3NpdGl2ZS1PLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZDg0NzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIGQ2NTZhNDQ3ODkzZGNjYzMxMGM5NzVhMjM5ZjQ4MjI3ODU1MGMzZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjEgTWF5IDIwMTkgMTA6MTA6NDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gb3ZlcmNvbW1pdF9tZW1vcnk6IHVwZGF0ZSBmb3IgIm1tOiBmaXggZmFsc2UtcG9zaXRpdmUKLSBPVkVSQ09NTUlUX0dVRVNTIGZhaWx1cmVzIgotCi1jb21taXQgOGM3ODI5YjA0YzUyICgibW06IGZpeCBmYWxzZS1wb3NpdGl2ZSBPVkVSQ09NTUlUX0dVRVNTIGZhaWx1cmVzIikKLWNoYW5nZXMgbG9naWMgb2YgX192bV9lbm91Z2hfbWVtb3J5KCksIHNpbXBsaWZ5aW5nIGl0IHRvOgotICAgIFdoZW4gaW4gR1VFU1MgbW9kZSwgY2F0Y2ggd2lsZCBhbGxvY2F0aW9ucyBieSBjb21wYXJpbmcgdGhlaXIgcmVxdWVzdAotICAgIHNpemUgdG8gdG90YWwgYW1vdW50IG9mIHJhbSBhbmQgc3dhcCBpbiB0aGUgc3lzdGVtLgotCi1UZXN0Y2FzZSBjdXJyZW50bHkgYWxsb2NhdGVzIG1lbV90b3RhbCArIHN3YXBfdG90YWwsIHdoaWNoIGRvZXNuJ3QgdHJpZ2dlcgotbmV3IGNvbmRpdGlvbi4gTWFrZSBpdCBtb3JlIGV4dHJlbWUsIGJ1dCBhc3N1bWluZyBmcmVlX3RvdGFsIC8gMiB3aWxsIFBBU1MsCi1hbmQgMipzdW1fdG90YWwgd2lsbCBGQUlMLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLUFja2VkLWJ5OiBDeXJpbCBIcnViaXMgPGNocnViaXNAc3VzZS5jej4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2Q2NTZhNDQ3ODkzZGNjYzMxMGM5NzVhMjM5ZjQ4MjI3ODU1MGMzZTBdCi1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9tZW0vdHVuYWJsZS9vdmVyY29tbWl0X21lbW9yeS5jIHwgMTEgKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vdHVuYWJsZS9vdmVyY29tbWl0X21lbW9yeS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9tZW0vdHVuYWJsZS9vdmVyY29tbWl0X21lbW9yeS5jCi1pbmRleCA1NTUyOThmLi4zNDU3NjRkIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vdHVuYWJsZS9vdmVyY29tbWl0X21lbW9yeS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMKLUBAIC0zNiwxMSArMzYsMTAgQEAKLSAgKgotICAqIFRoZSBwcm9ncmFtIGlzIGRlc2lnbmVkIHRvIHRlc3QgdGhlIHR3byB0dW5hYmxlczoKLSAgKgotLSAqIFdoZW4gb3ZlcmNvbW1pdF9tZW1vcnkgPSAwLCBhbGxvY2F0YWJsZSBtZW1vcnkgY2FuJ3Qgb3ZlcmV4dGVuZHMKLS0gKiB0aGUgYW1vdW50IG9mIGZyZWUgbWVtb3J5LiBJIGNob29zZSB0aGUgdGhyZWUgY2FzZXM6Ci0rICogV2hlbiBvdmVyY29tbWl0X21lbW9yeSA9IDAsIGFsbG9jYXRhYmxlIG1lbW9yeSBjYW4ndCBvdmVyZXh0ZW5kCi0rICogdGhlIGFtb3VudCBvZiB0b3RhbCBtZW1vcnk6Ci0gICogYS4gbGVzcyB0aGFuIGZyZWVfdG90YWw6ICAgIGZyZWVfdG90YWwgLyAyLCBhbGxvYyBzaG91bGQgcGFzcy4KLS0gKiBiLiBncmVhdGVyIHRoYW4gZnJlZV90b3RhbDogZnJlZV90b3RhbCAqIDIsIGFsbG9jIHNob3VsZCBmYWlsLgotLSAqIGMuIGVxdWFsIHRvIHN1bV90b3RhbDogICAgICBzdW1fdGF0YWwsICAgICAgYWxsb2Mgc2hvdWxkIGZhaWwKLSsgKiBiLiBncmVhdGVyIHRoYW4gc3VtX3RvdGFsOiAgIHN1bV90b3RhbCAqIDIsIGFsbG9jIHNob3VsZCBmYWlsLgotICAqCi0gICogV2hlbiBvdmVyY29tbWl0X21lbW9yeSA9IDEsIGl0IGNhbiBhbGxvYyBlbm91Z2ggbXVjaCBtZW1vcnksIEkKLSAgKiBjaG9vc2UgdGhlIHRocmVlIGNhc2VzOgotQEAgLTE2NCw5ICsxNjMsNyBAQCBzdGF0aWMgdm9pZCBvdmVyY29tbWl0X21lbW9yeV90ZXN0KHZvaWQpCi0gCi0gCXVwZGF0ZV9tZW0oKTsKLSAJYWxsb2NfYW5kX2NoZWNrKGZyZWVfdG90YWwgLyAyLCBFWFBFQ1RfUEFTUyk7Ci0tCXVwZGF0ZV9tZW0oKTsKLS0JYWxsb2NfYW5kX2NoZWNrKGZyZWVfdG90YWwgKiAyLCBFWFBFQ1RfRkFJTCk7Ci0tCWFsbG9jX2FuZF9jaGVjayhzdW1fdG90YWwsIEVYUEVDVF9GQUlMKTsKLSsJYWxsb2NfYW5kX2NoZWNrKHN1bV90b3RhbCAqIDIsIEVYUEVDVF9GQUlMKTsKLSAKLSAJLyogc3RhcnQgdG8gdGVzdCBvdmVyY29tbWl0X21lbW9yeT0xICovCi0gCXNldF9zeXNfdHVuZSgib3ZlcmNvbW1pdF9tZW1vcnkiLCAxLCAxKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbC1ydF9zaWd0aW1lZHdhaXQwMS1GaXgtd3Jvbmctc2lnc2V0LWxlbmd0aC1mby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1NmMwOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbC1ydF9zaWd0aW1lZHdhaXQwMS1GaXgtd3Jvbmctc2lnc2V0LWxlbmd0aC1mby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gYTUwNDY2MjVlYWVlZDJkM2ZiYTQ1NmMzYmE4NGM2YzE0MWMyYWQ3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI5IEF1ZyAyMDE5IDIxOjA5OjQ2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c2NhbGwvcnRfc2lndGltZWR3YWl0MDE6IEZpeCB3cm9uZyBzaWdzZXQgbGVuZ3RoIGZvciBNSVBTCi0KLXJ0X3NpZ3RpbWVkd2FpdDAxIGZhaWxzIGFzIGZvbGxvdyBvbiBNSVBTIGFyY2hlcwotcnRfc2lndGltZWR3YWl0MDEgICAgMSAgVEZBSUwgIDogIC4uLi9zaWd3YWl0aW5mbzAxLmM6NTg6IHRlc3RfZW1wdHlfc2V0Ci0oLi4uL3NpZ3dhaXRpbmZvMDEuYzogMTQ4KTogVW5leHBlY3RlZCBmYWlsdXJlOgotVEVTVF9FUlJOTz1FSU5WQUwoMjIpOiBJbnZhbGlkIGFyZ3VtZW50Ci0KLUFzIHRoaXMgY2FzZSBwdXJwb3NlbHkgYnlwYXNzZXMgZ2xpYmMsIGl0IHNob3VsZCBhbGlnbiB3aXRoIHRoZSBzaXplIG9mIGtlcm5lbAotZGVmaW5pdGlvbiBvZiBzaWdzZXRfdCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSBvdGhlciBhcmNoZXMuCi1odHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9hcmNoL21pcHMvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaCNuMTUKLQotVGhpcyBwYXRjaCB0dXJucyB0byB1c2UgX05TSUcgd2hpY2ggaXMgYWx3YXlzIHJpZ2h0IGZvciBhbGwgYXJjaGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFthNTA0NjYyNWVhZWVkMmQzZmJhNDU2YzNiYTg0YzZjMTQxYzJhZDdjXQotCi1TdWdnZXN0ZWQtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotQWNrZWQtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMgfCA1ICsrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMKLWluZGV4IDVhMzJjZTEuLjZhMzBjMjcgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMKLUBAIC0xMjgsOSArMTI4LDggQEAgc3RhdGljIGludCBteV9zaWd0aW1lZHdhaXQoY29uc3Qgc2lnc2V0X3QgKiBzZXQsIHNpZ2luZm9fdCAqIGluZm8sCi0gc3RhdGljIGludCBteV9ydF9zaWd0aW1lZHdhaXQoY29uc3Qgc2lnc2V0X3QgKiBzZXQsIHNpZ2luZm9fdCAqIGluZm8sCi0gCQkJICAgICAgc3RydWN0IHRpbWVzcGVjICp0aW1lb3V0KQotIHsKLS0KLS0JLyogVGhlIGxhc3QgYXJndW1lbnQgaXMgKG51bWJlcl9vZl9zaWduYWxzKS8oYml0c19wZXJfYnl0ZSksIHdoaWNoIGFyZSA2NCBhbmQgOCwgcmVzcC4gKi8KLS0JcmV0dXJuIGx0cF9zeXNjYWxsKF9fTlJfcnRfc2lndGltZWR3YWl0LCBzZXQsIGluZm8sIHRpbWVvdXQsIDgpOwotKwkvKiBfTlNJRyBpcyBhbHdheXMgdGhlIHJpZ2h0IG51bWJlciBvZiBiaXRzIG9mIHNpZ25hbCBtYXAgZm9yIGFsbCBhcmNoZXMgKi8KLSsJcmV0dXJuIGx0cF9zeXNjYWxsKF9fTlJfcnRfc2lndGltZWR3YWl0LCBzZXQsIGluZm8sIHRpbWVvdXQsIF9OU0lHLzgpOwotIH0KLSAjZW5kaWYKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGxzLUNoZWNrLWZvci10aW1lNjQtdW5zYWZlLXN5c2NhbGxzLWJlZm9yZS11c2kucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtQ2hlY2stZm9yLXRpbWU2NC11bnNhZmUtc3lzY2FsbHMtYmVmb3JlLXVzaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzhmMDhlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGxzLUNoZWNrLWZvci10aW1lNjQtdW5zYWZlLXN5c2NhbGxzLWJlZm9yZS11c2kucGF0Y2gKQEAgLTAsMCArMSwxMjIgQEAKK0Zyb20gODljNTg0MWJkMTQ4YTdhZTcwYzY1ZjRhMWNhNTk5NmI3ZjBjZGRmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE5IEZlYiAyMDIwIDIyOjUyOjA0IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2NhbGxzOiBDaGVjayBmb3IgdGltZTY0IHVuc2FmZSBzeXNjYWxscyBiZWZvcmUgdXNpbmcgdGhlbQorCittdXNsIGlzIHVzaW5nIDY0Yml0IHRpbWVfdCBub3cgb24gMzJiaXQgYXJjaGl0ZWN0dXJlcyBhbmQgdGhlc2Ugc3lzY2FsbHMKK25vIGxvbmdlciBleGlzdCwgdGhlcmVmb3JlIGl0cyBiZXR0ZXIgdG8gY2hlY2sgZm9yIHRoZW0gYmVpbmcgYXZhaWxhYmxlCitiZWZvcmUgdXNpbmcgdGhlbQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorUmV2aWV3ZWQtYnk6IFlhbmcgWHUgPHh1eWFuZzIwMTguanlAY24uZnVqaXRzdS5jb20+CitSZXZpZXdlZC1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1Vwc3RyZWFtLVN0YXR1czogYWNjZXB0ZWQgYXMgNWI1N2FlMjkxM2UyZDJkMTY3Y2JkMzgyMjc4NGI0YzRiYTMzNjgxMgorLS0tCisgbGliL3RzdF9jbG9ja3MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrLS0tLS0tLS0tLQorIC4uLi9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDEuYyAgICAgICB8ICA2ICsrLS0tLQorIC4uLi9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYyAgICAgICB8ICA4ICsrKy0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi90c3RfY2xvY2tzLmMgYi9saWIvdHN0X2Nsb2Nrcy5jCitpbmRleCA1MTk1ZGEzOGYuLmZhMmYxY2I4NCAxMDA2NDQKKy0tLSBhL2xpYi90c3RfY2xvY2tzLmMKKysrKyBiL2xpYi90c3RfY2xvY2tzLmMKK0BAIC0zLDI4ICszLDI0IEBACisgICogQ29weXJpZ2h0IChjKSAyMDE3IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgorICAqLworCistLyoKKy0gKiBjbG9ja19nZXR0aW1lKCkgYW5kIGNsb2NrX2dldHJlcygpIGZ1bmN0aW9ucworLSAqLworLQorLSNkZWZpbmUgX0dOVV9TT1VSQ0UKKy0jaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHRpbWUuaD4KKy0jaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKworKyNkZWZpbmUgVFNUX05PX0RFRkFVTFRfTUFJTgorKyNpbmNsdWRlICJ0c3RfdGVzdC5oIgorICNpbmNsdWRlICJ0c3RfY2xvY2tzLmgiCisrI2luY2x1ZGUgImxhcGkvc3lzY2FsbHMuaCIKKyAKKyBpbnQgdHN0X2Nsb2NrX2dldHJlcyhjbG9ja2lkX3QgY2xrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKnJlcykKKyB7CistCXJldHVybiBzeXNjYWxsKFNZU19jbG9ja19nZXRyZXMsIGNsa19pZCwgcmVzKTsKKysJcmV0dXJuIHRzdF9zeXNjYWxsKF9fTlJfY2xvY2tfZ2V0cmVzLCBjbGtfaWQsIHJlcyk7CisgfQorIAorIGludCB0c3RfY2xvY2tfZ2V0dGltZShjbG9ja2lkX3QgY2xrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKy0JcmV0dXJuIHN5c2NhbGwoU1lTX2Nsb2NrX2dldHRpbWUsIGNsa19pZCwgdHMpOworKwlyZXR1cm4gdHN0X3N5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBjbGtfaWQsIHRzKTsKKyB9CisgCisgaW50IHRzdF9jbG9ja19zZXR0aW1lKGNsb2NraWRfdCBjbGtfaWQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworLQlyZXR1cm4gc3lzY2FsbChTWVNfY2xvY2tfc2V0dGltZSwgY2xrX2lkLCB0cyk7CisrCXJldHVybiB0c3Rfc3lzY2FsbChfX05SX2Nsb2NrX3NldHRpbWUsIGNsa19pZCwgdHMpOworIH0KK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDEuYworaW5kZXggNTgzZDhmN2I5Li4wOGVhMTY3M2EgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jCitAQCAtMzgsMTAgKzM4LDggQEAKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSAidGVzdC5oIgorLSNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKy0KKy0jZGVmaW5lIGdldHRpbWVvZmRheShhLGIpICBzeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LGEsYikKKysjaW5jbHVkZSAibGFwaS9zeXNjYWxscy5oIgorIAorIGNoYXIgKlRDSUQgPSAiZ2V0dGltZW9mZGF5MDEiOworIGludCBUU1RfVE9UQUwgPSAxOworQEAgLTYzLDcgKzYxLDcgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCisgCWZvciAobGMgPSAwOyBURVNUX0xPT1BJTkcobGMpOyBsYysrKSB7CisgCQl0c3RfY291bnQgPSAwOworIAorLQkJVEVTVChnZXR0aW1lb2ZkYXkoKHZvaWQgKiktMSwgKHZvaWQgKiktMSkpOworKwkJVEVTVChsdHBfc3lzY2FsbChfX05SX2dldHRpbWVvZmRheSwgKHZvaWQgKiktMSwgKHZvaWQgKiktMSkpOworIAorIAkJLyogZ2V0dGltZW9mZGF5IHJldHVybnMgYW4gaW50LCBzbyB3ZSBuZWVkIHRvIHR1cm4gdGhlIGxvbmcKKyAJCSAqIFRFU1RfUkVUVVJOIGludG8gYW4gaW50IHRvIHRlc3Qgd2l0aCAqLworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAyLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMi5jCitpbmRleCAxZDYwZjQ0OGUuLjUxNzBhZDJmNyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAyLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAyLmMKK0BAIC0xNiwxNCArMTYsMTIgQEAKKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorIAorICNpbmNsdWRlICJ0c3RfdGVzdC5oIgorLQorLSNkZWZpbmUgZ2V0dGltZW9mZGF5KGEsYikgIHN5c2NhbGwoX19OUl9nZXR0aW1lb2ZkYXksYSxiKQorKyNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCisgCisgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBkb25lOworIHN0YXRpYyBjaGFyICpzdHJfcnRpbWU7CitAQCAtNDgsMTMgKzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9nZXR0aW1lb2ZkYXkodm9pZCkKKyAKKyAJYWxhcm0ocnRpbWUpOworIAorLQlpZiAoZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpKSB7CisrCWlmICh0c3Rfc3lzY2FsbChfX05SX2dldHRpbWVvZmRheSwgJnR2MSwgTlVMTCkpIHsKKyAJCXRzdF9yZXMoVEJST0sgfCBURVJSTk8sICJnZXR0aW1lb2ZkYXkoKSBmYWlsZWQiKTsKKyAJCXJldHVybjsKKyAJfQorIAorIAl3aGlsZSAoIWRvbmUpIHsKKy0JCWlmIChnZXR0aW1lb2ZkYXkoJnR2MiwgTlVMTCkpIHsKKysJCWlmICh0c3Rfc3lzY2FsbChfX05SX2dldHRpbWVvZmRheSwgJnR2MiwgTlVMTCkpIHsKKyAJCQl0c3RfcmVzKFRCUk9LIHwgVEVSUk5PLCAiZ2V0dGltZW9mZGF5KCkgZmFpbGVkIik7CisgCQkJcmV0dXJuOworIAkJfQorLS0KKzIuMjUuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGxzLXRna2lsbDAzLXdhaXQtZm9yLWRlZnVuY3QtdGlkLXRvLWdldC1kZXRhY2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVhMjYxNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gZTc0N2QwNDU2YWRjMDgwYTFkMzFmYjY1M2JkYTlkYzQ5MTc5NWM4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotRGF0ZTogU3VuLCAxNiBKdW4gMjAxOSAxMToxNDoxNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBzeXNjYWxscy90Z2tpbGwwMzogd2FpdCBmb3IgZGVmdW5jdCB0aWQgdG8gZ2V0IGRldGFjaGVkCi0KLUNhc2Ugd2hlcmUgZGVmdW5jdCB0aWQgaXMgdXNlZCBoYXMgYmVlbiBvYnNlcnZlZCB0byBzcG9yYWRpY2FsbHkgZmFpbDoKLSAgdGdraWxsMDMuYzo5NjogRkFJTDogRGVmdW5jdCB0aWQgc2hvdWxkIGhhdmUgZmFpbGVkIHdpdGggRVNSQ0g6IFNVQ0NFU1MKLQotZ2xpYmMgX19wdGhyZWFkX3RpbWVkam9pbl9leCgpIHdhaXRzIGZvciBDTE9ORV9DSElMRF9DTEVBUlRJRCB0byBjbGVhciB0aWQsCi1hbmQgdGhlbiByZXN1bWVzLiBLZXJuZWwgY2xlYXJzIGl0IChnbGliYyBwZC0+dGlkKSBhdDoKLSAgZG9fZXhpdAotICAgIGV4aXRfbW0KLSAgICAgIG1tX3JlbGVhc2UKLSAgICAgICAgcHV0X3VzZXIoMCwgdHNrLT5jbGVhcl9jaGlsZF90aWQpOwotCi1idXQga2VybmVsIHRpZCBpcyBzdGlsbCB2YWxpZCwgcHJlc3VtYWJseSB1bnRpbDoKLSAgcmVsZWFzZV90YXNrCi0gICAgX19leGl0X3NpZ25hbAotICAgICAgX191bmhhc2hfcHJvY2VzcwotICAgICAgICBkZXRhY2hfcGlkCi0KLVRvIGF2b2lkIHJhY2Ugd2FpdCB1bnRpbCAvcHJvYy88cGlkPi90YXNrLzx0aWQ+IGRpc2FwcGVhcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotUmV2aWV3ZWQtYnk6IExpIFdhbmcgPGxpd2FuZ0ByZWRoYXQuY29tPgotQWNrZWQtYnk6IFN1bWl0IEdhcmcgPHN1bWl0LmdhcmdAbGluYXJvLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC9lNzQ3ZDA0NTZhZGMwODBhMWQzMWZiNjUzYmRhOWRjNDkxNzk1YzgwXQotCi1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90Z2tpbGwvdGdraWxsMDMuYyB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90Z2tpbGwvdGdraWxsMDMuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGdraWxsL3Rna2lsbDAzLmMKLWluZGV4IGY1YmJkYzUuLjU5M2EyMTcgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jCi1AQCAtNyw2ICs3LDcgQEAKLSAKLSAjaW5jbHVkZSA8cHRocmVhZC5oPgotICNpbmNsdWRlIDxwd2QuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2luY2x1ZGUgInRzdF9zYWZlX3B0aHJlYWQuaCIKLUBAIC00Miw2ICs0Myw3IEBAIHN0YXRpYyB2b2lkIHNldHVwKHZvaWQpCi0gewotIAlzaWdzZXRfdCBzaWd1c3IxOwotIAlwdGhyZWFkX3QgZGVmdW5jdF90aHJlYWQ7Ci0rCWNoYXIgZGVmdW5jdF90aWRfcGF0aFtQQVRIX01BWF07Ci0gCi0gCXNpZ2VtcHR5c2V0KCZzaWd1c3IxKTsKLSAJc2lnYWRkc2V0KCZzaWd1c3IxLCBTSUdVU1IxKTsKLUBAIC01NSw4ICs1Nyw5IEBAIHN0YXRpYyB2b2lkIHNldHVwKHZvaWQpCi0gCVRTVF9DSEVDS1BPSU5UX1dBSVQoMCk7Ci0gCi0gCVNBRkVfUFRIUkVBRF9DUkVBVEUoJmRlZnVuY3RfdGhyZWFkLCBOVUxMLCBkZWZ1bmN0X3RocmVhZF9mdW5jLCBOVUxMKTsKLS0KLSAJU0FGRV9QVEhSRUFEX0pPSU4oZGVmdW5jdF90aHJlYWQsIE5VTEwpOwotKwlzcHJpbnRmKGRlZnVuY3RfdGlkX3BhdGgsICIvcHJvYy8lZC90YXNrLyVkIiwgZ2V0cGlkKCksIGRlZnVuY3RfdGlkKTsKLSsJVFNUX1JFVFJZX0ZOX0VYUF9CQUNLT0ZGKGFjY2VzcyhkZWZ1bmN0X3RpZF9wYXRoLCBSX09LKSwgLTEsIDE1KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgY2xlYW51cCh2b2lkKQotQEAgLTEwOCw0ICsxMTEsNSBAQCBzdGF0aWMgc3RydWN0IHRzdF90ZXN0IHRlc3QgPSB7Ci0gCS5zZXR1cCA9IHNldHVwLAotIAkuY2xlYW51cCA9IGNsZWFudXAsCi0gCS50ZXN0ID0gcnVuLAotKwkudGltZW91dCA9IDIwLAotIH07Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS10ZXN0Y2FzZXMtdXNlLXB5dGhvbjMtZXZlcnl3aGVyZS10by1ydW4tcHl0aG9uLXNjcmlwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0Zjg3ZjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjEgKzAsMCBAQAotRnJvbSAwNDYzZDc5MzU2Njc3MmE2MDYyNTU5NTc5MTVmOTlkMTY2ZDU3NDBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI4IEF1ZyAyMDE5IDE4OjMwOjIzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RjYXNlczogdXNlIHB5dGhvbjMgZXZlcnl3aGVyZSB0byBydW4gcHl0aG9uIHNjcmlwdHMKLQotVGhlIHNjcmlwdHMgdGhlbXNlbHZlcyBoYXZlICMhL3Vzci9iaW4vcHl0aG9uMyBpbiB0aGVtLAotc28gSSB0cnVzdCB0aGV5IGFyZSBhbHJlYWR5IHB5My1jb21wYXRpYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaCAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2ggICAgIHwgIDIgKy0KLSAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoICAgICB8ICAyICstCi0gLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaCAgICAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2ggICAgIHwgIDIgKy0KLSAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoICAgICB8ICAyICstCi0gdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QgICAgICAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQotIHRlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoICAgICAgIHwgIDYgKysrLS0tCi0gOCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoCi1pbmRleCA4YTdkMGY2ZTAuLjQzZTIzNGQwMSAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2gKLUBAIC0zNSw3ICszNSw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGlmICEgZ3JlcCBzY2hlZF9kZWJ1ZyAtcXcgL3Byb2MvY21kbGluZSA7IHRoZW4KLSAJdHN0X2Jya20gVENPTkYgIktlcm5lbCBjbWRsaW5lIHBhcmFtZXRlciAnc2NoZWRfZGVidWcnIG5lZWRlZCwiIFwKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoCi1pbmRleCBlYzc4MzE5ZTIuLjlmZWZjYmY2ZSAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaAotQEAgLTM1LDcgKzM1LDcgQEAgZWxzZQotIAltYXhfc2NoZWRfc210PTEKLSBmaQotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKLSBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaAotaW5kZXggZTEwN2ZjZTM1Li4yY2QwZWNiMDUgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2gKLUBAIC0zMyw3ICszMyw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2gKLWluZGV4IDQ5MDM0NGJiMy4uYWIzYTVkMTFkIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoCi1AQCAtMzUsNyArMzUsNyBAQCBlbHNlCi0gCW1heF9zY2hlZF9zbXQ9MQotIGZpCi0gCi0tdHN0X3Rlc3RfY21kcyBweXRob24KLSt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKLSAKLSBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQotIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoCi1pbmRleCA5NzhjYTAyYWUuLjQzOGVmNjAzZiAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaAotQEAgLTI3LDcgKzI3LDcgQEAgZXhwb3J0IFRTVF9UT1RBTD0yCi0gIyBDaGVja2luZyB0ZXN0IGVudmlyb25tZW50Ci0gY2hlY2tfa2VydmVsX2FyY2gKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2gKLWluZGV4IGEwZGFkNTgzNC4uM2E5YWZkYmYyIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoCi1AQCAtMzUsNyArMzUsNyBAQCBlbHNlCi0gCW1heF9zY2hlZF9zbXQ9MQotIGZpCi0gCi0tdHN0X3Rlc3RfY21kcyBweXRob24KLSt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKLSAKLSBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQotIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdCBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0Ci1pbmRleCBkMmUxYjRjNDkuLmE4NTllODViYyAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0Ci0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdAotQEAgLTIyLDcgKzIyLDcgQEAgZG8KLSBkb25lCi0gCi0gIyAgY3JlYXRpb24gb2YgdXNlcnMgb24gdGhlIHJlbW90ZSBtYWNoaW5lIChyZW1vdmVkIG9ubHkgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdHMpCi0tcnNoIC1uICRSRU1PVEVIT1NUIHB5dGhvbiAkUFdEL2NyZWF0ZV91c2Vycy5weSAtdSA1MCAtZyA1MAotK3JzaCAtbiAkUkVNT1RFSE9TVCBweXRob24zICRQV0QvY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0gCi0gZWNobyAiU3RhcnRpbmcgQUNMIHRlc3RpbmciCi0gCi1AQCAtNTEsMTkgKzUxLDE5IEBAIGVjaG8gIkJhc2ljIHRlc3RzIGZpbmlzaGVkIgotIAotIGVjaG8gIkxPTkcgQUNMIFRFU1QiCi0gZWNobyAiY3JlYXRpbmcgbmVjZXNzYXJ5IHVzZXJzIGFuZCBncm91cHMiCi0tcHl0aG9uIGNyZWF0ZV91c2Vycy5weSAtdSA1MCAtZyA1MAotK3B5dGhvbjMgY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0gZWNobyAiY3JlYXRpbmcgbmVjZXNzYXJ5IHVzZXJzIGFuZCBncm91cHMgb24gdGhlIHJlbW90ZSBob3N0IgotIG1rZGlyICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCi0tcHl0aG9uIHRlc3RfbG9uZ19hY2wucHkgLWwgJE1BWExFTkdUSCAtcCAkTkZTTU5URElSL2xhY2wtdGVzdGRpcgotK3B5dGhvbjMgdGVzdF9sb25nX2FjbC5weSAtbCAkTUFYTEVOR1RIIC1wICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCi0gcm0gLXJmICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCi0gZWNobyAiTG9uZyBBQ0wgdGVzdCBPSyB3aXRoICRNQVhMRU5HVEggZW50cmllcyIKLSBlY2hvICJBQ0wgU1RSRVNTSU5HIFRFU1QiCi0tcHl0aG9uIHNldGFjbF9zdHJlc3MucHkgLW4gMTAwIC11ICRVU0VSX05CIC1nICRHUlBfTkIgLWYgJEZJTEVfTkIgLXAgJE5GU01OVERJUgotK3B5dGhvbjMgc2V0YWNsX3N0cmVzcy5weSAtbiAxMDAgLXUgJFVTRVJfTkIgLWcgJEdSUF9OQiAtZiAkRklMRV9OQiAtcCAkTkZTTU5URElSCi0gCi0gIyByZW1vdmUgbG9jYWwgYW4gcmVtb3RlIHVzZXJzCi0tcHl0aG9uIGNsZWFudXNlcnMucHkKLS1weXRob24gY2xlYW5ncm91cHMucHkKLS1yc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uICRQV0QvY2xlYW51c2Vycy5weQotK3B5dGhvbjMgY2xlYW51c2Vycy5weQotK3B5dGhvbjMgY2xlYW5ncm91cHMucHkKLStyc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uMyAkUFdEL2NsZWFudXNlcnMucHkKLSAKLSBlY2hvICJUZXN0IE9LIgotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoIGIvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2gKLWluZGV4IGQxMzAyNjA0OS4uMjc3OTg4NTY4IDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2gKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoCi1AQCAtMTUsMTUgKzE1LDE1IEBAICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktMAotIAotIGV4cG9ydCBMT0dfRklMRT0iJExPR19ESVIvJExPR19GT1JNQVQtdGVzdHBpLTEubG9nIgotICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktMQotLVBZVEhPTlBBVEg9Li4vLi4vICBweXRob24gcGFyc2UtdGVzdHBpMS5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKLStQWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uMyBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotIAotIGV4cG9ydCBMT0dfRklMRT0iJExPR19ESVIvJExPR19GT1JNQVQtdGVzdHBpLTIubG9nIgotICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktMgotLVBZVEhPTlBBVEg9Li4vLi4vICBweXRob24gcGFyc2UtdGVzdHBpMi5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKLStQWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uMyBwYXJzZS10ZXN0cGkyLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotIAotIGV4cG9ydCBMT0dfRklMRT0iJExPR19ESVIvJExPR19GT1JNQVQtdGVzdHBpLTQubG9nIgotICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktNAotLVBZVEhPTlBBVEg9Li4vLi4vICBweXRob24gcGFyc2UtdGVzdHBpMS5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKLStQWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uMyBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotIAotIAotIGV4cG9ydCBMT0dfRklMRT0iIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXVzdGF0MDItRml4LUVGQVVMVC1pbi0zMmJpdC1jb21wYXRpYmlsaXR5LW1vZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdXN0YXQwMi1GaXgtRUZBVUxULWluLTMyYml0LWNvbXBhdGliaWxpdHktbW9kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkzNmI3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdXN0YXQwMi1GaXgtRUZBVUxULWluLTMyYml0LWNvbXBhdGliaWxpdHktbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gMTU2Nzc2YTNlMjk0OTFiMzYzZmRjOTgxMTkxMmUxMjk4NjU1ZDA2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZXZlbiBQcmljZSA8c3RldmVuLnByaWNlQGFybS5jb20+Ci1EYXRlOiBGcmksIDE5IEp1bCAyMDE5IDEzOjQ4OjE3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzdGF0MDI6IEZpeCBFRkFVTFQgaW4gMzJiaXQgY29tcGF0aWJpbGl0eSBtb2RlCi0KLVRoZSBzaXplIG9mIGRldl90IGlzIGxhcmdlciB0aGFuIDMyIGJpdHMgd2hpY2ggY2F1c2VzIHRoZSBkZXYgYXJndW1lbnQKLXRvIGJlIHBhc3NlZCBpbmNvcnJlY3RseS4gT24gQXJtIHRoaXMgbWVhbnMgdGhhdCB0aGUgRUZBVUxUIHRlc3QgY2FzZQotYWN0dWFsbHkgcmV0dXJucyBFSU5WQUwgYmVjYXVzZSB0aGUgZGV2aWNlIG51bWJlciBpc24ndCByZWNvZ25pc2VkLgotCi1TaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gUHJpY2UgPHN0ZXZlbi5wcmljZUBhcm0uY29tPgotQWNrZWQtYnk6IExpIFdhbmcgPGxpd2FuZ0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0LzE1Njc3NmEzZTI5NDkxYjM2M2ZkYzk4MTE5MTJlMTI5ODY1NWQwNjBdCi0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdXN0YXQvdXN0YXQwMi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy91c3RhdC91c3RhdDAyLmMKLWluZGV4IDliYmU0ZjMuLjFhMGU5ZTAgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy91c3RhdC91c3RhdDAyLmMKLUBAIC0zNiw3ICszNiw3IEBAIGludCBUU1RfVE9UQUwgPSBBUlJBWV9TSVpFKHRjKTsKLSAKLSB2b2lkIHJ1bih1bnNpZ25lZCBpbnQgdGVzdCkKLSB7Ci0tCVRFU1QodHN0X3N5c2NhbGwoX19OUl91c3RhdCwgKnRjW3Rlc3RdLmRldiwgdGNbdGVzdF0uYnVmKSk7Ci0rCVRFU1QodHN0X3N5c2NhbGwoX19OUl91c3RhdCwgKHVuc2lnbmVkIGludCkqdGNbdGVzdF0uZGV2LCB0Y1t0ZXN0XS5idWYpKTsKLSAKLSAJaWYgKChUU1RfUkVUID09IC0xKSAmJiAoVFNUX0VSUiA9PSB0Y1t0ZXN0XS5leHBfZXJybm8pKQotIAkJdHN0X3JlcyhUUEFTUyB8IFRURVJSTk8sICJ1c3RhdCgyKSBleHBlY3RlZCBmYWlsdXJlIik7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1jaGVjay1mb3ItUkVTX1VTRV9JTkVUNi1kdXJpbmctY29uZmlndXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLWNoZWNrLWZvci1SRVNfVVNFX0lORVQ2LWR1cmluZy1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZTQ3ZWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLWNoZWNrLWZvci1SRVNfVVNFX0lORVQ2LWR1cmluZy1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIDdiYzEzNDU0NWI3YmViMDk3MTdhNjA1NDE1MzBjMjBhMWE1NzQwZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyNiBKdWwgMjAxOSAxMDo1NToyOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gY2hlY2sgZm9yIFJFU19VU0VfSU5FVDYgZHVyaW5nIGNvbmZpZ3VyZQotCi1nbGliYyAyLjMwIGhhcyByZW1vdmUgUkVTX1VTRV9JTkVUNiBkZWZpbmUgd2hpY2ggaGFzIGJlZW4gb24gaXRzIHdheSBvdXQKLXNpbmNlIDIuMjYgcmVsZWFzZSwgdGhpcyBjaGVjayBlbnN1cmVzIHRoYXQgd2UgZGV0ZWN0IGl0IGJlZm9yZSB1c2luZyBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLmxpbnV4Lml0L3BpcGVybWFpbC9sdHAvMjAxOS1KdWx5LzAxMjk1NS5odG1sXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKysrKysKLSB0ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMgfCAgNiArKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMjI1NWI1YzE4MS4uZWQ3YWNjY2IwMSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTEsNiArOTEsMTkgQEAgQUNfQ0hFQ0tfRlVOQ1MoWyBcCi0gICAgIHZtc3BsaWNlIFwKLSBdKQotIAotKyNjaGVjayBkZWZpbmVzCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgUkVTX1VTRV9JTkVUNl0pCi0rQUNfQ09NUElMRV9JRkVMU0UoIFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8cmVzb2x2Lmg+XV0sCi0rICBbW2NoYXIgZHVtbXlbUkVTX1VTRV9JTkVUNl07XV0pXSwKLSsgIFsKLSsgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKFtIQVZFX1JFU19VU0VfSU5FVDZdLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIFJFU19VU0VfSU5FVDYgbWFjcm8uXSkKLSsgIF0sCi0rICBbCi0rICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKFtIQVZFX1JFU19VU0VfSU5FVDZdLCAwLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIFJFU19VU0VfSU5FVDYgbWFjcm8uXSkKLSsgIF0KLSspCi0gIyBUb29scyBrbm9icwotIAotICMgRXhwZWN0Ci1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jIGIvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi1pbmRleCA5Y2MxNWQwODZiLi5kMWNhZTU0NDFhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLUBAIC0xNyw2ICsxNyw4IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rCi0gI2lmbmRlZiBMT0dfUEVSUk9SCi0gI2RlZmluZSBMT0dfUEVSUk9SIDAKLSAjZW5kaWYKLUBAIC01MCw4ICs1MiwxMiBAQCB1c2FnZToKLSAJCWFyZ3YrKywgYXJnYy0tOwotIAl9Ci0gCWlmIChhcmdjID49IDEgJiYgIXN0cmNtcCgqYXJndiwgIi02IikpIHsKLSsjaWYgSEFWRV9SRVNfVVNFX0lORVQ2Ci0gCQlhZiA9IEFGX0lORVQ2LCBzaXplID0gSU42QUREUlNaOwotIAkJX3Jlcy5vcHRpb25zIHw9IFJFU19VU0VfSU5FVDY7Ci0rI2Vsc2UKLSsJCWFmID0gQUZfSU5FVCwgc2l6ZSA9IElOQUREUlNaOwotKyNlbmRpZgotIAkJYXJndisrLCBhcmdjLS07Ci0gCX0KLSAJaWYgKGFyZ2MgPj0gMSAmJiAhc3RyY21wKCphcmd2LCAiLWYiKSkgewotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZmOWVkMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gODFlNWJkNTQ0MjMzN2E0YTY0OGEwZGJiZmY0N2VhYWMwZDM1MTI4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDcgSmFuIDIwMTYgMTg6MjI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0ga2VybmVsL2NvbnRyb2xsZXJzOiBMaW5rIHdpdGggbGliZnRzIGV4cGxpY2l0bHkgb24gbXVzbAotCi1tdXNsIGRvZXMgbm90IGltcGxlbWVudCBmdHMgbGlrZSBnbGliYyBhbmQgdGhlcmVmb3JlIGl0IGRlcGVuZHMgb24KLWV4dGVybmFsIGltcGxlbWVudGF0aW9uIGZvciBhbGwgZnRzIEFQSXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYyAgICAgICAgfCAzICsrKwotIHRlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYyB8IDMgKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9NYWtlZmlsZS5pbmMKLWluZGV4IDRjYTBiNWEuLjFkODVlNGQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9NYWtlZmlsZS5pbmMKLUBAIC0zNiw2ICszNiw5IEBAIE1BS0VfREVQUwkJOj0gJChMSUIpCi0gQ1BQRkxBR1MJCSs9IC1JJChhYnNfc3JjZGlyKS8uLi8kKExJQkRJUikKLSAKLSBMREZMQUdTCQkJKz0gLUwkKGFic19idWlsZGRpcikvLi4vJChMSUJESVIpCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0xETElCUwkJCSs9IC1sZnRzCi0rZW5kaWYKLSAKLSBJTlNUQUxMX1RBUkdFVFMJCT89ICouc2gKLSAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2NwdXNldC9NYWtlZmlsZS5pbmMgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2NwdXNldC9NYWtlZmlsZS5pbmMKLWluZGV4IGRiNmE4NDMuLjg2ZGQyYTggMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2NwdXNldC9NYWtlZmlsZS5pbmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYwotQEAgLTQyLDYgKzQyLDkgQEAgTUFLRV9ERVBTCQk6PSAkKExJQkNPTlRST0xMRVJTKSAkKExJQkNQVVNFVCkKLSBMREZMQUdTCQkJKz0gLUwkKGFic19idWlsZGRpcikvJChMSUJDUFVTRVRfRElSKSAtTCQoYWJzX2J1aWxkZGlyKS8kKExJQkNPTlRST0xMRVJTX0RJUikKLSAKLSBMRExJQlMJCQkrPSAtbGNwdV9zZXQgLWxjb250cm9sbGVycyAtbGx0cAotK2lmZXEgKCQoTElCQyksbXVzbCkKLStMRExJQlMJCQkrPSAtbGZ0cwotK2VuZGlmCi0gCi0gSU5TVEFMTF9UQVJHRVRTCQk/PSAqLnNoCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAppbmRleCBjMGY2OWVjLi5kZjNlODgzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyOWNlOWZkYWIzYmQzNGU2OWQ3M2I1Yjg5MDc5NTU1OWMwNjU1M2Y3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxY2U0N2E2ZWQ4MTFmZDc4ZWQwNGVhMmY4MmU2MzIxYzZiY2E1N2I2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgNyBKYW4gMjAxNiAxOTo0MDowOCArMDAwMAogU3ViamVjdDogW1BBVENIXSBDaGVjayBpZiBfX0dMSUJDX1BSRVJFUSBpcyBkZWZpbmVkIGJlZm9yZSB1c2luZyBpdApAQCAtMTAsMTYgKzEwLDE3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMgfCA3ICsrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L2FjY2VwdDRfMDEuYwotaW5kZXggZGQyODljZi4uNzZhYTk2OSAxMDA2NDQKK2luZGV4IDI5ZTE4ZjI3ZC4uMDc0NDRhNDZmIDEwMDY0NAogLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L2FjY2VwdDRfMDEuYwogKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L2FjY2VwdDRfMDEuYwogQEAgLTM4LDYgKzM4LDcgQEAKLSBzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIGNvbm5fYWRkcjsKKyBzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luICpjb25uX2FkZHIsICphY2NlcHRfYWRkcjsKICBzdGF0aWMgaW50IGxpc3RlbmluZ19mZDsKICAKICsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCkBAIC0zNCwyNSArMzUsMjEgQEAKICAKICBzdGF0aWMgaW50IGNyZWF0ZV9saXN0ZW5pbmdfc29ja2V0KHZvaWQpCiAgewotQEAgLTExNSw2ICsxMTcsNyBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfYWNjZXB0NCh1bnNpZ25lZCBpbnQgbnIpCi0gCVNBRkVfQ09OTkVDVChjb25uZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY29ubl9hZGRyLCBzaXplb2YoY29ubl9hZGRyKSk7Ci0gCWFkZHJsZW4gPSBzaXplb2YoY2xhZGRyKTsKK0BAIC0xMTQsMTIgKzExNiwxNyBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfYWNjZXB0NCh1bnNpZ25lZCBpbnQgbnIpCisgCVNBRkVfQ09OTkVDVChjb25uZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKiljb25uX2FkZHIsIHNpemVvZigqY29ubl9hZGRyKSk7CisgCWFkZHJsZW4gPSBzaXplb2YoKmFjY2VwdF9hZGRyKTsKICAKICsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCiAgI2lmICEoX19HTElCQ19QUkVSRVEoMiwgMTApKQotIAlURVNUKGFjY2VwdDRfMDEobGlzdGVuaW5nX2ZkLCAoc3RydWN0IHNvY2thZGRyICopJmNsYWRkciwgJmFkZHJsZW4sCisgCVRFU1QoYWNjZXB0NF8wMShsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKilhY2NlcHRfYWRkciwgJmFkZHJsZW4sCiAgCQkJCXRjYXNlLT5jbG9leGVjIHwgdGNhc2UtPm5vbmJsb2NrKSk7Ci1AQCAtMTIyLDYgKzEyNSwxMCBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfYWNjZXB0NCh1bnNpZ25lZCBpbnQgbnIpCi0gCVRFU1QoYWNjZXB0NChsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xhZGRyLCAmYWRkcmxlbiwKKyAjZWxzZQorIAlURVNUKGFjY2VwdDQobGlzdGVuaW5nX2ZkLCAoc3RydWN0IHNvY2thZGRyICopYWNjZXB0X2FkZHIsICZhZGRybGVuLAogIAkJCQl0Y2FzZS0+Y2xvZXhlYyB8IHRjYXNlLT5ub25ibG9jaykpOwotICNlbmRpZgorKyNlbmRpZgogKyNlbHNlCiArCVRFU1QoYWNjZXB0NChsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xhZGRyLCAmYWRkcmxlbiwKICsJCQkJdGNhc2UtPmNsb2V4ZWMgfCB0Y2FzZS0+bm9uYmxvY2spKTsKLSsjZW5kaWYKKyAjZW5kaWYKICAJaWYgKFRTVF9SRVQgPT0gLTEpIHsKICAJCWlmIChUU1RfRVJSID09IEVOT1NZUykKLSAJCQl0c3RfYnJrKFRDT05GLCAic3lzY2FsbCBfX05SX2FjY2VwdDQgbm90IHN1cHBvcnRlZCIpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNGVkZmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA2LXJ0X3Rnc2lncXVldWVpbmZvLWRpc2FibGUtdGVzdC1vbi1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA2MDA1NDY4NmUyYzFhNGJlZGYxZDUwN2FmOTdlYmJiN2ZmNDkxZTc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOCBKdWwgMjAxOSAxNToyMzoxNSArMDgwMAotU3ViamVjdDogW1BBVENIXSBydF90Z3NpZ3F1ZXVlaW5mbzogZGlzYWJsZSB0ZXN0IG9uIG11c2wKLQotRml4IGJ1aWxkIGVycm9yIHdpdGggbXVzbDoKLXJ0X3Rnc2lncXVldWVpbmZvMDEuYzogSW4gZnVuY3Rpb24gJ3NpZ3VzcjFfaGFuZGxlcic6Ci1ydF90Z3NpZ3F1ZXVlaW5mbzAxLmM6NDI6MjI6IGVycm9yOiAnc2lnaW5mb190JyB7YWthICdzdHJ1Y3QgPGFub255bW91cz4nfSBoYXMgbm8gbWVtYmVyIG5hbWVkICdfc2lmaWVsZHMnOyBkaWQgeW91IG1lYW4gJ19fc2lfZmllbGRzJz8KLSAgIDQyIHwgIHNpZ3ZhbF9yY3YgPSB1aW5mby0+X3NpZmllbGRzLl9ydC5TSV9TSUdWQUwuc2l2YWxfcHRyOwotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KLSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgX19zaV9maWVsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotaW5kZXggZDFiZWNkMC4uMWYzZmYzNCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKLUBAIC0zMSw3ICszMSw3IEBAIGVuZGlmCi0gaWZlcSAoJChMSUJDKSxtdXNsKQotIEZJTFRFUl9PVVRfRElSUwkrPSBjb25mc3RyIGZtdG1zZyBnZXRjb250ZXh0IGlvY3RsIG1hbGxvcHQgcHJvZmlsIFwKLSAJCSAgIHJ0X3NpZ3N1c3BlbmQgc2V0ZG9tYWlubmFtZSBzZXRob3N0bmFtZSBzaWdzdXNwZW5kIFwKLS0JCSAgIHVzdGF0Ci0rCQkgICB1c3RhdCBydF90Z3NpZ3F1ZXVlaW5mbwotIGVuZGlmCi0gCi0gaWZlcSAoJChVQ0xJQkMpLDEpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2gKaW5kZXggYjQ2MzI1ZS4uMzUwMDkxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2gKQEAgLTEsMzMgKzEsMzQgQEAKLUZyb20gYWE3YTkxODVhMDM3YWQ1OTAxMmJkNDY3MTNhYzM0MDQ1OGU5NTIwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGI3ZGIwOTRkNmZjNTY1OTAwMWFlOGRjMTcwNzhiYjY1ZDQ2YjljOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIERhdGU6IEZyaSwgMTMgTWF5IDIwMTYgMTE6MTE6MjggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYzogU2VjdXJpdHkgZml4IG9uCi0gc3RyaW5nIHByaW50ZgorU3ViamVjdDogW1BBVENIXSBhY2w6IFNlY3VyaXR5IGZpeCBvbiBzdHJpbmcgcHJpbnRmCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CiAKLUZpeGVzOgorRml4ZXMgYnVpbGQgZXJyb3Igd2hlbiBjb21waWxlZCB3aXRoIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5OgogCi1hY2wxLmM6IEluIGZ1bmN0aW9uICd0ZXN0X2FjbF9kZWZhdWx0JzoKLWFjbDEuYzozMTc6MjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cwotWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICBwcmludGYoY21kKTsKK2FjbDEuYzogSW4gZnVuY3Rpb24g4oCYdGVzdF9hY2xfZGVmYXVsdOKAmToKK2FjbDEuYzozMDU6MjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCisgIDMwNSB8ICBwcmludGYoY21kKTsKKworUGF0Y2ggdGFrZW4gZnJvbSBvcGVuZW1iZWRkZWQtY29yZSwKK29yaWdpbmFsIGJ1ZyByZXBvcnQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy85NTQ4CiAKIFtZT0NUTyAjOTU0OF0KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KIFNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CitVcHN0cmVhbS1TdGF0dXM6IGFjY2VwdGVkIGluIDRiN2RiMDk0ZDZmYzU2NTkwMDFhZThkYzE3MDc4YmI2NWQ0NmI5YzkKIC0tLQogIHRlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9hY2wxLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYwotaW5kZXggYmRmMDE4MC4uODk4YjdjYSAxMDA2NDQKK2luZGV4IGFhZTk0ODRlNS4uYWQ3NzhjZDMzIDEwMDY0NAogLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYwogKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYwotQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIHRlc3RfYWNsX2RlZmF1bHQoY2hhciAqZGlyLCBhY2xfdCBhY2wpCitAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgdGVzdF9hY2xfZGVmYXVsdChjaGFyICpkaXIsIGFjbF90IGFjbCkKICAJY2hhciAqY21kID0gbWFsbG9jKDI1Nik7CiAgCiAgCXN0cmNweShjbWQsICJjaG1vZCA3Nzc3ICIpOwpAQCAtMzcsNSArMzgsNSBAQAogIAlzeXN0ZW0oY21kKTsKICAJYWNsMiA9IGFjbF9nZXRfZmlsZShwYXRoLCBBQ0xfVFlQRV9BQ0NFU1MpOwogLS0gCi0yLjcuNAorMi4yNS4xCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDktb3Blbl9wb3NpeF90ZXN0c3VpdGUtbW1hcDI0LTItUmVsYXgtY29uZGl0aW9uLWEtYml0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzJhYzFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGE4NzE1YTE0NDYzMDVmZmQ3NjQwNmY2M2M3ZjE2MGMxM2E1YjJlNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSG9uZ3poaS5Tb25nIiA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDIyOjA3OjA1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9wZW5fcG9zaXhfdGVzdHN1aXRlL21tYXAyNC0yOiBSZWxheCBjb25kaXRpb24gYSBiaXQKLQotTWlwcyB3aWxsIHJldHVybiBFSU5WQUwgaW5zdGVhZCBvZiBFTk9NRU0gYXMgZXhwZWN0ZWQKLWlmIHRoZSByYW5nZSBbYWRkciArIGxlbikgZXhjZWVkcyBUQVNLX1NJWkUuCi0KLUxpbnV4IGtlcm5lbCBjb2RlOiBhcmNoL21pcHMvbW0vbW1hcC5jCi1pZiAoZmxhZ3MgJiBNQVBfRklYRUQpIHsKLSAgICAvKiBFdmVuIE1BUF9GSVhFRCBtYXBwaW5ncyBtdXN0IHJlc2lkZSB3aXRoaW4gVEFTS19TSVpFICovCi0gICAgaWYgKFRBU0tfU0laRSAtIGxlbiA8IGFkZHIpCi0gICAgICAgIHJldHVybiAtRUlOVkFMOwotCi1SZWxheCB0aGUgY29uZGl0aW9uIGFuZCBhY2NlcHQgYm90aCBFTk9NRU0gYW5kIEVJTlZBTAotYXMgZXhwZWN0ZWQgb3V0Y29tZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE4LU9jdG9iZXIvMDA5NjI0Lmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSAuLi4vb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYyAgICB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMgYi90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYwotaW5kZXggOWNmODNkOS4uNTUwOTBhNiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCi0rKysgYi90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYwotQEAgLTcsNyArNyw3IEBACi0gICogc291cmNlIHRyZWUuCi0gICoKLSAgKiBUaGUgbW1hcCgpIGZ1bmN0aW9uIHNoYWxsIGZhaWwgaWY6Ci0tICogW0VOT01FTV0gTUFQX0ZJWEVEIHdhcyBzcGVjaWZpZWQsCi0rICogW0VOT01FTSBvciBFSU5WQUxdIE1BUF9GSVhFRCB3YXMgc3BlY2lmaWVkLAotICAqIGFuZCB0aGUgcmFuZ2UgW2FkZHIsYWRkcitsZW4pIGV4Y2VlZHMgdGhhdCBhbGxvd2VkCi0gICogZm9yIHRoZSBhZGRyZXNzIHNwYWNlIG9mIGEgcHJvY2Vzczsgb3IsIGlmIE1BUF9GSVhFRCB3YXMgbm90IHNwZWNpZmllZCBhbmQKLSAgKiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgcm9vbSBpbiB0aGUgYWRkcmVzcyBzcGFjZSB0byBlZmZlY3QgdGhlIG1hcHBpbmcuCi1AQCAtMTUsNyArMTUsNyBAQAotICAqIFRlc3QgU3RlcDoKLSAgKiAxLiBNYXAgYSBzaGFyZWQgbWVtb3J5IG9iamVjdCwgd2l0aCBzaXplIGV4Y2VlZGluZyB0aGUgdmFsdWUgZ2V0IGZyb20KLSAgKiAgICBybGltX2N1ciBvZiByZXNvdXJjZSBSTElNSVRfQVMsIHNldHRpbmcgTUFQX0ZJWEVEOwotLSAqIDMuIFNob3VsZCBnZXQgRU5PTUVNLgotKyAqIDMuIFNob3VsZCBnZXQgRU5PTUVNIG9yIEVJTlZBTC4KLSAgKi8KLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLUBAIC05Miw4ICs5Miw4IEBAIGludCBtYWluKHZvaWQpCi0gCSAgICAgICAodW5zaWduZWQgbG9uZylsZW4pOwotIAlwYSA9IG1tYXAoYWRkciwgbGVuLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfRklYRUQgfCBNQVBfU0hBUkVELCBmZCwKLSAJCSAgMCk7Ci0tCWlmIChwYSA9PSBNQVBfRkFJTEVEICYmIGVycm5vID09IEVOT01FTSkgewotLQkJcHJpbnRmKCJHb3QgRU5PTUVNOiAlc1xuVGVzdCBQQVNTRURcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0rCWlmIChwYSA9PSBNQVBfRkFJTEVEICYmIChlcnJubyA9PSBFTk9NRU0gfHwgZXJybm8gPT0gRUlOVkFMKSkgewotKwkJcHJpbnRmKCJHb3QgRU5PTUVNIG9yIEVJTlZBTDogJXNcblRlc3QgUEFTU0VEXG4iLCBzdHJlcnJvcihlcnJubykpOwotIAkJZXhpdChQVFNfUEFTUyk7Ci0gCX0KLSAKLUBAIC0xMDIsNiArMTAyLDYgQEAgaW50IG1haW4odm9pZCkKLSAJZWxzZQotIAkJbXVubWFwKHBhLCBsZW4pOwotIAljbG9zZShmZCk7Ci0tCXByaW50ZigiVGVzdCBGYWlsOiBEaWQgbm90IGdldCBFTk9NRU0gYXMgZXhwZWN0ZWRcbiIpOwotKwlwcmludGYoIlRlc3QgRmFpbGVkOiBEaWQgbm90IGdldCBFTk9NRU0gb3IgRUlOVkFMIGFzIGV4cGVjdGVkXG4iKTsKLSAJcmV0dXJuIFBUU19GQUlMOwotIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXNobWN0bDAxLWRvbi10LXVzZS1oYXJkY29kZWQtaW5kZXgtMC1mb3ItU0hNX1NUQVQtdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtc2htY3RsMDEtZG9uLXQtdXNlLWhhcmRjb2RlZC1pbmRleC0wLWZvci1TSE1fU1RBVC10ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcwNGU1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtc2htY3RsMDEtZG9uLXQtdXNlLWhhcmRjb2RlZC1pbmRleC0wLWZvci1TSE1fU1RBVC10ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLUZyb20gNzk0OTMzYjM4MzU0YTI2MTJjZjJjNDcxZjExNzk4YjMwNmYzNTMxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyMCBNYXkgMjAxOSAyMDo0NzoyMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBzaG1jdGwwMTogZG9uJ3QgdXNlIGhhcmRjb2RlZCBpbmRleCA9PSAwIGZvciBTSE1fU1RBVCB0ZXN0Ci0KLVRlc3QgZmFpbHMgb24gU0hNX1NUQVQgdGVzdGNhc2U6Ci0gICBzaG1jdGwwMSAgICA1ICBURkFJTCAgOiAgc2htY3RsMDEuYzoxNzM6IHNobWN0bDAxIGNhbGwgZmFpbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8gPSAyMiA6IEludmFsaWQgYXJndW1lbnQKLSAgIHNobWN0bCgwLCBTSE1fU1RBVCwgMHg2MDEwNjApICAgICAgICAgICA9IC1FSU5WQUwKLQotc2luY2UgZm9sbG93aW5nIGNvbW1pdDoKLSAgIGNvbW1pdCA5OWRiNDZlYTI5Mjc4MGNkOTc4ZDU2OTMyZDk0NDViMWU4YmRhZmU4Ci0gICBBdXRob3I6IE1hbmZyZWQgU3ByYXVsIDxtYW5mcmVkQGNvbG9yZnVsbGlmZS5jb20+Ci0gICBEYXRlOiAgIFR1ZSBNYXkgMTQgMTU6NDY6MzYgMjAxOSAtMDcwMAotICAgICBpcGM6IGRvIGN5Y2xpYyBpZCBhbGxvY2F0aW9uIGZvciB0aGUgaXBjIG9iamVjdC4KLQotRG9uJ3QgcmVseSBvbiBpbmRleCAwIGJlaW5nIGFsd2F5cyBhdmFpbGFibGUsIGJ1dCBpbnN0ZWFkCi11c2UgKG1heGltdW0pIGluZGV4IHJldHVybmVkIGJ5IFNITV9JTkZPLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLVJldmlld2VkLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KLUFja2VkLWJ5OiBDeXJpbCBIcnViaXMgPGNocnViaXNAc3VzZS5jej4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC9kYjBhNDNkOTM4OGJlMmMzNDdhODMwNjc1MWJiZTZiZWMwODZkMDYyXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25nemhpIFNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvc2htY3RsL3NobWN0bDAxLmMgfCAyMSArKysrKysrKysrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL3NobWN0bC9zaG1jdGwwMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvc2htY3RsL3NobWN0bDAxLmMKLWluZGV4IDFiNDY5NzcuLjUyYmYyM2EgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvc2htY3RsL3NobWN0bDAxLmMKLUBAIC03OSw2ICs3OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bmNfaW5mbyhpbnQgcmV0KTsKLSAKLSAvKiBDaGVjayByb3V0aW5lIGZvciBTSE1fU1RBVCAqLwotIHN0YXRpYyB2b2lkIGZ1bmNfc3N0YXQoaW50IHJldCk7Ci0rc3RhdGljIHZvaWQgZnVuY19zc3RhdF9zZXR1cCh2b2lkKTsKLSAKLSAvKiBDaGVjayByb3V0aW5lIGZvciBTSE1fTE9DSyAqLwotIHN0YXRpYyB2b2lkIGZ1bmNfbG9jayhpbnQgcmV0KTsKLUBAIC0xMTAsNyArMTExLDcgQEAgc3RhdGljIHN0cnVjdCB0ZXN0X2Nhc2VfdCB7Ci0gI2VuZGlmCi0gCXsmc2htX2lkXzEsIElQQ19TRVQsICZidWYsIGZ1bmNfc2V0LCBzZXRfc2V0dXB9LAotIAl7JnNobV9pZF8xLCBJUENfSU5GTywgKHN0cnVjdCBzaG1pZF9kcyAqKSAmaW5mbywgZnVuY19pbmZvLCBOVUxMfSwKLS0JeyZzaG1faW5kZXgsIFNITV9TVEFULCAmYnVmLCBmdW5jX3NzdGF0LCBOVUxMfSwKLSsJeyZzaG1faW5kZXgsIFNITV9TVEFULCAmYnVmLCBmdW5jX3NzdGF0LCBmdW5jX3NzdGF0X3NldHVwfSwKLSAJeyZzaG1faWRfMSwgU0hNX0xPQ0ssIE5VTEwsIGZ1bmNfbG9jaywgTlVMTH0sCi0gCXsmc2htX2lkXzEsIFNITV9VTkxPQ0ssIE5VTEwsIGZ1bmNfdW5sb2NrLCBOVUxMfSwKLSAJeyZzaG1faWRfMSwgSVBDX1JNSUQsIE5VTEwsIGZ1bmNfcm1pZCwgTlVMTH0sCi1AQCAtNDA3LDkgKzQwOCwyMyBAQCBzdGF0aWMgdm9pZCBmdW5jX2luZm8oaW50IHJldCkKLSBzdGF0aWMgdm9pZCBmdW5jX3NzdGF0KGludCByZXQpCi0gewotIAlpZiAocmV0ID49IDApCi0tCQl0c3RfcmVzbShUUEFTUywgImdldCBjb3JyZWN0IHNoYXJlZCBtZW1vcnkgaWQiKTsKLSsJCXRzdF9yZXNtKFRQQVNTLCAiZ2V0IGNvcnJlY3Qgc2hhcmVkIG1lbW9yeSBpZCBmb3IgaW5kZXg6ICVkIiwKLSsJCQlzaG1faW5kZXgpOwotIAllbHNlCi0tCQl0c3RfcmVzbShURkFJTCwgInNoYXJlZCBtZW1vcnkgaWQgaXMgaW5jb3JyZWN0Iik7Ci0rCQl0c3RfcmVzbShURkFJTCwgInNoYXJlZCBtZW1vcnkgaWQgaXMgaW5jb3JyZWN0LCBpbmRleDogJWQiLAotKwkJCXNobV9pbmRleCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGZ1bmNfc3N0YXRfc2V0dXAodm9pZCkKLSt7Ci0rCXN0cnVjdCBzaG1faW5mbyB0bXA7Ci0rCWludCByZXQ7Ci0rCi0rCXJldCA9IHNobWN0bChzaG1faWRfMSwgU0hNX0lORk8sICh2b2lkICopJnRtcCk7Ci0rCWlmIChyZXQgPCAwKQotKwkJdHN0X3Jlc20oVEZBSUx8VEVSUk5PLCAic2htY3RsKFNITV9JTkZPKSIpOwotKwllbHNlCi0rCQlzaG1faW5kZXggPSByZXQ7Ci0gfQotIAotIHN0YXRpYyB2b2lkIGZ1bmNfbG9jayhpbnQgcmV0KQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLWRpcmVjdF9pby1kaW90ZXN0NC1kcm9wLU1BUF9GSVhFRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNkMTg4Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBmMjEwZDdlMTliNzIxMDQxZjMxYjdmMjU4YTE2OWY4OWRjODUwMzAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDQgSnVsIDIwMTkgMTY6NDU6MjMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGlyZWN0X2lvL2Rpb3Rlc3Q0OiBkcm9wIE1BUF9GSVhFRAotCi1Ib25nemhpIHJlcG9ydHMgdGhhdCB0aGlzIHRlc3QgaXMgZmFpbGluZyBvbiBtaXBzNjQgd2l0aCA1LjErOgotICBkaW90ZXN0NCAxMCBUQlJPSyA6IGRpb3Rlc3Q0LmM6MzY4OiBjYW4ndCBtbWFwIGZpbGU6IEludmFsaWQgYXJndW1lbnQKLSAgZGlvdGVzdDQgMTEgVEJST0sgOiBkaW90ZXN0NC5jOjM2ODogUmVtYWluaW5nIGNhc2VzIGJyb2tlbgotSSBjb3VsZCByZXByb2R1Y2UgaXQgb24gZW11bGF0ZWQgNWtjLW1hbHRhLCBydW5uaW5nIDUuMi4wLXJjNy4KLQotVGVzdCBpcyB0cnlpbmcgdG8gbWFwIGludG8gYXJlYSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgaGVhcCBhcyBNQVBfU0hBUkVELAotYnV0IGl0IHVzZWQgd3JvbmcgYWxpZ25tZW50IChmaXhlZCBieSAnbGFwaS9tbWFwLmg6IGluY2x1ZGUgY29uZmlnLmgnKS4KLQotVXNhZ2Ugb2YgTUFQX0ZJWEVEIHNlZW1zIHVubmVjZXNzYXJ5LCBzbyBkcm9wIHRoYXQgdG9vIGFuZCBsZXQgdGhlIGtlcm5lbAotcGljayBhbiBhZGRyZXNzLgotCi1SZXBvcnRlZC1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2Y1NDQ0ZWVlYWJmMjUyYjg4ODRiOTQ2NWQyNzdiNmFmODUzODE5ZTNdCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvaW8vZGlyZWN0X2lvL2Rpb3Rlc3Q0LmMgfCA4ICsrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvaW8vZGlyZWN0X2lvL2Rpb3Rlc3Q0LmMgYi90ZXN0Y2FzZXMva2VybmVsL2lvL2RpcmVjdF9pby9kaW90ZXN0NC5jCi1pbmRleCBlNDYxNmU0Li5iZjIwMGNkIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYwotQEAgLTM1MiwxOCArMzUyLDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXRvdGFsKys7Ci0gCi0gCS8qIFRlc3QtMTA6IHJlYWQsIHdyaXRlIHRvIGEgbW1hcGVkIGZpbGUgKi8KLS0Jc2htX2Jhc2UgPSAoY2hhciAqKSgoKGxvbmcpc2JyaygwKSArIChzaG1zeiAtIDEpKSAmIH4oc2htc3ogLSAxKSk7Ci0tCWlmIChzaG1fYmFzZSA9PSBOVUxMKSB7Ci0tCQl0c3RfYnJrbShUQlJPSywgY2xlYW51cCwgInNicmsgZmFpbGVkOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7Ci0tCX0KLSAJb2Zmc2V0ID0gNDA5NjsKLSAJY291bnQgPSBidWZzaXplOwotIAlpZiAoKGZkID0gb3BlbihmaWxlbmFtZSwgT19ESVJFQ1QgfCBPX1JEV1IpKSA8IDApIHsKLSAJCXRzdF9icmttKFRCUk9LLCBjbGVhbnVwLCAiY2FuJ3Qgb3BlbiAlczogJXMiLAotIAkJCSBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLSAJfQotLQlzaG1fYmFzZSA9IG1tYXAoc2htX2Jhc2UsIDB4MTAwMDAwLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAotLQkJCU1BUF9TSEFSRUQgfCBNQVBfRklYRUQsIGZkLCAwKTsKLSsJc2htX2Jhc2UgPSBtbWFwKDAsIDB4MTAwMDAwLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAotKwkJCU1BUF9TSEFSRUQsIGZkLCAwKTsKLSAJaWYgKHNobV9iYXNlID09IChjYWRkcl90KSAtIDEpIHsKLSAJCXRzdF9icmttKFRCUk9LLCBjbGVhbnVwLCAiY2FuJ3QgbW1hcCBmaWxlOiAlcyIsCi0gCQkJIHN0cmVycm9yKGVycm5vKSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMi1nZXRybGltaXQwMy1hZGp1c3QtYS1iaXQtb2YtY29kZS10by1jb21wYXRpYWJsZS13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWdldHJsaW1pdDAzLWFkanVzdC1hLWJpdC1vZi1jb2RlLXRvLWNvbXBhdGlhYmxlLXdpdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlY2JjODAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWdldHJsaW1pdDAzLWFkanVzdC1hLWJpdC1vZi1jb2RlLXRvLWNvbXBhdGlhYmxlLXdpdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIDRhYzc0N2MxZjdmZjhlMmVjMjU2N2Q2NjcyODIyZTk1YTliNTZlNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSG9uZ3poaS5Tb25nIiA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE1IEp1bCAyMDE5IDAzOjM5OjA2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdldHJsaW1pdDAzOiBhZGp1c3QgYSBiaXQgb2YgY29kZSB0byBjb21wYXRpYWJsZSB3aXRoIG1pcHMzMgotCi1FcnJvciBpbmZvOgotZ2V0cmxpbWl0MDMuYzoxMDQ6IEZBSUw6IF9fTlJfcHJsaW1pdDY0KDApIGhhZCBybGltX2N1ciA9Ci1mZmZmZmZmZmZmZmZmZmZmIGJ1dCBfX05SX2dldHJsaW1pdCgwKSBoYWQgcmxpbV9jdXIgPSA3ZmZmZmZmZgotCi1BY2NvcmRpbmcgdG8ga2VybmVsIGNvZGU6IFthcmNoL21pcHMvaW5jbHVkZS91YXBpL2FzbS9yZXNvdXJjZS5oXQotUkxJTV9JTkZJTklUWSBpcyBzZXQgdG8gMHg3ZmZmZmZmZlVMIGluc3RlYWQgb2YgVUxPTkdfTUFYIG9uIG1pcHMzMi4KLQotIC8qCi0gKiBTdVMgc2F5cyBsaW1pdHMgaGF2ZSB0byBiZSB1bnNpZ25lZC4KLSAqIFdoaWNoIG1ha2VzIGEgdG9uIG1vcmUgc2Vuc2UgYW55d2F5LAotICogYnV0IHdlIGtlZXAgdGhlIG9sZCB2YWx1ZSBvbiBNSVBTMzIsCi0gKiBmb3IgY29tcGF0aWJpbGl0eToKLSAqLwotICNpZm5kZWYgX19taXBzNjQKLSAjIGRlZmluZSBSTElNX0lORklOSVRZICAgICAgMHg3ZmZmZmZmZlVMCi0gI2VuZGlmCi0KLUFkZGluZyBjb25kaXRpb25hbCBzdGF0ZW1lbnQgYWJvdXQgbWlwcyB0byBmaXggdGhpcy4KLQotU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0LzdhM2JjYTYzY2Q3ZjA1OWQ0OTBiNjI3NGYwZmRmMzI0N2JlOTNmZGVdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jIHwgOCArKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0cmxpbWl0L2dldHJsaW1pdDAzLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jCi1pbmRleCBlNGQ1NmM0Li4zMTliYzQ5IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRybGltaXQvZ2V0cmxpbWl0MDMuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRybGltaXQvZ2V0cmxpbWl0MDMuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAKLSAjaW5jbHVkZSAidHN0X3Rlc3QuaCIKLSAjaW5jbHVkZSAibGFwaS9zeXNjYWxscy5oIgotKyNpbmNsdWRlICJsYXBpL2FiaXNpemUuaCIKLSAKLSAvKioKLSAgKiBMaW51eCBwcm92aWRlcyBhbiAib2xkIiBnZXRybGltaXQgc3lzY2FsbCBoYW5kbGVyIHRoYXQgdXNlcyBzaWduZWQgbG9uZywKLUBAIC02MSw3ICs2MiwxMiBAQCBzdHJ1Y3QgcmxpbWl0X3Vsb25nIHsKLSAJdW5zaWduZWQgbG9uZyBybGltX2N1cjsKLSAJdW5zaWduZWQgbG9uZyBybGltX21heDsKLSB9OwotLWNvbnN0IHVuc2lnbmVkIGxvbmcgUkxJTV9JTkZJTklUWV9VTCA9IFVMT05HX01BWDsKLSsKLSsjaWYgZGVmaW5lZChfX21pcHNfXykgJiYgZGVmaW5lZChUU1RfQUJJMzIpCi0rCWNvbnN0IHVuc2lnbmVkIGxvbmcgUkxJTV9JTkZJTklUWV9VTCA9IDB4N2ZmZmZmZmZVTDsKLSsjZWxzZQotKwljb25zdCB1bnNpZ25lZCBsb25nIFJMSU1fSU5GSU5JVFlfVUwgPSBVTE9OR19NQVg7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIGludCBnZXRybGltaXRfdWxvbmcoaW50IHJlc291cmNlLCBzdHJ1Y3QgcmxpbWl0X3Vsb25nICpybGltKQotIHsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxOTA1MTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YWE5NjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFRlc3QgUHJvamVjdCIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBqb2ludCBwcm9qZWN0IHdpdGggU0dJLCBJQk0sIE9TREwsIGFuZCBCdWxsIHdpdGggYSBnb2FsIHRvIGRlbGl2ZXIgdGVzdCBzdWl0ZXMgdG8gdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSB0aGF0IHZhbGlkYXRlIHRoZSByZWxpYWJpbGl0eSwgcm9idXN0bmVzcywgYW5kIHN0YWJpbGl0eSBvZiBMaW51eC4gVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIHRlc3RpbmcgdGhlIExpbnV4IGtlcm5lbCBhbmQgcmVsYXRlZCBmZWF0dXJlcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2xpbnV4LXRlc3QtcHJvamVjdC5naXRodWIuaW8vIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsgJiBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvcnVuX2ZyZWV6ZXIuc2g7YmVnaW5saW5lPTU7ZW5kbGluZT0xNzttZDU9ODZhNjFkMmMwNDJkNTk4MzZmZmIzNTNhMjE0NTY0OTggXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvbWVtb3J5X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvY3B1X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvQ09QWUlORzttZDU9NDhiMWM1ZWM2MzNlM2UzMGVjMmNmODg0YWU2OTk5NDcgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMvcmVhbHRpbWUvQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAotICAgIGZpbGU6Ly91dGlscy9iZW5jaG1hcmsva2VybmJlbmNoLTAuNDIvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgIGZpbGU6Ly91dGlscy9mZnNiLTYuMC1yYzIvQ09QWUlORzttZDU9YzQ2MDgyMTY3YTMxNGQ3ODVkMDEyYTI0NDc0OGQ4MDMgXAotIgotCi1ERVBFTkRTID0gImF0dHIgbGliYWlvIGxpYmNhcCBhY2wgb3BlbnNzbCB6aXAtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQkM9bXVzbCAiCi0KLSMgc2luY2UgbHRwIGNvbnRhaW5zIHg4Ni02NCBhc3NlbWJsZXIgd2hpY2ggdXNlcyB0aGUgZnJhbWUtcG9pbnRlciByZWdpc3RlciwKLSMgc2V0IC1mb21pdC1mcmFtZS1wb2ludGVyIHg4Ni02NCB0byBoYW5kbGUgY2FzZXMgd2hlcmUgb3B0aW1pc2F0aW9uCi0jIGlzIHNldCB0byAtTzAgb3IgZnJhbWUgcG9pbnRlcnMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKLSMgZWFybGllciBpbiBDRkxBR1MsIGV0Yy4KLUNGTEFHU19hcHBlbmRfeDg2LTY0ID0gIiAtZm9taXQtZnJhbWUtcG9pbnRlciIKLQotQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotQ0ZMQUdTX2FwcGVuZF9taXBzYXJjaG42NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1TUkNSRVYgPSAiYWMzM2VmODdmMGI5ZGM1NjUzMzAyNjQzNWJlM2VhOGM2N2NlODZkMiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXJ0X3Rnc2lncXVldWVpbmZvLWRpc2FibGUtdGVzdC1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctRml4LXRlc3RfcHJvY19raWxsLWhhbmdpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktb3Blbl9wb3NpeF90ZXN0c3VpdGUtbW1hcDI0LTItUmVsYXgtY29uZGl0aW9uLWEtYml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtc2htY3RsMDEtZG9uLXQtdXNlLWhhcmRjb2RlZC1pbmRleC0wLWZvci1TSE1fU1RBVC10ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWRpcmVjdF9pby1kaW90ZXN0NC1kcm9wLU1BUF9GSVhFRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWdldHJsaW1pdDAzLWFkanVzdC1hLWJpdC1vZi1jb2RlLXRvLWNvbXBhdGlhYmxlLXdpdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldGRlbnRzLWdldGRlbnRzNjQtQVBJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY2hlY2stZm9yLVJFU19VU0VfSU5FVDYtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGxzLXRna2lsbDAzLXdhaXQtZm9yLWRlZnVuY3QtdGlkLXRvLWdldC1kZXRhY2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11c3RhdDAyLUZpeC1FRkFVTFQtaW4tMzJiaXQtY29tcGF0aWJpbGl0eS1tb2RlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY3ZlLW1lbHRkb3duLmMtRml4LWtlcm5lbC1zeW1ib2wtZmluZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY3ZlLTIwMTctMTcwNTItQXZvaWQtdW5zYWZlLWV4aXRzLWluLXRocmVhZHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vdmVyY29tbWl0X21lbW9yeS11cGRhdGUtZm9yLW1tLWZpeC1mYWxzZS1wb3NpdGl2ZS1PLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWtzd2FwMDEuc2gtQWRkLXVkZXZhZG0tdHJpZ2dlci1iZWZvcmUtc3dhcC12ZXJpZmljYS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1leHBvcnQgcHJlZml4ID0gIi9vcHQvbHRwIgotZXhwb3J0IGV4ZWNfcHJlZml4ID0gIi9vcHQvbHRwIgotCi1QQUNLQUdFQ09ORklHW251bWFdID0gIi0td2l0aC1udW1hLCAtLXdpdGhvdXQtbnVtYSwgbnVtYWN0bCwiCi1FWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L3Rlc3RjYXNlcy9yZWFsdGltZS9tNCIKLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLXBvd2VyLW1hbmFnZW1lbnQtdGVzdHN1aXRlIC0td2l0aC1yZWFsdGltZS10ZXN0c3VpdGUgLS13aXRoLW9wZW4tcG9zaXgtdGVzdHN1aXRlICIKLSMgbHRwIG5ldHdvcmsvcnBjIHRlc3QgY2FzZXMgZnRiZnMgd2hlbiBsaWJ0aXJwYyBpcyBmb3VuZAotRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRpcnBjICIKLQotZG9faW5zdGFsbCgpewotICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLwotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKLQotICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCi0gICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQotICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKLSAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCi0gICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KLSAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCi0gICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKLQotICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKLSAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcwotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgYWNsIFwKLSAgICBhdCBcCi0gICAgYXR0ciBcCi0gICAgYmFzaCBcCi0gICAgY3BpbyBcCi0gICAgY3JvbmllIFwKLSAgICBjdXJsIFwKLSAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKLSAgICBleHBlY3QgXAotICAgIGZpbGUgXAotICAgIGdhd2sgXAotICAgIGd6aXAgXAotICAgIGlwcm91dGUyIFwKLSAgICBsZGQgXAotICAgIGxpYmFpbyBcCi0gICAgbG9ncm90YXRlIFwKLSAgICBwZXJsIFwKLSAgICBweXRob24zLWNvcmUgXAotICAgIHByb2NwcyBcCi0gICAgcXVvdGEgXAotICAgIHVuemlwIFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICB3aGljaCBcCi0gICAgdGFyIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hIC9vcHQvbHRwL2xpYi9saWJtZW0uYSIKLQotIyBBdm9pZCBzdHJpcHBpbmcgc29tZSBnZW5lcmF0ZWQgYmluYXJpZXMgb3RoZXJ3aXNlIHNvbWUgb2YgdGhlIGx0cCB0ZXN0cyBzdWNoIGFzIGxkZDAxICYgbm0wMSBmYWlsCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVBfRklMRVMgPSAiL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9ubTAxIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vbGRkMDEiCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCBzdGF0aWNkZXYiCi0KLSMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAotIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKLSMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0Ci0jIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQotU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDIwMDEyMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAyMDAxMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhYzM5MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAyMDAxMjAuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGludXgtdGVzdC1wcm9qZWN0LmdpdGh1Yi5pby8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisiCisKK0RFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJTPS1sZnRzICIKKworIyBzaW5jZSBsdHAgY29udGFpbnMgeDg2LTY0IGFzc2VtYmxlciB3aGljaCB1c2VzIHRoZSBmcmFtZS1wb2ludGVyIHJlZ2lzdGVyLAorIyBzZXQgLWZvbWl0LWZyYW1lLXBvaW50ZXIgeDg2LTY0IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBvcHRpbWlzYXRpb24KKyMgaXMgc2V0IHRvIC1PMCBvciBmcmFtZSBwb2ludGVycyBoYXZlIGJlZW4gZW5hYmxlZCBieSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgorIyBlYXJsaWVyIGluIENGTEFHUywgZXRjLgorQ0ZMQUdTX2FwcGVuZF94ODYtNjQgPSAiIC1mb21pdC1mcmFtZS1wb2ludGVyIgorCitDRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCitDRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK1NSQ1JFViA9ICI0MDc5YWFmMjY0ZDBlOWVhZDA0MmI1OWQxYzVmNGU2NDM2MjBkMGQ1IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1GaXgtdGVzdF9wcm9jX2tpbGwtaGFuZ2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbW9yZS1tdXNsLWV4Y2x1c2lvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNjYWxscy1DaGVjay1mb3ItdGltZTY0LXVuc2FmZS1zeXNjYWxscy1iZWZvcmUtdXNpLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2V4cG9ydCBwcmVmaXggPSAiL29wdC8ke1BOfSIKK2V4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0LyR7UE59IgorCitQQUNLQUdFQ09ORklHW251bWFdID0gIi0td2l0aC1udW1hLCAtLXdpdGhvdXQtbnVtYSwgbnVtYWN0bCwiCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L3Rlc3RjYXNlcy9yZWFsdGltZS9tNCIKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLXBvd2VyLW1hbmFnZW1lbnQtdGVzdHN1aXRlIC0td2l0aC1yZWFsdGltZS10ZXN0c3VpdGUgLS13aXRoLW9wZW4tcG9zaXgtdGVzdHN1aXRlICIKKyMgbHRwIG5ldHdvcmsvcnBjIHRlc3QgY2FzZXMgZnRiZnMgd2hlbiBsaWJ0aXJwYyBpcyBmb3VuZAorRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRpcnBjICIKKworZG9faW5zdGFsbCgpeworICAgIGluc3RhbGwgLWQgJHtEfSR7cHJlZml4fS8KKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCisKKyAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgorICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKKyAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCisgICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcworICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCisgICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQorICAgIHJtIC1yZiAke0R9JHtwcmVmaXh9L2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAorCisgICAgIyBDb3B5IFBPU0lYIHRlc3Qgc3VpdGUgaW50byAke0R9JHtwcmVmaXh9L3Rlc3RjYXNlcyBieSBtYW51YWwKKyAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfSR7cHJlZml4fS90ZXN0Y2FzZXMKKworICAgICMgTWFrZWZpbGUgd2VyZSBjb25maWd1cmVkIGluIHRoZSBidWlsZCBzeXN0ZW0KKyAgICBmaW5kICR7RH0ke3ByZWZpeH0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyAtbiAxIHNlZCAtaSBcCisgICAgICAgICAtZSAnc0BbXiBdKi1mZGVidWctcHJlZml4LW1hcD1bXiAiXSpAQGcnIFwKKyAgICAgICAgIC1lICdzQFteIF0qLWZtYWNyby1wcmVmaXgtbWFwPVteICJdKkBAZycgXAorICAgICAgICAgLWUgJ3NAW14gXSotLXN5c3Jvb3Q9W14gIl0qQEBnJyAKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGF0dHIgXAorICAgIGJhc2ggXAorICAgIGNwaW8gXAorICAgIGNyb25pZSBcCisgICAgY3VybCBcCisgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgZXhwZWN0IFwKKyAgICBmaWxlIFwKKyAgICBnYXdrIFwKKyAgICBnemlwIFwKKyAgICBpcHJvdXRlMiBcCisgICAgbGRkIFwKKyAgICBsaWJhaW8gXAorICAgIGxvZ3JvdGF0ZSBcCisgICAgcGVybCBcCisgICAgcHl0aG9uMy1jb3JlIFwKKyAgICBwcm9jcHMgXAorICAgIHF1b3RhIFwKKyAgICB1bnppcCBcCisgICAgdXRpbC1saW51eCBcCisgICAgd2hpY2ggXAorICAgIHRhciBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vKiAke3ByZWZpeH0vcnVudGVzdC8qICR7cHJlZml4fS9zY2VuYXJpb19ncm91cHMvKiAke3ByZWZpeH0vdGVzdGNhc2VzL2Jpbi8qICR7cHJlZml4fS90ZXN0Y2FzZXMvYmluLyovYmluLyogJHtwcmVmaXh9L3Rlc3RzY3JpcHRzLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0RvY3VtZW50YXRpb24vKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3NjcmlwdHMvKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiAke3ByZWZpeH0vdGVzdGNhc2VzL2RhdGEvbm0wMS9saWIuYSAke3ByZWZpeH0vbGliL2xpYm1lbS5hIgorCisjIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIke3ByZWZpeH0vdGVzdGNhc2VzL2Jpbi9ubTAxICR7cHJlZml4fS90ZXN0Y2FzZXMvYmluL2xkZDAxIgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImFscmVhZHktc3RyaXBwZWQgc3RhdGljZGV2IgorCisjIEF2b2lkIGZpbGUgZGVwZW5kZW5jeSBzY2FucywgYXMgTFRQIGNoZWNrcyBmb3IgdGhpbmdzIHRoYXQgbWF5IG9yIG1heSBub3QKKyMgZXhpc3Qgb24gdGhlIHJ1bm5pbmcgc3lzdGVtLiAgRm9yIGluc3RhbmNlIGl0IGhhcyBzcGVjaWZpYyBjaGVja3MgZm9yCisjIGNzaCBhbmQga3NoIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IHBhcnQgb2YgT3BlbkVtYmVkZGVkIHN5c3RlbXMgKGJ1dAorIyBjYW4gYmUgYWRkZWQgdmlhIGFkZGl0aW9uYWwgbGF5ZXJzLikKK1NLSVBfRklMRURFUFNfJHtQTn0gPSAnMScKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODNiMjM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1TVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBVbml4IGRvY3VtZW50YXRpb24gc3lzdGVtIGFjY2Vzc2VkIHVzaW5nIHRoZSBtYW4gY29tbWFuZCIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYW4tZGIubm9uZ251Lm9yZy8iCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vbWFuLWRiL21hbi1kYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vOTlfbWFuZGIgXAotICAgICAgICAgICBmaWxlOi8vbWFuX2RiLmNvbmYtYXZvaWQtbXVsdGlsaWItaW5zdGFsbC1maWxlLWNvbmZsaWN0LnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImVjMGIyM2M4MzE0YTE2NTRjNGQwNTliMmMxOGNlNDNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5Y2Q1YmI5OTYzMDVkMDhiZmU5ZTExMTRlZGMzMGI0Yzk3YmU4MDcwOTNiODhhZjgwMzNlZDFjZjliZWIzMjYiCi0KLURFUEVORFMgPSAibGlicGlwZWxpbmUgZ2RibSBncm9mZi1uYXRpdmUgYmFzZS1wYXNzd2QiCi1SREVQRU5EU18ke1BOfSArPSAiYmFzZS1wYXNzd2QiCi0KLSMgfCAvdXNyL3NyYy9kZWJ1Zy9tYW4tZGIvMi44LjAtcjAvbWFuLWRiLTIuOC4wL3NyYy93aGF0aXMuYzo5Mzk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9ubF9tc2dfY2F0X2NudHInCi1VU0VfTkxTX2xpYmMtbXVzbCA9ICJubyIKLQotaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZAotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCi1FWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dsL200IgotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkgICAgICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfbWFuZGIgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0gICAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L2xpYi90bXBmaWxlcy5kIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9tYW4tZGIvbGlibWFuLnNvICR7bGliZGlyfS8ke0JQTn0vbGlibWFuZGIuc28iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJncm9mZiIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJsZXNzIgotUlBST1ZJREVTXyR7UE59ICs9ICIgbWFuIgotCi1kZWYgY29tcHJlc3NfcGtnKGQpOgotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCJJTkhFUklUIiwgImNvbXByZXNzX2RvYyIsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1hbi1kYi50aW1lciBtYW4tZGIuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPz0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzE0OWRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjkuMS5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBVbml4IGRvY3VtZW50YXRpb24gc3lzdGVtIGFjY2Vzc2VkIHVzaW5nIHRoZSBtYW4gY29tbWFuZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYW4tZGIubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vbWFuLWRiL21hbi1kYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vOTlfbWFuZGIgXAorICAgICAgICAgICBmaWxlOi8vbWFuX2RiLmNvbmYtYXZvaWQtbXVsdGlsaWItaW5zdGFsbC1maWxlLWNvbmZsaWN0LnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjU5M2Y0ZjBhMjZhYjRmNjZmNWI4MWNmNmMwYzczNjRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhM2Q4YWZjNWMwOWE3MjY1YThkYWJmYTBlN2MxZjRiM2FiOTdkZjlhYmYxZjY4MTBmYWE4ZjMwMTA1NmM3NGYiCisKK0RFUEVORFMgPSAibGlicGlwZWxpbmUgZ2RibSBncm9mZi1uYXRpdmUgYmFzZS1wYXNzd2QiCitSREVQRU5EU18ke1BOfSArPSAiYmFzZS1wYXNzd2QiCisKKyMgfCAvdXNyL3NyYy9kZWJ1Zy9tYW4tZGIvMi44LjAtcjAvbWFuLWRiLTIuOC4wL3NyYy93aGF0aXMuYzo5Mzk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9ubF9tc2dfY2F0X2NudHInCitVU0VfTkxTX2xpYmMtbXVzbCA9ICJubyIKKworaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dsL200IgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkgICAgICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfbWFuZGIgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7CisgICAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworfQorCitGSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L2xpYi90bXBmaWxlcy5kIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9tYW4tZGIvbGlibWFuLnNvICR7bGliZGlyfS8ke0JQTn0vbGlibWFuZGIuc28iCisKK1JERVBFTkRTXyR7UE59ICs9ICJncm9mZiIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJsZXNzIgorUlBST1ZJREVTXyR7UE59ICs9ICIgbWFuIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCJJTkhFUklUIiwgImNvbXByZXNzX2RvYyIsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCisgICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgorICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6CisgICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKKyAgICAgICAgICAgICByZXR1cm4gInh6IgorICAgIHJldHVybiAiIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1hbi1kYi50aW1lciBtYW4tZGIuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPz0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NTI1ZjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc181LjAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgotTElDRU5TRSA9ICJHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9Nzk0ZjcwMTYxN2NjMDNmZTUwYzUzMjU3NjYwZDhlYzQiCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vQXJjaGl2ZS8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzOGFiZWFkNzc2YTUwNjEwOWUxMjhhYjk2YmNiYmU1OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzBiZWY3OTRjNjgyNmIzZmIzOTY1ZDFhMmVmZGI0NmMyNWNiMzdjMDZjNzE1OTg3Zjg4YTUwOTA2Y2Q1YjZmIgotCi1pbmhlcml0IG1hbnBhZ2VzCi0KLU1BTl9QS0cgPSAiJHtQTn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIiCi0KLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCi1kb19jb21waWxlW25vZXhlY10gPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi0jIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKLUZJTEVTXyR7UE59LWRvYyA9ICIiCi1GSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMgY3J5cHQuMyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjcnlwdC4zXSA9ICIke21hbmRpcn0vbWFuMy9jcnlwdC4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc181LjA1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc181LjA1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NTg3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDUuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9Nzk0ZjcwMTYxN2NjMDNmZTUwYzUzMjU3NjYwZDhlYzQiCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2RhZDVkZWIxNTExN2U2MGE2ZDllM2E2YmRjMDM1YjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDNjMzNkMmVlYTliYTk4OWMxOGVlZjkwMjk4Y2Y2ZDU1MjFmZjAzOGRlYjUxY2RhMGVjZDBmZGMzY2VjMmI3ZCIKKworaW5oZXJpdCBtYW5wYWdlcworCitNQU5fUEtHID0gIiR7UE59IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiIgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCitGSUxFU18ke1BOfS1kb2MgPSAiIgorRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIGNyeXB0LjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFzc3dkLjVdID0gIiR7bWFuZGlyfS9tYW41L3Bhc3N3ZC41IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dldHNwbmFtLjNdID0gIiR7bWFuZGlyfS9tYW4zL2dldHNwbmFtLjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY3J5cHQuM10gPSAiJHttYW5kaXJ9L21hbjMvY3J5cHQuMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzLzAwMDEtVGlja2V0LTM2MjktY29uZmlndXJlLmFjLWRyb3AtYnVuZGxlZC1nZXR0ZXh0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYzNTczNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzLzAwMDEtVGlja2V0LTM2MjktY29uZmlndXJlLmFjLWRyb3AtYnVuZGxlZC1nZXR0ZXh0LnBhdGNoCkBAIC0wLDAgKzEsMTEwIEBACitGcm9tIDBkNjc3YTAxNGE4N2I5NjhkNzllZWEyMzUzYWM0ZTM0MmIwZmQ0Y2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZXJnZWkgVHJvZmltb3ZpY2ggPHNseWZveEBnZW50b28ub3JnPgorRGF0ZTogV2VkLCAxMSBTZXAgMjAxOSAyMjo1ODoxOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBUaWNrZXQgIzM2Mjk6IGNvbmZpZ3VyZS5hYzogZHJvcCBidW5kbGVkIGdldHRleHQKKworQnVuZGxlZCBsaWJpbnRsIGRpZCBub3Qgc3VwcG9ydCBsaW5raW5nIHRvIGludGVybmFsIHN0YXRpYworbGlicmFyaWVzIChsaWJtYyBpbiBvdXIgY2FzZSk6IGRpcmVjdGx5IHNwZWNpZmllZCBzdGF0aWMKK2xpYnJhcmllcyBhcmUgbm90IHB1bGxlZCBieSBsaWJ0b29sIGFuZCBhcmUgbm90IHVzYWJsZSBmb3IKK2R5bmFtaWMgbGlicmFyaWVzIGFzIFBJQy1yZWxhdGVkIGZsYWdzIGFyZSBub3QgcGFzc2VkIGZvcgorY29tcGlsYXRpb24uCisKK1RoaXMgcmVuZGVycyBidW5kbGVkIGxpYmludGwgbGlicmFyeSB1bnVzYWJsZS4KKworVGhlIGNoYW5nZSBkcm9wcyBsaWJpbnRsIGJ1bmRsaW5nIHN1cHBvcnQgYW5kIGFsd2F5cyByZWxpZXMKK29uIGV4dGVybmFsIGxpYmludGwgKG9yIGZhbGxzIGJhY2sgdG8gZGlzYWJsZWQgTkxTKS4KKworT24gYSByZWxhdGVkIG5vdGUgZ2V0dGV4dC0wLjIwIGRyb3BzIHN1cHBvcnQgZm9yIGJ1bmRsaW5nCitvciBsaWJpbnRsIGFuZCB0aGlzIGNoYW5nZSB3aWxsIGVhc2UgbWlncmF0aW9uIHRvIG5ld2VyIHZlcnNpb24uCisKK1RoZSBjaGFuZ2UgaXMgdGVzdGVkIG9uIHg4Nl82NC1nZW50b28tbGludXgtbXVzbDogbWMgYnVpbGRzCithbmQgbGlua3MgYWxsIHRlc3RzIHN1Y2Nlc3NmdWxseS4gQSBmZXcgdGVzdHMgZmFpbCBmb3IgbGFjaworb2YgTkxTIHN1cHBvcnQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9NaWRuaWdodENvbW1hbmRlci9tYy9jb21taXQvZjMwZTZmZjI4M2Y0YmM4NjE3N2U0MzYwZGU5NGRhZDc5NDY3ODM5NV0KK1NpZ25lZC1vZmYtYnk6IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQm9yb2RpbiA8YWJvcm9kaW5Adm1haWwucnU+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtICAgICAgICAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgICAgICAgICAgfCA1ICsrKy0tCisgZG9jL2RveHlnZW4uY2ZnICAgICAgIHwgMiArLQorIGxpYi9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBtNC5pbmNsdWRlL21jLWkxOG4ubTQgfCA1IC0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYWMwNWE4My4uZjg2ZjZlZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEsNyArMSw3IEBACisgIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBjcmVhdGUgTWFrZWZpbGUuaW4uCisgQVVUT01BS0VfT1BUSU9OUyA9IDEuNQorIAorLVNVQkRJUlMgPSBpbnRsIHBvIGxpYiBzcmMgZG9jIGNvbnRyaWIgbWlzYworK1NVQkRJUlMgPSBwbyBsaWIgc3JjIGRvYyBjb250cmliIG1pc2MKKyAKKyBpZiBIQVZFX1RFU1RTCisgICAgIFNVQkRJUlMgKz0gdGVzdHMKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGExOTQ4ZjYuLmJiYzllNzEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI3Miw3ICsyNzIsOSBAQCBkbmwgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIGRubCBJbnRlcm5hdGlvbmFsaXphdGlvbgorIGRubCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCistQU1fR05VX0dFVFRFWFQoW25vLWxpYnRvb2xdLCBbbmVlZC1uZ2V0dGV4dF0pCisrQUNfQ0hFQ0tfRlVOQ1MoW3NldGxvY2FsZV0pCisrCisrQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSwgW25lZWQtbmdldHRleHRdKQorIEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oWzAuMTguMV0pCisgCisgbWNfSTE4TgorQEAgLTY4MCw3ICs2ODIsNiBAQCBkb2MvaGxwL3BsL01ha2VmaWxlCisgZG9jL2hscC9ydS9NYWtlZmlsZQorIGRvYy9obHAvc3IvTWFrZWZpbGUKKyAKKy1pbnRsL01ha2VmaWxlCisgcG8vTWFrZWZpbGUuaW4KKyBdKQorIAorZGlmZiAtLWdpdCBhL2RvYy9kb3h5Z2VuLmNmZyBiL2RvYy9kb3h5Z2VuLmNmZworaW5kZXggMDdiYzk3My4uMTExODA2MiAxMDA2NDQKKy0tLSBhL2RvYy9kb3h5Z2VuLmNmZworKysrIGIvZG9jL2RveHlnZW4uY2ZnCitAQCAtOTEsNyArOTEsNyBAQCBGSUxFX1BBVFRFUk5TICAgICAgICAgID0gKi5jIFwKKyBSRUNVUlNJVkUgICAgICAgICAgICAgID0gWUVTCisgRVhDTFVERSAgICAgICAgICAgICAgICA9CisgRVhDTFVERV9TWU1MSU5LUyAgICAgICA9IE5PCistRVhDTFVERV9QQVRURVJOUyAgICAgICA9ICovaW50bC8qICovdGVzdHMvKiAqLy5naXQvKgorK0VYQ0xVREVfUEFUVEVSTlMgICAgICAgPSAqL3Rlc3RzLyogKi8uZ2l0LyoKKyBFWENMVURFX1NZTUJPTFMgICAgICAgID0KKyBFWEFNUExFX1BBVEggICAgICAgICAgID0gJChTUkNESVIpCisgRVhBTVBMRV9QQVRURVJOUyAgICAgICA9CitkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIvbGliL01ha2VmaWxlLmFtCitpbmRleCBjNDQ4ZTJkLi40NTVmOWRkIDEwMDY0NAorLS0tIGEvbGliL01ha2VmaWxlLmFtCisrKysgYi9saWIvTWFrZWZpbGUuYW0KK0BAIC03NCw0ICs3NCw0IEBAIGVsc2UKKyAgICAgbGlibWNfbGFfTElCQUREICs9ICQoR0xJQl9MSUJTKQorIGVuZGlmCisgCistbGlibWNfbGFfTElCQUREICs9ICQoUENSRV9MSUJTKSAkKExJQklDT05WKSAkKExJQklOVEwpCisrbGlibWNfbGFfTElCQUREICs9ICQoUENSRV9MSUJTKQorZGlmZiAtLWdpdCBhL200LmluY2x1ZGUvbWMtaTE4bi5tNCBiL200LmluY2x1ZGUvbWMtaTE4bi5tNAoraW5kZXggZGQxMGQwMC4uZWMwODMyNCAxMDA2NDQKKy0tLSBhL200LmluY2x1ZGUvbWMtaTE4bi5tNAorKysrIGIvbTQuaW5jbHVkZS9tYy1pMThuLm00CitAQCAtOCwxMSArOCw2IEBAIGRubCBAbGljZW5zZSBHUEwKKyBkbmwgQGNvcHlyaWdodCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKyBBQ19ERUZVTihbbWNfSTE4Tl0sWworLQorLSAgICBpZiB0ZXN0ICJ4JFVTRV9JTkNMVURFRF9MSUJJTlRMIiA9IHh5ZXM7IHRoZW4KKy0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUlcJCh0b3BfYnVpbGRkaXIpL2ludGwgLUlcJCh0b3Bfc3JjZGlyKS9pbnRsIgorLSAgICBmaQorLQorICAgICBkbmwgVXNlciB2aXNpYmxlIHN1cHBvcnQgZm9yIGNoYXJzZXQgY29udmVyc2lvbi4KKyAgICAgQUNfQVJHX0VOQUJMRShbY2hhcnNldF0sCisgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtY2hhcnNldF0sIFtTdXBwb3J0IGZvciBjaGFyc2V0IHNlbGVjdGlvbiBhbmQgY29udmVyc2lvbiBAPDpAeWVzQDo+QF0pKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvbm9tYW5kYXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvbm9tYW5kYXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YmQ3M2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy9ub21hbmRhdGUucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorVGhlIG1hbiBwYWdlIGRhdGUgY2FuIHZhcnkgZGVwZW5kaW5nIHVwb24gdGhlIGhvc3QgcGVybCwgZS5nLiBpbiBSdXNzaWFuCitzb21lIHZlcnNpb25zIHByaW50ICfQuNGO0L3RjycsIG90aGVycyAn0JjRjtC90YwnIG9yIFBvbGlzaCAnY3plcndjYScgb3IgJ2N6ZXJ3aWVjJy4KK1JhdGhlciB0aGFuIGRlcGVuZCB1cG9uIHBlcmwtbmF0aXZlIHRvIGZpeCB0aGlzLCBqdXN0IHJlbW92ZSB0aGUgZGF0ZSBmcm9tIAordGhlIG1hbnBhZ2VzLgorCitSUCAyMDIwLzIvNAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNmaWNpYyByZXByb2R1Y2liaWxpdHkgd29ya2Fyb3VuZF0KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogbWMtNC44LjIzL2RvYy9tYW4vZGF0ZS1vZi1tYW4taW5jbHVkZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1jLTQuOC4yMy5vcmlnL2RvYy9tYW4vZGF0ZS1vZi1tYW4taW5jbHVkZS5hbQorKysrIG1jLTQuOC4yMy9kb2MvbWFuL2RhdGUtb2YtbWFuLWluY2x1ZGUuYW0KK0BAIC0xLDUgKzEsNSBAQAorIFNFRF9QQVJBTUVURVJTID0gXAorLQktZSAicy8lREFURV9PRl9NQU5fUEFHRSUvJCR7TUFOX0RBVEV9L2ciIFwKKysJLWUgInMvJURBVEVfT0ZfTUFOX1BBR0UlLy9nIiBcCisgCS1lICJzLyVESVNUUl9WRVJTSU9OJS9ARElTVFJfVkVSU0lPTkAvZyIgXAorIAktZSAic3slcHJlZml4JXtAcHJlZml4QHtnIiBcCisgCS1lICJzeyVzeXNjb25mZGlyJXtAc3lzY29uZmRpckB7ZyIgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIzLmJiCmluZGV4IDcxZjYxYjQuLmVhZDM0OGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjMuYmIKQEAgLTQsMTEgKzQsMTQgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgorUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mbyIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWMtcmVwbGFjZS1wZXJsLXctd2l0aC11c2Utd2FybmluZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtb3B0aW9uLXRvLWNvbnRyb2wtY29uZmlndXJlLWFyZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm9tYW5kYXRlLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjE1MjkyN2FjMjljZjBlNjFkN2QwMTlmMjYxYmI3ZDg5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzOGM0NTUyNTQ1ZGNmMzA2NTM1OWJkNTA3NTNhYmJiMTUwYzFiMjJlYzVhMzZlYWEwMmM4MjgwODI5MzI2N2QiCkBAIC0yNyw2ICszMCw3IEBACiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QWVRIT049Jy91c3IvYmluL2VudiBweXRob24nIgogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfR1JFUD0nL3Vzci9iaW4vZW52IGdyZXAnIgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIm1jX2N2X2hhdmVfemlwaW5mbz15ZXMiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9ydW4tcHRlc3QKaW5kZXggZTRhOWMyYi4uZmFlODA3MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdApAQCAtMSw0ICsxLDcgQEAKICMhL2Jpbi9zaAogCitta2RpciAtcCAvbWRhZG0tdGVzdGluZy1kaXIKICMgbWFrZSB0aGUgdGVzdCBjb250aW51ZSB0byBleGVjdXRlIGV2ZW4gb25lIGZhaWwKLS4vdGVzdCAtLWtlZXAtZ29pbmcKK2Rpcj0uIC4vdGVzdCAtLWtlZXAtZ29pbmcgLS1kaXNhYmxlLWludGVncml0eQorCitybSAtcmYgL21kYWRtLXRlc3RpbmctZGlyLyoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMS5iYgppbmRleCA2NGY1MTllLi40MGM1MjczIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiCkBAIC03NSw3ICs3NSw4IEBACiBkb19pbnN0YWxsX3B0ZXN0KCkgewogCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKIAljcCAke1N9L3Rlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQlzZWQgLWUgJ3Mhc2xlZXAgMC4qIXNsZWVwIDEhZzsgcyEvdmFyL3RtcCEvIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlzZWQgLWUgJ3Mhc2xlZXAgMC4qIXNsZWVwIDEhZzsgcyEvdmFyL3RtcCEvbWRhZG0tdGVzdGluZy1kaXIhZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyEvdmFyL3RtcCEvbWRhZG0tdGVzdGluZy1kaXIhZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvKgogICAgICAgICBzZWQgLWkgLWUgJy9lY2hvIC1uZSAiJF9zY3JpcHQuLi4gIi9kJyBcCiAgICAgICAgICAgICAgICAtZSAncy9lY2hvICJzdWNjZWVkZWQiL2VjaG8gLWUgIlBBU1M6ICRfc2NyaXB0Ii9nJyBcCiAgICAgICAgICAgICAgICAtZSAnL3NhdmVfbG9nIGZhaWwvTjsgL19mYWlsPTEvaVxcdFx0XHRlY2hvIC1uZSAiRkFJTDogJF9zY3JpcHQiJyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDkxNDRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJtc210cCBpcyBhbiBTTVRQIGNsaWVudCIKLURFU0NSSVBUSU9OID0gIkEgc2VuZG1haWwgcmVwbGFjZW1lbnQgZm9yIHVzZSBpbiBNVEFzIGxpa2UgbXV0dCIKLUhPTUVQQUdFID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIkdQTHYzIgotREVQRU5EUyA9ICJ6bGliIGdudXRscyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS9tc210cC9kb3dubG9hZC8iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvJHtCUE59L3JlbGVhc2VzLyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZGZmNGE5OTkyZTFiNDdhYTU0NjhiOTc0NTUwMzA0ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjI1ZjE0NzQzMGM2NWJhODUyN2Y1MmM0ZmU1ZDRkMzM1NTJkM2MwZmI2ZDc5M2JhN2RmODE5YTNiMzA0MmUxIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNlY3JldCAtLXdpdGhvdXQtbGliZ3Nhc2wgLS13aXRob3V0LWxpYmlkbiIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic2VuZG1haWwiCi0jIC91c3IvbGliL3NlbmRtaWFsIGlzIHJlcXVpcmVkIGJ5IExTQiBjb3JlIHRlc3QKLUFMVEVSTkFUSVZFXyR7UE59X2xpbnV4c3RkYmFzZSA9ICJzZW5kbWFpbCB1c3ItbGliLXNlbmRtYWlsIgotQUxURVJOQVRJVkVfVEFSR0VUW3NlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2VuZG1haWxdID0gIiR7c2JpbmRpcn0vc2VuZG1haWwiCi1BTFRFUk5BVElWRV9UQVJHRVRbdXNyLWxpYi1zZW5kbWFpbF0gPSAiJHtiaW5kaXJ9L21zbXRwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Vzci1saWItc2VuZG1haWxdID0gIi91c3IvbGliL3NlbmRtYWlsIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTM1OWExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjguYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJtc210cCBpcyBhbiBTTVRQIGNsaWVudCIKK0RFU0NSSVBUSU9OID0gIkEgc2VuZG1haWwgcmVwbGFjZW1lbnQgZm9yIHVzZSBpbiBNVEFzIGxpa2UgbXV0dCIKK0hPTUVQQUdFID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkdQTHYzIgorREVQRU5EUyA9ICJ6bGliIGdudXRscyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS9tc210cC9kb3dubG9hZC8iCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvJHtCUE59L3JlbGVhc2VzLyR7QlB9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMTZlNDMyZDEyZTEyZGM1ZDczOTYwZTJiYzY3ZjBmYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlY2NiNTNlNDhmMDI1ZjdlNmY2MDIxMDMxNmRmNjFjZjYwOTdhNDkxNzI4MzQxYzFlMzc1ZmMxYWNjNjQ1OWU1IgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNlY3JldCAtLXdpdGhvdXQtbGliZ3Nhc2wgLS13aXRob3V0LWxpYmlkbiIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2VuZG1haWwiCisjIC91c3IvbGliL3NlbmRtaWFsIGlzIHJlcXVpcmVkIGJ5IExTQiBjb3JlIHRlc3QKK0FMVEVSTkFUSVZFXyR7UE59X2xpbnV4c3RkYmFzZSA9ICJzZW5kbWFpbCB1c3ItbGliLXNlbmRtYWlsIgorQUxURVJOQVRJVkVfVEFSR0VUW3NlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2VuZG1haWxdID0gIiR7c2JpbmRpcn0vc2VuZG1haWwiCitBTFRFUk5BVElWRV9UQVJHRVRbdXNyLWxpYi1zZW5kbWFpbF0gPSAiJHtiaW5kaXJ9L21zbXRwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Vzci1saWItc2VuZG1haWxdID0gIi91c3IvbGliL3NlbmRtYWlsIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9maXhzZXBidWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vZml4c2VwYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOWMzYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9maXhzZXBidWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZpeCB0aGUgYnVpbGQgZXJyb3Igd2hlbiBhIHNlcGFyYXRlIGJ1aWxkIGRpcmVjdG9yeSBpcyB1c2VkOgotCi1NYWtpbmcgaW5zdGFsbCBpbiB4dGVzdHNtYWtlWzFdOiBFbnRlcmluZyBkaXJlY3RvcnkgYC9tZWRpYS9idWlsZDEvcG9reS9idWlsZDEvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2xpYnBhbS8xLjEuNi1yMi9idWlsZC94dGVzdHMnL3Vzci9iaW4vaW5zdGFsbCAtYyAtZCAvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQxL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9saWJwYW0vMS4xLjYtcjIvaW1hZ2UvdXNyL3NoYXJlL0xpbnV4LVBBTS94dGVzdHNmb3IgZmlsZSBpbiBydW4teHRlc3RzLnNoIHRzdC1wYW1fZGlzcGF0Y2gxLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDIucGFtZCB0c3QtcGFtX2Rpc3BhdGNoMy5wYW1kIHRzdC1wYW1fZGlzcGF0Y2g0LnBhbWQgdHN0LXBhbV9kaXNwYXRjaDUucGFtZCB0c3QtcGFtX2NyYWNrbGliMS5wYW1kIHRzdC1wYW1fY3JhY2tsaWIyLnBhbWQgdHN0LXBhbV91bml4MS5wYW1kIHRzdC1wYW1fdW5peDIucGFtZCB0c3QtcGFtX3VuaXgzLnBhbWQgdHN0LXBhbV91bml4NC5wYW1kIHRzdC1wYW1fdW5peDEuc2ggdHN0LXBhbV91bml4Mi5zaCB0c3QtcGFtX3VuaXgzLnNoIHRzdC1wYW1fdW5peDQuc2ggYWNjZXNzLmNvbmYgdHN0LXBhbV9hY2Nlc3MxLnBhbWQgdHN0LXBhbV9hY2Nlc3MxLnNoIHRzdC1wYW1fYWNjZXNzMi5wYW1kIHRzdC1wYW1fYWNjZXNzMi5zaCB0c3QtcGFtX2FjY2VzczMucGFtZCB0c3QtcGFtX2FjY2VzczMuc2ggdHN0LXBhbV9hY2Nlc3M0LnBhbWQgdHN0LXBhbV9hY2Nlc3M0LnNoIGxpbWl0cy5jb25mIHRzdC1wYW1fbGltaXRzMS5wYW1kIHRzdC1wYW1fbGltaXRzMS5zaCB0c3QtcGFtX3N1Y2NlZWRfaWYxLnBhbWQgdHN0LXBhbV9zdWNjZWVkX2lmMS5zaCBncm91cC5jb25mIHRzdC1wYW1fZ3JvdXAxLnBhbWQgdHN0LXBhbV9ncm91cDEuc2ggdHN0LXBhbV9hdXRoZmFpbC5wYW1kIHRzdC1wYW1fYXV0aHN1Y2NlZWQucGFtZCB0c3QtcGFtX3N1YnN0YWNrMS5wYW1kIHRzdC1wYW1fc3Vic3RhY2sxYS5wYW1kIHRzdC1wYW1fc3Vic3RhY2sxLnNoIHRzdC1wYW1fc3Vic3RhY2syLnBhbWQgdHN0LXBhbV9zdWJzdGFjazJhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazIuc2ggdHN0LXBhbV9zdWJzdGFjazMucGFtZCB0c3QtcGFtX3N1YnN0YWNrM2EucGFtZCB0c3QtcGFtX3N1YnN0YWNrMy5zaCB0c3QtcGFtX3N1YnN0YWNrNC5wYW1kIHRzdC1wYW1fc3Vic3RhY2s0YS5wYW1kIHRzdC1wYW1fc3Vic3RhY2s0LnNoIHRzdC1wYW1fc3Vic3RhY2s1LnBhbWQgdHN0LXBhbV9zdWJzdGFjazVhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazUuc2ggdHN0LXBhbV9hc3NlbWJsZV9saW5lMS5wYW1kIHRzdC1wYW1fYXNzZW1ibGVfbGluZTEuc2ggdHN0LXBhbV9wd2hpc3RvcnkxLnBhbWQgdHN0LXBhbV9wd2hpc3RvcnkxLnNoIHRzdC1wYW1fdGltZTEucGFtZCB0aW1lLmNvbmYgOyBkbyBcL3Vzci9iaW4vaW5zdGFsbCAtYyAkZmlsZSAvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQxL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9saWJwYW0vMS4xLjYtcjIvaW1hZ2UvdXNyL3NoYXJlL0xpbnV4LVBBTS94dGVzdHMgOyBcCWRvbmUKLS91c3IvYmluL2luc3RhbGw6IGNhbm5vdCBzdGF0IGBydW4teHRlc3RzLnNoJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotL3Vzci9iaW4vaW5zdGFsbDogY2Fubm90IHN0YXQgYHRzdC1wYW1fZGlzcGF0Y2gxLnBhbWQnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0vdXNyL2Jpbi9pbnN0YWxsOiBjYW5ub3Qgc3RhdCBgdHN0LXBhbV9kaXNwYXRjaDIucGFtZCc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVJQIDIwMTMvMDMvMjEKLQotSW5kZXg6IExpbnV4LVBBTS0xLjEuNi94dGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBMaW51eC1QQU0tMS4xLjYub3JpZy94dGVzdHMvTWFrZWZpbGUuYW0JMjAxMy0wMy0wOCAxMjoyNjozMC4zNjAyNjYwMDAgKzAwMDAKLSsrKyBMaW51eC1QQU0tMS4xLjYveHRlc3RzL01ha2VmaWxlLmFtCTIwMTMtMDMtMjEgMTE6Mzk6NTguNTU3MTY2NjUwICswMDAwCi1AQCAtNTksNyArNTksNyBAQAotIGluc3RhbGxfeHRlc3RzOgotIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikkKHBrZ2RhdGFkaXIpL3h0ZXN0cwotIAlmb3IgZmlsZSBpbiAkKEVYVFJBX0RJU1QpIDsgZG8gXAotLQkJJChJTlNUQUxMKSAkJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXAotKwkJJChJTlNUQUxMKSAkKHNyY2RpcikvJCRmaWxlICQoREVTVERJUikkKHBrZ2RhdGFkaXIpL3h0ZXN0cyA7IFwKLSAJZG9uZQotIAlmb3IgZmlsZSBpbiAkKFhURVNUUyk7IGRvIFwKLSAJCSQoSU5TVEFMTCkgLmxpYnMvJCRmaWxlICQoREVTVERJUikkKHBrZ2RhdGFkaXIpL3h0ZXN0cyA7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaAppbmRleCA3ZWRmNjZmLi5lYTE0NTg5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCkBAIC0yOCw3ICsyOCw3IEBACiAraW5zdGFsbF94dGVzdHM6CiArCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzCiArCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCkgOyBkbyBcCi0rCQkkKElOU1RBTEwpICQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCisrCQkkKElOU1RBTEwpICQoc3JjZGlyKS8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXAogKwlkb25lCiArCWZvciBmaWxlIGluICQoWFRFU1RTKTsgZG8gXAogKwkJJChJTlNUQUxMKSAubGlicy8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjEuYmIKaW5kZXggMTE5NDkzMy4uYmM3MmFmZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4xLmJiCkBAIC0xLDMgKzEsNCBAQAorRElTQUJMRV9TVEFUSUMgPSAiIgogU1VNTUFSWSA9ICJMaW51eC1QQU0gKFBsdWdnYWJsZSBBdXRoZW50aWNhdGlvbiBNb2R1bGVzKSIKIERFU0NSSVBUSU9OID0gIkxpbnV4LVBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE1vZHVsZXMgZm9yIExpbnV4KSwgYSBmbGV4aWJsZSBtZWNoYW5pc20gZm9yIGF1dGhlbnRpY2F0aW5nIHVzZXJzIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2xpbnV4LXBhbS8iCkBAIC0yMCw3ICsyMSw2IEBACiAgICAgICAgICAgIGZpbGU6Ly9wYW0uZC9jb21tb24tc2Vzc2lvbi1ub25pbnRlcmFjdGl2ZSBcCiAgICAgICAgICAgIGZpbGU6Ly9wYW0uZC9vdGhlciBcCiAgICAgICAgICAgIGZpbGU6Ly9saWJwYW0teHRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeHNlcGJ1aWxkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BhbS1zZWN1cml0eS1hYnN0cmFjdC1zZWN1cmV0dHktaGFuZGxpbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcGFtLXVuaXgtbnVsbG9rLXNlY3VyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jcnlwdF9jb25maWd1cmUucGF0Y2ggXApAQCAtMzUsOCArMzUsNyBAQAogCiBERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4IGZsZXgtbmF0aXZlIGNyYWNrbGliIGxpYnhtbDItbmF0aXZlIHZpcnR1YWwvY3J5cHQiCiAKLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZGItdW5pcXVlbmFtZT1fcGFtIFwKLSAgICAgICAgICAgICAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9zZWN1cml0eSBcCitFWFRSQV9PRUNPTkYgPSAiLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vc2VjdXJpdHkgXAogICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmlzIFwKICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmVnZW5lcmF0ZS1kb2N1IFwKQEAgLTQ4LDcgKzQ3LDkgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKIAorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0tZW5hYmxlLWF1ZGl0LC0tZGlzYWJsZS1hdWRpdCxhdWRpdCwiCitQQUNLQUdFQ09ORklHW3VzZXJkYl0gPSAiLS1lbmFibGUtZGI9ZGIsLS1lbmFibGUtZGI9bm8sZGIsIgogCiBQQUNLQUdFUyArPSAiJHtQTn0tcnVudGltZSAke1BOfS14dGVzdHMiCiBGSUxFU18ke1BOfSA9ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWluLXBsYXRmb3JtX2RlZnMuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLUluY2x1ZGUtZmNudGwuaC1pbi1wbGF0Zm9ybV9kZWZzLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNzAxMjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWluLXBsYXRmb3JtX2RlZnMuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gYTM4NzcxMTVmMTk1Njk0OTA5NmQ3N2FjYTVhNzAzYTQ3ZWQ2ODM5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBTdW4sIDMgTWF5IDIwMTUgMTA6MzM6MzEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlicGFydGVkL2ZzL3hmcy9wbGF0Zm9ybV9kZWZzLmg6IEluY2x1ZGUgPGZjbnRsLmg+IGZvcgotIGxvZmZfdAotCi1UaGlzIGlzIG5lZWRlZCBmb3IgY29tcGlsYXRpb24gd2l0aCBtdXNsIGxpYmMKLQotU3VnZ2VzdGVkLWJ5OiBUcmF2aXMgVGlsbGV5IDx0dGlsbGV5QGdtYWlsLmNvbT4KLQotU2lnbmVkLW9mZi1ieTogQnJpYW4gQy4gTGFuZSA8YmNsQHJlZGhhdC5jb20+Ci0tLS0KLSBsaWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbGlicGFydGVkL2ZzL3hmcy9wbGF0Zm9ybV9kZWZzLmggYi9saWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaAotaW5kZXggMmI1NTc1Mi4uYTZlYzhmYiAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCi0rKysgYi9saWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaAotQEAgLTM4LDYgKzM4LDcgQEAKLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoCmluZGV4IDQyOGIxNGUuLjgyOWMwYzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaApAQCAtMSwxNyArMSwxOCBAQAotRnJvbSA2ZTgyYWY1NDcxNDM5MmRjZGY3NGE4YWVkYWFlN2RlN2QwYWYxMDgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZGJlZmQ4MGQ3NGMzYmFhYWUzMjgzMzI0NThkYjQ0N2UxNjY2MjQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE2OjM3OjI0ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIE1vdmUgcHl0aG9uIGhlbHBlciBzY3JpcHRzICh1c2VkIG9ubHkgaW4gdGVzdHMpIHRvIFB5dGhvbiAzCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIHRlc3RzL2dwdC1oZWFkZXItbW92ZSB8IDIgKy0KLSB0ZXN0cy9tc2Rvcy1vdmVybGFwICAgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyB0ZXN0cy9tc2Rvcy1vdmVybGFwICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90ZXN0cy9ncHQtaGVhZGVyLW1vdmUgYi90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKLWluZGV4IDA1Y2RjNjUuLjNjYmNiN2UgMTAwNzU1CitpbmRleCAzZGRhNWNiLi5hMmI5NTA4IDEwMDc1NQogLS0tIGEvdGVzdHMvZ3B0LWhlYWRlci1tb3ZlCiArKysgYi90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKIEBAIC0xLDQgKzEsNCBAQApAQCAtMjEsNyArMjIsNyBAQAogICMgb3BlbiBpbWcgZmlsZSwgc3VidHJhY3QgMzMgZnJvbSBhbHRsYmEgYWRkcmVzcywgYW5kIG1vdmUgdGhlIGxhc3QgMzMgc2VjdG9ycwogICMgYmFjayBieSAzMyBzZWN0b3JzCiBkaWZmIC0tZ2l0IGEvdGVzdHMvbXNkb3Mtb3ZlcmxhcCBiL3Rlc3RzL21zZG9zLW92ZXJsYXAKLWluZGV4IDViZGRmYjAuLjNkZTdkMmUgMTAwNzU1CitpbmRleCBkNmFlOGQ2Li4yYzY3NDdiIDEwMDc1NQogLS0tIGEvdGVzdHMvbXNkb3Mtb3ZlcmxhcAogKysrIGIvdGVzdHMvbXNkb3Mtb3ZlcmxhcAogQEAgLTEsNCArMSw0IEBACkBAIC0zMCwxNSArMzEsMyBAQAogICIiIgogICAgICBXcml0ZSBhbiBvdmVybGFwcGluZyBwYXJ0aXRpb24gdG8gYSBtc2RvcyBkaXNrCiAgCi1AQCAtMTQsNyArMTQsNyBAQCBCQURfRU5UUlkgPSAoMHg3MiwgMHhmNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSBPRkZTRVQgPSAweDFiOAotIAotIGlmIGxlbihzeXMuYXJndikgPCAyOgotLSAgICBwcmludCAiJXM6IDxpbWFnZSBvciBkZXZpY2U+IgotKyAgICBwcmludCgiJXM6IDxpbWFnZSBvciBkZXZpY2U+IikKLSAgICAgc3lzLmV4aXQoMSkKLSAKLSBkYXRhID0gIiIuam9pbihjaHIoYykgZm9yIGMgaW4gQkFEX0VOVFJZKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmExYTRiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCi0KLWxvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKLXdoaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KLXByb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bwotY29yZXV0aWxzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliL2dudWxpYi5tayB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9nbnVsaWIubWsgYi9saWIvZ251bGliLm1rCi1pbmRleCBlMWQ3NGRiLi5jMGU5MmRkIDEwMDY0NAotLS0tIGEvbGliL2dudWxpYi5tawotKysrIGIvbGliL2dudWxpYi5tawotQEAgLTE4ODIsNyArMTg4Miw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAotIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKLSAJICAgIGRhcndpbls1Nl0qKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKLSsJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAotIAkgICAgKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saWJwYXJ0ZWQtVXNlLXJlYWQtb25seS13aGVuLXByb2JpbmctZGV2aWNlcy1vbi1saW51LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTEwNzYyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotRnJvbSA4NDMyMjVhYTlkNTA3N2JlYmRiMDhiYmY5Njk5YzAyYWVjMGI4M2ViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkJyaWFuIEMuIExhbmUiIDxiY2xAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjYgU2VwIDIwMTcgMDg6MDQ6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlicGFydGVkOiBVc2UgcmVhZCBvbmx5IHdoZW4gcHJvYmluZyBkZXZpY2VzIG9uIGxpbnV4Ci0KLSAoIzEyNDUxNDQpCi0KLVdoZW4gYSBkZXZpY2UgaXMgb3BlbmVkIGZvciBSVyBjbG9zaW5nIGl0IGNhbiB0cmlnZ2VyIG90aGVyIGFjdGlvbnMsCi1saWtlIHVkZXYgc2Nhbm5pbmcgaXQgZm9yIHBhcnRpdGlvbiBjaGFuZ2VzLiBVc2UgcmVhZCBvbmx5IGZvciB0aGUKLWluaXRfKiBtZXRob2RzIGFuZCBSVyBmb3IgYWN0dWFsIGNoYW5nZXMgdG8gdGhlIGRldmljZS4KLQotVGhpcyBhZGRzIF9kZXZpY2Vfb3BlbiB3aGljaCB0YWtlcyBtb2RlIGZsYWdzIGFzIGFuIGFyZ3VtZW50IGFuZCB0dXJucwotbGludXhfb3BlbiBpbnRvIGEgd3JhcHBlciBmb3IgaXQgd2l0aCBSV19NT0RFLgotCi1fZGV2aWNlX29wZW5fcm8gaXMgYWRkZWQgdG8gb3BlbiB0aGUgZGV2aWNlIHdpdGggUkRfTU9ERSBhbmQgaW5jcmVtZW50Ci10aGUgb3Blbl9jb3VudGVyLiBUaGlzIGlzIHVzZWQgaW4gdGhlIGluaXRfKiBmdW5jdGlvbnMuCi0KLV9kZXZpY2VfY2xvc2UgaXMgYSB3cmFwcGVyIGFyb3VuZCBsaW51eF9jbG9zZSB0aGF0IGRlY3JlbWVudHMgdGhlCi1vcGVuX2NvdW50ZXIgYW5kIGlzIHVzZWQgaW4gdGhlIGluaXRfKiBmdW5jdGlvbnMuCi0KLUFsbCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBzZWxmLWNvbnRhaW5lZCB3aXRoIG5vIGV4dGVybmFsIEFQSSBjaGFuZ2VzLgotVGhlIG9ubHkgdmlzaWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IgaXMgdGhhdCB3aGVuIGEgbmV3IFBlZERldmljZSBpcwotY3JlYXRlZCB0aGUgZGV2aWNlIGlzIG9wZW5lZCBpbiBST19NT0RFIGluc3RlYWQgb2YgUldfTU9ERS4KLQotUmVzb2x2ZXM6IHJoYnojMTI0NTE0NAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGlicGFydGVkL2FyY2gvbGludXguYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlicGFydGVkL2FyY2gvbGludXguYyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLWluZGV4IDdmMTJmNTguLjRkZGVhNTggMTAwNjQ0Ci0tLS0gYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCi0rKysgYi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCi1AQCAtMjkyLDcgKzI5Miw5IEBAIHN0cnVjdCBibGtkZXZfaW9jdGxfcGFyYW0gewotIHN0YXRpYyBjaGFyKiBfZGV2aWNlX2dldF9wYXJ0X3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2LCBpbnQgbnVtKTsKLSBzdGF0aWMgaW50IF9wYXJ0aXRpb25faXNfbW91bnRlZF9ieV9wYXRoIChjb25zdCBjaGFyKiBwYXRoKTsKLSBzdGF0aWMgdW5zaWduZWQgaW50IF9kZXZpY2VfZ2V0X3BhcnRpdGlvbl9yYW5nZShQZWREZXZpY2UgY29uc3QqIGRldik7Ci0tCi0rc3RhdGljIGludCBfZGV2aWNlX29wZW4gKFBlZERldmljZSogZGV2LCBpbnQgZmxhZ3MpOwotK3N0YXRpYyBpbnQgX2RldmljZV9vcGVuX3JvIChQZWREZXZpY2UqIGRldik7Ci0rc3RhdGljIGludCBfZGV2aWNlX2Nsb3NlIChQZWREZXZpY2UqIGRldik7Ci0gCi0gc3RhdGljIGludAotIF9yZWFkX2ZkIChpbnQgZmQsIGNoYXIgKipidWYpCi1AQCAtOTExLDcgKzkxMyw3IEBAIGluaXRfaWRlIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0tICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKLSsgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotICAgICAgICAgaWYgKGlvY3RsIChhcmNoX3NwZWNpZmljLT5mZCwgSERJT19HRVRfSURFTlRJVFksICZoZGkpKSB7Ci1AQCAtOTgwLDExICs5ODIsMTEgQEAgaW5pdF9pZGUgKFBlZERldmljZSogZGV2KQotICAgICAgICAgaWYgKCFfZGV2aWNlX3Byb2JlX2dlb21ldHJ5IChkZXYpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKLSAKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotICAgICAgICAgcmV0dXJuIDE7Ci0gCi0gZXJyb3JfY2xvc2VfZGV2OgotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gZXJyb3I6Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci1AQCAtMTExNyw3ICsxMTE5LDcgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIGNoYXIqIHZlbmRvcjsKLSAgICAgICAgIGNoYXIqIHByb2R1Y3Q7Ci0gCi0tICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKLSsgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotICAgICAgICAgaWYgKGlvY3RsIChhcmNoX3NwZWNpZmljLT5mZCwgU0NTSV9JT0NUTF9HRVRfSURMVU4sICZpZGx1bikgPCAwKSB7Ci1AQCAtMTEzMSw3ICsxMTMzLDcgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKLSAgICAgICAgICAgICAgICAgaWYgKCFfZGV2aWNlX3Byb2JlX2dlb21ldHJ5IChkZXYpKQotICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotLSAgICAgICAgICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgIH0KLSAKLUBAIC0xMTUzLDExICsxMTU1LDExIEBAIGluaXRfc2NzaSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotIAotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICByZXR1cm4gMTsKLSAKLSBlcnJvcl9jbG9zZV9kZXY6Ci0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotIH0KLUBAIC0xMTY5LDcgKzExNzEsNyBAQCBpbml0X2ZpbGUgKFBlZERldmljZSogZGV2KQotIAotICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBkZXYtPnNlY3Rvcl9zaXplID0gUEVEX1NFQ1RPUl9TSVpFX0RFRkFVTFQ7Ci1AQCAtMTE5Niw3ICsxMTk4LDcgQEAgaW5pdF9maWxlIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAKLSAgICAgICAgIGRldi0+Ymlvc19nZW9tLmN5bGluZGVycyA9IGRldi0+bGVuZ3RoIC8gNCAvIDMyOwotICAgICAgICAgZGV2LT5iaW9zX2dlb20uaGVhZHMgPSA0OwotQEAgLTEyMDcsNyArMTIwOSw3IEBAIGluaXRfZmlsZSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICByZXR1cm4gMTsKLSAKLSBlcnJvcl9jbG9zZV9kZXY6Ci0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotIH0KLUBAIC0xMjIzLDcgKzEyMjUsNyBAQCBpbml0X2Rhc2QgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQotICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBMaW51eFNwZWNpZmljKiBhcmNoX3NwZWNpZmljID0gTElOVVhfU1BFQ0lGSUMgKGRldik7Ci1AQCAtMTI2MywxMSArMTI2NSwxMSBAQCBpbml0X2Rhc2QgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQotIAotICAgICAgICAgZGV2LT5tb2RlbCA9IHN0cmR1cCAobW9kZWxfbmFtZSk7Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTEyODIsNyArMTI4NCw3IEBAIGluaXRfZ2VuZXJpYyAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCi0gICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCi0rICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLSAgICAgICAgIHBlZF9leGNlcHRpb25fZmV0Y2hfYWxsICgpOwotQEAgLTEzMzAsMTEgKzEzMzIsMTEgQEAgaW5pdF9nZW5lcmljIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKLSAKLSAgICAgICAgIGRldi0+bW9kZWwgPSBzdHJkdXAgKG1vZGVsX25hbWUpOwotIAotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICByZXR1cm4gMTsKLSAKLSBlcnJvcl9jbG9zZV9kZXY6Ci0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotIH0KLUBAIC0xNjIxLDEyICsxNjIzLDI3IEBAIHJldHJ5OgotIH0KLSAKLSBzdGF0aWMgaW50Ci0rX2RldmljZV9vcGVuX3JvIChQZWREZXZpY2UqIGRldikKLSt7Ci0rICAgIGludCByYyA9IF9kZXZpY2Vfb3BlbiAoZGV2LCBSRF9NT0RFKTsKLSsgICAgaWYgKHJjKQotKyAgICAgICAgZGV2LT5vcGVuX2NvdW50Kys7Ci0rICAgIHJldHVybiByYzsKLSt9Ci0rCi0rc3RhdGljIGludAotIGxpbnV4X29wZW4gKFBlZERldmljZSogZGV2KQotIHsKLSsgICAgcmV0dXJuIF9kZXZpY2Vfb3BlbiAoZGV2LCBSV19NT0RFKTsKLSt9Ci0rCi0rc3RhdGljIGludAotK19kZXZpY2Vfb3BlbiAoUGVkRGV2aWNlKiBkZXYsIGludCBmbGFncykKLSt7Ci0gICAgICAgICBMaW51eFNwZWNpZmljKiAgYXJjaF9zcGVjaWZpYyA9IExJTlVYX1NQRUNJRklDIChkZXYpOwotIAotIHJldHJ5OgotLSAgICAgICAgYXJjaF9zcGVjaWZpYy0+ZmQgPSBvcGVuIChkZXYtPnBhdGgsIFJXX01PREUpOwotKyAgICAgICAgYXJjaF9zcGVjaWZpYy0+ZmQgPSBvcGVuIChkZXYtPnBhdGgsIGZsYWdzKTsKLSAKLSAgICAgICAgIGlmIChhcmNoX3NwZWNpZmljLT5mZCA9PSAtMSkgewotICAgICAgICAgICAgICAgICBjaGFyKiAgIHJ3X2Vycm9yX21zZyA9IHN0cmVycm9yIChlcnJubyk7Ci1AQCAtMTY5NSw2ICsxNzEyLDE1IEBAIGxpbnV4X3JlZnJlc2hfY2xvc2UgKFBlZERldmljZSogZGV2KQotICAgICAgICAgcmV0dXJuIDE7Ci0gfQotIAotK3N0YXRpYyBpbnQKLStfZGV2aWNlX2Nsb3NlIChQZWREZXZpY2UqIGRldikKLSt7Ci0rICAgIGludCByYyA9IGxpbnV4X2Nsb3NlIChkZXYpOwotKyAgICBpZiAoZGV2LT5vcGVuX2NvdW50ID4gMCkKLSsgICAgICAgIGRldi0+b3Blbl9jb3VudC0tOwotKyAgICByZXR1cm4gcmM7Ci0rfQotKwotICNpZiBTSVpFT0ZfT0ZGX1QgPCA4Ci0gCi0gc3RhdGljIF9zeXNjYWxsNShpbnQsX2xsc2VlaywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1mcy1hZGQtc291cmNlZGlyLWxpYi10by1pbmNsdWRlLXBhdGhzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRjMmFiMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1mcy1hZGQtc291cmNlZGlyLWxpYi10by1pbmNsdWRlLXBhdGhzLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gZDYwYThhODZmNjU5MzczOGI1MzI0Y2NkOGZlM2U2ZDg0YTFmZTdiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBEZWMgMjAxOSAxNDoxODozNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQvZnM6IGFkZCAkc291cmNlZGlyL2xpYiB0byBpbmNsdWRlIHBhdGhzCisKK090aGVyd2lzZSwgZ2V0b3B0LXBmeC1jb3JlLmggd29uJ3QgYmUgZm91bmQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBsaWJwYXJ0ZWQvZnMvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJwYXJ0ZWQvZnMvTWFrZWZpbGUuYW0gYi9saWJwYXJ0ZWQvZnMvTWFrZWZpbGUuYW0KK2luZGV4IDI4NmJmZjYuLjY1ZjQ1ZDMgMTAwNjQ0CistLS0gYS9saWJwYXJ0ZWQvZnMvTWFrZWZpbGUuYW0KKysrKyBiL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbQorQEAgLTMsNyArMyw3IEBACisgIworICMgVGhpcyBmaWxlIG1heSBiZSBtb2RpZmllZCBhbmQvb3IgZGlzdHJpYnV0ZWQgd2l0aG91dCByZXN0cmljdGlvbi4KKyAKKy1wYXJ0ZWRpbmNsdWRlZGlyID0gLUkkKHRvcF9idWlsZGRpcikvaW5jbHVkZSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZQorK3BhcnRlZGluY2x1ZGVkaXIgPSAtSSQodG9wX2J1aWxkZGlyKS9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9saWIKKyAKKyBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGludXgtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1hY3JvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGludXgtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1hY3JvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTI2MmU1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpbnV4LUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1tYWNyby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMGI3MmI4ZWI0MTQzOGI2MmVlYjllMzU0OGIwYjhmMzA5NGE3ODY4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJSaWNoYXJkIFcuTS4gSm9uZXMiIDxyam9uZXNAcmVkaGF0LmNvbT4KLURhdGU6IFNhdCwgMjQgTWFyIDIwMTggMTc6Mzc6MDIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGludXg6IEluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZm9yIG1ham9yKCkgbWFjcm8uCi0KLVNpbmNlIGdsaWJjIDIuMjcgdGhpcyBoZWFkZXIgaXMgcmVxdWlyZWQuCi0tLS0KLSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotaW5kZXggMGYxODkwNC4uYTE1ODU0ZiAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLSsrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLUBAIC00MSw2ICs0MSw3IEBACi0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+ICAgICAgICAvKiBmb3IgdW5hbWUoKSAqLwotICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSAjaW5jbHVkZSA8bGliZGV2bWFwcGVyLmg+Ci0gI2VuZGlmCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDItdGVzdHMtdXNlLXNraXBfLXJhdGhlci10aGFuLXNraXBfdGVzdF8td2hpY2gtaXMtdW5kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTI0YWRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDItdGVzdHMtdXNlLXNraXBfLXJhdGhlci10aGFuLXNraXBfdGVzdF8td2hpY2gtaXMtdW5kZS5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIDlmODQ0NDg0Y2VkYjM5ZTMwMWIwMTZlOWRhNzg1MmMxYTBmYjZlZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgRGVjIDIwMTkgMTY6Mjc6NDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IHVzZSBza2lwXyByYXRoZXIgdGhhbiBza2lwX3Rlc3RfICh3aGljaCBpcyB1bmRlZmluZWQpCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy90NjAwMS1wc2VwLnNoICAgICAgICAgICAgICAgfCAyICstCisgdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoIHwgMiArLQorIHRlc3RzL3Q2MDA1LWRtLXV1aWQuc2ggICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy90NjAwNi1kbS01MTJiLXNlY3RvcnMuc2ggICAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy90NjAwMS1wc2VwLnNoIGIvdGVzdHMvdDYwMDEtcHNlcC5zaAoraW5kZXggZTM1MGJkMi4uNjcwMTRhMCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKKysrKyBiL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKK0BAIC0yMSw3ICsyMSw3IEBACisgcmVxdWlyZV9yb290XworIHJlcXVpcmVfdWRldmFkbV9zZXR0bGVfCisgCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgIyBEZXZpY2UgbWFwcyBuYW1lcyAtIHNob3VsZCBiZSByYW5kb20gdG8gbm90IGNvbmZsaWN0IHdpdGggZXhpc3Rpbmcgb25lcyBvbgorICMgdGhlIHN5c3RlbQorZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDA0LWRtLW1hbnktcGFydGl0aW9ucy5zaCBiL3Rlc3RzL3Q2MDA0LWRtLW1hbnktcGFydGl0aW9ucy5zaAoraW5kZXggYjRiZTk3NS4uNzIxNGY2MCAxMDA3NTUKKy0tLSBhL3Rlc3RzL3Q2MDA0LWRtLW1hbnktcGFydGl0aW9ucy5zaAorKysrIGIvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoCitAQCAtMjEsNyArMjEsNyBAQAorIAorIHJlcXVpcmVfcm9vdF8KKyByZXF1aXJlX3VkZXZhZG1fc2V0dGxlXworLShkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwX3Rlc3RfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKysoZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorIAorIHNzPSRzZWN0b3Jfc2l6ZV8KKyBucz0zMDAKK2RpZmYgLS1naXQgYS90ZXN0cy90NjAwNS1kbS11dWlkLnNoIGIvdGVzdHMvdDYwMDUtZG0tdXVpZC5zaAoraW5kZXggNDI2Njc0Ny4uNDc5MGE4YiAxMDA3NTUKKy0tLSBhL3Rlc3RzL3Q2MDA1LWRtLXV1aWQuc2gKKysrKyBiL3Rlc3RzL3Q2MDA1LWRtLXV1aWQuc2gKK0BAIC0yMSw3ICsyMSw3IEBACisgCisgcmVxdWlyZV9yb290XworIHJlcXVpcmVfdWRldmFkbV9zZXR0bGVfCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgc3M9JHNlY3Rvcl9zaXplXworIG5zPTMwMAorZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDA2LWRtLTUxMmItc2VjdG9ycy5zaCBiL3Rlc3RzL3Q2MDA2LWRtLTUxMmItc2VjdG9ycy5zaAoraW5kZXggYmYzMjEzNS4uYjY3OWFkYiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Q2MDA2LWRtLTUxMmItc2VjdG9ycy5zaAorKysrIGIvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoCitAQCAtMjUsNyArMjUsNyBAQCByZXF1aXJlX3Njc2lfZGVidWdfbW9kdWxlXworIGdyZXAgJ14jZGVmaW5lIFVTRV9CTEtJRCAxJyAiJENPTkZJR19IRUFERVIiID4gL2Rldi9udWxsIHx8CisgICBza2lwXyAndGhpcyBzeXN0ZW0gbGFja3MgYSBuZXctZW5vdWdoIGxpYmJsa2lkJworIAorLShkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwX3Rlc3RfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKysoZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorIAorICMgRGV2aWNlIG1hcHMgbmFtZXMgLSBzaG91bGQgYmUgcmFuZG9tIHRvIG5vdCBjb25mbGljdCB3aXRoIGV4aXN0aW5nIG9uZXMgb24KKyAjIHRoZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9NYWtlZmlsZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU5MGJlMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAotYW1fX3R0eV9jb2xvcnNfZHVtbXkgPSBcCi0gIG1nbj0gcmVkPSBncm49IGxnbj0gYmx1PSBicmc9IHN0ZD07IFwKLSAgYW1fX2NvbG9yX3Rlc3RzPW5vCi0KLWFtX190dHlfY29sb3JzID0gXAotJChhbV9fdHR5X2NvbG9yc19kdW1teSk7IFwKLXRlc3QgIlgkKEFNX0NPTE9SX1RFU1RTKSIgIT0gWG5vIFwKLSYmIHRlc3QgIlgkJFRFUk0iICE9IFhkdW1iIFwKLSYmIHsgdGVzdCAiWCQoQU1fQ09MT1JfVEVTVFMpIiA9IFhhbHdheXMgfHwgdGVzdCAtdCAxIDI+L2Rldi9udWxsOyB9IFwKLSYmIHsgXAotICBhbV9fY29sb3JfdGVzdHM9eWVzOyBcCi0gIHJlZD0nG1swOzMxbSc7IFwKLSAgZ3JuPScbWzA7MzJtJzsgXAotICBsZ249JxtbMTszMm0nOyBcCi0gIGJsdT0nG1sxOzM0bSc7IFwKLSAgbWduPScbWzA7MzVtJzsgXAotICBicmc9JxtbMW0nOyBcCi0gIHN0ZD0nG1ttJzsgXAotfQotCi1hbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKLWFtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCi0gICAgJChzcmNkaXIpLyopIGY9YGVjaG8gIiQkcCIgfCBzZWQgInN8XiQkc3JjZGlyc3RyaXAvfHwiYDs7IFwKLSAgICAqKSBmPSQkcDs7IFwKLSAgZXNhYzsKLWFtX19yc3RfdGl0bGUgPSB7IHNlZCAncy8uKi8gICAmICAgLztoO3MvLi89L2c7cDt4O3MvICokJC8vO3A7ZycgJiYgZWNobzsgfQotYW1fX3JzdF9zZWN0aW9uID0geyBzZWQgJ3A7cy8uLz0vZzsnICYmIGVjaG87IH0KLWFtX19zaF9lX3NldHVwID0gY2FzZSAkJC0gaW4gKmUqKSBzZXQgK2U7OyBlc2FjCi0KLWFtX19jb21tb25fZHJpdmVyX2ZsYWdzID0gXAotICAtLWNvbG9yLXRlc3RzICIkJGFtX19jb2xvcl90ZXN0cyIgXAotICAtLWVuYWJsZS1oYXJkLWVycm9ycyAiJCRhbV9fZW5hYmxlX2hhcmRfZXJyb3JzIiBcCi0gIC0tZXhwZWN0LWZhaWx1cmUgIiQkYW1fX2V4cGVjdF9mYWlsdXJlIgotYW1fX2NoZWNrX3ByZSA9IFwKLSQoYW1fX3NoX2Vfc2V0dXApOwkJCQkJXAotJChhbV9fdnBhdGhfYWRqX3NldHVwKSAkKGFtX192cGF0aF9hZGopCQkJXAotJChhbV9fdHR5X2NvbG9ycyk7CQkJCQlcCi1zcmNkaXI9JChzcmNkaXIpOyBleHBvcnQgc3JjZGlyOwkJCVwKLWFtX19vZGlyPWBlY2hvICIuLyRAIiB8IHNlZCAnc3wvW14vXSokJHx8J2A7CQlcCi10ZXN0ICJ4JCRhbV9fb2RpciIgPSB4LiB8fCAkKE1LRElSX1ApICIkJGFtX19vZGlyIiB8fCBleGl0ICQkPzsJXAotaWYgdGVzdCAtZiAiLi8kJGYiOyB0aGVuIGRpcj0uLzsJCQlcCi1lbGlmIHRlc3QgLWYgIiQkZiI7IHRoZW4gZGlyPTsJCQkJXAotZWxzZSBkaXI9IiQoc3JjZGlyKS8iOyBmaTsJCQkJXAotdHN0PSQkZGlyJCRmOyBsb2c9JyRAJzsgCQkJCVwKLWlmIHRlc3QgLW4gJyQoRElTQUJMRV9IQVJEX0VSUk9SUyknOyB0aGVuCQlcCi0gIGFtX19lbmFibGVfaGFyZF9lcnJvcnM9bm87IAkJCQlcCi1lbHNlCQkJCQkJCVwKLSAgYW1fX2VuYWJsZV9oYXJkX2Vycm9ycz15ZXM7IAkJCQlcCi1maTsgCQkJCQkJCVwKLSQoQU1fVEVTVFNfRU5WSVJPTk1FTlQpICQoVEVTVFNfRU5WSVJPTk1FTlQpCi0KLWFtX19zZXRfVEVTVFNfYmFzZXMgPSBcCi0gIGJhc2VzPSckKFRFU1RfTE9HUyknOyBcCi0gIGJhc2VzPWBmb3IgaSBpbiAkJGJhc2VzOyBkbyBlY2hvICQkaTsgZG9uZSB8IHNlZCAncy9cLmxvZyQkLy8nYDsgXAotICBiYXNlcz1gZWNobyAkJGJhc2VzYAotCi1SRUNIRUNLX0xPR1MgPSAkKFRFU1RfTE9HUykKLVRFU1RfU1VJVEVfTE9HID0gdGVzdC1zdWl0ZS5sb2cKLWFtX190ZXN0X2xvZ3MxID0gJChURVNUUzo9LmxvZykKLWFtX190ZXN0X2xvZ3MyID0gJChhbV9fdGVzdF9sb2dzMToubG9nPS5sb2cpCi1URVNUX0xPR1MgPSAkKGFtX190ZXN0X2xvZ3MyOi5zaC5sb2c9LmxvZykKLVNIX0xPR19EUklWRVIgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC90ZXN0LWRyaXZlcgotU0hfTE9HX0NPTVBJTEUgPSAkKFNIX0xPR19DT01QSUxFUikKLQotYW1fX3NldF9iID0gXAotICBjYXNlICckQCcgaW4gXAotICAgICovKikgXAotICAgICAgY2FzZSAnJConIGluIFwKLSAgICAgICAgKi8qKSBiPSckKic7OyBcCi0gICAgICAgICAgKikgYj1gZWNobyAnJEAnIHwgc2VkICdzL1wubG9nJCQvLydgOyBcCi0gICAgICAgZXNhYzs7IFwKLSAgICAqKSBcCi0gICAgICBiPSckKic7OyBcCi0gIGVzYWMKLQotTUtESVJfUCA9IC9iaW4vbWtkaXIgLXAKLVNIRUxMID0gL2Jpbi9iYXNoCi1WRVJTSU9OID0gMy4xCi1QQUNLQUdFX1NUUklORyA9IEdOVSBwYXJ0ZWQgMy4xCi1QQUNLQUdFX0JVR1JFUE9SVCA9IGJ1Zy1wYXJ0ZWRAZ251Lm9yZwotYWJzX3NyY2RpciA9ICQoUFdEKQotYWJzX3RvcF9idWlsZGRpciA9ICQoUFdEKS8uLgotYWJzX3RvcF9zcmNkaXIgPSAkKFBXRCkvLi4KLXNyY2RpciA9IC4KLXRvcF9zcmNkaXIgPSAuLgotc3ViZGlyID0gdGVzdHMKLVNIX0xPR19DT01QSUxFUiA9ICQoU0hFTEwpCi0KLVRFU1RTID0gXAotICBoZWxwLXZlcnNpb24uc2ggXAotICB0MDAwMC1iYXNpYy5zaCBcCi0gIHQwMDAxLXRpbnkuc2ggXAotICB0MDAxMC1zY3JpcHQtbm8tY3RybC1jaGFycy5zaCBcCi0gIHQwMTAwLXByaW50LnNoIFwKLSAgdDAxMDEtcHJpbnQtZW1wdHkuc2ggXAotICB0MDIwMC1ncHQuc2ggXAotICB0MDIwMS1ncHQuc2ggXAotICB0MDIwMi1ncHQtcG1ici5zaCBcCi0gIHQwMjAzLWdwdC10aW55LWRldmljZS1hYm9ydC5zaCBcCi0gIHQwMjAzLWdwdC1zaG9ydGVuZWQtZGV2aWNlLXByaW1hcnktdmFsaWQuc2ggXAotICB0MDIwNS1ncHQtbGlzdC1jbG9iYmVycy1wbWJyLnNoIFwKLSAgdDAyMDYtZ3B0LXByaW50LXdpdGgtY29ycnVwdC1wcmltYXJ5LWNsb2JiZXJzLXBtYnIuc2ggXAotICB0MDIwNy1JRUMtYmluYXJ5LW5vdGF0aW9uLnNoIFwKLSAgdDAyMDgtbWtwYXJ0LWVuZC1pbi1JRUMuc2ggXAotICB0MDIwOS1ncHQtcG1icl9ib290LnNoIFwKLSAgdDAyMTAtZ3B0LXJlc2l6ZWQtcGFydGl0aW9uLWVudHJ5LWFycmF5LnNoIFwKLSAgdDAyMTEtZ3B0LXJld3JpdGUtaGVhZGVyLnNoIFwKLSAgdDAyMTItZ3B0LW1hbnktcGFydGl0aW9ucy5zaCBcCi0gIHQwMjIwLWdwdC1tc2Z0cmVzLnNoIFwKLSAgdDAyNTAtZ3B0LnNoIFwKLSAgdDAyODAtZ3B0LWNvcnJ1cHQuc2ggXAotICB0MDMwMC1kb3Mtb24tZ3B0LnNoIFwKLSAgdDA0MDAtbG9vcC1jbG9iYmVyLWluZmxvb3Auc2ggXAotICB0MDUwMC1kdXAtY2xvYmJlci5zaCBcCi0gIHQwNTAxLWR1cGxpY2F0ZS5zaCBcCi0gIHQxMTAwLWJ1c3ktbGFiZWwuc2ggXAotICB0MTEwMS1idXN5LXBhcnRpdGlvbi5zaCBcCi0gIHQxNzAwLXByb2JlLWZzLnNoIFwKLSAgdDIyMDAtZG9zLWxhYmVsLXJlY29nLnNoIFwKLSAgdDIyMDEtcGM5OC1sYWJlbC1yZWNvZy5zaCBcCi0gIHQyMzAwLWRvcy1sYWJlbC1leHRlbmRlZC1ib290Y29kZS5zaCBcCi0gIHQyMzEwLWRvcy1leHRlbmRlZC0yLXNlY3Rvci1taW4tb2Zmc2V0LnNoIFwKLSAgdDI0MDAtZG9zLWhmcy1wYXJ0aXRpb24tdHlwZS5zaCBcCi0gIHQyNTAwLXByb2JlLWNvcnJ1cHQtaGZzLnNoIFwKLSAgdDMwMDAtcmVzaXplLWZzLnNoIFwKLSAgdDMyMDAtdHlwZS1jaGFuZ2Uuc2ggXAotICB0MzMwMC1wYWxvLXByZXAuc2ggXAotICB0MzMxMC1mbGFncy5zaCBcCi0gIHQzNDAwLXdob2xlLWRpc2stRkFULXBhcnRpdGlvbi5zaCBcCi0gIHQ0MDAwLXN1bi1yYWlkLXR5cGUuc2ggXAotICB0NDAwMS1zdW4tdnRvYy5zaCBcCi0gIHQ0MTAwLW1zZG9zLXBhcnRpdGlvbi1saW1pdHMuc2ggXAotICB0NDEwMC1kdmgtcGFydGl0aW9uLWxpbWl0cy5zaCBcCi0gIHQ0MTAwLW1zZG9zLXN0YXJ0aW5nLXNlY3Rvci5zaCBcCi0gIHQ0MjAwLXBhcnRwcm9iZS5zaCBcCi0gIHQ0MzAwLW5pbGZzMi10aW55LnNoIFwKLSAgdDUwMDAtdGFncy5zaCBcCi0gIHQ2MDAwLWRtLnNoIFwKLSAgdDYwMDEtcHNlcC5zaCBcCi0gIHQ2MTAwLW1kcmFpZC1wYXJ0aXRpb25zLnNoIFwKLSAgdDcwMDAtc2NyaXB0aW5nLnNoIFwKLSAgdDgwMDAtbG9vcC5zaCBcCi0gIHQ4MDAxLWxvb3AtYmxrcGcuc2ggXAotICB0OTAxMC1iaWctc2VjdG9yLnNoIFwKLSAgdDkwMjAtYWxpZ25tZW50LnNoIFwKLSAgdDkwMjEtbWF4aW1hLnNoIFwKLSAgdDkwMjItb25lLXVuaXQtc25hcC5zaCBcCi0gIHQ5MDIzLXZhbHVlLWx0LW9uZS5zaCBcCi0gIHQ5MDMwLWFsaWduLWNoZWNrLnNoIFwKLSAgdDkwNDAtbWFueS1wYXJ0aXRpb25zLnNoIFwKLSAgdDkwNDEtdW5kZXRlY3RlZC1pbi11c2UtMTZ0aC1wYXJ0aXRpb24uc2ggXAotICB0OTA0Mi1kb3MtcGFydGl0aW9uLWxpbWl0LnNoIFwKLSAgdDkwNTAtcGFydGl0aW9uLXRhYmxlLXR5cGVzLnNoCi0KLVRFU1RTX0VOVklST05NRU5UID0gXAotICBleHBvcnQJCQkJCVwKLSAgYWJzX3RvcF9idWlsZGRpcj0nJChhYnNfdG9wX2J1aWxkZGlyKScJXAotICBhYnNfdG9wX3NyY2Rpcj0nJChhYnNfdG9wX3NyY2RpciknCQlcCi0gIGFic19zcmNkaXI9JyQoYWJzX3NyY2RpciknCQkJXAotICBidWlsdF9wcm9ncmFtcz1wYXJ0ZWQJCQkJXAotICBzcmNkaXI9JyQoc3JjZGlyKScJCQkJXAotICB0b3Bfc3JjZGlyPSckKHRvcF9zcmNkaXIpJwkJCVwKLSAgVkVSU0lPTj0kKFZFUlNJT04pCQkJCVwKLSAgOyA5PiYyCi0KLS5TVUZGSVhFUzogLmxvZwotCi0kKFRFU1RfU1VJVEVfTE9HKTogJChURVNUX0xPR1MpCi0JQCQoYW1fX3NoX2Vfc2V0dXApOyAkKGFtX190dHlfY29sb3JzKTsgJChhbV9fc2V0X1RFU1RTX2Jhc2VzKTsgXAotCXdzPSdbIAldJzsgXAotCXJlc3VsdHM9YGZvciBiIGluICQkYmFzZXM7IGRvIGVjaG8gJCRiLnRyczsgZG9uZWA7IFwKLQl0ZXN0IC1uICIkJHJlc3VsdHMiIHx8IHJlc3VsdHM9L2Rldi9udWxsOyBcCi0JYWxsPWAgIGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDoiICAgICAgICAgICAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQlwYXNzPWAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqUEFTUyIgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCWZhaWw9YCBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypGQUlMIiAgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0Jc2tpcD1gIGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKlNLSVAiICAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQl4ZmFpbD1gZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqWEZBSUwiICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCXhwYXNzPWBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypYUEFTUyIgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0JZXJyb3I9YGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKkVSUk9SIiAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQlpZiB0ZXN0IGBleHByICQkZmFpbCArICQkeHBhc3MgKyAkJGVycm9yYCAtZXEgMDsgdGhlbiBcCi0JICBzdWNjZXNzPXRydWU7IFwKLQllbHNlIFwKLQkgIHN1Y2Nlc3M9ZmFsc2U7IFwKLQlmaTsgXAotCWJyPSc9PT09PT09PT09PT09PT09PT09JzsgYnI9JCRiciQkYnIkJGJyJCRicjsgXAotCXJlc3VsdF9jb3VudCAoKSBcCi0JeyBcCi0JICAgIGlmIHRlc3QgeCIkJDEiID0geCItLW1heWJlLWNvbG9yIjsgdGhlbiBcCi0JICAgICAgbWF5YmVfY29sb3JpemU9eWVzOyBcCi0JICAgIGVsaWYgdGVzdCB4IiQkMSIgPSB4Ii0tbm8tY29sb3IiOyB0aGVuIFwKLQkgICAgICBtYXliZV9jb2xvcml6ZT1ubzsgXAotCSAgICBlbHNlIFwKLQkgICAgICBlY2hvICIkQDogaW52YWxpZCAncmVzdWx0X2NvdW50JyB1c2FnZSIgPiYyOyBleGl0IDQ7IFwKLQkgICAgZmk7IFwKLQkgICAgc2hpZnQ7IFwKLQkgICAgZGVzYz0kJDEgY291bnQ9JCQyOyBcCi0JICAgIGlmIHRlc3QgJCRtYXliZV9jb2xvcml6ZSA9IHllcyAmJiB0ZXN0ICQkY291bnQgLWd0IDA7IHRoZW4gXAotCSAgICAgIGNvbG9yX3N0YXJ0PSQkMyBjb2xvcl9lbmQ9JCRzdGQ7IFwKLQkgICAgZWxzZSBcCi0JICAgICAgY29sb3Jfc3RhcnQ9IGNvbG9yX2VuZD07IFwKLQkgICAgZmk7IFwKLQkgICAgZWNobyAiJCR7Y29sb3Jfc3RhcnR9IyAkJGRlc2MgJCRjb3VudCQke2NvbG9yX2VuZH0iOyBcCi0JfTsgXAotCWNyZWF0ZV90ZXN0c3VpdGVfcmVwb3J0ICgpIFwKLQl7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIlRPVEFMOiIgJCRhbGwgICAiJCRicmciOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJQQVNTOiAiICQkcGFzcyAgIiQkZ3JuIjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiU0tJUDogIiAkJHNraXAgICIkJGJsdSI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIlhGQUlMOiIgJCR4ZmFpbCAiJCRsZ24iOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJGQUlMOiAiICQkZmFpbCAgIiQkcmVkIjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiWFBBU1M6IiAkJHhwYXNzICIkJHJlZCI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIkVSUk9SOiIgJCRlcnJvciAiJCRtZ24iOyBcCi0JfTsgXAotCXsJCQkJCQkJCVwKLQkgIGVjaG8gIiQoUEFDS0FHRV9TVFJJTkcpOiAkKHN1YmRpcikvJChURVNUX1NVSVRFX0xPRykiIHwJXAotCSAgICAkKGFtX19yc3RfdGl0bGUpOwkJCQkJCVwKLQkgIGNyZWF0ZV90ZXN0c3VpdGVfcmVwb3J0IC0tbm8tY29sb3I7CQkJCVwKLQkgIGVjaG87CQkJCQkJCQlcCi0JICBlY2hvICIuLiBjb250ZW50czo6IDpkZXB0aDogMiI7CQkJCVwKLQkgIGVjaG87CQkJCQkJCQlcCi0JICBmb3IgaSBpbiAkJGJhc2VzOyBkbwkJCQkJCVwKLQkgICAgaWYgZ3JlcCAiXiQkd3MqOmNvcHktaW4tZ2xvYmFsLWxvZzokJHdzKm5vJCR3cyokJCIgJCRpLnRycyBcCi0JICAgICAgICAgPi9kZXYvbnVsbDsgdGhlbiBjb250aW51ZTsgXAotCSAgICBmaTsgXAotCSAgICBnbG9iX3Jlcz1gc2VkIC1uIC1lICJzLyQkd3MqJCQvLyIgXAotCSAgICAgICAgICAgICAgICAgICAgIC1lICJzL14kJHdzKjpnbG9iYWwtdGVzdC1yZXN1bHQ6JCR3cyovL3AiIFwKLQkJICAgICAgICAkJGkudHJzYDsgXAotCSAgICB0ZXN0IC1uICIkJGdsb2JfcmVzIiB8fCBnbG9iX3Jlcz1SVU47IFwKLQkgICAgZWNobyAiJCRnbG9iX3JlczogJCRpIiB8ICQoYW1fX3JzdF9zZWN0aW9uKTsgXAotCSAgICBpZiB0ZXN0ICEgLXIgJCRpLmxvZzsgdGhlbiBcCi0JICAgICAgZWNobyAiZmF0YWw6IG1ha2luZyAkQDogJCRpLmxvZyBpcyB1bnJlYWRhYmxlIiA+JjI7IFwKLQkgICAgICBleGl0IDE7IFwKLQkgICAgZmk7IFwKLQkgICAgY2F0ICQkaS5sb2c7IGVjaG87IFwKLQkgIGRvbmU7CVwKLQl9ID4kKFRFU1RfU1VJVEVfTE9HKS50bXA7CQkJCQlcCi0JbXYgJChURVNUX1NVSVRFX0xPRykudG1wICQoVEVTVF9TVUlURV9MT0cpOwkJCVwKLQlpZiAkJHN1Y2Nlc3M7IHRoZW4JCQkJCQlcCi0JICBjb2w9IiQkZ3JuIjsJCQkJCQkJXAotCSBlbHNlCQkJCQkJCQlcCi0JICBjb2w9IiQkcmVkIjsJCQkJCQkJXAotCSAgdGVzdCB4IiQkVkVSQk9TRSIgPSB4IHx8IGNhdCAkKFRFU1RfU1VJVEVfTE9HKTsJCVwKLQlmaTsJCQkJCQkJCVwKLQllY2hvICIkJHtjb2x9JCRiciQke3N0ZH0iOyAJCQkJCVwKLQllY2hvICIkJHtjb2x9VGVzdHN1aXRlIHN1bW1hcnkgZm9yICQoUEFDS0FHRV9TVFJJTkcpJCR7c3RkfSI7CVwKLQllY2hvICIkJHtjb2x9JCRiciQke3N0ZH0iOyAJCQkJCVwKLQljcmVhdGVfdGVzdHN1aXRlX3JlcG9ydCAtLW1heWJlLWNvbG9yOwkJCQlcCi0JZWNobyAiJCRjb2wkJGJyJCRzdGQiOwkJCQkJCVwKLQlpZiAkJHN1Y2Nlc3M7IHRoZW4gOjsgZWxzZQkJCQkJXAotCSAgZWNobyAiJCR7Y29sfVNlZSAkKHN1YmRpcikvJChURVNUX1NVSVRFX0xPRykkJHtzdGR9IjsJCVwKLQkgIGlmIHRlc3QgLW4gIiQoUEFDS0FHRV9CVUdSRVBPUlQpIjsgdGhlbgkJCVwKLQkgICAgZWNobyAiJCR7Y29sfVBsZWFzZSByZXBvcnQgdG8gJChQQUNLQUdFX0JVR1JFUE9SVCkkJHtzdGR9IjsJXAotCSAgZmk7CQkJCQkJCQlcCi0JICBlY2hvICIkJGNvbCQkYnIkJHN0ZCI7CQkJCQlcCi0JZmk7CQkJCQkJCQlcCi0JJCRzdWNjZXNzIHx8IGV4aXQgMQotCi1jaGVjay1URVNUUzoKLQlAaWYgdGVzdCAkQCAhPSByZWNoZWNrOyB0aGVuIFwKLQkgICBsaXN0PSckKFJFQ0hFQ0tfTE9HUyknOyBcCi0JICAgdGVzdCAteiAiJCRsaXN0IiB8fCBybSAtZiAkJGxpc3Q7IFwKLQkgZmkKLQlAdGVzdCAteiAiJChURVNUX1NVSVRFX0xPRykiIHx8IHJtIC1mICQoVEVTVF9TVUlURV9MT0cpCi0JQHdzPSdbIAldJzsgXAotCWxvZ19saXN0PScnIHRyc19saXN0PScnOyAkKGFtX19zZXRfVEVTVFNfYmFzZXMpOyBcCi0JZm9yIGkgaW4gJCRiYXNlczsgZG8gXAotCSAgaWYgdGVzdCAteiAiJCRsb2dfbGlzdCI7IHRoZW4gXAotCSAgICBsb2dfbGlzdD0iJCRpLmxvZyI7IFwKLQkgIGVsc2UgXAotCSAgICBsb2dfbGlzdD0iJCRsb2dfbGlzdCAkJGkubG9nIjsgXAotCSAgZmk7IFwKLQkgIGlmIHRlc3QgLXogIiQkdHJzX2xpc3QiOyB0aGVuIFwKLQkgICAgdHJzX2xpc3Q9IiQkaS50cnMiOyBcCi0JICBlbHNlIFwKLQkgICAgdHJzX2xpc3Q9IiQkdHJzX2xpc3QgJCRpLnRycyI7IFwKLQkgIGZpOyBcCi0JZG9uZTsgXAotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQoVEVTVF9TVUlURV9MT0cpIFRFU1RfTE9HUz0iJCRsb2dfbGlzdCIKLQotLnNoLmxvZzoKLQlAcD0nJDwnOyBcCi0JJChhbV9fc2V0X2IpOyBcCi0JJChhbV9fY2hlY2tfcHJlKSAkKFNIX0xPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKLQktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKLQkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAtLSAkKFNIX0xPR19DT01QSUxFKSAiJCR0c3QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZG1fY2hlY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZG1fY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmM2M0ZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2RtX2NoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcGFydGVkOiBjaGFuZ2UgY2hlY2sgZm9yIGRldmljZS1tYW5hZ2VyCi0KLU90aGVyIHB0ZXN0cyB1c2UgdGhpcyBtZXRob2QuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtidWctcGFydGVkQGdudS5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotCi0tLS0gYS90ZXN0cy90NjAwMS1wc2VwLnNoCi0rKysgYi90ZXN0cy90NjAwMS1wc2VwLnNoCi1AQCAtMTksNyArMTksOSBAQAotIC4gIiR7c3JjZGlyPS59L2luaXQuc2giOyBwYXRoX3ByZXBlbmRfIC4uL3BhcnRlZAotIAotIHJlcXVpcmVfcm9vdF8KLS0oZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF90ZXN0XyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCi0rCi0rdGVzdCAieCRFTkFCTEVfREVWSUNFX01BUFBFUiIgPSB4eWVzIFwKLSsgIHx8IHNraXBfICJubyBkZXZpY2UtbWFwcGVyIHN1cHBvcnQiCi0gCi0gIyBEZXZpY2UgbWFwcyBuYW1lcyAtIHNob3VsZCBiZSByYW5kb20gdG8gbm90IGNvbmZsaWN0IHdpdGggZXhpc3Rpbmcgb25lcyBvbgotICMgdGhlIHN5c3RlbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzRkMmFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9maXgtY29tcGlsZS1mYWlsdXJlLXdoaWxlLWRpcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gZGEzZjEyOTcxMDkyOWFiZTlhNDAzOTAxZmE3ZDE2ODM1NWIwZTk1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBTdW4sIDMgTWF5IDIwMTUgMTA6MzM6MTUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlicGFydGVkL2FyY2gvbGludXguYzogQ29tcGlsZSB3aXRob3V0IEVOQUJMRV9ERVZJQ0VfTUFQUEVSCi0KLVNpZ25lZC1vZmYtYnk6IEJyaWFuIEMuIExhbmUgPGJjbEByZWRoYXQuY29tPgotLS0tCi0gbGlicGFydGVkL2FyY2gvbGludXguYyB8IDIxICsrKysrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlicGFydGVkL2FyY2gvbGludXguYyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLWluZGV4IGExNTg1NGYuLjdmMTJmNTggMTAwNjQ0Ci0tLS0gYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCi0rKysgYi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCi1AQCAtMjMwNSw2ICsyMzA1LDcgQEAgemFzcHJpbnRmIChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSAgIHJldHVybiByIDwgMCA/IE5VTEwgOiByZXN1bHRwOwotIH0KLSAKLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSBzdGF0aWMgY2hhciAqCi0gZG1fY2Fub25pY2FsX3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2KQotIHsKLUBAIC0yMzI3LDE0ICsyMzI4LDIxIEBAIGRtX2Nhbm9uaWNhbF9wYXRoIChQZWREZXZpY2UgY29uc3QgKmRldikKLSBlcnI6Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSB9Ci0rI2VuZGlmCi0gCi0gc3RhdGljIGNoYXIqCi0gX2RldmljZV9nZXRfcGFydF9wYXRoIChQZWREZXZpY2UgY29uc3QgKmRldiwgaW50IG51bSkKLSB7Ci0tICAgICAgICBjaGFyICpkZXZwYXRoID0gKGRldi0+dHlwZSA9PSBQRURfREVWSUNFX0RNCi0tICAgICAgICAgICAgICAgICAgICAgICAgID8gZG1fY2Fub25pY2FsX3BhdGggKGRldikgOiBkZXYtPnBhdGgpOwotLSAgICAgICAgc2l6ZV90IHBhdGhfbGVuID0gc3RybGVuIChkZXZwYXRoKTsKLSsgICAgICAgIGNoYXIgKmRldnBhdGg7Ci0rICAgICAgICBzaXplX3QgcGF0aF9sZW47Ci0gICAgICAgICBjaGFyICpyZXN1bHQ7Ci0rI2lmZGVmIEVOQUJMRV9ERVZJQ0VfTUFQUEVSCi0rICAgICAgICBkZXZwYXRoID0gKGRldi0+dHlwZSA9PSBQRURfREVWSUNFX0RNCi0rICAgICAgICAgICAgICAgICAgICAgICAgID8gZG1fY2Fub25pY2FsX3BhdGggKGRldikgOiBkZXYtPnBhdGgpOwotKyNlbHNlCi0rICAgICAgICBkZXZwYXRoID0gZGV2LT5wYXRoOwotKyNlbmRpZgotKyAgICAgICAgcGF0aF9sZW4gPSBzdHJsZW4gKGRldnBhdGgpOwotICAgICAgICAgLyogQ2hlY2sgZm9yIGRldmZzLXN0eWxlIC9kaXNjID0+IC9wYXJ0TiB0cmFuc2Zvcm1hdGlvbgotICAgICAgICAgICAgdW5jb25kaXRpb25hbGx5OyB0aGUgc3lzdGVtIG1pZ2h0IGJlIHVzaW5nIHVkZXYgd2l0aCBkZXZmcyBydWxlcywKLSAgICAgICAgICAgIGFuZCBpZiBub3QgdGhlIHRlc3QgaXMgaGFybWxlc3MuICovCi1AQCAtMjM1MCw4ICsyMzU4LDEwIEBAIF9kZXZpY2VfZ2V0X3BhcnRfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYsIGludCBudW0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAicCIgOiAiIik7Ci0gICAgICAgICAgICAgICAgIHJlc3VsdCA9IHphc3ByaW50ZiAoIiVzJXMlZCIsIGRldnBhdGgsIHAsIG51bSk7Ci0gICAgICAgICB9Ci0rI2lmZGVmIEVOQUJMRV9ERVZJQ0VfTUFQUEVSCi0gICAgICAgICBpZiAoZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0pCi0gICAgICAgICAgICAgICAgIGZyZWUgKGRldnBhdGgpOwotKyNlbmRpZgotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi1AQCAtMjk0NiwxMiArMjk1NiwxNSBAQCBfZGlza19zeW5jX3BhcnRfdGFibGUgKFBlZERpc2sqIGRpc2spCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKmxlbmd0aCk7Ci0gCi0gCi0rI2lmZGVmIEVOQUJMRV9ERVZJQ0VfTUFQUEVSCi0gICAgICAgICBpZiAoZGlzay0+ZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0pIHsKLSAgICAgICAgICAgICAgICAgYWRkX3BhcnRpdGlvbiA9IF9kbV9hZGRfcGFydGl0aW9uOwotICAgICAgICAgICAgICAgICByZW1vdmVfcGFydGl0aW9uID0gX2RtX3JlbW92ZV9wYXJ0aXRpb247Ci0gICAgICAgICAgICAgICAgIHJlc2l6ZV9wYXJ0aXRpb24gPSBfZG1fcmVzaXplX3BhcnRpdGlvbjsKLSAgICAgICAgICAgICAgICAgZ2V0X3BhcnRpdGlvbl9zdGFydF9hbmRfbGVuZ3RoID0gX2RtX2dldF9wYXJ0aXRpb25fc3RhcnRfYW5kX2xlbmd0aDsKLS0gICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICB9IGVsc2UKLSsjZW5kaWYKLSsgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgYWRkX3BhcnRpdGlvbiA9IF9ibGtwZ19hZGRfcGFydGl0aW9uOwotICAgICAgICAgICAgICAgICByZW1vdmVfcGFydGl0aW9uID0gX2Jsa3BnX3JlbW92ZV9wYXJ0aXRpb247Ci0gI2lmZGVmIEJMS1BHX1JFU0laRV9QQVJUSVRJT04KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvcnVuLXB0ZXN0CmluZGV4IDY5NWM1ZTguLmYzOWM0NzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdApAQCAtMSwzICsxLDUgQEAKICMhL2Jpbi9zaAogCi1tYWtlIC1DIHRlc3RzIGNoZWNrLVRFU1RTCitlY2hvIC9kZXYvc2RhMSA+PiAvZXRjL3VkZXYvbW91bnQuYmxhY2tsaXN0LmQvcGFydGVkLXRtcAorbWFrZSAtQyB0ZXN0cyB0ZXN0LXN1aXRlLmxvZworcm0gL2V0Yy91ZGV2L21vdW50LmJsYWNrbGlzdC5kL3BhcnRlZC10bXAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYTgxNTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIkRpc2sgcGFydGl0aW9uIGVkaXRpbmcvcmVzaXppbmcgdXRpbGl0eSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9wYXJ0ZWQvcGFydGVkLmh0bWwiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotREVQRU5EUyA9ICJuY3Vyc2VzIHJlYWRsaW5lIHV0aWwtbGludXggdmlydHVhbC9saWJpY29udiIKLVBSID0gInIxIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vcGFydGVkL3BhcnRlZC0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vbm9fY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWRvYy1tYW5kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1saWJwYXJ0ZWRfZnNfcmVzaXplLWxpbmstYWdhaW5zdC1saWJ1dWlkLWV4cGxpY2l0bHktLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtbGludXgtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1hY3JvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG1fY2hlY2sucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDI0N2I2YTdiMzE0ZjhlZGViNjE4MTU5ZmE5NWY5Y2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODU4YjU4OWMyMjI5N2NhY2RmNDM3ZjNiYWZmNmYwNGIzMzMwODc1MjFhYjI3NGY3YWI2NzdjYjhjNmJiNzhlNCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgdGVzdHMgcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemUKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JbWtkaXIgJHQvYnVpbGQtYXV4Ci0JY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHQvYnVpbGQtYXV4LwotCWNwIC1yICR7U30vdGVzdHMgJHQKLQljcCAke1dPUktESVJ9L01ha2VmaWxlICR0L3Rlc3RzLwotCXNlZCAtaSAic3xeVkVSU0lPTi4qfFZFUlNJT04gPSAke1BWfXxnIiAkdC90ZXN0cy9NYWtlZmlsZQotCWZvciBpIGluIHByaW50LWFsaWduIHByaW50LW1heCBkdXAtY2xvYmJlciBkdXBsaWNhdGUgZnMtcmVzaXplOyBcCi0JICBkbyBjcCAke0J9L3Rlc3RzLy5saWJzLyRpICR0L3Rlc3RzLzsgXAotCWRvbmUKLQlzZWQgLWUgJ3N8IC4uL3BhcnRlZHx8JyAtaSAkdC90ZXN0cy8qLnNoCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggY29yZXV0aWxzIHBlcmwgdXRpbC1saW51eC1sb3NldHVwIHB5dGhvbjMgbWFrZSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gInBhcnRwcm9iZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXJ0cHJvYmVdID0gIiR7c2JpbmRpcn0vcGFydHByb2JlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2ZkOWVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjMuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJEaXNrIHBhcnRpdGlvbiBlZGl0aW5nL3Jlc2l6aW5nIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvcGFydGVkL3BhcnRlZC5odG1sIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZjMxYjI2NmQzNDQwZGQ3ZWU1MGY5MmNmNjdkOGU2YyIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0RFUEVORFMgPSAibmN1cnNlcyByZWFkbGluZSB1dGlsLWxpbnV4IHZpcnR1YWwvbGliaWNvbnYiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9wYXJ0ZWQvcGFydGVkLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ub19jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtZG9jLW1hbmRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYnBhcnRlZF9mc19yZXNpemUtbGluay1hZ2FpbnN0LWxpYnV1aWQtZXhwbGljaXRseS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYnBhcnRlZC1mcy1hZGQtc291cmNlZGlyLWxpYi10by1pbmNsdWRlLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdGVzdHMtdXNlLXNraXBfLXJhdGhlci10aGFuLXNraXBfdGVzdF8td2hpY2gtaXMtdW5kZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjA5MDY1NWQwNWYzYzQ3MWFhOGUxNWEyNzUzNjg4OWVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3ZTJiNGJkODcwMTg2MjVjNTE1NDIxZDQ1MjRmNmUzYjU1MTc1YjQ3MjMwMjA1NjM5MWM1ZjdlY2NiODNkNDQiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGV2aWNlLW1hcHBlciIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdGV4aW5mbyBwdGVzdAorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DIHRlc3RzIHByaW50LWFsaWduIHByaW50LW1heCBkdXAtY2xvYmJlciBkdXBsaWNhdGUgZnMtcmVzaXplIHByaW50LWZsYWdzCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfQorCW1rZGlyICR0L2J1aWxkLWF1eAorCWNwICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR0L2J1aWxkLWF1eC8KKwljcCAtciAke1N9L3Rlc3RzICR0CisJY3AgJHtCfS90ZXN0cy9NYWtlZmlsZSAkdC90ZXN0cy8KKwlzZWQgLWkgInN8XlZFUlNJT04uKnxWRVJTSU9OID0gJHtQVn18ZyIgJHQvdGVzdHMvTWFrZWZpbGUKKwlzZWQgLWkgInN8XnNyY2RpciA9Lip8c3JjZGlyID0gXC58ZyIgJHQvdGVzdHMvTWFrZWZpbGUKKwlzZWQgLWkgInN8XmFic19zcmNkaXIgPS4qfGFic19zcmNkaXIgPSBcLnxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xeYWJzX3RvcF9zcmNkaXIgPS4qfGFic190b3Bfc3JjZGlyID0gXC5cLnxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xeTWFrZWZpbGU6Lip8TWFrZWZpbGU6fGciICR0L3Rlc3RzL01ha2VmaWxlCisJZm9yIGkgaW4gcHJpbnQtYWxpZ24gcHJpbnQtbWF4IHByaW50LWZsYWdzIGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemU7IFwKKwkgIGRvIGNwICR7Qn0vdGVzdHMvLmxpYnMvJGkgJHQvdGVzdHMvOyBcCisJZG9uZQorCXNlZCAtZSAnc3wgLi4vcGFydGVkfHwnIC1pICR0L3Rlc3RzLyouc2gKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBjb3JldXRpbHMgcGVybCB1dGlsLWxpbnV4LWxvc2V0dXAgcHl0aG9uMyBtYWtlIGdhd2sgZTJmc3Byb2dzLW1rZTJmcyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiXAorICAgICAgICBnbGliYy11dGlscyBcCisgICAgICAgIGxvY2FsZS1iYXNlLWVuLXVzIFwKKyAgICAgICAgIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAicGFydHByb2JlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BhcnRwcm9iZV0gPSAiJHtzYmluZGlyfS9wYXJ0cHJvYmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYnppcDIvcGJ6aXAyXzEuMS4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiCmluZGV4IDEyNzVjYzAuLmUzMjFjZDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiCkBAIC01LDcgKzUsNyBAQAogbmV3ZXIgKGllOiBhbnl0aGluZyBjb21wcmVzc2VkIHdpdGggcGJ6aXAyIGNhbiBiZSBkZWNvbXByZXNzZWQgd2l0aCBiemlwMikuIgogSE9NRVBBR0UgPSAiaHR0cDovL2NvbXByZXNzaW9uLmNhL3BiemlwMi8iCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSIKK0xJQ0VOU0UgPSAiYnppcDItMS4wLjYiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOThiODgzMmM2Zjg0MGNmZWJkMjBhYjJiZTZhMzc0MyIKIAogREVQRU5EUyA9ICJiemlwMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHMvMDAwMS1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NDgxOTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Gcm9tIDA4MjVkYjk0ZmM5MWZhMjE1MGMwZTY0OWU5MmNjOGRjYzQ0ZjRiMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNCBBcHIgMjAxOCAxNDowOTo0NSArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggb3V0IG9mIHRyZWUgYnVpbGRzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBpbmNsdWRlL25scy5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ubHMuaCBiL2luY2x1ZGUvbmxzLmgKLWluZGV4IDExNjZiN2IuLmY1YWJlMDUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL25scy5oCi0rKysgYi9pbmNsdWRlL25scy5oCi1AQCAtNiw3ICs2LDcgQEAKLSAjZGVmaW5lIFBST0NQU19OR19OTFNfSAotIAotIC8qIHByb2dyYW1zIGlzc3VpbmcgdGV4dGRvbWFpbigpIG5lZWQgUEFDS0FHRSBzdHJpbmcgKi8KLS0jaW5jbHVkZSAiLi4vY29uZmlnLmgiCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotIAotIC8qIHByb2dyYW1zIGlzc3VpbmcgYmluZHRleHRkb21haW4oKSBhbHNvIG5lZWQgTE9DQUxFRElSIHN0cmluZyAqLwotICNpZm5kZWYgTE9DQUxFRElSCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjQwZTU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gYW5kIHByb2Nlc3MgbW9uaXRvcmluZyB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJQcm9jcHMgY29udGFpbnMgYSBzZXQgb2Ygc3lzdGVtIHV0aWxpdGllcyB0aGF0IHByb3ZpZGUgc3lzdGVtIGluZm9ybWF0aW9uIGFib3V0IHByb2Nlc3NlcyB1c2luZyBcCi10aGUgL3Byb2MgZmlsZXN5c3RlbS4gVGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIHByb2dyYW1zIHBzLCB0b3AsIHZtc3RhdCwgdywga2lsbCwgYW5kIHNraWxsLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmNvbS9wcm9jcHMtbmcvcHJvY3BzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRjZjY2YTQ5ODQxMjAwMDdjOTg4MWNjODcxY2Y0OWRiIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1ERVBFTkRTID0gIm5jdXJzZXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3Byb2Nwcy1uZy9Qcm9kdWN0aW9uL3Byb2Nwcy1uZy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vc3lzY3RsLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmIwNzE3YTdjYjQ3NGIzZDZkZmRlZWRmYmFkMmVjY2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTBiZDc0NGZmY2IzZGUyZDU5MWQyZjZhY2YxYTU0YTdiYTA3MGZkY2M0MzJhODU1OTMxYTUwNTcxNDlmMDQ2NSIKLQotUyA9ICIke1dPUktESVJ9L3Byb2Nwcy1uZy0ke1BWfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNraWxsIC0tZGlzYWJsZS1tb2Rlcm4tdG9wIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQlbICIke2JpbmRpcn0iICE9ICIke2Jhc2VfYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGk7IGRvbmUKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQlbICIke3NiaW5kaXJ9IiAhPSAiJHtiYXNlX3NiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9zYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7c2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9zYmluZGlyfS8kaTsgZG9uZQotICAgICAgICBpZiBbICIke2Jhc2Vfc2JpbmRpcn0iICE9ICIke3NiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgcm1kaXIgJHtEfSR7c2JpbmRpcn0KLSAgICAgICAgZmkKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c2N0bC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5jb25mCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5kCi0gICAgICAgICAgICAgICAgbG4gLXNmIC4uL3N5c2N0bC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLzk5LXN5c2N0bC5jb25mCi0gICAgICAgIGZpCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2N0bC5jb25mIgotCi1iaW5kaXJfcHJvZ3MgPSAiZnJlZSBwa2lsbCBwbWFwIHBncmVwIHB3ZHggc2tpbGwgc25pY2UgdG9wIHVwdGltZSB3IgotYmFzZV9iaW5kaXJfcHJvZ3MgKz0gImtpbGwgcGlkb2YgcHMgd2F0Y2giCi1iYXNlX3NiaW5kaXJfcHJvZ3MgKz0gInN5c2N0bCIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMjAwIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcGlkb2ZdID0gIjE1MCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7YmFzZV9zYmluZGlyX3Byb2dzfSIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImtpbGwuMSB1cHRpbWUuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQotCi0gICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9zYmluZGlyJyksIHByb2cpKQotfQotCi0jICdwcycgaXNuJ3Qgc3VpdGFibGUgZm9yIHVzZSBhcyBhIHNlY3VyaXR5IHRvb2wgc28gd2hpdGVsaXN0IHRoaXMgQ1ZFLgotIyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE1NzU0NzMjYzMKLUNWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE4LTExMjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MTBlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xNi5iYgpAQCAtMCwwICsxLDc2IEBACitTVU1NQVJZID0gIlN5c3RlbSBhbmQgcHJvY2VzcyBtb25pdG9yaW5nIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlByb2NwcyBjb250YWlucyBhIHNldCBvZiBzeXN0ZW0gdXRpbGl0aWVzIHRoYXQgcHJvdmlkZSBzeXN0ZW0gaW5mb3JtYXRpb24gYWJvdXQgcHJvY2Vzc2VzIHVzaW5nIFwKK3RoZSAvcHJvYyBmaWxlc3lzdGVtLiBUaGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgcHJvZ3JhbXMgcHMsIHRvcCwgdm1zdGF0LCB3LCBraWxsLCBhbmQgc2tpbGwuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGNmNjZhNDk4NDEyMDAwN2M5ODgxY2M4NzFjZjQ5ZGIgXAorICAgICAgICAgICAgICAgICAgICAiCisKK0RFUEVORFMgPSAibmN1cnNlcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcworCitTUkNfVVJJID0gImdpdDovL2dpdGxhYi5jb20vcHJvY3BzLW5nL3Byb2Nwcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vc3lzY3RsLmNvbmYgXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiNTljODhlMThmMjkwMDBjZWFmN2U1Zjk4MTgxYjA3YmU0NDNjZjEyZiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyBVcHN0cmVhbSBoYXMgYSBjdXN0b20gYXV0b2dlbi5zaCB3aGljaCBpbnZva2VzIHBvL3VwZGF0ZS1wb3RmaWxlcyBhcyB0aGV5CisjIGRvbid0IHNoaXAgYSBwby9QT1RGSUxFUy5pbiAod2hpY2ggaXMgc2lsbHkpLiAgV2l0aG91dCB0aGF0IGZpbGUgZ2V0dGV4dAorIyBkb2Vzbid0IGJlbGlldmUgcG8vIGlzIGEgZ2V0dGV4dCBkaXJlY3RvcnkgYW5kIHdvbid0IGdlbmVyYXRlIHBvL01ha2VmaWxlLgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgKCBjZCAke1N9ICYmIHBvL3VwZGF0ZS1wb3RmaWxlcyApCit9CisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1za2lsbCAtLWRpc2FibGUtbW9kZXJuLXRvcCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQorCVsgIiR7c2JpbmRpcn0iICE9ICIke2Jhc2Vfc2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtzYmluZGlyfS8kaSAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpOyBkb25lCisgICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgICAgICAgICBybWRpciAke0R9JHtzYmluZGlyfQorICAgICAgICBmaQorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQKKyAgICAgICAgICAgICAgICBsbiAtc2YgLi4vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQvOTktc3lzY3RsLmNvbmYKKyAgICAgICAgZmkKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYiCisKK2JpbmRpcl9wcm9ncyA9ICJmcmVlIHBraWxsIHBtYXAgcGdyZXAgcHdkeCBza2lsbCBzbmljZSB0b3AgdXB0aW1lIHciCitiYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKK2Jhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCitBTFRFUk5BVElWRV9QUklPUklUWVtwaWRvZl0gPSAiMTUwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9IgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAia2lsbC4xIHVwdGltZS4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCisKKyAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9zYmluZGlyX3Byb2dzJykuc3BsaXQoKToKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInKSwgcHJvZykpCit9CisKKyMgJ3BzJyBpc24ndCBzdWl0YWJsZSBmb3IgdXNlIGFzIGEgc2VjdXJpdHkgdG9vbCBzbyB3aGl0ZWxpc3QgdGhpcyBDVkUuCisjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTQ3MyNjMworQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTgtMTEyMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKaW5kZXggNTk0YTEwYy4uNmFiMTI4OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKQEAgLTcsNyArNyw3IEBACiBwcm9jZXNzZXMgaWRlbnRpZmllZCBieSBuYW1lLiAgVGhlIGZ1c2VyIGNvbW1hbmQgaWRlbnRpZmllcyB0aGUgUElEcyBcCiBvZiBwcm9jZXNzZXMgdGhhdCBhcmUgdXNpbmcgc3BlY2lmaWVkIGZpbGVzIG9yIGZpbGVzeXN0ZW1zLiIKIFNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmludGwgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9saWJpbnRsIgogTElDRU5TRSA9ICJHUEx2MiIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHNtaXNjL3BzbWlzYy0ke1BWfS50YXIuZ3oiCkBAIC0xOSw3ICsxOSw2IEBACiAjIFVwc3RyZWFtIGhhcyBhIGN1c3RvbSBhdXRvZ2VuLnNoIHdoaWNoIGludm9rZXMgcG8vdXBkYXRlLXBvdGZpbGVzIGFzIHRoZXkgCiAjIGRvbid0IHNoaXAgYSBwby9QT1RGSUxFUy5pbiAod2hpY2ggaXMgc2lsbHkpLiAgV2l0aG91dCB0aGF0IGZpbGUgZ2V0dGV4dCAKICMgZG9lc24ndCBiZWxpZXZlIHBvLyBpcyBhIGdldHRleHQgZGlyZWN0b3J5IGFuZCB3b24ndCBnZW5lcmF0ZSBwby9NYWtlZmlsZS4KLUVYVFJBX0FVVE9SRUNPTkZfcmVtb3ZlID0gIi0tZXhjbHVkZT1hdXRvcG9pbnQiCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICAoIGNkICR7U30gJiYgcG8vdXBkYXRlLXBvdGZpbGVzICkKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NTEzMDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGRhYzM3NWY2NDBmZWNkNDVlNjI1NGE4ZDg3MGVlMzdlYzhmNDE2NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMiBOb3YgMjAxNyAxNjoyMToyMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogY3JlYXRlIHNyYyBkaXJlY3RvcnkgYmVmb3JlIGF0dGVtcHRpbmcgdG8gd3JpdGUKLSB0aGVyZQotCi1PdGhlcndpc2Ugb3V0IG9mIHRyZWUgYnVpbGRzIHdpbGwgZmFpbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA0NDFhZTk0Li44ODI5NjlkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtODYsNyArODYsNyBAQCBFWFRSQV9ESVNUID0gc3JjL3NpZ25hbWVzLmMgUkVBRE1FLm1kIG1pc2MvZ2l0LXZlcnNpb24tZ2VuCi0gQ0xFQU5GSUxFUyA9IHNyYy9zaWduYW1lcy5oCi0gCi0gc3JjL3NpZ25hbWVzLmg6IHNyYy9zaWduYW1lcy5jIE1ha2VmaWxlIHNyYy8kKGFtX19kaXJzdGFtcCkKLS0JCWV4cG9ydCBMQ19BTEw9QyA7IFwKLSsJCWV4cG9ydCBMQ19BTEw9QyA7IG1rZGlyIC1wIHNyYyA7IFwKLSAJCUBDUFBAIC1kTSAkPCB8XAotIAkJdHIgLXMgJ1x0ICcgJyAnIHwgc29ydCAtbiAtayAzIHwgc2VkIFwKLSAJJ3M6I2RlZmluZSBTSUdcKFtBLVpdW0EtWl0qWzAtOV0qXCkgXChbMC05XVswLTldKlwpLiokXDp7XCBcMiwiXDEiIH0sOnA7ZCcgfCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjMuYmIKaW5kZXggYjNjM2M3ZS4uZTU2OWYxMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMy5iYgpAQCAtNCw3ICs0LDYgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuY29tL3BzbWlzYy9wc21pc2MuZ2l0O3Byb3RvY29sPWh0dHBzIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVVJTlRQVFJfTUFYLWluc3RlYWQtb2YtX19XT1JEU0laRS5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaMKgXAogICAgICAgICAgICAiCiBTUkNSRVYgPSAiNzhiZGU4NDkwNDFlNmM5MTRhMmE1MTdlYmUxMjU1Yjg2ZGM5ODc3MiIKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvMDAwMS1zeXN0ZW1kLXVzZS1FbnZpcm9ubWVudEZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvMDAwMS1zeXN0ZW1kLXVzZS1FbnZpcm9ubWVudEZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyZjJjZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGRhNTI4ZDVkNjAxMzdmMTMyMDIxMDJiNTNjZjE3OGFiYTQ1ODQ5YTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGVmYW4gQWduZXIgPHN0ZWZhbi5hZ25lckB0b3JhZGV4LmNvbT4KK0RhdGU6IFN1biwgNiBPY3QgMjAxOSAwMDowNTo1NCArMDIwMAorU3ViamVjdDogW1BBVENIXSBzeXN0ZW1kOiB1c2UgRW52aXJvbm1lbnRGaWxlCisKK1VzZSBPRSBzcGVjaWZpYyBlbnZpcm9ubWVudCBmaWxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogU3RlZmFuIEFnbmVyIDxzdGVmYW4uYWduZXJAdG9yYWRleC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8IDIgKysKKyBzeXN0ZW1kL3JwY2JpbmQuc2VydmljZS5pbiB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAyZGQ5NDcxLi40N2E0NmMwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02OSw1ICs2OSw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW25zcy5oIHJwY3N2Yy9tb3VudC5oXSkKKyAjIDIgImV2YWxzIiBuZWVkZWQgdG8gZXhwYW5kIHZhcmlhYmxlIG5hbWVzCisgQUNfU1VCU1QoW19zYmluZGlyXSkKKyBBQ19DT05GSUdfQ09NTUFORFNfUFJFKFtldmFsIGV2YWwgX3NiaW5kaXI9JHNiaW5kaXJdKQorK0FDX1NVQlNUKFtfc3lzY29uZmRpcl0pCisrQUNfQ09ORklHX0NPTU1BTkRTX1BSRShbZXZhbCBldmFsIF9zeXNjb25mZGlyPSRzYmluZGlyXSkKKyAKKyBBQ19PVVRQVVQoW01ha2VmaWxlIHN5c3RlbWQvcnBjYmluZC5zZXJ2aWNlXSkKK2RpZmYgLS1naXQgYS9zeXN0ZW1kL3JwY2JpbmQuc2VydmljZS5pbiBiL3N5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluCitpbmRleCA3YjFjNzRiLi5mNDVlZTFlIDEwMDY0NAorLS0tIGEvc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2UuaW4KKysrKyBiL3N5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluCitAQCAtMTEsNyArMTEsNyBAQCBXYW50cz1ycGNiaW5kLnRhcmdldAorIAorIFtTZXJ2aWNlXQorIFR5cGU9bm90aWZ5CistIyBkaXN0cm8gY2FuIHByb3ZpZGUgYSBkcm9wLWluIGFkZGluZyBFbnZpcm9ubWVudEZpbGU9LS8/Pz8gaWYgbmVlZGVkLgorK0Vudmlyb25tZW50RmlsZT0tQF9zeXNjb25mZGlyQC9ycGNiaW5kLmNvbmYKKyBFeGVjU3RhcnQ9QF9zYmluZGlyQC9ycGNiaW5kICRSUENCSU5EX09QVElPTlMgLXcgLWYKKyAKKyBbSW5zdGFsbF0KKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5jb25mCmluZGV4IDJhNGRmYmMuLmY0MjNhYzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLmNvbmYKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuY29uZgpAQCAtMSwzICsxLDMgQEAKICMgT3B0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byBycGNiaW5kLgogIwotUlBDQklORF9PUFRTPSIiCitSUENCSU5EX09QVElPTlM9IiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zZXJ2aWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2RhZGU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNlcnZpY2UKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPVJQQyBCaW5kIFNlcnZpY2UKLVJlcXVpcmVzPXJwY2JpbmQuc29ja2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9ycGNiaW5kLmNvbmYKLUV4ZWNTdGFydD1AU0JJTkRJUkAvcnBjYmluZCAkUlBDQklORF9PUFRTCi1TdWNjZXNzRXhpdFN0YXR1cz0yCi0KLVtJbnN0YWxsXQotQWxzbz1ycGNiaW5kLnNvY2tldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc29ja2V0IGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc29ja2V0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjNjMWQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNvY2tldAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1SUENiaW5kIFNlcnZlciBBY3RpdmF0aW9uIFNvY2tldAotCi1bU29ja2V0XQotTGlzdGVuU3RyZWFtPS92YXIvcnVuL3JwY2JpbmQuc29jawotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PXNvY2tldHMudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMS4yLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMS4yLjUuYmIKaW5kZXggMTlkNzc4Yi4uYWZmMDBlNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzEuMi41LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8xLjIuNS5iYgpAQCAtMTMsOSArMTMsOCBAQAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcnBjYmluZC9ycGNiaW5kLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vaW5pdC5kIFwKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kLnNvY2tldCBcCi0gICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZF9hZGRfb3B0aW9uX3RvX2ZpeF9wb3J0X251bWJlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaCBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImVkNDZmMDliOWMwZmEyZDQ5MDE1ZjY0MzFiYzVlYTdiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjZTM2MDY4Mzk2M2IzNWMxOWM0M2YwZWUyYzdmMThhYTViODFlZjQxYzNmZGJkMTVmZmNiMDBiOGJmZmRhN2EiCkBAIC0yOCw3ICsyNyw3IEBACiBJTklUU0NSSVBUX05BTUUgPSAicnBjYmluZCIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDEyIDIgMyA0IDUgLiBzdG9wIDYwIDAgMSA2IC4iCiAKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJycGNiaW5kLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicnBjYmluZC5zZXJ2aWNlIHJwY2JpbmQuc29ja2V0IgogCiBpbmhlcml0IHVzZXJhZGQKIApAQCAtNTAsMTIgKzQ5LDQgQEAKIAkJLWUgJ3MsL3NiaW4vLCR7c2JpbmRpcn0vLGcnIFwKIAkJJHtXT1JLRElSfS9pbml0LmQgPiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcnBjYmluZAogCWNobW9kIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JwY2JpbmQKLQotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3JwY2JpbmQuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ycGNiaW5kLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JwY2JpbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcnBjYmluZC5zZXJ2aWNlCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdhYTVmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKLURFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKLXRoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAotcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKLQotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PTM5NzExNDI5ODkyODlhODE5OGE1NDQyMjA3MDNjMmJmIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBcCi0gICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW1vcmUtY29tcGF0aWJpbGl0eS1zdHVmZi5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjg5NzFlYmQ2OGQwNDZmMjgxNGQxMDQwY2I4ZTY2NDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE3NzUzMjhmYTc4M2JkMmE3ODdkNzIyMDE0ZGJkOTljNjA5M2VmZmMxMWYzMzc4Mjc2MDRjMmVmYzVkMjBjMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSAtLXdpdGgtc3lzLXNjcmVlbnJjPSR7c3lzY29uZmRpcn0vc2NyZWVucmMgXAotICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1EIC1tIDY0NCAke1N9L2V0Yy9ldGNzY3JlZW5yYyAke0R9LyR7c3lzY29uZmRpcn0vc2NyZWVucmMKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KLQlmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLQlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC44LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NzJlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuOC4wLmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiTXVsdGlwbGV4aW5nIHRlcm1pbmFsIG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJTY3JlZW4gaXMgYSBmdWxsLXNjcmVlbiB3aW5kb3cgbWFuYWdlciBcCit0aGF0IG11bHRpcGxleGVzIGEgcGh5c2ljYWwgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIFwKK3Byb2Nlc3NlcywgdHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2Z1bmM9YWRkaXRlbSZncm91cD1zY3JlZW4iCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT1iOGRjNzE3YzlhM2RiYTg0MmFlNmM0NGNhMGY3M2Y1MiBcCisgICAgICAgICAgICAgICAgICAgICIKKworREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvY3J5cHQgXAorICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSA9ICJiYXNlLWZpbGVzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2NyZWVuL3NjcmVlbi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdmaWxlOi8vc2NyZWVuLnBhbScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1tb3JlLWNvbXBhdGliaWxpdHktc3R1ZmYucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImQyNzYyMTNkM2FjZDEwMzM5Y2QzNzg0OGI4YzRhYjFlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlMTFiMTNkODQ4OTkyNWZkZTI1ZGZiMDkzNWJmNmVkNzFmOWViNDdlZmYyMzNhMTgxZTA3OGZkZTU2NTVhYTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbdXRlbXB0ZXJdID0gImFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPXllcyxhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD1ubyxsaWJ1dGVtcHRlciwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcHR5LW1vZGU9MDYyMCAtLXdpdGgtcHR5LWdyb3VwPTUgLS13aXRoLXN5cy1zY3JlZW5yYz0ke3N5c2NvbmZkaXJ9L3NjcmVlbnJjIFwKKyAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbScsICctLWRpc2FibGUtcGFtJywgZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtRCAtbSA2NDQgJHtTfS9ldGMvZXRjc2NyZWVucmMgJHtEfS8ke3N5c2NvbmZkaXJ9L3NjcmVlbnJjCisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc2NyZWVuLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc2NyZWVuCisJZmkKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlncmVwIC1xICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAke2JpbmRpcn0vc2NyZWVuID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KKworcGtnX3Bvc3RybV8ke1BOfSAoKSB7CisJcHJpbnRmICIkKGdyZXAgLXYgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscylcbiIgPiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMWE0YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKLQotbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAotd2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQotcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCi1jb3JldXRpbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvZ251bGliLm1rIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2dudWxpYi5tayBiL2xpYi9nbnVsaWIubWsKLWluZGV4IGUxZDc0ZGIuLmMwZTkyZGQgMTAwNjQ0Ci0tLS0gYS9saWIvZ251bGliLm1rCi0rKysgYi9saWIvZ251bGliLm1rCi1AQCAtMTg4Miw3ICsxODgyLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCi0gCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAotIAkgICAgZGFyd2luWzU2XSopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAotKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCi0gCSAgICAqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MwZjYyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEvYmluL3NoCi0KLW1ha2UgLUMgdGVzdHN1aXRlIC1rIHJ1bnRlc3QtVEVTVFMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvc2VkLWFkZC1wdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvc2VkLWFkZC1wdGVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI5MzkwMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3NlZC1hZGQtcHRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1zZWQ6IGFkZCBwdGVzdAotCi1wdGVzdCBuZWVkcyBidWlsZHRlc3QtVEVTVFMgYW5kIHJ1bnRlc3QtVEVTVFMgdGFyZ2V0cy4KLXNlcmlhbC10ZXN0cyBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSB0aG9zZSB0YXJnZXRzLgotCi1BbmQgZml4IGZvbGxvd2luZyBlcnJvciBhZnRlciBhZGQgc2VyaWFsLXRlc3RzLgotCi1bc25pcF0KLWhlbHAybWFuOiBjYW4ndCBnZXQgYC0taGVscCcgaW5mbyBmcm9tIC4uL3NlZC9zZWQKLW1ha2VbMl06ICoqKiBbc2VkLjFdIEVycm9yIDIKLVtzbmlwXQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgfCAgICAyICstCi0gZG9jL01ha2VmaWxlLmFtICAgICAgIHwgICAgMiArLQotIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbSB8ICAgIDYgKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDlkMzNlYzkuLjRmMGM1MzIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQsNyArNCw3IEBAIEFDX0NPTkZJR19BVVhfRElSKGJ1aWxkLWF1eCkKLSBBQ19DT05GSUdfU1JDRElSKFtzZWQvc2VkLmNdKQotIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmg6Y29uZmlnX2guaW4pCi0gQUNfUFJFUkVRKDIuNjApCi0tQU1fSU5JVF9BVVRPTUFLRQotK0FNX0lOSVRfQVVUT01BS0UoW3NlcmlhbC10ZXN0c10pCi0gCi0gU0VEX0ZFQVRVUkVfVkVSU0lPTj00LjIuMgotIEFDX0RFRklORV9VTlFVT1RFRChTRURfRkVBVFVSRV9WRVJTSU9OLCAiJFNFRF9GRUFUVVJFX1ZFUlNJT04iLAotZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5hbSBiL2RvYy9NYWtlZmlsZS5hbQotaW5kZXggYWY2OTc1Yy4uNmZkOGM5YSAxMDA2NDQKLS0tLSBhL2RvYy9NYWtlZmlsZS5hbQotKysrIGIvZG9jL01ha2VmaWxlLmFtCi1AQCAtMjUsNyArMjUsNyBAQCAkKHNyY2Rpcikvcy10ZXhpOiBzZWQtaW4udGV4aSAkKHNyY2RpcikvZ3JvdXBpZnkuc2VkCi0gCWZpCi0gCWVjaG8gc3RhbXAgPiAkKHNyY2Rpcikvcy10ZXhpCi0gCi0tc2VkLjE6ICQodG9wX3NyY2Rpcikvc2VkL3NlZC5jICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjICQoc3JjZGlyKS9zZWQueAotK19zZWQuMTogJCh0b3Bfc3JjZGlyKS9zZWQvc2VkLmMgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMgJChzcmNkaXIpL3NlZC54Ci0gCSQoSEVMUDJNQU4pIC0tbmFtZSAic3RyZWFtIGVkaXRvciBmb3IgZmlsdGVyaW5nIGFuZCB0cmFuc2Zvcm1pbmcgdGV4dCIgXAotIAkgIC1wIHNlZCAtLWluY2x1ZGUgJChzcmNkaXIpL3NlZC54IC1vICQoc3JjZGlyKS9zZWQuMSAkKFNFRCkgCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL01ha2VmaWxlLmFtIGIvdGVzdHN1aXRlL01ha2VmaWxlLmFtCi1pbmRleCBkODBlNzJjLi5iMDVmMDFlIDEwMDY0NAotLS0tIGEvdGVzdHN1aXRlL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KLUBAIC05OSw1ICs5OSwxMSBAQCBFWFRSQV9ESVNUID0gXAotICMgYXV0b21ha2UgbWFrZXMgYGNoZWNrJyBkZXBlbmQgb24gJChURVNUUykuICBEZWNsYXJlCi0gIyBkdW1teSB0YXJnZXRzIGZvciAkKFRFU1RTKSBzbyB0aGF0IG1ha2UgZG9lcyBub3QgY29tcGxhaW4uCi0gCi0raW5zdGFsbC1wdGVzdDoKLSsJY2QgJChCVUlMRERJUik7IHRhciAtYyAtLWV4Y2x1ZGU9Ki5vICQoVEVTVERJUikgfCAoIGNkICQoREVTVERJUikgJiYgdGFyIC14ZiAtICkKLSsJZm9yIGkgaW4gJChFWFRSQV9ESVNUKSB0c3QtcmVnZXgyLmM7IGRvIGluc3RhbGwgJChzcmNkaXIpLyQkaSAkKERFU1RESVIpLyQoVEVTVERJUik7IGRvbmUKLSsJc2VkIC1lICdzL15NYWtlZmlsZTovX01ha2VmaWxlOi8nIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIC1lICdzL2Jhc2gvc2gvJyAtaSAkKERFU1RESVIpLyQoVEVTVERJUikvTWFrZWZpbGUKLSsJZm9yIGkgaW4gYGdyZXAgLXJsICIuLi9zZWQvc2VkIiAkKERFU1RESVIpLyQoVEVTVERJUilgOyBkbyBzZWQgLWUgJ3MvLi5cL3NlZFwvc2VkL3NlZC8nIC1pICQkaTsgZG9uZQotKwotIC5QSE9OWTogJChTRURURVNUUykKLSAkKFNFRFRFU1RTKToKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5M2Q3ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkL3J1bi1wdGVzdApAQCAtMCwwICsxLDUgQEAKKyMhL2Jpbi9zaAorCitjaG93biBub2JvZHkgdGVzdHN1aXRlCitjaG93biBub2JvZHkgLi4vcHRlc3QKK3N1IG5vYm9keSAtYyAibWFrZSB0ZXN0LXN1aXRlLmxvZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTQzNmJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIlN0cmVhbSBFRGl0b3IgKHRleHQgZmlsdGVyaW5nIHV0aWxpdHkpIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NlZC8iCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlZC9zZWQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT03NjdhYjNhMDZkNzU4NGY2ZmQwNDY5YWJhZWM0NDEyZiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NlZC9zZWQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NlZC1hZGQtcHRlc3QucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MTExZGU0ZmFhM2I5ODQ4YTA2ODZiMmYyNjBjNTA1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZWEwYTk0ZDRiNjA1ODk0ZjNlMmQ1NTcyZTNmOTZlNDQxM2JjYWQzYTA4NWFhZTczNjdjMmNmMDc5MDhiMmZmIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ2V0dGV4dCBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi1SUkVDT01NRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgbG9jYWxlLWJhc2UtcnUtcnUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYWNsIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJy0tZW5hYmxlLXJlZ2V4LXRlc3RzJywgJycsIGQpfSIKLQotZG9faW5zdGFsbCAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCWlmIFsgISAke0R9JHtiaW5kaXJ9IC1lZiAke0R9JHtiYXNlX2JpbmRpcn0gXTsgdGhlbgotCSAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCi0JICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCi0JZmkKLX0KLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic2VkIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NlZF0gPSAiJHtiYXNlX2JpbmRpcn0vc2VkIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1URVNURElSID0gInRlc3RzdWl0ZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQotCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi19Ci0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZTNhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuOC5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIlN0cmVhbSBFRGl0b3IgKHRleHQgZmlsdGVyaW5nIHV0aWxpdHkpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NlZC8iCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM2Nzg5NTdiMGM4ZTk2NGFhNmM3MGZkNzc2NDFhNzFlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlZC9zZWQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE1O21kNT1mYjNjN2U2ZmJjYTZmNjY5NDM4NTkxNTNkNGJlOGVmZSBcCisgICAgICAgICAgICAgICAgICAgICIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NlZC9zZWQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZDkwNmVkZmRiMzIwMjMwNDA1OTIzM2Y1MWY5YTcxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNzliMGNmZWE3MWIzN2E4ZWVlYzg0OTBkYjZjNWY3YWU3NzE5YzM1NTg3ZjIxZWRiMDYxN2YzNzBlZWZmNjMzIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ2V0dGV4dCBwdGVzdAorCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0td2l0aC1zZWxpbnV4LC0td2l0aG91dC1zZWxpbnV4LGxpYnNlbGludXgiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGdhd2sgcGVybCBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWZpbGUtY29tcGFyZSBwZXJsLW1vZHVsZS1maWxlLWZpbmQgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLWZpbGUtc3RhdCIKK1JSRUNPTU1FTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1ydS1ydSBsb2NhbGUtYmFzZS1lbi11cyBsb2NhbGUtYmFzZS1lbC1nci5pc28tODg1OS03IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWFjbCBcCisgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGwgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlpZiBbICEgJHtEfSR7YmluZGlyfSAtZWYgJHtEfSR7YmFzZV9iaW5kaXJ9IF07IHRoZW4KKwkgICAgbXYgJHtEfSR7YmluZGlyfS9zZWQgJHtEfSR7YmFzZV9iaW5kaXJ9L3NlZAorCSAgICBybWRpciAke0R9JHtiaW5kaXJ9LworCWZpCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInNlZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzZWRdID0gIiR7YmFzZV9iaW5kaXJ9L3NlZCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIHRlc3RzdWl0ZS9nZXQtbWItY3VyLW1heCB0ZXN0c3VpdGUvdGVzdC1tYnJ0b3djCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgICAgIGNwIC1yZiAke1N9L3Rlc3RzdWl0ZS8gJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgY3AgLXJmICR7Qn0vdGVzdHN1aXRlLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLworICAgICAgICBjcCAtcmYgJHtTfS9idWlsZC1hdXgvICR7RH0ke1BURVNUX1BBVEh9LworICAgICAgICBjcCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgIGNwICR7U30vaW5pdC5jZmcgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICAgICBzZWQgLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvYmFzaC9zaC8nIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgICAgIGZvciBpIGluIGBncmVwIC1ybCAic2VkL3NlZCIgJHtEfSR7UFRFU1RfUEFUSH1gOyBkbyBzZWQgLWUgJ3MvLi5cL3NlZFwvc2VkL3NlZC8nIC1pICRpOyBkb25lCisKKwlzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczphYnNfdG9wX2J1aWxkZGlyID0uKjphYnNfdG9wX2J1aWxkZGlyID0gLi46ZycgXAorCSAgICAtZSAnczphYnNfdG9wX3NyY2RpciA9Lio6YWJzX3RvcF9zcmNkaXIgPSAuLjpnJyBcCisJICAgIC1lICdzOmFic19zcmNkaXIgPS4qOmFic19zcmNkaXIgPSAuLjpnJyBcCisJICAgIC1lICdzOnRvcF9zcmNkaXIgPS4qOnRvcF9zcmNkaXIgPSAuLjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zZWQnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoCmluZGV4IGFhYzJkNDIuLmFiMzE3YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDhjZjM0NTRkNTY3Zjc3MjMzMDIzYmU0OWEzOWEzM2U5ZjA4MzZmODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZhMmQ5NDUzNjU2NjQxMDAyODAyZDgxNjVlODBhZGI5ZTZhNzI5ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KIERhdGU6IFRodSwgMTQgQXByIDIwMTYgMTI6Mjg6NTcgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSB1c2Ugb2Ygc3lzbG9nIGZvciBzeXNyb290CkBAIC0xMiw2ICsxMiw3IEBACiBTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvZ3JvdXBhZGQuYyAgfCAzICsrKwogIHNyYy9ncm91cGRlbC5jICB8IDMgKysrCkBAIC0yMyw3ICsyNCw3IEBACiAgNyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBhZGQuYyBiL3NyYy9ncm91cGFkZC5jCi1pbmRleCA2M2UxYzQ4Li5hNTk2YzQ5IDEwMDY0NAoraW5kZXggMmRkOGVlYy4uZTljNGJiNyAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cGFkZC5jCiArKysgYi9zcmMvZ3JvdXBhZGQuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTM3LDcgKzM4LDcgQEAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2dyb3VwZGVsLmMgYi9zcmMvZ3JvdXBkZWwuYwotaW5kZXggNzBiZWQwMS4uYWJhYmQ4MSAxMDA2NDQKK2luZGV4IGY5NDFhODQuLjVhNzAwNTYgMTAwNjQ0CiAtLS0gYS9zcmMvZ3JvdXBkZWwuYwogKysrIGIvc3JjL2dyb3VwZGVsLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC02NSw3ICs2Niw3IEBACiAgI2luY2x1ZGUgPGdldG9wdC5oPgogICNpbmNsdWRlIDxncnAuaD4KIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBtb2QuYyBiL3NyYy9ncm91cG1vZC5jCi1pbmRleCA3MmRhZjJjLi44OTY1ZjlkIDEwMDY0NAoraW5kZXggMWRjYTVmYy4uYmMxNDQzOCAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cG1vZC5jCiArKysgYi9zcmMvZ3JvdXBtb2QuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTc5LDcgKzgwLDcgQEAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IDNhYWY0NWMuLjFhYjkxNzQgMTAwNjQ0CitpbmRleCA0YWYwZjdjLi4xYjdiZjA2IDEwMDY0NAogLS0tIGEvc3JjL3VzZXJhZGQuYwogKysrIGIvc3JjL3VzZXJhZGQuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTkzLDcgKzk0LDcgQEAKICAjaW5jbHVkZSA8Y3R5cGUuaD4KICAjaW5jbHVkZSA8ZXJybm8uaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcmRlbC5jIGIvc3JjL3VzZXJkZWwuYwotaW5kZXggYzhkZTFkMy4uMjRkM2VhOSAxMDA2NDQKK2luZGV4IGNjOTUxZTUuLjE1M2UwYmUgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcmRlbC5jCiArKysgYi9zcmMvdXNlcmRlbC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMTA3LDcgKzEwOCw3IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPGZjbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3VzZXJtb2QuYyBiL3NyYy91c2VybW9kLmMKLWluZGV4IGNjZmJiOTkuLjI0ZmI2MGQgMTAwNjQ0CitpbmRleCAwNWI5ODcxLi4yMWM2ZGE5IDEwMDY0NAogLS0tIGEvc3JjL3VzZXJtb2QuYwogKysrIGIvc3JjL3VzZXJtb2QuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTEyMCw2ICsxMjEsMyBAQAogICNpbmNsdWRlIDxhc3NlcnQuaD4KICAjaW5jbHVkZSA8Y3R5cGUuaD4KICAjaW5jbHVkZSA8ZXJybm8uaD4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUwYmEzZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1NYWtlLXRoZS1zcF9sc3RjaGctc2hhZG93LWZpZWxkLXJlcHJvZHVjaWJsZS1yZS4tNzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1Gcm9tIGZlMzRhMmEwZTQ0YmM4MGZmMjEzYmZkMTg1MDQ2YTVmMTBjOTQ5OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBMYW1iIDxjaHJpc0BjaHJpcy1sYW1iLmNvLnVrPgotRGF0ZTogV2VkLCAyIEphbiAyMDE5IDE4OjA2OjE2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBNYWtlIHRoZSBzcF9sc3RjaGcgc2hhZG93IGZpZWxkIHJlcHJvZHVjaWJsZSAocmUuICM3MSkKLQotRnJvbSA8aHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvcHVsbC83MT46Ci0KLWBgYAotVGhlIHRoaXJkIGZpZWxkIGluIHRoZSAvZXRjL3NoYWRvdyBmaWxlIChzcF9sc3RjaGcpIGNvbnRhaW5zIHRoZSBkYXRlIG9mCi10aGUgbGFzdCBwYXNzd29yZCBjaGFuZ2UgZXhwcmVzc2VkIGFzIHRoZSBudW1iZXIgb2YgZGF5cyBzaW5jZSBKYW4gMSwgMTk3MC4KLUFzIHRoaXMgaXMgYSByZWxhdGl2ZSB0aW1lLCBjcmVhdGluZyBhIHVzZXIgdG9kYXkgd2lsbCByZXN1bHQgaW46Ci0KLXVzZXJuYW1lOjE3MjM4OjA6OTk5OTk6Nzo6Ogotd2hpbHN0IGNyZWF0aW5nIHRoZSBzYW1lIHVzZXIgdG9tb3Jyb3cgd2lsbCByZXN1bHQgaW46Ci0KLXVzZXJuYW1lOjE3MjM5OjA6OTk5OTk6Nzo6OgotVGhpcyBoYXMgYW4gaW1wYWN0IGZvciB0aGUgUmVwcm9kdWNpYmxlIEJ1aWxkc1swXSBwcm9qZWN0IHdoZXJlIHdlIGFpbSB0bwotYmUgaW5kZXBlbmRlbnQgb2YgYXMgbWFueSBlbGVtZW50cyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYXMgcG9zc2libGUsCi1pbmNsdWRpbmcgdGhlIGN1cnJlbnQgZGF0ZS4KLQotVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBiZWhhdmlvdXIgdG8gdXNlIHRoZSBTT1VSQ0VfREFURV9FUE9DSFsxXQotZW52aXJvbm1lbnQgdmFyaWFibGUgKGluc3RlYWQgb2YgSmFuIDEsIDE5NzApIGlmIHZhbGlkLgotYGBgCi0KLVRoaXMgdXBkYXRlZCBQUiBhZGRzIHNvbWUgbWlzc2luZyBjYWxscyB0byBnZXR0aW1lICgpLiBUaGlzIHdhcyBvcmlnaW5hbGx5Ci1maWxlZCBieSBKb2hhbm5lcyBTY2hhdWVyIGluIERlYmlhbiBhcyAjOTE3NzczIFsyXS4KLQotWzBdIGh0dHBzOi8vcmVwcm9kdWNpYmxlLWJ1aWxkcy5vcmcvCi1bMV0gaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy9zcGVjcy9zb3VyY2UtZGF0ZS1lcG9jaC8KLVsyXSBodHRwczovL2J1Z3MuZGViaWFuLm9yZy85MTc3NzMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgotLS0tCi0gbGlibWlzYy9wd2Qyc3B3ZC5jIHwgMyArLS0KLSBzcmMvcHdjay5jICAgICAgICAgfCAyICstCi0gc3JjL3B3Y29udi5jICAgICAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlibWlzYy9wd2Qyc3B3ZC5jIGIvbGlibWlzYy9wd2Qyc3B3ZC5jCi1pbmRleCBjMWI5YjI5YWM4NzMuLjY3OTlkZDUwZDQ5MCAxMDA2NDQKLS0tLSBhL2xpYm1pc2MvcHdkMnNwd2QuYwotKysrIGIvbGlibWlzYy9wd2Qyc3B3ZC5jCi1AQCAtNDAsNyArNDAsNiBAQAotICNpbmNsdWRlICJwcm90b3R5cGVzLmgiCi0gI2luY2x1ZGUgImRlZmluZXMuaCIKLSAjaW5jbHVkZSA8cHdkLmg+Ci0tZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3QgKik7Ci0gCi0gLyoKLSAgKiBwd2RfdG9fc3B3ZCAtIGNyZWF0ZSBlbnRyaWVzIGZvciBuZXcgc3B3ZCBzdHJ1Y3R1cmUKLUBAIC02Niw3ICs2NSw3IEBAIHN0cnVjdCBzcHdkICpwd2RfdG9fc3B3ZCAoY29uc3Qgc3RydWN0IHBhc3N3ZCAqcHcpCi0gCQkgKi8KLSAJCXNwLnNwX21pbiA9IDA7Ci0gCQlzcC5zcF9tYXggPSAoMTAwMDBMICogREFZKSAvIFNDQUxFOwotLQkJc3Auc3BfbHN0Y2hnID0gKGxvbmcpIHRpbWUgKCh0aW1lX3QgKikgMCkgLyBTQ0FMRTsKLSsJCXNwLnNwX2xzdGNoZyA9IChsb25nKSBnZXR0aW1lICgpIC8gU0NBTEU7Ci0gCQlpZiAoMCA9PSBzcC5zcF9sc3RjaGcpIHsKLSAJCQkvKiBCZXR0ZXIgZGlzYWJsZSBhZ2luZyB0aGFuIHJlcXVpcmluZyBhIHBhc3N3b3JkCi0gCQkJICogY2hhbmdlICovCi1kaWZmIC0tZ2l0IGEvc3JjL3B3Y2suYyBiL3NyYy9wd2NrLmMKLWluZGV4IDBmZmI3MTFlZmIxMy4uZjcwMDcxYjEyNTAwIDEwMDY0NAotLS0tIGEvc3JjL3B3Y2suYwotKysrIGIvc3JjL3B3Y2suYwotQEAgLTYwOSw3ICs2MDksNyBAQCBzdGF0aWMgdm9pZCBjaGVja19wd19maWxlIChpbnQgKmVycm9ycywgYm9vbCAqY2hhbmdlZCkKLSAJCQkJCXNwLnNwX2luYWN0ICA9IC0xOwotIAkJCQkJc3Auc3BfZXhwaXJlID0gLTE7Ci0gCQkJCQlzcC5zcF9mbGFnICAgPSBTSEFET1dfU1BfRkxBR19VTlNFVDsKLS0JCQkJCXNwLnNwX2xzdGNoZyA9IChsb25nKSB0aW1lICgodGltZV90ICopIDApIC8gU0NBTEU7Ci0rCQkJCQlzcC5zcF9sc3RjaGcgPSAobG9uZykgZ2V0dGltZSAoKSAvIFNDQUxFOwotIAkJCQkJaWYgKDAgPT0gc3Auc3BfbHN0Y2hnKSB7Ci0gCQkJCQkJLyogQmV0dGVyIGRpc2FibGUgYWdpbmcgdGhhbgotIAkJCQkJCSAqIHJlcXVpcmluZyBhIHBhc3N3b3JkIGNoYW5nZQotZGlmZiAtLWdpdCBhL3NyYy9wd2NvbnYuYyBiL3NyYy9wd2NvbnYuYwotaW5kZXggOWM2OWZhMTMxZDhlLi5mOTMyZjI2NmM1OWMgMTAwNjQ0Ci0tLS0gYS9zcmMvcHdjb252LmMKLSsrKyBiL3NyYy9wd2NvbnYuYwotQEAgLTI2Nyw3ICsyNjcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXNwZW50LnNwX2ZsYWcgICA9IFNIQURPV19TUF9GTEFHX1VOU0VUOwotIAkJfQotIAkJc3BlbnQuc3BfcHdkcCA9IHB3LT5wd19wYXNzd2Q7Ci0tCQlzcGVudC5zcF9sc3RjaGcgPSAobG9uZykgdGltZSAoKHRpbWVfdCAqKSAwKSAvIFNDQUxFOwotKwkJc3BlbnQuc3BfbHN0Y2hnID0gKGxvbmcpIGdldHRpbWUgKCkgLyBTQ0FMRTsKLSAJCWlmICgwID09IHNwZW50LnNwX2xzdGNoZykgewotIAkJCS8qIEJldHRlciBkaXNhYmxlIGFnaW5nIHRoYW4gcmVxdWlyaW5nIGEgcGFzc3dvcmQKLSAJCQkgKiBjaGFuZ2UgKi8KLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWVycm9yLXdpdGgtZGFzaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWVycm9yLXdpdGgtZGFzaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0Y2JiMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1lcnJvci13aXRoLWRhc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDNjNTJhODRmZjg3NzU1OTBlN2U5ZGE5YzBkNDQwOGMyMzQ5NDMwNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE3IEp1biAyMDE5IDE1OjM2OjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogZml4IGNvbmZpZ3VyZSBlcnJvciB3aXRoIGRhc2gKLQotQSBjb25maWd1cmUgZXJyb3Igb2NjdXJzIHdoZW4gL2Jpbi9zaCAtPiBkYXNoOgotICBjaGVja2luZyBmb3IgaXNfc2VsaW51eF9lbmFibGVkIGluIC1sc2VsaW51eC4uLiB5ZXMKLSAgY2hlY2tpbmcgZm9yIHNlbWFuYWdlX2Nvbm5lY3QgaW4gLWxzZW1hbmFnZS4uLiB5ZXMKLSAgY29uZmlndXJlOiAxNjMyMjogdGVzdDogeWVzeWVzOiB1bmV4cGVjdGVkIG9wZXJhdG9yCi0KLVVzZSAiPSIgaW5zdGVhZCBvZiAiPT0iIHNpbmNlIGRhc2ggZG9lc24ndCBzdXBwb3J0IHRoaXMgb3BlcmF0b3IuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9jb21taXQvM2M1MmE4NGZmODc3NTU5MGU3ZTlkYTljMGQ0NDA4YzIzNDk0MzA1ZV0KLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2NzYyNTU2Li4xOTA3YWZiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01MDAsNyArNTAwLDcgQEAgaWYgdGVzdCAiJHdpdGhfc2VsaW51eCIgIT0gIm5vIjsgdGhlbgotIAkJCUFDX01TR19FUlJPUihbbGlic2VtYW5hZ2Ugbm90IGZvdW5kXSkKLSAJCWZpCi0gCi0tCQlpZiB0ZXN0ICIkc2VsaW51eF9saWIkc2VtYW5hZ2VfbGliIiA9PSAieWVzeWVzIiA7IHRoZW4KLSsJCWlmIHRlc3QgIiRzZWxpbnV4X2xpYiRzZW1hbmFnZV9saWIiID0gInllc3llcyIgOyB0aGVuCi0gCQkJQUNfREVGSU5FKFdJVEhfU0VMSU5VWCwgMSwKLSAJCQkgICAgICAgICAgW0J1aWxkIHNoYWRvdyB3aXRoIFNFTGludXggc3VwcG9ydF0pCi0gCQkJTElCU0VMSU5VWD0iLWxzZWxpbnV4IgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS11c2VyYWRkLmMtY3JlYXRlLXBhcmVudC1kaXJlY3Rvcmllcy13aGVuLW5lY2Vzc2FyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWE2ZjY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gdXNlcmFkZC5jOiBjcmVhdGUgcGFyZW50IGRpcmVjdG9yaWVzIHdoZW4gbmVjZXNzYXJ5Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy91c2VyYWRkLmMgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCAwMGEzYzMwLi45ZWNiYjU4IDEwMDY0NAotLS0tIGEvc3JjL3VzZXJhZGQuYwotKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTIwMjEsNiArMjAyMSwzNSBAQCBzdGF0aWMgdm9pZCB1c3JfdXBkYXRlICh2b2lkKQotIH0KLSAKLSAvKgotKyAqIG1rZGlyX3AgLSBjcmVhdGUgZGlyZWN0b3JpZXMsIGluY2x1ZGluZyBwYXJlbnQgZGlyZWN0b3JpZXMgd2hlbiBuZWVkZWQKLSsgKgotKyAqIHNpbWlsYXIgdG8gYG1rZGlyIC1wJwotKyAqLwotK3ZvaWQgbWtkaXJfcChjb25zdCBjaGFyICpwYXRoKSB7Ci0rCWludCBsZW4gPSBzdHJsZW4ocGF0aCk7Ci0rCWNoYXIgbmV3ZGlyW2xlbiArIDFdOwotKwltb2RlX3QgbW9kZSA9IDA3NTU7Ci0rCWludCBpID0gMDsKLSsKLSsJaWYgKHBhdGhbaV0gPT0gJ1wwJykgewotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCS8qIHNraXAgdGhlIGxlYWRpbmcgJy8nICovCi0rCWkrKzsKLSsKLSsJd2hpbGUocGF0aFtpXSAhPSAnXDAnKSB7Ci0rCQlpZiAocGF0aFtpXSA9PSAnLycpIHsKLSsJCQlzdHJuY3B5KG5ld2RpciwgcGF0aCwgaSk7Ci0rCQkJbmV3ZGlyW2ldID0gJ1wwJzsKLSsJCQlta2RpcihuZXdkaXIsIG1vZGUpOwotKwkJfQotKwkJaSsrOwotKwl9Ci0rCW1rZGlyKHBhdGgsIG1vZGUpOwotK30KLSsKLSsvKgotICAqIGNyZWF0ZV9ob21lIC0gY3JlYXRlIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkKLSAgKgotICAqCWNyZWF0ZV9ob21lKCkgY3JlYXRlcyB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90Ci1AQCAtMjAzOCwzOSArMjA2NywzNiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaG9tZSAodm9pZCkKLSAJCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7Ci0gCQl9Ci0gI2VuZGlmCi0tCQkvKiBYWFggLSBjcmVhdGUgbWlzc2luZyBwYXJlbnQgZGlyZWN0b3JpZXMuICAtLW1hcmVrbSAqLwotLQkJaWYgKG1rZGlyIChwcmVmaXhfdXNlcl9ob21lLCAwKSAhPSAwKSB7Ci0tCQkJZnByaW50ZiAoc3RkZXJyLAotLQkJCSAgICAgICAgIF8oIiVzOiBjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAlc1xuIiksCi0tCQkJICAgICAgICAgUHJvZywgcHJlZml4X3VzZXJfaG9tZSk7Ci0rCQlta2Rpcl9wKHVzZXJfaG9tZSk7Ci0rCX0KLSsJaWYgKGFjY2VzcyAocHJlZml4X3VzZXJfaG9tZSwgRl9PSykgIT0gMCkgewotICNpZmRlZiBXSVRIX0FVRElUCi0tCQkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKLS0JCQkgICAgICAgICAgICAgICJhZGRpbmcgaG9tZSBkaXJlY3RvcnkiLAotLQkJCSAgICAgICAgICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAotLQkJCSAgICAgICAgICAgICAgU0hBRE9XX0FVRElUX0ZBSUxVUkUpOwotKwkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKLSsJCQkgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLSsJCQkgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCi0rCQkJICAgICAgU0hBRE9XX0FVRElUX0ZBSUxVUkUpOwotICNlbmRpZgotLQkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLS0JCX0KLS0JCSh2b2lkKSBjaG93biAocHJlZml4X3VzZXJfaG9tZSwgdXNlcl9pZCwgdXNlcl9naWQpOwotLQkJY2htb2QgKHByZWZpeF91c2VyX2hvbWUsCi0tCQkgICAgICAgMDc3NyAmIH5nZXRkZWZfbnVtICgiVU1BU0siLCBHRVRERUZfREVGQVVMVF9VTUFTSykpOwotLQkJaG9tZV9hZGRlZCA9IHRydWU7Ci0rCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7Ci0rCX0KLSsJKHZvaWQpIGNob3duIChwcmVmaXhfdXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7Ci0rCWNobW9kIChwcmVmaXhfdXNlcl9ob21lLAotKwkgICAgICAgMDc3NyAmIH5nZXRkZWZfbnVtICgiVU1BU0siLCBHRVRERUZfREVGQVVMVF9VTUFTSykpOwotKwlob21lX2FkZGVkID0gdHJ1ZTsKLSAjaWZkZWYgV0lUSF9BVURJVAotLQkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKLS0JCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCi0tCQkgICAgICAgICAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLS0JCSAgICAgICAgICAgICAgU0hBRE9XX0FVRElUX1NVQ0NFU1MpOwotKwlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotKwkJICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCi0rCQkgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCi0rCQkgICAgICBTSEFET1dfQVVESVRfU1VDQ0VTUyk7Ci0gI2VuZGlmCi0gI2lmZGVmIFdJVEhfU0VMSU5VWAotLQkJLyogUmVzZXQgU0VMaW51eCB0byBjcmVhdGUgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbnRleHRzICovCi0tCQlpZiAocmVzZXRfc2VsaW51eF9maWxlX2NvbnRleHQgKCkgIT0gMCkgewotLQkJCWZwcmludGYgKHN0ZGVyciwKLS0JCQkgICAgICAgICBfKCIlczogY2Fubm90IHJlc2V0IFNFTGludXggZmlsZSBjcmVhdGlvbiBjb250ZXh0XG4iKSwKLS0JCQkgICAgICAgICBQcm9nKTsKLS0JCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7Ci0tCQl9Ci0tI2VuZGlmCi0rCS8qIFJlc2V0IFNFTGludXggdG8gY3JlYXRlIGZpbGVzIHdpdGggZGVmYXVsdCBjb250ZXh0cyAqLwotKwlpZiAocmVzZXRfc2VsaW51eF9maWxlX2NvbnRleHQgKCkgIT0gMCkgewotKwkJZnByaW50ZiAoc3RkZXJyLAotKwkJCSBfKCIlczogY2Fubm90IHJlc2V0IFNFTGludXggZmlsZSBjcmVhdGlvbiBjb250ZXh0XG4iKSwKLSsJCQkgUHJvZyk7Ci0rCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7Ci0gCX0KLSsjZW5kaWYKLSB9Ci0gCi0gLyoKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAyLUFsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMi1BbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MzMyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMi1BbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoCkBAIC0wLDAgKzEsMzAxIEBACitGcm9tIGE3ZDk5NTIyODQ5MWFkNTI1NWFkODZjMWYwNGJhMDcxZjY4ODA4OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDE2IE5vdiAyMDEzIDE1OjI3OjQ3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGZvciBzZXR0aW5nIHBhc3N3b3JkIGluIGNsZWFyIHRleHQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCistLS0KKyBzcmMvTWFrZWZpbGUuYW0gfCAgOCArKysrLS0tLQorIHNyYy9ncm91cGFkZC5jICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCisgc3JjL2dyb3VwbW9kLmMgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBzcmMvdXNlcmFkZC5jICAgfCAyMSArKysrKysrKysrKysrKystLS0tLS0KKyBzcmMvdXNlcm1vZC5jICAgfCAyMCArKysrKysrKysrKysrKystLS0tLQorIDUgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IGYzMWZkN2EuLjRhMzE3YTMgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTEwMywxMCArMTAzLDEwIEBAIGNoc2hfTERBREQgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVF9OT1BBTSkKKyBjaHBhc3N3ZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpICQoTElCRUNPTkYpCisgZXhwaXJ5X0xEQUREID0gJChMREFERCkgJChMSUJFQ09ORikKKyBncGFzc3dkX0xEQUREICA9ICQoTERBREQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkgJChMSUJFQ09ORikKKy1ncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJFQ09ORikKKytncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJFQ09ORikgJChMSUJDUllQVCkKKyBncm91cGRlbF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJFQ09ORikKKyBncm91cG1lbXNfTERBREQgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorLWdyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorK2dyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIGdycGNrX0xEQUREICAgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIGdycGNvbnZfTERBREQgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIGdycHVuY29udl9MREFERCA9ICQoTERBREQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJFQ09ORikKK0BAIC0xMjcsOSArMTI3LDkgQEAgc3VfU09VUkNFUyAgICAgPSBcCisgCXN1YXV0aC5jCisgc3VfTERBREQgICAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKSAkKExJQkVDT05GKQorIHN1bG9naW5fTERBREQgID0gJChMREFERCkgJChMSUJDUllQVCkgJChMSUJFQ09ORikKKy11c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJFQ09ORikKKyt1c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJFQ09ORikgJChMSUJDUllQVCkKKyB1c2VyZGVsX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJFQ09ORikKKy11c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJFQ09ORikKKyt1c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJFQ09ORikgJChMSUJDUllQVCkKKyB2aXB3X0xEQUREICAgICA9ICQoTERBREQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJFQ09ORikKKyAKKyBpbnN0YWxsLWFtOiBhbGwtYW0KK2RpZmYgLS1naXQgYS9zcmMvZ3JvdXBhZGQuYyBiL3NyYy9ncm91cGFkZC5jCitpbmRleCBlOWM0YmI3Li5kNTcyYzAwIDEwMDY0NAorLS0tIGEvc3JjL2dyb3VwYWRkLmMKKysrKyBiL3NyYy9ncm91cGFkZC5jCitAQCAtMTI3LDkgKzEyNywxMCBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gY3JlYXRlIGdyb3VwcyB3aXRoIGR1cGxpY2F0ZVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSB0aGlzIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cFxuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgZGlyZWN0b3J5IHByZWZpeFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzICgiXG4iLCB1c2FnZW91dCk7CisgCWV4aXQgKHN0YXR1cyk7CisgfQorQEAgLTM5MSwxMyArMzkyLDE0IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCXsia2V5IiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnSyd9LAorIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCisgCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKKysJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKyAJCXsic3lzdGVtIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAncid9LAorIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAorIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9CisgCX07CisgCistCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6clI6UDoiLAorKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOlA6clI6QToiLAorIAkJICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgeworIAkJc3dpdGNoIChjKSB7CisgCQljYXNlICdmJzoKK0BAIC00NDksMTIgKzQ1MSwyMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJcGZsZyA9IHRydWU7CisgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOworIAkJCWJyZWFrOworKwkJY2FzZSAnUCc6CisrCQkJcGZsZyA9IHRydWU7CisrCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ3InOgorIAkJCXJmbGcgPSB0cnVlOworIAkJCWJyZWFrOworIAkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCisgCQkJYnJlYWs7CistCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKKysJCQkJIFByb2cpOworKwkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJYnJlYWs7CisgCQlkZWZhdWx0OgorIAkJCXVzYWdlIChFX1VTQUdFKTsKK0BAIC01ODgsNyArNTk4LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOworKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoImdyb3VwYWRkIik7CisgI2lmZGVmIFdJVEhfQVVESVQKK2RpZmYgLS1naXQgYS9zcmMvZ3JvdXBtb2QuYyBiL3NyYy9ncm91cG1vZC5jCitpbmRleCBiYzE0NDM4Li4yNWNjYjQ0IDEwMDY0NAorLS0tIGEvc3JjL2dyb3VwbW9kLmMKKysrKyBiL3NyYy9ncm91cG1vZC5jCitAQCAtMTM4LDggKzEzOCw5IEBAIHN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gdXNlIGEgZHVwbGljYXRlIChub24tdW5pcXVlKSBHSURcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgKGVuY3J5cHRlZClcbiIKKyAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGlzIGNsZWFyIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOworLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKKyAJZXhpdCAoc3RhdHVzKTsKKyB9CitAQCAtMzg3LDExICszODgsMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJeyJuZXctbmFtZSIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICduJ30sCisgCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAorIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9CisgCX07CistCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpSOlA6IiwKKysJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlA6UjpBOiIsCisgCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CisgCQlzd2l0Y2ggKGMpIHsKKyAJCWNhc2UgJ2cnOgorQEAgLTQxOCw5ICs0MjAsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCWdyb3VwX3Bhc3N3ZCA9IG9wdGFyZzsKKyAJCQlwZmxnID0gdHJ1ZTsKKyAJCQlicmVhazsKKysJCWNhc2UgJ1AnOgorKwkJCWdyb3VwX3Bhc3N3ZCA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7CisrCQkJcGZsZyA9IHRydWU7CisrCQkJYnJlYWs7CisgCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQlicmVhazsKKy0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCWZwcmludGYgKHN0ZGVyciwKKysJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkgUHJvZyk7CisrCQkJZXhpdCAoRV9CQURfQVJHKTsKKyAJCQlicmVhazsKKyAJCWRlZmF1bHQ6CisgCQkJdXNhZ2UgKEVfVVNBR0UpOworQEAgLTc2MSw3ICs3NzEsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOworIAorIAlPUEVOTE9HICgiZ3JvdXBtb2QiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAorZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCitpbmRleCAxYjdiZjA2Li40NGYwOWUyIDEwMDY0NAorLS0tIGEvc3JjL3VzZXJhZGQuYworKysrIGIvc3JjL3VzZXJhZGQuYworQEAgLTg1Myw5ICs4NTMsMTAgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgdXNlcnMgd2l0aCBkdXBsaWNhdGVcbiIKKyAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdW5pcXVlKSBVSURcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBlbmNyeXB0ZWQgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2xlYXIgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBsb2dpbiBzaGVsbCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICB1c2VyIElEIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1VLCAtLXVzZXItZ3JvdXAgICAgICAgICAgICAgIGNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlclxuIiksIHVzYWdlb3V0KTsKK0BAIC0xMTMzLDkgKzExMzQsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCXsibm8tdXNlci1ncm91cCIsICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ04nfSwKKyAJCQl7Im5vbi11bmlxdWUiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCisgCQkJeyJwYXNzd29yZCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKyAJCQl7InN5c3RlbSIsICAgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCisgCQkJeyJyb290IiwgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorLQkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCQl7InByZWZpeCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCisgCQkJeyJzaGVsbCIsICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAorIAkJCXsidWlkIiwgICAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKKyAJCQl7InVzZXItZ3JvdXAiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdVJ30sCitAQCAtMTE0Niw5ICsxMTQ4LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJfTsKKyAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAorICNpZmRlZiBXSVRIX1NFTElOVVgKKy0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VVo6IiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVWjoiLAorICNlbHNlCQkJCS8qICFXSVRIX1NFTElOVVggKi8KKy0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VSIsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6QTpzOnU6VSIsCisgI2VuZGlmCQkJCS8qICFXSVRIX1NFTElOVVggKi8KKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgeworIAkJCXN3aXRjaCAoYykgeworQEAgLTEzMjAsMTIgKzEzMjIsMTkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCQl9CisgCQkJCXVzZXJfcGFzcyA9IG9wdGFyZzsKKyAJCQkJYnJlYWs7CisrCQkJY2FzZSAnUCc6IC8qIHNldCBjbGVhciB0ZXh0IHBhc3N3b3JkICovCisrCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7CisrCQkJCWJyZWFrOworIAkJCWNhc2UgJ3InOgorIAkJCQlyZmxnID0gdHJ1ZTsKKyAJCQkJYnJlYWs7CisgCQkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCisgCQkJCWJyZWFrOworLQkJCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkJIFByb2cpOworKwkJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCQlicmVhazsKKyAJCQljYXNlICdzJzoKKyAJCQkJaWYgKCAgICggIVZBTElEIChvcHRhcmcpICkKK0BAIC0yMjU3LDcgKzIyNjYsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CisgCistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJ1c2VyYWRkIik7CisgI2lmZGVmIFdJVEhfQVVESVQKK2RpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYworaW5kZXggMjFjNmRhOS4uY2ZmZGIzZSAxMDA2NDQKKy0tLSBhL3NyYy91c2VybW9kLmMKKysrKyBiL3NyYy91c2VybW9kLmMKK0BAIC00MzEsOCArNDMxLDkgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKKyAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsb2NhdGlvbiAodXNlIG9ubHkgd2l0aCAtZClcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB1c2luZyBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCB1c2UgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBuZXcgbG9naW4gc2hlbGwgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICBuZXcgVUlEIGZvciB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdW5sb2NrICAgICAgICAgICAgICAgICAgdW5sb2NrIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CitAQCAtMTAxMCw4ICsxMDExLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCXsibW92ZS1ob21lIiwgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdtJ30sCisgCQkJeyJub24tdW5pcXVlIiwgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCQl7InBhc3N3b3JkIiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKyAJCQl7InJvb3QiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorLQkJCXsicHJlZml4IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisrCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKKyAJCQl7InNoZWxsIiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAorIAkJCXsidWlkIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCisgCQkJeyJ1bmxvY2siLCAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKK0BAIC0xMDI3LDcgKzEwMjksNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJe05VTEwsIDAsIE5VTEwsICdcMCd9CisgCQl9OworIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCistCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFiYzpkOmU6ZjpnOkc6aGw6TG1vcDpSOnM6dTpVUDoiCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFiYzpkOmU6ZjpnOkc6aGw6TG1vcDpQOlI6czp1OlVBOiIKKyAjaWZkZWYgRU5BQkxFX1NVQklEUworIAkJICAgICAgICAgICAgICAgICAgICAgICAgICJ2Onc6VjpXOiIKKyAjZW5kaWYJCQkJLyogRU5BQkxFX1NVQklEUyAqLworQEAgLTExMzAsOSArMTEzMiwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJCXVzZXJfcGFzcyA9IG9wdGFyZzsKKyAJCQkJcGZsZyA9IHRydWU7CisgCQkJCWJyZWFrOworKwkJCWNhc2UgJ1AnOgorKwkJCQl1c2VyX3Bhc3MgPSBwd19lbmNyeXB0IChvcHRhcmcsIGNyeXB0X21ha2Vfc2FsdCAoTlVMTCwgTlVMTCkpOworKwkJCQlwZmxnID0gdHJ1ZTsKKysJCQkJYnJlYWs7CisgCQkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCisgCQkJCWJyZWFrOworLQkJCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkJIFByb2cpOworKwkJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCQlicmVhazsKKyAJCQljYXNlICdzJzoKKyAJCQkJaWYgKCFWQUxJRCAob3B0YXJnKSkgeworQEAgLTIxMjcsNyArMjEzNyw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKyAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOworLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJ1c2VybW9kIik7CisgI2lmZGVmIFdJVEhfQVVESVQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9hbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhN2ViMDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDAgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBBbGxvdyBmb3Igc2V0dGluZyBwYXNzd29yZCBpbiBjbGVhciB0ZXh0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSB8ICA4ICsrKystLS0tCi0gc3JjL2dyb3VwYWRkLmMgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KLSBzcmMvZ3JvdXBtb2QuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQotIHNyYy91c2VyYWRkLmMgICB8IDIxICsrKysrKysrKysrKysrKy0tLS0tLQotIHNyYy91c2VybW9kLmMgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggM2M5OGE4ZC4uYjgwOTNkNSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtOTMsMTAgKzkzLDEwIEBAIGNoZ3Bhc3N3ZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBjaHNoX0xEQUREICAgICA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFRfTk9QQU0pICQoTElCU0tFWSkgJChMSUJNRCkKLSBjaHBhc3N3ZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCi0gZ3Bhc3N3ZF9MREFERCAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCi0tZ3JvdXBhZGRfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpCi0rZ3JvdXBhZGRfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCi0gZ3JvdXBkZWxfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpCi0gZ3JvdXBtZW1zX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkKLS1ncm91cG1vZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKLStncm91cG1vZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBncnBja19MREFERCAgICA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLSBncnBjb252X0xEQUREICA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLSBncnB1bmNvbnZfTERBREQgPSAkKExEQUREKSAkKExJQlNFTElOVVgpCi1AQCAtMTE3LDkgKzExNyw5IEBAIHN1X1NPVVJDRVMgICAgID0gXAotIAlzdWF1dGguYwotIHN1X0xEQUREICAgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQVVESVQpICQoTElCQ1JZUFRfTk9QQU0pICQoTElCU0tFWSkgJChMSUJNRCkKLSBzdWxvZ2luX0xEQUREICA9ICQoTERBREQpICQoTElCQ1JZUFQpCi0tdXNlcmFkZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpCi0rdXNlcmFkZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpICQoTElCQ1JZUFQpCi0gdXNlcmRlbF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpCi0tdXNlcm1vZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpCi0rdXNlcm1vZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpICQoTElCQ1JZUFQpCi0gdmlwd19MREFERCAgICAgPSAkKExEQUREKSAkKExJQlNFTElOVVgpCi0gCi0gaW5zdGFsbC1hbTogYWxsLWFtCi1kaWZmIC0tZ2l0IGEvc3JjL2dyb3VwYWRkLmMgYi9zcmMvZ3JvdXBhZGQuYwotaW5kZXggYjU3MDA2Yy4uNjNlMWM0OCAxMDA2NDQKLS0tLSBhL3NyYy9ncm91cGFkZC5jCi0rKysgYi9zcmMvZ3JvdXBhZGQuYwotQEAgLTEyMyw5ICsxMjMsMTAgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHRvIGNyZWF0ZSBncm91cHMgd2l0aCBkdXBsaWNhdGVcbiIKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdW5pcXVlKSBHSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICB1c2UgdGhpcyBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXBcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCB1c2UgdGhpcyBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1yLCAtLXN5c3RlbSAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOwotLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgZGlyZWN0b3J5IHByZWZpeFxuIiksIHVzYWdlb3V0KTsKLSsJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIGRpcmVjdG9yeSBwcmVmaXhcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOwotIAlleGl0IChzdGF0dXMpOwotIH0KLUBAIC0zODcsMTMgKzM4OCwxNCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQl7ImtleSIsICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0snfSwKLSAJCXsibm9uLXVuaXF1ZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAotIAkJeyJwYXNzd29yZCIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCi0rCQl7ImNsZWFyLXBhc3N3b3JkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0gCQl7InN5c3RlbSIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3InfSwKLSAJCXsicm9vdCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0rCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKLSAJCXtOVUxMLCAwLCBOVUxMLCAnXDAnfQotIAl9OwotIAotLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOnJSOlA6IiwKLSsJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpQOnJSOkE6IiwKLSAJCSAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKLSAJCXN3aXRjaCAoYykgewotIAkJY2FzZSAnZic6Ci1AQCAtNDQ1LDEyICs0NDcsMjAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXBmbGcgPSB0cnVlOwotIAkJCWdyb3VwX3Bhc3N3ZCA9IG9wdGFyZzsKLSAJCQlicmVhazsKLSsJCWNhc2UgJ1AnOgotKwkJCXBmbGcgPSB0cnVlOwotKwkJCWdyb3VwX3Bhc3N3ZCA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJYnJlYWs7Ci0gCQljYXNlICdyJzoKLSAJCQlyZmxnID0gdHJ1ZTsKLSAJCQlicmVhazsKLSAJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLwotIAkJCWJyZWFrOwotLQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJZnByaW50ZiAoc3RkZXJyLAotKwkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCi0rCQkJCSBQcm9nKTsKLSsJCQlleGl0IChFX0JBRF9BUkcpOwotIAkJCWJyZWFrOwotIAkJZGVmYXVsdDoKLSAJCQl1c2FnZSAoRV9VU0FHRSk7Ci1AQCAtNTg0LDcgKzU5NCw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCSh2b2lkKSB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKLSAKLSAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOwotLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLVAiLCBhcmdjLCBhcmd2KTsKLSsJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1BIiwgYXJnYywgYXJndik7Ci0gCi0gCU9QRU5MT0cgKCJncm91cGFkZCIpOwotICNpZmRlZiBXSVRIX0FVRElUCi1kaWZmIC0tZ2l0IGEvc3JjL2dyb3VwbW9kLmMgYi9zcmMvZ3JvdXBtb2QuYwotaW5kZXggYjI5M2I5OC4uNzJkYWYyYyAxMDA2NDQKLS0tLSBhL3NyYy9ncm91cG1vZC5jCi0rKysgYi9zcmMvZ3JvdXBtb2QuYwotQEAgLTEzNCw4ICsxMzQsOSBAQCBzdGF0aWMgdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHRvIHVzZSBhIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSkgR0lEXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGlzIChlbmNyeXB0ZWQpXG4iCi0gCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVNTV09SRFxuIiksIHVzYWdlb3V0KTsKLSsJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhpcyBjbGVhciBQQVNTV09SRFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKLS0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKLSsJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzICgiXG4iLCB1c2FnZW91dCk7Ci0gCWV4aXQgKHN0YXR1cyk7Ci0gfQotQEAgLTM4MywxMSArMzg0LDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCXsibmV3LW5hbWUiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbid9LAotIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCXsicm9vdCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0rCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKLSAJCXtOVUxMLCAwLCBOVUxMLCAnXDAnfQotIAl9OwotLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImc6aG46b3A6UjpQOiIsCi0rCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpQOlI6QToiLAotIAkJICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewotIAkJc3dpdGNoIChjKSB7Ci0gCQljYXNlICdnJzoKLUBAIC00MTQsOSArNDE2LDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlncm91cF9wYXNzd2QgPSBvcHRhcmc7Ci0gCQkJcGZsZyA9IHRydWU7Ci0gCQkJYnJlYWs7Ci0rCQljYXNlICdQJzoKLSsJCQlncm91cF9wYXNzd2QgPSBwd19lbmNyeXB0IChvcHRhcmcsIGNyeXB0X21ha2Vfc2FsdCAoTlVMTCwgTlVMTCkpOwotKwkJCXBmbGcgPSB0cnVlOwotKwkJCWJyZWFrOwotIAkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCi0gCQkJYnJlYWs7Ci0tCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJIFByb2cpOwotKwkJCWV4aXQgKEVfQkFEX0FSRyk7Ci0gCQkJYnJlYWs7Ci0gCQlkZWZhdWx0OgotIAkJCXVzYWdlIChFX1VTQUdFKTsKLUBAIC03NTcsNyArNzY3LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOwotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOwotKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKLSAKLSAJT1BFTkxPRyAoImdyb3VwbW9kIik7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLWRpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYwotaW5kZXggYzc0ZTQ5MS4uNzIxNGU3MiAxMDA2NDQKLS0tLSBhL3NyYy91c2VyYWRkLmMKLSsrKyBiL3NyYy91c2VyYWRkLmMKLUBAIC04MjksOSArODI5LDEwIEBAIHN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKQotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gY3JlYXRlIHVzZXJzIHdpdGggZHVwbGljYXRlXG4iCi0gCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9uLXVuaXF1ZSkgVUlEXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgZW5jcnlwdGVkIHBhc3N3b3JkIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLSsJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIGNsZWFyIHBhc3N3b3JkIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1yLCAtLXN5c3RlbSAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOwotLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXMsIC0tc2hlbGwgU0hFTEwgICAgICAgICAgICAgbG9naW4gc2hlbGwgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXUsIC0tdWlkIFVJRCAgICAgICAgICAgICAgICAgdXNlciBJRCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtVSwgLS11c2VyLWdyb3VwICAgICAgICAgICAgICBjcmVhdGUgYSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXJcbiIpLCB1c2FnZW91dCk7Ci1AQCAtMTEwNCw5ICsxMTA1LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQl7Im5vLXVzZXItZ3JvdXAiLCAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdOJ30sCi0gCQkJeyJub24tdW5pcXVlIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAotIAkJCXsicGFzc3dvcmQiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsJCQl7ImNsZWFyLXBhc3N3b3JkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0gCQkJeyJzeXN0ZW0iLCAgICAgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAncid9LAotIAkJCXsicm9vdCIsICAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKLS0JCQl7InByZWZpeCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0rCQkJeyJwcmVmaXgiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAotIAkJCXsic2hlbGwiLCAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3MnfSwKLSAJCQl7InVpZCIsICAgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCi0gCQkJeyJ1c2VyLWdyb3VwIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnVSd9LAotQEAgLTExMTcsOSArMTExOSw5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCX07Ci0gCQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwKLSAjaWZkZWYgV0lUSF9TRUxJTlVYCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOnJSOlA6czp1OlVaOiIsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6QTpzOnU6VVo6IiwKLSAjZWxzZQkJCQkvKiAhV0lUSF9TRUxJTlVYICovCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOnJSOlA6czp1OlUiLAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpQOnJSOkE6czp1OlUiLAotICNlbmRpZgkJCQkvKiAhV0lUSF9TRUxJTlVYICovCi0gCQkgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKLSAJCQlzd2l0Y2ggKGMpIHsKLUBAIC0xMjg1LDEyICsxMjg3LDE5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQkJfQotIAkJCQl1c2VyX3Bhc3MgPSBvcHRhcmc7Ci0gCQkJCWJyZWFrOwotKwkJCWNhc2UgJ1AnOiAvKiBzZXQgY2xlYXIgdGV4dCBwYXNzd29yZCAqLwotKwkJCQl1c2VyX3Bhc3MgPSBwd19lbmNyeXB0IChvcHRhcmcsIGNyeXB0X21ha2Vfc2FsdCAoTlVMTCwgTlVMTCkpOwotKwkJCQlicmVhazsKLSAJCQljYXNlICdyJzoKLSAJCQkJcmZsZyA9IHRydWU7Ci0gCQkJCWJyZWFrOwotIAkJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLwotIAkJCQlicmVhazsKLS0JCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJCWZwcmludGYgKHN0ZGVyciwKLSsJCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJCSBQcm9nKTsKLSsJCQkJZXhpdCAoRV9CQURfQVJHKTsKLSAJCQkJYnJlYWs7Ci0gCQkJY2FzZSAncyc6Ci0gCQkJCWlmICggICAoICFWQUxJRCAob3B0YXJnKSApCi1AQCAtMjE0OCw3ICsyMTU3LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAKLSAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOwotIAotLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnKCItUCIsIGFyZ2MsIGFyZ3YpOwotKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnKCItQSIsIGFyZ2MsIGFyZ3YpOwotIAotIAlPUEVOTE9HICgidXNlcmFkZCIpOwotICNpZmRlZiBXSVRIX0FVRElUCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJtb2QuYyBiL3NyYy91c2VybW9kLmMKLWluZGV4IGU1NzE0MjYuLmNjZmJiOTkgMTAwNjQ0Ci0tLS0gYS9zcmMvdXNlcm1vZC5jCi0rKysgYi9zcmMvdXNlcm1vZC5jCi1AQCAtNDI0LDggKzQyNCw5IEBAIHN0YXRpYyAvKkBub3JldHVybkAqL3ZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCi0gCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbG9jYXRpb24gKHVzZSBvbmx5IHdpdGggLWQpXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdXNpbmcgZHVwbGljYXRlIChub24tdW5pcXVlKSBVSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICB1c2UgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IHBhc3N3b3JkXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgdXNlIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IHBhc3N3b3JkXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOwotLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXMsIC0tc2hlbGwgU0hFTEwgICAgICAgICAgICAgbmV3IGxvZ2luIHNoZWxsIGZvciB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXUsIC0tdWlkIFVJRCAgICAgICAgICAgICAgICAgbmV3IFVJRCBmb3IgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1VLCAtLXVubG9jayAgICAgICAgICAgICAgICAgIHVubG9jayB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotQEAgLTEwMDIsOCArMTAwMyw5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQl7Im1vdmUtaG9tZSIsICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbSd9LAotIAkJCXsibm9uLXVuaXF1ZSIsICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQkJeyJwYXNzd29yZCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsJCQl7ImNsZWFyLXBhc3N3b3JkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0gCQkJeyJyb290IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKLS0JCQl7InByZWZpeCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAotKwkJCXsicHJlZml4IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCi0gCQkJeyJzaGVsbCIsICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3MnfSwKLSAJCQl7InVpZCIsICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndSd9LAotIAkJCXsidW5sb2NrIiwgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdVJ30sCi1AQCAtMTAxOSw3ICsxMDIxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXtOVUxMLCAwLCBOVUxMLCAnXDAnfQotIAkJfTsKLSAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAotLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJhYzpkOmU6ZjpnOkc6aGw6TG1vcDpSOnM6dTpVUDoiCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFjOmQ6ZTpmOmc6RzpobDpMbW9wOlA6UjpzOnU6VUE6IgotICNpZmRlZiBFTkFCTEVfU1VCSURTCi0gCQkgICAgICAgICAgICAgICAgICAgICAgICAgInY6dzpWOlc6IgotICNlbmRpZgkJCQkvKiBFTkFCTEVfU1VCSURTICovCi1AQCAtMTExOSw5ICsxMTIxLDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOwotIAkJCQlwZmxnID0gdHJ1ZTsKLSAJCQkJYnJlYWs7Ci0rCQkJY2FzZSAnUCc6Ci0rCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJCXBmbGcgPSB0cnVlOwotKwkJCQlicmVhazsKLSAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KLSAJCQkJYnJlYWs7Ci0tCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCi0rCQkJCQkgUHJvZyk7Ci0rCQkJCWV4aXQgKEVfQkFEX0FSRyk7Ci0gCQkJCWJyZWFrOwotIAkJCWNhc2UgJ3MnOgotIAkJCQlpZiAoIVZBTElEIChvcHRhcmcpKSB7Ci1AQCAtMjA5OCw3ICsyMTA4LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOwotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOwotKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKLSAKLSAJT1BFTkxPRyAoInVzZXJtb2QiKTsKLSAjaWZkZWYgV0lUSF9BVURJVAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2NvbW1vbmlvLmMtZml4LXVuZXhwZWN0ZWQtb3Blbi1mYWlsdXJlLWluLWNocm9vdC1lbnYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaAppbmRleCA0ZmEzZDE4Li45ODI1MjE2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gNjY1MzNjN2M2ZjM0N2QyNTcwMjA2NzVhMWVkNmUwYzU5Y2JiYzNmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTcgSnVsIDIwMTQgMTU6NTM6MzQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudgorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQogCiBjb21tb25pby5jOiBmaXggdW5leHBlY3RlZCBvcGVuIGZhaWx1cmUgaW4gY2hyb290IGVudmlyb25tZW50CkBAIC0xMCwxNSArMTUsMTYgQEAKIHRoZSBjb2Rlcy4KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBsaWIvY29tbW9uaW8uYyB8ICAgMTYgKysrKysrKysrKysrLS0tLQorIGxpYi9jb21tb25pby5jIHwgMTYgKysrKysrKysrKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGliL2NvbW1vbmlvLmMgYi9saWIvY29tbW9uaW8uYwotaW5kZXggY2M1MzZiZi4uNTFjYWZkOSAxMDA2NDQKK2luZGV4IDE2ZmE3ZTcuLmQ2YmMyOTcgMTAwNjQ0CiAtLS0gYS9saWIvY29tbW9uaW8uYwogKysrIGIvbGliL2NvbW1vbmlvLmMKLUBAIC02MTMsMTAgKzYxMywxOCBAQCBpbnQgY29tbW9uaW9fb3BlbiAoc3RydWN0IGNvbW1vbmlvX2RiICpkYiwgaW50IG1vZGUpCitAQCAtNjMyLDEwICs2MzIsMTggQEAgaW50IGNvbW1vbmlvX29wZW4gKHN0cnVjdCBjb21tb25pb19kYiAqZGIsIGludCBtb2RlKQogIAlkYi0+Y3Vyc29yID0gTlVMTDsKICAJZGItPmNoYW5nZWQgPSBmYWxzZTsKICAKQEAgLTQxLDYgKzQ3LDMgQEAKICAJZGItPmZwID0gTlVMTDsKICAJaWYgKGZkID49IDApIHsKICAjaWZkZWYgV0lUSF9UQ0IKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3NoYWRvdy1yZWxheGVkLXVzZXJuYW1lcy5wYXRjaAppbmRleCAxYWYwNGQ1Li5jYzgzMzM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2gKQEAgLTEsMjYgKzEsMzcgQEAKK0Zyb20gY2E0NzJkNjg2NmU1NDVhYWE3MGE3MDAyMGUzMjI2ZjIzNmE4YWFmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxMyBTZXAgMjAxNiAxMzo0NTo0NiArMDgwMAorU3ViamVjdDogW1BBVENIXSBzaGFkb3c6IHVzZSByZWxheGVkIHVzZXJuYW1lcwogCiBUaGUgZ3JvdXBhZGQgZnJvbSBzaGFkb3cgZG9lcyBub3QgYWxsb3cgdXBwZXIgY2FzZSBncm91cCBuYW1lcywgdGhlCiBzYW1lIGlzIHRydWUgZm9yIHRoZSB1cHN0cmVhbSBzaGFkb3cuIEJ1dCBkaXN0cmlidXRpb25zIGxpa2UKIERlYmlhbi9VYnVudHUvQ2VudE9TIGhhcyB0aGVpciBvd24gd2F5IHRvIGNvcGUgd2l0aCB0aGlzIHByb2JsZW0sCiB0aGlzIHBhdGNoIGlzIHBpY2tlZCB1cCBmcm9tIENlbnRPUyByZWxlYXNlIDcuMCB0byByZWxheCB0aGUgdXNlcm5hbWVzCiByZXN0cmljdGlvbnMgdG8gYWxsb3cgdGhlIHVwcGVyIGNhc2UgZ3JvdXAgbmFtZXMsIGFuZCB0aGUgcmVsYXhhdGlvbiBpcwotUE9TSVggY29tcGxpYW50IGJlY2F1c2UgUE9TSVggaW5kaWNhdGUgdGhhdCB1c2VybmFtZXMgYXJlIGNvbXBvc2VkIG9mIAorUE9TSVggY29tcGxpYW50IGJlY2F1c2UgUE9TSVggaW5kaWNhdGUgdGhhdCB1c2VybmFtZXMgYXJlIGNvbXBvc2VkIG9mCiBjaGFyYWN0ZXJzIGZyb20gdGhlIHBvcnRhYmxlIGZpbGVuYW1lIGNoYXJhY3RlciBzZXQgW0EtWmEtejAtOS5fLV0uCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1TaWduZWQtb2ZmLWJ5OiBTaGFuIEhhaSA8c2hhbi5oYWlAd2luZHJpdmVyLmNvbT4gCitTaWduZWQtb2ZmLWJ5OiBTaGFuIEhhaSA8c2hhbi5oYWlAd2luZHJpdmVyLmNvbT4KIAotZGlmZiAtdXJwTiBhL2xpYm1pc2MvY2hrbmFtZS5jIGIvbGlibWlzYy9jaGtuYW1lLmMKLWluZGV4IDUwODkxMTIuLmY0MGEwZGEgMTAwNjQ0CistLS0KKyBsaWJtaXNjL2Noa25hbWUuYyAgfCAzMCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyBtYW4vZ3JvdXBhZGQuOC54bWwgfCAgNiAtLS0tLS0KKyBtYW4vdXNlcmFkZC44LnhtbCAgfCAgOCArLS0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtaXNjL2Noa25hbWUuYyBiL2xpYm1pc2MvY2hrbmFtZS5jCitpbmRleCA5MGYxODVjLi42NTc2MmI0IDEwMDY0NAogLS0tIGEvbGlibWlzYy9jaGtuYW1lLmMKICsrKyBiL2xpYm1pc2MvY2hrbmFtZS5jCi1AQCAtNDksMjEgKzQ5LDI4IEBACi0gc3RhdGljIGJvb2wgaXNfdmFsaWRfbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKLSB7CitAQCAtNTUsMjIgKzU1LDI4IEBAIHN0YXRpYyBib29sIGlzX3ZhbGlkX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCisgCX0KKyAKICAJLyoKIC0JICogVXNlci9ncm91cCBuYW1lcyBtdXN0IG1hdGNoIFthLXpfXVthLXowLTlfLV0qWyRdCiAtCSAqLworLQogLQlpZiAoKCdcMCcgPT0gKm5hbWUpIHx8CiAtCSAgICAhKCgoJ2EnIDw9ICpuYW1lKSAmJiAoJ3onID49ICpuYW1lKSkgfHwgKCdfJyA9PSAqbmFtZSkpKSB7CiArICAgICAgICAgKiBVc2VyL2dyb3VwIG5hbWVzIG11c3QgbWF0Y2ggZ251IGUtcmVnZXg6CkBAIC01NSwyOCArNjYsMjggQEAKICAJCQlyZXR1cm4gZmFsc2U7CiAgCQl9CiAgCX0KLWRpZmYgLXVycE4gYS9tYW4vZ3JvdXBhZGQuOC54bWwgYi9tYW4vZ3JvdXBhZGQuOC54bWwKLWluZGV4IDIzMGZkMGMuLjk0Zjc4MDcgMTAwNjQ0CitkaWZmIC0tZ2l0IGEvbWFuL2dyb3VwYWRkLjgueG1sIGIvbWFuL2dyb3VwYWRkLjgueG1sCitpbmRleCAxZTU4ZjA5Li5kODA0YjYxIDEwMDY0NAogLS0tIGEvbWFuL2dyb3VwYWRkLjgueG1sCiArKysgYi9tYW4vZ3JvdXBhZGQuOC54bWwKLUBAIC0yMjIsMTIgKzIyMiw2IEBACitAQCAtMjcyLDEyICsyNzIsNiBAQAorIAogICAgIDxyZWZzZWN0MSBpZD0nY2F2ZWF0cyc+CiAgICAgICA8dGl0bGU+Q0FWRUFUUzwvdGl0bGU+Ci0gICAgICA8cGFyYT4KKy0gICAgIDxwYXJhPgogLSAgICAgICBHcm91cG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGxvd2VyIGNhc2UgbGV0dGVyIG9yIGFuIHVuZGVyc2NvcmUsCiAtICAgICAgIGZvbGxvd2VkIGJ5IGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCB1bmRlcnNjb3Jlcywgb3IgZGFzaGVzLgogLSAgICAgICBUaGV5IGNhbiBlbmQgd2l0aCBhIGRvbGxhciBzaWduLgogLSAgICAgICBJbiByZWd1bGFyIGV4cHJlc3Npb24gdGVybXM6IFthLXpfXVthLXowLTlfLV0qWyRdPwogLSAgICAgPC9wYXJhPgotLSAgICAgPHBhcmE+CisgICAgICA8cGFyYT4KICAgICAgICAgR3JvdXBuYW1lcyBtYXkgb25seSBiZSB1cCB0byAmR1JPVVBfTkFNRV9NQVhfTEVOR1RIOyBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgICA8L3BhcmE+Ci0gICAgICA8cGFyYT4KLWRpZmYgLXVycE4gYS9tYW4vdXNlcmFkZC44LnhtbCBiL21hbi91c2VyYWRkLjgueG1sCi1pbmRleCA1ZGVjOTg5Li5mZTYyM2I5IDEwMDY0NAorZGlmZiAtLWdpdCBhL21hbi91c2VyYWRkLjgueG1sIGIvbWFuL3VzZXJhZGQuOC54bWwKK2luZGV4IGExNmQ3MzAuLmMwYmQ3NzcgMTAwNjQ0CiAtLS0gYS9tYW4vdXNlcmFkZC44LnhtbAogKysrIGIvbWFuL3VzZXJhZGQuOC54bWwKLUBAIC0zMzYsNyArMzM2LDcgQEAKK0BAIC0zNjYsNyArMzY2LDcgQEAKICAJPC90ZXJtPgogIAk8bGlzdGl0ZW0+CiAgCSAgPHBhcmE+CkBAIC04NSwxNiArOTYsMTYgQEAKICAJICAgIHdpZGUgc2V0dGluZyBmcm9tIDxmaWxlbmFtZT4vZXRjL2xvZ2luLmRlZnM8L2ZpbGVuYW1lPgogIAkgICAgKDxvcHRpb24+Q1JFQVRFX0hPTUU8L29wdGlvbj4pIGlzIHNldCB0bwogIAkgICAgPHJlcGxhY2VhYmxlPnllczwvcmVwbGFjZWFibGU+LgotQEAgLTYwNywxMiArNjA3LDYgQEAKK0BAIC02NjAsMTIgKzY2MCw2IEBACisgICAgICAgdGhlIHVzZXIgYWNjb3VudCBjcmVhdGlvbiByZXF1ZXN0LgogICAgICA8L3BhcmE+CiAgCi0gICAgIDxwYXJhPgorLSAgICA8cGFyYT4KIC0gICAgICBVc2VybmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIgb3IgYW4gdW5kZXJzY29yZSwKIC0gICAgICBmb2xsb3dlZCBieSBsb3dlciBjYXNlIGxldHRlcnMsIGRpZ2l0cywgdW5kZXJzY29yZXMsIG9yIGRhc2hlcy4KIC0gICAgICBUaGV5IGNhbiBlbmQgd2l0aCBhIGRvbGxhciBzaWduLgogLSAgICAgIEluIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXJtczogW2Etel9dW2EtejAtOV8tXSpbJF0/CiAtICAgIDwvcGFyYT4KLS0gICAgPHBhcmE+CisgICAgIDxwYXJhPgogICAgICAgIFVzZXJuYW1lcyBtYXkgb25seSBiZSB1cCB0byAzMiBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgIDwvcGFyYT4KLSAgIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCmluZGV4IDc3MGMyMzkuLmY4NmU1ZTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCkBAIC0xMSw4ICsxMSw2IEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvcmVsZWFzZXMiCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9zaGFkb3ctNC4xLjMtZG90cy1pbi11c2VybmFtZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXRoZS1zcF9sc3RjaGctc2hhZG93LWZpZWxkLXJlcHJvZHVjaWJsZS1yZS4tNzEucGF0Y2ggIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZXJyb3Itd2l0aC1kYXNoLnBhdGNoIFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCiAgICAgICAgICAgIGZpbGU6Ly9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2ggXAogICAgICAgICAgICAiCkBAIC0yNCwxNiArMjIsMTUgQEAKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMzZmZWIxNTY2NTMzOGFlM2RlNDE0ZjJhODhlNDM0ZGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY2OGY5OWJkMDg3Mzk5YzRhNTg2MDg0ZGMzYjA0NmI3NWY1NjA3MjBkODNlOTJmZDIzYmY3YTg5ZGRhNGQzMSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZDk3ZjExZTY2YmZiMGIxNDcwMmIxMTVmYThiZTQ4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZWUzMDgxZmJiY2JjZmVhNWM4OTE2NDE5ZTQ2YmM3MjQ4MDdiYWIyNzEwNzIxMDRmMjNlN2EyOWU5NjY4ZjNhIgogCiAjIEFkZGl0aW9uYWwgUG9saWN5IGZpbGVzIGZvciBQQU0KIFBBTV9TUkNfVVJJID0gImZpbGU6Ly9wYW0uZC9jaGZuIFwKQEAgLTUzLDYgKzUwLDcgQEAKICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAogICAgICAgICAgICAgICAgICAtLXdpdGgtZ3JvdXAtbmFtZS1tYXgtbGVuZ3RoPTI0IFwKICAgICAgICAgICAgICAgICAgLS1lbmFibGUtc3Vib3JkaW5hdGUtaWRzPXllcyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1zc3NkIFwKICAgICAgICAgICAgICAgICAgJHtOU0NET1BUfSIKIAogTlNDRE9QVCA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93XzQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC44LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC42LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93XzQuOC4xLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTAuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTAuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YTk4ZjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzLW5nL3N0cmVzcy1uZ18wLjEwLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gbG9hZCB0ZXN0aW5nIHV0aWxpdHkiCi1ERVNDUklQVElPTiA9ICJEZWxpYmVyYXRlbHkgc2ltcGxlIHdvcmtsb2FkIGdlbmVyYXRvciBmb3IgUE9TSVggc3lzdGVtcy4gSXQgXAotaW1wb3NlcyBhIGNvbmZpZ3VyYWJsZSBhbW91bnQgb2YgQ1BVLCBtZW1vcnksIEkvTywgYW5kIGRpc2sgc3RyZXNzIG9uIHRoZSBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9rZXJuZWwudWJ1bnR1LmNvbS9+Y2tpbmcvc3RyZXNzLW5nLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy90YXJiYWxscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXByZXNlcnZlLW93bmVyc2hpcC13aGVuLWluc3RhbGxpbmctZXhhbXBsZS1qby5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZDRkZTM4ZDZmZjFjY2YzNjQwNTczZTk2N2RmYjEzNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzFkZTVlYmM0NGI0OTk5MmMxMTYzM2YxMGFhZTk2ZGEwNWE4NWIzMjZhZWJkZmZkODhiYThjNDQ1ZDIzY2Y0IgotCi1ERVBFTkRTID0gImNvcmV1dGlscy1uYXRpdmUiCi0KLVBST1ZJREVTID0gInN0cmVzcyIKLVJQUk9WSURFU18ke1BOfSA9ICJzdHJlc3MiCi1SUkVQTEFDRVNfJHtQTn0gPSAic3RyZXNzIgotUkNPTkZMSUNUU18ke1BOfSA9ICJzdHJlc3MiCi0KLWluaGVyaXQgYmFzaC1jb21wbGV0aW9uCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzLW5nL3N0cmVzcy1uZ18wLjExLjAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzLW5nL3N0cmVzcy1uZ18wLjExLjAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ODZiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTEuMDEuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gbG9hZCB0ZXN0aW5nIHV0aWxpdHkiCitERVNDUklQVElPTiA9ICJEZWxpYmVyYXRlbHkgc2ltcGxlIHdvcmtsb2FkIGdlbmVyYXRvciBmb3IgUE9TSVggc3lzdGVtcy4gSXQgXAoraW1wb3NlcyBhIGNvbmZpZ3VyYWJsZSBhbW91bnQgb2YgQ1BVLCBtZW1vcnksIEkvTywgYW5kIGRpc2sgc3RyZXNzIG9uIHRoZSBzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9rZXJuZWwudWJ1bnR1LmNvbS9+Y2tpbmcvc3RyZXNzLW5nLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy90YXJiYWxscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXByZXNlcnZlLW93bmVyc2hpcC13aGVuLWluc3RhbGxpbmctZXhhbXBsZS1qby5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNTU4ZmM3ZmI5ZDBhODUxYWZlNmRlMDkwODBiNTQwMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZmUxOTU0OGM4N2FhMWExYjliMmJlM2IzNTllYzI2MjFiODhiY2IxNjk5OGI3NzUyNzU0OWE3NzM2ZjY1NDk0IgorCitERVBFTkRTID0gImNvcmV1dGlscy1uYXRpdmUiCisKK1BST1ZJREVTID0gInN0cmVzcyIKK1JQUk9WSURFU18ke1BOfSA9ICJzdHJlc3MiCitSUkVQTEFDRVNfJHtQTn0gPSAic3RyZXNzIgorUkNPTkZMSUNUU18ke1BOfSA9ICJzdHJlc3MiCisKK2luaGVyaXQgYmFzaC1jb21wbGV0aW9uCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKaW5kZXggMTUwNzViYy4uNWQyN2Q0NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCkBAIC00LDE4ICs0LDE4IEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cuc3Vkby53cy9idWdzLyIKIFNFQ1RJT04gPSAiYWRtaW4iCiBMSUNFTlNFID0gIklTQyAmIEJTRCAmIFpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9NmM3NmI3MzYwM2FjNzc2M2FiMDUxNmViZmJlNjdiNDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00NjttZDU9NGExNjJmYzA0Yjg2YjAzZjU2MzIxODBmZTYwNzZjZGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNTttZDU9YjQ3ZjFmODVhMTJmMDVhMDc0NGNkOGIxYjZmNDFhMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTY3ZjgzZWU5YmQ0NTY1NTczOTcwODJmOGYxYmUwZWZkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PTA5MDY4YTE5YjRmNmI2ZjBhMDk1ODY1NWJmZTk4YjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dsb2IuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTMxO21kNT0xZjJmNzcxYzM1ZmIwNjU4ZDU2N2E3ODI0MDA3ZTU2ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9zbnByaW50Zi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzM7bWQ1PTYzZTQ4ZTFiOTkyYmNlNzQ5YTE5ZGQ5YjIyNTZlOWEwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvc3Vkb19xdWV1ZS5oO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PTA4MmIxMzhiNzJiYTNlNTY4YTEzYTI1YzNiZjI1NGRjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2luZXRfcHRvbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTM5NzBhYjA1MThhYjc5Y2JkMGJhZmI2OTdmMTBiMzNhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2FyYzRyYW5kb20uYztiZWdpbmxpbmU9MztlbmRsaW5lPTIwO21kNT0xNWJkYzg5YzFiMDAzZmE0ZDczNTNlNjI5NmViZmQ2OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9hcmM0cmFuZG9tX3VuaWZvcm0uYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT0zMWU2MzBhYzgxNGQ2OTJmZDBhYjdhOTQyNjU5YjQ2ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9nZXRlbnRyb3B5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9OWYxYTI3NWVjZDQ0Y2MyNjRhMmE0ZDVlMDZhNzUyOTIgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0xJQ0VOU0U7bWQ1PTRkMWI0NGIxNTc2ZWVhMDM2ZDc4YjhjYzk2MWFhOTNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BsdWdpbnMvc3Vkb2Vycy9yZWRibGFjay5jO2JlZ2lubGluZT0xO2VuZGxpbmU9NDY7bWQ1PTAzZTM1MzE3Njk5YmEwMGI0OTYyNTFlMGRmZTlmMTA5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL3JlYWxsb2NhcnJheS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTU7bWQ1PTM5N2RkNDVjNzY4M2U5MGI5ZjhiZjI0NjM4Y2YwM2JmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2ZubWF0Y2guYztiZWdpbmxpbmU9MztlbmRsaW5lPTI3O21kNT0wMDRkN2QyODY2YmExZjViNDExNzQ5MDY4NDlkMmUwZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9nZXRjd2QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTI3O21kNT01MGY4ZDk2Njc3NTBlMThkZWE0ZTg0YTkzNWMxMjAwOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9nbG9iLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0zMTttZDU9Mjg1MmY2ODY4NzU0NGUzZWI4YTBhNjE2NjU1MDZmMGUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvc25wcmludGYuYztiZWdpbmxpbmU9MztlbmRsaW5lPTMzO21kNT1iNzBkZjYxNzk5NjllMzhmY2Y2OGRhOTFiNTNiODAyOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3N1ZG9fcXVldWUuaDtiZWdpbmxpbmU9MjtlbmRsaW5lPTI3O21kNT1hZDU3OGU5NjY0ZDE3YTAxMGI2M2U0YmMwNTc2ZWU4ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9pbmV0X3B0b24uYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT0yNzc4NWM5ZjU4MzUwOTNlZGE0MmFhMDgxNmEyZDBiNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9hcmM0cmFuZG9tLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yMDttZDU9Y2VkODYzNmVjZWZhMmJhOTA3Y2ZlMzkwYmMzYmQ5NjQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvYXJjNHJhbmRvbV91bmlmb3JtLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNzttZDU9ZTMwYzJiNzc3Y2RjMDBjZmNhZjdjNDQ1YTEwYjI2MmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2V0ZW50cm9weS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTk7bWQ1PWEwZjU4YmUzZDYwYjZkY2Q4OThlYzVmZTA4NjZkMzZmIFwKICAgICAgICAgICAgICAgICAgICAgIgogCiBpbmhlcml0IGF1dG90b29scwpAQCAtMjYsNyArMjYsNyBAQAogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zdWRvZXJzIgogCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWVkaXRvcj0vYmluL3ZpIC0td2l0aC1lbnYtZWRpdG9yIgorRVhUUkFfT0VDT05GID0gIi0td2l0aC1lZGl0b3I9JHtiYXNlX2JpbmRpcn0vdmkgLS13aXRoLWVudi1lZGl0b3IiCiAKIEVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtaGFyZGVuaW5nICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvL0NWRS0yMDE5LTE0Mjg3LTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vQ1ZFLTIwMTktMTQyODctMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmExMWUzZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vQ1ZFLTIwMTktMTQyODctMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi1Gcm9tIGY3NTJhZTVjZWUxNjMyNTM3MzBmZjdjZGYyOTNlMzRhOTFhYTU1MjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiVG9kZCBDLiBNaWxsZXIiIDxUb2RkLk1pbGxlckBzdWRvLndzPgotRGF0ZTogVGh1LCAxMCBPY3QgMjAxOSAxMDowNDoxMyAtMDYwMAotU3ViamVjdDogW1BBVENIXSBUcmVhdCBhbiBJRCBvZiAtMSBhcyBpbnZhbGlkIHNpbmNlIHRoYXQgbWVhbnMgIm5vIGNoYW5nZSIuCi0gRml4ZXMgQ1ZFLTIwMTktMTQyODcuIEZvdW5kIGJ5IEpvZSBWZW5uaXggZnJvbSBBcHBsZSBJbmZvcm1hdGlvbiBTZWN1cml0eS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N1ZG8tcHJvamVjdC9zdWRvL2NvbW1pdC9mNzUyYWU1Y2VlMTYzMjUzNzMwZmY3Y2RmMjkzZTM0YTkxYWE1NTIwXQotQ1ZFOiBDVkUtMjAxOS0xNDI4NwotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWIvdXRpbC9zdHJ0b2lkLmMgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3V0aWwvc3RydG9pZC5jIGIvbGliL3V0aWwvc3RydG9pZC5jCi1pbmRleCAyZGZjZTc1Li42YjM5MTZiIDEwMDY0NAotLS0tIGEvbGliL3V0aWwvc3RydG9pZC5jCi0rKysgYi9saWIvdXRpbC9zdHJ0b2lkLmMKLUBAIC00OSw2ICs0OSwyNyBAQAotICNpbmNsdWRlICJzdWRvX3V0aWwuaCIKLSAKLSAvKgotKyAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBJRCBlbmRzIHdpdGggYSB2YWxpZCBzZXBhcmF0b3IgY2hhci4KLSsgKi8KLStzdGF0aWMgYm9vbAotK3ZhbGlkX3NlcGFyYXRvcihjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICplcCwgY29uc3QgY2hhciAqc2VwKQotK3sKLSsgICAgYm9vbCB2YWxpZCA9IGZhbHNlOwotKyAgICBkZWJ1Z19kZWNsKHZhbGlkX3NlcGFyYXRvciwgU1VET19ERUJVR19VVElMKQotKwotKyAgICBpZiAoZXAgIT0gcCkgewotKwkvKiBjaGVjayBmb3IgdmFsaWQgc2VwYXJhdG9yIChpbmNsdWRpbmcgJ1wwJykgKi8KLSsJaWYgKHNlcCA9PSBOVUxMKQotKwkgICAgc2VwID0gIiI7Ci0rCWRvIHsKLSsJICAgIGlmICgqZXAgPT0gKnNlcCkKLSsJCXZhbGlkID0gdHJ1ZTsKLSsJfSB3aGlsZSAoKnNlcCsrICE9ICdcMCcpOwotKyAgICB9Ci0rICAgIGRlYnVnX3JldHVybl9ib29sKHZhbGlkKTsKLSt9Ci0rCi0rLyoKLSAgKiBQYXJzZSBhIHVpZC9naWQgaW4gc3RyaW5nIGZvcm0uCi0gICogSWYgc2VwIGlzIG5vbi1OVUxMLCBpdCBjb250YWlucyB2YWxpZCBzZXBhcmF0b3IgY2hhcmFjdGVycyAoZS5nLiBjb21tYSwgc3BhY2UpCi0gICogSWYgZW5kcCBpcyBub24tTlVMTCBpdCBpcyBzZXQgdG8gdGhlIG5leHQgY2hhciBhZnRlciB0aGUgSUQuCi1AQCAtNjIsMzYgKzgzLDMzIEBAIHN1ZG9fc3RydG9pZF92MShjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpzZXAsIGNoYXIgKiplbmRwLCBjb25zdCBjaGFyICoqZXJyc3RyCi0gICAgIGNoYXIgKmVwOwotICAgICBpZF90IHJldCA9IDA7Ci0gICAgIGxvbmcgbG9uZyBsbHZhbDsKLS0gICAgYm9vbCB2YWxpZCA9IGZhbHNlOwotICAgICBkZWJ1Z19kZWNsKHN1ZG9fc3RydG9pZCwgU1VET19ERUJVR19VVElMKQotIAotICAgICAvKiBza2lwIGxlYWRpbmcgc3BhY2Ugc28gd2UgY2FuIHBpY2sgdXAgdGhlIHNpZ24sIGlmIGFueSAqLwotICAgICB3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcCkpCi0gCXArKzsKLS0gICAgaWYgKHNlcCA9PSBOVUxMKQotLQlzZXAgPSAiIjsKLSsKLSsgICAgLyogV2hpbGUgaWRfdCBtYXkgYmUgNjQtYml0IHNpZ25lZCwgdWlkX3QgYW5kIGdpZF90IGFyZSAzMi1iaXQgdW5zaWduZWQuICovCi0gICAgIGVycm5vID0gMDsKLSAgICAgbGx2YWwgPSBzdHJ0b2xsKHAsICZlcCwgMTApOwotLSAgICBpZiAoZXAgIT0gcCkgewotLQkvKiBjaGVjayBmb3IgdmFsaWQgc2VwYXJhdG9yIChpbmNsdWRpbmcgJ1wwJykgKi8KLS0JZG8gewotLQkgICAgaWYgKCplcCA9PSAqc2VwKQotLQkJdmFsaWQgPSB0cnVlOwotLQl9IHdoaWxlICgqc2VwKysgIT0gJ1wwJyk7Ci0rICAgIGlmICgoZXJybm8gPT0gRVJBTkdFICYmIGxsdmFsID09IExMT05HX01BWCkgfHwgbGx2YWwgPiAoaWRfdClVSU5UX01BWCkgewotKwllcnJubyA9IEVSQU5HRTsKLSsJaWYgKGVycnN0ciAhPSBOVUxMKQotKwkgICAgKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gbGFyZ2UiKTsKLSsJZ290byBkb25lOwotICAgICB9Ci0tICAgIGlmICghdmFsaWQpIHsKLSsgICAgaWYgKChlcnJubyA9PSBFUkFOR0UgJiYgbGx2YWwgPT0gTExPTkdfTUlOKSB8fCBsbHZhbCA8IElOVF9NSU4pIHsKLSsJZXJybm8gPSBFUkFOR0U7Ci0gCWlmIChlcnJzdHIgIT0gTlVMTCkKLS0JICAgICplcnJzdHIgPSBOXygiaW52YWxpZCB2YWx1ZSIpOwotLQllcnJubyA9IEVJTlZBTDsKLSsJICAgICplcnJzdHIgPSBOXygidmFsdWUgdG9vIHNtYWxsIik7Ci0gCWdvdG8gZG9uZTsKLSAgICAgfQotLSAgICBpZiAoZXJybm8gPT0gRVJBTkdFKSB7Ci0tCWlmIChlcnJzdHIgIT0gTlVMTCkgewotLQkgICAgaWYgKGxsdmFsID09IExMT05HX01BWCkKLS0JCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIGxhcmdlIik7Ci0tCSAgICBlbHNlCi0tCQkqZXJyc3RyID0gTl8oInZhbHVlIHRvbyBzbWFsbCIpOwotLQl9Ci0rCi0rICAgIC8qIERpc2FsbG93IGlkIC0xLCB3aGljaCBtZWFucyAibm8gY2hhbmdlIi4gKi8KLSsgICAgaWYgKCF2YWxpZF9zZXBhcmF0b3IocCwgZXAsIHNlcCkgfHwgbGx2YWwgPT0gLTEgfHwgbGx2YWwgPT0gKGlkX3QpVUlOVF9NQVgpIHsKLSsJaWYgKGVycnN0ciAhPSBOVUxMKQotKwkgICAgKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0rCWVycm5vID0gRUlOVkFMOwotIAlnb3RvIGRvbmU7Ci0gICAgIH0KLSAgICAgcmV0ID0gKGlkX3QpbGx2YWw7Ci1AQCAtMTA4LDMwICsxMjYsMTUgQEAgc3Vkb19zdHJ0b2lkX3YxKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnNlcCwgY2hhciAqKmVuZHAsIGNvbnN0IGNoYXIgKiplcnJzdHIKLSB7Ci0gICAgIGNoYXIgKmVwOwotICAgICBpZF90IHJldCA9IDA7Ci0tICAgIGJvb2wgdmFsaWQgPSBmYWxzZTsKLSAgICAgZGVidWdfZGVjbChzdWRvX3N0cnRvaWQsIFNVRE9fREVCVUdfVVRJTCkKLSAKLSAgICAgLyogc2tpcCBsZWFkaW5nIHNwYWNlIHNvIHdlIGNhbiBwaWNrIHVwIHRoZSBzaWduLCBpZiBhbnkgKi8KLSAgICAgd2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnApKQotIAlwKys7Ci0tICAgIGlmIChzZXAgPT0gTlVMTCkKLS0Jc2VwID0gIiI7Ci0rCi0gICAgIGVycm5vID0gMDsKLSAgICAgaWYgKCpwID09ICctJykgewotIAlsb25nIGx2YWwgPSBzdHJ0b2wocCwgJmVwLCAxMCk7Ci0tCWlmIChlcCAhPSBwKSB7Ci0tCSAgICAvKiBjaGVjayBmb3IgdmFsaWQgc2VwYXJhdG9yIChpbmNsdWRpbmcgJ1wwJykgKi8KLS0JICAgIGRvIHsKLS0JCWlmICgqZXAgPT0gKnNlcCkKLS0JCSAgICB2YWxpZCA9IHRydWU7Ci0tCSAgICB9IHdoaWxlICgqc2VwKysgIT0gJ1wwJyk7Ci0tCX0KLS0JaWYgKCF2YWxpZCkgewotLQkgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotLQkJKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0tCSAgICBlcnJubyA9IEVJTlZBTDsKLS0JICAgIGdvdG8gZG9uZTsKLS0JfQotIAlpZiAoKGVycm5vID09IEVSQU5HRSAmJiBsdmFsID09IExPTkdfTUFYKSB8fCBsdmFsID4gSU5UX01BWCkgewotIAkgICAgZXJybm8gPSBFUkFOR0U7Ci0gCSAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi1AQCAtMTQ0LDI4ICsxNDcsMzEgQEAgc3Vkb19zdHJ0b2lkX3YxKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnNlcCwgY2hhciAqKmVuZHAsIGNvbnN0IGNoYXIgKiplcnJzdHIKLSAJCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIHNtYWxsIik7Ci0gCSAgICBnb3RvIGRvbmU7Ci0gCX0KLS0JcmV0ID0gKGlkX3QpbHZhbDsKLS0gICAgfSBlbHNlIHsKLS0JdW5zaWduZWQgbG9uZyB1bHZhbCA9IHN0cnRvdWwocCwgJmVwLCAxMCk7Ci0tCWlmIChlcCAhPSBwKSB7Ci0tCSAgICAvKiBjaGVjayBmb3IgdmFsaWQgc2VwYXJhdG9yIChpbmNsdWRpbmcgJ1wwJykgKi8KLS0JICAgIGRvIHsKLS0JCWlmICgqZXAgPT0gKnNlcCkKLS0JCSAgICB2YWxpZCA9IHRydWU7Ci0tCSAgICB9IHdoaWxlICgqc2VwKysgIT0gJ1wwJyk7Ci0tCX0KLS0JaWYgKCF2YWxpZCkgewotKwotKwkvKiBEaXNhbGxvdyBpZCAtMSwgd2hpY2ggbWVhbnMgIm5vIGNoYW5nZSIuICovCi0rCWlmICghdmFsaWRfc2VwYXJhdG9yKHAsIGVwLCBzZXApIHx8IGx2YWwgPT0gLTEpIHsKLSAJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLSAJCSplcnJzdHIgPSBOXygiaW52YWxpZCB2YWx1ZSIpOwotIAkgICAgZXJybm8gPSBFSU5WQUw7Ci0gCSAgICBnb3RvIGRvbmU7Ci0gCX0KLSsJcmV0ID0gKGlkX3QpbHZhbDsKLSsgICAgfSBlbHNlIHsKLSsJdW5zaWduZWQgbG9uZyB1bHZhbCA9IHN0cnRvdWwocCwgJmVwLCAxMCk7Ci0gCWlmICgoZXJybm8gPT0gRVJBTkdFICYmIHVsdmFsID09IFVMT05HX01BWCkgfHwgdWx2YWwgPiBVSU5UX01BWCkgewotIAkgICAgZXJybm8gPSBFUkFOR0U7Ci0gCSAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi0gCQkqZXJyc3RyID0gTl8oInZhbHVlIHRvbyBsYXJnZSIpOwotIAkgICAgZ290byBkb25lOwotIAl9Ci0rCi0rCS8qIERpc2FsbG93IGlkIC0xLCB3aGljaCBtZWFucyAibm8gY2hhbmdlIi4gKi8KLSsJaWYgKCF2YWxpZF9zZXBhcmF0b3IocCwgZXAsIHNlcCkgfHwgdWx2YWwgPT0gVUlOVF9NQVgpIHsKLSsJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLSsJCSplcnJzdHIgPSBOXygiaW52YWxpZCB2YWx1ZSIpOwotKwkgICAgZXJybm8gPSBFSU5WQUw7Ci0rCSAgICBnb3RvIGRvbmU7Ci0rCX0KLSAJcmV0ID0gKGlkX3QpdWx2YWw7Ci0gICAgIH0KLSAgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vQ1ZFLTIwMTktMTQyODctMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTNhOGIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLUZyb20gMzk2YmM1N2ZlZmYzZTM2MDAwNzYzNGY2MjQ0OGI2NGUwNjI2MzkwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJUb2RkIEMuIE1pbGxlciIgPFRvZGQuTWlsbGVyQHN1ZG8ud3M+Ci1EYXRlOiBUaHUsIDEwIE9jdCAyMDE5IDEwOjA0OjEzIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdWRvX3N0cnRvaWQoKSB0ZXN0cyBmb3IgLTEgYW5kIHJhbmdlIGVycm9ycy4gQWxzbyBhZGp1c3QKLSB0ZXN0c3Vkb2Vycy90ZXN0NSB3aGljaCByZWxpZWQgdXBvbiBnaWQgLTEgcGFyc2luZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N1ZG8tcHJvamVjdC9zdWRvL2NvbW1pdC8zOTZiYzU3XQotQ1ZFOiBDVkUtMjAxOS0xNDI4NwotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWIvdXRpbC9yZWdyZXNzL2F0b2Zvby9hdG9mb29fdGVzdC5jICAgICAgICAgICAgfCAzNiArKysrKysrKysrKysrKysrLS0tLS0tCi0gcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUub3V0Lm9rIHwgIDIgKy0KLSBwbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaCAgICAgfCAgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvdXRpbC9yZWdyZXNzL2F0b2Zvby9hdG9mb29fdGVzdC5jIGIvbGliL3V0aWwvcmVncmVzcy9hdG9mb28vYXRvZm9vX3Rlc3QuYwotaW5kZXggMDMxYTdlZC4uZmI0MWMxYSAxMDA2NDQKLS0tLSBhL2xpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMKLSsrKyBiL2xpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2Vsc2UKLSAjIGluY2x1ZGUgImNvbXBhdC9zdGRib29sLmgiCi0gI2VuZGlmCi0rI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi0gI2luY2x1ZGUgInN1ZG9fY29tcGF0LmgiCi0gI2luY2x1ZGUgInN1ZG9fdXRpbC5oIgotQEAgLTgwLDE1ICs4MSwyMCBAQCBzdGF0aWMgc3RydWN0IHN0cnRvaWRfZGF0YSB7Ci0gICAgIGlkX3QgaWQ7Ci0gICAgIGNvbnN0IGNoYXIgKnNlcDsKLSAgICAgY29uc3QgY2hhciAqZXA7Ci0rICAgIGludCBlcnJudW07Ci0gfSBzdHJ0b2lkX2RhdGFbXSA9IHsKLS0gICAgeyAiMCwxIiwgMCwgIiwiLCAiLCIgfSwKLS0gICAgeyAiMTAiLCAxMCwgTlVMTCwgTlVMTCB9LAotLSAgICB7ICItMiIsIC0yLCBOVUxMLCBOVUxMIH0sCi0rICAgIHsgIjAsMSIsIDAsICIsIiwgIiwiLCAwIH0sCi0rICAgIHsgIjEwIiwgMTAsIE5VTEwsIE5VTEwsIDAgfSwKLSsgICAgeyAiLTEiLCAwLCBOVUxMLCBOVUxMLCBFSU5WQUwgfSwKLSsgICAgeyAiNDI5NDk2NzI5NSIsIDAsIE5VTEwsIE5VTEwsIEVJTlZBTCB9LAotKyAgICB7ICI0Mjk0OTY3Mjk2IiwgMCwgTlVMTCwgTlVMTCwgRVJBTkdFIH0sCi0rICAgIHsgIi0yMTQ3NDgzNjQ5IiwgMCwgTlVMTCwgTlVMTCwgRVJBTkdFIH0sCi0rICAgIHsgIi0yIiwgLTIsIE5VTEwsIE5VTEwsIDAgfSwKLSAjaWYgU0laRU9GX0lEX1QgIT0gU0laRU9GX0xPTkdfTE9ORwotLSAgICB7ICItMiIsIChpZF90KTQyOTQ5NjcyOTRVLCBOVUxMLCBOVUxMIH0sCi0rICAgIHsgIi0yIiwgKGlkX3QpNDI5NDk2NzI5NFUsIE5VTEwsIE5VTEwsIDAgfSwKLSAjZW5kaWYKLS0gICAgeyAiNDI5NDk2NzI5NCIsIChpZF90KTQyOTQ5NjcyOTRVLCBOVUxMLCBOVUxMIH0sCi0tICAgIHsgTlVMTCwgMCwgTlVMTCwgTlVMTCB9Ci0rICAgIHsgIjQyOTQ5NjcyOTQiLCAoaWRfdCk0Mjk0OTY3Mjk0VSwgTlVMTCwgTlVMTCwgMCB9LAotKyAgICB7IE5VTEwsIDAsIE5VTEwsIE5VTEwsIDAgfQotIH07Ci0gCi0gc3RhdGljIGludAotQEAgLTEwNCwxMSArMTEwLDIzIEBAIHRlc3Rfc3RydG9pZChpbnQgKm50ZXN0cykKLSAJKCpudGVzdHMpKys7Ci0gCWVycnN0ciA9ICJzb21lIGVycm9yIjsKLSAJdmFsdWUgPSBzdWRvX3N0cnRvaWQoZC0+aWRzdHIsIGQtPnNlcCwgJmVwLCAmZXJyc3RyKTsKLS0JaWYgKGVycnN0ciAhPSBOVUxMKSB7Ci0tCSAgICBpZiAoZC0+aWQgIT0gKGlkX3QpLTEpIHsKLS0JCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6ICVzIiwgZC0+aWRzdHIsIGVycnN0cik7Ci0rCWlmIChkLT5lcnJudW0gIT0gMCkgewotKwkgICAgaWYgKGVycnN0ciA9PSBOVUxMKSB7Ci0rCQlzdWRvX3dhcm54X25vZGVidWcoIkZBSUw6ICVzOiBtaXNzaW5nIGVycnN0ciBmb3IgZXJybm8gJWQiLAotKwkJICAgIGQtPmlkc3RyLCBkLT5lcnJudW0pOwotKwkJZXJyb3JzKys7Ci0rCSAgICB9IGVsc2UgaWYgKHZhbHVlICE9IDApIHsKLSsJCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXMgc2hvdWxkIHJldHVybiAwIG9uIGVycm9yIiwKLSsJCSAgICBkLT5pZHN0cik7Ci0rCQllcnJvcnMrKzsKLSsJICAgIH0gZWxzZSBpZiAoZXJybm8gIT0gZC0+ZXJybnVtKSB7Ci0rCQlzdWRvX3dhcm54X25vZGVidWcoIkZBSUw6ICVzOiBlcnJubyBtaXNtYXRjaCwgJWQgIT0gJWQiLAotKwkJICAgIGQtPmlkc3RyLCBlcnJubywgZC0+ZXJybnVtKTsKLSAJCWVycm9ycysrOwotIAkgICAgfQotKwl9IGVsc2UgaWYgKGVycnN0ciAhPSBOVUxMKSB7Ci0rCSAgICBzdWRvX3dhcm54X25vZGVidWcoIkZBSUw6ICVzOiAlcyIsIGQtPmlkc3RyLCBlcnJzdHIpOwotKwkgICAgZXJyb3JzKys7Ci0gCX0gZWxzZSBpZiAodmFsdWUgIT0gZC0+aWQpIHsKLSAJICAgIHN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXMgIT0gJXUiLCBkLT5pZHN0ciwgKHVuc2lnbmVkIGludClkLT5pZCk7Ci0gCSAgICBlcnJvcnMrKzsKLWRpZmYgLS1naXQgYS9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5vdXQub2sgYi9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5vdXQub2sKLWluZGV4IDVlMzE5YzkuLmNlY2Y3MDAgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5vdXQub2sKLSsrKyBiL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vawotQEAgLTQsNyArNCw3IEBAIFBhcnNlIGVycm9yIGluIHN1ZG9lcnMgbmVhciBsaW5lIDEuCi0gRW50cmllcyBmb3IgdXNlciByb290OgotIAotIENvbW1hbmQgdW5tYXRjaGVkCi0tdGVzdHN1ZG9lcnM6IHRlc3Q1LmluYyBzaG91bGQgYmUgb3duZWQgYnkgZ2lkIDQyOTQ5NjcyOTUKLSt0ZXN0c3Vkb2VyczogdGVzdDUuaW5jIHNob3VsZCBiZSBvd25lZCBieSBnaWQgNDI5NDk2NzI5NAotIFBhcnNlIGVycm9yIGluIHN1ZG9lcnMgbmVhciBsaW5lIDEuCi0gCi0gRW50cmllcyBmb3IgdXNlciByb290OgotZGlmZiAtLWdpdCBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1LnNoIGIvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUuc2gKLWluZGV4IDllNjkwYTYuLjk0ZDU4NWMgMTAwNzU1Ci0tLS0gYS9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaAotKysrIGIvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUuc2gKLUBAIC0yNCw3ICsyNCw3IEBAIEVPRgotIAotICMgVGVzdCBncm91cCB3cml0YWJsZQotIGNobW9kIDY2NCAkVEVTVEZJTEUKLS0uL3Rlc3RzdWRvZXJzIC1VICRNWVVJRCAtRyAtMSByb290IGlkIDw8RU9GCi0rLi90ZXN0c3Vkb2VycyAtVSAkTVlVSUQgLUcgLTIgcm9vdCBpZCA8PEVPRgotICNpbmNsdWRlICRURVNURklMRQotIEVPRgotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGExMWExYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotcmVxdWlyZSBzdWRvLmluYwotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LnN1ZG8ud3MvZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDI4Ny0xLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0Mjg3LTIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9zdWRvLnBhbSIKLQotU1JDX1VSSVttZDVzdW1dID0gImI1YzE4NGIxM2I2YjVkZTMyYWY2MzBhZjJmZDAxM2ZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiZWI2OGI5NDQ3MWVmNTZkOGExMDM2ZGJjZGMwOWE3YjU4YTk0OWE2OGZmY2U0OGI4M2Y4MzdkZDMzZTJlYzAiCi0KLURFUEVORFMgKz0gIiB2aXJ0dWFsL2NyeXB0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCi0gICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQkJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtLXdoZWVsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX0gOyB0aGVuCi0JCQllY2hvICdhdXRoICAgICAgIHJlcXVpcmVkICAgICBwYW1fd2hlZWwuc28gdXNlX3VpZCcgPj4ke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCi0JCQlzZWQgLWkgJ3MvIyBcKCV3aGVlbCBBTEw9KEFMTCkgQUxMXCkvXDEvJyAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCi0JCWZpCi0JZmkKLQotCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCi0JY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCi0KLQkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAvcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgotCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0vcnVuL3N1ZG8KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWQ4ODE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4zMS5iYgpAQCAtMCwwICsxLDQ4IEBACityZXF1aXJlIHN1ZG8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuc3Vkby53cy9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZTE3ZmY2ZTcyYTcwZjhkNWRhYmJhOGFiZjNjZDJkZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWE4ZDk3YTNjZWU0Yzg0NGUwODg3ZWE3YTFiZDgwZWI1NGNjOThmZDc3OTY2Nzc2Y2IxYTgwNjUzYWQ0NTRmIgorCitERVBFTkRTICs9ICIgdmlydHVhbC9jcnlwdCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWxpbWl0cyBwYW0tcGx1Z2luLWtleWluaXQnLCAnJywgZCl9IgorCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICIgXAorICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAorICAgICAgICBhY19jdl9wYXRoX01WUFJPRz0ke2Jhc2VfYmluZGlyfS9tdiBcCisgICAgICAgIGFjX2N2X3BhdGhfQlNIRUxMUFJPRz0ke2Jhc2VfYmluZGlyfS9zaCBcCisgICAgICAgIGFjX2N2X3BhdGhfU0VORE1BSUxQUk9HPSR7c2JpbmRpcn0vc2VuZG1haWwgXAorICAgICAgICBhY19jdl9wYXRoX1ZJUFJPRz0ke2Jhc2VfYmluZGlyfS92aSBcCisgICAgICAgICIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCisgICAgICAgICAgICAgLS13aXRoLXZhcmRpcj0vdmFyL2xpYi9zdWRvIFwKKyAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zdWRvLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbworCQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0td2hlZWwnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KKwkJCWVjaG8gJ2F1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV93aGVlbC5zbyB1c2VfdWlkJyA+PiR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KKwkJCXNlZCAtaSAncy8jIFwoJXdoZWVsIEFMTD0oQUxMKSBBTExcKS9cMS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKKwkJZmkKKwlmaQorCisJY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KKwljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKKworCSMgRXhwbGljaXRseSByZW1vdmUgdGhlIC9ydW4gZGlyZWN0b3J5IHRvIGF2b2lkIFFBIGVycm9yCisJcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfS9ydW4vc3VkbworfQorCitGSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU2Nzk0Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotRnJvbSBmMGFmNWJjZmQ3NTM2OTE2NTJlYWMzNWVmYmNiMjA4YzkzMzI1M2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMzEgQXVnIDIwMTUgMDU6MTE6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggbXVzbAotCi1FeHBsaWNpdGx5IGluY2x1ZGUgZmNudGwuaCBzaW5jZSB3aXRoIGdsaWJjIGlzIGNvbWVzIGluIGFzIGluZGlyZWN0Ci1pbmNsdWRlIGJ1dCBub3Qgd2l0aCBtdXNsCi0KLWxpbnV4L3RpbWUuaCBpbmNsdXNpb24gaXMgbm90IHJlcXVpcmVkIG9uIG11c2wgc28gdXNpbmcgIV9fR0xJQkNfXyBpcwotbm90IHJpZ2h0IGZvciBtdXNsIGhlcmUKLQotd2FpdCB0eXBlIGlzIGdsaWJjIHNwZWNpZmljCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0ga2xvZ2QuYyAgICB8IDEwICstLS0tLS0tLS0KLSBrc3ltX21vZC5jIHwgIDUgKy0tLS0KLSBwaWRmaWxlLmMgIHwgIDEgKwotIHN5c2xvZy5jICAgfCAgMyArKy0KLSBzeXNsb2dkLmMgIHwgIDQgKy0tLQotIDUgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tsb2dkLmMgYi9rbG9nZC5jCi1pbmRleCA2Y2M4MGVkLi45MjE5NjcxIDEwMDY0NAotLS0tIGEva2xvZ2QuYwotKysrIGIva2xvZ2QuYwotQEAgLTI2MCwxMSArMjYwLDggQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxzeXMvZmNudGwuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaWYgIWRlZmluZWQoX19HTElCQ19fKQotLSNpbmNsdWRlIDxsaW51eC90aW1lLmg+Ci0tI2VuZGlmIC8qIF9fR0xJQkNfXyAqLwotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8cGF0aHMuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1AQCAtMjc3LDEzICsyNzQsOCBAQAotIAotICNkZWZpbmUgX19MSUJSQVJZX18KLSAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+Ci0tI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLS0jIGRlZmluZSBfX05SX2tzeXNsb2cgX19OUl9zeXNsb2cKLS1fc3lzY2FsbDMoaW50LGtzeXNsb2csaW50LCB0eXBlLCBjaGFyICosIGJ1ZiwgaW50LCBsZW4pOwotLSNlbHNlCi0gI2luY2x1ZGUgPHN5cy9rbG9nLmg+Ci0gI2RlZmluZSBrc3lzbG9nIGtsb2djdGwKLS0jZW5kaWYKLSAKLSAjZGVmaW5lIExPR19CVUZGRVJfU0laRSA0MDk2Ci0gI2RlZmluZSBMT0dfTElORV9MRU5HVEggMTAwMAotZGlmZiAtLWdpdCBhL2tzeW1fbW9kLmMgYi9rc3ltX21vZC5jCi1pbmRleCA2OGNkNmI2Li42ZTI2ZGExIDEwMDY0NAotLS0tIGEva3N5bV9tb2QuYwotKysrIGIva3N5bV9tb2QuYwotQEAgLTExMywxMiArMTEzLDkgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxzeXMvZmNudGwuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSAibW9kdWxlLmgiCi0tI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLS0jaW5jbHVkZSA8bGludXgvdGltZS5oPgotLSNlbmRpZiAvKiBfX0dMSUJDX18gKi8KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHBhdGhzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KLWRpZmYgLS1naXQgYS9waWRmaWxlLmMgYi9waWRmaWxlLmMKLWluZGV4IGUwOTU5YTAuLjZkYWEyZTAgMTAwNjQ0Ci0tLS0gYS9waWRmaWxlLmMKLSsrKyBiL3BpZGZpbGUuYwotQEAgLTMxLDYgKzMxLDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotIC8qIHJlYWRfcGlkCi0gICoKLWRpZmYgLS1naXQgYS9zeXNsb2cuYyBiL3N5c2xvZy5jCi1pbmRleCBiZGIzZmYyLi5lZjdiMzRlIDEwMDY0NAotLS0tIGEvc3lzbG9nLmMKLSsrKyBiL3N5c2xvZy5jCi1AQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpc3lzbG9nLmMJNS4yOCAoQmVya2VsZXkpIDYvMjcvOTAiOwotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotLSNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+Ci0rLy8jaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgotICNpbmNsdWRlIDxzeXMvc3lzbG9nLmg+Ci0gI2lmIDAKLSAjaW5jbHVkZSAic3lzbG9nLmgiCi1AQCAtNzIsNiArNzIsNyBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpc3lzbG9nLmMJNS4yOCAoQmVya2VsZXkpIDYvMjcvOTAiOwotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8cGF0aHMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAKLSAjZGVmaW5lCV9QQVRIX0xPR05BTUUJIi9kZXYvbG9nIgotIAotZGlmZiAtLWdpdCBhL3N5c2xvZ2QuYyBiL3N5c2xvZ2QuYwotaW5kZXggZWE3M2VhNS4uMWNhMDU5NSAxMDA2NDQKLS0tLSBhL3N5c2xvZ2QuYwotKysrIGIvc3lzbG9nZC5jCi1AQCAtODE4LDkgKzgxOCw3IEBAIHZvaWQgZG9leGl0KGludCBzaWcpOwotIHZvaWQgaW5pdCgpOwotIHZvaWQgY2ZsaW5lKGNoYXIgKmxpbmUsIHJlZ2lzdGVyIHN0cnVjdCBmaWxlZCAqZik7Ci0gaW50IGRlY29kZShjaGFyICpuYW1lLCBzdHJ1Y3QgY29kZSAqY29kZXRhYik7Ci0tI2lmIGRlZmluZWQoX19HTElCQ19fKQotICNkZWZpbmUgZHByaW50ZiBteWRwcmludGYKLS0jZW5kaWYgLyogX19HTElCQ19fICovCi0gc3RhdGljIHZvaWQgZHByaW50ZihjaGFyICosIC4uLik7Ci0gc3RhdGljIHZvaWQgYWxsb2NhdGVfbG9nKHZvaWQpOwotIHZvaWQgc2lnaHVwX2hhbmRsZXIoKTsKLUBAIC0yMDk0LDcgKzIwOTIsNyBAQCB2b2lkIHJlYXBjaGlsZCgpCi0gCSh2b2lkKSBzaWduYWwoU0lHQ0hMRCwgcmVhcGNoaWxkKTsJLyogcmVzZXQgc2lnbmFsIGhhbmRsZXIgLUFTUCAqLwotIAl3YWl0ICgoaW50ICopMCk7Ci0gI2Vsc2UKLS0JdW5pb24gd2FpdCBzdGF0dXM7Ci0rCWludCBzdGF0dXM7Ci0gCi0gCXdoaWxlICh3YWl0Mygmc3RhdHVzLCBXTk9IQU5HLCAoc3RydWN0IHJ1c2FnZSAqKSBOVUxMKSA+IDApCi0gCQk7Ci0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtZml4LW9uZS1yYXJlbHktcmVwcm9kdWNlZC1wYXJhbGxlbC1idWlsZC1wcm9ibGVtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiZjZhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtZml4LW9uZS1yYXJlbHktcmVwcm9kdWNlZC1wYXJhbGxlbC1idWlsZC1wcm9ibGVtLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gZGNhYTc1MzkxZmYyNjdjMzhlNzc2ZDQ4YzU3OWNkYjczNGI5MWFmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIzIE1hciAyMDIwIDE1OjUyOjMyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBvbmUgcmFyZWx5IHJlcHJvZHVjZWQgcGFyYWxsZWwgYnVpbGQgcHJvYmxlbQorCitmaXggZm9yIHRoaXMgaXNzdWU6CitodHRwczovL2dpdGh1Yi5jb20vdHJvZ2xvYml0L3N5c2tsb2dkL2lzc3Vlcy8xNworCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vdHJvZ2xvYml0L3N5c2tsb2dkL2NvbW1pdC9iODhlMjFkMTc3MGEyNjJmMGU1ZDBmNmI4NGYwYWJkNGE1ZGU1NWI3XQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDk5M2RiZmQuLjA2YjcwNmQgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTU2LDMgKzU2LDEzIEBAIGxpYnN5c2xvZ19sYV9TT1VSQ0VTICA9IHN5c2xvZy5jIHN5c2xvZy5oIGNvbXBhdC5oCisgbGlic3lzbG9nX2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURfWE9QRU5fU09VUkNFPTYwMAorIGxpYnN5c2xvZ19sYV9MREZMQUdTICA9ICQoQU1fTERGTEFHUykgLXZlcnNpb24taW5mbyAwOjA6MAorIGxpYnN5c2xvZ19sYV9MSUJBREQgICA9ICQoTFRMSUJPQkpTKQorKworKyMgQm90aCBsaWJzeXNsb2dfbGEgYW5kIHN5c2xvZ2QvbG9nZ2VyIHJlcXVpcmVzIG9iamVjdHMgbGlrZSBsaWIvcGlkZmlsZS5vLCBmb3IKKysjIGxpYnN5c2xvZ19sYSwgdGhlIG9iamVjdHMgc2hvdWxkIGJlIGNvbXBpbGVkIHdpdGggLWZQSUMsIGJ1dCBmb3IKKysjIHN5c2xvZ2QvbG9nZ2VyLCBpdCBkb2Vzbid0IG5lZWQgLWZQSUMsIHNvIHRoZXJlIGlzIGEgcmFjZSBpc3N1ZSB3aGVuIHRoZSB0d28KKysjIGRpZmZlcmVudCBsaWIvcGlkZmlsZS5vIGFyZSBjb21waWxlZCBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaCB3b3VsZCBjYXVzZSBlcnJvcnMgbGlrZToKKysjIGxkOiBzeXNsb2dkLXN5c2xvZ2QubzogaW4gZnVuY3Rpb24gYG1haW4nOgorKyMgc3lzbG9nZC5jOjQxNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19waWRmaWxlJworKyMKKysjIE1ha2UgTElCT0JKUyBkZXBlbmQgb24gTFRMSUJPQkpTIHRvIGZpeCB0aGUgcHJvYmxlbS4KKyskKExJQk9CSlMpOiAkKExUTElCT0JKUykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjQzMWFmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gY2I3MmIzZTE3MmMyMzhiNGI1YWU1OTM1ZGM2YmU1NGY1MDM0ZmNmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMwIEp1biAyMDE3IDE4OjIwOjA2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBmaXggcHJvYmxlbXMgdGhhdCBjYXVzZXMgYSBzZWdtZW50YXRpb24gZmF1bHQgdW5kZXIgc29tZQotIGNvbmRpdGlvbnMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgbm8gdXBzdHJlYW0gXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0ga3N5bV9tb2QuYyB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9rc3ltX21vZC5jIGIva3N5bV9tb2QuYwotaW5kZXggNmUyNmRhMS4uYTNkYWE3ZCAxMDA2NDQKLS0tLSBhL2tzeW1fbW9kLmMKLSsrKyBiL2tzeW1fbW9kLmMKLUBAIC0xODYsNyArMTg2LDYgQEAgZXh0ZXJuIGludCBJbml0TXN5bXMoKQotIAkJZWxzZQotIAkJCVN5c2xvZyhMT0dfRVJSLCAiRXJyb3IgbG9hZGluZyBrZXJuZWwgc3ltYm9scyAiIFwKLSAJCQkgICAgICAgIi0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0tCQlmY2xvc2Uoa3N5bXMpOwotIAkJcmV0dXJuKDApOwotIAl9Ci0gCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYmRlZjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMi1NYWtlLXdheS1mb3ItcmVzcGVjdGluZy1mbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBiMjJmMjQ0NzMyY2QwZjQ3NWFmMmY4MmZjN2VlY2VjNDlmOTA2MjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMSBKdWwgMjAxNyAwMDowMTo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gTWFrZSB3YXkgZm9yIHJlc3BlY3RpbmcgZmxhZ3MgZnJvbSBlbnZpcm9ubWVudAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgNCArLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNWFmMTY4OS4uYWY2OTlkMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTE3LDE0ICsxNywxMiBAQAotICMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICMgICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KLSAKLS1DQz0gZ2NjCi0gI1NLRkxBR1M9IC1nIC1EU1lTViAtV2FsbAotICNMREZMQUdTPSAtZwotLVNLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZQotK1NLRkxBR1MgPSAkKENGTEFHUykgJChDUFBGTEFHUykgLURTWVNWIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlCi0gIyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFNjRfU09VUkNFCi0gIyAkKHNoZWxsIGdldGNvbmYgTEZTX1NLRkxBR1MpCi0tTERGTEFHUz0gLXMKLSAKLSAjIExvb2sgd2hlcmUgeW91ciBpbnN0YWxsIHByb2dyYW0gaXMuCi0gSU5TVEFMTCA9IC91c3IvYmluL2luc3RhbGwKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL2tsb2dkLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9rbG9nZC5zZXJ2aWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzg4OGM0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL2tsb2dkLnNlcnZpY2UKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPUtlcm5lbCBMb2dnaW5nIFNlcnZpY2UKLUFmdGVyPXN5c2xvZ2Quc2VydmljZQotCi1bU2VydmljZV0KLVR5cGU9Zm9ya2luZwotRXhlY1N0YXJ0PS9zYmluL2tsb2dkCi1QSURGaWxlPS92YXIvcnVuL2tsb2dkLnBpZAotU3RhbmRhcmRPdXRwdXQ9bnVsbAotUmVzdGFydD1vbi1mYWlsdXJlCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby1zdHJpcC1pbnN0YWxsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDI2YzgzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBzeXNrbG9nZC0xLjUuMS9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c2tsb2dkLTEuNS4xLm9yaWcvTWFrZWZpbGUKLSsrKyBzeXNrbG9nZC0xLjUuMS9NYWtlZmlsZQotQEAgLTEyNyw4ICsxMjcsOCBAQCBjbG9iYmVyOiBjbGVhbgotIAlybSAtZiBzeXNsb2dkIGtsb2dkIGtzeW0gc3lzbG9nX3RzdCBvb3BzX3Rlc3QgVEFHUyB0c3lzbG9nZCB0a2xvZ2QKLSAKLSBpbnN0YWxsX2V4ZWM6IHN5c2xvZ2Qga2xvZ2QKLS0JJHtJTlNUQUxMfSAtbSA1MDAgLXMgc3lzbG9nZCAke0JJTkRJUn0vc3lzbG9nZAotLQkke0lOU1RBTEx9IC1tIDUwMCAtcyBrbG9nZCAke0JJTkRJUn0va2xvZ2QKLSsJJHtJTlNUQUxMfSAtbSA1MDAgc3lzbG9nZCAke0JJTkRJUn0vc3lzbG9nZAotKwkke0lOU1RBTEx9IC1tIDUwMCBrbG9nZCAke0JJTkRJUn0va2xvZ2QKLSAKLSBpbnN0YWxsX21hbjoKLSAJJHtJTlNUQUxMfSAtbyAke01BTl9VU0VSfSAtZyAke01BTl9HUk9VUH0gLW0gJHtNQU5fUEVSTVN9IHN5c2tsb2dkLjggJHtNQU5ESVJ9L21hbjgvc3lza2xvZ2QuOApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tdmVjdG9yaXphdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXZlY3Rvcml6YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxY2MwNDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tdmVjdG9yaXphdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1UaGUgY29tcGlsZXIgc2hvdWxkIG5vdCBiZSBnZW5lcmF0aW5nIHZlY3Rvcml6ZWQgaW5zdHJ1Y3Rpb25zIG9uIHRoaXMgdGFyZ2V0LgotVGhpcyBpcyBhIHdvcmsgYXJvdW5kIHVudGlsIEkgY2FuIGRldGVybWluZSB3aHkgdGhpcyBpcyBvY2N1cmluZyBvbiB0aGlzCi1wYXJ0aWN1bGFyIHJlY2lwZQotCi1JbmRleDogc3lza2xvZ2QtMS41L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lza2xvZ2QtMS41Lm9yaWcvTWFrZWZpbGUKLSsrKyBzeXNrbG9nZC0xLjUvTWFrZWZpbGUKLUBAIC0yMCw3ICsyMCw4IEBACi0gQ0M9IGdjYwotICNTS0ZMQUdTPSAtZyAtRFNZU1YgLVdhbGwKLSAjTERGTEFHUz0gLWcKLS1TS0ZMQUdTPSAkKFJQTV9PUFRfRkxBR1MpIC1PMyAtRFNZU1YgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGwgLWZuby1zdHJlbmd0aC1yZWR1Y2UKLStTS0ZMQUdTPSAkKFJQTV9PUFRfRkxBR1MpIC1PMyAtRFNZU1YgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGwgLWZuby1zdHJlbmd0aC1yZWR1Y2UgXAotKwktZm5vLXRyZWUtdmVjdG9yaXplCi0gIyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFNjRfU09VUkNFCi0gIyAkKHNoZWxsIGdldGNvbmYgTEZTX1NLRkxBR1MpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNrbG9nZCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkCmluZGV4IDczNDI0ODQuLjJhMzU2YTYgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkCkBAIC0xOCw5ICsxOCw3IEBACiBQQVRIPS9iaW46L3Vzci9iaW46L3NiaW46L3Vzci9zYmluCiAKIHBpZGZpbGVfc3lzbG9nZD0vdmFyL3J1bi9zeXNsb2dkLnBpZAotcGlkZmlsZV9rbG9nZD0vdmFyL3J1bi9rbG9nZC5waWQKLWJpbnBhdGhfc3lzbG9nZD0vc2Jpbi9zeXNsb2dkCi1iaW5wYXRoX2tsb2dkPS9zYmluL2tsb2dkCitiaW5wYXRoX3N5c2xvZ2Q9L3Vzci9zYmluL3N5c2xvZ2QKIAogdGVzdCAteCAkYmlucGF0aCB8fCBleGl0IDAKIApAQCAtMTEyLDI4ICsxMTAsMTYgQEAKICAgICBjcmVhdGVfeGNvbnNvbGUKICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX3N5c2xvZ2QgLS1uYW1lIHN5c2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX3N5c2xvZ2QgLS0gJFNZU0xPR0QKICAgICBsb2dfZW5kX21zZyAkPwotICAgIGxvZ19iZWdpbl9tc2cgIlN0YXJ0aW5nIGtlcm5lbCBsb2cgZGFlbW9uLi4uIgotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QgLS1uYW1lIGtsb2dkIC0tc3RhcnRhcyAkYmlucGF0aF9rbG9nZCAtLSAkS0xPR0QKLSAgICBsb2dfZW5kX21zZyAkPwogICAgIDs7CiAgIHN0b3ApCiAgICAgbG9nX2JlZ2luX21zZyAiU3RvcHBpbmcgc3lzdGVtIGxvZyBkYWVtb24uLi4iCiAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX3N5c2xvZ2QgLS1uYW1lIHN5c2xvZ2QKICAgICBsb2dfZW5kX21zZyAkPwotICAgIGxvZ19iZWdpbl9tc2cgIlN0b3BwaW5nIGtlcm5lbCBsb2cgZGFlbW9uLi4uIgotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnkgMyAtLWV4ZWMgJGJpbnBhdGhfa2xvZ2QgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkCi0gICAgbG9nX2VuZF9tc2cgJD8KICAgICA7OwogICByZWxvYWR8Zm9yY2UtcmVsb2FkKQogICAgIGxvZ19iZWdpbl9tc2cgIlJlbG9hZGluZyBzeXN0ZW0gbG9nIGRhZW1vbi4uLiIKICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXNpZ25hbCAxIC0tcGlkZmlsZSAkcGlkZmlsZV9zeXNsb2dkIC0tbmFtZSBzeXNsb2dkCiAgICAgbG9nX2VuZF9tc2cgJD8KLSAgICBsb2dfYmVnaW5fbXNnICJSZWxvYWRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgcGlkPWBjYXQgJHBpZGZpbGVfa2xvZ2QgMj4gL2Rldi9udWxsYAotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnkgMyAtLWV4ZWMgJGJpbnBhdGhfa2xvZ2QgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkCi0gICAgd2FpdHBpZCAkcGlkCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZCAtLW5hbWUga2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX2tsb2dkIC0tICRLTE9HRAotICAgIGxvZ19lbmRfbXNnICQ/CiAgICAgOzsKICAgcmVzdGFydCkKICAgICBsb2dfYmVnaW5fbXNnICJSZXN0YXJ0aW5nIHN5c3RlbSBsb2cgZGFlbW9uLi4uIgpAQCAtMTQyLDEyICsxMjgsNiBAQAogICAgIHdhaXRwaWQgJHBpZAogICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfc3lzbG9nZCAtLW5hbWUgc3lzbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfc3lzbG9nZCAtLSAkU1lTTE9HRAogICAgIGxvZ19lbmRfbXNnICQ/Ci0gICAgbG9nX2JlZ2luX21zZyAiUmVsb2FkaW5nIGtlcm5lbCBsb2cgZGFlbW9uLi4uIgotICAgIHBpZD1gY2F0ICRwaWRmaWxlX2tsb2dkIDI+IC9kZXYvbnVsbGAKLSAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXJldHJ5IDMgLS1leGVjICRiaW5wYXRoX2tsb2dkIC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZAotICAgIHdhaXRwaWQgJHBpZAotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QgLS1uYW1lIGtsb2dkIC0tc3RhcnRhcyAkYmlucGF0aF9rbG9nZCAtLSAkS0xPR0QKLSAgICBsb2dfZW5kX21zZyAkPwogICAgIDs7CiAgIHJlbG9hZC1vci1yZXN0YXJ0KQogICAgIGlmIHJ1bm5pbmcKQEAgLTE2MCw4ICsxNDAsNiBAQAogICBzdGF0dXMpCiAgICAgc3RhdHVzIHN5c2xvZ2QKICAgICBSRVRWQUw9JD8KLSAgICBzdGF0dXMga2xvZ2QKLSAgICBydmFsPSQ/CiAgICAgWyAkUkVUVkFMIC1lcSAwIF0gJiYgZXhpdCAkcnZhbAogICAgIGV4aXQgJFJFVFZBTAogICAgIDs7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2cuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2xvZy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODQ5ZGUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2xvZy5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotIyAgL2V0Yy9zeXNsb2cuY29uZglDb25maWd1cmF0aW9uIGZpbGUgZm9yIHN5c2xvZ2QuCi0jCi0jICBQb3J0ZWQgZnJvbSBkZWJpYW4gYnkgWXUgS2UgPGtlLnl1QGludGVsLmNvbT4KLSMKLQotIwotIyBGaXJzdCBzb21lIHN0YW5kYXJkIGxvZ2ZpbGVzLiAgTG9nIGJ5IGZhY2lsaXR5LgotIwotCi1hdXRoLGF1dGhwcml2LioJCQkvdmFyL2xvZy9hdXRoLmxvZwotKi4qO2F1dGgsYXV0aHByaXYubm9uZQkJLS92YXIvbG9nL3N5c2xvZwotI2Nyb24uKgkJCQkvdmFyL2xvZy9jcm9uLmxvZwotZGFlbW9uLioJCQktL3Zhci9sb2cvZGFlbW9uLmxvZwota2Vybi4qCQkJCS0vdmFyL2xvZy9rZXJuLmxvZwotbHByLioJCQkJLS92YXIvbG9nL2xwci5sb2cKLW1haWwuKgkJCQktL3Zhci9sb2cvbWFpbC5sb2cKLXVzZXIuKgkJCQktL3Zhci9sb2cvdXNlci5sb2cKLQotIwotIyBMb2dnaW5nIGZvciB0aGUgbWFpbCBzeXN0ZW0uICBTcGxpdCBpdCB1cCBzbyB0aGF0Ci0jIGl0IGlzIGVhc3kgdG8gd3JpdGUgc2NyaXB0cyB0byBwYXJzZSB0aGVzZSBmaWxlcy4KLSMKLW1haWwuaW5mbwkJCS0vdmFyL2xvZy9tYWlsLmluZm8KLW1haWwud2FybgkJCS0vdmFyL2xvZy9tYWlsLndhcm4KLW1haWwuZXJyCQkJL3Zhci9sb2cvbWFpbC5lcnIKLQotIyBMb2dnaW5nIGZvciBJTk4gbmV3cyBzeXN0ZW0KLSMKLW5ld3MuY3JpdAkJCS92YXIvbG9nL25ld3MuY3JpdAotbmV3cy5lcnIJCQkvdmFyL2xvZy9uZXdzLmVycgotbmV3cy5ub3RpY2UJCQktL3Zhci9sb2cvbmV3cy5ub3RpY2UKLQotIwotIyBTb21lIGBjYXRjaC1hbGwnIGxvZ2ZpbGVzLgotIwotKi49ZGVidWc7XAotYXV0aCxhdXRocHJpdi5ub25lO1wKLW5ld3Mubm9uZTttYWlsLm5vbmUJLS92YXIvbG9nL2RlYnVnCi0KLSouPWluZm87Ki49bm90aWNlOyouPXdhcm47XAotYXV0aCxhdXRocHJpdi5ub25lO1wKLWNyb24sZGFlbW9uLm5vbmU7XAotbWFpbCxuZXdzLm5vbmUJCS0vdmFyL2xvZy9tZXNzYWdlcwotCi0jCi0jIEVtZXJnZW5jaWVzIGFyZSBzZW50IHRvIGV2ZXJ5Ym9keSBsb2dnZWQgaW4uCi0jCi0qLmVtZXJnCQkJCSoKLQotIwotIyBJIGxpa2UgdG8gaGF2ZSBtZXNzYWdlcyBkaXNwbGF5ZWQgb24gdGhlIGNvbnNvbGUsIGJ1dCBvbmx5IG9uIGEgdmlydHVhbAotIyBjb25zb2xlIEkgdXN1YWxseSBsZWF2ZSBpZGxlLgotIwotI2RhZW1vbixtYWlsLio7XAotI25ld3MuPWNyaXQ7bmV3cy49ZXJyO25ld3MuPW5vdGljZTtcCi0jKi49ZGVidWc7Ki49aW5mbztcCi0jKi49bm90aWNlOyouPXdhcm4JL2Rldi90dHk4Ci0KLSMgVGhlIG5hbWVkIHBpcGUgL2Rldi94Y29uc29sZSBpcyBmb3IgdGhlIGB4Y29uc29sZScgdXRpbGl0eS4gIFRvIHVzZSBpdCwKLSMgeW91IG11c3QgaW52b2tlIGB4Y29uc29sZScgd2l0aCB0aGUgYC1maWxlJyBvcHRpb246Ci0jCi0jICAgICQgeGNvbnNvbGUgLWZpbGUgL2Rldi94Y29uc29sZSBbLi4uXQotIwotIyBOT1RFOiBhZGp1c3QgdGhlIGxpc3QgYmVsb3csIG9yIHlvdSdsbCBnbyBjcmF6eSBpZiB5b3UgaGF2ZSBhIHJlYXNvbmFibHkKLSMgICAgICBidXN5IHNpdGUuLgotIwotZGFlbW9uLio7bWFpbC4qO1wKLW5ld3MuZXJyO1wKLSouPWRlYnVnOyouPWluZm87XAotKi49bm90aWNlOyouPXdhcm4JfC9kZXYveGNvbnNvbGUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nZC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nZC5zZXJ2aWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWFmZjNkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2xvZ2Quc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249U3lzdGVtIExvZ2dpbmcgU2VydmljZQotUmVxdWlyZXM9c3lzbG9nLnNvY2tldAotCi1bU2VydmljZV0KLVR5cGU9Zm9ya2luZwotRXhlY1N0YXJ0PS9zYmluL3N5c2xvZ2QKLVBJREZpbGU9L3Zhci9ydW4vc3lzbG9nZC5waWQKLVN0YW5kYXJkT3V0cHV0PW51bGwKLVJlc3RhcnQ9b24tZmFpbHVyZQotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0Ci1BbGlhcz1zeXNsb2cuc2VydmljZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvdG1wZmlsZXMuc3lza2xvZ2QuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3RtcGZpbGVzLnN5c2tsb2dkLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YWVjZDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvdG1wZmlsZXMuc3lza2xvZ2QuY29uZgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXAgL2Rldi94Y29uc29sZSAwNjQwIHJvb3QgYWRtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKaW5kZXggNzQ5MDI2Zi4uODg5OWRhYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYwpAQCAtMSw2MiArMSwzOCBAQAogU1VNTUFSWSA9ICJTeXN0ZW0gTG9nIERhZW1vbnMiCi1ERVNDUklQVElPTiA9ICJUaGUgc3lza2xvZ2QgcGFja2FnZSBpbXBsZW1lbnRzIHR3byBzeXN0ZW0gbG9nIGRhZW1vbnM6IHN5c2xvZ2QsIGtsb2dkIgorREVTQ1JJUFRJT04gPSAiVGhlIHN5c2tsb2dkIHBhY2thZ2UgaW1wbGVtZW50cyBzeXN0ZW0gbG9nIGRhZW1vbnM6IHN5c2xvZ2QiCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmluZm9kcm9tLm9yZy9wcm9qZWN0cy9zeXNrbG9nZC8iCiBTRUNUSU9OID0gImJhc2UiCiAKLUxJQ0VOU0UgPSAiR1BMdjIrICYgQlNEIgotTElDRU5TRV9zeXNsb2dkID0gIkJTRCIKLUxJQ0VOU0Vfa2xvZ2QgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3lzbG9nZC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PTc3ZmZiMmZlYzQ4YzQ2ZDdjYTBhYmIyZDU4MTNlN2ZkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xOTttZDU9N2U4N2VkMGFlNjE0MmRlMDc5YmNlNzM4YzEwYzg5OWQgXAorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01YjRiZTRiMjU0OTMzODUyNjc1OGVmNDc5YzA0MDk0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3lzbG9nZC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PWE4ODBmZWNiYzA0NTAzZjA3MWM0OTRhOWMwZGQ0Zjk3IFwKICAgICAgICAgICAgICAgICAgICAiCiAKLWluaGVyaXQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCitpbmhlcml0IHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZCBhdXRvdG9vbHMKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Ryb2dsb2JpdC9zeXNrbG9nZC5naXQ7bm9icmFuY2g9MSBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC1pbnN0YWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1NYWtlLXdheS1mb3ItcmVzcGVjdGluZy1mbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3N5c2tsb2dkIFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZ2Quc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9rbG9nZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3RtcGZpbGVzLnN5c2tsb2dkLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2ggXAogICAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1TUkNfVVJJX2FwcGVuZF9lNTAwdjIgPSAiIGZpbGU6Ly9uby12ZWN0b3JpemF0aW9uLnBhdGNoIgorRVhUUkFfT0VDT05GID0gIi0td2l0aC1zeXN0ZW1kPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gLS13aXRob3V0LWxvZ2dlciIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3N5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mCisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L3N5c2tsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKK30KIAogU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXNsb2dkLnNlcnZpY2Uga2xvZ2Quc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXNsb2dkLnNlcnZpY2UiCiBTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKIAogSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mIgogUkNPTkZMSUNUU18ke1BOfSA9ICJyc3lzbG9nIGJ1c3lib3gtc3lzbG9nIHN5c2xvZy1uZyIKIAotQ0ZMQUdTICs9ICItRFNZU1YgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEVfU09VUkNFIgotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCBcCi0JCQkke0R9JHttYW5kaXJ9L21hbjUgXAotCQkJJHtEfSR7YmFzZV9zYmluZGlyfQotCW9lX3J1bm1ha2UgJ0JJTkRJUj0ke0R9JHtiYXNlX3NiaW5kaXJ9JyBcCi0JCQknTUFORElSPSR7RH0ke21hbmRpcn0nIGluc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2cuY29uZgotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9zeXNrbG9nZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9rbG9nZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kCi0JCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdG1wZmlsZXMuc3lza2xvZ2QuY29uZiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lza2xvZ2QuY29uZgotCWZpCi19Ci0KIEZJTEVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c2tsb2dkLmNvbmYnLCAnJywgZCl9IgogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZF8xLjUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzEuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGJjZmQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzEuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHN5c2tsb2dkLmluYwotCi1TUkNSRVYgPSAiOTMwYTJiMWMwZDE1YjE0MzA5YTQ5ZjE0ZTNmMzBlOTA1NDU2YWY0ZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzIuMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMi4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2YjRlZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzIuMS4xLmJiCkBAIC0wLDAgKzEsMyBAQAorcmVxdWlyZSBzeXNrbG9nZC5pbmMKKworU1JDUkVWID0gIjI0ZGFmZTlhMjdhYzk1OWViZWI4OWFjZDNlYmQzZDYyY2NhNGI3NTUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwppbmRleCA3N2NjNmYyLi44ZmQ4N2I5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKQEAgLTIzLDEwICsyMyw2IEBACiAKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXN0cmlwcGluZyIKIAotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXNzdGF0LnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKLQogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAgICAgZXhwb3J0IHNhX2xpYl9kaXI9JHtsaWJleGVjZGlyfS9zYQogfQpAQCAtMzQsNiArMzAsOSBAQAogZG9faW5zdGFsbCgpIHsKIAlhdXRvdG9vbHNfZG9faW5zdGFsbAogCisJIyBEb24ndCB2ZXJzaW9uIHRoZSBkb2N1bWVudGF0aW9uCisJbXYgJHtEfSR7ZG9jZGlyfS8ke0JQfSAke0R9JHtkb2NkaXJ9LyR7QlBOfQorCiAJIyBkb24ndCBpbnN0YWxsIC92YXIvbG9nL3NhIHdoZW4gcG9wdWxhdGluZyByb290ZnMuIERvIGl0IHRocm91Z2ggdm9sYXRpbGUKIAlybSAtcmYgJHtEfS92YXIKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUZpeC0yMzItTWVtb3J5LWNvcnJ1cHRpb24tYnVnLWR1ZS10by1JbnRlZ2VyLU92ZXJmbG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvMDAwMS1GaXgtMjMyLU1lbW9yeS1jb3JydXB0aW9uLWJ1Zy1kdWUtdG8tSW50ZWdlci1PdmVyZmxvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmIxMTE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUZpeC0yMzItTWVtb3J5LWNvcnJ1cHRpb24tYnVnLWR1ZS10by1JbnRlZ2VyLU92ZXJmbG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDYwM2FlNGVkOGNkNjVhYmYwNzc2ZWY3ZjY4MzU0YTVjMjRhMzQxMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTZWJhc3RpZW4gR09EQVJEIDxzeXNzdGF0QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFR1ZSwgMTUgT2N0IDIwMTkgMTQ6Mzk6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ICMyMzI6IE1lbW9yeSBjb3JydXB0aW9uIGJ1ZyBkdWUgdG8gSW50ZWdlciBPdmVyZmxvdyBpbgotIHJlbWFwX3N0cnVjdCgpCi0KLVRyeSB0byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gcmVhZGluZyBhIGNvcnJ1cHRlZCBiaW5hcnkgZGF0YWZpbGUKLXdpdGggc2FkZi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3N0YXQvc3lzc3RhdC9jb21taXQvODNmYWQ5Yzg5NWQxYWMxM2Y3NmFmNTg4M2I3NDUxYjMzMDJiZWVmNV0KLUNWRTogQ1ZFLTIwMTktMTYxNjcKLQotU2lnbmVkLW9mZi1ieTogU2ViYXN0aWVuIEdPREFSRCA8c3lzc3RhdEB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBXZW5saW4gS2FuZyA8d2VubGluLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNhX2NvbW1vbi5jIHwgNyArKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NhX2NvbW1vbi5jIGIvc2FfY29tbW9uLmMKLWluZGV4IDM5NWMxMWMuLmNmYTkwMDcgMTAwNjQ0Ci0tLS0gYS9zYV9jb21tb24uYwotKysrIGIvc2FfY29tbW9uLmMKLUBAIC0xMzM2LDcgKzEzMzYsOCBAQCBpbnQgcmVtYXBfc3RydWN0KHVuc2lnbmVkIGludCBndHlwZXNfbnJbXSwgdW5zaWduZWQgaW50IGZ0eXBlc19ucltdLAotIAkvKiBSZW1hcCBbdW5zaWduZWRdIGludCBmaWVsZHMgKi8KLSAJZCA9IGd0eXBlc19uclsxXSAtIGZ0eXBlc19uclsxXTsKLSAJaWYgKGQpIHsKLS0JCWlmIChmdHlwZXNfbnJbMV0gKiBVTF9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMV0pCi0rCQlpZiAoZ3R5cGVzX25yWzBdICogVUxMX0FMSUdOTUVOVF9XSURUSCArCi0rCQkgICAgZnR5cGVzX25yWzFdICogVUxfQUxJR05NRU5UX1dJRFRIIDwgZnR5cGVzX25yWzFdKQotIAkJCS8qIE92ZXJmbG93ICovCi0gCQkJcmV0dXJuIC0xOwotIAotQEAgLTEzNjUsNyArMTM2Niw5IEBAIGludCByZW1hcF9zdHJ1Y3QodW5zaWduZWQgaW50IGd0eXBlc19ucltdLCB1bnNpZ25lZCBpbnQgZnR5cGVzX25yW10sCi0gCS8qIFJlbWFwIHBvc3NpYmxlIGZpZWxkcyAobGlrZSBzdHJpbmdzIG9mIGNoYXJzKSBmb2xsb3dpbmcgaW50IGZpZWxkcyAqLwotIAlkID0gZ3R5cGVzX25yWzJdIC0gZnR5cGVzX25yWzJdOwotIAlpZiAoZCkgewotLQkJaWYgKGZ0eXBlc19uclsyXSAqIFVfQUxJR05NRU5UX1dJRFRIIDwgZnR5cGVzX25yWzJdKQotKwkJaWYgKGd0eXBlc19uclswXSAqIFVMTF9BTElHTk1FTlRfV0lEVEggKwotKwkJICAgIGd0eXBlc19uclsxXSAqIFVMX0FMSUdOTUVOVF9XSURUSCArCi0rCQkgICAgZnR5cGVzX25yWzJdICogVV9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMl0pCi0gCQkJLyogT3ZlcmZsb3cgKi8KLSAJCQlyZXR1cm4gLTE7Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI2MzI5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDQyMzI1ZmFhODhkNjRjY2U3OTk5NzdkNjExYjI3OTJiZWIxNTQ2NDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNCBTZXAgMjAxNSAwODozNjo1OSArMDAwMAotU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIG5lZWRlZCBoZWFkZXJzIGV4cGxpY2l0bHkKLQotb24gZ2xpYmMgdGhlc2UgaGVhZGVycyBnZXQgcHVsbGVkIGluIGluZGlyZWN0bHkgdmlhIG90aGVyIC5oIGZpbGVzCi1idXQgcmlnaHQgZml4IGlzIHRvIGluY2x1ZGUgdGhlbSBkaXJlY3RseSB3aGVuIHVzZWQKLQotZml4ZXMKLQotZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ1BBVEhfTUFYJwotZXJyb3I6IGNhbGxlZCBvYmplY3QgdHlwZSAndW5zaWduZWQgaW50JyBpcyBub3QgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBwb2ludGVyCi1kbV9tYWpvciA9IG1ham9yKGF1eC5zdF9yZGV2KTsKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBjb21tb24uYyAgICB8IDEgKwotIGlvY29uZi5jICAgIHwgMSArCi0gc2FfY29tbW9uLmMgfCAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2NvbW1vbi5jCi0rKysgc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKLUBAIC0yMCw2ICsyMCw3IEBACi0gICovCi0gCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotSW5kZXg6IHN5c3N0YXQtMTEuNy4xL2lvY29uZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzc3RhdC0xMS43LjEub3JpZy9pb2NvbmYuYwotKysrIHN5c3N0YXQtMTEuNy4xL2lvY29uZi5jCi1AQCAtMjcsNiArMjcsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2luY2x1ZGUgImlvY29uZi5oIgotICNpbmNsdWRlICJjb21tb24uaCIKLUluZGV4OiBzeXNzdGF0LTExLjcuMS9zYV9jb21tb24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3N0YXQtMTEuNy4xLm9yaWcvc2FfY29tbW9uLmMKLSsrKyBzeXNzdGF0LTExLjcuMS9zYV9jb21tb24uYwotQEAgLTIwLDYgKzIwLDcgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLWNoZWNrLWZvci1jaGtjb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLWNoZWNrLWZvci1jaGtjb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA2N2JiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDE1OTBjYzYxNGFhZjBmYjgxY2Q4MDQ0MTRkNmM5ZDVhOTIyNzM1MmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBXZW5saW4gS2FuZyA8d2VubGluLmthbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgNSBOb3YgMjAxOSAxNjoxNjo0NCArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IHJlbW92ZSBjaGVjayBmb3IgY2hrY29uZmlnCisKK2Noa2NvbmZpZyBjYW4ndCB3b3JrIG9uIGNyb3NzLXBsYXRmb3JtLCBzbyBzaG91bGQgcmVtb3ZlIGNoZWNrIGZvciBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgZW1iZWRkZWQgc3BlY2lmaWMgXQorCitTaWduZWQtb2ZmLWJ5OiBXZW5saW4gS2FuZyA8d2VubGluLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA0OGI5YTMxLi5jZWRlYjQzIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC00Miw3ICs0Miw4IEBAIEFDX1NVQlNUKFZFUl9KU09OKQorIEFDX1NVQlNUKFZFUl9YTUwpCisgCisgQUNfUEFUSF9QUk9HKFBBVEhfQ1AsIGNwKQorLUFDX1BBVEhfUFJPRyhQQVRIX0NIS0NPTkZJRywgY2hrY29uZmlnKQorKyNBQ19QQVRIX1BST0coUEFUSF9DSEtDT05GSUcsIGNoa2NvbmZpZykKKytBQ19TVUJTVChQQVRIX0NIS0NPTkZJRykKKyAKKyAjIENoZWNrIGZvciBzeXN0ZW1kCisgQUNfQ0hFQ0tfUFJPRyhQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBwa2ctY29uZmlnKQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYyODg4ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBzeXNzdGF0LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIFwKLQkgICAgZmlsZTovLzAwMDEtRml4LTIzMi1NZW1vcnktY29ycnVwdGlvbi1idWctZHVlLXRvLUludGVnZXItT3ZlcmZsby5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkOGUzYmJiOWM4NzNkZDM3MGY2ZDMzNjY0ZTMyNjU3MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNzUyZjNjNDA2MTUzYTZmYzQ0NjQ5NmYxMTAyODcyNTA1YWNlM2YwOTMxZDk3NWMxZDY2NGM4MWVjMDlmMTI5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE5MGY4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4yLjEuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIHN5c3N0YXQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLWNoZWNrLWZvci1jaGtjb25maWcucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZGZmZjVmYWMyNGUzNWJkOTJmYjc4OTZkZWJmMmZmYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWRiMGUxOWI1MTRhYzU2MGEwOThhMDI5MzNhNDczNWI4ODEyOTZkNjEwMTRkYjg5YmY4MGYwNWRkN2E0NzMyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMyLmJiCmluZGV4IDE4ZjA5YjUuLmViZTZjYjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzIuYmIKQEAgLTIyLDYgKzIyLDggQEAKIAogRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtzYmluZGlyfSIKIAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInRhcl9jdl9wYXRoX1JTSD1ubyIKKwogIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQogIyBhYnNvbHV0ZSBzaW5jZSB0YXIgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKICMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzAwMDEtUmVtb3ZlLWZnZXRzLWV4dGVybi1kZWNsYXJhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzAwMDEtUmVtb3ZlLWZnZXRzLWV4dGVybi1kZWNsYXJhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGM4ZDljCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMjRkMTA5MTliNGJjNWUzN2EyZDgwYjI3NGQyY2QyZWU3N2IwMzU0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEphbiAyMDIwIDE0OjI1OjQ3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBmZ2V0cygpIGV4dGVybiBkZWNsYXJhdGlvbgorCitUaGVzZSBzb3VyY2VzIGFscmVhZHkgaW5jbHVkZSA8c3RkaW8uaD4gd2hpY2ggc2hvdWxkIGJyaW5nIHRoZSBjb3JyZWN0CitkZWNsYXJhdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBob3N0c19hY2Nlc3MuYyB8IDEgLQorIG1pc2MuYyAgICAgICAgIHwgMiAtLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2hvc3RzX2FjY2Vzcy5jIGIvaG9zdHNfYWNjZXNzLmMKK2luZGV4IDMyOWIzNWUuLjAxMzNlNWUgMTAwNjQ0CistLS0gYS9ob3N0c19hY2Nlc3MuYworKysrIGIvaG9zdHNfYWNjZXNzLmMKK0BAIC00NCw3ICs0NCw2IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIykgaG9zdHNfYWNjZXNzLmMgMS4yMSA5Ny8wMi8xMiAwMjoxMzoyMiI7CisgI2luY2x1ZGUgPG5ldGRiLmg+CisgI2VuZGlmCisgCistZXh0ZXJuIGNoYXIgKmZnZXRzKCk7CisgZXh0ZXJuIGludCBlcnJubzsKKyAKKyAjaWZuZGVmCUlOQUREUl9OT05FCitkaWZmIC0tZ2l0IGEvbWlzYy5jIGIvbWlzYy5jCitpbmRleCA3NGNhMzE5Li45YTVlNzNhIDEwMDY0NAorLS0tIGEvbWlzYy5jCisrKysgYi9taXNjLmMKK0BAIC0xOCw4ICsxOCw2IEBAIHN0YXRpYyBjaGFyIHNjY3NpY1tdID0gIkAoIykgbWlzYy5jIDEuMiA5Ni8wMi8xMSAxNzowMToyOSI7CisgCisgI2luY2x1ZGUgInRjcGQuaCIKKyAKKy1leHRlcm4gY2hhciAqZmdldHMoKTsKKy0KKyAjaWZuZGVmCUlOQUREUl9OT05FCisgI2RlZmluZQlJTkFERFJfTk9ORQkoLTEpCQkvKiBYWFggc2hvdWxkIGJlIDB4ZmZmZmZmZmYgKi8KKyAjZW5kaWYKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKaW5kZXggYmQwYzg0Yy4uZTkwM2I5ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4X3dhcm5pbmdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeF93YXJuaW5nczIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZTZmYTI1ZjcxMjI2ZDA5MGYzNGRlM2Y2YjEyMmZiNWEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvZmlsZXMvMDAwMS1BbGxvdy1jb21waWxpbmctb3V0LW9mLXNvdXJjZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGkyaHRtbC9maWxlcy8wMDAxLUFsbG93LWNvbXBpbGluZy1vdXQtb2Ytc291cmNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2YwMjVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGkyaHRtbC9maWxlcy8wMDAxLUFsbG93LWNvbXBpbGluZy1vdXQtb2Ytc291cmNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbTogT2xhZiBNYW5kZWwgPG8ubWFuZGVsQG1lbmxvc3lzdGVtcy5jb20+Ci1EYXRlOiBGcmksIDIxIE9jdCAyMDE2IDEzOjA0OjQ0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGNvbXBpbGluZyBvdXQtb2Ytc291cmNlCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgb2YgW3N2bjovL3N2bi5zdi5nbnUub3JnL3RleGluZm8vdHJ1bmsgcjM2MDJdCi0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSBNYWtlZmlsZS5pbiB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDM0NDc0NjMuLmM5YjViNWMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yMDgsNyArMjA4LDcgQEAgaTE4bi9lbi50aGwgaTE4bi86ICQocG9fZG9jdW1lbnRfZGlyKS9wb19kb2N1bWVudC8kKFBBQ0tBR0UpX2RvY3VtZW50LnBvdAotIAkgIGRvbmU7IFwKLSAJICBtc2dleGVjIC1pICQ8ICIkKHNyY2RpcikvZ2V0dGV4dF90b19zZXBhcmF0ZWQucGwiIHwgIiQoc3JjZGlyKS9zZXBhcmF0ZWRfdG9faGFzaC5wbCIgZW4gPiBpMThuL2VuLnRobDsgXAotIAllbHNlIFwKLS0JICBjcCAtcCBpMThuX3JlZi8qLnRobCBpMThuOyBcCi0rCSAgY3AgLXAgIiQoc3JjZGlyKS9pMThuX3JlZi8iKi50aGwgaTE4bjsgXAotIAlmaQotIAotIGkxOG5fcmVmOgotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDQyNjRiMzcuLmExM2Y4NGQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xMTI2LDcgKzExMjYsNyBAQCBpMThuL2VuLnRobCBpMThuLzogJChwb19kb2N1bWVudF9kaXIpL3BvX2RvY3VtZW50LyQoUEFDS0FHRSlfZG9jdW1lbnQucG90Ci0gCSAgZG9uZTsgXAotIAkgIG1zZ2V4ZWMgLWkgJDwgIiQoc3JjZGlyKS9nZXR0ZXh0X3RvX3NlcGFyYXRlZC5wbCIgfCAiJChzcmNkaXIpL3NlcGFyYXRlZF90b19oYXNoLnBsIiBlbiA+IGkxOG4vZW4udGhsOyBcCi0gCWVsc2UgXAotLQkgIGNwIC1wIGkxOG5fcmVmLyoudGhsIGkxOG47IFwKLSsJICBjcCAtcCAiJChzcmNkaXIpL2kxOG5fcmVmLyIqLnRobCBpMThuOyBcCi0gCWZpCi0gCi0gaTE4bl9yZWY6Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGkyaHRtbC90ZXhpMmh0bWxfNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL3RleGkyaHRtbF81LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZDEyNWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL3RleGkyaHRtbF81LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgc2NyaXB0IHRoYXQgY29udmVydHMgVGV4aW5mbyB0byBIVE1MIgotSE9NRVBBR0UgICAgPSAiaHR0cDovL3d3dy5ub25nbnUub3JnL3RleGkyaHRtbC8iCi1TRUNUSU9OICAgICA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSAgICAgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotUFIgPSAicjIiCi0KLVNSQ19VUkkgICAgID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vdGV4aTJodG1sLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsbG93LWNvbXBpbGluZy1vdXQtb2Ytc291cmNlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYxNWFjODc2ZmNkYzhiZTg2NWIxNjUzNWY0ODBhYTU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4YTk4YjBlZTIwYzQ5NWE2YWI4OTQzOThhMDY1ZWY1ODAyNzJkYmQ1YTE1YjFiMTllOGJkMWJjODlkOWY5ZmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCi0JIyB1cGRhdGUgcG9fZG9jdW1lbnQuCi0JY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCi0JY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fbWVzc2FnZXMvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L3RleGkyaHRtbAotfQotCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vdGV4aW5mbyIKLQotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXktbmF0aXZlLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUuYmIKaW5kZXggMTI1NGJjOC4uZWMwNGJmZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUuYmIKQEAgLTksMTkgKzksMjEgQEAKIAogUyA9ICIke1dPUktESVJ9IgogCi1OQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCi0KIGluaGVyaXQgbmF0aXZlCiAKKyMKKyMgVG8gYXZvaWQgdGV4aW5mby1kdW1teS1uYXRpdmUgYW5kIHRleGluZm8tbmF0aXZlIGNvbmZsaWN0aW5nIHdlIGluc3RhbGwgdG8gYmFzZV9iaW5kaXIKKyMgd2hpY2ggaXMgbGF0ZXIgaW4gUEFUSCB0aGFuIGJpbmRpciB3aGVyZSB0ZXhpbmZvLW5hdGl2ZSBpbnN0YWxscworIwogZG9faW5zdGFsbF9uYW1lKCkgewotICAgIEZJTEVOQU1FPSIke0R9JHtiaW5kaXJ9LyQxIgorICAgIEZJTEVOQU1FPSIke0R9JHtiYXNlX2JpbmRpcn0vJDEiCiAgICAgIyBVc2luZyBsbiBjYXVzZXMgcHJvYmxlbXMgd2l0aCBybV93b3JrCiAgICAgY3AgLVQgIiR7U30vdGVtcGxhdGUucHkiICIkRklMRU5BTUUiCiAgICAgY2htb2QgK3ggJEZJTEVOQU1FCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0gICAgbWtkaXIgLXAgIiR7RH0ke2JpbmRpcn0iCisgICAgbWtkaXIgLXAgIiR7RH0ke2Jhc2VfYmluZGlyfSIKICAgICBmb3IgaSBpbiBtYWtlaW5mbyBwb2QydGV4aSB0ZXhpMmR2aSBwZGZ0ZXhpMmR2aSB0ZXhpbmRleCB0ZXhpMnBkZiBcCiAgICAgICAgICAgICAgdHhpeG1sMnRleGkgdGV4aTJhbnkgaW5zdGFsbC1pbmZvIGdpbnN0YWxsLWluZm8gXAogICAgICAgICAgICAgIHVwZGF0ZS1pbmZvLWRpcjsgZG8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MzM4YWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAotCi1sb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Ci13aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCi1wcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KLWNvcmV1dGlscwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiB0ZXhpbmZvLTUuMi9nbnVsaWIvbGliL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGV4aW5mby01LjIub3JpZy9nbnVsaWIvbGliL01ha2VmaWxlLmFtCi0rKysgdGV4aW5mby01LjIvZ251bGliL2xpYi9NYWtlZmlsZS5hbQotQEAgLTM3OCw3ICszNzgsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKLSAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCi0gCSAgICBkYXJ3aW5bNTZdKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCi0tCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCi0rCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKLSAJICAgICopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoCmluZGV4IGY0MTg0MzkuLjBkNmJiYWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU4OWIxYzU3ZDc2ZjVjZjVhY2JiMGQwMTg3Mzc0ZjdhNzdiY2UxZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYzYTgwM2VhZDM2NTYzNTMzMjlhODAxODQ2YTlhM2JlYjcyMTBjNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyOSBOb3YgMjAxNiAxMzo0MzoyNCAtMDYwMAogU3ViamVjdDogW1BBVENIXSBkb250LWRlcGVuZC1vbi1oZWxwMm1hbgpAQCAtNywyOSArNywzMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGludGVsLmNvbT4KKwogLS0tCiAgZG9jL01ha2VmaWxlLmFtIHwgIDIgKy0KICBtYW4vTWFrZWZpbGUuYW0gfCAxMiArKysrKystLS0tLS0KICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5hbSBiL2RvYy9NYWtlZmlsZS5hbQotaW5kZXggMzlkYjgzNC4uMWJiMmE0ZgoraW5kZXggNzMyODMzZS4uMDQxY2I5YiAxMDA2NDQKIC0tLSBhL2RvYy9NYWtlZmlsZS5hbQogKysrIGIvZG9jL01ha2VmaWxlLmFtCi1AQCAtMzgsNyArMzgsNyBAQCByZWZjYXJkX2ZpbGVzID0gcmVmY2FyZC9NYWtlZmlsZSByZWZjYXJkL3R4aWNtZGNoZWNrIFwKK0BAIC0zNyw3ICszNyw3IEBAIHJlZmNhcmRfZmlsZXMgPSByZWZjYXJkL01ha2VmaWxlIHJlZmNhcmQvdHhpY21kY2hlY2sgXAogICMgSW5jbHVkZSBvdXIgdGV4aW5mby50ZXgsIG5vdCBBdXRvbWFrZSdzLgogIEVYVFJBX0RJU1QgPSBlcHNmLnRleCB0ZXhpbmZvLnRleCBcCiAgICAgICAgICAgICAgIGZkbC50ZXhpIFwKIC0JICAgICAkKG1hbl9NQU5TKSAkKFRYSV9YTEFURSkgXAogKwkgICAgICQoVFhJX1hMQVRFKSBcCi0gICAgICAgICAgICAgICQocmVmY2FyZF9maWxlcykgdGV4aW5mby10ZXgtdGVzdC50ZXhpIFwKKyAgICAgICAgICAgICAgJChyZWZjYXJkX2ZpbGVzKSBcCisgCSAgICAgdGV4aW5mby10ZXgtdGVzdC50ZXhpIHRleGluZm8tdGV4LXRlc3QuV0lET1dzIFwKICAgICAgICAgICAgICAgdGV4aW5mby1qYS50ZXggc2hvcnQtc2FtcGxlLWphLnRleGkKLSAKIGRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUuYW0gYi9tYW4vTWFrZWZpbGUuYW0KLWluZGV4IDZiZmNiM2QuLmE4MjBjOTYKK2luZGV4IGQwY2Q3MmMuLmExOWU1MmEgMTAwNjQ0CiAtLS0gYS9tYW4vTWFrZWZpbGUuYW0KICsrKyBiL21hbi9NYWtlZmlsZS5hbQotQEAgLTEzLDI0ICsxMywyNCBAQAorQEAgLTExLDI3ICsxMSwyNyBAQAogICMgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCiAgCiAgIyBUaGVzZSBhcmUgZ2VuZXJhdGVkIHVzaW5nIGhlbHAybWFuLgpAQCAtNDcsMTAgKzQ4LDEzIEBACiAtbWFuX01BTlMgKz0gaW5mby41IHRleGluZm8uNQogKyNtYW5fTUFOUyArPSBpbmZvLjUgdGV4aW5mby41CiAgCi0gIyBUaGlzIGlzIGdlbmVyYXRlZCBieSBwb2QybWFuLCBidXQgbGV0J3MganVzdCBydW4gaXQgYnkgaGFuZC4KIC1tYW5fTUFOUyArPSBwb2QydGV4aS4xCiArI21hbl9NQU5TICs9IHBvZDJ0ZXhpLjEKICAKKyBwb2QydGV4aS4xOiAkKHRvcF9zcmNkaXIpL1BvZC1TaW1wbGUtVGV4aW5mby9wb2QydGV4aS5wbAorIAkkKFBPRDJNQU4pICQodG9wX3NyY2RpcikvUG9kLVNpbXBsZS1UZXhpbmZvL3BvZDJ0ZXhpLnBsID4iJEAiCisgCisgCiAgIyBUaGVzZSBhcmUganVzdCAuc28ncyB0byB0aGUgY29tbW9uIHByb2dyYW0uCiAtbWFuX01BTlMgKz0gdGV4aTJhbnkuMSB0ZXhpMnBkZi4xIHBkZnRleGkyZHZpLjEKICsjbWFuX01BTlMgKz0gdGV4aTJhbnkuMSB0ZXhpMnBkZi4xIHBkZnRleGkyZHZpLjEKQEAgLTYwLDYgKzY0LDMgQEAKICAKICAjIE1haW50YWluZXJzIHNob3VsZCBiZSBhYmxlIHRvIHJlZ2VuZXJhdGUuCiAgTUFJTlRBSU5FUkNMRUFORklMRVMgPSAkKG1hbl9NQU5TKQotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vbGluay16aXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vbGluay16aXAucGF0Y2gKaW5kZXggMGI2ZTlmZC4uMTVjMDMwYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2xpbmstemlwLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaApAQCAtMSwxNiArMSwyMyBAQAotaW5zdGFsbC1pbmZvIHVzZXMgc3ltYm9scyBmcm9tIHpsaWIgc28gbXVzdCBsaW5rIGFnYWluc3QgaXQuCitGcm9tIGMxMDAyMTM4MDMzZmNjY2IyZDFhYmZjNDFmNWMyZTQ2YzgzNmY3YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgTG9jayA8am9zaEBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBNb24sIDI5IEp1bCAyMDEzIDE1OjAyOjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluc3RhbGwtaW5mbyB1c2VzIHN5bWJvbHMgZnJvbSB6bGliIHNvIG11c3QgbGluayBhZ2FpbnN0IGl0LgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2hAbGludXguaW50ZWwuY29tPgogCi1JbmRleDogdGV4aW5mby01LjEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGV4aW5mby01LjEub3JpZy9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0KLSsrKyB0ZXhpbmZvLTUuMS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0KLUBAIC0zNCw0ICszNCw0IEBAIEFNX0NQUEZMQUdTID0gCQkJCQlcCistLS0KKyBpbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0gYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0KK2luZGV4IDliY2ZmNzEuLjY4MjQ3ZjkgMTAwNjQ0CistLS0gYS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0KKysrKyBiL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQorQEAgLTMzLDQgKzMzLDQgQEAgQU1fQ1BQRkxBR1MgPSAJCQkJCVwKICAgIC1JJCh0b3Bfc3JjZGlyKS9nbnVsaWIvbGliCQkJXAogICAgLUkkKHRvcF9idWlsZGRpcikvZ251bGliL2xpYgkJCVwKICAgIC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKLS1MREFERCA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hICQoTElCSU5UTCkKLStMREFERCA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hICQoTElCSU5UTCkgLWx6CistTERBREQgPSAkKHRvcF9idWlsZGRpcikvZ251bGliL2xpYi9saWJnbnUuYSAkKExJQklOVEwpICQoTElCVEhSRUFEKQorK0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKSAkKExJQlRIUkVBRCkgLWx6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2gKaW5kZXggZjI1MzUyYy4uZjcyMDk3ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3RleGluZm8tNC4xMi16bGliLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby90ZXhpbmZvLTQuMTItemxpYi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZmU0ZjAwNDU5NjAxZWZlMGNmYTc1ZDkyNzQ5YTMyMjM3ODAwYTUzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2QzYjY2Y2YzOTg4NTNjNjY2ZTcyNGMzZGJjYzM3ZDUzYTIyNDBkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDI5IE5vdiAyMDE2IDEyOjI3OjE3IC0wNjAwCiBTdWJqZWN0OiBbUEFUQ0hdIHRleGluZm8tNC4xMi16bGliCkBAIC03LDE2ICs3LDE3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgorCiAtLS0KLSBpbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4gICAgfCAxMiArKy0tLS0tCi0gaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jIHwgNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKKyBpbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4gICAgfCAgMiArLQorIGluc3RhbGwtaW5mby9pbnN0YWxsLWluZm8uYyB8IDc5ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluIGIvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluCi1pbmRleCA4MzdkMDIwLi5iYTk2NTc5IDEwMDY0NAoraW5kZXggYzkyNDUwOS4uNzQ2ZGYwNSAxMDA2NDQKIC0tLSBhL2luc3RhbGwtaW5mby9NYWtlZmlsZS5pbgogKysrIGIvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluCi1AQCAtMjE2LDcgKzIwOCw3IEBAIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChiaW5kaXIpIiAiJChERVNURElSKSQoYmluZGlyKSIKK0BAIC0yMTgsNyArMjE4LDcgQEAgYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGJpbmRpcikiICIkKERFU1RESVIpJChiaW5kaXIpIgogIFBST0dSQU1TID0gJChiaW5fUFJPR1JBTVMpCiAgYW1fZ2luc3RhbGxfaW5mb19PQkpFQ1RTID0gaW5zdGFsbC1pbmZvLiQoT0JKRVhUKQogIGdpbnN0YWxsX2luZm9fT0JKRUNUUyA9ICQoYW1fZ2luc3RhbGxfaW5mb19PQkpFQ1RTKQpAQCAtMjQsMTIgKzI1LDEyIEBACiArZ2luc3RhbGxfaW5mb19MREFERCA9ICQoTERBREQpIC1segogIGFtX19ERVBFTkRFTkNJRVNfMSA9CiAgZ2luc3RhbGxfaW5mb19ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ251bGliL2xpYi9saWJnbnUuYSBcCi0gCSQoYW1fX0RFUEVOREVOQ0lFU18xKQorIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCiBkaWZmIC0tZ2l0IGEvaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jIGIvaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jCi1pbmRleCBlNTgxODljLi44NjE3Nzg3IDEwMDY0NAoraW5kZXggMjFmNGZlMy4uYTdhYmE4MiAxMDA2NDQKIC0tLSBhL2luc3RhbGwtaW5mby9pbnN0YWxsLWluZm8uYwogKysrIGIvaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jCi1AQCAtMjIsNiArMjIsNyBAQAorQEAgLTE5LDYgKzE5LDcgQEAKICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAgI2luY2x1ZGUgPHJlZ2V4Lmg+CiAgI2luY2x1ZGUgPGFyZ3ouaD4KQEAgLTM3LDcgKzM4LDcgQEAKICAKICAjZGVmaW5lIFRBQl9XSURUSCA4CiAgCi1AQCAtNjg0LDE1ICs2ODUsMTUgQEAgVGhlIGZpcnN0IHRpbWUgeW91IGludm9rZSBJbmZvIHlvdSBzdGFydCBvZmYgbG9va2luZyBhdCB0aGlzIG5vZGUuXG5cCitAQCAtNjgxLDE1ICs2ODIsMTUgQEAgVGhlIGZpcnN0IHRpbWUgeW91IGludm9rZSBJbmZvIHlvdSBzdGFydCBvZmYgbG9va2luZyBhdCB0aGlzIG5vZGUuXG5cCiAgICAgCiAgICAgUmV0dXJuIGVpdGhlciBzdGRpbiByZWFkaW5nIHRoZSBmaWxlLCBvciBhIG5vbi1zdGRpbiBwaXBlIHJlYWRpbmcKICAgICB0aGUgb3V0cHV0IG9mIHRoZSBjb21wcmVzc2lvbiBwcm9ncmFtLiAgKi8KQEAgLTU2LDcgKzU3LDcgQEAKICAKICAgIC8qIFdlIGxldCB0aGVtIHBhc3MgTlVMTCBpZiB0aGV5IGRvbid0IHdhbnQgdGhpcyBpbmZvLCBidXQgaXQncyBlYXNpZXIKICAgICAgIHRvIGFsd2F5cyBkZXRlcm1pbmUgaXQuICAqLwotQEAgLTcwMCw0OCArNzAxLDQ4IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKK0BAIC02OTcsNDggKzY5OCw0OCBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCiAgICAgIG9wZW5lZF9maWxlbmFtZSA9ICZsb2NhbF9vcGVuZWRfZmlsZW5hbWU7CiAgCiAgICAqb3BlbmVkX2ZpbGVuYW1lID0gZmlsZW5hbWU7CkBAIC0xMTMsNyArMTE0LDcgQEAKICAgICAgfQogICNlbmRpZiAvKiBfX01TRE9TX18gKi8KICAgIGlmICghZikKLUBAIC03NTcsNyArNzU4LDcgQEAgb3Blbl9wb3NzaWJseV9jb21wcmVzc2VkX2ZpbGUgKGNoYXIgKmZpbGVuYW1lLAorQEAgLTc1NCw3ICs3NTUsNyBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCiAgICAgICAgICAgICgqY3JlYXRlX2NhbGxiYWNrKSAoZmlsZW5hbWUpOwogIAogICAgICAgICAgICAvKiBBbmQgdHJ5IG9wZW5pbmcgaXQgYWdhaW4uICAqLwpAQCAtMTIyLDcgKzEyMyw3IEBACiAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIH0KLUBAIC03NjcsMjYgKzc2OCwyNiBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCitAQCAtNzY0LDI2ICs3NjUsMjYgQEAgb3Blbl9wb3NzaWJseV9jb21wcmVzc2VkX2ZpbGUgKGNoYXIgKmZpbGVuYW1lLAogIAogICAgLyogUmVhZCBmaXJzdCBmZXcgYnl0ZXMgb2YgZmlsZSByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHRoZSBmaWxlbmFtZS4KICAgICAgIElmIHRoZSBmaWxlIGlzIHNob3J0ZXIgdGhhbiB0aGlzIGl0IGNhbid0IGJlIHVzYWJsZSBhbnl3YXkuICAqLwpAQCAtMTU4LDcgKzE1OSw3IEBACiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgZ290byBkZXRlcm1pbmVfZmlsZV90eXBlOyAvKiBzdWNjZXNzICovCiAgICAgICAgICAgICAgfQotQEAgLTg1NywzNSArODU4LDQwIEBAIGRldGVybWluZV9maWxlX3R5cGU6CitAQCAtODU0LDM1ICs4NTUsNDAgQEAgZGV0ZXJtaW5lX2ZpbGVfdHlwZToKICAgICAgKmNvbXByZXNzaW9uX3Byb2dyYW0gPSBOVUxMOwogIAogICAgLyogU2VlayBiYWNrIG92ZXIgdGhlIG1hZ2ljIGJ5dGVzLiAgKi8KQEAgLTIwNiw3ICsyMDcsNyBAQAogICAgICB9CiAgCiAgICByZXR1cm4gZjsKLUBAIC05MDQsNyArOTEwLDggQEAgcmVhZGZpbGUgKGNoYXIgKmZpbGVuYW1lLCBpbnQgKnNpemVwLAorQEAgLTkwMSw3ICs5MDcsOCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCiAgICAgIHZvaWQgKCpjcmVhdGVfY2FsbGJhY2spIChjaGFyICopLCBjaGFyICoqb3BlbmVkX2ZpbGVuYW1lLAogICAgICBjaGFyICoqY29tcHJlc3Npb25fcHJvZ3JhbSkKICB7CkBAIC0yMTYsNyArMjE3LDcgQEAKICAgIGludCBmaWxsZWQgPSAwOwogICAgaW50IGRhdGFfc2l6ZSA9IDgxOTI7CiAgICBjaGFyICpkYXRhID0geG1hbGxvYyAoZGF0YV9zaXplKTsKLUBAIC05MTIsMTQgKzkxOSwyMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCitAQCAtOTA5LDE0ICs5MTYsMjAgQEAgcmVhZGZpbGUgKGNoYXIgKmZpbGVuYW1lLCBpbnQgKnNpemVwLAogICAgLyogSWYgdGhleSBwYXNzZWQgdGhlIHNwYWNlIGZvciB0aGUgZmlsZSBuYW1lIHRvIHJldHVybiwgdXNlIGl0LiAgKi8KICAgIGYgPSBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoZmlsZW5hbWUsIGNyZWF0ZV9jYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkX2ZpbGVuYW1lLApAQCAtMjM5LDcgKzI0MCw3IEBACiAgICAgICAgaWYgKG5yZWFkIDwgMCkKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChucmVhZCA9PSAwKQotQEAgLTkzOCw4ICs5NTEsMTAgQEAgcmVhZGZpbGUgKGNoYXIgKmZpbGVuYW1lLCBpbnQgKnNpemVwLAorQEAgLTkzNSw4ICs5NDgsMTAgQEAgcmVhZGZpbGUgKGNoYXIgKmZpbGVuYW1lLCBpbnQgKnNpemVwLAogICAgLyogV2UgbmVlZCB0byBjbG9zZSB0aGUgc3RyZWFtLCBzaW5jZSBvbiBzb21lIHN5c3RlbXMgdGhlIHBpcGUgY3JlYXRlZAogICAgICAgYnkgcG9wZW4gaXMgc2ltdWxhdGVkIGJ5IGEgdGVtcG9yYXJ5IGZpbGUgd2hpY2ggb25seSBnZXRzIHJlbW92ZWQKICAgICAgIGluc2lkZSBwY2xvc2UuICAqLwpAQCAtMjUxLDYgKzI1MiwzIEBACiAgCiAgICAqc2l6ZXAgPSBmaWxsZWQ7CiAgICByZXR1cm4gZGF0YTsKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZWFlNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLVNVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBzeXN0ZW0gZm9yIG9uLWxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IgotREVTQ1JJUFRJT04gPSAiVGV4aW5mbyBpcyBhIGRvY3VtZW50YXRpb24gc3lzdGVtIHRoYXQgY2FuIHByb2R1Y2UgYm90aCBcCi1vbmxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IGZyb20gYSBzaW5nbGUgc291cmNlIGZpbGUuIFRoZSBcCi1HTlUgUHJvamVjdCB1c2VzIHRoZSBUZXhpbmZvIGZpbGUgZm9ybWF0IGZvciBtb3N0IG9mIGl0cyBkb2N1bWVudGF0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgotCi1kZWYgY29tcHJlc3NfcGtnKGQpOgotICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2NvbXByZXNzX2RvYycsIGQpOgotICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKLSAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJnemlwIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKLSAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgotICAgICAgICAgICAgIHJldHVybiAieHoiCi0gICAgcmV0dXJuICIiCi0KLVJERVBFTkRTX2luZm8gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCi0KLURFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCi0KLVRBUkdFVF9QQVRDSCA9ICJmaWxlOi8vdXNlX2hvc3RfbWFrZWRvYy5wYXRjaCIKLVRBUkdFVF9QQVRDSF9jbGFzcy1uYXRpdmUgPSAiIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGV4aW5mby8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1uYXRpdmUtdG9vbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGluay16aXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICR7VEFSR0VUX1BBVENIfSBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTRlOGY3MTQ5ODc2NzkzMDMwZTU1MThkZDhkNmU5NTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM0MjcyZTQwNDJjNDYxODZkZGNkNjZiZDVkOTgwYzBjYTE0ZmY3MzQ0NDQ2ODZjY2Y4MTMxZjZlYzhiMTQyNyIKLQotdGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgbXVsdGlsaWJfc2NyaXB0Ci0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L3RleGkyYW55IgotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dudWxpYi9tNCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKLQkjIHVwZGF0ZSBwb19kb2N1bWVudC4KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWlmIFsgLWQgdG9vbHMgXTt0aGVuCi0JCW9lX3J1bm1ha2UgLUMgdG9vbHMvZ251bGliL2xpYgotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99Ci0JaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99Ci0Jc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS90ZXhpMmFueSAke0R9JHtiaW5kaXJ9L3BvZDJ0ZXhpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQotfQotCi1QQUNLQUdFUyArPSAiaW5mbyBpbmZvLWRvYyIKLQotRklMRVNfaW5mbyA9ICIke2JpbmRpcn0vaW5mbyAke2JpbmRpcn0vaW5mb2tleSAke2JpbmRpcn0vaW5zdGFsbC1pbmZvIgotRklMRVNfaW5mby1kb2MgPSAiJHtpbmZvZGlyfS9pbmZvLmluZm8qICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8qIFwKLSAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm8uMSogJHttYW5kaXJ9L21hbjUvaW5mby41KiBcCi0gICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZva2V5LjEqICR7bWFuZGlyfS9tYW4xL2luc3RhbGwtaW5mby4xKiIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L21ha2VpbmZvICR7YmluZGlyfS90ZXhpKiAke2JpbmRpcn0vcGRmdGV4aTJkdmkgJHtiaW5kaXJ9L3BvZDJ0ZXhpICR7ZGF0YWRpcn0vdGV4aW5mbyIKLVJERVBFTkRTXyR7UE59ID0gInBlcmwiCi1GSUxFU18ke1BOfS1kb2MgPSAiJHtpbmZvZGlyfS90ZXhpbmZvKiBcCi0gICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCi0gICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCi0KLSMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAotIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KLSMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCi0jIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQyMWI3OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjcuYmIKQEAgLTAsMCArMSw5MSBAQAorU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIHN5c3RlbSBmb3Igb24tbGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQiCitERVNDUklQVElPTiA9ICJUZXhpbmZvIGlzIGEgZG9jdW1lbnRhdGlvbiBzeXN0ZW0gdGhhdCBjYW4gcHJvZHVjZSBib3RoIFwKK29ubGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQgZnJvbSBhIHNpbmdsZSBzb3VyY2UgZmlsZS4gVGhlIFwKK0dOVSBQcm9qZWN0IHVzZXMgdGhlIFRleGluZm8gZmlsZSBmb3JtYXQgZm9yIG1vc3Qgb2YgaXRzIGRvY3VtZW50YXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZWJiZDNlMzQyMzdhZjI2ZGE1ZGMwOGE0ZTQ0MDQ2NCIKKworUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY29tcHJlc3NfZG9jJywgZCk6CisgICAgICAgICBjb21wcmVzcyA9IGQuZ2V0VmFyKCJET0NfQ09NUFJFU1MiKQorICAgICAgICAgaWYgY29tcHJlc3MgPT0gImd6IjoKKyAgICAgICAgICAgICByZXR1cm4gImd6aXAiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJiejIiOgorICAgICAgICAgICAgIHJldHVybiAiYnppcDIiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJ4eiI6CisgICAgICAgICAgICAgcmV0dXJuICJ4eiIKKyAgICByZXR1cm4gIiIKKworUkRFUEVORFNfaW5mbyArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKKworREVQRU5EUyA9ICJ6bGliIG5jdXJzZXMgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBuY3Vyc2VzLW5hdGl2ZSIKKworVEFSR0VUX1BBVENIID0gImZpbGU6Ly91c2VfaG9zdF9tYWtlZG9jLnBhdGNoIgorVEFSR0VUX1BBVENIX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90ZXhpbmZvLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLW5hdGl2ZS10b29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saW5rLXppcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCisgICAgICAgICAgICR7VEFSR0VUX1BBVENIfSBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImYwYzE3ODJmNjhlZjczNzM4ZDc0YmQxZTllMzA3OTNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE1MmQwNTA3NmI5MDAzMmNiMjUyMzY3M2M1MGU1MzE4NTkzODc0NjQ4MmNmM2NhMDIxM2U5YjRiNTBhYzJkM2UiCisKK3RleF90ZXhpbmZvID0gInRleG1mL3RleC90ZXhpbmZvIgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS90ZXhpMmFueSIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9nbnVsaWIvbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCisJIyB1cGRhdGUgcG9fZG9jdW1lbnQuCisJY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlpZiBbIC1kIHRvb2xzIF07dGhlbgorCQlvZV9ydW5tYWtlIC1DIHRvb2xzL2dudWxpYi9saWIKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlta2RpciAtcCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCWluc3RhbGwgLXAgLW02NDQgJHtTfS9kb2MvdGV4aW5mby50ZXggJHtTfS9kb2MvdHhpLT8/LnRleCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJhbnkgJHtEfSR7YmluZGlyfS9wb2QydGV4aQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtbSA3NTUgaW5mby9tYWtlZG9jICR7RH0ke2JpbmRpcn0KK30KKworUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCisKK0ZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKK0ZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvKiAke2luZm9kaXJ9L2RpciAke2luZm9kaXJ9L2luZm8tKi5pbmZvKiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZvLjEqICR7bWFuZGlyfS9tYW41L2luZm8uNSogXAorICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mb2tleS4xKiAke21hbmRpcn0vbWFuMS9pbnN0YWxsLWluZm8uMSoiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tYWtlaW5mbyAke2JpbmRpcn0vdGV4aSogJHtiaW5kaXJ9L3BkZnRleGkyZHZpICR7YmluZGlyfS9wb2QydGV4aSAke2RhdGFkaXJ9L3RleGluZm8iCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIgorRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAorICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgorCisjIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKKyMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCisjIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQorIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgorUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3R6ZGF0YS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3R6ZGF0YS5iYgppbmRleCAxZTJkOWJkLi4xZTJiNDQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lem9uZS90emRhdGEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiCkBAIC02MCwxMiArNjAsOCBAQAogCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCiAJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCiAJZmkKLQkKLQlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KLQkJZXhpdCAwCi0JZmkKLQkKLQlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKworCWlmIFsgISAteiAiJHt0en0iIC1hICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KIAkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKIAkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCiAJCXR6PSJVbml2ZXJzYWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMy5iYgppbmRleCA3Nzg4YjVmLi5kMzcxYzVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIKQEAgLTE3LDcgKzE3LDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTUzNjdhOTA5MzQwOThkNmIwNWFmM2I3NDY0MDUwMTQiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9wb3J0bGFuZC5mcmVlZGVza3RvcC5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlaW5zdGF0ZS14ZGctdGVybWluYWwucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC10aGUtaW4tc2NyaXB0LW1hbnVhbC5wYXRjaCBcCiAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveHoveHpfNS4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYgppbmRleCA3OTE3NDZlLi4xYzQ0NTBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYgpAQCAtMSw1ICsxLDUgQEAKIFNVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBMWk1BIGNvbXByZXNzZWQgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vdHVrYWFuaS5vcmcveHovIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly90dWthYW5pLm9yZy94ei8iCiBTRUNUSU9OID0gImJhc2UiCiAKICMgVGhlIHNvdXJjZSBpbmNsdWRlcyBiaXRzIG9mIFBELCBHUEx2MiwgR1BMdjMsIExHUEx2Mi4xKywgYnV0IHRoZSBvbmx5IGZpbGUKQEAgLTIyLDExICsyMiwxMyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2dldG9wdC5jO2VuZGxpbmU9MjM7bWQ1PTIwNjliMGVlNzEwNTcyYzAzYmIzMTE0ZTQ1MzJjZDg0IFwKICAgICAgICAgICAgICAgICAgICAgIgogCi1TUkNfVVJJID0gImh0dHA6Ly90dWthYW5pLm9yZy94ei94ei0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHBzOi8vdHVrYWFuaS5vcmcveHoveHotJHtQVn0udGFyLmd6IgogU1JDX1VSSVttZDVzdW1dID0gIjVhY2UzMjY0YmRkMDBjNjVlZWVjMjg5MTM0NmY2NWU2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1MTJmM2I3MjZkM2IzN2I2ZGM0Yzg1NzBlMTM3YjkzMTFlNzU1MmU4Y2NiYWI0ZDM5ZDQ3Y2U1ZjQxNzcxNDUiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ei0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKIAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImdsX2N2X3Bvc2l4X3NoZWxsPS9iaW4vc2giCisKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKIAogUEFDS0FHRVMgPSsgImxpYmx6bWEiCkBAIC0zOSw1ICs0MSwzIEBACiAgICAgICAgICAgICAgICAgICAgICBsem1hIGx6Y2F0IHVubHptYSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1leHBvcnQgQ09ORklHX1NIRUxMPSIvYmluL3NoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcC0zLjAvemlwbm90ZS1jcmFzaGVzLXdpdGgtc2VnZmF1bHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTZjYWZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcC0zLjAvemlwbm90ZS1jcmFzaGVzLXdpdGgtc2VnZmF1bHQucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorQ2xvc2UgdGhlIGNvcnJlY3QgZmlsZSBkZXNjcmlwdG9yCisKK2h0dHBzOi8vYnVncy5hcmNobGludXgub3JnL3Rhc2svNDc3MTMKKworU2lnbmVkLW9mZi1ieTogSmF0ZSBTdWpqYXZhbmljaCA8amF0ZWRldkBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm8gdXBzdHJlYW1dCisKK2RpZmYgLS1naXQgYS96aXBub3RlLmMgYi96aXBub3RlLmMKK2luZGV4IDVlMDJjYjYuLjk5NmYwMTIgMTAwNjQ0CistLS0gYS96aXBub3RlLmMKKysrKyBiL3ppcG5vdGUuYworQEAgLTY2MSw3ICs2NjEsNyBAQCBjaGFyICoqYXJndjsgICAgICAgICAgICAvKiBjb21tYW5kIGxpbmUgdG9rZW5zICovCisgICAgIGlmICgociA9IHppcGNvcHkoeikpICE9IFpFX09LKQorICAgICAgIHppcGVycihyLCAid2FzIGNvcHlpbmcgYW4gZW50cnkiKTsKKyAgIH0KKy0gIGZjbG9zZSh4KTsKKysgIGZjbG9zZShpbl9maWxlKTsKKyAKKyAgIC8qIFdyaXRlIGNlbnRyYWwgZGlyZWN0b3J5IGFuZCBlbmQgb2YgY2VudHJhbCBkaXJlY3Rvcnkgd2l0aCBuZXcgY29tbWVudHMgKi8KKyAgIGlmICgoYyA9IHpmdGVsbG8oeSkpID09ICh6b2ZmX3QpLTEpICAgIC8qIGdldCBzdGFydCBvZiBjZW50cmFsICovCisgICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXBfMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKaW5kZXggYTJjZDc3MS4uYzAwYTkzMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKQEAgLTEyLDYgKzEyLDcgQEAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2luZm96aXAvWmlwJTIwMy54JTIwJTI4bGF0ZXN0JTI5LzMuMC96aXAzMC50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8xMC1yZW1vdmUtYnVpbGQtZGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaCBcCiAgICAgICAgICAgICIKIFVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjM0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjM0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYmQ1NWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4zNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZXBpcGhhbnkiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gImxpYnNvdXAtMi40IHdlYmtpdGd0ayBndGsrMyBpc28tY29kZXMgYXZhaGkgbGlibm90aWZ5IGdjciBcCi0JICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBsaWJ4bWwyLW5hdGl2ZSBcCi0JICAgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGpzb24tZ2xpYiBsaWJkYXp6bGUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgb3BlbmdsIgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1oZWxwLW1lc29uLmJ1aWxkLWRpc2FibGUtdGhlLXVzZS1vZi15ZWxwLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTBiNTBlMThkOTliMTlmNDRjYzljZDQxOWM2YTRiYTgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhMDdiYzk5N2FkMmNiZjE0ZDU4NTU3YmIwYjYzZTkyZDhjMzM2ODM2ODBjNWU1MGVhNmY5YjUzYjM2YmVjMWQ5IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9nbm9tZS1zaGVsbC9zZWFyY2gtcHJvdmlkZXJzICR7ZGF0YWRpcn0vbWV0YWluZm8iCi1SREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjM0LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjM0LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRiNGMyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuNC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9lcGlwaGFueSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK0RFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKKwkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGxpYnhtbDItbmF0aXZlIFwKKwkgICBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUganNvbi1nbGliIGxpYmRhenpsZSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dCBtaW1lLXhkZworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhNTU5ZjE2NGJiN2Q2Y2JlY2ViMzQ4NjQ4MDc2ODMwYiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjYwZTE5MGZjMDdlYzdlMzM0NzJlNjBjN2U2MzNlMDQwMDRmN2UyNzdhMGZmYzVlOWNkNDEzNzA2ODgxZTU5OGQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMgJHtkYXRhZGlyfS9tZXRhaW5mbyIKK1JERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4zNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjM0LjAuYmIKaW5kZXggZTNlODk5OS4uOTg1M2IzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjM0LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjM0LjAuYmIKQEAgLTExLDcgKzExLDcgQEAKIERFUEVORFMgPSAiZ3RrKzMgcDExLWtpdCBnbGliLTIuMCBsaWJnY3J5cHQgXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnbGlieHNsdC1uYXRpdmUnLCAnJywgZCl9IgogCi1pbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0Citpbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IG1pbWUgbWltZS14ZGcKICMgZGVwZW5kcyBvbiBndGsrMywgYnV0IGFsc28geDExIHRocm91Z2ggZ3RrKy14MTEKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi9taXNzaW5nLXRlc3QtZGF0YS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi9taXNzaW5nLXRlc3QtZGF0YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yzc1OGZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gZDhkMjMxYzAxZWYyZTU5ODU2ZGE4YTVjMjZhY2U5NTVlNWYyOTM3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDI1IE5vdiAyMDE5IDE3OjA1OjQ2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBpbnN0YWxsIGNpcmN1bGFyLXRhYmxlLmdpZgorCitUaGlzIHRlc3QgZGF0YSB3YXMgYWRkZWQgZm9yIHRoZSBwaXhidWYtZ2lmLWNpcmN1bGFyLXRhYmxlIHRlc3QgKGFkZGVkIE9jdG9iZXIKKzIwMTggaW4gMGI5ZDAwNCkgYnV0IGJlY2F1c2UgdGhlIGZpbGUgd2FzIG5ldmVyIGFjdHVhbGx5IGluc3RhbGxlZCB0aGUgaW5zdGFsbGVkCit0ZXN0IHN1aXRlIG5ldmVyIHBhc3Nlcy4KKy0tLQorIHRlc3RzL21lc29uLmJ1aWxkIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCitpbmRleCA1MTE2ZmMyYjkuLjgwZWQzZThiMiAxMDA2NDQKKy0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKysgYi90ZXN0cy9tZXNvbi5idWlsZAorQEAgLTk3LDYgKzk3LDcgQEAgdGVzdF9kYXRhID0gWworICAgJ2J1Zzc3NTY5My5waXhkYXRhJywKKyAgICdidWc3NzUyMjkucGl4ZGF0YScsCisgICAnYWVyby5naWYnLAorKyAgJ2NpcmN1bGFyLXRhYmxlLmdpZicKKyBdCisgCisgaW5zdGFsbGVkX3Rlc3RfYmluZGlyID0gam9pbl9wYXRocyhnZGtfcGl4YnVmX2xpYmV4ZWNkaXIsICdpbnN0YWxsZWQtdGVzdHMnLCBtZXNvbi5wcm9qZWN0X25hbWUoKSkKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM4LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTk1MTA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM4LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCi1ERVNDUklQVElPTiA9ICJUaGUgR0RLIFBpeGJ1ZiBsaWJyYXJ5IHByb3ZpZGVzOiBJbWFnZSBsb2FkaW5nIGFuZCBzYXZpbmcgXAotZmFjaWxpdGllcywgZmFzdCBzY2FsaW5nIGFuZCBjb21wb3NpdGluZyBvZiBwaXhidWZzIGFuZCBTaW1wbGUgYW5pbWF0aW9uIFwKLWxvYWRpbmcgKGllLiBhbmltYXRlZCBHSUZzKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvR2RrUGl4YnVmIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2RrLXBpeGJ1Zi9pc3N1ZXMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZmF0YWwtbG9hZGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYWlsdXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWEtY291cGxlLW9mLWRlY2lzaW9ucy1hcm91bmQtY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1Eby1ub3QtcnVuLXRlc3RzLXdoZW4tYnVpbGRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1CdWlsZC10aHVtYm5haWxlci1hbmQtdGVzdHMtYWxzby1pbi1jcm9zcy1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMy10YXJnZXQtb25seS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXRhcmdldC1vbmx5LVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmEucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYzFkNzEyYTE2NDNiOTJmZjA5MDRkNTg5OTYzOTcxZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3M2ZhNjUxZWMwZDg5ZDczZGQzMDcwYjEyOWNlMjIwM2E2NjE3MWRmYzBiZDJjYWEzNTcwYTljOTNkMmQwNzgxIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQotCi1HSVJfTUVTT05fT1BUSU9OID0gJ2dpcicKLQotRVhUUkFfT0VNRVNPTl9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLURpbnN0YWxsZWRfdGVzdHM9dHJ1ZScsICctRGluc3RhbGxlZF90ZXN0cz1mYWxzZScsIGQpfSIKLQotTElCViA9ICIyLjEwLjAiCi0KLUdES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCi0KLVBBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9ICR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLQotUEFDS0FHRUNPTkZJR1twbmddID0gIi1EcG5nPXRydWUsLURwbmc9ZmFsc2UsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRGpwZWc9dHJ1ZSwtRGpwZWc9ZmFsc2UsanBlZyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLUR0aWZmPXRydWUsLUR0aWZmPWZhbHNlLHRpZmYiCi1QQUNLQUdFQ09ORklHW2pwZWcyMDAwXSA9ICItRGphc3Blcj10cnVlLC1EamFzcGVyPWZhbHNlLGphc3BlciIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EeDExPXRydWUsLUR4MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14bGliIgotCi0jIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZwotUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKLQotRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKLUFMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLUZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkke2luY2x1ZGVkaXJ9LyogXAotCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCi0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQotCi0gICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQotCi0gICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsIHInXmxpYnBpeGJ1ZmxvYWRlci0oLiopXC5zbyQnLCAnZ2RrLXBpeGJ1Zi1sb2FkZXItJXMnLCAnR0RLIHBpeGJ1ZiBsb2FkZXIgZm9yICVzJykpCi0gICAgZC5zZXRWYXIoJ1BJWEJVRl9QQUNLQUdFUycsIHBhY2thZ2VzKQotCi0gICAgIyBUaGUgdGVzdCBzdWl0ZSBleGVyY2lzZXMgYWxsIHRoZSBsb2FkZXJzLCBzbyBlbnN1cmUgdGhleSBhcmUgYWxsCi0gICAgIyBkZXBlbmRlbmNpZXMgb2YgdGhlIHB0ZXN0IHBhY2thZ2UuCi0gICAgZC5hcHBlbmRWYXIoIlJERVBFTkRTXyVzLXB0ZXN0IiAlIGQuZ2V0VmFyKCdQTicpLCAiICIgKyBwYWNrYWdlcykKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBDb3B5IGdkay1waXhidWYtcXVlcnktbG9hZGVycyBpbnRvIGxpYmRpciBzbyBpdCBpcyBhbHdheXMgYXZhaWxhYmxlCi0JIyBpbiBtdWx0aWxpYiBidWlsZHMuCi0JY3AgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLwotCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKLQkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAotCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZSBcCi0JCUdES19QSVhCVUZfTU9EVUxFRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycwotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuNDAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjQwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBkZjUwMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjQwLjAuYmIKQEAgLTAsMCArMSwxMzIgQEAKK1NVTU1BUlkgPSAiSW1hZ2UgbG9hZGluZyBsaWJyYXJ5IGZvciBHVEsrIgorREVTQ1JJUFRJT04gPSAiVGhlIEdESyBQaXhidWYgbGlicmFyeSBwcm92aWRlczogSW1hZ2UgbG9hZGluZyBhbmQgc2F2aW5nIFwKK2ZhY2lsaXRpZXMsIGZhc3Qgc2NhbGluZyBhbmQgY29tcG9zaXRpbmcgb2YgcGl4YnVmcyBhbmQgU2ltcGxlIGFuaW1hdGlvbiBcCitsb2FkaW5nIChpZS4gYW5pbWF0ZWQgR0lGcykiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL0dka1BpeGJ1ZiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dkay1waXhidWYvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLmg7ZW5kbGluZT0yNjttZDU9NzJiMzlkYTdjYmRkZTJlNjY1MzI5ZmVmNjE4ZTFkNmIgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnZGstcGl4YnVmLW5hdGl2ZSBzaGFyZWQtbWltZS1pbmZvIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1hLWNvdXBsZS1vZi1kZWNpc2lvbnMtYXJvdW5kLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRG8tbm90LXJ1bi10ZXN0cy13aGVuLWJ1aWxkaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtQnVpbGQtdGh1bWJuYWlsZXItYW5kLXRlc3RzLWFsc28taW4tY3Jvc3MtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdGFyZ2V0LW9ubHktV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10YXJnZXQtb25seS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDVlYjFlYmMyNThiYTkwNWYxYzg2NDRlZjQ5ZGUwNjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTU4MjU5NTA5OTUzN2NhOGZmM2I5OWM2ODA0MzUwYjRjMDU4YmI4YWQ2NzQxMWJiYWFlMDI0ZWU3Y2VhZDRlNiIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKKworR0lSX01FU09OX09QVElPTiA9ICdnaXInCisKK0VYVFJBX09FTUVTT05fYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJy1EaW5zdGFsbGVkX3Rlc3RzPXRydWUnLCAnLURpbnN0YWxsZWRfdGVzdHM9ZmFsc2UnLCBkKX0iCisKK0xJQlYgPSAiMi4xMC4wIgorCitHREtfUElYQlVGX0xPQURFUlMgPz0gInBuZyBqcGVnIgorCitQQUNLQUdFQ09ORklHID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSAke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIke0dES19QSVhCVUZfTE9BREVSU30iCisKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItRHBuZz10cnVlLC1EcG5nPWZhbHNlLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLURqcGVnPXRydWUsLURqcGVnPWZhbHNlLGpwZWciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EdGlmZj10cnVlLC1EdGlmZj1mYWxzZSx0aWZmIgorUEFDS0FHRUNPTkZJR1tqcGVnMjAwMF0gPSAiLURqYXNwZXI9dHJ1ZSwtRGphc3Blcj1mYWxzZSxqYXNwZXIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRHgxMT10cnVlLC1EeDExPWZhbHNlLHZpcnR1YWwvbGlieDExIgorCitQQUNLQUdFUyA9KyAiJHtQTn0teGxpYiIKKworIyBGb3IgR0lPIGltYWdlIHR5cGUgc25pZmZpbmcKK1JERVBFTkRTXyR7UE59ID0gInNoYXJlZC1taW1lLWluZm8iCisKK0ZJTEVTXyR7UE59LXhsaWIgPSAiJHtsaWJkaXJ9LypwaXhidWZfeGxpYioke1NPTElCU30iCitBTExPV19FTVBUWV8ke1BOfS14bGliID0gIjEiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgorCitGSUxFU18ke1BOfS1iaW4gKz0gIiR7ZGF0YWRpcn0vdGh1bWJuYWlsZXJzL2dkay1waXhidWYtdGh1bWJuYWlsZXIudGh1bWJuYWlsZXIiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiIFwKKwkke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1jc291cmNlIFwKKwkke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKKyAgICAgICAgJHtiaW5kaXJ9L2dkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBcCisJJHtpbmNsdWRlZGlyfS8qIFwKKwkke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLyoubGEgXAorIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeZ2RrLXBpeGJ1Zi1sb2FkZXItLioiCitQQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZSA9ICIiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBwb3N0aW5zdF9waXhidWZsb2FkZXIgPSBkLmdldFZhcigicG9zdGluc3RfcGl4YnVmbG9hZGVyIikKKworICAgIGxvYWRlcnNfcm9vdCA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzJykKKworICAgIHBhY2thZ2VzID0gJyAnLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgbG9hZGVyc19yb290LCByJ15saWJwaXhidWZsb2FkZXItKC4qKVwuc28kJywgJ2dkay1waXhidWYtbG9hZGVyLSVzJywgJ0dESyBwaXhidWYgbG9hZGVyIGZvciAlcycpKQorICAgIGQuc2V0VmFyKCdQSVhCVUZfUEFDS0FHRVMnLCBwYWNrYWdlcykKKworICAgICMgVGhlIHRlc3Qgc3VpdGUgZXhlcmNpc2VzIGFsbCB0aGUgbG9hZGVycywgc28gZW5zdXJlIHRoZXkgYXJlIGFsbAorICAgICMgZGVwZW5kZW5jaWVzIG9mIHRoZSBwdGVzdCBwYWNrYWdlLgorICAgIGQuYXBwZW5kVmFyKCJSREVQRU5EU18lcy1wdGVzdCIgJSBkLmdldFZhcignUE4nKSwgIiAiICsgcGFja2FnZXMpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgQ29weSBnZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgaW50byBsaWJkaXIgc28gaXQgaXMgYWx3YXlzIGF2YWlsYWJsZQorCSMgaW4gbXVsdGlsaWIgYnVpbGRzLgorCWNwICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8KKworfQorCisjIFJlbW92ZSBhIGJhZCBmdXp6aW5nIGF0dGVtcHQgdGhhdCBzcG9yYWRpY2FsbHkgZmFpbHMgd2l0aG91dCBhIHdheSB0byByZXByb2R1Y2UKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJcm0gJHtEfS8ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nZGstcGl4YnVmL3BpeGJ1Zi1yYW5kb21seS1tb2RpZmllZC50ZXN0Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKKwkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAorCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZSBcCisJCUdES19QSVhCVUZfTU9EVUxFRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycworfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCmluZGV4IGEwNjJhYTYuLjM3MmYxNDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKQEAgLTE5LDcgKzE5LDcgQEAKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTMsNyArMyw2IEBAIEFDX1BSRVJFUSgyLjUzKQogIAotIEFDX0lOSVQoW2Fkd2FpdGEtaWNvbi10aGVtZV0sIFszLjM0LjBdLAorIEFDX0lOSVQoW2Fkd2FpdGEtaWNvbi10aGVtZV0sIFszLjM0LjNdLAogICAgICAgICAgW2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWFkd2FpdGEtaWNvbi10aGVtZV0pCiAtQUNfQ0FOT05JQ0FMX0hPU1QKICBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y2YjYwZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJHVEsrIGljb24gdGhlbWUiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvYWR3YWl0YS1pY29uLXRoZW1lIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvYWR3YWl0YS1pY29uLXRoZW1lL2lzc3VlcyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1MSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SdW4taW5zdGFsbGF0aW9uLWNvbW1hbmRzLWFzLXNoZWxsLWpvYnMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MWI4NjBjMTdlZmUwNjU4NDliMGNiZjQ2ZTg4ODExYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MGI3ZTkxZjgyNjM1NTJiNjRkMGY5YmVmZjMzMTUwMjkxYjA4NjYxOGNlNDk4YzcxYmYxMDAzNWU0OGM3YzdmIgotCi1ERVBFTkRTICs9ICJsaWJyc3ZnLW5hdGl2ZSIKLQotUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKLQotUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLQotRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKLUZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljKi5zdmciCi1GSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCi0gICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKLUZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCi0gICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EyNzI3YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjMuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJHVEsrIGljb24gdGhlbWUiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvYWR3YWl0YS1pY29uLXRoZW1lIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvYWR3YWl0YS1pY29uLXRoZW1lL2lzc3VlcyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SdW4taW5zdGFsbGF0aW9uLWNvbW1hbmRzLWFzLXNoZWxsLWpvYnMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YWVhNGFkOWJjMDAyYWFjYWQxNTVlZTA3NDhiMzU3ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlN2MyZDhjMjU5MTI1ZDVmMzVlYzA5NTIyYjg4YzhmZTdlY2Y2MjUyMjRhYjA4MTEyMTNlZjBhOTVkOTBiOTA4IgorCitERVBFTkRTICs9ICJsaWJyc3ZnLW5hdGl2ZSIKKworUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKKworUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKKworRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljKi5zdmciCitGSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCisgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKK0ZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCisgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1Qb3J0LWNyb3NzLWNvbXBpbGF0aW9uLXN1cHBvcnQtdG8tbWVzb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOWY5YzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi1Gcm9tIDA0MTdhMWJiMDg3NDVmMmJmNTMxMGQyMGIzNDJjMmIzYjliMjEyZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTUgTm92IDIwMTggMTU6MTA6MDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUG9ydCBjcm9zcy1jb21waWxhdGlvbiBzdXBwb3J0IHRvIG1lc29uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpci9tZXNvbi5idWlsZCAgIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBtZXNvbi5idWlsZCAgICAgICB8ICA0ICsrLQotIG1lc29uX29wdGlvbnMudHh0IHwgMjAgKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dpci9tZXNvbi5idWlsZCBiL2dpci9tZXNvbi5idWlsZAotaW5kZXggYzMxMjEwMC4uYTAyODAzMyAxMDA2NDQKLS0tLSBhL2dpci9tZXNvbi5idWlsZAotKysrIGIvZ2lyL21lc29uLmJ1aWxkCi1AQCAtNDEsMTYgKzQxLDI5IEBAIGdpcl9maWxlcyA9IFsKLSB0eXBlbGliZGlyID0gam9pbl9wYXRocyhnZXRfb3B0aW9uKCdsaWJkaXInKSwgJ2dpcmVwb3NpdG9yeS0xLjAnKQotIGluc3RhbGxfZGF0YShnaXJfZmlsZXMsIGluc3RhbGxfZGlyOiBnaXJkaXIpCi0gCi0tc2Nhbm5lcl9jb21tYW5kID0gWwotLSAgcHl0aG9uLAotLSAgZ2lyc2Nhbm5lciwKLS0gICctLW91dHB1dD1AT1VUUFVUQCcsCi0tICAnLS1uby1saWJ0b29sJywKLS0gICctLXF1aWV0JywKLS0gICctLXJlcGFyc2UtdmFsaWRhdGUnLAotLSAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSksCi0tICAnLS1hZGQtaW5jbHVkZS1wYXRoJywgam9pbl9wYXRocyhtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSksCi0tXQotK2lmIGdldF9vcHRpb24oJ2VuYWJsZS1ob3N0LWdpJykKLSsgICAgc2Nhbm5lcl9jb21tYW5kID0gWwotKyAgICAgICdnLWlyLXNjYW5uZXInLAotKyAgICAgICctLW91dHB1dD1AT1VUUFVUQCcsCi0rICAgICAgJy0tbm8tbGlidG9vbCcsCi0rICAgICAgJy0tcXVpZXQnLAotKyAgICAgICctLXJlcGFyc2UtdmFsaWRhdGUnLAotKyAgICAgICctLWFkZC1pbmNsdWRlLXBhdGgnLCBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCkpLAotKyAgICAgICctLWFkZC1pbmNsdWRlLXBhdGgnLCBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpKSwKLSsgICAgXQotK2Vsc2UKLSsgICAgc2Nhbm5lcl9jb21tYW5kID0gWwotKyAgICAgIHB5dGhvbiwKLSsgICAgICBnaXJzY2FubmVyLAotKyAgICAgICctLW91dHB1dD1AT1VUUFVUQCcsCi0rICAgICAgJy0tbm8tbGlidG9vbCcsCi0rICAgICAgJy0tcXVpZXQnLAotKyAgICAgICctLXJlcGFyc2UtdmFsaWRhdGUnLAotKyAgICAgICctLWFkZC1pbmNsdWRlLXBhdGgnLCBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCkpLAotKyAgICAgICctLWFkZC1pbmNsdWRlLXBhdGgnLCBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpKSwKLSsgICAgXQotK2VuZGlmCi0rCi0gCi0gZGVwX3R5cGUgPSBnbGliX2RlcC50eXBlX25hbWUoKQotIGlmIGRlcF90eXBlID09ICdpbnRlcm5hbCcKLUBAIC02Myw2ICs3NiwxMiBAQCBpZiBkZXBfdHlwZSA9PSAnaW50ZXJuYWwnCi0gICAgICAgICAgICAgICAgICAgICAgICctLWV4dHJhLWxpYnJhcnk9Z2xpYi0yLjAnLCAnLS1leHRyYS1saWJyYXJ5PWdvYmplY3QtMi4wJ10KLSBlbmRpZgotIAotK2lmIGdldF9vcHRpb24oJ2VuYWJsZS1naS1jcm9zcy13cmFwcGVyJykgIT0gJycKLSsgIHNjYW5uZXJfY29tbWFuZCArPSBbJy0tdXNlLWJpbmFyeS13cmFwcGVyPScgKyBnZXRfb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicpXQotK2VuZGlmCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWdpLWxkZC13cmFwcGVyJykgIT0gJycKLSsgIHNjYW5uZXJfY29tbWFuZCArPSBbJy0tdXNlLWxkZC13cmFwcGVyPScgKyBnZXRfb3B0aW9uKCdlbmFibGUtZ2ktbGRkLXdyYXBwZXInKV0KLStlbmRpZgotICMgVGFrZSBhIGdsb2IgYW5kIHByaW50IHRvIG5ld2xpbmVzCi0gZ2xvYmJlciA9ICcnJwotIGZyb20gZ2xvYiBpbXBvcnQgZ2xvYgotQEAgLTg5LDggKzEwOCw4IEBAIGdsaWJfY29tbWFuZCA9IHNjYW5uZXJfY29tbWFuZCArIFsKLSAKLSBpZiBkZXBfdHlwZSA9PSAncGtnY29uZmlnJwotICAgZ2xpYl9jb21tYW5kICs9IFsnLS1leHRlcm5hbC1saWJyYXJ5JywgJy0tcGtnPWdsaWItMi4wJ10KLS0gIGdsaWJfbGliZGlyID0gZ2xpYl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnbGliZGlyJykKLS0gIGdsaWJfaW5jZGlyID0gam9pbl9wYXRocyhnbGliX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnbGliLTIuMCcpCi0rICBnbGliX2xpYmRpciA9IGdldF9vcHRpb24oJ3BrZ2NvbmZpZy1zeXNyb290LXBhdGgnKSArIGdsaWJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2xpYmRpcicpCi0rICBnbGliX2luY2RpciA9IGdldF9vcHRpb24oJ3BrZ2NvbmZpZy1zeXNyb290LXBhdGgnKSArIGpvaW5fcGF0aHMoZ2xpYl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaW5jbHVkZWRpcicpLCAnZ2xpYi0yLjAnKQotICAgZ2xpYl9saWJpbmNkaXIgPSBqb2luX3BhdGhzKGdsaWJfbGliZGlyLCAnZ2xpYi0yLjAnLCAnaW5jbHVkZScpCi0gICBnbGliX2ZpbGVzICs9IGpvaW5fcGF0aHMoZ2xpYl9pbmNkaXIsICdnb2JqZWN0JywgJ2dsaWItdHlwZXMuaCcpCi0gICBnbGliX2ZpbGVzICs9IGpvaW5fcGF0aHMoZ2xpYl9saWJpbmNkaXIsICdnbGliY29uZmlnLmgnKQotQEAgLTM0NSw3ICszNjQsNyBAQCBpZiBnaW91bml4X2RlcC5mb3VuZCgpCi0gICBkZXBfdHlwZSA9IGdpb3VuaXhfZGVwLnR5cGVfbmFtZSgpCi0gICBpZiBkZXBfdHlwZSA9PSAncGtnY29uZmlnJwotICAgICBnaW9fY29tbWFuZCArPSBbJy0tcGtnPWdpby11bml4LTIuMCddCi0tICAgIGdpb3VuaXhfaW5jbHVkZWRpciA9IGpvaW5fcGF0aHMoZ2lvdW5peF9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaW5jbHVkZWRpcicpLCAnZ2lvLXVuaXgtMi4wJykKLSsgICAgZ2lvdW5peF9pbmNsdWRlZGlyID0gZ2V0X29wdGlvbigncGtnY29uZmlnLXN5c3Jvb3QtcGF0aCcpICsgam9pbl9wYXRocyhnaW91bml4X2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnaW8tdW5peC0yLjAnKQotICAgICAjIEdldCB0aGUgaW5zdGFsbGVkIGdpby11bml4IGhlYWRlciBsaXN0Ci0gICAgIHJldCA9IHJ1bl9jb21tYW5kKHB5dGhvbiwgJy1jJywgZ2xvYmJlci5mb3JtYXQoam9pbl9wYXRocyhnaW91bml4X2luY2x1ZGVkaXIsICdnaW8nLCAnKi5oJykpKQotICAgICBpZiByZXQucmV0dXJuY29kZSgpICE9IDAKLUBAIC00MjgsMTUgKzQ0NywyNCBAQCBnaXJfZmlsZXMgKz0gY3VzdG9tX3RhcmdldCgnZ2lyLWdpcmVwb3NpdG9yeScsCi0gKQotIAotIHR5cGVsaWJzID0gW10KLStpZiBnZXRfb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicpICE9ICcnCi0rICAgIGdpcmNvbXBpbGVyX2NvbW1hbmQgPSBbZ2V0X29wdGlvbignZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXInKSwgZ2lyY29tcGlsZXIuZnVsbF9wYXRoKCksICctbycsICdAT1VUUFVUQCcsICdASU5QVVRAJywKLSsgICAgICAgICAgICAgICctLWluY2x1ZGVkaXInLCBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotKyAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAotKyAgICBdCi0rZWxzZQotKyAgICBnaXJjb21waWxlcl9jb21tYW5kID0gW2dpcmNvbXBpbGVyLCAnLW8nLCAnQE9VVFBVVEAnLCAnQElOUFVUQCcsCi0rICAgICAgICAgICAgICAnLS1pbmNsdWRlZGlyJywgbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKLSsgICAgICAgICAgICAgICctLWluY2x1ZGVkaXInLCBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKLSsgICAgXQotK2VuZGlmCi0rCi0gZm9yZWFjaCBnaXIgOiBnaXJfZmlsZXMKLSAgIHR5cGVsaWJzICs9IGN1c3RvbV90YXJnZXQoJ2dlbmVyYXRlLXR5cGVsaWItQDBAJy5mb3JtYXQoZ2lyKS51bmRlcnNjb3JpZnkoKSwKLSAgICAgaW5wdXQ6IGdpciwKLSAgICAgb3V0cHV0OiAnQEJBU0VOQU1FQC50eXBlbGliJywKLSAgICAgZGVwZW5kczogW2dvYmplY3RfZ2lyLCBdLAotLSAgICBjb21tYW5kOiBbZ2lyY29tcGlsZXIsICctbycsICdAT1VUUFVUQCcsICdASU5QVVRAJywKLS0gICAgICAgICAgICAgICctLWluY2x1ZGVkaXInLCBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotLSAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAotLSAgICBdLAotKyAgICBjb21tYW5kOiBnaXJjb21waWxlcl9jb21tYW5kLAotICAgICBpbnN0YWxsOiB0cnVlLAotICAgICBpbnN0YWxsX2RpcjogdHlwZWxpYmRpciwKLSAgICkKLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCBhNWU4MjVmLi5hMjg0OTBhIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY4LDcgKzE2OCw5IEBAIGVuZGlmCi0gc3ViZGlyKCdnaXJlcG9zaXRvcnknKQotIHN1YmRpcigndG9vbHMnKQotIHN1YmRpcignZ2lzY2FubmVyJykKLS1zdWJkaXIoJ2dpcicpCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScpID09IHRydWUKLSsgICAgc3ViZGlyKCdnaXInKQotK2VuZGlmCi0gc3ViZGlyKCdleGFtcGxlcycpCi0gc3ViZGlyKCdkb2NzJykKLSBzdWJkaXIoJ3Rlc3RzJykKLWRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCA0NDVhNjhhLi5hMzI1NTExIDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMjUsMyArMjUsMjMgQEAgb3B0aW9uKCdweXRob24nLCB0eXBlOiAnc3RyaW5nJywgdmFsdWU6ICdweXRob24zJywKLSBvcHRpb24oJ2dpcl9kaXJfcHJlZml4JywgdHlwZTogJ3N0cmluZycsCi0gICBkZXNjcmlwdGlvbjogJ0ludGVybWVkaWF0ZSBwcmVmaXggZm9yIGdpciBpbnN0YWxsYXRpb24gdW5kZXIgJHtwcmVmaXh9JwotICkKLSsKLStvcHRpb24oJ2VuYWJsZS1ob3N0LWdpJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZSA6IGZhbHNlLAotKyAgZGVzY3JpcHRpb246ICdVc2UgZ29iamVjdCBpbnRyb3NwZWN0aW9uIHRvb2xzIGluc3RhbGxlZCBpbiB0aGUgaG9zdCBzeXN0ZW0gKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQotKwotK29wdGlvbignZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXInLCB0eXBlOiAnc3RyaW5nJywKLSsgIGRlc2NyaXB0aW9uOiAnVXNlIGEgd3JhcHBlciB0byBydW4gZ2ljb21waWxlciBhbmQgYmluYXJpZXMgcHJvZHVjZWQgYnkgZ2lzY2FubmVyICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpJwotKykKLSsKLStvcHRpb24oJ2VuYWJsZS1naS1sZGQtd3JhcHBlcicsIHR5cGU6ICdzdHJpbmcnLAotKyAgZGVzY3JpcHRpb246ICdVc2UgYSBsZGQgd3JhcHBlciBpbnN0ZWFkIG9mIHN5c3RlbSBsZGQgY29tbWFuZCBpbiBnaXNjYW5uZXIgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQotKwotK29wdGlvbignZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsIHR5cGU6ICdib29sZWFuJywgdmFsdWUgOiB0cnVlLAotKyAgZGVzY3JpcHRpb246ICdCdWlsZCBpbnRyb3NwZWN0aW9uIGRhdGEgKC5naXIgYW5kIC50eXBlbGliIGZpbGVzKSBpbiBhZGRpdGlvbiB0byBsaWJyYXJ5IGFuZCB0b29scycKLSspCi0rCi0rb3B0aW9uKCdwa2djb25maWctc3lzcm9vdC1wYXRoJywgdHlwZTogJ3N0cmluZycsCi0rICBkZXNjcmlwdGlvbjogJ1NwZWNpZnkgYSBzeXNyb290IHBhdGggdG8gcHJlcGVuZCB0byBwa2djb25maWcgb3V0cHV0ICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpJwotKykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoCmluZGV4IGExNTQwMWEuLjlkNmY1ZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjczNjIzODUxZmI3MGMwZTQzY2Y3OWNlZjY3YjM3NTE0MzJlYmU3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGRmYjQ0NDUwY2E5ZmZmYzE1OTc3ZTk1ZWFkY2I3MDU0YWI2MGE5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNhc2NoYSBTaWxiZSA8eC15bzE3QHNlLXNpbGJlLmRlPgogRGF0ZTogRnJpLCA4IEp1biAyMDE4IDEzOjU1OjEwICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIFJlbG9jYXRlIHRoZSByZXBvc2l0b3J5IGRpcmVjdG9yeSBmb3IgbmF0aXZlIGJ1aWxkcwpAQCAtMjEsNyArMjEsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYyBiL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYwotaW5kZXggY2E1ZGMyYi4uN2E0ZDE3ZiAxMDA2NDQKK2luZGV4IGI3OTQ4ZDYuLjM5YTI1ODYgMTAwNjQ0CiAtLS0gYS9naXJlcG9zaXRvcnkvZ2lyZXBvc2l0b3J5LmMKICsrKyBiL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYwogQEAgLTIxLDYgKzIxLDggQEAKQEAgLTQyLDcgKzQyLDcgQEAKICAvKioKICAgKiBTRUNUSU9OOmdpcmVwb3NpdG9yeQogICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogR09iamVjdCBJbnRyb3NwZWN0aW9uIHJlcG9zaXRvcnkgbWFuYWdlcgotQEAgLTIxMiw5ICsyMTYsMTYgQEAgaW5pdF9nbG9iYWxzICh2b2lkKQorQEAgLTIxNSw5ICsyMTksMTYgQEAgaW5pdF9nbG9iYWxzICh2b2lkKQogICAgICAgICAgICBnX2ZyZWUgKGN1c3RvbV9kaXJzKTsKICAgICAgICAgIH0KICAKQEAgLTYyLDcgKzYyLDcgQEAKICAgICAgICB0eXBlbGliX3NlYXJjaF9wYXRoID0gZ19zbGlzdF9wcmVwZW5kICh0eXBlbGliX3NlYXJjaF9wYXRoLCB0eXBlbGliX2Rpcik7CiAgCiBkaWZmIC0tZ2l0IGEvZ2lyZXBvc2l0b3J5L21lc29uLmJ1aWxkIGIvZ2lyZXBvc2l0b3J5L21lc29uLmJ1aWxkCi1pbmRleCAxZDdhZWQ2Li41NjM3ZmI1IDEwMDY0NAoraW5kZXggMjA0NjU5Zi4uM2U2MWQzMSAxMDA2NDQKIC0tLSBhL2dpcmVwb3NpdG9yeS9tZXNvbi5idWlsZAogKysrIGIvZ2lyZXBvc2l0b3J5L21lc29uLmJ1aWxkCiBAQCAtNDQsNyArNDQsNyBAQCBnaXJlcG9faW50ZXJuYWxzX2xpYiA9IHN0YXRpY19saWJyYXJ5KCdnaXJlcG9zaXRvcnktaW50ZXJuYWxzJywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRkOTU1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDY2NTNjMjhmMGI3NmFhZDg2ZTI2YzUxMmIwM2VmY2VjNmQ5ZDllOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMyBKYW4gMjAxOCAxNzowMjowMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCBhIC0tbGliLWRpcnMtZW52dmFyIG9wdGlvbgotCi1CeSBkZWZhdWx0IExEX0xJQlJBUllfUEFUSCBpcyBzZXQgdG8gdGhlIGxpc3Qgb2YgdGFyZ2V0IGxpYnJhcnkgcGF0aHM7Ci10aGlzIGJyZWFrcyBkb3duIGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50LCBhcyB3ZSBuZWVkIHRvIHJ1biBhCi1uYXRpdmUgZW11bGF0aW9uIHdyYXBwZXIgcmF0aGVyIHRoYW4gdGhlIHRhcmdldCBiaW5hcnkgaXRzZWxmLiBUaGlzIHBhdGNoCi1hbGxvd3MgZXhwb3J0aW5nIHRob3NlIHBhdGhzIHRvIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHZhcmlhYmxlCi13aGljaCBjYW4gYmUgcGlja2VkIHVwIGFuZCB1c2VkIGJ5IHRoZSB3cmFwcGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBnaXNjYW5uZXIvY2NvbXBpbGVyLnB5ICAgfCA0ICsrLS0KLSBnaXNjYW5uZXIvZHVtcGVyLnB5ICAgICAgfCAzICsrLQotIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDMgKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvY2NvbXBpbGVyLnB5IGIvZ2lzY2FubmVyL2Njb21waWxlci5weQotaW5kZXggMzJjOTI5Ni4uM2ZiMjYyYiAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKLSsrKyBiL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKLUBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgQ0NvbXBpbGVyKG9iamVjdCk6Ci0gCi0gICAgICAgICAgICAgc2VsZi5fY2ZsYWdzX25vX2RlcHJlY2F0aW9uX3dhcm5pbmdzID0gIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gCi0tICAgIGRlZiBnZXRfaW50ZXJuYWxfbGlua19mbGFncyhzZWxmLCBhcmdzLCBsaWJ0b29sLCBsaWJyYXJpZXMsIGV4dHJhX2xpYnJhcmllcywgbGlicGF0aHMpOgotKyAgICBkZWYgZ2V0X2ludGVybmFsX2xpbmtfZmxhZ3Moc2VsZiwgYXJncywgbGlidG9vbCwgbGlicmFyaWVzLCBleHRyYV9saWJyYXJpZXMsIGxpYnBhdGhzLCBsaWJfZGlyc19lbnZ2YXIpOgotICAgICAgICAgIyBBbiAiaW50ZXJuYWwiIGxpbmsgaXMgd2hlcmUgdGhlIGxpYnJhcnkgdG8gYmUgaW50cm9zcGVjdGVkCi0gICAgICAgICAjIGlzIGJlaW5nIGJ1aWx0IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAKLUBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgQ0NvbXBpbGVyKG9iamVjdCk6Ci0gICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6Ci0gICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTElCJywgJ1BBVEgnXQotICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMRF9MSUJSQVJZX1BBVEgnLCAnRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgnXQotKyAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCddIGlmIG5vdCBsaWJfZGlyc19lbnZ2YXIgZWxzZSBbbGliX2RpcnNfZW52dmFyXQotICAgICAgICAgICAgICMgU2VhcmNoIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdAotICAgICAgICAgICAgICMgKFRoaXMgZmxhZyBpcyBub3Qgc3VwcG9ydGVkIG5vciBuZWVkZWQgZm9yIFZpc3VhbCBDKyspCi0gICAgICAgICAgICAgYXJncy5hcHBlbmQoJy1MLicpCi1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2R1bXBlci5weSBiL2dpc2Nhbm5lci9kdW1wZXIucHkKLWluZGV4IDJiODUxYTUuLjEwYTdjMzkgMTAwNjQ0Ci0tLS0gYS9naXNjYW5uZXIvZHVtcGVyLnB5Ci0rKysgYi9naXNjYW5uZXIvZHVtcGVyLnB5Ci1AQCAtMjQ0LDcgKzI0NCw4IEBAIGNsYXNzIER1bXBDb21waWxlcihvYmplY3QpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnRvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRyYV9saWJyYXJpZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGlicmFyeV9wYXRocywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYl9kaXJzX2VudnZhcikKLSAgICAgICAgICAgICBhcmdzLmV4dGVuZChwa2dfY29uZmlnX2xpYnMpCi0gCi0gICAgICAgICBlbHNlOgotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggOTAxMzU2Mi4uOWM5ZmUxMiAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1AQCAtMTI2LDYgKzEyNiw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQotKyAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbGliLWRpcnMtZW52dmFyIiwKLSsgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxpYl9kaXJzX2VudnZhciIsIGRlZmF1bHQ9Tm9uZSwKLSsgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gd3JpdGUgYSBsaXN0IG9mIGxpYnJhcnkgZGlyZWN0b3JpZXMgdG8gKGZvciBydW5uaW5nIHRoZSB0cmFuc2llbnQgYmluYXJ5KSwgaW5zdGVhZCBvZiBzdGFuZGFyZCBMRF9MSUJSQVJZX1BBVEgiKQotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1tZXNvbi5idWlsZC1kaXNhYmxlLXRlc3RzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OTUxYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDJjMzg0MTg3Y2MyMjExM2MwYzliMWNkMjMzOTQ4MTE4ZjdjMDg1ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjUgTWFyIDIwMTkgMTM6Mjg6NDggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGRpc2FibGUgdGVzdHMgd2hlbiBjcm9zcy1jb21waWxpbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nb2JqZWN0LWludHJvc3BlY3Rpb24vbWVyZ2VfcmVxdWVzdHMvNjRdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggMjU0NGZmMy4uNGMxNmZlNSAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTE2OCw3ICsxNjgsOSBAQCBpZiBnZXRfb3B0aW9uKCdlbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJykgPT0gdHJ1ZQotIGVuZGlmCi0gc3ViZGlyKCdleGFtcGxlcycpCi0gc3ViZGlyKCdkb2NzJykKLS1zdWJkaXIoJ3Rlc3RzJykKLStpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQotKyAgICBzdWJkaXIoJ3Rlc3RzJykKLStlbmRpZgotIAotIGluc3RhbGxfZGF0YSgnTWFrZWZpbGUuaW50cm9zcGVjdGlvbicsIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKGdldF9vcHRpb24oJ2RhdGFkaXInKSwgJ2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAnKSkKLSBpbnN0YWxsX2RhdGEoJ200L2ludHJvc3BlY3Rpb24ubTQnLCBpbnN0YWxsX2Rpcjogam9pbl9wYXRocyhnZXRfb3B0aW9uKCdkYXRhZGlyJyksICdhY2xvY2FsJykpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk1NGRjZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA1Zjk4NWZkOGEyNDc2NGNjYjM4YWY2MzM1ZDQ1ODRkN2UzM2ZjM2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE5IE9jdCAyMDE1IDE4OjI2OjQwICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdpc2Nhbm5lcjogYWRkIC0tdXNlLWJpbmFyeS13cmFwcGVyIG9wdGlvbgotCi1XaXRoIHRoaXMgb3B0aW9uLCBnaXNjYW5uZXIgd2lsbCB1c2UgYSB3cmFwcGVyIGV4ZWN1dGFibGUgdG8gcnVuCi1iaW5hcmllcyBpdCdzIHByb2R1Y2luZywgaW5zdGVhZCBvZiBydW5uaW5nIHRoZW0gZGlyZWN0bHkuIFRoaXMKLWlzIHVzZWZ1bCB3aGVuIGJpbmFyaWVzIGFyZSBjcm9zcy1jb21waWxlZCBhbmQgY2Fubm90IGJlIHJ1biBkaXJlY3RseSwKLWJ1dCB0aGV5IGNhbiBiZSBydW4gdXNpbmcgZm9yIGV4YW1wbGUgUUVNVSBlbXVsYXRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBnaXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgfCAxNCArKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLWluZGV4IGMwMDRmYjEuLjBiNmEyZDIgMTAwNjQ0Ci0tLS0gYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLSsrKyBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotQEAgLTEyMCw2ICsxMjAsOSBAQCBkZWYgX2dldF9vcHRpb25fcGFyc2VyKCk6Ci0gICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InByb2dyYW0iLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InByb2dyYW0gdG8gZXhlY3V0ZSIpCi0rICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS11c2UtYmluYXJ5LXdyYXBwZXIiLAotKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0id3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKLSsgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgZm9yIHJ1bm5pbmcgcHJvZ3JhbXMgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKLUBAIC00MTcsNiArNDIwLDE3IEBAIGRlZiBjcmVhdGVfYmluYXJ5KHRyYW5zZm9ybWVyLCBvcHRpb25zLCBhcmdzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2R1bXBfcGFyc2VyLmdldF9lcnJvcl9xdWFya19mdW5jdGlvbnMoKSkKLSAKLSAgICAgc2hsaWJzID0gcmVzb2x2ZV9zaGxpYnMob3B0aW9ucywgYmluYXJ5LCBvcHRpb25zLmxpYnJhcmllcykKLSsgICAgaWYgb3B0aW9ucy53cmFwcGVyOgotKyAgICAgICAgIyBUaGUgd3JhcHBlciBuZWVkcyB0aGUgYmluYXJ5IGl0c2VsZiwgbm90IHRoZSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0LAotKyAgICAgICAgIyBzbyB3ZSBjaGVjayBpZiBsaWJ0b29sIGhhcyBzbmVha2VkIHRoZSBiaW5hcnkgaW50byAubGlicyBzdWJkaXJlY3RvcnkKLSsgICAgICAgICMgYW5kIGFkanVzdCB0aGUgcGF0aCBhY2NvcmRpbmdseQotKyAgICAgICAgaW1wb3J0IG9zLnBhdGgKLSsgICAgICAgIGRpcl9uYW1lLCBiaW5hcnlfbmFtZSAgPSBvcy5wYXRoLnNwbGl0KGJpbmFyeS5hcmdzWzBdKQotKyAgICAgICAgbGlidG9vbF9iaW5hcnkgPSBvcy5wYXRoLmpvaW4oZGlyX25hbWUsICcubGlicycsIGJpbmFyeV9uYW1lKQotKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobGlidG9vbF9iaW5hcnkpOgotKyAgICAgICAgICAgIGJpbmFyeS5hcmdzWzBdID0gbGlidG9vbF9iaW5hcnkKLSsJIyBUaGVuIHByZXBlbmQgdGhlIHdyYXBwZXIgdG8gdGhlIGNvbW1hbmQgbGluZSB0byBleGVjdXRlCi0rICAgICAgICBiaW5hcnkuYXJncyA9IFtvcHRpb25zLndyYXBwZXJdICsgYmluYXJ5LmFyZ3MKLSAgICAgZ2R1bXBfcGFyc2VyLnNldF9pbnRyb3NwZWN0aW9uX2JpbmFyeShiaW5hcnkpCi0gICAgIGdkdW1wX3BhcnNlci5wYXJzZSgpCi0gICAgIHJldHVybiBzaGxpYnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkyNjRlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGNiYTc4MDc4ODhhNGExZjFkNjMwZDE2YzUxYzg5ODU5MjA5MzM0YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgT2N0IDIwMTUgMTY6Mjg6NDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgYSAtLXVzZS1sZGQtd3JhcHBlciBvcHRpb24KLQotVGhpcyBpcyB1c2VmdWwgaW4gY3Jvc3MtY29tcGlsZSBlbnZpcm9ubWVudHMgd2hlcmUgc3lzdGVtJ3MgbGRkCi1jb21tYW5kIGRvZXMgbm90IHdvcmsgb24gYmluYXJpZXMgYnVpbHQgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBpbiBvZS1jb3JlXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDMgKysrCi0gZ2lzY2FubmVyL3NobGlicy5weSAgICAgIHwgNCArKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggMGI2YTJkMi4uOTAxMzU2MiAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1AQCAtMTIzLDYgKzEyMyw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1iaW5hcnktd3JhcHBlciIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJ3cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBmb3IgcnVubmluZyBwcm9ncmFtcyAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0rICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS11c2UtbGRkLXdyYXBwZXIiLAotKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibGRkX3dyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCi0rICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0tYXJnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJhcHBlbmQiLCBkZXN0PSJwcm9ncmFtX2FyZ3MiLCBkZWZhdWx0PVtdLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJleHRyYSBhcmd1bWVudHMgdG8gcHJvZ3JhbSIpCi1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NobGlicy5weSBiL2dpc2Nhbm5lci9zaGxpYnMucHkKLWluZGV4IDJjNjFmMmYuLmQ2N2RmOTUgMTAwNjQ0Ci0tLS0gYS9naXNjYW5uZXIvc2hsaWJzLnB5Ci0rKysgYi9naXNjYW5uZXIvc2hsaWJzLnB5Ci1AQCAtOTYsNyArOTYsOSBAQCBkZWYgX3Jlc29sdmVfbm9uX2xpYnRvb2wob3B0aW9ucywgYmluYXJ5LCBsaWJyYXJpZXMpOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKGxpYnRvb2wpCi0gICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0tbW9kZT1leGVjdXRlJykKLSAgICAgICAgIHBsYXRmb3JtX3N5c3RlbSA9IHBsYXRmb3JtLnN5c3RlbSgpCi0tICAgICAgICBpZiBwbGF0Zm9ybV9zeXN0ZW0gPT0gJ0Rhcndpbic6Ci0rICAgICAgICBpZiBvcHRpb25zLmxkZF93cmFwcGVyOgotKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFtvcHRpb25zLmxkZF93cmFwcGVyLCBiaW5hcnkuYXJnc1swXV0pCi0rICAgICAgICBlbGlmIHBsYXRmb3JtX3N5c3RlbSA9PSAnRGFyd2luJzoKLSAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ290b29sJywgJy1MJywgYmluYXJ5LmFyZ3NbMF1dKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ2xkZCcsIGJpbmFyeS5hcmdzWzBdXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZjhkYTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDc0MGQ5MTE1MWZmZTU3NmUwYzA4NTEzYWY5ZDdiYzgxMzNlYjlkZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgOCBPY3QgMjAxNSAxODozMDozNSArMDMwMAotU3ViamVjdDogW1BBVENIXSBQcmVmaXggcGtnLWNvbmZpZyBwYXRocyB3aXRoIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLSBlbnZpcm9ubWVudCB2YXJpYWJsZQotCi1UaGlzIGVudmlyb25tZW50IHZhcmlhYmxlIHNldHMgdGhlIGxvY2F0aW9uIG9mIHN5c3Jvb3QgZGlyZWN0b3J5IGluIGNyb3NzLWNvbXBpbGF0aW9uCi1lbnZpcm9ubWVudHM7IGlmIHRoZSB2YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGUgcHJlZml4IHdpbGwgYmUgZW1wdHkuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBtNC9pbnRyb3NwZWN0aW9uLm00IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tNC9pbnRyb3NwZWN0aW9uLm00IGIvbTQvaW50cm9zcGVjdGlvbi5tNAotaW5kZXggZDg5YzNkOS4uYjU2MjI2NiAxMDA2NDQKLS0tLSBhL200L2ludHJvc3BlY3Rpb24ubTQKLSsrKyBiL200L2ludHJvc3BlY3Rpb24ubTQKLUBAIC01NiwxNCArNTYsMTQgQEAgbTRfZGVmaW5lKFtfR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLX0lOVEVSTkFMXSwKLSAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9Ci0gICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0KLSAgICAgaWYgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIjsgdGhlbgotLSAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0dFTkVSQVRFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0rICAgICAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0rICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2dlbmVyYXRlIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpcmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX1RZUEVMSUJESVI9IiQoJFBLR19DT05GSUcgLS12YXJpYWJsZT10eXBlbGliZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjApIgotICAgICAgICBJTlRST1NQRUNUSU9OX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9NQUtFRklMRT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotKyAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9ZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYC9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24KLSAgICAgZmkKLSAgICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjYyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3MzljYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi1TVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKLURFU0NSSVBUSU9OID0gIkdPYmplY3QgSW50cm9zcGVjdGlvbiBpcyBhIHByb2plY3QgZm9yIHByb3ZpZGluZyBtYWNoaW5lIFwKLXJlYWRhYmxlIGludHJvc3BlY3Rpb24gZGF0YSBvZiB0aGUgQVBJIG9mIEMgbGlicmFyaWVzLiBUaGlzIGludHJvc3BlY3Rpb24gXAotZGF0YSBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIGRpZmZlcmVudCB1c2UgY2FzZXMsIGZvciBleGFtcGxlIGF1dG9tYXRpYyBjb2RlIFwKLWdlbmVyYXRpb24gZm9yIGJpbmRpbmdzLCBBUEkgdmVyaWZpY2F0aW9uIGFuZCBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9pc3N1ZXMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDM0ZTgxMjhhNjhiZWRkNTliODBiMmFjMWViMWM0YSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjcgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1pZ25vcmUtZXJyb3ItcmV0dXJuLWNvZGVzLWZyb20tbGRkLXdyYXBwZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Qb3J0LWNyb3NzLWNvbXBpbGF0aW9uLXN1cHBvcnQtdG8tbWVzb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1kaXNhYmxlLXRlc3RzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzcyNzhlYWIzNzA0ZTQyMjM0YjYwODBiOGNmMjQxZjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFlZTdlZDI1N2ZkYmMwMDg3MDJiZGZmMGZmM2U3OGE2NjBlN2U2MDJlZmE4ZjIxMWRjODliOWQxZTdkOTBhMiIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2giCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBtdWx0aWxpYl9zY3JpcHQKLQotR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgotCi1NVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9nLWlyLWFubm90YXRpb24tdG9vbCAke1BOfToke2JpbmRpcn0vZy1pci1zY2FubmVyIgotCi1ERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXV0b2NvbmYtYXJjaGl2ZSIKLQotIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAotIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCi0jIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KLSMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi0jIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KLURFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKLQotIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0Ci1leHBvcnQgU1RBR0lOR19ESVJfSE9TVAotZXhwb3J0IEIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItRGRvY3Rvb2w9dHJ1ZSwtRGRvY3Rvb2w9ZmFsc2UscHl0aG9uMy1tYWtvLCIKLQotIyBDb25maWd1cmUgdGFyZ2V0IGJ1aWxkIHRvIHVzZSBuYXRpdmUgdG9vbHMgb2YgaXRzZWxmIGFuZCB0byB1c2UgYSBxZW11IHdyYXBwZXIKLSMgYW5kIG9wdGlvbmFsbHkgdG8gZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBkYXRhCi1FWFRSQV9PRU1FU09OX2NsYXNzLXRhcmdldCA9ICIgXAotICAgIC1EZW5hYmxlLWhvc3QtZ2k9dHJ1ZSBcCi0gICAgLURlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCi0gICAgLURlbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCi0gICAgLURwa2djb25maWctc3lzcm9vdC1wYXRoPSR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctRGVuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGE9dHJ1ZScsICctRGVuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGE9ZmFsc2UnLCBkKX0gXAotICAgICR7QCctRGdpcl9kaXJfcHJlZml4PSR7bGliZGlyfScgaWYgZC5nZXRWYXIoJ01VTFRJTElCUycpIGVsc2UgJyd9IFwKLSIKLQotIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcwotIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKLXB5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKLSAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXFwkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncwotIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKLWV4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQotCi0kcWVtdV9iaW5hcnkgIlwkQCIKLWlmIFsgXCQ/IC1uZSAwIF07IHRoZW4KLSAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgotICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCi0gICAgZXhpdCAxCi1maQotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCi0gICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKLSAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLWxpYi1kaXJzLWVudnZhcj1HSVJfRVhUUkFfTElCU19QQVRIIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19MSUJESVJ9L2dpci0xLjAgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCi0gICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKLSAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLXByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi0KLSAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKLX0KLQotIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQKLSMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotfQotCi0jIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQotIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCi1naV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAotICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKLX0KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZCA9ICIgZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzIgotZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLQlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KLQlkZXN0PSR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC1sZHNvY29uZi0ke1BOfQotCWVjaG8gIiMhL2Jpbi9zaCIgPiAkZGVzdAotCWVjaG8gIm1rZGlyIC1wICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0iID4+ICRkZXN0Ci0JZWNobyAiZWNobyAke2Jhc2VfbGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JZWNobyAiZWNobyAke2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAotCWNobW9kIDc1NSAkZGVzdAotfQotCi0jIFJlbW92ZSB3cmFwcGVyIGZpbGVzIGZyb20gdGhlIHBhY2thZ2UsIG9ubHkgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gImdpX3BhY2thZ2VfcHJlcHJvY2VzcyIKLWdpX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCi0KLSMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKLUZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKLQotIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKLSMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciAke2xpYmRpcn0vZ2lyLSovKi5naXIiCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLSMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCi0jIHRlc3RzdWl0ZXMuCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLXBpY2tsZSBweXRob24zLXhtbCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42NC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZmI1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNjQuMS5iYgpAQCAtMCwwICsxLDIwMiBAQAorU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCitERVNDUklQVElPTiA9ICJHT2JqZWN0IEludHJvc3BlY3Rpb24gaXMgYSBwcm9qZWN0IGZvciBwcm92aWRpbmcgbWFjaGluZSBcCityZWFkYWJsZSBpbnRyb3NwZWN0aW9uIGRhdGEgb2YgdGhlIEFQSSBvZiBDIGxpYnJhcmllcy4gVGhpcyBpbnRyb3NwZWN0aW9uIFwKK2RhdGEgY2FuIGJlIHVzZWQgaW4gc2V2ZXJhbCBkaWZmZXJlbnQgdXNlIGNhc2VzLCBmb3IgZXhhbXBsZSBhdXRvbWF0aWMgY29kZSBcCitnZW5lcmF0aW9uIGZvciBiaW5kaW5ncywgQVBJIHZlcmlmaWNhdGlvbiBhbmQgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvYWN0aW9uL3Nob3cvUHJvamVjdHMvR09iamVjdEludHJvc3BlY3Rpb24iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nb2JqZWN0LWludHJvc3BlY3Rpb24vaXNzdWVzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzQzNGU4MTI4YTY4YmVkZDU5YjgwYjJhYzFlYjFjNGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lzY2FubmVyLWlnbm9yZS1lcnJvci1yZXR1cm4tY29kZXMtZnJvbS1sZGQtd3JhcHBlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjM0MTlkZmQwODZlZmNmODM3NjhlMDU3OWFiNmFiZDJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwYmVhZTY3MjhjMTM0NTIxOTI2YWZmZmY5YjJlOTcxMjU3NDliMzhkMzg3NDRkYzkwMWY0MDEwZWUzZTdmYTciCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gbXVsdGlsaWJfc2NyaXB0CisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vZy1pci1hbm5vdGF0aW9uLXRvb2wgJHtQTn06JHtiaW5kaXJ9L2ctaXItc2Nhbm5lciIKKworREVQRU5EU19hcHBlbmQgPSAiIGxpYmZmaSB6bGliIGdsaWItMi4wIHB5dGhvbjMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGF1dG9jb25mLWFyY2hpdmUiCisKKyMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKKyMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgorIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCisjIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcworIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCitERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCisKKyMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAorZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKK2V4cG9ydCBCCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbZG9jdG9vbF0gPSAiLURkb2N0b29sPWVuYWJsZWQsLURkb2N0b29sPWRpc2FibGVkLHB5dGhvbjMtbWFrbywiCisKKyMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCisjIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQorRVhUUkFfT0VNRVNPTl9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAtRGdpX2Nyb3NzX3VzZV9ob3N0X2dpPXRydWUgXAorICAgIC1EZ2lfY3Jvc3NfYmluYXJ5X3dyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAorICAgIC1EZ2lfY3Jvc3NfbGRkX3dyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCisgICAgLURnaV9jcm9zc19wa2djb25maWdfc3lzcm9vdF9wYXRoPSR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctRGJ1aWxkX2ludHJvc3BlY3Rpb25fZGF0YT10cnVlJywgJy1EYnVpbGRfaW50cm9zcGVjdGlvbl9kYXRhPWZhbHNlJywgZCl9IFwKKyAgICAke0AnLURnaXJfZGlyX3ByZWZpeD0ke2xpYmRpcn0nIGlmIGQuZ2V0VmFyKCdNVUxUSUxJQlMnKSBlbHNlICcnfSBcCisiCisKKyMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKKyMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCitweXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7CisgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1xcJEdJUl9FWFRSQV9MSUJTX1BBVEgnLCcubGlicycsJyRTVEFHSU5HX0RJUl9IT1NULyR7bGliZGlyfScsJyRTVEFHSU5HX0RJUl9IT1NULyR7YmFzZV9saWJkaXJ9J10pfSIKKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVXNlIGEgbW9kdWxlcyBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCBzbyB3ZSBkb24ndCBsb2FkIHJhbmRvbSB0aGluZ3MKKyMgd2hpY2ggbWF5IHRoZW4gZ2V0IGRlbGV0ZWQgKG9yIHRoZWlyIGRlcGVuZGVuY2llcykgYW5kIHBvdGVudGlhbGx5IHNlZ2ZhdWx0CitleHBvcnQgR0lPX01PRFVMRV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lvL21vZHVsZXMtZHVtbXkKKworJHFlbXVfYmluYXJ5ICJcJEAiCitpZiBbIFwkPyAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAiSWYgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2UgaXMgYWJvdXQgbWlzc2luZyAuc28gbGlicmFyaWVzLCB0aGVuIHNldHRpbmcgdXAgR0lSX0VYVFJBX0xJQlNfUEFUSCBpbiB0aGUgcmVjaXBlIHNob3VsZCBoZWxwLiIKKyAgICBlY2hvICIodHlwaWNhbGx5IGxpa2UgdGhpczogR0lSX0VYVFJBX0xJQlNfUEFUSD1cIiQiIntCfS9zb21ldGhpbmcvLmxpYnNcIiApIgorICAgIGV4aXQgMQorZmkKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1zY2FubmVyIGl0c2VsZiwgd2hpY2ggd2lsbCBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcworICAgICAgICAjIGZvciBnbGliLWJhc2VkIHBhY2thZ2VzLiBUaGlzIHdyYXBwZXIgY2FsbHMgdGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIHRoZSBzY2FubmVyLCBhbmQgdGVsbHMgaXQgdG8gdXNlCisgICAgICAgICMgYSBxZW11IHdyYXBwZXIgZm9yIHJ1bm5pbmcgdHJhbnNpZW50IHRhcmdldCBiaW5hcmllcyBwcm9kdWNlZCBieSB0aGUgc2Nhbm5lciwgYW5kIGFuIGluY2x1ZGUgZGlyZWN0b3J5CisgICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKK2V4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCitnLWlyLXNjYW5uZXIgLS1saWItZGlycy1lbnZ2YXI9R0lSX0VYVFJBX0xJQlNfUEFUSCAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wIC0tYWRkLWluY2x1ZGUtcGF0aD0ke1NUQUdJTkdfTElCRElSfS9naXItMS4wICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgorICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCiske1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0CisgICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCitwcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorCisgICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKKyAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKKyAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCit9CisKKyMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkCisjIHRvIGJ1aWxkIGludHJvc3BlY3Rpb24gZmlsZXMgZm9yIGFsbCBvdGhlciBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgJHtEfSR7YmluZGlyfS8KK30KKworIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKKyMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKKyAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAorICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2dpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9CisJZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KKwllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKKwllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAorCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwljaG1vZCA3NTUgJGRlc3QKK30KKworIyBSZW1vdmUgd3JhcHBlciBmaWxlcyBmcm9tIHRoZSBwYWNrYWdlLCBvbmx5IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJnaV9wYWNrYWdlX3ByZXByb2Nlc3MiCitnaV9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7CisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCit9CisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIHBvc3RpbnN0LWxkc29jb25mLSR7UE59IgorCisjIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCisKKyMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCisjIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIgJHtsaWJkaXJ9L2dpci0qLyouZ2lyIgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLnJuYyIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCisjIHRvIGdlbmVyYXRlIHRyYW5zaWVudCBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvZ2R1bXAuYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gcHlnb2JqZWN0KSB0byBidWlsZCB0aGVpcgorIyB0ZXN0c3VpdGVzLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1waWNrbGUgcHl0aG9uMy14bWwiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYTU3OGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgZGVza3RvcC13aWRlIEdTZXR0aW5ncyBzY2hlbWFzIgotREVTQ1JJUFRJT04gPSAiR1NldHRpbmdzIGRlc2t0b3Atd2lkZSBzY2hlbWFzIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBcCi1HU2V0dGluZ3Mgc2NoZW1hcyBmb3Igc2V0dGluZ3Mgc2hhcmVkIGJ5IHZhcmlvdXMgY29tcG9uZW50cyBvZiBhIGRlc2t0b3AuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2lzc3VlcyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjk3NTllZjUzZmIyZTUzZmM4ZDE5MTkwZTU4ZjJjMzMyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjg4YjA0MjYwZjcwNDBiMGUwMDRhOGQ1OWM3NzNjZmI0ZTMyZGY0ZjFiNGEwZjlkNzA1YzUxYWZjY2M5NWVhZCIKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1za2lwLWdpci1pbnN0YWxsYXRpb24tZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ODE3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNi4wLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiR05PTUUgZGVza3RvcC13aWRlIEdTZXR0aW5ncyBzY2hlbWFzIgorREVTQ1JJUFRJT04gPSAiR1NldHRpbmdzIGRlc2t0b3Atd2lkZSBzY2hlbWFzIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBcCitHU2V0dGluZ3Mgc2NoZW1hcyBmb3Igc2V0dGluZ3Mgc2hhcmVkIGJ5IHZhcmlvdXMgY29tcG9uZW50cyBvZiBhIGRlc2t0b3AuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2lzc3VlcyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY5N2RiOWU2YjJhZTA1OGY4YTBkMGIwMjNlMzJjZWFjIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNzY0YWI2ODMyODY1MzYzMjQ1MzNhNThkNGU5NWZjNTdmODFhZGFiYTdkODgwZGQwZWJiYmNlZDYzZTk2MGVhNiIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1za2lwLWdpci1pbnN0YWxsYXRpb24tZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKaW5kZXggZTFmMWUwZC4uNWQxZjU5ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKQEAgLTM3LDcgKzM3LDYgQEAKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdsaWJ0ZXN0IFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhpbmVyYW1hIFwKICAgICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jb2xvcmQgXAogICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICIiLCAiLS1kaXNhYmxlLWd0ay1kb2MiLCBkKX0gXAogICAgICAgICAgICAgICAgICAiCiAKQEAgLTU0LDYgKzUzLDggQEAKIFBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCwsbGliZ2wiCiBQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQtYmFja2VuZCwtLWRpc2FibGUtd2F5bGFuZC1iYWNrZW5kLHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGlieGtiY29tbW9uIHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIgd2F5bGFuZC1uYXRpdmUiCiBQQUNLQUdFQ09ORklHW2N1cHNdID0gIi0tZW5hYmxlLWN1cHMsLS1kaXNhYmxlLWN1cHMsY3VwcyIKK1BBQ0tBR0VDT05GSUdbY2xvdWRwcmludF0gPSAiLS1lbmFibGUtY2xvdWRwcmludCwtLWRpc2FibGUtY2xvdWRwcmludCxyZXN0IGpzb24tZ2xpYiIKK1BBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItLWVuYWJsZS1jb2xvcmQsLS1kaXNhYmxlLWNvbG9yZCxjb2xvcmQiCiAKIHByZXBhcmVfZ3RrX3NjcmlwdHMoKSB7CiAgICAgbXYgJHtEfSR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUgJHtEfSR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUtMy4wCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKaW5kZXggY2M3ZWRmNy4uODBkYzJkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMjNhNTYzMTU1NDA2OTgwZGZjOGNmNmY3YzJkYTZjY2UwYWMzMTBmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjU3NWFiMGYwZThjMWJiYTAzM2FkMTYxNjUxMWUzN2EyZWM5OTVmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBGcmksIDE2IE9jdCAyMDE1IDE2OjM1OjE2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBEbyBub3QgdHJ5IHRvIGluaXRpYWxpemUgR0wgd2l0aG91dCBsaWJHTAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgdHJ5IHRvIGluaXRpYWxpemUgR0wgd2l0aG91dCBsaWJHTAogCiBfZ2RrX3gxMV9zY3JlZW5fdXBkYXRlX3Zpc3VhbHNfZm9yX2dsKCkgd2lsbCBlbmQgdXAgY2FsbGluZyBlcG94eXMKIEdMWCBhcGkgd2hpY2ggd2lsbCBleGl0KCkgaWYgbGliR0wuc28uMSBpcyBub3QgcHJlc2VudC4gV2UgZG8gbm90CkBAIC0yMiwxMCArMjIsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNzU3ZmQ3Yy4uMGE0ODg3NSAxMDA2NDQKK2luZGV4IGU5ZjU1ODMuLmJkNjUxYmIgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1MSw2ICszNTEsMTIgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKK0BAIC0zNDYsNiArMzQ2LDEyIEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCiAgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKQEAgLTM2LDggKzM2LDggQEAKICsgIEFDX0RFRklORShbSEFWRV9HTFhdLCBbXSwgW0dMWCB3aWxsIGJlIGF2YWlsYWJsZSBhdCBydW50aW1lXSkKICtdKQogIAotIGlmIHRlc3QgLXogIiRiYWNrZW5kX3NldCI7IHRoZW4KLSAgIGlmIHRlc3QgIiRwbGF0Zm9ybV93aW4zMiIgPSB5ZXM7IHRoZW4KKyBBQ19BUkdfRU5BQkxFKHByb2ZpbGVyLAorICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wcm9maWxlcl0sCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMgYi9nZGsveDExL2dka3Zpc3VhbC14MTEuYwogaW5kZXggODE0NzlkOC4uM2M4YzVjMCAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCkBAIC01NSw2ICs1NSwzIEBACiAgfQogIAogIGdpbnQKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaAppbmRleCA4NTJkYzlkLi4zOThjOWJjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkMTFiNDFhN2ZmMDIzNGYzODMyZDZhYWJkZjQ5ODgwN2QxNDYzYzE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmODNmY2YxOTkxYWZhZDZkOWMxNTU0NmIyY2NkNzc1ZGFkNGUzMTRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjEgSnVuIDIwMTYgMTU6MTE6MzkgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gQWRkIC0tZGlzYWJsZS1vcGVuZ2wgY29uZmlndXJlIG9wdGlvbgpAQCAtMzcsMjAgKzM3LDIwIEBACiAgZ2RrL3gxMS9nZGt4LWF1dG9jbGVhbnVwcy5oICAgICAgICAgICAgICAgIHwgIDIgKwogIGdkay94MTEve2dka3guaCA9PiBnZGt4LXdpdGgtZ2wtY29udGV4dC5ofSB8ICAxIC0KICBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmggICAgICAgICAgfCA1OCArKysrKysrKysrKysrKysrKysrKysrCi0gZ3RrL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KKyBndGsvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogIGd0ay9ndGtnbGFyZWEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwICsrKysrKystCiAgZ3RrL2luc3BlY3Rvci9nZW5lcmFsLmMgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrCiAgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKystLQogIHRlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jICAgICAgICAgICB8ICAyICsKLSAyMSBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisgMjEgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogIHJlbmFtZSBnZGsveDExL3tnZGt4LmggPT4gZ2RreC13aXRoLWdsLWNvbnRleHQuaH0gKDk4JSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RrL3gxMS9nZGt4LXdpdGhvdXQtZ2wtY29udGV4dC5oCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjNDczM2IuLjE4YWU2NmMgMTAwNjQ0CitpbmRleCBiZDY1MWJiLi5iNGMwNjFmIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNTIsNiArMzUyLDE1IEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCitAQCAtMzQ2LDYgKzM0NiwxNSBAQCBBQ19BUkdfRU5BQkxFKGNsb3VkcHJvdmlkZXJzLAogICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jbG91ZHByb3ZpZGVyc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBsaWJjbG91ZHByb3ZpZGVycyBpbnRlZ3JhdGlvbl0pXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvdWRwcm92aWRlcnNfc2V0PXllc10pCkBAIC02NiwyMSArNjYsMjEgQEAKICBBQ19BUkdfRU5BQkxFKGdseCwKICAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZ2x4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbV2hlbiBlbmFibGVkIEdkayB3aWxsIHRyeSB0byBpbml0aWFsaXplIEdMWF0pXSkKLUBAIC0xMzcwLDcgKzEzNzksNyBAQCBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCitAQCAtMTM0NSw3ICsxMzU0LDcgQEAgQ0ZMQUdTPSIkc2F2ZWRfY2ZsYWdzIgogIExERkxBR1M9IiRzYXZlZF9sZGZsYWdzIgogIAogIEdES19QQUNLQUdFUz0iJFBBTkdPX1BBQ0tBR0VTIGdkay1waXhidWYtMi4wID49IGdka19waXhidWZfcmVxdWlyZWRfdmVyc2lvbiBjYWlybyA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIGNhaXJvLWdvYmplY3QgPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiIKLS1HREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTICRjYWlyb19iYWNrZW5kcyBlcG94eSA+PSBlcG94eV9yZXF1aXJlZF92ZXJzaW9uICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTIGZyaWJpZGkgPj0gZnJpYmlkaV9yZXF1aXJlZF92ZXJzaW9uIgotK0dES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzICRFUE9YWV9QQUNLQUdFUyAkQ0xPVURQUk9WSURFUl9QQUNLQUdFUyBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKKy1HREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiAkQ0xPVURQUk9WSURFUl9QQUNLQUdFUyAkUFJPRklMRVJfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCisrR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzICRFUE9YWV9QQUNLQUdFUyAkQ0xPVURQUk9WSURFUl9QQUNLQUdFUyAkUFJPRklMRVJfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCiAgCiAgUEtHX0NIRUNLX01PRFVMRVMoR0RLX0RFUCwgJEdES19QQUNLQUdFUyAkR0RLX1BSSVZBVEVfUEFDS0FHRVMpCiAgR0RLX0RFUF9MSUJTPSIkR0RLX0VYVFJBX0xJQlMgJEdES19ERVBfTElCUyAkTUFUSF9MSUIiCi1AQCAtMTQwNCw3ICsxNDEzLDcgQEAgZmkKK0BAIC0xMzc5LDcgKzEzODgsNyBAQCBmaQogIFBLR19DSEVDS19NT0RVTEVTKEFUSywgJEFUS19QQUNLQUdFUykKICAKICBHVEtfUEFDS0FHRVM9ImF0ayA+PSBhdGtfcmVxdWlyZWRfdmVyc2lvbiBjYWlybyA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIGNhaXJvLWdvYmplY3QgPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBnZGstcGl4YnVmLTIuMCA+PSBnZGtfcGl4YnVmX3JlcXVpcmVkX3ZlcnNpb24gZ2lvLTIuMCA+PSBnbGliX3JlcXVpcmVkX3ZlcnNpb24iCi0tR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyBlcG94eSA+PSBlcG94eV9yZXF1aXJlZF92ZXJzaW9uIGZyaWJpZGkgPj0gZnJpYmlkaV9yZXF1aXJlZF92ZXJzaW9uIgotK0dUS19QUklWQVRFX1BBQ0tBR0VTPSIkQVRLX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJEVQT1hZX1BBQ0tBR0VTIGZyaWJpZGkgPj0gZnJpYmlkaV9yZXF1aXJlZF92ZXJzaW9uIgorLUdUS19QUklWQVRFX1BBQ0tBR0VTPSIkQVRLX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCisrR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJEVQT1hZX1BBQ0tBR0VTIGZyaWJpZGkgPj0gZnJpYmlkaV9yZXF1aXJlZF92ZXJzaW9uIgogIGlmIHRlc3QgIngkZW5hYmxlX3gxMV9iYWNrZW5kIiA9IHh5ZXMgLW8gIngkZW5hYmxlX3dheWxhbmRfYmFja2VuZCIgPSB4eWVzOyB0aGVuCiAgICBHVEtfUFJJVkFURV9QQUNLQUdFUz0iJEdUS19QUklWQVRFX1BBQ0tBR0VTIHBhbmdvZnQyIgogIGZpCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgIHJldHVybiBUUlVFOwogIH0KIGRpZmYgLS1naXQgYS9kb2NzL3Rvb2xzL01ha2VmaWxlLmFtIGIvZG9jcy90b29scy9NYWtlZmlsZS5hbQotaW5kZXggNmE2ZDcwZi4uNWNkZjMxMiAxMDA2NDQKK2luZGV4IGJlYzQzZTMuLjE4OWU4ZmMgMTAwNjQ0CiAtLS0gYS9kb2NzL3Rvb2xzL01ha2VmaWxlLmFtCiArKysgYi9kb2NzL3Rvb2xzL01ha2VmaWxlLmFtCiBAQCAtOSwxMyArOSwxOCBAQCBBTV9DUFBGTEFHUyA9IFwKQEAgLTIxMCw3ICsyMTAsNyBAQAogIAogICAgcmV0dXJuIGluZm87CiBkaWZmIC0tZ2l0IGEvZ2RrL01ha2VmaWxlLmFtIGIvZ2RrL01ha2VmaWxlLmFtCi1pbmRleCA2ODllZTUyLi5kNmI0ZTcwIDEwMDY0NAoraW5kZXggNDc5ZDZhMS4uN2VkYmVlOCAxMDA2NDQKIC0tLSBhL2dkay9NYWtlZmlsZS5hbQogKysrIGIvZ2RrL01ha2VmaWxlLmFtCiBAQCAtMjc0LDcgKzI3NCw2IEBAIHgxMV9pbnRyb3NwZWN0aW9uX2ZpbGVzID0gCQlcCkBAIC0yNDMsMTAgKzI0MywxMCBAQAogIEdka1gxMV8zXzBfZ2lyX1NDQU5ORVJGTEFHUyA9IAkJXAogIAktLWlkZW50aWZpZXItcHJlZml4PUdkawkJXAogZGlmZiAtLWdpdCBhL2dkay9nZGtkaXNwbGF5LmMgYi9nZGsvZ2RrZGlzcGxheS5jCi1pbmRleCAwNmQ0MTg3Li44MzI3MTFjIDEwMDY0NAoraW5kZXggMjQwYzk5Zi4uOWViNDliZiAxMDA2NDQKIC0tLSBhL2dkay9nZGtkaXNwbGF5LmMKICsrKyBiL2dkay9nZGtkaXNwbGF5LmMKLUBAIC0yNDE2LDcgKzI0MTYsOSBAQCBnYm9vbGVhbgorQEAgLTI0MTksNyArMjQxOSw5IEBAIGdib29sZWFuCiAgZ2RrX2Rpc3BsYXlfbWFrZV9nbF9jb250ZXh0X2N1cnJlbnQgKEdka0Rpc3BsYXkgICAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrR0xDb250ZXh0ICpjb250ZXh0KQogIHsKQEAgLTM4MCw3ICszODAsNyBAQAogIAogIC8qKgogZGlmZiAtLWdpdCBhL2dkay9nZGt3aW5kb3cuYyBiL2dkay9nZGt3aW5kb3cuYwotaW5kZXggMTQxNjQwOS4uZTNiNTYzMCAxMDA2NDQKK2luZGV4IDZhZTBmODYuLjRlNDhhMmEgMTAwNjQ0CiAtLS0gYS9nZGsvZ2Rrd2luZG93LmMKICsrKyBiL2dkay9nZGt3aW5kb3cuYwogQEAgLTQ1LDcgKzQ1LDkgQEAKQEAgLTM5Myw3ICszOTMsNyBAQAogIAogIC8qIGZvciB0aGUgdXNlIG9mIHJvdW5kKCkgKi8KICAjaW5jbHVkZSAiZmFsbGJhY2stYzg5LmMiCi1AQCAtMjgyMiw2ICsyODI0LDEzIEBAIGdka193aW5kb3dfZ2V0X3BhaW50X2dsX2NvbnRleHQgKEdka1dpbmRvdyAgKndpbmRvdywKK0BAIC0yODQ0LDYgKzI4NDYsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAogIHsKICAgIEdFcnJvciAqaW50ZXJuYWxfZXJyb3IgPSBOVUxMOwogIApAQCAtNDA3LDcgKzQwNyw3IEBACiAgICBpZiAoX2dka19nbF9mbGFncyAmIEdES19HTF9ESVNBQkxFKQogICAgICB7CiAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsIEdES19HTF9FUlJPUiwKLUBAIC0yOTU3LDYgKzI5NjYsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5NzksNiArMjk4OCw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewpAQCAtNDE1LDcgKzQxNSw3IEBACiAgCSAgZ2RrX2dsX2NvbnRleHRfbWFrZV9jdXJyZW50IChjb250ZXh0KTsKICAgICAgICAgICAgLyogV2l0aCBnbCB3ZSBhbHdheXMgbmVlZCBhIHN1cmZhY2UgdG8gY29tYmluZSB0aGUgZ2wKICAgICAgICAgICAgICAgZHJhd2luZyB3aXRoIHRoZSBuYXRpdmUgZHJhd2luZy4gKi8KLUBAIC0yOTcxLDYgKzI5ODEsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5OTMsNiArMzAwMyw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICAgIGdsQmxlbmRGdW5jIChHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogIAogICAgICAgICAgICBnbFZpZXdwb3J0ICgwLCAwLCB3dywgd2gpOwpAQCAtNDIzLDcgKzQyMyw3IEBACiAgICAgICAgICB9CiAgICAgIH0KICAKLUBAIC0zMDM0LDYgKzMwNDUsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzA1Niw2ICszMDY3LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogIAogICAgICAgICAgICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKHdpbmRvdy0+Z2xfcGFpbnRfY29udGV4dCk7CiAgCkBAIC00MzEsNyArNDMxLDcgQEAKICAgICAgICAgICAgaWYgKCFjYWlyb19yZWdpb25faXNfZW1wdHkgKG9wYXF1ZV9yZWdpb24pKQogICAgICAgICAgICAgIGdka19nbF90ZXh0dXJlX2Zyb21fc3VyZmFjZSAod2luZG93LT5jdXJyZW50X3BhaW50LnN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWVfcmVnaW9uKTsKLUBAIC0zMDQ0LDYgKzMwNTYsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzA2Niw2ICszMDc4LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3ctPmN1cnJlbnRfcGFpbnQubmVlZF9ibGVuZF9yZWdpb24pOwogICAgICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKICAgICAgICAgICAgICB9CkBAIC00NDAsNyArNDQwLDcgQEAKICAgICAgICAgICAgY2Fpcm9fcmVnaW9uX2Rlc3Ryb3kgKG9wYXF1ZV9yZWdpb24pOwogIAogZGlmZiAtLWdpdCBhL2dkay94MTEvTWFrZWZpbGUuYW0gYi9nZGsveDExL01ha2VmaWxlLmFtCi1pbmRleCA2Mjg5ZjNhLi5jYmJhYzc5IDEwMDY0NAoraW5kZXggMzJiMWYyNC4uNjM1MjMxMyAxMDA2NDQKIC0tLSBhL2dkay94MTEvTWFrZWZpbGUuYW0KICsrKyBiL2dkay94MTEvTWFrZWZpbGUuYW0KIEBAIC00MCw4ICs0MCw2IEBAIGxpYmdka194MTFfbGFfU09VUkNFUyA9IAlcCkBAIC00OTQsNyArNDk0LDcgQEAKICAJZ2RreDExa2V5cy5oCQlcCiAgCWdka3gxMW1vbml0b3IuaAkJXAogIAlnZGt4MTFwcm9wZXJ0eS5oCVwKLUBAIC04Nyw5ICsxMDIsMTYgQEAgbGliZ2RreDExaW5jbHVkZV9IRUFERVJTID0gCVwKK0BAIC04NywxMCArMTAyLDE3IEBAIGxpYmdka3gxMWluY2x1ZGVfSEVBREVSUyA9IAlcCiAgCWdka3gxMXZpc3VhbC5oCQlcCiAgCWdka3gxMXdpbmRvdy5oCiAgCkBAIC01MDYsMTMgKzUwNiwxNCBAQAogICMgZG9uJ3Qgc2VlbSB0byBiZSBjb3JyZWN0bHkgZXhwYW5kZWQgZm9yIHRoZSBkaXN0IGZpbGVzLgogIEVYVFJBX0RJU1QgKz0gCQkJXAogKwlnZGt4LmgJCQlcCi0gCWdka3NldHRpbmdzLmMKKyAJZ2Rrc2V0dGluZ3MuYwlcCisgCW1lc29uLmJ1aWxkCiAgCiArTUFJTlRBSU5FUkNMRUFORklMRVMgPSBnZGt4LmgKICsKICAtaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2dpdC5tawogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwotaW5kZXggNWI5NTE5Ni4uOWEyZjJhMiAxMDA2NDQKK2luZGV4IDgxNzk0NGUuLmU3YTI5NDcgMTAwNjQ0CiAtLS0gYS9nZGsveDExL2dka2Rpc3BsYXkteDExLmMKICsrKyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogQEAgLTM3LDcgKzM3LDkgQEAKQEAgLTUyMyw5ICs1MjQsOSBAQAogICNpbmNsdWRlICJnZGtnbGNvbnRleHQteDExLmgiCiArI2VuZGlmCiAgI2luY2x1ZGUgImdkay1wcml2YXRlLmgiCisgI2luY2x1ZGUgImdka3Byb2ZpbGVycHJpdmF0ZS5oIgogIAotICNpbmNsdWRlIDxnbGliLmg+Ci1AQCAtMzE4NCw3ICszMTg2LDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQorQEAgLTMxODgsNyArMzE5MCw5IEBAIGdka194MTFfZGlzcGxheV9jbGFzc19pbml0IChHZGtYMTFEaXNwbGF5Q2xhc3MgKiBjbGFzcykKICAgIGRpc3BsYXlfY2xhc3MtPnRleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0ID0gX2dka194MTFfZGlzcGxheV90ZXh0X3Byb3BlcnR5X3RvX3V0ZjhfbGlzdDsKICAgIGRpc3BsYXlfY2xhc3MtPnV0ZjhfdG9fc3RyaW5nX3RhcmdldCA9IF9nZGtfeDExX2Rpc3BsYXlfdXRmOF90b19zdHJpbmdfdGFyZ2V0OwogIApAQCAtNTM3LDEwICs1MzgsMTAgQEAKICAgIGRpc3BsYXlfY2xhc3MtPmdldF9kZWZhdWx0X3NlYXQgPSBnZGtfeDExX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdDsKICAKIGRpZmYgLS1naXQgYS9nZGsveDExL2dka3NjcmVlbi14MTEuYyBiL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jCi1pbmRleCAyNzJjZWNkLi4yYmIzNGFjIDEwMDY0NAoraW5kZXggODkzOWFlOS4uOTMxYmZmOSAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jCiArKysgYi9nZGsveDExL2dka3NjcmVlbi14MTEuYwotQEAgLTE2NzUsMyArMTY3NSw4IEBAIGdka194MTFfc2NyZWVuX2dldF9jdXJyZW50X2Rlc2t0b3AgKEdka1NjcmVlbiAqc2NyZWVuKQorQEAgLTE3MjMsMyArMTcyMyw4IEBAIGdka194MTFfc2NyZWVuX2dldF9jdXJyZW50X2Rlc2t0b3AgKEdka1NjcmVlbiAqc2NyZWVuKQogIHsKICAgIHJldHVybiBnZXRfbmV0d21fY2FyZGluYWxfcHJvcGVydHkgKHNjcmVlbiwgIl9ORVRfQ1VSUkVOVF9ERVNLVE9QIik7CiAgfQpAQCAtNTUwLDcgKzU1MSw3IEBACiArdm9pZCBfZ2RrX3gxMV9zY3JlZW5fdXBkYXRlX3Zpc3VhbHNfZm9yX2dsIChHZGtTY3JlZW4gKnNjcmVlbikge30KICsjZW5kaWYKIGRpZmYgLS1naXQgYS9nZGsveDExL2dka3dpbmRvdy14MTEuYyBiL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jCi1pbmRleCBmOTJhMTQ2Li44OWY5MDBhIDEwMDY0NAoraW5kZXggMWZlN2I5MC4uZDIzYTM0NyAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jCiArKysgYi9nZGsveDExL2dka3dpbmRvdy14MTEuYwogQEAgLTM2LDcgKzM2LDkgQEAKQEAgLTU2Myw3ICs1NjQsNyBAQAogICNpbmNsdWRlICJnZGtwcml2YXRlLXgxMS5oIgogICNpbmNsdWRlICJnZGstcHJpdmF0ZS5oIgogIAotQEAgLTU4MzksNyArNTg0MSw5IEBAIGdka193aW5kb3dfaW1wbF94MTFfY2xhc3NfaW5pdCAoR2RrV2luZG93SW1wbFgxMUNsYXNzICprbGFzcykKK0BAIC01ODYxLDcgKzU4NjMsOSBAQCBnZGtfd2luZG93X2ltcGxfeDExX2NsYXNzX2luaXQgKEdka1dpbmRvd0ltcGxYMTFDbGFzcyAqa2xhc3MpCiAgICBpbXBsX2NsYXNzLT5zZXRfb3BhcXVlX3JlZ2lvbiA9IGdka194MTFfd2luZG93X3NldF9vcGFxdWVfcmVnaW9uOwogICAgaW1wbF9jbGFzcy0+c2V0X3NoYWRvd193aWR0aCA9IGdka194MTFfd2luZG93X3NldF9zaGFkb3dfd2lkdGg7CiAgICBpbXBsX2NsYXNzLT5zaG93X3dpbmRvd19tZW51ID0gZ2RrX3gxMV93aW5kb3dfc2hvd193aW5kb3dfbWVudTsKQEAgLTY2NywzMSArNjY4LDIzIEBACiArCiArI2VuZGlmIC8qIF9fR0RLX1hfSF9fICovCiBkaWZmIC0tZ2l0IGEvZ3RrL01ha2VmaWxlLmFtIGIvZ3RrL01ha2VmaWxlLmFtCi1pbmRleCBlNTU2ZTlkLi5jZTkxMmQ3IDEwMDY0NAoraW5kZXggZWFjYTQ3My4uOTkzNTJkMSAxMDA2NDQKIC0tLSBhL2d0ay9NYWtlZmlsZS5hbQogKysrIGIvZ3RrL01ha2VmaWxlLmFtCi1AQCAtMTQ0MSw3ICsxNDQxLDYgQEAgZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5jOiAkKGd0a19wcml2YXRlX3R5cGVfaF9zb3VyY2VzKSAgZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy4KLSAJJiYgY3AgeGdlbi1ncHRiYyBndGtwcml2YXRldHlwZWJ1aWx0aW5zLmMgIFwKLSAJJiYgcm0gLWYgeGdlbi1ncHRiYwotIAotLQotIGd0a3R5cGVmdW5jcy5jOiBzdGFtcC1ndGt0eXBlYnVpbHRpbnMuaCBzdGFtcC1ndGtwcml2YXRldHlwZWJ1aWx0aW5zLmggJCh0b3Bfc3JjZGlyKS9ndGsvKi5oICQodG9wX3NyY2RpcikvZ3RrL2ExMXkvKi5oICQodG9wX3NyY2RpcikvZ3RrL2RlcHJlY2F0ZWQvKi5oICQodG9wX3NyY2RpcikvZ2RrLyouaCBNYWtlZmlsZQotIAkkKEFNX1ZfR0VOKSBleHBvcnQgTENfQUxMPUMgOyBcCi0gCSAgKGVjaG8gJyN1bmRlZiBHVEtfQ09NUElMQVRJT04nICYmIGVjaG8gJyNpbmNsdWRlIDxndGsvZ3RreC5oPicpID4geGdlbi1ndGZzcmMuYyAmJiBcCi1AQCAtMTQ0OSw3ICsxNDQ4LDcgQEAgZ3RrdHlwZWZ1bmNzLmM6IHN0YW1wLWd0a3R5cGVidWlsdGlucy5oIHN0YW1wLWd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuaCAkKHRvcF9zcmMKK0BAIC0xNDQ5LDcgKzE0NDksNyBAQCBndGt0eXBlZnVuY3MuaW5jOiBzdGFtcC1ndGt0eXBlYnVpbHRpbnMuaCBzdGFtcC1ndGtwcml2YXRldHlwZWJ1aWx0aW5zLmggJCh0b3BfcwogIAkgICR7Q1BQfSAkKERFRlMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgeGdlbi1ndGZzcmMuYyB8IFwKICAJICAkKEdSRVApIC1vICdcYmdbdGRda19bYS16QS1aMC05X10qX2dldF90eXBlXGInIHwgXAogIAkgIHNvcnQgfCB1bmlxIHwgXAogLQkgICQoU0VEKSAneyBzL14vKnRwKysgPSAvOyBzLyQkLygpOy87IHMvXi4qXChnZGtfeDExXHxndGtfcGx1Z19cfGd0a19zb2NrZXRfXCkuKiQkLyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMVxuJlxuI2VuZGlmLzsgfScgPj4geGdlbi1ndGYgXAogKwkgICQoU0VEKSAneyBzL14vKnRwKysgPSAvOyBzLyQkLygpOy87IHMvXi4qXChnZGtfeDExXHxndGtfcGx1Z19cfGd0a19zb2NrZXRfXCkuKiQkLyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMVxuJlxuI2VuZGlmLzsgcy9eLipnZGtfeDExX2dsLiokJC8jaWZkZWYgSEFWRV9PUEVOR0xcbiZcbiNlbmRpZi87IH0nID4+IHhnZW4tZ3RmIFwKICAJJiYgY3AgeGdlbi1ndGYgJEAgJiYgcm0gLWYgeGdlbi1ndGYKLSAkKHNyY2RpcikvZ3RrdGVzdHV0aWxzLmM6IGd0a3R5cGVmdW5jcy5jCisgJChzcmNkaXIpL2d0a3Rlc3R1dGlscy5jOiBndGt0eXBlZnVuY3MuaW5jCiAgCiBkaWZmIC0tZ2l0IGEvZ3RrL2d0a2dsYXJlYS5jIGIvZ3RrL2d0a2dsYXJlYS5jCi1pbmRleCBlYTM4M2MwLi5iYjRlYjY0IDEwMDY0NAoraW5kZXggOWE1NjQ0My4uN2RlMGRiMiAxMDA2NDQKIC0tLSBhL2d0ay9ndGtnbGFyZWEuYwogKysrIGIvZ3RrL2d0a2dsYXJlYS5jCi1AQCAtMjgsNyArMjgsOSBAQAorQEAgLTI5LDcgKzI5LDkgQEAKICAjaW5jbHVkZSAiZ3RrcHJpdmF0ZS5oIgogICNpbmNsdWRlICJndGtyZW5kZXIuaCIKICAKQEAgLTcwMSw3ICs2OTQsNyBAQAogIAogIC8qKgogICAqIFNFQ1RJT046Z3RrZ2xhcmVhCi1AQCAtMzY4LDkgKzM3MCwxMiBAQCBndGtfZ2xfYXJlYV9yZWFsX2NyZWF0ZV9jb250ZXh0IChHdGtHTEFyZWEgKmFyZWEpCitAQCAtMzY5LDkgKzM3MSwxMiBAQCBndGtfZ2xfYXJlYV9yZWFsX2NyZWF0ZV9jb250ZXh0IChHdGtHTEFyZWEgKmFyZWEpCiAgc3RhdGljIHZvaWQKICBndGtfZ2xfYXJlYV9yZXNpemUgKEd0a0dMQXJlYSAqYXJlYSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogIHsKQEAgLTcxNCw3ICs3MDcsNyBAQAogIC8qCiAgICogQ3JlYXRlcyBhbGwgdGhlIGJ1ZmZlciBvYmplY3RzIG5lZWRlZCBmb3IgcmVuZGVyaW5nIHRoZSBzY2VuZQogICAqLwotQEAgLTQ4Miw2ICs0ODcsNyBAQCBndGtfZ2xfYXJlYV9hbGxvY2F0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCitAQCAtNDgzLDYgKzQ4OCw3IEBAIGd0a19nbF9hcmVhX2FsbG9jYXRlX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKICAKICAgIHByaXYtPm5lZWRzX3JlbmRlciA9IFRSVUU7CiAgfQpAQCAtNzIyLDcgKzcxNSw3IEBACiAgCiAgLyoqCiAgICogZ3RrX2dsX2FyZWFfYXR0YWNoX2J1ZmZlcnM6Ci1AQCAtNTAwLDYgKzUwNiw3IEBAIGd0a19nbF9hcmVhX2FsbG9jYXRlX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC01MDEsNiArNTA3LDcgQEAgZ3RrX2dsX2FyZWFfYWxsb2NhdGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQogIHZvaWQKICBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQogIHsKQEAgLTczMCw3ICs3MjMsNyBAQAogICAgR3RrR0xBcmVhUHJpdmF0ZSAqcHJpdiA9IGd0a19nbF9hcmVhX2dldF9pbnN0YW5jZV9wcml2YXRlIChhcmVhKTsKICAKICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEdUS19JU19HTF9BUkVBIChhcmVhKSk7Ci1AQCAtNTMyLDExICs1MzksMTMgQEAgZ3RrX2dsX2FyZWFfYXR0YWNoX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC01MzMsMTEgKzU0MCwxMyBAQCBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQogICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCAoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlRfRVhULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkVOREVSQlVGRkVSX0VYVCwgcHJpdi0+ZGVwdGhfc3RlbmNpbF9idWZmZXIpOwogICAgICB9CkBAIC03NDQsNyArNzM3LDcgQEAKICAgIEd0a0dMQXJlYVByaXZhdGUgKnByaXYgPSBndGtfZ2xfYXJlYV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAoYXJlYSk7CiAgCiAgICBpZiAocHJpdi0+Y29udGV4dCA9PSBOVUxMKQotQEAgLTU2OCw2ICs1NzcsNyBAQCBndGtfZ2xfYXJlYV9kZWxldGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQorQEAgLTU2OSw2ICs1NzgsNyBAQCBndGtfZ2xfYXJlYV9kZWxldGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQogICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhUICgxLCAmcHJpdi0+ZnJhbWVfYnVmZmVyKTsKICAgICAgICBwcml2LT5mcmFtZV9idWZmZXIgPSAwOwogICAgICB9CkBAIC03NTIsNyArNzQ1LDcgQEAKICB9CiAgCiAgc3RhdGljIHZvaWQKLUBAIC02NzgsNiArNjg4LDcgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCitAQCAtNjc5LDYgKzY4OSw3IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAogICAgR3RrR0xBcmVhICphcmVhID0gR1RLX0dMX0FSRUEgKHdpZGdldCk7CiAgICBHdGtHTEFyZWFQcml2YXRlICpwcml2ID0gZ3RrX2dsX2FyZWFfZ2V0X2luc3RhbmNlX3ByaXZhdGUgKGFyZWEpOwogICAgZ2Jvb2xlYW4gdW51c2VkOwpAQCAtNzYwLDcgKzc1Myw3IEBACiAgICBpbnQgdywgaCwgc2NhbGU7CiAgICBHTGVudW0gc3RhdHVzOwogIAotQEAgLTY4OSw3ICs3MDAsNiBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKK0BAIC02OTAsNyArNzAxLDYgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9oZWlnaHQgKHdpZGdldCkpOwogICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgfQpAQCAtNzY4LDcgKzc2MSw3IEBACiAgICBpZiAocHJpdi0+Y29udGV4dCA9PSBOVUxMKQogICAgICByZXR1cm4gRkFMU0U7CiAgCi1AQCAtNzM1LDYgKzc0NSwxNCBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKK0BAIC03MzYsNiArNzQ2LDE0IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAogICAgICB9CiAgCiAgICByZXR1cm4gVFJVRTsKQEAgLTgzMSw3ICs4MjQsNyBAQAogICAgaWYgKEdES19JU19XQVlMQU5EX0RJU1BMQVkgKGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpKSkKICAgICAgewogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDdjNWNhOTkuLmU0YTQ1NDYgMTAwNjQ0CitpbmRleCBlZTFlOGI1Li5lNmM2NTAyIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtODAsOCArODAsNiBAQCBub2luc3RfUFJPR1JBTVMgPSAgJChURVNUX1BST0dTKQlcCkBAIC04NjQsMTAgKzg1NywxMCBAQAogIG5vaW5zdF9QUk9HUkFNUyArPSB0ZXN0Zm9yZWlnbgogIGVuZGlmCiBkaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwotaW5kZXggMGIzYTUxOS4uMDdiMDk2ZiAxMDA2NDQKK2luZGV4IDI0NTQwZTMuLmUwZjg2M2EgMTAwNjQ0CiAtLS0gYS90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwogKysrIGIvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMKLUBAIC0xMTUsNyArMTE1LDkgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTExNiw3ICsxMTYsOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ERVZJQ0VfTUFOQUdFUl9DT1JFICYmCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ERVZJQ0VfTUFOQUdFUl9YSTIgJiYKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RJU1BMQVlfTUFOQUdFUiAmJgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9zb3J0LXJlc291cmNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvc29ydC1yZXNvdXJjZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y4NzM3MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvc29ydC1yZXNvdXJjZXMucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorSWYgdGhlIHJlc291cmNlcyBmaWxlIGlzbid0IHNvcnRlZCBpbiBzb21lIHdheSB0aGVuIGxpYmdkay5zbyB3aWxsIGRpZmZlcgorZGVwZW5kaW5nIG9uIHRoZSBpbm9kZSBvcmRlciBvZiB0aGUgcmVzb3VyY2UgZmlsZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2dkay9NYWtlZmlsZS5hbSBiL2dkay9NYWtlZmlsZS5hbQoraW5kZXggZTI1YjU3YmE1MC4uMjZmMmQ1N2M2ZSAxMDA2NDQKKy0tLSBhL2dkay9NYWtlZmlsZS5hbQorKysrIGIvZ2RrL01ha2VmaWxlLmFtCitAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YW1wLWdjLWg6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisgIyBSZXNvdXJjZXMKKyAjCisgCistZ2xzbF9zb3VyY2VzIDo9ICQod2lsZGNhcmQgJChzcmNkaXIpL3Jlc291cmNlcy9nbHNsLyouZ2xzbCkKKytnbHNsX3NvdXJjZXMgOj0gJChzb3J0ICQod2lsZGNhcmQgJChzcmNkaXIpL3Jlc291cmNlcy9nbHNsLyouZ2xzbCkpCisgCisgZ2RrLmdyZXNvdXJjZS54bWw6IE1ha2VmaWxlLmFtCisgCSQoQU1fVl9HRU4pIGVjaG8gIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+IiA+ICRAOyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIxZjg3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC4xNC5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGd0ayszLmluYworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpbmtfZnJpYmlkaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zb3J0LXJlc291cmNlcy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYyZTM5MjEyZmEwYTg0MDE2YTMzOTJhOWQyOTFmYWY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjNGQ2OWY5M2FiODg0ZmQ4MGM2Yjk1MTE1YmZiYzEyZDUxZWNkMDI5MTc4YjZkYWQzNjcyZmRjNWZmOTFlODgiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3OWIxOGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGd0ayszLmluYwotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpbmtfZnJpYmlkaS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImVlZWRkZTAxODU2MjM4MTE0ZGNmNGRmM2ViYzk0MmE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2Njk2MmRlOWI5NzY4ZmU5Y2E3ODViMGUyZjQyYzhiOWRiMzg2OGExMmZhOWIzNTZiMTY3MjM4ZDcwYWM3OTkiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIKaW5kZXggNTBkNGQ5OS4uYjUwOGU2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIKQEAgLTM2LDYgKzM2LDE3IEBACiAgICAgICAgIHNlZCAtaSAtZSAncyxeSkhfQ0hFQ0tfWE1MX0NBVEFMT0cuKiwsJyAke1N9L2NvbmZpZ3VyZS5hYwogfQogCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBjb25maWd1cmUgdmFsdWVzIGZvciBweXRob24zIGFuZCBwa2ctY29uZmlnIGVuY29kZWQgaW4gc2NyaXB0cworICAgIGZvciBmbiBpbiAke2JpbmRpcn0vZ3RrZG9jLWRlcHNjYW4gXAorICAgICAgICAke2JpbmRpcn0vZ3RrZG9jLW1raHRtbDIgXAorICAgICAgICAke2RhdGFkaXJ9L2d0ay1kb2MvcHl0aG9uL2d0a2RvYy9jb25maWcucHk7IGRvIAorICAgICAgICBzZWQgLWUgJ3MsJHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9L3Vzci9iaW4vcGtnLWNvbmZpZywke2JpbmRpcn0vcGtnLWNvbmZpZywnIFwKKyAgICAgICAgICAgIC1lICdzLCR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMywke2JpbmRpcn0vcHl0aG9uMywnIFwKKyAgICAgICAgICAgIC1pICR7RH0kZm4KKyAgICBkb25lCit9CisKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKIEZJTEVTXyR7UE59LWRvYyA9ICIiCkBAIC00OCwzICs1OSw0IEBACiAgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKICAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCiB9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNy5iYgppbmRleCBhYWQ3ZWZmLi43NGUzNDMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiCkBAIC03LDcgKzcsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwOGE0NDY4MDk5MTNmYzliM2M3MThmMGVhZWEwNDI2IgogCi1TUkNfVVJJID0gImh0dHA6Ly9pY29uLXRoZW1lLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSSA9ICJodHRwczovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCiBTUkNfVVJJW21kNXN1bV0gPSAiODRlZWM4ZDZmODEwMjQwYTA2OWM3MzFmMTg3MGI0NzQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzE3NDg0MzUyMjcxZDE4Y2JiY2ZhYzM4NjhlYWI3OThkNjdmZmYxYjg0MDJlNzQwYmFhNmZmNDFkNTg4YTlkOCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnLzAwMDEtUmVtb3ZlLW5vbi1yZXByb2R1Y2libGUtU1JDRElSLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnLzAwMDEtUmVtb3ZlLW5vbi1yZXByb2R1Y2libGUtU1JDRElSLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZmM3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmcvMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiZWE1MTU2Y2Q3ZTcxMjI3MTViMjZjNzY5YzM1OTI4MTQxYTFkYTJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCAxOCBOb3YgMjAxOSAxNDo0NjozNCAtMDYwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgbm9uLXJlcHJvZHVjaWJsZSBTUkNESVIKKworUmVtb3ZlcyBTUkNESVIgYXMgdGhlIHByZWZpeCBmb3IgZmluZGluZyB0aGUgdGVzdCBmb250LiBUaGlzIHdvdWxkbid0Cit3b3JrIGFueXdheSwgc2luY2UgdGhhdCBwYXRoIGlzIG5vdCBwcmVzZW50IG9uIHRoZSB0YXJnZXQuCisKK1RoaXMgcGF0Y2ggaXMgc3BlY2lmaWMgdG8gT0UsIHNpbmNlIGl0IGFwcGVhcnMgdGhhdCB0aGlzIGVudGlyZSBtZXRob2QKK29mIHRlc3Rpbmcgd2FzIHJlbW92ZWQgd2hlbiB1cHN0cmVhbSB3YXMgcmUtd3JpdHRlbiBpbiBydXN0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWMsIG5vIGxvbmdlciBwcmVzZW50IHVwc3RyZWFtXQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgcnN2Zy1jYWlyby1kcmF3LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9yc3ZnLWNhaXJvLWRyYXcuYyBiL3JzdmctY2Fpcm8tZHJhdy5jCitpbmRleCBjYWE5MTA0Li5jZmI3ZWQyIDEwMDY0NAorLS0tIGEvcnN2Zy1jYWlyby1kcmF3LmMKKysrKyBiL3JzdmctY2Fpcm8tZHJhdy5jCitAQCAtMzk4LDcgKzM5OCw3IEBAIHNldF9mb250X29wdGlvbnNfZm9yX3Rlc3RpbmcgKFBhbmdvQ29udGV4dCAqY29udGV4dCkKKyBzdGF0aWMgdm9pZAorIGNyZWF0ZV9mb250X2NvbmZpZ19mb3JfdGVzdGluZyAoUnN2Z0NhaXJvUmVuZGVyICpyZW5kZXIpCisgeworLSAgICBjb25zdCBjaGFyICpmb250X3BhdGggPSBTUkNESVIgIi90ZXN0cy9yZXNvdXJjZXMvTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiOworKyAgICBjb25zdCBjaGFyICpmb250X3BhdGggPSAiL3Rlc3RzL3Jlc291cmNlcy9MaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7CisgCisgICAgIGlmIChyZW5kZXItPmZvbnRfY29uZmlnX2Zvcl90ZXN0aW5nICE9IE5VTEwpCisgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCmluZGV4IDdmOTgxMjcuLjZkZDA1MzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCkBAIC0yMCw2ICsyMCw3IEBACiAKIFNSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUF1dG8tZGV0ZWN0LUJzeW1ib2xpYy1maXhlcy1jb25maWd1cmUtb24tbWFjT1MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW5vbi1yZXByb2R1Y2libGUtU1JDRElSLnBhdGNoIFwKICIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNDk0OWQzMTNiMGM1ZDkxNjFhNWMyNTkxMDRhZjU1NjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTkuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGEyYTRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJzZWNyZXQgaXMgYSBsaWJyYXJ5IGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHBhc3N3b3JkcyBhbmQgb3RoZXIgc2VjcmV0cyIKLURFU0NSSVBUSU9OID0gIkEgR09iamVjdC1iYXNlZCBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIFNlY3JldCBTZXJ2aWNlIEFQSSBvZiBcCi10aGUgZnJlZWRlc2t0b3Aub3JnIHByb2plY3QsIGEgY3Jvc3MtZGVza3RvcCBlZmZvcnQgdG8gYWNjZXNzIHBhc3N3b3JkcywgXAotdG9rZW5zIGFuZCBvdGhlciB0eXBlcyBvZiBzZWNyZXRzLiBsaWJzZWNyZXQgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdyYXBwZXIgXAotZm9yIHRoZXNlIG1ldGhvZHMgc28gY29uc3VtZXJzIGRvIG5vdCBoYXZlIHRvIGNhbGwgdGhlIGxvdy1sZXZlbCBEQnVzIG1ldGhvZHMuIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNlY3JldC9pc3N1ZXMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yM2MyYTVlMDEwNmI5OWQ3NTIzODk4NjU1OWJiNWZjNiIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBtYW5wYWdlcwotCi1ERVBFTkRTICs9ICJnbGliLTIuMCBsaWJnY3J5cHQgZ2V0dGV4dC1uYXRpdmUiCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZWE2NzMxMTljMDA1NzBkNjQzNGY4ZmQzNjM2ZjFlYjgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4NTgzZTEwMTc5NDU2YWUyYzgzMDc1ZDk1NDU1ZjE1NmRjMDhkYjYyNzhiMzJiZjRiZDYxODE5MzM1YTMwZTNhIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOC8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKLQotIyB2YXBpZ2VuLm00IGJ1bmRsZWQgd2l0aCB0aGUgdGFyYmFsbCBkb2VzIG5vdCB5ZXQgaGF2ZSBvdXIgY3Jvc3MtY29tcGlsYXRpb24gZml4ZXMKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHJtIC1mICR7U30vYnVpbGQvbTQvdmFwaWdlbi5tNAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjIwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjUxMWFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjIwLjEuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJsaWJzZWNyZXQgaXMgYSBsaWJyYXJ5IGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHBhc3N3b3JkcyBhbmQgb3RoZXIgc2VjcmV0cyIKK0RFU0NSSVBUSU9OID0gIkEgR09iamVjdC1iYXNlZCBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIFNlY3JldCBTZXJ2aWNlIEFQSSBvZiBcCit0aGUgZnJlZWRlc2t0b3Aub3JnIHByb2plY3QsIGEgY3Jvc3MtZGVza3RvcCBlZmZvcnQgdG8gYWNjZXNzIHBhc3N3b3JkcywgXAordG9rZW5zIGFuZCBvdGhlciB0eXBlcyBvZiBzZWNyZXRzLiBsaWJzZWNyZXQgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdyYXBwZXIgXAorZm9yIHRoZXNlIG1ldGhvZHMgc28gY29uc3VtZXJzIGRvIG5vdCBoYXZlIHRvIGNhbGwgdGhlIGxvdy1sZXZlbCBEQnVzIG1ldGhvZHMuIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNlY3JldC9pc3N1ZXMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yM2MyYTVlMDEwNmI5OWQ3NTIzODk4NjU1OWJiNWZjNiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBtYW5wYWdlcworCitERVBFTkRTICs9ICJnbGliLTIuMCBsaWJnY3J5cHQgZ2V0dGV4dC1uYXRpdmUiCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZDJkZDY2MGE4ZDUwMjA5OTMxN2JjOGFmOWYzMDMwMmUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1N2Y3M2U5NGVjNjI2M2ExN2EwNzdmYjgwOWNmOGNmNDI0NjM3YTg5N2E3ZjE1YjRlZWM0MmNlNGFlZjUyNDQ3IgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOC8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyB2YXBpZ2VuLm00IGJ1bmRsZWQgd2l0aCB0aGUgdGFyYmFsbCBkb2VzIG5vdCB5ZXQgaGF2ZSBvdXIgY3Jvc3MtY29tcGlsYXRpb24gZml4ZXMKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHJtIC1mICR7U30vYnVpbGQvbTQvdmFwaWdlbi5tNAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNi4wLmJiCmluZGV4IGUzZGUzZjYuLmI3NzJjMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTYuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE2LjAuYmIKQEAgLTQwLDcgKzQwLDggQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgeGNiJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ29wZW5nbCcsICcnLCBkKX0iCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ29wZW5nbCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIHRyYWNlIgogCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXg9eWVzIC1lbmFibGUteGxpYiwtLXdpdGgteD1ubyAtLWRpc2FibGUteGxpYiwke1gxMURFUEVORFN9IgogUEFDS0FHRUNPTkZJR1t4Y2JdID0gIi0tZW5hYmxlLXhjYiwtLWRpc2FibGUteGNiLGxpYnhjYiIKQEAgLTQ5LDYgKzUwLDcgQEAKIFBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2w9eWVzLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCiBQQUNLQUdFQ09ORklHW2dsZXN2Ml0gPSAiLS1lbmFibGUtZ2xlc3YyLC0tZGlzYWJsZS1nbGVzdjIsdmlydHVhbC9saWJnbGVzMiIKIFBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbdHJhY2VdID0gIi0tZW5hYmxlLXRyYWNlLC0tZGlzYWJsZS10cmFjZSIKIAogRVhUUkFfT0VDT05GICs9ICIgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS1kaXNhYmxlLXNvbWUtZmxvYXRpbmctcG9pbnQnLCAnJywgZCl9IFwKQEAgLTY2LDYgKzY4LDggQEAKIAlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1zcGhpbngqCiAJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLWZkcioKIAlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tc3BoaW54KgorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2JpbmRpcn0KKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9L2NhaXJvCiB9CiAKIFBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYwppbmRleCA1ZGM0NWViLi5lMGFjODE5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYwpAQCAtMjQsMTEgKzI0LDExIEBACiAjIERpc2FibGUgcHJldHR5IG11Y2ggZXZlcnl0aGluZywgb3ZlcnJpZGUgaW4gcGxhdGZvcm0gc3BlY2lmaWMgc2V0IHVwCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1xdWFydHotYmFja2VuZAlcCiAJICAgICAJIC0tZGlzYWJsZS13aW4zMi1iYWNrZW5kCVwKLQkgICAgIAkgLS1kaXNhYmxlLWdkay1iYWNrZW5kCQlcCiAJICAgICAJIC0tZGlzYWJsZS1jZXgxMDAtYmFja2VuZAlcCiAJICAgICAJIC0tZGlzYWJsZS10c2xpYi1pbnB1dAkJXAogCSAgICAJIgogCitQQUNLQUdFQ09ORklHW2dka10gPSAiLS1lbmFibGUtZ2RrLWJhY2tlbmQsLS1kaXNhYmxlLWdkay1iYWNrZW5kLGd0ayszIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMS1iYWNrZW5kLC0tZGlzYWJsZS14MTEtYmFja2VuZCwke0VERVBFTkRTX1gxMX0iCiBQQUNLQUdFQ09ORklHW2dseF0gPSAiLCwke0VERVBFTkRTX1gxMX0gJHtFREVQRU5EU19HTFh9IgogUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbC1iYWNrZW5kLC0tZGlzYWJsZS1lZ2wtYmFja2VuZCwke0VERVBFTkRTX0VHTH0iCkBAIC0zNyw3ICszNyw3IEBACiBQQUNLQUdFQ09ORklHW3dheWxhbmQtY29tcG9zaXRvcl0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3Isd2F5bGFuZCIKIAogIyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGRpc3Ryb3MgbWlnaHQgd2FudCB0byBvdmVycmlkZQotUEFDS0FHRUNPTkZJRyA/Pz0gImVnbCBcCitQQUNLQUdFQ09ORklHID8/PSAiZWdsIGdkayBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ2x4IHgxMScsICcnLCBkKX0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNkNmM1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL211c2wtaW9jdGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA0NmMwZmQ2YzgyN2E4Y2I0ZDA0ZTA2N2JmMDRmYWI1NzlhYzQ3MTJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMTggSnVuIDIwMTggMTU6MDc6MDMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdHMvbm91dmVhdS90aHJlYWRlZDogYWRhcHQgaW9jdGwgc2lnbmF0dXJlCi0KLVBPU0lYIHNheXMgaW9jdGwoKSBoYXMgdGhlIHNpZ25hdHVyZSAoaW50LCBpbnQsIC4uLikgYnV0IGdsaWJjIGhhcyBkZWNpZGVkIHRvCi11c2UgKGludCwgdW5zaWduZWQgbG9uZyBpbnQsIC4uLikgaW5zdGVhZC4KLQotVXNlIGEgI2lmZGVmIHRvIGFkYXB0IHRoZSByZXBsYWNlbWVudCBmdW5jdGlvbiBhcyBhcHByb3ByaWF0ZS4KLS0tLQotIHRlc3RzL25vdXZlYXUvdGhyZWFkZWQuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYyBiL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYwotaW5kZXggMzY2OWJjZDMuLmUxYzI3YzAxIDEwMDY0NAotLS0tIGEvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jCi0rKysgYi90ZXN0cy9ub3V2ZWF1L3RocmVhZGVkLmMKLUBAIC0zNiw3ICszNiwxMSBAQCBzdGF0aWMgaW50IGZhaWxlZDsKLSAKLSBzdGF0aWMgaW50IGltcG9ydF9mZDsKLSAKLSsjaWZkZWYgX19HTElCQ19fCi0gaW50IGlvY3RsKGludCBmZCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0LCAuLi4pCi0rI2Vsc2UKLStpbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCwgLi4uKQotKyNlbmRpZgotIHsKLSAJdmFfbGlzdCB2YTsKLSAJaW50IHJldDsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1OTQyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC4xMDAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIGtlcm5lbCBEUk0gc2VydmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgcnVudGltZSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIGtlcm5lbCBEUk0gc2VydmljZXMuICBEUk0gXAotc3RhbmRzIGZvciBcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlclwiLCB3aGljaCBpcyB0aGUga2VybmVsIHBvcnRpb24gb2YgdGhlIFwKLVwiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZVwiIChEUkkpLiAgRFJJIGlzIHJlcXVpcmVkIGZvciBtYW55IGhhcmR3YXJlIFwKLWFjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGY4NmRybS5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzI7bWQ1PWM4YTNiOTYxYWY3NjY3YzUzMDgxNjc2MWU5NDlkYzcxIgotUFJPVklERVMgPSAiZHJtIgotREVQRU5EUyA9ICJsaWJwdGhyZWFkLXN0dWJzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL211c2wtaW9jdGwucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiZjQ3YmM4N2UyODE5OGJhNTI3ZTZiNDRmZmRkNjJmNjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc3Y2M4MjgxODZjOWNlZWMzZTU2YWUyMDJiNDNlZTk5ZWI5MzJiNGE4NzI1NTAzOGE4MGU4YTEwNjBkMGE1ZCIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgbWFucGFnZXMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmttcyBpbnRlbCByYWRlb24gYW1kZ3B1IG5vdXZlYXUgdm13Z2Z4IG9tYXAgZnJlZWRyZW5vIHZjNCBldG5hdml2IGluc3RhbGwtdGVzdC1wcm9ncmFtcyIKLVBBQ0tBR0VDT05GSUdbbGlia21zXSA9ICItRGxpYmttcz10cnVlLC1EbGlia21zPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tpbnRlbF0gPSAiLURpbnRlbD10cnVlLC1EaW50ZWw9ZmFsc2UsbGlicGNpYWNjZXNzIgotUEFDS0FHRUNPTkZJR1tyYWRlb25dID0gIi1EcmFkZW9uPXRydWUsLURyYWRlb249ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2FtZGdwdV0gPSAiLURhbWRncHU9dHJ1ZSwtRGFtZGdwdT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbm91dmVhdV0gPSAiLURub3V2ZWF1PXRydWUsLURub3V2ZWF1PWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2bXdnZnhdID0gIi1Edm13Z2Z4PXRydWUsLUR2bXdnZng9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW29tYXBdID0gIi1Eb21hcD10cnVlLC1Eb21hcD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZXh5bm9zXSA9ICItRGV4eW5vcz10cnVlLC1EZXh5bm9zPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tmcmVlZHJlbm9dID0gIi1EZnJlZWRyZW5vPXRydWUsLURmcmVlZHJlbm89ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3RlZ3JhXSA9ICItRHRlZ3JhPXRydWUsLUR0ZWdyYT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdmM0XSA9ICItRHZjND10cnVlLC1EdmM0PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tldG5hdml2XSA9ICItRGV0bmF2aXY9dHJ1ZSwtRGV0bmF2aXY9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ZyZWVkcmVuby1rZ3NsXSA9ICItRGZyZWVkcmVuby1rZ3NsPXRydWUsLURmcmVlZHJlbm8ta2dzbD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EdmFsZ3JpbmQ9dHJ1ZSwtRHZhbGdyaW5kPWZhbHNlLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tpbnN0YWxsLXRlc3QtcHJvZ3JhbXNdID0gIi1EaW5zdGFsbC10ZXN0LXByb2dyYW1zPXRydWUsLURpbnN0YWxsLXRlc3QtcHJvZ3JhbXM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2NhaXJvLXRlc3RzXSA9ICItRGNhaXJvLXRlc3RzPXRydWUsLURjYWlyby10ZXN0cz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLUR1ZGV2PXRydWUsLUR1ZGV2PWZhbHNlLHVkZXYiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbi1wYWdlcz10cnVlLC1EbWFuLXBhZ2VzPWZhbHNlLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotQUxMT1dfRU1QVFlfJHtQTn0tZHJpdmVycyA9ICIxIgotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzICR7UE59LWRyaXZlcnMgJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCBcCi0gICAgICAgICAgICAgJHtQTn0taW50ZWwgJHtQTn0tZXh5bm9zICR7UE59LWttcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgotCi1SUkVDT01NRU5EU18ke1BOfS1kcml2ZXJzID0gIiR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgJHtQTn0taW50ZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1leHlub3MgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcmFkZW9uID0gIiR7bGliZGlyfS9saWJkcm1fcmFkZW9uLnNvLioiCi1GSUxFU18ke1BOfS1ub3V2ZWF1ID0gIiR7bGliZGlyfS9saWJkcm1fbm91dmVhdS5zby4qIgotRklMRVNfJHtQTn0tb21hcCA9ICIke2xpYmRpcn0vbGliZHJtX29tYXAuc28uKiIKLUZJTEVTXyR7UE59LWludGVsID0gIiR7bGliZGlyfS9saWJkcm1faW50ZWwuc28uKiIKLUZJTEVTXyR7UE59LWV4eW5vcyA9ICIke2xpYmRpcn0vbGliZHJtX2V4eW5vcy5zby4qIgotRklMRVNfJHtQTn0ta21zID0gIiR7bGliZGlyfS9saWJrbXMqLnNvLioiCi1GSUxFU18ke1BOfS1mcmVlZHJlbm8gPSAiJHtsaWJkaXJ9L2xpYmRybV9mcmVlZHJlbm8uc28uKiIKLUZJTEVTXyR7UE59LWFtZGdwdSA9ICIke2xpYmRpcn0vbGliZHJtX2FtZGdwdS5zby4qICR7ZGF0YWRpcn0vJHtQTn0vYW1kZ3B1LmlkcyIKLUZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM1NjZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAxLmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCitzdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAorXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAorYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gIngxMS9iYXNlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCitQUk9WSURFUyA9ICJkcm0iCitERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNmE2ZjFiODg5NjMyMTBiM2Q2MmFjZDczMTBhMWNjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGYzMWJhYThlNDk0NzM2MjQ4NjBiZDE2NmNlNjU0ZGMzNDk4NzNmN2E2YzdiMzMwNTk2NDI0OTMxNWM3OGE3IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHID8/PSAibGlia21zIGludGVsIHJhZGVvbiBhbWRncHUgbm91dmVhdSB2bXdnZnggb21hcCBmcmVlZHJlbm8gdmM0IGV0bmF2aXYgaW5zdGFsbC10ZXN0LXByb2dyYW1zIgorUEFDS0FHRUNPTkZJR1tsaWJrbXNdID0gIi1EbGlia21zPXRydWUsLURsaWJrbXM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ludGVsXSA9ICItRGludGVsPXRydWUsLURpbnRlbD1mYWxzZSxsaWJwY2lhY2Nlc3MiCitQQUNLQUdFQ09ORklHW3JhZGVvbl0gPSAiLURyYWRlb249dHJ1ZSwtRHJhZGVvbj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbYW1kZ3B1XSA9ICItRGFtZGdwdT10cnVlLC1EYW1kZ3B1PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tub3V2ZWF1XSA9ICItRG5vdXZlYXU9dHJ1ZSwtRG5vdXZlYXU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Ztd2dmeF0gPSAiLUR2bXdnZng9dHJ1ZSwtRHZtd2dmeD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbb21hcF0gPSAiLURvbWFwPXRydWUsLURvbWFwPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tleHlub3NdID0gIi1EZXh5bm9zPXRydWUsLURleHlub3M9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ZyZWVkcmVub10gPSAiLURmcmVlZHJlbm89dHJ1ZSwtRGZyZWVkcmVubz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGVncmFdID0gIi1EdGVncmE9dHJ1ZSwtRHRlZ3JhPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YzRdID0gIi1EdmM0PXRydWUsLUR2YzQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2V0bmF2aXZdID0gIi1EZXRuYXZpdj10cnVlLC1EZXRuYXZpdj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZnJlZWRyZW5vLWtnc2xdID0gIi1EZnJlZWRyZW5vLWtnc2w9dHJ1ZSwtRGZyZWVkcmVuby1rZ3NsPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD10cnVlLC1EdmFsZ3JpbmQ9ZmFsc2UsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2luc3RhbGwtdGVzdC1wcm9ncmFtc10gPSAiLURpbnN0YWxsLXRlc3QtcHJvZ3JhbXM9dHJ1ZSwtRGluc3RhbGwtdGVzdC1wcm9ncmFtcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbY2Fpcm8tdGVzdHNdID0gIi1EY2Fpcm8tdGVzdHM9dHJ1ZSwtRGNhaXJvLXRlc3RzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItRHVkZXY9dHJ1ZSwtRHVkZXY9ZmFsc2UsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuLXBhZ2VzPXRydWUsLURtYW4tcGFnZXM9ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitBTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKKyAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCisKK1JSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKK0ZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCitGSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgorRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgorRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCitGSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKK0ZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgorRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLiogJHtkYXRhZGlyfS8ke1BOfS9hbWRncHUuaWRzIgorRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi4xMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi4xMC4xLmJiCmluZGV4IGIxNzlhMGUuLmQxYzA5MzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuMTAuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjEwLjEuYmIKQEAgLTI3LDcgKzI3LDcgQEAKIENPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCiBFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIgcGl4bWFwIgogCiBQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgogIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3LzAwMDEtRml4ZWQtY29tcGlsYXRpb24td2l0aC1jdXJyZW50LW1lc2EtdmVyc2lvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXcvMDAwMS1GaXhlZC1jb21waWxhdGlvbi13aXRoLWN1cnJlbnQtbWVzYS12ZXJzaW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmM2UyZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXcvMDAwMS1GaXhlZC1jb21waWxhdGlvbi13aXRoLWN1cnJlbnQtbWVzYS12ZXJzaW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb20gN2Y2NWEzNjg2NmY0ZTI0ZGQxNDQ2ZmUxYzlkMjE0MjRmMjhiY2FiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERldmUgPGRldmVlZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE0IE5vdiAyMDE4IDIxOjA3OjI5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGNvbXBpbGF0aW9uIHdpdGggY3VycmVudCBtZXNhIHZlcnNpb25zLgotCi1BcyB5b3UgY2FuIHNlZSBpbgotaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvdHJlZS9pbmNsdWRlL0dML2dsZXh0LmgKLW5vdyB0aGUgZmlsZSB1c2VzIF9fZ2xfZ2xleHRfaF8gaW5zdGVhZCBvZiBfX2dsZXh0X2hfCi1JdCdzIHByZWNpc2VseSBjYXVzZWQgYnkgY29tbWl0IGY3ZDQyZWU3ZDMxOTI1NjYwOGFkNjA3NzhmNjc4N2MxNDBiYWRhZGEKLQotQmFja29wcnQgbm90ZXM6IAotCi0qIFRoZSBvcmlnaW5hbCBwYXRjaCBhZGp1c3RzIGF1dG8vc3JjL2dsZXdfaGVhZC5oIG9ubHkKLSogaW5jbHVkZS9HTC9nbGV3LmggaXMgbm90IHBhcnQgb2YgZ2l0IHJlcG8gYW5kIGdldHMgY3JlYXRlZCBvbiB0YXJiYWxsCi0gIGNyZWF0aW9uCi0KLT0+IHBhdGNoIGluY2x1ZGUvR0wvZ2xldy5oIGVpdGhlciB0byBjYXVzZSB0aGUgZGVzaXJlZCBmaXgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMV0KLQotWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWdlbHMtY29tL2dsZXcvY29tbWl0LzdmNjVhMzY4NjZmNGUyNGRkMTQ0NmZlMWM5ZDIxNDI0ZjI4YmNhYmQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KLS0tLQotIGF1dG8vc3JjL2dsZXdfaGVhZC5oIHwgMyArKy0KLSBpbmNsdWRlL0dML2dsZXcuaCAgICB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvL3NyYy9nbGV3X2hlYWQuaCBiL2F1dG8vc3JjL2dsZXdfaGVhZC5oCi1pbmRleCBjMTljZWZiLi44ZjMxM2Q5IDEwMDY0NAotLS0tIGEvYXV0by9zcmMvZ2xld19oZWFkLmgKLSsrKyBiL2F1dG8vc3JjL2dsZXdfaGVhZC5oCi1AQCAtMTQsNyArMTQsNyBAQAotICNpZiBkZWZpbmVkKF9fUkVHQUxfSF9fKQotICNlcnJvciBSZWdhbC5oIGluY2x1ZGVkIGJlZm9yZSBnbGV3LmgKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pCi0rI2lmIGRlZmluZWQoX19nbGV4dF9oXykgfHwgZGVmaW5lZChfX0dMRVhUX0hfKSB8fCBkZWZpbmVkKF9fZ2xfZ2xleHRfaF8pCi0gI2Vycm9yIGdsZXh0LmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fZ2xfQVRJX2hfKQotQEAgLTMwLDYgKzMwLDcgQEAKLSAjZGVmaW5lIF9fWF9HTF9ICi0gI2RlZmluZSBfX2dsZXh0X2hfCi0gI2RlZmluZSBfX0dMRVhUX0hfCi0rI2RlZmluZSBfX2dsX2dsZXh0X2hfCi0gI2RlZmluZSBfX2dsX0FUSV9oXwotIAotICNpZiBkZWZpbmVkKF9XSU4zMikKLWRpZmYgLS1naXQgYS9pbmNsdWRlL0dML2dsZXcuaCBiL2luY2x1ZGUvR0wvZ2xldy5oCi1pbmRleCBiNWI2OTg3Li5hOWY5ZTRiIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9HTC9nbGV3LmgKLSsrKyBiL2luY2x1ZGUvR0wvZ2xldy5oCi1AQCAtOTMsNyArOTMsNyBAQAotICNpZiBkZWZpbmVkKF9fUkVHQUxfSF9fKQotICNlcnJvciBSZWdhbC5oIGluY2x1ZGVkIGJlZm9yZSBnbGV3LmgKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pCi0rI2lmIGRlZmluZWQoX19nbGV4dF9oXykgfHwgZGVmaW5lZChfX0dMRVhUX0hfKSB8fCBkZWZpbmVkKF9fZ2xfZ2xleHRfaF8pCi0gI2Vycm9yIGdsZXh0LmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fZ2xfQVRJX2hfKQotQEAgLTEwOSw2ICsxMDksNyBAQAotICNkZWZpbmUgX19YX0dMX0gKLSAjZGVmaW5lIF9fZ2xleHRfaF8KLSAjZGVmaW5lIF9fR0xFWFRfSF8KLSsjZGVmaW5lIF9fZ2xfZ2xleHRfaF8KLSAjZGVmaW5lIF9fZ2xfQVRJX2hfCi0gCi0gI2lmIGRlZmluZWQoX1dJTjMyKQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmY0MzQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKSBpcyBhIGNyb3NzLXBsYXRmb3JtIG9wZW4tc291cmNlIEMvQysrIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dsZXcuc291cmNlZm9yZ2UubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD02NzU4NiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLWNvbXBpbGF0aW9uLXdpdGgtY3VycmVudC1tZXNhLXZlcnNpb25zLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJhYjEyMzMxMDMzZGRmYWE1MGRjMzkzNDUzNDM5ODAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkZTkxZTdlNjc2MzAzOWJjMTE5NDAwOTVjZDljN2Y4ODBiYWJhODIxOTZhNzc2NWY3MjdhYzA1YTk5M2M5NSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnb3BlbmdsJywgJ2VnbC1nbGVzMicsIGQpfSIKLQotIyBUaGUgb3BlbmdsIGFuZCBlZ2wtWFhYIG9wdGlvbnMgYXJlIGV4Y2x1c2l2ZSwgZW5hYmxlIG9ubHkgb25lLgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIlNZU1RFTT0nbGludXgnLCx2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSIKLVBBQ0tBR0VDT05GSUdbZWdsLWdsZXMyXSA9ICJTWVNURU09J2xpbnV4LWVnbCcgR0xFV19OT19HTFU9Jy1ER0xFV19OT19HTFUnIExERkxBR1MuR0w9Jy1sRUdMIC1sR0xFU3YyJywsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotIyBPdmVycmlkZSBTWVNURU0gKHZpYSBQQUNLQUdFQ09ORklHX0NPTkZBUkdTKSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywKLSMgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiBQYXNzIG91ciBDRkxBR1MgdmlhIFBPUFQgYXMgdGhhdCdzIHRoZSBvcHRpbWlzYXRpb24KLSMgdmFyaWFibGUgYW5kIHNhZmVseSBvdmVyd3JpdHRlbi4KLUVYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLSAgICAgICAgICAgICAgICBDQz0nJHtDQ30nIExEPScke0NDfScgU1RSSVA9JycgXAotICAgICAgICAgICAgICAgIExERkxBR1MuRVhUUkE9JyR7TERGTEFHU30nIFwKLSAgICAgICAgICAgICAgICBQT1BUPScke0NGTEFHU30nIFwKLSAgICAgICAgICAgICAgICBHTEVXX1BSRUZJWD0nJHtwcmVmaXh9JyBCSU5ESVI9JyR7YmluZGlyfScgXAotICAgICAgICAgICAgICAgIExJQkRJUj0nJHtsaWJkaXJ9JyBJTkNESVI9JyR7aW5jbHVkZWRpcn0vR0wnIFBLR0RJUj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZyciCi0KLWRvX2NvbXBpbGUoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC5hbGwKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTQ4NDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMi4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKSBpcyBhIGNyb3NzLXBsYXRmb3JtIG9wZW4tc291cmNlIEMvQysrIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dsZXcuc291cmNlZm9yZ2UubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD02NzU4NiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1NzkxNjRiY2NhZWYwOWUzNmMwYWY3ZjRmZDVjN2M3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0ZmM4Mjg5M2NmYjAwMTA5NTc4ZDBhMWEyMzM3ZmI4Y2EzMzViM2NlY2NmOTdiOTdlNWNjN2YwOGU0MzUzZTEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dsZXcvZmlsZXMvZ2xldyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9nbGV3Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK2luaGVyaXQgbGliX3BhY2thZ2UgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ29wZW5nbCcsICdlZ2wtZ2xlczInLCBkKX0iCisKKyMgVGhlIG9wZW5nbCBhbmQgZWdsLVhYWCBvcHRpb25zIGFyZSBleGNsdXNpdmUsIGVuYWJsZSBvbmx5IG9uZS4KK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICJTWVNURU09J2xpbnV4JywsdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJnbHUgbGlieGV4dCBsaWJ4aSBsaWJ4bXUsLCxlZ2wtZ2xlczIiCitQQUNLQUdFQ09ORklHW2VnbC1nbGVzMl0gPSAiU1lTVEVNPSdsaW51eC1lZ2wnIEdMRVdfTk9fR0xVPSctREdMRVdfTk9fR0xVJyBMREZMQUdTLkdMPSctbEVHTCAtbEdMRVN2MicsLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIsLCxvcGVuZ2wiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKyMgT3ZlcnJpZGUgU1lTVEVNICh2aWEgUEFDS0FHRUNPTkZJR19DT05GQVJHUykgdG8gYXZvaWQgY2FsbGluZyBjb25maWcuZ3Vlc3MsCisjIHdlJ3JlIGNyb3NzLWNvbXBpbGluZy4gUGFzcyBvdXIgQ0ZMQUdTIHZpYSBQT1BUIGFzIHRoYXQncyB0aGUgb3B0aW1pc2F0aW9uCisjIHZhcmlhYmxlIGFuZCBzYWZlbHkgb3ZlcndyaXR0ZW4uCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCisgICAgICAgICAgICAgICAgQ0M9JyR7Q0N9JyBMRD0nJHtDQ30nIFNUUklQPScnIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTLkVYVFJBPScke0xERkxBR1N9JyBcCisgICAgICAgICAgICAgICAgUE9QVD0nJHtDRkxBR1N9JyBcCisgICAgICAgICAgICAgICAgR0xFV19QUkVGSVg9JyR7cHJlZml4fScgQklORElSPScke2JpbmRpcn0nIFwKKyAgICAgICAgICAgICAgICBMSUJESVI9JyR7bGliZGlyfScgSU5DRElSPScke2luY2x1ZGVkaXJ9L0dMJyBQS0dESVI9JyR7bGliZGlyfS9wa2djb25maWcnIgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwuYWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjg1NGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9ODE4NGJjYzdjNGFjN2I5ZWRjNmE3YmMwMGYyMzFkMGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PTdlYTk3ZGM4M2IwZjU5MDUyZWU4MzdlNjFlZjBlMDhmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YzU5ZTE5ODExYzAwNmNiMzhmODJkNjQ3NzEzNGQzMTQgXAotIgotREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJqcGVnLXR1cmJvLWZpeC1wYWNrYWdlX3FhLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmQwN2ZkZGYyNmY5ZGVmN2JhYjAyNzM5ZWI2NTUxMTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDI0NmRlNTAwNTQ0ZDRlZTQwOGVlNTcwNDhhYTRhYWRjNmYxNjVmYzE3ZjE0MWRhODc2NjlmMjBlZDMyNDFiNyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUEU9ICIxIgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi0jIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1EV0lUSF9TSU1EPUZhbHNlIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfU0lNRD1GYWxzZSIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHgzMiBBQkkgc3VwcG9ydAotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgIiIsIGQpfSIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCAiIiwgZCl9IgotCi0jIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItRFdJVEhfU0lNRD1GYWxzZSIsIGQpfSIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgZCl9IgotCi1ERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kX2FybXY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCi1ERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kX2FybXY1ID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCi0KLVBBQ0tBR0VTID0rICJqcGVnLXRvb2xzIGxpYnR1cmJvanBlZyIKLQotREVTQ1JJUFRJT05fanBlZy10b29scyA9ICJUaGUganBlZy10b29scyBwYWNrYWdlIGluY2x1ZGVzIGNsaWVudCBwcm9ncmFtcyB0byBhY2Nlc3MgbGlianBlZyBmdW5jdGlvbmFsaXR5LiAgVGhlc2UgdG9vbHMgYWxsb3cgZm9yIHRoZSBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2lvbiwgdHJhbnNmb3JtYXRpb24gYW5kIGRpc3BsYXkgb2YgSlBFRyBmaWxlcyBhbmQgYmVuY2htYXJraW5nIG9mIHRoZSBsaWJqcGVnIGxpYnJhcnkuIgotRklMRVNfanBlZy10b29scyA9ICIke2JpbmRpcn0vKiIKLQotREVTQ1JJUFRJT05fbGlidHVyYm9qcGVnID0gIkEgU0lNRC1hY2NlbGVyYXRlZCBKUEVHIGNvZGVjIHdoaWNoIHByb3ZpZGVzIG9ubHkgVHVyYm9KUEVHIEFQSXMiCi1GSUxFU19saWJ0dXJib2pwZWcgPSAiJHtsaWJkaXJ9L2xpYnR1cmJvanBlZy5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY0OWZkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuNC5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT04MTg0YmNjN2M0YWM3YjllZGM2YTdiYzAwZjIzMWQwYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9N2VhOTdkYzgzYjBmNTkwNTJlZTgzN2U2MWVmMGUwOGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1jNTllMTk4MTFjMDA2Y2IzOGY4MmQ2NDc3MTM0ZDMxNCBcCisiCitERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMDFkOWUwYzI4YzI3YmMwZGU5ZjRlMmU4ZmY0OTg1NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzM2RkODU0N2VmZDU1NDM2MzllODkwZWZiZjJlZjUyZDVhMjFkZjgxZmFmNDFiYjk0MDY1N2FmOTE2YTIzNDA2IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKK2V4cG9ydCBOQVNNRU5WID0gIi0tZGVidWctcHJlZml4LW1hcD0ke1dPUktESVJ9PS91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0iCisKKyMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX1NJTUQ9RmFsc2UiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9TSU1EPUZhbHNlIgorCisjIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0CitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCAiIiwgZCl9IgorCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgZCl9IgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCisKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKKworUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgorCitERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCitGSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgorCitERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKK0ZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCmluZGV4IDgyNzIwMDQuLmExYTI5NWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgpAQCAtNiw3ICs2LDcgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8va21zY3ViZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PThiMzA5ZDRlZTY3YjczMTVmZjczODEyNzBkZDYzMWZiIgogCi1TUkNSRVYgPSAiZjYzMmIyM2E1MjhlZDZiNGUxZmRkZDc3NGRiMDA1YzMwYWI2NTU2OCIKK1NSQ1JFViA9ICI3NmJiNTdkNTM5Y2I0M2QyNjdlNTYxMDI0YzM0ZTAzMWJmMzUxZTA0IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL21lc2Eva21zY3ViZTticmFuY2g9bWFzdGVyO3Byb3RvY29sPWh0dHBzIFwKICAgICBmaWxlOi8vZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2giCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9maWxlcy8wMDAxLWRpc3BhdGNoX2NvbW1vbi5oLWRlZmluZS1hbHNvLUVHTF9OT19YMTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9maWxlcy8wMDAxLWRpc3BhdGNoX2NvbW1vbi5oLWRlZmluZS1hbHNvLUVHTF9OT19YMTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI2Mjk0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2ZpbGVzLzAwMDEtZGlzcGF0Y2hfY29tbW9uLmgtZGVmaW5lLWFsc28tRUdMX05PX1gxMS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDZmMTVjYzI4ZDE3Y2ZkZDg2ZjU5NzRmMDZhZDk3YjhhZmVkZDU2MjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI1IE9jdCAyMDE5IDExOjA5OjM0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpc3BhdGNoX2NvbW1vbi5oOiBkZWZpbmUgYWxzbyBFR0xfTk9fWDExCisKK01FU0FfRUdMX05PX1gxMV9IRUFERVJTIHdhcyByZW5hbWVkIHRvIEVHTF9OT19YMTEgaW46CitodHRwczovL2dpdGh1Yi5jb20vbWVzYTNkL21lc2EvY29tbWl0LzYyMDJhMTNiNzFlMThkYzMxYmE3ZTJmNGVhOTE1YjY3ZWFjYzFkZGIKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvZGlzcGF0Y2hfY29tbW9uLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9kaXNwYXRjaF9jb21tb24uaCBiL3NyYy9kaXNwYXRjaF9jb21tb24uaAoraW5kZXggZGNiM2EzNS4uYzIwNjI1MyAxMDA2NDQKKy0tLSBhL3NyYy9kaXNwYXRjaF9jb21tb24uaAorKysrIGIvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oCitAQCAtNTIsNiArNTIsNyBAQAorICAqIHNob3VsZCBkbyB0aGUgc2FtZQorICAqLworICMgIGRlZmluZSBNRVNBX0VHTF9OT19YMTFfSEVBREVSUyAxCisrIyAgZGVmaW5lIEVHTF9OT19YMTEgMQorICMgZW5kaWYKKyAjaW5jbHVkZSAiZXBveHkvZWdsLmgiCisgI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWEyYzkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJJdCBoaWRlcyB0aGUgY29tcGxleGl0eSBvZiBkbG9wZW4oKSwgZGxzeW0oKSwgXAotZ2xYR2V0UHJvY0FkZHJlc3MoKSwgZWdsR2V0UHJvY0FkZHJlc3MoKSwgZXRjLiBmcm9tIHRoZSBhcHAgZGV2ZWxvcGVyLCB3aXRoIFwKLXZlcnkgbGl0dGxlIGtub3dsZWRnZSBuZWVkZWQgb24gdGhlaXIgcGFydC4gVGhleSBnZXQgdG8gcmVhZCBHTCBzcGVjcyBhbmQgXAotd3JpdGUgY29kZSB1c2luZyB1bmRlY29yYXRlZCBmdW5jdGlvbiBuYW1lcyBsaWtlIGdsQ29tcGlsZVNoYWRlcigpLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMjg0NWRlOGQyNzgyYjJkMzFjMDFhZThkN2NkNGNiYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDI5NThjNTUyODMyMWVkZDUzNDQwMjM1ZDNjNDRlNzFiNWIxZTA5YjkxNzdlOGRhZjY3NzQ1MGI2YzQ0MzNkIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcmVsZWFzZXMiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLURlZ2w9eWVzLCAtRGVnbD1ubywgdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURnbHg9eWVzLCAtRGdseD1ubyAtRHgxMT1mYWxzZSwgdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gZWdsIgotCi1FWFRSQV9PRU1FU09OICs9ICItRHRlc3RzPWZhbHNlIgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJlZ2wgeDExIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiZWdsIHgxMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBkbG9wZW4gd2lsbCBhdHRlbXB0IG9ubHkgR0wgbGlicmFyaWVzIHByb3ZpZGVkIGJ5IGhvc3QKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vKi5zbwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtsaWJkaXJ9Lyouc28KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY5ODY3NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS40LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSXQgaGlkZXMgdGhlIGNvbXBsZXhpdHkgb2YgZGxvcGVuKCksIGRsc3ltKCksIFwKK2dsWEdldFByb2NBZGRyZXNzKCksIGVnbEdldFByb2NBZGRyZXNzKCksIGV0Yy4gZnJvbSB0aGUgYXBwIGRldmVsb3Blciwgd2l0aCBcCit2ZXJ5IGxpdHRsZSBrbm93bGVkZ2UgbmVlZGVkIG9uIHRoZWlyIHBhcnQuIFRoZXkgZ2V0IHRvIHJlYWQgR0wgc3BlY3MgYW5kIFwKK3dyaXRlIGNvZGUgdXNpbmcgdW5kZWNvcmF0ZWQgZnVuY3Rpb24gbmFtZXMgbGlrZSBnbENvbXBpbGVTaGFkZXIoKS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OGVmNGM4MGQ0MDFlMDdiZDllZThiNmI1OGNmNDY0YiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNwYXRjaF9jb21tb24uaC1kZWZpbmUtYWxzby1FR0xfTk9fWDExLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjAwZjQ3YWQ0NDczMjFmOWRjNTlmODViYzFjOWQwNDY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiZDJjYzY4MWRmZWZmZGVmNzM5Y2IyOTkxM2Y4YzNjYWE0N2E4OGE0NTFmZDJiYzZlNjA2YzAyOTk3Mjg5ZDIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vIC1EeDExPWZhbHNlLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImVnbCB4MTEiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJlZ2wgeDExIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGRsb3BlbiB3aWxsIGF0dGVtcHQgb25seSBHTCBsaWJyYXJpZXMgcHJvdmlkZWQgYnkgaG9zdAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNocnBhdGggLS1kZWxldGUgJHtEfSR7bGliZGlyfS8qLnNvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vKi5zbworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLUZpeGVkLWJ1Zy00NTM4LXZhbGlkYXRlLWltYWdlLXNpemUtd2hlbi1sb2FkaW5nLUJNUC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NGRlY2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gODUxMzhjMWVjNjczZTA1MjYzYWU2NjZiYWY2MWY3OTM4NGRhZjdlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNhbSBMYW50aW5nYSA8c2xvdWtlbkBsaWJzZGwub3JnPgotRGF0ZTogVHVlLCAzMCBKdWwgMjAxOSAxMTowMDowMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBidWcgNDUzOCAtIHZhbGlkYXRlIGltYWdlIHNpemUgd2hlbiBsb2FkaW5nIEJNUCBmaWxlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9oZy5saWJzZGwub3JnL1NETC9yZXYvZTdiYTY1MGE2NDNhXQotCi1DVkU6IENWRS0yMDE5LTEzNjE2Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy92aWRlby9TRExfYm1wLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3ZpZGVvL1NETF9ibXAuYyBiL3NyYy92aWRlby9TRExfYm1wLmMKLWluZGV4IDBiNjg5MTguLmEwNmIwYzkgMTAwNjQ0Ci0tLS0gYS9zcmMvdmlkZW8vU0RMX2JtcC5jCi0rKysgYi9zcmMvdmlkZW8vU0RMX2JtcC5jCi1AQCAtMjI2LDYgKzIyNiwxMSBAQCBTRExfTG9hZEJNUF9SVyhTRExfUldvcHMgKiBzcmMsIGludCBmcmVlc3JjKQotICAgICAgICAgICAgIFNETF9SV3NlZWsoc3JjLCAoYmlTaXplIC0gaGVhZGVyU2l6ZSksIFJXX1NFRUtfQ1VSKTsKLSAgICAgICAgIH0KLSAgICAgfQotKyAgICBpZiAoYmlXaWR0aCA8PSAwIHx8IGJpSGVpZ2h0ID09IDApIHsKLSsgICAgICAgIFNETF9TZXRFcnJvcigiQk1QIGZpbGUgd2l0aCBiYWQgZGltZW5zaW9ucyAoJWR4JWQpIiwgYmlXaWR0aCwgYmlIZWlnaHQpOwotKyAgICAgICAgd2FzX2Vycm9yID0gU0RMX1RSVUU7Ci0rICAgICAgICBnb3RvIGRvbmU7Ci0rICAgIH0KLSAgICAgaWYgKGJpSGVpZ2h0IDwgMCkgewotICAgICAgICAgdG9wRG93biA9IFNETF9UUlVFOwotICAgICAgICAgYmlIZWlnaHQgPSAtYmlIZWlnaHQ7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYnVpbGQtZGlyLXdoZW4tYnVpbGRpbmctdmVyc2lvbi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWJ1aWxkLWRpci13aGVuLWJ1aWxkaW5nLXZlcnNpb24tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzgzYmQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYnVpbGQtZGlyLXdoZW4tYnVpbGRpbmctdmVyc2lvbi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEFudWogTWl0dGFsIDxhbS5kZXZlbEBnbWFpbC5jb20+Ci0jIERhdGUgMTU3MzYzMTQ2MiAtMTA4MDAKLSMgTm9kZSBJRCAxZmIxODgwZDVlZGZjN2M1YTM3MDg0NmUxM2Y5MGIyNjAyNjM2MjdjCi0jIFBhcmVudCAgMDA3MDAyNTg3ZDVkMzRkNzgxYzJiNjI4YzA1ZTk5MmUwYWM1ZjUyZAotY29uZmlndXJlOiBjaGVjayBmb3IgYnVpbGQgZGlyIHdoZW4gYnVpbGRpbmcgdmVyc2lvbiByZXMgKGZpeCBidWcgIzQ4NTgpCi1GaXhlcyBhIHJhY2Ugd2hlcmUgd2UgdHJ5IHRvIGJ1aWxkIHZlcnNpb24gcmVzIGZpbGUgaW4gYnVpbGQgZGlyZWN0b3J5Ci1iZWZvcmUgaXQgaGFzIGV2ZW4gYmVlbiBjcmVhdGVkLiBQcmV2ZW50cyBlcnJvcnMgbGlrZToKLQotL2Jpbi9iYXNoIC4uL1NETDItMi4wLjEwL2J1aWxkLXNjcmlwdHMvdXBkYXRlcmV2LnNoCi0vYmluL2Jhc2ggLi4vU0RMMi0yLjAuMTAvYnVpbGQtc2NyaXB0cy9ta2luc3RhbGxkaXJzIGJ1aWxkCi1ta2RpciAtcCAtLSBidWlsZAoteDg2XzY0LXBva3lzZGstbWluZ3czMi13aW5kcmVzIC0taW5jbHVkZS1kaXI9L2hvbWUvcG9reWJ1aWxkL3lvY3RvLXdvcmtlci9tZXRhLW1pbmd3L2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIvbmF0aXZlc2RrLWxpYnNkbDIvMi4wLjEwLXIwL3JlY2lwZS1zeXNyb290L29wdC9wb2t5LzMuMC9zeXNyb290cy94ODZfNjQtcG9reXNkay1taW5ndzMyL3Vzci9pbmNsdWRlIC4uL1NETDItMi4wLjEwL3NyYy9tYWluL3dpbmRvd3MvdmVyc2lvbi5yYyBidWlsZC92ZXJzaW9uLm8KLXg4Nl82NC1wb2t5c2RrLW1pbmd3MzItd2luZHJlczogYnVpbGQvdmVyc2lvbi5vOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1NYWtlZmlsZTo2OTI6IHJlY2lwZSBmb3IgdGFyZ2V0ICdidWlsZC92ZXJzaW9uLm8nIGZhaWxlZAotbWFrZTogKioqIFtidWlsZC92ZXJzaW9uLm9dIEVycm9yIDEKLW1ha2U6ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCi10b3VjaCBidWlsZC8uY3JlYXRlZAotV0FSTklORzogZXhpdCBjb2RlIDEgZnJvbSBhIHNoZWxsIGNvbW1hbmQuCi0KLUV4dGVuc2lvbiBvZiBmaXg6Ci1odHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi85OWQ4YjE4YWNmOGEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFtLmRldmVsQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtciAwMDcwMDI1ODdkNWQgLXIgMWZiMTg4MGQ1ZWRmIGNvbmZpZ3VyZQotLS0tIGEvY29uZmlndXJlCVR1ZSBOb3YgMTIgMTc6MjQ6MzcgMjAxOSAtMDUwMAotKysrIGIvY29uZmlndXJlCVdlZCBOb3YgMTMgMTA6NTE6MDIgMjAxOSArMDMwMAotQEAgLTI1NDkzLDcgKzI1NDkzLDcgQEAKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gJFZFUlNJT05fU09VUkNFU2AKLSBWRVJTSU9OX09CSkVDVFM9YGVjaG8gIiRWRVJTSU9OX09CSkVDVFMiIHwgc2VkICdzLFteIF0qL1woW14gXSpcKVwucmMsJChvYmplY3RzKS9cMS5vLGcnYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAiJFZFUlNJT05fREVQRU5EUyIgfCBzZWQgInMsXFwoW14gXSpcXCkvXFwoW14gXSpcXClcXC5yYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLnJjXFxcXAotK1xcJChvYmplY3RzKS9cXDIubzogXFwxL1xcMi5yYyBcXCQob2JqZWN0cykvLmNyZWF0ZWRcXFxcCi0gCVxcJChXSU5EUkVTKSBcXCQ8IFxcJEAsZyJgCi0gCi0gU0RMTUFJTl9PQkpFQ1RTPWBlY2hvICRTRExNQUlOX1NPVVJDRVNgCi1kaWZmIC1yIDAwNzAwMjU4N2Q1ZCAtciAxZmIxODgwZDVlZGYgY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMJVHVlIE5vdiAxMiAxNzoyNDozNyAyMDE5IC0wNTAwCi0rKysgYi9jb25maWd1cmUuYWMJV2VkIE5vdiAxMyAxMDo1MTowMiAyMDE5ICswMzAwCi1AQCAtNDE3Nyw3ICs0MTc3LDcgQEAKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gJFZFUlNJT05fU09VUkNFU2AKLSBWRVJTSU9OX09CSkVDVFM9YGVjaG8gIiRWRVJTSU9OX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLnJjLCQob2JqZWN0cykvXDEubyxnJ2AKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gIiRWRVJTSU9OX0RFUEVORFMiIHwgc2VkICJzLFxcKFtbXiBdXSpcXCkvXFwoW1teIF1dKlxcKVxcLnJjLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLnJjIFxcJChvYmplY3RzKS8uY3JlYXRlZFxcXFwKLSAJXFwkKFdJTkRSRVMpIFxcJDwgXFwkQCxnImAKLSAKLSBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1GaXhlZC1idWctNDc5Ny1TREwtZmFpbHMtdG8tY29tcGlsZS13aXRoLU1lc2EtTWFzdGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjViNmEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIFN5bHZhaW4gQmVja2VyIDxzeWx2YWluLmJlY2tlckBnbWFpbC5jb20+Ci0jIERhdGUgMTU3MDg5ODg3NiAtNzIwMAotIyAgICAgIFNhdCBPY3QgMTIgMTg6NDc6NTYgMjAxOSArMDIwMAotIyBOb2RlIElEIDM2OWIwMTAwNmViMmY2ZmQ1NjNmN2MzMTVkMjlhZTNmZTUwM2M0MzIKLSMgUGFyZW50ICA0Y2JhZmZkMDA4M2I4Y2QxNzA3MGRiZDlkNGFiMWNlMGZhOWZjYTJkCi1GaXhlZCBidWcgNDc5NyAtIFNETCBmYWlscyB0byBjb21waWxlIHdpdGggTWVzYSBNYXN0ZXIgKHRoYW5rcyBNaWNoYWVsIE9sYnJpY2ghKQotCi1maXggYnVpbGRpbmcgd2l0aCBNZXNhIDE5LjIKLQotV2l0aCBNZXNhIDE5LjIgYnVpbGRpbmcgZmFpbHMgd2l0aDoKLQotL2luY2x1ZGUvR0xFUy9nbC5oOjYzOjI1OiBlcnJvcjogY29uZmxpY3RpbmcgdHlwZXMgZm9yICdHTHNpemVpcHRyJwotCi1UaGUgc2FtZSB0eXBlIGlzIGRlZmluZWQgaW4gaW5jbHVkZS9TRExfb3BlbmdsLmggZm9yIE9wZW5HTCBhbmQgdGhlIHR3bwotaGVhZGVycyBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGF0IHRoZSBzYW1lIHRpbWUuCi1UaGlzIHdhcyBqdXN0IG5ldmVyIG5vdGljZWQgYmVjYXVzZSB0aGUgc2FtZSBoZWFkZXIgZ3VhcmQgJ19fZ2xfaF8nIHdhcwotdXNlZC4gVGhpcyB3YXMgY2hhbmdlZCBpbiBNZXNhLiBUaGUgcmVzdWx0IGlzIHRoaXMgZXJyb3IuCi0KLUZpeCB0aGlzIHRoZSBzYW1lIHdheSBHTEVTMiBhbHJlYWR5IGhhbmRsZXMgdGhpczogRG9uJ3QgaW5jbHVkZSB0aGUgR0xFUwotaGVhZGVyIHdoZW4gdGhlIE9wZW5HTCBoZWFkZXIgd2FzIGFscmVhZHkgaW5jbHVkZWQuCi0oaHR0cHM6Ly9oZy5saWJzZGwub3JnL1NETC9yZXYvYTYwYjNjMjkyZjBmKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi8zNjliMDEwMDZlYjJdCi1TaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci0KLWRpZmYgLS1naXQgYS9zcmMvdmlkZW8vU0RMX3ZpZGVvLmMgYi9zcmMvdmlkZW8vU0RMX3ZpZGVvLmMKLS0tLSBhL3NyYy92aWRlby9TRExfdmlkZW8uYwotKysrIGIvc3JjL3ZpZGVvL1NETF92aWRlby5jCi1AQCAtMzcsOSArMzcsOSBAQAotICNpbmNsdWRlICJTRExfb3BlbmdsLmgiCi0gI2VuZGlmIC8qIFNETF9WSURFT19PUEVOR0wgKi8KLSAKLS0jaWYgU0RMX1ZJREVPX09QRU5HTF9FUwotKyNpZiBTRExfVklERU9fT1BFTkdMX0VTICYmICFTRExfVklERU9fT1BFTkdMCi0gI2luY2x1ZGUgIlNETF9vcGVuZ2xlcy5oIgotLSNlbmRpZiAvKiBTRExfVklERU9fT1BFTkdMX0VTICovCi0rI2VuZGlmIC8qIFNETF9WSURFT19PUEVOR0xfRVMgJiYgIVNETF9WSURFT19PUEVOR0wgKi8KLSAKLSAvKiBHTCBhbmQgR0xFUzIgaGVhZGVycyBjb25mbGljdCBvbiBMaW51eCAzMiBiaXRzICovCi0gI2lmIFNETF9WSURFT19PUEVOR0xfRVMyICYmICFTRExfVklERU9fT1BFTkdMCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM0YTM1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotU1VNTUFSWSA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgaXMgYSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIFwKLWxpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBsb3cgbGV2ZWwgYWNjZXNzIHRvIGF1ZGlvLCBrZXlib2FyZCwgbW91c2UsIFwKLWpveXN0aWNrLCAzRCBoYXJkd2FyZSB2aWEgT3BlbkdMLCBhbmQgMkQgdmlkZW8gZnJhbWVidWZmZXIuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubGlic2RsLm9yZy8iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTUwNGE5NDU0Y2ViODlmZDc1YTI1ODM0NzNiMTE0MDllIgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnNkbDIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3JlbGVhc2UvU0RMMi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbW9yZS1nZW4tZGVwZW5kcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLWJ1Zy00NTM4LXZhbGlkYXRlLWltYWdlLXNpemUtd2hlbi1sb2FkaW5nLUJNUC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlZC1idWctNDc5Ny1TREwtZmFpbHMtdG8tY29tcGlsZS13aXRoLU1lc2EtTWFzdGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1idWlsZC1kaXItd2hlbi1idWlsZGluZy12ZXJzaW9uLS5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWEyMTE0ZjJhNmYzNDhiZGFiNWJmNTJiOTk0ODExZGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQ2NTZjMTNhMWYwZDAwMjNhZTJmNGE5Y2YwOGVjOTJmZmZiNDY0ZTBmMjQyMzgzMzc3ODQxNTliOGI5MWQ1NyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3NkbDItY29uZmlnIgotCi1DVkVfUFJPRFVDVCA9ICJzaW1wbGVfZGlyZWN0bWVkaWFfbGF5ZXIgc2RsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNuZGlvIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAieDExIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtYWxzYXRlc3QsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgotUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2ttc2RybV0gICAgID0gIi0tZW5hYmxlLXZpZGVvLWttc2RybSwtLWRpc2FibGUtdmlkZW8ta21zZHJtLGxpYmRybSB2aXJ0dWFsL2xpYmdibSIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1t0c2xpYl0gICAgICA9ICItLWVuYWJsZS1pbnB1dC10c2xpYiwtLWRpc2FibGUtaW5wdXQtdHNsaWIsdHNsaWIiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdICAgID0gIi0tZW5hYmxlLXZpZGVvLXdheWxhbmQsLS1kaXNhYmxlLXZpZGVvLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24iCi1QQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXZpZGVvLXgxMSwtLWRpc2FibGUtdmlkZW8teDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCi0gICAgICAgIE1BQ1JPUz0ibGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQiCi0gICAgICAgIGZvciBpIGluICR7TUFDUk9TfTsgZG8KLSAgICAgICAgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRpCi0gICAgICAgIGRvbmUKLSAgICAgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYzk0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEyLmJiCkBAIC0wLDAgKzEsODEgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgorREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCitsaWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCitqb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgorCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0yZDRhZjZhZGI0ZDg5YWFkMGNkZWRiY2MxOGM5YTMyZiIKKworIyBhcm0tbmVvbiBhZGRzIE1JVCBsaWNlbnNlCitMSUNFTlNFX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXJtLW5lb24nLCAnJiBNSVQnLCAnJywgZCl9IgorTElDX0ZJTEVTX0NIS1NVTV9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FybS1uZW9uJywgJ2ZpbGU6Ly9zcmMvdmlkZW8vYXJtL3BpeG1hbi1hcm0tbmVvbi1hc20uaDttZDU9OWE5Y2MxZTUxYWJiZjFkYTU4ZjRkOTUyOGVjOWQ0OWI7YmVnaW5saW5lPTE7ZW5kbGluZT0yNCcsICcnLCBkKX0iCisKK1BST1ZJREVTID0gInZpcnR1YWwvbGlic2RsMiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tb3JlLWdlbi1kZXBlbmRzLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ODNiNmYyZGY4ZmYwMmIxOWJiNWNlNDkyYjk5YzhmZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNDkyNjhmNjk1YzAyZWZiYzliOTE0OGE3MGI4NWU1OGNlZmJiZjcwNGFiZDNlOTFiZTY1NGRiN2YxZTJjODYzIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vc2RsMi1jb25maWciCisKK0NWRV9QUk9EVUNUID0gInNpbXBsZV9kaXJlY3RtZWRpYV9sYXllciBzZGwiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3NzIC0tZGlzYWJsZS1lc2QgLS1kaXNhYmxlLWFydHMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kaXNrYXVkaW8gLS1kaXNhYmxlLW5hcyAtLWRpc2FibGUtZXNkLXNoYXJlZCAtLWRpc2FibGUtZXNkdGVzdCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpZGVvLWR1bW15IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc2RsLWRsb3BlbiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc25kaW8gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mY2l0eCAtLWRpc2FibGUtaWJ1cyBcCisgICAgICAgICAgICAgICAgIgorCisjIG9wZW5nbCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgKGRlc2t0b3ApIG9wZW5nbCwgZ2xlczIsIG9yIG5vIEdMCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIngxMSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgZGlyZWN0ZmIgcHVsc2VhdWRpbyB4MTEnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGdsZXMyJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsImFybS1uZW9uIiwiIixkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICA9ICItLWVuYWJsZS1hbHNhIC0tZGlzYWJsZS1hbHNhdGVzdCwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiwiCitQQUNLQUdFQ09ORklHW2FybS1uZW9uXSAgID0gIi0tZW5hYmxlLWFybS1uZW9uLC0tZGlzYWJsZS1hcm0tbmVvbiIKK1BBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgPSAiLS1lbmFibGUtdmlkZW8tZGlyZWN0ZmIsLS1kaXNhYmxlLXZpZGVvLWRpcmVjdGZiLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2xlcywtLWRpc2FibGUtdmlkZW8tb3BlbmdsZXMsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1trbXNkcm1dICAgICA9ICItLWVuYWJsZS12aWRlby1rbXNkcm0sLS1kaXNhYmxlLXZpZGVvLWttc2RybSxsaWJkcm0gdmlydHVhbC9saWJnYm0iCitQQUNLQUdFQ09ORklHW29wZW5nbF0gICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbCwtLWRpc2FibGUtdmlkZW8tb3BlbmdsLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbdHNsaWJdICAgICAgPSAiLS1lbmFibGUtaW5wdXQtdHNsaWIsLS1kaXNhYmxlLWlucHV0LXRzbGliLHRzbGliIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICA9ICItLWVuYWJsZS12aWRlby13YXlsYW5kLC0tZGlzYWJsZS12aWRlby13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGlieGtiY29tbW9uIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICItLWVuYWJsZS12aWRlby14MTEsLS1kaXNhYmxlLXZpZGVvLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhyYW5kciBsaWJ4cmVuZGVyIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWluY2x1ZGU9YWNpbmNsdWRlIC0tZXhjbHVkZT1hdXRvaGVhZGVyIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyBSZW1vdmUgb2xkIGxpYnRvb2wgbWFjcm9zLgorICAgICAgICBNQUNST1M9ImxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00IgorICAgICAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCisgICAgICAgICAgICAgICBybSAtZiAke1N9L2FjaW5jbHVkZS8kaQorICAgICAgICBkb25lCisgICAgICAgIGV4cG9ydCBTWVNST09UPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCit9CisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlscy8wMDAxLUJ1aWxkLXNmY3NhbXBsZS1vbmx5LXdoZW4tWDExLWJhY2tlbmQtaXMtZW5hYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWZiNzE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA4ZmMxNGU0YmM4MTg4NWI4MGMzMDcyZTU0OWMyZTZmNTk1MzNkN2VmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLURhdGU6IEZyaSwgOCBGZWIgMjAxOSAxMTo0NTo1NSArMDgwMAotU3ViamVjdDogW1BBVENIXSBCdWlsZCBzZmNzYW1wbGUgb25seSB3aGVuIFgxMSBiYWNrZW5kIGlzIGVuYWJsZWQKLQotU2VlOiBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvcHVsbC8xNDksIGFuZAotaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3Vlcy8xNTAKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBkMjgxNzVhLi5lMjk0ZTI1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjQsMTAgKzI0LDExIEBAIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00ICR7QUNMT0NBTF9GTEFHU30KLSAKLSBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotLVNVQkRJUlMgPSBjb21tb24gZGVjb2RlIGVuY29kZSB2YWluZm8gdmlkZW9wcm9jZXNzIHZlbmRvci9pbnRlbCB2ZW5kb3IvaW50ZWwvc2Zjc2FtcGxlCi0rU1VCRElSUyA9IGNvbW1vbiBkZWNvZGUgZW5jb2RlIHZhaW5mbyB2aWRlb3Byb2Nlc3MgdmVuZG9yL2ludGVsCi0gCi0gaWYgVVNFX1gxMQotIFNVQkRJUlMgKz0gcHV0c3VyZmFjZQotK1NVQkRJUlMgKz0gdmVuZG9yL2ludGVsL3NmY3NhbXBsZQotIGVsc2UKLSBpZiBVU0VfV0FZTEFORAotIFNVQkRJUlMgKz0gcHV0c3VyZmFjZQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY4ZDBjZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmcm9tIGxpYnZhIHByb2plY3QiCi0KLURFU0NSSVBUSU9OID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgXAotYW5kIGV4YW1wbGVzIHRvIGV4ZXJjaXNlIFZBLUFQSSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpYnZhIFwKLXByb2plY3QuVkEtQVBJIGlzIGFuIG9wZW4tc291cmNlIGxpYnJhcnkgYW5kIEFQSSBzcGVjaWZpY2F0aW9uLCBcCi13aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNhcGFiaWxpdGllcyBcCi1mb3IgdmlkZW8gcHJvY2Vzc2luZy4gSXQgY29uc2lzdHMgb2YgYSBtYWluIGxpYnJhcnkgYW5kIGRyaXZlci1zcGVjaWZpYyBcCi1hY2NlbGVyYXRpb24gYmFja2VuZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGhhcmR3YXJlIHZlbmRvciIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3VlcyIKLQotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxNDhmYzhhZGYxOWRjOWFlYzE3Y2Y5Y2QyOWE5YTVlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUJ1aWxkLXNmY3NhbXBsZS1vbmx5LXdoZW4tWDExLWJhY2tlbmQtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMxZmFkYTI2YzI4NjY1NDg1OWVmZjMzYjI1NjJjYjc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyMzhjOWQ1MTEwZDYwZjkzNTY4MzM5MGI4MzgzZmRhYzM1MDczNDYzODRjZDVmMTE3YTIzYzZkYjFkNzJhMTciCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvcmVsZWFzZXMiCi0KLURFUEVORFMgPSAibGlidmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjawotCi0jIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiMzgwMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNi4wLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmcm9tIGxpYnZhIHByb2plY3QiCisKK0RFU0NSSVBUSU9OID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgXAorYW5kIGV4YW1wbGVzIHRvIGV4ZXJjaXNlIFZBLUFQSSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpYnZhIFwKK3Byb2plY3QuVkEtQVBJIGlzIGFuIG9wZW4tc291cmNlIGxpYnJhcnkgYW5kIEFQSSBzcGVjaWZpY2F0aW9uLCBcCit3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNhcGFiaWxpdGllcyBcCitmb3IgdmlkZW8gcHJvY2Vzc2luZy4gSXQgY29uc2lzdHMgb2YgYSBtYWluIGxpYnJhcnkgYW5kIGRyaXZlci1zcGVjaWZpYyBcCithY2NlbGVyYXRpb24gYmFja2VuZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGhhcmR3YXJlIHZlbmRvciIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3VlcyIKKworU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxNDhmYzhhZGYxOWRjOWFlYzE3Y2Y5Y2QyOWE5YTVlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMuZ2l0O2JyYW5jaD12Mi42LWJyYW5jaCIKK1NSQ1JFViA9ICI4ZWExZWJhNDMzZGNiY2ViMGU1ZGNiNTRiOGUzZjk4NDk4N2Y3YTE3IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCisKK0RFUEVORFMgPSAibGlidmEiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKKyMgZGVwZW5kcyBvbiBsaWJ2YSB3aGljaCByZXF1aXJlcyBvcGVuZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRHgxMT10cnVlLCAtRHgxMT1mYWxzZSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsIC1Ed2F5bGFuZD1mYWxzZSx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlMmUwMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlkZW8gQWNjZWxlcmF0aW9uIChWQSkgQVBJIGZvciBMaW51eCIKLURFU0NSSVBUSU9OID0gIlZpZGVvIEFjY2VsZXJhdGlvbiBBUEkgKFZBIEFQSSkgaXMgYSBsaWJyYXJ5IChsaWJWQSkgXAotYW5kIEFQSSBzcGVjaWZpY2F0aW9uIHdoaWNoIGVuYWJsZXMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBcCi1oYXJkd2FyZSAoR1BVKSBhY2NlbGVyYXRpb24gZm9yIHZpZGVvIHByb2Nlc3Npbmcgb24gTGludXggYW5kIFVOSVggXAotYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMuIEFjY2VsZXJhdGVkIHByb2Nlc3NpbmcgaW5jbHVkZXMgdmlkZW8gXAotZGVjb2RpbmcsIHZpZGVvIGVuY29kaW5nLCBzdWJwaWN0dXJlIGJsZW5kaW5nIGFuZCByZW5kZXJpbmcuIFRoZSBcCi1zcGVjaWZpY2F0aW9uIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGJ5IEludGVsIGZvciBpdHMgR01BIChHcmFwaGljcyBcCi1NZWRpYSBBY2NlbGVyYXRvcikgc2VyaWVzIG9mIEdQVSBoYXJkd2FyZSwgdGhlIEFQSSBpcyBob3dldmVyIG5vdCBcCi1saW1pdGVkIHRvIEdQVXMgb3IgSW50ZWwgc3BlY2lmaWMgaGFyZHdhcmUsIGFzIG90aGVyIGhhcmR3YXJlIGFuZCBcCi1tYW51ZmFjdHVyZXJzIGNhbiBhbHNvIGZyZWVseSB1c2UgdGhpcyBBUEkgZm9yIGhhcmR3YXJlIGFjY2VsZXJhdGVkIFwKLXZpZGVvIGRlY29kaW5nLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL2lzc3VlcyIKLQotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlNDg5NDBmOTRhY2IwYWY1ODJlNWVmMDM1Mzc4MDBmIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM2ODgyMTJmYjdhODc5NDcwNzBmMzcyOWU5MWZmN2NmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNhYTg5Y2QzNjlhNTA2YWM0ZGJlNWRlN2MwZWY1ZGE0ZjNkMjIwYmY5ODY0MDNmMDJmYTFmNmY3MDJhZjY4NzgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvcmVsZWFzZXMiCi0KLURFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLUVYVFJBX09FQ09ORiA9ICJhY19jdl9wcm9nX1dBWUxBTkRfU0NBTk5FUj13YXlsYW5kLXNjYW5uZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0teDExICR7UE59LWdseCAke1BOfS13YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfS14MTEgPSsgIiR7UE59IgotUkRFUEVORFNfJHtQTn0tZ2x4ID0rICIke1BOfS14MTEiCi0KLUZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCi1GSUxFU18ke1BOfS1nbHggPSsgIiR7bGliZGlyfS9saWJ2YS1nbHgqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi42LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmNlYTgzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi42LjEuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJWaWRlbyBBY2NlbGVyYXRpb24gKFZBKSBBUEkgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiVmlkZW8gQWNjZWxlcmF0aW9uIEFQSSAoVkEgQVBJKSBpcyBhIGxpYnJhcnkgKGxpYlZBKSBcCithbmQgQVBJIHNwZWNpZmljYXRpb24gd2hpY2ggZW5hYmxlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIFwKK2hhcmR3YXJlIChHUFUpIGFjY2VsZXJhdGlvbiBmb3IgdmlkZW8gcHJvY2Vzc2luZyBvbiBMaW51eCBhbmQgVU5JWCBcCitiYXNlZCBvcGVyYXRpbmcgc3lzdGVtcy4gQWNjZWxlcmF0ZWQgcHJvY2Vzc2luZyBpbmNsdWRlcyB2aWRlbyBcCitkZWNvZGluZywgdmlkZW8gZW5jb2RpbmcsIHN1YnBpY3R1cmUgYmxlbmRpbmcgYW5kIHJlbmRlcmluZy4gVGhlIFwKK3NwZWNpZmljYXRpb24gd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgYnkgSW50ZWwgZm9yIGl0cyBHTUEgKEdyYXBoaWNzIFwKK01lZGlhIEFjY2VsZXJhdG9yKSBzZXJpZXMgb2YgR1BVIGhhcmR3YXJlLCB0aGUgQVBJIGlzIGhvd2V2ZXIgbm90IFwKK2xpbWl0ZWQgdG8gR1BVcyBvciBJbnRlbCBzcGVjaWZpYyBoYXJkd2FyZSwgYXMgb3RoZXIgaGFyZHdhcmUgYW5kIFwKK21hbnVmYWN0dXJlcnMgY2FuIGFsc28gZnJlZWx5IHVzZSB0aGlzIEFQSSBmb3IgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgXAordmlkZW8gZGVjb2RpbmcuIgorCitIT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvaXNzdWVzIgorCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU0ODk0MGY5NGFjYjBhZjU4MmU1ZWYwMzUzNzgwMGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImFlZjEzZWI0OGUwMWE0N2QxNDE2ZDk3NDYyYTIyYTExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjNTdlYjY0MmQ4MjhhZjI0MTFhYTM4ZjU1ZGMxMDExMWU4Yzk4OTc2ZGJhYjhmZDYyZTQ4NjI5NDAxZWFlYTUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvcmVsZWFzZXMiCisKK0RFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1Ed2l0aF94MTE9eWVzLCAtRHdpdGhfeDExPW5vLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRHdpdGhfd2F5bGFuZD15ZXMsIC1Ed2l0aF93YXlsYW5kPW5vLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCisKK1BBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tZ2x4ICR7UE59LXdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKKworRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCitGSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tYXRjaGJveC13bS9tYXRjaGJveC13bV8xLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiCmluZGV4IGI5OTYxYzMuLjY3NWVlNDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiCkBAIC0yMSw2ICsyMSw4IEBACiAjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKK0NGTEFHUyArPSAiLWZjb21tb24iCisKIEZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIFwKICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWF0Y2hib3ggXAogICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYXRjaGJveCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZW51LWNhY2hlL21lbnUtY2FjaGVfMS4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZW51LWNhY2hlL21lbnUtY2FjaGVfMS4xLjAuYmIKaW5kZXggZGRiYmQ5NC4uN2ExMTIyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVudS1jYWNoZS9tZW51LWNhY2hlXzEuMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjEuMC5iYgpAQCAtMTYsMyArMTYsNSBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHhkZS9maWxlcy9tZW51LWNhY2hlLzEuMS8iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MKKworQ0ZMQUdTICs9ICItZmNvbW1vbiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi1taXNkZXRlY3RzLTY0Yml0LWF0b21pY3Mtb24tbWlwcy1jbGFuZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi1taXNkZXRlY3RzLTY0Yml0LWF0b21pY3Mtb24tbWlwcy1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTQ4NWZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLW1pc2RldGVjdHMtNjRiaXQtYXRvbWljcy1vbi1taXBzLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gYmIyZjBiZWE1NTNkNTFkNjU5YTliYzQ2ZjdhZTE4Njg4NTQwNTE1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEphbiAyMDIwIDE1OjIzOjQ3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uIG1pc2RldGVjdHMgNjRiaXQgYXRvbWljcyBvbiBtaXBzL2NsYW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy91dGlsL3VfYXRvbWljLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdXRpbC91X2F0b21pYy5jIGIvc3JjL3V0aWwvdV9hdG9taWMuYworaW5kZXggZTRiZmZhOC4uNThlMWRkZCAxMDA2NDQKKy0tLSBhL3NyYy91dGlsL3VfYXRvbWljLmMKKysrKyBiL3NyYy91dGlsL3VfYXRvbWljLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgICogSU4gVEhFIFNPRlRXQVJFLgorICAqLworIAorLSNpZiBkZWZpbmVkKE1JU1NJTkdfNjRCSVRfQVRPTUlDUykgJiYgZGVmaW5lZChIQVZFX1BUSFJFQUQpCisrI2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgZGVmaW5lZChNSVNTSU5HXzY0QklUX0FUT01JQ1MpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEKQorIAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLmJ1aWxkLWNoZWNrLWZvci1hbGwtbGludXgtaG9zdF9vcy1jb21iaW5hdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaAppbmRleCAxODY5ZTExLi4wODUyNTQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gYjZkOWJjOTdjYjBlOGM1NDBhNDVkYmE1NDQwYjAzNmZiOTQwZmY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLURhdGU6IE1vbiwgMTEgTm92IDIwMTkgMDk6Mzg6MTUgLTA4MDAKK0Zyb20gMGQ5ZWQwMDJlZmYxNzZiOTAyZGEyNjZkODk4MjlhOWIwY2IxMDk0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CitEYXRlOiBUaHUsIDE0IE5vdiAyMDE5IDEzOjA0OjQ5IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBjaGVjayBmb3IgYWxsIGxpbnV4IGhvc3Rfb3MgY29tYmluYXRpb25zCiAKIE1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBhbHNvIGxvb2tpbmcgZm9yIG91ciBob3N0X29zIGNvbWJpbmF0aW9ucyBsaWtlCkBAIC0xMywzMCArMTMsMzAgQEAKIFNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgogU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CiAKIC0tLQogIG1lc29uLmJ1aWxkIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGQ1ODQxNTIuLmExZjA5OGMgMTAwNjQ0CitpbmRleCA4OThkMDI1Li4wOWUzNzU5IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTE3LDcgKzExNyw3IEBAIHdpdGhfYW55X29wZW5nbCA9IHdpdGhfb3BlbmdsIG9yIHdpdGhfZ2xlczEgb3Igd2l0aF9nbGVzMgorQEAgLTEyNCw3ICsxMjQsNyBAQCB3aXRoX2FueV9vcGVuZ2wgPSB3aXRoX29wZW5nbCBvciB3aXRoX2dsZXMxIG9yIHdpdGhfZ2xlczIKICAjIE9ubHkgYnVpbGQgc2hhcmVkX2dsYXBpIGlmIGF0IGxlYXN0IG9uZSBPcGVuR0wgQVBJIGlzIGVuYWJsZWQKLSB3aXRoX3NoYXJlZF9nbGFwaSA9IGdldF9vcHRpb24oJ3NoYXJlZC1nbGFwaScpIGFuZCB3aXRoX2FueV9vcGVuZ2wKKyB3aXRoX3NoYXJlZF9nbGFwaSA9IHdpdGhfc2hhcmVkX2dsYXBpIGFuZCB3aXRoX2FueV9vcGVuZ2wKICAKIC1zeXN0ZW1faGFzX2ttc19kcm0gPSBbJ29wZW5ic2QnLCAnbmV0YnNkJywgJ2ZyZWVic2QnLCAnZ251L2tmcmVlYnNkJywgJ2RyYWdvbmZseScsICdsaW51eCcsICdzdW5vcyddLmNvbnRhaW5zKGhvc3RfbWFjaGluZS5zeXN0ZW0oKSkKICtzeXN0ZW1faGFzX2ttc19kcm0gPSBbJ29wZW5ic2QnLCAnbmV0YnNkJywgJ2ZyZWVic2QnLCAnZHJhZ29uZmx5J10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKSBvciBob3N0X21hY2hpbmUuc3lzdGVtKCkuc3RhcnRzd2l0aCgnbGludXgnKQogIAogIGRyaV9kcml2ZXJzID0gZ2V0X29wdGlvbignZHJpLWRyaXZlcnMnKQogIGlmIGRyaV9kcml2ZXJzLmNvbnRhaW5zKCdhdXRvJykKLUBAIC04NTYsNyArODU2LDcgQEAgaWYgY2MuY29tcGlsZXMoJ19fdWludDEyOF90IGZvbyh2b2lkKSB7IHJldHVybiAwOyB9JywKK0BAIC04ODQsNyArODg0LDcgQEAgaWYgY2MuY29tcGlsZXMoJ19fdWludDEyOF90IGZvbyh2b2lkKSB7IHJldHVybiAwOyB9JywKICBlbmRpZgogIAogICMgVE9ETzogdGhpcyBpcyB2ZXJ5IGluY29tcGxldGUKLS1pZiBbJ2xpbnV4JywgJ2N5Z3dpbicsICdnbnUnLCAnZ251L2tmcmVlYnNkJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKQorLWlmIFsnbGludXgnLCAnY3lnd2luJywgJ2dudScsICdmcmVlYnNkJywgJ2dudS9rZnJlZWJzZCddLmNvbnRhaW5zKGhvc3RfbWFjaGluZS5zeXN0ZW0oKSkKICtpZiBbJ2N5Z3dpbicsICdnbnUnLCAnZ251L2tmcmVlYnNkJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKSBvciBob3N0X21hY2hpbmUuc3lzdGVtKCkuc3RhcnRzd2l0aCgnbGludXgnKQogICAgcHJlX2FyZ3MgKz0gJy1EX0dOVV9TT1VSQ0UnCiAgZWxpZiBob3N0X21hY2hpbmUuc3lzdGVtKCkgPT0gJ3N1bm9zJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1tZXNvbi5idWlsZC1tYWtlLVRMUy1FTEYtb3B0aW9uYWwucGF0Y2gKaW5kZXggMTk5ZWQ1Ny4uY2QzNWExZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoCkBAIC0xLDEzICsxLDEzIEBACi1Gcm9tIGFmNjkyMzU0NGRlMDJkZWQ2NDhhNzM2ZTA3YjliZDhiN2M1MmRiYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDA5OjQ2OjI4IC0wNzAwCitGcm9tIGRmODM1Mzg5Njk5YjMyYmI2NjEwYjM5OTcyNTAyZTMyM2Y4ZTA5ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpckBhbGlzdGFpcjIzLm1lPgorRGF0ZTogVGh1LCAxNCBOb3YgMjAxOSAxMzowODozMSAtMDgwMAogU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogbWFrZSBUTFMgRUxGIG9wdGlvbmFsCiAKIFVTRV9FTEZfVExTIGhhcyByZXBsYWNlZCBHTFhfVVNFX1RMUyBzbyB0aGlzIHBhdGNoIGlzIHRoZSBvcmlnaW5hbCAibWFrZQogVExTIEdMWCBvcHRpb25hbCBhZ2FpbiIgcGF0Y2ggdXBkYXRlZCB0byB0aGUgbGF0ZXN0IG1lc2EuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CiAKIC0tLQogIG1lc29uLmJ1aWxkICAgICAgIHwgMiArLQpAQCAtMTUsMjMgKzE1LDIzIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGExZjA5OGMuLjFlMzFlYjQgMTAwNjQ0CitpbmRleCAwOWUzNzU5Li5hOTU0MTE4IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMzc4LDcgKzM3OCw3IEBAIGlmIHdpdGhfZWdsIGFuZCBub3QgKHdpdGhfcGxhdGZvcm1fZHJtIG9yIHdpdGhfcGxhdGZvcm1fc3VyZmFjZWxlc3Mgb3Igd2l0aF9wbGF0CitAQCAtMzg3LDcgKzM4Nyw3IEBAIGlmIHdpdGhfZWdsIGFuZCBub3QgKHdpdGhfcGxhdGZvcm1fZHJtIG9yIHdpdGhfcGxhdGZvcm1fc3VyZmFjZWxlc3Mgb3Igd2l0aF9wbGF0CiAgZW5kaWYKICAKICAjIEFuZHJvaWQgdXNlcyBlbXV0bHMgZm9yIHZlcnNpb25zIDw9IFAvMjguIEZvciBVU0VfRUxGX1RMUyB3ZSBuZWVkIEVMRiBUTFMuCi0taWYgbm90IHdpdGhfcGxhdGZvcm1fYW5kcm9pZCBvciBnZXRfb3B0aW9uKCdwbGF0Zm9ybS1zZGstdmVyc2lvbicpID49IDI5CistaWYgaG9zdF9tYWNoaW5lLnN5c3RlbSgpICE9ICd3aW5kb3dzJyBhbmQgKG5vdCB3aXRoX3BsYXRmb3JtX2FuZHJvaWQgb3IgZ2V0X29wdGlvbigncGxhdGZvcm0tc2RrLXZlcnNpb24nKSA+PSAyOSkKICtpZiAobm90IHdpdGhfcGxhdGZvcm1fYW5kcm9pZCBvciBnZXRfb3B0aW9uKCdwbGF0Zm9ybS1zZGstdmVyc2lvbicpID49IDI5KSBhbmQgZ2V0X29wdGlvbignZWxmLXRscycpCiAgICBwcmVfYXJncyArPSAnLURVU0VfRUxGX1RMUycKICBlbmRpZgogIAogZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IGI3NjhjMTUuLjc2Y2VmMjQgMTAwNjQ0CitpbmRleCA2MjZiYWYzLi42MzdmZjE0IDEwMDY0NAogLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKICsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMzMzLDYgKzMzMywxMiBAQCBvcHRpb24oCitAQCAtMzQxLDYgKzM0MSwxMiBAQCBvcHRpb24oCiAgICB2YWx1ZSA6IHRydWUsCiAgICBkZXNjcmlwdGlvbiA6ICdFbmFibGUgZGlyZWN0IHJlbmRlcmluZyBpbiBHTFggYW5kIEVHTCBmb3IgRFJJJywKICApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAzLUFsbG93LWVuYWJsZS1EUkktd2l0aG91dC1EUkktZHJpdmVycy5wYXRjaAppbmRleCBjMjBhMWY3Li5hMDUzNmM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDVhZDY1MTUyMzhiYzA0MmNjY2Y5OTU5YWJhZDQ0ZmRlZTlhZWIwN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdlYWEyMWE3OWNlNmQ2ZTkyZjZiZjk4YzI4YjY4ZTNmY2I0ZDc4NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgogRGF0ZTogV2VkLCAxMiBKdW4gMjAxOSAxNDoxODozMSAtMDMwMAogU3ViamVjdDogW1BBVENIXSBBbGxvdyBlbmFibGUgRFJJIHdpdGhvdXQgRFJJIGRyaXZlcnMKQEAgLTE1LDEwICsxNSwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAxZTMxZWI0Li41MTJlZWM2IDEwMDY0NAoraW5kZXggYTk1NDExOC4uNjI4NjRjNiAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTE0Nyw3ICsxNDcsNyBAQCB3aXRoX2RyaV9yMjAwID0gZHJpX2RyaXZlcnMuY29udGFpbnMoJ3IyMDAnKQorQEAgLTE1NCw3ICsxNTQsNyBAQCB3aXRoX2RyaV9yMjAwID0gZHJpX2RyaXZlcnMuY29udGFpbnMoJ3IyMDAnKQogIHdpdGhfZHJpX25vdXZlYXUgPSBkcmlfZHJpdmVycy5jb250YWlucygnbm91dmVhdScpCiAgd2l0aF9kcmlfc3dyYXN0ID0gZHJpX2RyaXZlcnMuY29udGFpbnMoJ3N3cmFzdCcpCiAgCkBAIC0yOCwxMCArMjgsMTAgQEAKICBnYWxsaXVtX2RyaXZlcnMgPSBnZXRfb3B0aW9uKCdnYWxsaXVtLWRyaXZlcnMnKQogIGlmIGdhbGxpdW1fZHJpdmVycy5jb250YWlucygnYXV0bycpCiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggNzZjZWYyNC4uYThhYmQwNCAxMDA2NDQKK2luZGV4IDYzN2ZmMTQuLjcwMGMzNGMgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0zNCw2ICszNCwxMiBAQCBvcHRpb24oCitAQCAtMzUsNiArMzUsMTIgQEAgb3B0aW9uKAogICAgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCiAgICBkZXNjcmlwdGlvbiA6ICdlbmFibGUgc3VwcG9ydCBmb3IgZHJpMycKICApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDQtUmV2ZXJ0LW1lc2EtRW5hYmxlLWFzbS11bmNvbmRpdGlvbmFsbHktbm93LXRoYXQtZ2VuXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoCmluZGV4IGI1NjU4ZDAuLjhkNjE0ZTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxYjFjYjZlNWVhMjVlYWE5ODU3MzMyOGI5NTY1NzI4YTA4MjQ1OTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0MWNkODgzNmQ3ODVjNzkzODE3NjRlN2RlNTkzMTlmODc5NTlhNWNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KIERhdGU6IFRodSwgMTQgTm92IDIwMTkgMDk6MDY6MDIgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJtZXNhOiBFbmFibGUgYXNtIHVuY29uZGl0aW9uYWxseSwgbm93IHRoYXQKQEAgLTE1LDcgKzE1LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggNTEyZWVjNi4uYTJiY2MzYSAxMDA2NDQKK2luZGV4IDYyODY0YzYuLmI1M2JlOGQgMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKIEBAIC00OSw2ICs0OSw3IEBAIHdpdGhfdnVsa2FuX2ljZF9kaXIgPSBnZXRfb3B0aW9uKCd2dWxrYW4taWNkLWRpcicpCkBAIC0yNiw3ICsyNiw3IEBACiAgd2l0aF9nbHhfcmVhZF9vbmx5X3RleHQgPSBnZXRfb3B0aW9uKCdnbHgtcmVhZC1vbmx5LXRleHQnKQogIHdpdGhfZ2x4X2RpcmVjdCA9IGdldF9vcHRpb24oJ2dseC1kaXJlY3QnKQogIHdpdGhfb3NtZXNhID0gZ2V0X29wdGlvbignb3NtZXNhJykKLUBAIC05ODUsNDEgKzk4Niw2OCBAQCBlbmRpZgorQEAgLTEwOTMsNDEgKzEwOTQsNjggQEAgZGVwX3dzMl8zMiA9IGNjLmZpbmRfbGlicmFyeSgnd3MyXzMyJywgcmVxdWlyZWQgOiB3aXRoX3BsYXRmb3JtX3dpbmRvd3MpCiAgCiAgIyBUT0RPOiBzaGFyZWQvc3RhdGljPyBJcyB0aGlzIGV2ZW4gd29ydGggZG9pbmc/CiAgCkBAIC0xMjksMTAgKzEyOSwxMCBAQAogIGVuZGlmCiAgCiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggYThhYmQwNC4uMGY0YmQ4MCAxMDA2NDQKK2luZGV4IDcwMGMzNGMuLjYyZTg0NzIgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yMzMsNiArMjMzLDEyIEBAIG9wdGlvbigKK0BAIC0yNDEsNiArMjQxLDEyIEBAIG9wdGlvbigKICAgIHZhbHVlIDogZmFsc2UsCiAgICBkZXNjcmlwdGlvbiA6ICdFbmFibGUgR0xWTkQgc3VwcG9ydC4nCiAgKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA1LXZjNC11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1vdXRwdXQtb2YtdGltZXNwZWMtbWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtdmM0LXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLW91dHB1dC1vZi10aW1lc3BlYy1tZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDFmZWNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA1LXZjNC11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1vdXRwdXQtb2YtdGltZXNwZWMtbWUucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAzOGEzMTM0NzRlMTI3ZDYxZTc0OTg2NjQyM2U3MDhmYzg2ZWQ5ZWM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBEZWMgMjAxOSAxNDoxNToyOCAtMDgwMAorU3ViamVjdDogW1BBVENIXSB2YzQ6IHVzZSBpbnRtYXhfdCBmb3IgZm9ybWF0dGVkIG91dHB1dCBvZiB0aW1lc3BlYyBtZW1iZXJzCisKKzMyYml0IGFyY2hpdGVjdHVyZXMgd2hpY2ggaGF2ZSA2NGJpdCB0aW1lX3QgZG9lcyBub3QgZml0IHRoZSBhc3N1bXB0aW9uCitvZiB0aW1lX3QgYmVpbmcgc2FtZSBhcyBzeXN0ZW0gbG9uZyBpbnQKKworRml4ZXMKK2Vycm9yOiBmb3JtYXQgc3BlY2lmaWVzIHR5cGUgJ2xvbmcnIGJ1dCB0aGUgYXJndW1lbnQgaGFzIHR5cGUgJ3RpbWVfdCcgKGFrYSAnbG9uZyBsb25nJykgWy1XZXJyb3IsLVdmb3JtYXRdCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnR2X3NlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9tZXJnZV9yZXF1ZXN0cy8yOTY2XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9nYWxsaXVtL2RyaXZlcnMvdjNkL3YzZF9idWZtZ3IuYyB8IDQgKystLQorIHNyYy9nYWxsaXVtL2RyaXZlcnMvdmM0L3ZjNF9idWZtZ3IuYyB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jCitpbmRleCBiM2U0ZDA1M2NjMC4uYzUxNGJmMDBiZjAgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3YzZC92M2RfYnVmbWdyLmMKKysrKyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvdjNkL3YzZF9idWZtZ3IuYworQEAgLTgwLDggKzgwLDggQEAgdjNkX2JvX2R1bXBfc3RhdHMoc3RydWN0IHYzZF9zY3JlZW4gKnNjcmVlbikKKyAKKyAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHRpbWU7CisgICAgICAgICAgICAgICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdGltZSk7CistICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICBub3c6ICAgICAgICAgICAgICAgJWxkXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudHZfc2VjKTsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIG5vdzogICAgICAgICAgICAgICAlamRcbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgKGludG1heF90KXRpbWUudHZfc2VjKTsKKyAgICAgICAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jCitpbmRleCA1ZWMzNjA5MzRjMC4uYmYwNWY2Y2FkZDYgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3ZjNC92YzRfYnVmbWdyLmMKKysrKyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvdmM0L3ZjNF9idWZtZ3IuYworQEAgLTEwNyw4ICsxMDcsOCBAQCB2YzRfYm9fZHVtcF9zdGF0cyhzdHJ1Y3QgdmM0X3NjcmVlbiAqc2NyZWVuKQorIAorICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZTsKKyAgICAgICAgICAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0aW1lKTsKKy0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIG5vdzogICAgICAgICAgICAgICAlbGRcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgdGltZS50dl9zZWMpOworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgbm93OiAgICAgICAgICAgICAgICVqZFxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50bWF4X3QpdGltZS50dl9zZWMpOworICAgICAgICAgfQorIH0KKyAKKy0tIAorMi4yNC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xOS4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTkuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGIxYzFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xOS4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIG1lc2FfJHtQVn0uYmIKLQotU1VNTUFSWSArPSAiIChPcGVuR0wgb25seSwgbm8gRUdML0dMRVMpIgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbWVzYSIKLQotUyA9ICIke1dPUktESVJ9L21lc2EtJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuZ2wgZHJpICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzIwLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8yMC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc4OTdjZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8yMC4wLjIuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBtZXNhXyR7UFZ9LmJiCisKK1NVTU1BUlkgKz0gIiAoT3BlbkdMIG9ubHksIG5vIEVHTC9HTEVTKSIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL21lc2EiCisKK1MgPSAiJHtXT1JLRElSfS9tZXNhLSR7UFZ9IgorCisjIEF0IGxlYXN0IG9uZSBEUkkgcmVuZGVyaW5nIGVuZ2luZSBpcyByZXF1aXJlZCB0byBidWlsZCBtZXNhLgorIyBXaGVuIG5vIFgxMSBpcyBhdmFpbGFibGUsIHVzZSBvc21lc2EgZm9yIHRoZSByZW5kZXJpbmcgZW5naW5lLgorUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJ29zbWVzYScsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJ29zbWVzYScsIGQpfSIKKworIyBXaGVuIE5PVCB1c2luZyBYMTEsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgc3dyYXN0IGF2YWlsYWJsZS4KK0RSSURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICcsc3dyYXN0JywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggNTgzODIwNy4uYjdlZjQ5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCkBAIC0xMCw3ICsxMCw3IEBACiBCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCiBTRUNUSU9OID0gIngxMSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLmh0bWw7bWQ1PTNhNDk5OWNhZjgyY2M1MDNhYzhiOWUzN2MyMzU3ODJlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLmh0bWw7bWQ1PWMxODQzZDkzYzQ2MGJiZjc3OGQ2MDM3Y2UzMjRmOWY3IgogCiBQRSA9ICIyIgogCkBAIC00Niw2ICs0NiwxOSBAQAogCiBNRVNBX0xMVk1fUkVMRUFTRSA/PSAiJHtMTFZNVkVSU0lPTn0iCiAKKyMgc2V0IHRoZSBNRVNBX0JVSUxEX1RZUEUgdG8gZWl0aGVyICdyZWxlYXNlJyAoZGVmYXVsdCkgb3IgJ2RlYnVnJworIyBieSBkZWZhdWx0IHRoZSB1cHN0cmVhbSBtZXNhIHNvdXJjZXMgYnVpbGQgYSBkZWJ1ZyByZWxlYXNlCisjIGhlcmUgd2UgYXNzdW1lIHRoZSB1c2VyIHdpbGwgd2FudCBhIHJlbGVhc2UgYnVpbGQgYnkgZGVmYXVsdAorTUVTQV9CVUlMRF9UWVBFID89ICJyZWxlYXNlIgorZGVmIGNoZWNrX2J1aWxkdHlwZShkKToKKyAgICBfYnVpbGR0eXBlID0gZC5nZXRWYXIoJ01FU0FfQlVJTERfVFlQRScpCisgICAgaWYgX2J1aWxkdHlwZSBub3QgaW4gWydyZWxlYXNlJywgJ2RlYnVnJ106CisgICAgICAgIGJiLmZhdGFsKCJ1bmtub3duIGJ1aWxkIHR5cGUgKCVzKSwgcGxlYXNlIHNldCBNRVNBX0JVSUxEX1RZUEUgdG8gZWl0aGVyICdyZWxlYXNlJyBvciAnZGVidWcnIiAlIF9idWlsZHR5cGUpCisgICAgaWYgX2J1aWxkdHlwZSA9PSAnZGVidWcnOgorICAgICAgICByZXR1cm4gJ2RlYnVnb3B0aW1pemVkJworICAgIHJldHVybiAncGxhaW4nCitNRVNPTl9CVUlMRFRZUEUgPSAiJHtAY2hlY2tfYnVpbGR0eXBlKGQpfSIKKwogRVhUUkFfT0VNRVNPTiA9ICIgXAogICAgIC1Ec2hhcmVkLWdsYXBpPXRydWUgXAogICAgIC1EZ2FsbGl1bS1vcGVuY2w9ZGlzYWJsZWQgXApAQCAtNTQsNyArNjcsNyBAQAogIgogCiBQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgdnVsa2FuJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaSBnYWxsaXVtJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnb3BlbmdsIGVnbCBnbGVzIGdibSBkcmkgZ2FsbGl1bSB2aXJnbCcsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEgZHJpMycsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHZ1bGthbicsICdkcmkzJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgZWxmLXRscyBcCkBAIC0xMTksMTAgKzEzMiwxMSBAQAogR0FMTElVTURSSVZFUlNfTExWTSA9ICJyMzAwLHN2Z2Esbm91dmVhdSR7QCcsJHtHQUxMSVVNRFJJVkVSU19MTFZNMzN9JyBpZiAke0dBTExJVU1EUklWRVJTX0xMVk0zM19FTkFCTEVEfSBlbHNlICcnfSIKIAogUEFDS0FHRUNPTkZJR1tyNjAwXSA9ICIiCitQQUNLQUdFQ09ORklHW3ZpcmdsXSA9ICIiCiAKIEdBTExJVU1EUklWRVJTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtLWxsdm0nLCAnLCR7R0FMTElVTURSSVZFUlNfTExWTX0nLCAnJywgZCl9IgogR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3I2MDAnLCAnLHI2MDAnLCAnJywgZCl9IgotR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIix2aXJnbCIKK0dBTExJVU1EUklWRVJTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2aXJnbCcsICcsdmlyZ2wnLCAnJywgZCl9IgogCiBQQUNLQUdFQ09ORklHW2dhbGxpdW1dID0gIi1EZ2FsbGl1bS1kcml2ZXJzPSR7R0FMTElVTURSSVZFUlN9LCAtRGdhbGxpdW0tZHJpdmVycz0nJyIKIFBBQ0tBR0VDT05GSUdbZ2FsbGl1bS1sbHZtXSA9ICItRGxsdm09dHJ1ZSAtRHNoYXJlZC1sbHZtPXRydWUsIC1EbGx2bT1mYWxzZSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IGxsdm0tbmF0aXZlIFwKQEAgLTE0Nyw2ICsxNjEsNyBAQAogRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kID0gIiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciIKIAogQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCitDRkxBR1NfYXBwZW5kX2FybXY2ID0gIiAtRE1JU1NJTkdfNjRCSVRfQVRPTUlDUyIKIAogIyBSZW1vdmUgdGhlIG1lc2EgZGVwZW5kZW5jeSBvbiBtZXNhLWRldiwgYXMgbWVzYSBpcyBlbXB0eQogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xOS4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTkuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGIzM2RmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xOS4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtUmV2ZXJ0LW1lc2EtRW5hYmxlLWFzbS11bmNvbmRpdGlvbmFsbHktbm93LXRoYXQtZ2VuXy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVjMDQ3NzMyYjgxNjUxZGRiMzQxNTk3NTI4YjRiMDk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5MDAwYTBmN2RiYmQ4MmUxOTNiODFhOGYxYmYwYzExOGVhYjdjYTk3NWMwMzI5MTgxOTY4NTk2ZTU0OGUzMGYiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIm1lc2EtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi0jYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKLSNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzIwLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8yMC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlZTI4YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8yMC4wLjIuYmIKQEAgLTAsMCArMSwyNSBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFsbG93LWVuYWJsZS1EUkktd2l0aG91dC1EUkktZHJpdmVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS12YzQtdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtb3V0cHV0LW9mLXRpbWVzcGVjLW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tbWlzZGV0ZWN0cy02NGJpdC1hdG9taWNzLW9uLW1pcHMtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMWNhNTljZDkyYzM4Y2I4ZTFhNThiNjJiMDFjM2UwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTU0ZjFjYjY2OTU1MDYwNmFhYjhjZWI0NzUxMDVkMTVhZWI4MTRmY2E1YTc3OGNlNzBkMGZkMTBlOThlODZmIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJtZXNhLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworQ0ZMQUdTICs9ICItZmNvbW1vbiIKKworI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCisjbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncy9eI2VsaWYgZGVmaW5lZChfX3VuaXhfXykgJiYgZGVmaW5lZChFR0xfTk9fWDExKSQvI2VsaWYgZGVmaW5lZChfX3VuaXhfXykgXCZcJiBkZWZpbmVkKEVHTF9OT19YMTEpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAorICAgIGZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLUZpeC1idWlsZC1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLUZpeC1idWlsZC1yZXByb2R1Y2liaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNhYmY4NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRml4LWJ1aWxkLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGY4YjMyOTAxOTgxYTA2YThkYjQxNjliODJhNzA0ZGNmN2U4YjY1NjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIwIE5vdiAyMDE5IDE1OjQzOjU3IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCByZXByb2R1Y2liaWxpdHkKKworQ2hhbmdlcyB0aGUgY29tbWVudCBpbiBwYW5nby1lbnVtLXR5cGVzLmMgdG8gcmVmZXJlbmNlIHRoZSBmaWxlIGJhc2VuYW1lCitpbnN0ZWFkIG9mIHRoZSBmdWxsIHBhdGguIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBnZW5lcmF0ZWQgZmlsZSBpcworcmVwcm9kdWNpYmxlIHdoZW4gaXQgaXMgaW5jbHVkZWQgaW4gc291cmNlIHBhY2thZ2VzIG1lYW50IGZvciBkZWJ1Z2dpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3BhbmdvL21lcmdlX3JlcXVlc3RzLzE1OV0KK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKy0tLQorIHBhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSBiL3BhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQoraW5kZXggZDkyMmM2OTEuLjBkNTVlZjc0IDEwMDY0NAorLS0tIGEvcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlCisrKysgYi9wYW5nby9wYW5nby1lbnVtLXR5cGVzLmMudGVtcGxhdGUKK0BAIC02LDcgKzYsNyBAQAorIC8qKiogRU5EIGZpbGUtaGVhZGVyICoqKi8KKyAKKyAvKioqIEJFR0lOIGZpbGUtcHJvZHVjdGlvbiAqKiovCistLyogZW51bWVyYXRpb25zIGZyb20gIkBmaWxlbmFtZUAiICovCisrLyogZW51bWVyYXRpb25zIGZyb20gIkBiYXNlbmFtZUAiICovCisgLyoqKiBFTkQgZmlsZS1wcm9kdWN0aW9uICoqKi8KKyAKKyAvKioqIEJFR0lOIHZhbHVlLWhlYWRlciAqKiovCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmOWViZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1Ta2lwLXRoYWktYnJlYWstdGVzdHMtd2l0aG91dC1saWJ0aGFpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAxMmJlYjM5OTI1YjVhNDU3NGE3Y2ZkODYwNzNiNTliY2ViNDlmNzkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dGhpYXMgQ2xhc2VuIDxtY2xhc2VuQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDQgU2VwIDIwMTkgMTU6NTE6MDYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gU2tpcCB0aGFpIGJyZWFrIHRlc3RzIHdpdGhvdXQgbGlidGhhaQotCi1JZiB3ZSBkb24ndCBoYXZlIGxpYnRoYWksIHRoZXNlIHRlc3RzIGZhaWwuCi0KLUNsb3NlczogaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3BhbmdvL2lzc3Vlcy80MjAKLS0tLQotIHRlc3RzL21lc29uLmJ1aWxkIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKLWluZGV4IDRjMjJjMTJjLi5jNjE3MzMxZiAxMDA2NDQKLS0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCi0rKysgYi90ZXN0cy9tZXNvbi5idWlsZAotQEAgLTg5LDkgKzg5LDEyIEBAIHRlc3RfYnJlYWtzX2RhdGEgPSBbCi0gICAnYnJlYWtzL29uZScsCi0gICAnYnJlYWtzL3R3bycsCi0gICAnYnJlYWtzL3RocmVlJywKLS0gICdicmVha3MvZm91cicsCi0gXQotIAotK2lmIHRoYWlfZGVwLmZvdW5kKCkKLSsgIHRlc3RfYnJlYWtzX2RhdGEgKz0gWyAnYnJlYWtzL2ZvdXInLCBdCi0rZW5kaWYKLSsKLSB0ZXN0X2l0ZW1zX2RhdGEgPSBbCi0gICAnaXRlbWl6ZS9vbmUnLAotIF0KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEzOGVmNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKLURFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKLXdpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKLXRoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKLWJlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKLWNvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Ta2lwLXRoYWktYnJlYWstdGVzdHMtd2l0aG91dC1saWJ0aGFpLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGIwYTMyNDNiYTMzZTAyYWFhNzc1NDEyZjhlNWY0MTIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzZTFlNDFiYTgzODczN2UyMDA2MTFmZjAwMWUzYjMwNGMyY2E0Y2RiYmE2M2QyMDBhMjBkYjBiMGRkYzBmODZjIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enogZnJpYmlkaSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICIsLHZpcnR1YWwvbGlieDExIGxpYnhmdCIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi1EaW5zdGFsbC10ZXN0cz10cnVlLCAtRGluc3RhbGwtdGVzdHM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3RoYWldID0gIiwsbGlidGhhaSIKLQotR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgotR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJwotCi1MRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiY2FudGFyZWxsLWZvbnRzIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLWVuLXVzIgotCi1SUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAotICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVlOGFiYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNy5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKK0RFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKK3dpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKK3RoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKK2JlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKK2NvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzc1Y2M1YjgzM2Q5MzRkOThlODMzNDM4MzJlMjBlNWQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2NmE1YjZjYzEzZGI3M2VmZWQ2N2I4ZTkzMzU4NDUwOWY4ZGRiN2IxMGE4YTQwYzM4NTBjYTRhOTg1ZWExYjFmIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enogZnJpYmlkaSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICIsLHZpcnR1YWwvbGlieDExIGxpYnhmdCIKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi1EaW5zdGFsbC10ZXN0cz10cnVlLCAtRGluc3RhbGwtdGVzdHM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RoYWldID0gIiwsbGlidGhhaSIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJworCitkb19jb25maWd1cmVfcHJlcGVuZF90b29sY2hhaW4tY2xhbmcoKSB7CisgICAgc2VkIC1pIC1lICIvV2Vycm9yPWltcGxpY2l0LWZhbGx0aHJvdWdoL2QiICR7U30vbWVzb24uYnVpbGQKK30KKworTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImNhbnRhcmVsbC1mb250cyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1lbi11cyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKKyAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgppbmRleCA2OTZkNDM4Li41OGQxMGQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICIwZDFhNDdhNGMxMGQ0ZGQ3MjI1YmQ2NTEwZjgxOTE2ODRiMzEyMzVlIgorU1JDUkVWID0gIjYxMjZjMmQ0ZTQ3NmM3NzcwZDIxNmZmYTE5MzJjMTBlMmE1YTc4MTMiCiAjICh3aGVuIFBWIGdvZXMgYWJvdmUgMS4wIHJlbW92ZSB0aGUgdHJhaWxpbmcgcikKIFBWID0gIjEuMCtnaXRyJHtTUkNQVn0iCiAKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgIGZpCiB9CiAKKyMgRm9yY2libHkgc3RyaXAgYmVjYXVzZSBQaWdsaXQgaXMgKmh1Z2UqCiBPRUNNQUtFX1RBUkdFVF9JTlNUQUxMID0gImluc3RhbGwvc3RyaXAiCiAKIFJERVBFTkRTXyR7UE59ID0gIndhZmZsZSB3YWZmbGUtYmluIHB5dGhvbjMgcHl0aG9uMy1tYWtvIHB5dGhvbjMtanNvbiBcCkBAIC01NSw1ICs1Niw5IEBACiAKIElOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gYWxyZWFkeS1zdHJpcHBlZCIKIAorIyBBcyBub3RoaW5nIGJ1aWxkcyBhZ2FpbnN0IFBpZ2xpdCB3ZSBkb24ndCBuZWVkIHRvIGhhdmUgYW55dGhpbmcgaW4gdGhlCisjIHN5c3Jvb3QsIGVzcGVjaWFsbHkgd2hlbiB0aGlzIGlzIH4yR0Igb2YgdGVzdCBzdWl0ZQorU1lTUk9PVF9ESVJTX3JlbW92ZSA9ICIke2xpYmRpcn0iCisKICMgQ2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGUKIENDQUNIRV9ESVNBQkxFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtbWVzb24uYnVpbGQtdXNlLXB5dGhvbjMtZGlyZWN0bHktZm9yLXB5dGhvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmQxZDUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtbWVzb24uYnVpbGQtdXNlLXB5dGhvbjMtZGlyZWN0bHktZm9yLXB5dGhvbi5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDYzNzg4YzYzZWQzOWEzY2U5OTk0ZjQzMTVkODk5N2UxYTkzMDBkNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNiBKYW4gMjAyMCAxMjo0NDo0MiArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogdXNlICdweXRob24zJyBkaXJlY3RseSBmb3IgcHl0aG9uCisKK1RoaXMgYXZvaWRzIGEgZGVwZW5kZW5jeSBvbiB0YXJnZXQgcHl0aG9uIChkdWUgdG8gbWVzb24gcHJvYmluZworaXRzIGNvbmZpZ3VyYXRpb24pLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNjgyZDdjOC4uMTlkMmVhZSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTYwLDcgKzYwLDcgQEAgZm9yZWFjaCB3IDogd2FybmluZ3MKKyAgICBlbmRpZgorIGVuZGZvcmVhY2gKKyAKKy1wcm9nX3B5dGhvbiA9IGltcG9ydCgncHl0aG9uJykuZmluZF9pbnN0YWxsYXRpb24oJ3B5dGhvbjMnKQorK3Byb2dfcHl0aG9uID0gJ3B5dGhvbjMnCisgCisgbGliZHJtX2RlcCA9IGRlcGVuZGVuY3koJ2xpYmRybScsIHZlcnNpb24gOiAnPj0yLjQuNTAnKQorIHRocmVhZF9kZXAgPSBkZXBlbmRlbmN5KCd0aHJlYWRzJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyMGQ4NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlZpckdMIHZpcnR1YWwgT3BlbkdMIHJlbmRlcmVyIgotREVTQ1JJUFRJT04gPSAiVmlyZ2lsIGlzIGEgcmVzZWFyY2ggcHJvamVjdCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgb2YgXAotY3JlYXRpbmcgYSB2aXJ0dWFsIDNEIEdQVSBmb3IgdXNlIGluc2lkZSBxZW11IHZpcnR1YWwgbWFjaGluZXMsIHRoYXQgYWxsb3dzIFwKLXRoZSBndWVzdCBvcGVyYXRpbmcgc3lzdGVtIHRvIHVzZSB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBob3N0IEdQVSB0byBcCi1hY2NlbGVyYXRlIDNEIHJlbmRlcmluZy4iCi1IT01FUEFHRSA9ICJodHRwczovL3ZpcmdpbDNkLmdpdGh1Yi5pby8iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzgxYzA4ZWVlZmQ5NDE4ZmNhOGY4ODMwOWE3NmRiMTAiCi0KLURFUEVORFMgPSAibGliZHJtIG1lc2EgbGliZXBveHkiCi1TUkNSRVYgPSAiNDhjYzk2YzlhZWJiOWQwMTY0ODMwYTE1N2VmYzg5MTZmMDhmMDBjMCIKLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvdmlyZ2xyZW5kZXJlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdhbGxpdW0tRXhwYW5kLWxpYmMtY2hlY2stdG8tYmUtcGxhdGZvcm0tT1MtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjawotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNDZiODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjIuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJWaXJHTCB2aXJ0dWFsIE9wZW5HTCByZW5kZXJlciIKK0RFU0NSSVBUSU9OID0gIlZpcmdpbCBpcyBhIHJlc2VhcmNoIHByb2plY3QgdG8gaW52ZXN0aWdhdGUgdGhlIHBvc3NpYmlsaXR5IG9mIFwKK2NyZWF0aW5nIGEgdmlydHVhbCAzRCBHUFUgZm9yIHVzZSBpbnNpZGUgcWVtdSB2aXJ0dWFsIG1hY2hpbmVzLCB0aGF0IGFsbG93cyBcCit0aGUgZ3Vlc3Qgb3BlcmF0aW5nIHN5c3RlbSB0byB1c2UgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgaG9zdCBHUFUgdG8gXAorYWNjZWxlcmF0ZSAzRCByZW5kZXJpbmcuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly92aXJnaWwzZC5naXRodWIuaW8vIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM4MWMwOGVlZWZkOTQxOGZjYThmODgzMDlhNzZkYjEwIgorCitERVBFTkRTID0gImxpYmRybSBtZXNhIGxpYmVwb3h5IgorU1JDUkVWID0gIjdkMjA0ZjM5MjdiZTY1ZmIzMzY1ZGNlMDFkYmNkMDRkNDQ3YTQ5ODUiCitTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3ZpcmdscmVuZGVyZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nYWxsaXVtLUV4cGFuZC1saWJjLWNoZWNrLXRvLWJlLXBsYXRmb3JtLU9TLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24uYnVpbGQtdXNlLXB5dGhvbjMtZGlyZWN0bHktZm9yLXB5dGhvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlc2RrID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXAvMDAwMS1Vc2UtQVNTSU1QX0xJQl9JTlNUQUxMX0RJUi10by1zZWFyY2gtbGlicmFyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXAvMDAwMS1Vc2UtQVNTSU1QX0xJQl9JTlNUQUxMX0RJUi10by1zZWFyY2gtbGlicmFyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGM1YmZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gNThmNTc2ZDZmMjQwYjA4OTU3YTQwMjk2MGNkZjA2Yzc0MjAxYWM3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTIgRGVjIDIwMTkgMjI6MTY6MTUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIEFTU0lNUF9MSUJfSU5TVEFMTF9ESVIgdG8gc2VhcmNoIGxpYnJhcnkKKworVXNlIEFTU0lNUF9MSUJfSU5TVEFMTF9ESVIgcmF0aGVyIHRoYW4gaGFyZGNvZGVkIC9saWIgdG8gc2VhcmNoIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBhc3NpbXBUYXJnZXRzLXJlbGVhc2UuY21ha2UuaW4gfCAxNiArKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Fzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbiBiL2Fzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbgoraW5kZXggZjNkYjhmMS4uYjhhMDY2YSAxMDA2NDQKKy0tLSBhL2Fzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbgorKysrIGIvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluCitAQCAtNDIsMTEgKzQyLDExIEBAIGlmKE1TVkMpCisgICAgICMgSW1wb3J0IHRhcmdldCAiYXNzaW1wOjphc3NpbXAiIGZvciBjb25maWd1cmF0aW9uICJSZWxlYXNlIgorICAgICBzZXRfcHJvcGVydHkoVEFSR0VUIGFzc2ltcDo6YXNzaW1wIEFQUEVORCBQUk9QRVJUWSBJTVBPUlRFRF9DT05GSUdVUkFUSU9OUyBSRUxFQVNFKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworLSAgICAgIElNUE9SVEVEX0lNUExJQl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9saWIvJHtpbXBvcnRMaWJyYXJ5TmFtZX0iCisrICAgICAgSU1QT1JURURfSU1QTElCX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke2ltcG9ydExpYnJhcnlOYW1lfSIKKyAgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9iaW4vJHtzaGFyZWRMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke2ltcG9ydExpYnJhcnlOYW1lfSIpCisrICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtpbXBvcnRMaWJyYXJ5TmFtZX0iKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vYmluLyR7c2hhcmVkTGlicmFyeU5hbWV9IiApCisgICBlbHNlKCkKKyAgICAgc2V0KHN0YXRpY0xpYnJhcnlOYW1lICJhc3NpbXAke0FTU0lNUF9MSUJSQVJZX1NVRkZJWH1AQ01BS0VfU1RBVElDX0xJQlJBUllfU1VGRklYQCIpCitAQCAtNTQsMTAgKzU0LDEwIEBAIGlmKE1TVkMpCisgICAgICMgSW1wb3J0IHRhcmdldCAiYXNzaW1wOjphc3NpbXAiIGZvciBjb25maWd1cmF0aW9uICJSZWxlYXNlIgorICAgICBzZXRfcHJvcGVydHkoVEFSR0VUIGFzc2ltcDo6YXNzaW1wIEFQUEVORCBQUk9QRVJUWSBJTVBPUlRFRF9DT05GSUdVUkFUSU9OUyBSRUxFQVNFKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworLSAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIpCisrICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iKQorICAgZW5kaWYoKQorIAorIGVsc2UoKQorQEAgLTcwLDE3ICs3MCwxNyBAQCBlbHNlKCkKKyAgICAgZW5kaWYoKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworICAgICAgIElNUE9SVEVEX1NPTkFNRV9SRUxFQVNFICIke3NoYXJlZExpYnJhcnlOYW1lfSIKKy0gICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9saWIvJHtzaGFyZWRMaWJyYXJ5TmFtZX0iCisrICAgICAgSU1QT1JURURfTE9DQVRJT05fUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7c2hhcmVkTGlicmFyeU5hbWV9IgorICAgICApCisgICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfVEFSR0VUUyBhc3NpbXA6OmFzc2ltcCApCistICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9saWIvJHtzaGFyZWRMaWJyYXJ5TmFtZX0iICkKKysgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3NoYXJlZExpYnJhcnlOYW1lfSIgKQorICAgZWxzZSgpCisgICAgIHNldChzdGF0aWNMaWJyYXJ5TmFtZSAibGliYXNzaW1wJHtBU1NJTVBfTElCUkFSWV9TVUZGSVh9QENNQUtFX1NUQVRJQ19MSUJSQVJZX1NVRkZJWEAiKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworLSAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIgKQorKyAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7c3RhdGljTGlicmFyeU5hbWV9IiApCisgICBlbmRpZigpCisgZW5kaWYoKQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLWNsb3Nlcy1odHRwcy1naXRodWIuY29tLWFzc2ltcC1hc3NpbXAtaXNzdWVzLTI3MzMtdXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2ExNjU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLWNsb3Nlcy1odHRwcy1naXRodWIuY29tLWFzc2ltcC1hc3NpbXAtaXNzdWVzLTI3MzMtdXAucGF0Y2gKQEAgLTAsMCArMSwxNjY0IEBACitGcm9tIDdmYzIyMGIyMzUwZDc4OTQyZmIzOTM1Y2FkMGIxNTY0NDE4ZWJlOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaW0gS3VsbGluZyA8a2ltLmt1bGxpbmdAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDIwOjMwOjQwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNsb3NlcyBodHRwczovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC9pc3N1ZXMvMjczMzogdXBkYXRlCisgb2YgemxpcCB0byBmaXggZ2NjIGJ1aWxkIGZvciB2OS4yLjAgMzIgYml0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wL2NvbW1pdC9mNzg0NDZiMTRhZmY0NmRiMmVmMjdkMDYyYTI3NWI2YTAxZmQ2OGIxXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb250cmliL3ppcC8uZ2l0aWdub3JlICAgICAgICAgIHwgICAyICsKKyBjb250cmliL3ppcC9DTWFrZUxpc3RzLnR4dCAgICAgIHwgIDgzICsrKysrLQorIGNvbnRyaWIvemlwL1JFQURNRS5tZCAgICAgICAgICAgfCAgMTIgKy0KKyBjb250cmliL3ppcC9hcHB2ZXlvci55bWwgICAgICAgIHwgICAyICstCisgY29udHJpYi96aXAvc3JjL21pbml6LmggICAgICAgICB8IDQ1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQorIGNvbnRyaWIvemlwL3NyYy96aXAuYyAgICAgICAgICAgfCAgNjIgKysrLS0KKyBjb250cmliL3ppcC9zcmMvemlwLmggICAgICAgICAgIHwgNDU3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dCB8ICAyNyArLQorIGNvbnRyaWIvemlwL3Rlc3QvdGVzdC5jICAgICAgICAgfCAgMzggKystCisgY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMgICB8ICAyNSArLQorIDEwIGZpbGVzIGNoYW5nZWQsIDgyMSBpbnNlcnRpb25zKCspLCAzNDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC8uZ2l0aWdub3JlIGIvY29udHJpYi96aXAvLmdpdGlnbm9yZQoraW5kZXggYTc5MDRhMWUuLjQ5YjJjYjJmIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvLmdpdGlnbm9yZQorKysrIGIvY29udHJpYi96aXAvLmdpdGlnbm9yZQorQEAgLTEsNiArMSw3IEBACisgL2J1aWxkLworIC90ZXN0L2J1aWxkLworIC94Y29kZXByb2ovCisrLnZzY29kZS8KKyAKKyAjIE9iamVjdCBmaWxlcworICoubworQEAgLTU0LDMgKzU1LDQgQEAgemlwLmRpci8KKyB0ZXN0L3Rlc3QuZXhlLnZjeHByb2ouZmlsdGVycworIHRlc3QvdGVzdC5leGUudmN4cHJvagorIHRlc3QvdGVzdC5leGUuZGlyLworKworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0IGIvY29udHJpYi96aXAvQ01ha2VMaXN0cy50eHQKK2luZGV4IGI0NmRiYjFkLi43NzkxNmQyZSAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0CisrKysgYi9jb250cmliL3ppcC9DTWFrZUxpc3RzLnR4dAorQEAgLTEsMTAgKzEsMTQgQEAKKy1jbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44KQorLXByb2plY3QoemlwKQorLWVuYWJsZV9sYW5ndWFnZShDKQorK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCisrCisrcHJvamVjdCh6aXAKKysgIExBTkdVQUdFUyBDCisrICBWRVJTSU9OICIwLjEuMTUiKQorIHNldChDTUFLRV9NT0RVTEVfUEFUSCAiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlIiAke0NNQUtFX01PRFVMRV9QQVRIfSkKKyAKKytvcHRpb24oQ01BS0VfRElTQUJMRV9URVNUSU5HICJEaXNhYmxlIHRlc3QgY3JlYXRpb24iIE9GRikKKysKKyBpZiAoTVNWQykKKy0gICMgVXNlIHNlY3VyZSBmdW5jdGlvbnMgYnkgZGVmYXVhbHQgYW5kIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0ICJkZXByZWNhdGVkIiBmdW5jdGlvbnMKKysgICMgVXNlIHNlY3VyZSBmdW5jdGlvbnMgYnkgZGVmYXVsdCBhbmQgc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgImRlcHJlY2F0ZWQiIGZ1bmN0aW9ucworICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL0QgX0NSVF9TRUNVUkVfQ1BQX09WRVJMT0FEX1NUQU5EQVJEX05BTUVTPTEiKQorICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL0QgX0NSVF9TRUNVUkVfQ1BQX09WRVJMT0FEX1NUQU5EQVJEX05BTUVTX0NPVU5UPTEiKQorICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL0QgX0NSVF9OT05TVERDX05PX1dBUk5JTkdTPTEgL0QgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1M9MSIpCitAQCAtMTIsMjggKzE2LDgwIEBAIGVsc2VpZiAoIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJHTlUiIE9SCisgICAgICAgICAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkNsYW5nIiBPUgorICAgICAgICAgIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJBcHBsZUNsYW5nIikKKyAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1zdGQ9Yzk5IC1XYWxsIC1XZXh0cmEgLVdlcnJvciAtcGVkYW50aWMiKQorKyAgaWYoRU5BQkxFX0NPVkVSQUdFKQorKyAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZyAtTzAgLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNvdmVyYWdlIikKKysgICAgc2V0KENNQUtFX0VYRV9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhFX0xJTktFUl9GTEFHU30gLS1jb3ZlcmFnZSIpCisrICBlbmRpZigpCisgZW5kaWYgKE1TVkMpCisgCisgIyB6aXAKKyBzZXQoU1JDIHNyYy9taW5pei5oIHNyYy96aXAuaCBzcmMvemlwLmMpCisgYWRkX2xpYnJhcnkoJHtQUk9KRUNUX05BTUV9ICR7U1JDfSkKKy10YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke1BST0pFQ1RfTkFNRX0gSU5URVJGQUNFIHNyYykKKyt0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke1BST0pFQ1RfTkFNRX0gUFVCTElDCisrICAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vc3JjPgorKyAgJDxJTlNUQUxMX0lOVEVSRkFDRTppbmNsdWRlPgorKykKKyAKKyAjIHRlc3QKKyBpZiAoTk9UIENNQUtFX0RJU0FCTEVfVEVTVElORykKKyAgIGVuYWJsZV90ZXN0aW5nKCkKKyAgIGFkZF9zdWJkaXJlY3RvcnkodGVzdCkKKyAgIGZpbmRfcGFja2FnZShTYW5pdGl6ZXJzKQorLSAgYWRkX3Nhbml0aXplcnMoJHtQUk9KRUNUX05BTUV9IHRlc3QuZXhlKQorLSAgYWRkX3Nhbml0aXplcnMoJHtQUk9KRUNUX05BTUV9IHRlc3RfbWluaXouZXhlKQorKyAgYWRkX3Nhbml0aXplcnMoJHtQUk9KRUNUX05BTUV9ICR7dGVzdF9vdXR9ICR7dGVzdF9taW5pel9vdXR9KQorIGVuZGlmKCkKKyAKKysjIyMjCisrIyBJbnN0YWxsYXRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JleGFtcGxlL3BhY2thZ2UtZXhhbXBsZSkgeworKworK3NldChDT05GSUdfSU5TVEFMTF9ESVIgImxpYi9jbWFrZS8ke1BST0pFQ1RfTkFNRX0iKQorK3NldChJTkNMVURFX0lOU1RBTExfRElSICJpbmNsdWRlIikKKysKKytzZXQoR0VORVJBVEVEX0RJUiAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2dlbmVyYXRlZCIpCisrCisrIyBDb25maWd1cmF0aW9uCisrc2V0KFZFUlNJT05fQ09ORklHICIke0dFTkVSQVRFRF9ESVJ9LyR7UFJPSkVDVF9OQU1FfUNvbmZpZ1ZlcnNpb24uY21ha2UiKQorK3NldChQUk9KRUNUX0NPTkZJRyAiJHtHRU5FUkFURURfRElSfS8ke1BST0pFQ1RfTkFNRX1Db25maWcuY21ha2UiKQorK3NldChUQVJHRVRTX0VYUE9SVF9OQU1FICIke1BST0pFQ1RfTkFNRX1UYXJnZXRzIikKKytzZXQoTkFNRVNQQUNFICIke1BST0pFQ1RfTkFNRX06OiIpCisrCisrIyBJbmNsdWRlIG1vZHVsZSB3aXRoIGZ1Y3Rpb24gJ3dyaXRlX2Jhc2ljX3BhY2thZ2VfdmVyc2lvbl9maWxlJworK2luY2x1ZGUoQ01ha2VQYWNrYWdlQ29uZmlnSGVscGVycykKKysKKysjIE5vdGU6IFBST0pFQ1RfVkVSU0lPTiBpcyB1c2VkIGFzIGEgVkVSU0lPTgorK3dyaXRlX2Jhc2ljX3BhY2thZ2VfdmVyc2lvbl9maWxlKAorKyAgICAiJHtWRVJTSU9OX0NPTkZJR30iIENPTVBBVElCSUxJVFkgU2FtZU1ham9yVmVyc2lvbgorKykKKysKKysjIFVzZSB2YXJpYWJsZXM6CisrIyAgICogVEFSR0VUU19FWFBPUlRfTkFNRQorKyMgICAqIFBST0pFQ1RfTkFNRQorK2NvbmZpZ3VyZV9wYWNrYWdlX2NvbmZpZ19maWxlKAorKyAgICAiY21ha2UvQ29uZmlnLmNtYWtlLmluIgorKyAgICAiJHtQUk9KRUNUX0NPTkZJR30iCisrICAgIElOU1RBTExfREVTVElOQVRJT04gIiR7Q09ORklHX0lOU1RBTExfRElSfSIKKyspCisrCisraW5zdGFsbCgKKysgICAgRklMRVMgIiR7UFJPSkVDVF9DT05GSUd9IiAiJHtWRVJTSU9OX0NPTkZJR30iCisrICAgIERFU1RJTkFUSU9OICIke0NPTkZJR19JTlNUQUxMX0RJUn0iCisrKQorKworK2luc3RhbGwoCisrICAgIEVYUE9SVCAiJHtUQVJHRVRTX0VYUE9SVF9OQU1FfSIKKysgICAgTkFNRVNQQUNFICIke05BTUVTUEFDRX0iCisrICAgIERFU1RJTkFUSU9OICIke0NPTkZJR19JTlNUQUxMX0RJUn0iCisrKQorKworKyMgfQorKworIGluc3RhbGwoVEFSR0VUUyAke1BST0pFQ1RfTkFNRX0KKysgICAgICAgIEVYUE9SVCAke1RBUkdFVFNfRVhQT1JUX05BTUV9CisgICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OIGJpbgorICAgICAgICAgQVJDSElWRSBERVNUSU5BVElPTiBsaWIKKyAgICAgICAgIExJQlJBUlkgREVTVElOQVRJT04gbGliCistICAgICAgICBDT01QT05FTlQgbGlicmFyeSkKKy1pbnN0YWxsKEZJTEVTICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9zcmMvemlwLmggREVTVElOQVRJT04gaW5jbHVkZSkKKysgICAgICAgIElOQ0xVREVTIERFU1RJTkFUSU9OICR7SU5DTFVERV9JTlNUQUxMX0RJUn0KKyspCisraW5zdGFsbChGSUxFUyAke1BST0pFQ1RfU09VUkNFX0RJUn0vc3JjL3ppcC5oIERFU1RJTkFUSU9OICR7SU5DTFVERV9JTlNUQUxMX0RJUn0vemlwKQorIAorICMgdW5pbnN0YWxsIHRhcmdldCAoaHR0cHM6Ly9naXRsYWIua2l0d2FyZS5jb20vY21ha2UvY29tbXVuaXR5L3dpa2lzL0ZBUSNjYW4taS1kby1tYWtlLXVuaW5zdGFsbC13aXRoLWNtYWtlKQorIGlmKE5PVCBUQVJHRVQgdW5pbnN0YWxsKQorQEAgLTQ1LDMgKzEwMSwxMiBAQCBpZihOT1QgVEFSR0VUIHVuaW5zdGFsbCkKKyAgICAgYWRkX2N1c3RvbV90YXJnZXQodW5pbnN0YWxsCisgICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLVAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2NtYWtlL2NtYWtlX3VuaW5zdGFsbC5jbWFrZSkKKyBlbmRpZigpCisrCisrZmluZF9wYWNrYWdlKERveHlnZW4pCisraWYoRE9YWUdFTl9GT1VORCkKKysgICAgY29uZmlndXJlX2ZpbGUoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0RveHlmaWxlLmluICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9Eb3h5ZmlsZSBAT05MWSkKKysgICAgYWRkX2N1c3RvbV90YXJnZXQoZG9jCisrICAgICAgICAke0RPWFlHRU5fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L0RveHlmaWxlCisrICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0KKysgICAgICAgIENPTU1FTlQgIkdlbmVyYXRpbmcgQVBJIGRvY3VtZW50YXRpb24gd2l0aCBEb3h5Z2VuIiBWRVJCQVRJTSkKKytlbmRpZigpCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvUkVBRE1FLm1kIGIvY29udHJpYi96aXAvUkVBRE1FLm1kCitpbmRleCBkNWZiOGNkMi4uMTRlYjlhMzQgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9SRUFETUUubWQKKysrKyBiL2NvbnRyaWIvemlwL1JFQURNRS5tZAorQEAgLTcxLDcgKzcxLDcgQEAgaW50IGFyZyA9IDI7CisgemlwX2V4dHJhY3QoImZvby56aXAiLCAiL3RtcCIsIG9uX2V4dHJhY3RfZW50cnksICZhcmcpOworIGBgYAorIAorLSogICBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5LgorKyogRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIG1lbW9yeS4KKyBgYGBjCisgdm9pZCAqYnVmID0gTlVMTDsKKyBzaXplX3QgYnVmc2l6ZTsKK0BAIC04OSw3ICs4OSw3IEBAIHppcF9jbG9zZSh6aXApOworIGZyZWUoYnVmKTsKKyBgYGAKKyAKKy0qICAgRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIG1lbW9yeSAobm8gaW50ZXJuYWwgYWxsb2NhdGlvbikuCisrKiBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5IChubyBpbnRlcm5hbCBhbGxvY2F0aW9uKS4KKyBgYGBjCisgdW5zaWduZWQgY2hhciAqYnVmOworIHNpemVfdCBidWZzaXplOworQEAgLTExMCw3ICsxMTAsNyBAQCB6aXBfY2xvc2UoemlwKTsKKyBmcmVlKGJ1Zik7CisgYGBgCisgCistKiAgIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkgdXNpbmcgY2FsbGJhY2suCisrKiBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5IHVzaW5nIGNhbGxiYWNrLgorIGBgYGMKKyBzdHJ1Y3QgYnVmZmVyX3QgeworICAgICBjaGFyICpkYXRhOworQEAgLTE0NCw3ICsxNDQsNyBAQCBmcmVlKGJ1Zi5kYXRhKTsKKyBgYGAKKyAKKyAKKy0qICAgRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIGEgZmlsZS4KKysqIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBhIGZpbGUuCisgYGBgYworIHN0cnVjdCB6aXBfdCAqemlwID0gemlwX29wZW4oImZvby56aXAiLCAwLCAncicpOworIHsKK0BAIC0xNTcsNyArMTU3LDcgQEAgc3RydWN0IHppcF90ICp6aXAgPSB6aXBfb3BlbigiZm9vLnppcCIsIDAsICdyJyk7CisgemlwX2Nsb3NlKHppcCk7CisgYGBgCisgCistKiAgIExpc3Qgb2YgYWxsIHppcCBlbnRyaWVzCisrKiBMaXN0IG9mIGFsbCB6aXAgZW50cmllcworIGBgYGMKKyBzdHJ1Y3QgemlwX3QgKnppcCA9IHppcF9vcGVuKCJmb28uemlwIiwgMCwgJ3InKTsKKyBpbnQgaSwgbiA9IHppcF90b3RhbF9lbnRyaWVzKHppcCk7CitAQCAtMTc0LDcgKzE3NCw3IEBAIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKKyB6aXBfY2xvc2UoemlwKTsKKyBgYGAKKyAKKy0jIyBCaW5kaW5ncworKyMgQmluZGluZ3MKKyBDb21waWxlIHppcCBsaWJyYXJ5IGFzIGEgZHluYW1pYyBsaWJyYXJ5LgorIGBgYHNoZWxsCisgJCBta2RpciBidWlsZAorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL2FwcHZleW9yLnltbCBiL2NvbnRyaWIvemlwL2FwcHZleW9yLnltbAoraW5kZXggMGJlNjM3M2MuLmVhMTdmNWRlIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvYXBwdmV5b3IueW1sCisrKysgYi9jb250cmliL3ppcC9hcHB2ZXlvci55bWwKK0BAIC0xLDQgKzEsNCBAQAorLXZlcnNpb246IHppcC0wLjEuOS57YnVpbGR9CisrdmVyc2lvbjogemlwLTAuMS4xNS57YnVpbGR9CisgYnVpbGRfc2NyaXB0OgorIC0gY21kOiA+LQorICAgICBjZCBjOlxwcm9qZWN0c1x6aXAKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC9zcmMvbWluaXouaCBiL2NvbnRyaWIvemlwL3NyYy9taW5pei5oCitpbmRleCAyYzI3YTk0ZC4uYzRmY2ZiODMgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9zcmMvbWluaXouaAorKysrIGIvY29udHJpYi96aXAvc3JjL21pbml6LmgKK0BAIC0yMjEsNiArMjIxLDcgQEAKKyAjaWZuZGVmIE1JTklaX0hFQURFUl9JTkNMVURFRAorICNkZWZpbmUgTUlOSVpfSEVBREVSX0lOQ0xVREVECisgCisrI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKyAvLyBEZWZpbmVzIHRvIGNvbXBsZXRlbHkgZGlzYWJsZSBzcGVjaWZpYyBwb3J0aW9ucyBvZiBtaW5pei5jOgorQEAgLTI4NCw3ICsyODUsOCBAQAorIC8qIFNldCBNSU5JWl9VU0VfVU5BTElHTkVEX0xPQURTX0FORF9TVE9SRVMgb25seSBpZiBub3Qgc2V0ICovCisgI2lmICFkZWZpbmVkKE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUykKKyAjaWYgTUlOSVpfWDg2X09SX1g2NF9DUFUKKy0vKiBTZXQgTUlOSVpfVVNFX1VOQUxJR05FRF9MT0FEU19BTkRfU1RPUkVTIHRvIDEgb24gQ1BVJ3MgdGhhdCBwZXJtaXQgZWZmaWNpZW50IGludGVnZXIgbG9hZHMgYW5kIHN0b3JlcyBmcm9tIHVuYWxpZ25lZCBhZGRyZXNzZXMuICovCisrLyogU2V0IE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyB0byAxIG9uIENQVSdzIHRoYXQgcGVybWl0IGVmZmljaWVudAorKyAqIGludGVnZXIgbG9hZHMgYW5kIHN0b3JlcyBmcm9tIHVuYWxpZ25lZCBhZGRyZXNzZXMuICovCisgI2RlZmluZSBNSU5JWl9VU0VfVU5BTElHTkVEX0xPQURTX0FORF9TVE9SRVMgMQorICNkZWZpbmUgTUlOSVpfVU5BTElHTkVEX1VTRV9NRU1DUFkKKyAjZWxzZQorQEAgLTM1NCw2ICszNTYsNDQgQEAgZW51bSB7CisgICBNWl9GSVhFRCA9IDQKKyB9OworIAorKy8qIG1pbml6IGVycm9yIGNvZGVzLiBCZSBzdXJlIHRvIHVwZGF0ZSBtel96aXBfZ2V0X2Vycm9yX3N0cmluZygpIGlmIHlvdSBhZGQgb3IKKysgKiBtb2RpZnkgdGhpcyBlbnVtLiAqLworK3R5cGVkZWYgZW51bSB7CisrICBNWl9aSVBfTk9fRVJST1IgPSAwLAorKyAgTVpfWklQX1VOREVGSU5FRF9FUlJPUiwKKysgIE1aX1pJUF9UT09fTUFOWV9GSUxFUywKKysgIE1aX1pJUF9GSUxFX1RPT19MQVJHRSwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9NRVRIT0QsCisrICBNWl9aSVBfVU5TVVBQT1JURURfRU5DUllQVElPTiwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9GRUFUVVJFLAorKyAgTVpfWklQX0ZBSUxFRF9GSU5ESU5HX0NFTlRSQUxfRElSLAorKyAgTVpfWklQX05PVF9BTl9BUkNISVZFLAorKyAgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9NVUxUSURJU0ssCisrICBNWl9aSVBfREVDT01QUkVTU0lPTl9GQUlMRUQsCisrICBNWl9aSVBfQ09NUFJFU1NJT05fRkFJTEVELAorKyAgTVpfWklQX1VORVhQRUNURURfREVDT01QUkVTU0VEX1NJWkUsCisrICBNWl9aSVBfQ1JDX0NIRUNLX0ZBSUxFRCwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9DRElSX1NJWkUsCisrICBNWl9aSVBfQUxMT0NfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfT1BFTl9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9DUkVBVEVfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfV1JJVEVfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfUkVBRF9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9DTE9TRV9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9TRUVLX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX1NUQVRfRkFJTEVELAorKyAgTVpfWklQX0lOVkFMSURfUEFSQU1FVEVSLAorKyAgTVpfWklQX0lOVkFMSURfRklMRU5BTUUsCisrICBNWl9aSVBfQlVGX1RPT19TTUFMTCwKKysgIE1aX1pJUF9JTlRFUk5BTF9FUlJPUiwKKysgIE1aX1pJUF9GSUxFX05PVF9GT1VORCwKKysgIE1aX1pJUF9BUkNISVZFX1RPT19MQVJHRSwKKysgIE1aX1pJUF9WQUxJREFUSU9OX0ZBSUxFRCwKKysgIE1aX1pJUF9XUklURV9DQUxMQkFDS19GQUlMRUQsCisrICBNWl9aSVBfVE9UQUxfRVJST1JTCisrfSBtel96aXBfZXJyb3I7CisrCisgLy8gTWV0aG9kCisgI2RlZmluZSBNWl9ERUZMQVRFRCA4CisgCitAQCAtNjk2LDYgKzczNiw3IEBAIHR5cGVkZWYgc2l6ZV90ICgqbXpfZmlsZV9yZWFkX2Z1bmMpKHZvaWQgKnBPcGFxdWUsIG16X3VpbnQ2NCBmaWxlX29mcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwQnVmLCBzaXplX3Qgbik7CisgdHlwZWRlZiBzaXplX3QgKCptel9maWxlX3dyaXRlX2Z1bmMpKHZvaWQgKnBPcGFxdWUsIG16X3VpbnQ2NCBmaWxlX29mcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcEJ1Ziwgc2l6ZV90IG4pOworK3R5cGVkZWYgbXpfYm9vbCAoKm16X2ZpbGVfbmVlZHNfa2VlcGFsaXZlKSh2b2lkICpwT3BhcXVlKTsKKyAKKyBzdHJ1Y3QgbXpfemlwX2ludGVybmFsX3N0YXRlX3RhZzsKKyB0eXBlZGVmIHN0cnVjdCBtel96aXBfaW50ZXJuYWxfc3RhdGVfdGFnIG16X3ppcF9pbnRlcm5hbF9zdGF0ZTsKK0BAIC03MDcsMTMgKzc0OCwyNyBAQCB0eXBlZGVmIGVudW0geworICAgTVpfWklQX01PREVfV1JJVElOR19IQVNfQkVFTl9GSU5BTElaRUQgPSAzCisgfSBtel96aXBfbW9kZTsKKyAKKy10eXBlZGVmIHN0cnVjdCBtel96aXBfYXJjaGl2ZV90YWcgeworK3R5cGVkZWYgZW51bSB7CisrICBNWl9aSVBfVFlQRV9JTlZBTElEID0gMCwKKysgIE1aX1pJUF9UWVBFX1VTRVIsCisrICBNWl9aSVBfVFlQRV9NRU1PUlksCisrICBNWl9aSVBfVFlQRV9IRUFQLAorKyAgTVpfWklQX1RZUEVfRklMRSwKKysgIE1aX1pJUF9UWVBFX0NGSUxFLAorKyAgTVpfWklQX1RPVEFMX1RZUEVTCisrfSBtel96aXBfdHlwZTsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisgICBtel91aW50NjQgbV9hcmNoaXZlX3NpemU7CisgICBtel91aW50NjQgbV9jZW50cmFsX2RpcmVjdG9yeV9maWxlX29mczsKKy0gIG16X3VpbnQgbV90b3RhbF9maWxlczsKKysKKysgIC8qIFdlIG9ubHkgc3VwcG9ydCB1cCB0byBVSU5UMzJfTUFYIGZpbGVzIGluIHppcDY0IG1vZGUuICovCisrICBtel91aW50MzIgbV90b3RhbF9maWxlczsKKyAgIG16X3ppcF9tb2RlIG1femlwX21vZGU7CisrICBtel96aXBfdHlwZSBtX3ppcF90eXBlOworKyAgbXpfemlwX2Vycm9yIG1fbGFzdF9lcnJvcjsKKyAKKy0gIG16X3VpbnQgbV9maWxlX29mZnNldF9hbGlnbm1lbnQ7CisrICBtel91aW50NjQgbV9maWxlX29mZnNldF9hbGlnbm1lbnQ7CisgCisgICBtel9hbGxvY19mdW5jIG1fcEFsbG9jOworICAgbXpfZnJlZV9mdW5jIG1fcEZyZWU7CitAQCAtNzIyLDYgKzc3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IG16X3ppcF9hcmNoaXZlX3RhZyB7CisgCisgICBtel9maWxlX3JlYWRfZnVuYyBtX3BSZWFkOworICAgbXpfZmlsZV93cml0ZV9mdW5jIG1fcFdyaXRlOworKyAgbXpfZmlsZV9uZWVkc19rZWVwYWxpdmUgbV9wTmVlZHNfa2VlcGFsaXZlOworICAgdm9pZCAqbV9wSU9fb3BhcXVlOworIAorICAgbXpfemlwX2ludGVybmFsX3N0YXRlICptX3BTdGF0ZTsKK0BAIC0xMjYzLDYgKzEzMTksOSBAQCBtel91aW50IHRkZWZsX2NyZWF0ZV9jb21wX2ZsYWdzX2Zyb21femlwX3BhcmFtcyhpbnQgbGV2ZWwsIGludCB3aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyYXRlZ3kpOworICNlbmRpZiAvLyAjaWZuZGVmIE1JTklaX05PX1pMSUJfQVBJUworIAorKyNkZWZpbmUgTVpfVUlOVDE2X01BWCAoMHhGRkZGVSkKKysjZGVmaW5lIE1aX1VJTlQzMl9NQVggKDB4RkZGRkZGRkZVKQorKworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKK0BAIC0xMzExLDYgKzEzNzAsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIG16X3ZhbGlkYXRlX3VpbnQ2NFtzaXplb2YobXpfdWludDY0KSA9PSA4ID8gMSA6IC0xXTsKKyAgICAoKG16X3VpbnQzMikoKChjb25zdCBtel91aW50OCAqKShwKSlbM10pIDw8IDI0VSkpCisgI2VuZGlmCisgCisrI2RlZmluZSBNWl9SRUFEX0xFNjQocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICgoKG16X3VpbnQ2NClNWl9SRUFEX0xFMzIocCkpIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICgoKG16X3VpbnQ2NClNWl9SRUFEX0xFMzIoKGNvbnN0IG16X3VpbnQ4ICopKHApICsgc2l6ZW9mKG16X3VpbnQzMikpKSAgICAgICBcCisrICAgIDw8IDMyVSkpCisrCisgI2lmZGVmIF9NU0NfVkVSCisgI2RlZmluZSBNWl9GT1JDRUlOTElORSBfX2ZvcmNlaW5saW5lCisgI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKK0BAIC00MTYwLDYgKzQyMjQsMTcgQEAgZW51bSB7CisgICBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFID0gMzAsCisgICBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgPSA0NiwKKyAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgPSAyMiwKKysKKysgIC8qIFpJUDY0IGFyY2hpdmUgaWRlbnRpZmllciBhbmQgcmVjb3JkIHNpemVzICovCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRyA9IDB4MDYwNjRiNTAsCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSUcgPSAweDA3MDY0YjUwLAorKyAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFID0gNTYsCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFID0gMjAsCisrICBNWl9aSVA2NF9FWFRFTkRFRF9JTkZPUk1BVElPTl9GSUVMRF9IRUFERVJfSUQgPSAweDAwMDEsCisrICBNWl9aSVBfREFUQV9ERVNDUklQVE9SX0lEID0gMHgwODA3NGI1MCwKKysgIE1aX1pJUF9EQVRBX0RFU0NSSVBURVJfU0laRTY0ID0gMjQsCisrICBNWl9aSVBfREFUQV9ERVNDUklQVEVSX1NJWkUzMiA9IDE2LAorKworICAgLy8gQ2VudHJhbCBkaXJlY3RvcnkgaGVhZGVyIHJlY29yZCBvZmZzZXRzCisgICBNWl9aSVBfQ0RIX1NJR19PRlMgPSAwLAorICAgTVpfWklQX0NESF9WRVJTSU9OX01BREVfQllfT0ZTID0gNCwKK0BAIC00MTk5LDYgKzQyNzQsMzEgQEAgZW51bSB7CisgICBNWl9aSVBfRUNESF9DRElSX1NJWkVfT0ZTID0gMTIsCisgICBNWl9aSVBfRUNESF9DRElSX09GU19PRlMgPSAxNiwKKyAgIE1aX1pJUF9FQ0RIX0NPTU1FTlRfU0laRV9PRlMgPSAyMCwKKysKKysgIC8qIFpJUDY0IEVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBsb2NhdG9yIG9mZnNldHMgKi8KKysgIE1aX1pJUDY0X0VDRExfU0lHX09GUyA9IDAsICAgICAgICAgICAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RMX05VTV9ESVNLX0NESVJfT0ZTID0gNCwgICAgICAgICAgLyogNCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNETF9SRUxfT0ZTX1RPX1pJUDY0X0VDRFJfT0ZTID0gOCwgIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDRExfVE9UQUxfTlVNQkVSX09GX0RJU0tTX09GUyA9IDE2LCAvKiA0IGJ5dGVzICovCisrCisrICAvKiBaSVA2NCBFbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgaGVhZGVyIG9mZnNldHMgKi8KKysgIE1aX1pJUDY0X0VDREhfU0lHX09GUyA9IDAsICAgICAgICAgICAgICAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX1NJWkVfT0ZfUkVDT1JEX09GUyA9IDQsICAgICAgICAgICAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9WRVJTSU9OX01BREVfQllfT0ZTID0gMTIsICAgICAgICAgIC8qIDIgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfVkVSU0lPTl9ORUVERURfT0ZTID0gMTQsICAgICAgICAgICAvKiAyIGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX05VTV9USElTX0RJU0tfT0ZTID0gMTYsICAgICAgICAgICAgLyogNCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9OVU1fRElTS19DRElSX09GUyA9IDIwLCAgICAgICAgICAgIC8qIDQgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfQ0RJUl9OVU1fRU5UUklFU19PTl9ESVNLX09GUyA9IDI0LCAvKiA4IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMgPSAzMiwgICAgICAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9DRElSX1NJWkVfT0ZTID0gNDAsICAgICAgICAgICAgICAgIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfQ0RJUl9PRlNfT0ZTID0gNDgsICAgICAgICAgICAgICAgICAvKiA4IGJ5dGVzICovCisrICBNWl9aSVBfVkVSU0lPTl9NQURFX0JZX0RPU19GSUxFU1lTVEVNX0lEID0gMCwKKysgIE1aX1pJUF9ET1NfRElSX0FUVFJJQlVURV9CSVRGTEFHID0gMHgxMCwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfSVNfRU5DUllQVEVEID0gMSwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfQ09NUFJFU1NFRF9QQVRDSF9GTEFHID0gMzIsCisrICBNWl9aSVBfR0VORVJBTF9QVVJQT1NFX0JJVF9GTEFHX1VTRVNfU1RST05HX0VOQ1JZUFRJT04gPSA2NCwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfTE9DQUxfRElSX0lTX01BU0tFRCA9IDgxOTIsCisrICBNWl9aSVBfR0VORVJBTF9QVVJQT1NFX0JJVF9GTEFHX1VURjggPSAxIDw8IDExCisgfTsKKyAKKyB0eXBlZGVmIHN0cnVjdCB7CitAQCAtNDIxMSw3ICs0MzExLDI0IEBAIHN0cnVjdCBtel96aXBfaW50ZXJuYWxfc3RhdGVfdGFnIHsKKyAgIG16X3ppcF9hcnJheSBtX2NlbnRyYWxfZGlyOworICAgbXpfemlwX2FycmF5IG1fY2VudHJhbF9kaXJfb2Zmc2V0czsKKyAgIG16X3ppcF9hcnJheSBtX3NvcnRlZF9jZW50cmFsX2Rpcl9vZmZzZXRzOworKworKyAgLyogVGhlIGZsYWdzIHBhc3NlZCBpbiB3aGVuIHRoZSBhcmNoaXZlIGlzIGluaXRpYWxseSBvcGVuZWQuICovCisrICB1aW50MzJfdCBtX2luaXRfZmxhZ3M7CisrCisrICAvKiBNWl9UUlVFIGlmIHRoZSBhcmNoaXZlIGhhcyBhIHppcDY0IGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBoZWFkZXJzLCBldGMuCisrICAgKi8KKysgIG16X2Jvb2wgbV96aXA2NDsKKysKKysgIC8qIE1aX1RSVUUgaWYgd2UgZm91bmQgemlwNjQgZXh0ZW5kZWQgaW5mbyBpbiB0aGUgY2VudHJhbCBkaXJlY3RvcnkgKG1femlwNjQKKysgICAqIHdpbGwgYWxzbyBiZSBzbGFtbWVkIHRvIHRydWUgdG9vLCBldmVuIGlmIHdlIGRpZG4ndCBmaW5kIGEgemlwNjQgZW5kIG9mCisrICAgKiBjZW50cmFsIGRpciBoZWFkZXIsIGV0Yy4pICovCisrICBtel9ib29sIG1femlwNjRfaGFzX2V4dGVuZGVkX2luZm9fZmllbGRzOworKworKyAgLyogVGhlc2UgZmllbGRzIGFyZSB1c2VkIGJ5IHRoZSBmaWxlLCBGSUxFLCBtZW1vcnksIGFuZCBtZW1vcnkvaGVhcCByZWFkL3dyaXRlCisrICAgKiBoZWxwZXJzLiAqLworICAgTVpfRklMRSAqbV9wRmlsZTsKKysgIG16X3VpbnQ2NCBtX2ZpbGVfYXJjaGl2ZV9zdGFydF9vZnM7CisrCisgICB2b2lkICptX3BNZW07CisgICBzaXplX3QgbV9tZW1fc2l6ZTsKKyAgIHNpemVfdCBtX21lbV9jYXBhY2l0eTsKK0BAIC00MzYzLDYgKzQ0ODAsMTMgQEAgc3RhdGljIG16X2Jvb2wgbXpfemlwX3NldF9maWxlX3RpbWVzKGNvbnN0IGNoYXIgKnBGaWxlbmFtZSwgdGltZV90IGFjY2Vzc190aW1lLAorICNlbmRpZiAvKiAjaWZuZGVmIE1JTklaX05PX1NURElPICovCisgI2VuZGlmIC8qICNpZm5kZWYgTUlOSVpfTk9fVElNRSAqLworIAorK3N0YXRpYyBNWl9GT1JDRUlOTElORSBtel9ib29sIG16X3ppcF9zZXRfZXJyb3IobXpfemlwX2FyY2hpdmUgKnBaaXAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel96aXBfZXJyb3IgZXJyX251bSkgeworKyAgaWYgKHBaaXApCisrICAgIHBaaXAtPm1fbGFzdF9lcnJvciA9IGVycl9udW07CisrICByZXR1cm4gTVpfRkFMU0U7CisrfQorKworIHN0YXRpYyBtel9ib29sIG16X3ppcF9yZWFkZXJfaW5pdF9pbnRlcm5hbChtel96aXBfYXJjaGl2ZSAqcFppcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyIGZsYWdzKSB7CisgICAodm9pZClmbGFnczsKK0BAIC00NDgwLDEyNyArNDYwNCwzNDYgQEAgbXpfemlwX3JlYWRlcl9zb3J0X2NlbnRyYWxfZGlyX29mZnNldHNfYnlfZmlsZW5hbWUobXpfemlwX2FyY2hpdmUgKnBaaXApIHsKKyAgIH0KKyB9CisgCistc3RhdGljIG16X2Jvb2wgbXpfemlwX3JlYWRlcl9yZWFkX2NlbnRyYWxfZGlyKG16X3ppcF9hcmNoaXZlICpwWmlwLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIgZmxhZ3MpIHsKKy0gIG16X3VpbnQgY2Rpcl9zaXplLCBudW1fdGhpc19kaXNrLCBjZGlyX2Rpc2tfaW5kZXg7CistICBtel91aW50NjQgY2Rpcl9vZnM7Cisrc3RhdGljIG16X2Jvb2wgbXpfemlwX3JlYWRlcl9sb2NhdGVfaGVhZGVyX3NpZyhtel96aXBfYXJjaGl2ZSAqcFppcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3VpbnQzMiByZWNvcmRfc2lnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyIHJlY29yZF9zaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfaW50NjQgKnBPZnMpIHsKKyAgIG16X2ludDY0IGN1cl9maWxlX29mczsKKy0gIGNvbnN0IG16X3VpbnQ4ICpwOworICAgbXpfdWludDMyIGJ1Zl91MzJbNDA5NiAvIHNpemVvZihtel91aW50MzIpXTsKKyAgIG16X3VpbnQ4ICpwQnVmID0gKG16X3VpbnQ4ICopYnVmX3UzMjsKKy0gIG16X2Jvb2wgc29ydF9jZW50cmFsX2RpciA9CistICAgICAgKChmbGFncyAmIE1aX1pJUF9GTEFHX0RPX05PVF9TT1JUX0NFTlRSQUxfRElSRUNUT1JZKSA9PSAwKTsKKy0gIC8vIEJhc2ljIHNhbml0eSBjaGVja3MgLSByZWplY3QgZmlsZXMgd2hpY2ggYXJlIHRvbyBzbWFsbCwgYW5kIGNoZWNrIHRoZSBmaXJzdAorLSAgLy8gNCBieXRlcyBvZiB0aGUgZmlsZSB0byBtYWtlIHN1cmUgYSBsb2NhbCBoZWFkZXIgaXMgdGhlcmUuCistICBpZiAocFppcC0+bV9hcmNoaXZlX3NpemUgPCBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKQorKworKyAgLyogQmFzaWMgc2FuaXR5IGNoZWNrcyAtIHJlamVjdCBmaWxlcyB3aGljaCBhcmUgdG9vIHNtYWxsICovCisrICBpZiAocFppcC0+bV9hcmNoaXZlX3NpemUgPCByZWNvcmRfc2l6ZSkKKyAgICAgcmV0dXJuIE1aX0ZBTFNFOworLSAgLy8gRmluZCB0aGUgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IHJlY29yZCBieSBzY2FubmluZyB0aGUgZmlsZSBmcm9tIHRoZSBlbmQKKy0gIC8vIHRvd2FyZHMgdGhlIGJlZ2lubmluZy4KKysKKysgIC8qIEZpbmQgdGhlIHJlY29yZCBieSBzY2FubmluZyB0aGUgZmlsZSBmcm9tIHRoZSBlbmQgdG93YXJkcyB0aGUgYmVnaW5uaW5nLiAqLworICAgY3VyX2ZpbGVfb2ZzID0KKyAgICAgICBNWl9NQVgoKG16X2ludDY0KXBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gKG16X2ludDY0KXNpemVvZihidWZfdTMyKSwgMCk7CisgICBmb3IgKDs7KSB7CisgICAgIGludCBpLAorICAgICAgICAgbiA9IChpbnQpTVpfTUlOKHNpemVvZihidWZfdTMyKSwgcFppcC0+bV9hcmNoaXZlX3NpemUgLSBjdXJfZmlsZV9vZnMpOworKworICAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsIGN1cl9maWxlX29mcywgcEJ1ZiwgbikgIT0gKG16X3VpbnQpbikKKyAgICAgICByZXR1cm4gTVpfRkFMU0U7CistICAgIGZvciAoaSA9IG4gLSA0OyBpID49IDA7IC0taSkKKy0gICAgICBpZiAoTVpfUkVBRF9MRTMyKHBCdWYgKyBpKSA9PSBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpCistICAgICAgICBicmVhazsKKysKKysgICAgZm9yIChpID0gbiAtIDQ7IGkgPj0gMDsgLS1pKSB7CisrICAgICAgbXpfdWludCBzID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBpKTsKKysgICAgICBpZiAocyA9PSByZWNvcmRfc2lnKSB7CisrICAgICAgICBpZiAoKHBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gKGN1cl9maWxlX29mcyArIGkpKSA+PSByZWNvcmRfc2l6ZSkKKysgICAgICAgICAgYnJlYWs7CisrICAgICAgfQorKyAgICB9CisrCisgICAgIGlmIChpID49IDApIHsKKyAgICAgICBjdXJfZmlsZV9vZnMgKz0gaTsKKyAgICAgICBicmVhazsKKyAgICAgfQorKworKyAgICAvKiBHaXZlIHVwIGlmIHdlJ3ZlIHNlYXJjaGVkIHRoZSBlbnRpcmUgZmlsZSwgb3Igd2UndmUgZ29uZSBiYWNrICJ0b28gZmFyIgorKyAgICAgKiAofjY0a2IpICovCisgICAgIGlmICgoIWN1cl9maWxlX29mcykgfHwgKChwWmlwLT5tX2FyY2hpdmVfc2l6ZSAtIGN1cl9maWxlX29mcykgPj0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RkZGRiArIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1aX1VJTlQxNl9NQVggKyByZWNvcmRfc2l6ZSkpKQorICAgICAgIHJldHVybiBNWl9GQUxTRTsKKysKKyAgICAgY3VyX2ZpbGVfb2ZzID0gTVpfTUFYKGN1cl9maWxlX29mcyAtIChzaXplb2YoYnVmX3UzMikgLSAzKSwgMCk7CisgICB9CistICAvLyBSZWFkIGFuZCB2ZXJpZnkgdGhlIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSByZWNvcmQuCisrCisrICAqcE9mcyA9IGN1cl9maWxlX29mczsKKysgIHJldHVybiBNWl9UUlVFOworK30KKysKKytzdGF0aWMgbXpfYm9vbCBtel96aXBfcmVhZGVyX3JlYWRfY2VudHJhbF9kaXIobXpfemlwX2FyY2hpdmUgKnBaaXAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3VpbnQgZmxhZ3MpIHsKKysgIG16X3VpbnQgY2Rpcl9zaXplID0gMCwgY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzayA9IDAsIG51bV90aGlzX2Rpc2sgPSAwLAorKyAgICAgICAgICBjZGlyX2Rpc2tfaW5kZXggPSAwOworKyAgbXpfdWludDY0IGNkaXJfb2ZzID0gMDsKKysgIG16X2ludDY0IGN1cl9maWxlX29mcyA9IDA7CisrICBjb25zdCBtel91aW50OCAqcDsKKysKKysgIG16X3VpbnQzMiBidWZfdTMyWzQwOTYgLyBzaXplb2YobXpfdWludDMyKV07CisrICBtel91aW50OCAqcEJ1ZiA9IChtel91aW50OCAqKWJ1Zl91MzI7CisrICBtel9ib29sIHNvcnRfY2VudHJhbF9kaXIgPQorKyAgICAgICgoZmxhZ3MgJiBNWl9aSVBfRkxBR19ET19OT1RfU09SVF9DRU5UUkFMX0RJUkVDVE9SWSkgPT0gMCk7CisrICBtel91aW50MzIgemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX2xvY2F0b3JfdTMyCisrICAgICAgWyhNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFICsgc2l6ZW9mKG16X3VpbnQzMikgLSAxKSAvCisrICAgICAgIHNpemVvZihtel91aW50MzIpXTsKKysgIG16X3VpbnQ4ICpwWmlwNjRfbG9jYXRvciA9IChtel91aW50OCAqKXppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9sb2NhdG9yX3UzMjsKKysKKysgIG16X3VpbnQzMiB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfaGVhZGVyX3UzMgorKyAgICAgIFsoTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsgc2l6ZW9mKG16X3VpbnQzMikgLSAxKSAvCisrICAgICAgIHNpemVvZihtel91aW50MzIpXTsKKysgIG16X3VpbnQ4ICpwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyID0KKysgICAgICAobXpfdWludDggKil6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfaGVhZGVyX3UzMjsKKysKKysgIG16X3VpbnQ2NCB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzID0gMDsKKysKKysgIC8qIEJhc2ljIHNhbml0eSBjaGVja3MgLSByZWplY3QgZmlsZXMgd2hpY2ggYXJlIHRvbyBzbWFsbCwgYW5kIGNoZWNrIHRoZSBmaXJzdAorKyAgICogNCBieXRlcyBvZiB0aGUgZmlsZSB0byBtYWtlIHN1cmUgYSBsb2NhbCBoZWFkZXIgaXMgdGhlcmUuICovCisrICBpZiAocFppcC0+bV9hcmNoaXZlX3NpemUgPCBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUpOworKworKyAgaWYgKCFtel96aXBfcmVhZGVyX2xvY2F0ZV9oZWFkZXJfc2lnKAorKyAgICAgICAgICBwWmlwLCBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcsCisrICAgICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUsICZjdXJfZmlsZV9vZnMpKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfRkFJTEVEX0ZJTkRJTkdfQ0VOVFJBTF9ESVIpOworKworKyAgLyogUmVhZCBhbmQgdmVyaWZ5IHRoZSBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgcmVjb3JkLiAqLworICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLCBjdXJfZmlsZV9vZnMsIHBCdWYsCisgICAgICAgICAgICAgICAgICAgICBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSAhPQorICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCistICAgIHJldHVybiBNWl9GQUxTRTsKKy0gIGlmICgoTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9TSUdfT0ZTKSAhPQorLSAgICAgICBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpIHx8CistICAgICAgKChwWmlwLT5tX3RvdGFsX2ZpbGVzID0KKy0gICAgICAgICAgICBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMpKSAhPQorLSAgICAgICBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfTlVNX0VOVFJJRVNfT05fRElTS19PRlMpKSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfRklMRV9SRUFEX0ZBSUxFRCk7CisrCisrICBpZiAoTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9TSUdfT0ZTKSAhPQorKyAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykKKysgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX05PVF9BTl9BUkNISVZFKTsKKysKKysgIGlmIChjdXJfZmlsZV9vZnMgPj0gKE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUgKworKyAgICAgICAgICAgICAgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSkgeworKyAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsCisrICAgICAgICAgICAgICAgICAgICAgIGN1cl9maWxlX29mcyAtIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUsCisrICAgICAgICAgICAgICAgICAgICAgIHBaaXA2NF9sb2NhdG9yLAorKyAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFKSA9PQorKyAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0laRSkgeworKyAgICAgIGlmIChNWl9SRUFEX0xFMzIocFppcDY0X2xvY2F0b3IgKyBNWl9aSVA2NF9FQ0RMX1NJR19PRlMpID09CisrICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJRykgeworKyAgICAgICAgemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX29mcyA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgICAgICBwWmlwNjRfbG9jYXRvciArIE1aX1pJUDY0X0VDRExfUkVMX09GU19UT19aSVA2NF9FQ0RSX09GUyk7CisrICAgICAgICBpZiAoemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX29mcyA+CisrICAgICAgICAgICAgKHBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSkKKysgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX05PVF9BTl9BUkNISVZFKTsKKysKKysgICAgICAgIGlmIChwWmlwLT5tX3BSZWFkKHBaaXAtPm1fcElPX29wYXF1ZSwgemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX29mcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpID09CisrICAgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSB7CisrICAgICAgICAgIGlmIChNWl9SRUFEX0xFMzIocFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciArIE1aX1pJUDY0X0VDREhfU0lHX09GUykgPT0KKysgICAgICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0lHKSB7CisrICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1femlwNjQgPSBNWl9UUlVFOworKyAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgfQorKyAgICB9CisrICB9CisgCisrICBwWmlwLT5tX3RvdGFsX2ZpbGVzID0gTVpfUkVBRF9MRTE2KHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX1RPVEFMX0VOVFJJRVNfT0ZTKTsKKysgIGNkaXJfZW50cmllc19vbl90aGlzX2Rpc2sgPQorKyAgICAgIE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9OVU1fRU5UUklFU19PTl9ESVNLX09GUyk7CisgICBudW1fdGhpc19kaXNrID0gTVpfUkVBRF9MRTE2KHBCdWYgKyBNWl9aSVBfRUNESF9OVU1fVEhJU19ESVNLX09GUyk7CisgICBjZGlyX2Rpc2tfaW5kZXggPSBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX05VTV9ESVNLX0NESVJfT0ZTKTsKKysgIGNkaXJfc2l6ZSA9IE1aX1JFQURfTEUzMihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9TSVpFX09GUyk7CisrICBjZGlyX29mcyA9IE1aX1JFQURfTEUzMihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9PRlNfT0ZTKTsKKysKKysgIGlmIChwWmlwLT5tX3BTdGF0ZS0+bV96aXA2NCkgeworKyAgICBtel91aW50MzIgemlwNjRfdG90YWxfbnVtX29mX2Rpc2tzID0KKysgICAgICAgIE1aX1JFQURfTEUzMihwWmlwNjRfbG9jYXRvciArIE1aX1pJUDY0X0VDRExfVE9UQUxfTlVNQkVSX09GX0RJU0tTX09GUyk7CisrICAgIG16X3VpbnQ2NCB6aXA2NF9jZGlyX3RvdGFsX2VudHJpZXMgPSBNWl9SRUFEX0xFNjQoCisrICAgICAgICBwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX1RPVEFMX0VOVFJJRVNfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X2NkaXJfdG90YWxfZW50cmllc19vbl90aGlzX2Rpc2sgPSBNWl9SRUFEX0xFNjQoCisrICAgICAgICBwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX05VTV9FTlRSSUVTX09OX0RJU0tfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X3NpemVfb2ZfZW5kX29mX2NlbnRyYWxfZGlyX3JlY29yZCA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX1NJWkVfT0ZfUkVDT1JEX09GUyk7CisrICAgIG16X3VpbnQ2NCB6aXA2NF9zaXplX29mX2NlbnRyYWxfZGlyZWN0b3J5ID0KKysgICAgICAgIE1aX1JFQURfTEU2NChwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX1NJWkVfT0ZTKTsKKysKKysgICAgaWYgKHppcDY0X3NpemVfb2ZfZW5kX29mX2NlbnRyYWxfZGlyX3JlY29yZCA8CisrICAgICAgICAoTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFIC0gMTIpKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKworKyAgICBpZiAoemlwNjRfdG90YWxfbnVtX29mX2Rpc2tzICE9IDFVKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9VTlNVUFBPUlRFRF9NVUxUSURJU0spOworKworKyAgICAvKiBDaGVjayBmb3IgbWluaXoncyBwcmFjdGljYWwgbGltaXRzICovCisrICAgIGlmICh6aXA2NF9jZGlyX3RvdGFsX2VudHJpZXMgPiBNWl9VSU5UMzJfTUFYKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9UT09fTUFOWV9GSUxFUyk7CisrCisrICAgIHBaaXAtPm1fdG90YWxfZmlsZXMgPSAobXpfdWludDMyKXppcDY0X2NkaXJfdG90YWxfZW50cmllczsKKysKKysgICAgaWYgKHppcDY0X2NkaXJfdG90YWxfZW50cmllc19vbl90aGlzX2Rpc2sgPiBNWl9VSU5UMzJfTUFYKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9UT09fTUFOWV9GSUxFUyk7CisrCisrICAgIGNkaXJfZW50cmllc19vbl90aGlzX2Rpc2sgPQorKyAgICAgICAgKG16X3VpbnQzMil6aXA2NF9jZGlyX3RvdGFsX2VudHJpZXNfb25fdGhpc19kaXNrOworKworKyAgICAvKiBDaGVjayBmb3IgbWluaXoncyBjdXJyZW50IHByYWN0aWNhbCBsaW1pdHMgKHNvcnJ5LCB0aGlzIHNob3VsZCBiZSBlbm91Z2gKKysgICAgICogZm9yIG1pbGxpb25zIG9mIGZpbGVzKSAqLworKyAgICBpZiAoemlwNjRfc2l6ZV9vZl9jZW50cmFsX2RpcmVjdG9yeSA+IE1aX1VJTlQzMl9NQVgpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX0NESVJfU0laRSk7CisrCisrICAgIGNkaXJfc2l6ZSA9IChtel91aW50MzIpemlwNjRfc2l6ZV9vZl9jZW50cmFsX2RpcmVjdG9yeTsKKysKKysgICAgbnVtX3RoaXNfZGlzayA9IE1aX1JFQURfTEUzMihwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FQ0RIX05VTV9USElTX0RJU0tfT0ZTKTsKKysKKysgICAgY2Rpcl9kaXNrX2luZGV4ID0gTVpfUkVBRF9MRTMyKHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfWklQNjRfRUNESF9OVU1fRElTS19DRElSX09GUyk7CisrCisrICAgIGNkaXJfb2ZzID0KKysgICAgICAgIE1aX1JFQURfTEU2NChwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX09GU19PRlMpOworKyAgfQorKworKyAgaWYgKHBaaXAtPm1fdG90YWxfZmlsZXMgIT0gY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzaykKKysgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSyk7CisrCisgICBpZiAoKChudW1fdGhpc19kaXNrIHwgY2Rpcl9kaXNrX2luZGV4KSAhPSAwKSAmJgorICAgICAgICgobnVtX3RoaXNfZGlzayAhPSAxKSB8fCAoY2Rpcl9kaXNrX2luZGV4ICE9IDEpKSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfTVVMVElESVNLKTsKKyAKKy0gIGlmICgoY2Rpcl9zaXplID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX1NJWkVfT0ZTKSkgPAorLSAgICAgIHBaaXAtPm1fdG90YWxfZmlsZXMgKiBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCistICAgIHJldHVybiBNWl9GQUxTRTsKKysgIGlmIChjZGlyX3NpemUgPCBwWmlwLT5tX3RvdGFsX2ZpbGVzICogTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKyAKKy0gIGNkaXJfb2ZzID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX09GU19PRlMpOworICAgaWYgKChjZGlyX29mcyArIChtel91aW50NjQpY2Rpcl9zaXplKSA+IHBaaXAtPm1fYXJjaGl2ZV9zaXplKQorLSAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworIAorICAgcFppcC0+bV9jZW50cmFsX2RpcmVjdG9yeV9maWxlX29mcyA9IGNkaXJfb2ZzOworIAorICAgaWYgKHBaaXAtPm1fdG90YWxfZmlsZXMpIHsKKyAgICAgbXpfdWludCBpLCBuOworLQorLSAgICAvLyBSZWFkIHRoZSBlbnRpcmUgY2VudHJhbCBkaXJlY3RvcnkgaW50byBhIGhlYXAgYmxvY2ssIGFuZCBhbGxvY2F0ZSBhbm90aGVyCistICAgIC8vIGhlYXAgYmxvY2sgdG8gaG9sZCB0aGUgdW5zb3J0ZWQgY2VudHJhbCBkaXIgZmlsZSByZWNvcmQgb2Zmc2V0cywgYW5kCistICAgIC8vIGFub3RoZXIgdG8gaG9sZCB0aGUgc29ydGVkIGluZGljZXMuCisrICAgIC8qIFJlYWQgdGhlIGVudGlyZSBjZW50cmFsIGRpcmVjdG9yeSBpbnRvIGEgaGVhcCBibG9jaywgYW5kIGFsbG9jYXRlIGFub3RoZXIKKysgICAgICogaGVhcCBibG9jayB0byBob2xkIHRoZSB1bnNvcnRlZCBjZW50cmFsIGRpciBmaWxlIHJlY29yZCBvZmZzZXRzLCBhbmQKKysgICAgICogcG9zc2libHkgYW5vdGhlciB0byBob2xkIHRoZSBzb3J0ZWQgaW5kaWNlcy4gKi8KKyAgICAgaWYgKCghbXpfemlwX2FycmF5X3Jlc2l6ZShwWmlwLCAmcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXIsIGNkaXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9GQUxTRSkpIHx8CisgICAgICAgICAoIW16X3ppcF9hcnJheV9yZXNpemUocFppcCwgJnBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyX29mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFppcC0+bV90b3RhbF9maWxlcywgTVpfRkFMU0UpKSkKKy0gICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0FMTE9DX0ZBSUxFRCk7CisgCisgICAgIGlmIChzb3J0X2NlbnRyYWxfZGlyKSB7CisgICAgICAgaWYgKCFtel96aXBfYXJyYXlfcmVzaXplKHBaaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwWmlwLT5tX3BTdGF0ZS0+bV9zb3J0ZWRfY2VudHJhbF9kaXJfb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFppcC0+bV90b3RhbF9maWxlcywgTVpfRkFMU0UpKQorLSAgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0FMTE9DX0ZBSUxFRCk7CisgICAgIH0KKyAKKyAgICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLCBjZGlyX29mcywKKyAgICAgICAgICAgICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXIubV9wLAorICAgICAgICAgICAgICAgICAgICAgICBjZGlyX3NpemUpICE9IGNkaXJfc2l6ZSkKKy0gICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0ZJTEVfUkVBRF9GQUlMRUQpOworIAorLSAgICAvLyBOb3cgY3JlYXRlIGFuIGluZGV4IGludG8gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IGZpbGUgcmVjb3JkcywgZG8gc29tZQorLSAgICAvLyBiYXNpYyBzYW5pdHkgY2hlY2tpbmcgb24gZWFjaCByZWNvcmQsIGFuZCBjaGVjayBmb3IgemlwNjQgZW50cmllcyAod2hpY2gKKy0gICAgLy8gYXJlIG5vdCB5ZXQgc3VwcG9ydGVkKS4KKysgICAgLyogTm93IGNyZWF0ZSBhbiBpbmRleCBpbnRvIHRoZSBjZW50cmFsIGRpcmVjdG9yeSBmaWxlIHJlY29yZHMsIGRvIHNvbWUKKysgICAgICogYmFzaWMgc2FuaXR5IGNoZWNraW5nIG9uIGVhY2ggcmVjb3JkICovCisgICAgIHAgPSAoY29uc3QgbXpfdWludDggKilwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2Rpci5tX3A7CisgICAgIGZvciAobiA9IGNkaXJfc2l6ZSwgaSA9IDA7IGkgPCBwWmlwLT5tX3RvdGFsX2ZpbGVzOyArK2kpIHsKKy0gICAgICBtel91aW50IHRvdGFsX2hlYWRlcl9zaXplLCBjb21wX3NpemUsIGRlY29tcF9zaXplLCBkaXNrX2luZGV4OworKyAgICAgIG16X3VpbnQgdG90YWxfaGVhZGVyX3NpemUsIGRpc2tfaW5kZXgsIGJpdF9mbGFncywgZmlsZW5hbWVfc2l6ZSwKKysgICAgICAgICAgZXh0X2RhdGFfc2l6ZTsKKysgICAgICBtel91aW50NjQgY29tcF9zaXplLCBkZWNvbXBfc2l6ZSwgbG9jYWxfaGVhZGVyX29mczsKKysKKyAgICAgICBpZiAoKG4gPCBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpIHx8CisgICAgICAgICAgIChNWl9SRUFEX0xFMzIocCkgIT0gTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpKQorLSAgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrCisgICAgICAgTVpfWklQX0FSUkFZX0VMRU1FTlQoJnBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyX29mZnNldHMsIG16X3VpbnQzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKSA9CisgICAgICAgICAgIChtel91aW50MzIpKHAgLSAoY29uc3QgbXpfdWludDggKilwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2Rpci5tX3ApOworKworICAgICAgIGlmIChzb3J0X2NlbnRyYWxfZGlyKQorICAgICAgICAgTVpfWklQX0FSUkFZX0VMRU1FTlQoJnBaaXAtPm1fcFN0YXRlLT5tX3NvcnRlZF9jZW50cmFsX2Rpcl9vZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyLCBpKSA9IGk7CisrCisgICAgICAgY29tcF9zaXplID0gTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0NPTVBSRVNTRURfU0laRV9PRlMpOworICAgICAgIGRlY29tcF9zaXplID0gTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0RFQ09NUFJFU1NFRF9TSVpFX09GUyk7CistICAgICAgaWYgKCgoIU1aX1JFQURfTEUzMihwICsgTVpfWklQX0NESF9NRVRIT0RfT0ZTKSkgJiYKKy0gICAgICAgICAgIChkZWNvbXBfc2l6ZSAhPSBjb21wX3NpemUpKSB8fAorLSAgICAgICAgICAoZGVjb21wX3NpemUgJiYgIWNvbXBfc2l6ZSkgfHwgKGRlY29tcF9zaXplID09IDB4RkZGRkZGRkYpIHx8CistICAgICAgICAgIChjb21wX3NpemUgPT0gMHhGRkZGRkZGRikpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgbG9jYWxfaGVhZGVyX29mcyA9IE1aX1JFQURfTEUzMihwICsgTVpfWklQX0NESF9MT0NBTF9IRUFERVJfT0ZTKTsKKysgICAgICBmaWxlbmFtZV9zaXplID0gTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0ZJTEVOQU1FX0xFTl9PRlMpOworKyAgICAgIGV4dF9kYXRhX3NpemUgPSBNWl9SRUFEX0xFMTYocCArIE1aX1pJUF9DREhfRVhUUkFfTEVOX09GUyk7CisrCisrICAgICAgaWYgKCghcFppcC0+bV9wU3RhdGUtPm1femlwNjRfaGFzX2V4dGVuZGVkX2luZm9fZmllbGRzKSAmJgorKyAgICAgICAgICAoZXh0X2RhdGFfc2l6ZSkgJiYKKysgICAgICAgICAgKE1aX01BWChNWl9NQVgoY29tcF9zaXplLCBkZWNvbXBfc2l6ZSksIGxvY2FsX2hlYWRlcl9vZnMpID09CisrICAgICAgICAgICBNWl9VSU5UMzJfTUFYKSkgeworKyAgICAgICAgLyogQXR0ZW1wdCB0byBmaW5kIHppcDY0IGV4dGVuZGVkIGluZm9ybWF0aW9uIGZpZWxkIGluIHRoZSBlbnRyeSdzIGV4dHJhCisrICAgICAgICAgKiBkYXRhICovCisrICAgICAgICBtel91aW50MzIgZXh0cmFfc2l6ZV9yZW1haW5pbmcgPSBleHRfZGF0YV9zaXplOworKworKyAgICAgICAgaWYgKGV4dHJhX3NpemVfcmVtYWluaW5nKSB7CisrICAgICAgICAgIGNvbnN0IG16X3VpbnQ4ICpwRXh0cmFfZGF0YTsKKysgICAgICAgICAgdm9pZCAqYnVmID0gTlVMTDsKKysKKysgICAgICAgICAgaWYgKE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSArIGZpbGVuYW1lX3NpemUgKyBleHRfZGF0YV9zaXplID4KKysgICAgICAgICAgICAgIG4pIHsKKysgICAgICAgICAgICBidWYgPSBNWl9NQUxMT0MoZXh0X2RhdGFfc2l6ZSk7CisrICAgICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQorKyAgICAgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0FMTE9DX0ZBSUxFRCk7CisrCisrICAgICAgICAgICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkaXJfb2ZzICsgTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfc2l6ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGV4dF9kYXRhX3NpemUpICE9IGV4dF9kYXRhX3NpemUpIHsKKysgICAgICAgICAgICAgIE1aX0ZSRUUoYnVmKTsKKysgICAgICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9GSUxFX1JFQURfRkFJTEVEKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgcEV4dHJhX2RhdGEgPSAobXpfdWludDggKilidWY7CisrICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgcEV4dHJhX2RhdGEgPSBwICsgTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsgZmlsZW5hbWVfc2l6ZTsKKysgICAgICAgICAgfQorKworKyAgICAgICAgICBkbyB7CisrICAgICAgICAgICAgbXpfdWludDMyIGZpZWxkX2lkOworKyAgICAgICAgICAgIG16X3VpbnQzMiBmaWVsZF9kYXRhX3NpemU7CisrCisrICAgICAgICAgICAgaWYgKGV4dHJhX3NpemVfcmVtYWluaW5nIDwgKHNpemVvZihtel91aW50MTYpICogMikpIHsKKysgICAgICAgICAgICAgIE1aX0ZSRUUoYnVmKTsKKysgICAgICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBmaWVsZF9pZCA9IE1aX1JFQURfTEUxNihwRXh0cmFfZGF0YSk7CisrICAgICAgICAgICAgZmllbGRfZGF0YV9zaXplID0gTVpfUkVBRF9MRTE2KHBFeHRyYV9kYXRhICsgc2l6ZW9mKG16X3VpbnQxNikpOworKworKyAgICAgICAgICAgIGlmICgoZmllbGRfZGF0YV9zaXplICsgc2l6ZW9mKG16X3VpbnQxNikgKiAyKSA+CisrICAgICAgICAgICAgICAgIGV4dHJhX3NpemVfcmVtYWluaW5nKSB7CisrICAgICAgICAgICAgICBNWl9GUkVFKGJ1Zik7CisrICAgICAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKGZpZWxkX2lkID09IE1aX1pJUDY0X0VYVEVOREVEX0lORk9STUFUSU9OX0ZJRUxEX0hFQURFUl9JRCkgeworKyAgICAgICAgICAgICAgLyogT2ssIHRoZSBhcmNoaXZlIGRpZG4ndCBoYXZlIGFueSB6aXA2NCBoZWFkZXJzIGJ1dCBpdCB1c2VzIGEKKysgICAgICAgICAgICAgICAqIHppcDY0IGV4dGVuZGVkIGluZm9ybWF0aW9uIGZpZWxkIHNvIG1hcmsgaXQgYXMgemlwNjQgYW55d2F5CisrICAgICAgICAgICAgICAgKiAodGhpcyBjYW4gb2NjdXIgd2l0aCBpbmZvemlwJ3MgemlwIHV0aWwgd2hlbiBpdCByZWFkcworKyAgICAgICAgICAgICAgICogY29tcHJlc3NlcyBmaWxlcyBmcm9tIHN0ZGluKS4gKi8KKysgICAgICAgICAgICAgIHBaaXAtPm1fcFN0YXRlLT5tX3ppcDY0ID0gTVpfVFJVRTsKKysgICAgICAgICAgICAgIHBaaXAtPm1fcFN0YXRlLT5tX3ppcDY0X2hhc19leHRlbmRlZF9pbmZvX2ZpZWxkcyA9IE1aX1RSVUU7CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgcEV4dHJhX2RhdGEgKz0gc2l6ZW9mKG16X3VpbnQxNikgKiAyICsgZmllbGRfZGF0YV9zaXplOworKyAgICAgICAgICAgIGV4dHJhX3NpemVfcmVtYWluaW5nID0KKysgICAgICAgICAgICAgICAgZXh0cmFfc2l6ZV9yZW1haW5pbmcgLSBzaXplb2YobXpfdWludDE2KSAqIDIgLSBmaWVsZF9kYXRhX3NpemU7CisrICAgICAgICAgIH0gd2hpbGUgKGV4dHJhX3NpemVfcmVtYWluaW5nKTsKKysKKysgICAgICAgICAgTVpfRlJFRShidWYpOworKyAgICAgICAgfQorKyAgICAgIH0KKysKKysgICAgICAvKiBJJ3ZlIHNlZW4gYXJjaGl2ZXMgdGhhdCBhcmVuJ3QgbWFya2VkIGFzIHppcDY0IHRoYXQgdXNlcyB6aXA2NCBleHQKKysgICAgICAgKiBkYXRhLCBhcmdoICovCisrICAgICAgaWYgKChjb21wX3NpemUgIT0gTVpfVUlOVDMyX01BWCkgJiYgKGRlY29tcF9zaXplICE9IE1aX1VJTlQzMl9NQVgpKSB7CisrICAgICAgICBpZiAoKCghTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX01FVEhPRF9PRlMpKSAmJgorKyAgICAgICAgICAgICAoZGVjb21wX3NpemUgIT0gY29tcF9zaXplKSkgfHwKKysgICAgICAgICAgICAoZGVjb21wX3NpemUgJiYgIWNvbXBfc2l6ZSkpCisrICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKyAgICAgIH0KKysKKyAgICAgICBkaXNrX2luZGV4ID0gTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0RJU0tfU1RBUlRfT0ZTKTsKKy0gICAgICBpZiAoKGRpc2tfaW5kZXggIT0gbnVtX3RoaXNfZGlzaykgJiYgKGRpc2tfaW5kZXggIT0gMSkpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CistICAgICAgaWYgKCgobXpfdWludDY0KU1aX1JFQURfTEUzMihwICsgTVpfWklQX0NESF9MT0NBTF9IRUFERVJfT0ZTKSArCistICAgICAgICAgICBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFICsgY29tcF9zaXplKSA+IHBaaXAtPm1fYXJjaGl2ZV9zaXplKQorLSAgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICAgIGlmICgoZGlza19pbmRleCA9PSBNWl9VSU5UMTZfTUFYKSB8fAorKyAgICAgICAgICAoKGRpc2tfaW5kZXggIT0gbnVtX3RoaXNfZGlzaykgJiYgKGRpc2tfaW5kZXggIT0gMSkpKQorKyAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSyk7CisrCisrICAgICAgaWYgKGNvbXBfc2l6ZSAhPSBNWl9VSU5UMzJfTUFYKSB7CisrICAgICAgICBpZiAoKChtel91aW50NjQpTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0xPQ0FMX0hFQURFUl9PRlMpICsKKysgICAgICAgICAgICAgTVpfWklQX0xPQ0FMX0RJUl9IRUFERVJfU0laRSArIGNvbXBfc2l6ZSkgPiBwWmlwLT5tX2FyY2hpdmVfc2l6ZSkKKysgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrICAgICAgfQorKworKyAgICAgIGJpdF9mbGFncyA9IE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9CSVRfRkxBR19PRlMpOworKyAgICAgIGlmIChiaXRfZmxhZ3MgJiBNWl9aSVBfR0VORVJBTF9QVVJQT1NFX0JJVF9GTEFHX0xPQ0FMX0RJUl9JU19NQVNLRUQpCisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfRU5DUllQVElPTik7CisrCisgICAgICAgaWYgKCh0b3RhbF9oZWFkZXJfc2l6ZSA9IE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9GSUxFTkFNRV9MRU5fT0ZTKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9FWFRSQV9MRU5fT0ZTKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9DT01NRU5UX0xFTl9PRlMpKSA+CisgICAgICAgICAgIG4pCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysKKyAgICAgICBuIC09IHRvdGFsX2hlYWRlcl9zaXplOworICAgICAgIHAgKz0gdG90YWxfaGVhZGVyX3NpemU7CisgICAgIH0KK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC9zcmMvemlwLmMgYi9jb250cmliL3ppcC9zcmMvemlwLmMKK2luZGV4IGZmM2E4ZmUxLi4xYWJjZmQ4ZiAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL3NyYy96aXAuYworKysrIGIvY29udHJpYi96aXAvc3JjL3ppcC5jCitAQCAtMjQsNyArMjQsNiBAQAorICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgJiYgICBcCisgICAgKFApWzFdID09ICc6JykKKyAjZGVmaW5lIEZJTEVTWVNURU1fUFJFRklYX0xFTihQKSAoSEFTX0RFVklDRShQKSA/IDIgOiAwKQorLSNkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKKyAKKyAjZWxzZQorIAorQEAgLTQ4LDcgKzQ3LDcgQEAgaW50IHN5bWxpbmsoY29uc3QgY2hhciAqdGFyZ2V0LCBjb25zdCBjaGFyICpsaW5rcGF0aCk7IC8vIG5lZWRlZCBvbiBMaW51eAorICNlbmRpZgorIAorICNpZm5kZWYgSVNTTEFTSAorLSNkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJykKKysjZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCisgI2VuZGlmCisgCisgI2RlZmluZSBDTEVBTlVQKHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC03OCwyNiArNzcsMzQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmJhc2VfbmFtZShjb25zdCBjaGFyICpuYW1lKSB7CisgICByZXR1cm4gYmFzZTsKKyB9CisgCistc3RhdGljIGludCBta3BhdGgoY29uc3QgY2hhciAqcGF0aCkgeworLSAgY2hhciBjb25zdCAqcDsKKytzdGF0aWMgaW50IG1rcGF0aChjaGFyICpwYXRoKSB7CisrICBjaGFyICpwOworICAgY2hhciBucGF0aFtNQVhfUEFUSCArIDFdOworICAgaW50IGxlbiA9IDA7CisgICBpbnQgaGFzX2RldmljZSA9IEhBU19ERVZJQ0UocGF0aCk7CisgCisgICBtZW1zZXQobnBhdGgsIDAsIE1BWF9QQVRIICsgMSk7CistCistI2lmZGVmIF9XSU4zMgorLSAgLy8gb25seSBvbiB3aW5kb3dzIGZpeCB0aGUgcGF0aAorLSAgbnBhdGhbMF0gPSBwYXRoWzBdOworLSAgbnBhdGhbMV0gPSBwYXRoWzFdOworLSAgbGVuID0gMjsKKy0jZW5kaWYgLy8gX1dJTjMyCistICAgIAorKyAgaWYgKGhhc19kZXZpY2UpIHsKKysgICAgLy8gb25seSBvbiB3aW5kb3dzCisrICAgIG5wYXRoWzBdID0gcGF0aFswXTsKKysgICAgbnBhdGhbMV0gPSBwYXRoWzFdOworKyAgICBsZW4gPSAyOworKyAgfQorICAgZm9yIChwID0gcGF0aCArIGxlbjsgKnAgJiYgbGVuIDwgTUFYX1BBVEg7IHArKykgeworICAgICBpZiAoSVNTTEFTSCgqcCkgJiYgKCghaGFzX2RldmljZSAmJiBsZW4gPiAwKSB8fCAoaGFzX2RldmljZSAmJiBsZW4gPiAyKSkpIHsKKy0gICAgICBpZiAoTUtESVIobnBhdGgpID09IC0xKQorLSAgICAgICAgaWYgKGVycm5vICE9IEVFWElTVCkKKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCAgICAgICAgICAgICAgXAorKyAgICBkZWZpbmVkKF9fTUlOR1czMl9fKQorKyNlbHNlCisrICAgICAgaWYgKCdcXCcgPT0gKnApIHsKKysgICAgICAgICpwID0gJy8nOworKyAgICAgIH0KKysjZW5kaWYKKysKKysgICAgICBpZiAoTUtESVIobnBhdGgpID09IC0xKSB7CisrICAgICAgICBpZiAoZXJybm8gIT0gRUVYSVNUKSB7CisgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKysgICAgICB9CisgICAgIH0KKyAgICAgbnBhdGhbbGVuKytdID0gKnA7CisgICB9CitAQCAtMjc5LDcgKzI4NiwxNCBAQCBpbnQgemlwX2VudHJ5X29wZW4oc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmVudHJ5bmFtZSkgeworICAgemlwLT5lbnRyeS5oZWFkZXJfb2Zmc2V0ID0gemlwLT5hcmNoaXZlLm1fYXJjaGl2ZV9zaXplOworICAgbWVtc2V0KHppcC0+ZW50cnkuaGVhZGVyLCAwLCBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFICogc2l6ZW9mKG16X3VpbnQ4KSk7CisgICB6aXAtPmVudHJ5Lm1ldGhvZCA9IDA7CisrCisrICAvLyBVTklYIG9yIEFQUExFCisrI2lmIE1aX1BMQVRGT1JNID09IDMgfHwgTVpfUExBVEZPUk0gPT0gMTkKKysgIC8vIHJlZ3VsYXIgZmlsZSB3aXRoIHJ3LXItLXItLSBwZXJzbWlzc2lvbnMKKysgIHppcC0+ZW50cnkuZXh0ZXJuYWxfYXR0ciA9IChtel91aW50MzIpKDAxMDA2NDQpIDw8IDE2OworKyNlbHNlCisgICB6aXAtPmVudHJ5LmV4dGVybmFsX2F0dHIgPSAwOworKyNlbmRpZgorIAorICAgbnVtX2FsaWdubWVudF9wYWRkaW5nX2J5dGVzID0KKyAgICAgICBtel96aXBfd3JpdGVyX2NvbXB1dGVfcGFkZGluZ19uZWVkZWRfZm9yX2ZpbGVfYWxpZ25tZW50KHB6aXApOworQEAgLTY2MCw3ICs2NzQsNyBAQCBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSkgeworICAgfQorIAorICAgaWYgKCFtel96aXBfcmVhZGVyX2V4dHJhY3RfdG9fbWVtX25vX2FsbG9jKHB6aXAsIChtel91aW50KXppcC0+ZW50cnkuaW5kZXgsCistICBidWYsIGJ1ZnNpemUsIDAsIE5VTEwsICAwKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmc2l6ZSwgMCwgTlVMTCwgMCkpIHsKKyAgICAgcmV0dXJuIC0xOworICAgfQorIAorQEAgLTY3MCwxMCArNjg0LDcgQEAgc3NpemVfdCB6aXBfZW50cnlfbm9hbGxvY3JlYWQoc3RydWN0IHppcF90ICp6aXAsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpIHsKKyBpbnQgemlwX2VudHJ5X2ZyZWFkKHN0cnVjdCB6aXBfdCAqemlwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkgeworICAgbXpfemlwX2FyY2hpdmUgKnB6aXAgPSBOVUxMOworICAgbXpfdWludCBpZHg7CistI2lmIGRlZmluZWQoX01TQ19WRVIpCistI2Vsc2UKKyAgIG16X3VpbnQzMiB4YXR0ciA9IDA7CistI2VuZGlmCisgICBtel96aXBfYXJjaGl2ZV9maWxlX3N0YXQgaW5mbzsKKyAKKyAgIGlmICghemlwKSB7CitAQCAtODc1LDEyICs4ODYsMTkgQEAgaW50IHppcF9leHRyYWN0KGNvbnN0IGNoYXIgKnppcG5hbWUsIGNvbnN0IGNoYXIgKmRpciwKKyAgICAgICBnb3RvIG91dDsKKyAgICAgfQorIAorLSAgICBpZiAoKCgoaW5mby5tX3ZlcnNpb25fbWFkZV9ieSA+PiA4KSA9PSAzKSB8fCAoKGluZm8ubV92ZXJzaW9uX21hZGVfYnkgPj4gOCkgPT0gMTkpKSAvLyBpZiB6aXAgaXMgcHJvZHVjZWQgb24gVW5peCBvciBtYWNPUyAoMyBhbmQgMTkgZnJvbSBzZWN0aW9uIDQuNC4yLjIgb2YgemlwIHN0YW5kYXJkKQorLSAgICAgICAgJiYgaW5mby5tX2V4dGVybmFsX2F0dHIgJiAoMHgyMCA8PCAyNCkpIHsgLy8gYW5kIGhhcyBzeW0gbGluayBhdHRyaWJ1dGUgKDB4ODAgaXMgZmlsZSwgMHg0MCBpcyBkaXJlY3RvcnkpCisrICAgIGlmICgoKChpbmZvLm1fdmVyc2lvbl9tYWRlX2J5ID4+IDgpID09IDMpIHx8CisrICAgICAgICAgKChpbmZvLm1fdmVyc2lvbl9tYWRlX2J5ID4+IDgpID09CisrICAgICAgICAgIDE5KSkgLy8gaWYgemlwIGlzIHByb2R1Y2VkIG9uIFVuaXggb3IgbWFjT1MgKDMgYW5kIDE5IGZyb20KKysgICAgICAgICAgICAgICAvLyBzZWN0aW9uIDQuNC4yLjIgb2YgemlwIHN0YW5kYXJkKQorKyAgICAgICAgJiYgaW5mby5tX2V4dGVybmFsX2F0dHIgJgorKyAgICAgICAgICAgICAgICgweDIwIDw8IDI0KSkgeyAvLyBhbmQgaGFzIHN5bSBsaW5rIGF0dHJpYnV0ZSAoMHg4MCBpcyBmaWxlLCAweDQwCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGRpcmVjdG9yeSkKKyAjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCAgICAgICAgICAgICAgXAorICAgICBkZWZpbmVkKF9fTUlOR1czMl9fKQorLSNlbHNlICAgICAgCistICAgICAgaWYgKGluZm8ubV91bmNvbXBfc2l6ZSA+IE1BWF9QQVRIIHx8ICFtel96aXBfcmVhZGVyX2V4dHJhY3RfdG9fbWVtX25vX2FsbG9jKCZ6aXBfYXJjaGl2ZSwgaSwgc3ltbGlua190bywgTUFYX1BBVEgsIDAsIE5VTEwsIDApKSB7CisrI2Vsc2UKKysgICAgICBpZiAoaW5mby5tX3VuY29tcF9zaXplID4gTUFYX1BBVEggfHwKKysgICAgICAgICAgIW16X3ppcF9yZWFkZXJfZXh0cmFjdF90b19tZW1fbm9fYWxsb2MoJnppcF9hcmNoaXZlLCBpLCBzeW1saW5rX3RvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCwgMCwgTlVMTCwgMCkpIHsKKyAgICAgICAgIGdvdG8gb3V0OworICAgICAgIH0KKyAgICAgICBzeW1saW5rX3RvW2luZm8ubV91bmNvbXBfc2l6ZV0gPSAnXDAnOworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3NyYy96aXAuaCBiL2NvbnRyaWIvemlwL3NyYy96aXAuaAoraW5kZXggNWYzOWRmNTAuLmE0OGQ2NGQ2IDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvc3JjL3ppcC5oCisrKysgYi9jb250cmliL3ppcC9zcmMvemlwLmgKK0BAIC0yMCwyNDEgKzIwLDI0MCBAQCBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKyAjaWYgIWRlZmluZWQoX1NTSVpFX1RfREVGSU5FRCkgJiYgIWRlZmluZWQoX1NTSVpFX1RfREVGSU5FRF8pICYmICAgICAgICAgICAgICAgXAorLSAgICAhZGVmaW5lZChfU1NJWkVfVCkgJiYgIWRlZmluZWQoX1NTSVpFX1RfKSAmJiAhZGVmaW5lZChfX3NzaXplX3RfZGVmaW5lZCkKKy0jZGVmaW5lIF9TU0laRV9UCisrICAgICFkZWZpbmVkKF9fREVGSU5FRF9zc2l6ZV90KSAmJiAhZGVmaW5lZChfX3NzaXplX3RfZGVmaW5lZCkgJiYgICAgICAgICAgICAgIFwKKysgICAgIWRlZmluZWQoX1NTSVpFX1QpICYmICFkZWZpbmVkKF9TU0laRV9UXykKKysKKyAvLyA2NC1iaXQgV2luZG93cyBpcyB0aGUgb25seSBtYWluc3RyZWFtIHBsYXRmb3JtCisgLy8gd2hlcmUgc2l6ZW9mKGxvbmcpICE9IHNpemVvZih2b2lkKikKKyAjaWZkZWYgX1dJTjY0CistdHlwZWRlZiBsb25nIGxvbmcgIHNzaXplX3Q7ICAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisrdHlwZWRlZiBsb25nIGxvbmcgc3NpemVfdDsgLyogYnl0ZSBjb3VudCBvciBlcnJvciAqLworICNlbHNlCistdHlwZWRlZiBsb25nICBzc2l6ZV90OyAgLyogYnl0ZSBjb3VudCBvciBlcnJvciAqLworK3R5cGVkZWYgbG9uZyBzc2l6ZV90OyAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisgI2VuZGlmCisrCisrI2RlZmluZSBfU1NJWkVfVF9ERUZJTkVECisrI2RlZmluZSBfU1NJWkVfVF9ERUZJTkVEXworKyNkZWZpbmUgX19ERUZJTkVEX3NzaXplX3QKKysjZGVmaW5lIF9fc3NpemVfdF9kZWZpbmVkCisrI2RlZmluZSBfU1NJWkVfVAorKyNkZWZpbmUgX1NTSVpFX1RfCisrCisgI2VuZGlmCisgCisgI2lmbmRlZiBNQVhfUEFUSAorICNkZWZpbmUgTUFYX1BBVEggMzI3NjcgLyogIyBjaGFycyBpbiBhIHBhdGggbmFtZSBpbmNsdWRpbmcgTlVMTCAqLworICNlbmRpZgorIAorKy8qKgorKyAqIEBtYWlucGFnZQorKyAqCisrICogRG9jdW1lbmF0aW9uIGZvciBAcmVmIHppcC4KKysgKi8KKysKKysvKioKKysgKiBAYWRkdG9ncm91cCB6aXAKKysgKiBAeworKyAqLworKworKy8qKgorKyAqIERlZmF1bHQgemlwIGNvbXByZXNzaW9uIGxldmVsLgorKyAqLworKworICNkZWZpbmUgWklQX0RFRkFVTFRfQ09NUFJFU1NJT05fTEVWRUwgNgorIAorLS8qCistICBUaGlzIGRhdGEgc3RydWN0dXJlIGlzIHVzZWQgdGhyb3VnaG91dCB0aGUgbGlicmFyeSB0byByZXByZXNlbnQgemlwIGFyY2hpdmUKKy0gIC0gZm9yd2FyZCBkZWNsYXJhdGlvbi4KKy0qLworKy8qKgorKyAqIEBzdHJ1Y3QgemlwX3QKKysgKgorKyAqIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5IHRvIHJlcHJlc2VudCB6aXAgYXJjaGl2ZSAtCisrICogZm9yd2FyZCBkZWNsYXJhdGlvbi4KKysgKi8KKyBzdHJ1Y3QgemlwX3Q7CisgCistLyoKKy0gIE9wZW5zIHppcCBhcmNoaXZlIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgdXNpbmcgdGhlIGdpdmVuIG1vZGUuCistCistICBBcmdzOgorLSAgICB6aXBuYW1lOiB6aXAgYXJjaGl2ZSBmaWxlIG5hbWUuCistICAgIGxldmVsOiBjb21wcmVzc2lvbiBsZXZlbCAoMC05IGFyZSB0aGUgc3RhbmRhcmQgemxpYi1zdHlsZSBsZXZlbHMpLgorLSAgICBtb2RlOiBmaWxlIGFjY2VzcyBtb2RlLgorLSAgICAgICAgJ3InOiBvcGVucyBhIGZpbGUgZm9yIHJlYWRpbmcvZXh0cmFjdGluZyAodGhlIGZpbGUgbXVzdCBleGlzdHMpLgorLSAgICAgICAgJ3cnOiBjcmVhdGVzIGFuIGVtcHR5IGZpbGUgZm9yIHdyaXRpbmcuCistICAgICAgICAnYSc6IGFwcGVuZHMgdG8gYW4gZXhpc3RpbmcgYXJjaGl2ZS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSB6aXAgYXJjaGl2ZSBoYW5kbGVyIG9yIE5VTEwgb24gZXJyb3IKKy0qLworKy8qKgorKyAqIE9wZW5zIHppcCBhcmNoaXZlIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgdXNpbmcgdGhlIGdpdmVuIG1vZGUuCisrICoKKysgKiBAcGFyYW0gemlwbmFtZSB6aXAgYXJjaGl2ZSBmaWxlIG5hbWUuCisrICogQHBhcmFtIGxldmVsIGNvbXByZXNzaW9uIGxldmVsICgwLTkgYXJlIHRoZSBzdGFuZGFyZCB6bGliLXN0eWxlIGxldmVscykuCisrICogQHBhcmFtIG1vZGUgZmlsZSBhY2Nlc3MgbW9kZS4KKysgKiAgICAgICAgLSAncic6IG9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy9leHRyYWN0aW5nICh0aGUgZmlsZSBtdXN0IGV4aXN0cykuCisrICogICAgICAgIC0gJ3cnOiBjcmVhdGVzIGFuIGVtcHR5IGZpbGUgZm9yIHdyaXRpbmcuCisrICogICAgICAgIC0gJ2EnOiBhcHBlbmRzIHRvIGFuIGV4aXN0aW5nIGFyY2hpdmUuCisrICoKKysgKiBAcmV0dXJuIHRoZSB6aXAgYXJjaGl2ZSBoYW5kbGVyIG9yIE5VTEwgb24gZXJyb3IKKysgKi8KKyBleHRlcm4gc3RydWN0IHppcF90ICp6aXBfb3Blbihjb25zdCBjaGFyICp6aXBuYW1lLCBpbnQgbGV2ZWwsIGNoYXIgbW9kZSk7CisgCistLyoKKy0gIENsb3NlcyB0aGUgemlwIGFyY2hpdmUsIHJlbGVhc2VzIHJlc291cmNlcyAtIGFsd2F5cyBmaW5hbGl6ZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0qLworKy8qKgorKyAqIENsb3NlcyB0aGUgemlwIGFyY2hpdmUsIHJlbGVhc2VzIHJlc291cmNlcyAtIGFsd2F5cyBmaW5hbGl6ZS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKi8KKyBleHRlcm4gdm9pZCB6aXBfY2xvc2Uoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBPcGVucyBhbiBlbnRyeSBieSBuYW1lIGluIHRoZSB6aXAgYXJjaGl2ZS4KKy0gIEZvciB6aXAgYXJjaGl2ZSBvcGVuZWQgaW4gJ3cnIG9yICdhJyBtb2RlIHRoZSBmdW5jdGlvbiB3aWxsIGFwcGVuZAorLSAgYSBuZXcgZW50cnkuIEluIHJlYWRvbmx5IG1vZGUgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGxvY2F0ZSB0aGUgZW50cnkKKy0gIGluIGdsb2JhbCBkaWN0aW9uYXJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBlbnRyeW5hbWU6IGFuIGVudHJ5IG5hbWUgaW4gbG9jYWwgZGljdGlvbmFyeS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogT3BlbnMgYW4gZW50cnkgYnkgbmFtZSBpbiB0aGUgemlwIGFyY2hpdmUuCisrICoKKysgKiBGb3IgemlwIGFyY2hpdmUgb3BlbmVkIGluICd3JyBvciAnYScgbW9kZSB0aGUgZnVuY3Rpb24gd2lsbCBhcHBlbmQKKysgKiBhIG5ldyBlbnRyeS4gSW4gcmVhZG9ubHkgbW9kZSB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gbG9jYXRlIHRoZSBlbnRyeQorKyAqIGluIGdsb2JhbCBkaWN0aW9uYXJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBlbnRyeW5hbWUgYW4gZW50cnkgbmFtZSBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9vcGVuKHN0cnVjdCB6aXBfdCAqemlwLCBjb25zdCBjaGFyICplbnRyeW5hbWUpOworIAorLS8qCistICBPcGVucyBhIG5ldyBlbnRyeSBieSBpbmRleCBpbiB0aGUgemlwIGFyY2hpdmUuCistICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdmFsaWQgaWYgemlwIGFyY2hpdmUgd2FzIG9wZW5lZCBpbiAncicgKHJlYWRvbmx5KSBtb2RlLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBpbmRleDogaW5kZXggaW4gbG9jYWwgZGljdGlvbmFyeS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogT3BlbnMgYSBuZXcgZW50cnkgYnkgaW5kZXggaW4gdGhlIHppcCBhcmNoaXZlLgorKyAqCisrICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHZhbGlkIGlmIHppcCBhcmNoaXZlIHdhcyBvcGVuZWQgaW4gJ3InIChyZWFkb25seSkgbW9kZS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gaW5kZXggaW5kZXggaW4gbG9jYWwgZGljdGlvbmFyeS4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZW50cnlfb3BlbmJ5aW5kZXgoc3RydWN0IHppcF90ICp6aXAsIGludCBpbmRleCk7CisgCistLyoKKy0gIENsb3NlcyBhIHppcCBlbnRyeSwgZmx1c2hlcyBidWZmZXIgYW5kIHJlbGVhc2VzIHJlc291cmNlcy4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogQ2xvc2VzIGEgemlwIGVudHJ5LCBmbHVzaGVzIGJ1ZmZlciBhbmQgcmVsZWFzZXMgcmVzb3VyY2VzLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9jbG9zZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgYSBsb2NhbCBuYW1lIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0gIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyJ3MgZW50cnkgbmFtZSBhbmQgbG9jYWwgZW50cnkgbmFtZQorLSAgaXMgb3B0aW9uYWwgcmVsYXRpdmUgcGF0aC4KKy0gIEZvbGxvd2luZyAuWklQIEZpbGUgRm9ybWF0IFNwZWNpZmljYXRpb24gLSB0aGUgcGF0aCBzdG9yZWQgTVVTVCBub3QgY29udGFpbgorLSAgYSBkcml2ZSBvciBkZXZpY2UgbGV0dGVyLCBvciBhIGxlYWRpbmcgc2xhc2guCistICBBbGwgc2xhc2hlcyBNVVNUIGJlIGZvcndhcmQgc2xhc2hlcyAnLycgYXMgb3Bwb3NlZCB0byBiYWNrd2FyZHMgc2xhc2hlcyAnXCcKKy0gIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQW1pZ2EgYW5kIFVOSVggZmlsZSBzeXN0ZW1zIGV0Yy4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHppcCBlbnRyeSBuYW1lLCBvciBOVUxMIG9uIGVycm9yLgorLSovCisrLyoqCisrICogUmV0dXJucyBhIGxvY2FsIG5hbWUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZXIncyBlbnRyeSBuYW1lIGFuZCBsb2NhbCBlbnRyeSBuYW1lCisrICogaXMgb3B0aW9uYWwgcmVsYXRpdmUgcGF0aC4KKysgKiBGb2xsb3dpbmcgLlpJUCBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIC0gdGhlIHBhdGggc3RvcmVkIE1VU1Qgbm90IGNvbnRhaW4KKysgKiBhIGRyaXZlIG9yIGRldmljZSBsZXR0ZXIsIG9yIGEgbGVhZGluZyBzbGFzaC4KKysgKiBBbGwgc2xhc2hlcyBNVVNUIGJlIGZvcndhcmQgc2xhc2hlcyAnLycgYXMgb3Bwb3NlZCB0byBiYWNrd2FyZHMgc2xhc2hlcyAnXCcKKysgKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEFtaWdhIGFuZCBVTklYIGZpbGUgc3lzdGVtcyBldGMuCisrICoKKysgKiBAcGFyYW0gemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCB6aXAgZW50cnkgbmFtZSwgb3IgTlVMTCBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gY29uc3QgY2hhciAqemlwX2VudHJ5X25hbWUoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBSZXR1cm5zIGFuIGluZGV4IG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSBpbmRleCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBSZXR1cm5zIGFuIGluZGV4IG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIGluZGV4IG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9pbmRleChzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIERldGVybWluZXMgaWYgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGlzIGEgZGlyZWN0b3J5IGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMSAodHJ1ZSksIDAgKGZhbHNlKSwgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogRGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCB6aXAgZW50cnkgaXMgYSBkaXJlY3RvcnkgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDEgKHRydWUpLCAwIChmYWxzZSksIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbgorKyAqICAgICAgICAgZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZW50cnlfaXNkaXIoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBSZXR1cm5zIGFuIHVuY29tcHJlc3NlZCBzaXplIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSB1bmNvbXByZXNzZWQgc2l6ZSBpbiBieXRlcy4KKy0qLworKy8qKgorKyAqIFJldHVybnMgYW4gdW5jb21wcmVzc2VkIHNpemUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgdW5jb21wcmVzc2VkIHNpemUgaW4gYnl0ZXMuCisrICovCisgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyB6aXBfZW50cnlfc2l6ZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgQ1JDLTMyIGNoZWNrc3VtIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSBDUkMtMzIgY2hlY2tzdW0uCistKi8KKysvKioKKysgKiBSZXR1cm5zIENSQy0zMiBjaGVja3N1bSBvZiB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSBDUkMtMzIgY2hlY2tzdW0uCisrICovCisgZXh0ZXJuIHVuc2lnbmVkIGludCB6aXBfZW50cnlfY3JjMzIoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBDb21wcmVzc2VzIGFuIGlucHV0IGJ1ZmZlciBmb3IgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBidWY6IGlucHV0IGJ1ZmZlci4KKy0gICAgYnVmc2l6ZTogaW5wdXQgYnVmZmVyIHNpemUgKGluIGJ5dGVzKS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogQ29tcHJlc3NlcyBhbiBpbnB1dCBidWZmZXIgZm9yIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gYnVmIGlucHV0IGJ1ZmZlci4KKysgKiBAcGFyYW0gYnVmc2l6ZSBpbnB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV93cml0ZShzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSk7CisgCistLyoKKy0gIENvbXByZXNzZXMgYSBmaWxlIGZvciB0aGUgY3VycmVudCB6aXAgZW50cnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGZpbGVuYW1lOiBpbnB1dCBmaWxlLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDb21wcmVzc2VzIGEgZmlsZSBmb3IgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBmaWxlbmFtZSBpbnB1dCBmaWxlLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9md3JpdGUoc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gb3V0cHV0IGJ1ZmZlci4KKy0gIFRoZSBmdW5jdGlvbiBhbGxvY2F0ZXMgc3VmZmljaWVudCBtZW1vcnkgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgYnVmOiBvdXRwdXQgYnVmZmVyLgorLSAgICBidWZzaXplOiBvdXRwdXQgYnVmZmVyIHNpemUgKGluIGJ5dGVzKS4KKy0KKy0gIE5vdGU6CistICAgIC0gcmVtZW1iZXIgdG8gcmVsZWFzZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBhIG91dHB1dCBidWZmZXIuCistICAgIC0gZm9yIGxhcmdlIGVudHJpZXMsIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB6aXBfZW50cnlfZXh0cmFjdCBmdW5jdGlvbi4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBvbiBzdWNjZXNzLgorLSAgICBPdGhlcndpc2UgYSAtMSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIG91dHB1dCBidWZmZXIuCisrICoKKysgKiBUaGUgZnVuY3Rpb24gYWxsb2NhdGVzIHN1ZmZpY2llbnQgbWVtb3J5IGZvciBhIG91dHB1dCBidWZmZXIuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGJ1ZiBvdXRwdXQgYnVmZmVyLgorKyAqIEBwYXJhbSBidWZzaXplIG91dHB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorKyAqCisrICogQG5vdGUgcmVtZW1iZXIgdG8gcmVsZWFzZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBhIG91dHB1dCBidWZmZXIuCisrICogICAgICAgZm9yIGxhcmdlIGVudHJpZXMsIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB6aXBfZW50cnlfZXh0cmFjdCBmdW5jdGlvbi4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCisrICogICAgICAgICBPdGhlcndpc2UgYSAtMSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gc3NpemVfdCB6aXBfZW50cnlfcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqKmJ1Ziwgc2l6ZV90ICpidWZzaXplKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gYSBtZW1vcnkgYnVmZmVyIHVzaW5nIG5vIG1lbW9yeQorLSAgYWxsb2NhdGlvbi4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgYnVmOiBwcmVhbGxvY2F0ZWQgb3V0cHV0IGJ1ZmZlci4KKy0gICAgYnVmc2l6ZTogb3V0cHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCistCistICBOb3RlOgorLSAgICAtIGVuc3VyZSBzdXBwbGllZCBvdXRwdXQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKy0gICAgLSB6aXBfZW50cnlfc2l6ZSBmdW5jdGlvbiAocmV0dXJucyB1bmNvbXByZXNzZWQgc2l6ZSBmb3IgdGhlIGN1cnJlbnQgZW50cnkpCistICAgICAgY2FuIGJlIGhhbmR5IHRvIGVzdGltYXRlIGhvdyBiaWcgYnVmZmVyIGlzIG5lZWRlZC4KKy0gICAgLSBmb3IgbGFyZ2UgZW50cmllcywgcGxlYXNlIHRha2UgYSBsb29rIGF0IHppcF9lbnRyeV9leHRyYWN0IGZ1bmN0aW9uLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCistICAgIE90aGVyd2lzZSBhIC0xIG9uIGVycm9yIChlLmcuIGJ1ZnNpemUgaXMgbm90IGxhcmdlIGVub3VnaCkuCistKi8KKy1leHRlcm4gc3NpemVfdCB6aXBfZW50cnlfbm9hbGxvY3JlYWQoc3RydWN0IHppcF90ICp6aXAsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpOworLQorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBvdXRwdXQgZmlsZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgZmlsZW5hbWU6IG91dHB1dCBmaWxlLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBhIG1lbW9yeSBidWZmZXIgdXNpbmcgbm8gbWVtb3J5CisrICogYWxsb2NhdGlvbi4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gYnVmIHByZWFsbG9jYXRlZCBvdXRwdXQgYnVmZmVyLgorKyAqIEBwYXJhbSBidWZzaXplIG91dHB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorKyAqCisrICogQG5vdGUgZW5zdXJlIHN1cHBsaWVkIG91dHB1dCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgorKyAqICAgICAgIHppcF9lbnRyeV9zaXplIGZ1bmN0aW9uIChyZXR1cm5zIHVuY29tcHJlc3NlZCBzaXplIGZvciB0aGUgY3VycmVudAorKyAqICAgICAgIGVudHJ5KSBjYW4gYmUgaGFuZHkgdG8gZXN0aW1hdGUgaG93IGJpZyBidWZmZXIgaXMgbmVlZGVkLiBmb3IgbGFyZ2UKKysgKiBlbnRyaWVzLCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgemlwX2VudHJ5X2V4dHJhY3QgZnVuY3Rpb24uCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBvbiBzdWNjZXNzLgorKyAqICAgICAgICAgT3RoZXJ3aXNlIGEgLTEgb24gZXJyb3IgKGUuZy4gYnVmc2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoKS4KKysgKi8KKytleHRlcm4gc3NpemVfdCB6aXBfZW50cnlfbm9hbGxvY3JlYWQoc3RydWN0IHppcF90ICp6aXAsIHZvaWQgKmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZnNpemUpOworKworKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIG91dHB1dCBmaWxlLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBmaWxlbmFtZSBvdXRwdXQgZmlsZS4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZW50cnlfZnJlYWQoc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IHVzaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24gKG9uX2V4dHJhY3QpLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBvbl9leHRyYWN0OiBjYWxsYmFjayBmdW5jdGlvbi4KKy0gICAgYXJnOiBvcGFxdWUgcG9pbnRlciAob3B0aW9uYWwgYXJndW1lbnQsCistICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBjYW4gcGFzcyB0byB0aGUgb25fZXh0cmFjdCBjYWxsYmFjaykKKy0KKy0gICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysvKioKKysgKiBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvbiAob25fZXh0cmFjdCkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIG9uX2V4dHJhY3QgY2FsbGJhY2sgZnVuY3Rpb24uCisrICogQHBhcmFtIGFyZyBvcGFxdWUgcG9pbnRlciAob3B0aW9uYWwgYXJndW1lbnQsIHdoaWNoIHlvdSBjYW4gcGFzcyB0byB0aGUKKysgKiAgICAgICAgb25fZXh0cmFjdCBjYWxsYmFjaykKKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisgICovCisgZXh0ZXJuIGludAorIHppcF9lbnRyeV9leHRyYWN0KHN0cnVjdCB6aXBfdCAqemlwLAorQEAgLTI2Miw1MyArMjYxLDQ5IEBAIHppcF9lbnRyeV9leHRyYWN0KHN0cnVjdCB6aXBfdCAqemlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSwKKyAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworIAorLS8qCistICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsIGVudHJpZXMgKGZpbGVzIGFuZCBkaXJlY3RvcmllcykgaW4gdGhlIHppcCBhcmNoaXZlLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBlbnRyaWVzIG9uIHN1Y2Nlc3MsCistICAgIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBhbGwgZW50cmllcyAoZmlsZXMgYW5kIGRpcmVjdG9yaWVzKSBpbiB0aGUgemlwIGFyY2hpdmUuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIHRoZSBudW1iZXIgb2YgZW50cmllcyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIKKysgKiAgICAgICAgICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX3RvdGFsX2VudHJpZXMoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBDcmVhdGVzIGEgbmV3IGFyY2hpdmUgYW5kIHB1dHMgZmlsZXMgaW50byBhIHNpbmdsZSB6aXAgYXJjaGl2ZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcG5hbWU6IHppcCBhcmNoaXZlIGZpbGUuCistICAgIGZpbGVuYW1lczogaW5wdXQgZmlsZXMuCistICAgIGxlbjogbnVtYmVyIG9mIGlucHV0IGZpbGVzLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDcmVhdGVzIGEgbmV3IGFyY2hpdmUgYW5kIHB1dHMgZmlsZXMgaW50byBhIHNpbmdsZSB6aXAgYXJjaGl2ZS4KKysgKgorKyAqIEBwYXJhbSB6aXBuYW1lIHppcCBhcmNoaXZlIGZpbGUuCisrICogQHBhcmFtIGZpbGVuYW1lcyBpbnB1dCBmaWxlcy4KKysgKiBAcGFyYW0gbGVuOiBudW1iZXIgb2YgaW5wdXQgZmlsZXMuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2NyZWF0ZShjb25zdCBjaGFyICp6aXBuYW1lLCBjb25zdCBjaGFyICpmaWxlbmFtZXNbXSwgc2l6ZV90IGxlbik7CisgCistLyoKKy0gIEV4dHJhY3RzIGEgemlwIGFyY2hpdmUgZmlsZSBpbnRvIGRpcmVjdG9yeS4KKy0KKy0gIElmIG9uX2V4dHJhY3RfZW50cnkgaXMgbm90IE5VTEwsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBhZnRlcgorLSAgc3VjY2Vzc2Z1bGx5IGV4dHJhY3RlZCBlYWNoIHppcCBlbnRyeS4KKy0gIFJldHVybmluZyBhIG5lZ2F0aXZlIHZhbHVlIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwgY2F1c2UgYWJvcnQgYW5kIHJldHVybiBhbgorLSAgZXJyb3IuIFRoZSBsYXN0IGFyZ3VtZW50ICh2b2lkICphcmcpIGlzIG9wdGlvbmFsLCB3aGljaCB5b3UgY2FuIHVzZSB0byBwYXNzCistICBkYXRhIHRvIHRoZSBvbl9leHRyYWN0X2VudHJ5IGNhbGxiYWNrLgorLQorLSAgQXJnczoKKy0gICAgemlwbmFtZTogemlwIGFyY2hpdmUgZmlsZS4KKy0gICAgZGlyOiBvdXRwdXQgZGlyZWN0b3J5LgorLSAgICBvbl9leHRyYWN0X2VudHJ5OiBvbiBleHRyYWN0IGNhbGxiYWNrLgorLSAgICBhcmc6IG9wYXF1ZSBwb2ludGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBFeHRyYWN0cyBhIHppcCBhcmNoaXZlIGZpbGUgaW50byBkaXJlY3RvcnkuCisrICoKKysgKiBJZiBvbl9leHRyYWN0X2VudHJ5IGlzIG5vdCBOVUxMLCB0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIKKysgKiBzdWNjZXNzZnVsbHkgZXh0cmFjdGVkIGVhY2ggemlwIGVudHJ5LgorKyAqIFJldHVybmluZyBhIG5lZ2F0aXZlIHZhbHVlIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwgY2F1c2UgYWJvcnQgYW5kIHJldHVybiBhbgorKyAqIGVycm9yLiBUaGUgbGFzdCBhcmd1bWVudCAodm9pZCAqYXJnKSBpcyBvcHRpb25hbCwgd2hpY2ggeW91IGNhbiB1c2UgdG8gcGFzcworKyAqIGRhdGEgdG8gdGhlIG9uX2V4dHJhY3RfZW50cnkgY2FsbGJhY2suCisrICoKKysgKiBAcGFyYW0gemlwbmFtZSB6aXAgYXJjaGl2ZSBmaWxlLgorKyAqIEBwYXJhbSBkaXIgb3V0cHV0IGRpcmVjdG9yeS4KKysgKiBAcGFyYW0gb25fZXh0cmFjdF9lbnRyeSBvbiBleHRyYWN0IGNhbGxiYWNrLgorKyAqIEBwYXJhbSBhcmcgb3BhcXVlIHBvaW50ZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2V4dHJhY3QoY29uc3QgY2hhciAqemlwbmFtZSwgY29uc3QgY2hhciAqZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqb25fZXh0cmFjdF9lbnRyeSkoY29uc3QgY2hhciAqZmlsZW5hbWUsIHZvaWQgKmFyZyksCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworIAorKy8qKiBAfSAqLworKworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0IGIvY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dAoraW5kZXggOWIyYThkYjEuLmNjMDYwYjAwIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dAorKysrIGIvY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dAorQEAgLTEsMTkgKzEsMTYgQEAKKyBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44KQorIAorLWlmICgiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkdOVSIgT1IgIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJDbGFuZyIgT1IgIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJBcHBsZUNsYW5nIikKKy0gIGlmKEVOQUJMRV9DT1ZFUkFHRSkKKy0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWcgIikKKy0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLU8wIikKKy0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWZwcm9maWxlLWFyY3MiKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZnRlc3QtY292ZXJhZ2UiKQorLSAgICBzZXQoQ01BS0VfRVhFX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtLWNvdmVyYWdlIikKKy0gIGVuZGlmKCkKKy1lbmRpZiAoKQorLQorICMgdGVzdAorLWluY2x1ZGVfZGlyZWN0b3JpZXMoLi4vc3JjKQorLWFkZF9leGVjdXRhYmxlKHRlc3QuZXhlIHRlc3QuYyAuLi9zcmMvemlwLmMpCistYWRkX2V4ZWN1dGFibGUodGVzdF9taW5pei5leGUgdGVzdF9taW5pei5jKQorK3NldCh0ZXN0X291dCB0ZXN0Lm91dCkKKytzZXQodGVzdF9taW5pel9vdXQgdGVzdF9taW5pei5vdXQpCisrCisrYWRkX2V4ZWN1dGFibGUoJHt0ZXN0X291dH0gdGVzdC5jKQorK3RhcmdldF9saW5rX2xpYnJhcmllcygke3Rlc3Rfb3V0fSB6aXApCisrYWRkX2V4ZWN1dGFibGUoJHt0ZXN0X21pbml6X291dH0gdGVzdF9taW5pei5jKQorK3RhcmdldF9saW5rX2xpYnJhcmllcygke3Rlc3RfbWluaXpfb3V0fSB6aXApCisrCisrYWRkX3Rlc3QoTkFNRSAke3Rlc3Rfb3V0fSBDT01NQU5EICR7dGVzdF9vdXR9KQorK2FkZF90ZXN0KE5BTUUgJHt0ZXN0X21pbml6X291dH0gQ09NTUFORCAke3Rlc3RfbWluaXpfb3V0fSkKKyAKKy1hZGRfdGVzdChOQU1FIHRlc3QgQ09NTUFORCB0ZXN0LmV4ZSkKKy1hZGRfdGVzdChOQU1FIHRlc3RfbWluaXogQ09NTUFORCB0ZXN0X21pbml6LmV4ZSkKKytzZXQodGVzdF9vdXQgJHt0ZXN0X291dH0gUEFSRU5UX1NDT1BFKQorK3NldCh0ZXN0X21pbml6X291dCAke3Rlc3RfbWluaXpfb3V0fSBQQVJFTlRfU0NPUEUpCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvdGVzdC90ZXN0LmMgYi9jb250cmliL3ppcC90ZXN0L3Rlc3QuYworaW5kZXggNDU0NDMwNTMuLmE5YjJkZGFiIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvdGVzdC90ZXN0LmMKKysrKyBiL2NvbnRyaWIvemlwL3Rlc3QvdGVzdC5jCitAQCAtMjksNiArMjksOCBAQAorICNkZWZpbmUgWEZJTEUgIjcudHh0XDAiCisgI2RlZmluZSBYTU9ERSAwMTAwNzc3CisgCisrI2RlZmluZSBVTklYTU9ERSAwMTAwNjQ0CisrCisgI2RlZmluZSBVTlVTRUQoeCkgKHZvaWQpeAorIAorIHN0YXRpYyBpbnQgdG90YWxfZW50cmllcyA9IDA7CitAQCAtMTAyLDcgKzEwNCw4IEBAIHN0YXRpYyB2b2lkIHRlc3RfcmVhZCh2b2lkKSB7CisgICBhc3NlcnQoMCA9PSB6aXBfZW50cnlfY2xvc2UoemlwKSk7CisgICBmcmVlKGJ1Zik7CisgICBidWYgPSBOVUxMOworLSAgCisrICBidWZzaXplID0gMDsKKysKKyAgIGFzc2VydCgwID09IHppcF9lbnRyeV9vcGVuKHppcCwgInRlc3QvdGVzdC0yLnR4dCIpKTsKKyAgIGFzc2VydChzdHJsZW4oVEVTVERBVEEyKSA9PSB6aXBfZW50cnlfc2l6ZSh6aXApKTsKKyAgIGFzc2VydChDUkMzMkRBVEEyID09IHppcF9lbnRyeV9jcmMzMih6aXApKTsKK0BAIC0xMzEsNyArMTM0LDggQEAgc3RhdGljIHZvaWQgdGVzdF9yZWFkKHZvaWQpIHsKKyAgIGFzc2VydCgwID09IHppcF9lbnRyeV9jbG9zZSh6aXApKTsKKyAgIGZyZWUoYnVmKTsKKyAgIGJ1ZiA9IE5VTEw7CistICAKKysgIGJ1ZnNpemUgPSAwOworKworICAgYnVmdG1wID0gc3RybGVuKFRFU1REQVRBMSk7CisgICBidWYgPSBjYWxsb2MoYnVmdG1wLCBzaXplb2YoY2hhcikpOworICAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X29wZW4oemlwLCAidGVzdC90ZXN0LTEudHh0IikpOworQEAgLTQzMyw2ICs0MzcsMzUgQEAgc3RhdGljIHZvaWQgdGVzdF9tdGltZSh2b2lkKSB7CisgICByZW1vdmUoWklQTkFNRSk7CisgfQorIAorK3N0YXRpYyB2b2lkIHRlc3RfdW5peF9wZXJtaXNzaW9ucyh2b2lkKSB7CisrI2lmIGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pCisrI2Vsc2UKKysgIC8vIFVOSVggb3IgQVBQTEUKKysgIHN0cnVjdCBNWl9GSUxFX1NUQVRfU1RSVUNUIGZpbGVfc3RhdHM7CisrCisrICByZW1vdmUoWklQTkFNRSk7CisrCisrICBzdHJ1Y3QgemlwX3QgKnppcCA9IHppcF9vcGVuKFpJUE5BTUUsIFpJUF9ERUZBVUxUX0NPTVBSRVNTSU9OX0xFVkVMLCAndycpOworKyAgYXNzZXJ0KHppcCAhPSBOVUxMKTsKKysKKysgIGFzc2VydCgwID09IHppcF9lbnRyeV9vcGVuKHppcCwgUkZJTEUpKTsKKysgIGFzc2VydCgwID09IHppcF9lbnRyeV93cml0ZSh6aXAsIFRFU1REQVRBMSwgc3RybGVuKFRFU1REQVRBMSkpKTsKKysgIGFzc2VydCgwID09IHppcF9lbnRyeV9jbG9zZSh6aXApKTsKKysKKysgIHppcF9jbG9zZSh6aXApOworKworKyAgcmVtb3ZlKFJGSUxFKTsKKysKKysgIGFzc2VydCgwID09IHppcF9leHRyYWN0KFpJUE5BTUUsICIuIiwgTlVMTCwgTlVMTCkpOworKworKyAgYXNzZXJ0KDAgPT0gTVpfRklMRV9TVEFUKFJGSUxFLCAmZmlsZV9zdGF0cykpOworKyAgYXNzZXJ0KFVOSVhNT0RFID09IGZpbGVfc3RhdHMuc3RfbW9kZSk7CisrCisrICByZW1vdmUoUkZJTEUpOworKyAgcmVtb3ZlKFpJUE5BTUUpOworKyNlbmRpZgorK30KKysKKyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgICBVTlVTRUQoYXJnYyk7CisgICBVTlVTRUQoYXJndik7CitAQCAtNDUzLDYgKzQ4Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgIHRlc3Rfd3JpdGVfcGVybWlzc2lvbnMoKTsKKyAgIHRlc3RfZXhlX3Blcm1pc3Npb25zKCk7CisgICB0ZXN0X210aW1lKCk7CisrICB0ZXN0X3VuaXhfcGVybWlzc2lvbnMoKTsKKyAKKyAgIHJlbW92ZShaSVBOQU1FKTsKKyAgIHJldHVybiAwOworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3Rlc3QvdGVzdF9taW5pei5jIGIvY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMKK2luZGV4IGViYzA1NjRkLi5iYWJjYWVjZCAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL3Rlc3QvdGVzdF9taW5pei5jCisrKysgYi9jb250cmliL3ppcC90ZXN0L3Rlc3RfbWluaXouYworQEAgLTIzLDE2ICsyMywzOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgICB1aW50IHN0ZXAgPSAwOworICAgaW50IGNtcF9zdGF0dXM7CisgICB1TG9uZyBzcmNfbGVuID0gKHVMb25nKXN0cmxlbihzX3BTdHIpOworLSAgdUxvbmcgY21wX2xlbiA9IGNvbXByZXNzQm91bmQoc3JjX2xlbik7CisgICB1TG9uZyB1bmNvbXBfbGVuID0gc3JjX2xlbjsKKysgIHVMb25nIGNtcF9sZW47CisgICB1aW50OCAqcENtcCwgKnBVbmNvbXA7CisrICBzaXplX3Qgc3o7CisgICB1aW50IHRvdGFsX3N1Y2NlZWRlZCA9IDA7CisgICAodm9pZClhcmdjLCAodm9pZClhcmd2OworIAorICAgcHJpbnRmKCJtaW5pei5jIHZlcnNpb246ICVzXG4iLCBNWl9WRVJTSU9OKTsKKyAKKyAgIGRvIHsKKysgICAgcENtcCA9ICh1aW50OCAqKXRkZWZsX2NvbXByZXNzX21lbV90b19oZWFwKHNfcFN0ciwgc3JjX2xlbiwgJmNtcF9sZW4sIDApOworKyAgICBpZiAoIXBDbXApIHsKKysgICAgICBwcmludGYoInRkZWZsX2NvbXByZXNzX21lbV90b19oZWFwIGZhaWxlZFxuIik7CisrICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKysgICAgfQorKyAgICBpZiAoc3JjX2xlbiA8PSBjbXBfbGVuKSB7CisrICAgICAgcHJpbnRmKCJ0ZGVmbF9jb21wcmVzc19tZW1fdG9faGVhcCBmYWlsZWQ6IGZyb20gJXUgdG8gJXUgYnl0ZXNcbiIsCisrICAgICAgICAgICAgIChtel91aW50MzIpdW5jb21wX2xlbiwgKG16X3VpbnQzMiljbXBfbGVuKTsKKysgICAgICBmcmVlKHBDbXApOworKyAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisrICAgIH0KKysKKysgICAgc3ogPSB0ZGVmbF9jb21wcmVzc19tZW1fdG9fbWVtKHBDbXAsIGNtcF9sZW4sIHNfcFN0ciwgc3JjX2xlbiwgMCk7CisrICAgIGlmIChzeiAhPSBjbXBfbGVuKSB7CisrICAgICAgcHJpbnRmKCJ0ZGVmbF9jb21wcmVzc19tZW1fdG9fbWVtIGZhaWxlZDogZXhwZWN0ZWQgJXUsIGdvdCAldVxuIiwKKysgICAgICAgICAgICAgKG16X3VpbnQzMiljbXBfbGVuLCAobXpfdWludDMyKXN6KTsKKysgICAgICBmcmVlKHBDbXApOworKyAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisrICAgIH0KKysKKyAgICAgLy8gQWxsb2NhdGUgYnVmZmVycyB0byBob2xkIGNvbXByZXNzZWQgYW5kIHVuY29tcHJlc3NlZCBkYXRhLgorKyAgICBmcmVlKHBDbXApOworKyAgICBjbXBfbGVuID0gY29tcHJlc3NCb3VuZChzcmNfbGVuKTsKKyAgICAgcENtcCA9IChtel91aW50OCAqKW1hbGxvYygoc2l6ZV90KWNtcF9sZW4pOworICAgICBwVW5jb21wID0gKG16X3VpbnQ4ICopbWFsbG9jKChzaXplX3Qpc3JjX2xlbik7CisgICAgIGlmICgoIXBDbXApIHx8ICghcFVuY29tcCkpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTRjYmUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAotICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMTE5ZWRlZjA5MTZiMGJkNTExY2IzYzczMTA3NjI3MSIKLQotREVQRU5EUyA9ICJ6bGliIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVNSQ1JFViA9ICI4MDc5OWJkYmY5MGNlNjI2NDc1NjM1ODE1ZWUxODUzNzcxOGEwNWIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURBU1NJTVBfQlVJTERfQVNTSU1QX1RPT0xTPU9GRiAtREFTU0lNUF9CVUlMRF9URVNUUz1PRkYgLURBU1NJTVBfTElCX0lOU1RBTExfRElSPSR7YmFzZWxpYn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzUuMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF81LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YThjNjJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF81LjAuMS5iYgpAQCAtMCwwICsxLDIzIEBACitERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAorICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMTE5ZWRlZjA5MTZiMGJkNTExY2IzYzczMTA3NjI3MSIKKworREVQRU5EUyA9ICJ6bGliIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC5naXQ7YnJhbmNoPWFzc2ltcF81LjBfcmVsZWFzZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsb3Nlcy1odHRwcy1naXRodWIuY29tLWFzc2ltcC1hc3NpbXAtaXNzdWVzLTI3MzMtdXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQVNTSU1QX0xJQl9JTlNUQUxMX0RJUi10by1zZWFyY2gtbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjhmMGM2YjA0YjIyNTdhNTIwYWFhYjM4NDIxYjJlMDkwMjA0YjY5ZGYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKaW5kZXggOTNiY2ZiZi4uNzYyNDA2MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDBhMjcxNDRkNDNiNzAxMjFmNTdmNjAzNjUxNGQwNjljYTlkMmI5NzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDBjYmY5Yzk4MzFmNzczZTBkYTY2MjA5YmU5YTZmZjI4ZDU3YzIzMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgogRGF0ZTogTW9uLCAzMCBKdWwgMjAxOCAxNzoyMzoyOSArMDMwMAogU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCBkZW1vcyB3aXRoIHF1ZXN0aW9uYWJseSBsaWNlbnNlZCBkYXRhCkBAIC0zMywxNiArMzMsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorCiAtLS0KICBleGFtcGxlcy9DTWFrZUxpc3RzLnR4dCB8IDE0IC0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQgYi9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAotaW5kZXggOGVlZTNhNC4uNjk4ZDNiMyAxMDA2NDQKK2luZGV4IGUwNzkxOGMuLjA4YjZlMjMgMTAwNjQ0CiAtLS0gYS9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAogKysrIGIvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQKLUBAIC00NywxOCArNDcsMTIgQEAgc2V0KEVYQU1QTEVTCi0gCWNvbXB1dGVzaGFkZXIKK0BAIC01NSwxOCArNTUsMTIgQEAgc2V0KEVYQU1QTEVTCisgCWNvbmRpdGlvbmFscmVuZGVyCiAgCWNvbnNlcnZhdGl2ZXJhc3RlcgogIAlkZWJ1Z21hcmtlcgogLQlkZWZlcnJlZApAQCAtNTcsMTAgKzU4LDEwIEBACiAtCWhkcgogLQlpbWd1aQogLQlpbmRpcmVjdGRyYXcKKyAJaW5saW5ldW5pZm9ybWJsb2NrcwogIAlpbnB1dGF0dGFjaG1lbnRzCiAgCWluc3RhbmNpbmcKLSAJbWVzaAotQEAgLTcwLDggKzY0LDYgQEAgc2V0KEVYQU1QTEVTCitAQCAtODMsMjMgKzc3LDE2IEBAIHNldChFWEFNUExFUwogIAlwYXJhbGxheG1hcHBpbmcKICAJcGFydGljbGVmaXJlCiAgCXBicmJhc2ljCkBAIC02OSw5ICs3MCw4IEBACiAgCXBpcGVsaW5lcwogIAlwaXBlbGluZXN0YXRpc3RpY3MKICAJcHVzaGNvbnN0YW50cwotQEAgLTc5LDE1ICs3MSwxMCBAQCBzZXQoRVhBTVBMRVMKKyAJcHVzaGRlc2NyaXB0b3JzCiAgCXJhZGlhbGJsdXIKLSAJcmF5dHJhY2luZwogIAlyZW5kZXJoZWFkbGVzcwogLQlzY2VuZXJlbmRlcmluZwogIAlzY3JlZW5zaG90CkBAIC04NSw3ICs4NSw3IEBACiAgCXN0ZW5jaWxidWZmZXIKICAJc3VicGFzc2VzCiAgCXRlcnJhaW50ZXNzZWxsYXRpb24KLUBAIC0xMDEsNyArODgsNiBAQCBzZXQoRVhBTVBMRVMKK0BAIC0xMTMsNyArMTAwLDYgQEAgc2V0KEVYQU1QTEVTCiAgCXRleHR1cmVzcGFyc2VyZXNpZGVuY3kKICAJdHJpYW5nbGUKICAJdmlld3BvcnRhcnJheQpAQCAtOTMsNiArOTMsMyBAQAogICkKICAKICBidWlsZEV4YW1wbGVzKCkKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgppbmRleCA3NGRjMmFkLi5jOTRlNzY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgpAQCAtNSwyMyArNSwyMyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZGNmNDczNzIzZmFhYmYxN2JhYTliNWYyMjA3NTk5ZDAgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXhhbXBsZXMvdHJpYW5nbGUvdHJpYW5nbGUuY3BwO2VuZGxpbmU9MTI7bWQ1PWJjY2QxYmY5Y2FkZDllMTAwODZjZjc4NzIxNTdlNGZhIgogCi1TUkNSRVZfZ2xtID0gIjAxZjlhYjViNmQyMWU1MDYyYWMwZjZlMGYyMDVjN2ZhMmNhOWQ3NjkiCi1TUkNSRVZfZ2xpID0gIjhlNDMwMzBiM2UxMmJiNThhNDY2M2Q4NWFkYzVjNzUyZjg5MDk5YzAiCitTUkNSRVZfZ2xtID0gIjFhZDU1YzUwMTYzMzliODNiN2VlYzk4YzMxMDA3ZTBhZWU1N2QyYmYiCitTUkNSRVZfZ2xpID0gIjdkYTVmNTA5MzEyMjVlOTgxOWEyNmQ1Y2IzMjNjNWY0MmRhNTBiY2QiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9TYXNjaGFXaWxsZW1zL1Z1bGthbi5naXQgXAogICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG07ZGVzdHN1ZmZpeD1naXQvZXh0ZXJuYWwvZ2xtO25hbWU9Z2xtIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nLXRydWMvZ2xpO2Rlc3RzdWZmaXg9Z2l0L2V4dGVybmFsL2dsaTtuYW1lPWdsaSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggXAotIgorICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi1TUkNSRVYgPSAiYWUwYjU5YzZlMmU4NjMwYTJhZTI2ZjRhMGI3YTcyY2JlNzU0Nzk0OCIKK1NSQ1JFViA9ICI2ZDYzZGMzMmMzMjBhNDliZTBhNTZjMzY1MTUxYzhmMmYxNzZiYzU5IgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiVGhlc2UgYXJlIG5vdCB0aGUgcmVsZWFzZXMgeW91J3JlIGxvb2tpbmcgZm9yIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gJ3Z1bGthbicKIAogaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjawotREVQRU5EUyA9ICJ2dWxrYW4tbG9hZGVyIGFzc2ltcCIKK0RFUEVORFMgPSAidnVsa2FuLWxvYWRlciBhc3NpbXAgd2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1uYXRpdmUiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICAjIFJlbW92ZSBhc3NldHMgdGhhdCBoYXZlIHVuY2VydGFpbiBsaWNlbnNlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEwOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg0YzE5ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEwOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiVnVsa2FuIEhlYWRlciBmaWxlcyBhbmQgQVBJIHJlZ2lzdHJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tSGVhZGVycyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tSGVhZGVycy5naXQ7YnJhbmNoPXNkay0ke1BWfSIKLQotU1JDUkVWID0gIjA5N2ExMDQ1MDk4MjEzOTE5ZmQ1NjQ0MmY1MmM3MTZmYzc4ZWViMjciCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdnVsa2FuIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjMjlhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTI2LjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJWdWxrYW4gSGVhZGVyIGZpbGVzIGFuZCBBUEkgcmVnaXN0cnkiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzLmdpdDticmFuY2g9c2RrLTEuMS4xMjYiCisKK1NSQ1JFViA9ICI1YmM0NTllMjkyMTMwNGMzMjU2OGI3M2VkYWFjOGQ2ZGY1Zjk4Yjg0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3Z1bGthbiIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTM5YzVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgotREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKLXRoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAotcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCi10aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlciIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTdkYmVmZWQyMzI0Mjc2MGFhMzQ3NWVlNDI4MDFjNWFjIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyLmdpdDticmFuY2g9c2RrLSR7UFZ9IgotU1JDUkVWID0gImVjYjBiMWU2OWZiMmY0ZDNjYWUyNjJlNmRhMjRjMTcwY2U2MmFlMTMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCi0KLWluaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCi0KLURFUEVORFMgKz0gInZ1bGthbi1oZWFkZXJzIgotCi1FWFRSQV9PRUNNQUtFID0gIlwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYgXAotICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgICIKLQotIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGLCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJtZXNhLXZ1bGthbi1kcml2ZXJzIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEyNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEyNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNGNmODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTI2LjAuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICIzRCBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgY29tbW9uIGxvYWRlciIKK0RFU0NSSVBUSU9OID0gIlZ1bGthbiBpcyBhIG5ldyBnZW5lcmF0aW9uIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBcCit0aGF0IHByb3ZpZGVzIGVmZmljaWVudCBhY2Nlc3MgdG8gbW9kZXJuIEdQVXMuIFRoZXNlIHBhY2thZ2VzIFwKK3Byb3ZpZGUgb25seSB0aGUgY29tbW9uIHZlbmRvci1hZ25vc3RpYyBsaWJyYXJ5IGxvYWRlciwgaGVhZGVycyBhbmQgXAordGhlIHZ1bGthbmluZm8gdXRpbGl0eS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXIiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZGJlZmVkMjMyNDI3NjBhYTM0NzVlZTQyODAxYzVhYyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlci5naXQ7YnJhbmNoPXNkay0xLjEuMTI2IgorU1JDUkVWID0gIjRhZGFkNGZmNzA1ZmE3NmY5ZWRiMmQzN2NiNTdlNTkzZGVjYjYwZWQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK2luaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0RFUEVORFMgKz0gInZ1bGthbi1oZWFkZXJzIgorCitFWFRSQV9PRUNNQUtFID0gIlwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYgXAorICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMyBcCisgICAgICAgICAgICAgICAgIC1EQVNTRU1CTEVSX1dPUktTPUZBTFNFIFwKKyAgICAgICAgICAgICAgICAgIgorCisjIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzFiYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi10b29sc18xLjEuMTA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJWdWxrYW4gVXRpbGl0aWVzIGFuZCBUb29scyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLVRvb2xzIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Ub29scy5naXQ7YnJhbmNoPXNkay0ke1BWfSIKLVNSQ1JFViA9ICIzY2NkN2Y2ZWJhZTNlMTkxOWFkZjgzNzcxOGMwNGZlYjZjMmFjYzYxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKLQotREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMgdnVsa2FuLWxvYWRlciIKLQotRVhUUkFfT0VDTUFLRSA9ICJcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9DVUJFPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKLSAgICAgICAgICAgICAgICAgIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEyNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDYxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMjYuMC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIlZ1bGthbiBVdGlsaXRpZXMgYW5kIFRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tVG9vbHMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLVRvb2xzLmdpdDticmFuY2g9c2RrLTEuMS4xMjYiCitTUkNSRVYgPSAiMDk2OTVkZmM1ZGJlNTRmODY5YWVhZmY4ZGI5M2JiN2JiNmEyMjBlMCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK0RFUEVORFMgKz0gInZ1bGthbi1oZWFkZXJzIHZ1bGthbi1sb2FkZXIiCisKK0VYVFJBX09FQ01BS0UgPSAiXAorICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfQ1VCRT1PRkYgXAorICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMyBcCisgICAgICAgICAgICAgICAgICIKKworIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGLCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS42LjAuYmIKaW5kZXggNTJjYjFkZi4uYTYyMDI5NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjYuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNi4wLmJiCkBAIC0xMSw2ICsxMSw4IEBACiAKIGluaGVyaXQgbWVzb24gZmVhdHVyZXNfY2hlY2sgbGliX3BhY2thZ2UgYmFzaC1jb21wbGV0aW9uCiAKK0RFUEVORFNfYXBwZW5kID0gIiBweXRob24zIgorCiAjIFRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gcGVyLW1hY2hpbmUgdG8gcmVmbGVjdCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBHTAogIyBzdGFjay4KIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbHggeDExLWVnbCcsICcnLCBkKX0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvZGV0ZXJtaW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1NTQwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvZGV0ZXJtaW5pc20ucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorVGhpcyBmaW5kcyBvdXIgb3V0ZXIgZ2l0IHRyZWUgYW5kIHRoYXQgdmVyc2lvbiBpbmZvcm1hdGlvbiBicmVha3MKK2RldGVybWluaXNtIG9mIHRoaXMgcmVjaXBlLiBEaXNhYmxlIGl0LgorCitSUCAyMDIwLzIvNgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogbGliaW5wdXQtMS4xNC4zL21lc29uLmJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliaW5wdXQtMS4xNC4zLm9yaWcvbWVzb24uYnVpbGQKKysrKyBsaWJpbnB1dC0xLjE0LjMvbWVzb24uYnVpbGQKK0BAIC0zODcsNyArMzg3LDcgQEAgcGtnY29uZmlnLmdlbmVyYXRlKAorIAlsaWJyYXJpZXMgOiBsaWJfbGliaW5wdXQKKyApCisgCistZ2l0X3ZlcnNpb25faCA9IHZjc190YWcoY29tbWFuZCA6IFsnZ2l0JywgJ2Rlc2NyaWJlJ10sCisrZ2l0X3ZlcnNpb25faCA9IHZjc190YWcoY29tbWFuZCA6IFsnZmFsc2UnXSwKKyAJCQlmYWxsYmFjayA6ICd1bmtub3duJywKKyAJCQlpbnB1dCA6ICdzcmMvbGliaW5wdXQtZ2l0LXZlcnNpb24uaC5pbicsCisgCQkJb3V0cHV0IDonbGliaW5wdXQtZ2l0LXZlcnNpb24uaCcpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuMTQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDZhOGQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCi1ERVNDUklQVElPTiA9ICJsaWJpbnB1dCBpcyBhIGxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBcCi1jb21wb3NpdG9ycyBhbmQgdG8gcHJvdmlkZSBhIGdlbmVyaWMgWC5PcmcgaW5wdXQgZHJpdmVyLiBJdCBwcm92aWRlcyBcCi1kZXZpY2UgZGV0ZWN0aW9uLCBkZXZpY2UgaGFuZGxpbmcsIGlucHV0IGRldmljZSBldmVudCBwcm9jZXNzaW5nIGFuZCBcCi1hYnN0cmFjdGlvbiBzbyBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGN1c3RvbSBpbnB1dCBjb2RlIGNvbXBvc2l0b3JzIG5lZWQgdG8gXAotcHJvdmlkZSB0aGUgY29tbW9uIHNldCBvZiBmdW5jdGlvbmFsaXR5IHRoYXQgdXNlcnMgZXhwZWN0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmMmVhOWViZmYzYTJjNmQ0NThmYWY1ODQ5MmVmYjYzIgotCi1ERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkMDUyZmFhNjRlYjZkMmU2NDllNTgyY2MwZmNmNmUzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZmViM2EwNTg5NzA5Y2MxMDMyODkzYmZhZjRjNDkxNTBkNTM2MGJkOTc4MmJlYzg4OGY5ZTRkZDkwNDRjNWI3IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJpbnB1dC0oP1A8cHZlcj5cZCtcLlxkK1wuKD8hOVxkKylcZCspIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCi1QQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKLQotVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSBcCi0gICAgICAgICAgICAgICAgICAtRGRvY3VtZW50YXRpb249ZmFsc2UgXAotICAgICAgICAgICAgICAgICAgLUR0ZXN0cz1mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAtRHpzaGNvbXBsZXRpb25kaXI9bm8iCi0KLSMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yawotUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE1LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEwNTMyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNS4yLmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgorREVTQ1JJUFRJT04gPSAibGliaW5wdXQgaXMgYSBsaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgXAorY29tcG9zaXRvcnMgYW5kIHRvIHByb3ZpZGUgYSBnZW5lcmljIFguT3JnIGlucHV0IGRyaXZlci4gSXQgcHJvdmlkZXMgXAorZGV2aWNlIGRldGVjdGlvbiwgZGV2aWNlIGhhbmRsaW5nLCBpbnB1dCBkZXZpY2UgZXZlbnQgcHJvY2Vzc2luZyBhbmQgXAorYWJzdHJhY3Rpb24gc28gbWluaW1pemUgdGhlIGFtb3VudCBvZiBjdXN0b20gaW5wdXQgY29kZSBjb21wb3NpdG9ycyBuZWVkIHRvIFwKK3Byb3ZpZGUgdGhlIGNvbW1vbiBzZXQgb2YgZnVuY3Rpb25hbGl0eSB0aGF0IHVzZXJzIGV4cGVjdC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmlucHV0LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZjJlYTllYmZmM2EyYzZkNDU4ZmFmNTg0OTJlZmI2MyIKKworREVQRU5EUyA9ICJsaWJldmRldiB1ZGV2IG10ZGV2IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWI2YmQyOTA3YWQzM2Q1Mzk1NGQ3MGRmYjg4MWE2NDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTcxYzNmYmZiNjI0Zjk1YzkxMWFkZWIyODAzYzM3MmU0ZTM2NDdkMWI5OGYyNzhmNjYwMDUxZjgzNDU5Nzc0NyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliaW5wdXQtKD9QPHB2ZXI+XGQrXC5cZCtcLig/ITlcZCspXGQrKSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi1EbGlid2Fjb209dHJ1ZSwtRGxpYndhY29tPWZhbHNlLGxpYndhY29tIgorUEFDS0FHRUNPTkZJR1tndWldID0gIi1EZGVidWctZ3VpPXRydWUsLURkZWJ1Zy1ndWk9ZmFsc2UsY2Fpcm8gZ3RrKzMiCisKK1VERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgorCitFWFRSQV9PRU1FU09OICs9ICItRHVkZXYtZGlyPSR7VURFVkRJUn0gXAorICAgICAgICAgICAgICAgICAgLURkb2N1bWVudGF0aW9uPWZhbHNlIFwKKyAgICAgICAgICAgICAgICAgIC1EdGVzdHM9ZmFsc2UgXAorICAgICAgICAgICAgICAgICAgLUR6c2hjb21wbGV0aW9uZGlyPW5vIgorCisjIHBhY2thZ2UgbmFtZSBjaGFuZ2VkIGluIDEuOC4xIHVwZ3JhZGU6IG1ha2Ugc3VyZSBwYWNrYWdlIHVwZ3JhZGVzIHdvcmsKK1JQUk9WSURFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JDT05GTElDVFNfJHtQTn0gPSAibGliaW5wdXQiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL210ZGV2XzEuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2QwZWJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpdG91Y2ggUHJvdG9jb2wgVHJhbnNsYXRpb24gTGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibXRkZXYgaXMgYSBsaWJyYXJ5IHdoaWNoIHRyYW5zZm9ybXMgYWxsIHZhcmlhbnRzIG9mIGtlcm5lbCBcCi1tdWx0aXRvdWNoIGV2ZW50cyB0byB0aGUgc2xvdHRlZCB0eXBlIEIgcHJvdG9jb2wuIFRoZSBldmVudHMgcHV0IGludG8gbXRkZXYgbWF5IFwKLWJlIGZyb20gYW55IE1UIGRldmljZSwgc3BlY2lmaWNhbGx5IHR5cGUgQSB3aXRob3V0IGNvbnRhY3QgdHJhY2tpbmcsIHR5cGUgQSB3aXRoIFwKLWNvbnRhY3QgdHJhY2tpbmcsIG9yIHR5cGUgQiB3aXRoIGNvbnRhY3QgdHJhY2tpbmciCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9iaXRtYXRoLm9yZy9jb2RlL210ZGV2LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTZiZDAyNjhiYjBmY2Q2YjI3Njk4NjE2Y2VlZTVkNiIKLQotU1JDX1VSSSA9ICJodHRwOi8vYml0bWF0aC5vcmcvY29kZS8ke0JQTn0vJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MmM5NjEwYjYwMDJmNzFkMTY0MmRjMWExY2NhNWVjMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Njc3ZDU3MDhhNzk0ODg0MGRlNzM0ZDhiNDY3NWQ1OTgwZDQ1NjExNzFjNWE4ZTg5ZTU0YWRmN2ExM2ViYTdmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL210ZGV2XzEuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWNiNWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL210ZGV2XzEuMS42LmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiTXVsdGl0b3VjaCBQcm90b2NvbCBUcmFuc2xhdGlvbiBMaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJtdGRldiBpcyBhIGxpYnJhcnkgd2hpY2ggdHJhbnNmb3JtcyBhbGwgdmFyaWFudHMgb2Yga2VybmVsIFwKK211bHRpdG91Y2ggZXZlbnRzIHRvIHRoZSBzbG90dGVkIHR5cGUgQiBwcm90b2NvbC4gVGhlIGV2ZW50cyBwdXQgaW50byBtdGRldiBtYXkgXAorYmUgZnJvbSBhbnkgTVQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgdHlwZSBBIHdpdGhvdXQgY29udGFjdCB0cmFja2luZywgdHlwZSBBIHdpdGggXAorY29udGFjdCB0cmFja2luZywgb3IgdHlwZSBCIHdpdGggY29udGFjdCB0cmFja2luZyIKKworSE9NRVBBR0UgPSAiaHR0cDovL2JpdG1hdGgub3JnL2NvZGUvbXRkZXYvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNmJkMDI2OGJiMGZjZDZiMjc2OTg2MTZjZWVlNWQ2IgorCitTUkNfVVJJID0gImh0dHA6Ly9iaXRtYXRoLm9yZy9jb2RlLyR7QlBOfS8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImJmOGVmMjQ4MmU4NGEwMGI1ZGI4ZmJkM2NlMDBlMjQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1ZDdiMjhkYThhYzcxZDhiYzhjOTI4N2MyMDQ1ZmQxNzQyNjdiYzc0MGJlYzEwY2ZkYTMzMmRjMTIwNGUwZTAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGJlYzY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIFdheWxhbmQgcHJvdG9jb2xzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBwcm90b2NvbHMgdGhhdCBhZGQgZnVuY3Rpb25hbGl0eSBub3QgXAotYXZhaWxhYmxlIGluIHRoZSBXYXlsYW5kIGNvcmUgcHJvdG9jb2wuIFN1Y2ggcHJvdG9jb2xzIGVpdGhlciBhZGQgXAotY29tcGxldGVseSBuZXcgZnVuY3Rpb25hbGl0eSwgb3IgZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgb3RoZXIgXAotcHJvdG9jb2wgZWl0aGVyIGluIFdheWxhbmQgY29yZSwgb3Igc29tZSBvdGhlciBwcm90b2NvbCBpbiBcCi13YXlsYW5kLXByb3RvY29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM3YjEyYjY3MDJkYTM4Y2EwMjhhY2U1NGFhZTNkNDg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0YWJsZS9wcmVzZW50YXRpb24tdGltZS9wcmVzZW50YXRpb24tdGltZS54bWw7ZW5kbGluZT0yNjttZDU9NDY0NmNkN2Q5ZWRjOWZhNTVkYjk0MWYyZDNhN2RjNTMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImFmMzhmMjJkOGUyMzNjMmYyZTAwZGRjOGRjYzk0Njk0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkNzNiN2U3NjYxNzYzZGMwOWQ3ZDkxMDc2Nzg0MDAxMDFlY2ZmMmI1YjFlNTMxNjc0YWJmYTgxZTA0ODc0YjMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3dheWxhbmQtcHJvdG9jb2xzLnBjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYjc4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYjA4MzY1MzNhM2YyZGM2NTg1YjFkYWUwMDM0MTE1N2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc4MmI3YTFhODYzZDgyZDdjOTI0Nzg0OTdkMTNjNzU4ZjUyZTdkYTRmMTk3YWExNjQ0M2Y3M2RlNzdlNGRlNyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1idWlsZC1GaXgtc3RybmR1cC1kZXRlY3Rpb24tb24tTWluR1cucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1idWlsZC1GaXgtc3RybmR1cC1kZXRlY3Rpb24tb24tTWluR1cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0NTgzOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGU2NzgzYzk5ZjA1MWM2ZDgyNTJkYjVmMzg4ZDgwNWNlZjBlMTYzNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIwIEZlYiAyMDIwIDE1OjIwOjQ1IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBGaXggc3RybmR1cCBkZXRlY3Rpb24gb24gTWluR1cKKworR0NDIGFuZCBtZXNvbiBjb25zcGlyZSB0b2dldGhlciB0byBpbmNvcnJlY3RseSBkZXRlY3QgdGhhdCBzdHJuZHVwKCkKK2V4aXN0cyBvbiBNaW5HVyBhcyBfX2J1aWx0aW5fc3RybmR1cCwgd2hlbiBubyBzdWNoIGZ1bmN0aW9uIGV4aXN0cy4gQXMgYQord29yayBhcm91bmQsIG1lc29uIHdpbGwgc2tpcCBsb29raW5nIGZvciBfX2J1aWx0aW4gZnVuY3Rpb25zIGlmIGFuCisnI2luY2x1ZGUnIGlzIGluIHRoZSBwcmVmaXgsIHNvIGFkZCAnI2luY2x1ZGUgPHN0cmluZy5oPicgd2hlbiBsb29raW5nCitmb3Igc3RybmR1cCgpLgorCitTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy8zNjcyCisKK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvd2F5bGFuZC93YXlsYW5kL21lcmdlX3JlcXVlc3RzLzYzXQorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAyNmIwODRmLi5jMDVkMDE5IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMzYsMTEgKzM2LDExIEBAIGhhdmVfZnVuY3MgPSBbCisgCSdwb3NpeF9mYWxsb2NhdGUnLAorIAkncHJjdGwnLAorIAknbWVtZmRfY3JlYXRlJywKKy0JJ3N0cm5kdXAnLAorIF0KKyBmb3JlYWNoIGY6IGhhdmVfZnVuY3MKKyAJY29uZmlnX2guc2V0KCdIQVZFXycgKyBmLnVuZGVyc2NvcmlmeSgpLnRvX3VwcGVyKCksIGNjLmhhc19mdW5jdGlvbihmKSkKKyBlbmRmb3JlYWNoCisrY29uZmlnX2guc2V0KCdIQVZFX1NUUk5EVVAnLCBjYy5oYXNfZnVuY3Rpb24oJ3N0cm5kdXAnLCBwcmVmaXg6JyNpbmNsdWRlIDxzdHJpbmcuaD4nKSkKKyAKKyBpZiBnZXRfb3B0aW9uKCdsaWJyYXJpZXMnKQorIAlmZmlfZGVwID0gZGVwZW5kZW5jeSgnbGliZmZpJykKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1tZXNvbi10ZXN0cy1hZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMtb24tcHJvdG9jb2wtaGVhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZGUwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1tZXNvbi10ZXN0cy1hZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMtb24tcHJvdG9jb2wtaGVhLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIGIyYzc0ZjZhM2RiZTBhZWUyNDEzODAwODM3MzE0MTM2OTQ3YTQ5ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW4gQmVpY2ggPGpiZWljaEBGcmVlQlNELm9yZz4KK0RhdGU6IFNhdCwgMTUgRmViIDIwMjAgMDI6MDM6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb24vdGVzdHM6IGFkZCBtaXNzaW5nIGRlcGVuZGVuY2llcyBvbiBwcm90b2NvbCBoZWFkZXJzCisKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9jb25uZWN0aW9uLXRlc3QuYzo0MzoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy90ZXN0LWNvbXBvc2l0b3IuaDozMDoKKy4uL3NyYy93YXlsYW5kLWNsaWVudC5oOjQwOjEwOiBmYXRhbCBlcnJvcjogJ3dheWxhbmQtY2xpZW50LXByb3RvY29sLmgnIGZpbGUgbm90IGZvdW5kCisgI2luY2x1ZGUgIndheWxhbmQtY2xpZW50LXByb3RvY29sLmgiCisgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vdGVzdHMvZGlzcGxheS10ZXN0LmM6NDU6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vc3JjL3dheWxhbmQtc2VydmVyLmg6MTA0Ogorc3JjL3dheWxhbmQtc2VydmVyLXByb3RvY29sLmg6NDQ1NDoyOiBlcnJvcjogdW50ZXJtaW5hdGVkIC8qIGNvbW1lbnQKKyAgICAgICAgLyoqCisgICAgICAgIF4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9jcHAtY29tcGlsZS10ZXN0LmNwcDoyOgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy93YXlsYW5kLXNlcnZlci1wcm90b2NvbC5oOjg6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vc3JjL3dheWxhbmQtc2VydmVyLmg6MTA0Ogorc3JjL3dheWxhbmQtc2VydmVyLXByb3RvY29sLmg6MzoyOiBlcnJvcjogdW50ZXJtaW5hdGVkIGNvbmRpdGlvbmFsIGRpcmVjdGl2ZQorICNpZm5kZWYgV0FZTEFORF9TRVJWRVJfUFJPVE9DT0xfSAorICBeCisuLi90ZXN0cy9oZWFkZXJzLXByb3RvY29sLXRlc3QuYzozMzoyOiBlcnJvcjogaW5jbHVkaW5nIHdheWxhbmQtc2VydmVyLXByb3RvY29sLmggZGlkIG5vdCBpbmNsdWRlIHdheWxhbmQtc2VydmVyLmghCisgI2Vycm9yIGluY2x1ZGluZyB3YXlsYW5kLXNlcnZlci1wcm90b2NvbC5oIGRpZCBub3QgaW5jbHVkZSB3YXlsYW5kLXNlcnZlci5oIQorICBeCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vdGVzdHMvaGVhZGVycy1wcm90b2NvbC10ZXN0LmM6MjY6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3JjL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6ODoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1jbGllbnQuaDo0MDoKK3NyYy93YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oOjEzNTg6MjogZXJyb3I6IHVudGVybWluYXRlZCBjb25kaXRpb25hbCBkaXJlY3RpdmUKKyAjaWZuZGVmIFdMX1NITV9GT1JNQVRfRU5VTQorICBeCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vdGVzdHMvcHJvdG9jb2wtbG9nZ2VyLXRlc3QuYzozNDoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1jbGllbnQuaDo0MDoKK3NyYy93YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oOjI2MTM6MTogZXJyb3I6IHVudGVybWluYXRlZCAvKiBjb21tZW50CisvKioKK14KKy4uL3Rlc3RzL3Jlc291cmNlcy10ZXN0LmM6NDk6MzY6IGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICd3bF9zZWF0X2ludGVyZmFjZScKKyAgICAgICAgcmVzID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX3NlYXRfaW50ZXJmYWNlLCA0LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdHMvbWVzb24uYnVpbGQgfCAyNiArKysrKysrKysrKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAoraW5kZXggYzI4YTJhMy4uZjFhZjdiNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKysgYi90ZXN0cy9tZXNvbi5idWlsZAorQEAgLTY5LDcgKzY5LDcgQEAgdGVzdCgKKyAJZXhlY3V0YWJsZSgKKyAJCSdjcHAtY29tcGlsZS10ZXN0JywKKyAJCSdjcHAtY29tcGlsZS10ZXN0LmNwcCcsCistCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAkJaW5jbHVkZV9kaXJlY3Rvcmllczogc3JjX2luYworIAkpCisgKQorQEAgLTkxLDE3ICs5MSwyNSBAQCB0ZXN0cyA9IHsKKyAJJ2FycmF5LXRlc3QnOiBbXSwKKyAJJ2NsaWVudC10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisgCSdkaXNwbGF5LXRlc3QnOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJCXRlc3RzX3NlcnZlcl9wcm90b2NvbF9oLAorIAkJdGVzdHNfY2xpZW50X3Byb3RvY29sX2MsCisgCQl0ZXN0c19wcm90b2NvbF9jLAorIAldLAorLQknY29ubmVjdGlvbi10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisrCSdjb25uZWN0aW9uLXRlc3QnOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKysJXSwKKyAJJ2V2ZW50LWxvb3AtdGVzdCc6IFsgd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCBdLAorIAknZml4ZWQtdGVzdCc6IFtdLAorIAknaW50ZXJmYWNlLXRlc3QnOiBbIHdheWxhbmRfY2xpZW50X3Byb3RvY29sX2ggXSwKKyAJJ2xpc3QtdGVzdCc6IFtdLAorIAknbWFwLXRlc3QnOiBbXSwKKy0JJ3Nhbml0eS10ZXN0JyA6IFsgd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCBdLAorKwknc2FuaXR5LXRlc3QnIDogWworKwkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisrCV0sCisgCSdzb2NrZXQtdGVzdCc6IFsKKyAJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisgCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorQEAgLTExNiw3ICsxMjQsNyBAQCB0ZXN0cyA9IHsKKyAJCWZpbGVzKCcuLi9zcmMvd2F5bGFuZC1zZXJ2ZXIuYycpLAorIAkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJXSwKKy0JJ3Jlc291cmNlcy10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2ggXSwKKysJJ3Jlc291cmNlcy10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisgCSdtZXNzYWdlLXRlc3QnOiBbCisgCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorIAkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKK0BAIC0xMjYsMTQgKzEzNCwxNiBAQCB0ZXN0cyA9IHsKKyAJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCV0sCisgCSdwcm90b2NvbC1sb2dnZXItdGVzdCc6IFsKKy0JCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2NvcmVfaCwKKy0JCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2NvcmVfaCwKKysJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAldLAorIAknaGVhZGVycy10ZXN0JzogWworKwkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCQknaGVhZGVycy1wcm90b2NvbC10ZXN0LmMnLAorLQkJJ2hlYWRlcnMtcHJvdG9jb2wtY29yZS10ZXN0LmMnLAorLQkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfY29yZV9oLAorIAkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfY29yZV9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfY29yZV9oLAorKwkJJ2hlYWRlcnMtcHJvdG9jb2wtY29yZS10ZXN0LmMnLAorIAldLAorIAknb3Mtd3JhcHBlcnMtdGVzdCc6IFtdLAorIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ0MzU4Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1zY2FubmVyLUFkZC1jb25maWd1cmUtY2hlY2stZm9yLXN0cm5kdXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDNjOGI0NDY3YTFjYTIyOWU3MmZiNTIyMzc4N2VkNDAwYTE5YzY1YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI1IE9jdCAyMDE5IDIxOjAzOjIzIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNjYW5uZXI6IEFkZCBjb25maWd1cmUgY2hlY2sgZm9yIHN0cm5kdXAKLQotU29tZSBwbGF0Zm9ybXMgbWF5IG5vdCBoYXZlIHN0cm5kdXAoKSAoZS5nLiBNaW5HVyksIHNvIHByb3ZpZGUgYQotZXF1aXZhbGVudCBpbXBsZW1lbnRhdGlvbiBpZiBpdCdzIG5vdCBmb3VuZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbNGExZjM0OGMyMDE1N2RiN2JkN2M3NTlmZGViMjNmYmU4NzI5YzU3MV0KLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgfCAgMiArLQotIHNyYy9zY2FubmVyLmMgfCAxMSArKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4ZDU2ZjJiLi4xYzk5ZTIxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02Myw3ICs2Myw3IEBAIGZpCi0gQUNfU1VCU1QoR0NDX0NGTEFHUykKLSAKLSBBQ19DSEVDS19IRUFERVJTKFtzeXMvcHJjdGwuaF0pCi0tQUNfQ0hFQ0tfRlVOQ1MoW2FjY2VwdDQgbWtvc3RlbXAgcG9zaXhfZmFsbG9jYXRlIHByY3RsXSkKLStBQ19DSEVDS19GVU5DUyhbYWNjZXB0NCBta29zdGVtcCBwb3NpeF9mYWxsb2NhdGUgcHJjdGwgc3RybmR1cF0pCi0gCi0gQUNfQVJHX0VOQUJMRShbbGlicmFyaWVzXSwKLSAJICAgICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlicmFyaWVzXSwKLWRpZmYgLS1naXQgYS9zcmMvc2Nhbm5lci5jIGIvc3JjL3NjYW5uZXIuYwotaW5kZXggYTk0YmU1ZC4uMjcwMDRiYyAxMDA2NDQKLS0tLSBhL3NyYy9zY2FubmVyLmMKLSsrKyBiL3NyYy9zY2FubmVyLmMKLUBAIC05MTYsNiArOTE2LDE3IEBAIHZlcmlmeV9hcmd1bWVudHMoc3RydWN0IHBhcnNlX2NvbnRleHQgKmN0eCwKLSAKLSB9Ci0gCi0rI2lmbmRlZiBIQVZFX1NUUk5EVVAKLStjaGFyICoKLStzdHJuZHVwKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzaXplKQotK3sKLSsJY2hhciAqciA9IG1hbGxvYyhzaXplICsgMSk7Ci0rCXN0cm5jcHkociwgcywgc2l6ZSk7Ci0rCXJbc2l6ZV0gPSAnXDAnOwotKwlyZXR1cm4gcjsKLSt9Ci0rI2VuZGlmCi0rCi0gc3RhdGljIHZvaWQKLSBlbmRfZWxlbWVudCh2b2lkICpkYXRhLCBjb25zdCBYTUxfQ2hhciAqbmFtZSkKLSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItRG8tbm90LWhhcmRjb2RlLXRoZS1wYXRoLXRvLXdheWxhbmQtc2Nhbm5lci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTk5NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItRG8tbm90LWhhcmRjb2RlLXRoZS1wYXRoLXRvLXdheWxhbmQtc2Nhbm5lci5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGNiYjI4NjM1YTEwNzlkNjhlNjJkYmFhMWUyMTc5MWEyMGRiYmJhZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTcgRmViIDIwMjAgMjE6NDY6MTggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRjb2RlIHRoZSBwYXRoIHRvIHdheWxhbmQtc2Nhbm5lcgorCitUaGlzIHJlc3VsdHMgaW4gaG9zdCBjb250YW1pbmF0aW9uIGR1cmluZyBidWlsZHMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL21lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21lc29uLmJ1aWxkIGIvc3JjL21lc29uLmJ1aWxkCitpbmRleCAyOTRhZWUwLi43ZTQxMGZhIDEwMDY0NAorLS0tIGEvc3JjL21lc29uLmJ1aWxkCisrKysgYi9zcmMvbWVzb24uYnVpbGQKK0BAIC00OSw3ICs0OSw3IEBAIHBrZ2NvbmZpZy5nZW5lcmF0ZSgKKyAJCSdkYXRhcm9vdGRpcj0nICsgam9pbl9wYXRocygnJHtwcmVmaXh9JywgZ2V0X29wdGlvbignZGF0YWRpcicpKSwKKyAJCSdwa2dkYXRhZGlyPScgKyBqb2luX3BhdGhzKCcke2RhdGFyb290ZGlyfScsIG1lc29uLnByb2plY3RfbmFtZSgpKSwKKyAJCSdiaW5kaXI9JyArIGpvaW5fcGF0aHMoJyR7cHJlZml4fScsIGdldF9vcHRpb24oJ2JpbmRpcicpKSwKKy0JCSd3YXlsYW5kX3NjYW5uZXI9JHtiaW5kaXJ9L3dheWxhbmQtc2Nhbm5lcicKKysJCSd3YXlsYW5kX3NjYW5uZXI9d2F5bGFuZC1zY2FubmVyJworIAldLAorIAlmaWxlYmFzZTogJ3dheWxhbmQtc2Nhbm5lcicKKyApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Nb3ZlLXdsX3ByaXZfc2lnbmFsLXRvLXdheWxhbmQtc2VydmVyLXByaXZhdGUuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDViODc1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLUZyb20gZTc0NmYzYmY3YzhiYjJmNWRjZjllOTNlZGZmYzIzYjU2ZWZmMTJkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNSBOb3YgMjAxOSAwOTowOTo1MCAtMDYwMAotU3ViamVjdDogW1BBVENIXSBNb3ZlIHdsX3ByaXZfc2lnbmFsIHRvIHdheWxhbmQtc2VydmVyLXByaXZhdGUuaAotCi1JbmNsdWRpbmcgd2F5bGFuZC1zZXJ2ZXItY29yZS5oIGluIHdheWxhbmQtcHJpdmF0ZS5oIGlzIHByb2JsZW1hdGljCi1iZWNhdXNlIHdheWxhbmQtcHJpdmF0ZS5oIGlzIGluY2x1ZGVkIGJ5IHdheWxhbmQtc2Nhbm5lciB3aGljaCBzaG91bGQgYmUKLWFibGUgdG8gYnVpbGQgYWdhaW5zdCBub24tUE9TSVggcGxhdGZvcm1zIChlLmcuIE1pbkdXKS4gVGhlIG9ubHkgcmVhc29uCi10aGF0IHdheWxhbmQtc2VydmVyLWNvcmUuaCB3YXMgaW5jbHVkZWQgaW4gd2F5bGFuZC1wcml2YXRlLmggd2FzIGZvciB0aGUKLXdsX3ByaXZhdGVfc2lnbmFsIGRlZmluaXRpb25zLCBzbyBtb3ZlIHRob3NlIHRvIGEKLXdheWxhbmQtc2VydmVyLXByaXZhdGUuaCBmaWxlIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGJ5IGJvdGgKLXdheWxhbmQtc2VydmVyLmMgYW5kIHRoZSB0ZXN0cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbZTdkODhmMzVlYjg5Y2YwY2M3N2NiZGRkODM0Y2FjYzYzNjgzYTljY10KLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgfCAgMyArLQotIHNyYy93YXlsYW5kLXByaXZhdGUuaCAgICAgICAgfCAyMiArLS0tLS0tLS0tLS0tLS0KLSBzcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL3dheWxhbmQtc2VydmVyLmMgICAgICAgICB8ICAxICsKLSB0ZXN0cy9uZXdzaWduYWwtdGVzdC5jICAgICAgIHwgIDIgKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBmNDdkMDU1Li4wMjZkOTgxIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTYsNyArNTYsOCBAQCBsaWJ3YXlsYW5kX3ByaXZhdGVfbGFfU09VUkNFUyA9CQkJXAotIAlzcmMvY29ubmVjdGlvbi5jCQkJXAotIAlzcmMvd2F5bGFuZC1vcy5jCQkJXAotIAlzcmMvd2F5bGFuZC1vcy5oCQkJXAotLQlzcmMvd2F5bGFuZC1wcml2YXRlLmgKLSsJc3JjL3dheWxhbmQtcHJpdmF0ZS5oCQkJXAotKwlzcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi0gCi0gaW5jbHVkZV9IRUFERVJTID0JCQkJXAotIAlzcmMvd2F5bGFuZC11dGlsLmgJCQlcCi1kaWZmIC0tZ2l0IGEvc3JjL3dheWxhbmQtcHJpdmF0ZS5oIGIvc3JjL3dheWxhbmQtcHJpdmF0ZS5oCi1pbmRleCAyOTUxNmVjLi5kYzdkMTJmIDEwMDY0NAotLS0tIGEvc3JjL3dheWxhbmQtcHJpdmF0ZS5oCi0rKysgYi9zcmMvd2F5bGFuZC1wcml2YXRlLmgKLUBAIC0zMSwxMSArMzEsMTEgQEAKLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3RkYm9vbC5oPgotIAotICNkZWZpbmUgV0xfSElERV9ERVBSRUNBVEVEIDEKLSAKLSAjaW5jbHVkZSAid2F5bGFuZC11dGlsLmgiCi0tI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLWNvcmUuaCIKLSAKLSAvKiBJbnZhbGlkIG1lbW9yeSBhZGRyZXNzICovCi0gI2RlZmluZSBXTF9BUlJBWV9QT0lTT05fUFRSICh2b2lkICopIDQKLUBAIC0yMzYsMjYgKzIzNiw2IEBAIHphbGxvYyhzaXplX3QgcykKLSAJcmV0dXJuIGNhbGxvYygxLCBzKTsKLSB9Ci0gCi0tc3RydWN0IHdsX3ByaXZfc2lnbmFsIHsKLS0Jc3RydWN0IHdsX2xpc3QgbGlzdGVuZXJfbGlzdDsKLS0Jc3RydWN0IHdsX2xpc3QgZW1pdF9saXN0OwotLX07Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2luaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwpOwotLQotLXZvaWQKLS13bF9wcml2X3NpZ25hbF9hZGQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHN0cnVjdCB3bF9saXN0ZW5lciAqbGlzdGVuZXIpOwotLQotLXN0cnVjdCB3bF9saXN0ZW5lciAqCi0td2xfcHJpdl9zaWduYWxfZ2V0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB3bF9ub3RpZnlfZnVuY190IG5vdGlmeSk7Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotLQotLXZvaWQKLS13bF9wcml2X3NpZ25hbF9maW5hbF9lbWl0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB2b2lkICpkYXRhKTsKLS0KLSB2b2lkCi0gd2xfY29ubmVjdGlvbl9jbG9zZV9mZHNfaW4oc3RydWN0IHdsX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGludCBtYXgpOwotIAotZGlmZiAtLWdpdCBhL3NyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmggYi9zcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjNmYTQ1OAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3dheWxhbmQtc2VydmVyLXByaXZhdGUuaAotQEAgLTAsMCArMSw1MyBAQAotKy8qCi0rICogQ29weXJpZ2h0IMKpIDIwMDgtMjAxMSBLcmlzdGlhbiBIw7hnc2JlcmcKLSsgKiBDb3B5cmlnaHQgwqkgMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbgotKyAqIENvcHlyaWdodCDCqSAyMDEzIEphc29uIEVrc3RyYW5kCi0rICoKLSsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSsgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCi0rICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKLSsgKiBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSsgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotKyAqIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTCi0rICogQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOCi0rICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KLSsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi0rICogU09GVFdBUkUuCi0rICovCi0rCi0rI2lmbmRlZiBXQVlMQU5EX1NFUlZFUl9QUklWQVRFX0gKLSsjZGVmaW5lIFdBWUxBTkRfU0VSVkVSX1BSSVZBVEVfSAotKwotKyNpbmNsdWRlICJ3YXlsYW5kLXNlcnZlci1jb3JlLmgiCi0rCi0rc3RydWN0IHdsX3ByaXZfc2lnbmFsIHsKLSsJc3RydWN0IHdsX2xpc3QgbGlzdGVuZXJfbGlzdDsKLSsJc3RydWN0IHdsX2xpc3QgZW1pdF9saXN0OwotK307Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2luaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwpOwotKwotK3ZvaWQKLSt3bF9wcml2X3NpZ25hbF9hZGQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHN0cnVjdCB3bF9saXN0ZW5lciAqbGlzdGVuZXIpOwotKwotK3N0cnVjdCB3bF9saXN0ZW5lciAqCi0rd2xfcHJpdl9zaWduYWxfZ2V0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB3bF9ub3RpZnlfZnVuY190IG5vdGlmeSk7Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotKwotK3ZvaWQKLSt3bF9wcml2X3NpZ25hbF9maW5hbF9lbWl0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB2b2lkICpkYXRhKTsKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvd2F5bGFuZC1zZXJ2ZXIuYyBiL3NyYy93YXlsYW5kLXNlcnZlci5jCi1pbmRleCAxOWY2YTc2Li5kNmYwMjA2IDEwMDY0NAotLS0tIGEvc3JjL3dheWxhbmQtc2VydmVyLmMKLSsrKyBiL3NyYy93YXlsYW5kLXNlcnZlci5jCi1AQCAtNDUsNiArNDUsNyBAQAotIAotICNpbmNsdWRlICJ3YXlsYW5kLXV0aWwuaCIKLSAjaW5jbHVkZSAid2F5bGFuZC1wcml2YXRlLmgiCi0rI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLXByaXZhdGUuaCIKLSAjaW5jbHVkZSAid2F5bGFuZC1zZXJ2ZXIuaCIKLSAjaW5jbHVkZSAid2F5bGFuZC1vcy5oIgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL25ld3NpZ25hbC10ZXN0LmMgYi90ZXN0cy9uZXdzaWduYWwtdGVzdC5jCi1pbmRleCA0N2M0MjliLi5mM2E3YmQ5IDEwMDY0NAotLS0tIGEvdGVzdHMvbmV3c2lnbmFsLXRlc3QuYwotKysrIGIvdGVzdHMvbmV3c2lnbmFsLXRlc3QuYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gCi0gI2luY2x1ZGUgInRlc3QtcnVubmVyLmgiCi0tI2luY2x1ZGUgIndheWxhbmQtcHJpdmF0ZS5oIgotKyNpbmNsdWRlICJ3YXlsYW5kLXNlcnZlci1wcml2YXRlLmgiCi0gCi0gc3RhdGljIHZvaWQKLSBzaWduYWxfbm90aWZ5KHN0cnVjdCB3bF9saXN0ZW5lciAqbGlzdGVuZXIsIHZvaWQgKmRhdGEpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItbWVzb24uYnVpbGQtZmluZC10aGUtbmF0aXZlLXdheWxhbmQtc2Nhbm5lci1kaXJlY3RseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTgwMzdhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItbWVzb24uYnVpbGQtZmluZC10aGUtbmF0aXZlLXdheWxhbmQtc2Nhbm5lci1kaXJlY3RseS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDI1ODJkMjY1M2JhODA5MTdkN2JjNDcwODhlMWE1ZjQ5NTMwZmRkYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgRmViIDIwMjAgMTY6Mjk6NTMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGZpbmQgdGhlIG5hdGl2ZSB3YXlsYW5kLXNjYW5uZXIgZGlyZWN0bHkgaW4gUEFUSAorCitPdGhlcndpc2UsIG1lc29uIGF0dGVtcHRzIHRvIHVzZSB0aGUgdGFyZ2V0IHBrZy1jb25maWcgYW5kIGZhaWxzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL21lc29uLmJ1aWxkIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWVzb24uYnVpbGQgYi9zcmMvbWVzb24uYnVpbGQKK2luZGV4IDNlOGM5YmYuLjI5NGFlZTAgMTAwNjQ0CistLS0gYS9zcmMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9tZXNvbi5idWlsZAorQEAgLTU1LDggKzU1LDcgQEAgcGtnY29uZmlnLmdlbmVyYXRlKAorICkKKyAKKyBpZiBtZXNvbi5pc19jcm9zc19idWlsZCgpCistCXNjYW5uZXJfZGVwID0gZGVwZW5kZW5jeSgnd2F5bGFuZC1zY2FubmVyJywgbmF0aXZlOiB0cnVlLCB2ZXJzaW9uOiAnPj0xLjE0LjAnKQorLQl3YXlsYW5kX3NjYW5uZXJfZm9yX2J1aWxkID0gZmluZF9wcm9ncmFtKHNjYW5uZXJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ3dheWxhbmRfc2Nhbm5lcicpKQorKwl3YXlsYW5kX3NjYW5uZXJfZm9yX2J1aWxkID0gZmluZF9wcm9ncmFtKCd3YXlsYW5kLXNjYW5uZXInKQorIGVsc2UKKyAJd2F5bGFuZF9zY2FubmVyX2Zvcl9idWlsZCA9IHdheWxhbmRfc2Nhbm5lcgorIGVuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDM1MjZkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRml4IHdheWxhbmQtY2xpZW50IGFuZCB3YXlsYW5kLXNjYW5uZXIgcGMgZmlsZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEZhYmllbiBMYWhvdWRlcmUgPGZhYmllbi5sYWhvdWRlcmVAY29sbGFib3JhLmNvLnVrPgotCi1JbmRleDogd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtY2xpZW50LnBjLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2F5bGFuZC0xLjE0LjAub3JpZy9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KLSsrKyB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KLUBAIC0xLDcgKzEsNyBAQAotIHByZWZpeD1AcHJlZml4QAotIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLSBkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACi0tcGtnZGF0YWRpcj1AZGF0YWRpckAvQFBBQ0tBR0VACi0rcGtnZGF0YWRpcj0ke3BjX3N5c3Jvb3RkaXJ9QGRhdGFkaXJAL0BQQUNLQUdFQAotIGxpYmRpcj1AbGliZGlyQAotIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACi0gCi1JbmRleDogd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdheWxhbmQtMS4xNC4wLm9yaWcvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgotKysrIHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLXNjYW5uZXIucGMuaW4KLUBAIC0yLDcgKzIsNyBAQCBwcmVmaXg9QHByZWZpeEAKLSBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0gZGF0YXJvb3RkaXI9QGRhdGFyb290ZGlyQAotIHBrZ2RhdGFkaXI9QGRhdGFkaXJAL0BQQUNLQUdFQAotLXdheWxhbmRfc2Nhbm5lcj1AYmluZGlyQC93YXlsYW5kLXNjYW5uZXIKLSt3YXlsYW5kX3NjYW5uZXI9d2F5bGFuZC1zY2FubmVyCi0gCi0gTmFtZTogV2F5bGFuZCBTY2FubmVyCi0gRGVzY3JpcHRpb246IFdheWxhbmQgc2Nhbm5lcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U4ZDlkZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9ydW4tcHRlc3QKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisKK2V4cG9ydCBXQVlMQU5EX1NDQU5ORVI9d2F5bGFuZC1zY2FubmVyCitleHBvcnQgVEVTVF9EQVRBX0RJUj10ZXN0cy9kYXRhCitleHBvcnQgVEVTVF9PVVRQVVRfRElSPXRlc3RzL291dHB1dAorZXhwb3J0IFNFRD1zZWQKK2V4cG9ydCBXQVlMQU5EX0VHTF9MSUI9L3Vzci9saWIvbGlid2F5bGFuZC1lZ2wuc28uMQorZXhwb3J0IE5NPW5tCisKK2ZvciBpIGluIGBscyB0ZXN0cy8qLXRlc3QgdGVzdHMvd2F5bGFuZC1lZ2wtc3ltYm9scy1jaGVjayB0ZXN0cy9zY2FubmVyLXRlc3Quc2hgOyBkbworICAgICRpCisgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgICAgICAgIGVjaG8gIlBBU1M6ICRpIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiRkFJTDogJGkiCisgICAgZmkKK2RvbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE3LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjVhOGY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE3LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKLWFzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKLWEgc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAotaW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCi1iZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAotZGlzcGxheSBzZXJ2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCi0KLURFUEVORFMgPSAiZXhwYXQgbGlieG1sMiBsaWJmZmkgd2F5bGFuZC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLQkgICBmaWxlOi8vZml4cGF0aGlucGNmaWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImQ5MWY5NzBhZWExMWZkNTQ5ZWFlMDIzZDA2ZjkxYWYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyYWExMWI4YWM2ZTIyZjQ3NzczMDJjOTI1MWU4ZmVjNzY1NWRjMjJmOWQ5NGVlNjc2YzZiMjc2Zjk1ZjkxYTQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS13aXRoLWhvc3Qtc2Nhbm5lciIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLWxpYnJhcmllcyIKLQotIyBXYXlsYW5kIGluc3RhbGxzIGEgTTQgbWFjcm8gZm9yIG90aGVyIHByb2plY3RzIHRvIHVzZSwgd2hpY2ggdXNlcyB0aGUgdGFyZ2V0Ci0jIHBrZy1jb25maWcgdG8gZmluZCBmaWxlcy4gIFJlcGxhY2UgcGtnLWNvbmZpZyB3aXRoIHBrZy1jb25maWctbmF0aXZlLgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICBzZWQgLWUgJ3MsUEtHX0NIRUNLX01PRFVMRVMoLiopLCxnJyBcCi0gICAgICAtZSAncywkUEtHX0NPTkZJRyxwa2ctY29uZmlnLW5hdGl2ZSxnJyBcCi0gICAgICAtaSAke0R9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLX0KLQotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0Jcm0gJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00ICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS93YXlsYW5kIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGJlM2FhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTguMC5iYgpAQCAtMCwwICsxLDYyIEBACitTVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKK2FzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKK2Egc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAoraW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCitiZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAorZGlzcGxheSBzZXJ2ZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCisKK0RFUEVORFMgPSAiZXhwYXQgbGliZmZpIHdheWxhbmQtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LWhhcmRjb2RlLXRoZS1wYXRoLXRvLXdheWxhbmQtc2Nhbm5lci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjMzMTc2OTdiNmUzZmYyZTFhYzhjNWJhM2VkNTdiNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY3NWE3OWYwOTEwMjA4MTdhOThmZDA0ODRlNzIwOGM4NzYyMjQyMjY2OTY3ZjU1YTY3Nzc2OTM2YzJlMjk0ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgcHRlc3QKKworUEFDS0FHRUNPTkZJRyA/Pz0gImR0ZC12YWxpZGF0aW9uIgorUEFDS0FHRUNPTkZJR1tkdGQtdmFsaWRhdGlvbl0gPSAiLURkdGRfdmFsaWRhdGlvbj10cnVlLC1EZHRkX3ZhbGlkYXRpb249ZmFsc2UsbGlieG1sMiwsIgorCitFWFRSQV9PRU1FU09OID0gIi1EZG9jdW1lbnRhdGlvbj1mYWxzZSIKK0VYVFJBX09FTUVTT05fY2xhc3MtbmF0aXZlID0gIi1EZG9jdW1lbnRhdGlvbj1mYWxzZSAtRGxpYnJhcmllcz1mYWxzZSIKKworIyBXYXlsYW5kIGluc3RhbGxzIGEgTTQgbWFjcm8gZm9yIG90aGVyIHByb2plY3RzIHRvIHVzZSwgd2hpY2ggdXNlcyB0aGUgdGFyZ2V0CisjIHBrZy1jb25maWcgdG8gZmluZCBmaWxlcy4gIFJlcGxhY2UgcGtnLWNvbmZpZyB3aXRoIHBrZy1jb25maWctbmF0aXZlLgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICBzZWQgLWUgJ3MsUEtHX0NIRUNLX01PRFVMRVMoLiopLCxnJyBcCisgICAgICAtZSAncywkUEtHX0NPTkZJRyxwa2ctY29uZmlnLW5hdGl2ZSxnJyBcCisgICAgICAtaSAke0R9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhCisgICAgY3AgLXJmICR7Qn0vdGVzdHMvKi10ZXN0ICR7Qn0vdGVzdHMvKi1jaGVja2VyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7Qn0vdGVzdHMvKi1jaGVja2VyICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXJmICR7U30vdGVzdHMvc2Nhbm5lci10ZXN0LnNoICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvZGF0YS8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEvCisgICAgY3AgLXJmICR7U30vZWdsL3dheWxhbmQtZWdsLXN5bWJvbHMtY2hlY2sgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CisKK3N5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00CisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmludXRpbHMgc2VkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQuYmIKaW5kZXggZTNlNzM5ZS4uNDBhYTc2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0LmJiCkBAIC01LDYgKzUsNyBAQAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAogU1JDX1VSSSA9ICJmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZW52IFwKICAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5pbmkgXAogICAgICAgICAgICBmaWxlOi8vd2VzdG9uQC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovLzcxLXdlc3Rvbi1kcm0ucnVsZXMgXApAQCAtMTUsNiArMTYsNyBAQAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1EbTc1NSAke1dPUktESVJ9L2luaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC93ZXN0b24KIAlpbnN0YWxsIC1EIC1wIC1tMDY0NCAke1dPUktESVJ9L3dlc3Rvbi5pbmkgJHtEfSR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pCisJaW5zdGFsbCAtRG02NDQgJHtXT1JLRElSfS93ZXN0b24uZW52ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uCiAKIAkjIEluc3RhbGwgV2VzdG9uIHN5c3RlbWQgc2VydmljZSBhbmQgYWNjb21wYW55aW5nIHVkZXYgcnVsZQogCWluc3RhbGwgLUQgLXAgLW0wNjQ0ICR7V09SS0RJUn0vd2VzdG9uQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dlc3RvbkAuc2VydmljZQpAQCAtMzAsNiArMzIsMTQgQEAKIAlzZWQgLWkgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgJHtEfSR7YmluZGlyfS93ZXN0b24tc3RhcnQKIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsX3FlbXV4ODYoKSB7CisgICAgICAgIGVjaG8gIldFU1RPTl9ESVNBQkxFX0FUT01JQz1ZIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3dlc3RvbgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2xfcWVtdXg4Ni02NCgpIHsKKyAgICAgICAgZWNobyAiV0VTVE9OX0RJU0FCTEVfQVRPTUlDPVkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uCit9CisKIGluaGVyaXQgdXBkYXRlLXJjLmQgZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAogCiAjIHJkZXBlbmRzIG9uIHdlc3RvbiB3aGljaCBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCkBAIC00MCw5ICs1MCw5IEBACiBJTklUU0NSSVBUX05BTUUgPSAid2VzdG9uIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOSA1IDIgLiBzdG9wIDIwIDAgMSA2IC4iCiAKLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L3hkZy93ZXN0b24vd2VzdG9uLmluaSAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dlc3RvbkAuc2VydmljZSIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L3hkZy93ZXN0b24vd2VzdG9uLmluaSAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dlc3RvbkAuc2VydmljZSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uIgogCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pIgorQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L3hkZy93ZXN0b24vd2VzdG9uLmluaSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uIgogCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAid2VzdG9uQCVpLnNlcnZpY2UiCiBTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXVhbGwvd2VzdG9uLmluaSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdWFsbC93ZXN0b24uaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZWJkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXVhbGwvd2VzdG9uLmluaQpAQCAtMCwwICsxLDIgQEAKK1tjb3JlXQorYmFja2VuZD1mYmRldi1iYWNrZW5kLnNvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYtNjQvd2VzdG9uLmluaSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pCmluZGV4IDE3ZWJkN2YuLmU2OWRlMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pCkBAIC0xLDIgKzAsMCBAQAotW2NvcmVdCi1iYWNrZW5kPWZiZGV2LWJhY2tlbmQuc28KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkKaW5kZXggMTdlYmQ3Zi4uZTY5ZGUyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkKQEAgLTEsMiArMCwwIEBACi1bY29yZV0KLWJhY2tlbmQ9ZmJkZXYtYmFja2VuZC5zbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uZW52IGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uZW52Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5lbnYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmluaSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmluaQppbmRleCAxZWVjZjQ4Li4xZTZkZmY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5pbmkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uaW5pCkBAIC0xLDkgKzEsMTAgQEAKICMgY29uZmlndXJhdGlvbiBmaWxlIGZvciBXZXN0b24KIAotI1tjb3JlXQorW2NvcmVdCiAjbW9kdWxlcz14d2F5bGFuZC5zbyxjbXMtY29sb3JkLnNvCiAjc2hlbGw9ZGVza3RvcC1zaGVsbC5zbwogI2dibS1mb3JtYXQ9eHJnYjIxMDEwMTAKK3JlcXVpcmUtaW5wdXQ9ZmFsc2UKIAogI1tzaGVsbF0KICNiYWNrZ3JvdW5kLWltYWdlPS91c3Ivc2hhcmUvYmFja2dyb3VuZHMvZ25vbWUvQXF1YS5qcGcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uQC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UKaW5kZXggOWVjZjJhYi4uMzllMTkzMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UKQEAgLTEsMzcgKzEsMTUgQEAKIFtVbml0XQotRGVzY3JpcHRpb249V2VzdG9uIFdheWxhbmQgQ29tcG9zaXRvciAob24gdHR5NykKK0Rlc2NyaXB0aW9uPVdlc3RvbiBXYXlsYW5kIENvbXBvc2l0b3IKIFJlcXVpcmVzTW91bnRzRm9yPS9ydW4KLUNvbmZsaWN0cz1nZXR0eUB0dHk3LnNlcnZpY2UgcGx5bW91dGgtcXVpdC5zZXJ2aWNlCi1BZnRlcj1zeXN0ZW1kLXVzZXItc2Vzc2lvbnMuc2VydmljZSBnZXR0eUB0dHk3LnNlcnZpY2UgcGx5bW91dGgtcXVpdC13YWl0LnNlcnZpY2UKK0NvbmZsaWN0cz1wbHltb3V0aC1xdWl0LnNlcnZpY2UKK0FmdGVyPXN5c3RlbWQtdXNlci1zZXNzaW9ucy5zZXJ2aWNlIHBseW1vdXRoLXF1aXQtd2FpdC5zZXJ2aWNlCiAKIFtTZXJ2aWNlXQogVXNlcj0laQotUGVybWlzc2lvbnNTdGFydE9ubHk9dHJ1ZQotCi0jIExvZyB1cyBpbiB2aWEgUEFNIHNvIHdlIGdldCBvdXIgWERHICYgY28uIGVudmlyb25tZW50IGFuZAotIyBhcmUgdHJlYXRlZCBhcyBsb2dnZWQgaW4gc28gd2UgY2FuIHVzZSB0aGUgdHR5OgogUEFNTmFtZT1sb2dpbgotCi0jIEdyYWIgdHR5NwotVXRtcElkZW50aWZpZXI9dHR5NwotVFRZUGF0aD0vZGV2L3R0eTcKLVRUWVJlc2V0PXllcwotVFRZVkhhbmd1cD15ZXMKLVRUWVZURGlzYWxsb2NhdGU9eWVzCi0KLSMgc3RkZXJyIHRvIGpvdXJuYWwgc28gb3VyIGxvZ2dpbmcgZG9lc24ndCBnZXQgdGhyb3duIGludG8gL2Rldi9udWxsCi1TdGFuZGFyZE91dHB1dD10dHkKLVN0YW5kYXJkSW5wdXQ9dHR5Ci1TdGFuZGFyZEVycm9yPWpvdXJuYWwKLQogRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQvd2VzdG9uCi0KLSMgV2VzdG9uIGRvZXMgbm90IHN1Y2Nlc3NmdWxseSBjaGFuZ2UgVlQsIG5vciBkb2VzIHN5c3RlbWQgcGxhY2UgdXMgb24KLSMgdGhlIFZUIGl0IGp1c3QgYWN0aXZhdGVkIGZvciB1cy4gU3dpdGNoIG1hbnVhbGx5OgotRXhlY1N0YXJ0UHJlPS91c3IvYmluL2NodnQgNwotRXhlY1N0YXJ0PS91c3IvYmluL3dlc3RvbiAtLWxvZz0ke1hER19SVU5USU1FX0RJUn0vd2VzdG9uLmxvZyAkT1BUQVJHUwotCitTdGFuZGFyZEVycm9yPWpvdXJuYWwKK1Blcm1pc3Npb25zU3RhcnRPbmx5PXRydWUKIElnbm9yZVNJR1BJUEU9bm8KIAotI1tJbnN0YWxsXQotI0FsaWFzPW11bHRpLXVzZXIudGFyZ2V0LndhbnRzL3dlc3Rvbi5zZXJ2aWNlCitFeGVjU3RhcnQ9L3Vzci9iaW4vd2VzdG9uLXN0YXJ0IC12IC1lIC0tICRPUFRBUkdTCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKaW5kZXggZTUwODQ1Yi4uNjJiODY0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjgyYjdkNzlhN2I4MWVjOGUzODc2MDM4MTEwNGIyNGFkNTQ5ZThjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNWYyZDcxOTk4ZWI3NzA2OGNiYWVlMmQ0NjhjYmIyOTZhNDJkNTczOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KIERhdGU6IFdlZCwgMjIgRmViIDIwMTcgMTU6NTM6MzAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gd2VzdG9uLWxhdW5jaDogUHJvdmlkZSBhIGRlZmF1bHQgdmVyc2lvbiB0aGF0IGRvZXNuJ3QgcmVxdWlyZQpAQCAtMTYsNiArMTYsNyBAQAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IERlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+CiBTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAdG9yYWRleC5jb20+CisKIC0tLQogIGxpYndlc3Rvbi9tZXNvbi5idWlsZCAgICAgfCAxNiArKysrKysrKysrKystLS0tCiAgbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwpAQCAtMjMsMTAgKzI0LDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL21lc29uLmJ1aWxkIGIvbGlid2VzdG9uL21lc29uLmJ1aWxkCi1pbmRleCBkOGQzZmMwLi4zMjY2ODNmIDEwMDY0NAoraW5kZXggMDhkMjNlYy4uY2I5ZmQzZiAxMDA2NDQKIC0tLSBhL2xpYndlc3Rvbi9tZXNvbi5idWlsZAogKysrIGIvbGlid2VzdG9uL21lc29uLmJ1aWxkCi1AQCAtMTk5LDE2ICsxOTksMjQgQEAgZGVwX3ZlcnRleF9jbGlwcGluZyA9IGRlY2xhcmVfZGVwZW5kZW5jeSgKK0BAIC0yMTYsMTYgKzIxNiwyNCBAQCBkZXBfdmVydGV4X2NsaXBwaW5nID0gZGVjbGFyZV9kZXBlbmRlbmN5KAogICkKICAKICBpZiBnZXRfb3B0aW9uKCd3ZXN0b24tbGF1bmNoJykKQEAgLTUyLDExICs1MywxMSBAQAogIAkJJ3dlc3Rvbi1sYXVuY2guYycsCiAtCQlkZXBlbmRlbmNpZXM6IFtkZXBfcGFtLCBzeXN0ZW1kX2RlcCwgZGVwX2xpYmRybV0sCiArCQlkZXBlbmRlbmNpZXM6IGRlcHNfd2VzdG9uX2xhdW5jaCwKLSAJCWluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uJyksCisgCQlpbmNsdWRlX2RpcmVjdG9yaWVzOiBjb21tb25faW5jLAogIAkJaW5zdGFsbDogdHJ1ZQogIAkpCiBkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKLWluZGV4IDQ5NjJiZDYuLmZjNTMxYzUgMTAwNjQ0CitpbmRleCA4YTcxMWI0Li41NGM1NjdhIDEwMDY0NAogLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogQEAgLTUxLDcgKzUxLDkgQEAKQEAgLTExMiw3ICsxMTMsNyBAQAogIAogIAlpZiAoaW9jdGwod2wtPnR0eSwgS0RTS0JNVVRFLCAwKSAmJgogIAkgICAgaW9jdGwod2wtPnR0eSwgS0RTS0JNT0RFLCB3bC0+a2JfbW9kZSkpCi1AQCAtNjYwLDYgKzY2OCw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKK0BAIC02NjYsNiArNjc0LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQogIAlzZXRlbnYoIkhPTUUiLCB3bC0+cHctPnB3X2RpciwgMSk7CiAgCXNldGVudigiU0hFTEwiLCB3bC0+cHctPnB3X3NoZWxsLCAxKTsKICAKQEAgLTEyMCw3ICsxMjEsNyBAQAogIAllbnYgPSBwYW1fZ2V0ZW52bGlzdCh3bC0+cGgpOwogIAlpZiAoZW52KSB7CiAgCQlmb3IgKGkgPSAwOyBlbnZbaV07ICsraSkgewotQEAgLTY2OCw2ICs2NzcsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCitAQCAtNjc0LDYgKzY4Myw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKICAJCX0KICAJCWZyZWUoZW52KTsKICAJfQpAQCAtMTI4LDcgKzEyOSw3IEBACiAgCiAgCS8qCiAgCSAqIFdlIG9wZW4gYSBuZXcgc2Vzc2lvbiwgc28gaXQgbWFrZXMgc2Vuc2UKLUBAIC03MzksOCArNzQ5LDEwIEBAIHN0YXRpYyB2b2lkCitAQCAtNzQ1LDggKzc1NSwxMCBAQCBzdGF0aWMgdm9pZAogIGhlbHAoY29uc3QgY2hhciAqbmFtZSkKICB7CiAgCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIFthcmdzLi4uXSBbLS0gW3dlc3RvbiBhcmdzLi5dXVxuIiwgbmFtZSk7CkBAIC0xMzksNyArMTQwLDcgQEAKICAJZnByaW50ZihzdGRlcnIsICIgIC10LCAtLXR0eSAgICAgICBTdGFydCBzZXNzaW9uIG9uIGFsdGVybmF0aXZlIHR0eSxcbiIKICAJCQkiICAgICAgICAgICAgICAgICAgZS5nLiAtdCAvZGV2L3R0eTQsIHJlcXVpcmVzIC11IG9wdGlvbi5cbiIpOwogIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXYsIC0tdmVyYm9zZSAgIEJlIHZlcmJvc2VcbiIpOwotQEAgLTc1NCw3ICs3NjYsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtNzYwLDcgKzc3Miw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJaW50IGksIGM7CiAgCWNoYXIgKnR0eSA9IE5VTEw7CiAgCXN0cnVjdCBvcHRpb24gb3B0c1tdID0gewpAQCAtMTQ5LDcgKzE1MCw3IEBACiAgCQl7ICJ0dHkiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd0JyB9LAogIAkJeyAidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAndicgfSwKICAJCXsgImhlbHAiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ2gnIH0sCi1AQCAtNzY2LDExICs3ODAsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTc3MiwxMSArNzg2LDE2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgInU6dDp2aCIsIG9wdHMsICZpKSkgIT0gLTEpIHsKICAJCXN3aXRjaCAoYykgewogIAkJY2FzZSAndSc6CkBAIC0xNjYsNyArMTY3LDcgQEAKICAJCQlicmVhazsKICAJCWNhc2UgJ3QnOgogIAkJCXR0eSA9IG9wdGFyZzsKLUBAIC04MjIsOCArODQxLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC04MjgsOCArODQ3LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJaWYgKHNldHVwX3R0eSgmd2wsIHR0eSkgPCAwKQogIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogIApAQCAtMTc4LDcgKzE3OSw3IEBACiAgCWlmIChzZXR1cF9sYXVuY2hlcl9zb2NrZXQoJndsKSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7CiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggZDViZjFkNS4uMjU0ZWIyYiAxMDA2NDQKK2luZGV4IGM4NjJlY2MuLjczZWYyYzMgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKIEBAIC03Myw2ICs3MywxMyBAQCBvcHRpb24oCkBAIC0xOTUsNiArMTk2LDMgQEAKICAJJ3h3YXlsYW5kJywKICAJdHlwZTogJ2Jvb2xlYW4nLAogIAl2YWx1ZTogdHJ1ZSwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fNy4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY1NDhkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi1TVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1ERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI3O21kNT02YzUzYmJiZDk5MjczZjRmN2M0YWZmYTg1NWMzM2MwYSIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCi0gICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYmZkYTQ4M2JjMjUwMWQwODMxYWYzZjMzYzcwNzg1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMDBhNmQyMDdiNmE0NWY5NWY0NDAxYzYwNDc3MmEzMDdjMzc2N2U1ZTJiZWVjZjNkODc5MTEwYzQzOTA5YTY0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyB1c2VyYWRkIGZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAibGlieGtiY29tbW9uIGdkay1waXhidWYgcGl4bWFuIGNhaXJvIGdsaWItMi4wIGpwZWciCi1ERVBFTkRTICs9ICJ3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmlucHV0IHZpcnR1YWwvZWdsIHBhbmdvIHdheWxhbmQtbmF0aXZlIgotCi1XRVNUT05fTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6MV0pfSIKLQotRVhUUkFfT0VNRVNPTiArPSAiLURiYWNrZW5kLWRlZmF1bHQ9YXV0byAtRGJhY2tlbmQtcmRwPWZhbHNlIC1EcGlwZXdpcmU9ZmFsc2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAna21zIGZiZGV2IHdheWxhbmQgZWdsJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgd2F5bGFuZCcsICd4d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbSBzeXN0ZW1kIHgxMScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCAnJywgJ2hlYWRsZXNzJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKLSMKLSMgQ29tcG9zaXRvciBjaG9pY2VzCi0jCi0jIFdlc3RvbiBvbiBLTVMKLVBBQ0tBR0VDT05GSUdba21zXSA9ICItRGJhY2tlbmQtZHJtPXRydWUsLURiYWNrZW5kLWRybT1mYWxzZSxkcm0gdWRldiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvbGliZ2JtIG10ZGV2IgotIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURiYWNrZW5kLXdheWxhbmQ9dHJ1ZSwtRGJhY2tlbmQtd2F5bGFuZD1mYWxzZSx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgotIyBXZXN0b24gb24gWDExCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURiYWNrZW5kLXgxMT10cnVlLC1EYmFja2VuZC14MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgotIyBIZWFkbGVzcyBXZXN0b24KLVBBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi1EYmFja2VuZC1oZWFkbGVzcz10cnVlLC1EYmFja2VuZC1oZWFkbGVzcz1mYWxzZSIKLSMgV2VzdG9uIG9uIGZyYW1lYnVmZmVyCi1QQUNLQUdFQ09ORklHW2ZiZGV2XSA9ICItRGJhY2tlbmQtZmJkZXY9dHJ1ZSwtRGJhY2tlbmQtZmJkZXY9ZmFsc2UsdWRldiBtdGRldiIKLSMgd2VzdG9uLWxhdW5jaAotUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi1Ed2VzdG9uLWxhdW5jaD10cnVlLC1Ed2VzdG9uLWxhdW5jaD1mYWxzZSxkcm0iCi0jIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9dHJ1ZSwtRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9ZmFsc2UsbGlidmEiCi0jIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLURyZW5kZXJlci1nbD10cnVlLC1EcmVuZGVyZXItZ2w9ZmFsc2UsdmlydHVhbC9lZ2wiCi0jIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItRGNvbG9yLW1hbmFnZW1lbnQtbGNtcz10cnVlLC1EY29sb3ItbWFuYWdlbWVudC1sY21zPWZhbHNlLGxjbXMiCi0jIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItRGltYWdlLXdlYnA9dHJ1ZSwtRGltYWdlLXdlYnA9ZmFsc2UsbGlid2VicCIKLSMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZD10cnVlIC1EbGF1bmNoZXItbG9naW5kPXRydWUsLURzeXN0ZW1kPWZhbHNlIC1EbGF1bmNoZXItbG9naW5kPWZhbHNlLHN5c3RlbWQgZGJ1cyIKLSMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQotUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLUR4d2F5bGFuZD10cnVlLC1EeHdheWxhbmQ9ZmFsc2UiCi0jIGNvbG9yZCBDTVMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi1EY29sb3ItbWFuYWdlbWVudC1jb2xvcmQ9dHJ1ZSwtRGNvbG9yLW1hbmFnZW1lbnQtY29sb3JkPWZhbHNlLGNvbG9yZCIKLSMgQ2xpZW50cyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi1Ec2ltcGxlLWNsaWVudHM9YWxsIC1EZGVtby1jbGllbnRzPXRydWUsLURzaW1wbGUtY2xpZW50cz0gLURkZW1vLWNsaWVudHM9ZmFsc2UiCi0jIFZpcnR1YWwgcmVtb3RlIG91dHB1dCB3aXRoIEdTdHJlYW1lciBvbiBEUk0gYmFja2VuZAotUEFDS0FHRUNPTkZJR1tyZW1vdGluZ10gPSAiLURyZW1vdGluZz10cnVlLC1EcmVtb3Rpbmc9ZmFsc2UsZ3N0cmVhbWVyLTEuMCIKLSMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZXN0b24gZG9lc24ndCBuZWVkIHRoZSAubGEgZmlsZXMgdG8gbG9hZCBtb2R1bGVzLCBzbyB3aXBlIHRoZW0KLQlybSAtZiAke0R9LyR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5sYQotCi0JIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQotCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsYXVuY2gnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJY2htb2QgdStzICR7RH0ke2JpbmRpcn0vd2VzdG9uLWxhdW5jaAotCWZpCi19Ci0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGxpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSAke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKLQotRklMRVNfbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5zbyIKLVNVTU1BUllfbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCi0KLUZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgotCi1GSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059L3h3YXlsYW5kLnNvIgotUkRFUEVORFNfJHtQTn0teHdheWxhbmQgKz0gInhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInhrZXlib2FyZC1jb25maWciCi1SUkVDT01NRU5EU18ke1BOfSA9ICJ3ZXN0b24taW5pdCBsaWJlcmF0aW9uLWZvbnRzIgotUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICJ3YXlsYW5kLXByb3RvY29scyIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHdlc3Rvbi1sYXVuY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl84LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzguMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZTllMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl84LjAuMC5iYgpAQCAtMCwwICsxLDExMiBAQAorU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgorREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYndlc3Rvbi9jb21wb3NpdG9yLmM7ZW5kbGluZT0yNzttZDU9NmM1M2JiYmQ5OTI3M2Y0ZjdjNGFmZmE4NTVjMzNjMGEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAorICAgICAgICAgICBmaWxlOi8veHdheWxhbmQud2VzdG9uLXN0YXJ0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNTNlNDgxMGQ4NTJkZjA2MDFkMDFmZDk4NmE1YjIyYjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzUxOGI0OWIyZWFhMWMzMDkxZjI0NjcxYmRjYzEyNGZkNDlmYzhmMWFmNTExNjE5MjdhZmE0MzI5YzAyNzg0OCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgdXNlcmFkZCBmZWF0dXJlc19jaGVjaworIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgorREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKKworV0VTVE9OX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjFdKX0iCisKK0VYVFJBX09FTUVTT04gKz0gIi1EYmFja2VuZC1kZWZhdWx0PWF1dG8gLURiYWNrZW5kLXJkcD1mYWxzZSAtRHBpcGV3aXJlPWZhbHNlIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCBjbGllbnRzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgd2F5bGFuZCcsICd4d2F5bGFuZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbSBzeXN0ZW1kIHgxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCAnJywgJ2hlYWRsZXNzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBsYXVuY2giCisjCisjIENvbXBvc2l0b3IgY2hvaWNlcworIworIyBXZXN0b24gb24gS01TCitQQUNLQUdFQ09ORklHW2ttc10gPSAiLURiYWNrZW5kLWRybT10cnVlLC1EYmFja2VuZC1kcm09ZmFsc2UsZHJtIHVkZXYgdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2xpYmdibSBtdGRldiIKKyMgV2VzdG9uIG9uIFdheWxhbmQgKG5lc3RlZCBXZXN0b24pCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EYmFja2VuZC13YXlsYW5kPXRydWUsLURiYWNrZW5kLXdheWxhbmQ9ZmFsc2UsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiIKKyMgV2VzdG9uIG9uIFgxMQorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EYmFja2VuZC14MTE9dHJ1ZSwtRGJhY2tlbmQteDExPWZhbHNlLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKKyMgSGVhZGxlc3MgV2VzdG9uCitQQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItRGJhY2tlbmQtaGVhZGxlc3M9dHJ1ZSwtRGJhY2tlbmQtaGVhZGxlc3M9ZmFsc2UiCisjIFdlc3RvbiBvbiBmcmFtZWJ1ZmZlcgorUEFDS0FHRUNPTkZJR1tmYmRldl0gPSAiLURiYWNrZW5kLWZiZGV2PXRydWUsLURiYWNrZW5kLWZiZGV2PWZhbHNlLHVkZXYgbXRkZXYiCisjIHdlc3Rvbi1sYXVuY2gKK1BBQ0tBR0VDT05GSUdbbGF1bmNoXSA9ICItRHdlc3Rvbi1sYXVuY2g9dHJ1ZSwtRHdlc3Rvbi1sYXVuY2g9ZmFsc2UsZHJtIgorIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLURiYWNrZW5kLWRybS1zY3JlZW5jYXN0LXZhYXBpPXRydWUsLURiYWNrZW5kLWRybS1zY3JlZW5jYXN0LXZhYXBpPWZhbHNlLGxpYnZhIgorIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1EcmVuZGVyZXItZ2w9dHJ1ZSwtRHJlbmRlcmVyLWdsPWZhbHNlLHZpcnR1YWwvZWdsIgorIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLURjb2xvci1tYW5hZ2VtZW50LWxjbXM9dHJ1ZSwtRGNvbG9yLW1hbmFnZW1lbnQtbGNtcz1mYWxzZSxsY21zIgorIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLURpbWFnZS13ZWJwPXRydWUsLURpbWFnZS13ZWJwPWZhbHNlLGxpYndlYnAiCisjIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWQ9dHJ1ZSAtRGxhdW5jaGVyLWxvZ2luZD10cnVlLC1Ec3lzdGVtZD1mYWxzZSAtRGxhdW5jaGVyLWxvZ2luZD1mYWxzZSxzeXN0ZW1kIGRidXMiCisjIFdlc3RvbiB3aXRoIFh3YXlsYW5kIHN1cHBvcnQgKHJlcXVpcmVzIFgxMSBhbmQgV2F5bGFuZCkKK1BBQ0tBR0VDT05GSUdbeHdheWxhbmRdID0gIi1EeHdheWxhbmQ9dHJ1ZSwtRHh3YXlsYW5kPWZhbHNlIgorIyBjb2xvcmQgQ01TIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItRGNvbG9yLW1hbmFnZW1lbnQtY29sb3JkPXRydWUsLURjb2xvci1tYW5hZ2VtZW50LWNvbG9yZD1mYWxzZSxjb2xvcmQiCisjIENsaWVudHMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItRHNpbXBsZS1jbGllbnRzPWFsbCAtRGRlbW8tY2xpZW50cz10cnVlLC1Ec2ltcGxlLWNsaWVudHM9IC1EZGVtby1jbGllbnRzPWZhbHNlIgorIyBWaXJ0dWFsIHJlbW90ZSBvdXRwdXQgd2l0aCBHU3RyZWFtZXIgb24gRFJNIGJhY2tlbmQKK1BBQ0tBR0VDT05GSUdbcmVtb3RpbmddID0gIi1EcmVtb3Rpbmc9dHJ1ZSwtRHJlbW90aW5nPWZhbHNlLGdzdHJlYW1lci0xLjAiCisjIFdlc3RvbiB3aXRoIFBBTSBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLURwYW09dHJ1ZSwtRHBhbT1mYWxzZSxsaWJwYW0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2VzdG9uIGRvZXNuJ3QgbmVlZCB0aGUgLmxhIGZpbGVzIHRvIGxvYWQgbW9kdWxlcywgc28gd2lwZSB0aGVtCisJcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059LyoubGEKKworCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisKKwkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGF1bmNoJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWNobW9kIHUrcyAke0R9JHtiaW5kaXJ9L3dlc3Rvbi1sYXVuY2gKKwlmaQorfQorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBsaWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gJHtQTn0tZXhhbXBsZXMiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWJleGVjX3dlc3Rvbi5zbyIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS93ZXN0b24gJHtiaW5kaXJ9L3dlc3Rvbi10ZXJtaW5hbCAke2JpbmRpcn0vd2VzdG9uLWluZm8gJHtiaW5kaXJ9L3dlc3Rvbi1sYXVuY2ggJHtiaW5kaXJ9L3djYXAtZGVjb2RlICR7bGliZXhlY2Rpcn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvKiAke2RhdGFkaXJ9IgorCitGSUxFU19saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS8qLnNvIgorU1VNTUFSWV9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiSGVscGVyIGxpYnJhcnkgZm9yIGltcGxlbWVudGluZyAnd2F5bGFuZCB3aW5kb3cgbWFuYWdlcnMnLiIKKworRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCisKK0ZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0veHdheWxhbmQuc28iCitSREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgorCitSREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIndlc3Rvbi1pbml0IGxpYmVyYXRpb24tZm9udHMiCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQvY2FwYWJpbGl0eS5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC9jYXBhYmlsaXR5LmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FiNzQ2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQvY2FwYWJpbGl0eS5jb25mCkBAIC0wLDAgKzEsMiBAQAorY2FwX3N5c19hZG1pbglAVVNFUkAKK25vbmUJKgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0gYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbQppbmRleCA2YzU0ODU1Li4xMTZiYjI3IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbQpAQCAtMzgsNiArMzgsMTQgQEAKICAgICAgICAgICAgaWYgWyAtZSAvZGV2L2hpZHJhdzAgXTsgdGhlbgogICAgICAgICAgICAgICAgY2htb2QgbytydyAvZGV2L2hpZHJhdyoKICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgWG9yZyBoYXMgdGhlIGNhcF9zeXNfYWRtaW4gY2FwYWJpbGl0eSB3aGljaCBpcworICAgICAgICAgICAjIG5lZWRlZCBmb3Igc2V0dGluZyB0aGUgZHJtIG1hc3RlcgorICAgICAgICAgICBpZiAhIGdyZXAgLXEgIl5hdXRoLipwYW1fY2FwXC5zbyIgL2V0Yy9wYW0uZC9zdTsgdGhlbgorICAgICAgICAgICAgICAgZWNobyAiYXV0aAlvcHRpb25hbAlwYW1fY2FwLnNvIiA+Pi9ldGMvcGFtLmQvc3UKKyAgICAgICAgICAgZmkKKyAgICAgICAgICAgaWYgISAvdXNyL3NiaW4vZ2V0Y2FwICRYU0VSVkVSIHwgIGdyZXAgLXEgY2FwX3N5c19hZG1pbjsgdGhlbgorICAgICAgICAgICAgICAgL3Vzci9zYmluL3NldGNhcCBjYXBfc3lzX2FkbWluK2VpcCAkWFNFUlZFUgorICAgICAgICAgICBmaQogICAgICAgIGZpCiAKICAgICAgICAjIFVzaW5nIHN1IHJhdGhlciB0aGFuIHN1ZG8gYXMgbGF0ZXN0IDEuOC4xIGNhdXNlIGZhaWx1cmUgW1lPQ1RPICMxMjExXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdF8zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgppbmRleCAzODVmZWE1Li5jMjk5NWY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgpAQCAtMTAsNiArMTAsNyBAQAogICAgICAgICAgICBmaWxlOi8vZ3BsdjItbGljZW5zZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uc2VydmljZS5pbiBcCiAgICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uY29uZi5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9jYXBhYmlsaXR5LmNvbmYgXAogIgogCiBTID0gIiR7V09SS0RJUn0iCkBAIC0xOSw3ICsyMCw3IEBACiAKIGluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZCBmZWF0dXJlc19jaGVjawogCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSAke0BvZS51dGlscy5jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3BhbScsICcnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJibGFuayIKICMgZHBtcyBhbmQgc2NyZWVuIHNhdmVyIHdpbGwgYmUgb24gb25seSBpZiAnYmxhbmsnIGlzIGluIFBBQ0tBR0VDT05GSUcKQEAgLTQwLDYgKzQxLDggQEAKICAgICBpZiBbICIke1JPT1RMRVNTX1h9IiA9ICIxIiBdIDsgdGhlbgogICAgICAgICBYVVNFUl9IT01FPSIvaG9tZS94dXNlciIKICAgICAgICAgWFVTRVI9Inh1c2VyIgorICAgICAgICBpbnN0YWxsIC1EIGNhcGFiaWxpdHkuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zZWN1cml0eS9jYXBhYmlsaXR5LmNvbmYKKyAgICAgICAgc2VkIC1pICJzOkBVU0VSQDoke1hVU0VSfToiICR7RH0ke3N5c2NvbmZkaXJ9L3NlY3VyaXR5L2NhcGFiaWxpdHkuY29uZgogICAgIGVsc2UKICAgICAgICAgWFVTRVJfSE9NRT0ke1JPT1RfSE9NRX0KICAgICAgICAgWFVTRVI9InJvb3QiCkBAIC02MCw3ICs2Myw3IEBACiAgICAgZmkKIH0KIAotUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1JPT1RMRVNTX1gnLCAnMScsICd4dXNlci1hY2NvdW50JywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gInhpbml0ICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdST09UTEVTU19YJywgJzEnLCAneHVzZXItYWNjb3VudCBsaWJjYXAgbGliY2FwLWJpbicsICcnLCBkKX0iCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJ4c2VydmVyLW5vZG0iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5IDUgLiBzdG9wIDIwIDAgMSAyIDMgNiAuIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250ZGlyXzEuMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250ZGlyXzEuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDUzZTI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udGRpcl8xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2YgWCBmb250IGZpbGVzIGluIGEgZGlyZWN0b3J5IgotCi1ERVNDUklQVElPTiA9ICJGb3IgZWFjaCBkaXJlY3RvcnkgYXJndW1lbnQsIG1rZm9udGRpciByZWFkcyBhbGwgb2YgdGhlIFwKLWZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gVGhlIGZvbnQgbmFtZXMgYW5kIHJlbGF0ZWQgZGF0YSBhcmUgd3JpdHRlbiBcCi1vdXQgdG8gdGhlIGZpbGVzIFwiZm9udHMuZGlyXCIsIFwiZm9udHMuc2NhbGVcIiwgYW5kIFwiZm9udHMuYWxpYXNcIi4gIFwKLVRoZSBYIHNlcnZlciBhbmQgZm9udCBzZXJ2ZXIgdXNlIHRoZXNlIGZpbGVzIHRvIGZpbmQgdGhlIGF2YWlsYWJsZSBmb250IFwKLWZpbGVzLiIKLQotUEUgPSAiMSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1SREVQRU5EU18ke1BOfSArPSAibWtmb250c2NhbGUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgKz0gIm1rZm9udHNjYWxlLW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI0ZmNmMmI5MGNhZGJmYzE1MDA5YjllMTI0ZGMzYTNmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMThjNDI5MTQ4Yzk2YzIwNzllZGRhOTIyYTJiNjc2MzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTZkNTJhNDgyZGYxMzA0ODRlNTFmZDA2NmQxYjZlZGE3YzJjMDJkZGJjOTFmZTZlMmJlMWI5YzRlNzMwNjUzMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNmJlYzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY3JlYXRlIGFuIGluZGV4IG9mIHNjYWxhYmxlIGZvbnQgZmlsZXMgZm9yIFgiCi0KLURFU0NSSVBUSU9OID0gIkZvciBlYWNoIGRpcmVjdG9yeSBhcmd1bWVudCwgbWtmb250c2NhbGUgcmVhZHMgYWxsIG9mIHRoZSBcCi1zY2FsYWJsZSBmb250IGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEZvciBldmVyeSBmb250IGZpbGUgZm91bmQsIGFuIFgxMSBcCi1mb250IG5hbWUgKFhMRkQpIGlzIGdlbmVyYXRlZCwgYW5kIGlzIHdyaXR0ZW4gdG9nZXRoZXIgd2l0aCB0aGUgZmlsZSBcCi1uYW1lIHRvIGEgZmlsZSBmb250cy5zY2FsZSBpbiB0aGUgZGlyZWN0b3J5LiAgVGhlIHJlc3VsdGluZyBmb250cy5zY2FsZSBcCi1pcyB1c2VkIGJ5IHRoZSBta2ZvbnRkaXIgcHJvZ3JhbS4iCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MtbmF0aXZlIHpsaWIgbGliZm9udGVuYyBmcmVldHlwZSB4b3JncHJvdG8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTBkMTI5ZDA1MzA1MTc2ZDFhNzkwZTBhYzFhY2I3ZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk4N2M0MzhlNzlmNWRkYjg0YTljNTcyNmExNjEwODE5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlOThkZjY5ZWU1ZjQ1NDJkNzExZTE0MGUxZDkzZTJjM2YyNzc1NDA3Y2NiYjc4NDkxMTBkNTJiOTE3ODJhNmEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NjdlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjIuMS5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY3JlYXRlIGFuIGluZGV4IG9mIHNjYWxhYmxlIGZvbnQgZmlsZXMgZm9yIFgiCisKK0RFU0NSSVBUSU9OID0gIkZvciBlYWNoIGRpcmVjdG9yeSBhcmd1bWVudCwgbWtmb250c2NhbGUgcmVhZHMgYWxsIG9mIHRoZSBcCitzY2FsYWJsZSBmb250IGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEZvciBldmVyeSBmb250IGZpbGUgZm91bmQsIGFuIFgxMSBcCitmb250IG5hbWUgKFhMRkQpIGlzIGdlbmVyYXRlZCwgYW5kIGlzIHdyaXR0ZW4gdG9nZXRoZXIgd2l0aCB0aGUgZmlsZSBcCituYW1lIHRvIGEgZmlsZSBmb250cy5zY2FsZSBpbiB0aGUgZGlyZWN0b3J5LiAgVGhlIHJlc3VsdGluZyBmb250cy5zY2FsZSBcCitpcyB1c2VkIGJ5IHRoZSBta2ZvbnRkaXIgcHJvZ3JhbS4iCisKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MtbmF0aXZlIHpsaWIgbGliZm9udGVuYyBmcmVldHlwZSB4b3JncHJvdG8iCisKK1BST1ZJREVTICs9ICJta2ZvbnRkaXIiCitSUFJPVklERVNfJHtQTn0gKz0gIm1rZm9udGRpciIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk5YjFlMTI2OWFiYTUxNzkxMzliOWU0MzgwZmMwOTM0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjE1OTQwZGUxNThiMWEzZDhiM2Y4YjQ0MmM2MDZlMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2EwNDk1ZWI5NzRhMTc5ZGQ3NDJiZmE2MTk5ZDU2MWJkYTFjOGRhNGEwYzVhNjY3ZjIxZmQ4MmFhYWI2YmFjNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4xLmJiCmluZGV4IDMzYzBjOGEuLmM0ZDQ0M2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMS5iYgpAQCAtMTMsNiArMTMsMTAgQEAKIAogUEUgPSAiMSIKIAoraW5oZXJpdCBtdWx0aWxpYl9zY3JpcHQKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0veDExcGVyZmNvbXAiCisKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CiAgICAgc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyAke0R9JHtiaW5kaXJ9L3gxMXBlcmZjb21wCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdC8wMDAxLU1ha2UtbWFucGFnZS1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdC8wMDAxLU1ha2UtbWFucGFnZS1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ5OTA1NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0LzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGQ2NDJlNjBkODk2M2YxYjkwNTY5Y2QwYWI1YzI5YWMyYzliZmU5MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMjoyODoxNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIG1hbnBhZ2UgbXVsdGlsaWIgaWRlbnRpY2FsCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgbWFuL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlLmFtIGIvbWFuL01ha2VmaWxlLmFtCitpbmRleCA5YzY1NjlmLi42MDhlOTMzIDEwMDY0NAorLS0tIGEvbWFuL01ha2VmaWxlLmFtCisrKysgYi9tYW4vTWFrZWZpbGUuYW0KK0BAIC0xMiw3ICsxMiw3IEBAIE1BTl9TVUJTVFMrPQktZSAnc3xfX1hTRVJWRVJOQU1FX198JChYU0VSVkVSTkFNRSl8ZycgXAorIAkJLWUgJ3N8X19YQ09ORklHRklMRU1BTl9ffCQoWENPTkZJR0ZJTEVNQU4pfGcnIFwKKyAJCS1lICdzfF9feGluaXRkaXJfX3wkKFhJTklURElSKXxnJyBcCisgCQktZSAnc3xfX2JpbmRpcl9ffCQoYmluZGlyKXxnJyBcCistCQktZSAnc3xfX2xpYmRpcl9ffCQobGliZGlyKXxnJyBcCisrCQktZSAnc3xfX2xpYmRpcl9ffCQocHJlZml4KS9saWIqfGcnIFwKKyAJCS1lICdzfF9fY29uZmlnZGlyX198JChYSU5JVERJUil8ZycKKyAKKyAKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0XzEuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIKaW5kZXggNTYyNmViYi4uYzllMjhkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIKQEAgLTEyLDYgKzEyLDggQEAKIAogUEUgPSAiMSIKIAorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCIKKwogU1JDX1VSSVttZDVzdW1dID0gIjZkNTA2YWIyZWZjMTdhMDhlODc3Nzg2NTRlMDk5ZDM3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlOWI4ZjYxN2I2OGE3MGY2Y2FmODdkYTAxZmNmMGViZDJiNzU2OTBjZGNiYTljOTIxZDBlZjU0ZmE1NGFiYjkiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWY4ZWFhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCi0KLURFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKLVhLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoteGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCi1iZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKLQotREVQRU5EUyArPSAibGlieGtiZmlsZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMjYxMGRmMTlkZjJhZjM3OTdmMmMxMzBlZTJiY2U5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZGQ4YmNiOWJlN2U4NWJkNzI5NGFiZTI2MWI4YzdiMDUzOWQyZmM5M2U0MWI4MGZiOGJkMDEzNzY3Y2U4NDI0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhNzljOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjMuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNvbXBpbGUgWEtCIGtleWJvYXJkIGRlc2NyaXB0aW9uIgorCitERVNDUklQVElPTiA9ICJUaGUgeGtiY29tcCBrZXltYXAgY29tcGlsZXIgY29udmVydHMgYSBkZXNjcmlwdGlvbiBvZiBhbiBcCitYS0Iga2V5bWFwIGludG8gb25lIG9mIHNldmVyYWwgb3V0cHV0IGZvcm1hdHMuIFRoZSBtb3N0IGNvbW1vbiB1c2UgZm9yIFwKK3hrYmNvbXAgaXMgdG8gY3JlYXRlIGEgY29tcGlsZWQga2V5bWFwIGZpbGUgKC54a20gZXh0ZW5zaW9uKSB3aGljaCBjYW4gXAorYmUgcmVhZCBkaXJlY3RseSBieSBYS0ItY2FwYWJsZSBYIHNlcnZlcnMgb3IgdXRpbGl0aWVzLiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDg0MzZlNGY0NDc2OTY0ZTJlMmRkN2U3ZTQxZTA3NmEiCisKK0RFUEVORFMgKz0gImxpYnhrYmZpbGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zZWxlY3RpdmUtd2Vycm9yIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmU0NzUxZDk5MzczZjg1ZDQ1OWFiNGRmZjI4ODkzZjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYyNDJjMTY5ZmMxMWNhZjYwMWNhYzQ2ZDc4MWQ0Njc3NDhjNmEzMzBlMTViMzZkY2U0NjUyMGI4YWM4ZDQzNSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzLzY0Yml0X3RpbWVfdF9zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3MvNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJiN2ZiMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzLzY0Yml0X3RpbWVfdF9zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK1RoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nIHRpbWUgZmllbGQgb2YgaW5wdXRfZXZlbnQgc3RydWN0dXJlIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUKK29uIDMyYml0IGFyY2hlcyBzdXBwb3J0aW5nIDY0Yml0IHRpbWVfdCBzdHJ1Y3RzLCBQYXRjaCBtYWtlcyBpdCBjb21wYXRpYmxlIHdpdGggbmV3CithbmQga2VlcHMgb2xkIGlucHV0LmggaW1wbGVtZW50YXRpb24gZnVuY3Rpb25hbCBhcyB3ZWxsLgorCitTZWUgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9nbGliYy93aWtpL1kyMDM4UHJvb2ZuZXNzRGVzaWduCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvc3JjL2V2ZW50Y29tbS5jCisrKysgYi9zcmMvZXZlbnRjb21tLmMKK0BAIC01NzUsMTAgKzU3NSwxMiBAQCBTeW5hcHRpY3NSZWFkRXZlbnQoSW5wdXRJbmZvUHRyIHBJbmZvLCBzCisgICAgICAgICBldi0+dHlwZSA9IEVWX1NZTjsKKyAgICAgICAgIGV2LT5jb2RlID0gU1lOX1JFUE9SVDsKKyAgICAgICAgIGV2LT52YWx1ZSA9IDA7CistICAgICAgICBldi0+dGltZSA9IGxhc3RfZXZlbnRfdGltZTsKKy0gICAgfSBlbHNlIGlmIChldi0+dHlwZSA9PSBFVl9TWU4pCistICAgICAgICBsYXN0X2V2ZW50X3RpbWUgPSBldi0+dGltZTsKKy0KKysJZXYtPmlucHV0X2V2ZW50X3NlYyA9IGxhc3RfZXZlbnRfdGltZS50dl9zZWM7CisrCWV2LT5pbnB1dF9ldmVudF91c2VjID0gbGFzdF9ldmVudF90aW1lLnR2X3VzZWM7CisrICAgIH0gZWxzZSBpZiAoZXYtPnR5cGUgPT0gRVZfU1lOKSB7CisrICAgICAgICBsYXN0X2V2ZW50X3RpbWUudHZfc2VjID0gZXYtPmlucHV0X2V2ZW50X3NlYzsKKysgICAgICAgIGxhc3RfZXZlbnRfdGltZS50dl91c2VjID0gZXYtPmlucHV0X2V2ZW50X3VzZWM7CisrICAgIH0KKyAgICAgcmV0dXJuIFRSVUU7CisgfQorIAorQEAgLTcyNSw3ICs3MjcsNyBAQCBFdmVudFJlYWRId1N0YXRlKElucHV0SW5mb1B0ciBwSW5mbywKKyAgICAgICAgICAgICBjYXNlIFNZTl9SRVBPUlQ6CisgICAgICAgICAgICAgICAgIGh3LT5udW1GaW5nZXJzID0gY291bnRfZmluZ2VycyhwSW5mbywgY29tbSk7CisgICAgICAgICAgICAgICAgIGlmIChwcm90b19kYXRhLT5oYXZlX21vbm90b25pY19jbG9jaykKKy0gICAgICAgICAgICAgICAgICAgIGh3LT5taWxsaXMgPSAxMDAwICogZXYudGltZS50dl9zZWMgKyBldi50aW1lLnR2X3VzZWMgLyAxMDAwOworKyAgICAgICAgICAgICAgICAgICAgaHctPm1pbGxpcyA9IDEwMDAgKiBldi5pbnB1dF9ldmVudF9zZWMgKyBldi5pbnB1dF9ldmVudF91c2VjIC8gMTAwMDsKKyAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgaHctPm1pbGxpcyA9IEdldFRpbWVJbk1pbGxpcygpOworICAgICAgICAgICAgICAgICBTeW5hcHRpY3NDb3B5SHdTdGF0ZShod1JldCwgaHcpOworLS0tIGEvc3JjL2V2ZW50Y29tbS5oCisrKysgYi9zcmMvZXZlbnRjb21tLmgKK0BAIC0zNCw2ICszNCwxMSBAQAorICNpbmNsdWRlIDx4Zjg2WGlucHV0Lmg+CisgI2luY2x1ZGUgInN5bnByb3RvLmgiCisgCisrI2lmbmRlZiBpbnB1dF9ldmVudF9zZWMKKysjZGVmaW5lIGlucHV0X2V2ZW50X3NlYyB0aW1lLnR2X3NlYworKyNkZWZpbmUgaW5wdXRfZXZlbnRfdXNlYyB0aW1lLnR2X3VzZWMKKysjZW5kaWYKKysKKyAvKiBmb3IgYXV0by1kZXY6ICovCisgI2RlZmluZSBERVZfSU5QVVRfRVZFTlQgIi9kZXYvaW5wdXQiCisgI2RlZmluZSBFVkVOVF9ERVZfTkFNRSAiZXZlbnQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LXN5bmFwdGljc18xLjkuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiCmluZGV4IGRjMzE4OTAuLjM4ODM1MGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiCkBAIC0xMCw2ICsxMCw4IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1YWFjZDM1MzVhNzQxODI0OTU1YzVlYjhmMDYxMzk4IgogCitTUkNfVVJJICs9ICJmaWxlOi8vNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2giCisKIFNSQ19VUklbbWQ1c3VtXSA9ICJjZmI3OWQzYzk3NTE1MWY5YmJmMzBiNzI3YzI2MGNiOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YWY4MzUyNmVmZjFjNzZlOGI5ZTE1NTNiMzQyNDVjMjAzZDAyOTAyOGQ4MDQ0ZGQ5ZGNmNzFlZWYxMDAxNTc2IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtU3luYy1pOTE1X3BjaWlkcy11cHRvLTg3MTdjNmI3NDE0Zi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmM2IxYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtU3luYy1pOTE1X3BjaWlkcy11cHRvLTg3MTdjNmI3NDE0Zi5wYXRjaApAQCAtMCwwICsxLDUwNSBAQAorRnJvbSAwNTkwOWZlYTkzZjI5YjJiNmUxZDU1NGRkNjQyMDE1NTFiZDdhMDIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGl3ZWkgU29uZyA8bGl3ZWkuc29uZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxNyBBcHIgMjAyMCAxNjoxMTo1OSArMDgwMAorU3ViamVjdDogW1BBVENIXSBTeW5jIGk5MTVfcGNpaWRzIHVwdG8gODcxN2M2Yjc0MTRmCisKK0ltcG9ydCB0aGUga2VybmVsJ3MgaTkxNV9wY2lpZHMuaCwgdXAgdG86CisKK2NvbW1pdCA4NzE3YzZiNzQxNGZmYjg5MDY3MjI3NmRjY2MyODRjMjMwNzhhYzBlCitBdXRob3I6IExlZSBTaGF3biBDIDxzaGF3bi5jLmxlZUBpbnRlbC5jb20+CitEYXRlOiAgIFR1ZSBEZWMgMTAgMjM6MDQ6MTUgMjAxOSArMDgwMAorCisgICAgZHJtL2k5MTUvY21sOiBTZXBhcmF0ZSBVIHNlcmllcyBwY2kgaWQgZnJvbSBvcmlnaWFubCBsaXN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMTQ5NDY0NS9dCisKK1NpZ25lZC1vZmYtYnk6IExpd2VpIFNvbmcgPGxpd2VpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9pOTE1X3BjaWlkcy5oICB8IDI2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBzcmMvaW50ZWxfbW9kdWxlLmMgfCAgIDIgKy0KKyB0ZXN0L2RyaTMtdGVzdC5jICAgfCAgIDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pOTE1X3BjaWlkcy5oIGIvc3JjL2k5MTVfcGNpaWRzLmgKK2luZGV4IGZkOTY1ZmZiYjkyZS4uMWQyYzEyMjE5ZjQ0IDEwMDY0NAorLS0tIGEvc3JjL2k5MTVfcGNpaWRzLmgKKysrKyBiL3NyYy9pOTE1X3BjaWlkcy5oCitAQCAtMTA4LDggKzEwOCwxMCBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MmU0MiwgaW5mbyksIC8qIEI0M19HICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDJlOTIsIGluZm8pCS8qIEI0M19HLjEgKi8KKyAKKy0jZGVmaW5lIElOVEVMX1BJTkVWSUVXX0lEUyhpbmZvKQkJCVwKKy0JSU5URUxfVkdBX0RFVklDRSgweGEwMDEsIGluZm8pLAkJCVwKKysjZGVmaW5lIElOVEVMX1BJTkVWSUVXX0dfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweGEwMDEsIGluZm8pCisrCisrI2RlZmluZSBJTlRFTF9QSU5FVklFV19NX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHhhMDExLCBpbmZvKQorIAorICNkZWZpbmUgSU5URUxfSVJPTkxBS0VfRF9JRFMoaW5mbykgXAorQEAgLTE2Niw3ICsxNjgsMTggQEAKKyAjZGVmaW5lIElOVEVMX0lWQl9RX0lEUyhpbmZvKSBcCisgCUlOVEVMX1FVQU5UQV9WR0FfREVWSUNFKGluZm8pIC8qIFF1YW50YSB0cmFuc2NvZGUgKi8KKyAKKysjZGVmaW5lIElOVEVMX0hTV19VTFRfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTAyLCBpbmZvKSwgLyogVUxUIEdUMSBkZXNrdG9wICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMEEsIGluZm8pLCAvKiBVTFQgR1QxIHNlcnZlciAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTBCLCBpbmZvKSwgLyogVUxUIEdUMSByZXNlcnZlZCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTA2LCBpbmZvKSAgLyogVUxUIEdUMSBtb2JpbGUgKi8KKysKKysjZGVmaW5lIElOVEVMX0hTV19VTFhfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTBFLCBpbmZvKSAvKiBVTFggR1QxIG1vYmlsZSAqLworKworICNkZWZpbmUgSU5URUxfSFNXX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9IU1dfVUxUX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfSFNXX1VMWF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDAyLCBpbmZvKSwgLyogR1QxIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQwYSwgaW5mbyksIC8qIEdUMSBzZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQwQiwgaW5mbyksIC8qIEdUMSByZXNlcnZlZCAqLyBcCitAQCAtMTc1LDIwICsxODgsMjYgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMEEsIGluZm8pLCAvKiBTRFYgR1QxIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzBCLCBpbmZvKSwgLyogU0RWIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzBFLCBpbmZvKSwgLyogU0RWIEdUMSByZXNlcnZlZCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTAyLCBpbmZvKSwgLyogVUxUIEdUMSBkZXNrdG9wICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMEEsIGluZm8pLCAvKiBVTFQgR1QxIHNlcnZlciAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTBCLCBpbmZvKSwgLyogVUxUIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDAyLCBpbmZvKSwgLyogQ1JXIEdUMSBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMEEsIGluZm8pLCAvKiBDUlcgR1QxIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDBCLCBpbmZvKSwgLyogQ1JXIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDBFLCBpbmZvKSwgLyogQ1JXIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDA2LCBpbmZvKSwgLyogR1QxIG1vYmlsZSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzA2LCBpbmZvKSwgLyogU0RWIEdUMSBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEwNiwgaW5mbyksIC8qIFVMVCBHVDEgbW9iaWxlICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMEUsIGluZm8pLCAvKiBVTFggR1QxIG1vYmlsZSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDA2LCBpbmZvKSAgLyogQ1JXIEdUMSBtb2JpbGUgKi8KKyAKKysjZGVmaW5lIElOVEVMX0hTV19VTFRfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTEyLCBpbmZvKSwgLyogVUxUIEdUMiBkZXNrdG9wICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMUEsIGluZm8pLCAvKiBVTFQgR1QyIHNlcnZlciAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFCLCBpbmZvKSwgLyogVUxUIEdUMiByZXNlcnZlZCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTE2LCBpbmZvKSAgLyogVUxUIEdUMiBtb2JpbGUgKi8KKysKKysjZGVmaW5lIElOVEVMX0hTV19VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFFLCBpbmZvKSAvKiBVTFggR1QyIG1vYmlsZSAqLyBcCisrCisgI2RlZmluZSBJTlRFTF9IU1dfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX0hTV19VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9IU1dfVUxYX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MTIsIGluZm8pLCAvKiBHVDIgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDFhLCBpbmZvKSwgLyogR1QyIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDFCLCBpbmZvKSwgLyogR1QyIHJlc2VydmVkICovIFwKK0BAIC0xOTcsOSArMjE2LDYgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMUEsIGluZm8pLCAvKiBTRFYgR1QyIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzFCLCBpbmZvKSwgLyogU0RWIEdUMiByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzFFLCBpbmZvKSwgLyogU0RWIEdUMiByZXNlcnZlZCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTEyLCBpbmZvKSwgLyogVUxUIEdUMiBkZXNrdG9wICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMUEsIGluZm8pLCAvKiBVTFQgR1QyIHNlcnZlciAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFCLCBpbmZvKSwgLyogVUxUIEdUMiByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDEyLCBpbmZvKSwgLyogQ1JXIEdUMiBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMUEsIGluZm8pLCAvKiBDUlcgR1QyIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDFCLCBpbmZvKSwgLyogQ1JXIEdUMiByZXNlcnZlZCAqLyBcCitAQCAtMjA3LDExICsyMjMsMTcgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MTYsIGluZm8pLCAvKiBHVDIgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MjYsIGluZm8pLCAvKiBHVDIgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMTYsIGluZm8pLCAvKiBTRFYgR1QyIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTE2LCBpbmZvKSwgLyogVUxUIEdUMiBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEExRSwgaW5mbyksIC8qIFVMWCBHVDIgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMTYsIGluZm8pICAvKiBDUlcgR1QyIG1vYmlsZSAqLworIAorKyNkZWZpbmUgSU5URUxfSFNXX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMjIsIGluZm8pLCAvKiBVTFQgR1QzIGRlc2t0b3AgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQSwgaW5mbyksIC8qIFVMVCBHVDMgc2VydmVyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMkIsIGluZm8pLCAvKiBVTFQgR1QzIHJlc2VydmVkICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMjYsIGluZm8pLCAvKiBVTFQgR1QzIG1vYmlsZSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJFLCBpbmZvKSAgLyogVUxUIEdUMyByZXNlcnZlZCAqLworKworICNkZWZpbmUgSU5URUxfSFNXX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9IU1dfVUxUX0dUM19JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MjIsIGluZm8pLCAvKiBHVDMgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDJhLCBpbmZvKSwgLyogR1QzIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDJCLCBpbmZvKSwgLyogR1QzIHJlc2VydmVkICovIFwKK0BAIC0yMjAsMTYgKzI0MiwxMSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyQSwgaW5mbyksIC8qIFNEViBHVDMgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMkIsIGluZm8pLCAvKiBTRFYgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMkUsIGluZm8pLCAvKiBTRFYgR1QzIHJlc2VydmVkICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMjIsIGluZm8pLCAvKiBVTFQgR1QzIGRlc2t0b3AgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQSwgaW5mbyksIC8qIFVMVCBHVDMgc2VydmVyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMkIsIGluZm8pLCAvKiBVTFQgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMjIsIGluZm8pLCAvKiBDUlcgR1QzIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyQSwgaW5mbyksIC8qIENSVyBHVDMgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMkIsIGluZm8pLCAvKiBDUlcgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMkUsIGluZm8pLCAvKiBDUlcgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMjYsIGluZm8pLCAvKiBTRFYgR1QzIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTI2LCBpbmZvKSwgLyogVUxUIEdUMyBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyRSwgaW5mbyksIC8qIFVMVCBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyNiwgaW5mbykgIC8qIENSVyBHVDMgbW9iaWxlICovCisgCisgI2RlZmluZSBJTlRFTF9IU1dfSURTKGluZm8pIFwKK0BAIC0yNDUsMzUgKzI2Miw1OSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDE1NywgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDAxNTUsIGluZm8pCisgCistI2RlZmluZSBJTlRFTF9CRFdfR1QxX0lEUyhpbmZvKSAgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYwMiwgaW5mbyksIC8qIEdUMSBVTFQgKi8gXAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9HVDFfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MDYsIGluZm8pLCAvKiBHVDEgVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MEIsIGluZm8pLCAvKiBHVDEgSXJpcyAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjBFLCBpbmZvKSwgLyogR1QxIFVMWCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjBCLCBpbmZvKSAgLyogR1QxIElyaXMgKi8KKysKKysjZGVmaW5lIElOVEVMX0JEV19VTFhfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjBFLCBpbmZvKSAvKiBHVDEgVUxYICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX0JEV19VTFRfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9CRFdfVUxYX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MDIsIGluZm8pLCAvKiBHVDEgVUxUICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MEEsIGluZm8pLCAvKiBHVDEgU2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MEQsIGluZm8pICAvKiBHVDEgV29ya3N0YXRpb24gKi8KKyAKKy0jZGVmaW5lIElOVEVMX0JEV19HVDJfSURTKGluZm8pICBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjEyLCBpbmZvKSwgLyogR1QyIEhhbG8gKi8JXAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9HVDJfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MTYsIGluZm8pLCAvKiBHVDIgVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MUIsIGluZm8pLCAvKiBHVDIgVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MUUsIGluZm8pLCAvKiBHVDIgVUxYICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MUIsIGluZm8pICAvKiBHVDIgVUxUICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfVUxYX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYxRSwgaW5mbykgLyogR1QyIFVMWCAqLworKworKyNkZWZpbmUgSU5URUxfQkRXX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9CRFdfVUxUX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfQkRXX1VMWF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjEyLCBpbmZvKSwgLyogR1QyIEhhbG8gKi8JXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYxQSwgaW5mbyksIC8qIEdUMiBTZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYxRCwgaW5mbykgIC8qIEdUMiBXb3Jrc3RhdGlvbiAqLworIAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MjYsIGluZm8pLCAvKiBVTFQgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYyQiwgaW5mbykgIC8qIElyaXMgKi8gXAorKworKyNkZWZpbmUgSU5URUxfQkRXX1VMWF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MkUsIGluZm8pICAvKiBVTFggKi8KKysKKyAjZGVmaW5lIElOVEVMX0JEV19HVDNfSURTKGluZm8pIFwKKysJSU5URUxfQkRXX1VMVF9HVDNfSURTKGluZm8pLCBcCisrCUlOVEVMX0JEV19VTFhfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYyMiwgaW5mbyksIC8qIFVMVCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjI2LCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MkIsIGluZm8pLCAvKiBJcmlzICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MkUsIGluZm8pLCAgLyogVUxYICovXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYyQSwgaW5mbyksIC8qIFNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjJELCBpbmZvKSAgLyogV29ya3N0YXRpb24gKi8KKyAKKysjZGVmaW5lIElOVEVMX0JEV19VTFRfUlNWRF9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYzNiwgaW5mbyksIC8qIFVMVCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNCLCBpbmZvKSAgLyogSXJpcyAqLworKworKyNkZWZpbmUgSU5URUxfQkRXX1VMWF9SU1ZEX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNFLCBpbmZvKSAvKiBVTFggKi8KKysKKyAjZGVmaW5lIElOVEVMX0JEV19SU1ZEX0lEUyhpbmZvKSBcCisrCUlOVEVMX0JEV19VTFRfUlNWRF9JRFMoaW5mbyksIFwKKysJSU5URUxfQkRXX1VMWF9SU1ZEX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYzMiwgaW5mbyksIC8qIFVMVCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjM2LCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2M0IsIGluZm8pLCAvKiBJcmlzICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2M0UsIGluZm8pLCAvKiBVTFggKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYzQSwgaW5mbyksIC8qIFNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNELCBpbmZvKSAgLyogV29ya3N0YXRpb24gKi8KKyAKK0BAIC0yODksMjUgKzMzMCw0MCBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MjJiMiwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDIyYjMsIGluZm8pCisgCisrI2RlZmluZSBJTlRFTF9TS0xfVUxUX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkwNiwgaW5mbykgLyogVUxUIEdUMSAqLworKworKyNkZWZpbmUgSU5URUxfU0tMX1VMWF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE5MEUsIGluZm8pIC8qIFVMWCBHVDEgKi8KKysKKyAjZGVmaW5lIElOVEVMX1NLTF9HVDFfSURTKGluZm8pCVwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE5MDYsIGluZm8pLCAvKiBVTFQgR1QxICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE5MEUsIGluZm8pLCAvKiBVTFggR1QxICovIFwKKysJSU5URUxfU0tMX1VMVF9HVDFfSURTKGluZm8pLCBcCisrCUlOVEVMX1NLTF9VTFhfR1QxX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkwMiwgaW5mbyksIC8qIERUICBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkwQiwgaW5mbyksIC8qIEhhbG8gR1QxICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MEEsIGluZm8pIC8qIFNSViBHVDEgKi8KKyAKKy0jZGVmaW5lIElOVEVMX1NLTF9HVDJfSURTKGluZm8pCVwKKysjZGVmaW5lIElOVEVMX1NLTF9VTFRfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTE2LCBpbmZvKSwgLyogVUxUIEdUMiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTIxLCBpbmZvKSwgLyogVUxUIEdUMkYgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkxRSwgaW5mbyksIC8qIFVMWCBHVDIgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkyMSwgaW5mbykgIC8qIFVMVCBHVDJGICovCisrCisrI2RlZmluZSBJTlRFTF9TS0xfVUxYX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkxRSwgaW5mbykgLyogVUxYIEdUMiAqLworKworKyNkZWZpbmUgSU5URUxfU0tMX0dUMl9JRFMoaW5mbykJXAorKwlJTlRFTF9TS0xfVUxUX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfU0tMX1VMWF9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTEyLCBpbmZvKSwgLyogRFQgIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFCLCBpbmZvKSwgLyogSGFsbyBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkxQSwgaW5mbyksIC8qIFNSViBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkxRCwgaW5mbykgIC8qIFdLUyBHVDIgKi8KKyAKKysjZGVmaW5lIElOVEVMX1NLTF9VTFRfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTI2LCBpbmZvKSAvKiBVTFQgR1QzICovCisrCisgI2RlZmluZSBJTlRFTF9TS0xfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX1NLTF9VTFRfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyMywgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkyNiwgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyNywgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyQiwgaW5mbyksIC8qIEhhbG8gR1QzICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MkQsIGluZm8pICAvKiBTUlYgR1QzICovCitAQCAtMzM2LDQ1ICszOTIsOTEgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDMxODQsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzMTg1LCBpbmZvKQorIAorLSNkZWZpbmUgSU5URUxfS0JMX0dUMV9JRFMoaW5mbykJXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NTkxMywgaW5mbyksIC8qIFVMVCBHVDEuNSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE1LCBpbmZvKSwgLyogVUxYIEdUMS41ICovIFwKKysjZGVmaW5lIElOVEVMX0tCTF9VTFRfR1QxX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTA2LCBpbmZvKSwgLyogVUxUIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTEzLCBpbmZvKSAgLyogVUxUIEdUMS41ICovCisrCisrI2RlZmluZSBJTlRFTF9LQkxfVUxYX0dUMV9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkwRSwgaW5mbyksIC8qIFVMWCBHVDEgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NTkxNSwgaW5mbykgIC8qIFVMWCBHVDEuNSAqLworKworKyNkZWZpbmUgSU5URUxfS0JMX0dUMV9JRFMoaW5mbykJXAorKwlJTlRFTF9LQkxfVUxUX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfS0JMX1VMWF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTAyLCBpbmZvKSwgLyogRFQgIEdUMSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTA4LCBpbmZvKSwgLyogSGFsbyBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkwQiwgaW5mbyksIC8qIEhhbG8gR1QxICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MEEsIGluZm8pIC8qIFNSViBHVDEgKi8KKyAKKy0jZGVmaW5lIElOVEVMX0tCTF9HVDJfSURTKGluZm8pCVwKKysjZGVmaW5lIElOVEVMX0tCTF9VTFRfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE2LCBpbmZvKSwgLyogVUxUIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTIxLCBpbmZvKSAgLyogVUxUIEdUMkYgKi8KKysKKysjZGVmaW5lIElOVEVMX0tCTF9VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFFLCBpbmZvKSAgLyogVUxYIEdUMiAqLworKworKyNkZWZpbmUgSU5URUxfS0JMX0dUMl9JRFMoaW5mbykJXAorKwlJTlRFTF9LQkxfVUxUX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfS0JMX1VMWF9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE3LCBpbmZvKSwgLyogTW9iaWxlIEdUMiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTIxLCBpbmZvKSwgLyogVUxUIEdUMkYgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NTkxRSwgaW5mbyksIC8qIFVMWCBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxMiwgaW5mbyksIC8qIERUICBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxQiwgaW5mbyksIC8qIEhhbG8gR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MUEsIGluZm8pLCAvKiBTUlYgR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MUQsIGluZm8pIC8qIFdLUyBHVDIgKi8KKyAKKysjZGVmaW5lIElOVEVMX0tCTF9VTFRfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTI2LCBpbmZvKSAvKiBVTFQgR1QzICovCisrCisgI2RlZmluZSBJTlRFTF9LQkxfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX0tCTF9VTFRfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkyMywgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NTkyNiwgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkyNywgaW5mbykgLyogVUxUIEdUMyAqLworIAorICNkZWZpbmUgSU5URUxfS0JMX0dUNF9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkzQiwgaW5mbykgLyogSGFsbyBHVDQgKi8KKyAKKyAvKiBBTUwvS0JMIFkgR1QyICovCistI2RlZmluZSBJTlRFTF9BTUxfR1QyX0lEUyhpbmZvKSBcCisrI2RlZmluZSBJTlRFTF9BTUxfS0JMX0dUMl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxQywgaW5mbyksICAvKiBVTFggR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDg3QzAsIGluZm8pIC8qIFVMWCBHVDIgKi8KKyAKKysvKiBBTUwvQ0ZMIFkgR1QyICovCisrI2RlZmluZSBJTlRFTF9BTUxfQ0ZMX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4ODdDQSwgaW5mbykKKysKKysvKiBDTUwgR1QxICovCisrI2RlZmluZSBJTlRFTF9DTUxfR1QxX0lEUyhpbmZvKQlcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkE1LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBOCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQTQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkEyLCBpbmZvKQorKworKyNkZWZpbmUgSU5URUxfQ01MX1VfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QjIxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBQSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQUMsIGluZm8pCisrCisrLyogQ01MIEdUMiAqLworKyNkZWZpbmUgSU5URUxfQ01MX0dUMl9JRFMoaW5mbykJXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDNSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQzgsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkM0LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDMiwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQzYsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkU2LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJGNiwgaW5mbykKKysKKysjZGVmaW5lIElOVEVMX0NNTF9VX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUI0MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQ0EsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkNDLCBpbmZvKQorKworICNkZWZpbmUgSU5URUxfS0JMX0lEUyhpbmZvKSBcCisgCUlOVEVMX0tCTF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX0tCTF9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX0tCTF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX0tCTF9HVDRfSURTKGluZm8pLCBcCistCUlOVEVMX0FNTF9HVDJfSURTKGluZm8pCisrCUlOVEVMX0FNTF9LQkxfR1QyX0lEUyhpbmZvKQorIAorIC8qIENGTCBTICovCisgI2RlZmluZSBJTlRFTF9DRkxfU19HVDFfSURTKGluZm8pIFwKK0BAIC0zOTAsNiArNDkyLDkgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDNFOUEsIGluZm8pICAvKiBTUlYgR1QyICovCisgCisgLyogQ0ZMIEggKi8KKysjZGVmaW5lIElOVEVMX0NGTF9IX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0U5QywgaW5mbykKKysKKyAjZGVmaW5lIElOVEVMX0NGTF9IX0dUMl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4M0U5QiwgaW5mbyksIC8qIEhhbG8gR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDNFOTQsIGluZm8pICAvKiBIYWxvIEdUMiAqLworQEAgLTQwNywzMCArNTEyLDQzIEBACisgCisgLyogV0hML0NGTCBVIEdUMSAqLworICNkZWZpbmUgSU5URUxfV0hMX1VfR1QxX0lEUyhpbmZvKSBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUExLCBpbmZvKQorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFQTQsIGluZm8pCisgCisgLyogV0hML0NGTCBVIEdUMiAqLworICNkZWZpbmUgSU5URUxfV0hMX1VfR1QyX0lEUyhpbmZvKSBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEwLCBpbmZvKQorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFQTMsIGluZm8pCisgCisgLyogV0hML0NGTCBVIEdUMyAqLworICNkZWZpbmUgSU5URUxfV0hMX1VfR1QzX0lEUyhpbmZvKSBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEyLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMywgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTQsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEyLCBpbmZvKQorIAorICNkZWZpbmUgSU5URUxfQ0ZMX0lEUyhpbmZvKQkgICBcCisgCUlOVEVMX0NGTF9TX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfQ0ZMX1NfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9DRkxfSF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX0NGTF9IX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfQ0ZMX1VfR1QyX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9DRkxfVV9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1dITF9VX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfV0hMX1VfR1QyX0lEUyhpbmZvKSwgXAorLQlJTlRFTF9XSExfVV9HVDNfSURTKGluZm8pCisrCUlOVEVMX1dITF9VX0dUM19JRFMoaW5mbyksIFwKKysJSU5URUxfQU1MX0NGTF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0NNTF9HVDFfSURTKGluZm8pLCBcCisrCUlOVEVMX0NNTF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0NNTF9VX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX1VfR1QyX0lEUyhpbmZvKQorIAorIC8qIENOTCAqLworKyNkZWZpbmUgSU5URUxfQ05MX1BPUlRfRl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE1NCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDVBNUMsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQ0LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE0QywgaW5mbykKKysKKyAjZGVmaW5lIElOVEVMX0NOTF9JRFMoaW5mbykgXAorKwlJTlRFTF9DTkxfUE9SVF9GX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE1MSwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNTksIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQxLCBpbmZvKSwgXAorQEAgLTQ0MCwyMiArNTU4LDQ3IEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQyLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE0QSwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNTAsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQwLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NUE1NCwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDVBNUMsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQ0LCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NUE0QywgaW5mbykKKysJSU5URUxfVkdBX0RFVklDRSgweDVBNDAsIGluZm8pCisgCisgLyogSUNMICovCistI2RlZmluZSBJTlRFTF9JQ0xfMTFfSURTKGluZm8pIFwKKysjZGVmaW5lIElOVEVMX0lDTF9QT1JUX0ZfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDhBNTAsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTUxLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1QywgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDhBNUQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTU5LCBpbmZvKSwJXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1OCwgaW5mbyksCVwKKyAJSU5URUxfVkdBX0RFVklDRSgweDhBNTIsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVBLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1QiwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTcsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTU2LCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE3MSwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDhBNzAsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTcwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MywgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTQsIGluZm8pCisrCisrI2RlZmluZSBJTlRFTF9JQ0xfMTFfSURTKGluZm8pIFwKKysJSU5URUxfSUNMX1BPUlRfRl9JRFMoaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVELCBpbmZvKQorKworKy8qIEVITC9KU0wgKi8KKysjZGVmaW5lIElOVEVMX0VITF9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NDUwMCwgaW5mbyksCVwKKysJSU5URUxfVkdBX0RFVklDRSgweDQ1NzEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0NTUxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NDU0MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDRFNzEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0RTYxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NEU1MSwgaW5mbykKKysKKysvKiBUR0wgKi8KKysjZGVmaW5lIElOVEVMX1RHTF8xMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE0OSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNDAsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTU5LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE2MCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNjgsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTcwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE3OCwgaW5mbykKKyAKKyAjZW5kaWYgLyogX0k5MTVfUENJSURTX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvaW50ZWxfbW9kdWxlLmMgYi9zcmMvaW50ZWxfbW9kdWxlLmMKK2luZGV4IGE3MWMyZTQwYjc3NC4uZTBiOTRjMTkwMjU0IDEwMDY0NAorLS0tIGEvc3JjL2ludGVsX21vZHVsZS5jCisrKysgYi9zcmMvaW50ZWxfbW9kdWxlLmMKK0BAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfaWRfbWF0Y2ggaW50ZWxfZGV2aWNlX21hdGNoW10gPSB7CisgCUlOVEVMX0k5NDVHTV9JRFMoJmludGVsX2k5NDVfaW5mbyksCisgCisgCUlOVEVMX0czM19JRFMoJmludGVsX2czM19pbmZvKSwKKy0JSU5URUxfUElORVZJRVdfSURTKCZpbnRlbF9nMzNfaW5mbyksCisrCUlOVEVMX1BJTkVWSUVXX0dfSURTKCZpbnRlbF9nMzNfaW5mbyksCisgCisgCUlOVEVMX0k5NjVHX0lEUygmaW50ZWxfaTk2NV9pbmZvKSwKKyAJSU5URUxfSTk2NUdNX0lEUygmaW50ZWxfaTk2NV9pbmZvKSwKK2RpZmYgLS1naXQgYS90ZXN0L2RyaTMtdGVzdC5jIGIvdGVzdC9kcmkzLXRlc3QuYworaW5kZXggNzhlMTA1YThiNjRhLi41MjY1YTMwY2VhMWIgMTAwNjQ0CistLS0gYS90ZXN0L2RyaTMtdGVzdC5jCisrKysgYi90ZXN0L2RyaTMtdGVzdC5jCitAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9pZF9tYXRjaCBpZHNbXSA9IHsKKyAJSU5URUxfSTk0NUdNX0lEUygwMzEpLAorIAorIAlJTlRFTF9HMzNfSURTKDAzMyksCistCUlOVEVMX1BJTkVWSUVXX0lEUygwMzMpLAorKwlJTlRFTF9QSU5FVklFV19HX0lEUygwMzMpLAorIAorIAlJTlRFTF9JOTY1R19JRFMoMDQwKSwKKyAJSU5URUxfSTk2NUdNX0lEUygwNDApLAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMV9GaXgtYnVpbGQtb24taTY4Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDFfRml4LWJ1aWxkLW9uLWk2ODYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyOTE2ZjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMV9GaXgtYnVpbGQtb24taTY4Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gYTQxNGQ0ZTI0NDYxZGExY2I0Y2VmOGVlOTEwYmM1N2JhYjM2MGNlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCA2IE1hciAyMDE4IDEyOjA3OjQ2IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBvbiBpNjg2Ci0KLVByZXN1bWFibHkgdGhpcyBvbmx5IG1hdHRlcnMgZm9yIGk2ODYgYmVjYXVzZSBhbWQ2NCBpbXBsaWVzIHNzZTIsIGJ1dDoKLQotQlVJTERTVERFUlI6IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBnZW40X3ZlcnRleC5jOjM0OgotQlVJTERTVERFUlI6IGdlbjRfdmVydGV4LmM6IEluIGZ1bmN0aW9uICdlbWl0X3ZlcnRleCc6Ci1CVUlMRFNUREVSUjogc25hX3JlbmRlcl9pbmxpbmUuaDo0MDoyNjogZXJyb3I6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIGFsd2F5c19pbmxpbmUgJ3ZlcnRleF9lbWl0XzJzJzogdGFyZ2V0IHNwZWNpZmljIG9wdGlvbiBtaXNtYXRjaAotQlVJTERTVERFUlI6ICBzdGF0aWMgZm9yY2VfaW5saW5lIHZvaWQgdmVydGV4X2VtaXRfMnMoc3RydWN0IHNuYSAqc25hLCBpbnQxNl90IHgsIGludDE2X3QgeSkKLUJVSUxEU1RERVJSOiAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+Ci1CVUlMRFNUREVSUjogZ2VuNF92ZXJ0ZXguYzozMDg6MjU6IG5vdGU6IGNhbGxlZCBmcm9tIGhlcmUKLUJVSUxEU1RERVJSOiAgI2RlZmluZSBPVVRfVkVSVEVYKHgseSkgdmVydGV4X2VtaXRfMnMoc25hLCB4LHkpIC8qIFhYWCBhc3NlcnQoIXRvb19sYXJnZSh4LCB5KSk7ICovCi1CVUlMRFNUREVSUjogICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotQlVJTERTVERFUlI6IGdlbjRfdmVydGV4LmM6MzYwOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnT1VUX1ZFUlRFWCcKLUJVSUxEU1RERVJSOiAgIE9VVF9WRVJURVgoZHN0WCwgZHN0WSk7Ci1CVUlMRFNUREVSUjogICBefn5+fn5+fn5+Ci0KLVRoZSBidWcgaGVyZSBhcHBlYXJzIHRvIGJlIHRoYXQgZW1pdF92ZXJ0ZXgoKSBpcyBkZWNsYXJlZCAnc3NlMicgYnV0Ci12ZXJ0ZXhfZW1pdF8ycyBpcyBtZXJlbHkgYWx3YXlzX2lubGluZS4gZ2NjOCBkZWNpZGVzIHRoYXQgc2luY2UgeW91IHNhaWQKLWFsd2F5c19pbmxpbmUgeW91IG5lZWQgdG8gaGF2ZSBleHBsaWNpdGx5IGNsb25lZCBpdCBmb3IgZXZlcnkKLXBlcm11dGF0aW9uIG9mIHRhcmdldHMuIE1lcmVseSBzYXlpbmcgaW5saW5lIHNlZW1zIHRvIGRvIHRoZSBqb2Igb2YKLWNsb25pbmcgdmVydGV4X2VtaXRfMnMgYXMgbXVjaCBhcyBuZWNlc3NhcnkuCi0KLVNvIHRvIHJlaXRlcmF0ZTogaWYgeW91IHNheSBhbHdheXMtaW5saW5lLCBpdCB3b24ndCwgYnV0IGlmIHlvdSBqdXN0IHNheQotbWF5YmUgaW5saW5lLCBpdCB3aWxsLiBUaGFua3MgZ2NjLCB0aGF0J3MgaGVscGZ1bC4KLQotLSBhamF4Ci0KLVBhdGNoIHRha2VuIGZyb20gRmVkb3JhLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0KLS0tLQotIHNyYy9zbmEvY29tcGlsZXIuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zbmEvY29tcGlsZXIuaCBiL3NyYy9zbmEvY29tcGlsZXIuaAotaW5kZXggM2MxNzZhMTYuLmJjNDQ3YzdhIDEwMDY0NAotLS0tIGEvc3JjL3NuYS9jb21waWxlci5oCi0rKysgYi9zcmMvc25hL2NvbXBpbGVyLmgKLUBAIC0zMiw3ICszMiw3IEBACi0gI2RlZmluZSBsaWtlbHkoZXhwcikgKF9fYnVpbHRpbl9leHBlY3QgKCEhKGV4cHIpLCAxKSkKLSAjZGVmaW5lIHVubGlrZWx5KGV4cHIpIChfX2J1aWx0aW5fZXhwZWN0ICghIShleHByKSwgMCkpCi0gI2RlZmluZSBub2lubGluZSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0tI2RlZmluZSBmb3JjZV9pbmxpbmUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQotKyNkZWZpbmUgZm9yY2VfaW5saW5lIGlubGluZQotICNkZWZpbmUgZmFzdGNhbGwgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpCi0gI2RlZmluZSBtdXN0X2NoZWNrIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpCi0gI2RlZmluZSBjb25zdGFudCBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCi0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCmluZGV4IGJmOTAwOWIuLjdhYjIyMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC05LDE0ICs5LDEzIEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3MzBhZDU4ZDExYzdiYmFkOWE3MDY2ZDY5Zjc4MDhlIgogCi1TUkNSRVYgPSAiMzNlZTBjM2IyMWVhMjc5ZTA4ZDA4NjNmY2IyZTg3NGYwOTc0YjAwZSIKK1NSQ1JFViA9ICJmNjZkMzk1NDRiYjgzMzkxMzBjOTZkMjgyYTgwZjg3Y2ExNjA2Y2FmIgogUFYgPSAiMi45OS45MTcrZ2l0JHtTUkNQVn0iCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvZHJpdmVyL3hmODYtdmlkZW8taW50ZWwgXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX3FlbXV4ODYgPSAiZmlsZTovLzAxX0ZpeC1idWlsZC1vbi1pNjg2LnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoIFwKKyIKIAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwppbmRleCA1NGYwNGIxLi5lMzBmMDQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKQEAgLTEzLDcgKzEzLDkgQEAKIAogRklMRVNfJHtQTn0gKz0gIiAke2xpYmRpcn0veG9yZy9tb2R1bGVzL2RyaXZlcnMvKi5zbyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCitYT1JHQlVJTERDTEFTUyA/Pz0gImF1dG90b29scyIKK2luaGVyaXQgJHtYT1JHQlVJTERDTEFTU30gcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL3hzZXJ2ZXIKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2ZpbGVzL2xpYngxMS13aGl0ZXNwYWNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvZmlsZXMvbGlieDExLXdoaXRlc3BhY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5NzE0MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2ZpbGVzL2xpYngxMS13aGl0ZXNwYWNlLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy9saWIvbGlieDExL21lcmdlX3JlcXVlc3RzLzMzXQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBiNDE0NjljNWYwOGIxZjMzNjU2NjdmZjNjNDMwYjEwNGM5YjhlMjVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjIgSmFuIDIwMjAgMTc6MTE6MjMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCBsaWJYMTFdIGNwcHJ1bGVzLmluOiBzcXVhc2ggd2hpdGVzcGFjZSBpbiBnZW5lcmF0ZWQgZmlsZXMKKworQ1BQIGlzIHVzZWQgdG8gZ2VuZXJhdGUgZmlsZXMsIGJ1dCBhcyBjcHAgcmVhZHMgZmlsZXMgZnJvbSB0aGUgYnVpbGQgaG9zdCB0aGUKK291dHB1dCBoYXMgYSBudW1iZXIgb2YgYmxhbmsgbGluZXMgYXQgdGhlIGJlZ2lubmluZyB3aGljaCB2YXJpZXMgZGVwZW5kaW5nIG9uCit3aGF0IEdDQyBhbmQgZnJpZW5kcyBpcyB1c2VkLgorCitQYXRoYWxvZ2ljYWwgZXhhbXBsZToKKworICQgY3BwIC11bmRlZiAtdHJhZGl0aW9uYWwgL2Rldi9udWxsCisgIyAxICIvZGV2L251bGwiCisgIyAxICI8YnVpbHQtaW4+IgorICMgMSAiPGNvbW1hbmQtbGluZT4iCisgIyAzMSAiPGNvbW1hbmQtbGluZT4iCisgIyAxICIvdXNyL2luY2x1ZGUvc3RkYy1wcmVkZWYuaCIgMSAzIDQKKworICMgMTcgIi91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAzIDQKKworIFsgNDAgYmxhbmsgbGluZSBdCisKKyAjIDMyICI8Y29tbWFuZC1saW5lPiIgMgorICMgMSAiL2Rldi9udWxsIgorCitTbyBkZXBlbmRpbmcgb24gdGhlIGNvbnRlbnQgb2Ygc3RkYy1wcmVkZWYuaCBhbmQgd2hhdCBvdGhlciBoZWFkZXJzIENQUCB3aWxsCitsb2FkLCB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gdGhlIGdlbmVyYXRlcyBmaWxlcyB2YXJpZXMuIFRoaXMgY2FuIHJlc3VsdCBpbgorZGlmZmVyZW5jZXMgaW4gcmVwcm9kdWNpYmxlIGVudmlyb25tZW50cywgYW5kIGZpbGUgY29uZmxpY3RzIGluIG11bHRpbGliCitlbnZpcm9ubWVudHMuCisKK0FzIHdoaXRlc3BhY2UgaXMgaXJyZWxldmFudCB0byB0aGVzZSBtYWNoaW5lLXJlYWRhYmxlIGZpbGVzLCBleHRlbmQgdGhlIHNlZCB0bworanVzdCBkZWxldGUgYmxhbmsgbGluZXMuCistLS0KKyBjcHBydWxlcy5pbiB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY3BwcnVsZXMuaW4gYi9jcHBydWxlcy5pbgoraW5kZXggMDNkNjcwMWUuLmNlNmIzYzk4IDEwMDY0NAorLS0tIGEvY3BwcnVsZXMuaW4KKysrKyBiL2NwcHJ1bGVzLmluCitAQCAtMjMsNyArMjMsOCBAQCBDUFBfU0VEX01BR0lDID0gJChTRUQpIC1lICcvXlwjICAqWzAtOV1bMC05XSogICouKiQkL2QnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXlsJIF0qWENPTU1bXmEtekEtWjAtOV9dL3MvWENPTU0vXCMvJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAtZSAnL15bCSBdKlhIQVNIL3MvWEhBU0gvXCMvJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAtZSAncyxYMTFfTE9DQUxFREFUQURJUiwkKFgxMV9MT0NBTEVEQVRBRElSKSxnJyBcCistICAgICAgICAgICAgICAgICAgICAgICAtZSAnL1xAXEAkJC9zL1xAXEAkJC9cXC8nCisrICAgICAgICAgICAgICAgICAgICAgICAtZSAnL1xAXEAkJC9zL1xAXEAkJC9cXC8nIFwKKysgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXiQkL2QnCisgCisgLnByZToKKyAJQCQoTUtESVJfUCkgJChARCkKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1jb21wb3NlLWRhdGFfMS42LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtY29tcG9zZS1kYXRhXzEuNi44LmJiCmluZGV4IGNhYmI4NGUuLjNkOTdhZDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1jb21wb3NlLWRhdGFfMS42LjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWNvbXBvc2UtZGF0YV8xLjYuOC5iYgpAQCAtMTQsNyArMTQsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gImM1ZmE1YTg2YTIwZTM1OTFiZWQ2YzA0NjQ5OGQ0YjhmIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyODlhODQ1YzE4OWUyNTFlMGU4ODRjYzBmOTI2OWJiZTk3YzIzOGRmMzc0MWU4NTRlYzRjMTdjMjFlNDczZDUiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURyb3AteDExLWRlcGVuZGVuY2llcy5wYXRjaCIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURyb3AteDExLWRlcGVuZGVuY2llcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbGlieDExLXdoaXRlc3BhY2UucGF0Y2giCiAKIFhPUkdfUE4gPSAibGliWDExIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjkuYmIKaW5kZXggOGMyYTU3Yy4uZmY2MGE0MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi45LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuOS5iYgpAQCAtMTEsNyArMTEsOCBAQAogUEUgPSAiMSIKIAogU1JDX1VSSSArPSAiZmlsZTovL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfdGVzdHMucGF0Y2giCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbGlieDExLXdoaXRlc3BhY2UucGF0Y2giCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI1NWFkYmZiNmQ0MzcwZWNhYzVlNzA1OThjNGU3ZWVkMiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2M3ZThkMDAwZDYxOTNmYTVhZjU4MGQ1MGQ2ODkzODBiODI4NzA1MjI3MGY1YmIyNmE1ZmI2YjU4YjJiZWQxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuMTAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZkOWMzNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjEwLjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJHZW5lcmljIFhLQiBrZXltYXAgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYnhrYmNvbW1vbiBpcyBhIGtleW1hcCBjb21waWxlciBhbmQgc3VwcG9ydCBsaWJyYXJ5IHdoaWNoIFwKK3Byb2Nlc3NlcyBhIHJlZHVjZWQgc3Vic2V0IG9mIGtleW1hcHMgYXMgZGVmaW5lZCBieSB0aGUgWEtCIHNwZWNpZmljYXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54a2Jjb21tb24ub3JnIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTUyNWVkOTgwOWUxZjhhMDdjZjRiY2U4YjA5ZThiODciCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjJkOWFkM2E0NmIzMTcxMzhiNWU3MmE5MWNmMTA1NDUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YzM2MzBjZGMzOGZiNDczNGNkNTdmYTM0OWU5MjI0NGY1YWUzODYyODEzZTUzM2NlZGJkODY3MjFhMGI2ZjIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy8iCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnCisKK0VYVFJBX09FTUVTT04gPSAiLURlbmFibGUtZG9jcz1mYWxzZSIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURlbmFibGUteDExPXRydWUsLURlbmFibGUteDExPWZhbHNlLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURlbmFibGUtd2F5bGFuZD10cnVlLC1EZW5hYmxlLXdheWxhbmQ9ZmFsc2Usd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scywiCisKKyMgRml4IGEgZm9sbG93aW5nIHJ1bnRpbWUgZXJyb3I6CisjIHhrYmNvbW1vbjogRVJST1I6IGNvdWxkbid0IGZpbmQgYSBDb21wb3NlIGZpbGUgZm9yIGxvY2FsZSAiQyIKK1JERVBFTkRTXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYngxMS1sb2NhbGUnLCAnbGlieDExLWNvbXBvc2UtZGF0YScsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYwOGZkNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAotcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2M0NDA5MDU4ZGZkMjAzZjY0MWE1NjMzNThlMDE4N2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjBkZGNmZjkzMmI3ZmQzNTI3NTJkNTFhNWM0ZjA0ZjNkMDQwMzIzMGE1ODRkZjlhMmUwZDVlZDg3YzQ4NmM4YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKLQotIyBGaXggYSBmb2xsb3dpbmcgcnVudGltZSBlcnJvcjoKLSMgeGtiY29tbW9uOiBFUlJPUjogY291bGRuJ3QgZmluZCBhIENvbXBvc2UgZmlsZSBmb3IgbG9jYWxlICJDIgotUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieDExLWxvY2FsZScsICdsaWJ4MTEtY29tcG9zZS1kYXRhJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZDgyOWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi0jIGxpYnhwbSByZXF1aXJlcyB4Z2V0dGV4dCB0byBidWlsZAotaW5oZXJpdCBnZXR0ZXh0Ci0KLVNVTU1BUlkgPSAiWHBtOiBYIFBpeG1hcCBleHRlbnNpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibGliWHBtIHByb3ZpZGVzIHN1cHBvcnQgYW5kIGNvbW1vbiBvcGVyYXRpb24gZm9yIHRoZSBYUE0gXAotcGl4bWFwIGZvcm1hdCwgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBpbiBsZWdhY3kgWCBhcHBsaWNhdGlvbnMuICBYUE0gaXMgXAotYW4gZXh0ZW5zaW9uIG9mIHRoZSBtb25vY2hyb21lIFhCTSBiaXRtYXAgc3BlY2lmaWNpZWQgaW4gdGhlIFggXAotcHJvdG9jb2wuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZjQyNzBiMDEyZWNkNGFiMWExNjRmNWY0ZWQ2Y2Y3IgotREVQRU5EUyArPSAibGlieGV4dCBsaWJzbSBsaWJ4dCBnZXR0ZXh0LW5hdGl2ZSIKLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWHBtIgotCi1QQUNLQUdFUyA9KyAic3hwbSBjeHBtIgotRklMRVNfY3hwbSA9ICIke2JpbmRpcn0vY3hwbSIKLUZJTEVTX3N4cG0gPSAiJHtiaW5kaXJ9L3N4cG0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMGY0NjI3NjcyZWRiMmJkMDZhNzQ5ZjExYWE5NzMwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDZhNmRlM2RhNDhkZThkMWJiNzM4YWI2YmU0YWQ2N2Y3Y2IwOTg2YzM5YmQzZjdkNTFkZDI0Zjc4NTRiZGVjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYThlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEzLmJiCkBAIC0wLDAgKzEsMjcgQEAKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCisjIGxpYnhwbSByZXF1aXJlcyB4Z2V0dGV4dCB0byBidWlsZAoraW5oZXJpdCBnZXR0ZXh0CisKK1NVTU1BUlkgPSAiWHBtOiBYIFBpeG1hcCBleHRlbnNpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWHBtIHByb3ZpZGVzIHN1cHBvcnQgYW5kIGNvbW1vbiBvcGVyYXRpb24gZm9yIHRoZSBYUE0gXAorcGl4bWFwIGZvcm1hdCwgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBpbiBsZWdhY3kgWCBhcHBsaWNhdGlvbnMuICBYUE0gaXMgXAorYW4gZXh0ZW5zaW9uIG9mIHRoZSBtb25vY2hyb21lIFhCTSBiaXRtYXAgc3BlY2lmaWNpZWQgaW4gdGhlIFggXAorcHJvdG9jb2wuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZjQyNzBiMDEyZWNkNGFiMWExNjRmNWY0ZWQ2Y2Y3IgorREVQRU5EUyArPSAibGlieGV4dCBsaWJzbSBsaWJ4dCBnZXR0ZXh0LW5hdGl2ZSIKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWHBtIgorCitQQUNLQUdFUyA9KyAic3hwbSBjeHBtIgorRklMRVNfY3hwbSA9ICIke2JpbmRpcn0vY3hwbSIKK0ZJTEVTX3N4cG0gPSAiJHtiaW5kaXJ9L3N4cG0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZjBlY2Y4ZDEwM2Q1MjhjZmM4MDNhYTQ3NTEzN2FmYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2QxZGE1NzU4OGI2Y2I3MTQ1MGVmZjIyNzNlZjZiNjU3NTM3YTlhYzRkMDJkMDAxNDIyODg0NWI5MzVhYzI1IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4zLmJiCmluZGV4IDg1YTQ4ZTQuLmNjNDU2OTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYgpAQCAtMTEsNiArMTEsOCBAQAogCiBERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSIKIAorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtc2hhcmVkLW1lbW9yeS1kaXI9L2Rldi9zaG0iCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogU1JDX1VSSVttZDVzdW1dID0gIjQyZGRhODAxNjk0M2RjMTJhZmYyYzAzYTAzNmUwOTM3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbi8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2gKaW5kZXggNzgyYzFkYi4uMjNjYmY1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS10ZXN0LXV0aWxzLUNoZWNrLWZvci1GRV9JTlZBTElELWRlZmluaXRpb24tYmVmb3JlLXVzLnBhdGNoCkBAIC03LDcgKzcsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9waXhtYW4vcGl4bWFuL21lcmdlX3JlcXVlc3RzLzI0XQogCiAgdGVzdC91dGlscy5jIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbl8wLjM4LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW5fMC4zOC40LmJiCmluZGV4IDgyYzJlNzMuLjIyZTE5YmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbl8wLjM4LjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzguNC5iYgpAQCAtMSw0MCArMSwzNiBAQAogU1VNTUFSWSA9ICJQaXhtYW46IFBpeGVsIE1hbmlwdWxhdGlvbiBsaWJyYXJ5IgotCiBERVNDUklQVElPTiA9ICJQaXhtYW4gcHJvdmlkZXMgYSBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgcGl4ZWwgcmVnaW9ucyBcCiAtLSBhIHNldCBvZiBZLVggYmFuZGVkIHJlY3RhbmdsZXMsIGltYWdlIGNvbXBvc2l0aW5nIHVzaW5nIHRoZSBcCiBQb3J0ZXIvRHVmZiBtb2RlbCBhbmQgaW1wbGljaXQgbWFzayBnZW5lcmF0aW9uIGZvciBnZW9tZXRyaWMgcHJpbWl0aXZlcyBcCiBpbmNsdWRpbmcgdHJhcGV6b2lkcywgdHJpYW5nbGVzLCBhbmQgcmVjdGFuZ2xlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBpeG1hbi5vcmciCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJ6bGliIgogCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQVJNLXFlbXUtcmVsYXRlZC13b3JrYXJvdW5kcy1pbi1jcHUtZmVhdHVyZXMtZGV0ZWN0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjY3YTdhZjI5MGY5M2Y2NDNhMWJjNzQ0OTBkOWZkZDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE2NmQ2ZmQ2ZTQwYWVlNzBmN2JkMDJlNGY4Zjc2ZmMzZjAwNmVjODc5ZDM0NmJhZTZhNzIzMDI1Y2ZiZGRlNyIKIAogIyBzZWUgaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzLyAtIG9ubHkgZXZlbiBtaW5vciB2ZXJzaW9ucyBhcmUgc3RhYmxlCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwaXhtYW4tKD9QPHB2ZXI+XGQrXC4oXGQqWzAyNDY4XSkrKFwuXGQrKSspIgogCitQRSA9ICIxIgorCiBMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIFBEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwOTZjNzY5YWUwY2JiNWZjYjk0ZWM0NjhiZTExYjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGl4bWFuL3BpeG1hbi1tYXRyaXguYztlbmRsaW5lPTIxO21kNT00YTAxOGRmZjNlNGUyNTMwMjcyNGM4OGZmOTVjMjQ1NiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waXhtYW4vcGl4bWFuLWFybS1uZW9uLWFzbS5oO2VuZGxpbmU9MjQ7bWQ1PTlhOWNjMWU1MWFiYmYxZGE1OGY0ZDk1MjhlYzlkNDliIFwKICAgICAgICAgICAgICAgICAgICAiCi1ERVBFTkRTICs9ICJ6bGliIGxpYnBuZyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworIyBUaGVzZSBhcmUgZm9yIHRoZSB0ZXN0cyBhbmQgZGVtb3MsIHdoaWNoIHdlIGRvbid0IGluc3RhbGwKK0VYVFJBX09FTUVTT04gPSAiLURndGs9ZGlzYWJsZWQgLURsaWJwbmc9ZGlzYWJsZWQiCisjIGxkOiBwaXhtYW4vbGlicGl4bWFuLW1teC5hKHBpeG1hbi1tbXguYy5vKToKKyMgbGlua2luZyBtaXBzOmxvb25nc29uXzJmIG1vZHVsZSB3aXRoIHByZXZpb3VzIG1pcHM6aXNhNjQgbW9kdWxlcyAKK0VYVFJBX09FTUVTT04gKz0gIi1EbG9vbmdzb24tbW1pPWRpc2FibGVkIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBFID0gIjEiCi0KLUlXTU1YVCA9ICItLWRpc2FibGUtYXJtLWl3bW14dCIKLUxPT05HU09OX01NSSA9ICItLWRpc2FibGUtbG9vbmdzb24tbW1pIgotIyBJZiB0YXJnZXQgc3VwcG9ydHMgbmVvbiB0aGVuIGRpc2FibGUgdGhlICdzaW1kJyAoaWUgVkZQdjIpIGZhbGxiYWNrLCBvdGhlcndpc2UgZGlzYWJsZSBuZW9uLgotTkVPTiA9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZGlzYWJsZS1hcm0tc2ltZCIsICItLWRpc2FibGUtYXJtLW5lb24iICxkKX0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrICR7SVdNTVhUfSAke0xPT05HU09OX01NSX0gJHtORU9OfSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWd0ayIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS1kaXNhYmxlLWd0ayIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtQVJNLXFlbXUtcmVsYXRlZC13b3JrYXJvdW5kcy1pbi1jcHUtZmVhdHVyZXMtZGV0ZWN0aS5wYXRjaCBcCi0JICAgIGZpbGU6Ly8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTZhMzUwYThhNDAxMTZkZGY2NzYzMmExZDI2MjM3MTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRhYmI3ZmEyNTQxYWYyNGQ5YzNiMzRiZjc1ZDZhYzYwY2M5NGFjNDQxMDA2MWJiYjI5NWI2NmEyOTIyMTU1MCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIxNTZhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgotCi1ERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCi1XaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKLWZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAotV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAotc3lzdGVtcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCi0KLVNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzE2NzUzZTM1ZDM5MDZkMDQyYzc0MjMwNjEyZWFiOWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjkwZGFlYzhmZWE2MzUyNmMwNzYyMGM5MGU2ZjNmMTBhYWUzNGU5NGI2ZGI2ZTMwOTA2MTczNDgwNzIxOTAxZiIKLQotU0VDVElPTiA9ICJ4MTEvbGlicyIKLURFUEVORFMgPSAidXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCi0gICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzZDY5NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yOC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgorCitERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCitXaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKK2ZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAorV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAorc3lzdGVtcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNWE5NjhhYjc3ODQ2ZmY4NWEwNDI0MjQxMGIyYTYxZGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlhZGIyNWIwZmM2NGU0MDc1ZjhlYzBlYWI4ZDg2OTg5MjQxOWY0NzRmOTFmYjY5ZGIxNzEzZGUyMDYyYmRjZSIKKworU0VDVElPTiA9ICJ4MTEvbGlicyIKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmctcHJvdG8tY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZy1wcm90by1jb21tb24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTQxN2M5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZy1wcm90by1jb21tb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJYIHByb3RvY29sIGhlYWRlcnM6ICR7WE9SR19QTn0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lngub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD14b3JnIgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotTElDRU5TRSA9ICJNSVQtWCIKLQotWE9SR19QTiA9ICIke0JQTn0iCi0KLVNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9wcm90by8ke1hPUkdfUE59LSR7UFZ9LnRhci5iejIiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1hPUkdfUE59LSR7UFZ9IgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZm9wIgotCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgKz0gIi0td2l0aG91dC1mb3AgLS13aXRob3V0LXhtbHRvIC0td2l0aC14bWx0byIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbeG1sdG9dID0gIi0td2l0aC14bWx0bywgLS13aXRob3V0LXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotCi0jICR7UE59IGlzIGVtcHR5IHNvIHdlIG5lZWQgdG8gdHdlYWsgLWRldiBhbmQgLWRiZyBwYWNrYWdlIGRlcGVuZGVuY2llcwotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDE5LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDE5LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhY2JlODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG9fMjAxOS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYIFdpbmRvdyBTeXN0ZW0gdW5pZmllZCBwcm90b2NvbCBkZWZpbml0aW9ucyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBoZWFkZXJzIGFuZCBzcGVjaWZpY2F0aW9uIGRvY3VtZW50cyBkZWZpbmluZyBcCi10aGUgY29yZSBwcm90b2NvbCBhbmQgKG1hbnkpIGV4dGVuc2lvbnMgZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0iCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy14MTFwcm90bzttZDU9YjllMDUxMTA3ZDU2Mjg5NjY3MzlhMGIyZTliMzI2NzYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMDJkY2FmZjQ4YjQxNDFiOTQ5YWM5OWRmYzM0NGQ4NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NmVjZDAxNTZjNTYxZDQxZThhYTg3Y2U3OTM0MDkxMGNkZjM4MzczYjc1OWU3MzdmY2JiYTVkZjUwOGU3YjhlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDIwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDIwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxYmM5MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMjAuMS5iYgpAQCAtMCwwICsxLDI3IEBACisKK1NVTU1BUlkgPSAiWCBXaW5kb3cgU3lzdGVtIHVuaWZpZWQgcHJvdG9jb2wgZGVmaW5pdGlvbnMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGhlYWRlcnMgYW5kIHNwZWNpZmljYXRpb24gZG9jdW1lbnRzIGRlZmluaW5nIFwKK3RoZSBjb3JlIHByb3RvY29sIGFuZCAobWFueSkgZXh0ZW5zaW9ucyBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueC5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhvcmciCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitMSUNFTlNFID0gIk1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcteDExcHJvdG87bWQ1PWI5ZTA1MTEwN2Q1NjI4OTY2NzM5YTBiMmU5YjMyNjc2IgorCitTUkNfVVJJID0gIiR7WE9SR19NSVJST1J9L2luZGl2aWR1YWwvcHJvdG8vJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjlmNGZhNzhmNTNiNTJiM2VmZGM3MWViZDk1MDZiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NGExNTNmMTM5MDM1YTM3NmMwNzU4NDVkZDA1ODA0OTE3NzIxMmRhOTRkN2E5NzA3Y2Y5NDY4MzY3YjY5OWQyIgorCitpbmhlcml0IG1lc29uCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xlZ2FjeV0gPSAiLURsZWdhY3k9dHJ1ZSwtRGxlZ2FjeT1mYWxzZSIKKworIyBEYXRhZGlyIG9ubHkgdXNlZCB0byBpbnN0YWxsIHBjIGZpbGVzLCAkZGF0YWRpci9wa2djb25maWcKK2RhdGFkaXI9IiR7bGliZGlyfSIKKyMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHMveG9yZy5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHMveG9yZy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDNjNjRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3FlbXVtaXBzL3hvcmcuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotU2VjdGlvbiAiRmlsZXMiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIkRldmljZSIKLSAgICBJZGVudGlmaWVyICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIERyaXZlciAgICAgICAgImZiZGV2IgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJNb25pdG9yIgotICAgIElkZW50aWZpZXIgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBPcHRpb24gICAgICAgICJEUE1TIgotICAgICMgMTAyNHg2MDAgNTkuODUgSHogKENWVCkgaHN5bmM6IDM3LjM1IGtIejsgcGNsazogNDkuMDAgTUh6Ci0gICAgTW9kZWxpbmUgIjEwMjR4NjAwXzYwLjAwIiAgIDQ5LjAwICAxMDI0IDEwNzIgMTE2OCAxMzEyICA2MDAgNjAzIDYxMyA2MjQgLWhzeW5jICt2c3luYwotICAgICMgNjQweDQ4MCBAIDYwSHogKEluZHVzdHJ5IHN0YW5kYXJkKSBoc3luYzogMzEuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAyNS4yICA2NDAgIDY1NiAgNzUyICA4MDAgICAgNDgwICA0OTAgIDQ5MiAgNTI1IC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3Mkh6IChWRVNBKSBoc3luYzogMzcuOWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY2NCAgNzA0ICA4MzIgICAgNDgwICA0ODkgIDQ5MSAgNTIwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3NUh6IChWRVNBKSBoc3luYzogMzcuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY1NiAgNzIwICA4NDAgICAgNDgwICA0ODEgIDQ4NCAgNTAwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA4NUh6IChWRVNBKSBoc3luYzogNDMuM2tIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzNi4wICA2NDAgIDY5NiAgNzUyICA4MzIgICAgNDgwICA0ODEgIDQ4NCAgNTA5IC1oc3luYyAtdnN5bmMKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2NyZWVuIgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIERldmljZSAgICAgICAgIkdyYXBoaWNzIENvbnRyb2xsZXIiCi0gICAgTW9uaXRvciAgICAgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBEZWZhdWx0RGVwdGggIDE2Ci0gICAgU3ViU2VjdGlvbiAiRGlzcGxheSIKLSAgICAgICAgTW9kZXMgICAgICI2NDB4NDgwIgotICAgIEVuZFN1YlNlY3Rpb24KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2VydmVyTGF5b3V0IgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgTGF5b3V0IgotICAgIFNjcmVlbiAgICAgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIE9wdGlvbiAgICAgICAgICJBbGxvd0VtcHR5SW5wdXQiICJubyIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3FlbXVtaXBzNjQveG9yZy5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHM2NC94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjk0ZGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHM2NC94b3JnLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLVNlY3Rpb24gIkZpbGVzIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJEZXZpY2UiCi0gICAgSWRlbnRpZmllciAgICAiR3JhcGhpY3MgQ29udHJvbGxlciIKLSAgICBEcml2ZXIgICAgICAgICJmYmRldiIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiTW9uaXRvciIKLSAgICBJZGVudGlmaWVyICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgT3B0aW9uICAgICAgICAiRFBNUyIKLSAgICAjIDEwMjR4NjAwIDU5Ljg1IEh6IChDVlQpIGhzeW5jOiAzNy4zNSBrSHo7IHBjbGs6IDQ5LjAwIE1IegotICAgIE1vZGVsaW5lICIxMDI0eDYwMF82MC4wMCIgICA0OS4wMCAgMTAyNCAxMDcyIDExNjggMTMxMiAgNjAwIDYwMyA2MTMgNjI0IC1oc3luYyArdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA2MEh6IChJbmR1c3RyeSBzdGFuZGFyZCkgaHN5bmM6IDMxLjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMjUuMiAgNjQwICA2NTYgIDc1MiAgODAwICAgIDQ4MCAgNDkwICA0OTIgIDUyNSAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzJIeiAoVkVTQSkgaHN5bmM6IDM3LjlrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NjQgIDcwNCAgODMyICAgIDQ4MCAgNDg5ICA0OTEgIDUyMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzVIeiAoVkVTQSkgaHN5bmM6IDM3LjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NTYgIDcyMCAgODQwICAgIDQ4MCAgNDgxICA0ODQgIDUwMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgODVIeiAoVkVTQSkgaHN5bmM6IDQzLjNrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzYuMCAgNjQwICA2OTYgIDc1MiAgODMyICAgIDQ4MCAgNDgxICA0ODQgIDUwOSAtaHN5bmMgLXZzeW5jCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIlNjcmVlbiIKLSAgICBJZGVudGlmaWVyICAgICJEZWZhdWx0IFNjcmVlbiIKLSAgICBEZXZpY2UgICAgICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIE1vbml0b3IgICAgICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgRGVmYXVsdERlcHRoICAgIDE2Ci0gICAgU3ViU2VjdGlvbiAiRGlzcGxheSIKLSAgICAgICAgTW9kZXMgICAgICI2NDB4NDgwIgotICAgIEVuZFN1YlNlY3Rpb24KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2VydmVyTGF5b3V0IgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgTGF5b3V0IgotICAgIFNjcmVlbiAgICAgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIE9wdGlvbiAgICAgICAgICJBbGxvd0VtcHR5SW5wdXQiICJubyIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKaW5kZXggYTBhZTY1Yy4uYjRmMDc2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKQEAgLTExNyw2ICsxMTcsNyBAQAogICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9L2V0Yy9YMTEgXAogICAgICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXI9L3ZhciBcCiAgICAgICAgICAgICAgICAgIC0td2l0aC14a2Itb3V0cHV0PS92YXIvbGliL3hrYiBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1vcy1uYW1lPUxpbnV4IFwKICIKIAogT1BFTkdMX1BLR0NPTkZJR1MgPSAiZHJpIGdseCBnbGFtb3IgZHJpMyB4c2htZmVuY2UiCkBAIC0xNTEsNiArMTUyLDcgQEAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAkjIEl0cyBhc3N1bWVkIGJhc2UtZmlsZXMgY3JlYXRlcyB0aGlzIGZvciB1cwogCXJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy8KKyAgICAgICAgc2VkIC1pIC1lICdzLCR7bGliZGlyfS94b3JnL21vZHVsZXMsJHtwcmVmaXh9L2xpYioveG9yZy9tb2R1bGVzLCcgJHtEfSR7bWFuZGlyfS9tYW41L3hvcmcuY29uZi41CiB9CiAKICMgQWRkIHJ1bnRpbWUgcHJvdmlkZXMgZm9yIHRoZSBBQkkgdmVyc2lvbnMgb2YgdGhlIHZpZGVvIGFuZCBpbnB1dCBzdWJzeXN0ZW1zLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWNvbXBpbGVyLmgtRG8tbm90LWluY2x1ZGUtc3lzLWlvLmgtb24tQVJNLXdpdGgtZ2xpYmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5YTRmMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gMmJhOTUxMDcyMWI3YTc2Y2I3ZmU1MDc0NDlmYTBhYzk5N2E0Y2NlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE9saXZpZXIgRm91cmRhbiA8b2ZvdXJkYW5AcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMSBKdWwgMjAxOSAxMzoyMDozOSArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb21waWxlci5oOiBEbyBub3QgaW5jbHVkZSBzeXMvaW8uaCBvbiBBUk0gd2l0aCBnbGliYwotCi08c3lzL2lvLmg+IG9uIEFSTSBoYXNuJ3Qgd29ya2VkIGZvciBhIGxvbmcsIGxvbmcgdGltZSwgc28gaXQgd2FzIHJlbW92ZWQKLWl0IGZyb20gZ2xpYmMgdXBzdHJlYW0uCi0KLVJlbW92ZSB0aGUgaW5jbHVkZSB0byBhdm9pZCBhIGNvbXBpbGF0aW9uIGZhaWx1cmUgb24gQVJNIHdpdGggZ2xpYmMuCi0KLVNpZ25lZC1vZmYtYnk6IE9saXZpZXIgRm91cmRhbiA8b2ZvdXJkYW5AcmVkaGF0LmNvbT4KLUNsb3NlczogaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9pc3N1ZXMvODQwCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL2NvbW1pdC9mZTRjZDBlN2Y1YzU4ZmE5NGRiMzYzMjZhYWRjMWJkNGU2ZDczZWJhXQotLS0tCi0gaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaCB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3hmcmVlODYvY29tbW9uL2NvbXBpbGVyLmggYi9ody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oCi1pbmRleCA3MTQ0YzZhLi4yYjIwMDhiIDEwMDY0NAotLS0tIGEvaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaAotKysrIGIvaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaAotQEAgLTc1OCwzNiArNzU4LDYgQEAgaW5sKHVuc2lnbmVkIHNob3J0IHBvcnQpCi0gICAgIHJldHVybiB4Zjg2UmVhZE1taW8zMkxlKCh2b2lkICopIGlvQmFzZSwgcG9ydCk7Ci0gfQotIAotLSNlbGlmIGRlZmluZWQoX19hcm1fXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCi0tCi0tLyogZm9yIExpbnV4IG9uIEFSTSwgd2UgdXNlIHRoZSBMSUJDIGlueC9vdXR4IHJvdXRpbmVzICovCi0tLyogbm90ZSB0aGF0IHRoZSBhcHByb3ByaWF0ZSBzZXR1cCB2aWEgImlvcGVybSIgbmVlZHMgdG8gYmUgZG9uZSAqLwotLS8qICAqYmVmb3JlKiBhbnkgaW54L291dHggaXMgZG9uZS4gKi8KLS0KLS0jaW5jbHVkZSA8c3lzL2lvLmg+Ci0tCi0tc3RhdGljIF9faW5saW5lX18gdm9pZAotLXhmX291dGIodW5zaWduZWQgc2hvcnQgcG9ydCwgdW5zaWduZWQgY2hhciB2YWwpCi0tewotLSAgICBvdXRiKHZhbCwgcG9ydCk7Ci0tfQotLQotLXN0YXRpYyBfX2lubGluZV9fIHZvaWQKLS14Zl9vdXR3KHVuc2lnbmVkIHNob3J0IHBvcnQsIHVuc2lnbmVkIHNob3J0IHZhbCkKLS17Ci0tICAgIG91dHcodmFsLCBwb3J0KTsKLS19Ci0tCi0tc3RhdGljIF9faW5saW5lX18gdm9pZAotLXhmX291dGwodW5zaWduZWQgc2hvcnQgcG9ydCwgdW5zaWduZWQgaW50IHZhbCkKLS17Ci0tICAgIG91dGwodmFsLCBwb3J0KTsKLS19Ci0tCi0tI2RlZmluZSBvdXRiIHhmX291dGIKLS0jZGVmaW5lIG91dHcgeGZfb3V0dwotLSNkZWZpbmUgb3V0bCB4Zl9vdXRsCi0tCi0gI2VsaWYgZGVmaW5lZChfX25kczMyX18pCi0gCi0gLyoKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1kcm1tb2RlX2Rpc3BsYXkuYy1hZGQtbWlzc2luZy1taS5oLWluY2x1ZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtZHJtbW9kZV9kaXNwbGF5LmMtYWRkLW1pc3NpbmctbWkuaC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiOGU0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtZHJtbW9kZV9kaXNwbGF5LmMtYWRkLW1pc3NpbmctbWkuaC1pbmNsdWRlLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Zyb20gODQzMzg0NDQxNzljYWI3ZWRlMTI1MmExMWI2NmUzYjhmNjU3ZTZhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCA3IEZlYiAyMDIwIDIwOjM2OjQ1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGRybW1vZGVfZGlzcGxheS5jOiBhZGQgbWlzc2luZyBtaS5oIGluY2x1ZGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGh3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcm1tb2RlX2Rpc3BsYXkuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jIGIvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jCitpbmRleCBlMThjYzM3Li4zNDQ1Y2NlIDEwMDY0NAorLS0tIGEvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jCisrKysgYi9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgInhmODZDcnRjLmgiCisgI2luY2x1ZGUgImRybW1vZGVfZGlzcGxheS5oIgorICNpbmNsdWRlICJwcmVzZW50LmgiCisrI2luY2x1ZGUgIm1pLmgiCisgCisgI2luY2x1ZGUgPGN1cnNvcnN0ci5oPgorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjIwLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RlNmQyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLXJlcXVpcmUgeHNlcnZlci14b3JnLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS14Zjg2cGNpQnVzLmMtdXNlLUludGVsLWRkeC1vbmx5LWZvci1wcmUtZ2VuNC1oYXJkd2FyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC14dGVzdC1Jbml0aWFsaXplLWFycmF5LXdpdGgtYnJhY2VzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbXBpbGVyLmgtRG8tbm90LWluY2x1ZGUtc3lzLWlvLmgtb24tQVJNLXdpdGgtZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3Nka3N5bXMtbm8tYnVpbGQtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzlmYzdlMjFlMTEyODZkYmVkZDIyYzAwZGY2NTIxMzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTgxZDgyNDNmMzdlNzVhMDNkNGY4YzU1Zjk2ZDBiYzI1ODAyYmU2ZWM0NWMzYmZhNWNiNjE0YzZkMDFiYWM5ZCIKLQotIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgotIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KLQotUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjIwLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjdmYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjIwLjguYmIKQEAgLTAsMCArMSwzNCBAQAorcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC14dGVzdC1Jbml0aWFsaXplLWFycmF5LXdpdGgtYnJhY2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Nka3N5bXMtbm8tYnVpbGQtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRybW1vZGVfZGlzcGxheS5jLWFkZC1taXNzaW5nLW1pLmgtaW5jbHVkZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNzcwYWVjNjAwMTE2NDQ0YTk1M2ZmNjMyZjUxZjgzOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMTdiNjQ2YmVlNGJhMGZiNzg1MGMxY2M1NWIxOGUzZTg1MTNlZDVjMDJiZGYzOGRhN2UxMDdmODRlMmQwMTQ2IgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCisjIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCisjIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgorCitSUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL21ha2UtYnR0LXNjcmlwdHMtcHl0aG9uMy1yZWFkeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjBjMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL21ha2UtYnR0LXNjcmlwdHMtcHl0aG9uMy1yZWFkeS5wYXRjaApAQCAtMCwwICsxLDE5NyBAQAorRnJvbSA3MGQ1Y2EyZDVmM2Q2Yjk3YzExYzY0MWI3ZTBjNTgzNjk4MzIxOWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXJpYyBTYW5kZWVuIDxzYW5kZWVuQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDI4IE1hciAyMDE4IDE1OjI2OjM2IC0wNTAwCitTdWJqZWN0OiBbb2UtY29yZV1bUEFUQ0ggMS8xXSBtYWtlIGJ0dCBzY3JpcHRzIHB5dGhvbjMtcmVhZHkKKworTWFueSBkaXN0cmlidXRpb25zIGFyZSBtb3ZpbmcgdG8gcHl0aG9uMyBieSBkZWZhdWx0LiAgSGVyZSdzCithbiBhdHRlbXB0IHRvIG1ha2UgdGhlIHB5dGhvbiBzY3JpcHRzIGluIGJsa3RyYWNlIHB5dGhvbjMtcmVhZHkuCisKK01vc3Qgb2YgdGhpcyB3YXMgZG9uZSB3aXRoIGF1dG9tYXRlZCB0b29scy4gIEkgaGFuZCBmaXhlZCBzb21lCitzcGFjZS12cyB0YWIgaXNzdWVzLCBhbmQgY2FzdCBhbiBhcnJheSBpbmRleCB0byBpbnRlZ2VyLiAgSXQKK3Bhc3NlcyBydWRpbWVudGFyeSB0ZXN0aW5nIHdoZW4gcnVuIHVuZGVyIHB5dGhvbjIuNyBhcyB3ZWxsCithcyBweXRob24zLgorCitUaGlzIGRvZXNuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgc2hlYmFuZ3MsIGl0IGxlYXZlcyB0aGVtIGJvdGgKK2ludm9raW5nIHdoYXRldmVyICJlbnYgcHl0aG9uIiBjb3VnaHMgdXAgb24gdGhlIHN5c3RlbS4KKworU2lnbmVkLW9mZi1ieTogRXJpYyBTYW5kZWVuIDxzYW5kZWVuQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKZW5zIEF4Ym9lIDxheGJvZUBrZXJuZWwuZGs+CisKK1VuY2hhbmdlZCBleGNlcHQgdG8gbW9kaWZ5IHNoZWJhbmdzIHRvIHVzZSBweXRob24zIHNpbmNlCitvZS1jb3JlIGRvZXMgbm90IHN1cHBvcnQgcHl0aG9uMiBhbnltb3JlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQua2VybmVsLmRrL2Jsa3RyYWNlLmdpdCBjb21taXQgNzBkNWNhMmQ1Li4uXQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGJ0dC9ibm9fcGxvdC5weSB8IDI4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBidHQvYnR0X3Bsb3QucHkgfCAyMiArKysrKysrKysrKysrLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKKworLS0tIGdpdC5vcmlnL2J0dC9ibm9fcGxvdC5weQorKysrIGdpdC9idHQvYm5vX3Bsb3QucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIGJ0dCBibGtubyBwbG90dGluZyBpbnRlcmZhY2UKKyAjCitAQCAtMzgsNiArMzgsOCBAQCBhdXRvbWF0aWNhbGx5IHB1c2ggdGhlIGtleXMgdW5kZXIgdGhlIGdyCisgVG8gZXhpdCB0aGUgcGxvdHRlciwgZW50ZXIgJ3F1aXQnIG9yIF5EIGF0IHRoZSAnZ251cGxvdD4gJyBwcm9tcHQuCisgIiIiCisgCisrZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgaW1wb3J0IGdldG9wdCwgZ2xvYiwgb3MsIHN5cywgdGVtcGZpbGUKKyAKKyB2ZXJib3NlCT0gMAorQEAgLTYwLDE0ICs2MiwxNCBAQCBkZWYgcGFyc2VfYXJncyhpbl9hcmdzKToKKyAKKyAJdHJ5OgorIAkJKG9wdHMsIGFyZ3MpID0gZ2V0b3B0LmdldG9wdChpbl9hcmdzLCBzX29wdHMsIGxfb3B0cykKKy0JZXhjZXB0IGdldG9wdC5lcnJvciwgbXNnOgorLQkJcHJpbnQgPj5zeXMuc3RkZXJyLCBtc2cKKy0JCXByaW50ID4+c3lzLnN0ZGVyciwgX19kb2NfXworKwlleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKKysJCXByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorKwkJcHJpbnQoX19kb2NfXywgZmlsZT1zeXMuc3RkZXJyKQorIAkJc3lzLmV4aXQoMSkKKyAKKyAJZm9yIChvLCBhKSBpbiBvcHRzOgorIAkJaWYgbyBpbiAoJy1oJywgJy0taGVscCcpOgorLQkJCXByaW50IF9fZG9jX18KKysJCQlwcmludChfX2RvY19fKQorIAkJCXN5cy5leGl0KDApCisgCQllbGlmIG8gaW4gKCctdicsICctLXZlcmJvc2UnKToKKyAJCQl2ZXJib3NlICs9IDEKK0BAIC04NCwxMCArODYsMTAgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAJKGJub3MsIGtleXNfYmVsb3cpID0gcGFyc2VfYXJncyhzeXMuYXJndlsxOl0pCisgCisgCWlmIHZlcmJvc2U6CistCQlwcmludCAnVXNpbmcgZmlsZXM6JywKKy0JCWZvciBibm8gaW4gYm5vczogcHJpbnQgYm5vLAorLQkJaWYga2V5c19iZWxvdzoJcHJpbnQgJ1xuS2V5cyBhcmUgdG8gYmUgcGxhY2VkIGJlbG93IGdyYXBoJworLQkJZWxzZToJCXByaW50ICcnCisrCQlwcmludCgnVXNpbmcgZmlsZXM6JywgZW5kPScgJykKKysJCWZvciBibm8gaW4gYm5vczogcHJpbnQoYm5vLCBlbmQ9JyAnKQorKwkJaWYga2V5c19iZWxvdzoJcHJpbnQoJ1xuS2V5cyBhcmUgdG8gYmUgcGxhY2VkIGJlbG93IGdyYXBoJykKKysJCWVsc2U6CQlwcmludCgnJykKKyAKKyAJdG1wZGlyID0gdGVtcGZpbGUubWt0ZW1wKCkKKyAJb3MubWtkaXIodG1wZGlyKQorQEAgLTk5LDcgKzEwMSw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgCQlmbyA9IG9wZW4odCwgJ3cnKQorIAkJZm9yIGxpbmUgaW4gb3BlbihmLCAncicpOgorIAkJCWZsZCA9IGxpbmUuc3BsaXQoTm9uZSkKKy0JCQlwcmludCA+PmZvLCBmbGRbMF0sIGZsZFsxXSwgaW50KGZsZFsyXSktaW50KGZsZFsxXSkKKysJCQlwcmludChmbGRbMF0sIGZsZFsxXSwgaW50KGZsZFsyXSktaW50KGZsZFsxXSksIGZpbGU9Zm8pCisgCQlmby5jbG9zZSgpCisgCisgCQl0ID0gdFt0LnJmaW5kKCcvJykrMTpdCitAQCAtMTA3LDE2ICsxMDksMTYgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAJCWVsc2U6ICAgICAgICAgICAgICAgIHBsb3RfY21kID0gIiVzLCclcyciICUgKHBsb3RfY21kLCB0KQorIAorIAlmbyA9IG9wZW4oJyVzL3Bsb3QuY21kcycgJSB0bXBkaXIsICd3JykKKy0JcHJpbnQgPj5mbywgY21kcworLQlpZiBsZW4oYm5vcykgPiAxMCBvciBrZXlzX2JlbG93OiBwcmludCA+PmZvLCAnc2V0IGtleSBiZWxvdycKKy0JcHJpbnQgPj5mbywgcGxvdF9jbWQKKysJcHJpbnQoY21kcywgZmlsZT1mbykKKysJaWYgbGVuKGJub3MpID4gMTAgb3Iga2V5c19iZWxvdzogcHJpbnQoJ3NldCBrZXkgYmVsb3cnLCBmaWxlPWZvKQorKwlwcmludChwbG90X2NtZCwgZmlsZT1mbykKKyAJZm8uY2xvc2UoKQorIAorIAlwaWQgPSBvcy5mb3JrKCkKKyAJaWYgcGlkID09IDA6CisgCQljbWQgPSAnZ251cGxvdCAlcy9wbG90LmNtZHMgLScgJSB0bXBkaXIKKyAKKy0JCWlmIHZlcmJvc2U6IHByaW50ICdFeGVjdXRpbmcgJXMnICUgY21kCisrCQlpZiB2ZXJib3NlOiBwcmludCgnRXhlY3V0aW5nICVzJyAlIGNtZCkKKyAKKyAJCW9zLmNoZGlyKHRtcGRpcikKKyAJCW9zLnN5c3RlbShjbWQpCistLS0gZ2l0Lm9yaWcvYnR0L2J0dF9wbG90LnB5CisrKysgZ2l0L2J0dC9idHRfcGxvdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCisgIworICMgYnR0X3Bsb3QucHk6IEdlbmVyYXRlIG1hdHBsb3RsaWIgcGxvdHMgZm9yIEJUVCBnZW5lcmF0ZSBkYXRhIGZpbGVzCisgIworQEAgLTU1LDYgKzU1LDEwIEBAIEFyZ3VtZW50czoKKyAgIGJ1dCB0aGUgLW8gKC0tb3V0cHV0KSBhbmQgLVQgKC0tdGl0bGUpIG9wdGlvbnMgd2lsbCBiZSBpZ25vcmVkLgorICIiIgorIAorK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorK2ltcG9ydCBzaXgKKytmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKyBfX2F1dGhvcl9fID0gJ0FsYW4gRC4gQnJ1bmVsbGUgPGFsYW4uYnJ1bmVsbGVAaHAuY29tPicKKyAKKyAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitAQCAtODIsNyArODYsNyBAQCBnZXRfYmFzZSAJPSBsYW1iZGEgZmlsZTogZmlsZVtmaWxlLmZpbmQoCisgZGVmIGZhdGFsKG1zZyk6CisgCSIiIkdlbmVyYXRlIGZhdGFsIGVycm9yIG1lc3NhZ2UgYW5kIGV4aXQiIiIKKyAKKy0JcHJpbnQgPj5zeXMuc3RkZXJyLCAnRkFUQUw6ICVzJyAlIG1zZworKwlwcmludCgnRkFUQUw6ICVzJyAlIG1zZywgZmlsZT1zeXMuc3RkZXJyKQorIAlzeXMuZXhpdCgxKQorIAorICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BAIC0xNjMsNyArMTY3LDcgQEAgZGVmIGdldF9kYXRhKGZpbGVzKToKKyAJCWlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlKToKKyAJCQlmYXRhbCgnJXMgbm90IGZvdW5kJyAlIGZpbGUpCisgCQllbGlmIHZlcmJvc2U6CistCQkJcHJpbnQgJ1Byb2Nlc3NpbmcgJXMnICUgZmlsZQorKwkJCXByaW50KCdQcm9jZXNzaW5nICVzJyAlIGZpbGUpCisgCisgCQl4cyA9IFtdCisgCQl5cyA9IFtdCitAQCAtMjE0LDggKzIxOCw4IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3MpOgorIAorIAl0cnk6CisgCQkob3B0cywgYXJncykgPSBnZXRvcHQuZ2V0b3B0KGFyZ3NbMTpdLCBzX29wdHMsIGxfb3B0cykKKy0JZXhjZXB0IGdldG9wdC5lcnJvciwgbXNnOgorLQkJcHJpbnQgPj5zeXMuc3RkZXJyLCBtc2cKKysJZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CisrCQlwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKKyAJCWZhdGFsKF9fZG9jX18pCisgCisgCWZvciAobywgYSkgaW4gb3B0czoKK0BAIC0yOTMsMTUgKzI5NywxNSBAQCBkZWYgZ2VuZXJhdGVfb3V0cHV0KHR5cGUsIGRiKToKKyAJZGVmIGNvbG9yKGlkeCwgc3R5bGUpOgorIAkJIiIiUmV0dXJucyBhIGNvbG9yL3N5bWJvbCB0eXBlIGJhc2VkIHVwb24gdGhlIGluZGV4IHBhc3NlZC4iIiIKKyAKKy0gICAgICAgICAgICAgICAgY29sb3JzID0gWyAnYicsICdnJywgJ3InLCAnYycsICdtJywgJ3knLCAnaycgXQorKwkJY29sb3JzID0gWyAnYicsICdnJywgJ3InLCAnYycsICdtJywgJ3knLCAnaycgXQorIAkJbF9zdHlsZXMgPSBbICctJywgJzonLCAnLS0nLCAnLS4nIF0KKyAJCW1fc3R5bGVzID0gWyAnbycsICcrJywgJy4nLCAnLCcsICdzJywgJ3YnLCAneCcsICc8JywgJz4nIF0KKyAKKyAJCWNvbG9yID0gY29sb3JzW2lkeCAlIGxlbihjb2xvcnMpXQorIAkJaWYgc3R5bGUgPT0gJ2xpbmUnOgorLQkJCXN0eWxlID0gbF9zdHlsZXNbKGlkeCAvIGxlbihsX3N0eWxlcykpICUgbGVuKGxfc3R5bGVzKV0KKysJCQlzdHlsZSA9IGxfc3R5bGVzW2ludCgoaWR4IC8gbGVuKGxfc3R5bGVzKSkgJSBsZW4obF9zdHlsZXMpKV0KKyAJCWVsaWYgc3R5bGUgPT0gJ21hcmtlcic6CistCQkJc3R5bGUgPSBtX3N0eWxlc1soaWR4IC8gbGVuKG1fc3R5bGVzKSkgJSBsZW4obV9zdHlsZXMpXQorKwkJCXN0eWxlID0gbV9zdHlsZXNbaW50KChpZHggLyBsZW4obV9zdHlsZXMpKSAlIGxlbihtX3N0eWxlcykpXQorIAorIAkJcmV0dXJuICclcyVzJyAlIChjb2xvciwgc3R5bGUpCisgCitAQCAtMzE0LDcgKzMxOCw3IEBAIGRlZiBnZW5lcmF0ZV9vdXRwdXQodHlwZSwgZGIpOgorIAkJb2ZpbGUgPSAnJXMucG5nJyAlIHR5cGUKKyAKKyAJaWYgdmVyYm9zZToKKy0JCXByaW50ICdHZW5lcmF0aW5nIHBsb3QgaW50byAlcycgJSBvZmlsZQorKwkJcHJpbnQoJ0dlbmVyYXRpbmcgcGxvdCBpbnRvICVzJyAlIG9maWxlKQorIAorIAlmaWcgPSBwbHQuZmlndXJlKGZpZ3NpemU9cGxvdF9zaXplKQorIAlheCA9IGZpZy5hZGRfc3VicGxvdCgxMTEpCitAQCAtMzI5LDcgKzMzMyw3IEBAIGRlZiBnZW5lcmF0ZV9vdXRwdXQodHlwZSwgZGIpOgorIAkJbGVnZW5kcyA9IE5vbmUKKyAKKyAJa2V5cyA9IFtdCistCWZvciBmaWxlIGluIGRiLml0ZXJrZXlzKCk6CisrCWZvciBmaWxlIGluIHNpeC5pdGVya2V5cyhkYik6CisgCQlpZiBub3QgZmlsZSBpbiBbJ21pbl94JywgJ21heF94JywgJ21pbl95JywgJ21heF95J106CisgCQkJa2V5cy5hcHBlbmQoZmlsZSkKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCmluZGV4IDI2MDVmZjkuLjY5MDMwNTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLmRrL2Jsa3RyYWNlLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwNjg5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2UtYnR0LXNjcmlwdHMtcHl0aG9uMy1yZWFkeS5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMKaW5kZXggOWQ4YmE0NC4uZjk5ZjhiYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwpAQCAtNCw5ICs0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDUkVWID0gImZkOGIxNWVmMWM4Mzk4YTY5YTM3OTMyZWU0OGM3NGFiNDAzMjlhMjkiCitTUkNSRVYgPSAiYTg3MDUzYmVlNTY4MDg3OGMyOTViN2QyM2NmMGQ3MDY1NTc2YWMyYiIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGVjODcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1GaXgtbW9kdWxlLWxvYWRpbmctd2l0aC1MaW51eC12NS4wLXJjNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4L2NvbW1pdC9mOTcxZTBjXQotCi1CYWNrcG9ydCBwYXRjaCBmcm9tIHVwc3RyZWFtIHRvIGZpeCBtb2R1bGUgY3J5cHRvZGV2IGxvYWRpbmcgZXJyb3IuCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIGY5NzFlMGNkNGEwZWJlNTlmYjJlOGUxNzI0MDM5OWJmNjkwMWIwOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiRGVyYWxkIEQuIFdvb2RzIiA8d29vZHMudGVjaG5pY2FsQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTAgRmViIDIwMTkgMTM6MjI6MTkgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IG1vZHVsZSBsb2FkaW5nIHdpdGggTGludXggdjUuMC1yYzUKLQotVGhpcyBjb21taXQgZml4ZXMgdGhpcyBtb2R1bGUgbG9hZCBlcnJvcjoKLVsuLi5dCi1bICAgMjkuMTEyMDkxXSBjcnlwdG9kZXY6IGxvYWRpbmcgb3V0LW9mLXRyZWUgbW9kdWxlIHRhaW50cyBrZXJuZWwuCi1bICAgMjkuMTI4OTA2XSBjcnlwdG9kZXY6IFVua25vd24gc3ltYm9sIGNyeXB0b19naXZjaXBoZXJfdHlwZSAoZXJyIC0yKQotWyAgIDI5LjE4ODg0Ml0gY3J5cHRvZGV2OiBVbmtub3duIHN5bWJvbCBjcnlwdG9fZ2l2Y2lwaGVyX3R5cGUgKGVyciAtMikKLW1vZHByb2JlOiBjYW4ndCBsb2FkIG1vZHVsZSBjcnlwdG9kZXYgKGV4dHJhL2NyeXB0b2Rldi5rbyk6IHVua25vd24gc3ltYm9sIGluIG1vZHVsZSwgb3IgdW5rbm93biBwYXJhbWV0ZXIKLVsuLi5dCi0KLVVwc3RyZWFtIExpbnV4IHN1cHBvcnQgZm9yIHVudXNlZCBHSVZDSVBIRVIsIGFuZCBvdGhlcnMsIHdhcyBkcm9wcGVkIGhlcmU6Ci0KLWM3OWI0MTFlYWE3MiAoY3J5cHRvOiBza2NpcGhlciAtIHJlbW92ZSByZW1uYW50cyBvZiBpbnRlcm5hbCBJViBnZW5lcmF0b3JzKQotCi1TaWduZWQtb2ZmLWJ5OiBEZXJhbGQgRC4gV29vZHMgPHdvb2RzLnRlY2huaWNhbEBnbWFpbC5jb20+Ci0tLS0KLSBjcnlwdGxpYi5jIHwgOSArKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY3J5cHRsaWIuYyBiL2NyeXB0bGliLmMKLWluZGV4IDZlNjY2OTguLjRhODcwMzcgMTAwNjQ0Ci0tLS0gYS9jcnlwdGxpYi5jCi0rKysgYi9jcnlwdGxpYi5jCi1AQCAtMzgsNyArMzgsOSBAQAotICNpbmNsdWRlICJjcnlwdG9kZXZfaW50LmgiCi0gI2luY2x1ZGUgImNpcGhlcmFwaS5oIgotIAotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNSwgMCwgMCkpCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCBjcnlwdG9fdHlwZSBjcnlwdG9fZ2l2Y2lwaGVyX3R5cGU7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQgY3J5cHRvZGV2X2NvbXBsZXRlKHN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdCAqcmVxLCBpbnQgZXJyKQotIHsKLUBAIC0xNTcsOCArMTU5LDExIEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl9kYXRhICpvdXQsIGNvbnN0IGNoYXIgKmFsZ19uYW1lLAotIAotICNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApKQotIAkJdGZtID0gY3J5cHRvX3NrY2lwaGVyX3RmbShvdXQtPmFzeW5jLnMpOwotLQkJaWYgKCh0Zm0tPl9fY3J0X2FsZy0+Y3JhX3R5cGUgPT0gJmNyeXB0b19hYmxrY2lwaGVyX3R5cGUpIHx8Ci0tCQkgICAgKHRmbS0+X19jcnRfYWxnLT5jcmFfdHlwZSA9PSAmY3J5cHRvX2dpdmNpcGhlcl90eXBlKSkgewotKwkJaWYgKCh0Zm0tPl9fY3J0X2FsZy0+Y3JhX3R5cGUgPT0gJmNyeXB0b19hYmxrY2lwaGVyX3R5cGUpCi0rI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig1LCAwLCAwKSkKLSsJCSAgICB8fCAodGZtLT5fX2NydF9hbGctPmNyYV90eXBlID09ICZjcnlwdG9fZ2l2Y2lwaGVyX3R5cGUpCi0rI2VuZGlmCi0rCQkJCQkJCSkgewotIAkJCXN0cnVjdCBhYmxrY2lwaGVyX2FsZyAqYWxnOwotIAotIAkJCWFsZyA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3JhX2FibGtjaXBoZXI7Ci0tLSAKLTIuMjAuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKaW5kZXggOGNhNzE5My4uNGYxYWY3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtMSwyNCArMSwyNyBAQAogU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcgWW9jdG8gUHJvamVjdCBzdHlsZSBicmFuY2hlZCBrZXJuZWxzIgogTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dpdC90b29scy9rZ2l0O2JlZ2lubGluZT01O2VuZGxpbmU9OTttZDU9OWMzMGU5NzFkNDM1ZTI0OTYyNDI3OGMzZTM0M2U1MDEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90b29scy9rZ2l0O2JlZ2lubGluZT01O2VuZGxpbmU9OTttZDU9OWMzMGU5NzFkNDM1ZTI0OTYyNDI3OGMzZTM0M2U1MDEiCiAKIERFUEVORFMgPSAiZ2l0LW5hdGl2ZSIKIAotU1JDUkVWID0gImJiNmRmMGVmMjM2NTY4OWNkM2RmNmY3NmE4ODM4Y2RkYWUwZDkzNDMiCitTUkNSRVYgPSAiYzY2ODMzZTFjYWFjMjUyNzlhNTA1MmZjZWIxMzIxM2Y1ZTRmNzlmOSIKIFBSID0gInIxMiIKIFBWID0gIjAuMitnaXQke1NSQ1BWfSIKIAogaW5oZXJpdCBuYXRpdmUKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtdG9vbHMuZ2l0IgotUyA9ICIke1dPUktESVJ9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAorZG9fY29uZmlndXJlKCkgeworCToKK30KKwogZG9fY29tcGlsZSgpIHsgCiAJOgogfQogCiBkb19pbnN0YWxsKCkgewotCWNkICR7U30vZ2l0Ci0JbWFrZSBERVNURElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAorCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9JHtiaW5kaXJ9IGluc3RhbGwKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA3LWtleGVjLXVuLWJyZWFrLXRoZS1idWlsZC1vbi0zMi1iaXQteDg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDcta2V4ZWMtdW4tYnJlYWstdGhlLWJ1aWxkLW9uLTMyLWJpdC14ODYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkxNjA4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA3LWtleGVjLXVuLWJyZWFrLXRoZS1idWlsZC1vbi0zMi1iaXQteDg2LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZDI5NGM1MDM5NzUzYTM2NTA2OTQ5YmE1ZGM3ODJhNGMwYjMwN2I3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNzoyMTowOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBrZXhlYzogdW4tYnJlYWsgdGhlIGJ1aWxkIG9uIDMyIGJpdCB4ODYKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGtleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZSAgICB8IDEgKworIGtleGVjL2FyY2gvaTM4Ni9rZXhlYy14ODYuaCB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUgYi9rZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUKK2luZGV4IDEwNWNlZmQuLjI1ZGY1N2EgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUKKysrKyBiL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZQorQEAgLTExLDYgKzExLDcgQEAgaTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1iZW9ib290LXg4Ni5jCisgaTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1uYmkuYworIGkzODZfS0VYRUNfU1JDUyArPSBrZXhlYy9hcmNoL2kzODYveDg2LWxpbnV4LXNldHVwLmMKKyBpMzg2X0tFWEVDX1NSQ1MgKz0ga2V4ZWMvYXJjaC9pMzg2L2NyYXNoZHVtcC14ODYuYworK2kzODZfS0VYRUNfU1JDUyArPSBrZXhlYy9hcmNoL2kzODYva2V4ZWMtbWIyLXg4Ni5jCisgCisgZGlzdCArPSBrZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUgJChpMzg2X0tFWEVDX1NSQ1MpCQkJXAorIAlrZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5oCQkJCQlcCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oCitpbmRleCAxYjU4YzNiLi5kNmIxMGMwIDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oCisrKysgYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmgKK0BAIC01Niw5ICs1NiwxMyBAQCBzdHJ1Y3QgYXJjaF9vcHRpb25zX3QgeworIH07CisgCisgaW50IG11bHRpYm9vdF94ODZfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pOworK2ludCBtdWx0aWJvb3QyX3g4Nl9wcm9iZShjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbik7CisgaW50IG11bHRpYm9vdF94ODZfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAorIAlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7CisraW50IG11bHRpYm9vdDJfeDg2X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKKysJc3RydWN0IGtleGVjX2luZm8gKmluZm8pOworIHZvaWQgbXVsdGlib290X3g4Nl91c2FnZSh2b2lkKTsKKyt2b2lkIG11bHRpYm9vdDJfeDg2X3VzYWdlKHZvaWQpOworIAorIGludCBlbGZfeDg2X3Byb2JlKGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuKTsKKyBpbnQgZWxmX3g4Nl9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNmNzQzNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotCi1TVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgotREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKLUFVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgotU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKLURFUEVORFMgPSAiemxpYiB4eiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9rZHVtcCBcCi0gICAgZmlsZTovL2tkdW1wLmNvbmYgXAotICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vMDAwMS1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXB1cmdhdG9yeS1QYXNzLXItZGlyZWN0bHktdG8tbGlua2VyLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1rZXhlYy1BUk0tRml4LWFkZF9idWZmZXJfcGh5c192aXJ0LWFsaWduLWlzc3VlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC14ODZfNjQtQWRkLXN1cHBvcnQtdG8tYnVpbGQta2V4ZWMtdG9vbHMtd2l0aC14MzItQUJJLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDYta2V4ZWMtYXJtLXVuZGVmaW5lLV9fTlJfa2V4ZWNfZmlsZV9sb2FkLWZvci1hcm0ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDUyNDU4ZjBhMzVjMmEzYjBkMjMwMmNhYTMzMThlOWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTEzYzhkZWU5MThlNTg1NWE0YmE2MGQ2MDkzNzEzOTA5NzgxNDRiNGM4ZDE1ZDY0NDZjYTAwNTdiN2JjNWU1OCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1leHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCi0gICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQotICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAotCi0gICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKLSAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCi0gICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCi0gICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCi0gICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCi0gICAgICAgICAgICBybSAtZiAkZGVwCi0gICAgICAgIGZpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCi0gICAgICAgIGZpCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQotICAgICAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1GSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgotRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCi0iCi0KLUZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKLUlOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKLUlOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAia2R1bXAiCi1TWVNURU1EX1NFUlZJQ0Vfa2R1bXAgPSAia2R1bXAuc2VydmljZSIKLQotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qfHBvd2VycGMuKnxtaXBzLiopLShsaW51eHxmcmVlYnNkLiopJwotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxYjM2NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMjAuYmIKQEAgLTAsMCArMSw4OSBAQAorCitTVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgorREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKK0FVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgorU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKK0RFUEVORFMgPSAiemxpYiB4eiIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8va2R1bXAgXAorICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcG93ZXJwYy1jaGFuZ2UtdGhlLW1lbW9yeS1zaXplLWxpbWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcHVyZ2F0b3J5LVBhc3Mtci1kaXJlY3RseS10by1saW5rZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1rZXhlYy1BUk0tRml4LWFkZF9idWZmZXJfcGh5c192aXJ0LWFsaWduLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQteDg2XzY0LUFkZC1zdXBwb3J0LXRvLWJ1aWxkLWtleGVjLXRvb2xzLXdpdGgteDMyLUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYta2V4ZWMtYXJtLXVuZGVmaW5lLV9fTlJfa2V4ZWNfZmlsZV9sb2FkLWZvci1hcm0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1rZXhlYy11bi1icmVhay10aGUtYnVpbGQtb24tMzItYml0LXg4Ni5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ2NzI0YjY3ZjMyNTAxYzVkM2U3NzgxNjEzNDdjYWQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiMTZkNzk4MThlMGM5ZGUzYmIzZTMzZWRlNTY3N2MzNGExZDI4YzY0NjM3OWM3YWI0NGUwZmFhM2ViNTdhMTYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworZXhwb3J0IExERkxBR1MgPSAiLUwke1NUQUdJTkdfTElCRElSfSIKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLXpsaWI9eWVzIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgIyBSZW1vdmUgdGhlIHByZXBhY2thZ2VkIGNvbmZpZy5oIGZyb20gdGhlIHNvdXJjZSB0cmVlIGFzIGl0IG92ZXJyaWRlcworICAgICMgdGhlIHNhbWUgZmlsZSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlIGFuZCBwbGFjZWQgaW4gdGhlIGJ1aWxkIHRyZWUKKyAgICBybSAtZiAke1N9L2luY2x1ZGUvY29uZmlnLmgKKworICAgICMgUmVtb3ZlIHRoZSAnKi5kJyBmaWxlIHRvIG1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCisgICAgZm9yIGRlcCBpbiBgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgJyouZCdgOyBkbworICAgICAgICBkZXBfbm9fZD0iYGVjaG8gJGRlcCB8IHNlZCAncyMuZCQjIydgIgorICAgICAgICAjIFJlbW92ZSBmaWxlLmQgd2hlbiB0aGVyZSBpcyBhIGZpbGUubworICAgICAgICBpZiBbIC1mICIkZGVwX25vX2QubyIgXTsgdGhlbgorICAgICAgICAgICAgcm0gLWYgJGRlcAorICAgICAgICBmaQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZworCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAorICAgICAgICBmaQorCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCisgICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgZmkKK30KKworUEFDS0FHRVMgPSsgImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKKworRklMRVNfa2V4ZWMgPSAiJHtzYmluZGlyfS9rZXhlYyIKK0ZJTEVTX2tkdW1wID0gIiR7c2JpbmRpcn0va2R1bXAgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjb25maWcva2R1bXAuY29uZiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCisgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlciBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UgXAorIgorCitGSUxFU192bWNvcmUtZG1lc2cgPSAiJHtzYmluZGlyfS92bWNvcmUtZG1lc2ciCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAia2R1bXAiCitJTklUU0NSSVBUX05BTUVfa2R1bXAgPSAia2R1bXAiCitJTklUU0NSSVBUX1BBUkFNU19rZHVtcCA9ICJzdGFydCA1NiAyIDMgNCA1IC4gc3RvcCA1NiAwIDEgNiAuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gImtkdW1wIgorU1lTVEVNRF9TRVJWSUNFX2tkdW1wID0gImtkdW1wLnNlcnZpY2UiCisKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDE5MDgxNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDE5MDgxNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgzMDAwYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAxOTA4MTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NDMgKzAsMCBAQAotU1VNTUFSWSA9ICJGaXJtd2FyZSBmaWxlcyBmb3IgdXNlIHdpdGggTGludXgga2VybmVsIgotU0VDVElPTiA9ICJrZXJuZWwiCi0KLUxJQ0VOU0UgPSAiXAotICAgIEZpcm13YXJlLUFiaWxpcyBcCi0gICAgJiBGaXJtd2FyZS1hZHNwX3NzdCBcCi0gICAgJiBGaXJtd2FyZS1hZ2VyZSBcCi0gICAgJiBGaXJtd2FyZS1hbWRncHUgXAotICAgICYgRmlybXdhcmUtYW1kLXVjb2RlIFwKLSAgICAmIEZpcm13YXJlLWFtbG9naWNfdmRlYyBcCi0gICAgJiBGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWF0bWVsIFwKLSAgICAmIEZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHggXAotICAgICYgRmlybXdhcmUtY2EwMTMyIFwKLSAgICAmIEZpcm13YXJlLWNhdml1bSBcCi0gICAgJiBGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWN3MTIwMCBcCi0gICAgJiBGaXJtd2FyZS1jeXByZXNzIFwKLSAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAotICAgICYgRmlybXdhcmUtZTEwMCBcCi0gICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAotICAgICYgRmlybXdhcmUtZ283MDA3IFwKLSAgICAmIEZpcm13YXJlLUdQTHYyIFwKLSAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaTI0MDBtIFwKLSAgICAmIEZpcm13YXJlLWk5MTUgXAotICAgICYgRmlybXdhcmUtaWJ0X2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWl0OTEzeCBcCi0gICAgJiBGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLUludGNTU1QyIFwKLSAgICAmIEZpcm13YXJlLWthd2V0aCBcCi0gICAgJiBGaXJtd2FyZS1NYXJ2ZWxsIFwKLSAgICAmIEZpcm13YXJlLW1veGEgXAotICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtbmV0cm9ub21lIFwKLSAgICAmIEZpcm13YXJlLW52aWRpYSBcCi0gICAgJiBGaXJtd2FyZS1PTFBDIFwKLSAgICAmIEZpcm13YXJlLWF0aDlrLWh0YyBcCi0gICAgJiBGaXJtd2FyZS1waGFuZncgXAotICAgICYgRmlybXdhcmUtcWF0IFwKLSAgICAmIEZpcm13YXJlLXFjb20gXAotICAgICYgRmlybXdhcmUtcWxhMTI4MCBcCi0gICAgJiBGaXJtd2FyZS1xbGEyeHh4IFwKLSAgICAmIEZpcm13YXJlLXF1YWxjb21tQXRob3NfYXIzayBcCi0gICAgJiBGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayBcCi0gICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXAotICAgICYgRmlybXdhcmUtcmFkZW9uIFwKLSAgICAmIEZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtc2lhbm8gXAotICAgICYgRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkgXAotICAgICYgRmlybXdhcmUtdGkta2V5c3RvbmUgXAotICAgICYgRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtdmlhX3Z0NjY1NiBcCi0gICAgJiBGaXJtd2FyZS13bDEyNTEgXAotICAgICYgRmlybXdhcmUteGM0MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMCBcCi0gICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKLSAgICAmIFdIRU5DRSBcCi0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuQWJpbGlzO21kNT1iNWVlM2Y0MTA3ODBlNTY3MTFhZDQ4ZWFkYzIyYjhiYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFkc3Bfc3N0O21kNT02MTVjNDViOTFhNWE0YTlmZTA0NmQ2YWI5YTJkZjcyOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFnZXJlO21kNT1hZjAxMzNkZTZiNGE5YjI1MjJkZWZkNWYxODhhZmQzMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtZGdwdTttZDU9YWI1MTVlZjY0OTVhYjVjNWEzYjA4YWIyZGI2MmRmMTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWQtdWNvZGU7bWQ1PTNjNTM5OWRjOTE0OGQ3ZjBlMWY0MWUzNGI2OWNmMTRmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1sb2dpY192ZGVjO21kNT1kYzQ0ZjU5YmY2NGE4MTY0M2U1MDBhZDNmMzlhNDY4YSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmF0aGVyb3NfZmlybXdhcmU7bWQ1PTMwYTE0Yzc4MjNiZWVkYWM5ZmEzOWM2NGZkZDAxYTEzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYXRtZWw7bWQ1PWFhNzRhYzBjNjA1OTVkZWU0ZDRlMjM5MTA3ZWE3N2EzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eDttZDU9MzE2MGMxNGRmNzIyODg5MWI4NjgwNjBlMTk1MWRmYmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYTAxMzI7bWQ1PTIwOWIzM2U2NmVlNWJlMDQ2MWYxM2QzMWRhMzkyMTk4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2FkZW5jZTttZDU9MDA5ZjQ2ODE2ZjY5NTZjZmI3NWVkZTEzZDNlMWNlZTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYXZpdW07bWQ1PWMzN2FhZmZiMWViZTU5MzliMjU4MGQwNzNhOTVkYWVhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZTttZDU9ODE5YWE4YzNmYTQ1M2YxYjI1OGVkOGQxNjhhOWQ5MDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jdzEyMDA7bWQ1PWYwZjc3MDg2NGU3YTg0NDRhNWM1YWE5ZDEyYTNhN2VkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY3lwcmVzczttZDU9NDhjZDk0MzZjNzYzYmY4NzM5NjFmOWVkN2I1YzE0N2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5kaWIwNzAwO21kNT1mNzQxMTgyNWM4YTU1NWExYTNlNWVhYjljYTc3MzQzMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmUxMDA7bWQ1PWVjMGY4NDEzNjc2NmRmMTU5YTNhZTZkMDJhY2RmNWE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZW5lX2Zpcm13YXJlO21kNT1lZDY3ZjBmNjJmOGY3OTgxMzBjMjk2NzIwYjdkMzkyMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmZ3X3NzdF8wZjI4O21kNT02MzUzOTMxYzk4OGFkNTI4MThhZTczM2FjNjFjZDI5MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmdvNzAwNzttZDU9YzBiYjlmNmFhYWJhNTViMDUyOWVlOWIzMGFhNjZiZWIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMLTI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaGZpMV9maXJtd2FyZTttZDU9NWU3YjZlNTg2Y2U3MzM5ZDEyNjg5ZTQ5OTMxYWQ0NDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pMjQwMG07bWQ1PTE0YjkwMTk2OWUyM2M0MTg4MTMyN2MwZDllNGI3ZDM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaTkxNTttZDU9MmIwYjJlMGQyMDk4NGFmZmQ0NDkwYmEyY2JhMDI1NzAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pYnRfZmlybXdhcmU7bWQ1PWZkYmVlMWRkZmUwZmI3YWIwYjJmY2Q2YjQ1NGEzNjZiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuSW50Y1NTVDI7bWQ1PTllN2Q4YmVhNzc2MTJkN2NjN2Q5ZTliNTRiNjIzMDYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaXQ5MTN4O21kNT0xZmJmNzI3YmZiNmE5NDk4MTBjNGRiZmE3ZTZjZTRmOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLml3bHdpZmlfZmlybXdhcmU7bWQ1PTNmZDg0MjkxMWVhOTNjMjljZDMyNjc5YWEyM2UxYzg4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uua2F3ZXRoO21kNT1iMWQ4NzZlNTYyZjRiM2I4ZDM5MWFkODM5NWRmZTAzZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk1hcnZlbGw7bWQ1PTI4YjZlZDhiZDA0YmExMDVhZjZlNGRjZDZlOTk3NzcyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubWVkaWF0ZWs7bWQ1PTdjMTk3NmI2MzIxN2Q3NmNlNDdkMGExMWQ4YTc5Y2YyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubW94YTttZDU9MTA4NjYxNDc2N2Q4Y2NmNzQ0YTkyMzI4OWQzZDQyNjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZTttZDU9NDJlMzJmYjg5ZjZiOTU5Y2EyMjJlMjVhYzhkZjhmZWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PTRhZGQwOGYyNTc3MDg2ZDQ0NDQ3OTk2NTAzY2RkZjVmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubnZpZGlhO21kNT00NDI4YTkyMmVkM2JhMmNlZWM5NWYwNzZhNDg4Y2UwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk9MUEM7bWQ1PTViOTE3ZjlkOGMwNjE5OTFiZTRmNmY1ZjEwODcxOWNkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uub3Blbi1hdGg5ay1odGMtZmlybXdhcmU7bWQ1PTFiMzNjOWY0ZDE3YmM0ZDQ1N2JkYjIzNzI3MDQ2ODM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucGhhbmZ3O21kNT05NTRkY2VjMGUwNTFmOTQwOTgxMmI1NjFlYTc0M2JmYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFhdF9maXJtd2FyZTttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5xY29tO21kNT0xNjRlMzM2MmE1MzhlYjExZDNhYzUxZThlMTM0Mjk0YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFsYTEyODA7bWQ1PWQ2ODk1NzMyZTYyMmQ5NTA2MDkwOTMyMjNhMmM0ZjVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMnh4eDttZDU9NTA1ODU1ZTkyMWI3NWYxYmU0YTQzN2FkOWI3OWRmZjAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrO21kNT1jYjQyYjY4NmVlNWY1Y2I4OTAyNzVlNDMyMWRiNjBhOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnI4YTc3OXhfdXNiMzttZDU9NGMxNjcxNjU2MTUzMDI1ZDcwNzYxMDVhNWRhN2U0OTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5yYWRlb247bWQ1PTY4ZWMyOGJhY2IzNjEzMjAwYmNhNDRmNDA0YzY5YjE2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZTttZDU9NzI4ZjFhODVmZDUzZmQ2N2ZhOGQ3YWZiMDgwYmM0MzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0O21kNT1hYjJjMjY5Mjc3YzQ1NDc2ZmI0NDk2NzM5MTFhMmRmZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0O21kNT0wMGQwNmNmZDNlZGRkNWEyNjk4OTQ4ZWFkMmFkNTRhNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnNkbWFfZmlybXdhcmU7bWQ1PTUxZThjMTllY2MyMjcwZjRiOGVhMzAzNDFhZDYzY2U5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uuc2lhbm87bWQ1PTQ1NTZjMWJmODMwMDY3ZjEyY2ExNTFhZDk1M2VjMmE1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGRhNzcwNi1maXJtd2FyZS50eHQ7bWQ1PTgzNTk5N2NmNWUzYzEzMWQwZGRkZDY5NWM3ZDkxMDNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5O21kNT1jNWUwMmJlNjMzZjE0OTljMTA5ZDE2NTI1MTRkODVlYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnRpLWtleXN0b25lO21kNT0zYTg2MzM1ZDMyODY0YjBiZWY5OTZiZWUyNmNjMGYyYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlO21kNT00ZWQ3ZWE2YjUwN2NjYzU4M2I5ZDU5NDQxNzcxNDExOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnZpYV92dDY2NTY7bWQ1PWU0MTU5Njk0Y2JhNDJkNDM3N2E5MTJlNzhhNmU4NTBmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uud2wxMjUxO21kNT1hZDNmODE5MjJiYjllMTk3MDE0YmIxODcyODlkM2I1YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNDAwMDttZDU9MGZmNTFkMmRjNDlmY2UwNDgxNGM5MTU1MDgxMDkyZjAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDA7bWQ1PTFlMTcwYzEzMTc1MzIzYzMyYzdmNGQwOTk4ZDUzZjY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vV0hFTkNFO21kNT0zN2EwMWUzNzkyMTlkMWUwNmRiY2NmYTkwYThmYzBhZCBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotIyBUaGVzZSBhcmUgbm90IGNvbW1vbiBsaWNlbnNlcywgc2V0IE5PX0dFTkVSSUNfTElDRU5TRSBmb3IgdGhlbQotIyBzbyB0aGF0IHRoZSBsaWNlbnNlIGZpbGVzIHdpbGwgYmUgY29waWVkIGZyb20gZmV0Y2hlZCBzb3VyY2UKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1BYmlsaXNdID0gIkxJQ0VOQ0UuQWJpbGlzIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFkc3Bfc3N0XSA9ICJMSUNFTkNFLmFkc3Bfc3N0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFnZXJlXSA9ICJMSUNFTkNFLmFnZXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtZGdwdV0gPSAiTElDRU5TRS5hbWRncHUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kLXVjb2RlXSA9ICJMSUNFTlNFLmFtZC11Y29kZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWxvZ2ljX3ZkZWNdID0gIkxJQ0VOU0UuYW1sb2dpY192ZGVjIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aGVyb3NfZmlybXdhcmVdID0gIkxJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hdG1lbF0gPSAiTElDRU5TRS5hdG1lbCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4XSA9ICJMSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2EwMTMyXSA9ICJMSUNFTkNFLmNhMDEzMiIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYWRlbmNlXSA9ICJMSUNFTkNFLmNhZGVuY2UiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2F2aXVtXSA9ICJMSUNFTkNFLmNhdml1bSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlXSA9ICJMSUNFTkNFLmNoZWxzaW9fZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY3cxMjAwXSA9ICJMSUNFTkNFLmN3MTIwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jeXByZXNzXSA9ICJMSUNFTkNFLmN5cHJlc3MiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZGliMDcwMF0gPSAiTElDRU5TRS5kaWIwNzAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWUxMDBdID0gIkxJQ0VOQ0UuZTEwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1lbmVfZmlybXdhcmVdID0gIkxJQ0VOQ0UuZW5lX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWZ3X3NzdF8wZjI4XSA9ICJMSUNFTkNFLmZ3X3NzdF8wZjI4IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWdvNzAwN10gPSAiTElDRU5DRS5nbzcwMDciCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtR1BMdjJdID0gIkdQTC0yIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWhmaTFfZmlybXdhcmVdID0gIkxJQ0VOU0UuaGZpMV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pMjQwMG1dID0gIkxJQ0VOQ0UuaTI0MDBtIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWk5MTVdID0gIkxJQ0VOU0UuaTkxNSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pYnRfZmlybXdhcmVdID0gIkxJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUludGNTU1QyXSA9ICJMSUNFTkNFLkludGNTU1QyIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWl0OTEzeF0gPSAiTElDRU5DRS5pdDkxM3giCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZV0gPSAiTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWthd2V0aF0gPSAiTElDRU5DRS5rYXdldGgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtTWFydmVsbF0gPSAiTElDRU5DRS5NYXJ2ZWxsIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1lZGlhdGVrXSA9ICJMSUNFTkNFLm1lZGlhdGVrIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1veGFdID0gIkxJQ0VOQ0UubW94YSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZV0gPSAiTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1uZXRyb25vbWVdID0gIkxJQ0VOQ0UuTmV0cm9ub21lIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW52aWRpYV0gPSAiTElDRU5DRS5udmlkaWEiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtT0xQQ10gPSAiTElDRU5DRS5PTFBDIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aDlrLWh0Y10gPSAiTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1waGFuZnddID0gIkxJQ0VOQ0UucGhhbmZ3IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFhdF0gPSAiTElDRU5DRS5xYXRfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWNvbV0gPSAiTElDRU5TRS5xY29tIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTEyODBdID0gIkxJQ0VOQ0UucWxhMTI4MCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xbGEyeHh4XSA9ICJMSUNFTkNFLnFsYTJ4eHgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcjhhNzc5eF91c2IzXSA9ICJMSUNFTkNFLnI4YTc3OXhfdXNiMyIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWRlb25dID0gIkxJQ0VOU0UucmFkZW9uIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWxpbmstZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rLWZpcm13YXJlLnR4dCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXNpYW5vXSA9ICJMSUNFTkNFLnNpYW5vIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlXSA9ICJMSUNFTlNFLnNkbWFfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZV0gPSAiTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10aS1jb25uZWN0aXZpdHldID0gIkxJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWtleXN0b25lXSA9ICJMSUNFTkNFLnRpLWtleXN0b25lIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlXSA9ICJMSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXZpYV92dDY2NTZdID0gIkxJQ0VOQ0UudmlhX3Z0NjY1NiIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS13bDEyNTFdID0gIkxJQ0VOQ0Uud2wxMjUxIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNDAwMF0gPSAiTElDRU5DRS54YzQwMDAiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM1MDAwXSA9ICJMSUNFTkNFLnhjNTAwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCi1OT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCi0KLVBFID0gIjEiCi0KLVNSQ1JFViA9ICIwN2I5MjViNDUwYmZiNGNmM2UxNDFjNjEyZWM1YjEwNDY1OGNkMDIwIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5naXQiCi0KLVVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLWRvX2NvbXBpbGUoKSB7Ci0JOgotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlLwotCWNwIC1yICogJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvCi0KLQkjIEF2b2lkIE1ha2VmaWxlIHRvIGJlIGRlcGxveWVkCi0Jcm0gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTWFrZWZpbGUKLQotCSMgUmVtb3ZlIHVuYnVpbGQgZmlybXdhcmUgd2hpY2ggbmVlZHMgY21ha2UgYW5kIGJhc2gKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9jYXJsOTE3MGZ3IC1yZgotCi0JIyBSZW1vdmUgcG9pbnRsZXNzIGJhc2ggc2NyaXB0Ci0Jcm0gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY29uZmlndXJlCi0KLQkjIFJlbW92ZSBweXRob24gc2NyaXB0IHVzZWQgdG8gY2hlY2sgdGhlIFdIRU5DRSBmaWxlCi0Jcm0gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY2hlY2tfd2hlbmNlLnB5Ci0KLQkjIExpYmVydGFzIHNkODY4NgotCWxuIC1zZiBsaWJlcnRhcy9zZDg2ODZfdjkuYmluICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3NkODY4Ni5iaW4KLQlsbiAtc2YgbGliZXJ0YXMvc2Q4Njg2X3Y5X2hlbHBlci5iaW4gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2X2hlbHBlci5iaW4KLQotCSMgZml4dXAgd2wxMnh4IGxvY2F0aW9uLCBhZnRlciAyLjYuMzcgdGhlIGtlcm5lbCBzZWFyY2hlcyBhIGRpZmZlcmVudCBsb2NhdGlvbiBmb3IgaXQKLQkoIGNkICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIDsgbG4gLXNmIHRpLWNvbm5lY3Rpdml0eS8qIC4gKQotfQotCi0KLVBBQ0tBR0VTID0rICIke1BOfS1yYWxpbmstbGljZW5zZSAke1BOfS1yYWxpbmsgXAotICAgICAgICAgICAgICR7UE59LW10NzYwMXUtbGljZW5zZSAke1BOfS1tdDc2MDF1IFwKLSAgICAgICAgICAgICAke1BOfS1yYWRlb24tbGljZW5zZSAke1BOfS1yYWRlb24gXAotICAgICAgICAgICAgICR7UE59LW1hcnZlbGwtbGljZW5zZSAke1BOfS1wY2llODg5NyAke1BOfS1wY2llODk5NyBcCi0gICAgICAgICAgICAgJHtQTn0tc2Q4Njg2ICR7UE59LXNkODY4OCAke1BOfS1zZDg3ODcgJHtQTn0tc2Q4Nzk3ICR7UE59LXNkODgwMSAke1BOfS1zZDg4ODcgJHtQTn0tc2Q4ODk3IFwKLSAgICAgICAgICAgICAke1BOfS11c2I4OTk3IFwKLSAgICAgICAgICAgICAke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiAke1BOfS13bDEyeHggJHtQTn0td2wxOHh4IFwKLSAgICAgICAgICAgICAke1BOfS12dDY2NTYtbGljZW5zZSAke1BOfS12dDY2NTYgXAotICAgICAgICAgICAgICR7UE59LXJ0bC1saWNlbnNlICR7UE59LXJ0bDgxODggJHtQTn0tcnRsODE5MmN1ICR7UE59LXJ0bDgxOTJjZSAke1BOfS1ydGw4MTkyc3UgJHtQTn0tcnRsODcyMyAke1BOfS1ydGw4ODIxIFwKLSAgICAgICAgICAgICAke1BOfS1ydGw4MTY4IFwKLSAgICAgICAgICAgICAke1BOfS1jeXByZXNzLWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LWJyb2FkY29tLWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LWJjbS0wYmI0LTAzMDYgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMTQzIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzIzNmIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjQgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjUgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQyYSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyOSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyOS1mdWxsbWFjIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzMwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM0IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM0MCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMzNSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMzNjIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzkgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzQzMGEwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzQ1NSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1MCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1MGMyIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU0IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU2IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU2LXBjaWUgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTY5IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU3MCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1OCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM2MDIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNjZiIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzY2YyBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM3MSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM3MyBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDN4eCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDN4eC1oZHIgXAotICAgICAgICAgICAgICR7UE59LWF0aGVyb3MtbGljZW5zZSAke1BOfS1hcjkxNzAgJHtQTn0tYXRoNmsgJHtQTn0tYXRoOWsgXAotICAgICAgICAgICAgICR7UE59LWdwbHYyLWxpY2Vuc2UgJHtQTn0tY2FybDkxNzAgXAotICAgICAgICAgICAgICR7UE59LWFyM2stbGljZW5zZSAke1BOfS1hcjNrICR7UE59LWF0aDEway1saWNlbnNlICR7UE59LWF0aDEwayAke1BOfS1xY2EgXAotICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAke1BOfS1pbXgtc2RtYS1saWNlbnNlICR7UE59LWlteC1zZG1hLWlteDZxICR7UE59LWlteC1zZG1hLWlteDdkIFwKLSAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1saWNlbnNlICR7UE59LWl3bHdpZmkgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMTM1LTYgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC03ICR7UE59LWl3bHdpZmktMzE2MC04ICR7UE59LWl3bHdpZmktMzE2MC05IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTAgJHtQTn0taXdsd2lmaS0zMTYwLTEyICR7UE59LWl3bHdpZmktMzE2MC0xMyBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTE2ICR7UE59LWl3bHdpZmktMzE2MC0xNyBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwLTQgJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjAwMGcyYi01ICR7UE59LWl3bHdpZmktNjAwMGcyYi02IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwNTAtNCAke1BOfS1pd2x3aWZpLTYwNTAtNSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjYwIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjUgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NWQgJHtQTn0taXdsd2lmaS04MDAwYyAke1BOfS1pd2x3aWZpLTgyNjUgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktOTAwMCBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKLSAgICAgICAgICAgICAke1BOfS1pYnQtbGljZW5zZSAke1BOfS1pYnQgJHtQTn0taWJ0LW1pc2MgXAotICAgICAgICAgICAgICR7UE59LWlidC0xMS01ICR7UE59LWlidC0xMi0xNiAke1BOfS1pYnQtaHctMzctNyAke1BOfS1pYnQtaHctMzctOCBcCi0gICAgICAgICAgICAgJHtQTn0taWJ0LTE3IFwKLSAgICAgICAgICAgICAke1BOfS1pOTE1LWxpY2Vuc2UgJHtQTn0taTkxNSBcCi0gICAgICAgICAgICAgJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAke1BOfS1hZHNwLXNzdCBcCi0gICAgICAgICAgICAgJHtQTn0tYm54Mi1taXBzIFwKLSAgICAgICAgICAgICAke1BOfS1saXF1aWRpbyBcCi0gICAgICAgICAgICAgJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgJHtQTn0tbmV0cm9ub21lIFwKLSAgICAgICAgICAgICAke1BOfS1xYXQgJHtQTn0tcWF0LWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LXFjb20tbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tcWNvbS12ZW51cy0xLjggJHtQTn0tcWNvbS12ZW51cy00LjIgXAotICAgICAgICAgICAgICR7UE59LXFjb20tYWRyZW5vLWEzeHggJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCBcCi0gICAgICAgICAgICAgJHtQTn0td2hlbmNlLWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LWxpY2Vuc2UgXAotICAgICAgICAgICAgICIKLQotIyBGb3IgYXRoZXJvcwotTElDRU5TRV8ke1BOfS1hcjkxNzAgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tYXRoNmsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tYXRoOWsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIkZpcm13YXJlLWF0aGVyb3NfZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LWF0aGVyb3MtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKLUZJTEVTXyR7UE59LWFyOTE3MCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTE3MCouZncgXAotIgotRklMRVNfJHtQTn0tYXRoNmsgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg2ayBcCi0iCi1GSUxFU18ke1BOfS1hdGg5ayA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTI3MS5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI3MDEwKi5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzkyNzEuZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2h0Y183MDEwLmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg5a19odGMvaHRjXzcwMTAtMS40LjAuZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfOTI3MS0xLjQuMC5mdyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWFyOTE3MCArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tYXRoNmsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWF0aDlrICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCi0KLSMgRm9yIGNhcmw5MTcwCi1MSUNFTlNFXyR7UE59LWNhcmw5MTcwID0gIkZpcm13YXJlLUdQTHYyIgotTElDRU5TRV8ke1BOfS1ncGx2Mi1saWNlbnNlID0gIkZpcm13YXJlLUdQTHYyIgotCi1GSUxFU18ke1BOfS1ncGx2Mi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvR1BMLTIiCi1GSUxFU18ke1BOfS1jYXJsOTE3MCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2Nhcmw5MTcwKi5mdyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWNhcmw5MTcwICs9ICIke1BOfS1ncGx2Mi1saWNlbnNlIgotCi0jIEZvciBRdWFsQ29tbUF0aG9zCi1MSUNFTlNFXyR7UE59LWFyM2sgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgotTElDRU5TRV8ke1BOfS1hcjNrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgotTElDRU5TRV8ke1BOfS1hdGgxMGsgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCi1MSUNFTlNFXyR7UE59LWF0aDEway1saWNlbnNlID0gIkZpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrIgotTElDRU5TRV8ke1BOfS1xY2EgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCi0KLUZJTEVTXyR7UE59LWFyM2stbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCi1GSUxFU18ke1BOfS1hcjNrID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXIzayBcCi0iCi0KLUZJTEVTXyR7UE59LWF0aDEway1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrIgotRklMRVNfJHtQTn0tYXRoMTBrID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoMTBrIFwKLSIKLQotRklMRVNfJHtQTn0tcWNhID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNhIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tYXIzayArPSAiJHtQTn0tYXIzay1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tYXRoMTBrICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXFjYSArPSAiJHtQTn0tYXRoMTBrLWxpY2Vuc2UiCi0KLSMgRm9yIHJhbGluawotTElDRU5TRV8ke1BOfS1yYWxpbmsgPSAiRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIgotTElDRU5TRV8ke1BOfS1yYWxpbmstbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LXJhbGluay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgotRklMRVNfJHtQTn0tcmFsaW5rID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnQqLmJpbiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXJhbGluayArPSAiJHtQTn0tcmFsaW5rLWxpY2Vuc2UiCi0KLSMgRm9yIG1lZGlhdGVrIE1UNzYwMVUKLUxJQ0VOU0VfJHtQTn0tbXQ3NjAxdSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKLQotRklMRVNfJHtQTn0tbXQ3NjAxdS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotRklMRVNfJHtQTn0tbXQ3NjAxdSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL210NzYwMXUuYmluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tbXQ3NjAxdSArPSAiJHtQTn0tbXQ3NjAxdS1saWNlbnNlIgotCi0jIEZvciByYWRlb24KLUxJQ0VOU0VfJHtQTn0tcmFkZW9uID0gIkZpcm13YXJlLXJhZGVvbiIKLUxJQ0VOU0VfJHtQTn0tcmFkZW9uLWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFkZW9uIgotCi1GSUxFU18ke1BOfS1yYWRlb24tbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UucmFkZW9uIgotRklMRVNfJHtQTn0tcmFkZW9uID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcmFkZW9uIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcmFkZW9uICs9ICIke1BOfS1yYWRlb24tbGljZW5zZSIKLQotIyBGb3IgbWFydmVsbAotTElDRU5TRV8ke1BOfS1wY2llODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1wY2llODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg2ODYgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4Njg4ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODc4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg3OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4ODAxID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODg4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg4OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tdXNiODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiRmlybXdhcmUtTWFydmVsbCIKLQotRklMRVNfJHtQTn0tbWFydmVsbC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5NYXJ2ZWxsIgotRklMRVNfJHtQTn0tcGNpZTg4OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4ODk3X3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tcGNpZTg5OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4OTk3X3dsYW5fdjQuYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWV1YXJ0ODk5N19jb21ib192NC5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVzYjg5OTdfY29tYm9fdjQuYmluIFwKLSIKLUZJTEVTXyR7UE59LXNkODY4NiA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2xpYmVydGFzL3NkODY4Nl92OSogXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3NkODY4NiogXAotIgotRklMRVNfJHtQTn0tc2Q4Njg4ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg4KiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg2ODgqIFwKLSIKLUZJTEVTXyR7UE59LXNkODc4NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4Nzg3X3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4Nzk3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3OTdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1zZDg4MDEgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODgwMV91YXBzdGEuYmluIFwKLSIKLUZJTEVTXyR7UE59LXNkODg4NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODg3X3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4ODk3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4OTdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS11c2I4OTk3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC91c2J1c2I4OTk3X2NvbWJvX3Y0LmJpbiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXNkODY4NiArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4Njg4ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg3ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODc5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4ODAxICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg4ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODg5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tdXNiODk5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotCi0jIEZvciBuZXRyb25vbWUKLUxJQ0VOU0VfJHtQTn0tbmV0cm9ub21lID0gIkZpcm13YXJlLW5ldHJvbm9tZSIKLQotRklMRVNfJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk5ldHJvbm9tZSBcCi0iCi1GSUxFU18ke1BOfS1uZXRyb25vbWUgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDgxKi5uZmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk2Ki5uZmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk3Ki5uZmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk5Ki5uZmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tbmV0cm9ub21lICs9ICIke1BOfS1uZXRyb25vbWUtbGljZW5zZSIKLQotIyBGb3IgcnRsCi1MSUNFTlNFXyR7UE59LXJ0bDgxODggPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODE5MmN1ID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDgxOTJjZSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4MTkyc3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODcyMyA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4ODIxID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bC1saWNlbnNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDgxNjggPSAiV0hFTkNFIgotCi1GSUxFU18ke1BOfS1ydGwtbGljZW5zZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQgXAotIgotRklMRVNfJHtQTn0tcnRsODE4OCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE4OCouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxOTJjdSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmN1ZncqLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4MTkyY2UgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDgxOTJjZncqLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4MTkyc3UgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MTJ1LmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4NzIzID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4NzIzKi5iaW4gXAotIgotRklMRVNfJHtQTn0tcnRsODgyMSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODgyMSouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxNjggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGxfbmljL3J0bDgxNjgqLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcnRsODE4OCArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4MTkyY2UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODE5MmN1ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDgxOTJzdSA9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDg3MjMgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODgyMSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4MTY4ICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKLQotIyBGb3IgdGktY29ubmVjdGl2aXR5Ci1MSUNFTlNFXyR7UE59LXdsY29tbW9uID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKLUxJQ0VOU0VfJHtQTn0td2wxMnh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKLUxJQ0VOU0VfJHtQTn0td2wxOHh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKLUxJQ0VOU0VfJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotCi1GSUxFU18ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgotRklMRVNfJHtQTn0td2xjb21tb24gPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9USSogXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS9USSogXAotIgotRklMRVNfJHtQTn0td2wxMnh4ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvd2wxMiogXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDEyKiBcCi0iCi1GSUxFU18ke1BOfS13bDE4eHggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS93bDE4KiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTgqIFwKLSIKLQotUkRFUEVORFNfJHtQTn0td2wxMnh4ID0gIiR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uIgotUkRFUEVORFNfJHtQTn0td2wxOHh4ID0gIiR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uIgotCi0jIEZvciB2dDY2NTYKLUxJQ0VOU0VfJHtQTn0tdnQ2NjU2ID0gIkZpcm13YXJlLXZpYV92dDY2NTYiCi1MSUNFTlNFXyR7UE59LXZ0NjY1Ni1saWNlbnNlID0gIkZpcm13YXJlLXZpYV92dDY2NTYiCi0KLUZJTEVTXyR7UE59LXZ0NjY1Ni1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS52aWFfdnQ2NjU2IgotRklMRVNfJHtQTn0tdnQ2NjU2ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdm50d3VzYi5mdyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXZ0NjY1NiA9ICIke1BOfS12dDY2NTYtbGljZW5zZSIKLQotIyBGb3IgYnJvYWRjb20KLQotIyBmb3IgaSBpbiBgZ3JlcCBicmNtIFdIRU5DRSAgfCBncmVwIF5GaWxlIHwgc2VkICdzL0ZpbGU6IGJyY20uLy9nJ2A7IGRvIHBrZz1gZWNobyAkaSB8IHNlZCAncy8tW3NwNDBdLiovL2c7IHMvXC5iaW4vL2c7IHMvYnJjbWZtYWMvYmNtL2c7IHMvX2hkci8taGRyL2c7IHMvQkNNL2JjbS0wYmI0LTAzMDYvZydgOyBlY2hvIC1lICIgICAgICAgICAgICAgXCR7UE59LSRwa2cgXFwiOyBkb25lICB8IHNvcnQgLXUKLQotTElDRU5TRV8ke1BOfS1icm9hZGNvbS1saWNlbnNlID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1GSUxFU18ke1BOfS1icm9hZGNvbS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5icm9hZGNvbV9iY200M3h4IgotCi0jIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gIiRpIC0gJHBrZyI7IGVjaG8gLWUgIkZJTEVTX1wke1BOfS0kcGtnID0gXCJcJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtLyRpXCIiOyBkb25lIHwgZ3JlcCBeRklMRVMKLQotRklMRVNfJHtQTn0tYmNtNDN4eCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDN4eC0wLmZ3IgotRklMRVNfJHtQTn0tYmNtNDN4eC1oZHIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JjbTQzeHhfaGRyLTAuZnciCi1GSUxFU18ke1BOfS1iY200MzI5LWZ1bGxtYWMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JjbTQzMjktZnVsbG1hYy00LmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjM2YiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzIzNmIuYmluIgotRklMRVNfJHtQTn0tYmNtNDMyOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI5LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzMwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzMzQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMzUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNS1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMzkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzOS1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQxYjAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDFiMC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQxYjQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDFiNC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQxYjUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDFiNS1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQyYSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MmEuYmluIgotRklMRVNfJHtQTn0tYmNtNDMxNDMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMxNDMuYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMxNDMtc2Rpby5iaW4gXAotIgotRklMRVNfJHtQTn0tYmNtNDM0MzBhMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQzMGEwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNDU1ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDU1LXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNTBjMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzUwYzItcGNpZS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzUwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTAtcGNpZS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzU2ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTYtc2Rpby5iaW4iCi1GSUxFU18ke1BOfS1iY200MzU2OSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU2OS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzU3MCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU3MC1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1OC1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNjAyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjAyLXBjaWUuYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2MDItcGNpZS5hcC5iaW4gXAotIgotRklMRVNfJHtQTn0tYmNtNDM2NmIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2NmItcGNpZS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzY2YyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzY2Yy1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNzEgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3MS1wY2llLmJpbiIKLQotIyBmb3IgaSBpbiBgZ3JlcCBicmNtIFdIRU5DRSAgfCBncmVwIF5GaWxlIHwgc2VkICdzL0ZpbGU6IGJyY20uLy9nJ2A7IGRvIHBrZz1gZWNobyAkaSB8IHNlZCAncy8tW3NwNDBdLiovL2c7IHMvXC5iaW4vL2c7IHMvYnJjbWZtYWMvYmNtL2c7IHMvX2hkci8taGRyL2c7IHMvQkNNL2JjbS0wYmI0LTAzMDYvZydgOyBlY2hvIC1lICJMSUNFTlNFX1wke1BOfS0kcGtnID0gXCJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4XCJcblJERVBFTkRTX1wke1BOfS0kcGtnICs9IFwiXCR7UE59LWJyb2FkY29tLWxpY2Vuc2VcIiI7IGRvbmUKLSMgQ3VycmVudGx5IDFzdCBvbmUgYW5kIGxhc3QgNiBoYXZlIGN5cHJlc3MgTElDRU5TRQotCi1MSUNFTlNFXyR7UE59LWJjbTQzeHggPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzeHggKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzeHgtaGRyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200M3h4LWhkciArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMyOS1mdWxsbWFjID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI5LWZ1bGxtYWMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjM2YiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDMyMzZiICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI5ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzMwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzMwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM0ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzM0ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzM1ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzM5ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MWIwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI0MWIwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MWI0ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI0MWI0ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MWI1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI0MWI1ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MmEgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQyYSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMxNDMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMTQzICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzQzMGEwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzQzMGEwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzQ1NSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM0NTUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTBjMiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM1MGMyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzUwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzUwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU2ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU2ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU2OSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM1NjkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTcwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU3MCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1OCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM1OCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM2MDIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNjAyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzY2YiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM2NmIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNjZjID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzY2YyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM3MSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM3MSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLQotIyBGb3IgYnJvYWRjb20gY3lwcmVzcwotCi1MSUNFTlNFXyR7UE59LWN5cHJlc3MtbGljZW5zZSA9ICJGaXJtd2FyZS1jeXByZXNzIgotRklMRVNfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5jeXByZXNzIgotCi1GSUxFU18ke1BOfS1iY20tMGJiNC0wMzA2ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ00tMGJiNC0wMzA2LmhjZCIKLUZJTEVTXyR7UE59LWJjbTQzMzQwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzQwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzMzYyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzYyLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNDMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1NC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTYtcGNpZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU2LXBjaWUuKiIKLUZJTEVTXyR7UE59LWJjbTQzNzMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3My1zZGlvLmJpbiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNzMuYmluIFwKLSIKLQotTElDRU5TRV8ke1BOfS1iY20tMGJiNC0wMzA2ID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY20tMGJiNC0wMzA2ICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzQwID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzM0MCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM2MiA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDMzNjIgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM0MzAgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzNDMwICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTQgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTQgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1Ni1wY2llID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzU2LXBjaWUgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM3MyA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDM3MyArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotCi0jIEZvciBCcm9hZGNvbSBibngyLW1pcHMKLSMKLSMgd2hpY2ggaXMgYSBzZXBhcmF0ZSBjYXNlIHRvIHRoZSBvdGhlciBCcm9hZGNvbSBmaXJtd2FyZXMgc2luY2UgaXRzCi0jIGxpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBzaGFyZWQgV0hFTkNFIGZpbGUuCi0KLUxJQ0VOU0VfJHtQTn0tYm54Mi1taXBzID0gIldIRU5DRSIKLUxJQ0VOU0VfJHtQTn0td2hlbmNlLWxpY2Vuc2UgPSAiV0hFTkNFIgotCi1GSUxFU18ke1BOfS1ibngyLW1pcHMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ibngyL2JueDItbWlwcy0wOS02LjIuMWIuZnciCi1GSUxFU18ke1BOfS13aGVuY2UtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL1dIRU5DRSIKLQotUkRFUEVORFNfJHtQTn0tYm54Mi1taXBzICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKLQotIyBGb3IgaW14LXNkbWEKLUxJQ0VOU0VfJHtQTn0taW14LXNkbWEtaW14NnEgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlteC1zZG1hLWlteDdkICAgICAgID0gIkZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1saWNlbnNlICAgICAgID0gIkZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIgotCi1GSUxFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lteC9zZG1hL3NkbWEtaW14NnEuYmluIgotCi1SUFJPVklERVNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCi1SUkVQTEFDRVNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCi1SQ09ORkxJQ1RTXyR7UE59LWlteC1zZG1hLWlteDZxID0gImZpcm13YXJlLWlteC1zZG1hLWlteDZxIgotCi1GSUxFU18ke1BOfS1pbXgtc2RtYS1pbXg3ZCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lteC9zZG1hL3NkbWEtaW14N2QuYmluIgotCi1GSUxFU18ke1BOfS1pbXgtc2RtYS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5zZG1hX2Zpcm13YXJlIgotCi1SREVQRU5EU18ke1BOfS1pbXgtc2RtYS1pbXg2cSArPSAiJHtQTn0taW14LXNkbWEtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlteC1zZG1hLWlteDdkICs9ICIke1BOfS1pbXgtc2RtYS1saWNlbnNlIgotCi0jIEZvciBpd2x3aWZpCi1MSUNFTlNFXyR7UE59LWl3bHdpZmkgICAgICAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC03ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC04ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC05ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xMCAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xMiAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xMyAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xNiAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xNyAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMC00ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjA1MC00ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjA1MC01ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNzI2MCAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNzI2NSAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktOTAwMCAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktbGljZW5zZSAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi0KLQotRklMRVNfJHtQTn0taXdsd2lmaS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlIgotRklMRVNfJHtQTn0taXdsd2lmaS0xMzUtNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMTM1LTYudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC03LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtOC51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC05ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTkudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTAudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTIudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTMudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTYudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTcudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDAtNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMC00LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmEtNS51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJhLTYudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYi01LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmItNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjA1MC00ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDUwLTQudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwNTAtNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjA1MC01LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS03MjYwICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjAtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNzI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1LSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTcyNjVkICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjVELSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTgwMDBjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgwMDBDLSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTgyNjUgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODI2NS0qLnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS05MDAwICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTkwMDAtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktbWlzYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0qLnVjb2RlIgotCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTEzNS02ICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtNyAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtOCAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtOSAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTIgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTMgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTYgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTcgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDAtNCAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNSA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwNTAtNCAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwNTAtNSAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTcyNjAgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTcyNjUgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi0KLSMgLWl3bHdpZmktbWlzYyBpcyBhICJjYXRjaCBhbGwiIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyBhbGwgdGhlIGl3bHdpZmkKLSMgZmlybXdhcmVzIHRoYXQgYXJlIG5vdCBhbHJlYWR5IGluY2x1ZGVkIGluIG90aGVyIC1pd2x3aWZpLSBwYWNrYWdlcy4KLSMgLWl3bHdpZmkgaXMgYSB2aXJ0dWFsIHBhY2thZ2UgdGhhdCBkZXBlbmRzIHVwb24gYWxsIGl3bHdpZmkgcGFja2FnZXMuCi0jIFRoZXNlIGFyZSBkaXN0aW5jdCBpbiBvcmRlciB0byBhbGxvdyB0aGUgLW1pc2MgZmlybXdhcmVzIHRvIGJlIGluc3RhbGxlZAotIyB3aXRob3V0IHB1bGxpbmcgaW4gZXZlcnkgb3RoZXIgaXdsd2lmaSBwYWNrYWdlLgotQUxMT1dfRU1QVFlfJHtQTn0taXdsd2lmaSA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0taXdsd2lmaS1taXNjID0gIjEiCi0KLSMgSGFuZGxlIHBhY2thZ2UgdXBkYXRpbmcgZm9yIHRoZSBuZXdseSBtZXJnZWQgaXdsd2lmaSBncm91cGluZ3MKLVJQUk9WSURFU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCi1SUkVQTEFDRVNfJHtQTn0taXdsd2lmaS03MjY1ID0gIiR7UE59LWl3bHdpZmktNzI2NS04ICR7UE59LWl3bHdpZmktNzI2NS05IgotUkNPTkZMSUNUU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCi0KLVJQUk9WSURFU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCi1SUkVQTEFDRVNfJHtQTn0taXdsd2lmaS03MjYwID0gIiR7UE59LWl3bHdpZmktNzI2MC03ICR7UE59LWl3bHdpZmktNzI2MC04ICR7UE59LWl3bHdpZmktNzI2MC05IgotUkNPTkZMSUNUU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCi0KLSMgRm9yIGlidAotTElDRU5TRV8ke1BOfS1pYnQtbGljZW5zZSA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlidC1ody0zNy03ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTggPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtMTEtNSAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlidC0xMi0xNiAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LTE3ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LW1pc2MgICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotCi1GSUxFU18ke1BOfS1pYnQtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgotRklMRVNfJHtQTn0taWJ0LWh3LTM3LTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuNyouYnNlcSIKLUZJTEVTXyR7UE59LWlidC1ody0zNy04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjgqLmJzZXEiCi1GSUxFU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LmRkYyIKLUZJTEVTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5kZGMiCi1GSUxFU18ke1BOfS1pYnQtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5kZGMiCi1GSUxFU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lidC0qIgotCi1SREVQRU5EU18ke1BOfS1pYnQtaHctMzctNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC1ody0zNy44ID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pYnQtMTItMTYgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC0xNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC1taXNjICAgID0gIiR7UE59LWlidC1saWNlbnNlIgotCi1BTExPV19FTVBUWV8ke1BOfS1pYnQ9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0taWJ0LW1pc2MgPSAiMSIKLQotTElDRU5TRV8ke1BOfS1pOTE1ICAgICAgID0gIkZpcm13YXJlLWk5MTUiCi1MSUNFTlNFXyR7UE59LWk5MTUtbGljZW5zZSA9ICJGaXJtd2FyZS1pOTE1IgotRklMRVNfJHtQTn0taTkxNS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5pOTE1IgotRklMRVNfJHtQTn0taTkxNSAgICAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaTkxNSIKLVJERVBFTkRTXyR7UE59LWk5MTUgICAgICA9ICIke1BOfS1pOTE1LWxpY2Vuc2UiCi0KLUZJTEVTXyR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYWRzcF9zc3QiCi1MSUNFTlNFXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICAgPSAiRmlybXdhcmUtYWRzcF9zc3QiCi1MSUNFTlNFXyR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgICAgPSAiRmlybXdhcmUtYWRzcF9zc3QiCi1GSUxFU18ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9kc3BfZncqIgotUkRFUEVORFNfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgID0gIiR7UE59LWFkc3Atc3N0LWxpY2Vuc2UiCi0KLSMgRm9yIFFBVAotTElDRU5TRV8ke1BOfS1xYXQgICAgICAgICA9ICJGaXJtd2FyZS1xYXQiCi1MSUNFTlNFXyR7UE59LXFhdC1saWNlbnNlID0gIkZpcm13YXJlLXFhdCIKLUZJTEVTXyR7UE59LXFhdC1saWNlbnNlICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnFhdF9maXJtd2FyZSIKLUZJTEVTXyR7UE59LXFhdCAgICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xYXQqLmJpbiIKLVJERVBFTkRTXyR7UE59LXFhdCAgICAgICAgPSAiJHtQTn0tcWF0LWxpY2Vuc2UiCi0KLSMgRm9yIFFDT00gVlBVL0dQVQotTElDRU5TRV8ke1BOfS1xY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtcWNvbSIKLUZJTEVTXyR7UE59LXFjb20tbGljZW5zZSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5xY29tICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9OT1RJQ0UudHh0IgotRklMRVNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTEuOC8qIgotRklMRVNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTQuMi8qIgotRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTMwMF8qLmZ3ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYTMwMF8qLmZ3IgotRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTUzMCouKiIKLVJERVBFTkRTXyR7UE59LXFjb20tdmVudXMtMS44ID0gIiR7UE59LXFjb20tbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXFjb20tdmVudXMtNC4yID0gIiR7UE59LXFjb20tbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXFjb20tYWRyZW5vLWEzeHggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCi0KLUZJTEVTXyR7UE59LWxpcXVpZGlvID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGlxdWlkaW8iCi0KLSMgRm9yIG90aGVyIGZpcm13YXJlcwotIyBNYXliZSBzcGxpdCBvdXQgdG8gc2VwYXJhdGUgcGFja2FnZXMgd2hlbiBuZWVkZWQuCi1MSUNFTlNFXyR7UE59ID0gIlwKLSAgICBGaXJtd2FyZS1BYmlsaXMgXAotICAgICYgRmlybXdhcmUtYWdlcmUgXAotICAgICYgRmlybXdhcmUtYW1kZ3B1IFwKLSAgICAmIEZpcm13YXJlLWFtZC11Y29kZSBcCi0gICAgJiBGaXJtd2FyZS1hdG1lbCBcCi0gICAgJiBGaXJtd2FyZS1jYTAxMzIgXAotICAgICYgRmlybXdhcmUtY2F2aXVtIFwKLSAgICAmIEZpcm13YXJlLWNoZWxzaW9fZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtY3cxMjAwIFwKLSAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAotICAgICYgRmlybXdhcmUtZTEwMCBcCi0gICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAotICAgICYgRmlybXdhcmUtZ283MDA3IFwKLSAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaTI0MDBtIFwKLSAgICAmIEZpcm13YXJlLWlidF9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pdDkxM3ggXAotICAgICYgRmlybXdhcmUtSW50Y1NTVDIgXAotICAgICYgRmlybXdhcmUta2F3ZXRoIFwKLSAgICAmIEZpcm13YXJlLW1veGEgXAotICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtbnZpZGlhIFwKLSAgICAmIEZpcm13YXJlLU9MUEMgXAotICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKLSAgICAmIEZpcm13YXJlLXBoYW5mdyBcCi0gICAgJiBGaXJtd2FyZS1xYXQgXAotICAgICYgRmlybXdhcmUtcWNvbSBcCi0gICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKLSAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAotICAgICYgRmlybXdhcmUtcjhhNzc5eF91c2IzIFwKLSAgICAmIEZpcm13YXJlLXJhZGVvbiBcCi0gICAgJiBGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXJhbGluay1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1zaWFubyBcCi0gICAgJiBGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSBcCi0gICAgJiBGaXJtd2FyZS10aS1rZXlzdG9uZSBcCi0gICAgJiBGaXJtd2FyZS11ZWFnbGUtYXRtNC1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS13bDEyNTEgXAotICAgICYgRmlybXdhcmUteGM0MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMCBcCi0gICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKLSAgICAmIFdIRU5DRSBcCi0iCi0KLUZJTEVTXyR7UE59LWxpY2Vuc2UgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU4qIgotRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvKiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgotCi0jIE1ha2UgbGludXgtZmlybXdhcmUgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IHBhY2thZ2VzLgotIyBNYWtlIGxpbnV4LWZpcm13YXJlLWl3bHdpZmkgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IGl3bHdpZmkgcGFja2FnZXMuCi0jIE1ha2UgbGludXgtZmlybXdhcmUtaWJ0IGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBpYnQgcGFja2FnZXMuCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgZmlybXdhcmVfcGtncyA9IG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCi0gICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlJywgJyAnICsgJyAnLmpvaW4oZmlybXdhcmVfcGtncykpCi0KLSAgICBpd2x3aWZpX3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWl3bHdpZmktJykgIT0gLTEsIGZpcm13YXJlX3BrZ3MpCi0gICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlLWl3bHdpZmknLCAnICcgKyAnICcuam9pbihpd2x3aWZpX3BrZ3MpKQotCi0gICAgaWJ0X3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWlidC0nKSAhPSAtMSwgZmlybXdhcmVfcGtncykKLSAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUtaWJ0JywgJyAnICsgJyAnLmpvaW4oaWJ0X3BrZ3MpKQotfQotCi0jIEZpcm13YXJlIGZpbGVzIGFyZSBnZW5lcmFsbHkgbm90IHJhbiBvbiB0aGUgQ1BVLCBzbyB0aGV5IGNhbiBiZQotIyBhbGxhcmNoIGRlc3BpdGUgYmVpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljCi1JTlNBTkVfU0tJUCA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMjAwMTIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMjAwMTIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzM0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAyMDAxMjIuYmIKQEAgLTAsMCArMSw5MzYgQEAKK1NVTU1BUlkgPSAiRmlybXdhcmUgZmlsZXMgZm9yIHVzZSB3aXRoIExpbnV4IGtlcm5lbCIKK1NFQ1RJT04gPSAia2VybmVsIgorCitMSUNFTlNFID0gIlwKKyAgICBGaXJtd2FyZS1BYmlsaXMgXAorICAgICYgRmlybXdhcmUtYWRzcF9zc3QgXAorICAgICYgRmlybXdhcmUtYWdlcmUgXAorICAgICYgRmlybXdhcmUtYW1kZ3B1IFwKKyAgICAmIEZpcm13YXJlLWFtZC11Y29kZSBcCisgICAgJiBGaXJtd2FyZS1hbWxvZ2ljX3ZkZWMgXAorICAgICYgRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1hdG1lbCBcCisgICAgJiBGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IFwKKyAgICAmIEZpcm13YXJlLWNhMDEzMiBcCisgICAgJiBGaXJtd2FyZS1jYXZpdW0gXAorICAgICYgRmlybXdhcmUtY2hlbHNpb19maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1jdzEyMDAgXAorICAgICYgRmlybXdhcmUtY3lwcmVzcyBcCisgICAgJiBGaXJtd2FyZS1kaWIwNzAwIFwKKyAgICAmIEZpcm13YXJlLWUxMDAgXAorICAgICYgRmlybXdhcmUtZW5lX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWZ3X3NzdF8wZjI4IFwKKyAgICAmIEZpcm13YXJlLWdvNzAwNyBcCisgICAgJiBGaXJtd2FyZS1HUEx2MiBcCisgICAgJiBGaXJtd2FyZS1oZmkxX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWkyNDAwbSBcCisgICAgJiBGaXJtd2FyZS1pOTE1IFwKKyAgICAmIEZpcm13YXJlLWlidF9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1pdDkxM3ggXAorICAgICYgRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1JbnRjU1NUMiBcCisgICAgJiBGaXJtd2FyZS1rYXdldGggXAorICAgICYgRmlybXdhcmUtTWFydmVsbCBcCisgICAgJiBGaXJtd2FyZS1tb3hhIFwKKyAgICAmIEZpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLW5ldHJvbm9tZSBcCisgICAgJiBGaXJtd2FyZS1udmlkaWEgXAorICAgICYgRmlybXdhcmUtT0xQQyBcCisgICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAorICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKKyAgICAmIEZpcm13YXJlLXFhdCBcCisgICAgJiBGaXJtd2FyZS1xY29tIFwKKyAgICAmIEZpcm13YXJlLXFsYTEyODAgXAorICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCisgICAgJiBGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2sgXAorICAgICYgRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsgXAorICAgICYgRmlybXdhcmUtcjhhNzc5eF91c2IzIFwKKyAgICAmIEZpcm13YXJlLXJhZGVvbiBcCisgICAgJiBGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXJhbGluay1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXNpYW5vIFwKKyAgICAmIEZpcm13YXJlLXRkYTc3MDYtZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IFwKKyAgICAmIEZpcm13YXJlLXRpLWtleXN0b25lIFwKKyAgICAmIEZpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXZpYV92dDY2NTYgXAorICAgICYgRmlybXdhcmUtd2wxMjUxIFwKKyAgICAmIEZpcm13YXJlLXhjNDAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDAgXAorICAgICYgRmlybXdhcmUteGM1MDAwYyBcCisgICAgJiBXSEVOQ0UgXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFLkFiaWxpczttZDU9YjVlZTNmNDEwNzgwZTU2NzExYWQ0OGVhZGMyMmI4YmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5hZHNwX3NzdDttZDU9NjE1YzQ1YjkxYTVhNGE5ZmUwNDZkNmFiOWEyZGY3MjggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5hZ2VyZTttZDU9YWYwMTMzZGU2YjRhOWIyNTIyZGVmZDVmMTg4YWZkMzEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWRncHU7bWQ1PWQzNTc1MjRmNTA5OWUyYTNkYjNjMTgzODkyMWM1OTNmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1kLXVjb2RlO21kNT0zYzUzOTlkYzkxNDhkN2YwZTFmNDFlMzRiNjljZjE0ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtbG9naWNfdmRlYzttZDU9ZGM0NGY1OWJmNjRhODE2NDNlNTAwYWQzZjM5YTQ2OGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlO21kNT0zMGExNGM3ODIzYmVlZGFjOWZhMzljNjRmZGQwMWExMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmF0bWVsO21kNT1hYTc0YWMwYzYwNTk1ZGVlNGQ0ZTIzOTEwN2VhNzdhMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHg7bWQ1PTMxNjBjMTRkZjcyMjg4OTFiODY4MDYwZTE5NTFkZmJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2EwMTMyO21kNT0yMDliMzNlNjZlZTViZTA0NjFmMTNkMzFkYTM5MjE5OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNhZGVuY2U7bWQ1PTAwOWY0NjgxNmY2OTU2Y2ZiNzVlZGUxM2QzZTFjZWUwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2F2aXVtO21kNT1jMzdhYWZmYjFlYmU1OTM5YjI1ODBkMDczYTk1ZGFlYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNoZWxzaW9fZmlybXdhcmU7bWQ1PTgxOWFhOGMzZmE0NTNmMWIyNThlZDhkMTY4YTlkOTAzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY3cxMjAwO21kNT1mMGY3NzA4NjRlN2E4NDQ0YTVjNWFhOWQxMmEzYTdlZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmN5cHJlc3M7bWQ1PTQ4Y2Q5NDM2Yzc2M2JmODczOTYxZjllZDdiNWMxNDdiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuZGliMDcwMDttZDU9Zjc0MTE4MjVjOGE1NTVhMWEzZTVlYWI5Y2E3NzM0MzEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5lMTAwO21kNT1lYzBmODQxMzY3NjZkZjE1OWEzYWU2ZDAyYWNkZjVhOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmVuZV9maXJtd2FyZTttZDU9ZWQ2N2YwZjYyZjhmNzk4MTMwYzI5NjcyMGI3ZDM5MjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5md19zc3RfMGYyODttZDU9NjM1MzkzMWM5ODhhZDUyODE4YWU3MzNhYzYxY2QyOTMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5nbzcwMDc7bWQ1PWMwYmI5ZjZhYWFiYTU1YjA1MjllZTliMzBhYTY2YmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0dQTC0yO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmhmaTFfZmlybXdhcmU7bWQ1PTVlN2I2ZTU4NmNlNzMzOWQxMjY4OWU0OTkzMWFkNDQ0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaTI0MDBtO21kNT0xNGI5MDE5NjllMjNjNDE4ODEzMjdjMGQ5ZTRiN2QzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmk5MTU7bWQ1PTJiMGIyZTBkMjA5ODRhZmZkNDQ5MGJhMmNiYTAyNTcwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlO21kNT1mZGJlZTFkZGZlMGZiN2FiMGIyZmNkNmI0NTRhMzY2YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmljZTttZDU9NzQyYWI0ODUwZjI2NzA3OTI5NDBlNmQxNWM5NzRiMmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5JbnRjU1NUMjttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pdDkxM3g7bWQ1PTFmYmY3MjdiZmI2YTk0OTgxMGM0ZGJmYTdlNmNlNGY4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZTttZDU9M2ZkODQyOTExZWE5M2MyOWNkMzI2NzlhYTIzZTFjODggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5rYXdldGg7bWQ1PWIxZDg3NmU1NjJmNGIzYjhkMzkxYWQ4Mzk1ZGZlMDNmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTWFydmVsbDttZDU9MjhiNmVkOGJkMDRiYTEwNWFmNmU0ZGNkNmU5OTc3NzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tZWRpYXRlazttZDU9N2MxOTc2YjYzMjE3ZDc2Y2U0N2QwYTExZDhhNzljZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tb3hhO21kNT0xMDg2NjE0NzY3ZDhjY2Y3NDRhOTIzMjg5ZDNkNDI2MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlO21kNT00MmUzMmZiODlmNmI5NTljYTIyMmUyNWFjOGRmOGZlZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk5ldHJvbm9tZTttZDU9NGFkZDA4ZjI1NzcwODZkNDQ0NDc5OTY1MDNjZGRmNWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5udmlkaWE7bWQ1PTQ0MjhhOTIyZWQzYmEyY2VlYzk1ZjA3NmE0ODhjZTA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTlhQO21kNT01OGJiOGJhNjMyY2Q3MjliOWJhNjE4M2JjNmFlZDM2ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk9MUEM7bWQ1PTViOTE3ZjlkOGMwNjE5OTFiZTRmNmY1ZjEwODcxOWNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uub3Blbi1hdGg5ay1odGMtZmlybXdhcmU7bWQ1PTFiMzNjOWY0ZDE3YmM0ZDQ1N2JkYjIzNzI3MDQ2ODM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucGhhbmZ3O21kNT05NTRkY2VjMGUwNTFmOTQwOTgxMmI1NjFlYTc0M2JmYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFhdF9maXJtd2FyZTttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5xY29tO21kNT0xNjRlMzM2MmE1MzhlYjExZDNhYzUxZThlMTM0Mjk0YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFsYTEyODA7bWQ1PWQ2ODk1NzMyZTYyMmQ5NTA2MDkwOTMyMjNhMmM0ZjVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMnh4eDttZDU9NTA1ODU1ZTkyMWI3NWYxYmU0YTQzN2FkOWI3OWRmZjAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrO21kNT1jYjQyYjY4NmVlNWY1Y2I4OTAyNzVlNDMyMWRiNjBhOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnI4YTc3OXhfdXNiMzttZDU9NGMxNjcxNjU2MTUzMDI1ZDcwNzYxMDVhNWRhN2U0OTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5yYWRlb247bWQ1PTY4ZWMyOGJhY2IzNjEzMjAwYmNhNDRmNDA0YzY5YjE2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZTttZDU9NzI4ZjFhODVmZDUzZmQ2N2ZhOGQ3YWZiMDgwYmM0MzUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0O21kNT1hYjJjMjY5Mjc3YzQ1NDc2ZmI0NDk2NzM5MTFhMmRmZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0O21kNT0wMGQwNmNmZDNlZGRkNWEyNjk4OTQ4ZWFkMmFkNTRhNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnNkbWFfZmlybXdhcmU7bWQ1PTUxZThjMTllY2MyMjcwZjRiOGVhMzAzNDFhZDYzY2U5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uuc2lhbm87bWQ1PTQ1NTZjMWJmODMwMDY3ZjEyY2ExNTFhZDk1M2VjMmE1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGRhNzcwNi1maXJtd2FyZS50eHQ7bWQ1PTgzNTk5N2NmNWUzYzEzMWQwZGRkZDY5NWM3ZDkxMDNlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5O21kNT1jNWUwMmJlNjMzZjE0OTljMTA5ZDE2NTI1MTRkODVlYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnRpLWtleXN0b25lO21kNT0zYTg2MzM1ZDMyODY0YjBiZWY5OTZiZWUyNmNjMGYyYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlO21kNT00ZWQ3ZWE2YjUwN2NjYzU4M2I5ZDU5NDQxNzcxNDExOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnZpYV92dDY2NTY7bWQ1PWU0MTU5Njk0Y2JhNDJkNDM3N2E5MTJlNzhhNmU4NTBmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uud2wxMjUxO21kNT1hZDNmODE5MjJiYjllMTk3MDE0YmIxODcyODlkM2I1YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNDAwMDttZDU9MGZmNTFkMmRjNDlmY2UwNDgxNGM5MTU1MDgxMDkyZjAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDA7bWQ1PTFlMTcwYzEzMTc1MzIzYzMyYzdmNGQwOTk4ZDUzZjY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vV0hFTkNFO21kNT1jMjdkMGMwNmNkNWQzNzZkOGFiNTU4NjBlNjViYTRlNCBcCisgICAgICAgICAgICAgICAgICAgICIKKworIyBUaGVzZSBhcmUgbm90IGNvbW1vbiBsaWNlbnNlcywgc2V0IE5PX0dFTkVSSUNfTElDRU5TRSBmb3IgdGhlbQorIyBzbyB0aGF0IHRoZSBsaWNlbnNlIGZpbGVzIHdpbGwgYmUgY29waWVkIGZyb20gZmV0Y2hlZCBzb3VyY2UKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1BYmlsaXNdID0gIkxJQ0VOQ0UuQWJpbGlzIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFkc3Bfc3N0XSA9ICJMSUNFTkNFLmFkc3Bfc3N0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFnZXJlXSA9ICJMSUNFTkNFLmFnZXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtZGdwdV0gPSAiTElDRU5TRS5hbWRncHUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kLXVjb2RlXSA9ICJMSUNFTlNFLmFtZC11Y29kZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWxvZ2ljX3ZkZWNdID0gIkxJQ0VOU0UuYW1sb2dpY192ZGVjIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aGVyb3NfZmlybXdhcmVdID0gIkxJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hdG1lbF0gPSAiTElDRU5TRS5hdG1lbCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4XSA9ICJMSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2EwMTMyXSA9ICJMSUNFTkNFLmNhMDEzMiIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYWRlbmNlXSA9ICJMSUNFTkNFLmNhZGVuY2UiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2F2aXVtXSA9ICJMSUNFTkNFLmNhdml1bSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlXSA9ICJMSUNFTkNFLmNoZWxzaW9fZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY3cxMjAwXSA9ICJMSUNFTkNFLmN3MTIwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jeXByZXNzXSA9ICJMSUNFTkNFLmN5cHJlc3MiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZGliMDcwMF0gPSAiTElDRU5TRS5kaWIwNzAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWUxMDBdID0gIkxJQ0VOQ0UuZTEwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1lbmVfZmlybXdhcmVdID0gIkxJQ0VOQ0UuZW5lX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWZ3X3NzdF8wZjI4XSA9ICJMSUNFTkNFLmZ3X3NzdF8wZjI4IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWdvNzAwN10gPSAiTElDRU5DRS5nbzcwMDciCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtR1BMdjJdID0gIkdQTC0yIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWhmaTFfZmlybXdhcmVdID0gIkxJQ0VOU0UuaGZpMV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pMjQwMG1dID0gIkxJQ0VOQ0UuaTI0MDBtIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWk5MTVdID0gIkxJQ0VOU0UuaTkxNSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pYnRfZmlybXdhcmVdID0gIkxJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUludGNTU1QyXSA9ICJMSUNFTkNFLkludGNTU1QyIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWl0OTEzeF0gPSAiTElDRU5DRS5pdDkxM3giCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZV0gPSAiTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWthd2V0aF0gPSAiTElDRU5DRS5rYXdldGgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtTWFydmVsbF0gPSAiTElDRU5DRS5NYXJ2ZWxsIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1lZGlhdGVrXSA9ICJMSUNFTkNFLm1lZGlhdGVrIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1veGFdID0gIkxJQ0VOQ0UubW94YSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZV0gPSAiTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1uZXRyb25vbWVdID0gIkxJQ0VOQ0UuTmV0cm9ub21lIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW52aWRpYV0gPSAiTElDRU5DRS5udmlkaWEiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtT0xQQ10gPSAiTElDRU5DRS5PTFBDIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aDlrLWh0Y10gPSAiTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1waGFuZnddID0gIkxJQ0VOQ0UucGhhbmZ3IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFhdF0gPSAiTElDRU5DRS5xYXRfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWNvbV0gPSAiTElDRU5TRS5xY29tIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTEyODBdID0gIkxJQ0VOQ0UucWxhMTI4MCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xbGEyeHh4XSA9ICJMSUNFTkNFLnFsYTJ4eHgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcjhhNzc5eF91c2IzXSA9ICJMSUNFTkNFLnI4YTc3OXhfdXNiMyIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWRlb25dID0gIkxJQ0VOU0UucmFkZW9uIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWxpbmstZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rLWZpcm13YXJlLnR4dCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXNpYW5vXSA9ICJMSUNFTkNFLnNpYW5vIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlXSA9ICJMSUNFTlNFLnNkbWFfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZV0gPSAiTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10aS1jb25uZWN0aXZpdHldID0gIkxJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWtleXN0b25lXSA9ICJMSUNFTkNFLnRpLWtleXN0b25lIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlXSA9ICJMSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXZpYV92dDY2NTZdID0gIkxJQ0VOQ0UudmlhX3Z0NjY1NiIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS13bDEyNTFdID0gIkxJQ0VOQ0Uud2wxMjUxIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNDAwMF0gPSAiTElDRU5DRS54YzQwMDAiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM1MDAwXSA9ICJMSUNFTkNFLnhjNTAwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCitOT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCisKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9rZXJuZWwvZmlybXdhcmUvJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImFjMjkxYjIxZjM2NmFlMmEzNzE5M2VjOGYxNGMzOWQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMGU4MTFiMzczNmE3MmI4NzRhYzI3ZTEwNjYyZjVlNTQwOWIxY2FkZjhhYWI3YmE4OGU4ZjhiYzgwODM5ODYiCisKK2luaGVyaXQgYWxsYXJjaAorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19jb21waWxlKCkgeworCToKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnRklSTVdBUkVESVI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZScgaW5zdGFsbAorICAgICAgICBjcCBHUEwtMiBMSUNFTltDU11FLiogV0hFTkNFICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlLworfQorCisKK1BBQ0tBR0VTID0rICIke1BOfS1yYWxpbmstbGljZW5zZSAke1BOfS1yYWxpbmsgXAorICAgICAgICAgICAgICR7UE59LW10NzYwMXUtbGljZW5zZSAke1BOfS1tdDc2MDF1IFwKKyAgICAgICAgICAgICAke1BOfS1yYWRlb24tbGljZW5zZSAke1BOfS1yYWRlb24gXAorICAgICAgICAgICAgICR7UE59LW1hcnZlbGwtbGljZW5zZSAke1BOfS1wY2llODg5NyAke1BOfS1wY2llODk5NyBcCisgICAgICAgICAgICAgJHtQTn0tc2Q4Njg2ICR7UE59LXNkODY4OCAke1BOfS1zZDg3ODcgJHtQTn0tc2Q4Nzk3ICR7UE59LXNkODgwMSAke1BOfS1zZDg4ODcgJHtQTn0tc2Q4ODk3IFwKKyAgICAgICAgICAgICAke1BOfS11c2I4OTk3IFwKKyAgICAgICAgICAgICAke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiAke1BOfS13bDEyeHggJHtQTn0td2wxOHh4IFwKKyAgICAgICAgICAgICAke1BOfS12dDY2NTYtbGljZW5zZSAke1BOfS12dDY2NTYgXAorICAgICAgICAgICAgICR7UE59LXJ0bC1saWNlbnNlICR7UE59LXJ0bDgxODggJHtQTn0tcnRsODE5MmN1ICR7UE59LXJ0bDgxOTJjZSAke1BOfS1ydGw4MTkyc3UgJHtQTn0tcnRsODcyMyAke1BOfS1ydGw4ODIxIFwKKyAgICAgICAgICAgICAke1BOfS1ydGw4MTY4IFwKKyAgICAgICAgICAgICAke1BOfS1jeXByZXNzLWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LWJyb2FkY29tLWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LWJjbS0wYmI0LTAzMDYgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMTQzIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzIzNmIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjQgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjUgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQyYSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyOSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyOS1mdWxsbWFjIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzMwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM0IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM0MCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMzNSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMzNjIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzkgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzQzMGEwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzQ1NSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1MCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1MGMyIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU0IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU2IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU2LXBjaWUgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTY5IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU3MCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1OCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM2MDIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNjZiIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzY2YyBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM3MSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM3MyBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDN4eCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDN4eC1oZHIgXAorICAgICAgICAgICAgICR7UE59LWF0aGVyb3MtbGljZW5zZSAke1BOfS1hcjkxNzAgJHtQTn0tYXRoNmsgJHtQTn0tYXRoOWsgXAorICAgICAgICAgICAgICR7UE59LWdwbHYyLWxpY2Vuc2UgJHtQTn0tY2FybDkxNzAgXAorICAgICAgICAgICAgICR7UE59LWFyM2stbGljZW5zZSAke1BOfS1hcjNrICR7UE59LWF0aDEway1saWNlbnNlICR7UE59LWF0aDEwayAke1BOfS1xY2EgXAorICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAke1BOfS1pbXgtc2RtYS1saWNlbnNlICR7UE59LWlteC1zZG1hLWlteDZxICR7UE59LWlteC1zZG1hLWlteDdkIFwKKyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1saWNlbnNlICR7UE59LWl3bHdpZmkgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMTM1LTYgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC03ICR7UE59LWl3bHdpZmktMzE2MC04ICR7UE59LWl3bHdpZmktMzE2MC05IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTAgJHtQTn0taXdsd2lmaS0zMTYwLTEyICR7UE59LWl3bHdpZmktMzE2MC0xMyBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTE2ICR7UE59LWl3bHdpZmktMzE2MC0xNyBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwLTQgJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjAwMGcyYi01ICR7UE59LWl3bHdpZmktNjAwMGcyYi02IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwNTAtNCAke1BOfS1pd2x3aWZpLTYwNTAtNSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjYwIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjUgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NWQgJHtQTn0taXdsd2lmaS04MDAwYyAke1BOfS1pd2x3aWZpLTgyNjUgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktOTAwMCBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKKyAgICAgICAgICAgICAke1BOfS1pYnQtbGljZW5zZSAke1BOfS1pYnQgJHtQTn0taWJ0LW1pc2MgXAorICAgICAgICAgICAgICR7UE59LWlidC0xMS01ICR7UE59LWlidC0xMi0xNiAke1BOfS1pYnQtaHctMzctNyAke1BOfS1pYnQtaHctMzctOCBcCisgICAgICAgICAgICAgJHtQTn0taWJ0LTE3IFwKKyAgICAgICAgICAgICAke1BOfS1pOTE1LWxpY2Vuc2UgJHtQTn0taTkxNSBcCisgICAgICAgICAgICAgJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAke1BOfS1hZHNwLXNzdCBcCisgICAgICAgICAgICAgJHtQTn0tYm54Mi1taXBzIFwKKyAgICAgICAgICAgICAke1BOfS1saXF1aWRpbyBcCisgICAgICAgICAgICAgJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgJHtQTn0tbmV0cm9ub21lIFwKKyAgICAgICAgICAgICAke1BOfS1xYXQgJHtQTn0tcWF0LWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LXFjb20tbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS12ZW51cy0xLjggJHtQTn0tcWNvbS12ZW51cy00LjIgXAorICAgICAgICAgICAgICR7UE59LXFjb20tYWRyZW5vLWEzeHggJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1zZG04NDUtYXVkaW8gJHtQTn0tcWNvbS1zZG04NDUtY29tcHV0ZSAke1BOfS1xY29tLXNkbTg0NS1tb2RlbSBcCisgICAgICAgICAgICAgJHtQTn0td2hlbmNlLWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LWxpY2Vuc2UgXAorICAgICAgICAgICAgICIKKworIyBGb3IgYXRoZXJvcworTElDRU5TRV8ke1BOfS1hcjkxNzAgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tYXRoNmsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tYXRoOWsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIkZpcm13YXJlLWF0aGVyb3NfZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LWF0aGVyb3MtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKK0ZJTEVTXyR7UE59LWFyOTE3MCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTE3MCouZncgXAorIgorRklMRVNfJHtQTn0tYXRoNmsgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg2ayBcCisiCitGSUxFU18ke1BOfS1hdGg5ayA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTI3MS5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI3MDEwKi5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzkyNzEuZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2h0Y183MDEwLmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg5a19odGMvaHRjXzcwMTAtMS40LjAuZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfOTI3MS0xLjQuMC5mdyBcCisiCisKK1JERVBFTkRTXyR7UE59LWFyOTE3MCArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYXRoNmsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWF0aDlrICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCisKKyMgRm9yIGNhcmw5MTcwCitMSUNFTlNFXyR7UE59LWNhcmw5MTcwID0gIkZpcm13YXJlLUdQTHYyIgorTElDRU5TRV8ke1BOfS1ncGx2Mi1saWNlbnNlID0gIkZpcm13YXJlLUdQTHYyIgorCitGSUxFU18ke1BOfS1ncGx2Mi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvR1BMLTIiCitGSUxFU18ke1BOfS1jYXJsOTE3MCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2Nhcmw5MTcwKi5mdyBcCisiCisKK1JERVBFTkRTXyR7UE59LWNhcmw5MTcwICs9ICIke1BOfS1ncGx2Mi1saWNlbnNlIgorCisjIEZvciBRdWFsQ29tbUF0aG9zCitMSUNFTlNFXyR7UE59LWFyM2sgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgorTElDRU5TRV8ke1BOfS1hcjNrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgorTElDRU5TRV8ke1BOfS1hdGgxMGsgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCitMSUNFTlNFXyR7UE59LWF0aDEway1saWNlbnNlID0gIkZpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrIgorTElDRU5TRV8ke1BOfS1xY2EgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCisKK0ZJTEVTXyR7UE59LWFyM2stbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCitGSUxFU18ke1BOfS1hcjNrID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXIzayBcCisiCisKK0ZJTEVTXyR7UE59LWF0aDEway1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrIgorRklMRVNfJHtQTn0tYXRoMTBrID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoMTBrIFwKKyIKKworRklMRVNfJHtQTn0tcWNhID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNhIFwKKyIKKworUkRFUEVORFNfJHtQTn0tYXIzayArPSAiJHtQTn0tYXIzay1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYXRoMTBrICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjYSArPSAiJHtQTn0tYXRoMTBrLWxpY2Vuc2UiCisKKyMgRm9yIHJhbGluaworTElDRU5TRV8ke1BOfS1yYWxpbmsgPSAiRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIgorTElDRU5TRV8ke1BOfS1yYWxpbmstbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LXJhbGluay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgorRklMRVNfJHtQTn0tcmFsaW5rID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnQqLmJpbiBcCisiCisKK1JERVBFTkRTXyR7UE59LXJhbGluayArPSAiJHtQTn0tcmFsaW5rLWxpY2Vuc2UiCisKKyMgRm9yIG1lZGlhdGVrIE1UNzYwMVUKK0xJQ0VOU0VfJHtQTn0tbXQ3NjAxdSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKKworRklMRVNfJHtQTn0tbXQ3NjAxdS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorRklMRVNfJHtQTn0tbXQ3NjAxdSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL210NzYwMXUuYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0tbXQ3NjAxdSArPSAiJHtQTn0tbXQ3NjAxdS1saWNlbnNlIgorCisjIEZvciByYWRlb24KK0xJQ0VOU0VfJHtQTn0tcmFkZW9uID0gIkZpcm13YXJlLXJhZGVvbiIKK0xJQ0VOU0VfJHtQTn0tcmFkZW9uLWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFkZW9uIgorCitGSUxFU18ke1BOfS1yYWRlb24tbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UucmFkZW9uIgorRklMRVNfJHtQTn0tcmFkZW9uID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcmFkZW9uIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcmFkZW9uICs9ICIke1BOfS1yYWRlb24tbGljZW5zZSIKKworIyBGb3IgbWFydmVsbAorTElDRU5TRV8ke1BOfS1wY2llODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1wY2llODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg2ODYgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4Njg4ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODc4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg3OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4ODAxID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODg4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg4OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tdXNiODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiRmlybXdhcmUtTWFydmVsbCIKKworRklMRVNfJHtQTn0tbWFydmVsbC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5NYXJ2ZWxsIgorRklMRVNfJHtQTn0tcGNpZTg4OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4ODk3X3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tcGNpZTg5OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4OTk3X3dsYW5fdjQuYmluIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWV1YXJ0ODk5N19jb21ib192NC5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVzYjg5OTdfY29tYm9fdjQuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXNkODY4NiA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2xpYmVydGFzL3NkODY4Nl92OSogXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3NkODY4NiogXAorIgorRklMRVNfJHtQTn0tc2Q4Njg4ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg4KiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg2ODgqIFwKKyIKK0ZJTEVTXyR7UE59LXNkODc4NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4Nzg3X3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4Nzk3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3OTdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1zZDg4MDEgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODgwMV91YXBzdGEuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXNkODg4NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODg3X3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4ODk3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4OTdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS11c2I4OTk3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC91c2J1c2I4OTk3X2NvbWJvX3Y0LmJpbiBcCisiCisKK1JERVBFTkRTXyR7UE59LXNkODY4NiArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4Njg4ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg3ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODc5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4ODAxICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg4ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODg5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tdXNiODk5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorCisjIEZvciBuZXRyb25vbWUKK0xJQ0VOU0VfJHtQTn0tbmV0cm9ub21lID0gIkZpcm13YXJlLW5ldHJvbm9tZSIKKworRklMRVNfJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk5ldHJvbm9tZSBcCisiCitGSUxFU18ke1BOfS1uZXRyb25vbWUgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDgxKi5uZmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk2Ki5uZmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk3Ki5uZmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk5Ki5uZmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tbmV0cm9ub21lICs9ICIke1BOfS1uZXRyb25vbWUtbGljZW5zZSIKKworIyBGb3IgcnRsCitMSUNFTlNFXyR7UE59LXJ0bDgxODggPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODE5MmN1ID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDgxOTJjZSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4MTkyc3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODcyMyA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4ODIxID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bC1saWNlbnNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDgxNjggPSAiV0hFTkNFIgorCitGSUxFU18ke1BOfS1ydGwtbGljZW5zZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQgXAorIgorRklMRVNfJHtQTn0tcnRsODE4OCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE4OCouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxOTJjdSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmN1ZncqLmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4MTkyY2UgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDgxOTJjZncqLmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4MTkyc3UgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MTJ1LmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4NzIzID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4NzIzKi5iaW4gXAorIgorRklMRVNfJHtQTn0tcnRsODgyMSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODgyMSouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxNjggPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGxfbmljL3J0bDgxNjgqLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcnRsODE4OCArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4MTkyY2UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODE5MmN1ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDgxOTJzdSA9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDg3MjMgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODgyMSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4MTY4ICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKKworIyBGb3IgdGktY29ubmVjdGl2aXR5CitMSUNFTlNFXyR7UE59LXdsY29tbW9uID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKK0xJQ0VOU0VfJHtQTn0td2wxMnh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKK0xJQ0VOU0VfJHtQTn0td2wxOHh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKK0xJQ0VOU0VfJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorCitGSUxFU18ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgorIyB3bDE4eHggb3B0aW9uYWxseSBuZWVkcyB3bDEyNzEtbnZzLmJpbiAod2hpY2ggaXRzZWxmIGlzIGEgc3ltbGluayB0bworIyB3bDEyN3gtbnZzLmJpbikgLSBzZWUgbGludXgvZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3NkaW8uYworIyBhbmQgZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3NwaS5jLgorIyBXaGlsZSB0aGV5J3JlIG9wdGlvbmFsIGFuZCBhY3R1YWxseSBvbmx5IHVzZWQgdG8gb3ZlcnJpZGUgdGhlIE1BQworIyBhZGRyZXNzIG9uIHdsMTh4eCwgZHJpdmVyIGxvYWRpbmcgd2lsbCBkZWxheSAoYnkgdWRldiB0aW1vdXQgLSA2MHMpCisjIGlmIG5vdCB0aGVyZS4gU28gbGV0J3MgbWFrZSBpdCBhdmFpbGFibGUgYWx3YXlzLiBCZWNhdXNlIGl0J3MgYQorIyBzeW1saW5rLCBib3RoIG5lZWQgdG8gZ28gdG8gd2xjb21tb24uCitGSUxFU18ke1BOfS13bGNvbW1vbiA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS9USSogXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDEyN3gtbnZzLmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTI3MS1udnMuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXdsMTJ4eCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDEyKiBcCisiCitGSUxFU18ke1BOfS13bDE4eHggPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS90aS1jb25uZWN0aXZpdHkvd2wxOCogXAorIgorCitSREVQRU5EU18ke1BOfS13bDEyeHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCitSREVQRU5EU18ke1BOfS13bDE4eHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCisKKyMgRm9yIHZ0NjY1NgorTElDRU5TRV8ke1BOfS12dDY2NTYgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKK0xJQ0VOU0VfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKKworRklMRVNfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnZpYV92dDY2NTYiCitGSUxFU18ke1BOfS12dDY2NTYgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS92bnR3dXNiLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tdnQ2NjU2ID0gIiR7UE59LXZ0NjY1Ni1saWNlbnNlIgorCisjIEZvciBicm9hZGNvbQorCisjIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIiAgICAgICAgICAgICBcJHtQTn0tJHBrZyBcXCI7IGRvbmUgIHwgc29ydCAtdQorCitMSUNFTlNFXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK0ZJTEVTXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCisKKyMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAiJGkgLSAkcGtnIjsgZWNobyAtZSAiRklMRVNfXCR7UE59LSRwa2cgPSBcIlwke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vJGlcIiI7IGRvbmUgfCBncmVwIF5GSUxFUworCitGSUxFU18ke1BOfS1iY200M3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200M3h4LTAuZnciCitGSUxFU18ke1BOfS1iY200M3h4LWhkciA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDN4eF9oZHItMC5mdyIKK0ZJTEVTXyR7UE59LWJjbTQzMjktZnVsbG1hYyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDMyOS1mdWxsbWFjLTQuYmluIgorRklMRVNfJHtQTn0tYmNtNDMyMzZiID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjM2Yi5iaW4iCitGSUxFU18ke1BOfS1iY200MzI5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjktc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDMzNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM0LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMzNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM1LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMzOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM5LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDFiMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWIwLXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDFiNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI0LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDFiNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI1LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDJhID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQyYS5iaW4iCitGSUxFU18ke1BOfS1iY200MzE0MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My1zZGlvLmJpbiBcCisiCitGSUxFU18ke1BOfS1iY200MzQzMGEwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwYTAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM0NTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0NTUtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM1MGMyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTBjMi1wY2llLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1MC1wY2llLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1Ni1zZGlvLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTY5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTY5LmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTcwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTcwLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1OCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU4LXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM2MDIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2MDItcGNpZS5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzYwMi1wY2llLmFwLmJpbiBcCisiCitGSUxFU18ke1BOfS1iY200MzY2YiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzY2Yi1wY2llLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNjZjID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjZjLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM3MSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzcxLXBjaWUuYmluIgorCisjIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIkxJQ0VOU0VfXCR7UE59LSRwa2cgPSBcIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhcIlxuUkRFUEVORFNfXCR7UE59LSRwa2cgKz0gXCJcJHtQTn0tYnJvYWRjb20tbGljZW5zZVwiIjsgZG9uZQorIyBDdXJyZW50bHkgMXN0IG9uZSBhbmQgbGFzdCA2IGhhdmUgY3lwcmVzcyBMSUNFTlNFCisKK0xJQ0VOU0VfJHtQTn0tYmNtNDN4eCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDN4eCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDN4eC1oZHIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzeHgtaGRyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzI5LWZ1bGxtYWMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjktZnVsbG1hYyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyMzZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzIzNmIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQxYjAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjQxYjAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQxYjQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjQxYjQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQxYjUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjQxYjUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQyYSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDJhICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzE0MyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMxNDMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNDMwYTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNDMwYTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNDU1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzQ1NSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1MGMyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzUwYzIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTYgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTYgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTY5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzU2OSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTcwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU4ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzU4ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzYwMiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM2MDIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNjZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzY2YiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM2NmMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNjZjICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzcxID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzcxICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorCisjIEZvciBicm9hZGNvbSBjeXByZXNzCisKK0xJQ0VOU0VfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIkZpcm13YXJlLWN5cHJlc3MiCitGSUxFU18ke1BOfS1jeXByZXNzLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmN5cHJlc3MiCisKK0ZJTEVTXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTS0wYmI0LTAzMDYuaGNkIgorRklMRVNfJHtQTn0tYmNtNDMzNDAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNDAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDMzNjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNjItc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM0MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM1NCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU0LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDM1Ni1wY2llID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTYtcGNpZS4qIgorRklMRVNfJHtQTn0tYmNtNDM3MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzczLXNkaW8uYmluIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3My5iaW4gXAorIgorCitMSUNFTlNFXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbS0wYmI0LTAzMDYgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNDAgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzQwICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzYyID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzM2MiArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzQzMCA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDM0MzAgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NCA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDM1NCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU2LXBjaWUgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTYtcGNpZSArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzczID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzczICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCisKKyMgRm9yIEJyb2FkY29tIGJueDItbWlwcworIworIyB3aGljaCBpcyBhIHNlcGFyYXRlIGNhc2UgdG8gdGhlIG90aGVyIEJyb2FkY29tIGZpcm13YXJlcyBzaW5jZSBpdHMKKyMgbGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIHNoYXJlZCBXSEVOQ0UgZmlsZS4KKworTElDRU5TRV8ke1BOfS1ibngyLW1pcHMgPSAiV0hFTkNFIgorTElDRU5TRV8ke1BOfS13aGVuY2UtbGljZW5zZSA9ICJXSEVOQ0UiCisKK0ZJTEVTXyR7UE59LWJueDItbWlwcyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JueDIvYm54Mi1taXBzLTA5LTYuMi4xYi5mdyIKK0ZJTEVTXyR7UE59LXdoZW5jZS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvV0hFTkNFIgorCitSREVQRU5EU18ke1BOfS1ibngyLW1pcHMgKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgorCisjIEZvciBpbXgtc2RtYQorTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1pbXg2cSAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taW14LXNkbWEtaW14N2QgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LWlteC1zZG1hLWlteDZxID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg2cS5iaW4iCisKK1JQUk9WSURFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKK1JSRVBMQUNFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKK1JDT05GTElDVFNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCisKK0ZJTEVTXyR7UE59LWlteC1zZG1hLWlteDdkID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg3ZC5iaW4iCisKK0ZJTEVTXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnNkbWFfZmlybXdhcmUiCisKK1JERVBFTkRTXyR7UE59LWlteC1zZG1hLWlteDZxICs9ICIke1BOfS1pbXgtc2RtYS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taW14LXNkbWEtaW14N2QgKz0gIiR7UE59LWlteC1zZG1hLWxpY2Vuc2UiCisKKyMgRm9yIGl3bHdpZmkKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaSAgICAgICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0xMzUtNiAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTcgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTggICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTkgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEwICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEyICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEzICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE2ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE3ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTUgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjYwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS1saWNlbnNlICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKKworCitGSUxFU18ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTEzNS02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0xMzUtNi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC03ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTcudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC04LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtOS51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMC51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMy51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNy51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMC00ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwLTQudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYS01LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmEtNi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJiLTUudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYi02LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDUwLTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwNTAtNC51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjA1MC01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDUwLTUudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTcyNjAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2MC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjUtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNzI2NWQgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NUQtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktODAwMGMgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODAwMEMtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktODI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MjY1LSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTkwMDAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktOTAwMC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCisKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC03ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC04ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC05ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMCAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC01ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2MCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktOTAwMCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKKworIyAtaXdsd2lmaS1taXNjIGlzIGEgImNhdGNoIGFsbCIgcGFja2FnZSB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgaXdsd2lmaQorIyBmaXJtd2FyZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gb3RoZXIgLWl3bHdpZmktIHBhY2thZ2VzLgorIyAtaXdsd2lmaSBpcyBhIHZpcnR1YWwgcGFja2FnZSB0aGF0IGRlcGVuZHMgdXBvbiBhbGwgaXdsd2lmaSBwYWNrYWdlcy4KKyMgVGhlc2UgYXJlIGRpc3RpbmN0IGluIG9yZGVyIHRvIGFsbG93IHRoZSAtbWlzYyBmaXJtd2FyZXMgdG8gYmUgaW5zdGFsbGVkCisjIHdpdGhvdXQgcHVsbGluZyBpbiBldmVyeSBvdGhlciBpd2x3aWZpIHBhY2thZ2UuCitBTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpLW1pc2MgPSAiMSIKKworIyBIYW5kbGUgcGFja2FnZSB1cGRhdGluZyBmb3IgdGhlIG5ld2x5IG1lcmdlZCBpd2x3aWZpIGdyb3VwaW5ncworUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKK1JSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCitSQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKKworUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKK1JSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCitSQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKKworIyBGb3IgaWJ0CitMSUNFTlNFXyR7UE59LWlidC1saWNlbnNlID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtaHctMzctOCA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC0xMS01ICAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LTEyLTE2ICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtMTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtbWlzYyAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LWlidC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5pYnRfZmlybXdhcmUiCitGSUxFU18ke1BOfS1pYnQtaHctMzctNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC1ody0zNy43Ki5ic2VxIgorRklMRVNfJHtQTn0taWJ0LWh3LTM3LTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuOCouYnNlcSIKK0ZJTEVTXyR7UE59LWlidC0xMS01ICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuZGRjIgorRklMRVNfJHtQTn0taWJ0LTEyLTE2ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LmRkYyIKK0ZJTEVTXyR7UE59LWlidC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLmRkYyIKK0ZJTEVTXyR7UE59LWlidC1taXNjICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaWJ0LSoiCisKK1JERVBFTkRTXyR7UE59LWlidC1ody0zNy03ID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LjggPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LTE3ID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCisKK0FMTE9XX0VNUFRZXyR7UE59LWlidD0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1pYnQtbWlzYyA9ICIxIgorCitMSUNFTlNFXyR7UE59LWk5MTUgICAgICAgPSAiRmlybXdhcmUtaTkxNSIKK0xJQ0VOU0VfJHtQTn0taTkxNS1saWNlbnNlID0gIkZpcm13YXJlLWk5MTUiCitGSUxFU18ke1BOfS1pOTE1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLmk5MTUiCitGSUxFU18ke1BOfS1pOTE1ICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pOTE1IgorUkRFUEVORFNfJHtQTn0taTkxNSAgICAgID0gIiR7UE59LWk5MTUtbGljZW5zZSIKKworRklMRVNfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hZHNwX3NzdCIKK0xJQ0VOU0VfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKK0xJQ0VOU0VfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKK0ZJTEVTXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2RzcF9mdyoiCitSREVQRU5EU18ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgPSAiJHtQTn0tYWRzcC1zc3QtbGljZW5zZSIKKworIyBGb3IgUUFUCitMSUNFTlNFXyR7UE59LXFhdCAgICAgICAgID0gIkZpcm13YXJlLXFhdCIKK0xJQ0VOU0VfJHtQTn0tcWF0LWxpY2Vuc2UgPSAiRmlybXdhcmUtcWF0IgorRklMRVNfJHtQTn0tcWF0LWxpY2Vuc2UgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucWF0X2Zpcm13YXJlIgorRklMRVNfJHtQTn0tcWF0ICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3FhdCouYmluIgorUkRFUEVORFNfJHtQTn0tcWF0ICAgICAgICA9ICIke1BOfS1xYXQtbGljZW5zZSIKKworIyBGb3IgUUNPTSBWUFUvR1BVIGFuZCBTRE04NDUKK0xJQ0VOU0VfJHtQTn0tcWNvbS1saWNlbnNlID0gIkZpcm13YXJlLXFjb20iCitGSUxFU18ke1BOfS1xY29tLWxpY2Vuc2UgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UucWNvbSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vTk9USUNFLnR4dCIKK0ZJTEVTXyR7UE59LXFjb20tdmVudXMtMS44ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS92ZW51cy0xLjgvKiIKK0ZJTEVTXyR7UE59LXFjb20tdmVudXMtNC4yID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS92ZW51cy00LjIvKiIKK0ZJTEVTXyR7UE59LXFjb20tYWRyZW5vLWEzeHggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL2EzMDBfKi5mdyAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2EzMDBfKi5mdyIKK0ZJTEVTXyR7UE59LXFjb20tYWRyZW5vLWE1MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL2E1MzAqLioiCitGSUxFU18ke1BOfS1xY29tLXNkbTg0NS1hdWRpbyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vc2RtODQ1L2Fkc3AqLioiCitGSUxFU18ke1BOfS1xY29tLXNkbTg0NS1jb21wdXRlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvY2RzcCouKiIKK0ZJTEVTXyR7UE59LXFjb20tc2RtODQ1LW1vZGVtID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvbWJhLm1ibiAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vc2RtODQ1L21vZGVtKi4qIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7UE59LXFjb20tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjb20tc2RtODQ1LWF1ZGlvID0gIiR7UE59LXFjb20tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjb20tc2RtODQ1LWNvbXB1dGUgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1zZG04NDUtbW9kZW0gPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorCitGSUxFU18ke1BOfS1saXF1aWRpbyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2xpcXVpZGlvIgorCisjIEZvciBvdGhlciBmaXJtd2FyZXMKKyMgTWF5YmUgc3BsaXQgb3V0IHRvIHNlcGFyYXRlIHBhY2thZ2VzIHdoZW4gbmVlZGVkLgorTElDRU5TRV8ke1BOfSA9ICJcCisgICAgRmlybXdhcmUtQWJpbGlzIFwKKyAgICAmIEZpcm13YXJlLWFnZXJlIFwKKyAgICAmIEZpcm13YXJlLWFtZGdwdSBcCisgICAgJiBGaXJtd2FyZS1hbWQtdWNvZGUgXAorICAgICYgRmlybXdhcmUtYXRtZWwgXAorICAgICYgRmlybXdhcmUtY2EwMTMyIFwKKyAgICAmIEZpcm13YXJlLWNhdml1bSBcCisgICAgJiBGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWN3MTIwMCBcCisgICAgJiBGaXJtd2FyZS1kaWIwNzAwIFwKKyAgICAmIEZpcm13YXJlLWUxMDAgXAorICAgICYgRmlybXdhcmUtZW5lX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWZ3X3NzdF8wZjI4IFwKKyAgICAmIEZpcm13YXJlLWdvNzAwNyBcCisgICAgJiBGaXJtd2FyZS1oZmkxX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWkyNDAwbSBcCisgICAgJiBGaXJtd2FyZS1pYnRfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaXQ5MTN4IFwKKyAgICAmIEZpcm13YXJlLUludGNTU1QyIFwKKyAgICAmIEZpcm13YXJlLWthd2V0aCBcCisgICAgJiBGaXJtd2FyZS1tb3hhIFwKKyAgICAmIEZpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLW52aWRpYSBcCisgICAgJiBGaXJtd2FyZS1PTFBDIFwKKyAgICAmIEZpcm13YXJlLWF0aDlrLWh0YyBcCisgICAgJiBGaXJtd2FyZS1waGFuZncgXAorICAgICYgRmlybXdhcmUtcWF0IFwKKyAgICAmIEZpcm13YXJlLXFjb20gXAorICAgICYgRmlybXdhcmUtcWxhMTI4MCBcCisgICAgJiBGaXJtd2FyZS1xbGEyeHh4IFwKKyAgICAmIEZpcm13YXJlLXI4YTc3OXhfdXNiMyBcCisgICAgJiBGaXJtd2FyZS1yYWRlb24gXAorICAgICYgRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtc2lhbm8gXAorICAgICYgRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkgXAorICAgICYgRmlybXdhcmUtdGkta2V5c3RvbmUgXAorICAgICYgRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtd2wxMjUxIFwKKyAgICAmIEZpcm13YXJlLXhjNDAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDAgXAorICAgICYgRmlybXdhcmUteGM1MDAwYyBcCisgICAgJiBXSEVOQ0UgXAorIgorCitGSUxFU18ke1BOfS1saWNlbnNlICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOKiIKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlLyoiCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKKworIyBNYWtlIGxpbnV4LWZpcm13YXJlIGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBwYWNrYWdlcy4KKyMgTWFrZSBsaW51eC1maXJtd2FyZS1pd2x3aWZpIGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBpd2x3aWZpIHBhY2thZ2VzLgorIyBNYWtlIGxpbnV4LWZpcm13YXJlLWlidCBkZXBlbmQgb24gYWxsIG9mIHRoZSBzcGxpdC1vdXQgaWJ0IHBhY2thZ2VzLgorcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGZpcm13YXJlX3BrZ3MgPSBvZS51dGlscy5wYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQorICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU19saW51eC1maXJtd2FyZScsICcgJyArICcgJy5qb2luKGZpcm13YXJlX3BrZ3MpKQorCisgICAgaXdsd2lmaV9wa2dzID0gZmlsdGVyKGxhbWJkYSB4OiB4LmZpbmQoJy1pd2x3aWZpLScpICE9IC0xLCBmaXJtd2FyZV9wa2dzKQorICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU19saW51eC1maXJtd2FyZS1pd2x3aWZpJywgJyAnICsgJyAnLmpvaW4oaXdsd2lmaV9wa2dzKSkKKworICAgIGlidF9wa2dzID0gZmlsdGVyKGxhbWJkYSB4OiB4LmZpbmQoJy1pYnQtJykgIT0gLTEsIGZpcm13YXJlX3BrZ3MpCisgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlLWlidCcsICcgJyArICcgJy5qb2luKGlidF9wa2dzKSkKK30KKworIyBGaXJtd2FyZSBmaWxlcyBhcmUgZ2VuZXJhbGx5IG5vdCByYW4gb24gdGhlIENQVSwgc28gdGhleSBjYW4gYmUKKyMgYWxsYXJjaCBkZXNwaXRlIGJlaW5nIGFyY2hpdGVjdHVyZSBzcGVjaWZpYworSU5TQU5FX1NLSVAgPSAiYXJjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwppbmRleCA3ZjgzOGY2Li40NDgxYWE0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCkBAIC05MSw0ICs5MSw0IEBACiBSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotREVQRU5EUyArPSAidW5pZmRlZi1uYXRpdmUgYmlzb24tbmF0aXZlIgorREVQRU5EUyArPSAidW5pZmRlZi1uYXRpdmUgYmlzb24tbmF0aXZlIHJzeW5jLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGIyNDQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDg5NzczNjE2NmZkNzA5OTA2YTVmZGYxNmViMjNmOGZkZGZmNzcwYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMSBNYXIgMjAxOCAxODozMTowMSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBpZl9ldGhlcjogbW92ZSBtdXNsYyBldGhoZHIgcHJvdGVjdGlvbiB0byB1YXBpIGZpbGUKLQotU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGluY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCi1pbmRleCAxNTNjOWMyLi43YjY5YjczIDEwMDY0NAotLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLSsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCi1AQCAtMTQ5LDYgKzE0OSwxMiBAQAotICAqCVRoaXMgaXMgYW4gRXRoZXJuZXQgZnJhbWUgaGVhZGVyLgotICAqLwotIAotKyNpZmRlZiBfTkVUSU5FVF9JRl9FVEhFUl9IIC8qIG11c2wgKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDAKLSsjZWxzZSAvKiBnbGliYyB1c2VzIF9fTkVUSU5FVF9JRl9FVEhFUl9ILCBhbmQgaW5jbHVkZXMgdGhlIGtlcm5lbCBoZWFkZXIuICovCi0rI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAxCi0rI2VuZGlmCi0rCi0gLyogYWxsb3cgbGliY3MgbGlrZSBtdXNsIHRvIGRlYWN0aXZhdGUgdGhpcywgZ2xpYmMgZG9lcyBub3QgaW1wbGVtZW50IHRoaXMuICovCi0gI2lmbmRlZiBfX1VBUElfREVGX0VUSEhEUgotICNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIJCTEKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoCmluZGV4IDc4ZWJkMzEuLjU0NTI4YjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEta2J1aWxkLWluc3RhbGxfaGVhZGVycy5zaC1TdHJpcC1fVUFQSS1mcm9tLWlmLWRlZmluZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2gKQEAgLTI0LDE4ICsyNCwxNSBAQAogIHNjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKLWRpZmYgLS1naXQgYS9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaCBiL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCi1pbmRleCA1OTNmODg3OWM2NDEuLmZlMWQzZmMwZDMzYSAxMDA3NTUKLS0tLSBhL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCi0rKysgYi9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaAotQEAgLTM4LDYgKzM4LDcgQEAgZG8KLSAJCS1lICdzLyhefFteYS16QS1aMC05XSlfX3BhY2tlZChbXmEtekEtWjAtOV9dfCQpL1wxX19hdHRyaWJ1dGVfXygocGFja2VkKSlcMi9nJyBcCi0gCQktZSAncy8oXnxbWzpzcGFjZTpdKF0pKGlubGluZXxhc218dm9sYXRpbGUpKFtbOnNwYWNlOl0oXXwkKS9cMV9fXDJfX1wzL2cnIFwKLSAJCS1lICdzQCMoaWZuZGVmfGRlZmluZXxlbmRpZltbOnNwYWNlOl1dKi9bKl0pW1s6c3BhY2U6XV0qX1VBUElAI1wxIEAnIFwKLSsJCS1lICc6MTtzLygjKGlmfGVsaWYpKC4qW15BLVphLXowLTlfXSlkZWZpbmVkXChbWzpzcGFjZTpdXSopX1VBUEkvXDEvO3QxJyBcCi0gCQkiJFNSQ0RJUi8kaSIgPiAiJE9VVERJUi8kRklMRS5zZWQiIHx8IGV4aXQgMQotIAlzY3JpcHRzL3VuaWZkZWYgLVVfX0tFUk5FTF9fIC1EX19FWFBPUlRFRF9IRUFERVJTX18gIiRPVVRESVIvJEZJTEUuc2VkIiBcCi0gCQk+ICIkT1VURElSLyRGSUxFIgotLS0gCi0yLjUuMAotCitJbmRleDogbGludXgtNS40L3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGludXgtNS40Lm9yaWcvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKKysrKyBsaW51eC01LjQvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKK0BAIC0zNiw2ICszNiw3IEBACisgCXMvKF58W15hLXpBLVowLTldKV9fcGFja2VkKFteYS16QS1aMC05X118JCkvXDFfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKVwyL2cKKyAJcy8oXnxbWzpzcGFjZTpdKF0pKGlubGluZXxhc218dm9sYXRpbGUpKFtbOnNwYWNlOl0oXXwkKS9cMV9fXDJfX1wzL2cKKyAJc0AjKGlmbmRlZnxkZWZpbmV8ZW5kaWZbWzpzcGFjZTpdXSovWypdKVtbOnNwYWNlOl1dKl9VQVBJQCNcMSBACisrICAgICAgICA6MTtzLygjKGlmfGVsaWYpKC4qW15BLVphLXowLTlfXSlkZWZpbmVkXChbWzpzcGFjZTpdXSopX1VBUEkvXDEvO3QxCisgJyAkSU5GSUxFID4gJFRNUEZJTEUgfHwgZXhpdCAxCisgCisgc2NyaXB0cy91bmlmZGVmIC1VX19LRVJORUxfXyAtRF9fRVhQT1JURURfSEVBREVSU19fICRUTVBGSUxFID4gJE9VVEZJTEUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiN2UxZGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDc1YmE0YTU0NzI4MmY5MWQ2NTM4NzJhNGJiYTVmNWVhZTIzNGVhNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiByb2ZsMHIgPHJldG55Z0BnbXgubmV0PgotRGF0ZTogV2VkLCAyMiBKYW4gMjAxNCAwMDo1Nzo0OCArMDEwMAotU3ViamVjdDogW1BBVENIIDIvM10gbGliYy1jb21wYXQuaDogcHJldmVudCByZWRlZmluaXRpb24gb2Ygc3RydWN0IGV0aGhkcgotCi0tLS0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggICAgfCA0ICsrKy0KLSBpbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaCB8IDYgKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGxpbnV4LTQuMTUvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzgzNzA3MzEgLTA1MDAKLSsrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6NDA6NDIuMzM0MzcwNjAzIC0wNTAwCi1AQCAtNTEsNiArNTEsMTIgQEAKLSAKLSAjaWZuZGVmIF9fS0VSTkVMX18gLyogd2UncmUgdXNlZCBmcm9tIHVzZXJzcGFjZSAqLwotIAotKyNpZmRlZiBfTkVUSU5FVF9JRl9FVEhFUl9IIC8qIG11c2wgKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDAKLSsjZWxzZSAvKiBnbGliYyB1c2VzIF9fTkVUSU5FVF9JRl9FVEhFUl9ILCBhbmQgaW5jbHVkZXMgdGhlIGtlcm5lbCBoZWFkZXIuICovCi0rI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAxCi0rI2VuZGlmCi0rCi0gLyogQ29vcmRpbmF0ZSB3aXRoIGxpYmMgbmV0L2lmLmggaGVhZGVyLiAqLwotICNpZiBkZWZpbmVkKF9ORVRfSUZfSCkKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxOGRmNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaCBcCi0gICAiCi0KLVNSQ19VUklfYXBwZW5kID0gIlwKLSAgICBmaWxlOi8vMDAwMS1zY3JpcHRzLVVzZS1maXhlZC1pbnB1dC1hbmQtb3V0cHV0LWZpbGVzLWluc3RlYWQtb2YtLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRkZjk5NGRlMDBkN2IxODM5NTg4NmRkOWIzMGI5MjYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0YWQ2NmY2NzJlMWE4MzFiNTc0ZjVlNzA0ZThhMDVmMWU2MTgwYTgyNDVkNGJkZDgxMTIwOGE2Y2IwYWMxZTciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExMjEwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuNC5iYgpAQCAtMCwwICsxLDE2IEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaCBcCisgICAiCisKK1NSQ19VUklfYXBwZW5kID0gIlwKKyAgICBmaWxlOi8vMDAwMS1zY3JpcHRzLVVzZS1maXhlZC1pbnB1dC1hbmQtb3V0cHV0LWZpbGVzLWluc3RlYWQtb2YtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImNlOWIyZDk3NGQyNzQwOGE2MWM1M2EzMGQzZjk4ZmI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmMzM4OTgwYjE2NzBiY2EyODdmOTk5NGI3NDQxYzIzNjE5MDc2MzU4NzkxNjljNjRhZTc4MzY0ZWZjNWY0OTEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCmluZGV4IGI2OGQ5NDUuLjU5NDBjYzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCkBAIC03OCw3ICs3OCw3IEBACiAJICAgIGNwIE1vZHVsZS5tYXJrZXJzICRrZXJuZWxkaXIvYnVpbGQKIAlmaQogCi0JY3AgLmNvbmZpZyAka2VybmVsZGlyL2J1aWxkCisJY3AgLWEgLmNvbmZpZyAka2VybmVsZGlyL2J1aWxkCiAKIAkjIFRoaXMgc2NyaXB0cyBjb3B5IGJsb3cgdXAgUUEsIHNvIGZvciBub3csIHdlIHJlcXVpcmUgYSBtb3JlCiAJIyBjb21wbGV4ICdtYWtlIHNjcmlwdHMnIHRvIHJlc3RvcmUgdGhlc2UsIHZlcnN1cyBjb3B5aW5nIHRoZW0KQEAgLTEyOCwxMSArMTI4LDEyIEBACiAKIAkgICAgIyBleHRyYSBmaWxlcywganVzdCBpbiBjYXNlCiAJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9vYmp0b29sLyogJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdHJfZXJyb3Jfci5jICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9saWIvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi8qICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9saWIvc3ViY21kLyogJGtlcm5lbGRpci9idWlsZC8KIAogCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvaW5jbHVkZS8qICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCB0b29scy9hcmNoLyR7QVJDSH0vIC10eXBlIGYpICRrZXJuZWxkaXIvYnVpbGQvCiAJZmkKIAogCWlmIFsgIiR7QVJDSH0iID0gImFybTY0IiBdOyB0aGVuCkBAIC0xNDYsNyArMTQ3LDcgQEAKICAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL25vdGUuUyAka2VybmVsZGlyL2J1aWxkLwogICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vZ2VuX3Zkc29fb2Zmc2V0cy5zaCAka2VybmVsZGlyL2J1aWxkLwogCi0gICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmxkcyAka2VybmVsZGlyL2J1aWxkLworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL21vZHVsZS5sZHMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCWZpCiAKIAlpZiBbICIke0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCkBAIC0xODUsMTkgKzE4NiwyMSBAQAogCWNwIC1hIC0tcGFyZW50cyB0b29scy9pbmNsdWRlL3Rvb2xzL2JlX2J5dGVzaGlmdC5oICRrZXJuZWxkaXIvYnVpbGQvCiAKIAkjIHJlcXVpcmVkIGZvciBnZW5lcmF0ZSBtaXNzaW5nIHN5c2NhbGxzIHByZXBhcmUgcGhhc2UKLQljcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwgJGtlcm5lbGRpci9idWlsZAorCWNwIC1hIC0tcGFyZW50cyAkKGZpbmQgYXJjaC94ODYgLXR5cGUgZiAtbmFtZSAic3lzY2FsbF8zMi50YmwiKSAka2VybmVsZGlyL2J1aWxkCisJY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL2FybSAtdHlwZSBmIC1uYW1lICIqLnRibCIpICRrZXJuZWxkaXIvYnVpbGQgMj4vZGV2L251bGwgfHwgOgogCiAJaWYgWyAiJHtBUkNIfSIgPSAieDg2IiBdOyB0aGVuCiAJICAgICMgZmlsZXMgZm9yICdtYWtlIHByZXBhcmUnIHRvIHN1Y2NlZWQgd2l0aCBrZXJuZWwtZGV2ZWwKLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsdGJsLnNoICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsaGRyLnNoICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGxfMzIudGJsIikgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsdGJsLnNoIikgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsaGRyLnNoIikgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsXzY0LnRibCIpICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3NfMzIuYyAka2VybmVsZGlyL2J1aWxkLwogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzXzY0LmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jcy5jICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3NfY29tbW9uLmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jcy5oICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9nZW4taW5zbi1hdHRyLXg4Ni5hd2sgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L3B1cmdhdG9yeS5jICRrZXJuZWxkaXIvYnVpbGQvCiAKIAkgICAgIyA0LjE4ICsgaGF2ZSB1bmlmaWVkIHRoZSBwdXJnYXRvcnkgZmlsZXMsIHNvIHdlIGlnbm9yZSBhbnkgZXJyb3JzIGlmCkBAIC0yMTMsNiArMjE2LDEwIEBACiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L3N0cmluZy5jICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvYm9vdC9jdHlwZS5oICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgIyBvYmp0b29sIHJlcXVpcmVzIHRoZXNlIGZpbGVzCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9saWIvaW5hdC5jICRrZXJuZWxkaXIvYnVpbGQvIDI+L2Rldi9udWxsIHx8IDoKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2xpYi9pbnNuLmMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCWZpCiAKIAlpZiBbICIke0FSQ0h9IiA9ICJtaXBzIiBdOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgppbmRleCAxNjNmMjgwLi4wNmE5MTA4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKQEAgLTMwLDExICszMCwxMSBAQAogU1JDUkVWX21hY2hpbmUgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIFNSQ1JFVl9tZXRhID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgImxpbnV4LXlvY3RvLWRldiIsICIke0FVVE9SRVZ9IiwgIjI5NTk0NDA0ZDdmZTczY2Q4MGVhYTRlZThjNDNkY2M1Mzk3MGM2MGUiLCBkKX0nCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjUuMy1yYysiCitMSU5VWF9WRVJTSU9OID89ICI1LjYtcmMrIgogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz0gIi15b2N0b2Rldi0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmJjNTM4ZWQ1YmQ5YTdmYzkzOTgwODZhZWRjZDdlNDYiCiAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgogREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCkBAIC00OCw3ICs0OCw3IEBACiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKIAogS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZWRiNjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1LQlJBTkNIID89ICJ2NC4xOS9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiMGU0YTc5ZTYwOGU5MjgzMDY5M2U1MTFhM2RkMjgyY2U3YzNiM2Y0MSIKLVNSQ1JFVl9tZXRhID89ICJhZDZmOGIzNTc3MjBjYTgxNjdhMDkwNzEzYjc3NDYyMzBjZjRiMzE0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xOS43OCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUxJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMzMzMWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUtCUkFOQ0ggPz0gInY1LjIvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCi0jIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZwotIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgotIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIiBhbmQgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gIjU1ZTNlZTM4N2IwNzNkOGQ2MDllODg5OTg1OTU2MTM0MGQ4YjY5MTEiCi1TUkNSRVZfbWV0YSA/PSAiYmQwNzYyY2QxMzhmMTYyNGI1YTVmODY2OWNmYTNhYzJiNzFjYjg3YiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01LjI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNS4yLjIwIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXVwcGN8cWVtdW1pcHMpIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTc0ZWMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuNC5iYgpAQCAtMCwwICsxLDQ0IEBACitLQlJBTkNIID89ICJ2NS40L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCit9CisKK1NSQ1JFVl9tYWNoaW5lID89ICI3OTAzN2FlNThlNmIwZGZkMGM2M2Q0YTBlMTMxZjFiZDVlZmU3ZTUzIgorU1JDUkVWX21ldGEgPz0gImJlZTU1NGU1OTVlNDljOTYzOTAwZDFjNzhjMDFhYjJkMDQxMzgyZTciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJTlVYX1ZFUlNJT04gPz0gIjUuNC4yNyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0xJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ODJhZWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUtCUkFOQ0ggPz0gInY0LjE5L3N0YW5kYXJkL3RpbnkvYmFzZSIKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY0LjE5L3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCi0KLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xOS43OCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJiZTUwMDAxODA4ZjAwZWZlZTUzOGMyYTNlN2MwYTVhMmEyZGY2NWRhIgotU1JDUkVWX21hY2hpbmUgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWV0YSA/PSAiYWQ2ZjhiMzU3NzIwY2E4MTY3YTA5MDcxM2I3NzQ2MjMwY2Y0YjMxNCIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE5O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjUiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MjM5ZDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC90aW55L2Jhc2UiCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4yL3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCi0KLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNS4yLjIwIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjUwMWQ2ODA1MzU5MDNhY2MwMDgwOGMzNmYyY2MwN2YyZGM3MjVhZGMiCi1TUkNSRVZfbWFjaGluZSA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tZXRhID89ICJiZDA3NjJjZDEzOGYxNjI0YjVhNWY4NjY5Y2ZhM2FjMmI3MWNiODdiIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNWU2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIKQEAgLTAsMCArMSwzMiBAQAorS0JSQU5DSCA/PSAidjUuNC9zdGFuZGFyZC90aW55L2Jhc2UiCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NS40L3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCisKK0xJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCitLQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworTElOVVhfVkVSU0lPTiA/PSAiNS40LjI3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjVjMmQzNWVlYjRiZTBlOGJhZTRjZjVlZTA3MzNlNDFmZjEyNjJmZjMiCitTUkNSRVZfbWFjaGluZSA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tZXRhID89ICJiZWU1NTRlNTk1ZTQ5Yzk2MzkwMGQxYzc4YzAxYWIyZDA0MTM4MmU3IgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9GRUFUVVJFUyA9ICIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKaW5kZXggZjE5MTk0Ni4uOTFkZjljMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCkBAIC0zOSwyMiArMzksNiBAQAogIyBhbmQgaXQgY2FuIGJlIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIG9yIHNoYXJlZAogIyBLTUFDSElORSA9ICJVTkRFRklORUQiCiAKLSMgVGhlIGRpc3RybyBvciBsb2NhbC5jb25mIHNob3VsZCBzZXQgdGhpcywgYnV0IGlmIG5vYm9keSBjYXJlcy4uLgotTElOVVhfS0VSTkVMX1RZUEUgPz89ICJzdGFuZGFyZCIKLQotIyBLTUVUQSA/PSAiIgotS0JSQU5DSCA/PSAibWFzdGVyIgotS01BQ0hJTkUgPz0gIiR7TUFDSElORX0iCi1TUkNSRVZfRk9STUFUID89ICJtZXRhX21hY2hpbmUiIAotCi0jIExFVkVMUzoKLSMgICAwOiBubyByZXBvcnRpbmcKLSMgICAxOiByZXBvcnQgb3B0aW9ucyB0aGF0IGFyZSBzcGVjaWZpZWQsIGJ1dCBub3QgaW4gdGhlIGZpbmFsIGNvbmZpZwotIyAgIDI6IHJlcG9ydCBvcHRpb25zIHRoYXQgYXJlIG5vdCBoYXJkd2FyZSByZWxhdGVkLCBidXQgc2V0IGJ5IGEgQlNQCi1LQ09ORl9BVURJVF9MRVZFTCA/PSAiMSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA/PSAiMCIKLUtNRVRBX0FVRElUID89ICJ5ZXMiCi0KIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OID8/PSAiLXlvY3RvLSR7TElOVVhfS0VSTkVMX1RZUEV9IgogCiAjIFBpY2sgdXAgc2hhcmVkIGZ1bmN0aW9ucwpAQCAtNjksMTAgKzUzLDUgQEAKIAlmaQogfQogCi0jIGV4dHJhIHRhc2tzCi1hZGR0YXNrIGtlcm5lbF92ZXJzaW9uX3Nhbml0eV9jaGVjayBhZnRlciBkb19rZXJuZWxfbWV0YWRhdGEgZG9fa2VybmVsX2NoZWNrb3V0IGJlZm9yZSBkb19jb21waWxlCi1hZGR0YXNrIHZhbGlkYXRlX2JyYW5jaGVzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb19rZXJuZWxfY2hlY2tvdXQKLWFkZHRhc2sga2VybmVsX2NvbmZpZ2NoZWNrIGFmdGVyIGRvX2NvbmZpZ3VyZSBiZWZvcmUgZG9fY29tcGlsZQotCiAjIGVuYWJsZSBrZXJuZWwtc2FtcGxlIGZvciBvZXFhL3J1bnRpbWUvY2FzZXMncyBrc2FtcGxlLnB5IHRlc3QKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGZlYXR1cmVzL2tlcm5lbC1zYW1wbGUva2VybmVsLXNhbXBsZS5zY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGNiMjBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotS0JSQU5DSCA/PSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAidjQuMTkvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAidjQuMTkvc3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAidjQuMTkvc3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJ2NC4xOS9zdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjQuMTkvc3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjdmZGU1MWFiY2FmMzg5MTkzY2U1ZDg3ZWJmYjhlOGZiNjZhOTI3MWEiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiOGFjNjhkNDJiZWIyNGIyNzVhYzBkMmE1NGEwYTIyOTE5NzBlNWRkZSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJhOTE1ZmJlYWU4ZWQ5ODc0MDJmNjk2NjZkOTBiZWYxNWEwMWM1ODIzIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImVhMmNiODczMTMwNmY3MzRiZjAyMjc1NzVlMDRjYWZhYzdkZmFkZTAiCi1TUkNSRVZfbWFjaGluZSA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tZXRhID89ICJhZDZmOGIzNTc3MjBjYTgxNjdhMDkwNzEzYjc3NDYyMzBjZjRiMzE0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE5O2Rlc3RzdWZmaXg9JHtLTUVUQX0gXAotICAgICAgICAgICIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi1MSU5VWF9WRVJTSU9OID89ICI0LjE5Ljc4IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY3NWY2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4yL3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInY1LjIvc3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAidjUuMi9zdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInY1LjIvc3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXJpc2N2NjQgID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjUuMi9zdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZmNiZTUxZGZhMGE3NjNhMDdlNGNkNjYyMDRkNmMwYmEwNTQ2NjNjZSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI5Y2FkN2JiOGJjZDM2ODZmNTgwYTMzNjM4NDdlZTljOWU4NjkyOGIxIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImRkMjVhMDRmYzVlMmU0NTQ5ZmM5Yjg2MTU3YTAxZTBjNzJiNTNiMDMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJkYzJiZTFhNTQ2ZTkzNzM3NDU5MGNlMzg1OGI3MTc0ODlkZWQyYzIxIgotU1JDUkVWX21hY2hpbmUgPz0gImRkMjVhMDRmYzVlMmU0NTQ5ZmM5Yjg2MTU3YTAxZTBjNzJiNTNiMDMiCi1TUkNSRVZfbWV0YSA/PSAiYmQwNzYyY2QxMzhmMTYyNGI1YTVmODY2OWNmYTNhYzJiNzFjYjg3YiIKLQotIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1LjIga2VybmVsCi0jIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLUxJTlVYX1ZFUlNJT04gPz0gIjUuMi4yMCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NHxxZW11cmlzY3Y2NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlOTMzZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmIKQEAgLTAsMCArMSw1NCBAQAorS0JSQU5DSCA/PSAidjUuNC9zdGFuZGFyZC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NS40L3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInY1LjQvc3RhbmRhcmQvcWVtdWFybTY0IgorS0JSQU5DSF9xZW11bWlwcyA/PSAidjUuNC9zdGFuZGFyZC9tdGktbWFsdGEzMiIKK0tCUkFOQ0hfcWVtdXBwYyAgPz0gInY1LjQvc3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXJpc2N2NjQgID89ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYgID89ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjUuNC9zdGFuZGFyZC9tdGktbWFsdGE2NCIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiYWI4NDkyNDhiNDU0MDNjN2Q2ZjFmYjhlOGY1Nzg0MGNjMjg4MDYxOCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI5NjdhMTcwOGNiYmZlMWI1MjRkYzI4ZjA0ZmE1ZTBkNzlhMjcwYmY1IgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjAzMTQyYWNiYTA2ZThiMzM4ODg0MTBhNTE4MzU4YTYyNmRjZWI3MjAiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJkM2U4NTBkYTgzMDI0MWM0MjRkNTU3YTZhMDcyNTI3ZTA5ZTc4NGFiIgorU1JDUkVWX21hY2hpbmUgPz0gIjAzMTQyYWNiYTA2ZThiMzM4ODg0MTBhNTE4MzU4YTYyNmRjZWI3MjAiCitTUkNSRVZfbWV0YSA/PSAiYmVlNTU0ZTU5NWU0OWM5NjM5MDBkMWM3OGMwMWFiMmQwNDEzODJlNyIKKworIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1LjQga2VybmVsCisjIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKK0xJTlVYX1ZFUlNJT04gPz0gIjUuNC4yNyIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NHxxZW11cmlzY3Y2NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY0YjdjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS9ydW4tcHRlc3QKQEAgLTAsMCArMSw5IEBACisjIS9iaW4vc2gKKyMgdXNlIHRhcmdldD1yZWNoZWNrIGlmIHlvdSB3YW50IHRvIHJlY2hlY2sgZmFpbGluZyB0ZXN0cworWyAiJHRhcmdldCIgPSAiIiBdICYmIHRhcmdldD1jaGVjaworCisjIFdpdGhvdXQgLS1pZ25vcmUtZXhpdCwgdGhlIHRhcCBoYXJuZXNzIGNhdXNlcyBhbnkgRkFJTHMgd2l0aGluIGEKKyMgdGVzdCBwbGFuIHRvIHJhaXNlIEVSUk9SczsgdGhpcyBpcyBqdXN0IG5vaXNlLgorbWFrZWFyZ3M9IkxPR19EUklWRVJfRkxBR1M9LS1pZ25vcmUtZXhpdCB0b3Bfc3JjZGlyPSRQV0QgdG9wX2J1aWxkZGlyPSRQV0QiCisKK2V4ZWMgbWFrZSAtQyB0ZXN0cyAtayAtcyAkbWFrZWFyZ3MgJHRhcmdldCAyPi9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtTWFrZS1tYW5wYWdlcy1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDAxYjE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtTWFrZS1tYW5wYWdlcy1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1Njk4NjE5MGU0YjBjMTA5NDVjZTZhYWE3Y2ExMGQ2YmQ4YTI2YTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjAgMjE6MTA6MzUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBtYW5wYWdlcyBtdWx0aWxpYiBpZGVudGljYWwKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIGRvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbiB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kb2MvbWFuL2FzY2lpZG9jLWF0dHJzLmNvbmYuaW4gYi9kb2MvbWFuL2FzY2lpZG9jLWF0dHJzLmNvbmYuaW4KK2luZGV4IGFkMTE4M2YxLi5lMTFjNzAzMSAxMDA2NDQKKy0tLSBhL2RvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbgorKysrIGIvZG9jL21hbi9hc2NpaWRvYy1hdHRycy5jb25mLmluCitAQCAtMSw3ICsxLDcgQEAKKyBbYXR0cmlidXRlc10KKyAjIGRlZmF1bHQgdmFsdWVzCistc3lzdGVtX3BsdWdpbl9wYXRoPSJATElCRElSQC9iYWJlbHRyYWNlMi9wbHVnaW5zIgorLXN5c3RlbV9wbHVnaW5fcHJvdmlkZXJfcGF0aD0iQExJQkRJUkAvYmFiZWx0cmFjZTIvcGx1Z2luLXByb3ZpZGVycyIKKytzeXN0ZW1fcGx1Z2luX3BhdGg9IkBwcmVmaXhAL2xpYiovYmFiZWx0cmFjZTIvcGx1Z2lucyIKKytzeXN0ZW1fcGx1Z2luX3Byb3ZpZGVyX3BhdGg9IkBwcmVmaXhAL2xpYiovYmFiZWx0cmFjZTIvcGx1Z2luLXByb3ZpZGVycyIKKyBiYWJlbHRyYWNlX3ZlcnNpb249IkBQQUNLQUdFX1ZFUlNJT05AIgorIGVuYWJsZV9kZWJ1Z19pbmZvPSJARU5BQkxFX0RFQlVHX0lORk9fVkFMQCIKKyBkZWZyZHBvcnQ9NTM0NAorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtZnMuYy1pbml0aWFsaXplLW90aGVyX2VudHJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtZnMuYy1pbml0aWFsaXplLW90aGVyX2VudHJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NmIzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1mcy5jLWluaXRpYWxpemUtb3RoZXJfZW50cnkucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA0MmRhZTY5MmI5MDU3ZDAzY2U5YTA2NTFmMDYxNDcyZTlkZDkwMTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTEgTWFyIDIwMjAgMDg6NDQ6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZnMuYzogaW5pdGlhbGl6ZSB0aGUgb3RoZXJfZW50cnkgdmFyaWFibGUKKworSW5pdGlhbGl6ZSB0aGUgcG9pbnRlciBvdGhlcl9lbnRyeSB0byBmaXggdGhlIGJlbG93IGVycm9yOgorfCAuLi8uLi8uLi8uLi8uLi9naXQvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jOiBJbiBmdW5jdGlvbiAnZHNfaW5kZXhfaW5zZXJ0X2RzX2luZGV4X2VudHJ5X3NvcnRlZCc6Cit8IC4uLy4uLy4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmM6NzAyOjU6IGVycm9yOiAnb3RoZXJfZW50cnknIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorfCAgIDcwMiB8ICAgICFkc19pbmRleF9lbnRyaWVzX2VxdWFsKGVudHJ5LCBvdGhlcl9lbnRyeSkpIHsKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMubHR0bmcub3JnL3BpcGVybWFpbC9sdHRuZy1kZXYvMjAyMC1NYXJjaC8wMjk1NDkuaHRtbF0KKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYyBiL3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYworaW5kZXggZTg3NTIzYTMuLmE2YjUzMTVmIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jCisrKysgYi9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmMKK0BAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBkc19pbmRleF9pbnNlcnRfZHNfaW5kZXhfZW50cnlfc29ydGVkKAorIAlzdHJ1Y3QgY3RmX2ZzX2RzX2luZGV4X2VudHJ5ICplbnRyeSkKKyB7CisgCWd1aW50IGk7CistCXN0cnVjdCBjdGZfZnNfZHNfaW5kZXhfZW50cnkgKm90aGVyX2VudHJ5OworKwlzdHJ1Y3QgY3RmX2ZzX2RzX2luZGV4X2VudHJ5ICpvdGhlcl9lbnRyeSA9IE5VTEw7CisgCisgCS8qIEZpbmQgdGhlIHNwb3Qgd2hlcmUgdG8gaW5zZXJ0IHRoaXMgaW5kZXggZW50cnkuICovCisgCWZvciAoaSA9IDA7IGkgPCBpbmRleC0+ZW50cmllcy0+bGVuOyBpKyspIHsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLXRlc3RzLWRvLW5vdC1ydW4tdGVzdC1hcHBsaWNhdGlvbnMtZnJvbS0ubGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLXRlc3RzLWRvLW5vdC1ydW4tdGVzdC1hcHBsaWNhdGlvbnMtZnJvbS0ubGlicy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDVkZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtdGVzdHMtZG8tbm90LXJ1bi10ZXN0LWFwcGxpY2F0aW9ucy1mcm9tLS5saWJzLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNTgyNzEzY2M5YTAxMzQ4MWVlZWYyNTMxOTVkNjQ0MDIwZjYzN2VjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK01lc3NhZ2UtSWQ6IDw1ODI3MTNjYzlhMDEzNDgxZWVlZjI1MzE5NWQ2NDQwMjBmNjM3ZWM0LjE1ODM0MDM2MjIuZ2l0LndhbGxpbnV4QGdtYWlsLmNvbT4KK0Zyb206IEFuZGVycyBXYWxsaW4gPHdhbGxpbnV4QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNSBNYXIgMjAyMCAxMToyMDowNCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IHJ1biB0ZXN0IGFwcGxpY2F0aW9ucyBmcm9tIC5saWJzCisKK0Nyb3NzIGNvbXBpbGUgc3BlY2lmaWMgY2hhbmdlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kZXJzIFdhbGxpbiA8d2FsbGludXhAZ21haWwuY29tPgorLS0tCisgdGVzdHMvbGliL3Rlc3RfcGx1Z2luIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvbGliL3Rlc3RfcGx1Z2luIGIvdGVzdHMvbGliL3Rlc3RfcGx1Z2luCitpbmRleCA2NTJjOTBjYy4uMWY4MTdjNTAgMTAwNzU1CistLS0gYS90ZXN0cy9saWIvdGVzdF9wbHVnaW4KKysrKyBiL3Rlc3RzL2xpYi90ZXN0X3BsdWdpbgorQEAgLTI2LDQgKzI2LDQgQEAgZmkKKyAjIHNoZWxsY2hlY2sgc291cmNlPS4uL3V0aWxzL3V0aWxzLnNoCisgc291cmNlICIkVVRJTFNTSCIKKyAKKy0iJHtCVF9URVNUU19CVUlMRERJUn0vbGliL3BsdWdpbiIgIiR7QlRfVEVTVFNfQlVJTERESVJ9L2xpYi90ZXN0LXBsdWdpbi1wbHVnaW5zLy5saWJzIgorKyIke0JUX1RFU1RTX0JVSUxERElSfS9saWIvcGx1Z2luIiAiJHtCVF9URVNUU19CVUlMRERJUn0vbGliL3Rlc3QtcGx1Z2luLXBsdWdpbnMiCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MmZlMjIzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyL3J1bi1wdGVzdApAQCAtMCwwICsxLDkgQEAKKyMhL2Jpbi9zaAorIyB1c2UgdGFyZ2V0PXJlY2hlY2sgaWYgeW91IHdhbnQgdG8gcmVjaGVjayBmYWlsaW5nIHRlc3RzCitbICIkdGFyZ2V0IiA9ICIiIF0gJiYgdGFyZ2V0PWNoZWNrCisKKyMgV2l0aG91dCAtLWlnbm9yZS1leGl0LCB0aGUgdGFwIGhhcm5lc3MgY2F1c2VzIGFueSBGQUlMcyB3aXRoaW4gYQorIyB0ZXN0IHBsYW4gdG8gcmFpc2UgRVJST1JzOyB0aGlzIGlzIGp1c3Qgbm9pc2UuCittYWtlYXJncz0iTE9HX0RSSVZFUl9GTEFHUz0tLWlnbm9yZS1leGl0IGFic190b3Bfc3JjZGlyPSRQV0QgYWJzX3RvcF9idWlsZGRpcj0kUFdEIEdSRVA9Z3JlcCBTRUQ9c2VkIFBZVEhPTj1weXRob24zIgorCitleGVjIG1ha2UgLUMgdGVzdHMgLWsgLXMgJG1ha2VhcmdzICR0YXJnZXQgMj4vZGV2L251bGwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMl8yLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMl8yLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzkxYzY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyXzIuMC4yLmJiCkBAIC0wLDAgKzEsOTQgQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZTIgLSBUcmFjZSBGb3JtYXQgQmFiZWwgVG93ZXIiCitERVNDUklQVElPTiA9ICJCYWJlbHRyYWNlIHByb3ZpZGVzIHRyYWNlIHJlYWQgYW5kIHdyaXRlIGxpYnJhcmllcyBpbiBob3N0IHNpZGUsIGFzIHdlbGwgYXMgYSB0cmFjZSBjb252ZXJ0ZXIsIHdoaWNoIHVzZWQgdG8gY29udmVydCBMVFRuZyAyLjAgdHJhY2VzIGludG8gaHVtYW4tcmVhZGFibGUgbG9nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9iYWJlbHRyYWNlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIgJiBMR1BMdjIuMSAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2YTQ1OGMxM2YxODM4NWI3YmM1MDY5YTZkN2IxNzZlIgorCitERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmxpbnV4Zm91bmRhdGlvbi5vcmcvZGlhbW9uL2JhYmVsdHJhY2UuZ2l0O2JyYW5jaD1zdGFibGUtMi4wIFwKKwkgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKwkgICBmaWxlOi8vMDAwMS10ZXN0cy1kby1ub3QtcnVuLXRlc3QtYXBwbGljYXRpb25zLWZyb20tLmxpYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZzLmMtaW5pdGlhbGl6ZS1vdGhlcl9lbnRyeS5wYXRjaCBcCisJICAiCitTUkNSRVYgPSAiMzMwMDNjMzUyZWQ1NmFhNDllMGIzZGYyNzJiYmFiNmZhYzM2Y2FlOCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4yKFwuXGQrKSspJCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm1hbnBhZ2VzIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9iYWJlbHRyYWNlMi9wbHVnaW5zLyouYSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmFiZWx0cmFjZTIvcGx1Z2lucy8qLnNvIgorCitBU05FRURFRCA9ICIiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGdhd2sgcHl0aG9uMyIKKworZG9fY29tcGlsZV9wdGVzdCAoKSB7CisgICAgbWFrZSAtQyB0ZXN0cyBhbGwKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMiCisKKyAgICAjIENvcHkgcmVxdWlyZWQgZmlsZXMgZnJvbSBzb3VyY2UgZGlyZWN0b3J5CisgICAgZm9yIGQgaW4gJChmaW5kICIke1N9L3Rlc3RzIiAtdHlwZSBkIC1wcmludGYgJyVQICcpIDsgZG8KKwlpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKKwlmaW5kICIke1N9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisJZmluZCAiJHtTfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5zaCBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gXDsKKwlmaW5kICIke1N9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtbmFtZSAqLnB5IFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworCWZpbmQgIiR7U30vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1uYW1lICouZXhwZWN0IFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworICAgIGRvbmUKKyAgICBpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhL2N0Zi10cmFjZXMvIgorICAgIGNwIC1hICR7U30vdGVzdHMvZGF0YS9jdGYtdHJhY2VzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZGF0YS9jdGYtdHJhY2VzLworCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBpbnN0YWxsIC1EICIke0J9L3Rlc3RzL01ha2VmaWxlIiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvIgorICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKwlpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKKwlmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisJdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAorCSAgICBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiCisJZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5zaCBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gXDsKKyAgICBkb25lCisKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworCWZvciBmIGluICQoZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiAtcHJpbnRmICclUCAnKSA7IGRvCisJICAgIGNwICR7Qn0vdGVzdHMvJGQvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYGRpcm5hbWUgJGRgLyRmCisJZG9uZQorICAgIGRvbmUKKworICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAorICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgorICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgc2VkIC1pIFwKKwkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyBcCisJIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKwkgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisJIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorCSB7fSArCisKKyAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgorICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3NyYy9jbGkvIgorICAgIGxuIC1zICIke2JpbmRpcn0vYmFiZWx0cmFjZTIiICR7RH0ke1BURVNUX1BBVEh9L3NyYy9jbGkvCisKKyAgICAjIFJlbW92ZSBhcmNoaXRlY2h0dXJlIHNwZWNpZmljIHRlc3RmaWxlcworICAgIHJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhL3BsdWdpbnMvZmx0Lmx0dG5nLXV0aWxzLmRlYnVnLWluZm8vKgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVlZjZkMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKLURFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5saW51eGZvdW5kYXRpb24ub3JnL2RpYW1vbi9iYWJlbHRyYWNlLmdpdDticmFuY2g9c3RhYmxlLTEuNSIKLVNSQ1JFViA9ICJkNDAxNGFlZWY0Yjg5YTRhYWFiMWFmNDJkN2IwZDE0M2Q2MmRhMGZmIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCi0KLUFTTkVFREVEID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyNDkyYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS44LmJiCkBAIC0wLDAgKzEsOTggQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL2JhYmVsdHJhY2Uub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorTElDRU5TRSA9ICJNSVQgJiBHUEx2MiAmIExHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQubGludXhmb3VuZGF0aW9uLm9yZy9kaWFtb24vYmFiZWx0cmFjZS5naXQ7YnJhbmNoPXN0YWJsZS0xLjUgXAorCSAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorCSAgIgorU1JDUkVWID0gIjA1NGE1NGFlMTBiMDFhMjcxYWZjNGYxOTQ5NmMwNDFiMTBmYjQxNGMiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+MShcLlxkKykrKSQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCisKK0FTTkVFREVEID0gIiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZ2F3ayIKKworYWRkdGFzayBkb19wYXRjaF9wdGVzdF9wYXRoIGFmdGVyIGRvX3BhdGNoIGJlZm9yZSBkb19jb25maWd1cmUKK2RvX3BhdGNoX3B0ZXN0X3BhdGggKCkgeworICAgIGZvciBmIGluICQoZ3JlcCAtbCAtciBhYnNfdG9wX3NyY2RpciAke1N9L3Rlc3RzKTsgZG8KKwlzZWQgLWkgJ3M6XEBhYnNfdG9wX3NyY2RpclxAOiR7UFRFU1RfUEFUSH06JyAke2Z9CisgICAgZG9uZQorCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIGFic190b3BfYnVpbGRkaXIgJHtTfS90ZXN0cyk7IGRvCisJc2VkIC1pICdzOlxAYWJzX3RvcF9idWlsZGRpclxAOiR7UFRFU1RfUEFUSH06JyAke2Z9CisgICAgZG9uZQorICAgIGZvciBmIGluICQoZ3JlcCAtbCAtciBHUkVQICR7U30vdGVzdHMpOyBkbworCXNlZCAtaSAnczpcQEdSRVBcQDpncmVwOicgJHtmfQorICAgIGRvbmUKKworICAgIGZvciBmIGluICQoZ3JlcCAtbCAtciBTRUQgJHtTfS90ZXN0cyk7IGRvCisJc2VkIC1pICdzOlxAU0VEXEA6c2VkOicgJHtmfQorICAgIGRvbmUKK30KKworZG9fY29tcGlsZV9wdGVzdCAoKSB7CisgICAgbWFrZSAtQyB0ZXN0cyBhbGwKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgIyBDb3B5IHJlcXVpcmVkIGZpbGVzIGZyb20gc291cmNlIGRpcmVjdG9yeQorICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlcjsgZG8KKwlpbnN0YWxsIC1EICIke1N9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCisgICAgZG9uZQorICAgIGluc3RhbGwgLWQgIiRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY3RmLXRyYWNlcy8iCisgICAgY3AgLWEgJHtTfS90ZXN0cy9jdGYtdHJhY2VzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY3RmLXRyYWNlcy8KKworICAgICMgQ29weSB0aGUgdGVzdHMgZGlyZWN0b3J5IHRyZWUgYW5kIHRoZSBleGVjdXRhYmxlcyBhbmQKKyAgICAjIE1ha2VmaWxlcyBmb3VuZCB3aXRoaW4uCisgICAgaW5zdGFsbCAtRCAiJHtCfS90ZXN0cy9NYWtlZmlsZSIgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyIKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisJaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiCisJZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gKworCXRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKKwkgICAgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIgorCWZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1uYW1lICouc2ggXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9IFw7CisgICAgZG9uZQorCisgICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKwlmb3IgZiBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgLXByaW50ZiAnJVAgJykgOyBkbworCSAgICBjcCAke0J9L3Rlc3RzLyRkLyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2BkaXJuYW1lICRkYC8kZgorCWRvbmUKKyAgICBkb25lCisKKyAgICBpbnN0YWxsIC1EICR7Qn0vZm9ybWF0cy9jdGYvbWV0YWRhdGEvLmxpYnMvY3RmLXBhcnNlci10ZXN0IFwKKwkgICAgJHtEfSR7UFRFU1RfUEFUSH0vZm9ybWF0cy9jdGYvbWV0YWRhdGEvY3RmLXBhcnNlci10ZXN0CisKKyAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKKyAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJIHNlZCAtaSBcCisJIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgXAorCSAtZSAnLyQoY2hlY2tfU0NSSVBUUykvcy9eLyMvJyBcCisJIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKwkgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisJIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorCSB7fSArCisKKyAgICAjIFJlbW92ZSBwYXRoIHRvIGJhYmVsdHJhY2UuCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yICJeQkFCRUxUUkFDRV9CSU4iICR7RH0ke1BURVNUX1BBVEh9KTsgZG8KKwlzZWQgLWkgJ3M6XkJBQkVMVFJBQ0VfQklOLio6QkFCRUxUUkFDRV9CSU49L3Vzci9iaW4vYmFiZWx0cmFjZTonICR7Zn0KKyAgICBkb25lCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yICJeQlRCSU4iICR7RH0ke1BURVNUX1BBVEh9KTsgZG8KKwlzZWQgLWkgJ3M6XkJUQklOLio6QlRCSU49L3Vzci9iaW4vYmFiZWx0cmFjZTonICR7Zn0KKyAgICBkb25lCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjExLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg5YTNiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU0VDVElPTiA9ICJkZXZlbCIKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBLRVJORUwgTU9EVUxFIgotREVTQ1JJUFRJT04gPSAiVGhlIGx0dG5nLW1vZHVsZXMgMi4wIHBhY2thZ2UgY29udGFpbnMgdGhlIGtlcm5lbCB0cmFjZXIgbW9kdWxlcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NjEzZDFmOGE5NTg3YmQ3YjM2NjE5MTgzMDM2NGIzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1pbmhlcml0IG1vZHVsZQotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybXxyaXNjdikuKi1saW51eCcKLQotU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzYxOGZiNjQ2NTE0ZGZjMWJmOTEwY2ZkN2NkYTQyNTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Y5MWUzOWIyZThlNDZkOGJiYmEyYjRjOGMxNjE0ZjFmYjM4MDYxMWNkMWExZmNjYzFkMTg1OWJlMjYxMTJmMSIKLQotZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCi0KLUVYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKLQlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKLX0KLQotcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKLSAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJkZXZ1cHN0cmVhbTp0YXJnZXQiCi1MSUNfRklMRVNfQ0hLU1VNX2NsYXNzLWRldnVwc3RyZWFtID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDYxM2QxZjhhOTU4N2JkN2IzNjYxOTE4MzAzNjRiMyIKLURFRkFVTFRfUFJFRkVSRU5DRV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICItMSIKLVNSQ19VUklfY2xhc3MtZGV2dXBzdHJlYW0gPSAiZ2l0Oi8vZ2l0Lmx0dG5nLm9yZy9sdHRuZy1tb2R1bGVzO2JyYW5jaD1zdGFibGUtMi4xMCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiNjI0YWNhNWQ3NTA3ZmJkMTFlYTRhMWE0NzRjM2FhMTAzMWJkOWEzMSIKLVBWX2NsYXNzLWRldnVwc3RyZWFtID0gIjIuMTAuMTArZ2l0JHtTUkNQVn0iCi1TX2NsYXNzLWRldnVwc3RyZWFtID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWX0ZPUk1BVCA/PSAibHR0bmdfZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZmYwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjExLjIuYmIKQEAgLTAsMCArMSw0MyBAQAorU0VDVElPTiA9ICJkZXZlbCIKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBLRVJORUwgTU9EVUxFIgorREVTQ1JJUFRJT04gPSAiVGhlIGx0dG5nLW1vZHVsZXMgMi4wIHBhY2thZ2UgY29udGFpbnMgdGhlIGtlcm5lbCB0cmFjZXIgbW9kdWxlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNmODgyZDQzMWRjMGYzMmYxZjQ0YzA3MDdhYTQxMTI4IgorCitpbmhlcml0IG1vZHVsZQorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybXxyaXNjdikuKi1saW51eCcKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmUzYmM4Y2ZiMjY0ZmExM2YzNzQ2MThiNDZmMTcwZTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGE0MjI0MDgxM2I4ZmQxZDAwMTgzNWNkNmY1ZWM2ODdmN2Q3ZjNiMjYwNzBkNGUyMTYwNGMzNWE1MWE2NDQxZCIKKworZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCisKK0VYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKKwlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKK30KKworcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKKyAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJkZXZ1cHN0cmVhbTp0YXJnZXQiCitMSUNfRklMRVNfQ0hLU1VNX2NsYXNzLWRldnVwc3RyZWFtID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zZjg4MmQ0MzFkYzBmMzJmMWY0NGMwNzA3YWE0MTEyOCIKK0RFRkFVTFRfUFJFRkVSRU5DRV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICItMSIKK1NSQ19VUklfY2xhc3MtZGV2dXBzdHJlYW0gPSAiZ2l0Oi8vZ2l0Lmx0dG5nLm9yZy9sdHRuZy1tb2R1bGVzO2JyYW5jaD1zdGFibGUtMi4xMSBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiMTdjNDEzOTUzNjAzZjA2M2YyYTlkNmMzNzg4YmVjOTE0Y2U2Zjk1NSIKK1BWX2NsYXNzLWRldnVwc3RyZWFtID0gIjIuMTEuMitnaXQke1NSQ1BWfSIKK1NfY2xhc3MtZGV2dXBzdHJlYW0gPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVZfRk9STUFUID89ICJsdHRuZ19naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS1Ta2lwLXdoZW4tdGVzdGFwcC1pcy1ub3QtcHJlc2VudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLVNraXAtd2hlbi10ZXN0YXBwLWlzLW5vdC1wcmVzZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzlmN2U0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLVNraXAtd2hlbi10ZXN0YXBwLWlzLW5vdC1wcmVzZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEwICswLDAgQEAKLUZyb20gOTVjMjdlNmFjY2VhZWRhNTVjNzI5YjllOTJlNTk0MzIyYWRlZjEzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvbmF0aGFuIFJham90dGUgPGpvbmF0aGFuLnJham90dGUtanVsaWVuQGVmZmljaW9zLmNvbT4KLURhdGU6IFdlZCwgMyBBcHIgMjAxOSAxNjozMToxOCAtMDQwMAotU3ViamVjdDogW1BBVENIIGx0dG5nLXRvb2xzXSBTa2lwIHdoZW4gdGVzdGFwcCBpcyBub3QgcHJlc2VudAotCi1XZSBleHBlY3QgbHR0bmctdXN0IGRvIGJlIHByZXNlbnQsIHRoaXMgaXMgYSB3cm9uZyBhc3N1bXB0aW9ucy4KLQotVGhpcyBpcyBhIHF1aWNrIGZpeC4gVGhlIHJlYWwgZml4IGlzIHRvIGVpdGhlciBkZXRlY3QgYXQgcnVudGltZQotbHR0bmctdXN0IHN1cHBvcnQgb3IgYXQgYnVpbGQgdGltZSAoSEFWRV9MSUJMVFROR19VU1RfQ1RMKS4KLQotVGhpcyBwcmV2ZW50IGhhbmcgZm9yIG1ha2UgY2hlY2sgZG9uZSBvbiBhIGJ1aWxkIGNvbmZpZ3VyZWQgd2l0aAotLS13aXRob3V0LWx0dG5nLXVzdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0gCi1SZWFzb246IFRoaXMgcGF0Y2ggaXMgaW5hcHByb3ByaWF0ZSBmb3IgdXBzdHJlYW0gZm9yIDIuMTAgc3RhYmxlIHJlbGVhc2UgCi1zaW5jZSB3ZSBkbyBub3QgYmFja3BvcnQgInN1cGVyZmljaWFsIiBmaXggdG8gdGhlIHRlc3Qgc3VpdGUuIFdlIGRvIAotYmFja3BvcnQgd2hlbiBhIHRlc3QgaXMgYnJva2VuLiBUaGUgZmFjdCB0aGF0IG9uIC0td2l0aG91dC1sdHRuZy11c3QgCi1oYW5nIGlzIG5vdCBhICJicm9rZW4iIHRlc3QgcGVyLXNlZS4gU3RpbGwsIGEgdmFyaWF0aW9uIG9mIHRoaXMgZml4IHdpbGwgCi1iZSB1cHN0cmVhbWVkIGluIG91ciBtYXN0ZXIgYnJhbmNoIGFuZCBwb3NzaWJseSAyLjExLiBUaGUgdXBzdHJlYW1lZCAKLXZlcnNpb24gd2lsbCBzcGxpdCB0aGUgdGVzdCBpbiBrZXJuZWwvdXN0IHRlc3QgYW5kIHNraXAgdGhlbSBhdCB0aGUgCi1idWlsZCBzeXN0ZW0gbGV2ZWwuIFRoaXMgcGF0Y2ggaXMgbW9yZSBzdWNjaW5jdC4KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gUmFqb3R0ZSA8am9uYXRoYW4ucmFqb3R0ZS1qdWxpZW5AZWZmaWNpb3MuY29tPgotLS0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9jcmFzaC90ZXN0X2NyYXNoICAgICAgIHwgIDQgKysKLSAuLi4vcmVncmVzc2lvbi90b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24gfCAgNCArKwotIC4uLi90b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIgICAgICAgICB8IDIxICsrKystLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rICB8IDI5ICsrKysrLS0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtICAgICAgIHwgIDIgLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdCAgICB8ICA0ICsrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0ICAgICAgICAgIHwgIDQgKysKLSAuLi4vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgICAgICAgfCAgNCArKwotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbWkvdGVzdF9taSAgICAgICAgICAgICB8ICA0ICsrCi0gLi4uL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAgIHwgMTggKysrLS0KLSAuLi4vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdCAgfCAgNCArKwotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0ICB8ICAyICstCi0gLi4uL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tc3RhdGVkdW1wL3Rlc3RfdXN0IHwgIDIgKy0KLSAuLi4vcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZCAgfCAgNyArKwotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZCAgICB8ICA4ICsrKwotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZSAgICB8ICA3ICsrCi0gLi4uL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QgIHwgIDIgKy0KLSAuLi4vcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfbG9uZyAgfCAgMiArLQotIC4uLi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nICAgICAgICB8ICAyICstCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdXN0X3Rlc3QgICAgIHwgIDIgKy0KLSAuLi4vc3RyZWFtaW5nL3Rlc3RfaGlnaF90aHJvdWdocHV0X2xpbWl0cyAgICAgfCAgMiArLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0ICAgICB8ICAyICstCi0gLi4uL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfY291bnQgICAgIHwgIDIgKy0KLSAuLi4vdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplICAgICAgfCAgMiArLQotIC4uLi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkICAgICAgICB8IDY3ICsrKysrKysrKystLS0tLS0tLS0KLSAyNSBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2ggYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2gKLWluZGV4IDhjNjJjNTEzZC4uM2NiZTk3Njg4IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9jcmFzaC90ZXN0X2NyYXNoCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2gKLUBAIC0zNSw2ICszNSwxMCBAQCBOVU1fVEVTVFM9NzcKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIEdsb2JhbCBkZWNsYXJhdGlvbiBmb3Igc2ltcGxpZmljYXRpb24KLSBMVFROR19DUkFTSD0kVEVTVERJUi8uLi9zcmMvYmluL2x0dG5nLWNyYXNoLyRDUkFTSF9CSU4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbiBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uCi1pbmRleCA5NDljZDQxZGYuLjQyZTRkNzJmYiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbgotQEAgLTMwLDYgKzMwLDEwIEBAIE5VTV9URVNUUz0xNDkKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSBmdW5jdGlvbiBlbmFibGVfdXN0X2x0dG5nX2FsbF9ldmVudF9leGNsdXNpb24oKQotIHsKLSAJc2Vzc19uYW1lPSIkMSIKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2ZpbHRlcmluZy90ZXN0X3ZhbGlkX2ZpbHRlciBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyCi1pbmRleCAxNjNiMzIxODIuLjFlOGRhNjMwYiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2ZpbHRlcmluZy90ZXN0X3ZhbGlkX2ZpbHRlcgotQEAgLTQxOCwxMiArNDE4LDE4IEBAIGlzc3VlXzM1Nl9maWx0ZXIrPSJpbnRmaWVsZCA+IDQgJiYgaW50ZmllbGQgPiA1ICYmICIKLSBpc3N1ZV8zNTZfZmlsdGVyKz0iaW50ZmllbGQgPiA2ICYmIGludGZpZWxkID4gNyAmJiAiCi0gaXNzdWVfMzU2X2ZpbHRlcis9ImludGZpZWxkID4gOCB8fCBpbnRmaWVsZCA+IDAiCi0gCi0rQklOX05BTUU9Imdlbi11c3QtZXZlbnRzIgotKwotK3NraXBfdXN0PTEKLStpZiBbICEgLXggIiRDVVJESVIvJEJJTl9OQU1FIiBdOyB0aGVuCi0rCXNraXBfdXN0PTAKLSsJc2tpcCAwICJObyBVU1QgbmV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIiAkTlVNX1VTVF9URVNUUwotK2ZpCi0rCi0gc3RhcnRfbHR0bmdfc2Vzc2lvbmQKLSAKLSAjIyMgVVNUIFRFU1RTCi0gCi0tQklOX05BTUU9Imdlbi11c3QtZXZlbnRzIgotLQotIEtJUktfS1JBVVNTX1RFU1RTPSgKLSAJIyB0aGUgdGVzdHMgYmVsb3cgd2VyZSB3cml0dGVuIGJ5IEtpcmsgS3JhdXNzIGluIHRoaXMgYXJ0aWNsZToKLSAJIyBodHRwOi8vd3d3LmRyZG9iYnMuY29tL2FyY2hpdGVjdHVyZS1hbmQtZGVzaWduL21hdGNoaW5nLXdpbGRjYXJkcy1hbi1lbXBpcmljYWwtd2F5LXRvLXQvMjQwMTY5MTIzCi1AQCAtODk3LDkgKzkwMyw2IEBAIFVTVF9TVFJfRklMVEVSUz0oCi0gCUVORAotICkKLSAKLS1pZiBbICEgLXggIiRDVVJESVIvJEJJTl9OQU1FIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgbmV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotLWZpCi0gCi0gSUZTPSIkT0xESUZTIgotIAotQEAgLTkxMCw2ICs5MTMsMTAgQEAgaT0wCi0gd2hpbGUgdHJ1ZTsgZG8KLSAJdmFsaWRhdG9yPSIke1VTVF9GSUxURVJTWyRpXX0iCi0gCi0rCWlmIFsgJHNraXBfdXN0IC1lcSAwIF07IHRoZW4KLSsJCWJyZWFrCi0rCWZpCi0rCi0gCWlmIFsgIiR2YWxpZGF0b3IiID0gRU5EIF07IHRoZW4KLSAJCWJyZWFrCi0gCWZpCi1AQCAtOTI5LDYgKzkzNiwxMCBAQCBpPTAKLSB3aGlsZSB0cnVlOyBkbwotIAl2YWxpZGF0b3I9IiR7VVNUX1NUUl9GSUxURVJTWyRpXX0iCi0gCi0rCWlmIFsgJHNraXBfdXN0IC1lcSAwIF07IHRoZW4KLSsJCWJyZWFrCi0rCWZpCi0rCi0gCWlmIFsgIiR2YWxpZGF0b3IiID0gRU5EIF07IHRoZW4KLSAJCWJyZWFrCi0gCWZpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vawotaW5kZXggZTgxZDZlZDI0Li44NDliN2U3MWYgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vawotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sKLUBAIC0yNyw2ICsyNyw5IEBAIENIQU5ORUxfTkFNRT0idGVzdGNoYW4iCi0gSEVBTFRIX0NIRUNLX0JJTj0iaGVhbHRoX2NoZWNrIgotIE5VTV9URVNUUz0xNwotIFNMRUVQX1RJTUU9MzAKLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi1AQCAtNzYsMTUgKzc5LDE5IEBAIGZ1bmN0aW9uIHRlc3RfdGhyZWFkX29rCi0gCSRDVVJESVIvJEhFQUxUSF9DSEVDS19CSU4gPiAke1NURE9VVF9QQVRIfSAyPiAke1NUREVSUl9QQVRIfQotIAlyZXBvcnRfZXJyb3JzCi0gCi0tCWRpYWcgIldpdGggVVNUIGNvbnN1bWVyIGRhZW1vbnMiCi0tCWNyZWF0ZV9sdHRuZ19zZXNzaW9uX25vX291dHB1dCAkU0VTU0lPTl9OQU1FCi0tCWVuYWJsZV91c3RfbHR0bmdfZXZlbnRfb2sgJFNFU1NJT05fTkFNRSAkVVNUX0VWRU5UX05BTUUgJENIQU5ORUxfTkFNRQotLQlzdGFydF9sdHRuZ190cmFjaW5nX29rICRTRVNTSU9OX05BTUUKLS0JZGVzdHJveV9sdHRuZ19zZXNzaW9uX29rICRTRVNTSU9OX05BTUUKLSsJc2tpcCAkc2tpcF91c3QgIlVzdCBkb2VzIG5vdCBzZWVtcyB0byBiZSBzdXBwb3J0ZWQiICI1IiB8fAotKwl7Ci0rCQlkaWFnICJXaXRoIFVTVCBjb25zdW1lciBkYWVtb25zIgotKwkJY3JlYXRlX2x0dG5nX3Nlc3Npb25fbm9fb3V0cHV0ICRTRVNTSU9OX05BTUUKLSsJCWVuYWJsZV91c3RfbHR0bmdfZXZlbnRfb2sgJFNFU1NJT05fTkFNRSAkVVNUX0VWRU5UX05BTUUgJENIQU5ORUxfTkFNRQotKwkJc3RhcnRfbHR0bmdfdHJhY2luZ19vayAkU0VTU0lPTl9OQU1FCi0rCQlkZXN0cm95X2x0dG5nX3Nlc3Npb25fb2sgJFNFU1NJT05fTkFNRQotIAotLQkjIENoZWNrIGhlYWx0aCBzdGF0dXMKLS0JJENVUkRJUi8kSEVBTFRIX0NIRUNLX0JJTiA+ICR7U1RET1VUX1BBVEh9IDI+ICR7U1RERVJSX1BBVEh9Ci0tCXJlcG9ydF9lcnJvcnMKLSsKLSsJCSMgQ2hlY2sgaGVhbHRoIHN0YXR1cwotKwkJJENVUkRJUi8kSEVBTFRIX0NIRUNLX0JJTiA+ICR7U1RET1VUX1BBVEh9IDI+ICR7U1RERVJSX1BBVEh9Ci0rCQlyZXBvcnRfZXJyb3JzCi0rCX0KLSAKLSAJc2tpcCAkaXNyb290ICJSb290IGFjY2VzcyBpcyBuZWVkZWQuIFNraXBwaW5nIGtlcm5lbCBjb25zdW1lciBoZWFsdGggY2hlY2sgdGVzdC4iICI1IiB8fAotIAl7Ci1AQCAtMTQxLDYgKzE0OCwxMiBAQCBlbHNlCi0gCWlzcm9vdD0wCi0gZmkKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlza2lwX3VzdD0wCi0rZWxzZQotKwlza2lwX3VzdD0xCi0rZmkKLSsKLSB0ZXN0X3RocmVhZF9vawotIAotIHJtIC1yZiAke0hFQUxUSF9QQVRIfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbSBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbQotaW5kZXggNDYxODZkMzgzLi5kYjc0ZGU4ZDUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbQotQEAgLTE2LDkgKzE2LDcgQEAgTElWRT0kKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9zZXNzaW9uLiQoT0JKRVhUKSBcCi0gbm9pbnN0X1BST0dSQU1TID0gbGl2ZV90ZXN0Ci0gRVhUUkFfRElTVCA9IHRlc3Rfa2VybmVsIHRlc3RfbHR0bmdfa2VybmVsCi0gCi0taWYgSEFWRV9MSUJMVFROR19VU1RfQ1RMCi0gRVhUUkFfRElTVCArPSB0ZXN0X3VzdCB0ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgdGVzdF9sdHRuZ191c3QKLS1lbmRpZgotIAotIGxpdmVfdGVzdF9TT1VSQ0VTID0gbGl2ZV90ZXN0LmMKLSBsaXZlX3Rlc3RfTERBREQgPSAkKExJQlRBUCkgJChMSUJDT01NT04pICQoTElCUkVMQVlEKSAkKExJQlNFU1NJT05EX0NPTU0pIFwKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QKLWluZGV4IDA2MDE3ZDAxZC4uYmU5YjNkN2Y3IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfbHR0bmdfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QKLUBAIC0zOCw2ICszOCwxMCBAQCBOVU1fVEVTVFM9MTIKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0Ci1pbmRleCAwMzg0YTcwNmYuLmFkZDUyMWJmYyAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0Ci1AQCAtMzYsNiArMzYsMTAgQEAgRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gZWNobyAiJFRFU1RfREVTQyIKLSAKLSBmdW5jdGlvbiBzZXR1cF9saXZlX3RyYWNpbmcoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3RfdHJhY2VmaWxlX2NvdW50Ci1pbmRleCA2ZGEzNjhmYzYuLjEwNTA0ZjhjNiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQKLUBAIC0zNiw2ICszNiwxMCBAQCBESVI9JChyZWFkbGluayAtZiAkVEVTVERJUikKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSBlY2hvICIkVEVTVF9ERVNDIgotIAotIGZ1bmN0aW9uIHNldHVwX2xpdmVfdHJhY2luZygpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pCi1pbmRleCA0OGRkYTdkYTYuLjJjYzMwYjI5YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbWkvdGVzdF9taQotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pCi1AQCAtNjEsNiArNjEsMTAgQEAgTlVNX1RFU1RTPTIyOAotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotICNPdmVyd3JpdGUgdGhlIGx0dG5nX2JpbiB0byBnZXQgbWkgb3V0cHV0Ci0gTFRUTkdfQklOPSJsdHRuZyAtLW1pIHhtbCIKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLWluZGV4IDBhMDVlYTZhMC4uMjliMGY2MmZhIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLUBAIC01Miw2ICs1MiwxMSBAQCBwbGFuX3Rlc3RzICROVU1fVEVTVFMKLSAKLSBwcmludF90ZXN0X2Jhbm5lciAiJFRFU1RfREVTQyIKLSAKLStza2lwX3VzdD0xCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJc2tpcF91c3Q9MAotK2ZpCi0rCi0gYXBwX3BpZHM9KCkKLSAKLSBmdW5jdGlvbiBrZXJuZWxfZXZlbnRfZ2VuZXJhdG9yX3Rvb2dsZV9zdGF0ZQotQEAgLTQ2OCwxMCArNDczLDE1IEBAIGZ1bmN0aW9uIHRlc3Rfb25fcmVnaXN0ZXJfZXZhbHVhdGlvbiAoKQotIH0KLSAKLSAKLS1URVNUUz0oCi0tCXRlc3RfbXVsdGlfYXBwX3VzdAotLQl0ZXN0X29uX3JlZ2lzdGVyX2V2YWx1YXRpb25fdXN0Ci0tKQotK1RFU1RTPSgpCi0raWYgWyAkc2tpcF91c3QgLWVxICIxIiBdOyB0aGVuCi0rCVRFU1RTKz0oCi0rCQl0ZXN0X211bHRpX2FwcF91c3QKLSsJCXRlc3Rfb25fcmVnaXN0ZXJfZXZhbHVhdGlvbl91c3QKLSsJKQotK2Vsc2UKLSsJc2tpcCAwICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iICROVU1fVEVTVF9VU1QKLStmaQotIAotIGlmIFsgIiQoaWQgLXUpIiA9PSAiMCIgXTsgdGhlbgotIAlURVNUUys9KAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdAotaW5kZXggODk0MWU0NzZkLi5lYjJlMTVjYWQgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl91c3QKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdAotQEAgLTQ2LDYgKzQ2LDEwIEBAIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotIGZ1bmN0aW9uIHVzdF9ldmVudF9nZW5lcmF0b3JfdG9vZ2xlX3N0YXRlCi0gewotIAl1c3RfZXZlbnRfZ2VuZXJhdG9yX3N1c3BlbmRlZD0kKCh1c3RfZXZlbnRfZ2VuZXJhdG9yX3N1c3BlbmRlZD09MCkpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tbWV0YWRhdGEvdGVzdF91c3QKLWluZGV4IGI3ZjFhZjFkOC4uMzEyYzhhNDBkIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdAotQEAgLTM0LDcgKzM0LDcgQEAgTlVNX1RFU1RTPTMzCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gbHR0bmdfY3JlYXRlX3Nlc3Npb25fdXJpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1zdGF0ZWR1bXAvdGVzdF91c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdAotaW5kZXggNDg2YjlhNTYwLi44ZDQ1NWIyNmEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1zdGF0ZWR1bXAvdGVzdF91c3QKLUBAIC0zNCw3ICszNCw3IEBAIE5VTV9URVNUUz0xMQotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSBmaQotIAotIGZ1bmN0aW9uIHRlc3RfdXN0X2xvY2FsICgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfYXV0b2xvYWQKLWluZGV4IDdlZTVlOTkwNi4uZWMzNzZjZmIzIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZAotQEAgLTIxLDYgKzIxLDkgQEAgQ1VSRElSPSQoZGlybmFtZSAkMCkvCi0gQ09ORklHX0RJUj0iJHtDVVJESVJ9L2NvbmZpZ3VyYXRpb24iCi0gVEVTVERJUj0kQ1VSRElSLy4uLy4uLy4uLwotIGV4cG9ydCBMVFROR19TRVNTSU9OX0NPTkZJR19YU0RfUEFUSD0kKHJlYWRsaW5rIC1tICR7VEVTVERJUn0uLi9zcmMvY29tbW9uL2NvbmZpZy8pCi0rVEVTVEFQUF9QQVRIPSIkVEVTVERJUi91dGlscy90ZXN0YXBwIgotK1RFU1RBUFBfTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0rVEVTVEFQUF9CSU49IiRURVNUQVBQX1BBVEgvJFRFU1RBUFBfTkFNRS8kVEVTVEFQUF9OQU1FIgotIAotIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotQEAgLTI4LDYgKzMxLDEwIEBAIE5VTV9URVNUUz05Ci0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gIyBNVVNUIHNldCBURVNURElSIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucwotIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZAotaW5kZXggNWUzOGI0NmI2Li5iNmZkZDgxOTIgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2xvYWQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZAotQEAgLTIwLDYgKzIwLDEwIEBAIFRFU1RfREVTQz0iTG9hZCBzZXNzaW9uKHMpIgotIENVUkRJUj0kKGRpcm5hbWUgJDApLwotIENPTkZJR19ESVI9IiR7Q1VSRElSfS9jb25maWd1cmF0aW9uIgotIFRFU1RESVI9JENVUkRJUi8uLi8uLi8uLi8KLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0rCi0gZXhwb3J0IExUVE5HX1NFU1NJT05fQ09ORklHX1hTRF9QQVRIPSQocmVhZGxpbmsgLW0gJHtURVNURElSfS4uL3NyYy9jb21tb24vY29uZmlnLykKLSAKLSBTRVNTSU9OX05BTUU9ImxvYWQtNDIiCi1AQCAtMzEsNiArMzUsMTAgQEAgTlVNX1RFU1RTPTY3Ci0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gIyBNVVNUIHNldCBURVNURElSIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucwotIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZSBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZQotaW5kZXggYzVmNmIxMzQxLi5jZmFmNjdiN2EgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X3NhdmUKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZQotQEAgLTIzLDYgKzIzLDkgQEAgVEVTVERJUj0kQ1VSRElSLy4uLy4uLy4uLwotIFNFU1NJT05fTkFNRT0ic2F2ZS00MiIKLSBDSEFOTkVMX05BTUU9ImNoYW4tc2F2ZSIKLSBFVkVOVF9OQU1FPSJ0cDp0cHRlc3QiCi0rVEVTVEFQUF9QQVRIPSIkVEVTVERJUi91dGlscy90ZXN0YXBwIgotK1RFU1RBUFBfTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0rVEVTVEFQUF9CSU49IiRURVNUQVBQX1BBVEgvJFRFU1RBUFBfTkFNRS8kVEVTVEFQUF9OQU1FIgotIAotIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotQEAgLTMwLDYgKzMzLDEwIEBAIE5VTV9URVNUUz00MQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gIyBNVVNUIHNldCBURVNURElSIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucwotIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9mYXN0Ci1pbmRleCBlZGI0MzVjNTIuLjVhNjhlYzU2ZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QKLUBAIC0yMyw3ICsyMyw3IEBAIFRFU1RfQklOPSJ1c3RfdGVzdCIKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRDVVJESVIvJFRFU1RfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotIGZpCi0gCi0gLi8kQ1VSRElSLyRURVNUX0JJTiAkTlJfU05BUFNIT1QKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfbG9uZwotaW5kZXggOWUxYTBjMjYyLi5hZmEwMTlmNmEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nCi1AQCAtMjMsNyArMjMsNyBAQCBURVNUX0JJTj0idXN0X3Rlc3QiCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkQ1VSRElSLyRURVNUX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIHRlc3QgZm91bmQ6ICRURVNUX0JJTiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIHRlc3QgZm91bmQ6ICRURVNUX0JJTiIKLSBmaQotIAotIC4vJENVUkRJUi8kVEVTVF9CSU4gJE5SX1NOQVBTSE9UCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nCi1pbmRleCA5M2IwOTU3ZjMuLjY5MjkxYWI0ZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X3N0cmVhbWluZwotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nCi1AQCAtMzcsNyArMzcsNyBAQCBOVU1fVEVTVFM9NzUKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBzbmFwc2hvdF9hZGRfb3V0cHV0ICgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdXN0X3Rlc3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdAotaW5kZXggNzU1Y2VmOWUwLi45MmY5ZjZjZmYgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdXN0X3Rlc3QKLUBAIC0zNCw3ICszNCw3IEBAIFRSQUNFX1BBVEg9JChta3RlbXAgLWQpCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gIyBOZWVkIHRoZSBudW1iZXIgb2Ygc25hcHNob3QgdG8gZG8uCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzCi1pbmRleCAzMmMzZjFmMmIuLmY1NDE3ODkyMyAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfaGlnaF90aHJvdWdocHV0X2xpbWl0cwotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzCi1AQCAtMzgsNyArMzgsNyBAQCBOVU1fVEVTVFM9MTA0Ci0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gc2V0X2J3X2xpbWl0Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF91c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdAotaW5kZXggYTVkNWI1ZTkyLi5lMWRkOThlZTcgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF91c3QKLUBAIC0zNCw3ICszNCw3IEBAIE5VTV9URVNUUz0xNgotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSBmaQotIAotIGZ1bmN0aW9uIGx0dG5nX2NyZWF0ZV9zZXNzaW9uX3VyaQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudAotaW5kZXggNmFkYTg1ODBmLi43NTUzYzdkMWYgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfY291bnQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudAotQEAgLTMzLDcgKzMzLDcgQEAgUEFHRV9TSVpFPSQoZ2V0Y29uZiBQQUdFX1NJWkUpCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gZW5hYmxlX2x0dG5nX2NoYW5uZWxfY291bnRfbGltaXQgKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfc2l6ZSBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplCi1pbmRleCAzZGRkYmU2MTMuLjEwODk0ODdmZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfc2l6ZQotQEAgLTMzLDcgKzMzLDcgQEAgTlVNX1RFU1RTPTY2Ci0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gZW5hYmxlX2x0dG5nX2NoYW5uZWxfc2l6ZV9saW1pdCAoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZAotaW5kZXggNjFlYTY3YTcyLi45MjFhMjMwMWQgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3dpbGRjYXJkL3Rlc3RfZXZlbnRfd2lsZGNhcmQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZAotQEAgLTk3LDQyICs5Nyw0NyBAQCBwcmludF90ZXN0X2Jhbm5lciAiJFRFU1RfREVTQyIKLSAKLSBzdGFydF9sdHRuZ19zZXNzaW9uZAotIAotLWRpYWcgIlRlc3QgVVNUIHdpbGRjYXJkIgotLQotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgbmV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlza2lwX3VzdD0wCi0rZWxzZQotKwlza2lwX3VzdD0xCi0gZmkKLSAKLS1FVkVOVF9OQU1FPSJ0cDp0cHRlc3QiCi0rc2tpcCAkc2tpcF91c3QgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iICROVU1fVVNUX1RFU1RTIHx8Ci0rewotKwlkaWFnICJUZXN0IFVTVCB3aWxkY2FyZCIKLSAKLS0jIG5vbi1tYXRjaGluZwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwOmFiYyonCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKmFiYycKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqeionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKlwqKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqXConCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnXCoqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyo6KnRwdGUqcycKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICd0cCoqdHBUZXN0JwotKwlFVkVOVF9OQU1FPSJ0cDp0cHRlc3QiCi0gCi0tIyBtYXRjaGluZwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwOnRwKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwOnRwdGVzdConCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKioqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKip0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwdGUqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cConCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKjoqdHB0ZXN0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyo6KnRwdGUqdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0KnAqOip0KmUqcyp0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0KnAqOip0KmUqcyp0KicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHAqKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0ZXN0JwotKwkjIG5vbi1tYXRjaGluZwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICd0cDphYmMqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqYWJjJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqeionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJypcKionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJypcKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnXCoqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqOip0cHRlKnMnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwKip0cFRlc3QnCi0rCi0rCSMgbWF0Y2hpbmcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHA6dHAqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cDp0cHRlc3QqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKioqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKnRwdGVzdCcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwdGUqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHAqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHAqKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKjoqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqOip0cHRlKnQnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3QqcCo6KnQqZSpzKnQnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0KnAqOip0KmUqcyp0KicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHAqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCoqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0ZXN0JwotK30KLSAKLSBpZiBbICIkKGlkIC11KSIgPT0gIjAiIF07IHRoZW4KLSAJaXNyb290PTEKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS1jaGVjay1mb3ItZ2V0dGlkLUFQSS1kdXJpbmctY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDk0Y2VlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDY5YzYyZjVmM2NjNDI0YjdkZDBjOGU0MDk3NzQzYjM5YTljNDgzMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyNyBKdWwgMjAxOSAwODo0ODoxMyAtMDcwMAotU3ViamVjdDogW2x0dG5nLXRvb2xzXVtQQVRDSF0gY2hlY2sgZm9yIGdldHRpZCBBUEkgZHVyaW5nIGNvbmZpZ3VyZQotCi1BZGQgc3VwcG9ydCBmb3IgZ2V0dGlkKCkgcHJvdmlkZWQgYnkgZ2xpYmMgMi4zMCsKLQotU2luY2UgdmVyc2lvbiAyLjMwIGdsaWJjIHByb3ZpZGVzIGdldHRpZCBhbmQgaXQgY2F1c2VzIGNvbmZsaWN0cyB3aXRoCi1sb2NhbGx5IGRlZmluZWQgZ2V0dGlkKCkuIFVzZSB0aGUgbG9jYWwgZGVmaW5pdGlvbiBvZgotZ2V0dGlkIG9ubHkgaWYgc3lzdGVtIGdldHRpZCBpcyBub3QgYXZhaWxhYmxlLgotCi1odHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1ibG9iX3BsYWluO2Y9TkVXUztoYj1IRUFEPFBhc3RlPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICB8IDIgKy0KLSBzcmMvY29tbW9uL2NvbXBhdC90aWQuaCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDdiOTlmNWMuLmU0YmQ4MmMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE5MCw3ICsxOTAsNyBAQCBBQ19DSEVDS19IRUFERVJTKFsgXAotICMgQmFzaWMgZnVuY3Rpb25zIGNoZWNrCi0gQUNfQ0hFQ0tfRlVOQ1MoWyBcCi0gCWF0ZXhpdCBiemVybyBjbG9ja19nZXR0aW1lIGR1cDIgZmRhdGFzeW5jIGZscyBmdHJ1bmNhdGUgXAotLQlnZXRob3N0YnluYW1lIGdldGhvc3RuYW1lIGdldHBhZ2VzaXplIGxvY2FsdGltZV9yIG1lbWNociBtZW1zZXQgXAotKwlnZXRob3N0YnluYW1lIGdldGhvc3RuYW1lIGdldHBhZ2VzaXplIGdldHRpZCBsb2NhbHRpbWVfciBtZW1jaHIgbWVtc2V0IFwKLSAJbWtkaXIgbXVubWFwIHB1dGVudiByZWFscGF0aCBybWRpciBzb2NrZXQgc3RyY2hyIHN0cmNzcG4gc3RyZHVwIFwKLSAJc3RybmNhc2VjbXAgc3RybmR1cCBzdHJubGVuIHN0cnBicmsgc3RycmNociBzdHJzdHIgc3RydG9sIHN0cnRvdWwgXAotIAlzdHJ0b3VsbCBkaXJmZCBnZXRob3N0YnluYW1lMiBnZXRpcG5vZGVieW5hbWUgZXBvbGxfY3JlYXRlMSBcCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9jb21wYXQvdGlkLmggYi9zcmMvY29tbW9uL2NvbXBhdC90aWQuaAotaW5kZXggNDBmNTYyZi4uYWEwN2E4NSAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vY29tcGF0L3RpZC5oCi0rKysgYi9zcmMvY29tbW9uL2NvbXBhdC90aWQuaAotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaWZuZGVmIExUVE5HX1RJRF9ICi0gI2RlZmluZSBMVFROR19USURfSAotIAotKyNpZiAhSEFWRV9HRVRUSUQKLSAjaWZkZWYgX19saW51eF9fCi0gI2luY2x1ZGUgPHN5c2NhbGwuaD4KLSAjZW5kaWYKLUBAIC00Nyw1ICs0OCw1IEBAIHN0YXRpYyBpbmxpbmUgcGlkX3QgZ2V0dGlkKHZvaWQpCi0gCXJldHVybiBnZXRwaWQoKTsKLSB9Ci0gI2VuZGlmCi0tCi0rI2VuZGlmIC8qIEhBVkVfR0VUVElEICovCi0gI2VuZGlmIC8qIExUVE5HX1RJRF9IICovCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS10ZXN0cy1kby1ub3Qtc3RyaXAtYS1oZWxwZXItbGlicmFyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMDhiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS10ZXN0cy1kby1ub3Qtc3RyaXAtYS1oZWxwZXItbGlicmFyeS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGFiMjM4YzIxM2ZhYzE5MDk3MmY1NWU3M2NmM2UwYmIxYzc4NDZlYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTIgRGVjIDIwMTkgMTY6NTI6MDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGRvIG5vdCBzdHJpcCBhIGhlbHBlciBsaWJyYXJ5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3V0aWxzL3Rlc3RhcHAvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkvTWFrZWZpbGUuYW0gYi90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtCitpbmRleCAwM2Y1ZDVhLi5kMTJjMzQzIDEwMDY0NAorLS0tIGEvdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbQorQEAgLTEyLDcgKzEyLDcgQEAgdXNlcnNwYWNlX3Byb2JlX2VsZl9iaW5hcnlfTERBREQgPSBsaWJmb28ubGEKKyBsaWJmb28uc3RyaXA6IGxpYmZvby5sYQorIAkkKE9CSkNPUFkpIC0tc3RyaXAtYWxsIC5saWJzL2xpYmZvby5zbworIAorLWFsbC1sb2NhbDogbGliZm9vLnN0cmlwCisrYWxsLWxvY2FsOgorIAlAaWYgWyB4IiQoc3JjZGlyKSIgIT0geCIkKGJ1aWxkZGlyKSIgXTsgdGhlbiBcCisgCQlmb3Igc2NyaXB0IGluICQoRVhUUkFfRElTVCk7IGRvIFwKKyAJCQljcCAtZiAkKHNyY2RpcikvJCRzY3JpcHQgJChidWlsZGRpcik7IFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLXJlZ3Jlc3Npb24tZGlzYWJsZS10aGUtdG9vbHMtbGl2ZS10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLXJlZ3Jlc3Npb24tZGlzYWJsZS10aGUtdG9vbHMtbGl2ZS10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmMxNGVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gYzY5YjY4ZTVjMDNmMWQyNjAwMjVmYjFkZDlhYjczNDVlMzFlMTVlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNCBKYW4gMjAyMCAxODowMzoyNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0cy9yZWdyZXNzaW9uOiBkaXNhYmxlIHRoZSB0b29scy9saXZlIHRlc3RzCisKK1RoZXkgaGF2ZSBiZWVuIGZvdW5kIHRvIHNwb3JhZGljYWxseSBmYWlsOyB0aGUgaXNzdWUgaGFzIGJlZW4KK3JlcG9ydGVkIHVwc3RyZWFtIGFuZCB0aGV5IHdpbGwgd29yayB0byBpbnZlc3RpZ2F0ZSBhbmQgZml4OgoraHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9pc3N1ZXMvMTIxNworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIHdvcmtpbmcgb24gYSByZWFsIGZpeF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZS5hbSB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZS5hbSBiL3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUuYW0KK2luZGV4IDczZWI5ZjcuLmI5MmJkYmQgMTAwNjQ0CistLS0gYS90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtCitAQCAtOSwxNCArOSwxMCBAQCBURVNUUyA9IHRvb2xzL2ZpbHRlcmluZy90ZXN0X2ludmFsaWRfZmlsdGVyIFwKKyAJdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyIFwKKyAJdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0IFwKKyAJdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rIFwKKy0JdG9vbHMvbGl2ZS90ZXN0X3VzdCBcCistCXRvb2xzL2xpdmUvdGVzdF91c3RfdHJhY2VmaWxlX2NvdW50IFwKKy0JdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdCBcCisgCXRvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfY291bnQgXAorIAl0b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUgXAorIAl0b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24gXAorIAl0b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdCBcCistCXRvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcgXAorIAl0b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlIFwKKyAJdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZCBcCisgCXRvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg0YTA3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMi1GaXgtY2hlY2stZm9yLWx0dG5nLW1vZHVsZXMtcHJlc2VuY2UtYmVmb3JlLXRlc3RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Gcm9tIDU4ZTRkY2NlNDhiNDhiNjhiNjViZmZjMGNkNTFkOWUyNmI0NGM3NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb25hdGhhbiBSYWpvdHRlIDxqb25hdGhhbi5yYWpvdHRlLWp1bGllbkBlZmZpY2lvcy5jb20+Ci1EYXRlOiBXZWQsIDIyIE1heSAyMDE5IDE2OjQ0OjU0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeDogY2hlY2sgZm9yIGx0dG5nIG1vZHVsZXMgcHJlc2VuY2UgYmVmb3JlIHRlc3RpbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMubHR0bmcub3JnL3BpcGVybWFpbC9sdHRuZy1kZXYvMjAxOS1NYXkvMDI4OTg3Lmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIFJham90dGUgPGpvbmF0aGFuLnJham90dGUtanVsaWVuQGVmZmljaW9zLmNvbT4KLS0tLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwCi1pbmRleCAyOWIwZjYyLi5hNmJhZjY1IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLUBAIC00ODQsNiArNDg0LDcgQEAgZWxzZQotIGZpCi0gCi0gaWYgWyAiJChpZCAtdSkiID09ICIwIiBdOyB0aGVuCi0rCXZhbGlkYXRlX2x0dG5nX21vZHVsZXNfcHJlc2VudAotIAlURVNUUys9KAotIAl0ZXN0X211bHRpX2FwcF9rZXJuZWwKLSAJdGVzdF9vbl9yZWdpc3Rlcl9ldmFsdWF0aW9uX2tlcm5lbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTAuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjEwLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNmQxOWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi1TRUNUSU9OID0gImRldmVsIgotU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IENvbnRyb2wiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggdHJhY2UgdG9vbGtpdCBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIFwKLXRvIGV4dHJhY3QgcHJvZ3JhbSBleGVjdXRpb24gZGV0YWlscyBmcm9tIHRoZSBMaW51eCBvcGVyYXRpbmcgc3lzdGVtIFwKLWFuZCBpbnRlcnByZXQgdGhlbS4iCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxZDdmYzQ0OTZhYWNmMzdkOTBkZjkwYjkwYjBjYWMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTBmMGQ3MTUwMGU2YTU3ZmQyNGQ4MjVmMzMyNDJiOWNhIgotCi1ERVBFTkRTID0gImxpYnVyY3UgcG9wdCBsaWJ4bWwyIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIGJhc2ggZ2F3ayBiYWJlbHRyYWNlIHByb2NwcyBwZXJsLW1vZHVsZS1vdmVybG9hZGluZyBjb3JldXRpbHMgdXRpbC1saW51eCBrbW9kIGx0dG5nLW1vZHVsZXMgc2VkIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbXVzbC11dGlscyIKLSMgYmFiZWxzdGF0cy5wbCB3YW50cyBnZXRvcHQtbG9uZwotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWdldG9wdC1sb25nIgotCi1QWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKLSIKLVBBQ0tBR0VDT05GSUcgPz89ICJsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLWJpbmRpbmdzICR7UFlUSE9OX09QVElPTn0sLHB5dGhvbjMgc3dpZy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2x0dG5nLXVzdF0gPSAiLS13aXRoLWx0dG5nLXVzdCwgLS13aXRob3V0LWx0dG5nLXVzdCwgbHR0bmctdXN0IgotUEFDS0FHRUNPTkZJR1trbW9kXSA9ICItLXdpdGgta21vZCwgLS13aXRob3V0LWttb2QsIGttb2QiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9hcmMgPSAibHR0bmctdXN0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXRvb2xzL2x0dG5nLXRvb2xzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8veDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU2tpcC13aGVuLXRlc3RhcHAtaXMtbm90LXByZXNlbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtY2hlY2stZm9yLWx0dG5nLW1vZHVsZXMtcHJlc2VuY2UtYmVmb3JlLXRlc3RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jaGVjay1mb3ItZ2V0dGlkLUFQSS1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc4MDRkMTBlNGNhZGUzODFlMjQxNjAxZjYwNDczNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ3MWViZTAwYzVkOTg1Yzc0ZjMwZTk3YjYxNGU5MDk1NzNjYmQ5Mjc2Yzg1ZTA1ZDk1NTdhMGI4MTdhMTMxMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQgcHl0aG9uMy1kaXIgbWFucGFnZXMgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibHR0bmctc2Vzc2lvbmQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gInRyYWNpbmciCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8qICR7ZGF0YWRpcn0veG1sL2x0dG5nIFwKLSAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCi0KLSMgU2luY2UgZmlsZXMgYXJlIGluc3RhbGxlZCBpbnRvICR7bGliZGlyfS9sdHRuZy9saWJleGVjIHdlIG1hdGNoIAotIyB0aGUgbGliZXhlYyBpbnNhbmUgdGVzdCBzbyBza2lwIGl0LgotIyBQeXRob24gbW9kdWxlIG5lZWRzIHRvIGtlZXAgX2x0dG5nLnNvCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJsaWJleGVjIGRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJsaWJleGVjIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgZm9yIGYgaW4gTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvdXRpbHMvdXRpbHMuc2ggdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvbG9hZC00MioubHR0bmcgdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvY29uZmlndXJhdGlvbi9sb2FkLTQyKi5sdHRuZyA7IGRvCi0gICAgICAgIGluc3RhbGwgLUQgIiR7Qn0vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKLSAgICBkb25lCi0KLSAgICBmb3IgZiBpbiBjb25maWcvdGFwLWRyaXZlci5zaCBjb25maWcvdGVzdC1kcml2ZXIgc3JjL2NvbW1vbi9jb25maWcvc2Vzc2lvbi54c2Qgc3JjL2NvbW1vbi9taS1sdHRuZy0zLjAueHNkOyBkbwotICAgICAgICBpbnN0YWxsIC1EICIke1N9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCi0gICAgZG9uZQotCi0gICAgIyBQcmV2ZW50ICdtYWtlIGNoZWNrJyBmcm9tIHJlY3Vyc2luZyBpbnRvIG5vbi10ZXN0IHN1YmRpcmVjdG9yaWVzLgotICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IC4qIVNVQkRJUlMgPSB0ZXN0cyEnICIke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZSIKLQotICAgICMgV2UgZG9uJ3QgbmVlZCB0aGVzZQotICAgIHNlZCAtaSAtZSAnL2Rpc3Rfbm9pbnN0X1NDUklQVFMgPSAvLC9eJC9kJyAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCi0KLSAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3V0aWxzCi0gICAgc2VkIC1pIC1lICdzIWFtX19hcHBlbmRfMSA9IC4gdXRpbHMhYW1fX2FwcGVuZF8xID0gLiAhJyBcCi0gICAgICAgICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKLQotICAgICMgQ29weSB0aGUgdGVzdHMgZGlyZWN0b3J5IHRyZWUgYW5kIHRoZSBleGVjdXRhYmxlcyBhbmQKLSAgICAjIE1ha2VmaWxlcyBmb3VuZCB3aXRoaW4uCi0gICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1ub3QgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbwotICAgICAgICBpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKLSAgICAgICAgZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiBcCi0gICAgICAgICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gKwotICAgICAgICAjIFRha2UgYWxsIC5weSBzY3JpcHRzIGZvciB0ZXN0cyB1c2luZyB0aGUgcHl0aG9uIGJpbmRpbmdzLgotICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtdHlwZSBmIC1uYW1lICIqLnB5IiBcCi0gICAgICAgICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gKwotICAgICAgICB0ZXN0IC1yICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIiAmJiBcCi0gICAgICAgICAgICBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiCi0gICAgZG9uZQotCi0gICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KLSAgICAgICAgZm9yIGYgaW4gJChmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIC1wcmludGYgJyVQICcpIDsgZG8KLSAgICAgICAgICAgIGNwICR7Qn0vdGVzdHMvJGQvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYGRpcm5hbWUgJGRgLyRmCi0gICAgICAgICAgICBjYXNlICRmIGluCi0gICAgICAgICAgICAgICAgKi5zbykKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8KLSAgICAgICAgICAgICAgICAgICAgbG4gLXMgIC4uLyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLyRmCi0gICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIGFueSBycGF0aC9ydW5wYXRoIHRvIHBhc3MgUUEgY2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGNocnBhdGggLS1kZWxldGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvJGYKLSAgICAgICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgIGVzYWMKLSAgICAgICAgZG9uZQotICAgIGRvbmUKLQotICAgICMKLSAgICAjIFVzZSB0aGUgdmVyc2lvbmVkIGxpYnMgb2YgbGlibHR0bmctdXN0LWRsLgotICAgICMKLSAgICB1c3RkbD0iJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi91c3QvdXN0LWRsL3Rlc3RfdXN0LWRsLnB5IgotICAgIGlmIFsgLWUgJHVzdGRsIF07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzITpsaWJsdHRuZy11c3QtZGwuc28hOmxpYmx0dG5nLXVzdC1kbC5zby4wIScgJHVzdGRsCi0gICAgZmkKLQotICAgIGluc3RhbGwgJHtCfS90ZXN0cy91bml0L2luaV9jb25maWcvc2FtcGxlLmluaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L2luaV9jb25maWcvCi0KLSAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMKLSAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSB0b29scyAhU1VCRElSUyA9ICEnIFwKLSAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUiCi0KLSAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKLSAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KLSAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0gICAgICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKLSAgICAgICAgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCi0gICAgICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKLSAgICAgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKLSAgICAgICAgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAotICAgICAgICB7fSArCi0KLSAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0gICAgICAgIHRvdWNoIC1yICIke0J9L01ha2VmaWxlIiB7fSArCi0KLSAgICAjCi0gICAgIyBOZWVkIHRvIHN0b3AgZ2VuZXJhdGVkIGJpbmFyaWVzIGZyb20gcmVidWlsZGluZyBieSByZW1vdmluZyB0aGVpciBzb3VyY2UgZGVwZW5kZW5jaWVzCi0gICAgIwotICAgIHNlZCAtZSAncyNcKF50ZXN0LipPQkpFQ1RTLj1cKSNkaXNhYmxlXDEjZycgXAotICAgICAgICAtZSAncyNcKF50ZXN0LipERVBFTkRFTkNJRVMuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1lICdzI1woXnRlc3QuKlNPVVJDRVMuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1lICdzI1woXnRlc3QuKkxEQURELj1cKSNkaXNhYmxlXDEjZycgXAotICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L01ha2VmaWxlCi0KLSAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgotICAgIGZvciBwcm9nIGluIGx0dG5nIGx0dG5nLXJlbGF5ZCBsdHRuZy1zZXNzaW9uZCBsdHRuZy1jb25zdW1lcmQgbHR0bmctY3Jhc2g7IGRvCi0gICAgICAgIGV4ZWRpcj0iJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2Jpbi8ke3Byb2d9IgotICAgICAgICBpbnN0YWxsIC1kICIkZXhlZGlyIgotICAgICAgICBjYXNlICIkcHJvZyIgaW4KLSAgICAgICAgICAgIGx0dG5nLWNvbnN1bWVyZCkKLSAgICAgICAgICAgICAgICBsbiAtcyAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvJHByb2ciICIkZXhlZGlyIgotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqKQotICAgICAgICAgICAgICAgIGxuIC1zICIke2JpbmRpcn0vJHByb2ciICIkZXhlZGlyIgotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICBkb25lCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmExOWVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTEuMi5iYgpAQCAtMCwwICsxLDE2NiBAQAorU0VDVElPTiA9ICJkZXZlbCIKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBDb250cm9sIgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IHRyYWNlIHRvb2xraXQgaXMgYSBzdWl0ZSBvZiB0b29scyBkZXNpZ25lZCBcCit0byBleHRyYWN0IHByb2dyYW0gZXhlY3V0aW9uIGRldGFpbHMgZnJvbSB0aGUgTGludXggb3BlcmF0aW5nIHN5c3RlbSBcCithbmQgaW50ZXJwcmV0IHRoZW0uIgorCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMWQ3ZmM0NDk2YWFjZjM3ZDkwZGY5MGI5MGIwY2FjMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0wZjBkNzE1MDBlNmE1N2ZkMjRkODI1ZjMzMjQyYjljYSIKKworREVQRU5EUyA9ICJsaWJ1cmN1IHBvcHQgbGlieG1sMiB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBiYXNoIGdhd2sgYmFiZWx0cmFjZSBwcm9jcHMgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgY29yZXV0aWxzIHV0aWwtbGludXgga21vZCBsdHRuZy1tb2R1bGVzIHNlZCBweXRob24zLWNvcmUiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1tdXNsID0gIiBtdXNsLXV0aWxzIgorIyBiYWJlbHN0YXRzLnBsIHdhbnRzIGdldG9wdC1sb25nCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZ2V0b3B0LWxvbmciCisKK1BZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAorIgorUEFDS0FHRUNPTkZJRyA/Pz0gImx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24tYmluZGluZ3MgJHtQWVRIT05fT1BUSU9OfSwscHl0aG9uMyBzd2lnLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLXdpdGgtbHR0bmctdXN0LCAtLXdpdGhvdXQtbHR0bmctdXN0LCBsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0td2l0aC1rbW9kLCAtLXdpdGhvdXQta21vZCwga21vZCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2FyYyA9ICJsdHRuZy11c3QiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1kby1ub3Qtc3RyaXAtYS1oZWxwZXItbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vbHR0bmctc2Vzc2lvbmQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXJlZ3Jlc3Npb24tZGlzYWJsZS10aGUtdG9vbHMtbGl2ZS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjY4ZWQ3OGY3ZmE0MjM1NDc3ZWE1NzdlNDhiM2NkMjQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzNjQ3NzMwNWIyNWY2NWM1ZGQyMmRiOTE2MTI4N2QzMGEzMDljZTg2OGI2MTgwODU3YjFmZDFmYjVlNmE1NmIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IHBrZ2NvbmZpZyB1c2VyYWRkIHB5dGhvbjMtZGlyIG1hbnBhZ2VzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImx0dG5nLXNlc3Npb25kLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICJ0cmFjaW5nIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvKiAke2RhdGFkaXJ9L3htbC9sdHRuZyBcCisgICAgICAgICAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgorCisjIFNpbmNlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW50byAke2xpYmRpcn0vbHR0bmcvbGliZXhlYyB3ZSBtYXRjaCAKKyMgdGhlIGxpYmV4ZWMgaW5zYW5lIHRlc3Qgc28gc2tpcCBpdC4KKyMgUHl0aG9uIG1vZHVsZSBuZWVkcyB0byBrZWVwIF9sdHRuZy5zbworSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZXhlYyBkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZXhlYyIKKworUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmZvby5zbyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGZvciBmIGluIE1ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL3V0aWxzL3V0aWxzLnNoIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL2xvYWQtNDIqLmx0dG5nIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL2NvbmZpZ3VyYXRpb24vbG9hZC00MioubHR0bmcgdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF9oZWFsdGguc2ggdGVzdHMvcmVncmVzc2lvbi90b29scy9tZXRhZGF0YS91dGlscy5zaCB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JvdGF0aW9uL3JvdGF0ZV91dGlscy5zaDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRCAiJHtCfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgorICAgIGRvbmUKKworICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlciBzcmMvY29tbW9uL2NvbmZpZy9zZXNzaW9uLnhzZCBzcmMvY29tbW9uL21pLWx0dG5nLTMuMC54c2Q7IGRvCisgICAgICAgIGluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKKyAgICBkb25lCisKKyAgICAjIFByZXZlbnQgJ21ha2UgY2hlY2snIGZyb20gcmVjdXJzaW5nIGludG8gbm9uLXRlc3Qgc3ViZGlyZWN0b3JpZXMuCisgICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gLiohU1VCRElSUyA9IHRlc3RzIScgIiR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlIgorCisgICAgIyBXZSBkb24ndCBuZWVkIHRoZXNlCisgICAgc2VkIC1pIC1lICcvZGlzdF9ub2luc3RfU0NSSVBUUyA9IC8sL14kL2QnICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKKworICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvdXRpbHMKKyAgICBzZWQgLWkgLWUgJ3MhYW1fX2FwcGVuZF8xID0gLiB1dGlscyFhbV9fYXBwZW5kXzEgPSAuICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgorCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKyAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisgICAgICAgICMgVGFrZSBhbGwgLnB5IHNjcmlwdHMgZm9yIHRlc3RzIHVzaW5nIHRoZSBweXRob24gYmluZGluZ3MuCisgICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC10eXBlIGYgLW5hbWUgIioucHkiIFwKKyAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisgICAgICAgIHRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKKyAgICAgICAgICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKKyAgICBkb25lCisKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworICAgICAgICBmb3IgZiBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgLXByaW50ZiAnJVAgJykgOyBkbworICAgICAgICAgICAgY3AgJHtCfS90ZXN0cy8kZC8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9gZGlybmFtZSAkZGAvJGYKKyAgICAgICAgICAgIGNhc2UgJGYgaW4KKyAgICAgICAgICAgICAgICAqLnNvKQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLworICAgICAgICAgICAgICAgICAgICBsbiAtcyAgLi4vJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvJGYKKyAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgYW55IHJwYXRoL3J1bnBhdGggdG8gcGFzcyBRQSBjaGVjay4KKyAgICAgICAgICAgICAgICAgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8kZgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgZXNhYworICAgICAgICBkb25lCisgICAgZG9uZQorCisgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5CisKKyAgICAjCisgICAgIyBVc2UgdGhlIHZlcnNpb25lZCBsaWJzIG9mIGxpYmx0dG5nLXVzdC1kbC4KKyAgICAjCisgICAgdXN0ZGw9IiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vdXN0L3VzdC1kbC90ZXN0X3VzdC1kbC5weSIKKyAgICBpZiBbIC1lICR1c3RkbCBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncyE6bGlibHR0bmctdXN0LWRsLnNvITpsaWJsdHRuZy11c3QtZGwuc28uMCEnICR1c3RkbAorICAgIGZpCisKKyAgICBpbnN0YWxsICR7Qn0vdGVzdHMvdW5pdC9pbmlfY29uZmlnL3NhbXBsZS5pbmkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdW5pdC9pbmlfY29uZmlnLworCisgICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzCisgICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gdG9vbHMgIVNVQkRJUlMgPSAhJyBcCisgICAgICAgICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlIgorCisgICAgIyBQcmV2ZW50IGF0dGVtcHRzIHRvIHVwZGF0ZSBNYWtlZmlsZXMgZHVyaW5nIHRlc3QgcnVucywgYW5kCisgICAgIyBzaWxlbmNlICJNYWtpbmcgY2hlY2sgaW4gJFNVQkRJUiIgbWVzc2FnZXMuCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICBzZWQgLWkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyAtZSAnLyU6ICUuaW4vLC9eJC9kJyBcCisgICAgICAgIC1lICcvZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXFwvZCcgXAorICAgICAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyBcCisgICAgICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyBcCisgICAgICAgIC1lICdzL15hbGwtYW06LiovYWxsLWFtOi8nIFwKKyAgICAgICAge30gKworCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICB0b3VjaCAtciAiJHtCfS9NYWtlZmlsZSIge30gKworCisgICAgIworICAgICMgTmVlZCB0byBzdG9wIGdlbmVyYXRlZCBiaW5hcmllcyBmcm9tIHJlYnVpbGRpbmcgYnkgcmVtb3ZpbmcgdGhlaXIgc291cmNlIGRlcGVuZGVuY2llcworICAgICMKKyAgICBzZWQgLWUgJ3MjXChedGVzdC4qT0JKRUNUUy49XCkjZGlzYWJsZVwxI2cnIFwKKyAgICAgICAgLWUgJ3MjXChedGVzdC4qREVQRU5ERU5DSUVTLj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtZSAncyNcKF50ZXN0LipTT1VSQ0VTLj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtZSAncyNcKF50ZXN0LipMREFERC49XCkjZGlzYWJsZVwxI2cnIFwKKyAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdW5pdC9NYWtlZmlsZQorCisgICAgIyBTdWJzdGl0dXRlIGxpbmtzIHRvIGluc3RhbGxlZCBiaW5hcmllcy4KKyAgICBmb3IgcHJvZyBpbiBsdHRuZyBsdHRuZy1yZWxheWQgbHR0bmctc2Vzc2lvbmQgbHR0bmctY29uc3VtZXJkIGx0dG5nLWNyYXNoOyBkbworICAgICAgICBleGVkaXI9IiR7RH0ke1BURVNUX1BBVEh9L3NyYy9iaW4vJHtwcm9nfSIKKyAgICAgICAgaW5zdGFsbCAtZCAiJGV4ZWRpciIKKyAgICAgICAgY2FzZSAiJHByb2ciIGluCisgICAgICAgICAgICBsdHRuZy1jb25zdW1lcmQpCisgICAgICAgICAgICAgICAgbG4gLXMgIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyRwcm9nIiAiJGV4ZWRpciIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICBsbiAtcyAiJHtiaW5kaXJ9LyRwcm9nIiAiJGV4ZWRpciIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgZG9uZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZmODUyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLURvbid0IGJ1aWxkIHRoZSBkb2MgZXhhbXBsZXMgLSB3ZSBkb24ndCBuZWVkIHRoZW0gYW5kIGluIGZhY3QgdGhleQotbmV2ZXIgc3VjY2Vzc2Z1bGx5IGJ1aWx0IGluIHByZXZpb3VzIGl0ZXJhdGlvbnMgb2YgdGhlIGx0dG5nLXVzdAotcmVjaXBlIGFueXdheS4KLQotU2lnbmVkLW9mZi1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGludGVsLmNvbT4KLQotSW5kZXg6IGx0dG5nLXVzdC0yLjkuMS9kb2MvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsdHRuZy11c3QtMi45LjEub3JpZy9kb2MvTWFrZWZpbGUuYW0KLSsrKyBsdHRuZy11c3QtMi45LjEvZG9jL01ha2VmaWxlLmFtCi1AQCAtMSwzICsxLDMgQEAKLS1TVUJESVJTID0gLiBtYW4gZXhhbXBsZXMKLStTVUJESVJTID0gLiBtYW4KLSAKLSBkaXN0X2RvY19EQVRBID0gamF2YS1hZ2VudC50eHQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjEwLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYWFkMzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjEwLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgVXNlcnNwYWNlIFRyYWNlciAyLngiCi1ERVNDUklQVElPTiA9ICJUaGUgTFRUbmcgVVNUIDIueCBwYWNrYWdlIGNvbnRhaW5zIHRoZSB1c2Vyc3BhY2UgdHJhY2VyIGxpYnJhcnkgdG8gdHJhY2UgdXNlcnNwYWNlIGNvZGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXN0IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2x0dG5nLXVzdCIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5NjNlYjM2NmI3ODEyNTJiMGJmMGZkZjE2MjRkOWU5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NucHJpbnRmL3NucHJpbnRmLmM7ZW5kbGluZT0zMjttZDU9ZDNkNTQ0OTU5ZDhhMzc4MmIyZTA3NDUxYmUwYTkwM2MgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvdmFyaW91cy5oO2VuZGxpbmU9MzE7bWQ1PTg5ZjI1MDliNmI0NjgyYzRmYzk1MjU1ZWVjNGFiZTQ0IgotCi1QWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgbWFucGFnZXMgcHl0aG9uM25hdGl2ZQotCi1ERVBFTkRTID0gImxpYnVyY3UgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59LWJpbiA9ICJweXRob24zLWNvcmUiCi0KLSMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFmdGVyIHJlbmFtZQotUlBST1ZJREVTXyR7UE59ID0gImx0dG5nMi11c3QiCi1SUkVQTEFDRVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLVJDT05GTElDVFNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLQotUEUgPSAiMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy11c3QvbHR0bmctdXN0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLWx0dG5ndXN0LU1ha2VmaWxlLmFtLUFkZC1pbnN0YWxsLWxpYi10by1zZXR1cC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjBjODZhOWZhN2RjZmQwMjA1ZmI0MjU4NGEzMTBiMWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDZmOWVkOWIyMTk4ODU1YjFjN2ZjYmYxNWZlNTcyOTdlZTI1OTQwOWZmYTFiM2JhZDg3MzIxNDEyZDk4YmMzNSIKLQotQ1ZFX1BST0RVQ1QgPSAidXN0IgotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjMtYWdlbnRdID0gIi0tZW5hYmxlLXB5dGhvbi1hZ2VudCAke1BZVEhPTl9PUFRJT059LCAtLWRpc2FibGUtcHl0aG9uLWFnZW50LCBweXRob24zLCBweXRob24zIgotCi1GSUxFU18ke1BOfSArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0Ci0gICAgICAgICMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2JpbmRpcn0vbHR0bmctZ2VuLXRwCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZDBkZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTEuMS5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgVXNlcnNwYWNlIFRyYWNlciAyLngiCitERVNDUklQVElPTiA9ICJUaGUgTFRUbmcgVVNUIDIueCBwYWNrYWdlIGNvbnRhaW5zIHRoZSB1c2Vyc3BhY2UgdHJhY2VyIGxpYnJhcnkgdG8gdHJhY2UgdXNlcnNwYWNlIGNvZGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXN0IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2x0dG5nLXVzdCIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5NjNlYjM2NmI3ODEyNTJiMGJmMGZkZjE2MjRkOWU5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NucHJpbnRmL3NucHJpbnRmLmM7ZW5kbGluZT0zMjttZDU9ZDNkNTQ0OTU5ZDhhMzc4MmIyZTA3NDUxYmUwYTkwM2MgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvdmFyaW91cy5oO2VuZGxpbmU9MzE7bWQ1PTg5ZjI1MDliNmI0NjgyYzRmYzk1MjU1ZWVjNGFiZTQ0IgorCitQWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgbWFucGFnZXMgcHl0aG9uM25hdGl2ZQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW51bWEiCisKK0RFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKKworIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCitSUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgorUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgorCitQRSA9ICIyIgorCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXVzdC9sdHRuZy11c3QtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbi1sdHRuZ3VzdC1NYWtlZmlsZS5hbS1BZGQtaW5zdGFsbC1saWItdG8tc2V0dXAucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZGUwNGE4ZmYxZjBhNGVmZmEwOWE0MjYyMGVjNDA4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZmJhYjk2M2Q2MDc0MWZmZDRkOGRkMGEyNDZmNmNmMTY4Y2RmZTNiMjM4NTc5OGJkOTA1NTBmNWYwYmJhODY5IgorCitDVkVfUFJPRFVDVCA9ICJ1c3QiCisKK1BBQ0tBR0VDT05GSUdbZXhhbXBsZXNdID0gIi0tZW5hYmxlLWV4YW1wbGVzLCAtLWRpc2FibGUtZXhhbXBsZXMsIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tweXRob24zLWFnZW50XSA9ICItLWVuYWJsZS1weXRob24tYWdlbnQgJHtQWVRIT05fT1BUSU9OfSwgLS1kaXNhYmxlLXB5dGhvbi1hZ2VudCwgcHl0aG9uMywgcHl0aG9uMyIKKworRklMRVNfJHtQTn0gKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5sYSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgICMgUGF0Y2ggcHl0aG9uIHRvb2xzIHRvIHVzZSBQeXRob24gMzsgdGhleSBzaG91bGQgYmUgc291cmNlIGNvbXBhdGlibGUsIGJ1dAorICAgICAgICAjIHN0aWxsIHJlZmVyIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2x0dG5nLWdlbi10cAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggMDcwZDVlYy4uZDMzMWQxYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCkBAIC01Miw3ICs1Miw3IEBACiAja2VybmVsIDMuMSsgc3VwcG9ydHMgV0VSUk9SIHRvIGRpc2FibGUgd2FybmluZ3MgYXMgZXJyb3JzCiBleHBvcnQgV0VSUk9SID0gIjAiCiAKLWRvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCitkb19wb3B1bGF0ZV9saWNbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUGVybCBiaW5kaW5nCiBpbmNsdWRlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdwZXJmLXBlcmwuaW5jJywgJycsIGQpfQpAQCAtNzMsNiArNzMsOCBAQAogICAgIENST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBcCiAgICAgQVJDSD0ke0FSQ0h9IFwKICAgICBDQz0iJHtDQ30iIFwKKyAgICBDQ0xEPSIke0NDfSIgXAorICAgIExEU0hBUkVEPSIke0NDfSAtc2hhcmVkIiBcCiAgICAgQVI9IiR7QVJ9IiBcCiAgICAgTEQ9IiR7TER9IiBcCiAgICAgRVhUUkFfQ0ZMQUdTPSItbGR3IiBcCkBAIC0xNDUsNiArMTQ3LDcgQEAKICAgICBzcmNfZGlyID0gZC5nZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0RJUiIpCiAgICAgZGVzdF9kaXIgPSBkLmdldFZhcigiUyIpCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RfZGlyKQorICAgIGJiLnV0aWxzLnBydW5lZGlyKGRlc3RfZGlyKQogICAgIGZvciBzIGluIHNvdXJjZXM6CiAgICAgICAgIHNyYyA9IG9lLnBhdGguam9pbihzcmNfZGlyLCBzKQogICAgICAgICBkZXN0ID0gb2UucGF0aC5qb2luKGRlc3RfZGlyLCBzKQpAQCAtMTYxLDcgKzE2NCw3IEBACiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgIyBJZiBidWlsZGluZyBhIG11bHRsaWIgYmFzZWQgcGVyZiwgdGhlIGluY29ycmVjdCBsaWJyYXJ5IHBhdGggd2lsbCBiZQogICAgICMgZGV0ZWN0ZWQgYnkgcGVyZiwgc2luY2UgaXQgdHJpZ2dlcnMgdmlhOiBpZmVxICgkKEFSQ0gpLHg4Nl82NCkuIEluIGEgMzIgYml0Ci0gICAgIyBidWlsZCwgd2l0aCBhIDY0IGJpdCBtdWx0aWxpYiwgdGhlIGFyY2ggd29uJ3QgbWF0Y2ggYW5kIHRoZSBkZXRlY3Rpb24gb2YgYSAKKyAgICAjIGJ1aWxkLCB3aXRoIGEgNjQgYml0IG11bHRpbGliLCB0aGUgYXJjaCB3b24ndCBtYXRjaCBhbmQgdGhlIGRldGVjdGlvbiBvZiBhCiAgICAgIyA2NCBiaXQgYnVpbGQgKGFuZCBsaWJyYXJ5KSBhcmUgbm90IGV4ZWN0ZWQuIFRvIGVuc3VyZSB0aGF0IGxpYnJhcmllcyBhcmUKICAgICAjIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBsb2NhdGlvbiwgd2UgY2FuIHVzZSB0aGUgd2VhayBhc3NpZ25tZW50IGluIHRoZQogICAgICMgY29uZmlnL01ha2VmaWxlLgpAQCAtMjM3LDExICsyNDAsOCBAQAogICAgIGZpCiAKICAgICAjIHVzZSAvdXNyL2Jpbi9lbnYgaW5zdGVhZCBvZiB2ZXJzaW9uIHNwZWNpZmljIHB5dGhvbgotICAgIGZvciBzIGluIGBmaW5kICR7U30vdG9vbHMvcGVyZi8gLW5hbWUgJyoucHknYCBzY3JpcHRzL2JwZl9oZWxwZXJzX2RvYy5weTsgZG8KLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbjIsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL2VudiBweXRob24yLC91c3IvYmluL2VudiBweXRob24zLCcgIiR7c30iCi0gICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9weXRob24zLC91c3IvYmluL2VudiBweXRob24zLCcgIiR7c30iCi0gICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9weXRob24sL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKKyAgICBmb3IgcyBpbiBgZmluZCAke1N9L3Rvb2xzL3BlcmYvIC1uYW1lICcqLnB5J2AgYGZpbmQgJHtTfS9zY3JpcHRzLyAtbmFtZSAnYnBmX2hlbHBlcnNfZG9jLnB5J2A7IGRvCisgICAgICAgIHNlZCAtaSAtZSAicywjIS4qcHl0aG9uLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCIgJHtzfQogICAgIGRvbmUKIAogICAgICMgdW5pc3RkLmggY2FuIGJlIG91dCBvZiBzeW5jIGJldHdlZW4gbGliYy1oZWFkZXJzIGFuZCB0aGUgY2FwdHVyZWQgdmVyc2lvbiBpbiB0aGUgcGVyZiBzb3VyY2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIKaW5kZXggNWJlOGQyMy4uN2I3YjM5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIKQEAgLTEsMTIgKzEsMTIgQEAKIFNVTU1BUlkgPSAiUG93ZXIgdXNhZ2UgdG9vbCIKIERFU0NSSVBUSU9OID0gIkxpbnV4IHRvb2wgdG8gZGlhZ25vc2UgaXNzdWVzIHdpdGggcG93ZXIgY29uc3VtcHRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQuIgotSE9NRVBBR0UgPSAiaHR0cDovLzAxLm9yZy9wb3dlcnRvcC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5sZXNzd2F0dHMub3JnLyIKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL3Bvd2VydG9wLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hcHAuZGV2emluZy5jb20vcG93ZXJ0b3BidWdzL2J1Z3ppbGxhIgogREVQRU5EUyA9ICJuY3Vyc2VzIGxpYm5sIHBjaXV0aWxzIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIgogCi1TUkNfVVJJID0gImh0dHA6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AtdiR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vMDEub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG93bmxvYWRzL3Bvd2VydG9wLXYke1BWfS50YXIuZ3ogXAogICAgIGZpbGU6Ly8wMDAxLXdha2V1cF94eHguaC1pbmNsdWRlLWxpbWl0cy5oLnBhdGNoIFwKICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGU1MWNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gZDMzMmI0ODAyNTdhYTk4YjYzZDM5YzNjOTQ4OTZhMTExNTM2ZjkzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxODozODoyNiArMDMwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRG8gbm90IGJ1aWxkIGFueXRoaW5nIGluIGhlbHAvIGFzIGl0IHJlcXVpcmVzIGl0c3Rvb2wuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBtZXNvbi5idWlsZCB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAzOTg2MjczLi5hZTJmNjVlIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY0LDcgKzE2NCw2IEBAIHN1YmRpcigndG9vbHMnKQotIHN1YmRpcigndGVzdHMnKQotIAotIHN1YmRpcignZGF0YScpCi0tc3ViZGlyKCdoZWxwJykKLSBzdWJkaXIoJ3BvJykKLSAKLSBtZXNvbi5hZGRfaW5zdGFsbF9zY3JpcHQoJ2J1aWxkLWF1eC9tZXNvbi9wb3N0X2luc3RhbGwuc2gnKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1ZGRhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotT24gdWNsaWJjIGVsZi5oIGRvZXMgbm90IGhhdmUgR05VIGV4dGVudGlvbnMgYnV0IHdlIG5lZWQgdGhpcyBkZWZpbmUKLXNvIHdlIGRlZmluZSBpdCBsb2NhbGx5IGlmIGl0cyBub3QgZ2V0dGluZyBpdCBmcm9tIGVsZi5oCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogZ2l0L2VsZnBhcnNlci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvbGliL3V0aWwvZWxmcGFyc2VyLmgJMjAxMS0wNy0xNiAxODo1Nzo0MS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBnaXQvbGliL3V0aWwvZWxmcGFyc2VyLmgJMjAxMS0wNy0xNiAyMDoyODo1NC43MzM4Mjk4OTUgLTA3MDAKLUBAIC0xNyw2ICsxNywxMCBAQAotICAqLwotICNpbmNsdWRlIDxnbGliLmg+Ci0gCi0rI2lmbmRlZiBOVF9HTlVfQlVJTERfSUQKLSsjZGVmaW5lIE5UX0dOVV9CVUlMRF9JRCAzCi0rI2VuZGlmCi0rCi0gdHlwZWRlZiBzdHJ1Y3QgRWxmU3ltIEVsZlN5bTsKLSB0eXBlZGVmIHN0cnVjdCBFbGZQYXJzZXIgRWxmUGFyc2VyOwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjMyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyOTMzOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdzZXR0aW5ncwotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZDFmYTlhZDIxNjQxOWQ3MjI3NzBjYTM2NzEzYWQzYWYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmYzIyYTY5ZTQ2ODcwMWM1ZWM5MDM2ZTk2MGM2MjczYWZhMWVkNmE4OWRmMWY4ODlmZWQ0OTQxN2FkZDU1NTRkIgotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICcke0dUSzNESVNUUk9GRUFUVVJFU30nLCAnZ3RrJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItRGVuYWJsZV9ndGs9dHJ1ZSwtRGVuYWJsZV9ndGs9ZmFsc2UsZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3N5c3Byb2ZkXSA9ICItRHdpdGhfc3lzcHJvZmQ9YnVuZGxlZCwtRHdpdGhfc3lzcHJvZmQ9bm9uZSxwb2xraXQiCi0KLVNPTElCUyA9ICIuc28iCi1GSUxFU19TT0xJQlNERVYgPSAiIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzcHJvZmQnLCAnc3lzcHJvZjIuc2VydmljZScsICcnLCBkKX0iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWV0YWluZm8gXAotICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKaW5kZXggYWJiMmIzNy4uMTE2ZTgzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCkBAIC0xLDcgKzEsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotU1JDUkVWID0gIjU3YzlhY2E5ZjFmZjMyYTZhZGQxMGUwMmVjZDMzYjczMTRmYWQ0OTkiCi1QViA9ICI0LjErZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiMDQ0YTA2NDA5ODVlZjAwN2MwYjJmYjZlYWY2NjBkOWQ1MTgwMGNkYSIKK1BWID0gIjQuMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvc3lzdGVtdGFwLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1sZXQtY29uZmlndXJlLXdyaXRlLWEtcHl0aG9uLWxvY2F0aW9uLWludG8tdGgucGF0Y2ggXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtRml4LWFsc2Etc291bmQtLmgtZm9yLWV4dGVybmFsLXByb2dyYW1zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtRml4LWFsc2Etc291bmQtLmgtZm9yLWV4dGVybmFsLXByb2dyYW1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDY1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2gKQEAgLTAsMCArMSw3MTA0IEBACitGcm9tIGFlNTY0NjY1ZWMyNjFjZjEwNGRlNDk5YjFjZGRhMzU2NDA3MGZjNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE1OjQ2OjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBhbHNhL3NvdW5kLyouaCBmb3IgZXh0ZXJuYWwgcHJvZ3JhbXMKKworVGhlIHJlY2VudCB1cGRhdGUgb2Ygc291bmQvKi5oIHRvIHN5bmMgd2l0aCB0aGUgbGF0ZXN0IExpbnVzIHVhcGkKK2ZpbGVzIGJyb2tlIHRoZSBidWlsZCBvZiBhbHNhLXRvb2xzIHByb2dyYW1zLiAgVGhlc2UgZmlsZXMgdXNlZCB0byBiZQorYSBtb2RpZmllZCB2ZXJzaW9uIG9mIExpbnV4IHNvdW5kLyogaGVhZGVyIGZpbGVzLCBzbyB0aGF0IHRoZXkgY291bGQKK2JlIGJ1aWx0IHdpdGhvdXQgTGludXggaGVhZGVycy4gIFRoZSBzcGVjaWFsIHByZWZpeCBsaWtlIF9fdXNlciBhbmQKK290aGVyIHRoaW5ncyB3ZXJlIHdvcmtlZCBhcm91bmQgdGhlcmUuCisKK1dlIG1heSBkbyB0aGF0IGFnYWluLCBidXQgYSBiZXR0ZXIgYXBwcm9hY2ggaXMgdG8gZml4IHRob3NlIHRoaW5ncyBpbgorTGludXgga2VybmVsIHVhcGkgc2lkZSwgd2hpbGUgd2Uga2VlcCB0aGUgbWluaW1hbCB3b3JrYXJvdW5kIGluCithbHNhLWxpYiBzdWNoIGFzIHRoZSBfX3UxNiBhbmQgY28gdHlwZSBkZWZpbml0aW9ucy4KKworVGhpcyBwYXRjaCBpcyBzdWNoIGFuIGF0dGVtcHQsIG5hbWVseToKKy0gS2VlcCB0aGUgb3JpZ2luYWwgJExJTlVYL3VhcGkvc291bmQvKi5oIGluIGluY2x1ZGUvc291bmQvdWFwaQorICBkaXJlY3RvcnkKKy0gVGhlICJmaXhlcyIgYXJlIGFwcGxpZWQgdG8gc29tZSB1YXBpIGhlYWRlcnMsIHNvIHRoYXQgdGhleSBkb24ndAorICBjb250YWluIExpbnV4LXNwZWNpZmljIHByZWZpeCBhbmQgdXNlIG9mIG9wYXF1ZSBzdHJ1Y3QgbGlrZQorICBzbmRfY3RsX2VsZW1faWQKKy0gVGhlIHVhcGkgaGVhZGVycyBhcmUgaW5jbHVkZWQgaW5kaXJlY3RseSBmcm9tIGluY2x1ZGUvc291bmQvKi5oCistIFNvbWUgaGVhZGVycyBoYXZlIGluY2x1c2lvbiBvZiB0eXBlX2NvbXBhdC5oIGZvciB0aGUgTGludXggdmFyaWFibGUKKyAgdHlwZXMgYW5kIHByZWZpeGVzCistIHR5cGVfY29tcGF0LmggdHJpZXMgdG8gdXNlIDxsaW51eC90eXBlcy5oPiB3aGVuIF9fbGludXhfXyBpcworICBkZWZpbmVkLCBpbnN0ZWFkIG9mIHRoZSBvd24gY29uZmxpY3RpbmcgZGVmaW5pdGlvbnMKKworVGhlIGxhc3QgdHlwZSBtaWdodCBuZWVkIGEgYml0IG1vcmUgYWRqdXN0bWVudCBkZXBlbmRpbmcgb24gdGhlCitjb21waWxlciwgYnV0IGl0IGNhbiBiZSBmaXhlZCBsb2NhbGx5IHdpdGhvdXQgZGlzdHVyYmluZyBlbHNlLgorCitTaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorCistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCisgaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbSAgICAgICAgIHwgICAgNiArLQorIGluY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oICAgICAgICB8ICA2MTMgKy0tLS0tLS0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL2Fzb2MuaCAgICAgICAgICAgICAgfCAgNjM0ICstLS0tLS0tLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvYXNvdW5kLmggICAgICAgICAgICB8IDEwMzkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oICAgICAgICAgfCAgMTM2ICstLS0KKyBpbmNsdWRlL3NvdW5kL2VtdTEwazEuaCAgICAgICAgICAgfCAgMzgzICstLS0tLS0tLS0tCisgaW5jbHVkZS9zb3VuZC9oZHNwLmggICAgICAgICAgICAgIHwgIDExMyArLS0tCisgaW5jbHVkZS9zb3VuZC9oZHNwbS5oICAgICAgICAgICAgIHwgIDIzNCArLS0tLS0tCisgaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oICAgICAgICAgIHwgIDEyNCArLS0tCisgaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaCAgICAgIHwgICAyMiArLQorIGluY2x1ZGUvc291bmQvdGx2LmggICAgICAgICAgICAgICB8ICAxMTggKy0tLQorIGluY2x1ZGUvc291bmQvdHlwZV9jb21wYXQuaCAgICAgICB8ICAgMTMgKworIGluY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZS5hbSAgICB8ICAgIDYgKworIGluY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmggICB8ICA2MTIgKysrKysrKysrKysrKysrKysKKyBpbmNsdWRlL3NvdW5kL3VhcGkvYXNvYy5oICAgICAgICAgfCAgNjMzICsrKysrKysrKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaCAgICAgICB8IDEwMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9hc291bmRfZm0uaCAgICB8ICAxMzUgKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmggICAgICB8ICAzOTUgKysrKysrKysrKysKKyBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oICAgICAgICAgfCAgMTA5ICsrKworIGluY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oICAgICAgICB8ICAyMzAgKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9zYjE2X2NzcC5oICAgICB8ICAxMjMgKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaCB8ICAgMjEgKworIGluY2x1ZGUvc291bmQvdWFwaS90bHYuaCAgICAgICAgICB8ICAxMTcgKysrKworIHNyYy90b3BvbG9neS90cGxnX2xvY2FsLmggICAgICAgICB8ICAgIDMgKy0KKyAyNSBmaWxlcyBjaGFuZ2VkLCAzNDUyIGluc2VydGlvbnMoKyksIDM0MDggZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZS5hbQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvYXNlcXVlbmNlci5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9hc29jLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZC5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9hc291bmRfZm0uaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS90bHYuaAorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxMTllZjYwMC4uODg2Zjg3YmMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcwNyw3ICs3MDcsOCBAQCBpZiB0ZXN0ICEgLUwgIiRzcmNkaXIiL2luY2x1ZGUvYWxzYSA7IHRoZW4KKyBmaQorIAorIEFDX09VVFBVVChNYWtlZmlsZSBkb2MvTWFrZWZpbGUgZG9jL3BpY3R1cmVzL01ha2VmaWxlIGRvYy9kb3h5Z2VuLmNmZyBcCistCSAgaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL3NvdW5kL01ha2VmaWxlIHNyYy9WZXJzaW9ucyBzcmMvTWFrZWZpbGUgXAorKwkgIGluY2x1ZGUvTWFrZWZpbGUgaW5jbHVkZS9zb3VuZC9NYWtlZmlsZSBpbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUgXAorKwkgIHNyYy9WZXJzaW9ucyBzcmMvTWFrZWZpbGUgXAorICAgICAgICAgICBzcmMvY29udHJvbC9NYWtlZmlsZSBzcmMvbWl4ZXIvTWFrZWZpbGUgXAorIAkgIHNyYy9wY20vTWFrZWZpbGUgc3JjL3BjbS9zY29wZXMvTWFrZWZpbGUgXAorIAkgIHNyYy9yYXdtaWRpL01ha2VmaWxlIHNyYy90aW1lci9NYWtlZmlsZSBcCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbSBiL2luY2x1ZGUvc291bmQvTWFrZWZpbGUuYW0KK2luZGV4IDk5YzQyMjExLi5jY2M3ZDI3MyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvTWFrZWZpbGUuYW0KKysrKyBiL2luY2x1ZGUvc291bmQvTWFrZWZpbGUuYW0KK0BAIC0xLDcgKzEsOSBAQAorK1NVQkRJUlMgPSB1YXBpCisrCisgYWxzYXNvdW5kaW5jbHVkZWRpciA9ICR7aW5jbHVkZWRpcn0vYWxzYS9zb3VuZAorIAorIGFsc2Fzb3VuZGluY2x1ZGVfSEVBREVSUyA9IGFzb3VuZF9mbS5oIGhkc3AuaCBoZHNwbS5oIHNiMTZfY3NwLmggXAorLQkJCSAgIHNzY2FwZV9pb2N0bC5oIGVtdTEwazEuaCB0eXBlX2NvbXBhdC5oIFwKKy0JCQkgICBhc29jLmggdGx2LmgKKysJCQkgICBzc2NhcGVfaW9jdGwuaCBlbXUxMGsxLmggIGFzb2MuaCB0bHYuaCBcCisrCQkJICAgdHlwZV9jb21wYXQuaAorIAorIG5vaW5zdF9IRUFERVJTID0gYXNvdW5kLmggYXNlcXVlbmNlci5oCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmggYi9pbmNsdWRlL3NvdW5kL2FzZXF1ZW5jZXIuaAoraW5kZXggYTc1ZTE0ZWQuLmU1MzlhNzdlIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oCitAQCAtMSw2MTIgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBNYWluIGhlYWRlciBmaWxlIGZvciB0aGUgQUxTQSBzZXF1ZW5jZXIKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk4LTE5OTkgYnkgRnJhbmsgdmFuIGRlIFBvbCA8ZnZkcG9sQGNvaWwuZGVtb24ubmw+CistICogICAgICAgICAgICAoYykgMTk5OC0xOTk5IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CistICoKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLSNpZm5kZWYgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorLSNkZWZpbmUgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorLQorLSNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKy0KKy0vKiogdmVyc2lvbiBvZiB0aGUgc2VxdWVuY2VyICovCistI2RlZmluZSBTTkRSVl9TRVFfVkVSU0lPTiBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDIpCistCistLyoqCistICogZGVmaW5pdGlvbiBvZiBzZXF1ZW5jZXIgZXZlbnQgdHlwZXMKKy0gKi8KKy0KKy0vKiogc3lzdGVtIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfcmVzdWx0CistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1lTVEVNCQkwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTVUxUCQkxCistCistLyoqIG5vdGUgbWVzc2FnZXMgKGNoYW5uZWwgc3BlY2lmaWMpCistICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfbm90ZQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEUJCTUKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT04JCTYKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT0ZGCQk3CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VZUFJFU1MJOAorLQkKKy0vKiogY29udHJvbCBtZXNzYWdlcyAoY2hhbm5lbCBzcGVjaWZpYykKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9jdHJsCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVFJPTExFUgkxMAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BHTUNIQU5HRQkxMQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NIQU5QUkVTUwkxMgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BJVENIQkVORAkxMwkvKio8IGZyb20gLTgxOTIgdG8gODE5MSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRST0wxNAkxNAkvKio8IDE0IGJpdCBjb250cm9sbGVyIHZhbHVlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9OUkVHUEFSQU0JMTUJLyoqPCAxNCBiaXQgTlJQTiBhZGRyZXNzICsgMTQgYml0IHVuc2lnbmVkIHZhbHVlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVHUEFSQU0JMTYJLyoqPCAxNCBiaXQgUlBOIGFkZHJlc3MgKyAxNCBiaXQgdW5zaWduZWQgdmFsdWUgKi8KKy0KKy0vKiogc3luY2hyb25pc2F0aW9uIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfY3RybAorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdQT1MJCTIwCS8qIFNvbmcgUG9zaXRpb24gUG9pbnRlciB3aXRoIExTQiBhbmQgTVNCIHZhbHVlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdTRUwJCTIxCS8qIFNvbmcgU2VsZWN0IHdpdGggc29uZyBJRCBudW1iZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9RRlJBTUUJCTIyCS8qIG1pZGkgdGltZSBjb2RlIHF1YXJ0ZXIgZnJhbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9USU1FU0lHTgkyMwkvKiBTTUYgVGltZSBTaWduYXR1cmUgZXZlbnQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVlTSUdOCQkyNAkvKiBTTUYgS2V5IFNpZ25hdHVyZSBldmVudCAqLworLQkgICAgICAgIAorLS8qKiB0aW1lciBtZXNzYWdlcworLSAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbAorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUQVJUCQkzMAkvKiBtaWRpIFJlYWwgVGltZSBTdGFydCBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVElOVUUJMzEJLyogbWlkaSBSZWFsIFRpbWUgQ29udGludWUgbWVzc2FnZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUT1AJCTMyCS8qIG1pZGkgUmVhbCBUaW1lIFN0b3AgbWVzc2FnZSAqLwkKKy0jZGVmaW5lCVNORFJWX1NFUV9FVkVOVF9TRVRQT1NfVElDSwkzMwkvKiBzZXQgdGljayBxdWV1ZSBwb3NpdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NFVFBPU19USU1FCTM0CS8qIHNldCByZWFsdGltZSBxdWV1ZSBwb3NpdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RFTVBPCQkzNQkvKiAoU01GKSBUZW1wbyBldmVudCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMT0NLCQkzNgkvKiBtaWRpIFJlYWwgVGltZSBDbG9jayBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVElDSwkJMzcJLyogbWlkaSBSZWFsIFRpbWUgVGljayBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUVVFVUVfU0tFVwkzOAkvKiBza2V3IHF1ZXVlIHRlbXBvICovCistCistLyoqIG90aGVycworLSAqIGV2ZW50IGRhdGEgdHlwZSA9IG5vbmUKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9UVU5FX1JFUVVFU1QJNDAJLyogdHVuZSByZXF1ZXN0ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTRVQJCTQxCS8qIHJlc2V0IHRvIHBvd2VyLW9uIHN0YXRlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU0VOU0lORwkJNDIJLyogImFjdGl2ZSBzZW5zaW5nIiBldmVudCAqLworLQorLS8qKiBlY2hvIGJhY2ssIGtlcm5lbCBwcml2YXRlIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gYW55IHR5cGUKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9FQ0hPCQk1MAkvKiBlY2hvIGV2ZW50ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfT1NTCQk1MQkvKiBPU1MgcmF3IGV2ZW50ICovCistCistLyoqIHN5c3RlbSBzdGF0dXMgbWVzc2FnZXMgKGJyb2FkY2FzdCBmb3Igc3Vic2NyaWJlcnMpCistICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9hZGRyCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX1NUQVJUCTYwCS8qIG5ldyBjbGllbnQgaGFzIGNvbm5lY3RlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9FWElUCTYxCS8qIGNsaWVudCBoYXMgbGVmdCB0aGUgc3lzdGVtICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX0NIQU5HRQk2MgkvKiBjbGllbnQgc3RhdHVzL2luZm8gaGFzIGNoYW5nZWQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1NUQVJUCTYzCS8qIG5ldyBwb3J0IHdhcyBjcmVhdGVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9FWElUCTY0CS8qIHBvcnQgd2FzIGRlbGV0ZWQgZnJvbSBzeXN0ZW0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX0NIQU5HRQk2NQkvKiBwb3J0IHN0YXR1cy9pbmZvIGhhcyBjaGFuZ2VkICovCistCistLyoqIHBvcnQgY29ubmVjdGlvbiBjaGFuZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9jb25uZWN0CistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9TVUJTQ1JJQkVECTY2CS8qIHBvcnRzIGNvbm5lY3RlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfVU5TVUJTQ1JJQkVEIDY3CS8qIHBvcnRzIGRpc2Nvbm5lY3RlZCAqLworLQorLS8qIDcwLTg5OiAgc3ludGhlc2l6ZXIgZXZlbnRzIC0gb2Jzb2xldGVkICovCistCistLyoqIHVzZXItZGVmaW5lZCBldmVudHMgd2l0aCBmaXhlZCBsZW5ndGgKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBhbnkKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IwCQk5MAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjEJCTkxCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMgkJOTIKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IzCQk5MworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjQJCTk0CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNQkJOTUKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I2CQk5NgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjcJCTk3CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSOAkJOTgKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I5CQk5OQorLQorLS8qIDEwMC0xMTg6IGluc3RydW1lbnQgbGF5ZXIgLSBvYnNvbGV0ZWQgKi8KKy0vKiAxMTktMTI5OiByZXNlcnZlZCAqLworLQorLS8qIDEzMC0xMzk6IHZhcmlhYmxlIGxlbmd0aCBldmVudHMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2V2X2V4dAorLSAqIChTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFIG11c3QgYmUgc2V0KQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NZU0VYCQkxMzAJLyogc3lzdGVtIGV4Y2x1c2l2ZSBkYXRhICh2YXJpYWJsZSBsZW5ndGgpICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQk9VTkNFCQkxMzEJLyogZXJyb3IgZXZlbnQgKi8KKy0vKiAxMzItMTM0OiByZXNlcnZlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIwCTEzNQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIxCTEzNgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIyCTEzNworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIzCTEzOAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVI0CTEzOQorLQorLS8qIDE1MC0xNTE6IGtlcm5lbCBldmVudHMgd2l0aCBxdW90ZSAtIERPIE5PVCB1c2UgaW4gdXNlciBjbGllbnRzICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VSTkVMX0VSUk9SCTE1MAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFUk5FTF9RVU9URQkxNTEJLyogb2Jzb2xldGUgKi8KKy0KKy0vKiAxNTItMTkxOiByZXNlcnZlZCAqLworLQorLS8qIDE5Mi0yNTQ6IGhhcmR3YXJlIHNwZWNpZmljIGV2ZW50cyAqLworLQorLS8qIDI1NTogc3BlY2lhbCBldmVudCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PTkUJCTI1NQorLQorLQorLXR5cGVkZWYgdW5zaWduZWQgY2hhciBzbmRfc2VxX2V2ZW50X3R5cGVfdDsKKy0KKy0vKiogZXZlbnQgYWRkcmVzcyAqLworLXN0cnVjdCBzbmRfc2VxX2FkZHIgeworLQl1bnNpZ25lZCBjaGFyIGNsaWVudDsJLyoqPCBDbGllbnQgbnVtYmVyOiAgICAgICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBjbGllbnRzICovCistCXVuc2lnbmVkIGNoYXIgcG9ydDsJLyoqPCBQb3J0IHdpdGhpbiBjbGllbnQ6ICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBwb3J0cyAqLworLX07CistCistLyoqIHBvcnQgY29ubmVjdGlvbiAqLworLXN0cnVjdCBzbmRfc2VxX2Nvbm5lY3QgeworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNlbmRlcjsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OworLX07CistCistCistI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19VTktOT1dOCTI1MwkvKiB1bmtub3duIHNvdXJjZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfU1VCU0NSSUJFUlMJMjU0CS8qIHNlbmQgZXZlbnQgdG8gYWxsIHN1YnNjcmliZWQgcG9ydHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX0JST0FEQ0FTVAkyNTUJLyogc2VuZCBldmVudCB0byBhbGwgcXVldWVzL2NsaWVudHMvcG9ydHMvY2hhbm5lbHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9RVUVVRV9ESVJFQ1QJCTI1MwkvKiBkaXJlY3QgZGlzcGF0Y2ggKi8KKy0KKy0JLyogZXZlbnQgbW9kZSBmbGFnIC0gTk9URTogb25seSA4IGJpdHMgYXZhaWxhYmxlISAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfVElDSwkoMDw8MCkgLyogdGltZXN0YW1wIGluIGNsb2NrIHRpY2tzICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9SRUFMCSgxPDwwKSAvKiB0aW1lc3RhbXAgaW4gcmVhbCB0aW1lICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9NQVNLCSgxPDwwKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9BQlMJCSgwPDwxKQkvKiBhYnNvbHV0ZSB0aW1lc3RhbXAgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfUkVMCQkoMTw8MSkJLyogcmVsYXRpdmUgdG8gY3VycmVudCB0aW1lICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX01BU0sJKDE8PDEpCistCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX0ZJWEVECSgwPDwyKQkvKiBmaXhlZCBldmVudCBzaXplICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFCSgxPDwyKQkvKiB2YXJpYWJsZSBldmVudCBzaXplICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUlVTUgkoMjw8MikJLyogdmFyaWFibGUgZXZlbnQgc2l6ZSAtIHVzZXIgbWVtb3J5IHNwYWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX01BU0sJKDM8PDIpCistCistI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTk9STUFMCSgwPDw0KQkvKiBub3JtYWwgcHJpb3JpdHkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9ISUdICQkoMTw8NCkJLyogZXZlbnQgc2hvdWxkIGJlIHByb2Nlc3NlZCBiZWZvcmUgb3RoZXJzICovCistI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTUFTSwkJKDE8PDQpCistCistCistCS8qIG5vdGUgZXZlbnQgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9ub3RlIHsKKy0JdW5zaWduZWQgY2hhciBjaGFubmVsOworLQl1bnNpZ25lZCBjaGFyIG5vdGU7CistCXVuc2lnbmVkIGNoYXIgdmVsb2NpdHk7CistCXVuc2lnbmVkIGNoYXIgb2ZmX3ZlbG9jaXR5OwkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworLQl1bnNpZ25lZCBpbnQgZHVyYXRpb247CQkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworLX07CistCistCS8qIGNvbnRyb2xsZXIgZXZlbnQgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9jdHJsIHsKKy0JdW5zaWduZWQgY2hhciBjaGFubmVsOworLQl1bnNpZ25lZCBjaGFyIHVudXNlZDEsIHVudXNlZDIsIHVudXNlZDM7CS8qIHBhZCAqLworLQl1bnNpZ25lZCBpbnQgcGFyYW07CistCXNpZ25lZCBpbnQgdmFsdWU7CistfTsKKy0KKy0JLyogZ2VuZXJpYyBzZXQgb2YgYnl0ZXMgKDEyeDggYml0KSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3JhdzggeworLQl1bnNpZ25lZCBjaGFyIGRbMTJdOwkvKiA4IGJpdCB2YWx1ZSAqLworLX07CistCistCS8qIGdlbmVyaWMgc2V0IG9mIGludGVnZXJzICgzeDMyIGJpdCkgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9yYXczMiB7CistCXVuc2lnbmVkIGludCBkWzNdOwkvKiAzMiBiaXQgdmFsdWUgKi8KKy19OworLQorLQkvKiBleHRlcm5hbCBzdG9yZWQgZGF0YSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X2V4dCB7CistCXVuc2lnbmVkIGludCBsZW47CS8qIGxlbmd0aCBvZiBkYXRhICovCistCXZvaWQgKnB0cjsJCS8qIHBvaW50ZXIgdG8gZGF0YSAobm90ZTogbWF5YmUgNjQtYml0KSAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistc3RydWN0IHNuZF9zZXFfcmVzdWx0IHsKKy0JaW50IGV2ZW50OwkJLyogcHJvY2Vzc2VkIGV2ZW50IHR5cGUgKi8KKy0JaW50IHJlc3VsdDsKKy19OworLQorLQorLXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB7CistCXVuc2lnbmVkIGludCB0dl9zZWM7CS8qIHNlY29uZHMgKi8KKy0JdW5zaWduZWQgaW50IHR2X25zZWM7CS8qIG5hbm9zZWNvbmRzICovCistfTsKKy0KKy10eXBlZGVmIHVuc2lnbmVkIGludCBzbmRfc2VxX3RpY2tfdGltZV90OwkvKiBtaWRpIHRpY2tzICovCistCistdW5pb24gc25kX3NlcV90aW1lc3RhbXAgeworLQlzbmRfc2VxX3RpY2tfdGltZV90IHRpY2s7CistCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOworLX07CistCistc3RydWN0IHNuZF9zZXFfcXVldWVfc2tldyB7CistCXVuc2lnbmVkIGludCB2YWx1ZTsKKy0JdW5zaWduZWQgaW50IGJhc2U7CistfTsKKy0KKy0JLyogcXVldWUgdGltZXIgY29udHJvbCAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgeworLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJCS8qIGFmZmVjdGVkIHF1ZXVlICovCistCXVuc2lnbmVkIGNoYXIgcGFkWzNdOwkJCS8qIHJlc2VydmVkICovCistCXVuaW9uIHsKKy0JCXNpZ25lZCBpbnQgdmFsdWU7CQkvKiBhZmZlY3RlZCB2YWx1ZSAoZS5nLiB0ZW1wbykgKi8KKy0JCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHRpbWUgKi8KKy0JCXVuc2lnbmVkIGludCBwb3NpdGlvbjsJCS8qIHN5bmMgcG9zaXRpb24gKi8KKy0JCXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3NrZXcgc2tldzsKKy0JCXVuc2lnbmVkIGludCBkMzJbMl07CistCQl1bnNpZ25lZCBjaGFyIGQ4WzhdOworLQl9IHBhcmFtOworLX07CistCistCS8qIHF1b3RlZCBldmVudCAtIGluc2lkZSB0aGUga2VybmVsIG9ubHkgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9xdW90ZSB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgb3JpZ2luOwkJLyogb3JpZ2luYWwgc2VuZGVyICovCistCXVuc2lnbmVkIHNob3J0IHZhbHVlOwkJLyogb3B0aW9uYWwgZGF0YSAqLworLQlzdHJ1Y3Qgc25kX3NlcV9ldmVudCAqZXZlbnQ7CQkvKiBxdW90ZWQgZXZlbnQgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLQorLQkvKiBzZXF1ZW5jZXIgZXZlbnQgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldmVudCB7CistCXNuZF9zZXFfZXZlbnRfdHlwZV90IHR5cGU7CS8qIGV2ZW50IHR5cGUgKi8KKy0JdW5zaWduZWQgY2hhciBmbGFnczsJCS8qIGV2ZW50IGZsYWdzICovCistCWNoYXIgdGFnOworLQkKKy0JdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIHNjaGVkdWxlIHF1ZXVlICovCistCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHNjaGVkdWxlIHRpbWUgKi8KKy0KKy0KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBzb3VyY2U7CS8qIHNvdXJjZSBhZGRyZXNzICovCistCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogZGVzdGluYXRpb24gYWRkcmVzcyAqLworLQorLQl1bmlvbiB7CQkJCS8qIGV2ZW50IGRhdGEuLi4gKi8KKy0JCXN0cnVjdCBzbmRfc2VxX2V2X25vdGUgbm90ZTsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X2N0cmwgY29udHJvbDsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzggcmF3ODsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzMyIHJhdzMyOworLQkJc3RydWN0IHNuZF9zZXFfZXZfZXh0IGV4dDsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgcXVldWU7CistCQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworLQkJc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOworLQkJc3RydWN0IHNuZF9zZXFfY29ubmVjdCBjb25uZWN0OworLQkJc3RydWN0IHNuZF9zZXFfcmVzdWx0IHJlc3VsdDsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3F1b3RlIHF1b3RlOworLQl9IGRhdGE7CistfTsKKy0KKy0KKy0vKgorLSAqIGJvdW5jZSBldmVudCAtIHN0b3JlZCBhcyB2YXJpYWJsZSBzaXplIGRhdGEKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldmVudF9ib3VuY2UgeworLQlpbnQgZXJyOworLQlzdHJ1Y3Qgc25kX3NlcV9ldmVudCBldmVudDsKKy0JLyogZXh0ZXJuYWwgZGF0YSBmb2xsb3dzIGhlcmUuICovCistfTsKKy0KKy0KKy0JLyogc3lzdGVtIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zZXFfc3lzdGVtX2luZm8geworLQlpbnQgcXVldWVzOwkJCS8qIG1heGltdW0gcXVldWVzIGNvdW50ICovCistCWludCBjbGllbnRzOwkJCS8qIG1heGltdW0gY2xpZW50cyBjb3VudCAqLworLQlpbnQgcG9ydHM7CQkJLyogbWF4aW11bSBwb3J0cyBwZXIgY2xpZW50ICovCistCWludCBjaGFubmVsczsJCQkvKiBtYXhpbXVtIGNoYW5uZWxzIHBlciBwb3J0ICovCistCWludCBjdXJfY2xpZW50czsJCS8qIGN1cnJlbnQgY2xpZW50cyAqLworLQlpbnQgY3VyX3F1ZXVlczsJCQkvKiBjdXJyZW50IHF1ZXVlcyAqLworLQljaGFyIHJlc2VydmVkWzI0XTsKKy19OworLQorLQorLQkvKiBzeXN0ZW0gcnVubmluZyBpbmZvcm1hdGlvbiAqLworLXN0cnVjdCBzbmRfc2VxX3J1bm5pbmdfaW5mbyB7CistCXVuc2lnbmVkIGNoYXIgY2xpZW50OwkJLyogY2xpZW50IGlkICovCistCXVuc2lnbmVkIGNoYXIgYmlnX2VuZGlhbjsJLyogMSA9IGJpZy1lbmRpYW4gKi8KKy0JdW5zaWduZWQgY2hhciBjcHVfbW9kZTsJCS8qIDQgPSAzMmJpdCwgOCA9IDY0Yml0ICovCistCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMl07CistfTsKKy0KKy0KKy0JLyoga25vd24gY2xpZW50IG51bWJlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfU1lTVEVNCQkwCistCS8qIGludGVybmFsIGNsaWVudCBudW1iZXJzICovCistI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX0RVTU1ZCQkxNAkvKiBtaWRpIHRocm91Z2ggKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfT1NTCQkxNQkvKiBvc3Mgc2VxdWVuY2VyIGVtdWxhdG9yICovCistCistCistCS8qIGNsaWVudCB0eXBlcyAqLworLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfc2VxX2NsaWVudF90eXBlX3Q7CistI2RlZmluZQlOT19DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMCkKKy0jZGVmaW5lCVVTRVJfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDEpCistI2RlZmluZQlLRVJORUxfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDIpCistICAgICAgICAgICAgICAgICAgICAgICAgCistCS8qIGV2ZW50IGZpbHRlciBmbGFncyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9CUk9BRENBU1QJKDE8PDApCS8qIGFjY2VwdCBicm9hZGNhc3QgbWVzc2FnZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfTVVMVElDQVNUCSgxPDwxKQkvKiBhY2NlcHQgbXVsdGljYXN0IG1lc3NhZ2VzICovCistI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX0JPVU5DRQkJKDE8PDIpCS8qIGFjY2VwdCBib3VuY2UgZXZlbnQgaW4gZXJyb3IgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfVVNFX0VWRU5UCSgxPDwzMSkJLyogdXNlIGV2ZW50IGZpbHRlciAqLworLQorLXN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvIHsKKy0JaW50IGNsaWVudDsJCQkvKiBjbGllbnQgbnVtYmVyIHRvIGlucXVpcmUgKi8KKy0Jc25kX3NlcV9jbGllbnRfdHlwZV90IHR5cGU7CS8qIGNsaWVudCB0eXBlICovCistCWNoYXIgbmFtZVs2NF07CQkJLyogY2xpZW50IG5hbWUgKi8KKy0JdW5zaWduZWQgaW50IGZpbHRlcjsJCS8qIGZpbHRlciBmbGFncyAqLworLQl1bnNpZ25lZCBjaGFyIG11bHRpY2FzdF9maWx0ZXJbOF07IC8qIG11bHRpY2FzdCBmaWx0ZXIgYml0bWFwICovCistCXVuc2lnbmVkIGNoYXIgZXZlbnRfZmlsdGVyWzMyXTsJLyogZXZlbnQgZmlsdGVyIGJpdG1hcCAqLworLQlpbnQgbnVtX3BvcnRzOwkJCS8qIFJPOiBudW1iZXIgb2YgcG9ydHMgKi8KKy0JaW50IGV2ZW50X2xvc3Q7CQkJLyogbnVtYmVyIG9mIGxvc3QgZXZlbnRzICovCistCWludCBjYXJkOwkJCS8qIFJPOiBjYXJkIG51bWJlcltrZXJuZWxdICovCistCWludCBwaWQ7CQkJLyogUk86IHBpZFt1c2VyXSAqLworLQljaGFyIHJlc2VydmVkWzU2XTsJCS8qIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy0vKiBjbGllbnQgcG9vbCBzaXplICovCistc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wgeworLQlpbnQgY2xpZW50OwkJCS8qIGNsaWVudCBudW1iZXIgdG8gaW5xdWlyZSAqLworLQlpbnQgb3V0cHV0X3Bvb2w7CQkvKiBvdXRnb2luZyAod3JpdGUpIHBvb2wgc2l6ZSAqLworLQlpbnQgaW5wdXRfcG9vbDsJCQkvKiBpbmNvbWluZyAocmVhZCkgcG9vbCBzaXplICovCistCWludCBvdXRwdXRfcm9vbTsJCS8qIG1pbmltdW0gZnJlZSBwb29sIHNpemUgZm9yIHNlbGVjdC9ibG9ja2luZyBtb2RlICovCistCWludCBvdXRwdXRfZnJlZTsJCS8qIHVudXNlZCBzaXplICovCistCWludCBpbnB1dF9mcmVlOwkJCS8qIHVudXNlZCBzaXplICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOworLX07CistCistCistLyogUmVtb3ZlIGV2ZW50cyBieSBzcGVjaWZpZWQgY3JpdGVyaWEgKi8KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSU5QVVQJCSgxPDwwKQkvKiBGbHVzaCBpbnB1dCBxdWV1ZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfT1VUUFVUCQkoMTw8MSkJLyogRmx1c2ggb3V0cHV0IHF1ZXVlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUCQkoMTw8MikJLyogUmVzdHJpY3QgYnkgZGVzdGluYXRpb24gcTpjbGllbnQ6cG9ydCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUX0NIQU5ORUwJKDE8PDMpCS8qIFJlc3RyaWN0IGJ5IGNoYW5uZWwgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9CRUZPUkUJKDE8PDQpCS8qIFJlc3RyaWN0IHRvIGJlZm9yZSB0aW1lICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfQUZURVIJKDE8PDUpCS8qIFJlc3RyaWN0IHRvIHRpbWUgb3IgYWZ0ZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9USUNLCSgxPDw2KQkvKiBUaW1lIGlzIGluIHRpY2tzICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0VWRU5UX1RZUEUJKDE8PDcpCS8qIFJlc3RyaWN0IHRvIGV2ZW50IHR5cGUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSUdOT1JFX09GRiAJKDE8PDgpCS8qIERvIG5vdCBmbHVzaCBvZmYgZXZlbnRzICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RBR19NQVRDSCAJKDE8PDkpCS8qIFJlc3RyaWN0IHRvIGV2ZW50cyB3aXRoIGdpdmVuIHRhZyAqLworLQorLXN0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMgeworLQl1bnNpZ25lZCBpbnQgIHJlbW92ZV9tb2RlOwkvKiBGbGFncyB0aGF0IGRldGVybWluZSB3aGF0IGdldHMgcmVtb3ZlZCAqLworLQorLQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworLQorLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBRdWV1ZSBmb3IgUkVNT1ZFX0RFU1QgKi8KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBBZGRyZXNzIGZvciBSRU1PVkVfREVTVCAqLworLQl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CS8qIENoYW5uZWwgZm9yIFJFTU9WRV9ERVNUICovCistCistCWludCAgdHlwZTsJLyogRm9yIFJFTU9WRV9FVkVOVF9UWVBFICovCistCWNoYXIgIHRhZzsJLyogVGFnIGZvciBSRU1PVkVfVEFHICovCistCistCWludCAgcmVzZXJ2ZWRbMTBdOwkvKiBUbyBhbGxvdyBmb3IgZnV0dXJlIGJpbmFyeSBjb21wYXRpYmlsaXR5ICovCistCistfTsKKy0KKy0KKy0JLyoga25vd24gcG9ydCBudW1iZXJzICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TWVNURU1fVElNRVIJMAorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1lTVEVNX0FOTk9VTkNFCTEKKy0KKy0JLyogcG9ydCBjYXBhYmlsaXRpZXMgKDMyIGJpdHMpICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfUkVBRAkJKDE8PDApCS8qIHJlYWRhYmxlIGZyb20gdGhpcyBwb3J0ICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfV1JJVEUJKDE8PDEpCS8qIHdyaXRhYmxlIHRvIHRoaXMgcG9ydCAqLworLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NZTkNfUkVBRAkoMTw8MikKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TWU5DX1dSSVRFCSgxPDwzKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX0RVUExFWAkoMTw8NCkKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TVUJTX1JFQUQJKDE8PDUpCS8qIGFsbG93IHJlYWQgc3Vic2NyaXB0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19XUklURQkoMTw8NikJLyogYWxsb3cgd3JpdGUgc3Vic2NyaXB0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfTk9fRVhQT1JUCSgxPDw3KQkvKiByb3V0aW5nIG5vdCBhbGxvd2VkICovCistCistCS8qIHBvcnQgdHlwZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TUEVDSUZJQwkoMTw8MCkJLyogaGFyZHdhcmUgc3BlY2lmaWMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDICgxPDwxKQkvKiBnZW5lcmljIE1JREkgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00JKDE8PDIpCS8qIEdlbmVyYWwgTUlESSBjb21wYXRpYmxlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dTCSgxPDwzKQkvKiBHUyBjb21wYXRpYmxlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX1hHCSgxPDw0KQkvKiBYRyBjb21wYXRpYmxlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX01UMzIJKDE8PDUpCS8qIE1ULTMyIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00yCSgxPDw2KQkvKiBHZW5lcmFsIE1JREkgMiBjb21wYXRpYmxlIGRldmljZSAqLworLQorLS8qIG90aGVyIHN0YW5kYXJkcy4uLiovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRICSgxPDwxMCkJLyogU3ludGggZGV2aWNlIChubyBNSURJIGNvbXBhdGlibGUgLSBkaXJlY3Qgd2F2ZXRhYmxlKSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9ESVJFQ1RfU0FNUExFICgxPDwxMSkJLyogU2FtcGxpbmcgZGV2aWNlIChzdXBwb3J0IHNhbXBsZSBkb3dubG9hZCkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU0FNUExFCSgxPDwxMikJLyogU2FtcGxpbmcgZGV2aWNlIChzYW1wbGUgY2FuIGJlIGRvd25sb2FkZWQgYXQgYW55IHRpbWUpICovCistLyouLi4qLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRQkoMTw8MTYpCS8qIGRyaXZlciBmb3IgYSBoYXJkd2FyZSBkZXZpY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU09GVFdBUkUJKDE8PDE3KQkvKiBpbXBsZW1lbnRlZCBpbiBzb2Z0d2FyZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USEVTSVpFUgkoMTw8MTgpCS8qIGdlbmVyYXRlcyBzb3VuZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9QT1JUCSgxPDwxOSkJLyogY29ubmVjdHMgdG8gb3RoZXIgZGV2aWNlKHMpICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0FQUExJQ0FUSU9OCSgxPDwyMCkJLyogYXBwbGljYXRpb24gKHNlcXVlbmNlci9lZGl0b3IpICovCistCistLyogbWlzYy4gY29uZGl0aW9uaW5nIGZsYWdzICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfR0lWRU5fUE9SVAkoMTw8MCkKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19USU1FU1RBTVAJKDE8PDEpCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfVElNRV9SRUFMCSgxPDwyKQorLQorLXN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbyB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsJLyogY2xpZW50L3BvcnQgbnVtYmVycyAqLworLQljaGFyIG5hbWVbNjRdOwkJCS8qIHBvcnQgbmFtZSAqLworLQorLQl1bnNpZ25lZCBpbnQgY2FwYWJpbGl0eTsJLyogcG9ydCBjYXBhYmlsaXR5IGJpdHMgKi8KKy0JdW5zaWduZWQgaW50IHR5cGU7CQkvKiBwb3J0IHR5cGUgYml0cyAqLworLQlpbnQgbWlkaV9jaGFubmVsczsJCS8qIGNoYW5uZWxzIHBlciBNSURJIHBvcnQgKi8KKy0JaW50IG1pZGlfdm9pY2VzOwkJLyogdm9pY2VzIHBlciBNSURJIHBvcnQgKi8KKy0JaW50IHN5bnRoX3ZvaWNlczsJCS8qIHZvaWNlcyBwZXIgU1lOVEggcG9ydCAqLworLQorLQlpbnQgcmVhZF91c2U7CQkJLyogUi9POiBzdWJzY3JpYmVycyBmb3Igb3V0cHV0IChmcm9tIHRoaXMgcG9ydCkgKi8KKy0JaW50IHdyaXRlX3VzZTsJCQkvKiBSL086IHN1YnNjcmliZXJzIGZvciBpbnB1dCAodG8gdGhpcyBwb3J0KSAqLworLQorLQl2b2lkICprZXJuZWw7CQkJLyogcmVzZXJ2ZWQgZm9yIGtlcm5lbCB1c2UgKG11c3QgYmUgTlVMTCkgKi8KKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbWlzYy4gY29uZGl0aW9uaW5nICovCistCXVuc2lnbmVkIGNoYXIgdGltZV9xdWV1ZTsJLyogcXVldWUgIyBmb3IgdGltZXN0YW1waW5nICovCistCWNoYXIgcmVzZXJ2ZWRbNTldOwkJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLS8qIHF1ZXVlIGZsYWdzICovCistI2RlZmluZSBTTkRSVl9TRVFfUVVFVUVfRkxHX1NZTkMJKDE8PDApCS8qIHN5bmMgZW5hYmxlZCAqLworLQorLS8qIHF1ZXVlIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbyB7CistCWludCBxdWV1ZTsJCS8qIHF1ZXVlIGlkICovCistCistCS8qCistCSAqICBzZWN1cml0eSBzZXR0aW5ncywgb25seSBvd25lciBvZiB0aGlzIHF1ZXVlIGNhbiBzdGFydC9zdG9wIHRpbWVyCistCSAqICBldGMuIGlmIHRoZSBxdWV1ZSBpcyBsb2NrZWQgZm9yIG90aGVyIGNsaWVudHMKKy0JICovCistCWludCBvd25lcjsJCS8qIGNsaWVudCBpZCBmb3Igb3duZXIgb2YgdGhlIHF1ZXVlICovCistCXVuc2lnbmVkIGxvY2tlZDoxOwkvKiB0aW1pbmcgcXVldWUgbG9ja2VkIGZvciBvdGhlciBxdWV1ZXMgKi8KKy0JY2hhciBuYW1lWzY0XTsJCS8qIG5hbWUgb2YgdGhpcyBxdWV1ZSAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIGZsYWdzICovCistCWNoYXIgcmVzZXJ2ZWRbNjBdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworLQorLX07CistCistLyogcXVldWUgaW5mby9zdGF0dXMgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9zdGF0dXMgeworLQlpbnQgcXVldWU7CQkJLyogcXVldWUgaWQgKi8KKy0JaW50IGV2ZW50czsJCQkvKiByZWFkLW9ubHkgLSBxdWV1ZSBzaXplICovCistCXNuZF9zZXFfdGlja190aW1lX3QgdGljazsJLyogY3VycmVudCB0aWNrICovCistCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOwkvKiBjdXJyZW50IHRpbWUgKi8KKy0JaW50IHJ1bm5pbmc7CQkJLyogcnVubmluZyBzdGF0ZSBvZiBxdWV1ZSAqLworLQlpbnQgZmxhZ3M7CQkJLyogdmFyaW91cyBmbGFncyAqLworLQljaGFyIHJlc2VydmVkWzY0XTsJCS8qIGZvciB0aGUgZnV0dXJlICovCistfTsKKy0KKy0KKy0vKiBxdWV1ZSB0ZW1wbyAqLworLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvIHsKKy0JaW50IHF1ZXVlOwkJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworLQl1bnNpZ25lZCBpbnQgdGVtcG87CQkvKiBjdXJyZW50IHRlbXBvLCB1cy90aWNrICovCistCWludCBwcHE7CQkJLyogdGltZSByZXNvbHV0aW9uLCB0aWNrcy9xdWFydGVyICovCistCXVuc2lnbmVkIGludCBza2V3X3ZhbHVlOwkvKiBxdWV1ZSBza2V3ICovCistCXVuc2lnbmVkIGludCBza2V3X2Jhc2U7CQkvKiBxdWV1ZSBza2V3IGJhc2UgKi8KKy0JY2hhciByZXNlcnZlZFsyNF07CQkvKiBmb3IgdGhlIGZ1dHVyZSAqLworLX07CistCistCistLyogc2VxdWVuY2VyIHRpbWVyIHNvdXJjZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FUl9BTFNBCQkwCS8qIEFMU0EgdGltZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FUl9NSURJX0NMT0NLCTEJLyogTWlkaSBDbG9jayAoQ0xPQ0sgZXZlbnQpICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfTUlESV9USUNLCTIJLyogTWlkaSBUaW1lciBUaWNrIChUSUNLIGV2ZW50KSAqLworLQorLS8qIHF1ZXVlIHRpbWVyIGluZm8gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lciB7CistCWludCBxdWV1ZTsJCQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKy0JaW50IHR5cGU7CQkJLyogc291cmNlIHRpbWVyIHR5cGUgKi8KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIGlkOwkvKiBBTFNBJ3MgdGltZXIgSUQgKi8KKy0JCQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogcmVzb2x1dGlvbiBpbiBIeiAqLworLQkJfSBhbHNhOworLQl9IHU7CistCWNoYXIgcmVzZXJ2ZWRbNjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQgeworLQlpbnQgcXVldWU7CQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKy0JaW50IGNsaWVudDsJCS8qIHNlcXVlbmNlciBjbGllbnQgKi8KKy0JaW50IHVzZWQ7CQkvKiBxdWV1ZSBpcyB1c2VkIHdpdGggdGhpcyBjbGllbnQKKy0JCQkJICAgKG11c3QgYmUgc2V0IGZvciBhY2NlcHRpbmcgZXZlbnRzKSAqLworLQkvKiBwZXIgY2xpZW50IHdhdGVybWFya3MgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CS8qIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfRVhDTFVTSVZFCSgxPDwwKQkvKiBleGNsdXNpdmUgY29ubmVjdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19USU1FU1RBTVAJKDE8PDEpCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX1RJTUVfUkVBTAkoMTw8MikKKy0KKy1zdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgc2VuZGVyOwkvKiBzZW5kZXIgYWRkcmVzcyAqLworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIGRlc3RpbmF0aW9uIGFkZHJlc3MgKi8KKy0JdW5zaWduZWQgaW50IHZvaWNlczsJCS8qIG51bWJlciBvZiB2b2ljZXMgdG8gYmUgYWxsb2NhdGVkICgwID0gZG9uJ3QgY2FyZSkgKi8KKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbW9kZXMgKi8KKy0JdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIGlucHV0IHRpbWUtc3RhbXAgcXVldWUgKG9wdGlvbmFsKSAqLworLQl1bnNpZ25lZCBjaGFyIHBhZFszXTsJCS8qIHJlc2VydmVkICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOworLX07CistCistLyogdHlwZSBvZiBxdWVyeSBzdWJzY3JpcHRpb24gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9RVUVSWV9TVUJTX1JFQUQJMAorLSNkZWZpbmUgU05EUlZfU0VRX1FVRVJZX1NVQlNfV1JJVEUJMQorLQorLXN0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMgeworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHJvb3Q7CS8qIGNsaWVudC9wb3J0IGlkIHRvIGJlIHNlYXJjaGVkICovCistCWludCB0eXBlOwkJLyogUkVBRCBvciBXUklURSAqLworLQlpbnQgaW5kZXg7CQkvKiAwLi5OLTEgKi8KKy0JaW50IG51bV9zdWJzOwkJLyogUi9POiBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyBvbiB0aGlzIHBvcnQgKi8KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOwkvKiBSL086IHJlc3VsdCAqLworLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBSL086IHJlc3VsdCAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIFIvTzogcmVzdWx0ICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistCistLyoKKy0gKiAgSU9DVEwgY29tbWFuZHMKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9QVkVSU0lPTglfSU9SICgnUycsIDB4MDAsIGludCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DTElFTlRfSUQJX0lPUiAoJ1MnLCAweDAxLCBpbnQpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU1lTVEVNX0lORk8JX0lPV1IoJ1MnLCAweDAyLCBzdHJ1Y3Qgc25kX3NlcV9zeXN0ZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9SVU5OSU5HX01PREUJX0lPV1IoJ1MnLCAweDAzLCBzdHJ1Y3Qgc25kX3NlcV9ydW5uaW5nX2luZm8pCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9JTkZPCV9JT1dSKCdTJywgMHgxMCwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9JTkZPCV9JT1cgKCdTJywgMHgxMSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ1JFQVRFX1BPUlQJX0lPV1IoJ1MnLCAweDIwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1BPUlQJX0lPVyAoJ1MnLCAweDIxLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1BPUlRfSU5GTwlfSU9XUignUycsIDB4MjIsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUE9SVF9JTkZPCV9JT1cgKCdTJywgMHgyMywgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NVQlNDUklCRV9QT1JUCV9JT1cgKCdTJywgMHgzMCwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfVU5TVUJTQ1JJQkVfUE9SVCBfSU9XICgnUycsIDB4MzEsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NSRUFURV9RVUVVRQlfSU9XUignUycsIDB4MzIsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1FVRVVFCV9JT1cgKCdTJywgMHgzMywgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfSU5GTwlfSU9XUignUycsIDB4MzQsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX0lORk8JX0lPV1IoJ1MnLCAweDM1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9OQU1FRF9RVUVVRQlfSU9XUignUycsIDB4MzYsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1NUQVRVUyBfSU9XUignUycsIDB4NDAsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVEVNUE8JX0lPV1IoJ1MnLCAweDQxLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVEVNUE8JX0lPVyAoJ1MnLCAweDQyLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVElNRVIJX0lPV1IoJ1MnLCAweDQ1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVElNRVIJX0lPVyAoJ1MnLCAweDQ2LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfQ0xJRU5UCV9JT1dSKCdTJywgMHg0OSwgc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50KQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9DTElFTlQJX0lPVyAoJ1MnLCAweDRhLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9QT09MCV9JT1dSKCdTJywgMHg0Yiwgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9QT09MCV9JT1cgKCdTJywgMHg0Yywgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUkVNT1ZFX0VWRU5UUwlfSU9XICgnUycsIDB4NGUsIHN0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfU1VCUwlfSU9XUignUycsIDB4NGYsIHN0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1NVQlNDUklQVElPTglfSU9XUignUycsIDB4NTAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX05FWFRfQ0xJRU5UCV9JT1dSKCdTJywgMHg1MSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfTkVYVF9QT1JUCV9JT1dSKCdTJywgMHg1Miwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9IICovCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9hc2VxdWVuY2VyLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc29jLmggYi9pbmNsdWRlL3NvdW5kL2Fzb2MuaAoraW5kZXggYTc0Y2EyMzIuLjE4NWJiYTgxIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9hc29jLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNvYy5oCitAQCAtMSw2MzMgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogdWFwaS9zb3VuZC9hc29jLmggLS0gQUxTQSBTb0MgRmlybXdhcmUgQ29udHJvbHMgYW5kIERBUE0KKy0gKgorLSAqIENvcHlyaWdodCAoQykgMjAxMiBUZXhhcyBJbnN0cnVtZW50cyBJbmMuCistICogQ29weXJpZ2h0IChDKSAyMDE1IEludGVsIENvcnBvcmF0aW9uLgorLSAqCistICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorLSAqCistICogU2ltcGxlIGZpbGUgQVBJIHRvIGxvYWQgRlcgdGhhdCBpbmNsdWRlcyBtaXhlcnMsIGNvZWZmaWNpZW50cywgREFQTSBncmFwaHMsCistICogYWxnb3JpdGhtcywgZXF1YWxpc2VycywgREFJcywgd2lkZ2V0cyBldGMuCistKi8KKy0KKy0jaWZuZGVmIF9fTElOVVhfVUFQSV9TTkRfQVNPQ19ICistI2RlZmluZSBfX0xJTlVYX1VBUElfU05EX0FTT0NfSAorLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLSNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKy0KKy0vKgorLSAqIE1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHRvcG9sb2d5IGtjb250cm9sIGNhbiByZXByZXNlbnQuCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTUFYX0NIQU4JCTgKKy0KKy0vKgorLSAqIE1heGltdW0gbnVtYmVyIG9mIFBDTSBmb3JtYXRzIGNhcGFiaWxpdHkKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQVhfRk9STUFUUwkxNgorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgUENNIHN0cmVhbSBjb25maWdzCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVggIDgKKy0KKy0vKgorLSAqIE1heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIGxpbmsncyBoYXJkd2FyZSBjb25maWdzCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfSFdfQ09ORklHX01BWAk4CistCistLyogaW5kaXZpZHVhbCBrY29udHJvbCBpbmZvIHR5cGVzIC0gY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfVk9MU1cJCTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfVk9MU1dfU1gJMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTV19YUl9TWAkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX0VOVU0JCTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfQllURVMJCTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfRU5VTV9WQUxVRQk2CistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1JBTkdFCQk3CistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1NUUk9CRQkJOAorLQorLQorLS8qIGluZGl2aWR1YWwgd2lkZ2V0IGtjb250cm9sIGluZm8gdHlwZXMgLSBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciB0eXBlcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX1ZPTFNXCQk2NAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX0VOVU1fRE9VQkxFCTY1CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9WSVJUCQk2NgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX0VOVU1fVkFMVUUJNjcKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9QSU4JCTY4CistCistLyogREFQTSB3aWRnZXQgdHlwZXMgLSBhZGQgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0lOUFVUCQkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9PVVRQVVQJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fTVVYCQkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9NSVhFUgkJMworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fUEdBCQk0CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9PVVRfRFJWCTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FEQwkJNgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFDCQk3CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TV0lUQ0gJOAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fUFJFCQk5CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QT1NUCQkxMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQUlGX0lOCTExCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BSUZfT1VUCTEyCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUlfSU4JMTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9PVVQJMTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9MSU5LCTE1CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9CVUZGRVIJMTYKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NDSEVEVUxFUgkxNworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fRUZGRUNUCTE4CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TSUdHRU4JMTkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NSQwkJMjAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FTUkMJCTIxCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9FTkNPREVSCTIyCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9ERUNPREVSCTIzCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9MQVNUCQlTTkRfU09DX1RQTEdfREFQTV9ERUNPREVSCistCistLyogSGVhZGVyIG1hZ2ljIG51bWJlciBhbmQgc3RyaW5nIHNpemVzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTUFHSUMJCTB4NDE1MzZGNDMgLyogQVNvQyAqLworLQorLS8qIHN0cmluZyBzaXplcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX05VTV9URVhUUwkJMTYKKy0KKy0vKiBBQkkgdmVyc2lvbiAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0FCSV9WRVJTSU9OCTB4NQkvKiBjdXJyZW50IHZlcnNpb24gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19BQklfVkVSU0lPTl9NSU4JMHg0CS8qIG9sZGVzdCB2ZXJzaW9uIHN1cHBvcnRlZCAqLworLQorLS8qIE1heCBzaXplIG9mIFRMViBkYXRhICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfVExWX1NJWkUJCTMyCistCistLyoKKy0gKiBGaWxlIGFuZCBCbG9jayBoZWFkZXIgZGF0YSB0eXBlcy4KKy0gKiBBZGQgbmV3IGdlbmVyaWMgYW5kIHZlbmRvciB0eXBlcyB0byBlbmQgb2YgbGlzdC4KKy0gKiBHZW5lcmljIHR5cGVzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjb3JlIHdoaWxzdCB2ZW5kb3JzIHR5cGVzIGFyZSBwYXNzZWQKKy0gKiB0byB0aGUgY29tcG9uZW50IGRyaXZlcnMgZm9yIGhhbmRsaW5nLgorLSAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfTUlYRVIJCTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0JZVEVTCQkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9FTlVNCQkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQVBNX0dSQVBICTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBUE1fV0lER0VUCTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBSV9MSU5LCTYKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1BDTQkJNworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfTUFOSUZFU1QJOAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQ09ERUNfTElOSwk5CistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9CQUNLRU5EX0xJTksJMTAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1BEQVRBCQkxMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFJCQkxMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfTUFYCQlTTkRfU09DX1RQTEdfVFlQRV9EQUkKKy0KKy0vKiB2ZW5kb3IgYmxvY2sgSURzIC0gcGxlYXNlIGFkZCBuZXcgdmVuZG9yIHR5cGVzIHRvIGVuZCAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0ZXCTEwMDAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1ZFTkRPUl9DT05GSUcJMTAwMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0NPRUZGCTEwMDIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFVkVORE9SX0NPREVDCTEwMDMKKy0KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fUExBWUJBQ0sJMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9DQVBUVVJFCTEKKy0KKy0vKiB2ZW5kb3IgdHVwbGUgdHlwZXMgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1VVSUQJMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfU1RSSU5HCTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX0JPT0wJMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfQllURQkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9XT1JECTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1NIT1JUCTUKKy0KKy0vKiBEQUkgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19SQVRFUyAgICAgICAgICgxIDw8IDApCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfQ0hBTk5FTFMgICAgICAoMSA8PCAxKQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX1NBTVBMRUJJVFMgICAgKDEgPDwgMikKKy0KKy0vKiBEQUkgY2xvY2sgZ2F0aW5nICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFX1VOREVGSU5FRAkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFX0dBVEVECTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfQ09OVAkJMgorLQorLS8qIERBSSBtY2xrX2RpcmVjdGlvbiAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX01DTEtfQ08gICAgICAgICAgICAwIC8qIGZvciBjb2RlYywgbWNsayBpcyBvdXRwdXQgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQ0xLX0NJICAgICAgICAgICAgMSAvKiBmb3IgY29kZWMsIG1jbGsgaXMgaW5wdXQgKi8KKy0KKy0vKiBEQUkgcGh5c2ljYWwgUENNIGRhdGEgZm9ybWF0cy4KKy0gKiBBZGQgbmV3IGZvcm1hdHMgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9JMlMgICAgICAgICAgMSAvKiBJMlMgbW9kZSAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX1JJR0hUX0ogICAgICAyIC8qIFJpZ2h0IEp1c3RpZmllZCBtb2RlICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfTEVGVF9KICAgICAgIDMgLyogTGVmdCBKdXN0aWZpZWQgbW9kZSAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0RTUF9BICAgICAgICA0IC8qIEwgZGF0YSBNU0IgYWZ0ZXIgRlJNIExSQyAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0RTUF9CICAgICAgICA1IC8qIEwgZGF0YSBNU0IgZHVyaW5nIEZSTSBMUkMgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9BQzk3ICAgICAgICAgNiAvKiBBQzk3ICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfUERNICAgICAgICAgIDcgLyogUHVsc2UgZGVuc2l0eSBtb2R1bGF0aW9uICovCistCistLyogbGVmdCBhbmQgcmlnaHQganVzdGlmaWVkIGFsc28ga25vd24gYXMgTVNCIGFuZCBMU0IgcmVzcGVjdGl2ZWx5ICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfTVNCICAgICAgICAgIFNORF9TT0NfREFJX0ZPUk1BVF9MRUZUX0oKKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9MU0IgICAgICAgICAgU05EX1NPQ19EQUlfRk9STUFUX1JJR0hUX0oKKy0KKy0vKiBEQUkgbGluayBmbGFncyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX1JBVEVTICAgICAgICAgKDEgPDwgMCkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19DSEFOTkVMUyAgICAgICgxIDw8IDEpCistI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfU0FNUExFQklUUyAgICAoMSA8PCAyKQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfVk9JQ0VfV0FLRVVQICAgICAgICAgICAgKDEgPDwgMykKKy0KKy0vKiBEQUkgdG9wb2xvZ3kgQkNMSyBwYXJhbWV0ZXIKKy0gKiBGb3IgdGhlIGJhY2t3YXJkcyBjYXBhYmlsaXR5LCBieSBkZWZhdWx0IGNvZGVjIGlzIGJjbGsgbWFzdGVyCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfQkNMS19DTSAgICAgICAgIDAgLyogY29kZWMgaXMgYmNsayBtYXN0ZXIgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19CQ0xLX0NTICAgICAgICAgMSAvKiBjb2RlYyBpcyBiY2xrIHNsYXZlICovCistCistLyogREFJIHRvcG9sb2d5IEZTWU5DIHBhcmFtZXRlcgorLSAqIEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29kZWMgaXMgZnN5bmMgbWFzdGVyCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ00gICAgICAgICAwIC8qIGNvZGVjIGlzIGZzeW5jIG1hc3RlciAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0ZTWU5DX0NTICAgICAgICAgMSAvKiBjb2RlYyBpcyBmc3luYyBzbGF2ZSAqLworLQorLS8qCistICogQmxvY2sgSGVhZGVyLgorLSAqIFRoaXMgaGVhZGVyIHByZWNlZGVzIGFsbCBvYmplY3QgYW5kIG9iamVjdCBhcnJheXMgYmVsb3cuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgeworLQlfX2xlMzIgbWFnaWM7CQkvKiBtYWdpYyBudW1iZXIgKi8KKy0JX19sZTMyIGFiaTsJCS8qIEFCSSB2ZXJzaW9uICovCistCV9fbGUzMiB2ZXJzaW9uOwkJLyogb3B0aW9uYWwgdmVuZG9yIHNwZWNpZmljIHZlcnNpb24gZGV0YWlscyAqLworLQlfX2xlMzIgdHlwZTsJCS8qIFNORF9TT0NfVFBMR19UWVBFXyAqLworLQlfX2xlMzIgc2l6ZTsJCS8qIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIHZlbmRvcl90eXBlOwkvKiBvcHRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgdHlwZSBpbmZvICovCistCV9fbGUzMiBwYXlsb2FkX3NpemU7CS8qIGRhdGEgYnl0ZXMsIGV4Y2x1ZGluZyB0aGlzIGhlYWRlciAqLworLQlfX2xlMzIgaW5kZXg7CQkvKiBpZGVudGlmaWVyIGZvciBibG9jayAqLworLQlfX2xlMzIgY291bnQ7CQkvKiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYmxvY2sgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qIHZlbmRvciB0dXBsZSBmb3IgdXVpZCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3V1aWRfZWxlbSB7CistCV9fbGUzMiB0b2tlbjsKKy0JY2hhciB1dWlkWzE2XTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qIHZlbmRvciB0dXBsZSBmb3IgYSBib29sL2J5dGUvc2hvcnQvd29yZCB2YWx1ZSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3ZhbHVlX2VsZW0geworLQlfX2xlMzIgdG9rZW47CistCV9fbGUzMiB2YWx1ZTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qIHZlbmRvciB0dXBsZSBmb3Igc3RyaW5nICovCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3Jfc3RyaW5nX2VsZW0geworLQlfX2xlMzIgdG9rZW47CistCWNoYXIgc3RyaW5nW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX2FycmF5IHsKKy0JX19sZTMyIHNpemU7CS8qIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGFycmF5LCBpbmNsdWRpbmcgYWxsIGVsZW1lbnRzICovCistCV9fbGUzMiB0eXBlOwkvKiBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV8gKi8KKy0JX19sZTMyIG51bV9lbGVtczsJLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFycmF5ICovCistCXVuaW9uIHsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3V1aWRfZWxlbSB1dWlkWzBdOworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdmFsdWVfZWxlbSB2YWx1ZVswXTsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3N0cmluZ19lbGVtIHN0cmluZ1swXTsKKy0JfTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogUHJpdmF0ZSBkYXRhLgorLSAqIEFsbCB0b3BvbG9neSBvYmplY3RzIG1heSBoYXZlIHByaXZhdGUgZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBkcml2ZXIgb3IKKy0gKiBmaXJtd2FyZS4gQ29yZSB3aWxsIGlnbm9yZSB0aGlzIGRhdGEuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHByaXZhdGUgZGF0YSAqLworLQl1bmlvbiB7CistCQljaGFyIGRhdGFbMF07CistCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9hcnJheSBhcnJheVswXTsKKy0JfTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogS2NvbnRyb2wgVExWIGRhdGEuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ190bHZfZGJzY2FsZSB7CistCV9fbGUzMiBtaW47CistCV9fbGUzMiBzdGVwOworLQlfX2xlMzIgbXV0ZTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX3RsdiB7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgdHlwZTsJLyogU05EUlZfQ1RMX1RMVlRfKiwgdHlwZSBvZiBUTFYgKi8KKy0JdW5pb24geworLQkJX19sZTMyIGRhdGFbU05EX1NPQ19UUExHX1RMVl9TSVpFXTsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdGx2X2Ric2NhbGUgc2NhbGU7CistCX07CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEtjb250cm9sIGNoYW5uZWwgZGF0YQorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfY2hhbm5lbCB7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgcmVnOworLQlfX2xlMzIgc2hpZnQ7CistCV9fbGUzMiBpZDsJLyogSUQgbWFwcyB0byBMZWZ0LCBSaWdodCwgTEZFIGV0YyAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBHZW5lcmljbCBPcGVyYXRpb25zIElEcywgZm9yIGJpbmRpbmcgS2NvbnRyb2wgb3IgQnl0ZXMgZXh0IG9wcworLSAqIEtjb250cm9sIG9wcyBuZWVkIGdldC9wdXQvaW5mby4KKy0gKiBCeXRlcyBleHQgb3BzIG5lZWQgZ2V0L3B1dC4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyB7CistCV9fbGUzMiBnZXQ7CistCV9fbGUzMiBwdXQ7CistCV9fbGUzMiBpbmZvOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBrY29udHJvbCBoZWFkZXIKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgeworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIHR5cGU7CistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGUzMiBhY2Nlc3M7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIG9wczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfdGx2IHRsdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogU3RyZWFtIENhcGFiaWxpdGllcworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHMgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGU2NCBmb3JtYXRzOwkvKiBzdXBwb3J0ZWQgZm9ybWF0cyBTTkRSVl9QQ01fRk1UQklUXyogKi8KKy0JX19sZTMyIHJhdGVzOwkJLyogc3VwcG9ydGVkIHJhdGVzIFNORFJWX1BDTV9SQVRFXyogKi8KKy0JX19sZTMyIHJhdGVfbWluOwkvKiBtaW4gcmF0ZSAqLworLQlfX2xlMzIgcmF0ZV9tYXg7CS8qIG1heCByYXRlICovCistCV9fbGUzMiBjaGFubmVsc19taW47CS8qIG1pbiBjaGFubmVscyAqLworLQlfX2xlMzIgY2hhbm5lbHNfbWF4OwkvKiBtYXggY2hhbm5lbHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWluOwkvKiBtaW4gbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWF4OwkvKiBtYXggbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21pbjsJLyogbWluIHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBwZXJpb2Rfc2l6ZV9tYXg7CS8qIG1heCBwZXJpb2Qgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWluOwkvKiBtaW4gYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIGJ1ZmZlcl9zaXplX21heDsJLyogbWF4IGJ1ZmZlciBzaXplIGJ5dGVzICovCistCV9fbGUzMiBzaWdfYml0czsgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIG9mIGNvbnRlbnQgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogRkUgb3IgQkUgU3RyZWFtIGNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIGJ5IFNXL0ZXCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0geworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIE5hbWUgb2YgdGhlIHN0cmVhbSAqLworLQlfX2xlNjQgZm9ybWF0OwkJLyogU05EUlZfUENNX0ZNVEJJVF8qICovCistCV9fbGUzMiByYXRlOwkJLyogU05EUlZfUENNX1JBVEVfKiAqLworLQlfX2xlMzIgcGVyaW9kX2J5dGVzOwkvKiBzaXplIG9mIHBlcmlvZCBpbiBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX2J5dGVzOwkvKiBzaXplIG9mIGJ1ZmZlciBpbiBieXRlcyAqLworLQlfX2xlMzIgY2hhbm5lbHM7CS8qIGNoYW5uZWxzICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0KKy0vKgorLSAqIERlc2NyaWJlcyBhIHBoeXNpY2FsIGxpbmsncyBydW50aW1lIHN1cHBvcnRlZCBoYXJkd2FyZSBjb25maWcsCistICogaS5lLiBoYXJkd2FyZSBhdWRpbyBmb3JtYXRzLgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfaHdfY29uZmlnIHsKKy0JX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGlkOwkJLyogdW5pcXVlIElEIC0gLSB1c2VkIHRvIG1hdGNoICovCistCV9fbGUzMiBmbXQ7CQkvKiBTTkRfU09DX0RBSV9GT1JNQVRfIGZvcm1hdCB2YWx1ZSAqLworLQlfX3U4IGNsb2NrX2dhdGVkOwkvKiBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFXyB2YWx1ZSAqLworLQlfX3U4IGludmVydF9iY2xrOwkvKiAxIGZvciBpbnZlcnRlZCBCQ0xLLCAwIGZvciBub3JtYWwgKi8KKy0JX191OCBpbnZlcnRfZnN5bmM7CS8qIDEgZm9yIGludmVydGVkIGZyYW1lIGNsb2NrLCAwIGZvciBub3JtYWwgKi8KKy0JX191OCBiY2xrX21hc3RlcjsJLyogU05EX1NPQ19UUExHX0JDTEtfIHZhbHVlICovCistCV9fdTggZnN5bmNfbWFzdGVyOwkvKiBTTkRfU09DX1RQTEdfRlNZTkNfIHZhbHVlICovCistCV9fdTggbWNsa19kaXJlY3Rpb247ICAgIC8qIFNORF9TT0NfVFBMR19NQ0xLXyB2YWx1ZSAqLworLQlfX2xlMTYgcmVzZXJ2ZWQ7CS8qIGZvciAzMmJpdCBhbGlnbm1lbnQgKi8KKy0JX19sZTMyIG1jbGtfcmF0ZTsJLyogTUNMSyBvciBTWVNDTEsgZnJlcWVuY3kgaW4gSHogKi8KKy0JX19sZTMyIGJjbGtfcmF0ZTsJLyogQkNMSyBmcmVxZW5jeSBpbiBIeiAqLworLQlfX2xlMzIgZnN5bmNfcmF0ZTsJLyogZnJhbWUgY2xvY2sgaW4gSHogKi8KKy0JX19sZTMyIHRkbV9zbG90czsJLyogbnVtYmVyIG9mIFRETSBzbG90cyBpbiB1c2UgKi8KKy0JX19sZTMyIHRkbV9zbG90X3dpZHRoOwkvKiB3aWR0aCBpbiBiaXRzIGZvciBlYWNoIHNsb3QgKi8KKy0JX19sZTMyIHR4X3Nsb3RzOwkvKiBiaXQgbWFzayBmb3IgYWN0aXZlIFR4IHNsb3RzICovCistCV9fbGUzMiByeF9zbG90czsJLyogYml0IG1hc2sgZm9yIGFjdGl2ZSBSeCBzbG90cyAqLworLQlfX2xlMzIgdHhfY2hhbm5lbHM7CS8qIG51bWJlciBvZiBUeCBjaGFubmVscyAqLworLQlfX2xlMzIgdHhfY2hhbm1hcFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOyAvKiBhcnJheSBvZiBzbG90IG51bWJlciAqLworLQlfX2xlMzIgcnhfY2hhbm5lbHM7CS8qIG51bWJlciBvZiBSeCBjaGFubmVscyAqLworLQlfX2xlMzIgcnhfY2hhbm1hcFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOyAvKiBhcnJheSBvZiBzbG90IG51bWJlciAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBNYW5pZmVzdC4gTGlzdCB0b3RhbHMgZm9yIGVhY2ggcGF5bG9hZCB0eXBlLiBOb3QgdXNlZCBpbiBwYXJzaW5nLCBidXQgd2lsbAorLSAqIGJlIHBhc3NlZCB0byB0aGUgY29tcG9uZW50IGRyaXZlciBiZWZvcmUgYW55IG90aGVyIG9iamVjdHMgaW4gb3JkZXIgZm9yIGFueQorLSAqIGdsb2JhbCBjb21wb25lbnQgcmVzb3VyY2UgYWxsb2NhdGlvbnMuCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBtYW5pZmVzdCA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdCAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3QgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBjb250cm9sX2VsZW1zOwkvKiBudW1iZXIgb2YgY29udHJvbCBlbGVtZW50cyAqLworLQlfX2xlMzIgd2lkZ2V0X2VsZW1zOwkvKiBudW1iZXIgb2Ygd2lkZ2V0IGVsZW1lbnRzICovCistCV9fbGUzMiBncmFwaF9lbGVtczsJLyogbnVtYmVyIG9mIGdyYXBoIGVsZW1lbnRzICovCistCV9fbGUzMiBwY21fZWxlbXM7CS8qIG51bWJlciBvZiBQQ00gZWxlbWVudHMgKi8KKy0JX19sZTMyIGRhaV9saW5rX2VsZW1zOwkvKiBudW1iZXIgb2YgREFJIGxpbmsgZWxlbWVudHMgKi8KKy0JX19sZTMyIGRhaV9lbGVtczsJLyogbnVtYmVyIG9mIHBoeXNpY2FsIERBSSBlbGVtZW50cyAqLworLQlfX2xlMzIgcmVzZXJ2ZWRbMjBdOwkvKiByZXNlcnZlZCBmb3IgbmV3IEFCSSBlbGVtZW50IHR5cGVzICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBNaXhlciBrY29udHJvbC4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIG1peGVyIGtjb250cm9sIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19taXhlcl9jb250cm9sIHsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBtaW47CistCV9fbGUzMiBtYXg7CistCV9fbGUzMiBwbGF0Zm9ybV9tYXg7CistCV9fbGUzMiBpbnZlcnQ7CistCV9fbGUzMiBudW1fY2hhbm5lbHM7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfY2hhbm5lbCBjaGFubmVsW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07CistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBFbnVtZXJhdGVkIGtjb250cm9sCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBlbnVtIGtjb250cm9sIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCAgfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19lbnVtX2NvbnRyb2wgeworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIG51bV9jaGFubmVsczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIGNoYW5uZWxbU05EX1NPQ19UUExHX01BWF9DSEFOXTsKKy0JX19sZTMyIGl0ZW1zOworLQlfX2xlMzIgbWFzazsKKy0JX19sZTMyIGNvdW50OworLQljaGFyIHRleHRzW1NORF9TT0NfVFBMR19OVU1fVEVYVFNdW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTMyIHZhbHVlc1tTTkRfU09DX1RQTEdfTlVNX1RFWFRTICogU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU4gLyA0XTsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEJ5dGVzIGtjb250cm9sCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBieXRlcyBrY29udHJvbCA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19ieXRlc19jb250cm9sIHwgIE4gfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfYnl0ZXNfY29udHJvbCB7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgbWF4OworLQlfX2xlMzIgbWFzazsKKy0JX19sZTMyIGJhc2U7CistCV9fbGUzMiBudW1fcmVnczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgZXh0X29wczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIERBUE0gR3JhcGggRWxlbWVudAorLSAqCistICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgREFQTSBncmFwaCBlbGVtZW50cyA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgICB8ICAxIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX2dyYXBoX2VsZW0gfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fZ3JhcGhfZWxlbSB7CistCWNoYXIgc2lua1tTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCWNoYXIgY29udHJvbFtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCWNoYXIgc291cmNlW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogREFQTSBXaWRnZXQuCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBEQVBNIHdpZGdldCA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX3dpZGdldCAgICAgfCAgTiAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgICBzdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCAgfCAwfDEgfAorLSAqIHwgICBzdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgfCAwfE4gfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqCistICogT3B0aW9uYWwgZW51bSBvciBtaXhlciBjb250cm9sIGNhbiBiZSBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIGVhY2ggd2lkZ2V0CistICogaW4gdGhlIGJsb2NrLgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV93aWRnZXQgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBpZDsJCS8qIFNORF9TT0NfREFQTV9DVEwgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBzbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCistCV9fbGUzMiByZWc7CQkvKiBuZWdhdGl2ZSByZWcgPSBubyBkaXJlY3QgZGFwbSAqLworLQlfX2xlMzIgc2hpZnQ7CQkvKiBiaXRzIHRvIHNoaWZ0ICovCistCV9fbGUzMiBtYXNrOwkJLyogbm9uLXNoaWZ0ZWQgbWFzayAqLworLQlfX2xlMzIgc3Vic2VxOwkJLyogc29ydCB3aXRoaW4gd2lkZ2V0IHR5cGUgKi8KKy0JX19sZTMyIGludmVydDsJCS8qIGludmVydCB0aGUgcG93ZXIgYml0ICovCistCV9fbGUzMiBpZ25vcmVfc3VzcGVuZDsJLyoga2VwdCBlbmFibGVkIG92ZXIgc3VzcGVuZCAqLworLQlfX2xlMTYgZXZlbnRfZmxhZ3M7CistCV9fbGUxNiBldmVudF90eXBlOworLQlfX2xlMzIgbnVtX2tjb250cm9sczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistCS8qCistCSAqIGtjb250cm9scyB0aGF0IHJlbGF0ZSB0byB0aGlzIHdpZGdldAorLQkgKiBmb2xsb3cgaGVyZSBhZnRlciB3aWRnZXQgcHJpdmF0ZSBkYXRhCistCSAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistCistLyoKKy0gKiBEZXNjcmliZXMgU1cvRlcgc3BlY2lmaWMgZmVhdHVyZXMgb2YgUENNIChGRSBEQUkgJiBEQUkgbGluaykuCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBQQ00gOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfcGNtICAgICAgICAgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfcGNtIHsKKy0JX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQljaGFyIHBjbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGUzMiBwY21faWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoIHdpdGggREFJIGxpbmsgKi8KKy0JX19sZTMyIGRhaV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIHBsYXliYWNrOwkvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCistCV9fbGUzMiBjYXB0dXJlOwkJLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCistCV9fbGUzMiBjb21wcmVzczsJLyogMSA9IGNvbXByZXNzZWQ7IDAgPSBQQ00gKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIGZvciBEQUkgbGluayAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7CS8qIG51bWJlciBvZiBzdHJlYW1zICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHMgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworLQlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworLQlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF8qIGZsYWcgdmFsdWUgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0KKy0vKgorLSAqIERlc2NyaWJlcyB0aGUgcGh5c2ljYWwgbGluayBydW50aW1lIHN1cHBvcnRlZCBjb25maWdzIG9yIHBhcmFtcworLSAqCistICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgcGh5c2ljYWwgbGluayBjb25maWcgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbGlua19jb25maWcgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfbGlua19jb25maWcgeworLQlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgaWQ7ICAgICAgICAgICAgICAvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIG5hbWUgLSB1c2VkIHRvIG1hdGNoICovCistCWNoYXIgc3RyZWFtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBzdHJlYW0gbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIHN1cHBvcnRlZCBjb25maWdzIHBsYXliYWNrIGFuZCBjYXB0cnVyZSAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7ICAgICAvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2h3X2NvbmZpZyBod19jb25maWdbU05EX1NPQ19UUExHX0hXX0NPTkZJR19NQVhdOyAvKiBodyBjb25maWdzICovCistCV9fbGUzMiBudW1faHdfY29uZmlnczsgICAgICAgICAvKiBudW1iZXIgb2YgaHcgY29uZmlncyAqLworLQlfX2xlMzIgZGVmYXVsdF9od19jb25maWdfaWQ7ICAgLyogZGVmYXVsdCBodyBjb25maWcgSUQgZm9yIGluaXQgKi8KKy0JX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKy0JX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0xOS19GTEdCSVRfKiBmbGFnIHZhbHVlICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBEZXNjcmliZXMgU1cvRlcgc3BlY2lmaWMgZmVhdHVyZXMgb2YgcGh5c2ljYWwgREFJLgorLSAqIEl0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBiYWNrZW5kIERBSXMgZm9yIERQQ00uCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBwaHlzaWNhbCBEQUkgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZGFpICAgICAgICAgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfZGFpIHsKKy0JX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIG5hbWUgLSB1c2VkIHRvIG1hdGNoICovCistCV9fbGUzMiBkYWlfaWQ7ICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIHBsYXliYWNrOyAgICAgICAgLyogc3VwcG9ydHMgcGxheWJhY2sgbW9kZSAqLworLQlfX2xlMzIgY2FwdHVyZTsgICAgICAgICAvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCistCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCistCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19EQUlfRkxHQklUXyogKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIE9sZCB2ZXJzaW9uIG9mIEFCSSBzdHJ1Y3RzLCBzdXBwb3J0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCistICovCistCistLyogTWFuaWZlc3QgdjQgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0X3Y0IHsKKy0JX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgY29udHJvbF9lbGVtczsJLyogbnVtYmVyIG9mIGNvbnRyb2wgZWxlbWVudHMgKi8KKy0JX19sZTMyIHdpZGdldF9lbGVtczsJLyogbnVtYmVyIG9mIHdpZGdldCBlbGVtZW50cyAqLworLQlfX2xlMzIgZ3JhcGhfZWxlbXM7CS8qIG51bWJlciBvZiBncmFwaCBlbGVtZW50cyAqLworLQlfX2xlMzIgcGNtX2VsZW1zOwkvKiBudW1iZXIgb2YgUENNIGVsZW1lbnRzICovCistCV9fbGUzMiBkYWlfbGlua19lbGVtczsJLyogbnVtYmVyIG9mIERBSSBsaW5rIGVsZW1lbnRzICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19wYWNrZWQ7CistCistLyogU3RyZWFtIENhcGFiaWxpdGllcyB2NCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHNfdjQgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGU2NCBmb3JtYXRzOwkvKiBzdXBwb3J0ZWQgZm9ybWF0cyBTTkRSVl9QQ01fRk1UQklUXyogKi8KKy0JX19sZTMyIHJhdGVzOwkJLyogc3VwcG9ydGVkIHJhdGVzIFNORFJWX1BDTV9SQVRFXyogKi8KKy0JX19sZTMyIHJhdGVfbWluOwkvKiBtaW4gcmF0ZSAqLworLQlfX2xlMzIgcmF0ZV9tYXg7CS8qIG1heCByYXRlICovCistCV9fbGUzMiBjaGFubmVsc19taW47CS8qIG1pbiBjaGFubmVscyAqLworLQlfX2xlMzIgY2hhbm5lbHNfbWF4OwkvKiBtYXggY2hhbm5lbHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWluOwkvKiBtaW4gbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWF4OwkvKiBtYXggbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21pbjsJLyogbWluIHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBwZXJpb2Rfc2l6ZV9tYXg7CS8qIG1heCBwZXJpb2Qgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWluOwkvKiBtaW4gYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIGJ1ZmZlcl9zaXplX21heDsJLyogbWF4IGJ1ZmZlciBzaXplIGJ5dGVzICovCistfSBfX3BhY2tlZDsKKy0KKy0vKiBQQ00gdjQgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3BjbV92NCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBwY21fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCWNoYXIgZGFpX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQlfX2xlMzIgcGNtX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCB3aXRoIERBSSBsaW5rICovCistCV9fbGUzMiBkYWlfaWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCistCV9fbGUzMiBwbGF5YmFjazsJLyogc3VwcG9ydHMgcGxheWJhY2sgbW9kZSAqLworLQlfX2xlMzIgY2FwdHVyZTsJCS8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworLQlfX2xlMzIgY29tcHJlc3M7CS8qIDEgPSBjb21wcmVzc2VkOyAwID0gUENNICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBmb3IgREFJIGxpbmsgKi8KKy0JX19sZTMyIG51bV9zdHJlYW1zOwkvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzX3Y0IGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKy19IF9fcGFja2VkOworLQorLS8qIFBoeXNpY2FsIGxpbmsgY29uZmlnIHY0ICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZ192NCB7CistCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBpZDsgICAgICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIHN1cHBvcnRlZCBjb25maWdzIHBsYXliYWNrIGFuZCBjYXB0cnVyZSAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7ICAgICAvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworLX0gX19wYWNrZWQ7CistCistI2VuZGlmCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9hc29jLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc291bmQuaCBiL2luY2x1ZGUvc291bmQvYXNvdW5kLmgKK2luZGV4IGRmMTE1M2NlLi4zYmU0ZDg1MCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvYXNvdW5kLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNvdW5kLmgKK0BAIC0xLDEwMzggKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBIC0gRHJpdmVyCistICogIENvcHlyaWdodCAoYykgMTk5NC0yMDAzIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnJhbW8gQmFnbmFyYSA8YWJyYW1vQGFsc2EtcHJvamVjdC5vcmc+CistICoKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLQorLSNpZm5kZWYgX1VBUElfX1NPVU5EX0FTT1VORF9ICistI2RlZmluZSBfVUFQSV9fU09VTkRfQVNPVU5EX0gKKy0KKy0jaWYgZGVmaW5lZChfX0tFUk5FTF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKKy0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKy0jZWxzZQorLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKy0jZW5kaWYKKy0KKy0jaWZuZGVmIF9fS0VSTkVMX18KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHRpbWUuaD4KKy0jZW5kaWYKKy0KKy0vKgorLSAqICBwcm90b2NvbCB2ZXJzaW9uCistICovCistCistI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKG1ham9yLCBtaW5vciwgc3VibWlub3IpICgoKG1ham9yKTw8MTYpfCgobWlub3IpPDw4KXwoc3VibWlub3IpKQorLSNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUFKT1IodmVyc2lvbikgKCgodmVyc2lvbik+PjE2KSYweGZmZmYpCistI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NSU5PUih2ZXJzaW9uKSAoKCh2ZXJzaW9uKT4+OCkmMHhmZikKKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX01JQ1JPKHZlcnNpb24pICgodmVyc2lvbikmMHhmZikKKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX0lOQ09NUEFUSUJMRShrdmVyc2lvbiwgdXZlcnNpb24pIFwKKy0JKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSAhPSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgfHwgXAorLQkgKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSA9PSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgJiYgXAorLQkgICBTTkRSVl9QUk9UT0NPTF9NSU5PUihrdmVyc2lvbikgIT0gU05EUlZfUFJPVE9DT0xfTUlOT1IodXZlcnNpb24pKSkKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgIERpZ2l0YWwgYXVkaW8gaW50ZXJmYWNlCQkJCQkgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistc3RydWN0IHNuZF9hZXNfaWVjOTU4IHsKKy0JdW5zaWduZWQgY2hhciBzdGF0dXNbMjRdOwkvKiBBRVMvSUVDOTU4IGNoYW5uZWwgc3RhdHVzIGJpdHMgKi8KKy0JdW5zaWduZWQgY2hhciBzdWJjb2RlWzE0N107CS8qIEFFUy9JRUM5NTggc3ViY29kZSBiaXRzICovCistCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogbm90aGluZyAqLworLQl1bnNpZ25lZCBjaGFyIGRpZ19zdWJmcmFtZVs0XTsJLyogQUVTL0lFQzk1OCBzdWJmcmFtZSBiaXRzICovCistfTsKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgIENFQS04NjEgQXVkaW8gSW5mb0ZyYW1lLiBVc2VkIGluIEhETUkgYW5kIERpc3BsYXlQb3J0CQkgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistc3RydWN0IHNuZF9jZWFfODYxX2F1ZF9pZiB7CistCXVuc2lnbmVkIGNoYXIgZGIxX2N0X2NjOyAvKiBjb2RpbmcgdHlwZSBhbmQgY2hhbm5lbCBjb3VudCAqLworLQl1bnNpZ25lZCBjaGFyIGRiMl9zZl9zczsgLyogc2FtcGxlIGZyZXF1ZW5jeSBhbmQgc2l6ZSAqLworLQl1bnNpZ25lZCBjaGFyIGRiMzsgLyogbm90IHVzZWQsIGFsbCB6ZXJvcyAqLworLQl1bnNpZ25lZCBjaGFyIGRiNF9jYTsgLyogY2hhbm5lbCBhbGxvY2F0aW9uIGNvZGUgKi8KKy0JdW5zaWduZWQgY2hhciBkYjVfZG1pbmhfbHN2OyAvKiBkb3dubWl4IGluaGliaXQgJiBsZXZlbC1zaGl0IHZhbHVlcyAqLworLX07CistCistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgU2VjdGlvbiBmb3IgZHJpdmVyIGhhcmR3YXJlIGRlcGVuZGVudCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9odz8gICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jZGVmaW5lIFNORFJWX0hXREVQX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMSkKKy0KKy1lbnVtIHsKKy0JU05EUlZfSFdERVBfSUZBQ0VfT1BMMiA9IDAsCistCVNORFJWX0hXREVQX0lGQUNFX09QTDMsCistCVNORFJWX0hXREVQX0lGQUNFX09QTDQsCistCVNORFJWX0hXREVQX0lGQUNFX1NCMTZDU1AsCS8qIENyZWF0aXZlIFNpZ25hbCBQcm9jZXNzb3IgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRU1VMTBLMSwJLyogRlg4MDEwIHByb2Nlc3NvciBpbiBFTVUxMEsxIGNoaXAgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfWVNTMjI1LAkvKiBZYW1haGEgRlggcHJvY2Vzc29yICovCistCVNORFJWX0hXREVQX0lGQUNFX0lDUzIxMTUsCS8qIFdhdmV0YWJsZSBzeW50aCAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9TU0NBUEUsCS8qIEVuc29uaXEgU291bmRTY2FwZSBJU0EgY2FyZCAoTUM2OEVDMDAwKSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9WWCwJCS8qIERpZ2lncmFtIFZYIGNhcmRzICovCistCVNORFJWX0hXREVQX0lGQUNFX01JWEFSVCwJLyogRGlnaWdyYW0gbWlYYXJ0IGNhcmRzICovCistCVNORFJWX0hXREVQX0lGQUNFX1VTWDJZLAkvKiBUYXNjYW0gVVMxMjIsIFVTMjI0ICYgVVM0MjggdXNiICovCistCVNORFJWX0hXREVQX0lGQUNFX0VNVVhfV0FWRVRBQkxFLCAvKiBFbXVYIHdhdmV0YWJsZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9CTFVFVE9PVEgsCS8qIEJsdWV0b290aCBhdWRpbyAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9VU1gyWV9QQ00sCS8qIFRhc2NhbSBVUzEyMiwgVVMyMjQgJiBVUzQyOCByYXd1c2IgcGNtICovCistCVNORFJWX0hXREVQX0lGQUNFX1BDWEhSLAkvKiBEaWdpZ3JhbSBQQ1hIUiAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9TQl9SQywJLyogU0IgRXh0aWd5L0F1ZGlneTJOWCByZW1vdGUgY29udHJvbCAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9IREEsCQkvKiBIRC1hdWRpbyAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9VU0JfU1RSRUFNLAkvKiBkaXJlY3QgYWNjZXNzIHRvIHVzYiBzdHJlYW0gKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRElDRSwJLyogVEMgRElDRSBGaXJlV2lyZSBkZXZpY2UgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRVdPUktTLAkvKiBFY2hvIEF1ZGlvIEZpcmV3b3JrcyBiYXNlZCBkZXZpY2UgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfQkVCT0IsCS8qIEJyaWRnZUNvIEJlQm9CIGJhc2VkIGRldmljZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19PWEZXLAkvKiBPeGZvcmQgT1hGVzk3MC85NzEgYmFzZWQgZGV2aWNlICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX0RJR0kwMFgsCS8qIERpZ2lkZXNpZ24gRGlnaSAwMDIvMDAzIGZhbWlseSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19UQVNDQU0sCS8qIFRBU0NBTSBGaXJlV2lyZSBzZXJpZXMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfTElORTYsCS8qIExpbmU2IFVTQiBwcm9jZXNzb3JzICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX01PVFUsCS8qIE1PVFUgRmlyZVdpcmUgc2VyaWVzICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFLAkvKiBSTUUgRmlyZWZhY2Ugc2VyaWVzICovCistCistCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfTEFTVCA9IFNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFCistfTsKKy0KKy1zdHJ1Y3Qgc25kX2h3ZGVwX2luZm8geworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogV1I6IGRldmljZSBudW1iZXIgKi8KKy0JaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogaHdkZXAgbmFtZSAqLworLQlpbnQgaWZhY2U7CQkJLyogaHdkZXAgaW50ZXJmYWNlICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCistfTsKKy0KKy0vKiBnZW5lcmljIERTUCBsb2FkZXIgKi8KKy1zdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9zdGF0dXMgeworLQl1bnNpZ25lZCBpbnQgdmVyc2lvbjsJCS8qIFI6IGRyaXZlci1zcGVjaWZpYyB2ZXJzaW9uICovCistCXVuc2lnbmVkIGNoYXIgaWRbMzJdOwkJLyogUjogZHJpdmVyLXNwZWNpZmljIElEIHN0cmluZyAqLworLQl1bnNpZ25lZCBpbnQgbnVtX2RzcHM7CQkvKiBSOiBudW1iZXIgb2YgRFNQIGltYWdlcyB0byB0cmFuc2ZlciAqLworLQl1bnNpZ25lZCBpbnQgZHNwX2xvYWRlZDsJLyogUjogYml0IGZsYWdzIGluZGljYXRpbmcgdGhlIGxvYWRlZCBEU1BzICovCistCXVuc2lnbmVkIGludCBjaGlwX3JlYWR5OwkvKiBSOiAxID0gaW5pdGlhbGl6YXRpb24gZmluaXNoZWQgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSB7CistCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIFc6IERTUCBpbmRleCAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbNjRdOwkJLyogVzogSUQgKGUuZy4gZmlsZSBuYW1lKSAqLworLQl1bnNpZ25lZCBjaGFyIF9fdXNlciAqaW1hZ2U7CS8qIFc6IGJpbmFyeSBpbWFnZSAqLworLQlzaXplX3QgbGVuZ3RoOwkJCS8qIFc6IHNpemUgb2YgaW1hZ2UgaW4gYnl0ZXMgKi8KKy0JdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsJLyogVzogZHJpdmVyLXNwZWNpZmljIGRhdGEgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9JTkZPCQlfSU9SICgnSCcsIDB4MDEsIHN0cnVjdCBzbmRfaHdkZXBfaW5mbykKKy0jZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9TVEFUVVMJX0lPUignSCcsIDB4MDIsIHN0cnVjdCBzbmRfaHdkZXBfZHNwX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9MT0FECV9JT1coJ0gnLCAweDAzLCBzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSkKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICBEaWdpdGFsIEF1ZGlvIChQQ00pIGludGVyZmFjZSAtIC9kZXYvc25kL3BjbT8/ICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistI2RlZmluZSBTTkRSVl9QQ01fVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCAxNCkKKy0KKy10eXBlZGVmIHVuc2lnbmVkIGxvbmcgc25kX3BjbV91ZnJhbWVzX3Q7CistdHlwZWRlZiBzaWduZWQgbG9uZyBzbmRfcGNtX3NmcmFtZXNfdDsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX0NMQVNTX0dFTkVSSUMgPSAwLAkvKiBzdGFuZGFyZCBtb25vIG9yIHN0ZXJlbyBkZXZpY2UgKi8KKy0JU05EUlZfUENNX0NMQVNTX01VTFRJLAkJLyogbXVsdGljaGFubmVsIGRldmljZSAqLworLQlTTkRSVl9QQ01fQ0xBU1NfTU9ERU0sCQkvKiBzb2Z0d2FyZSBtb2RlbSBjbGFzcyAqLworLQlTTkRSVl9QQ01fQ0xBU1NfRElHSVRJWkVSLAkvKiBkaWdpdGl6ZXIgY2xhc3MgKi8KKy0JLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworLQlTTkRSVl9QQ01fQ0xBU1NfTEFTVCA9IFNORFJWX1BDTV9DTEFTU19ESUdJVElaRVIsCistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1NVQkNMQVNTX0dFTkVSSUNfTUlYID0gMCwgLyogbW9ubyBvciBzdGVyZW8gc3ViZGV2aWNlcyBhcmUgbWl4ZWQgdG9nZXRoZXIgKi8KKy0JU05EUlZfUENNX1NVQkNMQVNTX01VTFRJX01JWCwJLyogbXVsdGljaGFubmVsIHN1YmRldmljZXMgYXJlIG1peGVkIHRvZ2V0aGVyICovCistCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKy0JU05EUlZfUENNX1NVQkNMQVNTX0xBU1QgPSBTTkRSVl9QQ01fU1VCQ0xBU1NfTVVMVElfTUlYLAorLX07CistCistZW51bSB7CistCVNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0sgPSAwLAorLQlTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUsCistCVNORFJWX1BDTV9TVFJFQU1fTEFTVCA9IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKy19OworLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2FjY2Vzc190OworLSNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX0lOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAwKSAvKiBpbnRlcmxlYXZlZCBtbWFwICovCistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfTk9OSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDEpIC8qIG5vbmludGVybGVhdmVkIG1tYXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9DT01QTEVYCQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMikgLyogY29tcGxleCBtbWFwICovCistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVECQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMykgLyogcmVhZGkvd3JpdGVpICovCistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX05PTklOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSA0KSAvKiByZWFkbi93cml0ZW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTEFTVAkJU05EUlZfUENNX0FDQ0VTU19SV19OT05JTlRFUkxFQVZFRAorLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2Zvcm1hdF90OworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TOAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTgJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMikKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA2KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA3KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA4KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA5KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMikKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMykKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE0KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE1KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTYpIC8qIDgtYnl0ZSBmbG9hdCwgSUVFRS03NTQgNjQtYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNykgLyogOC1ieXRlIGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRSAoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTgpIC8qIElFQy05NTggc3ViZnJhbWUsIExpdHRsZSBFbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFICgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxOSkgLyogSUVDLTk1OCBzdWJmcmFtZSwgQmlnIEVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9NVV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfQV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSU1BX0FEUENNCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMikKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTVBFRwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIzKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HU00JCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNSkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI2KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjcpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyOCkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworLS8qIGdhcCBpbiB0aGUgbnVtYmVyaW5nIGZvciBhIGZ1dHVyZSBzdGFuZGFyZCBsaW5lYXIgZm9ybWF0ICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1NQRUNJQUwJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMxKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzMpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM0KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwXzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzYpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM3KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzOCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwXzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzkpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxOF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQwKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMThfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE4XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDIpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxOF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQzKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzI0CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NCkgLyogOCBzYW1wbGVzIGluIDMgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM18yNF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDUpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzQwCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NikgLyogOCBTYW1wbGVzIGluIDUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM180MF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDcpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTgJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OCkgLyogRFNELCAxLWJ5dGUgc2FtcGxlcyBEU0QgKHg4KSAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OSkgLyogRFNELCAyLWJ5dGUgc2FtcGxlcyBEU0QgKHgxNiksIGxpdHRsZSBlbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTApIC8qIERTRCwgNC1ieXRlIHNhbXBsZXMgRFNEICh4MzIpLCBsaXR0bGUgZW5kaWFuICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUxKSAvKiBEU0QsIDItYnl0ZSBzYW1wbGVzIERTRCAoeDE2KSwgYmlnIGVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MikgLyogRFNELCA0LWJ5dGUgc2FtcGxlcyBEU0QgKHgzMiksIGJpZyBlbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTEFTVAkJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZJUlNUCQlTTkRSVl9QQ01fRk9STUFUX1M4CistCistI2lmZGVmIFNORFJWX0xJVFRMRV9FTkRJQU4KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2CQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTYJCVNORFJWX1BDTV9GT1JNQVRfVTE2X0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNAkJU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0CQlTTkRSVl9QQ01fRk9STUFUX1UyNF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzIJCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMgkJU05EUlZfUENNX0ZPUk1BVF9VMzJfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQJCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NAlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FIFNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMAkJU05EUlZfUENNX0ZPUk1BVF9TMjBfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwCQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQorLSNlbmRpZgorLSNpZmRlZiBTTkRSVl9CSUdfRU5ESUFOCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNgkJU05EUlZfUENNX0ZPUk1BVF9TMTZfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2CQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjQJCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNAkJU05EUlZfUENNX0ZPUk1BVF9VMjRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyCQlTTkRSVl9QQ01fRk9STUFUX1MzMl9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzIJCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUCQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjQJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRSBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjAJCVNORFJWX1BDTV9GT1JNQVRfUzIwX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMAkJU05EUlZfUENNX0ZPUk1BVF9VMjBfQkUKKy0jZW5kaWYKKy0KKy10eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9zdWJmb3JtYXRfdDsKKy0jZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfU1RECQkoKF9fZm9yY2Ugc25kX3BjbV9zdWJmb3JtYXRfdCkgMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfTEFTVAlTTkRSVl9QQ01fU1VCRk9STUFUX1NURAorLQorLSNkZWZpbmUgU05EUlZfUENNX0lORk9fTU1BUAkJMHgwMDAwMDAwMQkvKiBoYXJkd2FyZSBzdXBwb3J0cyBtbWFwICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19NTUFQX1ZBTElECTB4MDAwMDAwMDIJLyogcGVyaW9kIGRhdGEgYXJlIHZhbGlkIGR1cmluZyB0cmFuc2ZlciAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fRE9VQkxFCQkweDAwMDAwMDA0CS8qIERvdWJsZSBidWZmZXJpbmcgbmVlZGVkIGZvciBQQ00gc3RhcnQvc3RvcCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fQkFUQ0gJCTB4MDAwMDAwMTAJLyogZG91YmxlIGJ1ZmZlcmluZyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fU1lOQ19BUFBMUFRSCTB4MDAwMDAwMjAJLyogbmVlZCB0aGUgZXhwbGljaXQgc3luYyBvZiBhcHBsX3B0ciB1cGRhdGUgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0lOVEVSTEVBVkVECTB4MDAwMDAxMDAJLyogY2hhbm5lbHMgYXJlIGludGVybGVhdmVkICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19OT05JTlRFUkxFQVZFRAkweDAwMDAwMjAwCS8qIGNoYW5uZWxzIGFyZSBub3QgaW50ZXJsZWF2ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0NPTVBMRVgJCTB4MDAwMDA0MDAJLyogY29tcGxleCBmcmFtZSBvcmdhbml6YXRpb24gKG1tYXAgb25seSkgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSCTB4MDAwMTAwMDAJLyogaGFyZHdhcmUgdHJhbnNmZXIgYmxvY2sgb2Ygc2FtcGxlcyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fT1ZFUlJBTkdFCTB4MDAwMjAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9uICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19SRVNVTUUJCTB4MDAwNDAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgc3RyZWFtIHJlc3VtZSBhZnRlciBzdXNwZW5kICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19QQVVTRQkJMHgwMDA4MDAwMAkvKiBwYXVzZSBpb2N0bCBpcyBzdXBwb3J0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBTEZfRFVQTEVYCTB4MDAxMDAwMDAJLyogb25seSBoYWxmIGR1cGxleCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSk9JTlRfRFVQTEVYCTB4MDAyMDAwMDAJLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgc3RyZWFtIGFyZSBzb21ld2hhdCBjb3JyZWxhdGVkICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19TWU5DX1NUQVJUCTB4MDA0MDAwMDAJLyogcGNtIHN1cHBvcnQgc29tZSBraW5kIG9mIHN5bmMgZ28gKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX05PX1BFUklPRF9XQUtFVVAJMHgwMDgwMDAwMAkvKiBwZXJpb2Qgd2FrZXVwIGNhbiBiZSBkaXNhYmxlZCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX1dBTExfQ0xPQ0sgICAweDAxMDAwMDAwICAgICAgLyogKERlcHJlY2F0ZWQpaGFzIGF1ZGlvIHdhbGwgY2xvY2sgZm9yIGF1ZGlvL3N5c3RlbSB0aW1lIHN5bmMgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0FUSU1FICAgICAgICAgICAgICAweDAxMDAwMDAwICAvKiByZXBvcnQgaGFyZHdhcmUgbGluayBhdWRpbyB0aW1lLCByZXNldCBvbiBzdGFydHVwICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19BQlNPTFVURV9BVElNRSAgICAgMHgwMjAwMDAwMCAgLyogcmVwb3J0IGFic29sdXRlIGhhcmR3YXJlIGxpbmsgYXVkaW8gdGltZSwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0VTVElNQVRFRF9BVElNRSAgICAweDA0MDAwMDAwICAvKiByZXBvcnQgZXN0aW1hdGVkIGxpbmsgYXVkaW8gdGltZSAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfU1lOQ0hST05JWkVEX0FUSU1FIDB4MDgwMDAwMDAgIC8qIHJlcG9ydCBzeW5jaHJvbml6ZWQgYXVkaW8vc3lzdGVtIHRpbWUgKi8KKy0KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0RSQUlOX1RSSUdHRVIJMHg0MDAwMDAwMAkJLyogaW50ZXJuYWwga2VybmVsIGZsYWcgLSB0cmlnZ2VyIGluIGRyYWluICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19GSUZPX0lOX0ZSQU1FUwkweDgwMDAwMDAwCS8qIGludGVybmFsIGtlcm5lbCBmbGFnIC0gRklGTyBzaXplIGlzIGluIGZyYW1lcyAqLworLQorLQorLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX3N0YXRlX3Q7CistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfT1BFTgkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMCkgLyogc3RyZWFtIGlzIG9wZW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9TRVRVUAkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMSkgLyogc3RyZWFtIGhhcyBhIHNldHVwICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUFJFUEFSRUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMikgLyogc3RyZWFtIGlzIHJlYWR5IHRvIHN0YXJ0ICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUlVOTklORwkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMykgLyogc3RyZWFtIGlzIHJ1bm5pbmcgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9YUlVOCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA0KSAvKiBzdHJlYW0gcmVhY2hlZCBhbiB4cnVuICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfRFJBSU5JTkcJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNSkgLyogc3RyZWFtIGlzIGRyYWluaW5nICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUEFVU0VECQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA2KSAvKiBzdHJlYW0gaXMgcGF1c2VkICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfU1VTUEVOREVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDcpIC8qIGhhcmR3YXJlIGlzIHN1c3BlbmRlZCAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0RJU0NPTk5FQ1RFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA4KSAvKiBoYXJkd2FyZSBpcyBkaXNjb25uZWN0ZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9MQVNUCQlTTkRSVl9QQ01fU1RBVEVfRElTQ09OTkVDVEVECistCistZW51bSB7CistCVNORFJWX1BDTV9NTUFQX09GRlNFVF9EQVRBID0gMHgwMDAwMDAwMCwKKy0JU05EUlZfUENNX01NQVBfT0ZGU0VUX1NUQVRVUyA9IDB4ODAwMDAwMDAsCistCVNORFJWX1BDTV9NTUFQX09GRlNFVF9DT05UUk9MID0gMHg4MTAwMDAwMCwKKy19OworLQorLXVuaW9uIHNuZF9wY21fc3luY19pZCB7CistCXVuc2lnbmVkIGNoYXIgaWRbMTZdOworLQl1bnNpZ25lZCBzaG9ydCBpZDE2WzhdOworLQl1bnNpZ25lZCBpbnQgaWQzMls0XTsKKy19OworLQorLXN0cnVjdCBzbmRfcGNtX2luZm8geworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBkZXZpY2UgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IHN1YmRldmljZSBudW1iZXIgKi8KKy0JaW50IHN0cmVhbTsJCQkvKiBSTy9XUiAoY29udHJvbCk6IHN0cmVhbSBkaXJlY3Rpb24gKi8KKy0JaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogbmFtZSBvZiB0aGlzIGRldmljZSAqLworLQl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBzdWJkZXZpY2UgbmFtZSAqLworLQlpbnQgZGV2X2NsYXNzOwkJCS8qIFNORFJWX1BDTV9DTEFTU18qICovCistCWludCBkZXZfc3ViY2xhc3M7CQkvKiBTTkRSVl9QQ01fU1VCQ0xBU1NfKiAqLworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19jb3VudDsKKy0JdW5zaWduZWQgaW50IHN1YmRldmljZXNfYXZhaWw7CistCXVuaW9uIHNuZF9wY21fc3luY19pZCBzeW5jOwkvKiBoYXJkd2FyZSBzeW5jaHJvbml6YXRpb24gSUQgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUuLi4gKi8KKy19OworLQorLXR5cGVkZWYgaW50IHNuZF9wY21faHdfcGFyYW1fdDsKKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9BQ0NFU1MJMAkvKiBBY2Nlc3MgdHlwZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVAkxCS8qIEZvcm1hdCAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1NVQkZPUk1BVAkyCS8qIFN1YmZvcm1hdCAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sJU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfTUFTSwlTTkRSVl9QQ01fSFdfUEFSQU1fU1VCRk9STUFUCistCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fU0FNUExFX0JJVFMJOAkvKiBCaXRzIHBlciBzYW1wbGUgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GUkFNRV9CSVRTCTkJLyogQml0cyBwZXIgZnJhbWUgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9DSEFOTkVMUwkxMAkvKiBDaGFubmVscyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1JBVEUJCTExCS8qIEFwcHJveCByYXRlICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1RJTUUJMTIJLyogQXBwcm94IGRpc3RhbmNlIGJldHdlZW4KKy0JCQkJCQkgKiBpbnRlcnJ1cHRzIGluIHVzCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1NJWkUJMTMJLyogQXBwcm94IGZyYW1lcyBiZXR3ZWVuCistCQkJCQkJICogaW50ZXJydXB0cworLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9CWVRFUwkxNAkvKiBBcHByb3ggYnl0ZXMgYmV0d2VlbgorLQkJCQkJCSAqIGludGVycnVwdHMKKy0JCQkJCQkgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RTCTE1CS8qIEFwcHJveCBpbnRlcnJ1cHRzIHBlcgorLQkJCQkJCSAqIGJ1ZmZlcgorLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9USU1FCTE2CS8qIEFwcHJveCBkdXJhdGlvbiBvZiBidWZmZXIKKy0JCQkJCQkgKiBpbiB1cworLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFCTE3CS8qIFNpemUgb2YgYnVmZmVyIGluIGZyYW1lcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUwkxOAkvKiBTaXplIG9mIGJ1ZmZlciBpbiBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQkxOQkvKiBBcHByb3ggdGljayBkdXJhdGlvbiBpbiB1cyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX0lOVEVSVkFMCVNORFJWX1BDTV9IV19QQVJBTV9TQU1QTEVfQklUUworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfSU5URVJWQUwJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQorLQorLSNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT1JFU0FNUExFCSgxPDwwKQkvKiBhdm9pZCByYXRlIHJlc2FtcGxpbmcgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfRVhQT1JUX0JVRkZFUgkoMTw8MSkJLyogZXhwb3J0IGJ1ZmZlciAqLworLSNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT19QRVJJT0RfV0FLRVVQCSgxPDwyKQkvKiBkaXNhYmxlIHBlcmlvZCB3YWtldXBzICovCistCistc3RydWN0IHNuZF9pbnRlcnZhbCB7CistCXVuc2lnbmVkIGludCBtaW4sIG1heDsKKy0JdW5zaWduZWQgaW50IG9wZW5taW46MSwKKy0JCSAgICAgb3Blbm1heDoxLAorLQkJICAgICBpbnRlZ2VyOjEsCistCQkgICAgIGVtcHR5OjE7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX01BU0tfTUFYCTI1NgorLQorLXN0cnVjdCBzbmRfbWFzayB7CistCV9fdTMyIGJpdHNbKFNORFJWX01BU0tfTUFYKzMxKS8zMl07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgeworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CistCXN0cnVjdCBzbmRfbWFzayBtYXNrc1tTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9NQVNLIC0KKy0JCQkgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sgKyAxXTsKKy0Jc3RydWN0IHNuZF9tYXNrIG1yZXNbNV07CS8qIHJlc2VydmVkIG1hc2tzICovCistCXN0cnVjdCBzbmRfaW50ZXJ2YWwgaW50ZXJ2YWxzW1NORFJWX1BDTV9IV19QQVJBTV9MQVNUX0lOVEVSVkFMIC0KKy0JCQkJICAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfSU5URVJWQUwgKyAxXTsKKy0Jc3RydWN0IHNuZF9pbnRlcnZhbCBpcmVzWzldOwkvKiByZXNlcnZlZCBpbnRlcnZhbHMgKi8KKy0JdW5zaWduZWQgaW50IHJtYXNrOwkJLyogVzogcmVxdWVzdGVkIG1hc2tzICovCistCXVuc2lnbmVkIGludCBjbWFzazsJCS8qIFI6IGNoYW5nZWQgbWFza3MgKi8KKy0JdW5zaWduZWQgaW50IGluZm87CQkvKiBSOiBJbmZvIGZsYWdzIGZvciByZXR1cm5lZCBzZXR1cCAqLworLQl1bnNpZ25lZCBpbnQgbXNiaXRzOwkJLyogUjogdXNlZCBtb3N0IHNpZ25pZmljYW50IGJpdHMgKi8KKy0JdW5zaWduZWQgaW50IHJhdGVfbnVtOwkJLyogUjogcmF0ZSBudW1lcmF0b3IgKi8KKy0JdW5zaWduZWQgaW50IHJhdGVfZGVuOwkJLyogUjogcmF0ZSBkZW5vbWluYXRvciAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBmaWZvX3NpemU7CS8qIFI6IGNoaXAgRklGTyBzaXplIGluIGZyYW1lcyAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworLX07CistCistZW51bSB7CistCVNORFJWX1BDTV9UU1RBTVBfTk9ORSA9IDAsCistCVNORFJWX1BDTV9UU1RBTVBfRU5BQkxFLAorLQlTTkRSVl9QQ01fVFNUQU1QX0xBU1QgPSBTTkRSVl9QQ01fVFNUQU1QX0VOQUJMRSwKKy19OworLQorLXN0cnVjdCBzbmRfcGNtX3N3X3BhcmFtcyB7CistCWludCB0c3RhbXBfbW9kZTsJCQkvKiB0aW1lc3RhbXAgbW9kZSAqLworLQl1bnNpZ25lZCBpbnQgcGVyaW9kX3N0ZXA7CistCXVuc2lnbmVkIGludCBzbGVlcF9taW47CQkJLyogbWluIHRpY2tzIHRvIHNsZWVwICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJCS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIHdha2V1cCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCB4ZmVyX2FsaWduOwkJLyogb2Jzb2xldGU6IHhmZXIgc2l6ZSBuZWVkIHRvIGJlIGEgbXVsdGlwbGUgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc3RhcnRfdGhyZXNob2xkOwkvKiBtaW4gaHdfYXZhaWwgZnJhbWVzIGZvciBhdXRvbWF0aWMgc3RhcnQgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc3RvcF90aHJlc2hvbGQ7CS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIGF1dG9tYXRpYyBzdG9wICovCistCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2VfdGhyZXNob2xkOwkvKiBtaW4gZGlzdGFuY2UgZnJvbSBub2lzZSBmb3Igc2lsZW5jZSBmaWxsaW5nICovCistCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2Vfc2l6ZTsJCS8qIHNpbGVuY2UgYmxvY2sgc2l6ZSAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBib3VuZGFyeTsJCS8qIHBvaW50ZXJzIHdyYXAgcG9pbnQgKi8KKy0JdW5zaWduZWQgaW50IHByb3RvOwkJCS8qIHByb3RvY29sIHZlcnNpb24gKi8KKy0JdW5zaWduZWQgaW50IHRzdGFtcF90eXBlOwkJLyogdGltZXN0YW1wIHR5cGUgKHJlcS4gcHJvdG8gPj0gMi4wLjEyKSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzU2XTsJCS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKy19OworLQorLXN0cnVjdCBzbmRfcGNtX2NoYW5uZWxfaW5mbyB7CistCXVuc2lnbmVkIGludCBjaGFubmVsOworLQlfX2tlcm5lbF9vZmZfdCBvZmZzZXQ7CQkvKiBtbWFwIG9mZnNldCAqLworLQl1bnNpZ25lZCBpbnQgZmlyc3Q7CQkvKiBvZmZzZXQgdG8gZmlyc3Qgc2FtcGxlIGluIGJpdHMgKi8KKy0JdW5zaWduZWQgaW50IHN0ZXA7CQkvKiBzYW1wbGVzIGRpc3RhbmNlIGluIGJpdHMgKi8KKy19OworLQorLWVudW0geworLQkvKgorLQkgKiAgZmlyc3QgZGVmaW5pdGlvbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seSwKKy0JICogIG1hcHMgdG8gd2FsbGNsb2NrL2xpbmsgdGltZSBmb3IgSERBdWRpbyBwbGF5YmFjayBhbmQgREVGQVVMVC9ETUEgdGltZSBmb3IgZXZlcnl0aGluZyBlbHNlCistCSAqLworLQlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfQ09NUEFUID0gMCwKKy0KKy0JLyogdGltZXN0YW1wIGRlZmluaXRpb25zICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9ERUZBVUxUID0gMSwgICAgICAgICAgIC8qIERNQSB0aW1lLCByZXBvcnRlZCBhcyBwZXIgaHdfcHRyICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LID0gMiwJICAgICAgICAgICAvKiBsaW5rIHRpbWUgcmVwb3J0ZWQgYnkgc2FtcGxlIG9yIHdhbGxjbG9jayBjb3VudGVyLCByZXNldCBvbiBzdGFydHVwICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX0FCU09MVVRFID0gMywJICAgLyogbGluayB0aW1lIHJlcG9ydGVkIGJ5IHNhbXBsZSBvciB3YWxsY2xvY2sgY291bnRlciwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfRVNUSU1BVEVEID0gNCwgICAgLyogbGluayB0aW1lIGVzdGltYXRlZCBpbmRpcmVjdGx5ICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRCA9IDUsIC8qIGxpbmsgdGltZSBzeW5jaHJvbml6ZWQgd2l0aCBzeXN0ZW0gdGltZSAqLworLQlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTEFTVCA9IFNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRAorLX07CistCistc3RydWN0IHNuZF9wY21fc3RhdHVzIHsKKy0Jc25kX3BjbV9zdGF0ZV90IHN0YXRlOwkJLyogc3RyZWFtIHN0YXRlICovCistCXN0cnVjdCB0aW1lc3BlYyB0cmlnZ2VyX3RzdGFtcDsJLyogdGltZSB3aGVuIHN0cmVhbSB3YXMgc3RhcnRlZC9zdG9wcGVkL3BhdXNlZCAqLworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogcmVmZXJlbmNlIHRpbWVzdGFtcCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBhcHBsX3B0cjsJLyogYXBwbCBwdHIgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgaHdfcHRyOwkvKiBodyBwdHIgKi8KKy0Jc25kX3BjbV9zZnJhbWVzX3QgZGVsYXk7CS8qIGN1cnJlbnQgZGVsYXkgaW4gZnJhbWVzICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsOwkvKiBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9tYXg7CS8qIG1heCBmcmFtZXMgYXZhaWxhYmxlIG9uIGh3IHNpbmNlIGxhc3Qgc3RhdHVzICovCistCXNuZF9wY21fdWZyYW1lc190IG92ZXJyYW5nZTsJLyogY291bnQgb2YgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9ucyBmcm9tIGxhc3Qgc3RhdHVzICovCistCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIHN1c3BlbmRlZCBzdHJlYW0gc3RhdGUgKi8KKy0JX191MzIgYXVkaW9fdHN0YW1wX2RhdGE7CSAvKiBuZWVkZWQgZm9yIDY0LWJpdCBhbGlnbm1lbnQsIHVzZWQgZm9yIGNvbmZpZ3MvcmVwb3J0IHRvL2Zyb20gdXNlcnNwYWNlICovCistCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIHNhbXBsZSBjb3VudGVyLCB3YWxsIGNsb2NrLCBQSEMgb3Igb24tZGVtYW5kIHN5bmMnZWQgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIGRyaXZlcl90c3RhbXA7CS8qIHVzZWZ1bCBpbiBjYXNlIHJlZmVyZW5jZSBzeXN0ZW0gdHN0YW1wIGlzIHJlcG9ydGVkIHdpdGggZGVsYXkgKi8KKy0JX191MzIgYXVkaW9fdHN0YW1wX2FjY3VyYWN5OwkvKiBpbiBucyB1bml0cywgb25seSB2YWxpZCBpZiBpbmRpY2F0ZWQgaW4gYXVkaW9fdHN0YW1wX2RhdGEgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs1Mi0yKnNpemVvZihzdHJ1Y3QgdGltZXNwZWMpXTsgLyogbXVzdCBiZSBmaWxsZWQgd2l0aCB6ZXJvICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyB7CistCXNuZF9wY21fc3RhdGVfdCBzdGF0ZTsJCS8qIFJPOiBzdGF0ZSAtIFNORFJWX1BDTV9TVEFURV9YWFhYICovCistCWludCBwYWQxOwkJCS8qIE5lZWRlZCBmb3IgNjQgYml0IGFsaWdubWVudCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBod19wdHI7CS8qIFJPOiBodyBwdHIgKDAuLi5ib3VuZGFyeS0xKSAqLworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wICovCistCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIFJPOiBzdXNwZW5kZWQgc3RyZWFtIHN0YXRlICovCistCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIGZyb20gc2FtcGxlIGNvdW50ZXIgb3Igd2FsbCBjbG9jayAqLworLX07CistCistc3RydWN0IHNuZF9wY21fbW1hcF9jb250cm9sIHsKKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXBwbF9wdHI7CS8qIFJXOiBhcHBsIHB0ciAoMC4uLmJvdW5kYXJ5LTEpICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJLyogUlc6IG1pbiBhdmFpbGFibGUgZnJhbWVzIGZvciB3YWtldXAgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0hXU1lOQwkoMTw8MCkJLyogZXhlY3V0ZSBod3N5bmMgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9BUFBMCQkoMTw8MSkJLyogZ2V0IGFwcGxfcHRyIGZyb20gZHJpdmVyIChyL3cgb3ApICovCistI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfQVZBSUxfTUlOCSgxPDwyKQkvKiBnZXQgYXZhaWxfbWluIGZyb20gZHJpdmVyICovCistCistc3RydWN0IHNuZF9wY21fc3luY19wdHIgeworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CistCXVuaW9uIHsKKy0JCXN0cnVjdCBzbmRfcGNtX21tYXBfc3RhdHVzIHN0YXR1czsKKy0JCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOworLQl9IHM7CistCXVuaW9uIHsKKy0JCXN0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCBjb250cm9sOworLQkJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CistCX0gYzsKKy19OworLQorLXN0cnVjdCBzbmRfeGZlcmkgeworLQlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CistCXZvaWQgX191c2VyICpidWY7CistCXNuZF9wY21fdWZyYW1lc190IGZyYW1lczsKKy19OworLQorLXN0cnVjdCBzbmRfeGZlcm4geworLQlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CistCXZvaWQgX191c2VyICogX191c2VyICpidWZzOworLQlzbmRfcGNtX3VmcmFtZXNfdCBmcmFtZXM7CistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX0dFVFRJTUVPRkRBWSA9IDAsCS8qIGdldHRpbWVvZmRheSBlcXVpdmFsZW50ICovCistCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUMsCS8qIHBvc2l4X2Nsb2NrX21vbm90b25pYyBlcXVpdmFsZW50ICovCistCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUNfUkFXLCAgICAvKiBtb25vdG9uaWNfcmF3IChubyBOVFApICovCistCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9MQVNUID0gU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQ19SQVcsCistfTsKKy0KKy0vKiBjaGFubmVsIHBvc2l0aW9ucyAqLworLWVudW0geworLQlTTkRSVl9DSE1BUF9VTktOT1dOID0gMCwKKy0JU05EUlZfQ0hNQVBfTkEsCQkvKiBOL0EsIHNpbGVudCAqLworLQlTTkRSVl9DSE1BUF9NT05PLAkvKiBtb25vIHN0cmVhbSAqLworLQkvKiB0aGlzIGZvbGxvd3MgdGhlIGFsc2EtbGliIG1peGVyIGNoYW5uZWwgdmFsdWUgKyAzICovCistCVNORFJWX0NITUFQX0ZMLAkJLyogZnJvbnQgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9GUiwJCS8qIGZyb250IHJpZ2h0ICovCistCVNORFJWX0NITUFQX1JMLAkJLyogcmVhciBsZWZ0ICovCistCVNORFJWX0NITUFQX1JSLAkJLyogcmVhciByaWdodCAqLworLQlTTkRSVl9DSE1BUF9GQywJCS8qIGZyb250IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9MRkUsCS8qIExGRSAqLworLQlTTkRSVl9DSE1BUF9TTCwJCS8qIHNpZGUgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9TUiwJCS8qIHNpZGUgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfUkMsCQkvKiByZWFyIGNlbnRlciAqLworLQkvKiBuZXcgZGVmaW5pdGlvbnMgKi8KKy0JU05EUlZfQ0hNQVBfRkxDLAkvKiBmcm9udCBsZWZ0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9GUkMsCS8qIGZyb250IHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9STEMsCS8qIHJlYXIgbGVmdCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfUlJDLAkvKiByZWFyIHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9GTFcsCS8qIGZyb250IGxlZnQgd2lkZSAqLworLQlTTkRSVl9DSE1BUF9GUlcsCS8qIGZyb250IHJpZ2h0IHdpZGUgKi8KKy0JU05EUlZfQ0hNQVBfRkxILAkvKiBmcm9udCBsZWZ0IGhpZ2ggKi8KKy0JU05EUlZfQ0hNQVBfRkNILAkvKiBmcm9udCBjZW50ZXIgaGlnaCAqLworLQlTTkRSVl9DSE1BUF9GUkgsCS8qIGZyb250IHJpZ2h0IGhpZ2ggKi8KKy0JU05EUlZfQ0hNQVBfVEMsCQkvKiB0b3AgY2VudGVyICovCistCVNORFJWX0NITUFQX1RGTCwJLyogdG9wIGZyb250IGxlZnQgKi8KKy0JU05EUlZfQ0hNQVBfVEZSLAkvKiB0b3AgZnJvbnQgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfVEZDLAkvKiB0b3AgZnJvbnQgY2VudGVyICovCistCVNORFJWX0NITUFQX1RSTCwJLyogdG9wIHJlYXIgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9UUlIsCS8qIHRvcCByZWFyIHJpZ2h0ICovCistCVNORFJWX0NITUFQX1RSQywJLyogdG9wIHJlYXIgY2VudGVyICovCistCS8qIG5ldyBkZWZpbml0aW9ucyBmb3IgVUFDMiAqLworLQlTTkRSVl9DSE1BUF9URkxDLAkvKiB0b3AgZnJvbnQgbGVmdCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfVEZSQywJLyogdG9wIGZyb250IHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9UU0wsCS8qIHRvcCBzaWRlIGxlZnQgKi8KKy0JU05EUlZfQ0hNQVBfVFNSLAkvKiB0b3Agc2lkZSByaWdodCAqLworLQlTTkRSVl9DSE1BUF9MTEZFLAkvKiBsZWZ0IExGRSAqLworLQlTTkRSVl9DSE1BUF9STEZFLAkvKiByaWdodCBMRkUgKi8KKy0JU05EUlZfQ0hNQVBfQkMsCQkvKiBib3R0b20gY2VudGVyICovCistCVNORFJWX0NITUFQX0JMQywJLyogYm90dG9tIGxlZnQgY2VudGVyICovCistCVNORFJWX0NITUFQX0JSQywJLyogYm90dG9tIHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9MQVNUID0gU05EUlZfQ0hNQVBfQlJDLAorLX07CistCistI2RlZmluZSBTTkRSVl9DSE1BUF9QT1NJVElPTl9NQVNLCTB4ZmZmZgorLSNkZWZpbmUgU05EUlZfQ0hNQVBfUEhBU0VfSU5WRVJTRQkoMHgwMSA8PCAxNikKKy0jZGVmaW5lIFNORFJWX0NITUFQX0RSSVZFUl9TUEVDCQkoMHgwMiA8PCAxNikKKy0KKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QVkVSU0lPTglfSU9SKCdBJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0lORk8JCV9JT1IoJ0EnLCAweDAxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1RTVEFNUAkJX0lPVygnQScsIDB4MDIsIGludCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9UVFNUQU1QCQlfSU9XKCdBJywgMHgwMywgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VTRVJfUFZFUlNJT04JX0lPVygnQScsIDB4MDQsIGludCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19SRUZJTkUJX0lPV1IoJ0EnLCAweDEwLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfUEFSQU1TCV9JT1dSKCdBJywgMHgxMSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX0ZSRUUJCV9JTygnQScsIDB4MTIpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1dfUEFSQU1TCV9JT1dSKCdBJywgMHgxMywgc3RydWN0IHNuZF9wY21fc3dfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVUwkJX0lPUignQScsIDB4MjAsIHN0cnVjdCBzbmRfcGNtX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9ERUxBWQkJX0lPUignQScsIDB4MjEsIHNuZF9wY21fc2ZyYW1lc190KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXU1lOQwkJX0lPKCdBJywgMHgyMikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TWU5DX1BUUglfSU9XUignQScsIDB4MjMsIHN0cnVjdCBzbmRfcGNtX3N5bmNfcHRyKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVU19FWFQJX0lPV1IoJ0EnLCAweDI0LCBzdHJ1Y3Qgc25kX3BjbV9zdGF0dXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfQ0hBTk5FTF9JTkZPCV9JT1IoJ0EnLCAweDMyLCBzdHJ1Y3Qgc25kX3BjbV9jaGFubmVsX2luZm8pCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUFJFUEFSRQkJX0lPKCdBJywgMHg0MCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVNFVAkJX0lPKCdBJywgMHg0MSkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFSVAkJX0lPKCdBJywgMHg0MikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9EUk9QCQlfSU8oJ0EnLCAweDQzKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RSQUlOCQlfSU8oJ0EnLCAweDQ0KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BBVVNFCQlfSU9XKCdBJywgMHg0NSwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFV0lORAkJX0lPVygnQScsIDB4NDYsIHNuZF9wY21fdWZyYW1lc190KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFU1VNRQkJX0lPKCdBJywgMHg0NykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9YUlVOCQlfSU8oJ0EnLCAweDQ4KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0ZPUldBUkQJCV9JT1coJ0EnLCAweDQ5LCBzbmRfcGNtX3VmcmFtZXNfdCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURUlfRlJBTUVTCV9JT1coJ0EnLCAweDUwLCBzdHJ1Y3Qgc25kX3hmZXJpKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQURJX0ZSQU1FUwlfSU9SKCdBJywgMHg1MSwgc3RydWN0IHNuZF94ZmVyaSkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURU5fRlJBTUVTCV9JT1coJ0EnLCAweDUyLCBzdHJ1Y3Qgc25kX3hmZXJuKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQUROX0ZSQU1FUwlfSU9SKCdBJywgMHg1Mywgc3RydWN0IHNuZF94ZmVybikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9MSU5LCQlfSU9XKCdBJywgMHg2MCwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VOTElOSwkJX0lPKCdBJywgMHg2MSkKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSURJIHYxLjAgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistLyoKKy0gKiAgUmF3IE1JREkgc2VjdGlvbiAtIC9kZXYvc25kL21pZGk/PworLSAqLworLQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDApCistCistZW51bSB7CistCVNORFJWX1JBV01JRElfU1RSRUFNX09VVFBVVCA9IDAsCistCVNORFJWX1JBV01JRElfU1RSRUFNX0lOUFVULAorLQlTTkRSVl9SQVdNSURJX1NUUkVBTV9MQVNUID0gU05EUlZfUkFXTUlESV9TVFJFQU1fSU5QVVQsCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19PVVRQVVQJCTB4MDAwMDAwMDEKKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19JTlBVVAkJMHgwMDAwMDAwMgorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX0RVUExFWAkJMHgwMDAwMDAwNAorLQorLXN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogZGV2aWNlIG51bWJlciAqLworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdWJkZXZpY2UgbnVtYmVyICovCistCWludCBzdHJlYW07CQkJLyogV1I6IHN0cmVhbSAqLworLQlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBTTkRSVl9SQVdNSURJX0lORk9fWFhYWCAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBuYW1lIG9mIGRldmljZSAqLworLQl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBuYW1lIG9mIGFjdGl2ZSBvciBzZWxlY3RlZCBzdWJkZXZpY2UgKi8KKy0JdW5zaWduZWQgaW50IHN1YmRldmljZXNfY291bnQ7CistCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2F2YWlsOworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLXN0cnVjdCBzbmRfcmF3bWlkaV9wYXJhbXMgeworLQlpbnQgc3RyZWFtOworLQlzaXplX3QgYnVmZmVyX3NpemU7CQkvKiBxdWV1ZSBzaXplIGluIGJ5dGVzICovCistCXNpemVfdCBhdmFpbF9taW47CQkvKiBtaW5pbXVtIGF2YWlsIGJ5dGVzIGZvciB3YWtldXAgKi8KKy0JdW5zaWduZWQgaW50IG5vX2FjdGl2ZV9zZW5zaW5nOiAxOyAvKiBkbyBub3Qgc2VuZCBhY3RpdmUgc2Vuc2luZyBieXRlIGluIGNsb3NlKCkgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzIHsKKy0JaW50IHN0cmVhbTsKKy0Jc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAqLworLQlzaXplX3QgYXZhaWw7CQkJLyogYXZhaWxhYmxlIGJ5dGVzICovCistCXNpemVfdCB4cnVuczsJCQkvKiBjb3VudCBvZiBvdmVycnVucyBzaW5jZSBsYXN0IHN0YXR1cyAoaW4gYnl0ZXMpICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1cnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0lORk8JX0lPUignVycsIDB4MDEsIHN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvKQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9QQVJBTVMJX0lPV1IoJ1cnLCAweDEwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9TVEFUVVMJX0lPV1IoJ1cnLCAweDIwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9EUk9QCV9JT1coJ1cnLCAweDMwLCBpbnQpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0RSQUlOCV9JT1coJ1cnLCAweDMxLCBpbnQpCistCistLyoKKy0gKiAgVGltZXIgc2VjdGlvbiAtIC9kZXYvc25kL3RpbWVyCistICovCistCistI2RlZmluZSBTTkRSVl9USU1FUl9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDYpCistCistZW51bSB7CistCVNORFJWX1RJTUVSX0NMQVNTX05PTkUgPSAtMSwKKy0JU05EUlZfVElNRVJfQ0xBU1NfU0xBVkUgPSAwLAorLQlTTkRSVl9USU1FUl9DTEFTU19HTE9CQUwsCistCVNORFJWX1RJTUVSX0NMQVNTX0NBUkQsCistCVNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKy0JU05EUlZfVElNRVJfQ0xBU1NfTEFTVCA9IFNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKy19OworLQorLS8qIHNsYXZlIHRpbWVyIGNsYXNzZXMgKi8KKy1lbnVtIHsKKy0JU05EUlZfVElNRVJfU0NMQVNTX05PTkUgPSAwLAorLQlTTkRSVl9USU1FUl9TQ0xBU1NfQVBQTElDQVRJT04sCistCVNORFJWX1RJTUVSX1NDTEFTU19TRVFVRU5DRVIsCQkvKiBhbGlhcyAqLworLQlTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwJLyogYWxpYXMgKi8KKy0JU05EUlZfVElNRVJfU0NMQVNTX0xBU1QgPSBTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwKKy19OworLQorLS8qIGdsb2JhbCB0aW1lcnMgKGRldmljZSBtZW1iZXIpICovCistI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfU1lTVEVNCTAKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9SVEMJCTEJLyogdW51c2VkICovCistI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfSFBFVAkJMgorLSNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX0hSVElNRVIJMworLQorLS8qIGluZm8gZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0ZMR19TTEFWRQkJKDE8PDApCS8qIGNhbm5vdCBiZSBjb250cm9sbGVkICovCistCistc3RydWN0IHNuZF90aW1lcl9pZCB7CistCWludCBkZXZfY2xhc3M7CistCWludCBkZXZfc2NsYXNzOworLQlpbnQgY2FyZDsKKy0JaW50IGRldmljZTsKKy0JaW50IHN1YmRldmljZTsKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfZ2luZm8geworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKy0JaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdGlvbiAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogdGltZXIgbmFtZSAqLworLQl1bnNpZ25lZCBsb25nIHJlc2VydmVkMDsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBhdmVyYWdlIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9taW47CS8qIG1pbmltYWwgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX21heDsJLyogbWF4aW1hbCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBpbnQgY2xpZW50czsJCS8qIGFjdGl2ZSB0aW1lciBjbGllbnRzICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworLX07CistCistc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zIHsKKy0Jc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworLQl1bnNpZ25lZCBsb25nIHBlcmlvZF9udW07CS8qIHJlcXVlc3RlZCBwcmVjaXNlIHBlcmlvZCBkdXJhdGlvbiAoaW4gc2Vjb25kcykgLSBudW1lcmF0b3IgKi8KKy0JdW5zaWduZWQgbG9uZyBwZXJpb2RfZGVuOwkvKiByZXF1ZXN0ZWQgcHJlY2lzZSBwZXJpb2QgZHVyYXRpb24gKGluIHNlY29uZHMpIC0gZGVub21pbmF0b3IgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX2dzdGF0dXMgeworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbnVtOwkvKiBwcmVjaXNlIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gKGluIHNlY29uZHMpIC0gbnVtZXJhdG9yICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9kZW47CS8qIHByZWNpc2UgY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiAoaW4gc2Vjb25kcykgLSBkZW5vbWluYXRvciAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfc2VsZWN0IHsKKy0Jc3RydWN0IHNuZF90aW1lcl9pZCBpZDsJLyogYmluZCB0byB0aW1lciBJRCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsJLyogcmVzZXJ2ZWQgKi8KKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfaW5mbyB7CistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKy0JaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdG9yICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiB0aW1lciBuYW1lICovCistCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQwOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGF2ZXJhZ2UgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0FVVE8JCSgxPDwwKQkvKiBhdXRvIHN0YXJ0LCBvdGhlcndpc2Ugb25lLXNob3QgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0VYQ0xVU0lWRQkoMTw8MSkJLyogZXhjbHVzaXZlIHVzZSwgcHJlY2lzZSBzdGFydC9zdG9wL3BhdXNlL2NvbnRpbnVlICovCistI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19FQVJMWV9FVkVOVAkoMTw8MikJLyogd3JpdGUgZWFybHkgZXZlbnQgdG8gdGhlIHBvbGwgcXVldWUgKi8KKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcyB7CistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIGZsYWdzIC0gU05EUlZfVElNRVJfUFNGTEdfKiAqLworLQl1bnNpZ25lZCBpbnQgdGlja3M7CQkvKiByZXF1ZXN0ZWQgcmVzb2x1dGlvbiBpbiB0aWNrcyAqLworLQl1bnNpZ25lZCBpbnQgcXVldWVfc2l6ZTsJLyogdG90YWwgc2l6ZSBvZiBxdWV1ZSAoMzItMTAyNCkgKi8KKy0JdW5zaWduZWQgaW50IHJlc2VydmVkMDsJCS8qIHJlc2VydmVkLCB3YXM6IGZhaWx1cmUgbG9jYXRpb25zICovCistCXVuc2lnbmVkIGludCBmaWx0ZXI7CQkvKiBldmVudCBmaWx0ZXIgKGJpdG1hc2sgb2YgU05EUlZfVElNRVJfRVZFTlRfKikgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2MF07CS8qIHJlc2VydmVkICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3N0YXR1cyB7CistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgLSBsYXN0IHVwZGF0ZSAqLworLQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBpbnQgbG9zdDsJCS8qIGNvdW50ZXIgb2YgbWFzdGVyIHRpY2sgbG9zdCAqLworLQl1bnNpZ25lZCBpbnQgb3ZlcnJ1bjsJCS8qIGNvdW50IG9mIHJlYWQgcXVldWUgb3ZlcnJ1bnMgKi8KKy0JdW5zaWduZWQgaW50IHF1ZXVlOwkJLyogdXNlZCBxdWV1ZSBzaXplICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCAqLworLX07CistCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QVkVSU0lPTglfSU9SKCdUJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfTkVYVF9ERVZJQ0UJX0lPV1IoJ1QnLCAweDAxLCBzdHJ1Y3Qgc25kX3RpbWVyX2lkKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfVFJFQUQJCV9JT1coJ1QnLCAweDAyLCBpbnQpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HSU5GTwkJX0lPV1IoJ1QnLCAweDAzLCBzdHJ1Y3Qgc25kX3RpbWVyX2dpbmZvKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1BBUkFNUwlfSU9XKCdUJywgMHgwNCwgc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1NUQVRVUwlfSU9XUignVCcsIDB4MDUsIHN0cnVjdCBzbmRfdGltZXJfZ3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NFTEVDVAlfSU9XKCdUJywgMHgxMCwgc3RydWN0IHNuZF90aW1lcl9zZWxlY3QpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9JTkZPCQlfSU9SKCdUJywgMHgxMSwgc3RydWN0IHNuZF90aW1lcl9pbmZvKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUEFSQU1TCV9JT1coJ1QnLCAweDEyLCBzdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcykKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVRVUwlfSU9SKCdUJywgMHgxNCwgc3RydWN0IHNuZF90aW1lcl9zdGF0dXMpCistLyogVGhlIGZvbGxvd2luZyBmb3VyIGlvY3RscyBhcmUgY2hhbmdlZCBzaW5jZSAxLjAuOSBkdWUgdG8gY29uZmxpY3Rpb24gKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVJUCQlfSU8oJ1QnLCAweGEwKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RPUAkJX0lPKCdUJywgMHhhMSkKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0NPTlRJTlVFCV9JTygnVCcsIDB4YTIpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QQVVTRQkJX0lPKCdUJywgMHhhMykKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3JlYWQgeworLQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsKKy0JdW5zaWduZWQgaW50IHRpY2tzOworLX07CistCistZW51bSB7CistCVNORFJWX1RJTUVSX0VWRU5UX1JFU09MVVRJT04gPSAwLAkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCistCVNORFJWX1RJTUVSX0VWRU5UX1RJQ0ssCQkJLyogdmFsID0gdGlja3MgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfU1RBUlQsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCistCVNORFJWX1RJTUVSX0VWRU5UX1NUT1AsCQkJLyogdmFsID0gMCAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9DT05USU5VRSwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfUEFVU0UsCQkvKiB2YWwgPSAwICovCistCVNORFJWX1RJTUVSX0VWRU5UX0VBUkxZLAkJLyogdmFsID0gMCwgZWFybHkgZXZlbnQgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCwJCS8qIHZhbCA9IDAgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FLAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworLQkvKiBtYXN0ZXIgdGltZXIgZXZlbnRzIGZvciBzbGF2ZSB0aW1lciBpbnN0YW5jZXMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfTVNUQVJUID0gU05EUlZfVElNRVJfRVZFTlRfU1RBUlQgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTVNUT1AgPSBTTkRSVl9USU1FUl9FVkVOVF9TVE9QICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01DT05USU5VRSA9IFNORFJWX1RJTUVSX0VWRU5UX0NPTlRJTlVFICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01QQVVTRSA9IFNORFJWX1RJTUVSX0VWRU5UX1BBVVNFICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01TVVNQRU5EID0gU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCArIDEwLAorLQlTTkRSVl9USU1FUl9FVkVOVF9NUkVTVU1FID0gU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FICsgMTAsCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3RyZWFkIHsKKy0JaW50IGV2ZW50OworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOworLQl1bnNpZ25lZCBpbnQgdmFsOworLX07CistCistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICBTZWN0aW9uIGZvciBkcml2ZXIgY29udHJvbCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9jb250cm9sPyAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDcpCistCistc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvIHsKKy0JaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKy0JaW50IHBhZDsJCQkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICh3YXMgdHlwZSkgKi8KKy0JdW5zaWduZWQgY2hhciBpZFsxNl07CQkvKiBJRCBvZiBjYXJkICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgZHJpdmVyWzE2XTsJLyogRHJpdmVyIG5hbWUgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lWzMyXTsJCS8qIFNob3J0IG5hbWUgb2Ygc291bmRjYXJkICovCistCXVuc2lnbmVkIGNoYXIgbG9uZ25hbWVbODBdOwkvKiBuYW1lICsgaW5mbyB0ZXh0IGFib3V0IHNvdW5kY2FyZCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkX1sxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKHdhcyBJRCBvZiBtaXhlcikgKi8KKy0JdW5zaWduZWQgY2hhciBtaXhlcm5hbWVbODBdOwkvKiB2aXN1YWwgbWl4ZXIgaWRlbnRpZmljYXRpb24gKi8KKy0JdW5zaWduZWQgY2hhciBjb21wb25lbnRzWzEyOF07CS8qIGNhcmQgY29tcG9uZW50cyAvIGZpbmUgaWRlbnRpZmljYXRpb24sIGRlbGltaXRlZCB3aXRoIG9uZSBzcGFjZSAoQUM5NyBldGMuLikgKi8KKy19OworLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfY3RsX2VsZW1fdHlwZV90OworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9OT05FCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAwKSAvKiBpbnZhbGlkICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JPT0xFQU4JKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDEpIC8qIGJvb2xlYW4gdHlwZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAyKSAvKiBpbnRlZ2VyIHR5cGUgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfRU5VTUVSQVRFRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMykgLyogZW51bWVyYXRlZCB0eXBlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JZVEVTCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA0KSAvKiBieXRlIGFycmF5ICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lFQzk1OAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNSkgLyogSUVDOTU4IChTL1BESUYpIHNldHVwICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI2NAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNikgLyogNjQtYml0IGludGVnZXIgdHlwZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9MQVNUCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjY0CistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9jdGxfZWxlbV9pZmFjZV90OworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfQ0FSRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDApIC8qIGdsb2JhbCBjb250cm9sICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9IV0RFUAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDEpIC8qIGhhcmR3YXJlIGRlcGVuZGVudCBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMikgLyogdmlydHVhbCBtaXhlciBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDMpIC8qIFBDTSBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1JBV01JREkJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA0KSAvKiBSYXdNaWRpIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfVElNRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA1KSAvKiB0aW1lciBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1NFUVVFTkNFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDYpIC8qIHNlcXVlbmNlciBjbGllbnQgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0xBU1QJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfU0VRVUVOQ0VSCistCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRAkJKDE8PDApCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfV1JJVEUJCSgxPDwxKQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURQkJKFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEfFNORFJWX0NUTF9FTEVNX0FDQ0VTU19XUklURSkKKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19WT0xBVElMRQkJKDE8PDIpCS8qIGNvbnRyb2wgdmFsdWUgbWF5IGJlIGNoYW5nZWQgd2l0aG91dCBhIG5vdGlmaWNhdGlvbiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RJTUVTVEFNUAkJKDE8PDMpCS8qIHdoZW4gd2FzIGNvbnRyb2wgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFECQkoMTw8NCkJLyogVExWIHJlYWQgaXMgcG9zc2libGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfV1JJVEUJCSgxPDw1KQkvKiBUTFYgd3JpdGUgaXMgcG9zc2libGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRFdSSVRFCShTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQUR8U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9XUklURSkKKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ09NTUFORAkoMTw8NikJLyogVExWIGNvbW1hbmQgaXMgcG9zc2libGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19JTkFDVElWRQkJKDE8PDgpCS8qIGNvbnRyb2wgZG9lcyBhY3R1YWxseSBub3RoaW5nLCBidXQgbWF5IGJlIHVwZGF0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19MT0NLCQkoMTw8OSkJLyogd3JpdGUgbG9jayAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX09XTkVSCQkoMTw8MTApCS8qIHdyaXRlIGxvY2sgb3duZXIgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ0FMTEJBQ0sJKDE8PDI4KQkvKiBrZXJuZWwgdXNlIGEgVExWIGNhbGxiYWNrICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVVNFUgkJKDE8PDI5KSAvKiB1c2VyIHNwYWNlIGVsZW1lbnQgKi8KKy0vKiBiaXRzIDMwIGFuZCAzMSBhcmUgb2Jzb2xldGVkIChmb3IgaW5kaXJlY3QgYWNjZXNzKSAqLworLQorLS8qIGZvciBmdXJ0aGVyIGRldGFpbHMgc2VlIHRoZSBBQ1BJIGFuZCBQQ0kgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2F0aW9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDAJCTB4MDAwMAkvKiBmdWxsIE9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDEJCTB4MDEwMAkvKiBwYXJ0aWFsIE9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDIJCTB4MDIwMAkvKiBwYXJ0aWFsIE9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDMJCTB4MDMwMAkvKiBPZmYgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EM2hvdAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDApCS8qIE9mZiwgd2l0aCBwb3dlciAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzY29sZAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDEpCS8qIE9mZiwgd2l0aG91dCBwb3dlciAqLworLQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU4JNDQKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIHsKKy0JdW5zaWduZWQgaW50IG51bWlkOwkJLyogbnVtZXJpYyBpZGVudGlmaWVyLCB6ZXJvID0gaW52YWxpZCAqLworLQlzbmRfY3RsX2VsZW1faWZhY2VfdCBpZmFjZTsJLyogaW50ZXJmYWNlIGlkZW50aWZpZXIgKi8KKy0JdW5zaWduZWQgaW50IGRldmljZTsJCS8qIGRldmljZS9jbGllbnQgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBzdWJkZXZpY2UgKHN1YnN0cmVhbSkgbnVtYmVyICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CQkvKiBBU0NJSSBuYW1lIG9mIGl0ZW0gKi8KKy0JdW5zaWduZWQgaW50IGluZGV4OwkJLyogaW5kZXggb2YgaXRlbSAqLworLX07CistCistc3RydWN0IHNuZF9jdGxfZWxlbV9saXN0IHsKKy0JdW5zaWduZWQgaW50IG9mZnNldDsJCS8qIFc6IGZpcnN0IGVsZW1lbnQgSUQgdG8gZ2V0ICovCistCXVuc2lnbmVkIGludCBzcGFjZTsJCS8qIFc6IGNvdW50IG9mIGVsZW1lbnQgSURzIHRvIGdldCAqLworLQl1bnNpZ25lZCBpbnQgdXNlZDsJCS8qIFI6IGNvdW50IG9mIGVsZW1lbnQgSURzIHNldCAqLworLQl1bnNpZ25lZCBpbnQgY291bnQ7CQkvKiBSOiBjb3VudCBvZiBhbGwgZWxlbWVudHMgKi8KKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBfX3VzZXIgKnBpZHM7IC8qIFI6IElEcyAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzUwXTsKKy19OworLQorLXN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyB7CistCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CS8qIFc6IGVsZW1lbnQgSUQgKi8KKy0Jc25kX2N0bF9lbGVtX3R5cGVfdCB0eXBlOwkvKiBSOiB2YWx1ZSB0eXBlIC0gU05EUlZfQ1RMX0VMRU1fVFlQRV8qICovCistCXVuc2lnbmVkIGludCBhY2Nlc3M7CQkvKiBSOiB2YWx1ZSBhY2Nlc3MgKGJpdG1hc2spIC0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTXyogKi8KKy0JdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgdmFsdWVzICovCistCV9fa2VybmVsX3BpZF90IG93bmVyOwkJLyogb3duZXIncyBQSUQgb2YgdGhpcyBjb250cm9sICovCistCXVuaW9uIHsKKy0JCXN0cnVjdCB7CistCQkJbG9uZyBtaW47CQkvKiBSOiBtaW5pbXVtIHZhbHVlICovCistCQkJbG9uZyBtYXg7CQkvKiBSOiBtYXhpbXVtIHZhbHVlICovCistCQkJbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKy0JCX0gaW50ZWdlcjsKKy0JCXN0cnVjdCB7CistCQkJbG9uZyBsb25nIG1pbjsJCS8qIFI6IG1pbmltdW0gdmFsdWUgKi8KKy0JCQlsb25nIGxvbmcgbWF4OwkJLyogUjogbWF4aW11bSB2YWx1ZSAqLworLQkJCWxvbmcgbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKy0JCX0gaW50ZWdlcjY0OworLQkJc3RydWN0IHsKKy0JCQl1bnNpZ25lZCBpbnQgaXRlbXM7CS8qIFI6IG51bWJlciBvZiBpdGVtcyAqLworLQkJCXVuc2lnbmVkIGludCBpdGVtOwkvKiBXOiBpdGVtIG51bWJlciAqLworLQkJCWNoYXIgbmFtZVs2NF07CQkvKiBSOiB2YWx1ZSBuYW1lICovCistCQkJX191NjQgbmFtZXNfcHRyOwkvKiBXOiBuYW1lcyBsaXN0IChFTEVNX0FERCBvbmx5KSAqLworLQkJCXVuc2lnbmVkIGludCBuYW1lc19sZW5ndGg7CistCQl9IGVudW1lcmF0ZWQ7CistCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyOF07CistCX0gdmFsdWU7CistCXVuaW9uIHsKKy0JCXVuc2lnbmVkIHNob3J0IGRbNF07CQkvKiBkaW1lbnNpb25zICovCistCQl1bnNpZ25lZCBzaG9ydCAqZF9wdHI7CQkvKiBpbmRpcmVjdCAtIG9ic29sZXRlZCAqLworLQl9IGRpbWVuOworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0LTQqc2l6ZW9mKHVuc2lnbmVkIHNob3J0KV07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJLyogVzogZWxlbWVudCBJRCAqLworLQl1bnNpZ25lZCBpbnQgaW5kaXJlY3Q6IDE7CS8qIFc6IGluZGlyZWN0IGFjY2VzcyAtIG9ic29sZXRlZCAqLworLQl1bmlvbiB7CistCQl1bmlvbiB7CistCQkJbG9uZyB2YWx1ZVsxMjhdOworLQkJCWxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCistCQl9IGludGVnZXI7CistCQl1bmlvbiB7CistCQkJbG9uZyBsb25nIHZhbHVlWzY0XTsKKy0JCQlsb25nIGxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCistCQl9IGludGVnZXI2NDsKKy0JCXVuaW9uIHsKKy0JCQl1bnNpZ25lZCBpbnQgaXRlbVsxMjhdOworLQkJCXVuc2lnbmVkIGludCAqaXRlbV9wdHI7CS8qIG9ic29sZXRlZCAqLworLQkJfSBlbnVtZXJhdGVkOworLQkJdW5pb24geworLQkJCXVuc2lnbmVkIGNoYXIgZGF0YVs1MTJdOworLQkJCXVuc2lnbmVkIGNoYXIgKmRhdGFfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKy0JCX0gYnl0ZXM7CistCQlzdHJ1Y3Qgc25kX2Flc19pZWM5NTggaWVjOTU4OworLQl9IHZhbHVlOwkJLyogUk8gKi8KKy0Jc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsKKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMjgtc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYyldOworLX07CistCistc3RydWN0IHNuZF9jdGxfdGx2IHsKKy0JdW5zaWduZWQgaW50IG51bWlkOwkvKiBjb250cm9sIGVsZW1lbnQgbnVtZXJpYyBpZGVudGlmaWNhdGlvbiAqLworLQl1bnNpZ25lZCBpbnQgbGVuZ3RoOwkvKiBpbiBieXRlcyBhbGlnbmVkIHRvIDQgKi8KKy0JdW5zaWduZWQgaW50IHRsdlswXTsJLyogZmlyc3QgVExWICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QVkVSU0lPTglfSU9SKCdVJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0NBUkRfSU5GTwlfSU9SKCdVJywgMHgwMSwgc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fTElTVAlfSU9XUignVScsIDB4MTAsIHN0cnVjdCBzbmRfY3RsX2VsZW1fbGlzdCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0lORk8JX0lPV1IoJ1UnLCAweDExLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRUFECV9JT1dSKCdVJywgMHgxMiwgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1dSSVRFCV9JT1dSKCdVJywgMHgxMywgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0xPQ0sJX0lPVygnVScsIDB4MTQsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9VTkxPQ0sJX0lPVygnVScsIDB4MTUsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfU1VCU0NSSUJFX0VWRU5UUyBfSU9XUignVScsIDB4MTYsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0FERAlfSU9XUignVScsIDB4MTcsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFUExBQ0UJX0lPV1IoJ1UnLCAweDE4LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRU1PVkUJX0lPV1IoJ1UnLCAweDE5LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9SRUFECV9JT1dSKCdVJywgMHgxYSwgc3RydWN0IHNuZF9jdGxfdGx2KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9XUklURQlfSU9XUignVScsIDB4MWIsIHN0cnVjdCBzbmRfY3RsX3RsdikKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfQ09NTUFORAlfSU9XUignVScsIDB4MWMsIHN0cnVjdCBzbmRfY3RsX3RsdikKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4MjAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9JTkZPCV9JT1IoJ1UnLCAweDIxLCBzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX05FWFRfREVWSUNFCV9JT1IoJ1UnLCAweDMwLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX0lORk8JX0lPV1IoJ1UnLCAweDMxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9QUkVGRVJfU1VCREVWSUNFIF9JT1coJ1UnLCAweDMyLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4NDAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX0lORk8JX0lPV1IoJ1UnLCAweDQxLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX1BSRUZFUl9TVUJERVZJQ0UgX0lPVygnVScsIDB4NDIsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QT1dFUgkJX0lPV1IoJ1UnLCAweGQwLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUE9XRVJfU1RBVEUJX0lPUignVScsIDB4ZDEsIGludCkKKy0KKy0vKgorLSAqICBSZWFkIGludGVyZmFjZS4KKy0gKi8KKy0KKy1lbnVtIHNuZHJ2X2N0bF9ldmVudF90eXBlIHsKKy0JU05EUlZfQ1RMX0VWRU5UX0VMRU0gPSAwLAorLQlTTkRSVl9DVExfRVZFTlRfTEFTVCA9IFNORFJWX0NUTF9FVkVOVF9FTEVNLAorLX07CistCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRQkoMTw8MCkJLyogZWxlbWVudCB2YWx1ZSB3YXMgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfSU5GTwkoMTw8MSkJLyogZWxlbWVudCBpbmZvIHdhcyBjaGFuZ2VkICovCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19BREQJKDE8PDIpCS8qIGVsZW1lbnQgd2FzIGFkZGVkICovCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19UTFYJKDE8PDMpCS8qIGVsZW1lbnQgVExWIHRyZWUgd2FzIGNoYW5nZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1JFTU9WRQkofjBVKQkvKiBlbGVtZW50IHdhcyByZW1vdmVkICovCistCistc3RydWN0IHNuZF9jdGxfZXZlbnQgeworLQlpbnQgdHlwZTsJLyogZXZlbnQgdHlwZSAtIFNORFJWX0NUTF9FVkVOVF8qICovCistCXVuaW9uIHsKKy0JCXN0cnVjdCB7CistCQkJdW5zaWduZWQgaW50IG1hc2s7CistCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsKKy0JCX0gZWxlbTsKKy0JCXVuc2lnbmVkIGNoYXIgZGF0YThbNjBdOworLQl9IGRhdGE7CistfTsKKy0KKy0vKgorLSAqICBDb250cm9sIG5hbWVzCistICovCistCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9OT05FCQkJCSIiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9QTEFZQkFDSwkJCQkiUGxheWJhY2sgIgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfQ0FQVFVSRQkJCQkiQ2FwdHVyZSAiCistCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfTk9ORQkJCSIiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfU1dJVENICQkJIlN3aXRjaCIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9WT0xVTUUJCQkiVm9sdW1lIgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X0RFRkFVTFQJCQkiRGVmYXVsdCIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9NQVNLCQkJIk1hc2siCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfQ09OX01BU0sJCQkiQ29uIE1hc2siCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUFJPX01BU0sJCQkiUHJvIE1hc2siCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUENNX1NUUkVBTQkJIlBDTSBTdHJlYW0iCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NTgoZXhwbCxkaXJlY3Rpb24sd2hhdCkJIklFQzk1OCAiIGV4cGwgU05EUlZfQ1RMX05BTUVfIyNkaXJlY3Rpb24gU05EUlZfQ1RMX05BTUVfSUVDOTU4XyMjd2hhdAorLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNPVU5EX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2Fzb3VuZC5oPgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmggYi9pbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oCitpbmRleCA4NDcxZjQwNC4uM2U1ZGE0ZDAgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oCitAQCAtMSwxMzUgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0jaWZuZGVmIF9fU09VTkRfQVNPVU5EX0ZNX0gKKy0jZGVmaW5lIF9fU09VTkRfQVNPVU5EX0ZNX0gKKy0KKy0vKgorLSAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBCistICoKKy0gKiAgSW50ZXJmYWNlIGZpbGUgYmV0d2VlbiBBTFNBIGRyaXZlciAmIHVzZXIgc3BhY2UKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk0LTk4IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgNEZyb250IFRlY2hub2xvZ2llcworLSAqCistICogIERpcmVjdCBGTSBjb250cm9sCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCistICoKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX01PREVfT1BMMgkweDAwCistI2RlZmluZSBTTkRSVl9ETV9GTV9NT0RFX09QTDMJMHgwMQorLQorLXN0cnVjdCBzbmRfZG1fZm1faW5mbyB7CistCXVuc2lnbmVkIGNoYXIgZm1fbW9kZTsJCS8qIE9QTCBtb2RlLCBzZWUgU05EUlZfRE1fRk1fTU9ERV9YWFggKi8KKy0JdW5zaWduZWQgY2hhciByaHl0aG07CQkvKiBwZXJjdXNzaW9uIG1vZGUgZmxhZyAqLworLX07CistCistLyoKKy0gKiAgRGF0YSBzdHJ1Y3R1cmUgY29tcG9zaW5nIGFuIEZNICJub3RlIiBvciBzb3VuZCBldmVudC4KKy0gKi8KKy0KKy1zdHJ1Y3Qgc25kX2RtX2ZtX3ZvaWNlIHsKKy0JdW5zaWduZWQgY2hhciBvcDsJCS8qIG9wZXJhdG9yIGNlbGwgKDAgb3IgMSkgKi8KKy0JdW5zaWduZWQgY2hhciB2b2ljZTsJCS8qIEZNIHZvaWNlICgwIHRvIDE3KSAqLworLQorLQl1bnNpZ25lZCBjaGFyIGFtOwkJLyogYW1wbGl0dWRlIG1vZHVsYXRpb24gKi8KKy0JdW5zaWduZWQgY2hhciB2aWJyYXRvOwkJLyogdmlicmF0byBlZmZlY3QgKi8KKy0JdW5zaWduZWQgY2hhciBkb19zdXN0YWluOwkvKiBzdXN0YWluIHBoYXNlICovCistCXVuc2lnbmVkIGNoYXIga2JkX3NjYWxlOwkvKiBrZXlib2FyZCBzY2FsaW5nICovCistCXVuc2lnbmVkIGNoYXIgaGFybW9uaWM7CQkvKiA0IGJpdHM6IGhhcm1vbmljIGFuZCBtdWx0aXBsaWVyICovCistCXVuc2lnbmVkIGNoYXIgc2NhbGVfbGV2ZWw7CS8qIDIgYml0czogZGVjcmVhc2Ugb3V0cHV0IGZyZXEgcmlzZXMgKi8KKy0JdW5zaWduZWQgY2hhciB2b2x1bWU7CQkvKiA2IGJpdHM6IHZvbHVtZSAqLworLQorLQl1bnNpZ25lZCBjaGFyIGF0dGFjazsJCS8qIDQgYml0czogYXR0YWNrIHJhdGUgKi8KKy0JdW5zaWduZWQgY2hhciBkZWNheTsJCS8qIDQgYml0czogZGVjYXkgcmF0ZSAqLworLQl1bnNpZ25lZCBjaGFyIHN1c3RhaW47CQkvKiA0IGJpdHM6IHN1c3RhaW4gbGV2ZWwgKi8KKy0JdW5zaWduZWQgY2hhciByZWxlYXNlOwkJLyogNCBiaXRzOiByZWxlYXNlIHJhdGUgKi8KKy0KKy0JdW5zaWduZWQgY2hhciBmZWVkYmFjazsJCS8qIDMgYml0czogZmVlZGJhY2sgZm9yIG9wMCAqLworLQl1bnNpZ25lZCBjaGFyIGNvbm5lY3Rpb247CS8qIDAgZm9yIHNlcmlhbCwgMSBmb3IgcGFyYWxsZWwgKi8KKy0JdW5zaWduZWQgY2hhciBsZWZ0OwkJLyogc3RlcmVvIGxlZnQgKi8KKy0JdW5zaWduZWQgY2hhciByaWdodDsJCS8qIHN0ZXJlbyByaWdodCAqLworLQl1bnNpZ25lZCBjaGFyIHdhdmVmb3JtOwkJLyogMyBiaXRzOiB3YXZlZm9ybSBzaGFwZSAqLworLX07CistCistLyoKKy0gKiAgVGhpcyBkZXNjcmliZXMgYW4gRk0gbm90ZSBieSBpdHMgdm9pY2UsIG9jdGF2ZSwgZnJlcXVlbmN5IG51bWJlciAoMTBiaXQpCistICogIGFuZCBrZXkgb24vb2ZmLgorLSAqLworLQorLXN0cnVjdCBzbmRfZG1fZm1fbm90ZSB7CistCXVuc2lnbmVkIGNoYXIgdm9pY2U7CS8qIDAtMTcgdm9pY2UgY2hhbm5lbCAqLworLQl1bnNpZ25lZCBjaGFyIG9jdGF2ZTsJLyogMyBiaXRzOiB3aGF0IG9jdGF2ZSB0byBwbGF5ICovCistCXVuc2lnbmVkIGludCBmbnVtOwkvKiAxMCBiaXRzOiBmcmVxdWVuY3kgbnVtYmVyICovCistCXVuc2lnbmVkIGNoYXIga2V5X29uOwkvKiBzZXQgZm9yIGFjdGl2ZSwgY2xlYXIgZm9yIHNpbGVudCAqLworLX07CistCistLyoKKy0gKiAgRk0gcGFyYW1ldGVycyB0aGF0IGFwcGx5IGdsb2JhbGx5IHRvIGFsbCB2b2ljZXMsIGFuZCB0aHVzIGFyZSBub3QgIm5vdGVzIgorLSAqLworLQorLXN0cnVjdCBzbmRfZG1fZm1fcGFyYW1zIHsKKy0JdW5zaWduZWQgY2hhciBhbV9kZXB0aDsJCS8qIGFtcGxpdHVkZSBtb2R1bGF0aW9uIGRlcHRoICgxPWhpKSAqLworLQl1bnNpZ25lZCBjaGFyIHZpYl9kZXB0aDsJLyogdmlicmF0byBkZXB0aCAoMT1oaSkgKi8KKy0JdW5zaWduZWQgY2hhciBrYmRfc3BsaXQ7CS8qIGtleWJvYXJkIHNwbGl0ICovCistCXVuc2lnbmVkIGNoYXIgcmh5dGhtOwkJLyogcGVyY3Vzc2lvbiBtb2RlIHNlbGVjdCAqLworLQorLQkvKiBUaGlzIGJsb2NrIGlzIHRoZSBwZXJjdXNzaW9uIGluc3RydW1lbnQgZGF0YSAqLworLQl1bnNpZ25lZCBjaGFyIGJhc3M7CistCXVuc2lnbmVkIGNoYXIgc25hcmU7CistCXVuc2lnbmVkIGNoYXIgdG9tdG9tOworLQl1bnNpZ25lZCBjaGFyIGN5bWJhbDsKKy0JdW5zaWduZWQgY2hhciBoaWhhdDsKKy19OworLQorLS8qCistICogIEZNIG1vZGUgaW9jdGwgc2V0dGluZ3MKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDIwLCBzdHJ1Y3Qgc25kX2RtX2ZtX2luZm8pCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9SRVNFVAkJX0lPICgnSCcsIDB4MjEpCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9QTEFZX05PVEUJX0lPVygnSCcsIDB4MjIsIHN0cnVjdCBzbmRfZG1fZm1fbm90ZSkKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9WT0lDRQlfSU9XKCdIJywgMHgyMywgc3RydWN0IHNuZF9kbV9mbV92b2ljZSkKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9QQVJBTVMJX0lPVygnSCcsIDB4MjQsIHN0cnVjdCBzbmRfZG1fZm1fcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX01PREUJX0lPVygnSCcsIDB4MjUsIGludCkKKy0vKiBmb3IgT1BMMyBvbmx5ICovCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfQ09OTkVDVElPTglfSU9XKCdIJywgMHgyNiwgaW50KQorLS8qIFNCSSBwYXRjaCBtYW5hZ2VtZW50ICovCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9DTEVBUl9QQVRDSEVTCV9JTyAoJ0gnLCAweDQwKQorLQorLSNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1JFU0VUCQkweDIwCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfUExBWV9OT1RFCQkweDIxCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1ZPSUNFCQkweDIyCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1BBUkFNUwkweDIzCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX01PREUJCTB4MjQKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfT1BMCQkweDI1CistCistLyoKKy0gKiBQYXRjaCBSZWNvcmQgLSBmaXhlZCBzaXplIGZvciB3cml0ZQorLSAqLworLQorLSNkZWZpbmUgRk1fS0VZX1NCSQkiU0JJXDAzMiIKKy0jZGVmaW5lIEZNX0tFWV8yT1AJIjJPUFwwMzIiCistI2RlZmluZSBGTV9LRVlfNE9QCSI0T1BcMDMyIgorLQorLXN0cnVjdCBzYmlfcGF0Y2ggeworLQl1bnNpZ25lZCBjaGFyIHByb2c7CistCXVuc2lnbmVkIGNoYXIgYmFuazsKKy0JY2hhciBrZXlbNF07CistCWNoYXIgbmFtZVsyNV07CistCWNoYXIgZXh0ZW5zaW9uWzddOworLQl1bnNpZ25lZCBjaGFyIGRhdGFbMzJdOworLX07CistCistI2VuZGlmIC8qIF9fU09VTkRfQVNPVU5EX0ZNX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oPgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKK2luZGV4IDA0MmM1YTZmLi5mMDZlY2VlNSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAorQEAgLTEsMzgxICsxLDIgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBDb3B5cmlnaHQgKGMpIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorLSAqCQkgICAgIENyZWF0aXZlIExhYnMsIEluYy4KKy0gKiAgRGVmaW5pdGlvbnMgZm9yIEVNVTEwSzEgKFNCIExpdmUhKSBjaGlwcworLSAqCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCistICoKKy0gKi8KKy0jaWZuZGVmIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKy0jZGVmaW5lIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKy0KKy0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CistCistLyoKKy0gKiAtLS0tIEZYODAxMCAtLS0tCistICovCistCistI2RlZmluZSBFTVUxMEsxX0NBUkRfQ1JFQVRJVkUJCQkweDAwMDAwMDAwCistI2RlZmluZSBFTVUxMEsxX0NBUkRfRU1VQVBTCQkJMHgwMDAwMDAwMQorLQorLSNkZWZpbmUgRU1VMTBLMV9GWDgwMTBfUENNX0NPVU5UCQk4CistCistLyoKKy0gKiBGb2xsb3dpbmcgZGVmaW5pdGlvbiBpcyBjb3BpZWQgZnJvbSBsaW51eC90eXBlcy5oIHRvIHN1cHBvcnQgY29tcGlsaW5nCistICogdGhpcyBoZWFkZXIgZmlsZSBpbiB1c2Vyc3BhY2Ugc2luY2UgdGhleSBhcmUgbm90IGdlbmVyYWxseSBhdmFpbGFibGUgZm9yCistICogdWFwaSBoZWFkZXJzLgorLSAqLworLSNkZWZpbmUgX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKG5hbWUsYml0cykgXAorLQl1bnNpZ25lZCBsb25nIG5hbWVbKGJpdHMpIC8gKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgpXQorLQorLS8qIGluc3RydWN0aW9uIHNldCAqLworLSNkZWZpbmUgaU1BQzAJIDB4MDAJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpTUFDMQkgMHgwMQkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHNhdHVyYXRpb24gKi8KKy0jZGVmaW5lIGlNQUMyCSAweDAyCS8qIFIgPSBBICsgKFggKiBZID4+IDMxKSAgIDsgd3JhcGFyb3VuZCAqLworLSNkZWZpbmUgaU1BQzMJIDB4MDMJLyogUiA9IEEgKyAoLVggKiBZID4+IDMxKSAgOyB3cmFwYXJvdW5kICovCistI2RlZmluZSBpTUFDSU5UMCAweDA0CS8qIFIgPSBBICsgWCAqIFkJICAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpTUFDSU5UMSAweDA1CS8qIFIgPSBBICsgWCAqIFkJICAgOyB3cmFwYXJvdW5kICgzMS1iaXQpICovCistI2RlZmluZSBpQUNDMwkgMHgwNgkvKiBSID0gQSArIFggKyBZCSAgIDsgc2F0dXJhdGlvbiAqLworLSNkZWZpbmUgaU1BQ01WICAgMHgwNwkvKiBSID0gQSwgYWNjICs9IFggKiBZID4+IDMxICovCistI2RlZmluZSBpQU5EWE9SICAweDA4CS8qIFIgPSAoQSAmIFgpIF4gWSAqLworLSNkZWZpbmUgaVRTVE5FRyAgMHgwOQkvKiBSID0gKEEgPj0gWSkgPyBYIDogflggKi8KKy0jZGVmaW5lIGlMSU1JVEdFIDB4MGEJLyogUiA9IChBID49IFkpID8gWCA6IFkgKi8KKy0jZGVmaW5lIGlMSU1JVExUIDB4MGIJLyogUiA9IChBIDwgWSkgPyBYIDogWSAqLworLSNkZWZpbmUgaUxPRwkgMHgwYwkvKiBSID0gbGluZWFyX2RhdGEsIEEgKGxvZ19kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworLSNkZWZpbmUgaUVYUAkgMHgwZAkvKiBSID0gbG9nX2RhdGEsIEEgKGxpbmVhcl9kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworLSNkZWZpbmUgaUlOVEVSUCAgMHgwZQkvKiBSID0gQSArIChYICogKFkgLSBBKSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworLSNkZWZpbmUgaVNLSVAgICAgMHgwZgkvKiBSID0gQSAoY2NfcmVnKSwgWCAoY291bnQpLCBZIChjY190ZXN0KSAqLworLQorLS8qIEdQUnMgKi8KKy0jZGVmaW5lIEZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKy0jZGVmaW5lIEVYVElOKHgpCSgweDEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKy0jZGVmaW5lIEVYVE9VVCh4KQkoMHgyMCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIG91dHMgLT4gRlhXQyBsb3cgMTYgYml0cyAqLworLSNkZWZpbmUgRlhCVVMyKHgpCSgweDMwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgY29waWVzIG9mIGZ4IGJ1c2VzIGZvciBjYXB0dXJlIC0+IEZYV0MgaGlnaCAxNiBiaXRzICovCistCQkJCQkvKiBOQjogMHgzMSBhbmQgMHgzMiBhcmUgc2hhcmVkIHdpdGggQ2VudGVyL0xGRSBvbiBTQiBsaXZlIDUuMSAqLworLQorLSNkZWZpbmUgQ18wMDAwMDAwMAkweDQwCistI2RlZmluZSBDXzAwMDAwMDAxCTB4NDEKKy0jZGVmaW5lIENfMDAwMDAwMDIJMHg0MgorLSNkZWZpbmUgQ18wMDAwMDAwMwkweDQzCistI2RlZmluZSBDXzAwMDAwMDA0CTB4NDQKKy0jZGVmaW5lIENfMDAwMDAwMDgJMHg0NQorLSNkZWZpbmUgQ18wMDAwMDAxMAkweDQ2CistI2RlZmluZSBDXzAwMDAwMDIwCTB4NDcKKy0jZGVmaW5lIENfMDAwMDAxMDAJMHg0OAorLSNkZWZpbmUgQ18wMDAxMDAwMAkweDQ5CistI2RlZmluZSBDXzAwMDgwMDAwCTB4NGEKKy0jZGVmaW5lIENfMTAwMDAwMDAJMHg0YgorLSNkZWZpbmUgQ18yMDAwMDAwMAkweDRjCistI2RlZmluZSBDXzQwMDAwMDAwCTB4NGQKKy0jZGVmaW5lIENfODAwMDAwMDAJMHg0ZQorLSNkZWZpbmUgQ183ZmZmZmZmZgkweDRmCistI2RlZmluZSBDX2ZmZmZmZmZmCTB4NTAKKy0jZGVmaW5lIENfZmZmZmZmZmUJMHg1MQorLSNkZWZpbmUgQ19jMDAwMDAwMAkweDUyCistI2RlZmluZSBDXzRmMWJiY2RjCTB4NTMKKy0jZGVmaW5lIENfNWE3ZWY5ZGIJMHg1NAorLSNkZWZpbmUgQ18wMDEwMDAwMAkweDU1CQkvKiA/PyAqLworLSNkZWZpbmUgR1BSX0FDQ1UJMHg1NgkJLyogQUNDVU0sIGFjY3VtdWxhdG9yICovCistI2RlZmluZSBHUFJfQ09ORAkweDU3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworLSNkZWZpbmUgR1BSX05PSVNFMAkweDU4CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEdQUl9OT0lTRTEJMHg1OQkJLyogbm9pc2Ugc291cmNlICovCistI2RlZmluZSBHUFJfSVJRCQkweDVhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEdQUl9EQkFDCTB4NWIJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgKi8KKy0jZGVmaW5lIEdQUih4KQkJKEZYR1BSRUdCQVNFICsgKHgpKSAvKiBmcmVlIEdQUnM6IHggPSAweDAwIC0gMHhmZiAqLworLSNkZWZpbmUgSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCistI2RlZmluZSBFVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKy0jZGVmaW5lIElUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHg3ZiAqLworLSNkZWZpbmUgRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHg4MCArICh4KSkgLyogeCA9IDB4MDAgLSAweDFmICovCistCistI2RlZmluZSBBX0lUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworLSNkZWZpbmUgQV9FVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKy0jZGVmaW5lIEFfSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCistI2RlZmluZSBBX0VUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworLSNkZWZpbmUgQV9JVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKy0jZGVmaW5lIEFfRVRSQU1fQ1RMKHgpCShBX1RBTktNRU1DVExSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCistCistI2RlZmluZSBBX0ZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgRlggYnVzZXMgKi8KKy0jZGVmaW5lIEFfRVhUSU4oeCkJKDB4NDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwaHlzaWNhbCBpbnMgKi8KKy0jZGVmaW5lIEFfUDE2VklOKHgpCSgweDUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcDE2diBpbnMgKEEyIG9ubHkpICJFTVUzMiBpbnB1dHMiICovCistI2RlZmluZSBBX0VYVE9VVCh4KQkoMHg2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIHBoeXNpY2FsIG91dHMgLT4gQV9GWFdDMSAweDc5LTdmIHVua25vd24gICAqLworLSNkZWZpbmUgQV9GWEJVUzIoeCkJKDB4ODAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgxZiBleHRyYSBvdXRzIHVzZWQgZm9yIEVGWCBjYXB0dXJlIC0+IEFfRlhXQzIgKi8KKy0jZGVmaW5lIEFfRU1VMzJPVVRIKHgpCSgweGEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xMCAtIF8xRiIgLSA/Pz8gKi8KKy0jZGVmaW5lIEFfRU1VMzJPVVRMKHgpCSgweGIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xIC0gX0YiIC0gPz8/ICovCistI2RlZmluZSBBM19FTVUzMklOKHgpCSgweDE2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDNmICJFTVUzMl9JTl8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworLSNkZWZpbmUgQTNfRU1VMzJPVVQoeCkJKDB4MUUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworLSNkZWZpbmUgQV9HUFIoeCkJKEFfRlhHUFJFR0JBU0UgKyAoeCkpCistCistLyogY2NfcmVnIGNvbnN0YW50cyAqLworLSNkZWZpbmUgQ0NfUkVHX05PUk1BTElaRUQgQ18wMDAwMDAwMQorLSNkZWZpbmUgQ0NfUkVHX0JPUlJPVwlDXzAwMDAwMDAyCistI2RlZmluZSBDQ19SRUdfTUlOVVMJQ18wMDAwMDAwNAorLSNkZWZpbmUgQ0NfUkVHX1pFUk8JQ18wMDAwMDAwOAorLSNkZWZpbmUgQ0NfUkVHX1NBVFVSQVRFCUNfMDAwMDAwMTAKKy0jZGVmaW5lIENDX1JFR19OT05aRVJPCUNfMDAwMDAxMDAKKy0KKy0vKiBGWCBidXNlcyAqLworLSNkZWZpbmUgRlhCVVNfUENNX0xFRlQJCTB4MDAKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVAkJMHgwMQorLSNkZWZpbmUgRlhCVVNfUENNX0xFRlRfUkVBUgkweDAyCistI2RlZmluZSBGWEJVU19QQ01fUklHSFRfUkVBUgkweDAzCistI2RlZmluZSBGWEJVU19NSURJX0xFRlQJCTB4MDQKKy0jZGVmaW5lIEZYQlVTX01JRElfUklHSFQJMHgwNQorLSNkZWZpbmUgRlhCVVNfUENNX0NFTlRFUgkweDA2CistI2RlZmluZSBGWEJVU19QQ01fTEZFCQkweDA3CistI2RlZmluZSBGWEJVU19QQ01fTEVGVF9GUk9OVAkweDA4CistI2RlZmluZSBGWEJVU19QQ01fUklHSFRfRlJPTlQJMHgwOQorLSNkZWZpbmUgRlhCVVNfTUlESV9SRVZFUkIJMHgwYworLSNkZWZpbmUgRlhCVVNfTUlESV9DSE9SVVMJMHgwZAorLSNkZWZpbmUgRlhCVVNfUENNX0xFRlRfU0lERQkweDBlCistI2RlZmluZSBGWEJVU19QQ01fUklHSFRfU0lERQkweDBmCistI2RlZmluZSBGWEJVU19QVF9MRUZUCQkweDE0CistI2RlZmluZSBGWEJVU19QVF9SSUdIVAkJMHgxNQorLQorLS8qIElucHV0cyAqLworLSNkZWZpbmUgRVhUSU5fQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fQUM5N19SCSAgIDB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX1NQRElGX0NEX0wgICAweDAyCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9TUERJRl9DRF9SICAgMHgwMwkvKiBpbnRlcm5hbCBTL1BESUYgQ0QgLSBvbmJvYXJkIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX1pPT01fTAkgICAweDA0CS8qIFpvb20gVmlkZW8gSTJTIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fWk9PTV9SCSAgIDB4MDUJLyogWm9vbSBWaWRlbyBJMlMgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fVE9TTElOS19MCSAgIDB4MDYJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fVE9TTElOS19SICAgIDB4MDcJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX0xJTkUxX0wJICAgMHgwOAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAxIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fTElORTFfUgkgICAweDA5CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fQ09BWF9TUERJRl9MIDB4MGEJLyogTGl2ZURyaXZlIC0gQ29heGlhbCBTL1BESUYgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX1IgMHgwYiAvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRJTl9MSU5FMl9MCSAgIDB4MGMJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMiAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVElOX0xJTkUyX1IJICAgMHgwZAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gcmlnaHQgKi8KKy0KKy0vKiBPdXRwdXRzICovCistI2RlZmluZSBFWFRPVVRfQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgcGxheWJhY2sgY2hhbm5lbCAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9UT1NMSU5LX0wgICAweDAyCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9UT1NMSU5LX1IgICAweDAzCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfQUM5N19DRU5URVIgMHgwNAkvKiBTQiBMaXZlIDUuMSAtIGNlbnRlciAqLworLSNkZWZpbmUgRVhUT1VUX0FDOTdfTEZFCSAgIDB4MDUgLyogU0IgTGl2ZSA1LjEgLSBMRkUgKi8KKy0jZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfTCAweDA2CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfUiAweDA3CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfUkVBUl9MCSAgIDB4MDgJLyogUmVhciBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX1JFQVJfUgkgICAweDA5CS8qIFJlYXIgY2hhbm5lbCAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfQURDX0NBUF9MICAgMHgwYQkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSBsZWZ0ICovCistI2RlZmluZSBFWFRPVVRfQURDX0NBUF9SICAgMHgwYgkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSByaWdodCAqLworLSNkZWZpbmUgRVhUT1VUX01JQ19DQVAJICAgMHgwYwkvKiBNSUMgQ2FwdHVyZSBidWZmZXIgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfTCAweDBkCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBMZWZ0ICovCistI2RlZmluZSBFWFRPVVRfQUM5N19SRUFSX1IgMHgwZQkvKiBTQiBMaXZlIDUuMSAoYykgMjAwMyAtIFJlYXIgUmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQ0VOVEVSCSAgIDB4MTEgLyogQW5hbG9nIENlbnRlciAqLworLSNkZWZpbmUgRVhUT1VUX0FMRkUJICAgMHgxMiAvKiBBbmFsb2cgTEZFICovCistCistLyogQXVkaWd5IElucHV0cyAqLworLSNkZWZpbmUgQV9FWFRJTl9BQzk3X0wJCTB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9BQzk3X1IJCTB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fU1BESUZfQ0RfTAkweDAyCS8qIGRpZ2l0YWwgQ0QgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9SCTB4MDMJLyogZGlnaXRhbCBDRCBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9MICAgICAweDA0ICAgIC8qIGF1ZGlneSBkcml2ZSBPcHRpY2FsIFNQRElGIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9PUFRfU1BESUZfUiAgICAgMHgwNSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovIAorLSNkZWZpbmUgQV9FWFRJTl9MSU5FMl9MCQkweDA4CS8qIGF1ZGlneSBkcml2ZSBsaW5lMi9taWMyIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9MSU5FMl9SCQkweDA5CS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fQURDX0wJCTB4MGEgICAgLyogUGhpbGlwcyBBREMgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0FEQ19SCQkweDBiICAgIC8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fQVVYMl9MCQkweDBjCS8qIGF1ZGlneSBkcml2ZSBhdXgyIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9BVVgyX1IJCTB4MGQJLyogICAgICAgICAgICAgICAgICAgLSByaWdodCAqLworLQorLS8qIEF1ZGlnaXkgT3V0cHV0cyAqLworLSNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfTAkweDAwCS8qIGRpZ2l0YWwgZnJvbnQgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfUgkweDAxCS8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0NFTlRFUgkJMHgwMgkvKiBkaWdpdGFsIGZyb250IGNlbnRlciAqLworLSNkZWZpbmUgQV9FWFRPVVRfTEZFCQkweDAzCS8qIGRpZ2l0YWwgZnJvbnQgbGZlICovCistI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfTAkweDA0CS8qIGhlYWRwaG9uZSBhdWRpZ3kgZHJpdmUgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfSEVBRFBIT05FX1IJMHgwNQkvKiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovCistI2RlZmluZSBBX0VYVE9VVF9SRUFSX0wJCTB4MDYJLyogZGlnaXRhbCByZWFyIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX1JFQVJfUgkJMHgwNwkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9MCTB4MDgJLyogYW5hbG9nIGZyb250IGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9SCTB4MDkJLyogICAgICAgICAgICAgIHJpZ2h0ICovCistI2RlZmluZSBBX0VYVE9VVF9BQ0VOVEVSCTB4MGEJLyogYW5hbG9nIGNlbnRlciAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUxGRQkJMHgwYgkvKiBhbmFsb2cgTEZFICovCistI2RlZmluZSBBX0VYVE9VVF9BU0lERV9MCTB4MGMJLyogYW5hbG9nIHNpZGUgbGVmdCAgLSBBdWRpZ3kgMiBaUyAqLworLSNkZWZpbmUgQV9FWFRPVVRfQVNJREVfUgkweDBkCS8qICAgICAgICAgICAgIHJpZ2h0IC0gQXVkaWd5IDIgWlMgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FSRUFSX0wJMHgwZQkvKiBhbmFsb2cgcmVhciBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9BUkVBUl9SCTB4MGYJLyogICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FDOTdfTAkJMHgxMAkvKiBBQzk3IGxlZnQgKGZyb250KSAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUM5N19SCQkweDExCS8qICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfTAkweDE2CS8qIEFEQyBjYXB0dXJlIGJ1ZmZlciBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9BRENfQ0FQX1IJMHgxNwkvKiAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX01JQ19DQVAJMHgxOAkvKiBNaWMgY2FwdHVyZSBidWZmZXIgKi8KKy0KKy0vKiBBdWRpZ3kgY29uc3RhbnRzICovCistI2RlZmluZSBBX0NfMDAwMDAwMDAJMHhjMAorLSNkZWZpbmUgQV9DXzAwMDAwMDAxCTB4YzEKKy0jZGVmaW5lIEFfQ18wMDAwMDAwMgkweGMyCistI2RlZmluZSBBX0NfMDAwMDAwMDMJMHhjMworLSNkZWZpbmUgQV9DXzAwMDAwMDA0CTB4YzQKKy0jZGVmaW5lIEFfQ18wMDAwMDAwOAkweGM1CistI2RlZmluZSBBX0NfMDAwMDAwMTAJMHhjNgorLSNkZWZpbmUgQV9DXzAwMDAwMDIwCTB4YzcKKy0jZGVmaW5lIEFfQ18wMDAwMDEwMAkweGM4CistI2RlZmluZSBBX0NfMDAwMTAwMDAJMHhjOQorLSNkZWZpbmUgQV9DXzAwMDAwODAwCTB4Y2EKKy0jZGVmaW5lIEFfQ18xMDAwMDAwMAkweGNiCistI2RlZmluZSBBX0NfMjAwMDAwMDAJMHhjYworLSNkZWZpbmUgQV9DXzQwMDAwMDAwCTB4Y2QKKy0jZGVmaW5lIEFfQ184MDAwMDAwMAkweGNlCistI2RlZmluZSBBX0NfN2ZmZmZmZmYJMHhjZgorLSNkZWZpbmUgQV9DX2ZmZmZmZmZmCTB4ZDAKKy0jZGVmaW5lIEFfQ19mZmZmZmZmZQkweGQxCistI2RlZmluZSBBX0NfYzAwMDAwMDAJMHhkMgorLSNkZWZpbmUgQV9DXzRmMWJiY2RjCTB4ZDMKKy0jZGVmaW5lIEFfQ181YTdlZjlkYgkweGQ0CistI2RlZmluZSBBX0NfMDAxMDAwMDAJMHhkNQorLSNkZWZpbmUgQV9HUFJfQUNDVQkweGQ2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKy0jZGVmaW5lIEFfR1BSX0NPTkQJMHhkNwkJLyogQ0NSLCBjb25kaXRpb24gcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEFfR1BSX05PSVNFMAkweGQ4CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEFfR1BSX05PSVNFMQkweGQ5CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEFfR1BSX0lSUQkweGRhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEFfR1BSX0RCQUMJMHhkYgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAtIGludGVybmFsICovCistI2RlZmluZSBBX0dQUl9EQkFDRQkweGRlCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gZXh0ZXJuYWwgKi8KKy0KKy0vKiBkZWZpbml0aW9ucyBmb3IgZGVidWcgcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1pDCQkJMHg4MDAwMDAwMAkvKiB6ZXJvIHRyYW0gY291bnRlciAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU0FUVVJBVElPTl9PQ0NVUkVECTB4MDIwMDAwMDAJLyogc2F0dXJhdGlvbiBjb250cm9sICovCistI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX0FERFIJMHgwMWZmMDAwMAkvKiBzYXR1cmF0aW9uIGFkZHJlc3MgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQCQkweDAwMDA4MDAwCS8qIHNpbmdsZSBzdGVwIG1vZGUgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NURVAJCTB4MDAwMDQwMDAJLyogc3RhcnQgc2luZ2xlIHN0ZXAgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX0NPTkRJVElPTl9DT0RFCTB4MDAwMDNlMDAJLyogY29uZGl0aW9uIGNvZGUgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQX0FERFIJMHgwMDAwMDFmZgkvKiBzaW5nbGUgc3RlcCBhZGRyZXNzICovCistCistLyogdGFuayBtZW1vcnkgYWRkcmVzcyBsaW5lICovCistI2lmbmRlZiBfX0tFUk5FTF9fCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19BRERSX01BU0sgMHgwMDBmZmZmZgkvKiAyMCBiaXQgdGFuayBhZGRyZXNzIGZpZWxkCQkJKi8KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX0NMRUFSCSAweDAwODAwMDAwCS8qIENsZWFyIHRhbmsgbWVtb3J5CQkJCSovCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19BTElHTgkgMHgwMDQwMDAwMAkvKiBBbGlnbiByZWFkIG9yIHdyaXRlIHJlbGF0aXZlIHRvIHRhbmsgYWNjZXNzCSovCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19XUklURQkgMHgwMDIwMDAwMAkvKiBXcml0ZSB0byB0YW5rIG1lbW9yeQkJCQkqLworLSNkZWZpbmUgVEFOS01FTUFERFJSRUdfUkVBRAkgMHgwMDEwMDAwMAkvKiBSZWFkIGZyb20gdGFuayBtZW1vcnkJCQkqLworLSNlbmRpZgorLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyB7CistCXVuc2lnbmVkIGludCBpbnRlcm5hbF90cmFtX3NpemU7CS8qIGluIHNhbXBsZXMgKi8KKy0JdW5zaWduZWQgaW50IGV4dGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworLQljaGFyIGZ4YnVzX25hbWVzWzE2XVszMl07CQkvKiBuYW1lcyBvZiBGWEJVU2VzICovCistCWNoYXIgZXh0aW5fbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIGV4dGVybmFsIGlucHV0cyAqLworLQljaGFyIGV4dG91dF9uYW1lc1szMl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgb3V0cHV0cyAqLworLQl1bnNpZ25lZCBpbnQgZ3ByX2NvbnRyb2xzOwkJLyogY291bnQgb2YgR1BSIGNvbnRyb2xzICovCistfTsKKy0KKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX05PTkUJCTAKKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RBQkxFMTAwCTEKKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX0JBU1MJCTIKKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RSRUJMRQkJMworLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fT05PRkYJCTQKKy0KKy1zdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJCS8qIGZ1bGwgY29udHJvbCBJRCBkZWZpbml0aW9uICovCistCXVuc2lnbmVkIGludCB2Y291bnQ7CQkvKiB2aXNpYmxlIGNvdW50ICovCistCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIGNvdW50IG9mIEdQUiAoMS4uMTYpICovCistCXVuc2lnbmVkIHNob3J0IGdwclszMl07CQkvKiBHUFIgbnVtYmVyKHMpICovCistCXVuc2lnbmVkIGludCB2YWx1ZVszMl07CQkvKiBpbml0aWFsIHZhbHVlcyAqLworLQl1bnNpZ25lZCBpbnQgbWluOwkJLyogbWluaW11bSByYW5nZSAqLworLQl1bnNpZ25lZCBpbnQgbWF4OwkJLyogbWF4aW11bSByYW5nZSAqLworLQl1bnNpZ25lZCBpbnQgdHJhbnNsYXRpb247CS8qIHRyYW5zbGF0aW9uIHR5cGUgKEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OKikgKi8KKy0JY29uc3QgdW5zaWduZWQgaW50ICp0bHY7CistfTsKKy0KKy0vKiBvbGQgQUJJIHdpdGhvdXQgVExWIHN1cHBvcnQgKi8KKy1zdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfb2xkX2dwciB7CistCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CistCXVuc2lnbmVkIGludCB2Y291bnQ7CistCXVuc2lnbmVkIGludCBjb3VudDsKKy0JdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsKKy0JdW5zaWduZWQgaW50IHZhbHVlWzMyXTsKKy0JdW5zaWduZWQgaW50IG1pbjsKKy0JdW5zaWduZWQgaW50IG1heDsKKy0JdW5zaWduZWQgaW50IHRyYW5zbGF0aW9uOworLX07CistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIHsKKy0JY2hhciBuYW1lWzEyOF07CistCistCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUChncHJfdmFsaWQsIDB4MjAwKTsgLyogYml0bWFzayBvZiB2YWxpZCBpbml0aWFsaXplcnMgKi8KKy0JX191MzIgX191c2VyICpncHJfbWFwOwkJLyogaW5pdGlhbGl6ZXJzICovCistCistCXVuc2lnbmVkIGludCBncHJfYWRkX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBhZGQvcmVwbGFjZSAqLworLQlzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIF9fdXNlciAqZ3ByX2FkZF9jb250cm9sczsgLyogR1BSIGNvbnRyb2xzIHRvIGFkZC9yZXBsYWNlICovCistCistCXVuc2lnbmVkIGludCBncHJfZGVsX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBfX3VzZXIgKmdwcl9kZWxfY29udHJvbHM7IC8qIElEcyBvZiBHUFIgY29udHJvbHMgdG8gcmVtb3ZlICovCistCistCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX2NvdW50OyAvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgdG8gbGlzdCAqLworLQl1bnNpZ25lZCBpbnQgZ3ByX2xpc3RfY29udHJvbF90b3RhbDsgLyogdG90YWwgY291bnQgb2YgR1BSIGNvbnRyb2xzICovCistCXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgX191c2VyICpncHJfbGlzdF9jb250cm9sczsgLyogbGlzdGVkIEdQUiBjb250cm9scyAqLworLQorLQlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAodHJhbV92YWxpZCwgMHgxMDApOyAvKiBiaXRtYXNrIG9mIHZhbGlkIGluaXRpYWxpemVycyAqLworLQlfX3UzMiBfX3VzZXIgKnRyYW1fZGF0YV9tYXA7CSAgLyogZGF0YSBpbml0aWFsaXplcnMgKi8KKy0JX191MzIgX191c2VyICp0cmFtX2FkZHJfbWFwOwkgIC8qIG1hcCBpbml0aWFsaXplcnMgKi8KKy0KKy0JX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKGNvZGVfdmFsaWQsIDEwMjQpOyAvKiBiaXRtYXNrIG9mIHZhbGlkIGluc3RydWN0aW9ucyAqLworLQlfX3UzMiBfX3VzZXIgKmNvZGU7CQkgIC8qIG9uZSBpbnN0cnVjdGlvbiAtIDY0IGJpdHMgKi8KKy19OworLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSB7CistCXVuc2lnbmVkIGludCBhZGRyZXNzOwkJLyogMzEuYml0ID09IDEgLT4gZXh0ZXJuYWwgVFJBTSAqLworLQl1bnNpZ25lZCBpbnQgc2l6ZTsJCS8qIHNpemUgaW4gc2FtcGxlcyAoNCBieXRlcykgKi8KKy0JdW5zaWduZWQgaW50ICpzYW1wbGVzOwkJLyogcG9pbnRlciB0byBzYW1wbGVzICgyMC1iaXQpICovCistCQkJCQkvKiBOVUxMLT5jbGVhciBtZW1vcnkgKi8KKy19OworLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyB7CistCXVuc2lnbmVkIGludCBzdWJzdHJlYW07CQkvKiBzdWJzdHJlYW0gbnVtYmVyICovCistCXVuc2lnbmVkIGludCByZXMxOwkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5zaWduZWQgaW50IGNoYW5uZWxzOwkJLyogMTYtYml0IGNoYW5uZWxzIGNvdW50LCB6ZXJvID0gcmVtb3ZlIHRoaXMgc3Vic3RyZWFtICovCistCXVuc2lnbmVkIGludCB0cmFtX3N0YXJ0OwkvKiByaW5nIGJ1ZmZlciBwb3NpdGlvbiBpbiBUUkFNIChpbiBzYW1wbGVzKSAqLworLQl1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemU7CS8qIGNvdW50IG9mIGJ1ZmZlcmVkIHNhbXBsZXMgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3NpemU7CQkvKiBHUFIgY29udGFpbmluZyBzaXplIG9mIHJpbmdidWZmZXIgaW4gc2FtcGxlcyAoaG9zdCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3B0cjsJCS8qIEdQUiBjb250YWluaW5nIGN1cnJlbnQgcG9pbnRlciBpbiB0aGUgcmluZyBidWZmZXIgKGhvc3QgPSByZXNldCwgRlg4MDEwKSAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfY291bnQ7CS8qIEdQUiBjb250YWluaW5nIGNvdW50IG9mIHNhbXBsZXMgYmV0d2VlbiB0d28gaW50ZXJydXB0cyAoaG9zdCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3RtcGNvdW50OwkvKiBHUFIgY29udGFpbmluZyBjdXJyZW50IGNvdW50IG9mIHNhbXBsZXMgdG8gaW50ZXJydXB0IChob3N0ID0gc2V0LCBGWDgwMTApICovCistCXVuc2lnbmVkIHNob3J0IGdwcl90cmlnZ2VyOwkvKiBHUFIgY29udGFpbmluZyB0cmlnZ2VyIChhY3RpdmF0ZSkgaW5mb3JtYXRpb24gKGhvc3QpICovCistCXVuc2lnbmVkIHNob3J0IGdwcl9ydW5uaW5nOwkvKiBHUFIgY29udGFpbmluZyBpbmZvIGlmIFBDTSBpcyBydW5uaW5nIChGWDgwMTApICovCistCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5zaWduZWQgY2hhciBldHJhbVszMl07CS8qIGV4dGVybmFsIFRSQU0gYWRkcmVzcyAmIGRhdGEgKG9uZSBwZXIgY2hhbm5lbCkgKi8KKy0JdW5zaWduZWQgaW50IHJlczI7CQkvKiByZXNlcnZlZCAqLworLX07CistCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMSkKKy0KKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfSU5GTwlfSU9SICgnSCcsIDB4MTAsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbykKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfQ09ERV9QT0tFCV9JT1cgKCdIJywgMHgxMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT0RFX1BFRUsJX0lPV1IoJ0gnLCAweDEyLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1RSQU1fU0VUVVAJX0lPVyAoJ0gnLCAweDIwLCBpbnQpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1RSQU1fUE9LRQlfSU9XICgnSCcsIDB4MjEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9QRUVLCV9JT1dSKCdIJywgMHgyMiwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QQ01fUE9LRQlfSU9XICgnSCcsIDB4MzAsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYykKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUENNX1BFRUsJX0lPV1IoJ0gnLCAweDMxLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BWRVJTSU9OCV9JT1IgKCdIJywgMHg0MCwgaW50KQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TVE9QCV9JTyAgKCdIJywgMHg4MCkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfQ09OVElOVUUJX0lPICAoJ0gnLCAweDgxKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9aRVJPX1RSQU1fQ09VTlRFUiBfSU8gKCdIJywgMHg4MikKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfU0lOR0xFX1NURVAJX0lPVyAoJ0gnLCAweDgzLCBpbnQpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0RCR19SRUFECV9JT1IgKCdIJywgMHg4NCwgaW50KQorLQorLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyBlbXUxMGsxX2Z4ODAxMF9pbmZvX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIGVtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgZW11MTBrMV9meDgwMTBfY29kZV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIGVtdTEwazFfZng4MDEwX3RyYW1fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyBlbXUxMGsxX2Z4ODAxMF9wY21fdDsKKy0KKy0jZW5kaWYgLyogX1VBUElfX1NPVU5EX0VNVTEwSzFfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9lbXUxMGsxLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwLmggYi9pbmNsdWRlL3NvdW5kL2hkc3AuaAoraW5kZXggNWRjMGMzZGIuLjc4ZmI3NDViIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9oZHNwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitAQCAtMSwxMTEgKzEsMiBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLSNpZm5kZWYgX19TT1VORF9IRFNQX0gKKy0jZGVmaW5lIF9fU09VTkRfSERTUF9ICistCistLyoKKy0gKiAgIENvcHlyaWdodCAoQykgMjAwMyBUaG9tYXMgQ2hhcmJvbm5lbCAodGhvbWFzQHVuZGF0YS5vcmcpCistICogICAgCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorLSAqLworLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLQorLSNkZWZpbmUgSERTUF9NQVRSSVhfTUlYRVJfU0laRSAyMDQ4CistCistZW51bSBIRFNQX0lPX1R5cGUgeworLQlEaWdpZmFjZSwKKy0JTXVsdGlmYWNlLAorLQlIOTY1MiwKKy0JSDk2MzIsCistCVJQTSwKKy0JVW5kZWZpbmVkLAorLX07CistCistc3RydWN0IGhkc3BfcGVha19ybXMgeworLQlfX3UzMiBpbnB1dF9wZWFrc1syNl07CistCV9fdTMyIHBsYXliYWNrX3BlYWtzWzI2XTsKKy0JX191MzIgb3V0cHV0X3BlYWtzWzI4XTsKKy0JX191NjQgaW5wdXRfcm1zWzI2XTsKKy0JX191NjQgcGxheWJhY2tfcm1zWzI2XTsKKy0JLyogVGhlc2UgYXJlIG9ubHkgdXNlZCBmb3IgSDk2eHggY2FyZHMgKi8KKy0JX191NjQgb3V0cHV0X3Jtc1syNl07CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX1BFQUtfUk1TIF9JT1IoJ0gnLCAweDQwLCBzdHJ1Y3QgaGRzcF9wZWFrX3JtcykKKy0KKy1zdHJ1Y3QgaGRzcF9jb25maWdfaW5mbyB7CistCXVuc2lnbmVkIGNoYXIgcHJlZl9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciB3b3JkY2xvY2tfc3luY19jaGVjazsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9zeW5jX2NoZWNrOworLQl1bnNpZ25lZCBjaGFyIGFkYXRzeW5jX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGNoYXIgYWRhdF9zeW5jX2NoZWNrWzNdOworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX2luOworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX291dDsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9wcm9mZXNzaW9uYWw7CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfZW1waGFzaXM7CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfbm9uYXVkaW87CistCXVuc2lnbmVkIGludCBzcGRpZl9zYW1wbGVfcmF0ZTsKKy0JdW5zaWduZWQgaW50IHN5c3RlbV9zYW1wbGVfcmF0ZTsKKy0JdW5zaWduZWQgaW50IGF1dG9zeW5jX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBjaGFyIHN5c3RlbV9jbG9ja19tb2RlOworLQl1bnNpZ25lZCBjaGFyIGNsb2NrX3NvdXJjZTsKKy0JdW5zaWduZWQgY2hhciBhdXRvc3luY19yZWY7CistCXVuc2lnbmVkIGNoYXIgbGluZV9vdXQ7CistCXVuc2lnbmVkIGNoYXIgcGFzc3RocnU7IAorLQl1bnNpZ25lZCBjaGFyIGRhX2dhaW47CistCXVuc2lnbmVkIGNoYXIgYWRfZ2FpbjsKKy0JdW5zaWduZWQgY2hhciBwaG9uZV9nYWluOworLQl1bnNpZ25lZCBjaGFyIHhscl9icmVha291dF9jYWJsZTsKKy0JdW5zaWduZWQgY2hhciBhbmFsb2dfZXh0ZW5zaW9uX2JvYXJkOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9DT05GSUdfSU5GTyBfSU9SKCdIJywgMHg0MSwgc3RydWN0IGhkc3BfY29uZmlnX2luZm8pCistCistc3RydWN0IGhkc3BfZmlybXdhcmUgeworLQl2b2lkIF9fdXNlciAqZmlybXdhcmVfZGF0YTsJLyogMjQ0MTMgeCA0IGJ5dGVzICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfVVBMT0FEX0ZJUk1XQVJFIF9JT1coJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcF9maXJtd2FyZSkKKy0KKy1zdHJ1Y3QgaGRzcF92ZXJzaW9uIHsKKy0JZW51bSBIRFNQX0lPX1R5cGUgaW9fdHlwZTsKKy0JdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9WRVJTSU9OIF9JT1IoJ0gnLCAweDQzLCBzdHJ1Y3QgaGRzcF92ZXJzaW9uKQorLQorLXN0cnVjdCBoZHNwX21peGVyIHsKKy0JdW5zaWduZWQgc2hvcnQgbWF0cml4W0hEU1BfTUFUUklYX01JWEVSX1NJWkVdOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9NSVhFUiBfSU9SKCdIJywgMHg0NCwgc3RydWN0IGhkc3BfbWl4ZXIpCistCistc3RydWN0IGhkc3BfOTYzMl9hZWIgeworLQlpbnQgYWViaTsKKy0JaW50IGFlYm87CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUXzk2MzJfQUVCIF9JT1IoJ0gnLCAweDQ1LCBzdHJ1Y3QgaGRzcF85NjMyX2FlYikKKy0KKy0vKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCistdHlwZWRlZiBlbnVtIEhEU1BfSU9fVHlwZSBIRFNQX0lPX1R5cGU7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9wZWFrX3JtcyBoZHNwX3BlYWtfcm1zX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbyBoZHNwX2NvbmZpZ19pbmZvX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9maXJtd2FyZSBoZHNwX2Zpcm13YXJlX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF92ZXJzaW9uIGhkc3BfdmVyc2lvbl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BfbWl4ZXIgaGRzcF9taXhlcl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BfOTYzMl9hZWIgaGRzcF85NjMyX2FlYl90OworLQorLSNlbmRpZiAvKiBfX1NPVU5EX0hEU1BfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9oZHNwLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwbS5oIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitpbmRleCBhMzhmM2Y3OS4uYWY2ZDE5ZWQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcG0uaAorQEAgLTEsMjMyICsxLDIgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0jaWZuZGVmIF9fU09VTkRfSERTUE1fSAorLSNkZWZpbmUgX19TT1VORF9IRFNQTV9ICistLyoKKy0gKiAgIENvcHlyaWdodCAoQykgMjAwMyBXaW5mcmllZCBSaXRzY2ggKElFTSkKKy0gKiAgIGJhc2VkIG9uIGhkc3AuaCBmcm9tIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKy0gKgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorLSAqLworLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLQorLS8qIE1heGltdW0gY2hhbm5lbHMgaXMgNjQgZXZlbiBvbiA1Nk1vZGUgeW91IGhhdmUgNjRwbGF5YmFja3MgdG8gbWF0cml4ICovCistI2RlZmluZSBIRFNQTV9NQVhfQ0hBTk5FTFMgICAgICA2NAorLQorLWVudW0gaGRzcG1faW9fdHlwZSB7CistCU1BREksCistCU1BRElmYWNlLAorLQlBSU8sCistCUFFUzMyLAorLQlSYXlEQVQKKy19OworLQorLWVudW0gaGRzcG1fc3BlZWQgeworLQlzcywKKy0JZHMsCistCXFzCistfTsKKy0KKy0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBJT0NUTCBQZWFrL1JNUyBNZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy0KKy1zdHJ1Y3QgaGRzcG1fcGVha19ybXMgeworLQlfX3UzMiBpbnB1dF9wZWFrc1s2NF07CistCV9fdTMyIHBsYXliYWNrX3BlYWtzWzY0XTsKKy0JX191MzIgb3V0cHV0X3BlYWtzWzY0XTsKKy0KKy0JX191NjQgaW5wdXRfcm1zWzY0XTsKKy0JX191NjQgcGxheWJhY2tfcm1zWzY0XTsKKy0JX191NjQgb3V0cHV0X3Jtc1s2NF07CistCistCV9fdTggc3BlZWQ7IC8qIGVudW0ge3NzLCBkcywgcXN9ICovCistCWludCBzdGF0dXMyOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfUEVBS19STVMgXAorLQlfSU9SKCdIJywgMHg0Miwgc3RydWN0IGhkc3BtX3BlYWtfcm1zKQorLQorLS8qIC0tLS0tLS0tLS0tLSBDT05GSUcgYmxvY2sgSU9DVEwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLQorLXN0cnVjdCBoZHNwbV9jb25maWcgeworLQl1bnNpZ25lZCBjaGFyIHByZWZfc3luY19yZWY7CistCXVuc2lnbmVkIGNoYXIgd29yZGNsb2NrX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGNoYXIgbWFkaV9zeW5jX2NoZWNrOworLQl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CistCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CistCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworLQl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciBsaW5lX291dDsKKy0JdW5zaWduZWQgaW50IHBhc3N0aHJ1OworLQl1bnNpZ25lZCBpbnQgYW5hbG9nX291dDsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0NPTkZJRyBcCistCV9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcG1fY29uZmlnKQorLQorLS8qCistICogSWYgdGhlcmUncyBhIFRDTyAoVGltZUNvZGUgT3B0aW9uKSBib2FyZCBpbnN0YWxsZWQsCistICogdGhlcmUgYXJlIGZ1cnRoZXIgb3B0aW9ucyBhbmQgc3RhdHVzIGRhdGEgYXZhaWxhYmxlLgorLSAqIFRoZSBoZHNwbV9sdGMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBjdXJyZW50IFNNUFRFCistICogdGltZWNvZGUgYW5kIHNvbWUgc3RhdHVzIGluZm9ybWF0aW9uIGFuZCBjYW4gYmUKKy0gKiBvYnRhaW5lZCB2aWEgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBvciBpbiB0aGUKKy0gKiBoZHNwbV9zdGF0dXMgc3RydWN0LgorLSAqLworLQorLWVudW0gaGRzcG1fbHRjX2Zvcm1hdCB7CistCWZvcm1hdF9pbnZhbGlkLAorLQlmcHNfMjQsCistCWZwc18yNSwKKy0JZnBzXzI5OTcsCistCWZwc18zMAorLX07CistCistZW51bSBoZHNwbV9sdGNfZnJhbWUgeworLQlmcmFtZV9pbnZhbGlkLAorLQlkcm9wX2ZyYW1lLAorLQlmdWxsX2ZyYW1lCistfTsKKy0KKy1lbnVtIGhkc3BtX2x0Y19pbnB1dF9mb3JtYXQgeworLQludHNjLAorLQlwYWwsCistCW5vX3ZpZGVvCistfTsKKy0KKy1zdHJ1Y3QgaGRzcG1fbHRjIHsKKy0JdW5zaWduZWQgaW50IGx0YzsKKy0KKy0JZW51bSBoZHNwbV9sdGNfZm9ybWF0IGZvcm1hdDsKKy0JZW51bSBoZHNwbV9sdGNfZnJhbWUgZnJhbWU7CistCWVudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCBpbnB1dF9mb3JtYXQ7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9MVEMgX0lPUignSCcsIDB4NDYsIHN0cnVjdCBoZHNwbV9sdGMpCistCistLyoKKy0gKiBUaGUgc3RhdHVzIGRhdGEgcmVmbGVjdHMgdGhlIGRldmljZSdzIGN1cnJlbnQgc3RhdGUKKy0gKiBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBjYXJkJ3MgY29uZmlndXJhdGlvbiBhbmQKKy0gKiBjb25uZWN0aW9uIHN0YXR1cy4KKy0gKi8KKy0KKy1lbnVtIGhkc3BtX3N5bmMgeworLQloZHNwbV9zeW5jX25vX2xvY2sgPSAwLAorLQloZHNwbV9zeW5jX2xvY2sgPSAxLAorLQloZHNwbV9zeW5jX3N5bmMgPSAyCistfTsKKy0KKy1lbnVtIGhkc3BtX21hZGlfaW5wdXQgeworLQloZHNwbV9pbnB1dF9vcHRpY2FsID0gMCwKKy0JaGRzcG1faW5wdXRfY29heCA9IDEKKy19OworLQorLWVudW0gaGRzcG1fbWFkaV9jaGFubmVsX2Zvcm1hdCB7CistCWhkc3BtX2Zvcm1hdF9jaF82NCA9IDAsCistCWhkc3BtX2Zvcm1hdF9jaF81NiA9IDEKKy19OworLQorLWVudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgeworLQloZHNwbV9mcmFtZV80OCA9IDAsCistCWhkc3BtX2ZyYW1lXzk2ID0gMQorLX07CistCistZW51bSBoZHNwbV9zeW5jc291cmNlIHsKKy0Jc3luY3NvdXJjZV93YyA9IDAsCistCXN5bmNzb3VyY2VfbWFkaSA9IDEsCistCXN5bmNzb3VyY2VfdGNvID0gMiwKKy0Jc3luY3NvdXJjZV9zeW5jID0gMywKKy0Jc3luY3NvdXJjZV9ub25lID0gNAorLX07CistCistc3RydWN0IGhkc3BtX3N0YXR1cyB7CistCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKy0JZW51bSBoZHNwbV9zeW5jc291cmNlIGF1dG9zeW5jX3NvdXJjZTsKKy0KKy0JX191NjQgY2FyZF9jbG9jazsKKy0JX191MzIgbWFzdGVyX3BlcmlvZDsKKy0KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQlfX3U4IHN5bmNfd2M7IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggc3luY19tYWRpOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKy0JCQlfX3U4IHN5bmNfdGNvOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKy0JCQlfX3U4IHN5bmNfaW47IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggbWFkaV9pbnB1dDsgLyogZW51bSBoZHNwbV9tYWRpX2lucHV0ICovCistCQkJX191OCBjaGFubmVsX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0ICovCistCQkJX191OCBmcmFtZV9mb3JtYXQ7IC8qIGVudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgKi8KKy0JCX0gbWFkaTsKKy0JfSBjYXJkX3NwZWNpZmljOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfU1RBVFVTIFwKKy0JX0lPUignSCcsIDB4NDcsIHN0cnVjdCBoZHNwbV9zdGF0dXMpCistCistLyoKKy0gKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmQgYW5kIGl0cyBhZGQtb25zLgorLSAqLworLQorLSNkZWZpbmUgSERTUE1fQURET05fVENPIDEKKy0KKy1zdHJ1Y3QgaGRzcG1fdmVyc2lvbiB7CistCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKy0JY2hhciBjYXJkbmFtZVsyMF07CistCXVuc2lnbmVkIGludCBzZXJpYWw7CistCXVuc2lnbmVkIHNob3J0IGZpcm13YXJlX3JldjsKKy0JaW50IGFkZG9uczsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX1ZFUlNJT04gX0lPUignSCcsIDB4NDgsIHN0cnVjdCBoZHNwbV92ZXJzaW9uKQorLQorLS8qIC0tLS0tLS0tLS0tLS0gZ2V0IE1hdHJpeCBNaXhlciBJT0NUTCAtLS0tLS0tLS0tLS0tLS0gKi8KKy0KKy0vKiBNQURJIG1peGVyOiA2NGlucHV0cys2NHBsYXliYWNrIGluIDY0b3V0cHV0cyA9IDgxOTIgPT4gKjRCeXRlID0KKy0gKiAzMjc2OCBCeXRlcworLSAqLworLQorLS8qIG9yZ2FuaXNhdGlvbiBpcyA2NCBjaGFubmVsZmFkZXIgaW4gYSBjb250aW51b3VzIG1lbW9yeSBibG9jayAqLworLS8qIGVxdWl2YWxlbnQgdG8gaGFyZHdhcmUgZGVmaW5pdGlvbiwgbWF5YmUgZm9yIGZ1dHVyZSBmZWF0dXJlIG9mIG1tYXAgb2YKKy0gKiB0aGVtCistICovCistLyogZWFjaCBvZiA2NCBvdXRwdXRzIGhhcyA2NCBpbmZhZGVyIGFuZCA2NCBvdXRmYWRlcjoKKy0gICBJbnMgdG8gT3V0cyBtaXhlcltvdXRdLmluW2luXSwgT3V0c3RyZWFtcyB0byBPdXRzIG1peGVyW291dF0ucGJbcGJdICovCistCistI2RlZmluZSBIRFNQTV9NSVhFUl9DSEFOTkVMUyBIRFNQTV9NQVhfQ0hBTk5FTFMKKy0KKy1zdHJ1Y3QgaGRzcG1fY2hhbm5lbGZhZGVyIHsKKy0JdW5zaWduZWQgaW50IGluW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKy0JdW5zaWduZWQgaW50IHBiW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKy19OworLQorLXN0cnVjdCBoZHNwbV9taXhlciB7CistCXN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgY2hbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworLX07CistCistc3RydWN0IGhkc3BtX21peGVyX2lvY3RsIHsKKy0Jc3RydWN0IGhkc3BtX21peGVyICptaXhlcjsKKy19OworLQorLS8qIHVzZSBpbmRpcmVjdCBhY2Nlc3MgZHVlIHRvIHRoZSBsaW1pdCBvZiBpb2N0bCBiaXQgc2l6ZSAqLworLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwpCistCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3BlYWtfcm1zIGhkc3BtX3BlYWtfcm1zX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY29uZmlnX2luZm8gaGRzcG1fY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV92ZXJzaW9uIGhkc3BtX3ZlcnNpb25fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgc25kX2hkc3BtX2NoYW5uZWxmYWRlcl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX21peGVyIGhkc3BtX21peGVyX3Q7CistCistCistI2VuZGlmCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3BtLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oIGIvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCitpbmRleCBlNjQ4NTE0OC4uMjQxMjFmY2IgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAorQEAgLTEsMTIzICsxIEBACistLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCistLyoKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk5IGJ5IFVyb3MgQml6amFrIDx1cm9zQGtzcy1sb2thLnNpPgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorLSAqCistICogIFNCMTZBU1AvQVdFMzIgQ1NQIGNvbnRyb2wKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgCistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCistICoKKy0gKi8KKy0jaWZuZGVmIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICistI2RlZmluZSBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSAorLQorLQorLS8qIENTUCBtb2RlcyAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfTk9ORQkJMHgwMAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1JFQUQJMHgwMQkvKiBSZWNvcmQgZnJvbSBEU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX0RTUF9XUklURQkweDAyCS8qIFBsYXkgdG8gRFNQICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9RU09VTkQJCTB4MDQJLyogUVNvdW5kICovCistCistLyogQ1NQIGxvYWQgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0ZST01VU0VSCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0lOSVRCTE9DSwkweDAyCistCistLyogQ1NQIHNhbXBsZSB3aWR0aCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NBTVBMRV84QklUCQkweDAxCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzE2QklUCQkweDAyCistCistLyogQ1NQIGNoYW5uZWxzICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9OTwkJCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVEVSRU8JCTB4MDIKKy0KKy0vKiBDU1AgcmF0ZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzgwMDAJCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzExMDI1CQkweDAyCistI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV8yMjA1MAkJMHgwNAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfNDQxMDAJCTB4MDgKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFX0FMTAkJMHgwZgorLQorLS8qIENTUCBydW5uaW5nIHN0YXRlICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfSURMRQkJMHgwMAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0xPQURFRAkJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1JVTk5JTkcJCTB4MDIKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9QQVVTRUQJCTB4MDQKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9BVVRPCQkweDA4CistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUVNPVU5ECQkweDEwCistCistLyogbWF4aW11bSBRU291bmQgdmFsdWUgKDE4MCBkZWdyZWVzIHJpZ2h0KSAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1FTT1VORF9NQVhfUklHSFQJMHgyMAorLQorLS8qIG1heGltdW0gbWljcm9jb2RlIFJJRkYgZmlsZSBzaXplICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTUFYX01JQ1JPQ09ERV9GSUxFX1NJWkUJMHgzMDAwCistCistLyogbWljcm9jb2RlIGhlYWRlciAqLworLXN0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciB7CistCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCistCXVuc2lnbmVkIHNob3J0IGZ1bmNfcmVxOwkvKiByZXF1ZXN0ZWQgZnVuY3Rpb24gKi8KKy19OworLQorLS8qIG1pY3JvY29kZSB0byBiZSBsb2FkZWQgKi8KKy1zdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUgeworLQlzdHJ1Y3Qgc25kX3NiX2NzcF9tY19oZWFkZXIgaW5mbzsKKy0JdW5zaWduZWQgY2hhciBkYXRhW1NORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRV07CistfTsKKy0KKy0vKiBzdGFydCBDU1Agd2l0aCBzYW1wbGVfd2lkdGggaW4gbW9uby9zdGVyZW8gKi8KKy1zdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCB7CistCWludCBzYW1wbGVfd2lkdGg7CS8qIHNhbXBsZSB3aWR0aCwgbG9vayBhYm92ZSAqLworLQlpbnQgY2hhbm5lbHM7CQkvKiBjaGFubmVscywgbG9vayBhYm92ZSAqLworLX07CistCistLyogQ1NQIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zYl9jc3BfaW5mbyB7CistCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCistCXVuc2lnbmVkIHNob3J0IGZ1bmNfbnI7CQkvKiBmdW5jdGlvbiBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IGFjY19mb3JtYXQ7CS8qIGFjY2VwdGVkIFBDTSBmb3JtYXRzICovCistCXVuc2lnbmVkIHNob3J0IGFjY19jaGFubmVsczsJLyogYWNjZXB0ZWQgY2hhbm5lbHMgKi8KKy0JdW5zaWduZWQgc2hvcnQgYWNjX3dpZHRoOwkvKiBhY2NlcHRlZCBzYW1wbGUgd2lkdGggKi8KKy0JdW5zaWduZWQgc2hvcnQgYWNjX3JhdGVzOwkvKiBhY2NlcHRlZCBzYW1wbGUgcmF0ZXMgKi8KKy0JdW5zaWduZWQgc2hvcnQgY3NwX21vZGU7CS8qIENTUCBtb2RlLCBzZWUgYWJvdmUgKi8KKy0JdW5zaWduZWQgc2hvcnQgcnVuX2NoYW5uZWxzOwkvKiBjdXJyZW50IGNoYW5uZWxzICAqLworLQl1bnNpZ25lZCBzaG9ydCBydW5fd2lkdGg7CS8qIGN1cnJlbnQgc2FtcGxlIHdpZHRoICovCistCXVuc2lnbmVkIHNob3J0IHZlcnNpb247CQkvKiB2ZXJzaW9uIGlkOiAweDEwIC0gMHgxZiAqLworLQl1bnNpZ25lZCBzaG9ydCBzdGF0ZTsJCS8qIHN0YXRlIGJpdHMgKi8KKy19OworLQorLS8qIEhXREVQIGNvbnRyb2xzICovCistLyogZ2V0IENTUCBpbmZvcm1hdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDEwLCBzdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvKQorLS8qIGxvYWQgbWljcm9jb2RlIHRvIENTUCAqLworLS8qIE5PVEU6IHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSBvdmVyZmxvd3MgdGhlIG1heCBzaXplICgxMyBiaXRzKQorLSAqIGRlZmluZWQgZm9yIHNvbWUgYXJjaGl0ZWN0dXJlcyBsaWtlIE1JUFMsIGFuZCBpdCBsZWFkcyB0byBidWlsZCBlcnJvcnMuCistICogKHg4NiBhbmQgY28gaGF2ZSAxNC1iaXQgc2l6ZSwgdGh1cyBpdCdzIHZhbGlkLCB0aG91Z2guKQorLSAqIEFzIGEgd29ya2Fyb3VuZCBmb3Igc2tpcHBpbmcgdGhlIHNpemUtbGltaXQgY2hlY2ssIGhlcmUgd2UgZG9uJ3QgdXNlIHRoZQorLSAqIG5vcm1hbCBfSU9XKCkgbWFjcm8gYnV0IF9JT0MoKSB3aXRoIHRoZSBtYW51YWwgYXJndW1lbnQuCistICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfTE9BRF9DT0RFCVwKKy0JX0lPQyhfSU9DX1dSSVRFLCAnSCcsIDB4MTEsIHNpemVvZihzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUpKQorLS8qIHVubG9hZCBtaWNyb2NvZGUgZnJvbSBDU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9VTkxPQURfQ09ERQlfSU8oJ0gnLCAweDEyKQorLS8qIHN0YXJ0IENTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUQVJUCQlfSU9XKCdIJywgMHgxMywgc3RydWN0IHNuZF9zYl9jc3Bfc3RhcnQpCistLyogc3RvcCBDU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9TVE9QCQlfSU8oJ0gnLCAweDE0KQorLS8qIHBhdXNlIENTUCBhbmQgRE1BIHRyYW5zZmVyICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUEFVU0UJCV9JTygnSCcsIDB4MTUpCistLyogcmVzdGFydCBDU1AgYW5kIERNQSB0cmFuc2ZlciAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1JFU1RBUlQJX0lPKCdIJywgMHgxNikKKy0KKy0KKy0jZW5kaWYgLyogX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL3NiMTZfY3NwLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaCBiL2luY2x1ZGUvc291bmQvc3NjYXBlX2lvY3RsLmgKK2luZGV4IGM2NjUzZWJmLi4yM2I0OGQzMyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvc3NjYXBlX2lvY3RsLmgKKysrKyBiL2luY2x1ZGUvc291bmQvc3NjYXBlX2lvY3RsLmgKK0BAIC0xLDIxICsxIEBACistI2lmbmRlZiBTU0NBUEVfSU9DVExfSAorLSNkZWZpbmUgU1NDQVBFX0lPQ1RMX0gKKy0KKy0KKy1zdHJ1Y3Qgc3NjYXBlX2Jvb3RibG9jaworLXsKKy0gIHVuc2lnbmVkIGNoYXIgY29kZVsyNTZdOworLSAgdW5zaWduZWQgdmVyc2lvbjsKKy19OworLQorLSNkZWZpbmUgU1NDQVBFX01JQ1JPQ09ERV9TSVpFICA2NTUzNgorLQorLXN0cnVjdCBzc2NhcGVfbWljcm9jb2RlCisteworLSAgdW5zaWduZWQgY2hhciAqY29kZTsKKy19OworLQorLSNkZWZpbmUgU05EX1NTQ0FQRV9MT0FEX0JPT1RCICBfSU9XUignUCcsIDEwMCwgc3RydWN0IHNzY2FwZV9ib290YmxvY2spCistI2RlZmluZSBTTkRfU1NDQVBFX0xPQURfTUNPREUgIF9JT1cgKCdQJywgMTAxLCBzdHJ1Y3Qgc3NjYXBlX21pY3JvY29kZSkKKy0KKy0jZW5kaWYKKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oPgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdGx2LmggYi9pbmNsdWRlL3NvdW5kL3Rsdi5oCitpbmRleCA3ZDZkNjVmNi4uZTQzNWE1ZmMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3Rsdi5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3Rsdi5oCitAQCAtMSwxMTcgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKi8KKy0KKy0jaWZuZGVmIF9fVUFQSV9TT1VORF9UTFZfSAorLSNkZWZpbmUgX19VQVBJX1NPVU5EX1RMVl9ICistCistI2RlZmluZSBTTkRSVl9DVExfVExWVF9DT05UQUlORVIgMAkvKiBvbmUgbGV2ZWwgZG93biAtIGdyb3VwIG9mIFRMVnMgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFCTEgICAgICAgLyogZEIgc2NhbGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiAyCS8qIGxpbmVhciB2b2x1bWUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1JBTkdFIDMJLyogZEIgcmFuZ2UgY29udGFpbmVyICovCistI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9NSU5NQVggNAkvKiBkQiBzY2FsZSB3aXRoIG1pbi9tYXggKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWF9NVVRFIDUJLyogZEIgc2NhbGUgd2l0aCBtaW4vbWF4IHdpdGggbXV0ZSAqLworLQorLS8qCistICogY2hhbm5lbC1tYXBwaW5nIFRMViBpdGVtcworLSAqICBUTFYgbGVuZ3RoIG11c3QgbWF0Y2ggd2l0aCBudW1fY2hhbm5lbHMKKy0gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX0ZJWEVECTB4MTAxCS8qIGZpeGVkIGNoYW5uZWwgcG9zaXRpb24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX1ZBUgkweDEwMgkvKiBjaGFubmVscyBmcmVlbHkgc3dhcHBhYmxlICovCistI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9QQUlSRUQJMHgxMDMJLyogcGFpci13aXNlIHN3YXBwYWJsZSAqLworLQorLS8qCistICogVExWIHN0cnVjdHVyZSBpcyByaWdodCBiZWhpbmQgdGhlIHN0cnVjdCBzbmRfY3RsX3RsdjoKKy0gKiAgIHVuc2lnbmVkIGludCB0eXBlICAJLSBzZWUgU05EUlZfQ1RMX1RMVlRfKgorLSAqICAgdW5zaWduZWQgaW50IGxlbmd0aAorLSAqICAgLi4uLiBkYXRhIGFsaWduZWQgdG8gc2l6ZW9mKHVuc2lnbmVkIGludCksIHVzZQorLSAqICAgICAgICBibG9ja19sZW5ndGggPSAobGVuZ3RoICsgKHNpemVvZih1bnNpZ25lZCBpbnQpIC0gMSkpICYKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgfihzaXplb2YodW5zaWduZWQgaW50KSAtIDEpKSAuLi4uCistICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9JVEVNKHR5cGUsIC4uLikgXAorLQkodHlwZSksIFNORFJWX0NUTF9UTFZEX0xFTkdUSChfX1ZBX0FSR1NfXyksIF9fVkFfQVJHU19fCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9MRU5HVEgoLi4uKSBcCistCSgodW5zaWduZWQgaW50KXNpemVvZigoY29uc3QgdW5zaWduZWQgaW50W10pIHsgX19WQV9BUkdTX18gfSkpCistCistLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgVExWIGRhdGEgaXRlbXMgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX1RZUEUJCTAKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0xFTgkJMQorLQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfQ09OVEFJTkVSX0lURU0oLi4uKSBcCistCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfQ09OVEFJTkVSLCBfX1ZBX0FSR1NfXykKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfQ09OVEFJTkVSKG5hbWUsIC4uLikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9DT05UQUlORVJfSVRFTShfX1ZBX0FSR1NfXykgXAorLQl9CistCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLCTB4ZmZmZgorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTVVURQkweDEwMDAwCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFLCBcCistCQkJICAgIChtaW4pLCBcCistCQkJICAgICgoc3RlcCkgJiBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLKSB8IFwKKy0JCQkgICAgICgobXV0ZSkgPyBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NVVRFIDogMCkpCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1NDQUxFKG5hbWUsIG1pbiwgc3RlcCwgbXV0ZSkgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorLQl9CistCistLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtdXRlIGFuZCBzdGVwIGl0ZW1zIGluIGRCIHNjYWxlIHR5cGUgVExWICovCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9TQ0FMRV9NSU4JCTIKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX1NDQUxFX01VVEVfQU5EX1NURVAJMworLQorLS8qIGRCIHNjYWxlIHNwZWNpZmllZCB3aXRoIG1pbi9tYXggdmFsdWVzIGluc3RlYWQgb2Ygc3RlcCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVgsIChtaW5fZEIpLCAobWF4X2RCKSkKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9NVVRFX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVhfTVVURSwgKG1pbl9kQiksIChtYXhfZEIpKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVgobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKy0JdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorLQkJU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JfQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVhfTVVURShuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfTVVURV9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCistCX0KKy0KKy0vKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG1heCBpdGVtcyBpbiBkYi1taW5tYXggdHlwZXMgb2YgVExWLiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTUlOTUFYX01JTgkyCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9NSU5NQVhfTUFYCTMKKy0KKy0vKiBsaW5lYXIgdm9sdW1lIGJldHdlZW4gbWluX2RCIGFuZCBtYXhfZEIgKC4wMWRCIHVuaXQpICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9MSU5FQVJfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiwgKG1pbl9kQiksIChtYXhfZEIpKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9MSU5FQVIobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKy0JdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorLQkJU05EUlZfQ1RMX1RMVkRfREJfTElORUFSX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JfQorLQorLS8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbWF4IGl0ZW1zIGluIGRiLWxpbmVhciB0eXBlIG9mIFRMVi4gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX0xJTkVBUl9NSU4JMgorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTElORUFSX01BWAkzCistCistLyogZEIgcmFuZ2UgY29udGFpbmVyOgorLSAqIEl0ZW1zIGluIGRCIHJhbmdlIGNvbnRhaW5lciBtdXN0IGJlIG9yZGVyZWQgYnkgdGhlaXIgdmFsdWVzIGFuZCBieSB0aGVpcgorLSAqIGRCIHZhbHVlcy4gVGhpcyBpbXBsaWVzIHRoYXQgbGFyZ2VyIHZhbHVlcyBtdXN0IGNvcnJlc3BvbmQgd2l0aCBsYXJnZXIKKy0gKiBkQiB2YWx1ZXMgKHdoaWNoIGlzIGFsc28gcmVxdWlyZWQgZm9yIGFsbCBvdGhlciBtaXhlciBjb250cm9scykuCistICovCistLyogRWFjaCBpdGVtIGlzOiA8bWluPiA8bWF4PiA8VExWPiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfUkFOR0VfSVRFTSguLi4pIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9SQU5HRSwgX19WQV9BUkdTX18pCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1JBTkdFKG5hbWUsIC4uLikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9SQU5HRV9JVEVNKF9fVkFfQVJHU19fKSBcCistCX0KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX0dBSU5fTVVURQktOTk5OTk5OQorLQorLSNlbmRpZgorKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvdGx2Lmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oIGIvaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oCitpbmRleCBlOTczZmYzMS4uZDQ3OTBjMWYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3R5cGVfY29tcGF0LmgKKysrKyBiL2luY2x1ZGUvc291bmQvdHlwZV9jb21wYXQuaAorQEAgLTMsNiArMyw5IEBACisgCisgI2lmbmRlZiBET0NfSElEREVOCisgI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpZmRlZiBfX2xpbnV4X18KKysjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjZWxzZQorIHR5cGVkZWYgdWludDhfdCBfX3U4OworIHR5cGVkZWYgdWludDE2X3QgX191MTY7CisgdHlwZWRlZiB1aW50MzJfdCBfX3UzMjsKK0BAIC0zNyw2ICs0MCwxNiBAQCB0eXBlZGVmIGludDMyX3QgX19zMzI7CisgI2RlZmluZSBfX2JlMzIgX191MzIKKyAjZGVmaW5lIF9fYmUxNiBfX3UxNgorICNkZWZpbmUgX19iZTggIF9fdTgKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fdXNlcgorKyNkZWZpbmUgX191c2VyCisrI2VuZGlmCisrCisrI2lmbmRlZiBfX3BhY2tlZAorKyNkZWZpbmUgX19wYWNrZWQgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCisrI2VuZGlmCisrCisgI2VuZGlmIC8qIERPQ19ISURERU4gKi8KKyAKKyAjZW5kaWYgLyogX19UWVBFX0NPTVBBVF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtIGIvaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjk5MTk3MTA4CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUuYW0KK0BAIC0wLDAgKzEsNiBAQAorK2Fsc2Fzb3VuZHVhcGlpbmNsdWRlZGlyID0gJHtpbmNsdWRlZGlyfS9hbHNhL3NvdW5kL3VhcGkKKysKKythbHNhc291bmR1YXBpaW5jbHVkZV9IRUFERVJTID0gYXNvdW5kX2ZtLmggaGRzcC5oIGhkc3BtLmggc2IxNl9jc3AuaCBcCisrCQkJICAgc3NjYXBlX2lvY3RsLmggZW11MTBrMS5oIGFzb2MuaCB0bHYuaAorKworK25vaW5zdF9IRUFERVJTID0gYXNvdW5kLmggYXNlcXVlbmNlci5oCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYTc1ZTE0ZWQKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmgKK0BAIC0wLDAgKzEsNjEyIEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgTWFpbiBoZWFkZXIgZmlsZSBmb3IgdGhlIEFMU0Egc2VxdWVuY2VyCisrICogIENvcHlyaWdodCAoYykgMTk5OC0xOTk5IGJ5IEZyYW5rIHZhbiBkZSBQb2wgPGZ2ZHBvbEBjb2lsLmRlbW9uLm5sPgorKyAqICAgICAgICAgICAgKGMpIDE5OTgtMTk5OSBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PgorKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysjaWZuZGVmIF9VQVBJX19TT1VORF9BU0VRVUVOQ0VSX0gKKysjZGVmaW5lIF9VQVBJX19TT1VORF9BU0VRVUVOQ0VSX0gKKysKKysjaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CisrCisrLyoqIHZlcnNpb24gb2YgdGhlIHNlcXVlbmNlciAqLworKyNkZWZpbmUgU05EUlZfU0VRX1ZFUlNJT04gU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAyKQorKworKy8qKgorKyAqIGRlZmluaXRpb24gb2Ygc2VxdWVuY2VyIGV2ZW50IHR5cGVzCisrICovCisrCisrLyoqIHN5c3RlbSBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX3Jlc3VsdAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NZU1RFTQkJMAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1JFU1VMVAkJMQorKworKy8qKiBub3RlIG1lc3NhZ2VzIChjaGFubmVsIHNwZWNpZmljKQorKyAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX2V2X25vdGUKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFCQk1CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9URU9OCQk2CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9URU9GRgkJNworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFWVBSRVNTCTgKKysJCisrLyoqIGNvbnRyb2wgbWVzc2FnZXMgKGNoYW5uZWwgc3BlY2lmaWMpCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfY3RybAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRST0xMRVIJMTAKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QR01DSEFOR0UJMTEKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DSEFOUFJFU1MJMTIKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QSVRDSEJFTkQJMTMJLyoqPCBmcm9tIC04MTkyIHRvIDgxOTEgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DT05UUk9MMTQJMTQJLyoqPCAxNCBiaXQgY29udHJvbGxlciB2YWx1ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PTlJFR1BBUkFNCTE1CS8qKjwgMTQgYml0IE5SUE4gYWRkcmVzcyArIDE0IGJpdCB1bnNpZ25lZCB2YWx1ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1JFR1BBUkFNCTE2CS8qKjwgMTQgYml0IFJQTiBhZGRyZXNzICsgMTQgYml0IHVuc2lnbmVkIHZhbHVlICovCisrCisrLyoqIHN5bmNocm9uaXNhdGlvbiBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX2V2X2N0cmwKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TT05HUE9TCQkyMAkvKiBTb25nIFBvc2l0aW9uIFBvaW50ZXIgd2l0aCBMU0IgYW5kIE1TQiB2YWx1ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TT05HU0VMCQkyMQkvKiBTb25nIFNlbGVjdCB3aXRoIHNvbmcgSUQgbnVtYmVyICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUUZSQU1FCQkyMgkvKiBtaWRpIHRpbWUgY29kZSBxdWFydGVyIGZyYW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVElNRVNJR04JMjMJLyogU01GIFRpbWUgU2lnbmF0dXJlIGV2ZW50ICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VZU0lHTgkJMjQJLyogU01GIEtleSBTaWduYXR1cmUgZXZlbnQgKi8KKysJICAgICAgICAKKysvKiogdGltZXIgbWVzc2FnZXMKKysgKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TVEFSVAkJMzAJLyogbWlkaSBSZWFsIFRpbWUgU3RhcnQgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRJTlVFCTMxCS8qIG1pZGkgUmVhbCBUaW1lIENvbnRpbnVlIG1lc3NhZ2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TVE9QCQkzMgkvKiBtaWRpIFJlYWwgVGltZSBTdG9wIG1lc3NhZ2UgKi8JCisrI2RlZmluZQlTTkRSVl9TRVFfRVZFTlRfU0VUUE9TX1RJQ0sJMzMJLyogc2V0IHRpY2sgcXVldWUgcG9zaXRpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TRVRQT1NfVElNRQkzNAkvKiBzZXQgcmVhbHRpbWUgcXVldWUgcG9zaXRpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9URU1QTwkJMzUJLyogKFNNRikgVGVtcG8gZXZlbnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTE9DSwkJMzYJLyogbWlkaSBSZWFsIFRpbWUgQ2xvY2sgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RJQ0sJCTM3CS8qIG1pZGkgUmVhbCBUaW1lIFRpY2sgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1FVRVVFX1NLRVcJMzgJLyogc2tldyBxdWV1ZSB0ZW1wbyAqLworKworKy8qKiBvdGhlcnMKKysgKiBldmVudCBkYXRhIHR5cGUgPSBub25lCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVFVORV9SRVFVRVNUCTQwCS8qIHR1bmUgcmVxdWVzdCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1JFU0VUCQk0MQkvKiByZXNldCB0byBwb3dlci1vbiBzdGF0ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NFTlNJTkcJCTQyCS8qICJhY3RpdmUgc2Vuc2luZyIgZXZlbnQgKi8KKysKKysvKiogZWNobyBiYWNrLCBrZXJuZWwgcHJpdmF0ZSBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IGFueSB0eXBlCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfRUNITwkJNTAJLyogZWNobyBldmVudCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX09TUwkJNTEJLyogT1NTIHJhdyBldmVudCAqLworKworKy8qKiBzeXN0ZW0gc3RhdHVzIG1lc3NhZ2VzIChicm9hZGNhc3QgZm9yIHN1YnNjcmliZXJzKQorKyAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfYWRkcgorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9TVEFSVAk2MAkvKiBuZXcgY2xpZW50IGhhcyBjb25uZWN0ZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTElFTlRfRVhJVAk2MQkvKiBjbGllbnQgaGFzIGxlZnQgdGhlIHN5c3RlbSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9DSEFOR0UJNjIJLyogY2xpZW50IHN0YXR1cy9pbmZvIGhhcyBjaGFuZ2VkICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9TVEFSVAk2MwkvKiBuZXcgcG9ydCB3YXMgY3JlYXRlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfRVhJVAk2NAkvKiBwb3J0IHdhcyBkZWxldGVkIGZyb20gc3lzdGVtICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9DSEFOR0UJNjUJLyogcG9ydCBzdGF0dXMvaW5mbyBoYXMgY2hhbmdlZCAqLworKworKy8qKiBwb3J0IGNvbm5lY3Rpb24gY2hhbmdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfY29ubmVjdAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfU1VCU0NSSUJFRAk2NgkvKiBwb3J0cyBjb25uZWN0ZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1VOU1VCU0NSSUJFRCA2NwkvKiBwb3J0cyBkaXNjb25uZWN0ZWQgKi8KKysKKysvKiA3MC04OTogIHN5bnRoZXNpemVyIGV2ZW50cyAtIG9ic29sZXRlZCAqLworKworKy8qKiB1c2VyLWRlZmluZWQgZXZlbnRzIHdpdGggZml4ZWQgbGVuZ3RoCisrICogZXZlbnQgZGF0YSB0eXBlID0gYW55CisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMAkJOTAKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IxCQk5MQorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjIJCTkyCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMwkJOTMKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I0CQk5NAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjUJCTk1CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNgkJOTYKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I3CQk5NworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjgJCTk4CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSOQkJOTkKKysKKysvKiAxMDAtMTE4OiBpbnN0cnVtZW50IGxheWVyIC0gb2Jzb2xldGVkICovCisrLyogMTE5LTEyOTogcmVzZXJ2ZWQgKi8KKysKKysvKiAxMzAtMTM5OiB2YXJpYWJsZSBsZW5ndGggZXZlbnRzCisrICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9ldl9leHQKKysgKiAoU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9WQVJJQUJMRSBtdXN0IGJlIHNldCkKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TWVNFWAkJMTMwCS8qIHN5c3RlbSBleGNsdXNpdmUgZGF0YSAodmFyaWFibGUgbGVuZ3RoKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0JPVU5DRQkJMTMxCS8qIGVycm9yIGV2ZW50ICovCisrLyogMTMyLTEzNDogcmVzZXJ2ZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMAkxMzUKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMQkxMzYKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMgkxMzcKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMwkxMzgKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSNAkxMzkKKysKKysvKiAxNTAtMTUxOiBrZXJuZWwgZXZlbnRzIHdpdGggcXVvdGUgLSBETyBOT1QgdXNlIGluIHVzZXIgY2xpZW50cyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFUk5FTF9FUlJPUgkxNTAKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVJORUxfUVVPVEUJMTUxCS8qIG9ic29sZXRlICovCisrCisrLyogMTUyLTE5MTogcmVzZXJ2ZWQgKi8KKysKKysvKiAxOTItMjU0OiBoYXJkd2FyZSBzcGVjaWZpYyBldmVudHMgKi8KKysKKysvKiAyNTU6IHNwZWNpYWwgZXZlbnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT05FCQkyNTUKKysKKysKKyt0eXBlZGVmIHVuc2lnbmVkIGNoYXIgc25kX3NlcV9ldmVudF90eXBlX3Q7CisrCisrLyoqIGV2ZW50IGFkZHJlc3MgKi8KKytzdHJ1Y3Qgc25kX3NlcV9hZGRyIHsKKysJdW5zaWduZWQgY2hhciBjbGllbnQ7CS8qKjwgQ2xpZW50IG51bWJlcjogICAgICAgICAwLi4yNTUsIDI1NSA9IGJyb2FkY2FzdCB0byBhbGwgY2xpZW50cyAqLworKwl1bnNpZ25lZCBjaGFyIHBvcnQ7CS8qKjwgUG9ydCB3aXRoaW4gY2xpZW50OiAgICAwLi4yNTUsIDI1NSA9IGJyb2FkY2FzdCB0byBhbGwgcG9ydHMgKi8KKyt9OworKworKy8qKiBwb3J0IGNvbm5lY3Rpb24gKi8KKytzdHJ1Y3Qgc25kX3NlcV9jb25uZWN0IHsKKysJc3RydWN0IHNuZF9zZXFfYWRkciBzZW5kZXI7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsKKyt9OworKworKworKyNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfVU5LTk9XTgkyNTMJLyogdW5rbm93biBzb3VyY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX1NVQlNDUklCRVJTCTI1NAkvKiBzZW5kIGV2ZW50IHRvIGFsbCBzdWJzY3JpYmVkIHBvcnRzICovCisrI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19CUk9BRENBU1QJMjU1CS8qIHNlbmQgZXZlbnQgdG8gYWxsIHF1ZXVlcy9jbGllbnRzL3BvcnRzL2NoYW5uZWxzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUVVFVUVfRElSRUNUCQkyNTMJLyogZGlyZWN0IGRpc3BhdGNoICovCisrCisrCS8qIGV2ZW50IG1vZGUgZmxhZyAtIE5PVEU6IG9ubHkgOCBiaXRzIGF2YWlsYWJsZSEgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FX1NUQU1QX1RJQ0sJKDA8PDApIC8qIHRpbWVzdGFtcCBpbiBjbG9jayB0aWNrcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfUkVBTAkoMTw8MCkgLyogdGltZXN0YW1wIGluIHJlYWwgdGltZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfTUFTSwkoMTw8MCkKKysKKysjZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfQUJTCQkoMDw8MSkJLyogYWJzb2x1dGUgdGltZXN0YW1wICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX1JFTAkJKDE8PDEpCS8qIHJlbGF0aXZlIHRvIGN1cnJlbnQgdGltZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9NQVNLCSgxPDwxKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9GSVhFRAkoMDw8MikJLyogZml4ZWQgZXZlbnQgc2l6ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9WQVJJQUJMRQkoMTw8MikJLyogdmFyaWFibGUgZXZlbnQgc2l6ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9WQVJVU1IJKDI8PDIpCS8qIHZhcmlhYmxlIGV2ZW50IHNpemUgLSB1c2VyIG1lbW9yeSBzcGFjZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9NQVNLCSgzPDwyKQorKworKyNkZWZpbmUgU05EUlZfU0VRX1BSSU9SSVRZX05PUk1BTAkoMDw8NCkJLyogbm9ybWFsIHByaW9yaXR5ICovCisrI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfSElHSAkJKDE8PDQpCS8qIGV2ZW50IHNob3VsZCBiZSBwcm9jZXNzZWQgYmVmb3JlIG90aGVycyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BSSU9SSVRZX01BU0sJCSgxPDw0KQorKworKworKwkvKiBub3RlIGV2ZW50ICovCisrc3RydWN0IHNuZF9zZXFfZXZfbm90ZSB7CisrCXVuc2lnbmVkIGNoYXIgY2hhbm5lbDsKKysJdW5zaWduZWQgY2hhciBub3RlOworKwl1bnNpZ25lZCBjaGFyIHZlbG9jaXR5OworKwl1bnNpZ25lZCBjaGFyIG9mZl92ZWxvY2l0eTsJLyogb25seSBmb3IgU05EUlZfU0VRX0VWRU5UX05PVEUgKi8KKysJdW5zaWduZWQgaW50IGR1cmF0aW9uOwkJLyogb25seSBmb3IgU05EUlZfU0VRX0VWRU5UX05PVEUgKi8KKyt9OworKworKwkvKiBjb250cm9sbGVyIGV2ZW50ICovCisrc3RydWN0IHNuZF9zZXFfZXZfY3RybCB7CisrCXVuc2lnbmVkIGNoYXIgY2hhbm5lbDsKKysJdW5zaWduZWQgY2hhciB1bnVzZWQxLCB1bnVzZWQyLCB1bnVzZWQzOwkvKiBwYWQgKi8KKysJdW5zaWduZWQgaW50IHBhcmFtOworKwlzaWduZWQgaW50IHZhbHVlOworK307CisrCisrCS8qIGdlbmVyaWMgc2V0IG9mIGJ5dGVzICgxMng4IGJpdCkgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9yYXc4IHsKKysJdW5zaWduZWQgY2hhciBkWzEyXTsJLyogOCBiaXQgdmFsdWUgKi8KKyt9OworKworKwkvKiBnZW5lcmljIHNldCBvZiBpbnRlZ2VycyAoM3gzMiBiaXQpICovCisrc3RydWN0IHNuZF9zZXFfZXZfcmF3MzIgeworKwl1bnNpZ25lZCBpbnQgZFszXTsJLyogMzIgYml0IHZhbHVlICovCisrfTsKKysKKysJLyogZXh0ZXJuYWwgc3RvcmVkIGRhdGEgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9leHQgeworKwl1bnNpZ25lZCBpbnQgbGVuOwkvKiBsZW5ndGggb2YgZGF0YSAqLworKwl2b2lkICpwdHI7CQkvKiBwb2ludGVyIHRvIGRhdGEgKG5vdGU6IG1heWJlIDY0LWJpdCkgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworK3N0cnVjdCBzbmRfc2VxX3Jlc3VsdCB7CisrCWludCBldmVudDsJCS8qIHByb2Nlc3NlZCBldmVudCB0eXBlICovCisrCWludCByZXN1bHQ7CisrfTsKKysKKysKKytzdHJ1Y3Qgc25kX3NlcV9yZWFsX3RpbWUgeworKwl1bnNpZ25lZCBpbnQgdHZfc2VjOwkvKiBzZWNvbmRzICovCisrCXVuc2lnbmVkIGludCB0dl9uc2VjOwkvKiBuYW5vc2Vjb25kcyAqLworK307CisrCisrdHlwZWRlZiB1bnNpZ25lZCBpbnQgc25kX3NlcV90aWNrX3RpbWVfdDsJLyogbWlkaSB0aWNrcyAqLworKworK3VuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHsKKysJc25kX3NlcV90aWNrX3RpbWVfdCB0aWNrOworKwlzdHJ1Y3Qgc25kX3NlcV9yZWFsX3RpbWUgdGltZTsKKyt9OworKworK3N0cnVjdCBzbmRfc2VxX3F1ZXVlX3NrZXcgeworKwl1bnNpZ25lZCBpbnQgdmFsdWU7CisrCXVuc2lnbmVkIGludCBiYXNlOworK307CisrCisrCS8qIHF1ZXVlIHRpbWVyIGNvbnRyb2wgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9xdWV1ZV9jb250cm9sIHsKKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJCQkvKiBhZmZlY3RlZCBxdWV1ZSAqLworKwl1bnNpZ25lZCBjaGFyIHBhZFszXTsJCQkvKiByZXNlcnZlZCAqLworKwl1bmlvbiB7CisrCQlzaWduZWQgaW50IHZhbHVlOwkJLyogYWZmZWN0ZWQgdmFsdWUgKGUuZy4gdGVtcG8pICovCisrCQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOwkvKiB0aW1lICovCisrCQl1bnNpZ25lZCBpbnQgcG9zaXRpb247CQkvKiBzeW5jIHBvc2l0aW9uICovCisrCQlzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9za2V3IHNrZXc7CisrCQl1bnNpZ25lZCBpbnQgZDMyWzJdOworKwkJdW5zaWduZWQgY2hhciBkOFs4XTsKKysJfSBwYXJhbTsKKyt9OworKworKwkvKiBxdW90ZWQgZXZlbnQgLSBpbnNpZGUgdGhlIGtlcm5lbCBvbmx5ICovCisrc3RydWN0IHNuZF9zZXFfZXZfcXVvdGUgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIG9yaWdpbjsJCS8qIG9yaWdpbmFsIHNlbmRlciAqLworKwl1bnNpZ25lZCBzaG9ydCB2YWx1ZTsJCS8qIG9wdGlvbmFsIGRhdGEgKi8KKysJc3RydWN0IHNuZF9zZXFfZXZlbnQgKmV2ZW50OwkJLyogcXVvdGVkIGV2ZW50ICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysKKysJLyogc2VxdWVuY2VyIGV2ZW50ICovCisrc3RydWN0IHNuZF9zZXFfZXZlbnQgeworKwlzbmRfc2VxX2V2ZW50X3R5cGVfdCB0eXBlOwkvKiBldmVudCB0eXBlICovCisrCXVuc2lnbmVkIGNoYXIgZmxhZ3M7CQkvKiBldmVudCBmbGFncyAqLworKwljaGFyIHRhZzsKKysJCisrCXVuc2lnbmVkIGNoYXIgcXVldWU7CQkvKiBzY2hlZHVsZSBxdWV1ZSAqLworKwl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOwkvKiBzY2hlZHVsZSB0aW1lICovCisrCisrCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgc291cmNlOwkvKiBzb3VyY2UgYWRkcmVzcyAqLworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIGRlc3RpbmF0aW9uIGFkZHJlc3MgKi8KKysKKysJdW5pb24gewkJCQkvKiBldmVudCBkYXRhLi4uICovCisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9ub3RlIG5vdGU7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9jdHJsIGNvbnRyb2w7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9yYXc4IHJhdzg7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9yYXczMiByYXczMjsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X2V4dCBleHQ7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9xdWV1ZV9jb250cm9sIHF1ZXVlOworKwkJdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsKKysJCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsKKysJCXN0cnVjdCBzbmRfc2VxX2Nvbm5lY3QgY29ubmVjdDsKKysJCXN0cnVjdCBzbmRfc2VxX3Jlc3VsdCByZXN1bHQ7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9xdW90ZSBxdW90ZTsKKysJfSBkYXRhOworK307CisrCisrCisrLyoKKysgKiBib3VuY2UgZXZlbnQgLSBzdG9yZWQgYXMgdmFyaWFibGUgc2l6ZSBkYXRhCisrICovCisrc3RydWN0IHNuZF9zZXFfZXZlbnRfYm91bmNlIHsKKysJaW50IGVycjsKKysJc3RydWN0IHNuZF9zZXFfZXZlbnQgZXZlbnQ7CisrCS8qIGV4dGVybmFsIGRhdGEgZm9sbG93cyBoZXJlLiAqLworK307CisrCisrCisrCS8qIHN5c3RlbSBpbmZvcm1hdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX3N5c3RlbV9pbmZvIHsKKysJaW50IHF1ZXVlczsJCQkvKiBtYXhpbXVtIHF1ZXVlcyBjb3VudCAqLworKwlpbnQgY2xpZW50czsJCQkvKiBtYXhpbXVtIGNsaWVudHMgY291bnQgKi8KKysJaW50IHBvcnRzOwkJCS8qIG1heGltdW0gcG9ydHMgcGVyIGNsaWVudCAqLworKwlpbnQgY2hhbm5lbHM7CQkJLyogbWF4aW11bSBjaGFubmVscyBwZXIgcG9ydCAqLworKwlpbnQgY3VyX2NsaWVudHM7CQkvKiBjdXJyZW50IGNsaWVudHMgKi8KKysJaW50IGN1cl9xdWV1ZXM7CQkJLyogY3VycmVudCBxdWV1ZXMgKi8KKysJY2hhciByZXNlcnZlZFsyNF07CisrfTsKKysKKysKKysJLyogc3lzdGVtIHJ1bm5pbmcgaW5mb3JtYXRpb24gKi8KKytzdHJ1Y3Qgc25kX3NlcV9ydW5uaW5nX2luZm8geworKwl1bnNpZ25lZCBjaGFyIGNsaWVudDsJCS8qIGNsaWVudCBpZCAqLworKwl1bnNpZ25lZCBjaGFyIGJpZ19lbmRpYW47CS8qIDEgPSBiaWctZW5kaWFuICovCisrCXVuc2lnbmVkIGNoYXIgY3B1X21vZGU7CQkvKiA0ID0gMzJiaXQsIDggPSA2NGJpdCAqLworKwl1bnNpZ25lZCBjaGFyIHBhZDsJCS8qIHJlc2VydmVkICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTJdOworK307CisrCisrCisrCS8qIGtub3duIGNsaWVudCBudW1iZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX1NZU1RFTQkJMAorKwkvKiBpbnRlcm5hbCBjbGllbnQgbnVtYmVycyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0NMSUVOVF9EVU1NWQkJMTQJLyogbWlkaSB0aHJvdWdoICovCisrI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX09TUwkJMTUJLyogb3NzIHNlcXVlbmNlciBlbXVsYXRvciAqLworKworKworKwkvKiBjbGllbnQgdHlwZXMgKi8KKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3NlcV9jbGllbnRfdHlwZV90OworKyNkZWZpbmUJTk9fQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDApCisrI2RlZmluZQlVU0VSX0NMSUVOVAkoKF9fZm9yY2Ugc25kX3NlcV9jbGllbnRfdHlwZV90KSAxKQorKyNkZWZpbmUJS0VSTkVMX0NMSUVOVAkoKF9fZm9yY2Ugc25kX3NlcV9jbGllbnRfdHlwZV90KSAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgIAorKwkvKiBldmVudCBmaWx0ZXIgZmxhZ3MgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfQlJPQURDQVNUCSgxPDwwKQkvKiBhY2NlcHQgYnJvYWRjYXN0IG1lc3NhZ2VzICovCisrI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX01VTFRJQ0FTVAkoMTw8MSkJLyogYWNjZXB0IG11bHRpY2FzdCBtZXNzYWdlcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9CT1VOQ0UJCSgxPDwyKQkvKiBhY2NlcHQgYm91bmNlIGV2ZW50IGluIGVycm9yICovCisrI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX1VTRV9FVkVOVAkoMTw8MzEpCS8qIHVzZSBldmVudCBmaWx0ZXIgKi8KKysKKytzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbyB7CisrCWludCBjbGllbnQ7CQkJLyogY2xpZW50IG51bWJlciB0byBpbnF1aXJlICovCisrCXNuZF9zZXFfY2xpZW50X3R5cGVfdCB0eXBlOwkvKiBjbGllbnQgdHlwZSAqLworKwljaGFyIG5hbWVbNjRdOwkJCS8qIGNsaWVudCBuYW1lICovCisrCXVuc2lnbmVkIGludCBmaWx0ZXI7CQkvKiBmaWx0ZXIgZmxhZ3MgKi8KKysJdW5zaWduZWQgY2hhciBtdWx0aWNhc3RfZmlsdGVyWzhdOyAvKiBtdWx0aWNhc3QgZmlsdGVyIGJpdG1hcCAqLworKwl1bnNpZ25lZCBjaGFyIGV2ZW50X2ZpbHRlclszMl07CS8qIGV2ZW50IGZpbHRlciBiaXRtYXAgKi8KKysJaW50IG51bV9wb3J0czsJCQkvKiBSTzogbnVtYmVyIG9mIHBvcnRzICovCisrCWludCBldmVudF9sb3N0OwkJCS8qIG51bWJlciBvZiBsb3N0IGV2ZW50cyAqLworKwlpbnQgY2FyZDsJCQkvKiBSTzogY2FyZCBudW1iZXJba2VybmVsXSAqLworKwlpbnQgcGlkOwkJCS8qIFJPOiBwaWRbdXNlcl0gKi8KKysJY2hhciByZXNlcnZlZFs1Nl07CQkvKiBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrLyogY2xpZW50IHBvb2wgc2l6ZSAqLworK3N0cnVjdCBzbmRfc2VxX2NsaWVudF9wb29sIHsKKysJaW50IGNsaWVudDsJCQkvKiBjbGllbnQgbnVtYmVyIHRvIGlucXVpcmUgKi8KKysJaW50IG91dHB1dF9wb29sOwkJLyogb3V0Z29pbmcgKHdyaXRlKSBwb29sIHNpemUgKi8KKysJaW50IGlucHV0X3Bvb2w7CQkJLyogaW5jb21pbmcgKHJlYWQpIHBvb2wgc2l6ZSAqLworKwlpbnQgb3V0cHV0X3Jvb207CQkvKiBtaW5pbXVtIGZyZWUgcG9vbCBzaXplIGZvciBzZWxlY3QvYmxvY2tpbmcgbW9kZSAqLworKwlpbnQgb3V0cHV0X2ZyZWU7CQkvKiB1bnVzZWQgc2l6ZSAqLworKwlpbnQgaW5wdXRfZnJlZTsJCQkvKiB1bnVzZWQgc2l6ZSAqLworKwljaGFyIHJlc2VydmVkWzY0XTsKKyt9OworKworKworKy8qIFJlbW92ZSBldmVudHMgYnkgc3BlY2lmaWVkIGNyaXRlcmlhICovCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0lOUFVUCQkoMTw8MCkJLyogRmx1c2ggaW5wdXQgcXVldWVzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX09VVFBVVAkJKDE8PDEpCS8qIEZsdXNoIG91dHB1dCBxdWV1ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfREVTVAkJKDE8PDIpCS8qIFJlc3RyaWN0IGJ5IGRlc3RpbmF0aW9uIHE6Y2xpZW50OnBvcnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfREVTVF9DSEFOTkVMCSgxPDwzKQkvKiBSZXN0cmljdCBieSBjaGFubmVsICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfQkVGT1JFCSgxPDw0KQkvKiBSZXN0cmljdCB0byBiZWZvcmUgdGltZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9USU1FX0FGVEVSCSgxPDw1KQkvKiBSZXN0cmljdCB0byB0aW1lIG9yIGFmdGVyICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfVElDSwkoMTw8NikJLyogVGltZSBpcyBpbiB0aWNrcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9FVkVOVF9UWVBFCSgxPDw3KQkvKiBSZXN0cmljdCB0byBldmVudCB0eXBlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0lHTk9SRV9PRkYgCSgxPDw4KQkvKiBEbyBub3QgZmx1c2ggb2ZmIGV2ZW50cyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9UQUdfTUFUQ0ggCSgxPDw5KQkvKiBSZXN0cmljdCB0byBldmVudHMgd2l0aCBnaXZlbiB0YWcgKi8KKysKKytzdHJ1Y3Qgc25kX3NlcV9yZW1vdmVfZXZlbnRzIHsKKysJdW5zaWduZWQgaW50ICByZW1vdmVfbW9kZTsJLyogRmxhZ3MgdGhhdCBkZXRlcm1pbmUgd2hhdCBnZXRzIHJlbW92ZWQgKi8KKysKKysJdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsKKysKKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJLyogUXVldWUgZm9yIFJFTU9WRV9ERVNUICovCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogQWRkcmVzcyBmb3IgUkVNT1ZFX0RFU1QgKi8KKysJdW5zaWduZWQgY2hhciBjaGFubmVsOwkvKiBDaGFubmVsIGZvciBSRU1PVkVfREVTVCAqLworKworKwlpbnQgIHR5cGU7CS8qIEZvciBSRU1PVkVfRVZFTlRfVFlQRSAqLworKwljaGFyICB0YWc7CS8qIFRhZyBmb3IgUkVNT1ZFX1RBRyAqLworKworKwlpbnQgIHJlc2VydmVkWzEwXTsJLyogVG8gYWxsb3cgZm9yIGZ1dHVyZSBiaW5hcnkgY29tcGF0aWJpbGl0eSAqLworKworK307CisrCisrCisrCS8qIGtub3duIHBvcnQgbnVtYmVycyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1lTVEVNX1RJTUVSCTAKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NZU1RFTV9BTk5PVU5DRQkxCisrCisrCS8qIHBvcnQgY2FwYWJpbGl0aWVzICgzMiBiaXRzKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1JFQUQJCSgxPDwwKQkvKiByZWFkYWJsZSBmcm9tIHRoaXMgcG9ydCAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1dSSVRFCSgxPDwxKQkvKiB3cml0YWJsZSB0byB0aGlzIHBvcnQgKi8KKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TWU5DX1JFQUQJKDE8PDIpCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1lOQ19XUklURQkoMTw8MykKKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9EVVBMRVgJKDE8PDQpCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19SRUFECSgxPDw1KQkvKiBhbGxvdyByZWFkIHN1YnNjcmlwdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NVQlNfV1JJVEUJKDE8PDYpCS8qIGFsbG93IHdyaXRlIHN1YnNjcmlwdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX05PX0VYUE9SVAkoMTw8NykJLyogcm91dGluZyBub3QgYWxsb3dlZCAqLworKworKwkvKiBwb3J0IHR5cGUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU1BFQ0lGSUMJKDE8PDApCS8qIGhhcmR3YXJlIHNwZWNpZmljICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQyAoMTw8MSkJLyogZ2VuZXJpYyBNSURJIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNCSgxPDwyKQkvKiBHZW5lcmFsIE1JREkgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HUwkoMTw8MykJLyogR1MgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9YRwkoMTw8NCkJLyogWEcgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9NVDMyCSgxPDw1KQkvKiBNVC0zMiBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNMgkoMTw8NikJLyogR2VuZXJhbCBNSURJIDIgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysKKysvKiBvdGhlciBzdGFuZGFyZHMuLi4qLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USAkoMTw8MTApCS8qIFN5bnRoIGRldmljZSAobm8gTUlESSBjb21wYXRpYmxlIC0gZGlyZWN0IHdhdmV0YWJsZSkgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfRElSRUNUX1NBTVBMRSAoMTw8MTEpCS8qIFNhbXBsaW5nIGRldmljZSAoc3VwcG9ydCBzYW1wbGUgZG93bmxvYWQpICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NBTVBMRQkoMTw8MTIpCS8qIFNhbXBsaW5nIGRldmljZSAoc2FtcGxlIGNhbiBiZSBkb3dubG9hZGVkIGF0IGFueSB0aW1lKSAqLworKy8qLi4uKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfSEFSRFdBUkUJKDE8PDE2KQkvKiBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgZGV2aWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NPRlRXQVJFCSgxPDwxNykJLyogaW1wbGVtZW50ZWQgaW4gc29mdHdhcmUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEhFU0laRVIJKDE8PDE4KQkvKiBnZW5lcmF0ZXMgc291bmQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfUE9SVAkoMTw8MTkpCS8qIGNvbm5lY3RzIHRvIG90aGVyIGRldmljZShzKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9BUFBMSUNBVElPTgkoMTw8MjApCS8qIGFwcGxpY2F0aW9uIChzZXF1ZW5jZXIvZWRpdG9yKSAqLworKworKy8qIG1pc2MuIGNvbmRpdGlvbmluZyBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfRkxHX0dJVkVOX1BPUlQJKDE8PDApCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfVElNRVNUQU1QCSgxPDwxKQorKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfRkxHX1RJTUVfUkVBTAkoMTw8MikKKysKKytzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8geworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGFkZHI7CS8qIGNsaWVudC9wb3J0IG51bWJlcnMgKi8KKysJY2hhciBuYW1lWzY0XTsJCQkvKiBwb3J0IG5hbWUgKi8KKysKKysJdW5zaWduZWQgaW50IGNhcGFiaWxpdHk7CS8qIHBvcnQgY2FwYWJpbGl0eSBiaXRzICovCisrCXVuc2lnbmVkIGludCB0eXBlOwkJLyogcG9ydCB0eXBlIGJpdHMgKi8KKysJaW50IG1pZGlfY2hhbm5lbHM7CQkvKiBjaGFubmVscyBwZXIgTUlESSBwb3J0ICovCisrCWludCBtaWRpX3ZvaWNlczsJCS8qIHZvaWNlcyBwZXIgTUlESSBwb3J0ICovCisrCWludCBzeW50aF92b2ljZXM7CQkvKiB2b2ljZXMgcGVyIFNZTlRIIHBvcnQgKi8KKysKKysJaW50IHJlYWRfdXNlOwkJCS8qIFIvTzogc3Vic2NyaWJlcnMgZm9yIG91dHB1dCAoZnJvbSB0aGlzIHBvcnQpICovCisrCWludCB3cml0ZV91c2U7CQkJLyogUi9POiBzdWJzY3JpYmVycyBmb3IgaW5wdXQgKHRvIHRoaXMgcG9ydCkgKi8KKysKKysJdm9pZCAqa2VybmVsOwkJCS8qIHJlc2VydmVkIGZvciBrZXJuZWwgdXNlIChtdXN0IGJlIE5VTEwpICovCisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIG1pc2MuIGNvbmRpdGlvbmluZyAqLworKwl1bnNpZ25lZCBjaGFyIHRpbWVfcXVldWU7CS8qIHF1ZXVlICMgZm9yIHRpbWVzdGFtcGluZyAqLworKwljaGFyIHJlc2VydmVkWzU5XTsJCS8qIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKysvKiBxdWV1ZSBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1FVRVVFX0ZMR19TWU5DCSgxPDwwKQkvKiBzeW5jIGVuYWJsZWQgKi8KKysKKysvKiBxdWV1ZSBpbmZvcm1hdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8geworKwlpbnQgcXVldWU7CQkvKiBxdWV1ZSBpZCAqLworKworKwkvKgorKwkgKiAgc2VjdXJpdHkgc2V0dGluZ3MsIG9ubHkgb3duZXIgb2YgdGhpcyBxdWV1ZSBjYW4gc3RhcnQvc3RvcCB0aW1lcgorKwkgKiAgZXRjLiBpZiB0aGUgcXVldWUgaXMgbG9ja2VkIGZvciBvdGhlciBjbGllbnRzCisrCSAqLworKwlpbnQgb3duZXI7CQkvKiBjbGllbnQgaWQgZm9yIG93bmVyIG9mIHRoZSBxdWV1ZSAqLworKwl1bnNpZ25lZCBsb2NrZWQ6MTsJLyogdGltaW5nIHF1ZXVlIGxvY2tlZCBmb3Igb3RoZXIgcXVldWVzICovCisrCWNoYXIgbmFtZVs2NF07CQkvKiBuYW1lIG9mIHRoaXMgcXVldWUgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkvKiBmbGFncyAqLworKwljaGFyIHJlc2VydmVkWzYwXTsJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKysKKyt9OworKworKy8qIHF1ZXVlIGluZm8vc3RhdHVzICovCisrc3RydWN0IHNuZF9zZXFfcXVldWVfc3RhdHVzIHsKKysJaW50IHF1ZXVlOwkJCS8qIHF1ZXVlIGlkICovCisrCWludCBldmVudHM7CQkJLyogcmVhZC1vbmx5IC0gcXVldWUgc2l6ZSAqLworKwlzbmRfc2VxX3RpY2tfdGltZV90IHRpY2s7CS8qIGN1cnJlbnQgdGljayAqLworKwlzdHJ1Y3Qgc25kX3NlcV9yZWFsX3RpbWUgdGltZTsJLyogY3VycmVudCB0aW1lICovCisrCWludCBydW5uaW5nOwkJCS8qIHJ1bm5pbmcgc3RhdGUgb2YgcXVldWUgKi8KKysJaW50IGZsYWdzOwkJCS8qIHZhcmlvdXMgZmxhZ3MgKi8KKysJY2hhciByZXNlcnZlZFs2NF07CQkvKiBmb3IgdGhlIGZ1dHVyZSAqLworK307CisrCisrCisrLyogcXVldWUgdGVtcG8gKi8KKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbyB7CisrCWludCBxdWV1ZTsJCQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKysJdW5zaWduZWQgaW50IHRlbXBvOwkJLyogY3VycmVudCB0ZW1wbywgdXMvdGljayAqLworKwlpbnQgcHBxOwkJCS8qIHRpbWUgcmVzb2x1dGlvbiwgdGlja3MvcXVhcnRlciAqLworKwl1bnNpZ25lZCBpbnQgc2tld192YWx1ZTsJLyogcXVldWUgc2tldyAqLworKwl1bnNpZ25lZCBpbnQgc2tld19iYXNlOwkJLyogcXVldWUgc2tldyBiYXNlICovCisrCWNoYXIgcmVzZXJ2ZWRbMjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgKi8KKyt9OworKworKworKy8qIHNlcXVlbmNlciB0aW1lciBzb3VyY2VzICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfQUxTQQkJMAkvKiBBTFNBIHRpbWVyICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfTUlESV9DTE9DSwkxCS8qIE1pZGkgQ2xvY2sgKENMT0NLIGV2ZW50KSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVSX01JRElfVElDSwkyCS8qIE1pZGkgVGltZXIgVGljayAoVElDSyBldmVudCkgKi8KKysKKysvKiBxdWV1ZSB0aW1lciBpbmZvICovCisrc3RydWN0IHNuZF9zZXFfcXVldWVfdGltZXIgeworKwlpbnQgcXVldWU7CQkJLyogc2VxdWVuY2VyIHF1ZXVlICovCisrCWludCB0eXBlOwkJCS8qIHNvdXJjZSB0aW1lciB0eXBlICovCisrCXVuaW9uIHsKKysJCXN0cnVjdCB7CisrCQkJc3RydWN0IHNuZF90aW1lcl9pZCBpZDsJLyogQUxTQSdzIHRpbWVyIElEICovCisrCQkJdW5zaWduZWQgaW50IHJlc29sdXRpb247CS8qIHJlc29sdXRpb24gaW4gSHogKi8KKysJCX0gYWxzYTsKKysJfSB1OworKwljaGFyIHJlc2VydmVkWzY0XTsJCS8qIGZvciB0aGUgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50IHsKKysJaW50IHF1ZXVlOwkJLyogc2VxdWVuY2VyIHF1ZXVlICovCisrCWludCBjbGllbnQ7CQkvKiBzZXF1ZW5jZXIgY2xpZW50ICovCisrCWludCB1c2VkOwkJLyogcXVldWUgaXMgdXNlZCB3aXRoIHRoaXMgY2xpZW50CisrCQkJCSAgIChtdXN0IGJlIHNldCBmb3IgYWNjZXB0aW5nIGV2ZW50cykgKi8KKysJLyogcGVyIGNsaWVudCB3YXRlcm1hcmtzICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX0VYQ0xVU0lWRQkoMTw8MCkJLyogZXhjbHVzaXZlIGNvbm5lY3Rpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfVElNRVNUQU1QCSgxPDwxKQorKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19USU1FX1JFQUwJKDE8PDIpCisrCisrc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNlbmRlcjsJLyogc2VuZGVyIGFkZHJlc3MgKi8KKysJc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCisrCXVuc2lnbmVkIGludCB2b2ljZXM7CQkvKiBudW1iZXIgb2Ygdm9pY2VzIHRvIGJlIGFsbG9jYXRlZCAoMCA9IGRvbid0IGNhcmUpICovCisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIG1vZGVzICovCisrCXVuc2lnbmVkIGNoYXIgcXVldWU7CQkvKiBpbnB1dCB0aW1lLXN0YW1wIHF1ZXVlIChvcHRpb25hbCkgKi8KKysJdW5zaWduZWQgY2hhciBwYWRbM107CQkvKiByZXNlcnZlZCAqLworKwljaGFyIHJlc2VydmVkWzY0XTsKKyt9OworKworKy8qIHR5cGUgb2YgcXVlcnkgc3Vic2NyaXB0aW9uICovCisrI2RlZmluZSBTTkRSVl9TRVFfUVVFUllfU1VCU19SRUFECTAKKysjZGVmaW5lIFNORFJWX1NFUV9RVUVSWV9TVUJTX1dSSVRFCTEKKysKKytzdHJ1Y3Qgc25kX3NlcV9xdWVyeV9zdWJzIHsKKysJc3RydWN0IHNuZF9zZXFfYWRkciByb290OwkvKiBjbGllbnQvcG9ydCBpZCB0byBiZSBzZWFyY2hlZCAqLworKwlpbnQgdHlwZTsJCS8qIFJFQUQgb3IgV1JJVEUgKi8KKysJaW50IGluZGV4OwkJLyogMC4uTi0xICovCisrCWludCBudW1fc3ViczsJCS8qIFIvTzogbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgb24gdGhpcyBwb3J0ICovCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsJLyogUi9POiByZXN1bHQgKi8KKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJLyogUi9POiByZXN1bHQgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkvKiBSL086IHJlc3VsdCAqLworKwljaGFyIHJlc2VydmVkWzY0XTsJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworKworKy8qCisrICogIElPQ1RMIGNvbW1hbmRzCisrICovCisrCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUFZFUlNJT04JX0lPUiAoJ1MnLCAweDAwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ0xJRU5UX0lECV9JT1IgKCdTJywgMHgwMSwgaW50KQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NZU1RFTV9JTkZPCV9JT1dSKCdTJywgMHgwMiwgc3RydWN0IHNuZF9zZXFfc3lzdGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUlVOTklOR19NT0RFCV9JT1dSKCdTJywgMHgwMywgc3RydWN0IHNuZF9zZXFfcnVubmluZ19pbmZvKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9DTElFTlRfSU5GTwlfSU9XUignUycsIDB4MTAsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9DTElFTlRfSU5GTwlfSU9XICgnUycsIDB4MTEsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NSRUFURV9QT1JUCV9JT1dSKCdTJywgMHgyMCwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0RFTEVURV9QT1JUCV9JT1cgKCdTJywgMHgyMSwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9QT1JUX0lORk8JX0lPV1IoJ1MnLCAweDIyLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1BPUlRfSU5GTwlfSU9XICgnUycsIDB4MjMsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKysKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TVUJTQ1JJQkVfUE9SVAlfSU9XICgnUycsIDB4MzAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1VOU1VCU0NSSUJFX1BPUlQgX0lPVyAoJ1MnLCAweDMxLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSkKKysKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DUkVBVEVfUVVFVUUJX0lPV1IoJ1MnLCAweDMyLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0RFTEVURV9RVUVVRQlfSU9XICgnUycsIDB4MzMsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX0lORk8JX0lPV1IoJ1MnLCAweDM0LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9JTkZPCV9JT1dSKCdTJywgMHgzNSwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfTkFNRURfUVVFVUUJX0lPV1IoJ1MnLCAweDM2LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9TVEFUVVMgX0lPV1IoJ1MnLCAweDQwLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1RFTVBPCV9JT1dSKCdTJywgMHg0MSwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGVtcG8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX1RFTVBPCV9JT1cgKCdTJywgMHg0Miwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGVtcG8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1RJTUVSCV9JT1dSKCdTJywgMHg0NSwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGltZXIpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX1RJTUVSCV9JT1cgKCdTJywgMHg0Niwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGltZXIpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX0NMSUVOVAlfSU9XUignUycsIDB4NDksIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2NsaWVudCkKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfQ0xJRU5UCV9JT1cgKCdTJywgMHg0YSwgc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50KQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9DTElFTlRfUE9PTAlfSU9XUignUycsIDB4NGIsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb29sKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9DTElFTlRfUE9PTAlfSU9XICgnUycsIDB4NGMsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb29sKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1JFTU9WRV9FVkVOVFMJX0lPVyAoJ1MnLCAweDRlLCBzdHJ1Y3Qgc25kX3NlcV9yZW1vdmVfZXZlbnRzKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX1NVQlMJX0lPV1IoJ1MnLCAweDRmLCBzdHJ1Y3Qgc25kX3NlcV9xdWVyeV9zdWJzKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9TVUJTQ1JJUFRJT04JX0lPV1IoJ1MnLCAweDUwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSkKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9RVUVSWV9ORVhUX0NMSUVOVAlfSU9XUignUycsIDB4NTEsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX05FWFRfUE9SVAlfSU9XUignUycsIDB4NTIsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKysKKysjZW5kaWYgLyogX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9hc29jLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvYy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmE3NGNhMjMyCistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvYy5oCitAQCAtMCwwICsxLDYzMyBAQAorKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiB1YXBpL3NvdW5kL2Fzb2MuaCAtLSBBTFNBIFNvQyBGaXJtd2FyZSBDb250cm9scyBhbmQgREFQTQorKyAqCisrICogQ29weXJpZ2h0IChDKSAyMDEyIFRleGFzIEluc3RydW1lbnRzIEluYy4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisrICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisrICoKKysgKiBTaW1wbGUgZmlsZSBBUEkgdG8gbG9hZCBGVyB0aGF0IGluY2x1ZGVzIG1peGVycywgY29lZmZpY2llbnRzLCBEQVBNIGdyYXBocywKKysgKiBhbGdvcml0aG1zLCBlcXVhbGlzZXJzLCBEQUlzLCB3aWRnZXRzIGV0Yy4KKysqLworKworKyNpZm5kZWYgX19MSU5VWF9VQVBJX1NORF9BU09DX0gKKysjZGVmaW5lIF9fTElOVVhfVUFQSV9TTkRfQVNPQ19ICisrCisrI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisrI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorKworKy8qCisrICogTWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgdG9wb2xvZ3kga2NvbnRyb2wgY2FuIHJlcHJlc2VudC4KKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19NQVhfQ0hBTgkJOAorKworKy8qCisrICogTWF4aW11bSBudW1iZXIgb2YgUENNIGZvcm1hdHMgY2FwYWJpbGl0eQorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01BWF9GT1JNQVRTCTE2CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBQQ00gc3RyZWFtIGNvbmZpZ3MKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWCAgOAorKworKy8qCisrICogTWF4aW11bSBudW1iZXIgb2YgcGh5c2ljYWwgbGluaydzIGhhcmR3YXJlIGNvbmZpZ3MKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19IV19DT05GSUdfTUFYCTgKKysKKysvKiBpbmRpdmlkdWFsIGtjb250cm9sIGluZm8gdHlwZXMgLSBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciB0eXBlcyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTVwkJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTV19TWAkyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXX1hSX1NYCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfRU5VTQkJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9CWVRFUwkJNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9FTlVNX1ZBTFVFCTYKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfUkFOR0UJCTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfU1RST0JFCQk4CisrCisrCisrLyogaW5kaXZpZHVhbCB3aWRnZXQga2NvbnRyb2wgaW5mbyB0eXBlcyAtIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIHR5cGVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfVk9MU1cJCTY0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9ET1VCTEUJNjUKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX1ZJUlQJCTY2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9WQUxVRQk2NworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX1BJTgkJNjgKKysKKysvKiBEQVBNIHdpZGdldCB0eXBlcyAtIGFkZCBuZXcgaXRlbXMgdG8gdGhlIGVuZCAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fSU5QVVQJCTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVFBVVAkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9NVVgJCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX01JWEVSCQkzCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QR0EJCTQKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVF9EUlYJNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQURDCQk2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUMJCTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NXSVRDSAk4CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QUkUJCTkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BPU1QJCTEwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BSUZfSU4JMTEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FJRl9PVVQJMTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9JTgkxMworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX09VVAkxNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX0xJTksJMTUKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0JVRkZFUgkxNgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU0NIRURVTEVSCTE3CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9FRkZFQ1QJMTgKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NJR0dFTgkxOQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU1JDCQkyMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQVNSQwkJMjEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0VOQ09ERVIJMjIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIJMjMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0xBU1QJCVNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIKKysKKysvKiBIZWFkZXIgbWFnaWMgbnVtYmVyIGFuZCBzdHJpbmcgc2l6ZXMgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19NQUdJQwkJMHg0MTUzNkY0MyAvKiBBU29DICovCisrCisrLyogc3RyaW5nIHNpemVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTlVNX1RFWFRTCQkxNgorKworKy8qIEFCSSB2ZXJzaW9uICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQUJJX1ZFUlNJT04JMHg1CS8qIGN1cnJlbnQgdmVyc2lvbiAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0FCSV9WRVJTSU9OX01JTgkweDQJLyogb2xkZXN0IHZlcnNpb24gc3VwcG9ydGVkICovCisrCisrLyogTWF4IHNpemUgb2YgVExWIGRhdGEgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19UTFZfU0laRQkJMzIKKysKKysvKgorKyAqIEZpbGUgYW5kIEJsb2NrIGhlYWRlciBkYXRhIHR5cGVzLgorKyAqIEFkZCBuZXcgZ2VuZXJpYyBhbmQgdmVuZG9yIHR5cGVzIHRvIGVuZCBvZiBsaXN0LgorKyAqIEdlbmVyaWMgdHlwZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGNvcmUgd2hpbHN0IHZlbmRvcnMgdHlwZXMgYXJlIHBhc3NlZAorKyAqIHRvIHRoZSBjb21wb25lbnQgZHJpdmVycyBmb3IgaGFuZGxpbmcuCisrICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NSVhFUgkJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQllURVMJCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0VOVU0JCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBUE1fR1JBUEgJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFQTV9XSURHRVQJNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFJX0xJTksJNgorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUENNCQk3CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQU5JRkVTVAk4CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9DT0RFQ19MSU5LCTkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0JBQ0tFTkRfTElOSwkxMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUERBVEEJCTExCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQUkJCTEyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQVgJCVNORF9TT0NfVFBMR19UWVBFX0RBSQorKworKy8qIHZlbmRvciBibG9jayBJRHMgLSBwbGVhc2UgYWRkIG5ldyB2ZW5kb3IgdHlwZXMgdG8gZW5kICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfRlcJMTAwMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0NPTkZJRwkxMDAxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfQ09FRkYJMTAwMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVWRU5ET1JfQ09ERUMJMTAwMworKworKyNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9QTEFZQkFDSwkwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX0NBUFRVUkUJMQorKworKy8qIHZlbmRvciB0dXBsZSB0eXBlcyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfVVVJRAkwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9TVFJJTkcJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfQk9PTAkyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9CWVRFCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1dPUkQJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfU0hPUlQJNQorKworKy8qIERBSSBmbGFncyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX1JBVEVTICAgICAgICAgKDEgPDwgMCkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19DSEFOTkVMUyAgICAgICgxIDw8IDEpCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfU0FNUExFQklUUyAgICAoMSA8PCAyKQorKworKy8qIERBSSBjbG9jayBnYXRpbmcgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfVU5ERUZJTkVECTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfR0FURUQJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9DT05UCQkyCisrCisrLyogREFJIG1jbGtfZGlyZWN0aW9uICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTUNMS19DTyAgICAgICAgICAgIDAgLyogZm9yIGNvZGVjLCBtY2xrIGlzIG91dHB1dCAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01DTEtfQ0kgICAgICAgICAgICAxIC8qIGZvciBjb2RlYywgbWNsayBpcyBpbnB1dCAqLworKworKy8qIERBSSBwaHlzaWNhbCBQQ00gZGF0YSBmb3JtYXRzLgorKyAqIEFkZCBuZXcgZm9ybWF0cyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0kyUyAgICAgICAgICAxIC8qIEkyUyBtb2RlICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSiAgICAgIDIgLyogUmlnaHQgSnVzdGlmaWVkIG1vZGUgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9MRUZUX0ogICAgICAgMyAvKiBMZWZ0IEp1c3RpZmllZCBtb2RlICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0EgICAgICAgIDQgLyogTCBkYXRhIE1TQiBhZnRlciBGUk0gTFJDICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0IgICAgICAgIDUgLyogTCBkYXRhIE1TQiBkdXJpbmcgRlJNIExSQyAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0FDOTcgICAgICAgICA2IC8qIEFDOTcgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9QRE0gICAgICAgICAgNyAvKiBQdWxzZSBkZW5zaXR5IG1vZHVsYXRpb24gKi8KKysKKysvKiBsZWZ0IGFuZCByaWdodCBqdXN0aWZpZWQgYWxzbyBrbm93biBhcyBNU0IgYW5kIExTQiByZXNwZWN0aXZlbHkgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9NU0IgICAgICAgICAgU05EX1NPQ19EQUlfRk9STUFUX0xFRlRfSgorKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0xTQiAgICAgICAgICBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSgorKworKy8qIERBSSBsaW5rIGZsYWdzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfUkFURVMgICAgICAgICAoMSA8PCAwKQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX0NIQU5ORUxTICAgICAgKDEgPDwgMSkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19TQU1QTEVCSVRTICAgICgxIDw8IDIpCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9WT0lDRV9XQUtFVVAgICAgICAgICAgICAoMSA8PCAzKQorKworKy8qIERBSSB0b3BvbG9neSBCQ0xLIHBhcmFtZXRlcgorKyAqIEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29kZWMgaXMgYmNsayBtYXN0ZXIKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19CQ0xLX0NNICAgICAgICAgMCAvKiBjb2RlYyBpcyBiY2xrIG1hc3RlciAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0JDTEtfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGJjbGsgc2xhdmUgKi8KKysKKysvKiBEQUkgdG9wb2xvZ3kgRlNZTkMgcGFyYW1ldGVyCisrICogRm9yIHRoZSBiYWNrd2FyZHMgY2FwYWJpbGl0eSwgYnkgZGVmYXVsdCBjb2RlYyBpcyBmc3luYyBtYXN0ZXIKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19GU1lOQ19DTSAgICAgICAgIDAgLyogY29kZWMgaXMgZnN5bmMgbWFzdGVyICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGZzeW5jIHNsYXZlICovCisrCisrLyoKKysgKiBCbG9jayBIZWFkZXIuCisrICogVGhpcyBoZWFkZXIgcHJlY2VkZXMgYWxsIG9iamVjdCBhbmQgb2JqZWN0IGFycmF5cyBiZWxvdy4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciB7CisrCV9fbGUzMiBtYWdpYzsJCS8qIG1hZ2ljIG51bWJlciAqLworKwlfX2xlMzIgYWJpOwkJLyogQUJJIHZlcnNpb24gKi8KKysJX19sZTMyIHZlcnNpb247CQkvKiBvcHRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgdmVyc2lvbiBkZXRhaWxzICovCisrCV9fbGUzMiB0eXBlOwkJLyogU05EX1NPQ19UUExHX1RZUEVfICovCisrCV9fbGUzMiBzaXplOwkJLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgdmVuZG9yX3R5cGU7CS8qIG9wdGlvbmFsIHZlbmRvciBzcGVjaWZpYyB0eXBlIGluZm8gKi8KKysJX19sZTMyIHBheWxvYWRfc2l6ZTsJLyogZGF0YSBieXRlcywgZXhjbHVkaW5nIHRoaXMgaGVhZGVyICovCisrCV9fbGUzMiBpbmRleDsJCS8qIGlkZW50aWZpZXIgZm9yIGJsb2NrICovCisrCV9fbGUzMiBjb3VudDsJCS8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBibG9jayAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyogdmVuZG9yIHR1cGxlIGZvciB1dWlkICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHsKKysJX19sZTMyIHRva2VuOworKwljaGFyIHV1aWRbMTZdOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyogdmVuZG9yIHR1cGxlIGZvciBhIGJvb2wvYnl0ZS9zaG9ydC93b3JkIHZhbHVlICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdmFsdWVfZWxlbSB7CisrCV9fbGUzMiB0b2tlbjsKKysJX19sZTMyIHZhbHVlOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyogdmVuZG9yIHR1cGxlIGZvciBzdHJpbmcgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9zdHJpbmdfZWxlbSB7CisrCV9fbGUzMiB0b2tlbjsKKysJY2hhciBzdHJpbmdbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfYXJyYXkgeworKwlfX2xlMzIgc2l6ZTsJLyogc2l6ZSBpbiBieXRlcyBvZiB0aGUgYXJyYXksIGluY2x1ZGluZyBhbGwgZWxlbWVudHMgKi8KKysJX19sZTMyIHR5cGU7CS8qIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFXyAqLworKwlfX2xlMzIgbnVtX2VsZW1zOwkvKiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJyYXkgKi8KKysJdW5pb24geworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHV1aWRbMF07CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl92YWx1ZV9lbGVtIHZhbHVlWzBdOworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3Jfc3RyaW5nX2VsZW0gc3RyaW5nWzBdOworKwl9OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBQcml2YXRlIGRhdGEuCisrICogQWxsIHRvcG9sb2d5IG9iamVjdHMgbWF5IGhhdmUgcHJpdmF0ZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGRyaXZlciBvcgorKyAqIGZpcm13YXJlLiBDb3JlIHdpbGwgaWdub3JlIHRoaXMgZGF0YS4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgeworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgcHJpdmF0ZSBkYXRhICovCisrCXVuaW9uIHsKKysJCWNoYXIgZGF0YVswXTsKKysJCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX2FycmF5IGFycmF5WzBdOworKwl9OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBLY29udHJvbCBUTFYgZGF0YS4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3Rsdl9kYnNjYWxlIHsKKysJX19sZTMyIG1pbjsKKysJX19sZTMyIHN0ZXA7CisrCV9fbGUzMiBtdXRlOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfdGx2IHsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiB0eXBlOwkvKiBTTkRSVl9DVExfVExWVF8qLCB0eXBlIG9mIFRMViAqLworKwl1bmlvbiB7CisrCQlfX2xlMzIgZGF0YVtTTkRfU09DX1RQTEdfVExWX1NJWkVdOworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ190bHZfZGJzY2FsZSBzY2FsZTsKKysJfTsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogS2NvbnRyb2wgY2hhbm5lbCBkYXRhCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIHsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiByZWc7CisrCV9fbGUzMiBzaGlmdDsKKysJX19sZTMyIGlkOwkvKiBJRCBtYXBzIHRvIExlZnQsIFJpZ2h0LCBMRkUgZXRjICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEdlbmVyaWNsIE9wZXJhdGlvbnMgSURzLCBmb3IgYmluZGluZyBLY29udHJvbCBvciBCeXRlcyBleHQgb3BzCisrICogS2NvbnRyb2wgb3BzIG5lZWQgZ2V0L3B1dC9pbmZvLgorKyAqIEJ5dGVzIGV4dCBvcHMgbmVlZCBnZXQvcHV0LgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIHsKKysJX19sZTMyIGdldDsKKysJX19sZTMyIHB1dDsKKysJX19sZTMyIGluZm87CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIGtjb250cm9sIGhlYWRlcgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciB7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgdHlwZTsKKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTMyIGFjY2VzczsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgb3BzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF90bHYgdGx2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBTdHJlYW0gQ2FwYWJpbGl0aWVzCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworKwlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworKwlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCisrCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKysJX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCisrCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworKwlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIHNpZ19iaXRzOyAgICAgICAgLyogbnVtYmVyIG9mIGJpdHMgb2YgY29udGVudCAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBGRSBvciBCRSBTdHJlYW0gY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQgYnkgU1cvRlcKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogTmFtZSBvZiB0aGUgc3RyZWFtICovCisrCV9fbGU2NCBmb3JtYXQ7CQkvKiBTTkRSVl9QQ01fRk1UQklUXyogKi8KKysJX19sZTMyIHJhdGU7CQkvKiBTTkRSVl9QQ01fUkFURV8qICovCisrCV9fbGUzMiBwZXJpb2RfYnl0ZXM7CS8qIHNpemUgb2YgcGVyaW9kIGluIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfYnl0ZXM7CS8qIHNpemUgb2YgYnVmZmVyIGluIGJ5dGVzICovCisrCV9fbGUzMiBjaGFubmVsczsJLyogY2hhbm5lbHMgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKy8qCisrICogRGVzY3JpYmVzIGEgcGh5c2ljYWwgbGluaydzIHJ1bnRpbWUgc3VwcG9ydGVkIGhhcmR3YXJlIGNvbmZpZywKKysgKiBpLmUuIGhhcmR3YXJlIGF1ZGlvIGZvcm1hdHMuCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19od19jb25maWcgeworKwlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgaWQ7CQkvKiB1bmlxdWUgSUQgLSAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJX19sZTMyIGZtdDsJCS8qIFNORF9TT0NfREFJX0ZPUk1BVF8gZm9ybWF0IHZhbHVlICovCisrCV9fdTggY2xvY2tfZ2F0ZWQ7CS8qIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfIHZhbHVlICovCisrCV9fdTggaW52ZXJ0X2JjbGs7CS8qIDEgZm9yIGludmVydGVkIEJDTEssIDAgZm9yIG5vcm1hbCAqLworKwlfX3U4IGludmVydF9mc3luYzsJLyogMSBmb3IgaW52ZXJ0ZWQgZnJhbWUgY2xvY2ssIDAgZm9yIG5vcm1hbCAqLworKwlfX3U4IGJjbGtfbWFzdGVyOwkvKiBTTkRfU09DX1RQTEdfQkNMS18gdmFsdWUgKi8KKysJX191OCBmc3luY19tYXN0ZXI7CS8qIFNORF9TT0NfVFBMR19GU1lOQ18gdmFsdWUgKi8KKysJX191OCBtY2xrX2RpcmVjdGlvbjsgICAgLyogU05EX1NPQ19UUExHX01DTEtfIHZhbHVlICovCisrCV9fbGUxNiByZXNlcnZlZDsJLyogZm9yIDMyYml0IGFsaWdubWVudCAqLworKwlfX2xlMzIgbWNsa19yYXRlOwkvKiBNQ0xLIG9yIFNZU0NMSyBmcmVxZW5jeSBpbiBIeiAqLworKwlfX2xlMzIgYmNsa19yYXRlOwkvKiBCQ0xLIGZyZXFlbmN5IGluIEh6ICovCisrCV9fbGUzMiBmc3luY19yYXRlOwkvKiBmcmFtZSBjbG9jayBpbiBIeiAqLworKwlfX2xlMzIgdGRtX3Nsb3RzOwkvKiBudW1iZXIgb2YgVERNIHNsb3RzIGluIHVzZSAqLworKwlfX2xlMzIgdGRtX3Nsb3Rfd2lkdGg7CS8qIHdpZHRoIGluIGJpdHMgZm9yIGVhY2ggc2xvdCAqLworKwlfX2xlMzIgdHhfc2xvdHM7CS8qIGJpdCBtYXNrIGZvciBhY3RpdmUgVHggc2xvdHMgKi8KKysJX19sZTMyIHJ4X3Nsb3RzOwkvKiBiaXQgbWFzayBmb3IgYWN0aXZlIFJ4IHNsb3RzICovCisrCV9fbGUzMiB0eF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFR4IGNoYW5uZWxzICovCisrCV9fbGUzMiB0eF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCisrCV9fbGUzMiByeF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFJ4IGNoYW5uZWxzICovCisrCV9fbGUzMiByeF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIE1hbmlmZXN0LiBMaXN0IHRvdGFscyBmb3IgZWFjaCBwYXlsb2FkIHR5cGUuIE5vdCB1c2VkIGluIHBhcnNpbmcsIGJ1dCB3aWxsCisrICogYmUgcGFzc2VkIHRvIHRoZSBjb21wb25lbnQgZHJpdmVyIGJlZm9yZSBhbnkgb3RoZXIgb2JqZWN0cyBpbiBvcmRlciBmb3IgYW55CisrICogZ2xvYmFsIGNvbXBvbmVudCByZXNvdXJjZSBhbGxvY2F0aW9ucy4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIG1hbmlmZXN0IDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0ICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGNvbnRyb2xfZWxlbXM7CS8qIG51bWJlciBvZiBjb250cm9sIGVsZW1lbnRzICovCisrCV9fbGUzMiB3aWRnZXRfZWxlbXM7CS8qIG51bWJlciBvZiB3aWRnZXQgZWxlbWVudHMgKi8KKysJX19sZTMyIGdyYXBoX2VsZW1zOwkvKiBudW1iZXIgb2YgZ3JhcGggZWxlbWVudHMgKi8KKysJX19sZTMyIHBjbV9lbGVtczsJLyogbnVtYmVyIG9mIFBDTSBlbGVtZW50cyAqLworKwlfX2xlMzIgZGFpX2xpbmtfZWxlbXM7CS8qIG51bWJlciBvZiBEQUkgbGluayBlbGVtZW50cyAqLworKwlfX2xlMzIgZGFpX2VsZW1zOwkvKiBudW1iZXIgb2YgcGh5c2ljYWwgREFJIGVsZW1lbnRzICovCisrCV9fbGUzMiByZXNlcnZlZFsyMF07CS8qIHJlc2VydmVkIGZvciBuZXcgQUJJIGVsZW1lbnQgdHlwZXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIE1peGVyIGtjb250cm9sLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgbWl4ZXIga2NvbnRyb2wgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgeworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIG1pbjsKKysJX19sZTMyIG1heDsKKysJX19sZTMyIHBsYXRmb3JtX21heDsKKysJX19sZTMyIGludmVydDsKKysJX19sZTMyIG51bV9jaGFubmVsczsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIGNoYW5uZWxbU05EX1NPQ19UUExHX01BWF9DSEFOXTsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEVudW1lcmF0ZWQga2NvbnRyb2wKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGVudW0ga2NvbnRyb2wgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCB7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgbnVtX2NoYW5uZWxzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgY2hhbm5lbFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOworKwlfX2xlMzIgaXRlbXM7CisrCV9fbGUzMiBtYXNrOworKwlfX2xlMzIgY291bnQ7CisrCWNoYXIgdGV4dHNbU05EX1NPQ19UUExHX05VTV9URVhUU11bU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlMzIgdmFsdWVzW1NORF9TT0NfVFBMR19OVU1fVEVYVFMgKiBTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTiAvIDRdOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogQnl0ZXMga2NvbnRyb2wKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGJ5dGVzIGtjb250cm9sIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2J5dGVzX2NvbnRyb2wgfCAgTiB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19ieXRlc19jb250cm9sIHsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBtYXg7CisrCV9fbGUzMiBtYXNrOworKwlfX2xlMzIgYmFzZTsKKysJX19sZTMyIG51bV9yZWdzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyBleHRfb3BzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogREFQTSBHcmFwaCBFbGVtZW50CisrICoKKysgKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBEQVBNIGdyYXBoIGVsZW1lbnRzIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICAgIHwgIDEgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fZ3JhcGhfZWxlbSB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV9ncmFwaF9lbGVtIHsKKysJY2hhciBzaW5rW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJY2hhciBjb250cm9sW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJY2hhciBzb3VyY2VbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBEQVBNIFdpZGdldC4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIERBUE0gd2lkZ2V0IDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fd2lkZ2V0ICAgICB8ICBOICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8IDB8MSB8CisrICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8IDB8TiB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICoKKysgKiBPcHRpb25hbCBlbnVtIG9yIG1peGVyIGNvbnRyb2wgY2FuIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgZWFjaCB3aWRnZXQKKysgKiBpbiB0aGUgYmxvY2suCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX3dpZGdldCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGlkOwkJLyogU05EX1NPQ19EQVBNX0NUTCAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIHNuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysKKysJX19sZTMyIHJlZzsJCS8qIG5lZ2F0aXZlIHJlZyA9IG5vIGRpcmVjdCBkYXBtICovCisrCV9fbGUzMiBzaGlmdDsJCS8qIGJpdHMgdG8gc2hpZnQgKi8KKysJX19sZTMyIG1hc2s7CQkvKiBub24tc2hpZnRlZCBtYXNrICovCisrCV9fbGUzMiBzdWJzZXE7CQkvKiBzb3J0IHdpdGhpbiB3aWRnZXQgdHlwZSAqLworKwlfX2xlMzIgaW52ZXJ0OwkJLyogaW52ZXJ0IHRoZSBwb3dlciBiaXQgKi8KKysJX19sZTMyIGlnbm9yZV9zdXNwZW5kOwkvKiBrZXB0IGVuYWJsZWQgb3ZlciBzdXNwZW5kICovCisrCV9fbGUxNiBldmVudF9mbGFnczsKKysJX19sZTE2IGV2ZW50X3R5cGU7CisrCV9fbGUzMiBudW1fa2NvbnRyb2xzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKysJLyoKKysJICoga2NvbnRyb2xzIHRoYXQgcmVsYXRlIHRvIHRoaXMgd2lkZ2V0CisrCSAqIGZvbGxvdyBoZXJlIGFmdGVyIHdpZGdldCBwcml2YXRlIGRhdGEKKysJICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysKKysvKgorKyAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBQQ00gKEZFIERBSSAmIERBSSBsaW5rKS4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIFBDTSA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19wY20gICAgICAgICAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19wY20geworKwlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCWNoYXIgcGNtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTMyIHBjbV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggd2l0aCBEQUkgbGluayAqLworKwlfX2xlMzIgZGFpX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgcGxheWJhY2s7CS8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKysJX19sZTMyIGNhcHR1cmU7CQkvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKysJX19sZTMyIGNvbXByZXNzOwkvKiAxID0gY29tcHJlc3NlZDsgMCA9IFBDTSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogZm9yIERBSSBsaW5rICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsJLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCisrCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCisrCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19MTktfRkxHQklUXyogZmxhZyB2YWx1ZSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKy8qCisrICogRGVzY3JpYmVzIHRoZSBwaHlzaWNhbCBsaW5rIHJ1bnRpbWUgc3VwcG9ydGVkIGNvbmZpZ3Mgb3IgcGFyYW1zCisrICoKKysgKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBwaHlzaWNhbCBsaW5rIGNvbmZpZyA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyB7CisrCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBpZDsgICAgICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJY2hhciBzdHJlYW1fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIHN0cmVhbSBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfaHdfY29uZmlnIGh3X2NvbmZpZ1tTTkRfU09DX1RQTEdfSFdfQ09ORklHX01BWF07IC8qIGh3IGNvbmZpZ3MgKi8KKysJX19sZTMyIG51bV9od19jb25maWdzOyAgICAgICAgIC8qIG51bWJlciBvZiBodyBjb25maWdzICovCisrCV9fbGUzMiBkZWZhdWx0X2h3X2NvbmZpZ19pZDsgICAvKiBkZWZhdWx0IGh3IGNvbmZpZyBJRCBmb3IgaW5pdCAqLworKwlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworKwlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF8qIGZsYWcgdmFsdWUgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBwaHlzaWNhbCBEQUkuCisrICogSXQgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGJhY2tlbmQgREFJcyBmb3IgRFBDTS4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIHBoeXNpY2FsIERBSSA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgICAgICAgICAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgeworKwlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJX19sZTMyIGRhaV9pZDsgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgcGxheWJhY2s7ICAgICAgICAvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCisrCV9fbGUzMiBjYXB0dXJlOyAgICAgICAgIC8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKysJX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKysJX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfKiAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogT2xkIHZlcnNpb24gb2YgQUJJIHN0cnVjdHMsIHN1cHBvcnRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKysgKi8KKysKKysvKiBNYW5pZmVzdCB2NCAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3RfdjQgeworKwlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBjb250cm9sX2VsZW1zOwkvKiBudW1iZXIgb2YgY29udHJvbCBlbGVtZW50cyAqLworKwlfX2xlMzIgd2lkZ2V0X2VsZW1zOwkvKiBudW1iZXIgb2Ygd2lkZ2V0IGVsZW1lbnRzICovCisrCV9fbGUzMiBncmFwaF9lbGVtczsJLyogbnVtYmVyIG9mIGdyYXBoIGVsZW1lbnRzICovCisrCV9fbGUzMiBwY21fZWxlbXM7CS8qIG51bWJlciBvZiBQQ00gZWxlbWVudHMgKi8KKysJX19sZTMyIGRhaV9saW5rX2VsZW1zOwkvKiBudW1iZXIgb2YgREFJIGxpbmsgZWxlbWVudHMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX3BhY2tlZDsKKysKKysvKiBTdHJlYW0gQ2FwYWJpbGl0aWVzIHY0ICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2Fwc192NCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworKwlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworKwlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCisrCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKysJX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCisrCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworKwlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKyt9IF9fcGFja2VkOworKworKy8qIFBDTSB2NCAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfcGNtX3Y0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIHBjbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCV9fbGUzMiBwY21faWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoIHdpdGggREFJIGxpbmsgKi8KKysJX19sZTMyIGRhaV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJX19sZTMyIHBsYXliYWNrOwkvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCisrCV9fbGUzMiBjYXB0dXJlOwkJLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCisrCV9fbGUzMiBjb21wcmVzczsJLyogMSA9IGNvbXByZXNzZWQ7IDAgPSBQQ00gKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIGZvciBEQUkgbGluayAqLworKwlfX2xlMzIgbnVtX3N0cmVhbXM7CS8qIG51bWJlciBvZiBzdHJlYW1zICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHNfdjQgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworK30gX19wYWNrZWQ7CisrCisrLyogUGh5c2ljYWwgbGluayBjb25maWcgdjQgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnX3Y0IHsKKysJX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGlkOyAgICAgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCisrfSBfX3BhY2tlZDsKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uZGYxMTUzY2UKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaAorQEAgLTAsMCArMSwxMDM4IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgQWR2YW5jZWQgTGludXggU291bmQgQXJjaGl0ZWN0dXJlIC0gQUxTQSAtIERyaXZlcgorKyAqICBDb3B5cmlnaHQgKGMpIDE5OTQtMjAwMyBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PiwKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJyYW1vIEJhZ25hcmEgPGFicmFtb0BhbHNhLXByb2plY3Qub3JnPgorKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysKKysjaWZuZGVmIF9VQVBJX19TT1VORF9BU09VTkRfSAorKyNkZWZpbmUgX1VBUElfX1NPVU5EX0FTT1VORF9ICisrCisrI2lmIGRlZmluZWQoX19LRVJORUxfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pCisrI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisrI2VuZGlmCisrCisrI2lmbmRlZiBfX0tFUk5FTF9fCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisrI2VuZGlmCisrCisrLyoKKysgKiAgcHJvdG9jb2wgdmVyc2lvbgorKyAqLworKworKyNkZWZpbmUgU05EUlZfUFJPVE9DT0xfVkVSU0lPTihtYWpvciwgbWlub3IsIHN1Ym1pbm9yKSAoKChtYWpvcik8PDE2KXwoKG1pbm9yKTw8OCl8KHN1Ym1pbm9yKSkKKysjZGVmaW5lIFNORFJWX1BST1RPQ09MX01BSk9SKHZlcnNpb24pICgoKHZlcnNpb24pPj4xNikmMHhmZmZmKQorKyNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUlOT1IodmVyc2lvbikgKCgodmVyc2lvbik+PjgpJjB4ZmYpCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NSUNSTyh2ZXJzaW9uKSAoKHZlcnNpb24pJjB4ZmYpCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9JTkNPTVBBVElCTEUoa3ZlcnNpb24sIHV2ZXJzaW9uKSBcCisrCShTTkRSVl9QUk9UT0NPTF9NQUpPUihrdmVyc2lvbikgIT0gU05EUlZfUFJPVE9DT0xfTUFKT1IodXZlcnNpb24pIHx8IFwKKysJIChTTkRSVl9QUk9UT0NPTF9NQUpPUihrdmVyc2lvbikgPT0gU05EUlZfUFJPVE9DT0xfTUFKT1IodXZlcnNpb24pICYmIFwKKysJICAgU05EUlZfUFJPVE9DT0xfTUlOT1Ioa3ZlcnNpb24pICE9IFNORFJWX1BST1RPQ09MX01JTk9SKHV2ZXJzaW9uKSkpCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICBEaWdpdGFsIGF1ZGlvIGludGVyZmFjZQkJCQkJICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK3N0cnVjdCBzbmRfYWVzX2llYzk1OCB7CisrCXVuc2lnbmVkIGNoYXIgc3RhdHVzWzI0XTsJLyogQUVTL0lFQzk1OCBjaGFubmVsIHN0YXR1cyBiaXRzICovCisrCXVuc2lnbmVkIGNoYXIgc3ViY29kZVsxNDddOwkvKiBBRVMvSUVDOTU4IHN1YmNvZGUgYml0cyAqLworKwl1bnNpZ25lZCBjaGFyIHBhZDsJCS8qIG5vdGhpbmcgKi8KKysJdW5zaWduZWQgY2hhciBkaWdfc3ViZnJhbWVbNF07CS8qIEFFUy9JRUM5NTggc3ViZnJhbWUgYml0cyAqLworK307CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICBDRUEtODYxIEF1ZGlvIEluZm9GcmFtZS4gVXNlZCBpbiBIRE1JIGFuZCBEaXNwbGF5UG9ydAkJICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK3N0cnVjdCBzbmRfY2VhXzg2MV9hdWRfaWYgeworKwl1bnNpZ25lZCBjaGFyIGRiMV9jdF9jYzsgLyogY29kaW5nIHR5cGUgYW5kIGNoYW5uZWwgY291bnQgKi8KKysJdW5zaWduZWQgY2hhciBkYjJfc2Zfc3M7IC8qIHNhbXBsZSBmcmVxdWVuY3kgYW5kIHNpemUgKi8KKysJdW5zaWduZWQgY2hhciBkYjM7IC8qIG5vdCB1c2VkLCBhbGwgemVyb3MgKi8KKysJdW5zaWduZWQgY2hhciBkYjRfY2E7IC8qIGNoYW5uZWwgYWxsb2NhdGlvbiBjb2RlICovCisrCXVuc2lnbmVkIGNoYXIgZGI1X2RtaW5oX2xzdjsgLyogZG93bm1peCBpbmhpYml0ICYgbGV2ZWwtc2hpdCB2YWx1ZXMgKi8KKyt9OworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgIFNlY3Rpb24gZm9yIGRyaXZlciBoYXJkd2FyZSBkZXBlbmRlbnQgaW50ZXJmYWNlIC0gL2Rldi9zbmQvaHc/ICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2RlZmluZSBTTkRSVl9IV0RFUF9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDEpCisrCisrZW51bSB7CisrCVNORFJWX0hXREVQX0lGQUNFX09QTDIgPSAwLAorKwlTTkRSVl9IV0RFUF9JRkFDRV9PUEwzLAorKwlTTkRSVl9IV0RFUF9JRkFDRV9PUEw0LAorKwlTTkRSVl9IV0RFUF9JRkFDRV9TQjE2Q1NQLAkvKiBDcmVhdGl2ZSBTaWduYWwgUHJvY2Vzc29yICovCisrCVNORFJWX0hXREVQX0lGQUNFX0VNVTEwSzEsCS8qIEZYODAxMCBwcm9jZXNzb3IgaW4gRU1VMTBLMSBjaGlwICovCisrCVNORFJWX0hXREVQX0lGQUNFX1lTUzIyNSwJLyogWWFtYWhhIEZYIHByb2Nlc3NvciAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9JQ1MyMTE1LAkvKiBXYXZldGFibGUgc3ludGggKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfU1NDQVBFLAkvKiBFbnNvbmlxIFNvdW5kU2NhcGUgSVNBIGNhcmQgKE1DNjhFQzAwMCkgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfVlgsCQkvKiBEaWdpZ3JhbSBWWCBjYXJkcyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9NSVhBUlQsCS8qIERpZ2lncmFtIG1pWGFydCBjYXJkcyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9VU1gyWSwJLyogVGFzY2FtIFVTMTIyLCBVUzIyNCAmIFVTNDI4IHVzYiAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9FTVVYX1dBVkVUQUJMRSwgLyogRW11WCB3YXZldGFibGUgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfQkxVRVRPT1RILAkvKiBCbHVldG9vdGggYXVkaW8gKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfVVNYMllfUENNLAkvKiBUYXNjYW0gVVMxMjIsIFVTMjI0ICYgVVM0MjggcmF3dXNiIHBjbSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9QQ1hIUiwJLyogRGlnaWdyYW0gUENYSFIgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfU0JfUkMsCS8qIFNCIEV4dGlneS9BdWRpZ3kyTlggcmVtb3RlIGNvbnRyb2wgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfSERBLAkJLyogSEQtYXVkaW8gKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfVVNCX1NUUkVBTSwJLyogZGlyZWN0IGFjY2VzcyB0byB1c2Igc3RyZWFtICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0RJQ0UsCS8qIFRDIERJQ0UgRmlyZVdpcmUgZGV2aWNlICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVXT1JLUywJLyogRWNobyBBdWRpbyBGaXJld29ya3MgYmFzZWQgZGV2aWNlICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0JFQk9CLAkvKiBCcmlkZ2VDbyBCZUJvQiBiYXNlZCBkZXZpY2UgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfT1hGVywJLyogT3hmb3JkIE9YRlc5NzAvOTcxIGJhc2VkIGRldmljZSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19ESUdJMDBYLAkvKiBEaWdpZGVzaWduIERpZ2kgMDAyLzAwMyBmYW1pbHkgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfVEFTQ0FNLAkvKiBUQVNDQU0gRmlyZVdpcmUgc2VyaWVzICovCisrCVNORFJWX0hXREVQX0lGQUNFX0xJTkU2LAkvKiBMaW5lNiBVU0IgcHJvY2Vzc29ycyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19NT1RVLAkvKiBNT1RVIEZpcmVXaXJlIHNlcmllcyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19GSVJFRkFDRSwJLyogUk1FIEZpcmVmYWNlIHNlcmllcyAqLworKworKwkvKiBEb24ndCBmb3JnZXQgdG8gY2hhbmdlIHRoZSBmb2xsb3dpbmc6ICovCisrCVNORFJWX0hXREVQX0lGQUNFX0xBU1QgPSBTTkRSVl9IV0RFUF9JRkFDRV9GV19GSVJFRkFDRQorK307CisrCisrc3RydWN0IHNuZF9od2RlcF9pbmZvIHsKKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFdSOiBkZXZpY2UgbnVtYmVyICovCisrCWludCBjYXJkOwkJCS8qIFI6IGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogSUQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIGh3ZGVwIG5hbWUgKi8KKysJaW50IGlmYWNlOwkJCS8qIGh3ZGVwIGludGVyZmFjZSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworK307CisrCisrLyogZ2VuZXJpYyBEU1AgbG9hZGVyICovCisrc3RydWN0IHNuZF9od2RlcF9kc3Bfc3RhdHVzIHsKKysJdW5zaWduZWQgaW50IHZlcnNpb247CQkvKiBSOiBkcml2ZXItc3BlY2lmaWMgdmVyc2lvbiAqLworKwl1bnNpZ25lZCBjaGFyIGlkWzMyXTsJCS8qIFI6IGRyaXZlci1zcGVjaWZpYyBJRCBzdHJpbmcgKi8KKysJdW5zaWduZWQgaW50IG51bV9kc3BzOwkJLyogUjogbnVtYmVyIG9mIERTUCBpbWFnZXMgdG8gdHJhbnNmZXIgKi8KKysJdW5zaWduZWQgaW50IGRzcF9sb2FkZWQ7CS8qIFI6IGJpdCBmbGFncyBpbmRpY2F0aW5nIHRoZSBsb2FkZWQgRFNQcyAqLworKwl1bnNpZ25lZCBpbnQgY2hpcF9yZWFkeTsJLyogUjogMSA9IGluaXRpYWxpemF0aW9uIGZpbmlzaGVkICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrc3RydWN0IHNuZF9od2RlcF9kc3BfaW1hZ2UgeworKwl1bnNpZ25lZCBpbnQgaW5kZXg7CQkvKiBXOiBEU1AgaW5kZXggKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzY0XTsJCS8qIFc6IElEIChlLmcuIGZpbGUgbmFtZSkgKi8KKysJdW5zaWduZWQgY2hhciBfX3VzZXIgKmltYWdlOwkvKiBXOiBiaW5hcnkgaW1hZ2UgKi8KKysJc2l6ZV90IGxlbmd0aDsJCQkvKiBXOiBzaXplIG9mIGltYWdlIGluIGJ5dGVzICovCisrCXVuc2lnbmVkIGxvbmcgZHJpdmVyX2RhdGE7CS8qIFc6IGRyaXZlci1zcGVjaWZpYyBkYXRhICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX1BWRVJTSU9OCV9JT1IgKCdIJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfSU5GTwkJX0lPUiAoJ0gnLCAweDAxLCBzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8pCisrI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9EU1BfU1RBVFVTCV9JT1IoJ0gnLCAweDAyLCBzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9EU1BfTE9BRAlfSU9XKCdIJywgMHgwMywgc3RydWN0IHNuZF9od2RlcF9kc3BfaW1hZ2UpCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgRGlnaXRhbCBBdWRpbyAoUENNKSBpbnRlcmZhY2UgLSAvZGV2L3NuZC9wY20/PyAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNkZWZpbmUgU05EUlZfUENNX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgMTQpCisrCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIHNuZF9wY21fdWZyYW1lc190OworK3R5cGVkZWYgc2lnbmVkIGxvbmcgc25kX3BjbV9zZnJhbWVzX3Q7CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9DTEFTU19HRU5FUklDID0gMCwJLyogc3RhbmRhcmQgbW9ubyBvciBzdGVyZW8gZGV2aWNlICovCisrCVNORFJWX1BDTV9DTEFTU19NVUxUSSwJCS8qIG11bHRpY2hhbm5lbCBkZXZpY2UgKi8KKysJU05EUlZfUENNX0NMQVNTX01PREVNLAkJLyogc29mdHdhcmUgbW9kZW0gY2xhc3MgKi8KKysJU05EUlZfUENNX0NMQVNTX0RJR0lUSVpFUiwJLyogZGlnaXRpemVyIGNsYXNzICovCisrCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKysJU05EUlZfUENNX0NMQVNTX0xBU1QgPSBTTkRSVl9QQ01fQ0xBU1NfRElHSVRJWkVSLAorK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9TVUJDTEFTU19HRU5FUklDX01JWCA9IDAsIC8qIG1vbm8gb3Igc3RlcmVvIHN1YmRldmljZXMgYXJlIG1peGVkIHRvZ2V0aGVyICovCisrCVNORFJWX1BDTV9TVUJDTEFTU19NVUxUSV9NSVgsCS8qIG11bHRpY2hhbm5lbCBzdWJkZXZpY2VzIGFyZSBtaXhlZCB0b2dldGhlciAqLworKwkvKiBEb24ndCBmb3JnZXQgdG8gY2hhbmdlIHRoZSBmb2xsb3dpbmc6ICovCisrCVNORFJWX1BDTV9TVUJDTEFTU19MQVNUID0gU05EUlZfUENNX1NVQkNMQVNTX01VTFRJX01JWCwKKyt9OworKworK2VudW0geworKwlTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLID0gMCwKKysJU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFLAorKwlTTkRSVl9QQ01fU1RSRUFNX0xBU1QgPSBTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUsCisrfTsKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9hY2Nlc3NfdDsKKysjZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9JTlRFUkxFQVZFRAkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMCkgLyogaW50ZXJsZWF2ZWQgbW1hcCAqLworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX05PTklOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAxKSAvKiBub25pbnRlcmxlYXZlZCBtbWFwICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfQ09NUExFWAkJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDIpIC8qIGNvbXBsZXggbW1hcCAqLworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19SV19JTlRFUkxFQVZFRAkJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDMpIC8qIHJlYWRpL3dyaXRlaSAqLworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19SV19OT05JTlRFUkxFQVZFRAkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgNCkgLyogcmVhZG4vd3JpdGVuICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX0xBU1QJCVNORFJWX1BDTV9BQ0NFU1NfUldfTk9OSU5URVJMRUFWRUQKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9mb3JtYXRfdDsKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzgJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDApCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1U4CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMykKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0KQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNikgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNykgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgOCkgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgOSkgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTApCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTEpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTIpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTMpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNCkgLyogNC1ieXRlIGZsb2F0LCBJRUVFLTc1NCAzMi1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNSkgLyogNC1ieXRlIGZsb2F0LCBJRUVFLTc1NCAzMi1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE2KSAvKiA4LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDY0LWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTcpIC8qIDgtYnl0ZSBmbG9hdCwgSUVFRS03NTQgNjQtYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEUgKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE4KSAvKiBJRUMtOTU4IHN1YmZyYW1lLCBMaXR0bGUgRW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9CRSAoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTkpIC8qIElFQy05NTggc3ViZnJhbWUsIEJpZyBFbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTVVfTEFXCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjApCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0FfTEFXCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjEpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lNQV9BRFBDTQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjIpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX01QRUcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMykKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfR1NNCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjQpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjUpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNikgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI3KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjgpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKysvKiBnYXAgaW4gdGhlIG51bWJlcmluZyBmb3IgYSBmdXR1cmUgc3RhbmRhcmQgbGluZWFyIGZvcm1hdCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TUEVDSUFMCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzIpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMzKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzUpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM2KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNykJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwXzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzgpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM5KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMThfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE4XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDEpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxOF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQyKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMThfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MykJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM18yNAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDQpIC8qIDggc2FtcGxlcyBpbiAzIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfMjRfMUIJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ1KSAvKiAxIHNhbXBsZSBpbiAxIGJ5dGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM180MAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDYpIC8qIDggU2FtcGxlcyBpbiA1IGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfNDBfMUIJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ3KSAvKiAxIHNhbXBsZSBpbiAxIGJ5dGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1U4CQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDgpIC8qIERTRCwgMS1ieXRlIHNhbXBsZXMgRFNEICh4OCkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDkpIC8qIERTRCwgMi1ieXRlIHNhbXBsZXMgRFNEICh4MTYpLCBsaXR0bGUgZW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMzJfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUwKSAvKiBEU0QsIDQtYnl0ZSBzYW1wbGVzIERTRCAoeDMyKSwgbGl0dGxlIGVuZGlhbiAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MSkgLyogRFNELCAyLWJ5dGUgc2FtcGxlcyBEU0QgKHgxNiksIGJpZyBlbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTIpIC8qIERTRCwgNC1ieXRlIHNhbXBsZXMgRFNEICh4MzIpLCBiaWcgZW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0xBU1QJCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GSVJTVAkJU05EUlZfUENNX0ZPUk1BVF9TOAorKworKyNpZmRlZiBTTkRSVl9MSVRUTEVfRU5ESUFOCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNgkJU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2CQlTTkRSVl9QQ01fRk9STUFUX1UxNl9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjQJCVNORFJWX1BDTV9GT1JNQVRfUzI0X0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNAkJU05EUlZfUENNX0ZPUk1BVF9VMjRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyCQlTTkRSVl9QQ01fRk9STUFUX1MzMl9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzIJCVNORFJWX1BDTV9GT1JNQVRfVTMyX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUCQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjQJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRSBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjAJCVNORFJWX1BDTV9GT1JNQVRfUzIwX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMAkJU05EUlZfUENNX0ZPUk1BVF9VMjBfTEUKKysjZW5kaWYKKysjaWZkZWYgU05EUlZfQklHX0VORElBTgorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTYJCVNORFJWX1BDTV9GT1JNQVRfUzE2X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNgkJU05EUlZfUENNX0ZPUk1BVF9VMTZfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0CQlTTkRSVl9QQ01fRk9STUFUX1MyNF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjQJCVNORFJWX1BDTV9GT1JNQVRfVTI0X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMgkJU05EUlZfUENNX0ZPUk1BVF9TMzJfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyCQlTTkRSVl9QQ01fRk9STUFUX1UzMl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVAkJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0CVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUUgU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwCQlTTkRSVl9QQ01fRk9STUFUX1MyMF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjAJCVNORFJWX1BDTV9GT1JNQVRfVTIwX0JFCisrI2VuZGlmCisrCisrdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fc3ViZm9ybWF0X3Q7CisrI2RlZmluZQlTTkRSVl9QQ01fU1VCRk9STUFUX1NURAkJKChfX2ZvcmNlIHNuZF9wY21fc3ViZm9ybWF0X3QpIDApCisrI2RlZmluZQlTTkRSVl9QQ01fU1VCRk9STUFUX0xBU1QJU05EUlZfUENNX1NVQkZPUk1BVF9TVEQKKysKKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX01NQVAJCTB4MDAwMDAwMDEJLyogaGFyZHdhcmUgc3VwcG9ydHMgbW1hcCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fTU1BUF9WQUxJRAkweDAwMDAwMDAyCS8qIHBlcmlvZCBkYXRhIGFyZSB2YWxpZCBkdXJpbmcgdHJhbnNmZXIgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0RPVUJMRQkJMHgwMDAwMDAwNAkvKiBEb3VibGUgYnVmZmVyaW5nIG5lZWRlZCBmb3IgUENNIHN0YXJ0L3N0b3AgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0JBVENICQkweDAwMDAwMDEwCS8qIGRvdWJsZSBidWZmZXJpbmcgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX1NZTkNfQVBQTFBUUgkweDAwMDAwMDIwCS8qIG5lZWQgdGhlIGV4cGxpY2l0IHN5bmMgb2YgYXBwbF9wdHIgdXBkYXRlICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRAkweDAwMDAwMTAwCS8qIGNoYW5uZWxzIGFyZSBpbnRlcmxlYXZlZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fTk9OSU5URVJMRUFWRUQJMHgwMDAwMDIwMAkvKiBjaGFubmVscyBhcmUgbm90IGludGVybGVhdmVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19DT01QTEVYCQkweDAwMDAwNDAwCS8qIGNvbXBsZXggZnJhbWUgb3JnYW5pemF0aW9uIChtbWFwIG9ubHkpICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19CTE9DS19UUkFOU0ZFUgkweDAwMDEwMDAwCS8qIGhhcmR3YXJlIHRyYW5zZmVyIGJsb2NrIG9mIHNhbXBsZXMgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX09WRVJSQU5HRQkweDAwMDIwMDAwCS8qIGhhcmR3YXJlIHN1cHBvcnRzIEFEQyAoY2FwdHVyZSkgb3ZlcnJhbmdlIGRldGVjdGlvbiAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fUkVTVU1FCQkweDAwMDQwMDAwCS8qIGhhcmR3YXJlIHN1cHBvcnRzIHN0cmVhbSByZXN1bWUgYWZ0ZXIgc3VzcGVuZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fUEFVU0UJCTB4MDAwODAwMDAJLyogcGF1c2UgaW9jdGwgaXMgc3VwcG9ydGVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQUxGX0RVUExFWAkweDAwMTAwMDAwCS8qIG9ubHkgaGFsZiBkdXBsZXggKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0pPSU5UX0RVUExFWAkweDAwMjAwMDAwCS8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIHN0cmVhbSBhcmUgc29tZXdoYXQgY29ycmVsYXRlZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fU1lOQ19TVEFSVAkweDAwNDAwMDAwCS8qIHBjbSBzdXBwb3J0IHNvbWUga2luZCBvZiBzeW5jIGdvICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19OT19QRVJJT0RfV0FLRVVQCTB4MDA4MDAwMDAJLyogcGVyaW9kIHdha2V1cCBjYW4gYmUgZGlzYWJsZWQgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19XQUxMX0NMT0NLICAgMHgwMTAwMDAwMCAgICAgIC8qIChEZXByZWNhdGVkKWhhcyBhdWRpbyB3YWxsIGNsb2NrIGZvciBhdWRpby9zeXN0ZW0gdGltZSBzeW5jICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19BVElNRSAgICAgICAgICAgICAgMHgwMTAwMDAwMCAgLyogcmVwb3J0IGhhcmR3YXJlIGxpbmsgYXVkaW8gdGltZSwgcmVzZXQgb24gc3RhcnR1cCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfQUJTT0xVVEVfQVRJTUUgICAgIDB4MDIwMDAwMDAgIC8qIHJlcG9ydCBhYnNvbHV0ZSBoYXJkd2FyZSBsaW5rIGF1ZGlvIHRpbWUsIG5vdCByZXNldCBvbiBzdGFydHVwICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19FU1RJTUFURURfQVRJTUUgICAgMHgwNDAwMDAwMCAgLyogcmVwb3J0IGVzdGltYXRlZCBsaW5rIGF1ZGlvIHRpbWUgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX1NZTkNIUk9OSVpFRF9BVElNRSAweDA4MDAwMDAwICAvKiByZXBvcnQgc3luY2hyb25pemVkIGF1ZGlvL3N5c3RlbSB0aW1lICovCisrCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19EUkFJTl9UUklHR0VSCTB4NDAwMDAwMDAJCS8qIGludGVybmFsIGtlcm5lbCBmbGFnIC0gdHJpZ2dlciBpbiBkcmFpbiAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fRklGT19JTl9GUkFNRVMJMHg4MDAwMDAwMAkvKiBpbnRlcm5hbCBrZXJuZWwgZmxhZyAtIEZJRk8gc2l6ZSBpcyBpbiBmcmFtZXMgKi8KKysKKysKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9zdGF0ZV90OworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX09QRU4JCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDApIC8qIHN0cmVhbSBpcyBvcGVuICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfU0VUVVAJCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDEpIC8qIHN0cmVhbSBoYXMgYSBzZXR1cCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1BSRVBBUkVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDIpIC8qIHN0cmVhbSBpcyByZWFkeSB0byBzdGFydCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1JVTk5JTkcJCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDMpIC8qIHN0cmVhbSBpcyBydW5uaW5nICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfWFJVTgkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNCkgLyogc3RyZWFtIHJlYWNoZWQgYW4geHJ1biAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0RSQUlOSU5HCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDUpIC8qIHN0cmVhbSBpcyBkcmFpbmluZyAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1BBVVNFRAkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNikgLyogc3RyZWFtIGlzIHBhdXNlZCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1NVU1BFTkRFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA3KSAvKiBoYXJkd2FyZSBpcyBzdXNwZW5kZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9ESVNDT05ORUNURUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgOCkgLyogaGFyZHdhcmUgaXMgZGlzY29ubmVjdGVkICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfTEFTVAkJU05EUlZfUENNX1NUQVRFX0RJU0NPTk5FQ1RFRAorKworK2VudW0geworKwlTTkRSVl9QQ01fTU1BUF9PRkZTRVRfREFUQSA9IDB4MDAwMDAwMDAsCisrCVNORFJWX1BDTV9NTUFQX09GRlNFVF9TVEFUVVMgPSAweDgwMDAwMDAwLAorKwlTTkRSVl9QQ01fTU1BUF9PRkZTRVRfQ09OVFJPTCA9IDB4ODEwMDAwMDAsCisrfTsKKysKKyt1bmlvbiBzbmRfcGNtX3N5bmNfaWQgeworKwl1bnNpZ25lZCBjaGFyIGlkWzE2XTsKKysJdW5zaWduZWQgc2hvcnQgaWQxNls4XTsKKysJdW5zaWduZWQgaW50IGlkMzJbNF07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9pbmZvIHsKKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogZGV2aWNlIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdWJkZXZpY2UgbnVtYmVyICovCisrCWludCBzdHJlYW07CQkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdHJlYW0gZGlyZWN0aW9uICovCisrCWludCBjYXJkOwkJCS8qIFI6IGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogSUQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIG5hbWUgb2YgdGhpcyBkZXZpY2UgKi8KKysJdW5zaWduZWQgY2hhciBzdWJuYW1lWzMyXTsJLyogc3ViZGV2aWNlIG5hbWUgKi8KKysJaW50IGRldl9jbGFzczsJCQkvKiBTTkRSVl9QQ01fQ0xBU1NfKiAqLworKwlpbnQgZGV2X3N1YmNsYXNzOwkJLyogU05EUlZfUENNX1NVQkNMQVNTXyogKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZXNfY291bnQ7CisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2F2YWlsOworKwl1bmlvbiBzbmRfcGNtX3N5bmNfaWQgc3luYzsJLyogaGFyZHdhcmUgc3luY2hyb25pemF0aW9uIElEICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlLi4uICovCisrfTsKKysKKyt0eXBlZGVmIGludCBzbmRfcGNtX2h3X3BhcmFtX3Q7CisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQUNDRVNTCTAJLyogQWNjZXNzIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GT1JNQVQJMQkvKiBGb3JtYXQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQJMgkvKiBTdWJmb3JtYXQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9NQVNLCVNORFJWX1BDTV9IV19QQVJBTV9BQ0NFU1MKKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9MQVNUX01BU0sJU05EUlZfUENNX0hXX1BBUkFNX1NVQkZPUk1BVAorKworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1NBTVBMRV9CSVRTCTgJLyogQml0cyBwZXIgc2FtcGxlICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRlJBTUVfQklUUwk5CS8qIEJpdHMgcGVyIGZyYW1lICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQ0hBTk5FTFMJMTAJLyogQ2hhbm5lbHMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9SQVRFCQkxMQkvKiBBcHByb3ggcmF0ZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9USU1FCTEyCS8qIEFwcHJveCBkaXN0YW5jZSBiZXR3ZWVuCisrCQkJCQkJICogaW50ZXJydXB0cyBpbiB1cworKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9TSVpFCTEzCS8qIEFwcHJveCBmcmFtZXMgYmV0d2VlbgorKwkJCQkJCSAqIGludGVycnVwdHMKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfQllURVMJMTQJLyogQXBwcm94IGJ5dGVzIGJldHdlZW4KKysJCQkJCQkgKiBpbnRlcnJ1cHRzCisrCQkJCQkJICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EUwkxNQkvKiBBcHByb3ggaW50ZXJydXB0cyBwZXIKKysJCQkJCQkgKiBidWZmZXIKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfVElNRQkxNgkvKiBBcHByb3ggZHVyYXRpb24gb2YgYnVmZmVyCisrCQkJCQkJICogaW4gdXMKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfU0laRQkxNwkvKiBTaXplIG9mIGJ1ZmZlciBpbiBmcmFtZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfQllURVMJMTgJLyogU2l6ZSBvZiBidWZmZXIgaW4gYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9USUNLX1RJTUUJMTkJLyogQXBwcm94IHRpY2sgZHVyYXRpb24gaW4gdXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9JTlRFUlZBTAlTTkRSVl9QQ01fSFdfUEFSQU1fU0FNUExFX0JJVFMKKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9MQVNUX0lOVEVSVkFMCVNORFJWX1BDTV9IV19QQVJBTV9USUNLX1RJTUUKKysKKysjZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfTk9SRVNBTVBMRQkoMTw8MCkJLyogYXZvaWQgcmF0ZSByZXNhbXBsaW5nICovCisrI2RlZmluZSBTTkRSVl9QQ01fSFdfUEFSQU1TX0VYUE9SVF9CVUZGRVIJKDE8PDEpCS8qIGV4cG9ydCBidWZmZXIgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfTk9fUEVSSU9EX1dBS0VVUAkoMTw8MikJLyogZGlzYWJsZSBwZXJpb2Qgd2FrZXVwcyAqLworKworK3N0cnVjdCBzbmRfaW50ZXJ2YWwgeworKwl1bnNpZ25lZCBpbnQgbWluLCBtYXg7CisrCXVuc2lnbmVkIGludCBvcGVubWluOjEsCisrCQkgICAgIG9wZW5tYXg6MSwKKysJCSAgICAgaW50ZWdlcjoxLAorKwkJICAgICBlbXB0eToxOworK307CisrCisrI2RlZmluZSBTTkRSVl9NQVNLX01BWAkyNTYKKysKKytzdHJ1Y3Qgc25kX21hc2sgeworKwlfX3UzMiBiaXRzWyhTTkRSVl9NQVNLX01BWCszMSkvMzJdOworK307CisrCisrc3RydWN0IHNuZF9wY21faHdfcGFyYW1zIHsKKysJdW5zaWduZWQgaW50IGZsYWdzOworKwlzdHJ1Y3Qgc25kX21hc2sgbWFza3NbU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfTUFTSyAtCisrCQkJICAgICAgIFNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9NQVNLICsgMV07CisrCXN0cnVjdCBzbmRfbWFzayBtcmVzWzVdOwkvKiByZXNlcnZlZCBtYXNrcyAqLworKwlzdHJ1Y3Qgc25kX2ludGVydmFsIGludGVydmFsc1tTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9JTlRFUlZBTCAtCisrCQkJCSAgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX0lOVEVSVkFMICsgMV07CisrCXN0cnVjdCBzbmRfaW50ZXJ2YWwgaXJlc1s5XTsJLyogcmVzZXJ2ZWQgaW50ZXJ2YWxzICovCisrCXVuc2lnbmVkIGludCBybWFzazsJCS8qIFc6IHJlcXVlc3RlZCBtYXNrcyAqLworKwl1bnNpZ25lZCBpbnQgY21hc2s7CQkvKiBSOiBjaGFuZ2VkIG1hc2tzICovCisrCXVuc2lnbmVkIGludCBpbmZvOwkJLyogUjogSW5mbyBmbGFncyBmb3IgcmV0dXJuZWQgc2V0dXAgKi8KKysJdW5zaWduZWQgaW50IG1zYml0czsJCS8qIFI6IHVzZWQgbW9zdCBzaWduaWZpY2FudCBiaXRzICovCisrCXVuc2lnbmVkIGludCByYXRlX251bTsJCS8qIFI6IHJhdGUgbnVtZXJhdG9yICovCisrCXVuc2lnbmVkIGludCByYXRlX2RlbjsJCS8qIFI6IHJhdGUgZGVub21pbmF0b3IgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgZmlmb19zaXplOwkvKiBSOiBjaGlwIEZJRk8gc2l6ZSBpbiBmcmFtZXMgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKyt9OworKworK2VudW0geworKwlTTkRSVl9QQ01fVFNUQU1QX05PTkUgPSAwLAorKwlTTkRSVl9QQ01fVFNUQU1QX0VOQUJMRSwKKysJU05EUlZfUENNX1RTVEFNUF9MQVNUID0gU05EUlZfUENNX1RTVEFNUF9FTkFCTEUsCisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9zd19wYXJhbXMgeworKwlpbnQgdHN0YW1wX21vZGU7CQkJLyogdGltZXN0YW1wIG1vZGUgKi8KKysJdW5zaWduZWQgaW50IHBlcmlvZF9zdGVwOworKwl1bnNpZ25lZCBpbnQgc2xlZXBfbWluOwkJCS8qIG1pbiB0aWNrcyB0byBzbGVlcCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9taW47CQkvKiBtaW4gYXZhaWwgZnJhbWVzIGZvciB3YWtldXAgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgeGZlcl9hbGlnbjsJCS8qIG9ic29sZXRlOiB4ZmVyIHNpemUgbmVlZCB0byBiZSBhIG11bHRpcGxlICovCisrCXNuZF9wY21fdWZyYW1lc190IHN0YXJ0X3RocmVzaG9sZDsJLyogbWluIGh3X2F2YWlsIGZyYW1lcyBmb3IgYXV0b21hdGljIHN0YXJ0ICovCisrCXNuZF9wY21fdWZyYW1lc190IHN0b3BfdGhyZXNob2xkOwkvKiBtaW4gYXZhaWwgZnJhbWVzIGZvciBhdXRvbWF0aWMgc3RvcCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBzaWxlbmNlX3RocmVzaG9sZDsJLyogbWluIGRpc3RhbmNlIGZyb20gbm9pc2UgZm9yIHNpbGVuY2UgZmlsbGluZyAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBzaWxlbmNlX3NpemU7CQkvKiBzaWxlbmNlIGJsb2NrIHNpemUgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgYm91bmRhcnk7CQkvKiBwb2ludGVycyB3cmFwIHBvaW50ICovCisrCXVuc2lnbmVkIGludCBwcm90bzsJCQkvKiBwcm90b2NvbCB2ZXJzaW9uICovCisrCXVuc2lnbmVkIGludCB0c3RhbXBfdHlwZTsJCS8qIHRpbWVzdGFtcCB0eXBlIChyZXEuIHByb3RvID49IDIuMC4xMikgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs1Nl07CQkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9jaGFubmVsX2luZm8geworKwl1bnNpZ25lZCBpbnQgY2hhbm5lbDsKKysJX19rZXJuZWxfb2ZmX3Qgb2Zmc2V0OwkJLyogbW1hcCBvZmZzZXQgKi8KKysJdW5zaWduZWQgaW50IGZpcnN0OwkJLyogb2Zmc2V0IHRvIGZpcnN0IHNhbXBsZSBpbiBiaXRzICovCisrCXVuc2lnbmVkIGludCBzdGVwOwkJLyogc2FtcGxlcyBkaXN0YW5jZSBpbiBiaXRzICovCisrfTsKKysKKytlbnVtIHsKKysJLyoKKysJICogIGZpcnN0IGRlZmluaXRpb24gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHksCisrCSAqICBtYXBzIHRvIHdhbGxjbG9jay9saW5rIHRpbWUgZm9yIEhEQXVkaW8gcGxheWJhY2sgYW5kIERFRkFVTFQvRE1BIHRpbWUgZm9yIGV2ZXJ5dGhpbmcgZWxzZQorKwkgKi8KKysJU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0NPTVBBVCA9IDAsCisrCisrCS8qIHRpbWVzdGFtcCBkZWZpbml0aW9ucyAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfREVGQVVMVCA9IDEsICAgICAgICAgICAvKiBETUEgdGltZSwgcmVwb3J0ZWQgYXMgcGVyIGh3X3B0ciAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOSyA9IDIsCSAgICAgICAgICAgLyogbGluayB0aW1lIHJlcG9ydGVkIGJ5IHNhbXBsZSBvciB3YWxsY2xvY2sgY291bnRlciwgcmVzZXQgb24gc3RhcnR1cCAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19BQlNPTFVURSA9IDMsCSAgIC8qIGxpbmsgdGltZSByZXBvcnRlZCBieSBzYW1wbGUgb3Igd2FsbGNsb2NrIGNvdW50ZXIsIG5vdCByZXNldCBvbiBzdGFydHVwICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX0VTVElNQVRFRCA9IDQsICAgIC8qIGxpbmsgdGltZSBlc3RpbWF0ZWQgaW5kaXJlY3RseSAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19TWU5DSFJPTklaRUQgPSA1LCAvKiBsaW5rIHRpbWUgc3luY2hyb25pemVkIHdpdGggc3lzdGVtIHRpbWUgKi8KKysJU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xBU1QgPSBTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19TWU5DSFJPTklaRUQKKyt9OworKworK3N0cnVjdCBzbmRfcGNtX3N0YXR1cyB7CisrCXNuZF9wY21fc3RhdGVfdCBzdGF0ZTsJCS8qIHN0cmVhbSBzdGF0ZSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgdHJpZ2dlcl90c3RhbXA7CS8qIHRpbWUgd2hlbiBzdHJlYW0gd2FzIHN0YXJ0ZWQvc3RvcHBlZC9wYXVzZWQgKi8KKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIHJlZmVyZW5jZSB0aW1lc3RhbXAgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgYXBwbF9wdHI7CS8qIGFwcGwgcHRyICovCisrCXNuZF9wY21fdWZyYW1lc190IGh3X3B0cjsJLyogaHcgcHRyICovCisrCXNuZF9wY21fc2ZyYW1lc190IGRlbGF5OwkvKiBjdXJyZW50IGRlbGF5IGluIGZyYW1lcyAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbDsJLyogbnVtYmVyIG9mIGZyYW1lcyBhdmFpbGFibGUgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgYXZhaWxfbWF4OwkvKiBtYXggZnJhbWVzIGF2YWlsYWJsZSBvbiBodyBzaW5jZSBsYXN0IHN0YXR1cyAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBvdmVycmFuZ2U7CS8qIGNvdW50IG9mIEFEQyAoY2FwdHVyZSkgb3ZlcnJhbmdlIGRldGVjdGlvbnMgZnJvbSBsYXN0IHN0YXR1cyAqLworKwlzbmRfcGNtX3N0YXRlX3Qgc3VzcGVuZGVkX3N0YXRlOyAvKiBzdXNwZW5kZWQgc3RyZWFtIHN0YXRlICovCisrCV9fdTMyIGF1ZGlvX3RzdGFtcF9kYXRhOwkgLyogbmVlZGVkIGZvciA2NC1iaXQgYWxpZ25tZW50LCB1c2VkIGZvciBjb25maWdzL3JlcG9ydCB0by9mcm9tIHVzZXJzcGFjZSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgYXVkaW9fdHN0YW1wOwkvKiBzYW1wbGUgY291bnRlciwgd2FsbCBjbG9jaywgUEhDIG9yIG9uLWRlbWFuZCBzeW5jJ2VkICovCisrCXN0cnVjdCB0aW1lc3BlYyBkcml2ZXJfdHN0YW1wOwkvKiB1c2VmdWwgaW4gY2FzZSByZWZlcmVuY2Ugc3lzdGVtIHRzdGFtcCBpcyByZXBvcnRlZCB3aXRoIGRlbGF5ICovCisrCV9fdTMyIGF1ZGlvX3RzdGFtcF9hY2N1cmFjeTsJLyogaW4gbnMgdW5pdHMsIG9ubHkgdmFsaWQgaWYgaW5kaWNhdGVkIGluIGF1ZGlvX3RzdGFtcF9kYXRhICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTItMipzaXplb2Yoc3RydWN0IHRpbWVzcGVjKV07IC8qIG11c3QgYmUgZmlsbGVkIHdpdGggemVybyAqLworK307CisrCisrc3RydWN0IHNuZF9wY21fbW1hcF9zdGF0dXMgeworKwlzbmRfcGNtX3N0YXRlX3Qgc3RhdGU7CQkvKiBSTzogc3RhdGUgLSBTTkRSVl9QQ01fU1RBVEVfWFhYWCAqLworKwlpbnQgcGFkMTsJCQkvKiBOZWVkZWQgZm9yIDY0IGJpdCBhbGlnbm1lbnQgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgaHdfcHRyOwkvKiBSTzogaHcgcHRyICgwLi4uYm91bmRhcnktMSkgKi8KKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAqLworKwlzbmRfcGNtX3N0YXRlX3Qgc3VzcGVuZGVkX3N0YXRlOyAvKiBSTzogc3VzcGVuZGVkIHN0cmVhbSBzdGF0ZSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgYXVkaW9fdHN0YW1wOwkvKiBmcm9tIHNhbXBsZSBjb3VudGVyIG9yIHdhbGwgY2xvY2sgKi8KKyt9OworKworK3N0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCB7CisrCXNuZF9wY21fdWZyYW1lc190IGFwcGxfcHRyOwkvKiBSVzogYXBwbCBwdHIgKDAuLi5ib3VuZGFyeS0xKSAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9taW47CS8qIFJXOiBtaW4gYXZhaWxhYmxlIGZyYW1lcyBmb3Igd2FrZXVwICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9IV1NZTkMJKDE8PDApCS8qIGV4ZWN1dGUgaHdzeW5jICovCisrI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfQVBQTAkJKDE8PDEpCS8qIGdldCBhcHBsX3B0ciBmcm9tIGRyaXZlciAoci93IG9wKSAqLworKyNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0FWQUlMX01JTgkoMTw8MikJLyogZ2V0IGF2YWlsX21pbiBmcm9tIGRyaXZlciAqLworKworK3N0cnVjdCBzbmRfcGNtX3N5bmNfcHRyIHsKKysJdW5zaWduZWQgaW50IGZsYWdzOworKwl1bmlvbiB7CisrCQlzdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyBzdGF0dXM7CisrCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsKKysJfSBzOworKwl1bmlvbiB7CisrCQlzdHJ1Y3Qgc25kX3BjbV9tbWFwX2NvbnRyb2wgY29udHJvbDsKKysJCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOworKwl9IGM7CisrfTsKKysKKytzdHJ1Y3Qgc25kX3hmZXJpIHsKKysJc25kX3BjbV9zZnJhbWVzX3QgcmVzdWx0OworKwl2b2lkIF9fdXNlciAqYnVmOworKwlzbmRfcGNtX3VmcmFtZXNfdCBmcmFtZXM7CisrfTsKKysKKytzdHJ1Y3Qgc25kX3hmZXJuIHsKKysJc25kX3BjbV9zZnJhbWVzX3QgcmVzdWx0OworKwl2b2lkIF9fdXNlciAqIF9fdXNlciAqYnVmczsKKysJc25kX3BjbV91ZnJhbWVzX3QgZnJhbWVzOworK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9HRVRUSU1FT0ZEQVkgPSAwLAkvKiBnZXR0aW1lb2ZkYXkgZXF1aXZhbGVudCAqLworKwlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTU9OT1RPTklDLAkvKiBwb3NpeF9jbG9ja19tb25vdG9uaWMgZXF1aXZhbGVudCAqLworKwlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTU9OT1RPTklDX1JBVywgICAgLyogbW9ub3RvbmljX3JhdyAobm8gTlRQKSAqLworKwlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTEFTVCA9IFNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUNfUkFXLAorK307CisrCisrLyogY2hhbm5lbCBwb3NpdGlvbnMgKi8KKytlbnVtIHsKKysJU05EUlZfQ0hNQVBfVU5LTk9XTiA9IDAsCisrCVNORFJWX0NITUFQX05BLAkJLyogTi9BLCBzaWxlbnQgKi8KKysJU05EUlZfQ0hNQVBfTU9OTywJLyogbW9ubyBzdHJlYW0gKi8KKysJLyogdGhpcyBmb2xsb3dzIHRoZSBhbHNhLWxpYiBtaXhlciBjaGFubmVsIHZhbHVlICsgMyAqLworKwlTTkRSVl9DSE1BUF9GTCwJCS8qIGZyb250IGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfRlIsCQkvKiBmcm9udCByaWdodCAqLworKwlTTkRSVl9DSE1BUF9STCwJCS8qIHJlYXIgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9SUiwJCS8qIHJlYXIgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfRkMsCQkvKiBmcm9udCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfTEZFLAkvKiBMRkUgKi8KKysJU05EUlZfQ0hNQVBfU0wsCQkvKiBzaWRlIGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfU1IsCQkvKiBzaWRlIHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1JDLAkJLyogcmVhciBjZW50ZXIgKi8KKysJLyogbmV3IGRlZmluaXRpb25zICovCisrCVNORFJWX0NITUFQX0ZMQywJLyogZnJvbnQgbGVmdCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfRlJDLAkvKiBmcm9udCByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfUkxDLAkvKiByZWFyIGxlZnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX1JSQywJLyogcmVhciByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfRkxXLAkvKiBmcm9udCBsZWZ0IHdpZGUgKi8KKysJU05EUlZfQ0hNQVBfRlJXLAkvKiBmcm9udCByaWdodCB3aWRlICovCisrCVNORFJWX0NITUFQX0ZMSCwJLyogZnJvbnQgbGVmdCBoaWdoICovCisrCVNORFJWX0NITUFQX0ZDSCwJLyogZnJvbnQgY2VudGVyIGhpZ2ggKi8KKysJU05EUlZfQ0hNQVBfRlJILAkvKiBmcm9udCByaWdodCBoaWdoICovCisrCVNORFJWX0NITUFQX1RDLAkJLyogdG9wIGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9URkwsCS8qIHRvcCBmcm9udCBsZWZ0ICovCisrCVNORFJWX0NITUFQX1RGUiwJLyogdG9wIGZyb250IHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1RGQywJLyogdG9wIGZyb250IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9UUkwsCS8qIHRvcCByZWFyIGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfVFJSLAkvKiB0b3AgcmVhciByaWdodCAqLworKwlTTkRSVl9DSE1BUF9UUkMsCS8qIHRvcCByZWFyIGNlbnRlciAqLworKwkvKiBuZXcgZGVmaW5pdGlvbnMgZm9yIFVBQzIgKi8KKysJU05EUlZfQ0hNQVBfVEZMQywJLyogdG9wIGZyb250IGxlZnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX1RGUkMsCS8qIHRvcCBmcm9udCByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfVFNMLAkvKiB0b3Agc2lkZSBsZWZ0ICovCisrCVNORFJWX0NITUFQX1RTUiwJLyogdG9wIHNpZGUgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfTExGRSwJLyogbGVmdCBMRkUgKi8KKysJU05EUlZfQ0hNQVBfUkxGRSwJLyogcmlnaHQgTEZFICovCisrCVNORFJWX0NITUFQX0JDLAkJLyogYm90dG9tIGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9CTEMsCS8qIGJvdHRvbSBsZWZ0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9CUkMsCS8qIGJvdHRvbSByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfTEFTVCA9IFNORFJWX0NITUFQX0JSQywKKyt9OworKworKyNkZWZpbmUgU05EUlZfQ0hNQVBfUE9TSVRJT05fTUFTSwkweGZmZmYKKysjZGVmaW5lIFNORFJWX0NITUFQX1BIQVNFX0lOVkVSU0UJKDB4MDEgPDwgMTYpCisrI2RlZmluZSBTTkRSVl9DSE1BUF9EUklWRVJfU1BFQwkJKDB4MDIgPDwgMTYpCisrCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUFZFUlNJT04JX0lPUignQScsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9JTkZPCQlfSU9SKCdBJywgMHgwMSwgc3RydWN0IHNuZF9wY21faW5mbykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9UU1RBTVAJCV9JT1coJ0EnLCAweDAyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVFRTVEFNUAkJX0lPVygnQScsIDB4MDMsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9VU0VSX1BWRVJTSU9OCV9JT1coJ0EnLCAweDA0LCBpbnQpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfUkVGSU5FCV9JT1dSKCdBJywgMHgxMCwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX1BBUkFNUwlfSU9XUignQScsIDB4MTEsIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19GUkVFCQlfSU8oJ0EnLCAweDEyKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NXX1BBUkFNUwlfSU9XUignQScsIDB4MTMsIHN0cnVjdCBzbmRfcGNtX3N3X3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFUVVMJCV9JT1IoJ0EnLCAweDIwLCBzdHJ1Y3Qgc25kX3BjbV9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfREVMQVkJCV9JT1IoJ0EnLCAweDIxLCBzbmRfcGNtX3NmcmFtZXNfdCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV1NZTkMJCV9JTygnQScsIDB4MjIpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1lOQ19QVFIJX0lPV1IoJ0EnLCAweDIzLCBzdHJ1Y3Qgc25kX3BjbV9zeW5jX3B0cikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFUVVNfRVhUCV9JT1dSKCdBJywgMHgyNCwgc3RydWN0IHNuZF9wY21fc3RhdHVzKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0NIQU5ORUxfSU5GTwlfSU9SKCdBJywgMHgzMiwgc3RydWN0IHNuZF9wY21fY2hhbm5lbF9pbmZvKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BSRVBBUkUJCV9JTygnQScsIDB4NDApCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVTRVQJCV9JTygnQScsIDB4NDEpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1RBUlQJCV9JTygnQScsIDB4NDIpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfRFJPUAkJX0lPKCdBJywgMHg0MykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9EUkFJTgkJX0lPKCdBJywgMHg0NCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QQVVTRQkJX0lPVygnQScsIDB4NDUsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVdJTkQJCV9JT1coJ0EnLCAweDQ2LCBzbmRfcGNtX3VmcmFtZXNfdCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVNVTUUJCV9JTygnQScsIDB4NDcpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfWFJVTgkJX0lPKCdBJywgMHg0OCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9GT1JXQVJECQlfSU9XKCdBJywgMHg0OSwgc25kX3BjbV91ZnJhbWVzX3QpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfV1JJVEVJX0ZSQU1FUwlfSU9XKCdBJywgMHg1MCwgc3RydWN0IHNuZF94ZmVyaSkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRUFESV9GUkFNRVMJX0lPUignQScsIDB4NTEsIHN0cnVjdCBzbmRfeGZlcmkpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfV1JJVEVOX0ZSQU1FUwlfSU9XKCdBJywgMHg1Miwgc3RydWN0IHNuZF94ZmVybikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRUFETl9GUkFNRVMJX0lPUignQScsIDB4NTMsIHN0cnVjdCBzbmRfeGZlcm4pCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfTElOSwkJX0lPVygnQScsIDB4NjAsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9VTkxJTksJCV9JTygnQScsIDB4NjEpCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlESSB2MS4wIGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8qCisrICogIFJhdyBNSURJIHNlY3Rpb24gLSAvZGV2L3NuZC9taWRpPz8KKysgKi8KKysKKysjZGVmaW5lIFNORFJWX1JBV01JRElfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCAwKQorKworK2VudW0geworKwlTTkRSVl9SQVdNSURJX1NUUkVBTV9PVVRQVVQgPSAwLAorKwlTTkRSVl9SQVdNSURJX1NUUkVBTV9JTlBVVCwKKysJU05EUlZfUkFXTUlESV9TVFJFQU1fTEFTVCA9IFNORFJWX1JBV01JRElfU1RSRUFNX0lOUFVULAorK307CisrCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lORk9fT1VUUFVUCQkweDAwMDAwMDAxCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lORk9fSU5QVVQJCTB4MDAwMDAwMDIKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19EVVBMRVgJCTB4MDAwMDAwMDQKKysKKytzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbyB7CisrCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IGRldmljZSBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogc3ViZGV2aWNlIG51bWJlciAqLworKwlpbnQgc3RyZWFtOwkJCS8qIFdSOiBzdHJlYW0gKi8KKysJaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkJLyogU05EUlZfUkFXTUlESV9JTkZPX1hYWFggKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogbmFtZSBvZiBkZXZpY2UgKi8KKysJdW5zaWduZWQgY2hhciBzdWJuYW1lWzMyXTsJLyogbmFtZSBvZiBhY3RpdmUgb3Igc2VsZWN0ZWQgc3ViZGV2aWNlICovCisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2NvdW50OworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19hdmFpbDsKKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3Jhd21pZGlfcGFyYW1zIHsKKysJaW50IHN0cmVhbTsKKysJc2l6ZV90IGJ1ZmZlcl9zaXplOwkJLyogcXVldWUgc2l6ZSBpbiBieXRlcyAqLworKwlzaXplX3QgYXZhaWxfbWluOwkJLyogbWluaW11bSBhdmFpbCBieXRlcyBmb3Igd2FrZXVwICovCisrCXVuc2lnbmVkIGludCBub19hY3RpdmVfc2Vuc2luZzogMTsgLyogZG8gbm90IHNlbmQgYWN0aXZlIHNlbnNpbmcgYnl0ZSBpbiBjbG9zZSgpICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrc3RydWN0IHNuZF9yYXdtaWRpX3N0YXR1cyB7CisrCWludCBzdHJlYW07CisrCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgKi8KKysJc2l6ZV90IGF2YWlsOwkJCS8qIGF2YWlsYWJsZSBieXRlcyAqLworKwlzaXplX3QgeHJ1bnM7CQkJLyogY291bnQgb2Ygb3ZlcnJ1bnMgc2luY2UgbGFzdCBzdGF0dXMgKGluIGJ5dGVzKSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9QVkVSU0lPTglfSU9SKCdXJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9JTkZPCV9JT1IoJ1cnLCAweDAxLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbykKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfUEFSQU1TCV9JT1dSKCdXJywgMHgxMCwgc3RydWN0IHNuZF9yYXdtaWRpX3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfU1RBVFVTCV9JT1dSKCdXJywgMHgyMCwgc3RydWN0IHNuZF9yYXdtaWRpX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfRFJPUAlfSU9XKCdXJywgMHgzMCwgaW50KQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9EUkFJTglfSU9XKCdXJywgMHgzMSwgaW50KQorKworKy8qCisrICogIFRpbWVyIHNlY3Rpb24gLSAvZGV2L3NuZC90aW1lcgorKyAqLworKworKyNkZWZpbmUgU05EUlZfVElNRVJfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCA2KQorKworK2VudW0geworKwlTTkRSVl9USU1FUl9DTEFTU19OT05FID0gLTEsCisrCVNORFJWX1RJTUVSX0NMQVNTX1NMQVZFID0gMCwKKysJU05EUlZfVElNRVJfQ0xBU1NfR0xPQkFMLAorKwlTTkRSVl9USU1FUl9DTEFTU19DQVJELAorKwlTTkRSVl9USU1FUl9DTEFTU19QQ00sCisrCVNORFJWX1RJTUVSX0NMQVNTX0xBU1QgPSBTTkRSVl9USU1FUl9DTEFTU19QQ00sCisrfTsKKysKKysvKiBzbGF2ZSB0aW1lciBjbGFzc2VzICovCisrZW51bSB7CisrCVNORFJWX1RJTUVSX1NDTEFTU19OT05FID0gMCwKKysJU05EUlZfVElNRVJfU0NMQVNTX0FQUExJQ0FUSU9OLAorKwlTTkRSVl9USU1FUl9TQ0xBU1NfU0VRVUVOQ0VSLAkJLyogYWxpYXMgKi8KKysJU05EUlZfVElNRVJfU0NMQVNTX09TU19TRVFVRU5DRVIsCS8qIGFsaWFzICovCisrCVNORFJWX1RJTUVSX1NDTEFTU19MQVNUID0gU05EUlZfVElNRVJfU0NMQVNTX09TU19TRVFVRU5DRVIsCisrfTsKKysKKysvKiBnbG9iYWwgdGltZXJzIChkZXZpY2UgbWVtYmVyKSAqLworKyNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX1NZU1RFTQkwCisrI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfUlRDCQkxCS8qIHVudXNlZCAqLworKyNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX0hQRVQJCTIKKysjZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9IUlRJTUVSCTMKKysKKysvKiBpbmZvIGZsYWdzICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9GTEdfU0xBVkUJCSgxPDwwKQkvKiBjYW5ub3QgYmUgY29udHJvbGxlZCAqLworKworK3N0cnVjdCBzbmRfdGltZXJfaWQgeworKwlpbnQgZGV2X2NsYXNzOworKwlpbnQgZGV2X3NjbGFzczsKKysJaW50IGNhcmQ7CisrCWludCBkZXZpY2U7CisrCWludCBzdWJkZXZpY2U7CisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX2dpbmZvIHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiB0aW1lciBmbGFncyAtIFNORFJWX1RJTUVSX0ZMR18qICovCisrCWludCBjYXJkOwkJCS8qIGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogdGltZXIgaWRlbnRpZmljYXRpb24gKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIHRpbWVyIG5hbWUgKi8KKysJdW5zaWduZWQgbG9uZyByZXNlcnZlZDA7CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogYXZlcmFnZSBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbWluOwkvKiBtaW5pbWFsIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9tYXg7CS8qIG1heGltYWwgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgaW50IGNsaWVudHM7CQkvKiBhY3RpdmUgdGltZXIgY2xpZW50cyAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfZ3BhcmFtcyB7CisrCXN0cnVjdCBzbmRfdGltZXJfaWQgdGlkOwkvKiByZXF1ZXN0ZWQgdGltZXIgSUQgKi8KKysJdW5zaWduZWQgbG9uZyBwZXJpb2RfbnVtOwkvKiByZXF1ZXN0ZWQgcHJlY2lzZSBwZXJpb2QgZHVyYXRpb24gKGluIHNlY29uZHMpIC0gbnVtZXJhdG9yICovCisrCXVuc2lnbmVkIGxvbmcgcGVyaW9kX2RlbjsJLyogcmVxdWVzdGVkIHByZWNpc2UgcGVyaW9kIGR1cmF0aW9uIChpbiBzZWNvbmRzKSAtIGRlbm9taW5hdG9yICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworK307CisrCisrc3RydWN0IHNuZF90aW1lcl9nc3RhdHVzIHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX251bTsJLyogcHJlY2lzZSBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIChpbiBzZWNvbmRzKSAtIG51bWVyYXRvciAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fZGVuOwkvKiBwcmVjaXNlIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gKGluIHNlY29uZHMpIC0gZGVub21pbmF0b3IgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3NlbGVjdCB7CisrCXN0cnVjdCBzbmRfdGltZXJfaWQgaWQ7CS8qIGJpbmQgdG8gdGltZXIgSUQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CS8qIHJlc2VydmVkICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX2luZm8geworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiB0aW1lciBmbGFncyAtIFNORFJWX1RJTUVSX0ZMR18qICovCisrCWludCBjYXJkOwkJCS8qIGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogdGltZXIgaWRlbnRpZmljYXRvciAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogdGltZXIgbmFtZSAqLworKwl1bnNpZ25lZCBsb25nIHJlc2VydmVkMDsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBhdmVyYWdlIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19BVVRPCQkoMTw8MCkJLyogYXV0byBzdGFydCwgb3RoZXJ3aXNlIG9uZS1zaG90ICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19FWENMVVNJVkUJKDE8PDEpCS8qIGV4Y2x1c2l2ZSB1c2UsIHByZWNpc2Ugc3RhcnQvc3RvcC9wYXVzZS9jb250aW51ZSAqLworKyNkZWZpbmUgU05EUlZfVElNRVJfUFNGTEdfRUFSTFlfRVZFTlQJKDE8PDIpCS8qIHdyaXRlIGVhcmx5IGV2ZW50IHRvIHRoZSBwb2xsIHF1ZXVlICovCisrCisrc3RydWN0IHNuZF90aW1lcl9wYXJhbXMgeworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBmbGFncyAtIFNORFJWX1RJTUVSX1BTRkxHXyogKi8KKysJdW5zaWduZWQgaW50IHRpY2tzOwkJLyogcmVxdWVzdGVkIHJlc29sdXRpb24gaW4gdGlja3MgKi8KKysJdW5zaWduZWQgaW50IHF1ZXVlX3NpemU7CS8qIHRvdGFsIHNpemUgb2YgcXVldWUgKDMyLTEwMjQpICovCisrCXVuc2lnbmVkIGludCByZXNlcnZlZDA7CQkvKiByZXNlcnZlZCwgd2FzOiBmYWlsdXJlIGxvY2F0aW9ucyAqLworKwl1bnNpZ25lZCBpbnQgZmlsdGVyOwkJLyogZXZlbnQgZmlsdGVyIChiaXRtYXNrIG9mIFNORFJWX1RJTUVSX0VWRU5UXyopICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjBdOwkvKiByZXNlcnZlZCAqLworK307CisrCisrc3RydWN0IHNuZF90aW1lcl9zdGF0dXMgeworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wIC0gbGFzdCB1cGRhdGUgKi8KKysJdW5zaWduZWQgaW50IHJlc29sdXRpb247CS8qIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgaW50IGxvc3Q7CQkvKiBjb3VudGVyIG9mIG1hc3RlciB0aWNrIGxvc3QgKi8KKysJdW5zaWduZWQgaW50IG92ZXJydW47CQkvKiBjb3VudCBvZiByZWFkIHF1ZXVlIG92ZXJydW5zICovCisrCXVuc2lnbmVkIGludCBxdWV1ZTsJCS8qIHVzZWQgcXVldWUgc2l6ZSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUFZFUlNJT04JX0lPUignVCcsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX05FWFRfREVWSUNFCV9JT1dSKCdUJywgMHgwMSwgc3RydWN0IHNuZF90aW1lcl9pZCkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1RSRUFECQlfSU9XKCdUJywgMHgwMiwgaW50KQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR0lORk8JCV9JT1dSKCdUJywgMHgwMywgc3RydWN0IHNuZF90aW1lcl9naW5mbykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0dQQVJBTVMJX0lPVygnVCcsIDB4MDQsIHN0cnVjdCBzbmRfdGltZXJfZ3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0dTVEFUVVMJX0lPV1IoJ1QnLCAweDA1LCBzdHJ1Y3Qgc25kX3RpbWVyX2dzdGF0dXMpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TRUxFQ1QJX0lPVygnVCcsIDB4MTAsIHN0cnVjdCBzbmRfdGltZXJfc2VsZWN0KQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfSU5GTwkJX0lPUignVCcsIDB4MTEsIHN0cnVjdCBzbmRfdGltZXJfaW5mbykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1BBUkFNUwlfSU9XKCdUJywgMHgxMiwgc3RydWN0IHNuZF90aW1lcl9wYXJhbXMpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TVEFUVVMJX0lPUignVCcsIDB4MTQsIHN0cnVjdCBzbmRfdGltZXJfc3RhdHVzKQorKy8qIFRoZSBmb2xsb3dpbmcgZm91ciBpb2N0bHMgYXJlIGNoYW5nZWQgc2luY2UgMS4wLjkgZHVlIHRvIGNvbmZsaWN0aW9uICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TVEFSVAkJX0lPKCdUJywgMHhhMCkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUT1AJCV9JTygnVCcsIDB4YTEpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9DT05USU5VRQlfSU8oJ1QnLCAweGEyKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUEFVU0UJCV9JTygnVCcsIDB4YTMpCisrCisrc3RydWN0IHNuZF90aW1lcl9yZWFkIHsKKysJdW5zaWduZWQgaW50IHJlc29sdXRpb247CisrCXVuc2lnbmVkIGludCB0aWNrczsKKyt9OworKworK2VudW0geworKwlTTkRSVl9USU1FUl9FVkVOVF9SRVNPTFVUSU9OID0gMCwJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9USUNLLAkJCS8qIHZhbCA9IHRpY2tzICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1NUQVJULAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9TVE9QLAkJCS8qIHZhbCA9IDAgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfQ09OVElOVUUsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1BBVVNFLAkJLyogdmFsID0gMCAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9FQVJMWSwJCS8qIHZhbCA9IDAsIGVhcmx5IGV2ZW50ICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1NVU1BFTkQsCQkvKiB2YWwgPSAwICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1JFU1VNRSwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKysJLyogbWFzdGVyIHRpbWVyIGV2ZW50cyBmb3Igc2xhdmUgdGltZXIgaW5zdGFuY2VzICovCisrCVNORFJWX1RJTUVSX0VWRU5UX01TVEFSVCA9IFNORFJWX1RJTUVSX0VWRU5UX1NUQVJUICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01TVE9QID0gU05EUlZfVElNRVJfRVZFTlRfU1RPUCArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NQ09OVElOVUUgPSBTTkRSVl9USU1FUl9FVkVOVF9DT05USU5VRSArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NUEFVU0UgPSBTTkRSVl9USU1FUl9FVkVOVF9QQVVTRSArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NU1VTUEVORCA9IFNORFJWX1RJTUVSX0VWRU5UX1NVU1BFTkQgKyAxMCwKKysJU05EUlZfVElNRVJfRVZFTlRfTVJFU1VNRSA9IFNORFJWX1RJTUVSX0VWRU5UX1JFU1VNRSArIDEwLAorK307CisrCisrc3RydWN0IHNuZF90aW1lcl90cmVhZCB7CisrCWludCBldmVudDsKKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsKKysJdW5zaWduZWQgaW50IHZhbDsKKyt9OworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgU2VjdGlvbiBmb3IgZHJpdmVyIGNvbnRyb2wgaW50ZXJmYWNlIC0gL2Rldi9zbmQvY29udHJvbD8gICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2RlZmluZSBTTkRSVl9DVExfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCA3KQorKworK3N0cnVjdCBzbmRfY3RsX2NhcmRfaW5mbyB7CisrCWludCBjYXJkOwkJCS8qIGNhcmQgbnVtYmVyICovCisrCWludCBwYWQ7CQkJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAod2FzIHR5cGUpICovCisrCXVuc2lnbmVkIGNoYXIgaWRbMTZdOwkJLyogSUQgb2YgY2FyZCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIGRyaXZlclsxNl07CS8qIERyaXZlciBuYW1lICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVszMl07CQkvKiBTaG9ydCBuYW1lIG9mIHNvdW5kY2FyZCAqLworKwl1bnNpZ25lZCBjaGFyIGxvbmduYW1lWzgwXTsJLyogbmFtZSArIGluZm8gdGV4dCBhYm91dCBzb3VuZGNhcmQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZF9bMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICh3YXMgSUQgb2YgbWl4ZXIpICovCisrCXVuc2lnbmVkIGNoYXIgbWl4ZXJuYW1lWzgwXTsJLyogdmlzdWFsIG1peGVyIGlkZW50aWZpY2F0aW9uICovCisrCXVuc2lnbmVkIGNoYXIgY29tcG9uZW50c1sxMjhdOwkvKiBjYXJkIGNvbXBvbmVudHMgLyBmaW5lIGlkZW50aWZpY2F0aW9uLCBkZWxpbWl0ZWQgd2l0aCBvbmUgc3BhY2UgKEFDOTcgZXRjLi4pICovCisrfTsKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX2N0bF9lbGVtX3R5cGVfdDsKKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfTk9ORQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMCkgLyogaW52YWxpZCAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9CT09MRUFOCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAxKSAvKiBib29sZWFuIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMikgLyogaW50ZWdlciB0eXBlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0VOVU1FUkFURUQJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDMpIC8qIGVudW1lcmF0ZWQgdHlwZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9CWVRFUwkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNCkgLyogYnl0ZSBhcnJheSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JRUM5NTgJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDUpIC8qIElFQzk1OCAoUy9QRElGKSBzZXR1cCAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSNjQJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDYpIC8qIDY0LWJpdCBpbnRlZ2VyIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfTEFTVAlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI2NAorKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfY3RsX2VsZW1faWZhY2VfdDsKKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0NBUkQJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAwKSAvKiBnbG9iYWwgY29udHJvbCAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfSFdERVAJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAxKSAvKiBoYXJkd2FyZSBkZXBlbmRlbnQgZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDIpIC8qIHZpcnR1YWwgbWl4ZXIgZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9QQ00JKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAzKSAvKiBQQ00gZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9SQVdNSURJCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgNCkgLyogUmF3TWlkaSBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1RJTUVSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgNSkgLyogdGltZXIgZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9TRVFVRU5DRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA2KSAvKiBzZXF1ZW5jZXIgY2xpZW50ICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9MQVNUCVNORFJWX0NUTF9FTEVNX0lGQUNFX1NFUVVFTkNFUgorKworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQUQJCSgxPDwwKQorKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1dSSVRFCQkoMTw8MSkKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEV1JJVEUJCShTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRHxTTkRSVl9DVExfRUxFTV9BQ0NFU1NfV1JJVEUpCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVk9MQVRJTEUJCSgxPDwyKQkvKiBjb250cm9sIHZhbHVlIG1heSBiZSBjaGFuZ2VkIHdpdGhvdXQgYSBub3RpZmljYXRpb24gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19USU1FU1RBTVAJCSgxPDwzKQkvKiB3aGVuIHdhcyBjb250cm9sIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRAkJKDE8PDQpCS8qIFRMViByZWFkIGlzIHBvc3NpYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1dSSVRFCQkoMTw8NSkJLyogVExWIHdyaXRlIGlzIHBvc3NpYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQURXUklURQkoU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFEfFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfV1JJVEUpCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX0NPTU1BTkQJKDE8PDYpCS8qIFRMViBjb21tYW5kIGlzIHBvc3NpYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfSU5BQ1RJVkUJCSgxPDw4KQkvKiBjb250cm9sIGRvZXMgYWN0dWFsbHkgbm90aGluZywgYnV0IG1heSBiZSB1cGRhdGVkICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfTE9DSwkJKDE8PDkpCS8qIHdyaXRlIGxvY2sgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19PV05FUgkJKDE8PDEwKQkvKiB3cml0ZSBsb2NrIG93bmVyICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX0NBTExCQUNLCSgxPDwyOCkJLyoga2VybmVsIHVzZSBhIFRMViBjYWxsYmFjayAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1VTRVIJCSgxPDwyOSkgLyogdXNlciBzcGFjZSBlbGVtZW50ICovCisrLyogYml0cyAzMCBhbmQgMzEgYXJlIG9ic29sZXRlZCAoZm9yIGluZGlyZWN0IGFjY2VzcykgKi8KKysKKysvKiBmb3IgZnVydGhlciBkZXRhaWxzIHNlZSB0aGUgQUNQSSBhbmQgUENJIHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWNhdGlvbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QwCQkweDAwMDAJLyogZnVsbCBPbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QxCQkweDAxMDAJLyogcGFydGlhbCBPbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QyCQkweDAyMDAJLyogcGFydGlhbCBPbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzCQkweDAzMDAJLyogT2ZmICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDNob3QJCShTTkRSVl9DVExfUE9XRVJfRDN8MHgwMDAwKQkvKiBPZmYsIHdpdGggcG93ZXIgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EM2NvbGQJCShTTkRSVl9DVExfUE9XRVJfRDN8MHgwMDAxKQkvKiBPZmYsIHdpdGhvdXQgcG93ZXIgKi8KKysKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOCTQ0CisrCisrc3RydWN0IHNuZF9jdGxfZWxlbV9pZCB7CisrCXVuc2lnbmVkIGludCBudW1pZDsJCS8qIG51bWVyaWMgaWRlbnRpZmllciwgemVybyA9IGludmFsaWQgKi8KKysJc25kX2N0bF9lbGVtX2lmYWNlX3QgaWZhY2U7CS8qIGludGVyZmFjZSBpZGVudGlmaWVyICovCisrCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBkZXZpY2UvY2xpZW50IG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogc3ViZGV2aWNlIChzdWJzdHJlYW0pIG51bWJlciAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOwkJLyogQVNDSUkgbmFtZSBvZiBpdGVtICovCisrCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIGluZGV4IG9mIGl0ZW0gKi8KKyt9OworKworK3N0cnVjdCBzbmRfY3RsX2VsZW1fbGlzdCB7CisrCXVuc2lnbmVkIGludCBvZmZzZXQ7CQkvKiBXOiBmaXJzdCBlbGVtZW50IElEIHRvIGdldCAqLworKwl1bnNpZ25lZCBpbnQgc3BhY2U7CQkvKiBXOiBjb3VudCBvZiBlbGVtZW50IElEcyB0byBnZXQgKi8KKysJdW5zaWduZWQgaW50IHVzZWQ7CQkvKiBSOiBjb3VudCBvZiBlbGVtZW50IElEcyBzZXQgKi8KKysJdW5zaWduZWQgaW50IGNvdW50OwkJLyogUjogY291bnQgb2YgYWxsIGVsZW1lbnRzICovCisrCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgX191c2VyICpwaWRzOyAvKiBSOiBJRHMgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs1MF07CisrfTsKKysKKytzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8geworKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOwkvKiBXOiBlbGVtZW50IElEICovCisrCXNuZF9jdGxfZWxlbV90eXBlX3QgdHlwZTsJLyogUjogdmFsdWUgdHlwZSAtIFNORFJWX0NUTF9FTEVNX1RZUEVfKiAqLworKwl1bnNpZ25lZCBpbnQgYWNjZXNzOwkJLyogUjogdmFsdWUgYWNjZXNzIChiaXRtYXNrKSAtIFNORFJWX0NUTF9FTEVNX0FDQ0VTU18qICovCisrCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIGNvdW50IG9mIHZhbHVlcyAqLworKwlfX2tlcm5lbF9waWRfdCBvd25lcjsJCS8qIG93bmVyJ3MgUElEIG9mIHRoaXMgY29udHJvbCAqLworKwl1bmlvbiB7CisrCQlzdHJ1Y3QgeworKwkJCWxvbmcgbWluOwkJLyogUjogbWluaW11bSB2YWx1ZSAqLworKwkJCWxvbmcgbWF4OwkJLyogUjogbWF4aW11bSB2YWx1ZSAqLworKwkJCWxvbmcgc3RlcDsJCS8qIFI6IHN0ZXAgKDAgdmFyaWFibGUpICovCisrCQl9IGludGVnZXI7CisrCQlzdHJ1Y3QgeworKwkJCWxvbmcgbG9uZyBtaW47CQkvKiBSOiBtaW5pbXVtIHZhbHVlICovCisrCQkJbG9uZyBsb25nIG1heDsJCS8qIFI6IG1heGltdW0gdmFsdWUgKi8KKysJCQlsb25nIGxvbmcgc3RlcDsJCS8qIFI6IHN0ZXAgKDAgdmFyaWFibGUpICovCisrCQl9IGludGVnZXI2NDsKKysJCXN0cnVjdCB7CisrCQkJdW5zaWduZWQgaW50IGl0ZW1zOwkvKiBSOiBudW1iZXIgb2YgaXRlbXMgKi8KKysJCQl1bnNpZ25lZCBpbnQgaXRlbTsJLyogVzogaXRlbSBudW1iZXIgKi8KKysJCQljaGFyIG5hbWVbNjRdOwkJLyogUjogdmFsdWUgbmFtZSAqLworKwkJCV9fdTY0IG5hbWVzX3B0cjsJLyogVzogbmFtZXMgbGlzdCAoRUxFTV9BREQgb25seSkgKi8KKysJCQl1bnNpZ25lZCBpbnQgbmFtZXNfbGVuZ3RoOworKwkJfSBlbnVtZXJhdGVkOworKwkJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMjhdOworKwl9IHZhbHVlOworKwl1bmlvbiB7CisrCQl1bnNpZ25lZCBzaG9ydCBkWzRdOwkJLyogZGltZW5zaW9ucyAqLworKwkJdW5zaWduZWQgc2hvcnQgKmRfcHRyOwkJLyogaW5kaXJlY3QgLSBvYnNvbGV0ZWQgKi8KKysJfSBkaW1lbjsKKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NC00KnNpemVvZih1bnNpZ25lZCBzaG9ydCldOworK307CisrCisrc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSB7CisrCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CS8qIFc6IGVsZW1lbnQgSUQgKi8KKysJdW5zaWduZWQgaW50IGluZGlyZWN0OiAxOwkvKiBXOiBpbmRpcmVjdCBhY2Nlc3MgLSBvYnNvbGV0ZWQgKi8KKysJdW5pb24geworKwkJdW5pb24geworKwkJCWxvbmcgdmFsdWVbMTI4XTsKKysJCQlsb25nICp2YWx1ZV9wdHI7CS8qIG9ic29sZXRlZCAqLworKwkJfSBpbnRlZ2VyOworKwkJdW5pb24geworKwkJCWxvbmcgbG9uZyB2YWx1ZVs2NF07CisrCQkJbG9uZyBsb25nICp2YWx1ZV9wdHI7CS8qIG9ic29sZXRlZCAqLworKwkJfSBpbnRlZ2VyNjQ7CisrCQl1bmlvbiB7CisrCQkJdW5zaWduZWQgaW50IGl0ZW1bMTI4XTsKKysJCQl1bnNpZ25lZCBpbnQgKml0ZW1fcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKysJCX0gZW51bWVyYXRlZDsKKysJCXVuaW9uIHsKKysJCQl1bnNpZ25lZCBjaGFyIGRhdGFbNTEyXTsKKysJCQl1bnNpZ25lZCBjaGFyICpkYXRhX3B0cjsJLyogb2Jzb2xldGVkICovCisrCQl9IGJ5dGVzOworKwkJc3RydWN0IHNuZF9hZXNfaWVjOTU4IGllYzk1ODsKKysJfSB2YWx1ZTsJCS8qIFJPICovCisrCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTI4LXNpemVvZihzdHJ1Y3QgdGltZXNwZWMpXTsKKyt9OworKworK3N0cnVjdCBzbmRfY3RsX3RsdiB7CisrCXVuc2lnbmVkIGludCBudW1pZDsJLyogY29udHJvbCBlbGVtZW50IG51bWVyaWMgaWRlbnRpZmljYXRpb24gKi8KKysJdW5zaWduZWQgaW50IGxlbmd0aDsJLyogaW4gYnl0ZXMgYWxpZ25lZCB0byA0ICovCisrCXVuc2lnbmVkIGludCB0bHZbMF07CS8qIGZpcnN0IFRMViAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUFZFUlNJT04JX0lPUignVScsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9DQVJEX0lORk8JX0lPUignVScsIDB4MDEsIHN0cnVjdCBzbmRfY3RsX2NhcmRfaW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0xJU1QJX0lPV1IoJ1UnLCAweDEwLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2xpc3QpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9JTkZPCV9JT1dSKCdVJywgMHgxMSwgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fUkVBRAlfSU9XUignVScsIDB4MTIsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9XUklURQlfSU9XUignVScsIDB4MTMsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9MT0NLCV9JT1coJ1UnLCAweDE0LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fVU5MT0NLCV9JT1coJ1UnLCAweDE1LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1NVQlNDUklCRV9FVkVOVFMgX0lPV1IoJ1UnLCAweDE2LCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9BREQJX0lPV1IoJ1UnLCAweDE3LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRVBMQUNFCV9JT1dSKCdVJywgMHgxOCwgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fUkVNT1ZFCV9JT1dSKCdVJywgMHgxOSwgc3RydWN0IHNuZF9jdGxfZWxlbV9pZCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfUkVBRAlfSU9XUignVScsIDB4MWEsIHN0cnVjdCBzbmRfY3RsX3RsdikKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfV1JJVEUJX0lPV1IoJ1UnLCAweDFiLCBzdHJ1Y3Qgc25kX2N0bF90bHYpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfVExWX0NPTU1BTkQJX0lPV1IoJ1UnLCAweDFjLCBzdHJ1Y3Qgc25kX2N0bF90bHYpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfSFdERVBfTkVYVF9ERVZJQ0UgX0lPV1IoJ1UnLCAweDIwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfSFdERVBfSU5GTwlfSU9SKCdVJywgMHgyMSwgc3RydWN0IHNuZF9od2RlcF9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9ORVhUX0RFVklDRQlfSU9SKCdVJywgMHgzMCwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9JTkZPCV9JT1dSKCdVJywgMHgzMSwgc3RydWN0IHNuZF9wY21faW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QQ01fUFJFRkVSX1NVQkRFVklDRSBfSU9XKCdVJywgMHgzMiwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1JBV01JRElfTkVYVF9ERVZJQ0UgX0lPV1IoJ1UnLCAweDQwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9JTkZPCV9JT1dSKCdVJywgMHg0MSwgc3RydWN0IHNuZF9yYXdtaWRpX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9QUkVGRVJfU1VCREVWSUNFIF9JT1coJ1UnLCAweDQyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUE9XRVIJCV9JT1dSKCdVJywgMHhkMCwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BPV0VSX1NUQVRFCV9JT1IoJ1UnLCAweGQxLCBpbnQpCisrCisrLyoKKysgKiAgUmVhZCBpbnRlcmZhY2UuCisrICovCisrCisrZW51bSBzbmRydl9jdGxfZXZlbnRfdHlwZSB7CisrCVNORFJWX0NUTF9FVkVOVF9FTEVNID0gMCwKKysJU05EUlZfQ1RMX0VWRU5UX0xBU1QgPSBTTkRSVl9DVExfRVZFTlRfRUxFTSwKKyt9OworKworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfVkFMVUUJKDE8PDApCS8qIGVsZW1lbnQgdmFsdWUgd2FzIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX0lORk8JKDE8PDEpCS8qIGVsZW1lbnQgaW5mbyB3YXMgY2hhbmdlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfQURECSgxPDwyKQkvKiBlbGVtZW50IHdhcyBhZGRlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfVExWCSgxPDwzKQkvKiBlbGVtZW50IFRMViB0cmVlIHdhcyBjaGFuZ2VkICovCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19SRU1PVkUJKH4wVSkJLyogZWxlbWVudCB3YXMgcmVtb3ZlZCAqLworKworK3N0cnVjdCBzbmRfY3RsX2V2ZW50IHsKKysJaW50IHR5cGU7CS8qIGV2ZW50IHR5cGUgLSBTTkRSVl9DVExfRVZFTlRfKiAqLworKwl1bmlvbiB7CisrCQlzdHJ1Y3QgeworKwkJCXVuc2lnbmVkIGludCBtYXNrOworKwkJCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CisrCQl9IGVsZW07CisrCQl1bnNpZ25lZCBjaGFyIGRhdGE4WzYwXTsKKysJfSBkYXRhOworK307CisrCisrLyoKKysgKiAgQ29udHJvbCBuYW1lcworKyAqLworKworKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfTk9ORQkJCQkiIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfUExBWUJBQ0sJCQkJIlBsYXliYWNrICIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0NBUFRVUkUJCQkJIkNhcHR1cmUgIgorKworKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X05PTkUJCQkiIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1NXSVRDSAkJCSJTd2l0Y2giCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfVk9MVU1FCQkJIlZvbHVtZSIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9ERUZBVUxUCQkJIkRlZmF1bHQiCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfTUFTSwkJCSJNYXNrIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X0NPTl9NQVNLCQkJIkNvbiBNYXNrIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1BST19NQVNLCQkJIlBybyBNYXNrIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1BDTV9TVFJFQU0JCSJQQ00gU3RyZWFtIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4KGV4cGwsZGlyZWN0aW9uLHdoYXQpCSJJRUM5NTggIiBleHBsIFNORFJWX0NUTF9OQU1FXyMjZGlyZWN0aW9uIFNORFJWX0NUTF9OQU1FX0lFQzk1OF8jI3doYXQKKysKKysjZW5kaWYgLyogX1VBUElfX1NPVU5EX0FTT1VORF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjg0NzFmNDA0CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmgKK0BAIC0wLDAgKzEsMTM1IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrI2lmbmRlZiBfX1NPVU5EX0FTT1VORF9GTV9ICisrI2RlZmluZSBfX1NPVU5EX0FTT1VORF9GTV9ICisrCisrLyoKKysgKiAgQWR2YW5jZWQgTGludXggU291bmQgQXJjaGl0ZWN0dXJlIC0gQUxTQQorKyAqCisrICogIEludGVyZmFjZSBmaWxlIGJldHdlZW4gQUxTQSBkcml2ZXIgJiB1c2VyIHNwYWNlCisrICogIENvcHlyaWdodCAoYykgMTk5NC05OCBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PiwKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIDRGcm9udCBUZWNobm9sb2dpZXMKKysgKgorKyAqICBEaXJlY3QgRk0gY29udHJvbAorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorKyAqCisrICovCisrCisrI2RlZmluZSBTTkRSVl9ETV9GTV9NT0RFX09QTDIJMHgwMAorKyNkZWZpbmUgU05EUlZfRE1fRk1fTU9ERV9PUEwzCTB4MDEKKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX2luZm8geworKwl1bnNpZ25lZCBjaGFyIGZtX21vZGU7CQkvKiBPUEwgbW9kZSwgc2VlIFNORFJWX0RNX0ZNX01PREVfWFhYICovCisrCXVuc2lnbmVkIGNoYXIgcmh5dGhtOwkJLyogcGVyY3Vzc2lvbiBtb2RlIGZsYWcgKi8KKyt9OworKworKy8qCisrICogIERhdGEgc3RydWN0dXJlIGNvbXBvc2luZyBhbiBGTSAibm90ZSIgb3Igc291bmQgZXZlbnQuCisrICovCisrCisrc3RydWN0IHNuZF9kbV9mbV92b2ljZSB7CisrCXVuc2lnbmVkIGNoYXIgb3A7CQkvKiBvcGVyYXRvciBjZWxsICgwIG9yIDEpICovCisrCXVuc2lnbmVkIGNoYXIgdm9pY2U7CQkvKiBGTSB2b2ljZSAoMCB0byAxNykgKi8KKysKKysJdW5zaWduZWQgY2hhciBhbTsJCS8qIGFtcGxpdHVkZSBtb2R1bGF0aW9uICovCisrCXVuc2lnbmVkIGNoYXIgdmlicmF0bzsJCS8qIHZpYnJhdG8gZWZmZWN0ICovCisrCXVuc2lnbmVkIGNoYXIgZG9fc3VzdGFpbjsJLyogc3VzdGFpbiBwaGFzZSAqLworKwl1bnNpZ25lZCBjaGFyIGtiZF9zY2FsZTsJLyoga2V5Ym9hcmQgc2NhbGluZyAqLworKwl1bnNpZ25lZCBjaGFyIGhhcm1vbmljOwkJLyogNCBiaXRzOiBoYXJtb25pYyBhbmQgbXVsdGlwbGllciAqLworKwl1bnNpZ25lZCBjaGFyIHNjYWxlX2xldmVsOwkvKiAyIGJpdHM6IGRlY3JlYXNlIG91dHB1dCBmcmVxIHJpc2VzICovCisrCXVuc2lnbmVkIGNoYXIgdm9sdW1lOwkJLyogNiBiaXRzOiB2b2x1bWUgKi8KKysKKysJdW5zaWduZWQgY2hhciBhdHRhY2s7CQkvKiA0IGJpdHM6IGF0dGFjayByYXRlICovCisrCXVuc2lnbmVkIGNoYXIgZGVjYXk7CQkvKiA0IGJpdHM6IGRlY2F5IHJhdGUgKi8KKysJdW5zaWduZWQgY2hhciBzdXN0YWluOwkJLyogNCBiaXRzOiBzdXN0YWluIGxldmVsICovCisrCXVuc2lnbmVkIGNoYXIgcmVsZWFzZTsJCS8qIDQgYml0czogcmVsZWFzZSByYXRlICovCisrCisrCXVuc2lnbmVkIGNoYXIgZmVlZGJhY2s7CQkvKiAzIGJpdHM6IGZlZWRiYWNrIGZvciBvcDAgKi8KKysJdW5zaWduZWQgY2hhciBjb25uZWN0aW9uOwkvKiAwIGZvciBzZXJpYWwsIDEgZm9yIHBhcmFsbGVsICovCisrCXVuc2lnbmVkIGNoYXIgbGVmdDsJCS8qIHN0ZXJlbyBsZWZ0ICovCisrCXVuc2lnbmVkIGNoYXIgcmlnaHQ7CQkvKiBzdGVyZW8gcmlnaHQgKi8KKysJdW5zaWduZWQgY2hhciB3YXZlZm9ybTsJCS8qIDMgYml0czogd2F2ZWZvcm0gc2hhcGUgKi8KKyt9OworKworKy8qCisrICogIFRoaXMgZGVzY3JpYmVzIGFuIEZNIG5vdGUgYnkgaXRzIHZvaWNlLCBvY3RhdmUsIGZyZXF1ZW5jeSBudW1iZXIgKDEwYml0KQorKyAqICBhbmQga2V5IG9uL29mZi4KKysgKi8KKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX25vdGUgeworKwl1bnNpZ25lZCBjaGFyIHZvaWNlOwkvKiAwLTE3IHZvaWNlIGNoYW5uZWwgKi8KKysJdW5zaWduZWQgY2hhciBvY3RhdmU7CS8qIDMgYml0czogd2hhdCBvY3RhdmUgdG8gcGxheSAqLworKwl1bnNpZ25lZCBpbnQgZm51bTsJLyogMTAgYml0czogZnJlcXVlbmN5IG51bWJlciAqLworKwl1bnNpZ25lZCBjaGFyIGtleV9vbjsJLyogc2V0IGZvciBhY3RpdmUsIGNsZWFyIGZvciBzaWxlbnQgKi8KKyt9OworKworKy8qCisrICogIEZNIHBhcmFtZXRlcnMgdGhhdCBhcHBseSBnbG9iYWxseSB0byBhbGwgdm9pY2VzLCBhbmQgdGh1cyBhcmUgbm90ICJub3RlcyIKKysgKi8KKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX3BhcmFtcyB7CisrCXVuc2lnbmVkIGNoYXIgYW1fZGVwdGg7CQkvKiBhbXBsaXR1ZGUgbW9kdWxhdGlvbiBkZXB0aCAoMT1oaSkgKi8KKysJdW5zaWduZWQgY2hhciB2aWJfZGVwdGg7CS8qIHZpYnJhdG8gZGVwdGggKDE9aGkpICovCisrCXVuc2lnbmVkIGNoYXIga2JkX3NwbGl0OwkvKiBrZXlib2FyZCBzcGxpdCAqLworKwl1bnNpZ25lZCBjaGFyIHJoeXRobTsJCS8qIHBlcmN1c3Npb24gbW9kZSBzZWxlY3QgKi8KKysKKysJLyogVGhpcyBibG9jayBpcyB0aGUgcGVyY3Vzc2lvbiBpbnN0cnVtZW50IGRhdGEgKi8KKysJdW5zaWduZWQgY2hhciBiYXNzOworKwl1bnNpZ25lZCBjaGFyIHNuYXJlOworKwl1bnNpZ25lZCBjaGFyIHRvbXRvbTsKKysJdW5zaWduZWQgY2hhciBjeW1iYWw7CisrCXVuc2lnbmVkIGNoYXIgaGloYXQ7CisrfTsKKysKKysvKgorKyAqICBGTSBtb2RlIGlvY3RsIHNldHRpbmdzCisrICovCisrCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9JTkZPCQlfSU9SKCdIJywgMHgyMCwgc3RydWN0IHNuZF9kbV9mbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfUkVTRVQJCV9JTyAoJ0gnLCAweDIxKQorKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfUExBWV9OT1RFCV9JT1coJ0gnLCAweDIyLCBzdHJ1Y3Qgc25kX2RtX2ZtX25vdGUpCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfVk9JQ0UJX0lPVygnSCcsIDB4MjMsIHN0cnVjdCBzbmRfZG1fZm1fdm9pY2UpCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfUEFSQU1TCV9JT1coJ0gnLCAweDI0LCBzdHJ1Y3Qgc25kX2RtX2ZtX3BhcmFtcykKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9NT0RFCV9JT1coJ0gnLCAweDI1LCBpbnQpCisrLyogZm9yIE9QTDMgb25seSAqLworKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX0NPTk5FQ1RJT04JX0lPVygnSCcsIDB4MjYsIGludCkKKysvKiBTQkkgcGF0Y2ggbWFuYWdlbWVudCAqLworKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfQ0xFQVJfUEFUQ0hFUwlfSU8gKCdIJywgMHg0MCkKKysKKysjZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9SRVNFVAkJMHgyMAorKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1BMQVlfTk9URQkJMHgyMQorKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9WT0lDRQkJMHgyMgorKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9QQVJBTVMJMHgyMworKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9NT0RFCQkweDI0CisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX09QTAkJMHgyNQorKworKy8qCisrICogUGF0Y2ggUmVjb3JkIC0gZml4ZWQgc2l6ZSBmb3Igd3JpdGUKKysgKi8KKysKKysjZGVmaW5lIEZNX0tFWV9TQkkJIlNCSVwwMzIiCisrI2RlZmluZSBGTV9LRVlfMk9QCSIyT1BcMDMyIgorKyNkZWZpbmUgRk1fS0VZXzRPUAkiNE9QXDAzMiIKKysKKytzdHJ1Y3Qgc2JpX3BhdGNoIHsKKysJdW5zaWduZWQgY2hhciBwcm9nOworKwl1bnNpZ25lZCBjaGFyIGJhbms7CisrCWNoYXIga2V5WzRdOworKwljaGFyIG5hbWVbMjVdOworKwljaGFyIGV4dGVuc2lvbls3XTsKKysJdW5zaWduZWQgY2hhciBkYXRhWzMyXTsKKyt9OworKworKyNlbmRpZiAvKiBfX1NPVU5EX0FTT1VORF9GTV9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYzExNTBlNGQKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmgKK0BAIC0wLDAgKzEsMzk1IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgQ29weXJpZ2h0IChjKSBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PiwKKysgKgkJICAgICBDcmVhdGl2ZSBMYWJzLCBJbmMuCisrICogIERlZmluaXRpb25zIGZvciBFTVUxMEsxIChTQiBMaXZlISkgY2hpcHMKKysgKgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorKyAqCisrICovCisrI2lmbmRlZiBfVUFQSV9fU09VTkRfRU1VMTBLMV9ICisrI2RlZmluZSBfVUFQSV9fU09VTkRfRU1VMTBLMV9ICisrCisrLyoKKysgKiAtLS0tIEZYODAxMCAtLS0tCisrICovCisrCisrI2RlZmluZSBFTVUxMEsxX0NBUkRfQ1JFQVRJVkUJCQkweDAwMDAwMDAwCisrI2RlZmluZSBFTVUxMEsxX0NBUkRfRU1VQVBTCQkJMHgwMDAwMDAwMQorKworKyNkZWZpbmUgRU1VMTBLMV9GWDgwMTBfUENNX0NPVU5UCQk4CisrCisrLyoKKysgKiBGb2xsb3dpbmcgZGVmaW5pdGlvbiBpcyBjb3BpZWQgZnJvbSBsaW51eC90eXBlcy5oIHRvIHN1cHBvcnQgY29tcGlsaW5nCisrICogdGhpcyBoZWFkZXIgZmlsZSBpbiB1c2Vyc3BhY2Ugc2luY2UgdGhleSBhcmUgbm90IGdlbmVyYWxseSBhdmFpbGFibGUgZm9yCisrICogdWFwaSBoZWFkZXJzLgorKyAqLworKyNkZWZpbmUgX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKG5hbWUsYml0cykgXAorKwl1bnNpZ25lZCBsb25nIG5hbWVbKGJpdHMpIC8gKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgpXQorKworKy8qIGluc3RydWN0aW9uIHNldCAqLworKyNkZWZpbmUgaU1BQzAJIDB4MDAJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpTUFDMQkgMHgwMQkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHNhdHVyYXRpb24gKi8KKysjZGVmaW5lIGlNQUMyCSAweDAyCS8qIFIgPSBBICsgKFggKiBZID4+IDMxKSAgIDsgd3JhcGFyb3VuZCAqLworKyNkZWZpbmUgaU1BQzMJIDB4MDMJLyogUiA9IEEgKyAoLVggKiBZID4+IDMxKSAgOyB3cmFwYXJvdW5kICovCisrI2RlZmluZSBpTUFDSU5UMCAweDA0CS8qIFIgPSBBICsgWCAqIFkJICAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpTUFDSU5UMSAweDA1CS8qIFIgPSBBICsgWCAqIFkJICAgOyB3cmFwYXJvdW5kICgzMS1iaXQpICovCisrI2RlZmluZSBpQUNDMwkgMHgwNgkvKiBSID0gQSArIFggKyBZCSAgIDsgc2F0dXJhdGlvbiAqLworKyNkZWZpbmUgaU1BQ01WICAgMHgwNwkvKiBSID0gQSwgYWNjICs9IFggKiBZID4+IDMxICovCisrI2RlZmluZSBpQU5EWE9SICAweDA4CS8qIFIgPSAoQSAmIFgpIF4gWSAqLworKyNkZWZpbmUgaVRTVE5FRyAgMHgwOQkvKiBSID0gKEEgPj0gWSkgPyBYIDogflggKi8KKysjZGVmaW5lIGlMSU1JVEdFIDB4MGEJLyogUiA9IChBID49IFkpID8gWCA6IFkgKi8KKysjZGVmaW5lIGlMSU1JVExUIDB4MGIJLyogUiA9IChBIDwgWSkgPyBYIDogWSAqLworKyNkZWZpbmUgaUxPRwkgMHgwYwkvKiBSID0gbGluZWFyX2RhdGEsIEEgKGxvZ19kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworKyNkZWZpbmUgaUVYUAkgMHgwZAkvKiBSID0gbG9nX2RhdGEsIEEgKGxpbmVhcl9kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworKyNkZWZpbmUgaUlOVEVSUCAgMHgwZQkvKiBSID0gQSArIChYICogKFkgLSBBKSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworKyNkZWZpbmUgaVNLSVAgICAgMHgwZgkvKiBSID0gQSAoY2NfcmVnKSwgWCAoY291bnQpLCBZIChjY190ZXN0KSAqLworKworKy8qIEdQUnMgKi8KKysjZGVmaW5lIEZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKysjZGVmaW5lIEVYVElOKHgpCSgweDEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKysjZGVmaW5lIEVYVE9VVCh4KQkoMHgyMCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIG91dHMgLT4gRlhXQyBsb3cgMTYgYml0cyAqLworKyNkZWZpbmUgRlhCVVMyKHgpCSgweDMwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgY29waWVzIG9mIGZ4IGJ1c2VzIGZvciBjYXB0dXJlIC0+IEZYV0MgaGlnaCAxNiBiaXRzICovCisrCQkJCQkvKiBOQjogMHgzMSBhbmQgMHgzMiBhcmUgc2hhcmVkIHdpdGggQ2VudGVyL0xGRSBvbiBTQiBsaXZlIDUuMSAqLworKworKyNkZWZpbmUgQ18wMDAwMDAwMAkweDQwCisrI2RlZmluZSBDXzAwMDAwMDAxCTB4NDEKKysjZGVmaW5lIENfMDAwMDAwMDIJMHg0MgorKyNkZWZpbmUgQ18wMDAwMDAwMwkweDQzCisrI2RlZmluZSBDXzAwMDAwMDA0CTB4NDQKKysjZGVmaW5lIENfMDAwMDAwMDgJMHg0NQorKyNkZWZpbmUgQ18wMDAwMDAxMAkweDQ2CisrI2RlZmluZSBDXzAwMDAwMDIwCTB4NDcKKysjZGVmaW5lIENfMDAwMDAxMDAJMHg0OAorKyNkZWZpbmUgQ18wMDAxMDAwMAkweDQ5CisrI2RlZmluZSBDXzAwMDgwMDAwCTB4NGEKKysjZGVmaW5lIENfMTAwMDAwMDAJMHg0YgorKyNkZWZpbmUgQ18yMDAwMDAwMAkweDRjCisrI2RlZmluZSBDXzQwMDAwMDAwCTB4NGQKKysjZGVmaW5lIENfODAwMDAwMDAJMHg0ZQorKyNkZWZpbmUgQ183ZmZmZmZmZgkweDRmCisrI2RlZmluZSBDX2ZmZmZmZmZmCTB4NTAKKysjZGVmaW5lIENfZmZmZmZmZmUJMHg1MQorKyNkZWZpbmUgQ19jMDAwMDAwMAkweDUyCisrI2RlZmluZSBDXzRmMWJiY2RjCTB4NTMKKysjZGVmaW5lIENfNWE3ZWY5ZGIJMHg1NAorKyNkZWZpbmUgQ18wMDEwMDAwMAkweDU1CQkvKiA/PyAqLworKyNkZWZpbmUgR1BSX0FDQ1UJMHg1NgkJLyogQUNDVU0sIGFjY3VtdWxhdG9yICovCisrI2RlZmluZSBHUFJfQ09ORAkweDU3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworKyNkZWZpbmUgR1BSX05PSVNFMAkweDU4CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEdQUl9OT0lTRTEJMHg1OQkJLyogbm9pc2Ugc291cmNlICovCisrI2RlZmluZSBHUFJfSVJRCQkweDVhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEdQUl9EQkFDCTB4NWIJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgKi8KKysjZGVmaW5lIEdQUih4KQkJKEZYR1BSRUdCQVNFICsgKHgpKSAvKiBmcmVlIEdQUnM6IHggPSAweDAwIC0gMHhmZiAqLworKyNkZWZpbmUgSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCisrI2RlZmluZSBFVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKysjZGVmaW5lIElUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHg3ZiAqLworKyNkZWZpbmUgRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHg4MCArICh4KSkgLyogeCA9IDB4MDAgLSAweDFmICovCisrCisrI2RlZmluZSBBX0lUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworKyNkZWZpbmUgQV9FVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKysjZGVmaW5lIEFfSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCisrI2RlZmluZSBBX0VUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworKyNkZWZpbmUgQV9JVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKysjZGVmaW5lIEFfRVRSQU1fQ1RMKHgpCShBX1RBTktNRU1DVExSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCisrCisrI2RlZmluZSBBX0ZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgRlggYnVzZXMgKi8KKysjZGVmaW5lIEFfRVhUSU4oeCkJKDB4NDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwaHlzaWNhbCBpbnMgKi8KKysjZGVmaW5lIEFfUDE2VklOKHgpCSgweDUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcDE2diBpbnMgKEEyIG9ubHkpICJFTVUzMiBpbnB1dHMiICovCisrI2RlZmluZSBBX0VYVE9VVCh4KQkoMHg2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIHBoeXNpY2FsIG91dHMgLT4gQV9GWFdDMSAweDc5LTdmIHVua25vd24gICAqLworKyNkZWZpbmUgQV9GWEJVUzIoeCkJKDB4ODAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgxZiBleHRyYSBvdXRzIHVzZWQgZm9yIEVGWCBjYXB0dXJlIC0+IEFfRlhXQzIgKi8KKysjZGVmaW5lIEFfRU1VMzJPVVRIKHgpCSgweGEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xMCAtIF8xRiIgLSA/Pz8gKi8KKysjZGVmaW5lIEFfRU1VMzJPVVRMKHgpCSgweGIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xIC0gX0YiIC0gPz8/ICovCisrI2RlZmluZSBBM19FTVUzMklOKHgpCSgweDE2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDNmICJFTVUzMl9JTl8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworKyNkZWZpbmUgQTNfRU1VMzJPVVQoeCkJKDB4MUUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworKyNkZWZpbmUgQV9HUFIoeCkJKEFfRlhHUFJFR0JBU0UgKyAoeCkpCisrCisrLyogY2NfcmVnIGNvbnN0YW50cyAqLworKyNkZWZpbmUgQ0NfUkVHX05PUk1BTElaRUQgQ18wMDAwMDAwMQorKyNkZWZpbmUgQ0NfUkVHX0JPUlJPVwlDXzAwMDAwMDAyCisrI2RlZmluZSBDQ19SRUdfTUlOVVMJQ18wMDAwMDAwNAorKyNkZWZpbmUgQ0NfUkVHX1pFUk8JQ18wMDAwMDAwOAorKyNkZWZpbmUgQ0NfUkVHX1NBVFVSQVRFCUNfMDAwMDAwMTAKKysjZGVmaW5lIENDX1JFR19OT05aRVJPCUNfMDAwMDAxMDAKKysKKysvKiBGWCBidXNlcyAqLworKyNkZWZpbmUgRlhCVVNfUENNX0xFRlQJCTB4MDAKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVAkJMHgwMQorKyNkZWZpbmUgRlhCVVNfUENNX0xFRlRfUkVBUgkweDAyCisrI2RlZmluZSBGWEJVU19QQ01fUklHSFRfUkVBUgkweDAzCisrI2RlZmluZSBGWEJVU19NSURJX0xFRlQJCTB4MDQKKysjZGVmaW5lIEZYQlVTX01JRElfUklHSFQJMHgwNQorKyNkZWZpbmUgRlhCVVNfUENNX0NFTlRFUgkweDA2CisrI2RlZmluZSBGWEJVU19QQ01fTEZFCQkweDA3CisrI2RlZmluZSBGWEJVU19QQ01fTEVGVF9GUk9OVAkweDA4CisrI2RlZmluZSBGWEJVU19QQ01fUklHSFRfRlJPTlQJMHgwOQorKyNkZWZpbmUgRlhCVVNfTUlESV9SRVZFUkIJMHgwYworKyNkZWZpbmUgRlhCVVNfTUlESV9DSE9SVVMJMHgwZAorKyNkZWZpbmUgRlhCVVNfUENNX0xFRlRfU0lERQkweDBlCisrI2RlZmluZSBGWEJVU19QQ01fUklHSFRfU0lERQkweDBmCisrI2RlZmluZSBGWEJVU19QVF9MRUZUCQkweDE0CisrI2RlZmluZSBGWEJVU19QVF9SSUdIVAkJMHgxNQorKworKy8qIElucHV0cyAqLworKyNkZWZpbmUgRVhUSU5fQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fQUM5N19SCSAgIDB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX1NQRElGX0NEX0wgICAweDAyCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9TUERJRl9DRF9SICAgMHgwMwkvKiBpbnRlcm5hbCBTL1BESUYgQ0QgLSBvbmJvYXJkIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX1pPT01fTAkgICAweDA0CS8qIFpvb20gVmlkZW8gSTJTIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fWk9PTV9SCSAgIDB4MDUJLyogWm9vbSBWaWRlbyBJMlMgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fVE9TTElOS19MCSAgIDB4MDYJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fVE9TTElOS19SICAgIDB4MDcJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX0xJTkUxX0wJICAgMHgwOAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAxIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fTElORTFfUgkgICAweDA5CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fQ09BWF9TUERJRl9MIDB4MGEJLyogTGl2ZURyaXZlIC0gQ29heGlhbCBTL1BESUYgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX1IgMHgwYiAvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRJTl9MSU5FMl9MCSAgIDB4MGMJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMiAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVElOX0xJTkUyX1IJICAgMHgwZAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gcmlnaHQgKi8KKysKKysvKiBPdXRwdXRzICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgcGxheWJhY2sgY2hhbm5lbCAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9UT1NMSU5LX0wgICAweDAyCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9UT1NMSU5LX1IgICAweDAzCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19DRU5URVIgMHgwNAkvKiBTQiBMaXZlIDUuMSAtIGNlbnRlciAqLworKyNkZWZpbmUgRVhUT1VUX0FDOTdfTEZFCSAgIDB4MDUgLyogU0IgTGl2ZSA1LjEgLSBMRkUgKi8KKysjZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfTCAweDA2CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfUiAweDA3CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfUkVBUl9MCSAgIDB4MDgJLyogUmVhciBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX1JFQVJfUgkgICAweDA5CS8qIFJlYXIgY2hhbm5lbCAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfQURDX0NBUF9MICAgMHgwYQkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRPVVRfQURDX0NBUF9SICAgMHgwYgkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSByaWdodCAqLworKyNkZWZpbmUgRVhUT1VUX01JQ19DQVAJICAgMHgwYwkvKiBNSUMgQ2FwdHVyZSBidWZmZXIgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfTCAweDBkCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBMZWZ0ICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19SRUFSX1IgMHgwZQkvKiBTQiBMaXZlIDUuMSAoYykgMjAwMyAtIFJlYXIgUmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQ0VOVEVSCSAgIDB4MTEgLyogQW5hbG9nIENlbnRlciAqLworKyNkZWZpbmUgRVhUT1VUX0FMRkUJICAgMHgxMiAvKiBBbmFsb2cgTEZFICovCisrCisrLyogQXVkaWd5IElucHV0cyAqLworKyNkZWZpbmUgQV9FWFRJTl9BQzk3X0wJCTB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9BQzk3X1IJCTB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUSU5fU1BESUZfQ0RfTAkweDAyCS8qIGRpZ2l0YWwgQ0QgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9SCTB4MDMJLyogZGlnaXRhbCBDRCBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9MICAgICAweDA0ICAgIC8qIGF1ZGlneSBkcml2ZSBPcHRpY2FsIFNQRElGIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9PUFRfU1BESUZfUiAgICAgMHgwNSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovIAorKyNkZWZpbmUgQV9FWFRJTl9MSU5FMl9MCQkweDA4CS8qIGF1ZGlneSBkcml2ZSBsaW5lMi9taWMyIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9MSU5FMl9SCQkweDA5CS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUSU5fQURDX0wJCTB4MGEgICAgLyogUGhpbGlwcyBBREMgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0FEQ19SCQkweDBiICAgIC8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUSU5fQVVYMl9MCQkweDBjCS8qIGF1ZGlneSBkcml2ZSBhdXgyIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9BVVgyX1IJCTB4MGQJLyogICAgICAgICAgICAgICAgICAgLSByaWdodCAqLworKworKy8qIEF1ZGlnaXkgT3V0cHV0cyAqLworKyNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfTAkweDAwCS8qIGRpZ2l0YWwgZnJvbnQgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfUgkweDAxCS8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0NFTlRFUgkJMHgwMgkvKiBkaWdpdGFsIGZyb250IGNlbnRlciAqLworKyNkZWZpbmUgQV9FWFRPVVRfTEZFCQkweDAzCS8qIGRpZ2l0YWwgZnJvbnQgbGZlICovCisrI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfTAkweDA0CS8qIGhlYWRwaG9uZSBhdWRpZ3kgZHJpdmUgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfSEVBRFBIT05FX1IJMHgwNQkvKiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovCisrI2RlZmluZSBBX0VYVE9VVF9SRUFSX0wJCTB4MDYJLyogZGlnaXRhbCByZWFyIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX1JFQVJfUgkJMHgwNwkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9MCTB4MDgJLyogYW5hbG9nIGZyb250IGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9SCTB4MDkJLyogICAgICAgICAgICAgIHJpZ2h0ICovCisrI2RlZmluZSBBX0VYVE9VVF9BQ0VOVEVSCTB4MGEJLyogYW5hbG9nIGNlbnRlciAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUxGRQkJMHgwYgkvKiBhbmFsb2cgTEZFICovCisrI2RlZmluZSBBX0VYVE9VVF9BU0lERV9MCTB4MGMJLyogYW5hbG9nIHNpZGUgbGVmdCAgLSBBdWRpZ3kgMiBaUyAqLworKyNkZWZpbmUgQV9FWFRPVVRfQVNJREVfUgkweDBkCS8qICAgICAgICAgICAgIHJpZ2h0IC0gQXVkaWd5IDIgWlMgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FSRUFSX0wJMHgwZQkvKiBhbmFsb2cgcmVhciBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9BUkVBUl9SCTB4MGYJLyogICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FDOTdfTAkJMHgxMAkvKiBBQzk3IGxlZnQgKGZyb250KSAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUM5N19SCQkweDExCS8qICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfTAkweDE2CS8qIEFEQyBjYXB0dXJlIGJ1ZmZlciBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9BRENfQ0FQX1IJMHgxNwkvKiAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX01JQ19DQVAJMHgxOAkvKiBNaWMgY2FwdHVyZSBidWZmZXIgKi8KKysKKysvKiBBdWRpZ3kgY29uc3RhbnRzICovCisrI2RlZmluZSBBX0NfMDAwMDAwMDAJMHhjMAorKyNkZWZpbmUgQV9DXzAwMDAwMDAxCTB4YzEKKysjZGVmaW5lIEFfQ18wMDAwMDAwMgkweGMyCisrI2RlZmluZSBBX0NfMDAwMDAwMDMJMHhjMworKyNkZWZpbmUgQV9DXzAwMDAwMDA0CTB4YzQKKysjZGVmaW5lIEFfQ18wMDAwMDAwOAkweGM1CisrI2RlZmluZSBBX0NfMDAwMDAwMTAJMHhjNgorKyNkZWZpbmUgQV9DXzAwMDAwMDIwCTB4YzcKKysjZGVmaW5lIEFfQ18wMDAwMDEwMAkweGM4CisrI2RlZmluZSBBX0NfMDAwMTAwMDAJMHhjOQorKyNkZWZpbmUgQV9DXzAwMDAwODAwCTB4Y2EKKysjZGVmaW5lIEFfQ18xMDAwMDAwMAkweGNiCisrI2RlZmluZSBBX0NfMjAwMDAwMDAJMHhjYworKyNkZWZpbmUgQV9DXzQwMDAwMDAwCTB4Y2QKKysjZGVmaW5lIEFfQ184MDAwMDAwMAkweGNlCisrI2RlZmluZSBBX0NfN2ZmZmZmZmYJMHhjZgorKyNkZWZpbmUgQV9DX2ZmZmZmZmZmCTB4ZDAKKysjZGVmaW5lIEFfQ19mZmZmZmZmZQkweGQxCisrI2RlZmluZSBBX0NfYzAwMDAwMDAJMHhkMgorKyNkZWZpbmUgQV9DXzRmMWJiY2RjCTB4ZDMKKysjZGVmaW5lIEFfQ181YTdlZjlkYgkweGQ0CisrI2RlZmluZSBBX0NfMDAxMDAwMDAJMHhkNQorKyNkZWZpbmUgQV9HUFJfQUNDVQkweGQ2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKysjZGVmaW5lIEFfR1BSX0NPTkQJMHhkNwkJLyogQ0NSLCBjb25kaXRpb24gcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEFfR1BSX05PSVNFMAkweGQ4CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEFfR1BSX05PSVNFMQkweGQ5CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEFfR1BSX0lSUQkweGRhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEFfR1BSX0RCQUMJMHhkYgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAtIGludGVybmFsICovCisrI2RlZmluZSBBX0dQUl9EQkFDRQkweGRlCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gZXh0ZXJuYWwgKi8KKysKKysvKiBkZWZpbml0aW9ucyBmb3IgZGVidWcgcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1pDCQkJMHg4MDAwMDAwMAkvKiB6ZXJvIHRyYW0gY291bnRlciAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU0FUVVJBVElPTl9PQ0NVUkVECTB4MDIwMDAwMDAJLyogc2F0dXJhdGlvbiBjb250cm9sICovCisrI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX0FERFIJMHgwMWZmMDAwMAkvKiBzYXR1cmF0aW9uIGFkZHJlc3MgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQCQkweDAwMDA4MDAwCS8qIHNpbmdsZSBzdGVwIG1vZGUgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NURVAJCTB4MDAwMDQwMDAJLyogc3RhcnQgc2luZ2xlIHN0ZXAgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX0NPTkRJVElPTl9DT0RFCTB4MDAwMDNlMDAJLyogY29uZGl0aW9uIGNvZGUgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQX0FERFIJMHgwMDAwMDFmZgkvKiBzaW5nbGUgc3RlcCBhZGRyZXNzICovCisrCisrLyogdGFuayBtZW1vcnkgYWRkcmVzcyBsaW5lICovCisrI2lmbmRlZiBfX0tFUk5FTF9fCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19BRERSX01BU0sgMHgwMDBmZmZmZgkvKiAyMCBiaXQgdGFuayBhZGRyZXNzIGZpZWxkCQkJKi8KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX0NMRUFSCSAweDAwODAwMDAwCS8qIENsZWFyIHRhbmsgbWVtb3J5CQkJCSovCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19BTElHTgkgMHgwMDQwMDAwMAkvKiBBbGlnbiByZWFkIG9yIHdyaXRlIHJlbGF0aXZlIHRvIHRhbmsgYWNjZXNzCSovCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19XUklURQkgMHgwMDIwMDAwMAkvKiBXcml0ZSB0byB0YW5rIG1lbW9yeQkJCQkqLworKyNkZWZpbmUgVEFOS01FTUFERFJSRUdfUkVBRAkgMHgwMDEwMDAwMAkvKiBSZWFkIGZyb20gdGFuayBtZW1vcnkJCQkqLworKyNlbmRpZgorKworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyB7CisrCXVuc2lnbmVkIGludCBpbnRlcm5hbF90cmFtX3NpemU7CS8qIGluIHNhbXBsZXMgKi8KKysJdW5zaWduZWQgaW50IGV4dGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworKwljaGFyIGZ4YnVzX25hbWVzWzE2XVszMl07CQkvKiBuYW1lcyBvZiBGWEJVU2VzICovCisrCWNoYXIgZXh0aW5fbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIGV4dGVybmFsIGlucHV0cyAqLworKwljaGFyIGV4dG91dF9uYW1lc1szMl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgb3V0cHV0cyAqLworKwl1bnNpZ25lZCBpbnQgZ3ByX2NvbnRyb2xzOwkJLyogY291bnQgb2YgR1BSIGNvbnRyb2xzICovCisrfTsKKysKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX05PTkUJCTAKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RBQkxFMTAwCTEKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX0JBU1MJCTIKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RSRUJMRQkJMworKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fT05PRkYJCTQKKysKKytlbnVtIGVtdTEwazFfY3RsX2VsZW1faWZhY2UgeworKwlFTVUxMEsxX0NUTF9FTEVNX0lGQUNFX01JWEVSID0gMiwJLyogdmlydHVhbCBtaXhlciBkZXZpY2UgKi8KKysJRU1VMTBLMV9DVExfRUxFTV9JRkFDRV9QQ00gPSAzLAkJLyogUENNIGRldmljZSAqLworK307CisrCisrc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgeworKwl1bnNpZ25lZCBpbnQgcGFkOwkJLyogZG9uJ3QgdXNlICovCisrCWludCBpZmFjZTsJCQkvKiBpbnRlcmZhY2UgaWRlbnRpZmllciAqLworKwl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogZGV2aWNlL2NsaWVudCBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIHN1YmRldmljZSAoc3Vic3RyZWFtKSBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzQ0XTsJCS8qIEFTQ0lJIG5hbWUgb2YgaXRlbSAqLworKwl1bnNpZ25lZCBpbnQgaW5kZXg7CQkvKiBpbmRleCBvZiBpdGVtICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIHsKKysJc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgaWQ7CS8qIGZ1bGwgY29udHJvbCBJRCBkZWZpbml0aW9uICovCisrCXVuc2lnbmVkIGludCB2Y291bnQ7CQkvKiB2aXNpYmxlIGNvdW50ICovCisrCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIGNvdW50IG9mIEdQUiAoMS4uMTYpICovCisrCXVuc2lnbmVkIHNob3J0IGdwclszMl07CQkvKiBHUFIgbnVtYmVyKHMpICovCisrCXVuc2lnbmVkIGludCB2YWx1ZVszMl07CQkvKiBpbml0aWFsIHZhbHVlcyAqLworKwl1bnNpZ25lZCBpbnQgbWluOwkJLyogbWluaW11bSByYW5nZSAqLworKwl1bnNpZ25lZCBpbnQgbWF4OwkJLyogbWF4aW11bSByYW5nZSAqLworKwl1bnNpZ25lZCBpbnQgdHJhbnNsYXRpb247CS8qIHRyYW5zbGF0aW9uIHR5cGUgKEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OKikgKi8KKysJY29uc3QgdW5zaWduZWQgaW50ICp0bHY7CisrfTsKKysKKysvKiBvbGQgQUJJIHdpdGhvdXQgVExWIHN1cHBvcnQgKi8KKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfb2xkX2dwciB7CisrCXN0cnVjdCBlbXUxMGsxX2N0bF9lbGVtX2lkIGlkOworKwl1bnNpZ25lZCBpbnQgdmNvdW50OworKwl1bnNpZ25lZCBpbnQgY291bnQ7CisrCXVuc2lnbmVkIHNob3J0IGdwclszMl07CisrCXVuc2lnbmVkIGludCB2YWx1ZVszMl07CisrCXVuc2lnbmVkIGludCBtaW47CisrCXVuc2lnbmVkIGludCBtYXg7CisrCXVuc2lnbmVkIGludCB0cmFuc2xhdGlvbjsKKyt9OworKworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSB7CisrCWNoYXIgbmFtZVsxMjhdOworKworKwlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAoZ3ByX3ZhbGlkLCAweDIwMCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5pdGlhbGl6ZXJzICovCisrCV9fdTMyICpncHJfbWFwOwkJCS8qIGluaXRpYWxpemVycyAqLworKworKwl1bnNpZ25lZCBpbnQgZ3ByX2FkZF9jb250cm9sX2NvdW50OyAvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgdG8gYWRkL3JlcGxhY2UgKi8KKysJc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciAqZ3ByX2FkZF9jb250cm9sczsgLyogR1BSIGNvbnRyb2xzIHRvIGFkZC9yZXBsYWNlICovCisrCisrCXVuc2lnbmVkIGludCBncHJfZGVsX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKysJc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgKmdwcl9kZWxfY29udHJvbHM7IC8qIElEcyBvZiBHUFIgY29udHJvbHMgdG8gcmVtb3ZlICovCisrCisrCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX2NvdW50OyAvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgdG8gbGlzdCAqLworKwl1bnNpZ25lZCBpbnQgZ3ByX2xpc3RfY29udHJvbF90b3RhbDsgLyogdG90YWwgY291bnQgb2YgR1BSIGNvbnRyb2xzICovCisrCXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgKmdwcl9saXN0X2NvbnRyb2xzOyAvKiBsaXN0ZWQgR1BSIGNvbnRyb2xzICovCisrCisrCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUCh0cmFtX3ZhbGlkLCAweDEwMCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5pdGlhbGl6ZXJzICovCisrCV9fdTMyICp0cmFtX2RhdGFfbWFwOwkJICAvKiBkYXRhIGluaXRpYWxpemVycyAqLworKwlfX3UzMiAqdHJhbV9hZGRyX21hcDsJCSAgLyogbWFwIGluaXRpYWxpemVycyAqLworKworKwlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAoY29kZV92YWxpZCwgMTAyNCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5zdHJ1Y3Rpb25zICovCisrCV9fdTMyICpjb2RlOwkJCSAgLyogb25lIGluc3RydWN0aW9uIC0gNjQgYml0cyAqLworK307CisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIHsKKysJdW5zaWduZWQgaW50IGFkZHJlc3M7CQkvKiAzMS5iaXQgPT0gMSAtPiBleHRlcm5hbCBUUkFNICovCisrCXVuc2lnbmVkIGludCBzaXplOwkJLyogc2l6ZSBpbiBzYW1wbGVzICg0IGJ5dGVzKSAqLworKwl1bnNpZ25lZCBpbnQgKnNhbXBsZXM7CQkvKiBwb2ludGVyIHRvIHNhbXBsZXMgKDIwLWJpdCkgKi8KKysJCQkJCS8qIE5VTEwtPmNsZWFyIG1lbW9yeSAqLworK307CisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIHsKKysJdW5zaWduZWQgaW50IHN1YnN0cmVhbTsJCS8qIHN1YnN0cmVhbSBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IHJlczE7CQkvKiByZXNlcnZlZCAqLworKwl1bnNpZ25lZCBpbnQgY2hhbm5lbHM7CQkvKiAxNi1iaXQgY2hhbm5lbHMgY291bnQsIHplcm8gPSByZW1vdmUgdGhpcyBzdWJzdHJlYW0gKi8KKysJdW5zaWduZWQgaW50IHRyYW1fc3RhcnQ7CS8qIHJpbmcgYnVmZmVyIHBvc2l0aW9uIGluIFRSQU0gKGluIHNhbXBsZXMpICovCisrCXVuc2lnbmVkIGludCBidWZmZXJfc2l6ZTsJLyogY291bnQgb2YgYnVmZmVyZWQgc2FtcGxlcyAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfc2l6ZTsJCS8qIEdQUiBjb250YWluaW5nIHNpemUgb2YgcmluZ2J1ZmZlciBpbiBzYW1wbGVzIChob3N0KSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfcHRyOwkJLyogR1BSIGNvbnRhaW5pbmcgY3VycmVudCBwb2ludGVyIGluIHRoZSByaW5nIGJ1ZmZlciAoaG9zdCA9IHJlc2V0LCBGWDgwMTApICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl9jb3VudDsJLyogR1BSIGNvbnRhaW5pbmcgY291bnQgb2Ygc2FtcGxlcyBiZXR3ZWVuIHR3byBpbnRlcnJ1cHRzIChob3N0KSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfdG1wY291bnQ7CS8qIEdQUiBjb250YWluaW5nIGN1cnJlbnQgY291bnQgb2Ygc2FtcGxlcyB0byBpbnRlcnJ1cHQgKGhvc3QgPSBzZXQsIEZYODAxMCkgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByX3RyaWdnZXI7CS8qIEdQUiBjb250YWluaW5nIHRyaWdnZXIgKGFjdGl2YXRlKSBpbmZvcm1hdGlvbiAoaG9zdCkgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByX3J1bm5pbmc7CS8qIEdQUiBjb250YWluaW5nIGluZm8gaWYgUENNIGlzIHJ1bm5pbmcgKEZYODAxMCkgKi8KKysJdW5zaWduZWQgY2hhciBwYWQ7CQkvKiByZXNlcnZlZCAqLworKwl1bnNpZ25lZCBjaGFyIGV0cmFtWzMyXTsJLyogZXh0ZXJuYWwgVFJBTSBhZGRyZXNzICYgZGF0YSAob25lIHBlciBjaGFubmVsKSAqLworKwl1bnNpZ25lZCBpbnQgcmVzMjsJCS8qIHJlc2VydmVkICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAxKQorKworKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9JTkZPCV9JT1IgKCdIJywgMHgxMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT0RFX1BPS0UJX0lPVyAoJ0gnLCAweDExLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPREVfUEVFSwlfSU9XUignSCcsIDB4MTIsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9TRVRVUAlfSU9XICgnSCcsIDB4MjAsIGludCkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9QT0tFCV9JT1cgKCdIJywgMHgyMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1BFRUsJX0lPV1IoJ0gnLCAweDIyLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0pCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BDTV9QT0tFCV9JT1cgKCdIJywgMHgzMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QQ01fUEVFSwlfSU9XUignSCcsIDB4MzEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYykKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDQwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1NUT1AJX0lPICAoJ0gnLCAweDgwKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT05USU5VRQlfSU8gICgnSCcsIDB4ODEpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1pFUk9fVFJBTV9DT1VOVEVSIF9JTyAoJ0gnLCAweDgyKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TSU5HTEVfU1RFUAlfSU9XICgnSCcsIDB4ODMsIGludCkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfREJHX1JFQUQJX0lPUiAoJ0gnLCAweDg0LCBpbnQpCisrCisrI2lmbmRlZiBfX0tFUk5FTF9fCisrLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIGVtdTEwazFfZng4MDEwX2luZm9fdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHJfdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSBlbXUxMGsxX2Z4ODAxMF9jb2RlX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0gZW11MTBrMV9meDgwMTBfdHJhbV90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIGVtdTEwazFfZng4MDEwX3BjbV90OworK3R5cGVkZWYgc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgZW11MTBrMV9jdGxfZWxlbV9pZF90OworKyNlbmRpZgorKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfRU1VMTBLMV9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uODhjOTJhM2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK0BAIC0wLDAgKzEsMTA5IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrI2lmbmRlZiBfX1NPVU5EX0hEU1BfSAorKyNkZWZpbmUgX19TT1VORF9IRFNQX0gKKysKKysvKgorKyAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKysgKiAgICAKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisrICovCisrCisrI2RlZmluZSBIRFNQX01BVFJJWF9NSVhFUl9TSVpFIDIwNDgKKysKKytlbnVtIEhEU1BfSU9fVHlwZSB7CisrCURpZ2lmYWNlLAorKwlNdWx0aWZhY2UsCisrCUg5NjUyLAorKwlIOTYzMiwKKysJUlBNLAorKwlVbmRlZmluZWQsCisrfTsKKysKKytzdHJ1Y3QgaGRzcF9wZWFrX3JtcyB7CisrCV9fdTMyIGlucHV0X3BlYWtzWzI2XTsKKysJX191MzIgcGxheWJhY2tfcGVha3NbMjZdOworKwlfX3UzMiBvdXRwdXRfcGVha3NbMjhdOworKwlfX3U2NCBpbnB1dF9ybXNbMjZdOworKwlfX3U2NCBwbGF5YmFja19ybXNbMjZdOworKwkvKiBUaGVzZSBhcmUgb25seSB1c2VkIGZvciBIOTZ4eCBjYXJkcyAqLworKwlfX3U2NCBvdXRwdXRfcm1zWzI2XTsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfUEVBS19STVMgX0lPUignSCcsIDB4NDAsIHN0cnVjdCBoZHNwX3BlYWtfcm1zKQorKworK3N0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIHsKKysJdW5zaWduZWQgY2hhciBwcmVmX3N5bmNfcmVmOworKwl1bnNpZ25lZCBjaGFyIHdvcmRjbG9ja19zeW5jX2NoZWNrOworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGNoYXIgYWRhdHN5bmNfc3luY19jaGVjazsKKysJdW5zaWduZWQgY2hhciBhZGF0X3N5bmNfY2hlY2tbM107CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfaW47CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfb3V0OworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX3Byb2Zlc3Npb25hbDsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9lbXBoYXNpczsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9ub25hdWRpbzsKKysJdW5zaWduZWQgaW50IHNwZGlmX3NhbXBsZV9yYXRlOworKwl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworKwl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CisrCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworKwl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKysJdW5zaWduZWQgY2hhciBsaW5lX291dDsKKysJdW5zaWduZWQgY2hhciBwYXNzdGhydTsgCisrCXVuc2lnbmVkIGNoYXIgZGFfZ2FpbjsKKysJdW5zaWduZWQgY2hhciBhZF9nYWluOworKwl1bnNpZ25lZCBjaGFyIHBob25lX2dhaW47CisrCXVuc2lnbmVkIGNoYXIgeGxyX2JyZWFrb3V0X2NhYmxlOworKwl1bnNpZ25lZCBjaGFyIGFuYWxvZ19leHRlbnNpb25fYm9hcmQ7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX0NPTkZJR19JTkZPIF9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbykKKysKKytzdHJ1Y3QgaGRzcF9maXJtd2FyZSB7CisrCXZvaWQgKmZpcm13YXJlX2RhdGE7CS8qIDI0NDEzIHggNCBieXRlcyAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX1VQTE9BRF9GSVJNV0FSRSBfSU9XKCdIJywgMHg0Miwgc3RydWN0IGhkc3BfZmlybXdhcmUpCisrCisrc3RydWN0IGhkc3BfdmVyc2lvbiB7CisrCWVudW0gSERTUF9JT19UeXBlIGlvX3R5cGU7CisrCXVuc2lnbmVkIHNob3J0IGZpcm13YXJlX3JldjsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfVkVSU0lPTiBfSU9SKCdIJywgMHg0Mywgc3RydWN0IGhkc3BfdmVyc2lvbikKKysKKytzdHJ1Y3QgaGRzcF9taXhlciB7CisrCXVuc2lnbmVkIHNob3J0IG1hdHJpeFtIRFNQX01BVFJJWF9NSVhFUl9TSVpFXTsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwX21peGVyKQorKworK3N0cnVjdCBoZHNwXzk2MzJfYWViIHsKKysJaW50IGFlYmk7CisrCWludCBhZWJvOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF85NjMyX0FFQiBfSU9SKCdIJywgMHg0NSwgc3RydWN0IGhkc3BfOTYzMl9hZWIpCisrCisrLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworK3R5cGVkZWYgZW51bSBIRFNQX0lPX1R5cGUgSERTUF9JT19UeXBlOworK3R5cGVkZWYgc3RydWN0IGhkc3BfcGVha19ybXMgaGRzcF9wZWFrX3Jtc190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfY29uZmlnX2luZm8gaGRzcF9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfZmlybXdhcmUgaGRzcF9maXJtd2FyZV90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfdmVyc2lvbiBoZHNwX3ZlcnNpb25fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX21peGVyIGhkc3BfbWl4ZXJfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwXzk2MzJfYWViIGhkc3BfOTYzMl9hZWJfdDsKKysKKysjZW5kaWYgLyogX19TT1VORF9IRFNQX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjJkOTFmOTBlCistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAorQEAgLTAsMCArMSwyMzAgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysjaWZuZGVmIF9fU09VTkRfSERTUE1fSAorKyNkZWZpbmUgX19TT1VORF9IRFNQTV9ICisrLyoKKysgKiAgIENvcHlyaWdodCAoQykgMjAwMyBXaW5mcmllZCBSaXRzY2ggKElFTSkKKysgKiAgIGJhc2VkIG9uIGhkc3AuaCBmcm9tIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKysgKgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorKyAqLworKworKy8qIE1heGltdW0gY2hhbm5lbHMgaXMgNjQgZXZlbiBvbiA1Nk1vZGUgeW91IGhhdmUgNjRwbGF5YmFja3MgdG8gbWF0cml4ICovCisrI2RlZmluZSBIRFNQTV9NQVhfQ0hBTk5FTFMgICAgICA2NAorKworK2VudW0gaGRzcG1faW9fdHlwZSB7CisrCU1BREksCisrCU1BRElmYWNlLAorKwlBSU8sCisrCUFFUzMyLAorKwlSYXlEQVQKKyt9OworKworK2VudW0gaGRzcG1fc3BlZWQgeworKwlzcywKKysJZHMsCisrCXFzCisrfTsKKysKKysvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBJT0NUTCBQZWFrL1JNUyBNZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKysKKytzdHJ1Y3QgaGRzcG1fcGVha19ybXMgeworKwlfX3UzMiBpbnB1dF9wZWFrc1s2NF07CisrCV9fdTMyIHBsYXliYWNrX3BlYWtzWzY0XTsKKysJX191MzIgb3V0cHV0X3BlYWtzWzY0XTsKKysKKysJX191NjQgaW5wdXRfcm1zWzY0XTsKKysJX191NjQgcGxheWJhY2tfcm1zWzY0XTsKKysJX191NjQgb3V0cHV0X3Jtc1s2NF07CisrCisrCV9fdTggc3BlZWQ7IC8qIGVudW0ge3NzLCBkcywgcXN9ICovCisrCWludCBzdGF0dXMyOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfUEVBS19STVMgXAorKwlfSU9SKCdIJywgMHg0Miwgc3RydWN0IGhkc3BtX3BlYWtfcm1zKQorKworKy8qIC0tLS0tLS0tLS0tLSBDT05GSUcgYmxvY2sgSU9DVEwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworKworK3N0cnVjdCBoZHNwbV9jb25maWcgeworKwl1bnNpZ25lZCBjaGFyIHByZWZfc3luY19yZWY7CisrCXVuc2lnbmVkIGNoYXIgd29yZGNsb2NrX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGNoYXIgbWFkaV9zeW5jX2NoZWNrOworKwl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworKwl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CisrCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworKwl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKysJdW5zaWduZWQgY2hhciBsaW5lX291dDsKKysJdW5zaWduZWQgaW50IHBhc3N0aHJ1OworKwl1bnNpZ25lZCBpbnQgYW5hbG9nX291dDsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0NPTkZJRyBcCisrCV9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcG1fY29uZmlnKQorKworKy8qCisrICogSWYgdGhlcmUncyBhIFRDTyAoVGltZUNvZGUgT3B0aW9uKSBib2FyZCBpbnN0YWxsZWQsCisrICogdGhlcmUgYXJlIGZ1cnRoZXIgb3B0aW9ucyBhbmQgc3RhdHVzIGRhdGEgYXZhaWxhYmxlLgorKyAqIFRoZSBoZHNwbV9sdGMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBjdXJyZW50IFNNUFRFCisrICogdGltZWNvZGUgYW5kIHNvbWUgc3RhdHVzIGluZm9ybWF0aW9uIGFuZCBjYW4gYmUKKysgKiBvYnRhaW5lZCB2aWEgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBvciBpbiB0aGUKKysgKiBoZHNwbV9zdGF0dXMgc3RydWN0LgorKyAqLworKworK2VudW0gaGRzcG1fbHRjX2Zvcm1hdCB7CisrCWZvcm1hdF9pbnZhbGlkLAorKwlmcHNfMjQsCisrCWZwc18yNSwKKysJZnBzXzI5OTcsCisrCWZwc18zMAorK307CisrCisrZW51bSBoZHNwbV9sdGNfZnJhbWUgeworKwlmcmFtZV9pbnZhbGlkLAorKwlkcm9wX2ZyYW1lLAorKwlmdWxsX2ZyYW1lCisrfTsKKysKKytlbnVtIGhkc3BtX2x0Y19pbnB1dF9mb3JtYXQgeworKwludHNjLAorKwlwYWwsCisrCW5vX3ZpZGVvCisrfTsKKysKKytzdHJ1Y3QgaGRzcG1fbHRjIHsKKysJdW5zaWduZWQgaW50IGx0YzsKKysKKysJZW51bSBoZHNwbV9sdGNfZm9ybWF0IGZvcm1hdDsKKysJZW51bSBoZHNwbV9sdGNfZnJhbWUgZnJhbWU7CisrCWVudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCBpbnB1dF9mb3JtYXQ7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9MVEMgX0lPUignSCcsIDB4NDYsIHN0cnVjdCBoZHNwbV9sdGMpCisrCisrLyoKKysgKiBUaGUgc3RhdHVzIGRhdGEgcmVmbGVjdHMgdGhlIGRldmljZSdzIGN1cnJlbnQgc3RhdGUKKysgKiBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBjYXJkJ3MgY29uZmlndXJhdGlvbiBhbmQKKysgKiBjb25uZWN0aW9uIHN0YXR1cy4KKysgKi8KKysKKytlbnVtIGhkc3BtX3N5bmMgeworKwloZHNwbV9zeW5jX25vX2xvY2sgPSAwLAorKwloZHNwbV9zeW5jX2xvY2sgPSAxLAorKwloZHNwbV9zeW5jX3N5bmMgPSAyCisrfTsKKysKKytlbnVtIGhkc3BtX21hZGlfaW5wdXQgeworKwloZHNwbV9pbnB1dF9vcHRpY2FsID0gMCwKKysJaGRzcG1faW5wdXRfY29heCA9IDEKKyt9OworKworK2VudW0gaGRzcG1fbWFkaV9jaGFubmVsX2Zvcm1hdCB7CisrCWhkc3BtX2Zvcm1hdF9jaF82NCA9IDAsCisrCWhkc3BtX2Zvcm1hdF9jaF81NiA9IDEKKyt9OworKworK2VudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgeworKwloZHNwbV9mcmFtZV80OCA9IDAsCisrCWhkc3BtX2ZyYW1lXzk2ID0gMQorK307CisrCisrZW51bSBoZHNwbV9zeW5jc291cmNlIHsKKysJc3luY3NvdXJjZV93YyA9IDAsCisrCXN5bmNzb3VyY2VfbWFkaSA9IDEsCisrCXN5bmNzb3VyY2VfdGNvID0gMiwKKysJc3luY3NvdXJjZV9zeW5jID0gMywKKysJc3luY3NvdXJjZV9ub25lID0gNAorK307CisrCisrc3RydWN0IGhkc3BtX3N0YXR1cyB7CisrCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKysJZW51bSBoZHNwbV9zeW5jc291cmNlIGF1dG9zeW5jX3NvdXJjZTsKKysKKysJX191NjQgY2FyZF9jbG9jazsKKysJX191MzIgbWFzdGVyX3BlcmlvZDsKKysKKysJdW5pb24geworKwkJc3RydWN0IHsKKysJCQlfX3U4IHN5bmNfd2M7IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggc3luY19tYWRpOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKysJCQlfX3U4IHN5bmNfdGNvOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKysJCQlfX3U4IHN5bmNfaW47IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggbWFkaV9pbnB1dDsgLyogZW51bSBoZHNwbV9tYWRpX2lucHV0ICovCisrCQkJX191OCBjaGFubmVsX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0ICovCisrCQkJX191OCBmcmFtZV9mb3JtYXQ7IC8qIGVudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgKi8KKysJCX0gbWFkaTsKKysJfSBjYXJkX3NwZWNpZmljOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfU1RBVFVTIFwKKysJX0lPUignSCcsIDB4NDcsIHN0cnVjdCBoZHNwbV9zdGF0dXMpCisrCisrLyoKKysgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmQgYW5kIGl0cyBhZGQtb25zLgorKyAqLworKworKyNkZWZpbmUgSERTUE1fQURET05fVENPIDEKKysKKytzdHJ1Y3QgaGRzcG1fdmVyc2lvbiB7CisrCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKysJY2hhciBjYXJkbmFtZVsyMF07CisrCXVuc2lnbmVkIGludCBzZXJpYWw7CisrCXVuc2lnbmVkIHNob3J0IGZpcm13YXJlX3JldjsKKysJaW50IGFkZG9uczsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX1ZFUlNJT04gX0lPUignSCcsIDB4NDgsIHN0cnVjdCBoZHNwbV92ZXJzaW9uKQorKworKy8qIC0tLS0tLS0tLS0tLS0gZ2V0IE1hdHJpeCBNaXhlciBJT0NUTCAtLS0tLS0tLS0tLS0tLS0gKi8KKysKKysvKiBNQURJIG1peGVyOiA2NGlucHV0cys2NHBsYXliYWNrIGluIDY0b3V0cHV0cyA9IDgxOTIgPT4gKjRCeXRlID0KKysgKiAzMjc2OCBCeXRlcworKyAqLworKworKy8qIG9yZ2FuaXNhdGlvbiBpcyA2NCBjaGFubmVsZmFkZXIgaW4gYSBjb250aW51b3VzIG1lbW9yeSBibG9jayAqLworKy8qIGVxdWl2YWxlbnQgdG8gaGFyZHdhcmUgZGVmaW5pdGlvbiwgbWF5YmUgZm9yIGZ1dHVyZSBmZWF0dXJlIG9mIG1tYXAgb2YKKysgKiB0aGVtCisrICovCisrLyogZWFjaCBvZiA2NCBvdXRwdXRzIGhhcyA2NCBpbmZhZGVyIGFuZCA2NCBvdXRmYWRlcjoKKysgICBJbnMgdG8gT3V0cyBtaXhlcltvdXRdLmluW2luXSwgT3V0c3RyZWFtcyB0byBPdXRzIG1peGVyW291dF0ucGJbcGJdICovCisrCisrI2RlZmluZSBIRFNQTV9NSVhFUl9DSEFOTkVMUyBIRFNQTV9NQVhfQ0hBTk5FTFMKKysKKytzdHJ1Y3QgaGRzcG1fY2hhbm5lbGZhZGVyIHsKKysJdW5zaWduZWQgaW50IGluW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKysJdW5zaWduZWQgaW50IHBiW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKyt9OworKworK3N0cnVjdCBoZHNwbV9taXhlciB7CisrCXN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgY2hbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworK307CisrCisrc3RydWN0IGhkc3BtX21peGVyX2lvY3RsIHsKKysJc3RydWN0IGhkc3BtX21peGVyICptaXhlcjsKKyt9OworKworKy8qIHVzZSBpbmRpcmVjdCBhY2Nlc3MgZHVlIHRvIHRoZSBsaW1pdCBvZiBpb2N0bCBiaXQgc2l6ZSAqLworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwpCisrCisrLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworK3R5cGVkZWYgc3RydWN0IGhkc3BtX3BlYWtfcm1zIGhkc3BtX3BlYWtfcm1zX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY29uZmlnX2luZm8gaGRzcG1fY29uZmlnX2luZm9fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV92ZXJzaW9uIGhkc3BtX3ZlcnNpb25fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgc25kX2hkc3BtX2NoYW5uZWxmYWRlcl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX21peGVyIGhkc3BtX21peGVyX3Q7CisrCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5lNjQ4NTE0OAorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmgKK0BAIC0wLDAgKzEsMTIzIEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgQ29weXJpZ2h0IChjKSAxOTk5IGJ5IFVyb3MgQml6amFrIDx1cm9zQGtzcy1sb2thLnNpPgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorKyAqCisrICogIFNCMTZBU1AvQVdFMzIgQ1NQIGNvbnRyb2wKKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgCisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysjaWZuZGVmIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICisrI2RlZmluZSBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSAorKworKworKy8qIENTUCBtb2RlcyAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfTk9ORQkJMHgwMAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1JFQUQJMHgwMQkvKiBSZWNvcmQgZnJvbSBEU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX0RTUF9XUklURQkweDAyCS8qIFBsYXkgdG8gRFNQICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9RU09VTkQJCTB4MDQJLyogUVNvdW5kICovCisrCisrLyogQ1NQIGxvYWQgZmxhZ3MgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0ZST01VU0VSCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0lOSVRCTE9DSwkweDAyCisrCisrLyogQ1NQIHNhbXBsZSB3aWR0aCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NBTVBMRV84QklUCQkweDAxCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzE2QklUCQkweDAyCisrCisrLyogQ1NQIGNoYW5uZWxzICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9OTwkJCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVEVSRU8JCTB4MDIKKysKKysvKiBDU1AgcmF0ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzgwMDAJCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzExMDI1CQkweDAyCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV8yMjA1MAkJMHgwNAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfNDQxMDAJCTB4MDgKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFX0FMTAkJMHgwZgorKworKy8qIENTUCBydW5uaW5nIHN0YXRlICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfSURMRQkJMHgwMAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0xPQURFRAkJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1JVTk5JTkcJCTB4MDIKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9QQVVTRUQJCTB4MDQKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9BVVRPCQkweDA4CisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUVNPVU5ECQkweDEwCisrCisrLyogbWF4aW11bSBRU291bmQgdmFsdWUgKDE4MCBkZWdyZWVzIHJpZ2h0KSAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1FTT1VORF9NQVhfUklHSFQJMHgyMAorKworKy8qIG1heGltdW0gbWljcm9jb2RlIFJJRkYgZmlsZSBzaXplICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTUFYX01JQ1JPQ09ERV9GSUxFX1NJWkUJMHgzMDAwCisrCisrLyogbWljcm9jb2RlIGhlYWRlciAqLworK3N0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciB7CisrCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCisrCXVuc2lnbmVkIHNob3J0IGZ1bmNfcmVxOwkvKiByZXF1ZXN0ZWQgZnVuY3Rpb24gKi8KKyt9OworKworKy8qIG1pY3JvY29kZSB0byBiZSBsb2FkZWQgKi8KKytzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUgeworKwlzdHJ1Y3Qgc25kX3NiX2NzcF9tY19oZWFkZXIgaW5mbzsKKysJdW5zaWduZWQgY2hhciBkYXRhW1NORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRV07CisrfTsKKysKKysvKiBzdGFydCBDU1Agd2l0aCBzYW1wbGVfd2lkdGggaW4gbW9uby9zdGVyZW8gKi8KKytzdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCB7CisrCWludCBzYW1wbGVfd2lkdGg7CS8qIHNhbXBsZSB3aWR0aCwgbG9vayBhYm92ZSAqLworKwlpbnQgY2hhbm5lbHM7CQkvKiBjaGFubmVscywgbG9vayBhYm92ZSAqLworK307CisrCisrLyogQ1NQIGluZm9ybWF0aW9uICovCisrc3RydWN0IHNuZF9zYl9jc3BfaW5mbyB7CisrCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCisrCXVuc2lnbmVkIHNob3J0IGZ1bmNfbnI7CQkvKiBmdW5jdGlvbiBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IGFjY19mb3JtYXQ7CS8qIGFjY2VwdGVkIFBDTSBmb3JtYXRzICovCisrCXVuc2lnbmVkIHNob3J0IGFjY19jaGFubmVsczsJLyogYWNjZXB0ZWQgY2hhbm5lbHMgKi8KKysJdW5zaWduZWQgc2hvcnQgYWNjX3dpZHRoOwkvKiBhY2NlcHRlZCBzYW1wbGUgd2lkdGggKi8KKysJdW5zaWduZWQgc2hvcnQgYWNjX3JhdGVzOwkvKiBhY2NlcHRlZCBzYW1wbGUgcmF0ZXMgKi8KKysJdW5zaWduZWQgc2hvcnQgY3NwX21vZGU7CS8qIENTUCBtb2RlLCBzZWUgYWJvdmUgKi8KKysJdW5zaWduZWQgc2hvcnQgcnVuX2NoYW5uZWxzOwkvKiBjdXJyZW50IGNoYW5uZWxzICAqLworKwl1bnNpZ25lZCBzaG9ydCBydW5fd2lkdGg7CS8qIGN1cnJlbnQgc2FtcGxlIHdpZHRoICovCisrCXVuc2lnbmVkIHNob3J0IHZlcnNpb247CQkvKiB2ZXJzaW9uIGlkOiAweDEwIC0gMHgxZiAqLworKwl1bnNpZ25lZCBzaG9ydCBzdGF0ZTsJCS8qIHN0YXRlIGJpdHMgKi8KKyt9OworKworKy8qIEhXREVQIGNvbnRyb2xzICovCisrLyogZ2V0IENTUCBpbmZvcm1hdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDEwLCBzdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvKQorKy8qIGxvYWQgbWljcm9jb2RlIHRvIENTUCAqLworKy8qIE5PVEU6IHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSBvdmVyZmxvd3MgdGhlIG1heCBzaXplICgxMyBiaXRzKQorKyAqIGRlZmluZWQgZm9yIHNvbWUgYXJjaGl0ZWN0dXJlcyBsaWtlIE1JUFMsIGFuZCBpdCBsZWFkcyB0byBidWlsZCBlcnJvcnMuCisrICogKHg4NiBhbmQgY28gaGF2ZSAxNC1iaXQgc2l6ZSwgdGh1cyBpdCdzIHZhbGlkLCB0aG91Z2guKQorKyAqIEFzIGEgd29ya2Fyb3VuZCBmb3Igc2tpcHBpbmcgdGhlIHNpemUtbGltaXQgY2hlY2ssIGhlcmUgd2UgZG9uJ3QgdXNlIHRoZQorKyAqIG5vcm1hbCBfSU9XKCkgbWFjcm8gYnV0IF9JT0MoKSB3aXRoIHRoZSBtYW51YWwgYXJndW1lbnQuCisrICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfTE9BRF9DT0RFCVwKKysJX0lPQyhfSU9DX1dSSVRFLCAnSCcsIDB4MTEsIHNpemVvZihzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUpKQorKy8qIHVubG9hZCBtaWNyb2NvZGUgZnJvbSBDU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9VTkxPQURfQ09ERQlfSU8oJ0gnLCAweDEyKQorKy8qIHN0YXJ0IENTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUQVJUCQlfSU9XKCdIJywgMHgxMywgc3RydWN0IHNuZF9zYl9jc3Bfc3RhcnQpCisrLyogc3RvcCBDU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9TVE9QCQlfSU8oJ0gnLCAweDE0KQorKy8qIHBhdXNlIENTUCBhbmQgRE1BIHRyYW5zZmVyICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUEFVU0UJCV9JTygnSCcsIDB4MTUpCisrLyogcmVzdGFydCBDU1AgYW5kIERNQSB0cmFuc2ZlciAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1JFU1RBUlQJX0lPKCdIJywgMHgxNikKKysKKysKKysjZW5kaWYgLyogX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYzY2NTNlYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaAorQEAgLTAsMCArMSwyMSBAQAorKyNpZm5kZWYgU1NDQVBFX0lPQ1RMX0gKKysjZGVmaW5lIFNTQ0FQRV9JT0NUTF9ICisrCisrCisrc3RydWN0IHNzY2FwZV9ib290YmxvY2sKKyt7CisrICB1bnNpZ25lZCBjaGFyIGNvZGVbMjU2XTsKKysgIHVuc2lnbmVkIHZlcnNpb247CisrfTsKKysKKysjZGVmaW5lIFNTQ0FQRV9NSUNST0NPREVfU0laRSAgNjU1MzYKKysKKytzdHJ1Y3Qgc3NjYXBlX21pY3JvY29kZQorK3sKKysgIHVuc2lnbmVkIGNoYXIgKmNvZGU7CisrfTsKKysKKysjZGVmaW5lIFNORF9TU0NBUEVfTE9BRF9CT09UQiAgX0lPV1IoJ1AnLCAxMDAsIHN0cnVjdCBzc2NhcGVfYm9vdGJsb2NrKQorKyNkZWZpbmUgU05EX1NTQ0FQRV9MT0FEX01DT0RFICBfSU9XICgnUCcsIDEwMSwgc3RydWN0IHNzY2FwZV9taWNyb2NvZGUpCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjdkNmQ2NWY2CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvdGx2LmgKK0BAIC0wLDAgKzEsMTE3IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICovCisrCisrI2lmbmRlZiBfX1VBUElfU09VTkRfVExWX0gKKysjZGVmaW5lIF9fVUFQSV9TT1VORF9UTFZfSAorKworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ09OVEFJTkVSIDAJLyogb25lIGxldmVsIGRvd24gLSBncm91cCBvZiBUTFZzICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9TQ0FMRQkxICAgICAgIC8qIGRCIHNjYWxlICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9MSU5FQVIgMgkvKiBsaW5lYXIgdm9sdW1lICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9SQU5HRSAzCS8qIGRCIHJhbmdlIGNvbnRhaW5lciAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYIDQJLyogZEIgc2NhbGUgd2l0aCBtaW4vbWF4ICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9NSU5NQVhfTVVURSA1CS8qIGRCIHNjYWxlIHdpdGggbWluL21heCB3aXRoIG11dGUgKi8KKysKKysvKgorKyAqIGNoYW5uZWwtbWFwcGluZyBUTFYgaXRlbXMKKysgKiAgVExWIGxlbmd0aCBtdXN0IG1hdGNoIHdpdGggbnVtX2NoYW5uZWxzCisrICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9GSVhFRAkweDEwMQkvKiBmaXhlZCBjaGFubmVsIHBvc2l0aW9uICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9WQVIJMHgxMDIJLyogY2hhbm5lbHMgZnJlZWx5IHN3YXBwYWJsZSAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfUEFJUkVECTB4MTAzCS8qIHBhaXItd2lzZSBzd2FwcGFibGUgKi8KKysKKysvKgorKyAqIFRMViBzdHJ1Y3R1cmUgaXMgcmlnaHQgYmVoaW5kIHRoZSBzdHJ1Y3Qgc25kX2N0bF90bHY6CisrICogICB1bnNpZ25lZCBpbnQgdHlwZSAgCS0gc2VlIFNORFJWX0NUTF9UTFZUXyoKKysgKiAgIHVuc2lnbmVkIGludCBsZW5ndGgKKysgKiAgIC4uLi4gZGF0YSBhbGlnbmVkIHRvIHNpemVvZih1bnNpZ25lZCBpbnQpLCB1c2UKKysgKiAgICAgICAgYmxvY2tfbGVuZ3RoID0gKGxlbmd0aCArIChzaXplb2YodW5zaWduZWQgaW50KSAtIDEpKSAmCisrICogICAgICAgICAgICAgICAgICAgICAgIH4oc2l6ZW9mKHVuc2lnbmVkIGludCkgLSAxKSkgLi4uLgorKyAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfSVRFTSh0eXBlLCAuLi4pIFwKKysJKHR5cGUpLCBTTkRSVl9DVExfVExWRF9MRU5HVEgoX19WQV9BUkdTX18pLCBfX1ZBX0FSR1NfXworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfTEVOR1RIKC4uLikgXAorKwkoKHVuc2lnbmVkIGludClzaXplb2YoKGNvbnN0IHVuc2lnbmVkIGludFtdKSB7IF9fVkFfQVJHU19fIH0pKQorKworKy8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIFRMViBkYXRhIGl0ZW1zICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19UWVBFCQkwCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19MRU4JCTEKKysKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0NPTlRBSU5FUl9JVEVNKC4uLikgXAorKwlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0NPTlRBSU5FUiwgX19WQV9BUkdTX18pCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0NPTlRBSU5FUihuYW1lLCAuLi4pIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfQ09OVEFJTkVSX0lURU0oX19WQV9BUkdTX18pIFwKKysJfQorKworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTUFTSwkweGZmZmYKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01VVEUJMHgxMDAwMAorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfSVRFTShtaW4sIHN0ZXAsIG11dGUpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9TQ0FMRSwgXAorKwkJCSAgICAobWluKSwgXAorKwkJCSAgICAoKHN0ZXApICYgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTUFTSykgfCBcCisrCQkJICAgICAoKG11dGUpID8gU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTVVURSA6IDApKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9TQ0FMRShuYW1lLCBtaW4sIHN0ZXAsIG11dGUpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfSVRFTShtaW4sIHN0ZXAsIG11dGUpIFwKKysJfQorKworKy8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbXV0ZSBhbmQgc3RlcCBpdGVtcyBpbiBkQiBzY2FsZSB0eXBlIFRMViAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfU0NBTEVfTUlOCQkyCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9TQ0FMRV9NVVRFX0FORF9TVEVQCTMKKysKKysvKiBkQiBzY2FsZSBzcGVjaWZpZWQgd2l0aCBtaW4vbWF4IHZhbHVlcyBpbnN0ZWFkIG9mIHN0ZXAgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYLCAobWluX2RCKSwgKG1heF9kQikpCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfTVVURV9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYX01VVEUsIChtaW5fZEIpLCAobWF4X2RCKSkKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfTUlOTUFYKG5hbWUsIG1pbl9kQiwgbWF4X2RCKSBcCisrCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKysJCVNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCX0KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfTUlOTUFYX01VVEUobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX01VVEVfSVRFTShtaW5fZEIsIG1heF9kQikgXAorKwl9CisrCisrLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtYXggaXRlbXMgaW4gZGItbWlubWF4IHR5cGVzIG9mIFRMVi4gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX01JTk1BWF9NSU4JMgorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTUlOTUFYX01BWAkzCisrCisrLyogbGluZWFyIHZvbHVtZSBiZXR3ZWVuIG1pbl9kQiBhbmQgbWF4X2RCICguMDFkQiB1bml0KSAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTElORUFSX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9MSU5FQVIsIChtaW5fZEIpLCAobWF4X2RCKSkKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfTElORUFSKG5hbWUsIG1pbl9kQiwgbWF4X2RCKSBcCisrCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKysJCVNORFJWX0NUTF9UTFZEX0RCX0xJTkVBUl9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCX0KKysKKysvKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG1heCBpdGVtcyBpbiBkYi1saW5lYXIgdHlwZSBvZiBUTFYuICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9MSU5FQVJfTUlOCTIKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX0xJTkVBUl9NQVgJMworKworKy8qIGRCIHJhbmdlIGNvbnRhaW5lcjoKKysgKiBJdGVtcyBpbiBkQiByYW5nZSBjb250YWluZXIgbXVzdCBiZSBvcmRlcmVkIGJ5IHRoZWlyIHZhbHVlcyBhbmQgYnkgdGhlaXIKKysgKiBkQiB2YWx1ZXMuIFRoaXMgaW1wbGllcyB0aGF0IGxhcmdlciB2YWx1ZXMgbXVzdCBjb3JyZXNwb25kIHdpdGggbGFyZ2VyCisrICogZEIgdmFsdWVzICh3aGljaCBpcyBhbHNvIHJlcXVpcmVkIGZvciBhbGwgb3RoZXIgbWl4ZXIgY29udHJvbHMpLgorKyAqLworKy8qIEVhY2ggaXRlbSBpczogPG1pbj4gPG1heD4gPFRMVj4gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1JBTkdFX0lURU0oLi4uKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfUkFOR0UsIF9fVkFfQVJHU19fKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9SQU5HRShuYW1lLCAuLi4pIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfUkFOR0VfSVRFTShfX1ZBX0FSR1NfXykgXAorKwl9CisrCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9HQUlOX01VVEUJLTk5OTk5OTkKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oIGIvc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaAoraW5kZXggMTFlZmNlNmQuLjEwMTQ5MWE0IDEwMDY0NAorLS0tIGEvc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaAorKysrIGIvc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaAorQEAgLTE4LDggKzE4LDcgQEAKKyAjaW5jbHVkZSAibGlzdC5oIgorICNpbmNsdWRlICJ0b3BvbG9neS5oIgorIAorLSNkZWZpbmUgX19wYWNrZWQgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCistCisrI2luY2x1ZGUgPHNvdW5kL3R5cGVfY29tcGF0Lmg+CisgI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorICNpbmNsdWRlIDxzb3VuZC9hc29jLmg+CisgI2luY2x1ZGUgPHNvdW5kL3Rsdi5oPgorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1hbi11bm5lY2Vzc2FyeS1saWJ0b29sLWZpeC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtYW4tdW5uZWNlc3NhcnktbGlidG9vbC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRiNDkzNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtYW4tdW5uZWNlc3NhcnktbGlidG9vbC1maXgucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSAwMWNkOGNiNmQ1OTRkN2ExMmM2N2QyMWQ2ODllYmUwZTM0NzQ2OWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAwOToyNjoxMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBsaWJ0b29sIGZpeAorCitUaGlzIGNvZGUgd2FzIGFkZGVkIGluIGNvbW1pdCA3NWQzOTNhNTYzZWZiNTc4Yzc5MzY0YTI3NzA4N2M2MzI2MjY3ZjUyCit3aXRob3V0IGV4cGxhaW5pbmcgd2h5LiBJIGFzc3VtZSBpdCB3YXMgYSBtaXN0YWtlLCBzaW5jZSBpdCBsb29rcyBsaWtlCit0aGUgbGlidG9vbCBwcm9ibGVtIHNob3VsZCBoYXZlIGdvbmUgYXdheSBhIGxvbmcgdGltZSBhZ28uIFRoZSByZWZlcmVuY2VkCit3aWtpIHBhZ2UgaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSBzYXlzOgorCisgICAgU2luY2UgbGlidG9vbCAxLjUuMiAocmVsZWFzZWQgMjAwNC0wMS0yNSksIG9uIExpbnV4IGxpYnRvb2wgbm8KKyAgICBsb25nZXIgc2V0cyBSUEFUSCBmb3IgYW55IGRpcmVjdG9yaWVzIGluIHRoZSBkeW5hbWljIGxpbmtlciBzZWFyY2gKKyAgICBwYXRoLCBzbyB0aGlzIHNob3VsZCBubyBsb25nZXIgYmUgYW4gaXNzdWUgdW5sZXNzIHVwc3RyZWFtIHVzZWQgYQorICAgIHJlYWxseSBvbGQgdmVyc2lvbiBvZiBsaWJ0b29sIHdoZW4gY3JlYXRpbmcgdGhlaXIgZGlzdHJpYnV0aW9uCisgICAgdGFyYmFsbC4KKworVGhpcyBjb2RlIGNhdXNlZCBwcm9ibGVtcyBpbiBPcGVuRW1iZWRkZWQsIHdoZXJlIHRoZSBsaWJ0b29sIHNjcmlwdCBpcworbmFtZWQgIng4Nl82NC1vZS1saW51eC1saWJ0b29sIiBvciBzaW1pbGFyIHJhdGhlciB0aGFuIGp1c3QgImxpYnRvb2wiLAorc28gdGhlIHNlZCBjb21tYW5kIGZhaWxlZCB3aXRoIGEgZmlsZSBub3QgZm91bmQgZXJyb3IuIFJhdGhlciB0aGFuCithZGFwdGluZyB0aGUgY29kZSB0byBPcGVuRW1iZWRkZWQncyBwZWN1bGlhcml0aWVzLCBpdCBzZWVtcyBiZXN0IHRvIGp1c3QKK3JlbW92ZSB0aGUgdW5uZWNlc3NhcnkgY29kZSBhbHRvZ2V0aGVyLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2Fsc2EtcHJvamVjdC9hbHNhLWxpYi9wdWxsLzE5XQorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDExOWVmNjAwLi4yMmE0YTg4NSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzY0LDE0ICs3NjQsMyBAQCB0ZXN0ICIkYnVpbGRfc2VxIiA9ICJ5ZXMiICYmIGVjaG8gIiNpbmNsdWRlIDxhbHNhL3NlcS5oPiIgPj4gaW5jbHVkZS9hc291bmRsaWIuaAorIHRlc3QgIiRidWlsZF9zZXEiID0gInllcyIgJiYgZWNobyAiI2luY2x1ZGUgPGFsc2Evc2VxbWlkLmg+IiA+PiBpbmNsdWRlL2Fzb3VuZGxpYi5oCisgdGVzdCAiJGJ1aWxkX3NlcSIgPSAieWVzIiAmJiBlY2hvICIjaW5jbHVkZSA8YWxzYS9zZXFfbWlkaV9ldmVudC5oPiIgPj4gaW5jbHVkZS9hc291bmRsaWIuaAorIGNhdCAiJHNyY2RpciIvaW5jbHVkZS9hc291bmRsaWItdGFpbC5oID4+IGluY2x1ZGUvYXNvdW5kbGliLmgKKy0KKy1kbmwgVGFrZW4gZnJvbSBodHRwczovL3dpa2kuZGViaWFuLm9yZy9ScGF0aElzc3VlCistY2FzZSAkaG9zdCBpbgorLSAgICotKi1saW51eC1nbnUpCistICAgQUNfTVNHX1JFU1VMVChbRml4aW5nIGxpYnRvb2wgZm9yIC1ycGF0aCBwcm9ibGVtcy5dKQorLSAgIHNlZCA8IGxpYnRvb2wgPiBsaWJ0b29sLTIgXAorLSAgICAgJ3MvXmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMuKiQnLydoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIgLURfX0xJQlRPT0xfSVNfQV9GT09MX18gIi8nCistICAgbXYgbGlidG9vbC0yIGxpYnRvb2wKKy0gICBjaG1vZCA3NTUgbGlidG9vbAorLSA7OworLWVzYWMKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVhcGktTW92ZS10eXBlZGVmcy1mcm9tLXVhcGktdG8tc291bmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11YXBpLU1vdmUtdHlwZWRlZnMtZnJvbS11YXBpLXRvLXNvdW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNWEyYzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11YXBpLU1vdmUtdHlwZWRlZnMtZnJvbS11YXBpLXRvLXNvdW5kLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDU5NzkyZjQ2N2IzOGQ2YTRjNGRmZmRiMzA1MjhmN2ZiMDNkMjNkOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE3OjEyOjM3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHVhcGk6IE1vdmUgdHlwZWRlZnMgZnJvbSB1YXBpIHRvIHNvdW5kLyoKKworRm9yIGtlZXBpbmcgdWFwaS8qLmggY2xlYW5lci4KKworU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIGluY2x1ZGUvc291bmQvZW11MTBrMS5oICAgICAgfCAgOSArKysrKysrKysKKyBpbmNsdWRlL3NvdW5kL2hkc3AuaCAgICAgICAgIHwgMTAgKysrKysrKysrKworIGluY2x1ZGUvc291bmQvaGRzcG0uaCAgICAgICAgfCAgOCArKysrKysrKworIGluY2x1ZGUvc291bmQvc2IxNl9jc3AuaCAgICAgfCAgNCArKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaCB8IDEwIC0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oICAgIHwgIDkgLS0tLS0tLS0tCisgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmggICB8ICA4IC0tLS0tLS0tCisgNyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKK2luZGV4IGYwNmVjZWU1Li4wODMyZjk1YiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAorQEAgLTEsMiArMSwxMSBAQAorICNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisgI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9lbXUxMGsxLmg+CisrI2lmbmRlZiBfX2VtdTEwazFfdHlwZV9kZWZpbmVkCisrI2RlZmluZSBfX2VtdTEwazFfdHlwZV9kZWZpbmVkCisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2luZm8gZW11MTBrMV9meDgwMTBfaW5mb190OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciBlbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwcl90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIGVtdTEwazFfZng4MDEwX2NvZGVfdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSBlbXUxMGsxX2Z4ODAxMF90cmFtX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgZW11MTBrMV9meDgwMTBfcGNtX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCBlbXUxMGsxX2N0bF9lbGVtX2lkX3Q7CisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwLmggYi9pbmNsdWRlL3NvdW5kL2hkc3AuaAoraW5kZXggNzhmYjc0NWIuLmU4ZjkzMTU2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9oZHNwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitAQCAtMSwyICsxLDEyIEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3AuaD4KKysjaWZuZGVmIF9faGRzcF90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9faGRzcF90eXBlX2RlZmluZWQKKyt0eXBlZGVmIGVudW0gSERTUF9JT19UeXBlIEhEU1BfSU9fVHlwZTsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX3BlYWtfcm1zIGhkc3BfcGVha19ybXNfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIGhkc3BfY29uZmlnX2luZm9fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX2Zpcm13YXJlIGhkc3BfZmlybXdhcmVfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX3ZlcnNpb24gaGRzcF92ZXJzaW9uX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9taXhlciBoZHNwX21peGVyX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF85NjMyX2FlYiBoZHNwXzk2MzJfYWViX3Q7CisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwbS5oIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitpbmRleCBhZjZkMTllZC4uZDkwOTVkOWYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcG0uaAorQEAgLTEsMiArMSwxMCBAQAorICNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisgI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9oZHNwbS5oPgorKyNpZm5kZWYgX19oZHNwbV90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9faGRzcG1fdHlwZV9kZWZpbmVkCisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmggYi9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKK2luZGV4IDI0MTIxZmNiLi5mZDAyYmM1NiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCitAQCAtMSArMSw1IEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9zYjE2X2NzcC5oPgorKyNpZm5kZWYgX19zYjE2X2NzcF90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9fc2IxNl9jc3BfdHlwZV9kZWZpbmVkCisrdHlwZWRlZiBzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUgc25kX3NiX2NzcF9taWNyb2NvZGVfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAoraW5kZXggYzExNTBlNGQuLjZiY2Q3NmY2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorQEAgLTM4MiwxNCArMzgyLDQgQEAgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIHsKKyAjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfU0lOR0xFX1NURVAJX0lPVyAoJ0gnLCAweDgzLCBpbnQpCisgI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0RCR19SRUFECV9JT1IgKCdIJywgMHg4NCwgaW50KQorIAorLSNpZm5kZWYgX19LRVJORUxfXworLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyBlbXUxMGsxX2Z4ODAxMF9pbmZvX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIGVtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgZW11MTBrMV9meDgwMTBfY29kZV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIGVtdTEwazFfZng4MDEwX3RyYW1fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyBlbXUxMGsxX2Z4ODAxMF9wY21fdDsKKy10eXBlZGVmIHN0cnVjdCBlbXUxMGsxX2N0bF9lbGVtX2lkIGVtdTEwazFfY3RsX2VsZW1faWRfdDsKKy0jZW5kaWYKKy0KKyAjZW5kaWYgLyogX1VBUElfX1NPVU5EX0VNVTEwSzFfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oCitpbmRleCA4OGM5MmEzZi4uN2FjMmQzZjIgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oCitAQCAtOTcsMTMgKzk3LDQgQEAgc3RydWN0IGhkc3BfOTYzMl9hZWIgeworIAorICNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfOTYzMl9BRUIgX0lPUignSCcsIDB4NDUsIHN0cnVjdCBoZHNwXzk2MzJfYWViKQorIAorLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIGVudW0gSERTUF9JT19UeXBlIEhEU1BfSU9fVHlwZTsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3BlYWtfcm1zIGhkc3BfcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIGhkc3BfY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2Zpcm13YXJlIGhkc3BfZmlybXdhcmVfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3ZlcnNpb24gaGRzcF92ZXJzaW9uX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9taXhlciBoZHNwX21peGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF85NjMyX2FlYiBoZHNwXzk2MzJfYWViX3Q7CistCisgI2VuZGlmIC8qIF9fU09VTkRfSERTUF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAoraW5kZXggMmQ5MWY5MGUuLjNmYmZkOWRjIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCitAQCAtMjE5LDEyICsyMTksNCBAQCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwgeworIC8qIHVzZSBpbmRpcmVjdCBhY2Nlc3MgZHVlIHRvIHRoZSBsaW1pdCBvZiBpb2N0bCBiaXQgc2l6ZSAqLworICNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwpCisgCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3BlYWtfcm1zIGhkc3BtX3BlYWtfcm1zX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY29uZmlnX2luZm8gaGRzcG1fY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV92ZXJzaW9uIGhkc3BtX3ZlcnNpb25fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgc25kX2hkc3BtX2NoYW5uZWxmYWRlcl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX21peGVyIGhkc3BtX21peGVyX3Q7CistCistCisgI2VuZGlmCistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11Y20tVXNlLXN0cm5jbXAtdG8tYXZvaWQtYWNjZXNzLW91dC1vZi1ib3VuZGFyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1Vc2Utc3RybmNtcC10by1hdm9pZC1hY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZGNkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11Y20tVXNlLXN0cm5jbXAtdG8tYXZvaWQtYWNjZXNzLW91dC1vZi1ib3VuZGFyeS5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDRiNmZlMzcyYzY4ZDFmZjUwZTdjMTYxY2ZmYWRlYjI5ODczNGY0OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBwYXVsaHNpYSA8cGF1bGhzaWFAY2hyb21pdW0ub3JnPgorRGF0ZTogU2F0LCAzMCBOb3YgMjAxOSAwMzozNTozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNV0gdWNtOiBVc2Ugc3RybmNtcCB0byBhdm9pZCBhY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5CisKK0lmIHRoZSBsZW5ndGggb2YgdGhlIGlkZW50aWZpZXIgaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHByZWZpeCwKK2FjY2Vzcy1vdXQtb2YtYm91bmRhcnkgd2lsbCBvY2N1ciBpbiBtZW1jbXAoKS4KKworU2lnbmVkLW9mZi1ieTogcGF1bGhzaWEgPHBhdWxoc2lhQGNocm9taXVtLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy91Y20vbWFpbi5jIHwgOCArKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdWNtL21haW4uYyBiL3NyYy91Y20vbWFpbi5jCitpbmRleCBiMGI2ZmZiMy4uMjUyZTUwZDkgMTAwNjQ0CistLS0gYS9zcmMvdWNtL21haW4uYworKysrIGIvc3JjL3VjbS9tYWluLmMKK0BAIC02MSwxMSArNjEsMTMgQEAgc3RhdGljIGludCBjaGVja19pZGVudGlmaWVyKGNvbnN0IGNoYXIgKmlkZW50aWZpZXIsIGNvbnN0IGNoYXIgKnByZWZpeCkKKyB7CisgCWludCBsZW47CisgCistCWlmIChzdHJjbXAoaWRlbnRpZmllciwgcHJlZml4KSA9PSAwKQorLQkJcmV0dXJuIDE7CisgCWxlbiA9IHN0cmxlbihwcmVmaXgpOworLQlpZiAobWVtY21wKGlkZW50aWZpZXIsIHByZWZpeCwgbGVuKSA9PSAwICYmIGlkZW50aWZpZXJbbGVuXSA9PSAnLycpCisrCWlmIChzdHJuY21wKGlkZW50aWZpZXIsIHByZWZpeCwgbGVuKSAhPSAwKQorKwkJcmV0dXJuIDA7CisrCisrCWlmIChpZGVudGlmaWVyW2xlbl0gPT0gMCB8fCBpZGVudGlmaWVyW2xlbl0gPT0gJy8nKQorIAkJcmV0dXJuIDE7CisrCisgCXJldHVybiAwOworIH0KKyAKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMi11Y20tcmV0dXJuLWFsd2F5cy1hdC1sZWFzdC1OVUxMLWlmLW5vLWxpc3QtaXMtYXZhaWxhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOTczZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMi11Y20tcmV0dXJuLWFsd2F5cy1hdC1sZWFzdC1OVUxMLWlmLW5vLWxpc3QtaXMtYXZhaWxhLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNThmOWRjOWJkMTJhNTFlZmExMmRiYzY3ZTIwMGY0ZDg1Y2QzZGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CitEYXRlOiBGcmksIDI5IE5vdiAyMDE5IDIyOjI4OjI2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSB1Y206IHJldHVybiBhbHdheXMgYXQgbGVhc3QgTlVMTCBpZiBubyBsaXN0IGlzIGF2YWlsYWJsZQorIGluIHNuZF91c2VfY2FzZV9nZXRfbGlzdCgpCisKK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy91Y20vbWFpbi5jIHwgOCArKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdWNtL21haW4uYyBiL3NyYy91Y20vbWFpbi5jCitpbmRleCAyNTJlNTBkOS4uYjgwZGI2NWYgMTAwNjQ0CistLS0gYS9zcmMvdWNtL21haW4uYworKysrIGIvc3JjL3VjbS9tYWluLmMKK0BAIC0xMTYwLDggKzExNjAsMTAgQEAgc3RhdGljIGludCBnZXRfc3VwY29uX2RldmljZV9saXN0KHNuZF91c2VfY2FzZV9tZ3JfdCAqdWNfbWdyLAorIAorIAltb2RpZmllciA9IGZpbmRfbW9kaWZpZXIodWNfbWdyLCB2ZXJiLCBuYW1lLCAwKTsKKyAJaWYgKG1vZGlmaWVyKSB7CistCQlpZiAobW9kaWZpZXItPmRldl9saXN0LnR5cGUgIT0gdHlwZSkKKysJCWlmIChtb2RpZmllci0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKSB7CisrCQkJKmxpc3QgPSBOVUxMOworIAkJCXJldHVybiAwOworKwkJfQorIAkJcmV0dXJuIGdldF9saXN0KCZtb2RpZmllci0+ZGV2X2xpc3QubGlzdCwgbGlzdCwKKyAJCQkJc3RydWN0IGRldl9saXN0X25vZGUsIGxpc3QsCisgCQkJCW5hbWUpOworQEAgLTExNjksOCArMTE3MSwxMCBAQCBzdGF0aWMgaW50IGdldF9zdXBjb25fZGV2aWNlX2xpc3Qoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCisgCWRldmljZSA9IGZpbmRfZGV2aWNlKHVjX21nciwgdmVyYiwgbmFtZSwgMCk7CisgCWlmIChkZXZpY2UpIHsKKy0JCWlmIChkZXZpY2UtPmRldl9saXN0LnR5cGUgIT0gdHlwZSkKKysJCWlmIChkZXZpY2UtPmRldl9saXN0LnR5cGUgIT0gdHlwZSkgeworKwkJCSpsaXN0ID0gTlVMTDsKKyAJCQlyZXR1cm4gMDsKKysJCX0KKyAJCXJldHVybiBnZXRfbGlzdCgmZGV2aWNlLT5kZXZfbGlzdC5saXN0LCBsaXN0LAorIAkJCQlzdHJ1Y3QgZGV2X2xpc3Rfbm9kZSwgbGlzdCwKKyAJCQkJbmFtZSk7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDMtbmFtZWhpbnQtY29ycmVjdC10aGUtYXJncy1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmY4YjJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDMtbmFtZWhpbnQtY29ycmVjdC10aGUtYXJncy1jaGVjay5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDEwZjM0MDFjZTM1NmE2NzVlMjQ0MDk5MzQ1N2VlN2M4YzdlOWZjZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PgorRGF0ZTogU3VuLCAxIERlYyAyMDE5IDE0OjI2OjQwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBuYW1laGludDogY29ycmVjdCB0aGUgQGFyZ3MgY2hlY2sKKworQnVnTGluazogaHR0cHM6Ly9naXRodWIuY29tL2Fsc2EtcHJvamVjdC9hbHNhLXBsdWdpbnMvaXNzdWVzLzMKK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy9jb250cm9sL25hbWVoaW50LmMgfCA2ICsrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jb250cm9sL25hbWVoaW50LmMgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitpbmRleCA4MDhkZjZiNS4uNDkyN2VmOTcgMTAwNjQ0CistLS0gYS9zcmMvY29udHJvbC9uYW1laGludC5jCisrKysgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitAQCAtMzQ4LDYgKzM0OCwxMiBAQCBzdGF0aWMgaW50IHRyeV9jb25maWcoc25kX2NvbmZpZ190ICpjb25maWcsCisgCQlnb3RvIF9fY2xlYW51cDsKKyAJaWYgKHNuZF9jb25maWdfc2VhcmNoKHJlcywgIkBhcmdzIiwgJmNmZykgPj0gMCkgeworIAkJc25kX2NvbmZpZ19mb3JfZWFjaChpLCBuZXh0LCBjZmcpIHsKKysJCQkvKiBza2lwIHRoZSBhcmd1bWVudCBsaXN0ICovCisrCQkJc25kX2NvbmZpZ19nZXRfaWQoc25kX2NvbmZpZ19pdGVyYXRvcl9lbnRyeShpKSwgJnN0cik7CisrCQkJd2hpbGUgKCpzdHIgJiYgKnN0ciA+PSAnMCcgJiYgKnN0ciA8PSAnOScpIHN0cisrOworKwkJCWlmICgqc3RyID09ICdcMCcpCisrCQkJCWNvbnRpbnVlOworKwkJCS8qIHRoZSBhcmd1bWVudCBkZWZpbml0aW9uIG11c3QgaGF2ZSB0aGUgZGVmYXVsdCAqLworIAkJCWlmIChzbmRfY29uZmlnX3NlYXJjaChzbmRfY29uZmlnX2l0ZXJhdG9yX2VudHJ5KGkpLAorIAkJCQkJICAgICAgImRlZmF1bHQiLCBOVUxMKSA8IDApIHsKKyAJCQkJZXJyID0gLUVJTlZBTDsKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwNC1uYW1laGludC1pbXByb3ZlLXRoZS1wcmV2aW91cy1wYXRjaC1jaGVjay10aGUtcmV0dXJuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTkyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwNC1uYW1laGludC1pbXByb3ZlLXRoZS1wcmV2aW91cy1wYXRjaC1jaGVjay10aGUtcmV0dXJuLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMWZhNjY2NGQ1ZjBjYzdkMjFlZGNlYmE2Njk1YTRjMjg1NDNjMmNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CitEYXRlOiBTdW4sIDEgRGVjIDIwMTkgMTQ6MzA6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIG5hbWVoaW50OiBpbXByb3ZlIHRoZSBwcmV2aW91cyBwYXRjaCAoY2hlY2sgdGhlIHJldHVybmVkCisgdmFsdWUpCisKK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy9jb250cm9sL25hbWVoaW50LmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb250cm9sL25hbWVoaW50LmMgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitpbmRleCA0OTI3ZWY5Ny4uNjBjNDhhZTMgMTAwNjQ0CistLS0gYS9zcmMvY29udHJvbC9uYW1laGludC5jCisrKysgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitAQCAtMzQ5LDcgKzM0OSw4IEBAIHN0YXRpYyBpbnQgdHJ5X2NvbmZpZyhzbmRfY29uZmlnX3QgKmNvbmZpZywKKyAJaWYgKHNuZF9jb25maWdfc2VhcmNoKHJlcywgIkBhcmdzIiwgJmNmZykgPj0gMCkgeworIAkJc25kX2NvbmZpZ19mb3JfZWFjaChpLCBuZXh0LCBjZmcpIHsKKyAJCQkvKiBza2lwIHRoZSBhcmd1bWVudCBsaXN0ICovCistCQkJc25kX2NvbmZpZ19nZXRfaWQoc25kX2NvbmZpZ19pdGVyYXRvcl9lbnRyeShpKSwgJnN0cik7CisrCQkJaWYgKHNuZF9jb25maWdfZ2V0X2lkKHNuZF9jb25maWdfaXRlcmF0b3JfZW50cnkoaSksICZzdHIpIDwgMCkKKysJCQkJY29udGludWU7CisgCQkJd2hpbGUgKCpzdHIgJiYgKnN0ciA+PSAnMCcgJiYgKnN0ciA8PSAnOScpIHN0cisrOworIAkJCWlmICgqc3RyID09ICdcMCcpCisgCQkJCWNvbnRpbnVlOworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDUtdWNtLURvLW5vdC1mYWlsLXRvLXBhcnNlLWNvbmZpZ3Mtb24tY2FyZHMtd2l0aC1hbi1lbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA1LXVjbS1Eby1ub3QtZmFpbC10by1wYXJzZS1jb25maWdzLW9uLWNhcmRzLXdpdGgtYW4tZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjMGE0YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA1LXVjbS1Eby1ub3QtZmFpbC10by1wYXJzZS1jb25maWdzLW9uLWNhcmRzLXdpdGgtYW4tZW0ucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorRnJvbSA5NzZmOGY2MjIzOGYwZDgzNzU4NGFkYzdjMzEwMzViZGIyOWI2ZDZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMyBEZWMgMjAxOSAxODoyNzozOSArMDEwMAorU3ViamVjdDogW1BBVENIIDUvNV0gdWNtOiBEbyBub3QgZmFpbCB0byBwYXJzZSBjb25maWdzIG9uIGNhcmRzIHdpdGggYW4gZW1wdHkKKyBDYXJkQ29tcG9uZW50cyBsaXN0cworCitTaW5jZSB0aGUgVUNNIHByb2ZpbGVzIGZvciBhbGwgQmF5LSBhbmQgQ2hlcnJ5LVRyYWlsIFNTVCBjYXJkcyBoYXZlIGJlZW4KK21vdmVkIG92ZXIgdG8gVUNNMiwgcGFyc2luZyB0aGVtIGZhaWxzIHdpdGg6CisKK0FMU0EgbGliIHVjbV9zdWJzLmM6MjIwOih1Y19tZ3JfZ2V0X3N1YnN0aXR1dGVkX3ZhbHVlKSB2YXJpYWJsZSAnJHtDYXJkQ29tcG9uZW50c30nIGlzIG5vdCBkZWZpbmVkIGluIHRoaXMgY29udGV4dCEKKworVGhpcyBjb21wbGV0ZWx5IGJyZWFrcyBhdWRpbyBzdXBwb3J0IG9uIGFsbCBCYXktIGFuZCBDaGVycnktVHJhaWwgZGV2aWNlcy4KKworVGhpcyBpcyBjYXVzZWQgYnkgdGhlc2Ugbm9uLVNPRiBBU29DIHVzaW5nIGNhcmRzIGhhdmluZyBhbiBlbXB0eQorQ2FyZENvbXBvbmVudHMgbGlzdC4gV2hpY2ggaW4gaXRzZWxmIGlzIGZpbmUsIGJ1dCBpcyByZWplY3RlZCBieQordGhlIHVjbV9zdWJzLmMgY29kZS4gVGhpcyBjb21taXQgY2hhbmdlcyB0aGUgdWNtX3N1YnMgY29kZSB0byBhY2NlcHQKK2FuIGVtcHR5IHN0cmluZyBhcyBhIHZhbGlkIHZhbHVlIGZvciBDYXJkQ29tcG9uZW50cyByZXN0b3JpbmcgYXVkaW8KK2Z1bmN0aW9uYWxpdHkgb24gdGhlc2UgYm9hcmRzLgorCitTaWduZWQtb2ZmLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL3VjbS91Y21fc3Vicy5jIHwgMjAgKysrKysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91Y20vdWNtX3N1YnMuYyBiL3NyYy91Y20vdWNtX3N1YnMuYworaW5kZXggMDBhZmE5ZTMuLjkwZTM5NWYwIDEwMDY0NAorLS0tIGEvc3JjL3VjbS91Y21fc3Vicy5jCisrKysgYi9zcmMvdWNtL3VjbV9zdWJzLmMKK0BAIC0yNSw2ICsyNSw3IEBACisgICovCisgCisgI2luY2x1ZGUgInVjbV9sb2NhbC5oIgorKyNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorQEAgLTE0NSwxMCArMTQ2LDExIEBAIHN0YXRpYyBjaGFyICpydmFsX3N5c2ZzKHNuZF91c2VfY2FzZV9tZ3JfdCAqdWNfbWdyIEFUVFJJQlVURV9VTlVTRUQsIGNvbnN0IGNoYXIKKyAJcmV0dXJuIHN0cmR1cChwYXRoKTsKKyB9CisgCistI2RlZmluZSBNQVRDSF9WQVJJQUJMRShuYW1lLCBpZCwgZmNuKQkJCQkJXAorKyNkZWZpbmUgTUFUQ0hfVkFSSUFCTEUobmFtZSwgaWQsIGZjbiwgZW1wdHlfb2spCQkJCVwKKyAJaWYgKHN0cm5jbXAoKG5hbWUpLCAoaWQpLCBzaXplb2YoaWQpIC0gMSkgPT0gMCkgeyAJCVwKKyAJCXJ2YWwgPSBmY24odWNfbWdyKTsJCQkJCVwKKyAJCWlkc2l6ZSA9IHNpemVvZihpZCkgLSAxOwkJCQlcCisrCQlhbGxvd19lbXB0eSA9IChlbXB0eV9vayk7CQkJCVwKKyAJCWdvdG8gX19ydmFsOwkJCQkJCVwKKyAJfQorIAorQEAgLTE4OSwxMiArMTkxLDE0IEBAIGludCB1Y19tZ3JfZ2V0X3N1YnN0aXR1dGVkX3ZhbHVlKHNuZF91c2VfY2FzZV9tZ3JfdCAqdWNfbWdyLAorIAorIAl3aGlsZSAoKnZhbHVlKSB7CisgCQlpZiAoKnZhbHVlID09ICckJyAmJiAqKHZhbHVlKzEpID09ICd7JykgeworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDb25mTmFtZX0iLCBydmFsX2NvbmZfbmFtZSk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRJZH0iLCBydmFsX2NhcmRfaWQpOworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkRHJpdmVyfSIsIHJ2YWxfY2FyZF9kcml2ZXIpOworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkTmFtZX0iLCBydmFsX2NhcmRfbmFtZSk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRMb25nTmFtZX0iLCBydmFsX2NhcmRfbG9uZ25hbWUpOworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkQ29tcG9uZW50c30iLCBydmFsX2NhcmRfY29tcG9uZW50cyk7CisrCQkJYm9vbCBhbGxvd19lbXB0eSA9IGZhbHNlOworKworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDb25mTmFtZX0iLCBydmFsX2NvbmZfbmFtZSwgZmFsc2UpOworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkSWR9IiwgcnZhbF9jYXJkX2lkLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmREcml2ZXJ9IiwgcnZhbF9jYXJkX2RyaXZlciwgZmFsc2UpOworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkTmFtZX0iLCBydmFsX2NhcmRfbmFtZSwgZmFsc2UpOworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkTG9uZ05hbWV9IiwgcnZhbF9jYXJkX2xvbmduYW1lLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRDb21wb25lbnRzfSIsIHJ2YWxfY2FyZF9jb21wb25lbnRzLCB0cnVlKTsKKyAJCQlNQVRDSF9WQVJJQUJMRTIodmFsdWUsICIke2VudjoiLCBydmFsX2Vudik7CisgCQkJTUFUQ0hfVkFSSUFCTEUyKHZhbHVlLCAiJHtzeXM6IiwgcnZhbF9zeXNmcyk7CisgCQkJZXJyID0gLUVJTlZBTDsKK0BAIC0yMDgsNyArMjEyLDcgQEAgaW50IHVjX21ncl9nZXRfc3Vic3RpdHV0ZWRfdmFsdWUoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCQkJfQorIAkJCWdvdG8gX19lcnJvcjsKKyBfX3J2YWw6CistCQkJaWYgKHJ2YWwgPT0gTlVMTCB8fCBydmFsWzBdID09ICdcMCcpIHsKKysJCQlpZiAocnZhbCA9PSBOVUxMIHx8ICghYWxsb3dfZW1wdHkgJiYgcnZhbFswXSA9PSAnXDAnKSkgeworIAkJCQlmcmVlKHJ2YWwpOworIAkJCQlzdHJuY3B5KHIsIHZhbHVlLCBpZHNpemUpOworIAkJCQlyW2lkc2l6ZV0gPSAnXDAnOworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzYzZWU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7bWQ1PWRkMWJjN2Y0NDg3MjY5MDIyNGQ4OWMxYTk4MDZlNDk1O2JlZ2lubGluZT0xO2VuZGxpbmU9MjYgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvbGliLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTZkNDI5ZGJkY2ZhYTBmMDM0ZDkwN2ZhNmRjMzczNWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg4MzczYWVmNTM5NjY4MmYzYTQxMWE2ZDA2NGFlMGFkMTk2YjljOTYyNjlkMGJiOTEyZmJkZWVjOTRiOTk0YiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0td2l0aC1zb2Z0ZmxvYXQnLCAnJywgZCl9IFwKLSAgICAtLWRpc2FibGUtcHl0aG9uIFwKLSIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGFsc2EtY29uZiBhbHNhLWRvYyIKLQotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImFsc2EtY29uZiIKLQotIyB1cGdyYWRlIHBhdGgKLVJQUk9WSURFU18ke1BOfSA9ICJsaWJhc291bmQiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliYXNvdW5kIgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJhc291bmQiCi0KLVJQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi0KLVJQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgotUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjIuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMi4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJiYzYxZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjIuMS4yLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7bWQ1PTI4NTY3NWI0NWU4M2Y1NzFjNmE5NTdmZTRhYjc5YzkzO2JlZ2lubGluZT05O2VuZGxpbmU9MjQgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvbGliLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLWFuLXVubmVjZXNzYXJ5LWxpYnRvb2wtZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdWNtLVVzZS1zdHJuY21wLXRvLWF2b2lkLWFjY2Vzcy1vdXQtb2YtYm91bmRhcnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11Y20tcmV0dXJuLWFsd2F5cy1hdC1sZWFzdC1OVUxMLWlmLW5vLWxpc3QtaXMtYXZhaWxhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmFtZWhpbnQtY29ycmVjdC10aGUtYXJncy1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS11Y20tRG8tbm90LWZhaWwtdG8tcGFyc2UtY29uZmlncy1vbi1jYXJkcy13aXRoLWFuLWVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWFsc2Etc291bmQtLmgtZm9yLWV4dGVybmFsLXByb2dyYW1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdWFwaS1Nb3ZlLXR5cGVkZWZzLWZyb20tdWFwaS10by1zb3VuZC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MmRkZDM2OTg0NjliZWVjMTQ3ZTRmNGE2NzEzNGVhMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NThlMjYwZTM2NzNmMWY2ZmY2YjJkMmMwZGYzZmMyZTQ2OWJlYTViMjk1NzE2M2NlOTZjZTE3ZjIzZTg3OTQzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS13aXRoLXNvZnRmbG9hdCcsICcnLCBkKX0gXAorICAgIC0tZGlzYWJsZS1weXRob24gXAorIgorCitQQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgYWxzYS1jb25mIGxpYmF0b3BvbG9neSIKKworRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKK0ZJTEVTX2xpYmF0b3BvbG9neSA9ICIke2xpYmRpcn0vbGliYXRvcG9sb2d5LnNvLioiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJhbHNhLWNvbmYgYWxzYS11Y20tY29uZiIKK1JERVBFTkRTX2xpYmF0b3BvbG9neV9jbGFzcy10YXJnZXQgPSAiYWxzYS10b3BvbG9neS1jb25mIgorCisjIHVwZ3JhZGUgcGF0aAorUlBST1ZJREVTXyR7UE59ID0gImxpYmFzb3VuZCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJhc291bmQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmFzb3VuZCIKKworUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKKworUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NGZjNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLSMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCi0jCi0jIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCi0jIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KLSMKLSMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50Ci0jIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKLSMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzcgXAotICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAotICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImUwY2FmZmJkODQ5YzUxZWQ4MTc1MTM3OGY1NmNiNTYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2MTc3MjMwM2RhNTIxYWJiYmYxZDkxZjYzYjQ3MGM0NzkxMzkyZDU3MjhmMjE5MmE0MmQ3MTI5MjA3OGY5MDciCi0KLURFUEVORFMgKz0gImFsc2EtbGliIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAgICAgc2FtcGxlcmF0ZSBcCi0gICAgICAgIHNwZWV4ZHNwIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FhZl0gPSAiLS1lbmFibGUtYWFmLC0tZGlzYWJsZS1hYWYsYXZ0cCIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLS1lbmFibGUtbGliYXYsLS1kaXNhYmxlLWxpYmF2LGxpYmF2IgotUEFDS0FHRUNPTkZJR1ttYWVtby1wbHVnaW5dID0gIi0tZW5hYmxlLW1hZW1vLXBsdWdpbiwtLWRpc2FibGUtbWFlbW8tcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttYWVtby1yZXNvdXJjZS1tYW5hZ2VyXSA9ICItLWVuYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLC0tZGlzYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLGRidXMiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc2FtcGxlcmF0ZV0gPSAiLS1lbmFibGUtc2FtcGxlcmF0ZSwtLWRpc2FibGUtc2FtcGxlcmF0ZSxsaWJzYW1wbGVyYXRlMCIKLVBBQ0tBR0VDT05GSUdbc3BlZXhkc3BdID0gIi0td2l0aC1zcGVleD1saWIsLS13aXRoLXNwZWV4PW5vLHNwZWV4ZHNwIgotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mJywgJycsIGQpfSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJebGliYXNvdW5kLW1vZHVsZS0uKiIKLQotIyBUaGUgYWxzYS1wbHVnaW5zIHBhY2thZ2UgZG9lc24ndCBpdHNlbGYgY29udGFpbiBhbnl0aGluZywgaXQganVzdCBkZXBlbmRzIG9uCi0jIGFsbCBidWlsdCBwbHVnaW5zLgotRklMRVNfJHtQTn0gPSAiIgotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gJHtEfSR7bGliZGlyfS9hbHNhLWxpYi8qLmxhCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLiBVcHN0cmVhbSBpbnN0YWxscyB0aGUgZmlsZSB1bmRlcgotCQkjIC9ldGMsIGJ1dCB3ZSBtb3ZlIGl0IHVuZGVyIC91c3Ivc2hhcmUgYW5kIGFkZCBhIHN5bWxpbmsgdW5kZXIKLQkJIyAvZXRjIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBpbnN0YWxsZWQgY29uZmlndXJhdGlvbgotCQkjIGZpbGVzLgotCQltdiAke0R9JHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQkJbG4gLXMgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCi0JZmkKLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQotICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCByJ15saWJhc291bmRfbW9kdWxlXyguKilcLnNvJCcsICdsaWJhc291bmQtbW9kdWxlLSVzJywgJ0Fsc2EgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpKQotICAgIGQuc2V0VmFyKCJSREVQRU5EU19hbHNhLXBsdWdpbnMiLCBwYWNrYWdlcykKLX0KLQotIyBNYW55IHBsdWdpbnMgaGF2ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSAocGx1cyBhIHN5bWxpbmsgaW4gL2V0YykgYXNzb2NpYXRlZAotIyB3aXRoIHRoZW0uIFdlIHB1dCB0aGUgcGx1Z2luIGFuZCBpdCdzIGNvbmZpZ3VyYXRpb24gdXN1YWxseSBpbiB0aGUgc2FtZQotIyBwYWNrYWdlLCBidXQgdGhhdCdzIHByb2JsZW1hdGljIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyByZWxhdGVkIHRvCi0jIG11bHRpcGxlIHBsdWdpbnMsIGFzIGlzIHRoZSBjYXNlIHdpdGggdGhlIHB1bHNlLCBvc3MgYW5kIG1hZW1vIHBsdWdpbnMuIEluCi0jIGNhc2Ugb2YgdGhlIHB1bHNlIHBsdWdpbnMsIHdlIGhhdmUgYSBzZXBhcmF0ZSBhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mCi0jIHBhY2thZ2UgdGhhdCBkZXBlbmRzIG9uIGFsbCB0aGUgcHVsc2UgcGx1Z2lucywgd2hpY2ggZW5zdXJlcyB0aGF0IGFsbCBwbHVnaW5zCi0jIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlcyBhcmUgaW5zdGFsbGVkLiBUaGUgb3NzIGFuZCBtYWVtbwotIyBjb25maWd1cmF0aW9uIGZpbGVzLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGluIHRoZSByZXNwZWN0aXZlIHBjbSBwbHVnaW4KLSMgcGFja2FnZXMuIFRoZXJlZm9yZSBpdCdzIHBvc3NpYmxlIHRvIGluc3RhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB3aXRob3V0Ci0jIHRoZSBjdGwgcGx1Z2luIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSByZWZlcmVuY2VzLiBUaGlzIGlzIHVubGlrZWx5IHRvCi0jIGNhdXNlIGJpZyBwcm9ibGVtcywgYnV0IHNvbWUga2luZCBvZiBpbXByb3ZlbWVudCB0byB0aGUgcGFja2FnaW5nIGNvdWxkCi0jIHByb2JhYmx5IGJlIGRvbmUgaGVyZSAoYXQgbGVhc3QgaXQgd291bGQgYmUgZ29vZCB0byBoYW5kbGUgdGhlIGRpZmZlcmVudAotIyBwbHVnaW5zIGluIGEgY29uc2lzdGVudCB3YXkpLgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLWN0bC1hcmNhbS1hdiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtYXJjYW0tYXYtY3RsLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLWFyY2FtLWF2LWN0bC5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tYTUyICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC1hNTItZW5jb2Rlci5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC1hNTItZW5jb2Rlci5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tYWxzYS1kc3AgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk4LW1hZW1vLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk4LW1hZW1vLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1qYWNrICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1qYWNrLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLWphY2suY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLW9zcyArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtb3NzLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLW9zcy5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tc3BlZXggKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLXNwZWV4LmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLXNwZWV4LmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS11cG1peCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtdXBtaXguY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtdXBtaXguY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXVzYi1zdHJlYW0gKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk4LXVzYi1zdHJlYW0uY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTgtdXNiLXN0cmVhbS5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdmRvd25taXggKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLXZkb3dubWl4LmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLXZkb3dubWl4LmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2cmF0ZSArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtcmF0ZS1sYXYuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtcmF0ZS1sYXYuY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1zYW1wbGVyYXRlLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXNhbXBsZXJhdGUuY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXNwZWV4cmF0ZS5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1zcGVleHJhdGUuY29uZiBcCi0iCi0KLSMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgotIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgotIwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbwotIwotIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KLSMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCi0jIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKLSMgdGhlIHN5bWxpbmtzKS4KLSMKLSMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KLSMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKLSMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfbGF2cmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2cmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCi0KLSMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCi0jIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCi0jIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQotIyBQdWxzZUF1ZGlvIHBsdWdpbi4KLUZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg4MmUxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4yLjEuYmIKQEAgLTAsMCArMSwxNzMgQEAKK1NVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgorSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KKyMKKyMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKKyMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgorIworIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKKyMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAorIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisjIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCisgICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNWIxMWNkM2VjOTJlNWY5MTkwZWMzNzg1NjViNTI5ZTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQ5NGRlN2FkNDE3MzRiODYwNGE2NTI1MjEyMDBiYjY1NTRmY2YwYzJjMDBmZGJkMzAyYjE3MTBkNzY1NDhkYSIKKworREVQRU5EUyArPSAiYWxzYS1saWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICAgICBzYW1wbGVyYXRlIFwKKyAgICAgICAgc3BlZXhkc3AgXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWFmXSA9ICItLWVuYWJsZS1hYWYsLS1kaXNhYmxlLWFhZixhdnRwIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLWVuYWJsZS1saWJhdiwtLWRpc2FibGUtbGliYXYsbGliYXYiCitQQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgorUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgorCisjIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KKyMgYWxsIGJ1aWx0IHBsdWdpbnMuCitGSUxFU18ke1BOfSA9ICIiCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMuIFVwc3RyZWFtIGluc3RhbGxzIHRoZSBmaWxlIHVuZGVyCisJCSMgL2V0YywgYnV0IHdlIG1vdmUgaXQgdW5kZXIgL3Vzci9zaGFyZSBhbmQgYWRkIGEgc3ltbGluayB1bmRlcgorCQkjIC9ldGMgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCisJCSMgZmlsZXMuCisJCW12ICR7RH0ke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgorCQlsbiAtcyAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKKwlmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCisgICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsIHInXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCisgICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQorfQorCisjIE1hbnkgcGx1Z2lucyBoYXZlIGEgY29uZmlndXJhdGlvbiBmaWxlIChwbHVzIGEgc3ltbGluayBpbiAvZXRjKSBhc3NvY2lhdGVkCisjIHdpdGggdGhlbS4gV2UgcHV0IHRoZSBwbHVnaW4gYW5kIGl0J3MgY29uZmlndXJhdGlvbiB1c3VhbGx5IGluIHRoZSBzYW1lCisjIHBhY2thZ2UsIGJ1dCB0aGF0J3MgcHJvYmxlbWF0aWMgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHJlbGF0ZWQgdG8KKyMgbXVsdGlwbGUgcGx1Z2lucywgYXMgaXMgdGhlIGNhc2Ugd2l0aCB0aGUgcHVsc2UsIG9zcyBhbmQgbWFlbW8gcGx1Z2lucy4gSW4KKyMgY2FzZSBvZiB0aGUgcHVsc2UgcGx1Z2lucywgd2UgaGF2ZSBhIHNlcGFyYXRlIGFsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYKKyMgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gYWxsIHRoZSBwdWxzZSBwbHVnaW5zLCB3aGljaCBlbnN1cmVzIHRoYXQgYWxsIHBsdWdpbnMKKyMgdGhhdCB0aGUgY29uZmlndXJhdGlvbiByZWZlcmVuY2VzIGFyZSBpbnN0YWxsZWQuIFRoZSBvc3MgYW5kIG1hZW1vCisjIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgaW4gdGhlIHJlc3BlY3RpdmUgcGNtIHBsdWdpbgorIyBwYWNrYWdlcy4gVGhlcmVmb3JlIGl0J3MgcG9zc2libGUgdG8gaW5zdGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHdpdGhvdXQKKyMgdGhlIGN0bCBwbHVnaW4gdGhhdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJlZmVyZW5jZXMuIFRoaXMgaXMgdW5saWtlbHkgdG8KKyMgY2F1c2UgYmlnIHByb2JsZW1zLCBidXQgc29tZSBraW5kIG9mIGltcHJvdmVtZW50IHRvIHRoZSBwYWNrYWdpbmcgY291bGQKKyMgcHJvYmFibHkgYmUgZG9uZSBoZXJlIChhdCBsZWFzdCBpdCB3b3VsZCBiZSBnb29kIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50CisjIHBsdWdpbnMgaW4gYSBjb25zaXN0ZW50IHdheSkuCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtY3RsLWFyY2FtLWF2ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1hcmNhbS1hdi1jdGwuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtYXJjYW0tYXYtY3RsLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hNTIgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hbHNhLWRzcCArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtbWFlbW8uY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTgtbWFlbW8uY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWphY2sgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLWphY2suY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtamFjay5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tb3NzICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1vc3MuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtb3NzLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1zcGVleCArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtc3BlZXguY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtc3BlZXguY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXVwbWl4ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC11cG1peC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC11cG1peC5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdXNiLXN0cmVhbSArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtdXNiLXN0cmVhbS5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OC11c2Itc3RyZWFtLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS12ZG93bm1peCArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtdmRvd25taXguY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtdmRvd25taXguY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXNhbXBsZXJhdGUuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtc2FtcGxlcmF0ZS5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtc3BlZXhyYXRlLmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXNwZWV4cmF0ZS5jb25mIFwKKyIKKworIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCisjIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6CisjCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCisjCisjIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bworIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKKyMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgorIyB0aGUgc3ltbGlua3MpLgorIworIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgorIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQorIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKKworIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKKyMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KKyMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCisjIFB1bHNlQXVkaW8gcGx1Z2luLgorRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAorIgorCitSREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b3BvbG9neS1jb25mXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9wb2xvZ3ktY29uZl8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGQxZjMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9wb2xvZ3ktY29uZl8xLjIuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkFMU0EgdG9wb2xvZ3kgY29uZmlndXJhdGlvbiBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbHNhLXByb2plY3Qub3JnL3dpa2kvQnVnX1RyYWNraW5nIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMGQ3NGQ3NGRiOTc0MTY5NzkwMzM3MmFkMDAxZDNiNCIKKworIyBUaGUgdGFyYmFsbCBkb2Vzbid0IGhhdmUgYW55IHRvcGxldmVsIGRpcmVjdG9yeS4gVGhlIHN1YmRpciBvcHRpb24gdGVsbHMKKyMgQml0YmFrZSB0byB1bnBhY2sgdGhlIGFyY2hpdmUgdG8gdGhlIGNvcnJlY3QgcGxhY2UuCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL2xpYi8ke0JQfS50YXIuYnoyO3N1YmRpcj0ke0JQfSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZmRmNWZmZjNmMWUwNjAzNDU2ZTcxOWY2MDMzZTkyMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNTRhNDNmNDAzMWM5OGJlZjEzNDlhYzcyMmQ4M2IyNjAzZWY0MzlmODFhMWFiMWViYTg4MTRjMjgyNDNhOWIyIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L3Vzci9zaGFyZS9hbHNhCisgICAgICAgIGNwIC1yICR7U30vdG9wb2xvZ3kgJHtEfS91c3Ivc2hhcmUvYWxzYQorfQorCitQQUNLQUdFUyA9ICIke1BOfSIKKworRklMRVNfJHtQTn0gPSAiKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXVjbS1jb25mXzEuMi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11Y20tY29uZl8xLjIuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWQxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11Y20tY29uZl8xLjIuMS4yLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIGNvbmZpZ3VyYXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYWxzYS1wcm9qZWN0Lm9yZy93aWtpL0J1Z19UcmFja2luZyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjBkNzRkNzRkYjk3NDE2OTc5MDMzNzJhZDAwMWQzYjQiCisKKyMgVGhlIHRhcmJhbGwgZG9lc24ndCBoYXZlIGFueSB0b3BsZXZlbCBkaXJlY3RvcnkuIFRoZSBzdWJkaXIgb3B0aW9uIHRlbGxzCisjIEJpdGJha2UgdG8gdW5wYWNrIHRoZSBhcmNoaXZlIHRvIHRoZSBjb3JyZWN0IHBsYWNlLgorU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9saWIvJHtCUH0udGFyLmJ6MjtzdWJkaXI9JHtCUH0iCitTUkNfVVJJW21kNXN1bV0gPSAiYjdmYTQzY2ZkNzlkZjk3ODE4NGE2MzMzNzY2ZDJhNTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWE4YTg2ODc1ZjRjZjQzMGQ0OWE2NjJhMDRhNmQ2YzYwNmM1YzlkNjdlNTRjYjk0NGM0ZDc3YjI0NTU0MDYyZiIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS91c3Ivc2hhcmUvYWxzYQorICAgICAgICBjcCAtciAke1N9L3VjbSAke0R9L3Vzci9zaGFyZS9hbHNhCisgICAgICAgIGNwIC1yICR7U30vdWNtMiAke0R9L3Vzci9zaGFyZS9hbHNhCit9CisKK1BBQ0tBR0VTID0gIiR7UE59IgorCitGSUxFU18ke1BOfSA9ICIqIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4yLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjkuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4yLjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjVjOGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MmNlN2Y3YjY3Mzk0ODdmYjcyYzY4OWQ0NjUyMWY5NTgiCi1ERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgotCi0jIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KLSMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgotIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKLSMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3Ci0jIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgotUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgotCi1QQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLSMgYWxzYS11dGlscyBzcGVjaWZpZWQgaW4gU1JDX1VSSSBkdWUgdG8gYWxzYS11dGlscy1zY3JpcHRzIHJlY2lwZQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWVkMjFjM2UyOTZjMDYwNDZjYzk4NmU3MzJmNjI1ZjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWRkZjJjYmRkYjRiZDFhNGEyYTY0OTJhMDljMjU4OThiMDhjM2FkNjQ4OTNjMzY1NWJlMTQxOTRjZjBhMjEzYSIKLQotIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAotIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAotIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgotIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKLQotIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscwotIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgotCi1BTFNBX1VUSUxTX1BLR1MgPSAiXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAotICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgotRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQgJHtiaW5kaXJ9L2F4ZmVyIgotRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgotRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCi1GSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCi1GSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgotRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20gKi91ZGV2L3J1bGVzLmQvODktYWxzYS11Y20ucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyIKLQotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKLVNVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKLQotUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgotCi1BTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KLQkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAotCi0JIyBJZiB1ZGV2IGlzIGRpc2FibGVkLCB3ZSB0b2xkIGNvbmZpZ3VyZSB0byBpbnN0YWxsIHRoZSBydWxlcwotCSMgaW4gL3Vud2FudGVkLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZW0gbm93LiBJZiB1ZGV2IGlzIGVuYWJsZWQsCi0JIyB0aGVuIC91bndhbnRlZCB3b24ndCBleGlzdCBhbmQgdGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LgotCXJtIC1yZiAke0R9L3Vud2FudGVkCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNDRhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjIuMS5iYgpAQCAtMCwwICsxLDEwNSBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xODttZDU9OTZjYzA2YTRjZWJlNWViNzk3NTY4OGZmYjBlNjU2NDIiCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgorCisjIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KKyMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgorIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKKyMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3CisjIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgorUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCisKKyMgYWxzYS11dGlscyBzcGVjaWZpZWQgaW4gU1JDX1VSSSBkdWUgdG8gYWxzYS11dGlscy1zY3JpcHRzIHJlY2lwZQorU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYzQ2MjhiYWU3NjMyOTM3ZWFjMmRlNGNmMmEzZGU4MmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIxMTBiYTcxZWY0MWQzMDA5ZGIxYmM0ZGNhZTBjZjc5ZWZiOTljYjU0MjZmYTE5ZDAzMTI0NzA1NjBhMmMwZCIKKworIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAorIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAorIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgorIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKKworIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscworIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgorCitBTFNBX1VUSUxTX1BLR1MgPSAiXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAorICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKKworRklMRVNfJHtQTn0gPSAiIgorQUxMT1dfRU1QVFlfYWxzYS11dGlscyA9ICIxIgorRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgorRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQgJHtiaW5kaXJ9L2F4ZmVyIgorRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgorRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCitGSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCitGSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgorRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCitGSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20gKi91ZGV2L3J1bGVzLmQvODktYWxzYS11Y20ucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyIKKworU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKK1NVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKK1NVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKKworUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIFdlIGRvbid0IHNoaXAgdGhpcyBoZXJlIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBkZXBlbmRlbmN5IG9uIGJhc2guCisJIyBTZWUgYWxzYS11dGlscy1zY3JpcHRzXyR7UFZ9LmJiCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYWNvbmYKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhLWluZm8uc2gKKwlybSAtZiAke0R9JHtzYmluZGlyfS9hbHNhYmF0LXRlc3Quc2gKKworCSMgSWYgdWRldiBpcyBkaXNhYmxlZCwgd2UgdG9sZCBjb25maWd1cmUgdG8gaW5zdGFsbCB0aGUgcnVsZXMKKwkjIGluIC91bndhbnRlZCwgc28gd2UgY2FuIHJlbW92ZSB0aGVtIG5vdy4gSWYgdWRldiBpcyBlbmFibGVkLAorCSMgdGhlbiAvdW53YW50ZWQgd29uJ3QgZXhpc3QgYW5kIHRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4KKwlybSAtcmYgJHtEfS91bndhbnRlZAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWMxOGJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ180LjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2N2RhOTA0Y2Y5ZmRkZWViMTBhMTMwOGZjMGRjMzlkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZWM3Yzg3ZTliNjBkMTc0NTA5ZTI2M2FjNDAxMWI1MjIzODVmZDA3NzUyOTJlMTY3MGVjYzExODBjOWJiNmQ0IgotCi0jIEJ1aWxkIGZhaWxzIHdoZW4gdGh1bWIgaXMgZW5hYmxlZDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE3Ci1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQotIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCi1QUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKLQotREVQRU5EUyA9ICJuYXNtLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICAgICAgICBhbHNhIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IHpsaWIgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3h2IHhjYicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiIKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKLVBBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW21meF0gPSAiLS1lbmFibGUtbGlibWZ4LC0tZGlzYWJsZS1saWJtZngsaW50ZWwtbWVkaWFzZGsiCi1QQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItLWVuYWJsZS1zZGwyLC0tZGlzYWJsZS1zZGwyLHZpcnR1YWwvbGlic2RsMiIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEgbGlib2dnIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4Y2JdID0gIi0tZW5hYmxlLWxpYnhjYiwtLWRpc2FibGUtbGlieGNiLGxpYnhjYiIKLVBBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCi0gICAgXAotICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAotICAgIFwKLSAgICAtLWxkPSIke0NDTER9IiBcCi0gICAgLS1jYz0iJHtDQ30iIFwKLSAgICAtLWN4eD0iJHtDWFh9IiBcCi0gICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKLSAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKLSAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKLSAgICAtLWV4dHJhLWNmbGFncz0iJHtDRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke0xERkxBR1N9IiBcCi0gICAgLS1zeXNyb290PSIke1NUQUdJTkdfRElSX1RBUkdFVH0iIFwKLSAgICAke0VYVFJBX0ZGQ09ORn0gXAotICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1zaGxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9L2ZmbXBlZyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0FWQUlMVFVORVMnLCAnbWlwczMycjInLCAnJywgJy0tZGlzYWJsZS1taXBzZHNwIC0tZGlzYWJsZS1taXBzZHNwcjInLCBkKX0gXAotICAgIC0tY3B1PSR7QGNwdShkKX0gXAotICAgIC0tcGtnLWNvbmZpZz1wa2ctY29uZmlnIFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCi0jIGdvbGQgY3Jhc2hlcyBvbiB4ODYsIGFub3RoZXIgc29sdXRpb24gaXMgdG8gLS1kaXNhYmxlLWFzbSBidXQgdGhhdHMgbW9yZSBoYWNreQotIyBsZC5nb2xkOiBpbnRlcm5hbCBlcnJvciBpbiByZWxvY2F0ZV9zZWN0aW9uLCBhdCAuLi8uLi9nb2xkL2kzODYuY2M6MzY4NAotCi1MREZMQUdTX2FwcGVuZF94ODYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKLQotRVhUUkFfT0VNQUtFID0gIlY9MSIKLQotZG9fY29uZmlndXJlKCkgewotICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1QQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCi0gICAgICAgICAgICAgbGliYXZkZXZpY2UgXAotICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKLSAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCi0gICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCi0gICAgICAgICAgICAgbGliYXZ1dGlsIFwKLSAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCi0gICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCi0gICAgICAgICAgICAgbGlic3dzY2FsZSIKLQotRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKLUZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKLUZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKLUZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCi1GSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKLUZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKLUZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCi1GSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgotCi0jIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YjA2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjIuYmIKQEAgLTAsMCArMSwxNjAgQEAKK1NVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKK0RFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCisgICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAorICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyAmIE1JVCIKK0xJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgorTElDRU5TRV9saWJhdmNvZGVjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmRldmljZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmaWx0ZXIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2Zm9ybWF0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdnJlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdnV0aWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYnBvc3Rwcm9jID0gIkdQTHYyKyIKK0xJQ0VOU0VfbGlic3dyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlic3dzY2FsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjM0ODk1NmZjMmZhYTU3YTJmNzliYmI4NGRlZDlmYmMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiNzU0MjU1YWIwZWUyZWE1ZjY2Zjg4NTBlMWJkNmFkNWNhYzFjZDg1NWQwYTJmNDk5MGZiOGM2NjhiMGQyOWMiCisKKyMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCisjIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKK1BST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgorCitERVBFTkRTID0gIm5hc20tbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIGF2cmVzYW1wbGUgXAorICAgICAgICAgICAgICAgICAgIGFsc2EgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgemxpYiBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYgeGNiJywgJycsIGQpfSIKKworIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCitQQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCitQQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCitQQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCitQQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCitQQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCitQQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCitQQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCisKKyMgZmVhdHVyZXMgdG8gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tmZGstYWFjXSA9ICItLWVuYWJsZS1saWJmZGstYWFjIC0tZW5hYmxlLW5vbmZyZWUsLS1kaXNhYmxlLWxpYmZkay1hYWMsZmRrLWFhYyIKK1BBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKK1BBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCitQQUNLQUdFQ09ORklHW21meF0gPSAiLS1lbmFibGUtbGlibWZ4LC0tZGlzYWJsZS1saWJtZngsaW50ZWwtbWVkaWFzZGsiCitQQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItLWVuYWJsZS1zZGwyLC0tZGlzYWJsZS1zZGwyLHZpcnR1YWwvbGlic2RsMiIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEgbGlib2dnIgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgorUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgorUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKK1BBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgorUEFDS0FHRUNPTkZJR1t4MjY1XSA9ICItLWVuYWJsZS1saWJ4MjY1LC0tZGlzYWJsZS1saWJ4MjY1LHgyNjUiCitQQUNLQUdFQ09ORklHW3hjYl0gPSAiLS1lbmFibGUtbGlieGNiLC0tZGlzYWJsZS1saWJ4Y2IsbGlieGNiIgorUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKKworIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKK1VTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgorCitkZWYgY3B1KGQpOgorICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6CisgICAgICAgICAgICByZXR1cm4gYXJnWzY6XQorICAgIHJldHVybiAnZ2VuZXJpYycKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCisgICAgLS1lbmFibGUtcGljIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKKyAgICBcCisgICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCisgICAgXAorICAgIC0tbGQ9IiR7Q0NMRH0iIFwKKyAgICAtLWNjPSIke0NDfSIgXAorICAgIC0tY3h4PSIke0NYWH0iIFwKKyAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAorICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAorICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAorICAgIC0tZXh0cmEtY2ZsYWdzPSIke0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKKyAgICAtLWV4dHJhLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKyMgZ29sZCBjcmFzaGVzIG9uIHg4NiwgYW5vdGhlciBzb2x1dGlvbiBpcyB0byAtLWRpc2FibGUtYXNtIGJ1dCB0aGF0cyBtb3JlIGhhY2t5CisjIGxkLmdvbGQ6IGludGVybmFsIGVycm9yIGluIHJlbG9jYXRlX3NlY3Rpb24sIGF0IC4uLy4uL2dvbGQvaTM4Ni5jYzozNjg0CisKK0xERkxBR1NfYXBwZW5kX3g4NiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgorCitFWFRSQV9PRU1BS0UgPSAiVj0xIgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK1BBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKKyAgICAgICAgICAgICBsaWJhdmRldmljZSBcCisgICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAorICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKKyAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJhdnV0aWwgXAorICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKKyAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJzd3NjYWxlIgorCitGSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgorRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgorRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgorRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgorRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgorRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgorRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCisKKyMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiCmluZGV4IGZlYTJiZTEuLmNiNjY5MmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiCkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgICAgICAgICAgIgogCiBFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIC0tZW5hYmxlLWFsdGl2ZWMiLCAiIC0tZGlzYWJsZS1hbHRpdmVjIiwgZCl9IgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJ2c3giLCAiIC0tZW5hYmxlLXZzeCIsICIgLS1kaXNhYmxlLXZzeCIsIGQpfSIKIEVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29yZTIiLCAiIC0tZW5hYmxlLXNzZSIsICIiLCBkKX0iCiBFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcmVpNyIsICIgLS1lbmFibGUtc3NlIiwgIiIsIGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjdmMTE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gMmIwNDM2ZjlhMDc3NzNmYWU4Yzc0ZGY5MDJkNzAyNGU4YmZjMzUxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNCBOb3YgMjAxNSAxNjo0NjoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBpbnRyb3NwZWN0aW9uLm00OiBwcmVmaXggcGtnY29uZmlnIHBhdGhzIHdpdGgKLSBQS0dfQ09ORklHX1NZU1JPT1RfRElSCi0KLVdlIGNhbid0IHVzZSBvdXIgdHdlYWtlZCBpbnRyb3NwZWN0aW9uLm00IGZyb20gZ29iamVjdC1pbnRyb3NwZWN0aW9uIHRhcmJhbGwKLWJlY2F1c2UgZ3N0cmVhbWVyIGFsc28gZGVmaW5lcyBJTlRST1NQRUNUSU9OX0lOSVQgaW4gaXRzIGludHJvc3BlY3Rpb24ubTQsIHdoaWNoCi1pcyBsYXRlciBzdXBwbGllZCB0byBnLWlyLXNjYW5uZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBjb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgYi9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNAotaW5kZXggMTYyYmU1Ny4uOTMzZjk3OSAxMDA2NDQKLS0tLSBhL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00Ci0rKysgYi9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNAotQEAgLTU0LDE0ICs1NCwxNCBAQCBtNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj0KLSAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotICAgICBpZiB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiOyB0aGVuCi0tICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0gICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0rICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotICAgICAgICBJTlRST1NQRUNUSU9OX0lOSVQ9ImV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOyBnc3RfaW5pdChOVUxMLE5VTEwpOyIKLSAgICAgZmkKLSAgICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvYWRkLWEtdGFyZ2V0LXRvLWNvbXBpbGUtdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAyZDg2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gZDYxNDE0YmMxN2NmMmRmMDE5NTEwYzI5MDgwNDhjNGNhYmY1Y2YwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDA5OjI3OjAxICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFkZCB0YXJnZXRzIGZvciB0ZXN0IGluc3RhbGxhdGlvbgotCi1UYXJnZXRzIHRvIG1ha2Ugc3VyZSB0ZXN0cyBjYW4gYmUgaW5zdGFsbGVkIGFuZCB0aGVuIHJ1biBvbgotdGhlIHRhcmdldC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtzcGVjaWZpYyB0byBvZSBzZXR1cF0KLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotLS0tCi0gdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gfCAyNyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0KLWluZGV4IDEzYjkxNmQuLmE2Njc4NmQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0KLUBAIC04LDExICs4LDcgQEAgUkVHSVNUUllfRU5WSVJPTk1FTlQgPSBcCi0gCUdTVF9SRUdJU1RSWT0kKENIRUNLX1JFR0lTVFJZKQotIAotIEFNX1RFU1RTX0VOVklST05NRU5UICs9IFwKLS0gICAgICAgIEdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFM9IiQoU1RBVEVfSUdOT1JFX0VMRU1FTlRTKSIJXAotLSAgICAgICAgJChSRUdJU1RSWV9FTlZJUk9OTUVOVCkJCQkJCVwKLS0gICAgICAgIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9JCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyIFwKLS0gICAgICAgIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPQkJCQkJXAotLSAgICAgICAgR1NUX1BMVUdJTl9QQVRIXzFfMD0kKHRvcF9idWlsZGRpcikvcGx1Z2lucwotKyAgICAgICAgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iJChTVEFURV9JR05PUkVfRUxFTUVOVFMpIgotIAotIHBsdWdpbmRpciA9ICQobGliZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKLSAKLUBAIC0xNzgsNiArMTc0LDIzIEBAIG5vaW5zdF9QUk9HUkFNUyA9Ci0gCi0gVEVTVFMgPSAkKGNoZWNrX1BST0dSQU1TKQotIAotK2luc3RhbGwtcHRlc3Q6ICQoVEVTVFMpCi0rCUAkKElOU1RBTEwpIC1kICQoREVTVERJUikKLSsJQGZvciBkaXIgaW4gYGZpbmQgLW1heGRlcHRoIDEgLXR5cGUgZGA7IGRvIFwKLSsJCWlmIFsgLXggJCRkaXIvLmxpYnMgXTsgdGhlbiBcCi0rCQkJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpLyQkZGlyOyBcCi0rCQkJJChJTlNUQUxMX1BST0dSQU0pICQkZGlyLy5saWJzLyogJChERVNURElSKS8kJGRpci87IFwKLSsJCWZpIFwKLSsJZG9uZQotKwotK3J1bnRlc3RzOgotKwlAZm9yIGIgaW4gJChURVNUUyk7IGRvIFwKLSsJCWlmIFsgLXggJCRiIF07IHRoZW4gXAotKwkJCSQoQU1fVEVTVFNfRU5WSVJPTk1FTlQpICQoU0hFTEwpIHRlc3QtZHJpdmVyIC0tdGVzdC1uYW1lICIkJGIiIFwKLSsJCQktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzICQkYjsgXAotKwkJZmkgXAotKwlkb25lCi0rCi0gbm9pbnN0X0hFQURFUlMgPSBcCi0gCWdzdC9jYXBzbGlzdC5oIFwKLSAJZ3N0L3N0cnVjdF9hcm0uaCBcCi1AQCAtMjIxLDkgKzIzNCw5IEBAIGdzdF9nc3RwcmludGZfTERBREQgPSBcCi0gCSQoTERBREQpCi0gCi0gZWxlbWVudHNfZmRzcmNfQ0ZMQUdTPSQoR1NUX09CSl9DRkxBR1MpICQoQU1fQ0ZMQUdTKSBcCi0tCS1EVEVTVEZJTEU9XCIkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hY1wiCi0rCS1EVEVTVEZJTEU9XCJNYWtlZmlsZVwiCi0gZWxlbWVudHNfZmlsZXNyY19DRkxBR1M9JChHU1RfT0JKX0NGTEFHUykgJChBTV9DRkxBR1MpIFwKLS0JLURURVNURklMRT1cIiQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjXCIKLSsJLURURVNURklMRT1cIk1ha2VmaWxlXCIKLSAKLSBsaWJzX2NvbnRyb2xsZXJfTERBREQgPSBcCi0gCSQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9jb250cm9sbGVyL2xpYmdzdGNvbnRyb2xsZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZ3RrLWRvYy10d2Vha3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ndGstZG9jLXR3ZWFrcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg2Yzc4ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ndGstZG9jLXR3ZWFrcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gNzAxOGNhMWM0YmYyNmM4MzE3ZTdmY2QyZTdlNGU2NDgxOTVmNDJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDIwIERlYyAyMDE3IDEzOjAzOjAzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lcjogdXNlIGEgcGF0Y2ggaW5zdGVhZCBvZiBzZWQgdG8gZml4IGd0ay1kb2MKLQotUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQKLWJpbmFyaWVzIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4KLQotQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcKLWlzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLQotIGNvbW1vbi9ndGstZG9jLm1hayB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29tbW9uL2d0ay1kb2MubWFrIGIvY29tbW9uL2d0ay1kb2MubWFrCi1pbmRleCAzZjgzNDkxLi5lNWNiMGQxIDEwMDY0NAotLS0tIGEvY29tbW9uL2d0ay1kb2MubWFrCi0rKysgYi9jb21tb24vZ3RrLWRvYy5tYWsKLUBAIC02LDExICs2LDExIEBACi0gaWYgR1RLX0RPQ19VU0VfTElCVE9PTAotIEdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLSBHVEtET0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RFUFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykKLS1HVEtET0NfUlVOID0gJChMSUJUT09MKSAtLW1vZGU9ZXhlY3V0ZQotK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCi0gZWxzZQotIEdUS0RPQ19DQyA9ICQoQ0MpICQoSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi0gR1RLRE9DX0xEID0gJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQotLUdUS0RPQ19SVU4gPQotK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCi0gZW5kaWYKLSAKLSAjIFdlIHNldCBHUEFUSCBoZXJlOyB0aGlzIGdpdmVzIHVzIHNlbWFudGljcyBmb3IgR05VIG1ha2UKLUBAIC0xMDEsNiArMTAxLDcgQEAgc2Nhbi1idWlsZC5zdGFtcDogJChIRklMRV9HTE9CKSAkKENGSUxFX0dMT0IpCi0gCSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJXAotIAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKLSAJICAgICQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKQkJCQkJXAotKwkgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0iJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyLWR1bW15IiBcCi0gCSAgICBDQz0iJChHVEtET0NfQ0MpIiBMRD0iJChHVEtET0NfTEQpIiBSVU49IiQoR1RLRE9DX1JVTikiCVwKLSAJICAgIENGTEFHUz0iJChHVEtET0NfQ0ZMQUdTKSAkKENGTEFHUykiCQkJCVwKLSAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDczZDBiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhL2Jpbi9zaAotCi1tYWtlIC1rIHJ1bnRlc3RzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzgxZTk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICIgc3BsaXRfZ3N0cmVhbWVyMTBfcGFja2FnZXMgIgotUEFDS0FHRVNQTElURlVOQ1NfYXBwZW5kID0gIiBzZXRfbWV0YXBrZ19yZGVwZW5kcyAiCi0KLXB5dGhvbiBzcGxpdF9nc3RyZWFtZXIxMF9wYWNrYWdlcyAoKSB7Ci0gICAgZ3N0X2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3N0cmVhbWVyLSR7TElCVn0nKQotICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcpCi0gICAgZ2xpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpciwgcidebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnZ3N0cmVhbWVyICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwuc28kJywgZC5leHBhbmQoJyR7UE59LSVzJyksICdHU3RyZWFtZXIgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPScnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdsaWJkaXIrJy9naXJlcG9zaXRvcnktMS4wJywgcidHc3QoLiopLTEuMFwudHlwZWxpYiQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtdHlwZWxpYicpLCAnR1N0cmVhbWVyIHR5cGVsaWIgZmlsZSBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz0nJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnc3RfbGliZGlyLCByJ2xpYmdzdCguKilcLmxhJCcsIGQuZXhwYW5kKCcke1BOfS0lcy1kZXYnKSwgJ0dTdHJlYW1lciBwbHVnaW4gZm9yICVzIChkZXZlbG9wbWVudCBmaWxlcyknLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwuYSQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtc3RhdGljZGV2JyksICdHU3RyZWFtZXIgcGx1Z2luIGZvciAlcyAoc3RhdGljIGRldmVsb3BtZW50IGZpbGVzKScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LXN0YXRpY2RldicpCi19Ci0KLXB5dGhvbiBzZXRfbWV0YXBrZ19yZGVwZW5kcyAoKSB7Ci0gICAgaW1wb3J0IG9zCi0gICAgaW1wb3J0IG9lLnV0aWxzCi0KLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgbWV0YXBrZyA9ICBwbiArICctbWV0YScKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQotICAgIGJsYWNrbGlzdCA9IFsgcG4sIHBuICsgJy1tZXRhJyBdCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCi0gICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKLSAgICBmb3IgcGtnIGluIG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpOgotICAgICAgICBpZiBwa2cgbm90IGluIGJsYWNrbGlzdCBhbmQgcGtnIG5vdCBpbiBtZXRhcGtnX3JkZXBlbmRzOgotICAgICAgICAgICAgIyBTZWUgaWYgdGhlIHBhY2thZ2UgaXMgZW1wdHkgYnkgbG9va2luZyBhdCB0aGUgY29udGVudHMgb2YgaXRzIFBLR0RFU1Qgc3ViZGlyZWN0b3J5LiAKLSAgICAgICAgICAgICMgSWYgdGhpcyBzdWJkaXJlY3RvcnkgaXMgZW1wdHksIHRoZW4gdGhlIHBhY2thZ2UgaXMuCi0gICAgICAgICAgICAjIEVtcHR5IHBhY2thZ2VzIGRvIG5vdCBnZXQgYWRkZWQgdG8gdGhlIG1ldGEgcGFja2FnZSdzIFJERVBFTkRTCi0gICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZGlyKToKLSAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBvcy5saXN0ZGlyKHBrZ2Rpcikgb3IgW10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyX2NvbnRlbnRzID0gW10KLSAgICAgICAgICAgIGlzX2VtcHR5ID0gbGVuKGRpcl9jb250ZW50cykgPT0gMAotICAgICAgICAgICAgaWYgbm90IGlzX2VtcHR5OgotICAgICAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgcG4gKyAnIG1ldGEgcGFja2FnZScpCi19Ci0KLSMgZWFjaCBwbHVnaW4tZGV2IGRlcGVuZHMgb24gUE4tZGV2LCBwbHVnaW4tc3RhdGljZGV2IG9uIFBOLXN0YXRpY2RldgotIyBzbyB3ZSBuZWVkIHRoZW0gZXZlbiB3aGVuIGVtcHR5IChsaWtlIGluIGdzdC1wbHVnaW5zLWdvb2QgY2FzZSkKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1kZXYgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LXN0YXRpY2RldiA9ICIxIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tYXBwcyAke1BOfS1tZXRhICR7UE59LWdsaWIiCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LWFwcHMgPSAiJHtiaW5kaXJ9IgotRklMRVNfJHtQTn0tZ2xpYiA9ICIke2RhdGFkaXJ9L2dsaWItMi4wIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtQTn0tbWV0YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtY29ubmVjdC1oYXMtYS1kaWZmZXJlbnQtc2lnbmF0dXJlLW9uLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGUvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlLzAwMDEtY29ubmVjdC1oYXMtYS1kaWZmZXJlbnQtc2lnbmF0dXJlLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDYwMmVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkdzdHJlYW1lciB2YWxpZGF0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJBIFRvb2wgdG8gdGVzdCBHU3RyZWFtZXIgY29tcG9uZW50cyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9nc3QtdmFsaWRhdGUvMS4xMi4zLmh0bWwiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3OTNlNzVmNDcxN2Y3MThhZDIwNGM1NTRkNTc3YjE2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjA3OWI5YjJhMTI3NjA0Yjk4ZTI5NzAzN2RjODg0N2VmNTBmNGNlMmI1MDhhYTJkZjBjYWM1Yjc3NTYyODk5IgotCi1ERVBFTkRTID0gImpzb24tZ2xpYiBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnaXQiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvKiAke2xpYmRpcn0vZ3N0LXZhbGlkYXRlLWxhdW5jaGVyLyogJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiIKLQotaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dCBhdXRvdG9vbHMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgV2l0aCBndGstZG9jIGVuYWJsZWQgdGhpcyByZWNpcGUgZmFpbHMgdG8gYnVpbGQsIHNvIGZvcmNpYmx5IGRpc2FibGUgaXQ6Ci0jIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS9nc3QtdmFsaWRhdGUtc2NhbjogbGluZSAxMTc6Ci0jIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS8ubGlicy9sdC1nc3QtdmFsaWRhdGUtc2NhbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotR1RLRE9DX0VOQUJMRUQgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTQ5MmZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMi5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkdzdHJlYW1lciB2YWxpZGF0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJBIFRvb2wgdG8gdGVzdCBHU3RyZWFtZXIgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9nc3QtdmFsaWRhdGUvMS4xMi4zLmh0bWwiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ODhmNDJjNTJkNjJlOGM1ZTUwNmRmOTExNTUzZmIyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODYxY2NiOTMyNjIwMGU3NGQ5ODAwN2UzMTZiMzg3ZDQ4ZGQ0OWYwNzJlMGI3OGNiOWQzMzAzZmRlY2ZlZWNhIgorCitERVBFTkRTID0gImpzb24tZ2xpYiBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJnaXQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvKiAke2xpYmRpcn0vZ3N0LXZhbGlkYXRlLWxhdW5jaGVyLyogJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiIKKworaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dCBhdXRvdG9vbHMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgV2l0aCBndGstZG9jIGVuYWJsZWQgdGhpcyByZWNpcGUgZmFpbHMgdG8gYnVpbGQsIHNvIGZvcmNpYmx5IGRpc2FibGUgaXQ6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS9nc3QtdmFsaWRhdGUtc2NhbjogbGluZSAxMTc6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS8ubGlicy9sdC1nc3QtdmFsaWRhdGUtc2NhbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorR1RLRE9DX0VOQUJMRUQgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE1NzFhZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA1NGJiYTIyOGVhNTJkMDFmZDg0OTQxZDk3YmUyM2MwM2Y5ODYyYjY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotRGF0ZTogU2F0LCA2IEFwciAyMDEzIDAxOjIyOjIyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgeWFzbSBmb3IgbGliYXYgd2hlbiAtLWRpc2FibGUteWFzbQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFNoYW5lIFdhbmcgPHNoYW5lLndhbmdAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMmVkZTg4Li5lZjNjMDUwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNTUsNiArMzU1LDEyIEBAIGVsc2UKLSAgICAgZW1ibGliYXZfY29uZmlndXJlX2FyZ3M9IiRlbWJsaWJhdl9jb25maWd1cmVfYXJncyAtLWVuYWJsZS1ncGwiCi0gICBmaQotCi0rICBBQ19BUkdfRU5BQkxFKHlhc20sCi0rICAgICAgICAgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS15YXNtXSwgW2Rpc2FibGUgdXNlIG9mIHlhc20gYXNzZW1ibGVyXSldKQotKyAgaWYgdGVzdCAieCRlbmFibGVfeWFzbSIgPSAieG5vIjsgdGhlbgotKyAgICBlbWJsaWJhdl9jb25maWd1cmVfYXJncz0iJGVtYmxpYmF2X2NvbmZpZ3VyZV9hcmdzIC0tZGlzYWJsZS15YXNtIgotKyAgZmkKLSsKLSAgICMgaWYgd2UgYXJlIGNyb3NzLWNvbXBpbGluZywgdGVsbCBsaWJhdiBzbwotICAgY2FzZSAkaG9zdCBpbgotICAgICAgICphbmRyb2lkKikKLS0tIAotMS44LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4MjcxNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gYWFjNTkwMmQzYzljYjM1Yzc3MWU3NjBkMGU0ODc2MjJhYTJlMTE2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIwIEFwciAyMDE3IDEwOjM4OjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogY2hlY2sgZm9yIGFybXY3dmUgdmFyaWFudAotCi1PRSBwYXNzZXMgLW1jcHUgYW5kIC1tYXJjaCB2aWEgY21kbGluZSBhbmQgaWYKLXBhY2thZ2UgdHJpZXMgdG8gZGV0ZWN0IG9uZSBvZiBpdCBvd24gdGhlbiBpdAotc2hvdWxkIGJlIGNvbXBhdGlibGUgb3RoZXJ3aXNlLCBuZXdlciBnY2M3KyB3aWxsCi1lcnJvciBvdXQKLQotQ2hlY2sgZm9yIHJlbGV2YW50IHByZXByb2Nlc3NvciBtYWNybyB0byBkZXRlcm1pbmUKLWFybXY3dmUgYXJjaGl0ZWN0dXJlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZSBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLWluZGV4IDRhNWU0NzcuLjcyNzgxOGUgMTAwNzU1Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi1AQCAtNDc0NSw2ICs0NzQ1LDcgQEAgZWxpZiBlbmFibGVkIGFybTsgdGhlbgotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA2S1o7ICAgICAgdGhlbiBlY2hvIGFybXY2emsKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNlpLOyAgICAgIHRoZW4gZWNobyBhcm12NnprCi0gICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZUMjsgICAgICB0aGVuIGVjaG8gYXJtdjZ0MgotKyAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCBFWFRfSURJVjsgdGhlbiBlY2hvIGFybXY3dmUKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNzsgICAgICAgIHRoZW4gZWNobyBhcm12NwotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA3QSAgN19BOyAgdGhlbiBlY2hvIGFybXY3LWEKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggN1M7ICAgICAgIHRoZW4gZWNobyBhcm12Ny1hCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtZml4LWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIwYzA3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBjMTcwMGY4NjdmODc2ZWUzM2MxMzBhOGUyOGI2ODhlMmIxZDg5NjYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTEgQXByIDIwMTggMTc6MTQ6NTUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBob3N0IGNvbnRhbWluYXRpb24KLQotUmVtb3ZlIHJlZmVyZW5jZSB0byBob3N0ICQobGliZGlyKSBmcm9tIC5sYSBmaWxlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjcm9zcy1jb21waWxlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2V4dC9NYWtlZmlsZS5hbQotaW5kZXggNmNkYzA0OC4uYTE5ZDI1NSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCi1AQCAtNDksNyArNDksNyBAQCBlY2hvICIgIEdFTiAgICAgICQxLmxhIiAmJiBcCi0gIGVjaG8gImxpYnJhcnlfbmFtZXM9JyciICYmIFwKLSAgZWNobyAib2xkX2xpYnJhcnk9JyQxLmEnIiAmJiBcCi0gIGVjaG8gImluaGVyaXRlZF9saW5rZXJfZmxhZ3M9JyciICYmIFwKLS0gZWNobyAiZGVwZW5kZW5jeV9saWJzPScgLUwkKGxpYmRpcikgJChpZiAkMiwkKGZvcmVhY2ggZGVwLCQyLCQoYWJzX2J1aWxkZGlyKS8kKGRlcCkubGEpKSAkKGNhbGwgZmluZF9saWJyYXJ5X2xhLCQzICQoTElCTSksJChMREZMQUdTKSkgJyIgJiYgXAotKyBlY2hvICJkZXBlbmRlbmN5X2xpYnM9JyAtTCAkKGlmICQyLCQoZm9yZWFjaCBkZXAsJDIsJChhYnNfYnVpbGRkaXIpLyQoZGVwKS5sYSkpICQoY2FsbCBmaW5kX2xpYnJhcnlfbGEsJDMgJChMSUJNKSwkKExERkxBR1MpKSAnIiAmJiBcCi0gIGVjaG8gIndlYWtfbGlicmFyeV9uYW1lcz0nJyIgJiYgIFwKLSAgZWNobyAiY3VycmVudD0iICYmIFwKLSAgZWNobyAiYWdlPSIgJiYgXAotQEAgLTU4LDcgKzU4LDcgQEAgZWNobyAiICBHRU4gICAgICAkMS5sYSIgJiYgXAotICBlY2hvICJzaG91bGRub3RsaW5rPW5vIiAmJiBcCi0gIGVjaG8gImRsb3Blbj0nJyIgJiYgXAotICBlY2hvICJkbHByZW9wZW49JyciICYmIFwKLS0gZWNobyAibGliZGlyPSckKGxpYmRpciknIikgPiAkMS5sYQotKyBlY2hvICJsaWJkaXI9JyciKSA+ICQxLmxhCi0gZW5kZWYKLSAKLSBsaWJhdnV0aWwubGE6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZDA0MmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotSXQgd2lsbCBhZGQgLW1pcHM2NHI2IGFuZCAtbWlwczY0cjIgdG8gY21kbGluZSB3aGljaCB3aWxsCi1jYXVzZSBjb25mbGljdHMKLQotaW4gT0Ugd2UgdXNlciBtaXBzMzJyMiBhbmQgbWlwczY0cjIgZm9yIG1pcHMgYXJjaCB2ZXJzaW9ucwotc28gdGhlcmUgaXMgbm8gYmVuZWZpdCBvZiBkZXRlY3RpbmcgaXQgYXV0b21hdGljYWxseSBieQotcG9raW5nIGF0IHRvb2xzIGVzcGVjaWFsbHkgaW4gY3Jvc3MgZW52Ci0KLUZpeGVzIGVycm9ycyBsaWtlCi0KLWxpbmtpbmcgLW1uYW49MjAwOCBtb2R1bGUgd2l0aCBwcmV2aW91cyAtbW5hbj1sZWdhY3kgbW9kdWxlcwotZmFpbGVkIHRvIG1lcmdlIHRhcmdldCBzcGVjaWZpYyBkYXRhIG9mIGZpbGUKLQotLUtoZW0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLUluZGV4OiBnc3QtbGliYXYtMS4xMC4xL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtbGliYXYtMS4xMC4xLm9yaWcvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotKysrIGdzdC1saWJhdi0xLjEwLjEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotQEAgLTU2NTAsMTIgKzU2NTAsOSBAQCBlbGlmIGVuYWJsZWQgbWlwczsgdGhlbgotIAotICAgICAjIEVuYWJsZSBtaW5pbXVtIElTQSBiYXNlZCBvbiBzZWxlY3RlZCBvcHRpb25zCi0gICAgIGlmIGVuYWJsZWQgbWlwczY0OyB0aGVuCi0tICAgICAgICBlbmFibGVkIG1pcHM2NHI2ICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczY0cjYgJyJkbHNhICQwLCAkMCwgJDAsIDEiJyAnLW1pcHM2NHI2JwotICAgICAgICAgZW5hYmxlZCBtaXBzNjRyMiAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHM2NHIyICciZGV4dCAkMCwgJDAsIDAsIDEiJyAnLW1pcHM2NHIyJwotICAgICAgICAgZGlzYWJsZWQgbWlwczY0cjYgJiYgZGlzYWJsZWQgbWlwczY0cjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzNjRyMSAnImRhZGRpICQwLCAkMCwgMCInICctbWlwczY0JwotICAgICBlbHNlCi0tICAgICAgICBlbmFibGVkIG1pcHMzMnI2ICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczMycjYgJyJhdWkgJDAsICQwLCAwIicgJy1taXBzMzJyNicKLS0gICAgICAgIGVuYWJsZWQgbWlwczMycjUgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyNSAnImVyZXRuYyInICctbWlwczMycjUnCi0gICAgICAgICBlbmFibGVkIG1pcHMzMnIyICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczMycjIgJyJleHQgJDAsICQwLCAwLCAxIicgJy1taXBzMzJyMicKLSAgICAgICAgIGRpc2FibGVkIG1pcHMzMnI2ICYmIGRpc2FibGVkIG1pcHMzMnI1ICYmIGRpc2FibGVkIG1pcHMzMnIyICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczMycjEgJyJhZGRpICQwLCAkMCwgMCInICctbWlwczMyJwotICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Yjg1MzU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLURlc2NyaXB0aW9uOiBXb3JrYXJvdW5kIHRvIGJ1aWxkIGxpYmF2IGZvciBpNTg2IHdpdGggZ2NjIDQuOS4yIGJ5IGF2b2lkaW5nIG1lbXNldAotQXV0aG9yOiBCZXJuaGFyZCDcYmVsYWNrZXIgPGJlcm5oYXJkdUB2ci13ZWIuZGU+Ci0KLS0tLQotQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgzMDgyCi1MYXN0LVVwZGF0ZTogMjAxNS0wNC0yOAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi0tLS0gZ3N0LWxpYmF2LTEuNC41Lm9yaWcvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9jYWJhYy5jCi0rKysgZ3N0LWxpYmF2LTEuNC41L2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfY2FiYWMuYwotQEAgLTIwNTcsNyArMjA1NywxMSBAQCBkZWNvZGVfaW50cmFfbWI6Ci0gICAgICAgICAvLyBJbiBkZWJsb2NraW5nLCB0aGUgcXVhbnRpemVyIGlzIDAKLSAgICAgICAgIGgtPmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSA9IDA7Ci0gICAgICAgICAvLyBBbGwgY29lZmZzIGFyZSBwcmVzZW50Ci0tICAgICAgICBtZW1zZXQoaC0+bm9uX3plcm9fY291bnRbbWJfeHldLCAxNiwgNDgpOwotKyAgICAgICAgLyptZW1zZXQoaC0+bm9uX3plcm9fY291bnRbbWJfeHldLCAxNiwgNDgpOyovCi0rICAgICAgICAgICAgLyogYXZvaWRpbmcgdGhpcyBtZW1zZXQgYmVjYXVzZSBpdCBsZWFkcyBhdCBsZWFzdCB3aXRoIGdjYzQuOS4yIHRvIGVycm9yOiAnYXNtJyBvcGVyYW5kIGhhcyBpbXBvc3NpYmxlIGNvbnN0cmFpbnRzICovCi0rICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQ4OyBpKyspIHsKLSsgICAgICAgICAgICAoICh1bnNpZ25lZCBjaGFyKikoaC0+bm9uX3plcm9fY291bnRbbWJfeHldKSApIFtpXSA9IDE2OwotKyAgICAgICAgfQotICAgICAgICAgaC0+Y3VyX3BpYy5tYl90eXBlW21iX3h5XSA9IG1iX3R5cGU7Ci0gICAgICAgICBzbC0+bGFzdF9xc2NhbGVfZGlmZiA9IDA7Ci0gICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDk1NWZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1TVU1NQVJZID0gIkxpYmF2LWJhc2VkIEdTdHJlYW1lciAxLnggcGx1Z2luIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1saWJhdi9nc3QtbGliYXYtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ODAyM2Y0YzcxYmJkNzExMDYxZTM1MGZjZDc2YzA5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOGE1NzQ4YWU5YTRhN2JlOTY5NjUxMjE4MmVhOWZmYTZlZmUwYmU5Yjc5NzY5MTY1NDhlOWQ0MzgxY2E2MWM0IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgotCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIHpsaWIgYnppcDIgeHoiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi0jIENBVVRJT046IFVzaW5nIHRoZSBzeXN0ZW0gbGliYXYgaXMgbm90IHJlY29tbWVuZGVkLiBTaW5jZSB0aGUgbGliYXYgQVBJIGlzIGNoYW5naW5nIGFsbCB0aGUgdGltZSwKLSMgY29tcGlsYXRpb24gZXJyb3JzIChhbmQgb3RoZXIsIG1vcmUgc3VidGxlIGJ1Z3MpIGNhbiBoYXBwZW4uIEl0IGlzIHVzdWFsbHkgYmV0dGVyIHRvIHJlbHkgb24gdGhlCi0jIGxpYmF2IGNvcHkgaW5jbHVkZWQgaW4gdGhlIGdzdC1saWJhdiBwYWNrYWdlLgotUEFDS0FHRUNPTkZJRyA/Pz0gIm9yYyB5YXNtIgotCi1QQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwsIgotUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLS13aXRoLXN5c3RlbS1saWJhdiwsbGliYXYiCi1QQUNLQUdFQ09ORklHW29yY10gPSAiLS1lbmFibGUtb3JjLC0tZGlzYWJsZS1vcmMsb3JjIgotUEFDS0FHRUNPTkZJR1t5YXNtXSA9ICItLWVuYWJsZS15YXNtLC0tZGlzYWJsZS15YXNtLG5hc20tbmF0aXZlIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kIgotCi1HU1RSRUFNRVJfMV8wX0RFQlVHID89ICItLWRpc2FibGUtZGVidWciCi0KLUxJQkFWX0VYVFJBX0NPTkZJR1VSRSA9ICItLXdpdGgtbGliYXYtZXh0cmEtY29uZmlndXJlIgotCi1MSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSRyA9ICItLXRhcmdldC1vcz1saW51eCBcCi0gIC0tY2M9JyR7Q0N9JyAtLWFzPScke0NDfScgLS1sZD0nJHtDQ30nIC0tbm09JyR7Tk19JyAtLWFyPScke0FSfScgXAotICAtLXJhbmxpYj0nJHtSQU5MSUJ9JyBcCi0gICR7R1NUUkVBTUVSXzFfMF9ERUJVR30gXAotICAtLWNyb3NzLXByZWZpeD0nJHtIT1NUX1BSRUZJWH0nIgotCi0jIERpc2FibGUgYXNzZW1ibHkgb3B0aW1pemF0aW9ucyBmb3IgWDMyLCBhcyB0aGlzIGxpYmF2IGxhY2tzIHRoZSBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHX3JlbW92ZV9saW51eC1nbnV4MzIgPSAieWFzbSIKLUxJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCi0KLUxJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT04gPSBcCi0nJHtMSUJBVl9FWFRSQV9DT05GSUdVUkV9PSIke0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHfSInCi0KLUVYVFJBX09FQ09ORiA9ICIke0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT059IgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ5My8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLSMgZmZtcGVnL2xpYmF2IGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZkZWZjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjIuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJMaWJhdi1iYXNlZCBHU3RyZWFtZXIgMS54IHBsdWdpbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrICYgKCAoR1BMdjIrICYgTEdQTHYyLjErKSB8IChHUEx2MysgJiBMR1BMdjMrKSApIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4dC9saWJhdi9nc3Rhdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PWE3NTJjMzUyNjdkODI3NmZkOWNhM2RiNjk5NGZjYTljIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWFjZWJkMDEzNmVkZTNhOWJkMzY3MmVlYjMzODgwNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzcyNGY2MTI3MDBjMTVhOTMzYzczNTZmYmVhYmIwYmI5NTcxZmI1NTM4ZjhiMWI1NGQ0ZDJkOTQxODhkZWVmMiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBmZm1wZWciCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgorCitkZWxldGVfdW51c2VkX2xpYmF2X2NvcHkoKSB7CisgICAgICAgICMgV2hlbiBidWlsZGluZyB3aXRoIG1lc29uLCB0aGUgaW50ZXJuYWwgbGliYXYgY29weSBpcyBub3QgdXNlZC4KKyAgICAgICAgIyBJdCBpcyBvbmx5IHByZXNlbnQgZm9yIGxlZ2FjeSBhdXRvdG9vbHMgYmFzZWQgYnVpbGRzLiBJbiBmdXR1cmUKKyAgICAgICAgIyBHU3RyZWFtZXIgdmVyc2lvbnMsIHRoZSBhdXRvdG9vbHMgc2NyaXB0cyB3aWxsIGJlIGdvbmUsIGFuZCBzbworICAgICAgICAjIHdpbGwgdGhpcyBpbnRlcm5hbCBjb3B5LiBVbnRpbCB0aGVuLCBpdCB3aWxsIGJlIHByZXNlbnQuIEluIG9yZGVyCisgICAgICAgICMgdG8gbWFrZSBzdXJlIHRoaXMgY29weSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIC1zcmMgcGFja2FnZSwganVzdAorICAgICAgICAjIG1hbnVhbGx5IGRlbGV0ZSB0aGUgY29weS4KKyAgICAgICAgcm0gLXJmICIke1N9L2dzdC1saWJzL2V4dC9saWJhdi8iCit9CisKK2RvX3VucGFja1twb3N0ZnVuY3NdICs9ICIgZGVsZXRlX3VudXNlZF9saWJhdl9jb3B5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IyZjcwNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVNVTU1BUlkgPSAiT3Blbk1BWCBJTCBwbHVnaW5zIGZvciBHU3RyZWFtZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODk3NzJlN2EyNzdmZDBhYmZjMjUwZWFmOGU0ZTljZTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2JmNTQxMjFhMmNiYTU3NWQ0NjA4MzNlODEzMjI2NTc4MTI1MmNlMzJjZjViOGY5ZmE4NzUzZTQyYWIyNGJiMiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstZG9jIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1hY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCi0KLUdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCi1HU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS12YWxncmluZCAtLXdpdGgtb214LXRhcmdldD0ke0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVH0iCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgb214X3RhcmdldCA9IGQuZ2V0VmFyKCJHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQiKQotICAgIGlmIG9teF90YXJnZXQgaW4gWydnZW5lcmljJywgJ2JlbGxhZ2lvJ106Ci0gICAgICAgICMgQmVsbGFnaW8gaGVhZGVycyBhcmUgaW5jb21wbGV0ZSAodGhleSBhcmUgbWlzc2luZyB0aGUgT01YX1ZFUlNJT05fTUFKT1IsIwotICAgICAgICAjIE9NWF9WRVJTSU9OX01JTk9SLCBPTVhfVkVSU0lPTl9SRVZJU0lPTiwgYW5kIE9NWF9WRVJTSU9OX1NURVAgbWFjcm9zKTsKLSAgICAgICAgIyBhcHBlbmRpbmcgYSBkaXJlY3RvcnkgcGF0aCB0byBnc3Qtb214JyBpbnRlcm5hbCBPcGVuTUFYIElMIGhlYWRlcnMgZml4ZXMgdGhpcwotICAgICAgICBkLmFwcGVuZFZhcigiQ0ZMQUdTIiwgIiAtSSR7U30vb214L29wZW5tYXgiKQotICAgIGVsaWYgb214X3RhcmdldCA9PSAicnBpIjoKLSAgICAgICAgIyBEZWRpY2F0ZWQgUmFzcGJlcnJ5IFBpIE9wZW5NQVggSUwgc3VwcG9ydCBtYWtlcyB0aGlzIHBhY2thZ2UgbWFjaGluZSBzcGVjaWZpYwotICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQotfQotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0gICAgIyBEZWxldGUgbTQgZmlsZXMgd2hpY2ggd2UgcHJvdmlkZSBwYXRjaGVkIHZlcnNpb25zIG9mIGJ1dCB3aWxsIGJlIGlnbm9yZWQKLSAgICAjIGlmIHRoZXNlIGV4aXN0Ci0Jcm0gLWYgIiR7U30vY29tbW9uL200L3BrZy5tNCIKLQlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKLQotc2V0X29teF9jb3JlX25hbWUoKSB7Ci0Jc2VkIC1pIC1lICJzO15jb3JlLW5hbWU9Lio7Y29yZS1uYW1lPSR7R1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FfTsiICIke0R9JHtzeXNjb25mZGlyfS94ZGcvZ3N0b214LmNvbmYiCi19Ci1kb19pbnN0YWxsW3Bvc3RmdW5jc10gKz0gIiBzZXRfb214X2NvcmVfbmFtZSAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCi0KLVJERVBFTkRTXyR7UE59ID0gImxpYm9teGlsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWJkYmQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE2LjIuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJPcGVuTUFYIElMIHBsdWdpbnMgZm9yIEdTdHJlYW1lciIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MzYyNzg2ZDJiNmNjZTM0ZGUwOGM4NmI3ODQ3Zjc4MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWVkNDExYTJlYmE3NTYxMGQ3MjMzMWVlYjE0ZmYwNWUyZGYyOGY0ZmQwNWNiNjkyMjVhODhiZWM2ZDI3NDM5IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgdmlydHVhbC9saWJvbXhpbCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCitHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgorCitFWFRSQV9PRU1FU09OICs9ICItRHRhcmdldD0ke0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVH0iCisKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgb214X3RhcmdldCA9IGQuZ2V0VmFyKCJHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQiKQorICAgIGlmIG9teF90YXJnZXQgaW4gWydnZW5lcmljJywgJ2JlbGxhZ2lvJ106CisgICAgICAgICMgQmVsbGFnaW8gaGVhZGVycyBhcmUgaW5jb21wbGV0ZSAodGhleSBhcmUgbWlzc2luZyB0aGUgT01YX1ZFUlNJT05fTUFKT1IsIworICAgICAgICAjIE9NWF9WRVJTSU9OX01JTk9SLCBPTVhfVkVSU0lPTl9SRVZJU0lPTiwgYW5kIE9NWF9WRVJTSU9OX1NURVAgbWFjcm9zKTsKKyAgICAgICAgIyBhcHBlbmRpbmcgYSBkaXJlY3RvcnkgcGF0aCB0byBnc3Qtb214JyBpbnRlcm5hbCBPcGVuTUFYIElMIGhlYWRlcnMgZml4ZXMgdGhpcworICAgICAgICBkLmFwcGVuZFZhcigiQ0ZMQUdTIiwgIiAtSSR7U30vb214L29wZW5tYXgiKQorICAgIGVsaWYgb214X3RhcmdldCA9PSAicnBpIjoKKyAgICAgICAgIyBEZWRpY2F0ZWQgUmFzcGJlcnJ5IFBpIE9wZW5NQVggSUwgc3VwcG9ydCBtYWtlcyB0aGlzIHBhY2thZ2UgbWFjaGluZSBzcGVjaWZpYworICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQorfQorCitzZXRfb214X2NvcmVfbmFtZSgpIHsKKwlzZWQgLWkgLWUgInM7XmNvcmUtbmFtZT0uKjtjb3JlLW5hbWU9JHtHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUV9OyIgIiR7RH0ke3N5c2NvbmZkaXJ9L3hkZy9nc3RvbXguY29uZiIKK30KK2RvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHNldF9vbXhfY29yZV9uYW1lICIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSIKKworVklSVFVBTC1SVU5USU1FX2xpYm9teGlsID89ICJsaWJvbXhpbCIKK1JERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX2xpYm9teGlsfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMjE4NTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gOTdhNGQwY2Q3ZGU4Y2ZiZjk4M2FjYzdlMzdiYTJmOGZiNzNjM2UxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9UaW0tUGhpbGlwcD0yME09QzM9QkNsbGVyPz0gPHRpbUBjZW50cmljdWxhci5jb20+CitEYXRlOiBGcmksIDE4IE9jdCAyMDE5IDAwOjM5OjEyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYKKyBpbnRyb3NwZWN0aW9uIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworU2VlIGdzdHJlYW1lci9nc3RyZWFtZXIjNDU0IGFuZCBnc3RyZWFtZXIvZ3N0cmVhbWVyIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbOTdhNGQwY2Q3ZGU4Y2ZiZjk4M2FjYzdlMzdiYTJmOGZiNzNjM2UxOV0KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNjdhZWViNGQwLi43YjMzMTRiZDkgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC00MTEsNyArNDExLDcgQEAgcHl0aG9uMyA9IGltcG9ydCgncHl0aG9uJykuZmluZF9pbnN0YWxsYXRpb24oKQorIAorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV8xLjAiLCAiQDBAIiwgVFJVRSk7Jy5mb3JtYXQobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSArICcvZ2lyX2VtcHR5X3JlZ2lzdHJ5LnJlZycpICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9QTFVHSU5fUEFUSF8xXzAiLCAiIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ODYxYjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIGY1OWM1MjY5ZjkyZDU5YTUyOTZjYmZlZWI2ODJkNDIwOTVjZDg4YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTggU2VwIDIwMTQgMDI6MjQ6MDcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkOiBhbGxvdyB0byBkaXNhYmxlIGxpYnNzaDIKLQotbGlic3NoMiBpcyBhdXRvbWF0aWNhbGx5IGxpbmtlZCB0byBpZiBwcmVzZW50LCB0aGlzIHVuZGV0ZXJtaW5lZAotZGVwZW5kZW5jeSBtYXkgY2F1c2UgYnVpbGQgZXJyb3JzIGxpa2U6Ci0KLSAgLi4uL3g4Nl82NC1wb2t5LWxpbnV4LzQuOS4wL2xkOiBjYW5ub3QgZmluZCAtbHNzaDIKLQotbGlic3NoMiBpc24ndCBhbiBvZS1jb3JlIHJlY2lwZSwgc28gYWxsb3cgdG8gZGlzYWJsZSBpdCBmcm9tCi1jb25maWd1cmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgMjMgKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTIuMy5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMvY29uZmlndXJlLmFjCi1AQCAtMTIwMiw2ICsxMjAyLDE1IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKENIUk9NQVBSSU5ULCBbY2hyb20KLSBdKQotIAotIGRubCAqKiogQ3VybCAqKioKLStBQ19BUkdfRU5BQkxFKFtsaWJzc2gyXSwKLSsgICAgIFsgIC0tZW5hYmxlLWxpYnNzaDIJCWVuYWJsZSBMSUJTU0gyIHN1cHBvcnQgQDw6QGRlZmF1bHQ9YXV0b0A6PkBdLAotKyAgICAgW2Nhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLSsgICAgICAgeWVzKSAgTkVFRF9TU0gyPXllcyA7OwotKyAgICAgICBubykgICBORUVEX1NTSDI9bm8gOzsKLSsgICAgICAgYXV0bykgTkVFRF9TU0gyPWF1dG8gOzsKLSsgICAgICAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1saWJzc2gyXSkgOzsKLSsgICAgIGVzYWNdLFtORUVEX1NTSDI9YXV0b10pCi0rCi0gdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQ1VSTCwgdHJ1ZSkKLSBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dLCBjdXJsLCBbCi0gICBQS0dfQ0hFQ0tfTU9EVUxFUyhDVVJMLCBsaWJjdXJsID49IDcuMzUuMCwgWwotQEAgLTEyMjQsMTIgKzEyMzMsMTQgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ1VSTCwgW0N1cmwgcGx1Z2luXQotICAgXSkKLSAgIEFDX1NVQlNUKENVUkxfQ0ZMQUdTKQotICAgQUNfU1VCU1QoQ1VSTF9MSUJTKQotLSAgUEtHX0NIRUNLX01PRFVMRVMoU1NIMiwgbGlic3NoMiA+PSAxLjQuMywgWwotLSAgICBIQVZFX1NTSDI9InllcyIKLS0gICAgQUNfREVGSU5FKEhBVkVfU1NIMiwgMSwgW0RlZmluZSBpZiBsaWJzc2gyIGlzIGF2YWlsYWJsZV0pCi0tICBdLCBbCi0tICAgIEhBVkVfU1NIMj0ibm8iCi0tICBdKQotKyAgaWYgdGVzdCAieCRORUVEX1NTSDIiICE9ICJ4bm8iOyB0aGVuCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFNTSDIsIGxpYnNzaDIgPj0gMS40LjMsIFsKLSsgICAgICBIQVZFX1NTSDI9InllcyIKLSsgICAgICBBQ19ERUZJTkUoSEFWRV9TU0gyLCAxLCBbRGVmaW5lIGlmIGxpYnNzaDIgaXMgYXZhaWxhYmxlXSkKLSsgICAgXSwgWwotKyAgICAgIEhBVkVfU1NIMj0ibm8iCi0rICAgIF0pCi0rICBmaQotICAgQU1fQ09ORElUSU9OQUwoVVNFX1NTSDIsIHRlc3QgIngkSEFWRV9TU0gyIiA9ICJ4eWVzIikKLSAgIEFDX1NVQlNUKFNTSDJfQ0ZMQUdTKQotICAgQUNfU1VCU1QoU1NIMl9MSUJTKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL29wZW5jdi1yZXNvbHZlLW1pc3Npbmctb3BlbmN2LWRhdGEtZGlyLWluLXlvY3RvLWJ1aWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvb3BlbmN2LXJlc29sdmUtbWlzc2luZy1vcGVuY3YtZGF0YS1kaXItaW4teW9jdG8tYnVpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjY1OTFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL29wZW5jdi1yZXNvbHZlLW1pc3Npbmctb3BlbmN2LWRhdGEtZGlyLWluLXlvY3RvLWJ1aWwucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBmNDFjYWFlMTRiNjE4YWI4MTVlZGUzYzQwOGU3NDgyYjAwMzE2ZTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxMDoyMjozNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBvcGVuY3Y6IHJlc29sdmUgbWlzc2luZyBvcGVuY3YgZGF0YSBkaXIgaW4geW9jdG8gYnVpbGQKKworV2hlbiBZb2N0byBidWlsZCBpcyBwZXJmb3JtZWQsIG9wZW5jdiBzZWFyY2hlcyBmb3IgZGF0YSBkaXIgdXNpbmcgc2ltcGxlCisndGVzdCcgY29tbWFuZCwgdGhpcyBmYWlscyBiZWNhdXNlIHBrZy1jb25maWcgcHJvdmlkZXMgYW4gYWJzb2x1dGUKK3BhdGggb24gdGhlIHRhcmdldCB3aGljaCBuZWVkcyB0byBiZSBwcmVwZW5kZWQgYnkgUEtHX0NPTkZJR19TWVNST09UX0RJUgoraW4gb3JkZXIgZm9yIHRoZSAndGVzdCcgdXRpbGl0eSB0byBwaWNrIHVwIHRoZSBhYnNvbHV0ZSBwYXRoLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CistLS0KKyBleHQvb3BlbmN2L21lc29uLmJ1aWxkIHwgNyArKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQgYi9leHQvb3BlbmN2L21lc29uLmJ1aWxkCitpbmRleCBmMzhiNTVkZmUuLmEyNjQwMzQ4MiAxMDA2NDQKKy0tLSBhL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQKKysrKyBiL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQKK0BAIC03OCwyMCArNzgsMjEgQEAgZWxzZQorIGVuZGlmCisgCisgaWYgb3BlbmN2X2ZvdW5kCisrICBwa2djb25mX3N5c3Jvb3QgPSBydW5fY29tbWFuZChweXRob24zLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludChvcy5lbnZpcm9uLmdldCgiUEtHX0NPTkZJR19TWVNST09UX0RJUiIpKScpLnN0ZG91dCgpLnN0cmlwKCkKKyAgIG9wZW5jdl9wcmVmaXggPSBvcGVuY3ZfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ3ByZWZpeCcpCisgICBnc3RvcGVuY3ZfY2FyZ3MgKz0gWyctRE9QRU5DVl9QUkVGSVg9IicgKyBvcGVuY3ZfcHJlZml4ICsgJyInXQorIAorICAgIyBDaGVjayB0aGUgZGF0YSBkaXIgdXNlZCBieSBvcGVuY3YgZm9yIGl0cyB4bWwgZGF0YSBmaWxlcworICAgIyBVc2UgcHJlZml4IGZyb20gcGtnLWNvbmZpZyB0byBiZSBjb21wYXRpYmxlIHdpdGggY3Jvc3MtY29tcGlsYXRpb24KKy0gIHIgPSBydW5fY29tbWFuZCgndGVzdCcsICctZCcsIG9wZW5jdl9wcmVmaXggKyAnL3NoYXJlL29wZW5jdicpCisrICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBwa2djb25mX3N5c3Jvb3QgKyBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9vcGVuY3YnKQorICAgaWYgci5yZXR1cm5jb2RlKCkgPT0gMAorICAgICBnc3RvcGVuY3ZfY2FyZ3MgKz0gJy1ET1BFTkNWX1BBVEhfTkFNRT0ib3BlbmN2IicKKyAgIGVsc2UKKy0gICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvT3BlbkNWJykKKysgICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgcGtnY29uZl9zeXNyb290ICsgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvT3BlbkNWJykKKyAgICAgaWYgci5yZXR1cm5jb2RlKCkgPT0gMAorICAgICAgIGdzdG9wZW5jdl9jYXJncyArPSAnLURPUEVOQ1ZfUEFUSF9OQU1FPSJPcGVuQ1YiJworICAgICBlbHNlCistICAgICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvb3BlbmN2NCcpCisrICAgICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgcGtnY29uZl9zeXNyb290ICsgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvb3BlbmN2NCcpCisgICAgICAgaWYgci5yZXR1cm5jb2RlKCkgPT0gMAorICAgICAgICAgZ3N0b3BlbmN2X2NhcmdzICs9ICctRE9QRU5DVl9QQVRIX05BTUU9Im9wZW5jdjQiJworICAgICAgIGVsc2UKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzMxYmU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNGQ0ZDMwZWNjNjdkNWNiYzc3YzA0NzViY2VhMTIxMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NjQ4MWM5NTMzOWI4OTg1YWYxM2JhYzE5YjE4YmM4ZGE3MTE4YzJhN2Q5NDQwZWQ3MGU3ZGNkNzk5YzJhZGI1IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotCi1pbmhlcml0IGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsJywgJycsIGQpfSBcCi0gICAgYnoyIGN1cmwgZGFzaCBkdGxzIGhscyByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSB0dG1sIHV2Y2gyNjQgd2VicCBcCi0iCi0KLSMgdGhlIGdsIHBhY2thZ2Vjb25maWcgZW5hYmxlcyBPcGVuR0wgZWxlbWVudHMgdGhhdCBoYXZlbid0IGJlZW4gcG9ydGVkCi0jIHRvIC1iYXNlIHlldC4gVGhleSBkZXBlbmQgb24gdGhlIGdzdGdsIGxpYnJhcnkgaW4gLWJhc2UsIHNvIHdlIGRvCi0jIG5vdCBhZGQgR0wgZGVwZW5kZW5jaWVzIGhlcmUsIHNpbmNlIHRoZXNlIGFyZSB0YWtlbiBjYXJlIG9mIGluIC1iYXNlLgotCi1QQUNLQUdFQ09ORklHW2Fzc3JlbmRlcl0gICAgICAgPSAiLS1lbmFibGUtYXNzcmVuZGVyLC0tZGlzYWJsZS1hc3NyZW5kZXIsbGliYXNzIgotUEFDS0FHRUNPTkZJR1tibHVlel0gICAgICAgICAgID0gIi0tZW5hYmxlLWJsdWV6LC0tZGlzYWJsZS1ibHVleixibHVlejUiCi1QQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgICAgICAgPSAiLS1lbmFibGUtYnoyLC0tZGlzYWJsZS1iejIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2N1cmxdICAgICAgICAgICAgPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgotUEFDS0FHRUNPTkZJR1tkYXNoXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWRhc2gsLS1kaXNhYmxlLWRhc2gsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbZGMxMzk0XSAgICAgICAgICA9ICItLWVuYWJsZS1kYzEzOTQsLS1kaXNhYmxlLWRjMTM5NCxsaWJkYzEzOTQiCi1QQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgICAgICAgPSAiLS1lbmFibGUtZGlyZWN0ZmIsLS1kaXNhYmxlLWRpcmVjdGZiLGRpcmVjdGZiIgotUEFDS0FHRUNPTkZJR1tkdGxzXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWR0bHMsLS1kaXNhYmxlLWR0bHMsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbZmFhY10gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFjLC0tZGlzYWJsZS1mYWFjLGZhYWMiCi1QQUNLQUdFQ09ORklHW2ZhYWRdICAgICAgICAgICAgPSAiLS1lbmFibGUtZmFhZCwtLWRpc2FibGUtZmFhZCxmYWFkMiIKLVBBQ0tBR0VDT05GSUdbZmxpdGVdICAgICAgICAgICA9ICItLWVuYWJsZS1mbGl0ZSwtLWRpc2FibGUtZmxpdGUsZmxpdGUtYWxzYSIKLVBBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gICAgICA9ICItLWVuYWJsZS1mbHVpZHN5bnRoLC0tZGlzYWJsZS1mbHVpZHN5bnRoLGZsdWlkc3ludGgiCi1QQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzIC0td2l0aC1obHMtY3J5cHRvPW5ldHRsZSwtLWRpc2FibGUtaGxzLG5ldHRsZSIKLVBBQ0tBR0VDT05GSUdbZ2xdICAgICAgICAgICAgICA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsIgotUEFDS0FHRUNPTkZJR1trbXNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWttcywtLWRpc2FibGUta21zLGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbbGliZGUyNjVdICAgICAgICA9ICItLWVuYWJsZS1saWJkZTI2NSwtLWRpc2FibGUtbGliZGUyNjUsbGliZGUyNjUiCi1QQUNLQUdFQ09ORklHW2xpYm1tc10gICAgICAgICAgPSAiLS1lbmFibGUtbGlibW1zLC0tZGlzYWJsZS1saWJtbXMsbGlibW1zIgotUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSAgICAgICAgID0gIi0tZW5hYmxlLWxpYnNzaDIsLS1kaXNhYmxlLWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbGNtczJdICAgICAgICAgICA9ICItLWVuYWJsZS1sY21zMiwtLWRpc2FibGUtbGNtczIsbGNtcyIKLVBBQ0tBR0VDT05GSUdbbW9kcGx1Z10gICAgICAgICA9ICItLWVuYWJsZS1tb2RwbHVnLC0tZGlzYWJsZS1tb2RwbHVnLGxpYm1vZHBsdWciCi1QQUNLQUdFQ09ORklHW21zZGtdICAgICAgICAgICAgPSAiLS1lbmFibGUtbXNkaywtLWRpc2FibGUtbXNkayxpbnRlbC1tZWRpYXNkayIKLVBBQ0tBR0VDT05GSUdbbmVvbl0gICAgICAgICAgICA9ICItLWVuYWJsZS1uZW9uLC0tZGlzYWJsZS1uZW9uLG5lb24iCi1QQUNLQUdFQ09ORklHW29wZW5hbF0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmFsLC0tZGlzYWJsZS1vcGVuYWwsb3BlbmFsLXNvZnQiCi1QQUNLQUdFQ09ORklHW29wZW5jdl0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmN2LC0tZGlzYWJsZS1vcGVuY3Ysb3BlbmN2IgotUEFDS0FHRUNPTkZJR1tvcGVuaDI2NF0gICAgICAgID0gIi0tZW5hYmxlLW9wZW5oMjY0LC0tZGlzYWJsZS1vcGVuaDI2NCxvcGVuaDI2NCIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddICAgICAgICA9ICItLWVuYWJsZS1vcGVuanBlZywtLWRpc2FibGUtb3BlbmpwZWcsb3BlbmpwZWciCi1QQUNLQUdFQ09ORklHW29wZW5tcHRdICAgICAgICAgPSAiLS1lbmFibGUtb3Blbm1wdCwtLWRpc2FibGUtb3Blbm1wdCxsaWJvcGVubXB0IgotIyB0aGUgb3B1cyBlbmNvZGVyL2RlY29kZXIgZWxlbWVudHMgYXJlIG5vdyBpbiB0aGUgLWJhc2UgcGFja2FnZSwKLSMgYnV0IHRoZSBvcHVzIHBhcnNlciByZW1haW5zIGluIC1iYWQKLVBBQ0tBR0VDT05GSUdbb3B1c3BhcnNlXSAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCi1QQUNLQUdFQ09ORklHW3Jlc2luZHZkXSAgICAgICAgPSAiLS1lbmFibGUtcmVzaW5kdmQsLS1kaXNhYmxlLXJlc2luZHZkLGxpYmR2ZHJlYWQgbGliZHZkbmF2IgotUEFDS0FHRUNPTkZJR1tyc3ZnXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJzdmcsLS1kaXNhYmxlLXJzdmcsbGlicnN2ZyIKLVBBQ0tBR0VDT05GSUdbcnRtcF0gICAgICAgICAgICA9ICItLWVuYWJsZS1ydG1wLC0tZGlzYWJsZS1ydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tzYmNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLXNiYywtLWRpc2FibGUtc2JjLHNiYyIKLVBBQ0tBR0VDT05GSUdbc2N0cF0gICAgICAgICAgICA9ICItLWVuYWJsZS1zY3RwLC0tZGlzYWJsZS1zY3RwLHVzcnNjdHAiCi1QQUNLQUdFQ09ORklHW3Ntb290aHN0cmVhbWluZ10gPSAiLS1lbmFibGUtc21vb3Roc3RyZWFtaW5nLC0tZGlzYWJsZS1zbW9vdGhzdHJlYW1pbmcsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbc25kZmlsZV0gICAgICAgICA9ICItLWVuYWJsZS1zbmRmaWxlLC0tZGlzYWJsZS1zbmRmaWxlLGxpYnNuZGZpbGUxIgotUEFDS0FHRUNPTkZJR1tzcnRwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXNydHAsLS1kaXNhYmxlLXNydHAsbGlic3J0cCIKLVBBQ0tBR0VDT05GSUdbdGlueWFsc2FdICAgICAgICA9ICItLWVuYWJsZS10aW55YWxzYSwtLWRpc2FibGUtdGlueWFsc2EsdGlueWFsc2EiCi1QQUNLQUdFQ09ORklHW3R0bWxdICAgICAgICAgICAgPSAiLS1lbmFibGUtdHRtbCwtLWRpc2FibGUtdHRtbCxsaWJ4bWwyIHBhbmdvIGNhaXJvIgotUEFDS0FHRUNPTkZJR1t1dmNoMjY0XSAgICAgICAgID0gIi0tZW5hYmxlLXV2Y2gyNjQsLS1kaXNhYmxlLXV2Y2gyNjQsbGlidXNiMSBsaWJndWRldiIKLVBBQ0tBR0VDT05GSUdbdm9hYWNlbmNdICAgICAgICA9ICItLWVuYWJsZS12b2FhY2VuYywtLWRpc2FibGUtdm9hYWNlbmMsdm8tYWFjZW5jIgotUEFDS0FHRUNPTkZJR1t2b2FtcndiZW5jXSAgICAgID0gIi0tZW5hYmxlLXZvYW1yd2JlbmMsLS1kaXNhYmxlLXZvYW1yd2JlbmMsdm8tYW1yd2JlbmMiCi1QQUNLQUdFQ09ORklHW3Z1bGthbl0gICAgICAgICAgPSAiLS1lbmFibGUtdnVsa2FuLC0tZGlzYWJsZS12dWxrYW4sdnVsa2FuLWxvYWRlciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgotUEFDS0FHRUNPTkZJR1t3ZWJwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXdlYnAsLS1kaXNhYmxlLXdlYnAsbGlid2VicCIKLVBBQ0tBR0VDT05GSUdbd2VicnRjXSAgICAgICAgICA9ICItLWVuYWJsZS13ZWJydGMsLS1kaXNhYmxlLXdlYnJ0YyxsaWJuaWNlIgotUEFDS0FHRUNPTkZJR1t3ZWJydGNkc3BdICAgICAgID0gIi0tZW5hYmxlLXdlYnJ0Y2RzcCwtLWRpc2FibGUtd2VicnRjZHNwLHdlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nIgotCi0jIHRoZXNlIHBsdWdpbnMgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGxpYnJhcnkgaW4gT0UtY29yZSBvciBtZXRhLW9wZW5lbWJlZGRlZDoKLSMgICBvcGVubmkyIHdpbmtzIGRpcmVjdDNkIGRpcmVjdHNvdW5kIHdpbnNjcmVlbmNhcCBhcHBsZV9tZWRpYSBpcWEKLSMgICBhbmRyb2lkX21lZGlhIGF2YyBiczJiIGNocm9tYXByaW50IGR0cyBmZGthYWMgZ21lIGdzbSBrYXRlIGxhZHNwYQotIyAgIGx2MiBtcGVnMmVuYyBtcGxleCBtdXNlcGFjayBudmVuYyBvZmEgb3BlbnNsZXMgc291bmR0b3VjaAotIyAgIHNwYW5kc3AgdGVsZXRleHRkZWMgdmRwYXUgd2FzYXBpIHdwZSB4MjY1IHpiYXIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZW5hYmxlLWRlY2tsaW5rIFwKLSAgICAtLWVuYWJsZS1kdmIgXAotICAgIC0tZW5hYmxlLWZiZGV2IFwKLSAgICAtLWVuYWJsZS1pcGNwaXBlbGluZSBcCi0gICAgLS1lbmFibGUtbmV0c2ltIFwKLSAgICAtLWVuYWJsZS1zaG0gXAotICAgIC0tZGlzYWJsZS1hbmRyb2lkX21lZGlhIFwKLSAgICAtLWRpc2FibGUtYW9tIFwKLSAgICAtLWRpc2FibGUtYXBwbGVfbWVkaWEgXAotICAgIC0tZGlzYWJsZS1hdmMgXAotICAgIC0tZGlzYWJsZS1iczJiIFwKLSAgICAtLWRpc2FibGUtY2hyb21hcHJpbnQgXAotICAgIC0tZGlzYWJsZS1kaXJlY3QzZCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdHNvdW5kIFwKLSAgICAtLWRpc2FibGUtZHRzIFwKLSAgICAtLWRpc2FibGUtZmRrX2FhYyBcCi0gICAgLS1kaXNhYmxlLWdtZSBcCi0gICAgLS1kaXNhYmxlLWdzbSBcCi0gICAgLS1kaXNhYmxlLWlxYSBcCi0gICAgLS1kaXNhYmxlLWthdGUgXAotICAgIC0tZGlzYWJsZS1sYWRzcGEgXAotICAgIC0tZGlzYWJsZS1sdjIgXAotICAgIC0tZGlzYWJsZS1tcGVnMmVuYyBcCi0gICAgLS1kaXNhYmxlLW1wbGV4IFwKLSAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAotICAgIC0tZGlzYWJsZS1udmVuYyBcCi0gICAgLS1kaXNhYmxlLW9mYSBcCi0gICAgLS1kaXNhYmxlLW9wZW5leHIgXAotICAgIC0tZGlzYWJsZS1vcGVubmkyIFwKLSAgICAtLWRpc2FibGUtb3BlbnNsZXMgXAotICAgIC0tZGlzYWJsZS1zb3VuZHRvdWNoIFwKLSAgICAtLWRpc2FibGUtc3BhbmRzcCBcCi0gICAgLS1kaXNhYmxlLXNydCBcCi0gICAgLS1kaXNhYmxlLXRlbGV0ZXh0ZGVjIFwKLSAgICAtLWRpc2FibGUtdmRwYXUgXAotICAgIC0tZGlzYWJsZS13YXNhcGkgXAotICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCi0gICAgLS1kaXNhYmxlLXdpbmtzIFwKLSAgICAtLWRpc2FibGUtd2luc2NyZWVuY2FwIFwKLSAgICAtLWRpc2FibGUtd3BlIFwKLSAgICAtLWRpc2FibGUteDI2NSBcCi0gICAgLS1kaXNhYmxlLXpiYXIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS1kaXNhYmxlLXlhZGlmIiwgIiIsIGQpfSBcCi0iCi0KLWV4cG9ydCBPUEVOQ1ZfUFJFRklYID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RGcmVldmVyYi5wcnMiCi1GSUxFU18ke1BOfS1vcGVuY3YgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFkLyR7TElCVn0vb3BlbmN2KiIKLUZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMjI3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMTQ3IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWNvbW1vbi5pbmMKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKKyAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAorICAgIGZpbGU6Ly9vcGVuY3YtcmVzb2x2ZS1taXNzaW5nLW9wZW5jdi1kYXRhLWRpci1pbi15b2N0by1idWlsLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjY2M3NDA0MjMwYWZkZGVjNzIzYmJkYjYzYzg5ZmVlYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWNiN2FhMjM4OTU2OWE1MzQzNjYxYWFlNDczZjBhOTQwYTkwYjg3MjAwMTgyNGJjNDdmYTgwNzJhMDQxZTc0IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitpbmhlcml0IGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0dTVFJFQU1FUl9PUkN9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiIHZ1bGthbicsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdnbCcsICcnLCBkKX0gXAorICAgIGJ6MiBjbG9zZWRjYXB0aW9uIGN1cmwgZGFzaCBkdGxzIGhscyByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSBcCisgICAgdHRtbCB1dmNoMjY0IHdlYnAgXAorIgorCitQQUNLQUdFQ09ORklHW2Fzc3JlbmRlcl0gICAgICAgPSAiLURhc3NyZW5kZXI9ZW5hYmxlZCwtRGFzc3JlbmRlcj1kaXNhYmxlZCxsaWJhc3MiCitQQUNLQUdFQ09ORklHW2JsdWV6XSAgICAgICAgICAgPSAiLURibHVlej1lbmFibGVkLC1EYmx1ZXo9ZGlzYWJsZWQsYmx1ZXo1IgorUEFDS0FHRUNPTkZJR1tiejJdICAgICAgICAgICAgID0gIi1EYnoyPWVuYWJsZWQsLURiejI9ZGlzYWJsZWQsYnppcDIiCitQQUNLQUdFQ09ORklHW2Nsb3NlZGNhcHRpb25dICAgPSAiLURjbG9zZWRjYXB0aW9uPWVuYWJsZWQsLURjbG9zZWRjYXB0aW9uPWRpc2FibGVkLHBhbmdvIGNhaXJvIgorUEFDS0FHRUNPTkZJR1tjdXJsXSAgICAgICAgICAgID0gIi1EY3VybD1lbmFibGVkLC1EY3VybD1kaXNhYmxlZCxjdXJsIgorUEFDS0FHRUNPTkZJR1tkYXNoXSAgICAgICAgICAgID0gIi1EZGFzaD1lbmFibGVkLC1EZGFzaD1kaXNhYmxlZCxsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tkYzEzOTRdICAgICAgICAgID0gIi1EZGMxMzk0PWVuYWJsZWQsLURkYzEzOTQ9ZGlzYWJsZWQsbGliZGMxMzk0IgorUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICAgICAgID0gIi1EZGlyZWN0ZmI9ZW5hYmxlZCwtRGRpcmVjdGZiPWRpc2FibGVkLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1tkdGxzXSAgICAgICAgICAgID0gIi1EZHRscz1lbmFibGVkLC1EZHRscz1kaXNhYmxlZCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tmYWFjXSAgICAgICAgICAgID0gIi1EZmFhYz1lbmFibGVkLC1EZmFhYz1kaXNhYmxlZCxmYWFjIgorUEFDS0FHRUNPTkZJR1tmYWFkXSAgICAgICAgICAgID0gIi1EZmFhZD1lbmFibGVkLC1EZmFhZD1kaXNhYmxlZCxmYWFkMiIKK1BBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gICAgICA9ICItRGZsdWlkc3ludGg9ZW5hYmxlZCwtRGZsdWlkc3ludGg9ZGlzYWJsZWQsZmx1aWRzeW50aCIKK1BBQ0tBR0VDT05GSUdbaGxzXSAgICAgICAgICAgICA9ICItRGhscz1lbmFibGVkIC1EaGxzLWNyeXB0bz1uZXR0bGUsLURobHM9ZGlzYWJsZWQsbmV0dGxlIgorIyB0aGUgZ2wgcGFja2FnZWNvbmZpZyBlbmFibGVzIE9wZW5HTCBlbGVtZW50cyB0aGF0IGhhdmVuJ3QgYmVlbiBwb3J0ZWQKKyMgdG8gLWJhc2UgeWV0LiBUaGV5IGRlcGVuZCBvbiB0aGUgZ3N0Z2wgbGlicmFyeSBpbiAtYmFzZSwgc28gd2UgZG8KKyMgbm90IGFkZCBHTCBkZXBlbmRlbmNpZXMgaGVyZSwgc2luY2UgdGhlc2UgYXJlIHRha2VuIGNhcmUgb2YgaW4gLWJhc2UuCitQQUNLQUdFQ09ORklHW2dsXSAgICAgICAgICAgICAgPSAiLURnbD1lbmFibGVkLC1EZ2w9ZGlzYWJsZWQsIgorUEFDS0FHRUNPTkZJR1trbXNdICAgICAgICAgICAgID0gIi1Ea21zPWVuYWJsZWQsLURrbXM9ZGlzYWJsZWQsbGliZHJtIgorUEFDS0FHRUNPTkZJR1tsaWJkZTI2NV0gICAgICAgID0gIi1EbGliZGUyNjU9ZW5hYmxlZCwtRGxpYmRlMjY1PWRpc2FibGVkLGxpYmRlMjY1IgorUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi1EbGlibW1zPWVuYWJsZWQsLURsaWJtbXM9ZGlzYWJsZWQsbGlibW1zIgorUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSAgICAgICAgID0gIi1EY3VybC1zc2gyPWVuYWJsZWQsLURjdXJsLXNzaDI9ZGlzYWJsZWQsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbGNtczJdICAgICAgICAgICA9ICItRGNvbG9ybWFuYWdlbWVudD1lbmFibGVkLC1EY29sb3JtYW5hZ2VtZW50PWRpc2FibGVkLGxjbXMiCitQQUNLQUdFQ09ORklHW21vZHBsdWddICAgICAgICAgPSAiLURtb2RwbHVnPWVuYWJsZWQsLURtb2RwbHVnPWRpc2FibGVkLGxpYm1vZHBsdWciCitQQUNLQUdFQ09ORklHW21zZGtdICAgICAgICAgICAgPSAiLURtc2RrPWVuYWJsZWQsLURtc2RrPWRpc2FibGVkLGludGVsLW1lZGlhc2RrIgorUEFDS0FHRUNPTkZJR1tuZW9uXSAgICAgICAgICAgID0gIi1EbmVvbj1lbmFibGVkLC1EbmVvbj1kaXNhYmxlZCxuZW9uIgorUEFDS0FHRUNPTkZJR1tvcGVuYWxdICAgICAgICAgID0gIi1Eb3BlbmFsPWVuYWJsZWQsLURvcGVuYWw9ZGlzYWJsZWQsb3BlbmFsLXNvZnQiCitQQUNLQUdFQ09ORklHW29wZW5jdl0gICAgICAgICAgPSAiLURvcGVuY3Y9ZW5hYmxlZCwtRG9wZW5jdj1kaXNhYmxlZCxvcGVuY3YiCitQQUNLQUdFQ09ORklHW29wZW5oMjY0XSAgICAgICAgPSAiLURvcGVuaDI2ND1lbmFibGVkLC1Eb3BlbmgyNjQ9ZGlzYWJsZWQsb3BlbmgyNjQiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSAgICAgICAgPSAiLURvcGVuanBlZz1lbmFibGVkLC1Eb3BlbmpwZWc9ZGlzYWJsZWQsb3BlbmpwZWciCitQQUNLQUdFQ09ORklHW29wZW5tcHRdICAgICAgICAgPSAiLURvcGVubXB0PWVuYWJsZWQsLURvcGVubXB0PWRpc2FibGVkLGxpYm9wZW5tcHQiCisjIHRoZSBvcHVzIGVuY29kZXIvZGVjb2RlciBlbGVtZW50cyBhcmUgbm93IGluIHRoZSAtYmFzZSBwYWNrYWdlLAorIyBidXQgdGhlIG9wdXMgcGFyc2VyIHJlbWFpbnMgaW4gLWJhZAorUEFDS0FHRUNPTkZJR1tvcHVzcGFyc2VdICAgICAgID0gIi1Eb3B1cz1lbmFibGVkLC1Eb3B1cz1kaXNhYmxlZCxsaWJvcHVzIgorUEFDS0FHRUNPTkZJR1tyZXNpbmR2ZF0gICAgICAgID0gIi1EcmVzaW5kdmQ9ZW5hYmxlZCwtRHJlc2luZHZkPWRpc2FibGVkLGxpYmR2ZHJlYWQgbGliZHZkbmF2IgorUEFDS0FHRUNPTkZJR1tyc3ZnXSAgICAgICAgICAgID0gIi1EcnN2Zz1lbmFibGVkLC1EcnN2Zz1kaXNhYmxlZCxsaWJyc3ZnIgorUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi1EcnRtcD1lbmFibGVkLC1EcnRtcD1kaXNhYmxlZCxydG1wZHVtcCIKK1BBQ0tBR0VDT05GSUdbc2JjXSAgICAgICAgICAgICA9ICItRHNiYz1lbmFibGVkLC1Ec2JjPWRpc2FibGVkLHNiYyIKK1BBQ0tBR0VDT05GSUdbc2N0cF0gICAgICAgICAgICA9ICItRHNjdHA9ZW5hYmxlZCwtRHNjdHA9ZGlzYWJsZWQsdXNyc2N0cCIKK1BBQ0tBR0VDT05GSUdbc21vb3Roc3RyZWFtaW5nXSA9ICItRHNtb290aHN0cmVhbWluZz1lbmFibGVkLC1Ec21vb3Roc3RyZWFtaW5nPWRpc2FibGVkLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3NuZGZpbGVdICAgICAgICAgPSAiLURzbmRmaWxlPWVuYWJsZWQsLURzbmRmaWxlPWRpc2FibGVkLGxpYnNuZGZpbGUxIgorUEFDS0FHRUNPTkZJR1tzcnRwXSAgICAgICAgICAgID0gIi1Ec3J0cD1lbmFibGVkLC1Ec3J0cD1kaXNhYmxlZCxsaWJzcnRwIgorUEFDS0FHRUNPTkZJR1t0aW55YWxzYV0gICAgICAgID0gIi1EdGlueWFsc2E9ZW5hYmxlZCwtRHRpbnlhbHNhPWRpc2FibGVkLHRpbnlhbHNhIgorUEFDS0FHRUNPTkZJR1t0dG1sXSAgICAgICAgICAgID0gIi1EdHRtbD1lbmFibGVkLC1EdHRtbD1kaXNhYmxlZCxsaWJ4bWwyIHBhbmdvIGNhaXJvIgorUEFDS0FHRUNPTkZJR1t1dmNoMjY0XSAgICAgICAgID0gIi1EdXZjaDI2ND1lbmFibGVkLC1EdXZjaDI2ND1kaXNhYmxlZCxsaWJ1c2IxIGxpYmd1ZGV2IgorUEFDS0FHRUNPTkZJR1t2b2FhY2VuY10gICAgICAgID0gIi1Edm9hYWNlbmM9ZW5hYmxlZCwtRHZvYWFjZW5jPWRpc2FibGVkLHZvLWFhY2VuYyIKK1BBQ0tBR0VDT05GSUdbdm9hbXJ3YmVuY10gICAgICA9ICItRHZvYW1yd2JlbmM9ZW5hYmxlZCwtRHZvYW1yd2JlbmM9ZGlzYWJsZWQsdm8tYW1yd2JlbmMiCitQQUNLQUdFQ09ORklHW3Z1bGthbl0gICAgICAgICAgPSAiLUR2dWxrYW49ZW5hYmxlZCwtRHZ1bGthbj1kaXNhYmxlZCx2dWxrYW4tbG9hZGVyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgICAgID0gIi1Ed2F5bGFuZD1lbmFibGVkLC1Ed2F5bGFuZD1kaXNhYmxlZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbd2VicF0gICAgICAgICAgICA9ICItRHdlYnA9ZW5hYmxlZCwtRHdlYnA9ZGlzYWJsZWQsbGlid2VicCIKK1BBQ0tBR0VDT05GSUdbd2VicnRjXSAgICAgICAgICA9ICItRHdlYnJ0Yz1lbmFibGVkLC1Ed2VicnRjPWRpc2FibGVkLGxpYm5pY2UiCitQQUNLQUdFQ09ORklHW3dlYnJ0Y2RzcF0gICAgICAgPSAiLUR3ZWJydGNkc3A9ZW5hYmxlZCwtRHdlYnJ0Y2RzcD1kaXNhYmxlZCx3ZWJydGMtYXVkaW8tcHJvY2Vzc2luZyIKK1BBQ0tBR0VDT05GSUdbemJhcl0gICAgICAgICAgICA9ICItRHpiYXI9ZW5hYmxlZCwtRHpiYXI9ZGlzYWJsZWQsemJhciIKKworIyB0aGVzZSBwbHVnaW5zIGN1cnJlbnRseSBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBpbiBPRS1jb3JlIG9yIG1ldGEtb3BlbmVtYmVkZGVkOgorIyAgIGFvbSBhbmRyb2lkbWVkaWEgYXBwbGVtZWRpYSBiczJiIGNocm9tYXByaW50IGQzZHZpZGVvc2luaworIyAgIGRpcmVjdHNvdW5kIGR0cyBmZGthYWMgZ21lIGdzbSBpcSBrYXRlIGxhZHNwYSBsdjIgbXBlZzJlbmMKKyMgICBtcGxleCBtdXNlcGFjayBudmRlYyBudmVuYyBvZmEgb3BlbmV4ciBvcGVubmkyIG9wZW5zbGVzCisjICAgc291bmR0b3VjaCBzcGFuZHNwIHNydCB0ZWxldGV4dCB2ZHBhdSB3YXNhcGkgd2lsZG1pZGkgd2lua3MKKyMgICB3aW5zY3JlZW5jYXAgd3BlIHgyNjUKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGRlY2tsaW5rPWVuYWJsZWQgXAorICAgIC1EZHZiPWVuYWJsZWQgXAorICAgIC1EZmJkZXY9ZW5hYmxlZCBcCisgICAgLURpcGNwaXBlbGluZT1lbmFibGVkIFwKKyAgICAtRG5ldHNpbT1lbmFibGVkIFwKKyAgICAtRHNobT1lbmFibGVkIFwKKyAgICAtRGFvbT1kaXNhYmxlZCBcCisgICAgLURhbmRyb2lkbWVkaWE9ZGlzYWJsZWQgXAorICAgIC1EYXBwbGVtZWRpYT1kaXNhYmxlZCBcCisgICAgLURiczJiPWRpc2FibGVkIFwKKyAgICAtRGNocm9tYXByaW50PWRpc2FibGVkIFwKKyAgICAtRGQzZHZpZGVvc2luaz1kaXNhYmxlZCBcCisgICAgLURkaXJlY3Rzb3VuZD1kaXNhYmxlZCBcCisgICAgLURkdHM9ZGlzYWJsZWQgXAorICAgIC1EZmRrYWFjPWRpc2FibGVkIFwKKyAgICAtRGZsaXRlPWRpc2FibGVkIFwKKyAgICAtRGdtZT1kaXNhYmxlZCBcCisgICAgLURnc209ZGlzYWJsZWQgXAorICAgIC1EaXFhPWRpc2FibGVkIFwKKyAgICAtRGthdGU9ZGlzYWJsZWQgXAorICAgIC1EbGFkc3BhPWRpc2FibGVkIFwKKyAgICAtRGx2Mj1kaXNhYmxlZCBcCisgICAgLURtcGVnMmVuYz1kaXNhYmxlZCBcCisgICAgLURtcGxleD1kaXNhYmxlZCBcCisgICAgLURtdXNlcGFjaz1kaXNhYmxlZCBcCisgICAgLURudmRlYz1kaXNhYmxlZCBcCisgICAgLURudmVuYz1kaXNhYmxlZCBcCisgICAgLURvZmE9ZGlzYWJsZWQgXAorICAgIC1Eb3BlbmV4cj1kaXNhYmxlZCBcCisgICAgLURvcGVubmkyPWRpc2FibGVkIFwKKyAgICAtRG9wZW5zbGVzPWRpc2FibGVkIFwKKyAgICAtRHNvdW5kdG91Y2g9ZGlzYWJsZWQgXAorICAgIC1Ec3BhbmRzcD1kaXNhYmxlZCBcCisgICAgLURzcnQ9ZGlzYWJsZWQgXAorICAgIC1EdGVsZXRleHQ9ZGlzYWJsZWQgXAorICAgIC1EdmRwYXU9ZGlzYWJsZWQgXAorICAgIC1Ed2FzYXBpPWRpc2FibGVkIFwKKyAgICAtRHdpbGRtaWRpPWRpc2FibGVkIFwKKyAgICAtRHdpbmtzPWRpc2FibGVkIFwKKyAgICAtRHdpbnNjcmVlbmNhcD1kaXNhYmxlZCBcCisgICAgLUR3cGU9ZGlzYWJsZWQgXAorICAgIC1EeDI2NT1kaXNhYmxlZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItRHlhZGlmPWRpc2FibGVkIiwgIiIsIGQpfSBcCisiCisKK2V4cG9ydCBPUEVOQ1ZfUFJFRklYID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdEZyZWV2ZXJiLnBycyIKK0ZJTEVTXyR7UE59LW9wZW5jdiArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYWQvMS4wL29wZW5jdioiCitGSUxFU18ke1BOfS12b2FtcndiZW5jICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTFkYzE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDYxYTY3MmU3OWM4Y2IxYWVlZWRhNGM5Njg5OTdjNTc3YWM3M2E4ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTIgTWF5IDIwMTcgMTY6NDc6MTIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyLWdsLnBjLmluOiBkb24ndCBhcHBlbmQgR0xfQ0ZMQUdTIHRvIENGTEFHUwotCi1EZXBlbmRlbmNpZXMnIGluY2x1ZGUgZGlyZWN0b3JpZXMgc2hvdWxkIG5vdCBiZSBhZGRlZCBpbiB0aGlzIHdheTsKLWl0IGNhdXNlcyBwcm9ibGVtcyB3aGVuIGNyb3NzLWNvbXBpbGluZyBpbiBzeXNyb290IGVudmlyb25tZW50cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBwa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLWluZGV4IGRjNjcyYTkuLjhjMjkwYmEgMTAwNjQ0Ci0tLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi0rKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi1AQCAtMTMsNCArMTMsNCBAQCBWZXJzaW9uOiBAVkVSU0lPTkAKLSBSZXF1aXJlczogZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotIAotIExpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKLS1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZSBAR0xfQ0ZMQUdTQAotK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlhYjQ3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMzA2NzJiYTdkMTM0NTUzZTU5OTM1ZGRjODc1MTA0YWRiYTI2ZjI1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9UaW0tUGhpbGlwcD0yME09QzM9QkNsbGVyPz0gPHRpbUBjZW50cmljdWxhci5jb20+CitEYXRlOiBUaHUsIDE3IE9jdCAyMDE5IDIwOjA2OjI0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBidWlsZCBnaXIgZXZlbiB3aGVuIGNyb3NzLWNvbXBpbGluZyBpZiBpbnRyb3NwZWN0aW9uCisgd2FzIGVuYWJsZWQgZXhwbGljaXRseQorCitUaGlzIGNhbiBiZSBtYWRlIHRvIHdvcmsgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIHdoZW4KK2Nyb3NzLWNvbXBpbGluZywgc28gZGVmYXVsdCB0byBub3QgYnVpbGRpbmcgZy1pIHN0dWZmCit3aGVuIGNyb3NzLWNvbXBpbGluZywgYnV0IGFsbG93IGl0IGlmIGludHJvc3BlY3Rpb24gd2FzCitlbmFibGVkIGV4cGxpY2l0bHkgdmlhIC1EaW50cm9zcGVjdGlvbj1lbmFibGVkLgorCitTZWUgZ3N0cmVhbWVyL2dzdHJlYW1lciM0NTQgYW5kIGdzdHJlYW1lci9nc3RyZWFtZXIjMzgxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFszMDY3MmJhN2QxMzQ1NTNlNTk5MzVkZGM4NzUxMDRhZGJhMjZmMjVjXQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAyNjRkODRjOWUuLmM4MTQ3YzIyNCAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTM3Miw3ICszNzIsNyBAQCBlbmRpZgorIAorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV9ESVNBQkxFIiwgInllcyIsIFRSVUUpOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZXzEuMCIsICJAMEAiLCBUUlVFKTsnLmZvcm1hdChtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpICsgJy9naXJfZW1wdHlfcmVnaXN0cnkucmVnJykgKyBcCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGNiZmI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLUZyb20gOTYwMWZjMGNkNjc1MWExYWZmZGM4NzE3MjE3Yjk1OTMxZGIzMWQ3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA1IEFwciAyMDE4IDEwOjI2OjI1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBwcmVmaXggY2FsbHMgdG8gcGtnLWNvbmZpZyB3aXRoCi0gUEtHX0NPTkZJR19TWVNST09UX0RJUgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotCi0tLS0KLSBnc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtICAgICAgICB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0gICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSAgICAgICAgIHwgIDggKysrKy0tLS0KLSBnc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbSAgICB8IDEyICsrKysrKy0tLS0tLQotIGdzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtICAgICAgIHwgIDggKysrKy0tLS0KLSBnc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtICAgICAgICB8ICA4ICsrKystLS0tCi0gZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gICAgICAgfCAgNCArKy0tCi0gZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbSAgICAgICAgfCAgNCArKy0tCi0gZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbSAgICAgICAgfCAgOCArKysrLS0tLQotIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSAgICAgIHwgIDggKysrKy0tLS0KLSAxMSBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLWluZGV4IDFlY2M5NTAuLmQ2NDE3YWMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLUBAIC0zOSw3ICszOSw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACi0gCQktLWMtaW5jbHVkZSAiZ3N0L2FsbG9jYXRvcnMvYWxsb2NhdG9ycy5oIiBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0YWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tbGlidG9vbD0iJHtMSUJUT09MfSIgXAotQEAgLTYzLDcgKzYzLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotaW5kZXggNWJmZDYwNi4uNjQ0MTY3NCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC01MSw4ICs1MSw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCi0gCQktLWMtaW5jbHVkZSAiZ3N0L2FwcC9hcHAuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLWluZGV4IDdmYjY1ZjIuLjUzNzlmNzkgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotQEAgLTE3NiwxMiArMTc2LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGF1ZGlvLUBHU1RfQVBJX1ZFCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotIAkJLS1jLWluY2x1ZGUgImdzdC9hdWRpby9hdWRpby5oIiBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWxpYnJhcnk9bGliZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAotLQkJLS1saWJyYXJ5LXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tbGlicmFyeS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tbGlicmFyeS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1saWJyYXJ5LXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTIxMCw4ICsyMTAsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotaW5kZXggMzI3NmQ3Zi4uMGNkZmUyNiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1AQCAtMjA5LDkgKzIwOSw5IEBAIEdzdEdMLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ACi0gCQkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0gCQkkKEdMX0NGTEFHUykgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3ZpZGVvLyIgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC0yNDEsOCArMjQxLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3ZpZGVvLyIgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLWluZGV4IDM1YTZlNDQuLjQ5ZDY4OTQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLUBAIC04OCwxNCArODgsMTQgQEAgR3N0UGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwYnV0aWxzLUBHU1RfQVAKLSAJCS0tYy1pbmNsdWRlICJnc3QvcGJ1dGlscy9wYnV0aWxzLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi0gCQktLWxpYnJhcnk9bGliZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0tCQktLWxpYnJhcnktcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1saWJyYXJ5LXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1saWJyYXJ5LXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWxpYnJhcnktcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLUBAIC0xMjgsOCArMTI4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotaW5kZXggZTY2ZWY0Zi4uYzhjNTg4YSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotQEAgLTQzLDggKzQzLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQotICMJCS0tYy1pbmNsdWRlICJnc3QvcmlmZi9yaWZmLmgiIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vdGFnIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vYXVkaW8gXAotLSMJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLSMJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKyMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotICMJCS0tbGlicmFyeT1saWJnc3RyaWZmLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAjCQktLWluY2x1ZGU9R3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotICMJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTc1LDggKzc1LDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQotICMJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0gIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL3RhZyBcCi0gIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKLS0jCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0jCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKyMJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsjCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAjCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAjCi0gI0NMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotaW5kZXggNzdlYmVlYi4uOWFlZTc4OCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02Niw4ICs2Niw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3J0cC9ydHAuaCIgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC05NCw4ICs5NCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLWluZGV4IGRiOWQwZmQuLjc5MDI3Y2IgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC03MSw4ICs3MSw4IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3NkcCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RydHNwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1HaW8tMi4wIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi1pbmRleCA2ZTA1Y2M3Li5jN2NmNTE0IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotQEAgLTMxLDcgKzMxLDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU8KLSAJCS0td2Fybi1hbGwgXAotIAkJLS1jLWluY2x1ZGUgImdzdC9zZHAvc2RwLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWxpYnRvb2w9IiR7TElCVE9PTH0iIFwKLUBAIC01NSw3ICs1NSw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLWluZGV4IGM4NjUxNWIuLjM2M2U2ZDIgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1AQCAtNjEsOCArNjEsOCBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJTwotIAkJLS1jLWluY2x1ZGUgImdzdC90YWcvdGFnLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtODksOCArODksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCi0gCi0gQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLWluZGV4IDBmODQ1NWYuLjhjOTk1NWMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotQEAgLTEyNCw4ICsxMjQsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQotIAkJLS1jLWluY2x1ZGUgImdzdC92aWRlby92aWRlby5oIiBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMTUyLDggKzE1Miw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1tZXNvbi1BZGQtdmFyaWFibGVzLWZvci1naXItZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E4NTc0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1tZXNvbi1BZGQtdmFyaWFibGVzLWZvci1naXItZmlsZXMucGF0Y2gKQEAgLTAsMCArMSwyMzUgQEAKK0Zyb20gNjg1NzMxZTk4OWRjMDc0YTRiMGQ0OGI2YzgwNjJlMjczOGYwOTcxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+CitEYXRlOiBNb24sIDIyIE9jdCAyMDE4IDExOjQ0OjM3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgdmFyaWFibGVzIGZvciBnaXIgZmlsZXMKKworQW5kIGZsYXR0ZW4gbGlzdCBvZiBzb3VyY2VzIGZvciBkZXBlbmRlbmNpZXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbNjg1NzMxZTk4OWRjMDc0YTRiMGQ0OGI2YzgwNjJlMjczOGYwOTcxOV0KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIGdzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkIHwgNSArKystLQorIGdzdC1saWJzL2dzdC9hcHAvbWVzb24uYnVpbGQgICAgICAgIHwgNiArKysrLS0KKyBnc3QtbGlicy9nc3QvYXVkaW8vbWVzb24uYnVpbGQgICAgICB8IDUgKysrLS0KKyBnc3QtbGlicy9nc3QvcGJ1dGlscy9tZXNvbi5idWlsZCAgICB8IDUgKysrLS0KKyBnc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkICAgICAgICB8IDYgKysrKy0tCisgZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQgICAgICAgfCA1ICsrKy0tCisgZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZCAgICAgICAgfCA2ICsrKystLQorIGdzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQgICAgICAgIHwgNSArKystLQorIGdzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZCAgICAgIHwgNSArKystLQorIDkgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkCitpbmRleCAzNjRiYWVlYmYuLjU2ZjE1NmRjMyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9tZXNvbi5idWlsZAorQEAgLTIyLDcgKzIyLDcgQEAgZ3N0YWxsb2NhdG9ycyA9IGxpYnJhcnkoJ2dzdGFsbG9jYXRvcnMtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIGFsbG9jYXRvcnNfZ2VuX3NvdXJjZXMgID0gW10KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgnIF0KKy0gIGFsbG9jYXRvcnNfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RhbGxvY2F0b3JzLAorKyAgYWxsb2NhdG9yc19naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0YWxsb2NhdG9ycywKKyAgICAgc291cmNlcyA6IGdzdF9hbGxvY2F0b3JzX3NvdXJjZXMgKyBnc3RfYWxsb2NhdG9yc19oZWFkZXJzLAorICAgICBuYW1lc3BhY2UgOiAnR3N0QWxsb2NhdG9ycycsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTMzLDcgKzMzLDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBbZ3N0X2RlcF0KKy0gICldCisrICApCisrICBhbGxvY2F0b3JzX2dlbl9zb3VyY2VzICs9IGFsbG9jYXRvcnNfZ2lyCisgZW5kaWYKKyAKKyBhbGxvY2F0b3JzX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGdzdGFsbG9jYXRvcnMsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9hcHAvbWVzb24uYnVpbGQKK2luZGV4IDgxZGQwZjQyYy4uN2E5MGY1ZTEwIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZAorQEAgLTMyLDcgKzMyLDcgQEAgZ3N0YXBwID0gbGlicmFyeSgnZ3N0YXBwLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyAKKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvYXBwL2FwcC5oJyBdCistICBhcHBfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RhcHAsCisrICBhcHBfZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGFwcCwKKyAgICAgc291cmNlcyA6IGFwcF9zb3VyY2VzICsgYXBwX2hlYWRlcnMgKyBbZ3N0YXBwX2NdICsgW2dzdGFwcF9oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdEFwcCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTQzLDcgKzQzLDkgQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBbZ3N0X2RlcCwgZ3N0X2Jhc2VfZGVwXQorLSAgKV0KKysgICkKKysKKysgIGFwcF9nZW5fc291cmNlcyArPSBhcHBfZ2lyCisgZW5kaWYKKyAKKyBhcHBfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0YXBwLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZAoraW5kZXggMGU0ZWZhYjJlLi4yYTQ0OWQ0YmYgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZAorQEAgLTE1Myw3ICsxNTMsNyBAQCBnc3RhdWRpbyA9IGxpYnJhcnkoJ2dzdGF1ZGlvLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyAKKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvYXVkaW8vYXVkaW8uaCcgXQorLSAgYXVkaW9fZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RhdWRpbywKKysgIGF1ZGlvX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RhdWRpbywKKyAgICAgc291cmNlcyA6IGF1ZGlvX3NyYyArIGF1ZGlvX2hlYWRlcnMgKyBbZ3N0YXVkaW9fY10gKyBbZ3N0YXVkaW9faF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RBdWRpbycsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTE2NCw3ICsxNjQsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdGF1ZGlvX2RlcHMKKy0gICldCisrICApCisrICBhdWRpb19nZW5fc291cmNlcyArPSBbYXVkaW9fZ2lyXQorIGVuZGlmCisgCisgYXVkaW9fZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aCA6IGdzdGF1ZGlvLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQKK2luZGV4IDJmYWY2MjYyMi4uMGU5NjcyMmZkIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9wYnV0aWxzL21lc29uLmJ1aWxkCitAQCAtNjMsNyArNjMsNyBAQCBwYnV0aWxzID0gbGlicmFyeSgnZ3N0cGJ1dGlscy1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgcGJ1dGlsc19nZW5fc291cmNlcyA9IFtnc3RwYnV0aWxzX2gsIGdzdF9wYnV0aWxzX3ZlcnNpb25faF0KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvcGJ1dGlscy9wYnV0aWxzLmgnIF0KKy0gIHBidXRpbHNfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihwYnV0aWxzLAorKyAgcGJ1dGlsc19naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIocGJ1dGlscywKKyAgICAgc291cmNlcyA6IHBidXRpbHNfc291cmNlcyArIHBidXRpbHNfaGVhZGVycyArIFtnc3RwYnV0aWxzX2gsIGdzdF9wYnV0aWxzX3ZlcnNpb25faF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RQYnV0aWxzJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNzQsNyArNzQsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHBidXRpbHNfZGVwcworLSAgKV0KKysgICkKKysgIHBidXRpbHNfZ2VuX3NvdXJjZXMgKz0gW3BidXRpbHNfZ2lyXQorIGVuZGlmCisgCisgcGJ1dGlsc19kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoIDogcGJ1dGlscywKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3J0cC9tZXNvbi5idWlsZAoraW5kZXggZjQ3ZWM2NTkyLi43ZWE2NjU4ZDUgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkCitAQCAtNDksNyArNDksNyBAQCBnc3RfcnRwID0gbGlicmFyeSgnZ3N0cnRwLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyBydHBfZ2VuX3NvdXJjZXMgPSBbZ3N0cnRwX2VudW1faF0KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvcnRwL3J0cC5oJyBdCistICBydHBfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RfcnRwLAorKyAgcnRwX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RfcnRwLAorICAgICBzb3VyY2VzIDogcnRwX3NvdXJjZXMgKyBydHBfaGVhZGVycyArIFtnc3RydHBfZW51bV9jXSArIFtnc3RydHBfZW51bV9oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdFJ0cCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTYwLDcgKzYwLDkgQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBnc3RydHBfZGVwcworLSAgKV0KKysgICkKKysKKysgIHJ0cF9nZW5fc291cmNlcyArPSBbcnRwX2dpcl0KKyBlbmRpZgorIAorIAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQKK2luZGV4IDI3ZTMwOWQ1YS4uMzYzMmFkY2ViIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9ydHNwL21lc29uLmJ1aWxkCitAQCAtNTQsNyArNTQsNyBAQCBnc3RfcnRzcCA9IGxpYnJhcnkoJ2dzdHJ0c3AtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIHJ0c3BfZ2VuX3NvdXJjZXMgPSBbZ3N0cnRzcF9oXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9ydHNwL3J0c3AuaCcgXQorLSAgcnRzcF9nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdF9ydHNwLAorKyAgcnRzcF9naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0X3J0c3AsCisgICAgIHNvdXJjZXMgOiBydHNwX3NvdXJjZXMgKyBydHNwX2hlYWRlcnMgKyBbZ3N0cnRzcF9jXSArIFtnc3RydHNwX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0UnRzcCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTY1LDcgKzY1LDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBnc3RydHNwX2RlcHMgKyBbc2RwX2RlcF0KKy0gICldCisrICApCisrICBydHNwX2dlbl9zb3VyY2VzICs9IFtydHNwX2dpcl0KKyBlbmRpZgorIAorIHJ0c3BfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aCA6IGdzdF9ydHNwLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3Qvc2RwL21lc29uLmJ1aWxkCitpbmRleCA2MmMxOGI3MzIuLjI0Y2RiNTI5MyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQKK0BAIC0yMyw3ICsyMyw3IEBAIGdzdHNkcCA9IGxpYnJhcnkoJ2dzdHNkcC1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgc2RwX2dlbl9zb3VyY2VzICA9IFtdCisgaWYgYnVpbGRfZ2lyCisgICBnc3RfZ2lyX2V4dHJhX2FyZ3MgPSBnaXJfaW5pdF9zZWN0aW9uICsgWyAnLS1jLWluY2x1ZGU9Z3N0L3NkcC9zZHAuaCcgXQorLSAgc2RwX2dlbl9zb3VyY2VzICs9IFtnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0c2RwLAorKyAgc2RwX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RzZHAsCisgICAgIHNvdXJjZXMgOiBnc3Rfc2RwX3NvdXJjZXMgKyBnc3Rfc2RwX2hlYWRlcnMsCisgICAgIG5hbWVzcGFjZSA6ICdHc3RTZHAnLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC0zNCw3ICszNCw5IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogcnRzcF9kZXBzCistICApXQorKyAgKQorKworKyAgc2RwX2dlbl9zb3VyY2VzICs9IFtzZHBfZ2lyXQorIGVuZGlmCisgCisgc2RwX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGdzdHNkcCwKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3RhZy9tZXNvbi5idWlsZAoraW5kZXggMjdlNjZmZDYzLi41ZWMzNzM5MmEgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkCitAQCAtOTMsNyArOTMsNyBAQCBnc3R0YWcgPSBsaWJyYXJ5KCdnc3R0YWctQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC90YWcvdGFnLmgnIF0KKy0gIHRhZ19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHRhZywKKysgIHRhZ19naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0dGFnLAorICAgICBzb3VyY2VzIDogdGFnX3NvdXJjZXMgKyB0YWdfaGVhZGVycyArIFtnc3R0YWdfaF0gKyBbZ3N0dGFnX2NdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0VGFnJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtMTA0LDcgKzEwNCw4IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogdGFnX2RlcHMKKy0gICldCisrICApCisrICB0YWdfZ2VuX3NvdXJjZXMgKz0gW3RhZ19naXJdCisgZW5kaWYKKyAKKyB0YWdfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0dGFnLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZAoraW5kZXggNWIzNWUxOTQzLi5iZjc3YWExNTcgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZAorQEAgLTEzOCw3ICsxMzgsNyBAQCBnc3R2aWRlbyA9IGxpYnJhcnkoJ2dzdHZpZGVvLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyAKKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvdmlkZW8vdmlkZW8uaCcgXQorLSAgdmlkZW9fZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3R2aWRlbywKKysgIHZpZGVvX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3R2aWRlbywKKyAgICAgc291cmNlcyA6IHZpZGVvX3NvdXJjZXMgKyB2aWRlb19oZWFkZXJzICsgW2dzdHZpZGVvX2NdICsgW2dzdHZpZGVvX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0VmlkZW8nLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC0xNDksNyArMTQ5LDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBnc3R2aWRlb19kZXBzCistICApXQorKyAgKQorKyAgdmlkZW9fZ2VuX3NvdXJjZXMgKz0gW3ZpZGVvX2dpcl0KKyBlbmRpZgorIAorIHZpZGVvX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGggOiBnc3R2aWRlbywKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZmZkYjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGI5NzY1ZWZiMTY5NmUzZTJlNzlmMjk1NWY3NTliZTE5OWZlMzQ4ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgT2N0IDIwMTUgMTc6Mjk6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcmlmZjogYWRkIG1pc3NpbmcgaW5jbHVkZSBkaXJlY3RvcmllcyB3aGVuIGNhbGxpbmcKLSBpbnRyb3NwZWN0aW9uIHNjYW5uZXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBtYWlsbGlzdF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBnc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1pbmRleCBjOGM1ODhhLi5jMDk2NDUzIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtNDEsNiArNDEsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCi0gIwkJLS1zdHJpcC1wcmVmaXg9R3N0IFwKLSAjCQktLXdhcm4tYWxsIFwKLSAjCQktLWMtaW5jbHVkZSAiZ3N0L3JpZmYvcmlmZi5oIiBcCi0rIyAgICAgICAgICAgICAgIC1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0rIyAgICAgICAgICAgICAgIC1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vdGFnIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vYXVkaW8gXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YTBkNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1Gcm9tIDUzYjU4Njg0OTFjZjk5ZWU3OTcxOTIzOTVkYmZlYjY5ZGYyM2VkZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgT2N0IDIwMTUgMTc6MzA6MTQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcnRzcDogZHJvcCBpbmNvcnJlY3QgcmVmZXJlbmNlIHRvIGdzdHJlYW1lci1zZHAgaW4KLSBNYWtlZmlsZS5hbQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLWluZGV4IDc5MDI3Y2IuLjI5ODdlMjMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC04Miw3ICs4Miw2IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCi0gCQktLXBrZyBnaW8tMi4wIFwKLSAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi0tCQktLXBrZyBnc3RyZWFtZXItc2RwLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItcnRzcC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWFkZC1pbml0LXNlY3Rpb249IiQoSU5UUk9TUEVDVElPTl9JTklUKSIgXAotIAkJLS1vdXRwdXQgJEAgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmN2MyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gOTg2NmY1MWU1ZTA5MTNmMWU0NTNlYjU3NDYxOGJmNzQzMmYzOGNiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDExIEFwciAyMDE4IDEwOjQ2OjMzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCAtbHZjaG9zdGlmIHRvIGxpbmsgd2hlbiB1c2luZyAtbEVHTCBvbiBycGkKLQotVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGxpYkVHTCBmcm9tIHVzZXJsYW5kIHVzZXMgc3lib2xzCi1mcm9tIHRoaXMgbGlicmFyeS4KLQotbGliL2xpYkVHTC5zby4xLjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0gIDE1NTI6IDAwMDAwMDAwICAgICAwIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgIFVORCB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAotCi1UaGVzZSBzeW1ib2xzIGFyZSBwcm92aWRlZCBieSBsaWJ2Y2hvc3RpZiBhcyBzZWVuIGJlbG93Ci0KLWxpYi9saWJ2Y2hvc3RpZi5zbwotICAgMjUyOiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLSAgIDgwOTogMDAwMGIxNjEgICAxOTIgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgICA5IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0KLVdpdGggdGhpcyBleHBsaWNpdCBsaW5rLCBwbHVnaW5zIGZhaWwgZHVyaW5nIHJ1bnRpbWUKLQotKGdzdC1wbHVnaW4tc2Nhbm5lcjo1NzEpOiBHU3RyZWFtZXItV0FSTklORyAqKjogRmFpbGVkIHRvIGxvYWQgcGx1Z2luICcvdXNyL2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdG9teC5zbyc6IEVycm9yIHJlbG9jYXRpbmcgL3Vzci9saWIvbGliZ3N0Z2wtMS4wLnNvLjA6IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkOiBzeW1ib2wgbm90IGZvdW5kCi0oZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b3BlbmdsLnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIG00L2dzdC1nbC5tNCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL200L2dzdC1nbC5tNCBiL200L2dzdC1nbC5tNAotaW5kZXggMWU5NzI0MC4uYWI3Nzc0YyAxMDA2NDQKLS0tLSBhL200L2dzdC1nbC5tNAotKysrIGIvbTQvZ3N0LWdsLm00Ci1AQCAtMjc1LDcgKzI3NSw3IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0w9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfR0xFUzI9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfRUdMX1JQST15ZXMKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0xJQlM9Ii1sYmNtX2hvc3QgLWx2Y29zIC1sdmNoaXFfYXJtIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjaG9zdGlmIC1sdmNvcyAtbHZjaGlxX2FybSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0NGTEFHUz0iIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoVVNFX0VHTF9SUEksIFsxXSwgW1VzZSBSUGkgcGxhdGZvcm1dKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzOTUwYjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gN2ZmYTZlM2QwMGUxZDhhMDYwZjNmNGMyYmI5YTcyNjkxYWYwNWQ3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEphbiAyMDE2IDEzOjAwOjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ha2UgZ2lvX3VuaXhfMl8wIGRlcGVuZGVuY3kgY29uZmlndXJhYmxlCi0KLVByaW9yIHRvIDEuNy4xLCBnc3QtcGx1Z2lucy1iYXNlIGFjY2VwdGVkIGEgY29uZmlndXJlIG9wdGlvbiB0bwotZGlzYWJsZSBnaW9fdW5peF8yXzAsIGhvd2V2ZXIgaXQgd2FzIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHVzaW5nCi1BR19HU1RfQ0hFQ0tfRkVBVFVSRS4gVGhhdCB3YXMgZml4ZWQgaW4gMS43LjEgYnkgbWFraW5nIHRoZQotZGVwZW5kZW5jeSB1bmNvbmRpdGlvbmFsLgotCi0gIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFzZS9jb21taXQvP2lkPWFhZGVmZWZiYTg4YWZlNGFjYmU2NDQ1NDY1MGYyNGU3Y2U3YzhkNzAKLQotVG8gbWFrZSBidWlsZHMgZGV0ZXJtaW5pc3RpYywgcmUtaW5zdGF0ZSBzdXBwb3J0IGZvcgotLS1kaXNhYmxlLWdpb191bml4XzJfMCwgYnV0IGltcGxlbWVudCBpdCB1c2luZyB0aGUgQUNfQVJHX0VOQUJMRQotaW5zdGVhZCBvZiBBR19HU1RfQ0hFQ0tfRkVBVFVSRS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMTI4MDdiYy4uMzVhMGJmMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODA2LDkgKzgwNiwxNiBAQCBBTV9DT05ESVRJT05BTChIQVZFX1BORywgdGVzdCAieCRIQVZFX1BORyIgPSAieHllcyIpCi0gQU1fQ09ORElUSU9OQUwoSEFWRV9KUEVHLCB0ZXN0ICJ4JEhBVkVfSlBFRyIgPSAieHllcyIpCi0gCi0gZG5sICoqKiBnaW8tdW5peC0yLjAgZm9yIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy90Y3AuYyAqKioKLStBQ19BUkdfRU5BQkxFKFtnaW9fdW5peF8yXzBdLAotKyAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZ2lvX3VuaXhfMl8wXSxbZGlzYWJsZSB1c2Ugb2YgZ2lvX3VuaXhfMl8wXSldLAotKyAgW10sCi0rICBbZW5hYmxlX2dpb191bml4XzJfMD15ZXNdKQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9naW9fdW5peF8yXzB9IiAhPSAieG5vIjsgdGhlbgotIFBLR19DSEVDS19NT0RVTEVTKEdJT19VTklYXzJfMCwgZ2lvLXVuaXgtMi4wID49IDIuMjQsCi0gICAgIEhBVkVfR0lPX1VOSVhfMl8wPSJ5ZXMiLAotICAgICBIQVZFX0dJT19VTklYXzJfMD0ibm8iKQotK2ZpCi0gQU1fQ09ORElUSU9OQUwoVVNFX0dJT19VTklYXzJfMCwgdGVzdCAieCRIQVZFX0dJT19VTklYXzJfMCIgPSAieHllcyIpCi0gCi0gZG5sICoqKiBmaW5hbGl6ZSBDRkxBR1MsIExERkxBR1MsIExJQlMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOTlmYmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgotCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXZpdi1mYi1NYWtlLXN1cmUtY29uZmlnLmgtaXMtaW5jbHVkZWQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImI1ZWIwNjUxYmFiNzBiZjE3MTRmMTAzYmRkNjZjZTQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjM2NjNDg5OTMzZDA1OTcwODdjOWJjNmJhMjUxYzkzNjkzZDY0NTU0YmNjNTYzNTM5YTA4NGZhMmQ1ZmNiMmIiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgotCi1ERVBFTkRTICs9ICJpc28tY29kZXMgdXRpbC1saW51eCIKLQotaW5oZXJpdCBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1QQUNLQUdFU19EWU5BTUlDID0rICJebGliZ3N0LioiCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsZXMyIGVnbCcsICcnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgeDExJywgZCl9IFwKLSAgICBnaW8tdW5peC0yLjAganBlZyBvZ2cgcGFuZ28gcG5nIHRoZW9yYSB2b3JiaXMgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZWdsJywgJycsIGQpfSBcCi0iCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4diIKLVgxMUVOQUJMRU9QVFMgPSAiLS1lbmFibGUteCAtLWVuYWJsZS14dmlkZW8gLS1lbmFibGUteHNobSIKLVgxMURJU0FCTEVPUFRTID0gIi0tZGlzYWJsZS14IC0tZGlzYWJsZS14dmlkZW8gLS1kaXNhYmxlLXhzaG0iCi0KLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgICA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1tjZHBhcmFub2lhXSAgID0gIi0tZW5hYmxlLWNkcGFyYW5vaWEsLS1kaXNhYmxlLWNkcGFyYW5vaWEsY2RwYXJhbm9pYSIKLVBBQ0tBR0VDT05GSUdbZWdsXSAgICAgICAgICA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKLVBBQ0tBR0VDT05GSUdbZ2JtXSAgICAgICAgICA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSx2aXJ0dWFsL2xpYmdibSBsaWJndWRldiBsaWJkcm0iCi1QQUNLQUdFQ09ORklHW2dpby11bml4LTIuMF0gPSAiLS1lbmFibGUtZ2lvX3VuaXhfMl8wLC0tZGlzYWJsZS1naW9fdW5peF8yXzAsZ2xpYi0yLjAiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgICAgPSAiLS1lbmFibGUtZ2xlczIsLS1kaXNhYmxlLWdsZXMyLHZpcnR1YWwvbGliZ2xlczIiCi1QQUNLQUdFQ09ORklHW2l2b3JiaXNdICAgICAgPSAiLS1lbmFibGUtaXZvcmJpcywtLWRpc2FibGUtaXZvcmJpcyx0cmVtb3IiCi1QQUNLQUdFQ09ORklHW2pwZWddICAgICAgICAgPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1tvZ2ddICAgICAgICAgID0gIi0tZW5hYmxlLW9nZywtLWRpc2FibGUtb2dnLGxpYm9nZyIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgICA9ICItLWVuYWJsZS1vcGVuZ2wsLS1kaXNhYmxlLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKLVBBQ0tBR0VDT05GSUdbb3B1c10gICAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCi1QQUNLQUdFQ09ORklHW3BhbmdvXSAgICAgICAgPSAiLS1lbmFibGUtcGFuZ28sLS1kaXNhYmxlLXBhbmdvLHBhbmdvIgotUEFDS0FHRUNPTkZJR1twbmddICAgICAgICAgID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSAgICAgICA9ICItLWVuYWJsZS10aGVvcmEsLS1kaXNhYmxlLXRoZW9yYSxsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW3Zpc3VhbF0gICAgICAgPSAiLS1lbmFibGUtbGlidmlzdWFsLC0tZGlzYWJsZS1saWJ2aXN1YWwsbGlidmlzdWFsIgotUEFDS0FHRUNPTkZJR1t2b3JiaXNdICAgICAgID0gIi0tZW5hYmxlLXZvcmJpcywtLWRpc2FibGUtdm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gICAgICAgICA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0ke0xJQlZ9L2luY2x1ZGUvZ3N0L2dsL2dzdGdsY29uZmlnLmgiCi1GSUxFU18ke01MUFJFRklYfWxpYmdzdHRhZy0xLjAgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFzZS8xLjAvbGljZW5zZS10cmFuc2xhdGlvbnMuZGljdCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QtbGlicy9nc3QvdGFnLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3ZpZGVvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L2F1ZGlvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3J0cC8ubGliczoke0J9L2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzLy5saWJzIgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTYzYjZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjIuYmIKQEAgLTAsMCArMSw5OSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCisKK1NSQ19VUkkgPSAiIFwKKyAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDUtdml2LWZiLU1ha2Utc3VyZS1jb25maWcuaC1pcy1pbmNsdWRlZC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiM2ZkYjMyODIzNTM1Nzk5YTc0OGMxZmMxNGY5NzhlMmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjEzZTczZTJmZTc0YTQxNjY1NTJmOTU3N2MzZGNiMjRiZWQwNzcwMjFiOWM3ZmE2MDBkOTEwZWM2OTg3ODE2YSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCisKK0RFUEVORFMgKz0gImlzby1jb2RlcyB1dGlsLWxpbnV4IHpsaWIiCisKK2luaGVyaXQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworUEFDS0FHRVNfRFlOQU1JQyA9KyAiXmxpYmdzdC4qIgorCisjIG9wZW5nbCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gY2hvb3NlIE9wZW5HTCBBUElzL3BsYXRmb3Jtcy93aW5kb3cgc3lzdGVtcworUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2xlczIgZWdsJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSB4MTEnLCBkKX0gXAorICAgIGpwZWcgb2dnIHBhbmdvIHBuZyB0aGVvcmEgdm9yYmlzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKKyIKKworT1BFTkdMX0FQSVMgPSAnb3BlbmdsIGdsZXMyJworT1BFTkdMX1BMQVRGT1JNUyA9ICdlZ2wnCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4diIKK1gxMUVOQUJMRU9QVFMgPSAiLUR4MTE9ZW5hYmxlZCAtRHh2aWRlbz1lbmFibGVkIC1EeHNobT1lbmFibGVkIgorWDExRElTQUJMRU9QVFMgPSAiLUR4MTE9ZGlzYWJsZWQgLUR4dmlkZW89ZGlzYWJsZWQgLUR4c2htPWRpc2FibGVkIgorCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgICAgICAgPSAiLURhbHNhPWVuYWJsZWQsLURhbHNhPWRpc2FibGVkLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tjZHBhcmFub2lhXSAgID0gIi1EY2RwYXJhbm9pYT1lbmFibGVkLC1EY2RwYXJhbm9pYT1kaXNhYmxlZCxjZHBhcmFub2lhIgorUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICAgID0gIi1EZ2wtanBlZz1lbmFibGVkLC1EZ2wtanBlZz1kaXNhYmxlZCxqcGVnIgorUEFDS0FHRUNPTkZJR1tvZ2ddICAgICAgICAgID0gIi1Eb2dnPWVuYWJsZWQsLURvZ2c9ZGlzYWJsZWQsbGlib2dnIgorUEFDS0FHRUNPTkZJR1tvcHVzXSAgICAgICAgID0gIi1Eb3B1cz1lbmFibGVkLC1Eb3B1cz1kaXNhYmxlZCxsaWJvcHVzIgorUEFDS0FHRUNPTkZJR1twYW5nb10gICAgICAgID0gIi1EcGFuZ289ZW5hYmxlZCwtRHBhbmdvPWRpc2FibGVkLHBhbmdvIgorUEFDS0FHRUNPTkZJR1twbmddICAgICAgICAgID0gIi1EZ2wtcG5nPWVuYWJsZWQsLURnbC1wbmc9ZGlzYWJsZWQsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdICAgICAgID0gIi1EdGhlb3JhPWVuYWJsZWQsLUR0aGVvcmE9ZGlzYWJsZWQsbGlidGhlb3JhIgorUEFDS0FHRUNPTkZJR1t0cmVtb3JdICAgICAgID0gIi1EdHJlbW9yPWVuYWJsZWQsLUR0cmVtb3I9ZGlzYWJsZWQsdHJlbW9yIgorUEFDS0FHRUNPTkZJR1t2aXN1YWxdICAgICAgID0gIi1EbGlidmlzdWFsPWVuYWJsZWQsLURsaWJ2aXN1YWw9ZGlzYWJsZWQsbGlidmlzdWFsIgorUEFDS0FHRUNPTkZJR1t2b3JiaXNdICAgICAgID0gIi1Edm9yYmlzPWVuYWJsZWQsLUR2b3JiaXM9ZGlzYWJsZWQsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKKworIyBPcGVuR0wgQVBJIHBhY2thZ2Vjb25maWdzCitQQUNLQUdFQ09ORklHW29wZW5nbF0gICAgICAgPSAiLCx2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKK1BBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgICA9ICIsLHZpcnR1YWwvbGliZ2xlczIiCisKKyMgT3BlbkdMIHBsYXRmb3JtIHBhY2thZ2Vjb25maWdzCitQQUNLQUdFQ09ORklHW2VnbF0gICAgICAgICAgPSAiLCx2aXJ0dWFsL2VnbCIKKworIyBPcGVuR0wgd2luZG93IHN5c3RlbXMgKGV4Y2VwdCBmb3IgWDExKQorUEFDS0FHRUNPTkZJR1tnYm1dICAgICAgICAgID0gIiwsdmlydHVhbC9saWJnYm0gbGliZ3VkZXYgbGliZHJtIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgID0gIiwsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJkcm0iCitQQUNLQUdFQ09ORklHW2Rpc3BtYW54XSAgICAgPSAiLCx2aXJ0dWFsL2xpYm9teGlsIgorCitPUEVOR0xfV0lOU1lTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnIHgxMScsICcnLCBkKX0iCitPUEVOR0xfV0lOU1lTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAnIGdibScsICcnLCBkKX0iCitPUEVOR0xfV0lOU1lTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd3YXlsYW5kJywgJyB3YXlsYW5kJywgJycsIGQpfSIKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2Rpc3BtYW54JywgJyBkaXNwbWFueCcsICcnLCBkKX0iCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURnbC1ncmFwaGVuZT1kaXNhYmxlZCBcCisgICAgJHtAZ2V0X29wZW5nbF9jbWRsaW5lX2xpc3QoJ2dsX2FwaScsIGQuZ2V0VmFyKCdPUEVOR0xfQVBJUycpLCBkKX0gXAorICAgICR7QGdldF9vcGVuZ2xfY21kbGluZV9saXN0KCdnbF9wbGF0Zm9ybScsIGQuZ2V0VmFyKCdPUEVOR0xfUExBVEZPUk1TJyksIGQpfSBcCisgICAgJHtAZ2V0X29wZW5nbF9jbWRsaW5lX2xpc3QoJ2dsX3dpbnN5cycsIGQuZ2V0VmFyKCdPUEVOR0xfV0lOU1lTJyksIGQpfSBcCisiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKK0dUS0RPQ19NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR1RLRE9DX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC9pbmNsdWRlL2dzdC9nbC9nc3RnbGNvbmZpZy5oIgorRklMRVNfJHtNTFBSRUZJWH1saWJnc3R0YWctMS4wICs9ICIke2RhdGFkaXJ9L2dzdC1wbHVnaW5zLWJhc2UvMS4wL2xpY2Vuc2UtdHJhbnNsYXRpb25zLmRpY3QiCisKK2RlZiBnZXRfb3BlbmdsX2NtZGxpbmVfbGlzdChzd2l0Y2hfbmFtZSwgb3B0aW9ucywgZCk6CisgICAgc2VsZWN0ZWRfb3B0aW9ucyA9IFtdCisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGZvciBvcHRpb24gaW4gb3B0aW9ucy5zcGxpdCgpOgorICAgICAgICAgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCBvcHRpb24sIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgICAgICAgICBzZWxlY3RlZF9vcHRpb25zICs9IFtvcHRpb25dCisgICAgaWYgc2VsZWN0ZWRfb3B0aW9uczoKKyAgICAgICAgcmV0dXJuICctRCcgKyBzd2l0Y2hfbmFtZSArICc9JyArICcsJy5qb2luKHNlbGVjdGVkX29wdGlvbnMpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICcnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmE5NmUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYwpAQCAtMCwwICsxLDUwIEBACisjIFRoaXMgLmluYyBmaWxlIGNvbnRhaW5zIHRoZSBjb21tb24gc2V0dXAgZm9yIHRoZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy0qCisjIHBsdWdpbiBzZXQgcmVjaXBlcy4KKworIyBTVU1NQVJZIGlzIHNldCBpbiB0aGUgYWN0dWFsIC5iYiByZWNpcGVzCitIT01FUEFHRSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnbGliLTIuMC1uYXRpdmUiCisKK2luaGVyaXQgZ2V0dGV4dCBtZXNvbiBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYworCisjIE9yYyBlbmFibGVzIHJ1bnRpbWUgSklUIGNvbXBpbGF0aW9uIG9mIGRhdGEgcHJvY2Vzc2luZyByb3V0aW5lcyBmcm9tIE9yYworIyBieXRlY29kZSB0byBTSU1EIGluc3RydWN0aW9ucyBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIChjdXJyZW50bHkgU1NFLCBNTVgsCisjIE1JUFMsIEFsdGl2ZWMgYW5kIE5FT04gYXJlIHN1cHBvcnRlZCkuCisjIFRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgUEFDS0FHRUNPTkZJRyB2YWx1ZXMgZm9yIGVhY2ggcGx1Z2luIHNldCByZWNpcGUuCisjIEJ5IG1vZGlmeWluZyBpdCwgT3JjIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGluIGFsbCBvZiB0aGVzZSByZWNpcGVzIGF0IG9uY2UuCitHU1RSRUFNRVJfT1JDID89ICJvcmMiCisjIHdvcmthcm91bmQgdG8gZGlzYWJsZSBvcmMgb24gbWlwcyB0byBmaXggdGhlIGJ1aWxkIGZhaWx1cmUKKyMge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorIyB7c3RhbmRhcmQgaW5wdXR9OjQ2NTg3OiBFcnJvcjogYnJhbmNoIG91dCBvZiByYW5nZQorR1NUUkVBTUVSX09SQ19taXBzID0gIiIKK1BBQ0tBR0VDT05GSUdbb3JjXSA9ICItRG9yYz1lbmFibGVkLC1Eb3JjPWRpc2FibGVkLG9yYyBvcmMtbmF0aXZlIgorCisjIFRPRE86IHB1dCB0aGlzIGluIGEgZ2V0dGV4dC5iYmNsYXNzIHBhdGNoICh3aXRoIHZhcmlhYmxlcyB0byBhbGxvdyBmb3IKKyMgY29uZmlndXJpbmcgdGhlIG9wdGlvbiBuYW1lIGFuZCB0aGUgZW5hYmxlZC9kaXNhYmxlZCB2YWx1ZXMpLgorZGVmIGdldHRleHRfb2VtZXNvbihkKToKKyAgICBpZiBkLmdldFZhcignVVNFX05MUycpID09ICdubyc6CisgICAgICAgIHJldHVybiAnLURubHM9ZGlzYWJsZWQnCisgICAgIyBSZW1vdmUgdGhlIE5MUyBiaXRzIGlmIFVTRV9OTFMgaXMgbm8gb3IgSU5ISUJJVF9ERUZBVUxUX0RFUFMgaXMgc2V0CisgICAgaWYgZC5nZXRWYXIoJ0lOSElCSVRfREVGQVVMVF9ERVBTJykgYW5kIG5vdCBvZS51dGlscy5pbmhlcml0cyhkLCAnY3Jvc3MtY2FuYWRpYW4nKToKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICByZXR1cm4gJy1EbmxzPWVuYWJsZWQnCisKKyMgTm90IGFsbCBwbHVnaW4gc2V0cyBjb250YWluIGV4YW1wbGVzLCBzbyB0aGUgLURleGFtcGxlcworIyBvcHRpb24gbmVlZHMgdG8gYmUgYWRkZWQgY29uZGl0aW9uYWxseS4KK0dTVF9QTFVHSU5fU0VUX0hBU19FWEFNUExFUyA/PSAiMSIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnR1NUX1BMVUdJTl9TRVRfSEFTX0VYQU1QTEVTJywgJzEnLCAnLURleGFtcGxlcz1kaXNhYmxlZCcsICcnLCBkKX0gXAorICAgICR7QGdldHRleHRfb2VtZXNvbihkKX0gXAorIgorCitHSVJfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKKyMgRHluYW1pY2FsbHkgZ2VuZXJhdGUgcGFja2FnZXMgZm9yIGFsbCBlbmFibGVkIHBsdWdpbnMKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXFtbGdsLWVuc3VyZS1RdC1kZWZpbmVzLUdMc3luYy10by1maXgtY29tcGlsZS1vbi1zb20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzY4NDg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXFtbGdsLWVuc3VyZS1RdC1kZWZpbmVzLUdMc3luYy10by1maXgtY29tcGlsZS1vbi1zb20ucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSAzZTBkNTU3NzQ0NGIzMjU3OWJkZjViNjlkNzIwYTMyMjMyMmZmN2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlsaWFuIFdvbGZmIDxtaWxpYW4ud29sZmZAa2RhYi5jb20+CitEYXRlOiBUdWUsIDI2IE5vdiAyMDE5IDE1OjA4OjIwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHFtbGdsOiBlbnN1cmUgUXQgZGVmaW5lcyBHTHN5bmMgdG8gZml4IGNvbXBpbGUgb24gc29tZSBwbGF0Zm9ybXMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQnkgZXhwbGljdGx5IGluY2x1ZGluZyBRdEd1aS9xb3BlbmdsLmggd2UgZm9yY2UgdGhlIGNvZGUgcGF0aCB0aGF0CitkZWZpbmVzIEdMc3luYyBpbiB0aGUgUXQtc3BlY2lmaWMgd2F5LiBXaXRob3V0IHRoYXQsIHNvbWUgcGxhdGZvcm1zCitmYWlsZWQgdG8gY29tcGlsZSB0aGUgcW1sZ2wgcGx1Z2luLCBzaW5jZSBuZWl0aGVyIFF0IG5vciBnc3RyZWFtZXIKK2RlZmluZWQgR0xzeW5jIHRoZW4sIGxlYWRpbmcgdG8gZS5nLjoKKworYGBgCittYWtlWzRdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy8uLi4vZ3N0LXBsdWdpbnMtZ29vZC0xLjE2LjEvZXh0L3F0JworICBDWFggICAgICBsaWJnc3RxbWxnbF9sYS1xdGl0ZW0ubG8KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBnc3RxdGdsLmg6MzIsCisgICAgICAgICAgICAgICAgIGZyb20gcXRpdGVtLmg6MjcsCisgICAgICAgICAgICAgICAgIGZyb20gcXRpdGVtLmNjOjI4OgorLy4uLi91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wLworZ3N0L2dsL2dzdGdsZnVuY3MuaDo5MzoxNzogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgYmVmb3JlIOKAmCrigJkgdG9rZW4KKyAgIHJldCAoR1NUR0xBUEkgKm5hbWUpIGFyZ3M7CisgICAgICAgICAgICAgICAgIF4KKy8uLi4vdXNyL2luY2x1ZGUvZ3N0cmVhbWVyLTEuMC8KK2dzdC9nbC9nbHByb3RvdHlwZXMvc3luYy5oOjI3OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybwor4oCYR1NUX0dMX0VYVF9GVU5DVElPTuKAmQorIEdTVF9HTF9FWFRfRlVOQ1RJT04gKEdMc3luYywgRmVuY2VTeW5jLAorIF5+fn5+fn5+fn5+fn5+fn5+fn4KK2BgYAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtZ29vZC9jb21taXQvM2UwZDU1Nzc0NDRiMzI1NzliZGY1YjY5ZDcyMGEzMjIzMjJmZjdiY10KKy0tLQorIGV4dC9xdC9nc3RxdGdsLmggfCAxOCArKysrKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworLS0tIGEvZXh0L3F0L2dzdHF0Z2wuaAorKysrIGIvZXh0L3F0L2dzdHF0Z2wuaAorQEAgLTIyLDE0ICsyMiw3IEBACisgI2luY2x1ZGUgPFF0R3VpL3F0Z3VpLWNvbmZpZy5oPgorICNlbmRpZgorIAorLS8qIHF0IHVzZXMgdGhlIHNhbWUgdHJpY2sgYXMgdXMgdG8gdHlwZWRlZiBHTHN5bmMgb24gR0xFUzIgYnV0IHRvIGEgZGlmZmVyZW50CistICogdHlwZSB3aGljaCBjb25mdXNlcyB0aGUgcHJlcHJvY2Vzc29yLiBJbnN0ZWFkIG9mIHRyeWluZyB0byByZWNvbmNpbGUgdGhlCistICogdHdvLCB3ZSBpbnN0ZWFkIHVzZSB0aGUgR0xzeW5jIGRlZmluaXRpb24gZnJvbSBRdCBmcm9tIGFib3ZlLCBhbmQgZW5zdXJlCistICogdGhhdCB3ZSBkb24ndCB0eXBlZGVmIEdMc3luYyBpbiBnc3RnbGZ1bmNzLmggKi8KKyAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29uZmlnLmg+CistI3VuZGVmIEdTVF9HTF9IQVZFX0dMU1lOQworLSNkZWZpbmUgR1NUX0dMX0hBVkVfR0xTWU5DIDEKKy0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKyAKKyAvKiBUaGUgZ2xleHQuaCBndWFyZCB3YXMgcmVuYW1lZCBpbiAyMDE4LCBidXQgc29tZSBzb2Z0d2FyZSB3aGljaAorICAqIGluY2x1ZGVzIHRoZWlyIG93biBjb3B5IG9mIHRoZSBHTCBoZWFkZXJzIChzdWNoIGFzIHF0KSBtaWdodCBoYXZlCitAQCAtNDYsNiArMzksMTcgQEAKKyAjZW5kaWYKKyAjZW5kaWYKKyAKKysvKiBwdWxscyBpbiBHTHN5bmMsIHNlZSBiZWxvdyAqLworKyNpbmNsdWRlIDxRdEd1aS9xb3BlbmdsLmg+CisrCisrLyogcXQgdXNlcyB0aGUgc2FtZSB0cmljayBhcyB1cyB0byB0eXBlZGVmIEdMc3luYyBvbiBHTEVTMiBidXQgdG8gYSBkaWZmZXJlbnQKKysgKiB0eXBlIHdoaWNoIGNvbmZ1c2VzIHRoZSBwcmVwcm9jZXNzb3IuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIHJlY29uY2lsZSB0aGUKKysgKiB0d28sIHdlIGluc3RlYWQgdXNlIHRoZSBHTHN5bmMgZGVmaW5pdGlvbiBmcm9tIFF0IGZyb20gYWJvdmUsIGFuZCBlbnN1cmUKKysgKiB0aGF0IHdlIGRvbid0IHR5cGVkZWYgR0xzeW5jIGluIGdzdGdsZnVuY3MuaCAqLworKyN1bmRlZiBHU1RfR0xfSEFWRV9HTFNZTkMKKysjZGVmaW5lIEdTVF9HTF9IQVZFX0dMU1lOQyAxCisrI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZ1bmNzLmg+CisrCisgI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xDb250ZXh0PgorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMRnVuY3Rpb25zPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXF0LWluY2x1ZGUtZXh0LXF0LWdzdHF0Z2wuaC1pbnN0ZWFkLW9mLWdzdC1nbC1nc3RnbGYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcXQtaW5jbHVkZS1leHQtcXQtZ3N0cXRnbC5oLWluc3RlYWQtb2YtZ3N0LWdsLWdzdGdsZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDQyMzE1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXF0LWluY2x1ZGUtZXh0LXF0LWdzdHF0Z2wuaC1pbnN0ZWFkLW9mLWdzdC1nbC1nc3RnbGYucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSBkMDgyMzRhNjU5YmVjMWZkNWM5ODRmZWRlZmJlYjgxOTJhZjA3ODM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMzEgTWFyIDIwMjAgMjE6MjM6MjggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcXQ6IGluY2x1ZGUgZXh0L3F0L2dzdHF0Z2wuaCBpbnN0ZWFkIG9mIGdzdC9nbC9nc3RnbGZ1bmNzLmgKKworZ3N0L2dsL2dzdGdsZnVuY3MuaCBpcyBpbmNsdWRlZCB2aWEgZXh0L3F0L2dzdHF0Z2wuaCB3aGljaCBoYXMgbG9naWMgdG8KK3ByZWZlciBxdCBoZWFkZXJzIGRlZmluaXRpb25zIGZvciBHTHN5bmMKKworVGhpcyBoZWxwcyBpbiBmaXhpbmcgYnVpbGQgZXJyb3JzIGxpa2UgYmVsb3cKKworL21udC9iL3lvZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC15b2UtbGludXgtZ251ZWFiaS9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzEuMTYuMi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9RdEd1aS9xb3BlbmdsZXMyZXh0Lmg6MjQ6MjY6IGVycm9yOiBjb25mbGljdGluZyBkZWNsYXJhdGlvbiAndHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdMc3luYycKKyAgIDI0IHwgdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMgKkdMc3luYzsKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQteW9lLWxpbnV4LWdudWVhYmkvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8xLjE2LjItcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvZ3N0cmVhbWVyLTEuMC9nc3QvZ2wvZ3N0Z2xmdW5jcy5oOjg0LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL2dzdC1wbHVnaW5zLWdvb2QtMS4xNi4yL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjOjMwOgorL21udC9iL3lvZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC15b2UtbGludXgtZ251ZWFiaS9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzEuMTYuMi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wL2dzdC9nbC9nbHByb3RvdHlwZXMvZ3N0Z2xfY29tcGF0Lmg6NDA6MTg6IG5vdGU6IHByZXZpb3VzIGRlY2xhcmF0aW9uIGFzICd0eXBlZGVmIHZvaWQqIEdMc3luYworJworICAgNDAgfCB0eXBlZGVmIGdwb2ludGVyIEdMc3luYzsKKyAgICAgIHwgICAgICAgICAgICAgICAgICBefn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MgfCAyICstCisgZXh0L3F0L3F0d2luZG93LmNjICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYyBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjCitpbmRleCAyYjMxNGUwLi4xMmIxNWRkIDEwMDY0NAorLS0tIGEvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MKKysrKyBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKyAjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CistI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZ1bmNzLmg+CisrI2luY2x1ZGUgPGV4dC9xdC9nc3RxdGdsLmg+CisgI2luY2x1ZGUgImdzdHFzZ3RleHR1cmUuaCIKKyAKKyAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfcXNnX3RleHR1cmVfZGVidWcKK2RpZmYgLS1naXQgYS9leHQvcXQvcXR3aW5kb3cuY2MgYi9leHQvcXQvcXR3aW5kb3cuY2MKK2luZGV4IDYyZDI2YjYuLmJmNjhlYmIgMTAwNjQ0CistLS0gYS9leHQvcXQvcXR3aW5kb3cuY2MKKysrKyBiL2V4dC9xdC9xdHdpbmRvdy5jYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAKKyAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CistI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZ1bmNzLmg+CisrI2luY2x1ZGUgPGV4dC9xdC9nc3RxdGdsLmg+CisgI2luY2x1ZGUgInF0d2luZG93LmgiCisgI2luY2x1ZGUgImdzdHFzZ3RleHR1cmUuaCIKKyAjaW5jbHVkZSAiZ3N0cXRnbHV0aWxpdHkuaCIKKy0tIAorMi4yNi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYTdiODYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTU5ODdlZTc2MzI1Njg0MGExMWJkOGVhMDk4ZjJiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZmJhYmU2OTAxOGZjZWM3MDdkZjBiNzExNTAxNjg3NzYwNDBjZGU2YzFhMjZiYjVhODJhMTM2NzU1ZmE4ZjFmIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfSIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKLQotREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBsaWJjYXAiCi1SUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCi1SUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0dTVFJFQU1FUl9PUkN9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgYnoyIGNhaXJvIGZsYWMgZ2RrLXBpeGJ1ZiBndWRldiBqcGVnIGxhbWUgbGlicG5nIG1wZzEyMyBzb3VwIHNwZWV4IHRhZ2xpYiB2NGwyIHpsaWIgXAotIgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGZpeGVzIGxpYnhkYW1hZ2UiCi0KLVBBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgPSAiLS1lbmFibGUtYnoyLC0tZGlzYWJsZS1iejIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2NhaXJvXSAgICAgID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyIKLVBBQ0tBR0VDT05GSUdbZHYxMzk0XSAgICAgPSAiLS1lbmFibGUtZHYxMzk0LC0tZGlzYWJsZS1kdjEzOTQsbGliaWVjNjE4ODMgbGliYXZjMTM5NCBsaWJyYXcxMzk0IgotUEFDS0FHRUNPTkZJR1tmbGFjXSAgICAgICA9ICItLWVuYWJsZS1mbGFjLC0tZGlzYWJsZS1mbGFjLGZsYWMiCi1QQUNLQUdFQ09ORklHW2dkay1waXhidWZdID0gIi0tZW5hYmxlLWdka19waXhidWYsLS1kaXNhYmxlLWdka19waXhidWYsZ2RrLXBpeGJ1ZiIKLVBBQ0tBR0VDT05GSUdbZ3RrXSAgICAgICAgPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKLVBBQ0tBR0VDT05GSUdbZ3VkZXZdICAgICAgPSAiLS13aXRoLWd1ZGV2LC0td2l0aG91dC1ndWRldixsaWJndWRldiIKLVBBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW2xhbWVdICAgICAgID0gIi0tZW5hYmxlLWxhbWUsLS1kaXNhYmxlLWxhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbbGlicG5nXSAgICAgPSAiLS1lbmFibGUtbGlicG5nLC0tZGlzYWJsZS1saWJwbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tsaWJ2NGwyXSAgICA9ICItLXdpdGgtbGlidjRsMiwtLXdpdGhvdXQtbGlidjRsMix2NGwtdXRpbHMiCi1QQUNLQUdFQ09ORklHW21wZzEyM10gICAgID0gIi0tZW5hYmxlLW1wZzEyMywtLWRpc2FibGUtbXBnMTIzLG1wZzEyMyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2UsLS1kaXNhYmxlLXB1bHNlLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NvdXBdICAgICAgID0gIi0tZW5hYmxlLXNvdXAsLS1kaXNhYmxlLXNvdXAsbGlic291cC0yLjQiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSAgICAgID0gIi0tZW5hYmxlLXNwZWV4LC0tZGlzYWJsZS1zcGVleCxzcGVleCIKLVBBQ0tBR0VDT05GSUdbdGFnbGliXSAgICAgPSAiLS1lbmFibGUtdGFnbGliLC0tZGlzYWJsZS10YWdsaWIsdGFnbGliIgotUEFDS0FHRUNPTkZJR1t2NGwyXSAgICAgICA9ICItLWVuYWJsZS1nc3RfdjRsMiAtLWVuYWJsZS12NGwyLXByb2JlLC0tZGlzYWJsZS1nc3RfdjRsMiIKLVBBQ0tBR0VDT05GSUdbdnB4XSAgICAgICAgPSAiLS1lbmFibGUtdnB4LC0tZGlzYWJsZS12cHgsbGlidnB4IgotUEFDS0FHRUNPTkZJR1t3YXZwYWNrXSAgICA9ICItLWVuYWJsZS13YXZwYWNrLC0tZGlzYWJsZS13YXZwYWNrLHdhdnBhY2siCi1QQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXgsLS1kaXNhYmxlLXgsJHtYMTFERVBFTkRTfSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gICAgICAgPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgotCi0jIHF0NSBzdXBwb3J0IGlzIGRpc2FibGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBwcmVzZW50IGluIE9FIGNvcmUsIGFuZCByZXF1aXJlcyBtb3JlIHdvcmsgdGhhbgotIyBqdXN0IGFkZGluZyBhIHBhY2thZ2Vjb25maWcgKGl0IHJlcXVpcmVzIGFjY2VzcyB0byBtb2MsIHVpYywgcmNjLCBhbmQgcW1ha2UgcGF0aHMpLgotIyBUaGlzIGlzIGJldHRlciBkb25lIGluIGEgc2VwYXJhdGUgcXQ1IGxheWVyICh3aGljaCB0aGVuIHNob3VsZCBhZGQgYSAicXQ1IiBwYWNrYWdlY29uZmlnCi0jIGluIGEgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCBiYmFwcGVuZCkuCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWVuYWJsZS1vc3MgXAotICAgIC0tZGlzYWJsZS1hYWxpYiBcCi0gICAgLS1kaXNhYmxlLWFhbGlidGVzdCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdHNvdW5kIFwKLSAgICAtLWRpc2FibGUtbGliY2FjYSBcCi0gICAgLS1kaXNhYmxlLWxpYmR2IFwKLSAgICAtLWRpc2FibGUtb3NzNCBcCi0gICAgLS1kaXNhYmxlLW9zeF9hdWRpbyBcCi0gICAgLS1kaXNhYmxlLW9zeF92aWRlbyBcCi0gICAgLS1kaXNhYmxlLXF0IFwKLSAgICAtLWRpc2FibGUtc2hvdXQyIFwKLSAgICAtLWRpc2FibGUtdHdvbGFtZSBcCi0gICAgLS1kaXNhYmxlLXdhdmVmb3JtIFwKLSIKLQotRklMRVNfJHtQTn0tZXF1YWxpemVyICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy8qLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdjOTQyMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNi4yLmJiCkBAIC0wLDAgKzEsNzAgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYworCitTUkNfVVJJID0gIiBcCisgICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1xdC1pbmNsdWRlLWV4dC1xdC1nc3RxdGdsLmgtaW5zdGVhZC1vZi1nc3QtZ2wtZ3N0Z2xmLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImJkMDI1ZjhmMTQ5NzRmOTRiNzVhYzY5YTlkMWI5YzkzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwYmIzYmFmZGEyNWMwYjczOWM4ZmMzNmU0ODM4MGZjY2Y2MWM0ZDNmODM3NDdlOTdhYzNmOWIwMTcxYjEzMTkiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmNhcCB6bGliIgorUlBST1ZJREVTXyR7UE59LXB1bHNlYXVkaW8gKz0gIiR7UE59LXB1bHNlIgorUlBST1ZJREVTXyR7UE59LXNvdXAgKz0gIiR7UE59LXNvdXBodHRwc3JjIgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0dTVFJFQU1FUl9PUkN9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCisgICAgYnoyIGNhaXJvIGZsYWMgZ2RrLXBpeGJ1ZiBndWRldiBqcGVnIGxhbWUgbGlicG5nIG1wZzEyMyBzb3VwIHNwZWV4IHRhZ2xpYiB2NGwyIFwKKyIKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnhmaXhlcyBsaWJ4ZGFtYWdlIgorWDExRU5BQkxFT1BUUyA9ICItRHhpbWFnZXNyYz1lbmFibGVkIC1EeGltYWdlc3JjLXhzaG09ZW5hYmxlZCAtRHhpbWFnZXNyYy14Zml4ZXM9ZW5hYmxlZCAtRHhpbWFnZXNyYy14ZGFtYWdlPWVuYWJsZWQiCitYMTFESVNBQkxFT1BUUyA9ICItRHhpbWFnZXNyYz1kaXNhYmxlZCAtRHhpbWFnZXNyYy14c2htPWRpc2FibGVkIC1EeGltYWdlc3JjLXhmaXhlcz1kaXNhYmxlZCAtRHhpbWFnZXNyYy14ZGFtYWdlPWRpc2FibGVkIgorCitQQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgID0gIi1EYnoyPWVuYWJsZWQsLURiejI9ZGlzYWJsZWQsYnppcDIiCitQQUNLQUdFQ09ORklHW2NhaXJvXSAgICAgID0gIi1EY2Fpcm89ZW5hYmxlZCwtRGNhaXJvPWRpc2FibGVkLGNhaXJvIgorUEFDS0FHRUNPTkZJR1tkdjEzOTRdICAgICA9ICItRGR2MTM5ND1lbmFibGVkLC1EZHYxMzk0PWRpc2FibGVkLGxpYmllYzYxODgzIGxpYmF2YzEzOTQgbGlicmF3MTM5NCIKK1BBQ0tBR0VDT05GSUdbZmxhY10gICAgICAgPSAiLURmbGFjPWVuYWJsZWQsLURmbGFjPWRpc2FibGVkLGZsYWMiCitQQUNLQUdFQ09ORklHW2dkay1waXhidWZdID0gIi1EZ2RrLXBpeGJ1Zj1lbmFibGVkLC1EZ2RrLXBpeGJ1Zj1kaXNhYmxlZCxnZGstcGl4YnVmIgorUEFDS0FHRUNPTkZJR1tndGtdICAgICAgICA9ICItRGd0azM9ZW5hYmxlZCwtRGd0azM9ZGlzYWJsZWQsZ3RrKzMiCitQQUNLQUdFQ09ORklHW2d1ZGV2XSAgICAgID0gIi1EdjRsMi1ndWRldj1lbmFibGVkLC1EdjRsMi1ndWRldj1kaXNhYmxlZCxsaWJndWRldiIKK1BBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLURqYWNrPWVuYWJsZWQsLURqYWNrPWRpc2FibGVkLGphY2siCitQQUNLQUdFQ09ORklHW2pwZWddICAgICAgID0gIi1EanBlZz1lbmFibGVkLC1EanBlZz1kaXNhYmxlZCxqcGVnIgorUEFDS0FHRUNPTkZJR1tsYW1lXSAgICAgICA9ICItRGxhbWU9ZW5hYmxlZCwtRGxhbWU9ZGlzYWJsZWQsbGFtZSIKK1BBQ0tBR0VDT05GSUdbbGlicG5nXSAgICAgPSAiLURwbmc9ZW5hYmxlZCwtRHBuZz1kaXNhYmxlZCxsaWJwbmciCitQQUNLQUdFQ09ORklHW2xpYnY0bDJdICAgID0gIi1EdjRsMi1saWJ2NGwyPWVuYWJsZWQsLUR2NGwyLWxpYnY0bDI9ZGlzYWJsZWQsdjRsLXV0aWxzIgorUEFDS0FHRUNPTkZJR1ttcGcxMjNdICAgICA9ICItRG1wZzEyMz1lbmFibGVkLC1EbXBnMTIzPWRpc2FibGVkLG1wZzEyMyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLURwdWxzZT1lbmFibGVkLC1EcHVsc2U9ZGlzYWJsZWQscHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSAgICAgICAgPSAiLURxdDU9ZW5hYmxlZCwtRHF0NT1kaXNhYmxlZCxxdGJhc2UgcXRkZWNsYXJhdGl2ZSBxdGJhc2UtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tzb3VwXSAgICAgICA9ICItRHNvdXA9ZW5hYmxlZCwtRHNvdXA9ZGlzYWJsZWQsbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW3NwZWV4XSAgICAgID0gIi1Ec3BlZXg9ZW5hYmxlZCwtRHNwZWV4PWRpc2FibGVkLHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0YWdsaWJdICAgICA9ICItRHRhZ2xpYj1lbmFibGVkLC1EdGFnbGliPWRpc2FibGVkLHRhZ2xpYiIKK1BBQ0tBR0VDT05GSUdbdjRsMl0gICAgICAgPSAiLUR2NGwyPWVuYWJsZWQgLUR2NGwyLXByb2JlPXRydWUsLUR2NGwyPWRpc2FibGVkIC1EdjRsMi1wcm9iZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdnB4XSAgICAgICAgPSAiLUR2cHg9ZW5hYmxlZCwtRHZweD1kaXNhYmxlZCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3dhdnBhY2tdICAgID0gIi1Ed2F2cGFjaz1lbmFibGVkLC1Ed2F2cGFjaz1kaXNhYmxlZCx3YXZwYWNrIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURhYWxpYj1kaXNhYmxlZCBcCisgICAgLURkaXJlY3Rzb3VuZD1kaXNhYmxlZCBcCisgICAgLURkdj1kaXNhYmxlZCBcCisgICAgLURsaWJjYWNhPWRpc2FibGVkIFwKKyAgICAtRG9zcz1lbmFibGVkIFwKKyAgICAtRG9zczQ9ZGlzYWJsZWQgXAorICAgIC1Eb3N4YXVkaW89ZGlzYWJsZWQgXAorICAgIC1Eb3N4dmlkZW89ZGlzYWJsZWQgXAorICAgIC1Ec2hvdXQyPWRpc2FibGVkIFwKKyAgICAtRHR3b2xhbWU9ZGlzYWJsZWQgXAorICAgIC1Ed2F2ZWZvcm09ZGlzYWJsZWQgXAorIgorCitGSUxFU18ke1BOfS1lcXVhbGl6ZXIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzLyoucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXBhY2thZ2luZy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3YTFiNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXBhY2thZ2luZy5pbmMKQEAgLTAsMCArMSw3MCBAQAorIyBUaGlzIC5pbmMgZmlsZSBjb250YWlucyBmdW5jdGlvbmFsaXR5IGZvciBhdXRvbWF0aWNhbGx5IHNwbGl0dGluZworIyBidWlsdCBwbHVnaW5zIGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcyBmb3IgZWFjaCBwbHVnaW4uIEEgLW1ldGEKKyMgcGFja2FnZSBpcyBhbHNvIHNldCB1cCB0aGF0IGhhcyBubyBmaWxlcyBvZiBpdHMgb3duLCBidXQgY29udGFpbnMKKyMgdGhlIG5hbWVzIG9mIGFsbCBwbHVnaW4gcGFja2FnZXMgaW4gaXRzIFJERVBFTkRTIGxpc3QuCisjCisjIFRoaXMgaXMgbWFpbmx5IHVzZWQgYnkgdGhlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLSogcGx1Z2luIHNldCByZWNpcGVzLAorIyBidXQgY2FuIGJlIHVzZWQgaW4gYW55IHJlY2lwZSB0aGF0IHByb2R1Y2VzIEdTdHJlYW1lciBwbHVnaW5zLgorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gIiBzcGxpdF9nc3RyZWFtZXIxMF9wYWNrYWdlcyAiCitQQUNLQUdFU1BMSVRGVU5DU19hcHBlbmQgPSAiIHNldF9nc3RyZWFtZXIxMF9tZXRhcGtnX3JkZXBlbmRzICIKKworcHl0aG9uIHNwbGl0X2dzdHJlYW1lcjEwX3BhY2thZ2VzICgpIHsKKyAgICBnc3RfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9nc3RyZWFtZXItMS4wJykKKyAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwbHVnaW5fcG9zdGluc3QnKQorICAgIGdsaWJkaXIgPSBkLmdldFZhcignbGliZGlyJykKKworICAgICMgR1N0cmVhbWVyIGxpYnJhcmllcworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdsaWJkaXIsIHInXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ0dTdHJlYW1lciAxLjAgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCisgICAgIyBHU3RyZWFtZXIgcGx1Z2luIHNoYXJlZCBvYmplY3RzCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ3N0X2xpYmRpciwgcidsaWJnc3QoLiopXC5zbyQnLCBkLmV4cGFuZCgnJHtQTn0tJXMnKSwgJ0dTdHJlYW1lciAxLjAgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPScnKQorICAgICMgR09iamVjdCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBHU3RyZWFtZXIgcGx1Z2lucworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdsaWJkaXIrJy9naXJlcG9zaXRvcnktMS4wJywgcidHc3QoLiopLTEuMFwudHlwZWxpYiQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtdHlwZWxpYicpLCAnR1N0cmVhbWVyIDEuMCB0eXBlbGliIGZpbGUgZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9JycpCisgICAgIyBTdGF0aWMgR1N0cmVhbWVyIGxpYnJhcmllcyBmb3IgZGV2ZWxvcG1lbnQKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnc3RfbGliZGlyLCByJ2xpYmdzdCguKilcLmEkJywgZC5leHBhbmQoJyR7UE59LSVzLXN0YXRpY2RldicpLCAnR1N0cmVhbWVyIDEuMCBwbHVnaW4gZm9yICVzIChzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMpJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKK30KKworcHl0aG9uIHNldF9nc3RyZWFtZXIxMF9tZXRhcGtnX3JkZXBlbmRzICgpIHsKKyAgICBpbXBvcnQgb3MKKyAgICBpbXBvcnQgb2UudXRpbHMKKworICAgICMgR28gdGhyb3VnaCBhbGwgZ2VuZXJhdGVkIHBhY2thZ2VzIChleGNsdWRpbmcgdGhlIG1haW4gcGFja2FnZSBhbmQKKyAgICAjIHRoZSAtbWV0YSBwYWNrYWdlIGl0c2VsZikgYW5kIGFkZCB0aGVtIHRvIHRoZSAtbWV0YSBwYWNrYWdlIGFzIFJERVBFTkRTLgorCisgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgIG1ldGFwa2cgPSAgcG4gKyAnLW1ldGEnCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCisgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBtZXRhcGtnLCAiIikKKyAgICBibGFja2xpc3QgPSBbIHBuLCBwbiArICctbWV0YScgXQorICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbXQorICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCisgICAgZm9yIHBrZyBpbiBvZS51dGlscy5wYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKToKKyAgICAgICAgaWYgcGtnIG5vdCBpbiBibGFja2xpc3QgYW5kIHBrZyBub3QgaW4gbWV0YXBrZ19yZGVwZW5kczoKKyAgICAgICAgICAgICMgU2VlIGlmIHRoZSBwYWNrYWdlIGlzIGVtcHR5IGJ5IGxvb2tpbmcgYXQgdGhlIGNvbnRlbnRzIG9mIGl0cyBQS0dERVNUIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICMgSWYgdGhpcyBzdWJkaXJlY3RvcnkgaXMgZW1wdHksIHRoZW4gdGhlIHBhY2thZ2UgaXMuCisgICAgICAgICAgICAjIEVtcHR5IHBhY2thZ2VzIGRvIG5vdCBnZXQgYWRkZWQgdG8gdGhlIG1ldGEgcGFja2FnZSdzIFJERVBFTkRTCisgICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZGlyKToKKyAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBvcy5saXN0ZGlyKHBrZ2Rpcikgb3IgW10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyX2NvbnRlbnRzID0gW10KKyAgICAgICAgICAgIGlzX2VtcHR5ID0gbGVuKGRpcl9jb250ZW50cykgPT0gMAorICAgICAgICAgICAgaWYgbm90IGlzX2VtcHR5OgorICAgICAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKKyAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQorICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgcG4gKyAnIG1ldGEgcGFja2FnZScpCit9CisKKyMgZWFjaCBwbHVnaW4tZGV2IGRlcGVuZHMgb24gUE4tZGV2LCBwbHVnaW4tc3RhdGljZGV2IG9uIFBOLXN0YXRpY2RldgorIyBzbyB3ZSBuZWVkIHRoZW0gZXZlbiB3aGVuIGVtcHR5IChsaWtlIGluIGdzdC1wbHVnaW5zLWdvb2QgY2FzZSkKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1kZXYgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LXN0YXRpY2RldiA9ICIxIgorCitQQUNLQUdFUyArPSAiJHtQTn0tYXBwcyAke1BOfS1tZXRhICR7UE59LWdsaWIiCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LWFwcHMgPSAiJHtiaW5kaXJ9IgorRklMRVNfJHtQTn0tZ2xpYiA9ICIke2RhdGFkaXJ9L2dsaWItMi4wIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtQTn0tbWV0YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYWIzMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgTEdQTHYyKyIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotU1JDX1VSSSA9ICIgXAotICAgICAgICAgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjY2ODc5NTkwM2NiNDk3MWZiYTlhYTg5YWJkZWE4MzY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiZjkxM2IyY2E1MTk1YWMzYjUzYjVlM2FkZTJkYzdjNDVkMjI1ODUwNzU1MmRkYzg1MGM1ZmE0MjU5NjhhMWQiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotCi1pbmhlcml0IGdldHRleHQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgYTUyZGVjIG1wZWcyZGVjIFwKLSIKLQotUEFDS0FHRUNPTkZJR1thNTJkZWNdICAgPSAiLS1lbmFibGUtYTUyZGVjLC0tZGlzYWJsZS1hNTJkZWMsbGliYTUyIgotUEFDS0FHRUNPTkZJR1thbXJuYl0gICAgPSAiLS1lbmFibGUtYW1ybmIsLS1kaXNhYmxlLWFtcm5iLG9wZW5jb3JlLWFtciIKLVBBQ0tBR0VDT05GSUdbYW1yd2JdICAgID0gIi0tZW5hYmxlLWFtcndiLC0tZGlzYWJsZS1hbXJ3YixvcGVuY29yZS1hbXIiCi1QQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItLWVuYWJsZS1jZGlvLC0tZGlzYWJsZS1jZGlvLGxpYmNkaW8iCi1QQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLGxpYmR2ZHJlYWQiCi1QQUNLQUdFQ09ORklHW21wZWcyZGVjXSA9ICItLWVuYWJsZS1tcGVnMmRlYywtLWRpc2FibGUtbXBlZzJkZWMsbXBlZzJkZWMiCi1QQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItLWVuYWJsZS14MjY0LC0tZGlzYWJsZS14MjY0LHgyNjQiCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWRpc2FibGUtc2lkcGxheSBcCi0iCi0KLUZJTEVTXyR7UE59LWFtcm5iICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RBbXJuYkVuYy5wcnMiCi1GSUxFU18ke1BOfS14MjY0ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RYMjY0RW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxMDgwMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMzkgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgTEdQTHYyKyIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworU1JDX1VSSSA9ICIgXAorICAgICAgICAgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMDI4M2ZmNWVmMWUzNGQ0NjJkZGU3NzA0MmUzMjliZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTAwNDE1Yjg2NWU4YjYyNzc1ZDQ3NDJjYmI5ZjM3MTQ2YTUwY2FlY2ZjMGU3YTZmYzAxNjBkM2M1NjBmYmNhIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworR1NUX1BMVUdJTl9TRVRfSEFTX0VYQU1QTEVTID0gIjAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgIGE1MmRlYyBtcGVnMmRlYyBcCisiCisKK1BBQ0tBR0VDT05GSUdbYTUyZGVjXSAgID0gIi1EYTUyZGVjPWVuYWJsZWQsLURhNTJkZWM9ZGlzYWJsZWQsbGliYTUyIgorUEFDS0FHRUNPTkZJR1thbXJuYl0gICAgPSAiLURhbXJuYj1lbmFibGVkLC1EYW1ybmI9ZGlzYWJsZWQsb3BlbmNvcmUtYW1yIgorUEFDS0FHRUNPTkZJR1thbXJ3Yl0gICAgPSAiLURhbXJ3YmRlYz1lbmFibGVkLC1EYW1yd2JkZWM9ZGlzYWJsZWQsb3BlbmNvcmUtYW1yIgorUEFDS0FHRUNPTkZJR1tjZGlvXSAgICAgPSAiLURjZGlvPWVuYWJsZWQsLURjZGlvPWRpc2FibGVkLGxpYmNkaW8iCitQQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItRGR2ZHJlYWQ9ZW5hYmxlZCwtRGR2ZHJlYWQ9ZGlzYWJsZWQsbGliZHZkcmVhZCIKK1BBQ0tBR0VDT05GSUdbbXBlZzJkZWNdID0gIi1EbXBlZzJkZWM9ZW5hYmxlZCwtRG1wZWcyZGVjPWRpc2FibGVkLG1wZWcyZGVjIgorUEFDS0FHRUNPTkZJR1t4MjY0XSAgICAgPSAiLUR4MjY0PWVuYWJsZWQsLUR4MjY0PWRpc2FibGVkLHgyNjQiCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURzaWRwbGF5PWRpc2FibGVkIFwKKyIKKworRklMRVNfJHtQTn0tYW1ybmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdEFtcm5iRW5jLnBycyIKK0ZJTEVTXyR7UE59LXgyNjQgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdFgyNjRFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzI0YjA1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiUGx1Z2lucyBmb3IgdGhlIEdTdHJlYW1lciBtdWx0aW1lZGlhIGZyYW1ld29yayAxLngiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCi0KLWFjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKLQotTElCViA9ICIxLjAiCi1yZXF1aXJlIGdzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCi0KLSMgT3JjIGVuYWJsZXMgcnVudGltZSBKSVQgY29tcGlsYXRpb24gb2YgZGF0YSBwcm9jZXNzaW5nIHJvdXRpbmVzIGZyb20gT3JjCi0jIGJ5dGVjb2RlIHRvIFNJTUQgaW5zdHJ1Y3Rpb25zIGZvciB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgKGN1cnJlbnRseSBTU0UsIE1NWCwKLSMgTUlQUywgQWx0aXZlYyBhbmQgTkVPTiBhcmUgc3VwcG9ydGVkKS4KLQotR1NUUkVBTUVSX09SQyA/PSAib3JjIgotCi1QQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWciCi1QQUNLQUdFQ09ORklHW29yY10gPSAiLS1lbmFibGUtb3JjLC0tZGlzYWJsZS1vcmMsb3JjIG9yYy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLWV4cG9ydCBPUkNDID0gIiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7YmluZGlyfS9vcmNjIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotIgotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0JIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KLQlybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCi0Jcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB0ZXN0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wdGVzdC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5ODA2NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wdGVzdC5pbmMKQEAgLTAsMCArMSwyMyBAQAoraW5oZXJpdCBwdGVzdC1nbm9tZQorCitURVNUX0ZJTEVTX1BBVEggPSAiJHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ3N0cmVhbWVyLTEuMC90ZXN0LWZpbGVzIgorUlVOX1BURVNUX0ZJTEUgPSAiJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0IgorCitFWFRSQV9PRU1FU09OICs9ICItRHRlc3QtZmlsZXMtcGF0aD0ke1RFU1RfRklMRVNfUEFUSH0iCisKK0dTVF9URVNUX1NVSVRFX05BTUUgPz0gImdzdHJlYW1lci0xLjAiCisKKyMgVXNpbmcgZG9faW5zdGFsbF9wdGVzdF9iYXNlIGluc3RlYWQgb2YgZG9faW5zdGFsbF9wdGVzdCwgc2luY2UKKyMgdGhlIGRlZmF1bHQgZG9faW5zdGFsbF9wdGVzdF9iYXNlIGlzIGhhcmRjb2RlZCB0byBleHBlY3QgTWFrZWZpbGVzLgorZG9faW5zdGFsbF9wdGVzdF9iYXNlKCkgeworICAgICMgR2VuZXJhdGUgcnVuLXB0ZXN0IGZpbGUKKyAgICBlY2hvICIjIS91c3IvYmluL2VudiBzaCIgPiAiJHtSVU5fUFRFU1RfRklMRX0iCisgICAgZWNobyAiZ25vbWUtZGVza3RvcC10ZXN0aW5nLXJ1bm5lciAke0dTVF9URVNUX1NVSVRFX05BTUV9IiA+PiAiJHtSVU5fUFRFU1RfRklMRX0iCisgICAgY2htb2QgMDc1NSAiJHtSVU5fUFRFU1RfRklMRX0iCisKKyAgICAjIEluc3RhbGwgYWRkaXRpb25hbCBmaWxlcyByZXF1aXJlZCBieSB0ZXN0cworICAgIGlmIFsgLWQgIiR7U30vdGVzdHMvZmlsZXMiIF0gOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgIiR7RH0vJHtURVNUX0ZJTEVTX1BBVEh9IgorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgIiR7U30vdGVzdHMvZmlsZXMiLyogIiR7RH0vJHtURVNUX0ZJTEVTX1BBVEh9IgorICAgIGZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLzAwMDEtbWVzb24uYnVpbGQtZml4LWJ1aWxkcy13aXRoLXB5dGhvbi0zLjgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLzAwMDEtbWVzb24uYnVpbGQtZml4LWJ1aWxkcy13aXRoLXB5dGhvbi0zLjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUzMTA4YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24vMDAwMS1tZXNvbi5idWlsZC1maXgtYnVpbGRzLXdpdGgtcHl0aG9uLTMuOC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIDYxY2ZkMWI0OWRjODJiYWYxNGJiMzZkODhiNmM1YmU3YjhjM2QyM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBEZWMgMjAxOSAxODoxNjo0MSArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZml4IGJ1aWxkcyB3aXRoIHB5dGhvbiAzLjgKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi9tZXJnZV9yZXF1ZXN0cy8xNF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAxZGE4MWQ1Li4zZTBkYjM4IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMjQsNyArMjQsNyBAQCBweWdvYmplY3RfZGVwID0gZGVwZW5kZW5jeSgncHlnb2JqZWN0LTMuMCcsIGZhbGxiYWNrOiBbJ3B5Z29iamVjdCcsICdweWdvYmplY3RfZAorIAorIHB5bW9kID0gaW1wb3J0KCdweXRob24nKQorIHB5dGhvbiA9IHB5bW9kLmZpbmRfaW5zdGFsbGF0aW9uKGdldF9vcHRpb24oJ3B5dGhvbicpKQorLXB5dGhvbl9kZXAgPSBweXRob24uZGVwZW5kZW5jeShyZXF1aXJlZCA6IHRydWUpCisrcHl0aG9uX2RlcCA9IGRlcGVuZGVuY3koJ3B5dGhvbjMtZW1iZWQnLCByZXF1aXJlZCA6IHRydWUpCisgCisgcHl0aG9uX2FiaV9mbGFncyA9IHB5dGhvbi5nZXRfdmFyaWFibGUoJ0FCSUZMQUdTJywgJycpCisgcHlsaWJfbG9jID0gZ2V0X29wdGlvbignbGlicHl0aG9uLWRpcicpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzIyZjAyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIEdTdHJlYW1lciAxLjAiCi1IT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1weXRob24vIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzM0ZGVhZTRlMzk1Y2EwN2U3MjVhYjAwNzZhNWY3NDAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OTk2NDVmYmQxNzkwYzU4NDVjMDJhMzk5OGRjY2MxYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNDY5Yzg5NTUxMjZmNDFiOGNlMGJmNjg5YjcwMjlmMTgyY2QzMDVmNDIyYjNhOGRmMzViNzgwYmQ4MzQ3NDg5IgotCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKLVJERVBFTkRTXyR7UE59ICs9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCi0KLVBOUkVBTCA9ICJnc3QtcHl0aG9uIgotCi1TID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGlicHl0aG9uLWRpcj0ke2xpYmRpcn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCi0gICAgIyBOb3RlIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGZpbmQgbGluZSBpcyB0YWtlbiBmcm9tIHRoZSBEZWJpYW4gcGFja2FnaW5nIGZvcgotICAgICMgZ3N0LXB5dGhvbjEuMC4KLSAgICBmaW5kICIke0R9IiBcCi0gICAgICAgIC1uYW1lICcqLnB5YycgLW8gXAotICAgICAgICAtbmFtZSAnKi5weW8nIC1vIFwKLSAgICAgICAgLW5hbWUgJyoubGEnIC1vIFwKLSAgICAgICAgLW5hbWUgJ2xpYmdzdHB5dGhvbnBsdWdpbionIFwKLSAgICAgICAgLWRlbGV0ZQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTAyNGViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE2LjIuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIEdTdHJlYW1lciAxLjAiCitIT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1weXRob24vIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzM0ZGVhZTRlMzk1Y2EwN2U3MjVhYjAwNzZhNWY3NDAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWZpeC1idWlsZHMtd2l0aC1weXRob24tMy44LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjZhYzcwOTc2NzMzNGQ4ZDBhNzFjYjRlMDE2ZjZhYmViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwOGRmMzE0OGQ3M2Q5ZjQxNmQwMTY1NjQ3Mzc1ODVkOGVhNzYzZDkxMjAxNzMyZDQ0YjVmZTY4OGM2Mjg4YTgiCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgorUkRFUEVORFNfJHtQTn0gKz0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKKworUE5SRUFMID0gImdzdC1weXRob24iCisKK1MgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCisKKyMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIGludHJvc3BlY3Rpb24iCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGZlYXR1cmVzX2NoZWNrCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCisgICAgIyBOb3RlIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGZpbmQgbGluZSBpcyB0YWtlbiBmcm9tIHRoZSBEZWJpYW4gcGFja2FnaW5nIGZvcgorICAgICMgZ3N0LXB5dGhvbjEuMC4KKyAgICBmaW5kICIke0R9IiBcCisgICAgICAgIC1uYW1lICcqLnB5YycgLW8gXAorICAgICAgICAtbmFtZSAnKi5weW8nIC1vIFwKKyAgICAgICAgLW5hbWUgJyoubGEnIC1vIFwKKyAgICAgICAgLW5hbWUgJ2xpYmdzdHB5dGhvbnBsdWdpbionIFwKKyAgICAgICAgLWRlbGV0ZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk2MmE1MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA5NWNlOTUzZTM0Y2QwZTlmNWQ0MmNlNzkwMGE5NTcyZTdiYzhjYTQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1RpbS1QaGlsaXBwPTIwTT1DMz1CQ2xsZXI/PSA8dGltQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IEZyaSwgMTggT2N0IDIwMTkgMDA6NDI6MTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb246IGJ1aWxkIGdpciBldmVuIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGlmIGludHJvc3BlY3Rpb24KKyB3YXMgZW5hYmxlZCBleHBsaWNpdGx5CisKK1RoaXMgY2FuIGJlIG1hZGUgdG8gd29yayBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbgorY3Jvc3MtY29tcGlsaW5nLCBzbyBkZWZhdWx0IHRvIG5vdCBidWlsZGluZyBnLWkgc3R1ZmYKK3doZW4gY3Jvc3MtY29tcGlsaW5nLCBidXQgYWxsb3cgaXQgaWYgaW50cm9zcGVjdGlvbiB3YXMKK2VuYWJsZWQgZXhwbGljaXRseSB2aWEgLURpbnRyb3NwZWN0aW9uPWVuYWJsZWQuCisKK1NlZSBnc3RyZWFtZXIvZ3N0cmVhbWVyIzQ1NCBhbmQgZ3N0cmVhbWVyL2dzdHJlYW1lciMzODEuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzk1Y2U5NTNlMzRjZDBlOWY1ZDQyY2U3OTAwYTk1NzJlN2JjOGNhNDddCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IGUxZTNiMWQuLjNmNDVmMGUgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0xNzMsNyArMTczLDcgQEAgZW5kaWYKKyAKKyBnaXIgPSBmaW5kX3Byb2dyYW0oJ2ctaXItc2Nhbm5lcicsIHJlcXVpcmVkIDogZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpKQorIGdub21lID0gaW1wb3J0KCdnbm9tZScpCistYnVpbGRfZ2lyID0gZ2lyLmZvdW5kKCkgYW5kIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpCisrYnVpbGRfZ2lyID0gZ2lyLmZvdW5kKCkgYW5kIChub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykuZW5hYmxlZCgpKQorIGdpcl9pbml0X3NlY3Rpb24gPSBbICctLWFkZC1pbml0LXNlY3Rpb249ZXh0ZXJuIHZvaWQgZ3N0X2luaXQoZ2ludCosZ2NoYXIqKik7JyArIFwKKyAgICAgJ2dfc2V0ZW52KCJHU1RfUkVHSVNUUllfMS4wIiwgIkAwQCIsIFRSVUUpOycuZm9ybWF0KG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCkgKyAnL2dpcl9lbXB0eV9yZWdpc3RyeS5yZWcnKSArIFwKKyAgICAgJ2dfc2V0ZW52KCJHU1RfUExVR0lOX1BBVEhfMV8wIiwgIiIsIFRSVUUpOycgKyBcCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUzMDJlZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgb24gdG9wIG9mIEdTdHJlYW1lciBmb3IgYnVpbGRpbmcgYW4gUlRTUCBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1ydHNwLXNlcnZlci8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgotCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotCi1QTlJFQUwgPSAiZ3N0LXJ0c3Atc2VydmVyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzgwZDZhNDJlODU2YzMyZmNlZmE1MDhhZDU3MTI5ZTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjBhYmFjYWQyZjg2ZjYwZDYzNzgxZDJiMjQ0NDNjNTY2ODczM2U4YjA4NjY0YmJlZjk0MTI0OTA2ZDcwMDE0NCIKLQotUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWV4YW1wbGVzIC0tZGlzYWJsZS10ZXN0cyIKLQotIyBTdGFydGluZyB3aXRoIDEuOC4wIGdzdC1ydHNwLXNlcnZlciBpbmNsdWRlcyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2lucyBhcyB3ZWxsCi1MSUJWID0gIjEuMCIKLXJlcXVpcmUgZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKLQotZGVsZXRlX3BrZ19tNF9maWxlKCkgewotICAgICAgICAjIFRoaXMgbTQgZmlsZSBpcyBvdXQgb2YgZGF0ZSBhbmQgaXMgbWlzc2luZyBQS0dfQ09ORklHX1NZU1JPT1RfUEFUSCB0d2Vha3Mgd2hpY2ggd2UgbmVlZCBmb3IgaW50cm9zcGVjdGlvbgotICAgICAgICBybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmMzYzgzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTYuMi5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBvbiB0b3Agb2YgR1N0cmVhbWVyIGZvciBidWlsZGluZyBhbiBSVFNQIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXJ0c3Atc2VydmVyLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQiCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCisKK1BOUkVBTCA9ICJnc3QtcnRzcC1zZXJ2ZXIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YTk5ODcyNTgyMGM3NzFiYTQ1YmU2ZTE4YmZkZjczYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTA3YTI4MzdiM2IwNDgyMGNlNjgyNjRhNDkwOWY3MGMyMjFiODVkYmZmMGNlZGU3OTI2ZTljZGJiMWRjMjZlIgorCitTID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURleGFtcGxlcz1kaXNhYmxlZCBcCisgICAgLUR0ZXN0cz1kaXNhYmxlZCBcCisiCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworIyBTdGFydGluZyB3aXRoIDEuOC4wIGdzdC1ydHNwLXNlcnZlciBpbmNsdWRlcyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2lucyBhcyB3ZWxsCityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXBhY2thZ2luZy5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkvMDAwMS1nc3QtdmFhcGktTWFrZWZpbGUuYW0tQWRkLUVHTF9DRkxBR1MtdG8tbGliZ3N0dmFhcGktLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2I4OTg0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDU0MDNhODllNmE3YWM3MmEyM2UwMjIxMDc1YzBjMTliNWY4NWEwMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogV2VkLCAxMyBKdW4gMjAxOCAwOTowOToyNSAtMDMwMAotU3ViamVjdDogW1BBVENIXSBnc3QvdmFhcGkvTWFrZWZpbGUuYW06IEFkZCBFR0xfQ0ZMQUdTIHRvIGxpYmdzdHZhYXBpIENGTEFHUwotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotV2UgbmVlZCB0aGlzIHRvIHBhc3MgY29ycmVjdGx5IEVHTCBDRkxBR1Mgd2hlbiBidWlsZGluZyB3aXRoIEVHTCBzdXBwb3J0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KLS0tLQotIGdzdC92YWFwaS9NYWtlZmlsZS5hbSB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dzdC92YWFwaS9NYWtlZmlsZS5hbSBiL2dzdC92YWFwaS9NYWtlZmlsZS5hbQotaW5kZXggYjI5OWFjOTguLmQ2Y2FiNzFmIDEwMDY0NAotLS0tIGEvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtCi0rKysgYi9nc3QvdmFhcGkvTWFrZWZpbGUuYW0KLUBAIC0yNCw2ICsyNCwxMCBAQCBsaWJnc3R2YWFwaV9MSUJTICs9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmFhcGkvbGliZ3N0dmFhcGktZ2x4LmxhCi0gZW5kaWYKLSAKLSBpZiBVU0VfRUdMCi0rbGliZ3N0dmFhcGlfQ0ZMQUdTICs9IFwKLSsJJChFR0xfQ0ZMQUdTKQlcCi0rCSQoTlVMTCkKLSsKLSBsaWJnc3R2YWFwaV9MSUJTICs9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmFhcGkvbGliZ3N0dmFhcGktZWdsLmxhCi0gZW5kaWYKLSAKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGMyMTI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIlZBLUFQSSBzdXBwb3J0IHRvIEdTdHJlYW1lciIKLURFU0NSSVBUSU9OID0gImdzdHJlYW1lci12YWFwaSBjb25zaXN0cyBvZiBhIGNvbGxlY3Rpb24gb2YgVkEtQVBJIFwKLWJhc2VkIHBsdWdpbnMgZm9yIEdTdHJlYW1lciBhbmQgaGVscGVyIGxpYnJhcmllczogYHZhYXBpZGVjb2RlJywgXAotYHZhYXBpY29udmVydCcsIGFuZCBgdmFhcGlzaW5rJy4iCi0KLVJFQUxQTiA9ICJnc3RyZWFtZXItdmFhcGkiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtSRUFMUE59LyR7UkVBTFBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nc3QtdmFhcGktTWFrZWZpbGUuYW0tQWRkLUVHTF9DRkxBR1MtdG8tbGliZ3N0dmFhcGktLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdmFhcHNpbmstZG93bmdyYWRlLXRvLW1hcmdpbmFsLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTViMDhmNzY3NzczNTlkODdiMGI0YTU2MWRiMDVmMWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2I1NzBmNmYxZTc4Y2IzNjRmYmUzYzRmYjg3NTE4MjRlZTlkYjBjOTQyYmE2MWI2MjM4MGI5YjVhYmI3NjAzYSIKLQotUyA9ICIke1dPUktESVJ9LyR7UkVBTFBOfS0ke1BWfSIKLURFUEVORFMgPSAibGlidmEgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID89ICJvcGVuZ2wiCi0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLQotIyBPcGVuR0wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCi0jIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIGdseCwgZWdsLCBvciBubyBHTC4gQnkgZGVmYXVsdCwKLSMgdHJ5IGRldGVjdGluZyBYMTEgZmlyc3QsIGFuZCBpZiBmb3VuZCAod2l0aCBPcGVuR0wpLCB1c2UgR0xYLAotIyBvdGhlcndpc2UgdHJ5IHRvIGNoZWNrIGlmIEVHTCBjYW4gYmUgdXNlZC4KLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICdnbHgnLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgICAgICdvcGVuZ2wnLCAnZWdsJywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgZCksIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImRybSBcCi0gICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbZHJtXSA9ICItLWVuYWJsZS1kcm0sLS1kaXNhYmxlLWRybSx1ZGV2IGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKLVBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCx2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieHJhbmRyIGxpYnhyZW5kZXIiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyoubGEgJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyouYSIKLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlZGYyNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE2LjIuYmIKQEAgLTAsMCArMSw1NyBAQAorU1VNTUFSWSA9ICJWQS1BUEkgc3VwcG9ydCB0byBHU3RyZWFtZXIiCitERVNDUklQVElPTiA9ICJnc3RyZWFtZXItdmFhcGkgY29uc2lzdHMgb2YgYSBjb2xsZWN0aW9uIG9mIFZBLUFQSSBcCitiYXNlZCBwbHVnaW5zIGZvciBHU3RyZWFtZXIgYW5kIGhlbHBlciBsaWJyYXJpZXM6IGB2YWFwaWRlY29kZScsIFwKK2B2YWFwaWNvbnZlcnQnLCBhbmQgYHZhYXBpc2luaycuIgorCitSRUFMUE4gPSAiZ3N0cmVhbWVyLXZhYXBpIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UkVBTFBOfS8ke1JFQUxQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdmFhcHNpbmstZG93bmdyYWRlLXRvLW1hcmdpbmFsLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTNmN2NiNmE2NGJkZTI0ZTY3ZjU2MzM3NzQ4N2RjY2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTkxZGU3YjBhYjY0YTg1ZGQwODc1Yzk5MDcyMWU3YmU5NTUxOGY2MGUyYTkxMDZiZWNhMTYyMDA0ZWQ3YzYwMSIKKworUyA9ICIke1dPUktESVJ9LyR7UkVBTFBOfS0ke1BWfSIKK0RFUEVORFMgPSAibGlidmEgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGV4YW1wbGVzPWRpc2FibGVkIFwKKyIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR1RLRE9DX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHVEtET0NfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCisKKyMgT3BlbkdMIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciBnbHgsIGVnbCwgb3Igbm8gR0wuIEJ5IGRlZmF1bHQsCisjIHRyeSBkZXRlY3RpbmcgWDExIGZpcnN0LCBhbmQgaWYgZm91bmQgKHdpdGggT3BlbkdMKSwgdXNlIEdMWCwKKyMgb3RoZXJ3aXNlIHRyeSB0byBjaGVjayBpZiBFR0wgY2FuIGJlIHVzZWQuCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnZ2x4JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICAgICAnb3BlbmdsJywgJ2VnbCcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIGQpLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJkcm0gZW5jb2RlcnMgXAorICAgICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorCitQQUNLQUdFQ09ORklHW2RybV0gPSAiLUR3aXRoX2RybT15ZXMsLUR3aXRoX2RybT1ubyx1ZGV2IGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItRHdpdGhfZWdsPXllcywtRHdpdGhfZWdsPW5vLHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1tlbmNvZGVyc10gPSAiLUR3aXRoX2VuY29kZXJzPXllcywtRHdpdGhfZW5jb2RlcnM9bm8iCitQQUNLQUdFQ09ORklHW2dseF0gPSAiLUR3aXRoX2dseD15ZXMsLUR3aXRoX2dseD1ubyx2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRHdpdGhfd2F5bGFuZD15ZXMsLUR3aXRoX3dheWxhbmQ9bm8sd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRHdpdGhfeDExPXllcywtRHdpdGhfeDExPW5vLHZpcnR1YWwvbGlieDExIGxpYnhyYW5kciBsaWJ4cmVuZGVyIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyouc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8uZGVidWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLmEiCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAyLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVkNzE5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAyLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAzNWRiNGEyNDMzZmJkZjg2MTJjZjk4YjVhYWI1YjE0YWViNTM3MmY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1RpbS1QaGlsaXBwPTIwTT1DMz1CQ2xsZXI/PSA8dGltQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IFRodSwgMTcgT2N0IDIwMTkgMTI6MTM6MzUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb246IGJ1aWxkIGdpciBldmVuIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGlmIGludHJvc3BlY3Rpb24KKyB3YXMgZW5hYmxlZCBleHBsaWNpdGx5CisKK1RoaXMgY2FuIGJlIG1hZGUgdG8gd29yayBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbgorY3Jvc3MtY29tcGlsaW5nLCBzbyBkZWZhdWx0IHRvIG5vdCBidWlsZGluZyBnLWkgc3R1ZmYKK3doZW4gY3Jvc3MtY29tcGlsaW5nLCBidXQgYWxsb3cgaXQgaWYgaW50cm9zcGVjdGlvbiB3YXMKK2VuYWJsZWQgZXhwbGljaXRseSB2aWEgLURpbnRyb3NwZWN0aW9uPWVuYWJsZWQuCisKK0ZpeGVzICM0NTQgYW5kICMzODEuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzM1ZGI0YTI0MzNmYmRmODYxMmNmOThiNWFhYjViMTRhZWI1MzcyZjhdCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDkwZDk4ZDhlYi4uYTQ3ZTdmMzRlIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNDY2LDcgKzQ2Niw3IEBAIHJ0X2xpYiA9IGNjLmZpbmRfbGlicmFyeSgncnQnLCByZXF1aXJlZCA6IGZhbHNlKQorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKyAKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV9ESVNBQkxFIiwgInllcyIsIFRSVUUpOycgKyBcCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMy1tZXNvbi1BZGQtdmFsZ3JpbmQtZmVhdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTMzNDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMy1tZXNvbi1BZGQtdmFsZ3JpbmQtZmVhdHVyZS5wYXRjaApAQCAtMCwwICsxLDc0IEBACitGcm9tIGY2Yzc5NzNjMDNkOWJhN2RhYjYwYzQ5NmU3NjhjNWU2YzRlZTgyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorRGF0ZTogU3VuLCAyMCBPY3QgMjAxOSAxMDozNjo0NCArMDIwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogQWRkIHZhbGdyaW5kIGZlYXR1cmUKKworVGhpcyBhbGxvd3MgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBWYWxncmluZCBzdXBwb3J0LiBTaW5jZSBWYWxncmluZCBpcworYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeSwgc3VjaCBhIGZlYXR1cmUgaXMgbmVlZGVkIGJ5IGJ1aWxkIGVudmlyb25lbW50cworc3VjaCBhcyBZb2N0byB0byBtYWtlIHN1cmUgYnVpbGRzIGFyZSBkZXRlcm1pbmlzdGljLiBUaGVzZSBjaGFuZ2VzIGFsc28KK2FkZCBtb3JlIFZhbGdyaW5kIHNwZWNpZmljIGNvbmZpZ3VyZSBsb2cgb3V0cHV0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgIHwgMjMgKysrKysrKysrKysrKysrKysrKysrKy0KKyBtZXNvbl9vcHRpb25zLnR4dCB8ICAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IGI1NWVjYzUuLjQ3NTE3NjEgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0xOTksNyArMTk5LDYgQEAgY2hlY2tfaGVhZGVycyA9IFsKKyAgICdzeXMvd2FpdC5oJywKKyAgICd1Y29udGV4dC5oJywKKyAgICd1bmlzdGQuaCcsCistICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCisgICAnc3lzL3Jlc291cmNlLmgnLAorIF0KKyAKK0BAIC0yMTQsNiArMjEzLDI4IEBAIGZvcmVhY2ggaCA6IGNoZWNrX2hlYWRlcnMKKyAgIGVuZGlmCisgZW5kZm9yZWFjaAorIAorK3ZhbGdyaW5kX29wdGlvbiA9IGdldF9vcHRpb24oJ3ZhbGdyaW5kJykKKytpZiB2YWxncmluZF9vcHRpb24uZGlzYWJsZWQoKQorKyAgbWVzc2FnZSgnVmFsZ3JpbmQgc3VwcG9ydCBub3QgcmVxdWVzdGVkOyBkaXNhYmxlZC4nKQorK2Vsc2UKKysgIHZhbGdyaW5kX2hlYWRlciA9ICd2YWxncmluZC92YWxncmluZC5oJworKyAgaGFzX3ZhbGdyaW5kX2hlYWRlciA9IGNjLmhhc19oZWFkZXIodmFsZ3JpbmRfaGVhZGVyKQorKyAgaWYgaGFzX3ZhbGdyaW5kX2hlYWRlcgorKyAgICBtZXNzYWdlKCdWYWxncmluZCBzdXBwb3J0IHJlcXVlc3RlZCwgYW5kIGhlYWRlciAnICsgdmFsZ3JpbmRfaGVhZGVyICsgXAorKyAgICAgICAgJyBmb3VuZC4gRW5hYmxlZCBWYWxncmluZCBzdXBwb3J0LicpCisrICAgIGRlZmluZSA9ICdIQVZFXycgKyB2YWxncmluZF9oZWFkZXIudW5kZXJzY29yaWZ5KCkudG9fdXBwZXIoKQorKyAgICBjZGF0YS5zZXQoZGVmaW5lLCAxKQorKyAgZWxzZQorKyAgICBpZiB2YWxncmluZF9vcHRpb24uZW5hYmxlZCgpCisrICAgICAgZXJyb3IoJ1ZhbGdyaW5kIHN1cHBvcnQgcmVxdWVzdGVkIGFuZCBzZXQgYXMgcmVxdWlyZWQsIGJ1dCBoZWFkZXIgJyArIFwKKysgICAgICAgIHZhbGdyaW5kX2hlYWRlciArICcgbm90IGZvdW5kLicpCisrICAgIGVsc2UKKysgICAgICBtZXNzYWdlKCdWYWxncmluZCBzdXBwb3J0IHJlcXVlc3RlZCwgYnV0IGhlYWRlciAnICsgdmFsZ3JpbmRfaGVhZGVyICsgXAorKyAgICAgICAgJyBub3QgZm91bmQuIERpc2FibGluZyBWYWxncmluZCBzdXBwb3J0LicpCisrICAgIGVuZGlmCisrICBlbmRpZgorK2VuZGlmCisrCisgaWYgY2MuaGFzX21lbWJlcignc3RydWN0IHRtJywgJ3RtX2dtdG9mZicsIHByZWZpeCA6ICcjaW5jbHVkZSA8dGltZS5oPicpCisgICBjZGF0YS5zZXQoJ0hBVkVfVE1fR01UT0ZGJywgMSkKKyBlbmRpZgorZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKK2luZGV4IGU3ZmY3YmEuLjhhZmRlMzkgMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0xOSw2ICsxOSw3IEBAIG9wdGlvbignbWVtb3J5LWFsaWdubWVudCcsIHR5cGU6ICdjb21ibycsCisgCisgIyBGZWF0dXJlIG9wdGlvbnMKKyBvcHRpb24oJ2NoZWNrJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ0J1aWxkIHVuaXQgdGVzdCBsaWJyYXJpZXMnKQorK29wdGlvbigndmFsZ3JpbmQnLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnRW5hYmxlIFZhbGdyaW5kIHN1cHBvcnQnKQorIG9wdGlvbignbGlidW53aW5kJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBsaWJ1bndpbmQgdG8gZ2VuZXJhdGUgYmFja3RyYWNlcycpCisgb3B0aW9uKCdsaWJkdycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdVc2UgbGliZHcgdG8gZ2VuZXJhdGUgYmV0dGVyIGJhY2t0cmFjZXMgZnJvbSBsaWJ1bndpbmQnKQorIG9wdGlvbignZGJnaGVscCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdVc2UgZGJnaGVscCB0byBnZW5lcmF0ZSBiYWNrdHJhY2VzJykKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDA0LW1lc29uLUFkZC1vcHRpb24tZm9yLWluc3RhbGxlZC10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDA0LW1lc29uLUFkZC1vcHRpb24tZm9yLWluc3RhbGxlZC10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTZjNDRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMjU3IEBACitGcm9tIGI4NDM0MDAyODQ3NTE5Njg4NjI3NTFkZmU5Mzg1M2YxNTE1NTFjNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorRGF0ZTogRnJpLCAyNSBPY3QgMjAxOSAwMDowNjoyNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogQWRkIG9wdGlvbiBmb3IgaW5zdGFsbGVkIHRlc3RzCisKK1RoaXMgYWRkcyBhbiBvcHRpb24gZm9yIHByb2R1Y2luZyBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgdGhlIHVuaXQgdGVzdHMuCitUaGVzZSB2ZXJzaW9ucyBkb24ndCBuZWVkIG1lc29uIHRvIHJ1biAob25seSBhIHNtYWxsIHNoZWxsIHNjcmlwdCkuIFRoaXMKK21ha2VzIGl0IGVhc2llciB0byBydW4gY3Jvc3MgY29tcGlsZWQgdGVzdHMgb24gYSB0YXJnZXQgbWFjaGluZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CistLS0KKyBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkgICAgIHwgMTggKysrKysrCisgYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1zaHNjcmlwdC5weSB8IDI1ICsrKysrKysrCisgbWVzb25fb3B0aW9ucy50eHQgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICsKKyB0ZXN0cy9jaGVjay9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKy0KKyB0ZXN0cy9maWxlcy90ZXN0ZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1zaHNjcmlwdC5weQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9maWxlcy90ZXN0ZmlsZQorCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1kZXNjLnB5IGIvYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1kZXNjLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjllOGEwZgorLS0tIC9kZXYvbnVsbAorKysrIGIvYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1kZXNjLnB5CitAQCAtMCwwICsxLDE4IEBACisraW1wb3J0IHN5cworK2ltcG9ydCBvcworK2ltcG9ydCBhcmdwYXJzZQorKworK2RlZiB3cml0ZV90ZW1wbGF0ZShmaWxlbmFtZSwgZGF0YSk6CisrICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmOgorKyAgICAgICAgZi53cml0ZShkYXRhKQorKworK2RlZiBidWlsZF90ZW1wbGF0ZSh0ZXN0ZGlyLCB0ZXN0bmFtZSk6CisrICAgIHJldHVybiAiW1Rlc3RdXG5UeXBlPXNlc3Npb25cbkV4ZWM9e31cbiIuZm9ybWF0KG9zLnBhdGguam9pbih0ZXN0ZGlyLCB0ZXN0bmFtZSkpCisrCisrYXJncGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0dlbmVyYXRlIGluc3RhbGxlZC10ZXN0IGRhdGEuJykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3QtZXhlY2RpcicsIG1ldGF2YXI9J2RpcicsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IGRpcmVjdG9yeScpCisrYXJncGFyc2VyLmFkZF9hcmd1bWVudCgnLS10ZXN0bmFtZScsIG1ldGF2YXI9J25hbWUnLCByZXF1aXJlZD1UcnVlLCBoZWxwPSdJbnN0YWxsZWQgdGVzdCBuYW1lJykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIG1ldGF2YXI9J2ZpbGUnLCByZXF1aXJlZD1UcnVlLCBoZWxwPSdPdXRwdXQgZmlsZScpCisrYXJncyA9IGFyZ3BhcnNlci5wYXJzZV9hcmdzKCkKKysKKyt3cml0ZV90ZW1wbGF0ZShhcmdzLm91dHB1dCwgYnVpbGRfdGVtcGxhdGUoYXJncy50ZXN0X2V4ZWNkaXIsIGFyZ3MudGVzdG5hbWUpKQorZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3Qtc2hzY3JpcHQucHkgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNWRhODZmYgorLS0tIC9kZXYvbnVsbAorKysrIGIvYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1zaHNjcmlwdC5weQorQEAgLTAsMCArMSwyNSBAQAorK2ltcG9ydCBzeXMKKytpbXBvcnQgb3MKKytpbXBvcnQgYXJncGFyc2UKKysKKytkZWYgd3JpdGVfdGVtcGxhdGUoZmlsZW5hbWUsIGRhdGEpOgorKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3JykgYXMgZjoKKysgICAgICAgIGYud3JpdGUoZGF0YSkKKysKKytkZWYgYnVpbGRfdGVtcGxhdGUodGVzdGRpciwgdGVzdG5hbWUpOgorKyAgICByZXR1cm4gJycuam9pbihbCisrICAgICAgICAiIyEvdXNyL2Jpbi9lbnYgc2hcbiIsCisrICAgICAgICAiZXhwb3J0IEdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFM9JydcbiIsCisrICAgICAgICAiZXhwb3J0IENLX0RFRkFVTFRfVElNRU9VVD0yMFxuIiwKKysgICAgICAgICJleHBvcnQgR1NUX1BMVUdJTl9MT0FESU5HX1dISVRFTElTVD0nZ3N0cmVhbWVyJ1xuIiwKKysgICAgICAgICJ7fVxuIi5mb3JtYXQob3MucGF0aC5qb2luKHRlc3RkaXIsIHRlc3RuYW1lKSksCisrICAgIF0pCisrCisrYXJncGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0dlbmVyYXRlIGluc3RhbGxlZC10ZXN0IGRhdGEuJykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3QtZXhlY2RpcicsIG1ldGF2YXI9J2RpcicsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IGRpcmVjdG9yeScpCisrYXJncGFyc2VyLmFkZF9hcmd1bWVudCgnLS10ZXN0bmFtZScsIG1ldGF2YXI9J25hbWUnLCByZXF1aXJlZD1UcnVlLCBoZWxwPSdJbnN0YWxsZWQgdGVzdCBuYW1lJykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIG1ldGF2YXI9J2ZpbGUnLCByZXF1aXJlZD1UcnVlLCBoZWxwPSdPdXRwdXQgZmlsZScpCisrYXJncyA9IGFyZ3BhcnNlci5wYXJzZV9hcmdzKCkKKysKKyt3cml0ZV90ZW1wbGF0ZShhcmdzLm91dHB1dCwgYnVpbGRfdGVtcGxhdGUoYXJncy50ZXN0X2V4ZWNkaXIsIGFyZ3MudGVzdG5hbWUpKQorK29zLmNobW9kKGFyZ3Mub3V0cHV0LCAwbzc1NSkKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCA4YWZkZTM5Li44ODg0ZGNjIDEwMDY0NAorLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrKyBiL21lc29uX29wdGlvbnMudHh0CitAQCAtMTYsNiArMTYsOCBAQCBvcHRpb24oJ3BvaXNvbmluZycsIHR5cGUgOiAnYm9vbGVhbicsIHZhbHVlIDogZmFsc2UsIGRlc2NyaXB0aW9uIDogJ0VuYWJsZSBwb2lzbworIG9wdGlvbignbWVtb3J5LWFsaWdubWVudCcsIHR5cGU6ICdjb21ibycsCisgICAgICAgIGNob2ljZXMgOiBbJzEnLCAnMicsICc0JywgJzgnLCAnMTYnLCAnMzInLCAnNjQnLCAnMTI4JywgJzI1NicsICc1MTInLCAnMTAyNCcsICcyMDQ4JywgJzQwOTYnLCAnODE5MicsICdtYWxsb2MnLCAncGFnZXNpemUnXSwKKyAgICAgICAgdmFsdWU6ICdtYWxsb2MnKQorK29wdGlvbignaW5zdGFsbGVkLXRlc3RzJywgdHlwZSA6ICdib29sZWFuJywgdmFsdWUgOiBmYWxzZSwgZGVzY3JpcHRpb24gOiAnZW5hYmxlIGluc3RhbGxlZCB0ZXN0cycpCisrb3B0aW9uKCd0ZXN0LWZpbGVzLXBhdGgnLCB0eXBlIDogJ3N0cmluZycsIGRlc2NyaXB0aW9uIDogJ1BhdGggd2hlcmUgdG8gZmluZCB0ZXN0IGZpbGVzJykKKyAKKyAjIEZlYXR1cmUgb3B0aW9ucworIG9wdGlvbignY2hlY2snLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnQnVpbGQgdW5pdCB0ZXN0IGxpYnJhcmllcycpCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svbWVzb24uYnVpbGQgYi90ZXN0cy9jaGVjay9tZXNvbi5idWlsZAoraW5kZXggMDRkYTgzZi4uMmRiN2Y3NiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2NoZWNrL21lc29uLmJ1aWxkCisrKysgYi90ZXN0cy9jaGVjay9tZXNvbi5idWlsZAorQEAgLTExOCwxMSArMTE4LDE3IEBAIGlmIGFkZF9sYW5ndWFnZXMoJ2NwcCcsIHJlcXVpcmVkIDogZmFsc2UpCisgICBdCisgZW5kaWYKKyAKKyt0ZXN0X2ZpbGVzX3BhdGggPSBnZXRfb3B0aW9uKCd0ZXN0LWZpbGVzLXBhdGgnKQorK2lmIHRlc3RfZmlsZXNfcGF0aCA9PSAnJworKyAgdGVzdF9maWxlc19wYXRoID0gbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkgKyAnLy4uL2ZpbGVzJworK2VuZGlmCisrbWVzc2FnZSgnVXNpbmcgcGF0aCAiQDBAIiBhcyB0aGUgcGF0aCB0byByZWFkIHRlc3QgZmlsZXMgZnJvbScuZm9ybWF0KHRlc3RfZmlsZXNfcGF0aCkpCisrCisgdGVzdF9kZWZpbmVzID0gWworICAgJy1VR19ESVNBQkxFX0FTU0VSVCcsCisgICAnLVVHX0RJU0FCTEVfQ0FTVF9DSEVDS1MnLAorICAgJy1ER1NUX0NIRUNLX1RFU1RfRU5WSVJPTk1FTlRfQkVBQ09OPSJHU1RfU1RBVEVfSUdOT1JFX0VMRU1FTlRTIicsCistICAnLURURVNURklMRT0iJyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpICsgJy9tZXNvbi5idWlsZCInLAorKyAgJy1EVEVTVEZJTEU9IkAwQCInLmZvcm1hdCh0ZXN0X2ZpbGVzX3BhdGggKyAnL3Rlc3RmaWxlJyksCisgICAnLURHU1RfVVNFX1VOU1RBQkxFX0FQSScsCisgICAnLURHU1RfRElTQUJMRV9ERVBSRUNBVEVEJywKKyBdCitAQCAtMTM3LDYgKzE0MywxNCBAQCBlbmRpZgorIGdsaWJfZGVwcyA9IFtnaW9fZGVwLCBnb2JqZWN0X2RlcCwgZ21vZHVsZV9kZXAsIGdsaWJfZGVwXQorIGdzdF9kZXBzID0gW2dzdF9kZXAsIGdzdF9iYXNlX2RlcCwgZ3N0X2NoZWNrX2RlcCwgZ3N0X25ldF9kZXAsIGdzdF9jb250cm9sbGVyX2RlcF0KKyAKKytpbnN0YWxsZWRfdGVzdHNfZGF0YWRpciA9IGpvaW5fcGF0aHMocHJlZml4LCBnZXRfb3B0aW9uKCdkYXRhZGlyJyksICdpbnN0YWxsZWQtdGVzdHMnLCAnZ3N0cmVhbWVyLTEuMCcpCisraW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIgPSBqb2luX3BhdGhzKHByZWZpeCwgbGliZXhlY2RpciwgJ2luc3RhbGxlZC10ZXN0cycsICdnc3RyZWFtZXItMS4wJykKKytpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZCA9IGdldF9vcHRpb24oJ2luc3RhbGxlZC10ZXN0cycpCisrCisrcHl0aG9uID0gaW1wb3J0KCdweXRob24nKS5maW5kX2luc3RhbGxhdGlvbigpCisrZ2VuX2luc3RhbGxlZF90ZXN0X2Rlc2MgPSBmaWxlcygnLi4vLi4vYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1kZXNjLnB5JykKKytnZW5faW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQgPSBmaWxlcygnLi4vLi4vYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1zaHNjcmlwdC5weScpCisrCisgZm9yZWFjaCB0IDogY29yZV90ZXN0cworICAgZm5hbWUgPSB0WzBdCisgICB0ZXN0X25hbWUgPSBmbmFtZS5zcGxpdCgnLicpWzBdLnVuZGVyc2NvcmlmeSgpCitAQCAtMTUwLDggKzE2NCwzOCBAQCBmb3JlYWNoIHQgOiBjb3JlX3Rlc3RzCisgICAgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzIDogW2NvbmZpZ2luY10sCisgICAgICAgICBsaW5rX3dpdGggOiBsaW5rX3dpdGhfbGlicywKKyAgICAgICAgIGRlcGVuZGVuY2llcyA6IHRlc3RfZGVwcyArIGdsaWJfZGVwcyArIGdzdF9kZXBzLAorKyAgICAgICAgaW5zdGFsbF9kaXI6IGluc3RhbGxlZF90ZXN0c19leGVjZGlyLAorKyAgICAgICAgaW5zdGFsbDogaW5zdGFsbGVkX3Rlc3RzX2VuYWJsZWQKKyAgICAgKQorIAorKyAgICBpZiBpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZAorKyAgICAgIGluc3RhbGxlZF90ZXN0X3Noc2NyaXB0ID0gdGVzdF9uYW1lICsgJy5zaCcKKysgICAgICBzaHNjcmlwdCA9IGN1c3RvbV90YXJnZXQgKHRlc3RfbmFtZSArICdfc2hzY3JpcHQnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0OiBpbnN0YWxsZWRfdGVzdF9zaHNjcmlwdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5faW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXRlc3QtZXhlY2Rpcj1AMEAnLmZvcm1hdChpbnN0YWxsZWRfdGVzdHNfZXhlY2RpciksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXRlc3RuYW1lPUAwQCcuZm9ybWF0KHRlc3RfbmFtZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW91dHB1dD1AMEAnLmZvcm1hdChqb2luX3BhdGhzKCdAT1VURElSQCcsIGluc3RhbGxlZF90ZXN0X3Noc2NyaXB0KSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbDogdHJ1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxfZGlyOiBpbnN0YWxsZWRfdGVzdHNfZXhlY2RpcikKKysKKysgICAgICBpbnN0YWxsZWRfdGVzdF9kZXNjID0gdGVzdF9uYW1lICsgJy50ZXN0JworKyAgICAgIGRhdGEgPSBjdXN0b21fdGFyZ2V0KHRlc3RfbmFtZSArICdfZGVzYycsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0OiBpbnN0YWxsZWRfdGVzdF9kZXNjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9pbnN0YWxsZWRfdGVzdF9kZXNjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdC1leGVjZGlyPUAwQCcuZm9ybWF0KGluc3RhbGxlZF90ZXN0c19leGVjZGlyKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXRlc3RuYW1lPUAwQCcuZm9ybWF0KGluc3RhbGxlZF90ZXN0X3Noc2NyaXB0KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW91dHB1dD1AMEAnLmZvcm1hdChqb2luX3BhdGhzKCdAT1VURElSQCcsIGluc3RhbGxlZF90ZXN0X2Rlc2MpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGw6IHRydWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbF9kaXI6IGluc3RhbGxlZF90ZXN0c19kYXRhZGlyKQorKyAgICBlbmRpZgorKworICAgICBlbnYgPSBlbnZpcm9ubWVudCgpCisgICAgIGVudi5zZXQoJ0dTVF9QTFVHSU5fUEFUSF8xXzAnLCBtZXNvbi5idWlsZF9yb290KCkpCisgICAgIGVudi5zZXQoJ0dTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wJywgJycpCitkaWZmIC0tZ2l0IGEvdGVzdHMvZmlsZXMvdGVzdGZpbGUgYi90ZXN0cy9maWxlcy90ZXN0ZmlsZQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjg5OTU0ZTAKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RzL2ZpbGVzL3Rlc3RmaWxlCitAQCAtMCwwICsxLDgwIEBACisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2NhcGZpeC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC9jYXBmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhM2Q1YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC9jYXBmaXgucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorQ3VycmVudGx5IGdzdHJlYW1lciBjb25maWd1cmF0aW9uIGRlcGVuZHMgb24gd2hldGhlciBzZXRjYXAgaXMgZm91bmQgb24gdGhlIGhvc3QKK3N5c3RlbS4gVHVybiB0aGlzIGludG8gYSBjb25maWd1cmUgb3B0aW9uIHRvIG1ha2UgYnVpbGRzIGRldGVyaW5pc3RpYy4KKworUlAgMjAyMC8yLzE5CitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogZ3N0cmVhbWVyLTEuMTYuMS9saWJzL2dzdC9oZWxwZXJzL21lc29uLmJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0cmVhbWVyLTEuMTYuMS5vcmlnL2xpYnMvZ3N0L2hlbHBlcnMvbWVzb24uYnVpbGQKKysrKyBnc3RyZWFtZXItMS4xNi4xL2xpYnMvZ3N0L2hlbHBlcnMvbWVzb24uYnVpbGQKK0BAIC03Myw3ICs3MywxMiBAQCBpZiBoYXZlX3B0cAorICAgICBlbmRpZgorICAgZW5kaWYKKyAKKy0gIHNldGNhcCA9IGZpbmRfcHJvZ3JhbSgnc2V0Y2FwJywgJy91c3Ivc2Jpbi9zZXRjYXAnLCAnL3NiaW4vc2V0Y2FwJywgcmVxdWlyZWQgOiBmYWxzZSkKKysgIHNldGNhcF9mZWF0dXJlID0gZ2V0X29wdGlvbignc2V0Y2FwJykKKysgIGlmIHNldGNhcF9mZWF0dXJlLmRpc2FibGVkKCkKKysgICAgc2V0Y2FwID0gZmluZF9wcm9ncmFtKCdkb250ZXhpc3QnLCByZXF1aXJlZCA6IGZhbHNlKQorKyAgZWxzZQorKyAgICBzZXRjYXAgPSBmaW5kX3Byb2dyYW0oJ3NldGNhcCcsICcvdXNyL3NiaW4vc2V0Y2FwJywgJy9zYmluL3NldGNhcCcsIHJlcXVpcmVkIDogZmFsc2UpCisrICBlbmRpZgorIAorICAgIyB1c2VyL2dyb3VwIHRvIGNoYW5nZSB0byBpbiBnc3QtcHRwLWhlbHBlcgorICAgcHRwX2hlbHBlcl9zZXR1aWRfdXNlciA9IGdldF9vcHRpb24oJ3B0cC1oZWxwZXItc2V0dWlkLXVzZXInKQorSW5kZXg6IGdzdHJlYW1lci0xLjE2LjEvbWVzb25fb3B0aW9ucy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3RyZWFtZXItMS4xNi4xLm9yaWcvbWVzb25fb3B0aW9ucy50eHQKKysrKyBnc3RyZWFtZXItMS4xNi4xL21lc29uX29wdGlvbnMudHh0CitAQCAtMjYsNiArMjYsNyBAQCBvcHRpb24oJ2xpYnVud2luZCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhCisgb3B0aW9uKCdsaWJkdycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdVc2UgbGliZHcgdG8gZ2VuZXJhdGUgYmV0dGVyIGJhY2t0cmFjZXMgZnJvbSBsaWJ1bndpbmQnKQorIG9wdGlvbignZGJnaGVscCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdVc2UgZGJnaGVscCB0byBnZW5lcmF0ZSBiYWNrdHJhY2VzJykKKyBvcHRpb24oJ2Jhc2gtY29tcGxldGlvbicsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdJbnN0YWxsIGJhc2ggY29tcGxldGlvbiBmaWxlcycpCisrb3B0aW9uKCdzZXRjYXAnLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnVXNlIHNldGNhcCcpCisgCisgIyBDb21tb24gZmVhdHVyZSBvcHRpb25zCisgb3B0aW9uKCdleGFtcGxlcycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCB5aWVsZCA6IHRydWUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5MmY2My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotU1VNTUFSWSA9ICJHU3RyZWFtZXIgMS4wIG11bHRpbWVkaWEgZnJhbWV3b3JrIgotREVTQ1JJUFRJT04gPSAiR1N0cmVhbWVyIGlzIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB2aWRlbyBhbmQgc291bmQuIFwKLUl0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBmb3JtYXRzIGluY2x1ZGluZyBtcDMsIG9nZywgYXZpLCBtcGVnIGFuZCBxdWlja3RpbWUuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIrIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJjYXAgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBwdGVzdAotCi0jIFRoaXMgd2F5IGNvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IHdpbGwgY29tZSBmaXJzdAotIyAoaXQgaGFzIGEgY3VzdG9tIElOVFJPU1BFQ1RJT05fSU5JVCBtYWNybywgYW5kIHNvIG11c3QgYmUgdXNlZCBpbnN0ZWFkIG9mIG91ciBjb21tb24gaW50cm9zcGVjdGlvbi5tNCBmaWxlKQotYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggXAotICAgIGZpbGU6Ly9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYzUwNWZiODE4YjM2OTg4ZGFhYTg0NmU5ZTYzZWFiZTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDIyMTFjMzQ0N2M0ZGFhNTU5MTljNWMwZjQzYTgyYTZmYmI1MTc0MGQ1N2ZjM2FmMDYzOWQ0NmYxY2Y0Mzc3ZCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAndGVzdHMnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCwiCi1QQUNLQUdFQ09ORklHW2dzdC10cmFjZXItaG9va3NdID0gIi0tZW5hYmxlLWdzdC10cmFjZXItaG9va3MsLS1kaXNhYmxlLWdzdC10cmFjZXItaG9va3MsIgotUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0td2l0aC11bndpbmQsLS13aXRob3V0LXVud2luZCxsaWJ1bndpbmQiCi1QQUNLQUdFQ09ORklHW2R3XSA9ICItLXdpdGgtZHcsLS13aXRob3V0LWR3LGVsZnV0aWxzIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8iCi0KLSMgbXVzbCBsaWJjIGdlbmVyYXRlcyB3YXJuaW5ncyBpZiA8c3lzL3BvbGwuaD4gaXMgaW5jbHVkZWQgZGlyZWN0bHkKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfc3lzX3BvbGxfaD1ubyIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWJhc2gtY29tcGxldGlvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hICR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2luY2x1ZGUiCi1GSUxFU18ke1BOfS1iYXNoLWNvbXBsZXRpb24gKz0gIiR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zLyAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9oZWxwZXJzL2dzdCoiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7ZGF0YWRpcn0vZ2RiICR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9nZGIiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0gICAgICAgICMgVGhpcyBtNCBmaWxlIGlzIG91dCBvZiBkYXRlIGFuZCBpcyBtaXNzaW5nIFBLR19DT05GSUdfU1lTUk9PVF9QQVRIIHR3ZWFrcyB3aGljaCB3ZSBuZWVkIGZvciBpbnRyb3NwZWN0aW9uCi0gICAgICAgIHJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKLSAgICAgICAgcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QvLmxpYnM6JHtCfS9saWJzL2dzdC9iYXNlLy5saWJzIgotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkLWNoZWNrcwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgICAgICBvZV9ydW5tYWtlIC1DIHRlc3RzL2NoZWNrIERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gaW5zdGFsbC1wdGVzdAotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9L3Rlc3RzL2NoZWNrL01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIGluc3RhbGwgLW0gNzU1ICR7U30vdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLSAgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLSAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0gICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLSAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXC1lICdzL15NYWtlZmlsZTovX01ha2VmaWxlOi8nIFwKLSAgICAgICAgICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIC1lICdzL150b3Bfc3JjZGlyID0gXCguKlwpL3RvcF9zcmNkaXIgPSAuLycgXAotICAgICAgICAgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIC1lICdzL150b3BfYnVpbGRkaXIgPSBcKC4qXCkvdG9wX2J1aWxkZGlyID0gLi8nIFwKLSAgICAgICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19Ci0KLUNWRV9QUk9EVUNUID0gImdzdHJlYW1lciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYTg3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNi4yLmJiCkBAIC0wLDAgKzEsNzcgQEAKK1NVTU1BUlkgPSAiR1N0cmVhbWVyIDEuMCBtdWx0aW1lZGlhIGZyYW1ld29yayIKK0RFU0NSSVBUSU9OID0gIkdTdHJlYW1lciBpcyBhIG11bHRpbWVkaWEgZnJhbWV3b3JrIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdmlkZW8gYW5kIHNvdW5kLiBcCitJdCBzdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgZm9ybWF0cyBpbmNsdWRpbmcgbXAzLCBvZ2csIGF2aSwgbXBlZyBhbmQgcXVpY2t0aW1lLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdzdHJlYW1lciIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGliY2FwIGxpYnhtbDIgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCisKK1MgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1tZXNvbi1BZGQtdmFsZ3JpbmQtZmVhdHVyZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vY2FwZml4LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZTY2MWVkNWJkZjFkODk5NmU0MzAyMjhkMDIyNjI4ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlM2YwNDQyNDY3ODNmZDY4NTQzOTY0NzM3M2ZhMTNiYTE0ZjdhYjBiMzQ2ZWFkZDA2NDM3MDkyZjg0MTllOTRlIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGNoZWNrIFwKKyAgICAgICAgICAgICAgICAgICBkZWJ1ZyBcCisgICAgICAgICAgICAgICAgICAgdG9vbHMiCisKK1BBQ0tBR0VDT05GSUdbZGVidWddID0gIi1EZ3N0X2RlYnVnPXRydWUsLURnc3RfZGVidWc9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RyYWNlci1ob29rc10gPSAiLUR0cmFjZXJfaG9va3M9dHJ1ZSwtRHRyYWNlcl9ob29rcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbY2hlY2tdID0gIi1EY2hlY2s9ZW5hYmxlZCwtRGNoZWNrPWRpc2FibGVkIgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLUR0ZXN0cz1lbmFibGVkIC1EaW5zdGFsbGVkLXRlc3RzPXRydWUsLUR0ZXN0cz1kaXNhYmxlZCAtRGluc3RhbGxlZC10ZXN0cz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EdmFsZ3JpbmQ9ZW5hYmxlZCwtRHZhbGdyaW5kPWRpc2FibGVkLHZhbGdyaW5kLCIKK1BBQ0tBR0VDT05GSUdbdW53aW5kXSA9ICItRGxpYnVud2luZD1lbmFibGVkLC1EbGlidW53aW5kPWRpc2FibGVkLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbZHddID0gIi1EbGliZHc9ZW5hYmxlZCwtRGxpYmR3PWRpc2FibGVkLGVsZnV0aWxzIgorUEFDS0FHRUNPTkZJR1tiYXNoLWNvbXBsZXRpb25dID0gIi1EYmFzaC1jb21wbGV0aW9uPWVuYWJsZWQsLURiYXNoLWNvbXBsZXRpb249ZGlzYWJsZWQsYmFzaC1jb21wbGV0aW9uIgorUEFDS0FHRUNPTkZJR1t0b29sc10gPSAiLUR0b29scz1lbmFibGVkLC1EdG9vbHM9ZGlzYWJsZWQiCitQQUNLQUdFQ09ORklHW3NldGNhcF0gPSAiLURzZXRjYXA9ZW5hYmxlZCwtRHNldGNhcD1kaXNhYmxlZCxsaWJjYXAgbGliY2FwLW5hdGl2ZSIKKworIyBUT0RPOiBwdXQgdGhpcyBpbiBhIGdldHRleHQuYmJjbGFzcyBwYXRjaAorZGVmIGdldHRleHRfb2VtZXNvbihkKToKKyAgICBpZiBkLmdldFZhcignVVNFX05MUycpID09ICdubyc6CisgICAgICAgIHJldHVybiAnLURubHM9ZGlzYWJsZWQnCisgICAgIyBSZW1vdmUgdGhlIE5MUyBiaXRzIGlmIFVTRV9OTFMgaXMgbm8gb3IgSU5ISUJJVF9ERUZBVUxUX0RFUFMgaXMgc2V0CisgICAgaWYgZC5nZXRWYXIoJ0lOSElCSVRfREVGQVVMVF9ERVBTJykgYW5kIG5vdCBvZS51dGlscy5pbmhlcml0cyhkLCAnY3Jvc3MtY2FuYWRpYW4nKToKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICByZXR1cm4gJy1EbmxzPWVuYWJsZWQnCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURleGFtcGxlcz1kaXNhYmxlZCBcCisgICAgLURkYmdoZWxwPWRpc2FibGVkIFwKKyAgICAke0BnZXR0ZXh0X29lbWVzb24oZCl9IFwKKyIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR1RLRE9DX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHVEtET0NfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCitHSVJfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1iYXNoLWNvbXBsZXRpb24iCisKKyMgQWRkIHRoZSBjb3JlIGVsZW1lbnQgcGx1Z2lucyB0byB0aGUgbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hICR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2luY2x1ZGUiCitGSUxFU18ke1BOfS1iYXNoLWNvbXBsZXRpb24gKz0gIiR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zLyAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9oZWxwZXJzL2dzdCoiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7ZGF0YWRpcn0vZ2RiICR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9nZGIiCisKK0NWRV9QUk9EVUNUID0gImdzdHJlYW1lciIKKworcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHRlc3QuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9teGlsL2xpYm9teGlsXzAuOS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvbXhpbC9saWJvbXhpbF8wLjkuMy5iYgppbmRleCBkODNlYjQ1Li4yNzFjMmEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9teGlsL2xpYm9teGlsXzAuOS4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib214aWwvbGlib214aWxfMC45LjMuYmIKQEAgLTI0LDYgKzI0LDggQEAKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZG9jIC0tZGlzYWJsZS1XZXJyb3IiCiAKK1BST1ZJREVTICs9ICJ2aXJ0dWFsL2xpYm9teGlsIgorCiAjCiAjIFRoZSAuc28gZmlsZXMgdW5kZXIgJHtsaWJkaXJ9L2JlbGxhZ2lvIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdmVyc2lvbmVkIGFuZCBzeW1saW5rZWQuCiAjIE1ha2Ugc3VyZSB0aGV5IGdldCBwYWNrYWdlZCBpbiB0aGUgbWFpbiBwYWNrYWdlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzcuYmIKaW5kZXggMmVkODdhOC4uOGM1M2QxMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM3LmJiCkBAIC0yLDE4ICsyLDE2IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJMaWJwbmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMDA4NTA1MWJmMjY1YmFjMmJmYzM4YmM4OWY1MDAwMFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2VuZGxpbmU9MTQ0O21kNT04YWNkMjNkNTQ0NjIzODE2YjA5N2UwN2JlMDEzOTUwOVwKLSAgICAgICAgICAgICAgICAgICAgIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjAwODUwNTFiZjI2NWJhYzJiZmMzOGJjODlmNTAwMDAiCiBERVBFTkRTID0gInpsaWIiCiAKIExJQlYgPSAiMTYiCiAKLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfSR7TElCVn0vJHtCUH0udGFyLnh6IgogU1JDX1VSSVttZDVzdW1dID0gIjAxNWU4ZTE1ZGIxZWVjZGU1ZjJlYjllYjViNmU1OWU5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwNWU3MDgzNGQzNTM4MzUzN2I2NDkxZTdhZTg2NDFmMWE0YmVkMTg3NmRiZmUzNjEyMDFmYzgwODY4ZDg4Y2EiCiAKLU1JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCitNSVJST1JTICs9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfSR7TElCVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8iCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGlicG5nLm9yZy9wdWIvcG5nL2xpYnBuZy5odG1sIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yOC5iYgppbmRleCA3ODU1MDA4Li5iMTAwMTA4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIKQEAgLTMyLDcgKzMyLDExIEBACiBQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCiBQQUNLQUdFQ09ORklHW3JlZ3Rlc3RdID0gIi0tZW5hYmxlLXNxbGl0ZSwtLWRpc2FibGUtc3FsaXRlLHNxbGl0ZTMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnIG11bHRpbGliX2hlYWRlcgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgc25kZmlsZS5oCit9CiAKICMgVGhpcyBjYW4ndCBiZSByZXBsaWNhdGVkIGFuZCBpcyBqdXN0IGEgbWVtb3J5IGxlYWsuCiAjIGh0dHBzOi8vZ2l0aHViLmNvbS9lcmlrZC9saWJzbmRmaWxlL2lzc3Vlcy8zOTgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYwppbmRleCBlYzUxZDhiLi5jN2YzZTY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCkBAIC01NiwxMyArNTYsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wdWxzZWNvcmUvZmlsdGVyL2JpcXVhZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9NDttZDU9NmQ0NmQxMzY1MjA2NTI4YTIwMTM3MzU1OTI0MjMzYzEgXAogIgogCi1ERVBFTkRTID0gImxpYmF0b21pYy1vcHMgbGlic25kZmlsZTEgbGlidG9vbCBpbnRsdG9vbC1uYXRpdmUiCitERVBFTkRTID0gImxpYmF0b21pYy1vcHMgbGlic25kZmlsZTEgbGlidG9vbCIKICMgb3B0aW9uYWwKIERFUEVORFMgKz0gInVkZXYgYWxzYS1saWIgZ2xpYi0yLjAiCiBERVBFTkRTICs9ICJzcGVleGRzcCBsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIGxpYmNhcCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgYmFzaC1jb21wbGV0aW9uIHBrZ2NvbmZpZyB1c2VyYWRkIGdldHRleHQgcGVybG5hdGl2ZSBzeXN0ZW1kIG1hbnBhZ2VzIGdzZXR0aW5ncwogCisjIFdoZW4gY29tcGlsaW5nIGZvciBUaHVtYiBvciBUaHVtYjIsIGZyYW1lIHBvaW50ZXJzIF9tdXN0XyBiZSBkaXNhYmxlZCBzaW5jZSB0aGUKKyMgVGh1bWIgZnJhbWUgcG9pbnRlciBpbiByNyBjbGFzaGVzIHdpdGggcHVsc2VhdWRpbydzIHVzZSBvZiBpbmxpbmUgYXNtIHRvIG1ha2Ugc3lzY2FsbHMKKyMgKHdoZXJlIHI3IGlzIHVzZWQgZm9yIHRoZSBzeXNjYWxsIE5SKS4gSW4gbW9zdCBjYXNlcywgZnJhbWUgcG9pbnRlcnMgd2lsbCBiZQorIyBkaXNhYmxlZCBhdXRvbWF0aWNhbGx5IGR1ZSB0byB0aGUgb3B0aW1pc2F0aW9uIGxldmVsLCBidXQgYXBwZW5kIGFuIGV4cGxpY2l0CisjIC1mb21pdC1mcmFtZS1wb2ludGVyIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBvcHRpbWlzYXRpb24gaXMgc2V0IHRvIC1PMCBvciBmcmFtZQorIyBwb2ludGVycyBoYXZlIGJlZW4gZW5hYmxlZCBieSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBlYXJsaWVyIGluIENGTEFHUywgZXRjLgorQ0ZMQUdTX2FwcGVuZF9hcm0gPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKKwogIyAqLmRlc2t0b3AgcnVsZXMgd29udCBiZSBnZW5lcmF0ZWQgZHVyaW5nIGNvbmZpZ3VyZSBhbmQgYnVpbGQgd2lsbCBmYWlsCiAjIGlmIHVzaW5nIC0tZGlzYWJsZS1ubHMKIFVTRV9OTFMgPSAieWVzIgpAQCAtMTU4LDEyICsxNjYsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZ3JvdXBzIGF1ZGlvLHB1bHNlIC0tZ2lkIHB1bHNlIHB1bHNlIgogCitQQUNLQUdFUyA9KyAiXAorICAgICAgICAgICAgIGxpYnB1bHNlIFwKKyAgICAgICAgICAgICBsaWJwdWxzZS1tYWlubG9vcC1nbGliIFwKKyAgICAgICAgICAgICBsaWJwdWxzZS1zaW1wbGUgXAorICAgICAgICAgICAgIGxpYnB1bHNlY29tbW9uIFwKKyAgICAgICAgICAgICBsaWJwdWxzZWNvcmUgXAorICAgICAgICAgICAgICR7UE59LXBhLWluZm8gXAorICAgICAgICAgICAgICR7UE59LXNlcnZlciBcCisgICAgICAgICAgICAgJHtQTn0tbWlzYyBcCisgICAgICAgICAgICAgIgorCiAjIFRoZSBjb25zb2xlLWtpdCBtb2R1bGUgaXMgaW5jbHVkZWQgaGVyZSBleHBsaWNpdGx5IHNvIGJpdGJha2UgY2FuIG1hcCB0byB0aGUKICMgUkRFUEVORFMgd2UgZGVmaW5lIGZvciBpdCBpbiB0aGlzIHJlY2lwZSwgYW5kIHRoZXJlYnkgZW5zdXJlIHRoYXQgd2hlbgogIyBhZGRpbmcgdGhlIGNvbnNvbGUta2l0IG1vZHVsZSB0byBhbiBpbWFnZSwgd2UgYWxzbyBnZXQgdGhlIG5lY2Vzc2FyeQogIyBjb25zb2xla2l0IHBhY2thZ2UgcHJvZHVjZWQuCi1QQUNLQUdFUyA9KyAibGlicHVsc2Vjb3JlIGxpYnB1bHNlY29tbW9uIGxpYnB1bHNlIGxpYnB1bHNlLXNpbXBsZSBsaWJwdWxzZS1tYWlubG9vcC1nbGliIFwKLSAgICAgICAgICAgICBwdWxzZWF1ZGlvLXNlcnZlciBwdWxzZWF1ZGlvLW1pc2MgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGJ1cycsICdwdWxzZWF1ZGlvLW1vZHVsZS1jb25zb2xlLWtpdCcsICcnLCBkKX0iCitQQUNLQUdFUyA9KyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGJ1cycsICdwdWxzZWF1ZGlvLW1vZHVsZS1jb25zb2xlLWtpdCcsICcnLCBkKX0iCiAKICN1cGdyYWRlIHBhdGg6CiBSUkVQTEFDRVNfcHVsc2VhdWRpby1zZXJ2ZXIgPSAibGlicHVsc2UtYmluIGxpYnB1bHNlLWNvbmYiCkBAIC0xODMsNiArMjAxLDcgQEAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3B1bHNlLSR7UFZ9L21vZHVsZXMvKi5sYSAke2RhdGFkaXJ9L3ZhbGEgJHtsaWJkaXJ9L2NtYWtlIiAgIAogRklMRVNfJHtQTn0tY29uZiA9ICIke3N5c2NvbmZkaXJ9IgogRklMRVNfJHtQTn0tYmluICs9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzL3ZvbGF0aWxlcy4wNF9wdWxzZSIKK0ZJTEVTXyR7UE59LXBhLWluZm8gPSAiJHtiaW5kaXJ9L3BhLWluZm8iCiBGSUxFU18ke1BOfS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9L3B1bHNlYXVkaW8gJHtiaW5kaXJ9L3N0YXJ0LSogJHtzeXNjb25mZGlyfSAke2JpbmRpcn0vcGFjdGwgKi91ZGV2L3J1bGVzLmQvKi5ydWxlcyAqLyovdWRldi9ydWxlcy5kLyoucnVsZXMgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vKiIKIAogI1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyIgpAQCAtMjE0LDYgKzIzMywxNiBAQAogICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbmRpciwgcidebGliKC4qKVwuc28kJywgJyR7UE59LWxpYi0lcycsICdQdWxzZUF1ZGlvIGxpYnJhcnkgZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQogfQogCisjIHBhLWluZm8gaXMgYSBiYXNoIHNjcmlwdCB0aGF0IGNvbGxlY3RzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdWRpbyBzZXR1cC4KKyMgSXQncyBwcmltYXJpbHkgdXNlZnVsIGZvciBhdHRhY2hpbmcgYW4gaW5mb3JtYXRpb24gZHVtcCB3aGVuIHJlcG9ydGluZyBidWdzLgorUkRFUEVORFNfJHtQTn0tcGEtaW5mbyA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc2EtdXRpbHMtc2NyaXB0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1zZXJ2ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKIFJERVBFTkRTX3B1bHNlYXVkaW8tc2VydmVyID0gIiBcCiAgICAgcHVsc2VhdWRpby1tb2R1bGUtZmlsdGVyLWFwcGx5IFwKICAgICBwdWxzZWF1ZGlvLW1vZHVsZS1maWx0ZXItaGV1cmlzdGljcyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1hbHNhLUZpeC1pbmNsdXNpb24tb2YtdXNlLWNhc2UuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUwMjZhMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBiODlkMzNiYjE4MmM0MmRiNWFkMzk4N2IwZTkxYjdiZjYyZjQyMWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgotRGF0ZTogU3VuLCAyMSBBcHIgMjAxOSAxMTo1OTozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBhbHNhOiBGaXggaW5jbHVzaW9uIG9mIHVzZS1jYXNlLmgKLQotVGhlIHJlY2VudCBjaGFuZ2UgaW4gQUxTQSB1cHN0cmVhbSBzdHJpcHBlZCAtSSRpbmNsdWRlL2Fsc2EgcGF0aCBmcm9tCi1wa2djb25maWcuICBXZSBhbHJlYWR5IGZpeGVkIGZvciB0aGlzIGNoYW5nZSBpbiBzb21lIHBsYWNlcyBidXQgc3RpbGwKLXRoZSBjb2RlIGZvciBVQ00gd2FzIG92ZXJsb29rZWQsIGFuZCB0aGlzIHJlc3VsdGVkIGluIHRoZSB1bnJlc29sdmVkCi1zeW1ib2xzIGluIGFsc2EgY2FyZCBtb2R1bGUuIEZpeCB0aGVtIGFzIHdlbGwuCi0KLVNpZ25lZC1vZmYtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8IDIgKy0KLSBzcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGMwMDRiZDcwZC4uYjQ0ZWQxNTk1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04MjYsNyArODI2LDcgQEAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX2Fsc2EiID0gInh5ZXMiICYmIHRlc3QgIngkSEFWRV9BTFNBIiA9ICJ4MCJdLAotIEFTX0lGKFt0ZXN0ICJ4JEhBVkVfQUxTQSIgPSAieDEiXSwKLSAgICAgWwotICAgICAgICAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIjsgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkQVNPVU5ETElCX0NGTEFHUyIKLS0gICAgICAgIEFDX0NIRUNLX0hFQURFUlMoW3VzZS1jYXNlLmhdLCBIQVZFX0FMU0FfVUNNPTEsIEhBVkVfQUxTQV9VQ009MCkKLSsgICAgICAgIEFDX0NIRUNLX0hFQURFUlMoW2Fsc2EvdXNlLWNhc2UuaF0sIEhBVkVfQUxTQV9VQ009MSwgSEFWRV9BTFNBX1VDTT0wKQotICAgICAgICAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgotICAgICBdLAotICAgICBIQVZFX0FMU0FfVUNNPTApCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLXVjbS5oIGIvc3JjL21vZHVsZXMvYWxzYS9hbHNhLXVjbS5oCi1pbmRleCA1M2FiZjNmOTAuLmM5MjZmM2NjMyAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2Fsc2EvYWxzYS11Y20uaAotKysrIGIvc3JjL21vZHVsZXMvYWxzYS9hbHNhLXVjbS5oCi1AQCAtMjMsNyArMjMsNyBAQAotICoqKi8KLSAKLSAjaWZkZWYgSEFWRV9BTFNBX1VDTQotLSNpbmNsdWRlIDx1c2UtY2FzZS5oPgotKyNpbmNsdWRlIDxhbHNhL3VzZS1jYXNlLmg+Ci0gI2Vsc2UKLSB0eXBlZGVmIHZvaWQgc25kX3VzZV9jYXNlX21ncl90OwotICNlbmRpZgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1pbnRyb2R1Y2UtYS1zcGVjaWFsLWJ1aWxkLWZsYWctdG8tZXhwbGljaXRseS1kaXNhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1pbnRyb2R1Y2UtYS1zcGVjaWFsLWJ1aWxkLWZsYWctdG8tZXhwbGljaXRseS1kaXNhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2U5Y2Q4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtaW50cm9kdWNlLWEtc3BlY2lhbC1idWlsZC1mbGFnLXRvLWV4cGxpY2l0bHktZGlzYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi1Gcm9tIDM2ZmViOThlNTY4MjIxZTI0Mjg2NjE1NzMwODg4ZDVmNmZmMzIzZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDcgRGVjIDIwMTggMTU6MTI6MzggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW50cm9kdWNlIGEgc3BlY2lhbCBidWlsZCBmbGFnIHRvIGV4cGxpY2l0bHkgZGlzYWJsZXMgcnVubmluZwotIGZyb20gYnVpbGQgdHJlZQotCi1JdCBpcyBoZWxwZnVsIHRvIGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5IGJ1aWxkIFsxXSBzaW5jZQotUEFfU1JDRElSL1BBX0JVSUxERElSIGNvbnRhaW5zIGJ1aWxkIHBhdGgsIGRpc2FibGUgcnVubmluZwotZnJvbSBidWlsZCB0cmVlIGNvdWxkIGRyb3AgdGhlc2UgbWFjcm9zIGF0IHByZWNvbXBpbGF0aW9uLgotCi1bMV0gaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy8KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW3B1bHNlYXVkaW8tZGlzY3Vzc0BsaXN0cy5mcmVlZGVza3RvcC5vcmddCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1BY2tlZC1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKysKLSBzcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMgICAgICAgICAgICAgICAgIHwgIDQgKysrLQotIHNyYy9kYWVtb24vbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKLSBzcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYyAgICAgICAgICAgIHwgIDQgKysrKwotIHNyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jICAgICAgICAgfCAgMiArLQotIHNyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMgfCAgMiArLQotIHNyYy9wdWxzZWNvcmUvY29yZS11dGlsLmMgICAgICAgICAgICAgICAgfCAgNCArKystCi0gNyBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjOWM0MTRmLi44YjM0NWVmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05OTgsNiArOTk4LDE2IEBAIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9hc3luY25zIiA9ICJ4eWVzIiAmJiB0ZXN0ICJ4JEhBVkVfTElCQVNZTkNOUyIgPSAieDAiXSwKLSBBTV9DT05ESVRJT05BTChbSEFWRV9MSUJBU1lOQ05TXSwgW3Rlc3QgIngkSEFWRV9MSUJBU1lOQ05TIiA9IHgxXSkKLSBBU19JRihbdGVzdCAieCRIQVZFX0xJQkFTWU5DTlMiID0gIngxIl0sIEFDX0RFRklORShbSEFWRV9MSUJBU1lOQ05TXSwgMSwgW0hhdmUgbGliYXN5bmNucz9dKSkKLSAKLSsjIyMjIFJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlIChvcHRpb25hbCkgIyMjIwotKwotK0FDX0FSR19FTkFCTEUoW3J1bm5pbmctZnJvbS1idWlsZC10cmVlXSwKLSsgICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1ydW5uaW5nLWZyb20tYnVpbGQtdHJlZV0sW0Rpc2FibGUgcnVubmluZyBmcm9tIGJ1aWxkIHRyZWVdKSkKLSsKLStBU19JRihbdGVzdCAieCRlbmFibGVfcnVubmluZ19mcm9tX2J1aWxkX3RyZWUiICE9ICJ4bm8iXSwKLSsgICAgICBBQ19ERUZJTkUoW0hBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUVdLCAxLCBbSGF2ZSBydW5uaW5nIGZyb20gYnVpbGQgdHJlZV0pKQotKwotK0FDX1NVQlNUKEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUpCi0rCi0gIyMjIyBUQ1Agd3JhcHBlcnMgKG9wdGlvbmFsKSAjIyMjCi0gCi0gQUNfQVJHX0VOQUJMRShbdGNwd3JhcF0sCi1kaWZmIC0tZ2l0IGEvc3JjL2RhZW1vbi9kYWVtb24tY29uZi5jIGIvc3JjL2RhZW1vbi9kYWVtb24tY29uZi5jCi1pbmRleCA5ODgzMTI2Li5mMDFlZmY0IDEwMDY0NAotLS0tIGEvc3JjL2RhZW1vbi9kYWVtb24tY29uZi5jCi0rKysgYi9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMKLUBAIC0xNTUsMTIgKzE1NSwxNCBAQCBwYV9kYWVtb25fY29uZiAqcGFfZGFlbW9uX2NvbmZfbmV3KHZvaWQpIHsKLSAgICAgYy0+ZGxfc2VhcmNoX3BhdGggPSBwYV9zcHJpbnRmX21hbGxvYygiJXMiIFBBX1BBVEhfU0VQICJsaWIiIFBBX1BBVEhfU0VQICJwdWxzZS0lZC4lZCIgUEFfUEFUSF9TRVAgIm1vZHVsZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhX3dpbjMyX2dldF90b3BsZXZlbChOVUxMKSwgUEFfTUFKT1IsIFBBX01JTk9SKTsKLSAjZWxzZQotKyNpZmRlZiBIQVZFX1JVTk5JTkdfRlJPTV9CVUlMRF9UUkVFCi0gICAgIGlmIChwYV9ydW5fZnJvbV9idWlsZF90cmVlKCkpIHsKLSAgICAgICAgIHBhX2xvZ19ub3RpY2UoIkRldGVjdGVkIHRoYXQgd2UgYXJlIHJ1biBmcm9tIHRoZSBidWlsZCB0cmVlLCBmaXhpbmcgc2VhcmNoIHBhdGguIik7Ci0gICAgICAgICBjLT5kbF9zZWFyY2hfcGF0aCA9IHBhX3hzdHJkdXAoUEFfQlVJTERESVIpOwotICAgICB9IGVsc2UKLS0gICAgICAgIGMtPmRsX3NlYXJjaF9wYXRoID0gcGFfeHN0cmR1cChQQV9ETFNFQVJDSFBBVEgpOwotICNlbmRpZgotKyAgICAgICAgYy0+ZGxfc2VhcmNoX3BhdGggPSBwYV94c3RyZHVwKFBBX0RMU0VBUkNIUEFUSCk7Ci0rI2VuZGlmIC8vRW5kb2YgI2lmZGVmIE9TX0lTX1dJTjMyCi0gCi0gICAgIHJldHVybiBjOwotIH0KLWRpZmYgLS1naXQgYS9zcmMvZGFlbW9uL21haW4uYyBiL3NyYy9kYWVtb24vbWFpbi5jCi1pbmRleCBjODBmYTk0Li4xZTAwMzg4IDEwMDY0NAotLS0tIGEvc3JjL2RhZW1vbi9tYWluLmMKLSsrKyBiL3NyYy9kYWVtb24vbWFpbi5jCi1AQCAtOTMyLDYgKzkzMiwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7Ci0gCi0gICAgIHBhX2xvZ19kZWJ1ZygiUnVubmluZyBpbiBWTTogJXMiLCBwYV95ZXNfbm8ocGFfcnVubmluZ19pbl92bSgpKSk7Ci0gCi0rI2lmZGVmIEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUKLSsgICAgcGFfbG9nX2RlYnVnKCJSdW5uaW5nIGZyb20gYnVpbGQgdHJlZTogJXMiLCBwYV95ZXNfbm8ocGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpKSk7Ci0rI2Vsc2UKLSsgICAgcGFfbG9nX2RlYnVnKCJSdW5uaW5nIGZyb20gYnVpbGQgdHJlZTogbm8iKTsKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19PUFRJTUlaRV9fCi0gICAgIHBhX2xvZ19kZWJ1ZygiT3B0aW1pemVkIGJ1aWxkOiB5ZXMiKTsKLSAjZWxzZQotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jIGIvc3JjL21vZHVsZXMvYWxzYS9hbHNhLW1peGVyLmMKLWluZGV4IGE1MjRkNmQuLjY3MGY2NDYgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotKysrIGIvc3JjL21vZHVsZXMvYWxzYS9hbHNhLW1peGVyLmMKLUBAIC0yNTcxLDkgKzI1NzEsMTEgQEAgc3RhdGljIGludCBwYXRoX3ZlcmlmeShwYV9hbHNhX3BhdGggKnApIHsKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKmdldF9kZWZhdWx0X3BhdGhzX2Rpcih2b2lkKSB7Ci0rI2lmZGVmIEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUKLSAgICAgaWYgKHBhX3J1bl9mcm9tX2J1aWxkX3RyZWUoKSkKLSAgICAgICAgIHJldHVybiBQQV9TUkNESVIgIi9tb2R1bGVzL2Fsc2EvbWl4ZXIvcGF0aHMvIjsKLSAgICAgZWxzZQotKyNlbmRpZgotICAgICAgICAgcmV0dXJuIFBBX0FMU0FfUEFUSFNfRElSOwotIH0KLSAKLUBAIC00NDU1LDcgKzQ0NTcsOSBAQCBwYV9hbHNhX3Byb2ZpbGVfc2V0KiBwYV9hbHNhX3Byb2ZpbGVfc2V0X25ldyhjb25zdCBjaGFyICpmbmFtZSwgY29uc3QgcGFfY2hhbm5lbAotICAgICAgICAgZm5hbWUgPSAiZGVmYXVsdC5jb25mIjsKLSAKLSAgICAgZm4gPSBwYV9tYXliZV9wcmVmaXhfcGF0aChmbmFtZSwKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhX3J1bl9mcm9tX2J1aWxkX3RyZWUoKSA/IFBBX1NSQ0RJUiAiL21vZHVsZXMvYWxzYS9taXhlci9wcm9maWxlLXNldHMvIiA6Ci0rI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFfQUxTQV9QUk9GSUxFX1NFVFNfRElSKTsKLSAKLSAgICAgciA9IHBhX2NvbmZpZ19wYXJzZShmbiwgTlVMTCwgaXRlbXMsIE5VTEwsIGZhbHNlLCBwcyk7Ci1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvZ2NvbmYvbW9kdWxlLWdjb25mLmMgYi9zcmMvbW9kdWxlcy9nY29uZi9tb2R1bGUtZ2NvbmYuYwotaW5kZXggYzBmNGRkZS4uNzZhMWYxOSAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jCi0rKysgYi9zcmMvbW9kdWxlcy9nY29uZi9tb2R1bGUtZ2NvbmYuYwotQEAgLTUxLDcgKzUxLDcgQEAgaW50IHBhX19pbml0KHBhX21vZHVsZSptKSB7Ci0gICAgIHUtPmJ1Zl9maWxsID0gMDsKLSAKLSAgICAgaWYgKCh1LT5mZCA9IHBhX3N0YXJ0X2NoaWxkX2Zvcl9yZWFkKAotLSNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19PUFRJTUlaRV9fKQotKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChIQVZFX1JVTk5JTkdfRlJPTV9CVUlMRF9UUkVFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhX3J1bl9mcm9tX2J1aWxkX3RyZWUoKSA/IFBBX0JVSUxERElSICIvZ2NvbmYtaGVscGVyIiA6Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICAgICBQQV9HQ09ORl9IRUxQRVIsIE5VTEwsICZ1LT5waWQpKSA8IDApCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvZ3NldHRpbmdzL21vZHVsZS1nc2V0dGluZ3MuYyBiL3NyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMKLWluZGV4IDMzMGVjYTEuLjIwOWM4NTcgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9kdWxlcy9nc2V0dGluZ3MvbW9kdWxlLWdzZXR0aW5ncy5jCi0rKysgYi9zcmMvbW9kdWxlcy9nc2V0dGluZ3MvbW9kdWxlLWdzZXR0aW5ncy5jCi1AQCAtNTEsNyArNTEsNyBAQCBpbnQgcGFfX2luaXQocGFfbW9kdWxlKm0pIHsKLSAgICAgdS0+YnVmX2ZpbGwgPSAwOwotIAotICAgICBpZiAoKHUtPmZkID0gcGFfc3RhcnRfY2hpbGRfZm9yX3JlYWQoCi0tI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX09QVElNSVpFX18pCi0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpID8gUEFfQlVJTERESVIgIi9nc2V0dGluZ3MtaGVscGVyIiA6Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICAgICBQQV9HU0VUVElOR1NfSEVMUEVSLCBOVUxMLCAmdS0+cGlkKSkgPCAwKQotZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvY29yZS11dGlsLmMgYi9zcmMvcHVsc2Vjb3JlL2NvcmUtdXRpbC5jCi1pbmRleCA2NGU5ZjIxLi5mODVkZDIwIDEwMDY0NAotLS0tIGEvc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYwotKysrIGIvc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYwotQEAgLTM0MzYsMTUgKzM0MzYsMTcgQEAgdm9pZCBwYV9yZXNldF9wZXJzb25hbGl0eSh2b2lkKSB7Ci0gfQotIAotIGJvb2wgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSh2b2lkKSB7Ci0tICAgIGNoYXIgKnJwOwotICAgICBzdGF0aWMgYm9vbCBiID0gZmFsc2U7Ci0gCi0rI2lmZGVmIEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUKLSsgICAgY2hhciAqcnA7Ci0gICAgIFBBX09OQ0VfQkVHSU4gewotICAgICAgICAgaWYgKChycCA9IHBhX3JlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIpKSkgewotICAgICAgICAgICAgIGIgPSBwYV9zdGFydHN3aXRoKHJwLCBQQV9CVUlMRERJUik7Ci0gICAgICAgICAgICAgcGFfeGZyZWUocnApOwotICAgICAgICAgfQotICAgICB9IFBBX09OQ0VfRU5EOwotKyNlbmRpZgotIAotICAgICByZXR1cm4gYjsKLSB9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtcmVtYXAtYXJtLUFkanVzdC1pbmxpbmUtYXNtLWNvbnN0cmFpbnRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUxMzNmZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtcmVtYXAtYXJtLUFkanVzdC1pbmxpbmUtYXNtLWNvbnN0cmFpbnRzLnBhdGNoCkBAIC0wLDAgKzEsMTE0IEBACitGcm9tIDM0NTBkMWZjZmU4YThmODQ1NTNhYjI5OWNkOTZhZTA3MDVkZGZmYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA1IE1hciAyMDIwIDExOjQ4OjI4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlbWFwL2FybTogQWRqdXN0IGlubGluZSBhc20gY29uc3RyYWludHMKKworZ2NjMTAgY2FuIGVmZmVjdGl2ZWx5IGVtaXQgc2luZ2xlIHByZWNpc2lvbiByZWdpc3RlcnMgaWYgcmlnaHQKK29wZXJhbmQgbW9kaWZpZXIgY29uc3RyYWludCBpcyBub3QgaW4gdXNlCisKK1RoaXMgcmVzdWx0cyBpbiBhc3NlbWJsZXIgcmVqZWN0aW5nIHRoZSBjb2RlCisKKy90bXAvY2NFRzRRcEkuczo2NDY6IEVycm9yOiBWRlAvTmVvbiBkb3VibGUgcHJlY2lzaW9uIHJlZ2lzdGVyIGV4cGVjdGVkIC0tIGB2dGJsLjggZDMse2QwLGQxfSxzOCcKKy90bXAvY2NFRzRRcEkuczo2Nzg6IEVycm9yOiBpbnZhbGlkIGluc3RydWN0aW9uIHNoYXBlIC0tIGB2bXVsLmYzMiBkMCxkMCxzOCcKKworVGhlcmVmb3JlIGFkZCAlUCBxdWFsaWZpZXIgdG8gcmVxdWVzdCBkb3VibGUgcmVnaXN0ZXJzIHNpbmVjZSAndycgY291bGQKK21lYW4gdmFyaWFibGUgY291bGQgYmUgc3RvcmVkIGluIHMwLi5zMTQgYW5kIEdDQyBkZWZhdWx0cyB0byBwcmludGluZyBvdXQgczAuLnMxNC4KK05vdGUgdGhvc2UgcmVnaXN0ZXJzIG1hcCB0byBkMC4uZDcgYWxzby4KKworT3V0cHV0IGdlbmVyYXRlZCBpcyBleGFjdGx5IHNhbWUgd2l0aCBnY2M5LCBhbmQgaXQgYWxzbyBub3cgY29tcGlsZXMKK3dpdGggZ2NjMTAKKworSXRzIG5vdCBkb2N1bWVudGVkIHdlbGwgaW4gZ2NjIGRvY3MgYW5kIHRoZXJlIGlzIGEgdGlja2V0IGZvciB0aGF0CitodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD04NDM0MworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8tL21lcmdlX3JlcXVlc3RzLzI2MV0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvcHVsc2Vjb3JlL3JlbWFwX25lb24uYyB8IDIyICsrKysrKysrKysrLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcHVsc2Vjb3JlL3JlbWFwX25lb24uYyBiL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jCitpbmRleCA0MTIwODk4NmQuLmNhM2I5NWI0OCAxMDA2NDQKKy0tLSBhL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jCisrKysgYi9zcmMvcHVsc2Vjb3JlL3JlbWFwX25lb24uYworQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9jaDRfdG9fbW9ub19mbG9hdDMybmVfbmVvbihwYV9yZW1hcF90ICptLCBmbG9hdCAqZHN0LCBjb25zdCBmbAorICAgICAgICAgICAgICJ2YWRkLmYzMiAgIGQwLCBkMCwgZDEgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZhZGQuZjMyICAgZDIsIGQyLCBkMyAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidmFkZC5mMzIgICBkMCwgZDAsIGQyICAgICAgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2bXVsLmYzMiAgIGQwLCBkMCwgJVtxdWFydF0gICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZtdWwuZjMyICAgZDAsIGQwLCAlUFtxdWFydF0gICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS4zMiAgICB7ZDB9LCBbJVtkc3RdXSEgICAgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFtxdWFydF0gInciIChxdWFydCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9zdGVyZW9fczE2bmVfbmVvbihwYV9yZW1hcF90ICptLCBpbnQxNl90ICpkc3QsIGNvbnN0IGkKKyAgICAgZm9yICg7IG4gPj0gMjsgbiAtPSAyKSB7CisgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgInZsZDEuczE2ICAgZDAsIFslW3NyY11dISAgICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVt0XSAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdF0gInciICh0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX3N0ZXJlb19zMTZuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGludDE2X3QgKmRzdCwgY29uc3QgaQorICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS4zMiAgIGQwWzBdLCBbJVtzcmNdXSEgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICBkMCwge2QwfSwgJVBbdF0gICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS4zMiAgIGQwWzBdLCBbJVtkc3RdXSEgICAgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0XSAidyIgKHQpIC8qIGlucHV0IG9wZXJhbmRzICovCitAQCAtMzAyLDggKzMwMiw4IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2VfY2gyX2NoNF9zMTZuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGludDE2X3QgKmRzdCwgY29uc3QKKyAgICAgZm9yICg7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS4zMiAgICBkMFswXSwgWyVbc3JjXV0hICAgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlW3RdICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVBbdF0gICAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2c3QxLnMxNiAgIGQwLCBbJVtkc3RdXSEgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6ICJtZW1vcnkiLCAiZDAiIC8qIGNsb2JiZXIgbGlzdCAqLworQEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX2NoNF9zMTZuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGludDE2X3QgKmRzdCwgY29uc3QgaW50MQorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLnMxNiAgIGQwLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVBbdF0gICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLnMxNiAgIGQwLCBbJVtkc3RdXSEgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9zdGVyZW9fZmxvYXQzMm5lX25lb24ocGFfcmVtYXBfdCAqbSwgZmxvYXQgKmRzdCwgY29uc3QKKyAgICAgZm9yICg7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5mMzIgICBkMCwgWyVbc3JjXV0hICAgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlW3RdICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVQW3RdICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS5zMTYgICB7ZDB9LCBbJVtkc3RdXSEgICAgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0XSAidyIgKHQpIC8qIGlucHV0IG9wZXJhbmRzICovCitAQCAtMzQ5LDggKzM0OSw4IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2VfY2gyX2NoNF9hbnkzMm5lX25lb24ocGFfcmVtYXBfdCAqbSwgZmxvYXQgKmRzdCwgY29uc3QKKyAgICAgZm9yICg7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5mMzIgICBkMCwgWyVbc3JjXV0hICAgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQxLCB7ZDB9LCAlW3QwXSAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDIsIHtkMH0sICVbdDFdICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMSwge2QwfSwgJVBbdDBdICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQyLCB7ZDB9LCAlUFt0MV0gICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAge2QxLGQyfSwgWyVbZHN0XV0hICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdDBdICJ3IiAodDApLCBbdDFdICJ3IiAodDEpIC8qIGlucHV0IG9wZXJhbmRzICovCitAQCAtMzY2LDggKzM2Niw4IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2VfY2g0X2Zsb2F0MzJuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGZsb2F0ICpkc3QsIGNvbnN0IGZsCisgICAgIGZvciAoOyBuID4gMDsgbi0tKSB7CisgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgInZsZDEuZjMyICAge2QwLGQxfSwgWyVbc3JjXV0hICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMiwge2QwLGQxfSwgJVt0MF0gICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQzLCB7ZDAsZDF9LCAlW3QxXSAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDIsIHtkMCxkMX0sICVQW3QwXSAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMywge2QwLGQxfSwgJVBbdDFdICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLnMxNiAgIHtkMixkM30sIFslW2RzdF1dISAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3QwXSAidyIgKHQwKSwgW3QxXSAidyIgKHQxKSAvKiBpbnB1dCBvcGVyYW5kcyAqLworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YjQ5NzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgcHVsc2VhdWRpby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2xpZW50LWNvbmYtQWRkLWFsbG93LWF1dG9zcGF3bi1mb3Itcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvZHVjZS1hLXNwZWNpYWwtYnVpbGQtZmxhZy10by1leHBsaWNpdGx5LWRpc2FibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhLUZpeC1pbmNsdXNpb24tb2YtdXNlLWNhc2UuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvLW5vdC1kaXNwbGF5LUNMRkFHUy10by1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS1idWkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImM0MmYxZjE0NjVlOGRmOTg1OWQwMjNkYzE4NDczNGJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwOTY2OGZmYzI5NjA0Mzc3OWM5ODRmNTM0NjFjMmIzOTg3YTQ1YjdhMjVlYjJmMGExZDExZDlmMjNiYTQwNTUiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKLSAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEzLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMTQ5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMy4wLmJiCkBAIC0wLDAgKzEsMTUgQEAKK3JlcXVpcmUgcHVsc2VhdWRpby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2xpZW50LWNvbmYtQWRkLWFsbG93LWF1dG9zcGF3bi1mb3Itcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvLW5vdC1kaXNwbGF5LUNMRkFHUy10by1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS1idWkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImU0MWQ2MDZmOTAyNTRlZDQ1YzkwNTIwZmFmODNkOTVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2MWIyM2NhMWFjZmQyOGYyYmM4NzQxNGMyN2JiNDBlMTI0MzZlZmNmMjE1OGQyOTcyMWIxZTg5ZjNmMjgwNTciCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKKyAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3AvMDAwMS1Eb24tdC1yZWx5LW9uLUhBVkVfU1RESU5UX0gtZXQtYWwuLWJlaW5nLWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4ZHNwLzAwMDEtRG9uLXQtcmVseS1vbi1IQVZFX1NURElOVF9ILWV0LWFsLi1iZWluZy1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzA2N2RhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3AvMDAwMS1Eb24tdC1yZWx5LW9uLUhBVkVfU1RESU5UX0gtZXQtYWwuLWJlaW5nLWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIGM3MzM3MGNlYWZkMTM4YmVjZWU4Y2EzYzY4OGJhNzU3NTY4MzBiZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUYW51IEthc2tpbmVuIDx0YW51Lmthc2tpbmVuQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IFN1biwgNSBKdWwgMjAxNSAxNzo0ODoxNiArMDMwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCByZWx5IG9uIEhBVkVfU1RESU5UX0ggZXQgYWwuIGJlaW5nIGRlZmluZWQKLQotTm90IGV2ZXJ5b25lIHdobyBpbmNsdWRlcyBzcGVleGRzcF9jb25maWdfdHlwZXMuaCB3aWxsIGhhdmUgYSB0ZXN0Ci13aGljaCBkZWZpbmVzIHRob3NlLCBhbmQgaWYgd2UndmUgY2hvc2VuIHRvIHVzZSB0aGUgc3RkaW50IHR5cGVzIGF0Ci1jb25maWd1cmUgdGltZSB0aGVuIHdlIGtub3cgZXhhY3RseSB3aGljaCBoZWFkZXIocykgYXJlIGF2YWlsYWJsZSwgc28KLWp1c3QgY2hvb3NlIHRoZSBiZXN0IG9uZSB0aGVuIGFuZCBnZW5lcmF0ZSB0aGUgaGVhZGVyIHRvIHVzZSBpdC4KLQotVGhpcyBwYXRjaCwgaW5jbHVkaW5nIHRoZSBhYm92ZSB0ZXh0LCBpcyBjb3BpZWQgZnJvbSBhIGNvbW1pdCBpbiB0aGUKLXNwZWV4IHJlcG9zaXRvcnlbMV0uIFRoZSBvcmlnaW5hbCBjb21taXQgZm9yIHNwZWV4IHdhcyBtYWRlIGJ5IFJvbgotPHJvbkBkZWJpYW4ub3JnPi4KLQotWzFdIGh0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXNwZWV4LmdpdDthPWNvbW1pdGRpZmY7aD03NzRjODdkNmNiN2RkOGRhYmRkMTc2NzdmYzZkYTc1M2VjZjRhYTg3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudS5rYXNraW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKysrKysKLSBpbmNsdWRlL3NwZWV4L3NwZWV4ZHNwX2NvbmZpZ190eXBlcy5oLmluIHwgOCArLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyY2QyZDFlLi4xZGUwYzIzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMzQsNiArMzM0LDEyIEBAIEFDX1NVQlNUKFtVU0laRTE2XSkKLSBBQ19TVUJTVChbU0laRTMyXSkKLSBBQ19TVUJTVChbVVNJWkUzMl0pCi0gCi0rQVNfSUYoW3Rlc3QgIiRhY19jdl9oZWFkZXJfc3RkaW50X2giID0gInllcyJdLCAgICBbSU5DTFVERV9TVERJTlQ9IiNpbmNsdWRlIDxzdGRpbnQuaD4iXSwKLSsgICAgICBbdGVzdCAiJGFjX2N2X2hlYWRlcl9pbnR0eXBlc19oIiA9ICJ5ZXMiXSwgIFtJTkNMVURFX1NURElOVD0iI2luY2x1ZGUgPGludHR5cGVzLmg+Il0sCi0rICAgICAgW3Rlc3QgIiRhY19jdl9oZWFkZXJfc3lzX3R5cGVzX2giID0gInllcyJdLCBbSU5DTFVERV9TVERJTlQ9IiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4iXSkKLSsKLStBQ19TVUJTVChbSU5DTFVERV9TVERJTlRdKQotKwotIEFDX0NPTkZJR19GSUxFUyhbCi0gICAgICAgICAgICBNYWtlZmlsZSBsaWJzcGVleGRzcC9NYWtlZmlsZSBkb2MvTWFrZWZpbGUgU3BlZXhEU1Auc3BlYwotICAgICAgICAgICAgaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL3NwZWV4L01ha2VmaWxlIHNwZWV4ZHNwLnBjCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9zcGVleC9zcGVleGRzcF9jb25maWdfdHlwZXMuaC5pbiBiL2luY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4KLWluZGV4IDAyYjgyZmQuLjVlYTdiNTUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3NwZWV4L3NwZWV4ZHNwX2NvbmZpZ190eXBlcy5oLmluCi0rKysgYi9pbmNsdWRlL3NwZWV4L3NwZWV4ZHNwX2NvbmZpZ190eXBlcy5oLmluCi1AQCAtMSwxMyArMSw3IEBACi0gI2lmbmRlZiBfX1NQRUVYX1RZUEVTX0hfXwotICNkZWZpbmUgX19TUEVFWF9UWVBFU19IX18KLSAKLS0jaWYgZGVmaW5lZCBIQVZFX1NURElOVF9ICi0tIyAgaW5jbHVkZSA8c3RkaW50Lmg+Ci0tI2VsaWYgZGVmaW5lZCBIQVZFX0lOVFRZUEVTX0gKLS0jICBpbmNsdWRlIDxpbnR0eXBlcy5oPgotLSNlbGlmIGRlZmluZWQgSEFWRV9TWVNfVFlQRVNfSAotLSMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNlbmRpZgotK0BJTkNMVURFX1NURElOVEAKLSAKLSB0eXBlZGVmIEBTSVpFMTZAIHNweF9pbnQxNl90OwotIHR5cGVkZWYgQFVTSVpFMTZAIHNweF91aW50MTZfdDsKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3BfMS4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM2OTY0NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3BfMS4yLjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBIHBhdGVudC1mcmVlIERTUCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiU3BlZXhEU1AgaXMgYSBwYXRlbnQtZnJlZSwgT3BlbiBTb3VyY2UvRnJlZSBTb2Z0d2FyZSBEU1AgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnNwZWV4Lm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzE0NjQ5ZDhiYTlkZDcwNDVkZmI2NjgzZjI5OGQwYTgiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9zcGVleC9zcGVleGRzcC0ke1BWfS50YXIuZ3oiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInNwZWV4ZHNwLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjcyMmRmMzQxNTc2ZGMxODVkODk3MTMxMzIxMDA4ZmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjgyMDQyZmM2ZjliZWU2Mjk0ZWM0NTNmNDcwZGFkYzI2YzZmZjI5YjljOWU5YWQyZmZjMWY0MzEyZmQ2NDc3MSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCisgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS1lbmFibGUtZml4ZWQtcG9pbnQgLS1kaXNhYmxlLWZsb2F0LWFwaScsICcnLCBkKX0gXAorIgorCisjIHNwZWV4ZHNwIHdhcyBzcGxpdCBvZmYgZnJvbSBzcGVleCBpbiAxLjJyYzIuIE9sZGVyIHZlcnNpb25zIG9mIHNwZWV4IGNhbid0CisjIGJlIGluc3RhbGxlZCB0b2dldGhlciB3aXRoIHNwZWV4ZHNwLCBzaW5jZSB0aGV5IGNvbnRhaW4gb3ZlcmxhcHBpbmcgZmlsZXMuCitSQ09ORkxJQ1RTXyR7UE59ID0gInNwZWV4ICg8IDEuMnJjMikiCitSQ09ORkxJQ1RTXyR7UE59LWRiZyA9ICJzcGVleC1kYmcgKDwgMS4ycmMyKSIKK1JDT05GTElDVFNfJHtQTn0tZGV2ID0gInNwZWV4LWRldiAoPCAxLjJyYzIpIgorUkNPTkZMSUNUU18ke1BOfS1zdGF0aWNkZXYgPSAic3BlZXgtc3RhdGljZGV2ICg8IDEuMnJjMikiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4ZHNwXzEuMnJjMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3BfMS4ycmMzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2M5NDliLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3BfMS4ycmMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBhdGVudC1mcmVlIERTUCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiU3BlZXhEU1AgaXMgYSBwYXRlbnQtZnJlZSwgT3BlbiBTb3VyY2UvRnJlZSBTb2Z0d2FyZSBEU1AgbGlicmFyeS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnNwZWV4Lm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzE0NjQ5ZDhiYTlkZDcwNDVkZmI2NjgzZjI5OGQwYTgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9zcGVleC9zcGVleGRzcC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1yZWx5LW9uLUhBVkVfU1RESU5UX0gtZXQtYWwuLWJlaW5nLWRlZmluZWQucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MGQ5ZDMxMTg0ZjdlYjc2MTE5MmZkMWVmMGI3MzMzMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWU2ODg2MDAwMzlmNWQyMjRiZGYyZTIyMmQyZmJkZTY1NjA4NDQ3ZTRjMmY2ODE1ODVlNGRjYTZkZjY5MmYxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAgICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKLSAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWVuYWJsZS1maXhlZC1wb2ludCAtLWRpc2FibGUtZmxvYXQtYXBpJywgJycsIGQpfSBcCi0iCi0KLSMgV29ya2Fyb3VuZCBmb3IgYSBidWlsZCBmYWlsdXJlIHdoZW4gYnVpbGRpbmcgd2l0aCBNQUNISU5FPXFlbXVhcm02NC4gSSB0aGluawotIyBhYXJjaDY0IGlzIHN1cHBvc2VkIHRvIHN1cHBvcnQgTkVPTiBqdXN0IGZpbmUsIGJ1dCBidWlsZGluZyBmb3IgcWVtdWFybTY0Ci0jIGZhaWxzIGluIE5FT04gY29kZToKLSMKLSMgLi4uL3NwZWV4ZHNwLTEuMnJjMy9saWJzcGVleGRzcC9yZXNhbXBsZV9uZW9uLmg6MTQ4OjU6IGVycm9yOiBpbXBvc3NpYmxlIGNvbnN0cmFpbnQgaW4gJ2FzbScKLSMgICAgICBhc20gdm9sYXRpbGUgKCIgIGNtcCAlW2xlbl0sICMwXG4iCi0jICAgICAgXgotIwotIyBJIHNlbnQgYW4gZW1haWwgYWJvdXQgdGhlIGlzc3VlIHRvIHNwZWV4LWRldi4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGVyZQotIyBhcmUgbm8gcmVzcG9uc2VzIHlldDoKLSMgaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5hdWRpby5jb21wcmVzc2lvbi5zcGVleC5kZXZlbC83MzYwCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FhcmNoNjQnLCAnLS1kaXNhYmxlLW5lb24nLCAnJywgZCl9IgotCi0jIHNwZWV4ZHNwIHdhcyBzcGxpdCBvZmYgZnJvbSBzcGVleCBpbiAxLjJyYzIuIE9sZGVyIHZlcnNpb25zIG9mIHNwZWV4IGNhbid0Ci0jIGJlIGluc3RhbGxlZCB0b2dldGhlciB3aXRoIHNwZWV4ZHNwLCBzaW5jZSB0aGV5IGNvbnRhaW4gb3ZlcmxhcHBpbmcgZmlsZXMuCi1SQ09ORkxJQ1RTXyR7UE59ID0gInNwZWV4ICg8IDEuMnJjMikiCi1SQ09ORkxJQ1RTXyR7UE59LWRiZyA9ICJzcGVleC1kYmcgKDwgMS4ycmMyKSIKLVJDT05GTElDVFNfJHtQTn0tZGV2ID0gInNwZWV4LWRldiAoPCAxLjJyYzIpIgotUkNPTkZMSUNUU18ke1BOfS1zdGF0aWNkZXYgPSAic3BlZXgtc3RhdGljZGV2ICg8IDEuMnJjMikiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDgyYmYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKLURFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKLSAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKLSAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCi0gICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAotICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKLSAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKLSAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjkwNmFkODVkYWFhYTJlYWM5N2M4YWEyZGVjOWU4Yjc3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyMGEwNzg2NWM4Njk3YmJhMDBhZWJjY2M2ZjU0OTEyZDZiYzMzM2JiNGQ2MDRlNmIwNzQ5MWMxYTIyNmIzNGYiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS13aWMgXAotICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAotICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCi0gICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKLSIKLQotIyBEbyBub3QgdHJ1c3QgY29uZmlndXJlIHRvIGRldGVybWluZSBpZiBuZW9uIGlzIGF2YWlsYWJsZS4KLSMKLUVYVFJBX09FQ09ORl9BUk0gPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCItLWVuYWJsZS1uZW9uIiwiLS1kaXNhYmxlLW5lb24iLGQpfSBcCi0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtZWIgPSAiICR7RVhUUkFfT0VDT05GX0FSTX0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi0KLSMgbGlid2VicGRlY29kZXIgaXMgYSBzdWJzZXQgb2YgbGlid2VicCwgZG9uJ3QgYnVpbGQgaXQgdW5sZXNzIHJlcXVlc3RlZAotUEFDS0FHRUNPTkZJR1tkZWNvZGVyXSA9ICItLWVuYWJsZS1saWJ3ZWJwZGVjb2RlciwtLWRpc2FibGUtbGlid2VicGRlY29kZXIiCi0KLSMgQXBwbHkgZm9yIGV4YW1wbGVzIHByb2dyYW1zOiBjd2VicCBhbmQgZHdlYnAKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZywsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCi0KLSMgQXBwbHkgb25seSBmb3IgZXhhbXBsZSBwcm9ncmFtIHZ3ZWJwCi1QQUNLQUdFQ09ORklHW2dsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsbWVzYS1nbHV0IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ2lmMndlYnAiCi0KLURFU0NSSVBUSU9OXyR7UE59LWdpZjJ3ZWJwID0gIlNpbXBsZSB0b29sIHRvIGNvbnZlcnQgYW5pbWF0ZWQgR0lGcyB0byBXZWJQIgotRklMRVNfJHtQTn0tZ2lmMndlYnAgPSAiJHtiaW5kaXJ9L2dpZjJ3ZWJwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGU1YWUyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4xLjAuYmIKQEAgLTAsMCArMSw1NiBAQAorU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKK0RFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKKyAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKKyAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCisgICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAorICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKKyAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjdlMDQ3ZjJjYmFmNTg0ZGZmN2E4YTdlMGY4NTcyZjE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4YTA1MjI2OGNjNGQ1ZWNlMjdmNzY1NzJhN2Y1MDI5M2Y0MzljMTdhOThlNjdjNGVhMGM3ZWQ2ZjUwZWYwNDMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS13aWMgXAorICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAorICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCisgICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKKyIKKworIyBEbyBub3QgdHJ1c3QgY29uZmlndXJlIHRvIGRldGVybWluZSBpZiBuZW9uIGlzIGF2YWlsYWJsZS4KKyMKK0VYVFJBX09FQ09ORl9BUk0gPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCItLWVuYWJsZS1uZW9uIiwiLS1kaXNhYmxlLW5lb24iLGQpfSBcCisiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtZWIgPSAiICR7RVhUUkFfT0VDT05GX0FSTX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCisKKyMgbGlid2VicGRlY29kZXIgaXMgYSBzdWJzZXQgb2YgbGlid2VicCwgZG9uJ3QgYnVpbGQgaXQgdW5sZXNzIHJlcXVlc3RlZAorUEFDS0FHRUNPTkZJR1tkZWNvZGVyXSA9ICItLWVuYWJsZS1saWJ3ZWJwZGVjb2RlciwtLWRpc2FibGUtbGlid2VicGRlY29kZXIiCisKKyMgQXBwbHkgZm9yIGV4YW1wbGVzIHByb2dyYW1zOiBjd2VicCBhbmQgZHdlYnAKK1BBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZywsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCisKKyMgQXBwbHkgb25seSBmb3IgZXhhbXBsZSBwcm9ncmFtIHZ3ZWJwCitQQUNLQUdFQ09ORklHW2dsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsbWVzYS1nbHV0IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZ2lmMndlYnAiCisKK0RFU0NSSVBUSU9OXyR7UE59LWdpZjJ3ZWJwID0gIlNpbXBsZSB0b29sIHRvIGNvbnZlcnQgYW5pbWF0ZWQgR0lGcyB0byBXZWJQIgorRklMRVNfJHtQTn0tZ2lmMndlYnAgPSAiJHtiaW5kaXJ9L2dpZjJ3ZWJwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoCmluZGV4IDA4N2E0NDguLmNiNzcxZmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0L0ZpeC1YMzItYnVpbGQtYnktZGlzYWJsaW5nLWFzbS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY2YjEyMDA3OWZiMjFlZDM4Y2FiMDkwMGM2MzM2MGIwYTc4NTNlYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdiYzI1ZjRkMWFhYTUxODZkMmVmZjNlMjMyNmM3MjQ1ZmNkN2U3ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgogRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxNDoyMjozMiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBGaXggWDMyIGJ1aWxkIGJ5IGRpc2FibGluZyBhc20KQEAgLTEyLDE1ICsxMiwxNiBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CisKIC0tLQogIGNvbmZpZ3VyZSB8IDE0ICsrKysrKysrKysrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDMxMDllYzQuLjg0NGFlYWUgMTAwNzU1CitpbmRleCA1MWIxMjhkLi42ZWE5NDY5IDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC03MDMsNyArNzAzLDEzIEBAIGNhc2UgJGhvc3RfY3B1IGluCitAQCAtNzU0LDcgKzc1NCwxMyBAQCBjYXNlICRob3N0X2NwdSBpbgogICAgICAgICAgQVNfRVhUPSIuYXNtIgogICAgICAgICAgQVNGTEFHUz0iJEFTRkxBR1MgLURBUkNIX1g4Nl82ND0xIC1JXCQoU1JDUEFUSCkvY29tbW9uL3g4Ni8iCiAgICAgICAgICBzdGFja19hbGlnbm1lbnQ9MTYKQEAgLTMzLDkgKzM0LDkgQEAKICsgICAgICAgICAgICBmaQogKyAgICAgICAgZmkKICAgICAgICAgIGlmIFsgIiRTWVMiID0gTUFDT1NYIF07IHRoZW4KLSAgICAgICAgICAgICBBU0ZMQUdTPSIkQVNGTEFHUyAtZiBtYWNobzY0IC1EUElDIC1EUFJFRklYIgorICAgICAgICAgICAgIEFTRkxBR1M9IiRBU0ZMQUdTIC1mIG1hY2hvNjQgLURQUkVGSVgiCiAgICAgICAgICAgICAgaWYgY2NfY2hlY2sgJycgIi1hcmNoIHg4Nl82NCI7IHRoZW4KLUBAIC03MjIsNyArNzI4LDExIEBAIGNhc2UgJGhvc3RfY3B1IGluCitAQCAtNzczLDcgKzc3OSwxMSBAQCBjYXNlICRob3N0X2NwdSBpbgogICAgICAgICAgICAgICAgICBSQ0ZMQUdTPSItLXRhcmdldD1wZS14ODYtNjQgJFJDRkxBR1MiCiAgICAgICAgICAgICAgZmkKICAgICAgICAgIGVsc2UKQEAgLTQ4LDYgKzQ5LDMgQEAKICAgICAgICAgIGZpCiAgICAgICAgICA7OwogICAgICBwb3dlcnBjKikKLS0tIAotMi44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCmluZGV4IGYyMjkzMGEuLjM5NDI5YTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIKQEAgLTE0LDkgKzE0LDkgQEAKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCi1TUkNSRVYgPSAiNzJkYjQzNzc3MGZkMWNlMzk2MWY2MjRkZDU3YThlNzVmZjY1YWUwYiIKK1NSQ1JFViA9ICIxNzcxYjU1NmVlNDUyMDdmODcxMTc0NGNjYmQ1ZDQyYTM5NDliMTRjIgogCi1QViA9ICJyMjkxNytnaXQke1NSQ1BWfSIKK1BWID0gInIyOTkxK2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9maWxlcy9ydF9ibWFyay5weSBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzL3J0X2JtYXJrLnB5CmluZGV4IDU3YjM5YjUuLjNiODQ0NDcgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzL3J0X2JtYXJrLnB5CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzL3J0X2JtYXJrLnB5CkBAIC0xNjYsMTIgKzE2NiwxMiBAQAogICAgICAgICBsb2coIiAgQ29tbWFuZDogJyIsIHN0cmVzc19jbWRfc3RyLCAiJyIpCiAgICAgICAgIGxvZygpCiAKLSAgICAgICAgIyBwcmVleGVjX2ZuPW9zLnNldHNpZCBjYXVzZXMgc3RyZXNzIHRvIGJlIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUKKyAgICAgICAgIyBzdGFydF9uZXdfc2Vzc2lvbiBjYXVzZXMgc3RyZXNzIHRvIGJlIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUKICAgICAgICAgIyBzZXNzaW9uLCA9PiBpdCBnZXRzIGEgbmV3IHByb2Nlc3MgZ3JvdXAgKGluY2wuIGNoaWxkcmVuKS4gSXQKICAgICAgICAgIyBjYW4gdGhlbiBiZSB0ZXJtaW5hdGVkIHVzaW5nIG9zLmtpbGxwZyBpbiBlbmRfc3RyZXNzIHdpdGhvdXQKICAgICAgICAgIyB0ZXJtaW5hdGluZyB0aGlzIHNjcmlwdC4KIAotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihzdHJlc3NfY21kLCBwcmVleGVjX2ZuPW9zLnNldHNpZCkKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oc3RyZXNzX2NtZCwgc3RhcnRfbmV3X3Nlc3Npb249VHJ1ZSkKIAogICAgICAgICByZXR1cm4gcAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy0xLjEvMDAwMS1nemlwLXdpdGgtbi1mb3ItYnVpbGQtcmVwcm9kdWNpYmlsdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy0xLjEvMDAwMS1nemlwLXdpdGgtbi1mb3ItYnVpbGQtcmVwcm9kdWNpYmlsdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JhZmJiZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLTEuMS8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIGFhYmY1MThlMmU2MWE4ODJiOTI1ZjlkMmFjNTNkYWZhN2EwNDFhMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IFR1ZSwgMjUgRmViIDIwMjAgMjI6NTg6NTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3ppcCB3aXRoIC1uIGZvciBidWlsZCByZXByb2R1Y2liaWx0eQorCitUaGUgZGF0ZSBjYW4gZ2V0IGVuY29kZWQgaW4gdGhlIGhlYWRlciBvZiB0aGUgZ3ogZmlsZSwgd2hpY2gKK2NhdXNlcyB0aGUgYmluYXJ5IGZpbGVzIGJldHdlZW4gdHdvIGRpZmZlcmVudCBidWlsZHMgb2YgdGhlCitzYW1lIGRhdGEgdG8gYmUgZGlmZmVyZW50LiBBZGQgLW4gZm9yIHJlcHJvZHVjaWJpbHR5CisKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbWFpbGluZ2xpc3RdCisKKy0tLQorIE1ha2VmaWxlIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYTU0ZDgyYi4uZTlmMGQ1YSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTE2OCwxNyArMTY4LDE3IEBAIGluc3RhbGw6IGFsbCBpbnN0YWxsX2h3bGF0ZGV0ZWN0CisgCWNwICQoVEFSR0VUUykgIiQoREVTVERJUikkKGJpbmRpcikiCisgCWluc3RhbGwgLUQgLW0gNjQ0IHNyYy9iYWNrZmlyZS9iYWNrZmlyZS5jICIkKERFU1RESVIpJChzcmNkaXIpL2JhY2tmaXJlL2JhY2tmaXJlLmMiCisgCWluc3RhbGwgLW0gNjQ0IHNyYy9iYWNrZmlyZS9NYWtlZmlsZSAiJChERVNURElSKSQoc3JjZGlyKS9iYWNrZmlyZS9NYWtlZmlsZSIKKy0JZ3ppcCAtYyBzcmMvYmFja2ZpcmUvYmFja2ZpcmUuNCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuNC9iYWNrZmlyZS40Lmd6IgorLQlnemlwIC1jIHNyYy9jeWNsaWN0ZXN0L2N5Y2xpY3Rlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9jeWNsaWN0ZXN0LjguZ3oiCistCWd6aXAgLWMgc3JjL3BpX3Rlc3RzL3BpX3N0cmVzcy44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3BpX3N0cmVzcy44Lmd6IgorLQlnemlwIC1jIHNyYy9wdHNlbWF0ZXN0L3B0c2VtYXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9wdHNlbWF0ZXN0LjguZ3oiCistCWd6aXAgLWMgc3JjL3J0LW1pZ3JhdGUtdGVzdC9ydC1taWdyYXRlLXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9ydC1taWdyYXRlLXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvc2lnd2FpdHRlc3Qvc2lnd2FpdHRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zaWd3YWl0dGVzdC44Lmd6IgorLQlnemlwIC1jIHNyYy9zdnNlbWF0ZXN0L3N2c2VtYXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zdnNlbWF0ZXN0LjguZ3oiCistCWd6aXAgLWMgc3JjL3BtcXRlc3QvcG1xdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3BtcXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvYmFja2ZpcmUvc2VuZG1lLjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2VuZG1lLjguZ3oiCistCWd6aXAgLWMgc3JjL2hhY2tiZW5jaC9oYWNrYmVuY2guOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9oYWNrYmVuY2guOC5neiIKKy0JZ3ppcCAtYyBzcmMvc2lnbmFsdGVzdC9zaWduYWx0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2lnbmFsdGVzdC44Lmd6IgorKwlnemlwIC1uYyBzcmMvYmFja2ZpcmUvYmFja2ZpcmUuNCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuNC9iYWNrZmlyZS40Lmd6IgorKwlnemlwIC1uYyBzcmMvY3ljbGljdGVzdC9jeWNsaWN0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvY3ljbGljdGVzdC44Lmd6IgorKwlnemlwIC1uYyBzcmMvcGlfdGVzdHMvcGlfc3RyZXNzLjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcGlfc3RyZXNzLjguZ3oiCisrCWd6aXAgLW5jIHNyYy9wdHNlbWF0ZXN0L3B0c2VtYXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9wdHNlbWF0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9ydC1taWdyYXRlLXRlc3QvcnQtbWlncmF0ZS10ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcnQtbWlncmF0ZS10ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9zaWd3YWl0dGVzdC9zaWd3YWl0dGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NpZ3dhaXR0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9zdnNlbWF0ZXN0L3N2c2VtYXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zdnNlbWF0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9wbXF0ZXN0L3BtcXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9wbXF0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9iYWNrZmlyZS9zZW5kbWUuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zZW5kbWUuOC5neiIKKysJZ3ppcCAtbmMgc3JjL2hhY2tiZW5jaC9oYWNrYmVuY2guOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9oYWNrYmVuY2guOC5neiIKKysJZ3ppcCAtbmMgc3JjL3NpZ25hbHRlc3Qvc2lnbmFsdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NpZ25hbHRlc3QuOC5neiIKKyAKKyAuUEhPTlk6IGluc3RhbGxfaHdsYXRkZXRlY3QKKyBpbnN0YWxsX2h3bGF0ZGV0ZWN0OiBod2xhdGRldGVjdAorQEAgLTE4Nyw3ICsxODcsNyBAQCBpbnN0YWxsX2h3bGF0ZGV0ZWN0OiBod2xhdGRldGVjdAorIAkJaW5zdGFsbCAtRCAtbSA3NTUgc3JjL2h3bGF0ZGV0ZWN0L2h3bGF0ZGV0ZWN0LnB5ICQoREVTVERJUikkKFBZTElCKS9od2xhdGRldGVjdC5weSA7IFwKKyAJCXJtIC1mICIkKERFU1RESVIpJChiaW5kaXIpL2h3bGF0ZGV0ZWN0IiA7IFwKKyAJCWxuIC1zICQoUFlMSUIpL2h3bGF0ZGV0ZWN0LnB5ICIkKERFU1RESVIpJChiaW5kaXIpL2h3bGF0ZGV0ZWN0IiA7IFwKKy0JCWd6aXAgLWMgc3JjL2h3bGF0ZGV0ZWN0L2h3bGF0ZGV0ZWN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvaHdsYXRkZXRlY3QuOC5neiIgOyBcCisrCQlnemlwIC1uYyBzcmMvaHdsYXRkZXRlY3QvaHdsYXRkZXRlY3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9od2xhdGRldGVjdC44Lmd6IiA7IFwKKyAJZmkKKyAKKyAuUEhPTlk6IHRhcmJhbGwKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLmluYwppbmRleCAyMjdlYjk5Li4zYWMzOWQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jCkBAIC00LDcgKzQsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvcnQtdGVzdHMvcnQtdGVzdHMuZ2l0IgogIyAxLjIgdG8gMS41IHNlZW0gdG8gYmUgZGV2ZWxvcG1lbnQgdmVyc2lvbnMKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oPyExXC5bMi01XSkoXGQrKFwuXGQrKSspKSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oPyExXC5bMi02XSkoXGQrKFwuXGQrKSspKSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCmluZGV4IDVhYTBhYTEuLmRhZDI1MmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKQEAgLTEzLDYgKzEzLDcgQEAKIFNSQ19VUkkgKz0gIiBcCiAgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgIGZpbGU6Ly9ydF9ibWFyay5weSBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1nemlwLXdpdGgtbi1mb3ItYnVpbGQtcmVwcm9kdWNpYmlsdHkucGF0Y2ggXAogICAgICAgICAgICAiCiAKICMgcnQtdGVzdHMgbmVlZHMgUEkgbXV0ZXggc3VwcG9ydCBpbiBsaWJjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tcHRlc3QtZmFzdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1wdGVzdC1mYXN0LmJiCmluZGV4IGI3OTRhN2QuLjM2NDEyMTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1wdGVzdC1mYXN0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1wdGVzdC1mYXN0LmJiCkBAIC0xNCwzICsxNCw2IEBACiAKICMgcHRlc3RzIG5lZWQgbW9yZSBtZW1vcnkgdGhhbiBzdGFuZGFyZCB0byBhdm9pZCB0aGUgT09NIGtpbGxlcgogUUJfTUVNID0gIi1tIDEwMjQiCisKKyMgU2FkbHkgYXQgdGhlIG1vbWVudCB0aGUgZmFzdCBzZXQgb2YgcHRlc3RzIGlzIG5vdCByb2J1c3QgZW5vdWdoIGFuZCBzcG9yYWRpY2FsbHkgZmFpbHMgaW4gYSBjb3VwbGUgb2YgcGxhY2VzCitQVEVTVF9FWFBFQ1RfRkFJTFVSRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIKaW5kZXggZmYyOTdmZS4uYmY3NDlhYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiCkBAIC0zLDggKzMsNiBAQAogCiBERVNDUklQVElPTiArPSAiQWxzbyBpbmNsdWRlcyBwdGVzdCBwYWNrYWdlcy4iCiAKLUlNQUdFX0ZFQVRVUkVTICs9ICJwdGVzdC1wa2dzIgotCiBQUk9WSURFUyArPSAiY29yZS1pbWFnZS1zYXRvLXB0ZXN0IgogCiAjIEFsc28gaW5jbHVkZSBwdGVzdHMgd2hpY2ggbWF5IG5vdCBvdGhlcndpc2UgYmUgaW5jbHVkZWQgaW4gYSBzYXRvIGltYWdlCkBAIC0xOCw0ICsxNiw4IEBACiBJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiMTEyNDI4OCIKIAogIyBwdGVzdHMgbmVlZCBtb3JlIG1lbW9yeSB0aGFuIHN0YW5kYXJkIHRvIGF2b2lkIHRoZSBPT00ga2lsbGVyCi1RQl9NRU0gPSAiLW0gMTAyNCIKKyMgYWxzbyBsdHRuZy10b29scyBuZWVkcyAvdG1wIHRoYXQgaGFzIGF0IGxlYXN0IDFHCitRQl9NRU0gPSAiLW0gMjA0OCIKKworIyBTYWRseSBhdCB0aGUgbW9tZW50IHRoZSBmdWxsIHNldCBvZiBwdGVzdHMgaXMgbm90IHJvYnVzdCBlbm91Z2ggYW5kIHNwb3JhZGljYWxseSBmYWlscyBpbiByYW5kb20gcGxhY2VzCitQVEVTVF9FWFBFQ1RfRkFJTFVSRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sM2FmcGFkL2wzYWZwYWRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sM2FmcGFkL2wzYWZwYWRfZ2l0LmJiCmluZGV4IDg5MDZjNzQuLjZmZGNjM2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbDNhZnBhZC9sM2FmcGFkX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIKQEAgLTE3LDcgKzE3LDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjEuYmIKaW5kZXggYzg4ZTFlZC4uNzg4NWUwYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjEuYmIKQEAgLTIxLDcgKzIxLDcgQEAKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvcGNtYW5mbS9maWxlcy9QQ01hbkZNJTIwJTJCJTIwTGliZm0lMjAlMjh0YXJiYWxsJTIwcmVsZWFzZSUyOS9QQ01hbkZNLyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0M2QxZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDk4MDhkYzA5ZTA4OTM3YzliZmZkODU4ZDNkZWQ0MjgyMjVhNDMxMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IFNlcCAyMDE1IDA5OjAyOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBsYWJzIGluc3RlYWQgb2YgYWJzCi0KLWNsdWV2YWxzIGlzIGFycmF5IG9mIGxvbmdzIHNvIHdlIGhhdmUgdG8gdXNlIGxhYnMoKSBpbnN0ZWFkIG9mIGFicygpCi1zaW5jZSBhYnMoKSByZXR1cm5zIGludAotCi1GaXhlcwotCi1rZWVuLmM6MTQ1ODoxNzogZXJyb3I6IGFic29sdXRlIHZhbHVlIGZ1bmN0aW9uICdhYnMnIGdpdmVuIGFuIGFyZ3VtZW50Ci1vZiB0eXBlICdsb25nJyBidXQgaGFzIHBhcmFtZXRlciBvZiB0eXBlICdpbnQnIHdoaWNoIG1heSBjYXVzZQotdHJ1bmNhdGlvbiBvZiB2YWx1ZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGtlZW4uYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZWVuLmMgYi9rZWVuLmMKLWluZGV4IGE2YTcyMzguLjE2MzE5OTIgMTAwNjQ0Ci0tLS0gYS9rZWVuLmMKLSsrKyBiL2tlZW4uYwotQEAgLTEwNDMsNyArMTA0Myw3IEBAIGRvbmUKLSAJCSAgICBjbHVldmFsc1tqXSAqPSBncmlkW2ldOwotIAkJICAgIGJyZWFrOwotIAkJICBjYXNlIENfU1VCOgotLQkJICAgIGNsdWV2YWxzW2pdID0gYWJzKGNsdWV2YWxzW2pdIC0gZ3JpZFtpXSk7Ci0rCQkgICAgY2x1ZXZhbHNbal0gPSBsYWJzKGNsdWV2YWxzW2pdIC0gZ3JpZFtpXSk7Ci0gCQkgICAgYnJlYWs7Ci0gCQkgIGNhc2UgQ19ESVY6Ci0gCQkgICAgewotQEAgLTE0NTUsNyArMTQ1NSw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfZXJyb3JzKGNvbnN0IGdhbWVfc3RhdGUgKnN0YXRlLCBsb25nICplcnJvcnMpCi0gCQljbHVldmFsc1tqXSAqPSBzdGF0ZS0+Z3JpZFtpXTsKLSAJCWJyZWFrOwotIAkgICAgICBjYXNlIENfU1VCOgotLQkJY2x1ZXZhbHNbal0gPSBhYnMoY2x1ZXZhbHNbal0gLSBzdGF0ZS0+Z3JpZFtpXSk7Ci0rCQljbHVldmFsc1tqXSA9IGxhYnMoY2x1ZXZhbHNbal0gLSBzdGF0ZS0+Z3JpZFtpXSk7Ci0gCQlicmVhazsKLSAJICAgICAgY2FzZSBDX0RJVjoKLSAJCXsKLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoCmluZGV4IDUzNTFmOGUuLjE0M2U4OTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhbGlzYWRlLUZpeC13YXJuaW5ncy13aXRoLWNsYW5nLW9uLWFybS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDZkODMyNjI3NTgwMmEyZTZlNjFkM2U5OTQ2MGFmNjg5MWFlODM2MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ1MzU4N2Q3MTQ0NzNiODA2NDczYjMwOTcyN2Y4NjViNjczY2JjMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMyBKYW4gMjAxNiAyMzoxMDoxOSAtMDgwMAotU3ViamVjdDogW3B1enpsZXNdW1BBVENIXSBwYWxpc2FkZTogRml4IHdhcm5pbmdzIHdpdGggY2xhbmcgb24gYXJtCitTdWJqZWN0OiBbUEFUQ0hdIHBhbGlzYWRlOiBGaXggd2FybmluZ3Mgd2l0aCBjbGFuZyBvbiBhcm0KIAogQVJNIHRyZWF0cyAnY2hhcicgYXMgdW5zaWduZWQgY2hhciB3aGVuICdjaGFyJyBpcyBub3QgcXVhbGlmaWVkIHdpdGgKICdzaWduZWQnIG9yICd1bnNpZ25lZCcgZXhwbGljaXRseS4KQEAgLTE2LDE3ICsxNiwxNiBAQAogVGhlcmVmb3JlLCB0eXBjYXN0IHRoZSBjb250YW50IHRvIGNoYXIgaW4gc3VjaCBwbGFjZXMgdG8gYmUgZXhwbGljaXQKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQorLS0tCiAgcGFsaXNhZGUuYyB8IDEwICsrKysrLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcGFsaXNhZGUuYyBiL3BhbGlzYWRlLmMKLWluZGV4IDk4NGU2MTYuLjJiOWMyNWMgMTAwNjQ0CitpbmRleCA2ZmZiZjJkLi44YjU0ZDQyIDEwMDY0NAogLS0tIGEvcGFsaXNhZGUuYwogKysrIGIvcGFsaXNhZGUuYwotQEAgLTI5NSwxMSArMjk1LDExIEBAIHN0YXRpYyB2b2lkIHNvbHZlcl9jb25uZWN0ZWRfY2x1ZXNfdmVyc3VzX3JlZ2lvbl9zaXplKHNvbHZlcl9jdHggKmN0eCkKK0BAIC0zMDQsMTEgKzMwNCwxMSBAQCBzdGF0aWMgdm9pZCBzb2x2ZXJfY29ubmVjdGVkX2NsdWVzX3ZlcnN1c19yZWdpb25fc2l6ZShzb2x2ZXJfY3R4ICpjdHgpCiAgICAgICAqIElmIHAgPSBxID0gMyB0aGVuIHRoZSByZWdpb24gaGFzIHNpemUgZXhhY3RseSAyLiAqLwogIAogICAgICBmb3IgKGkgPSAwOyBpIDwgd2g7ICsraSkgewpAQCAtNDAsOCArMzksOCBAQAogICAgICAgICAgICAgIGlmICgoOCAtIGN0eC0+Y2x1ZXNbaV0gLSBjdHgtPmNsdWVzW2pdID4gY3R4LT5wYXJhbXMtPmspIHx8CiAgICAgICAgICAgICAgICAgIChjdHgtPmNsdWVzW2ldID09IDMgJiYgY3R4LT5jbHVlc1tqXSA9PSAzICYmCiAgICAgICAgICAgICAgICAgICBjdHgtPnBhcmFtcy0+ayAhPSAyKSkKLUBAIC0zMTcsNyArMzE3LDcgQEAgc3RhdGljIGludCBzb2x2ZXJfbnVtYmVyX2V4aGF1c3RlZChzb2x2ZXJfY3R4ICpjdHgpCi0gICAgIGludCBjaGFuZ2VkID0gRkFMU0U7CitAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyBib29sIHNvbHZlcl9udW1iZXJfZXhoYXVzdGVkKHNvbHZlcl9jdHggKmN0eCkKKyAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgCiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7CiAtICAgICAgICBpZiAoY3R4LT5jbHVlc1tpXSA9PSBFTVBUWSkgY29udGludWU7CkBAIC00OSwxNiArNDgsMTYgQEAKICAKICAgICAgICAgIGlmIChiaXRjb3VudFsoY3R4LT5ib3JkZXJzW2ldICYgQk9SREVSX01BU0spXSA9PSBjdHgtPmNsdWVzW2ldKSB7CiAgICAgICAgICAgICAgZm9yIChkaXIgPSAwOyBkaXIgPCA0OyArK2RpcikgewotQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMgaW50IGlzX3NvbHZlZChjb25zdCBnYW1lX3BhcmFtcyAqcGFyYW1zLCBjbHVlICpjbHVlcywKK0BAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGJvb2wgaXNfc29sdmVkKGNvbnN0IGdhbWVfcGFyYW1zICpwYXJhbXMsIGNsdWUgKmNsdWVzLAogICAgICBmb3IgKGkgPSAwOyBpIDwgd2g7ICsraSkgewotICAgICAgICAgaWYgKGRzZltpXSA9PSBVTlZJU0lURUQpIGRmc19kc2YoaSwgcGFyYW1zLT53LCBib3JkZXIsIGRzZiwgVFJVRSk7CisgICAgICAgICBpZiAoZHNmW2ldID09IFVOVklTSVRFRCkgZGZzX2RzZihpLCBwYXJhbXMtPncsIGJvcmRlciwgZHNmLCB0cnVlKTsKICAgICAgICAgIGlmIChkc2Zfc2l6ZShkc2YsIGkpICE9IGspIGdvdG8gZXJyb3I7CiAtICAgICAgICBpZiAoY2x1ZXNbaV0gPT0gRU1QVFkpIGNvbnRpbnVlOwogKyAgICAgICAgaWYgKGNsdWVzW2ldID09IChjaGFyKUVNUFRZKSBjb250aW51ZTsKICAgICAgICAgIGlmIChjbHVlc1tpXSAhPSBiaXRjb3VudFtib3JkZXJbaV0gJiBCT1JERVJfTUFTS10pIGdvdG8gZXJyb3I7CiAgICAgIH0KICAKLUBAIC02NzQsNyArNjc0LDcgQEAgc3RhdGljIGNoYXIgKm5ld19nYW1lX2Rlc2MoY29uc3QgZ2FtZV9wYXJhbXMgKnBhcmFtcywgcmFuZG9tX3N0YXRlICpycywKK0BAIC02ODUsNyArNjg1LDcgQEAgc3RhdGljIGNoYXIgKm5ld19nYW1lX2Rlc2MoY29uc3QgZ2FtZV9wYXJhbXMgKnBhcmFtcywgcmFuZG9tX3N0YXRlICpycywKICAgICAgcCA9IG51bWJlcnM7CiAgICAgIHIgPSAwOwogICAgICBmb3IgKGkgPSAwOyBpIDwgd2g7ICsraSkgewpAQCAtNjcsNiArNjYsMyBAQAogICAgICAgICAgICAgIHdoaWxlIChyKSB7CiAgICAgICAgICAgICAgICAgIHdoaWxlIChyID4gMjYpIHsKICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAneic7Ci0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYXR0ZXJuLmMtQ2hhbmdlLXN0cmluZy1sZW5naHQtcGFyYW1ldGVyLXRvLWJlLXNpemVfLnBhdGNoCmluZGV4IDlhYzYyMDEuLjdjYTU4MmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGF0dGVybi5jLUNoYW5nZS1zdHJpbmctbGVuZ2h0LXBhcmFtZXRlci10by1iZS1zaXplXy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMDM1NDY3YWEwYWJmYmMwZGU3ZTVkMjQ1NDNkNGFhYjM3MzAxNTkzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2FmNWExZTU3OWUzMzI0YTEzYmExZjg5MmM3YmVmYjNhYjMyZDg5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDcgTWFyIDIwMTkgMjE6NTY6NTcgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gcGF0dGVybi5jOiBDaGFuZ2Ugc3RyaW5nIGxlbmdodCBwYXJhbWV0ZXIgdG8gYmUgc2l6ZV90IGluCkBAIC0xMSwyMyArMTEsMjQgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBwYXR0ZXJuLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9wYXR0ZXJuLmMgYi9wYXR0ZXJuLmMKLWluZGV4IDQ1YjFiMGMuLmY3M2E0YzIgMTAwNjQ0CitpbmRleCBmZmFkZDNmLi40ZTVmMTg3IDEwMDY0NAogLS0tIGEvcGF0dGVybi5jCiArKysgYi9wYXR0ZXJuLmMKLUBAIC00MjgsNyArNDI4LDcgQEAgc3RhdGljIGludCBkb19yb3codW5zaWduZWQgY2hhciAqa25vd24sIHVuc2lnbmVkIGNoYXIgKmRlZHVjZWQsCi0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcm93LAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm1pbnBvc19kb25lLCB1bnNpZ25lZCBjaGFyICptYXhwb3NfZG9uZSwKLSAJCSAgdW5zaWduZWQgY2hhciAqbWlucG9zX29rLCB1bnNpZ25lZCBjaGFyICptYXhwb3Nfb2ssCi0tICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQsIGludCBsZW4sIGludCBzdGVwLCBpbnQgKmRhdGEsCi0rICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQsIHNpemVfdCBsZW4sIGludCBzdGVwLCBpbnQgKmRhdGEsCi0gCQkgIHVuc2lnbmVkIGludCAqY2hhbmdlZAorQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgYm9vbCBkb19yb3codW5zaWduZWQgY2hhciAqa25vd24sIHVuc2lnbmVkIGNoYXIgKmRlZHVjZWQsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnJvdywKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWlucG9zX2RvbmUsIHVuc2lnbmVkIGNoYXIgKm1heHBvc19kb25lLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptaW5wb3Nfb2ssIHVuc2lnbmVkIGNoYXIgKm1heHBvc19vaywKKy0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQsIGludCBsZW4sIGludCBzdGVwLCBpbnQgKmRhdGEsCisrICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0LCBzaXplX3QgbGVuLCBpbnQgc3RlcCwgaW50ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmNoYW5nZWQKICAjaWZkZWYgU1RBTkRBTE9ORV9TT0xWRVIKLSAJCSAgLCBjb25zdCBjaGFyICpyb3djb2wsIGludCBpbmRleCwgaW50IGNsdWV3aWQKKyAgICAgICAgICAgICAgICAgICAgLCBjb25zdCBjaGFyICpyb3djb2wsIGludCBpbmRleCwgaW50IGNsdWV3aWQKIC0tIAotMi4yMS4wCisyLjE3LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzL2ZpeC1jb21waWxpbmctZmFpbHVyZS13aXRoLW9wdGlvbi1nLU8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaAppbmRleCBjMTM0YWNkLi4yODA0MDUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLWd0ay5jOiBmaXggY29tcGlsaW5nIGZhaWx1cmUgd2l0aCBvcHRpb24gLWcgLU8KK0Zyb20gODc2YzZmZjFlMjBmNTFiMDkyMWFjZGE5OTg2MWY0NzZiNjQyM2YyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTEgQXVnIDIwMTQgMTI6Mzk6NTMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3RrLmM6IGZpeCBjb21waWxpbmcgZmFpbHVyZSB3aXRoIG9wdGlvbiAtZyAtTwogCiBUaGVyZSB3ZXJlIGNvbXBpbGluZyBmYWlsdXJlIHdpdGggb3B0aW9uIC1nIC1PCiAuLi4KQEAgLTIxLDIzICsyNCwyMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gZ3RrLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGd0ay5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZ3RrLmMgYi9ndGsuYwotaW5kZXggYTJlYmEyYy4uYzU0YmY2MyAxMDA2NDQKK2luZGV4IDQ1NjU4MzYuLjVlODNiNDggMTAwNjQ0CiAtLS0gYS9ndGsuYwogKysrIGIvZ3RrLmMKLUBAIC0yNDgxLDcgKzI0ODEsNyBAQCBjaGFyICpmZ2V0bGluZShGSUxFICpmcCkKK0BAIC0yOTQ0LDcgKzI5NDQsNyBAQCBzdGF0aWMgdm9pZCBsaXN0X3ByZXNldHNfZnJvbV9tZW51KHN0cnVjdCBwcmVzZXRfbWVudSAqbWVudSkKICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgewogICAgICBjaGFyICpwbmFtZSA9IGFyZ3ZbMF07CiAtICAgIGNoYXIgKmVycm9yOwogKyAgICBjaGFyICplcnJvciA9IE5VTEw7Ci0gICAgIGludCBuZ2VuZXJhdGUgPSAwLCBwcmludCA9IEZBTFNFLCBweCA9IDEsIHB5ID0gMTsKLSAgICAgaW50IHRpbWVfZ2VuZXJhdGlvbiA9IEZBTFNFLCB0ZXN0X3NvbHZlID0gRkFMU0UsIGxpc3RfcHJlc2V0cyA9IEZBTFNFOwotICAgICBpbnQgc29sbiA9IEZBTFNFLCBjb2xvdXIgPSBGQUxTRTsKLS0tIAotMS45LjEKLQorICAgICBpbnQgbmdlbmVyYXRlID0gMCwgcHggPSAxLCBweSA9IDE7CisgICAgIGJvb2wgcHJpbnQgPSBmYWxzZTsKKyAgICAgYm9vbCB0aW1lX2dlbmVyYXRpb24gPSBmYWxzZSwgdGVzdF9zb2x2ZSA9IGZhbHNlLCBsaXN0X3ByZXNldHMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYgppbmRleCA1ZWU5MTY0Li40MWI3OGQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJTaW1vbiBUYXRoYW0ncyBQb3J0YWJsZSBQdXp6bGUgQ29sbGVjdGlvbiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuY2hpYXJrLmdyZWVuZW5kLm9yZy51ay9+c2d0YXRoYW0vcHV6emxlcy8iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWRhNjExMGQ0ZWQxMjI1YTI4N2VhYjJiZjBhYzAxOTNiIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9NjA5OWY0OTgxZjk0NjFkN2Y0MTEwOTFlNjlhN2YwN2EiCiAKIERFUEVORFMgPSAibGlieHQiCiAKQEAgLTEwLDcgKzEwLDYgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQudGFydGFydXMub3JnL3NpbW9uL3B1enpsZXMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1jb21waWxpbmctZmFpbHVyZS13aXRoLW9wdGlvbi1nLU8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhbGlzYWRlLUZpeC13YXJuaW5ncy13aXRoLWNsYW5nLW9uLWFybS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1Xbm8tZXJyb3ItZm9ybWF0LW92ZXJmbG93LWlmLXRoZS1jb21waWxlci1zdXBwb3IucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wYXR0ZXJuLmMtQ2hhbmdlLXN0cmluZy1sZW5naHQtcGFyYW1ldGVyLXRvLWJlLXNpemVfLnBhdGNoIFwKQEAgLTE4LDcgKzE3LDcgQEAKICAgICAgICAgICAgIgogCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi1TUkNSRVYgPSAiYzZlMDE2MWRkNDc1NDE1MzE2ZWQ2NmRjODI3OTRkNjhlNTJmMDAyNSIKK1NSQ1JFViA9ICI3OWE1Mzc4YjVhZGM0NmVlMzNiYTM0ZDU1NzM4ZjkxNmZiOGFkZmM5IgogUEUgPSAiMiIKIFBWID0gIjAuMCtnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvbGlid3BlXzEuNC4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9saWJ3cGVfMS40LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjQ5OWZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvbGlid3BlXzEuNC4wLjEuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJHZW5lcmFsLXB1cnBvc2UgbGlicmFyeSBzcGVjaWZpY2FsbHkgZGV2ZWxvcGVkIGZvciB0aGUgV1BFLWZsYXZvcmVkIHBvcnQgb2YgV2ViS2l0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9XZWJQbGF0Zm9ybUZvckVtYmVkZGVkL2xpYndwZSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL1dlYlBsYXRmb3JtRm9yRW1iZWRkZWQvbGlid3BlL2lzc3VlcyIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNzFhNjE2ZWI0OTAzYzZjYjc5ZTk4OTNhNWY2MTVjYyIKK0RFUEVORFMgPSAidmlydHVhbC9lZ2wgbGlieGtiY29tbW9uIgorCisjIFdvcmthcm91bmQgYnVpbGQgaXNzdWUgd2l0aCBSUGkgdXNlcmxhbmQgRUdMIGxpYnJhcmllcy4KK0NGTEFHU19hcHBlbmRfcnBpID0gIiAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnLURfR05VX1NPVVJDRScsIGQpfSIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3Bld2Via2l0Lm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5ODQ5ZGZiMzQ4NzczNTRmMzRmMzE4ZTEzODk3MWNmMjJlNjc3YjIxNzllMWYwYThlYTAwYWIwYjdiZDhlOWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRW5hYmxlLVRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjgxMThiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRW5hYmxlLVRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRy5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDhlZTc4MDZhZDJkNTYwNjk2N2Y3YTE1MjlhMTEzZmI5ZDFhMzg2ZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAzIEZlYiAyMDIwIDE3OjA2OjI3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEVuYWJsZSBUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcKKworRml4ZXMgYnVpbGQgZmFpbHVyZXMgb24gcmlzdjY0CisKK1Rha2VuIGZyb20gaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzMTg0My93ZWJraXQKKworIEVuYWJsZSBUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcuIFRoaXMgdXNlcyAtcHRocmVhZCBpbnN0ZWFkIG9mCistbHB0aHJlYWQsIGZpeGluZyB0aGUgNjQtYml0IFJJU0MtViBidWlsZCBvZiB0aGUgR1RLKyBwb3J0IGR1ZSB0bworbWlzc2luZyBhdG9taWMgcHJpbWl0aXZlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzE4NDMvd2Via2l0XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlICAgICB8IDIgKysKKyBTb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQoraW5kZXggZDNiZWVmMTkuLjZhOTI4NTZmIDEwMDY0NAorLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCitAQCAtMTcsNiArMTcsOCBAQCBzZXQoV0VCS0lUR1RLX0hFQURFUl9JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9L3dlYmtpdGd0ay0ke1dFQktJVAorIHNldChJTlRST1NQRUNUSU9OX0lOU1RBTExfR0lSRElSICIke0NNQUtFX0lOU1RBTExfRlVMTF9EQVRBRElSfS9naXItMS4wIikKKyBzZXQoSU5UUk9TUEVDVElPTl9JTlNUQUxMX1RZUEVMSUJESVIgIiR7TElCX0lOU1RBTExfRElSfS9naXJlcG9zaXRvcnktMS4wIikKKyAKKytzZXQoVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHIE9OKQorKworIGZpbmRfcGFja2FnZShDYWlybyAxLjE0LjAgUkVRVUlSRUQpCisgZmluZF9wYWNrYWdlKEZvbnRjb25maWcgMi44LjAgUkVRVUlSRUQpCisgZmluZF9wYWNrYWdlKEZyZWV0eXBlIDIuNC4yIFJFUVVJUkVEKQorZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQoraW5kZXggYjJlODc0MTguLjMyNmFkZTIzIDEwMDY0NAorLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCisrKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKK0BAIC0xLDMgKzEsNCBAQAorK3NldChUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisgZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCisgCisgaWYgKE1TVkMpCistLSAKKzIuMjUuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzOWYwMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViS2l0IHdlYiByZW5kZXJpbmcgZW5naW5lIGZvciB0aGUgR1RLKyBwbGF0Zm9ybSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvIgotCi1MSUNFTlNFID0gIkJTRCAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ09QWUlORy5MSUI7bWQ1PWQwYzZkNjM5N2E1ZDg0Mjg2ZGRhNzU4ZGE1N2JkNjkxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKLQkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAotCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKLQkJICAgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEdPYmplY3RJbnRyb3NwZWN0aW9uLmNtYWtlLXByZWZpeC12YXJpYWJsZXMtb2J0YS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly94MzJfc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX2FycmF5LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjVlMDZmZTczZWUxNjY0NDc4OTRhYWVhOTUwMzhlM2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmI4MGYwNjM3YTgwODE4NTU5YWM4ZmQ1MGRiM2IzOTRmNDFjYjYxOTA0ZmI5YjNlZDY1ZmE1MTYzNTgwNjUxMiIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCi0KLUNWRV9QUk9EVUNUID0gIndlYmtpdGd0ayB3ZWJraXRndGtcKyIKLQotREVQRU5EUyA9ICJ6bGliIGxpYnNvdXAtMi40IGN1cmwgbGlieG1sMiBjYWlybyBsaWJ4c2x0IGxpYnh0IGxpYmlkbiBsaWJnY3J5cHQgXAotICAgICAgICAgICBndGsrMyBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBmbGV4LW5hdGl2ZSBncGVyZi1uYXRpdmUgc3FsaXRlMyBcCi0JICAgcGFuZ28gaWN1IGJpc29uLW5hdGl2ZSBnYXdrIGludGx0b29sLW5hdGl2ZSBsaWJ3ZWJwIFwKLQkgICBhdGsgdWRldiBoYXJmYnV6eiBqcGVnIGxpYnBuZyBwdWxzZWF1ZGlvIGxpYnJzdmcgbGlidGhlb3JhIGxpYnZvcmJpcyBsaWJ4Y29tcG9zaXRlIGxpYnh0c3QgXAotCSAgIHJ1YnktbmF0aXZlIGxpYm5vdGlmeSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgXAotCSAgIGdldHRleHQtbmF0aXZlIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ0YXNuMSBcCi0gICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJ3dheWxhbmQnICxkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ3dlYmdsIG9wZW5nbCcsICcnICxkKX0gXAotICAgICAgICAgICAgICAgICAgIGVuY2hhbnQgXAotICAgICAgICAgICAgICAgICAgIGxpYnNlY3JldCBcCi0gICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURFTkFCTEVfV0FZTEFORF9UQVJHRVQ9T04sLURFTkFCTEVfV0FZTEFORF9UQVJHRVQ9T0ZGLHdheWxhbmQiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURFTkFCTEVfWDExX1RBUkdFVD1PTiwtREVOQUJMRV9YMTFfVEFSR0VUPU9GRix2aXJ0dWFsL2xpYngxMSIKLVBBQ0tBR0VDT05GSUdbZ2VvY2x1ZV0gPSAiLURFTkFCTEVfR0VPTE9DQVRJT049T04sLURFTkFCTEVfR0VPTE9DQVRJT049T0ZGLGdlb2NsdWUiCi1QQUNLQUdFQ09ORklHW2VuY2hhbnRdID0gIi1ERU5BQkxFX1NQRUxMQ0hFQ0s9T04sLURFTkFCTEVfU1BFTExDSEVDSz1PRkYsZW5jaGFudCIKLVBBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLURFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMj1PTiwtREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9GRixndGsrIgotUEFDS0FHRUNPTkZJR1tnbGVzMl0gPSAiLURFTkFCTEVfR0xFUzI9T04sLURFTkFCTEVfR0xFUzI9T0ZGLHZpcnR1YWwvbGliZ2xlczIiCi1QQUNLQUdFQ09ORklHW3dlYmdsXSA9ICItREVOQUJMRV9XRUJHTD1PTiwtREVOQUJMRV9XRUJHTD1PRkYsdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItREVOQUJMRV9PUEVOR0w9T04sLURFTkFCTEVfT1BFTkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tsaWJzZWNyZXRdID0gIi1EVVNFX0xJQlNFQ1JFVD1PTiwtRFVTRV9MSUJTRUNSRVQ9T0ZGLGxpYnNlY3JldCIKLVBBQ0tBR0VDT05GSUdbbGliaHlwaGVuXSA9ICItRFVTRV9MSUJIWVBIRU49T04sLURVU0VfTElCSFlQSEVOPU9GRixsaWJoeXBoZW4iCi0jIFNvdXJjZSBpcyBhdCBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3dvZmYyCi1QQUNLQUdFQ09ORklHW3dvZmYyXSA9ICItRFVTRV9XT0ZGMj1PTiwtRFVTRV9XT0ZGMj1PRkYsd29mZjIiCi1QQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItRFVTRV9PUEVOSlBFRz1PTiwtRFVTRV9PUEVOSlBFRz1PRkYsb3BlbmpwZWciCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLQkJLURQT1JUPUdUSyBcCi0JCS1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T04nLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PRkYnLCBkKX0gXAotCQkke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9HVEtET0M9T04nLCAnLURFTkFCTEVfR1RLRE9DPU9GRicsIGQpfSBcCi0JCS1ERU5BQkxFX01JTklCUk9XU0VSPU9OIFwKLSAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPWB3aGljaCBweXRob24zYCBcCi0gICAgICAgICAgICAgICAgLURFTkFCTEVfQlVCQkxFV1JBUF9TQU5EQk9YPU9GRiBcCi0JCSIKLQotIyBKYXZhc2NyaXB0IEpJVCBpcyBub3Qgc3VwcG9ydGVkIG9uIEFSQwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLSMgQnkgZGVmYXVsdCAyNS1iaXQgIm1lZGl1bSIgY2FsbHMgYXJlIHVzZWQgb24gQVJDCi0jIHdoaWNoIGlzIG5vdCBlbm91Z2ggZm9yIGJpbmFyaWVzIGxhcmdlciB0aGFuIDMyIE1pQgotQ0ZMQUdTX2FwcGVuZF9hcmMgPSAiIC1tbG9uZy1jYWxscyIKLUNYWEZMQUdTX2FwcGVuZF9hcmMgPSAiIC1tbG9uZy1jYWxscyIKLQotIyBKYXZhc2NyaXB0IEpJVCBpcyBub3Qgc3VwcG9ydGVkIG9uIHBvd2VycGMKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYzY0ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLQotIyBBUk0gSklUIGNvZGUgZG9lcyBub3QgYnVpbGQgb24gQVJNdjQvNS82IGFueW1vcmUKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY1ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY2ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY0ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2huMzIgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLQotIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBNSVBTIGVpdGhlcgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1ERU5BQkxFX0pJVD1PRkYgLURFTkFCTEVfQ19MT09QPU9OICIKLQotIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBYMzIKLSMgQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byB1cHN0cmVhbSBKSVQgc3VwcG9ydCBmb3IgeDMyIGluCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAsIGJ1dCB0aGlzIHdhcyBjbG9zZWQgYXMKLSMgdW5yZXNvbHZlZCBkdWUgdG8gbGltaXRlZCBYMzIgYWRvcHRpb24uCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYteDMyID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLQotU0VDVVJJVFlfQ0ZMQUdTX3JlbW92ZV9hYXJjaDY0ID0gIi1mcGllIgotU0VDVVJJVFlfQ0ZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtZlBJRSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS93ZWJraXQyZ3RrLTQuMC9pbmplY3RlZC1idW5kbGUvbGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxlLnNvIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiY2EtY2VydGlmaWNhdGVzIHNoYXJlZC1taW1lLWluZm8iCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMzcwLwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgotCi0jIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3NAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODgwCi0jIEpTQyBKSVQgY2FuIGJ1aWxkIG9uIEFSTXY3IHdpdGggLW1hcm0sIGJ1dCBkb2Vzbid0IHdvcmsgb24gcnVudGltZS4KLSMgVXBzdHJlYW0gb25seSB0ZXN0cyByZWd1bGFybHkgdGhlIEpTQyBKSVQgb24gQVJNdjcgd2l0aCBUaHVtYjIgKC1tdGh1bWIpLgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N2EgPSAidGh1bWIiCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3ciA9ICJ0aHVtYiIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjd2ZSA9ICJ0aHVtYiIKLQotIyBxZW11OiB1bmNhdWdodCB0YXJnZXQgc2lnbmFsIDExIChTZWdtZW50YXRpb24gZmF1bHQpIC0gY29yZSBkdW1wZWQKLSMgU2VnbWVudGF0aW9uIGZhdWx0Ci1HSV9EQVRBX0VOQUJMRURfYXJtdjdhID0gIkZhbHNlIgotR0lfREFUQV9FTkFCTEVEX2FybXY3dmUgPSAiRmFsc2UiCi0KLSMgQ2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGUKLUNDQUNIRV9ESVNBQkxFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjYuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDE5N2QxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjYuNC5iYgpAQCAtMCwwICsxLDEzMyBAQAorU1VNTUFSWSA9ICJXZWJLaXQgd2ViIHJlbmRlcmluZyBlbmdpbmUgZm9yIHRoZSBHVEsrIHBsYXRmb3JtIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cud2Via2l0Z3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIKKworTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCisJCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCisJCSAgICIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy53ZWJraXRndGsub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR09iamVjdEludHJvc3BlY3Rpb24uY21ha2UtcHJlZml4LXZhcmlhYmxlcy1vYnRhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRW5hYmxlLVRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly94MzJfc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX2FycmF5LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYwZjg4MTcyOWYzYjcxMjQ0YjdmNmU1ODc5MDA3M2UwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzODY5MDA3MTNkZmFkZjk3NDExNzcyMTBiMzI2MjNjYWIyMjU2MmE3OWZmZDBkNDQ2YjY2NTY5OTM0YjExM2YiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiBwZXJsbmF0aXZlIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdvcGVuZ2wnLCAnJywgZCl9IgorCitDVkVfUFJPRFVDVCA9ICJ3ZWJraXRndGsgd2Via2l0Z3RrXCsiCisKK0RFUEVORFMgPSAiemxpYiBsaWJzb3VwLTIuNCBjdXJsIGxpYnhtbDIgY2Fpcm8gbGlieHNsdCBsaWJnY3J5cHQgXAorICAgICAgICAgICBndGsrMyBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBmbGV4LW5hdGl2ZSBncGVyZi1uYXRpdmUgc3FsaXRlMyBcCisJICAgcGFuZ28gaWN1IGJpc29uLW5hdGl2ZSBnYXdrIGludGx0b29sLW5hdGl2ZSBsaWJ3ZWJwIFwKKwkgICBhdGsgdWRldiBoYXJmYnV6eiBqcGVnIGxpYnBuZyBsaWJyc3ZnIGxpYnRoZW9yYSBsaWJ2b3JiaXMgXAorCSAgIHJ1YnktbmF0aXZlIGxpYm5vdGlmeSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgXAorCSAgIGdldHRleHQtbmF0aXZlIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ0YXNuMSBcCisgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd3ZWJnbCBvcGVuZ2wnLCAnJyAsZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcnLCAnd2ViZ2wgZ2xlczInICxkKX0gXAorICAgICAgICAgICAgICAgICAgIGVuY2hhbnQgXAorICAgICAgICAgICAgICAgICAgIGxpYnNlY3JldCBcCisgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURFTkFCTEVfV0FZTEFORF9UQVJHRVQ9T04sLURFTkFCTEVfV0FZTEFORF9UQVJHRVQ9T0ZGLHdheWxhbmQgbGlid3BlIHdwZWJhY2tlbmQtZmRvIHdheWxhbmQtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1ERU5BQkxFX1gxMV9UQVJHRVQ9T04sLURFTkFCTEVfWDExX1RBUkdFVD1PRkYsdmlydHVhbC9saWJ4MTEgbGlieGNvbXBvc2l0ZSBsaWJ4ZGFtYWdlIGxpYnhyZW5kZXIgbGlieHQiCitQQUNLQUdFQ09ORklHW2dlb2NsdWVdID0gIi1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9OLC1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9GRixnZW9jbHVlIgorUEFDS0FHRUNPTkZJR1tlbmNoYW50XSA9ICItREVOQUJMRV9TUEVMTENIRUNLPU9OLC1ERU5BQkxFX1NQRUxMQ0hFQ0s9T0ZGLGVuY2hhbnQyIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gPSAiLURFTkFCTEVfR0xFUzI9T04sLURFTkFCTEVfR0xFUzI9T0ZGLHZpcnR1YWwvbGliZ2xlczIiCitQQUNLQUdFQ09ORklHW3dlYmdsXSA9ICItREVOQUJMRV9XRUJHTD1PTiwtREVOQUJMRV9XRUJHTD1PRkYsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItREVOQUJMRV9PUEVOR0w9T04sLURFTkFCTEVfT1BFTkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tsaWJzZWNyZXRdID0gIi1EVVNFX0xJQlNFQ1JFVD1PTiwtRFVTRV9MSUJTRUNSRVQ9T0ZGLGxpYnNlY3JldCIKK1BBQ0tBR0VDT05GSUdbbGliaHlwaGVuXSA9ICItRFVTRV9MSUJIWVBIRU49T04sLURVU0VfTElCSFlQSEVOPU9GRixsaWJoeXBoZW4iCitQQUNLQUdFQ09ORklHW3dvZmYyXSA9ICItRFVTRV9XT0ZGMj1PTiwtRFVTRV9XT0ZGMj1PRkYsd29mZjIiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItRFVTRV9PUEVOSlBFRz1PTiwtRFVTRV9PUEVOSlBFRz1PRkYsb3BlbmpwZWciCisKKyMgd2Via2l0Z3RrIGlzIGZ1bGwgb2YgL3Vzci9iaW4vZW52IHB5dGhvbiwgcGFydGljdWxhciBmb3IgZ2VuZXJhdGluZyBkb2NzCitkb19jb25maWd1cmVbcG9zdGZ1bmNzXSArPSAic2V0dXBfcHl0aG9uX2xpbmsiCitzZXR1cF9weXRob25fbGluaygpIHsKKwlpZiBbICEgLWUgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbiBdOyB0aGVuCisJCWxuIC1zIGB3aGljaCBweXRob24zYCAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uCisJZmkKK30KKworRVhUUkFfT0VDTUFLRSA9ICIgXAorCQktRFBPUlQ9R1RLIFwKKwkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAorCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKKwkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAorICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbjNgIFwKKyAgICAgICAgICAgICAgICAtREVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1g9T0ZGIFwKKwkJIgorCisjIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gQVJDCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcmMgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorIyBCeSBkZWZhdWx0IDI1LWJpdCAibWVkaXVtIiBjYWxscyBhcmUgdXNlZCBvbiBBUkMKKyMgd2hpY2ggaXMgbm90IGVub3VnaCBmb3IgYmluYXJpZXMgbGFyZ2VyIHRoYW4gMzIgTWlCCitDRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgorQ1hYRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgorCisjIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYworRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorCisjIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAtREVOQUJMRV9DX0xPT1A9T04gIgorCisjIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgorIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcworIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCitTRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCitTRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKKyMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0CisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKKyMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgorIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgorCisjIGludHJvc3BlY3Rpb24gaW5zaWRlIHFlbXUtYXJtIGhhbmdzIGZvcmV2ZXIgb24gbXVzbC9hcm0gYnVpbGRzCisjIHRoZXJlZm9yZSBkaXNhYmxlIEdJX0RBVEEKK0dJX0RBVEFfRU5BQkxFRF9saWJjLW11c2xfYXJtdjdhID0gIkZhbHNlIgorR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbF9hcm12N3ZlID0gIkZhbHNlIgorCisjIENhbid0IGJlIGJ1aWx0IHdpdGggY2NhY2hlCitDQ0FDSEVfRElTQUJMRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd3BlYmFja2VuZC1mZG9fMS40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93cGViYWNrZW5kLWZkb18xLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDJmN2ZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd3BlYmFja2VuZC1mZG9fMS40LjEuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJXUEUncyBiYWNrZW5kIGJhc2VkIG9uIGEgZnJlZWRlc2t0b3Aub3JnIHN0YWNrLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9JZ2FsaWEvV1BFQmFja2VuZC1mZG8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9JZ2FsaWEvV1BFQmFja2VuZC1mZG8vaXNzdWVzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmNjJjZWYyZTM2NDVlM2U3NGViMDVmZDM4OWQ3YTY2IgorREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4a2Jjb21tb24gd2F5bGFuZCB2aXJ0dWFsL2VnbCBsaWJ3cGUiCisKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgd2F5bGFuZC1uYXRpdmUiCisKK2luaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworU1JDX1VSSSA9ICJodHRwczovL3dwZXdlYmtpdC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjQ5YTBiN2NiZmE2NjIyMDZhOGQyZmEyNGUyYzU3NGU3NWM2ODFhZDBlOTM0NjgwOTFmMWRjNjhkZGIyOTlkIgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCmluZGV4IDFmOWZlYTIuLjM4OTZjOTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCkBAIC0yOCw3ICsyOCw5IEBACiAJCS0td2l0aC1leHBhdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IgogCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIGJpbmNvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vYXB1LTEtY29uZmlnIgogCiBPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLUFkZC1vcHRpb24tdG8tZGlzYWJsZS10aW1lZC1kZXBlbmRhbnQtdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1BZGQtb3B0aW9uLXRvLWRpc2FibGUtdGltZWQtZGVwZW5kYW50LXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZmY0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1BZGQtb3B0aW9uLXRvLWRpc2FibGUtdGltZWQtZGVwZW5kYW50LXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gMmJiZTIwYjRmNjllODRlN2ExOGJjNzlkMzgyNDg2OTUzZjQ3OTMyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogVGh1LCAyNiBNYXIgMjAyMCAxODozMDozNiArMDAwMAorU3ViamVjdDogW1BBVENIXSBBZGQgb3B0aW9uIHRvIGRpc2FibGUgdGltZWQgZGVwZW5kYW50IHRlc3RzCisKK1RoZSBkaXNhYmxlZCB0ZXN0cyByZWx5IG9uIHRpbWluZyB0byBwYXNzIGNvcnJlY3RseS4gT24gYSB2aXJ0dWFsaXplZCAKK3N5c3RlbSB1bmRlciBoZWF2eSBsb2FkLCB0aGVzZSB0ZXN0cyByYW5kb21seSBmYWlsIGJlY2F1c2UgdGhleSBtaXNzCithIHRpbWVyIG9yIG90aGVyIHRpbWluZyByZWxhdGVkIGlzc3Vlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5pbiAgICAgfCA2ICsrKysrKworIGluY2x1ZGUvYXByLmguaW4gfCAxICsKKyB0ZXN0L3Rlc3Rsb2NrLmMgIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IGQ5ZjMyZDYuLmYwYzU2NjEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTI4ODYsNiArMjg4NiwxMiBAQCBBQ19BUkdfRU5BQkxFKHRpbWVkbG9ja3MsCisgKQorIEFDX1NVQlNUKGFwcl9oYXNfdGltZWRsb2NrcykKKyAKKytBQ19BUkdfRU5BQkxFKHRpbWVkLXRlc3RzLAorKyAgWyAgLS1kaXNhYmxlLXRpbWVkLXRlc3RzCSAgRGlzYWJsZSB0aW1lZCB0ZXN0cyBdLAorKyAgW2Fwcl9oYXNfdGltZWR0ZXN0cz0iMCJdLCBbYXByX2hhc190aW1lZHRlc3RzPSIxIl0KKyspCisrQUNfU1VCU1QoYXByX2hhc190aW1lZHRlc3RzKQorKworICMgaHN0cmVycm9yIGlzIG9ubHkgbmVlZGVkIGlmIElQdjYgaXMgbm90IGVuYWJsZWQsCisgIyBzbyBnZXRhZGRyaW5mby9nYWlfc3RyZXJyb3IgYXJlIG5vdCB1c2VkLgorIGlmIHRlc3QgJGhhdmVfaXB2NiA9IDA7IHRoZW4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL2Fwci5oLmluIGIvaW5jbHVkZS9hcHIuaC5pbgoraW5kZXggZWU5OWRlZi4uYzQ2YTVmNCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvYXByLmguaW4KKysrKyBiL2luY2x1ZGUvYXByLmguaW4KK0BAIC0yOTgsNiArMjk4LDcgQEAgZXh0ZXJuICJDIiB7CisgI2RlZmluZSBBUFJfSEFTX1hUSFJFQURfRklMRVMgICAgIEBhcHJfaGFzX3h0aHJlYWRfZmlsZXNACisgI2RlZmluZSBBUFJfSEFTX09TX1VVSUQgICAgICAgICAgIEBvc3V1aWRACisgI2RlZmluZSBBUFJfSEFTX1RJTUVETE9DS1MgICAgICAgIEBhcHJfaGFzX3RpbWVkbG9ja3NACisrI2RlZmluZSBBUFJfSEFWRV9USU1FX0RFUEVOREFOVF9URVNUUyAgICAgICAgQGFwcl9oYXNfdGltZWR0ZXN0c0AKKyAKKyAjZGVmaW5lIEFQUl9QUk9DQVRUUl9VU0VSX1NFVF9SRVFVSVJFU19QQVNTV09SRCBAYXByX3Byb2NhdHRyX3VzZXJfc2V0X3JlcXVpcmVzX3Bhc3N3b3JkQAorIAorZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdGxvY2suYyBiL3Rlc3QvdGVzdGxvY2suYworaW5kZXggYTQzZjQ3Ny4uNjIzM2QwYiAxMDA2NDQKKy0tLSBhL3Rlc3QvdGVzdGxvY2suYworKysrIGIvdGVzdC90ZXN0bG9jay5jCitAQCAtMzk2LDEzICszOTYsMTMgQEAgYWJ0c19zdWl0ZSAqdGVzdGxvY2soYWJ0c19zdWl0ZSAqc3VpdGUpCisgICAgIGFidHNfcnVuX3Rlc3Qoc3VpdGUsIHRocmVhZHNfbm90X2ltcGwsIE5VTEwpOworICNlbHNlCisgICAgIGFidHNfcnVuX3Rlc3Qoc3VpdGUsIHRlc3RfdGhyZWFkX211dGV4LCBOVUxMKTsKKy0jaWYgQVBSX0hBU19USU1FRExPQ0tTCisrI2lmIEFQUl9IQVNfVElNRURMT0NLUyAmJiBBUFJfSEFWRV9USU1FX0RFUEVOREFOVF9URVNUUworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RocmVhZF90aW1lZG11dGV4LCBOVUxMKTsKKyAjZW5kaWYKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGVzdF90aHJlYWRfcndsb2NrLCBOVUxMKTsKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGVzdF9jb25kLCBOVUxMKTsKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGVzdF90aW1lb3V0Y29uZCwgTlVMTCk7CistI2lmIEFQUl9IQVNfVElNRURMT0NLUworKyNpZiBBUFJfSEFTX1RJTUVETE9DS1MgJiYgQVBSX0hBVkVfVElNRV9ERVBFTkRBTlRfVEVTVFMKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGVzdF90aW1lb3V0bXV0ZXgsIE5VTEwpOworICNlbmRpZgorICNlbmRpZgorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNy4wLmJiCmluZGV4IGVjYTljZGUuLjcwNzNhZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjcuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS43LjAuYmIKQEAgLTE4LDEyICsxOCwxMyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNi1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9saWJ0b29saXplX2NoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLW9wdGlvbi10by1kaXNhYmxlLXRpbWVkLWRlcGVuZGFudC10ZXN0cy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdhMTRhODNkNjY0ZTg3NTk5ZWEyNWZmNDQzMmU0OGE3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyZTE0OGYwYjJlOTliOGU1YzZjYWEwOWY2ZDRmYjRkZDNlODNmNzQ0YWE3MmE5NTJmOTRmNWExNDQzNmY3ZWEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0Citpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdCBtdWx0aWxpYl9zY3JpcHQKIAogT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgogCkBAIC0zOSw2ICs0MCw3IEBACiAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgogUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKK1BBQ0tBR0VDT05GSUdbdGltZWQtdGVzdHNdID0gIi0tZW5hYmxlLXRpbWVkLXRlc3RzLC0tZGlzYWJsZS10aW1lZC10ZXN0cywiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogCSMgQXZvaWQgYWJzb2x1dGUgcGF0aHMgZm9yIGdyZXAgc2luY2UgaXQgY2F1c2VzIGZhaWx1cmVzCkBAIC01MSw2ICs1Myw5IEBACiAJLi9idWlsZGNvbmYgMgogfQogCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vYXByLTEtY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZGV2OiR7ZGF0YWRpcn0vYnVpbGQtMS9hcHJfcnVsZXMubWsiCisKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCiBSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNhOWRlMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjZhNGIyN2JhY2UzYjkzNTI3MjFlZDQ2MmI5NWY2MjkxIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMGI1MWU2ZDMzOWZhMmJjY2EzYTNlMzE1OWNjZWE1NzRjNjdiMTA3ZjFhYzhiMDAwNDdmYTYwZTM0Y2U3YTQ1YyIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIGxpYnhtbDIiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCi0KLUZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgotRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNjJhZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjM0LjIuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJBVC1TUEkgMiBUb29sa2l0IEJyaWRnZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1OGNkMjc4NTc0ZTEwMTM2M2IxOGQ5YThiNzA1M2Q2NyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjkwMTMyM2NlZTBlZWYwNWMwMWVjNGRlZTA2YzcwMWFlZWNhODFhMzE0YTdkNjAyMTZmYTM2MzAwNWUyN2Y0ZjAiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgYXRrIGF0LXNwaTItY29yZSBsaWJ4bWwyIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1BBQ0tBR0VTID0rICIke1BOfS1nbm9tZSAke1BOfS1ndGsyIgorCitGSUxFU18ke1BOfS1nbm9tZSA9ICIke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTMuMC9ndGstbW9kdWxlcyIKK0ZJTEVTXyR7UE59LWd0azIgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvbW9kdWxlcy9saWJhdGstYnJpZGdlLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ0ZMQUdTICs9ICItZmNvbW1vbiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLUZpeC1zb3VyY2UtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzMTk2OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLUZpeC1zb3VyY2UtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYjdmYTBhYTAwYjA3ZTAzZTMzOGRkMDJhZjU2NDQzMWJmMmYyYjE4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKb3NodWEuV2F0dEBnYXJtaW4uY29tPgorRGF0ZTogV2VkLCAyMCBOb3YgMjAxOSAxNToyNDowMiAtMDYwMAorU3ViamVjdDogW1BBVENIXSBGaXggc291cmNlIHJlcHJvZHVjaWJpbGl0eQorCitUaGUgZ2VuZXJhdGVkIGVudW0gdHlwZSBmaWxlcyBjYW4gYmUgaW5jbHVkZWQgaW4gc291cmNlIHBhY2thZ2VzIG1lYW50Citmb3IgZGVidWdnaW5nLCBhbmQgdGh1cyBuZWVkIHRvIGJlIHJlcHJvZHVjaWJsZS4gUmVwbGFjZSB0aGUgYWJzb2x1dGUKK2luY2x1ZGUgb2YgdGhlIGhlYWRlciB3aXRoIHRoZSBiYXNlbmFtZS4gVGhpcyBpcyBzdWZmaWNpZW50IGJlY2F1c2UgdGhlCit0YXJnZXQgaW5jbHVkZSBmaWxlcyBhcmUgYWx3YXlzIGluIHRoZSBpbmNsdWRlIHBhdGggYW55d2F5LgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvYXQtc3BpMi1jb3JlL21lcmdlX3JlcXVlc3RzLzI1XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpvc2h1YS5XYXR0QGdhcm1pbi5jb20+CistLS0KKyBhdHNwaS9hdHNwaS1lbnVtLXR5cGVzLmMudGVtcGxhdGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hdHNwaS9hdHNwaS1lbnVtLXR5cGVzLmMudGVtcGxhdGUgYi9hdHNwaS9hdHNwaS1lbnVtLXR5cGVzLmMudGVtcGxhdGUKK2luZGV4IDM4NWQwZWUuLjkyZTQ5MzcgMTAwNjQ0CistLS0gYS9hdHNwaS9hdHNwaS1lbnVtLXR5cGVzLmMudGVtcGxhdGUKKysrKyBiL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQorQEAgLTUsNyArNSw3IEBACisgCisgLyoqKiBCRUdJTiBmaWxlLXByb2R1Y3Rpb24gKioqLworIC8qIGVudW1lcmF0aW9ucyBmcm9tICJAYmFzZW5hbWVAIiAqLworLSNpbmNsdWRlICJAZmlsZW5hbWVAIgorKyNpbmNsdWRlICJAYmFzZW5hbWVAIgorIAorIC8qKiogRU5EIGZpbGUtcHJvZHVjdGlvbiAqKiovCisgCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4zMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwNTJhOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4zMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5OThmZDlkODU4ZjhmYTIyYzRjOGMxNTU2N2JmNjI1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYzJhYTkzN2ViZmFjYTJjODY1NjliY2U5YjE2YTM0ZmJlMjBkNjllZjBjNTg4NDYzMTNiMWM0MmY1M2IwZDUzIgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyR7WDExREVQRU5EU30nLCAnJywgZCl9IgotCi1pbmhlcml0IG1lc29uIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLUVYVFJBX09FTUVTT04gPSAiIC1Ec3lzdGVtZF91c2VyX2Rpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRGRidXNfZGFlbW9uPSR7YmluZGlyfS9kYnVzLWRhZW1vbiBcCi0gICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctRHgxMT15ZXMnLCAnLUR4MTE9bm8nLCBkKX0gXAotIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImRvY3MiCi0KLUdJUl9NRVNPTl9PUFRJT04gPSAnaW50cm9zcGVjdGlvbicKLUdJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICd5ZXMnCi1HSVJfTUVTT05fRElTQUJMRV9GTEFHID0gJ25vJwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAotICAgICAgICAgICAgICAgICIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjM0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4zNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZTA1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4zNC4wLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgorTElDRU5TRSA9ICJMR1BMLTIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1M2MyMTU2NTUwNzEwNWZiNjgwMzFjZDljMjFhNTU5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjI5Y2RiZDY3NGU1MzlmODkxMjAyODUxMmFmNTgzOTkwOTM4YzdiNDllMjUxODRjMTI2YjAwMTIxZWYxMWM2IgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyR7WDExREVQRU5EU30nLCAnJywgZCl9IgorCitpbmhlcml0IG1lc29uIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK0VYVFJBX09FTUVTT04gPSAiIC1Ec3lzdGVtZF91c2VyX2Rpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRGRidXNfZGFlbW9uPSR7YmluZGlyfS9kYnVzLWRhZW1vbiBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctRHgxMT15ZXMnLCAnLUR4MTE9bm8nLCBkKX0gXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImRvY3MiCisKK0dJUl9NRVNPTl9PUFRJT04gPSAnaW50cm9zcGVjdGlvbicKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICd5ZXMnCitHSVJfTUVTT05fRElTQUJMRV9GTEFHID0gJ25vJworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAorICAgICAgICAgICAgICAgICIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0ay8wMDAxLW1lc29uLmJ1aWxkLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtbWVzb24uYnVpbGQtZW5hYmxlLWludHJvc3BlY3Rpb24tZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYjA4YmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtbWVzb24uYnVpbGQtZW5hYmxlLWludHJvc3BlY3Rpb24tZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDQ0ZDQ2YmFhNWUxNTE5YzZjM2RmN2U0ZDM0ZmIzMzNlMjQ3YjViYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotRGF0ZTogRnJpLCA2IEFwciAyMDE4IDEyOjA0OjAwICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBlbmFibGUgaW50cm9zcGVjdGlvbiBmb3IgY3Jvc3MtY29tcGlsZQotCi1JdCB3b3JrcyBmaW5lIGluIE9FLWNvcmUgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZSBkaXNhYmxlZC4gTGV0IHRoZSB1c2VyIGRlY2lkZQotaWYgaXQgc2hvdWxkIGJlIGRpc2FibGVkIG9yIG5vdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0KLS0tLQotIGF0ay9tZXNvbi5idWlsZCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2F0ay9tZXNvbi5idWlsZCBiL2F0ay9tZXNvbi5idWlsZAotaW5kZXggMGFkNjdlNS4uMWQyYTQ5YyAxMDA2NDQKLS0tLSBhL2F0ay9tZXNvbi5idWlsZAotKysrIGIvYXRrL21lc29uLmJ1aWxkCi1AQCAtMTM3LDcgKzEzNyw3IEBAIGxpYmF0a19kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoOiBsaWJhdGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXM6IGdsaWJfZGVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlczogYXRrX2VudW1faCkKLSAKLS1pZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBhbmQgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpCi0raWYgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpCi0gICBnbm9tZS5nZW5lcmF0ZV9naXIobGliYXRrLAotICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXM6IGF0a19zb3VyY2VzICsgYXRrX2hlYWRlcnMgKyBbIGF0a19lbnVtX2ggXSArIFsgYXRrX3ZlcnNpb25faCBdLAotICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogJ0F0aycsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMzIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjcyMjM3Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgotCi0jIE5lZWQgZ2V0dGV4dC1uYXRpdmUgYXMgTWVzb24gY2FuJ3QgdHVybiBvZmYgaTE4bgotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMCIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImMxMGIwYjJhZjNjMTk5ZTQyY2FhNjI3NWI4NDVjNDlkIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiY2I0MWZlZGE3ZmU0ZWYwZGFhMDI0NDcxNDM4ZWEwMjE5NTkyYmFmN2MyOTEzNDdlNWE4NThiYjY0ZTQwOTFjYyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMzQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzczOTdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMzQuMS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvbGlicyIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCisKKyMgTmVlZCBnZXR0ZXh0LW5hdGl2ZSBhcyBNZXNvbiBjYW4ndCB0dXJuIG9mZiBpMThuCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGdsaWItMi4wIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjYwYmJhZjhiZGQwOGI5M2Q5ODczNmI1NGIyZmM4ZTkiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkNGYwZTNiM2QyMTI2NWZjZjJiYzM3MWUxMTdkYTUxYzQyZWRlMWE3MWY2ZGIxYzgzNGU2OTc2YmIyMDk5N2NiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsLzAwMDEtdGVzdC1wYXRjaC1vdXQtZmFpbGluZy1iaXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMmZmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsLzAwMDEtdGVzdC1wYXRjaC1vdXQtZmFpbGluZy1iaXRzLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gOWUwODIxOWUwZTk5ZWUyNTg5Y2YzNWZhOGQ1MmNlZjM1MTVhY2NjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAxNTo0Nzo0OSArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0OiBwYXRjaCBvdXQgZmFpbGluZyBiaXRzCisKK0kgaGF2ZSBjb25maXJtZWQgb24gdGhlIGhvc3QgZGlzdHJvIChVYnVudHUgMTguMDQpIHRoYXQgdGhleQorZmFpbCBhcyB3ZWxsOyB1cHN0cmVhbSBwcm9iYWJseSBoYXZlbid0IG5vdGljZWQgYmVjYXVzZSB0aGUKK3Rlc3QgaXMgb25seSBleGVjdXRlZCB1bmRlciBzdWRvLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGluZyB0ZXN0cyBpbnN0ZWFkIG9mIGZpeGluZyB0aGVtIHByb3Blcmx5XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCB8IDEzIC0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0CitpbmRleCA4ZjhmODI1Li4yMWU4YTk1IDEwMDY0NAorLS0tIGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKKysrKyBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0CitAQCAtNTAsMTAgKzUwLDYgQEAgVXNlciBkYWVtb24gaXMgYSBtZW1iZXIgaW4gdGhlIG93bmluZyBncm91cCwgd2hpY2ggaGFzIG9ubHkgcmVhZCBhY2Nlc3MuCisgVmVyaWZ5IHRoaXMuCisgCisgCSQgc3UgZGFlbW9uCistCSQgY2F0IGYKKy0JPiByb290CistCT4gYmluCistCisgCSQgZWNobyBkYWVtb24gPj4gZgorIAk+fiAuKmY6IFBlcm1pc3Npb24gZGVuaWVkJAorIAorQEAgLTE0Niw4ICsxNDIsNiBAQCB0aGUgb3duaW5nIGdyb3VwLCBoZSBzaG91bGQgc3RpbGwgaGF2ZSBubyB3cml0ZSBhY2Nlc3MuCisgCSQgc2V0ZmFjbCAteCBnOmRhZW1vbiBmCisgCisgCSQgc3UgZGFlbW9uCistCSQgZWNobyBkYWVtb240ID4+IGYKKy0JPn4gLipmOiBQZXJtaXNzaW9uIGRlbmllZCQKKyAKKyAKKyBDaGFuZ2UgdGhlIG93bmluZyBncm91cC4gVGhlIG90aGVyIHBlcm1pc3Npb25zIHNob3VsZCBub3cgZ3JhbnQgdXNlcgorQEAgLTE1OCwxMiArMTUyLDYgQEAgZGFlbW9uIHdyaXRlIGFjY2Vzcy4KKyAKKyAJJCBzdSBkYWVtb24KKyAJJCBlY2hvIGRhZW1vbjUgPj4gZgorLQkkIGNhdCBmCistCT4gcm9vdAorLQk+IGJpbgorLQk+IGRhZW1vbgorLQk+IGRhZW1vbjIKKy0JPiBkYWVtb241CisgCisgCisgVmVyaWZ5IHRoYXQgcGVybWlzc2lvbnMgaW4gc2VwYXJhdGUgbWF0Y2hpbmcgQUNMIGVudHJpZXMgZG8gbm90CitAQCAtMTczLDcgKzE2MSw2IEBAIGFjY3VtdWxhdGUuCisgCSQgc2V0ZmFjbCAtbSBnOmJpbjpyLGc6ZGFlbW9uOncgZgorIAorIAkkIHN1IGRhZW1vbgorLQkkIDogPCBmCisgCSQgOiA+IGYKKyAJJCA6IDw+IGYKKyAJPn4gLipmOiBQZXJtaXNzaW9uIGRlbmllZCQKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0cy1kby1ub3QtaGFyZGNvZGUtdGhlLWJ1aWxkLXBhdGgtaW50by1hLWhlbHBlci1sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlZjBiYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0cy1kby1ub3QtaGFyZGNvZGUtdGhlLWJ1aWxkLXBhdGgtaW50by1hLWhlbHBlci1sLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gMzlkMzMyYTg4MDFkZTVkOWVmMDlkYWNiM2RiYTg1YzIwOGI3YjJhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAxMzo0NTo1MiArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IGhhcmRjb2RlIHRoZSBidWlsZCBwYXRoIGludG8gYSBoZWxwZXIgbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3QvTWFrZW1vZHVsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3QvTWFrZW1vZHVsZS5hbSBiL3Rlc3QvTWFrZW1vZHVsZS5hbQoraW5kZXggMTdkNDkyNy4uMDE1ZGU3ZiAxMDA2NDQKKy0tLSBhL3Rlc3QvTWFrZW1vZHVsZS5hbQorKysrIGIvdGVzdC9NYWtlbW9kdWxlLmFtCitAQCAtMzAsNyArMzAsNyBAQCBFWFRSQV9ESVNUICs9IFwKKyBjaGVja19MVExJQlJBUklFUyA9IGxpYnRlc3Rsb29rdXAubGEKKyAKKyBsaWJ0ZXN0bG9va3VwX2xhX1NPVVJDRVMgPSB0ZXN0L3Rlc3RfcGFzc3dkLmMgdGVzdC90ZXN0X2dyb3VwLmMKKy1saWJ0ZXN0bG9va3VwX2xhX0NGTEFHUyA9IC1EQkFTRURJUj1cIiQoYWJzX3NyY2RpcilcIgorK2xpYnRlc3Rsb29rdXBfbGFfQ0ZMQUdTID0gLURCQVNFRElSPVwiL3RtcC9hY2wtcHRlc3RcIgorIGxpYnRlc3Rsb29rdXBfbGFfTERGTEFHUyA9IC1ycGF0aCAkKGFic19idWlsZGRpcikKKyAKKyBBTV9URVNUU19FTlZJUk9OTUVOVCA9IFBBVEg9IiQoYWJzX3RvcF9idWlsZGRpcik6JCRQQVRIIjsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3Y2JhMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL01ha2VmaWxlLWxpYmFjbC1zaG91bGQtZGVwZW5kLW9uLWluY2x1ZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGQ4MjQ1N2NlNWNhNzQ1NWUzMzZkYTVlMjQ0ZDk1ZjkwZTUyYWFlZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTggQXByIDIwMTcgMDE6MTc6MjYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IGxpYmFjbCBzaG91bGQgZGVwZW5kIG9uIGluY2x1ZGUKLQotRml4ZWQgcmFjZSBpc3N1ZToKLSBJbiBmaWxlIGluY2x1ZGVkIGZyb20gYWNsX2NvcHlfZW50cnkuYzoyMjowOgotIGxpYmFjbC5oOjE5OjIxOiBmYXRhbCBlcnJvcjogc3lzL2FjbC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0gICNpbmNsdWRlIDxzeXMvYWNsLmg+Ci0KLVtzbmlwXQotCi0gY29tcGlsYXRpb24gdGVybWluYXRlZC4KLSBhY2xfZ2V0X2ZpbGUuYzoyNzoyNDogZmF0YWwgZXJyb3I6IGFjbC9saWJhY2wuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICAjaW5jbHVkZSA8YWNsL2xpYmFjbC5oPgotICAgICAgICAgICAgICAgICAgICAgICAgIF4KLQotVGhlIGFjbC5oIGlzIGluICJpbmNsdWRlIiBkaXJlY3RvcnksIGFuZCBpbmNsdWRlL01ha2VmaWxlIGNyZWF0ZXMKLXN5bWxpbmsgInN5cyIgYW5kICJhY2wiIHBvaW5zdCB0byBjdXJyZW50IGRpcmN0b3J5OgotJCBscyBpbmNsdWRlLyAtbAotYWNsIC0+IC4KLXN5cyAtPiAuCi0KLVNvIGlmICJsaWJhY2wiIHRhcmdldCBydW5zIGJlZm9yZSAiaW5jbHVkZSIsIHRoZSBlcnJvciB3b3VsZCBoYXBwZW4KLXNpbmNlIG5vICJhY2wiIG9yICJzeXMiIGRpcmVjdG9yeS4KLQotTGV0IGxpYmFjbCBkZXBlbmQgb24gaW5jbHVkZSBjYW4gZml4IHRoZSBwcm9ibGVtLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGRjZTMyZDMuLjhhNzkzNzkgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC00OCw3ICs0OCw3IEBAIGVsc2UKLSBlbmRpZgotIAotICMgdG9vbC9saWIgZGVwZW5kZW5jaWVzCi0tbGliYWNsOiBsaWJtaXNjCi0rbGliYWNsOiBpbmNsdWRlIGxpYm1pc2MKLSBnZXRmYWNsIHNldGZhY2wgY2hhY2w6IGxpYmFjbAotIAotIGlmZXEgKCQoSEFWRV9CVUlMRERFRlMpLCB5ZXMpCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL2FjbC1maXgtdGhlLW9yZGVyLW9mLWV4cGVjdGVkLW91dHB1dC1vZi1nZXRmYWNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9hY2wtZml4LXRoZS1vcmRlci1vZi1leHBlY3RlZC1vdXRwdXQtb2YtZ2V0ZmFjbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y3NjVmZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL2FjbC1maXgtdGhlLW9yZGVyLW9mLWV4cGVjdGVkLW91dHB1dC1vZi1nZXRmYWNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLWFjbDogZml4IHRoZSBvcmRlciBvZiBleHBlY3RlZCBvdXRwdXQgb2YgZ2V0ZmFjbAotCi1UaGUgcmVzdWx0IG9mIGdldGZhY2wgaXMgc29ydGVkIGJ5IHVzZXIgaWQuCi1JbiBDZW50b3Mgb3IgUkhFTCwgYmluIHVzZXIgaWQgaXMgMSBhbmQgZGFlbW9uIHVzZXIgaWQgaXMgMi4KLUJ1dCBpbiBvdXIgaW1hZ2UsIGJpbiB1c2VyIGlkIGlzIDIgYW5kIGRhZW1vbiB1c2VyIGlkIGlzIDEuCi1UaGUgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSB0byBtYWtlIHB0ZXN0IHBhc3MuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdC9taXNjLnRlc3QgfCAgIDM4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdC9taXNjLnRlc3QgYi90ZXN0L21pc2MudGVzdAotaW5kZXggNmU5ODA1My4uNTNhZTViMCAxMDA2NDQKLS0tLSBhL3Rlc3QvbWlzYy50ZXN0Ci0rKysgYi90ZXN0L21pc2MudGVzdAotQEAgLTc5LDggKzc5LDggQEAgTXVsdGlwbGUgdXNlcnMKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZgotIAk+IHVzZXI6OnJ3LQotLQk+IHVzZXI6YmluOnJ3LQotIAk+IHVzZXI6ZGFlbW9uOnItLQotKwk+IHVzZXI6YmluOnJ3LQotIAk+IGdyb3VwOjpyLS0KLSAJPiBtYXNrOjpydy0KLSAJPiBvdGhlcjo6ci0tCi1AQCAtOTQsOCArOTQsOCBAQCBNdWx0aXBsZSBncm91cHMKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZgotIAk+IHVzZXI6OnJ3LQotLQk+IHVzZXI6YmluOnJ3LQotIAk+IHVzZXI6ZGFlbW9uOnItLQotKwk+IHVzZXI6YmluOnJ3LQotIAk+IGdyb3VwOjpyLS0KLSAJPiBncm91cDpkYWVtb246ci0tCi0gCT4gZ3JvdXA6dXNlcnM6cnctCi1AQCAtMTExLDggKzExMSw4IEBAIFJlbW92ZSBvbmUgZ3JvdXAKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZgotIAk+IHVzZXI6OnJ3LQotLQk+IHVzZXI6YmluOnJ3LQotIAk+IHVzZXI6ZGFlbW9uOnItLQotKwk+IHVzZXI6YmluOnJ3LQotIAk+IGdyb3VwOjpyLS0KLSAJPiBncm91cDpkYWVtb246ci0tCi0gCT4gbWFzazo6cnctCi1AQCAtMTQ2LDggKzE0Niw4IEBAIERlZmF1bHQgQUNMCi0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyd3gKLSAJPiB1c2VyOmRhZW1vbjpydy0KLSsJPiB1c2VyOmJpbjpyd3gKLSAJPiBncm91cDo6ci14Ci0gCT4gbWFzazo6cnd4Ci0gCT4gb3RoZXI6Oi0tLQotQEAgLTIzNiwxNiArMjM2LDE2IEBAIEFkZCBzb21lIHVzZXJzIGFuZCBncm91cHMKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9kCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnIteAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTI2MiwxNiArMjYyLDE2IEBAIFN5bWxpbmsgaW4gZGlyZWN0b3J5IHdpdGggZGVmYXVsdCBBQ0w/Ci0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQvbAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IHVzZXI6ZGFlbW9uOnIteAotKwk+IHVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGdyb3VwOjpyLXgKLSAJPiBncm91cDpkYWVtb246cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZ3JvdXA6dXNlcnM6ci14Ci0gCT4gbWFzazo6ci14Ci0gCT4gb3RoZXI6Oi0tLQotIAk+IGRlZmF1bHQ6dXNlcjo6cnd4Ci0tCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0OnVzZXI6ZGFlbW9uOnIteAotKwk+IGRlZmF1bHQ6dXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZGVmYXVsdDpncm91cDo6ci14Ci0gCT4gZGVmYXVsdDptYXNrOjpyLXgKLSAJPiBkZWZhdWx0Om90aGVyOjotLS0KLUBAIC0yODcsMTYgKzI4NywxNiBAQCBEb2VzIG1hc2sgbWFuaXB1bGF0aW9uIHdvcms/Ci0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQvZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnIteAotIAk+IHVzZXI6ZGFlbW9uOnIteAotKwk+IHVzZXI6YmluOnIteAotIAk+IGdyb3VwOjpyLXgKLSAJPiBncm91cDpkYWVtb246ci14Ci0gCT4gZ3JvdXA6dXNlcnM6ci14Ci0gCT4gbWFzazo6ci14Ci0gCT4gb3RoZXI6Oi0tLQotIAk+IGRlZmF1bHQ6dXNlcjo6cnd4Ci0tCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0OnVzZXI6ZGFlbW9uOnIteAotKwk+IGRlZmF1bHQ6dXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZGVmYXVsdDpncm91cDo6ci14Ci0gCT4gZGVmYXVsdDptYXNrOjpyLXgKLSAJPiBkZWZhdWx0Om90aGVyOjotLS0KLUBAIC0zMDgsMTYgKzMwOCwxNiBAQCBEb2VzIG1hc2sgbWFuaXB1bGF0aW9uIHdvcms/Ci0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQvZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnIteAotIAk+IHVzZXI6ZGFlbW9uOnIteAotKwk+IHVzZXI6YmluOnIteAotIAk+IGdyb3VwOjpyLXgKLSAJPiBncm91cDpkYWVtb246ci14Ci0gCT4gZ3JvdXA6dXNlcnM6ci14Ci0gCT4gbWFzazo6ci14Ci0gCT4gb3RoZXI6Oi0tLQotIAk+IGRlZmF1bHQ6dXNlcjo6cnd4Ci0tCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gKLSAJPiBkZWZhdWx0OnVzZXI6ZGFlbW9uOnIteAotKwk+IGRlZmF1bHQ6dXNlcjpiaW46cnd4Ci0gCT4gZGVmYXVsdDpncm91cDo6ci14Ci0gCT4gZGVmYXVsdDptYXNrOjpyd3gKLSAJPiBkZWZhdWx0Om90aGVyOjotLS0KLUBAIC0zMzMsOCArMzMzLDggQEAgUmVtb3ZlIHRoZSBkZWZhdWx0IEFDTAotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46cnd4Ci0gCT4gdXNlcjpkYWVtb246cnctCi0rCT4gdXNlcjpiaW46cnd4Ci0gCT4gZ3JvdXA6OnIteAotIAk+IG1hc2s6OnJ3eAotIAk+IG90aGVyOjotLS0KLUBAIC0zNzMsMTQgKzM3MywxNCBAQCBOb3csIGNobW9kIHNob3VsZCBjaGFuZ2UgdGhlIGdyb3VwX29iaiBlbnRyeQotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246cnd4Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnJ3eAotIAk+IG1hc2s6OnJ3eAotIAk+IG90aGVyOjpyLXgKLSAJPiBkZWZhdWx0OnVzZXI6OnJ3eAotLQk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDp1c2VyOmRhZW1vbjpyd3gKLSsJPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6Z3JvdXA6OnJ3eAotIAk+IGRlZmF1bHQ6bWFzazo6cnd4Ci0gCT4gZGVmYXVsdDpvdGhlcjo6ci14Ci1AQCAtMzkyLDE0ICszOTIsMTQgQEAgTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnIteAotIAk+IHVzZXI6ZGFlbW9uOnJ3eAkjZWZmZWN0aXZlOnIteAotKwk+IHVzZXI6YmluOnIteAotIAk+IGdyb3VwOjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246cnd4Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyd3gKLSAJPiBkZWZhdWx0Om1hc2s6OnJ3eAotIAk+IGRlZmF1bHQ6b3RoZXI6OnIteAotQEAgLTQxMSwxNCArNDExLDE0IEBAIE5vdywgY2htb2Qgc2hvdWxkIGNoYW5nZSB0aGUgZ3JvdXBfb2JqIGVudHJ5Ci0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyLXgKLSAJPiB1c2VyOmRhZW1vbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSsJPiB1c2VyOmJpbjpyLXgKLSAJPiBncm91cDo6cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gbWFzazo6ci14Ci0gCT4gb3RoZXI6Oi0tLQotIAk+IGRlZmF1bHQ6dXNlcjo6cnd4Ci0tCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0OnVzZXI6ZGFlbW9uOnJ3eAotKwk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDpncm91cDo6cnd4Ci0gCT4gZGVmYXVsdDptYXNrOjpyd3gKLSAJPiBkZWZhdWx0Om90aGVyOjpyLXgKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL2NvbmZpZ3VyZS5hYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvY29uZmlndXJlLmFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWYyZThkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvY29uZmlndXJlLmFjCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSMKLUFDX0lOSVQoaW5jbHVkZS9hY2wuaCkKLUFDX0NPTkZJR19BVVhfRElSKFsuXSkKLUFDX0NPTkZJR19NQUNST19ESVIoW200XSkKLUFDX0NPTkZJR19IRUFERVIoaW5jbHVkZS9jb25maWcuaCkKLUFDX1BSRUZJWF9ERUZBVUxUKC91c3IpCi0KLUFDX1BST0dfTElCVE9PTAotCi1BQ19BUkdfRU5BQkxFKHNoYXJlZCwKLVsgLS1lbmFibGUtc2hhcmVkPVt5ZXMvbm9dIEVuYWJsZSB1c2Ugb2Ygc2hhcmVkIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdXSwsCi0JZW5hYmxlX3NoYXJlZD15ZXMpCi1BQ19TVUJTVChlbmFibGVfc2hhcmVkKQotCi1BQ19BUkdfRU5BQkxFKGdldHRleHQsCi1bIC0tZW5hYmxlLWdldHRleHQ9W3llcy9ub10gRW5hYmxlIGFsdGVybmF0ZSBsYW5ndWFnZSBzdXBwb3J0IFtkZWZhdWx0PXllc11dLCwKLQllbmFibGVfZ2V0dGV4dD15ZXMpCi1BQ19TVUJTVChlbmFibGVfZ2V0dGV4dCkKLQotQUNfQVJHX0VOQUJMRShsaWI2NCwKLVsgLS1lbmFibGUtbGliNjQ9W3llcy9ub10gRW5hYmxlIGxpYjY0IHN1cHBvcnQgW2RlZmF1bHQ9bm9dXSwsCi0JZW5hYmxlX2xpYjY0PW5vKQotQUNfU1VCU1QoZW5hYmxlX2xpYjY0KQotCi1BQ19QQUNLQUdFX0dMT0JBTFMoYWNsKQotQUNfUEFDS0FHRV9VVElMSVRJRVMoYWNsKQotQUNfUEFDS0FHRV9ORUVEX0FUVFJfWEFUVFJfSAotQUNfUEFDS0FHRV9ORUVEX0FUVFJfRVJST1JfSAotQUNfTVVMVElMSUIoJGVuYWJsZV9saWI2NCkKLUFDX1BBQ0tBR0VfTkVFRF9HRVRYQVRUUl9MSUJBVFRSCi1BQ19NQU5VQUxfRk9STUFUCi0KLUFDX0ZVTkNfR0NDX1ZJU0lCSUxJVFkKLQotQUNfT1VUUFVUKGluY2x1ZGUvYnVpbGRkZWZzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdAppbmRleCBhNTY5NDZkLi40MzEyODIzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdApAQCAtNCw2MSArNCw3IEBACiAKICN1bWFzayAwNzcKIAotRVhUM19JTUFHRT1leHQzLmltZwotRVhUM19NT1VOVF9QT0lOVD0vbW50L2V4dDMKK21rZGlyIC1wIC90bXAvYWNsLXB0ZXN0L3Rlc3QKK2NwIHRlc3QvdGVzdC4qIC90bXAvYWNsLXB0ZXN0L3Rlc3QKIAotdHJhcCAncm0gLWYgJHtFWFQzX0lNQUdFfScgRVhJVAotCi1kZCBpZj0vZGV2L3plcm8gb2Y9JHtFWFQzX0lNQUdFfSBicz0xTSBjb3VudD0xCi1pZiBbICIkPyIgLWVxIDAgXTsgdGhlbgotCWVjaG8gIlBBU1M6IGR1bXAgZXh0My5pbWciCi1lbHNlCi0JZWNobyAiRkFJTDogZHVtcCBleHQzLmltZyIKLQlleGl0IDEKLWZpCi0KLW1rZnMuZXh0MyAtRiAke0VYVDNfSU1BR0V9Ci1pZiBbICIkPyIgLWVxIDAgXTsgdGhlbgotCWVjaG8gIlBBU1M6IG1rZnMuZXh0MyAtRiBleHQzLmltZyIKLWVsc2UKLQllY2hvICJGQUlMOiBta2ZzLmV4dDMgLUYgZXh0My5pbWciCi0JZXhpdCAxCi1maQotCi1pZiBbIC1kICRFWFQzX01PVU5UX1BPSU5UIF07IHRoZW4KLQllY2hvICJtb3VudCBwb2ludCBleGlzdCIKLWVsc2UKLQlta2RpciAtcCAkRVhUM19NT1VOVF9QT0lOVAotZmkKLQotCi1tb3VudCAtbyBsb29wLHJ3LGFjbCAgJHtFWFQzX0lNQUdFfSAkRVhUM19NT1VOVF9QT0lOVAotaWYgWyAiJD8iIC1lcSAwIF07IHRoZW4KLQllY2hvICJQQVNTOiBtb3VudCBleHQzLmltZyIKLWVsc2UKLQllY2hvICJGQUlMOiBtb3VudCBleHQzLmltZyIKLQlleGl0IDEKLWZpCi0KLWNwIC1yZiAuL3Rlc3QvICRFWFQzX01PVU5UX1BPSU5UCi0KLWNkICRFWFQzX01PVU5UX1BPSU5UL3Rlc3QvCi0KLWlmCXNlZCAtZSAncyFeYmluOng6MjokIWJpbjp4OjI6ZGFlbW9uIScgPCAvZXRjL2dyb3VwID4gZ3RtcAotdGhlbglpZgljcCAvZXRjL2dyb3VwIGdyb3VwLm9yaWc7Ci0JdGhlbgljcCBndG1wIC9ldGMvZ3JvdXAKLQkJbWFrZSAgLWsgdGVzdHMgcm9vdC10ZXN0cyB8IHNlZCBcCi0JCQktZSAnc3xeXFsuKlxdIFwoLipcKSAtLSBvayR8UEFTUzogXDF8JyBcCi0JICAJCS1lICdzfF5cWy4qXF0gXCguKlwpIC0tIGZhaWxlZHxGQUlMOiBcMXwnCi0JCWNwIGdyb3VwLm9yaWcgL2V0Yy9ncm91cAotCWVsc2UJZWNobyAiRkFJTDogY291bGRuJ3Qgc2F2ZSBvcmlnaW5hbCBncm91cCBmaWxlLiIKLQkJZXhpdCAxCi0JZmkKLWVsc2UJZWNobyAiRkFJTDogY291bGRuJ3QgY3JlYXRlIG1vZGlmaWVkIGdyb3VwIGZpbGUuIgotCWV4aXQgMQotZmkKLQotY2QgLQotdW1vdW50ICRFWFQzX01PVU5UX1BPSU5UCi1ybSAtcmYgJEVYVDNfTU9VTlRfUE9JTlQKLXJtICRFWFQzX0lNQUdFCittYWtlIHRlc3Qtc3VpdGUubG9nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWRpcmVjdG9yeS1wZXJtaXNzaW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjQ5OTBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAzMTE1ODlmZWRmMTk2MTY4MzgyZDhmMGRiMzAzYWIzMjhiY2Y5ZDgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxMSBNYXkgMjAxNiAxNToxNjowNiAtMDUwMAotU3ViamVjdDogW1BBVENIXSBhY2wuaW5jLCBydW4tcHRlc3Q6IGltcHJvdmUgcHRlc3QgZnVuY3Rpb25hbGl0eSBvbiBsaW1pdGVkCi0KLWNvbW1pdCBjNDViYWU4NDgxN2E3MGZlZjZjMmI2NjFhMDdhNDkyYTBkMjNhZTg1Ci0KLSAgICBGaXggcGVybWlzc2lvbnMgb24gdGVtcG9yYXJ5IGRpcmVjdG9yeQotCi0gICAgVGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkncyBwZXJtaXNzaW9ucyBoYXZlIHRvIGFsbG93IG90aGVyIHVzZXJzIHRvCi0gICAgdmlldyB0aGUgZGlyZWN0b3J5LiBBIGRlZmF1bHQgdW1hc2sgb2YgMDIyIGlzIGNvbW1vbiwgYnV0IG5vdCBtYW5kYXRvcnksCi0gICAgYW5kIHNlY3VyZSBzeXN0ZW1zIG1heSBoYXZlIG1vcmUgcmVzdHJpY3RpdmUgZGVmYXVsdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9hY2wuZ2l0L2NvbW1pdC8/aWQ9YzY3NzJhOTU4ODAwZGUwNjQ0ODI2MzRmNzdjMjBhMGZhYWZjNWFmNiBdCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QgYi90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAotaW5kZXggNDI2MTVmNS4uMDk4YjUyYSAxMDA2NDQKLS0tLSBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci0rKysgYi90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAotQEAgLTE2LDYgKzE2LDcgQEAgQ3J5IGltbWVkaWF0ZWx5IGlmIHdlIGFyZSBub3QgcnVubmluZyBhcyByb290LgotIEZpcnN0LCBzZXQgdXAgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZCBjcmVhdGUgYSByZWd1bGFyIGZpbGUgd2l0aAotIGRlZmluZWQgcGVybWlzc2lvbnMuCi0gCi0rCSQgdW1hc2sgMDIyCi0gCSQgbWtkaXIgZAotIAkkIGNkIGQKLSAJJCB1bWFzayAwMjcKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtaW5zdWZmaWNpZW50LXF1b3Rpbmctb2YucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzOTI0NjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1Gcm9tIGU5OGNlOGFjZjg0ZDEyZWE2N2EzYWM3NmJmNjNjNmQ4N2Q5YWY4NmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDIwIE1heSAyMDEzIDE2OjM4OjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3Q6IGZpeCBpbnN1ZmZpY2llbnQgcXVvdGluZyBvZiAnXCcKLQotVGhpcyBpcyBhIGZvbGxvdy11cCB0byA3ZjJjOTFiODM2OTI0MmE4ZGJjMmIzMDRhNWI3MWIyYTg1ZjViODU1LCB3aGljaAotY2F1c2VkIHNiaXRzLXJlc3RvcmUudGVzdCB0byBmYWlsIGluIHRoZSBmb2xsb3dpbmcgd2F5IGluIGNhc2UgU0VMaW51eAotd2FzIGRpc2FibGVkOgotCi0qKiogc2JpdHMtcmVzdG9yZS50ZXN0ICoqKgotWzNdICQgdW1hc2sgMDIyIC0tIG9rCi1bNF0gJCBta2RpciBkIC0tIG9rCi1bNV0gJCB0b3VjaCBkL2cgLS0gb2sKLVs2XSAkIHRvdWNoIGQvdSAtLSBvawotWzddICQgY2htb2QgdStzIGQvdSAtLSBvawotWzhdICQgY2htb2QgZytzIGQvZyAtLSBvawotWzldICQgY2htb2QgK3QgZCAtLSBvawotWzEwXSAkIGdldGZhY2wgLVIgZCA+IGQuYWNsIC0tIG9rCi1bMTFdICQgcm0gLVIgZCAtLSBvawotWzEyXSAkIG1rZGlyIGQgLS0gb2sKLVsxM10gJCB0b3VjaCBkL2cgLS0gb2sKLVsxNF0gJCB0b3VjaCBkL3UgLS0gb2sKLVsxNV0gJCBzZXRmYWNsIC0tcmVzdG9yZSBkLmFjbCAtLSBvawotWzE2XSAkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy8uJC8vZycgLS0gZmFpbGVkCi1kcnd4ci14ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IGRyd3hyLXhyLXQKLVsxOF0gJCBscyAtZGwgZC91IHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy8uJC8vZycgLS0gZmFpbGVkCi0tcndTci0tci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IC1yd1NyLS1yLS0KLVsyMF0gJCBscyAtZGwgZC9nIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy8uJC8vZycgLS0gZmFpbGVkCi0tcnctci1Tci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IC1ydy1yLVNyLS0KLVsyMl0gJCBybSAtUmYgZCAtLSBvawotMTcgY29tbWFuZHMgKDE0IHBhc3NlZCwgMyBmYWlsZWQpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD1lOThjZThhY2Y4NGQxMmVhNjdhM2FjNzZiZjYzYzZkODdkOWFmODZkCi0KLVNpZ25lZC1vZmYtYnk6IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBhY2wtMi4yLjUyL3Rlc3QvY3AudGVzdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L2NwLnRlc3QKLSsrKyBhY2wtMi4yLjUyL3Rlc3QvY3AudGVzdAotQEAgLTksNyArOSw3IEBAIFRoZSBjcCB1dGlsaXR5IHNob3VsZCBvbmx5IGNvcHkgQUNMcyBpZgotIAk+IC1ydy1ydy1yLS0rCi0gCQotIAkkIGNwIGYgZwotLQkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXC4kLy9nJwotKwkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiAtcnctci0tci0tCi0gCQotIAkkIHJtIGcKLUluZGV4OiBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3QvbWlzYy50ZXN0Ci0rKysgYWNsLTIuMi41Mi90ZXN0L21pc2MudGVzdAotQEAgLTI1NCw3ICsyNTQsNyBAQCBBZGQgc29tZSB1c2VycyBhbmQgZ3JvdXBzCi0gU3ltbGluayBpbiBkaXJlY3Rvcnkgd2l0aCBkZWZhdWx0IEFDTD8KLSAJIAotIAkkIGxuIC1zIGQgZC9sCi0tCSQgbHMgLWRsIGQvbCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXC4kLy9nJwotKwkkIGxzIC1kbCBkL2wgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCi0gCT4gbHJ3eHJ3eHJ3eAotIAotIAkkIGxzIC1kbCAtTCBkL2wgfCBhd2sgJ3twcmludCAkMX0nCi1AQCAtMzQzLDcgKzM0Myw3IEBAIFJlbW92ZSB0aGUgZGVmYXVsdCBBQ0wKLSBSZXNldCB0byBiYXNlIGVudHJpZXMKLSAJIAotIAkkIHNldGZhY2wgLWIgZAotLQkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCi0gCT4gZHJ3eHIteC0tLQotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi1AQCAtMzU1LDcgKzM1NSw3IEBAIFJlc2V0IHRvIGJhc2UgZW50cmllcwotIE5vdywgY2htb2Qgc2hvdWxkIGNoYW5nZSB0aGUgZ3JvdXBfb2JqIGVudHJ5Ci0gCSAKLSAJJCBjaG1vZCA3NzUgZAotLQkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCi0gCT4gZHJ3eHJ3eHIteAotIAkKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLSsrKyBhY2wtMi4yLjUyL3Rlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0Ci1AQCAtMTMsMTAgKzEzLDEwIEBAIEVuc3VyZSBzZXR0aW5nIG9mIFNVSUQvU0dJRC9zdGlja3kgdmlhIC0KLSAJJCB0b3VjaCBkL2cKLSAJJCB0b3VjaCBkL3UKLSAJJCBzZXRmYWNsIC0tcmVzdG9yZSBkLmFjbAotLQkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCi0gCT4gZHJ3eHIteHItdAotLQkkIGxzIC1kbCBkL3UgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZC91IHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwotIAk+IC1yd1NyLS1yLS0KLS0JJCBscyAtZGwgZC9nIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWRsIGQvZyB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiAtcnctci1Tci0tCi0gCSQgcm0gLVJmIGQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXh1cHMtb24tU0VMaW51eC1tYWNoaW5lcy1mb3Itcm9vdC10ZXN0Y2FzZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4dXBzLW9uLVNFTGludXgtbWFjaGluZXMtZm9yLXJvb3QtdGVzdGNhc2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2MxMWE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXh1cHMtb24tU0VMaW51eC1tYWNoaW5lcy1mb3Itcm9vdC10ZXN0Y2FzZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1Gcm9tIGQyZjQ5ZWU2ZmU0ODUwYjhkZGE1YjA4Njc2YjM2MjAxZDNjNDM3MTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyIE1hciAyMDE2IDE1OjQ2OjU3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3Q6IGZpeHVwcyBvbiBTRUxpbnV4IG1hY2hpbmVzIGZvciByb290IHRlc3RjYXNlcwotCi1scyBhZGRzIGEgJy4nIGF0IHRoZSBlbmQgb2YgdGhlIHBlcm1pc3Npb24gZmllbGQgbGlzdCBvbiBTRUxpbnV4Ci1tYWNoaW5lcywgZmlsdGVyIHRoaXMgb3V0IHNvIHJvb3QgdGVzdHMgd29yayBvbiBTRUxpbnV4IG1hY2hpbmVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi1odHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9hY2wuZ2l0L2NvbW1pdC8/aWQ9MjZhODdkMzZmODBkNWU5OGJjY2I1ODc4ODM0ZDllNjlkYWRmZTNlOQotCi1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QgfCA4ICsrKystLS0tCi0gdGVzdC9yb290L3Jlc3RvcmUudGVzdCAgICAgfCAyICstCi0gdGVzdC9yb290L3NldGZhY2wudGVzdCAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1pbmRleCA5YjllM2RlLi42NjUzMzlhIDEwMDY0NAotLS0tIGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLSsrKyBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1AQCAtMTksNyArMTksNyBAQCBkZWZpbmVkIHBlcm1pc3Npb25zLgotIAkkIGNkIGQKLSAJJCB1bWFzayAwMjcKLSAJJCB0b3VjaCBmCi0tCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nCi0rCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIHJvb3Qgcm9vdAotCi0KLUBAIC0zOSw3ICszOSw3IEBAIE5vdywgY2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgdGhlIGZpbGUgdG8gYmluOmJpbiBhbmQgdmVyaWZ5IHRoYXQgdGhpcwotIGdpdmVzIHVzZXIgYmluIHdyaXRlIGFjY2Vzcy4KLQotIAkkIGNob3duIGJpbjpiaW4gZgotLQkkIGxzIC1sIGYgfCBhd2sgLS0gJ3sgcHJpbnQgJDEsICQzLCAkNCB9JwotKwkkIGxzIC1sIGYgfCBhd2sgLS0gJ3sgcHJpbnQgJDEsICQzLCAkNCB9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3LXItLS0tLSBiaW4gYmluCi0gCSQgc3UgYmluCi0gCSQgZWNobyBiaW4gPj4gZgotQEAgLTI1NiwxMiArMjU2LDEyIEBAIGRpcmVjdG9yaWVzIGlmIHRoZSBmaWxlIGhhcyBhbiBBQ0wgYW5kIG9ubHkgQ0FQX0ZPV05FUiB3b3VsZCBncmFudCB0aGVtLgotIAkkIG1rZGlyIC1tIDYwMCB4Ci0gCSQgY2hvd24gZGFlbW9uOmRhZW1vbiB4Ci0gCSQgZWNobyBqID4geC9qCi0tCSQgbHMgLWwgeC9qIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScKLSsJJCBscyAtbCB4L2ogfCBhd2sgLS0gJ3sgcHJpbnQgJDEsICQzLCAkNCB9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3LXItLS0tLSByb290IHJvb3QKLQotIAkkIHNldGZhY2wgLW0gdTpkYWVtb246ciB4Ci0KLS0JJCBscyAtbCB4L2ogfCBhd2sgLS0gJ3sgcHJpbnQgJDEsICQzLCAkNCB9JwotKwkkIGxzIC1sIHgvaiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIHJvb3Qgcm9vdAotIAkoV2l0aCB0aGUgYnVnIHRoaXMgZ2l2ZXM6IGBsczogeC9qOiBQZXJtaXNzaW9uIGRlbmllZCcuKQotCi1kaWZmIC0tZ2l0IGEvdGVzdC9yb290L3Jlc3RvcmUudGVzdCBiL3Rlc3Qvcm9vdC9yZXN0b3JlLnRlc3QKLWluZGV4IDYzYTlkMDEuLmM4NTA5N2MgMTAwNjQ0Ci0tLS0gYS90ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0Ci0rKysgYi90ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0Ci1AQCAtMjEsNyArMjEsNyBAQCBDcnkgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFzIHJvb3QuCi0gCSQgY2hvd24gYmluIHBhc3N3ZAotIAkkIGNobW9kIHUrcyBwYXNzd2QKLSAJJCBzZXRmYWNsIC0tcmVzdG9yZSBwYXNzd2QuYWNsCi0tCSQgbHMgLWRsIHBhc3N3ZCB8IGF3ayAne3ByaW50ICQxICIgIiAkMyAiICIgJDR9JwotKwkkIGxzIC1kbCBwYXNzd2QgfCBhd2sgJ3twcmludCAkMSAiICIgJDMgIiAiICQ0fScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1yd3NyLXhyLXggcm9vdCByb290Ci0KLSAJJCBybSBwYXNzd2QgcGFzc3dkLmFjbAotZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9zZXRmYWNsLnRlc3QgYi90ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0Ci1pbmRleCBhNDZhOWY0Li43ZWZiYWQ3IDEwMDY0NAotLS0tIGEvdGVzdC9yb290L3NldGZhY2wudGVzdAotKysrIGIvdGVzdC9yb290L3NldGZhY2wudGVzdAotQEAgLTEyLDcgKzEyLDcgQEAgQ3J5IGltbWVkaWF0ZWx5IGlmIHdlIGFyZSBub3QgcnVubmluZyBhcyByb290LgotIAkkIHNnIGJpbgotIAkkIHVtYXNrIDAyNwotIAkkIHRvdWNoIGcKLS0JJCBscyAtZGwgZyB8IGF3ayAne3ByaW50ICQxfScKLSsJJCBscyAtZGwgZyB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1ydy1yLS0tLS0KLQotIAkkIHNldGZhY2wgLW0gbTotIGcKLS0tCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41Mi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmM3N2Q4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIG1hbmFnaW5nIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvYWNsLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBHUEx2MisiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliJHtCUE59ID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT1jNzgxZDcwZWQyYjRkNDg5OTViNzkwNDAzMjE3YTI0OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORy5MR1BMO21kNT05ZTlhMjA2OTE3ZjhhZjExMmRhNjM0Y2UzYWI0MTc2NCIKLQotREVQRU5EUyA9ICJhdHRyIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vYWNsLyR7QlB9LnNyYy50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjO3N1YmRpcj0ke0JQfSBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYWNsLWZpeC10aGUtb3JkZXItb2YtZXhwZWN0ZWQtb3V0cHV0LW9mLWdldGZhY2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1maXgtaW5zdWZmaWNpZW50LXF1b3Rpbmctb2YucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1maXh1cHMtb24tU0VMaW51eC1tYWNoaW5lcy1mb3Itcm9vdC10ZXN0Y2FzZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLWxpYmFjbC1zaG91bGQtZGVwZW5kLW9uLWluY2x1ZGUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTYxNDE1MzEyNDI2ZTljMjIxMmJkN2RjNzkyOWFiZGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTc5MDc0YmIwNTgwYzA2YzRiNDEzN2JlNGM1YTkyYTcwMTU4MzI3Nzk2N2FjZGI1NTQ2MDQzYzc4NzRlMGQyMyIKLQotcmVxdWlyZSBlYS1hY2wuaW5jCi0KLSMgYXZvaWQgUlBBVEggaGFyZGNvZGUgdG8gc3RhZ2luZyBkaXIKLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0Jc2VkIC1pICR7U30vY29uZmlnLnN0YXR1cyAtZSBzLF5cXFwoaGFyZGNvZGVfaW50b19saWJzPVxcXCkuKiQsXFwxXCdub1wnLAotCSR7U30vY29uZmlnLnN0YXR1cwotfQotCi0jIGxpYmRpciBzaG91bGQgcG9pbnQgdG8gLmxhCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlzZWQgLWkgJHtEfSR7bGliZGlyfS9saWJhY2wubGEgLWUgXAotCSAgICBzLF5saWJkaXI9XCcke2Jhc2VfbGliZGlyfVwnJCxsaWJkaXI9XCcke2xpYmRpcn1cJywKLX0KLQotaW5oZXJpdCBwdGVzdAotCi1QVEVTVF9CVUlMRF9IT1NUX0ZJTEVTID0gImJ1aWxkZGVmcyIKLVBURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeUlBNIgotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0YXIgLWMgLS1leGNsdWRlPW5mcyB0ZXN0LyB8ICggY2QgJHtEfSR7UFRFU1RfUEFUSH0gJiYgdGFyIC14ZiAtICkKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUKLQlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvYnVpbGRkZWZzICR7U30vaW5jbHVkZS9idWlsZG1hY3JvcyAke1N9L2luY2x1ZGUvYnVpbGRydWxlcyAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlLwotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJhY2wgYmFzaCBjb3JldXRpbHMgcGVybCBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgcGVybC1tb2R1bGUtcG9zaXggc2hhZG93IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41My5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjUwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41My5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMiCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9hY2wvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIEdQTHYyKyIKK0xJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgorTElDRU5TRV9saWIke0JQTn0gPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM3ODFkNzBlZDJiNGQ0ODk5NWI3OTA0MDMyMTdhMjQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxHUEw7bWQ1PTllOWEyMDY5MTdmOGFmMTEyZGE2MzRjZTNhYjQxNzY0IgorCitERVBFTkRTID0gImF0dHIiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9hY2wvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMDdhYWJmMWRiYjU1MGJjZGRkZTUyYTI0NGNkMTA3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNmJlOTg2NWM2ZjQxOGQ4NTFmZjQ0OTRlMTI0MDY1NjgzNTNiODkxZmZlMWY1OTZiMzQ2OTNjMzg3YWYyNmM3IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0CisKK1BBQ0tBR0VTID0rICJsaWIke0JQTn0iCisKK0ZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKKworUFRFU1RfQlVJTERfSE9TVF9GSUxFUyA9ICJidWlsZGRlZnMiCitQVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAiXlJQTSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBsaWJ0ZXN0bG9va3VwLmxhCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXJmICR7U30vdGVzdC8gJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtcmYgJHtTfS9idWlsZC1hdXgvICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgIG1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9Ly5saWJzCisJY3AgLXJmICR7Qn0vLmxpYnMvbGlidGVzdGxvb2t1cCogJHtEfSR7UFRFU1RfUEFUSH0vLmxpYnMKKyAgICAgICAgY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgICAgIHNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisKKyAgICAgICAgc2VkIC1pICJzfF5zcmNkaXIgPS4qfHNyY2RpciA9IFwufGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgICAgIHNlZCAtaSAic3xeYWJzX3NyY2RpciA9Lip8YWJzX3NyY2RpciA9IFwufGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgICAgIHNlZCAtaSAic3xeYWJzX3RvcF9zcmNkaXIgPS4qfGFic190b3Bfc3JjZGlyID0gXC5cLnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgInN8Xk1ha2VmaWxlOi4qfE1ha2VmaWxlOnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisgICAgICAgIHJtICR7RH0ke1BURVNUX1BBVEh9Ly5saWJzL2xpYnRlc3Rsb29rdXAubGFpCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImFjbCBcCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcmV1dGlscyBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb3NpeCBcCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3cgXAorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBnYXdrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGUyZnNwcm9ncy1ta2UyZnMgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY3dkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgICAgICAgICAgICAgICAgICAgICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCmluZGV4IDM1MDNkNjYuLmYxM2E4M2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMKQEAgLTgsMjIgKzgsMTggQEAKIExJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgogTElDRU5TRV9saWIke0JQTn0gPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PTJkMGFhMTRiM2ZjZTQ2OTRlNGY2MTVlMzAxODYzMzVmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0dHIvYXR0ci5jO2VuZGxpbmU9MTc7bWQ1PWJlMDQwMzI2MWYwODQ3ZTVmNDNlZDViMDhkMTk1OTNjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2F0dHIuYztlbmRsaW5lPTE3O21kNT1iZTA0MDMyNjFmMDg0N2U1ZjQzZWQ1YjA4ZDE5NTkzYyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJhdHRyL2xpYmF0dHIuYztlbmRsaW5lPTE3O21kNT03OTcwZjc3MDQ5ZjhmYTExOTlmZmY2MmE3YWI3MjRmYiIKIAotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2F0dHIvJHtCUH0uc3JjLnRhci5neiBcCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vYXR0ci8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICIKIAotcmVxdWlyZSBlYS1hY2wuaW5jCitpbmhlcml0IHB0ZXN0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgYXV0b3Rvb2xzIGdldHRleHQKIAotIyBsaWJkaXIgc2hvdWxkIHBvaW50IHRvIC5sYQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jc2VkIC1pICR7RH0ke2xpYmRpcn0vbGliYXR0ci5sYSAtZSBcCi0JICAgIHMsXmxpYmRpcj1cJyR7YmFzZV9saWJkaXJ9XCckLGxpYmRpcj1cJyR7bGliZGlyfVwnLAotfQorUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKIAotaW5oZXJpdCBwdGVzdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCitGSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIEFMVEVSTkFUSVZFXyR7UE59ID0gInNldGZhdHRyIgpAQCAtMzMsMTQgKzI5LDM0IEBACiBQVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAiXlJQTSIKIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0YXIgLWMgLS1leGNsdWRlPWV4dCB0ZXN0LyB8ICggY2QgJHtEfSR7UFRFU1RfUEFUSH0gJiYgdGFyIC14ZiAtICkKLQlta2RpciAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlCi0JZm9yIGkgaW4gYnVpbGRkZWZzIGJ1aWxkbWFjcm9zIGJ1aWxkcnVsZXM7IFwKLQkgIGRvIGNwICR7U30vaW5jbHVkZS8kaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlLzsgXAotCWRvbmUKLQlzZWQgLWUgJ3N8OyBAZWNob3w7IGVjaG98JyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L01ha2VmaWxlCisgICAgICAgIGNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICAgICBzZWQgLWkgInN8XnNyY2RpciA9Lip8c3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfc3JjZGlyID0uKnxhYnNfc3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfdG9wX3NyY2RpciA9Lip8YWJzX3RvcF9zcmNkaXIgPSBcLlwufGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgICAgIHNlZCAtaSAic3xeTWFrZWZpbGU6Lip8TWFrZWZpbGU6fGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisJY3AgLXJmICR7U30vYnVpbGQtYXV4LyAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yZiAke1N9L3Rlc3QvICR7RH0ke1BURVNUX1BBVEh9CiB9CiAKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImF0dHIgY29yZXV0aWxzIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBwZXJsLW1vZHVsZS1wb3NpeCBtYWtlIHBlcmwiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJhdHRyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcmV1dGlscyBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtcG9zaXggXAorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdhd2sgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY3dkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci8wMDAxLVVzZS1zdGRpbnQtdHlwZXMtY29uc2lzdGVudGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2Q2NTA3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDM3YTI3YjZmZDA5ZWNiMzcwOTdiODVlNWRiNzRlNGY3N2I4MGZlMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotRGF0ZTogVHVlLCAxMiBKYW4gMjAxNiAyMjoyMDozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBVc2Ugc3RkaW50IHR5cGVzIGNvbnNpc3RlbnRseQotCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBpbmNsdWRlL2F0dHJpYnV0ZXMuaCB8IDYgKysrKy0tCi0gbWFuL21hbjMvYXR0cl9saXN0LjMgfCA4ICsrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBhdHRyLTIuNC40Ny9pbmNsdWRlL2F0dHJpYnV0ZXMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF0dHItMi40LjQ3Lm9yaWcvaW5jbHVkZS9hdHRyaWJ1dGVzLmgKLSsrKyBhdHRyLTIuNC40Ny9pbmNsdWRlL2F0dHJpYnV0ZXMuaAotQEAgLTIyLDYgKzIyLDcgQEAKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gLyoKLSAgKglBbiBhbG1vc3QtSVJJWC1jb21wYXRpYmxlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgQVBJCi0gICoJKHRoZSBJUklYIGF0dHJpYnV0ZSAibGlzdCIgb3BlcmF0aW9uIGlzIG1pc3NpbmcsIGFkZGVkIEFUVFJfU0VDVVJFKS4KLUBAIC02OSw3ICs3MCw3IEBAIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0IHsKLSAgKiBhbF9vZmZzZXRbaV0gZW50cnkgcG9pbnRzIHRvLgotICAqLwotIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0X2VudCB7CS8qIGRhdGEgZnJvbSBhdHRyX2xpc3QoKSAqLwotLQl1X2ludDMyX3QJYV92YWx1ZWxlbjsJLyogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgKi8KLSsJdWludDMyX3QJYV92YWx1ZWxlbjsJLyogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgKi8KLSAJY2hhcgkJYV9uYW1lWzFdOwkvKiBhdHRyIG5hbWUgKE5VTEwgdGVybWluYXRlZCkgKi8KLSB9IGF0dHJsaXN0X2VudF90OwotIAotQEAgLTkwLDcgKzkxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfZW50IHsJLyogZGF0YSBmcgotICAqIG9wZXJhdGlvbiBvbiBhIGN1cnNvciBpcyB0byBiemVybygpIGl0LgotICAqLwotIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0X2N1cnNvciB7Ci0tCXVfaW50MzJfdAlvcGFxdWVbNF07CS8qIGFuIG9wYXF1ZSBjb29raWUgKi8KLSsJdWludDMyX3QJb3BhcXVlWzRdOwkvKiBhbiBvcGFxdWUgY29va2llICovCi0gfSBhdHRybGlzdF9jdXJzb3JfdDsKLSAKLSAvKgotSW5kZXg6IGF0dHItMi40LjQ3L21hbi9tYW4zL2F0dHJfbGlzdC4zCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXR0ci0yLjQuNDcub3JpZy9tYW4vbWFuMy9hdHRyX2xpc3QuMwotKysrIGF0dHItMi40LjQ3L21hbi9tYW4zL2F0dHJfbGlzdC4zCi1AQCAtNzIsOSArNzIsOSBAQCBUaGUgY29udGVudHMgb2YgYW4gXGY0YXR0cmxpc3RfdFxmUCBzdHJ1Ci0gLm5mCi0gLmZ0IDQKLSAudGEgOW4gMjJuCi0tX19pbnQzMl90IGFsX2NvdW50OyAvXCgqKiBudW1iZXIgb2YgZW50cmllcyBpbiBhdHRybGlzdCBcKCoqLwotLV9faW50MzJfdCBhbF9tb3JlOyAvXCgqKiBUL0Y6IG1vcmUgYXR0cnMgKGRvIHN5c2NhbGwgYWdhaW4pIFwoKiovCi0tX19pbnQzMl90IGFsX29mZnNldFsxXTsgL1woKiogYnl0ZSBvZmZzZXRzIG9mIGF0dHJzIFt2YXItc2l6ZWRdIFwoKiovCi0raW50MzJfdCBhbF9jb3VudDsgL1woKiogbnVtYmVyIG9mIGVudHJpZXMgaW4gYXR0cmxpc3QgXCgqKi8KLStpbnQzMl90IGFsX21vcmU7IC9cKCoqIFQvRjogbW9yZSBhdHRycyAoZG8gc3lzY2FsbCBhZ2FpbikgXCgqKi8KLStpbnQzMl90IGFsX29mZnNldFsxXTsgL1woKiogYnl0ZSBvZmZzZXRzIG9mIGF0dHJzIFt2YXItc2l6ZWRdIFwoKiovCi0gLmZ0IDEKLSAuZmkKLSAuUkUKLUBAIC0xMTMsNyArMTEzLDcgQEAgaW5jbHVkZSB0aGUgZm9sbG93aW5nIG1lbWJlcnM6Ci0gLm5mCi0gLmZ0IDQKLSAudGEgOW4gMjJuCi0tdV9pbnQzMl90IGFfdmFsdWVsZW47IC9cKCoqIG51bWJlciBieXRlcyBpbiB2YWx1ZSBvZiBhdHRyIFwoKiovCi0rdWludDMyX3QgYV92YWx1ZWxlbjsgL1woKiogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgXCgqKi8KLSBjaGFyIGFfbmFtZVtdOyAvXCgqKiBhdHRyIG5hbWUgKE5VTEwgdGVybWluYXRlZCkgXCgqKi8KLSAuZnQgMQotIC5maQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvYXR0ci1NaXNzaW5nLWNvbmZpZ3VyZS5hYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL2F0dHItTWlzc2luZy1jb25maWd1cmUuYWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZmNjM2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvYXR0ci1NaXNzaW5nLWNvbmZpZ3VyZS5hYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gYXR0cjogTWlzc2luZyBjb25maWd1cmUuYWMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbVXBzdHJlYW0gcmVsZWFzZWQgdGFyYmFsbCBtaXNzaW5nIHRoaXMgZmlsZV0KLVNpZ25lZC1vZmYtYnk6IE5hdGhhbiBSb3NzaSA8bmF0aGFuLnJvc3NpQHhpbGlueC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAgIDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbmZpZ3VyZS5hYwotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjk2NmQwZQotLS0tIC9kZXYvbnVsbAotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMCwwICsxLDQ4IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMDkgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rIwotK0FDX0lOSVQoaW5jbHVkZS9hdHRyaWJ1dGVzLmgpCi0rQUNfQ09ORklHX0FVWF9ESVIoWy5dKQotK0FDX0NPTkZJR19NQUNST19ESVIoW200XSkKLStBQ19DT05GSUdfSEVBREVSKGluY2x1ZGUvY29uZmlnLmgpCi0rQUNfUFJFRklYX0RFRkFVTFQoL3VzcikKLSsKLStBQ19QUk9HX0xJQlRPT0wKLSsKLStBQ19BUkdfRU5BQkxFKHNoYXJlZCwKLStbIC0tZW5hYmxlLXNoYXJlZD1beWVzL25vXSBFbmFibGUgdXNlIG9mIHNoYXJlZCBsaWJyYXJpZXMgW2RlZmF1bHQ9eWVzXV0sLAotKwllbmFibGVfc2hhcmVkPXllcykKLStBQ19TVUJTVChlbmFibGVfc2hhcmVkKQotKwotK0FDX0FSR19FTkFCTEUoZ2V0dGV4dCwKLStbIC0tZW5hYmxlLWdldHRleHQ9W3llcy9ub10gRW5hYmxlIGFsdGVybmF0ZSBsYW5ndWFnZSBzdXBwb3J0IFtkZWZhdWx0PXllc11dLCwKLSsJZW5hYmxlX2dldHRleHQ9eWVzKQotK0FDX1NVQlNUKGVuYWJsZV9nZXR0ZXh0KQotKwotK0FDX0FSR19FTkFCTEUobGliNjQsCi0rWyAtLWVuYWJsZS1saWI2ND1beWVzL25vXSBFbmFibGUgbGliNjQgc3VwcG9ydCBbZGVmYXVsdD1ub11dLCwKLSsJZW5hYmxlX2xpYjY0PW5vKQotK0FDX1NVQlNUKGVuYWJsZV9saWI2NCkKLSsKLStBQ19QQUNLQUdFX0dMT0JBTFMoYXR0cikKLStBQ19QQUNLQUdFX1VUSUxJVElFUyhhdHRyKQotK0FDX01BTlVBTF9GT1JNQVQKLStBQ19NVUxUSUxJQigkZW5hYmxlX2xpYjY0KQotKwotK0FDX0NfQ09OU1QKLStBQ19UWVBFX01PREVfVAotK0FDX0ZVTkNfQUxMT0NBCi0rCi0rQUNfT1VUUFVUKGluY2x1ZGUvYnVpbGRkZWZzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvZG9udC11c2UtZGVjbC1tYWNyb3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ0Yjg5Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVVzZSBleHRlcm4gIkMiIGluc3RlYWQgb2YgX19CRUdJTl9ERUNML19fRU5EX0RFQ0wgbWFjcm9zCi10aGVzZSBtYWNyb3MgYXJlIGRlZmluZWQgaW4gc3lzL2NkZWZzLmggZm9yIGdsaWJjIGFuZCB0aGlzIGhlYWRlciBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCBsaWJjCi0KLWFueXdheSB0aGV5IGRlZmluZWQgbGlrZSBiZWxvdwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSMgZGVmaW5lIF9fQkVHSU5fREVDTFMgZXh0ZXJuICJDIiB7Ci0jIGRlZmluZSBfX0VORF9ERUNMUyB9Ci0jZWxzZQotIyBkZWZpbmUgX19CRUdJTl9ERUNMUyAvKiBlbXB0eSAqLwotIyBkZWZpbmUgX19FTkRfREVDTFMgLyogZW1wdHkgKi8KLSNlbmRpZgotCi1fX1RIUk9XIG1hY3JvIGlzIGFsc28gbm90IGF2YWlsYWJsZSBvbiBtdXNsLCBkZWZpbmVkIHRodXNseQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IGF0dHItMi40LjQ3L2luY2x1ZGUveGF0dHIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF0dHItMi40LjQ3Lm9yaWcvaW5jbHVkZS94YXR0ci5oCTIwMTQtMDQtMDIgMDA6MDE6MzAuMjUyMDkxMjgwIC0wNzAwCi0rKysgYXR0ci0yLjQuNDcvaW5jbHVkZS94YXR0ci5oCTIwMTQtMDQtMDIgMDA6MTI6NTcuOTg1NDI4MDk5IC0wNzAwCi1AQCAtMzAsOCArMzAsMjAgQEAKLSAjZGVmaW5lIFhBVFRSX0NSRUFURSAgMHgxICAgICAgIC8qIHNldCB2YWx1ZSwgZmFpbCBpZiBhdHRyIGFscmVhZHkgZXhpc3RzICovCi0gI2RlZmluZSBYQVRUUl9SRVBMQUNFIDB4MiAgICAgICAvKiBzZXQgdmFsdWUsIGZhaWwgaWYgYXR0ciBkb2VzIG5vdCBleGlzdCAqLwotIAotLQotLV9fQkVHSU5fREVDTFMKLSsjaWZuZGVmIF9fVEhST1cKLSsjIGlmbmRlZiBfX0dOVUNfUFJFUkVRCi0rIyAgZGVmaW5lIF9fR05VQ19QUkVSRVEobWFqLCBtaW4pICgwKQotKyMgZW5kaWYKLSsjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgX19HTlVDX1BSRVJFUSAoMiw4KQotKyMgIGRlZmluZSBfX1RIUk9XICAgICAgIHRocm93ICgpCi0rIyBlbHNlCi0rIyAgZGVmaW5lIF9fVEhST1cKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gZXh0ZXJuIGludCBzZXR4YXR0ciAoY29uc3QgY2hhciAqX19wYXRoLCBjb25zdCBjaGFyICpfX25hbWUsCi0gCQkgICAgICBjb25zdCB2b2lkICpfX3ZhbHVlLCBzaXplX3QgX19zaXplLCBpbnQgX19mbGFncykgX19USFJPVzsKLUBAIC01OCw2ICs3MCw4IEBACi0gZXh0ZXJuIGludCBscmVtb3ZleGF0dHIgKGNvbnN0IGNoYXIgKl9fcGF0aCwgY29uc3QgY2hhciAqX19uYW1lKSBfX1RIUk9XOwotIGV4dGVybiBpbnQgZnJlbW92ZXhhdHRyIChpbnQgX19maWxlZGVzLCAgIGNvbnN0IGNoYXIgKl9fbmFtZSkgX19USFJPVzsKLSAKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSAKLSAjZW5kaWYJLyogX19YQVRUUl9IX18gKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjQyNDRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK21ha2UgdGVzdC1zdWl0ZS5sb2cKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4OGJlZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0cl8yLjQuNDcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIGF0dHIuaW5jCi0KLSMgY29uZmlndXJlLmFjIHdhcyBtaXNzaW5nIGZyb20gdGhlIHJlbGVhc2UgdGFyYmFsbC4gVGhpcyBzaG91bGQgYmUgZml4ZWQgaW4KLSMgZnV0dXJlIHJlbGVhc2VzIG9mIGF0dHIsIHJlbW92ZSB0aGlzIHdoZW4gdXBkYXRpbmcgdGhlIHJlY2lwZS4KLVNSQ19VUkkgKz0gImZpbGU6Ly9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NGY1OGRlYzAwYjYwZjJkYzhmZDFjOTcwOTI5MWNjNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNTc3MmY2NTNhYzViMmUzY2VlYjg5ZGY1MGU0Njg4ODkxZTIxZjcyM2M0NjA2MzY1NDg5NzE2NTJhZjBhODU5IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0cl8yLjQuNDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0cl8yLjQuNDguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMwZDRlNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40OC5iYgpAQCAtMCwwICsxLDYgQEAKK3JlcXVpcmUgYXR0ci5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImJjMWU1Y2I1Yzk2ZDk5YjI0ODg2ZjFmNTI3ZDNiYjNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlYWQ3MmIzNThlYzcwOWVkMDBiYmY3YTllYWVmMTY1NGJhYWQ5MzdjMDAxYzA0NGZlOGI3NGM1N2Y1MzI0ZTciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMzZmZmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0jIHRoaXMgYnVpbGQgc3lzdGVtIGlzIG1vc3RseSBzaGFyZWQgYnkgYXR0ciBhbmQgYWNsCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9yZWxhdGl2ZS1saWJkaXIucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgIgotIyBUaGlzIHBhdGNoIHNob3VsZCBiZSBhcHBsaWVkIGFmdGVyICcoYXR0clx8YWNsKS1NaXNzaW5nLWNvbmZpZ3VyZS5hYy5wYXRjaCcgCi1TUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovLzAwMDEtQWRkZWQtY29uZmlndXJlLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1zdGF0aWMtbGlici5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQKLQotIyBXaGVuIHVwc3RyZWFtIGlzIHVzaW5nIGF1dG9tYWtlIHByb3Blcmx5LCB0aGlzIGNhbiBiZSByZW1vdmVkCi1DTEVBTkJST0tFTiA9ICIxIgotCi0jIHRoZSBwYWNrYWdlIGNvbWVzIHdpdGggYSBjdXN0b20gY29uZmlnLmguaW4sIGl0IGNhbm5vdCBiZQotIyBvdmVyd3JpdHRlbiBieSBhdXRvaGVhZGVyCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLUVYVFJBX09FQ09ORiA9ICJJTlNUQUxMX1VTRVI9cm9vdCBJTlNUQUxMX0dST1VQPXJvb3QiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1lbmFibGUtZ2V0dGV4dD1ubyIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QFsnJywgJyAtLWRpc2FibGUtZ2V0dGV4dCAnXVsoZC5nZXRWYXIoJ1VTRV9OTFMnKSA9PSAnbm8nKV19IgotCi1FWFRSQV9PRU1BS0UgPSAiUEtHX0xJQl9ESVI9JHtiYXNlX2xpYmRpcn0gUEtHX0RFVkxJQl9ESVI9JHtsaWJkaXJ9IgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgaW5zdGFsbC1saWIgaW5zdGFsbC1kZXYgRElTVF9ST09UPSIke0R9IiBaSVA9Imd6aXAgLW4iCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JaWYgdGVzdCAiJHtsaWJkaXJ9IiA9ICIke2Jhc2VfbGliZGlyfSIgOyB0aGVuCi0JCXJldHVybgotCWZpCi0JbGlicmVscGF0aD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2xpYmRpcicpLCBkLmdldFZhcignYmFzZV9saWJkaXInKSl9Ci0JYmFzZWxpYnJlbHBhdGg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicpLCBkLmdldFZhcignbGliZGlyJykpfQotCi0JIyBSZW1vdmUgYmFkIHN5bWxpbmtzICYgY3JlYXRlIHRoZSBjb3JyZWN0IHN5bWxpbmtzCi0JaWYgdGVzdCAtTCAke0R9JHtsaWJkaXJ9L2xpYiR7QlBOfS5zbyA7IHRoZW4KLQkJcm0gLXJmICR7RH0ke2xpYmRpcn0vbGliJHtCUE59LnNvCi0JCWxuIC1zZiAkYmFzZWxpYnJlbHBhdGgvbGliJHtCUE59LnNvICR7RH0ke2xpYmRpcn0vbGliJHtCUE59LnNvCi0JZmkKLQlpZiB0ZXN0IC1MICR7RH0ke2Jhc2VfbGliZGlyfS9saWIke0JQTn0uYSA7IHRoZW4KLQkJcm0gLXJmICR7RH0ke2Jhc2VfbGliZGlyfS9saWIke0JQTn0uYQotCQlsbiAtc2YgJGxpYnJlbHBhdGgvbGliJHtCUE59LmEgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5hCi0JZmkKLQlpZiB0ZXN0IC1MICAke0R9JHtiYXNlX2xpYmRpcn0vbGliJHtCUE59LmxhIDsgdGhlbgotCQlybSAtcmYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5sYQotCQlsbiAtc2YgJGxpYnJlbHBhdGgvbGliJHtCUE59LmxhICR7RH0ke2Jhc2VfbGliZGlyfS9saWIke0JQTn0ubGEKLQlmaQotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtiYXNlX2xpYmRpcn0vbGliKiR7U09MSUJTfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzLzAwMDEtQWRkZWQtY29uZmlndXJlLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1zdGF0aWMtbGlici5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMxMTU5Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSAwMTI1NmM2MWJhMTI2NDQ5YzQ2ZGQ0YWI1ZDVlMTQ1NDg4Yjk4MWZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW1hcm5hdGggVmFsbHVyaSA8YW1hcm5hdGgudmFsbHVyaUBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDIzIEphbiAyMDE3IDEzOjI1OjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZGVkIGNvbmZpZ3VyZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgc3RhdGljIGxpYnJhcnkKLQotQ3JlYXRlIHN0YXRpYyBsaWJyYXJ5IGFyY2hpdmUgb25seSBpbiBjYXNlIG9mIC0tZW5hYmxlLXN0YXRpYy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFtYXJuYXRoIFZhbGx1cmkgPGFtYXJuYXRoLnZhbGx1cmlAaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgfCA2ICsrKysrKwotIGluY2x1ZGUvYnVpbGRkZWZzLmluIHwgMSArCi0gaW5jbHVkZS9idWlsZG1hY3JvcyAgfCAzICsrKwotIDMgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiOTY2ZDBlLi5lNDgyNjhiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNiw2ICsyNiwxMiBAQCBBQ19BUkdfRU5BQkxFKHNoYXJlZCwKLSAJZW5hYmxlX3NoYXJlZD15ZXMpCi0gQUNfU1VCU1QoZW5hYmxlX3NoYXJlZCkKLSAKLStBQ19BUkdfRU5BQkxFKHN0YXRpYywKLStbIC0tZW5hYmxlLXN0YXRpYz1beWVzL25vXSBFbmFibGUgdXNlIG9mIHN0YXRpYyBsaWJyYXJpZXMgW2RlZmF1bHQ9eWVzXV0sLAotKwllbmFibGVfc3RhdGljPXllcykKLStBQ19TVUJTVChlbmFibGVfc3RhdGljKQotKwotKwotIEFDX0FSR19FTkFCTEUoZ2V0dGV4dCwKLSBbIC0tZW5hYmxlLWdldHRleHQ9W3llcy9ub10gRW5hYmxlIGFsdGVybmF0ZSBsYW5ndWFnZSBzdXBwb3J0IFtkZWZhdWx0PXllc11dLCwKLSAJZW5hYmxlX2dldHRleHQ9eWVzKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnVpbGRkZWZzLmluIGIvaW5jbHVkZS9idWlsZGRlZnMuaW4KLWluZGV4IGQ5OTMxZGIuLjNiM2RiZDIgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2J1aWxkZGVmcy5pbgotKysrIGIvaW5jbHVkZS9idWlsZGRlZnMuaW4KLUBAIC03MSw2ICs3MSw3IEBAIFJQTUJVSUxECT0gQHJwbWJ1aWxkQAotIFJQTV9WRVJTSU9OCT0gQHJwbV92ZXJzaW9uQAotIAotIEVOQUJMRV9TSEFSRUQJPSBAZW5hYmxlX3NoYXJlZEAKLStFTkFCTEVfU1RBVElDIAk9IEBlbmFibGVfc3RhdGljQAotIEVOQUJMRV9HRVRURVhUCT0gQGVuYWJsZV9nZXR0ZXh0QAotIAotIEhBVkVfWklQUEVEX01BTlBBR0VTID0gQGhhdmVfemlwcGVkX21hbnBhZ2VzQAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnVpbGRtYWNyb3MgYi9pbmNsdWRlL2J1aWxkbWFjcm9zCi1pbmRleCAzOWZhN2UyLi5iMGYyNWM1IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9idWlsZG1hY3JvcwotKysrIGIvaW5jbHVkZS9idWlsZG1hY3JvcwotQEAgLTgwLDYgKzgwLDcgQEAgZW5kaWYKLSAjIC91c3IvbGliLgotIGlmZXEgKCQoRU5BQkxFX1NIQVJFRCkseWVzKQotIElOU1RBTExfTFRMSUJfREVWID0gXAotKwlzZXQgLXg7IFwKLSAJY2QgJChUT1BESVIpLyQoTElCTkFNRSkvLmxpYnM7IFwKLSAJLi4vJChJTlNUQUxMKSAtbSA3NTUgLWQgJChQS0dfREVWTElCX0RJUik7IFwKLSAJLi4vJChJTlNUQUxMKSAtbSA2NDQgLVQgb2xkX2xpYiAkKExJQk5BTUUpLmxhaSAkKFBLR19ERVZMSUJfRElSKTsgXAotQEAgLTg4LDcgKzg5LDkgQEAgSU5TVEFMTF9MVExJQl9ERVYgPSBcCi0gCS4uLyQoSU5TVEFMTCkgLVQgc29fYmFzZSAkKExJQk5BTUUpLmxhaSAkKFBLR19MSUJfRElSKTsgXAotIAlpZiB0ZXN0ICJ4JChQS0dfREVWTElCX0RJUikiICE9ICJ4JChQS0dfTElCX0RJUikiIDsgdGhlbiBcCi0gCXJlbF9saWJfcHJlZml4PSQkKGVjaG8gJChQS0dfTElCX0RJUikgfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZycpOyBcCi0rCWlmIHRlc3QgIiQoRU5BQkxFX1NUQVRJQykiID0gInllcyIgOyB0aGVuIFwKLSAJLi4vJChJTlNUQUxMKSAtUyAkJHJlbF9saWJfcHJlZml4JChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5hICQoUEtHX0xJQl9ESVIpLyQoTElCTkFNRSkuYTsgXAotKwlmaSA7XAotIAkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2xpYl9wcmVmaXgkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmxhICQoUEtHX0xJQl9ESVIpLyQoTElCTkFNRSkubGE7IFwKLSAJcmVsX2RldmxpYl9wcmVmaXg9JCQoZWNobyAkKFBLR19ERVZMSUJfRElSKSB8IHNlZCAncyxcKF4vXHxcKVteL11bXi9dKiwuLixnJyk7IFwKLSAJLi4vJChJTlNUQUxMKSAtUyAkJHJlbF9kZXZsaWJfcHJlZml4JChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5zbyAkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLnNvOyBcCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvUmVtb3ZlLXRoZS1hdHRyLjUtbWFuLXBhZ2UtbW92ZWQtdG8tbWFuLXBhZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWFiODNkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDAgKzAsMCBAQAotRnJvbSA2MDQ3Yzg1MjJiOTEyMzVhZDFlODM1ZjQ0ZjVlMzY0NzJkOWQ0OWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhcyBHcnVlbmJhY2hlciA8YW5kcmVhcy5ncnVlbmJhY2hlckBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIyIEFwciAyMDE1IDExOjQ2OjU5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZW1vdmUgdGhlIGF0dHIuNSBtYW4gcGFnZSAobW92ZWQgdG8gbWFuLXBhZ2VzKQotCi1Db21taXQgZGNlOWI0NDQ4YzdmMmIyMmJkMjA2Y2QwNjhmYjA1Y2IyZjMyNTViOSBmcm9tCi1odHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdAotCi1UaGUgYXR0ci41IHBhZ2UgaXMgcGFydCBvZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHN5c3RlbSBjYWxsIGRvY3VtZW50YXRpb24sCi13aGljaCBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBtYW4tcGFnZXMgcGFja2FnZS4gTW92ZSB0aGUgYXR0ci41IHBhZ2UgdGhlcmUKLWFzIHdlbGwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotW01BOiB1cGRhdGVkIHRvIGFwcGx5IGRpcmVjdGx5IHRvIHYyLjQuNDddCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWFuL01ha2VmaWxlICAgICAgfCAgIDIgKy0KLSBtYW4vbWFuNS9NYWtlZmlsZSB8ICAzNSAtLS0tLS0tLS0tLS0tCi0gbWFuL21hbjUvYXR0ci41ICAgfCAxNTMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTg5IGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuNS9NYWtlZmlsZQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuNS9hdHRyLjUKLQotZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZSBiL21hbi9NYWtlZmlsZQotaW5kZXggNzU1ZGFlZC4uOTMwMWYwOSAxMDA2NDQKLS0tLSBhL21hbi9NYWtlZmlsZQotKysrIGIvbWFuL01ha2VmaWxlCi1AQCAtMTksNyArMTksNyBAQAotIFRPUERJUiA9IC4uCi0gaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKLSAKLS1TVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKLStTVUJESVJTID0gbWFuMSBtYW4zCi0gCi0gZGVmYXVsdCA6ICQoU1VCRElSUykKLSAKLWRpZmYgLS1naXQgYS9tYW4vbWFuNS9NYWtlZmlsZSBiL21hbi9tYW41L01ha2VmaWxlCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDZiNzBkM2QuLjAwMDAwMDAKLS0tLSBhL21hbi9tYW41L01ha2VmaWxlCi0rKysgL2Rldi9udWxsCi1AQCAtMSwzNSArMCwwIEBACi0tIwotLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDAyIFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0tIyBDb3B5cmlnaHQgKEMpIDIwMDkgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLS0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tIwotLQotLVRPUERJUiA9IC4uLy4uCi0taW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKLS0KLS1NQU5fU0VDVElPTgk9IDUKLS0KLS1NQU5fUEFHRVMJPSAkKHNoZWxsIGVjaG8gKi4kKE1BTl9TRUNUSU9OKSkKLS1NQU5fREVTVAk9ICQoUEtHX01BTl9ESVIpL21hbiQoTUFOX1NFQ1RJT04pCi0tTFNSQ0ZJTEVTCT0gJChNQU5fUEFHRVMpCi0tCi0tZGVmYXVsdCA6ICQoTUFOX1BBR0VTKQotLQotLWluY2x1ZGUgJChCVUlMRFJVTEVTKQotLQotLWluc3RhbGwgOiBkZWZhdWx0Ci0tCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoTUFOX0RFU1QpCi0tCSQoSU5TVEFMTF9NQU4pCi0taW5zdGFsbC1kZXYgaW5zdGFsbC1saWI6Ci1kaWZmIC0tZ2l0IGEvbWFuL21hbjUvYXR0ci41IGIvbWFuL21hbjUvYXR0ci41Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGEwMjc1N2QuLjAwMDAwMDAKLS0tLSBhL21hbi9tYW41L2F0dHIuNQotKysrIC9kZXYvbnVsbAotQEAgLTEsMTUzICswLDAgQEAKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBtYW51YWwgcGFnZQotLS5cIgotLS5cIiBDb3B5cmlnaHQgKEMpIDIwMDAsIDIwMDIsIDIwMDcgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgotLS5cIiBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQsIDIwMDcgU2lsaWNvbiBHcmFwaGljcywgSW5jLgotLS5cIiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLS5cIgotLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0tLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0tLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLS5cIgotLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKLS0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55Ci0tLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKLS0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KLS0uXCIKLS0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLS5cIgotLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKLS0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLS5cIgotLS5USCBBVFRSIDUKLS0uU0ggTkFNRQotLWF0dHIgLSBFeHRlbmRlZCBhdHRyaWJ1dGVzCi0tLlNIIERFU0NSSVBUSU9OCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHBlcm1hbmVudGx5IHdpdGgKLS1maWxlcyBhbmQgZGlyZWN0b3JpZXMsIHNpbWlsYXIgdG8gdGhlIGVudmlyb25tZW50IHN0cmluZ3MgYXNzb2NpYXRlZAotLXdpdGggYSBwcm9jZXNzLgotLUFuIGF0dHJpYnV0ZSBtYXkgYmUgZGVmaW5lZCBvciB1bmRlZmluZWQuCi0tSWYgaXQgaXMgZGVmaW5lZCwgaXRzIHZhbHVlIG1heSBiZSBlbXB0eSBvciBub24tZW1wdHkuCi0tLlBQCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlCi0tYXNzb2NpYXRlZCB3aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKLS0uQlIgc3RhdCAoMikKLS1kYXRhKS4KLS1UaGV5IGFyZSBvZnRlbiB1c2VkIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5Ci0tdG8gYSBmaWxlc3lzdGVtIFwtIGZvciBleGFtcGxlLCBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHN1Y2ggYXMKLS1BY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgbWF5IGJlIGltcGxlbWVudGVkIHVzaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCi0tLlBQCi0tVXNlcnMgd2l0aCBzZWFyY2ggYWNjZXNzIHRvIGEgZmlsZSBvciBkaXJlY3RvcnkgbWF5IHJldHJpZXZlIGEgbGlzdCBvZgotLWF0dHJpYnV0ZSBuYW1lcyBkZWZpbmVkIGZvciB0aGF0IGZpbGUgb3IgZGlyZWN0b3J5LgotLS5QUAotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2VkIGFzIGF0b21pYyBvYmplY3RzLgotLVJlYWRpbmcgcmV0cmlldmVzIHRoZSB3aG9sZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUgYW5kIHN0b3JlcyBpdCBpbiBhIGJ1ZmZlci4KLS1Xcml0aW5nIHJlcGxhY2VzIGFueSBwcmV2aW91cyB2YWx1ZSB3aXRoIHRoZSBuZXcgdmFsdWUuCi0tLlBQCi0tU3BhY2UgY29uc3VtZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaXMgY291bnRlZCB0b3dhcmRzIHRoZSBkaXNrIHF1b3RhcwotLW9mIHRoZSBmaWxlIG93bmVyIGFuZCBmaWxlIGdyb3VwLgotLS5QUAotLUN1cnJlbnRseSwgc3VwcG9ydCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpcyBpbXBsZW1lbnRlZCBvbiBMaW51eCBieSB0aGUKLS1leHQyLCBleHQzLCBleHQ0LCBYRlMsIEpGUyBhbmQgcmVpc2VyZnMgZmlsZXN5c3RlbXMuCi0tLlNIIEVYVEVOREVEIEFUVFJJQlVURSBOQU1FU1BBQ0VTCi0tQXR0cmlidXRlIG5hbWVzIGFyZSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5ncy4KLS1UaGUgYXR0cmlidXRlIG5hbWUgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgZnVsbHkgcXVhbGlmaWVkCi0tLklSIG5hbWVzcGFjZS5hdHRyaWJ1dGUKLS1mb3JtLCBlZy4KLS0uSVIgdXNlci5taW1lX3R5cGUgLAotLS5JUiB0cnVzdGVkLm1kNXN1bSAsCi0tLklSIHN5c3RlbS5wb3NpeF9hY2xfYWNjZXNzICwKLS1vcgotLS5JUiBzZWN1cml0eS5zZWxpbnV4IC4KLS0uUFAKLS1UaGUgbmFtZXNwYWNlIG1lY2hhbmlzbSBpcyB1c2VkIHRvIGRlZmluZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBleHRlbmRlZAotLWF0dHJpYnV0ZXMuCi0tVGhlc2UgZGlmZmVyZW50IGNsYXNzZXMgZXhpc3QgZm9yIHNldmVyYWwgcmVhc29ucywgZS5nLiB0aGUgcGVybWlzc2lvbnMKLS1hbmQgY2FwYWJpbGl0aWVzIHJlcXVpcmVkIGZvciBtYW5pcHVsYXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcyBvZiBvbmUKLS1uYW1lc3BhY2UgbWF5IGRpZmZlciB0byBhbm90aGVyLgotLS5QUAotLUN1cnJlbnRseSB0aGUKLS0uSVIgc2VjdXJpdHkgLAotLS5JUiBzeXN0ZW0gLAotLS5JUiB0cnVzdGVkICwKLS1hbmQKLS0uSVIgdXNlcgotLWV4dGVuZGVkIGF0dHJpYnV0ZSBjbGFzc2VzIGFyZSBkZWZpbmVkIGFzIGRlc2NyaWJlZCBiZWxvdy4gQWRkaXRpb25hbAotLWNsYXNzZXMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCi0tLlNTIEV4dGVuZGVkIHNlY3VyaXR5IGF0dHJpYnV0ZXMKLS1UaGUgc2VjdXJpdHkgYXR0cmlidXRlIG5hbWVzcGFjZSBpcyB1c2VkIGJ5IGtlcm5lbCBzZWN1cml0eSBtb2R1bGVzLAotLXN1Y2ggYXMgU2VjdXJpdHkgRW5oYW5jZWQgTGludXguICAKLS1SZWFkIGFuZCB3cml0ZSBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gc2VjdXJpdHkgYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlCi0tcG9saWN5IGltcGxlbWVudGVkIGZvciBlYWNoIHNlY3VyaXR5IGF0dHJpYnV0ZSBieSB0aGUgc2VjdXJpdHkgbW9kdWxlLgotLVdoZW4gbm8gc2VjdXJpdHkgbW9kdWxlIGlzIGxvYWRlZCwgYWxsIHByb2Nlc3NlcyBoYXZlIHJlYWQgYWNjZXNzIHRvCi0tZXh0ZW5kZWQgc2VjdXJpdHkgYXR0cmlidXRlcywgYW5kIHdyaXRlIGFjY2VzcyBpcyBsaW1pdGVkIHRvIHByb2Nlc3NlcwotLXRoYXQgaGF2ZSB0aGUgQ0FQX1NZU19BRE1JTiBjYXBhYmlsaXR5LgotLS5TUyBFeHRlbmRlZCBzeXN0ZW0gYXR0cmlidXRlcwotLUV4dGVuZGVkIHN5c3RlbSBhdHRyaWJ1dGVzIGFyZSB1c2VkIGJ5IHRoZSBrZXJuZWwgdG8gc3RvcmUgc3lzdGVtCi0tb2JqZWN0cyBzdWNoIGFzIEFjY2VzcyBDb250cm9sIExpc3RzIGFuZCBDYXBhYmlsaXRpZXMuICBSZWFkIGFuZCB3cml0ZQotLWFjY2VzcyBwZXJtaXNzaW9ucyB0byBzeXN0ZW0gYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlIHBvbGljeSBpbXBsZW1lbnRlZAotLWZvciBlYWNoIHN5c3RlbSBhdHRyaWJ1dGUgaW1wbGVtZW50ZWQgYnkgZmlsZXN5c3RlbXMgaW4gdGhlIGtlcm5lbC4KLS0uU1MgVHJ1c3RlZCBleHRlbmRlZCBhdHRyaWJ1dGVzCi0tVHJ1c3RlZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSB2aXNpYmxlIGFuZCBhY2Nlc3NpYmxlIG9ubHkgdG8gcHJvY2Vzc2VzIHRoYXQKLS1oYXZlIHRoZSBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkgKHRoZSBzdXBlciB1c2VyIHVzdWFsbHkgaGFzIHRoaXMKLS1jYXBhYmlsaXR5KS4KLS1BdHRyaWJ1dGVzIGluIHRoaXMgY2xhc3MgYXJlIHVzZWQgdG8gaW1wbGVtZW50IG1lY2hhbmlzbXMgaW4gdXNlcgotLXNwYWNlIChpLmUuLCBvdXRzaWRlIHRoZSBrZXJuZWwpIHdoaWNoIGtlZXAgaW5mb3JtYXRpb24gaW4gZXh0ZW5kZWQgYXR0cmlidXRlcwotLXRvIHdoaWNoIG9yZGluYXJ5IHByb2Nlc3NlcyBzaG91bGQgbm90IGhhdmUgYWNjZXNzLgotLS5TUyBFeHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMKLS1FeHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgbWF5IGJlIGFzc2lnbmVkIHRvIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBmb3IKLS1zdG9yaW5nIGFyYml0cmFyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIG1pbWUgdHlwZSwKLS1jaGFyYWN0ZXIgc2V0IG9yIGVuY29kaW5nIG9mIGEgZmlsZS4gVGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBmb3IgdXNlcgotLWF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgYnkgdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzLgotLS5QUAotLVRoZSBmaWxlIHBlcm1pc3Npb24gYml0cyBvZiByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUKLS1pbnRlcnByZXRlZCBkaWZmZXJlbnRseSBmcm9tIHRoZSBmaWxlIHBlcm1pc3Npb24gYml0cyBvZiBzcGVjaWFsIGZpbGVzCi0tYW5kIHN5bWJvbGljIGxpbmtzLiBGb3IgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhlIGZpbGUKLS1wZXJtaXNzaW9uIGJpdHMgZGVmaW5lIGFjY2VzcyB0byB0aGUgZmlsZSdzIGNvbnRlbnRzLCB3aGlsZSBmb3IgZGV2aWNlIHNwZWNpYWwKLS1maWxlcyB0aGV5IGRlZmluZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBkZXNjcmliZWQgYnkgdGhlIHNwZWNpYWwgZmlsZS4KLS1UaGUgZmlsZSBwZXJtaXNzaW9ucyBvZiBzeW1ib2xpYyBsaW5rcyBhcmUgbm90IHVzZWQgaW4gYWNjZXNzCi0tY2hlY2tzLiBUaGVzZSBkaWZmZXJlbmNlcyB3b3VsZCBhbGxvdyB1c2VycyB0byBjb25zdW1lIGZpbGVzeXN0ZW0gcmVzb3VyY2VzIGluCi0tYSB3YXkgbm90IGNvbnRyb2xsYWJsZSBieSBkaXNrIHF1b3RhcyBmb3IgZ3JvdXAgb3Igd29ybGQgd3JpdGFibGUgc3BlY2lhbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCi0tLlBQCi0tRm9yIHRoaXMgcmVhc29uLCBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGFuZCBhY2Nlc3MgdG8gZXh0ZW5kZWQgdXNlciBhdHRyaWJ1dGVzIGlzIHJlc3RyaWN0ZWQgdG8gdGhlCi0tb3duZXIgYW5kIHRvIHVzZXJzIHdpdGggYXBwcm9wcmlhdGUgY2FwYWJpbGl0aWVzIGZvciBkaXJlY3RvcmllcyB3aXRoIHRoZQotLXN0aWNreSBiaXQgc2V0IChzZWUgdGhlCi0tLkJSIGNobW9kICgxKQotLW1hbnVhbCBwYWdlIGZvciBhbiBleHBsYW5hdGlvbiBvZiBTdGlja3kgRGlyZWN0b3JpZXMpLgotLS5TSCBGSUxFU1lTVEVNIERJRkZFUkVOQ0VTCi0tVGhlIGtlcm5lbCBhbmQgdGhlIGZpbGVzeXN0ZW0gbWF5IHBsYWNlIGxpbWl0cyBvbiB0aGUgbWF4aW11bSBudW1iZXIKLS1hbmQgc2l6ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUuCi0tU29tZSBmaWxlIHN5c3RlbXMsIHN1Y2ggYXMgZXh0Mi8zIGFuZCByZWlzZXJmcywgcmVxdWlyZSB0aGUgZmlsZXN5c3RlbQotLXRvIGJlIG1vdW50ZWQgd2l0aCB0aGUKLS0uQiB1c2VyX3hhdHRyCi0tbW91bnQgb3B0aW9uIGluIG9yZGVyIGZvciBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgdG8gYmUgdXNlZC4KLS0uUFAKLS1JbiB0aGUgY3VycmVudCBleHQyLCBleHQzIGFuZCBleHQ0IGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLCBlYWNoCi0tZXh0ZW5kZWQgYXR0cmlidXRlIG11c3QgZml0IG9uIGEgc2luZ2xlIGZpbGVzeXN0ZW0gYmxvY2sgKDEwMjQsIDIwNDgKLS1vciA0MDk2IGJ5dGVzLCBkZXBlbmRpbmcgb24gdGhlIGJsb2NrIHNpemUgc3BlY2lmaWVkIHdoZW4gdGhlCi0tZmlsZXN5c3RlbSB3YXMgY3JlYXRlZCkuCi0tLlBQCi0tSW4gdGhlIFhGUyBhbmQgcmVpc2VyZnMgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMsIHRoZXJlIGlzIG5vCi0tcHJhY3RpY2FsIGxpbWl0IG9uIHRoZSBudW1iZXIgb3Igc2l6ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzCi0tYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSwgYW5kIHRoZSBhbGdvcml0aG1zIHVzZWQgdG8gc3RvcmUgZXh0ZW5kZWQKLS1hdHRyaWJ1dGUgaW5mb3JtYXRpb24gb24gZGlzayBhcmUgc2NhbGFibGUuCi0tLlBQCi0tSW4gdGhlIEpGUyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uLCBuYW1lcyBjYW4gYmUgdXAgdG8gMjU1IGJ5dGVzIGFuZAotLXZhbHVlcyB1cCB0byA2NSw1MzUgYnl0ZXMuCi0tLlNIIEFERElUSU9OQUwgTk9URVMKLS1TaW5jZSB0aGUgZmlsZXN5c3RlbXMgb24gd2hpY2ggZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgc3RvcmVkIG1pZ2h0IGFsc28KLS1iZSB1c2VkIG9uIGFyY2hpdGVjdHVyZXMgd2l0aCBhIGRpZmZlcmVudCBieXRlIG9yZGVyIGFuZCBtYWNoaW5lIHdvcmQKLS1zaXplLCBjYXJlIHNob3VsZCBiZSB0YWtlbiB0byBzdG9yZSBhdHRyaWJ1dGUgdmFsdWVzIGluIGFuIGFyY2hpdGVjdHVyZQotLWluZGVwZW5kZW50IGZvcm1hdC4KLS0uU0ggQVVUSE9SUwotLUFuZHJlYXMgR3J1ZW5iYWNoZXIsCi0tLlJJIDwgYS5ncnVlbmJhY2hlckBiZXN0Yml0cy5hdCA+Ci0tYW5kIHRoZSBTR0kgWEZTIGRldmVsb3BtZW50IHRlYW0sCi0tLlJJIDwgbGludXgteGZzQG9zcy5zZ2kuY29tID4uCi0tLlNIIFNFRSBBTFNPCi0tZ2V0ZmF0dHIoMSksCi0tc2V0ZmF0dHIoMSkuCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDRjNWEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NjYgKzAsMCBAQAotRnJvbSBiOTcyNjAwYTI2ZjNhOTMwZTUzZTJmY2UyNjI1MjY2YTVkMjk4MTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhcyBHcnVlbmJhY2hlciA8YW5kcmVhcy5ncnVlbmJhY2hlckBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE0IEFwciAyMDE1IDIzOjUzOjExICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBSZW1vdmUgdGhlIHNlY3Rpb24gMiBtYW4gcGFnZXMKLQotQ29tbWl0IDhkMTI2M2JjYTk1NzIyZDY2YTZmOGU4MzQ1MGY0OWQwOTU2ZWE1MzQgZnJvbSB1cHN0cmVhbQotaHR0cHM6Ly9naXQuc2F2YW5uYWgubm9uZ251Lm9yZy9naXQvYXR0ci5naXQvCi0KLVRoZSBzZWN0aW9uIDIgbWFuIHBhZ2VzIGhhdmUgbG9uZyBzaW5jZSBiZWVuIGFkZGVkIHRvIHRoZSBtYW4tcGFnZXMgcGFja2FnZQotd2hpY2ggZG9jdW1lbnRzIGFsbCBzeXN0ZW0gY2FsbHM7IHRoZXkgd2VyZSBkaXNhYmxlZCBpbiBhdHRyIGJ5IGRlZmF1bHQgc2luY2UKLUphbnVhcnkgMjAxNC4gIEdldCByaWQgb2YgdGhlbSBoZXJlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVtNQTogbW9kaWZpZWQgdG8gYXBwbHkgZGlyZWN0bHkgdG8gdjIuNC40N10KLVNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtYW4vTWFrZWZpbGUgICAgICAgICAgIHwgICAyICstCi0gbWFuL21hbjIvTWFrZWZpbGUgICAgICB8ICAzNSAtLS0tLS0tLS0tLQotIG1hbi9tYW4yL2dldHhhdHRyLjIgICAgfCAxNDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtYW4vbWFuMi9saXN0eGF0dHIuMiAgIHwgMTU4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtYW4vbWFuMi9yZW1vdmV4YXR0ci4yIHwgMTExIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtYW4vbWFuMi9zZXR4YXR0ci4yICAgIHwgMTQzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNTkxIGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9NYWtlZmlsZQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9nZXR4YXR0ci4yCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL2xpc3R4YXR0ci4yCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL3JlbW92ZXhhdHRyLjIKLSBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvc2V0eGF0dHIuMgotCi1kaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlIGIvbWFuL01ha2VmaWxlCi1pbmRleCA5NTM1NDI2Li43NTVkYWVkIDEwMDY0NAotLS0tIGEvbWFuL01ha2VmaWxlCi0rKysgYi9tYW4vTWFrZWZpbGUKLUBAIC0xOSw3ICsxOSw3IEBACi0gVE9QRElSID0gLi4KLSBpbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotIAotLVNVQkRJUlMgPSBtYW4xIG1hbjIgbWFuMyBtYW41Ci0rU1VCRElSUyA9IG1hbjEgbWFuMyBtYW41Ci0gCi0gZGVmYXVsdCA6ICQoU1VCRElSUykKLSAKLWRpZmYgLS1naXQgYS9tYW4vbWFuMi9NYWtlZmlsZSBiL21hbi9tYW4yL01ha2VmaWxlCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGQ3NzMwOWQuLjAwMDAwMDAKLS0tLSBhL21hbi9tYW4yL01ha2VmaWxlCi0rKysgL2Rldi9udWxsCi1AQCAtMSwzNSArMCwwIEBACi0tIwotLSMgQ29weXJpZ2h0IChjKSAyMDAwLTIwMDIgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0jCi0tCi0tVE9QRElSID0gLi4vLi4KLS1pbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotLQotLU1BTl9TRUNUSU9OCT0gMgotLQotLU1BTl9QQUdFUwk9ICQoc2hlbGwgZWNobyAqLiQoTUFOX1NFQ1RJT04pKQotLU1BTl9ERVNUCT0gJChQS0dfTUFOX0RJUikvbWFuJChNQU5fU0VDVElPTikKLS1MU1JDRklMRVMJPSAkKE1BTl9QQUdFUykKLS0KLS1kZWZhdWx0IGluc3RhbGwgOiAkKE1BTl9QQUdFUykKLS0KLS1pbmNsdWRlICQoQlVJTERSVUxFUykKLS0KLS1pbnN0YWxsLWRldiA6IGRlZmF1bHQKLS0JJChJTlNUQUxMKSAtbSA3NTUgLWQgJChNQU5fREVTVCkKLS0JJChJTlNUQUxMX01BTikKLS1pbnN0YWxsLWxpYjoKLWRpZmYgLS1naXQgYS9tYW4vbWFuMi9nZXR4YXR0ci4yIGIvbWFuL21hbjIvZ2V0eGF0dHIuMgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA0MDVhZDg5Li4wMDAwMDAwCi0tLS0gYS9tYW4vbWFuMi9nZXR4YXR0ci4yCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxNDMgKzAsMCBAQAotLS5cIgotLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKLS0uXCIKLS0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKLS0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQotLS5cIgotLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0tLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0tLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLS5cIgotLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKLS0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55Ci0tLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKLS0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KLS0uXCIKLS0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLS5cIgotLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKLS0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLS5cIgotLS5USCBHRVRYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCi0tLlNIIE5BTUUKLS1nZXR4YXR0ciwgbGdldHhhdHRyLCBmZ2V0eGF0dHIgXC0gcmV0cmlldmUgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIHZhbHVlCi0tLlNIIFNZTk9QU0lTCi0tLmZhbSBDCi0tLm5mCi0tLkIgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLS5CICNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+Ci0tLnNwCi0tLkJJICJzc2l6ZV90IGdldHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgIiwKLS0uQkkgIlx0XHRcdFx0IHZvaWRcICoiIHZhbHVlICIsIHNpemVfdCAiIHNpemUgKTsKLS0uQkkgInNzaXplX3QgbGdldHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgIiwKLS0uQkkgIlx0XHRcdFx0IHZvaWRcICoiIHZhbHVlICIsIHNpemVfdCAiIHNpemUgKTsKLS0uQkkgInNzaXplX3QgZmdldHhhdHRyIChpbnQgIiBmaWxlZGVzICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgIiwKLS0uQkkgIlx0XHRcdFx0IHZvaWRcICoiIHZhbHVlICIsIHNpemVfdCAiIHNpemUgKTsKLS0uZmkKLS0uZmFtIFQKLS0uU0ggREVTQ1JJUFRJT04KLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZQotLS5JUiBuYW1lIDpcYwotLS5JIHZhbHVlCi0tcGFpcnMgYXNzb2NpYXRlZCB3aXRoIGlub2RlcyAoZmlsZXMsIGRpcmVjdG9yaWVzLCBzeW1saW5rcywgZXRjKS4KLS1UaGV5IGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUgYXNzb2NpYXRlZAotLXdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQotLS5CUiBzdGF0ICgyKQotLWRhdGEpLgotLUEgY29tcGxldGUgb3ZlcnZpZXcgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBjb25jZXB0cyBjYW4gYmUgZm91bmQgaW4KLS0uQlIgYXR0ciAoNSkuCi0tLlBQCi0tLkIgZ2V0eGF0dHIKLS1yZXRyaWV2ZXMgdGhlCi0tLkkgdmFsdWUKLS1vZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlkZW50aWZpZWQgYnkKLS0uSSBuYW1lCi0tYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KLS0uSSBwYXRoCi0taW4gdGhlIGZpbGVzeXN0ZW0uCi0tVGhlIGxlbmd0aCBvZiB0aGUgYXR0cmlidXRlCi0tLkkgdmFsdWUKLS1pcyByZXR1cm5lZC4KLS0uUFAKLS0uQiBsZ2V0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8gCi0tLkJSIGdldHhhdHRyICwKLS1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgbGluayBpdHNlbGYgaXMKLS1pbnRlcnJvZ2F0ZWQsIG5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KLS0uUFAKLS0uQiBmZ2V0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgZ2V0eGF0dHIgLAotLW9ubHkgdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5Ci0tLkkgZmlsZWRlcwotLShhcyByZXR1cm5lZCBieQotLS5CUiBvcGVuICgyKSkKLS1pcyBpbnRlcnJvZ2F0ZWQgaW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQW4gZXh0ZW5kZWQgYXR0cmlidXRlCi0tLkkgbmFtZQotLWlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCi0tVGhlIG5hbWUgaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tVGhlIHZhbHVlIG9mIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBhIGNodW5rIG9mIGFyYml0cmFyeSB0ZXh0dWFsIG9yCi0tYmluYXJ5IGRhdGEgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KLS0uUFAKLS1BbiBlbXB0eSBidWZmZXIgb2YKLS0uSSBzaXplCi0temVybyBjYW4gYmUgcGFzc2VkIGludG8gdGhlc2UgY2FsbHMgdG8gcmV0dXJuIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlCi0tbmFtZWQgZXh0ZW5kZWQgYXR0cmlidXRlLCB3aGljaCBjYW4gYmUgdXNlZCB0byBlc3RpbWF0ZSB0aGUgc2l6ZSBvZiBhCi0tYnVmZmVyIHdoaWNoIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBob2xkIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGgKLS10aGUgZXh0ZW5kZWQgYXR0cmlidXRlLgotLS5QUAotLVRoZSBpbnRlcmZhY2UgaXMgZGVzaWduZWQgdG8gYWxsb3cgZ3Vlc3Npbmcgb2YgaW5pdGlhbCBidWZmZXIKLS1zaXplcywgYW5kIHRvIGVubGFyZ2UgYnVmZmVycyB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVzCi0tdGhhdCB0aGUgYnVmZmVyIHByb3ZpZGVkIHdhcyB0b28gc21hbGwuCi0tLlNIIFJFVFVSTiBWQUxVRQotLU9uIHN1Y2Nlc3MsIGEgcG9zaXRpdmUgbnVtYmVyIGlzIHJldHVybmVkIGluZGljYXRpbmcgdGhlIHNpemUgb2YgdGhlCi0tZXh0ZW5kZWQgYXR0cmlidXRlIHZhbHVlLgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIHRoZSBuYW1lZCBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIG9yIHRoZSBwcm9jZXNzIGhhcyBubyBhY2Nlc3MgdG8KLS10aGlzIGF0dHJpYnV0ZSwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9BVFRSLgotLS5QUAotLUlmIHRoZQotLS5JIHNpemUKLS1vZiB0aGUKLS0uSSB2YWx1ZQotLWJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcmVzdWx0LAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVSQU5HRS4KLS0uUFAKLS1JZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlc3lzdGVtLCBvciBhcmUgZGlzYWJsZWQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRU5PVFNVUC4KLS0uUFAKLS1UaGUgZXJyb3JzIGRvY3VtZW50ZWQgZm9yIHRoZQotLS5CUiBzdGF0ICgyKQotLXN5c3RlbSBjYWxsIGFyZSBhbHNvIGFwcGxpY2FibGUgaGVyZS4KLS0uU0ggQVVUSE9SUwotLUFuZHJlYXMgR3J1ZW5iYWNoZXIsCi0tLlJJIDwgYS5ncnVlbmJhY2hlckBiZXN0Yml0cy5hdCA+Ci0tYW5kIHRoZSBTR0kgWEZTIGRldmVsb3BtZW50IHRlYW0sCi0tLlJJIDwgbGludXgteGZzQG9zcy5zZ2kuY29tID4uCi0tUGxlYXNlIHNlbmQgYW55IGJ1ZyByZXBvcnRzIG9yIGNvbW1lbnRzIHRvIHRoZXNlIGFkZHJlc3Nlcy4KLS0uU0ggU0VFIEFMU08KLS0uQlIgZ2V0ZmF0dHIgKDEpLAotLS5CUiBzZXRmYXR0ciAoMSksCi0tLkJSIG9wZW4gKDIpLAotLS5CUiBzdGF0ICgyKSwKLS0uQlIgc2V0eGF0dHIgKDIpLAotLS5CUiBsaXN0eGF0dHIgKDIpLAotLS5CUiByZW1vdmV4YXR0ciAoMiksCi0tYW5kCi0tLkJSIGF0dHIgKDUpLgotZGlmZiAtLWdpdCBhL21hbi9tYW4yL2xpc3R4YXR0ci4yIGIvbWFuL21hbjIvbGlzdHhhdHRyLjIKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggOGI0MzcxYy4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvbGlzdHhhdHRyLjIKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE1OCArMCwwIEBACi0tLlwiCi0tLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcwotLS5cIgotLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQotLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIExJU1RYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCi0tLlNIIE5BTUUKLS1saXN0eGF0dHIsIGxsaXN0eGF0dHIsIGZsaXN0eGF0dHIgXC0gbGlzdCBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZXMKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgInNzaXplX3QgbGlzdHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsCi0tLkJJICJcdFx0XHRcdCBjaGFyXCAqIiBsaXN0ICIsIHNpemVfdCAiIHNpemUgKTsKLS0uQkkgInNzaXplX3QgbGxpc3R4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLAotLS5CSSAiXHRcdFx0XHQgY2hhclwgKiIgbGlzdCAiLCBzaXplX3QgIiBzaXplICk7Ci0tLkJJICJzc2l6ZV90IGZsaXN0eGF0dHIgKGludCAiIGZpbGVkZXMgIiwKLS0uQkkgIlx0XHRcdFx0IGNoYXJcICoiIGxpc3QgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5hbWU6dmFsdWUKLS1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiBsaXN0eGF0dHIKLS1yZXRyaWV2ZXMgdGhlCi0tLkkgbGlzdAotLW9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCi0tLkkgcGF0aAotLWluIHRoZSBmaWxlc3lzdGVtLgotLVRoZSBsaXN0IGlzIHRoZSBzZXQgb2YgKE5VTEwtdGVybWluYXRlZCkgbmFtZXMsIG9uZSBhZnRlciB0aGUgb3RoZXIuCi0tTmFtZXMgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byB3aGljaCB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90Ci0taGF2ZSBhY2Nlc3MgbWF5IGJlIG9taXR0ZWQgZnJvbSB0aGUgbGlzdC4KLS1UaGUgbGVuZ3RoIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZQotLS5JIGxpc3QKLS1pcyByZXR1cm5lZC4KLS0uUFAKLS0uQiBsbGlzdHhhdHRyCi0taXMgaWRlbnRpY2FsIHRvCi0tLkJSIGxpc3R4YXR0ciAsCi0tZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGxpc3Qgb2YgbmFtZXMgb2YKLS1leHRlbmRlZCBhdHRyaWJ1dGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluayBpdHNlbGYgaXMgcmV0cmlldmVkLAotLW5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KLS0uSSBsaXN0Ci0taXMgYSBjYWxsZXItYWxsb2NhdGVkIGJ1ZmZlciBvZiBzaXplCi0tLklSIHNpemUgLgotLS5QUAotLS5CIGZsaXN0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgbGlzdHhhdHRyICwKLS1vbmx5IHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQotLS5JIGZpbGVkZXMKLS0oYXMgcmV0dXJuZWQgYnkKLS0uQlIgb3BlbiAoMikpCi0taXMgaW50ZXJyb2dhdGVkIGluIHBsYWNlIG9mCi0tLklSIHBhdGggLgotLS5QUAotLUEgc2luZ2xlIGV4dGVuZGVkIGF0dHJpYnV0ZQotLS5JIG5hbWUKLS1pcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgotLVRoZSBuYW1lIGluY2x1ZGVzIGEgbmFtZXNwYWNlIHByZWZpeCBcLSB0aGVyZSBtYXkgYmUgc2V2ZXJhbCwgZGlzam9pbnQKLS1uYW1lc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBpbmRpdmlkdWFsIGlub2RlLgotLS5QUAotLUFuIGVtcHR5IGJ1ZmZlciBvZgotLS5JIHNpemUKLS16ZXJvIGNhbiBiZSBwYXNzZWQgaW50byB0aGVzZSBjYWxscyB0byByZXR1cm4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUKLS1saXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXN0aW1hdGUgdGhlCi0tc2l6ZSBvZiBhIGJ1ZmZlciB3aGljaCBpcyBzdWZmaWNpZW50bHkgbGFyZ2UgdG8gaG9sZCB0aGUgbGlzdCBvZiBuYW1lcy4KLS0uU0ggRVhBTVBMRVMKLS1UaGUKLS0uSSBsaXN0Ci0tb2YgbmFtZXMgaXMgcmV0dXJuZWQgYXMgYW4gdW5vcmRlcmVkIGFycmF5IG9mIE5VTEwtdGVybWluYXRlZCBjaGFyYWN0ZXIKLS1zdHJpbmdzIChhdHRyaWJ1dGUgbmFtZXMgYXJlIHNlcGFyYXRlZCBieSBOVUxMIGNoYXJhY3RlcnMpLCBsaWtlIHRoaXM6Ci0tLmZhbSBDCi0tLlJTCi0tLm5mCi0tdXNlci5uYW1lMVxcMHN5c3RlbS5uYW1lMVxcMHVzZXIubmFtZTJcXDAKLS0uZmkKLS0uUkUKLS0uZmFtIFQKLS0uUAotLUZpbGVzeXN0ZW1zIGxpa2UgZXh0MiwgZXh0MyBhbmQgWEZTIHdoaWNoIGltcGxlbWVudCBQT1NJWCBBQ0xzIHVzaW5nCi0tZXh0ZW5kZWQgYXR0cmlidXRlcywgbWlnaHQgcmV0dXJuIGEKLS0uSSBsaXN0Ci0tbGlrZSB0aGlzOgotLS5mYW0gQwotLS5SUwotLS5uZgotLXN5c3RlbS5wb3NpeF9hY2xfYWNjZXNzXFwwc3lzdGVtLnBvc2l4X2FjbF9kZWZhdWx0XFwwCi0tLmZpCi0tLlJFCi0tLmZhbSBUCi0tLlNIIFJFVFVSTiBWQUxVRQotLU9uIHN1Y2Nlc3MsIGEgcG9zaXRpdmUgbnVtYmVyIGlzIHJldHVybmVkIGluZGljYXRpbmcgdGhlIHNpemUgb2YgdGhlCi0tZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWUgbGlzdC4KLS1PbiBmYWlsdXJlLCBcLTEgaXMgcmV0dXJuZWQgYW5kCi0tLkkgZXJybm8KLS1pcyBzZXQgYXBwcm9wcmlhdGVseS4KLS0uUFAKLS1JZiB0aGUKLS0uSSBzaXplCi0tb2YgdGhlCi0tLkkgbGlzdAotLWJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcmVzdWx0LAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVSQU5HRS4KLS0uUFAKLS1JZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlc3lzdGVtLCBvciBhcmUgZGlzYWJsZWQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRU5PVFNVUC4KLS0uUFAKLS1UaGUgZXJyb3JzIGRvY3VtZW50ZWQgZm9yIHRoZQotLS5CUiBzdGF0ICgyKQotLXN5c3RlbSBjYWxsIGFyZSBhbHNvIGFwcGxpY2FibGUgaGVyZS4KLS0uU0ggQVVUSE9SUwotLUFuZHJlYXMgR3J1ZW5iYWNoZXIsCi0tLlJJIDwgYS5ncnVlbmJhY2hlckBiZXN0Yml0cy5hdCA+Ci0tYW5kIHRoZSBTR0kgWEZTIGRldmVsb3BtZW50IHRlYW0sCi0tLlJJIDwgbGludXgteGZzQG9zcy5zZ2kuY29tID4uCi0tUGxlYXNlIHNlbmQgYW55IGJ1ZyByZXBvcnRzIG9yIGNvbW1lbnRzIHRvIHRoZXNlIGFkZHJlc3Nlcy4KLS0uU0ggU0VFIEFMU08KLS0uQlIgZ2V0ZmF0dHIgKDEpLAotLS5CUiBzZXRmYXR0ciAoMSksCi0tLkJSIG9wZW4gKDIpLAotLS5CUiBzdGF0ICgyKSwKLS0uQlIgZ2V0eGF0dHIgKDIpLAotLS5CUiBzZXR4YXR0ciAoMiksCi0tLkJSIHJlbW92ZXhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi1kaWZmIC0tZ2l0IGEvbWFuL21hbjIvcmVtb3ZleGF0dHIuMiBiL21hbi9tYW4yL3JlbW92ZXhhdHRyLjIKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMmM3ZDkzNC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvcmVtb3ZleGF0dHIuMgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTExICswLDAgQEAKLS0uXCIKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCi0tLlwiCi0tLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCi0tLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKLS0uXCIKLS0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0uXCIKLS0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCi0tLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQotLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCi0tLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCi0tLlwiCi0tLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0uXCIKLS0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCi0tLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0uXCIKLS0uVEggUkVNT1ZFWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgotLS5TSCBOQU1FCi0tcmVtb3ZleGF0dHIsIGxyZW1vdmV4YXR0ciwgZnJlbW92ZXhhdHRyIFwtIHJlbW92ZSBhbiBleHRlbmRlZCBhdHRyaWJ1dGUKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgImludCByZW1vdmV4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICk7Ci0tLkJJICJpbnQgbHJlbW92ZXhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgKTsKLS0uQkkgImludCBmcmVtb3ZleGF0dHIgKGludCAiIGZpbGVkZXMgIiwgY29uc3QgY2hhclwgKiIgbmFtZSApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCi0tLklSIG5hbWUgOlxjCi0tdmFsdWUgcGFpcnMgYXNzb2NpYXRlZCB3aXRoIGlub2RlcyAoZmlsZXMsIGRpcmVjdG9yaWVzLCBzeW1saW5rcywgZXRjKS4KLS1UaGV5IGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUgYXNzb2NpYXRlZAotLXdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQotLS5CUiBzdGF0ICgyKQotLWRhdGEpLgotLUEgY29tcGxldGUgb3ZlcnZpZXcgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBjb25jZXB0cyBjYW4gYmUgZm91bmQgaW4KLS0uQlIgYXR0ciAoNSkuCi0tLlBQCi0tLkIgcmVtb3ZleGF0dHIKLS1yZW1vdmVzIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaWRlbnRpZmllZCBieQotLS5JIG5hbWUKLS1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgotLS5JIHBhdGgKLS1pbiB0aGUgZmlsZXN5c3RlbS4KLS0uUFAKLS0uQiBscmVtb3ZleGF0dHIKLS1pcyBpZGVudGljYWwgdG8gCi0tLkJSIHJlbW92ZXhhdHRyICwKLS1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlzCi0tcmVtb3ZlZCBmcm9tIHRoZSBsaW5rIGl0c2VsZiwgbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgotLS5QUAotLS5CIGZyZW1vdmV4YXR0cgotLWlzIGlkZW50aWNhbCB0bwotLS5CUiByZW1vdmV4YXR0ciAsCi0tb25seSB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHJlbW92ZWQgZnJvbSB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKLS0uSSBmaWxlZGVzCi0tKGFzIHJldHVybmVkIGJ5Ci0tLkJSIG9wZW4gKDIpKQotLWluIHBsYWNlIG9mCi0tLklSIHBhdGggLgotLS5QUAotLUFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lIGlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCi0tVGhlCi0tLkkgbmFtZQotLWluY2x1ZGVzIGEgbmFtZXNwYWNlIHByZWZpeCBcLSB0aGVyZSBtYXkgYmUgc2V2ZXJhbCwgZGlzam9pbnQKLS1uYW1lc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBpbmRpdmlkdWFsIGlub2RlLgotLS5TSCBSRVRVUk4gVkFMVUUKLS1PbiBzdWNjZXNzLCB6ZXJvIGlzIHJldHVybmVkLgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIHRoZSBuYW1lZCBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRU5PQVRUUi4KLS0uUFAKLS1JZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlc3lzdGVtLCBvciBhcmUgZGlzYWJsZWQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRU5PVFNVUC4KLS0uUFAKLS1UaGUgZXJyb3JzIGRvY3VtZW50ZWQgZm9yIHRoZQotLS5CUiBzdGF0ICgyKQotLXN5c3RlbSBjYWxsIGFyZSBhbHNvIGFwcGxpY2FibGUgaGVyZS4KLS0uU0ggQVVUSE9SUwotLUFuZHJlYXMgR3J1ZW5iYWNoZXIsCi0tLlJJIDwgYS5ncnVlbmJhY2hlckBiZXN0Yml0cy5hdCA+Ci0tYW5kIHRoZSBTR0kgWEZTIGRldmVsb3BtZW50IHRlYW0sCi0tLlJJIDwgbGludXgteGZzQG9zcy5zZ2kuY29tID4uCi0tUGxlYXNlIHNlbmQgYW55IGJ1ZyByZXBvcnRzIG9yIGNvbW1lbnRzIHRvIHRoZXNlIGFkZHJlc3Nlcy4KLS0uU0ggU0VFIEFMU08KLS0uQlIgZ2V0ZmF0dHIgKDEpLAotLS5CUiBzZXRmYXR0ciAoMSksCi0tLkJSIG9wZW4gKDIpLAotLS5CUiBzdGF0ICgyKSwKLS0uQlIgc2V0eGF0dHIgKDIpLAotLS5CUiBnZXR4YXR0ciAoMiksCi0tLkJSIGxpc3R4YXR0ciAoMiksCi0tYW5kCi0tLkJSIGF0dHIgKDUpLgotZGlmZiAtLWdpdCBhL21hbi9tYW4yL3NldHhhdHRyLjIgYi9tYW4vbWFuMi9zZXR4YXR0ci4yCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGIyMGRjOWYuLjAwMDAwMDAKLS0tLSBhL21hbi9tYW4yL3NldHhhdHRyLjIKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE0MyArMCwwIEBACi0tLlwiCi0tLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcwotLS5cIgotLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQotLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIFNFVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKLS0uU0ggTkFNRQotLXNldHhhdHRyLCBsc2V0eGF0dHIsIGZzZXR4YXR0ciBcLSBzZXQgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIHZhbHVlCi0tLlNIIFNZTk9QU0lTCi0tLmZhbSBDCi0tLm5mCi0tLkIgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLS5CICNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+Ci0tLnNwCi0tLkJJICJpbnQgc2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0IGNvbnN0IHZvaWRcICoiIHZhbHVlICIsIHNpemVfdCAiIHNpemUgIiwgaW50ICIgZmxhZ3MgKTsKLS0uQkkgImludCBsc2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0IGNvbnN0IHZvaWRcICoiIHZhbHVlICIsIHNpemVfdCAiIHNpemUgIiwgaW50ICIgZmxhZ3MgKTsKLS0uQkkgImludCBmc2V0eGF0dHIgKGludCAiIGZpbGVkZXMgIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0IGNvbnN0IHZvaWRcICoiIHZhbHVlICIsIHNpemVfdCAiIHNpemUgIiwgaW50ICIgZmxhZ3MgKTsKLS0uZmkKLS0uZmFtIFQKLS0uU0ggREVTQ1JJUFRJT04KLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZQotLS5JUiBuYW1lIDpcYwotLS5JIHZhbHVlCi0tcGFpcnMgYXNzb2NpYXRlZCB3aXRoIGlub2RlcyAoZmlsZXMsIGRpcmVjdG9yaWVzLCBzeW1saW5rcywgZXRjKS4KLS1UaGV5IGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUgYXNzb2NpYXRlZAotLXdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQotLS5CUiBzdGF0ICgyKQotLWRhdGEpLgotLUEgY29tcGxldGUgb3ZlcnZpZXcgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBjb25jZXB0cyBjYW4gYmUgZm91bmQgaW4KLS0uQlIgYXR0ciAoNSkuCi0tLlBQCi0tLkIgc2V0eGF0dHIKLS1zZXRzIHRoZQotLS5JIHZhbHVlCi0tb2YgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpZGVudGlmaWVkIGJ5Ci0tLkkgbmFtZQotLWFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCi0tLkkgcGF0aAotLWluIHRoZSBmaWxlc3lzdGVtLgotLVRoZQotLS5JIHNpemUKLS1vZiB0aGUKLS0uSSB2YWx1ZQotLW11c3QgYmUgc3BlY2lmaWVkLgotLS5QUAotLS5CIGxzZXR4YXR0cgotLWlzIGlkZW50aWNhbCB0byAKLS0uQlIgc2V0eGF0dHIgLAotLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMKLS1zZXQgb24gdGhlIGxpbmsgaXRzZWxmLCBub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCi0tLlBQCi0tLkIgZnNldHhhdHRyCi0taXMgaWRlbnRpY2FsIHRvCi0tLkJSIHNldHhhdHRyICwKLS1vbmx5IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgc2V0IG9uIHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQotLS5JIGZpbGVkZXMKLS0oYXMgcmV0dXJuZWQgYnkKLS0uQlIgb3BlbiAoMikpCi0taW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQW4gZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWUgaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KLS1UaGUKLS0uSSBuYW1lCi0taW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tVGhlCi0tLkkgdmFsdWUKLS1vZiBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgYSBjaHVuayBvZiBhcmJpdHJhcnkgdGV4dHVhbCBvcgotLWJpbmFyeSBkYXRhIG9mIHNwZWNpZmllZCBsZW5ndGguCi0tLlBQCi0tVGhlCi0tLkkgZmxhZ3MKLS1wYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gcmVmaW5lIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIG9wZXJhdGlvbi4KLS1YQVRUUl9DUkVBVEUgc3BlY2lmaWVzIGEgcHVyZSBjcmVhdGUsIHdoaWNoIGZhaWxzIGlmIHRoZSBuYW1lZAotLWF0dHJpYnV0ZSBleGlzdHMgYWxyZWFkeS4KLS1YQVRUUl9SRVBMQUNFIHNwZWNpZmllcyBhIHB1cmUgcmVwbGFjZSBvcGVyYXRpb24sIHdoaWNoIGZhaWxzIGlmIHRoZQotLW5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgotLUJ5IGRlZmF1bHQgKG5vIGZsYWdzKSwgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSB3aWxsIGJlIGNyZWF0ZWQgaWYKLS1uZWVkIGJlLCBvciB3aWxsIHNpbXBseSByZXBsYWNlIHRoZSB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4KLS0uU0ggUkVUVVJOIFZBTFVFCi0tT24gc3VjY2VzcywgemVybyBpcyByZXR1cm5lZC4KLS1PbiBmYWlsdXJlLCBcLTEgaXMgcmV0dXJuZWQgYW5kCi0tLkkgZXJybm8KLS1pcyBzZXQgYXBwcm9wcmlhdGVseS4KLS0uUFAKLS1JZiBYQVRUUl9DUkVBVEUgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIGF0dHJpYnV0ZSBleGlzdHMgYWxyZWFkeSwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFRVhJU1QuCi0tSWYgWEFUVFJfUkVQTEFDRSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVOT0FUVFIuCi0tLlBQCi0tSWYgdGhlcmUgaXMgaW5zdWZmaWNpZW50IHNwYWNlIHJlbWFpbmluZyB0byBzdG9yZSB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlLAotLS5JIGVycm5vCi0taXMgc2V0IHRvIGVpdGhlciBFTk9TUEMsIG9yIEVEUVVPVCBpZiBxdW90YSBlbmZvcmNlbWVudCB3YXMgdGhlIGNhdXNlLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBnZXR4YXR0ciAoMiksCi0tLkJSIGxpc3R4YXR0ciAoMiksCi0tLkJSIHJlbW92ZXhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9yZWxhdGl2ZS1saWJkaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvcmVsYXRpdmUtbGliZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzJiZjE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9yZWxhdGl2ZS1saWJkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotdXNlIHJlbGF0aXZlIHBhdGggaW4gc3ltYm9saWMgbGlua3MsIG9yIGl0IGZhaWxzIGluIHN0YWdpbmcKLXNlZCBleHByZXNzaW9uIGZyb20gdWRldgotCi03LzI5LzIwMTAgLSBjcmVhdGVkIGJ5IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgotCi1kaWZmIC11IGluY2x1ZGUub3JpZy9idWlsZG1hY3JvcyBpbmNsdWRlL2J1aWxkbWFjcm9zCi0tLS0gaW5jbHVkZS5vcmlnL2J1aWxkbWFjcm9zCTIwMTAtMDctMjkgMTc6Mzk6NDguMDAwMDAwMDAwICswODAwCi0rKysgaW5jbHVkZS9idWlsZG1hY3JvcwkyMDEwLTA3LTI5IDE4OjIwOjM0LjAwMDAwMDAwMCArMDgwMAotQEAgLTg4LDkgKzg4LDExIEBACi0gCS4uLyQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX0xJQl9ESVIpOyBcCi0gCS4uLyQoSU5TVEFMTCkgLVQgc29fYmFzZSAkKExJQk5BTUUpLmxhaSAkKFBLR19MSUJfRElSKTsgXAotIAlpZiB0ZXN0ICJ4JChQS0dfREVWTElCX0RJUikiICE9ICJ4JChQS0dfTElCX0RJUikiIDsgdGhlbiBcCi0tCS4uLyQoSU5TVEFMTCkgLVMgJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5hICQoUEtHX0xJQl9ESVIpLyQoTElCTkFNRSkuYTsgXAotLQkuLi8kKElOU1RBTEwpIC1TICQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkubGEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5sYTsgXAotLQkuLi8kKElOU1RBTEwpIC1TICQoUEtHX0xJQl9ESVIpLyQoTElCTkFNRSkuc28gJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5zbzsgXAotKwlyZWxfbGliX3ByZWZpeD0kJChlY2hvICQoUEtHX0xJQl9ESVIpIHwgc2VkICdzLFwoXi9cfFwpW14vXVteL10qLC4uLGcnKTsgXAotKwkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2xpYl9wcmVmaXgkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5hOyBcCi0rCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfbGliX3ByZWZpeCQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkubGEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5sYTsgXAotKwlyZWxfZGV2bGliX3ByZWZpeD0kJChlY2hvICQoUEtHX0RFVkxJQl9ESVIpIHwgc2VkICdzLFwoXi9cfFwpW14vXVteL10qLC4uLGcnKTsgXAotKwkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2RldmxpYl9wcmVmaXgkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLnNvICQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkuc287IFwKLSAJZmkKLSBlbHNlCi0gSU5TVEFMTF9MVExJQl9ERVYgPSAkKElOU1RBTExfTFRMSUJfU1RBVElDKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9ydW4tcHRlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YzY4NjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyEvYmluL3NoCi0KLW1ha2UgLUMgdGVzdCAtayB0ZXN0cyByb290LXRlc3RzIHxzZWQgXAotIC1lICdzfF5cWy4qXF0gXCguKlwpIC0tIG9rJHxQQVNTOiBcMXwnIFwKLSAtZSAnc3xeXFsuKlxdIFwoLipcKSAtLSBmYWlsZWR8RkFJTDogXDF8JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDFhZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuMTAuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJQcm9ncmFtbWFibGUgQ29tcGxldGlvbiBmb3IgQmFzaCA0IgorSE9NRVBBR0UgPSAiaHR0cDovL2Jhc2gtY29tcGxldGlvbi5hbGlvdGguZGViaWFuLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYmFzaC1jb21wbGV0aW9uLyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMzc2YWUzMjY2Y2M3MDAxN2FhODMzYzM5Yjc2Zjk4NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMjNjMTc5OThlMzRiOTM3Y2U1N2JiMWIxMTFjZDgxN2JjMzY5MzA5ZTlhODA0N2MwYmNmMDZlYWQ0YTNlYzkyIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYmFzaC1jb21wbGV0aW9uLSg/UDxwdmVyPig/ITIwMDgpLispXC50YXIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBjb21wYXRkaXIKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbi5kLworCWVjaG8gJy4gJHtkYXRhZGlyfS8ke0JQTn0vYmFzaF9jb21wbGV0aW9uJyA+JHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uCisKK30KKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKKworIyBTb21lIHJlY2lwZXMgYXJlIHByb3ZpZGluZyAke1BOfS1iYXNoLWNvbXBsZXRpb24gcGFja2FnZXMKK1BBQ0tBR0VTID0rICIke1BOfS1leHRyYSIKK0ZJTEVTXyR7UE59LWV4dHJhID0gIiR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vaGVscGVycy8iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QyYzRjYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm9ncmFtbWFibGUgQ29tcGxldGlvbiBmb3IgQmFzaCA0IgotSE9NRVBBR0UgPSAiaHR0cDovL2Jhc2gtY29tcGxldGlvbi5hbGlvdGguZGViaWFuLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYmFzaC1jb21wbGV0aW9uLyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MDEzOTMzM2IyNWM0ZDU0YWQ0MDMyM2I3MDFiZTEzMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDhmZTM3OGU3MzEwNjJmNDc5YzVmODgwMmZmYTlkM2M0MGEyNzVhMTllNmUwZjZmNmNjNGI5MGZhMTJiMmY1IgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYmFzaC1jb21wbGV0aW9uLSg/UDxwdmVyPig/ITIwMDgpLispXC50YXIiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBjb21wYXRkaXIKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbi5kLwotCWVjaG8gJy4gJHtkYXRhZGlyfS8ke0JQTn0vYmFzaF9jb21wbGV0aW9uJyA+JHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uCi0KLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKLQotIyBTb21lIHJlY2lwZXMgYXJlIHByb3ZpZGluZyAke1BOfS1iYXNoLWNvbXBsZXRpb24gcGFja2FnZXMKLVBBQ0tBR0VTID0rICIke1BOfS1leHRyYSIKLUZJTEVTXyR7UE59LWV4dHJhID0gIiR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vaGVscGVycy8iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43Mi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjcyLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43MS4wLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43MS4wLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE2NGQwZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNzEuMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKLSMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKLSMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQotIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5Ci0jIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKLQotQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKLUJPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKLUJPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZGwuYmludHJheS5jb20vYm9vc3RvcmcvcmVsZWFzZS8ke1BWfS9zb3VyY2UvJHtCT09TVF9QfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjRjZGY5YjVjMmRjMDFmYjJiN2I3MzNkNWFmMzBlNTU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3M2E4ZGEwMWU4YmY4YzdlZGE0MGI0Yzg0OTE1MDcxYThjOGEwZGY0YTY3MzQ1MzdkZGRlNGE4NTgwNTI0ZWUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgotCi1TID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43Mi4wLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43Mi4wLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWEwOTViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcyLjAuaW5jCkBAIC0wLDAgKzEsMjEgQEAKKyMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQorIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAorIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCisjIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKKyMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKK0xJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgorCitCT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgorQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgorQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kbC5iaW50cmF5LmNvbS9ib29zdG9yZy9yZWxlYXNlLyR7UFZ9L3NvdXJjZS8ke0JPT1NUX1B9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiY2I0MDk0M2QyYTJjYjhjZTA4ZDQyYmM0OGIwZjg0ZjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTljOWIyNzRiYzQ1MWNmOTFhOWJhMWRkMmM3ZmRjYWY1ZDYwYjFiM2FhODNmMmM5ZmExNDM0MTdjYzY2MDcyMiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JPT1NUX1B9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCBlMTVkY2U0Li44ZWI5NDk0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtMjAyLDYgKzIwMiwxMSBAQAogCQlmaQogCWRvbmUKIAorICAgICAgICAjIENtYWtlIGZpbGVzIHJlZmVyZW5jZSBmdWxsIHBhdGhzIHRvIGltYWdlCisgICAgICAgIGZpbmQgJHtEfSR7bGliZGlyfS9jbWFrZSAtdHlwZSBmIHwgXAorICAgICAgICAgICAgIGdyZXAgJ2NtYWtlJCcgfCBcCisgICAgICAgICAgICAgeGFyZ3MgLW4gMSBzZWQgLWUgJ3MsJHtEfSR7bGliZGlyfS9jbWFrZSwke2xpYmRpcn0vY21ha2UsJyAtaQorCiB9CiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43MS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcxLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOWUwZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcxLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGJvb3N0LSR7UFZ9LmluYwotcmVxdWlyZSBib29zdC5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kb250LXNldHVwLWNvbXBpbGVyLWZsYWdzLW0zMi1tNjQucGF0Y2ggXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43Mi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiN2JhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzIuMC5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworcmVxdWlyZSBib29zdC5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kb250LXNldHVwLWNvbXBpbGVyLWZsYWdzLW0zMi1tNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXZlcnQtY2Vhc2UtZGVwZW5kZW5jZS1vbi1yYW5nZS5wYXRjaCBcCisgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1yZXZlcnQtY2Vhc2UtZGVwZW5kZW5jZS1vbi1yYW5nZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1yZXZlcnQtY2Vhc2UtZGVwZW5kZW5jZS1vbi1yYW5nZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmQwOWEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gNDM2ZTFkYmU2ZmNkMzE1MjNkMjYxZDE4YWQwMTEzOTJmMWQ2ZmJiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9saXZlciBLb3dhbGtlIDxvbGl2ZXIua293YWxrZUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDEgRGVjIDIwMTkgMjA6NDA6MjggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJDZWFzZSBkZXBlbmRlbmNlIG9uIFJhbmdlIgorCitUaGlzIHJldmVydHMgY29tbWl0IDBjNTU2YmI1OTI0MWU2ODJiYmNkM2Y1NzI4MTUxNDljNWE5YjE3ZGIuCisKK3NlZSAjNDQgKE9uZSB0ZXN0IGZhaWxzIHRvIGNvbXBpbGUgYWZ0ZXIgYm9vc3RvcmcvY29yb3V0aW5lIHN1Ym1vZHVsZSB1cGRhdGVkKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYm9vc3RvcmcvY29yb3V0aW5lL2NvbW1pdC85YzczYjJmN2MxNzU5YTk1MDhiYTg3ODBiMzhkYzE1ZjA3ZjFhNDQ3XQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgR2Vpc3NsZXIgPGdlaXNzb25hdG9yQGdtYWlsLmNvbT4KKy0tLQorIGJvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAgfCAxMiArKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYm9vc3QvY29yb3V0aW5lL2FzeW1tZXRyaWNfY29yb3V0aW5lLmhwcCBiL2Jvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAKK2luZGV4IGVhOTY5ODEuLjY0MDg5NmYgMTAwNjQ0CistLS0gYS9ib29zdC9jb3JvdXRpbmUvYXN5bW1ldHJpY19jb3JvdXRpbmUuaHBwCisrKysgYi9ib29zdC9jb3JvdXRpbmUvYXN5bW1ldHJpY19jb3JvdXRpbmUuaHBwCitAQCAtMTQsNiArMTQsNyBAQAorICNpbmNsdWRlIDxib29zdC9hc3NlcnQuaHBwPgorICNpbmNsdWRlIDxib29zdC9jb25maWcuaHBwPgorICNpbmNsdWRlIDxib29zdC9tb3ZlL21vdmUuaHBwPgorKyNpbmNsdWRlIDxib29zdC9yYW5nZS5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L3V0aWxpdHkvZXhwbGljaXRfb3BlcmF0b3JfYm9vbC5ocHA+CisKK0BAIC0yMzU0LDE5ICsyMzU1LDEyIEBAIGVuZCggcHVzaF9jb3JvdXRpbmU8IFIgPiAmIGMpCisKKyB9CisKKy0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIEJvb3N0LlJhbmdlIHRyYWl0cyB0byBicmVhayBkZXBlbmRlbmN5IG9uIGl0CistdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgRW5hYmxlcj4KKy1zdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjsKKy0KKy10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGVyPgorLXN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcjsKKy0KKyB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4KKy1zdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjwgY29yb3V0aW5lczo6cHVzaF9jb3JvdXRpbmU8IEFyZyA+LCB2b2lkID4KKytzdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjwgY29yb3V0aW5lczo6cHVzaF9jb3JvdXRpbmU8IEFyZyA+ID4KKyB7IHR5cGVkZWYgdHlwZW5hbWUgY29yb3V0aW5lczo6cHVzaF9jb3JvdXRpbmU8IEFyZyA+OjppdGVyYXRvciB0eXBlOyB9OworCisgdGVtcGxhdGU8IHR5cGVuYW1lIFIgPgorLXN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdWxsX2Nvcm91dGluZTwgUiA+LCB2b2lkID4KKytzdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjwgY29yb3V0aW5lczo6cHVsbF9jb3JvdXRpbmU8IFIgPiA+CisgeyB0eXBlZGVmIHR5cGVuYW1lIGNvcm91dGluZXM6OnB1bGxfY29yb3V0aW5lPCBSID46Oml0ZXJhdG9yIHR5cGU7IH07CisKKyB9CistLQorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA4ZTA4ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY3LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSB0b29sIGFuZCBsaWJyYXJ5IGZvciBjbGllbnQtc2lkZSBVUkwgdHJhbnNmZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saXN0LmNnaT9saXN0PWN1cmwtdHJhY2tlciIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iZTVkOWUxNDE5YzQzNjNmNGIzMjAzN2EyZDNiN2ZmYSIKLQotU1JDX1VSSSA9ICJodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkL2N1cmwtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdiZTI4OGY2ZmQ1YjdiNWU0MDJlZjNiMzZhNDYxYTI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkNWY2OTU2ODIxYTU0OGJmNGI0NGYwNjdhNTMwY2U5NDQ1Y2M4MDk0ZmQzZTdlM2ZjNzg1NDgxNTg1ODU4NmMiCi0KLUNWRV9QUk9EVUNUID0gImN1cmwgbGliY3VybCIKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBsaWJpZG4gcHJveHkgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgotCi0jICdhcmVzJyBhbmQgJ3RocmVhZGVkLXJlc29sdmVyJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCi1QQUNLQUdFQ09ORklHW2FyZXNdID0gIi0tZW5hYmxlLWFyZXMsLS1kaXNhYmxlLWFyZXMsYy1hcmVzIgotUEFDS0FHRUNPTkZJR1ticm90bGldID0gIi0td2l0aC1icm90bGksLS13aXRob3V0LWJyb3RsaSxicm90bGkiCi1QQUNLQUdFQ09ORklHW2J1aWx0aW5tYW51YWxdID0gIi0tZW5hYmxlLW1hbnVhbCwtLWRpc2FibGUtbWFudWFsIgotUEFDS0FHRUNPTkZJR1tkaWN0XSA9ICItLWVuYWJsZS1kaWN0LC0tZGlzYWJsZS1kaWN0LCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnb3BoZXJdID0gIi0tZW5hYmxlLWdvcGhlciwtLWRpc2FibGUtZ29waGVyLCIKLVBBQ0tBR0VDT05GSUdbaW1hcF0gPSAiLS1lbmFibGUtaW1hcCwtLWRpc2FibGUtaW1hcCwiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCi1QQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4yLC0td2l0aG91dC1saWJpZG4yLGxpYmlkbjIiCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW21iZWR0bHNdID0gIi0td2l0aC1tYmVkdGxzPSR7U1RBR0lOR19ESVJfVEFSR0VUfSwtLXdpdGhvdXQtbWJlZHRscyxtYmVkdGxzIgotUEFDS0FHRUNPTkZJR1tuZ2h0dHAyXSA9ICItLXdpdGgtbmdodHRwMiwtLXdpdGhvdXQtbmdodHRwMixuZ2h0dHAyIgotUEFDS0FHRUNPTkZJR1twb3AzXSA9ICItLWVuYWJsZS1wb3AzLC0tZGlzYWJsZS1wb3AzLCIKLVBBQ0tBR0VDT05GSUdbcHJveHldID0gIi0tZW5hYmxlLXByb3h5LC0tZGlzYWJsZS1wcm94eSwiCi1QQUNLQUdFQ09ORklHW3J0bXBkdW1wXSA9ICItLXdpdGgtbGlicnRtcCwtLXdpdGhvdXQtbGlicnRtcCxydG1wZHVtcCIKLVBBQ0tBR0VDT05GSUdbcnRzcF0gPSAiLS1lbmFibGUtcnRzcCwtLWRpc2FibGUtcnRzcCwiCi1QQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtc21iLC0tZGlzYWJsZS1zbWIsIgotUEFDS0FHRUNPTkZJR1tzbXRwXSA9ICItLWVuYWJsZS1zbXRwLC0tZGlzYWJsZS1zbXRwLCIKLVBBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtc3NsIC0td2l0aC1yYW5kb209L2Rldi91cmFuZG9tLC0td2l0aG91dC1zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtbnNzLC0td2l0aG91dC1uc3MsbnNzIgotUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKLVBBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCi1QQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCi1QQUNLQUdFQ09ORklHW3ZlcmJvc2VdID0gIi0tZW5hYmxlLXZlcmJvc2UsLS1kaXNhYmxlLXZlcmJvc2UiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtbGliY3VybC1vcHRpb24gXAotICAgIC0tZGlzYWJsZS1udGxtLXdiIFwKLSAgICAtLWVuYWJsZS1jcnlwdG8tYXV0aCBcCi0gICAgLS13aXRoLWNhLWJ1bmRsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKLSAgICAtLXdpdGhvdXQtbGlibWV0YWxpbmsgXAotICAgIC0td2l0aG91dC1saWJwc2wgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JIyBjbGVhbnVwIGJ1aWxkcGF0aHMgZnJvbSBjdXJsLWNvbmZpZwotCXNlZCAtaSBcCi0JICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3MsLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAke0R9JHtiaW5kaXJ9L2N1cmwtY29uZmlnCi19Ci0KLVBBQ0tBR0VTID0rICJsaWIke0JQTn0iCi0KLUZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotUlJFQ09NTUVORFNfbGliJHtCUE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pzaCIKLQotaW5oZXJpdCBtdWx0aWxpYl9zY3JpcHQKLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9jdXJsLWNvbmZpZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42OS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42OS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NTRlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY5LjEuYmIKQEAgLTAsMCArMSw4MCBAQAorU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgdG9vbCBhbmQgbGlicmFyeSBmb3IgY2xpZW50LXNpZGUgVVJMIHRyYW5zZmVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9jdXJsLmhheHguc2UvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGlzdC5jZ2k/bGlzdD1jdXJsLXRyYWNrZXIiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU5ZmIzNTg2NzMxNGZlMzFjNmE0OTc3ZWY3ZGQ1MzEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC9jdXJsLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYzVmYzI2M2Y4OThhM2RmZWYwOGU4MDVmMWVjY2E0MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZmY1ZTViZDUwN2FkZjZhYTg4ZmY0YmJhZmQ0YzdhZjQ2NDg2N2ZmYjY4OGJlOTNiOTkzMDcxN2E1NmM0ZGU4IgorCitDVkVfUFJPRFVDVCA9ICJjdXJsIGxpYmN1cmwiCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnIG11bHRpbGliX2hlYWRlcgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBnbnV0bHMgbGliaWRuIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHZlcmJvc2UgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHZlcmJvc2UgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHZlcmJvc2UgemxpYiIKKworIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQorUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcywsLHRocmVhZGVkLXJlc29sdmVyIgorUEFDS0FHRUNPTkZJR1ticm90bGldID0gIi0td2l0aC1icm90bGksLS13aXRob3V0LWJyb3RsaSxicm90bGkiCitQQUNLQUdFQ09ORklHW2J1aWx0aW5tYW51YWxdID0gIi0tZW5hYmxlLW1hbnVhbCwtLWRpc2FibGUtbWFudWFsIgorUEFDS0FHRUNPTkZJR1tkaWN0XSA9ICItLWVuYWJsZS1kaWN0LC0tZGlzYWJsZS1kaWN0LCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnb3BoZXJdID0gIi0tZW5hYmxlLWdvcGhlciwtLWRpc2FibGUtZ29waGVyLCIKK1BBQ0tBR0VDT05GSUdbaW1hcF0gPSAiLS1lbmFibGUtaW1hcCwtLWRpc2FibGUtaW1hcCwiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCitQQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4yLC0td2l0aG91dC1saWJpZG4yLGxpYmlkbjIiCitQQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCitQQUNLQUdFQ09ORklHW21iZWR0bHNdID0gIi0td2l0aC1tYmVkdGxzPSR7U1RBR0lOR19ESVJfVEFSR0VUfSwtLXdpdGhvdXQtbWJlZHRscyxtYmVkdGxzIgorUEFDS0FHRUNPTkZJR1tuZ2h0dHAyXSA9ICItLXdpdGgtbmdodHRwMiwtLXdpdGhvdXQtbmdodHRwMixuZ2h0dHAyIgorUEFDS0FHRUNPTkZJR1twb3AzXSA9ICItLWVuYWJsZS1wb3AzLC0tZGlzYWJsZS1wb3AzLCIKK1BBQ0tBR0VDT05GSUdbcHJveHldID0gIi0tZW5hYmxlLXByb3h5LC0tZGlzYWJsZS1wcm94eSwiCitQQUNLQUdFQ09ORklHW3J0bXBkdW1wXSA9ICItLXdpdGgtbGlicnRtcCwtLXdpdGhvdXQtbGlicnRtcCxydG1wZHVtcCIKK1BBQ0tBR0VDT05GSUdbcnRzcF0gPSAiLS1lbmFibGUtcnRzcCwtLWRpc2FibGUtcnRzcCwiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtc21iLC0tZGlzYWJsZS1zbWIsIgorUEFDS0FHRUNPTkZJR1tzbXRwXSA9ICItLWVuYWJsZS1zbXRwLC0tZGlzYWJsZS1zbXRwLCIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtc3NsIC0td2l0aC1yYW5kb209L2Rldi91cmFuZG9tLC0td2l0aG91dC1zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtbnNzLC0td2l0aG91dC1uc3MsbnNzIgorUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKK1BBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCitQQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIsLCwsYXJlcyIKK1BBQ0tBR0VDT05GSUdbdmVyYm9zZV0gPSAiLS1lbmFibGUtdmVyYm9zZSwtLWRpc2FibGUtdmVyYm9zZSIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1saWJjdXJsLW9wdGlvbiBcCisgICAgLS1kaXNhYmxlLW50bG0td2IgXAorICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKKyAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAorICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCisgICAgLS13aXRob3V0LWxpYnBzbCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCisJc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKK30KKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgorCitpbmhlcml0IG11bHRpbGliX3NjcmlwdAorTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2N1cmwtY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiLzAwMDEtY2xvY2stRG8tbm90LWRlZmluZS1vd24tdGltZXNwZWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiLzAwMDEtY2xvY2stRG8tbm90LWRlZmluZS1vd24tdGltZXNwZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ1MWE0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jbG9jay1Eby1ub3QtZGVmaW5lLW93bi10aW1lc3BlYy5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDk2YjMwM2NhZjcwYTc2MzU5NTNjMzZlNWJmYjlhZDZlNzVjYjc2MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBGZWIgMjAyMCAxNDoxMjo1OSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBjbG9jazogRG8gbm90IGRlZmluZSBvd24gdGltZXNwZWMKKwordGltZXNwZWMgaXMgcHJvdmlkZWQgYnkgbGliYyBhbmQgaXRzIGJlc3QgbGVmdCB0byBsaWJjCitvc19nZXR0aW1lIHRha2VzIGEgZGJfdGltZXNwZWMgYW5kIHBhc3NlZCBpdHMgYWRkcmVzcyB0byBjbG9ja19nZXR0aW1lCit3aGljaCBhc3N1bWVzIHRoYXQgZGJfdGltZXNwZWMgYW5kIHRpbWVzcGVjIGFyZSBzYW1lIGJ1dCBhY3R1YWxseQoraXRzIDEyLWJ5dGVzIGhlcmUgYW5kIGxpYmMgaGFzIDE2LWJ5dGVzCisKK1RoaXMgY2FuIGNhdXNlIHByb2JsZW1zIGVzcGVjaWFsbHkgd2l0aCA2NGJpdCB0aW1lX3QKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2RiaW5jL2Nsb2NrLmggfCAxNyArLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTYgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9kYmluYy9jbG9jay5oCisrKysgYi9zcmMvZGJpbmMvY2xvY2suaAorQEAgLTQ0LDIyICs0NCw4IEBACisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCisgCistLyoKKy0gKiBUaGlzIGRlY2xhcmF0aW9uIGlzIFBPU0lYLWNvbXBhdGlibGUuICBCZWNhdXNlIHRoZXJlIGFyZSBsb3RzIG9mIGRpZmZlcmVudAorLSAqIHRpbWUuaCBpbmNsdWRlIGZpbGUgcGF0dGVybnMgb3V0IHRoZXJlLCBpdCdzIGVhc2llciB0byBkZWNsYXJlIG91ciBvd24gbmFtZQorLSAqIGluIGFsbCBjYXNlcyB0aGFuIHRvIHRyeSBhbmQgZGlzY292ZXIgaWYgYSBzeXN0ZW0gaGFzIGEgc3RydWN0IHRpbWVzcGVjLgorLSAqIEZvciB0aGUgc2FtZSByZWFzb24sIGFuZCBiZWNhdXNlIHdlJ2QgaGF2ZSB0byAjaW5jbHVkZSA8c3lzL3RpbWUuaD4gaW4gZGIuaCwKKy0gKiB3ZSBkb24ndCBleHBvcnQgYW55IHRpbWVzcGVjIHN0cnVjdHVyZXMgaW4gdGhlIERCIEFQSSwgZXZlbiBpbiBwbGFjZXMgd2hlcmUKKy0gKiBpdCB3b3VsZCBtYWtlIHNlbnNlLCBsaWtlIHRoZSByZXBsaWNhdGlvbiBzdGF0aXN0aWNzIGluZm9ybWF0aW9uLgorLSAqLworLXR5cGVkZWYgc3RydWN0IHsKKy0JdGltZV90CXR2X3NlYzsJCQkJLyogc2Vjb25kcyAqLworLSNpZmRlZiBIQVZFX01JWEVEX1NJWkVfQUREUkVTU0lORworLQlpbnQzMl90IHR2X25zZWM7CistI2Vsc2UKKy0JbG9uZwl0dl9uc2VjOwkJCS8qIG5hbm9zZWNvbmRzICovCistI2VuZGlmCistfSBkYl90aW1lc3BlYzsKKysjaW5jbHVkZSA8dGltZS5oPgorKyNkZWZpbmUgZGJfdGltZXNwZWMgc3RydWN0IHRpbWVzcGVjCisgCisgLyogT3BlcmF0aW9ucyBvbiB0aW1lc3BlY3MgKi8KKyAjdW5kZWYJdGltZXNwZWNjbGVhcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgppbmRleCA3NjFkODBjLi4zYTA5MjNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgpAQCAtMTAsNyArMTAsNyBAQAogIyBzYW1lIHN5c3RlbSBhdCB0aGUgc2FtZSB0aW1lIGlmIHJlYWxseSBuZWNlc3NhcnkuCiBTRUNUSU9OID0gImxpYnMiCiBTVU1NQVJZID0gIkJlcmtlbGV5IERhdGFiYXNlIHY1IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2RhdGFiYXNlL2RhdGFiYXNlLXRlY2hub2xvZ2llcy9iZXJrZWxleWRiL292ZXJ2aWV3L2luZGV4Lmh0bWwiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5vcmFjbGUuY29tL2RhdGFiYXNlL3RlY2hub2xvZ2llcy9yZWxhdGVkL2JlcmtlbGV5ZGIuaHRtbCIKIExJQ0VOU0UgPSAiU2xlZXB5Y2F0IgogUkNPTkZMSUNUU18ke1BOfSA9ICJkYjMiCiAKQEAgLTIwLDEyICsyMCwxMyBAQAogUFIgPSAicjEiCiBQRSA9ICIxIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL2JlcmtlbGV5LWRiL2RiLSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5vcmFjbGUuY29tL2JlcmtlbGV5LWRiL2RiLSR7UFZ9LnRhci5neiIKIFNSQ19VUkkgKz0gImZpbGU6Ly9maXgtcGFyYWxsZWwtYnVpbGQucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtYXRvbWljLVJlbmFtZS1sb2NhbC1fX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlLXRvLWF2by5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly9zZXF1ZW5jZS10eXBlLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJjLWNvbXBhdGliaWxpdHktYnktcmVuYW1pbmctYXRvbWljX2luaXQtQVBJLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsb2NrLURvLW5vdC1kZWZpbmUtb3duLXRpbWVzcGVjLnBhdGNoIFwKICAgICAgICAgICAgIgogIyBXZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gb2ZmaWNpYWwgbGF0ZXN0IDYueCB2ZXJzaW9uczsKICMgbGV0J3MgdHJhY2sgd2hhdCBkZWJpYW4gaXMgdXNpbmcuCkBAIC02MCw3ICs2MSw5IEBACiAKIEVYVFJBX09FQ09ORiA9ICIke0RCNV9DT05GSUd9IC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1jeHggLS13aXRoLXN5c3Jvb3QgU1RSSVA9dHJ1ZSIKIAorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbdmVyaWZ5XSA9ICItLWVuYWJsZS12ZXJpZnksIC0tZGlzYWJsZS12ZXJpZnkiCitQQUNLQUdFQ09ORklHW2RibV0gPSAiLS1lbmFibGUtZGJtLC0tZGlzYWJsZS1kYm0sIgogCiBFWFRSQV9PRU1BS0UgKz0gIkxJQlRPT0w9Jy4vJHtIT1NUX1NZU30tbGlidG9vbCciCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY5ZDAxZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE5MDcxN1QyMTM0NDRaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgotIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKLSMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTU3Y2M2NjIxMjc1MzQ2ZDdkNTE2YWIwYjVmYTFmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyY2M3ZGUzYWZjNmRmMWNmNmQwMGFmOTkzOGVmYWM3ZWU4ZjczOTIyOGU1NDhlNTEyZGRjMTg2YjZhN2JlMjIxIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0gICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbwotICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCi0gICAgICAgIGRvbmUKLSAgICBmaQotfQotCi0jIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCi0jCi1QQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgotRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgotCi1BTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCi1BTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjkuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC45LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0YzUyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC45LjEuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyICYgU01BSUxfR1BMIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZjAxYTUyMDNkNTA1MTJmYzQ4MzBiNDMzMmI2OTZhOWYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxOTEyMTJUMTQ1NjEyWi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKKyMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCisjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTU2MzM0MTY2ODBiZmQyNDliN2NiMDdkOTQxMzcwNDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWY4MjY2ODVkOWM1NmFiZmE4NzNlODRjZDM5MjUzOWNkMzYzY2IwYmEwNGEwOWQyMTE4NzM3N2UxYjc2NDA5MSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6dGVtcGZpbGUuMSB3aGljaC4xOndoaWNoLjE6ZycgJHtTfS9NYWtlZmlsZS5hbQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorICAgICAgICAjIERlYmlhbiBwbGFjZXMgc29tZSB1dGlscyBpbnRvICR7YmFzZV9iaW5kaXJ9IGFzIGRvZXMgYnVzeWJveAorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorICAgICAgICBmb3IgYXBwIGluIHJ1bi1wYXJ0cyB0ZW1wZmlsZTsgZG8KKyAgICAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vJGFwcCAke0R9JHtiYXNlX2JpbmRpcn0vJGFwcAorICAgICAgICBkb25lCisgICAgZmkKK30KKworIyBOb3RlIHRoYXQgd2UgcGFja2FnZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyBuYW1lLgorIworUEFDS0FHRVMgPSsgIiR7UE59LXJ1bi1wYXJ0cyIKK0ZJTEVTXyR7UE59LXJ1bi1wYXJ0cyA9ICIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMuZGViaWFudXRpbHMiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ydW4tcGFydHMiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitBTFRFUk5BVElWRV9QUklPUklUWT0iMzAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhZGQtc2hlbGwgaW5zdGFsbGtlcm5lbCByZW1vdmUtc2hlbGwgc2F2ZWxvZyB0ZW1wZmlsZSB3aGljaCIKKworQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0tcnVuLXBhcnRzID0gIjYwIgorQUxURVJOQVRJVkVfJHtQTn0tcnVuLXBhcnRzID0gInJ1bi1wYXJ0cyIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIndoaWNoLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2guMV0gPSAiJHttYW5kaXJ9L21hbjEvd2hpY2guMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZC1zaGVsbF09IiR7c2JpbmRpcn0vYWRkLXNoZWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3RhbGxrZXJuZWxdPSIke3NiaW5kaXJ9L2luc3RhbGxrZXJuZWwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVtb3ZlLXNoZWxsXT0iJHtzYmluZGlyfS9yZW1vdmUtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVuLXBhcnRzXT0iJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NhdmVsb2ddPSIke2JpbmRpcn0vc2F2ZWxvZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZW1wZmlsZV09IiR7YmFzZV9iaW5kaXJ9L3RlbXBmaWxlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoXT0iJHtiaW5kaXJ9L3doaWNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGlmZm9zY29wZS9kaWZmb3Njb3BlXzEzNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGlmZm9zY29wZS9kaWZmb3Njb3BlXzEzNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTNlMWRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kaWZmb3Njb3BlL2RpZmZvc2NvcGVfMTM2LmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiaW4tZGVwdGggY29tcGFyaXNvbiBvZiBmaWxlcywgYXJjaGl2ZXMsIGFuZCBkaXJlY3RvcmllcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGlmZm9zY29wZS5vcmcvIgorTElDRU5TRSA9ICJHUEwtMy4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitQWVBJX1BBQ0tBR0UgPSAiZGlmZm9zY29wZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjODRkOGQzMDhhNDAxNzZiYTJmNWRjNGFiZGJmNmY3MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZDY0ODZkNmViNmUwNDQ1YmEyMWZlZTJlOGJkZDNhMzY2Y2U3ODZiZmFjOThlMDBlNWE5NTAzOGI3ODE1ZjE1IgorCitSREVQRU5EU18ke1BOfSArPSAiYmludXRpbHMgdmltIHNxdWFzaGZzLXRvb2xzIHB5dGhvbjMtbGliYXJjaGl2ZS1jIHB5dGhvbjMtbWFnaWMiCisKKyMgRGVwZW5kZW5jaWVzIGRvbid0IGJ1aWxkIGZvciBtdXNsCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNzEyNzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29udmVydCB0ZXh0IGZpbGUgbGluZSBlbmRpbmdzIGJldHdlZW4gQ1JMRiBhbmQgTEYiCi1ERVNDUklQVElPTiA9ICJUaGUgRG9zMnVuaXggcGFja2FnZSBpbmNsdWRlcyB1dGlsaXRpZXMgZG9zMnVuaXggYW5kIFwKLXVuaXgyZG9zIHRvIGNvbnZlcnQgcGxhaW4gdGV4dCBmaWxlcyBpbiBET1Mgb3IgTWFjIGZvcm1hdCB0byBVbml4IFwKLWZvcm1hdCBhbmQgdmljZSB2ZXJzYS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F0ZXJsYW4uaG9tZS54czRhbGwubmwvZG9zMnVuaXguaHRtbCIKLVNFQ1RJT04gPSAic3VwcG9ydCIKLQotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MWI3OGZjYTc4NGRiMjRmNGE0MGUzMGIzMDA3ODdmM2YiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJkb3MydW5peC0oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKLQotIyBSZWxlYXNlIDcuNC4wCi1TUkNSRVYgPSAiMTE4MjUzM2JkZTNjMWZlNjViZTJlYWQ0NjVlODc2NzFmYWEyYzAyNyIKLQotUyA9ICIke1dPUktESVJ9L2dpdC9kb3MydW5peCIKLQotaW5oZXJpdCBnZXR0ZXh0IHBlcmxuYXRpdmUKLQotIyBUaGUgZG9zMnVuaXggTkxTIHJlbGllcyBvbiBwbzRhLW5hdGl2ZSwgd2hpbGUgcG80YSByZWNpcGUgaXMKLSMgcHJvdmlkZWQgYnkgbWV0YS1wZXJsIGxheWVyLCBzbyBtYWtlIGl0IG9wdGlvbmFsIGhlcmUsIHlvdQotIyBuZWVkIGhhdmUgbWV0YS1wZXJsIGluIGJibGF5ZXJzLmNvbmYgYmVmb3JlIGVuYWJsaW5nIG5scyBpbgotIyBQQUNLQUdFQ09ORklHLgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbmxzXSA9ICJFTkFCTEVfTkxTPTEsRU5BQkxFX05MUz0scG80YS1uYXRpdmUiCi0KLUVYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IExERkxBR1NfVVNFUj0nJHtMREZMQUdTfSciCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIkVOQUJMRV9OTFM9IgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0ke2Jhc2VfcHJlZml4fSIgaW5zdGFsbAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjIzMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMS5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIkNvbnZlcnQgdGV4dCBmaWxlIGxpbmUgZW5kaW5ncyBiZXR3ZWVuIENSTEYgYW5kIExGIgorREVTQ1JJUFRJT04gPSAiVGhlIERvczJ1bml4IHBhY2thZ2UgaW5jbHVkZXMgdXRpbGl0aWVzIGRvczJ1bml4IGFuZCBcCit1bml4MmRvcyB0byBjb252ZXJ0IHBsYWluIHRleHQgZmlsZXMgaW4gRE9TIG9yIE1hYyBmb3JtYXQgdG8gVW5peCBcCitmb3JtYXQgYW5kIHZpY2UgdmVyc2EuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dhdGVybGFuLmhvbWUueHM0YWxsLm5sL2RvczJ1bml4Lmh0bWwiCitTRUNUSU9OID0gInN1cHBvcnQiCisKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTBjOTc3YjE4ZjBhMzg0ZDAzNTk3YTUxN2Q3ZDAzZTMyIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL2RvczJ1bml4L2RvczJ1bml4IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiZG9zMnVuaXgtKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCisKK1NSQ1JFViA9ICIwNDkwZjA3MjNiMWEwODUxYjE3MzQzZjYxNjQ5MTVmMzQ3NGI1MTk3IgorCitTID0gIiR7V09SS0RJUn0vZ2l0L2RvczJ1bml4IgorCitpbmhlcml0IGdldHRleHQgcGVybG5hdGl2ZQorCisjIFRoZSBkb3MydW5peCBOTFMgcmVsaWVzIG9uIHBvNGEtbmF0aXZlLCB3aGlsZSBwbzRhIHJlY2lwZSBpcworIyBwcm92aWRlZCBieSBtZXRhLXBlcmwgbGF5ZXIsIHNvIG1ha2UgaXQgb3B0aW9uYWwgaGVyZSwgeW91CisjIG5lZWQgaGF2ZSBtZXRhLXBlcmwgaW4gYmJsYXllcnMuY29uZiBiZWZvcmUgZW5hYmxpbmcgbmxzIGluCisjIFBBQ0tBR0VDT05GSUcuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tubHNdID0gIkVOQUJMRV9OTFM9MSxFTkFCTEVfTkxTPSxwbzRhLW5hdGl2ZSIKKworRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gTERGTEFHU19VU0VSPScke0xERkxBR1N9JyIKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiRU5BQkxFX05MUz0iCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSR7YmFzZV9wcmVmaXh9IiBpbnN0YWxsCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50Ml8yLjIuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50Ml8yLjIuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGRiZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnQyXzIuMi44LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiRW5jaGFudCBTcGVsbCBjaGVja2VyIEFQSSBMaWJyYXJ5IgorU0VDVElPTiA9ICJsaWJzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9hYml3b3JkLmdpdGh1Yi5pby9lbmNoYW50LyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQWJpV29yZC9lbmNoYW50L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9lbmNoYW50LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjN2I5ZDZhMzkyZWNiODc1OGU0OTlmNzgzZThkYzg4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjN2I1ZTI4NTNmMGRkMGIxYWFmZWEyZjllMDcxOTQxYWZmZWVjM2E3NmRmOGUzZjZkNjdhNzE4Yzg5MjkzNTU1IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FiaVdvcmQvZW5jaGFudC9yZWxlYXNlcyIKKworUyA9ICIke1dPUktESVJ9L2VuY2hhbnQtJHtQVn0iCisKK0VYVFJBX09FTUFLRSA9ICJwa2dkYXRhZGlyPSR7ZGF0YWRpcn0vZW5jaGFudC0yIgorCitQQUNLQUdFQ09ORklHID8/PSAiYXNwZWxsIgorUEFDS0FHRUNPTkZJR1thc3BlbGxdICA9ICItLXdpdGgtYXNwZWxsLC0td2l0aG91dC1hc3BlbGwsYXNwZWxsLGFzcGVsbCIKK1BBQ0tBR0VDT05GSUdbaHVuc3BlbGxdICA9ICItLXdpdGgtaHVuc3BlbGwsLS13aXRob3V0LWh1bnNwZWxsLGh1bnNwZWxsLGh1bnNwZWxsIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L2VuY2hhbnQtMiBcCisgICAgJHtsaWJkaXJ9L2VuY2hhbnQtMiBcCisiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9lbmNoYW50LTIvKi5hIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnRfMS42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudF8xLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRlYjJlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudF8xLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiRW5jaGFudCBTcGVsbCBjaGVja2VyIEFQSSBMaWJyYXJ5IgotU0VDVElPTiA9ICJsaWJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hYmlzb3VyY2UuY29tL3Byb2plY3RzL2VuY2hhbnQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuYWJpc291cmNlLmNvbS9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9RW5jaGFudCIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZGZjYmFiZjkxMzFkYzlhOTVmZWJlZjY3NTNhMjk1OGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2VuY2hhbnQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI5O21kNT04ZDg4MWNhYTFkMzc1MjM1NjdlMWQ4ZjcyNjY3NWExOCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBSID0gInIzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvZW5jaGFudC8ke1BWfS9lbmNoYW50LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImRlMTEwMTFhZmY4MDFkYzYxMDQyODI4MDQxZmI1OWM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmYWM5ZTdiZTdlOTQyNGIyYzU1NzBkOGFmZmU1NjhkYjM5Zjc1NzJjMTBlZDQ4ZDRlMTNjZGRmMDNmNzA5N2YiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhc3BlbGwiCi1QQUNLQUdFQ09ORklHW2FzcGVsbF0gID0gIiAtLXdpdGgtYXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9ICAtLWVuYWJsZS1hc3BlbGwsICAtLWRpc2FibGUtYXNwZWxsLCAgYXNwZWxsLCAgYXNwZWxsIgotUEFDS0FHRUNPTkZJR1tpc3BlbGxdICA9ICIgLS13aXRoLWlzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAgLS1lbmFibGUtaXNwZWxsLCAgLS1kaXNhYmxlLWlzcGVsbCwgIGlzcGVsbCwgIGlzcGVsbCIKLVBBQ0tBR0VDT05GSUdbdXNwZWxsXSAgPSAiIC0td2l0aC11c3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLXVzcGVsbCwgIC0tZGlzYWJsZS11c3BlbGwsICB1c3BlbGwsICB1c3BlbGwiCi1QQUNLQUdFQ09ORklHW2hzcGVsbF0gID0gIiAtLXdpdGgtaHNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9ICAtLWVuYWJsZS1oc3BlbGwsICAtLWRpc2FibGUtaHNwZWxsLCAgaHNwZWxsLCAgaHNwZWxsIgotUEFDS0FHRUNPTkZJR1tteXNwZWxsXSA9ICItLXdpdGgtbXlzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAtLWVuYWJsZS1teXNwZWxsLCAtLWRpc2FibGUtbXlzcGVsbCwgbXlzcGVsbCwgbXlzcGVsbCIKLQotRVhUUkFfT0VDT05GID0gImJyX2N2X2JpbnJlbG9jPW5vIgotCi1leHBvcnQgQ1hYRkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9IC1sc3RkYysrICIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS8qJHtTT0xJQlN9ICR7ZGF0YWRpcn0vJHtCUE59ICR7bGliZGlyfS8ke0JQTn0vKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qe1NPTElCU0RFVn0gJHtsaWJkaXJ9LyR7QlBOfS8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyouYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZnJpYmlkaS9mcmliaWRpXzEuMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3Mzg4ODQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkZyZWUgSW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaWNvZGUgQmlkaXJlY3Rpb25hbCBBbGdvcml0aG0iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjRjMDIwYjBmNTEzNmRkMDEyZWUwMGYxZTExMjJmNmFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhYjVmMjFlOWYyZmM1N2I0YjQwZjhlYThmMTRkYmE3OGE1Y2M0NmQ5Y2Y5NGJjNWUwMGE1OGU2ODg2YTkzNWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKLQotaW5oZXJpdCBtZXNvbiBsaWJfcGFja2FnZSBwa2djb25maWcKLQotQ1ZFX1BST0RVQ1QgPSAiZ251X2ZyaWJpZGkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZnJpYmlkaS9mcmliaWRpXzEuMC45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEyMTdhYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZnJpYmlkaS9mcmliaWRpXzEuMC45LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiRnJlZSBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVW5pY29kZSBCaWRpcmVjdGlvbmFsIEFsZ29yaXRobSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYjc2N2MyNTljM2NkOGUwYzg0OTY5NzBmNjNjMjJkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWU0N2VhOTAyNmZiNjBkYTE5NDRkYTk4ODhiNGUwYTE4ODU0YTBlMjQxMGJiZmU3YWQ5MGEwNTRkMzZlMGM3IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCisKK2luaGVyaXQgbWVzb24gbGliX3BhY2thZ2UgcGtnY29uZmlnCisKK0NWRV9QUk9EVUNUID0gImdudV9mcmliaWRpIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE4LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE4LjEuYmIKaW5kZXggMTZlY2M1MC4uNWNiN2M1NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xOC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguMS5iYgpAQCAtMTYsMTMgKzE2LDE1IEBACiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKIAogIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCi1FWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1saWJnZGJtLWNvbXBhdCAtLXdpdGhvdXQtcmVhZGxpbmUiCiAKICMgU3RvcCBwcmVzZW5jZSBvZiBkYm0vbmJkbSBvbiB0aGUgaG9zdCBjb250YW1pbmF0aW5nIGJ1aWxkcwogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2xpYl9uZGJtX21haW49bm8gYWNfY3ZfbGliX2RibV9tYWluPW5vIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKK0NGTEFHUyArPSAiLWZjb21tb24iCisKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICAjIENyZWF0ZSBhIHN5bWxpbmsgdG8gbmRibS5oIGFuZCBnZGJtLmggaW4gaW5jbHVkZS9nZGJtIHRvIGxldCBvdGhlciBwYWNrYWdlcyB0byBmaW5kCiAgICAgIyB0aGVzZSBoZWFkZXJzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ3OTI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSBhZTFhNGMzNzQxN2EzYmJiZjhlYTFjYWIxOTg5ODJiMGNhZDQ3ZTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTIgQXVnIDIwMTYgMTc6MDg6MTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZml1cmUuYWM6IEJlbGlldmUgdGhlIGNmbGFncyBmcm9tIGVudmlyb25tZW50Ci0KLUluIHNvbWUgdG9vbGNoYWlucyBlLmcuIE9wZW5FbWJlZGRlZCAtbWFyY2ggb3B0aW9ucwotYXJlIHBhc3NlZCBvbiBjb21waWxlciBjbWRsaW5lLCBpdCBkb2VzIG5vdCB1c2UKLXRoZSBleHBlY3RlZCB0YXJnZXQgdHJpcGxldHMgdG8gbWFrZSB0aGVzZSBkZWNpc2lvbgotZHVyaW5nIGNvbmZpZ3VyZS4KLQotU2Vjb25kbHksIGRvbnQgc2V0IGFybXY0IGZvciBtYXJjaCB3aGVuIG5vIHNlbGVjdGlvbgotaXMgbWFkZSwgc2luY2UgaXQgaXMgcGFzc2VkIGZyb20gY21kbGluZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCi0KLSBjb25maWd1cmUuYWMgfCAxMSAtLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdtcC02LjEuMi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbXAtNi4xLjIub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnbXAtNi4xLjIvY29uZmlndXJlLmFjCi1AQCAtNjA0LDE1ICs2MDQsNiBAQCBjYXNlICRob3N0IGluCi0gICAgIGFueV8zMl90ZXN0bGlzdD0ic2l6ZW9mLWxvbmctNCIKLSAgICAgYW55XzY0X3Rlc3RsaXN0PSJzaXplb2YtbG9uZy04IgotIAotLSAgICAjIFRoaXMgaXMgbmVlZGVkIGZvciBjbGFuZywgd2hpY2ggaXMgbm90IGNvbnRlbnQgd2l0aCBmbGFncyBsaWtlIC1tZnB1PW5lb24KLS0gICAgIyBhbG9uZS4KLS0gICAgY2FzZSAkaG9zdCBpbgotLSAgICAgICotKi0qZWFiaSkKLS0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1zb2Z0ZnAiIDs7Ci0tICAgICAgKi0qLSplYWJpaGYpCi0tICAgICAgICBnY2NfY2ZsYWdzX2ZwbW9kZT0iLW1mbG9hdC1hYmk9aGFyZCIgOzsKLS0gICAgZXNhYwotLQotICAgICAjIEZJWE1FOiBXZSBtYWtlIG1hbmRhdG9yeSBjb21waWxlciBvcHRpb25zIG9wdGlvbmFsIGhlcmUuICBXZSBzaG91bGQKLSAgICAgIyBlaXRoZXIgZW5mb3JjZSB0aGVtLCBvciBvcmdhbmlzZSB0byBzdHJpcCBwYXRocyBhcyB0aGUgY29ycmVzcG9uZGluZwotICAgICAjIG9wdGlvbnMgZmFpbC4KLUBAIC03NDYsOCArNzM3LDYgQEAgY2FzZSAkaG9zdCBpbgotIAk7OwotICAgICAgICopCi0gCXBhdGg9ImFybSIKLS0JZ2NjX2NmbGFnc19hcmNoPSItbWFyY2g9YXJtdjQiCi0tCUdNUF9ERUZJTkVfUkFXKFsiZGVmaW5lKDxOT1RIVU1CPiwxKSJdKQotIAk7OwotICAgICBlc2FjCi0gICAgIDs7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MzU1ODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL2FtZDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnbXAtNi4xLjIvbG9uZ2xvbmcuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC02LjEuMi5vcmlnL2xvbmdsb25nLmgKLSsrKyBnbXAtNi4xLjIvbG9uZ2xvbmcuaAotQEAgLTEwMzYsOCArMTAzNiwxMCBAQCBleHRlcm4gVVd0eXBlIF9fTVBOKHVkaXZfcXJubmQpIChVV3R5cGUKLSAgICBjb3VudCBpcyBvbmx5IGFuIGludC4gKi8KLSAjZGVmaW5lIGNvdW50X3RyYWlsaW5nX3plcm9zKGNvdW50LCB4KQkJCQkJXAotICAgZG8gewkJCQkJCQkJCVwKLSsgICAgVURJdHlwZSBfX2NidG1wOwkJCQkJCQlcCi0gICAgIEFTU0VSVCAoKHgpICE9IDApOwkJCQkJCQlcCi0tICAgIF9fYXNtX18gKCJic2ZxICUxLCVxMCIgOiAiPXIiIChjb3VudCkgOiAicm0iICgoVURJdHlwZSkoeCkpKTsJXAotKyAgICBfX2FzbV9fICgiYnNmcSAlMSwlMCIgOiAiPXIiIChfX2NidG1wKSA6ICJybSIgKChVREl0eXBlKSh4KSkpOwlcCi0rICAgIChjb3VudCkgPSBfX2NidG1wOwkJCQkJCQlcCi0gICB9IHdoaWxlICgwKQotICNlbmRpZiAvKiBfX2FtZDY0X18gKi8KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIwODljZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvdXNlLWluY2x1ZGVkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdtcC02LjEuMi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC02LjEuMi5vcmlnL01ha2VmaWxlLmFtCi0rKysgZ21wLTYuMS4yL01ha2VmaWxlLmFtCi1AQCAtMTMwLDcgKzEzMCw3IEBAIEVYVFJBX0RJU1QgKz0gZ21weHguaAotICMgYnV0IGFueW9uZSBrbm93bGVkZ2VhYmxlIGVub3VnaCB0byBiZSBwbGF5aW5nIHdpdGggZXhlY19wcmVmaXggd2lsbCBiZSBhYmxlCi0gIyB0byBhZGRyZXNzIHRoYXQuCi0gIwotLWluY2x1ZGVleGVjZGlyID0gJChleGVjX3ByZWZpeCkvaW5jbHVkZQotK2luY2x1ZGVleGVjZGlyID0gJChpbmNsdWRlZGlyKQotIGluY2x1ZGVfSEVBREVSUyA9ICQoR01QWFhfSEVBREVSU19PUFRJT04pCi0gbm9kaXN0X2luY2x1ZGVleGVjX0hFQURFUlMgPSBnbXAuaAotIGxpYl9MVExJQlJBUklFUyA9IGxpYmdtcC5sYSAkKEdNUFhYX0xUTElCUkFSSUVTX09QVElPTikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAvMDAwMS1BcHBlbmQtdGhlLXVzZXItcHJvdmlkZWQtZmxhZ3MtdG8tdGhlLWF1dG8tZGV0ZWN0ZWQtLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1BcHBlbmQtdGhlLXVzZXItcHJvdmlkZWQtZmxhZ3MtdG8tdGhlLWF1dG8tZGV0ZWN0ZWQtLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAvMDAwMS1BcHBlbmQtdGhlLXVzZXItcHJvdmlkZWQtZmxhZ3MtdG8tdGhlLWF1dG8tZGV0ZWN0ZWQtLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTY0ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGFlMWE0YzM3NDE3YTNiYmJmOGVhMWNhYjE5ODk4MmIwY2FkNDdlMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMiBBdWcgMjAxNiAxNzowODoxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBjb25maXVyZS5hYzogQmVsaWV2ZSB0aGUgY2ZsYWdzIGZyb20gZW52aXJvbm1lbnQKKworSW4gc29tZSB0b29sY2hhaW5zIGUuZy4gT3BlbkVtYmVkZGVkIC1tYXJjaCBvcHRpb25zCithcmUgcGFzc2VkIG9uIGNvbXBpbGVyIGNtZGxpbmUsIGl0IGRvZXMgbm90IHVzZQordGhlIGV4cGVjdGVkIHRhcmdldCB0cmlwbGV0cyB0byBtYWtlIHRoZXNlIGRlY2lzaW9uCitkdXJpbmcgY29uZmlndXJlLgorCitTZWNvbmRseSwgZG9udCBzZXQgYXJtdjQgZm9yIG1hcmNoIHdoZW4gbm8gc2VsZWN0aW9uCitpcyBtYWRlLCBzaW5jZSBpdCBpcyBwYXNzZWQgZnJvbSBjbWRsaW5lCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KKworIGNvbmZpZ3VyZS5hYyB8IDExIC0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGRlbGV0aW9ucygtKQorCistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTYyNSwxNyArNjI1LDYgQEAgY2FzZSAkaG9zdCBpbgorICAgICBhbnlfMzJfdGVzdGxpc3Q9InNpemVvZi12b2lkKi00IgorICAgICBhbnlfNjRfdGVzdGxpc3Q9InNpemVvZi12b2lkKi04IgorIAorLSAgICAjIFRoaXMgaXMgbmVlZGVkIGZvciBjbGFuZywgd2hpY2ggaXMgbm90IGNvbnRlbnQgd2l0aCBmbGFncyBsaWtlIC1tZnB1PW5lb24KKy0gICAgIyBhbG9uZS4KKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgICotKi0qZWFiaSkKKy0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1zb2Z0ZnAiIDs7CistICAgICAgKi0qLSplYWJpaGYpCistICAgICAgICBnY2NfY2ZsYWdzX2ZwbW9kZT0iLW1mbG9hdC1hYmk9aGFyZCIgOzsKKy0gICAgICAqLSotbWluZ3cqKQorLSAgICAgICAgbGltYl82ND1sb25nbG9uZyA7OworLSAgICBlc2FjCistCisgICAgICMgRklYTUU6IFdlIG1ha2UgbWFuZGF0b3J5IGNvbXBpbGVyIG9wdGlvbnMgb3B0aW9uYWwgaGVyZS4gIFdlIHNob3VsZAorICAgICAjIGVpdGhlciBlbmZvcmNlIHRoZW0sIG9yIG9yZ2FuaXNlIHRvIHN0cmlwIHBhdGhzIGFzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICMgb3B0aW9ucyBmYWlsLgorQEAgLTc4MCw4ICs3NjksNiBAQCBjYXNlICRob3N0IGluCisgCTs7CisgICAgICAgKikKKyAJcGF0aD0iYXJtIgorLQlnY2NfY2ZsYWdzX2FyY2g9Ii1tYXJjaD1hcm12NCIKKy0JR01QX0RFRklORV9SQVcoWyJkZWZpbmUoPE5PVEhVTUI+LDEpIl0pCisgCTs7CisgICAgIGVzYWMKKyAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC91c2UtaW5jbHVkZWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC91c2UtaW5jbHVkZWRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjczMTdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wL3VzZS1pbmNsdWRlZGlyLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK2V4ZWMgaW5jbHVkZWRpciBzaG91bGQgYmUgcG9pbnRpbmcgdG8gZ2VuZXJhbCB5b2N0byBpbmNsdWRkaXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogZ21wLTYuMS4yL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ21wLTYuMS4yLm9yaWcvTWFrZWZpbGUuYW0KKysrKyBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KK0BAIC0xMzAsNyArMTMwLDcgQEAgRVhUUkFfRElTVCArPSBnbXB4eC5oCisgIyBidXQgYW55b25lIGtub3dsZWRnZWFibGUgZW5vdWdoIHRvIGJlIHBsYXlpbmcgd2l0aCBleGVjX3ByZWZpeCB3aWxsIGJlIGFibGUKKyAjIHRvIGFkZHJlc3MgdGhhdC4KKyAjCistaW5jbHVkZWV4ZWNkaXIgPSAkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCisraW5jbHVkZWV4ZWNkaXIgPSAkKGluY2x1ZGVkaXIpCisgaW5jbHVkZV9IRUFERVJTID0gJChHTVBYWF9IRUFERVJTX09QVElPTikKKyBub2Rpc3RfaW5jbHVkZWV4ZWNfSEVBREVSUyA9IGdtcC5oCisgbGliX0xUTElCUkFSSUVTID0gbGliZ21wLmxhICQoR01QWFhfTFRMSUJSQVJJRVNfT1BUSU9OKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzQ1ZGJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLXJlcXVpcmUgZ21wLmluYwotCi1MSUNFTlNFID0gIkdQTHYyKyB8IExHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSIKLQotUkVWSVNJT04gPSAiIgotU1JDX1VSSSA9ICJodHRwczovL2dtcGxpYi5vcmcvZG93bmxvYWQvJHtCUE59LyR7QlB9JHtSRVZJU0lPTn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9hbWQ2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtaW5jbHVkZWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZGRiYjI2ZGMzYmQ0ZTIzMDI5ODRkZWJiYTE0MDZhNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Mjc1YmIwNGY0ODYzYTEzNTE2YjJmMzkzOTJhYzVlMjcyZjVlMWJiODA1N2IxOGFlYzFjOWI3OWQ3M2Q4ZmIyIgotCi1hY3BhdGhzID0gIiIKLQotRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtY3h4PWRldGVjdCIKLUVYVFJBX09FQ09ORl9taXBzYXJjaHI2X2FwcGVuZCA9ICIgLS1kaXNhYmxlLWFzc2VtYmx5IgotCi1QQUNLQUdFUyA9KyAibGliZ21weHgiCi1GSUxFU19saWJnbXB4eCA9ICIke2xpYmRpcn0vbGliZ21weHgke1NPTElCU30iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBnbXAuaAotfQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBzZWQgLWkgXAotICAgICAgICAtZSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgXAotICAgICAgICAtZSAic3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnIiBcCi0gICAgICAgICAke0J9L2dtcC5oCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJnbXAuaCIKLQotIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCi0jIGFzc2VtYmx5Ci1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4yLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE5Yzc0ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjIuMC5iYgpAQCAtMCwwICsxLDQ0IEBACityZXF1aXJlIGdtcC5pbmMKKworTElDRU5TRSA9ICJHUEx2MisgfCBMR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisiCisKK1JFVklTSU9OID0gIiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9nbXBsaWIub3JnL2Rvd25sb2FkLyR7QlBOfS8ke0JQfSR7UkVWSVNJT059LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vdXNlLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBlbmQtdGhlLXVzZXItcHJvdmlkZWQtZmxhZ3MtdG8tdGhlLWF1dG8tZGV0ZWN0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYzI0MTYxZTBkZDQ0Y2FlNzhjZDVmNjcxOTM0OTJhMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjUxYzk5Y2IxMTRkZWIyMWE2MDA3NWZmYjQ5NGMxYTIxMGViOWQ3Y2I3MjllZDA0MmRkYjdkZTk1MzQ0NTFlYSIKKworYWNwYXRocyA9ICIiCisKK0VYVFJBX09FQ09ORiArPSAiIC0tZW5hYmxlLWN4eD1kZXRlY3QiCitFWFRSQV9PRUNPTkZfbWlwc2FyY2hyNl9hcHBlbmQgPSAiIC0tZGlzYWJsZS1hc3NlbWJseSIKKworUEFDS0FHRVMgPSsgImxpYmdtcHh4IgorRklMRVNfbGliZ21weHggPSAiJHtsaWJkaXJ9L2xpYmdtcHh4JHtTT0xJQlN9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZ21wLmgKK30KKworZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgInN8LS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH18fGciIFwKKyAgICAgICAgLWUgInN8JHtERUJVR19QUkVGSVhfTUFQfXx8ZyIgXAorICAgICAgICAgJHtCfS9nbXAuaAorfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiZ21wLmgiCisKKyMgRG9lc24ndCBjb21waWxlIGluIE1JUFMxNmUgbW9kZSBkdWUgdG8gdXNlIG9mIGhhbmQtd3JpdHRlbgorIyBhc3NlbWJseQorTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI4ODg1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgotCi1ERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV292ZXJyaWRlLWluaXQtaXMtbm90LW5lZWRlZC13aXRoLWdjYy05LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWJhMmQ5YjcwYzM3N2Y4ZTk2Nzc0MjA2NGMyN2ExOWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWZhMjYyODY4ZTM5YjY1MWEyZGI0YzA3MWZiYTkwNDE1MTU0MjQzZTgzYTgzMGNhMDA1MTZmOWE4MDdmZDUxNCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKLQkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKLQkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLWVuYWJsZS1ncGctaXMtZ3BnMiBcCi0gICAgICAgICAgICAgICAiCi0KLSMgQSBtaW5pbWFsIHBhY2thZ2UgY29udGFpbmluZyBqdXN0IGVub3VnaCB0byBydW4gZ3BnK2dwZ2FnZW50IChFLmcuIHVzZSBncGdtZSBpbiBvcGtnKQotUEFDS0FHRVMgPSsgIiR7UE59LWdwZyIKLUZJTEVTXyR7UE59LWdwZyA9ICIgXAotCSR7YmluZGlyfS9ncGcgXAotCSR7YmluZGlyfS9ncGcyIFwKLQkke2JpbmRpcn0vZ3BnLWFnZW50IFwKLSIKLQotIyBOb3JtYWwgcGFja2FnZSAoZ251cGcpIHNob3VsZCBkZXBlbmQgb24gbWluaW1hbCBwYWNrYWdlIChnbnVwZy1ncGcpCi0jIHRvIGVuc3VyZSBhbGwgdG9vbHMgYXJlIGluY2x1ZGVkLiBUaGlzIGlzIGRvbmUgb25seSBpbiBub24tbmF0aXZlCi0jIGJ1aWxkcy4gTmF0aXZlIGJ1aWxkcyBkb24ndCBoYXZlIHN1Yi1wYWNrYWdlcywgc28gYXBwZW5kaW5nIFJERVBFTkRTCi0jIGluIHRoaXMgY2FzZSBicmVha3MgcmVjaXBlIHBhcnNpbmcuCi1SREVQRU5EU18ke1BOfSArPSAiJHtAICIiIGlmICgibmF0aXZlIiBpbiBkLmdldFZhcigiUE4iKSkgZWxzZSAoZC5nZXRWYXIoIlBOIikgKyAiLWdwZyIpfSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLQlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAotCXJtIC1mICR7U30vbTQva3NiYS5tNAotCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCi0JbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9ncGcyIEdOVVBHX0JJTkRJUj0ke1NUQUdJTkdfQklORElSX05BVElWRX0KLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L2dwZ2NvbmYgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnLWFnZW50IEdOVVBHX0JJTkRJUj0ke1NUQUdJTkdfQklORElSX05BVElWRX0KLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L2dwZy1jb25uZWN0LWFnZW50IEdOVVBHX0JJTkRJUj0ke1NUQUdJTkdfQklORElSX05BVElWRX0KLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsIC0tZGlzYWJsZS1nbnV0bHMsIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NTQ1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4yMC5iYgpAQCAtMCwwICsxLDgxIEBACitTVU1NQVJZID0gIkdOVSBQcml2YWN5IEd1YXJkIC0gZW5jcnlwdGlvbiBhbmQgc2lnbmluZyB0b29scyAoMi54KSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xODlhZjhhZmNhNmQ2MDc1YmE2YzllMGFhODA3NzYyNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1hMmI2YmYyY2IzOGVlNTI2MTllNjBmMzBhMWZjNzI1NyIKKworREVQRU5EUyA9ICJucHRoIGxpYmFzc3VhbiBsaWJrc2JhIHpsaWIgYnppcDIgcmVhZGxpbmUgbGliZ2NyeXB0IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvdmVycmlkZS1pbml0LWlzLW5vdC1uZWVkZWQtd2l0aC1nY2MtOS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yZWxvY2F0ZS5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZmlsZTovL3JlbG9jYXRlLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGZmODg5MjBjZjUyYjM1ZGIwZGVkYWVlODdiZGJiYjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRhN2M5ZDQ4Yjc0YzM5OTE2OGVlODI3MGU1NDg1ODhkZGJlNTIyMThjMzM3NzAzZDdmMDYzNzNkMzI2Y2EzMCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKKwkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKKwkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorCQktLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorCQktLWVuYWJsZS1ncGctaXMtZ3BnMiBcCisgICAgICAgICAgICAgICAiCisKKyMgQSBtaW5pbWFsIHBhY2thZ2UgY29udGFpbmluZyBqdXN0IGVub3VnaCB0byBydW4gZ3BnK2dwZ2FnZW50IChFLmcuIHVzZSBncGdtZSBpbiBvcGtnKQorUEFDS0FHRVMgPSsgIiR7UE59LWdwZyIKK0ZJTEVTXyR7UE59LWdwZyA9ICIgXAorCSR7YmluZGlyfS9ncGcgXAorCSR7YmluZGlyfS9ncGcyIFwKKwkke2JpbmRpcn0vZ3BnLWFnZW50IFwKKyIKKworIyBOb3JtYWwgcGFja2FnZSAoZ251cGcpIHNob3VsZCBkZXBlbmQgb24gbWluaW1hbCBwYWNrYWdlIChnbnVwZy1ncGcpCisjIHRvIGVuc3VyZSBhbGwgdG9vbHMgYXJlIGluY2x1ZGVkLiBUaGlzIGlzIGRvbmUgb25seSBpbiBub24tbmF0aXZlCisjIGJ1aWxkcy4gTmF0aXZlIGJ1aWxkcyBkb24ndCBoYXZlIHN1Yi1wYWNrYWdlcywgc28gYXBwZW5kaW5nIFJERVBFTkRTCisjIGluIHRoaXMgY2FzZSBicmVha3MgcmVjaXBlIHBhcnNpbmcuCitSREVQRU5EU18ke1BOfSArPSAiJHtAICIiIGlmICgibmF0aXZlIiBpbiBkLmdldFZhcigiUE4iKSkgZWxzZSAoZC5nZXRWYXIoIlBOIikgKyAiLWdwZyIpfSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQva3NiYS5tNAorCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCisJbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX3dyYXBwZXJzICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJY3JlYXRlX3dyYXBwZXJzICR7U0RLUEFUSE5BVElWRX0ke2JpbmRpcl9uYXRpdmVzZGt9Cit9CisKK2NyZWF0ZV93cmFwcGVycygpIHsKKwlmb3IgaSBpbiBncGcyIGdwZ2NvbmYgZ3BnLWFnZW50IGdwZy1jb25uZWN0LWFnZW50OyBkbworCQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9LyRpIEdOVVBHX0JJTkRJUj0kMQorCWRvbmUKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsIC0tZGlzYWJsZS1nbnV0bHMsIGdudXRscyIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvcG9zaXgtc2hlbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvcG9zaXgtc2hlbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzOGUyZDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL3Bvc2l4LXNoZWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRG9uJ3QgZW1iZWQgdGhlIHBhdGggdG8gdGhlIGJ1aWxkLXRpbWUgUE9TSVggc2hlbGwgYXMgdGhpcyB3aWxsIGJlCi0kVE1QRElSL2hvc3R0b29scy9iYXNoLCB3aGljaCBpcyBubyBnb29kIG9uIHRoZSB0YXJnZXQuCi0KLUluc3RlYWQgZGVmYXVsdCB0byAvYmluL3NoIGJ1dCBhbGxvdyBpdCB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50LgotCi1UaGlzIGlzbid0IHJlYWxseSB1cHN0cmVhbWFibGUgYnV0IEkgZmlsZWQgYSBidWcgYXQKLWh0dHBzOi8vZ2l0bGFiLmNvbS9nbnV0bHMvZ251dGxzL2lzc3Vlcy84MDcgYW5kIGhvcGUgYSBwcm9wZXIgZml4IHdpbGwgYmUKLWludGVncmF0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy9saWJvcHRzL200L2xpYm9wdHMubTQgYi9zcmMvbGlib3B0cy9tNC9saWJvcHRzLm00Ci1pbmRleCBjNmFkNzM4Li5hNjJmYWNhIDEwMDY0NAotLS0tIGEvc3JjL2xpYm9wdHMvbTQvbGlib3B0cy5tNAotKysrIGIvc3JjL2xpYm9wdHMvbTQvbGlib3B0cy5tNAotQEAgLTExMiwyMSArMTEyLDcgQEAgQUNfREVGVU4oW0lOVk9LRV9MSUJPUFRTX01BQ1JPU19GSVJTVF0sWwotICAgQUNfQ0hFQ0tfRlVOQ1MoW21tYXAgY2Fub25pY2FsaXplX2ZpbGVfbmFtZSBzbnByaW50ZiBzdHJkdXAgc3RyY2hyIFwKLSAgICAgICAgICAgICAgICAgIHN0cnJjaHIgc3Ryc2lnbmFsIGZjaG1vZCBmc3RhdCBjaG1vZF0pCi0gICBBQ19QUk9HX1NFRAotLSAgW3doaWxlIDoKLS0gIGRvCi0tICAgICAgUE9TSVhfU0hFTEw9YHdoaWNoIGJhc2hgCi0tICAgICAgdGVzdCAteCAiJFBPU0lYX1NIRUxMIiAmJiBicmVhawotLSAgICAgIFBPU0lYX1NIRUxMPWB3aGljaCBkYXNoYAotLSAgICAgIHRlc3QgLXggIiRQT1NJWF9TSEVMTCIgJiYgYnJlYWsKLS0gICAgICBQT1NJWF9TSEVMTD0vdXNyL3hwZzQvYmluL3NoCi0tICAgICAgdGVzdCAteCAiJFBPU0lYX1NIRUxMIiAmJiBicmVhawotLSAgICAgIFBPU0lYX1NIRUxMPWAvYmluL3NoIC1jICcKLS0gICAgICAgICAgZXhlYyAyPi9kZXYvbnVsbAotLSAgICAgICAgICBpZiAhIHRydWUgOyB0aGVuIGV4aXQgMSA7IGZpCi0tICAgICAgICAgIGVjaG8gL2Jpbi9zaCdgCi0tICAgICAgdGVzdCAteCAiJFBPU0lYX1NIRUxMIiAmJiBicmVhawotLSAgICAgIF1BQ19NU0dfRVJST1IoW2Nhbm5vdCBsb2NhdGUgYSB3b3JraW5nIFBPU0lYIHNoZWxsXSlbCi0tICBkb25lXQotKyAgUE9TSVhfU0hFTEw9IiR7UE9TSVhfU0hFTEw6LS9iaW4vc2h9IgotICAgQUNfREVGSU5FX1VOUVVPVEVEKFtQT1NJWF9TSEVMTF0sIFsiJHtQT1NJWF9TSEVMTH0iXSwKLSAgICAgICAgICAgIFtkZWZpbmUgdG8gYSB3b3JraW5nIFBPU0lYIGNvbXBsaWFudCBzaGVsbF0pCi0gICBBQ19TVUJTVChbUE9TSVhfU0hFTExdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2ZDQyYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMTMuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJHTlUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IExpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251dGxzLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL3N1cHBvcnQvP2dyb3VwPWdudXRscyIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0teHggPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgorTElDRU5TRV8ke1BOfS1vcGVuc3NsID0gIkdQTHYzKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzEzOTFjOGUwYzFjZmU2ODA3N2U3ZmNlM2I1ODYyODMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM2Nzg5NTdiMGM4ZTk2NGFhNmM3MGZkNzc2NDFhNzFlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCisKK0RFUEVORFMgPSAibmV0dGxlIGdtcCB2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5nbnVwZy5vcmcvZnRwL2djcnlwdC9nbnV0bHMvdiR7U0hSVF9WRVJ9L2dudXRscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmIxZmU2OTZhMTE1NDM0MzM3ODViNGZjNzBjYTIyNWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIwNDFkZjQ0N2Q5ZjQ2NDQ1NzBjZjU3M2M5ZjYwMzU4ZTg2NTYzN2Q2OWI3ZTU5ZDExNTliNzI0MGI1MmYzOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZSBndGstZG9jCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4iCisKKyMgWW91IG11c3QgYWxzbyBoYXZlIENPTkZJR19TRUNDT01QIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBmb3IKKyMgc2VjY29tcCB0byB3b3JrLgorUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICJhY19jdl9saWJzZWNjb21wPXllcyxhY19jdl9saWJzZWNjb21wPW5vLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWlkbiwtLXdpdGhvdXQtaWRuLGxpYmlkbjIiCitQQUNLQUdFQ09ORklHW2xpYnRhc24xXSA9ICItLXdpdGgtaW5jbHVkZWQtbGlidGFzbjE9bm8sLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xLGxpYnRhc24xIgorUEFDS0FHRUNPTkZJR1twMTEta2l0XSA9ICItLXdpdGgtcDExLWtpdCwtLXdpdGhvdXQtcDExLWtpdCxwMTEta2l0IgorUEFDS0FHRUNPTkZJR1t0cG1dID0gIi0td2l0aC10cG0sLS13aXRob3V0LXRwbSx0cm91c2VycyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtZG9jIFwKKyAgICAtLWRpc2FibGUtbGliZGFuZSBcCisgICAgLS1kaXNhYmxlLWd1aWxlIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZW5hYmxlLWxvY2FsLWxpYm9wdHMgXAorICAgIC0tZW5hYmxlLW9wZW5zc2wtY29tcGF0aWJpbGl0eSBcCisgICAgLS13aXRoLWxpYnB0aHJlYWQtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAorICAgIC0td2l0aC1kZWZhdWx0LXRydXN0LXN0b3JlLWZpbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCisiCisKKyMgT3RoZXJ3aXNlIHRoZSB0b29scyB0cnkgYW5kIHVzZSBIT1NUVE9PTFNfRElSL2Jhc2ggYXMgYSBzaGVsbC4KK2V4cG9ydCBQT1NJWF9TSEVMTD0iJHtiYXNlX2JpbmRpcn0vc2giCisKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwlmb3IgZGlyIGluIC4gbGliOyBkbworCQlybSAtZiAke2Rpcn0vYWNsb2NhbC5tNCAke2Rpcn0vbTQvbGlidG9vbC5tNCAke2Rpcn0vbTQvbHQqLm00CisJZG9uZQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tb3BlbnNzbCAke1BOfS14eCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ251dGxzLWNsaS1kZWJ1ZyIKK0ZJTEVTXyR7UE59LW9wZW5zc2wgPSAiJHtsaWJkaXJ9L2xpYmdudXRscy1vcGVuc3NsLnNvLioiCitGSUxFU18ke1BOfS14eCA9ICIke2xpYmRpcn0vbGliZ251dGxzeHguc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTI3MDYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSBMaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dudXRscy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9zdXBwb3J0Lz9ncm91cD1nbnV0bHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LXh4ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0tb3BlbnNzbCA9ICJHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcxMzkxYzhlMGMxY2ZlNjgwNzdlN2ZjZTNiNTg2MjgzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HO21kNT1jNjc4OTU3YjBjOGU5NjRhYTZjNzBmZDc3NjQxYTcxZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORy5MRVNTRVI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgotCi1ERVBFTkRTID0gIm5ldHRsZSBnbXAgdmlydHVhbC9saWJpY29udiBsaWJ1bmlzdHJpbmciCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSIKLQotU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZ251cGcub3JnL2Z0cC9nY3J5cHQvZ251dGxzL3Yke1NIUlRfVkVSfS9nbnV0bHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2FybV9lYWJpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Bvc2l4LXNoZWxsLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlkY2YwYWE0NWQxYTQyZTFiM2NhNWQzOWVjN2M2MWE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhODE5NDRlNTYzNWRlOTgxMTcxNzcyODU3ZTcyYmUyMzFhN2UwZjU1OWFlMDI5MmQyNzM3ZGU0NzUzODNlODMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gcGtnY29uZmlnIGdldHRleHQgbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1QQUNLQUdFQ09ORklHID8/PSAibGliaWRuIgotCi0jIFlvdSBtdXN0IGFsc28gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkIGluIHRoZSBrZXJuZWwgZm9yCi0jIHNlY2NvbXAgdG8gd29yay4KLVBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiYWNfY3ZfbGlic2VjY29tcD15ZXMsYWNfY3ZfbGlic2VjY29tcD1ubyxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1pZG4sLS13aXRob3V0LWlkbixsaWJpZG4yIgotUEFDS0FHRUNPTkZJR1tsaWJ0YXNuMV0gPSAiLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xPW5vLC0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMSxsaWJ0YXNuMSIKLVBBQ0tBR0VDT05GSUdbcDExLWtpdF0gPSAiLS13aXRoLXAxMS1raXQsLS13aXRob3V0LXAxMS1raXQscDExLWtpdCIKLVBBQ0tBR0VDT05GSUdbdHBtXSA9ICItLXdpdGgtdHBtLC0td2l0aG91dC10cG0sdHJvdXNlcnMiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZW5hYmxlLWRvYyBcCi0gICAgLS1kaXNhYmxlLWxpYmRhbmUgXAotICAgIC0tZGlzYWJsZS1ndWlsZSBcCi0gICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAtLWVuYWJsZS1sb2NhbC1saWJvcHRzIFwKLSAgICAtLWVuYWJsZS1vcGVuc3NsLWNvbXBhdGliaWxpdHkgXAotICAgIC0td2l0aC1saWJwdGhyZWFkLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAtLXdpdGgtZGVmYXVsdC10cnVzdC1zdG9yZS1maWxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAotIgotCi0jIE90aGVyd2lzZSB0aGUgdG9vbHMgdHJ5IGFuZCB1c2UgSE9TVFRPT0xTX0RJUi9iYXNoIGFzIGEgc2hlbGwuCi1leHBvcnQgUE9TSVhfU0hFTEw9IiR7YmFzZV9iaW5kaXJ9L3NoIgotCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sYXJncCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JZm9yIGRpciBpbiAuIGxpYjsgZG8KLQkJcm0gLWYgJHtkaXJ9L2FjbG9jYWwubTQgJHtkaXJ9L200L2xpYnRvb2wubTQgJHtkaXJ9L200L2x0Ki5tNAotCWRvbmUKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LW9wZW5zc2wgJHtQTn0teHgiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dudXRscy1jbGktZGVidWciCi1GSUxFU18ke1BOfS1vcGVuc3NsID0gIiR7bGliZGlyfS9saWJnbnV0bHMtb3BlbnNzbC5zby4qIgotRklMRVNfJHtQTn0teHggPSAiJHtsaWJkaXJ9L2xpYmdudXRsc3h4LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL2ZpeC1ndGtkb2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9maXgtZ3RrZG9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmM5YjlmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL2ZpeC1ndGtkb2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5jb20vZ251dGxzL2xpYnRhc24xL21lcmdlX3JlcXVlc3RzLzQ5XQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBlYmQ0Zjg3MWI1MjQxODA5ZjZhNWI0NjE0NDRhNmQzMzFlMTVjOTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IE1vbiwgOSBTZXAgMjAxOSAxMzoxMTozOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBkb2MvcmVmZXJlbmNlOiBkb24ndCBhZGQgZW1wdHkgb2JqZWN0IGhpZXJhcmNoeSBjaGFwdGVyCi0KLVRoZSBvYmplY3QgaGllcmFyY2h5IHNlY3Rpb24gaXMgZW1wdHkgYmVjYXVzZSB0aGVyZSBhcmUgbm8gR09iamVjdHMgaW4gdGhlCi1saWJ0YXNuMSBBUEkuICBXaXRoIGd0ay1kb2MgMS4zMCBvbndhcmRzIGlmIHRoZXJlIGFyZSBubyBvYmplY3RzIHRoZW4gdGhlIG9iamVjdAotaGllcmFyY2h5IGZpbGUgd29uJ3QgZXhpc3QsIHJlc3VsdGluZyBpbiBhIGZhaWx1cmUgd2hlbiBidWlsZGluZyB0aGUKLWRvY3VtZW50YXRpb246Ci0KLXwgLi4vbGlidGFzbjEtZG9jcy54bWw6Mzk6IGVsZW1lbnQgaW5jbHVkZTogWEluY2x1ZGUgZXJyb3IgOiBjb3VsZCBub3QgbG9hZCAuLi94bWwvdHJlZV9pbmRleC5zZ21sLCBhbmQgbm8gZmFsbGJhY2sgd2FzIGZvdW5kCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBkb2MvcmVmZXJlbmNlL2xpYnRhc24xLWRvY3MueG1sIHwgNCAtLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kb2MvcmVmZXJlbmNlL2xpYnRhc24xLWRvY3MueG1sIGIvZG9jL3JlZmVyZW5jZS9saWJ0YXNuMS1kb2NzLnhtbAotaW5kZXggYWNjZGI4NS4uZjg4Yjg4OCAxMDA2NDQKLS0tLSBhL2RvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwKLSsrKyBiL2RvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwKLUBAIC0zNCwxMCArMzQsNiBAQAotICAgICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2xpYnRhc24xLnhtbCIvPgotIAotICAgPC9jaGFwdGVyPgotLSAgPGNoYXB0ZXIgaWQ9Im9iamVjdC10cmVlIj4KLS0gICAgPHRpdGxlPk9iamVjdCBIaWVyYXJjaHk8L3RpdGxlPgotLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvdHJlZV9pbmRleC5zZ21sIi8+Ci0tICA8L2NoYXB0ZXI+Ci0gICA8aW5kZXggaWQ9ImFwaS1pbmRleC1mdWxsIj4KLSAgICAgPHRpdGxlPkFQSSBJbmRleDwvdGl0bGU+Ci0gICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtZnVsbC54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL2ZpeC1sZGZsYWdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWxkZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOGYzYzYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWxkZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGE2ZjkzYjdhY2UzNDdiYzRmZTI5ZWI0YThmZTQzODNkNzg2Y2M4ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgotRGF0ZTogVHVlLCAyMyBKdWwgMjAxOSAyMDo0NDowMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggTERGTEFHUyB0byBBTV9MREZMQUdTIGluIHNyYy9NYWtlZmlsZS5hbQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1TaWduZWQtb2ZmLWJ5OiBUaW0gUsO8aHNlbiA8dGltLnJ1ZWhzZW5AZ214LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggNWJmMzYyMi4uNDQ1OTc2NyAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjEsNyArMjEsNyBAQCBBTV9DUFBGTEFHUyA9IC1JJCh0b3BfYnVpbGRkaXIpL2xpYi9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikvbGliL2luY2x1ZGVzIFwKLSAgLUkkKHRvcF9idWlsZGRpcikvbGliL2dsIC1JJCh0b3Bfc3JjZGlyKS9saWIvZ2wgJChDT0RFX0NPVkVSQUdFX0NQUEZMQUdTKQotIAotIExEQUREID0gLi4vbGliL2xpYnRhc24xLmxhCi0tTERGTEFHUyA9ICQoQ09ERV9DT1ZFUkFHRV9MREZMQUdTKQotK0FNX0xERkxBR1MgPSAkKENPREVfQ09WRVJBR0VfTERGTEFHUykKLSAKLSBiaW5fUFJPR1JBTVMgPSBhc24xUGFyc2VyIGFzbjFDb2RpbmcgYXNuMURlY29kaW5nCi0gCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYyYzE5NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBBU04uMSBhbmQgREVSIG1hbmlwdWxhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0YXNuMS8iCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEVTU0VSO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT03NWFjMTAwZWM5MjNmOTU5ODk4MTgyMzA3OTcwYzM2MCIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYnRhc24xL2xpYnRhc24xLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZ3RrZG9jLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImU5OTE4MjAwZWQ0YTc3OGUyYjNjYmUzNGMxYmU0MjA1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNjA0YmE1YzVjOGVhNDAzNDg3Njk1YzJlNDA3NDA1ODIwZDk4NTQwZDlkZTg4NGQ2ZTg0NGY5YTljNWJhMDgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjE2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjE2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMzN2I3MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTYuMC5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORy5MRVNTRVI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTc1YWMxMDBlYzkyM2Y5NTk4OTgxODIzMDc5NzBjMzYwIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjUzMTIwOGRlMzcyOWQ0MmUyYWYwYTMyODkwZjA4NzM2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlMGZiMDkwMzgzOTExN2NiNmUzYjU2ZTY4MjIyNzcxYmViZjIyYWQ3ZmMyMjk1YTBlZDdkNTc2ZThkNDMyOWQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbGliX3BhY2thZ2UgZ3RrLWRvYworCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLXN0ZD1nbnU5OSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LzAwMDEtRml4LWJpZy1lbmRpYW4tYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaAppbmRleCBlZmIyN2FlLi45MWQ2ODg0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaApAQCAtNiwyMyArNiwyMyBAQAogQnVnLXJlcG9ydDogaHR0cHM6Ly91bmljb2RlLW9yZy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9JQ1UtMjA1MzMKIFBhdGNoIHRha2VuIGZyb206IGh0dHBzOi8vYnVncy5nZW50b28ub3JnLzY4MjE3MAogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK2l0IGlzIGFwcGxpZWQgdXBzdHJlYW0gYW5kIHdpbGwgYmUgaW4gdmVyc2lvbiA2NysKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvNGEzYTQ1N2IzOGNkODI4YjdiM2ZhNGZkYmM2ZTI1MDRhNTcyNzVlOV0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgZGF0YS9NYWtlZmlsZS5pbiB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvc291cmNlL2RhdGEvTWFrZWZpbGUuaW4gYi9zb3VyY2UvZGF0YS9NYWtlZmlsZS5pbgotaW5kZXggNzc4YjZjNy4uNjcyMDNlNyAxMDA2NDQKIC0tLSBhL2RhdGEvTWFrZWZpbGUuaW4KICsrKyBiL2RhdGEvTWFrZWZpbGUuaW4KLUBAIC0xNDgsNyArMTQ4LDggQEAgSUNVREFUQV9BUkNISVZFID0gJChmaXJzdHdvcmQgJCh3aWxkY2FyZCAkKHNyY2RpcikvaW4vJChJQ1VEQVRBX0JBU0VOQU1FX1ZFUlNJT04KLSAjIGFuZCBjb252ZXJ0IGl0IHRvIHRoZSBjdXJyZW50IHR5cGUuCi0gaWZuZXEgKCQoSUNVREFUQV9BUkNISVZFKSwpCi0gSUNVREFUQV9TT1VSQ0VfQVJDSElWRSA9ICQoT1VURElSKS8kKElDVURBVEFfUExBVEZPUk1fTkFNRSkuZGF0Ci0tJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKTogJChJQ1VEQVRBX0FSQ0hJVkUpICQoT1VURElSKQotKyQoSUNVREFUQV9TT1VSQ0VfQVJDSElWRSk6ICQoSUNVREFUQV9BUkNISVZFKQotKwkkKE1LSU5TVEFMTERJUlMpICQoT1VURElSKQotIAkkKElOVk9LRSkgJChUT09MQklORElSKS9pY3Vwa2cgLXQkKElDVURBVEFfQ0hBUikgJChJQ1VEQVRBX0FSQ0hJVkUpICQoSUNVREFUQV9TT1VSQ0VfQVJDSElWRSkKLSBlbmRpZgotIGVsc2UKK0BAIC0xNDgsNyArMTQ4LDggQEAgSUNVREFUQV9BUkNISVZFID0gJChmaXJzdHdvcmQgJCh3aWxkY2FyZAorICMgYW5kIGNvbnZlcnQgaXQgdG8gdGhlIGN1cnJlbnQgdHlwZS4NCisgaWZuZXEgKCQoSUNVREFUQV9BUkNISVZFKSwpDQorIElDVURBVEFfU09VUkNFX0FSQ0hJVkUgPSAkKE9VVERJUikvJChJQ1VEQVRBX1BMQVRGT1JNX05BTUUpLmRhdA0KKy0kKElDVURBVEFfU09VUkNFX0FSQ0hJVkUpOiAkKElDVURBVEFfQVJDSElWRSkgJChPVVRESVIpDQorKyQoSUNVREFUQV9TT1VSQ0VfQVJDSElWRSk6ICQoSUNVREFUQV9BUkNISVZFKQ0KKysJJChNS0lOU1RBTExESVJTKSAkKE9VVERJUikNCisgCSQoSU5WT0tFKSAkKFRPT0xCSU5ESVIpL2ljdXBrZyAtdCQoSUNVREFUQV9DSEFSKSAkKElDVURBVEFfQVJDSElWRSkgJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKQ0KKyBlbmRpZg0KKyBlbHNlDQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpbHRlci5qc29uIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpbHRlci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjNjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZmlsdGVyLmpzb24KQEAgLTAsMCArMSwyIEBACit7Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82NC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGJhYzdhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82NC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PThiYzVkMzIwNTJhOTZmMjE0Y2JkZDFlNTNkZmM5MzVkIgotCi1kZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJpZy1lbmRpYW4tYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pY3UtQWRkZWQtYXJtZWItc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1MREZMQUdTSUNVRFQtZm9yLUxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYTNkMTgyMTNiZWVjNDU0ZTNjZGVjOWEzMTE2ZDZiMDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjI3ZDVkODQ3OGU2ZDk2ZmM4YzkwZmVkNDg1MTIzOTA3OWE1NjFhNmE4YjllNDhiMDg5MmYyNGU4MmQzMWQ2YyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82Ni4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJiYjM0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82Ni4xLmJiCkBAIC0wLDAgKzEsNjYgQEAKK3JlcXVpcmUgaWN1LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9MSUNFTlNFO21kNT1hMzgwOGE1YjcwMDcxYjA3Zjg3ZmYyMjA1ZTRkNzVhMCIKKworZGVmIGljdV9kb3dubG9hZF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK2RlZiBpY3VfZG93bmxvYWRfZm9sZGVyKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiLSIgKyBwdnNwbGl0WzFdCisKK0lDVV9QViA9ICIke0BpY3VfZG93bmxvYWRfdmVyc2lvbihkKX0iCitJQ1VfRk9MREVSID0gIiR7QGljdV9kb3dubG9hZF9mb2xkZXIoZCl9IgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ni8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0JBU0VfU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L3JlbGVhc2VzL2Rvd25sb2FkL3JlbGVhc2UtJHtJQ1VfRk9MREVSfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK0RBVEFfU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L3JlbGVhc2VzL2Rvd25sb2FkL3JlbGVhc2UtJHtJQ1VfRk9MREVSfS9pY3U0Yy0ke0lDVV9QVn0tZGF0YS56aXAiCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfTtuYW1lPWNvZGUgXAorICAgICAgICAgICAke0RBVEFfU1JDX1VSSX07bmFtZT1kYXRhIFwKKyAgICAgICAgICAgZmlsZTovL2ZpbHRlci5qc29uIFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJpZy1lbmRpYW4tYnVpbGQucGF0Y2g7YXBwbHk9bm8gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pY3UtQWRkZWQtYXJtZWItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1MREZMQUdTSUNVRFQtZm9yLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW2NvZGUuc2hhMjU2c3VtXSA9ICI1MmEzZjIyMDlhYjk1NTU5YzFjZjBhMTRmMjQzMzgwMDFmMzg5NjE1YmYwMGUyNTg1ZWYzZGJjNDNlY2YwYTJlIgorU1JDX1VSSVtkYXRhLnNoYTI1NnN1bV0gPSAiOGJlNjQ3ZjczODg5MWQyYmViNzlkNDhmOTkwNzdiMzQ5OTk0ODQzMGVhZTZmMWJlMTEyNTUzYjE1YWIwMjQzZSIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiaWN1NGMtKD9QPHB2ZXI+XGQrKF9cZCspKyktc3JjIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcmVsZWFzZXMiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiBhY19jdl9mdW5jX3N0cnRvZF9sPW5vIgorCitkb19tYWtlX2ljdWRhdGFfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICBjZCAke1N9CisgICAgcm0gLXJmIGRhdGEKKyAgICBjcCAtYSAke1dPUktESVJ9L2RhdGEgLgorICAgIHBhdGNoIC1wMSA8ICR7V09SS0RJUn0vMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaAorICAgIEFSPScke0JVSUxEX0FSfScgXAorICAgIENDPScke0JVSUxEX0NDfScgXAorICAgIENQUD0nJHtCVUlMRF9DUFB9JyBcCisgICAgQ1hYPScke0JVSUxEX0NYWH0nIFwKKyAgICBSQU5MSUI9JyR7QlVJTERfUkFOTElCfScgXAorICAgIENGTEFHUz0nJHtCVUlMRF9DRkxBR1N9JyBcCisgICAgQ1BQRkxBR1M9JyR7QlVJTERfQ1BQRkxBR1N9JyBcCisgICAgQ1hYRkxBR1M9JyR7QlVJTERfQ1hYRkxBR1N9JyBcCisgICAgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfScgXAorICAgIElDVV9EQVRBX0ZJTFRFUl9GSUxFPSR7V09SS0RJUn0vZmlsdGVyLmpzb24gXAorICAgIC4vcnVuQ29uZmlndXJlSUNVIExpbnV4IC0td2l0aC1kYXRhLXBhY2thZ2luZz1hcmNoaXZlCisgICAgb2VfcnVubWFrZSAke1BBUkFMTEVMX01BS0V9CisgICAgaW5zdGFsbCAtRG02NDQgJHtTfS9kYXRhL291dC9pY3VkdCR7SUNVX01BSk9SX1ZFUn1sLmRhdCAke1N9L2RhdGEvaW4vaWN1ZHQke0lDVV9NQUpPUl9WRVJ9bC5kYXQKK30KKworZG9fbWFrZV9pY3VkYXRhKCkgeworICAgIDoKK30KKworYWRkdGFzayBtYWtlX2ljdWRhdGEgYmVmb3JlIGRvX2NvbmZpZ3VyZSBhZnRlciBkb19wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAxLU5hdGl2ZS1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS0ucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSAzMzVlZjE0ZmM4MDFjOWRmYmU3ZTU2OTJkYzcxY2ZiZTcyMDQ5ZDJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjcgT2N0IDIwMTkgMTY6Mzg6NTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTmF0aXZlOiBEb24ndCB1c2UgYnVpbGQgdGltZSBoYXJkY29kZWQgcHl0aG9uIGJpbmFyeSBwYXRoLgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGlzIGlzIHNhbWUgcGF0Y2ggYXMgdXNlZCBmb3IgdGFyZ2V0IGJ1aWxkIGV4Y2VwdCB0aGF0IHdlIGRvIG5vdCB1c2UgdGhlCisnLVMnIGFuZCAnLXMnIG9wdGlvbiBiZWNhdXNlICctUycgaXMgcmVsYXRpdmVseSB5b3VuZyBbMV0gYW5kIGVsZGVyIGJ1aWxkLWhvc3QKK2Rvbid0IHN1cHBvcnQgaXQgWzJdCisKK1sxXSBodHRwczovL2dpdGh1Yi5jb20vY29yZXV0aWxzL2NvcmV1dGlscy9jb21taXQvNjY4MzA2ZWQ4NmM4Yzc5YjBhZjBkYjhiOWM4ODI2NTRlYmI2NmRiMiNkaWZmLTgzZDlkNTJiMWYxMmFjNTg5NzM5YWIxMzM0YWU0ZjMwCitbMl0gaHR0cHM6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yNzQ3NDMvCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBpdHN0b29sLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaXRzdG9vbC5pbiBiL2l0c3Rvb2wuaW4KK2luZGV4IGU2NGNkMzQuLjA1ZDI2NGYgMTAwNzU1CistLS0gYS9pdHN0b29sLmluCisrKysgYi9pdHN0b29sLmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIUBQWVRIT05AIC1zCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIENvcHlyaWdodCAoYykgMjAxMC0yMDE4IFNoYXVuIE1jQ2FuY2UgPHNoYXVubUBnbm9tZS5vcmc+CisgIworLS0gCisyLjIxLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMi1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS1wYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMi1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS1wYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MTEwNTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBjZDliNTYyMjQ4OTU1NzYxMjVlOTFjY2EzMTdhY2U4YTgwZjNlYjc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGlvdHIgVHdvcmVrIDx0d29yYXpAdHdvcmF6Lm5ldD4KK0RhdGU6IFNhdCwgMjcgSnVsIDIwMTkgMTA6MTk6MTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgdXNlIGJ1aWxkIHRpbWUgaGFyZGNvZGVkIHB5dGhvbiBiaW5hcnkgcGF0aC4KKworVGhpcyBwYXRoIG9idmlvdXNseSB3b24ndCB3b3JrIG9uIHRhcmdldCBzaW5jZSB0aGV5IHJlZmVyIHRvIGJ1aWxkCittYWNoaW5lIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIE5hdGl2ZSBidWlsZHMgd2lsbCBhbHNvIGZhaWwgaWYgbG9jYWwuY29uZgoraGFzIElOSEVSSVQrPXJtX3dvcmsuIEluc3RyZWFkIG9mIGhhcmRjb2RpbmcgcGF0aCB0byBweXRob24gYmluYXJ5IHVzZQord2hhdGV2ZXIgaXMgZm91bmQgaW4gUEFUSCBmaXJzdC4gVGhpcyBzaG91bGQgYWxzbyBhbGxvdyB0aGUgdG9vbCB0byB1c2UKK3B5dGhvbjMgYmluYXJ5IHByb3ZpZGVkIGluIHJlY2lwZS1zeXNyb290LW5hdGl2ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKy0tLQorIGl0c3Rvb2wuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pdHN0b29sLmluIGIvaXRzdG9vbC5pbgoraW5kZXggYjNjMDAzMy4uN2RmMjQ3NiAxMDA3NTUKKy0tLSBhL2l0c3Rvb2wuaW4KKysrKyBiL2l0c3Rvb2wuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBZVEhPTkAgLXMKKysjIS91c3IvYmluL2VudiAtUyBweXRob24zIC1zCisgIworICMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTggU2hhdW4gTWNDYW5jZSA8c2hhdW5tQGdub21lLm9yZz4KKyAjCistLQorMi4yMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXRzdG9vbC9pdHN0b29sXzIuMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYzNThmNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXRzdG9vbC9pdHN0b29sXzIuMC42LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiSVRTIFRvb2wgYWxsb3dzIHlvdSB0byB0cmFuc2xhdGUgeW91ciBYTUwgZG9jdW1lbnRzIHdpdGggUE8gZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vaXRzdG9vbC5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5YzU3Yjk1ZmQ3ZDBlOWUyMzhlYmJjN2FkNDdjNWE1IgorCitpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlCisKK0RFUEVORFMgPSAibGlieG1sMi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZpbGVzLml0c3Rvb2wub3JnLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtTmF0aXZlLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LS5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZmlsZTovLzAwMDEtTmF0aXZlLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LS5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDItRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktcGF0aC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjQzMDZlZWJhNGY0YWVlNmIzOTNkMTRmOWMzYzU3Y2ExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyMzNjYzIyNzI2YTlhNWE4MzY2NGJmNjdkMWFmNzk1NDlhMjk4YzIzMTg1ZDkyNmMzNjc3YWZhOTE3YjkyYTkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbDItcHl0aG9uIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjUuMy5iYgppbmRleCA2ZmIzZDJmLi41MmI0YzBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4zLmJiCkBAIC0yMiwxMSArMjIsMTUgQEAKIAogQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJhc3N1YW4tY29uZmlnIgogCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBtdWx0aWxpYl9oZWFkZXIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CiAJcm0gLWYgJHtTfS9tNC8qLm00CiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgYXNzdWFuLmgKK30KKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjEwLjAuYmIKaW5kZXggZWFmMjQ0YS4uM2I5YWM1YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiCkBAIC03LDcgKzcsNyBAQAogICAgICAgICAgICAgICAgcHJvamVjdHMgd2l0aCBzdHJvbmcgQlNEIG9yaWdpbnMsIHdpdGhvdXQgbmVlZGluZyB0byBlbWJlZCB0aGUgc2FtZSBcCiAgICAgICAgICAgICAgICBjb2RlIG92ZXIgYW5kIG92ZXIgYWdhaW4gb24gZWFjaCBwcm9qZWN0LiIKIAotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8iCitIT01FUEFHRSA9ICJodHRwczovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8iCiAjIFRoZXJlIHNlZW1zIHRvIGJlIG1vcmUgbGljZW5zZXMgdXNlZCBpbiB0aGUgY29kZSwgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZSwgY29tcGxldGUgbGlzdDoKICMgT0UgQCB+L3Byb2plY3RzL2xpYmJzZCAkIGdyZXAgXkxpY2Vuc2U6IENPUFlJTkcgIHwgc29ydCAtdQogIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKQEAgLTMxLDcgKzMxLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxMjBiZTAxNzM0NjlhMDZlZDE4NWI2ODhlMGUxYWUwIgogU0VDVElPTiA9ICJsaWJzIgogCi1TUkNfVVJJID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gImh0dHBzOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZWFkOTZkMjQwZDAyZmFhNWI5MjFjMGFhNTBjODEyYjUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzRiOGFkYzcyNjg4M2QwZTg1YjMxMThmYTEzNjA1ZTE3OWE2MmIzMWJhNTFmNjc2MTM2ZWNiMmQwYmMxYTg4NyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcuaW5jCmluZGV4IGFlYzgzODkuLjAwMjkxNWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLmluYwpAQCAtOSw2ICs5LDggQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vcGVvcGxlLnJlZGhhdC5jb20vc2dydWJiL2xpYmNhcC1uZy9saWJjYXAtbmctJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3B5dGhvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtbGlicmFyeS1pZi1oZWFkZXItZm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1XcmFwLXB0aHJlYWRfYXRmb3JrLXVzYWdlLWluLUhBVkVfUFRIUkVBRF9ILnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjU3ZGMyNjdlMjk0OWNkZWNiNjUxYTkyOWY5MjA2NTcyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtbGlicmFyeS1pZi1oZWFkZXItZm91bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIxNTVjYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtbGlicmFyeS1pZi1oZWFkZXItZm91bmQucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAwMjMwZTJlMzc0YmI3MWFlZDAxODFjY2Q5ZWJkMTNjMGM1MTI1YTVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVHJldm9yIFdvZXJuZXIgPHR3b2VybmVyQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjUgT2N0IDIwMTkgMTc6MDE6MjAgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgbGlicmFyeSBpZiBoZWFkZXIgZm91bmQKKworSWYgdGhlIHB0aHJlYWQuaCBoZWFkZXIgaXMgZm91bmQsIG1ha2Ugc3VyZSBsaWJyYXJ5IGNvbnRhaW5pbmcKKyJwdGhyZWFkX2F0Zm9yayIgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgbGlicmFyaWVzIGFnYWluc3Qgd2hpY2ggdG8gbGluay4KK09uIHNvbWUgaG9zdHMgKGUuZy4gb3BlblNVU0UgMTUuMSkgIi1scHRocmVhZCIgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBhZGRlZAoraW4gb3JkZXIgZm9yIHRoZSBjb2RlIHRvIGNvbXBpbGUgY29ycmVjdGx5LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N0ZXZlZ3J1YmIvbGliY2FwLW5nL3B1bGwvMTBdCitTaWduZWQtb2ZmLWJ5OiBUcmV2b3IgV29lcm5lciA8dHdvZXJuZXJAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA2MzA4OGY0Li42MzliNDY0IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01Niw3ICs1Niw5IEBAIEFDX0NIRUNLX0hFQURFUlMoc3lzL3hhdHRyLmgsIFtdLCBbCisgCUFDX0NIRUNLX0hFQURFUlMoYXR0ci94YXR0ci5oLCBbXSwgW0FDX01TR19XQVJOKGF0dHIveGF0dHIuaCBub3QgZm91bmQsIGRpc2FibGluZyBmaWxlIHN5c3RlbSBjYXBhYmlsaXRpZXMuKV0pCisgCV0pCisgQUNfQ0hFQ0tfSEVBREVSUyhsaW51eC9zZWN1cmViaXRzLmgsIFtdLCBbXSkKKy1BQ19DSEVDS19IRUFERVJTKHB0aHJlYWQuaCwgW10sIFtBQ19NU0dfV0FSTihwdGhyZWFkLmggbm90IGZvdW5kLCBkaXNhYmxpbmcgcHRocmVhZF9hdGZvcmsuKV0pCisrQUNfQ0hFQ0tfSEVBREVSUyhwdGhyZWFkLmgsCisrCVtBQ19TRUFSQ0hfTElCUyhwdGhyZWFkX2F0Zm9yaywgcHRocmVhZCldLAorKwlbQUNfTVNHX1dBUk4ocHRocmVhZC5oIG5vdCBmb3VuZCwgZGlzYWJsaW5nIHB0aHJlYWRfYXRmb3JrLildKQorIAorIEFDX0NfQ09OU1QKKyBBQ19DX0lOTElORQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDItV3JhcC1wdGhyZWFkX2F0Zm9yay11c2FnZS1pbi1IQVZFX1BUSFJFQURfSC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy8wMDAyLVdyYXAtcHRocmVhZF9hdGZvcmstdXNhZ2UtaW4tSEFWRV9QVEhSRUFEX0gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MjU0ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy8wMDAyLVdyYXAtcHRocmVhZF9hdGZvcmstdXNhZ2UtaW4tSEFWRV9QVEhSRUFEX0gucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSBkOTVjNDAxOGFkNTdjMzdmNjI3MmRiZWRmYTUyMTc3NzY1NjdjMzI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KK0RhdGU6IFR1ZSwgMjYgTm92IDIwMTkgMjI6MzQ6MzQgKzA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gV3JhcCBwdGhyZWFkX2F0Zm9yayB1c2FnZSBpbiBIQVZFX1BUSFJFQURfSAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CistLS0KKyBzcmMvY2FwLW5nLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NhcC1uZy5jIGIvc3JjL2NhcC1uZy5jCitpbmRleCAzNWZjZDdhLi45N2EzZGJkIDEwMDY0NAorLS0tIGEvc3JjL2NhcC1uZy5jCisrKysgYi9zcmMvY2FwLW5nLmMKK0BAIC0xNjYsNyArMTY2LDkgQEAgc3RhdGljIHZvaWQgZGVpbml0KHZvaWQpCisgc3RhdGljIHZvaWQgaW5pdF9saWIodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0cnVjdG9yKSk7Cisgc3RhdGljIHZvaWQgaW5pdF9saWIodm9pZCkKKyB7CisrI2lmZGVmIEhBVkVfUFRIUkVBRF9ICisgCXB0aHJlYWRfYXRmb3JrKE5VTEwsIE5VTEwsIGRlaW5pdCk7CisrI2VuZGlmCisgfQorIAorIHN0YXRpYyB2b2lkIGluaXQodm9pZCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjEwLmJiCmluZGV4IGE5YTA0NjUuLjZlNmRlNDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy4xMC5iYgpAQCAtMyw3ICszLDYgQEAKIGluaGVyaXQgbGliX3BhY2thZ2UgYXV0b3Rvb2xzCiAKIEVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LXB5dGhvbiAtLXdpdGhvdXQtcHl0aG9uMyIKLUxERkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLXB0aHJlYWQiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS10ZXN0cy1kby1ub3Qtc3RhdGljYWxseS1saW5rLWEtdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtdGVzdHMtZG8tbm90LXN0YXRpY2FsbHktbGluay1hLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2OGNjNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtdGVzdHMtZG8tbm90LXN0YXRpY2FsbHktbGluay1hLXRlc3QucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSAxMTc5YjQyM2NjZThkMTE5YjQyY2ViZmIzZGFhNzdjNTQwZmRjYTQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE1IEphbiAyMDIwIDE3OjE2OjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBkbyBub3Qgc3RhdGljYWxseSBsaW5rIGEgdGVzdAorCitUaGlzIGZhaWxzIG9uIGUuZy4gY2VudG9zIDcKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9NYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZpbGUKK2luZGV4IDcxNjJjZjAuLjZhZjQ3YWYgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZQorKysrIGIvdGVzdHMvTWFrZWZpbGUKK0BAIC0yOSw3ICsyOSw3IEBAIHBzeF90ZXN0X3dyYXA6IHBzeF90ZXN0LmMgJChERVBTKQorIHJ1bl9saWJjYXBfcHN4X3Rlc3Q6IGxpYmNhcF9wc3hfdGVzdAorIAorIGxpYmNhcF9wc3hfdGVzdDogbGliY2FwX3BzeF90ZXN0LmMgJChERVBTKQorLQkkKENDKSAkKENGTEFHUykgJChJUEFUSCkgJDwgLW8gJEAgJChMSUJDQVBMSUIpICQoTElCUFNYTElCKSAtV2wsLXdyYXAscHRocmVhZF9jcmVhdGUgLS1zdGF0aWMKKysJJChDQykgJChDRkxBR1MpICQoSVBBVEgpICQ8IC1vICRAICQoTElCQ0FQTElCKSAkKExJQlBTWExJQikgLVdsLC13cmFwLHB0aHJlYWRfY3JlYXRlCisgCisgY2xlYW46CisgCXJtIC1mIHBzeF90ZXN0IHBzeF90ZXN0X3dyYXAgbGliY2FwX3BzeF90ZXN0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMi10ZXN0cy1kby1ub3QtcnVuLXRhcmdldC1leGVjdXRhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmQxMDhjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMi10ZXN0cy1kby1ub3QtcnVuLXRhcmdldC1leGVjdXRhYmxlcy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDYzMDk1NTQyMjVlMDVlNzYxNjdlZGE0ZTBkZjM4M2ZiM2QxYTYyYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTY6NTQ6MDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGRvIG5vdCBydW4gdGFyZ2V0IGV4ZWN1dGFibGVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyB0ZXN0cy9NYWtlZmlsZSB8IDMgLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCitpbmRleCA5NWU0Y2E2Li43MTYyY2YwIDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUKKysrKyBiL3Rlc3RzL01ha2VmaWxlCitAQCAtMTksOCArMTksNiBAQCBzdWRvdGVzdDogdGVzdAorIGluc3RhbGw6IGFsbAorIAorIHJ1bl9wc3hfdGVzdDogcHN4X3Rlc3QgcHN4X3Rlc3Rfd3JhcAorLQkuL3BzeF90ZXN0CistCS4vcHN4X3Rlc3Rfd3JhcAorIAorIHBzeF90ZXN0OiBwc3hfdGVzdC5jICQoREVQUykKKyAJJChDQykgJChDRkxBR1MpICQoSVBBVEgpIC1ETk9XUkFQICQ8IC1vICRAICQoTElCUFNYTElCKQorQEAgLTI5LDcgKzI3LDYgQEAgcHN4X3Rlc3Rfd3JhcDogcHN4X3Rlc3QuYyAkKERFUFMpCisgCSQoQ0MpICQoQ0ZMQUdTKSAkKElQQVRIKSAkPCAtbyAkQCAkKExJQlBTWExJQikgLVdsLC13cmFwLHB0aHJlYWRfY3JlYXRlCisgCisgcnVuX2xpYmNhcF9wc3hfdGVzdDogbGliY2FwX3BzeF90ZXN0CistCS4vbGliY2FwX3BzeF90ZXN0CisgCisgbGliY2FwX3BzeF90ZXN0OiBsaWJjYXBfcHN4X3Rlc3QuYyAkKERFUFMpCisgCSQoQ0MpICQoQ0ZMQUdTKSAkKElQQVRIKSAkPCAtbyAkQCAkKExJQkNBUExJQikgJChMSUJQU1hMSUIpIC1XbCwtd3JhcCxwdGhyZWFkX2NyZWF0ZSAtLXN0YXRpYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y2NGZmNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgZ2V0dGluZy9zZXR0aW5nIFBPU0lYLjFlIGNhcGFiaWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUvZnVsbHljYXBhYmxlLyIKLQotIyBubyBzcGVjaWZpYyBHUEwgdmVyc2lvbiByZXF1aXJlZAotTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2U7bWQ1PTNmODRmZDZmMjlkNDUzYTU2NTE0Y2I3ZTRlYWQyNWYxIgotCi1ERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZW5zdXJlLXRoZS1YQVRUUl9OQU1FX0NBUFMtaXMtZGVmaW5lZC13aGVuLWl0LWlzLXVzZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyZThmOWZhYjMyZWI1Y2NiMzc5NjlmZTMxN2ZkMTdhYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWMxNzkyZDAxMThiZWU2YWFlNmJhN2ZiOTNmZjE2MDJjNmE5YmRhODEyZmQ2MzkxNmVlZTE0MzViOWM0ODZhIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvbGlicy9zZWN1cml0eS9saW51eC1wcml2cy8ke0JQTn0yLyIKLQotaW5oZXJpdCBsaWJfcGFja2FnZQotCi0jIGRvIE5PVCBwYXNzIHRhcmdldCBjZmxhZ3MgdG8gaG9zdCBjb21waWxhdGlvbnMKLSMKLWRvX2NvbmZpZ3VyZSgpIHsKLQkjIGxpYmNhcCB1c2VzIDo9IGZvciBjb21waWxlcnMsIGZvcnR1bmF0ZWx5LCBpdCBnaXZlcyB1cyBhIGhpbnQKLQkjIG9uIHdoYXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggPz0KLQlzZWQgLWUgJ3MsOj0sPz0sZycgLWkgTWFrZS5SdWxlcwotCXNlZCAtZSAncyxeQlVJTERfQ0ZMQUdTID89ICQoLipDRkxBR1MpLEJVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUyksJyAtaSBNYWtlLlJ1bGVzCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gIiIKLQotUEFDS0FHRUNPTkZJR1twYW1dID0gIlBBTV9DQVA9eWVzLFBBTV9DQVA9bm8sbGlicGFtIgotCi1FWFRSQV9PRU1BS0UgPSAiIFwKLSAgSU5ERU5UPSAgXAotICBsaWI9JyR7YmFzZWxpYn0nIFwKLSAgUkFJU0VfU0VURkNBUD1ubyBcCi0gIERZTkFNSUM9eWVzIFwKLSAgQlVJTERfR1BFUkY9eWVzIFwKLSIKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTV9IRUFERVJTPSR7U1RBR0lOR19JTkNESVJ9IgotCi0jIHRoZXNlIGFyZSBwcmVzZW50IGluIHRoZSBsaWJjYXAgZGVmYXVsdHMsIHNvIGluY2x1ZGUgaW4gb3VyIENGTEFHUyB0b28KLUNGTEFHUyArPSAiLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLWRvX2NvbXBpbGUoKSB7Ci0Jb2VfcnVubWFrZSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIFwKLQkJJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0JCURFU1RESVI9IiR7RH0iIFwKLQkJcHJlZml4PSIke3ByZWZpeH0iIFwKLQkJU0JJTkRJUj0iJHtzYmluZGlyfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBNb3ZlIHRoZSBsaWJyYXJ5IHRvIGJhc2VfbGliZGlyCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0KLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJbXYgJHtEfSR7bGliZGlyfS9saWJjYXAqICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9zZWN1cml0eSBdOyB0aGVuCi0JCQltdiAke0R9JHtsaWJkaXJ9L3NlY3VyaXR5ICR7RH0ke2Jhc2VfbGliZGlyfQotCQlmaQotCWZpCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vKi5zbyIKLQotIyBwYW0gZmlsZXMKLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjMyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3OGE1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4zMi5iYgpAQCAtMCwwICsxLDc3IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGdldHRpbmcvc2V0dGluZyBQT1NJWC4xZSBjYXBhYmlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vc2l0ZXMuZ29vZ2xlLmNvbS9zaXRlL2Z1bGx5Y2FwYWJsZS8iCisKKyMgbm8gc3BlY2lmaWMgR1BMIHZlcnNpb24gcmVxdWlyZWQKK0xJQ0VOU0UgPSAiQlNEIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlO21kNT0zZjg0ZmQ2ZjI5ZDQ1M2E1NjUxNGNiN2U0ZWFkMjVmMSIKKworREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9saWJzL3NlY3VyaXR5L2xpbnV4LXByaXZzLyR7QlBOfTIvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWVuc3VyZS10aGUtWEFUVFJfTkFNRV9DQVBTLWlzLWRlZmluZWQtd2hlbi1pdC1pcy11c2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi10ZXN0cy1kby1ub3QtcnVuLXRhcmdldC1leGVjdXRhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWRvLW5vdC1zdGF0aWNhbGx5LWxpbmstYS10ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjc0MTYxMTljOWZkY2ZkMGU4ZGQxOTBhNDMyYzY2OGU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwMDVlM2QyMjdmMjM0MGFkMWUzMzYwZWY4YjY5ZDE1ZTNjNzJhMjljMDlmNDg5NGQ3YWFjMDM4YmQyNmUyYmUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzL3NlY3VyaXR5L2xpbnV4LXByaXZzLyR7QlBOfTIvIgorCitpbmhlcml0IGxpYl9wYWNrYWdlCisKKyMgZG8gTk9UIHBhc3MgdGFyZ2V0IGNmbGFncyB0byBob3N0IGNvbXBpbGF0aW9ucworIworZG9fY29uZmlndXJlKCkgeworCSMgbGliY2FwIHVzZXMgOj0gZm9yIGNvbXBpbGVycywgZm9ydHVuYXRlbHksIGl0IGdpdmVzIHVzIGEgaGludAorCSMgb24gd2hhdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCA/PQorCXNlZCAtZSAncyw6PSw/PSxnJyAtaSBNYWtlLlJ1bGVzCisJc2VkIC1lICdzLF5CVUlMRF9DRkxBR1MgPz0gJCguKkNGTEFHUyksQlVJTERfQ0ZMQUdTIDo9ICQoQlVJTERfQ0ZMQUdTKSwnIC1pIE1ha2UuUnVsZXMKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIgorCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiUEFNX0NBUD15ZXMsUEFNX0NBUD1ubyxsaWJwYW0iCisKK0VYVFJBX09FTUFLRSA9ICIgXAorICBJTkRFTlQ9ICBcCisgIGxpYj0nJHtiYXNlbGlifScgXAorICBSQUlTRV9TRVRGQ0FQPW5vIFwKKyAgRFlOQU1JQz15ZXMgXAorICBCVUlMRF9HUEVSRj15ZXMgXAorIgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNX0hFQURFUlM9JHtTVEFHSU5HX0lOQ0RJUn0iCisKKyMgdGhlc2UgYXJlIHByZXNlbnQgaW4gdGhlIGxpYmNhcCBkZWZhdWx0cywgc28gaW5jbHVkZSBpbiBvdXIgQ0ZMQUdTIHRvbworQ0ZMQUdTICs9ICItRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKKworZG9fY29tcGlsZSgpIHsKKwlvZV9ydW5tYWtlICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgXAorCQkke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKwkJREVTVERJUj0iJHtEfSIgXAorCQlwcmVmaXg9IiR7cHJlZml4fSIgXAorCQlTQklORElSPSIke3NiaW5kaXJ9IgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1vdmUgdGhlIGxpYnJhcnkgdG8gYmFzZV9saWJkaXIKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfQorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQltdiAke0R9JHtsaWJkaXJ9L2xpYmNhcCogJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICAgICAgaWYgWyAtZCAke0R9JHtsaWJkaXJ9L3NlY3VyaXR5IF07IHRoZW4KKwkJCW12ICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgJHtEfSR7YmFzZV9saWJkaXJ9CisJCWZpCisJZmkKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvIgorCisjIHBhbSBmaWxlcworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNjQxN2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZICA9ICJDaGVjayAtIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgY29kZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGliY2hlY2suZ2l0aHViLmlvL2NoZWNrLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUxJQ0VOU0UgID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59L2NoZWNrL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2NoZWNrLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub3QtZWNoby1jb21waWxlci1pbmZvLXRvLWNoZWNrX3N0ZGludC5oLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjJjNzMwYzQwYjA4NDgyZWFlYjEwMTMyNTE3OTcwNTkzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0MzM2YjMxNDQ3YWNjN2UzMjY2ODU0ZjczZWMxODhjZGIxNTU1NGQwZWRkNDQ3Mzk2MzFkYTE3NGE1Njk5MDkiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmNoZWNrL2NoZWNrL3JlbGVhc2VzLyIKLQotUyA9ICIke1dPUktESVJ9L2NoZWNrLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdGV4aW5mbwotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9BV0tfUEFUSD0ke2JpbmRpcn0vZ2F3ayIKLQotUlJFUExBQ0VTXyR7UE59ID0gImNoZWNrICg8PSAwLjkuNSkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgImNoZWNrbWsiCi0KLUZJTEVTX2NoZWNrbWsgPSAiJHtiaW5kaXJ9L2NoZWNrbWsiCi0KLVJERVBFTkRTX2NoZWNrbWsgPSAiZ2F3ayIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjE0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODhmMDA5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjE0LjAuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSAgPSAiQ2hlY2sgLSB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGNvZGUiCitIT01FUEFHRSA9ICJodHRwczovL2xpYmNoZWNrLmdpdGh1Yi5pby9jaGVjay8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFICA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS9jaGVjay9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9jaGVjay0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbm90LWVjaG8tY29tcGlsZXItaW5mby10by1jaGVja19zdGRpbnQuaC5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNzBlODJhNDQ1YmU2MDI2MDQwMjY3YTVlMTFjYzk0YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDBmMGNhMWJlNjViNzAyMzhiMzJmOGU5ZmU1ZDM2ZGMyZmJmN2E3NTliN2VkZjI4ZTc1MzIzYTdkNzRmMzBiIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJjaGVjay9jaGVjay9yZWxlYXNlcy8iCisKK1MgPSAiJHtXT1JLRElSfS9jaGVjay0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHRleGluZm8KKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfQVdLX1BBVEg9JHtiaW5kaXJ9L2dhd2siCisKK1JSRVBMQUNFU18ke1BOfSA9ICJjaGVjayAoPD0gMC45LjUpIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICJjaGVja21rIgorCitGSUxFU19jaGVja21rID0gIiR7YmluZGlyfS9jaGVja21rIgorCitSREVQRU5EU19jaGVja21rID0gImdhd2siCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXYvZGV0ZXJtaW5pc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2L2RldGVybWluaXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTYwNzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2L2RldGVybWluaXNtLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK1RoZSBvcmRlciBvZiBkaWN0IHZhbHVlcyBpcyBub3QgZGV0ZXJtaW5pc3RpYyBsZWFkaW5nIHRvIGRpZmZlcmluZyBoZWFkZXIgZmlsZSBnZW5lcmF0aW9uLgorU29ydCB0byByZW1vdmUgdGhpcyBpbmNvbnNpc3RlbmN5LgorCitSUCAyMDIwLzIvNworCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogYS9saWJldmRldi9tYWtlLWV2ZW50LW5hbWVzLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS9saWJldmRldi9tYWtlLWV2ZW50LW5hbWVzLnB5CisrKysgYi9saWJldmRldi9tYWtlLWV2ZW50LW5hbWVzLnB5CitAQCAtNjcsMTAgKzY3LDEwIEBAIGRlZiBwcmludF9iaXRzKGJpdHMsIHByZWZpeCk6CisgCWlmICBub3QgaGFzYXR0cihiaXRzLCBwcmVmaXgpOgorIAkJcmV0dXJuCisgCXByaW50KCJzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0ICVzX21hcFslc19NQVggKyAxXSA9IHsiICUgKHByZWZpeCwgcHJlZml4LnVwcGVyKCkpKQorLQlmb3IgdmFsLCBuYW1lIGluIGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpOgorKwlmb3IgdmFsLCBuYW1lIGluIHNvcnRlZChsaXN0KGdldGF0dHIoYml0cywgcHJlZml4KS5pdGVtcygpKSk6CisgCQlwcmludCgiCVslc10gPSBcIiVzXCIsIiAlIChuYW1lLCBuYW1lKSkKKyAJaWYgcHJlZml4ID09ICJrZXkiOgorLQkJZm9yIHZhbCwgbmFtZSBpbiBsaXN0KGdldGF0dHIoYml0cywgImJ0biIpLml0ZW1zKCkpOgorKwkJZm9yIHZhbCwgbmFtZSBpbiBzb3J0ZWQobGlzdChnZXRhdHRyKGJpdHMsICJidG4iKS5pdGVtcygpKSk6CisgCQkJcHJpbnQoIglbJXNdID0gXCIlc1wiLCIgJSAobmFtZSwgbmFtZSkpCisgCXByaW50KCJ9OyIpCisgCXByaW50KCIiKQorQEAgLTExMSw3ICsxMTEsNyBAQCBkZWYgcHJpbnRfbG9va3VwKGJpdHMsIHByZWZpeCk6CisgCWlmIG5vdCBoYXNhdHRyKGJpdHMsIHByZWZpeCk6CisgCQlyZXR1cm4KKyAKKy0JbmFtZXMgPSBsaXN0KGdldGF0dHIoYml0cywgcHJlZml4KS5pdGVtcygpKQorKwluYW1lcyA9IHNvcnRlZChsaXN0KGdldGF0dHIoYml0cywgcHJlZml4KS5pdGVtcygpKSkKKyAJaWYgcHJlZml4ID09ICJidG4iOgorIAkJbmFtZXMgPSBuYW1lcyArIGJ0bl9hZGRpdGlvbmFsOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS44LjAuYmIKaW5kZXggODQyNzQ5OC4uMzUyM2RjMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjguMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiCkBAIC02LDggKzYsMTEgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2giCiBTUkNfVVJJW21kNXN1bV0gPSAiODc5NjMxMDgwYmUxODUyNjczN2UzM2I2M2Q4NDgwMzkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjBkM2NhZTRlZmQyNzdmNDg1YWJkZjhmMmE3YzQ2NTg4ZTUzOTk5OGI1YTA4YzJjNGQzNjgyMTgzNzlkNDIxMSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmV2ZGV2LSg/UDxwdmVyPihcZCtcLikrKD8hOTBcZCspXGQrKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvMDAwMS10ZXN0LXJlZ3Jlc3NfZG5zLmMtcGF0Y2gtb3V0LXRlc3RzLXRoYXQtcmVxdWlyZS1hLXdvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA1MTUzZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvMDAwMS10ZXN0LXJlZ3Jlc3NfZG5zLmMtcGF0Y2gtb3V0LXRlc3RzLXRoYXQtcmVxdWlyZS1hLXdvLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gN2MxNzk2N2I4ZmQyZDE4Yjc0YTg5MzRmZDliYjgyMTJlYmQ2YTI3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA5IEphbiAyMDIwIDEzOjIyOjQ2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3QvcmVncmVzc19kbnMuYzogcGF0Y2ggb3V0IHRlc3RzIHRoYXQgcmVxdWlyZSBhIHdvcmtpbmcKKyBETlMKKworVGhpcyBpcyBub3QgZ3VhcmFudGVlZCBmb3IgcHRlc3RzIHVuZGVyIHFlbXUsIGFuZCBpbiB0aGUgYWJzZW5jZQorb2YgYSBETlMgdGhhdCBjYW4gcmVhY2ggdG8gdGhlIGludGVybmV0LCB0aGVzZSB0ZXN0cyBmYWlsLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3QvcmVncmVzc19kbnMuYyB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9yZWdyZXNzX2Rucy5jIGIvdGVzdC9yZWdyZXNzX2Rucy5jCitpbmRleCBkMjA4NGI3Li5hMWE4ZjNiIDEwMDY0NAorLS0tIGEvdGVzdC9yZWdyZXNzX2Rucy5jCisrKysgYi90ZXN0L3JlZ3Jlc3NfZG5zLmMKK0BAIC0yMzk0LDggKzIzOTQsNiBAQCBzdHJ1Y3QgdGVzdGNhc2VfdCBkbnNfdGVzdGNhc2VzW10gPSB7CisgCXsgInJlaXNzdWVfZGlzYWJsZV93aGVuX2luYWN0aXZlIiwgZG5zX3JlaXNzdWVfZGlzYWJsZV93aGVuX2luYWN0aXZlX3Rlc3QsCisgCSAgVFRfRk9SS3xUVF9ORUVEX0JBU0V8VFRfTk9fTE9HUywgJmJhc2ljX3NldHVwLCBOVUxMIH0sCisgCXsgImluZmxpZ2h0IiwgZG5zX2luZmxpZ2h0X3Rlc3QsIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKy0JeyAiYnVmZmVyZXZlbnRfY29ubmVjdF9ob3N0bmFtZSIsIHRlc3RfYnVmZmVyZXZlbnRfY29ubmVjdF9ob3N0bmFtZSwKKy0JICBUVF9GT1JLfFRUX05FRURfQkFTRSwgJmJhc2ljX3NldHVwLCBOVUxMIH0sCisgI2lmZGVmIEVWRU5UX19IQVZFX1NFVFJMSU1JVAorIAl7ICJidWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lX2VtZmlsZSIsIHRlc3RfYnVmZmVyZXZlbnRfY29ubmVjdF9ob3N0bmFtZSwKKyAJICBUVF9GT1JLfFRUX05FRURfQkFTRSwgJmJhc2ljX3NldHVwLCAoY2hhciopImVtZmlsZSIgfSwKK0BAIC0yNDA1LDggKzI0MDMsNiBAQCBzdHJ1Y3QgdGVzdGNhc2VfdCBkbnNfdGVzdGNhc2VzW10gPSB7CisgCXsgImRpc2FibGVfd2hlbl9pbmFjdGl2ZV9ub19ucyIsIGRuc19kaXNhYmxlX3doZW5faW5hY3RpdmVfbm9fbnNfdGVzdCwKKyAJICBUVF9GT1JLfFRUX05FRURfQkFTRXxUVF9OT19MT0dTLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKyAKKy0JeyAiaW5pdGlhbGl6ZV9uYW1lc2VydmVycyIsIGRuc19pbml0aWFsaXplX25hbWVzZXJ2ZXJzX3Rlc3QsCistCSAgVFRfRk9SS3xUVF9ORUVEX0JBU0UsICZiYXNpY19zZXR1cCwgTlVMTCB9LAorICNpZm5kZWYgX1dJTjMyCisgCXsgIm5hbWVzZXJ2ZXJzX25vX2RlZmF1bHQiLCBkbnNfbmFtZXNlcnZlcnNfbm9fZGVmYXVsdF90ZXN0LAorIAkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjExLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuMTEuYmIKaW5kZXggOGM3YzQ5ZS4uZmIxODZlYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuMTEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuMTEuYmIKQEAgLTYsMTEgKzYsMTEgQEAKIExJQ0VOU0UgPSAiQlNEICYgTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTdmMjA1NzRjMGIxNTRkMTIyMzZkNWZiZTk2NGY1NDkiCiAKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwczovL2dpdGh1Yi5jb20vbGliZXZlbnQvbGliZXZlbnQvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke1BWfS1zdGFibGUvJHtCUH0tc3RhYmxlLnRhci5neiBcCi0gICAgZmlsZTovL01ha2VmaWxlLW1pc3NpbmctdGVzdC1kaXIucGF0Y2ggXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgorU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZXZlbnQvbGliZXZlbnQvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke1BWfS1zdGFibGUvJHtCUH0tc3RhYmxlLnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1taXNzaW5nLXRlc3QtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI3ZjM1Y2ZlNjliODJkODc5MTExZWMwZDdiN2IxYzUzMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNjViYWM2MjAyZWE4YzU2MDlmZDVjN2U0ODBlNmQyNWRlNDY3ZWExOTE3YzA4MjkwYzUyMTc1MmYxNDcyODNkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgtcGFydDIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI1YjdkNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgtcGFydDIucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorQWRkcmVzcyBwbGF0Zm9ybXMgd2l0aCBubyBfX2ludDEyOC4KKworRml4ZXMgcmVtYWluaW5nIHBpZWNlcyBmcm9tCitodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvNjY2MzA0N2Y1NmMyOTMyYTZiMTBhNzkwZjRhYzY2NjZkZDE4MTMyNgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMub3JnCTIwMTktMTItMDUgMTQ6NDg6MzMuMTQwNTc5NDMxIC0wODAwCisrKysgYS9zcmMvcG93ZXJwYy9mZmlfbGludXg2NC5jCTIwMTktMTItMDUgMTQ6NTM6NTguODI3MjQ0NDk1IC0wODAwCitAQCAtNjgwLDkgKzY4MCw5IEBAIGZmaV9wcmVwX2FyZ3M2NCAoZXh0ZW5kZWRfY2lmICplY2lmLCB1bnMKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlY2FyZ19jb3VudCA8IE5VTV9WRUNfQVJHX1JFR0lTVEVSUzY0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBpIDwgbmZpeGVkYXJncykKKy0gICAgICAgICAgICAgICAgICAgICAgICAqdmVjX2Jhc2UuZjEyOCsrID0gKmFyZy5mMTI4Kys7CisrCQkgICAgICAgIG1lbWNweSAodmVjX2Jhc2UuZjEyOCsrLCBhcmcuZjEyOCwgc2l6ZW9mIChmbG9hdDEyOCkpOworICAgICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgKm5leHRfYXJnLmYxMjggPSAqYXJnLmYxMjgrKzsKKysJCSAgICAgICAgbWVtY3B5IChuZXh0X2FyZy5mMTI4LCBhcmcuZjEyOCsrLCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK25leHRfYXJnLmYxMjggPT0gZ3ByX2VuZC5mMTI4KQorICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfYXJnLmYxMjggPSByZXN0LmYxMjg7CisgICAgICAgICAgICAgICAgICAgICAgIHZlY2FyZ19jb3VudCsrOworQEAgLTk4Niw5ICs5ODYsOSBAQCBmZmlfY2xvc3VyZV9oZWxwZXJfTElOVVg2NCAoZmZpX2NpZiAqY2lmCisgICAgICAgICAgICAgICAgICAgZG8KKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB2ZWMgPCBlbmRfcHZlYyAmJiBpIDwgbmZpeGVkYXJncykKKy0gICAgICAgICAgICAgICAgICAgICAgICAqdG8uZjEyOCA9ICpwdmVjKys7CisrCQkgICAgICAgIG1lbWNweSAodG8uZjEyOCwgcHZlYysrLCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAqdG8uZjEyOCA9ICpmcm9tLmYxMjg7CisrCQkgICAgICAgIG1lbWNweSAodG8uZjEyOCwgZnJvbS5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICAgICAgICAgIHRvLmYxMjgrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgZnJvbS5mMTI4Kys7CisgICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTMyYTUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDY4ZjQ1YjkwNDlkZmZiNTRmNWEyOWEzYTQ5NWFiM2RmY2YwMTA2MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KK0RhdGU6IEZyaSwgMjkgTm92IDIwMTkgMDc6MDA6MzUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkcmVzcyBwbGF0Zm9ybXMgd2l0aCBubyBfX2ludDEyOC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvY29tbWl0LzY2NjMwNDdmNTZjMjkzMmE2YjEwYTc5MGY0YWM2NjY2ZGQxODEzMjZdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYyBiL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMKK2luZGV4IGRlMGQwMzMuLjczNjQ3NzAgMTAwNjQ0CistLS0gYS9zcmMvcG93ZXJwYy9mZmlfbGludXg2NC5jCisrKysgYi9zcmMvcG93ZXJwYy9mZmlfbGludXg2NC5jCitAQCAtNTQ3LDkgKzU0Nyw5IEBAIGZmaV9wcmVwX2FyZ3M2NCAoZXh0ZW5kZWRfY2lmICplY2lmLCB1bnNpZ25lZCBsb25nICpjb25zdCBzdGFjaykKKyAgICAgICAgICAgICAgIGlmIChuZXh0X2FyZy51bCA9PSBncHJfZW5kLnVsKQorICAgICAgICAgICAgICAgICBuZXh0X2FyZy51bCA9IHJlc3QudWw7CisgICAgICAgICAgICAgICBpZiAodmVjYXJnX2NvdW50IDwgTlVNX1ZFQ19BUkdfUkVHSVNURVJTNjQgJiYgaSA8IG5maXhlZGFyZ3MpCistICAgICAgICAgICAgICAgICp2ZWNfYmFzZS5mMTI4KysgPSAqKnBfYXJndi5mMTI4OworKwkJbWVtY3B5ICh2ZWNfYmFzZS5mMTI4KyssICpwX2FyZ3YuZjEyOCwgc2l6ZW9mIChmbG9hdDEyOCkpOworICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAqbmV4dF9hcmcuZjEyOCA9ICoqcF9hcmd2LmYxMjg7CisrCQltZW1jcHkgKG5leHRfYXJnLmYxMjgsICpwX2FyZ3YuZjEyOCwgc2l6ZW9mIChmbG9hdDEyOCkpOworICAgICAgICAgICAgICAgaWYgKCsrbmV4dF9hcmcuZjEyOCA9PSBncHJfZW5kLmYxMjgpCisgICAgICAgICAgICAgICAgIG5leHRfYXJnLmYxMjggPSByZXN0LmYxMjg7CisgICAgICAgICAgICAgICB2ZWNhcmdfY291bnQrKzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2gKaW5kZXggMDBhMzBhMy4uMzk3MTk0YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2gKQEAgLTEsMTIgKzEsMTEgQEAKLUZyb20gNDE0OWE3NjI3YTk5ODczMWNjMjQ2ZDNmNThhMzY4MDg3NDVkMDRjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTRlMmU3NDY4MmRiM2JmY2YwNTc2ODhmNzM4ZmRkODQyYTAyZmYyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENhcmwgSHVyZCA8Y2FybEBDYXJscy1NYWNCb29rLVByby5sb2NhbD4KIERhdGU6IFdlZCwgMTggSnVsIDIwMTggMDk6MDQ6MzIgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gRml4ZWQgbWlzc2VkICNpZm5kZWYgZm9yIF9fbWlwc19zb2Z0X2Zsb2F0CiAKIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcHVsbC80NDJdCi0KKy0tLQogIHNyYy9taXBzL28zMi5TIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKIApAQCAtMjYsNiArMjUsMyBAQAogIDE6CiAgCSMgcHJlcGFyZSBhcmd1bWVudHMgZm9yIGZmaV9jbG9zdXJlX21pcHNfaW5uZXJfTzMyCiAgCVJFR19MCWEwLCA0KCQxNSkJICMgY2lmIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZTZlNDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1mZmlfcG93ZXJwYy5oLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtcG93ZXJwYzcucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSBkZTkzYWRmYjZmNDgxMDA5NDZiYmEyYzNhYmFkMmE3N2EwY2ZkZTBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDI0IE5vdiAyMDE5IDA5OjUyOjAxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGZmaV9wb3dlcnBjLmg6IGZpeCBidWlsZCBmYWlsdXJlIHdpdGggcG93ZXJwYzcKKworVGhpcyBpcyBhIHBhdGNoIHB1bGxlZCBkb3duIGZyb20gdGhlIGZvbGxvd2luZzoKK2h0dHBzOi8vZ2l0aHViLmNvbS9idWlsZHJvb3QvYnVpbGRyb290L2Jsb2IvNzg5MjZmNjEwYjE0MTFiMDM0NjQxNTI0NzJmZDQzMDAxMmRlYjlhYy9wYWNrYWdlL2xpYmZmaS8wMDA0LWZmaV9wb3dlcnBjLmgtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1wb3dlcnBjNy5wYXRjaAorCitUaGlzIGlzc3VlIGlzIGJlaW5nIGhpdCBvbiBPcGVuQk1DIGNvZGUgd2hlbiBwdWxsaW5nIHRoZSBsYXRlc3QKK2xpYmZmaSB0YWcgYW5kIGJ1aWxkaW5nIG9uIGEgUDggcHBjNjRsZSBtYWNoaW5lLiBJIHZlcmlmaWVkIHRoaXMKK3BhdGNoIGZpeGVzIHRoZSBpc3N1ZSB3ZSBhcmUgc2VlaW5nLgorCitCZWxvdyBpcyB0aGUgb3JpZ2luYWwgY29tbWl0IG1lc3NhZ2U6CisKK1NpY25lIGNvbW1pdCA3M2RkNDNhZmM4YTQ0N2JhOThlYTAyZTlhYWQ0YzY4OThkYzc3ZmIwLCBidWlsZCBvbiBwb3dlcnBjNworZmFpbHMgb246CisKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvcG93ZXJwYy9mZmkuYzozMzowOgorLi4vc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaDo2MTo5OiBlcnJvcjogJ19GbG9hdDEyOCcgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldAorIHR5cGVkZWYgX0Zsb2F0MTI4IGZsb2F0MTI4OworICAgICAgICAgXn5+fn5+fn5+CisKK0ZpeCB0aGlzIGJ1aWxkIGZhaWx1cmUgYnkgY2hlY2tpbmcgZm9yIF9fSEFWRV9GTE9BVDEyOCBiZWZvcmUgdXNpbmcKK19GbG9hdDEyOCwgYXMgX0Zsb2F0MTI4IGlzIGVuYWJsZWQgb25seSBvbiBzcGVjaWZpYyBjb25kaXRpb25zLCBzZWUKK291dHB1dC9ob3N0L3Bvd2VycGM2NC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mbG9hdG4uaDoKKworIC8qIERlZmluZWQgdG8gMSBpZiB0aGUgY3VycmVudCBjb21waWxlciBpbnZvY2F0aW9uIHByb3ZpZGVzIGEKKyAgICBmbG9hdGluZy1wb2ludCB0eXBlIHdpdGggdGhlIElFRUUgNzU0IGJpbmFyeTEyOCBmb3JtYXQsIGFuZCB0aGlzIGdsaWJjCisgICAgaW5jbHVkZXMgY29ycmVzcG9uZGluZyAqZjEyOCBpbnRlcmZhY2VzIGZvciBpdC4gICovCisgI2lmIGRlZmluZWQgX0FSQ0hfUFdSOCAmJiBkZWZpbmVkIF9fTElUVExFX0VORElBTl9fICYmIChfQ0FMTF9FTEYgPT0gMikgXAorICAgICAmJiBkZWZpbmVkIF9fRkxPQVQxMjhfXyAmJiAhZGVmaW5lZCBfX05PX0xPTkdfRE9VQkxFX01BVEgKKyAjIGRlZmluZSBfX0hBVkVfRkxPQVQxMjggMQorICNlbHNlCisgIyBkZWZpbmUgX19IQVZFX0ZMT0FUMTI4IDAKKyAjZW5kaWYKKworRml4ZXM6CisgLSBodHRwOi8vYXV0b2J1aWxkLmJ1aWxkcm9vdC5vcmcvcmVzdWx0cy81YzlkZDhmYjNiNmExMjg4ODJiNjI1MGYxOTdjODAyMzJkOGEzYjUzCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9wdWxsLzU2MV0KK1NpZ25lZC1vZmYtYnk6IEZhYnJpY2UgRm9udGFpbmUgPGZvbnRhaW5lLmZhYnJpY2VAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQW5kcmV3IEdlaXNzbGVyIDxnZWlzc29uYXRvckB5YWhvby5jb20+CistLS0KKyBzcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaCBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK2luZGV4IDhlMmYyZjAuLjk2MGE1YzQgMTAwNjQ0CistLS0gYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oCisrKysgYi9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oCitAQCAtNTcsNyArNTcsNyBAQCB0eXBlZGVmIHVuaW9uCisgICBkb3VibGUgZDsKKyB9IGZmaV9kYmxmbDsKKworLSNpZiBkZWZpbmVkKF9fRkxPQVQxMjhfVFlQRV9fKQorKyNpZiBkZWZpbmVkKF9fRkxPQVQxMjhfVFlQRV9fKSAmJiBkZWZpbmVkKF9fSEFWRV9GTE9BVDEyOCkKKyB0eXBlZGVmIF9GbG9hdDEyOCBmbG9hdDEyODsKKyAjZWxpZiBkZWZpbmVkKF9fRkxPQVQxMjhfXykKKyB0eXBlZGVmIF9fZmxvYXQxMjggZmxvYXQxMjg7CistLQorMi4yMS4wIChBcHBsZSBHaXQtMTIyKQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1wb3dlcnBjLWZpeC1idWlsZC1mYWlsdXJlLW9uLXBvd2VyNy1hbmQtb2xkZXItNTMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtcG93ZXJwYy1maXgtYnVpbGQtZmFpbHVyZS1vbi1wb3dlcjctYW5kLW9sZGVyLTUzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTdhZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtcG93ZXJwYy1maXgtYnVpbGQtZmFpbHVyZS1vbi1wb3dlcjctYW5kLW9sZGVyLTUzMi5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDRkYzZjYzk2MTMwMGI5ZGVmZmI2NDhiMTIzNzM5MGE1YmVhMWM2ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZXJnZWkgVHJvZmltb3ZpY2ggPHNseWZveEBnZW50b28ub3JnPgorRGF0ZTogVGh1LCAyOCBOb3YgMjAxOSAxMjo0Mjo0MSArMDAwMAorU3ViamVjdDogW1BBVENIXSBwb3dlcnBjOiBmaXggYnVpbGQgZmFpbHVyZSBvbiBwb3dlcjcgYW5kIG9sZGVyICgjNTMyKQorCitCdWlsZCBmYWlsdXJlIGxvb2tzIGFzOgorYGBgCitsaWJ0b29sOiBjb21waWxlOiAgcG93ZXJwYy11bmtub3duLWxpbnV4LWdudS1nY2MgXAorICAgIC1PMiAtbWNwdT1wb3dlcnBjIC1tdHVuZT1wb3dlcnBjIC1waXBlIC4uLiAtYyBzcmMvcG93ZXJwYy9mZmkuYyAuLi4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBzcmMvcG93ZXJwYy9mZmkuYzozMzoKK3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmg6NjU6OTogZXJyb3I6ICdfX2ludDEyOCcgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldAorICAgNjUgfCB0eXBlZGVmIF9faW50MTI4IGZsb2F0MTI4OworICAgICAgfCAgICAgICAgIF5+fn5+fn5+CitgYGAKKworVGhlIGZpeCBhdm9pZHMgdXNpbmcgX19pbnQxMjggaW4gZmF2b3VyIG9mIGFsaWduZWQgY2hhclsxNl0uCisKK0Nsb3NlczogaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvaXNzdWVzLzUzMQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvY29tbWl0LzAxYTc1ZWQ3NmVhN2U1N2YxYjdhNWMxODNlMmIxZTg5MGU2YWEwZmRdCitTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgVHJvZmltb3ZpY2ggPHNseWZveEBnZW50b28ub3JnPgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaCBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK2luZGV4IDVlZTJhNzAuLjhlMmYyZjAgMTAwNjQ0CistLS0gYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oCisrKysgYi9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oCitAQCAtNjIsNyArNjIsNyBAQCB0eXBlZGVmIF9GbG9hdDEyOCBmbG9hdDEyODsKKyAjZWxpZiBkZWZpbmVkKF9fRkxPQVQxMjhfXykKKyB0eXBlZGVmIF9fZmxvYXQxMjggZmxvYXQxMjg7CisgI2Vsc2UKKy10eXBlZGVmIF9faW50MTI4IGZsb2F0MTI4OworK3R5cGVkZWYgY2hhciBmbG9hdDEyOFsxNl0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsKKyAjZW5kaWYKKyAKKyB2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfU1lTViAodm9pZCk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaAppbmRleCA4NmE3ZmM5Li42MmRhYWY0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDMwNjcxOTM2OWEwZDM2MDhiNGZmMjczN2RlNzRhZTI4NDc4OGExNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVGh1LCA0IEZlYiAyMDE2IDE2OjIyOjUwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmZmaTogZW5zdXJlIHN5c3Jvb3QgcGF0aHMgYXJlIG5vdCBpbiBsaWJmZmkucGMKKwogbGliZmZpJ3MgY29uZmlndXJlIGFzc3VtZXMgdGhhdCBjcm9zcy1jb21waWxlZCBidWlsZHMgYXJlIGNvbXBsaWNhdGVkIGFuZAogaW50cm9kdWNlcyBjb252b2x1dGVkIHBhdGggbWFuaXB1bGF0aW9uIGludm9sdmluZyBnY2Mgc2VhcmNoIHBhdGhzIHRvIHRoZQogaW5zdGFsbCBwYXRocywgcmVzdWx0aW5nIGluIHBhdGhzIGxpa2UgLUwvdXNyL2xpYi8uLi9saWIvIGFwcGVhcmluZyBpbgpAQCAtMTEsOSArMTYsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiNzY0MzY4Li5kNTFjZTkxIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNTAsNyArMzUwLDcgQEAgQUNfQVJHX0VOQUJMRShtdWx0aS1vcy1kaXJlY3RvcnksCitAQCAtMzU0LDcgKzM1NCw3IEBAIEFDX0FSR19FTkFCTEUobXVsdGktb3MtZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgIyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgZXZlciB1c2VkIHdoZW4gd2UgY3Jvc3MtYnVpbGQgdG8gWDg2X1dJTjMyLgogICMgQW5kIHdlIG9ubHkgc3VwcG9ydCB0aGlzIHdpdGggR0NDLCBzby4uLgpAQCAtMjEsNCArMzIsNCBAQAogK2lmIGZhbHNlOyB0aGVuCiAgICBpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgogICAgICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCi0gICAgIHRvb2xleGVjZGlyPSIke2V4ZWNfcHJlZml4fSIvJyQodGFyZ2V0X2FsaWFzKScKKyAgICAgdG9vbGV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9Jy8nJCh0YXJnZXRfYWxpYXMpJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTViZWI5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjMuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJBIHBvcnRhYmxlIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNld2FyZS5vcmcvbGliZmZpLyIKK0RFU0NSSVBUSU9OID0gIlRoZSBgbGliZmZpJyBsaWJyYXJ5IHByb3ZpZGVzIGEgcG9ydGFibGUsIGhpZ2ggbGV2ZWwgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIHRvIHZhcmlvdXMgY2FsbGluZyBcCitjb252ZW50aW9ucy4gIFRoaXMgYWxsb3dzIGEgcHJvZ3JhbW1lciB0byBjYWxsIGFueSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgYSBjYWxsIGludGVyZmFjZSBkZXNjcmlwdGlvbiBhdCBydW4gXAordGltZS4gRkZJIHN0YW5kcyBmb3IgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UuICBBIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlIGlzIHRoZSBwb3B1bGFyIG5hbWUgZm9yIHRoZSBcCitpbnRlcmZhY2UgdGhhdCBhbGxvd3MgY29kZSB3cml0dGVuIGluIG9uZSBsYW5ndWFnZSB0byBjYWxsIGNvZGUgd3JpdHRlbiBpbiBhbm90aGVyIGxhbmd1YWdlLiAgVGhlIGBsaWJmZmknIFwKK2xpYnJhcnkgcmVhbGx5IG9ubHkgcHJvdmlkZXMgdGhlIGxvd2VzdCwgbWFjaGluZSBkZXBlbmRlbnQgbGF5ZXIgb2YgYSBmdWxseSBmZWF0dXJlZCBmb3JlaWduIGZ1bmN0aW9uIGludGVyZmFjZS4gIFwKK0EgbGF5ZXIgbXVzdCBleGlzdCBhYm92ZSBgbGliZmZpJyB0aGF0IGhhbmRsZXMgdHlwZSBjb252ZXJzaW9ucyBmb3IgdmFsdWVzIHBhc3NlZCBiZXR3ZWVuIHRoZSB0d28gbGFuZ3VhZ2VzLiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00OTIzODVmZTIyMTk1OTUyZjViOWIxOTc4NjhiYTI2OCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ub3Qtd2luMzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBvd2VycGMtZml4LWJ1aWxkLWZhaWx1cmUtb24tcG93ZXI3LWFuZC1vbGRlci01MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZmaV9wb3dlcnBjLmgtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1wb3dlcnBjNy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MzEzMjg5ZTMyZjFkMzhhOWRmNDc3MGIwMTRhMmNhNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MmZiYTc5MjI3MDNkZGZhN2EwMjhkNTEzYWMxNWE4NWM4ZDU0YzhkNjdmNTVmYTVhNDgwMjg4NWRjNjUyMDU2IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmZmaS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtYnVpbGRkaXIiCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgoraW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBtdWx0aWxpYl9oZWFkZXIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGZmaS5oCit9CisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmZmaS0ke1BWfSIKKworIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCisjIGFzc2VtYmx5CitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjN+cmMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuM35yYzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhY2I2OTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuM35yYzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIkEgcG9ydGFibGUgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvIgotREVTQ1JJUFRJT04gPSAiVGhlIGBsaWJmZmknIGxpYnJhcnkgcHJvdmlkZXMgYSBwb3J0YWJsZSwgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8gdmFyaW91cyBjYWxsaW5nIFwKLWNvbnZlbnRpb25zLiAgVGhpcyBhbGxvd3MgYSBwcm9ncmFtbWVyIHRvIGNhbGwgYW55IGZ1bmN0aW9uIHNwZWNpZmllZCBieSBhIGNhbGwgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGF0IHJ1biBcCi10aW1lLiBGRkkgc3RhbmRzIGZvciBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZS4gIEEgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgaXMgdGhlIHBvcHVsYXIgbmFtZSBmb3IgdGhlIFwKLWludGVyZmFjZSB0aGF0IGFsbG93cyBjb2RlIHdyaXR0ZW4gaW4gb25lIGxhbmd1YWdlIHRvIGNhbGwgY29kZSB3cml0dGVuIGluIGFub3RoZXIgbGFuZ3VhZ2UuICBUaGUgYGxpYmZmaScgXAotbGlicmFyeSByZWFsbHkgb25seSBwcm92aWRlcyB0aGUgbG93ZXN0LCBtYWNoaW5lIGRlcGVuZGVudCBsYXllciBvZiBhIGZ1bGx5IGZlYXR1cmVkIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlLiAgXAotQSBsYXllciBtdXN0IGV4aXN0IGFib3ZlIGBsaWJmZmknIHRoYXQgaGFuZGxlcyB0eXBlIGNvbnZlcnNpb25zIGZvciB2YWx1ZXMgcGFzc2VkIGJldHdlZW4gdGhlIHR3byBsYW5ndWFnZXMuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM2MTBiYjE3NjgzYTAwODllZDY0MDU1NDE2YjJhZTFiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzL2Rvd25sb2FkL3YzLjMtcmMwL2xpYmZmaS0zLjMtcmMwLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub3Qtd2luMzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZDJhODJhNzhmYWYxMGE1ZTUzYzI3ZDk4NmU4ZjA0ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDNkNjdhYWJmMWMwNTE1Nzg1NWVhMmIxZDk5NTAyNjNmYjYzMTY1MzZjOGMzMzNmNWI5YWIxZWIyZjIwZWNmIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmZmaS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1idWlsZGRpciIKLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIG11bHRpbGliX2hlYWRlcgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LTMuMy1yYzAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBmZmkuaAotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJmZmktJHtQVn0iCi0KLSMgRG9lc24ndCBjb21waWxlIGluIE1JUFMxNmUgbW9kZSBkdWUgdG8gdXNlIG9mIGhhbmQtd3JpdHRlbgotIyBhc3NlbWJseQotTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjMuMS5iYgppbmRleCA5MThmZTNlLi42M2FlNzg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjEuYmIKQEAgLTE5LDcgKzE5LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjMTVlY2QyYzkzMTdlMmMzODVjZDNmMDQ2ZDBiNjFiYSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NmIxMjQ0YmRlNDFjYTBlZWYwMzMyY2ZiNWM2N2JiMTY3MjVkZmQxMDIxMjhmM2U2Zjc0ZmFkYzEzYTFjZmU0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIG1pbWUgbWltZS14ZGcKIEFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWd0az0zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZGV0ZXJtaW5pc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDBiOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZGV0ZXJtaW5pc20ucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorZ251dGxzIGRldGVjdHMgb3VyIG91dGVyIGdpdCB0cmVlcyBhbmQgaW5qZWN0cyB0aGF0IHJldmlzaW9uIGludG8gaXRzIG9iamVjdHMuCitUaGF0IGlzbid0IGRldGVybWluaXN0aWMgc28gc3RvcCBpdC4gQWxzbyBlbnN1cmUgd2UncmUgbm90IG1hcmtlZCBhcyBhIGRldmVsb3BtZW50CitidWlsZCBhcyBpdHMgZ2l0IGRldGVjdGlvbiBpcyBmYXVsdHkuCisKK1JQIDIwMjAvMi82CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKKworSW5kZXg6IGxpYmdjcnlwdC0xLjguNS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJnY3J5cHQtMS44LjUub3JpZy9jb25maWd1cmUuYWMKKysrKyBsaWJnY3J5cHQtMS44LjUvY29uZmlndXJlLmFjCitAQCAtNDUsNyArNDUsNyBAQCBtNF9kZWZpbmUoW215bTRfcmV2aXNpb25fZGVjXSwKKyBtNF9kZWZpbmUoW215bTRfYmV0YXN0cmluZ10sCisgICAgICAgICAgIG00X2VzeXNjbWRfcyhbZ2l0IGRlc2NyaWJlIC0tbWF0Y2ggJ2xpYmdjcnlwdC1bMC05XS4qWzAtOV0nIC0tbG9uZ3xcCisgICAgICAgICAgICAgICAgICAgICAgICAgYXdrIC1GLSAnJDMhPTB7cHJpbnQiLWJldGEiJDN9J10pKQorLW00X2RlZmluZShbbXltNF9pc2dpdF0sbTRfaWYobXltNF9iZXRhc3RyaW5nLFtdLFtub10sW3llc10pKQorK200X2RlZmluZShbbXltNF9pc2dpdF0sW25vXSkKKyBtNF9kZWZpbmUoW215bTRfZnVsbF92ZXJzaW9uXSxbbXltNF92ZXJzaW9uW11teW00X2JldGFzdHJpbmddKQorIAorIEFDX0lOSVQoW2xpYmdjcnlwdF0sW215bTRfZnVsbF92ZXJzaW9uXSxbaHR0cDovL2J1Z3MuZ251cGcub3JnXSkKK0BAIC0yNTc1LDcgKzI1NzUsNyBAQCBBTV9DT05ESVRJT05BTChbQlVJTERfRE9DXSwgW3Rlc3QgIngkYnVpCisgIworICMgUHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQuCisgIworLUJVSUxEX1JFVklTSU9OPSJteW00X3JldmlzaW9uIgorK0JVSUxEX1JFVklTSU9OPSJOb25lIgorIEFDX1NVQlNUKEJVSUxEX1JFVklTSU9OKQorIEFDX0RFRklORV9VTlFVT1RFRChCVUlMRF9SRVZJU0lPTiwgIiRCVUlMRF9SRVZJU0lPTiIsCisgICAgICAgICAgICAgICAgICAgIFtHSVQgY29tbWl0IGlkIHJldmlzaW9uIHVzZWQgdG8gYnVpbGQgdGhpcyBwYWNrYWdlXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguNS5iYgppbmRleCAwNDc4NTU3Li40ZTBlYjBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC41LmJiCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVByZWZldGNoLUdDTS1sb29rLXVwLXRhYmxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFFUy1tb3ZlLWxvb2stdXAtdGFibGVzLXRvLS5kYXRhLXNlY3Rpb24tYW5kLXVuc2hhcmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy1HQ00tbW92ZS1sb29rLXVwLXRhYmxlLXRvLS5kYXRhLXNlY3Rpb24tYW5kLXVuc2hhcmUtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldGVybWluaXNtLnBhdGNoIFwKICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIzNDhjYzQ2MDFjYTM0MzA3ZmM2Y2Q2Yzk0NTQ2Nzc0MyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjRhMmE5NGNiNjM3ZWZmNWJkZWJiY2FmNDZmNGQ5NWM0ZjI1MjA2ZjQ1OTgwOTMzOWNkYWRhMGViNTc3YWMzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDEtRG8tbm90LWZhaWwtd2hlbi10ZXN0aW5nLWNvbmZpZy1zY3JpcHRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDEtRG8tbm90LWZhaWwtd2hlbi10ZXN0aW5nLWNvbmZpZy1zY3JpcHRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYWI0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1Eby1ub3QtZmFpbC13aGVuLXRlc3RpbmctY29uZmlnLXNjcmlwdHMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAxMzc4MDU4OTA5NTFiNmI1ODVjMWQyMzA5N2UwYTUxZThjN2E4YTUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI4IEZlYiAyMDIwIDA5OjE5OjU2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBmYWlsIHdoZW4gdGVzdGluZyBjb25maWcgc2NyaXB0cworCitJbiBwcmV2aW91cyB2ZXJzaW9ucyB0aGlzIHdhcyBub3QgYSBoYXJkIGEgZmFpbHVyZSwgYW5kIHNvIHdlbnQKK3Vubm90aWNlZC4gVGhlIHRlc3QgaXMgdW5zdWl0YWJsZSBmb3IgYnVpbGRpbmcgd2l0aCBzeXNyb290cyBhbnl3YXkgYXMgdGhlCitmYWlsdXJlIGlzIGR1ZSB0byB0aGF0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDkzMDM5NTQuLjc2MzA1NDAgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTM0NCw3ICszNDQsNiBAQCBncGctZXJyb3ItY29uZmlnOiBncGdydC1jb25maWcgZ3BnLWVycm9yLWNvbmZpZy1vbGQKKyAJZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAJICBlY2hvICJubyI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAJICBlY2hvICIqKiogIFBsZWFzZSByZXBvcnQgdG8gPGh0dHBzOi8vYnVncy5nbnVwZy5vcmc+IHdpdGggZ3BnLWVycm9yLWNvbmZpZy10ZXN0LmxvZyI7IFwKKy0JICBleGl0IDE7IFwKKyAJZmkKKyAJY3AgZ3BnLWVycm9yLWNvbmZpZy1vbGQgJEAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItMS4zNi1nYXdrNS1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MzZkMTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9kZXYuZ251cGcub3JnL1Q0NDU5XQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotRnJvbSA3ODY1MDQxYzc3ZjRmNzAwNTI4MmYxMGY5YjY2NjZiMTkwNzJmYmRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBNb24sIDE1IEFwciAyMDE5IDE1OjEwOjQ0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF3azogUHJlcGFyZSBmb3IgR2F3ayA1LjAuCi0KLSogc3JjL01ha2VmaWxlLmFtOiBVc2UgcGtnX25hbWVzcGFjZSAoaW5zdGVhZCBvZiBuYW1lc3BhY2UpLgotKiBzcmMvbWtlcnJub3MuYXdrOiBMaWtld2lzZS4KLSogbGFuZy9jbC9ta2VycmNvZGVzLmF3azogRG9uJ3QgZXNjYXBlICMgaW4gcmVnZXhwLgotKiBzcmMvbWtlcnJjb2Rlcy5hd2ssIHNyYy9ta2VycmNvZGVzMS5hd2ssIHNyYy9ta2VycmNvZGVzMi5hd2s6IERpdHRvLgotCi0tLQotCi1JbiBHYXdrIDUuMCwgcmVnZXhwIHJvdXRpbmVzIGFyZSByZXBsYWNlZCBieSBHbnVsaWIgaW1wbGVtZW50YXRpb24sCi13aGljaCBvbmx5IGFsbG93cyBlc2NhcGluZyBzcGVjaWZpYyBjaGFyYWN0ZXJzLgotCi1HbnVQRy1idWctaWQ6IDQ0NTkKLVJlcG9ydGVkLWJ5OiBNYXJpdXMgU2NoYW1zY2h1bGEKLVNpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotLS0tCi0gbGFuZy9jbC9ta2VycmNvZGVzLmF3ayB8ICAyICstCi0gc3JjL01ha2VmaWxlLmFtICAgICAgICB8ICAyICstCi0gc3JjL21rZXJyY29kZXMuYXdrICAgICB8ICAyICstCi0gc3JjL21rZXJyY29kZXMxLmF3ayAgICB8ICAyICstCi0gc3JjL21rZXJyY29kZXMyLmF3ayAgICB8ICAyICstCi0gc3JjL21rZXJybm9zLmF3ayAgICAgICB8ICAyICstCi0gc3JjL21rc3RydGFibGUuYXdrICAgICB8IDEwICsrKysrLS0tLS0KLSA3IGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi0tLS0gYS9sYW5nL2NsL21rZXJyY29kZXMuYXdrCi0rKysgYi9sYW5nL2NsL21rZXJyY29kZXMuYXdrCi1AQCAtMTIyLDcgKzEyMiw3IEBAIGhlYWRlciB7Ci0gfQotIAotICFoZWFkZXIgewotLSAgc3ViICgvXCMuKy8sICIiKTsKLSsgIHN1YiAoLyMuKy8sICIiKTsKLSAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCi0gCi0gICBpZiAoL14kLykKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjkzLDcgKzI5Myw3IEBAIGNvZGUtZnJvbS1lcnJuby5oOiBta2VycmNvZGVzJChFWEVFWFRfRk8KLSAKLSBlcnJub3Mtc3ltLmg6IE1ha2VmaWxlIG1rc3RydGFibGUuYXdrIGVycm5vcy5pbgotIAkkKEFXSykgLWYgJChzcmNkaXIpL21rc3RydGFibGUuYXdrIC12IHRleHRpZHg9MiAtdiBub2dldHRleHQ9MSBcCi0tCQktdiBwcmVmaXg9R1BHX0VSUl8gLXYgbmFtZXNwYWNlPWVycm5vc18gXAotKwkJLXYgcHJlZml4PUdQR19FUlJfIC12IHBrZ19uYW1lc3BhY2U9ZXJybm9zXyBcCi0gCQkkKHNyY2RpcikvZXJybm9zLmluID4kQAotIAotIAotLS0tIGEvc3JjL21rZXJyY29kZXMuYXdrCi0rKysgYi9zcmMvbWtlcnJjb2Rlcy5hd2sKLUBAIC04NSw3ICs4NSw3IEBAIGhlYWRlciB7Ci0gfQotIAotICFoZWFkZXIgewotLSAgc3ViICgvXCMuKy8sICIiKTsKLSsgIHN1YiAoLyMuKy8sICIiKTsKLSAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCi0gCi0gICBpZiAoL14kLykKLS0tLSBhL3NyYy9ta2VycmNvZGVzMS5hd2sKLSsrKyBiL3NyYy9ta2VycmNvZGVzMS5hd2sKLUBAIC04MSw3ICs4MSw3IEBAIGhlYWRlciB7Ci0gfQotIAotICFoZWFkZXIgewotLSAgc3ViICgvXCMuKy8sICIiKTsKLSsgIHN1YiAoLyMuKy8sICIiKTsKLSAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCi0gCi0gICBpZiAoL14kLykKLS0tLSBhL3NyYy9ta2VycmNvZGVzMi5hd2sKLSsrKyBiL3NyYy9ta2VycmNvZGVzMi5hd2sKLUBAIC05MSw3ICs5MSw3IEBAIGhlYWRlciB7Ci0gfQotIAotICFoZWFkZXIgewotLSAgc3ViICgvXCMuKy8sICIiKTsKLSsgIHN1YiAoLyMuKy8sICIiKTsKLSAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCi0gCi0gICBpZiAoL14kLykKLS0tLSBhL3NyYy9ta2Vycm5vcy5hd2sKLSsrKyBiL3NyYy9ta2Vycm5vcy5hd2sKLUBAIC04Myw3ICs4Myw3IEBAIGhlYWRlciB7Ci0gfQotIAotICFoZWFkZXIgewotLSAgc3ViICgvXCMuKy8sICIiKTsKLSsgIHN1YiAoLyMuKy8sICIiKTsKLSAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCi0gCi0gICBpZiAoL14kLykKLS0tLSBhL3NyYy9ta3N0cnRhYmxlLmF3awotKysrIGIvc3JjL21rc3RydGFibGUuYXdrCi1AQCAtNzcsNyArNzcsNyBAQAotICMKLSAjIFRoZSB2YXJpYWJsZSBwcmVmaXggY2FuIGJlIHVzZWQgdG8gcHJlcGVuZCBhIHN0cmluZyB0byBlYWNoIG1lc3NhZ2UuCi0gIwotLSMgVGhlIHZhcmlhYmxlIG5hbWVzcGFjZSBjYW4gYmUgdXNlZCB0byBwcmVwZW5kIGEgc3RyaW5nIHRvIGVhY2gKLSsjIFRoZSB2YXJpYWJsZSBwa2dfbmFtZXNwYWNlIGNhbiBiZSB1c2VkIHRvIHByZXBlbmQgYSBzdHJpbmcgdG8gZWFjaAotICMgdmFyaWFibGUgYW5kIG1hY3JvIG5hbWUuCi0gCi0gQkVHSU4gewotQEAgLTEwMiw3ICsxMDIsNyBAQCBoZWFkZXIgewotICAgICAgIHByaW50ICIvKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvbXBsZXggc3RyaW5nIHRhYmxlIGlzIHRvIHByb2R1Y2UiOwotICAgICAgIHByaW50ICIgICBvcHRpbWFsIGNvZGUgd2l0aCBhIG1pbmltdW0gb2YgcmVsb2NhdGlvbnMuICAqLyI7Ci0gICAgICAgcHJpbnQgIiI7Ci0tICAgICAgcHJpbnQgInN0YXRpYyBjb25zdCBjaGFyICIgbmFtZXNwYWNlICJtc2dzdHJbXSA9ICI7Ci0rICAgICAgcHJpbnQgInN0YXRpYyBjb25zdCBjaGFyICIgcGtnX25hbWVzcGFjZSAibXNnc3RyW10gPSAiOwotICAgICAgIGhlYWRlciA9IDA7Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC0xMTAsNyArMTEwLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotQEAgLTE1MCw3ICsxNTAsNyBAQCBFTkQgewotICAgZWxzZQotICAgICBwcmludCAiICBnZXR0ZXh0X25vb3AgKFwiIiBsYXN0X21zZ3N0ciAiXCIpOyI7Ci0gICBwcmludCAiIjsKLS0gIHByaW50ICJzdGF0aWMgY29uc3QgaW50ICIgbmFtZXNwYWNlICJtc2dpZHhbXSA9IjsKLSsgIHByaW50ICJzdGF0aWMgY29uc3QgaW50ICIgcGtnX25hbWVzcGFjZSAibXNnaWR4W10gPSI7Ci0gICBwcmludCAiICB7IjsKLSAgIGZvciAoaSA9IDA7IGkgPCBjb2RlZF9tc2dzOyBpKyspCi0gICAgIHByaW50ICIgICAgIiBwb3NbaV0gIiwiOwotQEAgLTE1OCw3ICsxNTgsNyBAQCBFTkQgewotICAgcHJpbnQgIiAgfTsiOwotICAgcHJpbnQgIiI7Ci0gICBwcmludCAic3RhdGljIEdQR19FUlJfSU5MSU5FIGludCI7Ci0tICBwcmludCBuYW1lc3BhY2UgIm1zZ2lkeG9mIChpbnQgY29kZSkiOwotKyAgcHJpbnQgcGtnX25hbWVzcGFjZSAibXNnaWR4b2YgKGludCBjb2RlKSI7Ci0gICBwcmludCAieyI7Ci0gICBwcmludCAiICByZXR1cm4gKDAgPyAwIjsKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMWFiMDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1TVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT1jZDkxZTNhZDEyNjVhMGMyNjhlZmFkNTQxYTM5MzQ1ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWYwMWNkZmNmNzQ3YWY1MzgwNTkwY2ZkOWJiZmVhYWY3IgotCi0KLVNFQ1RJT04gPSAibGlicyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWZmNDM3ZjM5N2U4NThhOTEyN2I3NmMwZDg3ZmE1ZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmFiZDk4NDM3MjA4YzE2MzE3NWMyOTQ1M2Y4NjgxMDk0YmNhZjkyOTY4YTE1Y2FmYjFhMjc2MDc2YjMzYzk3YyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdAotCi1NVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vZ3BncnQtY29uZmlnIgotCi1DUFBGTEFHUyArPSAiLVAiCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JVEFSR0VUX0ZJTEU9bGludXgtZ251Ci0JaWYgWyAke1RBUkdFVF9PU30gPSAibWluZ3czMiIgXTsgdGhlbgotCQkjIFRoZXJlIGFyZSBubyBhcmNoIHNwZWNpZmljIHN5c2NmZyBmaWxlcyBmb3IgbWluZ3czMgotCQlUQVJHRVRfRklMRT0KLQllbGlmIFsgJHtUQVJHRVRfQVJDSH0gPSAiYXJjIiBdOyB0aGVuCi0JCSMgQVJDIHN5c2NmZyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgYWxpYXNlZCB0byBpNjg2LXBjLWxpbnV4LWdudQotCQlUQVJHRVRfRklMRT0KLQllbGlmIFsgJHtUQVJHRVRfT1N9ICE9ICJsaW51eCIgXTsgdGhlbgotCQlUQVJHRVRfRklMRT0ke1RBUkdFVF9PU30KLQlmaQotCi0JY2FzZSAke1RBUkdFVF9BUkNIfSBpbgotCSAgYWFyY2g2NF9iZSkgVFVQTEU9YWFyY2g2NC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgYXJtKQkgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7Ci0JICBhcm1lYikgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7Ci0JICBpNTg2fGk2ODYpICBUVVBMRT1pNjg2LXVua25vd24tbGludXgtZ251OzsKLQkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKLQkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OwotCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXVua25vd24tbGludXgtZ251IDs7Ci0JICBwcGMpICAgICAgICBUVVBMRT1wb3dlcnBjLXVua25vd24tbGludXgtZ251IDs7Ci0JICBwcGM2NCkgICAgICBUVVBMRT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHBwYzY0bGUpICAgIFRVUExFPXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251IDs7Ci0JICAqKSAgICAgICAgICBUVVBMRT0ke1RBUkdFVF9BUkNIfS11bmtub3duLWxpbnV4LWdudSA7OwotCWVzYWMKLQotCWlmIFsgLW4gIiRUQVJHRVRfRklMRSIgXTsgdGhlbgotCQljcCAke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUVVBMRS5oIFwKLQkJCSR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRBUkdFVF9GSUxFLmgKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKLQlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKLQlvZV9tdWx0aWxpYl9oZWFkZXIgZ3BnLWVycm9yLmggZ3BncnQuaAotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWEyYjAxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzcuYmIKQEAgLTAsMCArMSw3MiBAQAorU1VNTUFSWSA9ICJTbWFsbCBsaWJyYXJ5IHRoYXQgZGVmaW5lcyBjb21tb24gZXJyb3IgdmFsdWVzIGZvciBhbGwgR251UEcgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvbGliZ3BnLWVycm9yLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnLWVycm9yLmguaW47YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9Y2Q5MWUzYWQxMjY1YTBjMjY4ZWZhZDU0MWEzOTM0NWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2luaXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1mMDFjZGZjZjc0N2FmNTM4MDU5MGNmZDliYmZlYWFmNyIKKworCitTRUNUSU9OID0gImxpYnMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1mYWlsLXdoZW4tdGVzdGluZy1jb25maWctc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjcyOWYyMmQ5MTc0OTRmZGM0YjU0ZmNlNWFhNjU0N2M3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzMmQ2ZmY3MmE3M2NmNzk3OTdmN2YyZDAzOWU5NWU5YzZmOTJmMGMxNDUwMjE1NDEwODQwYWI2MmFlYTk3NjMiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnLWVycm9yLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBnZXR0ZXh0IG11bHRpbGliX2hlYWRlciBtdWx0aWxpYl9zY3JpcHQKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2dwZ3J0LWNvbmZpZyIKKworQ1BQRkxBR1MgKz0gIi1QIgorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCVRBUkdFVF9GSUxFPWxpbnV4LWdudQorCWlmIFsgJHtUQVJHRVRfT1N9ID0gIm1pbmd3MzIiIF07IHRoZW4KKwkJIyBUaGVyZSBhcmUgbm8gYXJjaCBzcGVjaWZpYyBzeXNjZmcgZmlsZXMgZm9yIG1pbmd3MzIKKwkJVEFSR0VUX0ZJTEU9CisJZWxpZiBbICR7VEFSR0VUX0FSQ0h9ID0gImFyYyIgXTsgdGhlbgorCQkjIEFSQyBzeXNjZmcgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGFsaWFzZWQgdG8gaTY4Ni1wYy1saW51eC1nbnUKKwkJVEFSR0VUX0ZJTEU9CisJZWxpZiBbICR7VEFSR0VUX09TfSAhPSAibGludXgiIF07IHRoZW4KKwkJVEFSR0VUX0ZJTEU9JHtUQVJHRVRfT1N9CisJZmkKKworCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KKwkgIGFhcmNoNjRfYmUpIFRVUExFPWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIGFybSkJICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgYXJtZWIpICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgaTU4NnxpNjg2KSAgVFVQTEU9aTY4Ni11bmtub3duLWxpbnV4LWdudTs7CisJICBtaXBzNjQqKSAgICBUVVBMRT1taXBzNjRlbC11bmtub3duLWxpbnV4LWdudWFiaTY0IDs7CisJICBtaXBzKmVsKSAgICBUVVBMRT1taXBzZWwtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIG1pcHMqKSAgICAgIFRVUExFPW1pcHMtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHg4Nl82NCkgICAgIFRVUExFPXg4Nl82NC11bmtub3duLWxpbnV4LWdudSA7OworCSAgcHBjKSAgICAgICAgVFVQTEU9cG93ZXJwYy11bmtub3duLWxpbnV4LWdudSA7OworCSAgcHBjNjQpICAgICAgVFVQTEU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDs7CisJICBwcGM2NGxlKSAgICBUVVBMRT1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudSA7OworCSAgKikgICAgICAgICAgVFVQTEU9JHtUQVJHRVRfQVJDSH0tdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisKKwlpZiBbIC1uICIkVEFSR0VUX0ZJTEUiIF07IHRoZW4KKwkJY3AgJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVFVQTEUuaCBcCisJCQkke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUQVJHRVRfRklMRS5oCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyB3ZSBkb24ndCBoYXZlIGNvbW1vbiBsaXNwIGluIE9FCisJcm0gLXJmICIke0R9JHtkYXRhZGlyfS9jb21tb24tbGlzcC8iCisJb2VfbXVsdGlsaWJfaGVhZGVyIGdwZy1lcnJvci5oIGdwZ3J0LmgKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwZy1lcnJvci9lcnJvcnJlZi50eHQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YmU4OTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gImlDYWwgYW5kIHNjaGVkdWxpbmcgKFJGQyAyNDQ1LCAyNDQ2LCAyNDQ3KSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbC9pc3N1ZXMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIHwgTVBMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE5MTBhMmE3NmRkZjZhOWJhMzY5MTgyNDk0MTcwZDg3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuTEdQTDIxLnR4dDttZDU9OTMzYWRiNTYxZjE1OWU3YzNkYTA3OTUzNmYwZWQ4NzEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5NUEwyLnR4dDttZDU9OTc0MWMzNDZlZWY1NjEzMTE2M2UxM2I5ZGIxMjQxYjMiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1Vc2Utb3VyLWhhbmQtYnVpbGQtbmF0aXZlLXNyYy1nZW5lcmF0b3IucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ2M2E1OTI0NGM2NzY3YjhlNjdiMjkzNzk0MDVlMjk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjOGEyMWMyYjczMmVjZTRhMzNlNWM4NjI5NzBiNGYzNWE4NTQ4YmJjZGE1MGRlNTY5NWY2ZmMyMTFhYzRkOTciCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbC9yZWxlYXNlcyIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCSMgQXMgbG9uZyBhcyBodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3Vlcy8zOTQgaXMgb3BlbiBidWlsZCBuYXRpdmUgc3JjLWdlbmVyYXRvciBtYW51YWxseQotCU5BVElWRV9DRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSBgcGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBsaWJ4bWwtMi4wYCIKLQlOQVRJVkVfTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSBgcGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wYCBgcGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGxpYnhtbC0yLjBgIgotCSR7QlVJTERfQ0N9ICROQVRJVkVfQ0ZMQUdTICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy9nZW5lcmF0b3IuYyAke1N9L3NyYy9saWJpY2FsLWdsaWIvdG9vbHMveG1sLXBhcnNlci5jIC1vICR7Qn0vc3JjLWdlbmVyYXRvciAkTkFUSVZFX0xERkxBR1MKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImljdSBnbGliIgotUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwtRENNQUtFX0RJU0FCTEVfRklORF9QQUNLQUdFX0JEQj1UcnVlLGRiIgotUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItRElDQUxfR0xJQj1UcnVlLC1ESUNBTF9HTElCPUZhbHNlLGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBnbGliLTIuMCBsaWJ4bWwyIgotIyBJQ1UgaXMgdXNlZCBmb3IgUlNDQUxFIChSRkM3NTI5KSBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2ljdV0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfSUNVPVRydWUsaWN1IgotCi0jIE5vIG5lZWQgdG8gdXNlIHBlcmwtbmF0aXZlLCB0aGUgaG9zdCBwZXJsIGlzIHN1ZmZpY2llbnQuCi1FWFRSQV9PRUNNQUtFICs9ICItRFBFUkxfRVhFQ1VUQUJMRT0ke0hPU1RUT09MU19ESVJ9L3BlcmwiCi0jIGRvYyBidWlsZCBmYWlscyB3aXRoIGxpbmtlciBlcnJvciAoPz8pIGZvciBsaWJpY2FsLWdsaWIgc28gZGlzYWJsZSBpdAotRVhUUkFfT0VDTUFLRSArPSAiLURJQ0FMX0JVSUxEX0RPQ1M9ZmFsc2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMKLSAgICBzZWQgLWkgXAotICAgICAgIC1lICdzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnJyBcCi0gICAgICAgJHtEfSR7bGliZGlyfS9jbWFrZS9MaWJJY2FsL0xpYkljYWwqLmNtYWtlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MDQ3M2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNy5iYgpAQCAtMCwwICsxLDQ1IEBACitTVU1NQVJZID0gImlDYWwgYW5kIHNjaGVkdWxpbmcgKFJGQyAyNDQ1LCAyNDQ2LCAyNDQ3KSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbC9pc3N1ZXMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIHwgTVBMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE5MTBhMmE3NmRkZjZhOWJhMzY5MTgyNDk0MTcwZDg3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuTEdQTDIxLnR4dDttZDU9OTMzYWRiNTYxZjE1OWU3YzNkYTA3OTUzNmYwZWQ4NzEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5NUEwyLnR4dDttZDU9Zjc1ZDI5MjdkM2MxZWQyNDE0ZWY3MjA0OGY1YWQ2NDAgXAorICAgICAgICAgICAgICAgICAgICAiCitTRUNUSU9OID0gImxpYnMiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1Vc2Utb3VyLWhhbmQtYnVpbGQtbmF0aXZlLXNyYy1nZW5lcmF0b3IucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjhhNWQwN2E3ZmJhOWU3M2E4NWU2N2Y3NjI1OGJmMDQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhYmU2NmRmMWVhODI2ZTU3ZGI3ZjI4MWM3MDRlZGU4MzRjODQxMzkwMTJlNmM2ODZlYTdhZGFmZDRlNzYzZmMiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbC9yZWxlYXNlcyIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCSMgQXMgbG9uZyBhcyBodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3Vlcy8zOTQgaXMgb3BlbiBidWlsZCBuYXRpdmUgc3JjLWdlbmVyYXRvciBtYW51YWxseQorCU5BVElWRV9DRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSBgcGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBsaWJ4bWwtMi4wYCIKKwlOQVRJVkVfTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSBgcGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wYCBgcGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGxpYnhtbC0yLjBgIgorCSR7QlVJTERfQ0N9ICROQVRJVkVfQ0ZMQUdTICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy9nZW5lcmF0b3IuYyAke1N9L3NyYy9saWJpY2FsLWdsaWIvdG9vbHMveG1sLXBhcnNlci5jIC1vICR7Qn0vc3JjLWdlbmVyYXRvciAkTkFUSVZFX0xERkxBR1MKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gImljdSBnbGliIgorUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwtRENNQUtFX0RJU0FCTEVfRklORF9QQUNLQUdFX0JEQj1UcnVlLGRiIgorUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItRElDQUxfR0xJQj1UcnVlLC1ESUNBTF9HTElCPUZhbHNlLGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBnbGliLTIuMCBsaWJ4bWwyIgorIyBJQ1UgaXMgdXNlZCBmb3IgUlNDQUxFIChSRkM3NTI5KSBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2ljdV0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfSUNVPVRydWUsaWN1IgorCisjIE5vIG5lZWQgdG8gdXNlIHBlcmwtbmF0aXZlLCB0aGUgaG9zdCBwZXJsIGlzIHN1ZmZpY2llbnQuCitFWFRSQV9PRUNNQUtFICs9ICItRFBFUkxfRVhFQ1VUQUJMRT0ke0hPU1RUT09MU19ESVJ9L3BlcmwiCisjIGRvYyBidWlsZCBmYWlscyB3aXRoIGxpbmtlciBlcnJvciAoPz8pIGZvciBsaWJpY2FsLWdsaWIgc28gZGlzYWJsZSBpdAorRVhUUkFfT0VDTUFLRSArPSAiLURJQ0FMX0JVSUxEX0RPQ1M9ZmFsc2UiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMKKyAgICBzZWQgLWkgXAorICAgICAgIC1lICdzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnJyBcCisgICAgICAgLWUgJ3MsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnJyBcCisgICAgICAgJHtEfSR7bGliZGlyfS9jbWFrZS9MaWJJY2FsL0xpYkljYWwqLmNtYWtlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvZmlsZXMvMDAwMS1NYWtlLW1hbi1wYWdlcy1yZXByb2R1Y2libGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvZmlsZXMvMDAwMS1NYWtlLW1hbi1wYWdlcy1yZXByb2R1Y2libGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2ZmQyNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGNlMDkxNzE4NzE2NDAwMTE5ZDZiZTZiZDYzN2MwZTNmNGY2Y2EzMTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIE5vdiAyMDE5IDA4OjA3OjQxIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgbWFuIHBhZ2VzIHJlcHJvZHVjaWJsZQorCitJbnN0cnVjdHMgdGhlIG1hbiBwYWdlIHRvIGJlIGd6aXAnZWQgd2l0aG91dCB0aGUgZmlsZSBuYW1lIG9yIHRpbWVzdGFtcAorc28gdGhhdCBpdCBidWlsZHMgcmVwcm9kdWNpYmx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vc211ZWxsZXJERC9qaXR0ZXJlbnRyb3B5LWxpYnJhcnkvcHVsbC8xNF0KK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMmU3ODYwNy4uODYwYjcyMCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTYwLDcgKzYwLDcgQEAgY3BwY2hlY2s6CisgaW5zdGFsbDoKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMKKyAJaW5zdGFsbCAtbSA2NDQgZG9jLyQoTkFNRSkuMyAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLworLQlnemlwIC1mIC05ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvJChOQU1FKS4zCisrCWd6aXAgLW4gLWYgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpCisgCSQoSU5TVEFMTF9TVFJJUCkgLW0gMDc1NSBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCisgCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2VmaWxlLWNsZWFudXAtaW5zdGFsbC1mb3ItcmVidWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE5YjI1MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2VmaWxlLWNsZWFudXAtaW5zdGFsbC1mb3ItcmVidWlsZHMucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSAwNjBiOWI0MTQ3ZjZlNWZmMzg2YThiMDE3Nzk2MTE4ZDc4M2U1OWZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBXZWJlciA8bWF0dGhldy53ZWJlckByb2Nrd2VsbGNvbGxpbnMuY29tPgorRGF0ZTogVHVlLCAyMiBPY3QgMjAxOSAxMjo0NDozMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogY2xlYW51cCBpbnN0YWxsIGZvciByZWJ1aWxkcworCitTdXBwb3J0IHRoZSBhYmlsaXR5IHRvIHJlYnVpbGQgYW5kIHJlZGVwbG95IHdpdGhvdXQgYSBjbGVhbi4gVGhpcworcmVxdWlyZWQgc29tZSBmb3JjZSBsaW5raW5nIGFuZCBtYW4gYXJjaGl2ZSBjcmVhdGlvbi4KKworUHJvdmlkZSB0aGUgYWJpbGl0eSB0byBvdmVycmlkZSB0aGUgc3RyaXBwaW5nIG9mIHRoZSBzaGFyZWQgbGliIGZvcgorY2FzZXMgd2hlcmUgYSBlbWJlZGRlZCB0YXJnZXQgYnVpbGQgbWF5IHdhbnQgdG8gY29udHJvbCBzdHJpcHBpbmcKK29yIHByb3ZpZGUgY3Jvc3MgYXJjaCB0b29scy4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbMDYwYjliNDE0N2Y2ZTVmZjM4NmE4YjAxNzc5NjExOGQ3ODNlNTlmYV0KK1NpZ25lZC1vZmYtYnk6IE1hdHRoZXcgV2ViZXIgPG1hdHRoZXcud2ViZXJAcm9ja3dlbGxjb2xsaW5zLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFN0ZXBoYW4gTXVlbGxlciA8c211ZWxsZXJAY2hyb25veC5kZT4KK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMTAgKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA0ZmYwNjliLi4yZTc4NjA3IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTQsNiArMTQsOCBAQCBMSUJESVIgOj0gbGliCisgIyBpbmNsdWRlIHRhcmdldCBkaXJlY3RvcnkKKyBJTkNESVIgOj0gaW5jbHVkZQorIAorK0lOU1RBTExfU1RSSVAgPz0gaW5zdGFsbCAtcworKworIE5BTUUgOj0gaml0dGVyZW50cm9weQorIExJQk1BSk9SPSQoc2hlbGwgY2F0IGppdHRlcmVudHJvcHktYmFzZS5jIHwgZ3JlcCBkZWZpbmUgfCBncmVwIE1BSlZFUlNJT04gfCBhd2sgJ3twcmludCAkJDN9JykKKyBMSUJNSU5PUj0kKHNoZWxsIGNhdCBqaXR0ZXJlbnRyb3B5LWJhc2UuYyB8IGdyZXAgZGVmaW5lIHwgZ3JlcCBNSU5WRVJTSU9OIHwgYXdrICd7cHJpbnQgJCQzfScpCitAQCAtNTgsMTUgKzYwLDE1IEBAIGNwcGNoZWNrOgorIGluc3RhbGw6CisgCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zCisgCWluc3RhbGwgLW0gNjQ0IGRvYy8kKE5BTUUpLjMgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8KKy0JZ3ppcCAtOSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLyQoTkFNRSkuMworKwlnemlwIC1mIC05ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvJChOQU1FKS4zCisgCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKQorLQlpbnN0YWxsIC1tIDA3NTUgLXMgbGliJChOQU1FKS5zby4kKExJQlZFUlNJT04pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpLworKwkkKElOU1RBTExfU1RSSVApIC1tIDA3NTUgbGliJChOQU1FKS5zby4kKExJQlZFUlNJT04pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpLworIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS8kKElOQ0RJUikKKyAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHkuaCAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KKyAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHktYmFzZS11c2VyLmggJChERVNURElSKSQoUFJFRklYKS8kKElOQ0RJUikvCisgCSQoUk0pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28uJChMSUJNQUpPUikKKy0JbG4gLXMgbGliJChOQU1FKS5zby4kKExJQlZFUlNJT04pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28uJChMSUJNQUpPUikKKy0JbG4gLXMgbGliJChOQU1FKS5zby4kKExJQk1BSk9SKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS9saWIkKE5BTUUpLnNvCisrCWxuIC1zZiBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvbGliJChOQU1FKS5zby4kKExJQk1BSk9SKQorKwlsbiAtc2YgbGliJChOQU1FKS5zby4kKExJQk1BSk9SKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS9saWIkKE5BTUUpLnNvCisgCisgY2xlYW46CisgCUAtICQoUk0pICQoTkFNRSkKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLWZpeC1kb19pbnN0YWxsLWZhaWx1cmUtb24tb2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvZmlsZXMvMDAwMS1maXgtZG9faW5zdGFsbC1mYWlsdXJlLW9uLW9lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGZmNGZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLWZpeC1kb19pbnN0YWxsLWZhaWx1cmUtb24tb2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDAwY2VmY2EwZWVmZWNlYzY1Nzk2OWI1MGNkNGUxZWQ1YjA1N2E4NTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI1IE9jdCAyMDE4IDE2OjMwOjA2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBkb19pbnN0YWxsIGZhaWx1cmUgb24gb2UKLQotLSBEbyBub3Qgc3RyaXAgYXQgZG9faW5zdGFsbAotCi0tIENyZWF0ZSBpbmNsdWRlZGlyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZSB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNWUzMTI3Ni4uNzZmY2JmYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTUxLDcgKzUxLDggQEAgaW5zdGFsbDoKLSAJaW5zdGFsbCAtbSA2NDQgZG9jLyQoTkFNRSkuMyAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLwotIAlnemlwIC05ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvJChOQU1FKS4zCi0gCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKQotLQlpbnN0YWxsIC1tIDA3NTUgLXMgbGliJChOQU1FKS5zby4kKExJQlZFUlNJT04pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpLwotKwlpbnN0YWxsIC1tIDA3NTUgbGliJChOQU1FKS5zby4kKExJQlZFUlNJT04pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpLwotKwlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS8kKElOQ0RJUikvCi0gCWluc3RhbGwgLW0gMDY0NCBqaXR0ZXJlbnRyb3B5LmggJChERVNURElSKSQoUFJFRklYKS8kKElOQ0RJUikvCi0gCWluc3RhbGwgLW0gMDY0NCBqaXR0ZXJlbnRyb3B5LWJhc2UtdXNlci5oICQoREVTVERJUikkKFBSRUZJWCkvJChJTkNESVIpLwotIAkkKFJNKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS9saWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9saWJqaXR0ZXJlbnRyb3B5XzIuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2xpYmppdHRlcmVudHJvcHlfMi4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWI0ZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2xpYmppdHRlcmVudHJvcHlfMi4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkhhcmR3YXJlIFJORyBiYXNlZCBvbiBDUFUgdGltaW5nIGppdHRlciIKLURFU0NSSVBUSU9OID0gIlRoZSBKaXR0ZXIgUk5HIHByb3ZpZGVzIGEgbm9pc2Ugc291cmNlIHVzaW5nIHRoZSBDUFUgZXhlY3V0aW9uIHRpbWluZyBqaXR0ZXIuIFwKLUl0IGRvZXMgbm90IGRlcGVuZCBvbiBhbnkgc3lzdGVtIHJlc291cmNlIG90aGVyIHRoYW4gYSBoaWdoLXJlc29sdXRpb24gdGltZSBcCi1zdGFtcC4gSXQgaXMgYSBzbWFsbC1zY2FsZSwgeWV0IGZhc3QgZW50cm9weSBzb3VyY2UgdGhhdCBpcyB2aWFibGUgaW4gYWxtb3N0IFwKLWFsbCBlbnZpcm9ubWVudHMgYW5kIG9uIGEgbG90IG9mIENQVSBhcmNoaXRlY3R1cmVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuY2hyb25veC5kZS9qZW50Lmh0bWwiCi1MSUNFTlNFID0gIkdQTHYyKyB8IEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU1MjM2NTc1MmIzNmNmY2Q3Zjk2MDFkODBkZTdkOGM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuZ3BsdjI7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuYnNkO21kNT02NmE1Y2VkYWY2MmM0YjI2MzcwMjVmMDQ5ZjliODI2ZiBcCi0gICAgICAgICAgICAgICAgICAgIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NtdWVsbGVyREQvaml0dGVyZW50cm9weS1saWJyYXJ5LmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1kb19pbnN0YWxsLWZhaWx1cmUtb24tb2UucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ1JFViA9ICJmNWE4MGM2ZjNmY2M2ZGVlYmQwZWFiZjc1MzI0ZjQ4YWVkMWFmYmNlIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotTERGTEFHUyArPSAiLVdsLC1PMCIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIElOQ0RJUj0iL2luY2x1ZGUiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgREVTVERJUj0iJHtEfSIgXAotICAgICAgICAgICAgICAgICAgICAgICBQUkVGSVg9IiR7ZXhlY19wcmVmaXh9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgIExJQkRJUj0iJHtiYXNlbGlifSIKLX0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2xpYmppdHRlcmVudHJvcHlfMi4yLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTBlZjAxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2xpYmppdHRlcmVudHJvcHlfMi4yLjAuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBSTkcgYmFzZWQgb24gQ1BVIHRpbWluZyBqaXR0ZXIiCitERVNDUklQVElPTiA9ICJUaGUgSml0dGVyIFJORyBwcm92aWRlcyBhIG5vaXNlIHNvdXJjZSB1c2luZyB0aGUgQ1BVIGV4ZWN1dGlvbiB0aW1pbmcgaml0dGVyLiBcCitJdCBkb2VzIG5vdCBkZXBlbmQgb24gYW55IHN5c3RlbSByZXNvdXJjZSBvdGhlciB0aGFuIGEgaGlnaC1yZXNvbHV0aW9uIHRpbWUgXAorc3RhbXAuIEl0IGlzIGEgc21hbGwtc2NhbGUsIHlldCBmYXN0IGVudHJvcHkgc291cmNlIHRoYXQgaXMgdmlhYmxlIGluIGFsbW9zdCBcCithbGwgZW52aXJvbm1lbnRzIGFuZCBvbiBhIGxvdCBvZiBDUFUgYXJjaGl0ZWN0dXJlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmNocm9ub3guZGUvamVudC5odG1sIgorTElDRU5TRSA9ICJHUEx2MisgfCBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTVhYWRiZGZhZTdlZDgxMmJiMmI3Yjg2ZWI1OTgxYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmdwbHYyO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmJzZDttZDU9NjZhNWNlZGFmNjJjNGIyNjM3MDI1ZjA0OWY5YjgyNmYgXAorICAgICAgICAgICAgICAgICAgICAiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc211ZWxsZXJERC9qaXR0ZXJlbnRyb3B5LWxpYnJhcnkuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaCIKK1NSQ1JFViA9ICI5MzNhNDRmMzNlZDNkNjYxMmY3Y2ZhYTdhZDEyMDdjOGRhNDg4NmJhIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworTERGTEFHUyArPSAiLVdsLC1PMCIKKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIElOQ0RJUj0iL2luY2x1ZGUiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgREVTVERJUj0iJHtEfSIgXAorICAgICAgICAgICAgICAgICAgICAgICBQUkVGSVg9IiR7ZXhlY19wcmVmaXh9IiBcCisgICAgICAgICAgICAgICAgICAgICAgIExJQkRJUj0iJHtiYXNlbGlifSIgXAorICAgICAgICAgICAgICAgICAgICAgICBJTlNUQUxMX1NUUklQPSJpbnN0YWxsIgorfQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZS9vdXQtb2YtdHJlZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlL291dC1vZi10cmVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTY3ODk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlL291dC1vZi10cmVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotSW4gb3V0LW9mLXRyZWUgYnVpbGRzIHRoZSAjaW5jbHVkZSBmYWlscyBiZWNhdXNlICRzcmNkaXIgaXNuJ3QgaW4gdGhlIGluY2x1ZGUgcGF0aC4gIFNldCBDUFBGTEFHUyBzbyB0aGF0IGl0IGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtyMTc1MF0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUluZGV4OiBjb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2NvbmZpZ3VyZS5hYwkocmV2aXNpb24gMTc0OSkKLSsrKyBiL2NvbmZpZ3VyZS5hYwkod29ya2luZyBjb3B5KQotQEAgLTE1OSw2ICsxNTksOCBAQAotIAotIGlmIHRlc3QgIiRlbmFibGVfaml0IiA9ICJhdXRvIjsgdGhlbgotICAgQUNfTEFORyhDKQotKyAgU0FWRV9DUFBGTEFHUz0kQ1BQRkxBR1MKLSsgIENQUEZMQUdTPS1JJHNyY2RpcgotICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0gICAjZGVmaW5lIFNMSklUX0NPTkZJR19BVVRPIDEKLSAgICNpbmNsdWRlICJzbGppdC9zbGppdENvbmZpZ0ludGVybmFsLmgiCi1AQCAtMTY1LDYgKzE2Nyw3IEBACi0gICAjaWYgKGRlZmluZWQgU0xKSVRfQ09ORklHX1VOU1VQUE9SVEVEICYmIFNMSklUX0NPTkZJR19VTlNVUFBPUlRFRCkKLSAgICNlcnJvciB1bnN1cHBvcnRlZAotICAgI2VuZGlmXV0pXSwgZW5hYmxlX2ppdD15ZXMsIGVuYWJsZV9qaXQ9bm8pCi0rICBDUFBGTEFHUz0kU0FWRV9DUFBGTEFHUwotIGZpCi0gCi0gIyBIYW5kbGUgLS1kaXNhYmxlLXBjcmVncmVwLWppdCAoZW5hYmxlZCBieSBkZWZhdWx0KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2RhMzEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZXJlIGFyZSB0d28gbWFqb3IgdmVyc2lvbnMgb2YgdGhlIFBDUkUgbGlicmFyeS4gVGhlIFwKLW5ld2VzdCB2ZXJzaW9uIGlzIFBDUkUyLCB3aGljaCBpcyBhIHJlLXdvcmtpbmcgb2YgdGhlIG9yaWdpbmFsIFBDUkUgXAotbGlicmFyeSB0byBwcm92aWRlIGFuIGVudGlyZWx5IG5ldyBBUEkuIFRoZSBvcmlnaW5hbCwgdmVyeSB3aWRlbHkgXAotZGVwbG95ZWQgUENSRSBsaWJyYXJ5J3MgQVBJIGFuZCBmZWF0dXJlIGFyZSBzdGFibGUsIGZ1dHVyZSByZWxlYXNlcyBcCi0gd2lsbCBiZSBmb3IgYnVnZml4ZXMgb25seS4gQWxsIG5ldyBmdXR1cmUgZmVhdHVyZXMgd2lsbCBiZSB0byBQQ1JFMiwgXAotbm90IHRoZSBvcmlnaW5hbCBQQ1JFIDgueCBzZXJpZXMuIgotU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyB2ZXJzaW9uIDIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9YjE1ODhkM2JiNGNiMGUxZjVhNTk3ZDkwOGY4YzViMzciCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZTItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgwYjM1NWYyZGNlOTA5YTJlMjQyNGY1Yzc5ZWRkYjQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1NTE0ZGZmMGNjZGYwMmI1NWJkMmU5ZmE1ODZhMWI5ZDAxZjYyMzMyYzMzNTZlMzc5ZWFiYjc1Zjc4OWQ4YWEiCi0KLUNWRV9QUk9EVUNUID0gInBjcmUyIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCi0KLVBST1ZJREVTICs9ICJwY3JlMiIKLURFUEVORFMgKz0gImJ6aXAyIHpsaWIiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKLSAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAotICAgIC0td2l0aC1saW5rLXNpemU9MiBcCi0gICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKLSAgICAtLWVuYWJsZS1wY3JlMi0xNiBcCi0gICAgLS1lbmFibGUtcGNyZTItMzIgXAotIgotIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KLSMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KLUJVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgotQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCi1DWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCi0KLWV4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCi0KLVBBQ0tBR0VTID0rICJsaWJwY3JlMi0xNiBsaWJwY3JlMi0zMiBwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKLQotU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCi1TVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1TVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfbGlicGNyZTItMTYgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTE2LnNvLioiCi1GSUxFU19saWJwY3JlMi0zMiA9ICIke2xpYmRpcn0vbGlicGNyZTItMzIuc28uKiIKLUZJTEVTX3BjcmUyZ3JlcCA9ICIke2JpbmRpcn0vcGNyZTJncmVwIgotRklMRVNfcGNyZTJncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMmdyZXAuMSIKLUZJTEVTX3BjcmUydGVzdCA9ICIke2JpbmRpcn0vcGNyZTJ0ZXN0IgotRklMRVNfcGNyZTJ0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMnRlc3QuMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjM0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhODY1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzQuYmIKQEAgLTAsMCArMSw2MSBAQAorREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAorbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCitsaWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCitkZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKKyB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCitub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1iMTU4OGQzYmI0Y2IwZTFmNWE1OTdkOTA4ZjhjNWIzNyIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDI4MGI2MmRlZDEzZjljY2YyZmFjMTZlZTUyODYzNjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzRjNDczZmZhYmE5ZTEzZGI2OTUxZmQxNDZlMDE0M2ZlOTg4Nzg1MmNlNzM0MDZhMDMyNzdhZjFkOWI3OThjYSIKKworQ1ZFX1BST0RVQ1QgPSAicGNyZTIiCisKK1MgPSAiJHtXT1JLRElSfS9wY3JlMi0ke1BWfSIKKworUFJPVklERVMgKz0gInBjcmUyIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlMi1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAorCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAorICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCisgICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKKyAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAorICAgIC0tZW5hYmxlLXBjcmUyLTE2IFwKKyAgICAtLWVuYWJsZS1wY3JlMi0zMiBcCisiCisjIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bworIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgorQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfS9zcmMiCitDRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKK0NYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKKworZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKKworUEFDS0FHRVMgPSsgImxpYnBjcmUyLTE2IGxpYnBjcmUyLTMyIHBjcmUyZ3JlcCBwY3JlMmdyZXAtZG9jIHBjcmUydGVzdCBwY3JlMnRlc3QtZG9jIgorCitTVU1NQVJZX3BjcmUyZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCitTVU1NQVJZX3BjcmUyZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKK1NVTU1BUllfcGNyZTJ0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKK1NVTU1BUllfcGNyZTJ0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgorCitGSUxFU19saWJwY3JlMi0xNiA9ICIke2xpYmRpcn0vbGlicGNyZTItMTYuc28uKiIKK0ZJTEVTX2xpYnBjcmUyLTMyID0gIiR7bGliZGlyfS9saWJwY3JlMi0zMi5zby4qIgorRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCitGSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgorRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCitGSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlhMjJmZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIFBDUkUgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBpbXBsZW1lbnQgcmVndWxhciBcCi1leHByZXNzaW9uIHBhdHRlcm4gbWF0Y2hpbmcgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFuZCBzZW1hbnRpY3MgYXMgUGVybCA1LiBQQ1JFIFwKLWhhcyBpdHMgb3duIG5hdGl2ZSBBUEksIGFzIHdlbGwgYXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjb3JyZXNwb25kIFwKLXRvIHRoZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gQVBJLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9OTFiZWU1OWQxYjMyN2ViMTU5OWI0YzY3M2UyZmIzZDEiCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGNyZS1uYW1lLWNvbGxpc2lvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vdXQtb2YtdHJlZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjM2MjIyZTc5ZTM5MmMzZDk1ZGNjNTQ1ZjI0Zjk4YzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTFlNzYyNTIwMDAzMDEzODM0YWMxYWRiNGE5MzhkNTNiMjJhMjE2MzQxYzA2MWIwY2YwNTYwM2IyOTBmYWY2YiIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZSIKLQotUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCi0KLVBST1ZJREVTICs9ICJwY3JlIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyBqaXQiCi0KLVBBQ0tBR0VDT05GSUdbcGNyZThdID0gIi0tZW5hYmxlLXBjcmU4LC0tZGlzYWJsZS1wY3JlOCIKLVBBQ0tBR0VDT05GSUdbcGNyZTE2XSA9ICItLWVuYWJsZS1wY3JlMTYsLS1kaXNhYmxlLXBjcmUxNiIKLVBBQ0tBR0VDT05GSUdbcGNyZTMyXSA9ICItLWVuYWJsZS1wY3JlMzIsLS1kaXNhYmxlLXBjcmUzMiIKLVBBQ0tBR0VDT05GSUdbcGNyZXRlc3QtcmVhZGxpbmVdID0gIi0tZW5hYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLC0tZGlzYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSxyZWFkbGluZSwiCi1QQUNLQUdFQ09ORklHW3VuaWNvZGUtcHJvcGVydGllc10gPSAiLS1lbmFibGUtdW5pY29kZS1wcm9wZXJ0aWVzLC0tZGlzYWJsZS11bmljb2RlLXByb3BlcnRpZXMiCi1QQUNLQUdFQ09ORklHW2ppdF0gPSAiLS1lbmFibGUtaml0PWF1dG8sLS1kaXNhYmxlLWppdCIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS11dGYiCi0KLVBBQ0tBR0VTID0rICJsaWJwY3JlY3BwIGxpYnBjcmVwb3NpeCBwY3JlZ3JlcCBwY3JlZ3JlcC1kb2MgcGNyZXRlc3QgcGNyZXRlc3QtZG9jIgotCi1TVU1NQVJZX2xpYnBjcmVjcHAgPSAiJHtTVU1NQVJZfSAtIEMrKyB3cmFwcGVyIGZ1bmN0aW9ucyIKLVNVTU1BUllfbGlicGNyZXBvc2l4ID0gIiR7U1VNTUFSWX0gLSBDIHdyYXBwZXIgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBQT1NJWCByZWdleCBBUEkiCi1TVU1NQVJZX3BjcmVncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKLVNVTU1BUllfcGNyZWdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCi1TVU1NQVJZX3BjcmV0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZXRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCi0KLUZJTEVTX2xpYnBjcmVjcHAgPSAiJHtsaWJkaXJ9L2xpYnBjcmVjcHAuc28uKiIKLUZJTEVTX2xpYnBjcmVwb3NpeCA9ICIke2xpYmRpcn0vbGlicGNyZXBvc2l4LnNvLioiCi1GSUxFU19wY3JlZ3JlcCA9ICIke2JpbmRpcn0vcGNyZWdyZXAiCi1GSUxFU19wY3JlZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZWdyZXAuMSIKLUZJTEVTX3BjcmV0ZXN0ID0gIiR7YmluZGlyfS9wY3JldGVzdCIKLUZJTEVTX3BjcmV0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JldGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JdD0ke0R9JHtQVEVTVF9QQVRIfQotCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQKLQljcCAtciAke1N9L3Rlc3RkYXRhICR0Ci0JZm9yIGkgaW4gcGNyZV9zdHJpbmdwaWVjZV91bml0dGVzdCBwY3JlZ3JlcCBwY3JldGVzdDsgXAotCSAgZG8gY3AgJHtCfS8ubGlicy8kaSAkdDsgXAotCWRvbmUKLQlmb3IgaSBpbiBSdW5UZXN0IFJ1bkdyZXBUZXN0IHRlc3QtZHJpdmVyOyBcCi0JICBkbyBjcCAke1N9LyRpICR0OyBcCi0JZG9uZQotCSMgU2tpcCB0aGUgZnJfRlIgbG9jYWxlIHRlc3QuIElmIHRoZSBsb2NhbGUgZnJfRlIgaXMgZm91bmQsIGl0IGlzIHRlc3RlZC4KLQkjIElmIG5vdCBmb3VuZCwgdGhlIHRlc3QgaXMgc2tpcHBlZC4gVGhlIHRlc3QgcHJvZ3JhbSBhc3N1bWVzIGZyX0ZSIGlzIG5vbi1VVEYtOAotCSMgbG9jYWxlIHNvIHRoZSB0ZXN0IGZhaWxzIGlmIGZyX0ZSIGlzIFVURi04IGxvY2FsZS4KLQlzZWQgLWkgLWUgJ3M6ZG8zPXllczpkbzM9bm86ZycgJHtEfSR7UFRFU1RfUEFUSH0vUnVuVGVzdCAKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQ0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQ3MWU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40NC5iYgpAQCAtMCwwICsxLDc1IEBACitERVNDUklQVElPTiA9ICJUaGUgUENSRSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCByZWd1bGFyIFwKK2V4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyB1c2luZyB0aGUgc2FtZSBzeW50YXggYW5kIHNlbWFudGljcyBhcyBQZXJsIDUuIFBDUkUgXAoraGFzIGl0cyBvd24gbmF0aXZlIEFQSSwgYXMgd2VsbCBhcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgXAordG8gdGhlIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbiBBUEkuIgorU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zYmIzODFhNjZhNTM4NWIyNDZkNDg3NzkyMmU3NTExZSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImNmNzMyNjIwNGNjNDZjNzU1YjViMjYwODAzM2Q5ZDI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE5MTA4NjU4YjIzYjNlYzUwNThlZGM5ZjY2YWM1NDVlYTE5Zjk1MzcyMzRiZTFlYzYyYjcxNGM4NDM5OTM2NmQiCisKK0NWRV9QUk9EVUNUID0gInBjcmUiCisKK1MgPSAiJHtXT1JLRElSfS9wY3JlLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZSIKK0RFUEVORFMgKz0gImJ6aXAyIHpsaWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwY3JlOCB1bmljb2RlLXByb3BlcnRpZXMgaml0IgorCitQQUNLQUdFQ09ORklHW3BjcmU4XSA9ICItLWVuYWJsZS1wY3JlOCwtLWRpc2FibGUtcGNyZTgiCitQQUNLQUdFQ09ORklHW3BjcmUxNl0gPSAiLS1lbmFibGUtcGNyZTE2LC0tZGlzYWJsZS1wY3JlMTYiCitQQUNLQUdFQ09ORklHW3BjcmUzMl0gPSAiLS1lbmFibGUtcGNyZTMyLC0tZGlzYWJsZS1wY3JlMzIiCitQQUNLQUdFQ09ORklHW3BjcmV0ZXN0LXJlYWRsaW5lXSA9ICItLWVuYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSwtLWRpc2FibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUscmVhZGxpbmUsIgorUEFDS0FHRUNPTkZJR1t1bmljb2RlLXByb3BlcnRpZXNdID0gIi0tZW5hYmxlLXVuaWNvZGUtcHJvcGVydGllcywtLWRpc2FibGUtdW5pY29kZS1wcm9wZXJ0aWVzIgorUEFDS0FHRUNPTkZJR1tqaXRdID0gIi0tZW5hYmxlLWppdD1hdXRvLC0tZGlzYWJsZS1qaXQiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZS1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdXRmIgorCitQQUNLQUdFUyA9KyAibGlicGNyZWNwcCBsaWJwY3JlcG9zaXggcGNyZWdyZXAgcGNyZWdyZXAtZG9jIHBjcmV0ZXN0IHBjcmV0ZXN0LWRvYyIKKworU1VNTUFSWV9saWJwY3JlY3BwID0gIiR7U1VNTUFSWX0gLSBDKysgd3JhcHBlciBmdW5jdGlvbnMiCitTVU1NQVJZX2xpYnBjcmVwb3NpeCA9ICIke1NVTU1BUll9IC0gQyB3cmFwcGVyIGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgUE9TSVggcmVnZXggQVBJIgorU1VNTUFSWV9wY3JlZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCitTVU1NQVJZX3BjcmVncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JldGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCitTVU1NQVJZX3BjcmV0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgorCitGSUxFU19saWJwY3JlY3BwID0gIiR7bGliZGlyfS9saWJwY3JlY3BwLnNvLioiCitGSUxFU19saWJwY3JlcG9zaXggPSAiJHtsaWJkaXJ9L2xpYnBjcmVwb3NpeC5zby4qIgorRklMRVNfcGNyZWdyZXAgPSAiJHtiaW5kaXJ9L3BjcmVncmVwIgorRklMRVNfcGNyZWdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmVncmVwLjEiCitGSUxFU19wY3JldGVzdCA9ICIke2JpbmRpcn0vcGNyZXRlc3QiCitGSUxFU19wY3JldGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZXRlc3QuMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0KKwljcCAke1dPUktESVJ9L01ha2VmaWxlICR0CisJY3AgLXIgJHtTfS90ZXN0ZGF0YSAkdAorCWZvciBpIGluIHBjcmVfc3RyaW5ncGllY2VfdW5pdHRlc3QgcGNyZWdyZXAgcGNyZXRlc3Q7IFwKKwkgIGRvIGNwICR7Qn0vLmxpYnMvJGkgJHQ7IFwKKwlkb25lCisJZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAorCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAorCWRvbmUKKwkjIFNraXAgdGhlIGZyX0ZSIGxvY2FsZSB0ZXN0LiBJZiB0aGUgbG9jYWxlIGZyX0ZSIGlzIGZvdW5kLCBpdCBpcyB0ZXN0ZWQuCisJIyBJZiBub3QgZm91bmQsIHRoZSB0ZXN0IGlzIHNraXBwZWQuIFRoZSB0ZXN0IHByb2dyYW0gYXNzdW1lcyBmcl9GUiBpcyBub24tVVRGLTgKKwkjIGxvY2FsZSBzbyB0aGUgdGVzdCBmYWlscyBpZiBmcl9GUiBpcyBVVEYtOCBsb2NhbGUuCisJc2VkIC1pIC1lICdzOmRvMz15ZXM6ZG8zPW5vOmcnICR7RH0ke1BURVNUX1BBVEh9L1J1blRlc3QgCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40LzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40LzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTM0NDU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNC8wMDAxLURvLW5vdC1lbmZvcmNlLW5vLWludHJvc3BlY3Rpb24td2hlbi1jcm9zcy1idWlsZGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gODVmN2I3NGZjNjAyMjE0Mjk3OTI4YWZlMDkzNDdjMzFkNjk2MTczZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNSBGZWIgMjAxOSAxNDoyMTowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgZW5mb3JjZSBuby1pbnRyb3NwZWN0aW9uIHdoZW4gY3Jvc3MtYnVpbGRpbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvY29tbWl0LzdlZjVlYzYwYzMzZTI1NGJjZDkxNTkzNmJlYTNmMDRiYTBmZTIyNzNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+Ci0tLS0KLSBtZXNvbi5idWlsZCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDI1ODg3ZjkuLjYyNjFhN2MgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0yODEsNyArMjgxLDcgQEAgZW5hYmxlX2dub21lID0gZ2V0X29wdGlvbignZ25vbWUnKSBhbmQgaG9zdF9tYWNoaW5lLnN5c3RlbSgpICE9ICd3aW5kb3dzJwotICMgRklYTUU6IG9uY2Ugd2Ugc3RhcnQgdG8gcmVxdWlyZSBtZXNvbiAwLjQ5LjArIGFuZCBnbm9tZS1pbnRyb3NwZWN0aW9uIDEuNTguMSsKLSAjIHRoZSB3ZSBjYW4gZW5hYmxlIHRoZSBpbnRyb3NwZWN0aW9uIGV2ZW4gZm9yIHRoZSBzdGF0aWMgYnVpbGQuIFNlZQotICMgaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcHVsbC80NDc4LgotLWVuYWJsZV9pbnRyb3NwZWN0aW9uID0gZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpIGFuZCBmaW5kX3Byb2dyYW0oJ2ctaXItc2Nhbm5lcicsIHJlcXVpcmVkOiBmYWxzZSkuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgYW5kIG5vdCBpc19zdGF0aWNfbGlicmFyeQotK2VuYWJsZV9pbnRyb3NwZWN0aW9uID0gZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpIGFuZCBmaW5kX3Byb2dyYW0oJ2ctaXItc2Nhbm5lcicsIHJlcXVpcmVkOiBmYWxzZSkuZm91bmQoKSBhbmQgbm90IGlzX3N0YXRpY19saWJyYXJ5Ci0gCi0gIyMjIyMjIyMjIyMjCi0gIyBWYWxhIEFQSSAjCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Ni40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y1ZjkxMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Ni40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUgbGlicHNsIgotCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lbmZvcmNlLW5vLWludHJvc3BlY3Rpb24td2hlbi1jcm9zcy1idWlsZGluZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0MjAxNmQ4MGVjYWU0Y2Y4ZWI0MTY2MzEwNDlhMjczYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzA4OTg0ZjFlZWUxYzRmOGMxMTNhOWMxNzYzYjJiMjJkOTgxYmQ4MTFiMGNjODJhOWYzZjFhYTYzMjI4Nzc5IgotCi1DVkVfUFJPRFVDVCA9ICJsaWJzb3VwIgotCi1TID0gIiR7V09SS0RJUn0vbGlic291cC0ke1BWfSIKLQotaW5oZXJpdCBtZXNvbiBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKLQotIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURnbm9tZT10cnVlLC1EZ25vbWU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURnc3NhcGk9dHJ1ZSwtRGdzc2FwaT1mYWxzZSxrcmI1IgotCi1FWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgLUR2YXBpPWZhbHNlIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42OC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzMxYjMzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjguNC5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSBsaWJwc2wiCisKK1NIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjYwM2YzYTk0NWNkNmVjYzFmZGE2NDRkNzg1M2IzYjgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkNTBiMTI5MjJjYzUxNmFiNmE3YzM1ODQ0ZDQyZjljOGEzMzE2NjhiYmRmMTM5MjMyNzQzZDgyNTgyYjMyOTQiCisKK0NWRV9QUk9EVUNUID0gImxpYnNvdXAiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgorCitpbmhlcml0IG1lc29uIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitHSVJfTUVTT05fRU5BQkxFX0ZMQUcgPSAnZW5hYmxlZCcKK0dJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAnZGlzYWJsZWQnCisKKyMgbGlic291cC1nbm9tZSBpcyBlbnRpcmVseSBkZXByZWNhdGVkIGFuZCBqdXN0IHN0dWJzIGluIDIuNDIgb253YXJkcy4gRGlzYWJsZSBieSBkZWZhdWx0LgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi1EZ25vbWU9dHJ1ZSwtRGdub21lPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi1EZ3NzYXBpPWVuYWJsZWQsLURnc3NhcGk9ZGlzYWJsZWQsa3JiNSIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmQgPSAiIC1EdmFwaT1kaXNhYmxlZCAtRHRsc19jaGVjaz1mYWxzZSIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorCisjIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgorIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKKyMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisjIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCisKKyMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCitSUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTUxN2U2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3VyY3UvdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MWM3NWQ1OTAyMTI3Zjk0YWI1NTZjZTAzOWIzNjljYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MmI5OTcxYmYzZjFjNDQzZWRkNmMwOWU3YmY1ZmYzYjQzNTMxZTc3ODg0MWYxNjM3N2E4MTJjOGZlZWIzMzUwIgotCi1TID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlcgotCi1DUFBGTEFHU19hcHBlbmRfcmlzY3Y2NCAgPSAiIC1wdGhyZWFkIC1EX1JFRU5UUkFOVCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgb2VfbXVsdGlsaWJfaGVhZGVyIHVyY3UvY29uZmlnLmgKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzIwYWJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMi4wLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3VyY3UvdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgorCitTUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOTIzYTQyY2UzOGUzM2U4ODMzMTMwMDNjOGFmZDU1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDliMWJlNTA2OTg5ZTFkMjY1NDMxOTRkZjFhNzkyMTJiZTk5MGZlNWQ0ZmQ4NGYzNGYwMTllZmVkOTg5Zjk3IgorCitTID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKK2luaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlcgorCitDUFBGTEFHU19hcHBlbmRfcmlzY3Y2NCAgPSAiIC1wdGhyZWFkIC1EX1JFRU5UUkFOVCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgb2VfbXVsdGlsaWJfaGVhZGVyIHVyY3UvY29uZmlnLmgKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjEvbm8tZGxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMS9uby1kbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNmJiODMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMS9uby1kbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1BcyBhbGwgaW52b2tlcyBhbGwtcmVjdXJzaXZlIHdoaWNoIHVzZXMgc3ViLW1ha2VzIHRvIGludm9rZSBhbGwtYW0sIHRoZQotcmVzdWx0aW5nIG1ha2VmaWxlIHdhbnRzIHRvIGJ1aWxkIGxpYnVzYi0xLjAubGEgdHdpY2UuIEluIG5vbi1wYXJhbGxlbCBidWlsZHMKLXRoZSBzZWNvbmQgYXR0ZW1wdCBpcyBza2lwcGVkIGFzIHRoZSB0YXJnZXQgYWxyZWFkeSBleGlzdHMsIGJ1dCBpbiBoaWdobHkKLXBhcmFsbGVsIGJ1aWxkcyBpdCdzIGxpa2VseSB0aGF0IHR3byBtYWtlcyB3aWxsIGJlIGJ1aWxkaW5nIGxpYnVzYi0xLjAubGEgYXQgdGhlCi1zYW1lIHRpbWUuCi0KLVNvbHZlIHRoaXMgYnkgcmVtb3ZpbmcgdGhlIGV4cGxpY2l0IGFsbCB0YXJnZXQsIHdoaWNoIGFzIGxpYnVzYi0xLjAuZGxsIGlzbid0Ci1idWlsdCB1bmRlciBMaW51eCBpcyByZWR1bmRhbnQgYW55d2F5LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9saWJ1c2IvTWFrZWZpbGUuYW0gYi9saWJ1c2IvTWFrZWZpbGUuYW0KLWluZGV4IDBjYWIwYTAuLmM4ODAyMTMgMTAwNjQ0Ci0tLS0gYS9saWJ1c2IvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYnVzYi9NYWtlZmlsZS5hbQotQEAgLTEsMiArMCwwIEBACi0tYWxsOiBsaWJ1c2ItMS4wLmxhIGxpYnVzYi0xLjAuZGxsCi0tCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDlkNzcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgbGlicmFyeSB0byBhY2Nlc3MgVVNCICh2ZXJzaW9uIDEuMCkiCi1IT01FUEFHRSA9ICJodHRwOi8vbGlidXNiLnNmLm5ldCIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5saWJ1c2Iub3JnL3JlcG9ydCIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJ1c2IvbGlidXNiLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbm8tZGxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDY2MjY3ODg5ZGFlYWQ0NzY3NGRmOTMzY2VhOWNhY2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzVhZWI5ZDU5YTRmZGI4MDBkMzI5YTU0NWMyZTY3OTlmNzMyMzYyMTkzYjQ2NWVhMTk4ZjJhYTI3NTUxODE1NyIKLQotUyA9ICIke1dPUktESVJ9L2xpYnVzYi0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0Ci0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAidWRldiIKLVBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS1lbmFibGUtdWRldiwtLWRpc2FibGUtdWRldix1ZGV2IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KLQlmaQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICBvZV9ydW5tYWtlIC1DIHRlc3RzIHN0cmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLWRvX2luc3RhbGxfcHRlc3QoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGluc3RhbGwgLW0gNzU1ICR7Qn0vdGVzdHMvLmxpYnMvc3RyZXNzICR7RH0ke1BURVNUX1BBVEh9ICAgICAgICAgCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvLioiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vKi5zbyAke2Jhc2VfbGliZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmQ2NThiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjMuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgbGlicmFyeSB0byBhY2Nlc3MgVVNCICh2ZXJzaW9uIDEuMCkiCitIT01FUEFHRSA9ICJodHRwOi8vbGlidXNiLnNmLm5ldCIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5saWJ1c2Iub3JnL3JlcG9ydCIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJ1c2IvbGlidXNiLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZTc5ZWQ0YTRhNDQwMTY5ZGVlYzhiZWFhYzZhYWUzMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZmMxN2IyZWYzNTAyNzU3NjQxYmY4ZmUyYzE0YWQ4NmVjODYzMDJhMmI3ODVhYmNiMDgwNmZkMDNhYTEyMDFmIgorCitTID0gIiR7V09SS0RJUn0vbGlidXNiLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJ1ZGV2IgorUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCisKK0VYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQorCWZpCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgc3RyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorZG9faW5zdGFsbF9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaW5zdGFsbCAtbSA3NTUgJHtCfS90ZXN0cy8ubGlicy9zdHJlc3MgJHtEfSR7UFRFU1RfUEFUSH0gICAgICAgICAKK30KKworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28uKiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvICR7YmFzZV9saWJkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzQuYmIKaW5kZXggYWQzN2I1YS4uMTk2MWJiNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjM0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zNC5iYgpAQCAtMjAsNyArMjAsNyBAQAogCiBCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3hzbHQtY29uZmlnIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlcgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAJIyBXZSBkb24ndCBERVBFTkQgb24gYmludXRpbHMgZm9yIGFuc2lkZWNsLmggc28gZW5zdXJlIHdlIGRvbid0IHVzZSB0aGUgaGVhZGVyLgpAQCAtNDMsNiArNDMsMTAgQEAKICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS94c2x0cHJvYyBYTUxfQ0FUQUxPR19GSUxFUz0ke3N5c2NvbmZkaXJ9L3htbC9jYXRhbG9nCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgIG9lX211bHRpbGliX2hlYWRlciBsaWJ4c2x0L3hzbHRjb25maWcuaAorfQorCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYnhzbHQtcGx1Z2lucyIKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3hzbHRDb25mLnNoIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiCmluZGV4IGZiZDE5OTIwLi41MTA1Y2U2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjIuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjIuMi5iYgpAQCAtMSwxMyArMSwxMyBAQAogU1VNTUFSWSA9ICJMaWJZQU1MIGlzIGEgWUFNTCAxLjEgcGFyc2VyIGFuZCBlbWl0dGVyIHdyaXR0ZW4gaW4gQy4iCiBERVNDUklQVElPTiA9ICJMaWJZQU1MIGlzIGEgQyBsaWJyYXJ5IGZvciBwYXJzaW5nIGFuZCBlbWl0dGluZyBkYXRhIGluIFlBTUwgMS4xLCBcCiBhIGh1bWFuLXJlYWRhYmxlIGRhdGEgc2VyaWFsaXphdGlvbiBmb3JtYXQuICIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXlhbWwub3JnL3dpa2kvTGliWUFNTCIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHl5YW1sLm9yZy93aWtpL0xpYllBTUwiCiBTRUNUSU9OID0gImxpYnMvZGV2ZWwiCiAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTc2YjRjNjliZmNmODIzMTNiYmRjMDM5M2IwNDQzOGEiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3B5eWFtbC5vcmcvZG93bmxvYWQvbGlieWFtbC95YW1sLSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9weXlhbWwub3JnL2Rvd25sb2FkL2xpYnlhbWwveWFtbC0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiNTRiZjExY2NiOGJjNDg4YjViM2JlYzkzMWY1YjcwZGMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGE5MTAwYWI2MTA0N2ZkOWJkMzk1YmNlZjNjZTU0MDMzNjVjYWZkNTVjMWUwZDAyOTljZGUxNDk1OGU0N2JlOSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfNC4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMi5iYgppbmRleCAwMzA1OTE3Li4wMGMyZGMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMi5iYgpAQCAtMSw1ICsxLDUgQEAKIFNVTU1BUlkgPSAiQyBsaWJyYXJ5IGZvciBtdWx0aXBsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgY29tcHV0YXRpb25zIHdpdGggZXhhY3Qgcm91bmRpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnLyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm1wZnIub3JnLyIKIExJQ0VOU0UgPSAiTEdQTHYzKyIKIFNFQ1RJT04gPSAiZGV2ZWwiCiAKQEAgLTEwLDcgKzEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIgogREVQRU5EUyA9ICJnbXAgYXV0b2NvbmYtYXJjaGl2ZSIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItJHtQVn0vbXBmci0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1wZnIub3JnL21wZnItJHtQVn0vbXBmci0ke1BWfS50YXIueHoiCiBTUkNfVVJJW21kNXN1bV0gPSAiMzIwZmJjNDQ2M2Q0YzhjYjFlNTY2OTI5ZDhhZGM0ZjgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWQzYmU3MDg2MDRlYWUwZTQyZDU3OGJhOTNiMzkwYzJhMTQ1ZjE3NzQzYTc0NGQ4ZjNmOGMyYWQ1ODU1YTM4YSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2NkNjcwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMTQ3ZjNjMmFjYmQ5NmQ0NDAyNWNlYzExODAwZGVkMDI4MjMyNzc2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE4IFNlcCAyMDE3IDE3OjIyOjQzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1kOiBGaXggYnVpbGQgd2l0aCBtdXNsCi0KLVRoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBub3QgcHJvdmlkZWQgYnkgbXVzbAotbGludXgga2VybmVsIGhlYWRlcnMgcHJvdmlkZSA8YXNtL3NnaWRlZnMuaD4gd2hpY2ggaGFzIHNhbWUgZGVmaW5pdGlvbnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwci9pbmNsdWRlL21kL19saW51eC5jZmcgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wci9pbmNsdWRlL21kL19saW51eC5jZmcgYi9wci9pbmNsdWRlL21kL19saW51eC5jZmcKLWluZGV4IDY0MGIxOWMuLjMxMjk2YTggMTAwNjQ0Ci0tLS0gYS9wci9pbmNsdWRlL21kL19saW51eC5jZmcKLSsrKyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotQEAgLTQ5OSw3ICs0OTksNyBAQAotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gCi0gLyogRm9yIF9BQkk2NCAqLwotLSNpbmNsdWRlIDxzZ2lkZWZzLmg+Ci0rI2luY2x1ZGUgPGFzbS9zZ2lkZWZzLmg+Ci0gCi0gI2lmZGVmIF9fTUlQU0VCX18KLSAjZGVmaW5lIElTX0JJR19FTkRJQU4gMQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMDRkNDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDk1YmRhNjRmYjRjZjE4MjVmZWE3NDVlOTE4Y2ZlODIwMjg0M2YwYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLURhdGU6IFNhdCwgMzAgSmFuIDIwMTYgMDc6MTg6MDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIG5pb3MyIHN1cHBvcnQKLQotQWRkIHN1cHBvcnQgZm9yIHRoZSBuaW9zMiBDUFUuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ0NDIxIF0KLS0tLQotIG5zcHIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIG5zcHIvcHIvaW5jbHVkZS9tZC9fbGludXguaCAgIHwgMTQgKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKykKLQotSW5kZXg6IG5zcHIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwci5vcmlnL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotKysrIG5zcHIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCi1AQCAtOTc1LDYgKzk3NSw1MSBAQAotICNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkRfTE9HMiAgIDIKLSAjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRF9MT0cyICAzCi0gCi0rI2VsaWYgZGVmaW5lZChfX25pb3MyX18pCi0rCi0rI2RlZmluZSBJU19MSVRUTEVfRU5ESUFOICAgIDEKLSsjdW5kZWYgIElTX0JJR19FTkRJQU4KLSsKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9CWVRFICAgMQotKyNkZWZpbmUgUFJfQllURVNfUEVSX1NIT1JUICAyCi0rI2RlZmluZSBQUl9CWVRFU19QRVJfSU5UICAgIDQKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9JTlQ2NCAgOAotKyNkZWZpbmUgUFJfQllURVNfUEVSX0xPTkcgICA0Ci0rI2RlZmluZSBQUl9CWVRFU19QRVJfRkxPQVQgIDQKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9ET1VCTEUgOAotKyNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkQgICA0Ci0rI2RlZmluZSBQUl9CWVRFU19QRVJfRFdPUkQgIDgKLSsKLSsjZGVmaW5lIFBSX0JJVFNfUEVSX0JZVEUgICAgOAotKyNkZWZpbmUgUFJfQklUU19QRVJfU0hPUlQgICAxNgotKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UICAgICAzMgotKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UNjQgICA2NAotKyNkZWZpbmUgUFJfQklUU19QRVJfTE9ORyAgICAzMgotKyNkZWZpbmUgUFJfQklUU19QRVJfRkxPQVQgICAzMgotKyNkZWZpbmUgUFJfQklUU19QRVJfRE9VQkxFICA2NAotKyNkZWZpbmUgUFJfQklUU19QRVJfV09SRCAgICAzMgotKwotKyNkZWZpbmUgUFJfQklUU19QRVJfQllURV9MT0cyICAgMwotKyNkZWZpbmUgUFJfQklUU19QRVJfU0hPUlRfTE9HMiAgNAotKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UX0xPRzIgICAgNQotKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UNjRfTE9HMiAgNgotKyNkZWZpbmUgUFJfQklUU19QRVJfTE9OR19MT0cyICAgNQotKyNkZWZpbmUgUFJfQklUU19QRVJfRkxPQVRfTE9HMiAgNQotKyNkZWZpbmUgUFJfQklUU19QRVJfRE9VQkxFX0xPRzIgNgotKyNkZWZpbmUgUFJfQklUU19QRVJfV09SRF9MT0cyICAgNQotKwotKyNkZWZpbmUgUFJfQUxJR05fT0ZfU0hPUlQgICAyCi0rI2RlZmluZSBQUl9BTElHTl9PRl9JTlQgICAgIDQKLSsjZGVmaW5lIFBSX0FMSUdOX09GX0xPTkcgICAgNAotKyNkZWZpbmUgUFJfQUxJR05fT0ZfSU5UNjQgICA0Ci0rI2RlZmluZSBQUl9BTElHTl9PRl9GTE9BVCAgIDQKLSsjZGVmaW5lIFBSX0FMSUdOX09GX0RPVUJMRSAgNAotKyNkZWZpbmUgUFJfQUxJR05fT0ZfUE9JTlRFUiA0Ci0rI2RlZmluZSBQUl9BTElHTl9PRl9XT1JEICAgIDQKLSsKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9XT1JEX0xPRzIgICAyCi0rI2RlZmluZSBQUl9CWVRFU19QRVJfRFdPUkRfTE9HMiAgMwotKwotICNlbGlmIGRlZmluZWQoX19vcjFrX18pCi0gCi0gI3VuZGVmICBJU19MSVRUTEVfRU5ESUFOCi1JbmRleDogbnNwci9wci9pbmNsdWRlL21kL19saW51eC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwci5vcmlnL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmgKLSsrKyBuc3ByL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmgKLUBAIC01NSw2ICs1NSw4IEBACi0gI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJhdnIzMiIKLSAjZWxpZiBkZWZpbmVkKF9fbTMycl9fKQotICNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAibTMyciIKLSsjZWxpZiBkZWZpbmVkKF9fbmlvczJfXykKLSsjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgIm5pb3MyIgotICNlbGlmIGRlZmluZWQoX19vcjFrX18pCi0gI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJvcjFrIgotICNlbGlmIGRlZmluZWQoX19yaXNjdikgJiYgKF9fcmlzY3ZfeGxlbiA9PSAzMikKLUBAIC0xMjksNiArMTMxLDE4IEBAIGV4dGVybiBQUkludDMyIF9QUl94ODZfNjRfQXRvbWljU2V0KFBSSW4KLSAjZGVmaW5lIF9NRF9BVE9NSUNfU0VUICAgICAgICAgICAgICAgIF9QUl94ODZfNjRfQXRvbWljU2V0Ci0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQoX19uaW9zMl9fKQotKyNpZiBkZWZpbmVkKF9fR05VQ19fKQotKy8qIFVzZSBHQ0MgYnVpbHQtaW4gZnVuY3Rpb25zICovCi0rI2RlZmluZSBfUFJfSEFWRV9BVE9NSUNfT1BTCi0rI2RlZmluZSBfTURfSU5JVF9BVE9NSUMoKQotKyNkZWZpbmUgX01EX0FUT01JQ19JTkNSRU1FTlQocHRyKSBfX3N5bmNfYWRkX2FuZF9mZXRjaChwdHIsIDEpCi0rI2RlZmluZSBfTURfQVRPTUlDX0RFQ1JFTUVOVChwdHIpIF9fc3luY19zdWJfYW5kX2ZldGNoKHB0ciwgMSkKLSsjZGVmaW5lIF9NRF9BVE9NSUNfQUREKHB0ciwgaSkgX19zeW5jX2FkZF9hbmRfZmV0Y2gocHRyLCBpKQotKyNkZWZpbmUgX01EX0FUT01JQ19TRVQocHRyLCBudikgX19zeW5jX2xvY2tfdGVzdF9hbmRfc2V0KHB0ciwgbnYpCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQoX19vcjFrX18pCi0gI2lmIGRlZmluZWQoX19HTlVDX18pCi0gLyogVXNlIEdDQyBidWlsdC1pbiBmdW5jdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBmZTQ1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9NYWtlZmlsZS5pbi1yZW1vdmUtX0JVSUxEX1NUUklORy1hbmQtX0JVSUxEX1RJTUUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotRnJvbSA4YTU5MmU0ZWFkNGVkNmJlZmU2MDQ0ZGEzZGQyZGM3NTIzYzMzOTA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMTYgTm92IDIwMTggMTM6NTI6NDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuaW46IHJlbW92ZSBfQlVJTERfU1RSSU5HIGFuZCBfQlVJTERfVElNRQotCi1SZW1vdmUgX0JVSUxEX1NUUklORyBhbmQgX0JVSUxEX1RJTUUgdG8gYXZvaWQKLWFkZGluZyB0aW1lc3RhbXAgdG8gX3BsX2JsZC5oIHdoaWNoIGNhbiByZXN1bHQKLWluIGFkZGluZyB0aW1lc3RhbXAgaW4gbGlicmFyeSBmaWxlIHN1Y2ggYXMKLWxpYm5zcHI0LnNvLgotICQgcmVhZGVsZiAtLXdpZGUgLS1kZWNvbXByZXNzIC0taGV4LWR1bXA9LnJvZGF0YSBsaWJuc3ByNC5zbwotIFtzbmlwXQotICAweDAwMDA0MDAwIDMyMzAzMTM4IDJkMzEzMTJkIDMxMzUyMDMwIDM1M2EzNDM5IDIwMTgtMTEtMTUgMDU6NDkKLSBbc25pcF0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZHMvTWFrZWZpbGUuaW4gICAgICAgIHwgOCArLS0tLS0tLQotIGxpYi9saWJjL3NyYy9NYWtlZmlsZS5pbiAgfCA4ICstLS0tLS0tCi0gbGliL3Byc3RyZWFtcy9NYWtlZmlsZS5pbiB8IDggKy0tLS0tLS0KLSBwci9zcmMvTWFrZWZpbGUuaW4gICAgICAgIHwgOCArLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9kcy9NYWtlZmlsZS5pbiBiL2xpYi9kcy9NYWtlZmlsZS5pbgotaW5kZXggZTczNzc5MS4uYjU3ODQ3NiAxMDA2NDQKLS0tLSBhL2xpYi9kcy9NYWtlZmlsZS5pbgotKysrIGIvbGliL2RzL01ha2VmaWxlLmluCi1AQCAtMTE0LDEzICsxMTQsNyBAQCBHQVJCQUdFICs9ICQoVElOQykKLSAKLSAkKFRJTkMpOgotIAlAJChNQUtFX09CSkRJUikKLS0JQCQoRUNITykgJyNkZWZpbmUgX0JVSUxEX1NUUklORyAiJChTSF9EQVRFKSInID4gJChUSU5DKQotLQlAaWYgdGVzdCAhIC16ICIkKFNIX05PVykiOyB0aGVuIFwKLS0JICAgICQoRUNITykgJyNkZWZpbmUgX0JVSUxEX1RJTUUgJChTSF9OT1cpJChTVUYpJyA+PiAkKFRJTkMpOyBcCi0tCWVsc2UgXAotLQkgICAgdHJ1ZTsgXAotLQlmaQotLQlAJChFQ0hPKSAnI2RlZmluZSBfUFJPRFVDVElPTiAiJChQUk9EKSInID4+ICQoVElOQykKLSsJQCQoRUNITykgJyNkZWZpbmUgX1BST0RVQ1RJT04gIiQoUFJPRCkiJyA+ICQoVElOQykKLSAKLSAKLSAkKE9CSkRJUikvcGx2cnNpb24uJChPQkpfU1VGRklYKTogcGx2cnNpb24uYyAkKFRJTkMpCi1kaWZmIC0tZ2l0IGEvbGliL2xpYmMvc3JjL01ha2VmaWxlLmluIGIvbGliL2xpYmMvc3JjL01ha2VmaWxlLmluCi1pbmRleCBlOGE2ZDlmLi45NzhlZDI4IDEwMDY0NAotLS0tIGEvbGliL2xpYmMvc3JjL01ha2VmaWxlLmluCi0rKysgYi9saWIvbGliYy9zcmMvTWFrZWZpbGUuaW4KLUBAIC0xMTYsMTMgKzExNiw3IEBAIEdBUkJBR0UgKz0gJChUSU5DKQotIAotICQoVElOQyk6Ci0gCUAkKE1BS0VfT0JKRElSKQotLQlAJChFQ0hPKSAnI2RlZmluZSBfQlVJTERfU1RSSU5HICIkKFNIX0RBVEUpIicgPiAkKFRJTkMpCi0tCUBpZiB0ZXN0ICEgLXogIiQoU0hfTk9XKSI7IHRoZW4gXAotLQkgICAgJChFQ0hPKSAnI2RlZmluZSBfQlVJTERfVElNRSAkKFNIX05PVykkKFNVRiknID4+ICQoVElOQyk7IFwKLS0JZWxzZSBcCi0tCSAgICB0cnVlOyBcCi0tCWZpCi0tCUAkKEVDSE8pICcjZGVmaW5lIF9QUk9EVUNUSU9OICIkKFBST0QpIicgPj4gJChUSU5DKQotKwlAJChFQ0hPKSAnI2RlZmluZSBfUFJPRFVDVElPTiAiJChQUk9EKSInID4gJChUSU5DKQotIAotIAotICQoT0JKRElSKS9wbHZyc2lvbi4kKE9CSl9TVUZGSVgpOiBwbHZyc2lvbi5jICQoVElOQykKLWRpZmYgLS1naXQgYS9saWIvcHJzdHJlYW1zL01ha2VmaWxlLmluIGIvbGliL3Byc3RyZWFtcy9NYWtlZmlsZS5pbgotaW5kZXggYWViMjk0NC4uZjMxODA5NyAxMDA2NDQKLS0tLSBhL2xpYi9wcnN0cmVhbXMvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYi9wcnN0cmVhbXMvTWFrZWZpbGUuaW4KLUBAIC0xMTYsMTMgKzExNiw3IEBAIGVuZGlmCi0gCi0gJChUSU5DKToKLSAJQCQoTUFLRV9PQkpESVIpCi0tCUAkKEVDSE8pICcjZGVmaW5lIF9CVUlMRF9TVFJJTkcgIiQoU0hfREFURSkiJyA+ICQoVElOQykKLS0JQGlmIHRlc3QgISAteiAiJChTSF9OT1cpIjsgdGhlbiBcCi0tCSAgICAkKEVDSE8pICcjZGVmaW5lIF9CVUlMRF9USU1FICQoU0hfTk9XKSQoU1VGKScgPj4gJChUSU5DKTsgXAotLQllbHNlIFwKLS0JICAgIHRydWU7IFwKLS0JZmkKLS0JQCQoRUNITykgJyNkZWZpbmUgX1BST0RVQ1RJT04gIiQoUFJPRCkiJyA+PiAkKFRJTkMpCi0rCUAkKEVDSE8pICcjZGVmaW5lIF9QUk9EVUNUSU9OICIkKFBST0QpIicgPiAkKFRJTkMpCi0gCi0gCi0gJChPQkpESVIpL3BsdnJzaW9uLiQoT0JKX1NVRkZJWCk6IHBsdnJzaW9uLmMgJChUSU5DKQotZGlmZiAtLWdpdCBhL3ByL3NyYy9NYWtlZmlsZS5pbiBiL3ByL3NyYy9NYWtlZmlsZS5pbgotaW5kZXggMTljNWE2OS4uYjRhYzMxYyAxMDA2NDQKLS0tLSBhL3ByL3NyYy9NYWtlZmlsZS5pbgotKysrIGIvcHIvc3JjL01ha2VmaWxlLmluCi1AQCAtMzI2LDEzICszMjYsNyBAQCBHQVJCQUdFICs9ICQoVElOQykKLSAKLSAkKFRJTkMpOgotIAlAJChNQUtFX09CSkRJUikKLS0JQCQoRUNITykgJyNkZWZpbmUgX0JVSUxEX1NUUklORyAiJChTSF9EQVRFKSInID4gJChUSU5DKQotLQlAaWYgdGVzdCAhIC16ICIkKFNIX05PVykiOyB0aGVuIFwKLS0JICAgICQoRUNITykgJyNkZWZpbmUgX0JVSUxEX1RJTUUgJChTSF9OT1cpJChTVUYpJyA+PiAkKFRJTkMpOyBcCi0tCWVsc2UgXAotLQkgICAgdHJ1ZTsgXAotLQlmaQotLQlAJChFQ0hPKSAnI2RlZmluZSBfUFJPRFVDVElPTiAiJChQUk9EKSInID4+ICQoVElOQykKLSsJQCQoRUNITykgJyNkZWZpbmUgX1BST0RVQ1RJT04gIiQoUFJPRCkiJyA+ICQoVElOQykKLSAKLSAKLSAkKE9CSkRJUikvcHJ2cnNpb24uJChPQkpfU1VGRklYKTogcHJ2cnNpb24uYyAkKFRJTkMpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTJhY2M4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1GaXggYnVpbGQgZmFpbHVyZSBvbiB4ODZfNjQKLQotV2hlbiB0aGUgdGFyZ2V0X2NwdSBpcyB4ODZfNjQsIHdlIHNob3VsZCBhc3N1bWUgdGhhdCB0aGUgcGtnIHVzZXMgNjRiaXQsCi1vbmx5IGlmIFVTRV9OMzIgaXMgc2V0LCB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhlIHBrZyB1c2VzIDMyYml0LiBJdCB1c2VkIGEKLW9wcG9zaXRlIGxvZ2ljIGJlZm9yZS4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29uZmlndXJlLmluIHwgICAxMiArKysrKystLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IG5zcHIvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwci5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIG5zcHIvY29uZmlndXJlLmluCi1AQCAtMTg3NSwyOCArMTg3NSwyNCBAQCB0b29scyBhcmUgc2VsZWN0ZWQgZHVyaW5nIHRoZSBYY29kZS9EZXZlCi0gICAgICAgICBQUl9NRF9BU0ZJTEVTPW9zX0xpbnV4X2lhNjQucwotICAgICAgICAgOzsKLSAgICAgeDg2XzY0KQotLSAgICAgICAgaWYgdGVzdCAtbiAiJFVTRV82NCI7IHRoZW4KLS0gICAgICAgICAgICBQUl9NRF9BU0ZJTEVTPW9zX0xpbnV4X3g4Nl82NC5zCi0tICAgICAgICBlbGlmIHRlc3QgLW4gIiRVU0VfWDMyIjsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAtbiAiJFVTRV9YMzIiOyB0aGVuCi0rICAgICAgICAgICAgQUNfREVGSU5FKGkzODYpCi0gICAgICAgICAgICAgUFJfTURfQVNGSUxFUz1vc19MaW51eF94ODZfNjQucwotICAgICAgICAgICAgIENDPSIkQ0MgLW14MzIiCi0gICAgICAgICAgICAgQ1hYPSIkQ1hYIC1teDMyIgotICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIEFDX0RFRklORShpMzg2KQotLSAgICAgICAgICAgIFBSX01EX0FTRklMRVM9b3NfTGludXhfeDg2LnMKLS0gICAgICAgICAgICBDQz0iJENDIC1tMzIiCi0tICAgICAgICAgICAgQ1hYPSIkQ1hYIC1tMzIiCi0rICAgICAgICAgICAgUFJfTURfQVNGSUxFUz1vc19MaW51eF94ODZfNjQucwotICAgICAgICAgZmkKLSAgICAgICAgIDs7Ci0gICAgIHBwY3xwb3dlcnBjKQotICAgICAgICAgUFJfTURfQVNGSUxFUz1vc19MaW51eF9wcGMucwotICAgICAgICAgOzsKLSAgICAgcG93ZXJwYzY0KQotLSAgICAgICAgaWYgdGVzdCAtbiAiJFVTRV82NCI7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgLW4gIiRVU0VfTjMyIjsgdGhlbgotKyAgICAgICAgICAgIFBSX01EX0FTRklMRVM9b3NfTGludXhfcHBjLnMKLSsgICAgICAgIGVsc2UKLSAgICAgICAgICAgICBDQz0iJENDIC1tNjQiCi0gICAgICAgICAgICAgQ1hYPSIkQ1hYIC1tNjQiCi0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgUFJfTURfQVNGSUxFUz1vc19MaW51eF9wcGMucwotICAgICAgICAgZmkKLSAgICAgICAgIDs7Ci0gICAgIGVzYWMgICAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9uc3ByLnBjLmluIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvbnNwci5wYy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc0Y2FhYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9uc3ByLnBjLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotb3NfbGlicz0tbHB0aHJlYWQgLWxkbAotcHJlZml4PU9FUFJFRklYCi1leGVjX3ByZWZpeD1PRUVYRUNQUkVGSVgKLWxpYmRpcj1PRUxJQkRJUgotaW5jbHVkZWRpcj1PRUlOQ0RJUgotCi1OYW1lOiBOU1BSCi1EZXNjcmlwdGlvbjogVGhlIE5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUKLVZlcnNpb246IE5TUFJWRVJTSU9OCi1MaWJzOiAtTCR7bGliZGlyfSAtbHBsZHM0IC1scGxjNCAtbG5zcHI0IC1scHRocmVhZCAtbGRsCi1DZmxhZ3M6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmE1OWVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotQXV0aG9yOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci1EYXRlOiAgIFRodSBGZWIgOSAwMDowMzozOCAyMDEyICswMjAwCi0KLUF2b2lkIFFBIHdhcm5pbmdzIGJ5IHJlbW92aW5nIGhhcmRjb2RlZCBycGF0aCBmcm9tIGJpbmFyaWVzLgotCi1bLi4uXQotV0FSTklORzogUUEgSXNzdWU6IHBhY2thZ2UgbnNwciBjb250YWlucyBiYWQgUlBBVEgge2J1aWxkZGlyfS90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9uc3ByLTQuOC45LXIxL25zcHItNC44LjkvbW96aWxsYS9uc3BycHViL3ByL3Rlc3RzLy4uLy4uL2Rpc3QvbGliCi1pbiBmaWxlIHtidWlsZGRpcn0vdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvbnNwci00LjguOS1yMS9wYWNrYWdlcy1zcGxpdC9uc3ByL3Vzci9saWIvbnNwci90ZXN0cy9tdWx0aXdhaXQKLVsuLi5dCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogbnNwci9wci90ZXN0cy9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5zcHIub3JpZy9wci90ZXN0cy9NYWtlZmlsZS5pbgotKysrIG5zcHIvcHIvdGVzdHMvTWFrZWZpbGUuaW4KLUBAIC0zMTYsNyArMzE2LDcgQEAgaWZlcSAoJChPU19BUkNIKSwgU3VuT1MpCi0gZW5kaWYgIyBTdW5PUwotIAotIGlmZXEgKCwkKGZpbHRlci1vdXQgTGludXggR05VIEdOVV8lLCQoT1NfQVJDSCkpKQotLSAgICBMRE9QVFMgKz0gLVhsaW5rZXIgLXJwYXRoICQoQUJTT0xVVEVfTElCX0RJUikKLSsgICAgTERPUFRTICs9IC1YbGlua2VyCi0gICAgIGlmZXEgKCQoVVNFX1BUSFJFQURTKSwxKQotICAgICAgICAgRVhUUkFfTElCUyA9IC1scHRocmVhZAotICAgICBlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZTcxNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXRoZSAkc3JjZGlyIGlzIG5vdCBkZWZpbmVkIGF0IHRoZSB0aW1lIG9mIGdudS1jb25maWd1cml6ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1Db3JlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci0KLUluZGV4OiBuc3ByL2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5zcHIub3JpZy9jb25maWd1cmUuaW4KLSsrKyBuc3ByL2NvbmZpZ3VyZS5pbgotQEAgLTgsNyArOCw3IEBAIEFDX1BSRVJFUSgyLjYxKQotIEFDX0lOSVQKLSBBQ19DT05GSUdfU1JDRElSKFtwci9pbmNsdWRlL25zcHIuaF0pCi0gCi0tQUNfQ09ORklHX0FVWF9ESVIoJHtzcmNkaXJ9L2J1aWxkL2F1dG9jb25mKQotK0FDX0NPTkZJR19BVVhfRElSKGJ1aWxkL2F1dG9jb25mKQotIEFDX0NBTk9OSUNBTF9UQVJHRVQKLSAKLSBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTI3NjFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXRzY2FwZSBQb3J0YWJsZSBSdW50aW1lIExpYnJhcnkiCi1IT01FUEFHRSA9ICAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uc3ByLyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCB8IE1QTC0yLjAgfCBMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NvbmZpZ3VyZS5pbjtiZWdpbmxpbmU9MztlbmRsaW5lPTY7bWQ1PTkwYzJmZGVlMzhlNDVkNjMwMmFiY2ZlNDc1YzhiNWM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluO2JlZ2lubGluZT00O2VuZGxpbmU9Mzg7bWQ1PWJlZGExZGJiOThhNTE1ZjU1N2QzZTU4ZWYwNmJjYTk5IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy92JHtQVn0vc3JjL25zcHItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi1yZW1vdmUtX0JVSUxEX1NUUklORy1hbmQtX0JVSUxEX1RJTUUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNwci5wYy5pbiBcCi0iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTX2FwcGVuZF9saWJjLW11c2wgPSAiIENGTEFHUz0nJHtDRkxBR1N9IC1EX1BSX1BPTExfQVZBSUxBQkxFIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfT0ZGNjRfVCAtRF9QUl9JTkVUNiAtRF9QUl9IQVZFX0lORVRfTlRPUCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX0dFVEhPU1RCWU5BTUUyIC1EX1BSX0hBVkVfR0VUQUREUklORk8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSU5FVDZfUFJPQkUgLUROT19ETE9QRU5fTlVMTCciCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTBhZjA0NTA0MjNiMDU4OGYwZWJhNjI1NWMwN2FiNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI5ZDgyMTAzN2ZhZjU3MjNkYTkwMTUxNWVkOWNhYzhiMjNlZjFlYTM3MjkwMjIyNTk3NzczOTM0NTM0NzdhNCIKLQotQ1ZFX1BST0RVQ1QgPSAibmV0c2NhcGVfcG9ydGFibGVfcnVudGltZSIKLQotUyA9ICIke1dPUktESVJ9L25zcHItJHtQVn0vbnNwciIKLQotUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJwZXJsIgotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLVRFU1RTID0gIiBcCi0gICAgYWNjZXB0IFwKLSAgICBhY2NlcHRyZWFkIFwKLSAgICBhY2NlcHRyZWFkZW11IFwKLSAgICBhZmZpbml0eSBcCi0gICAgYWxhcm0gXAotICAgIGFub25mbSBcCi0gICAgYXRvbWljIFwKLSAgICBhdHRhY2ggXAotICAgIGJpZ2ZpbGUgXAotICAgIGNsZWFudXAgXAotICAgIGNsdHNydiAgXAotICAgIGNvbmN1ciBcCi0gICAgY3ZhciBcCi0gICAgY3ZhcjIgXAotICAgIGRsbHRlc3QgXAotICAgIGR0b2EgXAotICAgIGVycmNvZGVzIFwKLSAgICBleGl0IFwKLSAgICBmZGNhY2ggXAotICAgIGZpbGVpbyBcCi0gICAgZm9yZWlnbiBcCi0gICAgZm9ybWF0dG0gXAotICAgIGZzeW5jIFwKLSAgICBnZXRob3N0IFwKLSAgICBnZXRwcm90byBcCi0gICAgaTJsIFwKLSAgICBpbml0Y2xrIFwKLSAgICBpbnJ2YWwgXAotICAgIGluc3RydW10IFwKLSAgICBpbnRyaW8gXAotICAgIGludHJ1cHQgXAotICAgIGlvX3RpbWVvdXQgXAotICAgIGlvY29udGhyIFwKLSAgICBqb2luIFwKLSAgICBqb2lua2sgXAotICAgIGpvaW5rdSBcCi0gICAgam9pbnVrIFwKLSAgICBqb2ludXUgXAotICAgIGxheWVyIFwKLSAgICBsYXp5aW5pdCBcCi0gICAgbGliZmlsZW5hbWUgXAotICAgIGxsdGVzdCBcCi0gICAgbG9jayBcCi0gICAgbG9ja2ZpbGUgXAotICAgIGxvZ2ZpbGUgXAotICAgIGxvZ2dlciBcCi0gICAgbWFueV9jdiBcCi0gICAgbXVsdGl3YWl0IFwKLSAgICBuYW1lc2htMSBcCi0gICAgbmJsYXllciBcCi0gICAgbm9uYmxvY2sgXAotICAgIG50aW90byBcCi0gICAgbnRvaCBcCi0gICAgb3BfMmxvbmcgXAotICAgIG9wX2V4Y2wgXAotICAgIG9wX2ZpbG5mIFwKLSAgICBvcF9maWxvayBcCi0gICAgb3Bfbm9maWwgXAotICAgIHBhcmVudCBcCi0gICAgcGFyc2V0bSBcCi0gICAgcGVlayBcCi0gICAgcGVyZiBcCi0gICAgcGlwZXBpbmcgXAotICAgIHBpcGVwaW5nMiBcCi0gICAgcGlwZXNlbGYgXAotICAgIHBvbGxfbm0gXAotICAgIHBvbGxfdG8gXAotICAgIHBvbGxhYmxlIFwKLSAgICBwcmZ0ZXN0IFwKLSAgICBwcmltYmxvayBcCi0gICAgcHJvdmlkZXIgXAotICAgIHBycG9sbG1sIFwKLSAgICByYW5maWxlIFwKLSAgICByYW5kc2VlZCBcCi0gICAgcmVpbml0IFwKLSAgICByd2xvY2t0ZXN0IFwKLSAgICBzZWxfc3BkIFwKLSAgICBzZWxjdF9lciBcCi0gICAgc2VsY3Rfbm0gXAotICAgIHNlbGN0X3RvIFwKLSAgICBzZWxpbnRyIFwKLSAgICBzZW1hIFwKLSAgICBzZW1hZXJyIFwKLSAgICBzZW1hcGluZyBcCi0gICAgc2VuZHpsZiBcCi0gICAgc2VydmVyX3Rlc3QgXAotICAgIHNlcnZyX2trIFwKLSAgICBzZXJ2cl91ayBcCi0gICAgc2VydnJfa3UgXAotICAgIHNlcnZyX3V1IFwKLSAgICBzaG9ydF90aHJlYWQgXAotICAgIHNpZ3BpcGUgXAotICAgIHNvY2tldCBcCi0gICAgc29ja29wdCBcCi0gICAgc29ja3BpbmcgXAotICAgIHNwcmludGYgXAotICAgIHN0YWNrIFwKLSAgICBzdGRpbyBcCi0gICAgc3RyMmFkZHIgXAotICAgIHN0cm9kIFwKLSAgICBzd2l0Y2ggXAotICAgIHN5c3RlbSBcCi0gICAgdGVzdGJpdCBcCi0gICAgdGVzdGZpbGUgXAotICAgIHRocmVhZHMgXAotICAgIHRpbWVtYWMgXAotICAgIHRpbWV0ZXN0IFwKLSAgICB0cGQgXAotICAgIHVkcHNydiBcCi0gICAgdmVyY2hlY2sgXAotICAgIHZlcnNpb24gXAotICAgIHdyaXRldiBcCi0gICAgeG5vdGlmeSBcCi0gICAgemVyb2xlbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfc2NyaXB0Ci0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9uc3ByLWNvbmZpZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0Jb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVggJHtCVUlMRF9DRkxBR1N9IiBMREZMQUdTPSIiIENDPSIke0JVSUxEX0NDfSIgLUMgY29uZmlnIGV4cG9ydAotfQotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLQlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKLSAgICBzZWQgLWkgIFwKLSAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCi0gICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKLSAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAotICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAotICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCi0gICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYwotCi0gICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgY2QgJHtCfS9wci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLQotICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQotICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCi0gICAgIyB0aW1lCi0gICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcwotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKLUZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAotICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTQwMzM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDBjZjQ3ZWU0MzJjYzI2YTcwNjg2NGZjYzA5YjJjM2FkYzM0MmE2NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjIgRmViIDIwMTcgMTE6MzY6MTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbnNzOiBmaXggc3VwcG9ydCBjcm9zcyBjb21waWxpbmcKLQotTGV0IHNvbWUgbWFrZSB2YXJpYWJsZXMgYmUgYXNzaWduZWQgZnJvbSBvdXRzaWRlIG1ha2VmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIG5zcy9jb3JlY29uZi9hcmNoLm1rICAgIHwgMiArLQotIG5zcy9saWIvZnJlZWJsL01ha2VmaWxlIHwgNiArKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbnNzL2NvcmVjb25mL2FyY2gubWsgYi9uc3MvY29yZWNvbmYvYXJjaC5tawotaW5kZXggMDZjMjc2Zi4uOWMxZWI1MSAxMDA2NDQKLS0tLSBhL25zcy9jb3JlY29uZi9hcmNoLm1rCi0rKysgYi9uc3MvY29yZWNvbmYvYXJjaC5tawotQEAgLTMwLDcgKzMwLDcgQEAgT1NfVEVTVCA6PSAkKHNoZWxsIHVuYW1lIC1tKQotIGlmZXEgKCQoT1NfVEVTVCksaTg2cGMpCi0gICAgIE9TX1JFTEVBU0UgOj0gJChzaGVsbCB1bmFtZSAtcilfJChPU19URVNUKQotIGVsc2UKLS0gICAgT1NfUkVMRUFTRSA6PSAkKHNoZWxsIHVuYW1lIC1yKQotKyAgICBPU19SRUxFQVNFID89ICQoc2hlbGwgdW5hbWUgLXIpCi0gZW5kaWYKLSAKLSAjCi1kaWZmIC0tZ2l0IGEvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUgYi9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQotaW5kZXggMGNlMTQyNS4uZWJlYjQxMSAxMDA2NDQKLS0tLSBhL25zcy9saWIvZnJlZWJsL01ha2VmaWxlCi0rKysgYi9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQotQEAgLTM2LDYgKzM2LDEyIEBAIGlmZGVmIFVTRV82NAotIAlERUZJTkVTICs9IC1ETlNTX1VTRV82NAotIGVuZGlmCi0gCi0raWZlcSAoJChPU19URVNUKSxtaXBzKQotK2lmbmRlZiBVU0VfNjQKLSsgICAgICAgREVGSU5FUyArPSAtRE5TX1BUUl9MRV8zMgotK2VuZGlmCi0rZW5kaWYKLSsKLSBpZmRlZiBVU0VfQUJJMzJfRlBVCi0gCURFRklORVMgKz0gLUROU1NfVVNFX0FCSTMyX0ZQVQotIGVuZGlmCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmstY2VydDkuZGIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmstY2VydDkuZGIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNGJjZjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWtleTQuZGIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3ZjA4ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTgxMmQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1jbGFuZyAzLjkgYWRkIHRoaXMgd2FybmluZyB0byByaWdodGx5IGZsYWcgdW5kZWZpbmVkCi1iZWhhdmlvciwgd2UgcmVsZWdhdGUgdGhpcyB0byBiZSBqdXN0IGEgd2FybmluZyBpbnN0ZWFkCi1vZiBlcnJvciBhbmQga2VlcCB0aGUgYmVoYXZpb3IgYXMgaXQgd2FzLiBSaWdodCBmaXggd291bGQKLWJlIHRvIG5vdCBwYXNzIGVudW0gdG8gdGhlIGZ1bmN0aW9uIHdpdGggdmFyaWFkaWMgYXJndW1lbnRzCi1hcyBsYXN0IG5hbWVkIGFyZ3VtZW50Ci0KLUZpeGVzIGVycm9ycyBsaWtlCi1vY3NwLmM6MjIyMDoyMjogZXJyb3I6IHBhc3NpbmcgYW4gb2JqZWN0IHRoYXQgdW5kZXJnb2VzIGRlZmF1bHQgYXJndW1lbnQgcHJvbW90aW9uIHRvICd2YV9zdGFydCcgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciBbLVdlcnJvciwtV3ZhcmFyZ3NdCi0gICAgICAgIHZhX3N0YXJ0KGFwLCByZXNwb25zZVR5cGUwKTsKLSAgICAgICAgICAgICAgICAgICAgIF4KLW9jc3AuYzoyMjAwOjQzOiBub3RlOiBwYXJhbWV0ZXIgb2YgdHlwZSAnU0VDT2lkVGFnJyBpcyBkZWNsYXJlZCBoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ09pZFRhZyByZXNwb25zZVR5cGUwLCAuLi4pCi0KLXNlZQotaHR0cHM6Ly93d3cuc2VjdXJlY29kaW5nLmNlcnQub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9jcGx1c3BsdXMvRVhQNTgtQ1BQLitQYXNzK2FuK29iamVjdCtvZit0aGUrY29ycmVjdCt0eXBlK3RvK3ZhX3N0YXJ0Ci1mb3IgbW9yZSBkZXRhaWxzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IG5zcy0zLjM3LjEvbnNzL2NvcmVjb25mL1dlcnJvci5tawotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5zcy0zLjM3LjEub3JpZy9uc3MvY29yZWNvbmYvV2Vycm9yLm1rCi0rKysgbnNzLTMuMzcuMS9uc3MvY29yZWNvbmYvV2Vycm9yLm1rCi1AQCAtNTYsNyArNTYsNyBAQCBpZm5kZWYgV0FSTklOR19DRkxBR1MKLSAgICAgaWZkZWYgQ0NfSVNfQ0xBTkcKLSAgICAgICAjIC1RdW51c2VkLWFyZ3VtZW50cyA6IGNsYW5nIG9iamVjdHMgdG8gYXJndW1lbnRzIHRoYXQgaXQgZG9lc24ndCB1bmRlcnN0YW5kCi0gICAgICAgIyAgICBhbmQgZml4aW5nIHRoaXMgd291bGQgcmVxdWlyZSByZWFyY2hpdGVjdHVyZQotLSAgICAgIFdBUk5JTkdfQ0ZMQUdTICs9IC1RdW51c2VkLWFyZ3VtZW50cwotKyAgICAgIFdBUk5JTkdfQ0ZMQUdTICs9IC1RdW51c2VkLWFyZ3VtZW50cyAtV25vLWVycm9yPXZhcmFyZ3MKLSAgICAgICAjIC1Xbm8tcGFyZW50aGVzZXMtZXF1YWxpdHkgOiBiZWNhdXNlIGNsYW5nIHdhcm5zIGFib3V0IG1hY3JvIGV4cGFuc2lvbnMKLSAgICAgICBXQVJOSU5HX0NGTEFHUyArPSAkKGNhbGwgZGlzYWJsZV93YXJuaW5nLHBhcmVudGhlc2VzLWVxdWFsaXR5KQotICAgICAgIGlmZGVmIEJVSUxEX09QVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NzU5NGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi1uc3M6IGZpeCBpbmNvcnJlY3Qgc2hlYmFuZyBvZiBwZXJsCi0KLVJlcGxhY2UgaW5jb3JyZWN0IHNoZWJhbmcgb2YgcGVybCB3aXRoIGAjIS91c3IvYmluL2VudiBwZXJsJy4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBuc3MvY21kL3NtaW1ldG9vbHMvc21pbWUgIHwgMiArLQotIG5zcy9jb3JlY29uZi9jcGRpc3QucGwgICAgfCAyICstCi0gbnNzL2NvcmVjb25mL2ltcG9ydC5wbCAgICB8IDIgKy0KLSBuc3MvY29yZWNvbmYvam5pcmVnZW4ucGwgIHwgMiArLQotIG5zcy9jb3JlY29uZi9vdXRvZmRhdGUucGwgfCAyICstCi0gbnNzL2NvcmVjb25mL3JlbGVhc2UucGwgICB8IDIgKy0KLSBuc3MvY29yZWNvbmYvdmVyc2lvbi5wbCAgIHwgMiArLQotIG5zcy90ZXN0cy9jbGVhbl90YnggICAgICAgfCAyICstCi0gbnNzL3Rlc3RzL3BhdGhfdW5pcSAgICAgICB8IDIgKy0KLSA5IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25zcy9jbWQvc21pbWV0b29scy9zbWltZSBiL25zcy9jbWQvc21pbWV0b29scy9zbWltZQotLS0tIGEvbnNzL2NtZC9zbWltZXRvb2xzL3NtaW1lCi0rKysgYi9uc3MvY21kL3NtaW1ldG9vbHMvc21pbWUKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9sb2NhbC9iaW4vcGVybAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAKLSAjIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKLSAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKLWRpZmYgLS1naXQgYS9uc3MvY29yZWNvbmYvY3BkaXN0LnBsIGIvbnNzL2NvcmVjb25mL2NwZGlzdC5wbAotaW5kZXggODAwZWRmYi4uNjUyMTg3ZiAxMDA3NTUKLS0tLSBhL25zcy9jb3JlY29uZi9jcGRpc3QucGwKLSsrKyBiL25zcy9jb3JlY29uZi9jcGRpc3QucGwKLUBAIC0xLDQgKzEsNCBAQAotLSMhIC91c3IvbG9jYWwvYmluL3BlcmwKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIwotICMgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotZGlmZiAtLWdpdCBhL25zcy9jb3JlY29uZi9pbXBvcnQucGwgYi9uc3MvY29yZWNvbmYvaW1wb3J0LnBsCi1pbmRleCBkZDJkMTc3Li40MjhlYWE1IDEwMDc1NQotLS0tIGEvbnNzL2NvcmVjb25mL2ltcG9ydC5wbAotKysrIGIvbnNzL2NvcmVjb25mL2ltcG9ydC5wbAotQEAgLTEsNCArMSw0IEBACi0tIyEgL3Vzci9sb2NhbC9iaW4vcGVybAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjCi0gIyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0gIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi1kaWZmIC0tZ2l0IGEvbnNzL2NvcmVjb25mL2puaXJlZ2VuLnBsIGIvbnNzL2NvcmVjb25mL2puaXJlZ2VuLnBsCi1pbmRleCAyMDM5MTgwLi41ZjRmNjljIDEwMDc1NQotLS0tIGEvbnNzL2NvcmVjb25mL2puaXJlZ2VuLnBsCi0rKysgYi9uc3MvY29yZWNvbmYvam5pcmVnZW4ucGwKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9sb2NhbC9iaW4vcGVybAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjCi0gIyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0gIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi1kaWZmIC0tZ2l0IGEvbnNzL2NvcmVjb25mL291dG9mZGF0ZS5wbCBiL25zcy9jb3JlY29uZi9vdXRvZmRhdGUucGwKLWluZGV4IDMzZDgwYmIuLjAxZmMwOTcgMTAwNzU1Ci0tLS0gYS9uc3MvY29yZWNvbmYvb3V0b2ZkYXRlLnBsCi0rKysgYi9uc3MvY29yZWNvbmYvb3V0b2ZkYXRlLnBsCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvbG9jYWwvYmluL3BlcmwKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIwotICMgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotZGlmZiAtLWdpdCBhL25zcy9jb3JlY29uZi9yZWxlYXNlLnBsIGIvbnNzL2NvcmVjb25mL3JlbGVhc2UucGwKLWluZGV4IDdjZGUxOWQuLmI1ZGYyZjYgMTAwNzU1Ci0tLS0gYS9uc3MvY29yZWNvbmYvcmVsZWFzZS5wbAotKysrIGIvbnNzL2NvcmVjb25mL3JlbGVhc2UucGwKLUBAIC0xLDQgKzEsNCBAQAotLSMhIC91c3IvbG9jYWwvYmluL3BlcmwKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIwotICMgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotZGlmZiAtLWdpdCBhL25zcy9jb3JlY29uZi92ZXJzaW9uLnBsIGIvbnNzL2NvcmVjb25mL3ZlcnNpb24ucGwKLWluZGV4IGQyYTQ5NDIuLjc5MzU5ZmUgMTAwNjQ0Ci0tLS0gYS9uc3MvY29yZWNvbmYvdmVyc2lvbi5wbAotKysrIGIvbnNzL2NvcmVjb25mL3ZlcnNpb24ucGwKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9zYmluL3BlcmwKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIwotICMgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotZGlmZiAtLWdpdCBhL25zcy90ZXN0cy9jbGVhbl90YnggYi9uc3MvdGVzdHMvY2xlYW5fdGJ4Ci1pbmRleCA0ZGU5NTU1Li5hN2RlZjlmIDEwMDc1NQotLS0tIGEvbnNzL3Rlc3RzL2NsZWFuX3RieAotKysrIGIvbnNzL3Rlc3RzL2NsZWFuX3RieAotQEAgLTEsNCArMSw0IEBACi0tIyEgL2Jpbi9wZXJsCi0rIyEvdXNyL2Jpbi9lbnYgcGVybAotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIwotZGlmZiAtLWdpdCBhL25zcy90ZXN0cy9wYXRoX3VuaXEgYi9uc3MvdGVzdHMvcGF0aF91bmlxCi1pbmRleCBmMjlmNjBhLi4wOGZiZmZhIDEwMDc1NQotLS0tIGEvbnNzL3Rlc3RzL3BhdGhfdW5pcQotKysrIGIvbnNzL3Rlc3RzL3BhdGhfdW5pcQotQEAgLTEsNCArMSw0IEBACi0tIyEgL2Jpbi9wZXJsCi0rIyEvdXNyL2Jpbi9lbnYgcGVybAotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICMKLS0tIAotMS44LjEuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MWM2OWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRml4IG5zcyBtdWx0aWxpYiBidWlsZCBvbiBvcGVuU1VTRSAxMS54IDMyYml0Ci0KLVdoaWxlIGJ1aWxkaW5nIGxpYjY0LW5zcyBvbiBvcGVuU1VTRSAxMS54IDMyYml0LCB0aGUgbnNpbnN0YWxsIHdpbGwKLWZhaWwgd2l0aCBlcnJvcjoKLQotKiBuc2luc3RhbGwuYzoxOjA6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiA2NC1iaXQgbW9kZSBub3QgY29tcGlsZWQKLQotSXQgY2F1c2VkIGJ5IHRoZSAnLW02NCcgb3B0aW9uIHdoaWNoIHBhc3NlZCB0byBob3N0IGdjYy4KLQotVGhlIG5zaW5zdGFsbCB3YXMgYnVpbHQgZmlyc3Qgd2hpbGUgbnNzIHN0YXJ0aW5nIHRvIGJ1aWxkLCBpdCBvbmx5IHJ1bnMKLW9uIGhvc3QgdG8gaW5zdGFsbCBidWlsdCBmaWxlcywgaXQgZG9lc24ndCBuZWVkIGFueSBjcm9zcy1jb21wbGluZyBvcgotbXVsdGlsaWIgYnVpbGQgb3B0aW9ucy4gSnVzdCBjbGVhbiB0aGUgQVJDSEZMQUcgYW5kIExERkxBR1MgdG8gZml4IHRoaXMKLWVycm9yLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUluZGV4OiBuc3MtMy4yNC9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNzLTMuMjQub3JpZy9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlCi0rKysgbnNzLTMuMjQvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQotQEAgLTE4LDYgKzE4LDEzIEBAIElOVEVSTkFMX1RPT0xTICA9IDEKLSAKLSBpbmNsdWRlICQoREVQVEgpL2NvcmVjb25mL2NvbmZpZy5tawotIAotKyMgbnNpbnN0YWxsIGlzIHVuZml0IGZvciBjcm9zcy1jb21waWxpbmcvbXVsdGlsaWItYnVpbGQgc2luY2UgaXQgd2FzCi0rIyBhbHdheXMgcnVuIG9uIGxvY2FsIGhvc3QgdG8gaW5zdGFsbCBidWlsdCBmaWxlcy4gVGhpcyBjaGFuZ2UgaW50ZW5kcwotKyMgdG8gY2xlYW4gdGhlICctbTY0JyBmcm9tIEFSQ0hGTEFHIGFuZCBMREZMQUdTLgotK0FSQ0hGTEFHID0KLStMREZMQUdTID0KLStDRkxBR1MgPQotKwotIGlmZXEgKCwkKGZpbHRlci1vdXQgT1MyIFdJTiUsJChPU19UQVJHRVQpKSkKLSBQUk9HUkFNCQk9Ci0gZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjYxZGM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLW5zczpubyBycGF0aCBmb3IgY3Jvc3MgY29tcGlsaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIG5zcy9jbWQvcGxhdGxpYnMubWsgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnNzL2NtZC9wbGF0bGlicy5tayBiL25zcy9jbWQvcGxhdGxpYnMubWsKLS0tLSBhL25zcy9jbWQvcGxhdGxpYnMubWsKLSsrKyBiL25zcy9jbWQvcGxhdGxpYnMubWsKLUBAIC0xOCw5ICsxOCw5IEBAIGVuZGlmCi0gCi0gaWZlcSAoJChPU19BUkNIKSwgTGludXgpCi0gaWZlcSAoJChVU0VfNjQpLCAxKQotLUVYVFJBX1NIQVJFRF9MSUJTICs9IC1XbCwtcnBhdGgsJyQkT1JJR0lOLy4uL2xpYjY0Oi9vcHQvc3VuL3ByaXZhdGUvbGliNjQ6JCRPUklHSU4vLi4vbGliJwotKyNFWFRSQV9TSEFSRURfTElCUyArPSAtV2wsLXJwYXRoLCckJE9SSUdJTi8uLi9saWI2NDovb3B0L3N1bi9wcml2YXRlL2xpYjY0OiQkT1JJR0lOLy4uL2xpYicKLSBlbHNlCi0tRVhUUkFfU0hBUkVEX0xJQlMgKz0gLVdsLC1ycGF0aCwnJCRPUklHSU4vLi4vbGliOi9vcHQvc3VuL3ByaXZhdGUvbGliJwotKyNFWFRSQV9TSEFSRURfTElCUyArPSAtV2wsLXJwYXRoLCckJE9SSUdJTi8uLi9saWI6L29wdC9zdW4vcHJpdmF0ZS9saWInCi0gZW5kaWYKLSBlbmRpZgotIAotLS0gCi0xLjguMS4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MucGMuaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLnBjLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDBmNjM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MucGMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1wcmVmaXg9T0VQUkVGSVgKLWV4ZWNfcHJlZml4PU9FRVhFQ1BSRUZJWAotbGliZGlyPU9FTElCRElSCi1pbmNsdWRlZGlyPU9FSU5DRElSCi0KLU5hbWU6IE5TUwotRGVzY3JpcHRpb246IE5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXMKLVZlcnNpb246ICVOU1NfVkVSU0lPTiUKLVJlcXVpcmVzOiBuc3ByID49ICVOU1BSX1ZFUlNJT04lCi1MaWJzOiAtbHNzbDMgLWxzbWltZTMgLWxuc3MzIC1sc29mdG9rbjMgLWxuc3N1dGlsMwotQ2ZsYWdzOiAtSU9FSU5DRElSCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9wcWcuYy1VTExfYWRkZW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTgxN2ZhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9wcWcuYy1VTExfYWRkZW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotbnNzIGRvZXMgbm90IGJ1aWxkIG9uIG1pcHMgd2l0aCBjbGFuZyBiZWNhdXNlIHdyb25nIHR5cGVzIGFyZSB1c2VkPwotCi1wcWcuYzozMzk6MTY6IGVycm9yOiBjb21wYXJpc29uIG9mIGNvbnN0YW50IDE4NDQ2NzQ0MDczNzA5NTUxNjE1IHdpdGggZXhwcmVzc2lvbiBvZiB0eXBlICd1bnNpZ25lZCBsb25nJyBpcyBhbHdheXMgdHJ1ZSBbLVdlcnJvciwtV3RhdXRvbG9naWNhbC1jb25zdGFudC1vdXQtb2YtcmFuZ2UtY29tcGFyZV0KLSAgICAgaWYgKGFkZGVuZCA8IE1QX0RJR0lUX01BWCkgewotICAgICAgIH5+fn5+fiBeIH5+fn5+fn5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogbnNzLTMuMzcuMS9uc3MvbGliL2ZyZWVibC9wcWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5zcy0zLjM3LjEub3JpZy9uc3MvbGliL2ZyZWVibC9wcWcuYwotKysrIG5zcy0zLjM3LjEvbnNzL2xpYi9mcmVlYmwvcHFnLmMKLUBAIC0zMjYsOCArMzI2LDggQEAgZ2VuZXJhdGVfaF9jYW5kaWRhdGUoU0VDSXRlbSAqaGl0LCBtcF9pbgotIAotIHN0YXRpYyBTRUNTdGF0dXMKLSBhZGRUb1NlZWQoY29uc3QgU0VDSXRlbSAqc2VlZCwKLS0gICAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRlbmQsCi0tICAgICAgICAgIGludCBzZWVkbGVuLCAvKiBnIGluIDE4Ni0xICovCi0rICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgYWRkZW5kLAotKyAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIHNlZWRsZW4sIC8qIGcgaW4gMTg2LTEgKi8KLSAgICAgICAgICAgU0VDSXRlbSAqc2VlZG91dCkKLSB7Ci0gICAgIG1wX2ludCBzLCBzdW0sIG1vZHVsdXMsIHRtcDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0ZTQ5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc2lnbmxpYnMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jIS9iaW4vc2gKLQotIyBzaWdubGlicy5zaAotIwotIyAoYykyMDEwIFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotIyByZWdlbmVyYXRlcyB0aGUgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgdGhhdCByZXF1aXJlIGl0Ci0jIHNpbmNlIHRoZSBvbmVzIHRoYXQgYXJlIGJ1aWx0IGhhdmUgaW5jb3JyZWN0IGNoZWNrc3VtcyB0aGF0IHdlcmUKLSMgY2FsY3VsYXRlZCBvbiB0aGUgaG9zdCB3aGVyZSB0aGV5IHJlYWxseSBuZWVkIHRvIGJlIGRvbmUgb24gdGhlCi0jIHRhcmdldAotCi1DSEtfRklMRVM9YGxzIC9saWIqLyouY2hrIC91c3IvbGliKi8qLmNoayAyPi9kZXYvbnVsbGAKLVNJR05fQklOQVJZPWB3aGljaCBzaGxpYnNpZ25gCi1mb3IgSSBpbiAkQ0hLX0ZJTEVTCi1kbwotICAgICAgIEROPWBkaXJuYW1lICRJYAotICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAotICAgICAgIEZOPSRETi8kQk4uc28KLSAgICAgICAkU0lHTl9CSU5BUlkgLWkgJEZOCi1kb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc3lzdGVtLXBrY3MxMS50eHQgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc3lzdGVtLXBrY3MxMS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMjY0ZTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1saWJyYXJ5PQotbmFtZT1OU1MgSW50ZXJuYWwgUEtDUyAjMTEgTW9kdWxlCi1wYXJhbWV0ZXJzPWNvbmZpZ2Rpcj0nc3FsOi9ldGMvcGtpL25zc2RiJyBjZXJ0UHJlZml4PScnIGtleVByZWZpeD0nJyBzZWNtb2Q9J3NlY21vZC5kYicgZmxhZ3M9IHVwZGF0ZWRpcj0nJyB1cGRhdGVDZXJ0UHJlZml4PScnIHVwZGF0ZUtleVByZWZpeD0nJyB1cGRhdGVpZD0nJyB1cGRhdGVUb2tlbkRlc2NyaXB0aW9uPScnIAotTlNTPUZsYWdzPWludGVybmFsLGNyaXRpY2FsIHRydXN0T3JkZXI9NzUgY2lwaGVyT3JkZXI9MTAwIHNsb3RQYXJhbXM9KDE9e3Nsb3RGbGFncz1bRUNDLFJTQSxEU0EsREgsUkMyLFJDNCxERVMsUkFORE9NLFNIQTEsTUQ1LE1EMixTU0wsVExTLEFFUyxDYW1lbGxpYSxTRUVELFNIQTI1NixTSEE1MTJdIGFza3B3PWFueSB0aW1lb3V0PTMwfSkKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNDUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy40NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg5ZTdkNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy40NS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi1TVU1NQVJZID0gIk1vemlsbGEncyBTU0wgYW5kIFRMUyBpbXBsZW1lbnRhdGlvbiIKLURFU0NSSVBUSU9OID0gIk5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXMgKE5TUykgaXMgYSBzZXQgb2YgbGlicmFyaWVzIFwKLWRlc2lnbmVkIHRvIHN1cHBvcnQgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgb2YgXAotc2VjdXJpdHktZW5hYmxlZCBjbGllbnQgYW5kIHNlcnZlciBhcHBsaWNhdGlvbnMuIFwKLUFwcGxpY2F0aW9ucyBidWlsdCB3aXRoIE5TUyBjYW4gc3VwcG9ydCBTU0wgdjIgYW5kIHYzLCBcCi1UTFMsIFBLQ1MgNSwgUEtDUyA3LCBQS0NTIDExLCBQS0NTIDEyLCBTL01JTUUsIFguNTA5IFwKLXYzIGNlcnRpZmljYXRlcywgYW5kIG90aGVyIHNlY3VyaXR5IHN0YW5kYXJkcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9uc3MvIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgotCi1WRVJTSU9OX0RJUiA9ICIke0BkLmdldFZhcignQlAnKS51cHBlcigpLnJlcGxhY2UoJy0nLCAnXycpLnJlcGxhY2UoJy4nLCAnXycpICsgJ19SVE0nfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvJHtWRVJTSU9OX0RJUn0vc3JjLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MucGMuaW4gXAotICAgICAgICAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ibGFuay1jZXJ0OS5kYiBcCi0gICAgICAgICAgIGZpbGU6Ly9ibGFuay1rZXk0LmRiIFwKLSAgICAgICAgICAgZmlsZTovL3N5c3RlbS1wa2NzMTEudHh0IFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjE3NTJkNzIyM2VlOWQ5MTBkNTUxZTU3MjY0YmFmYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTEyZjA1MjIzZDFmZGU5MDJjMTcwOTY2YmZjNmYwMTFiMjRhODM4YmUxNjk2OWIxMTBlY2YyYmI3YmMyNGU4YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1MvTlNTX1JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTlNTXyg/UDxwdmVyPi4rKV9yZWxlYXNlX25vdGVzIgotCi1pbmhlcml0IHNpdGVpbmZvCi0KLVREID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCi1URFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKLSAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQotICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgotfQotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKLSAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0gICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhYXJjaDY0X2JlIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9ImFhcmNoNjQiCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCi0gICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKLSAgICAjCi0gICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgotICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KLSAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZwotICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KLSAgICAjCi0gICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCi0gICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCi19Ci0KLWRvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImFhcmNoNjRfYmUiIF07IHRoZW4KLSAgICAgICAgQ1BVX0FSQ0g9YWFyY2g2NAotICAgICAgICBPU19URVNUPSJhYXJjaDY0IgotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgbWFrZSAtQyAuL25zcyBcCi0gICAgICAgIENDQz0iJHtDWFh9IiBcCi0gICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCi0gICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKLSAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAotICAgICAgICBpbnN0YWxsCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LwotICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KLSAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgotICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCi0gICAgZG9uZQotCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKLSAgICAgICAgZmkKLSAgICBkb25lCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICBmaQotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKLSAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKLSAgICBkb25lCi19Ci0KLWRvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCi0gICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCi0gICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbwotICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICBkb25lCi0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLSAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICMgSXQgdXNlZCB0byBjYWxsIGNlcnR1dGlsIHRvIGNyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlIHdpdGggZW1wdHkgcGFzc3dvcmQgYXQKLSAgICAjIGJ1aWxkIHRpbWUsIGJ1dCB0aGUgY2hlY2tzdW0gb2Yga2V5NC5kYiBjaGFuZ2VzIGV2ZXJ5IHRpbWUgd2hlbiBjZXJ0dXRpbCBpcyBjYWxsZWQuCi0gICAgIyBJdCBjYXVzZXMgbm9uLWRldGVybWluaXNtIGlzc3VlLCBzbyBwcm92aWRlIGRhdGFiYXNlcyB3aXRoIGEgYmxhbmsgY2VydGlmaWNhdGUKLSAgICAjIHdoaWNoIGFyZSBvcmlnaW5hbGx5IGZyb20gb3V0cHV0IG9mIG5zcyBpbiBxZW11eDg2LTY0IGJ1aWxkLiBZb3UgY2FuIGdldCB0aGVzZQotICAgICMgZGF0YWJhc2VzIGJ5OgotICAgICMgY2VydHV0aWwgLU4gLWQgc3FsOi9kYXRhYmFzZS9wYXRoLyAtLWVtcHR5LXBhc3N3b3JkCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmstY2VydDkuZGIgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL2NlcnQ5LmRiCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmsta2V5NC5kYiAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIva2V5NC5kYgotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c3RlbS1wa2NzMTEudHh0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9wa2NzMTEudHh0Ci19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KLSAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCi0gICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKLSAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAotICAgICAgICAgICAgRk49JEROLyRCTi5zbwotICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgotICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgZWxzZQotICAgICAgICBzaWdubGlicy5zaAotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKLUZJTEVTXyR7UE59LXNtaW1lID0gIlwKLSAgICAke2JpbmRpcn0vc21pbWUgXAotIgotCi1GSUxFU18ke1BOfSA9ICJcCi0gICAgJHtzeXNjb25mZGlyfSBcCi0gICAgJHtiaW5kaXJ9IFwKLSAgICAke2xpYmRpcn0vbGliKi5jaGsgXAotICAgICR7bGliZGlyfS9saWIqLnNvIFwKLSAgICAiCi0KLUZJTEVTXyR7UE59LWRldiA9ICJcCi0gICAgJHtsaWJkaXJ9L25zcyBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIFwKLSAgICAke2luY2x1ZGVkaXJ9LyogXAotICAgICIKLQotUkRFUEVORFNfJHtQTn0tc21pbWUgPSAicGVybCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4xOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4xOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTkzYTA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMTguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvdmlkZXMgYSB3YXkgdG8gbG9hZCBhbmQgZW51bWVyYXRlIFBLQ1MjMTEgbW9kdWxlcyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDI5MzM4ODdmNjA5ODA3ZmJiNTdhYTQyMzdkMTRhNTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MKLQotREVQRU5EUyA9ICJsaWJ0YXNuMSBsaWJmZmkiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wMTEtZ2x1ZS9wMTEta2l0IgotU1JDUkVWID0gImIwZWJlNzU1NWMyOTE4MDhkYjI5Mzc3YmE3OWNiODMyNjMwMWYwYTYiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1BVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQvbGl0dGVyIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t0cnVzdC1wYXRoc10gPSAiLS13aXRoLXRydXN0LXBhdGhzPS9ldGMvc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQsLS13aXRob3V0LXRydXN0LXBhdGhzLCxjYS1jZXJ0aWZpY2F0ZXMiCi0KLSMgVGhpcyByZWNpcGUgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBndGstZG9jIG00IG1hY3JvcywgYW5kIHNvIHRoZSAuL2NvbmZpZ3VyZSBmbGFncwotIyB0aGF0IGNvbnRyb2wgZ3RrLWRvYyBidWlsZCBhcmUgbm9uLXN0YW5kYXJkCi1FWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtZG9jIC0tZW5hYmxlLWRvYy1odG1sIC0tZGlzYWJsZS1kb2MtcGRmJywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kb2MnLCBkKX0gIgotCi0jIFdoZW4gYnVpbGRpbmcgbmF0aXZlIHJlY2lwZXMsIGRpc2FibGUgZ3RrZG9jLCBhcyBpdCBpcyBub3QgbmVjZXNzYXJ5LAotIyBwdWxscyBpbiBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcywgYW5kIG1ha2VzIGJ1aWxkIHRpbWVzIGxvbmdlcgotRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtbmF0aXZlID0gIi0tZGlzYWJsZS1kb2MgIgotRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi0tZGlzYWJsZS1kb2MgIgotCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiAtLWVuYWJsZS1ndGstZG9jLWh0bWwgLS1kaXNhYmxlLWd0ay1kb2MtcGRmIC0tZW5hYmxlLWd0ay1kb2MgLS1kaXNhYmxlLWd0ay1kb2MiCi0KLSMgcDExLWtpdCByZWxpZXMgb24gdGhlc2UgdHdvIGJlaW5nIGNvcGllZCBmcm9tIHNvdXJjZSB0cmVlCi0jIGluc3RlYWQgb2YgYmVpbmcgcmVnZW5lcmF0ZWQgYnkgZ3RrZG9jLXNjYW4sIGJ1dCBkb2Vzbid0IHNldHVwCi0jIGRlcGVuZGVuY2llcyBjb3JyZWN0bHkgd2hlbiB0aGVyZSBpcyBhIHBhcmFsbGVsIGJ1aWxkLiBMZXQncyBwcmUtY29weQotIyB0aGVtIGluc3RlYWQuCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgICAgICBjcCAke1N9L2RvYy9tYW51YWwvcDExLWtpdC1vdmVycmlkZXMudHh0ICR7U30vZG9jL21hbnVhbC9wMTEta2l0LXNlY3Rpb25zLnR4dCAke0J9L2RvYy9tYW51YWwvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS9wMTEta2l0LXByb3h5LnNvIFwKLSAgICAke2xpYmRpcn0vcGtjczExLyouc28gXAotICAgICR7bGliZGlyfS9wa2NzMTEvKi5sYSIKLQotIyBQTiBjb250YWlucyBwMTEta2l0LXByb3h5LnNvLCBhIHN5bWxpbmsgdG8gYSBsb2FkYWJsZSBtb2R1bGUKLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiYTkzZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjIwLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiUHJvdmlkZXMgYSB3YXkgdG8gbG9hZCBhbmQgZW51bWVyYXRlIFBLQ1MjMTEgbW9kdWxlcyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDI5MzM4ODdmNjA5ODA3ZmJiNTdhYTQyMzdkMTRhNTAiCisKK2luaGVyaXQgbWVzb24gZ2V0dGV4dCBwa2djb25maWcgZ3RrLWRvYyBiYXNoLWNvbXBsZXRpb24KKworREVQRU5EUyA9ICJsaWJ0YXNuMSBsaWJ0YXNuMS1uYXRpdmUgbGliZmZpIgorCitERVBFTkRTX2FwcGVuZCA9ICIke0AnIGdsaWItMi4wJyBpZiBkLmdldFZhcignR1RLRE9DX0VOQUJMRUQnKSA9PSAnVHJ1ZScgZWxzZSAnJ30iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wMTEtZ2x1ZS9wMTEta2l0IgorU1JDUkVWID0gIjc2MmNkYWEyY2Q1YzVlYzA5Y2M4NDRmOWE2YmRjNTUxYzdmNmM4ZWQiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t0cnVzdC1wYXRoc10gPSAiLUR0cnVzdF9wYXRocz0vZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0LCwsY2EtY2VydGlmaWNhdGVzIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gJ2d0a19kb2MnCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZGlyfS9wMTEta2l0LXByb3h5LnNvIFwKKyAgICAke2xpYmRpcn0vcGtjczExLyouc28gXAorICAgICR7bGliZGlyfS9wa2NzMTEvKi5sYSBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vKiIKKworIyBQTiBjb250YWlucyBwMTEta2l0LXByb3h5LnNvLCBhIHN5bWxpbmsgdG8gYSBsb2FkYWJsZSBtb2R1bGUKK0lOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZQppbmRleCBhYWFhYTI5Li4wNTU5Yjk3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKQEAgLTgsNiArOCwyNSBAQAogW1NlcnZpY2VdCiBFbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9kZWZhdWx0L3JuZy10b29scwogRXhlY1N0YXJ0PUBTQklORElSQC9ybmdkIC1mICRFWFRSQV9BUkdTCitDYXBhYmlsaXR5Qm91bmRpbmdTZXQ9Q0FQX1NZU19BRE1JTgorSVBBZGRyZXNzRGVueT1hbnkKK0xvY2tQZXJzb25hbGl0eT15ZXMKK01lbW9yeURlbnlXcml0ZUV4ZWN1dGU9eWVzCitOb05ld1ByaXZpbGVnZXM9eWVzCitQcml2YXRlVG1wPXllcworUHJvdGVjdENvbnRyb2xHcm91cHM9eWVzCitQcm90ZWN0SG9tZT15ZXMKK1Byb3RlY3RIb3N0bmFtZT15ZXMKK1Byb3RlY3RLZXJuZWxNb2R1bGVzPXllcworUHJvdGVjdEtlcm5lbExvZ3M9eWVzCitQcm90ZWN0U3lzdGVtPXN0cmljdAorUmVzdHJpY3RBZGRyZXNzRmFtaWxpZXM9QUZfVU5JWAorUmVzdHJpY3ROYW1lc3BhY2VzPXllcworUmVzdHJpY3RSZWFsdGltZT15ZXMKK1Jlc3RyaWN0U1VJRFNHSUQ9eWVzCitTeXN0ZW1DYWxsQXJjaGl0ZWN0dXJlcz1uYXRpdmUKK1N5c3RlbUNhbGxFcnJvck51bWJlcj1FUEVSTQorU3lzdGVtQ2FsbEZpbHRlcj1Ac3lzdGVtLXNlcnZpY2UKIAogW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAorV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc182LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2E0OGE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc182LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGRhZW1vbiIKLURFU0NSSVBUSU9OID0gIkNoZWNrIGFuZCBmZWVkIHJhbmRvbSBkYXRhIGZyb20gaGFyZHdhcmUgZGV2aWNlIHRvIGtlcm5lbCIKLUFVVEhPUiA9ICJQaGlsaXBwIFJ1bXBmLCBKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+LCBcCi0gICAgICAgICAgSGVucmlxdWUgZGUgTW9yYWVzIEhvbHNjaHVoIDxobWhAZGViaWFuLm9yZz4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uaG9ybWFuL3JuZy10b29scy9pc3N1ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1ERVBFTkRTID0gInN5c2ZzdXRpbHMiCi0KLVNSQ19VUkkgPSAiXAotICAgIGdpdDovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMuZ2l0IFwKLSAgICBmaWxlOi8vaW5pdCBcCi0gICAgZmlsZTovL2RlZmF1bHQgXAotICAgIGZpbGU6Ly9ybmdkLnNlcnZpY2UgXAotIgotU1JDUkVWID0gImViNWUzNGM3ZmIwNTU5NDc2MGY5OWQ4NjNmYmUwNDAxZmUyOTdiOTMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJnY3J5cHQgbGliaml0dGVyZW50cm9weSIKLVBBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gImxpYmFyZ3AgbGliaml0dGVyZW50cm9weSIKLQotUEFDS0FHRUNPTkZJR1tsaWJhcmdwXSA9ICItLXdpdGgtbGliYXJncCwtLXdpdGhvdXQtbGliYXJncCxhcmdwLXN0YW5kYWxvbmUsIgotUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0td2l0aC1saWJnY3J5cHQsLS13aXRob3V0LWxpYmdjcnlwdCxsaWJnY3J5cHQsIgotUEFDS0FHRUNPTkZJR1tsaWJqaXR0ZXJlbnRyb3B5XSA9ICItLWVuYWJsZS1qaXR0ZXJlbnRyb3B5LC0tZGlzYWJsZS1qaXR0ZXJlbnRyb3B5LGxpYmppdHRlcmVudHJvcHkiCi1QQUNLQUdFQ09ORklHW2xpYnAxMV0gPSAiLS13aXRoLXBrY3MxMSwtLXdpdGhvdXQtcGtjczExLGxpYnAxMSBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tuaXN0YmVhY29uXSA9ICItLXdpdGgtbmlzdGJlYWNvbiwtLXdpdGhvdXQtbmlzdGJlYWNvbixjdXJsIGxpYnhtbDIgb3BlbnNzbCIKLQotSU5JVFNDUklQVF9OQU1FID0gInJuZy10b29scyIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAzIDIgMyA0IDUgLiBzdG9wIDMwIDAgNiAxIC4iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJybmdkLnNlcnZpY2UiCi0KLSMgUmVmZXIgYXV0b2dlbi5zaCBpbiBybmctdG9vbHMKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGNwICR7U30vUkVBRE1FLm1kICR7U30vUkVBRE1FCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvcm5nLXRvb2xzCi0gICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JuZy10b29scwotICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9ybmdkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCi0gICAgc2VkIC1pIFwKLSAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ybmctdG9vbHMgXAotICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ybmdkLnNlcnZpY2UKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc182LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOThhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi45LmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiUmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZGFlbW9uIgorREVTQ1JJUFRJT04gPSAiQ2hlY2sgYW5kIGZlZWQgcmFuZG9tIGRhdGEgZnJvbSBoYXJkd2FyZSBkZXZpY2UgdG8ga2VybmVsIgorQVVUSE9SID0gIlBoaWxpcHAgUnVtcGYsIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4sIFwKKyAgICAgICAgICBIZW5yaXF1ZSBkZSBNb3JhZXMgSG9sc2NodWggPGhtaEBkZWJpYW4ub3JnPiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uaG9ybWFuL3JuZy10b29scyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzL2lzc3VlcyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAic3lzZnN1dGlscyIKKworU1JDX1VSSSA9ICJcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9uaG9ybWFuL3JuZy10b29scy5naXQgXAorICAgIGZpbGU6Ly9pbml0IFwKKyAgICBmaWxlOi8vZGVmYXVsdCBcCisgICAgZmlsZTovL3JuZ2Quc2VydmljZSBcCisiCitTUkNSRVYgPSAiNGE4NjU3OTdhNjlkZDM4YzY0YTg2YWEzMjg4NGVjYzliYTdiNGQwOCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmdjcnlwdCBsaWJqaXR0ZXJlbnRyb3B5IgorUEFDS0FHRUNPTkZJR19saWJjLW11c2wgPSAibGliYXJncCBsaWJqaXR0ZXJlbnRyb3B5IgorCitQQUNLQUdFQ09ORklHW2xpYmFyZ3BdID0gIi0td2l0aC1saWJhcmdwLC0td2l0aG91dC1saWJhcmdwLGFyZ3Atc3RhbmRhbG9uZSwiCitQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLS13aXRoLWxpYmdjcnlwdCwtLXdpdGhvdXQtbGliZ2NyeXB0LGxpYmdjcnlwdCwiCitQQUNLQUdFQ09ORklHW2xpYmppdHRlcmVudHJvcHldID0gIi0tZW5hYmxlLWppdHRlcmVudHJvcHksLS1kaXNhYmxlLWppdHRlcmVudHJvcHksbGliaml0dGVyZW50cm9weSIKK1BBQ0tBR0VDT05GSUdbbGlicDExXSA9ICItLXdpdGgtcGtjczExLC0td2l0aG91dC1wa2NzMTEsbGlicDExIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW25pc3RiZWFjb25dID0gIi0td2l0aC1uaXN0YmVhY29uLC0td2l0aG91dC1uaXN0YmVhY29uLGN1cmwgbGlieG1sMiBvcGVuc3NsIgorCitJTklUU0NSSVBUX05BTUUgPSAicm5nLXRvb2xzIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDMgMiAzIDQgNSAuIHN0b3AgMzAgMCA2IDEgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJuZ2Quc2VydmljZSIKKworIyBSZWZlciBhdXRvZ2VuLnNoIGluIHJuZy10b29scworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgY3AgJHtTfS9SRUFETUUubWQgJHtTfS9SRUFETUUKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L2RlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9ybmctdG9vbHMKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcm5nLXRvb2xzCisgICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L3JuZ2Quc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ybmdkLnNlcnZpY2UKKyAgICBzZWQgLWkgXAorICAgICAgICAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JuZy10b29scyBcCisgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JuZ2Quc2VydmljZQorCisgICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmlzdGJlYWNvbicsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAgLWUgJy9eSVBBZGRyZXNzRGVueT1hbnkvZCcgXAorICAgICAgICAgICAgLWUgJy9eUmVzdHJpY3RBZGRyZXNzRmFtaWxpZXM9LyBzLyQvIEFGX0lORVQgQUZfSU5FVDYvJyBcCisgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ybmdkLnNlcnZpY2UKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmUxYTQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvLmluYworKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiU2hhcmVkIE1JTUUgdHlwZSBkYXRhYmFzZSBhbmQgc3BlY2lmaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zaGFyZWQtbWltZS1pbmZvIgotU0VDVElPTiA9ICJiYXNlIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLURFUEVORFMgPSAibGlieG1sMiBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAgc2hhcmVkLW1pbWUtaW5mby1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9+aGFkZXNzL3NoYXJlZC1taW1lLWluZm8tJHtQVn0udGFyLnh6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVwZGF0ZS1taW1lZGIiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pbWUiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3NoYXJlZC1taW1lLWluZm8ucGMiCi0KLSMgZnJlZWRlc2t0b3Aub3JnLnhtbCBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdXBkYXRpbmcgdGhlIG1pbWUgZGF0YWJhc2UsCi0jIHBhY2thZ2UgaXQgc2VwYXJhdGVseQotUEFDS0FHRVMgPSsgInNoYXJlZC1taW1lLWluZm8tZGF0YSIKLUZJTEVTX3NoYXJlZC1taW1lLWluZm8tZGF0YSA9ICIke2RhdGFkaXJ9L21pbWUvcGFja2FnZXMvZnJlZWRlc2t0b3Aub3JnLnhtbCIKLVJERVBFTkRTX3NoYXJlZC1taW1lLWluZm8tZGF0YSA9ICJzaGFyZWQtbWltZS1pbmZvIgotCi1kb19pbnN0YWxsICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JdXBkYXRlLW1pbWUtZGF0YWJhc2UgJHtEfSR7ZGF0YWRpcn0vbWltZQotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSR7Qn0vdXBkYXRlLW1pbWUtZGF0YWJhc2UgJHtEfSR7ZGF0YWRpcn0vbWltZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjJmZjc1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotZml4IHNoYXJlZC1taW1lLWluZm8gYnVpbGQgcmFjZSBjb25kaXRpb24KLQotVGhlIGRlZmluaXRpb24gb2YgaW5zdGFsbC1kYXRhLWhvb2sgaW4gTWFrZWZpbGUuYW0gbGVhZHMKLXRvIG11bHRpcGxlLCBvdmVybGFwcGluZywgZXhlY3V0aW9ucyBvZiBpbnN0YWxsLWJpblBST0dSQU1TCi10YXJnZXQuICBXZSBtb2RpZnkgdGhlIGRlZmluaXRpb24gdG8gYXZvaWQgdGhhdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2hhcmVkLW1pbWUtaW5mby0xLjkub3JpZy9NYWtlZmlsZS5hbQotKysrIHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCi1AQCAtNTAsNyArNTAsOSBAQCBlbHNlCi0gICB1cGRhdGVfbWltZV9kYXRhYmFzZT0iJCh0b3BfYnVpbGRkaXIpL3VwZGF0ZS1taW1lLWRhdGFiYXNlJChFWEVFWFQpIgotIGVuZGlmCi0gCi0taW5zdGFsbC1kYXRhLWhvb2s6IGluc3RhbGwtYmluUFJPR1JBTVMKLSsjIGRvIE5PVCBtYWtlIHRoaXMgZGVwZW5kZW50IG9uIGFueXRoaW5nIQotKyMKLStpbnN0YWxsLWRhdGEtaG9vazoKLSBpZiBFTkFCTEVfVVBEQVRFX01JTUVEQgotIAkkKHVwZGF0ZV9taW1lX2RhdGFiYXNlKSAtViAiJChERVNURElSKSQoZGF0YWRpcikvbWltZSIKLSBlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vcGFyYWxsZWxtYWtlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vcGFyYWxsZWxtYWtlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWEzNGE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVRoZSBNYWtlZmlsZSB1c2VkIGJ5IHNoYXJlZC1taW1lLWluZm8gaXMgb25lIGJpZyByYWNlIHdpdGggdGhlIFNVQkRJUlMgCi1vcHRpb24gYW5kIHRoZSBkZXBlbmRlbmN5IHNwZWNpZmljYWxseSBjYWxsaW5nIG1ha2UgYWxsIGNvbWJpbmluZyB0bwotY3JlYXRlIG11bHRpcGxlIG1ha2UgaW5zdGFuY2VzIGFsbCBvZiB3aGljaCBtYXkgdHJ5IGFuZCBidWlsZCB0YXJnZXRzCi1saWtlIHVwZGF0ZS1taW1lLWRhdGFiYXNlLgotCi1UaGlzIHBhdGNoIHJlbW92ZXMgdGhvc2Ugb3B0aW9ucyBtZWFuaW5nIG1ha2UgY2FuIGNvcnJlY3RseSBpZGVudGlmeQotZGVwZW5kZW5jaWVzIGFuZCBzdG9wIGl0c2VsZiByYWNpbmcgaXRzZWxmLgotCi1SUCAxMC8xMC8yMDExCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1JbmRleDogc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzaGFyZWQtbWltZS1pbmZvLTEuOS5vcmlnL01ha2VmaWxlLmFtCi0rKysgc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KLUBAIC0xLDUgKzEsMyBAQAotLVNVQkRJUlM9LiBwbwotLQotIEFNX0NQUEZMQUdTID0gJChBTExfQ0ZMQUdTKQotIAotIHBhY2thZ2VzZGlyID0gJChkYXRhZGlyKS9taW1lL3BhY2thZ2VzCi1AQCAtODEsOCArNzksNyBAQCBlbmRpZgotIAotIGFsbDogJChkZWZhdWx0bWFrZWRlcHMpCi0gCi0tY3JlYXRlLXBvdDoKLS0JJChBTV9WX0dFTikgJChNQUtFKSAtQyBwbyBzaGFyZWQtbWltZS1pbmZvLnBvdAotK2NyZWF0ZS1wb3Q6IHBvCi0gCi0gbG9jYWwtdGVzdDogY3JlYXRlLXBvdCBmcmVlZGVza3RvcC5vcmcueG1sIHVwZGF0ZS1taW1lLWRhdGFiYXNlJChFWEVFWFQpCi0gaWYgQ1JPU1NfQ09NUElMSU5HCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZjMjEwYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHNoYXJlZC1taW1lLWluZm8uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9wYXJhbGxlbG1ha2UucGF0Y2ggXAotCSAgICBmaWxlOi8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MThjMmNlZDlkYzRkZDVjYThiMDZhNzU1ZTZkNjRlOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjI1YTgzYjQ4MzhiZWZjOGNhZmNkNTRlMzYxOTk0NjUxNWQ5ZTQ0ZDYzZDYxYzRhZGY3ZjU1MTNkZGZiZWJmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMDYwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb19naXQuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJTaGFyZWQgTUlNRSB0eXBlIGRhdGFiYXNlIGFuZCBzcGVjaWZpY2F0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3NoYXJlZC1taW1lLWluZm8iCitTRUNUSU9OID0gImJhc2UiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyA9ICJsaWJ4bWwyIGl0c3Rvb2wtbmF0aXZlIGdsaWItMi4wIHNoYXJlZC1taW1lLWluZm8tbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8uZ2l0O3Byb3RvY29sPWh0dHBzIgorU1JDUkVWID0gIjgyOWIyNmQ4NWU3ZDg5YTBjYWVlMDMwNDZjM2JjZTM3M2YwNGM4MGEiCitQViA9ICIxLjE1IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiUmVsZWFzZS0oP1A8cHZlcj4oXGQrKFwtXGQrKSspKSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBweXRob24zbmF0aXZlIG1pbWUKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taW1lIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy9zaGFyZWQtbWltZS1pbmZvLnBjIgorCisjIGZyZWVkZXNrdG9wLm9yZy54bWwgaXMgb25seSByZXF1aXJlZCB3aGVuIHVwZGF0aW5nIHRoZSBtaW1lIGRhdGFiYXNlLAorIyBwYWNrYWdlIGl0IHNlcGFyYXRlbHkKK1BBQ0tBR0VTID0rICJzaGFyZWQtbWltZS1pbmZvLWRhdGEiCitGSUxFU19zaGFyZWQtbWltZS1pbmZvLWRhdGEgPSAiJHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzL2ZyZWVkZXNrdG9wLm9yZy54bWwiCitSREVQRU5EU19zaGFyZWQtbWltZS1pbmZvLWRhdGEgPSAic2hhcmVkLW1pbWUtaW5mbyIKKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCXVwZGF0ZS1taW1lLWRhdGFiYXNlICR7RH0ke2RhdGFkaXJ9L21pbWUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkke0J9L3VwZGF0ZS1taW1lLWRhdGFiYXNlICR7RH0ke2RhdGFkaXJ9L21pbWUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvQ1ZFLTIwMjAtOTMyNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL0NWRS0yMDIwLTkzMjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVjYmJhYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL0NWRS0yMDIwLTkzMjcucGF0Y2gKQEAgLTAsMCArMSwxNDEgQEAKK0Zyb20gNDVkNDkxODUxZTFiY2EzNzhkZTE1OGE1ZTI3OWZkNTg0Y2U1NDhlNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJELiBSaWNoYXJkIEhpcHAiIDxkcmhAaHdhY2kuY29tPgorRGF0ZTogTW9uLCAxNyBGZWIgMjAyMCAwMDoxMjowNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBbUEFUQ0ggMS8yXSAgVGFrZSBjYXJlIHdoZW4gY2hlY2tpbmcgdGhlIHRhYmxlIG9mIGEgVEtfQ09MVU1OCisgIGV4cHJlc3Npb24gbm9kZSB0byBzZWUgaWYgdGhlIHRhYmxlIGlzIGEgdmlydHVhbCB0YWJsZSB0byBmaXJzdCBlbnN1cmUgdGhhdCAKKyB0aGUgRXhwci55LnBUYWIgcG9pbnRlciBpcyBub3QgbnVsbCBkdWUgdG8gZ2VuZXJhdGVkIGNvbHVtbiBvcHRpbWl6YXRpb25zLiAKKyBUaWNrZXQgWzQzNzQ4NjBiMjkzODMzODBdLgorCitGb3NzaWxPcmlnaW4tTmFtZTogOWQwZDRhYjk1ZGMwYzU2ZTA1M2MyOTI0ZWQzMjJhOWVhN2IyNTQzOWU2Zjc0NTk5ZjcwNjkwNWExOTk0ZTQ1NAorCitbUEFUQ0ggMi8yXSBBIGJldHRlciAoc21hbGxlciBhbmQgZmFzdGVyKSBzb2x1dGlvbiB0byB0aWNrZXQKKyBbNDM3NDg2MGIyOTM4MzM4MF0uCisKK0Zvc3NpbE9yaWdpbi1OYW1lOiBhYmM0NzNmYjhmYjk5OTAwNWRjNzlhMzYwZTM0Zjk3YjNiMjU0MjlkZWNmMTgyMGRkMmFmYTVjMTk1Nzc3NTNkCisKK1RoZSB0d28gcGF0Y2hlcyB3ZXJlIGNvbnZlcnRlZCB0byBhbWFsZ2FtYXRpb24gZm9ybWF0CisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDIwLTkzMjcKKy0tLQorIHNxbGl0ZTMuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgc3FsaXRlMy5oIHwgIDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3FsaXRlMy5jIGIvc3FsaXRlMy5jCitpbmRleCA1NWRjNjg2Li42NGZhZTA0IDEwMDY0NAorLS0tIGEvc3FsaXRlMy5jCisrKysgYi9zcWxpdGUzLmMKK0BAIC0xMTY3LDcgKzExNjcsNyBAQCBleHRlcm4gIkMiIHsKKyAqLworICNkZWZpbmUgU1FMSVRFX1ZFUlNJT04gICAgICAgICIzLjMxLjEiCisgI2RlZmluZSBTUUxJVEVfVkVSU0lPTl9OVU1CRVIgMzAzMTAwMQorLSNkZWZpbmUgU1FMSVRFX1NPVVJDRV9JRCAgICAgICIyMDIwLTAxLTI3IDE5OjU1OjU0IDNiZmE5Y2M5N2RhMTA1OTg1MjFiMzQyOTYxZGY4ZjVmNjhjNzM4OGZhMTE3MzQ1ZWViNTE2ZWFhODM3YmI0ZDYiCisrI2RlZmluZSBTUUxJVEVfU09VUkNFX0lEICAgICAgIjIwMjAtMDEtMjcgMTk6NTU6NTQgM2JmYTljYzk3ZGExMDU5ODUyMWIzNDI5NjFkZjhmNWY2OGM3Mzg4ZmExMTczNDVlZWI1MTZlYWE4MzdiYWx0MSIKKyAKKyAvKgorICoqIENBUEkzUkVGOiBSdW4tVGltZSBMaWJyYXJ5IFZlcnNpb24gTnVtYmVycworQEAgLTE3NDI4LDggKzE3NDI4LDExIEBAIHN0cnVjdCBUYWJsZSB7CisgKi8KKyAjaWZuZGVmIFNRTElURV9PTUlUX1ZJUlRVQUxUQUJMRQorICMgIGRlZmluZSBJc1ZpcnR1YWwoWCkgICAgICAoKFgpLT5uTW9kdWxlQXJnKQorKyMgIGRlZmluZSBFeHBySXNWdGFiKFgpICBcCisrICAgICAgICAgICAgICAoKFgpLT5vcD09VEtfQ09MVU1OICYmIChYKS0+eS5wVGFiIT0wICYmIChYKS0+eS5wVGFiLT5uTW9kdWxlQXJnKQorICNlbHNlCisgIyAgZGVmaW5lIElzVmlydHVhbChYKSAgICAgIDAKKysjICBkZWZpbmUgRXhwcklzVnRhYihYKSAgICAgMAorICNlbmRpZgorIAorIC8qCitAQCAtMTA0MTMzLDE5ICsxMDQxMzYsMjUgQEAgc3RhdGljIGludCBpbXBsaWVzTm90TnVsbFJvdyhXYWxrZXIgKnBXYWxrZXIsIEV4cHIgKnBFeHByKXsKKyAgICAgY2FzZSBUS19MVDoKKyAgICAgY2FzZSBUS19MRToKKyAgICAgY2FzZSBUS19HVDoKKy0gICAgY2FzZSBUS19HRToKKysgICAgY2FzZSBUS19HRTogeworKyAgICAgIEV4cHIgKnBMZWZ0ID0gcEV4cHItPnBMZWZ0OworKyAgICAgIEV4cHIgKnBSaWdodCA9IHBFeHByLT5wUmlnaHQ7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfRVEgKTsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19ORSApOworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX0xUICk7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfTEUgKTsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19HVCApOworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX0dFICk7CistICAgICAgaWYoIChwRXhwci0+cExlZnQtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBFeHByLT5wTGVmdC0+eS5wVGFiKSkKKy0gICAgICAgfHwgKHBFeHByLT5wUmlnaHQtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBFeHByLT5wUmlnaHQtPnkucFRhYikpCisrICAgICAgLyogVGhlIHkucFRhYj0wIGFzc2lnbm1lbnQgaW4gd2hlcmVjb2RlLmMgYWx3YXlzIGhhcHBlbnMgYWZ0ZXIgdGhlCisrICAgICAgKiogaW1wbGllc05vdE51bGxSb3coKSB0ZXN0ICovCisrICAgICAgaWYoIChwTGVmdC0+b3A9PVRLX0NPTFVNTiAmJiBBTFdBWVMocExlZnQtPnkucFRhYiE9MCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSXNWaXJ0dWFsKHBMZWZ0LT55LnBUYWIpKQorKyAgICAgICB8fCAocFJpZ2h0LT5vcD09VEtfQ09MVU1OICYmIEFMV0FZUyhwUmlnaHQtPnkucFRhYiE9MCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSXNWaXJ0dWFsKHBSaWdodC0+eS5wVGFiKSkKKyAgICAgICApeworLSAgICAgICByZXR1cm4gV1JDX1BydW5lOworKyAgICAgICAgcmV0dXJuIFdSQ19QcnVuZTsKKyAgICAgICB9CistCisrICAgIH0KKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gV1JDX0NvbnRpbnVlOworICAgfQorQEAgLTE0MjU5MSw3ICsxNDI2MDAsOCBAQCBzdGF0aWMgaW50IGlzQXV4aWxpYXJ5VnRhYk9wZXJhdG9yKAorICAgICAqKiAgICAgICBNQVRDSChleHByZXNzaW9uLHZ0YWJfY29sdW1uKQorICAgICAqLworICAgICBwQ29sID0gcExpc3QtPmFbMV0ucEV4cHI7CistICAgIGlmKCBwQ29sLT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwQ29sLT55LnBUYWIpICl7CisrICAgIHRlc3RjYXNlKCBwQ29sLT5vcD09VEtfQ09MVU1OICYmIHBDb2wtPnkucFRhYj09MCApOworKyAgICBpZiggRXhwcklzVnRhYihwQ29sKSApeworICAgICAgIGZvcihpPTA7IGk8QXJyYXlTaXplKGFPcCk7IGkrKyl7CisgICAgICAgICBpZiggc3FsaXRlM1N0cklDbXAocEV4cHItPnUuelRva2VuLCBhT3BbaV0uek9wKT09MCApeworICAgICAgICAgICAqcGVPcDIgPSBhT3BbaV0uZU9wMjsKK0BAIC0xNDI2MTMsNyArMTQyNjIzLDggQEAgc3RhdGljIGludCBpc0F1eGlsaWFyeVZ0YWJPcGVyYXRvcigKKyAgICAgKiogd2l0aCBmdW5jdGlvbiBuYW1lcyBpbiBhbiBhcmJpdHJhcnkgY2FzZS4KKyAgICAgKi8KKyAgICAgcENvbCA9IHBMaXN0LT5hWzBdLnBFeHByOworLSAgICBpZiggcENvbC0+b3A9PVRLX0NPTFVNTiAmJiBJc1ZpcnR1YWwocENvbC0+eS5wVGFiKSApeworKyAgICB0ZXN0Y2FzZSggcENvbC0+b3A9PVRLX0NPTFVNTiAmJiBwQ29sLT55LnBUYWI9PTAgKTsKKysgICAgaWYoIEV4cHJJc1Z0YWIocENvbCkgKXsKKyAgICAgICBzcWxpdGUzX3Z0YWIgKnBWdGFiOworICAgICAgIHNxbGl0ZTNfbW9kdWxlICpwTW9kOworICAgICAgIHZvaWQgKCp4Tm90VXNlZCkoc3FsaXRlM19jb250ZXh0KixpbnQsc3FsaXRlM192YWx1ZSoqKTsKK0BAIC0xNDI2MzYsMTAgKzE0MjY0NywxMiBAQCBzdGF0aWMgaW50IGlzQXV4aWxpYXJ5VnRhYk9wZXJhdG9yKAorICAgICBpbnQgcmVzID0gMDsKKyAgICAgRXhwciAqcExlZnQgPSBwRXhwci0+cExlZnQ7CisgICAgIEV4cHIgKnBSaWdodCA9IHBFeHByLT5wUmlnaHQ7CistICAgIGlmKCBwTGVmdC0+b3A9PVRLX0NPTFVNTiAmJiBJc1ZpcnR1YWwocExlZnQtPnkucFRhYikgKXsKKysgICAgdGVzdGNhc2UoIHBMZWZ0LT5vcD09VEtfQ09MVU1OICYmIHBMZWZ0LT55LnBUYWI9PTAgKTsKKysgICAgaWYoIEV4cHJJc1Z0YWIocExlZnQpICl7CisgICAgICAgcmVzKys7CisgICAgIH0KKy0gICAgaWYoIHBSaWdodCAmJiBwUmlnaHQtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBSaWdodC0+eS5wVGFiKSApeworKyAgICB0ZXN0Y2FzZSggcFJpZ2h0ICYmIHBSaWdodC0+b3A9PVRLX0NPTFVNTiAmJiBwUmlnaHQtPnkucFRhYj09MCApOworKyAgICBpZiggcFJpZ2h0ICYmIEV4cHJJc1Z0YWIocFJpZ2h0KSApeworICAgICAgIHJlcysrOworICAgICAgIFNXQVAoRXhwciosIHBMZWZ0LCBwUmlnaHQpOworICAgICB9CitAQCAtMjI4NDQwLDcgKzIyODQ1Myw3IEBAIFNRTElURV9BUEkgaW50IHNxbGl0ZTNfc3RtdF9pbml0KAorICNlbmRpZiAvKiAhZGVmaW5lZChTUUxJVEVfQ09SRSkgfHwgZGVmaW5lZChTUUxJVEVfRU5BQkxFX1NUTVRWVEFCKSAqLworIAorIC8qKioqKioqKioqKioqKiBFbmQgb2Ygc3RtdC5jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0jaWYgX19MSU5FX18hPTIyODQ0MworKyNpZiBfX0xJTkVfXyE9MjI4NDU2CisgI3VuZGVmIFNRTElURV9TT1VSQ0VfSUQKKyAjZGVmaW5lIFNRTElURV9TT1VSQ0VfSUQgICAgICAiMjAyMC0wMS0yNyAxOTo1NTo1NCAzYmZhOWNjOTdkYTEwNTk4NTIxYjM0Mjk2MWRmOGY1ZjY4YzczODhmYTExNzM0NWVlYjUxNmVhYTgzN2JhbHQyIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL3NxbGl0ZTMuaCBiL3NxbGl0ZTMuaAoraW5kZXggY2VmNmVlYS4uNWI5Nzk2YyAxMDA2NDQKKy0tLSBhL3NxbGl0ZTMuaAorKysrIGIvc3FsaXRlMy5oCitAQCAtMTI1LDcgKzEyNSw3IEBAIGV4dGVybiAiQyIgeworICovCisgI2RlZmluZSBTUUxJVEVfVkVSU0lPTiAgICAgICAgIjMuMzEuMSIKKyAjZGVmaW5lIFNRTElURV9WRVJTSU9OX05VTUJFUiAzMDMxMDAxCistI2RlZmluZSBTUUxJVEVfU09VUkNFX0lEICAgICAgIjIwMjAtMDEtMjcgMTk6NTU6NTQgM2JmYTljYzk3ZGExMDU5ODUyMWIzNDI5NjFkZjhmNWY2OGM3Mzg4ZmExMTczNDVlZWI1MTZlYWE4MzdiYjRkNiIKKysjZGVmaW5lIFNRTElURV9TT1VSQ0VfSUQgICAgICAiMjAyMC0wMS0yNyAxOTo1NTo1NCAzYmZhOWNjOTdkYTEwNTk4NTIxYjM0Mjk2MWRmOGY1ZjY4YzczODhmYTExNzM0NWVlYjUxNmVhYTgzN2JhbHQxIgorIAorIC8qCisgKiogQ0FQSTNSRUY6IFJ1bi1UaW1lIExpYnJhcnkgVmVyc2lvbiBOdW1iZXJzCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4zMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMThlZWIxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4zMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHNxbGl0ZTMuaW5jCi0KLUxJQ0VOU0UgPSAiUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcWxpdGUzLmg7ZW5kbGluZT0xMTttZDU9Nzg2ZDNkYzU4MWVmZjAzZjRmZDllNGE3N2VkMDBjNjYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTkvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTEyNTJkYzZiYzkwOTRiYTExYWIxNTFiYTY1MGZmM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM1YTUwZGIwODliZDJhMWIwOGRiYzViMDBkMjAyNzYwMmNhN2ZmMjM4YmE3NjU4ZmFiY2E0NTRkNDI5OGU2MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4zMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjMxLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU1NjRlMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4zMS4xLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgc3FsaXRlMy5pbmMKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNxbGl0ZS5vcmcvMjAyMC9zcWxpdGUtYXV0b2NvbmYtJHtTUUxJVEVfUFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC05MzI3LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjJkMGE1NTM1MzRjNTIxNTA0ZTNhYzNhZDNiOTBmMTI1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyMjg0ZWZlYmMwNWE3NmY5MDljNTgwZmZhNWMwMDhhN2QyMmExMjg3Mjg1ZDY4Yjc4MjVhMmI2YjUxOTQ5YWUiCisKKyMgLTE5MjQyIGlzIG9ubHkgYW4gaXNzdWUgaW4gc3BlY2lmaWMgZGV2ZWxvcG1lbnQgYnJhbmNoIGNvbW1pdHMKK0NWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTE5MjQyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vZmlsZXMvbm8tcGF0aC1hZGp1c3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9uby1wYXRoLWFkanVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMyZDgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vZmlsZXMvbm8tcGF0aC1hZGp1c3QucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAordmltOiBkbyBub3QgYWRqdXN0IHNjcmlwdCBwYXRobmFtZXMKKworV2hlbiBjcm9zcy1jb21waWxpbmcsIHdlIGRvIG5vdCB3YW50IHRvIHJlZmVyZW5jZSB0aGUgaG9zdCB2ZXJzaW9ucyBvZgordGhpbmdzIGxpa2UgcGVybCBhbmQgYXdrLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCistLS0gYS9zcmMvTWFrZWZpbGUKKysrKyBiL3NyYy9NYWtlZmlsZQorQEAgLTI1MDcsMTEgKzI1MDcsMTQgQEAgaW5zdGFsbHRvb2xzOiAkKFRPT0xTKSAkKERFU1RESVIpJChleGVjXworIAkJIHJtIC1yZiAkJGN2czsgXAorIAkgICAgICBmaQorIAktY2htb2QgJChGSUxFTU9EKSAkKERFU1RfVE9PTFMpLyoKKy0jIHJlcGxhY2UgdGhlIHBhdGggaW4gc29tZSB0b29scworKworKyMgcmVwbGFjZSB0aGUgcGF0aCBpbiBzb21lIHRvb2xzLCBidXQgbm90IHdoZW4gY3Jvc3MtY29tcGlsaW5nCisraWZuZXEgKCQoQ1JPU1NfQ09NUElMSU5HKSwxKQorIAlwZXJscGF0aD1gLi93aGljaC5zaCBwZXJsYCAmJiBzZWQgLWUgInMrL3Vzci9iaW4vcGVybCskJHBlcmxwYXRoKyIgJChUT09MU1NPVVJDRSkvZWZtX3BlcmwucGwgPiQoREVTVF9UT09MUykvZWZtX3BlcmwucGwKKyAJYXdrcGF0aD1gLi93aGljaC5zaCBuYXdrYCAmJiBzZWQgLWUgInMrL3Vzci9iaW4vbmF3ayskJGF3a3BhdGgrIiAkKFRPT0xTU09VUkNFKS9tdmUuYXdrID4kKERFU1RfVE9PTFMpL212ZS5hd2s7IGlmIHRlc3QgLXogIiQkYXdrcGF0aCI7IHRoZW4gXAorIAkJYXdrcGF0aD1gLi93aGljaC5zaCBnYXdrYCAmJiBzZWQgLWUgInMrL3Vzci9iaW4vbmF3ayskJGF3a3BhdGgrIiAkKFRPT0xTU09VUkNFKS9tdmUuYXdrID4kKERFU1RfVE9PTFMpL212ZS5hd2s7IGlmIHRlc3QgLXogIiQkYXdrcGF0aCI7IHRoZW4gXAorIAkJYXdrcGF0aD1gLi93aGljaC5zaCBhd2tgICYmIHNlZCAtZSAicysvdXNyL2Jpbi9uYXdrKyQkYXdrcGF0aCsiICQoVE9PTFNTT1VSQ0UpL212ZS5hd2sgPiQoREVTVF9UT09MUykvbXZlLmF3azsgZmk7IGZpCisrZW5kaWYKKyAJLWNobW9kICQoU0NSSVBUTU9EKSBgZ3JlcCAtbCAiXiMhIiAkKERFU1RfVE9PTFMpLypgCisgCisgIyBpbnN0YWxsIHRoZSBsYW5ndWFnZSBzcGVjaWZpYyBmaWxlcyBmb3IgdG9vbHMsIGlmIHRoZXkgd2VyZSB1bnBhY2tlZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4xLjE1MTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMS4xNTE4LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjIuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0uaW5jCmluZGV4IDBhMzFlNjguLjlmM2RjMDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLmluYwpAQCAtNSwyMCArNSwyNCBAQAogIyB2aW1kaWZmIGRvZXNuJ3QgbGlrZSBidXN5Ym94IGRpZmYKIFJTVUdHRVNUU18ke1BOfSA9ICJkaWZmdXRpbHMiCiBMSUNFTlNFID0gInZpbSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQ7ZW5kbGluZT0yODc7bWQ1PWYxZjgyYjQyMzYwMDA1YzcwYjhjMTliMGVmNDkzZjcyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcnVudGltZS9kb2MvdWdhbmRhLnR4dDtlbmRsaW5lPTI4NzttZDU9YTE5ZWRkN2VjNzBkNTczYTAwNWQ5ZTUwOTM3NWE5OWEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92aW0vdmltLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX2FjbF9oZWFkZXJfY2hlY2sucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdmltLWFkZC1rbm9iLXdoZXRoZXItZWxmLmgtYXJlLWNoZWNrZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtTWFrZWZpbGUtaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm8tcGF0aC1hZGp1c3QucGF0Y2ggXAogIgotU1JDUkVWID0gIjIwMmQ5ODJiMzZkODdjZjkxZDk5MmJkN2UzMGQzMjIzYmRjNzJjZDkiCitTUkNSRVYgPSAiOTgwNTY1MzNiOTZiNmI1ZDg4NDk2NDFkZTkzMTg1ZGQ3YmNhZGM0NCIKKworIyBEbyBub3QgY29uc2lkZXIgLnogaW4geC55LnosIGFzIHRoYXQgaXMgdXBkYXRlZCB3aXRoIGV2ZXJ5IGNvbW1pdAorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCspXC4wIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBWSU1ESVIgPSAidmltJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtYWx0ZXJuYXRpdmVzIG1pbWUteGRnCiAKIENMRUFOQlJPS0VOID0gIjEiCiAKQEAgLTc5LDEyICs4Myw2IEBACiBkb19pbnN0YWxsKCkgewogICAgIGF1dG90b29sc19kb19pbnN0YWxsCiAKLSAgICAjIFdvcmsgYXJvdW5kIGZpbGUtcmRlcHMgcGlja2luZyB1cCBjc2gsIGF3aywgcGVybCBvciBweXRob24gYXMgYSBkZXAKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzL3ZpbTEzMgotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvbXZlLmF3awotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvKi5wbAotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvKi5weQotCiAgICAgIyBJbnN0YWxsIGV4YW1wbGUgdmltcmMgZnJvbSBydW50aW1lIGZpbGVzCiAgICAgaW5zdGFsbCAtbSAwNjQ0IHJ1bnRpbWUvdmltcmNfZXhhbXBsZS52aW0gJHtEfS8ke2RhdGFkaXJ9LyR7QlBOfS92aW1yYwogCkBAIC0xMDcsNyArMTA1LDEyIEBACiBGSUxFU18ke1BOfS10dXRvciA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdHV0b3IgJHtiaW5kaXJ9LyR7QlBOfXR1dG9yIgogRklMRVNfJHtQTn0tdmltcmMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMiCiBGSUxFU18ke1BOfS1kYXRhID0gIiR7ZGF0YWRpcn0vJHtCUE59IgorCisjIFdlIGRvIG5vdCB3YW50IHRvIGNvbXBsYWluIGlmIHBlcmwgb3IgZ2F3ayBhcmUgbm90IG9uIHRoZSB0YXJnZXQuCisjCiBGSUxFU18ke1BOfS10b29scyA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMiCitJTlNBTkVfU0tJUF8ke1BOfS10b29scyA9ICJmaWxlLXJkZXBzIgorCiBGSUxFU18ke1BOfS1jb21tb24gPSAiIFwKICAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vKi52aW0gXAogICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9hdXRvbG9hZCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4xLjE1MTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4xLjE1MTguYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjIuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjU4LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQzODJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjU4LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIlZpcnR1YWwgdGVybWluYWwgZW11bGF0b3IgR1RLKyB3aWRnZXQgbGlicmFyeSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD12dGUiCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfbGlidnRlID0gIkxHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORy5HUEwzO21kNT0yZjMxYjI2NmQzNDQwZGQ3ZWU1MGY5MmNmNjdkOGU2YyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTEdQTDI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YjUyZjJkNTdkMTBjNGY3ZWU2N2E3ZWI5NjE1ZDVkMjQgXAotIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGxpYnhtbDItbmF0aXZlIGdwZXJmLW5hdGl2ZSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLUdJUl9NRVNPTl9PUFRJT04gPSAnZ2lyJwotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotIyB2YXBpZ2VuLm00IGlzIHJlcXVpcmVkIHdoZW4gdmFsYSBpcyBub3QgcHJlc2VudCAoYnV0IHRoZSBvbmUgZnJvbSB2YWxhIHNob3VsZCBiZSB1c2VkIG5vcm1hbGx5KQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtYXBwLmNjLXVzZS1vbGQtc2Nob29sLWFzaWdubWVudC10by1hdm9pZC1nY2MtNC44LWVyci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtV19FWElUQ09ERS1tYWNyby1mb3Itbm9uLWdsaWJjLXN5c3RlbXMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkYWRiZjJjMWQ5ODY0ZDNlYTE4NTczOGY5N2FiNjNhZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjMzYzk2NmQyYjFmMmMzYjBmOTQxNmRiY2E4ODNmZDc0NjE1OWI1YmQwNDAzNTBlM2I3OGY4MTA0YjJhNDJiYzAiCi0KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgotCi0jIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCi0jIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCi0KLSMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBTVEFHSU5HX0RBVEFESVIKLSMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCi0KLSMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgotfQotCi0jIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItRHZhcGk9dHJ1ZSwtRHZhcGk9ZmFsc2UsdmFsYS1uYXRpdmUgdmFsYSIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItRGdudXRscz10cnVlLC1EZ251dGxzPWZhbHNlLGdudXRscyIKLSMgdmFsYSByZXF1aXJlcyBnaXIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2NsYXNzLW5hdGl2ZSA9ICJ2YWxhIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLVBBQ0tBR0VTID0rICJsaWJ2dGUgJHtQTn0tcHJvbXB0IgotRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKLUZJTEVTXyR7UE59LXByb21wdCA9ICIke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjU4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFkYzJlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjU4LjMuYmIKQEAgLTAsMCArMSw1NiBAQAorU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFX2xpYnZ0ZSA9ICJMR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkcuR1BMMzttZDU9MmYzMWIyNjZkMzQ0MGRkN2VlNTBmOTJjZjY3ZDhlNmMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWI1MmYyZDU3ZDEwYzRmN2VlNjdhN2ViOTYxNWQ1ZDI0IFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitHSVJfTUVTT05fT1BUSU9OID0gJ2dpcicKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKKyMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWFwcC5jYy11c2Utb2xkLXNjaG9vbC1hc2lnbm1lbnQtdG8tYXZvaWQtZ2NjLTQuOC1lcnIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLVdfRVhJVENPREUtbWFjcm8tZm9yLW5vbi1nbGliYy1zeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjU5ZWIwNzg0YTM2MWMwOTM5YzAzZDQ1NjYyNTU5MTYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyMmRjYjU0YWMyYWQxYTU2YWIwYTc0NWUxNmNjZmViMzgzZjBiNTg2MGI1YmZhMTc4NDU2MTIxNmY5OGQ0OTc1IgorCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgorIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgorCisjIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgU1RBR0lOR19EQVRBRElSCisjIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcworZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgorCisjIEhlbHAgZy1pci1zY2FubmVyIGZpbmQgdGhlIC5zbyBmb3IgbGlua2luZworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKK30KKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLUR2YXBpPXRydWUsLUR2YXBpPWZhbHNlLHZhbGEtbmF0aXZlIHZhbGEiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLURnbnV0bHM9dHJ1ZSwtRGdudXRscz1mYWxzZSxnbnV0bHMiCisjIHZhbGEgcmVxdWlyZXMgZ2lyCitQQUNLQUdFQ09ORklHX3JlbW92ZV9jbGFzcy1uYXRpdmUgPSAidmFsYSIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorCitQQUNLQUdFUyA9KyAibGlidnRlICR7UE59LXByb21wdCIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCitGSUxFU18ke1BOfS1wcm9tcHQgPSAiJHtzeXNjb25mZGlyfS9wcm9maWxlLmQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL2FybS1jb21tb24gYi9wb2t5L21ldGEvc2l0ZS9hcm0tY29tbW9uCmluZGV4IDE5OGM5OGMuLjhjMzdmM2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL2FybS1jb21tb24KKysrIGIvcG9reS9tZXRhL3NpdGUvYXJtLWNvbW1vbgpAQCAtNCw5ICs0LDYgQEAKIGFjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KIGFjX2N2X2Z1bmNfc3RhdF9lbXB0eV9zdHJpbmdfYnVnPSR7YWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9bm99CiBhY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD0ke2FjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KIAogIyBiYXNoCiBhY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT15ZXN9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tZ2xpYmMgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tZ2xpYmMKaW5kZXggMTQ0M2Y4ZS4uYTA2ODBiYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLWdsaWJjCisrKyBiL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1nbGliYwpAQCAtMSw1ICsxLDYgQEAKICMgZ2VuZXJhbAogYWNfY3ZfaGF2ZV9kZWNsX3N5c19zaWdsaXN0PSR7YWNfY3ZfaGF2ZV9kZWNsX3N5c19zaWdsaXN0PXllc30KK2FjX2N2X2Z1bmNfY2FsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfY2FsbG9jXzBfbm9ubnVsbD15ZXN9CiBhY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9eWVzfQogYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9eWVzfQogYWNfY3ZfZnVuY19tYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX21hbGxvY193b3Jrcz15ZXN9CkBAIC0xNCw2ICsxNSw3IEBACiBhY19jdl9mdW5jX3Bvc2l4X2dldGdyZ2lkX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldGdyZ2lkX3I9eWVzfQogYWNfY3ZfdHlwZV91aWRfdD17YWNfY3ZfdHlwZV91aWRfdD15ZXN9CiBhY19jdl9mdW5jX2dldGFkZHJpbmZvPSR7YWNfY3ZfZnVuY19nZXRhZGRyaW5mbz15ZXN9CithY19jdl9mdW5jX3N0cnRvZD0ke2FjX2N2X2Z1bmNfc3RydG9kPXllc30KIAogIyBiYXNoCiBiYXNoX2N2X3VuZGVyX3N5c19zaWdsaXN0PSR7YmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdD15ZXN9CkBAIC0yOCw2ICszMCwxNCBAQAogCiAjIGNvcmV1dGlscwogZnVfY3Zfc3lzX3N0YXRfc3RhdGZzMl9ic2l6ZT0ke2Z1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9eWVzfQorZ2xfY3ZfZnVuY19nZXRjd2RfYWJvcnRfYnVnPSR7Z2xfY3ZfZnVuY19nZXRjd2RfYWJvcnRfYnVnPW5vfQorZ2xfY3ZfZnVuY19nZXRjd2RfbnVsbD0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX251bGw9eWVzfQorZ2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9tYXg9JHtnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21heD15ZXN9CithY19jdl9mdW5jX2dldGdyb3Vwc193b3Jrcz0ke2FjX2N2X2Z1bmNfZ2V0Z3JvdXBzX3dvcmtzPXllc30KK2dsX2N2X2Z1bmNfbmFub3NsZWVwPSR7Z2xfY3ZfZnVuY19uYW5vc2xlZXA9J25vIChtaXNoYW5kbGVzIGxhcmdlIGFyZ3VtZW50cyknfQorZ2xfY3ZfZnVuY193b3JraW5nX21rc3RlbXA9JHtnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcD15ZXN9CitnbF9jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPSR7Z2xfY3ZfZnVuY193b3JraW5nX21rdGltZT15ZXN9CitnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPSR7Z2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcz15ZXN9CiAKICMgZ2xpYgogZ2xpYl9jdl9zdHJsY3B5PSR7Z2xpYl9jdl9zdHJsY3B5PW5vfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4IGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4CmluZGV4IDcxZWM5NjEuLjFjMWZkYWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eAorKysgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKQEAgLTQ3LDggKzQ3LDEzIEBACiBod19jdl9mdW5jX3ZzbnByaW50Zl9jOTk9JHtod19jdl9mdW5jX3ZzbnByaW50Zl9jOTk9eWVzfQogCiAjIGNvcmV1dGlscworYWNfY3ZfZnVuY19jaG93bl93b3Jrcz0ke2FjX2N2X2Z1bmNfY2hvd25fd29ya3M9eWVzfQorYWNfY3ZfZnVuY191dGltZV9udWxsPSR7YWNfY3ZfZnVuY191dGltZV9udWxsPXllc30KIGdsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9JHtnbF9jdl9mdW5jX2ZzdGF0YXRfemVyb19mbGFnPXllc30KK2dsX2N2X2Z1bmNfbGlua19mb2xsb3dzX3N5bWxpbms9JHtnbF9jdl9mdW5jX2xpbmtfZm9sbG93c19zeW1saW5rPW5vfQorZ2xfY3ZfZnVuY191bmxpbmtfYnVzeV90ZXh0PSR7Z2xfY3ZfZnVuY191bmxpbmtfYnVzeV90ZXh0PXllc30KIGdsX2N2X2hhdmVfcHJvY191cHRpbWU9JHtnbF9jdl9oYXZlX3Byb2NfdXB0aW1lPXllc30KK2dsX2N2X3BpcGVzX2FyZV9maWZvcz0ke2dsX2N2X3BpcGVzX2FyZV9maWZvcz0neWVzICgxKSd9CiAKICMgbXlzcWwKIGFjX2N2X3N5c19yZXN0YXJ0YWJsZV9zeXNjYWxscz0ke2FjX2N2X3N5c19yZXN0YXJ0YWJsZV9zeXNjYWxscz15ZXN9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbCBiL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsCmluZGV4IDFiNGZjMzIuLjRiZThkMDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsCisrKyBiL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsCkBAIC0xLDkgKzEsMTEgQEAKICMgZ2VuZXJhbAogYWNfY3ZfaGF2ZV9kZWNsX3N5c19zaWdsaXN0PSR7YWNfY3ZfaGF2ZV9kZWNsX3N5c19zaWdsaXN0PW5vfQorYWNfY3ZfZnVuY19jYWxsb2NfMF9ub25udWxsPSR7YWNfY3ZfZnVuY19jYWxsb2NfMF9ub25udWxsPXllc30KIGFjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz15ZXN9CiBhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPSR7YWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD15ZXN9CiBhY19jdl9mdW5jX21hbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfbWFsbG9jX3dvcmtzPXllc30KIGFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD15ZXN9CithY19jdl9mdW5jX21lbWNtcF93b3JraW5nPSR7YWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz15ZXN9CiBhY19jdl9mdW5jX2dldHBncnBfdm9pZD15ZXMKIGFjX2N2X2Z1bmNfc2V0cGdycF92b2lkPXllcwogYWNfY3ZfZnVuY19zZXRncmVudF92b2lkPXllcwpAQCAtMTMsNiArMTUsNyBAQAogYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KIGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm89JHthY19jdl9mdW5jX2dldGFkZHJpbmZvPXllc30KIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9JHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllc30KK2FjX2N2X2Z1bmNfc3RydG9kPSR7YWNfY3ZfZnVuY19zdHJ0b2Q9eWVzfQogCiAjIGdsaWIKIGdsaWJfY3Zfc3RybGNweT0ke2dsaWJfY3Zfc3RybGNweT1ub30KQEAgLTMyLDkgKzM1LDE4IEBACiAKICMgY29yZXV0aWxzCiBmdV9jdl9zeXNfc3RhdF9zdGF0ZnMyX2JzaXplPSR7ZnVfY3Zfc3lzX3N0YXRfc3RhdGZzMl9ic2l6ZT15ZXN9CitnbF9jdl9mdW5jX2dldGN3ZF9hYm9ydF9idWc9JHtnbF9jdl9mdW5jX2dldGN3ZF9hYm9ydF9idWc9bm99CitnbF9jdl9mdW5jX2dldGN3ZF9udWxsPSR7Z2xfY3ZfZnVuY19nZXRjd2RfbnVsbD15ZXN9CitnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21heD0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4PSdubywgYnV0IGl0IGlzIHBhcnRseSB3b3JraW5nJ30KK2FjX2N2X2Z1bmNfZ2V0Z3JvdXBzX3dvcmtzPSR7YWNfY3ZfZnVuY19nZXRncm91cHNfd29ya3M9eWVzfQogZ2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfY2xvYmJlcj0ke2dsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9bm99CitnbF9jdl9mdW5jX25hbm9zbGVlcD0ke2dsX2N2X2Z1bmNfbmFub3NsZWVwPXllc30KK2dsX2N2X2Z1bmNfc3RydG9kX3dvcmtzPSR7Z2xfY3ZfZnVuY19zdHJ0b2Rfd29ya3M9eWVzfQogZ2xfY3ZfZnVuY190enNldF9jbG9iYmVyPSR7Z2xfY3ZfZnVuY190enNldF9jbG9iYmVyPW5vfQogZ2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfcG9zaXhfc2lnbmF0dXJlPSR7Z2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfcG9zaXhfc2lnbmF0dXJlPXllc30KK2dsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPSR7Z2xfY3ZfZnVuY193b3JraW5nX21rc3RlbXA9eWVzfQorZ2xfY3ZfZnVuY193b3JraW5nX21rdGltZT0ke2dsX2N2X2Z1bmNfd29ya2luZ19ta3RpbWU9eWVzfQorZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcz0ke2dsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9eWVzfQogYWNfY3ZfZnVuY19wb3NpeF9zcGF3bj0ke2FjX2N2X2Z1bmNfcG9zaXhfc3Bhd249eWVzfQogYWNfY3ZfZnVuY19wb3NpeF9zcGF3bl93b3Jrcz0ke2FjX2N2X2Z1bmNfcG9zaXhfc3Bhd25fd29ya3M9eWVzfQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbiBiL3Bva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCmluZGV4IGM1ZTM1NGMuLmEyMzg0MzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCisrKyBiL3Bva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCkBAIC0yNywxMCArMjcsNyBAQAogYWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9JHthY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD1ub30KIGFjX2N2X3ZhX3ZhbF9jb3B5PSR7YWNfY3ZfdmFfdmFsX2NvcHk9eWVzfQogCi1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm99Ci1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD1ub30KIGFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KIAogYWNfY3ZfcGF0aF9FU0RfQ09ORklHPW5vCiBsZl9jdl9zYW5lX3JlYWxsb2M9eWVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eCBiL3Bva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CmluZGV4IDY3YTNmYzguLjhhYzE5OGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CisrKyBiL3Bva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CkBAIC0yLDkgKzIsNiBAQAogYWNfY3ZfZnVuY19sc3RhdF9lbXB0eV9zdHJpbmdfYnVnPSR7YWNfY3ZfZnVuY19sc3RhdF9lbXB0eV9zdHJpbmdfYnVnPW5vfQogYWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX3N0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KIGFjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPSR7YWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9bm99Ci1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm99Ci1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD1ub30KLWFjX2N2X3NjdHA9JHthY19jdl9zY3RwPW5vfQogCiAjIGFwYWNoZQogYWNfY3Zfc2l6ZW9mX3NzaXplX3Q9JHthY19jdl9zaXplb2Zfc3NpemVfdD00fQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4IGIvcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4CmluZGV4IGYzN2U5MTUuLjE3MmEwNmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAorKysgYi9wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXgKQEAgLTM5LDEwICszOSw2IEBACiAjIGFwYWNoZQogYWNfY3Zfc2l6ZW9mX3NzaXplX3Q9JHthY19jdl9zaXplb2Zfc3NpemVfdD00fQogCi1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm99Ci1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD1ub30KLWFjX2N2X3NjdHA9JHthY19jdl9zY3RwPW5vfQotCiAjIHNzaAogYWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD0ke2FjX2N2X2RpcmVudF9oYXZlX3NwYWNlX2RfbmFtZT15ZXN9CiBhY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj0ke2FjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPW5vfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uIGIvcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uCmluZGV4IDk3Yzk2OTMuLjZiZGExYzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgorKysgYi9wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KQEAgLTMxLDEwICszMSw2IEBACiAjIGFwYWNoZQogYWNfY3Zfc2l6ZW9mX3NzaXplX3Q9JHthY19jdl9zaXplb2Zfc3NpemVfdD00fQogCi1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm99Ci1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD1ub30KLWFjX2N2X3NjdHA9JHthY19jdl9zY3RwPW5vfQotCiAjIHNzaAogYWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD0ke2FjX2N2X2RpcmVudF9oYXZlX3NwYWNlX2RfbmFtZT15ZXN9CiBhY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj0ke2FjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPW5vfQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2J1aWxkYWxsLXFlbXUgYi9wb2t5L3NjcmlwdHMvYnVpbGRhbGwtcWVtdQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jYTlhYWZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL2J1aWxkYWxsLXFlbXUKQEAgLTAsMCArMSwxMjAgQEAKKyMhL2Jpbi9zaAorIyAgQ29weXJpZ2h0IChjKSAyMDIwIFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisjCisjIGJ1aWxkYWxsLXFlbXU6IGEgdG9vbCBmb3IgYXV0b21hdGluZyBidWlsZCB0ZXN0aW5nIG9mIHJlY2lwZXMKKyMgVE9ETzogQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGluZyB3aGljaCBxZW11IGFyY2hpdGVjdHVyZXMgdG8gYnVpbGQKKyMgVE9ETzogQWRkIHN1cHBvcnQgZm9yIHF1ZXVlaW5nIHVwIG11bHRpcGxlIHJlY2lwZSBidWlsZHMKKyMgVE9ETzogQWRkIG1vcmUgbG9nZ2luZyBvcHRpb25zIChlLmcuIGxvY2FsLmNvbmYgaW5mbywgYml0YmFrZSBlbnYgaW5mbykKKwordXNhZ2UgKCkKK3sKKyAgICBiYXNlPSQoYmFzZW5hbWUgIiQwIikKKyAgICBlY2hvICJVc2FnZTogJGJhc2UgW29wdGlvbnNdIFtyZWNpcGVuYW1lL3RhcmdldF0iCisgICAgZWNobyAiRXhlY3V0ZXMgYSBidWlsZCBvZiBhIGdpdmVuIHRhcmdldCBmb3Igc2VsZWN0ZWQgTElCQ3MuIFdpdGggbm8gb3B0aW9ucywgZGVmYXVsdCB0byBib3RoIGxpYmMgYW5kIG11c2wuIgorICAgIGVjaG8gIk9wdGlvbnM6IgorICAgIGVjaG8gIi1sLCAtLWxpYmMgICAgICAgICAgICBTcGVjaWZ5IG9uZSBvZiBcImdsaWJjXCIgb3IgXCJtdXNsXCIiCit9CisKKworYnVpbGRhbGwgKCkKK3sKKyAgICAjIEdldCBwYXRoIHRvIG9lLWNvcmUgZGlyZWN0b3J5LiBTaW5jZSBvZS1pbml0LWJ1aWxkLWVudiBwcmVwZW5kcyAkUEFUSCB3aXRoCisgICAgIyB0aGUgcGF0aCB0byB0aGUgc2NyaXB0cyBkaXJlY3RvcnksIGdldCBpdCBmcm9tIHRoZXJlCisgICAgU0NSSVBUU19QQVRIPSIkKGVjaG8gIiRQQVRIIiB8IGN1dCAtZCAiOiIgLWYgMSkiCisgICAgT0VfQ09SRV9QQVRIPSQoZWNobyAiJFNDUklQVFNfUEFUSCIgfCBzZWQgJ3N8XCguKlwpLy4qfFwxfCcpIAorCisgICAgIyBHZXQgdGFyZ2V0IGxpc3QgYW5kIGhvc3QgbWFjaGluZSBpbmZvcm1hdGlvbgorICAgIFRBUkdFVF9MSVNUPSQoZmluZCAiJE9FX0NPUkVfUEFUSCIvbWV0YS9jb25mL21hY2hpbmUgLW1heGRlcHRoIDEgLXR5cGUgZiB8IGdyZXAgcWVtdSB8IHNlZCAnc3wuKi98fCcgfCBzZWQgLWUgJ3MvXC5jb25mLy8nKQorCisgICAgIyBTZXQgTElCQyB2YWx1ZSB0byB1c2UgZm9yIHRoZSBidWlsZHMgYmFzZWQgb24gb3B0aW9ucyBwcm92aWRlZCBieSB0aGUgdXNlcgorICAgIGlmIFsgLW4gIiQyIiBdCisgICAgdGhlbgorCUxJQkNfTElTVD0iJDIiCisJZWNobyAiJExJQkNfTElTVCIKKyAgICBlbHNlCisJTElCQ19MSVNUPSJnbGliYyBtdXNsIgorCWVjaG8gIiRMSUJDX0xJU1QiCisgICAgZmkKKworICAgIFNUQVJUX1RJTUU9JChkYXRlICIrJVktJW0tJWRfJUg6JU06JVMiKQorICAgIExPR19GSUxFPSIkMS1idWlsZGFsbC5sb2ciCisgICAgT1NfSU5GTz0kKGdyZXAgIlBSRVRUWV9OQU1FPSIgL2V0Yy9vcy1yZWxlYXNlIHwgYXdrIC1GICI9IiAne3ByaW50ICQyfScgfCBzZWQgLWUgJ3MvXiIvLycgLWUgJ3MvIiQvLycpCisKKyAgICAjIEFwcGVuZCBhbiBleGlzdGluZyBsb2cgZmlsZSBmb3IgdGhpcyBidWlsZCB3aXRoIC5vbGQgaWYgb25lIGV4aXN0cworICAgIGlmIFsgLWYgIiR7TE9HX0ZJTEV9IiBdIAorICAgIHRoZW4KKyAgICAgICBtdiAiJHtMT0dfRklMRX0iICIke0xPR19GSUxFfS5vbGQiCisgICAgZWxzZQorCSAgIHRvdWNoICIke0xPR19GSUxFfSIKKyAgICBmaQorCisgICAgIyBGaWxsIHRoZSBsb2cgZmlsZSB3aXRoIGJ1aWxkIGFuZCBob3N0IGluZm8KKyAgICBlY2hvICJCVUlMREFMTC1RRU1VIExPRyBGT1IgJDEiID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJTVEFSVCBUSU1FOiAke1NUQVJUX1RJTUV9IiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiSE9TVE5BTUU6ICQodW5hbWUgLW4pIiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiSE9TVCBPUzogJHtPU19JTkZPfSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIkhPU1QgS0VSTkVMOiAkKHVuYW1lIC1yKSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIj09PT09PT09PT09PT09PSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIkJVSUxEIFJFU1VMVFM6IiA+PiAiJHtMT0dfRklMRX0iCisKKyAgICAjIHN0YXJ0IHRoZSBidWlsZHMgZm9yIGVhY2ggTUFDSElORSBhbmQgVENMSUJDCisgICAgZm9yIGogaW4gJHtMSUJDX0xJU1R9IAorICAgIGRvCisJZWNobyAiWyRqXSIgPj4gIiR7TE9HX0ZJTEV9IgorCWZvciBpIGluICR7VEFSR0VUX0xJU1R9IAorCWRvCisJICAgIGVjaG8gIiRpIiAiJGoiOyBcCisJICAgIFRDTElCQz0kaiBNQUNISU5FPSRpIGJpdGJha2UgIiQxIiAmJiBlY2hvICJQQVNTOiAkaSIgPj4gIiR7TE9HX0ZJTEV9IiB8fCBlY2hvICJGQUlMOiAkaSIgPj4gIiR7TE9HX0ZJTEV9IgorCWRvbmUKKyAgICBkb25lCisKKyAgICAjIEdldCBwYXNzL2ZhaWwgdG90YWxzIGFuZCBhZGQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZSBsb2cKKyAgICBQQVNTRUQ9JChncmVwICJQQVNTOiIgIiR7TE9HX0ZJTEV9IiB8IHdjIC1sKQorICAgIEZBSUxFRD0kKGdyZXAgIkZBSUw6IiAiJHtMT0dfRklMRX0iIHwgd2MgLWwpCisKKyAgICBlY2hvICI9PT09PT09PT09PT09PT0iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJQQVNTRUQ6ICR7UEFTU0VEfSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIkZBSUxFRDogJHtGQUlMRUR9IiA+PiAiJHtMT0dfRklMRX0iCit9CisKKworIyBmYWlsIGVudGlyZSBzY3JpcHQgaWYgYW55IGNvbW1hbmQgZmFpbHMKK3NldCAtZQorCisjIHByaW50IHVzYWdlIGFuZCBleGl0IGlmIG5vdCBlbm91Z2ggYXJncyBnaXZlbgorWyAkIyAtZXEgMCBdICYmIHVzYWdlICYmIGV4aXQgMQorCisjIGhhbmRsZSBhcmd1bWVudHMKK1JFQ0lQRT0KK3doaWxlIFsgJCMgLWd0IDAgXQorZG8KKyAgICBhcmc9JDEKKyAgICBjYXNlICRhcmcgaW4KKwktbHwtLWxpYmMpCisJaWYgWyAiJDIiID0gImdsaWJjIiBdIHx8IFsgIiQyIiA9ICJtdXNsIiBdCisJdGhlbgorCSAgICBMSUJDX0xJU1Q9IiQyIgorCWVsc2UKKwkgICAgZWNobyAiVW5yZWNvZ25pemVkIGxpYmMgb3B0aW9uLiIKKwkgICAgdXNhZ2UgJiYgZXhpdCAxCisJZmkKKwlzaGlmdAorCXNoaWZ0CisJOzsKKwkqKQorICAgICAgICBSRUNJUEU9IiQxIgorCXNoaWZ0CisJOzsKKyAgICBlc2FjCitkb25lCisKK3NldCAtLSAiJFJFQ0lQRSIKKworIyBydW4gYnVpbGRhbGwgZm9yIHRoZSBnaXZlbiByZWNpcGUgYW5kIExJQkMKK2lmIFsgLW4gIiQxIiBdCit0aGVuCisJYnVpbGRhbGwgIiQxIiAiJExJQkNfTElTVCIKK2ZpCisKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9jb21iby1sYXllciBiL3Bva3kvc2NyaXB0cy9jb21iby1sYXllcgppbmRleCA5YjUwZTk4Li5hNjM0ZGQ2IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIKKysrIGIvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyCkBAIC04MCw3ICs4MCw3IEBACiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiTG9hZGluZyBjb25maWcgZmlsZSAlcyIgJSBzZWxmLmNvbmZmaWxlKQogICAgICAgICBzZWxmLnBhcnNlciA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQogICAgICAgICB3aXRoIG9wZW4oc2VsZi5jb25mZmlsZSkgYXMgZjoKLSAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlYWRmcChmKQorICAgICAgICAgICAgc2VsZi5wYXJzZXIucmVhZF9maWxlKGYpCiAKICAgICAgICAgIyBpbml0aWFsaXplIGRlZmF1bHQgdmFsdWVzCiAgICAgICAgIHNlbGYuY29tbWl0X21zZ190ZW1wbGF0ZSA9ICJBdXRvbWF0aWMgY29tbWl0IHRvIHVwZGF0ZSBsYXN0X3JldmlzaW9uIgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLXBsb3Quc2ggYi9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMtcGxvdC5zaAppbmRleCA4OTg4MzRlLi40NWMyN2QwIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMtcGxvdC5zaAorKysgYi9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMtcGxvdC5zaApAQCAtMzksNyArMzksMTAgQEAKIAogQlNfRElSPSJ0bXAvYnVpbGRzdGF0cyIKIE49MTAKK1JFQ0lQRT0iIgorVEFTS1M9ImNvbXBpbGU6Y29uZmlndXJlOmZldGNoOmluc3RhbGw6cGF0Y2g6cG9wdWxhdGVfbGljOnBvcHVsYXRlX3N5c3Jvb3Q6dW5wYWNrIgogU1RBVFM9InV0aW1lIgorQUNDVU1VTEFURT0iIgogU1VNPSIiCiBPVVREQVRBX0ZJTEU9IiRQV0QvYnVpbGRzdGF0cy1wbG90Lm91dCIKIApAQCAtNTEsMTEgKzU0LDE1IEBACiAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkQlNfRElSIikKICAgLW4gTiAgICAgICAgICBUb3AgTiByZWNpcGVzIHRvIGRpc3BsYXkuIElnbm9yZWQgaWYgLVMgaXMgcHJlc2VudAogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJE4iKQorICAtciByZWNpcGUgICAgIFRoZSByZWNpcGUgbWFzayB0byBiZSBzZWFyY2hlZAorICAtdCB0YXNrcyAgICAgIFRoZSB0YXNrcyB0byBiZSBjb21wdXRlZAorICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJFRBU0tTIikKICAgLXMgc3RhdHMgICAgICBUaGUgc3RhdHMgdG8gYmUgbWF0Y2hlZC4gSWYgbW9yZSB0aGF0IG9uZSBzdGF0LCB1bml0cwogICAgICAgICAgICAgICAgIHNob3VsZCBiZSB0aGUgc2FtZSBiZWNhdXNlIGRhdGEgaXMgcGxvdCBhcyBoaXN0b2dyYW0uCiAgICAgICAgICAgICAgICAgKHNlZSBidWlsZHN0YXRzLnNoIC1oIGZvciBhbGwgb3B0aW9ucykgb3IgYW55IG90aGVyIGRlZmluZWQKICAgICAgICAgICAgICAgICAoYnVpbGQpc3RhdCBzZXBhcmF0ZWQgYnkgY29sb25zLCBpLmUuIHN0aW1lOnV0aW1lCiAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkU1RBVFMiKQorICAtYSAgICAgICAgICAgIEFjY3VtdWxhdGUgYWxsIHN0YXRzIHZhbHVlcyBmb3IgZm91bmQgcmVjaXBlcwogICAtUyAgICAgICAgICAgIFN1bSB2YWx1ZXMgZm9yIGEgcGFydGljdWxhciBzdGF0IGZvciBmb3VuZCByZWNpcGVzCiAgIC1vICAgICAgICAgICAgT3V0cHV0IGRhdGEgZmlsZS4KICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRPVVREQVRBX0ZJTEUiKQpAQCAtNjQsMzIgKzcxLDQxIEBACiB9CiAKICMgUGFyc2UgYW5kIHZhbGlkYXRlIGFyZ3VtZW50cwotd2hpbGUgZ2V0b3B0cyAiYjpuOnM6bzpTaCIgT1BUOyBkbwotCWNhc2UgJE9QVCBpbgotCWIpCi0JCUJTX0RJUj0iJE9QVEFSRyIKLQkJOzsKLQluKQotCQlOPSIkT1BUQVJHIgotCQk7OwotCXMpCi0JICAgICAgICBTVEFUUz0iJE9QVEFSRyIKLQkgICAgICAgIDs7Ci0JUykKLQkgICAgICAgIFNVTT0ieSIKLQkgICAgICAgIDs7Ci0JbykKLQkgICAgICAgIE9VVERBVEFfRklMRT0iJE9QVEFSRyIKLQkgICAgICAgIDs7Ci0JaCkKLQkJdXNhZ2UKLQkJZXhpdCAwCi0JCTs7Ci0JKikKLQkJdXNhZ2UKLQkJZXhpdCAxCi0JCTs7Ci0JZXNhYword2hpbGUgZ2V0b3B0cyAiYjpuOnI6dDpzOm86YVNoIiBPUFQ7IGRvCisgICAgY2FzZSAkT1BUIGluCisgICAgYikKKyAgICAgICAgQlNfRElSPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIG4pCisgICAgICAgIE49IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgcikKKyAgICAgICAgUkVDSVBFPSItciAkT1BUQVJHIgorICAgICAgICA7OworICAgIHQpCisgICAgICAgIFRBU0tTPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIHMpCisgICAgICAgIFNUQVRTPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIGEpCisgICAgICAgIEFDQ1VNVUxBVEU9Ii1hIgorICAgICAgICA7OworICAgIFMpCisgICAgICAgIFNVTT0ieSIKKyAgICAgICAgOzsKKyAgICBvKQorICAgICAgICBPVVREQVRBX0ZJTEU9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgaCkKKyAgICAgICAgdXNhZ2UKKyAgICAgICAgZXhpdCAwCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgdXNhZ2UKKyAgICAgICAgZXhpdCAxCisgICAgICAgIDs7CisgICAgZXNhYwogZG9uZQogCiAjIEdldCBudW1iZXIgb2Ygc3RhdHMKQEAgLTEwMSwxMCArMTE3LDEwIEBACiAKICMgUGFyc2UgYnVpbGRzdGF0cyByZWNpcGVzIHRvIHByb2R1Y2UgYSBzaW5nbGUgdGFibGUKIE9VVEJVSUxEU1RBVFM9IiRQV0QvYnVpbGRzdGF0cy5sb2ciCi0kQ0QvYnVpbGRzdGF0cy5zaCAtSCAtcyAiJFNUQVRTIiAtSCA+ICRPVVRCVUlMRFNUQVRTCiskQ0QvYnVpbGRzdGF0cy5zaCAtYiAiJEJTX0RJUiIgLXMgIiRTVEFUUyIgLXQgIiRUQVNLUyIgJFJFQ0lQRSAkQUNDVU1VTEFURSAtSCA+ICRPVVRCVUlMRFNUQVRTCiAKICMgR2V0IGhlYWRlcnMKLUhFQURFUlM9JChjYXQgJE9VVEJVSUxEU1RBVFMgfCBzZWQgLW4gLWUgJzFzLyAvLS9nJyAtZSAnMXMvOi8gL2dwJykKK0hFQURFUlM9JChjYXQgJE9VVEJVSUxEU1RBVFMgfCBzZWQgLW4gLWUgJ3MvXCguKlwpLyJcMSIvJyAtZSAnMXMvIC9cXFxcXFxcXCAvZycgLWUgJ3MvXy9cXFxcXFxcXF8vZycgLWUgJzFzLzovIiAiL2dwJykKIAogZWNobyAtZSAic2V0IGJveHdpZHRoIDAuOSByZWxhdGl2ZSIKIGVjaG8gLWUgInNldCBzdHlsZSBkYXRhIGhpc3RvZ3JhbXMiCkBAIC0xMTMsNyArMTI5LDcgQEAKIAogIyBHZXQgb3V0cHV0IGRhdGEKIGlmIFsgLXogIiRTVU0iIF07IHRoZW4KLSAgICBjYXQgJE9VVEJVSUxEU1RBVFMgfCBzZWQgLWUgJzFkJyB8IHNvcnQgLWszIC1uIC1yIHwgaGVhZCAtJE4gPiAkT1VUREFUQV9GSUxFCisgICAgY2F0ICRPVVRCVUlMRFNUQVRTIHwgc2VkIC1lICcxZCcgLWUgJ3MvXy9cXFxcXy9nJyB8IHNvcnQgLWszIC1uIC1yIHwgaGVhZCAtJE4gPiAkT1VUREFUQV9GSUxFCiAgICAgIyBpbmNsdWRlIHRhc2sgYXQgcmVjaXBlIGNvbHVtbgogICAgIHNlZCAtaSAtZSAiMWlcCiAke0hFQURFUlN9IiAkT1VUREFUQV9GSUxFCkBAIC0xMjUsOCArMTQxLDggQEAKICAgICBkZWNsYXJlIC1hIHN1bWFyZ3MKICAgICBqPTAKICAgICBmb3IgaSBpbiBgc2VxICRuc3RhdHNgOyBkbwotCXN1bWFyZ3Nbal09c3VtOyBqPSQoKCAkaiArIDEgKSkKLQlzdW1hcmdzW2pdPWBleHByIDMgKyAkaSAtIDFgOyAgaj0kKCggJGogKyAxICkpCisgICAgICAgIHN1bWFyZ3Nbal09c3VtOyBqPSQoKCAkaiArIDEgKSkKKyAgICAgICAgc3VtYXJnc1tqXT1gZXhwciAzICsgJGkgLSAxYDsgIGo9JCgoICRqICsgMSApKQogICAgIGRvbmUKIAogICAgICMgRG8gdGhlIHByb2Nlc3Npbmcgd2l0aCBkYXRhbWFzaApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLnNoIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLnNoCmluZGV4IGU5ZWMyZDQuLmU0NWNmYzEgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy5zaAorKysgYi9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMuc2gKQEAgLTM2LDggKzM2LDEwIEBACiBDaGlsZCBydXNhZ2UgcnVfbml2Y3N3IgogCiBCU19ESVI9InRtcC9idWlsZHN0YXRzIgorUkVDSVBFPSIiCiBUQVNLUz0iY29tcGlsZTpjb25maWd1cmU6ZmV0Y2g6aW5zdGFsbDpwYXRjaDpwb3B1bGF0ZV9saWM6cG9wdWxhdGVfc3lzcm9vdDp1bnBhY2siCiBTVEFUUz0iJFRJTUUiCitBQ0NVTVVMQVRFPSIiCiBIRUFERVI9IiIgIyBObyBoZWFkZXIgYnkgZGVmYXVsdAogCiBmdW5jdGlvbiB1c2FnZSB7CkBAIC00Niw2ICs0OCw3IEBACiBVc2FnZTogJENNRCBbLWIgYnVpbGRzdGF0c19kaXJdIFstdCBkb190YXNrXQogICAtYiBidWlsZHN0YXRzIFRoZSBwYXRoIHdoZXJlIHRoZSBmb2xkZXIgcmVzaWRlcwogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJEJTX0RJUiIpCisgIC1yIHJlY2lwZSAgICAgVGhlIHJlY2lwZSB0byBiZSBjb21wdXRlZAogICAtdCB0YXNrcyAgICAgIFRoZSB0YXNrcyB0byBiZSBjb21wdXRlZAogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJFRBU0tTIikKICAgLXMgc3RhdHMgICAgICBUaGUgc3RhdHMgdG8gYmUgbWF0Y2hlZC4gT3B0aW9uczogVElNRSwgSU8sIFJVU0FHRSwgQ0hJTERfUlVTQUdFCkBAIC01Niw4NyArNTksMTA5IEBACiAgICAgICAgICAgICAgICAgICAgIElPPSRJTwogICAgICAgICAgICAgICAgICAgICBSVVNBR0U9JFJVU0FHRQogICAgICAgICAgICAgICAgICAgICBDSElMRF9SVVNBR0U9JENISUxEX1JVU0FHRQorICAtYSAgICAgICAgICAgIEFjY3VtdWxhdGUgYWxsIHN0YXRzIHZhbHVlcyBmb3IgZm91bmQgcmVjaXBlcwogICAtaCAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UKIEVPTQogfQogCiAjIFBhcnNlIGFuZCB2YWxpZGF0ZSBhcmd1bWVudHMKLXdoaWxlIGdldG9wdHMgImI6dDpzOkhoIiBPUFQ7IGRvCi0JY2FzZSAkT1BUIGluCi0JYikKLQkJQlNfRElSPSIkT1BUQVJHIgotCQk7OwotCXQpCi0JCVRBU0tTPSIkT1BUQVJHIgotCQk7OwotCXMpCi0JCVNUQVRTPSIkT1BUQVJHIgotCQk7OwotCUgpCi0JICAgICAgICBIRUFERVI9InkiCi0JICAgICAgICA7OwotCWgpCi0JCXVzYWdlCi0JCWV4aXQgMAotCQk7OwotCSopCi0JCXVzYWdlCi0JCWV4aXQgMQotCQk7OwotCWVzYWMKK3doaWxlIGdldG9wdHMgImI6cjp0OnM6YUhoIiBPUFQ7IGRvCisgICAgY2FzZSAkT1BUIGluCisgICAgYikKKyAgICAgICAgQlNfRElSPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIHIpCisgICAgICAgIFJFQ0lQRT0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICB0KQorICAgICAgICBUQVNLUz0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBzKQorICAgICAgICBTVEFUUz0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBhKQorICAgICAgICBBQ0NVTVVMQVRFPSJ5IgorICAgICAgICA7OworICAgIEgpCisgICAgICAgIEhFQURFUj0ieSIKKyAgICAgICAgOzsKKyAgICBoKQorICAgICAgICB1c2FnZQorICAgICAgICBleGl0IDAKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICB1c2FnZQorICAgICAgICBleGl0IDEKKyAgICAgICAgOzsKKyAgICBlc2FjCiBkb25lCiAKICMgRW5zdXJlIHRoZSBidWlsZHN0YXRzIGZvbGRlciBleGlzdHMKIGlmIFsgISAtZCAiJEJTX0RJUiIgXTsgdGhlbgotCWVjaG8gIkVSUk9SOiAkQlNfRElSIGRvZXMgbm90IGV4aXN0IgotCXVzYWdlCi0JZXhpdCAxCisgICAgZWNobyAiRVJST1I6ICRCU19ESVIgZG9lcyBub3QgZXhpc3QiCisgICAgdXNhZ2UKKyAgICBleGl0IDEKIGZpCiAKIHN0YXRzPSIiCiBJRlM9IjoiCiBmb3Igc3RhdCBpbiAke1NUQVRTfTsgZG8KLQljYXNlICRzdGF0IGluCi0JICAgIFRJTUUpCi0JCXN0YXRzPSIke3N0YXRzfToke1RJTUV9IgotCQk7OwotCSAgICBJTykKLQkJc3RhdHM9IiR7c3RhdHN9OiR7SU99IgotCQk7OwotCSAgICBSVVNBR0UpCi0JCXN0YXRzPSIke3N0YXRzfToke1JVU0FHRX0iCi0JCTs7Ci0JICAgIENISUxEX1JVU0FHRSkKLQkJc3RhdHM9IiR7c3RhdHN9OiR7Q0hJTERfUlVTQUdFfSIKLQkJOzsKLQkgICAgKikKLQkJc3RhdHM9IiR7U1RBVFN9IgotCWVzYWMKKyAgICBjYXNlICRzdGF0IGluCisgICAgICAgIFRJTUUpCisgICAgICAgICAgICBzdGF0cz0iJHtzdGF0c306JHtUSU1FfSIKKyAgICAgICAgICAgIDs7CisgICAgICAgIElPKQorICAgICAgICAgICAgc3RhdHM9IiR7c3RhdHN9OiR7SU99IgorICAgICAgICAgICAgOzsKKyAgICAgICAgUlVTQUdFKQorICAgICAgICAgICAgc3RhdHM9IiR7c3RhdHN9OiR7UlVTQUdFfSIKKyAgICAgICAgICAgIDs7CisgICAgICAgIENISUxEX1JVU0FHRSkKKyAgICAgICAgICAgIHN0YXRzPSIke3N0YXRzfToke0NISUxEX1JVU0FHRX0iCisgICAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICAgc3RhdHM9IiR7U1RBVFN9IgorICAgICAgICAgICAgOzsKKyAgICBlc2FjCiBkb25lCiAKICMgcmVtb3ZlIHBvc3NpYmxlIGNvbG9uIGF0IHRoZSBiZWdpbm5pbmcKIHN0YXRzPSIkKGVjaG8gIiRzdGF0cyIgfCBzZWQgLWUgJ3MvXjovLzEnKSIKIAogIyBQcm92aWRlIGEgaGVhZGVyIGlmIHJlcXVpcmVkIGJ5IHRoZSB1c2VyCi1bIC1uICIkSEVBREVSIiBdICYmIHsgZWNobyAidGFzazpyZWNpcGU6JHN0YXRzIjsgfQoraWYgWyAtbiAiJEhFQURFUiIgXSA7IHRoZW4KKyAgICBpZiBbIC1uICIkQUNDVU1VTEFURSIgXTsgdGhlbgorICAgICAgICBlY2hvICJ0YXNrOnJlY2lwZTphY2N1bXVsYXRlZCgke3N0YXRzLy86Lzt9KSIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gInRhc2s6cmVjaXBlOiRzdGF0cyIKKyAgICBmaQorZmkKIAogZm9yIHRhc2sgaW4gJHtUQVNLU307IGRvCiAgICAgdGFzaz0iZG9fJHt0YXNrfSIKLSAgICBmb3IgZmlsZSBpbiAkKGZpbmQgJHtCU19ESVJ9IC10eXBlIGYgLW5hbWUgJHt0YXNrfSB8IGF3ayAnQkVHSU57IE9SUz0iIjsgT0ZTPSI6IiB9IHsgcHJpbnQgJDAsIiIgfScpOyBkbworICAgIGZvciBmaWxlIGluICQoZmluZCAke0JTX0RJUn0gLXR5cGUgZiAtcGF0aCAqJHtSRUNJUEV9Ki8ke3Rhc2t9IHwgYXdrICdCRUdJTnsgT1JTPSIiOyBPRlM9IjoiIH0geyBwcmludCAkMCwiIiB9Jyk7IGRvCiAgICAgICAgIHJlY2lwZT0iJChiYXNlbmFtZSAkKGRpcm5hbWUgJGZpbGUpKSIKLQl0aW1lcz0iIgotCWZvciBzdGF0IGluICR7c3RhdHN9OyBkbwotCSAgICBbIC16ICIkc3RhdCIgXSAmJiB7IGVjaG8gImVtcHR5IHN0YXRzIjsgfQotCSAgICB0aW1lPSQoc2VkIC1uIC1lICJzL15cKCRzdGF0XCk6IFxcKC4qXFwpL1xcMi9wIiAkZmlsZSkKLQkgICAgIyBpbiBjYXNlIHRoZSBzdGF0IGlzIG5vdCBwcmVzZW50LCBzZXQgdGhlIHZhbHVlIGFzIE5BCi0JICAgIFsgLXogIiR0aW1lIiBdICYmIHsgdGltZT0iTkEiOyB9Ci0JICAgICMgQXBwZW5kIGl0IHRvIHRpbWVzCi0JICAgIGlmIFsgLXogIiR0aW1lcyIgXTsgdGhlbgotCQl0aW1lcz0iJHt0aW1lfSIKLQkgICAgZWxzZQotCQl0aW1lcz0iJHt0aW1lc30gJHt0aW1lfSIKLQkgICAgZmkKLQlkb25lCisgICAgICAgIHRpbWVzPSIiCisgICAgICAgIGZvciBzdGF0IGluICR7c3RhdHN9OyBkbworICAgICAgICAgICAgWyAteiAiJHN0YXQiIF0gJiYgeyBlY2hvICJlbXB0eSBzdGF0cyI7IH0KKyAgICAgICAgICAgIHRpbWU9JChzZWQgLW4gLWUgInMvXlwoJHN0YXRcKTogXFwoLipcXCkvXFwyL3AiICRmaWxlKQorICAgICAgICAgICAgIyBpbiBjYXNlIHRoZSBzdGF0IGlzIG5vdCBwcmVzZW50LCBzZXQgdGhlIHZhbHVlIGFzIE5BCisgICAgICAgICAgICBbIC16ICIkdGltZSIgXSAmJiB7IHRpbWU9Ik5BIjsgfQorICAgICAgICAgICAgIyBBcHBlbmQgaXQgdG8gdGltZXMKKyAgICAgICAgICAgIGlmIFsgLXogIiR0aW1lcyIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHRpbWVzPSIke3RpbWV9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRpbWVzPSIke3RpbWVzfSAke3RpbWV9IgorICAgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgICAgICBpZiBbIC1uICIkQUNDVU1VTEFURSIgXTsgdGhlbgorICAgICAgICAgICAgSUZTPScgJzsgdmFsdWVzYXJyYXk9KCR7dGltZXN9KTsgSUZTPSc6JworICAgICAgICAgICAgdGltZXM9MAorICAgICAgICAgICAgZm9yIHZhbHVlIGluICIke3ZhbHVlc2FycmF5W0BdfSI7IGRvCisgICAgICAgICAgICAgICAgWyAiJHZhbHVlIiA9PSAiTkEiIF0gJiYgeyBlY2hvICJFUlJPUjogc3RhdCBpcyBub3QgcHJlc2VudC4iOyB1c2FnZTsgZXhpdCAxOyB9CisgICAgICAgICAgICAgICAgdGltZXM9JCgoICR0aW1lcyArICR2YWx1ZSApKQorICAgICAgICAgICAgZG9uZQorICAgICAgICBmaQogICAgICAgICBlY2hvICIke3Rhc2t9ICR7cmVjaXBlfSAke3RpbWVzfSIKICAgICBkb25lCiBkb25lCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvZ2VuLWxvY2tlZHNpZy1jYWNoZSBiL3Bva3kvc2NyaXB0cy9nZW4tbG9ja2Vkc2lnLWNhY2hlCmluZGV4IDliZmFlOWQuLmNkOGY5YTQgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9nZW4tbG9ja2Vkc2lnLWNhY2hlCisrKyBiL3Bva3kvc2NyaXB0cy9nZW4tbG9ja2Vkc2lnLWNhY2hlCkBAIC03OCwxMSArNzgsMTUgQEAKIHNzdGF0ZV9jb250ZW50X2NhY2hlID0ge30KIGZvciBzIGluIHNpZ3M6CiAgICAgcHJlZml4ID0gc1s6Ml0KKyAgICBwcmVmaXgyID0gc1syOjRdCiAgICAgaWYgcHJlZml4IG5vdCBpbiBzc3RhdGVfY29udGVudF9jYWNoZToKLSAgICAgICAgc3N0YXRlX2NvbnRlbnRfY2FjaGVbcHJlZml4XSA9IGJ1aWxkX3NoYV9jYWNoZShwcmVmaXgpCisgICAgICAgIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF0gPSB7fQorICAgIGlmIHByZWZpeDIgbm90IGluIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF06CisgICAgICAgIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF1bcHJlZml4Ml0gPSBidWlsZF9zaGFfY2FjaGUocHJlZml4ICsgIi8iICsgcHJlZml4MikKIAotICAgIGZvciBmIGluIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF1bc106Ci0gICAgICAgIGZpbGVzLmFkZChmKQorICAgIGlmIHMgaW4gc3N0YXRlX2NvbnRlbnRfY2FjaGVbcHJlZml4XVtwcmVmaXgyXToKKyAgICAgICAgZm9yIGYgaW4gc3N0YXRlX2NvbnRlbnRfY2FjaGVbcHJlZml4XVtwcmVmaXgyXVtzXToKKyAgICAgICAgICAgIGZpbGVzLmFkZChmKQogCiBlbGFwc2VkID0gdGltZS5wZXJmX2NvdW50ZXIoKSAtIHN0YXJ0X3RpbWUKIHByaW50KCJHYXRoZXJpbmcgZmlsZSBsaXN0IHRvb2sgJS4xZnMiICUgZWxhcHNlZCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMgYi9wb2t5L3NjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM2YjNhMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzCkBAIC0wLDAgKzEsMzM5IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgQnVpbGR0b29scyBhbmQgYnVpbGR0b29scyBleHRlbmRlZCBpbnN0YWxsZXIgaGVscGVyIHNjcmlwdAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisjCisjICBOT1RFOiAtLXdpdGgtZXh0ZW5kZWQtYnVpbGR0b29scyBpcyBvbiBieSBkZWZhdWx0CisjCisjICBFeGFtcGxlIHVzYWdlIChleHRlbmRlZCBidWlsZHRvb2xzIGZyb20gbWlsZXN0b25lKToKKyMgICAgKDEpIHVzaW5nIC0tdXJsIGFuZCAtLWZpbGVuYW1lCisjICAgICAgICAkIGluc3RhbGwtYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tdXJsIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0by9taWxlc3RvbmVzL3lvY3RvLTMuMV9NMy9idWlsZHRvb2xzIFwKKyMgICAgICAgICAgLS1maWxlbmFtZSB4ODZfNjQtYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0zLjArc25hcHNob3QtMjAyMDAzMTUuc2gKKyMgICAgKDIpIHVzaW5nIC0tYmFzZS11cmwsIC0tcmVsZWFzZSwgLS1pbnN0YWxsZXItdmVyc2lvbiBhbmQgLS1idWlsZC1kYXRlCisjICAgICAgICAkIGluc3RhbGwtYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tYmFzZS11cmwgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3lvY3RvIFwKKyMgICAgICAgICAgLS1yZWxlYXNlIHlvY3RvLTMuMV9NMyBcCisjICAgICAgICAgIC0taW5zdGFsbGVyLXZlcnNpb24gMy4wK3NuYXBzaG90CisjICAgICAgICAgIC0tYnVpbGQtZGF0ZSAyMDIwMDAzMTUKKyMKKyMgIEV4YW1wbGUgdXNhZ2UgKHN0YW5kYXJkIGJ1aWxkdG9vbHMgZnJvbSByZWxlYXNlKToKKyMgICAgKDMpIHVzaW5nIC0tdXJsIGFuZCAtLWZpbGVuYW1lCisjICAgICAgICAkIGluc3RhbGwtYnVpbGR0b29scyAtLXdpdGhvdXQtZXh0ZW5kZWQtYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tdXJsIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0by95b2N0by0zLjAuMi9idWlsZHRvb2xzIFwKKyMgICAgICAgICAgLS1maWxlbmFtZSB4ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0zLjAuMi5zaAorIyAgICAoNCkgdXNpbmcgLS1iYXNlLXVybCwgLS1yZWxlYXNlIGFuZCAtLWluc3RhbGxlci12ZXJzaW9uCisjICAgICAgICAkIGluc3RhbGwtYnVpbGR0b29scyAtLXdpdGhvdXQtZXh0ZW5kZWQtYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tYmFzZS11cmwgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3lvY3RvIFwKKyMgICAgICAgICAgLS1yZWxlYXNlIHlvY3RvLTMuMC4yIFwKKyMgICAgICAgICAgLS1pbnN0YWxsZXItdmVyc2lvbiAzLjAuMgorIworCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHNobGV4CitpbXBvcnQgc3RhdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHF1b3RlCisKK3NjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKK2xpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCitzeXMucGF0aCA9IHN5cy5wYXRoICsgW2xpYl9wYXRoXQoraW1wb3J0IHNjcmlwdHV0aWxzCitpbXBvcnQgc2NyaXB0cGF0aAorCisKK1BST0dOQU1FID0gJ2luc3RhbGwtYnVpbGR0b29scycKK2xvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoUFJPR05BTUUsIHN0cmVhbT1zeXMuc3Rkb3V0KQorCitERUZBVUxUX0lOU1RBTExfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoc2NyaXB0c19wYXRoKVswXSwnYnVpbGR0b29scycpCitERUZBVUxUX0JBU0VfVVJMID0gJ2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0bycKK0RFRkFVTFRfUkVMRUFTRSA9ICd5b2N0by0zLjEnCitERUZBVUxUX0lOU1RBTExFUl9WRVJTSU9OID0gJzMuMScKK0RFRkFVTFRfQlVJTEREQVRFID0gJycKKworIyBQeXRob24gdmVyc2lvbiBzYW5pdHkgY2hlY2sKK2lmIG5vdCAoc3lzLnZlcnNpb25faW5mby5tYWpvciA9PSAzIGFuZCBzeXMudmVyc2lvbl9pbmZvLm1pbm9yID49IDQpOgorICAgIGxvZ2dlci5lcnJvcigiVGhpcyBzY3JpcHQgcmVxdWlyZXMgUHl0aG9uIDMuNCBvciBncmVhdGVyIikKKyAgICBsb2dnZXIuZXJyb3IoIllvdSBoYXZlIFB5dGhvbiAlcy4lcyIgJQorCSAgKHN5cy52ZXJzaW9uX2luZm8ubWFqb3IsIHN5cy52ZXJzaW9uX2luZm8ubWlub3IpKQorICAgIHN5cy5leGl0KDEpCisKKyMgVGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIGNvcGllZCBkaXJlY3RseSBmcm9tCisjIGJpdGJha2UvbGliL2JiL3V0aWxzLnB5LCBpbiBvcmRlciB0byBhbGxvdyB0aGlzIHNjcmlwdAorIyB0byBydW4gb24gdmVyc2lvbnMgb2YgcHl0aG9uIGVhcmxpZXIgdGhhbiB3aGF0IGJpdGJha2UKKyMgc3VwcG9ydHMgKGUuZy4gbGVzcyB0aGFuIFB5dGhvbiAzLjUgZm9yIFlQIDMuMSByZWxlYXNlKQorCitkZWYgX2hhc2hlcihtZXRob2QsIGZpbGVuYW1lKToKKyAgICBpbXBvcnQgbW1hcAorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG1tYXAubW1hcChmLmZpbGVubygpLCAwLCBhY2Nlc3M9bW1hcC5BQ0NFU1NfUkVBRCkgYXMgbW06CisgICAgICAgICAgICAgICAgZm9yIGNodW5rIGluIGl0ZXIobGFtYmRhOiBtbS5yZWFkKDgxOTIpLCBiJycpOgorICAgICAgICAgICAgICAgICAgICBtZXRob2QudXBkYXRlKGNodW5rKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgWW91IGNhbid0IG1tYXAoKSBhbiBlbXB0eSBmaWxlIHNvIHNpbGVuY2UgdGhpcyBleGNlcHRpb24KKyAgICAgICAgICAgIHBhc3MKKyAgICByZXR1cm4gbWV0aG9kLmhleGRpZ2VzdCgpCisKKworZGVmIG1kNV9maWxlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIE1ENSBjaGVja3N1bSBvZiBmaWxlbmFtZS4KKyAgICAiIiIKKyAgICBpbXBvcnQgaGFzaGxpYgorICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIubWQ1KCksIGZpbGVuYW1lKQorCitkZWYgc2hhMjU2X2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgaGV4IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgMjU2LWJpdCBTSEEgY2hlY2tzdW0gb2YKKyAgICBmaWxlbmFtZS4KKyAgICAiIiIKKyAgICBpbXBvcnQgaGFzaGxpYgorICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhMjU2KCksIGZpbGVuYW1lKQorCisKK2RlZiBtYWluKCk6CisgICAgZ2xvYmFsIERFRkFVTFRfSU5TVEFMTF9ESVIKKyAgICBnbG9iYWwgREVGQVVMVF9CQVNFX1VSTAorICAgIGdsb2JhbCBERUZBVUxUX1JFTEVBU0UKKyAgICBnbG9iYWwgREVGQVVMVF9JTlNUQUxMRVJfVkVSU0lPTgorICAgIGdsb2JhbCBERUZBVUxUX0JVSUxEREFURQorICAgIGZpbGVuYW1lID0gIiIKKyAgICByZWxlYXNlID0gIiIKKyAgICBidWlsZHRvb2xzX3VybCA9ICIiCisgICAgaW5zdGFsbF9kaXIgPSAiIgorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAgICAgIGRlc2NyaXB0aW9uPSJCdWlsZHRvb2xzIGluc3RhbGxhdGlvbiBoZWxwZXIiLAorICAgICAgICBhZGRfaGVscD1GYWxzZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdScsICctLXVybCcsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVUkwgZnJvbSB3aGVyZSB0byBmZXRjaCBidWlsZHRvb2xzIFNESyBpbnN0YWxsZXIsIG5vdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRpbmcgZmlsZW5hbWUgKG9wdGlvbmFsKVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVxdWlyZXMgLS1maWxlbmFtZS4nLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1maWxlbmFtZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmaWxlbmFtZSBmb3IgdGhlIGJ1aWxkdG9vbHMgU0RLIGluc3RhbGxlciB0byBiZSBpbnN0YWxsZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKG9wdGlvbmFsKVxuUmVxdWlyZXMgLS11cmwnLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWQnLCAnLS1kaXJlY3RvcnknLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1ERUZBVUxUX0lOU1RBTExfRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlyZWN0b3J5IHdoZXJlIGJ1aWxkdG9vbHMgU0RLIHdpbGwgYmUgaW5zdGFsbGVkIChvcHRpb25hbCknLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZWxlYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9SRUxFQVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nWW9jdG8gUHJvamVjdCByZWxlYXNlIHN0cmluZyBmb3IgU0RLIHdoaWNoIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdGFsbGVkIChvcHRpb25hbCknLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLVYnLCAnLS1pbnN0YWxsZXItdmVyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PURFRkFVTFRfSU5TVEFMTEVSX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd2ZXJzaW9uIHN0cmluZyBmb3IgdGhlIFNESyB0byBiZSBpbnN0YWxsZWQgKG9wdGlvbmFsKScsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJhc2UtdXJsJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9CQVNFX1VSTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Jhc2UgVVJMIGZyb20gd2hpY2ggdG8gZmV0Y2ggU0RLIChvcHRpb25hbCknLCBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdCcsICctLWJ1aWxkLWRhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1ERUZBVUxUX0JVSUxEREFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0J1aWxkIGRhdGUgb2YgcHJlLXJlbGVhc2UgU0RLIChvcHRpb25hbCknLCBhY3Rpb249J3N0b3JlJykKKyAgICBncm91cCA9IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2l0aC1leHRlbmRlZC1idWlsZHRvb2xzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2l0aF9leHRlbmRlZF9idWlsZHRvb2xzJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdlbmFibGUgZXh0ZW5kZWQgYnVpbGR0b29scyB0YXJiYWxsIChvbiBieSBkZWZhdWx0KScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdpdGhvdXQtZXh0ZW5kZWQtYnVpbGR0b29scycsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd3aXRoX2V4dGVuZGVkX2J1aWxkdG9vbHMnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNhYmxlIGV4dGVuZGVkIGJ1aWxkdG9vbHMgKHRyYWRpdGlvbmFsIGJ1aWxkdG9vbHMgdGFyYmFsbCknKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY2hlY2snLCBoZWxwPSdlbmFibGUgbWQ1IGNoZWNrc3VtIGNoZWNraW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLUQnLCAnLS1kZWJ1ZycsIGhlbHA9J2VuYWJsZSBkZWJ1ZyBvdXRwdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgaGVscD0ncHJpbnQgb25seSBlcnJvcnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJykKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1oJywgJy0taGVscCcsIGFjdGlvbj0naGVscCcsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWFyZ3BhcnNlLlNVUFBSRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgYXJncy5kZWJ1ZzoKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisgICAgZWxpZiBhcmdzLnF1aWV0OgorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5FUlJPUikKKworICAgIGlmIGFyZ3MudXJsIGFuZCBhcmdzLmZpbGVuYW1lOgorICAgICAgICBsb2dnZXIuZGVidWcoIi0tdXJsIGFuZCAtLWZpbGVuYW1lIGRldGVjdGVkLiBJZ25vcmluZyAtLWJhc2UtdXJsICIKKyAgICAgICAgICAgICAgICAgICAgICItLXJlbGVhc2UgLS1pbnN0YWxsZXItdmVyc2lvbiAgYXJndW1lbnRzLiIpCisgICAgICAgIGZpbGVuYW1lID0gYXJncy5maWxlbmFtZQorICAgICAgICBidWlsZHRvb2xzX3VybCA9ICIlcy8lcyIgJSAoYXJncy51cmwsIGZpbGVuYW1lKQorICAgIGVsc2U6CisgICAgICAgIGlmIGFyZ3MuYmFzZV91cmw6CisgICAgICAgICAgICBiYXNlX3VybCA9IGFyZ3MuYmFzZV91cmwKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJhc2VfdXJsID0gREVGQVVMVF9CQVNFX1VSTAorICAgICAgICBpZiBhcmdzLnJlbGVhc2U6CisgICAgICAgICAgICAjIGNoZWNrIGlmIHRoaXMgaXMgYSBwcmUtcmVsZWFzZSAibWlsZXN0b25lIiBTREsKKyAgICAgICAgICAgIG0gPSByZS5zZWFyY2gociJeKD9QPGRpc3Rybz5bYS16QS1aXC1dKykoP1A8dmVyc2lvbj5bMC05Ll0rKSg/UDxtaWxlc3RvbmU+X01bMS05XSkkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5yZWxlYXNlKQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJtaWxlc3RvbmUgcmVnZXg6ICVzIiAlIG0pCisgICAgICAgICAgICBpZiBtIGFuZCBtLmdyb3VwKCdtaWxlc3RvbmUnKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInJlbGVhc2VbZGlzdHJvXTogJXMiICUgbS5ncm91cCgnZGlzdHJvJykpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJyZWxlYXNlW3ZlcnNpb25dOiAlcyIgJSBtLmdyb3VwKCd2ZXJzaW9uJykpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJyZWxlYXNlW21pbGVzdG9uZV06ICVzIiAlIG0uZ3JvdXAoJ21pbGVzdG9uZScpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBhcmdzLmJ1aWxkX2RhdGU6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiTWlsZXN0b25lIGluc3RhbGxlcnMgcmVxdWlyZSAtLWJ1aWxkLWRhdGUiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIGFyZ3Mud2l0aF9leHRlbmRlZF9idWlsZHRvb2xzOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAieDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJXMtJXMuc2giICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuaW5zdGFsbGVyX3ZlcnNpb24sIGFyZ3MuYnVpbGRfZGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIng4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSVzLSVzLnNoIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmluc3RhbGxlcl92ZXJzaW9uLCBhcmdzLmJ1aWxkX2RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNhZmVfZmlsZW5hbWUgPSBxdW90ZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGR0b29sc191cmwgPSAiJXMvbWlsZXN0b25lcy8lcy9idWlsZHRvb2xzLyVzIiAlIChiYXNlX3VybCwgYXJncy5yZWxlYXNlLCBzYWZlX2ZpbGVuYW1lKQorICAgICAgICAgICAgIyByZWd1bGFyIHJlbGVhc2UgU0RLCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGFyZ3Mud2l0aF9leHRlbmRlZF9idWlsZHRvb2xzOgorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICJ4ODZfNjQtYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0lcy5zaCIgJSBhcmdzLmluc3RhbGxlcl92ZXJzaW9uCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAieDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJXMuc2giICUgYXJncy5pbnN0YWxsZXJfdmVyc2lvbgorICAgICAgICAgICAgICAgIHNhZmVfZmlsZW5hbWUgPSBxdW90ZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBidWlsZHRvb2xzX3VybCA9ICIlcy8lcy9idWlsZHRvb2xzLyVzIiAlIChiYXNlX3VybCwgYXJncy5yZWxlYXNlLCBzYWZlX2ZpbGVuYW1lKQorCisgICAgdG1wc2RrX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgIHRyeToKKyAgICAgICAgIyBGZXRjaCBpbnN0YWxsZXIKKyAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoaW5nIGJ1aWxkdG9vbHMgaW5zdGFsbGVyIikKKyAgICAgICAgdG1wYnVpbGR0b29scyA9IG9zLnBhdGguam9pbih0bXBzZGtfZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKCJ3Z2V0IC1xIC1PICVzICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG1wYnVpbGR0b29scywgYnVpbGR0b29sc191cmwpLCBzaGVsbD1UcnVlKQorICAgICAgICBpZiByZXQgIT0gMDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ291bGQgbm90IGRvd25sb2FkIGZpbGUgZnJvbSAlcyIgJSBidWlsZHRvb2xzX3VybCkKKyAgICAgICAgICAgIHJldHVybiByZXQKKworICAgICAgICAjIFZlcmlmeSBjaGVja3N1bQorICAgICAgICBpZiBhcmdzLmNoZWNrOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoaW5nIGJ1aWxkdG9vbHMgaW5zdGFsbGVyIGNoZWNrc3VtIikKKyAgICAgICAgICAgIGNoZWNrc3VtX3R5cGUgPSAiIgorICAgICAgICAgICAgZm9yIGNoZWNrc3VtX3R5cGUgaW4gWyJtZDVzdW0iLCAic2hhMjU2Il06CisgICAgICAgICAgICAgICAgY2hlY2tfdXJsID0gInt9Lnt9Ii5mb3JtYXQoYnVpbGR0b29sc191cmwsIGNoZWNrc3VtX3R5cGUpCisgICAgICAgICAgICAgICAgY2hlY2tzdW1fZmlsZW5hbWUgPSAie30ue30iLmZvcm1hdChmaWxlbmFtZSwgY2hlY2tzdW1fdHlwZSkKKyAgICAgICAgICAgICAgICB0bXBidWlsZHRvb2xzX2NoZWNrc3VtID0gb3MucGF0aC5qb2luKHRtcHNka19kaXIsIGNoZWNrc3VtX2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbCgid2dldCAtcSAtTyAlcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG1wYnVpbGR0b29sc19jaGVja3N1bSwgY2hlY2tfdXJsKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgICAgICBpZiByZXQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgcmV0ICE9IDA6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ291bGQgbm90IGRvd25sb2FkIGZpbGUgZnJvbSAlcyIgJSBjaGVja191cmwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQKKyAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyIl4oP1A8Y2hlY2tzdW0+WzAtOWEtZl0rKVxzXHMoP1A8cGF0aD4uKi8pPyg/UDxmaWxlbmFtZT4uKikkIikKKyAgICAgICAgICAgIHdpdGggb3Blbih0bXBidWlsZHRvb2xzX2NoZWNrc3VtLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIG9yaWdpbmFsID0gZi5yZWFkKCkKKyAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKHJlZ2V4LCBvcmlnaW5hbC5kZWNvZGUoInV0Zi04IikpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJjaGVja3N1bSByZWdleCBtYXRjaDogJXMiICUgbSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImNoZWNrc3VtOiAlcyIgJSBtLmdyb3VwKCdjaGVja3N1bScpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygicGF0aDogJXMiICUgbS5ncm91cCgncGF0aCcpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZmlsZW5hbWU6ICVzIiAlIG0uZ3JvdXAoJ2ZpbGVuYW1lJykpCisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWUgIT0gbS5ncm91cCgnZmlsZW5hbWUnKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGaWxlbmFtZSBkb2VzIG5vdCBtYXRjaCBuYW1lIGluIGNoZWNrc3VtIikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgICAgICBjaGVja3N1bSA9IG0uZ3JvdXAoJ2NoZWNrc3VtJykKKyAgICAgICAgICAgIGlmIGNoZWNrc3VtX3R5cGUgPT0gIm1kNXN1bSI6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fdmFsdWUgPSBtZDVfZmlsZSh0bXBidWlsZHRvb2xzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjaGVja3N1bV92YWx1ZSA9IHNoYTI1Nl9maWxlKHRtcGJ1aWxkdG9vbHMpCisgICAgICAgICAgICBpZiBjaGVja3N1bSA9PSBjaGVja3N1bV92YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNoZWNrc3VtIHN1Y2Nlc3MiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNoZWNrc3VtICVzIGV4cGVjdGVkLiBBY3R1YWwgY2hlY2tzdW0gaXMgJXMuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja3N1bSwgY2hlY2tzdW1fdmFsdWUpKQorCisgICAgICAgICMgTWFrZSBpbnN0YWxsZXIgZXhlY3V0YWJsZQorICAgICAgICBsb2dnZXIuaW5mbygiTWFraW5nIGluc3RhbGxlciBleGVjdXRhYmxlIikKKyAgICAgICAgc3QgPSBvcy5zdGF0KHRtcGJ1aWxkdG9vbHMpCisgICAgICAgIG9zLmNobW9kKHRtcGJ1aWxkdG9vbHMsIHN0LnN0X21vZGUgfCBzdGF0LlNfSUVYRUMpCisgICAgICAgIGxvZ2dlci5kZWJ1Zyhvcy5zdGF0KHRtcGJ1aWxkdG9vbHMpKQorICAgICAgICBpZiBhcmdzLmRpcmVjdG9yeToKKyAgICAgICAgICAgIGluc3RhbGxfZGlyID0gYXJncy5kaXJlY3RvcnkKKyAgICAgICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbCgiJXMgLWQgJXMgLXkiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG1wYnVpbGR0b29scywgaW5zdGFsbF9kaXIpLCBzaGVsbD1UcnVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW5zdGFsbF9kaXIgPSAiL29wdC9wb2t5LyVzIiAlIGFyZ3MuaW5zdGFsbGVyX3ZlcnNpb24KKyAgICAgICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbCgiJXMgLXkiICUgdG1wYnVpbGR0b29scywgc2hlbGw9VHJ1ZSkKKyAgICAgICAgaWYgcmV0ICE9IDA6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvdWxkIG5vdCBydW4gYnVpbGR0b29scyBpbnN0YWxsZXIiKQorCisgICAgICAgICMgU2V0dXAgdGhlIGVudmlyb25tZW50CisgICAgICAgIGxvZ2dlci5pbmZvKCJTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCIpCisgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyJ14oP1A8ZXhwb3J0PmV4cG9ydCApPyg/UDxlbnZfdmFyPltBLVpfXSspPSg/UDxlbnZfdmFsPi4rKSQnKQorICAgICAgICB3aXRoIG9wZW4oIiVzL2Vudmlyb25tZW50LXNldHVwLXg4Nl82NC1wb2t5c2RrLWxpbnV4IiAlCisgICAgICAgICAgICAgICAgICBpbnN0YWxsX2RpciwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgbWF0Y2ggPSByZWdleC5zZWFyY2gobGluZS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJleHBvcnQgcmVnZXg6ICVzIiAlIG1hdGNoKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBlbnZfdmFyID0gbWF0Y2guZ3JvdXAoJ2Vudl92YXInKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImVudl92YXI6ICVzIiAlIGVudl92YXIpCisgICAgICAgICAgICAgICAgICAgIGVudl92YWwgPSBtYXRjaC5ncm91cCgnZW52X3ZhbCcpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZW52X3ZhbDogJXMiICUgZW52X3ZhbCkKKyAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IGVudl92YWwKKworICAgICAgICAjIFRlc3QgaW5zdGFsbGF0aW9uCisgICAgICAgIGxvZ2dlci5pbmZvKCJUZXN0aW5nIGluc3RhbGxhdGlvbiIpCisgICAgICAgIHRvb2wgPSAiIgorICAgICAgICBtID0gcmUuc2VhcmNoKCJleHRlbmRlZCIsIHRtcGJ1aWxkdG9vbHMpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiZXh0ZW5kZWQgcmVnZXg6ICVzIiAlIG0pCisgICAgICAgIGlmIGFyZ3Mud2l0aF9leHRlbmRlZF9idWlsZHRvb2xzIGFuZCBub3QgbToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJJZ25vcmluZyAtLXdpdGgtZXh0ZW5kZWQtYnVpbGR0b29scyBhcyBmaWxlbmFtZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3QgY29udGFpbiAnZXh0ZW5kZWQnIikKKyAgICAgICAgaWYgYXJncy53aXRoX2V4dGVuZGVkX2J1aWxkdG9vbHMgYW5kIG06CisgICAgICAgICAgICB0b29sID0gJ2djYycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRvb2wgPSAndGFyJworICAgICAgICBsb2dnZXIuZGVidWcoImluc3RhbGxfZGlyOiAlcyIgJSBpbnN0YWxsX2RpcikKKyAgICAgICAgY21kID0gc2hsZXguc3BsaXQoIi91c3IvYmluL3doaWNoICVzIiAlIHRvb2wpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiY21kOiAlcyIgJSBjbWQpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygidG9vbDogJXMiICUgdG9vbCkKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBvdXRwdXQsIGVycm9ycyA9IHByb2MuY29tbXVuaWNhdGUoKQorICAgICAgICBsb2dnZXIuZGVidWcoInByb2MuYXJnczogJXMiICUgcHJvYy5hcmdzKQorICAgICAgICBsb2dnZXIuZGVidWcoInByb2MuY29tbXVuaWNhdGUoKTogb3V0cHV0ICVzIiAlIG91dHB1dCkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJwcm9jLmNvbW11bmljYXRlKCk6IGVycm9ycyAlcyIgJSBlcnJvcnMpCisgICAgICAgIHdoaWNoX3Rvb2wgPSBvdXRwdXQuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIGxvZ2dlci5kZWJ1Zygid2hpY2ggJXM6ICVzIiAlICh0b29sLCB3aGljaF90b29sKSkKKyAgICAgICAgcmV0ID0gcHJvYy5yZXR1cm5jb2RlCisgICAgICAgIGlmIG5vdCB3aGljaF90b29sLnN0YXJ0c3dpdGgoaW5zdGFsbF9kaXIpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZzogJXMgbm90IGZvdW5kIGluICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvb2wsIGluc3RhbGxfZGlyKSkKKyAgICAgICAgaWYgcmV0ICE9IDA6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlNvbWV0aGluZyB3ZW50IHdyb25nOiBpbnN0YWxsYXRpb24gZmFpbGVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJJbnN0YWxsYXRpb24gc3VjY2Vzc2Z1bC4gUmVtZW1iZXIgdG8gc291cmNlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IG5vdyBhbmQgaW4gYW55IG5ldyBzZXNzaW9uLiIpCisgICAgICAgIHJldHVybiByZXQKKworICAgIGZpbmFsbHk6CisgICAgICAgICMgY2xlYW51cCB0bXAgZGlyZWN0b3J5CisgICAgICAgIHNodXRpbC5ybXRyZWUodG1wc2RrX2RpcikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRyeToKKyAgICAgICAgcmV0ID0gbWFpbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcmV0ID0gMQorICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgc3lzLmV4aXQocmV0KQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CmluZGV4IDFjMGNkOGEuLmJhYjY0NGIgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKQEAgLTE0NSw4ICsxNDUsOCBAQAogICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLXNyYy1zdWJkaXIgIiVzIicgJSBhcmdzLnNyY19zdWJkaXIKICAgICBpZiBhcmdzLmF1dG9yZXY6CiAgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC1hJwotICAgIGlmIGFyZ3MuZmV0Y2hfZGV2OgotICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLWZldGNoLWRldicKKyAgICBpZiBhcmdzLm5wbV9kZXY6CisgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tbnBtLWRldicKICAgICBpZiBhcmdzLm1pcnJvcnM6CiAgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tbWlycm9ycycKICAgICBpZiBhcmdzLnNyY3JldjoKQEAgLTI2MCwxNCArMjYwLDEwIEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgnfVxuJykKIAogICAgICAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbnBtJywgcmQpOgotICAgICAgICAgICAgICAgIGYud3JpdGUoJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgIyBSZW1vdmUgZmlsZXMgYWRkZWQgdG8gc291cmNlIGRpciBieSBkZXZ0b29sL2V4dGVybmFsc3JjXG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBybSAtZiAke05QTV9JTlNUQUxMRElSfS9zaW5nbGV0YXNrLmxvY2tcbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIHJtIC1yZiAke05QTV9JTlNUQUxMRElSfS8uZ2l0XG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBybSAtcmYgJHtOUE1fSU5TVEFMTERJUn0vb2UtbG9jYWwtZmlsZXNcbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGZvciBzeW1saW5rIGluICR7RVhURVJOQUxTUkNfU1lNTElOS1N9IDsgZG9cbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBybSAtZiAke05QTV9JTlNUQUxMRElSfS8ke3N5bWxpbmslJToqfVxuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgZG9uZVxuJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdweXRob24gZG9fY29uZmlndXJlX2FwcGVuZCgpIHtcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIHBrZ2RpciA9IGQuZ2V0VmFyKCJOUE1fUEFDS0FHRSIpXG4nKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBsb2NrZmlsZSA9IG9zLnBhdGguam9pbihwa2dkaXIsICJzaW5nbGV0YXNrLmxvY2siKVxuJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgYmIudXRpbHMucmVtb3ZlKGxvY2tmaWxlKVxuJykKICAgICAgICAgICAgICAgICBmLndyaXRlKCd9XG4nKQogCiAgICAgICAgICMgQ2hlY2sgaWYgdGhlIG5ldyBsYXllciBwcm92aWRlcyByZWNpcGVzIHdob3NlIHByaW9yaXRpZXMgaGF2ZSBiZWVuCkBAIC05NDAsOCArOTM2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJykKICAgICAgICAgICAgIGlmIHJkLmdldFZhckZsYWcoJ2RvX21lbnVjb25maWcnLCd0YXNrJyk6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnXG5kb19jb25maWd1cmVfYXBwZW5kKCkge1xuJwotICAgICAgICAgICAgICAgICcgICAgY3AgJHtCfS8uY29uZmlnICR7U30vLmNvbmZpZy5iYXNlbGluZVxuJwotICAgICAgICAgICAgICAgICcgICAgbG4gLXNmVCAke0J9Ly5jb25maWcgJHtTfS8uY29uZmlnLm5ld1xuJworICAgICAgICAgICAgICAgICcgICAgaWYgWyAhICR7REVWVE9PTF9ESVNBQkxFX01FTlVDT05GSUd9IF07IHRoZW5cbicKKyAgICAgICAgICAgICAgICAnICAgICAgICBjcCAke0J9Ly5jb25maWcgJHtTfS8uY29uZmlnLmJhc2VsaW5lXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgbG4gLXNmVCAke0J9Ly5jb25maWcgJHtTfS8uY29uZmlnLm5ld1xuJworICAgICAgICAgICAgICAgICcgICAgZmlcbicKICAgICAgICAgICAgICAgICAnfVxuJykKICAgICAgICAgICAgIGlmIGluaXRpYWxfcmV2OgogICAgICAgICAgICAgICAgIGYud3JpdGUoJ1xuIyBpbml0aWFsX3JldjogJXNcbicgJSBpbml0aWFsX3JldikKQEAgLTIxOTcsNyArMjE5NSw3IEBACiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXNhbWUtZGlyJywgJy1zJywgaGVscD0nQnVpbGQgaW4gc2FtZSBkaXJlY3RvcnkgYXMgc291cmNlJywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbm8tc2FtZS1kaXInLCBoZWxwPSdGb3JjZSBidWlsZCBpbiBhIHNlcGFyYXRlIGJ1aWxkIGRpcmVjdG9yeScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tZmV0Y2gnLCAnLWYnLCBoZWxwPSdGZXRjaCB0aGUgc3BlY2lmaWVkIFVSSSBhbmQgZXh0cmFjdCBpdCB0byBjcmVhdGUgdGhlIHNvdXJjZSB0cmVlIChkZXByZWNhdGVkIC0gcGFzcyBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IGluc3RlYWQpJywgbWV0YXZhcj0nVVJJJykKLSAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1mZXRjaC1kZXYnLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tbnBtLWRldicsIGhlbHA9J0ZvciBucG0sIGFsc28gZmV0Y2ggZGV2RGVwZW5kZW5jaWVzJywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgJy1WJywgaGVscD0nVmVyc2lvbiB0byB1c2Ugd2l0aGluIHJlY2lwZSAoUFYpJykKICAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1uby1naXQnLCAnLWcnLCBoZWxwPSdJZiBmZXRjaGluZyBzb3VyY2UsIGRvIG5vdCBzZXQgdXAgc291cmNlIHRyZWUgYXMgYSBnaXQgcmVwb3NpdG9yeScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgZ3JvdXAgPSBwYXJzZXJfYWRkLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKaW5kZXggNGM0YmJhZC4uNmNiZjRkZSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CkBAIC00NzcsOCArNDc3LDYgQEAKICAgICAgICAgICAgIHN0b3JlVGFnTmFtZSA9IHBhcmFtc1sndGFnJ10KICAgICAgICAgICAgIHBhcmFtc1snbm9icmFuY2gnXSA9ICcxJwogICAgICAgICAgICAgZGVsIHBhcmFtc1sndGFnJ10KLSAgICAgICAgaWYgc2NoZW1lID09ICducG0nOgotICAgICAgICAgICAgcGFyYW1zWydub3ZlcmlmeSddID0gJzEnCiAgICAgICAgIGZldGNodXJpID0gYmIuZmV0Y2gyLmVuY29kZXVybCgoc2NoZW1lLCBuZXR3b3JrLCBwYXRoLCB1c2VyLCBwYXNzd2QsIHBhcmFtcykpCiAKICAgICAgICAgdG1wcGFyZW50ID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JBU0VfV09SS0RJUicpCkBAIC03MTQsMTAgKzcxMiw4IEBACiAgICAgICAgIGxpbmVzX2FmdGVyLmFwcGVuZCgnSU5TQU5FX1NLSVBfJHtQTn0gKz0gImFscmVhZHktc3RyaXBwZWQiJykKICAgICAgICAgbGluZXNfYWZ0ZXIuYXBwZW5kKCcnKQogCi0gICAgaWYgYXJncy5mZXRjaF9kZXY6Ci0gICAgICAgIGV4dHJhdmFsdWVzWydmZXRjaGRldiddID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIGV4dHJhdmFsdWVzWydmZXRjaGRldiddID0gTm9uZQorICAgIGlmIGFyZ3MubnBtX2RldjoKKyAgICAgICAgZXh0cmF2YWx1ZXNbJ05QTV9JTlNUQUxMX0RFViddID0gMQogCiAgICAgIyBGaW5kIGFsbCBwbHVnaW5zIHRoYXQgd2FudCB0byByZWdpc3RlciBoYW5kbGVycwogICAgIGxvZ2dlci5kZWJ1ZygnTG9hZGluZyByZWNpcGUgaGFuZGxlcnMnKQpAQCAtMTMxMyw3ICsxMzA5LDcgQEAKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3JjcmV2JywgaGVscD0nU291cmNlIHJldmlzaW9uIHRvIGZldGNoIGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IGxhdGVzdCknKQogICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctQicsICctLXNyY2JyYW5jaCcsIGhlbHA9J0JyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJykKLSAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1mZXRjaC1kZXYnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycpCisgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tbnBtLWRldicsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0ZvciBucG0sIGFsc28gZmV0Y2ggZGV2RGVwZW5kZW5jaWVzJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1kZXZ0b29sJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD1hcmdwYXJzZS5TVVBQUkVTUykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1taXJyb3JzJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRW5hYmxlIFBSRU1JUlJPUlMgYW5kIE1JUlJPUlMgZm9yIHNvdXJjZSB0cmVlIGZldGNoaW5nIChkaXNhYmxlZCBieSBkZWZhdWx0KS4nKQogICAgIHBhcnNlcl9jcmVhdGUuc2V0X2RlZmF1bHRzKGZ1bmM9Y3JlYXRlX3JlY2lwZSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5CmluZGV4IDNjYjAyNzYuLjM1YTk3YzkgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5cy5weQpAQCAtMjI2LDkgKzIyNiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBrZyA9PSAnUGtnQ29uZmlnJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5hcHBlbmQoJ3BrZ2NvbmZpZycpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBrZyA9PSAnUHl0aG9uSW50ZXJwJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5hcHBlbmQoJ3B5dGhvbm5hdGl2ZScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdweXRob24zbmF0aXZlJykKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcGtnID09ICdQeXRob25MaWJzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5hcHBlbmQoJ3B5dGhvbi1kaXInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZCgncHl0aG9uMy1kaXInKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRyeSB0byBtYXAgdmlhIGxvb2tpbmcgYXQgaW5zdGFsbGVkIENNYWtlIHBhY2thZ2VzIGluIHBrZ2RhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXAgPSBmaW5kX2NtYWtlX3BhY2thZ2UocGtnKQpAQCAtNDE3LDcgKzQxNyw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICBwcm9nY2xhc3NtYXAgPSB7J2djb25mdG9vbC0yJzogJ2djb25mJywKICAgICAgICAgICAgICAgICAncGtnLWNvbmZpZyc6ICdwa2djb25maWcnLAotICAgICAgICAgICAgICAgICdweXRob24nOiAncHl0aG9ubmF0aXZlJywKKyAgICAgICAgICAgICAgICAncHl0aG9uJzogJ3B5dGhvbjNuYXRpdmUnLAogICAgICAgICAgICAgICAgICdweXRob24zJzogJ3B5dGhvbjNuYXRpdmUnLAogICAgICAgICAgICAgICAgICdwZXJsJzogJ3BlcmxuYXRpdmUnLAogICAgICAgICAgICAgICAgICdtYWtlaW5mbyc6ICd0ZXhpbmZvJywKQEAgLTU2NiwxNiArNTY2LDcgQEAKICAgICAgICAgICAgIGVsaWYga2V5d29yZCA9PSAnQVhfUFJPR19YU0xUUFJPQyc6CiAgICAgICAgICAgICAgICAgZGVwcy5hcHBlbmQoJ2xpYnhzbHQtbmF0aXZlJykKICAgICAgICAgICAgIGVsaWYga2V5d29yZCBpbiBbJ0FDX1BZVEhPTl9ERVZFTCcsICdBWF9QWVRIT05fREVWRUwnLCAnQU1fUEFUSF9QWVRIT04nXToKLSAgICAgICAgICAgICAgICBweXRob25jbGFzcyA9ICdweXRob25uYXRpdmUnCi0gICAgICAgICAgICAgICAgcmVzID0gdmVyc2lvbl9yZS5zZWFyY2godmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgcmVzOgotICAgICAgICAgICAgICAgICAgICBpZiByZXMuZ3JvdXAoMSkuc3RhcnRzd2l0aCgnMycpOgotICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uY2xhc3MgPSAncHl0aG9uM25hdGl2ZScKLSAgICAgICAgICAgICAgICAjIEF2b2lkIHJlcGxhY2luZyBweXRob24zbmF0aXZlIHdpdGggcHl0aG9ubmF0aXZlCi0gICAgICAgICAgICAgICAgaWYgbm90IHB5dGhvbmNsYXNzIGluIGluaGVyaXRzIGFuZCBub3QgJ3B5dGhvbjNuYXRpdmUnIGluIGluaGVyaXRzOgotICAgICAgICAgICAgICAgICAgICBpZiAncHl0aG9ubmF0aXZlJyBpbiBpbmhlcml0czoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLnJlbW92ZSgncHl0aG9ubmF0aXZlJykKLSAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKHB5dGhvbmNsYXNzKQorICAgICAgICAgICAgICAgIHB5dGhvbmNsYXNzID0gJ3B5dGhvbjNuYXRpdmUnCiAgICAgICAgICAgICBlbGlmIGtleXdvcmQgPT0gJ0FYX1dJVEhfQ1VSU0VTJzoKICAgICAgICAgICAgICAgICBkZXBzLmFwcGVuZCgnbmN1cnNlcycpCiAgICAgICAgICAgICBlbGlmIGtleXdvcmQgPT0gJ0FYX1BBVEhfQkRCJzoKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkKaW5kZXggMzk0MjllYi4uNTc5YjdhZSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkKQEAgLTEsMzIxICsxLDI1NSBAQAotIyBSZWNpcGUgY3JlYXRpb24gdG9vbCAtIG5vZGUuanMgTlBNIG1vZHVsZSBzdXBwb3J0IHBsdWdpbgotIwogIyBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyMgQ29weXJpZ2h0IChDKSAyMDIwIFNhdm9pci1GYWlyZSBMaW51eAogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCisiIiJSZWNpcGUgY3JlYXRpb24gdG9vbCAtIG5wbSBtb2R1bGUgc3VwcG9ydCBwbHVnaW4iIiIKIAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHNodXRpbAogaW1wb3J0IGpzb24KLWZyb20gcmVjaXBldG9vbC5jcmVhdGUgaW1wb3J0IFJlY2lwZUhhbmRsZXIsIHNwbGl0X3BrZ19saWNlbnNlcywgaGFuZGxlX2xpY2Vuc2VfdmFycworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGJiCitmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IE5wbUVudmlyb25tZW50Citmcm9tIGJiLmZldGNoMi5ucG1zdyBpbXBvcnQgZm9yZWFjaF9kZXBlbmRlbmNpZXMKK2Zyb20gcmVjaXBldG9vbC5jcmVhdGUgaW1wb3J0IFJlY2lwZUhhbmRsZXIKK2Zyb20gcmVjaXBldG9vbC5jcmVhdGUgaW1wb3J0IGd1ZXNzX2xpY2Vuc2UKK2Zyb20gcmVjaXBldG9vbC5jcmVhdGUgaW1wb3J0IHNwbGl0X3BrZ19saWNlbnNlcwogCi1sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigncmVjaXBldG9vbCcpCi0KLQotdGluZm9pbCA9IE5vbmUKK1RJTkZPSUwgPSBOb25lCiAKIGRlZiB0aW5mb2lsX2luaXQoaW5zdGFuY2UpOgotICAgIGdsb2JhbCB0aW5mb2lsCi0gICAgdGluZm9pbCA9IGluc3RhbmNlCi0KKyAgICAiIiJJbml0aWFsaXplIHRpbmZvaWwiIiIKKyAgICBnbG9iYWwgVElORk9JTAorICAgIFRJTkZPSUwgPSBpbnN0YW5jZQogCiBjbGFzcyBOcG1SZWNpcGVIYW5kbGVyKFJlY2lwZUhhbmRsZXIpOgotICAgIGxvY2tkb3ducGF0aCA9IE5vbmUKKyAgICAiIiJDbGFzcyB0byBoYW5kbGUgdGhlIG5wbSByZWNpcGUgY3JlYXRpb24iIiIKIAotICAgIGRlZiBfZW5zdXJlX25wbShzZWxmLCBmaXhlZF9zZXR1cD1GYWxzZSk6Ci0gICAgICAgIGlmIG5vdCB0aW5mb2lsLnJlY2lwZXNfcGFyc2VkOgotICAgICAgICAgICAgdGluZm9pbC5wYXJzZV9yZWNpcGVzKCkKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9ucG1fbmFtZShuYW1lKToKKyAgICAgICAgIiIiR2VuZXJhdGUgYSBZb2N0byBmcmllbmRseSBucG0gbmFtZSIiIgorICAgICAgICBuYW1lID0gcmUuc3ViKCIvIiwgIi0iLCBuYW1lKQorICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCisgICAgICAgIG5hbWUgPSByZS5zdWIociJbXlwtYS16MC05XSIsICIiLCBuYW1lKQorICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgiLSIpCisgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9nZXRfcmVnaXN0cnkobGluZXMpOgorICAgICAgICAiIiJHZXQgdGhlIHJlZ2lzdHJ5IHZhbHVlIGZyb20gdGhlICducG06Ly9yZWdpc3RyeScgdXJsIiIiCisgICAgICAgIHJlZ2lzdHJ5ID0gTm9uZQorCisgICAgICAgIGRlZiBfaGFuZGxlX3JlZ2lzdHJ5KHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHJlZ2lzdHJ5CisgICAgICAgICAgICBpZiBvcmlndmFsdWUuc3RhcnRzd2l0aCgibnBtOi8vIik6CisgICAgICAgICAgICAgICAgcmVnaXN0cnkgPSByZS5zdWIociJebnBtOi8vIiwgImh0dHA6Ly8iLCBvcmlndmFsdWUuc3BsaXQoIjsiKVswXSkKKyAgICAgICAgICAgIHJldHVybiBvcmlndmFsdWUsIE5vbmUsIDAsIFRydWUKKworICAgICAgICBiYi51dGlscy5lZGl0X21ldGFkYXRhKGxpbmVzLCBbIlNSQ19VUkkiXSwgX2hhbmRsZV9yZWdpc3RyeSkKKworICAgICAgICByZXR1cm4gcmVnaXN0cnkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2Vuc3VyZV9ucG0oKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgdGhlICducG0nIGNvbW1hbmQgaXMgYXZhaWxhYmxlIGluIHRoZSByZWNpcGVzIiIiCisgICAgICAgIGlmIG5vdCBUSU5GT0lMLnJlY2lwZXNfcGFyc2VkOgorICAgICAgICAgICAgVElORk9JTC5wYXJzZV9yZWNpcGVzKCkKKwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKCdub2RlanMtbmF0aXZlJykKKyAgICAgICAgICAgIGQgPSBUSU5GT0lMLnBhcnNlX3JlY2lwZSgibm9kZWpzLW5hdGl2ZSIpCiAgICAgICAgIGV4Y2VwdCBiYi5wcm92aWRlcnMuTm9Qcm92aWRlcjoKLSAgICAgICAgICAgIGlmIGZpeGVkX3NldHVwOgotICAgICAgICAgICAgICAgIG1zZyA9ICdub2RlanMtbmF0aXZlIGlzIHJlcXVpcmVkIGZvciBucG0gYnV0IGlzIG5vdCBhdmFpbGFibGUgd2l0aGluIHRoaXMgU0RLJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtc2cgPSAnbm9kZWpzLW5hdGl2ZSBpcyByZXF1aXJlZCBmb3IgbnBtIGJ1dCBpcyBub3QgYXZhaWxhYmxlIC0geW91IHdpbGwgbGlrZWx5IG5lZWQgdG8gYWRkIGEgbGF5ZXIgdGhhdCBwcm92aWRlcyBub2RlanMnCi0gICAgICAgICAgICBsb2dnZXIuZXJyb3IobXNnKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgYmluZGlyID0gcmQuZ2V0VmFyKCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnKQotICAgICAgICBucG1wYXRoID0gb3MucGF0aC5qb2luKGJpbmRpciwgJ25wbScpCisgICAgICAgICAgICBiYi5lcnJvcigiTm90aGluZyBwcm92aWRlcyAnbm9kZWpzLW5hdGl2ZScgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRoZSBidWlsZCIpCisgICAgICAgICAgICBiYi5ub3RlKCJZb3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhZGQgYSBsYXllciB0aGF0IHByb3ZpZGVzIG5vZGVqcyIpCisgICAgICAgICAgICBzeXMuZXhpdCgxNCkKKworICAgICAgICBiaW5kaXIgPSBkLmdldFZhcigiU1RBR0lOR19CSU5ESVJfTkFUSVZFIikKKyAgICAgICAgbnBtcGF0aCA9IG9zLnBhdGguam9pbihiaW5kaXIsICJucG0iKQorCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhucG1wYXRoKToKLSAgICAgICAgICAgIHRpbmZvaWwuYnVpbGRfdGFyZ2V0cygnbm9kZWpzLW5hdGl2ZScsICdhZGR0b19yZWNpcGVfc3lzcm9vdCcpCisgICAgICAgICAgICBUSU5GT0lMLmJ1aWxkX3RhcmdldHMoIm5vZGVqcy1uYXRpdmUiLCAiYWRkdG9fcmVjaXBlX3N5c3Jvb3QiKQorCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobnBtcGF0aCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCducG0gcmVxdWlyZWQgdG8gcHJvY2VzcyBzcGVjaWZpZWQgc291cmNlLCBidXQgbm9kZWpzLW5hdGl2ZSBkaWQgbm90IHNlZW0gdG8gcG9wdWxhdGUgaXQnKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgYmIuZXJyb3IoIkZhaWxlZCB0byBhZGQgJ25wbScgdG8gc3lzcm9vdCIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMTQpCisKICAgICAgICAgcmV0dXJuIGJpbmRpcgogCi0gICAgZGVmIF9oYW5kbGVfbGljZW5zZShzZWxmLCBkYXRhKToKLSAgICAgICAgJycnCi0gICAgICAgIEhhbmRsZSB0aGUgbGljZW5zZSB2YWx1ZSBmcm9tIGFuIG5wbSBwYWNrYWdlLmpzb24gZmlsZQotICAgICAgICAnJycKLSAgICAgICAgbGljZW5zZSA9IE5vbmUKLSAgICAgICAgaWYgJ2xpY2Vuc2UnIGluIGRhdGE6Ci0gICAgICAgICAgICBsaWNlbnNlID0gZGF0YVsnbGljZW5zZSddCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxpY2Vuc2UsIGRpY3QpOgotICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLmdldCgndHlwZScsIE5vbmUpCi0gICAgICAgICAgICBpZiBsaWNlbnNlOgotICAgICAgICAgICAgICAgIGlmICdPUicgaW4gbGljZW5zZToKLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnT1InLCAnfCcpCi0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ0FORCcsICcmJykKLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnICcsICdfJykKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpY2Vuc2VbMF0gPT0gJygnOgotICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9ICcoJyArIGxpY2Vuc2UgKyAnKScKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCdBTkQnLCAnJicpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpY2Vuc2VbMF0gPT0gJygnOgotICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2VbMTpdCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpY2Vuc2VbLTFdID09ICcpJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlWzotMV0KLSAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCdNSVQvWDExJywgJ01JVCcpCi0gICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnUHVibGljIERvbWFpbicsICdQRCcpCi0gICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnU0VFIExJQ0VOU0UgSU4gRVVMQScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0VFLUxJQ0VOU0UtSU4tRVVMQScpCi0gICAgICAgIHJldHVybiBsaWNlbnNlCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfbnBtX2dsb2JhbF9jb25maWdzKGRldik6CisgICAgICAgICIiIkdldCB0aGUgbnBtIGdsb2JhbCBjb25maWd1cmF0aW9uIiIiCisgICAgICAgIGNvbmZpZ3MgPSBbXQogCi0gICAgZGVmIF9zaHJpbmt3cmFwKHNlbGYsIHNyY3RyZWUsIGxvY2FsZmlsZXNkaXIsIGV4dHJhdmFsdWVzLCBsaW5lc19iZWZvcmUsIGQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBydW5lbnYgPSBkaWN0KG9zLmVudmlyb24sIFBBVEg9ZC5nZXRWYXIoJ1BBVEgnKSkKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCducG0gc2hyaW5rd3JhcCcsIGN3ZD1zcmN0cmVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1ydW5lbnYsIHNoZWxsPVRydWUpCi0gICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybmluZygnbnBtIHNocmlua3dyYXAgZmFpbGVkOlxuJXMnICUgZS5zdGRvdXQpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgZGV2OgorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJhbHNvIiwgImRldmVsb3BtZW50IikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25maWdzLmFwcGVuZCgoIm9ubHkiLCAicHJvZHVjdGlvbiIpKQogCi0gICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4obG9jYWxmaWxlc2RpciwgJ25wbS1zaHJpbmt3cmFwLmpzb24nKQotICAgICAgICBzaHV0aWwubW92ZShvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJ25wbS1zaHJpbmt3cmFwLmpzb24nKSwgdG1wZmlsZSkKLSAgICAgICAgZXh0cmF2YWx1ZXMuc2V0ZGVmYXVsdCgnZXh0cmFmaWxlcycsIHt9KQotICAgICAgICBleHRyYXZhbHVlc1snZXh0cmFmaWxlcyddWyducG0tc2hyaW5rd3JhcC5qc29uJ10gPSB0bXBmaWxlCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJ05QTV9TSFJJTktXUkFQIDo9ICIke1RISVNESVJ9LyR7UE59L25wbS1zaHJpbmt3cmFwLmpzb24iJykKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJzYXZlIiwgImZhbHNlIikpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicGFja2FnZS1sb2NrIiwgImZhbHNlIikpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgic2hyaW5rd3JhcCIsICJmYWxzZSIpKQorICAgICAgICByZXR1cm4gY29uZmlncwogCi0gICAgZGVmIF9sb2NrZG93bihzZWxmLCBzcmN0cmVlLCBsb2NhbGZpbGVzZGlyLCBleHRyYXZhbHVlcywgbGluZXNfYmVmb3JlLCBkKToKLSAgICAgICAgcnVuZW52ID0gZGljdChvcy5lbnZpcm9uLCBQQVRIPWQuZ2V0VmFyKCdQQVRIJykpCi0gICAgICAgIGlmIG5vdCBOcG1SZWNpcGVIYW5kbGVyLmxvY2tkb3ducGF0aDoKLSAgICAgICAgICAgIE5wbVJlY2lwZUhhbmRsZXIubG9ja2Rvd25wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgncmVjaXBldG9vbC1ucG0tbG9ja2Rvd24nKQotICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ25wbSBpbnN0YWxsIGxvY2tkb3duIC0tcHJlZml4ICVzJyAlIE5wbVJlY2lwZUhhbmRsZXIubG9ja2Rvd25wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXNyY3RyZWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgcmVsb2NrYmluID0gb3MucGF0aC5qb2luKE5wbVJlY2lwZUhhbmRsZXIubG9ja2Rvd25wYXRoLCAnbm9kZV9tb2R1bGVzJywgJ2xvY2tkb3duJywgJ3JlbG9jay5qcycpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZWxvY2tiaW4pOgotICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0NvdWxkIG5vdCBmaW5kIHJlbG9jay5qcyB3aXRoaW4gbG9ja2Rvd24gZGlyZWN0b3J5OyBza2lwcGluZyBsb2NrZG93bicpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ25vZGUgJXMnICUgcmVsb2NrYmluLCBjd2Q9c3JjdHJlZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9cnVuZW52LCBzaGVsbD1UcnVlKQotICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ2xvY2tkb3duLXJlbG9jayBmYWlsZWQ6XG4lcycgJSBlLnN0ZG91dCkKLSAgICAgICAgICAgIHJldHVybgorICAgIGRlZiBfcnVuX25wbV9pbnN0YWxsKHNlbGYsIGQsIHNyY3RyZWUsIHJlZ2lzdHJ5LCBkZXYpOgorICAgICAgICAiIiJSdW4gdGhlICducG0gaW5zdGFsbCcgY29tbWFuZCB3aXRob3V0IGJ1aWxkaW5nIHRoZSBhZGRvbnMiIiIKKyAgICAgICAgY29uZmlncyA9IHNlbGYuX25wbV9nbG9iYWxfY29uZmlncyhkZXYpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgiaWdub3JlLXNjcmlwdHMiLCAidHJ1ZSIpKQogCi0gICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4obG9jYWxmaWxlc2RpciwgJ2xvY2tkb3duLmpzb24nKQotICAgICAgICBzaHV0aWwubW92ZShvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJ2xvY2tkb3duLmpzb24nKSwgdG1wZmlsZSkKLSAgICAgICAgZXh0cmF2YWx1ZXMuc2V0ZGVmYXVsdCgnZXh0cmFmaWxlcycsIHt9KQotICAgICAgICBleHRyYXZhbHVlc1snZXh0cmFmaWxlcyddWydsb2NrZG93bi5qc29uJ10gPSB0bXBmaWxlCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJ05QTV9MT0NLRE9XTiA6PSAiJHtUSElTRElSfS8ke1BOfS9sb2NrZG93bi5qc29uIicpCisgICAgICAgIGlmIHJlZ2lzdHJ5OgorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJyZWdpc3RyeSIsIHJlZ2lzdHJ5KSkKIAotICAgIGRlZiBfaGFuZGxlX2RlcGVuZGVuY2llcyhzZWxmLCBkLCBkZXBzLCBvcHRkZXBzLCBkZXZkZXBzLCBsaW5lc19iZWZvcmUsIHNyY3RyZWUpOgotICAgICAgICBpbXBvcnQgc2NyaXB0dXRpbHMKLSAgICAgICAgIyBJZiB0aGlzIGlzbid0IGEgc2luZ2xlIG1vZHVsZSB3ZSBuZWVkIHRvIGdldCB0aGUgZGVwZW5kZW5jaWVzCi0gICAgICAgICMgYW5kIGFkZCB0aGVtIHRvIFNSQ19VUkkKLSAgICAgICAgZGVmIHZhcmZ1bmModmFybmFtZSwgb3JpZ3ZhbHVlLCBvcCwgbmV3bGluZXMpOgotICAgICAgICAgICAgaWYgdmFybmFtZSA9PSAnU1JDX1VSSSc6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG9yaWd2YWx1ZS5zdGFydHN3aXRoKCducG06Ly8nKToKLSAgICAgICAgICAgICAgICAgICAgc3JjX3VyaSA9IG9yaWd2YWx1ZS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgICAgIGRlcGxpc3QgPSB7fQotICAgICAgICAgICAgICAgICAgICBmb3IgZGVwLCBkZXB2ZXIgaW4gb3B0ZGVwcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwZGF0YSA9IHNlbGYuZ2V0X25wbV9kYXRhKGRlcCwgZGVwdmVyLCBkKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jaGVja19ucG1fb3B0aW9uYWxfZGVwZW5kZW5jeShkZXBkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBsaXN0W2RlcF0gPSBkZXBkYXRhCi0gICAgICAgICAgICAgICAgICAgIGZvciBkZXAsIGRlcHZlciBpbiBkZXZkZXBzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXBkYXRhID0gc2VsZi5nZXRfbnBtX2RhdGEoZGVwLCBkZXB2ZXIsIGQpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNoZWNrX25wbV9vcHRpb25hbF9kZXBlbmRlbmN5KGRlcGRhdGEpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxpc3RbZGVwXSA9IGRlcGRhdGEKLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgZGVwdmVyIGluIGRlcHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGRhdGEgPSBzZWxmLmdldF9ucG1fZGF0YShkZXAsIGRlcHZlciwgZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxpc3RbZGVwXSA9IGRlcGRhdGEKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKG9zLnBhdGguam9pbihzcmN0cmVlLCAibm9kZV9tb2R1bGVzIiksIHJlY3Vyc2U9VHJ1ZSkKIAotICAgICAgICAgICAgICAgICAgICBleHRyYV91cmxzID0gW10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgZGVwZGF0YSBpbiBkZXBsaXN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZGF0YS5nZXQoJ3ZlcnNpb24nLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmVyc2lvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9JXM7dmVyc2lvbj0lcztzdWJkaXI9bm9kZV9tb2R1bGVzLyVzJyAlIChkZXAsIHZlcnNpb24sIGRlcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV91cmxzLmFwcGVuZCh1cmwpCi0gICAgICAgICAgICAgICAgICAgIGlmIGV4dHJhX3VybHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHR1dGlscy5mZXRjaF91cmwodGluZm9pbCwgJyAnLmpvaW4oZXh0cmFfdXJscyksIE5vbmUsIHNyY3RyZWUsIGxvZ2dlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHNyY191cmkuZXh0ZW5kKGV4dHJhX3VybHMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3JjX3VyaSwgTm9uZSwgLTEsIFRydWUKLSAgICAgICAgICAgIHJldHVybiBvcmlndmFsdWUsIE5vbmUsIDAsIFRydWUKLSAgICAgICAgdXBkYXRlZCwgbmV3bGluZXMgPSBiYi51dGlscy5lZGl0X21ldGFkYXRhKGxpbmVzX2JlZm9yZSwgWydTUkNfVVJJJ10sIHZhcmZ1bmMpCi0gICAgICAgIGlmIHVwZGF0ZWQ6Ci0gICAgICAgICAgICBkZWwgbGluZXNfYmVmb3JlWzpdCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBuZXdsaW5lczoKLSAgICAgICAgICAgICAgICAjIEhhY2sgdG8gYXZvaWQgbmV3bGluZXMgdGhhdCBlZGl0X21ldGFkYXRhIGluc2VydHMKLSAgICAgICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKCdcbicpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTFdCi0gICAgICAgICAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZChsaW5lKQotICAgICAgICByZXR1cm4gdXBkYXRlZAorICAgICAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkLCBjb25maWdzPWNvbmZpZ3MpCisgICAgICAgIGVudi5ydW4oIm5wbSBpbnN0YWxsIiwgd29ya2Rpcj1zcmN0cmVlKQorCisgICAgZGVmIF9nZW5lcmF0ZV9zaHJpbmt3cmFwKHNlbGYsIGQsIHNyY3RyZWUsIGRldik6CisgICAgICAgICIiIkNoZWNrIGFuZCBnZW5lcmF0ZSB0aGUgJ25wbS1zaHJpbmt3cmFwLmpzb24nIGZpbGUgaWYgbmVlZGVkIiIiCisgICAgICAgIGNvbmZpZ3MgPSBzZWxmLl9ucG1fZ2xvYmFsX2NvbmZpZ3MoZGV2KQorCisgICAgICAgIGVudiA9IE5wbUVudmlyb25tZW50KGQsIGNvbmZpZ3M9Y29uZmlncykKKyAgICAgICAgZW52LnJ1bigibnBtIHNocmlua3dyYXAiLCB3b3JrZGlyPXNyY3RyZWUpCisKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzcmN0cmVlLCAibnBtLXNocmlua3dyYXAuanNvbiIpCisKKyAgICBkZWYgX2hhbmRsZV9saWNlbnNlcyhzZWxmLCBzcmN0cmVlLCBzaHJpbmt3cmFwX2ZpbGUsIGRldik6CisgICAgICAgICIiIlJldHVybiB0aGUgZXh0cmEgbGljZW5zZSBmaWxlcyBhbmQgdGhlIGxpc3Qgb2YgcGFja2FnZXMiIiIKKyAgICAgICAgbGljZmlsZXMgPSBbXQorICAgICAgICBwYWNrYWdlcyA9IHt9CisKKyAgICAgICAgZGVmIF9saWNmaWxlc19hcHBlbmQobGljZmlsZSk6CisgICAgICAgICAgICAiIiJBcHBlbmQgJ2xpY2ZpbGUnIHRvIHRoZSBsaWNlbnNlIGZpbGVzIGxpc3QiIiIKKyAgICAgICAgICAgIGxpY2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKHNyY3RyZWUsIGxpY2ZpbGUpCisgICAgICAgICAgICBsaWNtZDUgPSBiYi51dGlscy5tZDVfZmlsZShsaWNmaWxlcGF0aCkKKyAgICAgICAgICAgIGxpY2ZpbGVzLmFwcGVuZCgiZmlsZTovLyVzO21kNT0lcyIgJSAobGljZmlsZSwgbGljbWQ1KSkKKworICAgICAgICAjIEhhbmRsZSB0aGUgcGFyZW50IHBhY2thZ2UKKyAgICAgICAgX2xpY2ZpbGVzX2FwcGVuZCgicGFja2FnZS5qc29uIikKKyAgICAgICAgcGFja2FnZXNbIiR7UE59Il0gPSAiIgorCisgICAgICAgICMgSGFuZGxlIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgZGVmIF9oYW5kbGVfZGVwZW5kZW5jeShuYW1lLCBwYXJhbXMsIGRlcHRyZWUpOgorICAgICAgICAgICAgc3VmZml4ID0gIi0iLmpvaW4oW3NlbGYuX25wbV9uYW1lKGRlcCkgZm9yIGRlcCBpbiBkZXB0cmVlXSkKKyAgICAgICAgICAgIGRlc3RkaXJzID0gW29zLnBhdGguam9pbigibm9kZV9tb2R1bGVzIiwgZGVwKSBmb3IgZGVwIGluIGRlcHRyZWVdCisgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKCpkZXN0ZGlycykKKyAgICAgICAgICAgIF9saWNmaWxlc19hcHBlbmQob3MucGF0aC5qb2luKGRlc3RkaXIsICJwYWNrYWdlLmpzb24iKSkKKyAgICAgICAgICAgIHBhY2thZ2VzWyIke1BOfS0iICsgc3VmZml4XSA9IGRlc3RkaXIKKworICAgICAgICB3aXRoIG9wZW4oc2hyaW5rd3JhcF9maWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzaHJpbmt3cmFwID0ganNvbi5sb2FkKGYpCisKKyAgICAgICAgZm9yZWFjaF9kZXBlbmRlbmNpZXMoc2hyaW5rd3JhcCwgX2hhbmRsZV9kZXBlbmRlbmN5LCBkZXYpCisKKyAgICAgICAgcmV0dXJuIGxpY2ZpbGVzLCBwYWNrYWdlcwogCiAgICAgZGVmIHByb2Nlc3Moc2VsZiwgc3JjdHJlZSwgY2xhc3NlcywgbGluZXNfYmVmb3JlLCBsaW5lc19hZnRlciwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMpOgotICAgICAgICBpbXBvcnQgYmIudXRpbHMKLSAgICAgICAgaW1wb3J0IG9lLnBhY2thZ2UKLSAgICAgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKyAgICAgICAgIiIiSGFuZGxlIHRoZSBucG0gcmVjaXBlIGNyZWF0aW9uIiIiCiAKLSAgICAgICAgaWYgJ2J1aWxkc3lzdGVtJyBpbiBoYW5kbGVkOgorICAgICAgICBpZiAiYnVpbGRzeXN0ZW0iIGluIGhhbmRsZWQ6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICBkZWYgcmVhZF9wYWNrYWdlX2pzb24oZm4pOgotICAgICAgICAgICAgd2l0aCBvcGVuKGZuLCAncicsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykgYXMgZjoKLSAgICAgICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhmLnJlYWQoKSkKKyAgICAgICAgZmlsZXMgPSBSZWNpcGVIYW5kbGVyLmNoZWNrZmlsZXMoc3JjdHJlZSwgWyJwYWNrYWdlLmpzb24iXSkKIAotICAgICAgICBmaWxlcyA9IFJlY2lwZUhhbmRsZXIuY2hlY2tmaWxlcyhzcmN0cmVlLCBbJ3BhY2thZ2UuanNvbiddKQotICAgICAgICBpZiBmaWxlczoKLSAgICAgICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgICAgIG5wbV9iaW5kaXIgPSBzZWxmLl9lbnN1cmVfbnBtKCkKLSAgICAgICAgICAgIGlmIG5vdCBucG1fYmluZGlyOgotICAgICAgICAgICAgICAgIHN5cy5leGl0KDE0KQotICAgICAgICAgICAgZC5wcmVwZW5kVmFyKCdQQVRIJywgJyVzOicgJSBucG1fYmluZGlyKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICAgICAgZGF0YSA9IHJlYWRfcGFja2FnZV9qc29uKGZpbGVzWzBdKQotICAgICAgICAgICAgaWYgJ25hbWUnIGluIGRhdGEgYW5kICd2ZXJzaW9uJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGV4dHJhdmFsdWVzWydQTiddID0gZGF0YVsnbmFtZSddCi0gICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXNbJ1BWJ10gPSBkYXRhWyd2ZXJzaW9uJ10KLSAgICAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZCgnbnBtJykKLSAgICAgICAgICAgICAgICBoYW5kbGVkLmFwcGVuZCgnYnVpbGRzeXN0ZW0nKQotICAgICAgICAgICAgICAgIGlmICdkZXNjcmlwdGlvbicgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXNbJ1NVTU1BUlknXSA9IGRhdGFbJ2Rlc2NyaXB0aW9uJ10KLSAgICAgICAgICAgICAgICBpZiAnaG9tZXBhZ2UnIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhdmFsdWVzWydIT01FUEFHRSddID0gZGF0YVsnaG9tZXBhZ2UnXQorICAgICAgICB3aXRoIG9wZW4oZmlsZXNbMF0sICJyIikgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWQoZikKIAotICAgICAgICAgICAgICAgIGZldGNoZGV2ID0gZXh0cmF2YWx1ZXNbJ2ZldGNoZGV2J10gb3IgTm9uZQotICAgICAgICAgICAgICAgIGRlcHMsIG9wdGRlcHMsIGRldmRlcHMgPSBzZWxmLmdldF9ucG1fcGFja2FnZV9kZXBlbmRlbmNpZXMoZGF0YSwgZmV0Y2hkZXYpCi0gICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2RlcGVuZGVuY2llcyhkLCBkZXBzLCBvcHRkZXBzLCBkZXZkZXBzLCBsaW5lc19iZWZvcmUsIHNyY3RyZWUpCisgICAgICAgIGlmICJuYW1lIiBub3QgaW4gZGF0YSBvciAidmVyc2lvbiIgbm90IGluIGRhdGE6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICAgICAgICAgICMgU2hyaW5rd3JhcAotICAgICAgICAgICAgICAgIGxvY2FsZmlsZXNkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbC1ucG0nKQotICAgICAgICAgICAgICAgIHNlbGYuX3Nocmlua3dyYXAoc3JjdHJlZSwgbG9jYWxmaWxlc2RpciwgZXh0cmF2YWx1ZXMsIGxpbmVzX2JlZm9yZSwgZCkKKyAgICAgICAgZXh0cmF2YWx1ZXNbIlBOIl0gPSBzZWxmLl9ucG1fbmFtZShkYXRhWyJuYW1lIl0pCisgICAgICAgIGV4dHJhdmFsdWVzWyJQViJdID0gZGF0YVsidmVyc2lvbiJdCiAKLSAgICAgICAgICAgICAgICAjIExvY2tkb3duCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9ja2Rvd24oc3JjdHJlZSwgbG9jYWxmaWxlc2RpciwgZXh0cmF2YWx1ZXMsIGxpbmVzX2JlZm9yZSwgZCkKKyAgICAgICAgaWYgImRlc2NyaXB0aW9uIiBpbiBkYXRhOgorICAgICAgICAgICAgZXh0cmF2YWx1ZXNbIlNVTU1BUlkiXSA9IGRhdGFbImRlc2NyaXB0aW9uIl0KIAotICAgICAgICAgICAgICAgICMgU3BsaXQgZWFjaCBucG0gbW9kdWxlIG91dCB0byBpcyBvd24gcGFja2FnZQotICAgICAgICAgICAgICAgIG5wbXBhY2thZ2VzID0gb2UucGFja2FnZS5ucG1fc3BsaXRfcGFja2FnZV9kaXJzKHNyY3RyZWUpCi0gICAgICAgICAgICAgICAgbGljdmFsdWVzID0gTm9uZQotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGhhbmRsZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgdHVwbGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbVswXSA9PSAnbGljZW5zZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGljdmFsdWVzID0gaXRlbVsxXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpY3ZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgbGljdmFsdWVzID0gaGFuZGxlX2xpY2Vuc2VfdmFycyhzcmN0cmVlLCBsaW5lc19iZWZvcmUsIGhhbmRsZWQsIGV4dHJhdmFsdWVzLCBkKQotICAgICAgICAgICAgICAgIGlmIGxpY3ZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgIyBBdWdtZW50IHRoZSBsaWNlbnNlIGxpc3Qgd2l0aCBpbmZvcm1hdGlvbiB3ZSBoYXZlIGluIHRoZSBwYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlcyA9IHt9Ci0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBzZWxmLl9oYW5kbGVfbGljZW5zZShkYXRhKQotICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZXNbJyR7UE59J10gPSBsaWNlbnNlCi0gICAgICAgICAgICAgICAgICAgIGZvciBwa2duYW1lLCBwa2dpdGVtIGluIG5wbXBhY2thZ2VzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfLCBwZGF0YSA9IHBrZ2l0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBzZWxmLl9oYW5kbGVfbGljZW5zZShwZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpY2Vuc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZXNbcGtnbmFtZV0gPSBsaWNlbnNlCi0gICAgICAgICAgICAgICAgICAgICMgTm93IHdyaXRlIG91dCB0aGUgcGFja2FnZS1zcGVjaWZpYyBsaWNlbnNlIHZhbHVlcwotICAgICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gc3RyaXAgb3V0IHRoZSBqc29uIGRhdGEgZGljdHMgZm9yIHRoaXMgc2luY2Ugc3BsaXRfcGtnX2xpY2Vuc2VzCi0gICAgICAgICAgICAgICAgICAgICMgaXNuJ3QgZXhwZWN0aW5nIGl0Ci0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzID0gT3JkZXJlZERpY3QoKHgseVswXSkgZm9yIHgseSBpbiBucG1wYWNrYWdlcy5pdGVtcygpKQotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlc1snJHtQTn0nXSA9ICcnCi0gICAgICAgICAgICAgICAgICAgIHBrZ2xpY2Vuc2VzID0gc3BsaXRfcGtnX2xpY2Vuc2VzKGxpY3ZhbHVlcywgcGFja2FnZXMsIGxpbmVzX2FmdGVyLCBsaWNlbnNlcykKLSAgICAgICAgICAgICAgICAgICAgYWxsX2xpY2Vuc2VzID0gbGlzdChzZXQoW2l0ZW0ucmVwbGFjZSgnXycsICcgJykgZm9yIHBrZ2xpY2Vuc2UgaW4gcGtnbGljZW5zZXMudmFsdWVzKCkgZm9yIGl0ZW0gaW4gcGtnbGljZW5zZV0pKQotICAgICAgICAgICAgICAgICAgICBpZiAnJicgaW4gYWxsX2xpY2Vuc2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2xpY2Vuc2VzLnJlbW92ZSgnJicpCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhdmFsdWVzWydMSUNFTlNFJ10gPSAnICYgJy5qb2luKGFsbF9saWNlbnNlcykKKyAgICAgICAgaWYgImhvbWVwYWdlIiBpbiBkYXRhOgorICAgICAgICAgICAgZXh0cmF2YWx1ZXNbIkhPTUVQQUdFIl0gPSBkYXRhWyJob21lcGFnZSJdCiAKLSAgICAgICAgICAgICAgICAjIE5lZWQgdG8gbW92ZSBTIHNldHRpbmcgYWZ0ZXIgaW5oZXJpdCBucG0KLSAgICAgICAgICAgICAgICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUobGluZXNfYmVmb3JlKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdTID0nKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5wb3AoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzX2FmdGVyLmluc2VydCgwLCAnIyBNdXN0IGJlIHNldCBhZnRlciBpbmhlcml0IG5wbSBzaW5jZSB0aGF0IGl0c2VsZiBzZXRzIFMnKQotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNfYWZ0ZXIuaW5zZXJ0KDEsIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBkZXYgPSBiYi51dGlscy50b19ib29sZWFuKHN0cihleHRyYXZhbHVlcy5nZXQoIk5QTV9JTlNUQUxMX0RFViIsICIwIikpLCBGYWxzZSkKKyAgICAgICAgcmVnaXN0cnkgPSBzZWxmLl9nZXRfcmVnaXN0cnkobGluZXNfYmVmb3JlKQogCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgYmIubm90ZSgiQ2hlY2tpbmcgaWYgbnBtIGlzIGF2YWlsYWJsZSAuLi4iKQorICAgICAgICAjIFRoZSBuYXRpdmUgbnBtIGlzIHVzZWQgaGVyZSAoYW5kIG5vdCB0aGUgaG9zdCBvbmUpIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAgICAjIG5wbSB2ZXJzaW9uIGlzIGhpZ2ggZW5vdWdoIHRvIGVuc3VyZSBhbiBlZmZpY2llbnQgZGVwZW5kZW5jeSB0cmVlCisgICAgICAgICMgcmVzb2x1dGlvbiBhbmQgYXZvaWQgaXNzdWUgd2l0aCB0aGUgc2hyaW5rd3JhcCBmaWxlIGZvcm1hdC4KKyAgICAgICAgIyBNb3Jlb3ZlciB0aGUgbmF0aXZlIG5wbSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBidWlsZC4KKyAgICAgICAgYmluZGlyID0gc2VsZi5fZW5zdXJlX25wbSgpCiAKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoVElORk9JTC5jb25maWdfZGF0YSkKKyAgICAgICAgZC5wcmVwZW5kVmFyKCJQQVRIIiwgYmluZGlyICsgIjoiKQorICAgICAgICBkLnNldFZhcigiUyIsIHNyY3RyZWUpCiAKLSAgICAjIEZJWE1FIHRoaXMgaXMgZHVwbGljYXRlZCBmcm9tIGxpYi9iYi9mZXRjaDIvbnBtLnB5Ci0gICAgZGVmIF9wYXJzZV92aWV3KHNlbGYsIG91dHB1dCk6Ci0gICAgICAgICcnJwotICAgICAgICBQYXJzZSB0aGUgb3V0cHV0IG9mIG5wbSB2aWV3IC0tanNvbjsgdGhlIGxhc3QgSlNPTiByZXN1bHQKLSAgICAgICAgaXMgYXNzdW1lZCB0byBiZSB0aGUgb25lIHRoYXQgd2UncmUgaW50ZXJlc3RlZCBpbi4KLSAgICAgICAgJycnCi0gICAgICAgIHBkYXRhID0gTm9uZQotICAgICAgICBvdXRkZXBzID0ge30KLSAgICAgICAgZGF0YWxpbmVzID0gW10KLSAgICAgICAgYnJhY2VsZXZlbCA9IDAKLSAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGlmIGJyYWNlbGV2ZWw6Ci0gICAgICAgICAgICAgICAgZGF0YWxpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgZWxpZiAneycgaW4gbGluZToKLSAgICAgICAgICAgICAgICBkYXRhbGluZXMgPSBbXQotICAgICAgICAgICAgICAgIGRhdGFsaW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgIGJyYWNlbGV2ZWwgPSBicmFjZWxldmVsICsgbGluZS5jb3VudCgneycpIC0gbGluZS5jb3VudCgnfScpCi0gICAgICAgIGlmIGRhdGFsaW5lczoKLSAgICAgICAgICAgIHBkYXRhID0ganNvbi5sb2FkcygnXG4nLmpvaW4oZGF0YWxpbmVzKSkKLSAgICAgICAgcmV0dXJuIHBkYXRhCisgICAgICAgIGJiLm5vdGUoIkdlbmVyYXRpbmcgc2hyaW5rd3JhcCBmaWxlIC4uLiIpCisgICAgICAgICMgVG8gZ2VuZXJhdGUgdGhlIHNocmlua3dyYXAgZmlsZSB0aGUgZGVwZW5kZW5jaWVzIGhhdmUgdG8gYmUgaW5zdGFsbGVkCisgICAgICAgICMgZmlyc3QuIER1cmluZyB0aGUgZ2VuZXJhdGlvbiBwcm9jZXNzIHNvbWUgZmlsZXMgbWF5IGJlIHVwZGF0ZWQgLworICAgICAgICAjIGRlbGV0ZWQuIEJ5IGRlZmF1bHQgZGV2dG9vbCB0cmFja3MgdGhlIGRpZmZzIGluIHRoZSBzcmN0cmVlIGFuZCByYWlzZXMKKyAgICAgICAgIyBlcnJvcnMgd2hlbiBmaW5pc2hpbmcgdGhlIHJlY2lwZSBpZiBzb21lIGRpZmZzIGFyZSBmb3VuZC4KKyAgICAgICAgZ2l0X2V4Y2x1ZGVfZmlsZSA9IG9zLnBhdGguam9pbihzcmN0cmVlLCAiLmdpdCIsICJpbmZvIiwgImV4Y2x1ZGUiKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhnaXRfZXhjbHVkZV9maWxlKToKKyAgICAgICAgICAgIHdpdGggb3BlbihnaXRfZXhjbHVkZV9maWxlLCAicisiKSBhcyBmOgorICAgICAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIFsiL25vZGVfbW9kdWxlcy8iLCAiL25wbS1zaHJpbmt3cmFwLmpzb24iXToKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZSBub3QgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUgKyAiXG4iKQogCi0gICAgIyBGSVhNRSB0aGlzIGlzIGVmZmVjdGl2ZWx5IGR1cGxpY2F0ZWQgZnJvbSBsaWIvYmIvZmV0Y2gyL25wbS5weQotICAgICMgKHNwbGl0IG91dCBmcm9tIF9nZXRkZXBlbmRlbmNpZXMoKSkKLSAgICBkZWYgZ2V0X25wbV9kYXRhKHNlbGYsIHBrZywgdmVyc2lvbiwgZCk6Ci0gICAgICAgIGltcG9ydCBiYi5mZXRjaDIKLSAgICAgICAgcGtnZnVsbG5hbWUgPSBwa2cKLSAgICAgICAgaWYgdmVyc2lvbiAhPSAnKicgYW5kIG5vdCAnLycgaW4gdmVyc2lvbjoKLSAgICAgICAgICAgIHBrZ2Z1bGxuYW1lICs9ICJAJyVzJyIgJSB2ZXJzaW9uCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiQ2FsbGluZyBnZXRkZXBzIG9uICVzIiAlIHBrZykKLSAgICAgICAgcnVuZW52ID0gZGljdChvcy5lbnZpcm9uLCBQQVRIPWQuZ2V0VmFyKCdQQVRIJykpCi0gICAgICAgIGZldGNoY21kID0gIm5wbSB2aWV3ICVzIC0tanNvbiIgJSBwa2dmdWxsbmFtZQotICAgICAgICBvdXRwdXQsIF8gPSBiYi5wcm9jZXNzLnJ1bihmZXRjaGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9cnVuZW52LCBzaGVsbD1UcnVlKQotICAgICAgICBkYXRhID0gc2VsZi5fcGFyc2VfdmlldyhvdXRwdXQpCi0gICAgICAgIHJldHVybiBkYXRhCisgICAgICAgIGxvY2tfZmlsZSA9IG9zLnBhdGguam9pbihzcmN0cmVlLCAicGFja2FnZS1sb2NrLmpzb24iKQorICAgICAgICBsb2NrX2NvcHkgPSBsb2NrX2ZpbGUgKyAiLmNvcHkiCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2tfZmlsZSk6CisgICAgICAgICAgICBiYi51dGlscy5jb3B5ZmlsZShsb2NrX2ZpbGUsIGxvY2tfY29weSkKIAotICAgICMgRklYTUUgdGhpcyBpcyBlZmZlY3RpdmVseSBkdXBsaWNhdGVkIGZyb20gbGliL2JiL2ZldGNoMi9ucG0ucHkKLSAgICAjIChzcGxpdCBvdXQgZnJvbSBfZ2V0ZGVwZW5kZW5jaWVzKCkpCi0gICAgZGVmIGdldF9ucG1fcGFja2FnZV9kZXBlbmRlbmNpZXMoc2VsZiwgcGRhdGEsIGZldGNoZGV2KToKLSAgICAgICAgZGVwZW5kZW5jaWVzID0gcGRhdGEuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkKLSAgICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ29wdGlvbmFsRGVwZW5kZW5jaWVzJywge30pCi0gICAgICAgIGRlcGVuZGVuY2llcy51cGRhdGUob3B0aW9uYWxEZXBlbmRlbmNpZXMpCi0gICAgICAgIGlmIGZldGNoZGV2OgotICAgICAgICAgICAgZGV2RGVwZW5kZW5jaWVzID0gcGRhdGEuZ2V0KCdkZXZEZXBlbmRlbmNpZXMnLCB7fSkKLSAgICAgICAgICAgIGRlcGVuZGVuY2llcy51cGRhdGUoZGV2RGVwZW5kZW5jaWVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGV2RGVwZW5kZW5jaWVzID0ge30KLSAgICAgICAgZGVwc2ZvdW5kID0ge30KLSAgICAgICAgb3B0ZGVwc2ZvdW5kID0ge30KLSAgICAgICAgZGV2ZGVwc2ZvdW5kID0ge30KLSAgICAgICAgZm9yIGRlcCBpbiBkZXBlbmRlbmNpZXM6Ci0gICAgICAgICAgICBpZiBkZXAgaW4gb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgICAgICAgICAgICAgb3B0ZGVwc2ZvdW5kW2RlcF0gPSBkZXBlbmRlbmNpZXNbZGVwXQotICAgICAgICAgICAgZWxpZiBkZXAgaW4gZGV2RGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgICAgIGRldmRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGVwc2ZvdW5kW2RlcF0gPSBkZXBlbmRlbmNpZXNbZGVwXQotICAgICAgICByZXR1cm4gZGVwc2ZvdW5kLCBvcHRkZXBzZm91bmQsIGRldmRlcHNmb3VuZAorICAgICAgICBzZWxmLl9ydW5fbnBtX2luc3RhbGwoZCwgc3JjdHJlZSwgcmVnaXN0cnksIGRldikKKyAgICAgICAgc2hyaW5rd3JhcF9maWxlID0gc2VsZi5fZ2VuZXJhdGVfc2hyaW5rd3JhcChkLCBzcmN0cmVlLCBkZXYpCiAKLSAgICAjIEZJWE1FIHRoaXMgaXMgZWZmZWN0aXZlbHkgZHVwbGljYXRlZCBmcm9tIGxpYi9iYi9mZXRjaDIvbnBtLnB5Ci0gICAgIyAoc3BsaXQgb3V0IGZyb20gX2dldGRlcGVuZGVuY2llcygpKQotICAgIGRlZiBjaGVja19ucG1fb3B0aW9uYWxfZGVwZW5kZW5jeShzZWxmLCBwZGF0YSk6Ci0gICAgICAgIHBrZ19vcyA9IHBkYXRhLmdldCgnb3MnLCBOb25lKQotICAgICAgICBpZiBwa2dfb3M6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwa2dfb3MsIGxpc3QpOgotICAgICAgICAgICAgICAgIHBrZ19vcyA9IFtwa2dfb3NdCi0gICAgICAgICAgICBibGFja2xpc3QgPSBGYWxzZQotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcGtnX29zOgotICAgICAgICAgICAgICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCgnIScpOgotICAgICAgICAgICAgICAgICAgICBibGFja2xpc3QgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiAobm90IGJsYWNrbGlzdCBhbmQgJ2xpbnV4JyBub3QgaW4gcGtnX29zKSBvciAnIWxpbnV4JyBpbiBwa2dfb3M6Ci0gICAgICAgICAgICAgICAgcGtnID0gcGRhdGEuZ2V0KCduYW1lJywgJ1VubmFtZWQgcGFja2FnZScpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJTa2lwcGluZyAlcyBzaW5jZSBpdCdzIGluY29tcGF0aWJsZSB3aXRoIExpbnV4IiAlIHBrZykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9ja19jb3B5KToKKyAgICAgICAgICAgIGJiLnV0aWxzLm1vdmVmaWxlKGxvY2tfY29weSwgbG9ja19maWxlKQorCisgICAgICAgICMgQWRkIHRoZSBzaHJpbmt3cmFwIGZpbGUgYXMgJ2V4dHJhZmlsZXMnCisgICAgICAgIHNocmlua3dyYXBfY29weSA9IHNocmlua3dyYXBfZmlsZSArICIuY29weSIKKyAgICAgICAgYmIudXRpbHMuY29weWZpbGUoc2hyaW5rd3JhcF9maWxlLCBzaHJpbmt3cmFwX2NvcHkpCisgICAgICAgIGV4dHJhdmFsdWVzLnNldGRlZmF1bHQoImV4dHJhZmlsZXMiLCB7fSkKKyAgICAgICAgZXh0cmF2YWx1ZXNbImV4dHJhZmlsZXMiXVsibnBtLXNocmlua3dyYXAuanNvbiJdID0gc2hyaW5rd3JhcF9jb3B5CisKKyAgICAgICAgdXJsX2xvY2FsID0gIm5wbXN3Oi8vJXMiICUgc2hyaW5rd3JhcF9maWxlCisgICAgICAgIHVybF9yZWNpcGU9ICJucG1zdzovLyR7VEhJU0RJUn0vJHtCUE59L25wbS1zaHJpbmt3cmFwLmpzb24iCisKKyAgICAgICAgaWYgZGV2OgorICAgICAgICAgICAgdXJsX2xvY2FsICs9ICI7ZGV2PTEiCisgICAgICAgICAgICB1cmxfcmVjaXBlICs9ICI7ZGV2PTEiCisKKyAgICAgICAgIyBBZGQgdGhlIG5wbXN3IHVybCBpbiB0aGUgU1JDX1VSSSBvZiB0aGUgZ2VuZXJhdGVkIHJlY2lwZQorICAgICAgICBkZWYgX2hhbmRsZV9zcmN1cmkodmFybmFtZSwgb3JpZ3ZhbHVlLCBvcCwgbmV3bGluZXMpOgorICAgICAgICAgICAgIiIiVXBkYXRlIHRoZSB2ZXJzaW9uIHZhbHVlIGFuZCBhZGQgdGhlICducG1zdzovLycgdXJsIiIiCisgICAgICAgICAgICB2YWx1ZSA9IG9yaWd2YWx1ZS5yZXBsYWNlKCJ2ZXJzaW9uPSIgKyBkYXRhWyJ2ZXJzaW9uIl0sICJ2ZXJzaW9uPSR7UFZ9IikKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgidmVyc2lvbj1sYXRlc3QiLCAidmVyc2lvbj0ke1BWfSIpCisgICAgICAgICAgICB2YWx1ZXMgPSBbbGluZS5zdHJpcCgpIGZvciBsaW5lIGluIHZhbHVlLnN0cmlwKCdcbicpLnNwbGl0bGluZXMoKV0KKyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQodXJsX3JlY2lwZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZXMsIE5vbmUsIDQsIEZhbHNlCisKKyAgICAgICAgKF8sIG5ld2xpbmVzKSA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEobGluZXNfYmVmb3JlLCBbIlNSQ19VUkkiXSwgX2hhbmRsZV9zcmN1cmkpCisgICAgICAgIGxpbmVzX2JlZm9yZVs6XSA9IFtsaW5lLnJzdHJpcCgnXG4nKSBmb3IgbGluZSBpbiBuZXdsaW5lc10KKworICAgICAgICAjIEluIG9yZGVyIHRvIGdlbmVyYXRlIGNvcnJlY3QgbGljZW5jZSBjaGVja3N1bXMgaW4gdGhlIHJlY2lwZSB0aGUKKyAgICAgICAgIyBkZXBlbmRlbmNpZXMgaGF2ZSB0byBiZSBmZXRjaGVkIGFnYWluIHVzaW5nIHRoZSBucG1zdyB1cmwKKyAgICAgICAgYmIubm90ZSgiRmV0Y2hpbmcgbnBtIGRlcGVuZGVuY2llcyAuLi4iKQorICAgICAgICBiYi51dGlscy5yZW1vdmUob3MucGF0aC5qb2luKHNyY3RyZWUsICJub2RlX21vZHVsZXMiKSwgcmVjdXJzZT1UcnVlKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKFt1cmxfbG9jYWxdLCBkKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc3JjdHJlZSkKKworICAgICAgICBiYi5ub3RlKCJIYW5kbGluZyBsaWNlbmNlcyAuLi4iKQorICAgICAgICAobGljZmlsZXMsIHBhY2thZ2VzKSA9IHNlbGYuX2hhbmRsZV9saWNlbnNlcyhzcmN0cmVlLCBzaHJpbmt3cmFwX2ZpbGUsIGRldikKKyAgICAgICAgZXh0cmF2YWx1ZXNbIkxJQ19GSUxFU19DSEtTVU0iXSA9IGxpY2ZpbGVzCisgICAgICAgIHNwbGl0X3BrZ19saWNlbnNlcyhndWVzc19saWNlbnNlKHNyY3RyZWUsIGQpLCBwYWNrYWdlcywgbGluZXNfYWZ0ZXIsIFtdKQorCisgICAgICAgIGNsYXNzZXMuYXBwZW5kKCJucG0iKQorICAgICAgICBoYW5kbGVkLmFwcGVuZCgiYnVpbGRzeXN0ZW0iKQorCiAgICAgICAgIHJldHVybiBUcnVlCiAKLQogZGVmIHJlZ2lzdGVyX3JlY2lwZV9oYW5kbGVycyhoYW5kbGVycyk6CisgICAgIiIiUmVnaXN0ZXIgdGhlIG5wbSBoYW5kbGVyIiIiCiAgICAgaGFuZGxlcnMuYXBwZW5kKChOcG1SZWNpcGVIYW5kbGVyKCksIDYwKSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkgYi9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5CmluZGV4IDY5MmRkN2EuLjdjZWNlYWMgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3JlcG9ydC5weQpAQCAtMjEyLDcgKzIxMiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuPW1heGxlbikKICAgICAgICAgcHJpbnQob3V0cHV0KQogCi0gICAgZGVmIHZpZXdfdGVzdF9yZXBvcnQoc2VsZiwgbG9nZ2VyLCBzb3VyY2VfZGlyLCBicmFuY2gsIGNvbW1pdCwgdGFnLCB1c2VfcmVncmVzc2lvbl9tYXAsIHJhd190ZXN0KToKKyAgICBkZWYgdmlld190ZXN0X3JlcG9ydChzZWxmLCBsb2dnZXIsIHNvdXJjZV9kaXIsIGJyYW5jaCwgY29tbWl0LCB0YWcsIHVzZV9yZWdyZXNzaW9uX21hcCwgcmF3X3Rlc3QsIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KToKKyAgICAgICAgZGVmIHByaW50X3NlbGVjdGVkX3Rlc3RjYXNlX3Jlc3VsdCh0ZXN0cmVzdWx0cywgc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHkpOgorICAgICAgICAgICAgZm9yIHRlc3RzdWl0ZSBpbiB0ZXN0cmVzdWx0czoKKyAgICAgICAgICAgICAgICBmb3IgcmVzdWx0aWQgaW4gdGVzdHJlc3VsdHNbdGVzdHN1aXRlXToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdHJlc3VsdHNbdGVzdHN1aXRlXVtyZXN1bHRpZF1bJ3Jlc3VsdCddCisgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9yZXN1bHQgPSByZXN1bHQuZ2V0KHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5LCB7fSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9jYXNlX3Jlc3VsdC5nZXQoJ3N0YXR1cycpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0ZvdW5kIHNlbGVjdGVkIHRlc3QgY2FzZSByZXN1bHQgZm9yICVzIGZyb20gJXMnICUgKHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdGlkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHRlc3RfY2FzZV9yZXN1bHRbJ3N0YXR1cyddKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0NvdWxkIG5vdCBmaW5kIHNlbGVjdGVkIHRlc3QgY2FzZSByZXN1bHQgZm9yICVzIGZyb20gJXMnICUgKHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdGlkKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9jYXNlX3Jlc3VsdC5nZXQoJ2xvZycpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQodGVzdF9jYXNlX3Jlc3VsdFsnbG9nJ10pCiAgICAgICAgIHRlc3RfY291bnRfcmVwb3J0cyA9IFtdCiAgICAgICAgIGNvbmZpZ21hcCA9IHJlc3VsdHV0aWxzLnN0b3JlX21hcAogICAgICAgICBpZiB1c2VfcmVncmVzc2lvbl9tYXA6CkBAIC0yMzUsMTIgKzI0OSwxOCBAQAogICAgICAgICAgICAgZm9yIHRlc3RzdWl0ZSBpbiB0ZXN0cmVzdWx0czoKICAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0cmVzdWx0c1t0ZXN0c3VpdGVdLmdldChyYXdfdGVzdCwge30pCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICByYXdfcmVzdWx0c1t0ZXN0c3VpdGVdID0gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgIHJhd19yZXN1bHRzW3Rlc3RzdWl0ZV0gPSB7cmF3X3Rlc3Q6IHJlc3VsdH0KICAgICAgICAgICAgIGlmIHJhd19yZXN1bHRzOgotICAgICAgICAgICAgICAgIHByaW50KGpzb24uZHVtcHMocmF3X3Jlc3VsdHMsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkpCisgICAgICAgICAgICAgICAgaWYgc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHk6CisgICAgICAgICAgICAgICAgICAgIHByaW50X3NlbGVjdGVkX3Rlc3RjYXNlX3Jlc3VsdChyYXdfcmVzdWx0cywgc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhyYXdfcmVzdWx0cywgc29ydF9rZXlzPVRydWUsIGluZGVudD00KSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ0NvdWxkIG5vdCBmaW5kIHJhdyB0ZXN0IHJlc3VsdCBmb3IgJXMnICUgcmF3X3Rlc3QpCiAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBpZiBzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seToKKyAgICAgICAgICAgIHByaW50X3NlbGVjdGVkX3Rlc3RjYXNlX3Jlc3VsdCh0ZXN0cmVzdWx0cywgc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHkpCisgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICBmb3IgdGVzdHN1aXRlIGluIHRlc3RyZXN1bHRzOgogICAgICAgICAgICAgZm9yIHJlc3VsdGlkIGluIHRlc3RyZXN1bHRzW3Rlc3RzdWl0ZV06CiAgICAgICAgICAgICAgICAgc2tpcCA9IEZhbHNlCkBAIC0yNjgsNyArMjg4LDcgQEAKIGRlZiByZXBvcnQoYXJncywgbG9nZ2VyKToKICAgICByZXBvcnQgPSBSZXN1bHRzVGV4dFJlcG9ydCgpCiAgICAgcmVwb3J0LnZpZXdfdGVzdF9yZXBvcnQobG9nZ2VyLCBhcmdzLnNvdXJjZV9kaXIsIGFyZ3MuYnJhbmNoLCBhcmdzLmNvbW1pdCwgYXJncy50YWcsIGFyZ3MudXNlX3JlZ3Jlc3Npb25fbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmF3X3Rlc3Rfb25seSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJhd190ZXN0X29ubHksIGFyZ3Muc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHkpCiAgICAgcmV0dXJuIDAKIAogZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHN1YnBhcnNlcnMpOgpAQCAtMjg3LDQgKzMwNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0ICJzdG9yZV9tYXAiLCB1c2UgdGhlICJyZWdyZXNzaW9uX21hcCIgZm9yIHJlcG9ydCcpCiAgICAgcGFyc2VyX2J1aWxkLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYXdfdGVzdF9vbmx5JywgZGVmYXVsdD0nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCByYXcgdGVzdCByZXN1bHQgb25seSBmb3IgdGhlIHVzZXIgcHJvdmlkZWQgdGVzdCByZXN1bHQgaWQnKQotCisgICAgcGFyc2VyX2J1aWxkLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zZWxlY3RlZF90ZXN0X2Nhc2Vfb25seScsIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdvdXRwdXQgc2VsZWN0ZWQgdGVzdCBjYXNlIHJlc3VsdCBmb3IgdGhlIHVzZXIgcHJvdmlkZWQgdGVzdCBjYXNlIGlkLCBpZiBib3RoIHRlc3QgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzdWx0IGlkIGFuZCB0ZXN0IGNhc2UgaWQgYXJlIHByb3ZpZGVkIHRoZW4gb3V0cHV0IHRoZSBzZWxlY3RlZCB0ZXN0IGNhc2UgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHByb3ZpZGVkIHRlc3QgcmVzdWx0IGlkJykKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXN1bHR1dGlscy5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXN1bHR1dGlscy5weQppbmRleCBmMGFlOGVjLi41ZmVjMDFmIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVzdWx0dXRpbHMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3Jlc3VsdHV0aWxzLnB5CkBAIC0xMjcsMTAgKzEyNyw3IEBACiAgICAgICAgICAgICBkYXRhID0gbG9nZGF0YS5nZXQoImNvbXByZXNzZWQiKQogICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5iNjRkZWNvZGUoZGF0YS5lbmNvZGUoInV0Zi04IikpCiAgICAgICAgICAgICBkYXRhID0gemxpYi5kZWNvbXByZXNzKGRhdGEpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiBkYXRhCisgICAgICAgICAgICByZXR1cm4gZGF0YS5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSdpZ25vcmUnKQogICAgIHJldHVybiBOb25lCiAKIGRlZiBwdGVzdHJlc3VsdF9nZXRfbG9nKHJlc3VsdHMsIHNlY3Rpb24pOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weSBiL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKaW5kZXggNDViZGFmNS4uZjkyMjU1ZCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CkBAIC03Nyw3ICs3Nyw2IEBACiAKIAogZGVmIGxvYWRfcGx1Z2lucyhsb2dnZXIsIHBsdWdpbnMsIHBsdWdpbnBhdGgpOgotICAgIGltcG9ydCBpbXAKIAogICAgIGRlZiBsb2FkX3BsdWdpbihuYW1lKToKICAgICAgICAgbG9nZ2VyLmRlYnVnKCdMb2FkaW5nIHBsdWdpbiAlcycgJSBuYW1lKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11eDg2LWRpcmVjdGRpc2sud2tzIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11eDg2LWRpcmVjdGRpc2sud2tzCmluZGV4IGM4ZDlmMTIuLjIyYjQ1MjEgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXg4Ni1kaXJlY3RkaXNrLndrcworKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKQEAgLTQsNSArNCw1IEBACiAKIGluY2x1ZGUgY29tbW9uLndrcy5pbmMKIAotYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJ2Z2E9MCBydyBvcHJvZmlsZS50aW1lcj0xIHJvb3Rmc3R5cGU9ZXh0NCAiCitib290bG9hZGVyICAtLXRpbWVvdXQ9MCAgLS1hcHBlbmQ9InJ3IG9wcm9maWxlLnRpbWVyPTEgcm9vdGZzdHlwZT1leHQ0ICIKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5CmluZGV4IDdlNjYyMDcuLjAxODgxNWIgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkKQEAgLTI4MCw3ICsyODAsNyBAQAogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICAgIiIiR2V0IHBhdGggdG8gdGhlIGV4ZWN1dGFibGUgaW4gYSBsYXp5IHdheS4iIiIKICAgICAgICAgaWYgbmFtZSBpbiAoIm1kaXIiLCAibWNvcHkiLCAibWRlbCIsICJtZGVsdHJlZSIsICJzZmRpc2siLCAiZTJmc2NrIiwKLSAgICAgICAgICAgICAgICAgICAgInJlc2l6ZTJmcyIsICJta3N3YXAiLCAibWtkb3NmcyIsICJkZWJ1Z2ZzIik6CisgICAgICAgICAgICAgICAgICAgICJyZXNpemUyZnMiLCAibWtzd2FwIiwgIm1rZG9zZnMiLCAiZGVidWdmcyIsImJsa2lkIik6CiAgICAgICAgICAgICBhbmFtZSA9ICJfJXMiICUgbmFtZQogICAgICAgICAgICAgaWYgYW5hbWUgbm90IGluIHNlbGYuX19kaWN0X186CiAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhbmFtZSwgZmluZF9leGVjdXRhYmxlKG5hbWUsIHNlbGYucGF0aHMpKQpAQCAtMjkxLDcgKzI5MSw3IEBACiAKICAgICBkZWYgX2dldF9wYXJ0X2ltYWdlKHNlbGYsIHBudW0pOgogICAgICAgICBpZiBwbnVtIG5vdCBpbiBzZWxmLnBhcnRpdGlvbnM6Ci0gICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiUGFydGl0aW9uICVzIGlzIG5vdCBpbiB0aGUgaW1hZ2UiKQorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBhcnRpdGlvbiAlcyBpcyBub3QgaW4gdGhlIGltYWdlIiAlIHBudW0pCiAgICAgICAgIHBhcnQgPSBzZWxmLnBhcnRpdGlvbnNbcG51bV0KICAgICAgICAgIyBjaGVjayBpZiBmc3R5cGUgaXMgc3VwcG9ydGVkCiAgICAgICAgIGZvciBmc3R5cGUgaW4gc2VsZi5mc3R5cGVzOgpAQCAtMzE0LDYgKzMxNCw5IEBACiAgICAgICAgICAgICAgICAgICAgIHNlZWs9c2VsZi5wYXJ0aXRpb25zW3BudW1dLnN0YXJ0KQogCiAgICAgZGVmIGRpcihzZWxmLCBwbnVtLCBwYXRoKToKKyAgICAgICAgaWYgcG51bSBub3QgaW4gc2VsZi5wYXJ0aXRpb25zOgorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBhcnRpdGlvbiAlcyBpcyBub3QgaW4gdGhlIGltYWdlIiAlIHBudW0pCisKICAgICAgICAgaWYgc2VsZi5wYXJ0aXRpb25zW3BudW1dLmZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKICAgICAgICAgICAgIHJldHVybiBleGVjX2NtZCgie30ge30gLVIgJ2xzIC1sIHt9JyIuZm9ybWF0KHNlbGYuZGVidWdmcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLApAQCAtMzIzLDE2ICszMjYsMzEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCkpCiAKLSAgICBkZWYgY29weShzZWxmLCBzcmMsIHBudW0sIHBhdGgpOgorICAgIGRlZiBjb3B5KHNlbGYsIHNyYywgZGVzdCk6CiAgICAgICAgICIiIkNvcHkgcGFydGl0aW9uIGltYWdlIGludG8gd2ljIGltYWdlLiIiIgorICAgICAgICBwbnVtID0gIGRlc3QucGFydCBpZiBpc2luc3RhbmNlKHNyYywgc3RyKSBlbHNlIHNyYy5wYXJ0CisKICAgICAgICAgaWYgc2VsZi5wYXJ0aXRpb25zW3BudW1dLmZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKLSAgICAgICAgICAgIGNtZCA9ICJwcmludGYgJ2NkIHt9XG53cml0ZSB7fSB7fVxuJyB8IHt9IC13IHt9Ii5cCi0gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KHBhdGgsIHNyYywgb3MucGF0aC5iYXNlbmFtZShzcmMpLAorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcmMsIHN0cik6CisgICAgICAgICAgICAgICAgY21kID0gInByaW50ZiAnY2Qge31cbndyaXRlIHt9IHt9XG4nIHwge30gLXcge30iLlwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQob3MucGF0aC5kaXJuYW1lKGRlc3QucGF0aCksIHNyYywgb3MucGF0aC5iYXNlbmFtZShzcmMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlYnVnZnMsIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pKQorICAgICAgICAgICAgZWxzZTogIyBjb3B5IGZyb20gd2ljCisgICAgICAgICAgICAgICAgIyBydW4gYm90aCBkdW1wIGFuZCByZHVtcCB0byBzdXBwb3J0IGJvdGggZmlsZXMgYW5kIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGNtZCA9ICJwcmludGYgJ2NkIHt9XG5kdW1wIC97fSB7fVxucmR1bXAgL3t9IHt9XG4nIHwge30ge30iLlwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQob3MucGF0aC5kaXJuYW1lKHNyYy5wYXRoKSwgc3JjLnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIHNyYy5wYXRoLCBkZXN0LCBzZWxmLmRlYnVnZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pKQogICAgICAgICBlbHNlOiAjIGZhdAotICAgICAgICAgICAgY21kID0gInt9IC1pIHt9IC1zbm9wIHt9IDo6e30iLmZvcm1hdChzZWxmLm1jb3B5LAorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcmMsIHN0cik6CisgICAgICAgICAgICAgICAgY21kID0gInt9IC1pIHt9IC1zbm9wIHt9IDo6e30iLmZvcm1hdChzZWxmLm1jb3B5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRlc3QucGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY21kID0gInt9IC1pIHt9IC1zbm9wIDo6e30ge30iLmZvcm1hdChzZWxmLm1jb3B5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLnBhdGgsIGRlc3QpCisKICAgICAgICAgZXhlY19jbWQoY21kLCBhc19zaGVsbD1UcnVlKQogICAgICAgICBzZWxmLl9wdXRfcGFydF9pbWFnZShwbnVtKQogCkBAIC00MjQsNyArNDQyLDcgQEAKICAgICAgICAgICAgIG91dGYuZmx1c2goKQogCiAgICAgICAgIGRlZiByZWFkX3B0YWJsZShwYXRoKToKLSAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKCJ7fSAtZEoge30iLmZvcm1hdChzZWxmLnNmZGlzaywgcGF0aCkpCisgICAgICAgICAgICBvdXQgPSBleGVjX2NtZCgie30gLUoge30iLmZvcm1hdChzZWxmLnNmZGlzaywgcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhvdXQpCiAKICAgICAgICAgZGVmIHdyaXRlX3B0YWJsZShwYXJ0cywgdGFyZ2V0KToKQEAgLTUyNSw3ICs1NDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImNyZWF0aW5nIHN3YXAgcGFydGl0aW9uIHt9Ii5mb3JtYXQocG51bSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IHBhcnQuZ2V0KCJuYW1lIikKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItTCB7fSIuZm9ybWF0KGxhYmVsKSBpZiBsYWJlbCBlbHNlICcnCi0gICAgICAgICAgICAgICAgICAgICAgICB1dWlkID0gcGFydC5nZXQoInV1aWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gZXhlY19jbWQoInt9IC0tcHJvYmUge30iLmZvcm1hdChzZWxmLmJsa2lkLCBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICB1dWlkID0gb3V0W291dC5pbmRleCgiVVVJRD1cIiIpKzY6b3V0LmluZGV4KCJVVUlEPVwiIikrNDJdCiAgICAgICAgICAgICAgICAgICAgICAgICB1dWlkX3N0ciA9ICItVSB7fSIuZm9ybWF0KHV1aWQpIGlmIHV1aWQgZWxzZSAnJwogICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBhcnRmbmFtZSwgJ3cnKSBhcyBzcGFyc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZnRydW5jYXRlKHNwYXJzZS5maWxlbm8oKSwgcGFydFsnc2l6ZSddICogc2VsZi5fbHNlY3Rvcl9zaXplKQpAQCAtNTUxLDExICs1NzAsMTUgQEAKIAogZGVmIHdpY19jcChhcmdzLCBuYXRpdmVfc3lzcm9vdCk6CiAgICAgIiIiCi0gICAgQ29weSBsb2NhbCBmaWxlIG9yIGRpcmVjdG9yeSB0byB0aGUgdmZhdCBwYXJ0aXRpb24gb2YKKyAgICBDb3B5IGZpbGUgb3IgZGlyZWN0b3J5IHRvL2Zyb20gdGhlIHZmYXQvZXh0IHBhcnRpdGlvbiBvZgogICAgIHBhcnRpdGlvbmVkIGltYWdlLgogICAgICIiIgotICAgIGRpc2sgPSBEaXNrKGFyZ3MuZGVzdC5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCi0gICAgZGlzay5jb3B5KGFyZ3Muc3JjLCBhcmdzLmRlc3QucGFydCwgYXJncy5kZXN0LnBhdGgpCisgICAgaWYgaXNpbnN0YW5jZShhcmdzLmRlc3QsIHN0cik6CisgICAgICAgIGRpc2sgPSBEaXNrKGFyZ3Muc3JjLmltYWdlLCBuYXRpdmVfc3lzcm9vdCkKKyAgICBlbHNlOgorICAgICAgICBkaXNrID0gRGlzayhhcmdzLmRlc3QuaW1hZ2UsIG5hdGl2ZV9zeXNyb290KQorICAgIGRpc2suY29weShhcmdzLnNyYywgYXJncy5kZXN0KQorCiAKIGRlZiB3aWNfcm0oYXJncywgbmF0aXZlX3N5c3Jvb3QpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKaW5kZXggODEyZWJlMy4uYmQzYTJiOSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CkBAIC0zNDEsMTIgKzM0MSwxNSBAQAogCiB3aWNfY3BfdXNhZ2UgPSAiIiIKIAotIENvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uCisgQ29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8vZnJvbSB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbgogCi0gdXNhZ2U6IHdpYyBjcCA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+WzxwYXRoPl0gWy0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+XQorIHVzYWdlOiB3aWMgY3AgPHNyYz4gPGRlc3Q+IFstLW5hdGl2ZS1zeXNyb290IDxwYXRoPl0KIAotIFRoaXMgY29tbWFuZCAgY29waWVzIGxvY2FsIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucwotb2YgcGFydGl0aW9uZWQgIGltYWdlLgorIHNvdXJjZS9kZXN0aW5hdGlvbiBpbWFnZSBpbiBmb3JtYXQgPGltYWdlPjo8cGFydGl0aW9uPls8cGF0aD5dCisKKyBUaGlzIGNvbW1hbmQgY29waWVzIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGVpdGhlcgorICAtIGZyb20gbG9jYWwgdG8gdmZhdCBvciBleHQqIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgaW1hZ2UKKyAgLSBmcm9tIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIGltYWdlIHRvIGxvY2FsCiAKICBTZWUgJ3dpYyBoZWxwIGNwJyBmb3IgbW9yZSBkZXRhaWxlZCBpbnN0cnVjdGlvbnMuCiAKQEAgLTM1NSwxNiArMzU4LDE4IEBACiB3aWNfY3BfaGVscCA9ICIiIgogCiBOQU1FCi0gICAgd2ljIGNwIC0gY29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zCisgICAgd2ljIGNwIC0gY29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8vZnJvbSB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbnMKIAogU1lOT1BTSVMKLSAgICB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPgotICAgIHdpYyBjcCA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+Ci0gICAgd2ljIGNwIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4gLS1uYXRpdmUtc3lzcm9vdCA8cGF0aD4KKyAgICB3aWMgY3AgPHNyYz4gPGRlc3Q+OjxwYXJ0aXRpb24+CisgICAgd2ljIGNwIDxzcmM+OjxwYXJ0aXRpb24+IDxkZXN0PgorICAgIHdpYyBjcCA8c3JjPiA8ZGVzdC1pbWFnZT46PHBhcnRpdGlvbj48cGF0aD4KKyAgICB3aWMgY3AgPHNyYz4gPGRlc3QtaW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+IC0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+CiAKIERFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGNvcGllcyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24gb2YKLSAgICB0aGUgcGFydGl0aW9uZWQgaW1hZ2UuCisgICAgVGhpcyBjb21tYW5kIGNvcGllcyBmaWxlcyBvciBkaXJlY3RvcmllcyBlaXRoZXIKKyAgICAgIC0gZnJvbSBsb2NhbCB0byB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCBpbWFnZQorICAgICAgLSBmcm9tIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIGltYWdlIHRvIGxvY2FsCiAKICAgICBUaGUgZmlyc3QgZm9ybSBvZiBpdCBjb3BpZXMgZmlsZSBvciBkaXJlY3RvcnkgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mCiAgICAgdGhlIHBhcnRpdGlvbjoKQEAgLTM5Nyw2ICs0MDIsMTAgQEAKICAgICAgICAgICAgICAgIDQgZmlsZXMgICAgICAgICAgICAgICAgICAgMCBieXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNSA2NzUgMzkyIGJ5dGVzIGZyZWUKIAorICAgIFRoZSB0aGlyZCBmb3JtIG9mIHRoZSBjb21tYW5kIGNvcGllcyBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5CisgICAgb24gdGhlIHBhcnRpdGlvbiB0byBsb2NhbDoKKyAgICAgICAkIHdpYyBjcCB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYzoxL3ZtbGludXogdGVzdAorCiAgICAgVGhlIC1uIG9wdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290CiAgICAgY29udGFpbmluZyB0aGUgdG9vbHMocGFydGVkIGFuZCBtdG9vbHMpIHRvIHVzZS4KICIiIgpAQCAtNTI3LDcgKzUzNiw4IEBACiAKICAgICBTb3VyY2UgcGx1Z2lucyBjYW4gYWxzbyBiZSBpbXBsZW1lbnRlZCBhbmQgYWRkZWQgYnkgZXh0ZXJuYWwKICAgICBsYXllcnMgLSBhbnkgcGx1Z2lucyBmb3VuZCBpbiBhIHNjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS8KLSAgICBkaXJlY3RvcnkgaW4gYW4gZXh0ZXJuYWwgbGF5ZXIgd2lsbCBhbHNvIGJlIG1hZGUgYXZhaWxhYmxlLgorICAgIG9yIGxpYi93aWMvcGx1Z2lucy9zb3VyY2UvIGRpcmVjdG9yeSBpbiBhbiBleHRlcm5hbCBsYXllciB3aWxsCisgICAgYWxzbyBiZSBtYWRlIGF2YWlsYWJsZS4KIAogICAgIFdoZW4gdGhlIHdpYyBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBpbnZva2UgYSBwYXJ0aXRpb24tc3BlY2lmaWMKICAgICBpbXBsZW1lbnRhdGlvbiwgaXQgbG9va3MgZm9yIHRoZSBwbHVnaW4gdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcwpAQCAtOTYwLDYgKzk3MCwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG9taXR0ZWQsIG5vdCB0aGUgZGlyZWN0b3J5IGl0c2VsZi4gVGhpcyBvcHRpb24gb25seQogICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBhbiBlZmZlY3Qgd2l0aCB0aGUgcm9vdGZzIHNvdXJjZSBwbHVnaW4uCiAKKyAgICAgICAgIC0taW5jbHVkZS1wYXRoOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IGFkZHMgdGhlIGNvbnRlbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGdpdmVuIHBhdGggb3IgYSByb290ZnMgdG8gdGhlIHJlc3VsdGluZyBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3B0aW9uIGNvbnRhaW5zIHR3byBmaWVsZHMsIHRoZSBvcmlnaW4gYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLiBXaGVuIHRoZSBvcmlnaW4gaXMgYSByb290ZnMsIGl0IGZvbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBsb2dpYyBhcyB0aGUgcm9vdGZzLWRpciBhcmd1bWVudCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgYW5kIG93bmVycyBhcmUga2VwdC4gV2hlbiB0aGUgb3JpZ2luIGlzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHdpYyBpcworICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgbm90IHRoZSByb290ZnMgaXRzZWxmIHNvIHVzZSBvZiBhbiBhYnNvbHV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggaXMgcmVjb21tZW5kZWQsIGFuZCB0aGUgb3duZXIgYW5kIGdyb3VwIGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Q6cm9vdC4gSWYgbm8gZGVzdGluYXRpb24gaXMgZ2l2ZW4gaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUgcm9vdCBvZiB0aGUgcm9vdGZzLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIG9ubHkgaGFzIGFuIGVmZmVjdCB3aXRoIHRoZSByb290ZnMgc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luLgorCisgICAgICAgICAtLWNoYW5nZS1kaXJlY3Rvcnk6IFRoaXMgb3B0aW9uIGlzIHNwZWNpZmljIHRvIHdpYy4gSXQgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gZGlyZWN0b3J5IGJlZm9yZSBjb3B5aW5nIHRoZSBmaWxlcy4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gaXMgdXNlZnVsIHdoZW4gd2Ugd2FudCB0byBzcGxpdCBhIHJvb3RmcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBwYXJ0aXRpb25zIGFuZCB3ZSB3YW50IHRvIGtlZXAgdGhlIHJpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIGFuZCB1c2VybmFtZXMgaW4gYWxsIHRoZSBwYXJ0aXRpb25zLgorCiAgICAgICAgICAtLWV4dHJhLXNwYWNlOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IGFkZHMgZXh0cmEKICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlIGFmdGVyIHRoZSBzcGFjZSBmaWxsZWQgYnkgdGhlIGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBwYXJ0aXRpb24uIFRoZSBmaW5hbCBzaXplIGNhbiBnbwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQppbmRleCA2YTY0M2JhLi5iOGJlZmU3IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQpAQCAtMTM3LDYgKzEzNyw4IEBACiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWFjdGl2ZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWFsaWduJywgdHlwZT1pbnQpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWV4Y2x1ZGUtcGF0aCcsIG5hcmdzPScrJykKKyAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0taW5jbHVkZS1wYXRoJywgbmFyZ3M9JysnLCBhY3Rpb249J2FwcGVuZCcpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWNoYW5nZS1kaXJlY3RvcnknKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgiLS1leHRyYS1zcGFjZSIsIHR5cGU9c2l6ZXR5cGUpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWZzb3B0aW9ucycsIGRlc3Q9J2Zzb3B0cycpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWZzdHlwZScsIGRlZmF1bHQ9J3ZmYXQnLApAQCAtMjQ1LDYgKzI0NywxMSBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnYm9vdGxvYWRlcicpOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuYm9vdGxvYWRlcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJvb3Rsb2FkZXIgPSBwYXJzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvbmNhdGVuYXRlIHRoZSBzdHJpbmdzIHNldCBpbiBBUFBFTkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRfdmFyID0gZ2V0X2JpdGJha2VfdmFyKCJBUFBFTkQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFwcGVuZF92YXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYm9vdGxvYWRlci5hcHBlbmQgPSAnICcuam9pbihmaWx0ZXIoTm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYm9vdGxvYWRlci5hcHBlbmQsIGFwcGVuZF92YXIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gIiVzOiVkOiBtb3JlIHRoYW4gb25lIGJvb3Rsb2FkZXIgc3BlY2lmaWVkIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbmZwYXRoLCBsaW5lbm8pCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9taXNjLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weQppbmRleCAxZjE5OWI5Li45MTk3NWJhIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9taXNjLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkKQEAgLTQ1LDcgKzQ1LDggQEAKICAgICAgICAgICAgICAgICAgICJwYXJ0ZWQiOiAicGFydGVkIiwKICAgICAgICAgICAgICAgICAgICJzZmRpc2siOiAidXRpbC1saW51eCIsCiAgICAgICAgICAgICAgICAgICAic2dkaXNrIjogImdwdGZkaXNrIiwKLSAgICAgICAgICAgICAgICAgICJzeXNsaW51eCI6ICJzeXNsaW51eCIKKyAgICAgICAgICAgICAgICAgICJzeXNsaW51eCI6ICJzeXNsaW51eCIsCisgICAgICAgICAgICAgICAgICAidGFyIjogInRhciIKICAgICAgICAgICAgICAgICAgfQogCiBkZWYgcnVudG9vbChjbWRsbl9vcl9hcmdzKToKQEAgLTExMiw2ICsxMTMsMTUgQEAKICAgICAiIiIKICAgICByZXR1cm4gX2V4ZWNfY21kKGNtZF9hbmRfYXJncywgYXNfc2hlbGwpWzFdCiAKK2RlZiBmaW5kX2V4ZWN1dGFibGUoY21kLCBwYXRocyk6CisgICAgcmVjaXBlID0gY21kCisgICAgaWYgcmVjaXBlIGluIE5BVElWRV9SRUNJUEVTOgorICAgICAgICByZWNpcGUgPSAgTkFUSVZFX1JFQ0lQRVNbcmVjaXBlXQorICAgIHByb3ZpZGVkID0gZ2V0X2JpdGJha2VfdmFyKCJBU1NVTUVfUFJPVklERUQiKQorICAgIGlmIHByb3ZpZGVkIGFuZCAiJXMtbmF0aXZlIiAlIHJlY2lwZSBpbiBwcm92aWRlZDoKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIHJldHVybiBzcGF3bi5maW5kX2V4ZWN1dGFibGUoY21kLCBwYXRocykKIAogZGVmIGV4ZWNfbmF0aXZlX2NtZChjbWRfYW5kX2FyZ3MsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG89IiIpOgogICAgICIiIgpAQCAtMTM2LDcgKzE0Niw3IEBACiAgICAgbG9nZ2VyLmRlYnVnKCJleGVjX25hdGl2ZV9jbWQ6ICVzIiwgbmF0aXZlX2NtZF9hbmRfYXJncykKIAogICAgICMgSWYgdGhlIGNvbW1hbmQgaXNuJ3QgaW4gdGhlIG5hdGl2ZSBzeXNyb290IHNheSB3ZSBmYWlsZWQuCi0gICAgaWYgc3Bhd24uZmluZF9leGVjdXRhYmxlKGFyZ3NbMF0sIG5hdGl2ZV9wYXRocyk6CisgICAgaWYgZmluZF9leGVjdXRhYmxlKGFyZ3NbMF0sIG5hdGl2ZV9wYXRocyk6CiAgICAgICAgIHJldCwgb3V0ID0gX2V4ZWNfY21kKG5hdGl2ZV9jbWRfYW5kX2FyZ3MsIFRydWUpCiAgICAgZWxzZToKICAgICAgICAgcmV0ID0gMTI3CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkKaW5kZXggZDgwOTQwOC4uN2Q5ZGQ2MSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weQpAQCAtMzAsNiArMzAsOCBAQAogICAgICAgICBzZWxmLmRldmljZSA9IE5vbmUKICAgICAgICAgc2VsZi5leHRyYV9zcGFjZSA9IGFyZ3MuZXh0cmFfc3BhY2UKICAgICAgICAgc2VsZi5leGNsdWRlX3BhdGggPSBhcmdzLmV4Y2x1ZGVfcGF0aAorICAgICAgICBzZWxmLmluY2x1ZGVfcGF0aCA9IGFyZ3MuaW5jbHVkZV9wYXRoCisgICAgICAgIHNlbGYuY2hhbmdlX2RpcmVjdG9yeSA9IGFyZ3MuY2hhbmdlX2RpcmVjdG9yeQogICAgICAgICBzZWxmLmZzb3B0cyA9IGFyZ3MuZnNvcHRzCiAgICAgICAgIHNlbGYuZnN0eXBlID0gYXJncy5mc3R5cGUKICAgICAgICAgc2VsZi5sYWJlbCA9IGFyZ3MubGFiZWwKQEAgLTE4OSw3ICsxOTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubW91bnRwb2ludCwgc2VsZi5zaXplLCBzZWxmLmZpeGVkX3NpemUpKQogCiAgICAgZGVmIHByZXBhcmVfcm9vdGZzKHNlbGYsIGNyX3dvcmtkaXIsIG9lX2J1aWxkZGlyLCByb290ZnNfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCwgcmVhbF9yb290ZnMgPSBUcnVlKToKKyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QsIHJlYWxfcm9vdGZzID0gVHJ1ZSwgcHNldWRvX2RpciA9IE5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUHJlcGFyZSBjb250ZW50IGZvciBhIHJvb3RmcyBwYXJ0aXRpb24gaS5lLiBjcmVhdGUgYSBwYXJ0aXRpb24KICAgICAgICAgYW5kIGZpbGwgaXQgZnJvbSBhIC9yb290ZnMgZGlyLgpAQCAtMTk3LDE1ICsxOTksMTQgQEAKICAgICAgICAgQ3VycmVudGx5IGhhbmRsZXMgZXh0Mi8zLzQsIGJ0cmZzLCB2ZmF0IGFuZCBzcXVhc2hmcy4KICAgICAgICAgIiIiCiAgICAgICAgIHBfcHJlZml4ID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19QUkVGSVgiLCAiJXMvdXNyIiAlIG5hdGl2ZV9zeXNyb290KQotICAgICAgICBwX2xvY2Fsc3RhdGVkaXIgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX0xPQ0FMU1RBVEVESVIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMvLi4vcHNldWRvIiAlICByb290ZnNfZGlyKQotICAgICAgICBwX3Bhc3N3ZCA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fUEFTU1dEIiwgcm9vdGZzX2RpcikKLSAgICAgICAgcF9ub3N5bWxpbmtleHAgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX05PU1lNTElOS0VYUCIsICIxIikKLSAgICAgICAgcHNldWRvID0gImV4cG9ydCBQU0VVRE9fUFJFRklYPSVzOyIgJSBwX3ByZWZpeAotICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTE9DQUxTVEFURURJUj0lczsiICUgcF9sb2NhbHN0YXRlZGlyCi0gICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19QQVNTV0Q9JXM7IiAlIHBfcGFzc3dkCi0gICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19OT1NZTUxJTktFWFA9JXM7IiAlIHBfbm9zeW1saW5rZXhwCi0gICAgICAgIHBzZXVkbyArPSAiJXMgIiAlIGdldF9iaXRiYWtlX3ZhcigiRkFLRVJPT1RDTUQiKQorICAgICAgICBpZiAocHNldWRvX2Rpcik6CisgICAgICAgICAgICBwc2V1ZG8gPSAiZXhwb3J0IFBTRVVET19QUkVGSVg9JXM7IiAlIHBfcHJlZml4CisgICAgICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTE9DQUxTVEFURURJUj0lczsiICUgcHNldWRvX2RpcgorICAgICAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX1BBU1NXRD0lczsiICUgcm9vdGZzX2RpcgorICAgICAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX05PU1lNTElOS0VYUD0xOyIKKyAgICAgICAgICAgIHBzZXVkbyArPSAiJXMgIiAlIGdldF9iaXRiYWtlX3ZhcigiRkFLRVJPT1RDTUQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHNldWRvID0gTm9uZQogCiAgICAgICAgIHJvb3RmcyA9ICIlcy9yb290ZnNfJXMuJXMuJXMiICUgKGNyX3dvcmtkaXIsIHNlbGYubGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmZzdHlwZSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CmluZGV4IGY3NGQ2NDMuLmQ5YjRlNTcgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQpAQCAtMTgsNyArMTgsNyBAQAogCiBQTFVHSU5fVFlQRVMgPSBbImltYWdlciIsICJzb3VyY2UiXQogCi1TQ1JJUFRTX1BMVUdJTl9ESVIgPSAic2NyaXB0cy9saWIvd2ljL3BsdWdpbnMiCitTQ1JJUFRTX1BMVUdJTl9ESVIgPSBbInNjcmlwdHMvbGliL3dpYy9wbHVnaW5zIiwgImxpYi93aWMvcGx1Z2lucyJdCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC0zOCwxMCArMzgsMTEgQEAKICAgICAgICAgICAgIGNscy5fcGx1Z2luX2RpcnMgPSBbb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdwbHVnaW5zJyldCiAgICAgICAgICAgICBsYXllcnMgPSBnZXRfYml0YmFrZV92YXIoIkJCTEFZRVJTIikgb3IgJycKICAgICAgICAgICAgIGZvciBsYXllcl9wYXRoIGluIGxheWVycy5zcGxpdCgpOgotICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgU0NSSVBUU19QTFVHSU5fRElSKQotICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5leHBhbmR1c2VyKHBhdGgpKQotICAgICAgICAgICAgICAgIGlmIHBhdGggbm90IGluIGNscy5fcGx1Z2luX2RpcnMgYW5kIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIGNscy5fcGx1Z2luX2RpcnMuaW5zZXJ0KDAsIHBhdGgpCisgICAgICAgICAgICAgICAgZm9yIHNjcmlwdF9wbHVnaW5fZGlyIGluIFNDUklQVFNfUExVR0lOX0RJUjoKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihsYXllcl9wYXRoLCBzY3JpcHRfcGx1Z2luX2RpcikKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmV4cGFuZHVzZXIocGF0aCkpCisgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggbm90IGluIGNscy5fcGx1Z2luX2RpcnMgYW5kIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICBjbHMuX3BsdWdpbl9kaXJzLmluc2VydCgwLCBwYXRoKQogCiAgICAgICAgIGlmIHB0eXBlIG5vdCBpbiBQTFVHSU5TOgogICAgICAgICAgICAgIyBsb2FkIGFsbCBwdHlwZSBwbHVnaW5zCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKaW5kZXggMjQ0MWNjMy4uMmQwNmMyNCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weQpAQCAtNDAzLDcgKzQwMyw3IEBACiAgICAgICAgICAgICAgICAgIyBSZXNlcnZlIGEgc2VjdG9yIGZvciBFQlIgZm9yIGV2ZXJ5IGxvZ2ljYWwgcGFydGl0aW9uCiAgICAgICAgICAgICAgICAgIyBiZWZvcmUgYWxpZ25tZW50IGlzIHBlcmZvcm1lZC4KICAgICAgICAgICAgICAgICBpZiBwYXJ0LnR5cGUgPT0gJ2xvZ2ljYWwnOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm9mZnNldCArPSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IDIKIAogICAgICAgICAgICAgYWxpZ25fc2VjdG9ycyA9IDAKICAgICAgICAgICAgIGlmIHBhcnQuYWxpZ246CkBAIC00NDYsNyArNDQ2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRwYXJ0ID0gcGFydC5udW0KICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc2l6ZV9zZWMgKz0gYWxpZ25fc2VjdG9ycwotICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NpemVfc2VjICs9IHBhcnQuc2l6ZV9zZWMgKyAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc2l6ZV9zZWMgKz0gcGFydC5zaXplX3NlYyArIDIKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByaW1hcnlfcGFydF9udW0gKz0gMQogICAgICAgICAgICAgICAgICAgICBwYXJ0Lm51bSA9IHNlbGYucHJpbWFyeV9wYXJ0X251bQpAQCAtNTEyLDcgKzUxMiw3IEBACiAgICAgICAgICAgICAgICAgIyBhZGQgYSBzZWN0b3IgYXQgdGhlIGJhY2ssIHNvIHRoYXQgdGhlcmUgaXMgZW5vdWdoCiAgICAgICAgICAgICAgICAgIyByb29tIGZvciBhbGwgbG9naWNhbCBwYXJ0aXRpb25zLgogICAgICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9wYXJ0aXRpb24oc2VsZi5wYXRoLCAiZXh0ZW5kZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgcGFydC5zdGFydCAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBwYXJ0LnN0YXJ0IC0gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc2l6ZV9zZWMpCiAKICAgICAgICAgICAgIGlmIHBhcnQuZnN0eXBlID09ICJzd2FwIjoKQEAgLTU4MCw5ICs1ODAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hdGl2ZV9zeXNyb290KQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6Ci0gICAgICAgICMgcmVtb3ZlIHBhcnRpdGlvbiBpbWFnZXMKLSAgICAgICAgZm9yIGltYWdlIGluIHNldChzZWxmLnBhcnRpbWFnZXMpOgotICAgICAgICAgICAgb3MucmVtb3ZlKGltYWdlKQorICAgICAgICBwYXNzCiAKICAgICBkZWYgYXNzZW1ibGUoc2VsZik6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiSW5zdGFsbGluZyBwYXJ0aXRpb25zIikKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jhd2NvcHkucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5CmluZGV4IDgyOTcwY2UuLjNjNDk5N2QgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jhd2NvcHkucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIk5vIGZpbGUgc3BlY2lmaWVkIikKIAogICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oa2VybmVsX2Rpciwgc291cmNlX3BhcmFtc1snZmlsZSddKQotICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgIiVzLiVzIiAlIChzb3VyY2VfcGFyYW1zWydmaWxlJ10sIHBhcnQubGluZW5vKSkKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICIlcy4lcyIgJSAob3MucGF0aC5iYXNlbmFtZShzb3VyY2VfcGFyYW1zWydmaWxlJ10pLCBwYXJ0LmxpbmVubykpCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguZGlybmFtZShkc3QpKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShkc3QpKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2Uvcm9vdGZzLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2Uvcm9vdGZzLnB5CmluZGV4IGUyNmU5NWIuLmYxZGI4M2YgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jvb3Rmcy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKQEAgLTE3LDEwICsxNywxMSBAQAogaW1wb3J0IHN5cwogCiBmcm9tIG9lLnBhdGggaW1wb3J0IGNvcHloYXJkbGlua3RyZWUKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAogCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKIGZyb20gd2ljLnBsdWdpbmJhc2UgaW1wb3J0IFNvdXJjZVBsdWdpbgotZnJvbSB3aWMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyCitmcm9tIHdpYy5taXNjIGltcG9ydCBnZXRfYml0YmFrZV92YXIsIGV4ZWNfbmF0aXZlX2NtZAogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKIApAQCAtMzIsNiArMzMsMjIgQEAKICAgICBuYW1lID0gJ3Jvb3RmcycKIAogICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX192YWxpZGF0ZV9wYXRoKGNtZCwgcm9vdGZzX2RpciwgcGF0aCk6CisgICAgICAgIGlmIG9zLnBhdGguaXNhYnMocGF0aCk6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiVzOiBNdXN0IGJlIHJlbGF0aXZlOiAlcyIgJSAoY21kLCBvcmlnX3BhdGgpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICAjIERpc2FsbG93IGNsaW1iaW5nIG91dHNpZGUgb2YgcGFyZW50IGRpcmVjdG9yeSB1c2luZyAnLi4nLAorICAgICAgICAjIGJlY2F1c2UgZG9pbmcgc28gY291bGQgYmUgcXVpdGUgZGlzYXN0cm91cyAod2Ugd2lsbCBkZWxldGUgdGhlCisgICAgICAgICMgZGlyZWN0b3J5LCBvciBtb2RpZnkgYSBkaXJlY3Rvcnkgb3V0c2lkZSBPcGVuRW1iZWRkZWQpLgorICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihyb290ZnNfZGlyLCBwYXRoKSkKKyAgICAgICAgaWYgbm90IGZ1bGxfcGF0aC5zdGFydHN3aXRoKG9zLnBhdGgucmVhbHBhdGgocm9vdGZzX2RpcikpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogTXVzdCBwb2ludCBpbnNpZGUgdGhlIHJvb3RmczoiICUgKGNtZCwgcGF0aCkpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIHJldHVybiBmdWxsX3BhdGgKKworICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX19nZXRfcm9vdGZzX2Rpcihyb290ZnNfZGlyKToKICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihyb290ZnNfZGlyKToKICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLnJlYWxwYXRoKHJvb3Rmc19kaXIpCkBAIC00NCw2ICs2MSwxNSBAQAogCiAgICAgICAgIHJldHVybiBvcy5wYXRoLnJlYWxwYXRoKGltYWdlX3Jvb3Rmc19kaXIpCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9fZ2V0X3BzZXVkbyhuYXRpdmVfc3lzcm9vdCwgcm9vdGZzLCBwc2V1ZG9fZGlyKToKKyAgICAgICAgcHNldWRvID0gImV4cG9ydCBQU0VVRE9fUFJFRklYPSVzL3VzcjsiICUgbmF0aXZlX3N5c3Jvb3QKKyAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX0xPQ0FMU1RBVEVESVI9JXM7IiAlIHBzZXVkb19kaXIKKyAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX1BBU1NXRD0lczsiICUgcm9vdGZzCisgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19OT1NZTUxJTktFWFA9MTsiCisgICAgICAgIHBzZXVkbyArPSAiJXMgIiAlIGdldF9iaXRiYWtlX3ZhcigiRkFLRVJPT1RDTUQiKQorICAgICAgICByZXR1cm4gcHNldWRvCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjciwgY3Jfd29ya2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfYnVpbGRkaXIsIGJvb3RpbWdfZGlyLCBrZXJuZWxfZGlyLApAQCAtNjgsMTAgKzk0LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0IGlzIG5vdCBhIHZhbGlkIHBhdGgsIGV4aXRpbmciICUgcGFydC5yb290ZnNfZGlyKQogCiAgICAgICAgIHBhcnQucm9vdGZzX2RpciA9IGNscy5fX2dldF9yb290ZnNfZGlyKHJvb3Rmc19kaXIpCisgICAgICAgIHBzZXVkb19kaXIgPSBvcy5wYXRoLmpvaW4ocGFydC5yb290ZnNfZGlyLCAiLi4vcHNldWRvIikKKyAgICAgICAgaWYgbm90IG9zLnBhdGgubGV4aXN0cyhwc2V1ZG9fZGlyKToKKyAgICAgICAgICAgIGxvZ2dlci53YXJuKCIlcyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJVc2VybmFtZXMgYW5kIHBlcm1pc3Npb25zIHdpbGwgYmUgaW52YWxpZCAiICUgcHNldWRvX2RpcikKKyAgICAgICAgICAgIHBzZXVkb19kaXIgPSBOb25lCiAKICAgICAgICAgbmV3X3Jvb3RmcyA9IE5vbmUKKyAgICAgICAgbmV3X3BzZXVkbyA9IE5vbmUKICAgICAgICAgIyBIYW5kbGUgZXhjbHVkZWQgcGF0aHMuCi0gICAgICAgIGlmIHBhcnQuZXhjbHVkZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBwYXJ0LmV4Y2x1ZGVfcGF0aCBvciBwYXJ0LmluY2x1ZGVfcGF0aCBvciBwYXJ0LmNoYW5nZV9kaXJlY3Rvcnk6CiAgICAgICAgICAgICAjIFdlIG5lZWQgYSBuZXcgcm9vdGZzIGRpcmVjdG9yeSB3ZSBjYW4gZGVsZXRlIGZpbGVzIGZyb20uIENvcHkgdG8KICAgICAgICAgICAgICMgd29ya2Rpci4KICAgICAgICAgICAgIG5ld19yb290ZnMgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAicm9vdGZzJWQiICUgcGFydC5saW5lbm8pKQpAQCAtNzksMjIgKzExMSw5MyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKG5ld19yb290ZnMpOgogICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKG5ld19yb290ZnMpKQogCi0gICAgICAgICAgICBjb3B5aGFyZGxpbmt0cmVlKHBhcnQucm9vdGZzX2RpciwgbmV3X3Jvb3RmcykKKyAgICAgICAgICAgIGlmIHBhcnQuY2hhbmdlX2RpcmVjdG9yeToKKyAgICAgICAgICAgICAgICBjZCA9IHBhcnQuY2hhbmdlX2RpcmVjdG9yeQorICAgICAgICAgICAgICAgIGlmIGNkWy0xXSA9PSAnLyc6CisgICAgICAgICAgICAgICAgICAgIGNkID0gY2RbOi0xXQorICAgICAgICAgICAgICAgIG9yaWdfZGlyID0gY2xzLl9fdmFsaWRhdGVfcGF0aCgiLS1jaGFuZ2UtZGlyZWN0b3J5IiwgcGFydC5yb290ZnNfZGlyLCBjZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3JpZ19kaXIgPSBwYXJ0LnJvb3Rmc19kaXIKKyAgICAgICAgICAgIGNvcHloYXJkbGlua3RyZWUob3JpZ19kaXIsIG5ld19yb290ZnMpCiAKLSAgICAgICAgICAgIGZvciBvcmlnX3BhdGggaW4gcGFydC5leGNsdWRlX3BhdGg6CisgICAgICAgICAgICAjIENvbnZlcnQgdGhlIHBzZXVkbyBkaXJlY3RvcnkgdG8gaXRzIG5ldyBsb2NhdGlvbgorICAgICAgICAgICAgaWYgKHBzZXVkb19kaXIpOgorICAgICAgICAgICAgICAgIG5ld19wc2V1ZG8gPSBvcy5wYXRoLnJlYWxwYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgInBzZXVkbyVkIiAlIHBhcnQubGluZW5vKSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMobmV3X3BzZXVkbyk6CisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUobmV3X3BzZXVkbykKKyAgICAgICAgICAgICAgICBvcy5ta2RpcihuZXdfcHNldWRvKQorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5KG9zLnBhdGguam9pbihwc2V1ZG9fZGlyLCAiZmlsZXMuZGIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4obmV3X3BzZXVkbywgImZpbGVzLmRiIikpCisKKyAgICAgICAgICAgICAgICBwc2V1ZG9fY21kID0gIiVzIC1CIC1tICVzIC1NICVzIiAlIChjbHMuX19nZXRfcHNldWRvKG5hdGl2ZV9zeXNyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvb3RmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wc2V1ZG8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdfZGlyLCBuZXdfcm9vdGZzKQorICAgICAgICAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChwc2V1ZG9fY21kLCBuYXRpdmVfc3lzcm9vdCkKKworICAgICAgICAgICAgZm9yIGluX3BhdGggaW4gcGFydC5pbmNsdWRlX3BhdGggb3IgW106CisgICAgICAgICAgICAgICAgI3BhcnNlIGFyZ3VtZW50cworICAgICAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IGluX3BhdGhbMF0KKyAgICAgICAgICAgICAgICBpZiBsZW4oaW5fcGF0aCkgPiAyOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIidJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGluY2x1ZGUtcGF0aCIpCisgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICAgICAgaWYgbGVuKGluX3BhdGgpID09IDI6CisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBpbl9wYXRoWzFdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IE5vbmUKKworICAgICAgICAgICAgICAgICMgUGFjayBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbnRvIGEgdGFyIGZpbGUuCisgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNyZWF0ZSBhIHRhciBmaWxlLCBiZWNhdXNlIHRoYXQgd2F5IHdlIGNhbiBrZWVwIHRoZQorICAgICAgICAgICAgICAgICMgcGVybWlzc2lvbnMgZnJvbSB0aGUgZmlsZXMgZXZlbiB3aGVuIHRoZXkgYmVsb25nIHRvIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICMgcHNldWRvIGVudmlyb21lbnRzLgorICAgICAgICAgICAgICAgICMgSWYgd2Ugc2ltcGx5IGNvcHkgZmlsZXMgdXNpbmcgY29weWhhcmRsaW5rdHJlZS9jb3B5dHJlZS4uLiB0aGUKKyAgICAgICAgICAgICAgICAjIGNvcGllZCBmaWxlcyB3aWxsIGJlbG9uZyB0byB0aGUgdXNlciBydW5uaW5nIHdpYy4KKyAgICAgICAgICAgICAgICB0YXJfZmlsZSA9IG9zLnBhdGgucmVhbHBhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgImluY2x1ZGUtcGF0aCVkLnRhciIgJSBwYXJ0LmxpbmVubykpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoaW5jbHVkZV9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoaW5jbHVkZV9wYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgdGFyX2NtZCA9ICJ0YXIgYyAtLW93bmVyPXJvb3QgLS1ncm91cD1yb290IC1mICVzIC1DICVzICVzIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyX2ZpbGUsIHBhcmVudCwgb3MucGF0aC5yZWxwYXRoKGluY2x1ZGVfcGF0aCwgcGFyZW50KSkKKyAgICAgICAgICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKHRhcl9jbWQsIG5hdGl2ZV9zeXNyb290KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIGluY2x1ZGVfcGF0aCBpbiBrcm9vdGZzX2RpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IGtyb290ZnNfZGlyW2luY2x1ZGVfcGF0aF0KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0gY2xzLl9fZ2V0X3Jvb3Rmc19kaXIoaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3BzZXVkbyA9IG9zLnBhdGguam9pbihpbmNsdWRlX3BhdGgsICIuLi9wc2V1ZG8iKQorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMoaW5jbHVkZV9wc2V1ZG8pOgorICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvID0gY2xzLl9fZ2V0X3BzZXVkbyhuYXRpdmVfc3lzcm9vdCwgaW5jbHVkZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3BzZXVkbykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9jbWQgPSAidGFyIGNmICVzIC1DICVzIC4iICUgKHRhcl9maWxlLCBpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG8gPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJfY21kID0gInRhciBjIC0tb3duZXI9cm9vdCAtLWdyb3VwPXJvb3QgLWYgJXMgLUMgJXMgLiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9maWxlLCBpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZCh0YXJfY21kLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvKQorCisgICAgICAgICAgICAgICAgI2NyZWF0ZSBkZXN0aW5hdGlvbgorICAgICAgICAgICAgICAgIGlmIHBhdGg6CisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gY2xzLl9fdmFsaWRhdGVfcGF0aCgiLS1pbmNsdWRlLXBhdGgiLCBuZXdfcm9vdGZzLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBQYXRoKGRlc3RpbmF0aW9uKS5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBuZXdfcm9vdGZzCisKKyAgICAgICAgICAgICAgICAjZXh0cmFjdCBkZXN0aW5hdGlvbgorICAgICAgICAgICAgICAgIHVudGFyX2NtZCA9ICJ0YXIgeGYgJXMgLUMgJXMiICUgKHRhcl9maWxlLCBkZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICBpZiBuZXdfcHNldWRvOgorICAgICAgICAgICAgICAgICAgICBwc2V1ZG8gPSBjbHMuX19nZXRfcHNldWRvKG5hdGl2ZV9zeXNyb290LCBuZXdfcm9vdGZzLCBuZXdfcHNldWRvKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBzZXVkbyA9IE5vbmUKKyAgICAgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQodW50YXJfY21kLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvKQorICAgICAgICAgICAgICAgIG9zLnJlbW92ZSh0YXJfZmlsZSkKKworICAgICAgICAgICAgZm9yIG9yaWdfcGF0aCBpbiBwYXJ0LmV4Y2x1ZGVfcGF0aCBvciBbXToKICAgICAgICAgICAgICAgICBwYXRoID0gb3JpZ19wYXRoCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2FicyhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJNdXN0IGJlIHJlbGF0aXZlOiAtLWV4Y2x1ZGUtcGF0aD0lcyIgJSBvcmlnX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKLSAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihuZXdfcm9vdGZzLCBwYXRoKSkKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBjbHMuX192YWxpZGF0ZV9wYXRoKCItLWV4Y2x1ZGUtcGF0aCIsIG5ld19yb290ZnMsIHBhdGgpCiAKLSAgICAgICAgICAgICAgICAjIERpc2FsbG93IGNsaW1iaW5nIG91dHNpZGUgb2YgcGFyZW50IGRpcmVjdG9yeSB1c2luZyAnLi4nLAotICAgICAgICAgICAgICAgICMgYmVjYXVzZSBkb2luZyBzbyBjb3VsZCBiZSBxdWl0ZSBkaXNhc3Ryb3VzICh3ZSB3aWxsIGRlbGV0ZSB0aGUKLSAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSkuCi0gICAgICAgICAgICAgICAgaWYgbm90IGZ1bGxfcGF0aC5zdGFydHN3aXRoKG5ld19yb290ZnMpOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiclcycgcG9pbnRzIHRvIGEgcGF0aCBvdXRzaWRlIHRoZSByb290ZnMiICUgb3JpZ19wYXRoKQotICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmxleGlzdHMoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgIGlmIHBhdGguZW5kc3dpdGgob3Muc2VwKToKICAgICAgICAgICAgICAgICAgICAgIyBEZWxldGUgY29udGVudCBvbmx5LgpAQCAtMTA5LDQgKzIxMiw1IEBACiAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZnVsbF9wYXRoKQogCiAgICAgICAgIHBhcnQucHJlcGFyZV9yb290ZnMoY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvb3RmcyBvciBwYXJ0LnJvb3Rmc19kaXIsIG5hdGl2ZV9zeXNyb290KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb290ZnMgb3IgcGFydC5yb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fZGlyID0gbmV3X3BzZXVkbyBvciBwc2V1ZG9fZGlyKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0IGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CmluZGV4IDIxYmRlN2UuLmU3ODFmNGYgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydAorKysgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQKQEAgLTM3Miw3ICszNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0X29wdHM9Y2hhcnRfb3B0cykpCiAKIAotZGVmIGdldF9idWlsZHN0YXRzKHJlcG8sIG5vdGVzX3JlZiwgcmV2cywgb3V0ZGlyPU5vbmUpOgorZGVmIGdldF9idWlsZHN0YXRzKHJlcG8sIG5vdGVzX3JlZiwgbm90ZXNfcmVmMiwgcmV2cywgb3V0ZGlyPU5vbmUpOgogICAgICIiIkdldCB0aGUgYnVpbGRzdGF0cyBmcm9tIGdpdCBub3RlcyIiIgogICAgIGZ1bGxfcmVmID0gJ3JlZnMvbm90ZXMvJyArIG5vdGVzX3JlZgogICAgIGlmIG5vdCByZXBvLnJldl9wYXJzZShmdWxsX3JlZik6CkBAIC0zOTEsOCArMzkxLDEzIEBACiAgICAgICAgIGZvciB0YWcgaW4gcmV2LnRhZ3M6CiAgICAgICAgICAgICBsb2cuZGVidWcoJyAgICAlcycsIHRhZykKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBic19hbGwgPSBqc29uLmxvYWRzKHJlcG8ucnVuX2NtZChbJ25vdGVzJywgJy0tcmVmJywgbm90ZXNfcmVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdycsIHRhZyArICdeMCddKSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGJzX2FsbCA9IGpzb24ubG9hZHMocmVwby5ydW5fY21kKFsnbm90ZXMnLCAnLS1yZWYnLCBub3Rlc19yZWYsICdzaG93JywgdGFnICsgJ14wJ10pKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBHaXRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90ZXNfcmVmMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJzX2FsbCA9IGpzb24ubG9hZHMocmVwby5ydW5fY21kKFsnbm90ZXMnLCAnLS1yZWYnLCBub3Rlc19yZWYyLCAnc2hvdycsIHRhZyArICdeMCddKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQgR2l0RXJyb3I6CiAgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoIkJ1aWxkc3RhdHMgbm90IGZvdW5kIGZvciAlcyIsIHRhZykKICAgICAgICAgICAgICAgICBic19hbGwgPSB7fQpAQCAtNTg5LDkgKzU5NCwxMiBAQAogICAgIGJ1aWxkc3RhdHMgPSBOb25lCiAgICAgaWYgYXJncy5kdW1wX2J1aWxkc3RhdHMgb3IgYXJncy5odG1sOgogICAgICAgICBvdXRkaXIgPSAnb2UtYnVpbGQtcGVyZi1idWlsZHN0YXRzJyBpZiBhcmdzLmR1bXBfYnVpbGRzdGF0cyBlbHNlIE5vbmUKLSAgICAgICAgbm90ZXNfcmVmID0gJ2J1aWxkc3RhdHMve30ve30ve30nLmZvcm1hdChhcmdzLmhvc3RuYW1lLCBhcmdzLmJyYW5jaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLm1hY2hpbmUpCi0gICAgICAgIGJ1aWxkc3RhdHMgPSBnZXRfYnVpbGRzdGF0cyhyZXBvLCBub3Rlc19yZWYsIFtyZXZfbCwgcmV2X3JdLCBvdXRkaXIpCisgICAgICAgIG5vdGVzX3JlZiA9ICdidWlsZHN0YXRzL3t9L3t9L3t9Jy5mb3JtYXQoYXJncy5ob3N0bmFtZSwgYXJncy5icmFuY2gsIGFyZ3MubWFjaGluZSkKKyAgICAgICAgbm90ZXNfcmVmMiA9IE5vbmUKKyAgICAgICAgaWYgYXJncy5icmFuY2gyOgorICAgICAgICAgICAgbm90ZXNfcmVmID0gJ2J1aWxkc3RhdHMve30ve30ve30nLmZvcm1hdChhcmdzLmhvc3RuYW1lLCBhcmdzLmJyYW5jaDIsIGFyZ3MubWFjaGluZSkKKyAgICAgICAgICAgIG5vdGVzX3JlZjIgPSAnYnVpbGRzdGF0cy97fS97fS97fScuZm9ybWF0KGFyZ3MuaG9zdG5hbWUsIGFyZ3MuYnJhbmNoLCBhcmdzLm1hY2hpbmUpCisgICAgICAgIGJ1aWxkc3RhdHMgPSBnZXRfYnVpbGRzdGF0cyhyZXBvLCBub3Rlc19yZWYsIG5vdGVzX3JlZjIsIFtyZXZfbCwgcmV2X3JdLCBvdXRkaXIpCiAKICAgICAjIFByaW50IHJlcG9ydAogICAgIGlmIG5vdCBhcmdzLmh0bWw6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi10ZXN0IGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtdGVzdAppbmRleCAwYjEzZjI0Li4wMGUwMGI0IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi10ZXN0CisrKyBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXRlc3QKQEAgLTEsNCArMSw0IEBACi0jIS91c3IvYmluL3B5dGhvbjMKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMKICMgQnVpbGQgcGVyZm9ybWFuY2UgdGVzdCBzY3JpcHQKICMKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbCBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbAppbmRleCA5NmJiMGMzLi5iYTBhOWI0IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKKysrIGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsCkBAIC0yOSwyMiArMjksMTUgQEAKICAgICByZXR1cm4gMQogZmkKIAotcHlfdjI3X2NoZWNrPSQocHl0aG9uMiAtYyAnaW1wb3J0IHN5czsgcHJpbnQgc3lzLnZlcnNpb25faW5mbyA+PSAoMiw3LDMpJykKLWlmIFsgIiRweV92MjdfY2hlY2siICE9ICJUcnVlIiBdOyB0aGVuCi0gICAgZWNobyA+JjIgIk9wZW5FbWJlZGRlZCByZXF1aXJlcyAncHl0aG9uJyB0byBiZSBweXRob24gdjIgKD49IDIuNy4zKSwgbm90IHB5dGhvbiB2My4iCi0gICAgZWNobyA+JjIgIlBsZWFzZSB1cGdyYWRlIHlvdXIgcHl0aG9uIHYyLiIKLWZpCi11bnNldCBweV92MjdfY2hlY2sKLQogIyBXZSBwb3RlbnRpYWxseSBoYXZlIGNvZGUgdGhhdCBkb2Vzbid0IHBhcnNlIGNvcnJlY3RseSB3aXRoIG9sZGVyIHZlcnNpb25zIAogIyBvZiBQeXRob24sIGFuZCByYXRoZXIgdGhhbiBmaXhpbmcgdGhhdCBhbmQgYmVpbmcgZXRlcm5hbGx5IHZpZ2lsYW50IGZvciAKICMgYW55IG90aGVyIG5ldyBmZWF0dXJlIHVzZSwganVzdCBjaGVjayB0aGUgdmVyc2lvbiBoZXJlLgotcHlfdjM0X2NoZWNrPSQocHl0aG9uMyAtYyAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLnZlcnNpb25faW5mbyA+PSAoMyw0LDApKScpCi1pZiBbICIkcHlfdjM0X2NoZWNrIiAhPSAiVHJ1ZSIgXTsgdGhlbgotICAgIGVjaG8gPiYyICJCaXRCYWtlIHJlcXVpcmVzIFB5dGhvbiAzLjQuMCBvciBsYXRlciBhcyAncHl0aG9uMyciCitweV92MzVfY2hlY2s9JChweXRob24zIC1jICdpbXBvcnQgc3lzOyBwcmludChzeXMudmVyc2lvbl9pbmZvID49ICgzLDUsMCkpJykKK2lmIFsgIiRweV92MzVfY2hlY2siICE9ICJUcnVlIiBdOyB0aGVuCisgICAgZWNobyA+JjIgIkJpdEJha2UgcmVxdWlyZXMgUHl0aG9uIDMuNS4wIG9yIGxhdGVyIGFzICdweXRob24zIChzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scyBjYW4gYmUgdXNlZCBpZiBuZWVkZWQpJyIKICAgICByZXR1cm4gMQogZmkKLXVuc2V0IHB5X3YzNF9jaGVjawordW5zZXQgcHlfdjM1X2NoZWNrCiAKIGlmIFsgLXogIiRCRElSIiBdOyB0aGVuCiAgICAgaWYgWyAteiAiJDEiIF07IHRoZW4KQEAgLTExMyw3ICsxMDYsOCBAQAogSFRUUFNfUFJPWFkgaHR0cHNfcHJveHkgRlRQX1BST1hZIGZ0cF9wcm94eSBGVFBTX1BST1hZIGZ0cHNfcHJveHkgQUxMX1BST1hZIFwKIGFsbF9wcm94eSBOT19QUk9YWSBub19wcm94eSBTU0hfQUdFTlRfUElEIFNTSF9BVVRIX1NPQ0sgQkJfU1JDUkVWX1BPTElDWSBcCiBTREtNQUNISU5FIEJCX05VTUJFUl9USFJFQURTIEJCX05PX05FVFdPUksgUEFSQUxMRUxfTUFLRSBHSVRfUFJPWFlfQ09NTUFORCBcCi1TT0NLUzVfUEFTU1dEIFNPQ0tTNV9VU0VSIFNDUkVFTkRJUiBTVEFNUFNfRElSIEJCUEFUSF9FWFRSQSBCQl9TRVRTQ0VORV9FTkZPUkNFIgorU09DS1M1X1BBU1NXRCBTT0NLUzVfVVNFUiBTQ1JFRU5ESVIgU1RBTVBTX0RJUiBCQlBBVEhfRVhUUkEgQkJfU0VUU0NFTkVfRU5GT1JDRSBcCitCQl9MT0dDT05GSUciCiAKIEJCX0VOVl9FWFRSQVdISVRFPSIkKGVjaG8gJEJCX0VOVl9FWFRSQVdISVRFICRCQl9FTlZfRVhUUkFXSElURV9PRSB8IHRyICcgJyAnXG4nIHwgTENfQUxMPUMgc29ydCAtLXVuaXF1ZSB8IHRyICdcbicgJyAnKSIKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3NlciBiL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLWJyb3dzZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGQyMjMxOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLWJyb3dzZXIKQEAgLTAsMCArMSwyNTMgQEAKKyMhIC91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBvcywgc3lzLCBlbnVtLCBhc3QKKworc2NyaXB0c19wYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQorbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKK3N5cy5wYXRoID0gc3lzLnBhdGggKyBbbGliX3BhdGhdCisKK2ltcG9ydCBzY3JpcHRwYXRoCitiaXRiYWtlcGF0aCA9IHNjcmlwdHBhdGguYWRkX2JpdGJha2VfbGliX3BhdGgoKQoraWYgbm90IGJpdGJha2VwYXRoOgorICAgIHByaW50KCJVbmFibGUgdG8gZmluZCBiaXRiYWtlIGJ5IHNlYXJjaGluZyBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoaXMgc2NyaXB0IG9yIFBBVEgiKQorICAgIHN5cy5leGl0KDEpCitpbXBvcnQgYmIKKworaW1wb3J0IGdpCitnaS5yZXF1aXJlX3ZlcnNpb24oJ0d0aycsICczLjAnKQorZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHdGssIEdkaywgR09iamVjdAorCitSZWNpcGVDb2x1bW5zID0gZW51bS5JbnRFbnVtKCJSZWNpcGVDb2x1bW5zIiwgeyJSZWNpcGUiOiAwfSkKK1BhY2thZ2VDb2x1bW5zID0gZW51bS5JbnRFbnVtKCJQYWNrYWdlQ29sdW1ucyIsIHsiUGFja2FnZSI6IDAsICJTaXplIjogMX0pCitGaWxlQ29sdW1ucyA9IGVudW0uSW50RW51bSgiRmlsZUNvbHVtbnMiLCB7IkZpbGVuYW1lIjogMCwgIlNpemUiOiAxfSkKKworaW1wb3J0IHRpbWUKK2RlZiB0aW1laXQoZik6CisgICAgZGVmIHRpbWVkKCphcmdzLCAqKmt3KToKKyAgICAgICAgdHMgPSB0aW1lLnRpbWUoKQorICAgICAgICBwcmludCAoImZ1bmM6JXIgY2FsbGluZyIgJSBmLl9fbmFtZV9fKQorICAgICAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQorICAgICAgICB0ZSA9IHRpbWUudGltZSgpCisgICAgICAgIHByaW50ICgnZnVuYzolciBhcmdzOlslciwgJXJdIHRvb2s6ICUyLjRmIHNlYycgJSBcCisgICAgICAgICAgKGYuX19uYW1lX18sIGFyZ3MsIGt3LCB0ZS10cykpCisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICByZXR1cm4gdGltZWQKKworZGVmIGh1bWFuX3NpemUobmJ5dGVzKToKKyAgICBpbXBvcnQgbWF0aAorICAgIHN1ZmZpeGVzID0gWydCJywgJ2tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJ10KKyAgICBodW1hbiA9IG5ieXRlcworICAgIHJhbmsgPSAwCisgICAgaWYgbmJ5dGVzICE9IDA6CisgICAgICAgIHJhbmsgPSBpbnQoKG1hdGgubG9nMTAobmJ5dGVzKSkgLyAzKQorICAgICAgICByYW5rID0gbWluKHJhbmssIGxlbihzdWZmaXhlcykgLSAxKQorICAgICAgICBodW1hbiA9IG5ieXRlcyAvICgxMDAwLjAgKiogcmFuaykKKyAgICBmID0gKCclLjJmJyAlIGh1bWFuKS5yc3RyaXAoJzAnKS5yc3RyaXAoJy4nKQorICAgIHJldHVybiAnJXMgJXMnICUgKGYsIHN1ZmZpeGVzW3JhbmtdKQorCitkZWYgbG9hZChmaWxlbmFtZSwgc3VmZml4PU5vbmUpOgorICAgIGZyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKKyAgICBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4KKworICAgIHBhcnNlciA9IENvbmZpZ1BhcnNlcigpCisgICAgaWYgc3VmZml4OgorICAgICAgICBwYXJzZXIub3B0aW9ueGZvcm0gPSBsYW1iZGEgb3B0aW9uOiBvcHRpb24ucmVwbGFjZSgiXyIgKyBzdWZmaXgsICIiKQorICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbGluZXM6CisgICAgICAgIGxpbmVzID0gY2hhaW4oKCJbZmFrZV0iLCksIGxpbmVzKQorICAgICAgICBwYXJzZXIucmVhZF9maWxlKGxpbmVzKQorCisgICAgIyBUT0RPIGV4dHJhY3QgdGhlIGRhdGEgYW5kIHB1dCBpdCBpbnRvIGEgcmVhbCBkaWN0IHNvIHdlIGNhbiB0cmFuc2Zvcm0gc29tZQorICAgICMgdmFsdWVzIHRvIGludHM/CisgICAgcmV0dXJuIHBhcnNlclsiZmFrZSJdCisKK2RlZiBmaW5kX3BrZ2RhdGEoKToKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgiYml0YmFrZSIsICItZSIpLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBLR0RBVEFfRElSPSIpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmUuc3BsaXQoIj0iLCAxKVsxXS5zdHJpcCgiXCdcIiIpCisgICAgIyBUT0RPIGV4Y2VwdGlvbiBvciBzb21ldGhpbmcKKyAgICByZXR1cm4gTm9uZQorCitkZWYgcGFja2FnZXNfaW5fcmVjaXBlKHBrZ2RhdGEsIHJlY2lwZSk6CisgICAgIiIiCisgICAgTG9hZCB0aGUgcmVjaXBlIHBrZ2RhdGEgdG8gZGV0ZXJtaW5lIHRoZSBsaXN0IG9mIHJ1bnRpbWUgcGFja2FnZXMuCisgICAgIiIiCisgICAgZGF0YSA9IGxvYWQob3MucGF0aC5qb2luKHBrZ2RhdGEsIHJlY2lwZSkpCisgICAgcGFja2FnZXMgPSBkYXRhWyJQQUNLQUdFUyJdLnNwbGl0KCkKKyAgICByZXR1cm4gcGFja2FnZXMKKworZGVmIGxvYWRfcnVudGltZV9wYWNrYWdlKHBrZ2RhdGEsIHBhY2thZ2UpOgorICAgIHJldHVybiBsb2FkKG9zLnBhdGguam9pbihwa2dkYXRhLCAicnVudGltZSIsIHBhY2thZ2UpLCBzdWZmaXg9cGFja2FnZSkKKworZGVmIHJlY2lwZV9mcm9tX3BhY2thZ2UocGtnZGF0YSwgcGFja2FnZSk6CisgICAgZGF0YSA9IGxvYWQob3MucGF0aC5qb2luKHBrZ2RhdGEsICJydW50aW1lIiwgcGFja2FnZSksIHN1ZmZpeD1wYWNrYWdlKQorICAgIHJldHVybiBkYXRhWyJQTiJdCisKK2RlZiBzdW1tYXJ5KGRhdGEpOgorICAgIHMgPSAiIgorICAgIHMgKz0gInswW1BLR119IHswW1BLR1ZdfS17MFtQS0dSXX1cbnswW0xJQ0VOU0VdfVxuezBbU1VNTUFSWV19XG4iLmZvcm1hdChkYXRhKQorCisgICAgcmV0dXJuIHMKKworCitjbGFzcyBQa2dVaSgpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwa2dkYXRhKToKKyAgICAgICAgc2VsZi5wa2dkYXRhID0gcGtnZGF0YQorICAgICAgICBzZWxmLmN1cnJlbnRfcmVjaXBlID0gTm9uZQorICAgICAgICBzZWxmLnJlY2lwZV9pdGVycyA9IHt9CisgICAgICAgIHNlbGYucGFja2FnZV9pdGVycyA9IHt9CisKKyAgICAgICAgYnVpbGRlciA9IEd0ay5CdWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5hZGRfZnJvbV9maWxlKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAib2UtcGtnZGF0YS1icm93c2VyLmdsYWRlIikpCisKKyAgICAgICAgc2VsZi53aW5kb3cgPSBidWlsZGVyLmdldF9vYmplY3QoIndpbmRvdyIpCisgICAgICAgIHNlbGYud2luZG93LmNvbm5lY3QoImRlbGV0ZS1ldmVudCIsIEd0ay5tYWluX3F1aXQpCisKKyAgICAgICAgc2VsZi5yZWNpcGVfc3RvcmUgPSBidWlsZGVyLmdldF9vYmplY3QoInJlY2lwZV9zdG9yZSIpCisgICAgICAgIHNlbGYucmVjaXBlX3ZpZXcgPSBidWlsZGVyLmdldF9vYmplY3QoInJlY2lwZV92aWV3IikKKyAgICAgICAgc2VsZi5wYWNrYWdlX3N0b3JlID0gYnVpbGRlci5nZXRfb2JqZWN0KCJwYWNrYWdlX3N0b3JlIikKKyAgICAgICAgc2VsZi5wYWNrYWdlX3ZpZXcgPSBidWlsZGVyLmdldF9vYmplY3QoInBhY2thZ2VfdmlldyIpCisKKyAgICAgICAgIyBTb21laG93IHJlc2l6YWJsZSBkb2VzIG5vdCBnZXQgc2V0IHZpYSBidWlsZGVyIHhtbAorICAgICAgICBwYWNrYWdlX25hbWVfY29sdW1uID0gYnVpbGRlci5nZXRfb2JqZWN0KCJwYWNrYWdlX25hbWVfY29sdW1uIikKKyAgICAgICAgcGFja2FnZV9uYW1lX2NvbHVtbi5zZXRfcmVzaXphYmxlKFRydWUpCisgICAgICAgIGZpbGVfbmFtZV9jb2x1bW4gPSBidWlsZGVyLmdldF9vYmplY3QoImZpbGVfbmFtZV9jb2x1bW4iKQorICAgICAgICBmaWxlX25hbWVfY29sdW1uLnNldF9yZXNpemFibGUoVHJ1ZSkKKworICAgICAgICBzZWxmLnJlY2lwZV92aWV3LmdldF9zZWxlY3Rpb24oKS5jb25uZWN0KCJjaGFuZ2VkIiwgc2VsZi5vbl9yZWNpcGVfY2hhbmdlZCkKKyAgICAgICAgc2VsZi5wYWNrYWdlX3ZpZXcuZ2V0X3NlbGVjdGlvbigpLmNvbm5lY3QoImNoYW5nZWQiLCBzZWxmLm9uX3BhY2thZ2VfY2hhbmdlZCkKKworICAgICAgICBzZWxmLnBhY2thZ2Vfc3RvcmUuc2V0X3NvcnRfY29sdW1uX2lkKFBhY2thZ2VDb2x1bW5zLlBhY2thZ2UsIEd0ay5Tb3J0VHlwZS5BU0NFTkRJTkcpCisgICAgICAgIGJ1aWxkZXIuZ2V0X29iamVjdCgicGFja2FnZV9zaXplX2NvbHVtbiIpLnNldF9jZWxsX2RhdGFfZnVuYyhidWlsZGVyLmdldF9vYmplY3QoInBhY2thZ2Vfc2l6ZV9jZWxsIiksIGxhbWJkYSBjb2x1bW4sIGNlbGwsIG1vZGVsLCBpdGVyLCBkYXRhOiBjZWxsLnNldF9wcm9wZXJ0eSgidGV4dCIsIGh1bWFuX3NpemUobW9kZWxbaXRlcl1bUGFja2FnZUNvbHVtbnMuU2l6ZV0pKSkKKworICAgICAgICBzZWxmLmxhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJsYWJlbDEiKQorICAgICAgICBzZWxmLmRlcGVuZHNfbGFiZWwgPSBidWlsZGVyLmdldF9vYmplY3QoImRlcGVuZHNfbGFiZWwiKQorICAgICAgICBzZWxmLnJlY29tbWVuZHNfbGFiZWwgPSBidWlsZGVyLmdldF9vYmplY3QoInJlY29tbWVuZHNfbGFiZWwiKQorICAgICAgICBzZWxmLnN1Z2dlc3RzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJzdWdnZXN0c19sYWJlbCIpCisgICAgICAgIHNlbGYucHJvdmlkZXNfbGFiZWwgPSBidWlsZGVyLmdldF9vYmplY3QoInByb3ZpZGVzX2xhYmVsIikKKworICAgICAgICBzZWxmLmRlcGVuZHNfbGFiZWwuY29ubmVjdCgiYWN0aXZhdGUtbGluayIsIHNlbGYub25fbGlua19hY3RpdmF0ZSkKKyAgICAgICAgc2VsZi5yZWNvbW1lbmRzX2xhYmVsLmNvbm5lY3QoImFjdGl2YXRlLWxpbmsiLCBzZWxmLm9uX2xpbmtfYWN0aXZhdGUpCisgICAgICAgIHNlbGYuc3VnZ2VzdHNfbGFiZWwuY29ubmVjdCgiYWN0aXZhdGUtbGluayIsIHNlbGYub25fbGlua19hY3RpdmF0ZSkKKworICAgICAgICBzZWxmLmZpbGVfc3RvcmUgPSBidWlsZGVyLmdldF9vYmplY3QoImZpbGVfc3RvcmUiKQorICAgICAgICBzZWxmLmZpbGVfc3RvcmUuc2V0X3NvcnRfY29sdW1uX2lkKEZpbGVDb2x1bW5zLkZpbGVuYW1lLCBHdGsuU29ydFR5cGUuQVNDRU5ESU5HKQorICAgICAgICBidWlsZGVyLmdldF9vYmplY3QoImZpbGVfc2l6ZV9jb2x1bW4iKS5zZXRfY2VsbF9kYXRhX2Z1bmMoYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlX3NpemVfY2VsbCIpLCBsYW1iZGEgY29sdW1uLCBjZWxsLCBtb2RlbCwgaXRlciwgZGF0YTogY2VsbC5zZXRfcHJvcGVydHkoInRleHQiLCBodW1hbl9zaXplKG1vZGVsW2l0ZXJdW0ZpbGVDb2x1bW5zLlNpemVdKSkpCisKKyAgICAgICAgc2VsZi5maWxlc192aWV3ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlc19zY3JvbGx2aWV3IikKKyAgICAgICAgc2VsZi5maWxlc19sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZXNfbGFiZWwiKQorCisgICAgICAgIHNlbGYubG9hZF9yZWNpcGVzKCkKKworICAgICAgICBzZWxmLnJlY2lwZV92aWV3LnNldF9jdXJzb3IoR3RrLlRyZWVQYXRoLm5ld19maXJzdCgpKQorCisgICAgICAgIHNlbGYud2luZG93LnNob3coKQorCisgICAgZGVmIG9uX2xpbmtfYWN0aXZhdGUoc2VsZiwgbGFiZWwsIHVybF9zdHJpbmcpOgorICAgICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKKyAgICAgICAgdXJsID0gdXJscGFyc2UodXJsX3N0cmluZykKKyAgICAgICAgaWYgdXJsLnNjaGVtZSA9PSAicGFja2FnZSI6CisgICAgICAgICAgICBwYWNrYWdlID0gdXJsLnBhdGgKKyAgICAgICAgICAgIHJlY2lwZSA9IHJlY2lwZV9mcm9tX3BhY2thZ2Uoc2VsZi5wa2dkYXRhLCBwYWNrYWdlKQorCisgICAgICAgICAgICBpdCA9IHNlbGYucmVjaXBlX2l0ZXJzW3JlY2lwZV0KKyAgICAgICAgICAgIHBhdGggPSBzZWxmLnJlY2lwZV9zdG9yZS5nZXRfcGF0aChpdCkKKyAgICAgICAgICAgIHNlbGYucmVjaXBlX3ZpZXcuc2V0X2N1cnNvcihwYXRoKQorICAgICAgICAgICAgc2VsZi5yZWNpcGVfdmlldy5zY3JvbGxfdG9fY2VsbChwYXRoKQorCisgICAgICAgICAgICBzZWxmLm9uX3JlY2lwZV9jaGFuZ2VkKHNlbGYucmVjaXBlX3ZpZXcuZ2V0X3NlbGVjdGlvbigpKQorCisgICAgICAgICAgICBpdCA9IHNlbGYucGFja2FnZV9pdGVyc1twYWNrYWdlXQorICAgICAgICAgICAgcGF0aCA9IHNlbGYucGFja2FnZV9zdG9yZS5nZXRfcGF0aChpdCkKKyAgICAgICAgICAgIHNlbGYucGFja2FnZV92aWV3LnNldF9jdXJzb3IocGF0aCkKKyAgICAgICAgICAgIHNlbGYucGFja2FnZV92aWV3LnNjcm9sbF90b19jZWxsKHBhdGgpCisKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBvbl9yZWNpcGVfY2hhbmdlZChzZWxmLCBzZWxlY3Rpb24pOgorICAgICAgICBzZWxmLnBhY2thZ2Vfc3RvcmUuY2xlYXIoKQorICAgICAgICBzZWxmLnBhY2thZ2VfaXRlcnMgPSB7fQorCisgICAgICAgIChtb2RlbCwgaXQpID0gc2VsZWN0aW9uLmdldF9zZWxlY3RlZCgpCisgICAgICAgIGlmIG5vdCBpdDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHJlY2lwZSA9IG1vZGVsW2l0XVtSZWNpcGVDb2x1bW5zLlJlY2lwZV0KKyAgICAgICAgcGFja2FnZXMgPSBwYWNrYWdlc19pbl9yZWNpcGUoc2VsZi5wa2dkYXRhLCByZWNpcGUpCisgICAgICAgIGZvciBwYWNrYWdlIGluIHBhY2thZ2VzOgorICAgICAgICAgICAgIyBUT0RPIGFsc28gc2hvdyBQS0cgYWZ0ZXIgZGViaWFuLXJlbmFtaW5nPworICAgICAgICAgICAgZGF0YSA9IGxvYWRfcnVudGltZV9wYWNrYWdlKHNlbGYucGtnZGF0YSwgcGFja2FnZSkKKyAgICAgICAgICAgICMgVE9ETyBzdGFzaCBkYXRhIHRvIGF2b2lkIHJlYWRpbmcgaW4gb25fcGFja2FnZV9jaGFuZ2VkCisgICAgICAgICAgICBzZWxmLnBhY2thZ2VfaXRlcnNbcGFja2FnZV0gPSBzZWxmLnBhY2thZ2Vfc3RvcmUuYXBwZW5kKFtwYWNrYWdlLCBpbnQoZGF0YVsiUEtHU0laRSJdKV0pCisKKyAgICAgICAgcGFja2FnZSA9IHJlY2lwZSBpZiByZWNpcGUgaW4gcGFja2FnZXMgZWxzZSBzb3J0ZWQocGFja2FnZXMpWzBdCisgICAgICAgIHBhdGggPSBzZWxmLnBhY2thZ2Vfc3RvcmUuZ2V0X3BhdGgoc2VsZi5wYWNrYWdlX2l0ZXJzW3BhY2thZ2VdKQorICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5zZXRfY3Vyc29yKHBhdGgpCisgICAgICAgIHNlbGYucGFja2FnZV92aWV3LnNjcm9sbF90b19jZWxsKHBhdGgpCisKKyAgICBkZWYgb25fcGFja2FnZV9jaGFuZ2VkKHNlbGYsIHNlbGVjdGlvbik6CisgICAgICAgIHNlbGYubGFiZWwuc2V0X3RleHQoIiIpCisgICAgICAgIHNlbGYuZmlsZV9zdG9yZS5jbGVhcigpCisgICAgICAgIHNlbGYuZGVwZW5kc19sYWJlbC5oaWRlKCkKKyAgICAgICAgc2VsZi5yZWNvbW1lbmRzX2xhYmVsLmhpZGUoKQorICAgICAgICBzZWxmLnN1Z2dlc3RzX2xhYmVsLmhpZGUoKQorICAgICAgICBzZWxmLnByb3ZpZGVzX2xhYmVsLmhpZGUoKQorICAgICAgICBzZWxmLmZpbGVzX3ZpZXcuaGlkZSgpCisgICAgICAgIHNlbGYuZmlsZXNfbGFiZWwuaGlkZSgpCisKKyAgICAgICAgKG1vZGVsLCBpdCkgPSBzZWxlY3Rpb24uZ2V0X3NlbGVjdGVkKCkKKyAgICAgICAgaWYgaXQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHBhY2thZ2UgPSBtb2RlbFtpdF1bUGFja2FnZUNvbHVtbnMuUGFja2FnZV0KKyAgICAgICAgZGF0YSA9IGxvYWRfcnVudGltZV9wYWNrYWdlKHNlbGYucGtnZGF0YSwgcGFja2FnZSkKKworICAgICAgICBzZWxmLmxhYmVsLnNldF90ZXh0KHN1bW1hcnkoZGF0YSkpCisKKyAgICAgICAgZmlsZXMgPSBhc3QubGl0ZXJhbF9ldmFsKGRhdGFbIkZJTEVTX0lORk8iXSkKKyAgICAgICAgaWYgZmlsZXM6CisgICAgICAgICAgICBzZWxmLmZpbGVzX2xhYmVsLnNldF90ZXh0KCJ7MH0gZmlsZXMgdGFrZSB7MX0uIi5mb3JtYXQobGVuKGZpbGVzKSwgaHVtYW5fc2l6ZShpbnQoZGF0YVsiUEtHU0laRSJdKSkpKQorICAgICAgICAgICAgc2VsZi5maWxlc192aWV3LnNob3coKQorICAgICAgICAgICAgZm9yIGZpbGVuYW1lLCBzaXplIGluIGZpbGVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5maWxlX3N0b3JlLmFwcGVuZChbZmlsZW5hbWUsIHNpemVdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5maWxlc192aWV3LmhpZGUoKQorICAgICAgICAgICAgc2VsZi5maWxlc19sYWJlbC5zZXRfdGV4dCgiVGhpcyBwYWNrYWdlIGhhcyBubyBmaWxlcy4iKQorICAgICAgICBzZWxmLmZpbGVzX2xhYmVsLnNob3coKQorCisgICAgICAgIGRlZiB1cGRhdGVfZGVwcyhmaWVsZCwgcHJlZml4LCBsYWJlbCwgY2xpY2thYmxlPVRydWUpOgorICAgICAgICAgICAgaWYgZmllbGQgaW4gZGF0YToKKyAgICAgICAgICAgICAgICBsID0gW10KKyAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmVyc2lvbiBpbiBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIoZGF0YVtmaWVsZF0pLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgIGlmIGNsaWNrYWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKCI8YSBocmVmPSdwYWNrYWdlOnswfSc+ezB9PC9hPiB7MX0iLmZvcm1hdChuYW1lLCAiICIuam9pbih2ZXJzaW9uKSkuc3RyaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKCJ7MH0gezF9Ii5mb3JtYXQobmFtZSwgIiAiLmpvaW4odmVyc2lvbikpLnN0cmlwKCkpCisgICAgICAgICAgICAgICAgbGFiZWwuc2V0X21hcmt1cChwcmVmaXggKyAiLCAiLmpvaW4obCkpCisgICAgICAgICAgICAgICAgbGFiZWwuc2hvdygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxhYmVsLmhpZGUoKQorICAgICAgICB1cGRhdGVfZGVwcygiUkRFUEVORFMiLCAiRGVwZW5kczogIiwgc2VsZi5kZXBlbmRzX2xhYmVsKQorICAgICAgICB1cGRhdGVfZGVwcygiUlJFQ09NTUVORFMiLCAiUmVjb21tZW5kczogIiwgc2VsZi5yZWNvbW1lbmRzX2xhYmVsKQorICAgICAgICB1cGRhdGVfZGVwcygiUlNVR0dFU1RTIiwgIlN1Z2dlc3RzOiAiLCBzZWxmLnN1Z2dlc3RzX2xhYmVsKQorICAgICAgICB1cGRhdGVfZGVwcygiUlBST1ZJREVTIiwgIlByb3ZpZGVzOiAiLCBzZWxmLnByb3ZpZGVzX2xhYmVsLCBjbGlja2FibGU9RmFsc2UpCisKKyAgICBkZWYgbG9hZF9yZWNpcGVzKHNlbGYpOgorICAgICAgICBmb3IgcmVjaXBlIGluIHNvcnRlZChvcy5saXN0ZGlyKHBrZ2RhdGEpKToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihwa2dkYXRhLCByZWNpcGUpKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlY2lwZV9pdGVyc1tyZWNpcGVdID0gc2VsZi5yZWNpcGVfc3RvcmUuYXBwZW5kKFtyZWNpcGVdKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J3BrZ2RhdGEgYnJvd3NlcicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXAnLCAnLS1wa2dkYXRhJywgaGVscD0iT3B0aW9uYWwgbG9jYXRpb24gb2YgcGtnZGF0YSIpCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIHBrZ2RhdGEgPSBhcmdzLnBrZ2RhdGEgaWYgYXJncy5wa2dkYXRhIGVsc2UgZmluZF9wa2dkYXRhKCkKKyAgICAjIFRPRE8gYXNzZXJ0IHBrZ2RhdGEgaXMgYSBkaXJlY3RvcnkKKyAgICB3aW5kb3cgPSBQa2dVaShwa2dkYXRhKQorICAgIEd0ay5tYWluKCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLWJyb3dzZXIuZ2xhZGUgYi9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyLmdsYWRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMDZjODIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyLmdsYWRlCkBAIC0wLDAgKzEsMzM3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSBHZW5lcmF0ZWQgd2l0aCBnbGFkZSAzLjE4LjMgLS0+Cis8aW50ZXJmYWNlPgorICA8cmVxdWlyZXMgbGliPSJndGsrIiB2ZXJzaW9uPSIzLjEyIi8+CisgIDxvYmplY3QgY2xhc3M9Ikd0a0xpc3RTdG9yZSIgaWQ9ImZpbGVfc3RvcmUiPgorICAgIDxjb2x1bW5zPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBGaWxlbmFtZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBTaXplIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnbG9uZyIvPgorICAgIDwvY29sdW1ucz4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgY2xhc3M9Ikd0a0xpc3RTdG9yZSIgaWQ9InBhY2thZ2Vfc3RvcmUiPgorICAgIDxjb2x1bW5zPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBQYWNrYWdlIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnY2hhcmFycmF5Ii8+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIFNpemUgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9Imdsb25nIi8+CisgICAgPC9jb2x1bW5zPgorICA8L29iamVjdD4KKyAgPG9iamVjdCBjbGFzcz0iR3RrTGlzdFN0b3JlIiBpZD0icGtnZGF0YV9zdG9yZSI+CisgICAgPGNvbHVtbnM+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIE5hbWUgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgUGF0aCAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgorICAgIDwvY29sdW1ucz4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgY2xhc3M9Ikd0a0xpc3RTdG9yZSIgaWQ9InJlY2lwZV9zdG9yZSI+CisgICAgPGNvbHVtbnM+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIFJlY2lwZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgorICAgIDwvY29sdW1ucz4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgY2xhc3M9Ikd0a1dpbmRvdyIgaWQ9IndpbmRvdyI+CisgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlBhY2thZ2UgRGF0YSBCcm93c2VyPC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGVmYXVsdF93aWR0aCI+MTIwMDwvcHJvcGVydHk+CisgICAgPHByb3BlcnR5IG5hbWU9ImRlZmF1bHRfaGVpZ2h0Ij45MDA8L3Byb3BlcnR5PgorICAgIDxwcm9wZXJ0eSBuYW1lPSJpY29uX25hbWUiPmFjY2Vzc29yaWVzLWRpY3Rpb25hcnk8L3Byb3BlcnR5PgorICAgIDxwcm9wZXJ0eSBuYW1lPSJoYXNfcmVzaXplX2dyaXAiPlRydWU8L3Byb3BlcnR5PgorICAgIDxjaGlsZD4KKyAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0JveCIgaWQ9ImJveDEiPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1hcmdpbl9sZWZ0Ij40PC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1hcmdpbl9yaWdodCI+NDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fdG9wIj40PC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1hcmdpbl9ib3R0b20iPjQ8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ib3JpZW50YXRpb24iPnZlcnRpY2FsPC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjQ8L3Byb3BlcnR5PgorICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ29tYm9Cb3giIGlkPSJwa2dkYXRhX2NvbWJvIj4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtb2RlbCI+cGtnZGF0YV9zdG9yZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaWRfY29sdW1uIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9ImNlbGxyZW5kZXJlcnRleHQ1Ii8+CisgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCI+MDwvYXR0cmlidXRlPgorICAgICAgICAgICAgICA8L2F0dHJpYnV0ZXM+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgIDwvY2hpbGQ+CisgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtQYW5lZCIgaWQ9InBhbmVkMSI+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+NDAwPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbl9zZXQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtTY3JvbGxlZFdpbmRvdyIgaWQ9InNjcm9sbGVkd2luZG93MSI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3dfdHlwZSI+aW48L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtaW5fY29udGVudF93aWR0aCI+MTAwPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlldyIgaWQ9InJlY2lwZV92aWV3Ij4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGVsIj5yZWNpcGVfc3RvcmU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VhcmNoX2NvbHVtbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaXhlZF9oZWlnaHRfbW9kZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaG93X2V4cGFuZGVycyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQgaW50ZXJuYWwtY2hpbGQ9InNlbGVjdGlvbiI+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVNlbGVjdGlvbiIgaWQ9InRyZWV2aWV3LXNlbGVjdGlvbjEiLz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3Q29sdW1uIiBpZD0idHJlZXZpZXdjb2x1bW4xIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXppbmciPmZpeGVkPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlJlY2lwZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJjZWxscmVuZGVyZXJ0ZXh0MSIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiPjA8L2F0dHJpYnV0ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVzaXplIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1BhbmVkIiBpZD0icGFuZWQyIj4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj40MDA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbl9zZXQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1Njcm9sbGVkV2luZG93IiBpZD0ic2Nyb2xsZWR3aW5kb3cyIj4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNoYWRvd190eXBlIj5pbjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtaW5fY29udGVudF93aWR0aCI+MTAwPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3IiBpZD0icGFja2FnZV92aWV3Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGVsIj5wYWNrYWdlX3N0b3JlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZWFyY2hfY29sdW1uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaG93X2V4cGFuZGVycyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkIGludGVybmFsLWNoaWxkPSJzZWxlY3Rpb24iPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlU2VsZWN0aW9uIiBpZD0idHJlZXZpZXctc2VsZWN0aW9uMiIvPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXdDb2x1bW4iIGlkPSJwYWNrYWdlX25hbWVfY29sdW1uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVzaXphYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6aW5nIj5hdXRvc2l6ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhdGFibGU9InllcyI+UGFja2FnZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfY29sdW1uX2lkIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0iY2VsbHJlbmRlcmVydGV4dDIiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiPjA8L2F0dHJpYnV0ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3Q29sdW1uIiBpZD0icGFja2FnZV9zaXplX2NvbHVtbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6YWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemluZyI+YXV0b3NpemU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlNpemU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0X2NvbHVtbl9pZCI+MTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9InBhY2thZ2Vfc2l6ZV9jZWxsIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6ZSI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hyaW5rIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0JveCIgaWQ9ImJveDIiPgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1hcmdpbl9sZWZ0Ij40PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj52ZXJ0aWNhbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzcGFjaW5nIj40PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ibGFiZWwxIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+bGFiZWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9ImRlcGVuZHNfbGFiZWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5kZXBlbmRzX2xhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ3cmFwIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0cmFja192aXNpdGVkX2xpbmtzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0icmVjb21tZW5kc19sYWJlbCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPnJlY3NfbGFiZWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRyYWNrX3Zpc2l0ZWRfbGlua3MiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJzdWdnZXN0c19sYWJlbCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPnN1Z2dlc3RzX2xhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ3cmFwIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0cmFja192aXNpdGVkX2xpbmtzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjM8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0icHJvdmlkZXNfbGFiZWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5wcm92aWRlc19sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idHJhY2tfdmlzaXRlZF9saW5rcyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj40PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9ImZpbGVzX2xhYmVsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+ZmlsZXNfbGFiZWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVsbGlwc2l6ZSI+ZW5kPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+NTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrU2Nyb2xsZWRXaW5kb3ciIGlkPSJmaWxlc19zY3JvbGx2aWV3Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNoYWRvd190eXBlIj5pbjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3IiBpZD0iZmlsZXNfdmlldyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtb2RlbCI+ZmlsZV9zdG9yZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJ1bGVzX2hpbnQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZWFyY2hfY29sdW1uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hvd19leHBhbmRlcnMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQgaW50ZXJuYWwtY2hpbGQ9InNlbGVjdGlvbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlU2VsZWN0aW9uIiBpZD0idHJlZXZpZXctc2VsZWN0aW9uMyIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXdDb2x1bW4iIGlkPSJmaWxlX25hbWVfY29sdW1uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhdGFibGU9InllcyI+TmFtZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0X2luZGljYXRvciI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0X2NvbHVtbl9pZCI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0iY2VsbHJlbmRlcmVydGV4dDMiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJhY2tncm91bmRfcmdiYSI+cmdiYSgwLDAsMCwwKTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiPjA8L2F0dHJpYnV0ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3Q29sdW1uIiBpZD0iZmlsZV9zaXplX2NvbHVtbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlNpemU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9pbmRpY2F0b3IiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9jb2x1bW5faWQiPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9ImZpbGVfc2l6ZV9jZWxsIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiPjE8L2F0dHJpYnV0ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+NjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6ZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVzaXplIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hyaW5rIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgIDwvY2hpbGQ+CisgICAgICA8L29iamVjdD4KKyAgICA8L2NoaWxkPgorICA8L29iamVjdD4KKzwvaW50ZXJmYWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUgYi9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZQppbmRleCBiZWE1ZDY5Li40ZTYzZTY5IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZQorKysgYi9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZQpAQCAtMTYsNyArMTYsNyBAQAogICAgIGVjaG8gJ09wZW5FbWJlZGRlZCBydW4tbmF0aXZlIC0gcnVucyBuYXRpdmUgdG9vbHMnCiAgICAgZWNobyAnJwogICAgIGVjaG8gJ2FyZ3VtZW50czonCi0gICAgZWNobyAnICBuYXRpdmUtcmVjaXBlICAgICAgIFRoZSByZWNpcGUgd2hpY2ggcHJvdm9pZGVzIHRvb2wnCisgICAgZWNobyAnICBuYXRpdmUtcmVjaXBlICAgICAgIFRoZSByZWNpcGUgd2hpY2ggcHJvdmlkZXMgdG9vbCcKICAgICBlY2hvICcgIHRvb2wgICAgICAgICAgICAgICAgTmF0aXZlIHRvb2wgdG8gcnVuJwogICAgIGVjaG8gJycKICAgICBleGl0IDIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9kZXNrdG9wX2RhdGFiYXNlIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2Rlc2t0b3BfZGF0YWJhc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwM2I0OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9kZXNrdG9wX2RhdGFiYXNlCkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyMKKyMgUG9zdC1pbnN0YWxsIGludGVyY2VwdCBmb3IgbWltZS14ZGcuYmJjbGFzcworCit1cGRhdGUtZGVza3RvcC1kYXRhYmFzZSAkRCR7ZGVza3RvcF9kaXJ9CisKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUKaW5kZXggMzA1M2M3MC4uNDZiZGI4YyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUKKysrIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUKQEAgLTYsNCArNiw2IEBACiBzZXQgLWUKIAogUFNFVURPX1VOTE9BRD0xICR7YmlucHJlZml4fXFlbXV3cmFwcGVyIC1MICREIC1FICR7Zm9udGNvbmZpZ2NhY2hlZW52fSAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9ZmMtY2FjaGUgLS1zeXNyb290PSREIC0tc3lzdGVtLW9ubHkgJHtmb250Y29uZmlnY2FjaGVwYXJhbXN9CisKIGNob3duIC1SIHJvb3Q6cm9vdCAkRCR7Zm9udGNvbmZpZ2NhY2hlZGlyfQorZmluZCAkRCAtdHlwZSBmIC1uYW1lIC51dWlkIC1leGVjIGNob3duIHJvb3Q6cm9vdCAne30nICsKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9taW1lX2RhdGFiYXNlIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX21pbWVfZGF0YWJhc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyZDFlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9taW1lX2RhdGFiYXNlCkBAIC0wLDAgKzEsOSBAQAorIyEvYmluL3NoCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyMKKyMgUG9zdC1pbnN0YWxsIGludGVyY2VwdCBmb3IgbWltZS5iYmNsYXNzCisKK2VjaG8gIlVwZGF0aW5nIE1JTUUgZGF0YWJhc2UuLi4gdGhpcyBtYXkgdGFrZSBhIHdoaWxlLiIKK3VwZGF0ZS1taW1lLWRhdGFiYXNlICREJHttaW1lZGlyfQorCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfdWRldl9od2RiIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3VkZXZfaHdkYgppbmRleCBjNGZiMmJmLi4xMDJlOTliIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfdWRldl9od2RiCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIKQEAgLTUsNSArNSwxNyBAQAogCiBzZXQgLWUKIAotUFNFVURPX1VOTE9BRD0xICR7YmlucHJlZml4fXFlbXV3cmFwcGVyIC1MICREICREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH11ZGV2YWRtIGh3ZGIgLS11cGRhdGUgLS1yb290ICRECi1jaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK2Nhc2UgIiR7UFJFRkVSUkVEX1BST1ZJREVSX3VkZXZ9IiBpbgorCXN5c3RlbWQpCisJCVVERVZfRVhUUkFfQVJHUz0iLS11c3IiCisJCVVERVZMSUJESVI9IiR7cm9vdGxpYmV4ZWNkaXJ9IgorCQk7OworCisJKikKKwkJVURFVl9FWFRSQV9BUkdTPSIiCisJCVVERVZMSUJESVI9IiR7c3lzY29uZmRpcn0iCisJCTs7Citlc2FjCisKK1BTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9dWRldmFkbSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRCAke1VERVZfRVhUUkFfQVJHU30KK2Nob3duIHJvb3Q6cm9vdCAkRCR7VURFVkxJQkRJUn0vdWRldi9od2RiLmJpbgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL2RyYXcucHkgYi9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvZHJhdy5weQppbmRleCBhZGQ1YzUzLi41MzMyNGI5IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvZHJhdy5weQorKysgYi9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvZHJhdy5weQpAQCAtMzA4LDcgKzMwOCw3IEBACiBwcm9jX2ggPSAxNiAjIHRoZSBoZWlnaHQgb2YgYSBwcm9jZXNzCiBsZWdfcyA9IDEwCiBNSU5fSU1HX1cgPSA4MDAKLUNVTUxfSEVJR0hUID0gMjAwMCAjIEluY3JlYXNlZCB2YWx1ZSB0byBhY2NvbW9kYXRlIENQVSBhbmQgSS9PIEdyYXBocworQ1VNTF9IRUlHSFQgPSAyMDAwICMgSW5jcmVhc2VkIHZhbHVlIHRvIGFjY29tbW9kYXRlIENQVSBhbmQgSS9PIEdyYXBocwogT1BUSU9OUyA9IE5vbmUKIAogZGVmIGV4dGVudHMob3B0aW9ucywgeHNjYWxlLCB0cmFjZSk6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvcGFyc2luZy5weSBiL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9wYXJzaW5nLnB5CmluZGV4IGVmMmQzZDMuLmI0MmRhYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9wYXJzaW5nLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9wYXJzaW5nLnB5CkBAIC0xOCw3ICsxOCw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0YXJmaWxlCi1mcm9tIHRpbWUgaW1wb3J0IGNsb2NrCitpbXBvcnQgdGltZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UKIApAQCAtNzIzLDcgKzcyMyw3IEBACiAKIGRlZiBfZG9fcGFyc2Uod3JpdGVyLCBzdGF0ZSwgZmlsZW5hbWUsIGZpbGUpOgogICAgIHdyaXRlci5pbmZvKCJwYXJzaW5nICclcyciICUgZmlsZW5hbWUpCi0gICAgdDEgPSBjbG9jaygpCisgICAgdDEgPSB0aW1lLnByb2Nlc3NfdGltZSgpCiAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpCiAgICAgaWYgbmFtZSA9PSAicHJvY19kaXNrc3RhdHMubG9nIjoKICAgICAgICAgc3RhdGUuZGlza19zdGF0cyA9IF9wYXJzZV9wcm9jX2Rpc2tfc3RhdF9sb2coZmlsZSkKQEAgLTc0Myw3ICs3NDMsNyBAQAogICAgICAgICBzdGF0ZS5tb25pdG9yX2Rpc2sgPSBfcGFyc2VfbW9uaXRvcl9kaXNrX2xvZyhmaWxlKQogICAgIGVsaWYgbm90IGZpbGVuYW1lLmVuZHN3aXRoKCcubG9nJyk6CiAgICAgICAgIF9wYXJzZV9iaXRiYWtlX2J1aWxkc3RhdHMod3JpdGVyLCBzdGF0ZSwgZmlsZW5hbWUsIGZpbGUpCi0gICAgdDIgPSBjbG9jaygpCisgICAgdDIgPSB0aW1lLnByb2Nlc3NfdGltZSgpCiAgICAgd3JpdGVyLmluZm8oIiAgJXMgc2Vjb25kcyIgJSBzdHIodDItdDEpKQogICAgIHJldHVybiBzdGF0ZQogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcnBtMmNwaW8uc2ggYi9wb2t5L3NjcmlwdHMvcnBtMmNwaW8uc2gKaW5kZXggODc2YzUzYy4uN2NkNzcxYiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3JwbTJjcGlvLnNoCisrKyBiL3Bva3kvc2NyaXB0cy9ycG0yY3Bpby5zaApAQCAtMjIsNyArMjIsOCBAQAogCiAJaT0wCiAJd2hpbGUgWyAkaSAtbHQgOCBdOyBkbwotCQliPSIkKF9kZCAkKCgkb2Zmc2V0ICsgJGkpKSBicz0xIGNvdW50PTEpIgorIAkJYj0kKF9kZCAkKCgkb2Zmc2V0ICsgJGkpKSBicz0xIGNvdW50PTE7IGVjaG8gWCkKKyAJCWI9JHtiJVh9CiAJCVsgLXogIiRiIiBdICYmCiAJCQliPSIwIiB8fAogCQkJYj0iJChleGVjIHByaW50ZiAnJXVcbicgIickYiIpIgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3J1bnFlbXUgYi9wb2t5L3NjcmlwdHMvcnVucWVtdQppbmRleCA1YzU2YzNmLi4zMTBkNzlmIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvcnVucWVtdQorKysgYi9wb2t5L3NjcmlwdHMvcnVucWVtdQpAQCAtMTM1LDYgKzEzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAnREVQTE9ZX0RJUl9JTUFHRScsCiAgICAgICAgICAgICAgICAgICAgICAgICAnT0VfVE1QRElSJywKICAgICAgICAgICAgICAgICAgICAgICAgICdPRUNPUkVfTkFUSVZFX1NZU1JPT1QnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ01VTFRJQ09ORklHJywKICAgICAgICAgICAgICAgICAgICAgICAgICkKIAogICAgICAgICBzZWxmLnFlbXVfb3B0ID0gJycKQEAgLTE2NCw2ICsxNjUsNyBAQAogICAgICAgICBzZWxmLmt2bV9lbmFibGVkID0gRmFsc2UKICAgICAgICAgc2VsZi52aG9zdF9lbmFibGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5zbGlycF9lbmFibGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5uZXRfYnJpZGdlID0gTm9uZQogICAgICAgICBzZWxmLm5mc19pbnN0YW5jZSA9IDAKICAgICAgICAgc2VsZi5uZnNfcnVubmluZyA9IEZhbHNlCiAgICAgICAgIHNlbGYuc2VyaWFsY29uc29sZSA9IEZhbHNlCkBAIC0xODMsNiArMTg1LDggQEAKICAgICAgICAgc2VsZi52bXR5cGVzID0gKCdoZGRpbWcnLCAnaXNvJykKICAgICAgICAgc2VsZi5mc2luZm8gPSB7fQogICAgICAgICBzZWxmLm5ldHdvcmtfZGV2aWNlID0gIi1kZXZpY2UgZTEwMDAsbmV0ZGV2PW5ldDAsbWFjPUBNQUNAIgorICAgICAgICBzZWxmLmNtZGxpbmVfaXBfc2xpcnAgPSAiaXA9ZGhjcCIKKyAgICAgICAgc2VsZi5jbWRsaW5lX2lwX3RhcCA9ICJpcD0xOTIuMTY4LjcuQENMSUVOVEA6OjE5Mi4xNjguNy5AR0FURVdBWUA6MjU1LjI1NS4yNTUuMCIKICAgICAgICAgIyBVc2UgZGlmZmVyZW50IG1hYyBzZWN0aW9uIGZvciB0YXAgYW5kIHNsaXJwIHRvIGF2b2lkCiAgICAgICAgICMgY29uZmxpY3RzLCBlLmcuLCB3aGVuIG9uZSBpcyBydW5uaW5nIHdpdGggdGFwLCB0aGUgb3RoZXIgaXMKICAgICAgICAgIyBydW5uaW5nIHdpdGggc2xpcnAuCkBAIC00MDEsOSArNDA1LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2V0KCJNQUNISU5FIiwgYXJnKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgY21kID0gJ01BQ0hJTkU9JXMgYml0YmFrZSAtZScgJSBhcmcKLSAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMuLi4nICUgY21kKQotICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIHNlbGYuYml0YmFrZV9lID0gc2VsZi5ydW5fYml0YmFrZV9lbnYoYXJnKQogICAgICAgICAjIGJpdGJha2UgLWUgZG9lc24ndCByZXBvcnQgaW52YWxpZCBNQUNISU5FIGFzIGFuIGVycm9yLCBzbwogICAgICAgICAjIGxldCdzIGNoZWNrIERFUExPWV9ESVJfSU1BR0UgdG8gbWFrZSBzdXJlIHRoYXQgaXQgaXMgYSB2YWxpZAogICAgICAgICAjIE1BQ0hJTkUuCkBAIC00ODYsNiArNDg4LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLnZob3N0X2VuYWJsZWQgPSBUcnVlCiAgICAgICAgICAgICBlbGlmIGFyZyA9PSAnc2xpcnAnOgogICAgICAgICAgICAgICAgIHNlbGYuc2xpcnBfZW5hYmxlZCA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgYXJnLnN0YXJ0c3dpdGgoJ2JyaWRnZT0nKToKKyAgICAgICAgICAgICAgICBzZWxmLm5ldF9icmlkZ2UgPSAnJXMnICUgYXJnW2xlbignYnJpZGdlPScpOl0KICAgICAgICAgICAgIGVsaWYgYXJnID09ICdzbmFwc2hvdCc6CiAgICAgICAgICAgICAgICAgc2VsZi5zbmFwc2hvdCA9IFRydWUKICAgICAgICAgICAgIGVsaWYgYXJnID09ICdwdWJsaWN2bmMnOgpAQCAtODAzLDcgKzgwNyw3IEBACiAgICAgZGVmIGNoZWNrX2FuZF9zZXQoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIGNvbmZpZ3Mgc2FuaXR5IGFuZCBzZXQgd2hlbiBuZWVkZWQiIiIKICAgICAgICAgc2VsZi52YWxpZGF0ZV9wYXRocygpCi0gICAgICAgIGlmIG5vdCBzZWxmLnNsaXJwX2VuYWJsZWQ6CisgICAgICAgIGlmIG5vdCBzZWxmLnNsaXJwX2VuYWJsZWQgYW5kIG5vdCBzZWxmLm5ldF9icmlkZ2U6CiAgICAgICAgICAgICBjaGVja190dW4oKQogICAgICAgICAjIENoZWNrIGF1ZGlvCiAgICAgICAgIGlmIHNlbGYuYXVkaW9fZW5hYmxlZDoKQEAgLTkzMywyOSArOTM3LDMwIEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0KCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnLCAnJXMvdXNyL2JpbicgJSBzZWxmLmdldCgnU1RBR0lOR19ESVJfTkFUSVZFJykpCiAKICAgICBkZWYgcHJpbnRfY29uZmlnKHNlbGYpOgotICAgICAgICBsb2dnZXIuaW5mbygnQ29udGludWluZyB3aXRoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczpcbicpCisgICAgICAgIGxvZ291dHB1dCA9IFsnQ29udGludWluZyB3aXRoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczonXQogICAgICAgICBpZiBub3Qgc2VsZi5mc3R5cGUgaW4gc2VsZi52bXR5cGVzOgotICAgICAgICAgICAgcHJpbnQoJ0tFUk5FTDogWyVzXScgJSBzZWxmLmtlcm5lbCkKKyAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ0tFUk5FTDogWyVzXScgJSBzZWxmLmtlcm5lbCkKICAgICAgICAgICAgIGlmIHNlbGYuYmlvczoKLSAgICAgICAgICAgICAgICBwcmludCgnQklPUzogWyVzXScgJSBzZWxmLmJpb3MpCisgICAgICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnQklPUzogWyVzXScgJSBzZWxmLmJpb3MpCiAgICAgICAgICAgICBpZiBzZWxmLmR0YjoKLSAgICAgICAgICAgICAgICBwcmludCgnRFRCOiBbJXNdJyAlIHNlbGYuZHRiKQotICAgICAgICBwcmludCgnTUFDSElORTogWyVzXScgJSBzZWxmLmdldCgnTUFDSElORScpKQorICAgICAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ0RUQjogWyVzXScgJSBzZWxmLmR0YikKKyAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnTUFDSElORTogWyVzXScgJSBzZWxmLmdldCgnTUFDSElORScpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmc3R5cGVfZmxhZ3MgPSAnICgnICsgJywgJy5qb2luKHNlbGYuZnNpbmZvW3NlbGYuZnN0eXBlXSkgKyAnKScKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgZnN0eXBlX2ZsYWdzID0gJycKLSAgICAgICAgcHJpbnQoJ0ZTVFlQRTogWyVzJXNdJyAlIChzZWxmLmZzdHlwZSwgZnN0eXBlX2ZsYWdzKSkKKyAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnRlNUWVBFOiBbJXMlc10nICUgKHNlbGYuZnN0eXBlLCBmc3R5cGVfZmxhZ3MpKQogICAgICAgICBpZiBzZWxmLmZzdHlwZSAgPT0gJ25mcyc6Ci0gICAgICAgICAgICBwcmludCgnTkZTX0RJUjogWyVzXScgJSBzZWxmLnJvb3RmcykKKyAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ05GU19ESVI6IFslc10nICUgc2VsZi5yb290ZnMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgnUk9PVEZTOiBbJXNdJyAlIHNlbGYucm9vdGZzKQorICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnUk9PVEZTOiBbJXNdJyAlIHNlbGYucm9vdGZzKQogICAgICAgICBpZiBzZWxmLm92bWZfYmlvczoKLSAgICAgICAgICAgIHByaW50KCdPVk1GOiAlcycgJSBzZWxmLm92bWZfYmlvcykKKyAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ09WTUY6ICVzJyAlIHNlbGYub3ZtZl9iaW9zKQogICAgICAgICBpZiAoc2VsZi5vdm1mX3NlY2Jvb3RfcGtrZWsxKToKLSAgICAgICAgICAgIHByaW50KCdTRUNCT09UIFBLS0VLMTogWyVzLi4uXScgJSBzZWxmLm92bWZfc2VjYm9vdF9wa2tlazFbMDoxMDBdKQotICAgICAgICBwcmludCgnQ09ORkZJTEU6IFslc10nICUgc2VsZi5xZW11Ym9vdCkKLSAgICAgICAgcHJpbnQoJycpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdTRUNCT09UIFBLS0VLMTogWyVzLi4uXScgJSBzZWxmLm92bWZfc2VjYm9vdF9wa2tlazFbMDoxMDBdKQorICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdDT05GRklMRTogWyVzXScgJSBzZWxmLnFlbXVib290KQorICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCcnKQorICAgICAgICBsb2dnZXIuaW5mbygnXG4nLmpvaW4obG9nb3V0cHV0KSkKIAogICAgIGRlZiBzZXR1cF9uZnMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLm5mc19zZXJ2ZXI6CkBAIC05ODUsNyArOTkwLDcgQEAKICAgICAgICAgICAgICMgVXNlICclcycgc2luY2UgdGhleSBhcmUgaW50ZWdlcnMKICAgICAgICAgICAgIG9zLnB1dGVudihrLCAnJXMnICUgdikKIAotICAgICAgICBzZWxmLnVuZnNfb3B0cz0ibmZzdmVycz0zLHBvcnQ9JXMsdWRwLG1vdW50cG9ydD0lcyIgJSAobmZzZF9wb3J0LCBtb3VudGRfcG9ydCkKKyAgICAgICAgc2VsZi51bmZzX29wdHM9Im5mc3ZlcnM9Myxwb3J0PSVzLHRjcCxtb3VudHBvcnQ9JXMiICUgKG5mc2RfcG9ydCwgbW91bnRkX3BvcnQpCiAKICAgICAgICAgIyBFeHRyYWN0IC50YXIuYnoyIG9yIC50YXIuYnogaWYgbm8gbmZzIGRpcgogICAgICAgICBpZiBub3QgKHNlbGYucm9vdGZzIGFuZCBvcy5wYXRoLmlzZGlyKHNlbGYucm9vdGZzKSk6CkBAIC0xMDIwLDEyICsxMDI1LDE4IEBACiAKICAgICAgICAgc2VsZi5uZnNfcnVubmluZyA9IFRydWUKIAorICAgIGRlZiBzZXR1cF9uZXRfYnJpZGdlKHNlbGYpOgorICAgICAgICBzZWxmLnNldCgnTkVUV09SS19DTUQnLCAnLW5ldGRldiBicmlkZ2UsYnI9JXMsaWQ9bmV0MCxoZWxwZXI9JXMgLWRldmljZSB2aXJ0aW8tbmV0LXBjaSxuZXRkZXY9bmV0MCAnICUgKAorICAgICAgICAgICAgc2VsZi5uZXRfYnJpZGdlLCBvcy5wYXRoLmpvaW4oc2VsZi5iaW5kaXJfbmF0aXZlLCAncWVtdS1vZS1icmlkZ2UtaGVscGVyJykpKQorCiAgICAgZGVmIHNldHVwX3NsaXJwKHNlbGYpOgogICAgICAgICAiIiJTZXR1cCB1c2VyIG5ldHdvcmtpbmciIiIKIAogICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnbmZzJzoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfbmZzKCkKLSAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZV9zY3JpcHQgKz0gJyBpcD1kaGNwJworICAgICAgICBuZXRjb25mID0gIiAiICsgc2VsZi5jbWRsaW5lX2lwX3NsaXJwCisgICAgICAgIGxvZ2dlci5pbmZvKCJOZXR3b3JrIGNvbmZpZ3VyYXRpb246JXMiLCBuZXRjb25mKQorICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lX3NjcmlwdCArPSBuZXRjb25mCiAgICAgICAgICMgUG9ydCBtYXBwaW5nCiAgICAgICAgIGhvc3Rmd2QgPSAiLGhvc3Rmd2Q9dGNwOjoyMjIyLToyMixob3N0ZndkPXRjcDo6MjMyMy06MjMiCiAgICAgICAgIHFiX3NsaXJwX29wdF9kZWZhdWx0ID0gIi1uZXRkZXYgdXNlcixpZD1uZXQwJXMsdGZ0cD0lcyIgJSAoaG9zdGZ3ZCwgc2VsZi5nZXQoJ0RFUExPWV9ESVJfSU1BR0UnKSkKQEAgLTExMjAsNyArMTEzMSwxMSBAQAogICAgICAgICAgICAgdWlkID0gb3MuZ2V0dWlkKCkKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXR0aW5nIHVwIHRhcCBpbnRlcmZhY2UgdW5kZXIgc3VkbyIpCiAgICAgICAgICAgICBjbWQgPSAoJ3N1ZG8nLCBzZWxmLnFlbXVpZnVwLCBzdHIodWlkKSwgc3RyKGdpZCksIHNlbGYuYmluZGlyX25hdGl2ZSkKLSAgICAgICAgICAgIHRhcCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkuZGVjb2RlKCd1dGYtOCcpLnN0cmlwKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0YXAgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpLmRlY29kZSgndXRmLTgnKS5zdHJpcCgpCisgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ1NldHRpbmcgdXAgdGFwIGRldmljZSBmYWlsZWQ6XG4lc1xuUnVuIHJ1bnFlbXUtZ2VuLXRhcGRldnMgdG8gbWFudWFsbHkgY3JlYXRlIG9uZS4nICUgc3RyKGUpKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgICAgICBsb2NrZmlsZSA9IG9zLnBhdGguam9pbihsb2NrZGlyLCB0YXApCiAgICAgICAgICAgICBzZWxmLnRhcGxvY2sgPSBsb2NrZmlsZSArICcubG9jaycKICAgICAgICAgICAgIHNlbGYuYWNxdWlyZV90YXBsb2NrKCkKQEAgLTExMjksMTYgKzExNDQsMTggQEAKIAogICAgICAgICBpZiBub3QgdGFwOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gc2V0dXAgdGFwIGRldmljZS4gUnVuIHJ1bnFlbXUtZ2VuLXRhcGRldnMgdG8gbWFudWFsbHkgY3JlYXRlLiIpCi0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKICAgICAgICAgc2VsZi50YXAgPSB0YXAKICAgICAgICAgdGFwbnVtID0gaW50KHRhcFszOl0pCiAgICAgICAgIGdhdGV3YXkgPSB0YXBudW0gKiAyICsgMQogICAgICAgICBjbGllbnQgPSBnYXRld2F5ICsgMQogICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnbmZzJzoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfbmZzKCkKLSAgICAgICAgbmV0Y29uZiA9ICIxOTIuMTY4LjcuJXM6OjE5Mi4xNjguNy4lczoyNTUuMjU1LjI1NS4wIiAlIChjbGllbnQsIGdhdGV3YXkpCi0gICAgICAgIGxvZ2dlci5pbmZvKCJOZXR3b3JrIGNvbmZpZ3VyYXRpb246ICVzIiwgbmV0Y29uZikKLSAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZV9zY3JpcHQgKz0gIiBpcD0lcyIgJSBuZXRjb25mCisgICAgICAgIG5ldGNvbmYgPSAiICIgKyBzZWxmLmNtZGxpbmVfaXBfdGFwCisgICAgICAgIG5ldGNvbmYgPSBuZXRjb25mLnJlcGxhY2UoJ0BDTElFTlRAJywgc3RyKGNsaWVudCkpCisgICAgICAgIG5ldGNvbmYgPSBuZXRjb25mLnJlcGxhY2UoJ0BHQVRFV0FZQCcsIHN0cihnYXRld2F5KSkKKyAgICAgICAgbG9nZ2VyLmluZm8oIk5ldHdvcmsgY29uZmlndXJhdGlvbjolcyIsIG5ldGNvbmYpCisgICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9IG5ldGNvbmYKICAgICAgICAgbWFjID0gIiVzJTAyeCIgJSAoc2VsZi5tYWNfdGFwLCBjbGllbnQpCiAgICAgICAgIHFiX3RhcF9vcHQgPSBzZWxmLmdldCgnUUJfVEFQX09QVCcpCiAgICAgICAgIGlmIHFiX3RhcF9vcHQ6CkBAIC0xMTU3LDkgKzExNzQsMTMgQEAKICAgICAgICAgaWYgc3lzLnN0ZGluLmlzYXR0eSgpOgogICAgICAgICAgICAgc2VsZi5zYXZlZF9zdHR5ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKCJzdHR5IiwgIi1nIikpLmRlY29kZSgndXRmLTgnKS5zdHJpcCgpCiAgICAgICAgIHNlbGYubmV0d29ya19kZXZpY2UgPSBzZWxmLmdldCgnUUJfTkVUV09SS19ERVZJQ0UnKSBvciBzZWxmLm5ldHdvcmtfZGV2aWNlCi0gICAgICAgIGlmIHNlbGYuc2xpcnBfZW5hYmxlZDoKKyAgICAgICAgaWYgc2VsZi5uZXRfYnJpZGdlOgorICAgICAgICAgICAgc2VsZi5zZXR1cF9uZXRfYnJpZGdlKCkKKyAgICAgICAgZWxpZiBzZWxmLnNsaXJwX2VuYWJsZWQ6CisgICAgICAgICAgICBzZWxmLmNtZGxpbmVfaXBfc2xpcnAgPSBzZWxmLmdldCgnUUJfQ01ETElORV9JUF9TTElSUCcpIG9yIHNlbGYuY21kbGluZV9pcF9zbGlycAogICAgICAgICAgICAgc2VsZi5zZXR1cF9zbGlycCgpCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNtZGxpbmVfaXBfdGFwID0gc2VsZi5nZXQoJ1FCX0NNRExJTkVfSVBfVEFQJykgb3Igc2VsZi5jbWRsaW5lX2lwX3RhcAogICAgICAgICAgICAgc2VsZi5zZXR1cF90YXAoKQogCiAgICAgZGVmIHNldHVwX3Jvb3RmcyhzZWxmKToKQEAgLTExNzUsNiArMTE5NiwxMCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5yb290ZnNfb3B0aW9ucyA9ICctZHJpdmUgZmlsZT0lcyxpZj12aXJ0aW8sZm9ybWF0PSVzJyAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKIAorICAgICAgICBxYl9yb290ZnNfZXh0cmFfb3B0ID0gc2VsZi5nZXQoIlFCX1JPT1RGU19FWFRSQV9PUFQiKQorICAgICAgICBpZiBxYl9yb290ZnNfZXh0cmFfb3B0IGFuZCBub3QgcWJfcm9vdGZzX2V4dHJhX29wdC5zdGFydHN3aXRoKCIsIik6CisgICAgICAgICAgICBxYl9yb290ZnNfZXh0cmFfb3B0ID0gIiwiICsgcWJfcm9vdGZzX2V4dHJhX29wdAorCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlIGluICgnY3Bpby5neicsICdjcGlvJyk6CiAgICAgICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lID0gJ3Jvb3Q9L2Rldi9yYW0wIHJ3IGRlYnVnc2hlbGwnCiAgICAgICAgICAgICBzZWxmLnJvb3Rmc19vcHRpb25zID0gJy1pbml0cmQgJXMnICUgc2VsZi5yb290ZnMKQEAgLTExODcsMTEgKzEyMTIsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgZHJpdmVfdHlwZSA9IHNlbGYuZ2V0KCdRQl9EUklWRV9UWVBFJykKICAgICAgICAgICAgICAgICAgICAgaWYgZHJpdmVfdHlwZS5zdGFydHN3aXRoKCIvZGV2L3NkIik6CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXNpbmcgc2NzaSBkcml2ZScpCi0gICAgICAgICAgICAgICAgICAgICAgICB2bV9kcml2ZSA9ICctZHJpdmUgaWY9bm9uZSxpZD1oZCxmaWxlPSVzLGZvcm1hdD0lcyAtZGV2aWNlIHZpcnRpby1zY3NpLXBjaSxpZD1zY3NpIC1kZXZpY2Ugc2NzaS1oZCxkcml2ZT1oZCcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgICAgICB2bV9kcml2ZSA9ICctZHJpdmUgaWY9bm9uZSxpZD1oZCxmaWxlPSVzLGZvcm1hdD0lcyAtZGV2aWNlIHZpcnRpby1zY3NpLXBjaSxpZD1zY3NpIC1kZXZpY2Ugc2NzaS1oZCxkcml2ZT1oZCVzJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCwgcWJfcm9vdGZzX2V4dHJhX29wdCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBkcml2ZV90eXBlLnN0YXJ0c3dpdGgoIi9kZXYvaGQiKToKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBpZGUgZHJpdmUnKQogICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAiLWRyaXZlIGZpbGU9JXMsZm9ybWF0PSVzIiAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBkcml2ZV90eXBlLnN0YXJ0c3dpdGgoIi9kZXYvdmRiIik6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXNpbmcgYmxvY2sgdmlydGlvIGRyaXZlJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB2bV9kcml2ZSA9ICctZHJpdmUgaWQ9ZGlzazAsZmlsZT0lcyxpZj1ub25lLGZvcm1hdD0lcyAtZGV2aWNlIHZpcnRpby1ibGstZGV2aWNlLGRyaXZlPWRpc2swJXMnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYucm9vdGZzLCByb290ZnNfZm9ybWF0LHFiX3Jvb3Rmc19leHRyYV9vcHQpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIHZpcnRpbyBtaWdodCBoYXZlIGJlZW4gc2VsZWN0ZWQgZXhwbGljaXRseSAoanVzdCB1c2UgaXQpLCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyB1c2VkIGFzIGZhbGxiYWNrICh0aGVuIHdhcm4gYWJvdXQgdGhhdCkuCkBAIC0xNDA1LDEwICsxNDM0LDcgQEAKIAogICAgICAgICBzZWxmLmNsZWFuZWQgPSBUcnVlCiAKLSAgICBkZWYgbG9hZF9iaXRiYWtlX2VudihzZWxmLCBtYWNoPU5vbmUpOgotICAgICAgICBpZiBzZWxmLmJpdGJha2VfZToKLSAgICAgICAgICAgIHJldHVybgotCisgICAgZGVmIHJ1bl9iaXRiYWtlX2VudihzZWxmLCBtYWNoPU5vbmUpOgogICAgICAgICBiaXRiYWtlID0gc2h1dGlsLndoaWNoKCdiaXRiYWtlJykKICAgICAgICAgaWYgbm90IGJpdGJha2U6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTE0MTYsMTQgKzE0NDIsMjQgQEAKICAgICAgICAgaWYgbm90IG1hY2g6CiAgICAgICAgICAgICBtYWNoID0gc2VsZi5nZXQoJ01BQ0hJTkUnKQogCisgICAgICAgIG11bHRpY29uZmlnID0gc2VsZi5nZXQoJ01VTFRJQ09ORklHJykKKyAgICAgICAgaWYgbXVsdGljb25maWc6CisgICAgICAgICAgICBtdWx0aWNvbmZpZyA9ICJtYzolcyIgJSBtdWx0aWNvbmZpZworCiAgICAgICAgIGlmIG1hY2g6Ci0gICAgICAgICAgICBjbWQgPSAnTUFDSElORT0lcyBiaXRiYWtlIC1lJyAlIG1hY2gKKyAgICAgICAgICAgIGNtZCA9ICdNQUNISU5FPSVzIGJpdGJha2UgLWUgJXMnICUgKG1hY2gsIG11bHRpY29uZmlnKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY21kID0gJ2JpdGJha2UgLWUnCisgICAgICAgICAgICBjbWQgPSAnYml0YmFrZSAtZSAlcycgJSBtdWx0aWNvbmZpZwogCiAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCd1dGYtOCcpCisKKyAgICBkZWYgbG9hZF9iaXRiYWtlX2VudihzZWxmLCBtYWNoPU5vbmUpOgorICAgICAgICBpZiBzZWxmLmJpdGJha2VfZToKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYml0YmFrZV9lID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIHNlbGYuYml0YmFrZV9lID0gc2VsZi5ydW5fYml0YmFrZV9lbnYobWFjaD1tYWNoKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSAnJwogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkNvdWxkbid0IHJ1biAnYml0YmFrZSAtZScgdG8gZ2F0aGVyIGVudmlyb25tZW50IGluZm9ybWF0aW9uOlxuJXMiICUgZXJyLm91dHB1dC5kZWNvZGUoJ3V0Zi04JykpCkBAIC0xNDM4LDcgKzE0NzQsMTMgQEAKICAgICAgICAgaWYgcmVzdWx0IGFuZCBvcy5wYXRoLmV4aXN0cyhyZXN1bHQpOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgIGNtZCA9ICgnYml0YmFrZScsICdxZW11LWhlbHBlci1uYXRpdmUnLCAnLWUnKQorICAgICAgICBjbWQgPSBbJ2JpdGJha2UnLCAnLWUnXQorICAgICAgICBtdWx0aWNvbmZpZyA9IHNlbGYuZ2V0KCdNVUxUSUNPTkZJRycpCisgICAgICAgIGlmIG11bHRpY29uZmlnOgorICAgICAgICAgICAgY21kLmFwcGVuZCgnbWM6JXM6cWVtdS1oZWxwZXItbmF0aXZlJyAlIG11bHRpY29uZmlnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY21kLmFwcGVuZCgncWVtdS1oZWxwZXItbmF0aXZlJykKKwogICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBzdHIoY21kKSkKICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKS5kZWNvZGUoJ3V0Zi04JykKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsgYi9wb2t5L3NjcmlwdHMvcnVucWVtdS1leHRyYWN0LXNkawppbmRleCA4YTRlZTkwLi45YmMwYzA3IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvcnVucWVtdS1leHRyYWN0LXNkaworKysgYi9wb2t5L3NjcmlwdHMvcnVucWVtdS1leHRyYWN0LXNkawpAQCAtNjksNyArNjksNyBAQAogcHNldWRvX3N0YXRlX2Rpcj0iJFNES19ST09URlNfRElSLy4uLyQoYmFzZW5hbWUgIiRTREtfUk9PVEZTX0RJUiIpLnBzZXVkb19zdGF0ZSIKIHBzZXVkb19zdGF0ZV9kaXI9IiQocmVhZGxpbmsgLWYgJHBzZXVkb19zdGF0ZV9kaXIpIgogCi1kZWJ1Z19pbWFnZT0iYGVjaG8gJFJPT1RGU19UQVJCQUxMIHwgZ3JlcCAnXC1kYmdcLnRhclwuJ2AiCitkZWJ1Z19pbWFnZT0iYGVjaG8gJFJPT1RGU19UQVJCQUxMIHwgZ3JlcCAnXC1kYmdcLnJvb3Rmc1wudGFyJ2AiCiAKIGlmIFsgLWUgIiRwc2V1ZG9fc3RhdGVfZGlyIiAtYSAteiAiJGRlYnVnX2ltYWdlIiBdOyB0aGVuCiAJZWNobyAiRXJyb3I6ICRwc2V1ZG9fc3RhdGVfZGlyIGFscmVhZHkgZXhpc3RzISIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy90aW55L2tzaXplLnB5IGIvcG9reS9zY3JpcHRzL3Rpbnkva3NpemUucHkKaW5kZXggYmMxMTkxOS4uODMxNmI4NSAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3Rpbnkva3NpemUucHkKKysrIGIvcG9reS9zY3JpcHRzL3Rpbnkva3NpemUucHkKQEAgLTI3LDcgKzI3LDcgQEAKIGNsYXNzIFNpemVzOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnbG9iKToKICAgICAgICAgc2VsZi50aXRsZSA9IGdsb2IKLSAgICAgICAgcCA9IFBvcGVuKCJzaXplIC10ICIgKyBzdHIoZ2xvYiksIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKKyAgICAgICAgcCA9IFBvcGVuKCJzaXplIC10ICIgKyBzdHIoZ2xvYiksIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCiAgICAgICAgIG91dHB1dCA9IHAuY29tbXVuaWNhdGUoKVswXS5zcGxpdGxpbmVzKCkKICAgICAgICAgaWYgbGVuKG91dHB1dCkgPiAyOgogICAgICAgICAgICAgc2l6ZXMgPSBvdXRwdXRbLTFdLnNwbGl0KClbMDo0XQpAQCAtNDksMTQgKzQ5LDE0IEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCiAKICAgICAgICAgcCA9IFBvcGVuKCJscyAiICsgc3RyKHBhdGgpICsgIi8qLm8gfCBncmVwIC12IGJ1aWx0LWluLm8iLAotICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFKQorICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgICAgICAgZ2xvYiA9ICcgJy5qb2luKHAuY29tbXVuaWNhdGUoKVswXS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIG9yZXBvcnQgPSBSZXBvcnQoZ2xvYiwgc3RyKHBhdGgpICsgIi8qLm8iKQogICAgICAgICBvcmVwb3J0LnNpemVzLnRpdGxlID0gc3RyKHBhdGgpICsgIi8qLm8iCiAgICAgICAgIHIucGFydHMuYXBwZW5kKG9yZXBvcnQpCiAKICAgICAgICAgaWYgc3ViZ2xvYjoKLSAgICAgICAgICAgIHAgPSBQb3BlbigibHMgIiArIHN1Ymdsb2IsIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKKyAgICAgICAgICAgIHAgPSBQb3BlbigibHMgIiArIHN1Ymdsb2IsIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCiAgICAgICAgICAgICBmb3IgZiBpbiBwLmNvbW11bmljYXRlKClbMF0uc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmRpcm5hbWUoZikKICAgICAgICAgICAgICAgICByLnBhcnRzLmFwcGVuZChSZXBvcnQuY3JlYXRlKGYsIHBhdGgsIHN0cihwYXRoKSArICIvKi9idWlsdC1pbi5vIikpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvd2ljIGIvcG9reS9zY3JpcHRzL3dpYwppbmRleCBlYTYxNDEwLi4yNDcwMGYzIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvd2ljCisrKyBiL3Bva3kvc2NyaXB0cy93aWMKQEAgLTM5Miw5ICszOTIsOSBAQAogCiBkZWYgd2ljX2luaXRfcGFyc2VyX2NwKHN1YnBhcnNlcik6CiAgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgic3JjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InNvdXJjZSBzcGVjIikKLSAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJkZXN0IiwgdHlwZT1pbWdwYXRodHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImltYWdlIHNwZWM6IDxpbWFnZT46PHZmYXQgcGFydGl0aW9uPls8cGF0aD5dIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImltYWdlIHNwZWM6IDxpbWFnZT46PHZmYXQgcGFydGl0aW9uPls8cGF0aD5dIG9yIDxmaWxlPiIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiZGVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJpbWFnZSBzcGVjOiA8aW1hZ2U+Ojx2ZmF0IHBhcnRpdGlvbj5bPHBhdGg+XSBvciA8ZmlsZT4iKQogICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1uIiwgIi0tbmF0aXZlLXN5c3Jvb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0icGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QgY29udGFpbmluZyB0aGUgdG9vbHMiKQogCkBAIC01MjIsNiArNTIyLDE2IEBACiAgICAgICAgICAgICAgICAgaGxwdFswXShobHB0WzFdLCBobHB0WzJdKQogICAgICAgICAgICAgcmV0dXJuIDAKIAorICAgICMgdmFsaWRhdGUgd2ljIGNwIHNyYyBhbmQgZGVzdCBwYXJhbWV0ZXIgdG8gaWRlbnRpZnkgd2hpY2ggb25lIG9mIGl0IGlzCisgICAgIyBpbWFnZSBhbmQgY2FzdCBpdCBpbnRvIGltZ3R5cGUKKyAgICBpZiBhcmdzLmNvbW1hbmQgPT0gImNwIjoKKyAgICAgICAgaWYgIjoiIGluIGFyZ3MuZGVzdDoKKyAgICAgICAgICAgIGFyZ3MuZGVzdCA9IGltZ3R5cGUoYXJncy5kZXN0KQorICAgICAgICBlbGlmICI6IiBpbiBhcmdzLnNyYzoKKyAgICAgICAgICAgIGFyZ3Muc3JjID0gaW1ndHlwZShhcmdzLnNyYykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCJubyBpbWFnZSBvciBwYXJ0aXRpb24gbnVtYmVyIHNwZWNpZmllZC4iKQorCiAgICAgcmV0dXJuIGhscC5pbnZva2Vfc3ViY29tbWFuZChhcmdzLCBwYXJzZXIsIGhscC53aWNfaGVscF91c2FnZSwgc3ViY29tbWFuZHMpCiAKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyIGIvcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCmluZGV4IDAxMDgzMGYuLmNhNmM3OWIgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllcgorKysgYi9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKQEAgLTg0LDcgKzg0LDcgQEAKICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuRVJST1IpCiAKICAgICBpZiBub3QgJ0JVSUxERElSJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICBsb2dnZXIuZXJyb3IoIllvdSBtdXN0IHNvdXJjZSB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIHJ1biB0aGlzIHNjcmlwdC4iKQorICAgICAgICBsb2dnZXIuZXJyb3IoIllvdSBtdXN0IHNvdXJjZSB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQuIikKICAgICAgICAgbG9nZ2VyLmVycm9yKCIkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiIpCiAgICAgICAgIHJldHVybiAxCiAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCkBAIC05Miw3ICs5Miw3IEBACiAKICAgICBsYXllcnMgPSBkZXRlY3RfbGF5ZXJzKGFyZ3MubGF5ZXJzLCBhcmdzLm5vX2F1dG8pCiAgICAgaWYgbm90IGxheWVyczoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsIHRvIGRldGVjdCBsYXllcnMiKQorICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBkZXRlY3QgbGF5ZXJzIikKICAgICAgICAgcmV0dXJuIDEKICAgICBpZiBhcmdzLmFkZGl0aW9uYWxfbGF5ZXJzOgogICAgICAgICBhZGRpdGlvbmFsX2xheWVycyA9IGRldGVjdF9sYXllcnMoYXJncy5hZGRpdGlvbmFsX2xheWVycywgYXJncy5ub19hdXRvKQpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgZm9yIGxheWVyIGluIGxheWVyczoKICAgICAgICAgaWYgbGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuRVJST1JfQlNQX0RJU1RSTzoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IENhbid0IGJlIERJU1RSTyBhbmQgQlNQIHR5cGUgYXQgdGhlIHNhbWUgdGltZS4iXAotICAgICAgICAgICAgICAgICAgICAgIiBUaGUgY29uZi9kaXN0cm8gYW5kIGNvbmYvbWFjaGluZSBmb2xkZXJzIHdhcyBmb3VuZC4iXAorICAgICAgICAgICAgICAgICAgICAgIiBCb3RoIGNvbmYvZGlzdHJvIGFuZCBjb25mL21hY2hpbmUgZm9sZGVycyB3ZXJlIGZvdW5kLiJcCiAgICAgICAgICAgICAgICAgICAgICAlIGxheWVyWyduYW1lJ10pCiAgICAgICAgICAgICBsYXllcnMucmVtb3ZlKGxheWVyKQogICAgICAgICBlbGlmIGxheWVyWyd0eXBlJ10gPT0gTGF5ZXJUeXBlLkVSUk9SX05PX0xBWUVSX0NPTkY6Cg==